@visulima/tui 1.0.0-alpha.16 → 1.0.0-alpha.18

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.
Files changed (166) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/LICENSE.md +218 -253
  3. package/dist/components/accordion.d.ts +1 -1
  4. package/dist/components/approval-prompt.d.ts +1 -1
  5. package/dist/components/area-chart.d.ts +1 -1
  6. package/dist/components/badge.d.ts +1 -1
  7. package/dist/components/bar-chart.d.ts +1 -1
  8. package/dist/components/blink-dot.d.ts +1 -1
  9. package/dist/components/box.d.ts +4 -3
  10. package/dist/components/breadcrumb.d.ts +1 -1
  11. package/dist/components/button.d.ts +1 -1
  12. package/dist/components/calendar.d.ts +1 -1
  13. package/dist/components/canvas.js +1 -1
  14. package/dist/components/card.d.ts +1 -1
  15. package/dist/components/checkbox.d.ts +1 -1
  16. package/dist/components/collapsible.d.ts +1 -1
  17. package/dist/components/command-palette.d.ts +1 -1
  18. package/dist/components/content-switcher.d.ts +1 -1
  19. package/dist/components/controlled-scroll-view.d.ts +4 -3
  20. package/dist/components/controlled-scroll-view.js +1 -1
  21. package/dist/components/cursor.d.ts +4 -3
  22. package/dist/components/date-picker.d.ts +1 -1
  23. package/dist/components/definition-list.d.ts +1 -1
  24. package/dist/components/dialog.d.ts +5 -4
  25. package/dist/components/dialog.js +1 -1
  26. package/dist/components/divider.d.ts +1 -1
  27. package/dist/components/form.d.ts +1 -1
  28. package/dist/components/gauge.d.ts +1 -1
  29. package/dist/components/gradient.d.ts +1 -18
  30. package/dist/components/gradient.js +1 -4
  31. package/dist/components/heading.d.ts +1 -1
  32. package/dist/components/heatmap.d.ts +1 -1
  33. package/dist/components/histogram.d.ts +1 -1
  34. package/dist/components/kbd.d.ts +1 -1
  35. package/dist/components/line-chart.d.ts +1 -1
  36. package/dist/components/link.js +1 -1
  37. package/dist/components/loading-indicator.d.ts +2 -2
  38. package/dist/components/menu.d.ts +1 -1
  39. package/dist/components/message-bubble.d.ts +1 -1
  40. package/dist/components/model-badge.d.ts +1 -1
  41. package/dist/components/multi-select.d.ts +1 -1
  42. package/dist/components/option-list.d.ts +1 -1
  43. package/dist/components/paragraph.d.ts +1 -1
  44. package/dist/components/placeholder.d.ts +1 -1
  45. package/dist/components/progress-bar.d.ts +3 -2
  46. package/dist/components/radio-group.d.ts +1 -1
  47. package/dist/components/scatter-plot.d.ts +1 -1
  48. package/dist/components/scroll-bar-box.d.ts +4 -3
  49. package/dist/components/scroll-bar.d.ts +4 -3
  50. package/dist/components/scroll-list.d.ts +4 -3
  51. package/dist/components/scroll-list.js +1 -1
  52. package/dist/components/scroll-view.d.ts +4 -3
  53. package/dist/components/scroll-view.js +1 -1
  54. package/dist/components/search-input.d.ts +1 -1
  55. package/dist/components/select-input-indicator.d.ts +1 -1
  56. package/dist/components/select-input-item.d.ts +1 -1
  57. package/dist/components/select-input.d.ts +1 -1
  58. package/dist/components/shimmer-text.d.ts +1 -1
  59. package/dist/components/slider.d.ts +1 -1
  60. package/dist/components/sparkline.d.ts +1 -1
  61. package/dist/components/spinner.d.ts +1 -1
  62. package/dist/components/spinner.js +1 -1
  63. package/dist/components/static-render.d.ts +8 -3
  64. package/dist/components/static-render.js +1 -1
  65. package/dist/components/static.d.ts +3 -2
  66. package/dist/components/status-line.d.ts +1 -1
  67. package/dist/components/stepper.d.ts +1 -1
  68. package/dist/components/streaming-text.d.ts +1 -1
  69. package/dist/components/switch.d.ts +1 -1
  70. package/dist/components/tabs.d.ts +1 -1
  71. package/dist/components/tag.d.ts +1 -1
  72. package/dist/components/text.d.ts +3 -2
  73. package/dist/components/text.js +1 -1
  74. package/dist/components/tooltip.d.ts +1 -1
  75. package/dist/components/tree-view-entry.d.ts +4 -3
  76. package/dist/core/index.d.ts +2 -1
  77. package/dist/core/index.js +1 -1
  78. package/dist/ink/hooks/use-app.d.ts +1 -1
  79. package/dist/ink/hooks/use-box-metrics.d.ts +7 -4
  80. package/dist/ink/hooks/use-box-metrics.js +1 -1
  81. package/dist/ink/hooks/use-focus-manager.d.ts +2 -1
  82. package/dist/ink/hooks/use-input.d.ts +1 -1
  83. package/dist/ink/hooks/use-input.js +1 -1
  84. package/dist/ink/hooks/use-linked-scroll.d.ts +4 -3
  85. package/dist/ink/hooks/use-paste.d.ts +2 -1
  86. package/dist/ink/hooks/use-paste.js +1 -1
  87. package/dist/ink/hooks/use-text-selection.d.ts +5 -4
  88. package/dist/ink/hooks/use-text-selection.js +1 -1
  89. package/dist/ink/hooks/use-window-size.js +1 -1
  90. package/dist/ink/index.d.ts +10 -7
  91. package/dist/ink/index.js +1 -1
  92. package/dist/packem_shared/ControlledScrollView-CIc-x1Cx.js +1 -0
  93. package/dist/packem_shared/{DevTools-ClnTSU76.js → DevTools-ClAYpMVI.js} +1 -1
  94. package/dist/packem_shared/InputParser-B_qZcN3r.js +2 -0
  95. package/dist/packem_shared/{LayoutNode-Q7nU3hmO.js → LayoutNode-B8zej4dm.js} +1 -1
  96. package/dist/packem_shared/{MouseProvider-CHU5DuwC.js → MouseProvider-PnIUKURs.js} +1 -1
  97. package/dist/packem_shared/{ScrollList-Dxgv-mhZ.js → ScrollList-C7nZ9ufK.js} +1 -1
  98. package/dist/packem_shared/{ScrollView-Dq2v5zJS.js → ScrollView-DKZ8OM-m.js} +1 -1
  99. package/dist/packem_shared/TuiApp-BVDXP0Cv.js +1 -0
  100. package/dist/packem_shared/ansi-parser-B6uXaq65.js +1 -0
  101. package/dist/packem_shared/colorize-DbTZMrJO.js +1 -0
  102. package/dist/packem_shared/{comparePoints-l0iqUoL_.js → comparePoints-YxQfR_zq.js} +1 -1
  103. package/dist/packem_shared/{controlled-scroll-view-CikQ90_V.js → controlled-scroll-view-CcUS50jx.js} +1 -1
  104. package/dist/packem_shared/createInlineLoop-DRNZ7jqH.js +2 -0
  105. package/dist/packem_shared/createScreen-CrLrxA6t.js +3 -0
  106. package/dist/packem_shared/dom-BG-LS10p.js +1 -0
  107. package/dist/packem_shared/{dom.d-BZZeZlyP.d.ts → dom.d-CcFuBd-k.d.ts} +11 -1
  108. package/dist/packem_shared/{getPathToRoot-Nb2eTx2o.js → getPathToRoot-D5Hns9Er.js} +1 -1
  109. package/dist/packem_shared/getScrollHeight-ClEOyLHH.js +1 -0
  110. package/dist/packem_shared/input.d-CgxV2e8U.d.ts +90 -0
  111. package/dist/packem_shared/{layout-P24eyWyL.js → layout-BMo200nF.js} +1 -1
  112. package/dist/packem_shared/measure-text-DDjHT1jD.js +3 -0
  113. package/dist/packem_shared/{measureElement-CRKlFSvD.js → measureElement-BTtTFZg4.js} +1 -1
  114. package/dist/packem_shared/parseSgrMouse-Ccj70ijb.js +1 -0
  115. package/dist/packem_shared/processLayout-FEKj_mWu.js +1 -0
  116. package/dist/packem_shared/{reconciler-tOH9yL_j.js → reconciler-CUbhOvcr.js} +1 -1
  117. package/dist/packem_shared/{reconciler-BQvF1kRj.js → reconciler-DIfG72R9.js} +1 -1
  118. package/dist/packem_shared/{render-yGJFE4of.js → render-Dh7HMhK1.js} +1 -1
  119. package/dist/packem_shared/render-bdbSzkJo.js +26 -0
  120. package/dist/packem_shared/{render.d-BJmVQ_cd.d.ts → render.d-B1kiO3Ca.d.ts} +19 -1
  121. package/dist/packem_shared/{renderToString-D4JqS-Zv.js → renderToString-BbQiRHrd.js} +1 -1
  122. package/dist/packem_shared/{renderToString-GyN-Rw9F.js → renderToString-DVE0cEHt.js} +1 -1
  123. package/dist/packem_shared/renderTreeToBuffer-CZilzyhN.js +2 -0
  124. package/dist/packem_shared/renderer-Cfi6ZyHf.js +17 -0
  125. package/dist/packem_shared/{selection.d-vfuEzv1p.d.ts → selection.d-DAh7REnW.d.ts} +1 -1
  126. package/dist/packem_shared/setEnableStyledLineCache-D2gZbwFM.js +1 -0
  127. package/dist/packem_shared/squashTextNodesWithMap-DCdi3SZ2.js +1 -0
  128. package/dist/packem_shared/{styles.d-i6Mejqz2.d.ts → styles.d-cMo36xQz.d.ts} +37 -105
  129. package/dist/packem_shared/text-width-BU2eeTWn.js +2 -0
  130. package/dist/packem_shared/utils-CoviI5Vm.js +1 -0
  131. package/dist/packem_shared/{wrapOrTruncateStyledLine-D29Fq7pW.js → wrapOrTruncateStyledLine-BZ00SM8i.js} +1 -1
  132. package/dist/react/index.d.ts +2 -1
  133. package/dist/react/index.js +1 -1
  134. package/dist/testing/index.d.ts +5 -4
  135. package/dist/testing/index.js +1 -1
  136. package/index.js +539 -691
  137. package/package.json +28 -16
  138. package/dist/packem_shared/ControlledScrollView-X_OTc-Cw.js +0 -1
  139. package/dist/packem_shared/InputParser-Cfi5GVKV.js +0 -2
  140. package/dist/packem_shared/TuiApp-BSWPFrDu.js +0 -1
  141. package/dist/packem_shared/ansi-parser-C5JuL732.js +0 -1
  142. package/dist/packem_shared/boxes-DyY_LXCi.js +0 -1
  143. package/dist/packem_shared/colorize-gy_cY-wC.js +0 -2
  144. package/dist/packem_shared/constants-D12jy2Zh-RSfxu1eM.js +0 -1
  145. package/dist/packem_shared/createInlineLoop-fhXU93QT.js +0 -2
  146. package/dist/packem_shared/createScreen-87XLHZq6.js +0 -3
  147. package/dist/packem_shared/dom-CMbdnYbk.js +0 -8
  148. package/dist/packem_shared/erase-DeDffywz.js +0 -1
  149. package/dist/packem_shared/get-string-width-4oMZhv2Q.js +0 -1
  150. package/dist/packem_shared/getScrollHeight-BTEY8ewu.js +0 -1
  151. package/dist/packem_shared/index-LwZN2xbk.js +0 -75
  152. package/dist/packem_shared/index.d-Bk52cbgN.d.ts +0 -14
  153. package/dist/packem_shared/index.server.d-eZWyC2Ku.d.ts +0 -5
  154. package/dist/packem_shared/input.d-D-Yxqha8.d.ts +0 -172
  155. package/dist/packem_shared/measure-text-CIs55Wao.js +0 -3
  156. package/dist/packem_shared/mode-BOIU4Roy.js +0 -1
  157. package/dist/packem_shared/parseSgrMouse-DoBY7MKw.js +0 -1
  158. package/dist/packem_shared/processLayout-Dmgf0LO6.js +0 -1
  159. package/dist/packem_shared/render-D9bHMHrx.js +0 -26
  160. package/dist/packem_shared/renderTreeToBuffer-DWl5_yTW.js +0 -2
  161. package/dist/packem_shared/renderer-Cidd3s9K.js +0 -17
  162. package/dist/packem_shared/setEnableStyledLineCache-Aja0FbWo.js +0 -1
  163. package/dist/packem_shared/squashTextNodesWithMap-Cpqmc45i.js +0 -1
  164. package/dist/packem_shared/strip-C6HQYmlg.js +0 -1
  165. package/dist/packem_shared/text-width-DSx26OmB.js +0 -2
  166. package/dist/packem_shared/utils-THUhYKG2.js +0 -1
@@ -0,0 +1,26 @@
1
+ var Oe=Object.defineProperty;var S=(e,t)=>Oe(e,"name",{value:t,configurable:!0});import{createRequire as Ee}from"node:module";import{jsxs as D,jsx as x}from"react/jsx-runtime";import{setMode as re,BracketedPasteMode as ie,resetMode as oe,cursorShow as dt,cursorUp as Rt,cursorTo as Et,cursorDown as Ie,cursorHide as G,eraseLines as z,cursorNextLine as De,eraseLineEnd as Be,createDecMode as Ae,ALT_SCREEN_ON as Me,clearScreenAndHomeCursor as We,ALT_SCREEN_OFF as _e}from"@visulima/ansi";import{wordWrap as He}from"@visulima/string";import se from"is-in-ci";import Ue from"patch-console";import{ConcurrentRoot as Ke,LegacyRoot as je}from"react-reconciler/constants.js";import{onExit as Fe}from"signal-exit";import _ from"yoga-layout";import{a as qe}from"./accessibility-context-DDyHTwmA.js";import{PureComponent as ze,useState as gt,useRef as B,useCallback as w,useEffect as Tt,useMemo as q}from"react";import{e as Ge}from"./animation-context-DW3p-vpk.js";import{t as Ve}from"./app-context-BVpKlG1z.js";import{o as Qe}from"./cursor-context-CFviBqPX.js";import{parseStacktrace as Ze}from"@visulima/error/stacktrace";import tr from"code-excerpt";import{Box as W}from"../components/box.js";import{Text as A}from"../components/text.js";import{o as er}from"./focus-context-CsT69klR.js";import{t as rr}from"./stderr-context-BzEaUICS.js";import{e as ir}from"./stdin-context-BTaaFagk.js";import{t as or}from"./stdout-context-BnblEPez.js";import{A as sr,B as nr,r as ur,R as ar}from"./renderer-Cfi6ZyHf.js";import{c as lr,e as dr}from"./dom-BG-LS10p.js";import{resolveFlags as cr}from"./kittyFlags-C3rZLbcK.js";import{a as hr}from"./measure-text-DDjHT1jD.js";import{L as $,u as fr}from"./reconciler-CUbhOvcr.js";import{measureAndExtractObservers as pr}from"./ResizeObserverEntry-Dq0dk8Kq.js";import{calculateScroll as mr}from"./getScrollHeight-ClEOyLHH.js";import{g as J}from"./utils-CoviI5Vm.js";import __cjs_mod__ from "node:module"; // -- packem CommonJS require shim --
2
+ const require = __cjs_mod__.createRequire(import.meta.url);
3
+ const Ne=Ee(import.meta.url),tt=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,lt=S(e=>{if(typeof tt<"u"&&tt.versions&&tt.versions.node){const[t,r]=tt.versions.node.split(".").map(Number);if(t>22||t===22&&r>=3||t===20&&r>=16)return tt.getBuiltinModule(e)}return Ne(e)},"__cjs_getBuiltinModule"),I=tt,{cwd:ke}=I,{Stream:Le}=lt("node:stream"),{Buffer:zt}=lt("node:buffer"),{Console:$e}=lt("node:console"),{EventEmitter:Ye}=lt("node:events"),{existsSync:Xe,readFileSync:Je}=lt("node:fs");var gr=Object.defineProperty,N=S((e,t)=>gr(e,"name",{value:t,configurable:!0}),"i$2");const ne="\x1B[200~",Gt="\x1B[201~",vr=N(e=>e>=48&&e<=63,"isCsiParameterByte"),br=N(e=>e>=32&&e<=47,"isCsiIntermediateByte"),ue=N(e=>e>=64&&e<=126,"isCsiFinalByte"),wr=N((e,t,r)=>{const i=t+r+1;let o=i;for(;o<e.length;o++){const a=e.codePointAt(o);if(a===void 0)return"pending";if(!(vr(a)||br(a))&&!(a===91&&o===i))return ue(a)?{nextIndex:o+1,sequence:e.slice(t,o+1)}:void 0}return"pending"},"parseCsiSequence"),yr=N((e,t,r)=>{const i=t+r+2;if(i>e.length)return"pending";const o=e.codePointAt(i-1);if(!(o===void 0||!ue(o)))return{nextIndex:i,sequence:e.slice(t,i)}},"parseSs3Sequence"),Vt=N((e,t,r)=>{const i=e[t+r];if(i===void 0)return"pending";if(i==="[")return wr(e,t,r);if(i==="O")return yr(e,t,r)},"parseControlSequence"),Cr=N((e,t)=>{const r=e.codePointAt(t+1),i=r!==void 0&&r>65535?2:1,o=t+1+i;return{nextIndex:o,sequence:e.slice(t,o)}},"parseEscapedCodePoint"),Tr=N((e,t)=>{if(t===e.length-1)return"pending";if(e[t+1]==="\x1B"){if(t+2>=e.length)return"pending";const i=Vt(e,t,2);return i==="pending"?"pending":i||{nextIndex:t+2,sequence:e.slice(t,t+2)}}const r=Vt(e,t,1);return r==="pending"?"pending":r||Cr(e,t)},"parseEscapeSequence"),Qt=N((e,t)=>{let r=0;for(let i=0;i<e.length;i++){const o=e[i];(o===""||o==="\b")&&(i>r&&t.push(e.slice(r,i)),t.push(o),r=i+1)}r<e.length&&t.push(e.slice(r))},"splitDeleteAndBackspace"),xr=N(e=>{const t=[];let r=0;const i=N(o=>({events:t,pending:e.slice(o)}),"pendingFrom");for(;r<e.length;){const o=e.indexOf("\x1B",r);if(o===-1)return Qt(e.slice(r),t),{events:t,pending:""};o>r&&Qt(e.slice(r,o),t);const a=Tr(e,o);if(a==="pending")return i(o);if(a.sequence===ne){const s=a.nextIndex,u=e.indexOf(Gt,s);if(u===-1)return i(o);t.push({paste:e.slice(s,u)}),r=u+Gt.length;continue}t.push(a.sequence),r=a.nextIndex}return{events:t,pending:""}},"parseKeypresses"),Rr=N(()=>{let e="";return{flushPendingEscape(){if(!e.startsWith("\x1B"))return;const t=e;return e="",t},hasPendingEscape(){return e.startsWith("\x1B")&&!e.startsWith(ne)&&e!=="\x1B[200"},push(t){const r=xr(e+t);return e=r.pending,r.events},reset(){e=""}}},"createInputParser");var Sr=Object.defineProperty,ae=S((e,t)=>Sr(e,"name",{value:t,configurable:!0}),"x");const Xt=ae(e=>{if(!e)return e;const t=ke();return e.replace(`file://${t}/`,"").replace(`${t}/`,"")},"cleanupPath");function le({error:e}){const t=Ze(e),r=t[0],i=Xt(r?.file);let o,a=0;if(i&&r?.line&&Xe(i)){const s=Je(i,"utf8");if(o=tr(s,r.line),o)for(const{line:u}of o)a=Math.max(a,String(u).length)}return D(W,{flexDirection:"column",padding:1,children:[D(W,{children:[D(A,{backgroundColor:"red",color:"white",children:[" ","ERROR"," "]}),D(A,{children:[" ",e.message]})]}),r&&i?x(W,{marginTop:1,children:D(A,{dimColor:!0,children:[i,":",r.line,":",r.column]})}):null,r&&o?x(W,{flexDirection:"column",marginTop:1,children:o.map(({line:s,value:u})=>D(W,{children:[x(W,{width:a+1,children:D(A,{"aria-label":s===r.line?`Line ${s}, error`:`Line ${s}`,backgroundColor:s===r.line?"red":void 0,color:s===r.line?"white":void 0,dimColor:s!==r.line,children:[String(s).padStart(a," "),":"]})}),x(A,{backgroundColor:s===r.line?"red":void 0,color:s===r.line?"white":void 0,children:` ${u}`},s)]},s))}):null,t.length>0?x(W,{flexDirection:"column",marginTop:1,children:t.map(s=>{const u=Xt(s.file)??"";return!s.methodName&&!s.file?D(W,{children:[x(A,{dimColor:!0,children:"- "}),x(A,{bold:!0,dimColor:!0,children:s.raw})]},s.raw):D(W,{children:[x(A,{dimColor:!0,children:"- "}),x(A,{bold:!0,dimColor:!0,children:s.methodName??"<anonymous>"}),D(A,{"aria-label":`at ${u} line ${s.line} column ${s.column}`,color:"gray",dimColor:!0,children:[" ","(",u,":",s.line,":",s.column,")"]})]},s.raw)})}):null]})}S(le,"h$1");ae(le,"ErrorOverview");var Pr=Object.defineProperty,Or=S((e,t)=>Pr(e,"name",{value:t,configurable:!0}),"o$1");let Er=class extends ze{static{S(this,"i")}static{Or(this,"ErrorBoundary")}static displayName="InternalErrorBoundary";static getDerivedStateFromError(t){return{error:t}}state={error:void 0};componentDidCatch(t){this.props.onError(t)}render(){return this.state.error?x(le,{error:this.state.error}):this.props.children}};var Nr=Object.defineProperty,Jt=S((e,t)=>Nr(e,"name",{value:t,configurable:!0}),"J$1");const kr=" ",Lr="\x1B[Z",$r="\x1B",Ir=re(ie),Zt=oe(ie),de=Jt(({children:e,exitOnCtrlC:t,interactive:r,onExit:i,onWaitUntilRenderFlush:o,renderThrottleMs:a,setCursorPosition:s,stderr:u,stdin:n,stdout:h,writeToStderr:m,writeToStdout:v})=>{const[c,d]=gt(!0),[b,T]=gt(void 0),[,y]=gt([]),M=B(0),k=B(new Map),H=B(void 0),P=B(0),L=B(!1),U=B(0),[C]=gt(()=>{const l=new Ye;return l.setMaxListeners(1/0),l}),K=B(void 0),it=B(void 0);it.current??=Rr();const ot=B(void 0),kt=B(!1),ve=20,V=w(()=>{ot.current&&(clearTimeout(ot.current),ot.current=void 0)},[]),Q=w(()=>{H.current&&(clearTimeout(H.current),H.current=void 0)},[]),ht=w(()=>{if(Q(),k.current.size===0)return;let l=Number.POSITIVE_INFINITY;for(const f of k.current.values())l=Math.min(l,f.nextDueTime);const p=Math.max(0,l-performance.now());H.current=setTimeout(()=>{H.current=void 0;const f=performance.now(),R=[...k.current.values()];for(const O of R){if(f<O.nextDueTime)continue;O.callback(f);const Se=f-O.startTime,Pe=Math.floor(Se/O.interval)+1;O.nextDueTime=O.startTime+Pe*O.interval}ht()},p)},[Q]),Lt=w((l,p)=>{const f=performance.now();return k.current.set(l,{callback:l,interval:p,nextDueTime:f+p,startTime:f}),ht(),{startTime:f,unsubscribe(){if(k.current.delete(l),k.current.size===0){Q();return}ht()}}},[Q,ht]);Tt(()=>()=>{Q()},[Q]);const j=n.isTTY,$t=w(()=>{K.current&&(n.removeListener("readable",K.current),K.current=void 0)},[n]),ft=w(()=>{it.current?.reset(),V(),$t()},[V,$t]),X=w(()=>{L.current=!1,n.setRawMode(!1),n.unref(),P.current=0,ft()},[n,ft]),st=w(l=>{j&&(P.current>0||L.current)&&X(),i(l)},[j,X,i]),It=w(l=>{if(l.includes("")&&t){st();return}l===$r&&c&&T(p=>{if(!p)return p})},[t,st,c]),nt=w(l=>{It(l),C.emit("input",l)},[It,C]),Dt=w(()=>{V(),ot.current=setTimeout(()=>{ot.current=void 0;const l=it.current.flushPendingEscape();l&&nt(l)},ve)},[V,nt]),Ct=w(()=>{V();let l;for(;(l=n.read())!==null;){const p=it.current.push(l);for(const f of p)if(typeof f=="string")nt(f);else{if(C.listenerCount("paste")===0){kt.current||(kt.current=!0,m(`Warning: useInput() received bracketed paste because no usePaste() handler is active. This fallback is deprecated and will be removed in the next major version. Migrate paste handling to usePaste().
4
+ `)),nt(f.paste);continue}C.emit("paste",f.paste)}}it.current.hasPendingEscape()&&Dt()},[n,nt,V,Dt,m,C]),Bt=w(()=>{K.current||(K.current=Ct,n.addListener("readable",Ct))},[n,Ct]),At=w(l=>{if(!j)throw n===I.stdin?new Error(`Raw mode is not supported on the current process.stdin, which Ink uses as input stream by default.
5
+ Read about how to prevent this error on https://github.com/vadimdemedes/ink/#israwmodesupported`):new Error(`Raw mode is not supported on the stdin provided to Ink.
6
+ Read about how to prevent this error on https://github.com/vadimdemedes/ink/#israwmodesupported`);if(n.setEncoding("utf8"),l){if(P.current===0){const p=L.current;L.current=!1,p||(n.ref(),n.setRawMode(!0)),Bt()}P.current++;return}P.current!==0&&--P.current===0&&(ft(),L.current=!0,queueMicrotask(()=>{L.current&&X()}))},[j,n,Bt,ft,X]),Mt=w(l=>{if(h.isTTY){if(l){U.current===0&&h.write(Ir),U.current++;return}U.current!==0&&--U.current===0&&h.write(Zt)}},[h]),Wt=w((l,p)=>{const f=l.findIndex(R=>R.id===p);for(let R=f+1;R<l.length;R++){const O=l[R];if(O?.isActive)return O.id}},[]),_t=w((l,p)=>{const f=l.findIndex(R=>R.id===p);for(let R=f-1;R>=0;R--){const O=l[R];if(O?.isActive)return O.id}},[]),pt=w(()=>{y(l=>(T(p=>{const f=l.find(R=>R.isActive)?.id;return Wt(l,p)??f}),l))},[Wt]),mt=w(()=>{y(l=>(T(p=>{const f=l.findLast(R=>R.isActive)?.id;return _t(l,p)??f}),l))},[_t]);Tt(()=>{const l=Jt(f=>{!c||M.current===0||(f===kr&&pt(),f===Lr&&mt())},"handleTabNavigation");C.on("input",l);const p=C;return()=>{p.off("input",l)}},[c,pt,mt,C]);const Ht=w(()=>{d(!0)},[]),Ut=w(()=>{d(!1)},[]),Kt=w(l=>{y(p=>(p.some(f=>f?.id===l)&&T(l),p))},[]),jt=w((l,{autoFocus:p})=>{y(f=>(M.current=f.length+1,[...f,{id:l,isActive:!0}])),p&&T(f=>f||l)},[]),Ft=w(l=>{T(p=>{if(p!==l)return p}),y(p=>{const f=p.filter(R=>R.id!==l);return M.current=f.length,f})},[]),qt=w(l=>{y(p=>p.map(f=>f.id!==l?f:{id:l,isActive:!0}))},[]),Yt=w(l=>{T(p=>{if(p!==l)return p}),y(p=>p.map(f=>f.id!==l?f:{id:l,isActive:!1}))},[]);Tt(()=>()=>{const l=!h.destroyed&&!h.writableEnded;r&&l&&h.write(dt),j&&(P.current>0||L.current)&&X(),U.current>0&&(h.isTTY&&l&&h.write(Zt),U.current=0)},[h,j,X,r]);const be=q(()=>({exit:st,waitUntilRenderFlush:o}),[st,o]),we=q(()=>({internal_eventEmitter:C,internal_exitOnCtrlC:t,isRawModeSupported:j,setBracketedPasteMode:Mt,setRawMode:At,stdin:n}),[n,At,Mt,j,t,C]),ye=q(()=>({stdout:h,write:v}),[h,v]),Ce=q(()=>({stderr:u,write:m}),[u,m]),Te=q(()=>({setCursorPosition:s}),[s]),xe=q(()=>({activate:qt,activeId:b,add:jt,deactivate:Yt,disableFocus:Ut,enableFocus:Ht,focus:Kt,focusNext:pt,focusPrevious:mt,remove:Ft}),[b,jt,Ft,qt,Yt,Ht,Ut,pt,mt,Kt]),Re=q(()=>({renderThrottleMs:a,subscribe:Lt}),[Lt,a]);return x(Ve.Provider,{value:be,children:x(ir.Provider,{value:we,children:x(or.Provider,{value:ye,children:x(rr.Provider,{value:Ce,children:x(er.Provider,{value:xe,children:x(Ge.Provider,{value:Re,children:x(Qe.Provider,{value:Te,children:x(Er,{onError:st,children:e})})})})})})})})},"App");de.displayName="InternalApp";var Dr=Object.defineProperty,Br=S((e,t)=>Dr(e,"name",{value:t,configurable:!0}),"m$2");const Ar=Br((e,t,r)=>{if(r<=0||!e.yogaNode)return"";const{yogaNode:i}=e,o=i.getComputedBorder(_.EDGE_LEFT),a=i.getComputedBorder(_.EDGE_RIGHT),s=i.getComputedBorder(_.EDGE_TOP),u=i.getComputedPadding(_.EDGE_LEFT),n=i.getComputedPadding(_.EDGE_RIGHT),h=i.getComputedPadding(_.EDGE_TOP),m=Math.round(i.getComputedWidth()-o-a-u-n);if(m<=0)return"";const v=new sr({height:r,width:m}),c=-(e.internal_scrollState?.scrollLeft??0)-o-u,d=-t-s-h;for(const b of e.childNodes)nr(b,v,{absoluteOffsetX:c,absoluteOffsetY:d,offsetX:c,offsetY:d,skipStaticElements:!1});return v.get().output},"composeBackbufferSlice"),St=new WeakMap;var Mr=Object.defineProperty,ct=S((e,t)=>Mr(e,"name",{value:t,configurable:!0}),"e");const bt=ct((e,t)=>e?.x!==t?.x||e?.y!==t?.y,"cursorPositionChanged"),rt=ct((e,t)=>{if(!t)return"";const r=e-t.y;return(r>0?Rt(r):"")+Et(t.x)+dt},"buildCursorSuffix"),ce=ct((e,t)=>{if(!t)return"";const r=e-1-t.y;return(r>0?Ie(r):"")+Et(0)},"buildReturnToBottom"),he=ct(e=>{const t=e.cursorWasShown?G:"",r=ce(e.previousLineCount,e.previousCursorPosition),i=rt(e.visibleLineCount,e.cursorPosition);return t+r+i},"buildCursorOnlySequence"),wt=ct((e,t,r)=>e?G+ce(t,r):"","buildReturnToBottomPrefix");var Wr=Object.defineProperty,E=S((e,t)=>Wr(e,"name",{value:t,configurable:!0}),"c$2");const at=E((e,t)=>t.endsWith(`
7
+ `)?e.length-1:e.length,"visibleLineCount"),fe=E(e=>e.rows||1/0,"getViewportRows"),yt=E((e,t)=>Math.min(e,fe(t)),"clampToViewport"),_r=E((e,{showCursor:t=!1}={})=>{let r=0,i="",o=!1,a,s=!1,u,n=!1;const h=E(()=>s?a:void 0,"getActiveCursor"),m=E((c,d)=>{const b=bt(d,u);return c!==i||b},"hasChanges"),v=E(c=>{!t&&!o&&(e.write(G),o=!0);const d=h();s=!1;const b=bt(d,u);if(!m(c,d))return!1;const T=c.split(`
8
+ `),y=at(T,c),M=rt(y,d);if(c===i&&b)e.write(he({cursorPosition:d,cursorWasShown:n,previousCursorPosition:u,previousLineCount:r,visibleLineCount:y}));else{i=c;const k=wt(n,r,u);e.write(k+z(yt(r,e))+c+M),r=T.length}return u=d?{...d}:void 0,n=d!==void 0,!0},"render");return v.clear=()=>{const c=wt(n,r,u);e.write(c+z(yt(r,e))),i="",r=0,u=void 0,n=!1},v.done=()=>{i="",r=0,u=void 0,n=!1,t||(e.write(dt),o=!1)},v.reset=()=>{i="",r=0,u=void 0,n=!1},v.sync=c=>{const d=s?a:void 0;s=!1;const b=c.split(`
9
+ `);i=c,r=b.length,!d&&n&&e.write(G),d&&e.write(rt(at(b,c),d)),u=d?{...d}:void 0,n=d!==void 0},v.setCursorPosition=c=>{a=c,s=!0},v.isCursorDirty=()=>s,v.willRender=c=>m(c,h()),v},"createStandard"),Hr=E((e,{showCursor:t=!1}={})=>{let r=[],i="",o=!1,a,s=!1,u,n=!1;const h=E(()=>s?a:void 0,"getActiveCursor"),m=E((c,d)=>{const b=bt(d,u);return c!==i||b},"hasChanges"),v=E(c=>{!t&&!o&&(e.write(G),o=!0);const d=h();s=!1;const b=bt(d,u);if(!m(c,d))return!1;const T=c.split(`
10
+ `),y=at(T,c),M=at(r,i);if(c===i&&b)return e.write(he({cursorPosition:d,cursorWasShown:n,previousCursorPosition:u,previousLineCount:r.length,visibleLineCount:y})),u=d?{...d}:void 0,n=d!==void 0,!0;const k=wt(n,r.length,u);if(c===`
11
+ `||i.length===0){const C=rt(y,d);return e.write(k+z(yt(r.length,e))+c+C),n=d!==void 0,u=d?{...d}:void 0,i=c,r=T,!0}const H=c.endsWith(`
12
+ `),P=[k],L=fe(e);if(y<M){const C=i.endsWith(`
13
+ `)?1:0;P.push(z(Math.min(M-y+C,L)),Rt(Math.min(y,L-1)))}else P.push(Rt(Math.min(M-1,L-1)));for(let C=0;C<y;C++){const K=C===y-1;if(T[C]===r[C]){(!K||H)&&P.push(De());continue}P.push(Et(0)+T[C]+Be+(K&&!H?"":`
14
+ `))}const U=rt(y,d);return P.push(U),e.write(P.join("")),n=d!==void 0,u=d?{...d}:void 0,i=c,r=T,!0},"render");return v.clear=()=>{const c=wt(n,r.length,u);e.write(c+z(yt(r.length,e))),i="",r=[],u=void 0,n=!1},v.done=()=>{i="",r=[],u=void 0,n=!1,t||(e.write(dt),o=!1)},v.reset=()=>{i="",r=[],u=void 0,n=!1},v.sync=c=>{const d=s?a:void 0;s=!1;const b=c.split(`
15
+ `);i=c,r=b,!d&&n&&e.write(G),d&&e.write(rt(at(b,c),d)),u=d?{...d}:void 0,n=d!==void 0},v.setCursorPosition=c=>{a=c,s=!0},v.isCursorDirty=()=>s,v.willRender=c=>m(c,h()),v},"createIncremental"),Ur=E((e,{incremental:t=!1,showCursor:r=!1}={})=>t?Hr(e,{showCursor:r}):_r(e,{showCursor:r}),"create"),Kr={create:Ur};var jr=Object.defineProperty,Fr=S((e,t)=>jr(e,"name",{value:t,configurable:!0}),"t");const pe=Ae(2026),Y=re(pe),F=oe(pe);function me(e,t){return"isTTY"in e&&e.isTTY&&(t??!se)}S(me,"shouldSynchronize");Fr(me,"shouldSynchronize");var qr=Object.defineProperty,Pt=S((e,t)=>qr(e,"name",{value:t,configurable:!0}),"o");let Z;const Yr=Pt(()=>{if(Z!==!1){if(Z!==void 0)return Z;try{return Z=require("../../index.js").Renderer,Z}catch{Z=!1;return}}},"getRendererClass"),zr=Pt(e=>{const t=Yr();if(!t)return;let r,i=0,o=0;const a=Pt((s,u)=>{(!r||i!==s||o!==u)&&(r?r.resize(s,u):r=new t(s,u),i=s,o=u)},"ensureRenderer");return{clear(){if(r){const s=new Uint32Array(i*o*2),u=65535;for(let n=0;n<s.length;n+=2)s[n]=32,s[n+1]=u;r.render(s)}},destroy(){r=void 0},render(s,u,n){if(a(u,n),!!r){e.isTTY&&r.writeRaw(Y);try{r.render(s)}finally{e.isTTY&&r.writeRaw(F)}}},resize(s,u){a(s,u)}}},"createNative");var Gr=Object.defineProperty,et=S((e,t)=>Gr(e,"name",{value:t,configurable:!0}),"n$1");function Ot(e,t=0,r={}){const i=r.leading??!0,o=r.trailing??!0;let a,s,u,n;const h=et(()=>{if(s===void 0)return;const b=s;s=void 0,n=e(...b)},"invoke"),m=et(()=>{a!==void 0&&(clearTimeout(a),a=void 0)},"clearTimer"),v=et(()=>{a=void 0,o&&h(),s=void 0,u=void 0},"onTimerEnd"),c=et(()=>{m(),a=setTimeout(v,t)},"scheduleTimer"),d=et(function(...b){const T=Date.now();if(u??=T,T-u>=t)return s=b,h(),u=T,c(),n;s=b;const y=a===void 0;return c(),i&&y&&h(),n},"throttled");return d.cancel=()=>{m(),s=void 0,u=void 0},d.flush=()=>(m(),h(),u=void 0,n),d}S(Ot,"throttle");et(Ot,"throttle");var Vr=Object.defineProperty,g=S((e,t)=>Vr(e,"name",{value:t,configurable:!0}),"n");console.Console||(console.Console=$e);const ut=g(()=>{},"noop"),te=g(async()=>new Promise(e=>{setImmediate(e)}),"yieldImmediate"),Qr=27,Xr=91,Jr=63,Zr=117,ti=48,ei=57,ri=g(e=>e>=ti&&e<=ei,"isDigitByte"),ge=g((e,t)=>{if(e[t]!==Qr||e[t+1]!==Xr||e[t+2]!==Jr)return;let r=t+3;const i=r;for(;r<e.length&&ri(e[r]);)r++;if(r!==i){if(r===e.length)return{state:"partial"};if(e[r]===Zr)return{endIndex:r,state:"complete"}}},"matchKittyQueryResponse"),ii=g(e=>{for(let t=0;t<e.length;t++)if(ge(e,t)?.state==="complete")return!0;return!1},"hasCompleteKittyQueryResponse"),oi=g(e=>{const t=[];let r=0;for(;r<e.length;){const i=ge(e,r);if(i?.state==="complete"){r=i.endIndex+1;continue}if(i?.state==="partial")break;t.push(e[r]),r++}return t},"stripKittyQueryResponsesAndTrailingPartial"),si=g(({isTty:e,isUnmounting:t,nextOutputHeight:r,previousOutputHeight:i,viewportRows:o})=>{if(!e)return!1;const a=i>0,s=i>=o,u=i>o,n=r>o,h=s&&r<o;return u||n&&a||h||t&&s},"shouldClearTerminalForFrame"),xt=g(e=>e instanceof Error||Object.prototype.toString.call(e)==="[object Error]","isErrorInput"),ee=g(e=>{const t=!e.destroyed&&!e.writableEnded&&(e.writable??!0),r=e._writableState!==void 0||e.writableLength!==void 0;return{canWriteToStdout:t,hasWritableState:r}},"getWritableStreamState"),vt=g((e,t)=>{if(!e||typeof e.flush!="function")return;const r=e;t?r.flush():typeof r.cancel=="function"&&r.cancel()},"settleThrottle");class ni{static{S(this,"vt")}static{g(this,"Ink")}isConcurrent;options;log;manualCursorPosition;renderedCursorPosition;renderedCursorRequested;throttledLog;isScreenReaderEnabled;interactive;renderThrottleMs;alternateScreen;isUnmounted;isUnmounting;lastOutput;lastOutputToRender;lastOutputHeight;lastTerminalWidth;nativeLog;useNativeRenderer;container;rootNode;fullStaticOutput;backbufferNode;backbufferMultiWarned=!1;exitPromise;exitResult;beforeExitHandler;restoreConsole;unsubscribeResize;throttledOnRender;hasPendingThrottledRender=!1;kittyProtocolEnabled=!1;cancelKittyDetection;nextRenderCommit;deferredInitDone=!1;constructor(t){this.options=t,this.rootNode=lr("ink-root"),this.rootNode.onComputeLayout=this.calculateLayout,this.isScreenReaderEnabled=t.isScreenReaderEnabled??I.env.INK_SCREEN_READER==="true",this.interactive=this.resolveInteractiveOption(t.interactive),this.alternateScreen=!1;const r=t.debug||this.isScreenReaderEnabled,i=t.maxFps??30,o=i>0?Math.max(1,Math.ceil(1e3/i)):0;this.renderThrottleMs=r?0:o;const a=r?this.onRender:(()=>{const u=Ot(this.onRender,o,{leading:!0,trailing:!0});return this.throttledOnRender=u,()=>{this.hasPendingThrottledRender=!0,u()}})();if(r&&(this.throttledOnRender=void 0),t.standardReactLayoutTiming){let u=!1;const n=g(()=>{u||(u=!0,queueMicrotask(()=>{u=!1,this.onRender()}))},"deferredRender");this.rootNode.onRender=n,this.rootNode.onImmediateRender=n}else this.rootNode.onRender=a,this.rootNode.onImmediateRender=this.onRender;this.rootNode.onStaticChange=this.handleStaticChange,this.log=Kr.create(t.stdout,{incremental:t.incrementalRendering}),this.useNativeRenderer=t.useNativeRenderer??!1,this.useNativeRenderer&&(this.nativeLog=zr(t.stdout),this.nativeLog||(this.useNativeRenderer=!1)),this.manualCursorPosition=void 0,this.renderedCursorPosition=void 0,this.renderedCursorRequested=!1,this.throttledLog=r?this.log:Ot(u=>{const n=this.log.willRender(u),h=this.shouldSync();h&&n&&this.options.stdout.write(Y),this.log(u),h&&n&&this.options.stdout.write(F)},void 0,{leading:!0,trailing:!0}),this.isUnmounted=!1,this.isUnmounting=!1,this.isConcurrent=t.concurrent??!1,this.lastOutput="",this.lastOutputToRender="",this.lastOutputHeight=0,this.lastTerminalWidth=J(this.options.stdout).columns,this.fullStaticOutput="";const s=t.concurrent?Ke:je;this.container=$.createContainer(this.rootNode,s,null,!1,null,"id",()=>{},()=>{},()=>{},()=>{}),this.unsubscribeExit=Fe(this.unmount,{alwaysLast:!1}),this.setAlternateScreen(!!t.alternateScreen),t.patchConsole&&this.patchConsole(),this.interactive&&(t.stdout.on("resize",this.resized),this.unsubscribeResize=()=>{t.stdout.off("resize",this.resized)}),this.initImmediateKittyKeyboard(),I.env.DEV==="true"&&$.injectIntoDevTools(),this.exitPromise=new Promise((u,n)=>{this.resolveExitPromise=u,this.rejectExitPromise=n}),this.exitPromise.catch(ut)}runDeferredInit(){this.deferredInitDone||(this.deferredInitDone=!0,this.initDeferredKittyKeyboard())}resized=g(()=>{const t=J(this.options.stdout).columns;t<this.lastTerminalWidth&&(this.log.clear(),this.lastOutput="",this.lastOutputToRender=""),hr(),this.calculateLayout(),dr(this.rootNode),this.onRender(),this.lastTerminalWidth=t},"resized");resolveExitPromise=g(()=>{},"resolveExitPromise");rejectExitPromise=g(()=>{},"rejectExitPromise");unsubscribeExit=g(()=>{},"unsubscribeExit");handleAppExit=g(t=>{if(!(this.isUnmounted||this.isUnmounting)){if(xt(t)){this.unmount(t);return}this.exitResult=t,this.unmount()}},"handleAppExit");getActiveCursorPosition=g(()=>this.renderedCursorRequested?this.renderedCursorPosition:this.manualCursorPosition,"getActiveCursorPosition");setCursorPosition=g(t=>{this.manualCursorPosition=t,this.log.setCursorPosition(this.getActiveCursorPosition())},"setCursorPosition");restoreLastOutput=g(()=>{this.interactive&&(this.log.setCursorPosition(this.getActiveCursorPosition()),this.log(this.lastOutputToRender||`${this.lastOutput}
16
+ `))},"restoreLastOutput");calculateLayout=g(()=>{const t=g(i=>{const o=new Map;this.calculateScrollAndTriggerObservers(i,o);for(const[a,s]of o)a.internalTrigger(s)},"flushLayoutObservers");this.backbufferNode=void 0,this.prepareYogaTree(this.rootNode,t);const r=J(this.options.stdout).columns;this.rootNode.yogaNode.setWidth(r),this.rootNode.yogaNode.calculateLayout(void 0,void 0,_.DIRECTION_LTR),t(this.rootNode)},"calculateLayout");calculateScrollAndTriggerObservers(t,r){if(t.nodeName==="ink-box"){const{style:i}=t,o=i.overflow??"visible",a=i.overflowX??o,s=i.overflowY??o;a==="scroll"||s==="scroll"?(mr(t),i.overflowToBackbuffer&&(this.backbufferNode&&this.backbufferNode!==t&&!this.backbufferMultiWarned&&(this.backbufferMultiWarned=!0,console.warn("[@visulima/tui] Multiple scrollable regions have `overflowToBackbuffer` enabled; only one is supported. The last one in render order wins.")),this.backbufferNode=t)):t.internal_scrollState&&delete t.internal_scrollState}if(pr(t,r),!t.internal_static)for(const i of t.childNodes)i.nodeName!=="#text"&&this.calculateScrollAndTriggerObservers(i,r)}recalculateLayout(){this.markAllTextNodesDirty(this.rootNode),this.calculateLayout(),this.onRender()}prepareYogaTree(t,r){if(t.isYogaTreeDetached&&!t.cachedRender&&t.yogaNode){for(t.yogaNode.setWidthAuto(),t.yogaNode.setHeightAuto(),fr(t.yogaNode,t.style);t.yogaNode.getChildCount()>0;)t.yogaNode.getChild(0).remove();let i=0;for(const o of t.childNodes){const a=o;o.nodeName!=="#text"&&a.yogaNode&&(t.yogaNode.insertChild(a.yogaNode,i),i++)}t.isYogaTreeDetached=!1,this.markAllTextNodesDirty(t)}for(const i of t.childNodes)i.nodeName!=="#text"&&this.prepareYogaTree(i,r);if(t.nodeName==="ink-static-render"&&!t.cachedRender){const i=J(this.options.stdout).columns,{width:o}=t.style;t.yogaNode&&(t.yogaNode.setWidth(typeof o=="number"?o:i),t.yogaNode.calculateLayout(void 0,void 0,_.DIRECTION_LTR)),r(t),ur(t,{skipStaticElements:!1,trackSelection:this.options.trackSelection}),t.internal_onRendered?.()}}markAllTextNodesDirty(t){if(!t.cachedRender){t.nodeName==="ink-text"&&t.yogaNode&&t.yogaNode.markDirty();for(const r of t.childNodes)r.nodeName!=="#text"&&this.markAllTextNodesDirty(r)}}handleStaticChange=g(()=>{this.fullStaticOutput=""},"handleStaticChange");computeBackbufferOutput(){const t=this.backbufferNode;if(!t?.internal_scrollState||!this.interactive||!this.options.stdout.isTTY||this.alternateScreen||this.isScreenReaderEnabled||this.options.debug)return"";const r=Math.round(t.internal_scrollState.scrollTop),i=t.yogaNode?.getComputedPadding(_.EDGE_TOP)??0,o=Math.max(0,r-Math.round(i)),a=t.internal_maxPushedScrollTop??0,{maxScrollbackLength:s}=t.style,u=s===void 0?a:Math.max(a,o-Math.max(0,s)),n=o-u;if(n<=0)return"";const h=Ar(t,u,n);return h===""?"":(t.internal_maxPushedScrollTop=o,`${h}\x1B[0m
17
+ `)}onRender=g(()=>{if(this.hasPendingThrottledRender=!1,this.isUnmounted)return;this.deferredInitDone||this.runDeferredInit(),this.nextRenderCommit&&(this.nextRenderCommit.resolve(),this.nextRenderCommit=void 0);const t=ar(this.rootNode,this.isScreenReaderEnabled,{useNativeRenderer:this.useNativeRenderer}),{cursorPosition:r,cursorRequested:i,output:o,outputBuffer:a,outputHeight:s,outputWidth:u,staticOutput:n}=t;this.renderedCursorRequested=i,this.renderedCursorPosition=r;const h=this.computeBackbufferOutput();if(this.useNativeRenderer&&this.nativeLog&&a&&u){n&&n!==`
18
+ `&&this.options.stdout.write(n),h&&this.options.stdout.write(h),this.nativeLog.render(a,u,s),this.lastOutputHeight=s;return}i&&this.log.setCursorPosition(this.getActiveCursorPosition());const m=n&&n!==`
19
+ `;if(this.options.debug){m&&(this.fullStaticOutput+=n),this.lastOutput=o,this.lastOutputToRender=o,this.lastOutputHeight=s,this.options.stdout.write(this.fullStaticOutput+o);return}if(!this.interactive){m&&this.options.stdout.write(n),this.lastOutput=o,this.lastOutputToRender=`${o}
20
+ `,this.lastOutputHeight=s;return}if(this.isScreenReaderEnabled){const v=this.shouldSync();if(v&&this.options.stdout.write(Y),m){const b=this.lastOutputHeight>0?z(this.lastOutputHeight):"";this.options.stdout.write(b+n),this.lastOutputHeight=0}if(o===this.lastOutput&&!m){v&&this.options.stdout.write(F);return}const c=J(this.options.stdout).columns,d=He(o,{trim:!1,width:c,wrapMode:"BREAK_WORDS"}).replace(/\n$/,"");if(m)this.options.stdout.write(d);else{const b=this.lastOutputHeight>0?z(this.lastOutputHeight):"";this.options.stdout.write(b+d)}this.lastOutput=o,this.lastOutputToRender=d,this.lastOutputHeight=d===""?0:d.split(`
21
+ `).length,v&&this.options.stdout.write(F);return}m&&(this.fullStaticOutput+=n),this.renderInteractiveFrame(o,s,m?n:"",h)},"onRender");accessibilityContextValue;render(t){this.accessibilityContextValue??={isScreenReaderEnabled:this.isScreenReaderEnabled};const r=x(qe.Provider,{value:this.accessibilityContextValue,children:x(de,{exitOnCtrlC:this.options.exitOnCtrlC,interactive:this.interactive,onExit:this.handleAppExit,onWaitUntilRenderFlush:this.waitUntilRenderFlush,renderThrottleMs:this.renderThrottleMs,setCursorPosition:this.setCursorPosition,stderr:this.options.stderr,stdin:this.options.stdin,stdout:this.options.stdout,writeToStderr:this.writeToStderr,writeToStdout:this.writeToStdout,children:t})});this.options.concurrent?$.updateContainer(r,this.container,null,ut):($.updateContainerSync(r,this.container,null,ut),$.flushSyncWork())}writeToStdout=g(t=>{if(this.isUnmounted)return;if(this.options.debug){this.options.stdout.write(t+this.fullStaticOutput+this.lastOutput);return}if(!this.interactive){this.options.stdout.write(t);return}const r=this.shouldSync();r&&this.options.stdout.write(Y),this.log.clear(),this.options.stdout.write(t),this.restoreLastOutput(),r&&this.options.stdout.write(F)},"writeToStdout");writeToStderr=g(t=>{if(this.isUnmounted)return;if(this.options.debug){this.options.stderr.write(t),this.options.stdout.write(this.fullStaticOutput+this.lastOutput);return}if(!this.interactive){this.options.stderr.write(t);return}const r=this.shouldSync();r&&this.options.stdout.write(Y),this.log.clear(),this.options.stderr.write(t),this.restoreLastOutput(),r&&this.options.stdout.write(F)},"writeToStderr");unmount=g(t=>{if(this.isUnmounted||this.isUnmounting)return;this.isUnmounting=!0,this.beforeExitHandler&&(I.off("beforeExit",this.beforeExitHandler),this.beforeExitHandler=void 0);const r=this.options.stdout,{canWriteToStdout:i,hasWritableState:o}=ee(r);vt(this.throttledOnRender,i),i&&!this.alternateScreen&&(!this.throttledOnRender||!this.hasPendingThrottledRender&&this.fullStaticOutput==="")&&(this.calculateLayout(),this.onRender()),this.isUnmounted=!0,this.unsubscribeExit(),vt(this.throttledLog,i),typeof this.restoreConsole=="function"&&this.restoreConsole();const a=g(()=>{typeof this.unsubscribeResize=="function"&&this.unsubscribeResize(),this.cancelKittyDetection&&this.cancelKittyDetection(),i&&(this.kittyProtocolEnabled&&this.writeBestEffort(this.options.stdout,"\x1B[<u"),this.alternateScreen?(this.log.clear(),this.log.done(),this.lastOutput="",this.lastOutputToRender="",this.lastOutputHeight=0,this.fullStaticOutput="",this.writeBestEffort(this.options.stdout,_e),this.writeBestEffort(this.options.stdout,dt),this.alternateScreen=!1):this.interactive?this.options.debug||this.log.done():this.options.stdout.write(this.options.debug?`
22
+ `:`${this.lastOutput}
23
+ `)),this.kittyProtocolEnabled=!1,St.delete(this.options.stdout);const{exitResult:u}=this,n=g(()=>{xt(t)?this.rejectExitPromise(t):this.resolveExitPromise(u)},"resolveOrReject");t!==void 0&&!xt(t)?n():i&&o?this.options.stdout.write("",n):setImmediate(n)},"finishUnmount"),s=$;this.options.concurrent?($.updateContainerSync(null,this.container,null,ut),$.flushSyncWork(),s.flushPassiveEffects?.(),a()):($.updateContainerSync(null,this.container,null,ut),$.flushSyncWork(),a())},"unmount");async waitUntilExit(){return this.beforeExitHandler||(this.beforeExitHandler=()=>{this.unmount()},I.on("beforeExit",this.beforeExitHandler)),this.exitPromise}async waitUntilRenderFlush(){if(this.isUnmounted||this.isUnmounting){await this.awaitExit();return}if(await te(),this.isUnmounted||this.isUnmounting){await this.awaitExit();return}if(this.isConcurrent&&this.hasPendingConcurrentWork()&&(await Promise.race([this.awaitNextRender(),this.awaitExit()]),this.isUnmounted||this.isUnmounting)){this.nextRenderCommit=void 0,await this.awaitExit();return}$.flushSyncWork();const t=this.options.stdout,{canWriteToStdout:r,hasWritableState:i}=ee(t);if(vt(this.throttledOnRender,r),vt(this.throttledLog,r),r&&i){await new Promise(o=>{this.options.stdout.write("",()=>{o()})});return}await te()}clear(){this.interactive&&!this.options.debug&&(this.log.clear(),this.log.sync(this.lastOutputToRender||`${this.lastOutput}
24
+ `))}patchConsole(){this.options.debug||(this.restoreConsole=Ue((t,r)=>{t==="stdout"&&this.writeToStdout(r),t==="stderr"&&(r.startsWith("The above error occurred")||this.writeToStderr(r))}))}setAlternateScreen(t){this.alternateScreen=this.resolveAlternateScreenOption(t,this.interactive),this.alternateScreen&&(this.writeBestEffort(this.options.stdout,Me),this.writeBestEffort(this.options.stdout,G))}resolveInteractiveOption(t){return t??(!se&&!!this.options.stdout.isTTY)}resolveAlternateScreenOption(t,r){return!!t&&r&&!!this.options.stdout.isTTY}shouldSync(){return me(this.options.stdout,this.interactive)}writeBestEffort(t,r){try{t.write(r)}catch{}}async awaitExit(){try{await this.exitPromise}catch{}}hasPendingConcurrentWork(){const t=this.container;return(t.pendingLanes??0)!==0&&t.callbackNode!==void 0&&t.callbackNode!==null}async awaitNextRender(){if(!this.nextRenderCommit){let t;const r=new Promise(i=>{t=i});this.nextRenderCommit={promise:r,resolve:t}}return this.nextRenderCommit.promise}renderInteractiveFrame(t,r,i,o=""){const a=i+o,s=a!=="",u=this.options.stdout.isTTY,n=u?J(this.options.stdout).rows:24,h=u&&r>=n?t:`${t}
25
+ `;if(si({isTty:u,isUnmounting:this.isUnmounting,nextOutputHeight:r,previousOutputHeight:this.lastOutputHeight,viewportRows:n})){if(this.options.incrementalRendering){s&&(this.log.clear(),this.options.stdout.write(a)),(t!==this.lastOutput||this.log.isCursorDirty()||s)&&this.throttledLog(h),this.lastOutput=t,this.lastOutputToRender=h,this.lastOutputHeight=r;return}const m=this.shouldSync();m&&this.options.stdout.write(Y),this.options.stdout.write(We+this.fullStaticOutput+o+t),this.lastOutput=t,this.lastOutputToRender=h,this.lastOutputHeight=r,this.log.sync(h),m&&this.options.stdout.write(F);return}if(s){const m=this.shouldSync();m&&this.options.stdout.write(Y),this.log.clear(),this.options.stdout.write(a),this.log(h),m&&this.options.stdout.write(F)}else(t!==this.lastOutput||this.log.isCursorDirty())&&this.throttledLog(h);this.lastOutput=t,this.lastOutputToRender=h,this.lastOutputHeight=r}initImmediateKittyKeyboard(){if(!this.options.kittyKeyboard)return;const t=this.options.kittyKeyboard;if((t.mode??"auto")!=="enabled")return;const r=t.flags??["disambiguateEscapeCodes"];this.options.stdin.isTTY&&this.options.stdout.isTTY&&this.enableKittyProtocol(r)}initDeferredKittyKeyboard(){if(!this.options.kittyKeyboard)return;const t=this.options.kittyKeyboard;if((t.mode??"auto")!=="auto")return;const r=t.flags??["disambiguateEscapeCodes"];!this.interactive||!this.options.stdin.isTTY||!this.options.stdout.isTTY||this.confirmKittySupport(r)}confirmKittySupport(t){const{stdin:r,stdout:i}=this.options;let o=[];const a=g(()=>{this.cancelKittyDetection=void 0,clearTimeout(u),r.removeListener("data",s);const n=oi(o);o=[],n.length>0&&r.unshift(zt.from(n))},"cleanup"),s=g(n=>{const h=typeof n=="string"?zt.from(n):n;for(const m of h)o.push(m);ii(o)&&(a(),this.isUnmounted||this.enableKittyProtocol(t))},"onData");r.on("data",s);const u=setTimeout(a,200);this.cancelKittyDetection=a,i.write("\x1B[?u")}enableKittyProtocol(t){this.options.stdout.write(`\x1B[>${cr(t)}u`),this.kittyProtocolEnabled=!0}}var ui=Object.defineProperty,Nt=S((e,t)=>ui(e,"name",{value:t,configurable:!0}),"i");const Ki=Nt((e,t)=>{const r={alternateScreen:!1,concurrent:!1,debug:!1,exitOnCtrlC:!0,incrementalRendering:!1,maxFps:30,patchConsole:!0,stderr:I.stderr,stdin:I.stdin,stdout:I.stdout,...ai(t)},i=li(r.stdout,()=>new ni(r));return i.render(e),{cleanup(){i.unmount()},clear(){i.clear()},rerender(o){i.render(o)},rootNode:i.rootNode,unmount(){i.unmount()},waitUntilExit(){return i.waitUntilExit()},waitUntilRenderFlush(){return i.waitUntilRenderFlush()}}},"render"),ai=Nt((e={})=>e instanceof Le?{stdin:I.stdin,stdout:e}:e,"getOptions"),li=Nt((e,t)=>{const r=St.get(e);if(r===void 0){const i=t();return St.set(e,i),i}return I.stderr.write(`Warning: render() was called again for the same stdout before the previous Ink instance was unmounted. Reusing stdout across multiple render() calls is unsupported. Call unmount() first.
26
+ `),r},"getInstance");export{Ki as default};
@@ -1,5 +1,5 @@
1
1
  import { ReactNode } from 'react';
2
- import { a as DOMElement } from "./dom.d-BZZeZlyP.js";
2
+ import { a as DOMElement } from "./dom.d-CcFuBd-k.js";
3
3
  import 'node:stream';
4
4
  import { C as CursorPosition } from "./cursor-helpers.d-BIvqz0TZ.js";
5
5
  declare const kittyFlags: {
@@ -136,6 +136,8 @@ declare class Ink {
136
136
  private readonly container;
137
137
  readonly rootNode: DOMElement;
138
138
  private fullStaticOutput;
139
+ private backbufferNode;
140
+ private backbufferMultiWarned;
139
141
  private readonly exitPromise!;
140
142
  private exitResult;
141
143
  private beforeExitHandler?;
@@ -179,6 +181,22 @@ declare class Ink {
179
181
  private prepareYogaTree;
180
182
  private markAllTextNodesDirty;
181
183
  handleStaticChange: () => void;
184
+ /**
185
+ * Compute the slice of lines that newly scrolled off the top of the single
186
+ * `overflowToBackbuffer` region and have not yet been flushed into the
187
+ * terminal's real scrollback. Advances the monotonic
188
+ * `internal_maxPushedScrollTop` bookkeeping so each line is emitted exactly
189
+ * once and scrolling back up is a no-op. Returns a newline-terminated
190
+ * string to write above the live frame, or "" when there is nothing to do.
191
+ *
192
+ * No-op outside inline mode (alternate-screen / non-TTY / non-interactive /
193
+ * screen-reader / debug), since terminal scrollback only exists for an
194
+ * inline, in-place-updated live region. Debug mode is excluded because it
195
+ * re-dumps the full grid every frame and never writes this slice — running
196
+ * it there would advance the monotonic pointer past lines that were never
197
+ * emitted.
198
+ */
199
+ private computeBackbufferOutput;
182
200
  onRender: () => void;
183
201
  private accessibilityContextValue;
184
202
  render(node: ReactNode): void;
@@ -1,2 +1,2 @@
1
- var T=Object.defineProperty;var c=(o,r)=>T(o,"name",{value:r,configurable:!0});import y from"react";import{FocusProvider as w}from"./FocusContext-Xy0cwJpO.js";import{TuiContext as v}from"./TuiContext-BoJvG3NN.js";import{LayoutNode as C}from"./LayoutNode-Q7nU3hmO.js";import{T as i}from"./reconciler-BQvF1kRj.js";import{renderTreeToBuffer as E}from"./renderTreeToBuffer-DWl5_yTW.js";import{Cell as N}from"./Cell-BrXn3jxY.js";var P=Object.defineProperty,d=c((o,r)=>P(o,"name",{value:r,configurable:!0}),"a");function W(o,r){const e=r?.columns??80,n=r?.rows??24,t=new C;t.yogaNode.setWidth(e),t.yogaNode.setHeight(n);const S={app:null,input:null,writeStderr:d(u=>{},"writeStderr"),writeStdout:d(u=>{},"writeStdout")},g=y.createElement(v.Provider,{value:S},y.createElement(w,null,o)),m=i.createContainer(t,0,null,!1,null,"renderToString",()=>{},null);i.updateContainerSync(g,m,null,()=>{}),i.flushSyncWork(),t.calculateLayout(e,n);const f=new Uint32Array(e*n*2);E(t,f,e,n);const l=[];for(let u=0;u<n;u++){let p="";for(let a=0;a<e;a++){const h=f[(u*e+a)*2],s=N.getChar(h);p+=s===""?" ":s}l.push(p.trimEnd())}for(;l.length>0&&l.at(-1)==="";)l.pop();return i.updateContainerSync(null,m,null,()=>{}),i.flushSyncWork(),t.destroy(),l.join(`
1
+ var T=Object.defineProperty;var c=(o,r)=>T(o,"name",{value:r,configurable:!0});import y from"react";import{FocusProvider as w}from"./FocusContext-Xy0cwJpO.js";import{TuiContext as v}from"./TuiContext-BoJvG3NN.js";import{LayoutNode as C}from"./LayoutNode-B8zej4dm.js";import{T as i}from"./reconciler-DIfG72R9.js";import{renderTreeToBuffer as E}from"./renderTreeToBuffer-CZilzyhN.js";import{Cell as N}from"./Cell-BrXn3jxY.js";var P=Object.defineProperty,d=c((o,r)=>P(o,"name",{value:r,configurable:!0}),"a");function W(o,r){const e=r?.columns??80,n=r?.rows??24,t=new C;t.yogaNode.setWidth(e),t.yogaNode.setHeight(n);const S={app:null,input:null,writeStderr:d(u=>{},"writeStderr"),writeStdout:d(u=>{},"writeStdout")},g=y.createElement(v.Provider,{value:S},y.createElement(w,null,o)),m=i.createContainer(t,0,null,!1,null,"renderToString",()=>{},null);i.updateContainerSync(g,m,null,()=>{}),i.flushSyncWork(),t.calculateLayout(e,n);const f=new Uint32Array(e*n*2);E(t,f,e,n);const l=[];for(let u=0;u<n;u++){let p="";for(let a=0;a<e;a++){const h=f[(u*e+a)*2],s=N.getChar(h);p+=s===""?" ":s}l.push(p.trimEnd())}for(;l.length>0&&l.at(-1)==="";)l.pop();return i.updateContainerSync(null,m,null,()=>{}),i.flushSyncWork(),t.destroy(),l.join(`
2
2
  `)}c(W,"renderToString");d(W,"renderToString");export{W as renderToString};
@@ -1,4 +1,4 @@
1
- var g=Object.defineProperty;var u=(t,n)=>g(t,"name",{value:n,configurable:!0});import{LegacyRoot as N}from"react-reconciler/constants.js";import S from"yoga-layout";import{c as h}from"./dom-CMbdnYbk.js";import{L as c}from"./reconciler-tOH9yL_j.js";import{R as d}from"./renderer-Cidd3s9K.js";import{calculateScroll as w}from"./getScrollHeight-BTEY8ewu.js";var R=Object.defineProperty,m=u((t,n)=>R(t,"name",{value:n,configurable:!0}),"u");const I=m((t,n)=>{const y=n?.columns??80,e=h("ink-root");let i="";e.onComputeLayout=()=>{e.yogaNode.setWidth(y),e.yogaNode.calculateLayout(void 0,void 0,S.DIRECTION_LTR);const o=m(r=>{if(r.nodeName==="ink-box"){const a=r.style.overflow??"visible",p=r.style.overflowX??a,v=r.style.overflowY??a;(p==="scroll"||v==="scroll")&&w(r)}for(const a of r.childNodes)a.nodeName!=="#text"&&o(a)},"walkScroll");o(e)},e.onImmediateRender=()=>{const{staticOutput:o}=d(e,!1);o&&o!==`
1
+ var g=Object.defineProperty;var u=(t,n)=>g(t,"name",{value:n,configurable:!0});import{LegacyRoot as N}from"react-reconciler/constants.js";import S from"yoga-layout";import{c as h}from"./dom-BG-LS10p.js";import{L as c}from"./reconciler-CUbhOvcr.js";import{R as d}from"./renderer-Cfi6ZyHf.js";import{calculateScroll as w}from"./getScrollHeight-ClEOyLHH.js";var R=Object.defineProperty,m=u((t,n)=>R(t,"name",{value:n,configurable:!0}),"u");const I=m((t,n)=>{const y=n?.columns??80,e=h("ink-root");let i="";e.onComputeLayout=()=>{e.yogaNode.setWidth(y),e.yogaNode.calculateLayout(void 0,void 0,S.DIRECTION_LTR);const o=m(r=>{if(r.nodeName==="ink-box"){const a=r.style.overflow??"visible",p=r.style.overflowX??a,v=r.style.overflowY??a;(p==="scroll"||v==="scroll")&&w(r)}for(const a of r.childNodes)a.nodeName!=="#text"&&o(a)},"walkScroll");o(e)},e.onImmediateRender=()=>{const{staticOutput:o}=d(e,!1);o&&o!==`
2
2
  `&&(i+=o)};let l;const s=c.createContainer(e,N,null,!1,null,"render-to-string",o=>{l??=o},()=>{},()=>{},()=>{});let f=!1;try{c.updateContainerSync(t,s,null,()=>{}),c.flushSyncWork();const{output:o}=d(e,!1);if(c.updateContainerSync(null,s,null,()=>{}),c.flushSyncWork(),f=!0,e.yogaNode.free(),l!==void 0)throw l instanceof Error?l:new Error(String(l));const r=i.endsWith(`
3
3
  `)?i.slice(0,-1):i;return r&&o?`${r}
4
4
  ${o}`:r||o}finally{if(!f&&e.yogaNode)try{e.yogaNode.freeRecursive()}catch{}}},"renderToString");export{I as default};
@@ -0,0 +1,2 @@
1
+ var D=Object.defineProperty;var R=(t,o)=>D(t,"name",{value:o,configurable:!0});import G from"cli-boxes";import{resolveColor as W}from"./NAMED_COLORS-B9fJsYdg.js";import{g as I}from"./text-width-BU2eeTWn.js";var K=Object.defineProperty,B=R((t,o)=>K(t,"name",{value:o,configurable:!0}),"N");const V=1114112,F=9608,J=9600,Q=9604;function j(t){const o=t?.borderStyle?1:0;return{bottom:t?.borderBottom===!1?0:o,left:t?.borderLeft===!1?0:o,right:t?.borderRight===!1?0:o,top:t?.borderTop===!1?0:o}}R(j,"k");B(j,"getEffectiveBorderWidths");function H(t){let o=0;for(const i of t.children){const b=i.getLayout(),e=b.top+b.height;e>o&&(o=e)}const n=t._style,l=n?.paddingBottom??n?.paddingY??n?.padding??0;return o+l}R(H,"q");B(H,"getScrollContentHeight");function N(t,o,n,l,i,b,e,m,v,_,g,d){const r=j(d),a=m-r.top-r.bottom,u=d.scrollTop??0,h=H(t),M=a;if(h<=M||a<=0)return;const f=a*2,y=Math.max(2,Math.round(M/h*f)),s=h-M,x=f-y,T=s>0?Math.round(u/s*x):0,c=typeof d.scrollbarThumbColor=="string"?W(d.scrollbarThumbColor):v,p=i+e-1-r.right,S=_<<16|65280|c;for(let w=0;w<a;w++){const Y=w*2,X=Y+1,k=Y>=T&&Y<T+y,L=X>=T&&X<T+y;if(!k&&!L)continue;let C=F;k&&!L?C=J:!k&&L&&(C=Q),A(o,n,l,p,b+r.top+w,C,S,g)}}R(N,"z");B(N,"paintScrollbar");function q(t,o,n,l,i,b,e,m,v,_,g,d,r,a){const u=j(a),h=a.scrollTop??0,M=b+u.top;for(const f of t.children){if(!f._style?.sticky)continue;const y=f.getLayout();if(y.top>=h)continue;const s=f.parent;if(s&&s!==t){const S=s.getLayout();if(S.top+S.height<=h)continue}const x=M,T=f.fg===255?v:f.fg,c=f.bg===255?_:f.bg,p=f.styles===0?g:f.styles;E(f,o,n,l,i-y.left,x-y.top,T,c,p,d,r)}}R(q,"G");B(q,"paintStickyHeaders");function Z(t,o,n,l){for(let e=0;e<o.length;e+=2)o[e]=32,o[e+1]=65535;const i=[],b={x0:0,x1:n,y0:0,y1:l};try{E(t,o,n,l,0,0,t.fg,t.bg,t.styles,i,b);for(const e of i)z(e.node,o,n,l,e.absX,e.absY,e.w,e.h,e.fg,e.bg,e.styles,e.clip)}catch(e){console.error("Renderer Error:",e)}}R(Z,"renderTreeToBuffer");B(Z,"renderTreeToBuffer");function A(t,o,n,l,i,b,e,m){if(l<m.x0||l>=m.x1||i<m.y0||i>=m.y1||l<0||l>=o||i<0||i>=n)return;const v=(i*o+l)*2;t[v]=b,t[v+1]=e}R(A,"M");B(A,"writeCell");function z(t,o,n,l,i,b,e,m,v,_,g,d){if(!t._style?.borderStyle||e<=0||m<=0)return;const r=G[t._style.borderStyle],a=t._style.borderColor===void 0?v:W(t._style.borderColor),u=g<<16|_<<8|a,h=t._style.borderTop!==!1,M=t._style.borderBottom!==!1,f=t._style.borderLeft!==!1,y=t._style.borderRight!==!1,s=M&&(m>1||!h);if(h)for(let c=0;c<e;c++){let p;e===1?p=f&&y?r.left:f?r.topLeft:y?r.topRight:r.top:c===0&&f?p=r.topLeft:c===e-1&&y?p=r.topRight:p=r.top,A(o,n,l,i+c,b,p.codePointAt(0),u,d)}if(s)for(let c=0;c<e;c++){let p;e===1?p=f&&y?r.left:f?r.bottomLeft:y?r.bottomRight:r.bottom:c===0&&f?p=r.bottomLeft:c===e-1&&y?p=r.bottomRight:p=r.bottom,A(o,n,l,i+c,b+m-1,p.codePointAt(0),u,d)}const x=h?1:0,T=s?m-1:m;for(let c=x;c<T;c++)f&&A(o,n,l,i,b+c,r.left.codePointAt(0),u,d),y&&A(o,n,l,i+e-1,b+c,r.right.codePointAt(0),u,d)}R(z,"K");B(z,"paintBorder");function U(t){if(t._hidden)return"";if(t.text!==void 0)return t.text;const o=t.children.map(U).join("");return typeof t.transform=="function"?t.transform(o,0):o}R(U,"X");B(U,"collectText");function O(t,o,n,l,i,b,e,m,v,_){if(e<=0||m<=0)return;let g=0,d=0;for(const r of t){if(r===`
2
+ `){g=0,d++;continue}const a=r.codePointAt(0)??32,u=I(r);if(g+u>e&&(g=0,d++),d>=m)break;if(u>e){A(o,n,l,i+g,b+d,32,v,_),g+=1;continue}A(o,n,l,i+g,b+d,a,v,_),u===2&&g+1<e&&A(o,n,l,i+g+1,b+d,V,v,_),g+=u}}R(O,"E");B(O,"paintText");function E(t,o,n,l,i,b,e,m,v,_,g){if(t._hidden)return;const d=t.getLayout(),r=Math.round(i+d.left),a=Math.round(b+d.top),u=Math.round(d.width),h=Math.round(d.height),M=t.fg===255?e:t.fg,f=t.bg===255?m:t.bg,y=t.styles===0?v:t.styles,s={x0:Math.max(g.x0,r),x1:Math.min(g.x1,r+u),y0:Math.max(g.y0,a),y1:Math.min(g.y1,a+h)};if(s.x0>=s.x1||s.y0>=s.y1)return;if(typeof t.transform=="function"){const L=U(t),C=t.transform(L,0),P=y<<16|f<<8|M;O(C,o,n,l,r,a,u,h,P,s);return}if(t.text===void 0){if(f!==255||y!==0){const L=y<<16|f<<8|M;for(let C=0;C<h;C++)for(let P=0;P<u;P++)A(o,n,l,r+P,a+C,32,L,s)}t._style?.borderStyle&&_.push({absX:r,absY:a,bg:f,clip:s,fg:M,h,node:t,styles:y,w:u})}else{const L=y<<16|f<<8|M;if(t.bg!==255)for(let C=0;C<h;C++)for(let P=0;P<u;P++)A(o,n,l,r+P,a+C,32,L,s);O(t.text,o,n,l,r,a,u,h,L,s)}const x=t._style,T=x?.overflow??"visible",c=x?.overflowX??T,p=x?.overflowY??T,S=c==="hidden"||c==="scroll",w=p==="hidden"||p==="scroll";let Y=s,X=0,k=0;if(S||w){const L=j(x);Y={x0:S?Math.max(s.x0,r+L.left):s.x0,x1:S?Math.min(s.x1,r+u-L.right):s.x1,y0:w?Math.max(s.y0,a+L.top):s.y0,y1:w?Math.min(s.y1,a+h-L.bottom):s.y1},p==="scroll"&&typeof x?.scrollTop=="number"&&(k=-x.scrollTop),c==="scroll"&&typeof x?.scrollLeft=="number"&&(X=-x.scrollLeft)}for(const L of t.children)L._style?.internalStickyAlternate||E(L,o,n,l,r+X,a+k,M,f,y,_,Y);(p==="scroll"||c==="scroll")&&x?.scrollbar!==!1&&N(t,o,n,l,r,a,u,h,M,y,s,x),p==="scroll"&&typeof x?.scrollTop=="number"&&q(t,o,n,l,r,a,u,h,M,f,y,_,Y,x)}R(E,"S");B(E,"paintNode");export{Z as renderTreeToBuffer};
@@ -0,0 +1,17 @@
1
+ var Be=Object.defineProperty;var D=(o,e)=>Be(o,"name",{value:e,configurable:!0});import{T as Oe,i as De}from"./dom-BG-LS10p.js";import{getStringWidth as Q,indent as Pe,isFullwidthCodePoint as We}from"@visulima/string";import{B as H,D as A,I,U as j,f as z,H as Y,g as q,h as ae,F as V,j as de,S as $e,k as He,p as Ae}from"./measure-text-DDjHT1jD.js";import T from"yoga-layout";import{j as F,i as Fe,m as ue,c as ce}from"./layout-BMo200nF.js";import{g as Ge,d as J}from"./colorize-DbTZMrJO.js";import Ie from"@visulima/colorize";import je from"cli-boxes";import{getScrollTop as Me}from"./getScrollHeight-ClEOyLHH.js";import Te from"./squashTextNodesWithMap-DCdi3SZ2.js";import __cjs_mod__ from "node:module"; // -- packem CommonJS require shim --
2
+ const require = __cjs_mod__.createRequire(import.meta.url);
3
+ const ze=1114112;var Ye=Object.defineProperty,xe=D((o,e)=>Ye(o,"name",{value:e,configurable:!0}),"T$1");const qe=1,Ke=2,Xe=3,Ue=4,Ve=7,Je=8,Qe=9,he=22,ge=23,fe=24,pe=27,me=28,ye=29,be=39,ve=49,Ze="\x1B[",E=xe(o=>o.length===0?"":`${Ze}${o.join(";")}m`,"sgr"),et=xe(o=>{if(o.length===0)return"";let e="",t=0,r,n,s,i=!1,d=0;const g=o.getSpans();for(const f of g){const c=f.formatFlags&127,{fgColor:l}=f,{bgColor:a}=f,{link:h}=f,u=c;if(u!==t||l!==r||a!==n||h!==s){if(h!==s&&(s&&(e+=s.startsWith("ST:")?"\x1B]8;;\x1B\\":"\x1B]8;;\x07"),h)){const m=h.startsWith("ST:");e+=`\x1B]8;;${m?h.slice(3):h}${m?"\x1B\\":"\x07"}`}const p=t&(H|A),b=u&(H|A);if(p!==b){const m=t&H&&!(u&H),y=t&A&&!(u&A);(m||y)&&(e+=E([he])),u&H&&(!(t&H)||y)&&(e+=E([qe])),u&A&&(!(t&A)||m)&&(e+=E([Ke]))}u&I&&!(t&I)?e+=E([Xe]):!(u&I)&&t&I&&(e+=E([ge])),u&j&&!(t&j)?e+=E([Ue]):!(u&j)&&t&j&&(e+=E([fe])),u&z&&!(t&z)?e+=E([Ve]):!(u&z)&&t&z&&(e+=E([pe])),u&Y&&!(t&Y)?e+=E([Je]):!(u&Y)&&t&Y&&(e+=E([me])),u&q&&!(t&q)?e+=E([Qe]):!(u&q)&&t&q&&(e+=E([ye])),l!==r&&(e+=E(l?ae(l,!0):[be])),a!==n&&(e+=E(a?ae(a,!1):[ve])),i=u!==0||l!==void 0||a!==void 0,t=u,r=l,n=a,s=h}e+=o.getTextRange(d,d+f.length),d+=f.length}return i&&(t&(H|A)&&(e+=E([he])),t&I&&(e+=E([ge])),t&j&&(e+=E([fe])),t&z&&(e+=E([pe])),t&Y&&(e+=E([me])),t&q&&(e+=E([ye])),r!==void 0&&(e+=E([be])),n!==void 0&&(e+=E([ve]))),s&&(e+=s.startsWith("ST:")?"\x1B]8;;\x1B\\":"\x1B]8;;\x07"),e},"styledLineToString");var tt=Object.defineProperty,ke=D((o,e)=>tt(o,"name",{value:e,configurable:!0}),"v");class ee{static{D(this,"OutputCaches")}static{ke(this,"OutputCaches")}widths=new Map;blockWidths=new Map;styledLines=new Map;lines=new Map;maxEntries;pruneToFactor;constructor(e={}){const{maxEntries:t=3e4,pruneToFactor:r=.8}=e;this.maxEntries=Math.max(1,t),this.pruneToFactor=Math.min(.99,Math.max(.1,r))}getStyledLine(e){let t=this.styledLines.get(e);return t===void 0&&(t=this.hasAnsiControlMarker(e)?He(e):Ae(e),this.setCacheEntry(this.styledLines,e,t)),t}getStringWidth(e){let t=this.widths.get(e);return t===void 0&&(t=Q(e),this.setCacheEntry(this.widths,e,t)),t}getWidestLine(e){let t=this.blockWidths.get(e);if(t===void 0){let r=0;for(const n of this.getLines(e))r=Math.max(r,this.getStringWidth(n));t=r,this.setCacheEntry(this.blockWidths,e,t)}return t}getLines(e){let t=this.lines.get(e);return t===void 0&&(t=e.split(`
4
+ `),this.setCacheEntry(this.lines,e,t)),t}hasAnsiControlMarker(e){for(const t of e){const r=t.codePointAt(0);if(ot.has(r))return!0}return!1}setCacheEntry(e,t,r){!e.has(t)&&e.size>=this.maxEntries&&this.pruneCache(e),e.set(t,r)}pruneCache(e){const t=Math.floor(this.maxEntries*this.pruneToFactor);for(const r of e.keys())if(e.delete(r),e.size<=t)break}}const ot=new Set([27,144,152,155,157,158,159]),rt=.6,it=30;class te{static{D(this,"A")}static{ke(this,"Output")}width;height;caches;grid;clipStack=[];previousLines=[];previousRenderedLines=[];lineMemoizationEnabled=!0;memoizationProbeCountdown=0;constructor(e){const{caches:t,height:r,width:n}=e;this.width=Math.round(n),this.height=Math.round(r),this.caches=t??new ee,this.grid=this.createGrid(this.width,this.height)}reset(e,t){this.width=Math.round(e),this.height=Math.round(t),this.clipStack.length=0,this.grid=this.createGrid(this.width,this.height)}startChildRegion(e,t,r,n){const s=Math.round(e),i=Math.round(t);this.clipStack.push({x1:s,x2:s+Math.round(r),y1:i,y2:i+Math.round(n)})}endChildRegion(){this.clipStack.pop()}write(e,t,r,n){if(!r)return;const{transformers:s}=n,i=this.clipStack.at(-1),d=this.caches.getLines(r),g=s.length>0;for(const[f,c]of d.entries()){const l=t+f;if(l<0||l>=this.grid.length||i&&(l<i.y1||l>=i.y2))continue;let a=c;if(g)for(const m of s)a=m(a,f);if(a.length===0)continue;const h=this.grid[l],u=this.caches.getStyledLine(a);let p=e;const b=i?Math.min(i.x2,h.length):1/0;for(let m=0;m<u.length&&!(p>=b);m++){if(i&&(p<i.x1||p>=i.x2)){p++,u.getFullWidth(m)&&p++;continue}if(p>=0){p>=h.length&&h.ensureWidth(p+2);const y=u.getSpan(m),k=u.getFullWidth(m),w=(y?.formatFlags??0)|(k?V:0);h.setCharFast(p,u.getValue(m),w,y?.fgColor,y?.bgColor,y?.link),k&&(p++,p>=h.length&&h.ensureWidth(p+1),h.setCharFast(p,"",w&~V,y?.fgColor,y?.bgColor,y?.link))}p++}}}writeStyledLine(e,t,r){if(r.length===0||t<0||t>=this.grid.length)return;const n=this.clipStack.at(-1);n&&(t<n.y1||t>=n.y2)||this.writeStyledLineToRow(this.grid[t],e,r,this.width,n)}getRootLines(){return this.grid}getCurrentClip(){return this.clipStack.at(-1)}addRegionTree(e,t,r){for(let n=0;n<e.height;n++){const s=r+n;if(s<0||s>=this.grid.length)continue;const i=e.lines[n];if(!i)continue;const d=this.grid[s];for(let g=0;g<i.length;g++){const f=t+g;if(f<0||f>=d.length)continue;const c=i.getValue(g);(c!==" "||i.hasStyles(g))&&d.setCharFast(f,c,i.getFormatFlags(g),i.getFgColor(g),i.getBgColor(g),i.getLink(g))}}for(const n of e.children)this.addRegionTree(n,t+n.x,r+n.y)}writeStyledLineToRow(e,t,r,n,s){let i=t;const d=s?Math.min(s.x2,n):1/0;for(let g=0;g<r.length&&!(i>=d);g++){if(s&&(i<s.x1||i>=s.x2)){i++,r.getFullWidth(g)&&i++;continue}if(i>=0){i>=e.length&&e.ensureWidth(i+2);const f=r.getSpan(g),c=r.getFullWidth(g),l=(f?.formatFlags??0)|(c?V:0);e.setCharFast(i,r.getValue(g),l,f?.fgColor,f?.bgColor,f?.link),c&&(i++,i>=e.length&&e.ensureWidth(i+1),e.setCharFast(i,"",l&~V,f?.fgColor,f?.bgColor,f?.link))}i++}}get(){const e=this.grid;this.lineMemoizationEnabled||(this.memoizationProbeCountdown>0?this.memoizationProbeCountdown--:this.lineMemoizationEnabled=!0);const t=this.lineMemoizationEnabled,r=this.previousLines.length>0,n=t&&r&&this.previousLines.length===e.length&&this.previousRenderedLines.length===e.length;this.previousLines.length>e.length&&(this.previousLines.length=e.length),this.previousRenderedLines.length>e.length&&(this.previousRenderedLines.length=e.length);const s=Array.from({length:e.length});let i=0;for(const[d,g]of e.entries()){const f=g;if(n&&this.previousLines[d]?.equals(f)){s[d]=this.previousRenderedLines[d]??"";continue}i++;const c=f.trimEnd(),l=et(c);s[d]=l,t&&(this.previousRenderedLines[d]=l,this.previousLines[d]=f.clone())}return t&&n&&e.length>0&&i/e.length>rt&&this.disableLineMemoization(),{height:e.length,output:s.join(`
5
+ `)}}getBuffer(){const e=this.grid,t=e.length,r=new Uint32Array(this.width*t*2),n=65535;for(let s=0;s<r.length;s+=2)r[s]=32,r[s+1]=n;for(let s=0;s<t;s++){const i=e[s];for(let d=0;d<i.length&&d<this.width;d++){const g=i.getValue(d);if(g.length===0)continue;const f=g.codePointAt(0)??32,c=(s*this.width+d)*2,l=i.getSpan(d),a=l?.formatFlags??0,h=l?.fgColor,u=l?.bgColor,p=h?de(h):255,b=u?de(u):255,m=(a&255)<<16|(b&255)<<8|p&255;if(r[c]=f,r[c+1]=m,i.getFullWidth(d)&&d+1<this.width){const y=c+2;r[y]=ze,r[y+1]=m,d++}}}return{buffer:r,height:t}}createGrid(e,t){const r=[];for(let n=0;n<t;n++)r.push($e.empty(e));return r}disableLineMemoization(){this.lineMemoizationEnabled=!1,this.memoizationProbeCountdown=it,this.previousLines.length=0,this.previousRenderedLines.length=0}}var nt=Object.defineProperty,st=D((o,e)=>nt(o,"name",{value:e,configurable:!0}),"d");const lt=st(o=>Math.round(o.getComputedWidth()-Math.max(0,o.getComputedLeft()+o.getComputedWidth()-(o.getParent()?.getComputedWidth()??o.getComputedWidth()))-o.getComputedPadding(T.EDGE_LEFT)-o.getComputedPadding(T.EDGE_RIGHT)-o.getComputedBorder(T.EDGE_LEFT)-o.getComputedBorder(T.EDGE_RIGHT)),"getMaxWidth");var at=Object.defineProperty,dt=D((o,e)=>at(o,"name",{value:e,configurable:!0}),"c");const ut=dt((o,e,t,r)=>{if(!t.style.backgroundColor)return;const n=Math.round(t.yogaNode.getComputedWidth()),s=Math.round(t.yogaNode.getComputedHeight()),i=t.style.borderStyle&&t.style.borderLeft!==!1?1:0,d=t.style.borderStyle&&t.style.borderRight!==!1?1:0,g=t.style.borderStyle&&t.style.borderTop!==!1?1:0,f=t.style.borderStyle&&t.style.borderBottom!==!1?1:0,c=n-i-d,l=s-g-f;if(!(c>0&&l>0))return;const a=Ge(t.style.backgroundColor);if(!a)return;const h=`${a}${" ".repeat(c)}\x1B[49m`;for(let u=0;u<l;u++)r.write(o+i,e+g+u,h,{transformers:[]})},"renderBackground");var ct=Object.defineProperty,oe=D((o,e)=>ct(o,"name",{value:e,configurable:!0}),"T");const P=oe((o,e,t,r)=>{let n=J(o,e,"foreground");return n=J(n,t,"background"),r&&(n=Ie.dim(n)),n},"stylePiece"),Ce=oe((o,e,t,r,n,s,i,d)=>{if(!t&&!n)return P(o.repeat(e),s,i,d);const g=t?` ${t} `:"",f=n?` ${n} `:"",c=g.length,l=f.length,a=r??"left";if(c+l>=e){if(c>=e)return`${g.slice(0,e-1)}…`;const b=e-c;return b>3?g+f.slice(0,b):g+P(o.repeat(e-c),s,i,d)}const h=e-c-l;if(a==="left"||n)return g+P(o.repeat(h),s,i,d)+f;if(a==="right"){const b=e-c;return P(o.repeat(b),s,i,d)+g}const u=Math.floor(h/2),p=h-u;return P(o.repeat(u),s,i,d)+g+P(o.repeat(p),s,i,d)},"buildBorderWithTitle"),ht=oe((o,e,t,r)=>{if(t.style.borderStyle){const n=Math.round(t.yogaNode.getComputedWidth()),s=Math.round(t.yogaNode.getComputedHeight()),i=typeof t.style.borderStyle=="string"?je[t.style.borderStyle]:t.style.borderStyle,d=t.style.borderTopColor??t.style.borderColor,g=t.style.borderBottomColor??t.style.borderColor,f=t.style.borderLeftColor??t.style.borderColor,c=t.style.borderRightColor??t.style.borderColor,l=t.style.borderTopBackgroundColor??t.style.borderBackgroundColor,a=t.style.borderBottomBackgroundColor??t.style.borderBackgroundColor,h=t.style.borderLeftBackgroundColor??t.style.borderBackgroundColor,u=t.style.borderRightBackgroundColor??t.style.borderBackgroundColor,p=t.style.borderTopDimColor??t.style.borderDimColor,b=t.style.borderBottomDimColor??t.style.borderDimColor,m=t.style.borderLeftDimColor??t.style.borderDimColor,y=t.style.borderRightDimColor??t.style.borderDimColor,k=t.style.borderTop!==!1,w=t.style.borderBottom!==!1,B=t.style.borderLeft!==!1,W=t.style.borderRight!==!1,v=Math.max(0,n-(B?1:0)-(W?1:0));let M;if(k){const L=B?P(i.topLeft,d,l,p):"",O=W?P(i.topRight,d,l,p):"",R=Ce(i.top,v,t.style.borderTopTitle,t.style.borderTopTitleAlignment,t.style.borderTopRightTitle,d,l,p);M=L+R+O}let C=s;k&&(C-=1),w&&(C-=1),C=Math.max(0,C);let S="";B&&(S=`${P(i.left,f,h,m)}
6
+ `.repeat(C));let N="";W&&(N=`${P(i.right,c,u,y)}
7
+ `.repeat(C));let x;if(w){const L=B?P(i.bottomLeft,g,a,b):"",O=W?P(i.bottomRight,g,a,b):"",R=Ce(i.bottom,v,t.style.borderBottomTitle,t.style.borderBottomTitleAlignment,void 0,g,a,b);x=L+R+O}const _=k?1:0;M&&r.write(o,e,M,{transformers:[]}),S&&r.write(o,e+_,S,{transformers:[]}),N&&r.write(o+n-1,e+_,N,{transformers:[]}),x&&r.write(o,e+s-1,x,{transformers:[]})}},"renderBorder");var gt=Object.defineProperty,ft=D((o,e)=>gt(o,"name",{value:e,configurable:!0}),"m");const Ne=[],Se=ft(({axis:o,color:e,layout:t,output:r})=>{const{thumb:{end:n,endHalf:s,start:i,startHalf:d},x:g,y:f}=t;if(o==="vertical")for(let c=i;c<n;c++){let l="█";const a=2*c>=d&&2*c<s,h=2*c+1>=d&&2*c+1<s;a&&!h?l="▀":!a&&h&&(l="▄");const u=e?J(l,e,"foreground"):l;r.write(g,f+c,u,{transformers:Ne})}else for(let c=i;c<n;c++){let l="█";const a=2*c>=d&&2*c<s,h=2*c+1>=d&&2*c+1<s;a&&!h?l="▌":!a&&h&&(l="▐");const u=e?J(l,e,"foreground"):l;r.write(g+c,f,u,{transformers:Ne})}},"renderScrollbar");var pt=Object.defineProperty,re=D((o,e)=>pt(o,"name",{value:e,configurable:!0}),"b");const we=re((o,e=[])=>{for(const t of o.childNodes){if(t.nodeName==="#text")continue;const r=t;if(!r.internal_stickyAlternate)if(r.internal_sticky)e.push({node:r,type:r.internal_sticky==="bottom"?"bottom":"top"});else{const n=r.style.overflow??"visible",s=r.style.overflowX??n,i=r.style.overflowY??n;!(s==="scroll"||i==="scroll")&&r.childNodes&&we(r,e)}}return e},"getStickyDescendants"),mt=re((o,e,t,r)=>{let n,s=-1,i,d=-1;for(const[f,c]of o.entries()){const{node:l,type:a}=c;if(!l.yogaNode)continue;const h=F(l,e)??0,u=Math.round(l.yogaNode.getComputedHeight()),p=h+u,b=l.parentNode;let m=0,y=Number.MAX_SAFE_INTEGER;b?.yogaNode&&(m=F(b,e)??0,y=Math.round(b.yogaNode.getComputedHeight())),a==="top"&&h<t&&m+y>t&&(n=c,s=f),a==="bottom"&&Math.floor(p)>Math.floor(r)&&m<r&&(i=c,d=f)}const g=[];if(n){let f;for(let c=s+1;c<o.length;c++){const l=o[c];if(l.type!=="bottom"){f=l;break}}g.push({nextStickyNodeInfo:f,stickyNode:n.node,type:"top"})}if(i){let f;for(let c=d-1;c>=0;c--){const l=o[c];if(l.type==="bottom"){f=l;break}}g.push({nextStickyNodeInfo:f,stickyNode:i.node,type:"bottom"})}return g},"identifyActiveStickyNodes"),yt=re((o,e,t,r,n)=>{const{newTransformers:s,skipStaticElements:i,x:d,y:g}=n,{yogaNode:f}=e;if(!f)return;const c=f.getComputedBorder(T.EDGE_TOP),l=f.getComputedBorder(T.EDGE_LEFT),a=Me(e),h=e.internal_scrollState?.clientHeight??0;for(const{nextStickyNodeInfo:u,stickyNode:p,type:b}of o){if(!p.yogaNode)continue;const m=F(p,e)??0,y=Math.round(p.yogaNode.getComputedHeight()),k=d+(Fe(p,e)??0),w=p.parentNode;let B=0,W=Number.MAX_SAFE_INTEGER;w?.yogaNode&&(B=F(w,e)??0,W=Math.round(w.yogaNode.getComputedHeight()));let v;if(b==="top"){const S=w?.yogaNode?.getComputedBorder(T.EDGE_BOTTOM)??0,N=B+W-S;let x=g-a+N-y;const _=g-a+m,L=g+c;if(u?.node?.yogaNode){const O=F(u.node,e)??0,R=g-a+O-y;R<x&&(x=R)}v=Math.min(Math.max(L,_),x)}else{const S=w?.yogaNode?.getComputedBorder(T.EDGE_TOP)??0;let N=g-a+B+S;const x=g-a+m,_=g+c+h-y;if(u?.node?.yogaNode){const L=Math.round(u.node.yogaNode.getComputedHeight()),O=F(u.node,e)??0,R=g-a+O+L;R>N&&(N=R)}v=Math.max(Math.min(_,x),N)}const M=r({height:y,width:Math.round(p.yogaNode.getComputedWidth())});X(p,M,{offsetX:-Math.round(p.yogaNode.getComputedLeft()),offsetY:-Math.round(p.yogaNode.getComputedTop()),skipStaticElements:i,transformers:s});const C=M.get().output.split(`
8
+ `);for(const[S,N]of C.entries())N&&N.length>0&&t.write(k-(d+l),v-(g+c)+S,N,{transformers:[]})}},"renderActiveStickyNodes");var bt=Object.defineProperty,$=D((o,e)=>bt(o,"name",{value:e,configurable:!0}),"x");const vt=$((o,e)=>{const t=o.childNodes[0]?.yogaNode;if(t){const r=Math.round(t.getComputedLeft()),n=Math.round(t.getComputedTop());e=`
9
+ `.repeat(n)+Pe(e,r)}return e},"applyPaddingToText"),Ct=31,Nt=127,St=128,Et=159,Mt=$((o,e)=>{if(!Number.isFinite(e))return!1;if(e<0)return!0;let t=0;for(const r of o){if(r===`
10
+ `){if(t>e)return!0;t=0;continue}const n=r.codePointAt(0);if(n<=Ct||n===Nt||n>=St&&n<=Et||We(n)||(t++,t>e))return!0}return!1},"mightExceedWidth"),Tt=$(o=>(o.internal_hidden??!1)||o.yogaNode?.getDisplay()===T.DISPLAY_NONE,"isNodeHidden"),xt=$(o=>{let e=o;for(;e;){if(Tt(e))return!0;e=e.parentNode}return!1},"isNodeOrAncestorHidden"),Z=$((o,e={})=>{if(e.skipStaticElements&&o.internal_static||o.internal_hidden||o.internal_stickyAlternate||o.yogaNode?.getDisplay()===T.DISPLAY_NONE)return"";let t="";if(o.nodeName==="ink-text")t=Te(o);else if(o.nodeName==="ink-box"||o.nodeName==="ink-root"){const r=o.style.flexDirection==="row"||o.style.flexDirection==="row-reverse"?" ":`
11
+ `;t=(o.style.flexDirection==="row-reverse"||o.style.flexDirection==="column-reverse"?o.childNodes.toReversed():[...o.childNodes]).map(n=>Z(n,{parentRole:o.internal_accessibility?.role,skipStaticElements:e.skipStaticElements})).filter(Boolean).join(r)}if(o.internal_accessibility){const{role:r,state:n}=o.internal_accessibility;if(n){const s=Object.keys(n).filter(i=>n[i]).join(", ");s&&(t=`(${s}) ${t}`)}r&&r!==e.parentRole&&(t=`${r}: ${t}`)}return t},"renderNodeToScreenReaderOutput"),X=$((o,e,t)=>{const{absoluteOffsetX:r,absoluteOffsetY:n,offsetX:s=0,offsetY:i=0,renderState:d,selectionMap:g,skipStaticElements:f,transformers:c=[]}=t;if(f&&o.internal_static||o.internal_hidden)return;if(o.cachedRender){const a=Math.round(s+(o.yogaNode?.getComputedLeft()??0)),h=Math.round(i+(o.yogaNode?.getComputedTop()??0));e.addRegionTree(o.cachedRender,a,h);return}if(o.nodeName==="ink-cursor"){if(!d)return;d.cursorRequested=!0;const a=o.internal_cursor;if(!a){d.cursorPosition=void 0;return}if(a.inline){if(d.lastTextWriteEnd)d.cursorPosition={x:d.lastTextWriteEnd.x,y:d.lastTextWriteEnd.y};else{const p=o.parentNode?ue(o.parentNode):void 0;d.cursorPosition=p?{x:p.x,y:p.y}:void 0}return}const h=a.anchorRef?a.anchorRef.current:o.parentNode;if(!h){d.cursorPosition=void 0;return}if(a.anchorRef&&xt(h)){d.cursorPosition=void 0;return}const u=ue(h);if(!u){d.cursorPosition=void 0;return}d.cursorPosition={x:u.x+a.x,y:u.y+a.y};return}const{yogaNode:l}=o;if(l){if(l.getDisplay()===T.DISPLAY_NONE)return;const a=l.getComputedLeft(),h=l.getComputedTop(),u=Math.round(s+a),p=Math.round(i+h),b=Math.round((r??s)+a),m=Math.round((n??i)+h),y=e.getCurrentClip();if(y){const v=Math.round(l.getComputedWidth()),M=Math.round(l.getComputedHeight()),C=b+v,S=m+M,N=y.x1??-1/0,x=y.x2??1/0,_=y.y1??-1/0,L=y.y2??1/0;if(C<=N||b>=x||S<=_||m>=L)return}let k=c;if(typeof o.internal_transform=="function"&&(k=[o.internal_transform,...c]),o.nodeName==="ink-text"){let v=Te(o);if(v.length>0){const M=lt(l);if(Mt(v,M)&&Math.max(...v.split(`
12
+ `).map(C=>Q(C)))>M){const C=o.style.textWrap??"wrap";v=Oe(v,Math.floor(M),C)}if(v=vt(o,v),e.write(u,p,v,{transformers:k}),d){const C=v.split(`
13
+ `),S=C.at(-1)??"";d.lastTextWriteEnd={x:u+Q(S),y:p+C.length-1}}}return}let w=!1,B=0,W=0;if(o.nodeName==="ink-box"){ut(u,p,o,e),ht(u,p,o,e);const v=o.style.overflow??"visible",M=o.style.overflowX??v,C=o.style.overflowY??v,S=M==="hidden"||M==="scroll",N=C==="hidden"||C==="scroll";if(S||N){const x=Math.round(l.getComputedWidth()),_=Math.round(l.getComputedHeight()),L=S?u+l.getComputedBorder(T.EDGE_LEFT):u,O=S?x-l.getComputedBorder(T.EDGE_LEFT)-l.getComputedBorder(T.EDGE_RIGHT):x,R=N?p+l.getComputedBorder(T.EDGE_TOP):p,U=N?_-l.getComputedBorder(T.EDGE_TOP)-l.getComputedBorder(T.EDGE_BOTTOM):_;e.startChildRegion(L,R,Math.max(0,O),Math.max(0,U)),w=!0,C==="scroll"&&o.internal_scrollState&&(W=-o.internal_scrollState.scrollTop),M==="scroll"&&o.internal_scrollState&&(B=-o.internal_scrollState.scrollLeft)}}if(o.nodeName==="ink-root"||o.nodeName==="ink-box"||o.nodeName==="ink-static-render"){for(const v of o.childNodes)X(v,e,{absoluteOffsetX:b+B,absoluteOffsetY:m+W,offsetX:u+B,offsetY:p+W,renderState:d,selectionMap:g,skipStaticElements:f,transformers:k});if(o.nodeName==="ink-box"&&o.internal_scrollState){const v=we(o);if(v.length>0){const M=Me(o),C=o.internal_scrollState.clientHeight,S=M+C,N=mt(v,o,M,S);N.length>0&&yt(N,o,e,$(x=>new te(x),"createOutput"),{newTransformers:k,skipStaticElements:f,x:u,y:p})}}if(o.nodeName==="ink-box"&&o.internal_scrollState){const v=o.style.overflow??"visible",M=o.style.overflowX??v,C=o.style.overflowY??v,S=l.getComputedBorder(T.EDGE_LEFT),N=l.getComputedBorder(T.EDGE_RIGHT),x=l.getComputedBorder(T.EDGE_TOP),_=l.getComputedBorder(T.EDGE_BOTTOM),L=Math.round(l.getComputedWidth()-S-N),O=Math.round(l.getComputedHeight()-x-_),{clientHeight:R,clientWidth:U,scrollHeight:ie,scrollLeft:Le,scrollTop:Re,scrollWidth:ne}=o.internal_scrollState,se=C==="scroll"&&ie>R,_e=M==="scroll"&&ne>U,le=o.internal_scrollbar!==!1;if(se&&le){const G=ce({axis:"vertical",clientDimension:R,hasOppositeScrollbar:!1,height:O,marginBottom:0,marginRight:0,scrollDimension:ie,scrollPosition:Re,width:L,x:u+S,y:p+x});G&&Se({axis:"vertical",color:o.style.scrollbarThumbColor,layout:G,output:e})}if(_e&&le){const G=ce({axis:"horizontal",clientDimension:U,hasOppositeScrollbar:se,height:O,marginBottom:0,marginRight:0,scrollDimension:ne,scrollPosition:Le,width:L,x:u+S,y:p+x});G&&Se({axis:"horizontal",color:o.style.scrollbarThumbColor,layout:G,output:e})}}w&&e.endChildRegion()}}},"renderNodeToOutput"),zt=$((o,e)=>{if(!o.yogaNode)return;const t=Math.round(o.yogaNode.getComputedWidth()),r=Math.round(o.yogaNode.getComputedHeight());if(t<=0||r<=0)return;const{setCachedRender:n}=require("./dom"),s=new te({height:r,width:t});for(const d of o.childNodes)X(d,s,{skipStaticElements:e?.skipStaticElements??!1});const i={children:[],cursorPosition:void 0,height:r,id:o.internalId??"static",isScrollable:!1,lines:[...s.getRootLines()],selectableSpans:[],stickyHeaders:[],styledOutput:[...s.getRootLines()],width:t,x:0,y:0};n(o,i)},"renderToStatic");var kt=Object.defineProperty,K=D((o,e)=>kt(o,"name",{value:e,configurable:!0}),"N");const wt=K((o,e)=>{const t=new Map;if(e.rangeCount===0)return t;const r=e.getRangeAt(0),{endContainer:n,endOffset:s,startContainer:i,startOffset:d}=r;if(!i||!n)return t;let g=!1,f=!1;const c=K((a,h,u,p,b,m)=>{if(a.nodeName==="#text"){const{length:y}=a.nodeValue;i===a&&(b.value=!0,u.value=h.value+d),n===a&&(m.value=!0,p.value=h.value+s),h.value+=y}else if("childNodes"in a){for(const y of a.childNodes)a===i&&(b.value=!0,u.value=h.value),a===n&&(m.value=!0,p.value=h.value),c(y,h,u,p,b,m);a===i&&d===a.childNodes.length&&(b.value=!0,u.value=h.value),a===n&&s===a.childNodes.length&&(m.value=!0,p.value=h.value)}},"visitChildren"),l=K(a=>{if(a.nodeName==="ink-text"){if(!De(a))return;const h={value:0},u={value:-1},p={value:-1},b={value:!1},m={value:!1};for(const y of a.childNodes)a===i&&(b.value=!0,u.value=h.value),a===n&&(m.value=!0,p.value=h.value),c(y,h,u,p,b,m);if(a===i&&d===a.childNodes.length&&(b.value=!0,u.value=h.value),a===n&&s===a.childNodes.length&&(m.value=!0,p.value=h.value),(g||b.value)&&(!f||m.value)){const y=b.value?u.value:0,k=m.value?p.value:h.value;y!==-1&&k!==-1&&y<k&&t.set(a,{end:k,start:y})}b.value&&(g=!0),m.value&&(f=!0)}else{const{childNodes:h}=a;if(h){for(const u of h)a===i&&(g=!0),a===n&&(f=!0),l(u);a===i&&d===h.length&&(g=!0),a===n&&s===h.length&&(f=!0)}}},"visit");return l(o),t},"calculateSelectionMap"),Lt=new ee,Rt=new ee,_t=new WeakMap,Bt=new WeakMap,Ee=K(({caches:o,height:e,node:t,outputs:r,width:n})=>{let s=r.get(t);return s||(s=new te({caches:o,height:e,width:n}),r.set(t,s)),s.reset(n,e),s},"getReusableOutput"),Yt=K((o,e,t)=>{if(o.yogaNode){if(e){const f=Z(o,{skipStaticElements:!0}),c=f===""?0:f.split(`
14
+ `).length;let l="";return o.staticNode&&(l=Z(o.staticNode,{skipStaticElements:!1})),{cursorPosition:void 0,cursorRequested:!1,output:f,outputHeight:c,staticOutput:l?`${l}
15
+ `:""}}const r=t?.selection&&t.selection.rangeCount>0?wt(o,t.selection):void 0,n=Ee({caches:Lt,height:o.yogaNode.getComputedHeight(),node:o,outputs:_t,width:o.yogaNode.getComputedWidth()}),s={cursorPosition:void 0,cursorRequested:!1};X(o,n,{renderState:s,selectionMap:r,skipStaticElements:!0});let i;if(o.staticNode?.yogaNode&&(i=Ee({caches:Rt,height:o.staticNode.yogaNode.getComputedHeight(),node:o,outputs:Bt,width:o.staticNode.yogaNode.getComputedWidth()}),X(o.staticNode,i,{skipStaticElements:!1})),t?.useNativeRenderer){const{buffer:f,height:c}=n.getBuffer();return{cursorPosition:s.cursorPosition,cursorRequested:s.cursorRequested,output:"",outputBuffer:f,outputHeight:c,outputWidth:n.width,staticOutput:i?`${i.get().output}
16
+ `:""}}const{height:d,output:g}=n.get();return{cursorPosition:s.cursorPosition,cursorRequested:s.cursorRequested,output:g,outputHeight:d,staticOutput:i?`${i.get().output}
17
+ `:""}}return{cursorPosition:void 0,cursorRequested:!1,output:"",outputHeight:0,staticOutput:""}},"renderer");export{te as A,X as B,Yt as R,zt as r};
@@ -1,4 +1,4 @@
1
- import { D as DOMNode, S as StyledLine } from "./dom.d-BZZeZlyP.js";
1
+ import { D as DOMNode, S as StyledLine } from "./dom.d-CcFuBd-k.js";
2
2
  /**
3
3
  * Compare the document position of two points in the DOM tree.
4
4
  * Returns -1 if A is before B, 0 if equal, 1 if A is after B.
@@ -0,0 +1 @@
1
+ import"@visulima/string";import{c as i,a as s,e as l,i as n,m as d,s as r,b as c,l as h,d as y,t as S}from"./measure-text-DDjHT1jD.js";export{i as clearStringWidthCache,s as clearStyledLineCache,l as default,n as inkCharacterWidth,d as measureStyledLine,r as setEnableStyledLineCache,c as setStringWidthFunction,h as splitStyledLineByNewline,y as styledLineWidth,S as toStyledLine};
@@ -0,0 +1 @@
1
+ var h=Object.defineProperty;var u=(e,n)=>h(e,"name",{value:n,configurable:!0});import{h as m,t as x}from"./ansi-tokenizer-DqX9nJuk.js";var p=Object.defineProperty,d=u((e,n)=>p(e,"name",{value:n,configurable:!0}),"r");const v=/^[\d:;]*$/,N="\x1B]8;",g="8;",y=d(e=>e.startsWith(N)||e.startsWith(g),"isAllowedOsc"),_=d(e=>{if(!m(e))return e;let n="";for(const t of x(e)){if(t.type==="text"){n+=t.value;continue}if(t.type==="osc"&&y(t.value)){n+=t.value;continue}t.type==="csi"&&t.finalCharacter==="m"&&t.intermediateString===""&&v.test(t.parameterString)&&(n+=t.value)}return n},"sanitizeAnsi");var C=Object.defineProperty,f=u((e,n)=>C(e,"name",{value:n,configurable:!0}),"d");const k=f(e=>{let n="";for(let t=0;t<e.childNodes.length;t++){const a=e.childNodes[t];if(a===void 0)continue;let o="";a.nodeName==="#text"?o=a.nodeValue:((a.nodeName==="ink-text"||a.nodeName==="ink-virtual-text")&&(o=k(a)),o.length>0&&typeof a.internal_transform=="function"&&(o=a.internal_transform(o,t))),n+=o}return _(n)},"squashTextNodes"),b=f((e,n,t)=>{if(e.internal_textCache){const{map:s,text:r}=e.internal_textCache;for(const[i,l]of s.entries())n.set(i,{end:l.end+t.current,start:l.start+t.current});return t.current+=r.length,r}let a="";const o=new Map,c={current:0};for(let s=0;s<e.childNodes.length;s++){const r=e.childNodes[s];if(r===void 0)continue;let i="";const l=c.current;r.nodeName==="#text"?(i=r.nodeValue,o.set(r,{end:l+i.length,start:l}),c.current+=i.length):((r.nodeName==="ink-text"||r.nodeName==="ink-virtual-text")&&(i=b(r,o,c),o.set(r,{end:c.current,start:l})),i.length>0&&typeof r.internal_transform=="function"&&(i=r.internal_transform(i,s))),a+=i}e.internal_textCache={map:o,text:a};for(const[s,r]of o.entries())n.set(s,{end:r.end+t.current,start:r.start+t.current});return t.current+=a.length,a},"squashTextNodesWithMap");export{k as default,b as squashTextNodesWithMap};
@@ -1,103 +1,7 @@
1
- import { A as AnsiColors } from "./index.server.d-eZWyC2Ku.js";
1
+ import { AnsiColors } from '@visulima/colorize';
2
+ import { Boxes, BoxStyle } from 'cli-boxes';
2
3
  import { LiteralUnion } from 'type-fest';
3
4
  import 'yoga-layout';
4
- /**
5
- Style of the box border.
6
- */
7
- type BoxStyle = {
8
- readonly topLeft: string;
9
- readonly top: string;
10
- readonly topRight: string;
11
- readonly right: string;
12
- readonly bottomRight: string;
13
- readonly bottom: string;
14
- readonly bottomLeft: string;
15
- readonly left: string;
16
- };
17
- /**
18
- All box styles.
19
- */
20
- type Boxes = {
21
- /**
22
- @example
23
- ```
24
- ┌────┐
25
- │ │
26
- └────┘
27
- ```
28
- */
29
- readonly single: BoxStyle;
30
-
31
- /**
32
- @example
33
- ```
34
- ╔════╗
35
- ║ ║
36
- ╚════╝
37
- ```
38
- */
39
- readonly double: BoxStyle;
40
-
41
- /**
42
- @example
43
- ```
44
- ╭────╮
45
- │ │
46
- ╰────╯
47
- ```
48
- */
49
- readonly round: BoxStyle;
50
-
51
- /**
52
- @example
53
- ```
54
- ┏━━━━┓
55
- ┃ ┃
56
- ┗━━━━┛
57
- ```
58
- */
59
- readonly bold: BoxStyle;
60
-
61
- /**
62
- @example
63
- ```
64
- ╓────╖
65
- ║ ║
66
- ╙────╜
67
- ```
68
- */
69
- readonly singleDouble: BoxStyle;
70
-
71
- /**
72
- @example
73
- ```
74
- ╒════╕
75
- │ │
76
- ╘════╛
77
- ```
78
- */
79
- readonly doubleSingle: BoxStyle;
80
-
81
- /**
82
- @example
83
- ```
84
- +----+
85
- | |
86
- +----+
87
- ```
88
- */
89
- readonly classic: BoxStyle;
90
-
91
- /**
92
- @example
93
- ```
94
- ↘↓↓↓↓↙
95
- → ←
96
- ↗↑↑↑↑↖
97
- ```
98
- */
99
- readonly arrow: BoxStyle;
100
- };
101
5
  type Styles = {
102
6
  /**
103
7
  * It defines the alignment along the cross axis when there are multiple lines of flex items (when using flex-wrap).
@@ -327,6 +231,26 @@ type Styles = {
327
231
  */
328
232
  readonly maxHeight?: number | string;
329
233
  /**
234
+ * Caps how far the stable scroll height is allowed to grow beyond the
235
+ * content currently in the box, in rows. Only applies when both
236
+ * `stableScrollback` and `overflowToBackbuffer` are enabled.
237
+ *
238
+ * Without a cap, `scrollHeight` for a stable-scrollback box never shrinks
239
+ * and grows monotonically for the lifetime of the box (long-running logs,
240
+ * streaming output). That makes the scrollbar/scrollTop math treat an
241
+ * ever-growing region as scrollable even after the content is gone. This
242
+ * bounds the retained history to at most `maxScrollbackLength` rows past
243
+ * the current content. Omit for the previous unbounded behavior.
244
+ *
245
+ * It also bounds a single-frame backbuffer burst to at most this many rows
246
+ * on a large `scrollTop` jump. A value of `0` therefore disables
247
+ * terminal-scrollback emission entirely (scrolled-off lines are still
248
+ * clipped from the live view, just not flushed to history) — use it to
249
+ * cap growth without keeping any backbuffer, or omit it for unbounded
250
+ * retention.
251
+ */
252
+ readonly maxScrollbackLength?: number;
253
+ /**
330
254
  * Sets a maximum width of the element.
331
255
  * Percentages aren't supported yet; see https://github.com/facebook/yoga/issues/872.
332
256
  */
@@ -347,13 +271,21 @@ type Styles = {
347
271
  readonly overflow?: "visible" | "hidden" | "scroll";
348
272
  /**
349
273
  * If true, content that is scrolled out of the top of the box (when overflowY is 'scroll')
350
- * will be added to the terminal's scrollback history.
274
+ * is flushed into the terminal emulator's real scrollback history instead
275
+ * of being clipped and discarded. Scrolling back up in the terminal reveals
276
+ * the original lines.
351
277
  *
352
- * Results are undefined if more than one scrollable region in the app has
353
- * overflowToBackbuffer enabled.
278
+ * Constraints:
279
+ * - Inline mode only. In alternate-screen mode the terminal has no
280
+ * scrollback, so this is a no-op. Non-TTY/piped output is also a no-op
281
+ * (content is clipped as before).
282
+ * - Exactly one scrollable region in the app may enable
283
+ * `overflowToBackbuffer`. Results are undefined with more than one.
354
284
  *
355
- * Note: Scroll height tracking is implemented but actual backbuffer writes
356
- * require worker-based rendering (not yet ported).
285
+ * Each scrolled-off line is emitted exactly once; scrolling back up never
286
+ * re-emits. Pair with `stableScrollback` to keep `scrollTop` math stable as
287
+ * history accumulates, and `maxScrollbackLength` to bound a single-frame
288
+ * burst on a large `scrollTop` jump.
357
289
  * @default false
358
290
  */
359
291
  readonly overflowToBackbuffer?: boolean;
@@ -426,8 +358,8 @@ type Styles = {
426
358
  * will never decrease as long as the existing history remains valid.
427
359
  * This prevents the terminal's scrollback from being corrupted when content shrinks.
428
360
  *
429
- * Note: Scroll height tracking is implemented but actual backbuffer writes
430
- * require worker-based rendering (not yet ported).
361
+ * Growth is bounded by `maxScrollbackLength` (if set); otherwise the stable
362
+ * height grows monotonically for the lifetime of the box.
431
363
  * @default false
432
364
  */
433
365
  readonly stableScrollback?: boolean;
@@ -0,0 +1,2 @@
1
+ var m=Object.defineProperty;var o=(t,e)=>m(t,"name",{value:e,configurable:!0});import{getStringWidth as c}from"@visulima/string";var p=Object.defineProperty,u=o((t,e)=>p(t,"name",{value:e,configurable:!0}),"i");const d={ambiguousIsNarrow:!0,emojiWidth:1};function g(t){return Math.max(1,c(t,d))}o(g,"getCodePointWidth");u(g,"getCodePointWidth");function f(t){return c(t,d)}o(f,"getStringWidth");u(f,"getStringWidth");function h(t,e){if(e<=0)return 0;if(t.length===0)return 1;let i=1,r=0;for(const a of t){const n=Math.min(g(a),e);r+n>e&&(i++,r=0),r+=n}return i}o(h,"countWrappedRowsForLine");u(h,"countWrappedRowsForLine");function W(t,e){const i=t.split(`
2
+ `);let r=0,a=0;for(const n of i){const s=f(n);s>r&&(r=s),a+=e>0?h(n,e):0}return{maxLineWidth:r,wrappedRows:a}}o(W,"measureTextBlock");u(W,"measureTextBlock");export{f as a,g,W as m};
@@ -0,0 +1 @@
1
+ var t=Object.defineProperty;var s=(r,o)=>t(r,"name",{value:o,configurable:!0});import c from"terminal-size";var u=Object.defineProperty,i=s((r,o)=>u(r,"name",{value:o,configurable:!0}),"s");const l=i(r=>{const{columns:o,rows:e}=r;if(o&&e)return{columns:o,rows:e};const n=c();return{columns:o||n.columns||80,rows:e||n.rows||24}},"getWindowSize");export{l as g};
@@ -1,3 +1,3 @@
1
- var y=Object.defineProperty;var p=(e,n)=>y(e,"name",{value:n,configurable:!0});import{S as V,d as m,i as h}from"./measure-text-CIs55Wao.js";var b=Object.defineProperty,g=p((e,n)=>b(e,"name",{value:n,configurable:!0}),"g");const S=g((e,n,u="end")=>{if(n<1)return new V;if(m(e)<=n)return e;const r=new V;if(r.pushChar("…",0),n===1)return r;if(u==="start"){let t=0,s=e.length;for(let l=e.length-1;l>=0&&(t+=h(e.getValue(l)),!(t>n-1));l--)s=l;return r.combine(e.slice(s))}if(u==="middle"){const t=Math.ceil(n/2),s=n-t;let l=0,c=0;for(let i=0;i<e.length;i++){const d=h(e.getValue(i));if(c+d>t-1)break;c+=d,l=i+1}let a=e.length;c=0;for(let i=e.length-1;i>=0&&(c+=h(e.getValue(i)),!(c>s));i--)a=i;return e.slice(0,l).combine(r,e.slice(a))}let f=0,o=0;for(let t=0;t<e.length;t++){const s=h(e.getValue(t));if(o+s>n-1)break;o+=s,f=t+1}return e.slice(0,f).combine(r)},"truncateStyledLine"),w=g((e,n)=>{const u=[];let r=0,f=0,o=!0,t=0;for(;t<e.length;){const s=e.getValue(t);if(s===`
1
+ var y=Object.defineProperty;var p=(e,n)=>y(e,"name",{value:n,configurable:!0});import{S as V,d as m,i as h}from"./measure-text-DDjHT1jD.js";var b=Object.defineProperty,g=p((e,n)=>b(e,"name",{value:n,configurable:!0}),"g");const S=g((e,n,u="end")=>{if(n<1)return new V;if(m(e)<=n)return e;const r=new V;if(r.pushChar("…",0),n===1)return r;if(u==="start"){let t=0,s=e.length;for(let l=e.length-1;l>=0&&(t+=h(e.getValue(l)),!(t>n-1));l--)s=l;return r.combine(e.slice(s))}if(u==="middle"){const t=Math.ceil(n/2),s=n-t;let l=0,c=0;for(let i=0;i<e.length;i++){const d=h(e.getValue(i));if(c+d>t-1)break;c+=d,l=i+1}let a=e.length;c=0;for(let i=e.length-1;i>=0&&(c+=h(e.getValue(i)),!(c>s));i--)a=i;return e.slice(0,l).combine(r,e.slice(a))}let f=0,o=0;for(let t=0;t<e.length;t++){const s=h(e.getValue(t));if(o+s>n-1)break;o+=s,f=t+1}return e.slice(0,f).combine(r)},"truncateStyledLine"),w=g((e,n)=>{const u=[];let r=0,f=0,o=!0,t=0;for(;t<e.length;){const s=e.getValue(t);if(s===`
2
2
  `){u.push(e.slice(r,t)),r=t+1,f=0,o=!0,t++;continue}let l=t,c=0;if(s===" ")c=h(" "),l=t+1;else for(;l<e.length&&e.getValue(l)!==" "&&e.getValue(l)!==`
3
3
  `;)c+=h(e.getValue(l)),l++;if(f+c>n&&f>0){if(s===" "&&!o&&!e.hasStyles(t)){t=l;continue}let a=t;for(;a>r&&e.getValue(a-1)===" "&&!e.hasStyles(a-1);)a--;u.push(e.slice(r,a)),r=t,f=0;continue}if(f===0&&c>n){let a=t,i=0;for(;a<l;){const d=h(e.getValue(a));i+d>n&&i>0&&(u.push(e.slice(r,a)),r=a,i=0),i+=d,a++}f=i,t=l,o=!1}else f+=c,t=l,s!==" "&&(o=!1)}return(r<e.length||u.length===0)&&u.push(e.slice(r)),u},"wrapStyledLine"),v=g((e,n,u="wrap")=>{if(u.startsWith("truncate")){let r="end";return u==="truncate-middle"?r="middle":u==="truncate-start"&&(r="start"),[S(e,n,r)]}return w(e,n)},"wrapOrTruncateStyledLine");export{v as wrapOrTruncateStyledLine};
@@ -1,6 +1,7 @@
1
1
  import React, { Context, RefObject, ReactNode } from 'react';
2
- import { M as MouseEvent, T as TuiApp, c as InputParser, a as InlineOptions } from "../packem_shared/input.d-D-Yxqha8.js";
2
+ import { M as MouseEvent, T as TuiApp, c as InputParser, a as InlineOptions } from "../packem_shared/input.d-CgxV2e8U.js";
3
3
  import Yoga from 'yoga-layout';
4
+ import 'tseep';
4
5
  interface DevToolsProps {
5
6
  children: React.ReactNode;
6
7
  /** Show/hide the HUD without unmounting (default: true) */
@@ -1 +1 @@
1
- import{DevTools as o}from"../packem_shared/DevTools-ClnTSU76.js";import{FocusContext as u,FocusProvider as s,useFocus as n,useFocusManager as p}from"../packem_shared/FocusContext-Xy0cwJpO.js";import{TuiContext as d,measureElement as f,useApp as l,useBoxMetrics as m,useCursor as a,useInput as i,useIsScreenReaderEnabled as S,useMouse as c,usePaste as T,useScrollable as C,useStderr as F,useStdin as I,useStdout as M,useTextInput as v,useTuiContext as y,useWindowSize as E}from"../packem_shared/TuiContext-BoJvG3NN.js";import{render as g,renderInline as A}from"../packem_shared/render-yGJFE4of.js";import{renderToString as D}from"../packem_shared/renderToString-D4JqS-Zv.js";import{Static as N}from"../packem_shared/Static-DLynr5pn.js";import{LayoutNode as P}from"../packem_shared/LayoutNode-Q7nU3hmO.js";import{NAMED_COLORS as w,applyStyles as z,resolveColor as W}from"../packem_shared/NAMED_COLORS-B9fJsYdg.js";import{renderTreeToBuffer as h}from"../packem_shared/renderTreeToBuffer-DWl5_yTW.js";export{o as DevTools,u as FocusContext,s as FocusProvider,P as LayoutNode,w as NAMED_COLORS,N as Static,d as TuiContext,z as applyStyles,f as measureElement,g as render,A as renderInline,D as renderToString,h as renderTreeToBuffer,W as resolveColor,l as useApp,m as useBoxMetrics,a as useCursor,n as useFocus,p as useFocusManager,i as useInput,S as useIsScreenReaderEnabled,c as useMouse,T as usePaste,C as useScrollable,F as useStderr,I as useStdin,M as useStdout,v as useTextInput,y as useTuiContext,E as useWindowSize};
1
+ import{DevTools as o}from"../packem_shared/DevTools-ClAYpMVI.js";import{FocusContext as u,FocusProvider as s,useFocus as n,useFocusManager as p}from"../packem_shared/FocusContext-Xy0cwJpO.js";import{TuiContext as d,measureElement as f,useApp as l,useBoxMetrics as m,useCursor as a,useInput as i,useIsScreenReaderEnabled as S,useMouse as c,usePaste as T,useScrollable as C,useStderr as F,useStdin as I,useStdout as M,useTextInput as v,useTuiContext as y,useWindowSize as E}from"../packem_shared/TuiContext-BoJvG3NN.js";import{render as g,renderInline as A}from"../packem_shared/render-Dh7HMhK1.js";import{renderToString as D}from"../packem_shared/renderToString-BbQiRHrd.js";import{Static as N}from"../packem_shared/Static-DLynr5pn.js";import{LayoutNode as P}from"../packem_shared/LayoutNode-B8zej4dm.js";import{NAMED_COLORS as w,applyStyles as z,resolveColor as W}from"../packem_shared/NAMED_COLORS-B9fJsYdg.js";import{renderTreeToBuffer as h}from"../packem_shared/renderTreeToBuffer-CZilzyhN.js";export{o as DevTools,u as FocusContext,s as FocusProvider,P as LayoutNode,w as NAMED_COLORS,N as Static,d as TuiContext,z as applyStyles,f as measureElement,g as render,A as renderInline,D as renderToString,h as renderTreeToBuffer,W as resolveColor,l as useApp,m as useBoxMetrics,a as useCursor,n as useFocus,p as useFocusManager,i as useInput,S as useIsScreenReaderEnabled,c as useMouse,T as usePaste,C as useScrollable,F as useStderr,I as useStdin,M as useStdout,v as useTextInput,y as useTuiContext,E as useWindowSize};
@@ -1,10 +1,11 @@
1
1
  import { ReactElement } from 'react';
2
- import { R as RenderOptions } from "../packem_shared/render.d-BJmVQ_cd.js";
3
- import "../packem_shared/dom.d-BZZeZlyP.js";
2
+ import { R as RenderOptions } from "../packem_shared/render.d-B1kiO3Ca.js";
3
+ import "../packem_shared/dom.d-CcFuBd-k.js";
4
4
  import 'yoga-layout';
5
- import "../packem_shared/styles.d-i6Mejqz2.js";
6
- import "../packem_shared/index.server.d-eZWyC2Ku.js";
5
+ import '@visulima/colorize';
6
+ import 'cli-boxes';
7
7
  import 'type-fest';
8
+ import "../packem_shared/styles.d-cMo36xQz.js";
8
9
  import 'node:stream';
9
10
  import "../packem_shared/cursor-helpers.d-BIvqz0TZ.js";
10
11
  declare const KEY: {
@@ -1 +1 @@
1
- var w=Object.defineProperty;var a=(t,e)=>w(t,"name",{value:e,configurable:!0});import{createRequire as F}from"node:module";import x from"../packem_shared/render-D9bHMHrx.js";import{createKeySender as y}from"../packem_shared/KEY-Bk8B-3h_.js";import{KEY as $}from"../packem_shared/KEY-Bk8B-3h_.js";import{createScreen as T}from"../packem_shared/createScreen-87XLHZq6.js";import{waitFor as j}from"../packem_shared/waitFor-Dj5zfL5s.js";const b=F(import.meta.url),o=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,v=a(t=>{if(typeof o<"u"&&o.versions&&o.versions.node){const[e,i]=o.versions.node.split(".").map(Number);if(e>22||e===22&&i>=3||e===20&&i>=16)return o.getBuiltinModule(t)}return b(t)},"__cjs_getBuiltinModule"),l=v("node:events");var R=Object.defineProperty,r=a((t,e)=>R(t,"name",{value:e,configurable:!0}),"t");class S extends l{static{a(this,"v")}static{r(this,"Stdout")}columns;_lastFrame;_frames=[];constructor(e=100){super(),this.columns=e}get frames(){return this._frames}lastFrame(){return this._lastFrame}write=r(e=>(this._frames.push(e),this._lastFrame=e,!0),"write")}class D extends l{static{a(this,"x")}static{r(this,"Stderr")}columns;_lastFrame;_frames=[];constructor(e=100){super(),this.columns=e}get frames(){return this._frames}lastFrame(){return this._lastFrame}write=r(e=>(this._frames.push(e),this._lastFrame=e,!0),"write")}class P extends l{static{a(this,"R")}static{r(this,"Stdin")}isTTY=!0;pendingData;write=r(e=>(this.pendingData=e,this.emit("readable"),this.emit("data",e),!0),"write");read(){const{pendingData:e}=this;return this.pendingData=void 0,e}setEncoding(){return this}setRawMode(){return this}resume(){return this}pause(){return this}ref(){return this}unref(){return this}}const c=[],O=r((t,e={})=>{const{columns:i,options:p}=e,n=new S(i),d=new D(i),m=new P,u=x(t,{debug:!0,exitOnCtrlC:!1,patchConsole:!1,stderr:d,stdin:m,stdout:n,...p});c.push(u);const f=T(()=>n.lastFrame(),n.frames),h=y(s=>m.write(s)),_=r(async()=>{await new Promise(s=>{setTimeout(s,0)}),await new Promise(s=>{setTimeout(s,0)})},"flush");return{cleanup:u.cleanup,flush:_,get frames(){return n.frames},keys:h,lastFrame:r(()=>n.lastFrame(),"lastFrame"),rerender:u.rerender,screen:f,stderr:d,stdin:m,stdout:n,unmount:u.unmount,async waitFor(s,g){await j(s,()=>f.text(),g)}}},"testRender"),Y=r(()=>{for(const t of c)t.cleanup();c.length=0},"cleanup");export{$ as KEY,Y as cleanup,y as createKeySender,T as createScreen,O as render,j as waitFor};
1
+ var w=Object.defineProperty;var a=(t,e)=>w(t,"name",{value:e,configurable:!0});import{createRequire as F}from"node:module";import x from"../packem_shared/render-bdbSzkJo.js";import{createKeySender as y}from"../packem_shared/KEY-Bk8B-3h_.js";import{KEY as $}from"../packem_shared/KEY-Bk8B-3h_.js";import{createScreen as T}from"../packem_shared/createScreen-CrLrxA6t.js";import{waitFor as j}from"../packem_shared/waitFor-Dj5zfL5s.js";const b=F(import.meta.url),o=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,v=a(t=>{if(typeof o<"u"&&o.versions&&o.versions.node){const[e,i]=o.versions.node.split(".").map(Number);if(e>22||e===22&&i>=3||e===20&&i>=16)return o.getBuiltinModule(t)}return b(t)},"__cjs_getBuiltinModule"),l=v("node:events");var R=Object.defineProperty,r=a((t,e)=>R(t,"name",{value:e,configurable:!0}),"t");class S extends l{static{a(this,"v")}static{r(this,"Stdout")}columns;_lastFrame;_frames=[];constructor(e=100){super(),this.columns=e}get frames(){return this._frames}lastFrame(){return this._lastFrame}write=r(e=>(this._frames.push(e),this._lastFrame=e,!0),"write")}class D extends l{static{a(this,"x")}static{r(this,"Stderr")}columns;_lastFrame;_frames=[];constructor(e=100){super(),this.columns=e}get frames(){return this._frames}lastFrame(){return this._lastFrame}write=r(e=>(this._frames.push(e),this._lastFrame=e,!0),"write")}class P extends l{static{a(this,"R")}static{r(this,"Stdin")}isTTY=!0;pendingData;write=r(e=>(this.pendingData=e,this.emit("readable"),this.emit("data",e),!0),"write");read(){const{pendingData:e}=this;return this.pendingData=void 0,e}setEncoding(){return this}setRawMode(){return this}resume(){return this}pause(){return this}ref(){return this}unref(){return this}}const c=[],O=r((t,e={})=>{const{columns:i,options:p}=e,n=new S(i),d=new D(i),m=new P,u=x(t,{debug:!0,exitOnCtrlC:!1,patchConsole:!1,stderr:d,stdin:m,stdout:n,...p});c.push(u);const f=T(()=>n.lastFrame(),n.frames),h=y(s=>m.write(s)),_=r(async()=>{await new Promise(s=>{setTimeout(s,0)}),await new Promise(s=>{setTimeout(s,0)})},"flush");return{cleanup:u.cleanup,flush:_,get frames(){return n.frames},keys:h,lastFrame:r(()=>n.lastFrame(),"lastFrame"),rerender:u.rerender,screen:f,stderr:d,stdin:m,stdout:n,unmount:u.unmount,async waitFor(s,g){await j(s,()=>f.text(),g)}}},"testRender"),Y=r(()=>{for(const t of c)t.cleanup();c.length=0},"cleanup");export{$ as KEY,Y as cleanup,y as createKeySender,T as createScreen,O as render,j as waitFor};