silvery 0.3.0 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +41 -145
- package/dist/chalk.js +3 -0
- package/dist/chalk.js.map +11 -0
- package/dist/index.js +340 -0
- package/dist/index.js.map +282 -0
- package/dist/ink.js +129 -0
- package/dist/ink.js.map +140 -0
- package/dist/runtime.js +394 -0
- package/dist/runtime.js.map +286 -0
- package/dist/theme.js +343 -0
- package/dist/theme.js.map +286 -0
- package/dist/ui/animation.js +3 -0
- package/dist/ui/animation.js.map +15 -0
- package/dist/ui/ansi.js +3 -0
- package/dist/ui/ansi.js.map +10 -0
- package/dist/ui/cli.js +8 -0
- package/dist/ui/cli.js.map +14 -0
- package/dist/ui/display.js +4 -0
- package/dist/ui/display.js.map +10 -0
- package/dist/ui/image.js +4 -0
- package/dist/ui/image.js.map +15 -0
- package/dist/ui/input.js +3 -0
- package/dist/ui/input.js.map +11 -0
- package/dist/ui/progress.js +8 -0
- package/dist/ui/progress.js.map +20 -0
- package/dist/ui/react.js +3 -0
- package/dist/ui/react.js.map +15 -0
- package/dist/ui/utils.js +3 -0
- package/dist/ui/utils.js.map +10 -0
- package/dist/ui/wrappers.js +14 -0
- package/dist/ui/wrappers.js.map +19 -0
- package/dist/ui.js +17 -0
- package/dist/ui.js.map +20 -0
- package/package.json +67 -15
- package/src/index.ts +67 -1
- package/src/runtime.ts +4 -0
- package/src/theme.ts +4 -0
- package/src/ui/animation.ts +2 -0
- package/src/ui/ansi.ts +2 -0
- package/src/ui/cli.ts +2 -0
- package/src/ui/display.ts +2 -0
- package/src/ui/image.ts +2 -0
- package/src/ui/input.ts +2 -0
- package/src/ui/progress.ts +2 -0
- package/src/ui/react.ts +2 -0
- package/src/ui/utils.ts +2 -0
- package/src/ui/wrappers.ts +2 -0
- package/src/ui.ts +4 -0
- package/examples/CLAUDE.md +0 -75
- package/examples/_banner.tsx +0 -60
- package/examples/cli.ts +0 -228
- package/examples/index.md +0 -101
- package/examples/inline/inline-nontty.tsx +0 -98
- package/examples/inline/inline-progress.tsx +0 -79
- package/examples/inline/inline-simple.tsx +0 -63
- package/examples/inline/scrollback.tsx +0 -185
- package/examples/interactive/_input-debug.tsx +0 -110
- package/examples/interactive/_stdin-test.ts +0 -71
- package/examples/interactive/_textarea-bare.tsx +0 -45
- package/examples/interactive/aichat/components.tsx +0 -468
- package/examples/interactive/aichat/index.tsx +0 -207
- package/examples/interactive/aichat/script.ts +0 -460
- package/examples/interactive/aichat/state.ts +0 -326
- package/examples/interactive/aichat/types.ts +0 -19
- package/examples/interactive/app-todo.tsx +0 -198
- package/examples/interactive/async-data.tsx +0 -208
- package/examples/interactive/cli-wizard.tsx +0 -332
- package/examples/interactive/clipboard.tsx +0 -183
- package/examples/interactive/components.tsx +0 -463
- package/examples/interactive/data-explorer.tsx +0 -506
- package/examples/interactive/dev-tools.tsx +0 -379
- package/examples/interactive/explorer.tsx +0 -747
- package/examples/interactive/gallery.tsx +0 -652
- package/examples/interactive/inline-bench.tsx +0 -136
- package/examples/interactive/kanban.tsx +0 -267
- package/examples/interactive/layout-ref.tsx +0 -185
- package/examples/interactive/outline.tsx +0 -171
- package/examples/interactive/paste-demo.tsx +0 -198
- package/examples/interactive/scroll.tsx +0 -77
- package/examples/interactive/search-filter.tsx +0 -240
- package/examples/interactive/task-list.tsx +0 -279
- package/examples/interactive/terminal.tsx +0 -798
- package/examples/interactive/textarea.tsx +0 -103
- package/examples/interactive/theme.tsx +0 -336
- package/examples/interactive/transform.tsx +0 -256
- package/examples/interactive/virtual-10k.tsx +0 -413
- package/examples/kitty/canvas.tsx +0 -519
- package/examples/kitty/generate-samples.ts +0 -236
- package/examples/kitty/image-component.tsx +0 -273
- package/examples/kitty/images.tsx +0 -604
- package/examples/kitty/input.tsx +0 -371
- package/examples/kitty/keys.tsx +0 -378
- package/examples/kitty/paint.tsx +0 -1017
- package/examples/layout/dashboard.tsx +0 -551
- package/examples/layout/live-resize.tsx +0 -290
- package/examples/layout/overflow.tsx +0 -51
- package/examples/playground/README.md +0 -69
- package/examples/playground/build.ts +0 -61
- package/examples/playground/index.html +0 -420
- package/examples/playground/playground-app.tsx +0 -416
- package/examples/runtime/elm-counter.tsx +0 -206
- package/examples/runtime/hello-runtime.tsx +0 -73
- package/examples/runtime/pipe-composition.tsx +0 -184
- package/examples/runtime/run-counter.tsx +0 -78
- package/examples/runtime/runtime-counter.tsx +0 -197
- package/examples/screenshots/generate.tsx +0 -563
- package/examples/scrollback-perf.tsx +0 -230
- package/examples/viewer.tsx +0 -654
- package/examples/web/build.ts +0 -365
- package/examples/web/canvas-app.tsx +0 -80
- package/examples/web/canvas.html +0 -89
- package/examples/web/dom-app.tsx +0 -81
- package/examples/web/dom.html +0 -113
- package/examples/web/showcase-app.tsx +0 -107
- package/examples/web/showcase.html +0 -34
- package/examples/web/showcases/index.tsx +0 -56
- package/examples/web/viewer-app.tsx +0 -555
- package/examples/web/viewer.html +0 -30
- package/examples/web/xterm-app.tsx +0 -105
- package/examples/web/xterm.html +0 -118
package/dist/ink.js
ADDED
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import{createRequire}from"node:module";var __defProp=Object.defineProperty;var __returnValue=(v)=>v;function __exportSetter(name,newValue){this[name]=__returnValue.bind(null,newValue)}var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0,configurable:!0,set:__exportSetter.bind(all,name)})};var __esm=(fn,res)=>()=>(fn&&(res=fn(fn=0)),res);var __require=createRequire(import.meta.url),__dispose=Symbol.dispose||Symbol.for("Symbol.dispose"),__asyncDispose=Symbol.asyncDispose||Symbol.for("Symbol.asyncDispose"),__using=(stack,value,async)=>{if(value!=null){if(typeof value!=="object"&&typeof value!=="function")throw TypeError('Object expected to be assigned to "using" declaration');var dispose;if(async)dispose=value[__asyncDispose];if(dispose===void 0)dispose=value[__dispose];if(typeof dispose!=="function")throw TypeError("Object not disposable");stack.push([async,dispose,value])}else if(async)stack.push([async]);return value},__callDispose=(stack,error,hasError)=>{var E=typeof SuppressedError==="function"?SuppressedError:function(e,s,m,_){return _=Error(m),_.name="SuppressedError",_.error=e,_.suppressed=s,_},fail=(e)=>error=hasError?new E(e,error,"An error was suppressed during disposal"):(hasError=!0,e),next=(it)=>{while(it=stack.pop())try{var result=it[1]&&it[1].call(it[2]);if(it[0])return Promise.resolve(result).then(next,(e)=>(fail(e),next()))}catch(e){fail(e)}if(hasError)throw error};return next()};import{spawnSync}from"child_process";function detectCursor(stdout){if(!stdout.isTTY)return!1;if(process.env.TERM==="dumb")return!1;return!0}function detectInput(stdin){if(!stdin.isTTY)return!1;return typeof stdin.setRawMode==="function"}function detectColor(stdout){if(process.env.NO_COLOR!==void 0)return null;let forceColor=process.env.FORCE_COLOR;if(forceColor!==void 0){if(forceColor==="0"||forceColor==="false")return null;if(forceColor==="1")return"basic";if(forceColor==="2")return"256";if(forceColor==="3")return"truecolor";return"basic"}if(!stdout.isTTY)return null;if(process.env.TERM==="dumb")return null;let colorTerm=process.env.COLORTERM;if(colorTerm==="truecolor"||colorTerm==="24bit")return"truecolor";let term=process.env.TERM??"";if(term.includes("truecolor")||term.includes("24bit")||term.includes("xterm-ghostty")||term.includes("xterm-kitty")||term.includes("wezterm"))return"truecolor";if(term.includes("256color")||term.includes("256"))return"256";let termProgram=process.env.TERM_PROGRAM;if(termProgram==="iTerm.app"||termProgram==="Apple_Terminal")return termProgram==="iTerm.app"?"truecolor":"256";if(termProgram==="Ghostty"||termProgram==="WezTerm")return"truecolor";if(process.env.KITTY_WINDOW_ID)return"truecolor";if(term.includes("xterm")||term.includes("color")||term.includes("ansi"))return"basic";if(CI_ENVS.some((env)=>process.env[env]!==void 0))return"basic";if(process.env.WT_SESSION)return"truecolor";return"basic"}function detectUnicode(){if(process.env.CI){if(process.env.GITHUB_ACTIONS)return!0}let lang=process.env.LANG??process.env.LC_ALL??process.env.LC_CTYPE??"";if(lang.toLowerCase().includes("utf-8")||lang.toLowerCase().includes("utf8"))return!0;if(process.env.WT_SESSION)return!0;let termProgram=process.env.TERM_PROGRAM??"";if(["iTerm.app","Ghostty","WezTerm","Apple_Terminal"].includes(termProgram))return!0;if(process.env.KITTY_WINDOW_ID)return!0;let term=process.env.TERM??"";if(term.includes("xterm")||term.includes("rxvt")||term.includes("screen")||term.includes("tmux"))return!0;return!1}function defaultCaps(){return{program:"",term:"",colorLevel:"truecolor",kittyKeyboard:!1,kittyGraphics:!1,sixel:!1,osc52:!1,hyperlinks:!1,notifications:!1,bracketedPaste:!0,mouse:!0,syncOutput:!1,unicode:!0,underlineStyles:!0,underlineColor:!0,textEmojiWide:!0,textSizingSupported:!1,darkBackground:!0,nerdfont:!1}}function detectMacOSDarkMode(){if(cachedMacOSDarkMode!==void 0)return cachedMacOSDarkMode;try{cachedMacOSDarkMode=spawnSync("defaults",["read","-g","AppleInterfaceStyle"],{encoding:"utf-8",timeout:500}).stdout?.trim()==="Dark"}catch{cachedMacOSDarkMode=!1}return cachedMacOSDarkMode}function detectTerminalCaps(){let program=process.env.TERM_PROGRAM??"",term=process.env.TERM??"",colorTerm=process.env.COLORTERM??"",noColor=process.env.NO_COLOR!==void 0,isAppleTerminal=program==="Apple_Terminal",colorLevel="none";if(!noColor){if(isAppleTerminal)colorLevel="256";else if(colorTerm==="truecolor"||colorTerm==="24bit")colorLevel="truecolor";else if(term.includes("256color"))colorLevel="256";else if(process.stdout?.isTTY)colorLevel="basic"}let isKitty=term==="xterm-kitty",isITerm=program==="iTerm.app",isGhostty=program==="ghostty",isWezTerm=program==="WezTerm",isAlacritty=program==="Alacritty",isFoot=term==="foot"||term==="foot-extra",isModern=isKitty||isITerm||isGhostty||isWezTerm||isFoot,isKittyWithTextSizing=!1;if(isKitty){let parts=(process.env.TERM_PROGRAM_VERSION??"").split("."),major=Number(parts[0])||0,minor=Number(parts[1])||0;isKittyWithTextSizing=major>0||major===0&&minor>=40}let darkBackground=!isAppleTerminal,colorFgBg=process.env.COLORFGBG;if(colorFgBg){let parts=colorFgBg.split(";"),bg=parseInt(parts[parts.length-1]??"",10);if(!isNaN(bg))darkBackground=bg<7}else if(isAppleTerminal)darkBackground=detectMacOSDarkMode();let nerdfont=isModern||isAlacritty,nfEnv=process.env.NERDFONT;if(nfEnv==="0"||nfEnv==="false")nerdfont=!1;else if(nfEnv==="1"||nfEnv==="true")nerdfont=!0;let underlineExtensions=isModern||isAlacritty;return{program,term,colorLevel,kittyKeyboard:isKitty||isGhostty||isWezTerm||isFoot,kittyGraphics:isKitty||isGhostty,sixel:isFoot||isWezTerm,osc52:isModern||isAlacritty,hyperlinks:isModern||isAlacritty,notifications:isITerm||isKitty,bracketedPaste:!0,mouse:!0,syncOutput:isModern||isAlacritty,unicode:!0,underlineStyles:underlineExtensions,underlineColor:underlineExtensions,textEmojiWide:!isAppleTerminal,textSizingSupported:isKittyWithTextSizing,darkBackground,nerdfont}}var CI_ENVS,cachedMacOSDarkMode;var init_detection=__esm(()=>{CI_ENVS=["CI","GITHUB_ACTIONS","GITLAB_CI","JENKINS_URL","BUILDKITE","CIRCLECI","TRAVIS"]});function normalizeModifier(mod){return MODIFIER_ALIASES[mod.toLowerCase()]??mod}function keyToAnsi(key){let parts=key.split("+"),mainKey=parts.pop(),modifiers=parts.map(normalizeModifier);if(modifiers.includes("Super")||modifiers.includes("Hyper"))return keyToKittyAnsi(key);if(!modifiers.length&&mainKey.length===1)return mainKey;if(modifiers.includes("Control")&&mainKey.length===1){let code=mainKey.toLowerCase().charCodeAt(0)-96;if(code>=1&&code<=26)return String.fromCharCode(code)}if(modifiers.includes("Control")&&mainKey==="/")return"\x1F";if(modifiers.includes("Control")&&mainKey==="Enter")return`
|
|
2
|
+
`;if((modifiers.includes("Alt")||modifiers.includes("Meta"))&&mainKey.length===1)return`\x1B${mainKey}`;if(modifiers.includes("Shift")&&mainKey==="Tab")return"\x1B[Z";let ARROW_SUFFIX={ArrowUp:"A",ArrowDown:"B",ArrowRight:"C",ArrowLeft:"D",Home:"H",End:"F"};if(modifiers.length>0&&mainKey in ARROW_SUFFIX){let mod=1;if(modifiers.includes("Shift"))mod+=1;if(modifiers.includes("Alt")||modifiers.includes("Meta"))mod+=2;if(modifiers.includes("Control"))mod+=4;if(modifiers.includes("Super"))mod+=8;if(modifiers.includes("Hyper"))mod+=16;return`\x1B[1;${mod}${ARROW_SUFFIX[mainKey]}`}let base=KEY_MAP[mainKey];if(base!==void 0&&base!==null)return base;return mainKey}function isValidCodepoint(cp){return cp>=0&&cp<=1114111&&!(cp>=55296&&cp<=57343)}function safeFromCodePoint(cp){return isValidCodepoint(cp)?String.fromCodePoint(cp):"?"}function kittyCodepointToName(cp){return KITTY_CODEPOINT_MAP[cp]}function numericToEventType(n){if(n===1)return"press";if(n===2)return"repeat";if(n===3)return"release";return}function parseKeypress(s){let input;if(typeof Buffer<"u"&&Buffer.isBuffer(s))if(s[0]!==void 0&&s[0]>127&&s[1]===void 0){let buf=Buffer.from(s);buf[0]-=128,input=`\x1B${buf.toString()}`}else input=s.toString();else input=typeof s==="string"?s??"":String(s);let key={name:"",ctrl:!1,meta:!1,shift:!1,option:!1,super:!1,hyper:!1,sequence:input};if(input==="\r")key.name="return";else if(input===`
|
|
3
|
+
`)key.name="return",key.ctrl=!0;else if(input==="\t")key.name="tab";else if(input==="\b"||input==="\x1B\b")key.name="backspace",key.meta=input.charAt(0)==="\x1B";else if(input===""||input==="\x1B")key.name="backspace",key.meta=input.charAt(0)==="\x1B";else if(input==="\x1B\r")key.name="return",key.meta=!0;else if(input==="\x1B"||input==="\x1B\x1B")key.name="escape",key.meta=input.length===2;else if(input===" "||input==="\x1B ")key.name="space",key.meta=input.length===2;else if(input.length===1&&input<="\x1A")key.name=String.fromCharCode(input.charCodeAt(0)+97-1),key.ctrl=!0;else if(input==="\x1F")key.name="/",key.ctrl=!0;else if(input.length===1&&input>="0"&&input<="9")key.name="number";else if(input.length===1&&input>="a"&&input<="z")key.name=input;else if(input.length===1&&input>="A"&&input<="Z")key.name=input.toLowerCase(),key.shift=!0;else{let kittyParts=KITTY_RE.exec(input),kittySpecialParts=!kittyParts&&KITTY_SPECIAL_RE.exec(input),modifyOtherKeysParts=!kittyParts&&!kittySpecialParts&&MODIFY_OTHER_KEYS_RE.exec(input);if(kittySpecialParts){let number=Number(kittySpecialParts[1]),modifier=Math.max(0,Number(kittySpecialParts[2])-1),eventType=Number(kittySpecialParts[3]),terminator=kittySpecialParts[4],name=terminator==="~"?KITTY_SPECIAL_NUMBER_KEYS[number]:KITTY_SPECIAL_LETTER_KEYS[terminator];key.isKittyProtocol=!0,key.isPrintable=!1,key.raw=input,key.name=name??"",key.shift=!!(modifier&1),key.option=!!(modifier&2),key.ctrl=!!(modifier&4),key.super=!!(modifier&8),key.hyper=!!(modifier&16),key.meta=!!(modifier&32),key.capsLock=!!(modifier&64),key.numLock=!!(modifier&128);let eventTypeStr=numericToEventType(eventType);if(eventTypeStr)key.eventType=eventTypeStr}else if(kittyParts||modifyOtherKeysParts){let codepoint,modifier;if(kittyParts)codepoint=Number(kittyParts[1]),modifier=Math.max(0,Number(kittyParts[4]||1)-1);else{let mokParts=modifyOtherKeysParts;modifier=Math.max(0,Number(mokParts[1])-1),codepoint=Number(mokParts[2])}if(kittyParts){if(key.isKittyProtocol=!0,key.raw=input,!isValidCodepoint(codepoint))return key.name="",key.isPrintable=!1,key}if(key.shift=!!(modifier&1),key.option=!!(modifier&2),key.ctrl=!!(modifier&4),key.super=!!(modifier&8),key.hyper=!!(modifier&16),key.meta=!!(modifier&32),key.capsLock=!!(modifier&64),key.numLock=!!(modifier&128),kittyParts?.[5]){let et=numericToEventType(Number(kittyParts[5]));if(et)key.eventType=et}if(kittyParts?.[2])key.shiftedKey=String.fromCodePoint(Number(kittyParts[2]));if(kittyParts?.[3])key.baseLayoutKey=String.fromCodePoint(Number(kittyParts[3]));let textFromProtocol;if(kittyParts?.[6])textFromProtocol=kittyParts[6].split(":").map((cp)=>safeFromCodePoint(Number(cp))).join(""),key.associatedText=textFromProtocol,key.text=textFromProtocol;if(codepoint===32)key.name="space",key.isPrintable=!0;else if(codepoint===13)key.name="return",key.isPrintable=!0;else{let mapped=kittyCodepointToName(codepoint);if(mapped)key.name=mapped,key.isPrintable=!1;else if(codepoint>=1&&codepoint<=26)key.name=String.fromCodePoint(codepoint+96),key.isPrintable=!1;else if(codepoint>=32&&codepoint<=126){if(key.name=String.fromCharCode(codepoint).toLowerCase(),codepoint>=65&&codepoint<=90)key.shift=!0,key.name=String.fromCharCode(codepoint+32);key.isPrintable=!0}else if(isValidCodepoint(codepoint))key.name=safeFromCodePoint(codepoint),key.isPrintable=!0;else key.name="",key.isPrintable=!1}if(kittyParts&&key.isPrintable&&!textFromProtocol)if(key.shift&&codepoint>=97&&codepoint<=122)key.text=String.fromCharCode(codepoint-32);else key.text=safeFromCodePoint(codepoint)}else if(KITTY_RE.test(input))return key.isKittyProtocol=!0,key.isPrintable=!1,key.raw=input,key;else{let parts=META_KEY_CODE_RE.exec(input);if(parts)key.meta=!0,key.shift=/^[A-Z]$/.test(parts[1]??"");else if(parts=FN_KEY_RE.exec(input),parts){let segs=input.split("");if(segs[0]==="\x1B"&&segs[1]==="\x1B")key.option=!0;let code=[parts[1],parts[2],parts[4],parts[6]].filter(Boolean).join(""),modifier=Number(parts[3]||parts[5]||1)-1;key.ctrl=!!(modifier&4),key.meta=!!(modifier&2),key.super=!!(modifier&8),key.hyper=!!(modifier&16),key.shift=!!(modifier&1),key.capsLock=!!(modifier&64),key.numLock=!!(modifier&128),key.code=code,key.name=CODE_TO_KEY[code]??"",key.shift=SHIFT_CODES.has(code)||key.shift,key.ctrl=CTRL_CODES.has(code)||key.ctrl}}}return key}function parseKey(rawInput){let keypress=parseKeypress(rawInput),key={upArrow:keypress.name==="up",downArrow:keypress.name==="down",leftArrow:keypress.name==="left",rightArrow:keypress.name==="right",pageDown:keypress.name==="pagedown",pageUp:keypress.name==="pageup",home:keypress.name==="home",end:keypress.name==="end",return:keypress.name==="return",escape:keypress.name==="escape",ctrl:keypress.ctrl,shift:keypress.shift,tab:keypress.name==="tab",backspace:keypress.name==="backspace",delete:keypress.name==="delete",meta:keypress.name!=="escape"&&(keypress.meta||keypress.option),super:keypress.super,hyper:keypress.hyper,capsLock:keypress.capsLock??!1,numLock:keypress.numLock??!1,eventType:keypress.eventType},input;if(keypress.isKittyProtocol)if(keypress.isPrintable)input=keypress.text??keypress.name;else if(keypress.ctrl&&keypress.name.length===1)input=keypress.name;else input="";else{if(input=keypress.ctrl?keypress.name:keypress.sequence,NON_ALPHANUMERIC_KEYS.includes(keypress.name))input="";if(input.startsWith("\x1B"))input=input.slice(1);if(input.startsWith("[")&&input.length>1||input.startsWith("O")&&input.length>1)if(keypress.super||keypress.hyper)input=keypress.name;else input=""}if(input.length===1&&typeof input[0]==="string"&&/[A-Z]/.test(input[0]))key.shift=!0;return[input,key]}function parseHotkey(keyStr){let remaining=keyStr,symbolMods=new Set;for(let char of remaining)if(MODIFIER_SYMBOLS.has(char))symbolMods.add(char);else break;if(symbolMods.size>0){if(remaining=remaining.slice(symbolMods.size),remaining.startsWith("+"))remaining=remaining.slice(1)}let parts=remaining.split("+"),key=parts.pop()||keyStr,modifiers=new Set([...parts.map((p)=>p.toLowerCase()),...symbolMods]);return{key,ctrl:modifiers.has("control")||modifiers.has("ctrl")||modifiers.has("⌃"),meta:modifiers.has("meta")||modifiers.has("alt")||modifiers.has("opt")||modifiers.has("option")||modifiers.has("⌥"),shift:modifiers.has("shift")||modifiers.has("⇧"),alt:!1,super:modifiers.has("super")||modifiers.has("cmd")||modifiers.has("command")||modifiers.has("⌘"),hyper:modifiers.has("hyper")||modifiers.has("✦")}}function keyToKittyAnsi(key){let parts=key.split("+"),mainKey=parts.pop(),modifiers=parts.map(normalizeModifier),mod=0;if(modifiers.includes("Shift"))mod|=1;if(modifiers.includes("Alt")||modifiers.includes("Meta"))mod|=2;if(modifiers.includes("Control"))mod|=4;if(modifiers.includes("Super"))mod|=8;if(modifiers.includes("Hyper"))mod|=16;let specialLetter=PLAYWRIGHT_TO_KITTY_SPECIAL_LETTER[mainKey];if(specialLetter)return`\x1B[1;${mod+1}${specialLetter}`;let specialNumber=PLAYWRIGHT_TO_KITTY_SPECIAL_TILDE[mainKey];if(specialNumber!==void 0)return`\x1B[${specialNumber};${mod+1}~`;let csiUCodepoint=PLAYWRIGHT_TO_KITTY_CSI_U[mainKey];if(csiUCodepoint!==void 0){if(mod>0)return`\x1B[${csiUCodepoint};${mod+1}u`;return`\x1B[${csiUCodepoint}u`}if(mainKey.length===1){let codepoint=mainKey.charCodeAt(0);if(mod>0)return`\x1B[${codepoint};${mod+1}u`;return`\x1B[${codepoint}u`}let cp=NAME_TO_KITTY_CODEPOINT[mainKey.toLowerCase()];if(cp!==void 0){let implicitMod=MODIFIER_KEY_IMPLICIT_BITS[mainKey.toLowerCase()];if(implicitMod!==void 0)mod|=implicitMod;if(mod>0)return`\x1B[${cp};${mod+1}u`;return`\x1B[${cp}u`}return keyToAnsi(key)}function*splitRawInput(data){if(data.length<=1){if(data.length===1)yield data;return}let i=0,textStart=-1;while(i<data.length)if(data.charCodeAt(i)===27){if(textStart>=0)yield*splitNonEscapeText(data.slice(textStart,i)),textStart=-1;if(i+1>=data.length){yield"\x1B",i++;continue}let next=data.charCodeAt(i+1);if(next===91){let j=i+2;while(j<data.length){let c=data.charCodeAt(j);if(c>=64&&c<=126){j++;break}j++}yield data.slice(i,j),i=j}else if(next===79){let end=Math.min(i+3,data.length);yield data.slice(i,end),i=end}else if(next===27)if(i+2<data.length){let third=data.charCodeAt(i+2);if(third===91){let j=i+3;while(j<data.length){let c=data.charCodeAt(j);if(c>=64&&c<=126){j++;break}j++}yield data.slice(i,j),i=j}else if(third===79){let end=Math.min(i+4,data.length);yield data.slice(i,end),i=end}else yield"\x1B\x1B",i+=2}else yield"\x1B\x1B",i+=2;else yield data.slice(i,i+2),i+=2}else{if(textStart<0)textStart=i;i++}if(textStart>=0)yield*splitNonEscapeText(data.slice(textStart))}function*splitNonEscapeText(text){let segmentStart=0;for(let i=0;i<text.length;i++){let ch=text.charCodeAt(i);if(ch===127||ch===8){if(i>segmentStart)yield text.slice(segmentStart,i);yield text[i],segmentStart=i+1}}if(segmentStart<text.length)yield text.slice(segmentStart)}var KEY_MAP,MODIFIER_ALIASES,MODIFIER_SYMBOLS,CODE_TO_KEY,NON_ALPHANUMERIC_KEYS,SHIFT_CODES,CTRL_CODES,META_KEY_CODE_RE,FN_KEY_RE,KITTY_RE,MODIFY_OTHER_KEYS_RE,KITTY_SPECIAL_RE,KITTY_SPECIAL_LETTER_KEYS,KITTY_SPECIAL_NUMBER_KEYS,KITTY_CODEPOINT_MAP,NAME_TO_KITTY_CODEPOINT,MODIFIER_KEY_IMPLICIT_BITS,PLAYWRIGHT_TO_KITTY_CSI_U,PLAYWRIGHT_TO_KITTY_SPECIAL_LETTER,PLAYWRIGHT_TO_KITTY_SPECIAL_TILDE,graphemeSegmenter;var init_keys=__esm(()=>{KEY_MAP={ArrowUp:"\x1B[A",ArrowDown:"\x1B[B",ArrowLeft:"\x1B[D",ArrowRight:"\x1B[C",Home:"\x1B[H",End:"\x1B[F",PageUp:"\x1B[5~",PageDown:"\x1B[6~",Enter:"\r",Tab:"\t",Backspace:"",Delete:"\x1B[3~",Escape:"\x1B",Space:" ",Control:null,Shift:null,Alt:null,Meta:null,Super:null,Hyper:null},MODIFIER_ALIASES={ctrl:"Control",control:"Control","⌃":"Control",shift:"Shift","⇧":"Shift",alt:"Alt",meta:"Meta",opt:"Alt",option:"Alt","⌥":"Alt",cmd:"Super",command:"Super",super:"Super","⌘":"Super",hyper:"Hyper","✦":"Hyper"},MODIFIER_SYMBOLS=new Set(["⌃","⇧","⌥","⌘","✦"]);CODE_TO_KEY={"[A":"up","[B":"down","[C":"right","[D":"left","[E":"clear","[F":"end","[H":"home",OA:"up",OB:"down",OC:"right",OD:"left",OE:"clear",OF:"end",OH:"home",OP:"f1",OQ:"f2",OR:"f3",OS:"f4","[11~":"f1","[12~":"f2","[13~":"f3","[14~":"f4","[15~":"f5","[17~":"f6","[18~":"f7","[19~":"f8","[20~":"f9","[21~":"f10","[23~":"f11","[24~":"f12","[[A":"f1","[[B":"f2","[[C":"f3","[[D":"f4","[[E":"f5","[1~":"home","[2~":"insert","[3~":"delete","[4~":"end","[5~":"pageup","[6~":"pagedown","[[5~":"pageup","[[6~":"pagedown","[7~":"home","[8~":"end","[a":"up","[b":"down","[c":"right","[d":"left","[e":"clear","[2$":"insert","[3$":"delete","[5$":"pageup","[6$":"pagedown","[7$":"home","[8$":"end",Oa:"up",Ob:"down",Oc:"right",Od:"left",Oe:"clear","[2^":"insert","[3^":"delete","[5^":"pageup","[6^":"pagedown","[7^":"home","[8^":"end","[Z":"tab"},NON_ALPHANUMERIC_KEYS=[...Object.values(CODE_TO_KEY),"backspace","tab","delete"],SHIFT_CODES=new Set(["[a","[b","[c","[d","[e","[2$","[3$","[5$","[6$","[7$","[8$","[Z"]),CTRL_CODES=new Set(["Oa","Ob","Oc","Od","Oe","[2^","[3^","[5^","[6^","[7^","[8^"]),META_KEY_CODE_RE=/^(?:\x1b)([a-zA-Z0-9])$/,FN_KEY_RE=/^(?:\x1b+)(O|N|\[|\[\[)(?:(\d+)(?:;(\d+))?([~^$])|(?:1;)?(\d+)?([a-zA-Z]))/,KITTY_RE=/^\x1b\[(\d+)(?::(\d+))?(?::(\d+))?(?:;(\d+)(?::(\d+))?(?:;([\d:]+))?)?u$/,MODIFY_OTHER_KEYS_RE=/^\x1b\[27;(\d+);(\d+)~$/,KITTY_SPECIAL_RE=/^\x1b\[(\d+);(\d+):(\d+)([A-Za-z~])$/,KITTY_SPECIAL_LETTER_KEYS={A:"up",B:"down",C:"right",D:"left",E:"clear",F:"end",H:"home",P:"f1",Q:"f2",R:"f3",S:"f4"},KITTY_SPECIAL_NUMBER_KEYS={2:"insert",3:"delete",5:"pageup",6:"pagedown",7:"home",8:"end",11:"f1",12:"f2",13:"f3",14:"f4",15:"f5",17:"f6",18:"f7",19:"f8",20:"f9",21:"f10",23:"f11",24:"f12"};KITTY_CODEPOINT_MAP={8:"backspace",9:"tab",13:"return",27:"escape",127:"delete",57376:"f13",57377:"f14",57378:"f15",57379:"f16",57380:"f17",57381:"f18",57382:"f19",57383:"f20",57384:"f21",57385:"f22",57386:"f23",57387:"f24",57388:"f25",57389:"f26",57390:"f27",57391:"f28",57392:"f29",57393:"f30",57394:"f31",57395:"f32",57396:"f33",57397:"f34",57398:"f35",57358:"capslock",57359:"scrolllock",57360:"numlock",57361:"printscreen",57362:"pause",57363:"menu",57399:"kp0",57400:"kp1",57401:"kp2",57402:"kp3",57403:"kp4",57404:"kp5",57405:"kp6",57406:"kp7",57407:"kp8",57408:"kp9",57409:"kpdecimal",57410:"kpdivide",57411:"kpmultiply",57412:"kpsubtract",57413:"kpadd",57414:"kpenter",57415:"kpequal",57416:"kpseparator",57417:"kpleft",57418:"kpright",57419:"kpup",57420:"kpdown",57421:"kppageup",57422:"kppagedown",57423:"kphome",57424:"kpend",57425:"kpinsert",57426:"kpdelete",57427:"kpbegin",57428:"mediaplay",57429:"mediapause",57430:"mediaplaypause",57431:"mediareverse",57432:"mediastop",57433:"mediafastforward",57434:"mediarewind",57435:"mediatracknext",57436:"mediatrackprevious",57437:"mediarecord",57438:"lowervolume",57439:"raisevolume",57440:"mutevolume",57441:"leftshift",57442:"leftcontrol",57443:"leftalt",57444:"leftsuper",57445:"lefthyper",57446:"leftmeta",57447:"rightshift",57448:"rightcontrol",57449:"rightalt",57450:"rightsuper",57451:"righthyper",57452:"rightmeta",57453:"isoLevel3Shift",57454:"isoLevel5Shift"};NAME_TO_KITTY_CODEPOINT={};for(let[cp,name]of Object.entries(KITTY_CODEPOINT_MAP))NAME_TO_KITTY_CODEPOINT[name]=Number(cp);MODIFIER_KEY_IMPLICIT_BITS={leftshift:1,rightshift:1,leftcontrol:4,rightcontrol:4,leftalt:2,rightalt:2,leftsuper:8,rightsuper:8,lefthyper:16,righthyper:16,leftmeta:32,rightmeta:32},PLAYWRIGHT_TO_KITTY_CSI_U={Enter:13,Escape:27,Backspace:127,Tab:9,Space:32},PLAYWRIGHT_TO_KITTY_SPECIAL_LETTER={ArrowUp:"A",ArrowDown:"B",ArrowRight:"C",ArrowLeft:"D",Home:"H",End:"F",F1:"P",F2:"Q",F3:"R",F4:"S"},PLAYWRIGHT_TO_KITTY_SPECIAL_TILDE={Insert:2,Delete:3,PageUp:5,PageDown:6,F5:15,F6:17,F7:18,F8:19,F9:20,F10:21,F11:23,F12:24};graphemeSegmenter=new Intl.Segmenter("en",{granularity:"grapheme"})});var init_keys2=__esm(()=>{init_keys()});function parseMouseSequence(input){let m=SGR_MOUSE_RE.exec(input);if(!m)return null;let raw=parseInt(m[1]),x=parseInt(m[2])-1,y=parseInt(m[3])-1,terminator=m[4],shift=!!(raw&4),meta=!!(raw&8),ctrl=!!(raw&16),motion=!!(raw&32);if(!!(raw&64)){let wheelButton=raw&3;return{button:0,x,y,action:"wheel",delta:wheelButton===0?-1:1,shift,meta,ctrl}}return{button:raw&3,x,y,action:motion?"move":terminator==="M"?"down":"up",shift,meta,ctrl}}function isMouseSequence(input){return SGR_MOUSE_TEST_RE.test(input)}var SGR_MOUSE_RE,SGR_MOUSE_TEST_RE;var init_mouse=__esm(()=>{SGR_MOUSE_RE=/^\x1b\[<(\d+);(\d+);(\d+)([Mm])$/;SGR_MOUSE_TEST_RE=/^\x1b\[<\d+;\d+;\d+[Mm]$/});function enableBracketedPaste(stdout){stdout.write("\x1B[?2004h")}function disableBracketedPaste(stdout){stdout.write("\x1B[?2004l")}function parseBracketedPaste(input){let startIdx=input.indexOf("\x1B[200~");if(startIdx===-1)return null;let contentStart=startIdx+6,endIdx=input.indexOf("\x1B[201~",contentStart);if(endIdx===-1)return null;return{type:"paste",content:input.slice(contentStart,endIdx)}}function parseFocusEvent(input){if(input.includes("\x1B[I"))return{type:"focus-in"};if(input.includes("\x1B[O"))return{type:"focus-out"};return null}function splitRawInput2(raw){let sequences=[],i=0;while(i<raw.length)if(raw[i]==="\x1B")if(i+1>=raw.length)sequences.push("\x1B"),i++;else if(raw[i+1]==="["){let j=i+2;while(j<raw.length&&!isCSITerminator(raw[j]))j++;if(j<raw.length)j++,sequences.push(raw.slice(i,j)),i=j;else return{sequences,incomplete:raw.slice(i)}}else if(raw[i+1]==="O"){let end=Math.min(i+3,raw.length);sequences.push(raw.slice(i,end)),i=end}else if(raw[i+1]==="\x1B")if(i+2<raw.length&&raw[i+2]==="["){let j=i+3;while(j<raw.length&&!isCSITerminator(raw[j]))j++;if(j<raw.length)j++,sequences.push(raw.slice(i,j)),i=j;else return{sequences,incomplete:raw.slice(i)}}else if(i+2<raw.length&&raw[i+2]==="O"){let end=Math.min(i+4,raw.length);sequences.push(raw.slice(i,end)),i=end}else sequences.push("\x1B\x1B"),i+=2;else sequences.push(raw.slice(i,i+2)),i+=2;else sequences.push(raw[i]),i++;return{sequences,incomplete:null}}function isCSITerminator(ch){return ch>="A"&&ch<="Z"||ch>="a"&&ch<="z"||ch==="~"}function createTermProvider(stdin,stdout,options={}){let{cols=stdout.columns||80,rows=stdout.rows||24}=options,state={cols,rows},listeners=new Set,disposed=!1,controller=new AbortController,signal=controller.signal,stdinCleanup=null,onResize=()=>{state={cols:stdout.columns||80,rows:stdout.rows||24},listeners.forEach((l)=>l(state))};if(typeof stdout.setMaxListeners==="function"){if((stdout.getMaxListeners?.()??10)<50)stdout.setMaxListeners(50)}return stdout.on("resize",onResize),{getState(){return state},subscribe(listener){return listeners.add(listener),()=>listeners.delete(listener)},async*events(){if(disposed)return;if(stdin.isTTY)stdin.setRawMode(!0),stdin.resume(),stdin.setEncoding("utf8");let queue=[],eventResolve=null,onKey=(raw)=>{let focusEvent=parseFocusEvent(raw);if(focusEvent){queue.push({type:"focus",data:{focused:focusEvent.type==="focus-in"}});return}if(isMouseSequence(raw)){let parsed=parseMouseSequence(raw);if(parsed){queue.push({type:"mouse",data:parsed});return}}let[input,key]=parseKey(raw);queue.push({type:"key",data:{input,key}})},incompleteCSI=null,onChunk=(chunk)=>{if(incompleteCSI!==null)chunk=incompleteCSI+chunk,incompleteCSI=null;let pasteResult=parseBracketedPaste(chunk);if(pasteResult){if(queue.push({type:"paste",data:{text:pasteResult.content}}),eventResolve){let resolve=eventResolve;eventResolve=null,resolve()}return}let{sequences,incomplete}=splitRawInput2(chunk);for(let raw of sequences)onKey(raw);if(incompleteCSI=incomplete,eventResolve){let resolve=eventResolve;eventResolve=null,resolve()}},onResizeEvent=()=>{let event={type:"resize",data:{cols:stdout.columns||80,rows:stdout.rows||24}};if(queue.push(event),eventResolve){let resolve=eventResolve;eventResolve=null,resolve()}};if(stdin.isTTY)enableBracketedPaste(stdout);stdin.on("data",onChunk),stdout.on("resize",onResizeEvent),stdinCleanup=()=>{if(stdin.isTTY)disableBracketedPaste(stdout);if(stdin.off("data",onChunk),stdout.off("resize",onResizeEvent),stdin.isTTY)stdin.setRawMode(!1);stdin.pause()};try{while(!disposed&&!signal.aborted){if(queue.length===0)await new Promise((resolve)=>{eventResolve=resolve,signal.addEventListener("abort",()=>resolve(),{once:!0})});if(disposed||signal.aborted)break;while(queue.length>0)yield queue.shift()}}finally{if(stdinCleanup){let fn=stdinCleanup;stdinCleanup=null,fn()}}},[Symbol.dispose](){if(disposed)return;if(disposed=!0,controller.abort(),stdout.off("resize",onResize),listeners.clear(),stdinCleanup){let fn=stdinCleanup;stdinCleanup=null,fn()}}}}var init_term_provider=__esm(()=>{init_keys2();init_mouse()});import{Chalk}from"chalk";function stripAnsi(text){return text.replace(ANSI_REGEX,"")}function createTerm(first,second){if(second&&first&&isTermBackend(first)){let{createTerminal}=__require("@termless/core"),emulator=createTerminal({backend:first,...second});return createBackendTerm(emulator)}if(first&&isTermEmulator(first))return createBackendTerm(first);if(first&&isHeadlessDims(first))return createHeadlessTerm(first);return createNodeTerm(first??{})}function isTermEmulator(obj){if(typeof obj!=="object"||obj===null)return!1;let o=obj;return typeof o.feed==="function"&&typeof o.screen==="object"&&o.screen!==null}function isTermBackend(obj){if(typeof obj!=="object"||obj===null)return!1;let o=obj;return typeof o.init==="function"&&typeof o.name==="string"&&typeof o.destroy==="function"}function isHeadlessDims(obj){if(typeof obj!=="object"||obj===null)return!1;let o=obj;return typeof o.cols==="number"&&typeof o.rows==="number"&&!("stdout"in o)&&!("stdin"in o)}function createNodeTerm(options){let stdout=options.stdout??process.stdout,stdin=options.stdin??process.stdin,cachedCursor=options.cursor??detectCursor(stdout),cachedInput=detectInput(stdin),cachedColor=options.color!==void 0?options.color:detectColor(stdout),cachedUnicode=options.unicode??detectUnicode(),detectedCaps=options.caps?{...defaultCaps(),...options.caps}:stdin.isTTY?detectTerminalCaps():void 0,chalkInstance=new Chalk({level:cachedColor===null?0:cachedColor==="basic"?1:cachedColor==="256"?2:3}),provider=null,getProvider=()=>{if(!provider)provider=createTermProvider(stdin,stdout,{cols:stdout.columns||80,rows:stdout.rows||24});return provider},termBase={hasCursor:()=>cachedCursor,hasInput:()=>cachedInput,hasColor:()=>cachedColor,hasUnicode:()=>cachedUnicode,caps:detectedCaps,stdout,stdin,write:(str)=>{stdout.write(str)},writeLine:(str)=>{stdout.write(str+`
|
|
4
|
+
`)},getState:()=>getProvider().getState(),subscribe:(listener)=>getProvider().subscribe(listener),events:()=>getProvider().events(),stripAnsi,[Symbol.dispose]:()=>{if(provider)provider[Symbol.dispose]()}},term=createStyleProxy(chalkInstance,termBase);return Object.defineProperty(term,"cols",{get:()=>stdout.isTTY?stdout.columns:void 0,enumerable:!0}),Object.defineProperty(term,"rows",{get:()=>stdout.isTTY?stdout.rows:void 0,enumerable:!0}),term}function createHeadlessTerm(dims){let state={cols:dims.cols,rows:dims.rows},disposed=!1,controller=new AbortController,chalkInstance=new Chalk({level:0}),termBase={hasCursor:()=>!1,hasInput:()=>!1,hasColor:()=>null,hasUnicode:()=>!1,caps:void 0,stdout:process.stdout,stdin:process.stdin,write:()=>{},writeLine:()=>{},getState:()=>state,subscribe:()=>()=>{},async*events(){if(disposed)return;await new Promise((resolve)=>{controller.signal.addEventListener("abort",()=>resolve(),{once:!0})})},stripAnsi,[Symbol.dispose]:()=>{if(disposed)return;disposed=!0,controller.abort()}},term=createStyleProxy(chalkInstance,termBase);return Object.defineProperty(term,"cols",{get:()=>dims.cols,enumerable:!0}),Object.defineProperty(term,"rows",{get:()=>dims.rows,enumerable:!0}),term}function createBackendTerm(emulator){let disposed=!1,controller=new AbortController,chalkInstance=new Chalk({level:3}),listeners=new Set,eventQueue=[],eventResolve=null,termBase={hasCursor:()=>!0,hasInput:()=>!0,hasColor:()=>"truecolor",hasUnicode:()=>!0,caps:void 0,stdout:process.stdout,stdin:process.stdin,write:(str)=>emulator.feed(str),writeLine:(str)=>emulator.feed(str+`
|
|
5
|
+
`),getState:()=>({cols:emulator.cols,rows:emulator.rows}),subscribe:(listener)=>{return listeners.add(listener),()=>listeners.delete(listener)},async*events(){if(disposed)return;while(!disposed&&!controller.signal.aborted){if(eventQueue.length===0)await new Promise((resolve)=>{eventResolve=resolve,controller.signal.addEventListener("abort",()=>resolve(),{once:!0})});if(disposed||controller.signal.aborted)break;while(eventQueue.length>0)yield eventQueue.shift()}},resize:(cols,rows)=>{emulator.resize(cols,rows);let state={cols,rows};if(listeners.forEach((l)=>l(state)),eventQueue.push({type:"resize",data:{cols,rows}}),eventResolve){let resolve=eventResolve;eventResolve=null,resolve()}},sendInput:(data)=>{let pasteResult=parseBracketedPaste(data);if(pasteResult)eventQueue.push({type:"paste",data:{text:pasteResult.content}});else for(let raw of splitRawInput(data)){let focusEvent=parseFocusEvent(raw);if(focusEvent){eventQueue.push({type:"focus",data:{focused:focusEvent.type==="focus-in"}});continue}if(isMouseSequence(raw)){let parsed=parseMouseSequence(raw);if(parsed)eventQueue.push({type:"mouse",data:parsed});continue}let[input,key]=parseKey(raw);eventQueue.push({type:"key",data:{input,key}})}if(eventResolve){let resolve=eventResolve;eventResolve=null,resolve()}},stripAnsi,_emulator:emulator,[Symbol.dispose]:()=>{if(disposed)return;disposed=!0,controller.abort(),listeners.clear(),emulator.close().catch(()=>{})}};return Object.defineProperty(termBase,"cols",{get:()=>emulator.cols,enumerable:!0}),Object.defineProperty(termBase,"rows",{get:()=>emulator.rows,enumerable:!0}),Object.defineProperty(termBase,"screen",{get:()=>emulator.screen,enumerable:!0}),Object.defineProperty(termBase,"scrollback",{get:()=>emulator.scrollback,enumerable:!0}),createStyleProxy(chalkInstance,termBase)}function createStyleProxy(chalkInstance,termBase){return createChainProxy(chalkInstance,termBase)}function createChainProxy(currentChalk,termBase){let handler={apply(_target,_thisArg,args){if(args.length===1&&typeof args[0]==="string")return currentChalk(args[0]);if(args.length>0&&Array.isArray(args[0])&&"raw"in args[0])return currentChalk(args[0],...args.slice(1));return currentChalk(String(args[0]??""))},get(target,prop,receiver){if(prop in termBase){let value=termBase[prop];if(typeof value==="function")return value;return value}if(typeof prop==="symbol"){if(prop===Symbol.dispose)return termBase[Symbol.dispose];return Reflect.get(target,prop,receiver)}if(prop==="rgb"||prop==="bgRgb")return(r,g,b)=>{let newChalk=currentChalk[prop](r,g,b);return createChainProxy(newChalk,termBase)};if(prop==="hex"||prop==="bgHex")return(color)=>{let newChalk=currentChalk[prop](color);return createChainProxy(newChalk,termBase)};if(prop==="ansi256"||prop==="bgAnsi256")return(code)=>{let newChalk=currentChalk[prop](code);return createChainProxy(newChalk,termBase)};let chalkProp=currentChalk[prop];if(chalkProp!==void 0){if(typeof chalkProp==="function"||typeof chalkProp==="object")return createChainProxy(chalkProp,termBase);return chalkProp}return},has(_target,prop){if(prop in termBase)return!0;if(typeof prop==="string"&&prop in currentChalk)return!0;return!1}},proxyTarget=Object.assign(function(){},currentChalk);return new Proxy(proxyTarget,handler)}var ANSI_REGEX;var init_term=__esm(()=>{init_detection();init_term_provider();init_keys();init_mouse();ANSI_REGEX=/\x1b\[[0-9;:]*m|\x9b[0-9;:]*m|\x1b\]8;;[^\x07\x1b]*(?:\x07|\x1b\\)|\x9d8;;[^\x07\x1b\x9c]*(?:\x07|\x1b\\|\x9c)/g});var init_patch_console=()=>{};import stringWidth from"string-width";var init_utils=()=>{};var init_constants=()=>{};import chalk from"chalk";var init_underline=__esm(()=>{init_constants();init_detection()});var init_hyperlink=__esm(()=>{init_constants()});var _lazyTerm,term,BG_OVERRIDE_CODE=9999;var init_ansi=__esm(()=>{init_term();init_term();init_patch_console();init_detection();init_utils();init_underline();init_hyperlink();term=new Proxy({},{get(_target,prop,receiver){if(!_lazyTerm)_lazyTerm=createTerm();return Reflect.get(_lazyTerm,prop,receiver)},apply(_target,thisArg,args){if(!_lazyTerm)_lazyTerm=createTerm();return Reflect.apply(_lazyTerm,thisArg,args)},has(_target,prop){if(!_lazyTerm)_lazyTerm=createTerm();return Reflect.has(_lazyTerm,prop)}})});function fgColorCode(color){if(typeof color==="number"){if(color>=0&&color<=7)return`${30+color}`;return`38;5;${color}`}return`38;2;${color.r};${color.g};${color.b}`}function bgColorCode(color){if(typeof color==="number"){if(color>=0&&color<=7)return`${40+color}`;return`48;5;${color}`}return`48;2;${color.r};${color.g};${color.b}`}function isDefaultBg(color){return color!==null&&typeof color==="object"&&color.r===-1}function underlineStyleToNumber(style){switch(style){case!1:return 0;case"single":return 1;case"double":return 2;case"curly":return 3;case"dotted":return 4;case"dashed":return 5;default:return 0}}function numberToUnderlineStyle(n){switch(n){case 0:return;case 1:return"single";case 2:return"double";case 3:return"curly";case 4:return"dotted";case 5:return"dashed";default:return}}function attrsToNumber(attrs){let n=0;if(attrs.bold)n|=ATTR_BOLD;if(attrs.dim)n|=ATTR_DIM;if(attrs.italic)n|=ATTR_ITALIC;if(attrs.blink)n|=ATTR_BLINK;if(attrs.inverse)n|=ATTR_INVERSE;if(attrs.hidden)n|=ATTR_HIDDEN;if(attrs.strikethrough)n|=ATTR_STRIKETHROUGH;let ulStyle=attrs.underlineStyle??(attrs.underline?"single":void 0);return n|=underlineStyleToNumber(ulStyle)<<UNDERLINE_STYLE_SHIFT,n}function numberToAttrs(n){let attrs={};if(n&ATTR_BOLD)attrs.bold=!0;if(n&ATTR_DIM)attrs.dim=!0;if(n&ATTR_ITALIC)attrs.italic=!0;if(n&ATTR_BLINK)attrs.blink=!0;if(n&ATTR_INVERSE)attrs.inverse=!0;if(n&ATTR_HIDDEN)attrs.hidden=!0;if(n&ATTR_STRIKETHROUGH)attrs.strikethrough=!0;let ulStyleNum=(n&UNDERLINE_STYLE_MASK)>>UNDERLINE_STYLE_SHIFT,ulStyle=numberToUnderlineStyle(ulStyleNum);if(ulStyle)attrs.underlineStyle=ulStyle,attrs.underline=!0;return attrs}function colorToIndex(color){if(color===null)return 0;if(typeof color==="number")return(color&255)+1;return 0}function isTrueColor(color){return color!==null&&typeof color==="object"}function packCell(cell){let packed=0;if(packed|=colorToIndex(cell.fg)&255,packed|=(colorToIndex(cell.bg)&255)<<8,packed|=attrsToNumber(cell.attrs),cell.wide)packed|=WIDE_FLAG;if(cell.continuation)packed|=CONTINUATION_FLAG;if(isTrueColor(cell.fg))packed|=TRUE_COLOR_FG_FLAG;if(isTrueColor(cell.bg))packed|=TRUE_COLOR_BG_FLAG;return packed}function unpackFgIndex(packed){return packed&255}function unpackBgIndex(packed){return packed>>8&255}function unpackAttrs(packed){return numberToAttrs(packed)}function unpackWide(packed){return(packed&WIDE_FLAG)!==0}function unpackContinuation(packed){return(packed&CONTINUATION_FLAG)!==0}function unpackTrueColorFg(packed){return(packed&TRUE_COLOR_FG_FLAG)!==0}function unpackTrueColorBg(packed){return(packed&TRUE_COLOR_BG_FLAG)!==0}class TerminalBuffer{cells;chars;fgColors;bgColors;underlineColors;hyperlinks;_dirtyRows;_minDirtyRow;_maxDirtyRow;width;height;constructor(width,height){this.width=width,this.height=height;let size=width*height;this.cells=new Uint32Array(size),this.chars=Array(size).fill(" "),this.fgColors=new Map,this.bgColors=new Map,this.underlineColors=new Map,this.hyperlinks=new Map,this._dirtyRows=new Uint8Array(height).fill(1),this._minDirtyRow=0,this._maxDirtyRow=height-1}index(x,y){return y*this.width+x}inBounds(x,y){return x>=0&&x<this.width&&y>=0&&y<this.height}getCell(x,y){if(!this.inBounds(x,y))return{...EMPTY_CELL};let idx=this.index(x,y),packed=this.cells[idx],char=this.chars[idx],fg=null;if(unpackTrueColorFg(packed))fg=this.fgColors.get(idx)??null;else{let fgIndex=unpackFgIndex(packed);fg=fgIndex>0?fgIndex-1:null}let bg=null;if(unpackTrueColorBg(packed))bg=this.bgColors.get(idx)??null;else{let bgIndex=unpackBgIndex(packed);bg=bgIndex>0?bgIndex-1:null}let hyperlink2=this.hyperlinks.get(idx);return{char,fg,bg,underlineColor:this.underlineColors.get(idx)??null,attrs:unpackAttrs(packed),wide:unpackWide(packed),continuation:unpackContinuation(packed),...hyperlink2!==void 0?{hyperlink:hyperlink2}:{}}}getCellChar(x,y){if(!this.inBounds(x,y))return" ";return this.chars[this.index(x,y)]}getCellBg(x,y){if(!this.inBounds(x,y))return null;let idx=this.index(x,y),packed=this.cells[idx];if(unpackTrueColorBg(packed))return this.bgColors.get(idx)??null;let bgIndex=unpackBgIndex(packed);return bgIndex>0?bgIndex-1:null}getCellFg(x,y){if(!this.inBounds(x,y))return null;let idx=this.index(x,y),packed=this.cells[idx];if(unpackTrueColorFg(packed))return this.fgColors.get(idx)??null;let fgIndex=unpackFgIndex(packed);return fgIndex>0?fgIndex-1:null}getCellAttrs(x,y){if(!this.inBounds(x,y))return 0;return this.cells[this.index(x,y)]}isCellWide(x,y){if(!this.inBounds(x,y))return!1;return unpackWide(this.cells[this.index(x,y)])}isCellContinuation(x,y){if(!this.inBounds(x,y))return!1;return unpackContinuation(this.cells[this.index(x,y)])}readCellInto(x,y,out){if(!this.inBounds(x,y))return out.char=" ",out.fg=null,out.bg=null,out.underlineColor=null,out.attrs=EMPTY_ATTRS,out.wide=!1,out.continuation=!1,out.hyperlink=void 0,out;let idx=this.index(x,y),packed=this.cells[idx];if(out.char=this.chars[idx],unpackTrueColorFg(packed))out.fg=this.fgColors.get(idx)??null;else{let fgIndex=unpackFgIndex(packed);out.fg=fgIndex>0?fgIndex-1:null}if(unpackTrueColorBg(packed))out.bg=this.bgColors.get(idx)??null;else{let bgIndex=unpackBgIndex(packed);out.bg=bgIndex>0?bgIndex-1:null}out.underlineColor=this.underlineColors.get(idx)??null;let attrs=out.attrs===EMPTY_ATTRS?(out.attrs={},out.attrs):out.attrs;attrs.bold=(packed&ATTR_BOLD)!==0?!0:void 0,attrs.dim=(packed&ATTR_DIM)!==0?!0:void 0,attrs.italic=(packed&ATTR_ITALIC)!==0?!0:void 0,attrs.blink=(packed&ATTR_BLINK)!==0?!0:void 0,attrs.inverse=(packed&ATTR_INVERSE)!==0?!0:void 0,attrs.hidden=(packed&ATTR_HIDDEN)!==0?!0:void 0,attrs.strikethrough=(packed&ATTR_STRIKETHROUGH)!==0?!0:void 0;let ulStyleNum=(packed&UNDERLINE_STYLE_MASK)>>UNDERLINE_STYLE_SHIFT,ulStyle=numberToUnderlineStyle(ulStyleNum);if(ulStyle)attrs.underlineStyle=ulStyle,attrs.underline=!0;else attrs.underlineStyle=void 0,attrs.underline=void 0;return out.wide=(packed&WIDE_FLAG)!==0,out.continuation=(packed&CONTINUATION_FLAG)!==0,out.hyperlink=this.hyperlinks.get(idx),out}setCell(x,y,cell){if(!this.inBounds(x,y))return;let trap=globalThis.__silvery_write_trap;if(trap&&x===trap.x&&y===trap.y){let char2=cell.char??" ",stack=Error().stack?.split(`
|
|
6
|
+
`).slice(1,6).join(`
|
|
7
|
+
`)??"";trap.log.push(` char="${char2}" fg=${cell.fg??"null"} bg=${cell.bg??"null"} dim=${cell.attrs?.dim} ul=${cell.attrs?.underline}
|
|
8
|
+
${stack}`)}if(this._dirtyRows[y]=1,this._minDirtyRow===-1||y<this._minDirtyRow)this._minDirtyRow=y;if(y>this._maxDirtyRow)this._maxDirtyRow=y;let idx=this.index(x,y),char=cell.char??" ",fg=cell.fg??null,bg=cell.bg??null,underlineColor2=cell.underlineColor??null,attrs=cell.attrs??EMPTY_ATTRS,wide=cell.wide??!1,continuation=cell.continuation??!1;if(this.chars[idx]=char,isTrueColor(fg))this.fgColors.set(idx,fg);else this.fgColors.delete(idx);if(isTrueColor(bg))this.bgColors.set(idx,bg);else this.bgColors.delete(idx);if(underlineColor2!==null)this.underlineColors.set(idx,underlineColor2);else this.underlineColors.delete(idx);let hyperlink2=cell.hyperlink;if(hyperlink2!==void 0&&hyperlink2!=="")this.hyperlinks.set(idx,hyperlink2);else this.hyperlinks.delete(idx);let packed=0;if(packed|=colorToIndex(fg)&255,packed|=(colorToIndex(bg)&255)<<8,packed|=attrsToNumber(attrs),wide)packed|=WIDE_FLAG;if(continuation)packed|=CONTINUATION_FLAG;if(isTrueColor(fg))packed|=TRUE_COLOR_FG_FLAG;if(isTrueColor(bg))packed|=TRUE_COLOR_BG_FLAG;this.cells[idx]=packed}fill(x,y,width,height,cell){let endX=Math.min(x+width,this.width),endY=Math.min(y+height,this.height),startX=Math.max(0,x),startY=Math.max(0,y);if(startX>=endX||startY>=endY)return;let char=cell.char??" ",fg=cell.fg??null,bg=cell.bg??null,underlineColor2=cell.underlineColor??null,attrs=cell.attrs??{},wide=cell.wide??!1,continuation=cell.continuation??!1,packed=packCell({char,fg,bg,underlineColor:underlineColor2,attrs,wide,continuation}),hasTrueColorFg=isTrueColor(fg),hasTrueColorBg=isTrueColor(bg),trueColorFg=hasTrueColorFg?fg:null,trueColorBg=hasTrueColorBg?bg:null,hasUnderlineColor=underlineColor2!==null,hyperlink2=cell.hyperlink,hasHyperlink=hyperlink2!==void 0&&hyperlink2!=="";for(let cy=startY;cy<endY;cy++)this._dirtyRows[cy]=1;if(startY<endY){if(this._minDirtyRow===-1||startY<this._minDirtyRow)this._minDirtyRow=startY;if(endY-1>this._maxDirtyRow)this._maxDirtyRow=endY-1}let needFgDelete=!hasTrueColorFg&&this.fgColors.size>0,needBgDelete=!hasTrueColorBg&&this.bgColors.size>0,needUlDelete=!hasUnderlineColor&&this.underlineColors.size>0,needHlDelete=!hasHyperlink&&this.hyperlinks.size>0;for(let cy=startY;cy<endY;cy++){let rowBase=cy*this.width;for(let cx=startX;cx<endX;cx++){let idx=rowBase+cx;if(this.cells[idx]=packed,this.chars[idx]=char,hasTrueColorFg)this.fgColors.set(idx,trueColorFg);else if(needFgDelete)this.fgColors.delete(idx);if(hasTrueColorBg)this.bgColors.set(idx,trueColorBg);else if(needBgDelete)this.bgColors.delete(idx);if(hasUnderlineColor)this.underlineColors.set(idx,underlineColor2);else if(needUlDelete)this.underlineColors.delete(idx);if(hasHyperlink)this.hyperlinks.set(idx,hyperlink2);else if(needHlDelete)this.hyperlinks.delete(idx)}}}clear(){this.cells.fill(0),this.chars.fill(" "),this.fgColors.clear(),this.bgColors.clear(),this.underlineColors.clear(),this.hyperlinks.clear(),this._dirtyRows.fill(1),this._minDirtyRow=0,this._maxDirtyRow=this.height-1}copyFrom(source,srcX,srcY,destX,destY,width,height){let cell=createMutableCell();for(let dy=0;dy<height;dy++){let dstY=destY+dy;if(dstY>=0&&dstY<this.height){if(this._dirtyRows[dstY]=1,this._minDirtyRow===-1||dstY<this._minDirtyRow)this._minDirtyRow=dstY;if(dstY>this._maxDirtyRow)this._maxDirtyRow=dstY}for(let dx=0;dx<width;dx++){let sx=srcX+dx,sy=srcY+dy,dX=destX+dx;if(source.inBounds(sx,sy)&&this.inBounds(dX,dstY))source.readCellInto(sx,sy,cell),this.setCell(dX,dstY,cell)}}}scrollRegion(x,y,regionWidth,regionHeight,delta,clearCell={}){if(delta===0||regionHeight<=0||regionWidth<=0)return;let startX=Math.max(0,x),endX=Math.min(x+regionWidth,this.width),startY=Math.max(0,y),endY=Math.min(y+regionHeight,this.height),clampedWidth=endX-startX,clampedHeight=endY-startY;if(clampedWidth<=0||clampedHeight<=0)return;for(let r=startY;r<endY;r++)this._dirtyRows[r]=1;if(this._minDirtyRow===-1||startY<this._minDirtyRow)this._minDirtyRow=startY;if(endY-1>this._maxDirtyRow)this._maxDirtyRow=endY-1;if(Math.abs(delta)>=clampedHeight){this.fill(startX,startY,clampedWidth,clampedHeight,{char:clearCell.char??" ",bg:clearCell.bg??null});return}let absDelta=Math.abs(delta),w=this.width;if(delta>0){for(let row=startY;row<endY-absDelta;row++){let dstBase=row*w,srcBase=(row+absDelta)*w;this.cells.copyWithin(dstBase+startX,srcBase+startX,srcBase+endX);for(let cx=startX;cx<endX;cx++){this.chars[dstBase+cx]=this.chars[srcBase+cx];let srcIdx=srcBase+cx,dstIdx=dstBase+cx,fgc=this.fgColors.get(srcIdx);if(fgc)this.fgColors.set(dstIdx,fgc),this.fgColors.delete(srcIdx);else this.fgColors.delete(dstIdx);let bgc=this.bgColors.get(srcIdx);if(bgc)this.bgColors.set(dstIdx,bgc),this.bgColors.delete(srcIdx);else this.bgColors.delete(dstIdx);let ulc=this.underlineColors.get(srcIdx);if(ulc)this.underlineColors.set(dstIdx,ulc),this.underlineColors.delete(srcIdx);else this.underlineColors.delete(dstIdx);let hl=this.hyperlinks.get(srcIdx);if(hl)this.hyperlinks.set(dstIdx,hl),this.hyperlinks.delete(srcIdx);else this.hyperlinks.delete(dstIdx)}}this.fill(startX,endY-absDelta,clampedWidth,absDelta,{char:clearCell.char??" ",bg:clearCell.bg??null})}else{for(let row=endY-1;row>=startY+absDelta;row--){let dstBase=row*w,srcBase=(row-absDelta)*w;this.cells.copyWithin(dstBase+startX,srcBase+startX,srcBase+endX);for(let cx=startX;cx<endX;cx++){this.chars[dstBase+cx]=this.chars[srcBase+cx];let srcIdx=srcBase+cx,dstIdx=dstBase+cx,fgc=this.fgColors.get(srcIdx);if(fgc)this.fgColors.set(dstIdx,fgc),this.fgColors.delete(srcIdx);else this.fgColors.delete(dstIdx);let bgc=this.bgColors.get(srcIdx);if(bgc)this.bgColors.set(dstIdx,bgc),this.bgColors.delete(srcIdx);else this.bgColors.delete(dstIdx);let ulc=this.underlineColors.get(srcIdx);if(ulc)this.underlineColors.set(dstIdx,ulc),this.underlineColors.delete(srcIdx);else this.underlineColors.delete(dstIdx);let hl=this.hyperlinks.get(srcIdx);if(hl)this.hyperlinks.set(dstIdx,hl),this.hyperlinks.delete(srcIdx);else this.hyperlinks.delete(dstIdx)}}this.fill(startX,startY,clampedWidth,absDelta,{char:clearCell.char??" ",bg:clearCell.bg??null})}}clone(){let copy=new TerminalBuffer(this.width,this.height);return copy.cells.set(this.cells),copy.chars=[...this.chars],copy.fgColors=new Map(this.fgColors),copy.bgColors=new Map(this.bgColors),copy.underlineColors=new Map(this.underlineColors),copy.hyperlinks=new Map(this.hyperlinks),copy._dirtyRows.fill(0),copy._minDirtyRow=-1,copy._maxDirtyRow=-1,copy}isRowDirty(y){if(y<0||y>=this.height)return!1;return this._dirtyRows[y]!==0}get minDirtyRow(){return this._minDirtyRow}get maxDirtyRow(){return this._maxDirtyRow}resetDirtyRows(){this._dirtyRows.fill(0),this._minDirtyRow=-1,this._maxDirtyRow=-1}markAllRowsDirty(){this._dirtyRows.fill(1),this._minDirtyRow=0,this._maxDirtyRow=this.height-1}cellEquals(x,y,other){if(!this.inBounds(x,y)||!other.inBounds(x,y))return!1;let idx=this.index(x,y),otherIdx=other.index(x,y);if(this.cells[idx]!==other.cells[otherIdx])return!1;if(this.chars[idx]!==other.chars[otherIdx])return!1;let packed=this.cells[idx];if(unpackTrueColorFg(packed)){let a=this.fgColors.get(idx),b=other.fgColors.get(otherIdx);if(!colorEquals(a,b))return!1}if(unpackTrueColorBg(packed)){let a=this.bgColors.get(idx),b=other.bgColors.get(otherIdx);if(!colorEquals(a,b))return!1}let ulA=this.underlineColors.get(idx)??null,ulB=other.underlineColors.get(otherIdx)??null;if(!colorEquals(ulA,ulB))return!1;let hlA=this.hyperlinks.get(idx),hlB=other.hyperlinks.get(otherIdx);if(hlA!==hlB)return!1;return!0}rowMetadataEquals(y,other){if(y<0||y>=this.height||y>=other.height)return!1;let start=y*this.width,otherStart=y*other.width,w=Math.min(this.width,other.width);for(let i=0;i<w;i++)if(this.cells[start+i]!==other.cells[otherStart+i])return!1;return!0}rowCharsEquals(y,other){if(y<0||y>=this.height||y>=other.height)return!1;let start=y*this.width,otherStart=y*other.width,w=Math.min(this.width,other.width);for(let i=0;i<w;i++)if(this.chars[start+i]!==other.chars[otherStart+i])return!1;return!0}rowExtrasEquals(y,other){if(y<0||y>=this.height||y>=other.height)return!1;let start=y*this.width,w=Math.min(this.width,other.width),otherStart=y*other.width;for(let i=0;i<w;i++){let idx=start+i,otherIdx=otherStart+i,packed=this.cells[idx];if((packed&TRUE_COLOR_FG_FLAG)!==0){let a=this.fgColors.get(idx),b=other.fgColors.get(otherIdx);if(!colorEquals(a,b))return!1}if((packed&TRUE_COLOR_BG_FLAG)!==0){let a=this.bgColors.get(idx),b=other.bgColors.get(otherIdx);if(!colorEquals(a,b))return!1}let ulA=this.underlineColors.get(idx)??null,ulB=other.underlineColors.get(otherIdx)??null;if(!colorEquals(ulA,ulB))return!1;let hlA=this.hyperlinks.get(idx),hlB=other.hyperlinks.get(otherIdx);if(hlA!==hlB)return!1}return!0}}function colorEquals(a,b){if(a===b)return!0;if(a===null||a===void 0)return b===null||b===void 0;if(b===null||b===void 0)return!1;if(typeof a==="number")return a===b;if(typeof b==="number")return!1;return a.r===b.r&&a.g===b.g&&a.b===b.b}function cellEquals(a,b){return a.char===b.char&&colorEquals(a.fg,b.fg)&&colorEquals(a.bg,b.bg)&&colorEquals(a.underlineColor,b.underlineColor)&&a.wide===b.wide&&a.continuation===b.continuation&&attrsEquals(a.attrs,b.attrs)&&(a.hyperlink??void 0)===(b.hyperlink??void 0)}function attrsEquals(a,b){return Boolean(a.bold)===Boolean(b.bold)&&Boolean(a.dim)===Boolean(b.dim)&&Boolean(a.italic)===Boolean(b.italic)&&Boolean(a.underline)===Boolean(b.underline)&&(a.underlineStyle??!1)===(b.underlineStyle??!1)&&Boolean(a.blink)===Boolean(b.blink)&&Boolean(a.inverse)===Boolean(b.inverse)&&Boolean(a.hidden)===Boolean(b.hidden)&&Boolean(a.strikethrough)===Boolean(b.strikethrough)}function styleEquals(a,b){if(a===b)return!0;if(!a||!b)return!1;return colorEquals(a.fg,b.fg)&&colorEquals(a.bg,b.bg)&&colorEquals(a.underlineColor,b.underlineColor)&&attrsEquals(a.attrs,b.attrs)&&(a.hyperlink??void 0)===(b.hyperlink??void 0)}function createMutableCell(){return{char:" ",fg:null,bg:null,underlineColor:null,attrs:{},wide:!1,continuation:!1,hyperlink:void 0}}function bufferToText(buffer,options={}){let{trimTrailingWhitespace=!0,trimEmptyLines=!0}=options,lines=[];for(let y=0;y<buffer.height;y++){let line="",strOffset=0,contentEdgeStrOffset=0,contentEdge=trimTrailingWhitespace?getContentEdge(buffer,y):0;for(let x=0;x<buffer.width;x++){if(buffer.isCellContinuation(x,y))continue;if(line+=buffer.getCellChar(x,y),strOffset++,x<contentEdge)contentEdgeStrOffset=strOffset}if(trimTrailingWhitespace){let trimmed=line.trimEnd();line=trimmed.length>=contentEdgeStrOffset?trimmed:line.substring(0,contentEdgeStrOffset)}lines.push(line)}let result=lines.join(`
|
|
9
|
+
`);if(trimEmptyLines){while(lines.length>0&&lines[lines.length-1].length===0)lines.pop();result=lines.join(`
|
|
10
|
+
`)}return result}function getContentEdge(buffer,y){let FLAG_MASK=~(WIDE_FLAG|CONTINUATION_FLAG);for(let x=buffer.width-1;x>=0;x--){if(buffer.isCellContinuation(x,y))continue;if((buffer.getCellAttrs(x,y)&FLAG_MASK)!==0)return x+1;if(buffer.getCellChar(x,y)!==" ")return x+1}return 0}function bufferToStyledText(buffer,options={}){let{trimTrailingWhitespace=!0,trimEmptyLines=!0}=options,lines=[],currentStyle=null,currentHyperlink;for(let y=0;y<buffer.height;y++){let line="";for(let x=0;x<buffer.width;x++){let cell=buffer.getCell(x,y);if(cell.continuation)continue;let cellHyperlink=cell.hyperlink;if(cellHyperlink!==currentHyperlink){if(currentHyperlink)line+=emitHyperlinkClose(currentHyperlink);if(cellHyperlink)line+=emitHyperlinkOpen(cellHyperlink);currentHyperlink=cellHyperlink}let cellStyle={fg:cell.fg,bg:cell.bg,underlineColor:cell.underlineColor,attrs:cell.attrs};if(!styleEquals(currentStyle,cellStyle))line+=styleTransitionCodes(currentStyle,cellStyle),currentStyle=cellStyle;line+=cell.char}if(currentHyperlink)line+=emitHyperlinkClose(currentHyperlink),currentHyperlink=void 0;if(currentStyle&&(currentStyle.bg!==null||hasActiveAttrs(currentStyle.attrs)))line+=styleResetCodes(currentStyle),currentStyle=null;if(trimTrailingWhitespace)line=trimTrailingWhitespacePreservingAnsi(line);lines.push(line)}let result=lines.join(`
|
|
11
|
+
`);if(currentStyle&&(currentStyle.bg!==null||hasActiveAttrs(currentStyle.attrs)))result+=styleResetCodes(currentStyle);if(trimEmptyLines)result=result.replace(/\n+$/,"");return result}function decodeHyperlinkFormat(encoded){if(encoded.charCodeAt(0)===1){let sepIdx=encoded.indexOf("\x02");if(sepIdx>0){let tag=encoded.slice(1,sepIdx),url=encoded.slice(sepIdx+1);if(tag==="c1b")return{url,oscIntro:"",oscClose:"",closeIntro:"",closeTerminator:"\x07"};if(tag==="c1s")return{url,oscIntro:"",oscClose:"",closeIntro:"",closeTerminator:"\x1B\\"};if(tag==="e7b")return{url,oscIntro:"\x1B]",oscClose:"\x1B]",closeIntro:"\x1B]",closeTerminator:"\x07"}}}return{url:encoded,oscIntro:"\x1B]",oscClose:"\x1B]",closeIntro:"\x1B]",closeTerminator:"\x1B\\"}}function emitHyperlinkOpen(encoded){let fmt=decodeHyperlinkFormat(encoded);return`${fmt.oscIntro}8;;${fmt.url}${fmt.closeTerminator}`}function emitHyperlinkClose(encoded){let fmt=decodeHyperlinkFormat(encoded);return`${fmt.closeIntro}8;;${fmt.closeTerminator}`}function colorToCSS(color){if(color===null)return null;if(typeof color==="number")return XTERM_256_PALETTE[color]??null;if(color.r===-1)return null;return`rgb(${color.r},${color.g},${color.b})`}function bufferToHTML(buffer,options={}){let{fontFamily="JetBrains Mono, Menlo, monospace",fontSize=14,theme="dark"}=options,defaultFg=theme==="dark"?"#d4d4d4":"#1e1e1e",defaultBg=theme==="dark"?"#1e1e1e":"#ffffff",htmlLines=[];for(let y=0;y<buffer.height;y++){let lineHTML="",currentStyle=null,spanOpen=!1,linkOpen=!1,currentHyperlink;for(let x=0;x<buffer.width;x++){let cell=buffer.getCell(x,y);if(cell.continuation)continue;let cellHyperlink=cell.hyperlink;if(cellHyperlink!==currentHyperlink){if(linkOpen){if(spanOpen)lineHTML+="</span>",spanOpen=!1;lineHTML+="</a>",linkOpen=!1}if(cellHyperlink)lineHTML+=`<a href="${escapeHTML(cellHyperlink)}">`,linkOpen=!0;currentHyperlink=cellHyperlink}let cellStyle={fg:cell.fg,bg:cell.bg,underlineColor:cell.underlineColor,attrs:cell.attrs};if(!styleEquals(currentStyle,cellStyle)){if(spanOpen)lineHTML+="</span>",spanOpen=!1;let css=styleToCSSProperties(cellStyle,defaultFg,defaultBg);if(css)lineHTML+=`<span style="${css}">`,spanOpen=!0;currentStyle=cellStyle}lineHTML+=escapeHTML(cell.char)}if(spanOpen)lineHTML+="</span>";if(linkOpen)lineHTML+="</a>",currentHyperlink=void 0;htmlLines.push(`<div>${lineHTML}</div>`)}return`<!DOCTYPE html>
|
|
12
|
+
<html>
|
|
13
|
+
<head><meta charset="utf-8"></head>
|
|
14
|
+
<body style="margin:0;padding:0;background:${defaultBg};color:${defaultFg};font-family:${fontFamily};font-size:${fontSize}px;line-height:1.2;white-space:pre">
|
|
15
|
+
${htmlLines.join(`
|
|
16
|
+
`)}
|
|
17
|
+
</body>
|
|
18
|
+
</html>`}function styleToCSSProperties(style,defaultFg,defaultBg){let parts=[],fgColor,bgColor;if(style.attrs.inverse)fgColor=colorToCSS(style.bg)??defaultBg,bgColor=colorToCSS(style.fg)??defaultFg;else fgColor=colorToCSS(style.fg),bgColor=colorToCSS(style.bg);if(fgColor)parts.push(`color:${fgColor}`);if(bgColor)parts.push(`background:${bgColor}`);if(style.attrs.bold)parts.push("font-weight:bold");if(style.attrs.dim)parts.push("opacity:0.5");if(style.attrs.italic)parts.push("font-style:italic");if(style.attrs.hidden)parts.push("visibility:hidden");let decorations=[],underlineStyle=style.attrs.underlineStyle;if(typeof underlineStyle==="string"){let cssStyleMap={single:"solid",double:"double",curly:"wavy",dotted:"dotted",dashed:"dashed"};decorations.push("underline");let cssStyle=cssStyleMap[underlineStyle];if(cssStyle)parts.push(`text-decoration-style:${cssStyle}`);let ulColor=colorToCSS(style.underlineColor??null);if(ulColor)parts.push(`text-decoration-color:${ulColor}`)}else if(style.attrs.underline)decorations.push("underline");if(style.attrs.strikethrough)decorations.push("line-through");if(decorations.length>0)parts.push(`text-decoration:${decorations.join(" ")}`);return parts.length>0?parts.join(";"):null}function escapeHTML(str){if(str===" "||str.length===0)return str;return str.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""")}function hasActiveAttrs(attrs){return!!(attrs.bold||attrs.dim||attrs.italic||attrs.underline||attrs.underlineStyle||attrs.blink||attrs.inverse||attrs.hidden||attrs.strikethrough)}function styleToAnsiCodes(style){let{fg,bg}=style,result="";if(fg!==null)result+=`\x1B[${fgColorCode(fg)}m`;if(bg!==null&&!isDefaultBg(bg))result+=`\x1B[${bgColorCode(bg)}m`;if(style.attrs.bold)result+="\x1B[1m";if(style.attrs.dim)result+="\x1B[2m";if(style.attrs.italic)result+="\x1B[3m";let underlineStyle=style.attrs.underlineStyle;if(typeof underlineStyle==="string"){let subparam={single:1,double:2,curly:3,dotted:4,dashed:5}[underlineStyle];if(subparam!==void 0&&subparam!==0)result+=`\x1B[4:${subparam}m`}else if(style.attrs.underline)result+="\x1B[4m";if(style.attrs.inverse)result+="\x1B[7m";if(style.attrs.strikethrough)result+="\x1B[9m";if(style.underlineColor!==null&&style.underlineColor!==void 0)if(typeof style.underlineColor==="number")result+=`\x1B[58;5;${style.underlineColor}m`;else result+=`\x1B[58;2;${style.underlineColor.r};${style.underlineColor.g};${style.underlineColor.b}m`;return result}function styleTransitionCodes(oldStyle,newStyle){if(!oldStyle)return styleToAnsiCodes(newStyle);if(styleEquals(oldStyle,newStyle))return"";let result="",oa=oldStyle.attrs,na=newStyle.attrs,boldChanged=Boolean(oa.bold)!==Boolean(na.bold),dimChanged=Boolean(oa.dim)!==Boolean(na.dim);if(boldChanged||dimChanged){let boldOff=boldChanged&&!na.bold,dimOff=dimChanged&&!na.dim;if(boldOff||dimOff){if(result+="\x1B[22m",na.bold)result+="\x1B[1m";if(na.dim)result+="\x1B[2m"}else{if(boldChanged&&na.bold)result+="\x1B[1m";if(dimChanged&&na.dim)result+="\x1B[2m"}}if(Boolean(oa.italic)!==Boolean(na.italic))result+=na.italic?"\x1B[3m":"\x1B[23m";let oldUl=Boolean(oa.underline),newUl=Boolean(na.underline),oldUlStyle=oa.underlineStyle??!1,newUlStyle=na.underlineStyle??!1;if(oldUl!==newUl||oldUlStyle!==newUlStyle)if(typeof na.underlineStyle==="string"){let sub={single:1,double:2,curly:3,dotted:4,dashed:5}[na.underlineStyle];if(sub!==void 0&&sub!==0)result+=`\x1B[4:${sub}m`;else if(newUl)result+="\x1B[4m";else result+="\x1B[24m"}else if(newUl)result+="\x1B[4m";else result+="\x1B[24m";if(Boolean(oa.inverse)!==Boolean(na.inverse))result+=na.inverse?"\x1B[7m":"\x1B[27m";if(Boolean(oa.strikethrough)!==Boolean(na.strikethrough))result+=na.strikethrough?"\x1B[9m":"\x1B[29m";if(!colorEquals(oldStyle.fg,newStyle.fg))if(newStyle.fg===null)result+="\x1B[39m";else result+=`\x1B[${fgColorCode(newStyle.fg)}m`;if(!colorEquals(oldStyle.bg,newStyle.bg))if(newStyle.bg===null)result+="\x1B[49m";else result+=`\x1B[${bgColorCode(newStyle.bg)}m`;if(!colorEquals(oldStyle.underlineColor,newStyle.underlineColor))if(newStyle.underlineColor===null||newStyle.underlineColor===void 0)result+="\x1B[59m";else if(typeof newStyle.underlineColor==="number")result+=`\x1B[58;5;${newStyle.underlineColor}m`;else result+=`\x1B[58;2;${newStyle.underlineColor.r};${newStyle.underlineColor.g};${newStyle.underlineColor.b}m`;return result}function styleResetCodes(style){let result="";if(style.attrs.underline||style.attrs.underlineStyle)result+="\x1B[24m";if(style.attrs.bold||style.attrs.dim)result+="\x1B[22m";if(style.attrs.italic)result+="\x1B[23m";if(style.attrs.strikethrough)result+="\x1B[29m";if(style.attrs.inverse)result+="\x1B[27m";if(style.bg!==null&&!isDefaultBg(style.bg))result+="\x1B[49m";if(style.fg!==null)result+="\x1B[39m";if(style.underlineColor!==null&&style.underlineColor!==void 0)result+="\x1B[59m";return result}function trimTrailingWhitespacePreservingAnsi(str){let lastContentIndex=-1,i=0;while(i<str.length){if(str[i]==="\x1B"){if(str[i+1]==="]"){let end2=-1;for(let j=i+2;j<str.length;j++){if(str[j]==="\x07"){end2=j;break}if(str[j]==="\x1B"&&str[j+1]==="\\"){end2=j+1;break}}if(end2!==-1){lastContentIndex=end2,i=end2+1;continue}}let end=str.indexOf("m",i);if(end!==-1){lastContentIndex=end,i=end+1;continue}}if(str[i]!==" "&&str[i]!=="\t")lastContentIndex=i;i++}return str.slice(0,lastContentIndex+1)}var DEFAULT_BG,ATTR_BOLD=65536,ATTR_DIM=131072,ATTR_ITALIC=262144,ATTR_BLINK=524288,ATTR_INVERSE=1048576,ATTR_HIDDEN=2097152,ATTR_STRIKETHROUGH=4194304,UNDERLINE_STYLE_SHIFT=24,UNDERLINE_STYLE_MASK,WIDE_FLAG=134217728,CONTINUATION_FLAG=268435456,TRUE_COLOR_FG_FLAG=536870912,TRUE_COLOR_BG_FLAG=1073741824,VISIBLE_SPACE_ATTR_MASK,EMPTY_CELL,EMPTY_ATTRS,XTERM_256_PALETTE;var init_buffer=__esm(()=>{DEFAULT_BG=Object.freeze({r:-1,g:-1,b:-1});UNDERLINE_STYLE_MASK=7<<UNDERLINE_STYLE_SHIFT,VISIBLE_SPACE_ATTR_MASK=ATTR_INVERSE|ATTR_STRIKETHROUGH|UNDERLINE_STYLE_MASK,EMPTY_CELL={char:" ",fg:null,bg:null,underlineColor:null,attrs:{},wide:!1,continuation:!1,hyperlink:void 0},EMPTY_ATTRS=Object.freeze({});XTERM_256_PALETTE=(()=>{let palette=Array(256),standard=["#000000","#cd0000","#00cd00","#cdcd00","#0000ee","#cd00cd","#00cdcd","#e5e5e5"],bright=["#7f7f7f","#ff0000","#00ff00","#ffff00","#5c5cff","#ff00ff","#00ffff","#ffffff"];for(let i=0;i<8;i++)palette[i]=standard[i],palette[i+8]=bright[i];let cubeValues=[0,95,135,175,215,255];for(let i=0;i<216;i++){let r=cubeValues[Math.floor(i/36)],g=cubeValues[Math.floor(i%36/6)],b=cubeValues[i%6];palette[16+i]="#"+r.toString(16).padStart(2,"0")+g.toString(16).padStart(2,"0")+b.toString(16).padStart(2,"0")}for(let i=0;i<24;i++){let hex=(8+i*10).toString(16).padStart(2,"0");palette[232+i]="#"+hex+hex+hex}return palette})()});function textSized(text,width){return`\x1B]66;w=${width};${text}\x07`}function isPrivateUseArea(cp){return cp>=57344&&cp<=63743||cp>=983040&&cp<=1048573||cp>=1048576&&cp<=1114109}var init_text_sizing=()=>{};import sliceAnsi from"slice-ansi";import stringWidth2 from"string-width";class DisplayWidthCache{cache=new Map;maxSize;constructor(maxSize=1000){this.maxSize=maxSize}get(text){let cached=this.cache.get(text);if(cached!==void 0)this.cache.delete(text),this.cache.set(text,cached);return cached}set(text,width){if(this.cache.size>=this.maxSize){let firstKey=this.cache.keys().next().value;if(firstKey!==void 0)this.cache.delete(firstKey)}this.cache.set(text,width)}clear(){this.cache.clear()}}function runWithMeasurer(measurer,fn){let prev=_scopedMeasurer;_scopedMeasurer=measurer;try{return fn()}finally{_scopedMeasurer=prev}}function isTextSizingEnabled(){if(_scopedMeasurer)return _scopedMeasurer.textSizingEnabled;return DEFAULT_TEXT_SIZING_ENABLED}function stripOsc8ForSlice(text){return text.replace(OSC8_RE,"")}function createWidthMeasurer(caps={}){let textEmojiWide=caps.textEmojiWide??!0,textSizingEnabled=caps.textSizingEnabled??!1,cache=new DisplayWidthCache(1e4);function measuredGraphemeWidth(grapheme){let width=stringWidth2(grapheme);if(width!==1)return width;if(textEmojiWide&&isTextPresentationEmoji(grapheme))return 2;if(textSizingEnabled){let cp=grapheme.codePointAt(0);if(cp!==void 0&&isPrivateUseArea(cp))return 2}return width}function measuredDisplayWidth(text){let cached=cache.get(text);if(cached!==void 0)return cached;let width;if(!(MAY_CONTAIN_TEXT_EMOJI.test(text)||textSizingEnabled&&MAY_CONTAIN_PUA.test(text)))width=stringWidth2(text);else{let stripped=stripAnsi3(text);width=0;for(let grapheme of splitGraphemes(stripped))width+=measuredGraphemeWidth(grapheme)}return cache.set(text,width),width}function measuredDisplayWidthAnsi(text){return measuredDisplayWidth(stripAnsi3(text))}function measuredSliceByWidth(text,maxWidth){if(hasAnsi(text))return sliceAnsi(stripOsc8ForSlice(text),0,maxWidth);let width=0,result="",graphemes=splitGraphemes(text);for(let grapheme of graphemes){let gWidth=measuredGraphemeWidth(grapheme);if(width+gWidth>maxWidth)break;result+=grapheme,width+=gWidth}return result}function measuredSliceByWidthFromEnd(text,maxWidth){if(measuredDisplayWidthAnsi(text)<=maxWidth)return text;if(hasAnsi(text)){let cleaned=stripOsc8ForSlice(text),startIndex=measuredDisplayWidthAnsi(cleaned)-maxWidth;return sliceAnsi(cleaned,startIndex)}let graphemes=splitGraphemes(text),width=0,startIdx=graphemes.length;for(let i=graphemes.length-1;i>=0;i--){let gWidth=measuredGraphemeWidth(graphemes[i]);if(width+gWidth>maxWidth)break;width+=gWidth,startIdx=i}return graphemes.slice(startIdx).join("")}function measuredWrapText(text,width,trim,hard){return wrapTextWithMeasurer(text,width,measurer,trim??!1,hard??!1)}let measurer={textEmojiWide,textSizingEnabled,displayWidth:measuredDisplayWidth,displayWidthAnsi:measuredDisplayWidthAnsi,graphemeWidth:measuredGraphemeWidth,wrapText:measuredWrapText,sliceByWidth:measuredSliceByWidth,sliceByWidthFromEnd:measuredSliceByWidthFromEnd};return measurer}function getDefaultMeasurer(){if(!_defaultMeasurer)_defaultMeasurer=createWidthMeasurer();return _defaultMeasurer}function splitGraphemes(text){return[...segmenter.segment(text)].map((s)=>s.segment)}function isTextPresentationEmoji(grapheme){let cp=grapheme.codePointAt(0);if(cp===void 0)return!1;let cached=textPresentationEmojiCache.get(cp);if(cached!==void 0)return cached;if(String.fromCodePoint(cp).length!==grapheme.length)return textPresentationEmojiCache.set(cp,!1),!1;let isExtPict=TEXT_PRESENTATION_EMOJI_REGEX.test(grapheme),isEmojiPres=EMOJI_PRESENTATION_REGEX.test(grapheme);if(!isExtPict||isEmojiPres)return textPresentationEmojiCache.set(cp,!1),!1;let withVs16=grapheme+"️",result=RGI_EMOJI_REGEX.test(withVs16);return textPresentationEmojiCache.set(cp,result),result}function ensureEmojiPresentation(char){if(char.includes("️"))return char;if(isTextPresentationEmoji(char))return char+"️";return char}function displayWidth(text){if(_scopedMeasurer)return _scopedMeasurer.displayWidth(text);let cached=displayWidthCache.get(text);if(cached!==void 0)return cached;let width;if(!(MAY_CONTAIN_TEXT_EMOJI.test(text)||DEFAULT_TEXT_SIZING_ENABLED&&MAY_CONTAIN_PUA.test(text)))width=stringWidth2(text);else{let stripped=stripAnsi3(text);width=0;for(let grapheme of splitGraphemes(stripped))width+=graphemeWidth(grapheme)}return displayWidthCache.set(text,width),width}function graphemeWidth(grapheme){if(_scopedMeasurer)return _scopedMeasurer.graphemeWidth(grapheme);let width=stringWidth2(grapheme);if(width!==1)return width;if(DEFAULT_TEXT_EMOJI_WIDE&&isTextPresentationEmoji(grapheme))return 2;if(DEFAULT_TEXT_SIZING_ENABLED){let cp=grapheme.codePointAt(0);if(cp!==void 0&&isPrivateUseArea(cp))return 2}return width}function isWordBoundary(grapheme){return grapheme===" "||grapheme==="-"||grapheme==="\t"}function isBreakBeforeOperatorWith(graphemes,spaceIndex,gWidthFn){let j=spaceIndex+1;while(j<graphemes.length&&gWidthFn(graphemes[j])===0)j++;if(j>=graphemes.length)return!1;let nextChar=graphemes[j];if(gWidthFn(nextChar)!==1)return!1;if(/^[a-zA-Z0-9\s]$/.test(nextChar))return!1;let k=j+1;while(k<graphemes.length&&gWidthFn(graphemes[k])===0)k++;if(k>=graphemes.length)return!1;return graphemes[k]===" "}function canBreakAnywhere(grapheme){return isCJK(grapheme)}function splitGraphemesAnsiAware(text){if(!hasAnsi(text))return splitGraphemes(text);let result=[],pos=0;while(pos<text.length){if(text[pos]==="\x1B"){let remaining=text.slice(pos),csi=remaining.match(ANSI_CSI_RE);if(csi){result.push(csi[0]),pos+=csi[0].length;continue}let osc=remaining.match(ANSI_OSC_RE);if(osc){result.push(osc[0]),pos+=osc[0].length;continue}let single=remaining.match(ANSI_SINGLE_RE);if(single){result.push(single[0]),pos+=single[0].length;continue}}let nextEsc=text.indexOf("\x1B",pos+1),chunk=nextEsc===-1?text.slice(pos):text.slice(pos,nextEsc);for(let g of splitGraphemes(chunk))result.push(g);pos+=chunk.length}return result}function wrapText(text,width,preserveNewlines=!0,trim=!1){return wrapTextWithMeasurer(text,width,_scopedMeasurer??void 0,trim,!1,preserveNewlines)}function wrapTextWithMeasurer(text,width,measurer,trim=!1,_hard=!1,preserveNewlines=!0){if(width<=0)return[];let gWidthFn=measurer?measurer.graphemeWidth.bind(measurer):graphemeWidth,lines=[],inputLines=preserveNewlines?text.split(`
|
|
19
|
+
`):[text.replace(/\n/g," ")];for(let line of inputLines){if(line===""){lines.push("");continue}let graphemes=splitGraphemesAnsiAware(line),currentLine="",currentWidth=0,isFirstLineOfParagraph=!0,lastBreakIndex=-1,lastBreakWidth=0,lastBreakGraphemeIndex=-1;for(let i=0;i<graphemes.length;i++){let grapheme=graphemes[i],gWidth=gWidthFn(grapheme);if(gWidth===0){currentLine+=grapheme;continue}if(trim&&!isFirstLineOfParagraph&¤tWidth===0&&isWordBoundary(grapheme)&&grapheme!=="-")continue;if(isWordBoundary(grapheme)){if(currentWidth+gWidth<=width){if(currentLine+=grapheme,currentWidth+=gWidth,grapheme!==" "||!isBreakBeforeOperatorWith(graphemes,i,gWidthFn))lastBreakIndex=currentLine.length,lastBreakWidth=currentWidth,lastBreakGraphemeIndex=i+1;continue}if(currentLine){let lineToAdd=currentLine;if(trim)lineToAdd=lineToAdd.trimEnd();lines.push(lineToAdd),isFirstLineOfParagraph=!1}currentLine="",currentWidth=0,lastBreakIndex=-1,lastBreakWidth=0,lastBreakGraphemeIndex=-1;continue}else if(canBreakAnywhere(grapheme))lastBreakIndex=currentLine.length,lastBreakWidth=currentWidth,lastBreakGraphemeIndex=i;if(currentWidth+gWidth>width)if(lastBreakIndex>0){let lineToAdd=currentLine.slice(0,lastBreakIndex);if(trim)lineToAdd=lineToAdd.trimEnd();lines.push(lineToAdd),isFirstLineOfParagraph=!1,currentLine=currentLine.slice(lastBreakIndex),currentWidth=currentWidth-lastBreakWidth,i=lastBreakGraphemeIndex-1,currentLine="",currentWidth=0,lastBreakIndex=-1,lastBreakWidth=0,lastBreakGraphemeIndex=-1}else{if(currentLine){if(trim)currentLine=currentLine.trimEnd();lines.push(currentLine),isFirstLineOfParagraph=!1}currentLine=grapheme,currentWidth=gWidth,lastBreakIndex=-1,lastBreakWidth=0,lastBreakGraphemeIndex=-1}else currentLine+=grapheme,currentWidth+=gWidth}if(currentLine)lines.push(currentLine)}if(text.includes("\x1B]8;;"))fixOsc8AcrossWrappedLines(lines);return lines}function fixOsc8AcrossWrappedLines(lines){let activeHref=null;for(let i=0;i<lines.length;i++){let line=lines[i];if(activeHref!==null)line=`\x1B]8;;${activeHref}\x1B\\`+line;let lineHref=activeHref,osc8Matches=line.matchAll(/\x1b\]8;;([^\x07\x1b]*)(?:\x07|\x1b\\)/g);for(let m of osc8Matches)lineHref=m[1]===""?null:m[1];if(lineHref!==null)line+="\x1B]8;;\x1B\\";lines[i]=line,activeHref=lineHref}}function sliceByWidth(text,maxWidth){return(_scopedMeasurer??getDefaultMeasurer()).sliceByWidth(text,maxWidth)}function sliceByWidthFromEnd(text,maxWidth){return(_scopedMeasurer??getDefaultMeasurer()).sliceByWidthFromEnd(text,maxWidth)}function stripAnsi3(text){return text.replace(/\x1b\[[0-9;:?]*[A-Za-z]/g,"").replace(/\x9b[0-9;:?]*[A-Za-z]/g,"").replace(/\x1b\][^\x07\x1b]*(?:\x07|\x1b\\)/g,"").replace(/\x9d[^\x07\x1b\x9c]*(?:\x07|\x1b\\|\x9c)/g,"").replace(/\x1b[DME78]/g,"").replace(/\x1b\(B/g,"")}function displayWidthAnsi(text){return displayWidth(stripAnsi3(text))}function parseUnderlineStyle(subparam){switch(subparam){case 0:return!1;case 1:return"single";case 2:return"double";case 3:return"curly";case 4:return"dotted";case 5:return"dashed";default:return"single"}}function parseAnsiText(text){let segments=[],sanitizedText=text.replace(/\x1b\[[0-9;:]*[A-LN-Za-ln-z@`]/g,"").replace(/\x9b[0-9;:]*[A-LN-Za-ln-z@`]/g,""),oscPattern=/(?:\x1b\]|\x9d)8;;([^\x07\x1b\x9c]*)(?:\x07|\x1b\\|\x9c)/g,currentHyperlink,hyperlinkRanges=[],rangeStart=-1,cleaned="",oscMatch,oscLastIndex=0;while((oscMatch=oscPattern.exec(sanitizedText))!==null){cleaned+=sanitizedText.slice(oscLastIndex,oscMatch.index);let url=oscMatch[1],matchStr=oscMatch[0],isC1=matchStr.charCodeAt(0)===157,lastChar=matchStr.charCodeAt(matchStr.length-1),isBel=lastChar===7,isSt9c=lastChar===156;if(url===""){if(currentHyperlink&&rangeStart>=0)hyperlinkRanges.push({start:rangeStart,end:cleaned.length,url:currentHyperlink});currentHyperlink=void 0,rangeStart=-1}else{if(currentHyperlink&&rangeStart>=0)hyperlinkRanges.push({start:rangeStart,end:cleaned.length,url:currentHyperlink});let encodedUrl=url;if(isC1&&(isBel||isSt9c))encodedUrl=`\x01c1b\x02${url}`;else if(isC1)encodedUrl=`\x01c1s\x02${url}`;else if(isBel)encodedUrl=`\x01e7b\x02${url}`;currentHyperlink=encodedUrl,rangeStart=cleaned.length}oscLastIndex=oscMatch.index+oscMatch[0].length}if(cleaned+=sanitizedText.slice(oscLastIndex),currentHyperlink&&rangeStart>=0)hyperlinkRanges.push({start:rangeStart,end:cleaned.length,url:currentHyperlink});let processText=hyperlinkRanges.length>0?cleaned:sanitizedText,ansiPattern=/(?:\x1b\[|\x9b)([0-9;:]*)m/g,currentStyle={},lastIndex=0,match;function getHyperlinkAt(pos){for(let range of hyperlinkRanges)if(pos>=range.start&&pos<range.end)return range.url;return}while((match=ansiPattern.exec(processText))!==null){if(match.index>lastIndex){let content=processText.slice(lastIndex,match.index);if(content.length>0)if(hyperlinkRanges.length>0){let segStart=0;for(let ci=0;ci<content.length;ci++){let hl=getHyperlinkAt(lastIndex+ci),prevHl=ci>0?getHyperlinkAt(lastIndex+ci-1):void 0;if(ci>0&&hl!==prevHl){let sub2=content.slice(segStart,ci);if(sub2.length>0){let seg={text:sub2,...currentStyle};if(prevHl)seg.hyperlink=prevHl;segments.push(seg)}segStart=ci}}let sub=content.slice(segStart);if(sub.length>0){let hl=getHyperlinkAt(lastIndex+segStart),seg={text:sub,...currentStyle};if(hl)seg.hyperlink=hl;segments.push(seg)}}else segments.push({text:content,...currentStyle})}let params=match[1].split(";");for(let i=0;i<params.length;i++){let param=params[i];if(param.includes(":")){let subparts=param.split(":").map((s)=>s===""?0:Number(s)),mainCode=subparts[0];if(mainCode===4){let styleCode=subparts[1]??1;currentStyle.underlineStyle=parseUnderlineStyle(styleCode),currentStyle.underline=currentStyle.underlineStyle!==!1}else if(mainCode===58){if(subparts[1]===5&&subparts[2]!==void 0)currentStyle.underlineColor=subparts[2];else if(subparts[1]===2){let r=subparts[3]??subparts[2]??0,g=subparts[4]??subparts[3]??0,b=subparts[5]??subparts[4]??0;currentStyle.underlineColor=16777216|(r&255)<<16|(g&255)<<8|b&255}}else if(mainCode===38){if(subparts[1]===5&&subparts[2]!==void 0)currentStyle.fg=subparts[2],currentStyle.colonFg=!0;else if(subparts[1]===2){let r=subparts[3]??subparts[2]??0,g=subparts[4]??subparts[3]??0,b=subparts[5]??subparts[4]??0;currentStyle.fg=16777216|(r&255)<<16|(g&255)<<8|b&255,currentStyle.colonFg=!0}}else if(mainCode===48){if(subparts[1]===5&&subparts[2]!==void 0)currentStyle.bg=subparts[2],currentStyle.colonBg=!0;else if(subparts[1]===2){let r=subparts[3]??subparts[2]??0,g=subparts[4]??subparts[3]??0,b=subparts[5]??subparts[4]??0;currentStyle.bg=16777216|(r&255)<<16|(g&255)<<8|b&255,currentStyle.colonBg=!0}}continue}let code=Number(param);switch(code){case 0:currentStyle={};break;case 1:currentStyle.bold=!0;break;case 2:currentStyle.dim=!0;break;case 3:currentStyle.italic=!0;break;case 4:currentStyle.underline=!0,currentStyle.underlineStyle="single";break;case 7:currentStyle.inverse=!0;break;case 22:currentStyle.bold=!1,currentStyle.dim=!1;break;case 23:currentStyle.italic=!1;break;case 24:currentStyle.underline=!1,currentStyle.underlineStyle=!1;break;case 27:currentStyle.inverse=!1;break;case 30:case 31:case 32:case 33:case 34:case 35:case 36:case 37:currentStyle.fg=code;break;case 38:{let nextParams=params.slice(i+1).map(Number);if(currentStyle.colonFg=void 0,nextParams[0]===5&&nextParams[1]!==void 0)currentStyle.fg=nextParams[1],i+=2;else if(nextParams[0]===2&&nextParams[3]!==void 0)currentStyle.fg=16777216|(nextParams[1]&255)<<16|(nextParams[2]&255)<<8|nextParams[3]&255,i+=4;break}case 39:currentStyle.fg=null;break;case 40:case 41:case 42:case 43:case 44:case 45:case 46:case 47:currentStyle.bg=code;break;case 48:{let nextParams=params.slice(i+1).map(Number);if(currentStyle.colonBg=void 0,nextParams[0]===5&&nextParams[1]!==void 0)currentStyle.bg=nextParams[1],i+=2;else if(nextParams[0]===2&&nextParams[3]!==void 0)currentStyle.bg=16777216|(nextParams[1]&255)<<16|(nextParams[2]&255)<<8|nextParams[3]&255,i+=4;break}case 49:currentStyle.bg=null;break;case 58:{let nextParams=params.slice(i+1).map(Number);if(nextParams[0]===5&&nextParams[1]!==void 0)currentStyle.underlineColor=nextParams[1],i+=2;else if(nextParams[0]===2&&nextParams[3]!==void 0)currentStyle.underlineColor=16777216|(nextParams[1]&255)<<16|(nextParams[2]&255)<<8|nextParams[3]&255,i+=4;break}case 59:currentStyle.underlineColor=null;break;case 90:case 91:case 92:case 93:case 94:case 95:case 96:case 97:currentStyle.fg=code;break;case 100:case 101:case 102:case 103:case 104:case 105:case 106:case 107:currentStyle.bg=code;break;case BG_OVERRIDE_CODE:currentStyle.bgOverride=!0;break}}lastIndex=match.index+match[0].length}if(lastIndex<processText.length){let content=processText.slice(lastIndex);if(content.length>0)if(hyperlinkRanges.length>0){let segStart=0;for(let ci=0;ci<content.length;ci++){let hl=getHyperlinkAt(lastIndex+ci),prevHl=ci>0?getHyperlinkAt(lastIndex+ci-1):void 0;if(ci>0&&hl!==prevHl){let sub2=content.slice(segStart,ci);if(sub2.length>0){let seg={text:sub2,...currentStyle};if(prevHl)seg.hyperlink=prevHl;segments.push(seg)}segStart=ci}}let sub=content.slice(segStart);if(sub.length>0){let hl=getHyperlinkAt(lastIndex+segStart),seg={text:sub,...currentStyle};if(hl)seg.hyperlink=hl;segments.push(seg)}}else segments.push({text:content,...currentStyle})}return segments}function hasAnsi(text){return ANSI_TEST_REGEX.test(text)}function measureText(text){let lines=text.split(`
|
|
20
|
+
`),maxWidth=0;for(let line of lines){let lineWidth=displayWidth(line);if(lineWidth>maxWidth)maxWidth=lineWidth}return{width:maxWidth,height:lines.length}}function getFirstCodePoint(str){return str.codePointAt(0)??0}function isCJK(grapheme){let cp=getFirstCodePoint(grapheme);return CHAR_RANGES.isCJK(cp)||CHAR_RANGES.isJapaneseKana(cp)||CHAR_RANGES.isHangul(cp)}var segmenter,displayWidthCache,DEFAULT_TEXT_EMOJI_WIDE=!0,DEFAULT_TEXT_SIZING_ENABLED=!1,_scopedMeasurer=null,OSC8_RE,_defaultMeasurer,TEXT_PRESENTATION_EMOJI_REGEX,EMOJI_PRESENTATION_REGEX,RGI_EMOJI_REGEX,textPresentationEmojiCache,MAY_CONTAIN_TEXT_EMOJI,MAY_CONTAIN_PUA,ANSI_CSI_RE,ANSI_OSC_RE,ANSI_SINGLE_RE,ANSI_TEST_REGEX,CHAR_RANGES;var init_unicode=__esm(()=>{init_ansi();init_buffer();init_text_sizing();segmenter=new Intl.Segmenter(void 0,{granularity:"grapheme"});displayWidthCache=new DisplayWidthCache(1e4);OSC8_RE=/\x1b\]8;;[^\x07\x1b]*(?:\x07|\x1b\\)/g;TEXT_PRESENTATION_EMOJI_REGEX=/^\p{Extended_Pictographic}$/u,EMOJI_PRESENTATION_REGEX=/^\p{Emoji_Presentation}$/u,RGI_EMOJI_REGEX=/^\p{RGI_Emoji}$/v,textPresentationEmojiCache=new Map;MAY_CONTAIN_TEXT_EMOJI=/[\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26A7\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]/,MAY_CONTAIN_PUA=/[\uE000-\uF8FF]/;ANSI_CSI_RE=/^\x1b\[[0-9;:?]*[A-Za-z]/,ANSI_OSC_RE=/^\x1b\][^\x07\x1b]*(?:\x07|\x1b\\)/,ANSI_SINGLE_RE=/^\x1b[DME78(B]/;ANSI_TEST_REGEX=/\x1b(?:\[[0-9;:]*[A-Za-z]|\])|\x9b[\x30-\x3f]*[\x40-\x7e]|\x9d/;CHAR_RANGES={isBasicLatin:(cp)=>cp>=32&&cp<=127,isCJK:(cp)=>cp>=19968&&cp<=40959||cp>=13312&&cp<=19903||cp>=131072&&cp<=173791||cp>=63744&&cp<=64255||cp>=194560&&cp<=195103,isJapaneseKana:(cp)=>cp>=12352&&cp<=12447||cp>=12448&&cp<=12543,isHangul:(cp)=>cp>=44032&&cp<=55203||cp>=4352&&cp<=4607,isEmoji:(cp)=>cp>=128512&&cp<=128591||cp>=127744&&cp<=128511||cp>=128640&&cp<=128767||cp>=128768&&cp<=128895||cp>=129280&&cp<=129535||cp>=9728&&cp<=9983||cp>=9984&&cp<=10175}});import{createContext}from"react";var TermContext,NodeContext,StdoutContext,StderrContext,RuntimeContext,FocusManagerContext;var init_context=__esm(()=>{TermContext=createContext(null),NodeContext=createContext(null),StdoutContext=createContext(null),StderrContext=createContext(null),RuntimeContext=createContext(null),FocusManagerContext=createContext(null)});var YGEnums,ALIGN_AUTO,ALIGN_FLEX_START,ALIGN_CENTER,ALIGN_FLEX_END,ALIGN_STRETCH,ALIGN_BASELINE,ALIGN_SPACE_BETWEEN,ALIGN_SPACE_AROUND,DIMENSION_WIDTH,DIMENSION_HEIGHT,DIRECTION_INHERIT,DIRECTION_LTR,DIRECTION_RTL,DISPLAY_FLEX,DISPLAY_NONE,EDGE_LEFT,EDGE_TOP,EDGE_RIGHT,EDGE_BOTTOM,EDGE_START,EDGE_END,EDGE_HORIZONTAL,EDGE_VERTICAL,EDGE_ALL,EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS,EXPERIMENTAL_FEATURE_ABSOLUTE_PERCENTAGE_AGAINST_PADDING_EDGE,EXPERIMENTAL_FEATURE_FIX_ABSOLUTE_TRAILING_COLUMN_MARGIN,FLEX_DIRECTION_COLUMN,FLEX_DIRECTION_COLUMN_REVERSE,FLEX_DIRECTION_ROW,FLEX_DIRECTION_ROW_REVERSE,GUTTER_COLUMN,GUTTER_ROW,GUTTER_ALL,JUSTIFY_FLEX_START,JUSTIFY_CENTER,JUSTIFY_FLEX_END,JUSTIFY_SPACE_BETWEEN,JUSTIFY_SPACE_AROUND,JUSTIFY_SPACE_EVENLY,LOG_LEVEL_ERROR,LOG_LEVEL_WARN,LOG_LEVEL_INFO,LOG_LEVEL_DEBUG,LOG_LEVEL_VERBOSE,LOG_LEVEL_FATAL,MEASURE_MODE_UNDEFINED,MEASURE_MODE_EXACTLY,MEASURE_MODE_AT_MOST,NODE_TYPE_DEFAULT,NODE_TYPE_TEXT,OVERFLOW_VISIBLE,OVERFLOW_HIDDEN,OVERFLOW_SCROLL,POSITION_TYPE_STATIC,POSITION_TYPE_RELATIVE,POSITION_TYPE_ABSOLUTE,PRINT_OPTIONS_LAYOUT,PRINT_OPTIONS_STYLE,PRINT_OPTIONS_CHILDREN,UNIT_UNDEFINED,UNIT_POINT,UNIT_PERCENT,UNIT_AUTO,WRAP_NO_WRAP,WRAP_WRAP,WRAP_WRAP_REVERSE,wrapAsm=(E)=>{function _(E2,_2,T2){let N2=E2[_2];E2[_2]=function(...E3){return T2.call(this,N2,...E3)}}for(let T2 of["setPosition","setMargin","setFlexBasis","setWidth","setHeight","setMinWidth","setMinHeight","setMaxWidth","setMaxHeight","setPadding"]){let N2={[YGEnums.UNIT_POINT]:E.Node.prototype[T2],[YGEnums.UNIT_PERCENT]:E.Node.prototype[`${T2}Percent`],[YGEnums.UNIT_AUTO]:E.Node.prototype[`${T2}Auto`]};_(E.Node.prototype,T2,function(E2,..._2){let I,L,O=_2.pop();if(O==="auto")I=YGEnums.UNIT_AUTO,L=void 0;else if(typeof O=="object")I=O.unit,L=O.valueOf();else if(I=typeof O=="string"&&O.endsWith("%")?YGEnums.UNIT_PERCENT:YGEnums.UNIT_POINT,L=parseFloat(O),!Number.isNaN(O)&&Number.isNaN(L))throw Error(`Invalid value ${O} for ${T2}`);if(!N2[I])throw Error(`Failed to execute "${T2}": Unsupported unit '${O}'`);return L!==void 0?N2[I].call(this,..._2,L):N2[I].call(this,..._2)})}function T(_2){return E.MeasureCallback.implement({measure:(...E2)=>{let{width:T2,height:N2}=_2(...E2);return{width:T2??NaN,height:N2??NaN}}})}function N(_2){return E.DirtiedCallback.implement({dirtied:_2})}return _(E.Node.prototype,"setMeasureFunc",function(E2,_2){return _2?E2.call(this,T(_2)):this.unsetMeasureFunc()}),_(E.Node.prototype,"setDirtiedFunc",function(E2,_2){E2.call(this,N(_2))}),_(E.Config.prototype,"free",function(){E.Config.destroy(this)}),_(E.Node,"create",(_2,T2)=>T2?E.Node.createWithConfig(T2):E.Node.createDefault()),_(E.Node.prototype,"free",function(){E.Node.destroy(this)}),_(E.Node.prototype,"freeRecursive",function(){for(let E2=0,_2=this.getChildCount();E2<_2;++E2)this.getChild(0).freeRecursive();this.free()}),_(E.Node.prototype,"calculateLayout",function(E2,_2=NaN,T2=NaN,N2=YGEnums.DIRECTION_LTR){return E2.call(this,_2,T2,N2)}),{Config:E.Config,Node:E.Node,...YGEnums}};var init_wrapAsm_f766f97f=__esm(()=>{YGEnums={},ALIGN_AUTO=YGEnums.ALIGN_AUTO=0,ALIGN_FLEX_START=YGEnums.ALIGN_FLEX_START=1,ALIGN_CENTER=YGEnums.ALIGN_CENTER=2,ALIGN_FLEX_END=YGEnums.ALIGN_FLEX_END=3,ALIGN_STRETCH=YGEnums.ALIGN_STRETCH=4,ALIGN_BASELINE=YGEnums.ALIGN_BASELINE=5,ALIGN_SPACE_BETWEEN=YGEnums.ALIGN_SPACE_BETWEEN=6,ALIGN_SPACE_AROUND=YGEnums.ALIGN_SPACE_AROUND=7,DIMENSION_WIDTH=YGEnums.DIMENSION_WIDTH=0,DIMENSION_HEIGHT=YGEnums.DIMENSION_HEIGHT=1,DIRECTION_INHERIT=YGEnums.DIRECTION_INHERIT=0,DIRECTION_LTR=YGEnums.DIRECTION_LTR=1,DIRECTION_RTL=YGEnums.DIRECTION_RTL=2,DISPLAY_FLEX=YGEnums.DISPLAY_FLEX=0,DISPLAY_NONE=YGEnums.DISPLAY_NONE=1,EDGE_LEFT=YGEnums.EDGE_LEFT=0,EDGE_TOP=YGEnums.EDGE_TOP=1,EDGE_RIGHT=YGEnums.EDGE_RIGHT=2,EDGE_BOTTOM=YGEnums.EDGE_BOTTOM=3,EDGE_START=YGEnums.EDGE_START=4,EDGE_END=YGEnums.EDGE_END=5,EDGE_HORIZONTAL=YGEnums.EDGE_HORIZONTAL=6,EDGE_VERTICAL=YGEnums.EDGE_VERTICAL=7,EDGE_ALL=YGEnums.EDGE_ALL=8,EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS=YGEnums.EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS=0,EXPERIMENTAL_FEATURE_ABSOLUTE_PERCENTAGE_AGAINST_PADDING_EDGE=YGEnums.EXPERIMENTAL_FEATURE_ABSOLUTE_PERCENTAGE_AGAINST_PADDING_EDGE=1,EXPERIMENTAL_FEATURE_FIX_ABSOLUTE_TRAILING_COLUMN_MARGIN=YGEnums.EXPERIMENTAL_FEATURE_FIX_ABSOLUTE_TRAILING_COLUMN_MARGIN=2,FLEX_DIRECTION_COLUMN=YGEnums.FLEX_DIRECTION_COLUMN=0,FLEX_DIRECTION_COLUMN_REVERSE=YGEnums.FLEX_DIRECTION_COLUMN_REVERSE=1,FLEX_DIRECTION_ROW=YGEnums.FLEX_DIRECTION_ROW=2,FLEX_DIRECTION_ROW_REVERSE=YGEnums.FLEX_DIRECTION_ROW_REVERSE=3,GUTTER_COLUMN=YGEnums.GUTTER_COLUMN=0,GUTTER_ROW=YGEnums.GUTTER_ROW=1,GUTTER_ALL=YGEnums.GUTTER_ALL=2,JUSTIFY_FLEX_START=YGEnums.JUSTIFY_FLEX_START=0,JUSTIFY_CENTER=YGEnums.JUSTIFY_CENTER=1,JUSTIFY_FLEX_END=YGEnums.JUSTIFY_FLEX_END=2,JUSTIFY_SPACE_BETWEEN=YGEnums.JUSTIFY_SPACE_BETWEEN=3,JUSTIFY_SPACE_AROUND=YGEnums.JUSTIFY_SPACE_AROUND=4,JUSTIFY_SPACE_EVENLY=YGEnums.JUSTIFY_SPACE_EVENLY=5,LOG_LEVEL_ERROR=YGEnums.LOG_LEVEL_ERROR=0,LOG_LEVEL_WARN=YGEnums.LOG_LEVEL_WARN=1,LOG_LEVEL_INFO=YGEnums.LOG_LEVEL_INFO=2,LOG_LEVEL_DEBUG=YGEnums.LOG_LEVEL_DEBUG=3,LOG_LEVEL_VERBOSE=YGEnums.LOG_LEVEL_VERBOSE=4,LOG_LEVEL_FATAL=YGEnums.LOG_LEVEL_FATAL=5,MEASURE_MODE_UNDEFINED=YGEnums.MEASURE_MODE_UNDEFINED=0,MEASURE_MODE_EXACTLY=YGEnums.MEASURE_MODE_EXACTLY=1,MEASURE_MODE_AT_MOST=YGEnums.MEASURE_MODE_AT_MOST=2,NODE_TYPE_DEFAULT=YGEnums.NODE_TYPE_DEFAULT=0,NODE_TYPE_TEXT=YGEnums.NODE_TYPE_TEXT=1,OVERFLOW_VISIBLE=YGEnums.OVERFLOW_VISIBLE=0,OVERFLOW_HIDDEN=YGEnums.OVERFLOW_HIDDEN=1,OVERFLOW_SCROLL=YGEnums.OVERFLOW_SCROLL=2,POSITION_TYPE_STATIC=YGEnums.POSITION_TYPE_STATIC=0,POSITION_TYPE_RELATIVE=YGEnums.POSITION_TYPE_RELATIVE=1,POSITION_TYPE_ABSOLUTE=YGEnums.POSITION_TYPE_ABSOLUTE=2,PRINT_OPTIONS_LAYOUT=YGEnums.PRINT_OPTIONS_LAYOUT=1,PRINT_OPTIONS_STYLE=YGEnums.PRINT_OPTIONS_STYLE=2,PRINT_OPTIONS_CHILDREN=YGEnums.PRINT_OPTIONS_CHILDREN=4,UNIT_UNDEFINED=YGEnums.UNIT_UNDEFINED=0,UNIT_POINT=YGEnums.UNIT_POINT=1,UNIT_PERCENT=YGEnums.UNIT_PERCENT=2,UNIT_AUTO=YGEnums.UNIT_AUTO=3,WRAP_NO_WRAP=YGEnums.WRAP_NO_WRAP=0,WRAP_WRAP=YGEnums.WRAP_WRAP=1,WRAP_WRAP_REVERSE=YGEnums.WRAP_WRAP_REVERSE=2});async function initYoga(t){let r=await yoga({instantiateWasm(n,r2){WebAssembly.instantiate(t,n).then((n2)=>{n2 instanceof WebAssembly.Instance?r2(n2):r2(n2.instance)})}});return wrapAsm(r)}var yoga;var init_dist=__esm(()=>{init_wrapAsm_f766f97f();init_wrapAsm_f766f97f();yoga=(()=>{var n=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return function(t={}){u||(u=t!==void 0?t:{}),u.ready=new Promise(function(n2,t2){c=n2,f=t2});var r,e,a=Object.assign({},u),i="";typeof document<"u"&&document.currentScript&&(i=document.currentScript.src),n&&(i=n),i=i.indexOf("blob:")!==0?i.substr(0,i.replace(/[?#].*/,"").lastIndexOf("/")+1):"";var o=console.log.bind(console),s=console.warn.bind(console);Object.assign(u,a),a=null,typeof WebAssembly!="object"&&w("no native wasm support detected");var u,c,f,l,h=!1;function p(n2,t2,r2){r2=t2+r2;for(var e2="";!(t2>=r2);){var a2=n2[t2++];if(!a2)break;if(128&a2){var i2=63&n2[t2++];if((224&a2)==192)e2+=String.fromCharCode((31&a2)<<6|i2);else{var o2=63&n2[t2++];65536>(a2=(240&a2)==224?(15&a2)<<12|i2<<6|o2:(7&a2)<<18|i2<<12|o2<<6|63&n2[t2++])?e2+=String.fromCharCode(a2):(a2-=65536,e2+=String.fromCharCode(55296|a2>>10,56320|1023&a2))}}else e2+=String.fromCharCode(a2)}return e2}function v(){var n2=l.buffer;u.HEAP8=d=new Int8Array(n2),u.HEAP16=m=new Int16Array(n2),u.HEAP32=g=new Int32Array(n2),u.HEAPU8=y=new Uint8Array(n2),u.HEAPU16=E=new Uint16Array(n2),u.HEAPU32=_=new Uint32Array(n2),u.HEAPF32=T=new Float32Array(n2),u.HEAPF64=L=new Float64Array(n2)}var d,y,m,E,g,_,T,L,A,O=[],P=[],b=[],N=0,I=null;function w(n2){throw s(n2="Aborted("+n2+")"),h=!0,f(n2=new WebAssembly.RuntimeError(n2+". Build with -sASSERTIONS for more info.")),n2}function S(){return r.startsWith("data:application/octet-stream;base64,")}function R(){try{throw"both async and sync fetching of the wasm failed"}catch(n2){w(n2)}}function C(n2){for(;0<n2.length;)n2.shift()(u)}function W(n2){if(n2===void 0)return"_unknown";var t2=(n2=n2.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return 48<=t2&&57>=t2?"_"+n2:n2}function U(n2,t2){return n2=W(n2),function(){return t2.apply(this,arguments)}}r="yoga.wasm",S()||(r=i+r);var M=[{},{value:void 0},{value:null},{value:!0},{value:!1}],F=[];function D(n2){var t2=Error,r2=U(n2,function(t3){this.name=n2,this.message=t3,(t3=Error(t3).stack)!==void 0&&(this.stack=this.toString()+`
|
|
21
|
+
`+t3.replace(/^Error(:[^\n]*)?\n/,""))});return r2.prototype=Object.create(t2.prototype),r2.prototype.constructor=r2,r2.prototype.toString=function(){return this.message===void 0?this.name:this.name+": "+this.message},r2}var k=void 0;function V(n2){throw new k(n2)}var j=(n2)=>(n2||V("Cannot use deleted val. handle = "+n2),M[n2].value),G=(n2)=>{switch(n2){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:var t2=F.length?F.pop():M.length;return M[t2]={fa:1,value:n2},t2}},Y=void 0,X=void 0;function B(n2){for(var t2="";y[n2];)t2+=X[y[n2++]];return t2}var H=[];function x(){for(;H.length;){var n2=H.pop();n2.L.Z=!1,n2.delete()}}var z=void 0,$={};function Z(n2,t2){for(t2===void 0&&V("ptr should not be undefined");n2.P;)t2=n2.aa(t2),n2=n2.P;return t2}var J={};function q(n2){var t2=B(n2=nz(n2));return nZ(n2),t2}function K(n2,t2){var r2=J[n2];return r2===void 0&&V(t2+" has unknown type "+q(n2)),r2}function Q(){}var nn=!1;function nt(n2){--n2.count.value,n2.count.value===0&&(n2.S?n2.T.V(n2.S):n2.O.M.V(n2.N))}var nr={},ne=void 0;function na(n2){throw new ne(n2)}function ni(n2,t2){return t2.O&&t2.N||na("makeClassHandle requires ptr and ptrType"),!!t2.T!=!!t2.S&&na("Both smartPtrType and smartPtr must be specified"),t2.count={value:1},no(Object.create(n2,{L:{value:t2}}))}function no(n2){return typeof FinalizationRegistry>"u"?(no=(n3)=>n3,n2):(nn=new FinalizationRegistry((n3)=>{nt(n3.L)}),no=(n3)=>{var t2=n3.L;return t2.S&&nn.register(n3,{L:t2},n3),n3},Q=(n3)=>{nn.unregister(n3)},no(n2))}var ns={};function nu(n2){for(;n2.length;){var t2=n2.pop();n2.pop()(t2)}}function nc(n2){return this.fromWireType(g[n2>>2])}var nf={},nl={};function nh(n2,t2,r2){function e2(t3){(t3=r2(t3)).length!==n2.length&&na("Mismatched type converter count");for(var e3=0;e3<n2.length;++e3)nv(n2[e3],t3[e3])}n2.forEach(function(n3){nl[n3]=t2});var a2=Array(t2.length),i2=[],o2=0;t2.forEach((n3,t3)=>{J.hasOwnProperty(n3)?a2[t3]=J[n3]:(i2.push(n3),nf.hasOwnProperty(n3)||(nf[n3]=[]),nf[n3].push(()=>{a2[t3]=J[n3],++o2===i2.length&&e2(a2)}))}),i2.length===0&&e2(a2)}function np(n2){switch(n2){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw TypeError("Unknown type size: "+n2)}}function nv(n2,t2,r2={}){if(!("argPackAdvance"in t2))throw TypeError("registerType registeredInstance requires argPackAdvance");var e2=t2.name;if(n2||V('type "'+e2+'" must have a positive integer typeid pointer'),J.hasOwnProperty(n2)){if(r2.ta)return;V("Cannot register type '"+e2+"' twice")}J[n2]=t2,delete nl[n2],nf.hasOwnProperty(n2)&&(t2=nf[n2],delete nf[n2],t2.forEach((n3)=>n3()))}function nd(n2){V(n2.L.O.M.name+" instance already deleted")}function ny(){}function nm(n2,t2,r2){if(n2[t2].R===void 0){var e2=n2[t2];n2[t2]=function(){return n2[t2].R.hasOwnProperty(arguments.length)||V("Function '"+r2+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+n2[t2].R+")!"),n2[t2].R[arguments.length].apply(this,arguments)},n2[t2].R=[],n2[t2].R[e2.Y]=e2}}function nE(n2,t2,r2,e2,a2,i2,o2,s2){this.name=n2,this.constructor=t2,this.W=r2,this.V=e2,this.P=a2,this.oa=i2,this.aa=o2,this.ma=s2,this.ia=[]}function ng(n2,t2,r2){for(;t2!==r2;)t2.aa||V("Expected null or instance of "+r2.name+", got an instance of "+t2.name),n2=t2.aa(n2),t2=t2.P;return n2}function n_(n2,t2){return t2===null?(this.da&&V("null is not a valid "+this.name),0):(t2.L||V('Cannot pass "'+nC(t2)+'" as a '+this.name),t2.L.N||V("Cannot pass deleted object as a pointer of type "+this.name),ng(t2.L.N,t2.L.O.M,this.M))}function nT(n2,t2){if(t2===null){if(this.da&&V("null is not a valid "+this.name),this.ca){var r2=this.ea();return n2!==null&&n2.push(this.V,r2),r2}return 0}if(t2.L||V('Cannot pass "'+nC(t2)+'" as a '+this.name),t2.L.N||V("Cannot pass deleted object as a pointer of type "+this.name),!this.ba&&t2.L.O.ba&&V("Cannot convert argument of type "+(t2.L.T?t2.L.T.name:t2.L.O.name)+" to parameter type "+this.name),r2=ng(t2.L.N,t2.L.O.M,this.M),this.ca)switch(t2.L.S===void 0&&V("Passing raw pointer to smart pointer is illegal"),this.Aa){case 0:t2.L.T===this?r2=t2.L.S:V("Cannot convert argument of type "+(t2.L.T?t2.L.T.name:t2.L.O.name)+" to parameter type "+this.name);break;case 1:r2=t2.L.S;break;case 2:if(t2.L.T===this)r2=t2.L.S;else{var e2=t2.clone();r2=this.wa(r2,G(function(){e2.delete()})),n2!==null&&n2.push(this.V,r2)}break;default:V("Unsupporting sharing policy")}return r2}function nL(n2,t2){return t2===null?(this.da&&V("null is not a valid "+this.name),0):(t2.L||V('Cannot pass "'+nC(t2)+'" as a '+this.name),t2.L.N||V("Cannot pass deleted object as a pointer of type "+this.name),t2.L.O.ba&&V("Cannot convert argument of type "+t2.L.O.name+" to parameter type "+this.name),ng(t2.L.N,t2.L.O.M,this.M))}function nA(n2,t2,r2,e2){this.name=n2,this.M=t2,this.da=r2,this.ba=e2,this.ca=!1,this.V=this.wa=this.ea=this.ja=this.Aa=this.va=void 0,t2.P!==void 0?this.toWireType=nT:(this.toWireType=e2?n_:nL,this.U=null)}var nO=[];function nP(n2){var t2=nO[n2];return t2||(n2>=nO.length&&(nO.length=n2+1),nO[n2]=t2=A.get(n2)),t2}function nb(n2,t2){var r2,e2,a2=(n2=B(n2)).includes("j")?(r2=n2,e2=[],function(){if(e2.length=0,Object.assign(e2,arguments),r2.includes("j")){var n3=u["dynCall_"+r2];n3=e2&&e2.length?n3.apply(null,[t2].concat(e2)):n3.call(null,t2)}else n3=nP(t2).apply(null,e2);return n3}):nP(t2);return typeof a2!="function"&&V("unknown function pointer with signature "+n2+": "+t2),a2}var nN=void 0;function nI(n2,t2){var r2=[],e2={};throw t2.forEach(function n3(t3){e2[t3]||J[t3]||(nl[t3]?nl[t3].forEach(n3):(r2.push(t3),e2[t3]=!0))}),new nN(n2+": "+r2.map(q).join([", "]))}function nw(n2,t2,r2,e2,a2){var i2=t2.length;2>i2&&V("argTypes array size mismatch! Must at least get return value and 'this' types!");var o2=t2[1]!==null&&r2!==null,s2=!1;for(r2=1;r2<t2.length;++r2)if(t2[r2]!==null&&t2[r2].U===void 0){s2=!0;break}var u2=t2[0].name!=="void",c2=i2-2,f2=Array(c2),l2=[],h2=[];return function(){if(arguments.length!==c2&&V("function "+n2+" called with "+arguments.length+" arguments, expected "+c2+" args!"),h2.length=0,l2.length=o2?2:1,l2[0]=a2,o2){var r3=t2[1].toWireType(h2,this);l2[1]=r3}for(var i3=0;i3<c2;++i3)f2[i3]=t2[i3+2].toWireType(h2,arguments[i3]),l2.push(f2[i3]);if(i3=e2.apply(null,l2),s2)nu(h2);else for(var p2=o2?1:2;p2<t2.length;p2++){var v2=p2===1?r3:f2[p2-2];t2[p2].U!==null&&t2[p2].U(v2)}return u2?t2[0].fromWireType(i3):void 0}}function nS(n2,t2){for(var r2=[],e2=0;e2<n2;e2++)r2.push(_[t2+4*e2>>2]);return r2}function nR(n2){4<n2&&--M[n2].fa==0&&(M[n2]=void 0,F.push(n2))}function nC(n2){if(n2===null)return"null";var t2=typeof n2;return t2==="object"||t2==="array"||t2==="function"?n2.toString():""+n2}function nW(n2,t2){for(var r2="",e2=0;!(e2>=t2/2);++e2){var a2=m[n2+2*e2>>1];if(a2==0)break;r2+=String.fromCharCode(a2)}return r2}function nU(n2,t2,r2){if(r2===void 0&&(r2=2147483647),2>r2)return 0;r2-=2;var e2=t2;r2=r2<2*n2.length?r2/2:n2.length;for(var a2=0;a2<r2;++a2)m[t2>>1]=n2.charCodeAt(a2),t2+=2;return m[t2>>1]=0,t2-e2}function nM(n2){return 2*n2.length}function nF(n2,t2){for(var r2=0,e2="";!(r2>=t2/4);){var a2=g[n2+4*r2>>2];if(a2==0)break;++r2,65536<=a2?(a2-=65536,e2+=String.fromCharCode(55296|a2>>10,56320|1023&a2)):e2+=String.fromCharCode(a2)}return e2}function nD(n2,t2,r2){if(r2===void 0&&(r2=2147483647),4>r2)return 0;var e2=t2;r2=e2+r2-4;for(var a2=0;a2<n2.length;++a2){var i2=n2.charCodeAt(a2);if(55296<=i2&&57343>=i2&&(i2=65536+((1023&i2)<<10)|1023&n2.charCodeAt(++a2)),g[t2>>2]=i2,(t2+=4)+4>r2)break}return g[t2>>2]=0,t2-e2}function nk(n2){for(var t2=0,r2=0;r2<n2.length;++r2){var e2=n2.charCodeAt(r2);55296<=e2&&57343>=e2&&++r2,t2+=4}return t2}var nV={};function nj(n2){var t2=nV[n2];return t2===void 0?B(n2):t2}var nG=[],nY=[],nX=[null,[],[]];k=u.BindingError=D("BindingError"),u.count_emval_handles=function(){for(var n2=0,t2=5;t2<M.length;++t2)M[t2]!==void 0&&++n2;return n2},u.get_first_emval=function(){for(var n2=5;n2<M.length;++n2)if(M[n2]!==void 0)return M[n2];return null},Y=u.PureVirtualError=D("PureVirtualError");for(var nB=Array(256),nH=0;256>nH;++nH)nB[nH]=String.fromCharCode(nH);X=nB,u.getInheritedInstanceCount=function(){return Object.keys($).length},u.getLiveInheritedInstances=function(){var n2,t2=[];for(n2 in $)$.hasOwnProperty(n2)&&t2.push($[n2]);return t2},u.flushPendingDeletes=x,u.setDelayFunction=function(n2){z=n2,H.length&&z&&z(x)},ne=u.InternalError=D("InternalError"),ny.prototype.isAliasOf=function(n2){if(!(this instanceof ny&&n2 instanceof ny))return!1;var t2=this.L.O.M,r2=this.L.N,e2=n2.L.O.M;for(n2=n2.L.N;t2.P;)r2=t2.aa(r2),t2=t2.P;for(;e2.P;)n2=e2.aa(n2),e2=e2.P;return t2===e2&&r2===n2},ny.prototype.clone=function(){if(this.L.N||nd(this),this.L.$)return this.L.count.value+=1,this;var n2=no,t2=Object,r2=t2.create,e2=Object.getPrototypeOf(this),a2=this.L;return n2=n2(r2.call(t2,e2,{L:{value:{count:a2.count,Z:a2.Z,$:a2.$,N:a2.N,O:a2.O,S:a2.S,T:a2.T}}})),n2.L.count.value+=1,n2.L.Z=!1,n2},ny.prototype.delete=function(){this.L.N||nd(this),this.L.Z&&!this.L.$&&V("Object already scheduled for deletion"),Q(this),nt(this.L),this.L.$||(this.L.S=void 0,this.L.N=void 0)},ny.prototype.isDeleted=function(){return!this.L.N},ny.prototype.deleteLater=function(){return this.L.N||nd(this),this.L.Z&&!this.L.$&&V("Object already scheduled for deletion"),H.push(this),H.length===1&&z&&z(x),this.L.Z=!0,this},nA.prototype.pa=function(n2){return this.ja&&(n2=this.ja(n2)),n2},nA.prototype.ga=function(n2){this.V&&this.V(n2)},nA.prototype.argPackAdvance=8,nA.prototype.readValueFromPointer=nc,nA.prototype.deleteObject=function(n2){n2!==null&&n2.delete()},nA.prototype.fromWireType=function(n2){function t2(){return this.ca?ni(this.M.W,{O:this.va,N:e2,T:this,S:n2}):ni(this.M.W,{O:this,N:n2})}var r2,e2=this.pa(n2);if(!e2)return this.ga(n2),null;var a2=$[Z(this.M,e2)];if(a2!==void 0)return a2.L.count.value===0?(a2.L.N=e2,a2.L.S=n2,a2.clone()):(a2=a2.clone(),this.ga(n2),a2);if(!(a2=nr[a2=this.M.oa(e2)]))return t2.call(this);a2=this.ba?a2.ka:a2.pointerType;var i2=function n3(t3,r3,e3){return r3===e3?t3:e3.P===void 0?null:(t3=n3(t3,r3,e3.P))===null?null:e3.ma(t3)}(e2,this.M,a2.M);return i2===null?t2.call(this):this.ca?ni(a2.M.W,{O:a2,N:i2,T:this,S:n2}):ni(a2.M.W,{O:a2,N:i2})},nN=u.UnboundTypeError=D("UnboundTypeError");var nx={q:function(n2,t2,r2){n2=B(n2),t2=K(t2,"wrapper"),r2=j(r2);var e2=[].slice,a2=t2.M,i2=a2.W,o2=a2.P.W,s2=a2.P.constructor;for(var u2 in n2=U(n2,function(){a2.P.ia.forEach(function(n3){if(this[n3]===o2[n3])throw new Y("Pure virtual function "+n3+" must be implemented in JavaScript")}.bind(this)),Object.defineProperty(this,"__parent",{value:i2}),this.__construct.apply(this,e2.call(arguments))}),i2.__construct=function(){this===i2&&V("Pass correct 'this' to __construct");var n3=s2.implement.apply(void 0,[this].concat(e2.call(arguments)));Q(n3);var t3=n3.L;n3.notifyOnDestruction(),t3.$=!0,Object.defineProperties(this,{L:{value:t3}}),no(this),n3=Z(a2,n3=t3.N),$.hasOwnProperty(n3)?V("Tried to register registered instance: "+n3):$[n3]=this},i2.__destruct=function(){this===i2&&V("Pass correct 'this' to __destruct"),Q(this);var n3=this.L.N;n3=Z(a2,n3),$.hasOwnProperty(n3)?delete $[n3]:V("Tried to unregister unregistered instance: "+n3)},n2.prototype=Object.create(i2),r2)n2.prototype[u2]=r2[u2];return G(n2)},l:function(n2){var t2=ns[n2];delete ns[n2];var{ea:r2,V:e2,ha:a2}=t2;nh([n2],a2.map((n3)=>n3.sa).concat(a2.map((n3)=>n3.ya)),(n3)=>{var i2={};return a2.forEach((t3,r3)=>{var e3=n3[r3],o2=t3.qa,s2=t3.ra,u2=n3[r3+a2.length],c2=t3.xa,f2=t3.za;i2[t3.na]={read:(n4)=>e3.fromWireType(o2(s2,n4)),write:(n4,t4)=>{var r4=[];c2(f2,n4,u2.toWireType(r4,t4)),nu(r4)}}}),[{name:t2.name,fromWireType:function(n4){var t3,r3={};for(t3 in i2)r3[t3]=i2[t3].read(n4);return e2(n4),r3},toWireType:function(n4,t3){for(var a3 in i2)if(!(a3 in t3))throw TypeError('Missing field: "'+a3+'"');var o2=r2();for(a3 in i2)i2[a3].write(o2,t3[a3]);return n4!==null&&n4.push(e2,o2),o2},argPackAdvance:8,readValueFromPointer:nc,U:e2}]})},v:function(){},B:function(n2,t2,r2,e2,a2){var i2=np(r2);nv(n2,{name:t2=B(t2),fromWireType:function(n3){return!!n3},toWireType:function(n3,t3){return t3?e2:a2},argPackAdvance:8,readValueFromPointer:function(n3){if(r2===1)var e3=d;else if(r2===2)e3=m;else if(r2===4)e3=g;else throw TypeError("Unknown boolean type size: "+t2);return this.fromWireType(e3[n3>>i2])},U:null})},h:function(n2,t2,r2,e2,a2,i2,o2,s2,c2,f2,l2,h2,p2){l2=B(l2),i2=nb(a2,i2),s2&&(s2=nb(o2,s2)),f2&&(f2=nb(c2,f2)),p2=nb(h2,p2);var v2,d2=W(l2);v2=function(){nI("Cannot construct "+l2+" due to unbound types",[e2])},u.hasOwnProperty(d2)?(V("Cannot register public name '"+d2+"' twice"),nm(u,d2,d2),u.hasOwnProperty(void 0)&&V("Cannot register multiple overloads of a function with the same number of arguments (undefined)!"),u[d2].R[void 0]=v2):u[d2]=v2,nh([n2,t2,r2],e2?[e2]:[],function(t3){if(t3=t3[0],e2)var r3,a3=t3.M,o3=a3.W;else o3=ny.prototype;t3=U(d2,function(){if(Object.getPrototypeOf(this)!==c3)throw new k("Use 'new' to construct "+l2);if(h3.X===void 0)throw new k(l2+" has no accessible constructor");var n3=h3.X[arguments.length];if(n3===void 0)throw new k("Tried to invoke ctor of "+l2+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(h3.X).toString()+") parameters instead!");return n3.apply(this,arguments)});var c3=Object.create(o3,{constructor:{value:t3}});t3.prototype=c3;var h3=new nE(l2,t3,c3,p2,a3,i2,s2,f2);a3=new nA(l2,h3,!0,!1),o3=new nA(l2+"*",h3,!1,!1);var v3=new nA(l2+" const*",h3,!1,!0);return nr[n2]={pointerType:o3,ka:v3},r3=t3,u.hasOwnProperty(d2)||na("Replacing nonexistant public symbol"),u[d2]=r3,u[d2].Y=void 0,[a3,o3,v3]})},d:function(n2,t2,r2,e2,a2,i2,o2){var s2=nS(r2,e2);t2=B(t2),i2=nb(a2,i2),nh([],[n2],function(n3){function e3(){nI("Cannot call "+a3+" due to unbound types",s2)}var a3=(n3=n3[0]).name+"."+t2;t2.startsWith("@@")&&(t2=Symbol[t2.substring(2)]);var u2=n3.M.constructor;return u2[t2]===void 0?(e3.Y=r2-1,u2[t2]=e3):(nm(u2,t2,a3),u2[t2].R[r2-1]=e3),nh([],s2,function(n4){return n4=nw(a3,[n4[0],null].concat(n4.slice(1)),null,i2,o2),u2[t2].R===void 0?(n4.Y=r2-1,u2[t2]=n4):u2[t2].R[r2-1]=n4,[]}),[]})},p:function(n2,t2,r2,e2,a2,i2){0<t2||w();var o2=nS(t2,r2);a2=nb(e2,a2),nh([],[n2],function(n3){var r3="constructor "+(n3=n3[0]).name;if(n3.M.X===void 0&&(n3.M.X=[]),n3.M.X[t2-1]!==void 0)throw new k("Cannot register multiple constructors with identical number of parameters ("+(t2-1)+") for class '"+n3.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return n3.M.X[t2-1]=()=>{nI("Cannot construct "+n3.name+" due to unbound types",o2)},nh([],o2,function(e3){return e3.splice(1,0,null),n3.M.X[t2-1]=nw(r3,e3,null,a2,i2),[]}),[]})},a:function(n2,t2,r2,e2,a2,i2,o2,s2){var u2=nS(r2,e2);t2=B(t2),i2=nb(a2,i2),nh([],[n2],function(n3){function e3(){nI("Cannot call "+a3+" due to unbound types",u2)}var a3=(n3=n3[0]).name+"."+t2;t2.startsWith("@@")&&(t2=Symbol[t2.substring(2)]),s2&&n3.M.ia.push(t2);var c2=n3.M.W,f2=c2[t2];return f2===void 0||f2.R===void 0&&f2.className!==n3.name&&f2.Y===r2-2?(e3.Y=r2-2,e3.className=n3.name,c2[t2]=e3):(nm(c2,t2,a3),c2[t2].R[r2-2]=e3),nh([],u2,function(e4){return e4=nw(a3,e4,n3,i2,o2),c2[t2].R===void 0?(e4.Y=r2-2,c2[t2]=e4):c2[t2].R[r2-2]=e4,[]}),[]})},A:function(n2,t2){nv(n2,{name:t2=B(t2),fromWireType:function(n3){var t3=j(n3);return nR(n3),t3},toWireType:function(n3,t3){return G(t3)},argPackAdvance:8,readValueFromPointer:nc,U:null})},n:function(n2,t2,r2){r2=np(r2),nv(n2,{name:t2=B(t2),fromWireType:function(n3){return n3},toWireType:function(n3,t3){return t3},argPackAdvance:8,readValueFromPointer:function(n3,t3){switch(t3){case 2:return function(n4){return this.fromWireType(T[n4>>2])};case 3:return function(n4){return this.fromWireType(L[n4>>3])};default:throw TypeError("Unknown float type: "+n3)}}(t2,r2),U:null})},e:function(n2,t2,r2,e2,a2){t2=B(t2),a2===-1&&(a2=4294967295),a2=np(r2);var i2=(n3)=>n3;if(e2===0){var o2=32-8*r2;i2=(n3)=>n3<<o2>>>o2}r2=t2.includes("unsigned")?function(n3,t3){return t3>>>0}:function(n3,t3){return t3},nv(n2,{name:t2,fromWireType:i2,toWireType:r2,argPackAdvance:8,readValueFromPointer:function(n3,t3,r3){switch(t3){case 0:return r3?function(n4){return d[n4]}:function(n4){return y[n4]};case 1:return r3?function(n4){return m[n4>>1]}:function(n4){return E[n4>>1]};case 2:return r3?function(n4){return g[n4>>2]}:function(n4){return _[n4>>2]};default:throw TypeError("Unknown integer type: "+n3)}}(t2,a2,e2!==0),U:null})},b:function(n2,t2,r2){function e2(n3){n3>>=2;var t3=_;return new a2(t3.buffer,t3[n3+1],t3[n3])}var a2=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t2];nv(n2,{name:r2=B(r2),fromWireType:e2,argPackAdvance:8,readValueFromPointer:e2},{ta:!0})},o:function(n2,t2){var r2=(t2=B(t2))==="std::string";nv(n2,{name:t2,fromWireType:function(n3){var t3=_[n3>>2],e2=n3+4;if(r2)for(var a2=e2,i2=0;i2<=t3;++i2){var o2=e2+i2;if(i2==t3||y[o2]==0){if(a2=a2?p(y,a2,o2-a2):"",s2===void 0)var s2=a2;else s2+="\x00"+a2;a2=o2+1}}else{for(i2=0,s2=Array(t3);i2<t3;++i2)s2[i2]=String.fromCharCode(y[e2+i2]);s2=s2.join("")}return nZ(n3),s2},toWireType:function(n3,t3){t3 instanceof ArrayBuffer&&(t3=new Uint8Array(t3));var e2,a2=typeof t3=="string";if(a2||t3 instanceof Uint8Array||t3 instanceof Uint8ClampedArray||t3 instanceof Int8Array||V("Cannot pass non-string to std::string"),r2&&a2){var i2=0;for(e2=0;e2<t3.length;++e2){var o2=t3.charCodeAt(e2);127>=o2?i2++:2047>=o2?i2+=2:55296<=o2&&57343>=o2?(i2+=4,++e2):i2+=3}e2=i2}else e2=t3.length;if(o2=(i2=n$(4+e2+1))+4,_[i2>>2]=e2,r2&&a2){if(a2=o2,o2=e2+1,e2=y,0<o2){o2=a2+o2-1;for(var s2=0;s2<t3.length;++s2){var u2=t3.charCodeAt(s2);if(55296<=u2&&57343>=u2&&(u2=65536+((1023&u2)<<10)|1023&t3.charCodeAt(++s2)),127>=u2){if(a2>=o2)break;e2[a2++]=u2}else{if(2047>=u2){if(a2+1>=o2)break;e2[a2++]=192|u2>>6}else{if(65535>=u2){if(a2+2>=o2)break;e2[a2++]=224|u2>>12}else{if(a2+3>=o2)break;e2[a2++]=240|u2>>18,e2[a2++]=128|u2>>12&63}e2[a2++]=128|u2>>6&63}e2[a2++]=128|63&u2}}e2[a2]=0}}else if(a2)for(a2=0;a2<e2;++a2)255<(s2=t3.charCodeAt(a2))&&(nZ(o2),V("String has UTF-16 code units that do not fit in 8 bits")),y[o2+a2]=s2;else for(a2=0;a2<e2;++a2)y[o2+a2]=t3[a2];return n3!==null&&n3.push(nZ,i2),i2},argPackAdvance:8,readValueFromPointer:nc,U:function(n3){nZ(n3)}})},k:function(n2,t2,r2){if(r2=B(r2),t2===2)var e2=nW,a2=nU,i2=nM,o2=()=>E,s2=1;else t2===4&&(e2=nF,a2=nD,i2=nk,o2=()=>_,s2=2);nv(n2,{name:r2,fromWireType:function(n3){for(var r3,a3=_[n3>>2],i3=o2(),u2=n3+4,c2=0;c2<=a3;++c2){var f2=n3+4+c2*t2;(c2==a3||i3[f2>>s2]==0)&&(u2=e2(u2,f2-u2),r3===void 0?r3=u2:r3+="\x00"+u2,u2=f2+t2)}return nZ(n3),r3},toWireType:function(n3,e3){typeof e3!="string"&&V("Cannot pass non-string to C++ string type "+r2);var o3=i2(e3),u2=n$(4+o3+t2);return _[u2>>2]=o3>>s2,a2(e3,u2+4,o3+t2),n3!==null&&n3.push(nZ,u2),u2},argPackAdvance:8,readValueFromPointer:nc,U:function(n3){nZ(n3)}})},m:function(n2,t2,r2,e2,a2,i2){ns[n2]={name:B(t2),ea:nb(r2,e2),V:nb(a2,i2),ha:[]}},c:function(n2,t2,r2,e2,a2,i2,o2,s2,u2,c2){ns[n2].ha.push({na:B(t2),sa:r2,qa:nb(e2,a2),ra:i2,ya:o2,xa:nb(s2,u2),za:c2})},C:function(n2,t2){nv(n2,{ua:!0,name:t2=B(t2),argPackAdvance:0,fromWireType:function(){},toWireType:function(){}})},t:function(n2,t2,r2,e2,a2){n2=nG[n2],t2=j(t2),r2=nj(r2);var i2=[];return _[e2>>2]=G(i2),n2(t2,r2,i2,a2)},j:function(n2,t2,r2,e2){n2=nG[n2],n2(t2=j(t2),r2=nj(r2),null,e2)},f:nR,g:function(n2,t2){var r2,e2,a2=function(n3,t3){for(var r3=Array(n3),e3=0;e3<n3;++e3)r3[e3]=K(_[t3+4*e3>>2],"parameter "+e3);return r3}(n2,t2),i2=a2[0],o2=nY[t2=i2.name+"_$"+a2.slice(1).map(function(n3){return n3.name}).join("_")+"$"];if(o2!==void 0)return o2;var s2=Array(n2-1);return r2=(t3,r3,e3,o3)=>{for(var u2=0,c2=0;c2<n2-1;++c2)s2[c2]=a2[c2+1].readValueFromPointer(o3+u2),u2+=a2[c2+1].argPackAdvance;for(c2=0,t3=t3[r3].apply(t3,s2);c2<n2-1;++c2)a2[c2+1].la&&a2[c2+1].la(s2[c2]);if(!i2.ua)return i2.toWireType(e3,t3)},e2=nG.length,nG.push(r2),o2=e2,nY[t2]=o2},r:function(n2){4<n2&&(M[n2].fa+=1)},s:function(n2){nu(j(n2)),nR(n2)},i:function(){w("")},x:function(n2,t2,r2){y.copyWithin(n2,t2,t2+r2)},w:function(n2){var t2=y.length;if(2147483648<(n2>>>=0))return!1;for(var r2=1;4>=r2;r2*=2){var e2=t2*(1+0.2/r2);e2=Math.min(e2,n2+100663296);var a2=Math,i2=a2.min;e2=Math.max(n2,e2),e2+=(65536-e2%65536)%65536;n:{var o2=l.buffer;try{l.grow(i2.call(a2,2147483648,e2)-o2.byteLength+65535>>>16),v();var s2=1;break n}catch(n3){}s2=void 0}if(s2)return!0}return!1},z:function(){return 52},u:function(){return 70},y:function(n2,t2,r2,e2){for(var a2=0,i2=0;i2<r2;i2++){var u2=_[t2>>2],c2=_[t2+4>>2];t2+=8;for(var f2=0;f2<c2;f2++){var l2=y[u2+f2],h2=nX[n2];l2===0||l2===10?((n2===1?o:s)(p(h2,0)),h2.length=0):h2.push(l2)}a2+=c2}return _[e2>>2]=a2,0}};(function(){function n2(n3){u.asm=n3.exports,l=u.asm.D,v(),A=u.asm.I,P.unshift(u.asm.E),--N==0&&I&&(n3=I,I=null,n3())}function t2(t3){n2(t3.instance)}function e2(n3){return(typeof fetch=="function"?fetch(r,{credentials:"same-origin"}).then(function(n4){if(!n4.ok)throw"failed to load wasm binary file at '"+r+"'";return n4.arrayBuffer()}).catch(function(){return R()}):Promise.resolve().then(function(){return R()})).then(function(n4){return WebAssembly.instantiate(n4,a2)}).then(function(n4){return n4}).then(n3,function(n4){s("failed to asynchronously prepare wasm: "+n4),w(n4)})}var a2={a:nx};if(N++,u.instantiateWasm)try{return u.instantiateWasm(a2,n2)}catch(n3){s("Module.instantiateWasm callback failed with error: "+n3),f(n3)}(typeof WebAssembly.instantiateStreaming!="function"||S()||typeof fetch!="function"?e2(t2):fetch(r,{credentials:"same-origin"}).then(function(n3){return WebAssembly.instantiateStreaming(n3,a2).then(t2,function(n4){return s("wasm streaming compile failed: "+n4),s("falling back to ArrayBuffer instantiation"),e2(t2)})})).catch(f)})();var nz=u.___getTypeName=function(){return(nz=u.___getTypeName=u.asm.F).apply(null,arguments)};function n$(){return(n$=u.asm.H).apply(null,arguments)}function nZ(){return(nZ=u.asm.J).apply(null,arguments)}function nJ(){0<N||(C(O),0<N||e||(e=!0,u.calledRun=!0,h||(C(P),c(u),C(b))))}return u.__embind_initialize_bindings=function(){return(u.__embind_initialize_bindings=u.asm.G).apply(null,arguments)},u.dynCall_jiji=function(){return(u.dynCall_jiji=u.asm.K).apply(null,arguments)},I=function n2(){e||nJ(),e||(I=n2)},nJ(),t.ready}})()});var exports_node={};__export(exports_node,{default:()=>Yoga,WRAP_WRAP_REVERSE:()=>WRAP_WRAP_REVERSE,WRAP_WRAP:()=>WRAP_WRAP,WRAP_NO_WRAP:()=>WRAP_NO_WRAP,UNIT_UNDEFINED:()=>UNIT_UNDEFINED,UNIT_POINT:()=>UNIT_POINT,UNIT_PERCENT:()=>UNIT_PERCENT,UNIT_AUTO:()=>UNIT_AUTO,PRINT_OPTIONS_STYLE:()=>PRINT_OPTIONS_STYLE,PRINT_OPTIONS_LAYOUT:()=>PRINT_OPTIONS_LAYOUT,PRINT_OPTIONS_CHILDREN:()=>PRINT_OPTIONS_CHILDREN,POSITION_TYPE_STATIC:()=>POSITION_TYPE_STATIC,POSITION_TYPE_RELATIVE:()=>POSITION_TYPE_RELATIVE,POSITION_TYPE_ABSOLUTE:()=>POSITION_TYPE_ABSOLUTE,OVERFLOW_VISIBLE:()=>OVERFLOW_VISIBLE,OVERFLOW_SCROLL:()=>OVERFLOW_SCROLL,OVERFLOW_HIDDEN:()=>OVERFLOW_HIDDEN,NODE_TYPE_TEXT:()=>NODE_TYPE_TEXT,NODE_TYPE_DEFAULT:()=>NODE_TYPE_DEFAULT,MEASURE_MODE_UNDEFINED:()=>MEASURE_MODE_UNDEFINED,MEASURE_MODE_EXACTLY:()=>MEASURE_MODE_EXACTLY,MEASURE_MODE_AT_MOST:()=>MEASURE_MODE_AT_MOST,LOG_LEVEL_WARN:()=>LOG_LEVEL_WARN,LOG_LEVEL_VERBOSE:()=>LOG_LEVEL_VERBOSE,LOG_LEVEL_INFO:()=>LOG_LEVEL_INFO,LOG_LEVEL_FATAL:()=>LOG_LEVEL_FATAL,LOG_LEVEL_ERROR:()=>LOG_LEVEL_ERROR,LOG_LEVEL_DEBUG:()=>LOG_LEVEL_DEBUG,JUSTIFY_SPACE_EVENLY:()=>JUSTIFY_SPACE_EVENLY,JUSTIFY_SPACE_BETWEEN:()=>JUSTIFY_SPACE_BETWEEN,JUSTIFY_SPACE_AROUND:()=>JUSTIFY_SPACE_AROUND,JUSTIFY_FLEX_START:()=>JUSTIFY_FLEX_START,JUSTIFY_FLEX_END:()=>JUSTIFY_FLEX_END,JUSTIFY_CENTER:()=>JUSTIFY_CENTER,GUTTER_ROW:()=>GUTTER_ROW,GUTTER_COLUMN:()=>GUTTER_COLUMN,GUTTER_ALL:()=>GUTTER_ALL,FLEX_DIRECTION_ROW_REVERSE:()=>FLEX_DIRECTION_ROW_REVERSE,FLEX_DIRECTION_ROW:()=>FLEX_DIRECTION_ROW,FLEX_DIRECTION_COLUMN_REVERSE:()=>FLEX_DIRECTION_COLUMN_REVERSE,FLEX_DIRECTION_COLUMN:()=>FLEX_DIRECTION_COLUMN,EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS:()=>EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS,EXPERIMENTAL_FEATURE_FIX_ABSOLUTE_TRAILING_COLUMN_MARGIN:()=>EXPERIMENTAL_FEATURE_FIX_ABSOLUTE_TRAILING_COLUMN_MARGIN,EXPERIMENTAL_FEATURE_ABSOLUTE_PERCENTAGE_AGAINST_PADDING_EDGE:()=>EXPERIMENTAL_FEATURE_ABSOLUTE_PERCENTAGE_AGAINST_PADDING_EDGE,EDGE_VERTICAL:()=>EDGE_VERTICAL,EDGE_TOP:()=>EDGE_TOP,EDGE_START:()=>EDGE_START,EDGE_RIGHT:()=>EDGE_RIGHT,EDGE_LEFT:()=>EDGE_LEFT,EDGE_HORIZONTAL:()=>EDGE_HORIZONTAL,EDGE_END:()=>EDGE_END,EDGE_BOTTOM:()=>EDGE_BOTTOM,EDGE_ALL:()=>EDGE_ALL,DISPLAY_NONE:()=>DISPLAY_NONE,DISPLAY_FLEX:()=>DISPLAY_FLEX,DIRECTION_RTL:()=>DIRECTION_RTL,DIRECTION_LTR:()=>DIRECTION_LTR,DIRECTION_INHERIT:()=>DIRECTION_INHERIT,DIMENSION_WIDTH:()=>DIMENSION_WIDTH,DIMENSION_HEIGHT:()=>DIMENSION_HEIGHT,ALIGN_STRETCH:()=>ALIGN_STRETCH,ALIGN_SPACE_BETWEEN:()=>ALIGN_SPACE_BETWEEN,ALIGN_SPACE_AROUND:()=>ALIGN_SPACE_AROUND,ALIGN_FLEX_START:()=>ALIGN_FLEX_START,ALIGN_FLEX_END:()=>ALIGN_FLEX_END,ALIGN_CENTER:()=>ALIGN_CENTER,ALIGN_BASELINE:()=>ALIGN_BASELINE,ALIGN_AUTO:()=>ALIGN_AUTO});import{readFile as E}from"node:fs/promises";import{createRequire as _}from"node:module";var Yoga;var init_node=__esm(async()=>{init_dist();init_wrapAsm_f766f97f();Yoga=await initYoga(await E(_(import.meta.url).resolve("./yoga.wasm")))});var exports_yoga_adapter={};__export(exports_yoga_adapter,{initYogaEngine:()=>initYogaEngine,createYogaEngine:()=>createYogaEngine,YogaLayoutEngine:()=>YogaLayoutEngine});class YogaNodeAdapter{node;yoga;hasMeasureFunc=!1;constructor(node,yoga2){this.node=node,this.yoga=yoga2}getYogaNode(){return this.node}insertChild(child,index){let yogaChild=child.getYogaNode();this.node.insertChild(yogaChild,index)}removeChild(child){let yogaChild=child.getYogaNode();this.node.removeChild(yogaChild)}free(){this.node.free()}setMeasureFunc(measureFunc){this.hasMeasureFunc=!0,this.node.setMeasureFunc((width,widthMode,height,heightMode)=>{let widthModeStr=this.measureModeToString(widthMode),heightModeStr=this.measureModeToString(heightMode);return measureFunc(width,widthModeStr,height,heightModeStr)})}markDirty(){if(this.hasMeasureFunc)this.node.markDirty()}measureModeToString(mode){if(mode===this.yoga.MEASURE_MODE_EXACTLY)return"exactly";if(mode===this.yoga.MEASURE_MODE_AT_MOST)return"at-most";return"undefined"}setWidth(value){this.node.setWidth(value)}setWidthPercent(value){this.node.setWidthPercent(value)}setWidthAuto(){this.node.setWidthAuto()}setHeight(value){this.node.setHeight(value)}setHeightPercent(value){this.node.setHeightPercent(value)}setHeightAuto(){this.node.setHeightAuto()}setMinWidth(value){this.node.setMinWidth(value)}setMinWidthPercent(value){this.node.setMinWidthPercent(value)}setMinHeight(value){this.node.setMinHeight(value)}setMinHeightPercent(value){this.node.setMinHeightPercent(value)}setMaxWidth(value){this.node.setMaxWidth(value)}setMaxWidthPercent(value){this.node.setMaxWidthPercent(value)}setMaxHeight(value){this.node.setMaxHeight(value)}setMaxHeightPercent(value){this.node.setMaxHeightPercent(value)}setFlexGrow(value){this.node.setFlexGrow(value)}setFlexShrink(value){this.node.setFlexShrink(value)}setFlexBasis(value){this.node.setFlexBasis(value)}setFlexBasisPercent(value){this.node.setFlexBasisPercent(value)}setFlexBasisAuto(){this.node.setFlexBasisAuto()}setFlexDirection(direction){this.node.setFlexDirection(direction)}setFlexWrap(wrap){this.node.setFlexWrap(wrap)}setAlignItems(align){this.node.setAlignItems(align)}setAlignSelf(align){this.node.setAlignSelf(align)}setAlignContent(align){this.node.setAlignContent(align)}setJustifyContent(justify){this.node.setJustifyContent(justify)}setPadding(edge,value){this.node.setPadding(edge,value)}setMargin(edge,value){this.node.setMargin(edge,value)}setBorder(edge,value){this.node.setBorder(edge,value)}setGap(gutter,value){this.node.setGap(gutter,value)}setDisplay(display){this.node.setDisplay(display)}setPositionType(positionType){this.node.setPositionType(positionType)}setPosition(edge,value){this.node.setPosition(edge,value)}setPositionPercent(edge,value){this.node.setPositionPercent(edge,value)}setOverflow(overflow){this.node.setOverflow(overflow)}setAspectRatio(value){this.node.setAspectRatio(value)}calculateLayout(width,height,direction){this.node.calculateLayout(width,height,direction??this.yoga.DIRECTION_LTR)}getComputedLeft(){return this.node.getComputedLeft()}getComputedTop(){return this.node.getComputedTop()}getComputedWidth(){return this.node.getComputedWidth()}getComputedHeight(){return this.node.getComputedHeight()}}class YogaLayoutEngine{yoga;_constants;constructor(yoga2){this.yoga=yoga2,this._constants={FLEX_DIRECTION_COLUMN:yoga2.FLEX_DIRECTION_COLUMN,FLEX_DIRECTION_COLUMN_REVERSE:yoga2.FLEX_DIRECTION_COLUMN_REVERSE,FLEX_DIRECTION_ROW:yoga2.FLEX_DIRECTION_ROW,FLEX_DIRECTION_ROW_REVERSE:yoga2.FLEX_DIRECTION_ROW_REVERSE,WRAP_NO_WRAP:yoga2.WRAP_NO_WRAP,WRAP_WRAP:yoga2.WRAP_WRAP,WRAP_WRAP_REVERSE:yoga2.WRAP_WRAP_REVERSE,ALIGN_AUTO:yoga2.ALIGN_AUTO,ALIGN_FLEX_START:yoga2.ALIGN_FLEX_START,ALIGN_CENTER:yoga2.ALIGN_CENTER,ALIGN_FLEX_END:yoga2.ALIGN_FLEX_END,ALIGN_STRETCH:yoga2.ALIGN_STRETCH,ALIGN_BASELINE:yoga2.ALIGN_BASELINE,ALIGN_SPACE_BETWEEN:yoga2.ALIGN_SPACE_BETWEEN,ALIGN_SPACE_AROUND:yoga2.ALIGN_SPACE_AROUND,ALIGN_SPACE_EVENLY:yoga2.ALIGN_SPACE_EVENLY,JUSTIFY_FLEX_START:yoga2.JUSTIFY_FLEX_START,JUSTIFY_CENTER:yoga2.JUSTIFY_CENTER,JUSTIFY_FLEX_END:yoga2.JUSTIFY_FLEX_END,JUSTIFY_SPACE_BETWEEN:yoga2.JUSTIFY_SPACE_BETWEEN,JUSTIFY_SPACE_AROUND:yoga2.JUSTIFY_SPACE_AROUND,JUSTIFY_SPACE_EVENLY:yoga2.JUSTIFY_SPACE_EVENLY,EDGE_LEFT:yoga2.EDGE_LEFT,EDGE_TOP:yoga2.EDGE_TOP,EDGE_RIGHT:yoga2.EDGE_RIGHT,EDGE_BOTTOM:yoga2.EDGE_BOTTOM,EDGE_HORIZONTAL:yoga2.EDGE_HORIZONTAL,EDGE_VERTICAL:yoga2.EDGE_VERTICAL,EDGE_ALL:yoga2.EDGE_ALL,GUTTER_COLUMN:yoga2.GUTTER_COLUMN,GUTTER_ROW:yoga2.GUTTER_ROW,GUTTER_ALL:yoga2.GUTTER_ALL,DISPLAY_FLEX:yoga2.DISPLAY_FLEX,DISPLAY_NONE:yoga2.DISPLAY_NONE,POSITION_TYPE_STATIC:yoga2.POSITION_TYPE_STATIC,POSITION_TYPE_RELATIVE:yoga2.POSITION_TYPE_RELATIVE,POSITION_TYPE_ABSOLUTE:yoga2.POSITION_TYPE_ABSOLUTE,OVERFLOW_VISIBLE:yoga2.OVERFLOW_VISIBLE,OVERFLOW_HIDDEN:yoga2.OVERFLOW_HIDDEN,OVERFLOW_SCROLL:yoga2.OVERFLOW_SCROLL,DIRECTION_LTR:yoga2.DIRECTION_LTR,MEASURE_MODE_UNDEFINED:yoga2.MEASURE_MODE_UNDEFINED,MEASURE_MODE_EXACTLY:yoga2.MEASURE_MODE_EXACTLY,MEASURE_MODE_AT_MOST:yoga2.MEASURE_MODE_AT_MOST}}createNode(){return new YogaNodeAdapter(this.yoga.Node.create(),this.yoga)}get constants(){return this._constants}get name(){return"yoga"}}function createYogaEngine(yoga2){return new YogaLayoutEngine(yoga2)}async function initYogaEngine(){let{default:yoga2}=await init_node().then(() => exports_node);return new YogaLayoutEngine(yoga2)}var exports_flexily_zero_adapter={};__export(exports_flexily_zero_adapter,{createFlexilyZeroEngine:()=>createFlexilyZeroEngine,FlexilyZeroLayoutEngine:()=>FlexilyZeroLayoutEngine});import{ALIGN_AUTO as ALIGN_AUTO2,ALIGN_BASELINE as ALIGN_BASELINE2,ALIGN_CENTER as ALIGN_CENTER2,ALIGN_FLEX_END as ALIGN_FLEX_END2,ALIGN_FLEX_START as ALIGN_FLEX_START2,ALIGN_SPACE_AROUND as ALIGN_SPACE_AROUND2,ALIGN_SPACE_BETWEEN as ALIGN_SPACE_BETWEEN2,ALIGN_SPACE_EVENLY,ALIGN_STRETCH as ALIGN_STRETCH2,DIRECTION_LTR as DIRECTION_LTR2,DISPLAY_FLEX as DISPLAY_FLEX2,DISPLAY_NONE as DISPLAY_NONE2,EDGE_ALL as EDGE_ALL2,EDGE_BOTTOM as EDGE_BOTTOM2,EDGE_HORIZONTAL as EDGE_HORIZONTAL2,EDGE_LEFT as EDGE_LEFT2,EDGE_RIGHT as EDGE_RIGHT2,EDGE_TOP as EDGE_TOP2,EDGE_VERTICAL as EDGE_VERTICAL2,FLEX_DIRECTION_COLUMN as FLEX_DIRECTION_COLUMN2,FLEX_DIRECTION_COLUMN_REVERSE as FLEX_DIRECTION_COLUMN_REVERSE2,FLEX_DIRECTION_ROW as FLEX_DIRECTION_ROW2,FLEX_DIRECTION_ROW_REVERSE as FLEX_DIRECTION_ROW_REVERSE2,Node as FlexilyNode,GUTTER_ALL as GUTTER_ALL2,GUTTER_COLUMN as GUTTER_COLUMN2,GUTTER_ROW as GUTTER_ROW2,JUSTIFY_CENTER as JUSTIFY_CENTER2,JUSTIFY_FLEX_END as JUSTIFY_FLEX_END2,JUSTIFY_FLEX_START as JUSTIFY_FLEX_START2,JUSTIFY_SPACE_AROUND as JUSTIFY_SPACE_AROUND2,JUSTIFY_SPACE_BETWEEN as JUSTIFY_SPACE_BETWEEN2,JUSTIFY_SPACE_EVENLY as JUSTIFY_SPACE_EVENLY2,MEASURE_MODE_AT_MOST as MEASURE_MODE_AT_MOST2,MEASURE_MODE_EXACTLY as MEASURE_MODE_EXACTLY2,MEASURE_MODE_UNDEFINED as MEASURE_MODE_UNDEFINED2,OVERFLOW_HIDDEN as OVERFLOW_HIDDEN2,OVERFLOW_SCROLL as OVERFLOW_SCROLL2,OVERFLOW_VISIBLE as OVERFLOW_VISIBLE2,POSITION_TYPE_ABSOLUTE as POSITION_TYPE_ABSOLUTE2,POSITION_TYPE_RELATIVE as POSITION_TYPE_RELATIVE2,POSITION_TYPE_STATIC as POSITION_TYPE_STATIC2,WRAP_NO_WRAP as WRAP_NO_WRAP2,WRAP_WRAP as WRAP_WRAP2,WRAP_WRAP_REVERSE as WRAP_WRAP_REVERSE2}from"flexily";class FlexilyZeroNodeAdapter{node;constructor(node){this.node=node}getFlexilyNode(){return this.node}insertChild(child,index){let flexilyChild=child.getFlexilyNode();this.node.insertChild(flexilyChild,index)}removeChild(child){let flexilyChild=child.getFlexilyNode();this.node.removeChild(flexilyChild)}free(){this.node.free()}setMeasureFunc(measureFunc){this.node.setMeasureFunc((width,widthMode,height,heightMode)=>{let widthModeStr=this.measureModeToString(widthMode),heightModeStr=this.measureModeToString(heightMode);return measureFunc(width,widthModeStr,height,heightModeStr)})}markDirty(){this.node.markDirty()}measureModeToString(mode){if(mode===MEASURE_MODE_EXACTLY2)return"exactly";if(mode===MEASURE_MODE_AT_MOST2)return"at-most";return"undefined"}setWidth(value){this.node.setWidth(value)}setWidthPercent(value){this.node.setWidthPercent(value)}setWidthAuto(){this.node.setWidthAuto()}setHeight(value){this.node.setHeight(value)}setHeightPercent(value){this.node.setHeightPercent(value)}setHeightAuto(){this.node.setHeightAuto()}setMinWidth(value){this.node.setMinWidth(value)}setMinWidthPercent(value){this.node.setMinWidthPercent(value)}setMinHeight(value){this.node.setMinHeight(value)}setMinHeightPercent(value){this.node.setMinHeightPercent(value)}setMaxWidth(value){this.node.setMaxWidth(value)}setMaxWidthPercent(value){this.node.setMaxWidthPercent(value)}setMaxHeight(value){this.node.setMaxHeight(value)}setMaxHeightPercent(value){this.node.setMaxHeightPercent(value)}setFlexGrow(value){this.node.setFlexGrow(value)}setFlexShrink(value){this.node.setFlexShrink(value)}setFlexBasis(value){this.node.setFlexBasis(value)}setFlexBasisPercent(value){this.node.setFlexBasisPercent(value)}setFlexBasisAuto(){this.node.setFlexBasisAuto()}setFlexDirection(direction){this.node.setFlexDirection(direction)}setFlexWrap(wrap){this.node.setFlexWrap(wrap)}setAlignItems(align){this.node.setAlignItems(align)}setAlignSelf(align){this.node.setAlignSelf(align)}setAlignContent(align){this.node.setAlignContent(align)}setJustifyContent(justify){this.node.setJustifyContent(justify)}setPadding(edge,value){this.node.setPadding(edge,value)}setMargin(edge,value){this.node.setMargin(edge,value)}setBorder(edge,value){this.node.setBorder(edge,value)}setGap(gutter,value){this.node.setGap(gutter,value)}setDisplay(display){this.node.setDisplay(display)}setPositionType(positionType){this.node.setPositionType(positionType)}setPosition(edge,value){this.node.setPosition(edge,value)}setPositionPercent(edge,value){this.node.setPositionPercent(edge,value)}setOverflow(overflow){this.node.setOverflow(overflow)}setAspectRatio(value){this.node.setAspectRatio(value)}calculateLayout(width,height,direction){this.node.calculateLayout(width,height,direction??DIRECTION_LTR2)}getComputedLeft(){return this.node.getComputedLeft()}getComputedTop(){return this.node.getComputedTop()}getComputedWidth(){return this.node.getComputedWidth()}getComputedHeight(){return this.node.getComputedHeight()}}class FlexilyZeroLayoutEngine{_constants={FLEX_DIRECTION_COLUMN:FLEX_DIRECTION_COLUMN2,FLEX_DIRECTION_COLUMN_REVERSE:FLEX_DIRECTION_COLUMN_REVERSE2,FLEX_DIRECTION_ROW:FLEX_DIRECTION_ROW2,FLEX_DIRECTION_ROW_REVERSE:FLEX_DIRECTION_ROW_REVERSE2,WRAP_NO_WRAP:WRAP_NO_WRAP2,WRAP_WRAP:WRAP_WRAP2,WRAP_WRAP_REVERSE:WRAP_WRAP_REVERSE2,ALIGN_AUTO:ALIGN_AUTO2,ALIGN_FLEX_START:ALIGN_FLEX_START2,ALIGN_CENTER:ALIGN_CENTER2,ALIGN_FLEX_END:ALIGN_FLEX_END2,ALIGN_STRETCH:ALIGN_STRETCH2,ALIGN_BASELINE:ALIGN_BASELINE2,ALIGN_SPACE_BETWEEN:ALIGN_SPACE_BETWEEN2,ALIGN_SPACE_AROUND:ALIGN_SPACE_AROUND2,ALIGN_SPACE_EVENLY,JUSTIFY_FLEX_START:JUSTIFY_FLEX_START2,JUSTIFY_CENTER:JUSTIFY_CENTER2,JUSTIFY_FLEX_END:JUSTIFY_FLEX_END2,JUSTIFY_SPACE_BETWEEN:JUSTIFY_SPACE_BETWEEN2,JUSTIFY_SPACE_AROUND:JUSTIFY_SPACE_AROUND2,JUSTIFY_SPACE_EVENLY:JUSTIFY_SPACE_EVENLY2,EDGE_LEFT:EDGE_LEFT2,EDGE_TOP:EDGE_TOP2,EDGE_RIGHT:EDGE_RIGHT2,EDGE_BOTTOM:EDGE_BOTTOM2,EDGE_HORIZONTAL:EDGE_HORIZONTAL2,EDGE_VERTICAL:EDGE_VERTICAL2,EDGE_ALL:EDGE_ALL2,GUTTER_COLUMN:GUTTER_COLUMN2,GUTTER_ROW:GUTTER_ROW2,GUTTER_ALL:GUTTER_ALL2,DISPLAY_FLEX:DISPLAY_FLEX2,DISPLAY_NONE:DISPLAY_NONE2,POSITION_TYPE_STATIC:POSITION_TYPE_STATIC2,POSITION_TYPE_RELATIVE:POSITION_TYPE_RELATIVE2,POSITION_TYPE_ABSOLUTE:POSITION_TYPE_ABSOLUTE2,OVERFLOW_VISIBLE:OVERFLOW_VISIBLE2,OVERFLOW_HIDDEN:OVERFLOW_HIDDEN2,OVERFLOW_SCROLL:OVERFLOW_SCROLL2,DIRECTION_LTR:DIRECTION_LTR2,MEASURE_MODE_UNDEFINED:MEASURE_MODE_UNDEFINED2,MEASURE_MODE_EXACTLY:MEASURE_MODE_EXACTLY2,MEASURE_MODE_AT_MOST:MEASURE_MODE_AT_MOST2};createNode(){return new FlexilyZeroNodeAdapter(FlexilyNode.create())}get constants(){return this._constants}get name(){return"flexily-zero"}}function createFlexilyZeroEngine(){return new FlexilyZeroLayoutEngine}var init_flexily_zero_adapter=()=>{};function setLayoutEngine(engine){layoutEngine=engine}function getLayoutEngine(){if(!layoutEngine)throw Error("Layout engine not initialized. Call setLayoutEngine() or initYoga()/initFlexily() first.");return layoutEngine}function isLayoutEngineInitialized(){return layoutEngine!==null}function getConstants(){return getLayoutEngine().constants}async function ensureDefaultLayoutEngine(engineType){if(isLayoutEngineInitialized())return;if((engineType??process.env.SILVERY_ENGINE?.toLowerCase()??"flexily")==="yoga"){let{initYogaEngine:initYogaEngine2}=await Promise.resolve().then(() => exports_yoga_adapter);setLayoutEngine(await initYogaEngine2())}else{let{createFlexilyZeroEngine:createFlexilyZeroEngine2}=await Promise.resolve().then(() => (init_flexily_zero_adapter(),exports_flexily_zero_adapter));setLayoutEngine(createFlexilyZeroEngine2())}}var layoutEngine=null;function collectPlainText(node){if(node.textContent!==void 0)return node.textContent;let result="";for(let i=0;i<node.children.length;i++){let child=node.children[i],childText=collectPlainText(child);if(childText.length>0&&child.props.internal_transform)childText=child.props.internal_transform(childText,i);result+=childText}return result}function collectPlainTextSkipHidden(node){if(node.textContent!==void 0)return node.textContent;let result="";for(let i=0;i<node.children.length;i++){let child=node.children[i];if(child.hidden)continue;let childText=collectPlainTextSkipHidden(child);if(childText.length>0&&child.props.internal_transform)childText=child.props.internal_transform(childText,i);result+=childText}return result}function getPadding(props){return{top:props.paddingTop??props.paddingY??props.padding??0,bottom:props.paddingBottom??props.paddingY??props.padding??0,left:props.paddingLeft??props.paddingX??props.padding??0,right:props.paddingRight??props.paddingX??props.padding??0}}function getBorderSize(props){if(!props.borderStyle)return{top:0,bottom:0,left:0,right:0};return{top:props.borderTop!==!1?1:0,bottom:props.borderBottom!==!1?1:0,left:props.borderLeft!==!1?1:0,right:props.borderRight!==!1?1:0}}function measurePhase(root,ctx){traverseTree(root,(node)=>{if(!node.layoutNode)return;let props=node.props;if(props.width==="fit-content"||props.height==="fit-content"){let availableWidth;if(props.height==="fit-content"&&props.width!=="fit-content"&&typeof props.width==="number"){let padding=getPadding(props);if(availableWidth=props.width-padding.left-padding.right,props.borderStyle){let border=getBorderSize(props);availableWidth-=border.left+border.right}if(availableWidth<1)availableWidth=1}let intrinsicSize=measureIntrinsicSize(node,ctx,availableWidth);if(props.width==="fit-content")node.layoutNode.setWidth(intrinsicSize.width);if(props.height==="fit-content")node.layoutNode.setHeight(intrinsicSize.height)}})}function measureIntrinsicSize(node,ctx,availableWidth){let props=node.props;if(props.display==="none")return{width:0,height:0};if(node.type==="silvery-text"){let textProps=props,text=collectPlainText(node),transform=textProps.internal_transform,lines;if(availableWidth!==void 0&&availableWidth>0&&isWrapEnabled(textProps.wrap))lines=ctx?ctx.measurer.wrapText(text,availableWidth,!0,!0):wrapText(text,availableWidth,!0,!0);else lines=text.split(`
|
|
22
|
+
`);if(transform)lines=lines.map((line,index)=>transform(line,index));return{width:Math.max(...lines.map((line)=>getTextWidth(line,ctx))),height:lines.length}}let isRow=props.flexDirection==="row"||props.flexDirection==="row-reverse",width=0,height=0,childCount=0;for(let child of node.children){let childSize=measureIntrinsicSize(child,ctx,availableWidth);if(childCount++,isRow)width+=childSize.width,height=Math.max(height,childSize.height);else width=Math.max(width,childSize.width),height+=childSize.height}let gap=props.gap??0;if(gap>0&&childCount>1){let totalGap=gap*(childCount-1);if(isRow)width+=totalGap;else height+=totalGap}let padding=getPadding(props);if(width+=padding.left+padding.right,height+=padding.top+padding.bottom,props.borderStyle){let border=getBorderSize(props);width+=border.left+border.right,height+=border.top+border.bottom}return{width,height}}function isWrapEnabled(wrap){return wrap==="wrap"||wrap===!0||wrap===void 0}function traverseTree(node,callback){callback(node);for(let child of node.children)traverseTree(child,callback)}function getTextWidth(text,ctx){if(ctx)return ctx.measurer.displayWidthAnsi(text);return displayWidthAnsi(text)}var init_measure_phase=__esm(()=>{init_unicode()});var measureStats;var init_measure_stats=__esm(()=>{measureStats={calls:0,cacheHits:0,textCollects:0,displayWidthCalls:0,reset(){this.calls=0,this.cacheHits=0,this.textCollects=0,this.displayWidthCalls=0}}});function rectEqual(a,b){if(a===b)return!0;if(!a||!b)return!1;return a.x===b.x&&a.y===b.y&&a.width===b.width&&a.height===b.height}import{createLogger}from"loggily";function layoutPhase(root,width,height){let prevLayout=root.contentRect;if(!(prevLayout&&(prevLayout.width!==width||prevLayout.height!==height))&&!hasLayoutDirtyNodes(root))return;if(root.layoutNode){let nodeCount=countNodes(root);measureStats.reset();let t0=Date.now();root.layoutNode.calculateLayout(width,height);let elapsed=Date.now()-t0;log.debug?.(`calculateLayout: ${elapsed}ms (${nodeCount} nodes) measure: calls=${measureStats.calls} hits=${measureStats.cacheHits} collects=${measureStats.textCollects} displayWidth=${measureStats.displayWidthCalls}`)}propagateLayout(root,0,0)}function countNodes(node){let count=1;for(let child of node.children)count+=countNodes(child);return count}function hasLayoutDirtyNodes(node,path="root"){if(node.layoutDirty){let props=node.props;return log.debug?.(`dirty node found: ${path} (id=${props.id??"?"}, type=${node.type})`),!0}for(let i=0;i<node.children.length;i++)if(hasLayoutDirtyNodes(node.children[i],`${path}[${i}]`))return!0;return!1}function propagateLayout(node,parentX,parentY){if(node.prevLayout=node.contentRect,!node.layoutNode){let rect2={x:parentX,y:parentY,width:0,height:0};node.contentRect=rect2,node.layoutDirty=!1;for(let child of node.children)propagateLayout(child,parentX,parentY);return}let rect={x:parentX+node.layoutNode.getComputedLeft(),y:parentY+node.layoutNode.getComputedTop(),width:node.layoutNode.getComputedWidth(),height:node.layoutNode.getComputedHeight()};if(node.contentRect=rect,node.layoutDirty=!1,node.layoutChangedThisFrame=!!(node.prevLayout&&!rectEqual(node.prevLayout,node.contentRect)),process.env.SILVERY_STRICT&&node.layoutChangedThisFrame){if(rectEqual(node.prevLayout,node.contentRect)){let props=node.props;throw Error(`[SILVERY_STRICT] layoutChangedThisFrame=true but prevLayout equals contentRect (node: ${props.id??node.type}, rect: ${JSON.stringify(node.contentRect)})`)}}if(node.layoutChangedThisFrame){let ancestor=node.parent;while(ancestor&&!ancestor.subtreeDirty)ancestor.subtreeDirty=!0,ancestor=ancestor.parent}for(let child of node.children)propagateLayout(child,rect.x,rect.y)}function notifyLayoutSubscribers(node){let contentChanged=!rectEqual(node.prevLayout,node.contentRect),screenChanged=!rectEqual(node.prevScreenRect,node.screenRect),renderChanged=!rectEqual(node.prevRenderRect,node.renderRect);if(contentChanged||screenChanged||renderChanged)for(let subscriber of node.layoutSubscribers)subscriber();for(let child of node.children)notifyLayoutSubscribers(child)}function scrollPhase(root,options={}){let{skipStateUpdates=!1}=options;traverseTree2(root,(node)=>{let props=node.props;if(props.overflow!=="scroll")return;calculateScrollState(node,props,skipStateUpdates)})}function calculateScrollState(node,props,skipStateUpdates){let layout=node.contentRect;if(!layout||!node.layoutNode)return;let border=props.borderStyle?getBorderSize(props):{top:0,bottom:0,left:0,right:0},padding=getPadding(props),rawViewportHeight=layout.height-border.top-border.bottom-padding.top-padding.bottom,contentHeight=0,childPositions=[];for(let i=0;i<node.children.length;i++){let child=node.children[i];if(!child.layoutNode||!child.contentRect)continue;let childTop=child.contentRect.y-layout.y-border.top-padding.top,childBottom=childTop+child.contentRect.height,childProps=child.props;childPositions.push({child,top:childTop,bottom:childBottom,index:i,isSticky:childProps.position==="sticky",stickyTop:childProps.stickyTop,stickyBottom:childProps.stickyBottom}),contentHeight=Math.max(contentHeight,childBottom)}let viewportHeight=rawViewportHeight,showBorderlessIndicator=props.overflowIndicator===!0&&!props.borderStyle,hasOverflow=contentHeight>rawViewportHeight,indicatorReserve=showBorderlessIndicator&&hasOverflow?1:0,prevOffset=node.scrollState?.offset,scrollOffset=props.scrollOffset??prevOffset??0,scrollTo=props.scrollTo;if(scrollTo!==void 0&&scrollTo>=0&&scrollTo<childPositions.length){let target=childPositions.find((c)=>c.index===scrollTo);if(target){let effectiveHeight=viewportHeight-indicatorReserve,visibleTop2=scrollOffset,visibleBottom2=scrollOffset+effectiveHeight;if(target.top<visibleTop2)scrollOffset=target.top;else if(target.bottom>visibleBottom2)scrollOffset=target.bottom-effectiveHeight;scrollOffset=Math.max(0,scrollOffset),scrollOffset=Math.min(scrollOffset,Math.max(0,contentHeight-viewportHeight))}}let visibleTop=scrollOffset,visibleBottom=scrollOffset+viewportHeight-indicatorReserve,firstVisible=-1,lastVisible=-1,hiddenAbove=0,hiddenBelow=0;for(let cp of childPositions){if(cp.isSticky){if(firstVisible===-1)firstVisible=cp.index;lastVisible=Math.max(lastVisible,cp.index);continue}if(cp.top===cp.bottom)continue;if(cp.bottom<=visibleTop)hiddenAbove++;else if(cp.top>=visibleBottom)hiddenBelow++;else if(cp.top<visibleTop){if(firstVisible===-1)firstVisible=cp.index;lastVisible=Math.max(lastVisible,cp.index)}else if(cp.bottom>visibleBottom){if(firstVisible===-1)firstVisible=cp.index;if(lastVisible=cp.index,indicatorReserve>0)hiddenBelow++}else{if(firstVisible===-1)firstVisible=cp.index;lastVisible=cp.index}}let stickyChildren=[];for(let cp of childPositions){if(!cp.isSticky)continue;let childHeight=cp.bottom-cp.top,stickyTop=cp.stickyTop??0,stickyBottom=cp.stickyBottom,naturalRenderY=cp.top-scrollOffset,renderOffset;if(stickyBottom!==void 0){let bottomPinPosition=viewportHeight-stickyBottom-childHeight;renderOffset=Math.min(naturalRenderY,bottomPinPosition)}else if(naturalRenderY>=stickyTop)renderOffset=naturalRenderY;else if(childHeight>viewportHeight)renderOffset=Math.max(viewportHeight-childHeight,naturalRenderY);else renderOffset=stickyTop;if(renderOffset!==naturalRenderY)if(childHeight>viewportHeight)renderOffset=Math.max(viewportHeight-childHeight,renderOffset);else renderOffset=Math.max(0,Math.min(renderOffset,viewportHeight-childHeight));if(renderOffset+childHeight<=0||renderOffset>=viewportHeight)continue;stickyChildren.push({index:cp.index,renderOffset,naturalTop:cp.top,height:childHeight})}if(skipStateUpdates)return;let prevFirstVisible=node.scrollState?.firstVisibleChild??firstVisible,prevLastVisible=node.scrollState?.lastVisibleChild??lastVisible;if(scrollOffset!==prevOffset||firstVisible!==prevFirstVisible||lastVisible!==prevLastVisible)node.subtreeDirty=!0;node.scrollState={offset:scrollOffset,prevOffset:prevOffset??scrollOffset,contentHeight,viewportHeight,firstVisibleChild:firstVisible,lastVisibleChild:lastVisible,prevFirstVisibleChild:prevFirstVisible,prevLastVisibleChild:prevLastVisible,hiddenAbove,hiddenBelow,stickyChildren:stickyChildren.length>0?stickyChildren:void 0}}function stickyPhase(root){traverseTree2(root,(node)=>{let props=node.props;if(props.overflow==="scroll")return;let hasStickyChildren=!1;for(let child of node.children){let childProps=child.props;if(childProps.position==="sticky"&&childProps.stickyBottom!==void 0){hasStickyChildren=!0;break}}if(!hasStickyChildren){if(node.stickyChildren!==void 0)node.stickyChildren=void 0,node.subtreeDirty=!0;return}let layout=node.contentRect;if(!layout||!node.layoutNode)return;let border=props.borderStyle?getBorderSize(props):{top:0,bottom:0,left:0,right:0},padding=getPadding(props),parentContentHeight=layout.height-border.top-border.bottom-padding.top-padding.bottom,newStickyChildren=[];for(let i=0;i<node.children.length;i++){let child=node.children[i],childProps=child.props;if(childProps.position!=="sticky")continue;if(childProps.stickyBottom===void 0)continue;if(!child.contentRect)continue;let naturalY=child.contentRect.y-layout.y-border.top-padding.top,childHeight=child.contentRect.height,stickyBottom=childProps.stickyBottom,bottomPin=parentContentHeight-stickyBottom-childHeight,renderOffset=Math.max(naturalY,bottomPin);newStickyChildren.push({index:i,renderOffset,naturalTop:naturalY,height:childHeight})}let prev=node.stickyChildren,next=newStickyChildren.length>0?newStickyChildren:void 0,changed=!stickyChildrenEqual(prev,next);if(node.stickyChildren=next,changed)node.subtreeDirty=!0})}function stickyChildrenEqual(a,b){if(a===b)return!0;if(!a||!b)return!1;if(a.length!==b.length)return!1;for(let i=0;i<a.length;i++){let ai=a[i],bi=b[i];if(ai.index!==bi.index||ai.renderOffset!==bi.renderOffset||ai.naturalTop!==bi.naturalTop||ai.height!==bi.height)return!1}return!0}function traverseTree2(node,callback){callback(node);for(let child of node.children)traverseTree2(child,callback)}function screenRectPhase(root){propagateScreenRect(root,0)}function propagateScreenRect(node,ancestorScrollOffset){node.prevScreenRect=node.screenRect,node.prevRenderRect=node.renderRect;let content=node.contentRect;if(!content){node.screenRect=null,node.renderRect=null;for(let child of node.children)propagateScreenRect(child,ancestorScrollOffset);return}node.screenRect={x:content.x,y:content.y-ancestorScrollOffset,width:content.width,height:content.height},node.renderRect=node.screenRect;let scrollOffset=node.scrollState?.offset??0,childScrollOffset=ancestorScrollOffset+scrollOffset;computeStickyRenderRects(node);for(let child of node.children)propagateScreenRect(child,childScrollOffset)}function computeStickyRenderRects(parent){let stickyList=parent.scrollState?.stickyChildren??parent.stickyChildren;if(!stickyList||stickyList.length===0)return;let parentScreenRect=parent.screenRect;if(!parentScreenRect)return;let props=parent.props,border=props.borderStyle?getBorderSize(props):{top:0,bottom:0,left:0,right:0},padding=getPadding(props),contentOriginY=parentScreenRect.y+border.top+padding.top;for(let sticky of stickyList){let child=parent.children[sticky.index];if(!child?.screenRect)continue;child.renderRect={x:child.screenRect.x,y:contentOriginY+sticky.renderOffset,width:child.screenRect.width,height:child.screenRect.height}}}var log;var init_layout_phase=__esm(()=>{init_measure_stats();log=createLogger("silvery:layout")});function hexToRgb(hex){let match=/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i.exec(hex);if(!match)return null;return[parseInt(match[1],16),parseInt(match[2],16),parseInt(match[3],16)]}function rgbToHex(r,g,b){let clamp=(n)=>Math.max(0,Math.min(255,Math.round(n)));return`#${clamp(r).toString(16).padStart(2,"0")}${clamp(g).toString(16).padStart(2,"0")}${clamp(b).toString(16).padStart(2,"0")}`.toUpperCase()}function blend(a,b,t){let rgbA=hexToRgb(a),rgbB=hexToRgb(b);if(!rgbA||!rgbB)return a;return rgbToHex(rgbA[0]+(rgbB[0]-rgbA[0])*t,rgbA[1]+(rgbB[1]-rgbA[1])*t,rgbA[2]+(rgbB[2]-rgbA[2])*t)}function brighten(color,amount){return blend(color,"#FFFFFF",amount)}function contrastFg(bg){let rgb=hexToRgb(bg);if(!rgb)return"#FFFFFF";let[r,g,b]=rgb.map((c)=>{let s=c/255;return s<=0.03928?s/12.92:Math.pow((s+0.055)/1.055,2.4)});return 0.2126*r+0.7152*g+0.0722*b>0.179?"#000000":"#FFFFFF"}function rgbToHsl(r,g,b){r/=255,g/=255,b/=255;let max=Math.max(r,g,b),min=Math.min(r,g,b),l=(max+min)/2;if(max===min)return[0,0,l];let d=max-min,s=l>0.5?d/(2-max-min):d/(max+min),h=0;if(max===r)h=((g-b)/d+(g<b?6:0))/6;else if(max===g)h=((b-r)/d+2)/6;else h=((r-g)/d+4)/6;return[h*360,s,l]}function hslToHex(h,s,l){h=(h%360+360)%360;let a=s*Math.min(l,1-l),f=(n)=>{let k=(n+h/30)%12;return l-a*Math.max(Math.min(k-3,9-k,1),-1)};return rgbToHex(f(0)*255,f(8)*255,f(4)*255)}function hexToHsl(hex){let rgb=hexToRgb(hex);if(!rgb)return null;return rgbToHsl(rgb[0],rgb[1],rgb[2])}function complement(color){let hsl=hexToHsl(color);if(!hsl)return color;let[h,s,l]=hsl;return hslToHex(h+180,s,l)}function channelLuminance(c){let s=c/255;return s<=0.03928?s/12.92:Math.pow((s+0.055)/1.055,2.4)}function relativeLuminance(hex){let rgb=hexToRgb(hex);if(!rgb)return null;return 0.2126*channelLuminance(rgb[0])+0.7152*channelLuminance(rgb[1])+0.0722*channelLuminance(rgb[2])}function checkContrast(fg,bg){let fgLum=relativeLuminance(fg),bgLum=relativeLuminance(bg);if(fgLum===null||bgLum===null)return null;let lighter=Math.max(fgLum,bgLum),darker=Math.min(fgLum,bgLum),ratio=(lighter+0.05)/(darker+0.05);return{ratio,aa:ratio>=4.5,aaa:ratio>=7}}function ensureContrast(color,against,minRatio){let current=checkContrast(color,against);if(!current)return color;if(current.ratio>=minRatio)return color;let hsl=hexToHsl(color);if(!hsl)return color;let[h,s]=hsl,lightBg=contrastFg(against)==="#000000",lo,hi;if(lightBg)lo=0,hi=hsl[2];else lo=hsl[2],hi=1;for(let i=0;i<20;i++){let mid=(lo+hi)/2,candidate=hslToHex(h,s,mid),r=checkContrast(candidate,against);if(!r)break;if(lightBg)if(r.ratio>=minRatio)lo=mid;else hi=mid;else if(r.ratio>=minRatio)hi=mid;else lo=mid}return hslToHex(h,s,lightBg?lo:hi)}var init_contrast=()=>{};function deriveTheme(palette,mode="truecolor",adjustments){if(mode==="ansi16")return deriveAnsi16Theme(palette);return deriveTruecolorTheme(palette,adjustments)}function deriveTruecolorTheme(p,adjustments){let dark=p.dark??!0,bg=p.background;function ensure(token,color,against,target){let result=ensureContrast(color,against,target);if(adjustments&&result!==color){let before=checkContrast(color,against),after=checkContrast(result,against);adjustments.push({token,from:color,to:result,against,target,ratioBefore:before?.ratio??0,ratioAfter:after?.ratio??0})}return result}let surfacebg=blend(bg,p.foreground,0.05),popoverbg=blend(bg,p.foreground,0.08),fg=ensure("fg",p.foreground,popoverbg,AA),primary=ensure("primary",p.primary??(dark?p.yellow:p.blue),bg,AA),accent=ensure("accent",complement(primary),bg,AA),secondary=ensure("secondary",blend(primary,accent,0.35),bg,AA),error=ensure("error",p.red,bg,AA),warning=ensure("warning",p.yellow,bg,AA),success=ensure("success",p.green,bg,AA),info=ensure("info",blend(fg,accent,0.5),bg,AA),link=ensure("link",dark?p.brightBlue:p.blue,bg,AA),mutedbg=blend(bg,p.foreground,0.04),muted=ensure("muted",blend(fg,bg,0.4),mutedbg,AA),disabledfg=ensure("disabledfg",blend(fg,bg,0.5),bg,DIM),border=ensure("border",blend(bg,p.foreground,0.15),bg,FAINT),inputborder=ensure("inputborder",blend(bg,p.foreground,0.25),bg,CONTROL),selection=ensure("selection",p.selectionForeground,p.selectionBackground,AA),cursor=ensure("cursor",p.cursorText,p.cursorColor,AA);return{name:p.name??(dark?"derived-dark":"derived-light"),bg,fg,muted,mutedbg,surface:fg,surfacebg,popover:fg,popoverbg,inverse:contrastFg(blend(fg,bg,0.1)),inversebg:blend(fg,bg,0.1),cursor,cursorbg:p.cursorColor,selection,selectionbg:p.selectionBackground,primary,primaryfg:contrastFg(primary),secondary,secondaryfg:contrastFg(secondary),accent,accentfg:contrastFg(accent),error,errorfg:contrastFg(error),warning,warningfg:contrastFg(warning),success,successfg:contrastFg(success),info,infofg:contrastFg(info),border,inputborder,focusborder:link,link,disabledfg,palette:[p.black,p.red,p.green,p.yellow,p.blue,p.magenta,p.cyan,p.white,p.brightBlack,p.brightRed,p.brightGreen,p.brightYellow,p.brightBlue,p.brightMagenta,p.brightCyan,p.brightWhite]}}function deriveAnsi16Theme(p){let dark=p.dark??!0,primaryColor=dark?p.yellow:p.blue;return{name:p.name??(dark?"derived-ansi16-dark":"derived-ansi16-light"),bg:p.background,fg:p.foreground,muted:p.white,mutedbg:p.black,surface:p.foreground,surfacebg:p.black,popover:p.foreground,popoverbg:p.black,inverse:p.black,inversebg:p.brightWhite,cursor:p.cursorText,cursorbg:p.cursorColor,selection:p.selectionForeground,selectionbg:p.selectionBackground,primary:primaryColor,primaryfg:p.black,secondary:p.magenta,secondaryfg:p.black,accent:p.cyan,accentfg:p.black,error:dark?p.brightRed:p.red,errorfg:p.black,warning:p.yellow,warningfg:p.black,success:dark?p.brightGreen:p.green,successfg:p.black,info:p.cyan,infofg:p.black,border:p.brightBlack,inputborder:p.brightBlack,focusborder:dark?p.brightBlue:p.blue,link:dark?p.brightBlue:p.blue,disabledfg:p.brightBlack,palette:[p.black,p.red,p.green,p.yellow,p.blue,p.magenta,p.cyan,p.white,p.brightBlack,p.brightRed,p.brightGreen,p.brightYellow,p.brightBlue,p.brightMagenta,p.brightCyan,p.brightWhite]}}var AA=4.5,DIM=3,FAINT=1.5,CONTROL=3;var init_derive=__esm(()=>{init_contrast()});var catppuccinMocha,catppuccinFrappe,catppuccinMacchiato,catppuccinLatte;var init_catppuccin=__esm(()=>{catppuccinMocha={name:"catppuccin-mocha",dark:!0,black:"#11111B",red:"#F38BA8",green:"#A6E3A1",yellow:"#F9E2AF",blue:"#89B4FA",magenta:"#CBA6F7",cyan:"#94E2D5",white:"#A6ADC8",brightBlack:"#313244",brightRed:"#FAB387",brightGreen:brighten("#A6E3A1",0.15),brightYellow:brighten("#F9E2AF",0.15),brightBlue:brighten("#89B4FA",0.15),brightMagenta:"#F5C2E7",brightCyan:brighten("#94E2D5",0.15),brightWhite:"#CDD6F4",foreground:"#CDD6F4",background:"#1E1E2E",cursorColor:"#CDD6F4",cursorText:"#1E1E2E",selectionBackground:"#6C7086",selectionForeground:"#CDD6F4"},catppuccinFrappe={name:"catppuccin-frappe",dark:!0,black:"#232634",red:"#E78284",green:"#A6D189",yellow:"#E5C890",blue:"#8CAAEE",magenta:"#CA9EE6",cyan:"#81C8BE",white:"#A5ADCE",brightBlack:"#414559",brightRed:"#EF9F76",brightGreen:brighten("#A6D189",0.15),brightYellow:brighten("#E5C890",0.15),brightBlue:brighten("#8CAAEE",0.15),brightMagenta:"#F4B8E4",brightCyan:brighten("#81C8BE",0.15),brightWhite:"#C6D0F5",foreground:"#C6D0F5",background:"#303446",cursorColor:"#C6D0F5",cursorText:"#303446",selectionBackground:"#737994",selectionForeground:"#C6D0F5"},catppuccinMacchiato={name:"catppuccin-macchiato",dark:!0,black:"#181926",red:"#ED8796",green:"#A6DA95",yellow:"#EED49F",blue:"#8AADF4",magenta:"#C6A0F6",cyan:"#8BD5CA",white:"#A5ADCB",brightBlack:"#363A4F",brightRed:"#F5A97F",brightGreen:brighten("#A6DA95",0.15),brightYellow:brighten("#EED49F",0.15),brightBlue:brighten("#8AADF4",0.15),brightMagenta:"#F5BDE6",brightCyan:brighten("#8BD5CA",0.15),brightWhite:"#CAD3F5",foreground:"#CAD3F5",background:"#24273A",cursorColor:"#CAD3F5",cursorText:"#24273A",selectionBackground:"#6E738D",selectionForeground:"#CAD3F5"},catppuccinLatte={name:"catppuccin-latte",dark:!1,black:"#DCE0E8",red:"#D20F39",green:"#40A02B",yellow:"#DF8E1D",blue:"#1E66F5",magenta:"#8839EF",cyan:"#179299",white:"#6C6F85",brightBlack:"#CCD0DA",brightRed:"#FE640B",brightGreen:brighten("#40A02B",0.15),brightYellow:brighten("#DF8E1D",0.15),brightBlue:brighten("#1E66F5",0.15),brightMagenta:"#EA76CB",brightCyan:brighten("#179299",0.15),brightWhite:"#4C4F69",foreground:"#4C4F69",background:"#EFF1F5",cursorColor:"#4C4F69",cursorText:"#EFF1F5",selectionBackground:"#9CA0B0",selectionForeground:"#4C4F69"}});var nord;var init_nord=__esm(()=>{nord={name:"nord",dark:!0,black:"#2E3440",red:"#BF616A",green:"#A3BE8C",yellow:"#EBCB8B",blue:"#5E81AC",magenta:"#B48EAD",cyan:"#8FBCBB",white:"#D8DEE9",brightBlack:"#3B4252",brightRed:"#D08770",brightGreen:brighten("#A3BE8C",0.15),brightYellow:brighten("#EBCB8B",0.15),brightBlue:brighten("#5E81AC",0.15),brightMagenta:"#B48EAD",brightCyan:brighten("#8FBCBB",0.15),brightWhite:"#ECEFF4",foreground:"#ECEFF4",background:"#2E3440",cursorColor:"#ECEFF4",cursorText:"#2E3440",selectionBackground:"#4C566A",selectionForeground:"#ECEFF4"}});var dracula;var init_dracula=__esm(()=>{dracula={name:"dracula",dark:!0,black:"#21222C",red:"#FF5555",green:"#50FA7B",yellow:"#F1FA8C",blue:"#BD93F9",magenta:"#BD93F9",cyan:"#8BE9FD",white:"#6272A4",brightBlack:"#44475A",brightRed:"#FFB86C",brightGreen:brighten("#50FA7B",0.15),brightYellow:brighten("#F1FA8C",0.15),brightBlue:brighten("#BD93F9",0.15),brightMagenta:"#FF79C6",brightCyan:brighten("#8BE9FD",0.15),brightWhite:"#F8F8F2",foreground:"#F8F8F2",background:"#282A36",cursorColor:"#F8F8F2",cursorText:"#282A36",selectionBackground:"#6272A4",selectionForeground:"#F8F8F2"}});var solarizedDark,solarizedLight;var init_solarized=__esm(()=>{solarizedDark={name:"solarized-dark",dark:!0,black:"#002B36",red:"#DC322F",green:"#859900",yellow:"#B58900",blue:"#268BD2",magenta:"#6C71C4",cyan:"#2AA198",white:"#839496",brightBlack:"#586E75",brightRed:"#CB4B16",brightGreen:brighten("#859900",0.15),brightYellow:brighten("#B58900",0.15),brightBlue:brighten("#268BD2",0.15),brightMagenta:"#D33682",brightCyan:brighten("#2AA198",0.15),brightWhite:"#FDF6E3",foreground:"#FDF6E3",background:"#073642",cursorColor:"#FDF6E3",cursorText:"#073642",selectionBackground:"#657B83",selectionForeground:"#FDF6E3"},solarizedLight={name:"solarized-light",dark:!1,black:"#FDF6E3",red:"#DC322F",green:"#859900",yellow:"#B58900",blue:"#268BD2",magenta:"#6C71C4",cyan:"#2AA198",white:"#657B83",brightBlack:"#DDD6C1",brightRed:"#CB4B16",brightGreen:brighten("#859900",0.15),brightYellow:brighten("#B58900",0.15),brightBlue:brighten("#268BD2",0.15),brightMagenta:"#D33682",brightCyan:brighten("#2AA198",0.15),brightWhite:"#073642",foreground:"#073642",background:"#EEE8D5",cursorColor:"#073642",cursorText:"#EEE8D5",selectionBackground:"#93A1A1",selectionForeground:"#073642"}});var tokyoNight,tokyoNightStorm,tokyoNightDay;var init_tokyo_night=__esm(()=>{tokyoNight={name:"tokyo-night",dark:!0,black:"#1A1B26",red:"#F7768E",green:"#9ECE6A",yellow:"#E0AF68",blue:"#7AA2F7",magenta:"#BB9AF7",cyan:"#73DACA",white:"#A9B1D6",brightBlack:"#292E42",brightRed:"#FF9E64",brightGreen:brighten("#9ECE6A",0.15),brightYellow:brighten("#E0AF68",0.15),brightBlue:brighten("#7AA2F7",0.15),brightMagenta:"#FF007C",brightCyan:brighten("#73DACA",0.15),brightWhite:"#C0CAF5",foreground:"#C0CAF5",background:"#24283B",cursorColor:"#C0CAF5",cursorText:"#24283B",selectionBackground:"#545C7E",selectionForeground:"#C0CAF5"},tokyoNightStorm={name:"tokyo-night-storm",dark:!0,black:"#1F2335",red:"#F7768E",green:"#9ECE6A",yellow:"#E0AF68",blue:"#7AA2F7",magenta:"#BB9AF7",cyan:"#73DACA",white:"#A9B1D6",brightBlack:"#292E42",brightRed:"#FF9E64",brightGreen:brighten("#9ECE6A",0.15),brightYellow:brighten("#E0AF68",0.15),brightBlue:brighten("#7AA2F7",0.15),brightMagenta:"#FF007C",brightCyan:brighten("#73DACA",0.15),brightWhite:"#C0CAF5",foreground:"#C0CAF5",background:"#24283B",cursorColor:"#C0CAF5",cursorText:"#24283B",selectionBackground:"#545C7E",selectionForeground:"#C0CAF5"},tokyoNightDay={name:"tokyo-night-day",dark:!1,black:"#E1E2E7",red:"#F52A65",green:"#587539",yellow:"#8C6C3E",blue:"#2E7DE9",magenta:"#9854F1",cyan:"#118C74",white:"#6172B0",brightBlack:"#C4C5CB",brightRed:"#B15C00",brightGreen:brighten("#587539",0.15),brightYellow:brighten("#8C6C3E",0.15),brightBlue:brighten("#2E7DE9",0.15),brightMagenta:"#F52A65",brightCyan:brighten("#118C74",0.15),brightWhite:"#3760BF",foreground:"#3760BF",background:"#D5D6DB",cursorColor:"#3760BF",cursorText:"#D5D6DB",selectionBackground:"#9699A3",selectionForeground:"#3760BF"}});var oneDark;var init_one_dark=__esm(()=>{oneDark={name:"one-dark",dark:!0,black:"#21252B",red:"#E06C75",green:"#98C379",yellow:"#E5C07B",blue:"#61AFEF",magenta:"#C678DD",cyan:"#56B6C2",white:"#ABB2BF",brightBlack:"#2C313A",brightRed:"#D19A66",brightGreen:brighten("#98C379",0.15),brightYellow:brighten("#E5C07B",0.15),brightBlue:brighten("#61AFEF",0.15),brightMagenta:"#E06C75",brightCyan:brighten("#56B6C2",0.15),brightWhite:"#ABB2BF",foreground:"#ABB2BF",background:"#282C34",cursorColor:"#ABB2BF",cursorText:"#282C34",selectionBackground:"#5C6370",selectionForeground:"#ABB2BF"}});var gruvboxDark,gruvboxLight;var init_gruvbox=__esm(()=>{gruvboxDark={name:"gruvbox-dark",dark:!0,black:"#1D2021",red:"#FB4934",green:"#B8BB26",yellow:"#FABD2F",blue:"#83A598",magenta:"#D3869B",cyan:"#8EC07C",white:"#BDAE93",brightBlack:"#3C3836",brightRed:"#FE8019",brightGreen:brighten("#B8BB26",0.15),brightYellow:brighten("#FABD2F",0.15),brightBlue:brighten("#83A598",0.15),brightMagenta:"#D3869B",brightCyan:brighten("#8EC07C",0.15),brightWhite:"#EBDBB2",foreground:"#EBDBB2",background:"#282828",cursorColor:"#EBDBB2",cursorText:"#282828",selectionBackground:"#665C54",selectionForeground:"#EBDBB2"},gruvboxLight={name:"gruvbox-light",dark:!1,black:"#F9F5D7",red:"#CC241D",green:"#98971A",yellow:"#D79921",blue:"#458588",magenta:"#B16286",cyan:"#689D6A",white:"#665C54",brightBlack:"#EBDBB2",brightRed:"#D65D0E",brightGreen:brighten("#98971A",0.15),brightYellow:brighten("#D79921",0.15),brightBlue:brighten("#458588",0.15),brightMagenta:"#B16286",brightCyan:brighten("#689D6A",0.15),brightWhite:"#3C3836",foreground:"#3C3836",background:"#FBF1C7",cursorColor:"#3C3836",cursorText:"#FBF1C7",selectionBackground:"#A89984",selectionForeground:"#3C3836"}});var rosePine,rosePineMoon,rosePineDawn;var init_rose_pine=__esm(()=>{rosePine={name:"rose-pine",dark:!0,black:"#191724",red:"#EB6F92",green:"#31748F",yellow:"#F6C177",blue:"#3E8FB0",magenta:"#C4A7E7",cyan:"#9CCFD8",white:"#908CAA",brightBlack:"#26233A",brightRed:"#EA9A97",brightGreen:brighten("#31748F",0.15),brightYellow:brighten("#F6C177",0.15),brightBlue:brighten("#3E8FB0",0.15),brightMagenta:"#EBBCBA",brightCyan:brighten("#9CCFD8",0.15),brightWhite:"#E0DEF4",foreground:"#E0DEF4",background:"#1F1D2E",cursorColor:"#E0DEF4",cursorText:"#1F1D2E",selectionBackground:"#6E6A86",selectionForeground:"#E0DEF4"},rosePineMoon={name:"rose-pine-moon",dark:!0,black:"#232136",red:"#EB6F92",green:"#3E8FB0",yellow:"#F6C177",blue:"#3E8FB0",magenta:"#C4A7E7",cyan:"#9CCFD8",white:"#908CAA",brightBlack:"#393552",brightRed:"#EA9A97",brightGreen:brighten("#3E8FB0",0.15),brightYellow:brighten("#F6C177",0.15),brightBlue:brighten("#3E8FB0",0.15),brightMagenta:"#EA9A97",brightCyan:brighten("#9CCFD8",0.15),brightWhite:"#E0DEF4",foreground:"#E0DEF4",background:"#2A273F",cursorColor:"#E0DEF4",cursorText:"#2A273F",selectionBackground:"#6E6A86",selectionForeground:"#E0DEF4"},rosePineDawn={name:"rose-pine-dawn",dark:!1,black:"#FAF4ED",red:"#B4637A",green:"#286983",yellow:"#EA9D34",blue:"#286983",magenta:"#907AA9",cyan:"#56949F",white:"#797593",brightBlack:"#F2E9E1",brightRed:"#D7827E",brightGreen:brighten("#286983",0.15),brightYellow:brighten("#EA9D34",0.15),brightBlue:brighten("#286983",0.15),brightMagenta:"#D7827E",brightCyan:brighten("#56949F",0.15),brightWhite:"#575279",foreground:"#575279",background:"#FFFAF3",cursorColor:"#575279",cursorText:"#FFFAF3",selectionBackground:"#9893A5",selectionForeground:"#575279"}});var kanagawaWave,kanagawaDragon,kanagawaLotus;var init_kanagawa=__esm(()=>{kanagawaWave={name:"kanagawa-wave",dark:!0,black:"#16161D",red:"#C34043",green:"#98BB6C",yellow:"#E6C384",blue:"#7E9CD8",magenta:"#957FB8",cyan:"#6A9589",white:"#727169",brightBlack:"#2A2A37",brightRed:"#FFA066",brightGreen:brighten("#98BB6C",0.15),brightYellow:brighten("#E6C384",0.15),brightBlue:brighten("#7E9CD8",0.15),brightMagenta:"#D27E99",brightCyan:brighten("#6A9589",0.15),brightWhite:"#DCD7BA",foreground:"#DCD7BA",background:"#1F1F28",cursorColor:"#DCD7BA",cursorText:"#1F1F28",selectionBackground:"#54546D",selectionForeground:"#DCD7BA"},kanagawaDragon={name:"kanagawa-dragon",dark:!0,black:"#0d0c0c",red:"#c4746e",green:"#87a987",yellow:"#c4b28a",blue:"#8ba4b0",magenta:"#8992a7",cyan:"#8ea4a2",white:"#737c73",brightBlack:"#282727",brightRed:"#b6927b",brightGreen:brighten("#87a987",0.15),brightYellow:brighten("#c4b28a",0.15),brightBlue:brighten("#8ba4b0",0.15),brightMagenta:"#a292a3",brightCyan:brighten("#8ea4a2",0.15),brightWhite:"#c5c9c5",foreground:"#c5c9c5",background:"#181616",cursorColor:"#c5c9c5",cursorText:"#181616",selectionBackground:"#625e5a",selectionForeground:"#c5c9c5"},kanagawaLotus={name:"kanagawa-lotus",dark:!1,black:"#e5ddb0",red:"#c84053",green:"#6f894e",yellow:"#de9800",blue:"#4d699b",magenta:"#624c83",cyan:"#597b75",white:"#716e61",brightBlack:"#dcd5ac",brightRed:"#cc6d00",brightGreen:brighten("#6f894e",0.15),brightYellow:brighten("#de9800",0.15),brightBlue:brighten("#4d699b",0.15),brightMagenta:"#b35b79",brightCyan:brighten("#597b75",0.15),brightWhite:"#545464",foreground:"#545464",background:"#f2ecbc",cursorColor:"#545464",cursorText:"#f2ecbc",selectionBackground:"#8a8980",selectionForeground:"#545464"}});var everforestDark,everforestLight;var init_everforest=__esm(()=>{everforestDark={name:"everforest-dark",dark:!0,black:"#232a2e",red:"#e67e80",green:"#a7c080",yellow:"#dbbc7f",blue:"#7fbbb3",magenta:"#d699b6",cyan:"#83c092",white:"#859289",brightBlack:"#343f44",brightRed:"#e69875",brightGreen:brighten("#a7c080",0.15),brightYellow:brighten("#dbbc7f",0.15),brightBlue:brighten("#7fbbb3",0.15),brightMagenta:"#e67e80",brightCyan:brighten("#83c092",0.15),brightWhite:"#d3c6aa",foreground:"#d3c6aa",background:"#2d353b",cursorColor:"#d3c6aa",cursorText:"#2d353b",selectionBackground:"#4f585e",selectionForeground:"#d3c6aa"},everforestLight={name:"everforest-light",dark:!1,black:"#efebd4",red:"#f85552",green:"#8da101",yellow:"#dfa000",blue:"#3a94c5",magenta:"#df69ba",cyan:"#35a77c",white:"#939f91",brightBlack:"#f4f0d9",brightRed:"#f57d26",brightGreen:brighten("#8da101",0.15),brightYellow:brighten("#dfa000",0.15),brightBlue:brighten("#3a94c5",0.15),brightMagenta:"#f85552",brightCyan:brighten("#35a77c",0.15),brightWhite:"#5c6a72",foreground:"#5c6a72",background:"#fdf6e3",cursorColor:"#5c6a72",cursorText:"#fdf6e3",selectionBackground:"#e0dcc7",selectionForeground:"#5c6a72"}});var monokai,monokaiPro;var init_monokai=__esm(()=>{monokai={name:"monokai",dark:!0,black:"#1a1a1a",red:"#F92672",green:"#A6E22E",yellow:"#E6DB74",blue:"#66D9EF",magenta:"#AE81FF",cyan:"#66D9EF",white:"#a59f85",brightBlack:"#3e3d32",brightRed:"#FD971F",brightGreen:brighten("#A6E22E",0.15),brightYellow:brighten("#E6DB74",0.15),brightBlue:brighten("#66D9EF",0.15),brightMagenta:"#F92672",brightCyan:brighten("#66D9EF",0.15),brightWhite:"#F8F8F2",foreground:"#F8F8F2",background:"#272822",cursorColor:"#F8F8F2",cursorText:"#272822",selectionBackground:"#75715E",selectionForeground:"#F8F8F2"},monokaiPro={name:"monokai-pro",dark:!0,black:"#221f22",red:"#ff6188",green:"#a9dc76",yellow:"#ffd866",blue:"#78dce8",magenta:"#ab9df2",cyan:"#78dce8",white:"#939293",brightBlack:"#403e41",brightRed:"#fc9867",brightGreen:brighten("#a9dc76",0.15),brightYellow:brighten("#ffd866",0.15),brightBlue:brighten("#78dce8",0.15),brightMagenta:"#ff6188",brightCyan:brighten("#78dce8",0.15),brightWhite:"#fcfcfa",foreground:"#fcfcfa",background:"#2d2a2e",cursorColor:"#fcfcfa",cursorText:"#2d2a2e",selectionBackground:"#727072",selectionForeground:"#fcfcfa"}});var snazzy;var init_snazzy=__esm(()=>{snazzy={name:"snazzy",dark:!0,black:"#222430",red:"#ff5c57",green:"#5af78e",yellow:"#f3f99d",blue:"#57c7ff",magenta:"#b267e6",cyan:"#9aedfe",white:"#97979b",brightBlack:"#34353e",brightRed:"#ff9f43",brightGreen:brighten("#5af78e",0.15),brightYellow:brighten("#f3f99d",0.15),brightBlue:brighten("#57c7ff",0.15),brightMagenta:"#ff6ac1",brightCyan:brighten("#9aedfe",0.15),brightWhite:"#eff0eb",foreground:"#eff0eb",background:"#282a36",cursorColor:"#eff0eb",cursorText:"#282a36",selectionBackground:"#686868",selectionForeground:"#eff0eb"}});var materialDark,materialLight;var init_material=__esm(()=>{materialDark={name:"material-dark",dark:!0,black:"#171717",red:"#ff5370",green:"#c3e88d",yellow:"#ffcb6b",blue:"#82aaff",magenta:"#c792ea",cyan:"#89ddff",white:"#545454",brightBlack:"#2c2c2c",brightRed:"#f78c6c",brightGreen:brighten("#c3e88d",0.15),brightYellow:brighten("#ffcb6b",0.15),brightBlue:brighten("#82aaff",0.15),brightMagenta:"#f07178",brightCyan:brighten("#89ddff",0.15),brightWhite:"#eeffff",foreground:"#eeffff",background:"#212121",cursorColor:"#eeffff",cursorText:"#212121",selectionBackground:"#424242",selectionForeground:"#eeffff"},materialLight={name:"material-light",dark:!1,black:"#ecf0f1",red:"#e53935",green:"#91b859",yellow:"#ffb62c",blue:"#6182b8",magenta:"#7c4dff",cyan:"#39adb5",white:"#90a4ae",brightBlack:"#ebf4f3",brightRed:"#f76d47",brightGreen:brighten("#91b859",0.15),brightYellow:brighten("#ffb62c",0.15),brightBlue:brighten("#6182b8",0.15),brightMagenta:"#ff5370",brightCyan:brighten("#39adb5",0.15),brightWhite:"#546E7A",foreground:"#546E7A",background:"#fafafa",cursorColor:"#546E7A",cursorText:"#fafafa",selectionBackground:"#cfd8dc",selectionForeground:"#546E7A"}});var palenight;var init_palenight=__esm(()=>{palenight={name:"palenight",dark:!0,black:"#1c1f2b",red:"#f07178",green:"#c3e88d",yellow:"#ffcb6b",blue:"#82aaff",magenta:"#c792ea",cyan:"#89ddff",white:"#676e95",brightBlack:"#343b51",brightRed:"#f78c6c",brightGreen:brighten("#c3e88d",0.15),brightYellow:brighten("#ffcb6b",0.15),brightBlue:brighten("#82aaff",0.15),brightMagenta:"#ff5370",brightCyan:brighten("#89ddff",0.15),brightWhite:"#a6accd",foreground:"#a6accd",background:"#292d3e",cursorColor:"#a6accd",cursorText:"#292d3e",selectionBackground:"#4e5579",selectionForeground:"#a6accd"}});var ayuDark,ayuMirage,ayuLight;var init_ayu=__esm(()=>{ayuDark={name:"ayu-dark",dark:!0,black:"#05070A",red:"#D95757",green:"#AAD94C",yellow:"#E6B450",blue:"#59C2FF",magenta:"#D2A6FF",cyan:"#95E6CB",white:"#636A72",brightBlack:"#11151C",brightRed:"#F29668",brightGreen:brighten("#AAD94C",0.15),brightYellow:brighten("#E6B450",0.15),brightBlue:brighten("#59C2FF",0.15),brightMagenta:"#F07178",brightCyan:brighten("#95E6CB",0.15),brightWhite:"#BFBDB6",foreground:"#BFBDB6",background:"#0B0E14",cursorColor:"#BFBDB6",cursorText:"#0B0E14",selectionBackground:"#565B66",selectionForeground:"#BFBDB6"},ayuMirage={name:"ayu-mirage",dark:!0,black:"#101521",red:"#FF6666",green:"#D5FF80",yellow:"#FFCC66",blue:"#73D0FF",magenta:"#DFBFFF",cyan:"#95E6CB",white:"#6C7A8B",brightBlack:"#171B24",brightRed:"#F29E74",brightGreen:brighten("#D5FF80",0.15),brightYellow:brighten("#FFCC66",0.15),brightBlue:brighten("#73D0FF",0.15),brightMagenta:"#F28779",brightCyan:brighten("#95E6CB",0.15),brightWhite:"#CCCAC2",foreground:"#CCCAC2",background:"#1F2430",cursorColor:"#CCCAC2",cursorText:"#1F2430",selectionBackground:"#707A8C",selectionForeground:"#CCCAC2"},ayuLight={name:"ayu-light",dark:!1,black:"#E7EAED",red:"#E65050",green:"#86B300",yellow:"#FFAA33",blue:"#399EE6",magenta:"#A37ACC",cyan:"#4CBF99",white:"#ABADB1",brightBlack:"#F3F4F5",brightRed:"#ED9366",brightGreen:brighten("#86B300",0.15),brightYellow:brighten("#FFAA33",0.15),brightBlue:brighten("#399EE6",0.15),brightMagenta:"#F07171",brightCyan:brighten("#4CBF99",0.15),brightWhite:"#5C6166",foreground:"#5C6166",background:"#F8F9FA",cursorColor:"#5C6166",cursorText:"#F8F9FA",selectionBackground:"#8A9199",selectionForeground:"#5C6166"}});var nightfox,dawnfox;var init_nightfox=__esm(()=>{nightfox={name:"nightfox",dark:!0,black:"#131A24",red:"#C94F6D",green:"#81B29A",yellow:"#DBC074",blue:"#719CD6",magenta:"#9D79D6",cyan:"#63CDCF",white:"#71839B",brightBlack:"#212E3F",brightRed:"#F4A261",brightGreen:brighten("#81B29A",0.15),brightYellow:brighten("#DBC074",0.15),brightBlue:brighten("#719CD6",0.15),brightMagenta:"#D67AD2",brightCyan:brighten("#63CDCF",0.15),brightWhite:"#CDCECF",foreground:"#CDCECF",background:"#192330",cursorColor:"#CDCECF",cursorText:"#192330",selectionBackground:"#39506D",selectionForeground:"#CDCECF"},dawnfox={name:"dawnfox",dark:!1,black:"#EBE5DF",red:"#B4637A",green:"#618774",yellow:"#EA9D34",blue:"#286983",magenta:"#907AA9",cyan:"#56949F",white:"#A8A3B3",brightBlack:"#EBE0DF",brightRed:"#D7827E",brightGreen:brighten("#618774",0.15),brightYellow:brighten("#EA9D34",0.15),brightBlue:brighten("#286983",0.15),brightMagenta:"#D685AF",brightCyan:brighten("#56949F",0.15),brightWhite:"#575279",foreground:"#575279",background:"#FAF4ED",cursorColor:"#575279",cursorText:"#FAF4ED",selectionBackground:"#BDBFC9",selectionForeground:"#575279"}});var horizon;var init_horizon=__esm(()=>{horizon={name:"horizon",dark:!0,black:"#16161C",red:"#E95678",green:"#29D398",yellow:"#FAC29A",blue:"#26BBD9",magenta:"#B877DB",cyan:"#59E1E3",white:"#6C6F93",brightBlack:"#232530",brightRed:"#FAB795",brightGreen:brighten("#29D398",0.15),brightYellow:brighten("#FAC29A",0.15),brightBlue:brighten("#26BBD9",0.15),brightMagenta:"#EE64AC",brightCyan:brighten("#59E1E3",0.15),brightWhite:"#D5D8DA",foreground:"#D5D8DA",background:"#1C1E26",cursorColor:"#D5D8DA",cursorText:"#1C1E26",selectionBackground:"#2E303E",selectionForeground:"#D5D8DA"}});var moonfly;var init_moonfly=__esm(()=>{moonfly={name:"moonfly",dark:!0,black:"#121212",red:"#FF5D5D",green:"#8CC85F",yellow:"#E3C78A",blue:"#80A0FF",magenta:"#AE81FF",cyan:"#79DAC8",white:"#808080",brightBlack:"#1C1C1C",brightRed:"#DE935F",brightGreen:brighten("#8CC85F",0.15),brightYellow:brighten("#E3C78A",0.15),brightBlue:brighten("#80A0FF",0.15),brightMagenta:"#FF5189",brightCyan:brighten("#79DAC8",0.15),brightWhite:"#C6C6C6",foreground:"#C6C6C6",background:"#080808",cursorColor:"#C6C6C6",cursorText:"#080808",selectionBackground:"#323437",selectionForeground:"#C6C6C6"}});var nightfly;var init_nightfly=__esm(()=>{nightfly={name:"nightfly",dark:!0,black:"#081E2F",red:"#FC514E",green:"#A1CD5E",yellow:"#E3D18A",blue:"#82AAFF",magenta:"#C792EA",cyan:"#7FDBCA",white:"#7C8F8F",brightBlack:"#0E293F",brightRed:"#F78C6C",brightGreen:brighten("#A1CD5E",0.15),brightYellow:brighten("#E3D18A",0.15),brightBlue:brighten("#82AAFF",0.15),brightMagenta:"#FF5874",brightCyan:brighten("#7FDBCA",0.15),brightWhite:"#C3CCDC",foreground:"#C3CCDC",background:"#011627",cursorColor:"#C3CCDC",cursorText:"#011627",selectionBackground:"#2C3043",selectionForeground:"#C3CCDC"}});var oxocarbonDark,oxocarbonLight;var init_oxocarbon=__esm(()=>{oxocarbonDark={name:"oxocarbon-dark",dark:!0,black:"#131313",red:"#EE5396",green:"#42BE65",yellow:"#82CFFF",blue:"#78A9FF",magenta:"#BE95FF",cyan:"#08BDBA",white:"#5C5C5C",brightBlack:"#2A2A2A",brightRed:"#FF7EB6",brightGreen:brighten("#42BE65",0.15),brightYellow:brighten("#82CFFF",0.15),brightBlue:brighten("#78A9FF",0.15),brightMagenta:"#FF7EB6",brightCyan:brighten("#08BDBA",0.15),brightWhite:"#F3F3F3",foreground:"#F3F3F3",background:"#161616",cursorColor:"#F3F3F3",cursorText:"#161616",selectionBackground:"#404040",selectionForeground:"#F3F3F3"},oxocarbonLight={name:"oxocarbon-light",dark:!1,black:"#F3F3F3",red:"#EE5396",green:"#42BE65",yellow:"#FFAB91",blue:"#0F62FE",magenta:"#BE95FF",cyan:"#08BDBA",white:"#90A4AE",brightBlack:"#D5D5D5",brightRed:"#FF6F00",brightGreen:brighten("#42BE65",0.15),brightYellow:brighten("#FFAB91",0.15),brightBlue:brighten("#0F62FE",0.15),brightMagenta:"#FF7EB6",brightCyan:brighten("#08BDBA",0.15),brightWhite:"#37474F",foreground:"#37474F",background:"#FFFFFF",cursorColor:"#37474F",cursorText:"#FFFFFF",selectionBackground:"#525252",selectionForeground:"#37474F"}});var sonokai;var init_sonokai=__esm(()=>{sonokai={name:"sonokai",dark:!0,black:"#181819",red:"#FC5D7C",green:"#9ED072",yellow:"#E7C664",blue:"#76CCE0",magenta:"#B39DF3",cyan:"#76CCE0",white:"#7F8490",brightBlack:"#33353F",brightRed:"#F39660",brightGreen:brighten("#9ED072",0.15),brightYellow:brighten("#E7C664",0.15),brightBlue:brighten("#76CCE0",0.15),brightMagenta:"#FC5D7C",brightCyan:brighten("#76CCE0",0.15),brightWhite:"#E2E2E3",foreground:"#E2E2E3",background:"#2C2E34",cursorColor:"#E2E2E3",cursorText:"#2C2E34",selectionBackground:"#414550",selectionForeground:"#E2E2E3"}});var edgeDark,edgeLight;var init_edge=__esm(()=>{edgeDark={name:"edge-dark",dark:!0,black:"#202023",red:"#EC7279",green:"#A0C980",yellow:"#DEB974",blue:"#6CB6EB",magenta:"#D38AEA",cyan:"#5DBBC1",white:"#758094",brightBlack:"#33353F",brightRed:"#DEB974",brightGreen:brighten("#A0C980",0.15),brightYellow:brighten("#DEB974",0.15),brightBlue:brighten("#6CB6EB",0.15),brightMagenta:"#EC7279",brightCyan:brighten("#5DBBC1",0.15),brightWhite:"#C5CDD9",foreground:"#C5CDD9",background:"#2C2E34",cursorColor:"#C5CDD9",cursorText:"#2C2E34",selectionBackground:"#414550",selectionForeground:"#C5CDD9"},edgeLight={name:"edge-light",dark:!1,black:"#DDE2E7",red:"#D05858",green:"#608E32",yellow:"#BE7E05",blue:"#5079BE",magenta:"#B05CCC",cyan:"#3A8B84",white:"#8790A0",brightBlack:"#EEF1F4",brightRed:"#BE7E05",brightGreen:brighten("#608E32",0.15),brightYellow:brighten("#BE7E05",0.15),brightBlue:brighten("#5079BE",0.15),brightMagenta:"#D05858",brightCyan:brighten("#3A8B84",0.15),brightWhite:"#4B505B",foreground:"#4B505B",background:"#FAFAFA",cursorColor:"#4B505B",cursorText:"#FAFAFA",selectionBackground:"#DDE2E7",selectionForeground:"#4B505B"}});var modusVivendi,modusOperandi;var init_modus=__esm(()=>{modusVivendi={name:"modus-vivendi",dark:!0,black:"#000000",red:"#FF5F59",green:"#44BC44",yellow:"#D0BC00",blue:"#2FAFFF",magenta:"#B6A0FF",cyan:"#00D3D0",white:"#989898",brightBlack:"#1E1E1E",brightRed:"#FEC43F",brightGreen:brighten("#44BC44",0.15),brightYellow:brighten("#D0BC00",0.15),brightBlue:brighten("#2FAFFF",0.15),brightMagenta:"#FEACD0",brightCyan:brighten("#00D3D0",0.15),brightWhite:"#FFFFFF",foreground:"#FFFFFF",background:"#000000",cursorColor:"#FFFFFF",cursorText:"#000000",selectionBackground:"#535353",selectionForeground:"#FFFFFF"},modusOperandi={name:"modus-operandi",dark:!1,black:"#E0E0E0",red:"#A60000",green:"#006800",yellow:"#6F5500",blue:"#0031A9",magenta:"#531AB6",cyan:"#005E8B",white:"#595959",brightBlack:"#F2F2F2",brightRed:"#884900",brightGreen:brighten("#006800",0.15),brightYellow:brighten("#6F5500",0.15),brightBlue:brighten("#0031A9",0.15),brightMagenta:"#721045",brightCyan:brighten("#005E8B",0.15),brightWhite:"#000000",foreground:"#000000",background:"#FFFFFF",cursorColor:"#000000",cursorText:"#FFFFFF",selectionBackground:"#9F9F9F",selectionForeground:"#000000"}});var ansi16DarkTheme,defaultDarkTheme,defaultLightTheme;var init_palettes=__esm(()=>{init_derive();init_catppuccin();init_nord();init_dracula();init_solarized();init_tokyo_night();init_one_dark();init_gruvbox();init_rose_pine();init_kanagawa();init_everforest();init_monokai();init_snazzy();init_material();init_palenight();init_ayu();init_nightfox();init_horizon();init_moonfly();init_nightfly();init_oxocarbon();init_sonokai();init_edge();init_modus();init_catppuccin();init_nord();init_dracula();init_solarized();init_tokyo_night();init_one_dark();init_gruvbox();init_rose_pine();init_kanagawa();init_everforest();init_monokai();init_snazzy();init_material();init_palenight();init_ayu();init_nightfox();init_horizon();init_moonfly();init_nightfly();init_oxocarbon();init_sonokai();init_edge();init_modus();ansi16DarkTheme={name:"dark-ansi16",bg:"",fg:"whiteBright",muted:"white",mutedbg:"black",surface:"whiteBright",surfacebg:"black",popover:"whiteBright",popoverbg:"black",inverse:"black",inversebg:"whiteBright",cursor:"black",cursorbg:"yellow",selection:"black",selectionbg:"yellow",primary:"yellow",primaryfg:"black",secondary:"white",secondaryfg:"black",accent:"blueBright",accentfg:"black",error:"redBright",errorfg:"black",warning:"yellow",warningfg:"black",success:"greenBright",successfg:"black",info:"cyan",infofg:"black",border:"gray",inputborder:"gray",focusborder:"blueBright",link:"blueBright",disabledfg:"gray",palette:["black","red","green","yellow","blue","magenta","cyan","white","blackBright","redBright","greenBright","yellowBright","blueBright","magentaBright","cyanBright","whiteBright"]},defaultDarkTheme=deriveTheme(nord),defaultLightTheme=deriveTheme(catppuccinLatte)});function getActiveTheme(){return _contextStack.length>0?_contextStack[_contextStack.length-1]:_activeTheme}function pushContextTheme(theme){_contextStack.push(theme)}function popContextTheme(){_contextStack.pop()}var _activeTheme,_contextStack;var init_state=__esm(()=>{init_palettes();_activeTheme=ansi16DarkTheme;_contextStack=[]});function resolveThemeColor(color,theme){if(!color)return;if(!color.startsWith("$"))return color;let token=color.slice(1);if(token.startsWith("color")){let idx=parseInt(token.slice(5),10);if(idx>=0&&idx<16&&theme.palette&&idx<theme.palette.length)return theme.palette[idx]}let key=token.replace(/-/g,""),val=theme[key];return typeof val==="string"?val:color}function blendColors(c1,c2,t){return{r:Math.round(c1.r*(1-t)+c2.r*t),g:Math.round(c1.g*(1-t)+c2.g*t),b:Math.round(c1.b*(1-t)+c2.b*t)}}function parseColor(color){if(color==="inherit")return null;if(color==="$default")return DEFAULT_BG;if(color.startsWith("mix(")&&color.endsWith(")")){let inner=color.slice(4,-1),args=[],depth=0,start=0;for(let i=0;i<inner.length;i++)if(inner[i]==="(")depth++;else if(inner[i]===")")depth--;else if(inner[i]===","&&depth===0)args.push(inner.slice(start,i).trim()),start=i+1;if(args.push(inner.slice(start).trim()),args.length===3){let c1=parseColor(args[0]),c2=parseColor(args[1]),amountStr=args[2],t;if(amountStr.endsWith("%"))t=Number.parseFloat(amountStr.slice(0,-1))/100;else t=Number.parseFloat(amountStr);if(c1!==null&&c2!==null&&typeof c1==="object"&&typeof c2==="object"&&!Number.isNaN(t))return blendColors(c1,c2,Math.max(0,Math.min(1,t)));return null}}if(color.startsWith("$")){let resolved=resolveThemeColor(color,getActiveTheme());if(resolved&&resolved!==color)return parseColor(resolved);return null}if(color in namedColors)return namedColors[color];if(color.startsWith("#")){let hex=color.slice(1);if(hex.length===3){let r=Number.parseInt(hex[0]+hex[0],16),g=Number.parseInt(hex[1]+hex[1],16),b=Number.parseInt(hex[2]+hex[2],16);return{r,g,b}}if(hex.length===6){let r=Number.parseInt(hex.slice(0,2),16),g=Number.parseInt(hex.slice(2,4),16),b=Number.parseInt(hex.slice(4,6),16);return{r,g,b}}}let rgbMatch=color.match(/^rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$/i);if(rgbMatch)return{r:Number.parseInt(rgbMatch[1],10),g:Number.parseInt(rgbMatch[2],10),b:Number.parseInt(rgbMatch[3],10)};let ansi256Match=color.match(/^ansi256\s*\(\s*(\d+)\s*\)$/i);if(ansi256Match)return Number.parseInt(ansi256Match[1],10);return null}function getBorderChars(style){if(style&&typeof style==="object"){let obj=style,topHorizontal=obj.top??obj.horizontal??"-",leftVertical=obj.left??obj.vertical??"|";return{topLeft:obj.topLeft??"+",topRight:obj.topRight??"+",bottomLeft:obj.bottomLeft??"+",bottomRight:obj.bottomRight??"+",horizontal:topHorizontal,vertical:leftVertical,bottomHorizontal:obj.bottom&&obj.bottom!==topHorizontal?obj.bottom:void 0,rightVertical:obj.right&&obj.right!==leftVertical?obj.right:void 0}}return borders[style??"single"]}function getTextStyle(props){let underlineStyle;if(props.underlineStyle!==void 0)underlineStyle=props.underlineStyle;else if(props.underline)underlineStyle="single";return{fg:props.color?parseColor(props.color):null,bg:props.backgroundColor?parseColor(props.backgroundColor):null,underlineColor:props.underlineColor?parseColor(props.underlineColor):null,attrs:{bold:props.bold,dim:props.dim||props.dimColor,italic:props.italic,underline:props.underline||!!underlineStyle,underlineStyle,strikethrough:props.strikethrough,inverse:props.inverse}}}function getTextWidth2(text,ctx){if(ctx)return ctx.measurer.displayWidthAnsi(text);return displayWidthAnsi(text)}var namedColors,borders;var init_render_helpers=__esm(()=>{init_buffer();init_state();init_unicode();namedColors={black:0,red:1,green:2,yellow:3,blue:4,magenta:5,cyan:6,white:7,gray:8,grey:8,blackBright:8,redBright:9,greenBright:10,yellowBright:11,blueBright:12,magentaBright:13,cyanBright:14,whiteBright:15};borders={single:{topLeft:"┌",topRight:"┐",bottomLeft:"└",bottomRight:"┘",horizontal:"─",vertical:"│"},double:{topLeft:"╔",topRight:"╗",bottomLeft:"╚",bottomRight:"╝",horizontal:"═",vertical:"║"},round:{topLeft:"╭",topRight:"╮",bottomLeft:"╰",bottomRight:"╯",horizontal:"─",vertical:"│"},bold:{topLeft:"┏",topRight:"┓",bottomLeft:"┗",bottomRight:"┛",horizontal:"━",vertical:"┃"},singleDouble:{topLeft:"╓",topRight:"╖",bottomLeft:"╙",bottomRight:"╜",horizontal:"─",vertical:"║"},doubleSingle:{topLeft:"╒",topRight:"╕",bottomLeft:"╘",bottomRight:"╛",horizontal:"═",vertical:"│"},classic:{topLeft:"+",topRight:"+",bottomLeft:"+",bottomRight:"+",horizontal:"-",vertical:"|"}}});function getBgConflictMode(){return bgConflictMode}function clearBgConflictWarnings(){warnedBgConflicts.clear()}function styleToAnsi(style){let codes=[];if(style.color){let color=parseColor(style.color);if(color!==null)if(typeof color==="number")codes.push(38,5,color);else codes.push(38,2,color.r,color.g,color.b)}if(style.bold)codes.push(1);if(style.dim)codes.push(2);if(style.italic)codes.push(3);if(style.underline)codes.push(4);if(style.inverse)codes.push(7);if(style.strikethrough)codes.push(9);if(codes.length===0)return"";return`\x1B[${codes.join(";")}m`}function mergeStyleContext(parent,childProps){return{color:childProps.color??parent.color,backgroundColor:childProps.backgroundColor??parent.backgroundColor,bold:childProps.bold??parent.bold,dim:childProps.dim??childProps.dimColor??parent.dim,italic:childProps.italic??parent.italic,underline:childProps.underline??parent.underline,inverse:childProps.inverse??parent.inverse,strikethrough:childProps.strikethrough??parent.strikethrough}}function applyTextStyleAnsi(text,childStyle,parentStyle){if(!text)return text;let childAnsi=styleToAnsi(childStyle),parentAnsi=styleToAnsi(parentStyle);if(!childAnsi)return text;return`${childAnsi}${text}\x1B[0m${parentAnsi}`}function collectTextWithBg(node,parentContext={},offset=0,maxDisplayWidth,ctx){if(node.textContent!==void 0){let text=node.textContent;if(maxDisplayWidth!==void 0){if(getTextWidth2(text,ctx)>maxDisplayWidth)text=(ctx?ctx.measurer.sliceByWidth:sliceByWidth)(text,maxDisplayWidth)}let plainLen=getTextWidth2(text,ctx);return{text,bgSegments:[],childSpans:[],plainLen}}let result="",bgSegments=[],childSpans=[],currentOffset=offset,displayWidthCollected=0;for(let i=0;i<node.children.length;i++){let child=node.children[i];if(maxDisplayWidth!==void 0&&displayWidthCollected>=maxDisplayWidth)break;let childBudget=maxDisplayWidth!==void 0?maxDisplayWidth-displayWidthCollected:void 0;if(child.type==="silvery-text"&&child.props&&!child.layoutNode){let childProps=child.props,childContext=mergeStyleContext(parentContext,childProps),childResult=collectTextWithBg(child,childContext,currentOffset,childBudget,ctx),childTransform=childProps.internal_transform;if(childTransform&&childResult.text.length>0)childResult.text=childTransform(childResult.text,i);let styledText=applyTextStyleAnsi(childResult.text,childContext,parentContext);if(result+=styledText,childContext.backgroundColor){let bg=parseColor(childContext.backgroundColor);if(bg!==null){if(childResult.plainLen>0)bgSegments.push({start:currentOffset,end:currentOffset+childResult.plainLen,bg})}}else if(childProps.backgroundColor===""&&childResult.plainLen>0)bgSegments.push({start:currentOffset,end:currentOffset+childResult.plainLen,bg:null});if(childResult.plainLen>0)childSpans.push({node:child,start:currentOffset,end:currentOffset+childResult.plainLen});bgSegments.push(...childResult.bgSegments),childSpans.push(...childResult.childSpans),currentOffset+=childResult.plainLen,displayWidthCollected+=childResult.plainLen}else{let childResult=collectTextWithBg(child,parentContext,currentOffset,childBudget,ctx);result+=childResult.text,bgSegments.push(...childResult.bgSegments),childSpans.push(...childResult.childSpans),currentOffset+=childResult.plainLen,displayWidthCollected+=childResult.plainLen}}return{text:result,bgSegments,childSpans,plainLen:displayWidthCollected}}function applyBgSegmentsToLine(buffer,x,y,lineText,lineCharStart,lineCharEnd,bgSegments,ctx){if(bgSegments.length===0)return;if(y<0||y>=buffer.height)return;let bgCell=createMutableCell(),gWidthFn=ctx?ctx.measurer.graphemeWidth:graphemeWidth;for(let seg of bgSegments){let overlapStart=Math.max(seg.start,lineCharStart),overlapEnd=Math.min(seg.end,lineCharEnd);if(overlapStart>=overlapEnd)continue;let relStart=overlapStart-lineCharStart,relEnd=overlapEnd-lineCharStart,col=x,graphemes=splitGraphemes(hasAnsi(lineText)?stripAnsiForBg(lineText):lineText);for(let grapheme of graphemes){let gWidth=gWidthFn(grapheme);if(gWidth===0)continue;let displayOffset=col-x;if(displayOffset>=relStart&&displayOffset<relEnd){if(buffer.readCellInto(col,y,bgCell),bgCell.bg=seg.bg,buffer.setCell(col,y,bgCell),gWidth===2&&col+1<buffer.width)buffer.readCellInto(col+1,y,bgCell),bgCell.bg=seg.bg,buffer.setCell(col+1,y,bgCell)}if(col+=gWidth,col-x>=relEnd)break}}}function stripAnsiForBg(text){return text.replace(/\x1b\[[0-9;:?]*[A-Za-z]/g,"").replace(/\x1b\][^\x07\x1b]*(?:\x07|\x1b\\)/g,"").replace(/\x1b[DME78]/g,"").replace(/\x1b\(B/g,"")}function mapLinesToCharOffsets(originalText,formattedLines,ctx){let normalized=(hasAnsi(originalText)?stripAnsiForBg(originalText):originalText).replace(/\t/g," "),result=[],charOffset=0,displayOffset=0;for(let line of formattedLines){let plainLine=hasAnsi(line)?stripAnsiForBg(line):line,lineStart=findLineStart(normalized,plainLine,charOffset);if(lineStart>charOffset){let skipped=normalized.slice(charOffset,lineStart);displayOffset+=getTextWidth2(skipped,ctx)}let lineDisplayWidth=getTextWidth2(plainLine,ctx);result.push({start:displayOffset,end:displayOffset+lineDisplayWidth});let lineLen=Math.min(plainLine.length,normalized.length-lineStart);charOffset=lineStart+lineLen,displayOffset+=lineDisplayWidth}return result}function findLineStart(normalized,plainLine,fromOffset){if(plainLine.length===0){let pos2=fromOffset;while(pos2<normalized.length&&normalized[pos2]===`
|
|
23
|
+
`)pos2++;return pos2}if(normalized.startsWith(plainLine,fromOffset))return fromOffset;let ELLIPSIS="…",ellipsisIdx=plainLine.indexOf(ELLIPSIS),truncatedPrefix=ellipsisIdx>0?plainLine.slice(0,ellipsisIdx):null;if(truncatedPrefix&&normalized.startsWith(truncatedPrefix,fromOffset))return fromOffset;let pos=fromOffset;while(pos<normalized.length){let ch=normalized[pos];if(ch===`
|
|
24
|
+
`||ch===" "){pos++;continue}if(normalized.startsWith(plainLine,pos))return pos;if(truncatedPrefix&&normalized.startsWith(truncatedPrefix,pos))return pos;pos++}return fromOffset}function formatTextLines(text,width,wrap,ctx,trim=!0){if(width<=0)return[];let normalizedText=text.replace(/\t/g," "),lines=normalizedText.split(`
|
|
25
|
+
`);if(wrap==="clip"){let sliceFn=ctx?ctx.measurer.sliceByWidth:sliceByWidth;return lines.map((line)=>{if(getTextWidth2(line,ctx)<=width)return line;return sliceFn(line,width)})}if(wrap===!1||wrap==="truncate-end"||wrap==="truncate")return lines.map((line)=>truncateText(line,width,"end",ctx));if(wrap==="truncate-start")return lines.map((line)=>truncateText(line,width,"start",ctx));if(wrap==="truncate-middle")return lines.map((line)=>truncateText(line,width,"middle",ctx));if(ctx)return ctx.measurer.wrapText(normalizedText,width,!0,trim);return wrapText(normalizedText,width,!0,trim)}function truncateText(text,width,mode,ctx){if(getTextWidth2(text,ctx)<=width)return text;let ellipsis="…",availableWidth=width-1;if(availableWidth<=0)return width>0?ellipsis:"";let sliceFn=ctx?ctx.measurer.sliceByWidth:sliceByWidth,sliceEndFn=ctx?ctx.measurer.sliceByWidthFromEnd:sliceByWidthFromEnd;if(mode==="end")return sliceFn(text,availableWidth)+ellipsis;if(mode==="start")return ellipsis+sliceEndFn(text,availableWidth);let halfWidth=Math.floor(availableWidth/2),startPart=sliceFn(text,halfWidth),endPart=sliceEndFn(text,availableWidth-halfWidth);return startPart+ellipsis+endPart}function renderTextLine(buffer,x,y,text,baseStyle,maxCol,inheritedBg,ctx){if(hasAnsi(text)){renderAnsiTextLine(buffer,x,y,text,baseStyle,maxCol,inheritedBg,ctx);return}renderGraphemes(buffer,splitGraphemes(text),x,y,baseStyle,maxCol,inheritedBg,ctx)}function renderTextLineReturn(buffer,x,y,text,baseStyle,maxCol,inheritedBg,ctx){if(hasAnsi(text))return renderAnsiTextLineReturn(buffer,x,y,text,baseStyle,maxCol,inheritedBg,ctx);return renderGraphemes(buffer,splitGraphemes(text),x,y,baseStyle,maxCol,inheritedBg,ctx)}function renderGraphemes(buffer,graphemes,startCol,y,style,maxCol,inheritedBg,ctx){let col=startCol,rightEdge=maxCol!==void 0?Math.min(maxCol,buffer.width):buffer.width,gWidthFn=ctx?ctx.measurer.graphemeWidth:graphemeWidth;for(let grapheme of graphemes){if(col>=rightEdge)break;let width=gWidthFn(grapheme);if(width===0)continue;let existingBg=style.bg!==null?style.bg:inheritedBg!==void 0?inheritedBg:buffer.getCellBg(col,y);if(width===2&&col+1>=rightEdge){buffer.setCell(col,y,{char:" ",fg:style.fg,bg:existingBg,underlineColor:style.underlineColor??null,attrs:style.attrs,wide:!1,continuation:!1,hyperlink:style.hyperlink}),col+=1;continue}let outputChar=width===2?ensureEmojiPresentation(grapheme):grapheme;if(buffer.setCell(col,y,{char:outputChar,fg:style.fg,bg:existingBg,underlineColor:style.underlineColor??null,attrs:style.attrs,wide:width===2,continuation:!1,hyperlink:style.hyperlink}),width===2&&col+1<buffer.width){let existingBg2=style.bg!==null?style.bg:inheritedBg!==void 0?inheritedBg:buffer.getCellBg(col+1,y);buffer.setCell(col+1,y,{char:"",fg:style.fg,bg:existingBg2,underlineColor:style.underlineColor??null,attrs:style.attrs,wide:!1,continuation:!0,hyperlink:style.hyperlink}),col+=2}else col+=width}return col}function renderAnsiTextLine(buffer,x,y,text,baseStyle,maxCol,inheritedBg,ctx){renderAnsiTextLineReturn(buffer,x,y,text,baseStyle,maxCol,inheritedBg,ctx)}function renderAnsiTextLineReturn(buffer,x,y,text,baseStyle,maxCol,inheritedBg,ctx){let segments=parseAnsiText(text),col=x;for(let segment of segments){let style=mergeAnsiStyle(baseStyle,segment),effectiveBgConflictMode=ctx?.bgConflictMode??getBgConflictMode();if(effectiveBgConflictMode!=="ignore"&&!segment.bgOverride&&segment.bg!==void 0&&segment.bg!==null){let existingBufBg=col<buffer.width?buffer.getCellBg(col,y):null;if(baseStyle.bg!==null||existingBufBg!==null){let preview=segment.text.slice(0,30),msg=`[silvery] Background conflict: chalk.bg* on text that already has silvery background. Chalk bg will override only text characters, causing visual gaps in padding. Use ansi.bgOverride() to suppress if intentional. Text: "${preview}${segment.text.length>30?"...":""}"`;if(effectiveBgConflictMode==="throw")throw Error(msg);let effectiveWarnedBgConflicts=ctx?.warnedBgConflicts??warnedBgConflicts,key=`${JSON.stringify(existingBufBg)}-${segment.bg}-${preview}`;if(!effectiveWarnedBgConflicts.has(key))effectiveWarnedBgConflicts.add(key),console.warn(msg)}}col=renderGraphemes(buffer,splitGraphemes(segment.text),col,y,style,maxCol,inheritedBg,ctx)}return col}function mergeStyles(base,overlay,options={}){let{preserveDecorations=!0,preserveEmphasis=!0}=options,baseAttrs=base.attrs??{},overlayAttrs=overlay.attrs??{},attrs={};if(preserveDecorations){let hasBaseUnderline=baseAttrs.underline||baseAttrs.underlineStyle,hasOverlayUnderline=overlayAttrs.underline||overlayAttrs.underlineStyle;if(hasBaseUnderline||hasOverlayUnderline)attrs.underline=!0,attrs.underlineStyle=overlayAttrs.underlineStyle??baseAttrs.underlineStyle??"single";attrs.strikethrough=overlayAttrs.strikethrough||baseAttrs.strikethrough}else attrs.underline=overlayAttrs.underline??baseAttrs.underline,attrs.underlineStyle=overlayAttrs.underlineStyle??baseAttrs.underlineStyle,attrs.strikethrough=overlayAttrs.strikethrough??baseAttrs.strikethrough;if(preserveEmphasis)attrs.bold=overlayAttrs.bold||baseAttrs.bold,attrs.dim=overlayAttrs.dim||baseAttrs.dim,attrs.italic=overlayAttrs.italic||baseAttrs.italic;else attrs.bold=overlayAttrs.bold??baseAttrs.bold,attrs.dim=overlayAttrs.dim??baseAttrs.dim,attrs.italic=overlayAttrs.italic??baseAttrs.italic;return attrs.inverse=overlayAttrs.inverse,attrs.hidden=overlayAttrs.hidden,attrs.blink=overlayAttrs.blink,{fg:overlay.fg??base.fg,bg:overlay.bg??base.bg,underlineColor:overlay.underlineColor??base.underlineColor,attrs}}function mergeAnsiStyle(base,segment,options={}){let{preserveDecorations=!0,preserveEmphasis=!0}=options,fg=base.fg,bg=base.bg,underlineColor2=base.underlineColor??null;if(segment.fg!==void 0&&segment.fg!==null)fg=ansiColorToColor(segment.fg);if(segment.bg!==void 0&&segment.bg!==null)bg=ansiColorToColor(segment.bg);if(segment.underlineColor!==void 0&&segment.underlineColor!==null)underlineColor2=ansiColorToColor(segment.underlineColor);let overlayAttrs={};if(segment.bold!==void 0)overlayAttrs.bold=segment.bold;if(segment.dim!==void 0)overlayAttrs.dim=segment.dim;if(segment.italic!==void 0)overlayAttrs.italic=segment.italic;if(segment.underline!==void 0)overlayAttrs.underline=segment.underline;if(segment.underlineStyle!==void 0)overlayAttrs.underlineStyle=segment.underlineStyle;if(segment.inverse!==void 0)overlayAttrs.inverse=segment.inverse;let merged=mergeStyles(base,{fg,bg,underlineColor:underlineColor2,attrs:overlayAttrs},{preserveDecorations,preserveEmphasis});if(segment.hyperlink)merged.hyperlink=segment.hyperlink;return merged}function ansiColorToColor(code){if(code>=16777216){let r=code>>16&255,g=code>>8&255,b=code&255;return{r,g,b}}if(code<30||code>=38&&code<40||code>=48&&code<90)return code;if(code>=30&&code<=37)return code-30;if(code>=40&&code<=47)return code-40;if(code>=90&&code<=97)return code-90+8;if(code>=100&&code<=107)return code-100+8;return null}function renderText(node,buffer,layout,props,nodeState,inheritedBg,inheritedFg,ctx){let{scrollOffset,clipBounds}=nodeState,{x,width,height}=layout,{y}=layout;if(y-=scrollOffset,props.backgroundColor==="")inheritedBg=null;if(clipBounds){if(y+height<=clipBounds.top||y>=clipBounds.bottom)return;if(clipBounds.left!==void 0&&clipBounds.right!==void 0){if(x+width<=clipBounds.left||x>=clipBounds.right)return}}let maxDisplayWidth;if((props.wrap===!1||props.wrap==="truncate-end"||props.wrap==="truncate"||props.wrap==="clip")&&width>0){let lineCount=(collectPlainText(node).match(/\n/g)?.length??0)+1;maxDisplayWidth=(width+1)*lineCount}let{text,bgSegments,childSpans}=collectTextWithBg(node,{},0,maxDisplayWidth,ctx),style=getTextStyle(props);if(style.fg===null&&inheritedFg!==void 0)style.fg=inheritedFg;let hasBg=style.bg!==null||bgSegments.length>0||inheritedBg!==void 0&&inheritedBg!==null,lines=formatTextLines(text,width,props.wrap,ctx,!hasBg),internalTransform=props.internal_transform;if(internalTransform)lines=lines.map((line,index)=>internalTransform(line,index));let lineOffsets=bgSegments.length>0||childSpans.length>0?mapLinesToCharOffsets(text,lines,ctx):[];for(let lineIdx=0;lineIdx<lines.length&&lineIdx<height;lineIdx++){let lineY=y+lineIdx;if(clipBounds&&(lineY<clipBounds.top||lineY>=clipBounds.bottom))continue;let line=lines[lineIdx],layoutRight=internalTransform?buffer.width:x+width,maxCol=clipBounds&&"right"in clipBounds&&clipBounds.right!==void 0?Math.min(layoutRight,clipBounds.right):layoutRight,endCol=renderTextLineReturn(buffer,x,lineY,line,style,maxCol,inheritedBg,ctx);if(endCol<maxCol){let clearBg=inheritedBg??null;for(let cx=endCol;cx<maxCol&&cx<buffer.width;cx++)buffer.setCell(cx,lineY,{char:" ",fg:style.fg,bg:clearBg,underlineColor:null,attrs:{bold:!1,dim:!1,italic:!1,underline:!1,inverse:!1,strikethrough:!1,blink:!1,hidden:!1},wide:!1,continuation:!1})}if(bgSegments.length>0&&lineIdx<lineOffsets.length){let{start,end}=lineOffsets[lineIdx];applyBgSegmentsToLine(buffer,x,lineY,line,start,end,bgSegments,ctx)}}if(childSpans.length>0&&lineOffsets.length>0)computeInlineRects(childSpans,lineOffsets,x,y,lines.length,height)}function computeInlineRects(childSpans,lineOffsets,parentX,parentY,lineCount,maxHeight){for(let span of childSpans){let rects=[];for(let lineIdx=0;lineIdx<lineCount&&lineIdx<maxHeight;lineIdx++){let lineOffset=lineOffsets[lineIdx];if(!lineOffset)continue;let overlapStart=Math.max(span.start,lineOffset.start),overlapEnd=Math.min(span.end,lineOffset.end);if(overlapStart>=overlapEnd)continue;let rectX=parentX+(overlapStart-lineOffset.start),rectY=parentY+lineIdx,rectWidth=overlapEnd-overlapStart;rects.push({x:rectX,y:rectY,width:rectWidth,height:1})}span.node.inlineRects=rects.length>0?rects:null}}var bgConflictMode,warnedBgConflicts;var init_render_text=__esm(()=>{init_buffer();init_unicode();init_render_helpers();bgConflictMode=(()=>{let env=process.env.SILVERY_BG_CONFLICT?.toLowerCase();if(env==="ignore"||env==="warn"||env==="throw")return env;return"throw"})();warnedBgConflicts=new Set});function getEffectiveBg(props){if(props.backgroundColor)return props.backgroundColor;if(props.theme)return props.theme.bg;return}function renderBox(_node,buffer,layout,props,nodeState,skipBgFill=!1,inheritedBg){let{scrollOffset,clipBounds}=nodeState,{x,width,height}=layout,y=layout.y-scrollOffset;if(clipBounds){if(y+height<=clipBounds.top||y>=clipBounds.bottom)return;if(clipBounds.left!==void 0&&clipBounds.right!==void 0){if(x+width<=clipBounds.left||x>=clipBounds.right)return}}let effectiveBgStr=getEffectiveBg(props);if(effectiveBgStr&&!skipBgFill){let bg=parseColor(effectiveBgStr);if(clipBounds){let clippedY=Math.max(y,clipBounds.top),clippedHeight=Math.min(y+height,clipBounds.bottom)-clippedY,clippedX=x,clippedWidth=width;if(clipBounds.left!==void 0&&clipBounds.right!==void 0)clippedX=Math.max(x,clipBounds.left),clippedWidth=Math.min(x+width,clipBounds.right)-clippedX;if(clippedHeight>0&&clippedWidth>0)buffer.fill(clippedX,clippedY,clippedWidth,clippedHeight,{bg})}else buffer.fill(x,y,width,height,{bg})}if(props.borderStyle)renderBorder(buffer,x,y,width,height,props,clipBounds,inheritedBg)}function renderBorder(buffer,x,y,width,height,props,clipBounds,inheritedBg){let chars=getBorderChars(props.borderStyle??"single"),color=props.borderColor?parseColor(props.borderColor):null,bg=props.backgroundColor?parseColor(props.backgroundColor):inheritedBg??null,showTop=props.borderTop!==!1,showBottom=props.borderBottom!==!1,showLeft=props.borderLeft!==!1,showRight=props.borderRight!==!1,isRowVisible=(row)=>{if(!clipBounds)return row>=0&&row<buffer.height;return row>=clipBounds.top&&row<clipBounds.bottom&&row<buffer.height},isColVisible=(col)=>{if(clipBounds?.left===void 0||clipBounds.right===void 0)return col>=0&&col<buffer.width;return col>=clipBounds.left&&col<clipBounds.right&&col<buffer.width};if(showTop&&isRowVisible(y)){if(showLeft&&isColVisible(x))buffer.setCell(x,y,{char:chars.topLeft,fg:color,bg});let hStart=showLeft?x+1:x,hEnd=showRight?x+width-1:x+width;for(let col=hStart;col<hEnd&&col<buffer.width;col++)if(isColVisible(col))buffer.setCell(col,y,{char:chars.horizontal,fg:color,bg});if(showRight&&x+width-1<buffer.width&&isColVisible(x+width-1))buffer.setCell(x+width-1,y,{char:chars.topRight,fg:color,bg})}let rightVertical=chars.rightVertical??chars.vertical,sideStart=showTop?y+1:y,sideEnd=showBottom?y+height-1:y+height;for(let row=sideStart;row<sideEnd;row++){if(!isRowVisible(row))continue;if(showLeft&&isColVisible(x))buffer.setCell(x,row,{char:chars.vertical,fg:color,bg});if(showRight&&x+width-1<buffer.width&&isColVisible(x+width-1))buffer.setCell(x+width-1,row,{char:rightVertical,fg:color,bg})}let bottomHorizontal=chars.bottomHorizontal??chars.horizontal,bottomY=y+height-1;if(showBottom&&isRowVisible(bottomY)){if(showLeft&&isColVisible(x))buffer.setCell(x,bottomY,{char:chars.bottomLeft,fg:color,bg});let bStart=showLeft?x+1:x,bEnd=showRight?x+width-1:x+width;for(let col=bStart;col<bEnd&&col<buffer.width;col++)if(isColVisible(col))buffer.setCell(col,bottomY,{char:bottomHorizontal,fg:color,bg});if(showRight&&x+width-1<buffer.width&&isColVisible(x+width-1))buffer.setCell(x+width-1,bottomY,{char:chars.bottomRight,fg:color,bg})}}function renderOutline(buffer,x,y,width,height,props,clipBounds,inheritedBg){let chars=getBorderChars(props.outlineStyle??"single"),color=props.outlineColor?parseColor(props.outlineColor):null,bg=props.backgroundColor?parseColor(props.backgroundColor):inheritedBg??null,attrs=props.outlineDimColor?{dim:!0}:{},isRowVisible=(row)=>{if(!clipBounds)return row>=0&&row<buffer.height;return row>=clipBounds.top&&row<clipBounds.bottom&&row<buffer.height},isColVisible=(col)=>{if(clipBounds?.left===void 0||clipBounds.right===void 0)return col>=0&&col<buffer.width;return col>=clipBounds.left&&col<clipBounds.right&&col<buffer.width},showTop=props.outlineTop!==!1,showBottom=props.outlineBottom!==!1,showLeft=props.outlineLeft!==!1,showRight=props.outlineRight!==!1;if(showTop&&isRowVisible(y)){if(showLeft&&isColVisible(x))buffer.setCell(x,y,{char:chars.topLeft,fg:color,bg,attrs});for(let col=x+1;col<x+width-1&&col<buffer.width;col++)if(isColVisible(col))buffer.setCell(col,y,{char:chars.horizontal,fg:color,bg,attrs});if(showRight&&x+width-1<buffer.width&&isColVisible(x+width-1))buffer.setCell(x+width-1,y,{char:chars.topRight,fg:color,bg,attrs})}let outlineRightVertical=chars.rightVertical??chars.vertical,sideStart=showTop?y+1:y,sideEnd=showBottom?y+height-1:y+height;for(let row=sideStart;row<sideEnd;row++){if(!isRowVisible(row))continue;if(showLeft&&isColVisible(x))buffer.setCell(x,row,{char:chars.vertical,fg:color,bg,attrs});if(showRight&&x+width-1<buffer.width&&isColVisible(x+width-1))buffer.setCell(x+width-1,row,{char:outlineRightVertical,fg:color,bg,attrs})}let outlineBottomHorizontal=chars.bottomHorizontal??chars.horizontal,bottomY=y+height-1;if(showBottom&&isRowVisible(bottomY)){if(showLeft&&isColVisible(x))buffer.setCell(x,bottomY,{char:chars.bottomLeft,fg:color,bg,attrs});for(let col=x+1;col<x+width-1&&col<buffer.width;col++)if(isColVisible(col))buffer.setCell(col,bottomY,{char:outlineBottomHorizontal,fg:color,bg,attrs});if(showRight&&x+width-1<buffer.width&&isColVisible(x+width-1))buffer.setCell(x+width-1,bottomY,{char:chars.bottomRight,fg:color,bg,attrs})}}function renderScrollIndicators(_node,buffer,layout,props,ss,ctx){let border=props.borderStyle?getBorderSize(props):{top:0,bottom:0,left:0,right:0},indicatorStyle={fg:15,bg:8,attrs:{}},showBorderless=props.overflowIndicator===!0;if(ss.hiddenAbove>0){let indicator=`▲${ss.hiddenAbove}`;if(border.top>0){let contentWidth=layout.width-border.left-border.right,bar=padCenter(indicator,contentWidth),x=layout.x+border.left,y=layout.y,maxCol=x+contentWidth;renderTextLine(buffer,x,y,bar,indicatorStyle,maxCol,void 0,ctx)}else if(showBorderless){let padding=getPadding(props),contentWidth=layout.width-padding.left-padding.right,bar=padCenter(indicator,contentWidth),x=layout.x+padding.left,y=layout.y+padding.top,maxCol=x+contentWidth;renderTextLine(buffer,x,y,bar,indicatorStyle,maxCol,void 0,ctx)}}if(ss.hiddenBelow>0){let indicator=`▼${ss.hiddenBelow}`;if(border.bottom>0){let contentWidth=layout.width-border.left-border.right,bar=padCenter(indicator,contentWidth),x=layout.x+border.left,y=layout.y+layout.height-1,maxCol=x+contentWidth;renderTextLine(buffer,x,y,bar,indicatorStyle,maxCol,void 0,ctx)}else if(showBorderless){let padding=getPadding(props),contentWidth=layout.width-padding.left-padding.right,bar=padCenter(indicator,contentWidth),x=layout.x+padding.left,y=layout.y+layout.height-padding.bottom-1,maxCol=x+contentWidth;renderTextLine(buffer,x,y,bar,indicatorStyle,maxCol,void 0,ctx)}}}function padCenter(text,width){if(width<=0)return"";if(text.length>width)return text.slice(0,width);if(text.length===width)return text;let leftPad=Math.floor((width-text.length)/2),rightPad=width-text.length-leftPad;return" ".repeat(leftPad)+text+" ".repeat(rightPad)}var init_render_box=__esm(()=>{init_render_helpers();init_render_text()});function computeCascade(inputs){let{hasPrevBuffer,contentDirty,stylePropsDirty,layoutChanged,subtreeDirty,childrenDirty,childPositionChanged,ancestorLayoutChanged,ancestorCleared,bgDirty,isTextNode,hasBgColor,absoluteChildMutated,descendantOverflowChanged}=inputs,canSkipEntireSubtree=hasPrevBuffer&&!contentDirty&&!stylePropsDirty&&!layoutChanged&&!subtreeDirty&&!childrenDirty&&!childPositionChanged&&!ancestorLayoutChanged,contentAreaAffected=contentDirty||layoutChanged||childPositionChanged||childrenDirty||bgDirty||isTextNode&&stylePropsDirty||absoluteChildMutated||descendantOverflowChanged,bgRefillNeeded=hasPrevBuffer&&!contentAreaAffected&&subtreeDirty&&hasBgColor;return{canSkipEntireSubtree,contentAreaAffected,bgRefillNeeded,contentRegionCleared:(hasPrevBuffer||ancestorCleared)&&contentAreaAffected&&!hasBgColor,skipBgFill:hasPrevBuffer&&!ancestorCleared&&!contentAreaAffected&&!bgRefillNeeded,childrenNeedFreshRender:(hasPrevBuffer||ancestorCleared)&&(contentAreaAffected||bgRefillNeeded)}}import{createLogger as createLogger2}from"loggily";function contentPhase(root,prevBuffer,ctx){let layout=root.contentRect;if(!layout)throw Error("contentPhase called before layout phase");let instrumentEnabled=ctx?.instrumentEnabled??_instrumentEnabled,stats=ctx?.stats??_contentPhaseStats,nodeTrace=ctx?.nodeTrace??_nodeTrace,nodeTraceEnabled=ctx?.nodeTraceEnabled??_nodeTraceEnabled,hasPrevBuffer=prevBuffer&&prevBuffer.width===layout.width&&prevBuffer.height===layout.height;if(instrumentEnabled)_contentPhaseCallCount++,stats._prevBufferNull=prevBuffer==null?1:0,stats._prevBufferDimMismatch=prevBuffer&&!hasPrevBuffer?1:0,stats._hasPrevBuffer=hasPrevBuffer?1:0,stats._layoutW=layout.width,stats._layoutH=layout.height,stats._prevW=prevBuffer?.width??0,stats._prevH=prevBuffer?.height??0,stats._callCount=_contentPhaseCallCount;let t0=instrumentEnabled?performance.now():0,buffer=hasPrevBuffer?prevBuffer.clone():new TerminalBuffer(layout.width,layout.height),tClone=instrumentEnabled?performance.now()-t0:0,t1=instrumentEnabled?performance.now():0;renderNodeToBuffer(root,buffer,{scrollOffset:0,clipBounds:void 0,hasPrevBuffer:!!hasPrevBuffer,ancestorCleared:!1,bufferIsCloned:!!hasPrevBuffer,ancestorLayoutChanged:!1},ctx);let tRender=instrumentEnabled?performance.now()-t1:0;if(instrumentEnabled){let snap={clone:tClone,render:tRender,...structuredClone(stats)};globalThis.__silvery_content_detail=snap,(globalThis.__silvery_content_all??=[]).push(snap),contentLog.debug?.(`frame ${snap._callCount}: ${snap.nodesRendered}/${snap.nodesVisited} rendered, ${snap.nodesSkipped} skipped (${tClone.toFixed(1)}ms clone, ${tRender.toFixed(1)}ms render)`);for(let key of Object.keys(stats))stats[key]=0;stats.cascadeMinDepth=999,stats.cascadeNodes="",stats.scrollClearReason="",stats.normalRepaintReason=""}if(nodeTraceEnabled&&nodeTrace.length>0)(globalThis.__silvery_node_trace??=[]).push([...nodeTrace]),traceLog.debug?.(`${nodeTrace.length} nodes traced`),nodeTrace.length=0;return syncPrevLayout(root),buffer}function syncPrevLayout(root){let stack=[root];while(stack.length>0){let node=stack.pop();node.prevLayout=node.contentRect;let children=node.children;for(let i=children.length-1;i>=0;i--)stack.push(children[i])}}function _getNodeDepth(node){let depth=0,n=node.parent;while(n)depth++,n=n.parent;return depth}function renderNodeToBuffer(node,buffer,nodeState,ctx){let{scrollOffset,clipBounds,hasPrevBuffer,ancestorCleared,bufferIsCloned,ancestorLayoutChanged=!1}=nodeState,instrumentEnabled=ctx?.instrumentEnabled??_instrumentEnabled,stats=ctx?.stats??_contentPhaseStats,nodeTrace=ctx?.nodeTrace??_nodeTrace,nodeTraceEnabled=ctx?.nodeTraceEnabled??_nodeTraceEnabled;if(instrumentEnabled)stats.nodesVisited++;let layout=node.contentRect;if(!layout)return;if(!node.layoutNode){clearVirtualTextFlags(node);return}if(node.hidden){clearDirtyFlags(node);return}let props=node.props;if(props.display==="none"){clearDirtyFlags(node);return}let screenY=layout.y-scrollOffset;if(screenY>=buffer.height||screenY+layout.height<=0)return;let layoutChanged=node.layoutChangedThisFrame,childPositionChanged=!!(hasPrevBuffer&&!layoutChanged&&hasChildPositionChanged(node)),scrollOffsetChanged=!!(node.scrollState&&node.scrollState.offset!==node.scrollState.prevOffset),canSkipEntireSubtree=hasPrevBuffer&&!node.contentDirty&&!node.stylePropsDirty&&!layoutChanged&&!node.subtreeDirty&&!node.childrenDirty&&!childPositionChanged&&!ancestorLayoutChanged&&!scrollOffsetChanged,_nodeId=instrumentEnabled?props.id??"":"",_traceThis=instrumentEnabled&&nodeTraceEnabled&&_nodeId,_cellDbg=globalThis.__silvery_cell_debug,_coversCellNow=_cellDbg&&layout.x<=_cellDbg.x&&layout.x+layout.width>_cellDbg.x&&screenY<=_cellDbg.y&&screenY+layout.height>_cellDbg.y,_coversCellPrev=_cellDbg&&node.prevLayout&&node.prevLayout.x<=_cellDbg.x&&node.prevLayout.x+node.prevLayout.width>_cellDbg.x&&node.prevLayout.y-scrollOffset<=_cellDbg.y&&node.prevLayout.y-scrollOffset+node.prevLayout.height>_cellDbg.y;if(canSkipEntireSubtree){if(_cellDbg&&(_coversCellNow||_coversCellPrev)){let id=props.id??node.type,depth=_getNodeDepth(node),prev=node.prevLayout,msg=`SKIP ${id}@${depth} rect=${layout.x},${screenY} ${layout.width}x${layout.height} prev=${prev?`${prev.x},${prev.y-scrollOffset} ${prev.width}x${prev.height}`:"null"} coversNow=${_coversCellNow} coversPrev=${_coversCellPrev}`;_cellDbg.log.push(msg),cellLog.debug?.(msg)}if(instrumentEnabled){if(stats.nodesSkipped++,_traceThis)nodeTrace.push({id:_nodeId,type:node.type,depth:_getNodeDepth(node),rect:`${layout.x},${layout.y} ${layout.width}x${layout.height}`,prevLayout:node.prevLayout?`${node.prevLayout.x},${node.prevLayout.y} ${node.prevLayout.width}x${node.prevLayout.height}`:"null",hasPrev:hasPrevBuffer,ancestorCleared,flags:"",decision:"SKIPPED",layoutChanged})}clearDirtyFlags(node);return}if(instrumentEnabled){if(stats.nodesRendered++,!hasPrevBuffer)stats.noPrevBuffer++;if(node.contentDirty)stats.flagContentDirty++;if(node.stylePropsDirty)stats.flagStylePropsDirty++;if(layoutChanged)stats.flagLayoutChanged++;if(node.subtreeDirty)stats.flagSubtreeDirty++;if(node.childrenDirty)stats.flagChildrenDirty++;if(childPositionChanged)stats.flagChildPositionChanged++;if(ancestorLayoutChanged)stats.flagAncestorLayoutChanged++}let nodeTheme=props.theme;if(nodeTheme)pushContextTheme(nodeTheme);try{let isScrollContainer=props.overflow==="scroll"&&node.scrollState,{absoluteChildMutated,descendantOverflowChanged}=buildCascadeInputs(node,hasPrevBuffer),cascade=computeCascade({hasPrevBuffer,contentDirty:node.contentDirty,stylePropsDirty:node.stylePropsDirty,layoutChanged,subtreeDirty:node.subtreeDirty,childrenDirty:node.childrenDirty,childPositionChanged,ancestorLayoutChanged,ancestorCleared,bgDirty:node.bgDirty,isTextNode:node.type==="silvery-text",hasBgColor:!!getEffectiveBg(props),absoluteChildMutated,descendantOverflowChanged}),{contentRegionCleared,skipBgFill,childrenNeedFreshRender}=cascade;if(instrumentEnabled||_cellDbg&&(_coversCellNow||_coversCellPrev))traceRenderDecision(node,props,layout,screenY,scrollOffset,hasPrevBuffer,ancestorCleared,layoutChanged,childPositionChanged,cascade,_nodeId,_traceThis,_cellDbg,_coversCellNow,_coversCellPrev,instrumentEnabled,stats,nodeTrace);executeRegionClearing(node,buffer,layout,scrollOffset,clipBounds,bufferIsCloned,layoutChanged,contentRegionCleared,descendantOverflowChanged,instrumentEnabled,stats);let needsOwnRepaint=!hasPrevBuffer||ancestorCleared||ancestorLayoutChanged||cascade.contentAreaAffected||node.stylePropsDirty||cascade.bgRefillNeeded,boxInheritedBg=node.type==="silvery-box"&&!getEffectiveBg(props)?findInheritedBg(node).color:void 0;if(needsOwnRepaint)renderOwnContent(node,buffer,layout,props,nodeState,skipBgFill,instrumentEnabled,stats,ctx);if(isScrollContainer)renderScrollContainerChildren(node,buffer,props,nodeState,contentRegionCleared,childrenNeedFreshRender,ctx),renderScrollIndicators(node,buffer,layout,props,node.scrollState,ctx);else renderNormalChildren(node,buffer,props,nodeState,childPositionChanged,contentRegionCleared,childrenNeedFreshRender,ctx);if(node.type==="silvery-box"&&props.outlineStyle){let{x,width,height}=layout,y=layout.y-scrollOffset;renderOutline(buffer,x,y,width,height,props,clipBounds,boxInheritedBg)}clearNodeDirtyFlags(node)}finally{if(nodeTheme)popContextTheme()}}function buildCascadeInputs(node,hasPrevBuffer){if(!hasPrevBuffer||!node.subtreeDirty||node.children===void 0)return{absoluteChildMutated:!1,descendantOverflowChanged:!1};let absoluteChildMutated=node.children.some((child)=>{return child.props.position==="absolute"&&(child.childrenDirty||child.layoutChangedThisFrame||hasChildPositionChanged(child))}),descendantOverflowChanged=hasDescendantOverflowChanged(node);return{absoluteChildMutated,descendantOverflowChanged}}function traceRenderDecision(node,props,layout,screenY,scrollOffset,hasPrevBuffer,ancestorCleared,layoutChanged,childPositionChanged,cascade,_nodeId,_traceThis,_cellDbg,_coversCellNow,_coversCellPrev,instrumentEnabled,stats,nodeTrace){let{contentAreaAffected,contentRegionCleared,skipBgFill,childrenNeedFreshRender}=cascade;if(instrumentEnabled){if(_traceThis){let flagStr=[node.contentDirty&&"C",node.stylePropsDirty&&"P",node.bgDirty&&"B",node.subtreeDirty&&"S",node.childrenDirty&&"Ch",childPositionChanged&&"CP"].filter(Boolean).join(","),childHasPrev_=node.childrenDirty||childPositionChanged||childrenNeedFreshRender?!1:hasPrevBuffer,childAncestorCleared_=contentRegionCleared||ancestorCleared&&!getEffectiveBg(props);nodeTrace.push({id:_nodeId,type:node.type,depth:_getNodeDepth(node),rect:`${layout.x},${layout.y} ${layout.width}x${layout.height}`,prevLayout:node.prevLayout?`${node.prevLayout.x},${node.prevLayout.y} ${node.prevLayout.width}x${node.prevLayout.height}`:"null",hasPrev:hasPrevBuffer,ancestorCleared,flags:flagStr,decision:"RENDER",layoutChanged,contentAreaAffected,contentRegionCleared,childrenNeedFreshRender,childHasPrev:childHasPrev_,childAncestorCleared:childAncestorCleared_,skipBgFill,bgColor:props.backgroundColor})}if(childrenNeedFreshRender&&node.children.length>0){let depth=_getNodeDepth(node);if(depth<stats.cascadeMinDepth)stats.cascadeMinDepth=depth;let id=node.props.id??node.type,flags=[node.contentDirty&&"C",node.stylePropsDirty&&"P",node.childrenDirty&&"Ch",layoutChanged&&"L",childPositionChanged&&"CP"].filter(Boolean).join(""),entry=`${id}@${depth}[${flags}:${node.children.length}ch]`;stats.cascadeNodes+=(stats.cascadeNodes?" ":"")+entry}}if(_cellDbg&&(_coversCellNow||_coversCellPrev)){let id=props.id??node.type,depth=_getNodeDepth(node),prev=node.prevLayout,flags=[node.contentDirty&&"C",node.stylePropsDirty&&"P",layoutChanged&&"L",node.subtreeDirty&&"S",node.childrenDirty&&"Ch",childPositionChanged&&"CP",node.bgDirty&&"B"].filter(Boolean).join(","),msg=`RENDER ${id}@${depth} rect=${layout.x},${screenY} ${layout.width}x${layout.height} prev=${prev?`${prev.x},${prev.y-scrollOffset} ${prev.width}x${prev.height}`:"null"} flags=[${flags}] hasPrev=${hasPrevBuffer} ancClr=${ancestorCleared} caa=${contentAreaAffected} prc=${contentRegionCleared} prm=${childrenNeedFreshRender} coversNow=${_coversCellNow} coversPrev=${_coversCellPrev} bg=${props.backgroundColor??"none"}`;_cellDbg.log.push(msg),cellLog.debug?.(msg)}}function executeRegionClearing(node,buffer,layout,scrollOffset,clipBounds,bufferIsCloned,layoutChanged,contentRegionCleared,descendantOverflowChanged,instrumentEnabled,stats){if(contentRegionCleared){if(instrumentEnabled)stats.clearOps++;clearNodeRegion(node,buffer,layout,scrollOffset,clipBounds,layoutChanged)}else if(bufferIsCloned&&layoutChanged&&node.prevLayout)clearExcessArea(node,buffer,layout,scrollOffset,clipBounds,layoutChanged);if(descendantOverflowChanged)clearDescendantOverflowRegions(node,buffer,layout,scrollOffset,clipBounds)}function renderOwnContent(node,buffer,layout,props,nodeState,skipBgFill,instrumentEnabled,stats,ctx){let boxInheritedBg=node.type==="silvery-box"&&!getEffectiveBg(props)?findInheritedBg(node).color:void 0;if(node.type==="silvery-box"){if(instrumentEnabled)stats.boxNodes++;renderBox(node,buffer,layout,props,nodeState,skipBgFill,boxInheritedBg)}else if(node.type==="silvery-text"){if(instrumentEnabled)stats.textNodes++;let textInheritedBg=findInheritedBg(node).color,textInheritedFg=findInheritedFg(node);renderText(node,buffer,layout,props,nodeState,textInheritedBg,textInheritedFg,ctx)}return boxInheritedBg}function planScrollRender(inputs){let{scrollOffsetChanged,visibleRangeChanged,hasStickyChildren,childrenNeedFreshRender,childrenDirty,hasPrevBuffer,ancestorCleared,contentRegionCleared,scrollBg}=inputs,scrollOnly=hasPrevBuffer&&scrollOffsetChanged&&!childrenDirty&&!childrenNeedFreshRender&&!hasStickyChildren&&!visibleRangeChanged,needsViewportClear=hasPrevBuffer&&!scrollOnly&&(scrollOffsetChanged||childrenDirty||childrenNeedFreshRender||visibleRangeChanged),stickyForceRefresh=hasStickyChildren&&hasPrevBuffer&&!needsViewportClear,reasons=[];if(scrollOnly)reasons.push("SHIFT");if(needsViewportClear){if(scrollOffsetChanged)reasons.push("scrollOffset");if(childrenDirty)reasons.push("childrenDirty");if(childrenNeedFreshRender)reasons.push("childrenNeedFreshRender");if(visibleRangeChanged)reasons.push("visibleRangeChanged")}if(stickyForceRefresh)reasons.push("stickyForceRefresh");return{tier:scrollOnly?"shift":needsViewportClear?"clear":"subtree-only",clearBg:scrollOnly||needsViewportClear?scrollBg:null,childHasPrev:needsViewportClear?!1:hasPrevBuffer,childAncestorCleared:needsViewportClear?!0:ancestorCleared||contentRegionCleared,stickyForceRefresh,reasons}}function renderScrollContainerChildren(node,buffer,props,nodeState,contentRegionCleared=!1,childrenNeedFreshRender=!1,ctx){let{clipBounds,hasPrevBuffer,ancestorCleared,bufferIsCloned,ancestorLayoutChanged}=nodeState,instrumentEnabled=ctx?.instrumentEnabled??_instrumentEnabled,stats=ctx?.stats??_contentPhaseStats,layout=node.contentRect,ss=node.scrollState;if(!layout||!ss)return;let border=props.borderStyle?getBorderSize(props):{top:0,bottom:0,left:0,right:0},padding=getPadding(props),childClipBounds=computeChildClipBounds(layout,props,clipBounds,0,!1,!0),scrollOffsetChanged=ss.offset!==ss.prevOffset,hasStickyChildren=!!(ss.stickyChildren&&ss.stickyChildren.length>0),visibleRangeChanged=ss.firstVisibleChild!==ss.prevFirstVisibleChild||ss.lastVisibleChild!==ss.prevLastVisibleChild,clearY=childClipBounds.top,clearHeight=childClipBounds.bottom-childClipBounds.top,contentX=layout.x+border.left+padding.left,contentWidth=layout.width-border.left-border.right-padding.left-padding.right,scrollBg=scrollOffsetChanged||node.childrenDirty||childrenNeedFreshRender||visibleRangeChanged?getEffectiveBg(props)?parseColor(getEffectiveBg(props)):findInheritedBg(node).color:null,plan=planScrollRender({scrollOffsetChanged,visibleRangeChanged,hasStickyChildren,childrenNeedFreshRender,childrenDirty:node.childrenDirty,hasPrevBuffer,ancestorCleared,contentRegionCleared,scrollBg}),{tier,stickyForceRefresh}=plan,defaultChildHasPrev=plan.childHasPrev,defaultChildAncestorCleared=plan.childAncestorCleared;if(instrumentEnabled){if(stats.scrollContainerCount++,tier!=="subtree-only"||stickyForceRefresh){stats.scrollViewportCleared++;let reasons=[...plan.reasons];if(scrollOffsetChanged)reasons.push(`scrollOffset(${ss.prevOffset}->${ss.offset})`);reasons.push(`vp=${ss.viewportHeight} content=${ss.contentHeight} vis=${ss.firstVisibleChild}-${ss.lastVisibleChild}`),stats.scrollClearReason=reasons.join("+")}}if(process.env.SILVERY_STRICT&&tier==="shift"&&hasStickyChildren)throw Error(`[SILVERY_STRICT] Scroll Tier 1 (buffer shift) activated with sticky children (node: ${props.id??node.type}, stickyCount: ${ss.stickyChildren?.length??0})`);let scrollDelta=ss.offset-(ss.prevOffset??ss.offset);if(tier==="shift"&&clearHeight>0){if(props.overflowIndicator===!0&&!border.top&&!border.bottom){let topIndicatorY=clearY,bottomIndicatorY=clearY+clearHeight-1;if(ss.prevOffset!=null&&ss.prevOffset>0)buffer.fill(contentX,topIndicatorY,contentWidth,1,{char:" ",bg:plan.clearBg});buffer.fill(contentX,bottomIndicatorY,contentWidth,1,{char:" ",bg:plan.clearBg})}buffer.scrollRegion(contentX,clearY,contentWidth,clearHeight,scrollDelta,{char:" ",bg:plan.clearBg})}if(tier==="clear"&&clearHeight>0)buffer.fill(contentX,clearY,contentWidth,clearHeight,{char:" ",bg:plan.clearBg});if(stickyForceRefresh&&clearHeight>0)buffer.fill(contentX,clearY,contentWidth,clearHeight,{char:" ",bg:null});let childAncestorLayoutChanged=node.layoutChangedThisFrame||!!ancestorLayoutChanged,prevVisTop=ss.prevOffset??ss.offset,prevVisBottom=prevVisTop+ss.viewportHeight;for(let i=0;i<node.children.length;i++){let child=node.children[i];if(!child)continue;if(child.props.position==="sticky")continue;if(i<ss.firstVisibleChild||i>ss.lastVisibleChild)continue;let thisChildHasPrev=defaultChildHasPrev,thisChildAncestorCleared=defaultChildAncestorCleared;if(tier==="shift"){let childRect=child.contentRect;if(childRect){let childTop=childRect.y-layout.y-border.top-padding.top,childBottom=childTop+childRect.height,wasFullyVisible=childTop>=prevVisTop&&childBottom<=prevVisBottom;thisChildHasPrev=wasFullyVisible,thisChildAncestorCleared=wasFullyVisible?ancestorCleared||contentRegionCleared:!0}}if(stickyForceRefresh&&thisChildHasPrev)thisChildHasPrev=!1,thisChildAncestorCleared=!1;renderNodeToBuffer(child,buffer,{scrollOffset:ss.offset,clipBounds:childClipBounds,hasPrevBuffer:thisChildHasPrev,ancestorCleared:thisChildAncestorCleared,bufferIsCloned,ancestorLayoutChanged:childAncestorLayoutChanged},ctx)}if(ss.stickyChildren)for(let sticky of ss.stickyChildren){let child=node.children[sticky.index];if(!child?.contentRect)continue;let stickyScrollOffset=sticky.naturalTop-sticky.renderOffset;renderNodeToBuffer(child,buffer,{scrollOffset:stickyScrollOffset,clipBounds:childClipBounds,hasPrevBuffer:!1,ancestorCleared:!1,bufferIsCloned,ancestorLayoutChanged:childAncestorLayoutChanged},ctx)}}function renderNormalChildren(node,buffer,props,nodeState,childPositionChanged=!1,contentRegionCleared=!1,childrenNeedFreshRender=!1,ctx){let{scrollOffset,clipBounds,hasPrevBuffer,ancestorCleared,bufferIsCloned,ancestorLayoutChanged}=nodeState,instrumentEnabled=ctx?.instrumentEnabled??_instrumentEnabled,stats=ctx?.stats??_contentPhaseStats,layout=node.contentRect;if(!layout)return;let clipX=(props.overflowX??props.overflow)==="hidden",clipY=(props.overflowY??props.overflow)==="hidden",effectiveClipBounds=clipX||clipY?computeChildClipBounds(layout,props,clipBounds,scrollOffset,clipX,clipY):clipBounds,hasStickyChildren=!!(node.stickyChildren&&node.stickyChildren.length>0),stickyForceRefresh=hasStickyChildren&&hasPrevBuffer;if(stickyForceRefresh){let border=props.borderStyle?getBorderSize(props):{top:0,bottom:0,left:0,right:0},padding=getPadding(props),clearX=layout.x+border.left+padding.left,clearY=layout.y-scrollOffset+border.top+padding.top,clearW=layout.width-border.left-border.right-padding.left-padding.right,clearH=layout.height-border.top-border.bottom-padding.top-padding.bottom;if(clipBounds){let{top:clipTop,bottom:clipBottom}=clipBounds;if(clearY<clipTop)clearH-=clipTop-clearY,clearY=clipTop;if(clearY+clearH>clipBottom)clearH=clipBottom-clearY;if(clipBounds.left!==void 0&&clearX<clipBounds.left)clearW-=clipBounds.left-clearX,clearX=clipBounds.left;if(clipBounds.right!==void 0&&clearX+clearW>clipBounds.right)clearW=clipBounds.right-clearX}if(clearW>0&&clearH>0)buffer.fill(clearX,clearY,clearW,clearH,{char:" ",bg:null})}let childrenNeedRepaint=node.childrenDirty||childPositionChanged||childrenNeedFreshRender;if(instrumentEnabled&&childrenNeedRepaint&&hasPrevBuffer){stats.normalChildrenRepaint++;let reasons=[];if(node.childrenDirty)reasons.push("childrenDirty");if(childPositionChanged)reasons.push("childPositionChanged");if(childrenNeedFreshRender)reasons.push("childrenNeedFreshRender");stats.normalRepaintReason=reasons.join("+")}let childHasPrev=childrenNeedRepaint?!1:hasPrevBuffer,childAncestorCleared=contentRegionCleared||ancestorCleared&&!getEffectiveBg(props),childAncestorLayoutChanged=node.layoutChangedThisFrame||!!ancestorLayoutChanged;if(stickyForceRefresh)childHasPrev=!1,childAncestorCleared=!1;let hasAbsoluteChildren=!1;for(let child of node.children){let childProps=child.props;if(childProps.position==="absolute"){hasAbsoluteChildren=!0;continue}if(hasStickyChildren&&childProps.position==="sticky")continue;renderNodeToBuffer(child,buffer,{scrollOffset,clipBounds:effectiveClipBounds,hasPrevBuffer:childHasPrev,ancestorCleared:childAncestorCleared,bufferIsCloned,ancestorLayoutChanged:childAncestorLayoutChanged},ctx)}if(node.stickyChildren)for(let sticky of node.stickyChildren){let child=node.children[sticky.index];if(!child?.contentRect)continue;let stickyScrollOffset=sticky.naturalTop-sticky.renderOffset;renderNodeToBuffer(child,buffer,{scrollOffset:stickyScrollOffset,clipBounds:effectiveClipBounds,hasPrevBuffer:!1,ancestorCleared:!1,bufferIsCloned,ancestorLayoutChanged:childAncestorLayoutChanged},ctx)}if(hasAbsoluteChildren)for(let child of node.children){if(child.props.position!=="absolute")continue;renderNodeToBuffer(child,buffer,{scrollOffset,clipBounds:effectiveClipBounds,hasPrevBuffer:!1,ancestorCleared:!1,bufferIsCloned,ancestorLayoutChanged:childAncestorLayoutChanged},ctx)}}function clearNodeDirtyFlags(node){node.contentDirty=!1,node.stylePropsDirty=!1,node.bgDirty=!1,node.subtreeDirty=!1,node.childrenDirty=!1,node.layoutChangedThisFrame=!1}function clearDirtyFlags(node){clearNodeDirtyFlags(node);for(let child of node.children)if(child.layoutNode)clearDirtyFlags(child);else clearVirtualTextFlags(child)}function clearVirtualTextFlags(node){clearNodeDirtyFlags(node);for(let child of node.children)clearVirtualTextFlags(child)}function hasChildPositionChanged(node){for(let child of node.children)if(child.contentRect&&child.prevLayout){if(child.contentRect.x!==child.prevLayout.x||child.contentRect.y!==child.prevLayout.y)return!0}return!1}function hasDescendantOverflowChanged(node){let rect=node.contentRect;return _checkDescendantOverflow(node.children,rect.x,rect.y,rect.x+rect.width,rect.y+rect.height)}function _checkDescendantOverflow(children,nodeLeft,nodeTop,nodeRight,nodeBottom){for(let child of children){if(child.prevLayout&&child.layoutChangedThisFrame){let prev=child.prevLayout;if(prev.x+prev.width>nodeRight||prev.y+prev.height>nodeBottom||prev.x<nodeLeft||prev.y<nodeTop)return!0}if(child.subtreeDirty&&child.children!==void 0){if(_checkDescendantOverflow(child.children,nodeLeft,nodeTop,nodeRight,nodeBottom))return!0}}return!1}function computeChildClipBounds(layout,props,parentClip,scrollOffset=0,horizontal=!0,vertical=!0){let border=props.borderStyle?getBorderSize(props):{top:0,bottom:0,left:0,right:0},padding=getPadding(props),adjustedY=layout.y-scrollOffset,nodeClip=vertical?{top:adjustedY+border.top+padding.top,bottom:adjustedY+layout.height-border.bottom-padding.bottom}:{top:-1/0,bottom:1/0};if(horizontal)nodeClip.left=layout.x+border.left+padding.left,nodeClip.right=layout.x+layout.width-border.right-padding.right;if(!parentClip)return nodeClip;let result={top:vertical?Math.max(parentClip.top,nodeClip.top):parentClip.top,bottom:vertical?Math.min(parentClip.bottom,nodeClip.bottom):parentClip.bottom};if(horizontal&&nodeClip.left!==void 0&&nodeClip.right!==void 0)result.left=Math.max(parentClip.left??0,nodeClip.left),result.right=Math.min(parentClip.right??1/0,nodeClip.right);else if(parentClip.left!==void 0&&parentClip.right!==void 0)result.left=parentClip.left,result.right=parentClip.right;return result}function findInheritedBg(node){let current=node.parent;while(current){let props=current.props;if(props.backgroundColor)return{color:parseColor(props.backgroundColor),ancestorRect:current.contentRect};if(props.theme){let theme=props.theme;return{color:parseColor(theme.bg),ancestorRect:current.contentRect}}current=current.parent}return{color:null,ancestorRect:null}}function findInheritedFg(node){let current=node.parent;while(current){let props=current.props;if(props.color)return parseColor(props.color);if(props.theme){let theme=props.theme;return parseColor(theme.fg)}current=current.parent}return null}function clearDescendantOverflowRegions(node,buffer,layout,scrollOffset,clipBounds){let clearBg=findInheritedBg(node).color,nodeRight=layout.x+layout.width,nodeBottom=layout.y-scrollOffset+layout.height,nodeLeft=layout.x,nodeTop=layout.y-scrollOffset;_clearDescendantOverflow(node.children,buffer,nodeLeft,nodeTop,nodeRight,nodeBottom,scrollOffset,clipBounds,clearBg)}function _clearDescendantOverflow(children,buffer,nodeLeft,nodeTop,nodeRight,nodeBottom,scrollOffset,clipBounds,clearBg){for(let child of children){if(child.prevLayout&&child.layoutChangedThisFrame){let prev=child.prevLayout,prevRight=prev.x+prev.width,prevBottom=prev.y-scrollOffset+prev.height,prevTop=prev.y-scrollOffset;if(prevRight>nodeRight){let overflowX=nodeRight,overflowWidth=Math.min(prevRight,buffer.width)-overflowX,overflowTop=Math.max(prevTop,clipBounds?.top??0),overflowBottom=Math.min(prevBottom,clipBounds?.bottom??buffer.height);if(overflowWidth>0&&overflowBottom>overflowTop)buffer.fill(overflowX,overflowTop,overflowWidth,overflowBottom-overflowTop,{char:" ",bg:clearBg})}if(prevBottom>nodeBottom){let overflowTop=Math.max(nodeBottom,clipBounds?.top??0),overflowBottom=Math.min(prevBottom,clipBounds?.bottom??buffer.height),overflowX=Math.max(prev.x,clipBounds?.left??0),overflowWidth=Math.min(prevRight,clipBounds?.right??buffer.width)-overflowX;if(overflowWidth>0&&overflowBottom>overflowTop)buffer.fill(overflowX,overflowTop,overflowWidth,overflowBottom-overflowTop,{char:" ",bg:clearBg})}if(prev.x<nodeLeft){let overflowX=Math.max(prev.x,0),overflowWidth=Math.min(nodeLeft,buffer.width)-overflowX,overflowTop=Math.max(prevTop,clipBounds?.top??0),overflowBottom=Math.min(prevBottom,clipBounds?.bottom??buffer.height);if(overflowWidth>0&&overflowBottom>overflowTop)buffer.fill(overflowX,overflowTop,overflowWidth,overflowBottom-overflowTop,{char:" ",bg:clearBg})}if(prevTop<nodeTop){let overflowTop=Math.max(prevTop,clipBounds?.top??0),overflowBottom=Math.min(nodeTop,clipBounds?.bottom??buffer.height),overflowX=Math.max(prev.x,clipBounds?.left??0),overflowWidth=Math.min(prevRight,clipBounds?.right??buffer.width)-overflowX;if(overflowWidth>0&&overflowBottom>overflowTop)buffer.fill(overflowX,overflowTop,overflowWidth,overflowBottom-overflowTop,{char:" ",bg:clearBg})}}if(child.subtreeDirty&&child.children!==void 0)_clearDescendantOverflow(child.children,buffer,nodeLeft,nodeTop,nodeRight,nodeBottom,scrollOffset,clipBounds,clearBg)}}function clearNodeRegion(node,buffer,layout,scrollOffset,clipBounds,layoutChanged){let inherited=findInheritedBg(node),clearBg=inherited.color,screenY=layout.y-scrollOffset,parentRect=node.parent?.contentRect,parentBottom=parentRect?parentRect.y-scrollOffset+parentRect.height:void 0,clearY=clipBounds?Math.max(screenY,clipBounds.top):screenY,clearBottom=clipBounds?Math.min(screenY+layout.height,clipBounds.bottom):screenY+layout.height;if(parentBottom!==void 0)clearBottom=Math.min(clearBottom,parentBottom);let{x:clearX,width:clearWidth}=layout;if(clipBounds?.left!==void 0&&clipBounds.right!==void 0){if(clearX<clipBounds.left)clearWidth-=clipBounds.left-clearX,clearX=clipBounds.left;if(clearX+clearWidth>clipBounds.right)clearWidth=Math.max(0,clipBounds.right-clearX)}if(inherited.ancestorRect){let ancestorRight=inherited.ancestorRect.x+inherited.ancestorRect.width,ancestorLeft=inherited.ancestorRect.x;if(clearX<ancestorLeft)clearWidth-=ancestorLeft-clearX,clearX=ancestorLeft;if(clearX+clearWidth>ancestorRight)clearWidth=Math.max(0,ancestorRight-clearX)}let clearHeight=clearBottom-clearY;if(clearHeight>0&&clearWidth>0){let _cellDbg2=globalThis.__silvery_cell_debug;if(_cellDbg2){if(clearX<=_cellDbg2.x&&clearX+clearWidth>_cellDbg2.x&&clearY<=_cellDbg2.y&&clearY+clearHeight>_cellDbg2.y){let msg=`CLEAR_REGION ${node.props.id??node.type} fill=${clearX},${clearY} ${clearWidth}x${clearHeight} bg=${String(clearBg)} COVERS TARGET`;_cellDbg2.log.push(msg),cellLog.debug?.(msg)}}buffer.fill(clearX,clearY,clearWidth,clearHeight,{char:" ",bg:clearBg})}clearExcessArea(node,buffer,layout,scrollOffset,clipBounds,layoutChanged,inherited)}function clearExcessArea(node,buffer,layout,scrollOffset,clipBounds,layoutChanged,inherited){if(!layoutChanged||!node.prevLayout)return;let prev=node.prevLayout,_cellDbg3=globalThis.__silvery_cell_debug,_prevCoversCell3=_cellDbg3&&prev.x<=_cellDbg3.x&&prev.x+prev.width>_cellDbg3.x&&prev.y-scrollOffset<=_cellDbg3.y&&prev.y-scrollOffset+prev.height>_cellDbg3.y;if(prev.width<=layout.width&&prev.height<=layout.height){if(_cellDbg3&&_prevCoversCell3){let msg=`EXCESS_SKIP_NO_SHRINK ${node.props.id??node.type} prev=${prev.x},${prev.y-scrollOffset} ${prev.width}x${prev.height} now=${layout.x},${layout.y-scrollOffset} ${layout.width}x${layout.height}`;_cellDbg3.log.push(msg),cellLog.debug?.(msg)}return}if(prev.x!==layout.x||prev.y!==layout.y){if(_cellDbg3&&_prevCoversCell3){let msg=`EXCESS_SKIP_MOVED ${node.props.id??node.type} prev=${prev.x},${prev.y-scrollOffset} ${prev.width}x${prev.height} now=${layout.x},${layout.y-scrollOffset} ${layout.width}x${layout.height} (dx=${layout.x-prev.x} dy=${layout.y-prev.y})`;_cellDbg3.log.push(msg),cellLog.debug?.(msg)}return}if(!inherited)inherited=findInheritedBg(node);let clearBg=inherited.color,screenY=layout.y-scrollOffset,prevScreenY=prev.y-scrollOffset,clipRect=inherited.ancestorRect??node.parent?.contentRect;if(!clipRect)return;let clipRectBottom=clipRect.y-scrollOffset+clipRect.height,clipRectRight=clipRect.x+clipRect.width,parent=node.parent;if(parent?.contentRect){let parentProps=parent.props,border=getBorderSize(parentProps),padding=getPadding(parentProps),parentRight=parent.contentRect.x+parent.contentRect.width-border.right-padding.right,parentBottom=parent.contentRect.y-scrollOffset+parent.contentRect.height-border.bottom-padding.bottom;clipRectRight=Math.min(clipRectRight,parentRight),clipRectBottom=Math.min(clipRectBottom,parentBottom)}if(prev.width>layout.width){let excessX=layout.x+layout.width,excessWidth=prev.width-layout.width;if(excessX+excessWidth>clipRectRight)excessWidth=Math.max(0,clipRectRight-excessX);if(excessWidth>0)clippedFill(buffer,excessX,excessWidth,prevScreenY,prevScreenY+prev.height,clipBounds,clipRectBottom,clearBg)}if(prev.height>layout.height){let bottomWidth=prev.width;if(layout.x+bottomWidth>clipRectRight)bottomWidth=Math.max(0,clipRectRight-layout.x);clippedFill(buffer,layout.x,bottomWidth,screenY+layout.height,prevScreenY+prev.height,clipBounds,clipRectBottom,clearBg)}}function clippedFill(buffer,x,width,top,bottom,clipBounds,outerBottom,bg){let clippedTop=clipBounds?Math.max(top,clipBounds.top):top,clippedBottom=Math.min(clipBounds?Math.min(bottom,clipBounds.bottom):bottom,outerBottom),clippedX=x,clippedWidth=width;if(clipBounds?.left!==void 0&&clipBounds.right!==void 0){if(clippedX<clipBounds.left)clippedWidth-=clipBounds.left-clippedX,clippedX=clipBounds.left;if(clippedX+clippedWidth>clipBounds.right)clippedWidth=Math.max(0,clipBounds.right-clippedX)}let height=clippedBottom-clippedTop;if(height>0&&clippedWidth>0)buffer.fill(clippedX,clippedTop,clippedWidth,height,{char:" ",bg})}var contentLog,traceLog,cellLog,_instrumentEnabled,_contentPhaseStats,_contentPhaseCallCount=0,_nodeTrace,_nodeTraceEnabled;var init_content_phase=__esm(()=>{init_buffer();init_render_box();init_render_helpers();init_render_text();init_state();contentLog=createLogger2("silvery:content"),traceLog=createLogger2("silvery:content:trace"),cellLog=createLogger2("silvery:content:cell");_instrumentEnabled=typeof process<"u"&&!!(process.env?.SILVERY_STRICT||process.env?.SILVERY_INSTRUMENT),_contentPhaseStats={nodesVisited:0,nodesRendered:0,nodesSkipped:0,textNodes:0,boxNodes:0,clearOps:0,noPrevBuffer:0,flagContentDirty:0,flagStylePropsDirty:0,flagLayoutChanged:0,flagSubtreeDirty:0,flagChildrenDirty:0,flagChildPositionChanged:0,flagAncestorLayoutChanged:0,scrollContainerCount:0,scrollViewportCleared:0,scrollClearReason:"",normalChildrenRepaint:0,normalRepaintReason:"",cascadeMinDepth:999,cascadeNodes:"",_prevBufferNull:0,_prevBufferDimMismatch:0,_hasPrevBuffer:0,_layoutW:0,_layoutH:0,_prevW:0,_prevH:0,_callCount:0},_nodeTrace=[],_nodeTraceEnabled=typeof process<"u"&&!!process.env?.SILVERY_STRICT});var init_content_phase_adapter=__esm(()=>{init_unicode();init_render_text()});var IncrementalRenderMismatchError;var init_errors=__esm(()=>{IncrementalRenderMismatchError=class IncrementalRenderMismatchError extends Error{contentPhaseStats;mismatchContext;constructor(message,data){super(message);this.name="IncrementalRenderMismatchError",this.contentPhaseStats=data?.contentPhaseStats,this.mismatchContext=data?.mismatchContext}}});function createEmptyCellChange(){return{x:0,y:0,cell:{char:" ",fg:null,bg:null,underlineColor:null,attrs:{},wide:!1,continuation:!1,hyperlink:void 0}}}function ensureDiffPoolCapacity(capacity){if(capacity<=diffPoolCapacity)return;for(let i=diffPoolCapacity;i<capacity;i++)diffPool.push(createEmptyCellChange());diffPoolCapacity=capacity}function writeCellChange(change,x,y,buffer){change.x=x,change.y=y,buffer.readCellInto(x,y,change.cell)}function writeEmptyCellChange(change,x,y){change.x=x,change.y=y;let cell=change.cell;cell.char=" ",cell.fg=null,cell.bg=null,cell.underlineColor=null;let attrs=cell.attrs;attrs.bold=void 0,attrs.dim=void 0,attrs.italic=void 0,attrs.underline=void 0,attrs.underlineStyle=void 0,attrs.blink=void 0,attrs.inverse=void 0,attrs.hidden=void 0,attrs.strikethrough=void 0,cell.wide=!1,cell.continuation=!1,cell.hyperlink=void 0}function diffBuffers(prev,next){let cells=Math.max(prev.width,next.width)*Math.max(prev.height,next.height),maxChanges=cells+(cells>>1);ensureDiffPoolCapacity(maxChanges);let changeCount=0,height=Math.min(prev.height,next.height),width=Math.min(prev.width,next.width),startRow=next.minDirtyRow===-1?0:next.minDirtyRow,endRow=next.maxDirtyRow===-1?-1:Math.min(next.maxDirtyRow,height-1);for(let y=startRow;y<=endRow;y++){if(!next.isRowDirty(y))continue;if(next.rowMetadataEquals(y,prev)&&next.rowCharsEquals(y,prev)&&next.rowExtrasEquals(y,prev))continue;for(let x=0;x<width;x++)if(!next.cellEquals(x,y,prev)){if(writeCellChange(diffPool[changeCount],x,y,next),changeCount++,x+1<width&&prev.isCellWide(x,y)&&!next.isCellWide(x,y))writeCellChange(diffPool[changeCount],x+1,y,next),changeCount++}}let widthGrew=next.width>prev.width;if(widthGrew)for(let y=0;y<next.height;y++)for(let x=prev.width;x<next.width;x++)writeCellChange(diffPool[changeCount],x,y,next),changeCount++;if(next.height>prev.height){let xEnd=widthGrew?prev.width:next.width;for(let y=prev.height;y<next.height;y++)for(let x=0;x<xEnd;x++)writeCellChange(diffPool[changeCount],x,y,next),changeCount++}if(prev.width>next.width)for(let y=0;y<height;y++)for(let x=next.width;x<prev.width;x++)writeEmptyCellChange(diffPool[changeCount],x,y),changeCount++;if(prev.height>next.height)for(let y=next.height;y<prev.height;y++)for(let x=0;x<prev.width;x++)writeEmptyCellChange(diffPool[changeCount],x,y),changeCount++;if(changeCount>maxChanges)throw Error(`diffBuffers: changeCount ${changeCount} exceeds pool capacity ${maxChanges} (prev ${prev.width}x${prev.height}, next ${next.width}x${next.height})`);return diffResult.pool=diffPool,diffResult.count=changeCount,diffResult}var diffPool,diffPoolCapacity=0,diffResult;var init_diff_buffers=__esm(()=>{diffPool=[];diffResult={pool:diffPool,count:0}});function outputGraphemeWidth(g,ctx){return ctx.measurer?ctx.measurer.graphemeWidth(g):graphemeWidth(g)}function outputTextSizingEnabled(ctx){return ctx.measurer?ctx.measurer.textSizingEnabled:isTextSizingEnabled()}function isStrictOutput(){return!!process.env.SILVERY_STRICT}function isStrictAccumulate(){return!!process.env.SILVERY_STRICT_ACCUMULATE}function strictTerminalBackends(){let val=(process.env.SILVERY_STRICT_TERMINAL??"").toLowerCase().trim();if(!val)return[];if(val==="all")return["vt100","xterm","ghostty"];let backends=val.split(",").map((s)=>s.trim()).filter(Boolean),valid=new Set(["vt100","xterm","ghostty"]);for(let b of backends)if(!valid.has(b))console.warn(`SILVERY_STRICT_TERMINAL: unknown backend '${b}', ignoring`);return backends.filter((b)=>valid.has(b))}function createTerminalVerifyState(){let allBackends=strictTerminalBackends();return{terminal:null,ghosttyTerminal:null,width:0,height:0,frameCount:0,backends:allBackends.filter((b)=>b!=="vt100"),hasVt100:allBackends.includes("vt100")}}function createInlineCursorState(){return{prevCursorRow:-1,prevOutputLines:0,prevBuffer:null,forceFirstRender:!1}}function updateInlineCursorRow(state,cursorPos,maxOutputLines,startLine){if(cursorPos?.visible){let visibleRow=cursorPos.y-startLine;state.prevCursorRow=visibleRow>=0&&visibleRow<maxOutputLines?visibleRow:maxOutputLines-1}else state.prevCursorRow=maxOutputLines-1;state.prevOutputLines=maxOutputLines}function wrapTextSizing(char,wide,ctx){if(!wide||!outputTextSizingEnabled(ctx))return char;return textSized(char,2)}function styleToKey(style){let{fg,bg,attrs}=style,key="";if(fg===null)key="n";else if(typeof fg==="number")key=`${fg}`;else key=`r${fg.r},${fg.g},${fg.b}`;if(key+="|",bg===null)key+="n";else if(typeof bg==="number")key+=`${bg}`;else key+=`r${bg.r},${bg.g},${bg.b}`;let attrBits=0;if(attrs.bold)attrBits|=1;if(attrs.dim)attrBits|=2;if(attrs.italic)attrBits|=4;if(attrs.underline)attrBits|=8;if(attrs.inverse)attrBits|=16;if(attrs.strikethrough)attrBits|=32;if(attrs.blink)attrBits|=64;if(attrs.hidden)attrBits|=128;if(key+=`|${attrBits}`,attrs.underlineStyle)key+=`|u${attrs.underlineStyle}`;let ul=style.underlineColor;if(ul!==null&&ul!==void 0)if(typeof ul==="number")key+=`|l${ul}`;else key+=`|lr${ul.r},${ul.g},${ul.b}`;if(style.hyperlink)key+=`|h${style.hyperlink}`;return key}function cachedStyleToAnsi(style,ctx){let key=styleToKey(style),sgr=ctx.sgrCache.get(key);if(sgr!==void 0)return sgr;if(sgr=styleToAnsi2(style,ctx),ctx.sgrCache.set(key,sgr),ctx.sgrCache.size>1000)ctx.sgrCache.clear();return sgr}function styleTransition(oldStyle,newStyle,ctx){if(!oldStyle)return cachedStyleToAnsi(newStyle,ctx);if(styleEquals(oldStyle,newStyle))return"";let oldKey=styleToKey(oldStyle),newKey=styleToKey(newStyle),cacheKey=`${oldKey}\x00${newKey}`,cached=ctx.transitionCache.get(cacheKey);if(cached!==void 0)return cached;let codes=[],oa=oldStyle.attrs,na=newStyle.attrs,boldChanged=Boolean(oa.bold)!==Boolean(na.bold),dimChanged=Boolean(oa.dim)!==Boolean(na.dim);if(boldChanged||dimChanged){let boldOff=boldChanged&&!na.bold,dimOff=dimChanged&&!na.dim;if(boldOff||dimOff){if(codes.push("22"),na.bold)codes.push("1");if(na.dim)codes.push("2")}else{if(boldChanged&&na.bold)codes.push("1");if(dimChanged&&na.dim)codes.push("2")}}if(Boolean(oa.italic)!==Boolean(na.italic))codes.push(na.italic?"3":"23");let oldUl=Boolean(oa.underline),newUl=Boolean(na.underline),oldUlStyle=oa.underlineStyle??!1,newUlStyle=na.underlineStyle??!1;if(oldUl!==newUl||oldUlStyle!==newUlStyle)if(!ctx.caps.underlineStyles)codes.push(newUl||na.underlineStyle?"4":"24");else{let sgrSub=underlineStyleToSgr(na.underlineStyle);if(sgrSub!==null&&sgrSub!==0)codes.push(`4:${sgrSub}`);else if(newUl)codes.push("4");else codes.push("24")}if(Boolean(oa.inverse)!==Boolean(na.inverse))codes.push(na.inverse?"7":"27");if(Boolean(oa.hidden)!==Boolean(na.hidden))codes.push(na.hidden?"8":"28");if(Boolean(oa.strikethrough)!==Boolean(na.strikethrough))codes.push(na.strikethrough?"9":"29");if(Boolean(oa.blink)!==Boolean(na.blink))codes.push(na.blink?"5":"25");if(!colorEquals(oldStyle.fg,newStyle.fg))if(newStyle.fg===null)codes.push("39");else codes.push(fgColorCode(newStyle.fg));if(!colorEquals(oldStyle.bg,newStyle.bg))if(newStyle.bg===null)codes.push("49");else codes.push(bgColorCode(newStyle.bg));if(ctx.caps.underlineColor&&!colorEquals(oldStyle.underlineColor,newStyle.underlineColor))if(newStyle.underlineColor===null||newStyle.underlineColor===void 0)codes.push("59");else if(typeof newStyle.underlineColor==="number")codes.push(`58;5;${newStyle.underlineColor}`);else codes.push(`58;2;${newStyle.underlineColor.r};${newStyle.underlineColor.g};${newStyle.underlineColor.b}`);let result;if(codes.length===0)result=cachedStyleToAnsi(newStyle,ctx);else result=`\x1B[${codes.join(";")}m`;if(ctx.transitionCache.set(cacheKey,result),ctx.transitionCache.size>1000)ctx.transitionCache.clear();return result}function underlineStyleToSgr(style){switch(style){case!1:return 0;case"single":return 1;case"double":return 2;case"curly":return 3;case"dotted":return 4;case"dashed":return 5;default:return null}}function outputPhase(prev,next,mode="fullscreen",scrollbackOffset=0,termRows,cursorPos,_inlineState,_ctx,_accState,_tvState){let inlineState=_inlineState??createInlineCursorState(),ctx=_ctx??defaultContext,accState=_accState??defaultAccState;ctx.mode=mode,ctx.termRows=termRows;let tvState=_tvState??defaultTerminalVerifyState;if(mode==="inline"&&inlineState.forceFirstRender)inlineState.forceFirstRender=!1,prev=null;if(!prev){if(mode==="inline"&&inlineState.prevBuffer&&inlineState.prevCursorRow>=0){let stored=inlineState.prevBuffer;if(stored.width===next.width&&stored.height===next.height)return inlineState.prevBuffer=next,inlineIncrementalRender(inlineState,stored,next,scrollbackOffset,cursorPos,ctx,tvState)}let firstOutput=bufferToAnsi(next,ctx,termRows);if(mode==="inline"){let firstContentLines=findLastContentLine(next)+1,firstMaxOutput=termRows!=null?Math.min(firstContentLines,termRows):firstContentLines,firstStartLine=0;if(termRows!=null&&firstContentLines>termRows)firstStartLine=firstContentLines-termRows;let prefix="";if(inlineState.prevCursorRow>=0){let clearDistance=termRows??Math.max(inlineState.prevCursorRow,inlineState.prevOutputLines-1);if(clearDistance>0)prefix+=`\x1B[${clearDistance}A`;prefix+="\r\x1B[J"}return inlineState.prevBuffer=next,updateInlineCursorRow(inlineState,cursorPos,firstMaxOutput,firstStartLine),prefix+firstOutput+inlineCursorSuffix(cursorPos??null,next,ctx)}if(isStrictAccumulate())accState.accumulatedAnsi=firstOutput,accState.accumulateWidth=next.width,accState.accumulateHeight=next.height,accState.accumulateFrameCount=0;if(tvState.backends.length>0)initTerminalVerifyState(tvState,next.width,next.height,firstOutput);if(CAPTURE_RAW)try{let fs=__require("fs");_captureRawFrameCount=0,fs.writeFileSync("/tmp/silvery-raw.ansi",firstOutput),fs.writeFileSync("/tmp/silvery-raw-frames.jsonl",JSON.stringify({frame:0,type:"full",bytes:firstOutput.length,width:next.width,height:next.height})+`
|
|
26
|
+
`)}catch{}return firstOutput}if(mode==="inline")return inlineState.prevBuffer=next,inlineIncrementalRender(inlineState,prev,next,scrollbackOffset,cursorPos,ctx,tvState);if(FULL_RENDER)return bufferToAnsi(next,ctx,termRows);if(prev.width!==next.width||prev.height!==next.height)return bufferToAnsi(next,ctx,termRows);let{pool,count:rawCount}=diffBuffers(prev,next),count=rawCount;if(termRows!=null){let writeIdx=0;for(let i=0;i<rawCount;i++)if(pool[i].y<termRows)pool[writeIdx++]=pool[i];count=writeIdx}if(DEBUG_OUTPUT){console.error(`[SILVERY_DEBUG_OUTPUT] diffBuffers: ${count} changes${rawCount!==count?` (${rawCount-count} clamped beyond termRows)`:""}`);let debugLimit=Math.min(count,10);for(let i=0;i<debugLimit;i++){let change=pool[i];console.error(` (${change.x},${change.y}): "${change.cell.char}"`)}if(count>10)console.error(` ... and ${count-10} more`)}if(count===0)return"";let incrOutput=changesToAnsi(pool,count,ctx,next).output;if(DEBUG_OUTPUT||isStrictAccumulate()){let bytes=Buffer.byteLength(incrOutput);try{__require("fs").appendFileSync("/tmp/silvery-sizes.log",`changesToAnsi: ${count} changes, ${bytes} bytes
|
|
27
|
+
`)}catch{}}if(DEBUG_CAPTURE){_debugFrameCount++;try{let fs=__require("fs"),freshOutput=bufferToAnsi(next,ctx),freshPrev=prev?bufferToAnsi(prev,ctx):"",w=Math.max(prev?.width??next.width,next.width),h=Math.max(prev?.height??next.height,next.height),screenIncr=replayAnsiWithStyles(w,h,freshPrev+incrOutput,ctx),screenFresh=replayAnsiWithStyles(w,h,freshOutput,ctx),mismatchInfo="";for(let y=0;y<h&&!mismatchInfo;y++)for(let x=0;x<w&&!mismatchInfo;x++){let ic=screenIncr[y]?.[x],fc=screenFresh[y]?.[x];if(ic&&fc&&(ic.char!==fc.char||!sgrColorEquals(ic.fg,fc.fg)||!sgrColorEquals(ic.bg,fc.bg))){mismatchInfo=`MISMATCH at (${x},${y}): incr='${ic.char}' fresh='${fc.char}' incrFg=${formatColor(ic.fg)} freshFg=${formatColor(fc.fg)} incrBg=${formatColor(ic.bg)} freshBg=${formatColor(fc.bg)}`;let incrRow=screenIncr[y].map((c)=>c.char).join(""),freshRow=screenFresh[y].map((c)=>c.char).join("");mismatchInfo+=`
|
|
28
|
+
incr row ${y}: ${incrRow.slice(Math.max(0,x-20),x+40)}
|
|
29
|
+
fresh row ${y}: ${freshRow.slice(Math.max(0,x-20),x+40)}`}}let status=mismatchInfo||"MATCH";if(fs.appendFileSync("/tmp/silvery-capture.log",`Frame ${_debugFrameCount}: ${count} changes, ${status}
|
|
30
|
+
`),mismatchInfo)fs.writeFileSync(`/tmp/silvery-incr-${_debugFrameCount}.ansi`,freshPrev+incrOutput),fs.writeFileSync(`/tmp/silvery-fresh-${_debugFrameCount}.ansi`,freshOutput),fs.appendFileSync("/tmp/silvery-capture.log",` Saved ANSI files: /tmp/silvery-incr-${_debugFrameCount}.ansi and /tmp/silvery-fresh-${_debugFrameCount}.ansi
|
|
31
|
+
`)}catch(e){try{__require("fs").appendFileSync("/tmp/silvery-capture.log",`Frame ${_debugFrameCount}: ERROR ${e}
|
|
32
|
+
`)}catch{}}}if(isStrictOutput()||tvState.hasVt100)verifyOutputEquivalence(prev,next,incrOutput,ctx);if(isStrictAccumulate())accState.accumulatedAnsi+=incrOutput,accState.accumulateFrameCount++,verifyAccumulatedOutput(next,ctx,accState);if(tvState.backends.length>0&&(tvState.terminal||tvState.ghosttyTerminal))tvState.frameCount++,verifyTerminalEquivalence(tvState,incrOutput,next,ctx);if(CAPTURE_RAW)try{let fs=__require("fs");_captureRawFrameCount++,fs.appendFileSync("/tmp/silvery-raw.ansi",incrOutput);let freshOutput=bufferToAnsi(next,ctx);fs.writeFileSync(`/tmp/silvery-raw-fresh-${_captureRawFrameCount}.ansi`,freshOutput),fs.appendFileSync("/tmp/silvery-raw-frames.jsonl",JSON.stringify({frame:_captureRawFrameCount,type:"incremental",changes:count,bytes:incrOutput.length,width:next.width,height:next.height})+`
|
|
33
|
+
`)}catch{}return incrOutput}function lineHasContent(buffer,y){for(let x=0;x<buffer.width;x++){let ch=buffer.getCellChar(x,y);if(ch!==" "&&ch!=="")return!0;if(buffer.getCellBg(x,y)!==null)return!0;if(buffer.getCellAttrs(x,y)&VISIBLE_SPACE_ATTR_MASK)return!0}return!1}function findLastContentLine(buffer){for(let y=buffer.height-1;y>=0;y--)if(lineHasContent(buffer,y))return y;return 0}function inlineCursorSuffix(cursorPos,buffer,ctx){let{termRows}=ctx;if(!cursorPos?.visible)return"\x1B[?25l";let lastContentLine=findLastContentLine(buffer),maxLine=lastContentLine,startLine=0,maxOutputLines=termRows!=null?Math.min(lastContentLine+1,termRows):lastContentLine+1;if(termRows!=null&&maxLine>=termRows)startLine=maxLine-termRows+1;let visibleRow=cursorPos.y-startLine;if(visibleRow<0||visibleRow>=maxOutputLines)return"\x1B[?25l";let rowDelta=maxOutputLines-1-visibleRow,suffix="";if(rowDelta>0)suffix+=`\x1B[${rowDelta}A`;if(suffix+="\r",cursorPos.x>0)suffix+=`\x1B[${cursorPos.x}C`;return suffix+="\x1B[?25h",suffix}function inlineIncrementalRender(state,prev,next,scrollbackOffset,cursorPos,ctx=defaultContext,tvState){let{termRows}=ctx;if(scrollbackOffset>0||prev.width!==next.width||prev.height!==next.height||state.prevCursorRow<0)return inlineFullRender(state,prev,next,scrollbackOffset,cursorPos,ctx);let nextContentLines=findLastContentLine(next)+1,prevContentLines=findLastContentLine(prev)+1,prevMaxOutputLines=termRows!=null?Math.min(prevContentLines,termRows):prevContentLines,maxOutputLines=termRows!=null?Math.min(nextContentLines,termRows):nextContentLines,prevStartLine=0;if(termRows!=null&&prevContentLines>termRows)prevStartLine=prevContentLines-termRows;let startLine=0;if(termRows!=null&&nextContentLines>termRows)startLine=nextContentLines-termRows;if(startLine!==prevStartLine)return inlineFullRender(state,prev,next,scrollbackOffset,cursorPos,ctx);let{pool,count}=diffBuffers(prev,next);if(count===0&&nextContentLines===prevContentLines){let suffix=inlineCursorSuffix(cursorPos??null,next,ctx);return updateInlineCursorRow(state,cursorPos,maxOutputLines,startLine),suffix}let output="";if(state.prevCursorRow>0)output+=`\x1B[${state.prevCursorRow}A`;output+="\r",output+="\x1B[?25l";let effectiveOutputLines=Math.max(prevMaxOutputLines,maxOutputLines),changes=changesToAnsi(pool,count,ctx,next,startLine,effectiveOutputLines);output+=changes.output;let finalY=changes.finalY,prevBottomRow=prevMaxOutputLines-1,bottomRow=maxOutputLines-1;if(maxOutputLines>prevMaxOutputLines){let fromRow=finalY>=0?finalY:0;if(fromRow>=bottomRow);else if(fromRow>=prevBottomRow){let remainingRows=bottomRow-fromRow;for(let i=0;i<remainingRows;i++)output+=`\r
|
|
34
|
+
`}else{if(fromRow<prevBottomRow){let dy=prevBottomRow-fromRow;output+=dy===1?`\r
|
|
35
|
+
`:`\r\x1B[${dy}B`}let newRows=bottomRow-prevBottomRow;for(let i=0;i<newRows;i++)output+=`\r
|
|
36
|
+
`}}else if(maxOutputLines<prevMaxOutputLines){let fromRow=finalY>=0?finalY:0;if(fromRow<bottomRow){let dy=bottomRow-fromRow;output+=dy===1?`\r
|
|
37
|
+
`:`\r\x1B[${dy}B`}else if(fromRow>bottomRow)output+=`\x1B[${fromRow-bottomRow}A`;let orphanCount=prevMaxOutputLines-maxOutputLines;for(let y=0;y<orphanCount;y++)output+=`
|
|
38
|
+
\r\x1B[K`;if(orphanCount>0)output+=`\x1B[${orphanCount}A`}else if(finalY>=0&&finalY<bottomRow){let dy=bottomRow-finalY;output+=dy===1?`\r
|
|
39
|
+
`:`\r\x1B[${dy}B`}if(output+=inlineCursorSuffix(cursorPos??null,next,ctx),isStrictOutput()||tvState?.hasVt100){let savedMode=ctx.mode;ctx.mode="fullscreen";let fsIncrOutput=changesToAnsi(pool,count,ctx,next).output;verifyOutputEquivalence(prev,next,fsIncrOutput,ctx),ctx.mode=savedMode}return updateInlineCursorRow(state,cursorPos,maxOutputLines,startLine),output}function inlineFullRender(state,prev,next,scrollbackOffset,cursorPos,ctx=defaultContext){let{termRows}=ctx,nextContentLines=findLastContentLine(next)+1,prevOutputLines,cursorRowInRegion;if(state.prevCursorRow>=0)prevOutputLines=state.prevOutputLines,cursorRowInRegion=state.prevCursorRow;else{let prevContentLines=findLastContentLine(prev)+1;prevOutputLines=termRows!=null?Math.min(prevContentLines,termRows):prevContentLines,cursorRowInRegion=prevOutputLines-1}let rawCursorOffset=cursorRowInRegion+scrollbackOffset,cursorOffset=termRows!=null&&!isStrictOutput()?Math.min(rawCursorOffset,termRows-1):rawCursorOffset,maxOutputLines=termRows!=null?Math.min(nextContentLines,termRows):nextContentLines;if(scrollbackOffset===0){let{count}=diffBuffers(prev,next);if(count===0)return""}let prefix="";if(cursorOffset>0)prefix=`\x1B[${cursorOffset}A\r`;let output=prefix+bufferToAnsi(next,ctx,maxOutputLines),terminalScroll=termRows!=null?Math.max(0,rawCursorOffset-(termRows-1)):0,lastOccupiedLine=Math.max(prevOutputLines-1-terminalScroll,0),nextLastLine=maxOutputLines-1;if(lastOccupiedLine>nextLastLine){for(let y=nextLastLine+1;y<=lastOccupiedLine;y++)output+=`
|
|
40
|
+
\r\x1B[K`;let up=lastOccupiedLine-nextLastLine;if(up>0)output+=`\x1B[${up}A`}output+=inlineCursorSuffix(cursorPos??null,next,ctx);let startLine=0;if(termRows!=null&&nextContentLines>termRows)startLine=nextContentLines-termRows;return updateInlineCursorRow(state,cursorPos,maxOutputLines,startLine),output}function bufferToAnsi(buffer,ctx=defaultContext,maxRows){let{mode}=ctx,output="",currentStyle=null,currentHyperlink,maxLine=mode==="inline"?findLastContentLine(buffer):buffer.height-1,startLine=0;if(maxRows!=null&&maxLine>=maxRows)if(mode==="fullscreen")maxLine=maxRows-1;else startLine=maxLine-maxRows+1;if(mode==="fullscreen")output+="\x1B[H";else output+="\x1B[?25l";let cell=createMutableCell(),cellStyle={fg:null,bg:null,underlineColor:null,attrs:{}};for(let y=startLine;y<=maxLine;y++){if(mode==="inline")output+="\r";else if(y>startLine)output+=`\x1B[${y+1};1H`;for(let x=0;x<buffer.width;x++){buffer.readCellInto(x,y,cell);let cellHyperlink=cell.hyperlink;if(cellHyperlink!==currentHyperlink){if(currentHyperlink)output+="\x1B]8;;\x1B\\";if(cellHyperlink)output+=`\x1B]8;;${cellHyperlink}\x1B\\`;currentHyperlink=cellHyperlink}if(cellStyle.fg=cell.fg,cellStyle.bg=cell.bg,cellStyle.underlineColor=cell.underlineColor,cellStyle.attrs=cell.attrs,!styleEquals(currentStyle,cellStyle)){let saved={fg:cell.fg,bg:cell.bg,underlineColor:cell.underlineColor,attrs:{...cell.attrs}};output+=styleTransition(currentStyle,saved,ctx),currentStyle=saved}let char=cell.char||" ";if(output+=wrapTextSizing(char,cell.wide,ctx),cell.wide)if(x++,mode==="fullscreen")output+=`\x1B[${y-startLine+1};${x+2}H`;else{if(currentStyle&&(currentStyle.bg!==null||hasActiveAttrs(currentStyle.attrs)))output+="\x1B[0m",currentStyle=null;let nextCol=x+1;if(output+="\r",nextCol>0)output+=nextCol===1?"\x1B[C":`\x1B[${nextCol}C`}}if(currentHyperlink)output+="\x1B]8;;\x1B\\",currentHyperlink=void 0;if(currentStyle&&(currentStyle.bg!==null||hasActiveAttrs(currentStyle.attrs)))output+="\x1B[0m",currentStyle=null;if(output+="\x1B[K",y<maxLine){if(mode==="inline")output+=`\r
|
|
41
|
+
`}}if(currentHyperlink)output+="\x1B]8;;\x1B\\";return output+="\x1B[0m",output}function sortPoolByPosition(pool,count){for(let i=1;i<count;i++){let item=pool[i],iy=item.y,ix=item.x,j=i-1;while(j>=0&&(pool[j].y>iy||pool[j].y===iy&&pool[j].x>ix))pool[j+1]=pool[j],j--;pool[j+1]=item}}function changesToAnsi(pool,count,ctx=defaultContext,buffer,startLine=0,maxOutputLines=1/0){let{mode}=ctx;if(count===0)return{output:"",finalY:-1};sortPoolByPosition(pool,count);let output="",currentStyle=null,currentHyperlink,isInline=mode==="inline",endLine=startLine+maxOutputLines,finalY=-1,cursorX=-1,cursorY=-1,prevY=-1,lastEmittedX=-1,lastEmittedY=-1;for(let i=0;i<count;i++){let change=pool[i],x=change.x,y=change.y,cell=change.cell;if(isInline&&(y<startLine||y>=endLine))continue;if(cell.continuation){if(lastEmittedX===x-1&&lastEmittedY===y)continue;if(buffer&&x>0){if(x=x-1,buffer.readCellInto(x,y,wideCharLookupCell),cell=wideCharLookupCell,cell.continuation||!cell.wide)continue}else continue}let renderY=isInline?y-startLine:y;if(y!==prevY&¤tHyperlink)output+="\x1B]8;;\x1B\\",currentHyperlink=void 0;if(prevY=y,renderY!==cursorY||x!==cursorX)if(cursorY>=0&&renderY===cursorY+1&&x===0){if(currentStyle&&(currentStyle.bg!==null||hasActiveAttrs(currentStyle.attrs)))output+="\x1B[0m",currentStyle=null;output+=`\r
|
|
42
|
+
`}else if(cursorY>=0&&renderY===cursorY&&x>cursorX){if(currentStyle&¤tStyle.bg!==null)output+="\x1B[0m",currentStyle=null;let dx=x-cursorX;output+=dx===1?"\x1B[C":`\x1B[${dx}C`}else if(cursorY>=0&&renderY>cursorY&&x===0){let dy=renderY-cursorY;if(currentStyle&&(currentStyle.bg!==null||hasActiveAttrs(currentStyle.attrs)))output+="\x1B[0m",currentStyle=null;output+=dy===1?`\r
|
|
43
|
+
`:`\r\x1B[${dy}B`}else if(isInline){if(currentStyle&&(currentStyle.bg!==null||hasActiveAttrs(currentStyle.attrs)))output+="\x1B[0m",currentStyle=null;let fromRow=cursorY>=0?cursorY:0;if(renderY>fromRow)output+=`\x1B[${renderY-fromRow}B\r`;else if(renderY<fromRow)output+=`\x1B[${fromRow-renderY}A\r`;else output+="\r";if(x>0)output+=x===1?"\x1B[C":`\x1B[${x}C`}else output+=`\x1B[${renderY+1};${x+1}H`;let cellHyperlink=cell.hyperlink;if(cellHyperlink!==currentHyperlink){if(currentHyperlink)output+="\x1B]8;;\x1B\\";if(cellHyperlink)output+=`\x1B]8;;${cellHyperlink}\x1B\\`;currentHyperlink=cellHyperlink}if(reusableCellStyle.fg=cell.fg,reusableCellStyle.bg=cell.bg,reusableCellStyle.underlineColor=cell.underlineColor,reusableCellStyle.attrs=cell.attrs,!styleEquals(currentStyle,reusableCellStyle)){let prevStyle=currentStyle;currentStyle={fg:cell.fg,bg:cell.bg,underlineColor:cell.underlineColor,attrs:{...cell.attrs}},output+=styleTransition(prevStyle,currentStyle,ctx)}let char=cell.char||" ";if(output+=wrapTextSizing(char,cell.wide,ctx),cursorX=x+(cell.wide?2:1),cursorY=renderY,lastEmittedX=x,lastEmittedY=y,cell.wide)if(isInline){if(currentStyle&¤tStyle.bg!==null)output+="\x1B[0m",currentStyle=null;if(output+="\r",cursorX>0)output+=cursorX===1?"\x1B[C":`\x1B[${cursorX}C`}else output+=`\x1B[${cursorY+1};${cursorX+1}H`}if(finalY=cursorY,currentHyperlink)output+="\x1B]8;;\x1B\\";if(currentStyle)output+="\x1B[0m";return{output,finalY}}function styleToAnsi2(style,ctx=defaultContext){let{fg,bg}=style,result="";if(fg!==null)result+=`\x1B[${fgColorCode(fg)}m`;if(bg!==null&&!isDefaultBg(bg))result+=`\x1B[${bgColorCode(bg)}m`;if(style.attrs.bold)result+="\x1B[1m";if(style.attrs.dim)result+="\x1B[2m";if(style.attrs.italic)result+="\x1B[3m";if(!ctx.caps.underlineStyles){if(style.attrs.underline||style.attrs.underlineStyle)result+="\x1B[4m"}else{let underlineStyle=style.attrs.underlineStyle,sgrSubparam=underlineStyleToSgr(underlineStyle);if(sgrSubparam!==null&&sgrSubparam!==0)result+=`\x1B[4:${sgrSubparam}m`;else if(style.attrs.underline)result+="\x1B[4m"}if(style.attrs.blink)result+="\x1B[5m";if(style.attrs.inverse)result+="\x1B[7m";if(style.attrs.hidden)result+="\x1B[8m";if(style.attrs.strikethrough)result+="\x1B[9m";if(ctx.caps.underlineColor&&style.underlineColor!==null&&style.underlineColor!==void 0)if(typeof style.underlineColor==="number")result+=`\x1B[58;5;${style.underlineColor}m`;else result+=`\x1B[58;2;${style.underlineColor.r};${style.underlineColor.g};${style.underlineColor.b}m`;return result}function createDefaultSgr(){return{fg:null,bg:null,bold:!1,dim:!1,italic:!1,underline:!1,blink:!1,inverse:!1,hidden:!1,strikethrough:!1}}function createDefaultStyledCell(){return{char:" ",fg:null,bg:null,bold:!1,dim:!1,italic:!1,underline:!1,blink:!1,inverse:!1,hidden:!1,strikethrough:!1}}function applySgrParams(params,sgr){if(params===""||params==="0"){sgr.fg=null,sgr.bg=null,sgr.bold=!1,sgr.dim=!1,sgr.italic=!1,sgr.underline=!1,sgr.blink=!1,sgr.inverse=!1,sgr.hidden=!1,sgr.strikethrough=!1;return}let parts=params.split(";"),i=0;while(i<parts.length){let code=parts[i],colonIdx=code.indexOf(":");if(colonIdx>=0){if(parseInt(code.substring(0,colonIdx))===4){let sub=parseInt(code.substring(colonIdx+1));sgr.underline=sub>0}i++;continue}let n=parseInt(code);if(n===0)sgr.fg=null,sgr.bg=null,sgr.bold=!1,sgr.dim=!1,sgr.italic=!1,sgr.underline=!1,sgr.blink=!1,sgr.inverse=!1,sgr.hidden=!1,sgr.strikethrough=!1;else if(n===1)sgr.bold=!0;else if(n===2)sgr.dim=!0;else if(n===3)sgr.italic=!0;else if(n===4)sgr.underline=!0;else if(n===5||n===6)sgr.blink=!0;else if(n===7)sgr.inverse=!0;else if(n===8)sgr.hidden=!0;else if(n===9)sgr.strikethrough=!0;else if(n===22)sgr.bold=!1,sgr.dim=!1;else if(n===23)sgr.italic=!1;else if(n===24)sgr.underline=!1;else if(n===25)sgr.blink=!1;else if(n===27)sgr.inverse=!1;else if(n===28)sgr.hidden=!1;else if(n===29)sgr.strikethrough=!1;else if(n>=30&&n<=37)sgr.fg=n-30;else if(n===38){if(i+1<parts.length&&parts[i+1]==="5"&&i+2<parts.length)sgr.fg=parseInt(parts[i+2]),i+=2;else if(i+1<parts.length&&parts[i+1]==="2"&&i+4<parts.length)sgr.fg={r:parseInt(parts[i+2]),g:parseInt(parts[i+3]),b:parseInt(parts[i+4])},i+=4}else if(n===39)sgr.fg=null;else if(n>=40&&n<=47)sgr.bg=n-40;else if(n===48){if(i+1<parts.length&&parts[i+1]==="5"&&i+2<parts.length)sgr.bg=parseInt(parts[i+2]),i+=2;else if(i+1<parts.length&&parts[i+1]==="2"&&i+4<parts.length)sgr.bg={r:parseInt(parts[i+2]),g:parseInt(parts[i+3]),b:parseInt(parts[i+4])},i+=4}else if(n===49)sgr.bg=null;else if(n>=90&&n<=97)sgr.fg=n-90+8;else if(n>=100&&n<=107)sgr.bg=n-100+8;i++}}function replayAnsiWithStyles(width,height,ansi,ctx=defaultContext){let screen=Array.from({length:height},()=>Array.from({length:width},()=>createDefaultStyledCell())),cx=0,cy=0,sgr=createDefaultSgr(),i=0;while(i<ansi.length)if(ansi[i]==="\x1B")if(ansi[i+1]==="["){i+=2;let params="";while(i<ansi.length&&(ansi[i]>="0"&&ansi[i]<="9"||ansi[i]===";"||ansi[i]==="?"||ansi[i]===":"))params+=ansi[i],i++;let cmd=ansi[i];if(i++,cmd==="H")if(params==="")cx=0,cy=0;else{let cmdParts=params.split(";");cy=Math.min(height-1,Math.max(0,(parseInt(cmdParts[0])||1)-1)),cx=Math.min(width-1,Math.max(0,(parseInt(cmdParts[1])||1)-1))}else if(cmd==="K"){if(cy>=height)continue;for(let x=cx;x<width;x++){let cell=screen[cy][x];cell.char=" ",cell.fg=null,cell.bg=sgr.bg,cell.bold=!1,cell.dim=!1,cell.italic=!1,cell.underline=!1,cell.blink=!1,cell.inverse=!1,cell.hidden=!1,cell.strikethrough=!1}}else if(cmd==="A")cy=Math.max(0,cy-(parseInt(params)||1));else if(cmd==="B")cy=Math.min(height-1,cy+(parseInt(params)||1));else if(cmd==="C")cx=Math.min(width-1,cx+(parseInt(params)||1));else if(cmd==="D")cx=Math.max(0,cx-(parseInt(params)||1));else if(cmd==="G")cx=Math.max(0,(parseInt(params)||1)-1);else if(cmd==="J"){if(params==="2")for(let y=0;y<height;y++)for(let x=0;x<width;x++)screen[y][x]=createDefaultStyledCell()}else if(cmd==="m")applySgrParams(params,sgr)}else if(ansi[i+1]==="]"){i+=2;let oscPayload="";while(i<ansi.length){if(ansi[i]==="\x1B"&&ansi[i+1]==="\\"){i+=2;break}if(ansi[i]==="\x07"){i++;break}oscPayload+=ansi[i],i++}if(oscPayload.startsWith("66;")){let semiIdx=oscPayload.indexOf(";",3);if(semiIdx!==-1){let text=oscPayload.slice(semiIdx+1),widthParam=oscPayload.slice(3,semiIdx),declaredWidth=widthParam.startsWith("w=")?parseInt(widthParam.slice(2))||1:1;if(cy<height&&cx<width){let cell=screen[cy][cx];if(cell.char=text,cell.fg=sgr.fg,cell.bg=sgr.bg,cell.bold=sgr.bold,cell.dim=sgr.dim,cell.italic=sgr.italic,cell.underline=sgr.underline,cell.blink=sgr.blink,cell.inverse=sgr.inverse,cell.hidden=sgr.hidden,cell.strikethrough=sgr.strikethrough,declaredWidth>1&&cx+1<width){let cont=screen[cy][cx+1];cont.char=" ",cont.fg=null,cont.bg=sgr.bg,cont.bold=!1,cont.dim=!1,cont.italic=!1,cont.underline=!1,cont.blink=!1,cont.inverse=!1,cont.hidden=!1,cont.strikethrough=!1}cx+=declaredWidth}}}}else if(ansi[i+1]===">"){i+=2;while(i<ansi.length&&ansi[i]!=="\x1B")i++}else i+=2;else if(ansi[i]==="\r")cx=0,i++;else if(ansi[i]===`
|
|
44
|
+
`)cy=Math.min(height-1,cy+1),i++;else{let cp=ansi.codePointAt(i),cpLen=cp>65535?2:1,grapheme=String.fromCodePoint(cp),j=i+cpLen,prevWasZwj=!1;while(j<ansi.length){let nextCp=ansi.codePointAt(j);if(!(prevWasZwj||nextCp>=768&&nextCp<=879||nextCp>=8400&&nextCp<=8447||nextCp>=65024&&nextCp<=65039||nextCp===65038||nextCp===65039||nextCp===8205||nextCp>=917760&&nextCp<=917999||nextCp>=127995&&nextCp<=127999||cp>=127462&&cp<=127487&&nextCp>=127462&&nextCp<=127487))break;prevWasZwj=nextCp===8205;let nextLen=nextCp>65535?2:1;grapheme+=String.fromCodePoint(nextCp),j+=nextLen}if(cy<height&&cx<width){let charWidth=outputGraphemeWidth(grapheme,ctx)||1,cell=screen[cy][cx];if(cell.char=grapheme,cell.fg=sgr.fg,cell.bg=sgr.bg,cell.bold=sgr.bold,cell.dim=sgr.dim,cell.italic=sgr.italic,cell.underline=sgr.underline,cell.blink=sgr.blink,cell.inverse=sgr.inverse,cell.hidden=sgr.hidden,cell.strikethrough=sgr.strikethrough,charWidth>1&&cx+1<width){let cont=screen[cy][cx+1];cont.char=" ",cont.fg=null,cont.bg=sgr.bg,cont.bold=!1,cont.dim=!1,cont.italic=!1,cont.underline=!1,cont.blink=!1,cont.inverse=!1,cont.hidden=!1,cont.strikethrough=!1}cx+=charWidth}i=j}return screen}function formatColor(c){if(c===null)return"default";if(typeof c==="number")return`${c}`;return`rgb(${c.r},${c.g},${c.b})`}function captureStrictFailureArtifacts(opts){try{let fs=__require("fs"),path=__require("path"),dir=`/tmp/silvery-strict-failure-${Date.now()}`;fs.mkdirSync(dir,{recursive:!0});let meta={source:opts.source,timestamp:new Date().toISOString(),frameCount:opts.frameCount,prevSize:opts.prev?{width:opts.prev.width,height:opts.prev.height}:null,nextSize:opts.next?{width:opts.next.width,height:opts.next.height}:null,incrOutputLength:opts.incrOutput?.length,freshOutputLength:opts.freshOutput?.length,testName:globalThis.__vitest_worker__?.current?.name};if(fs.writeFileSync(path.join(dir,"meta.json"),JSON.stringify(meta,null,2)),fs.writeFileSync(path.join(dir,"error.txt"),opts.errorMessage),opts.incrOutput)fs.writeFileSync(path.join(dir,"incremental.ansi"),opts.incrOutput);if(opts.freshOutput)fs.writeFileSync(path.join(dir,"fresh.ansi"),opts.freshOutput);if(opts.prev){let rows=[];for(let y=0;y<opts.prev.height;y++){let row="";for(let x=0;x<opts.prev.width;x++){let cell=opts.prev.getCell(x,y);row+=cell.char||" "}rows.push(row.trimEnd())}fs.writeFileSync(path.join(dir,"prev-buffer.txt"),rows.join(`
|
|
45
|
+
`))}if(opts.next){let rows=[];for(let y=0;y<opts.next.height;y++){let row="";for(let x=0;x<opts.next.width;x++){let cell=opts.next.getCell(x,y);row+=cell.char||" "}rows.push(row.trimEnd())}fs.writeFileSync(path.join(dir,"next-buffer.txt"),rows.join(`
|
|
46
|
+
`))}if(opts.prev&&opts.ctx){let freshPrev=bufferToAnsi(opts.prev,opts.ctx);fs.writeFileSync(path.join(dir,"fresh-prev.ansi"),freshPrev)}return dir}catch{return"(artifact capture failed)"}}function verifyOutputEquivalence(prev,next,incrOutput,ctx=defaultContext){let{mode}=ctx,w=Math.max(prev.width,next.width),vtHeight=Math.max(prev.height,next.height),compareHeight=next.height;if(process.env.SILVERY_DEBUG_OUTPUT)console.error(`[VERIFY] prev=${prev.width}x${prev.height} next=${next.width}x${next.height} vtSize=${w}x${vtHeight}`);let freshPrev=bufferToAnsi(prev,ctx);if(process.env.SILVERY_DEBUG_OUTPUT){console.error(`[VERIFY] freshPrev len=${freshPrev.length} incrOutput len=${incrOutput.length}`);let escaped=incrOutput.replace(/\x1b/g,"\\e").replace(/\r/g,"\\r").replace(/\n/g,"\\n");console.error(`[VERIFY] incrOutput: ${escaped.slice(0,500)}`)}let screenIncr=replayAnsiWithStyles(w,vtHeight,freshPrev+incrOutput,ctx),freshNext=bufferToAnsi(next,ctx),screenFresh=replayAnsiWithStyles(w,vtHeight,freshNext,ctx),_dumpRowWideCells=(buf,row)=>{let parts=[];for(let cx=0;cx<buf.width;cx++){let c=buf.getCell(cx,row),cp=c.char?[...c.char].map((ch)=>"U+"+(ch.codePointAt(0)??0).toString(16).toUpperCase().padStart(4,"0")).join(","):"empty";if(c.wide)parts.push(`W@${cx}:${cp}(gw=${outputGraphemeWidth(c.char,ctx)})`);if(c.continuation)parts.push(`C@${cx}`);let charToWrite=c.char||" ",vtWidth=outputGraphemeWidth(charToWrite,ctx),bufWidth=c.wide?2:1;if(!c.continuation&&vtWidth!==bufWidth)parts.push(`MISMATCH@${cx}:${cp}(vtW=${vtWidth},bufW=${bufWidth},tse=${outputTextSizingEnabled(ctx)})`)}return parts.join(" ")};for(let y=0;y<vtHeight;y++)for(let x=0;x<w;x++){let incr=screenIncr[y][x],fresh=screenFresh[y][x];if(incr.char!==fresh.char){let incrRow=screenIncr[y].map((c)=>c.char).join(""),freshRow=screenFresh[y].map((c)=>c.char).join(""),prevRow=screenIncr[y].map((_2,cx)=>{return prev.getCell(cx,y).char}).join(""),nextCell=next.getCell(x,y),prevCell=prev.getCell(x,y),contextStart=Math.max(0,x-5),contextEnd=Math.min(w,x+10),colDetails=[];for(let cx=contextStart;cx<contextEnd;cx++){let ic=screenIncr[y][cx],fc=screenFresh[y][cx],pc=prev.getCell(cx,y),nc=next.getCell(cx,y),marker=cx===x?" <<<":ic.char!==fc.char?" !!!":"";colDetails.push(` col ${cx}: prev='${pc.char}'(w=${pc.wide},c=${pc.continuation}) next='${nc.char}' incr='${ic.char}' fresh='${fc.char}' wide=${nc.wide} cont=${nc.continuation}${marker}`)}let msg=`STRICT_OUTPUT char mismatch at (${x},${y}): incremental='${incr.char}' fresh='${fresh.char}'
|
|
47
|
+
prev buffer cell: char='${prevCell.char}' bg=${prevCell.bg} wide=${prevCell.wide} cont=${prevCell.continuation}
|
|
48
|
+
next buffer cell: char='${nextCell.char}' bg=${nextCell.bg} wide=${nextCell.wide} cont=${nextCell.continuation}
|
|
49
|
+
incr row: ${incrRow}
|
|
50
|
+
fresh row: ${freshRow}
|
|
51
|
+
prev row: ${prevRow}
|
|
52
|
+
Wide/cont cells on row ${y} (next buffer): ${_dumpRowWideCells(next,y)}
|
|
53
|
+
Wide/cont cells on row ${y} (prev buffer): ${_dumpRowWideCells(prev,y)}
|
|
54
|
+
Column detail around mismatch:
|
|
55
|
+
${colDetails.join(`
|
|
56
|
+
`)}`,artifactDir=captureStrictFailureArtifacts({source:"STRICT_OUTPUT",errorMessage:msg,prev,next,incrOutput,freshOutput:freshNext,ctx}),fullMsg=`${msg}
|
|
57
|
+
Artifacts: ${artifactDir}`;throw console.error(fullMsg),new IncrementalRenderMismatchError(fullMsg)}let diffs=[];if(!sgrColorEquals(incr.fg,fresh.fg))diffs.push(`fg: ${formatColor(incr.fg)} vs ${formatColor(fresh.fg)}`);if(!sgrColorEquals(incr.bg,fresh.bg))diffs.push(`bg: ${formatColor(incr.bg)} vs ${formatColor(fresh.bg)}`);if(incr.bold!==fresh.bold)diffs.push(`bold: ${incr.bold} vs ${fresh.bold}`);if(incr.dim!==fresh.dim)diffs.push(`dim: ${incr.dim} vs ${fresh.dim}`);if(incr.italic!==fresh.italic)diffs.push(`italic: ${incr.italic} vs ${fresh.italic}`);if(incr.underline!==fresh.underline)diffs.push(`underline: ${incr.underline} vs ${fresh.underline}`);if(incr.inverse!==fresh.inverse)diffs.push(`inverse: ${incr.inverse} vs ${fresh.inverse}`);if(incr.strikethrough!==fresh.strikethrough)diffs.push(`strikethrough: ${incr.strikethrough} vs ${fresh.strikethrough}`);if(diffs.length>0){let msg=`STRICT_OUTPUT style mismatch at (${x},${y}) char='${incr.char}': `+diffs.join(", ")+`
|
|
58
|
+
incremental: fg=${formatColor(incr.fg)} bg=${formatColor(incr.bg)} bold=${incr.bold} dim=${incr.dim}
|
|
59
|
+
fresh: fg=${formatColor(fresh.fg)} bg=${formatColor(fresh.bg)} bold=${fresh.bold} dim=${fresh.dim}`,artifactDir2=captureStrictFailureArtifacts({source:"STRICT_OUTPUT",errorMessage:msg,prev,next,incrOutput,freshOutput:freshNext,ctx});throw new IncrementalRenderMismatchError(`${msg}
|
|
60
|
+
Artifacts: ${artifactDir2}`)}}}function verifyAccumulatedOutput(currentBuffer,ctx=defaultContext,accState=defaultAccState){let{mode}=ctx,w=accState.accumulateWidth,h=accState.accumulateHeight,screenAccumulated=replayAnsiWithStyles(w,h,accState.accumulatedAnsi,ctx),freshOutput=bufferToAnsi(currentBuffer,ctx),screenFresh=replayAnsiWithStyles(w,h,freshOutput,ctx);for(let y=0;y<h;y++)for(let x=0;x<w;x++){let accum=screenAccumulated[y][x],fresh=screenFresh[y][x];if(accum.char!==fresh.char){let msg=`SILVERY_STRICT_ACCUMULATE char mismatch at (${x},${y}) after ${accState.accumulateFrameCount} frames: accumulated='${accum.char}' fresh='${fresh.char}'`,dir=captureStrictFailureArtifacts({source:"STRICT_ACCUMULATE",errorMessage:msg,next:currentBuffer,incrOutput:accState.accumulatedAnsi,freshOutput,ctx,frameCount:accState.accumulateFrameCount});throw console.error(`${msg}
|
|
61
|
+
Artifacts: ${dir}`),new IncrementalRenderMismatchError(`${msg}
|
|
62
|
+
Artifacts: ${dir}`)}let diffs=[];if(!sgrColorEquals(accum.fg,fresh.fg))diffs.push(`fg: ${formatColor(accum.fg)} vs ${formatColor(fresh.fg)}`);if(!sgrColorEquals(accum.bg,fresh.bg))diffs.push(`bg: ${formatColor(accum.bg)} vs ${formatColor(fresh.bg)}`);if(accum.bold!==fresh.bold)diffs.push(`bold: ${accum.bold} vs ${fresh.bold}`);if(accum.dim!==fresh.dim)diffs.push(`dim: ${accum.dim} vs ${fresh.dim}`);if(accum.italic!==fresh.italic)diffs.push(`italic: ${accum.italic} vs ${fresh.italic}`);if(accum.underline!==fresh.underline)diffs.push(`underline: ${accum.underline} vs ${fresh.underline}`);if(accum.inverse!==fresh.inverse)diffs.push(`inverse: ${accum.inverse} vs ${fresh.inverse}`);if(accum.strikethrough!==fresh.strikethrough)diffs.push(`strikethrough: ${accum.strikethrough} vs ${fresh.strikethrough}`);if(diffs.length>0){let msg=`SILVERY_STRICT_ACCUMULATE style mismatch at (${x},${y}) char='${accum.char}' after ${accState.accumulateFrameCount} frames: `+diffs.join(", "),dir2=captureStrictFailureArtifacts({source:"STRICT_ACCUMULATE",errorMessage:msg,next:currentBuffer,freshOutput,ctx,frameCount:accState.accumulateFrameCount});throw console.error(`${msg}
|
|
63
|
+
Artifacts: ${dir2}`),new IncrementalRenderMismatchError(`${msg}
|
|
64
|
+
Artifacts: ${dir2}`)}}}function loadTermless(){if(!_createTerminal||!_createXtermBackend)_createTerminal=__require("@termless/core").createTerminal,_createXtermBackend=__require("@termless/xtermjs").createXtermBackend;return{createTerminal:_createTerminal,createXtermBackend:_createXtermBackend}}function loadGhosttyBackend(){if(!_createGhosttyBackend){let mod=__require("@termless/ghostty");if(_createGhosttyBackend=mod.createGhosttyBackend,!_ghosttyInitPromise)_ghosttyInitPromise=mod.initGhostty()}return _createGhosttyBackend}function initTerminalVerifyState(state,width,height,initialAnsi){if(state.terminal)state.terminal.close();if(state.ghosttyTerminal)state.ghosttyTerminal.close();if(state.backends.includes("xterm")){let{createTerminal,createXtermBackend}=loadTermless();state.terminal=createTerminal({backend:createXtermBackend(),cols:width,rows:height}),state.terminal.feed(initialAnsi)}else state.terminal=null;if(state.backends.includes("ghostty")){let{createTerminal}=loadTermless(),createGhostty=loadGhosttyBackend();state.ghosttyTerminal=createTerminal({backend:createGhostty(),cols:width,rows:height}),state.ghosttyTerminal.feed(initialAnsi)}else state.ghosttyTerminal=null;state.width=width,state.height=height,state.frameCount=0}function verifyTerminalEquivalence(state,incrOutput,nextBuffer,ctx){if(nextBuffer.width!==state.width||nextBuffer.height!==state.height){let freshAnsi2=bufferToAnsi(nextBuffer,ctx);initTerminalVerifyState(state,nextBuffer.width,nextBuffer.height,freshAnsi2),state.frameCount++;return}let freshAnsi=bufferToAnsi(nextBuffer,ctx);if(state.terminal){state.terminal.feed(incrOutput);let{createTerminal,createXtermBackend}=loadTermless(),freshTerm=createTerminal({backend:createXtermBackend(),cols:state.width,rows:state.height});freshTerm.feed(freshAnsi);try{compareTerminals(state.terminal,freshTerm,state,"xterm")}catch(e){if(e instanceof IncrementalRenderMismatchError){let dir=captureStrictFailureArtifacts({source:"STRICT_TERMINAL[xterm]",errorMessage:e.message,next:nextBuffer,incrOutput,freshOutput:freshAnsi,ctx,frameCount:state.frameCount});throw new IncrementalRenderMismatchError(`${e.message}
|
|
65
|
+
Artifacts: ${dir}`)}throw e}finally{freshTerm.close()}}if(state.ghosttyTerminal){state.ghosttyTerminal.feed(incrOutput);let{createTerminal}=loadTermless(),createGhostty=loadGhosttyBackend(),freshTerm=createTerminal({backend:createGhostty(),cols:state.width,rows:state.height});freshTerm.feed(freshAnsi);try{compareTerminals(state.ghosttyTerminal,freshTerm,state,"ghostty")}catch(e){if(e instanceof IncrementalRenderMismatchError){let dir=captureStrictFailureArtifacts({source:"STRICT_TERMINAL[ghostty]",errorMessage:e.message,next:nextBuffer,incrOutput,freshOutput:freshAnsi,ctx,frameCount:state.frameCount});throw new IncrementalRenderMismatchError(`${e.message}
|
|
66
|
+
Artifacts: ${dir}`)}throw e}finally{freshTerm.close()}}}function compareTerminals(incrTerm,freshTerm,state,backendName){let{width:w,height:h}=state,prefix=`SILVERY_STRICT_TERMINAL[${backendName}]`;for(let y=0;y<h;y++)for(let x=0;x<w;x++){let incrCell=incrTerm.getCell(y,x),freshCell=freshTerm.getCell(y,x),incrChar=incrCell.char||" ",freshChar=freshCell.char||" ";if(incrChar!==freshChar){let incrRow=Array.from({length:w},(_2,cx)=>incrTerm.getCell(y,cx).char||" ").join(""),freshRow=Array.from({length:w},(_2,cx)=>freshTerm.getCell(y,cx).char||" ").join(""),msg=`${prefix} char mismatch at (${x},${y}) frame ${state.frameCount}: incremental='${incrChar}' fresh='${freshChar}'
|
|
67
|
+
incr row: ${incrRow.trimEnd()}
|
|
68
|
+
fresh row: ${freshRow.trimEnd()}`;throw console.error(msg),new IncrementalRenderMismatchError(msg)}if(!rgbEquals(incrCell.fg,freshCell.fg)){let msg=`${prefix} fg color mismatch at (${x},${y}) char='${incrChar}' frame ${state.frameCount}: incremental=${formatRgb(incrCell.fg)} fresh=${formatRgb(freshCell.fg)}`;throw console.error(msg),new IncrementalRenderMismatchError(msg)}if(!rgbEquals(incrCell.bg,freshCell.bg)){let msg=`${prefix} bg color mismatch at (${x},${y}) char='${incrChar}' frame ${state.frameCount}: incremental=${formatRgb(incrCell.bg)} fresh=${formatRgb(freshCell.bg)}`;throw console.error(msg),new IncrementalRenderMismatchError(msg)}let attrDiffs=[];if(incrCell.bold!==freshCell.bold)attrDiffs.push(`bold: ${incrCell.bold} vs ${freshCell.bold}`);if(incrCell.dim!==freshCell.dim)attrDiffs.push(`dim: ${incrCell.dim} vs ${freshCell.dim}`);if(incrCell.italic!==freshCell.italic)attrDiffs.push(`italic: ${incrCell.italic} vs ${freshCell.italic}`);if(incrCell.inverse!==freshCell.inverse)attrDiffs.push(`inverse: ${incrCell.inverse} vs ${freshCell.inverse}`);if(incrCell.strikethrough!==freshCell.strikethrough)attrDiffs.push(`strikethrough: ${incrCell.strikethrough} vs ${freshCell.strikethrough}`);if(attrDiffs.length>0){let msg=`${prefix} attr mismatch at (${x},${y}) char='${incrChar}' frame ${state.frameCount}: `+attrDiffs.join(", ");throw console.error(msg),new IncrementalRenderMismatchError(msg)}}}function rgbEquals(a,b){if(a===b)return!0;if(a===null||b===null)return!1;return a.r===b.r&&a.g===b.g&&a.b===b.b}function formatRgb(c){if(c===null)return"null";return`rgb(${c.r},${c.g},${c.b})`}function sgrColorEquals(a,b){if(a===b)return!0;if(a===null||b===null)return!1;if(typeof a==="number"||typeof b==="number")return a===b;return a.r===b.r&&a.g===b.g&&a.b===b.b}var DEBUG_OUTPUT,FULL_RENDER,DEBUG_CAPTURE,CAPTURE_RAW,_debugFrameCount=0,_captureRawFrameCount=0,defaultContext,defaultAccState,defaultTerminalVerifyState,reusableCellStyle,wideCharLookupCell,_createTerminal=null,_createXtermBackend=null,_createGhosttyBackend=null,_ghosttyInitPromise=null;var init_output_phase=__esm(()=>{init_buffer();init_errors();init_text_sizing();init_unicode();init_diff_buffers();DEBUG_OUTPUT=!!process.env.SILVERY_DEBUG_OUTPUT,FULL_RENDER=!!process.env.SILVERY_FULL_RENDER,DEBUG_CAPTURE=!!process.env.SILVERY_DEBUG_CAPTURE,CAPTURE_RAW=!!process.env.SILVERY_CAPTURE_RAW,defaultContext={caps:{underlineStyles:!0,underlineColor:!0,colorLevel:"truecolor"},measurer:null,sgrCache:new Map,transitionCache:new Map,mode:"fullscreen",termRows:void 0};defaultAccState={accumulatedAnsi:"",accumulateWidth:0,accumulateHeight:0,accumulateFrameCount:0};defaultTerminalVerifyState=createTerminalVerifyState();reusableCellStyle={fg:null,bg:null,underlineColor:null,attrs:{}},wideCharLookupCell=createMutableCell()});import{createLogger as createLogger3}from"loggily";function executeRender(root,width,height,prevBuffer,options="fullscreen",config){let ctx=config?.measurer?{measurer:config.measurer}:void 0;if(config?.measurer)return runWithMeasurer(config.measurer,()=>{return executeRenderCore(root,width,height,prevBuffer,options,config,ctx)});return executeRenderCore(root,width,height,prevBuffer,options,config,ctx)}function executeRenderCore(root,width,height,prevBuffer,options="fullscreen",config,ctx){let __stack8=[];try{let opts=typeof options==="string"?{mode:options}:options;let{mode="fullscreen",skipLayoutNotifications=!1,skipScrollStateUpdates=!1,scrollbackOffset=0,termRows,cursorPos}=opts;if(process?.env?.SILVERY_DEV&&prevBuffer===null&&root.prevLayout!==null&&!skipLayoutNotifications)console.warn("[silvery] executeRender called with prevBuffer=null on frame 2+ — "+"incremental content rendering is disabled (full render every frame). Track the returned buffer and pass it as prevBuffer on subsequent renders.");let start=performance.now();const render=__using(__stack8,baseLog.span("pipeline",{width,height,mode}),0);clearBgConflictWarnings();let tMeasure;{let __stack=[];try{const _measure=__using(__stack,render.span("measure"),0);let t1=performance.now();measurePhase(root,ctx);tMeasure=performance.now()-t1;log2.debug?.(`measure: ${tMeasure.toFixed(2)}ms`)}catch(_catch){var _err=_catch,_hasErr=1}finally{__callDispose(__stack,_err,_hasErr)}}let tLayout;{let __stack2=[];try{const _layout=__using(__stack2,render.span("layout"),0);let t2=performance.now();layoutPhase(root,width,height);tLayout=performance.now()-t2;log2.debug?.(`layout: ${tLayout.toFixed(2)}ms`)}catch(_catch2){var _err2=_catch2,_hasErr2=1}finally{__callDispose(__stack2,_err2,_hasErr2)}}let tScroll;{let __stack3=[];try{const _scroll=__using(__stack3,render.span("scroll"),0);let t2s=performance.now();scrollPhase(root,{skipStateUpdates:skipScrollStateUpdates});tScroll=performance.now()-t2s}catch(_catch3){var _err3=_catch3,_hasErr3=1}finally{__callDispose(__stack3,_err3,_hasErr3)}}stickyPhase(root);let tScreenRect;{let __stack4=[];try{const _screenRect=__using(__stack4,render.span("screenRect"),0);let t2r=performance.now();screenRectPhase(root);tScreenRect=performance.now()-t2r}catch(_catch4){var _err4=_catch4,_hasErr4=1}finally{__callDispose(__stack4,_err4,_hasErr4)}}let tNotify=0;if(!skipLayoutNotifications){let __stack5=[];try{const _notify=__using(__stack5,render.span("notify"),0);let t2n=performance.now();notifyLayoutSubscribers(root);tNotify=performance.now()-t2n}catch(_catch5){var _err5=_catch5,_hasErr5=1}finally{__callDispose(__stack5,_err5,_hasErr5)}}let buffer;let tContent;{let __stack6=[];try{const _content=__using(__stack6,render.span("content"),0);let t3=performance.now();buffer=contentPhase(root,prevBuffer,ctx);tContent=performance.now()-t3;log2.debug?.(`content: ${tContent.toFixed(2)}ms`)}catch(_catch6){var _err6=_catch6,_hasErr6=1}finally{__callDispose(__stack6,_err6,_hasErr6)}}let output;let tOutput;{let __stack7=[];try{const outputSpan=__using(__stack7,render.span("output"),0);let t4=performance.now();let outputFn=config?.outputPhaseFn??outputPhase;try{output=outputFn(prevBuffer,buffer,mode,scrollbackOffset,termRows,cursorPos)}catch(e){if(e instanceof Error)e.__silvery_buffer=buffer;throw e}tOutput=performance.now()-t4;outputSpan.spanData.bytes=output.length;log2.debug?.(`output: ${tOutput.toFixed(2)}ms (${output.length} bytes)`)}catch(_catch7){var _err7=_catch7,_hasErr7=1}finally{__callDispose(__stack7,_err7,_hasErr7)}}let total=performance.now()-start;log2.debug?.(`total pipeline: ${total.toFixed(2)}ms`);let pipelineTimings={measure:tMeasure,layout:tLayout,scroll:tScroll,screenRect:tScreenRect,notify:tNotify,content:tContent,output:tOutput,total,incremental:prevBuffer!==null};globalThis.__silvery_last_pipeline=pipelineTimings;globalThis.__silvery_render_count=(globalThis.__silvery_render_count??0)+1;log2.debug?.(`pipeline: measure=${tMeasure.toFixed(1)}ms layout=${tLayout.toFixed(1)}ms content=${tContent.toFixed(1)}ms output=${tOutput.toFixed(1)}ms total=${total.toFixed(1)}ms`);return{output,buffer}}catch(_catch8){var _err8=_catch8,_hasErr8=1}finally{__callDispose(__stack8,_err8,_hasErr8)}}var log2,baseLog;var init_pipeline=__esm(()=>{init_unicode();init_measure_phase();init_layout_phase();init_content_phase();init_content_phase_adapter();init_output_phase();init_content_phase_adapter();init_content_phase();init_layout_phase();init_measure_phase();init_output_phase();log2=createLogger3("silvery:pipeline"),baseLog=createLogger3("@silvery/ag-react")});var init_pipeline2=__esm(()=>{init_pipeline()});function layoutPropsChanged(oldProps,newProps){for(let prop of LAYOUT_PROPS)if(oldProps[prop]!==newProps[prop])return!0;return!1}function contentPropsChanged(oldProps,newProps){let oldChildren=oldProps.children,newChildren=newProps.children;if(oldChildren!==newChildren){if(typeof oldChildren==="string"||typeof oldChildren==="number"||(typeof newChildren==="string"||typeof newChildren==="number"))return"text"}let contentProps=["wrap","internal_transform"];for(let prop of contentProps)if(oldProps[prop]!==newProps[prop])return"text";let styleProps=["color","backgroundColor","bold","dim","dimColor","italic","underline","underlineStyle","underlineColor","strikethrough","inverse","borderColor","borderStyle","outlineStyle","outlineColor","outlineDimColor","outlineTop","outlineBottom","outlineLeft","outlineRight","theme"];for(let prop of styleProps)if(oldProps[prop]!==newProps[prop])return"style";return!1}function propsEqual(a,b){let keysA=Object.keys(a),keysB=Object.keys(b);if(keysA.length!==keysB.length)return!1;for(let key of keysA)if(a[key]!==b[key])return!1;return!0}var LAYOUT_PROPS;var init_helpers=__esm(()=>{LAYOUT_PROPS=new Set(["width","height","minWidth","minHeight","maxWidth","maxHeight","flexDirection","flexWrap","justifyContent","alignItems","alignContent","alignSelf","flexGrow","flexShrink","flexBasis","padding","paddingX","paddingY","paddingTop","paddingBottom","paddingLeft","paddingRight","margin","marginX","marginY","marginTop","marginBottom","marginLeft","marginRight","gap","columnGap","rowGap","borderStyle","borderTop","borderBottom","borderLeft","borderRight","display","position","top","left","bottom","right","aspectRatio","overflow","overflowX","overflowY"])});import{createLogger as createLogger4}from"loggily";function createNode(type,props,measurer){let layoutNode=getLayoutEngine().createNode(),node={type,props,children:[],parent:null,layoutNode,contentRect:null,screenRect:null,renderRect:null,prevLayout:null,prevScreenRect:null,prevRenderRect:null,layoutChangedThisFrame:!1,layoutDirty:!0,contentDirty:!0,stylePropsDirty:!0,bgDirty:!0,subtreeDirty:!0,childrenDirty:!0,layoutSubscribers:new Set};if(type==="silvery-box")applyBoxProps(layoutNode,props);if(type==="silvery-text"){let cachedText=null,measureCache=new Map;layoutNode.setMeasureFunc((width,widthMode,height,heightMode)=>{measureStats.calls++,measureLog.debug?.(`measure "${collectPlainTextSkipHidden(node).slice(0,40)}" width=${width} widthMode=${widthMode} height=${height} heightMode=${heightMode}`);let cacheKey=`${width}|${widthMode}|${height}|${heightMode}`,cached=measureCache.get(cacheKey);if(cached&&cachedText!==null&&!node.contentDirty)return measureStats.cacheHits++,cached;let text;if(cachedText!==null&&!node.contentDirty)text=cachedText;else{measureStats.textCollects++;let newText=collectPlainTextSkipHidden(node);if(newText!==cachedText)measureCache.clear();text=newText,cachedText=text,node.contentDirty=!1}if(!text)return{width:0,height:0};let cachedAfterCollect=measureCache.get(cacheKey);if(cachedAfterCollect)return measureStats.cacheHits++,cachedAfterCollect;let lines=text.split(`
|
|
69
|
+
`),maxWidth=widthMode==="undefined"||Number.isNaN(width)?Number.POSITIVE_INFINITY:width,{wrap}=node.props,isTruncate=wrap==="truncate"||wrap==="truncate-start"||wrap==="truncate-middle"||wrap==="truncate-end"||wrap==="clip"||wrap===!1,totalHeight=0,actualWidth=0,dw=measurer?measurer.displayWidth.bind(measurer):displayWidth,wt=measurer?measurer.wrapText.bind(measurer):wrapText;for(let line of lines){measureStats.displayWidthCalls++;let lineWidth=dw(line);if(isTruncate||lineWidth<=maxWidth)totalHeight+=1,actualWidth=Math.max(actualWidth,isTruncate?Math.min(lineWidth,maxWidth):lineWidth);else{let wrapped=wt(line,maxWidth,!1,!0);totalHeight+=wrapped.length;for(let wl of wrapped)actualWidth=Math.max(actualWidth,dw(wl))}}let resultHeight=Math.max(1,totalHeight);if(heightMode==="exactly"&&Number.isFinite(height))resultHeight=height;else if(heightMode==="at-most"&&Number.isFinite(height))resultHeight=Math.min(resultHeight,height);let result={width:Math.min(actualWidth,maxWidth),height:resultHeight};return measureCache.set(cacheKey,result),result})}return node}function createRootNode(){let node=createNode("silvery-root",{}),c=getConstants();return node.layoutNode.setFlexDirection(c.FLEX_DIRECTION_COLUMN),node}function createVirtualTextNode(props){return{type:"silvery-text",props,children:[],parent:null,layoutNode:null,contentRect:null,screenRect:null,renderRect:null,prevLayout:null,prevScreenRect:null,prevRenderRect:null,layoutChangedThisFrame:!1,layoutDirty:!1,contentDirty:!0,stylePropsDirty:!0,bgDirty:!0,subtreeDirty:!0,childrenDirty:!1,layoutSubscribers:new Set,isRawText:!1,inlineRects:null}}function applyBoxProps(layoutNode,props,oldProps){let c=getConstants(),wasRemoved=(prop)=>oldProps?.[prop]!==void 0&&props[prop]===void 0;if(props.width!==void 0){if(typeof props.width==="string"&&props.width.endsWith("%"))layoutNode.setWidthPercent(Number.parseFloat(props.width));else if(typeof props.width==="number")layoutNode.setWidth(props.width);else if(props.width==="auto")layoutNode.setWidthAuto()}else if(wasRemoved("width"))layoutNode.setWidthAuto();if(props.height!==void 0){if(typeof props.height==="string"&&props.height.endsWith("%"))layoutNode.setHeightPercent(Number.parseFloat(props.height));else if(typeof props.height==="number")layoutNode.setHeight(props.height);else if(props.height==="auto")layoutNode.setHeightAuto()}else if(wasRemoved("height"))layoutNode.setHeightAuto();if(props.minWidth!==void 0){if(typeof props.minWidth==="string"&&props.minWidth.endsWith("%"))layoutNode.setMinWidthPercent(Number.parseFloat(props.minWidth));else if(typeof props.minWidth==="number")layoutNode.setMinWidth(props.minWidth)}else if(wasRemoved("minWidth"))layoutNode.setMinWidth(0);if(props.minHeight!==void 0){if(typeof props.minHeight==="string"&&props.minHeight.endsWith("%"))layoutNode.setMinHeightPercent(Number.parseFloat(props.minHeight));else if(typeof props.minHeight==="number")layoutNode.setMinHeight(props.minHeight)}else if(wasRemoved("minHeight"))layoutNode.setMinHeight(0);if(props.maxWidth!==void 0){if(typeof props.maxWidth==="string"&&props.maxWidth.endsWith("%"))layoutNode.setMaxWidthPercent(Number.parseFloat(props.maxWidth));else if(typeof props.maxWidth==="number")layoutNode.setMaxWidth(props.maxWidth)}else if(wasRemoved("maxWidth"))layoutNode.setMaxWidth(Number.POSITIVE_INFINITY);if(props.maxHeight!==void 0){if(typeof props.maxHeight==="string"&&props.maxHeight.endsWith("%"))layoutNode.setMaxHeightPercent(Number.parseFloat(props.maxHeight));else if(typeof props.maxHeight==="number")layoutNode.setMaxHeight(props.maxHeight)}else if(wasRemoved("maxHeight"))layoutNode.setMaxHeight(Number.POSITIVE_INFINITY);if(props.flexGrow!==void 0)layoutNode.setFlexGrow(props.flexGrow);else if(wasRemoved("flexGrow"))layoutNode.setFlexGrow(0);if(props.flexShrink!==void 0)layoutNode.setFlexShrink(props.flexShrink);else if(wasRemoved("flexShrink"))layoutNode.setFlexShrink(1);if(props.flexBasis!==void 0){if(typeof props.flexBasis==="string"&&props.flexBasis.endsWith("%"))layoutNode.setFlexBasisPercent(Number.parseFloat(props.flexBasis));else if(props.flexBasis==="auto")layoutNode.setFlexBasisAuto();else if(typeof props.flexBasis==="number")layoutNode.setFlexBasis(props.flexBasis)}else if(wasRemoved("flexBasis"))layoutNode.setFlexBasisAuto();if(props.flexDirection!==void 0){let directionMap={row:c.FLEX_DIRECTION_ROW,column:c.FLEX_DIRECTION_COLUMN,"row-reverse":c.FLEX_DIRECTION_ROW_REVERSE,"column-reverse":c.FLEX_DIRECTION_COLUMN_REVERSE};layoutNode.setFlexDirection(directionMap[props.flexDirection]??c.FLEX_DIRECTION_ROW)}else if(wasRemoved("flexDirection"))layoutNode.setFlexDirection(c.FLEX_DIRECTION_ROW);if(props.flexWrap!==void 0){let wrapMap={nowrap:c.WRAP_NO_WRAP,wrap:c.WRAP_WRAP,"wrap-reverse":c.WRAP_WRAP_REVERSE};layoutNode.setFlexWrap(wrapMap[props.flexWrap]??c.WRAP_NO_WRAP)}else if(wasRemoved("flexWrap"))layoutNode.setFlexWrap(c.WRAP_NO_WRAP);if(props.alignItems!==void 0)layoutNode.setAlignItems(alignToConstant(props.alignItems));else if(wasRemoved("alignItems"))layoutNode.setAlignItems(c.ALIGN_STRETCH);if(props.alignSelf!==void 0)if(props.alignSelf==="auto")layoutNode.setAlignSelf(c.ALIGN_AUTO);else layoutNode.setAlignSelf(alignToConstant(props.alignSelf));else if(wasRemoved("alignSelf"))layoutNode.setAlignSelf(c.ALIGN_AUTO);if(props.alignContent!==void 0)layoutNode.setAlignContent(alignToConstant(props.alignContent));else if(wasRemoved("alignContent"))layoutNode.setAlignContent(c.ALIGN_FLEX_START);if(props.justifyContent!==void 0)layoutNode.setJustifyContent(justifyToConstant(props.justifyContent));else if(wasRemoved("justifyContent"))layoutNode.setJustifyContent(c.JUSTIFY_FLEX_START);if(applySpacing(layoutNode,"padding",props),applySpacing(layoutNode,"margin",props),props.gap!==void 0)layoutNode.setGap(c.GUTTER_ALL,props.gap);else if(wasRemoved("gap"))layoutNode.setGap(c.GUTTER_ALL,0);if(props.columnGap!==void 0)layoutNode.setGap(c.GUTTER_COLUMN,props.columnGap);else if(wasRemoved("columnGap"))layoutNode.setGap(c.GUTTER_COLUMN,0);if(props.rowGap!==void 0)layoutNode.setGap(c.GUTTER_ROW,props.rowGap);else if(wasRemoved("rowGap"))layoutNode.setGap(c.GUTTER_ROW,0);if(props.display!==void 0)layoutNode.setDisplay(props.display==="none"?c.DISPLAY_NONE:c.DISPLAY_FLEX);else if(wasRemoved("display"))layoutNode.setDisplay(c.DISPLAY_FLEX);if(props.position!==void 0)if(props.position==="absolute")layoutNode.setPositionType(c.POSITION_TYPE_ABSOLUTE);else if(props.position==="static")layoutNode.setPositionType(c.POSITION_TYPE_STATIC);else layoutNode.setPositionType(c.POSITION_TYPE_RELATIVE);else if(wasRemoved("position"))layoutNode.setPositionType(c.POSITION_TYPE_RELATIVE);if(props.position!=="static")applyPositionOffset(layoutNode,c.EDGE_TOP,props.top),applyPositionOffset(layoutNode,c.EDGE_LEFT,props.left),applyPositionOffset(layoutNode,c.EDGE_BOTTOM,props.bottom),applyPositionOffset(layoutNode,c.EDGE_RIGHT,props.right);if(props.aspectRatio!==void 0)layoutNode.setAspectRatio(props.aspectRatio);else if(wasRemoved("aspectRatio"))layoutNode.setAspectRatio(NaN);let effectiveOverflow=props.overflow??(props.overflowX==="hidden"||props.overflowY==="hidden"?"hidden":void 0);if(effectiveOverflow!==void 0)if(effectiveOverflow==="hidden")layoutNode.setOverflow(c.OVERFLOW_HIDDEN);else if(effectiveOverflow==="scroll")layoutNode.setOverflow(c.OVERFLOW_SCROLL);else layoutNode.setOverflow(c.OVERFLOW_VISIBLE);else if(wasRemoved("overflow")||wasRemoved("overflowX")||wasRemoved("overflowY"))layoutNode.setOverflow(c.OVERFLOW_VISIBLE);if(props.borderStyle){if(props.borderTop!==!1)layoutNode.setBorder(c.EDGE_TOP,1);else layoutNode.setBorder(c.EDGE_TOP,0);if(props.borderBottom!==!1)layoutNode.setBorder(c.EDGE_BOTTOM,1);else layoutNode.setBorder(c.EDGE_BOTTOM,0);if(props.borderLeft!==!1)layoutNode.setBorder(c.EDGE_LEFT,1);else layoutNode.setBorder(c.EDGE_LEFT,0);if(props.borderRight!==!1)layoutNode.setBorder(c.EDGE_RIGHT,1);else layoutNode.setBorder(c.EDGE_RIGHT,0)}else layoutNode.setBorder(c.EDGE_TOP,0),layoutNode.setBorder(c.EDGE_BOTTOM,0),layoutNode.setBorder(c.EDGE_LEFT,0),layoutNode.setBorder(c.EDGE_RIGHT,0)}function applySpacing(layoutNode,type,props){let c=getConstants(),set=type==="padding"?layoutNode.setPadding.bind(layoutNode):layoutNode.setMargin.bind(layoutNode),all=props[type],x=props[`${type}X`],yy=props[`${type}Y`],top=props[`${type}Top`],bottom=props[`${type}Bottom`],left=props[`${type}Left`],right=props[`${type}Right`];set(c.EDGE_TOP,top??yy??all??0),set(c.EDGE_BOTTOM,bottom??yy??all??0),set(c.EDGE_LEFT,left??x??all??0),set(c.EDGE_RIGHT,right??x??all??0)}function applyPositionOffset(layoutNode,edge,value){if(value===void 0){layoutNode.setPosition(edge,NaN);return}if(typeof value==="string"&&value.endsWith("%"))layoutNode.setPositionPercent(edge,Number.parseFloat(value));else if(typeof value==="number")layoutNode.setPosition(edge,value)}function alignToConstant(align){let c=getConstants();return{"flex-start":c.ALIGN_FLEX_START,"flex-end":c.ALIGN_FLEX_END,center:c.ALIGN_CENTER,stretch:c.ALIGN_STRETCH,baseline:c.ALIGN_BASELINE,"space-between":c.ALIGN_SPACE_BETWEEN,"space-around":c.ALIGN_SPACE_AROUND,"space-evenly":c.ALIGN_SPACE_EVENLY}[align]??c.ALIGN_STRETCH}function justifyToConstant(justify){let c=getConstants();return{"flex-start":c.JUSTIFY_FLEX_START,"flex-end":c.JUSTIFY_FLEX_END,center:c.JUSTIFY_CENTER,"space-between":c.JUSTIFY_SPACE_BETWEEN,"space-around":c.JUSTIFY_SPACE_AROUND,"space-evenly":c.JUSTIFY_SPACE_EVENLY}[justify]??c.JUSTIFY_FLEX_START}function calculateLayout(root,width,height){let c=getConstants();if(!root.layoutNode)throw Error("Root node must have a layout node");root.layoutNode.calculateLayout(width,height,c.DIRECTION_LTR),propagateLayout2(root,0,0),notifyLayoutSubscribers2(root)}function propagateLayout2(node,parentX,parentY){if(node.prevLayout=node.contentRect,!node.layoutNode)return;let left=node.layoutNode.getComputedLeft(),top=node.layoutNode.getComputedTop(),width=node.layoutNode.getComputedWidth(),height=node.layoutNode.getComputedHeight();if(node.contentRect={x:parentX+left,y:parentY+top,width,height},node.layoutDirty=!1,!rectEqual(node.prevLayout,node.contentRect))node.contentDirty=!0;for(let child of node.children)propagateLayout2(child,node.contentRect.x,node.contentRect.y)}function notifyLayoutSubscribers2(node){if(!rectEqual(node.prevLayout,node.contentRect))for(let subscriber of node.layoutSubscribers)subscriber();for(let child of node.children)notifyLayoutSubscribers2(child)}var measureLog;var init_nodes=__esm(()=>{init_unicode();init_measure_stats();measureLog=createLogger4("silvery:measure")});import{createContext as createContext2}from"react";import{DefaultEventPriority,DiscreteEventPriority,NoEventPriority}from"react-reconciler/constants.js";function normalizeNodeType(type){if(type==="ink-box")return"silvery-box";if(type==="ink-text")return"silvery-text";return type}function setOnNodeRemoved(callback){onNodeRemovedCallback=callback}function markSubtreeDirty(node){while(node&&!node.subtreeDirty)node.subtreeDirty=!0,node=node.parent}function markLayoutAncestorDirty(node){if(node.layoutNode)return;let ancestor=node.parent;while(ancestor&&!ancestor.layoutNode)ancestor=ancestor.parent;if(ancestor?.layoutNode)ancestor.contentDirty=!0,ancestor.stylePropsDirty=!0,ancestor.layoutDirty=!0,ancestor.layoutNode.markDirty()}function setInkStrictValidation(enabled){inkStrictValidation=enabled}function runWithDiscreteEvent(fn){let prev=currentUpdatePriority;currentUpdatePriority=DiscreteEventPriority;try{fn()}finally{currentUpdatePriority=prev}}var onNodeRemovedCallback=null,hasWarnedBoxInsideText=!1,inkStrictValidation=!1,currentUpdatePriority,hostConfig;var init_host_config=__esm(()=>{init_helpers();init_nodes();currentUpdatePriority=NoEventPriority;hostConfig={rendererPackageName:"@silvery/ag-react",rendererVersion:"0.0.1",supportsMutation:!0,supportsPersistence:!1,supportsHydration:!1,isPrimaryRenderer:!0,scheduleTimeout:setTimeout,cancelTimeout:clearTimeout,noTimeout:-1,supportsMicrotasks:!0,scheduleMicrotask:queueMicrotask,getRootHostContext(){return{isInsideText:!1}},getChildHostContext(parentHostContext,type){let normalizedType=normalizeNodeType(type),isInsideText=parentHostContext.isInsideText||normalizedType==="silvery-text";if(isInsideText===parentHostContext.isInsideText)return parentHostContext;return{isInsideText}},createInstance(type,props,_rootContainer,hostContext){if(type=normalizeNodeType(type),"style"in props&&props.style&&typeof props.style==="object")props={...props.style,...props};if(type==="silvery-box"&&hostContext.isInsideText){if(inkStrictValidation)throw Error("<Box> can’t be nested inside <Text> component");if(!hasWarnedBoxInsideText)hasWarnedBoxInsideText=!0,console.warn("Warning: <Box> cannot be nested inside <Text>. This produces undefined layout behavior.")}if(type==="silvery-text"&&hostContext.isInsideText)return createVirtualTextNode(props);return createNode(type,props)},createTextInstance(text,_rootContainer,hostContext){if(inkStrictValidation&&!hostContext.isInsideText&&text.trim().length>0)throw Error(`Text string "${text}" must be rendered inside <Text> component`);return{type:"silvery-text",props:{children:text},children:[],parent:null,layoutNode:null,contentRect:null,screenRect:null,renderRect:null,prevLayout:null,prevScreenRect:null,prevRenderRect:null,layoutChangedThisFrame:!1,layoutDirty:!1,contentDirty:!0,stylePropsDirty:!0,bgDirty:!0,subtreeDirty:!0,childrenDirty:!1,layoutSubscribers:new Set,textContent:text,isRawText:!0}},appendChild(parentInstance,child){let existingIndex=parentInstance.children.indexOf(child);if(existingIndex!==-1){if(parentInstance.children.splice(existingIndex,1),parentInstance.layoutNode&&child.layoutNode)parentInstance.layoutNode.removeChild(child.layoutNode)}if(child.parent=parentInstance,parentInstance.children.push(child),parentInstance.layoutNode&&child.layoutNode){let layoutIndex=parentInstance.children.filter((c)=>c.layoutNode!==null).length-1;parentInstance.layoutNode.insertChild(child.layoutNode,layoutIndex)}parentInstance.childrenDirty=!0,parentInstance.contentDirty=!0,parentInstance.layoutDirty=!0,parentInstance.layoutNode?.markDirty(),markLayoutAncestorDirty(parentInstance),markSubtreeDirty(parentInstance)},appendInitialChild(parentInstance,child){if(child.parent=parentInstance,parentInstance.children.push(child),parentInstance.layoutNode&&child.layoutNode){let layoutIndex=parentInstance.children.filter((c)=>c.layoutNode!==null).length-1;parentInstance.layoutNode.insertChild(child.layoutNode,layoutIndex)}},appendChildToContainer(container,child){let existingIndex=container.root.children.indexOf(child);if(existingIndex!==-1){if(container.root.children.splice(existingIndex,1),container.root.layoutNode&&child.layoutNode)container.root.layoutNode.removeChild(child.layoutNode)}if(child.parent=container.root,container.root.children.push(child),container.root.layoutNode&&child.layoutNode){let layoutIndex=container.root.children.filter((c)=>c.layoutNode!==null).length-1;container.root.layoutNode.insertChild(child.layoutNode,layoutIndex)}container.root.childrenDirty=!0,container.root.contentDirty=!0,container.root.layoutDirty=!0,container.root.layoutNode?.markDirty(),markSubtreeDirty(container.root)},removeChild(parentInstance,child){let index=parentInstance.children.indexOf(child);if(index!==-1){if(onNodeRemovedCallback?.(child),parentInstance.children.splice(index,1),parentInstance.layoutNode&&child.layoutNode)parentInstance.layoutNode.removeChild(child.layoutNode),child.layoutNode.free();child.parent=null,parentInstance.childrenDirty=!0,parentInstance.contentDirty=!0,parentInstance.layoutDirty=!0,parentInstance.layoutNode?.markDirty(),markLayoutAncestorDirty(parentInstance),markSubtreeDirty(parentInstance)}},removeChildFromContainer(container,child){let index=container.root.children.indexOf(child);if(index!==-1){if(onNodeRemovedCallback?.(child),container.root.children.splice(index,1),container.root.layoutNode&&child.layoutNode)container.root.layoutNode.removeChild(child.layoutNode),child.layoutNode.free();child.parent=null,container.root.childrenDirty=!0,container.root.contentDirty=!0,container.root.layoutDirty=!0,container.root.layoutNode?.markDirty(),markSubtreeDirty(container.root)}},insertBefore(parentInstance,child,beforeChild){let existingIndex=parentInstance.children.indexOf(child);if(existingIndex!==-1){if(parentInstance.children.splice(existingIndex,1),parentInstance.layoutNode&&child.layoutNode)parentInstance.layoutNode.removeChild(child.layoutNode)}let beforeIndex=parentInstance.children.indexOf(beforeChild);if(beforeIndex!==-1){if(child.parent=parentInstance,parentInstance.children.splice(beforeIndex,0,child),parentInstance.layoutNode&&child.layoutNode){let layoutIndex=parentInstance.children.slice(0,beforeIndex).filter((c)=>c.layoutNode!==null).length;parentInstance.layoutNode.insertChild(child.layoutNode,layoutIndex)}parentInstance.childrenDirty=!0,parentInstance.contentDirty=!0,parentInstance.layoutDirty=!0,parentInstance.layoutNode?.markDirty(),markLayoutAncestorDirty(parentInstance),markSubtreeDirty(parentInstance)}},insertInContainerBefore(container,child,beforeChild){let existingIndex=container.root.children.indexOf(child);if(existingIndex!==-1){if(container.root.children.splice(existingIndex,1),container.root.layoutNode&&child.layoutNode)container.root.layoutNode.removeChild(child.layoutNode)}let beforeIndex=container.root.children.indexOf(beforeChild);if(beforeIndex!==-1){if(child.parent=container.root,container.root.children.splice(beforeIndex,0,child),container.root.layoutNode&&child.layoutNode){let layoutIndex=container.root.children.slice(0,beforeIndex).filter((c)=>c.layoutNode!==null).length;container.root.layoutNode.insertChild(child.layoutNode,layoutIndex)}container.root.childrenDirty=!0,container.root.contentDirty=!0,container.root.layoutDirty=!0,container.root.layoutNode?.markDirty(),markSubtreeDirty(container.root)}},prepareUpdate(_instance,_type,oldProps,newProps){return!propsEqual(oldProps,newProps)},commitUpdate(instance,_type,oldProps,newProps,_finishedWork){if("style"in oldProps&&oldProps.style&&typeof oldProps.style==="object")oldProps={...oldProps.style,...oldProps};if("style"in newProps&&newProps.style&&typeof newProps.style==="object")newProps={...newProps.style,...newProps};if(propsEqual(oldProps,newProps)){instance.props=newProps;return}if(layoutPropsChanged(oldProps,newProps)){if(instance.layoutNode)applyBoxProps(instance.layoutNode,newProps,oldProps),instance.layoutNode.markDirty();instance.layoutDirty=!0}let contentChanged=contentPropsChanged(oldProps,newProps);if(contentChanged){if(instance.stylePropsDirty=!0,contentChanged==="text"){if(instance.contentDirty=!0,instance.layoutNode)instance.layoutNode.markDirty()}if(oldProps.backgroundColor!==newProps.backgroundColor)instance.bgDirty=!0;if(oldProps.borderStyle&&!newProps.borderStyle)instance.bgDirty=!0;if(oldProps.outlineStyle&&!newProps.outlineStyle)instance.bgDirty=!0;if(oldProps.theme!==newProps.theme)instance.bgDirty=!0}instance.props=newProps;let scrollToChanged=oldProps.scrollTo!==newProps.scrollTo,scrollOffsetChanged=oldProps.scrollOffset!==newProps.scrollOffset;if(instance.layoutDirty||contentChanged||scrollToChanged||scrollOffsetChanged)markLayoutAncestorDirty(instance),markSubtreeDirty(instance)},commitTextUpdate(textInstance,_oldText,newText){textInstance.textContent=newText,textInstance.props={children:newText},textInstance.contentDirty=!0,textInstance.stylePropsDirty=!0,markLayoutAncestorDirty(textInstance),markSubtreeDirty(textInstance)},finalizeInitialChildren(){return!1},prepareForCommit(){return null},resetAfterCommit(container){container.onRender()},getPublicInstance(instance){return instance},shouldSetTextContent(){return!1},clearContainer(container){for(let child of container.root.children)onNodeRemovedCallback?.(child);for(let child of container.root.children)if(container.root.layoutNode&&child.layoutNode)container.root.layoutNode.removeChild(child.layoutNode),child.layoutNode.free();container.root.children=[],container.root.childrenDirty=!0,container.root.contentDirty=!0,container.root.layoutDirty=!0,container.root.layoutNode?.markDirty(),markSubtreeDirty(container.root)},preparePortalMount(){},getCurrentEventPriority(){if(currentUpdatePriority!==NoEventPriority)return currentUpdatePriority;return DefaultEventPriority},getInstanceFromNode(){return null},beforeActiveInstanceBlur(){},afterActiveInstanceBlur(){},prepareScopeUpdate(){},getInstanceFromScope(){return null},detachDeletedInstance(){},setCurrentUpdatePriority(newPriority){currentUpdatePriority=newPriority},getCurrentUpdatePriority(){return currentUpdatePriority},resolveUpdatePriority(){if(currentUpdatePriority!==NoEventPriority)return currentUpdatePriority;return DefaultEventPriority},maySuspendCommit(){return!1},NotPendingTransition:null,HostTransitionContext:createContext2(null),resetFormInstance(){},requestPostPaintCallback(){},shouldAttemptEagerTransition(){return!1},trackSchedulerEvent(){},resolveEventType(){return null},resolveEventTimeStamp(){return-1.1},preloadInstance(){return!0},startSuspendingCommit(){},suspendInstance(){},waitForCommitToBeReady(){return null},hideInstance(instance){if(instance.hidden=!0,instance.contentDirty=!0,instance.stylePropsDirty=!0,instance.layoutDirty=!0,instance.layoutNode)instance.layoutNode.markDirty();if(instance.parent)instance.parent.contentDirty=!0;markLayoutAncestorDirty(instance),markSubtreeDirty(instance)},unhideInstance(instance,_props){if(instance.hidden=!1,instance.contentDirty=!0,instance.stylePropsDirty=!0,instance.layoutDirty=!0,instance.layoutNode)instance.layoutNode.markDirty();if(instance.parent)instance.parent.contentDirty=!0;markLayoutAncestorDirty(instance),markSubtreeDirty(instance)},hideTextInstance(textInstance){if(textInstance.hidden=!0,textInstance.contentDirty=!0,textInstance.stylePropsDirty=!0,textInstance.parent)textInstance.parent.contentDirty=!0;markLayoutAncestorDirty(textInstance),markSubtreeDirty(textInstance)},unhideTextInstance(textInstance,_text){if(textInstance.hidden=!1,textInstance.contentDirty=!0,textInstance.stylePropsDirty=!0,textInstance.parent)textInstance.parent.contentDirty=!0;markLayoutAncestorDirty(textInstance),markSubtreeDirty(textInstance)}}});import Reconciler from"react-reconciler";function createContainer(onRender){return{root:createRootNode(),onRender}}function createFiberRoot(container){return reconciler.createContainer(container,1,null,!1,null,"",()=>{},()=>{},()=>{},null)}function getContainerRoot(container){return container.root}var reconciler;var init_reconciler=__esm(()=>{init_host_config();init_nodes();init_host_config();reconciler=Reconciler(hostConfig)});import Reconciler2 from"react-reconciler";var stringReconciler;var init_string_reconciler=__esm(()=>{init_host_config();stringReconciler=Reconciler2({...hostConfig,isPrimaryRenderer:!1})});import React2,{act}from"react";function renderStringSync(element,options={}){if(!isLayoutEngineInitialized())throw Error("Layout engine not initialized. Use renderString() (async) or initialize with setLayoutEngine().");let{width=80,height=24,plain=!1,pipelineConfig,trimTrailingWhitespace=!0,trimEmptyLines=!0,onContentHeight,alwaysStyled=!1}=options,hadReactCommit=!1,container=createContainer(()=>{hadReactCommit=!0}),uncaughtError=null,onUncaughtError=(error)=>{uncaughtError=error},fiberRoot=stringReconciler.createContainer(container,1,null,!1,null,"",onUncaughtError,()=>{},()=>{},null),mockStdout={columns:width,rows:height,write:()=>!0,isTTY:!1,on:()=>mockStdout,off:()=>mockStdout,once:()=>mockStdout,removeListener:()=>mockStdout,addListener:()=>mockStdout},mockTerm=createTerm({color:plain?null:"truecolor"}),wrapped=React2.createElement(TermContext.Provider,{value:mockTerm},React2.createElement(StdoutContext.Provider,{value:{stdout:mockStdout,write:()=>{}}},React2.createElement(StderrContext.Provider,{value:{stderr:process.stderr,write:(data)=>{process.stderr.write(data)}}},element)));if(withActEnvironment(()=>{act(()=>{stringReconciler.updateContainerSync(wrapped,fiberRoot,null,null),stringReconciler.flushSyncWork()})}),uncaughtError)throw uncaughtError instanceof Error?uncaughtError:Error(String(uncaughtError));let buffer,rootNode,MAX_ITERATIONS=5;for(let i=0;i<MAX_ITERATIONS;i++)if(hadReactCommit=!1,withActEnvironment(()=>{if(act(()=>{let root=getContainerRoot(container);rootNode=root,buffer=executeRender(root,width,height,null,void 0,pipelineConfig).buffer}),!hadReactCommit)act(()=>{stringReconciler.flushSyncWork()})}),!hadReactCommit)break;if(onContentHeight&&rootNode){let maxBottom=0,hasChildren=!1;for(let child of rootNode.children)if(child.contentRect){hasChildren=!0;let props=child.props,mb=props.marginBottom??props.marginY??props.margin??0,childBottom=child.contentRect.y+child.contentRect.height+mb;if(childBottom>maxBottom)maxBottom=childBottom}onContentHeight(hasChildren?maxBottom:0)}return withActEnvironment(()=>{act(()=>{stringReconciler.updateContainerSync(null,fiberRoot,null,null),stringReconciler.flushSyncWork()})}),plain&&!alwaysStyled?bufferToText(buffer,{trimTrailingWhitespace,trimEmptyLines}):bufferToStyledText(buffer,{trimTrailingWhitespace,trimEmptyLines})}function withActEnvironment(fn){let prev=globalThis.IS_REACT_ACT_ENVIRONMENT;globalThis.IS_REACT_ACT_ENVIRONMENT=!0;try{fn()}finally{globalThis.IS_REACT_ACT_ENVIRONMENT=prev}}var init_render_string=__esm(()=>{init_ansi();init_buffer();init_context();init_pipeline2();init_reconciler();init_string_reconciler()});init_unicode();import React from"react";import chalk2 from"chalk";function currentChalkLevel(){return chalk2?.level??0}function resolveTerminalColumns(){if(process.env.COLUMNS){let val=Number(process.env.COLUMNS);if(val>0)return val}if(process.stdout?.columns&&process.stdout.columns>0)return process.stdout.columns;if(process.stderr?.columns&&process.stderr.columns>0)return process.stderr.columns;return 80}function resolveTerminalRows(){if(process.env.LINES){let val=Number(process.env.LINES);if(val>0)return val}if(process.stdout?.rows&&process.stdout.rows>0)return process.stdout.rows;if(process.stderr?.rows&&process.stderr.rows>0)return process.stderr.rows;return 24}var ForceStylesCtx=React.createContext(!1),InkRenderStateCtx=React.createContext(null);function containsAnsiEscapes(text){for(let i=0;i<text.length;i++){let code=text.charCodeAt(i);if(code===27)return!0;if(code>=128&&code<=159)return!0}return!1}function childrenContainAnsi(children){if(typeof children==="string")return containsAnsiEscapes(children);if(Array.isArray(children))return children.some((c)=>childrenContainAnsi(c));if(React.isValidElement(children))return childrenContainAnsi(children.props.children);return!1}var _userVS16Codepoints=new Set;function registerUserVS16(text){if(!text.includes("️"))return;let i=0;while(i<text.length){let cp=text.codePointAt(i),char=String.fromCodePoint(cp),charLen=char.length;if(i+charLen<text.length&&text.charCodeAt(i+charLen)===65039){if(isTextPresentationEmoji(char))_userVS16Codepoints.add(cp)}i+=charLen}}function scanChildrenForVS16(children){if(typeof children==="string")registerUserVS16(children);else if(Array.isArray(children))for(let child of children)scanChildrenForVS16(child);else if(React.isValidElement(children))scanChildrenForVS16(children.props.children)}function stripSilveryVS16(input){if(!input.includes("️"))return input;let result="",i=0;while(i<input.length){let cp=input.codePointAt(i),char=String.fromCodePoint(cp),charLen=char.length;if(i+charLen<input.length&&input.charCodeAt(i+charLen)===65039){if(isTextPresentationEmoji(char)){if(!_userVS16Codepoints.has(cp)){result+=char,i+=charLen+1;continue}}}result+=char,i+=charLen}return result}var STRING_SEQUENCE_INTROS={80:"dcs",94:"pm",95:"apc",88:"sos"},C1_STRING_SEQUENCE_MAP={144:"dcs",158:"pm",159:"apc",152:"sos"};function tokenizeAnsi(text){let tokens=[],len=text.length,i=0,textStart=i;function flushText(){if(i>textStart)tokens.push({type:"text",value:text.slice(textStart,i)})}while(i<len){let code=text.charCodeAt(i);if(code>=128&&code<=159){flushText();let c1Type=C1_STRING_SEQUENCE_MAP[code];if(c1Type){let start=i;i++,i=findST(text,i,len),tokens.push({type:c1Type,value:text.slice(start,i)})}else if(code===155){let start=i;i++,i=consumeCSI(text,i,len),tokens.push({type:"csi",value:text.slice(start,i)})}else if(code===157){let start=i;i++,i=findOSCEnd(text,i,len),tokens.push({type:"osc",value:text.slice(start,i)})}else tokens.push({type:"c1",value:text[i]}),i++;textStart=i;continue}if(code===27){if(flushText(),i+1>=len){tokens.push({type:"esc",value:text[i]}),i++,textStart=i;continue}let next=text.charCodeAt(i+1);if(next===91){let start=i;i+=2,i=consumeCSI(text,i,len),tokens.push({type:"csi",value:text.slice(start,i)}),textStart=i;continue}if(next===93){let start=i;i+=2,i=findOSCEnd(text,i,len),tokens.push({type:"osc",value:text.slice(start,i)}),textStart=i;continue}let stringType=STRING_SEQUENCE_INTROS[next];if(stringType){let start=i;i+=2,i=findST(text,i,len),tokens.push({type:stringType,value:text.slice(start,i)}),textStart=i;continue}if(next>=32&&next<=47){let start=i;i+=2;while(i<len){let c=text.charCodeAt(i);if(c<32||c>47)break;i++}if(i<len){let c=text.charCodeAt(i);if(c>=48&&c<=126)i++,tokens.push({type:"esc",value:text.slice(start,i)});else i=len,tokens.push({type:"esc",value:text.slice(start,i)})}else tokens.push({type:"esc",value:text.slice(start,i)});textStart=i;continue}if(next>=48&&next<=126){tokens.push({type:"esc",value:text.slice(i,i+2)}),i+=2,textStart=i;continue}tokens.push({type:"esc",value:text[i]}),i++,textStart=i;continue}i++}return flushText(),tokens}function consumeCSI(text,i,len){while(i<len){let c=text.charCodeAt(i);if(c<48||c>63)break;i++}while(i<len){let c=text.charCodeAt(i);if(c<32||c>47)break;i++}if(i<len){let c=text.charCodeAt(i);if(c>=64&&c<=126)i++}return i}function findST(text,i,len){while(i<len){let code=text.charCodeAt(i);if(code===156)return i+1;if(code===27&&i+1<len&&text.charCodeAt(i+1)===92)return i+2;i++}return len}function findOSCEnd(text,i,len){while(i<len){let code=text.charCodeAt(i);if(code===7)return i+1;if(code===156)return i+1;if(code===27&&i+1<len&&text.charCodeAt(i+1)===92)return i+2;i++}return len}function isCSISGR(value){if(value.length<2||value.charCodeAt(value.length-1)!==109)return!1;let start;if(value.charCodeAt(0)===27)start=2;else start=1;for(let i=start;i<value.length-1;i++){let c=value.charCodeAt(i);if(c<48||c>59)return!1}return!0}function extractColonSGRReplacements(sgrSequence){let paramsMatch=sgrSequence.match(/\x1b\[([0-9;:]+)m/);if(!paramsMatch)return[];let rawParams=paramsMatch[1];if(!rawParams.includes(":"))return[];let replacements=[],parts=rawParams.split(";");for(let part of parts){if(!part.includes(":"))continue;let subs=part.split(":"),code=Number(subs[0]);if((code===38||code===48)&&Number(subs[1])===2){let nums=subs.map((s)=>s===""?0:Number(s)),r=nums[3]??nums[2]??0,g=nums[4]??nums[3]??0,b=nums[5]??nums[4]??0,semicolonForm=`\x1B[${code};2;${r};${g};${b}m`;replacements.push({semicolonForm,colonForm:`\x1B[${part}m`})}}return replacements}function createColonSGRTracker(){let replacements=[];return{register(sgrSequence){let found=extractColonSGRReplacements(sgrSequence);for(let r of found)replacements.push(r)},restore(output){if(replacements.length===0)return output;let result=output;for(let{semicolonForm,colonForm}of replacements)result=result.replaceAll(semicolonForm,colonForm);return result},clear(){replacements.length=0}}}var colonSGRTracker=createColonSGRTracker();function restoreColonFormatSGR(output){return colonSGRTracker.restore(output)}function isOSCTerminated(value){if(value.length===0)return!1;let last=value.charCodeAt(value.length-1);if(last===7)return!0;if(last===156)return!0;if(value.length>=2&&last===92&&value.charCodeAt(value.length-2)===27)return!0;return!1}function isOSC8(value){if(value.charCodeAt(0)===27)return value.charCodeAt(2)===56&&value.charCodeAt(3)===59;return value.charCodeAt(1)===56&&value.charCodeAt(2)===59}function sanitizeAnsi(text){if(text.length===0)return"";let tokens=tokenizeAnsi(text),result="";for(let token of tokens)switch(token.type){case"text":result+=token.value;break;case"csi":if(isCSISGR(token.value))result+=token.value,colonSGRTracker.register(token.value);break;case"osc":if(isOSC8(token.value)&&isOSCTerminated(token.value))result+=token.value;break}return result}function sanitizeChildren(children){if(typeof children==="string")return sanitizeAnsi(children);if(Array.isArray(children))return children.map((child,i)=>sanitizeChildren(child));return children}import React3,{createContext as createContext3,useContext as useContext3}from"react";init_context();import{forwardRef,useImperativeHandle,useLayoutEffect,useRef,useState}from"react";import{jsxDEV}from"react/jsx-dev-runtime";var Box=forwardRef(function(props,ref){let{children,onLayout,...restProps}=props,nodeRef=useRef(null),[node,setNode]=useState(null),lastReportedLayout=useRef(null);return useLayoutEffect(()=>{if(nodeRef.current)setNode(nodeRef.current)},[]),useLayoutEffect(()=>{if(!onLayout||!node)return;let handleLayoutChange=()=>{let layout=node.contentRect;if(!layout)return;let last=lastReportedLayout.current;if(!last||last.x!==layout.x||last.y!==layout.y||last.width!==layout.width||last.height!==layout.height)lastReportedLayout.current=layout,onLayout(layout)};if(node.layoutSubscribers.add(handleLayoutChange),node.contentRect)handleLayoutChange();return()=>{node.layoutSubscribers.delete(handleLayoutChange)}},[node,onLayout]),useImperativeHandle(ref,()=>({getNode:()=>nodeRef.current,getContentRect:()=>nodeRef.current?.contentRect??null,getScreenRect:()=>nodeRef.current?.screenRect??null}),[]),jsxDEV("silvery-box",{ref:nodeRef,...restProps,children:jsxDEV(NodeContext.Provider,{value:node,children},void 0,!1,void 0,this)},void 0,!1,void 0,this)});init_context();import{useContext as useContext2,useRef as useRef3}from"react";init_context();import{useContext,useLayoutEffect as useLayoutEffect2,useRef as useRef2}from"react";var OSC133={promptStart:"\x1B]133;A\x07",promptEnd:"\x1B]133;B\x07",commandStart:"\x1B]133;C\x07",commandEnd:(exitCode)=>`\x1B]133;D;${exitCode??0}\x07`};function countNewlines(s){let count=0;for(let i=0;i<s.length;i++)if(s.charCodeAt(i)===10)count++;return count}function resolveMarkers(markers,item,index){if(!markers)return{before:"",after:""};if(markers===!0)return{before:OSC133.promptStart,after:OSC133.commandEnd(0)};return{before:markers.before?.(item,index)??"",after:markers.after?.(item,index)??""}}function useScrollback(items,options){let{frozen,render,stdout=process.stdout,markers,width}=options,stdoutCtx=useContext(StdoutContext),frozenCount=0;for(let i=0;i<items.length;i++){if(!frozen(items[i],i))break;frozenCount++}let prevFrozenCountRef=useRef2(0),renderedStringsRef=useRef2(new Map),prevWidthRef=useRef2(width),totalFrozenLinesRef=useRef2(0),renderRef=useRef2(render);renderRef.current=render;let itemsRef=useRef2(items);itemsRef.current=items;let markersRef=useRef2(markers);markersRef.current=markers;let frozenCountRef=useRef2(frozenCount);return frozenCountRef.current=frozenCount,useLayoutEffect2(()=>{let prev=prevFrozenCountRef.current;if(frozenCount>prev)if(stdoutCtx?.promoteScrollback){let frozenContent="",linesWritten=0;for(let i=prev;i<frozenCount;i++){let{before,after}=resolveMarkers(markers,items[i],i);if(before)frozenContent+=before;let text=render(items[i],i)+`
|
|
70
|
+
`;if(frozenContent+=text.replace(/\n/g,`\x1B[K\r
|
|
71
|
+
`),linesWritten+=countNewlines(text),renderedStringsRef.current.set(i,text),after)frozenContent+=after}totalFrozenLinesRef.current+=linesWritten,stdoutCtx.promoteScrollback(frozenContent,linesWritten)}else{let linesWritten=0;for(let i=prev;i<frozenCount;i++){let{before,after}=resolveMarkers(markers,items[i],i);if(before)stdout.write(before);let text=render(items[i],i)+`
|
|
72
|
+
`;if(stdout.write(text.replace(/\n/g,`\r
|
|
73
|
+
`)),linesWritten+=countNewlines(text),renderedStringsRef.current.set(i,text),after)stdout.write(after)}totalFrozenLinesRef.current+=linesWritten,stdoutCtx?.notifyScrollback?.(linesWritten)}prevFrozenCountRef.current=frozenCount},[frozenCount,items,render,stdout,stdoutCtx,markers]),useLayoutEffect2(()=>{if(width===void 0)return;let prevWidth=prevWidthRef.current;if(prevWidthRef.current=width,prevWidth===void 0||width===prevWidth)return;let currentFrozenCount=frozenCountRef.current;if(currentFrozenCount===0)return;let currentItems=itemsRef.current,currentRender=renderRef.current,currentMarkers=markersRef.current;stdoutCtx?.resetInlineCursor?.(),stdout.write("\x1B[3J\x1B[H\x1B[2J");let linesWritten=0;for(let i=0;i<currentFrozenCount;i++){let{before,after}=resolveMarkers(currentMarkers,currentItems[i],i);if(before)stdout.write(before);let text=currentRender(currentItems[i],i)+`
|
|
74
|
+
`;if(stdout.write(text.replace(/\n/g,`\r
|
|
75
|
+
`)),linesWritten+=countNewlines(text),renderedStringsRef.current.set(i,text),after)stdout.write(after)}totalFrozenLinesRef.current=linesWritten,prevFrozenCountRef.current=currentFrozenCount},[width,stdout,stdoutCtx]),frozenCount}init_render_string();import{jsxDEV as jsxDEV2}from"react/jsx-dev-runtime";function Static({items,children,style}){let stdoutCtx=useContext2(StdoutContext),term2=useContext2(TermContext),useInlineScrollback=!!stdoutCtx?.promoteScrollback,renderedRef=useRef3([]),prevCount=renderedRef.current.length;if(items.length>prevCount)for(let i=prevCount;i<items.length;i++)renderedRef.current.push(children(items[i],i));else if(items.length<prevCount)renderedRef.current.length=items.length;let frozenCount=useScrollback(items,{frozen:()=>useInlineScrollback,render:(_item,index)=>{let element=renderedRef.current[index];if(!element)return"";try{return renderStringSync(element,{width:term2?.cols??80,plain:!1})}catch{return`[static item ${index}]`}},width:useInlineScrollback?term2?.cols??80:void 0});if(useInlineScrollback){let liveElements=renderedRef.current.slice(frozenCount);if(liveElements.length===0)return jsxDEV2("silvery-box",{flexDirection:"column",...style},void 0,!1,void 0,this);return jsxDEV2("silvery-box",{flexDirection:"column",...style,children:liveElements},void 0,!1,void 0,this)}return jsxDEV2("silvery-box",{flexDirection:"column",...style,children:renderedRef.current},void 0,!1,void 0,this)}import{forwardRef as forwardRef2}from"react";import{jsxDEV as jsxDEV3}from"react/jsx-dev-runtime";var Text=forwardRef2(function(props,ref){let{children,...styleProps}=props;return jsxDEV3("silvery-text",{ref:(node)=>{if(typeof ref==="function")ref(node?{getNode:()=>node}:null);else if(ref)ref.current=node?{getNode:()=>node}:null},...styleProps,children},void 0,!1,void 0,this)});import{jsxDEV as jsxDEV4}from"react/jsx-dev-runtime";function Newline({count=1}){return jsxDEV4("silvery-text",{children:`
|
|
76
|
+
`.repeat(count)},void 0,!1,void 0,this)}import{jsxDEV as jsxDEV5}from"react/jsx-dev-runtime";function Spacer(){return jsxDEV5("silvery-box",{flexGrow:1},void 0,!1,void 0,this)}import{jsxDEV as jsxDEV6}from"react/jsx-dev-runtime";function Transform({transform,children}){if(children===void 0||children===null)return null;return jsxDEV6("silvery-text",{internal_transform:transform,children},void 0,!1,void 0,this)}var Box3=React3.forwardRef(function(props,ref){let hasColors=currentChalkLevel()>0;return React3.createElement(Box,{flexDirection:"row",flexGrow:0,flexShrink:1,...props,color:hasColors?props.color:void 0,backgroundColor:hasColors?props.backgroundColor:void 0,borderColor:hasColors?props.borderColor:void 0,borderDimColor:hasColors?props.borderDimColor:void 0,ref})}),Text3=React3.forwardRef(function(props,ref){scanChildrenForVS16(props.children);let sanitizedChildren=sanitizeChildren(props.children),renderState=React3.useContext(InkRenderStateCtx);if(renderState&&!renderState.hasEmbeddedAnsi){if(childrenContainAnsi(sanitizedChildren))renderState.hasEmbeddedAnsi=!0}let hasColors=currentChalkLevel()>0,forceStyles=React3.useContext(ForceStylesCtx),passProps=hasColors||forceStyles?{...props,color:props.color,backgroundColor:props.backgroundColor,ref,children:sanitizedChildren}:{wrap:props.wrap,ref,children:sanitizedChildren};return React3.createElement(Text,passProps)}),InkStaticStoreCtx=createContext3(null);function extractTextFromElement(node){if(node==null||typeof node==="boolean")return"";if(typeof node==="string")return node;if(typeof node==="number")return String(node);if(Array.isArray(node))return node.map(extractTextFromElement).join("");if(React3.isValidElement(node)){let props=node.props;return extractTextFromElement(props.children)}return""}function Static2({items,children:renderItem,style}){let store=useContext3(InkStaticStoreCtx);if(!store)return React3.createElement(Static,{items,children:renderItem,style});if(items.length>store.renderedCount){let paddingBottom=style?.paddingBottom??0;if(paddingBottom>0&&store.fullStaticOutput.length>0){let paddingSuffix=`
|
|
77
|
+
`.repeat(paddingBottom);if(store.fullStaticOutput.endsWith(paddingSuffix))store.fullStaticOutput=store.fullStaticOutput.slice(0,-paddingSuffix.length)}let newStaticOutput=items.slice(store.renderedCount).map((item,i)=>{let element=renderItem(item,store.renderedCount+i);return extractTextFromElement(element)}).join(`
|
|
78
|
+
`)+`
|
|
79
|
+
`;if(store.fullStaticOutput+=newStaticOutput,store.renderedCount=items.length,paddingBottom>0)store.fullStaticOutput+=`
|
|
80
|
+
`.repeat(paddingBottom)}return null}init_context();init_context();import{useContext as useContext11,useEffect as useEffect4,useLayoutEffect as useLayoutEffect5,useCallback as useCallback4,useState as useState3,useMemo as useMemo2,useRef as useRef8}from"react";import React5,{createContext as createContext5,Fragment}from"react";import React4,{createContext as createContext4,useCallback,useContext as useContext5,useEffect,useLayoutEffect as useLayoutEffect4,useRef as useRef5}from"react";init_context();import{useContext as useContext4,useLayoutEffect as useLayoutEffect3,useReducer,useRef as useRef4}from"react";function createCursorStore(){let store={state:null,listeners:new Set,accessors:null,setCursorState(s){store.state=s;for(let listener of store.listeners)listener()}};return store.accessors={getCursorState:()=>store.state,subscribeCursor:(listener)=>{return store.listeners.add(listener),()=>{store.listeners.delete(listener)}}},store}var CursorCtx=createContext4(null);function CursorProvider({store,children}){return React4.createElement(CursorCtx.Provider,{value:store},children)}var _globalCursorState=null;function globalGetCursorState(){return _globalCursorState}function getCursorState(){return globalGetCursorState()}var InkCursorStoreCtx=createContext5(null);import React6,{createContext as createContext6,Fragment as Fragment2,useCallback as useCallback2,useEffect as useEffect2,useMemo,useState as useState2}from"react";var InkFocusContext=createContext6({activeId:void 0,isFocusEnabled:!0,add(){},remove(){},activate(){},deactivate(){},enableFocus(){},disableFocus(){},focusNext(){},focusPrevious(){},focus(){},blur(){}});function InkFocusProvider({children,inputEmitter}){let[isFocusEnabled,setIsFocusEnabled]=useState2(!0),[activeFocusId,setActiveFocusId]=useState2(void 0),[,setFocusables]=useState2([]),focusablesCountRef=React6.useRef(0),findNextFocusable=useCallback2((currentFocusables,currentActiveFocusId)=>{let activeIndex=currentFocusables.findIndex((f)=>f.id===currentActiveFocusId);for(let i=activeIndex+1;i<currentFocusables.length;i++)if(currentFocusables[i]?.isActive)return currentFocusables[i].id;return},[]),findPreviousFocusable=useCallback2((currentFocusables,currentActiveFocusId)=>{let activeIndex=currentFocusables.findIndex((f)=>f.id===currentActiveFocusId);for(let i=activeIndex-1;i>=0;i--)if(currentFocusables[i]?.isActive)return currentFocusables[i].id;return},[]),focusNext=useCallback2(()=>{setFocusables((currentFocusables)=>{return setActiveFocusId((currentActiveFocusId)=>{let firstFocusableId=currentFocusables.find((f)=>f.isActive)?.id;return findNextFocusable(currentFocusables,currentActiveFocusId)??firstFocusableId}),currentFocusables})},[findNextFocusable]),focusPrevious=useCallback2(()=>{setFocusables((currentFocusables)=>{return setActiveFocusId((currentActiveFocusId)=>{let lastFocusableId=currentFocusables.findLast((f)=>f.isActive)?.id;return findPreviousFocusable(currentFocusables,currentActiveFocusId)??lastFocusableId}),currentFocusables})},[findPreviousFocusable]),enableFocus=useCallback2(()=>{setIsFocusEnabled(!0)},[]),disableFocus=useCallback2(()=>{setIsFocusEnabled(!1)},[]),focus=useCallback2((id)=>{setFocusables((currentFocusables)=>{if(currentFocusables.some((f)=>f.id===id))setActiveFocusId(id);return currentFocusables})},[]),blur=useCallback2(()=>{setActiveFocusId(void 0)},[]),addFocusable=useCallback2((id,{autoFocus})=>{if(setFocusables((currentFocusables)=>{return focusablesCountRef.current=currentFocusables.length+1,[...currentFocusables,{id,isActive:!0}]}),autoFocus)setActiveFocusId((currentActiveFocusId)=>{if(!currentActiveFocusId)return id;return currentActiveFocusId})},[]),removeFocusable=useCallback2((id)=>{setActiveFocusId((currentActiveFocusId)=>{if(currentActiveFocusId===id)return;return currentActiveFocusId}),setFocusables((currentFocusables)=>{let filtered=currentFocusables.filter((f)=>f.id!==id);return focusablesCountRef.current=filtered.length,filtered})},[]),activateFocusable=useCallback2((id)=>{setFocusables((currentFocusables)=>currentFocusables.map((f)=>f.id===id?{...f,isActive:!0}:f))},[]),deactivateFocusable=useCallback2((id)=>{setActiveFocusId((currentActiveFocusId)=>{if(currentActiveFocusId===id)return;return currentActiveFocusId}),setFocusables((currentFocusables)=>currentFocusables.map((f)=>f.id===id?{...f,isActive:!1}:f))},[]);useEffect2(()=>{if(!inputEmitter)return;let tab="\t",shiftTab="\x1B[Z",escape="\x1B",handleInput=(data)=>{let input=typeof data==="string"?data:data.toString();if(!isFocusEnabled||focusablesCountRef.current===0)return;if(input===tab)focusNext();else if(input===shiftTab)focusPrevious();else if(input===escape)setActiveFocusId(void 0)};return inputEmitter.on("input",handleInput),()=>{inputEmitter.removeListener("input",handleInput)}},[isFocusEnabled,focusNext,focusPrevious,inputEmitter]);let contextValue=useMemo(()=>({activeId:activeFocusId,isFocusEnabled,add:addFocusable,remove:removeFocusable,activate:activateFocusable,deactivate:deactivateFocusable,enableFocus,disableFocus,focusNext,focusPrevious,focus,blur}),[activeFocusId,isFocusEnabled,addFocusable,removeFocusable,activateFocusable,deactivateFocusable,enableFocus,disableFocus,focusNext,focusPrevious,focus,blur]);return React6.createElement(InkFocusContext.Provider,{value:contextValue},children)}import{createContext as createContext7}from"react";import EventEmitter from"node:events";var InkStdinCtx=createContext7({stdin:process.stdin,isRawModeSupported:process.stdin.isTTY??!1,rawModeCount:0,setRawMode:()=>{},setBracketedPasteMode:()=>{},internal_eventEmitter:new EventEmitter});function createInkStdinState(stdin,stdout){let isRawModeSupported=stdin.isTTY??!1,rawModeCount=0,bracketedPasteModeEnabledCount=0,internal_eventEmitter=new EventEmitter;return internal_eventEmitter.setMaxListeners(1/0),{stdin,isRawModeSupported,rawModeCount:0,setRawMode:(value)=>{if(!isRawModeSupported)throw Error(`Raw mode is not supported on the current process.stdin, which Ink uses as input stream by default.
|
|
81
|
+
Read about how to prevent this error on https://github.com/vadimdemedes/ink/#nested-ink-rendering`);if(value){if(rawModeCount++,rawModeCount===1){if(stdin.setRawMode)stdin.setRawMode(!0);if(stdin.ref)stdin.ref()}}else if(rawModeCount=Math.max(0,rawModeCount-1),rawModeCount===0){if(stdin.setRawMode)stdin.setRawMode(!1);if(stdin.unref)stdin.unref()}},setBracketedPasteMode:(value)=>{let out=stdout??process.stdout;if(!out.isTTY)return;if(value){if(bracketedPasteModeEnabledCount===0)out.write("\x1B[?2004h");bracketedPasteModeEnabledCount++}else{if(bracketedPasteModeEnabledCount===0)return;if(--bracketedPasteModeEnabledCount===0)out.write("\x1B[?2004l")}},internal_eventEmitter}}init_context();import{useCallback as useCallback3,useContext as useContext6,useRef as useRef6,useSyncExternalStore}from"react";function shallow(a,b){if(Object.is(a,b))return!0;if(typeof a!=="object"||typeof b!=="object"||a===null||b===null)return!1;let keysA=Object.keys(a),keysB=Object.keys(b);if(keysA.length!==keysB.length)return!1;for(let key of keysA)if(!Object.is(a[key],b[key]))return!1;return!0}function useTerm(selector,equalityFn){let term2=useContext6(TermContext);if(!term2)throw Error("useTerm must be used within a render(element, term) context");if(!selector)return term2;return useTermSelector(term2,selector,equalityFn)}function useTermSelector(term2,selector,equalityFn){let prevRef=useRef6(void 0),isEqual=equalityFn??Object.is,subscribe=useCallback3((listener)=>term2.subscribe(listener),[term2]),getSnapshot=useCallback3(()=>{let next=selector(term2);if(prevRef.current!==void 0&&isEqual(prevRef.current,next))return prevRef.current;return prevRef.current=next,next},[term2,selector,isEqual]);return useSyncExternalStore(subscribe,getSnapshot,getSnapshot)}function useWindowSize(){return useTerm((t)=>{let s=t.getState();return{columns:s.cols,rows:s.rows}},shallow)}init_context();import{useContext as useContext7,useEffect as useEffect3,useRef as useRef7}from"react";function isModifierOnlyEvent(input,key){if(input!=="")return!1;if(key.upArrow||key.downArrow||key.leftArrow||key.rightArrow||key.pageDown||key.pageUp||key.home||key.end||key.return||key.escape||key.tab||key.backspace||key.delete)return!1;return!0}function useInput(inputHandler,options={}){let rt=useContext7(RuntimeContext);if(!rt)throw Error("useInput requires a runtime (run/render/createApp/test renderer). Use useRuntime() for components that work in both static and interactive modes.");let{isActive=!0,onPaste,onRelease}=options,handlerRef=useRef7(inputHandler);handlerRef.current=inputHandler;let onPasteRef=useRef7(onPaste);onPasteRef.current=onPaste;let onReleaseRef=useRef7(onRelease);onReleaseRef.current=onRelease,useEffect3(()=>{if(!isActive)return;return rt.on("input",(input,key)=>{if(isModifierOnlyEvent(input,key))return;if(key.eventType==="release"){onReleaseRef.current?.(input,key);return}handlerRef.current(input,key)})},[isActive,rt]),useEffect3(()=>{if(!isActive)return;return rt.on("paste",(text)=>{onPasteRef.current?.(text)})},[isActive,rt])}init_context();import{useContext as useContext8}from"react";var staticResult={exit:()=>{}};function useApp(){let rt=useContext8(RuntimeContext);if(!rt)return staticResult;return{exit:rt.exit,pause:rt.pause,resume:rt.resume}}init_context();import{useContext as useContext9}from"react";function useStdout(){let context=useContext9(StdoutContext);if(!context)throw Error("useStdout must be used within an Silvery application");return{stdout:context.stdout,write:context.write}}init_context();import{useContext as useContext10}from"react";function useStderr(){let context=useContext10(StderrContext);if(!context)return{stderr:process.stderr,write:(data)=>{process.stderr.write(data)}};return{stderr:context.stderr,write:context.write}}init_buffer();init_pipeline2();init_output_phase();var ESC="\x1B",CSI=`${ESC}[`,CURSOR_HIDE=`${CSI}?25l`,CURSOR_SHOW=`${CSI}?25h`,CURSOR_HOME=`${CSI}H`,SYNC_BEGIN=`${CSI}?2026h`,SYNC_END=`${CSI}?2026l`,RESET=`${CSI}0m`,SGR={bold:1,dim:2,italic:3,underline:4,blink:5,inverse:7,hidden:8,strikethrough:9,boldOff:22,italicOff:23,underlineOff:24,blinkOff:25,inverseOff:27,hiddenOff:28,strikethroughOff:29,fgDefault:39,fgBlack:30,fgRed:31,fgGreen:32,fgYellow:33,fgBlue:34,fgMagenta:35,fgCyan:36,fgWhite:37,fgBrightBlack:90,fgBrightRed:91,fgBrightGreen:92,fgBrightYellow:93,fgBrightBlue:94,fgBrightMagenta:95,fgBrightCyan:96,fgBrightWhite:97,bgDefault:49,bgBlack:40,bgRed:41,bgGreen:42,bgYellow:43,bgBlue:44,bgMagenta:45,bgCyan:46,bgWhite:47,bgBrightBlack:100,bgBrightRed:101,bgBrightGreen:102,bgBrightYellow:103,bgBrightBlue:104,bgBrightMagenta:105,bgBrightCyan:106,bgBrightWhite:107};function moveCursor(x,y){return`${CSI}${y+1};${x+1}H`}function cursorUp(n){if(n<=0)return"";if(n===1)return`${CSI}A`;return`${CSI}${n}A`}function cursorDown(n){if(n<=0)return"";if(n===1)return`${CSI}B`;return`${CSI}${n}B`}function cursorRight(n){if(n<=0)return"";if(n===1)return`${CSI}C`;return`${CSI}${n}C`}function cursorLeft(n){if(n<=0)return"";if(n===1)return`${CSI}D`;return`${CSI}${n}D`}function cursorToColumn(x){return`${CSI}${x+1}G`}var CURSOR_SHAPE_CODES={block:{blink:1,steady:2},underline:{blink:3,steady:4},bar:{blink:5,steady:6}};function setCursorStyle(shape,blink=!1){let code=blink?CURSOR_SHAPE_CODES[shape].blink:CURSOR_SHAPE_CODES[shape].steady;return`${CSI}${code} q`}function resetCursorStyle(){return`${CSI}0 q`}function enterAlternateScreen(){return`${CSI}?1049h${CSI}2J${CURSOR_HOME}${CURSOR_HIDE}`}function leaveAlternateScreen(){return`${SYNC_END}${CURSOR_SHOW}${CSI}?1049l`}var KittyFlags={DISAMBIGUATE:1,REPORT_EVENTS:2,REPORT_ALTERNATE:4,REPORT_ALL_KEYS:8,REPORT_TEXT:16};function enableKittyKeyboard2(flags=KittyFlags.DISAMBIGUATE){return`${CSI}>${flags}u`}function queryKittyKeyboard(){return`${CSI}?u`}function disableKittyKeyboard2(){return`${CSI}<u`}var BEL="\x07";function notifyITerm2(message){return`${ESC}]9;${message}${BEL}`}function notifyKitty(message,opts){let params=opts?.title?`;t=t;${opts.title}`:"";return`${ESC}]99;i=1:d=0${params};${message}${ESC}\\`}function notify(stdout,message,opts){let termProgram=process.env.TERM_PROGRAM??"",term2=process.env.TERM??"";if(termProgram==="iTerm.app")stdout.write(notifyITerm2(message));else if(term2==="xterm-kitty")stdout.write(notifyKitty(message,opts));else stdout.write(BEL)}function resetWindowTitle(stdout){stdout.write(`${ESC}]2;${BEL}`)}var ANSI={ESC,CSI,CURSOR_HIDE,CURSOR_SHOW,CURSOR_HOME,SYNC_BEGIN,SYNC_END,RESET,SGR,moveCursor,cursorUp,cursorDown,cursorLeft,cursorRight,cursorToColumn};function copyToClipboard(stdout,text){let base64=Buffer.from(text).toString("base64");stdout.write(`\x1B]52;c;${base64}\x07`)}var KITTY_RESPONSE_RE=/\x1b\[\?(\d+)u/,KITTY_PARTIAL_RE=/\x1b\[\?\d+$/;function createKittyManager(stdin,stdout,opts){let enabled=!1,cancelDetection;function enable(flagBitmask){stdout.write(enableKittyKeyboard2(flagBitmask)),enabled=!0}if(opts){let mode=opts.mode??"auto",flagBitmask=opts.flags??1;if(stdin?.isTTY&&stdout?.isTTY){if(mode==="enabled")enable(flagBitmask);else if(mode==="auto")cancelDetection=initKittyAutoDetection(stdin,stdout,flagBitmask,enable)}}return{get enabled(){return enabled},cleanup(){if(cancelDetection)cancelDetection(),cancelDetection=void 0;if(enabled)stdout.write(disableKittyKeyboard2()),enabled=!1}}}function initKittyAutoDetection(stdin,stdout,flagBitmask,onEnable){let rawChunks=[],cleaned=!1,unmounted=!1;function getBufferAsString(){return Buffer.concat(rawChunks).toString()}let cleanup=()=>{if(cleaned)return;cleaned=!0,clearTimeout(timer),stdin.removeListener("data",onData);let allBytes=Buffer.concat(rawChunks);rawChunks.length=0;let fullString=allBytes.toString(),remaining=fullString.replace(KITTY_RESPONSE_RE,"");if(remaining=remaining.replace(KITTY_PARTIAL_RE,""),remaining.length>0){let protocolPrefix=fullString.slice(0,fullString.indexOf(remaining)),prefixByteLen=Buffer.byteLength(protocolPrefix);stdin.unshift(allBytes.subarray(prefixByteLen))}},onData=(data)=>{if(rawChunks.push(typeof data==="string"?Buffer.from(data):Buffer.from(data)),KITTY_RESPONSE_RE.test(getBufferAsString())){if(cleanup(),!unmounted)onEnable(flagBitmask)}};stdin.on("data",onData);let timer=setTimeout(cleanup,200);return stdout.write(queryKittyKeyboard()),()=>{unmounted=!0,cleanup()}}init_detection();var ESC2="\x1B",CSI2=`${ESC2}[`,RESET2=`${CSI2}0m`;init_text_sizing();function isTerm(value){if(!value||typeof value!=="object"&&typeof value!=="function")return!1;let obj=value;return typeof obj.hasCursor==="function"&&typeof obj.hasInput==="function"&&typeof obj.hasColor==="function"&&typeof obj.write==="function"}function isTermDef(value){if(!value||typeof value!=="object")return!1;return typeof value.hasCursor!=="function"}function resolveTermDef(def){let width=def.width??def.stdout?.columns??80,height=def.height??def.stdout?.rows??24,colors=null;if(def.colors===!0)colors=detectColorLevel(def.stdout);else if(def.colors===!1||def.colors===null)colors=null;else if(def.colors)colors=def.colors;else colors=detectColorLevel(def.stdout);let events=null;if(def.events)events=def.events;else if(def.stdin)events=createInputEvents(def.stdin);return{stdout:def.stdout??null,width,height,colors,events,isStatic:events===null}}function resolveFromTerm(term2){return{stdout:term2.stdout,width:term2.cols??80,height:term2.rows??24,colors:term2.hasColor(),events:createInputEvents(term2.stdin),isStatic:!1}}function detectColorLevel(stdout){if(process.env.NO_COLOR!==void 0)return null;if(process.env.FORCE_COLOR!==void 0){let level=Number.parseInt(process.env.FORCE_COLOR,10);if(level===0)return null;if(level===1)return"basic";if(level===2)return"256";if(level>=3)return"truecolor";return"basic"}if(process.env.COLORTERM==="truecolor"||process.env.COLORTERM==="24bit")return"truecolor";if(!stdout?.isTTY)return null;let term2=process.env.TERM??"";if(term2.includes("256color")||term2.includes("256"))return"256";return"basic"}function createInputEvents(stdin){return{[Symbol.asyncIterator](){let buffer=[],resolveNext=null,done=!1,handleData=(chunk)=>{let data=typeof chunk==="string"?chunk:chunk.toString("utf8");for(let char of data){let event={type:"key",key:char,ctrl:char.charCodeAt(0)<32&&char!=="\r"&&char!==`
|
|
82
|
+
`&&char!=="\t"};if(resolveNext)resolveNext({value:event,done:!1}),resolveNext=null;else buffer.push(event)}},handleEnd=()=>{if(done=!0,resolveNext)resolveNext({value:void 0,done:!0}),resolveNext=null};if(stdin.isTTY&&typeof stdin.setRawMode==="function")stdin.setEncoding("utf8"),stdin.on("data",handleData),stdin.on("end",handleEnd);return{next(){let buffered=buffer.shift();if(buffered)return Promise.resolve({value:buffered,done:!1});if(done)return Promise.resolve({value:void 0,done:!0});return new Promise((resolve)=>{resolveNext=resolve})},return(){return done=!0,stdin.off("data",handleData),stdin.off("end",handleEnd),Promise.resolve({value:void 0,done:!0})}}}}}init_mouse();import{createLogger as createLogger5}from"loggily";function isFocusable(node){if(node.hidden)return!1;let props=node.props;return Boolean(props.focusable)&&props.display!=="none"}function isFocusScope(node){let props=node.props;return Boolean(props.focusScope)}function findFocusableAncestor(node){let current=node;while(current){if(isFocusable(current))return current;current=current.parent}return null}function getTabOrder(root,scope){let result=[],walkRoot=scope??root;function walk(node){if(node.hidden)return;if(node.props.display==="none")return;if(node!==walkRoot&&isFocusScope(node)){if(isFocusable(node))result.push(node);return}if(isFocusable(node))result.push(node);for(let child of node.children)walk(child)}return walk(walkRoot),result}function findByTestID(root,testID){if(root.props.testID===testID)return root;for(let child of root.children){let found=findByTestID(child,testID);if(found)return found}return null}function rectCenter(rect){return{cx:rect.x+rect.width/2,cy:rect.y+rect.height/2}}function isInCone(source,candidate,direction){let dx=candidate.cx-source.cx,dy=candidate.cy-source.cy;switch(direction){case"up":if(dy>=0)return!1;return Math.abs(dx)<=Math.abs(dy);case"down":if(dy<=0)return!1;return Math.abs(dx)<=Math.abs(dy);case"left":if(dx>=0)return!1;return Math.abs(dy)<=Math.abs(dx);case"right":if(dx<=0)return!1;return Math.abs(dy)<=Math.abs(dx)}}function distance(a,b){let dx=a.cx-b.cx,dy=a.cy-b.cy;return Math.sqrt(dx*dx+dy*dy)}function findSpatialTarget(from,direction,candidates,layoutFn){let sourceRect=layoutFn(from);if(!sourceRect)return null;let source=rectCenter(sourceRect),best=null,bestDist=1/0;for(let candidate of candidates){if(candidate===from)continue;let candidateRect=layoutFn(candidate);if(!candidateRect)continue;let target=rectCenter(candidateRect);if(!isInCone(source,target,direction))continue;let dist=distance(source,target);if(dist<bestDist)bestDist=dist,best=candidate}return best}function getExplicitFocusLink(node,direction){let props=node.props,propName=`nextFocus${direction.charAt(0).toUpperCase()}${direction.slice(1)}`,value=props[propName];return typeof value==="string"?value:null}function getAncestorPath(node){let path=[],current=node;while(current)path.push(current),current=current.parent;return path}function pointInRect(x,y,rect){return x>=rect.x&&x<rect.x+rect.width&&y>=rect.y&&y<rect.y+rect.height}var mouseLog=createLogger5("silvery:mouse");function createMouseEvent(type,x,y,target,parsed,keyboardMods){let propagationStopped=!1,defaultPrevented=!1,metaKey=keyboardMods?.super??!1;if(type==="click"||type==="mousedown")mouseLog.debug?.(`createMouseEvent(${type}) metaKey=${metaKey} keyboardMods.super=${keyboardMods?.super}`);return{type,clientX:x,clientY:y,button:parsed.button,altKey:parsed.meta,ctrlKey:parsed.ctrl,metaKey,shiftKey:parsed.shift,target,currentTarget:target,nativeEvent:parsed,get propagationStopped(){return propagationStopped},get defaultPrevented(){return defaultPrevented},stopPropagation(){propagationStopped=!0},preventDefault(){defaultPrevented=!0}}}function createWheelEvent(x,y,target,parsed,keyboardMods){let base=createMouseEvent("wheel",x,y,target,parsed,keyboardMods);return base.deltaY=parsed.delta??0,base.deltaX=0,base}function hitTest(node,x,y){let rect=node.screenRect;if(!rect)return null;if(!pointInRect(x,y,rect))return null;let props=node.props;if(props.pointerEvents==="none")return null;let clips=props.overflow==="hidden"||props.overflow==="scroll";for(let i=node.children.length-1;i>=0;i--){let child=node.children[i];if(clips){if(child.screenRect&&!pointInRect(x,y,rect))continue}let hit=hitTest(child,x,y);if(hit)return hit}if(node.type==="silvery-text")for(let i=node.children.length-1;i>=0;i--){let child=node.children[i];if(child.inlineRects){for(let inlineRect of child.inlineRects)if(pointInRect(x,y,inlineRect))return child}}return node}var EVENT_HANDLER_MAP={click:"onClick",dblclick:"onDoubleClick",mousedown:"onMouseDown",mouseup:"onMouseUp",mousemove:"onMouseMove",mouseenter:"onMouseEnter",mouseleave:"onMouseLeave",wheel:"onWheel"};function dispatchMouseEvent(event){let handlerProp=EVENT_HANDLER_MAP[event.type];if(!handlerProp)return;if(event.type==="mouseenter"||event.type==="mouseleave"){let handler=event.target.props[handlerProp];if(handler){let mutableEvent=event;mutableEvent.currentTarget=event.target,handler(event)}return}let path=getAncestorPath(event.target);for(let node of path){if(event.propagationStopped)break;let handler=node.props[handlerProp];if(handler){let mutableEvent=event;mutableEvent.currentTarget=node,handler(event)}}}function createDoubleClickState(){return{lastClickTime:0,lastClickX:-999,lastClickY:-999,lastClickButton:-1}}var DOUBLE_CLICK_TIME_MS=300,DOUBLE_CLICK_DISTANCE=2;function checkDoubleClick(state,x,y,button,now=Date.now()){let timeDelta=now-state.lastClickTime,dx=Math.abs(x-state.lastClickX),dy=Math.abs(y-state.lastClickY),isDouble=button===state.lastClickButton&&timeDelta<=DOUBLE_CLICK_TIME_MS&&dx<=DOUBLE_CLICK_DISTANCE&&dy<=DOUBLE_CLICK_DISTANCE;if(state.lastClickTime=now,state.lastClickX=x,state.lastClickY=y,state.lastClickButton=button,isDouble)state.lastClickTime=0;return isDouble}function computeEnterLeave(prevPath,nextPath){let prevSet=new Set(prevPath),nextSet=new Set(nextPath),entered=nextPath.filter((n)=>!prevSet.has(n)),left=prevPath.filter((n)=>!nextSet.has(n));return{entered,left}}function createMouseEventProcessor(options){return{doubleClick:createDoubleClickState(),hoverPath:[],mouseDownTarget:null,focusManager:options?.focusManager,keyboardModifiers:{super:!1,hyper:!1,capsLock:!1,numLock:!1}}}function updateKeyboardModifiers(state,key){let isRelease=key.eventType==="release",prevSuper=state.keyboardModifiers.super;if(key.super!==void 0)state.keyboardModifiers.super=isRelease?!1:key.super;if(key.hyper!==void 0)state.keyboardModifiers.hyper=isRelease?!1:key.hyper;if(key.capsLock!==void 0)state.keyboardModifiers.capsLock=key.capsLock;if(key.numLock!==void 0)state.keyboardModifiers.numLock=key.numLock;if(state.keyboardModifiers.super!==prevSuper)mouseLog.debug?.(`keyboardModifiers.super: ${prevSuper} → ${state.keyboardModifiers.super} (key.super=${key.super}, eventType=${key.eventType})`)}function processMouseEvent(state,parsed,root){let{x,y,action}=parsed,target=hitTest(root,x,y);if(action==="move"){let nodeType=target?.type??"null",nodeId=target?target.props.id??"":"",enterAncestor="";if(target){let n=target;while(n){if("onMouseEnter"in n.props){enterAncestor=`${n.type}#${n.props.id??""}`;break}n=n.parent}}let newPath=target?getAncestorPath(target):[],{entered}=computeEnterLeave(state.hoverPath,newPath);mouseLog.debug?.(`move x=${x} y=${y} target=${nodeType}#${nodeId} enterAncestor=${enterAncestor||"none"} entered=${entered.length} prevPath=${state.hoverPath.length}`)}if(!target)return!1;let defaultPrevented=!1;if(action==="down"){if(state.mouseDownTarget=target,state.focusManager){let focusable=findFocusableAncestor(target);if(focusable)state.focusManager.focus(focusable,"mouse")}let event=createMouseEvent("mousedown",x,y,target,parsed,state.keyboardModifiers);dispatchMouseEvent(event)}else if(action==="up"){let event=createMouseEvent("mouseup",x,y,target,parsed,state.keyboardModifiers);if(dispatchMouseEvent(event),state.mouseDownTarget){let clickEvent=createMouseEvent("click",x,y,target,parsed,state.keyboardModifiers);if(dispatchMouseEvent(clickEvent),clickEvent.defaultPrevented)defaultPrevented=!0;if(checkDoubleClick(state.doubleClick,x,y,parsed.button)){let dblEvent=createMouseEvent("dblclick",x,y,target,parsed,state.keyboardModifiers);if(dispatchMouseEvent(dblEvent),dblEvent.defaultPrevented)defaultPrevented=!0}}state.mouseDownTarget=null}else if(action==="move"){let event=createMouseEvent("mousemove",x,y,target,parsed,state.keyboardModifiers);dispatchMouseEvent(event);let newPath=getAncestorPath(target),{entered,left}=computeEnterLeave(state.hoverPath,newPath);for(let node of left){let leaveEvent=createMouseEvent("mouseleave",x,y,node,parsed,state.keyboardModifiers);dispatchMouseEvent(leaveEvent)}for(let node of entered.reverse()){let enterEvent=createMouseEvent("mouseenter",x,y,node,parsed,state.keyboardModifiers);dispatchMouseEvent(enterEvent)}state.hoverPath=newPath}else if(action==="wheel"){let event=createWheelEvent(x,y,target,parsed,state.keyboardModifiers);if(dispatchMouseEvent(event),event.defaultPrevented)defaultPrevented=!0}return defaultPrevented}init_unicode();init_unicode();function isTTY(stdout=process.stdout){if(!stdout.isTTY)return!1;if(process.env.TERM==="dumb")return!1;if(process.env.CI||process.env.GITHUB_ACTIONS||process.env.GITLAB_CI||process.env.JENKINS_URL||process.env.BUILDKITE||process.env.CIRCLECI||process.env.TRAVIS)return!1;return!0}function resolveNonTTYMode(options={}){let{mode="auto",stdout=process.stdout}=options;if(mode!=="auto")return mode;return isTTY(stdout)?"tty":"line-by-line"}function toLineByLineOutput(content,prevLineCount){let lines=content.split(`
|
|
83
|
+
`),output="";if(prevLineCount>0){if(output+="\r",prevLineCount>1)output+=`\x1B[${prevLineCount-1}A`}for(let i=0;i<lines.length;i++){if(i>0)output+=`
|
|
84
|
+
`;output+=lines[i],output+="\x1B[K"}let extraLines=prevLineCount-lines.length;if(extraLines>0){for(let i=0;i<extraLines;i++)output+=`
|
|
85
|
+
\x1B[K`;output+=`\x1B[${extraLines}A`}return output}function toPlainOutput(content,_prevLineCount){let lines=stripAnsi3(content).split(`
|
|
86
|
+
`).map((line)=>line.trimEnd());while(lines.length>0&&lines[lines.length-1]==="")lines.pop();return lines.join(`
|
|
87
|
+
`)}function createOutputTransformer(mode){switch(mode){case"tty":return(content)=>content;case"line-by-line":return toLineByLineOutput;case"static":return()=>"";case"plain":return toPlainOutput}}function countLines(str){if(!str)return 0;return str.split(`
|
|
88
|
+
`).length}var inspectorOutput=process.stderr;init_unicode();init_unicode();init_unicode();init_output_phase();init_errors();init_ansi();init_ansi();init_ansi();init_ansi();init_ansi();init_ansi();init_ansi();init_ansi();init_unicode();init_unicode();init_unicode();function useFocus(opts){let{isActive=!0,autoFocus=!1,id:customId}=opts??{},ctx=useContext11(InkFocusContext),id=useMemo2(()=>customId??Math.random().toString().slice(2,7),[customId]);return useEffect4(()=>{return ctx.add(id,{autoFocus}),()=>{ctx.remove(id)}},[id,autoFocus]),useEffect4(()=>{if(isActive)ctx.activate(id);else ctx.deactivate(id)},[isActive,id]),{isFocused:Boolean(id)&&ctx.activeId===id,focus:ctx.focus}}function useFocusManager(){let ctx=useContext11(InkFocusContext);return{enableFocus:ctx.enableFocus,disableFocus:ctx.disableFocus,focusNext:ctx.focusNext,focusPrevious:ctx.focusPrevious,focus:ctx.focus,activeId:ctx.activeId}}function useStdin(){let ctx=useContext11(InkStdinCtx);return{stdin:ctx.stdin,setRawMode:ctx.setRawMode,isRawModeSupported:ctx.isRawModeSupported}}function usePaste(handler,options={}){let ctx=useContext11(InkStdinCtx),rt=useContext11(RuntimeContext);useEffect4(()=>{if(options.isActive===!1)return;return ctx.setRawMode(!0),ctx.setBracketedPasteMode(!0),()=>{ctx.setRawMode(!1),ctx.setBracketedPasteMode(!1)}},[options.isActive,ctx.setRawMode,ctx.setBracketedPasteMode]),useEffect4(()=>{if(options.isActive===!1)return;if(!rt)return;return rt.on("paste",(text)=>{handler(text)})},[options.isActive,rt,handler]),useEffect4(()=>{if(options.isActive===!1)return;let handlePaste=(text)=>{handler(text)};return ctx.internal_eventEmitter.on("paste",handlePaste),()=>{ctx.internal_eventEmitter.removeListener("paste",handlePaste)}},[options.isActive,ctx.internal_eventEmitter,handler])}function useCursor(){let store=useContext11(InkCursorStoreCtx),pendingRef=useRef8(void 0);return useLayoutEffect5(()=>{if(store&&pendingRef.current!==void 0){let pos=pendingRef.current;if(pos)store.setCursorState({x:pos.x,y:pos.y,visible:!0});else store.setCursorState(null)}return()=>{store?.setCursorState(null)}}),{setCursorPosition:useCallback4((position)=>{if(!store)return;pendingRef.current=position??null},[store])}}function resolveAgNode(refValue){if(!refValue)return null;if(typeof refValue.getNode==="function")return refValue.getNode();if(refValue.layoutNode!==void 0||refValue.contentRect!==void 0)return refValue;return null}var ZERO_METRICS={width:0,height:0,left:0,top:0,hasMeasured:!1};function metricsEqual(a,b){return a.width===b.width&&a.height===b.height&&a.left===b.left&&a.top===b.top&&a.hasMeasured===b.hasMeasured}function useBoxMetrics(ref){let[metrics,setMetrics]=useState3(ZERO_METRICS),prevNodeRef=useRef8(null),lastMetricsRef=useRef8(ZERO_METRICS),updateMetrics=useCallback4((next)=>{if(!metricsEqual(lastMetricsRef.current,next))lastMetricsRef.current=next,setMetrics(next)},[]);useEffect4(()=>{let node=resolveAgNode(ref.current);if(node!==prevNodeRef.current){if(prevNodeRef.current=node,!node){updateMetrics(ZERO_METRICS);return}}if(!node)return;let onLayoutChange=()=>{let rect=node.contentRect;if(rect)updateMetrics({width:rect.width,height:rect.height,left:rect.x,top:rect.y,hasMeasured:!0})};if(node.contentRect)onLayoutChange();return node.layoutSubscribers.add(onLayoutChange),()=>{node.layoutSubscribers.delete(onLayoutChange)}});let stdout=useContext11(StdoutContext)?.stdout??process.stdout;return useEffect4(()=>{let onResize=()=>{let node=resolveAgNode(ref.current);if(node?.contentRect)updateMetrics({width:node.contentRect.width,height:node.contentRect.height,left:node.contentRect.x,top:node.contentRect.y,hasMeasured:!0})};return stdout.on("resize",onResize),()=>{stdout.off("resize",onResize)}},[stdout,ref,updateMetrics]),metrics}var kittyFlags={disambiguateEscapeCodes:KittyFlags.DISAMBIGUATE,reportEventTypes:KittyFlags.REPORT_EVENTS,reportAlternateKeys:KittyFlags.REPORT_ALTERNATE,reportAllKeysAsEscapeCodes:KittyFlags.REPORT_ALL_KEYS,reportAssociatedText:KittyFlags.REPORT_TEXT};function resolveFlags(flags){let result=0;for(let flag of flags)result|=kittyFlags[flag];return result}var kittyModifiers={shift:1,alt:2,ctrl:4,super:8,hyper:16,meta:32,capsLock:64,numLock:128};function resolveKittyManagerOptions(opts){if(!opts)return;return{mode:opts.mode,flags:opts.flags?resolveFlags(opts.flags):void 0}}init_context();init_buffer();init_unicode();init_ansi();import React11,{useContext as useContext12}from"react";import*as fs from"node:fs";import React7,{Component}from"react";function parseStackLine(line){let trimmed=line.trim();if(!trimmed.startsWith("at "))return null;let rest=trimmed.slice(3),match1=rest.match(/^(.+?)\s+\((.+?):(\d+):(\d+)\)$/);if(match1)return{function:match1[1],file:match1[2],line:Number(match1[3]),column:Number(match1[4])};let match2=rest.match(/^(.+?):(\d+):(\d+)$/);if(match2)return{file:match2[1],line:Number(match2[2]),column:Number(match2[3])};return null}function cleanupPath(filePath){if(!filePath)return filePath;let p=filePath,cwdPath=process.cwd();p=p.replace(/^file:\/\//,"");for(let prefix of[cwdPath,`/private${cwdPath}`])if(p.startsWith(`${prefix}/`)){p=p.slice(prefix.length+1);break}return p}function getCodeExcerpt(filePath,line){try{if(!fs.existsSync(filePath))return null;let lines=fs.readFileSync(filePath,"utf8").split(`
|
|
89
|
+
`),start=Math.max(0,line-4),end=Math.min(lines.length,line+3),result=[];for(let i=start;i<end;i++)result.push({line:i+1,value:(lines[i]??"").replace(/\t/g," ")});return result}catch{return null}}class SilveryErrorBoundary extends Component{state={error:null};static getDerivedStateFromError(error){return{error}}componentDidCatch(error){this.props.onError?.(error)}render(){if(this.state.error){let err=this.state.error,stack=err.stack?err.stack.split(`
|
|
90
|
+
`).slice(1):[],origin=stack.length>0?parseStackLine(stack[0]):null,filePath=cleanupPath(origin?.file),excerpt=null,lineWidth=0;if(filePath&&origin?.line){if(excerpt=getCodeExcerpt(filePath,origin.line),excerpt)for(let{line}of excerpt)lineWidth=Math.max(lineWidth,String(line).length)}let children=[];if(children.push(React7.createElement("silvery-box",{key:"header"},React7.createElement("silvery-text",{backgroundColor:"red",color:"white"}," ERROR "),React7.createElement("silvery-text",{},` ${err.message}`))),filePath&&origin)children.push(React7.createElement("silvery-box",{key:"location",marginTop:1},React7.createElement("silvery-text",{dimColor:!0},`${filePath}:${origin.line}:${origin.column}`)));if(excerpt&&origin){let codeLines=excerpt.map(({line,value})=>{let lineNum=String(line).padStart(lineWidth," ");return React7.createElement("silvery-box",{key:`code-${line}`},React7.createElement("silvery-text",{dimColor:line!==origin.line,backgroundColor:line===origin.line?"red":void 0,color:line===origin.line?"white":void 0},`${lineNum}:`),React7.createElement("silvery-text",{backgroundColor:line===origin.line?"red":void 0,color:line===origin.line?"white":void 0},` ${value}`))});children.push(React7.createElement("silvery-box",{key:"code",marginTop:1,flexDirection:"column"},...codeLines))}if(stack.length>0){let stackLines=stack.map((line,i)=>{let parsed=parseStackLine(line);if(!parsed)return React7.createElement("silvery-box",{key:`stack-${i}`},React7.createElement("silvery-text",{dimColor:!0},`- ${line.trim()}`));let cleanFile=cleanupPath(parsed.file);return React7.createElement("silvery-box",{key:`stack-${i}`},React7.createElement("silvery-text",{dimColor:!0},"- "),React7.createElement("silvery-text",{dimColor:!0,bold:!0},parsed.function??""),React7.createElement("silvery-text",{dimColor:!0,color:"gray"},` (${cleanFile??""}:${parsed.line}:${parsed.column})`))});children.push(React7.createElement("silvery-box",{key:"stack",marginTop:1,flexDirection:"column"},...stackLines))}return React7.createElement("silvery-box",{flexDirection:"column",padding:1},...children)}return this.props.children}}import React8 from"react";function renderScreenReaderOutput(node){return walkNode(node,"row")}function walkNode(node,parentDirection){if(node==null||typeof node==="boolean")return"";if(typeof node==="string"||typeof node==="number")return String(node);if(Array.isArray(node)){let parts=node.map((child)=>walkNode(child,parentDirection)).filter((s)=>s!==""),sep=parentDirection==="column"?`
|
|
91
|
+
`:" ";return parts.join(sep)}if(React8.isValidElement(node)){let props=node.props;if(props["aria-hidden"])return"";if(props.display==="none")return"";let direction=props.flexDirection==="column"?"column":"row",content;if(props["aria-label"]!=null)content=String(props["aria-label"]);else{let children=props.children;content=walkChildren(children,direction)}let statePrefix=buildStatePrefix(props["aria-state"]),role=props["aria-role"];if(role&&statePrefix)return`${role}: ${statePrefix}${content}`;if(role)return`${role}: ${content}`;if(statePrefix)return`${statePrefix}${content}`;return content}return""}function walkChildren(children,direction){if(children==null)return"";if(!Array.isArray(children)){let childArray=React8.Children.toArray(children);if(childArray.length<=1)return walkNode(children,direction);let parts2=childArray.map((child)=>walkNode(child,direction)).filter((s)=>s!==""),sep2=direction==="column"?`
|
|
92
|
+
`:" ";return parts2.join(sep2)}let parts=children.map((child)=>walkNode(child,direction)).filter((s)=>s!==""),sep=direction==="column"?`
|
|
93
|
+
`:" ";return parts.join(sep)}function buildStatePrefix(state){if(!state)return"";let activeStates=[],stateNames=["busy","checked","disabled","expanded","multiline","multiselectable","readonly","required","selected"];for(let name of stateNames)if(state[name])activeStates.push(`(${name})`);if(activeStates.length===0)return"";return activeStates.join(" ")+" "}init_ansi();init_context();import process2 from"node:process";import{createLogger as createLogger7}from"loggily";import{useCallback as useCallback5,useEffect as useEffect5,useMemo as useMemo3,useRef as useRef9}from"react";function createFocusManager(options){let onFocusChange=options?.onFocusChange,activeElement=null,activeId=null,previousElement=null,previousId=null,focusOrigin=null,scopeStack=[],scopeMemory={},activeScopeId=null,listeners=new Set,snapshot=null,notifyCount=0;function notify2(){snapshot=null,notifyCount++;for(let listener of listeners)listener()}function getTestID(node){let props=node.props;return typeof props.testID==="string"?props.testID:null}function focus(node,origin="programmatic"){if(activeElement===node){if(focusOrigin!==origin)focusOrigin=origin,notify2();return}let oldElement=activeElement;if(previousElement=activeElement,previousId=activeId,activeElement=node,activeId=getTestID(node),focusOrigin=origin,activeId&&scopeStack.length>0)scopeMemory[scopeStack[scopeStack.length-1]]=activeId;notify2(),onFocusChange?.(oldElement,node,origin)}function focusById(id,root,origin="programmatic"){let node=findByTestID(root,id);if(node){let focusable=findFocusableAncestor(node);if(focusable){focus(focusable,origin);return}}let oldElement=activeElement;previousElement=activeElement,previousId=activeId,activeElement=null,activeId=id,focusOrigin=origin,notify2(),onFocusChange?.(oldElement,null,origin)}function blur(){if(!activeElement&&!activeId)return;let oldElement=activeElement;previousElement=activeElement,previousId=activeId,activeElement=null,activeId=null,focusOrigin=null,notify2(),onFocusChange?.(oldElement,null,null)}function subtreeContains(subtreeRoot,target){if(subtreeRoot===target)return!0;for(let child of subtreeRoot.children)if(subtreeContains(child,target))return!0;return!1}function handleSubtreeRemoved(removedRoot){let changed=!1;if(activeElement&&subtreeContains(removedRoot,activeElement)){let oldElement=activeElement;previousElement=activeElement,previousId=activeId,activeElement=null,activeId=null,focusOrigin=null,changed=!0,onFocusChange?.(oldElement,null,null)}if(previousElement&&subtreeContains(removedRoot,previousElement))previousElement=null,previousId=null,changed=!0;if(changed)notify2()}function enterScope(scopeId){scopeStack.push(scopeId),notify2()}function exitScope(){if(scopeStack.pop()===void 0)return;notify2()}function activateScope(scopeId,root){if(activeScopeId&&activeId)scopeMemory[activeScopeId]=activeId;activeScopeId=scopeId;let countBefore=notifyCount,remembered=scopeMemory[scopeId];if(remembered)focusById(remembered,root,"programmatic");else{let scopeNode=findByTestID(root,scopeId);if(scopeNode){let order=getTabOrder(root,scopeNode);if(order.length>0)focus(order[0],"programmatic")}}if(notifyCount===countBefore)notify2()}function getFocusPath(root){if(!activeElement)return[];let path=[],current=activeElement;while(current&¤t!==root.parent){let id=getTestID(current);if(id)path.push(id);current=current.parent}return path}function hasFocusWithin(root,testID){if(!activeElement)return!1;let target=findByTestID(root,testID);if(!target)return!1;let current=activeElement;while(current){if(current===target)return!0;current=current.parent}return!1}function resolveScope(root,explicitScope){if(explicitScope)return explicitScope;if(scopeStack.length>0){let scopeId=scopeStack[scopeStack.length-1],scopeNode=findByTestID(root,scopeId);if(scopeNode)return scopeNode}return}function focusNext(root,scope){let effectiveScope=resolveScope(root,scope),order=getTabOrder(root,effectiveScope);if(order.length===0)return;if(!activeElement){focus(order[0],"keyboard");return}let currentIndex=order.indexOf(activeElement),nextIndex=currentIndex===-1?0:(currentIndex+1)%order.length;focus(order[nextIndex],"keyboard")}function focusPrev(root,scope){let effectiveScope=resolveScope(root,scope),order=getTabOrder(root,effectiveScope);if(order.length===0)return;if(!activeElement){focus(order[order.length-1],"keyboard");return}let currentIndex=order.indexOf(activeElement),prevIndex=currentIndex<=0?order.length-1:currentIndex-1;focus(order[prevIndex],"keyboard")}function focusDirection(root,direction,layoutFn){if(!activeElement)return;let explicitTarget=getExplicitFocusLink(activeElement,direction);if(explicitTarget){focusById(explicitTarget,root,"keyboard");return}let candidates=getTabOrder(root),target=findSpatialTarget(activeElement,direction,candidates,layoutFn??((node)=>node.screenRect));if(target)focus(target,"keyboard")}function subscribe(listener){return listeners.add(listener),()=>{listeners.delete(listener)}}function getSnapshot(){if(!snapshot)snapshot={activeId,previousId,focusOrigin,scopeStack:[...scopeStack],activeScopeId};return snapshot}return{get activeElement(){return activeElement},get activeId(){return activeId},get previousElement(){return previousElement},get previousId(){return previousId},get focusOrigin(){return focusOrigin},get scopeStack(){return[...scopeStack]},get scopeMemory(){return scopeMemory},get activeScopeId(){return activeScopeId},focus,focusById,blur,handleSubtreeRemoved,enterScope,exitScope,activateScope,getFocusPath,hasFocusWithin,focusNext,focusPrev,focusDirection,subscribe,getSnapshot}}init_keys();init_reconciler();init_render_string();init_buffer();import{appendFileSync}from"node:fs";import{createLogger as createLogger6}from"loggily";function findNodeAtPosition(root,x,y){let result=null;function visit(node){let rect=node.screenRect;if(!rect)return;if(x>=rect.x&&x<rect.x+rect.width&&y>=rect.y&&y<rect.y+rect.height){result=node;for(let child of node.children)visit(child)}}return visit(root),result}function findAllContainingNodes(root,x,y){let result=[];function visit(node){let rect=node.screenRect;if(!rect)return;if(x>=rect.x&&x<rect.x+rect.width&&y>=rect.y&&y<rect.y+rect.height){result.push(node);for(let child of node.children)visit(child)}}return visit(root),result}function getNodePath(node){let parts=[],current=node;while(current){let props=current.props;if(props.id)parts.unshift(`#${props.id}`);else if(current.parent){let idx=current.parent.children.indexOf(current);parts.unshift(`[${idx}]`)}else parts.unshift("root");current=current.parent}return parts.join(" > ")}function rectChanged(a,b){if(a===b)return!1;if(!a||!b)return!0;return a.x!==b.x||a.y!==b.y||a.width!==b.width||a.height!==b.height}function getNodeDebugInfo(node){let props=node.props,childIndex=null;if(node.parent)childIndex=node.parent.children.indexOf(node);return{id:props.id,type:node.type,path:getNodePath(node),childIndex,dirtyFlags:{contentDirty:node.contentDirty,stylePropsDirty:node.stylePropsDirty,subtreeDirty:node.subtreeDirty,childrenDirty:node.childrenDirty,layoutDirty:node.layoutDirty},layout:{prevLayout:node.prevLayout,contentRect:node.contentRect,screenRect:node.screenRect,layoutChanged:rectChanged(node.prevLayout,node.contentRect)},scroll:node.scrollState?{offset:node.scrollState.offset,prevOffset:node.scrollState.prevOffset,offsetChanged:node.scrollState.offset!==node.scrollState.prevOffset,contentHeight:node.scrollState.contentHeight,viewportHeight:node.scrollState.viewportHeight,hiddenAbove:node.scrollState.hiddenAbove,hiddenBelow:node.scrollState.hiddenBelow,firstVisibleChild:node.scrollState.firstVisibleChild,lastVisibleChild:node.scrollState.lastVisibleChild}:void 0,backgroundColor:props.backgroundColor,childCount:node.children.length,hidden:node.hidden??!1}}function findScrollAncestors(node){let result=[],current=node.parent;while(current){if(current.scrollState)result.push(current);current=current.parent}return result}function analyzeFastPath(node,scrollAncestors){let analysis=[];if(!node)return analysis.push("⚠ No node found at mismatch position - possible virtualization issue"),analysis;let flags=node;if(!flags.contentDirty&&!flags.stylePropsDirty&&!flags.subtreeDirty&&!flags.childrenDirty&&!flags.layoutDirty)analysis.push("⚠ ALL DIRTY FLAGS FALSE - fast-path likely skipped this node");let scrollParent=scrollAncestors[0];if(scrollParent?.scrollState){let ss=scrollParent.scrollState,childIndex=node.parent?node.parent.children.indexOf(node):-1,inVisibleRange=childIndex>=ss.firstVisibleChild&&childIndex<=ss.lastVisibleChild;if(!inVisibleRange&&childIndex>=0)analysis.push(`⚠ Node index ${childIndex} is OUTSIDE visible range [${ss.firstVisibleChild}..${ss.lastVisibleChild}]`),analysis.push(" → Node should have been skipped, but mismatch suggests it should render");else if(inVisibleRange)analysis.push(`✓ Node index ${childIndex} is in visible range [${ss.firstVisibleChild}..${ss.lastVisibleChild}]`);if(ss.offset===ss.prevOffset)analysis.push("✓ Scroll offset unchanged (fast-path enabled for children)");else analysis.push(`⚠ Scroll offset CHANGED: ${ss.prevOffset} → ${ss.offset}`);if(ss.firstVisibleChild!==0||ss.lastVisibleChild!==scrollParent.children.length-1)analysis.push(` Visible range is partial: [${ss.firstVisibleChild}..${ss.lastVisibleChild}] of ${scrollParent.children.length} children`),analysis.push(" → If visible range changed, newly visible children need rendering")}if(!rectChanged(node.prevLayout,node.contentRect)&&node.prevLayout)analysis.push("✓ Layout unchanged (prevLayout matches contentRect)");else if(!node.prevLayout)analysis.push("⚠ prevLayout is NULL - node may never have been rendered before");else analysis.push("⚠ Layout CHANGED but node still skipped - dirty flag not set?");if(node.parent&&node.parent.children.length>1){let siblingMoved=!1;for(let sibling of node.parent.children)if(sibling!==node&&sibling.contentRect&&sibling.prevLayout){if(sibling.contentRect.x!==sibling.prevLayout.x||sibling.contentRect.y!==sibling.prevLayout.y){siblingMoved=!0;break}}if(siblingMoved)analysis.push("⚠ SIBLING POSITION CHANGED - parent should have detected this")}if(node.hidden)analysis.push("⚠ Node is HIDDEN (Suspense) - should not be rendered");return analysis}function buildMismatchContext(root,x,y,incrementalCell,freshCell,renderNum){let innermost=findNodeAtPosition(root,x,y),containing=findAllContainingNodes(root,x,y),scrollAncestorNodes=innermost?findScrollAncestors(innermost):[];return{position:{x,y},cells:{incremental:incrementalCell,fresh:freshCell},renderNum,node:innermost?getNodeDebugInfo(innermost):null,scrollAncestors:scrollAncestorNodes.map(getNodeDebugInfo),containingNodes:containing.map(getNodeDebugInfo),fastPathAnalysis:analyzeFastPath(innermost,scrollAncestorNodes)}}function formatMismatchContext(ctx,contentPhaseStats){let lines=[];lines.push(`SILVERY_STRICT: MISMATCH at (${ctx.position.x}, ${ctx.position.y}) on render #${ctx.renderNum}`),lines.push("");let{incremental,fresh}=ctx.cells;if(lines.push("CELL VALUES:"),lines.push(` incremental: char=${JSON.stringify(incremental.char)} fg=${JSON.stringify(incremental.fg)} bg=${JSON.stringify(incremental.bg)} attrs=${JSON.stringify(incremental.attrs)}`),lines.push(` fresh: char=${JSON.stringify(fresh.char)} fg=${JSON.stringify(fresh.fg)} bg=${JSON.stringify(fresh.bg)} attrs=${JSON.stringify(fresh.attrs)}`),lines.push(""),ctx.node){if(lines.push("INNERMOST NODE:"),lines.push(` path: ${ctx.node.path}`),lines.push(` type: ${ctx.node.type}`),ctx.node.backgroundColor)lines.push(` backgroundColor: ${ctx.node.backgroundColor}`);lines.push("");let flags=ctx.node.dirtyFlags,activeFlags=Object.entries(flags).filter(([,v])=>v).map(([k])=>k);if(lines.push("DIRTY FLAGS:"),activeFlags.length>0)lines.push(` active: ${activeFlags.join(", ")}`);else lines.push(" active: (none - node was clean)");lines.push(` all: contentDirty=${flags.contentDirty} stylePropsDirty=${flags.stylePropsDirty} subtreeDirty=${flags.subtreeDirty} childrenDirty=${flags.childrenDirty} layoutDirty=${flags.layoutDirty}`),lines.push("");let{layout}=ctx.node;if(lines.push("LAYOUT:"),layout.layoutChanged)lines.push(" ⚠ LAYOUT CHANGED:"),lines.push(` prevLayout: ${formatRect(layout.prevLayout)}`),lines.push(` contentRect: ${formatRect(layout.contentRect)}`);else lines.push(` contentRect: ${formatRect(layout.contentRect)}`);if(lines.push(` screenRect: ${formatRect(layout.screenRect)}`),lines.push(""),ctx.node.scroll)lines.push("SCROLL STATE (this node):"),formatScrollState(lines,ctx.node.scroll),lines.push("")}else lines.push("INNERMOST NODE: (none found at this position)"),lines.push("");if(ctx.scrollAncestors.length>0){lines.push("SCROLL ANCESTORS:");for(let ancestor of ctx.scrollAncestors)if(lines.push(` ${ancestor.path}:`),ancestor.scroll)formatScrollState(lines,ancestor.scroll," ");lines.push("")}if(ctx.containingNodes.length>1){lines.push("ALL CONTAINING NODES (outermost to innermost):");for(let node of ctx.containingNodes){let flags=Object.entries(node.dirtyFlags).filter(([,v])=>v).map(([k])=>k.replace("Dirty","")).join(","),flagStr=flags?` [${flags}]`:" [clean]",bgStr=node.backgroundColor?` bg=${node.backgroundColor}`:"",childStr=node.childIndex!==null?` child[${node.childIndex}]`:"";lines.push(` ${node.path}${flagStr}${bgStr}${childStr}`)}lines.push("")}if(ctx.fastPathAnalysis.length>0){lines.push("FAST-PATH ANALYSIS:");for(let line of ctx.fastPathAnalysis)lines.push(` ${line}`);lines.push("")}if(contentPhaseStats){let s=contentPhaseStats;lines.push("CONTENT PHASE STATS:"),lines.push(` nodesVisited: ${s.nodesVisited} nodesRendered: ${s.nodesRendered} nodesSkipped: ${s.nodesSkipped}`),lines.push(` textNodes: ${s.textNodes} boxNodes: ${s.boxNodes} clearOps: ${s.clearOps}`);let flagLines=[];if(s.noPrevBuffer)flagLines.push(`noPrevBuffer=${s.noPrevBuffer}`);if(s.flagContentDirty)flagLines.push(`contentDirty=${s.flagContentDirty}`);if(s.flagStylePropsDirty)flagLines.push(`stylePropsDirty=${s.flagStylePropsDirty}`);if(s.flagLayoutChanged)flagLines.push(`layoutChanged=${s.flagLayoutChanged}`);if(s.flagSubtreeDirty)flagLines.push(`subtreeDirty=${s.flagSubtreeDirty}`);if(s.flagChildrenDirty)flagLines.push(`childrenDirty=${s.flagChildrenDirty}`);if(s.flagChildPositionChanged)flagLines.push(`childPositionChanged=${s.flagChildPositionChanged}`);if(flagLines.length>0)lines.push(` render reasons: ${flagLines.join(", ")}`);if(s.scrollContainerCount>0){if(lines.push(` scrollContainers: ${s.scrollContainerCount} viewportCleared: ${s.scrollViewportCleared}`),s.scrollClearReason)lines.push(` scrollClearReason: ${s.scrollClearReason}`)}if(s.normalChildrenRepaint>0){if(lines.push(` normalChildrenRepaint: ${s.normalChildrenRepaint}`),s.normalRepaintReason)lines.push(` normalRepaintReason: ${s.normalRepaintReason}`)}if(s.cascadeMinDepth<999){if(lines.push(` cascadeMinDepth: ${s.cascadeMinDepth}`),s.cascadeNodes)lines.push(` cascadeNodes: ${s.cascadeNodes}`)}lines.push("")}return lines.join(`
|
|
94
|
+
`)}function formatRect(rect){if(!rect)return"(null)";return`{x:${rect.x}, y:${rect.y}, w:${rect.width}, h:${rect.height}}`}function formatScrollState(lines,scroll,indent=" "){if(scroll.offsetChanged)lines.push(`${indent}⚠ SCROLL CHANGED: offset ${scroll.prevOffset} → ${scroll.offset}`);else lines.push(`${indent}offset: ${scroll.offset}`);lines.push(`${indent}viewport: ${scroll.viewportHeight}/${scroll.contentHeight} (hidden: ▲${scroll.hiddenAbove} ▼${scroll.hiddenBelow})`),lines.push(`${indent}visibleRange: [${scroll.firstVisibleChild}..${scroll.lastVisibleChild}]`)}init_pipeline2();init_errors();init_errors();var log3=createLogger6("silvery:scheduler"),SYNC_UPDATE_ENABLED=process.env.SILVERY_SYNC_UPDATE==="1"||process.env.SILVERY_SYNC_UPDATE==="true";class RenderScheduler{stdout;root;debugMode;minFrameTime;slowFrameThreshold;mode;pipelineConfig;getCursorState;nonTTYMode;outputTransformer;log;prevBuffer=null;prevLineCount=0;staticOutput="";renderScheduled=!1;lastRenderTime=0;frameTimeout=null;resizeCleanup=null;stats={renderCount:0,skippedCount:0,lastRenderTime:0,avgRenderTime:0};disposed=!1;paused=!1;pendingWhilePaused=!1;scrollbackOffset=0;constructor(options){if(this.stdout=options.stdout,this.root=options.root,this.debugMode=options.debug??!1,this.minFrameTime=options.minFrameTime??16,this.slowFrameThreshold=options.slowFrameThreshold??50,this.mode=options.mode??"fullscreen",this.pipelineConfig=options.pipelineConfig,this.getCursorState=options.cursorAccessors?.getCursorState??getCursorState,this.log=createLogger6("silvery:scheduler"),this.nonTTYMode=resolveNonTTYMode({mode:options.nonTTYMode,stdout:this.stdout}),this.outputTransformer=createOutputTransformer(this.nonTTYMode),log3.debug?.(`non-TTY mode resolved to: ${this.nonTTYMode}`),this.nonTTYMode==="tty")this.setupResizeListener()}getNonTTYMode(){return this.nonTTYMode}scheduleRender(){if(this.disposed)return;if(this.paused){this.pendingWhilePaused=!0;return}if(this.renderScheduled){this.stats.skippedCount++,log3.debug?.(`render skipped (batched), total: ${this.stats.skippedCount}`);return}this.renderScheduled=!0,log3.debug?.("render scheduled"),queueMicrotask(()=>{if(this.renderScheduled=!1,this.disposed)return;let timeSinceLastRender=Date.now()-this.lastRenderTime;if(timeSinceLastRender<this.minFrameTime)log3.debug?.(`frame limited, delay: ${this.minFrameTime-timeSinceLastRender}ms`),this.scheduleNextFrame(this.minFrameTime-timeSinceLastRender);else this.executeRender()})}forceRender(){if(this.disposed)return;if(this.paused){this.pendingWhilePaused=!0;return}if(this.renderScheduled=!1,this.frameTimeout)clearTimeout(this.frameTimeout),this.frameTimeout=null;this.executeRender()}getStats(){return{...this.stats}}addScrollbackLines(lines){if(this.mode!=="inline"||lines<=0)return;this.scrollbackOffset+=lines}notify(message,opts){if(this.disposed)return;notify(this.stdout,message,opts)}copyToClipboard(text){if(this.disposed)return;copyToClipboard(this.stdout,text)}pause(){if(this.disposed||this.paused)return;this.paused=!0,this.pendingWhilePaused=!1,log3.debug?.("scheduler paused")}resume(){if(this.disposed||!this.paused)return;if(this.paused=!1,log3.debug?.("scheduler resumed"),this.prevBuffer=null,this.pendingWhilePaused)this.pendingWhilePaused=!1,this.executeRender()}isPaused(){return this.paused}clear(){if(this.disposed)return;this.stdout.write("\x1B[2J\x1B[H\x1B[?25l"),this.prevBuffer=null}[Symbol.dispose](){this.dispose()}dispose(){if(this.disposed)return;if(log3.info?.(`dispose: renders=${this.stats.renderCount}, skipped=${this.stats.skippedCount}, avg=${Math.round(this.stats.avgRenderTime)}ms`),this.disposed=!0,this.renderScheduled=!1,this.frameTimeout)clearTimeout(this.frameTimeout),this.frameTimeout=null;if(this.resizeCleanup)this.resizeCleanup(),this.resizeCleanup=null;if(this.nonTTYMode==="static"&&this.staticOutput)this.stdout.write(this.staticOutput),this.stdout.write(`
|
|
95
|
+
`)}getStaticOutput(){return this.staticOutput}scheduleNextFrame(delay){if(this.frameTimeout)return;this.frameTimeout=setTimeout(()=>{if(this.frameTimeout=null,!this.disposed)this.executeRender()},delay)}executeRender(){let __stack=[];try{const render=__using(__stack,this.log.span("render"),0);let startTime=Date.now();try{let width=this.stdout.columns??80,height=this.mode==="inline"?NaN:this.stdout.rows??24;log3.debug?.(`render #${this.stats.renderCount+1}: ${width}x${height}, nonTTYMode=${this.nonTTYMode}`);let scrollbackOffset=this.scrollbackOffset;this.scrollbackOffset=0;let inlineCursor=this.mode==="inline"?this.getCursorState():void 0,{output,buffer}=executeRender(this.root,width,height,this.prevBuffer,{mode:this.mode,scrollbackOffset,termRows:this.mode==="inline"?this.stdout.rows??24:void 0,cursorPos:inlineCursor},this.pipelineConfig),transformedOutput;if(this.nonTTYMode==="tty")transformedOutput=output;else if(this.nonTTYMode==="static")this.staticOutput=stripAnsi3(output),transformedOutput="";else transformedOutput=this.outputTransformer(output,this.prevLineCount),this.prevLineCount=countLines(output);let cursorSuffix="";if(this.nonTTYMode==="tty"){let cursor=this.getCursorState();if(cursor?.visible){let shapeSeq=cursor.shape?setCursorStyle(cursor.shape):resetCursorStyle();cursorSuffix=ANSI.moveCursor(cursor.x,cursor.y)+shapeSeq+ANSI.CURSOR_SHOW}else cursorSuffix=ANSI.CURSOR_HIDE}if(transformedOutput.length>0||cursorSuffix.length>0){let fullOutput=this.nonTTYMode==="tty"&&SYNC_UPDATE_ENABLED?`${ANSI.SYNC_BEGIN}${transformedOutput}${cursorSuffix}${ANSI.SYNC_END}`:transformedOutput+cursorSuffix;if(log3.debug){let bytes=Buffer.byteLength(fullOutput);if(log3.debug?.(`stdout.write: ${bytes} bytes (${transformedOutput.length} chars output + ${cursorSuffix.length} chars cursor)`),bytes>16384)log3.warn?.(`large output: ${bytes} bytes may exceed pipe buffer (16KB on macOS), risk of mid-sequence split`)}let captureFile=process.env.SILVERY_CAPTURE_OUTPUT;if(captureFile){let fs2=__require("fs");fs2.appendFileSync(captureFile,`--- FRAME ${this.stats.renderCount+1} (${Buffer.byteLength(fullOutput)} bytes) ---
|
|
96
|
+
`),fs2.appendFileSync(captureFile,fullOutput),fs2.appendFileSync(captureFile,`
|
|
97
|
+
`)}this.stdout.write(fullOutput)}this.prevBuffer=buffer;let strictEnv=process.env.SILVERY_STRICT;if(strictEnv&&strictEnv!=="0"&&strictEnv!=="false"&&this.stats.renderCount>0){let renderNum=this.stats.renderCount+1,{buffer:freshBuffer}=executeRender(this.root,width,height,null,{mode:this.mode==="fullscreen"?"fullscreen":"inline",skipLayoutNotifications:!0},this.pipelineConfig),found=!1;for(let y=0;y<buffer.height&&!found;y++)for(let x=0;x<buffer.width&&!found;x++){let a=buffer.getCell(x,y),b=freshBuffer.getCell(x,y);if(!cellEquals(a,b)){found=!0;let ctx=buildMismatchContext(this.root,x,y,a,b,renderNum),contentPhaseStats=globalThis.__silvery_content_detail?structuredClone(globalThis.__silvery_content_detail):void 0,debugInfo=formatMismatchContext(ctx,contentPhaseStats),incText=bufferToText(buffer),freshText=bufferToText(freshBuffer),msg=debugInfo+`--- incremental ---
|
|
98
|
+
${incText}
|
|
99
|
+
--- fresh ---
|
|
100
|
+
${freshText}`;if(process.env.DEBUG_LOG)appendFileSync(process.env.DEBUG_LOG,msg+`
|
|
101
|
+
`);throw log3.error?.(msg),new IncrementalRenderMismatchError(msg,{contentPhaseStats,mismatchContext:ctx})}}if(!found&&process.env.DEBUG_LOG)appendFileSync(process.env.DEBUG_LOG,`SILVERY_STRICT: render #${renderNum} OK
|
|
102
|
+
`)}let renderTime=Date.now()-startTime;this.stats.renderCount++,this.stats.lastRenderTime=renderTime,this.stats.avgRenderTime=(this.stats.avgRenderTime*(this.stats.renderCount-1)+renderTime)/this.stats.renderCount,this.lastRenderTime=Date.now(),render.spanData.renderCount=this.stats.renderCount,render.spanData.renderTime=renderTime,render.spanData.bytes=transformedOutput.length,log3.debug?.(`render #${this.stats.renderCount} complete: ${renderTime}ms, output: ${transformedOutput.length} bytes`);let threshold=this.stats.renderCount<=1?this.slowFrameThreshold*5:this.slowFrameThreshold;if(threshold>0&&renderTime>threshold)log3.warn?.(`slow frame: render #${this.stats.renderCount} took ${renderTime}ms (threshold: ${this.slowFrameThreshold}ms, bytes: ${transformedOutput.length})`);if(this.debugMode)this.logDebug(`Render #${this.stats.renderCount} took ${renderTime}ms`)}catch(error){throw log3.error?.(`render error: ${error}`),this.logError("Render error:",error),error}}catch(_catch){var _err=_catch,_hasErr=1}finally{__callDispose(__stack,_err,_hasErr)}}setupResizeListener(){let resizeTimeout=null,handleResize=()=>{if(resizeTimeout)clearTimeout(resizeTimeout);resizeTimeout=setTimeout(()=>{resizeTimeout=null,this.prevBuffer=null,this.scheduleRender()},50)};this.stdout.on("resize",handleResize),this.resizeCleanup=()=>{if(this.stdout.off("resize",handleResize),resizeTimeout)clearTimeout(resizeTimeout)}}logDebug(message){process.stderr.write(`[Silvery Debug] ${message}
|
|
103
|
+
`)}logError(message,error){if(process.stderr.write(`[Silvery Error] ${message}
|
|
104
|
+
`),error instanceof Error)process.stderr.write(`${error.stack??error.message}
|
|
105
|
+
`);else process.stderr.write(`${String(error)}
|
|
106
|
+
`)}}init_keys();init_flexily_zero_adapter();import{jsxDEV as jsxDEV7}from"react/jsx-dev-runtime";var log4=createLogger7("silvery:render");var instances=new Map;function createSubscriberList(){return{input:new Set,paste:new Set}}function SilveryApp({children,onInputSubscribe,exitOnCtrlC,stdoutWrite,stdout,onExit,onPause,onResume,onScrollback,getRoot:getRootProp,handleFocusCycling=!0}){let subscribersRef=useRef9(null);if(!subscribersRef.current)subscribersRef.current=createSubscriberList();let subscribers=subscribersRef.current,handleExit=useCallback5((error)=>{onExit(error)},[onExit]),exitOnCtrlCRef=useRef9(exitOnCtrlC);exitOnCtrlCRef.current=exitOnCtrlC;let handleExitRef=useRef9(handleExit);handleExitRef.current=handleExit;let focusManagerRef=useRef9(null),getRootRef=useRef9(getRootProp);getRootRef.current=getRootProp;let handleFocusCyclingRef=useRef9(handleFocusCycling);handleFocusCyclingRef.current=handleFocusCycling;let handleChunkRef=useRef9(null);if(handleChunkRef.current===null){let processSingleKey=function(chunk){if(log4.debug?.(`processSingleKey: ${JSON.stringify(chunk)}`),chunk==="\x03"&&exitOnCtrlCRef.current){handleExitRef.current();return}if(handleFocusCyclingRef.current){let fm=focusManagerRef.current,root=getRootRef.current?.();if(fm&&root){let[,key2]=parseKey(chunk);if(key2.tab&&!key2.shift){fm.focusNext(root),reconciler.flushSyncWork();return}if(key2.tab&&key2.shift){fm.focusPrev(root),reconciler.flushSyncWork();return}if(key2.escape&&fm.activeElement){fm.blur(),reconciler.flushSyncWork();return}}}let[input,key]=parseKey(chunk);runWithDiscreteEvent(()=>{for(let handler of subscribers.input)handler(input,key)}),reconciler.flushSyncWork()};handleChunkRef.current=(rawChunk)=>{log4.debug?.(`handleChunk: ${JSON.stringify(rawChunk)}`);let pasteResult=parseBracketedPaste(rawChunk);if(pasteResult){for(let handler of subscribers.paste)handler(pasteResult.content);return}for(let keypress of splitRawInput(rawChunk))processSingleKey(keypress)}}let handleChunk=handleChunkRef.current;useEffect5(()=>{if(!onInputSubscribe)return;return onInputSubscribe(handleChunk)},[onInputSubscribe,handleChunk]);let stdoutContextValue=useMemo3(()=>({stdout,write:stdoutWrite,notifyScrollback:onScrollback}),[stdout,stdoutWrite,onScrollback]),runtimeContextValue=useMemo3(()=>({on(event,handler){if(event==="input"){let typed=handler;return subscribers.input.add(typed),()=>{subscribers.input.delete(typed)}}if(event==="paste"){let typed=handler;return subscribers.paste.add(typed),()=>{subscribers.paste.delete(typed)}}return()=>{}},emit(){},exit:handleExit,pause:onPause,resume:onResume}),[subscribers,handleExit,onPause,onResume]),focusManager=useMemo3(()=>createFocusManager(),[]);return focusManagerRef.current=focusManager,useEffect5(()=>{return setOnNodeRemoved((removedNode)=>focusManager.handleSubtreeRemoved(removedNode)),()=>setOnNodeRemoved(null)},[focusManager]),jsxDEV7(StdoutContext.Provider,{value:stdoutContextValue,children:jsxDEV7(StderrContext.Provider,{value:{stderr:process2.stderr,write:(data)=>{process2.stderr.write(data)}},children:jsxDEV7(FocusManagerContext.Provider,{value:focusManager,children:jsxDEV7(RuntimeContext.Provider,{value:runtimeContextValue,children},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)}class SilveryInstance{stdout;stdin;exitOnCtrlC;debug;alternateScreen;mode;nonTTYMode;scheduler=null;cursorStore;container=null;fiberRoot=null;lastElement=null;isUnmounted=!1;exitPromise=null;resolveExit=null;rejectExit=null;resizeCleanup=null;signalCleanup=null;constructor(options){log4.debug?.("SilveryInstance constructor start");let startTime=Date.now();if(this.stdout=options.stdout,this.stdin=options.stdin,this.exitOnCtrlC=options.exitOnCtrlC,this.debug=options.debug,this.alternateScreen=options.alternateScreen,this.mode=options.mode,this.nonTTYMode=options.nonTTYMode,this.exitPromise=new Promise((resolve,reject)=>{this.resolveExit=resolve,this.rejectExit=reject}),this.alternateScreen)this.stdout.write(enterAlternateScreen());if(this.stdout.isTTY)this.stdout.write(enableKittyKeyboard2());if(this.stdout.isTTY)enableBracketedPaste(this.stdout);this.cursorStore=createCursorStore(),this.container=createContainer(()=>{this.scheduler?.scheduleRender()}),this.fiberRoot=createFiberRoot(this.container),this.scheduler=new RenderScheduler({stdout:this.stdout,root:getContainerRoot(this.container),debug:this.debug,mode:this.mode,nonTTYMode:this.nonTTYMode,cursorAccessors:this.cursorStore.accessors}),this.setupResizeListener(),this.setupSignalHandlers(),log4.debug?.(`SilveryInstance constructor complete in ${Date.now()-startTime}ms`)}render(element){log4.debug?.("SilveryInstance.render() start");let startTime=Date.now();if(this.isUnmounted||!this.fiberRoot)return;this.lastElement=element;let tree=jsxDEV7(CursorProvider,{store:this.cursorStore,children:jsxDEV7(SilveryApp,{onInputSubscribe:this.subscribeToInput,exitOnCtrlC:this.exitOnCtrlC,stdoutWrite:(data)=>{this.stdout.write(data)},stdout:this.stdout,onExit:this.handleExit,onPause:this.pause,onResume:this.resume,onScrollback:this.handleScrollback,getRoot:()=>this.container?getContainerRoot(this.container):null,children:element},void 0,!1,void 0,this)},void 0,!1,void 0,this);log4.debug?.("SilveryInstance.render() calling updateContainerSync"),reconciler.updateContainerSync(tree,this.fiberRoot,null,null),log4.debug?.(`SilveryInstance.render() updateContainerSync complete in ${Date.now()-startTime}ms`),log4.debug?.("SilveryInstance.render() calling flushSyncWork");let flushStart=Date.now();reconciler.flushSyncWork(),log4.debug?.(`SilveryInstance.render() flushSyncWork complete in ${Date.now()-flushStart}ms (total: ${Date.now()-startTime}ms)`)}rerender=(element)=>{this.render(element)};flush=()=>{if(this.isUnmounted||!this.lastElement)return;this.render(this.lastElement),this.scheduler?.forceRender()};[Symbol.dispose]=()=>this.unmount();unmount=()=>{if(this.isUnmounted)return;if(this.isUnmounted=!0,this.scheduler?.forceRender(),this.resizeCleanup?.(),this.signalCleanup?.(),this.stdout.isTTY)disableBracketedPaste(this.stdout),this.stdout.write(disableKittyKeyboard2());if(this.stdout.isTTY)resetWindowTitle(this.stdout);if(this.alternateScreen)this.stdout.write(leaveAlternateScreen());else if(this.mode==="inline")this.stdout.write(`${ANSI.SYNC_END}${ANSI.CURSOR_SHOW}
|
|
107
|
+
`);else this.stdout.write(ANSI.SYNC_END);let{stdin}=this;if(stdin.removeAllListeners("readable"),stdin.removeAllListeners("data"),stdin.destroy(),typeof stdin.unref==="function")stdin.unref();if(this.fiberRoot)reconciler.updateContainer(null,this.fiberRoot,null,()=>{});this.scheduler?.dispose(),instances.delete(this.stdout),this.resolveExit?.()};waitUntilExit=()=>{return this.exitPromise??Promise.resolve()};clear=()=>{this.scheduler?.clear()};pause=()=>{this.scheduler?.pause()};resume=()=>{this.scheduler?.resume(),this.scheduler?.forceRender()};handleExit=(error)=>{if(this.isUnmounted)return;if(error)this.rejectExit?.(error);this.unmount()};handleScrollback=(lines)=>{this.scheduler?.addScrollbackLines(lines)};setupResizeListener(){let handleResize=()=>{this.scheduler?.clear(),this.scheduler?.forceRender()};this.stdout.on("resize",handleResize),this.resizeCleanup=()=>{this.stdout.off("resize",handleResize)}}setupSignalHandlers(){let handleSignal=()=>{this.unmount()};process2.on("SIGINT",handleSignal),process2.on("SIGTERM",handleSignal),this.signalCleanup=()=>{process2.off("SIGINT",handleSignal),process2.off("SIGTERM",handleSignal)}}subscribeToInput=(handler)=>{let{stdin}=this,isRawModeSupported=stdin.isTTY===!0;if(log4.debug?.(`subscribeToInput: stdin=${stdin===process2.stdin?"process.stdin":"other"}, isTTY=${stdin.isTTY}, isRawModeSupported=${isRawModeSupported}`),!isRawModeSupported)return log4.debug?.("subscribeToInput: raw mode not supported, skipping"),()=>{};let handleReadable=()=>{let chunk;while((chunk=stdin.read())!==null)log4.debug?.(`subscribeToInput: stdin.read() returned: ${JSON.stringify(chunk)}`),handler(chunk)};return stdin.setEncoding("utf8"),stdin.ref(),stdin.setRawMode(!0),stdin.on("readable",handleReadable),log4.debug?.(`subscribeToInput: enabled raw mode, stdin.isRaw=${stdin.isRaw}`),()=>{log4.debug?.("subscribeToInput: cleanup — disabling raw mode"),stdin.setRawMode(!1),stdin.off("readable",handleReadable),stdin.unref()}}}function renderSync(element,termOrDef,options){if(!isLayoutEngineInitialized())throw Error("Layout engine is not initialized. Call render() (async) first, or initialize manually with setLayoutEngine().");let resolved,term2;if(!termOrDef)resolved=resolveTermDef({}),term2=createTerm({color:resolved.colors??void 0});else if(isTerm(termOrDef))resolved=resolveFromTerm(termOrDef),term2=termOrDef;else if(isTermDef(termOrDef))resolved=resolveTermDef(termOrDef),term2=createTerm({stdout:termOrDef.stdout,stdin:termOrDef.stdin,color:resolved.colors??void 0});else throw Error("Invalid second argument: expected Term, TermDef, or undefined");if(resolved.isStatic){let wrappedElement2=jsxDEV7(TermContext.Provider,{value:term2,children:element},void 0,!1,void 0,this),lastFrame=renderStringSync(wrappedElement2,{width:resolved.width,height:resolved.height,plain:resolved.colors===null});if(resolved.stdout)resolved.stdout.write(lastFrame),resolved.stdout.write(`
|
|
108
|
+
`);return{rerender:()=>{},unmount:()=>{},[Symbol.dispose](){},waitUntilExit:()=>Promise.resolve(),clear:()=>{},flush:()=>{},pause:()=>{},resume:()=>{}}}let mergedOptions={...options,stdout:options?.stdout??resolved.stdout??term2.stdout,stdin:options?.stdin??term2.stdin},mode=mergedOptions.mode??"fullscreen",resolvedOptions={stdout:mergedOptions.stdout??process2.stdout,stdin:mergedOptions.stdin??process2.stdin,exitOnCtrlC:mergedOptions.exitOnCtrlC??!0,debug:mergedOptions.debug??!1,patchConsole:mergedOptions.patchConsole??!0,alternateScreen:mergedOptions.alternateScreen??mode==="fullscreen",mode,nonTTYMode:mergedOptions.nonTTYMode??"auto"},instance=instances.get(resolvedOptions.stdout);if(!instance)instance=new SilveryInstance(resolvedOptions),instances.set(resolvedOptions.stdout,instance);let wrappedElement=jsxDEV7(TermContext.Provider,{value:term2,children:element},void 0,!1,void 0,this);return instance.render(wrappedElement),{rerender:(newElement)=>instance.rerender(jsxDEV7(TermContext.Provider,{value:term2,children:newElement},void 0,!1,void 0,this)),unmount:instance.unmount,[Symbol.dispose]:instance.unmount,waitUntilExit:instance.waitUntilExit,clear:instance.clear,flush:instance.flush,pause:instance.pause,resume:instance.resume}}import{EventEmitter as EventEmitter2}from"node:events";import React10,{act as act2}from"react";function createAutoLocator(getContainer){return new AutoLocatorImpl(getContainer,[])}class AutoLocatorImpl{getContainer;predicates;indexSelector;constructor(getContainer,predicates,indexSelector){this.getContainer=getContainer;this.predicates=predicates;this.indexSelector=indexSelector}getByText(text){let predicate=(node)=>{let content=getNodeTextContent(node);if(!content)return!1;if(node.type!=="silvery-text")return!1;if(node.isRawText&&node.parent?.type==="silvery-text")return!1;if(typeof text==="string")return content.includes(text);return text.test(content)};return new AutoLocatorImpl(this.getContainer,[...this.predicates,predicate])}getByTestId(id){let predicate=(node)=>{return getNodeProp(node,"testID")===id};return new AutoLocatorImpl(this.getContainer,[...this.predicates,predicate])}locator(selector){let predicate=parseSelector(selector);if(!predicate)return new AutoLocatorImpl(this.getContainer,[()=>!1]);return new AutoLocatorImpl(this.getContainer,[...this.predicates,predicate])}filter(optionsOrPredicate){let predicate;if(typeof optionsOrPredicate==="function")predicate=optionsOrPredicate;else{let opts=optionsOrPredicate;predicate=(node)=>{if(opts.hasText!==void 0){let content=getNodeTextContent(node);if(typeof opts.hasText==="string"){if(!content.includes(opts.hasText))return!1}else if(!opts.hasText.test(content))return!1}if(opts.hasTestId!==void 0){if(getNodeProp(node,"testID")!==opts.hasTestId)return!1}if(opts.has!==void 0){let value=getNodeProp(node,opts.has.attr);if(opts.has.value!==void 0){if(value!==opts.has.value)return!1}else if(value===void 0)return!1}return!0}}return new AutoLocatorImpl(this.getContainer,[...this.predicates,predicate])}first(){return new AutoLocatorImpl(this.getContainer,this.predicates,{type:"first"})}last(){return new AutoLocatorImpl(this.getContainer,this.predicates,{type:"last"})}nth(index){return new AutoLocatorImpl(this.getContainer,this.predicates,{type:"nth",index})}resolve(){let nodes=this.resolveAll();if(this.indexSelector)switch(this.indexSelector.type){case"first":return nodes[0]??null;case"last":return nodes[nodes.length-1]??null;case"nth":return nodes[this.indexSelector.index??0]??null}return nodes[0]??null}resolveAll(){let container=this.getContainer();if(this.predicates.length===0)return[container];let matches=[];return walkTree(container,(node)=>{if(this.predicates.every((p)=>p(node)))matches.push(node)}),matches}count(){return this.resolveAll().length}textContent(){let node=this.resolve();if(!node)return"";return getNodeTextContent(node)}getAttribute(name){let node=this.resolve();if(!node)return;return getNodeProp(node,name)}boundingBox(){let node=this.resolve();if(!node)return null;return node.screenRect??null}isVisible(){let box=this.boundingBox();if(!box)return!1;return box.width>0&&box.height>0}}function walkTree(node,visitor){visitor(node);for(let child of node.children)walkTree(child,visitor)}function getNodeTextContent(node){if(node.textContent!==void 0)return node.textContent;return node.children.map(getNodeTextContent).join("")}function getNodeProp(node,name){let value=node.props[name];if(value===void 0||value===null)return;return String(value)}function parseSelector(selector){let trimmed=selector.trim();if(trimmed.includes(">"))return parseChildCombinator(trimmed);if(trimmed.includes("+"))return parseAdjacentSiblingCombinator(trimmed);if(trimmed.includes(" ")&&!trimmed.startsWith("["))return parseDescendantCombinator(trimmed);return parseSingleSelector(trimmed)}function parseSingleSelector(selector){let parts=[],remaining=selector;if(remaining==="*")return()=>!0;let idMatch=remaining.match(/^#([a-zA-Z0-9_-]+)/);if(idMatch){let id=idMatch[1];parts.push((node)=>getNodeProp(node,"id")===id),remaining=remaining.slice(idMatch[0].length)}let attrRegex=/\[([a-zA-Z_][a-zA-Z0-9_-]*)(?:([~^$*]?)=["']([^"']*)["'])?\]/g;for(let match of remaining.matchAll(attrRegex)){let[,attr,op,value]=match;if(!attr)continue;if(value===void 0)parts.push((node)=>getNodeProp(node,attr)!==void 0);else parts.push((node)=>{let nodeValue=getNodeProp(node,attr);if(nodeValue===void 0)return!1;switch(op){case"":return nodeValue===value;case"^":return nodeValue.startsWith(value??"");case"$":return nodeValue.endsWith(value??"");case"*":return nodeValue.includes(value??"");default:return!1}})}if(parts.length===0)return null;return(node)=>parts.every((pred)=>pred(node))}function parseChildCombinator(selector){let parts=selector.split(">").map((s)=>s.trim());if(parts.length!==2)return null;let[parentSel,childSel]=parts,parentPred=parseSingleSelector(parentSel),childPred=parseSingleSelector(childSel);if(!parentPred||!childPred)return null;return(node)=>{if(!childPred(node))return!1;return node.parent!==null&&parentPred(node.parent)}}function parseAdjacentSiblingCombinator(selector){let parts=selector.split("+").map((s)=>s.trim());if(parts.length!==2)return null;let[prevSel,nextSel]=parts,prevPred=parseSingleSelector(prevSel),nextPred=parseSingleSelector(nextSel);if(!prevPred||!nextPred)return null;return(node)=>{if(!nextPred(node))return!1;if(!node.parent)return!1;let siblings=node.parent.children,index=siblings.indexOf(node);if(index<=0)return!1;let prevSibling=siblings[index-1];return prevSibling!==void 0&&prevPred(prevSibling)}}function parseDescendantCombinator(selector){let parts=selector.split(/\s+/).filter((s)=>s.length>0);if(parts.length!==2)return null;let[ancestorSel,descendantSel]=parts,ancestorPred=parseSingleSelector(ancestorSel),descendantPred=parseSingleSelector(descendantSel);if(!ancestorPred||!descendantPred)return null;return(node)=>{if(!descendantPred(node))return!1;let current=node.parent;while(current){if(ancestorPred(current))return!0;current=current.parent}return!1}}function createBoundTerm(buffer,getRoot,getText){return{cell(x,y){return buffer.getCell(x,y)},nodeAt(x,y){let root=getRoot();return findNodeAtScreenPosition(root,x,y)},get text(){return getText()},get columns(){return buffer.width},get rows(){return buffer.height},get buffer(){return buffer}}}function findNodeAtScreenPosition(node,x,y){let rect=node.screenRect;if(!rect)return null;if(x<rect.x||x>=rect.x+rect.width||y<rect.y||y>=rect.y+rect.height)return null;for(let child of node.children){let found=findNodeAtScreenPosition(child,x,y);if(found)return found}if(node.type==="silvery-text")for(let i=node.children.length-1;i>=0;i--){let child=node.children[i];if(child.inlineRects){for(let inlineRect of child.inlineRects)if(x>=inlineRect.x&&x<inlineRect.x+inlineRect.width&&y>=inlineRect.y&&y<inlineRect.y+inlineRect.height)return child}}return node}init_buffer();import{writeFile}from"node:fs/promises";function createScreenshotter(){let browser=null,page=null;async function ensureBrowser(){if(browser&&page)return page;let{chromium}=await import("playwright");return browser=await chromium.launch(),page=await(await browser.newContext()).newPage(),page}async function capture(html,outputPath){let p=await ensureBrowser();await p.setContent(html,{waitUntil:"load"}),await p.waitForTimeout(50);let buffer=await p.screenshot({fullPage:!0});if(outputPath)await writeFile(outputPath,buffer);return buffer}async function close(){if(browser)await browser.close(),browser=null,page=null}return{capture,close,[Symbol.asyncDispose]:close}}init_keys();function buildApp(options){let{getContainer,getBuffer,sendInput,rerender,unmount,waitUntilExit,clear,exitCalled=()=>!1,exitError=()=>{return},freshRender:freshRenderFn,debugFn,frames=[],columns,rows,kittyMode=!1,actAndRender,resize:resizeFn,focusManager:fm}=options,createLocator=()=>createAutoLocator(getContainer),getText=()=>{let buffer=getBuffer();return buffer?bufferToText(buffer):""},boundTerm=null,mouseState=createMouseEventProcessor(),screenshotter=null,app={get text(){return getText()},get ansi(){let buffer=getBuffer();return buffer?bufferToStyledText(buffer):""},nodeAt(x,y){let root=getContainer();return findNodeAtContentPosition(root,x,y)},getByTestId(id){return createLocator().getByTestId(id)},getByText(text){return createLocator().getByText(text)},locator(selector){return createLocator().locator(selector)},async press(key){let hotkey=parseHotkey(key);updateKeyboardModifiers(mouseState,{super:hotkey.super,hyper:hotkey.hyper,eventType:"press"});let sequence=kittyMode?keyToKittyAnsi(key):keyToAnsi(key);return sendInput(sequence),await Promise.resolve(),app},async pressSequence(...keys){for(let key of keys)await app.press(key);return app},async type(text){for(let char of text)sendInput(char);return await Promise.resolve(),app},async click(x,y,options2){let button=options2?.button??0;if(options2?.cmd)mouseState.keyboardModifiers.super=!0;let doClick=()=>{let parsed={button,x,y,action:"down",shift:options2?.shift??!1,meta:options2?.meta??!1,ctrl:options2?.ctrl??!1};processMouseEvent(mouseState,parsed,getContainer());let upParsed={...parsed,action:"up"};processMouseEvent(mouseState,upParsed,getContainer())};if(actAndRender)actAndRender(doClick);else doClick();if(options2?.cmd)mouseState.keyboardModifiers.super=!1;return await Promise.resolve(),app},async doubleClick(x,y,options2){let button=options2?.button??0;if(options2?.cmd)mouseState.keyboardModifiers.super=!0;let doDblClick=()=>{let baseParsed={button,x,y,action:"down",shift:options2?.shift??!1,meta:options2?.meta??!1,ctrl:options2?.ctrl??!1};processMouseEvent(mouseState,baseParsed,getContainer()),processMouseEvent(mouseState,{...baseParsed,action:"up"},getContainer()),processMouseEvent(mouseState,baseParsed,getContainer()),processMouseEvent(mouseState,{...baseParsed,action:"up"},getContainer())};if(actAndRender)actAndRender(doDblClick);else doDblClick();if(options2?.cmd)mouseState.keyboardModifiers.super=!1;return await Promise.resolve(),app},async hover(x,y){let doHover=()=>{processMouseEvent(mouseState,{button:0,x,y,action:"move",shift:!1,meta:!1,ctrl:!1},getContainer())};if(actAndRender)actAndRender(doHover);else doHover();return await Promise.resolve(),app},async wheel(x,y,delta){let doWheel=()=>{processMouseEvent(mouseState,{button:0,x,y,action:"wheel",delta,shift:!1,meta:!1,ctrl:!1},getContainer())};if(actAndRender)actAndRender(doWheel);else doWheel();return await Promise.resolve(),app},resize(cols,rows2){if(!resizeFn)throw Error("resize() is only available in test renderer");resizeFn(cols,rows2)},async run(){return waitUntilExit()},get term(){let buffer=getBuffer();if(!buffer)return createBoundTerm({width:columns,height:rows,getCell:()=>({char:" ",fg:null,bg:null,attrs:{},wide:!1,continuation:!1}),setCell:()=>{},clear:()=>{},inBounds:()=>!1},getContainer,getText);if(!boundTerm||boundTerm.buffer!==buffer)boundTerm=createBoundTerm(buffer,getContainer,getText);return boundTerm},async screenshot(outputPath){let buffer=getBuffer();if(!buffer)throw Error("No buffer available for screenshot");let html=bufferToHTML(buffer);if(!screenshotter)screenshotter=createScreenshotter();return screenshotter.capture(html,outputPath)},rerender,unmount(){if(screenshotter)screenshotter.close().catch(()=>{}),screenshotter=null;unmount()},[Symbol.dispose](){app.unmount()},waitUntilExit,clear,debug(){if(debugFn)debugFn();else console.log(app.text)},freshRender(){if(!freshRenderFn)throw Error("freshRender() is only available in test renderer");return freshRenderFn()},exitCalled,exitError,stdin:{write:sendInput},frames,lastFrame(){return frames[frames.length-1]},lastBuffer(){return getBuffer()??void 0},lastFrameText(){let buffer=getBuffer();return buffer?bufferToText(buffer):void 0},getContainer(){return getContainer()},focus(testID){if(fm){let root=getContainer();fm.focusById(testID,root,"programmatic")}},getFocusPath(){if(fm){let root=getContainer();return fm.getFocusPath(root)}return[]},get focusManager(){if(!fm)throw Error("FocusManager not available — pass focusManager to buildApp()");return fm},getCursorState(){return options.getCursorState?.()??null}};return app}function findNodeAtContentPosition(node,x,y){let rect=node.contentRect;if(!rect)return null;if(!pointInRect(x,y,rect))return null;for(let child of node.children){let found=findNodeAtContentPosition(child,x,y);if(found)return found}return node}init_buffer();init_context();init_pipeline2();init_reconciler();init_ansi();init_buffer();init_keys();function debugTree(node,options={}){let{depth=Number.POSITIVE_INFINITY,showRects=!0,showText=!0}=options,lines=[];function safeStringify(value){try{return JSON.stringify(value)}catch{if(typeof value==="object"&&value!==null)return"[object]";return String(value)}}function walk(n,indent,currentDepth){if(currentDepth>depth)return;let props=Object.entries(n.props??{}).filter(([k])=>!["children"].includes(k)).filter(([,v])=>v!==void 0&&v!==null&&v!==!1).map(([k,v])=>{if(typeof v==="string")return`${k}="${v}"`;if(typeof v==="boolean")return k;return`${k}=${safeStringify(v)}`}).join(" "),rect="";if(showRects&&n.screenRect){let{x,y,width,height}=n.screenRect;rect=` [${x},${y} ${width}×${height}]`}let text="";if(showText&&n.textContent)text=` "${n.textContent.length>40?n.textContent.slice(0,37)+"...":n.textContent}"`;let propsStr=props?" "+props:"";lines.push(" ".repeat(indent)+`<${n.type}${propsStr}${text}${rect}>`);for(let child of n.children)walk(child,indent+1,currentDepth+1)}return walk(node,0,0),lines.join(`
|
|
109
|
+
`)}init_keys();var activeRenders=new Set,renderIdCounter=0,ACTIVE_RENDER_LEAK_THRESHOLD=1000;function pruneAndCountActiveRenders(){let count=0;for(let ref of activeRenders)if(ref.deref()===void 0)activeRenders.delete(ref);else count++;return count}function assertLayoutEngine(){if(!isLayoutEngineInitialized())throw Error("silvery: Layout engine not initialized. Call `await ensureEngine()` before render(), or use the testing module which initializes it automatically via top-level await.")}function isStore(arg){if(arg===null||typeof arg!=="object")return!1;let obj=arg;return typeof obj.cols==="number"&&typeof obj.rows==="number"&&!("layoutEngine"in obj)&&!("debug"in obj)&&!("incremental"in obj)&&!("singlePassLayout"in obj)&&!("autoRender"in obj)&&!("onFrame"in obj)&&!("kittyMode"in obj)&&!("wrapRoot"in obj)&&!("stdin"in obj)}function render(element,optsOrStore={}){assertLayoutEngine();let storeMode=isStore(optsOrStore),cols=storeMode?optsOrStore.cols:optsOrStore.cols??80,rows=storeMode?optsOrStore.rows:optsOrStore.rows??24,debug=storeMode?!1:optsOrStore.debug??!1,incremental=storeMode?!0:optsOrStore.incremental??!0,singlePassLayout=storeMode?!1:optsOrStore.singlePassLayout??!1,kittyMode=storeMode?!1:optsOrStore.kittyMode??!1,autoRender=storeMode?!1:optsOrStore.autoRender??!1,onFrame=storeMode?void 0:optsOrStore.onFrame,onBufferReady=storeMode?void 0:optsOrStore.onBufferReady,wrapRoot=storeMode?void 0:optsOrStore.wrapRoot,stdinStream=storeMode?void 0:optsOrStore.stdin,liveCount=pruneAndCountActiveRenders();if(liveCount>=ACTIVE_RENDER_LEAK_THRESHOLD)throw Error(`silvery: ${liveCount} active render instances without unmount(). This is a render leak. Use createRenderer() for auto-cleanup, or call unmount() when done with each render.`);if(!storeMode&&optsOrStore.layoutEngine)setLayoutEngine(optsOrStore.layoutEngine);let renderId=++renderIdCounter,instance={frames:[],container:null,fiberRoot:null,prevBuffer:null,mounted:!0,rendering:!1,columns:cols,rows,inputEmitter:new EventEmitter2,debug,incremental,renderCount:0,singlePassLayout},hadReactCommit=!1,autoRenderScheduled=!1,inRenderCycle=!1;instance.container=createContainer(()=>{if(hadReactCommit=!0,autoRender&&!instance.rendering&&!inRenderCycle&&!autoRenderScheduled&&instance.mounted)autoRenderScheduled=!0,queueMicrotask(()=>{if(autoRenderScheduled=!1,!instance.mounted||instance.rendering||inRenderCycle)return;inRenderCycle=!0;try{let newFrame=doRender();instance.frames.push(newFrame),onFrame?.(newFrame,instance.prevBuffer,getRootContentHeight())}finally{inRenderCycle=!1}})}),instance.fiberRoot=createFiberRoot(instance.container);let getRootContentHeight=()=>{try{let root=getContainerRoot(instance.container);if(!root?.contentRect)return;let maxBottom=0,hasChildren=!1;for(let child of root.children)if(child.contentRect){hasChildren=!0;let props=child.props,mb=props.marginBottom??props.marginY??props.margin??0,childBottom=child.contentRect.y+child.contentRect.height+mb;if(childBottom>maxBottom)maxBottom=childBottom}return hasChildren?maxBottom:0}catch{return}},exitCalledFlag=!1,exitErrorValue,handleExit=(error)=>{if(exitCalledFlag=!0,exitErrorValue=error,debug)console.log("[silvery] exit() called",error?`with error: ${error.message}`:"")},stdoutEmitter=new EventEmitter2,mockStdout={columns:instance.columns,rows:instance.rows,write:()=>!0,isTTY:!0,on:(event,listener)=>{return stdoutEmitter.on(event,listener),mockStdout},off:(event,listener)=>{return stdoutEmitter.off(event,listener),mockStdout},once:(event,listener)=>{return stdoutEmitter.once(event,listener),mockStdout},removeListener:(event,listener)=>{return stdoutEmitter.removeListener(event,listener),mockStdout},addListener:(event,listener)=>{return stdoutEmitter.addListener(event,listener),mockStdout}},mockTerm=createTerm({color:"truecolor",stdout:mockStdout}),focusManager=createFocusManager();setOnNodeRemoved((removedNode)=>focusManager.handleSubtreeRemoved(removedNode));let cursorStore=createCursorStore(),runtimeValue={on(event,handler){if(event==="input"){let wrapped=(data)=>{let[input,key]=parseKey(data);handler(input,key)};return instance.inputEmitter.on("input",wrapped),()=>{instance.inputEmitter.removeListener("input",wrapped)}}if(event==="paste")return instance.inputEmitter.on("paste",handler),()=>{instance.inputEmitter.removeListener("paste",handler)};return()=>{}},emit(){},exit:handleExit};function wrapWithContexts(el){let inner=wrapRoot?wrapRoot(el):el;return React10.createElement(CursorProvider,{store:cursorStore},React10.createElement(TermContext.Provider,{value:mockTerm},React10.createElement(StdoutContext.Provider,{value:{stdout:mockStdout,write:()=>{}}},React10.createElement(FocusManagerContext.Provider,{value:focusManager},React10.createElement(RuntimeContext.Provider,{value:runtimeValue},inner)))))}let strictEnv=process.env.SILVERY_STRICT,strictMode=incremental&&strictEnv&&strictEnv!=="0"&&strictEnv!=="false",MAX_SINGLE_PASS_ITERATIONS=5;function doRender(){let output2,buffer;if(instance.singlePassLayout){let singlePassCount=0;for(let pass=0;pass<MAX_SINGLE_PASS_ITERATIONS;pass++){hadReactCommit=!1,singlePassCount++;let renderError=null;if(withActEnvironment2(()=>{if(act2(()=>{let root=getContainerRoot(instance.container);try{let result=executeRender(root,instance.columns,instance.rows,incremental?instance.prevBuffer:null);output2=result.output,buffer=result.buffer}catch(e){renderError=e;let attachedBuffer=e?.__silvery_buffer;if(attachedBuffer)buffer=attachedBuffer}if(buffer)instance.prevBuffer=buffer;instance.renderCount++,onBufferReady?.(output2,buffer,getRootContentHeight())}),!hadReactCommit)act2(()=>{reconciler.flushSyncWork()})}),renderError){if(!(renderError instanceof IncrementalRenderMismatchError))throw renderError}if(!hadReactCommit)break}if(hadReactCommit&&singlePassCount>=MAX_SINGLE_PASS_ITERATIONS){if(process.env.SILVERY_STRICT)console.warn(`[SILVERY] singlePassLayout exhausted ${MAX_SINGLE_PASS_ITERATIONS} iterations `+"with pending React commit — output may be stale")}if(incremental&&buffer&&singlePassCount>1)buffer.markAllRowsDirty()}else{let iterationCount=0;for(let iteration=0;iteration<5;iteration++){hadReactCommit=!1,iterationCount++;let classicRenderError=null;if(withActEnvironment2(()=>{if(act2(()=>{let root=getContainerRoot(instance.container);try{let result=executeRender(root,instance.columns,instance.rows,incremental?instance.prevBuffer:null);output2=result.output,buffer=result.buffer}catch(e){classicRenderError=e;let attachedBuffer=e?.__silvery_buffer;if(attachedBuffer)buffer=attachedBuffer}if(buffer)instance.prevBuffer=buffer;instance.renderCount++,onBufferReady?.(output2,buffer,getRootContentHeight())}),!hadReactCommit)act2(()=>{reconciler.flushSyncWork()})}),classicRenderError){if(!(classicRenderError instanceof IncrementalRenderMismatchError))throw classicRenderError}if(!hadReactCommit)break}if(hadReactCommit&&iterationCount>=5){if(process.env.SILVERY_STRICT)console.warn("[SILVERY] classic layout loop exhausted 5 iterations "+"with pending React commit — output may be stale")}if(incremental&&buffer&&iterationCount>1)buffer.markAllRowsDirty()}if(strictMode&&instance.renderCount>1){let root=getContainerRoot(instance.container),freshBuffer=doFreshRender();for(let y=0;y<buffer.height;y++)for(let x=0;x<buffer.width;x++){let a=buffer.getCell(x,y),b=freshBuffer.getCell(x,y);if(!cellEquals(a,b)){let trapInfo="",trap={x,y,log:[]};globalThis.__silvery_write_trap=trap;try{doFreshRender()}catch{}if(globalThis.__silvery_write_trap=null,trap.log.length>0)trapInfo=`
|
|
110
|
+
WRITE TRAP (${trap.log.length} writes to (${x},${y})):
|
|
111
|
+
${trap.log.join(`
|
|
112
|
+
`)}
|
|
113
|
+
`;else trapInfo=`
|
|
114
|
+
WRITE TRAP: NO WRITES to (${x},${y})
|
|
115
|
+
`;let ctx=buildMismatchContext(root,x,y,a,b,instance.renderCount),contentPhaseStats=globalThis.__silvery_content_detail?structuredClone(globalThis.__silvery_content_detail):void 0,debugInfo=formatMismatchContext(ctx,contentPhaseStats),incText=bufferToText(buffer),freshText=bufferToText(freshBuffer),msg=debugInfo+trapInfo+`--- incremental ---
|
|
116
|
+
${incText}
|
|
117
|
+
--- fresh ---
|
|
118
|
+
${freshText}`;throw new IncrementalRenderMismatchError(msg,{contentPhaseStats,mismatchContext:ctx})}}}return output2}function doFreshRender(){let root=getContainerRoot(instance.container),{buffer}=executeRender(root,instance.columns,instance.rows,null,{skipLayoutNotifications:!0,skipScrollStateUpdates:!0});return buffer}instance.rendering=!0;try{withActEnvironment2(()=>{act2(()=>{reconciler.updateContainerSync(wrapWithContexts(element),instance.fiberRoot,null,null),reconciler.flushSyncWork()})})}finally{instance.rendering=!1}let savedSinglePass=instance.singlePassLayout;instance.singlePassLayout=!1;let output=doRender();if(instance.singlePassLayout=savedSinglePass,instance.frames.push(output),onFrame?.(output,instance.prevBuffer,getRootContentHeight()),debug)console.log("[silvery] Initial render:",output);let stdinOnReadable;if(stdinStream)stdinOnReadable=()=>{let chunk;while((chunk=stdinStream.read?.())!==null&&chunk!==void 0)instance.inputEmitter.emit("input",chunk)},stdinStream.on("readable",stdinOnReadable);let getContainer=()=>getContainerRoot(instance.container),getBuffer=()=>instance.prevBuffer,sendInput=(data)=>{if(!instance.mounted)throw Error("Cannot write to stdin after unmount");if(instance.rendering)throw Error("silvery: Re-entrant render detected. Cannot call press()/stdin.write() from inside a React render or effect. Use setTimeout or an event handler instead.");let t0=performance.now();instance.rendering=!0;try{let pasteResult=parseBracketedPaste(data);if(pasteResult)withActEnvironment2(()=>{act2(()=>{instance.inputEmitter.emit("paste",pasteResult.content)})});else withActEnvironment2(()=>{for(let keypress of splitRawInput(data)){let[,key]=parseKey(keypress);if(key.tab&&!key.shift){act2(()=>{let root=getContainerRoot(instance.container);focusManager.focusNext(root)});continue}if(key.tab&&key.shift){act2(()=>{let root=getContainerRoot(instance.container);focusManager.focusPrev(root)});continue}if(key.escape&&focusManager.activeElement){act2(()=>{focusManager.blur()});continue}act2(()=>{instance.inputEmitter.emit("input",keypress)})}})}finally{instance.rendering=!1}let t1=performance.now(),newFrame=doRender(),doRenderCount=1;if(instance.singlePassLayout)for(let flush=0;flush<5;flush++){if(hadReactCommit=!1,withActEnvironment2(()=>{act2(()=>{reconciler.flushSyncWork()})}),!hadReactCommit)break;newFrame=doRender(),doRenderCount++}if(incremental&&doRenderCount>1&&instance.prevBuffer)instance.prevBuffer.markAllRowsDirty();let t2=performance.now();if(instance.frames.push(newFrame),onFrame?.(newFrame,instance.prevBuffer,getRootContentHeight()),debug)console.log("[silvery] stdin.write:",newFrame);globalThis.__silvery_last_timing={actMs:t1-t0,renderMs:t2-t1}},rerenderFn=(newElement)=>{if(!instance.mounted)throw Error("Cannot rerender after unmount");if(instance.rendering)throw Error("silvery: Re-entrant render detected. Cannot call rerender() from inside a React render or effect.");instance.rendering=!0;try{withActEnvironment2(()=>{act2(()=>{reconciler.updateContainerSync(wrapWithContexts(newElement),instance.fiberRoot,null,null),reconciler.flushSyncWork()})})}finally{instance.rendering=!1}let newFrame=doRender();if(instance.frames.push(newFrame),onFrame?.(newFrame,instance.prevBuffer,getRootContentHeight()),debug)console.log("[silvery] Rerender:",newFrame)},renderTracker={unmount:()=>{},id:renderId},renderRef=new WeakRef(renderTracker);activeRenders.add(renderRef);let unmountFn=()=>{if(!instance.mounted)throw Error("Already unmounted");if(withActEnvironment2(()=>{act2(()=>{reconciler.updateContainer(null,instance.fiberRoot,null,()=>{})})}),instance.mounted=!1,instance.inputEmitter.removeAllListeners(),stdinStream&&stdinOnReadable)stdinStream.removeListener("readable",stdinOnReadable);if(setOnNodeRemoved(null),activeRenders.delete(renderRef),debug)console.log("[silvery] Unmounted")};renderTracker.unmount=unmountFn;let clearFn=()=>{instance.frames.length=0,instance.prevBuffer=null},debugFn=()=>{console.log(debugTree(getContainerRoot(instance.container)))},actAndRenderFn=(fn)=>{if(!instance.mounted)return;withActEnvironment2(()=>{act2(()=>{fn()})});let newFrame=doRender();instance.frames.push(newFrame),onFrame?.(newFrame,instance.prevBuffer,getRootContentHeight())},resizeFn=(newCols,newRows)=>{if(!instance.mounted)throw Error("Cannot resize after unmount");instance.columns=newCols,instance.rows=newRows,mockStdout.columns=newCols,mockStdout.rows=newRows,stdoutEmitter.emit("resize"),instance.prevBuffer=null;let newFrame=doRender();if(instance.frames.push(newFrame),onFrame?.(newFrame,instance.prevBuffer,getRootContentHeight()),debug)console.log("[silvery] Resize:",newCols,"x",newRows)};return buildApp({getContainer,getBuffer,sendInput,rerender:rerenderFn,unmount:unmountFn,waitUntilExit:()=>Promise.resolve(),clear:clearFn,exitCalled:()=>exitCalledFlag,exitError:()=>exitErrorValue,freshRender:doFreshRender,debugFn,frames:instance.frames,columns:cols,rows,kittyMode,actAndRender:actAndRenderFn,resize:resizeFn,focusManager,getCursorState:cursorStore.accessors.getCursorState})}function withActEnvironment2(fn){let prev=globalThis.IS_REACT_ACT_ENVIRONMENT;globalThis.IS_REACT_ACT_ENVIRONMENT=!0;try{fn()}finally{globalThis.IS_REACT_ACT_ENVIRONMENT=prev}}init_host_config();init_render_string();init_flexily_zero_adapter();function resolveNode(nodeOrHandle){if(!nodeOrHandle)return null;if(typeof nodeOrHandle.getNode==="function")return nodeOrHandle.getNode();return nodeOrHandle}function measureElement(nodeOrHandle){let node=resolveNode(nodeOrHandle);if(!node)return{width:0,height:0};if(node.contentRect)return{width:node.contentRect.width,height:node.contentRect.height};let width=node.layoutNode?.getComputedWidth()??0,height=node.layoutNode?.getComputedHeight()??0;return{width:Number.isNaN(width)?0:width,height:Number.isNaN(height)?0:height}}init_nodes();function render2(element,options){if(setInkStrictValidation(!0),!isLayoutEngineInitialized())setLayoutEngine(createFlexilyZeroEngine());let stdout=options?.stdout,stdin=options?.stdin;if((options?.isScreenReaderEnabled??!1)&&stdout){let screenReaderOutput=renderScreenReaderOutput(element);stdout.write(screenReaderOutput);let unmounted=!1,instance={rerender:(newElement)=>{if(unmounted)return;let output=renderScreenReaderOutput(newElement);stdout.write(output)},unmount:()=>{unmounted=!0},[Symbol.dispose](){instance.unmount()},waitUntilExit:()=>Promise.resolve(),waitUntilRenderFlush:()=>Promise.resolve(),cleanup:()=>{instance.unmount()},clear:()=>{},flush:()=>{},pause:()=>{},resume:()=>{}};return instance}if(stdout)return renderTestMode(element,options,stdout,stdin);return renderInteractiveMode(element,options,stdout,stdin)}function renderTestMode(element,options,stdout,stdin){let chalkHasColors=currentChalkLevel()>0,renderState={hasEmbeddedAnsi:!1},isTTY2=stdout.isTTY===!0,resolvedInteractive=options?.interactive!==void 0?Boolean(options.interactive):isTTY2,useAltScreen=options?.alternateScreen===!0&&resolvedInteractive&&isTTY2,altScreenExited=!1;if(useAltScreen)stdout.write("\x1B[?1049h");let stderr=options?.stderr,debug=options?.debug??!1,stdinState=createInkStdinState(stdin??process.stdin,stdout),kittyManager=createKittyManager(stdin??process.stdin,stdout,resolveKittyManagerOptions(options?.kittyKeyboard)),cursorStore=createCursorStore(),cursorWasShown=!1,staticStore={renderedCount:0,fullStaticOutput:""},lastOutput="",pendingDebugWrites=[];function processBuffer(buffer,contentHeight){let output;if(!chalkHasColors&&!renderState.hasEmbeddedAnsi)output=bufferToText(buffer,{trimTrailingWhitespace:!0,trimEmptyLines:!1}),output=stripSilveryVS16(output);else output=bufferToStyledText(buffer,{trimTrailingWhitespace:!0,trimEmptyLines:!1}),output=stripSilveryVS16(output),output=restoreColonFormatSGR(output);if(contentHeight!=null)if(contentHeight>0){let lines=output.split(`
|
|
119
|
+
`);if(lines.length>contentHeight)output=lines.slice(0,contentHeight).join(`
|
|
120
|
+
`)}else output=output.replace(/\n+$/,"");else output=output.replace(/\n+$/,"");return output}function flushPendingDebugWrites(){if(pendingDebugWrites.length===0)return!1;let pending=pendingDebugWrites;pendingDebugWrites=[];let hadStdoutWrites=!1;for(let{target,data}of pending){let frameWithNewline=lastOutput.endsWith(`
|
|
121
|
+
`)?lastOutput:lastOutput+`
|
|
122
|
+
`;if(target==="stdout")stdout.write(data+frameWithNewline),hadStdoutWrites=!0;else(stderr??process.stderr).write(data),stdout.write(frameWithNewline),hadStdoutWrites=!0}return hadStdoutWrites}function InkFocusBridge({children}){let focusCtx=useContext12(InkFocusContext);return useInput((_input,key)=>{if(!focusCtx.isFocusEnabled)return;if(key.tab&&!key.shift)focusCtx.focusNext();else if(key.tab&&key.shift)focusCtx.focusPrevious();else if(key.escape)focusCtx.blur()}),React11.createElement(React11.Fragment,null,children)}function writeToStdout(data){if(lastOutput)stdout.write(data+lastOutput);else pendingDebugWrites.push({target:"stdout",data})}function writeToStderr(data){let target=stderr??process.stderr;if(debug)if(lastOutput)target.write(data),stdout.write(lastOutput);else pendingDebugWrites.push({target:"stderr",data});else target.write(data)}function wrapWithInkProviders(el){let stdoutCtxValue={stdout,write:writeToStdout},stderrCtxValue={stderr:stderr??process.stderr,write:writeToStderr};return React11.createElement(ForceStylesCtx.Provider,{value:!0},React11.createElement(InkRenderStateCtx.Provider,{value:renderState},React11.createElement(SilveryErrorBoundary,null,React11.createElement(InkStaticStoreCtx.Provider,{value:staticStore},React11.createElement(InkStdinCtx.Provider,{value:stdinState},React11.createElement(CursorProvider,{store:cursorStore},React11.createElement(InkCursorStoreCtx.Provider,{value:cursorStore},React11.createElement(StdoutContext.Provider,{value:stdoutCtxValue},React11.createElement(StderrContext.Provider,{value:stderrCtxValue},React11.createElement(InkFocusProvider,null,React11.createElement(InkFocusBridge,null,el)))))))))))}function handleBufferReady(_frame,buffer,contentHeight){let result=processBuffer(buffer,contentHeight);if(staticStore.fullStaticOutput)result=staticStore.fullStaticOutput+result;lastOutput=result}function writeFrame(_frame,buffer,contentHeight){if(altScreenExited)return;let result=processBuffer(buffer,contentHeight);if(staticStore.fullStaticOutput)result=staticStore.fullStaticOutput+result;if(lastOutput=result,flushPendingDebugWrites())return;let cursorState=cursorStore.accessors.getCursorState(),hidePrefix=cursorWasShown?"\x1B[?25l":"";if(cursorState?.visible){let cursorEsc=cursorState.x===0?"\x1B[G":`\x1B[${cursorState.x+1}G`;if(cursorState.y>0){let rowsUp=result.split(`
|
|
123
|
+
`).length-1-cursorState.y;if(rowsUp>0)cursorEsc+=`\x1B[${rowsUp}A`}cursorEsc+="\x1B[?25h",cursorWasShown=!0,stdout.write(hidePrefix+result+cursorEsc)}else if(cursorWasShown)cursorWasShown=!1,stdout.write(hidePrefix+result);else stdout.write(result)}let resolvedCols=stdout.columns||resolveTerminalColumns(),resolvedRows=stdout.rows!=null?stdout.rows:resolveTerminalRows(),app=render(element,{cols:resolvedCols,rows:resolvedRows,autoRender:!0,onFrame:writeFrame,onBufferReady:handleBufferReady,wrapRoot:wrapWithInkProviders,stdin}),onResize=()=>{let newCols=stdout.columns||resolveTerminalColumns(),newRows=stdout.rows!=null?stdout.rows:resolveTerminalRows();app.resize(newCols,newRows)};stdout.on("resize",onResize);function exitAlternateScreen(){if(useAltScreen&&!altScreenExited)altScreenExited=!0,stdout.write("\x1B[?1049l"),stdout.write("\x1B[?25h")}let unmounted=!1,instance={rerender:(newElement)=>{if(unmounted)return;app.rerender(newElement)},unmount:()=>{if(unmounted)return;unmounted=!0,kittyManager.cleanup(),exitAlternateScreen(),stdout.off("resize",onResize),app.unmount()},[Symbol.dispose](){instance.unmount()},waitUntilExit:()=>{if(app.exitCalled()){instance.unmount();let err=app.exitError();return err?Promise.reject(err):Promise.resolve()}return app.waitUntilExit()},waitUntilRenderFlush:()=>Promise.resolve(),cleanup:()=>{instance.unmount()},clear:()=>{},flush:()=>{},pause:()=>{},resume:()=>{},stdin:{write:(data)=>app.stdin.write(data)}};return instance}function renderInteractiveMode(element,options,stdout,stdin){let inkOptions={...options,alternateScreen:options?.alternateScreen??!1,mode:"inline",patchConsole:options?.patchConsole??!1,exitOnCtrlC:options?.exitOnCtrlC??!0,debug:options?.debug??!1},resolvedStdout=stdout??process.stdout,resolvedStdin=stdin??process.stdin,termDef={stdout:resolvedStdout,stdin:resolvedStdin};if(resolvedStdin.isTTY===!0)resolvedStdin.setRawMode(!0);let interactiveStdinState=createInkStdinState(resolvedStdin,resolvedStdout),kittyManager=createKittyManager(resolvedStdin,resolvedStdout,resolveKittyManagerOptions(options?.kittyKeyboard)),wrappedElement=React11.createElement(InkStdinCtx.Provider,{value:interactiveStdinState},element),silveryInstance=renderSync(wrappedElement,termDef,inkOptions),instance={...silveryInstance,waitUntilRenderFlush:()=>Promise.resolve(),cleanup:()=>{silveryInstance.unmount()}},origUnmount=instance.unmount;return instance.unmount=()=>{kittyManager.cleanup(),origUnmount()},instance}async function initInkCompat(engine){await ensureDefaultLayoutEngine(engine)}function renderToString(node,options){if(options?.isScreenReaderEnabled)return renderScreenReaderOutput(node);if(setInkStrictValidation(!0),!isLayoutEngineInitialized())setLayoutEngine(createFlexilyZeroEngine());let colorLevel=currentChalkLevel()>0?"truecolor":null,term2=createTerm({color:colorLevel}),plain=!1,staticStore={renderedCount:0,fullStaticOutput:""},wrapped=React11.createElement(InkStaticStoreCtx.Provider,{value:staticStore},React11.createElement(TermContext.Provider,{value:term2},node)),bufferHeight=24,layoutContentHeight=0,output=renderStringSync(wrapped,{width:options?.columns??80,height:bufferHeight,plain,trimTrailingWhitespace:!0,trimEmptyLines:!1,onContentHeight:(h)=>{layoutContentHeight=h}});if(output=stripSilveryVS16(output),layoutContentHeight>0&&layoutContentHeight<bufferHeight)output=output.split(`
|
|
124
|
+
`).slice(0,layoutContentHeight).join(`
|
|
125
|
+
`);else{let lines=output.split(`
|
|
126
|
+
`);while(lines.length>0&&lines[lines.length-1]==="")lines.pop();output=lines.join(`
|
|
127
|
+
`)}if(stripAnsi3(output).trim()===""){if(staticStore.fullStaticOutput)return staticStore.fullStaticOutput.replace(/\n$/,"");return""}let dynamicOutput=restoreColonFormatSGR(output);if(colonSGRTracker.clear(),staticStore.fullStaticOutput)return staticStore.fullStaticOutput+dynamicOutput;return dynamicOutput}function needsLayoutRecalculation(node){let current=node;while(current){if(current.layoutDirty||current.subtreeDirty||current.childrenDirty)return!0;current=current.parent}return!1}function measureElement2(nodeOrHandle){let node=typeof nodeOrHandle?.getNode==="function"?nodeOrHandle.getNode():nodeOrHandle;if(!node)return{width:0,height:0};if(node.contentRect&&!needsLayoutRecalculation(node))return measureElement(node);let root=node;while(root.parent)root=root.parent;if(root.layoutNode){let termWidth=process.stdout?.columns||100,termHeight=process.stdout?.rows||24;try{calculateLayout(root,termWidth,termHeight)}catch{}}return measureElement(node)}init_ansi();init_unicode();var cache=new Map;function measureText2(text){if(text.length===0)return{width:0,height:0};let cached=cache.get(text);if(cached)return cached;let result=measureText(text);return cache.set(text,result),result}export{useWindowSize,useStdout,useStdin,useStderr,usePaste,useInput,useFocusManager,useFocus,useCursor,useBoxMetrics,useApp,term,stripSilveryVS16,restoreColonFormatSGR,resolveFlags,renderToString,render2 as render,measureText2 as measureText,measureElement2 as measureElement,kittyModifiers,kittyFlags,initInkCompat,currentChalkLevel,createTerm,Transform,Text3 as Text,Static2 as Static,Spacer,Newline,Box3 as Box};
|
|
128
|
+
|
|
129
|
+
//# debugId=A789448E573EDBD064756E2164756E21
|