| 594 | `);K.write(Math.floor(w),v6,K8),K.clip({x1:void 0,x2:void 0,y1:v6,y2:m6}),EZ8(b6,K,{offsetX:n,offsetY:l,prevScreen:void 0,inheritedBackgroundColor:G}),K.unclip()}}}let l6=_L1.length?" ".repeat(n6):"";for(let S6 of _L1){if(S6.y>=y6+1||S6.y+S6.height<=V6)continue;let E6=Math.max(V6,Math.floor(S6.y)-T6),R6=Math.min(y6+1,Math.floor(S6.y+S6.height)-T6);if(E6>=o6&&R6<=I6+1)continue;if(E6>=R6)continue;let h6=Array(R6-E6).fill(l6).join(` |
| 595 | `);K.write(Math.floor(w),E6,h6),K.clip({x1:void 0,x2:void 0,y1:E6,y2:R6}),KL1(p,K,n,l,D,void 0,E6-l,R6-l,G,!0),K.unclip()}}else{let V6=A6&&A6.y!==l;if(V6&&R!==void 0&&x!==void 0)K.clear({x:Math.floor(w),y:Math.floor(R),width:Math.floor(J),height:Math.floor(x-R)});KL1(p,K,n,l,D,V6||P?void 0:Y,s,s+B,G)}zM.set(p,{x:n,y:l,width:C.getComputedWidth(),height:C.getComputedHeight()}),p.dirty=!1}}else{let I=q.style.backgroundColor;if(I||q.style.opaque){let B=O.getComputedBorder(F_.Left),p=O.getComputedBorder(F_.Right),C=O.getComputedBorder(F_.Top),g=O.getComputedBorder(F_.Bottom),F=Math.floor(J)-B-p,U=Math.floor(M)-C-g;if(F>0&&U>0){let c=" ".repeat(F),K6=I?wT6(c,{backgroundColor:I}):c,t=Array(U).fill(K6).join(` |
| 596 | `);K.write(w+B,H+C,t)}}S84(q,K,w,H,D,I||q.style.opaque?void 0:Y,G)}if(S)K.unclip();y84(w,H,q,K)}else if(q.nodeName==="ink-root")S84(q,K,w,H,D,Y,A);let f={x:w,y:H,width:J,height:M,top:j};if(zM.set(q,f),q.style.position==="absolute")xl6.push(f);q.dirty=!1}}function S84(q,K,_,z,Y,$,A){let O=!1,w=!1;for(let j of q.childNodes){let H=j,J=H.dirty,M=H.style.position==="absolute";if(EZ8(H,K,{offsetX:_,offsetY:z,prevScreen:Y||O?void 0:$,skipSelfBlit:w&&M&&!H.style.opaque&&H.style.backgroundColor===void 0,inheritedBackgroundColor:A}),J&&!O)if(!wZ_(H)||M)O=!0;else w=!0}}function wZ_(q){let K=q.style.overflowX??q.style.overflow,_=q.style.overflowY??q.style.overflow;return(K==="hidden"||K==="scroll")&&(_==="hidden"||_==="scroll")}function jZ_(q,K){let _=q.parentNode;if(!_)return!1;let z=K.getComputedTop(),Y=_.childNodes,$=Y.indexOf(q);for(let A=$+1;A<Y.length;A++){let O=Y[A].yogaNode;if(!O)continue;return O.getComputedTop()===z}for(let A=$-1;A>=0;A--){let O=Y[A].yogaNode;if(!O)continue;return O.getComputedTop()===z}return!1}function p84(q,K,_,z,Y,$,A){let O=z+$,w=Y+A;for(let j of q.childNodes){if(j.nodeName==="#text")continue;let H=j;if(H.style.position==="absolute"){let J=zM.get(H);if(J){xl6.push(J);let M=Math.floor(J.x),X=Math.floor(J.y),P=Math.floor(J.width),W=Math.floor(J.height);if(M<z||X<Y||M+P>O||X+W>w)K.blit(_,M,X,P,W)}}p84(H,K,_,z,Y,$,A)}}function KL1(q,K,_,z,Y,$,A,O,w,j=!1){let H=!1,J=0;for(let M of q.childNodes){let X=M,P=X.yogaNode;if(P){let D=zM.get(X),f,G;if(D?.top!==void 0&&!X.dirty&&J===0)f=D.top,G=D.height;else{if(f=P.getComputedTop(),G=P.getComputedHeight(),X.dirty)J+=G-(D?D.height:0);if(D)D.top=f}if(f+G<=A||f>=O){if(!j)AL1(X);continue}}let W=X.dirty;if(EZ8(X,K,{offsetX:_,offsetY:z,prevScreen:Y||H?void 0:$,inheritedBackgroundColor:w}),W)H=!0}}function AL1(q){zM.delete(q);for(let K of q.childNodes)if(K.nodeName!=="#text")AL1(K)}var mT6=!1,NZ8=null,_L1,xl6,$L1=null,zL1=null,t0_=4,e0_=5,qZ_=12,KZ_=2,_Z_=3,qL1=30,L84="\x1B]",R84="\x07",Il6;var LZ8=y(()=>{s$6();G84();KA6();fT6();E84();ky1();Bi();sE1();x08();_L1=[],xl6=[];Il6=EZ8});function B84(q,K){let _=K.toLowerCase();if(!_)return[];let z=_.length,Y=q.width,$=q.height,A=q.noSelect,O=[],w=performance.now();for(let j=0;j<$;j++){let H=j*Y,J="",M=[],X=[];for(let W=0;W<Y;W++){let D=H+W,f=Si(q,D);if(f.width===2||f.width===3||A[D]===1)continue;let G=f.char.toLowerCase(),Z=M.length;for(let T=0;T<G.length;T++)X.push(Z);J+=G,M.push(W)}let P=J.indexOf(_);while(P>=0){let W=X[P],D=X[P+z-1],f=M[W],G=M[D]+1;O.push({row:j,col:f,len:G-f}),P=J.indexOf(_,P+z)}}return HZ_.scan+=performance.now()-w,O}function g84(q,K,_,z,Y){if(Y<0||Y>=_.length)return!1;let $=_[Y],A=$.row+z;if(A<0||A>=q.height)return!1;let O=(j)=>K.withCurrentMatch(j),w=A*q.width;for(let j=$.col;j<$.col+$.len;j++){if(j<0||j>=q.width)continue;let H=Si(q,w+j);NT6(q,j,A,O(H.styleId))}return!0}var HZ_;var F84=y(()=>{ef8();_8();TT6();Ol6();VZ8();jl6();LZ8();Ci();HZ_={reconcile:0,yoga:0,paint:0,scan:0,calls:0}});function OL1(q,K){let _;return(z)=>{let{frontFrame:Y,backFrame:$,isTTY:A,terminalWidth:O,terminalRows:w}=z,j=Y.screen,H=$.screen,J=H.charPool,M=H.hyperlinkPool,X=q.yogaNode?.getComputedHeight(),P=q.yogaNode?.getComputedWidth(),W=X===void 0||!Number.isFinite(X)||X<0,D=P===void 0||!Number.isFinite(P)||P<0;if(!q.yogaNode||W||D){if(q.yogaNode&&(W||D))N(`Invalid yoga dimensions: width=${P}, height=${X}, childNodes=${q.childNodes.length}, terminalWidth=${O}, terminalRows=${w}`);return{screen:hi(O,0,K,J,M),viewport:{width:O,height:w},cursor:{x:0,y:0,visible:!0}}}let f=Math.floor(q.yogaNode.getComputedWidth()),G=Math.floor(q.yogaNode.getComputedHeight()),Z=z.altScreen?w:G;if(z.altScreen&&G>w)N(`alt-screen: yoga height ${G} > terminalRows ${w} — `+"something is rendering outside <AlternateScreen>. Overflow clipped.",{level:"warn"});let T=H??hi(f,Z,K,J,M);if(_)_.reset(f,Z,T);else _=new ZA6({width:f,height:Z,stylePool:K,screen:T});YL1(),b84(),I84();let v=Hsq();Il6(q,_,{prevScreen:v||z.prevFrameContaminated?void 0:j});let V=_.get(),E=u84();if(E)oW(E);return{scrollHint:z.altScreen?x84():null,scrollDrainPending:E!==null,screen:V,viewport:{width:O,height:z.altScreen?w+1:w},cursor:{x:0,y:z.altScreen?Math.max(0,Math.min(T.height,w)-1):T.height,visible:!A||T.height===0}}}}var U84=y(()=>{_8();TT6();fT6();VZ8();LZ8();Ci()});function Q84(q,K,_){if(!K)return!1;let z=K.toLowerCase(),Y=z.length,$=q.width,A=q.noSelect,O=q.height,w=!1;for(let j=0;j<O;j++){let H=j*$,J="",M=[],X=[];for(let W=0;W<$;W++){let D=H+W,f=Si(q,D);if(f.width===2||f.width===3||A[D]===1)continue;let G=f.char.toLowerCase(),Z=M.length;for(let T=0;T<G.length;T++)X.push(Z);J+=G,M.push(W)}let P=J.indexOf(z);while(P>=0){w=!0;let W=X[P],D=X[P+Y-1];for(let f=W;f<=D;f++){let G=M[f],Z=Si(q,H+G);NT6(q,G,j,_.withInverse(Z.styleId))}P=J.indexOf(z,P+Y)}}return w}var d84=y(()=>{Ci()});function ZF(){let q=aS.useContext(U16);if(!q)throw Error("useTerminalNotification must be used within TerminalWriteProvider");let K=aS.useCallback(({message:A,title:O})=>{let w=O?`${O}: |
| 597 | ${A}`:A;q(aW(EP(h2.ITERM2,` |
| 598 | |
| 599 | ${w}`)))},[q]),_=aS.useCallback(({message:A,title:O,id:w})=>{q(aW(EP(h2.KITTY,`i=${w}:d=0:p=title`,O))),q(aW(EP(h2.KITTY,`i=${w}:p=body`,A))),q(aW(EP(h2.KITTY,`i=${w}:d=1:a=focus`,"")))},[q]),z=aS.useCallback(({message:A,title:O})=>{q(aW(EP(h2.GHOSTTY,"notify",O,A)))},[q]),Y=aS.useCallback(()=>{q(JF)},[q]),$=aS.useCallback((A,O)=>{if(!E64())return;if(!A){q(aW(EP(h2.ITERM2,MA6.PROGRESS,XA6.CLEAR,"")));return}let w=Math.max(0,Math.min(100,Math.round(O??0)));switch(A){case"completed":q(aW(EP(h2.ITERM2,MA6.PROGRESS,XA6.CLEAR,"")));break;case"error":q(aW(EP(h2.ITERM2,MA6.PROGRESS,XA6.ERROR,w)));break;case"indeterminate":q(aW(EP(h2.ITERM2,MA6.PROGRESS,XA6.INDETERMINATE,"")));break;case"running":q(aW(EP(h2.ITERM2,MA6.PROGRESS,XA6.SET,w)));break;case null:break}},[q]);return aS.useMemo(()=>({notifyITerm2:K,notifyKitty:_,notifyGhostty:z,notifyBell:Y,progress:$}),[K,_,z,Y,$])}var aS,U16,c84;var GF=y(()=>{Bi();t$6();YM();aS=O6(D6(),1),U16=aS.createContext(null),c84=U16.Provider});import{closeSync as JZ_,constants as l84,openSync as MZ_,readSync as XZ_,writeSync as Fi}from"fs";import{format as n84}from"util";function i84(q){return Object.freeze({type:"stdout",content:rN1(q,1)})}class ul6{options;log;terminal;scheduleRender;isUnmounted=!1;isPaused=!1;container;rootNode;focusManager;renderer;stylePool;charPool;hyperlinkPool;exitPromise;restoreConsole;restoreStderr;unsubscribeTTYHandlers;terminalColumns;terminalRows;currentNode=null;frontFrame;backFrame;lastPoolResetTime=performance.now();drainTimer=null;lastYogaCounters={ms:0,visited:0,measured:0,cacheHits:0,live:0};altScreenParkPatch;selection=Xtq();searchHighlightQuery="";searchPositions=null;selectionListeners=new Set;hoveredNodes=new Set;altScreenActive=!1;altScreenMouseTracking=!1;prevFrameContaminated=!1;needsEraseBeforePaint=!1;cursorDeclaration=null;displayCursor=null;constructor(q){this.options=q;if(yN1(this),this.options.patchConsole)this.restoreConsole=this.patchConsole(),this.restoreStderr=this.patchStderr();this.terminal={stdout:q.stdout,stderr:q.stderr},this.terminalColumns=q.stdout.columns||80,this.terminalRows=q.stdout.rows||24,this.altScreenParkPatch=i84(this.terminalRows),this.stylePool=new U08,this.charPool=new Jl6,this.hyperlinkPool=new Ml6,this.frontFrame=F16(this.terminalRows,this.terminalColumns,this.stylePool,this.charPool,this.hyperlinkPool),this.backFrame=F16(this.terminalRows,this.terminalColumns,this.stylePool,this.charPool,this.hyperlinkPool),this.log=new cE1({isTTY:q.stdout.isTTY||!1,stylePool:this.stylePool});let K=()=>queueMicrotask(this.onRender);if(this.scheduleRender=qaq(K,PA6,{leading:!0,trailing:!0}),this.isUnmounted=!1,this.unsubscribeExit=Le(this.unmount,{alwaysLast:!1}),q.stdout.isTTY)q.stdout.on("resize",this.handleResize),process.on("SIGCONT",this.handleResume),this.unsubscribeTTYHandlers=()=>{q.stdout.off("resize",this.handleResize),process.off("SIGCONT",this.handleResume)};this.rootNode=zl6("ink-root"),this.focusManager=new vT6((_,z)=>Ri.dispatchDiscrete(_,z)),this.rootNode.focusManager=this.focusManager,this.renderer=OL1(this.rootNode,this.stylePool),this.rootNode.onRender=this.scheduleRender,this.rootNode.onImmediateRender=this.onRender,this.rootNode.onComputeLayout=()=>{if(this.isUnmounted)return;if(this.rootNode.yogaNode){let _=performance.now();this.rootNode.yogaNode.setWidth(this.terminalColumns),this.rootNode.yogaNode.calculateLayout(this.terminalColumns);let z=performance.now()-_;tsq(z);let Y=A08();this.lastYogaCounters={ms:z,...Y}}},this.container=WF.createContainer(this.rootNode,RN1,null,!1,null,"id",Gi,Gi,Gi,Gi)}handleResume=()=>{if(!this.options.stdout.isTTY)return;if(this.altScreenActive){this.reenterAltScreen();return}this.frontFrame=F16(this.frontFrame.viewport.height,this.frontFrame.viewport.width,this.stylePool,this.charPool,this.hyperlinkPool),this.backFrame=F16(this.backFrame.viewport.height,this.backFrame.viewport.width,this.stylePool,this.charPool,this.hyperlinkPool),this.log.reset(),this.displayCursor=null};handleResize=()=>{let q=this.options.stdout.columns||80,K=this.options.stdout.rows||24;if(q===this.terminalColumns&&K===this.terminalRows)return;if(this.terminalColumns=q,this.terminalRows=K,this.altScreenParkPatch=i84(this.terminalRows),this.altScreenActive&&!this.isPaused&&this.options.stdout.isTTY){if(this.altScreenMouseTracking)this.options.stdout.write(HA6);this.resetFramesForAltScreen(),this.needsEraseBeforePaint=!0}if(this.currentNode!==null)this.render(this.currentNode)};resolveExitPromise=()=>{};rejectExitPromise=()=>{};unsubscribeExit=()=>{};enterAlternateScreen(){this.pause(),this.suspendStdin(),this.options.stdout.write(yi+e$6+(this.altScreenMouseTracking?ui:"")+(this.altScreenActive?"":"\x1B[?1049h")+"\x1B[?1004l\x1B[0m\x1B[?25h\x1B[2J\x1B[H")}exitAlternateScreen(){if(this.options.stdout.write((this.altScreenActive?El6:"")+"\x1B[2J\x1B[H"+(this.altScreenMouseTracking?HA6:"")+(this.altScreenActive?"":"\x1B[?1049l")+"\x1B[?25l"),this.resumeStdin(),this.altScreenActive)this.resetFramesForAltScreen();else this.repaint();this.resume(),this.options.stdout.write("\x1B[?1004h"+(Ll6()?yi+nc6+ic6:""))}onRender(){if(this.isUnmounted||this.isPaused)return;if(this.drainTimer!==null)clearTimeout(this.drainTimer),this.drainTimer=null;an8();let q=performance.now(),K=this.options.stdout.columns||80,_=this.options.stdout.rows||24,z=this.renderer({frontFrame:this.frontFrame,backFrame:this.backFrame,isTTY:this.options.stdout.isTTY,terminalWidth:K,terminalRows:_,altScreen:this.altScreenActive,prevFrameContaminated:this.prevFrameContaminated}),Y=performance.now()-q,$=m84();if($&&this.selection.anchor&&this.selection.anchor.row>=$.viewportTop&&this.selection.anchor.row<=$.viewportBottom){let{delta:I,viewportTop:B,viewportBottom:p}=$;if(this.selection.isDragging){if(iS(this.selection))r08(this.selection,this.frontFrame.screen,B,B+I-1,"above");i08(this.selection,-I,B,p)}else if(!this.selection.focus||this.selection.focus.row>=B&&this.selection.focus.row<=p){if(iS(this.selection))r08(this.selection,this.frontFrame.screen,B,B+I-1,"above");if(ktq(this.selection,-I,B,p))for(let g of this.selectionListeners)g()}}let A=!1,O=!1;if(this.altScreenActive){if(A=iS(this.selection),A)ytq(z.screen,this.selection,this.stylePool);if(O=Q84(z.screen,this.searchHighlightQuery,this.stylePool),this.searchPositions){let I=this.searchPositions,B=g84(z.screen,this.stylePool,I.positions,I.rowOffset,I.currentIdx);O=O||B}}if(C84()||A||O||this.prevFrameContaminated)z.screen.damage={x:0,y:0,width:z.screen.width,height:z.screen.height};let w=this.frontFrame;if(this.altScreenActive)w={...this.frontFrame,cursor:PZ_};let j=performance.now(),H=this.log.render(w,z,this.altScreenActive,LE1),J=performance.now()-j;if(this.backFrame=this.frontFrame,this.frontFrame=z,q-this.lastPoolResetTime>300000)this.resetPools(),this.lastPoolResetTime=q;let M=[];for(let I of H)if(I.type==="clearTerminal"){if(M.push({desiredHeight:z.screen.height,availableHeight:z.viewport.height,reason:I.reason}),oy1()&&I.debug){let B=Fsq(this.rootNode,I.debug.triggerY);N(`[REPAINT] full reset · ${I.reason} · row ${I.debug.triggerY} |