@bud.sh/app 0.5.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +41 -31
- package/dist/client/assets/bud/design.js +1 -1
- package/dist/client/assets/canvas-Bih9EdKJ.js +1 -0
- package/dist/client/assets/difference-worker-Bzg-rizy.js +8 -0
- package/dist/client/assets/dist-CdE5wBkg.js +5 -0
- package/dist/client/assets/files-1dLuoM2f.js +1 -0
- package/dist/client/assets/i18n-CkO6VFI0.js +1 -0
- package/dist/client/assets/index-Cn2mxroU.css +2 -0
- package/dist/client/assets/{index-ChANGtl-.js → index-DtISWZp9.js} +2 -2
- package/dist/client/assets/pages-BJ-tNJ4J.js +1 -0
- package/dist/client/assets/{project-branches-DO897zM6.js → project-branches-Ce3rXrkc.js} +1 -1
- package/dist/client/assets/project-comments-CPUONfs8.js +1 -0
- package/dist/client/assets/project-thread-links-C-TGkq59.js +1 -0
- package/dist/client/assets/{project-threads-Lay351p4.js → project-threads-Bv7IDBgi.js} +105 -105
- package/dist/client/assets/project-work-DAE9-olg.js +1 -0
- package/dist/client/assets/{task-design-Avb2RO4w.js → task-design-CwySIAOl.js} +3 -3
- package/dist/client/assets/tasks-KWsCLi_h.js +3 -0
- package/dist/client/assets/wasm-inline-DSUyFn1L.js +1 -0
- package/dist/client/assets/workspace-CVdcfaaB.js +2 -0
- package/dist/client/index.html +3 -3
- package/dist/hosted/assets/{canvas-V36732ER.js → canvas-AII16n9i.js} +97 -6
- package/dist/hosted/assets/{comment-data-CF2ZV_3k.js → comment-data-BXfMElfx.js} +2004 -402
- package/dist/hosted/assets/dist-BCSTeNf4.js +4785 -0
- package/dist/hosted/assets/{files-DjSCjfU7.js → files-D_1yeAVO.js} +10 -5
- package/dist/hosted/assets/{pages-BzjzeuPu.js → pages-CN_SbKWA.js} +3 -3
- package/dist/hosted/assets/{project-branches-BT97J9i7.js → project-branches-Bxp0DCwg.js} +1 -1
- package/dist/hosted/assets/{project-thread-links-BRLgByEe.js → project-thread-links-KqQoKBLE.js} +76 -4
- package/dist/{node-host/assets/screen-CZXWJEds.js → hosted/assets/screen-DpAcDUKR.js} +29 -1
- package/dist/hosted/assets/tasks-D66LlwxM.js +1423 -0
- package/dist/hosted/assets/wasm-inline-Dl9tqabx.js +4 -0
- package/dist/hosted/hosted.js +7885 -6219
- package/dist/node/assets/Stream-CAm1eJ2n.js +16604 -0
- package/dist/{server/assets/bridge-B_Blt55E.js → node/assets/bridge-DQSBYHmw.js} +124 -290
- package/dist/node/assets/config-9_jWwNBh.js +1067 -0
- package/dist/node/assets/load-config.server-CMVtRVmO.js +261 -0
- package/dist/node/assets/module-3GgtT4Xs.js +308 -0
- package/dist/node/assets/server-DTQFuoX2.js +846 -0
- package/dist/node/assets/src-D-kG1GxB.js +2 -0
- package/dist/node/assets/{src-CerrKjID.js → src-Dwe9APUx.js} +93 -3
- package/dist/node/assets/src-DysjfbM8.js +8592 -0
- package/dist/node/bridge.js +1 -845
- package/dist/node/cli.js +206 -0
- package/dist/node/design.js +811 -13
- package/dist/node/index.js +2 -739
- package/dist/node/plugins.js +5711 -0
- package/dist/node/server.js +1 -6746
- package/dist/node/vite.js +121 -0
- package/dist/{server/assets/canvas-Dc1mYCwQ.js → node-host/assets/canvas-BeDoufy1.js} +97 -7
- package/dist/node-host/assets/{comment-data-DyIZNpfG.js → comment-data-DE2T9yTj.js} +1980 -376
- package/dist/node-host/assets/dist-BCSTeNf4.js +4785 -0
- package/dist/node-host/assets/{files-Dh2TiQZq.js → files-Dl-PTS09.js} +11 -6
- package/dist/node-host/assets/{pages-BxpjbYhs.js → pages-DL2sk6_U.js} +3 -3
- package/dist/node-host/assets/{project-branches-B7HUGiVK.js → project-branches-DGp5ELct.js} +1 -1
- package/dist/{server/assets/project-thread-links-CBOpf6zk.js → node-host/assets/project-thread-links-CgBV3Jcm.js} +76 -5
- package/dist/{hosted/assets/screen-CKp2C7kx.js → node-host/assets/screen-B55yyVfb.js} +29 -1
- package/dist/node-host/assets/tasks-DZRNkoxe.js +1425 -0
- package/dist/node-host/assets/wasm-inline-Dl9tqabx.js +4 -0
- package/dist/node-host/node-host.js +6127 -4438
- package/dist/server/assets/{branch-previews-ClkoJ0lM.js → branch-previews-DedrpnVR.js} +1555 -673
- package/dist/{node-host/assets/canvas-TRUfxfL5.js → server/assets/canvas-CJWQ-jjv.js} +98 -6
- package/dist/server/assets/{comment-data-CsjukwAW.js → comment-data-Rg42ToTW.js} +1666 -47
- package/dist/server/assets/dist-BCSTeNf4.js +4785 -0
- package/dist/server/assets/{events-iHpLGr3k.js → events-BH_rAu7O.js} +155 -20
- package/dist/server/assets/{files-E9mSFeoc.js → files-CPJqKeMo.js} +12 -7
- package/dist/server/assets/{listener-DN5TyOjJ.js → listener-D61O6PzF.js} +708 -12
- package/dist/server/assets/{pages-BBBXyJWV.js → pages-KJY_Ba92.js} +4 -4
- package/dist/server/assets/{project-branches-B0YIK6Ur.js → project-branches-qG9ACZvo.js} +2 -2
- package/dist/{node-host/assets/project-thread-links-CauJF0Cz.js → server/assets/project-thread-links-CqK0lqCF.js} +77 -4
- package/dist/{node-host/assets/tasks-request-ZWmbc8fE.js → server/assets/project-work-DoIwxWMm.js} +87 -2
- package/dist/server/assets/run-BJ8r5jSh.js +572 -0
- package/dist/server/assets/{screen-BIQA2mr4.js → screen-CBrHPFug.js} +30 -2
- package/dist/server/assets/{server-DxK-UB_Z.js → server-Dkbp5stG.js} +1521 -793
- package/dist/server/assets/{services-BRrgXYlT.js → services-BTfig8A8.js} +234 -997
- package/dist/server/assets/tasks-Bgu5Lg9Y.js +1427 -0
- package/dist/server/assets/wasm-inline-Dl9tqabx.js +4 -0
- package/dist/server/capture.js +1 -2
- package/dist/server/migration.js +569 -12
- package/dist/server/runtime.js +7 -5
- package/dist/server/server.js +3 -3
- package/dist/types/assets/{config-DIC2cf_S.d.ts → config-CvcYmE2s.d.ts} +188 -50
- package/dist/types/assets/{contract-CAT-XFNq.d.ts → contract-B7yuuqSn.d.ts} +44 -2
- package/dist/types/assets/{items-CaVkByHk.d.ts → items-BQdaVksf.d.ts} +12 -1
- package/dist/types/assets/memory-state-BBW-FAVA.d.ts +236 -0
- package/dist/types/assets/picker-Be5Gx4WR.d.ts +9 -0
- package/dist/types/assets/{task-design-xJOhRNWh.d.ts → task-design-BDHKFHpp.d.ts} +3 -1
- package/dist/types/bridge.d.ts +1 -1
- package/dist/types/companion.d.ts +3 -3
- package/dist/types/design.d.ts +2 -2
- package/dist/types/hosted.d.ts +3 -3
- package/dist/types/index.d.ts +2 -2
- package/dist/types/node-host.d.ts +2 -2
- package/dist/types/plugins.d.ts +445 -0
- package/dist/types/screen.d.ts +2 -2
- package/dist/types/server.d.ts +2 -228
- package/dist/types/vite.d.ts +16 -0
- package/package.json +19 -3
- package/dist/client/assets/canvas-Cu6R6xxT.js +0 -1
- package/dist/client/assets/difference-worker-jfTSn-Tw.js +0 -8
- package/dist/client/assets/files-js6ElfkU.js +0 -1
- package/dist/client/assets/i18n-DxqFr2mi.js +0 -1
- package/dist/client/assets/index-CFFxP0gS.css +0 -2
- package/dist/client/assets/pages-6_lhiQmz.js +0 -1
- package/dist/client/assets/project-comments-DFFKVpia.js +0 -1
- package/dist/client/assets/project-thread-links-NLFWQRD2.js +0 -1
- package/dist/client/assets/project-work-du0Y-L5Y.js +0 -1
- package/dist/client/assets/tasks-CA-E8bbK.js +0 -1
- package/dist/client/assets/tasks-request-C55IeuiP.js +0 -1
- package/dist/client/assets/workspace-Cw5HvX5d.js +0 -2
- package/dist/hosted/assets/tasks-Dj7AyBJB.js +0 -649
- package/dist/hosted/assets/tasks-request-DZob623r.js +0 -113
- package/dist/node-host/assets/tasks-Bs1IOpeU.js +0 -651
- package/dist/server/assets/project-work-qSKFO5yj.js +0 -88
- package/dist/server/assets/tasks-CiXodsLN.js +0 -652
- package/dist/server/assets/tasks-request-DhwCzpRi.js +0 -115
- package/dist/types/assets/picker-D1Bw3ndx.d.ts +0 -14
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import{t as e}from"./preload-helper-BLdHbfdN.js";var t,n=new Map,r=4;function i(e){let t=atob(e),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e);return n.buffer}async function a(e){let t=await fetch(e);if(!t.ok)throw Error(`[wterm] Failed to load WASM from ${e}: ${t.status} ${t.statusText}`);if(typeof WebAssembly.compileStreaming==`function`&&t.headers.get(`Content-Type`)?.trim().toLowerCase()===`application/wasm`)try{return await WebAssembly.compileStreaming(t.clone())}catch{}return WebAssembly.compile(await t.arrayBuffer())}function o(o){if(!o)return t??=e(async()=>{let{WASM_BASE64:e}=await import(`./wasm-inline-DSUyFn1L.js`);return{WASM_BASE64:e}},[]).then(({WASM_BASE64:e})=>WebAssembly.compile(i(e))).catch(e=>{throw t=void 0,e}),t;typeof document<`u`?o=new URL(o,document.baseURI).href:typeof location<`u`&&(o=new URL(o,location.href).href);let s=o,c=n.get(s);if(c)return n.delete(s),n.set(s,c),c;let l=a(s).catch(e=>{throw n.get(s)===l&&n.delete(s),e});return n.set(s,l),n.size>r&&n.delete(n.keys().next().value),l}var s=class e{get dv(){return this._dvBuffer!==this.memory.buffer&&(this._dvBuffer=this.memory.buffer,this._dv=new DataView(this.memory.buffer)),this._dv}constructor(e){this.gridPtr=0,this.dirtyPtr=0,this.writeBufferPtr=0,this.cellSize=12,this.gridStride=0,this.encoder=new TextEncoder,this.decoder=new TextDecoder,this._dvBuffer=null,this.linkCache=new Map,this.exports=e.exports,this.memory=this.exports.memory}static async load(t){let n=await o(t),r=await WebAssembly.instantiate(n);return new e(r)}init(e,t){this.exports.init(e,t),this.linkCache.clear(),this._updatePointers()}_updatePointers(){this.gridPtr=this.exports.getGridPtr(),this.dirtyPtr=this.exports.getDirtyPtr(),this.writeBufferPtr=this.exports.getWriteBuffer(),this.cellSize=this.exports.getCellSize(),this.gridStride=this.exports.getGridStride()}writeString(e,t){let n=this.encoder.encode(e);this.writeRaw(n,t)}writeRaw(e,t){let n=0;for(;n<e.length;){let r=Math.min(e.length-n,8192);new Uint8Array(this.memory.buffer,this.writeBufferPtr,8192).set(e.subarray(n,n+r)),this.exports.writeBytes(r),this._updatePointers(),n+=r,t?.()}}getCell(e,t){let n=this.gridPtr+(e*this.gridStride+t)*this.cellSize,r=this.dv,i={char:r.getUint32(n,!0),fg:r.getUint16(n+4,!0),bg:r.getUint16(n+6,!0),flags:r.getUint8(n+8),width:r.getUint8(n+9)};return Object.assign(i,this._readLink(r.getUint16(n+10,!0))),i}isDirtyRow(e){return new Uint8Array(this.memory.buffer,this.dirtyPtr,this.getRows())[e]!==0}clearDirty(){this.exports.clearDirty()}getCursor(){let e=this.exports.getCursorShape?.()??0;return{row:this.exports.getCursorRow(),col:this.exports.getCursorCol(),visible:this.exports.getCursorVisible()!==0,shape:e===1?`underline`:e===2?`bar`:`block`,blinking:(this.exports.getCursorBlinking?.()??0)!==0}}getCols(){return this.exports.getCols()}getRows(){return this.exports.getRows()}cursorKeysApp(){return this.exports.getCursorKeysApp()!==0}bracketedPaste(){return this.exports.getBracketedPaste()!==0}usingAltScreen(){return this.exports.getUsingAltScreen()!==0}mouseTracking(){let e=this.exports.getMouseTracking();return e===1e3||e===1002||e===1003?e:0}mouseSgr(){return this.exports.getMouseSgr()!==0}mouseEncoding(){switch(this.exports.getMouseEncoding?.()){case 0:return`x10`;case 1:return`utf8`;case 2:return`sgr`;case 3:return`urxvt`;case 4:return`sgr-pixels`;case void 0:return this.mouseSgr()?`sgr`:`x10`;default:return null}}focusEvents(){return this.exports.getFocusEvents()!==0}synchronizedOutput(){return this.exports.getSynchronizedOutput()!==0}synchronizedOutputGeneration(){return this.exports.getSynchronizedOutputGeneration()}kittyKeyboardFlags(){return this.exports.getKittyKeyboardFlags?.()??0}getTitle(){if(this.exports.getTitleChanged()===0)return null;let e=this.exports.getTitlePtr(),t=this.exports.getTitleLen(),n=new Uint8Array(this.memory.buffer,e,t);return this.decoder.decode(n)}getBellCount(){return this.exports.getBellCount?.()??0}getResponse(){let e=this.exports.getResponseLen();if(e===0)return null;let t=this.exports.getResponsePtr(),n=new Uint8Array(this.memory.buffer,t,e),r=this.decoder.decode(n);return this.exports.clearResponse(),r}getResourceState(){let e=this.exports.getHyperlinkCapacity?.(),t=this.exports.getHyperlinkCount?.(),n=this.exports.getHyperlinkRejectedCount?.();return e===void 0||t===void 0||n===void 0?{}:{hyperlinks:{capacity:e,used:t,rejected:n,saturated:t>=e}}}getScrollbackCount(){return this.exports.getScrollbackCount()}getScrollbackDiscardedCount(){return this.exports.getScrollbackDiscardedCount()}getScrollbackCell(e,t){let n=this.exports.getScrollbackLine(e)+t*this.cellSize,r=this.dv,i={char:r.getUint32(n,!0),fg:r.getUint16(n+4,!0),bg:r.getUint16(n+6,!0),flags:r.getUint8(n+8),width:r.getUint8(n+9)};return Object.assign(i,this._readLink(r.getUint16(n+10,!0))),i}getScrollbackLineLen(e){return this.exports.getScrollbackLineLen(e)}getUnhandledSequences(){let e=this.exports.getDebugLogCount();if(e===0)return[];let t=this.exports.getDebugLogPtr(),n=this.exports.getDebugLogEntrySize(),r=this.exports.getDebugLogMax(),i=Math.min(e,r),a=new DataView(this.memory.buffer),o=[],s=e>=r?e%r:0;for(let e=0;e<i;e++){let i=t+(s+e)%r*n,c=a.getUint8(i);if(c===0)continue;let l=a.getUint8(i+1),u=a.getUint8(i+2),d=[];for(let e=0;e<Math.min(u,4);e++)d.push(a.getUint16(i+4+e*2,!0));o.push({final:String.fromCharCode(c),private:l?String.fromCharCode(l):``,paramCount:u,params:d})}return o}resize(e,t){this.exports.resizeTerminal(e,t),this._updatePointers()}_readLink(e){if(e===0)return;let t=this.linkCache.get(e);if(t)return t;let n=this.exports.getLinkUriLen(e);if(n===0)return;let r=this.decoder.decode(new Uint8Array(this.memory.buffer,this.exports.getLinkUriPtr(e),n)),i=this.exports.getLinkIdLen(e),a=i===0?void 0:this.decoder.decode(new Uint8Array(this.memory.buffer,this.exports.getLinkIdPtr(e),i)),o={linkUri:r,linkId:a,linkKey:a?`e\0${a}\0${r}`:`b\0${e}`};return this.linkCache.set(e,o),o}},c=33554432,l=32768;function u(e){return e!==void 0&&Number.isFinite(e)&&e>0}function d(e){return Number.isSafeInteger(e)&&e>=0}function f(...e){let t=1;for(let n of e)if(!d(n)||(t*=n,!Number.isSafeInteger(t)))return null;return t}function p(e){return`${e.placementKey}:${e.imageId}:${e.imageVersion}`}var m=class{constructor(e,t={}){this.layer=null,this.flowSpacer=null,this.canvases=new Map,this.canvasAllocations=new Map,this.canvasBytes=0,this.cache=new Map,this.generation=-1,this.flowRows=new Map,this.container=e,this.maxImageWidth=u(t.maxImageWidth)?t.maxImageWidth:void 0,this.maxImageHeight=u(t.maxImageHeight)?t.maxImageHeight:void 0}setup(){this.destroy();let e=document.createElement(`div`);e.className=`term-image-flow-spacer`,e.setAttribute(`aria-hidden`,`true`),this.container.appendChild(e),this.flowSpacer=e;let t=document.createElement(`div`);t.className=`term-images`,t.setAttribute(`aria-hidden`,`true`),t.setAttribute(`role`,`presentation`),this.container.appendChild(t),this.layer=t,this.generation=-1}reconcile(e,t){let n=e.getGraphicsState,r=e.getGraphicsImage;if(!n||!r||!this.layer){this.clearCanvases(),this.clearFlowReservations();return}let i;try{i=n.call(e)}catch{this.clearCanvases(),this.clearFlowReservations();return}if(!i||!Number.isSafeInteger(i.generation)||!Array.isArray(i.images)||!Array.isArray(i.placements)){this.clearCanvases(),this.clearFlowReservations();return}let a=new Map;for(let e of i.images)Number.isSafeInteger(e.imageId)&&e.imageId>0&&Number.isSafeInteger(e.version)&&e.version>0&&Number.isSafeInteger(e.width)&&Number.isSafeInteger(e.height)&&e.width>0&&e.height>0&&a.set(`${e.imageId}:${e.version}`,e);let o=this.visiblePixelArea(e,t),s=o?this.reconcileFlowReservations(e,i,t,a,o):new Map;o||this.clearFlowReservations();let c=o?this.visiblePlacements(e,i,t,a,o,s):[],l=new Set,u=new Map;for(let e of c){let t=p(e),n=`${e.imageId}:${e.imageVersion}`;a.has(n)&&(l.add(t),u.set(n,(u.get(n)??0)+1))}let d=i.generation!==this.generation;this.generation=i.generation;for(let[e,t]of this.canvases)l.has(e)||this.removeCanvas(e);for(let[e,t]of this.cache)u.has(e)?t.refs=u.get(e):this.cache.delete(e);for(let n of c){let i=p(n),c=`${n.imageId}:${n.imageVersion}`;if(!l.has(i))continue;let f=a.get(c);if(!f)continue;let m=this.cache.get(c);if(!m){let t;try{t=r.call(e,n.imageId,n.imageVersion)}catch{t=null}if(!t||!this.validImage(t,f.width,f.height))continue;m={data:t,refs:u.get(c)??0},this.cache.set(c,m)}let h=this.canvases.get(i),g=h??this.createCanvas(i);if(g){if(d||!h){let e=!1;try{e=this.paint(g,i,m.data,n,t,o,s.get(n.row)??0)}catch{e=!1}e||this.removeCanvas(i)}else this.position(g,n,t,s.get(n.row)??0)}}}destroy(){this.clearCanvases(),this.layer?.remove(),this.flowSpacer?.remove(),this.layer=null,this.flowSpacer=null,this.cache.clear(),this.generation=-1,this.clearFlowReservations()}createCanvas(e){if(!this.layer)return null;let t=document.createElement(`canvas`);return t.className=`term-image`,t.setAttribute(`aria-hidden`,`true`),t.tabIndex=-1,t.draggable=!1,this.layer.appendChild(t),this.canvases.set(e,t),t}clearCanvases(){for(let e of this.canvases.keys())this.removeCanvas(e);this.canvasAllocations.clear(),this.canvasBytes=0,this.cache.clear()}removeCanvas(e){this.canvases.get(e)?.remove(),this.canvases.delete(e);let t=this.canvasAllocations.get(e)??0;this.canvasAllocations.delete(e),this.canvasBytes=Math.max(0,this.canvasBytes-t)}reconcileFlowReservations(e,t,n,r,i){let a,o;try{o=e.getRows(),a=n.scrollbackCount+o}catch{return this.flowRows.size>0&&this.clearFlowReservations(),new Map}if(!Number.isSafeInteger(o)||o<0||!Number.isSafeInteger(a)||a<0)return this.flowRows.size>0&&this.clearFlowReservations(),new Map;let s=new Map;for(let e of t.placements){if(!this.validPlacement(e,a)||e.rows!==0||e.row<n.scrollbackCount)continue;let t=r.get(`${e.imageId}:${e.imageVersion}`);if(!t)continue;let o=this.destinationSize(e,e.sourceWidth||t.width,e.sourceHeight||t.height,n,i);if(!o)continue;let c=e.offsetY+o.height;u(c)&&s.set(e.row,Math.max(s.get(e.row)??0,c))}if(s.size===0)return this.flowRows.size>0&&this.clearFlowReservations(),new Map;this.clearFlowReservations();let c=this.container.querySelectorAll(`.term-row:not(.term-scrollback-row)`);for(let e of c)e.style.transform=``;let l=new Map,d=0,f=n.scrollbackCount;for(let e=0;e<o;e++){let t=f+e;d>0&&l.set(t,d);let n=s.get(t)??0,r=c[e],i=d+n;r&&i>0&&(r.style.transform=`translateY(${i}px)`),d+=n}return this.flowSpacer&&(this.flowSpacer.style.height=`${d}px`),this.container.parentElement?.classList.toggle(`has-image-flow`,d>0),this.flowRows=s,l}clearFlowReservations(){if(this.flowRows.size===0){this.flowSpacer?.style.setProperty(`height`,`0px`),this.container.parentElement?.classList.remove(`has-image-flow`);return}let e=this.container.querySelectorAll(`.term-row:not(.term-scrollback-row)`);for(let t of e)t.style.transform=``;this.flowSpacer&&(this.flowSpacer.style.height=`0px`),this.container.parentElement?.classList.remove(`has-image-flow`),this.flowRows.clear()}validImage(e,t,n){let r=f(e.width,e.height,4);return Number.isSafeInteger(e.width)&&Number.isSafeInteger(e.height)&&e.width>0&&e.height>0&&e.width===t&&e.height===n&&e.rgba instanceof Uint8Array&&r!==null&&e.rgba.byteLength===r}visiblePlacements(e,t,n,r,i,a){if(!u(n.rowHeight)||!u(n.charWidth)||!Number.isFinite(n.scrollTop))return[];let o;try{o=n.scrollbackCount+e.getRows()}catch{return[]}if(!Number.isSafeInteger(o)||o<0)return[];let s=n.scrollTop-n.overscanRows*n.rowHeight,c=n.scrollTop+Math.max(n.clientHeight,n.rowHeight)+n.overscanRows*n.rowHeight;return t.placements.filter(e=>{if(!this.validPlacement(e,o))return!1;let t=r.get(`${e.imageId}:${e.imageVersion}`);if(!t)return!1;let l=this.destinationSize(e,e.sourceWidth||t.width,e.sourceHeight||t.height,n,i);if(!l)return!1;let u=e.row*n.rowHeight+e.offsetY+(a.get(e.row)??0),d=u+l.height;return Number.isFinite(u)&&Number.isFinite(d)&&u<c&&d>s})}validPlacement(e,t){return typeof e.placementKey==`string`&&e.placementKey.length>0&&d(e.imageId)&&e.imageId>0&&d(e.imageVersion)&&e.imageVersion>0&&d(e.row)&&e.row<t&&d(e.col)&&d(e.offsetX)&&d(e.offsetY)&&d(e.sourceX)&&d(e.sourceY)&&d(e.sourceWidth)&&d(e.sourceHeight)&&d(e.columns)&&d(e.rows)&&Number.isSafeInteger(e.z)&&Number.isSafeInteger(e.row+(e.rows||1))}position(e,t,n,r=0){let i=t.rows===0?t.offsetX:t.col*n.charWidth+t.offsetX,a=t.row*n.rowHeight+t.offsetY+r;Number.isFinite(i)&&(e.style.left=`${i}px`),Number.isFinite(a)&&(e.style.top=`${a}px`)}paint(e,t,n,r,i,a,o=0){if(!this.validPlacement(r,2**53-1))return!1;let s=r.sourceX,c=r.sourceY,u=r.sourceWidth||n.width,d=r.sourceHeight||n.height;if(!Number.isSafeInteger(s)||!Number.isSafeInteger(c)||!Number.isSafeInteger(u)||!Number.isSafeInteger(d)||s<0||c<0||u<=0||d<=0||s+u>n.width||c+d>n.height)return!1;let p=this.destinationSize(r,u,d,i,a);if(!p)return!1;let{width:m,height:h}=p,g=Math.max(1,Math.ceil(m)),_=Math.max(1,Math.ceil(h));if(!Number.isSafeInteger(g)||!Number.isSafeInteger(_)||g>l||_>l)return!1;let v=f(g,_,4);if(v===null||!this.resizeCanvas(e,t,g,_,v))return!1;this.position(e,r,i,o),e.style.width=`${m}px`,e.style.height=`${h}px`,e.style.zIndex=String(r.z),e.style.pointerEvents=`none`;let y=e.getContext(`2d`);if(!y)return!1;let b=document.createElement(`canvas`);b.width=n.width,b.height=n.height;let x=b.getContext(`2d`);if(!x)return!1;let S=new Uint8ClampedArray(n.rgba),C=typeof ImageData<`u`?new ImageData(S,n.width,n.height):x.createImageData?.(n.width,n.height)??{data:S,width:n.width,height:n.height};return`data`in C&&C.data!==S&&C.data.set(S),x.putImageData(C,0,0),y.clearRect(0,0,g,_),y.drawImage(b,s,c,u,d,0,0,g,_),!0}destinationSize(e,t,n,r,i){if(!d(t)||!d(n)||t<=0||n<=0)return null;let a=e.columns*r.charWidth,o=e.rows*r.rowHeight,s=u(a)&&e.columns>0?a:u(o)&&e.rows>0?t/n*o:t,c=u(o)&&e.rows>0?o:u(a)&&e.columns>0?n/t*a:n;if(!u(s)||!u(c)||!Number.isFinite(e.offsetY+c)||!i)return null;let l=Math.min(1,i.width/s,i.height/c,this.maxImageWidth===void 0?1:this.maxImageWidth/s,this.maxImageHeight===void 0?1:this.maxImageHeight/c);return u(l)?{width:s*l,height:c*l}:null}visiblePixelArea(e,t){let n,r;try{n=e.getCols(),r=e.getRows()}catch{return null}if(!d(n)||!d(r)||n<=0||r<=0||!u(t.charWidth)||!u(t.rowHeight))return null;let i=n*t.charWidth,a=r*t.rowHeight;return!u(i)||!u(a)||!Number.isSafeInteger(Math.ceil(i))||!Number.isSafeInteger(Math.ceil(a))?null:{width:Math.min(i,l),height:Math.min(a,l)}}resizeCanvas(e,t,n,r,i){let a=this.canvasAllocations.get(t)??0;if(i>c-this.canvasBytes+a)return!1;try{e.width=n,e.height=r}catch{return!1}return this.canvasBytes=this.canvasBytes-a+i,this.canvasAllocations.set(t,i),!0}};function h(e,t,n){let r=[],i=t;for(let a of e.specialCells)if(!(a.end<=t)){if(a.start>=n)break;i<a.start&&r.push(e.text.slice(i,a.start)),a.omit||r.push(e.text.slice(a.start,a.end)),i=a.end}return i<n&&r.push(e.text.slice(i,n)),r.join(``)}function g(e,t){return _(e,t)?.text??null}function _(e,t){let n=e.ownerDocument.getSelection();if(!n||n.isCollapsed||n.rangeCount!==1)return null;let r=n.getRangeAt(0);if(!e.contains(r.startContainer)||!e.contains(r.endContainer))return null;let i=e.ownerDocument.activeElement;if(i&&(i.tagName===`INPUT`||i.tagName===`TEXTAREA`)){let e=i;if(e.selectionStart!==e.selectionEnd)return null}let a=[],o,s,c;for(let n of t){let{element:t,content:i}=n;if(!r.intersectsNode(t))continue;let l=e.ownerDocument.createRange();l.selectNodeContents(t),t.contains(r.startContainer)&&l.setStart(r.startContainer,r.startOffset),t.contains(r.endContainer)&&l.setEnd(r.endContainer,r.endOffset);let u=e.ownerDocument.createRange();u.selectNodeContents(t),u.setEnd(l.startContainer,l.startOffset);let d=u.toString().length,f=d+l.toString().length;if(t.textContent!==i.text)return null;if(o??={row:n,offset:d},s={row:n,offset:f===i.text.length&&!i.metadata?.wrapsToNext?Math.max(d,i.text.replace(/ +$/,``).length):f},c){if(n.row!==c.row+1)return null;c.content.metadata?.wrapsToNext&&i.metadata?.continuesPrevious||a.push(`
|
|
2
|
+
`)}let p=d===f?``:h(i,d,f);f===i.text.length&&!i.metadata?.wrapsToNext&&(p=p.replace(/ +$/,``)),a.push(p),c=n}return o&&s?{text:a.join(``),first:o,last:s,backward:n.anchorNode!==r.startContainer||n.anchorOffset!==r.startOffset}:null}function v(e,t,n){let r=0;for(let i of e.specialCells){if(t>=i.start&&t<i.end&&!n||t>i.start&&t<=i.end&&n)return{col:i.col,after:n};i.end<=t&&(r+=i.width-(i.end-i.start))}let i=t>0&&(n||t===e.text.length);return{col:t+r-+!!i,after:i}}function y(e,t,n){let r=0;for(let i of e.specialCells){if(t>=i.col&&t<i.col+i.width)return n?i.end:i.start;i.col<t&&(r+=i.end-i.start-i.width)}return t+r+ +!!n}function b(e,t){let n=e.ownerDocument.createTreeWalker(e,4),r;for(;r=n.nextNode();){let e=r.textContent?.length??0;if(t<=e)return[r,t];t-=e}return null}var x=1e3,S=1048576,C=new Set(` '"│\`|:;,()[]{}<>$`);function w(e,t,n){let r=e.getScrollbackCount(),i=r+e.getRows(),a=e.getCols(),o={char:0,fg:256,bg:256,flags:0};if(!Number.isInteger(t.row)||!Number.isInteger(t.col)||t.row<0||t.row>=i||t.col<0||t.col>=a)return null;let s=t=>t.row<r?t.col<e.getScrollbackLineLen(r-t.row-1)?e.getScrollbackCell(r-t.row-1,t.col):o:e.getCell(t.row-r,t.col),c=t=>t<r?e.getScrollbackLineLen(r-t-1)<=a?e.getScrollbackRowMetadata?.(r-t-1):null:e.getRowMetadata?.(t-r),l=e=>e>=0&&e+1<i&&c(e)?.wrapsToNext&&c(e+1)?.continuesPrevious,u=(e,t)=>{let n=e.col+t;if(n>=0&&n<a)return{row:e.row,col:n};let r=e.row+t;return l(Math.min(r,e.row))?{row:r,col:t===1?0:a-1}:null},d={...t};if(s(d).spacerHead)return null;s(d).width===0&&d.col>0&&d.col--;let f=e=>{let t=s(e);return t.chars??String.fromCodePoint(t.char||32)},p=e=>C.has(String.fromCodePoint(e.codePointAt(0)??32)),m=p(f(d)),h=f(d).length,g=1,_=h>S,v=d,y=d,b=e=>{let t=d,r=d;for(;;){let i=u(t,e);if(!i)return r;if(++g>2097152)return _=!0,r;let a=s(i);if(a.width!==0&&!a.spacerHead){let e=a.chars??String.fromCodePoint(a.char||32);if(n===`word`&&p(e)!==m)return r;h+=e.length,r=i}let o=e===-1?i.row:v.row;if((e===1?i.row:d.row)-o>=1e3||h>1048576)return _=!0,r;t=i}};return v=b(-1),_||(y=b(1)),_?null:{start:v,end:y}}var T=65536;function E(e,t,n){let r=e.getScrollbackCount(),i=r+e.getRows(),a=e.getCols();for(let e of[t,n])if(!Number.isInteger(e.row)||!Number.isInteger(e.col)||e.row<0||e.row>=i||e.col<0||e.col>=a)return null;let o=Math.min(t.row,n.row),s=Math.max(t.row,n.row),c=Math.min(t.col,n.col),l=Math.max(t.col,n.col),u=s-o+1;if(u>1e3||u*(l-c+2)>T)return null;let d=[],f=[],p=u-1;for(let t=o;t<=s;t++){let n=r-t-1,i=t<r?e.getScrollbackLineLen(n):a,o=a=>a>=i?null:t<r?e.getScrollbackCell(n,a):e.getCell(t-r,a),s=c;s>0&&o(s)?.width===0&&o(s-1)?.width===2&&s--;let u=l+1,m=``;for(let e=s;e<=l;e++){let t=o(e);if(t?.width===0||t?.spacerHead)continue;let n=t?.chars??String.fromCodePoint(t?.char||32);if(p+=n.length,p>1048576)return null;m+=n,u=Math.max(u,Math.min(a,e+(t?.width??1)))}d.push({row:t,left:s,right:u}),f.push(m)}return{rows:d,text:f.join(`
|
|
3
|
+
`)}}var D=x,ee=class{constructor(e){this.terminal=e,this.current=null,this.painted=!0}matches(){let e=this.terminal.ownerDocument.getSelection(),t=this.current?.native;return!!e&&!!t&&e.anchorNode===t.anchorNode&&e.anchorOffset===t.anchorOffset&&e.focusNode===t.focusNode&&e.focusOffset===t.focusOffset}capture(e,t){let n=this.terminal.ownerDocument.activeElement;if(n&&(n.tagName===`INPUT`||n.tagName===`TEXTAREA`)){let e=n;if(e.selectionStart!==e.selectionEnd){this.dispose();return}}if(this.current&&this.matches()||(this.dispose(),!this.painted||!e.trackPosition))return;let r=_(this.terminal,t);if(!r||!r.text.length||r.last.row.row-r.first.row.row>=D||r.text.length>1048576)return;let i=v(r.first.row.content,r.first.offset,!1),a=v(r.last.row.content,r.last.offset,!0),o=e.trackPosition({row:r.first.row.row,col:i.col});if(!o)return;let s=e.trackPosition({row:r.last.row.row,col:a.col});if(!s){o.dispose();return}let c=this.terminal.ownerDocument.getSelection();this.current={start:{pin:o,after:i.after},end:{pin:s,after:a.after},text:r.text,backward:r.backward,native:this.snapshot(c)}}beforeMutation(e,t){this.capture(e,t),this.painted=!1}beforeRender(e,t){this.capture(e,t);let n=this.current?.start.pin.resolve(),r=this.current?.end.pin.resolve();return!n||!r||r.row<n.row||r.row===n.row&&r.col<n.col||r.row-n.row>=D?(this.clear(),null):{start:n,end:r}}afterRender(e,t){this.painted=!0;let n=this.current;if(!n||!t)return;let r=Array.from(e),i=(e,t)=>{let n=r.find(t=>t.row===e.row);return n&&b(n.element,y(n.content,e.col,t))},a=i(t.start,n.start.after),o=i(t.end,n.end.after),s=this.terminal.ownerDocument.getSelection();if(!a||!o||!s){this.clear();return}let c=n.backward?o:a,l=n.backward?a:o;(s.anchorNode!==c[0]||s.anchorOffset!==c[1]||s.focusNode!==l[0]||s.focusOffset!==l[1])&&s.setBaseAndExtent(...c,...l),n.native=this.snapshot(s),_(this.terminal,r)?.text!==n.text&&this.clear()}snapshot(e){return{anchorNode:e.anchorNode,anchorOffset:e.anchorOffset,focusNode:e.focusNode,focusOffset:e.focusOffset}}clear(){this.current&&this.matches()&&this.terminal.ownerDocument.getSelection()?.removeAllRanges(),this.dispose()}dispose(){this.current?.start.pin.dispose(),this.current?.end.pin.dispose(),this.current=null}},te=256,ne=`var(--term-app-fg, var(--term-fg))`,O=`var(--term-app-bg, var(--term-bg))`,re=1,ie=2,ae=4,oe=8,se=32,ce=64,le=128,ue=10;function k(e){return`rgb(${e>>16&255},${e>>8&255},${e&255})`}function de(e){if(e===te)return null;if(e<16)return`var(--term-color-${e})`;if(e<232){let t=e-16;return`rgb(${Math.floor(t/36)*51},${Math.floor(t/6)%6*51},${t%6*51})`}let t=(e-232)*10+8;return`rgb(${t},${t},${t})`}function fe(e,t){return t===void 0?de(e):k(t)}function pe(e,t){return t===void 0?de(e):k(t)}function A({fg:e,bg:t,flags:n,fgRgb:r,bgRgb:i,underlineStyle:a,underlineRgb:o}){let s=fe(e,r),c=pe(t,i);n&se&&([s,c]=[c??O,s??ne]);let l=``;s&&(l+=`color:${s};`),c&&(l+=`background:${c};`),n&re&&(l+=`font-weight:bold;`),n&ie&&(l+=`opacity:0.5;`),n&ae&&(l+=`font-style:italic;`);let u=[],d=a??(n&oe?`single`:`none`);return d!==`none`&&u.push(`underline`),n&le&&u.push(`line-through`),u.length&&(l+=`text-decoration:${u.join(` `)};`),d!==`none`&&(l+=`text-decoration-style:${d===`curly`?`wavy`:d===`double`||d===`dotted`||d===`dashed`?d:`solid`};text-decoration-skip-ink:none;`,o!==void 0&&(l+=`text-decoration-color:${k(o)};`)),n&ce&&(l+=`visibility:hidden;`),l}function j(e){return e.replace(/(^|;)color:/g,`$1--term-cell-fg:`).replace(/(^|;)background:/g,`$1--term-cell-bg:`)}function M(e){return e===1?``:`--term-span-cols:${e};`}function N(e){return e.replace(/&/g,`&`).replace(/</g,`<`).replace(/>/g,`>`).replace(/"/g,`"`)}function P(e,t,n){let r=N(n),i=!t.includes(`text-decoration:underline line-through;`);i||(t=t.replace(`text-decoration:underline line-through;`,`text-decoration:underline;`),r=`<span style="text-decoration:line-through solid currentColor;">${r}</span>`);let a=`<span${e?` class="${e}"`:``}${t?` style="${t}"`:``}>`;return{html:`${a}${r}</span>`,opening:i?a:void 0,text:i?n:void 0}}function me(e){if(e)try{let t=new URL(e);return t.protocol===`http:`||t.protocol===`https:`?t.href:void 0}catch{return}}function he(e){return e.linkUri?e.linkKey??`fallback\0${e.linkId??``}\0${e.linkUri}`:``}function F(e,t,n,r,i){let a=fe(e,r)||ne,o=pe(t,i)||O;return n&se?{fg:o,bg:a}:{fg:a,bg:o}}var I=`round(calc(var(--term-row-height) * 0.125), 1px)`,L=`round(calc(var(--term-row-height) * 0.25), 1px)`,R=`round(calc(var(--term-row-height) * 0.375), 1px)`,z=`round(calc(var(--term-row-height) * 0.5), 1px)`,B=`round(calc(var(--term-row-height) * 0.625), 1px)`,V=`round(calc(var(--term-row-height) * 0.75), 1px)`,H=`round(calc(var(--term-row-height) * 0.875), 1px)`;function ge(e,t,n){switch(e){case 9600:return`linear-gradient(${t} ${z},${n} ${z})`;case 9601:return`linear-gradient(${n} ${H},${t} ${H})`;case 9602:return`linear-gradient(${n} ${V},${t} ${V})`;case 9603:return`linear-gradient(${n} ${B},${t} ${B})`;case 9604:return`linear-gradient(${n} ${z},${t} ${z})`;case 9605:return`linear-gradient(${n} ${R},${t} ${R})`;case 9606:return`linear-gradient(${n} ${L},${t} ${L})`;case 9607:return`linear-gradient(${n} ${I},${t} ${I})`;case 9608:return t;case 9609:return`linear-gradient(to right,${t} 87.5%,${n} 87.5%)`;case 9610:return`linear-gradient(to right,${t} 75%,${n} 75%)`;case 9611:return`linear-gradient(to right,${t} 62.5%,${n} 62.5%)`;case 9612:return`linear-gradient(to right,${t} 50%,${n} 50%)`;case 9613:return`linear-gradient(to right,${t} 37.5%,${n} 37.5%)`;case 9614:return`linear-gradient(to right,${t} 25%,${n} 25%)`;case 9615:return`linear-gradient(to right,${t} 12.5%,${n} 12.5%)`;case 9616:return`linear-gradient(to right,${n} 50%,${t} 50%)`;case 9617:return`color-mix(in srgb,${t} 25%,${n})`;case 9618:return`color-mix(in srgb,${t} 50%,${n})`;case 9619:return`color-mix(in srgb,${t} 75%,${n})`;case 9620:return`linear-gradient(${t} ${I},${n} ${I})`;case 9621:return`linear-gradient(to right,${n} 87.5%,${t} 87.5%)`;default:{let r={9622:[!1,!1,!0,!1],9623:[!1,!1,!1,!0],9624:[!0,!1,!1,!1],9625:[!0,!1,!0,!0],9626:[!0,!1,!1,!0],9627:[!0,!0,!0,!1],9628:[!0,!0,!1,!0],9629:[!1,!0,!1,!1],9630:[!1,!0,!0,!1],9631:[!1,!0,!0,!0]}[e];if(!r)return t;let[i,a,o,s]=r;if(i&&a&&o&&s)return t;let c=[],l=[`0 0`,`100% 0`,`0 100%`,`100% 100%`];return r.forEach((e,n)=>{e&&c.push(`linear-gradient(${t},${t}) ${l[n]}/50% 50% no-repeat`)}),c.push(n),c.join(`,`)}}}var _e={9472:`lr`,9474:`ud`,9484:`dr`,9488:`dl`,9492:`ur`,9496:`ul`,9500:`udr`,9508:`udl`,9516:`dlr`,9524:`ulr`,9532:`udlr`,9588:`l`,9589:`u`,9590:`r`,9591:`d`},ve={9473:`lr`,9475:`ud`,9487:`dr`,9491:`dl`,9495:`ur`,9499:`ul`,9507:`udr`,9515:`udl`,9523:`dlr`,9531:`ulr`,9547:`udlr`,9592:`l`,9593:`u`,9594:`r`,9595:`d`},ye={9581:`tl`,9582:`tr`,9583:`br`,9584:`bl`},U={};function W(e,t){let n=`var(--term-box-stroke)`,r=`calc(50% + ${n})`,i=`calc(50% + ${n})`;for(let[a,o]of Object.entries(e)){let e=[];o.includes(`u`)&&o.includes(`d`)?e.push([`center center`,`${n} 100%`]):(o.includes(`u`)&&e.push([`center top`,`${n} ${r}`]),o.includes(`d`)&&e.push([`center bottom`,`${n} ${r}`])),o.includes(`l`)&&o.includes(`r`)?e.push([`center center`,`100% ${n}`]):(o.includes(`l`)&&e.push([`left center`,`${i} ${n}`]),o.includes(`r`)&&e.push([`right center`,`${i} ${n}`])),U[Number(a)]={className:t,style:`background-image:${e.map(()=>`linear-gradient(currentColor,currentColor)`).join(`,`)};background-position:${e.map(([e])=>e).join(`,`)};background-size:${e.map(([,e])=>e).join(`,`)};background-repeat:no-repeat;`}}}W(_e,`term-box`),W(ve,`term-box term-box-heavy`);for(let[e,t]of Object.entries(ye))U[Number(e)]={className:`term-box term-box-round term-box-round-${t}`,style:``};var be=class{get hasImageFlow(){return this.container.parentElement?.classList.contains(`has-image-flow`)??!1}constructor(e,t={}){this.rows=0,this.cols=0,this.rowEls=[],this.prevCursorRow=-1,this.prevCursorCol=-1,this.prevCursorVisible=!1,this.prevRowBg=[],this._scrollbackRowEls=[],this._scrollbackKeys=[],this._scrollbackRowHeight=0,this._scrollbackGapSpacers=[],this._renderedScrollbackCount=-1,this._renderedDiscardedCount=-1,this._scrollbackTopSpacer=null,this._scrollbackBottomSpacer=null,this.rowText=new WeakMap,this.rowParts=new WeakMap,this.rowBackground=new WeakMap,this.selection=null,this.needsSetup=!1,this.colorsChanged=!1,this.painted=!1,this.container=e,this.colorHost=t.colorHost??e,this.graphics=new m(e,t),this.searchLayer=document.createElement(`div`),this.searchLayer.className=`term-search-layer`,this.searchLayer.setAttribute(`aria-hidden`,`true`)}setup(e,t){this.cols=e,this.rows=t,this.container.innerHTML=``,this.rowText=new WeakMap,this.rowParts=new WeakMap,this.rowBackground=new WeakMap,this.rowEls=[],this.prevRowBg=[],this._scrollbackRowEls=[],this._scrollbackKeys=[],this._scrollbackGapSpacers=[],this._renderedScrollbackCount=-1,this._renderedDiscardedCount=-1;let n=document.createDocumentFragment();this._scrollbackTopSpacer=document.createElement(`div`),this._scrollbackTopSpacer.className=`term-scrollback-spacer`,n.appendChild(this._scrollbackTopSpacer),this._scrollbackBottomSpacer=document.createElement(`div`),this._scrollbackBottomSpacer.className=`term-scrollback-spacer`,n.appendChild(this._scrollbackBottomSpacer);for(let e=0;e<t;e++){let e=document.createElement(`div`);e.className=`term-row`,n.appendChild(e),this.rowEls.push(e)}this.container.appendChild(n),this.searchLayer.replaceChildren(),this.container.appendChild(this.searchLayer),this.graphics.setup(),this.prevCursorRow=-1,this.prevCursorCol=-1}_buildRowContent(e,t,n,r,i){let a=[],o=``,s={text:``,specialCells:[],metadata:null},c=(e,t,n=1,r=!1)=>{let i=s.text.length;s.text+=e,(e.length!==n||n>1||r)&&s.specialCells.push({start:i,end:s.text.length,col:t,width:n,omit:r})},l=``,u=``,d=[],f=0,p=``,m,h=``,g,_=n>=this.cols,v=(e,t,n)=>{let r=me(n),i=r?t:``;i!==h&&(h&&a.push({html:o+`</a>`}),i&&(o=`<a class="term-link" href="${N(r)}" target="_blank" rel="noopener noreferrer">`),h=i),h?o+=e.html:a.push(e)},y=e=>{if(!u)return;let t=(e,t,n)=>v(P(e,t,n),p,m);if(r>=f&&r<e){let e=r-f,n=d.slice(0,e).join(``),i=d[e]||` `,a=d.slice(e+1).join(``);n&&t(``,M(e)+l,n),t(`term-cursor`,j(l),i),a&&t(``,M(d.length-e-1)+l,a)}else t(``,M(d.length)+l,u);u=``,d=[]},b=(e,t,n,r,i)=>{v(P(e,t,n),r,i)};for(let e=0;e<this.cols;e++){let i=t(e),a=e<n,o=a?i.char:0,s=a?i.width??1:1,h=a?he(i):``,v=a?i.linkUri:void 0,x=a&&s===0&&e>0&&(t(e-1).width??1)===2;if(_&&!x){let e=F(i.fg,i.bg,i.flags,i.fgRgb,i.bgRgb).bg;i.flags&66||g!==void 0&&g!==e?_=!1:g=e}if(a&&s===0){if(y(e),!x){c(` `,e);let t=A(i),n=e===r;b(n?`term-cursor`:``,n?j(t):t,` `,h,v)}l=``,p=``,m=void 0,u=``,d=[],f=e+1}else if(a&&s===2){if(y(e),e+1>=this.cols){c(` `,e);let t=A(i),n=e===r;b(n?`term-cursor`:``,n?j(t):t,` `,h,v),l=``,p=``,m=void 0,u=``,d=[],f=e+1;continue}let t=i.chars??(o>=32?String.fromCodePoint(o):` `);c(t,e,2);let n=A(i),a=r>=e&&r<e+2;b(a?`term-wide term-cursor`:`term-wide`,a?j(n):n,t,h,v),l=``,p=``,m=void 0,u=``,d=[],f=e+2}else if(a&&o>=9600&&o<=9631){y(e);let t=i.chars??String.fromCodePoint(o);c(t,e);let n=F(i.fg,i.bg,i.flags,i.fgRgb,i.bgRgb),a=e===r?`term-block term-cursor`:`term-block`,s=ge(o,n.fg,n.bg),g=A(i)+`color:${n.fg};background:${s};`;b(a,e===r?j(g):g,t,h,v),l=``,p=``,m=void 0,u=``,d=[],f=e+1}else{let t=i.chars??(a&&o>=32?String.fromCodePoint(o):` `);c(t,e,1,i.spacerHead===!0);let n=a?A(i):``;if(t.length!==1||t.charCodeAt(0)>126){y(e);let a=e===r,s=U[o],c=s&&t===String.fromCodePoint(o)?s:null,u=c?.className??``;c&&i.flags&re&&(u+=` term-box-bold`),a&&(u+=u?` term-cursor`:`term-cursor`),b(u,(a?j(n):n)+(c?.style??``),t,h,v),l=``,p=``,m=void 0,f=e+1;continue}n!==l||h!==p?(y(e),l=n,p=h,m=v,u=t,d=[t],f=e):(u+=t,d.push(t))}}y(this.cols),h&&a.push({html:o+`</a>`}),this.updateRowParts(e,a),this.rowText.set(e,s);let x=_&&g!==O?g??``:``;i>=0?x!==(this.prevRowBg[i]??``)&&(e.style.background=x,this.prevRowBg[i]=x):this.rowBackground.get(e)!==x&&(e.style.background=x,this.rowBackground.set(e,x))}updateRowParts(e,t){let n=this.rowParts.get(e),r=0,i=n?.length??0,a=t.length;if(n){for(;r<i&&r<a&&n[r].html===t[r].html;)r++;for(;i>r&&a>r&&n[i-1].html===t[a-1].html;)i--,a--}if(r===i&&r===a)return;let o=n!==void 0&&i===a;for(let i=r;o&&i<a;i++){let r=e.childNodes[i];o=t[i].opening!==void 0&&t[i].opening===n[i].opening&&r?.childNodes.length===1&&r.firstChild?.nodeType===3}if(o){for(let i=r;i<a;i++)t[i].html!==n[i].html&&(e.childNodes[i].firstChild.nodeValue=t[i].text);this.rowParts.set(e,t)}else{if(r+t.length-a<Math.max(i-r,a-r))e.innerHTML=t.map(e=>e.html).join(``);else{let n=e.ownerDocument.createRange();n.setStart(e,r),n.setEnd(e,i),n.deleteContents();let o=t.slice(r,a).map(e=>e.html).join(``);o&&n.insertNode(n.createContextualFragment(o))}this.rowParts.set(e,t)}}_updateScrollbackRow(e,t,n){let r=e.getScrollbackLineLen(t);this._buildRowContent(n,n=>e.getScrollbackCell(t,n),r,-1,-1);let i=this.rowText.get(n),a=e.getScrollbackRowMetadata?.(t);i.metadata=a&&r<=this.cols?{...a}:null}syncScrollback(e,t){let n=e.getScrollbackCount(),r=t?.rowHeight??0,i=t!==void 0&&r>0,a=t?.overscanRows??ue,o=t?.scrollbackDiscardedCount!==void 0,s=t?.scrollbackDiscardedCount??0,c=t&&t.clientHeight>0?t.clientHeight:this.rows*r,l=i?Math.floor(t.scrollTop/r):0,u=i?Math.ceil(c/r):n,d=i?Math.max(0,Math.min(n,l-a)):0,f=i?Math.max(d,Math.min(n,l+u+a)):n,p=this.container.ownerDocument.getSelection(),m=p!==null&&!p.isCollapsed&&(this.container.contains(p.anchorNode)||this.container.contains(p.focusNode)),h=this.painted&&!this.colorsChanged&&o&&n===this._renderedScrollbackCount&&s===this._renderedDiscardedCount,g=(this._scrollbackKeys[0]??1/0)-s,_=(this._scrollbackKeys[this._scrollbackKeys.length-1]??-1/0)-s+1,v=Math.ceil(a/2);if(i&&h&&!m&&!t?.selectedRows&&r===this._scrollbackRowHeight&&this._scrollbackKeys.length===_-g&&this._scrollbackKeys.length<=u+2*a&&g<=Math.max(0,Math.min(n,l-v))&&_>=Math.min(n,l+u+v))return;let y=new Set;for(let e=d;e<f;e++)y.add(e);if(!t?.selectedRows&&m&&p.rangeCount===1){let e=p.getRangeAt(0),t=this._scrollbackRowEls.flatMap((t,n)=>e.intersectsNode(t)?[this._scrollbackKeys[n]-s]:[]);if(t.length<=D)for(let e of t)e>=0&&e<n&&y.add(e)}if(t?.selectedRows)for(let e=Math.max(0,t.selectedRows.start);e<=Math.min(n-1,t.selectedRows.end);e++)y.add(e);let b=Array.from(y).sort((e,t)=>e-t),x=b.map(e=>s+e);if(h&&r===this._scrollbackRowHeight&&x.length===this._scrollbackKeys.length&&x.every((e,t)=>e===this._scrollbackKeys[t]))return;let S=new Map;for(let e=0;e<this._scrollbackRowEls.length;e++)S.set(this._scrollbackKeys[e],this._scrollbackRowEls[e]);let C=new Set(x);for(let[e,t]of S)C.has(e)||t.remove();for(let e of this._scrollbackGapSpacers)e.remove();this._scrollbackGapSpacers=[];let w=[],T=this._scrollbackTopSpacer?.nextSibling??null,E=(b[0]??n)-1;for(let t of b){if(t>E+1){let e=document.createElement(`div`);e.className=`term-scrollback-spacer`,e.style.height=`${(t-E-1)*r}px`,this.container.insertBefore(e,T??this._scrollbackBottomSpacer),this._scrollbackGapSpacers.push(e)}E=t;let i=s+t,a=n-1-t,o=S.get(i);o?h||this._updateScrollbackRow(e,a,o):(o=document.createElement(`div`),o.className=`term-row term-scrollback-row`,this._updateScrollbackRow(e,a,o)),o!==T&&this.container.insertBefore(o,T??this._scrollbackBottomSpacer),T=o.nextSibling,w.push(o)}this._scrollbackRowEls=w,this._scrollbackKeys=x,this._renderedScrollbackCount=n,this._renderedDiscardedCount=s,this._scrollbackRowHeight=r,this._scrollbackTopSpacer&&(this._scrollbackTopSpacer.style.height=`${(b[0]??n)*r}px`),this._scrollbackBottomSpacer&&(this._scrollbackBottomSpacer.style.height=`${b.length?(n-b[b.length-1]-1)*r:0}px`)}syncColorOverrides(e={}){for(let[t,n]of[[`foreground`,`--term-app-fg`],[`background`,`--term-app-bg`],[`cursor`,`--term-app-cursor`]]){let r=e[t],i=r===void 0?``:k(r);this.colorHost.style.getPropertyValue(n)!==i&&(i?this.colorHost.style.setProperty(n,i):this.colorHost.style.removeProperty(n))}}render(e,t){this.syncColorOverrides(e.getColorOverrides?.()),this.viewport=t,this.selection??=new ee(this.container.parentElement??this.container);let n=this.selection.beforeRender(e,this.selectionRows()),r=e.getRows(),i=e.getCols(),a=!1;(this.needsSetup||r!==this.rows||i!==this.cols)&&(this.setup(i,r),this.needsSetup=!1,a=!0),this.syncScrollback(e,t&&{...t,selectedRows:n?{start:n.start.row,end:n.end.row}:void 0});let o=e.getCursor(),s=o.visible,c=o.shape??`block`,l=String(o.blinking??!1);this.container.dataset.cursorShape!==c&&(this.container.dataset.cursorShape=c),this.container.dataset.cursorBlink!==l&&(this.container.dataset.cursorBlink=l);let u=o.row!==this.prevCursorRow||o.col!==this.prevCursorCol||s!==this.prevCursorVisible;for(let t=0;t<this.rows;t++){let n=this.colorsChanged||a||e.isDirtyRow(t),r=t===this.prevCursorRow&&u,i=t===o.row;if(n||r||i&&u){let n=i&&s?o.col:-1;this._buildRowContent(this.rowEls[t],n=>e.getCell(t,n),this.cols,n,t)}let c=this.rowText.get(this.rowEls[t]);if(c){let n=e.getRowMetadata?.(t);c.metadata=n?{...n}:null}}this.prevCursorRow=o.row,this.prevCursorCol=o.col,this.prevCursorVisible=s,e.clearDirty(),this.colorsChanged=!1,this.selection.afterRender(this.selectionRows(),n),this.painted=!0,this.graphics.reconcile(e,{scrollTop:t?.scrollTop??0,clientHeight:t?.clientHeight??0,rowHeight:t?.rowHeight??0,charWidth:t?.charWidth??0,overscanRows:t?.overscanRows??ue,scrollbackCount:e.getScrollbackCount()})}*searchRows(){for(let e=0;e<this._scrollbackRowEls.length;e++)yield{row:this._scrollbackKeys[e]-Math.max(0,this._renderedDiscardedCount),element:this._scrollbackRowEls[e]};for(let e=0;e<this.rowEls.length;e++)yield{row:Math.max(0,this._renderedScrollbackCount)+e,element:this.rowEls[e]}}getSelectionText(){let e=this.container.parentElement;return e?g(e,this.selectionRows()):null}*selectionRows(){for(let e of this.searchRows()){let t=this.rowText.get(e.element);t&&(yield{...e,content:t})}}beforeMutation(e){this.selection?.beforeMutation(e,this.selectionRows()),this.painted=!1}positionAt(e,t,n){if(!this.painted||this.needsSetup||n<=0)return null;let r=e.closest(`.term-row`),i=Array.from(this.searchRows()).find(e=>e.element===r);if(!i)return null;let a=Math.floor((t-i.element.getBoundingClientRect().left)/n);return a>=0&&a<this.cols?{row:i.row,col:a}:null}select(e,t,n,r){if(!this.painted||this.needsSetup)return!1;let i=w(e,t,n);if(!i||(r(),!this.painted||this.needsSetup))return!1;this.syncScrollback(e,{...this.viewport??{scrollTop:0,clientHeight:0,rowHeight:0},selectedRows:{start:i.start.row,end:i.end.row}});let a=Array.from(this.selectionRows()),o=(e,t)=>{let n=a.find(t=>t.row===e.row);return n&&b(n.element,y(n.content,e.col,t))},s=o(i.start,!1),c=o(i.end,!0),l=this.container.ownerDocument.getSelection();return!s||!c||!l?!1:(l.setBaseAndExtent(...s,...c),this.selection?.capture(e,this.selectionRows()),!0)}rectangle(e,t,n,r){if(!this.painted||this.needsSetup)return null;let i=E(e,t,n);return i?(r(),this.painted&&!this.needsSetup?i:null):null}dragPositionAt(e,t,n){if(!this.painted||this.needsSetup||n<=0)return null;let r=null;for(let{row:i,element:a}of this.searchRows()){let o=a.getBoundingClientRect(),s=Math.max(o.top-t,t-o.bottom,0);(!r||s<r.distance)&&(r={row:i,distance:s,col:Math.max(0,Math.min(this.cols-1,Math.floor((e-o.left)/n)))})}return r&&{row:r.row,col:r.col}}requestSetup(){this.needsSetup=!0}invalidateColors(){this.colorsChanged=!0}setSearchDecorations(e){(e.firstChild||this.searchLayer.firstChild)&&this.searchLayer.replaceChildren(e)}destroy(){this.syncColorOverrides(),this.painted=!1,this.selection?.dispose(),this.graphics.destroy(),this.container.innerHTML=``,this.rowEls=[],this._scrollbackRowEls=[]}},xe=[`aria-label`,`aria-labelledby`,`aria-describedby`,`aria-description`],Se=`Press Escape, then Tab to move focus out of the terminal, or Shift+Tab to move focus backward.`,Ce=0,we=class{constructor(e,t){this.host=e,this.input=t,this.destroyed=!1,this.hint=e.ownerDocument.createElement(`span`);do this.hint.id=`wterm-input-help-${++Ce}`;while(e.getRootNode().querySelector(`#${this.hint.id}`));this.hint.hidden=!0,this.hint.textContent=Se,e.append(this.hint),this.tabIndex=e.getAttribute(`tabindex`),this.defaultRole=!e.hasAttribute(`role`),this.defaultRole&&e.setAttribute(`role`,`group`),this.observer=new MutationObserver(e=>this.sync(e)),this.sync()}sync(e=[]){e.some(e=>e.attributeName===`tabindex`)&&(this.tabIndex=this.host.getAttribute(`tabindex`));for(let e of xe){let t=this.host.getAttribute(e);t?.trim()?this.input.setAttribute(e,t):this.input.removeAttribute(e)}this.input.hasAttribute(`aria-label`)||this.input.setAttribute(`aria-label`,`Terminal`);let t=this.input.getAttribute(`aria-describedby`);t&&this.input.setAttribute(`aria-describedby`,`${t} ${this.hint.id}`),this.input.setAttribute(`aria-description`,[this.input.getAttribute(`aria-description`),Se].filter(Boolean).join(` `)),this.input.setAttribute(`tabindex`,this.tabIndex??`0`),this.observer.disconnect(),this.tabIndex!==null&&this.host.setAttribute(`tabindex`,`-1`),this.observer.observe(this.host,{attributes:!0,attributeFilter:[...xe,`tabindex`]})}destroy(){this.destroyed||(this.destroyed=!0,this.observer.takeRecords().some(e=>e.attributeName===`tabindex`)&&(this.tabIndex=this.host.getAttribute(`tabindex`)),this.observer.disconnect(),this.hint.remove(),this.tabIndex===null?this.host.removeAttribute(`tabindex`):this.host.setAttribute(`tabindex`,this.tabIndex),this.defaultRole&&this.host.getAttribute(`role`)===`group`&&this.host.removeAttribute(`role`))}};function G(e,t){return t.platform.startsWith(`Mac`)?e.metaKey:e.ctrlKey}var K={Escape:{code:27,final:`u`},Enter:{code:13,final:`u`},Tab:{code:9,final:`u`},Backspace:{code:127,final:`u`},Insert:{code:2,final:`~`},Delete:{code:3,final:`~`},ArrowLeft:{code:1,final:`D`},ArrowRight:{code:1,final:`C`},ArrowUp:{code:1,final:`A`},ArrowDown:{code:1,final:`B`},PageUp:{code:5,final:`~`},PageDown:{code:6,final:`~`},Home:{code:1,final:`H`},End:{code:1,final:`F`},CapsLock:{code:57358,final:`u`,modifier:!0},ScrollLock:{code:57359,final:`u`},NumLock:{code:57360,final:`u`,modifier:!0},PrintScreen:{code:57361,final:`u`},Pause:{code:57362,final:`u`},F1:{code:1,final:`P`},F2:{code:1,final:`Q`},F3:{code:13,final:`~`},F4:{code:1,final:`S`},F5:{code:15,final:`~`},F6:{code:17,final:`~`},F7:{code:18,final:`~`},F8:{code:19,final:`~`},F9:{code:20,final:`~`},F10:{code:21,final:`~`},F11:{code:23,final:`~`},F12:{code:24,final:`~`},ShiftLeft:{code:57441,final:`u`,modifier:!0},ControlLeft:{code:57442,final:`u`,modifier:!0},AltLeft:{code:57443,final:`u`,modifier:!0},MetaLeft:{code:57444,final:`u`,modifier:!0},ShiftRight:{code:57447,final:`u`,modifier:!0},ControlRight:{code:57448,final:`u`,modifier:!0},AltRight:{code:57449,final:`u`,modifier:!0},MetaRight:{code:57450,final:`u`,modifier:!0},Numpad0:{code:57399,final:`u`},Numpad1:{code:57400,final:`u`},Numpad2:{code:57401,final:`u`},Numpad3:{code:57402,final:`u`},Numpad4:{code:57403,final:`u`},Numpad5:{code:57404,final:`u`},Numpad6:{code:57405,final:`u`},Numpad7:{code:57406,final:`u`},Numpad8:{code:57407,final:`u`},Numpad9:{code:57408,final:`u`},NumpadDecimal:{code:57409,final:`u`},NumpadDivide:{code:57410,final:`u`},NumpadMultiply:{code:57411,final:`u`},NumpadSubtract:{code:57412,final:`u`},NumpadAdd:{code:57413,final:`u`},NumpadEnter:{code:57414,final:`u`},NumpadEqual:{code:57415,final:`u`},NumpadComma:{code:57416,final:`u`}},Te={code:1,final:`E`};for(let e=13;e<=25;e++)K[`F${e}`]={code:57363+e,final:`u`};function q(e){let t=Array.from(e);return t.length===1?t[0].codePointAt(0):null}function J(e){let t=q(e.key);return t===null||t<32||t===127?null:{code:q(e.key.toLowerCase())??t,final:`u`}}function Ee(e,t){if(t&&e.code.startsWith(`Numpad`)){if(e.code===`Numpad5`&&e.key===`Clear`)return{entry:Te,functionalKey:`Begin`};if(e.key.length===1){let t=J(e);return t?{entry:t,functionalKey:null}:null}let t=K[e.key];return t?{entry:t,functionalKey:e.key}:null}let n=De(e);if(n)return{entry:n,functionalKey:e.code};let r=K[e.code];if(r)return{entry:r,functionalKey:e.code};let i=K[e.key];if(i)return{entry:i,functionalKey:e.key};let a=J(e);return a?{entry:a,functionalKey:null}:null}function De(e){let t={"Numpad4:ArrowLeft":57417,"Numpad6:ArrowRight":57418,"Numpad8:ArrowUp":57419,"Numpad2:ArrowDown":57420,"Numpad9:PageUp":57421,"Numpad3:PageDown":57422,"Numpad7:Home":57423,"Numpad1:End":57424,"Numpad0:Insert":57425,"NumpadDecimal:Delete":57426,"Numpad5:Clear":57427}[`${e.code}:${e.key}`];return t===void 0?null:{code:t,final:`u`}}function Y(e,t){for(let n of t??[])if(n.startsWith(e))return!0;return!1}function Oe(e,t,n){let r=1,i=t!==`release`;return(e.shiftKey||Y(`Shift`,n)||i&&e.code.startsWith(`Shift`))&&(r+=1),(e.altKey||Y(`Alt`,n)||i&&e.code.startsWith(`Alt`))&&(r+=2),(e.ctrlKey||Y(`Control`,n)||i&&e.code.startsWith(`Control`))&&(r+=4),(e.metaKey||Y(`Meta`,n)||i&&e.code.startsWith(`Meta`))&&(r+=8),e.getModifierState(`CapsLock`)&&(r+=64),e.getModifierState(`NumLock`)&&(r+=128),r}function ke(e){return e.ctrlKey||e.metaKey||e.altKey?[]:Array.from(e.key).map(e=>e.codePointAt(0)).filter(e=>e>=32&&e!==127)}function Ae(e){if(e.length!==1)return null;let t=e.toLowerCase().charCodeAt(0);if(t>=97&&t<=122)return String.fromCharCode(t-96);switch(e){case` `:case`2`:case`@`:return`\0`;case`3`:case`[`:return`\x1B`;case`4`:case`\\`:return``;case`5`:case`]`:return``;case`6`:case`^`:case`~`:return``;case`7`:case`/`:case`_`:return``;case`8`:case`?`:return``;default:return null}}function je(e){if(e.metaKey)return null;let t=Array.from(e.key);if(t.length!==1||t[0].codePointAt(0)<32||t[0].codePointAt(0)>126||e.shiftKey&&e.ctrlKey&&/^[a-z]$/i.test(e.key))return null;if(e.ctrlKey){let t=e.key.toLowerCase(),n=Ae(t)??t;return e.altKey?`\x1b${n}`:n}return e.altKey?`\x1b${e.key}`:null}function Me(e,t,n,r,i){let a=!!(t&1),o=!!(t&2),s=!!(t&8),c=!a&&!o&&!s,l=r&-193;if(i&&c&&l===0){let t={ArrowUp:`\x1BOA`,ArrowDown:`\x1BOB`,ArrowRight:`\x1BOC`,ArrowLeft:`\x1BOD`,Begin:`\x1BOE`,End:`\x1BOF`,Home:`\x1BOH`}[e];if(t)return{handled:!0,sequence:t}}if(l===0){if(!a&&!s&&e===`Escape`)return{handled:!0,sequence:`\x1B`};if(c){let t={F1:`\x1BOP`,F2:`\x1BOQ`,F3:`\x1BOR`,F4:`\x1BOS`}[e];if(t)return{handled:!0,sequence:t}}}if(c&&r!==0){let t=r&2?`\x1B`:``;if(e===`Enter`)return{handled:!0,sequence:`${t}\r`};if(e===`Escape`)return{handled:!0,sequence:`${t}\x1b`};if(e===`Backspace`)return{handled:!0,sequence:`${t}${r&4?`\b`:``}`};if(e===`Tab`)return r&1?{handled:!0,sequence:`${r&2?`\x1B\x1B`:`\x1B`}[Z`}:{handled:!0,sequence:`${t}\t`}}return l===0&&!s&&(e===`Enter`||e===`Backspace`||e===`Tab`)?{handled:!0,sequence:n===`release`?null:e===`Enter`?`\r`:e===`Backspace`?``:` `}:{handled:!1,sequence:null}}function X(e,t,n,r,i=!1){if(t===0||n===`release`&&!(t&2))return null;let a=!(t&1)&&!(t&8),o=Ee(e,a),s=o?.entry??null,c=J(e),l=!(t&8)&&c!==null&&!e.altKey&&!e.ctrlKey&&!e.metaKey,u=!(t&1)&&!(t&8)&&(n===`press`||!(t&2))&&(e.ctrlKey||e.altKey)?je(e):null;if(n===`release`&&!(t&8)&&l)return null;if(n!==`release`&&!(t&8)&&!e.altKey&&!e.ctrlKey&&!e.metaKey){if(!e.shiftKey){if(e.key===`Enter`&&(e.code!==`NumpadEnter`||a))return`\r`;if(e.key===`Tab`)return` `;if(e.key===`Backspace`)return``}if(l)return e.key}if(u!==null)return u;if(!s||s.modifier&&!(t&8))return null;let d=Oe(e,n,r);if(o?.functionalKey){let e=Me(o.functionalKey,t,n,d-1,i);if(e.handled)return e.sequence}let f=t&2?n===`repeat`?2:n===`release`?3:0:0;if(s.final!==`u`&&s.final!==`~`)return f===0?d>1?`\x1b[1;${d}${s.final}`:`\x1b[${s.final}`:`\x1b[1;${d}:${f}${s.final}`;let p=`\x1b[${s.code}`;if(c&&t&4&&e.shiftKey){let t=q(e.key);t!==null&&t!==s.code&&(p+=`:${t}`)}let m=!1;if(f===2||f===3?(p+=`;${d}:${f}`,m=!0):d>1&&(p+=`;${d}`,m=!0),c&&t&16&&n!==`release`){let t=ke(e);t.length>0&&(p+=m?`;`:`;;`,p+=t.join(`:`))}return p+s.final}var Ne={ArrowUp:`\x1B[A`,ArrowDown:`\x1B[B`,ArrowRight:`\x1B[C`,ArrowLeft:`\x1B[D`,Home:`\x1B[H`,End:`\x1B[F`},Pe={ArrowUp:`\x1BOA`,ArrowDown:`\x1BOB`,ArrowRight:`\x1BOC`,ArrowLeft:`\x1BOD`,Home:`\x1BOH`,End:`\x1BOF`},Fe={ArrowUp:`A`,ArrowDown:`B`,ArrowRight:`C`,ArrowLeft:`D`,Home:`H`,End:`F`,F1:`P`,F2:`Q`,F3:`R`,F4:`S`},Ie={Insert:2,Delete:3,PageUp:5,PageDown:6,F5:15,F6:17,F7:18,F8:19,F9:20,F10:21,F11:23,F12:24},Le={Enter:`\r`,Backspace:``,Tab:` `,Escape:`\x1B`,Insert:`\x1B[2~`,Delete:`\x1B[3~`,PageUp:`\x1B[5~`,PageDown:`\x1B[6~`,F1:`\x1BOP`,F2:`\x1BOQ`,F3:`\x1BOR`,F4:`\x1BOS`,F5:`\x1B[15~`,F6:`\x1B[17~`,F7:`\x1B[18~`,F8:`\x1B[19~`,F9:`\x1B[20~`,F10:`\x1B[21~`,F11:`\x1B[23~`,F12:`\x1B[24~`},Re=250,ze=5,Z=``;function Be(e,t){if(e.metaKey||!(e.getModifierState(`AltGraph`)||e.ctrlKey&&e.altKey&&t.has(`AltRight`)))return!1;let n=Array.from(e.key);return n.length===1&&n[0].codePointAt(0)>=32&&n[0]!==``}var Ve=class{constructor(e,t,n,r=()=>null,i=()=>{},a,o){this.selectionActions=o,this.composing=!1,this.compositionWidth=0,this.recentCompositionCommit=null,this.suppressNextTouchDeleteInput=!1,this.mouseButtons=0,this.lastMouseMotion=null,this.focused=!1,this.suppressedKeyUps=new Set,this.pressedModifiers=new Set,this.deliveredKeys=new Set,this.tabExitArmed=!1,this.element=e,this.onData=t,this.onBinary=a,this.getBridge=n,this.getCellSize=r,this.prepareComposition=i,this.touchPrimary=e.ownerDocument.defaultView?.matchMedia?.(`(pointer: coarse)`).matches??!1,this.textarea=document.createElement(`textarea`),this.textarea.setAttribute(`autocapitalize`,`off`),this.textarea.setAttribute(`autocomplete`,`off`),this.textarea.setAttribute(`autocorrect`,`off`),this.textarea.setAttribute(`spellcheck`,`false`),this.textarea.setAttribute(`enterkeyhint`,`send`),this.textarea.wrap=`off`;let s=this.textarea.style;s.position=`absolute`,s.left=`-9999px`,s.top=`0`,s.width=this.touchPrimary?`var(--term-cell-width, 1ch)`:`1px`,s.height=this.touchPrimary?`var(--term-row-height)`:`1px`,s.boxSizing=`border-box`,s.font=`inherit`,s.lineHeight=`var(--term-row-height)`,s.fontKerning=`none`,s.fontVariantLigatures=`none`,s.whiteSpace=`pre`,s.zIndex=`2`,s.opacity=this.touchPrimary?`1`:`0`,s.overflow=`hidden`,s.border=`0`,s.padding=`0`,s.margin=`0`,s.outline=`none`,s.resize=`none`,s.pointerEvents=this.touchPrimary?`auto`:`none`,s.caretColor=`transparent`,s.color=`transparent`,s.background=`transparent`,e.appendChild(this.textarea),this.accessibility=new we(e,this.textarea),this._onKeyDown=this.handleKeyDown.bind(this),this._onKeyUp=this.handleKeyUp.bind(this),this._onPaste=this.handlePaste.bind(this),this._onCompositionStart=this.handleCompositionStart.bind(this),this._onCompositionEnd=this.handleCompositionEnd.bind(this),this._onInput=this.handleInput.bind(this),this._onFocus=()=>{this.focused||(this.focused=!0,this.touchPrimary&&!this.textarea.value&&this.resetInputValue(),this.positionTextarea(),this.element.classList.add(`focused`),this.getBridge()?.focusEvents?.()&&this.onData(`\x1B[I`))},this._onBlur=()=>{this.tabExitArmed=!1,this.focused=!1,this.composing=!1,this.recentCompositionCommit=null,this.suppressNextTouchDeleteInput=!1,this.hideComposition(),this.textarea.value=``,this.element.classList.remove(`focused`),this.stopMouseCapture(),this.lastMouseMotion=null,this.pressedModifiers.clear(),this.deliveredKeys.clear(),this.getBridge()?.focusEvents?.()&&this.onData(`\x1B[O`)},this._onMouseDown=e=>{this.tabExitArmed=!1,this.handleMouse(e,`press`)},this._onHoverMove=e=>{this.mouseButtons===0&&(e.buttons!==0||e.shiftKey?this.lastMouseMotion=null:this.handleMouse(e,`move`))},this._onMouseMove=e=>{this.mouseButtons!==0&&this.handleMouse(e,`move`)},this._onMouseUp=e=>{this.mouseButtons!==0&&(this.handleMouse(e,`release`),this.mouseButtons=e.buttons&7,this.mouseButtons===0&&this.stopMouseCapture())},this._onMouseLeave=()=>{this.mouseButtons===0&&(this.lastMouseMotion=null)},this._onWheel=e=>this.handleMouse(e,`wheel`),this.textarea.addEventListener(`keydown`,this._onKeyDown),this.textarea.addEventListener(`keyup`,this._onKeyUp),this.textarea.addEventListener(`paste`,this._onPaste),this.textarea.addEventListener(`compositionstart`,this._onCompositionStart),this.textarea.addEventListener(`compositionend`,this._onCompositionEnd),this.textarea.addEventListener(`input`,this._onInput),this.textarea.addEventListener(`focus`,this._onFocus),this.textarea.addEventListener(`blur`,this._onBlur),this.element.addEventListener(`mousedown`,this._onMouseDown),this.element.addEventListener(`mousemove`,this._onHoverMove),this.element.addEventListener(`mouseleave`,this._onMouseLeave),this.element.addEventListener(`wheel`,this._onWheel,{passive:!1})}focus(){this.touchPrimary&&this.prepareComposition(),this.touchPrimary&&!this.composing&&!this.textarea.value&&this.resetInputValue(),this.positionTextarea(),this.textarea.focus({preventScroll:!0})}syncInputPosition(){(this.composing||this.touchPrimary)&&this.positionTextarea()}destroy(){this.accessibility.destroy(),this.textarea.removeEventListener(`keydown`,this._onKeyDown),this.textarea.removeEventListener(`keyup`,this._onKeyUp),this.textarea.removeEventListener(`paste`,this._onPaste),this.textarea.removeEventListener(`compositionstart`,this._onCompositionStart),this.textarea.removeEventListener(`compositionend`,this._onCompositionEnd),this.textarea.removeEventListener(`input`,this._onInput),this.textarea.removeEventListener(`focus`,this._onFocus),this.textarea.removeEventListener(`blur`,this._onBlur),this.element.removeEventListener(`mousedown`,this._onMouseDown),this.element.removeEventListener(`mousemove`,this._onHoverMove),this.element.removeEventListener(`mouseleave`,this._onMouseLeave),this.stopMouseCapture(),this.element.removeEventListener(`wheel`,this._onWheel),this.element.classList.remove(`focused`),this.textarea.remove()}handleKeyDown(e){let t=e.code||e.key;e.key!==`Backspace`&&(this.suppressNextTouchDeleteInput=!1);let n=/^(Shift|Control|Alt|Meta)(Left|Right)$/.test(e.code);if(n&&this.pressedModifiers.add(e.code),this.composing||e.isComposing||e.keyCode===229){this.tabExitArmed=!1,this.positionTextarea(),this.suppressedKeyUps.add(t);return}this.recentCompositionCommit=null;let r=this.getBridge(),i=r?.kittyKeyboardFlags?.()??0,a=n&&!!(i&8),o=this.deliveredKeys.has(t);if(this.tabExitArmed&&e.key===`Tab`&&!e.altKey&&!e.ctrlKey&&!e.metaKey&&!e.repeat&&!o){this.tabExitArmed=!1,this.suppressedKeyUps.add(t);return}if((e.key!==`Shift`||e.altKey||e.ctrlKey||e.metaKey)&&(this.tabExitArmed=e.key===`Escape`&&!e.altKey&&!e.ctrlKey&&!e.metaKey&&!e.shiftKey),Be(e,this.pressedModifiers)){o||this.suppressedKeyUps.add(t);return}if(!o&&this.selectionActions&&!e.altKey&&(e.metaKey&&!e.ctrlKey&&!e.shiftKey||e.ctrlKey&&e.shiftKey&&!e.metaKey)&&e.key.toLowerCase()===`a`){e.preventDefault(),e.stopPropagation(),this.suppressedKeyUps.add(t),this.selectionActions.selectAll();return}if(!o&&e.key===`Escape`&&!e.ctrlKey&&!e.metaKey&&!e.altKey&&!e.shiftKey&&this.selectionActions?.hasSelection()){e.preventDefault(),e.stopPropagation(),this.suppressedKeyUps.add(t),this.selectionActions.clearSelection();return}if(!o&&(e.metaKey||e.ctrlKey)&&!e.altKey&&e.key.toLowerCase()===`c`){let n=window.getSelection();if(this.selectionActions?.hasSelection()||n&&n.toString().length>0){this.suppressedKeyUps.add(t),e.ctrlKey&&e.shiftKey&&!e.metaKey&&(e.preventDefault(),e.stopPropagation(),this.element.ownerDocument.execCommand(`copy`));return}}if(!o&&(e.metaKey||e.ctrlKey)&&e.key===`v`){this.suppressedKeyUps.add(t),this.textarea.focus();return}if(!o&&!a&&e.metaKey&&!e.ctrlKey){if(this.suppressedKeyUps.add(t),e.key===`Backspace`)e.preventDefault(),this.selectionActions?.clearSelection(),this.onData(``);else if(e.key===`a`){e.preventDefault();let t=window.getSelection();if(t){let e=document.createRange();e.selectNodeContents(this.element),t.removeAllRanges(),t.addRange(e)}}return}this.suppressedKeyUps.delete(t);let s=this.touchPrimary&&e.key===`Backspace`&&!e.altKey&&!e.ctrlKey&&!e.metaKey;if(i!==0){let a=X(e,i,e.repeat?`repeat`:`press`,this.pressedModifiers,r?.cursorKeysApp?.()??!1);a&&(n||this.selectionActions?.clearSelection(),s?this.suppressNextTouchDeleteInput=!0:e.preventDefault(),e.stopPropagation(),this.deliveredKeys.add(t),this.onData(a,n));return}let c=this.keyToSequence(e);c&&(this.selectionActions?.clearSelection(),s?this.suppressNextTouchDeleteInput=!0:e.preventDefault(),e.stopPropagation(),this.onData(c))}handleKeyUp(e){let t=e.code||e.key;this.pressedModifiers.delete(e.code);let n=this.deliveredKeys.delete(t);if(this.suppressedKeyUps.delete(t)||!n||this.composing)return;let r=this.getBridge(),i=r?.kittyKeyboardFlags?.()??0;if(!(i&2))return;let a=X(e,i,`release`,this.pressedModifiers,r?.cursorKeysApp?.()??!1);a&&(e.preventDefault(),this.onData(a,!0))}handlePaste(e){this.tabExitArmed=!1,this.recentCompositionCommit=null,this.suppressNextTouchDeleteInput=!1;let t=e.clipboardData?.getData(`text`);t&&(e.preventDefault(),this.sendPaste(t))}sendPaste(e){this.selectionActions?.clearSelection();let t=this.getBridge();if(t&&t.bracketedPaste()){let t=e.replace(/\x1b/g,``);this.onData(`\x1B[200~`+t+`\x1B[201~`)}else this.onData(e)}handleCompositionStart(){this.tabExitArmed=!1,this.prepareComposition(),this.composing=!0,this.recentCompositionCommit=null,this.suppressNextTouchDeleteInput=!1,this.touchPrimary&&this.textarea.value===Z&&(this.textarea.value=``),this.positionTextarea();let e=this.textarea.style;e.opacity=`1`,e.color=`var(--term-fg, currentColor)`,e.background=`var(--term-bg, transparent)`,e.caretColor=`var(--term-fg, currentColor)`}handleCompositionEnd(e){this.composing=!1,this.hideComposition(),this.resetInputValue(),e.data&&(this.recentCompositionCommit={text:e.data,at:performance.now()},this.onData(e.data))}hideComposition(){this.compositionWidth=0;let e=this.textarea.style;e.opacity=this.touchPrimary?`1`:`0`,e.width=this.touchPrimary?`var(--term-cell-width, 1ch)`:`1px`,e.height=this.touchPrimary?`var(--term-row-height)`:`1px`,e.color=`transparent`,e.background=`transparent`,e.caretColor=`transparent`}positionTextarea(){let e=this.getBridge(),t=this.getCellSize(),n=this.element.querySelector(`.term-row:not(.term-scrollback-row)`);if(!e||!t||!n||!e.getCursor){this.textarea.style.left=`0px`,this.textarea.style.top=`0px`,this.composing&&(this.textarea.style.width=`${Math.max(1,this.compositionWidth)}px`,this.textarea.style.height=`${t?.rowHeight??17}px`);return}let{charWidth:r,rowHeight:i}=t;if(r<=0||i<=0)return;let a=e.getCursor(),o=Math.max(0,Math.min(a.col,e.getCols()-1)),s=Math.max(0,Math.min(a.row,e.getRows()-1)),c=this.element.getBoundingClientRect(),l=n.getBoundingClientRect(),u=this.textarea.style;u.left=`${l.left-c.left-this.element.clientLeft+this.element.scrollLeft+o*r}px`,u.top=`${l.top-c.top-this.element.clientTop+this.element.scrollTop+s*i}px`,this.composing&&(u.width=`${Math.min((e.getCols()-o)*r,Math.max(r,this.compositionWidth))}px`,u.height=`${i}px`)}sizeComposition(){let e=this.getCellSize()?.charWidth;!e||e<=0||(this.textarea.style.width=`1px`,this.compositionWidth=this.textarea.value?Math.max(e,this.textarea.scrollWidth+e):e,this.positionTextarea())}resetInputValue(){this.textarea.value=this.touchPrimary?Z:``,this.touchPrimary&&this.textarea.setSelectionRange(1,1)}sendTouchDelete(){this.selectionActions?.clearSelection();let e=this.getBridge(),t=e?.kittyKeyboardFlags?.()??0,n=t?X(new KeyboardEvent(`keydown`,{key:`Backspace`,code:`Backspace`}),t,`press`,void 0,e?.cursorKeysApp?.()??!1):``;n&&this.onData(n)}handleInput(e){if(this.tabExitArmed=!1,this.composing){this.sizeComposition();return}let t=e.inputType,n=this.textarea.value,r=this.touchPrimary&&n.startsWith(Z)?n.slice(1):n;this.resetInputValue();let i=this.recentCompositionCommit;this.recentCompositionCommit=null,this.touchPrimary&&t===`deleteContentBackward`?this.suppressNextTouchDeleteInput?this.suppressNextTouchDeleteInput=!1:this.sendTouchDelete():(this.suppressNextTouchDeleteInput=!1,r&&(i&&r===i.text&&performance.now()-i.at<Re||(t===`insertFromPaste`?this.sendPaste(r):(this.selectionActions?.clearSelection(),this.onData(r)))))}handleMouse(e,t){let n=this.getBridge(),r=n?.mouseTracking?.()??0,i=n?.mouseEncoding?.()??(n?.mouseSgr?.()?`sgr`:null);if(!n||r===0||i!==`sgr`&&i!==`sgr-pixels`&&i!==`x10`&&i!==`utf8`&&i!==`urxvt`){this.lastMouseMotion=null;return}if(t===`wheel`){let t=e,n=this.element.scrollHeight-this.element.clientHeight;if(n>0&&(t.shiftKey||n-this.element.scrollTop>ze)){if(this.lastMouseMotion=null,t.shiftKey){let e=Math.abs(t.deltaX)>Math.abs(t.deltaY)?t.deltaX:t.deltaY,n=t.deltaMode===1?this.getCellSize()?.rowHeight??16:t.deltaMode===2?this.element.clientHeight:1;e!==0&&(this.element.scrollTop+=e*n,t.preventDefault())}return}}if(t===`press`&&G(e,this.element.ownerDocument.defaultView?.navigator??navigator)&&e.target instanceof Element&&e.target.closest(`.term-link`)||t===`press`&&(e.shiftKey||e.button>2)||t===`release`&&e.button>2)return;let a=e.buttons&7;if(t===`move`&&!(r===1003||r===1002&&a!==0)){this.lastMouseMotion=null;return}let o=this.element.ownerDocument.defaultView;if(!o)return;let s=this.element.querySelector(`.term-row:not(.term-scrollback-row)`),c=this.element.getBoundingClientRect(),l=s?.getBoundingClientRect(),u=this.getCellSize(),d,f,p,m;if(l&&u)d=l.left,f=l.top,p=u.charWidth,m=u.rowHeight;else{let e=o.getComputedStyle(this.element),t=parseFloat(e.borderLeftWidth)||0,r=parseFloat(e.borderRightWidth)||0,i=parseFloat(e.borderTopWidth)||0,a=parseFloat(e.borderBottomWidth)||0,s=parseFloat(e.paddingLeft)||0,u=parseFloat(e.paddingRight)||0,h=parseFloat(e.paddingTop)||0,g=parseFloat(e.paddingBottom)||0;d=l?.left??c.left+t+s,f=l?.top??c.top+i+h,p=(c.width-t-r-s-u)/n.getCols(),m=(c.height-i-a-h-g)/n.getRows()}let h=n.getCols(),g=n.getRows(),_=p*h,v=m*g;if(!Number.isFinite(_)||!Number.isFinite(v)||_<=0||v<=0)return;if((e.clientX<d||e.clientX>=d+_||e.clientY<f||e.clientY>=f+v)&&(t===`press`||t===`wheel`||t===`move`&&a===0)){this.lastMouseMotion=null;return}let y=i===`sgr-pixels`,b=Math.max(1,Math.min(y?Math.ceil(_):h,Math.floor((e.clientX-d)/(y?1:p))+1)),x=Math.max(1,Math.min(y?Math.ceil(v):g,Math.floor((e.clientY-f)/(y?1:m))+1)),S=(e.shiftKey?4:0)|(e.altKey?8:0)|(e.ctrlKey?16:0),C,w=`M`;if(t===`wheel`){let t=e;if(Math.abs(t.deltaX)>Math.abs(t.deltaY)){if(t.deltaX===0)return;C=(t.deltaX<0?66:67)|S}else{if(t.deltaY===0)return;C=(t.deltaY<0?64:65)|S}}else C=(t===`release`&&i!==`sgr`&&!y?3:t===`move`?a===0?3:a&4?1:a&2?2:0:e.button===1?1:e.button===2?2:0)|S|(t===`move`?32:0),t===`release`&&(w=`m`);let T=i===`x10`?Uint8Array.of(27,91,77,C+32,b+32,x+32):null;if(T&&(b>223||x>223||!this.onBinary&&(T[4]>127||T[5]>127)))this.lastMouseMotion=null;else if(i===`utf8`&&(b>2015||x>2015))this.lastMouseMotion=null;else{if(t===`move`){let e=this.lastMouseMotion;if(e?.mode===r&&e.encoding===i&&e.code===C&&e.x===b&&e.y===x)return;this.lastMouseMotion={mode:r,encoding:i,code:C,x:b,y:x}}else this.lastMouseMotion=null;t===`press`&&(this.textarea.focus({preventScroll:!0}),this.focused||this._onFocus(),this.mouseButtons=a||(e.button===1?4:e.button===2?2:1),o.addEventListener(`mousemove`,this._onMouseMove),o.addEventListener(`mouseup`,this._onMouseUp)),e.preventDefault(),T?this.onBinary?this.onBinary(T):this.onData(String.fromCharCode(...T)):i===`utf8`?this.onData(`\x1b[M${String.fromCodePoint(C+32,b+32,x+32)}`):i===`urxvt`?this.onData(`\x1b[${C+32};${b};${x}M`):this.onData(`\x1b[<${C};${b};${x}${w}`)}}stopMouseCapture(){this.mouseButtons=0;let e=this.element.ownerDocument.defaultView;e?.removeEventListener(`mousemove`,this._onMouseMove),e?.removeEventListener(`mouseup`,this._onMouseUp)}keyToSequence(e){if(e.ctrlKey&&!e.altKey&&!e.metaKey){let t=Ae(e.key);if(t!==null)return t;if(e.key===`Backspace`)return`\b`}if(e.key===`Enter`&&e.shiftKey)return`\x1B[13;2u`;if(e.key===`Tab`&&e.shiftKey)return`\x1B[Z`;if(!e.metaKey&&(e.shiftKey||e.altKey||e.ctrlKey)){let t=1+Number(e.shiftKey)+2*Number(e.altKey)+4*Number(e.ctrlKey),n=Fe[e.key];if(n)return`\x1b[1;${t}${n}`;let r=Ie[e.key];if(r)return`\x1b[${r};${t}~`}let t=Le[e.key];if(t)return e.altKey?`\x1B`+t:t;let n=this.getBridge(),r=(n&&n.cursorKeysApp()?Pe:Ne)[e.key];return r?e.altKey?`\x1B`+r:r:e.key.length===1&&!e.ctrlKey&&!e.metaKey?e.altKey?`\x1B`+e.key:e.key:null}},He=16777216;function*Ue(e,t=He){let n=e.getScrollbackCount(),r=[],i=``,a=0,o=0,s=!1,c=e=>{if(a+=e.length,a>t)throw RangeError(`Terminal text exceeds 16,777,216 UTF-16 code units`);i+=e,i.length>=8192&&(r.push(i),i=``)};for(let r=0;r<n+e.getRows();r++){let i=n-r-1,l=r<n?e.getScrollbackRowMetadata?.(i):e.getRowMetadata?.(r-n);r>0&&!(s&&l?.continuesPrevious)&&c(`
|
|
4
|
+
`),s=l?.wrapsToNext??!1;let u=r<n?e.getScrollbackLineLen(i):e.getCols(),d=0;for(let s=0;s<u;s++){++o>=256&&(o=0,yield);let l=r<n?e.getScrollbackCell(i,s):e.getCell(r-n,s);if(l.width===0||l.spacerHead)continue;let u=l.chars??String.fromCodePoint(l.char||32);if(/^ +$/.test(u))d+=u.length;else{if(a+d+u.length>t)throw RangeError(`Terminal text exceeds 16,777,216 UTF-16 code units`);c(` `.repeat(d)+u),d=0}}if(s){if(a+d>t)throw RangeError(`Terminal text exceeds 16,777,216 UTF-16 code units`);c(` `.repeat(d))}++o>=256&&(o=0,yield)}return r.push(i),r.join(``)}function We(e){return new DOMException(e,`AbortError`)}var Ge=class{constructor(){this.request=null,this.timer=null}read(e){return this.cancel(We(`Replaced by another text capture`)),e?.aborted?Promise.reject(e.reason):new Promise((t,n)=>{let r=()=>this.cancel(e?.reason);this.request={resolve:t,reject:n,signal:e,abort:r,scan:null},e?.addEventListener(`abort`,r,{once:!0})})}resume(e){let t=this.request;if(!t||t.scan)return;let n=t.scan=Ue(e),r=()=>{if(this.request!==t)return;this.timer=null;let e=performance.now()+4;try{for(let r=0;r<32;r++){let r=n.next();if(r.done){this.release(),t.resolve(r.value);return}if(performance.now()>=e)break}this.timer=setTimeout(r,0)}catch(e){this.cancel(e)}};this.timer=setTimeout(r,0)}cancel(e){let t=this.request;t&&(this.release(),t.reject(e===void 0?We(`Terminal changed during text capture`):e))}release(){this.timer!==null&&clearTimeout(this.timer),this.timer=null,this.request?.signal?.removeEventListener(`abort`,this.request.abort),this.request?.scan?.return(``),this.request=null}},Q=new WeakMap,Ke=class{constructor(e){this.element=e,this.text=null,this.scan=null,this.timer=null,this.resolve=null,this.rectangle=null,this.decorated=new Set,this.onPointerDown=e=>{e.button===2&&this.element.contains(e.target)||this.clear()},this.onFocus=e=>{this.element.contains(e.target)||this.clear()},this.onSelectionChange=()=>{if(!this.active)return;let e=this.element.ownerDocument,t=e.activeElement;if(t&&(t.tagName===`INPUT`||t.tagName===`TEXTAREA`)){let e=t;if(e.selectionStart!==e.selectionEnd){this.clear();return}}let n=e.getSelection();n&&!n.isCollapsed&&this.clear()},this.status=e.ownerDocument.createElement(`div`),this.status.className=`term-selection-status`,this.status.setAttribute(`role`,`status`),e.appendChild(this.status);let t=e.ownerDocument;t.addEventListener(`pointerdown`,this.onPointerDown,!0),t.addEventListener(`focusin`,this.onFocus),t.addEventListener(`selectionchange`,this.onSelectionChange)}get pending(){return this.resolve!==null}get active(){return this.pending||this.text!==null}getText(){return this.onSelectionChange(),this.text}select(){return this.claim(),this.status.textContent=`Selecting terminal text…`,new Promise(e=>{this.resolve=e})}selectRectangle(e){this.claim(),this.rectangle=e,this.text=e.text}paintRectangle(e,t){if(this.clearDecorations(),!this.rectangle||t<=0)return;let n=this.rectangle.rows[0].row;for(let{row:r,element:i}of e){let e=this.rectangle.rows[r-n];e&&(i.classList.add(`term-rectangle-row`),i.style.setProperty(`--term-selection-left`,`${e.left*t}px`),i.style.setProperty(`--term-selection-width`,`${(e.right-e.left)*t}px`),this.decorated.add(i))}}clearDecorations(){for(let e of this.decorated)e.classList.remove(`term-rectangle-row`),e.style.removeProperty(`--term-selection-left`),e.style.removeProperty(`--term-selection-width`);this.decorated.clear()}claim(){let e=this.element.ownerDocument;Q.get(e)?.clear(),this.clear(),Q.set(e,this);let t=e.getSelection();t&&!t.isCollapsed&&t.removeAllRanges()}resume(e){if(!this.pending||this.scan)return;let t=this.scan=Ue(e),n=()=>{this.timer=null;let e=performance.now()+4;try{for(let n=0;n<32;n++){let n=t.next();if(n.done){this.scan=null,this.text=n.value,this.element.classList.add(`term-select-all`),this.status.textContent=``;let e=this.resolve;this.resolve=null,e?.(!0);return}if(performance.now()>=e)break}this.timer=setTimeout(n,0)}catch{this.clear(),this.status.textContent=`Unable to select all text. Select a smaller range to copy.`}};this.timer=setTimeout(n,0)}clear(e=``){if(!this.active&&!this.status.textContent&&!e)return;this.timer!==null&&clearTimeout(this.timer),this.timer=null,this.scan?.return(``),this.scan=null,this.text=null,this.rectangle=null,this.clearDecorations(),this.element.classList.remove(`term-select-all`),this.status.textContent=e,Q.get(this.element.ownerDocument)===this&&Q.delete(this.element.ownerDocument);let t=this.resolve;this.resolve=null,t?.(!1)}invalidate(){this.active&&this.clear(this.pending?`Terminal changed. Select all again to copy.`:``)}destroy(){this.clear();let e=this.element.ownerDocument;e.removeEventListener(`pointerdown`,this.onPointerDown,!0),e.removeEventListener(`focusin`,this.onFocus),e.removeEventListener(`selectionchange`,this.onSelectionChange),this.status.remove()}},qe=class{constructor(e,t){this.element=e,this.callbacks=t,this.anchor=null,this.suppressClick=!1,this.owned=!1,this.lastEvent=null,this.frame=null,this.down=e=>{if(this.cancel(),this.owned=!1,this.suppressClick=!1,e.defaultPrevented||e.button!==0||!e.altKey||e.ctrlKey||e.metaKey)return;let t=this.callbacks.start(e);t&&this.callbacks.select(t,t)&&(this.anchor=t,this.owned=!0,e.preventDefault(),e.stopImmediatePropagation())},this.move=e=>{this.owned&&(e.buttons&1?(e.preventDefault(),e.stopImmediatePropagation(),this.update(e),this.lastEvent=e,this.scheduleScroll()):this.blur())},this.up=e=>{this.owned&&e.button===0&&(e.preventDefault(),e.stopImmediatePropagation(),this.update(e),this.cancel(),this.owned=!1,this.suppressClick=!0)},this.click=e=>{this.suppressClick&&e.detail!==0&&(this.suppressClick=!1,e.preventDefault(),e.stopImmediatePropagation())},this.key=e=>{this.anchor&&e.key===`Escape`&&(e.preventDefault(),e.stopImmediatePropagation(),this.cancel(),this.callbacks.clear())},this.cancel=()=>{this.anchor=null,this.lastEvent=null,this.frame!==null&&cancelAnimationFrame(this.frame),this.frame=null},this.blur=()=>{this.cancel(),this.owned=!1},this.focus=e=>{this.element.contains(e.target)||this.cancel()},e.addEventListener(`mousedown`,this.down,!0),e.addEventListener(`click`,this.click,!0);let n=e.ownerDocument;n.addEventListener(`mousemove`,this.move,!0),n.addEventListener(`mouseup`,this.up,!0),n.addEventListener(`keydown`,this.key,!0),n.addEventListener(`focusin`,this.focus),n.defaultView?.addEventListener(`blur`,this.blur)}update(e){let t=this.callbacks.position(e);this.anchor&&(!t||!this.callbacks.select(this.anchor,t))&&this.callbacks.clear()}scheduleScroll(){this.frame===null&&this.anchor&&this.lastEvent&&(this.frame=requestAnimationFrame(()=>{if(this.frame=null,!this.anchor||!this.lastEvent)return;let e=this.element.getBoundingClientRect(),t=this.lastEvent.clientY,n=t<e.top?Math.max(-24,t-e.top):t>e.bottom?Math.min(24,t-e.bottom):0,r=this.element.scrollTop;this.element.scrollTop+=n,this.update(this.lastEvent),this.element.scrollTop!==r&&this.scheduleScroll()}))}destroy(){this.cancel(),this.element.removeEventListener(`mousedown`,this.down,!0),this.element.removeEventListener(`click`,this.click,!0);let e=this.element.ownerDocument;e.removeEventListener(`mousemove`,this.move,!0),e.removeEventListener(`mouseup`,this.up,!0),e.removeEventListener(`keydown`,this.key,!0),e.removeEventListener(`focusin`,this.focus),e.defaultView?.removeEventListener(`blur`,this.blur)}},Je=500,Ye=32768,Xe=65536,Ze=20,Qe=4e3,$e=`Output announcements paused because there is too much output. Type in the terminal or turn announcements off and on to resume.`,et=class{constructor(e,t,n){this.host=e,this.getCore=t,this.ready=n,this.live=null,this.timer=null,this.previous=null,this.lines=0,this.characters=0,this.paused=!1,this.reset=()=>{this.invalidate(),this.lines=0,this.characters=0,this.paused=!1;let e=this.getCore();e&&this.active()&&(this.previous=this.snapshot(e),this.previous||this.limit())},e.addEventListener(`focusin`,this.reset),e.addEventListener(`focusout`,this.reset),e.ownerDocument.addEventListener(`visibilitychange`,this.reset),e.ownerDocument.defaultView?.addEventListener(`blur`,this.reset),e.ownerDocument.defaultView?.addEventListener(`focus`,this.reset)}setEnabled(e){e!==!!this.live&&(e?(this.live=this.host.ownerDocument.createElement(`div`),this.live.className=`term-announcements`,this.live.setAttribute(`role`,`log`),this.live.setAttribute(`aria-label`,`Terminal output`),this.live.setAttribute(`aria-live`,`polite`),this.live.setAttribute(`aria-relevant`,`additions`),this.live.setAttribute(`aria-atomic`,`false`),this.host.append(this.live)):(this.live?.remove(),this.live=null),this.reset())}active(){return!!this.live&&this.host.classList.contains(`focused`)&&this.host.isConnected&&this.host.ownerDocument.visibilityState!==`hidden`&&this.host.ownerDocument.hasFocus()}input(){this.paused?this.reset():(this.lines=0,this.characters=0)}invalidate(){this.timer!==null&&clearTimeout(this.timer),this.timer=null,this.previous=null,this.live?.replaceChildren()}rendered(){if(!this.active()){this.invalidate();return}if(this.paused||this.timer!==null)return;let e=this.getCore();e&&(this.previous?this.timer=setTimeout(()=>{if(this.timer=null,!this.active()){this.invalidate();return}if(!this.ready())return;let e=this.getCore();e&&this.announce(e)},Je):(this.previous=this.snapshot(e),this.previous||this.limit()))}snapshot(e,t){let n=e.getCols(),r=e.getRows(),i=e.getScrollbackCount(),a=e.getScrollbackDiscardedCount?.()??0,o=i+a,s=t??o;if(s<a||(o+r-s)*n>Ye)return null;let c=[],l=0;for(let t=s;t<o+r;t++){let r=o-t-1,i=t<o?e.getScrollbackLineLen(r):n;if(i>n)return null;let a=``;for(let n=0;n<i;n++){let i=t<o?e.getScrollbackCell(r,n):e.getCell(t-o,n);if(i.width===0||i.spacerHead)continue;let s=i.chars??String.fromCodePoint(i.char||32);if(l+=s.length,l>Xe)return null;a+=s}c.push(a.replace(/ +$/,``))}return{base:s,cols:n,rows:r,alternate:e.usingAltScreen(),lines:c}}announce(e){let t=this.previous;if(!t)return;let n=e.getScrollbackCount()+(e.getScrollbackDiscardedCount?.()??0);if(t.cols!==e.getCols()||t.rows!==e.getRows()||t.alternate!==e.usingAltScreen()||n<t.base){this.previous=this.snapshot(e);return}let r=this.snapshot(e,t.base);if(!r){this.limit();return}let i=r.lines.filter((e,n)=>e.trim()&&e!==t.lines[n]);if(this.previous={...r,base:n,lines:r.lines.slice(n-r.base)},!i.length)return;let a=i.join(`
|
|
5
|
+
`);this.lines+i.length>Ze||this.characters+a.length>Qe?this.limit():(this.lines+=i.length,this.characters+=a.length,this.publish(a))}publish(e){if(!this.live)return;let t=this.host.ownerDocument.createElement(`div`);t.textContent=e,this.live.replaceChildren(t)}limit(){this.paused=!0,this.previous=null,this.publish($e)}destroy(){this.setEnabled(!1),this.host.removeEventListener(`focusin`,this.reset),this.host.removeEventListener(`focusout`,this.reset),this.host.ownerDocument.removeEventListener(`visibilitychange`,this.reset),this.host.ownerDocument.defaultView?.removeEventListener(`blur`,this.reset),this.host.ownerDocument.defaultView?.removeEventListener(`focus`,this.reset)}},tt={1:`bold`,2:`dim`,4:`italic`,8:`underline`,16:`blink`,32:`reverse`,64:`invisible`,128:`strikethrough`};function nt(e){let t=[];for(let[n,r]of Object.entries(tt))e&Number(n)&&t.push(r);return t}var $=27;function rt(e){let t=[],n=Date.now(),r=0,i=0,a=()=>{if(r>i){let a=e.slice(i,r);a.length>0&&!/^[\x00-\x1f]+$/.test(a)&&t.push({ts:n,type:`text`,raw:a.slice(0,60)})}};for(;r<e.length;){if(e.charCodeAt(r)!==$){r++;continue}a();let o=r;if(r++,r>=e.length)break;let s=e[r];if(s===`[`){r++;let i=``;r<e.length&&(e[r]===`?`||e[r]===`>`||e[r]===`!`)&&(i=e[r],r++);let a=``;for(;r<e.length&&(e.charCodeAt(r)>=48&&e.charCodeAt(r)<=59||e[r]===`:`);)a+=e[r],r++;for(;r<e.length&&e.charCodeAt(r)>=32&&e.charCodeAt(r)<=47;)r++;let s=``;r<e.length&&e.charCodeAt(r)>=64&&e.charCodeAt(r)<=126&&(s=e[r],r++);let c=e.slice(o,r),l=a?a.split(/[;:]/).map(Number).filter(e=>!isNaN(e)):[],u=s===`m`?`sgr`:`csi`;t.push({ts:n,type:u,raw:c,params:l.length>0?l:void 0,private:i||void 0,final:s})}else if(s===`]`){for(r++;r<e.length&&e.charCodeAt(r)!==7&&!(e.charCodeAt(r)===$&&r+1<e.length&&e[r+1]===`\\`);)r++;r<e.length&&(e.charCodeAt(r)===7?r++:e.charCodeAt(r)===$&&(r+=2));let i=e.slice(o,r);t.push({ts:n,type:`osc`,raw:i.slice(0,80)})}else s>=` `&&s<=`~`?(r++,t.push({ts:n,type:`esc`,raw:e.slice(o,r),final:s})):r++;i=r}return a(),t}var it=500,at=class{constructor(){this._traces=[],this._bridge=null,this._perf={frameCount:0,totalRenderMs:0,avgRenderMs:0,maxRenderMs:0,lastDirtyRows:0}}get traces(){return this._traces}get perf(){return this._perf}setBridge(e){this._bridge=e}traceWrite(e){let t=rt(typeof e==`string`?e:new TextDecoder().decode(e));for(let e of t)this._traces.push(e);this._traces.length>it&&(this._traces=this._traces.slice(-500))}recordRender(e,t){this._perf.frameCount++,this._perf.totalRenderMs+=e,this._perf.avgRenderMs=this._perf.totalRenderMs/this._perf.frameCount,e>this._perf.maxRenderMs&&(this._perf.maxRenderMs=e),this._perf.lastDirtyRows=t}resetPerf(){this._perf={frameCount:0,totalRenderMs:0,avgRenderMs:0,maxRenderMs:0,lastDirtyRows:0}}cell(e,t){if(!this._bridge)return null;let n=this._bridge.getCell(e,t);return{...n,charStr:n.chars??(n.char>=32?String.fromCodePoint(n.char):``),flagNames:nt(n.flags)}}row(e){if(!this._bridge)return null;let t=this._bridge.getCols(),n=[];for(let r=0;r<t;r++)n.push(this.cell(e,r));return n}grid(){if(!this._bridge)return null;let e=this._bridge.getCursor();return{rows:this._bridge.getRows(),cols:this._bridge.getCols(),cursor:e,altScreen:this._bridge.usingAltScreen(),scrollbackCount:this._bridge.getScrollbackCount()}}unhandled(){return this._bridge?this._bridge.getUnhandledSequences():[]}dump(e=50){let t=this._traces.slice(-e);console.group(`%cwterm debug — last ${t.length} traces`,`color: #569cd6; font-weight: bold`);for(let e of t){let t=e.type===`sgr`?`%cSGR`:e.type===`csi`?`%cCSI`:e.type===`osc`?`%cOSC`:e.type===`esc`?`%cESC`:`%cTXT`,n=e.type===`sgr`?`background:#2d5a27;color:#fff;padding:1px 4px;border-radius:2px`:e.type===`csi`?`background:#1e4a7a;color:#fff;padding:1px 4px;border-radius:2px`:`background:#555;color:#fff;padding:1px 4px;border-radius:2px`,r=[e.private?`private=${e.private}`:``,e.params?`params=[${e.params}]`:``,e.final?`final=${e.final}`:``].filter(Boolean).join(` `);console.log(`${t} ${e.raw.slice(0,40)}`,n,r?` ${r}`:``)}console.groupEnd()}dumpUnhandled(){let e=this.unhandled();if(e.length===0)console.log(`%cwterm debug — no unhandled sequences`,`color: #6a9955`);else{console.group(`%cwterm debug — ${e.length} unhandled sequences`,`color: #d7ba7d; font-weight: bold`);for(let t of e)console.log(` final=${t.final} private=${t.private||`-`} params=[${t.params.slice(0,t.paramCount)}]`);console.groupEnd()}}};function ot(e,t){if(t)return e;if(e.length<=1)return e.toLowerCase();let n=``;for(let t of e)n+=t.toLowerCase();return n}function*st(e,t,n){let r=ot(t,n);if(!r)return;let i=new Uint32Array(r.length);for(let e=1,t=0;e<r.length;e++){for(;t>0&&r[e]!==r[t];)t=i[t-1];r[e]===r[t]&&t++,i[e]=t}let a=Array(r.length),o=e.getScrollbackCount(),s=0,c=0,l=0,u=!1,d;for(let t=0;t<o+e.getRows();t++){let f=o-1-t,p=t<o?e.getScrollbackRowMetadata?.(f):e.getRowMetadata?.(t-o);(!u||!p?.continuesPrevious)&&(s=0),u=p?.wrapsToNext??!1;let m=t<o?e.getScrollbackLineLen(f):e.getCols();for(let u=0;u<m;u++){++l>=256&&(l=0,yield null);let p=t<o?e.getScrollbackCell(f,u):e.getCell(t-o,u);if(p.width===0||p.spacerHead)continue;let h=ot(p.chars??String.fromCodePoint(p.char||32),n);if(s===0&&h.length===1&&h!==r[0])continue;let g={row:t,col:u,endCol:Math.min(m,u+(p.width??1))};for(let e=0;e<h.length;e++){for(++l>=256&&(l=0,yield null),a[c++%r.length]=g;s>0&&h[e]!==r[s];)s=i[s-1];if(h[e]===r[s]&&s++,s===r.length){let e={start:a[(c-r.length)%r.length],end:g};(!d||d.start.row!==e.start.row||d.start.col!==e.start.col||d.end.row!==e.end.row||d.end.endCol!==e.end.endCol)&&(yield e,d=e),s=i[s-1]}}}++l>=256&&(l=0,yield null)}}var ct=class{constructor(e){this.changed=e,this.matches=[],this.state={query:``,caseSensitive:!1,count:0,activeIndex:-1,searching:!1,limited:!1},this.timer=null,this.channel=null,this.scan=null,this.pending=!1,this.revealFirst=!1}snapshot(){return{...this.state}}search(e,t){if(e.length>1024)throw RangeError(`Search query exceeds 1,024 UTF-16 code units`);this.state.query=e,this.state.caseSensitive=t.caseSensitive??!1,this.revealFirst=!0,this.invalidate()}invalidate(){this.cancel(),this.matches=[],this.state.count=0,this.state.activeIndex=-1,this.state.limited=!1,this.pending=this.state.searching=this.state.query.length>0,this.changed(!1)}resume(e){if(!this.pending)return;this.pending=!1;let t=this.scan=st(e,this.state.query,this.state.caseSensitive),n=()=>{if(this.scan!==t)return;this.timer=null;let e=performance.now()+4,r=!1;do{let e=t.next();if(e.done){r=!0;break}if(e.value){if(this.matches.length===1e4){this.state.limited=!0,r=!0;break}this.matches.push(e.value)}}while(performance.now()<e);this.state.count=this.matches.length;let i=this.revealFirst&&this.matches.length>0;this.matches.length&&this.state.activeIndex===-1&&(this.state.activeIndex=0),i&&(this.revealFirst=!1),this.state.searching=!r,r&&(t.return(void 0),this.scan=null,this.clearTask()),this.changed(i),this.scan===t&&this.schedule(n)};this.schedule(n)}schedule(e){if(typeof MessageChannel>`u`)this.timer=setTimeout(e,0);else{let t=this.channel??=new MessageChannel;t.port1.onmessage=e,t.port2.postMessage(null)}}clearTask(){this.timer!==null&&clearTimeout(this.timer),this.timer=null,this.channel&&=(this.channel.port1.onmessage=null,this.channel.port1.close(),this.channel.port2.close(),null)}navigate(e){return this.matches.length?(this.state.activeIndex=(this.state.activeIndex+e+this.matches.length)%this.matches.length,this.revealFirst=!1,this.changed(!0),!0):!1}cancel(){this.clearTask(),this.scan?.return(void 0),this.scan=null,this.pending=!1,this.matches=[],this.state.count=0,this.state.activeIndex=-1,this.state.searching=!1,this.state.limited=!1}},lt=1e3,ut=1,dt=class{constructor(e,t={}){this.bridge=null,this.debug=null,this._themeColors=null,this.renderer=null,this.input=null,this.rafId=null,this._synchronizedOutputTimer=null,this._synchronizedOutputState=`idle`,this._synchronizedOutputGeneration=0,this._rendererNeedsSetup=!1,this.resizeObserver=null,this._destroyed=!1,this._shouldScrollToBottom=!1,this._scrollbackDiscardedCount=0,this._programmaticScrollTop=null,this._pendingResizeScrollTop=null,this._rowHeight=0,this._charWidth=0,this._windowSizeQueryState=0,this._textCapture=new Ge,this._searchReveal=!1,this.element=e,this._coreOption=t.core,this._initialColsExplicit=t.cols!==void 0,this._initialRowsExplicit=t.rows!==void 0,this.wasmUrl=t.wasmUrl,this.maxImageWidth=t.maxImageWidth,this.maxImageHeight=t.maxImageHeight,this.cols=t.cols||80,this.rows=t.rows||24,this.autoResize=t.autoResize!==!1,this._debugEnabled=t.debug??!1,this._renderingPaused=t.renderingPaused??!1,this.onData=t.onData||null,this.onBinary=t.onBinary||null,this.onTitle=t.onTitle||null,this.onWorkingDirectory=t.onWorkingDirectory||null,this.onBell=t.onBell||null,this.onShellIntegration=t.onShellIntegration||null,this.onClipboardWrite=t.onClipboardWrite||null,this.onResize=t.onResize||null,this.onSearchChange=t.onSearchChange||null,this._search=new ct(e=>{if(this._searchReveal||=e,e){let e=this._search.matches[this.getSearchState().activeIndex];e&&(this._shouldScrollToBottom=!1,this._pendingResizeScrollTop=null,this._setScrollTop((e.start.row+.5)*this._rowHeight-this.element.clientHeight/2))}this._synchronizedOutputState!==`held`&&this._scheduleRender(),this.onSearchChange?.(this.getSearchState())}),this._container=document.createElement(`div`),this._container.className=`term-grid`,this.element.appendChild(this._container),this.element.classList.add(`wterm`),this._historySelection=new Ke(this.element),this._rectangleDrag=new qe(this.element,{start:e=>{if(!(e.target instanceof Element)||!this.bridge||!this._canRender())return null;let t=this.renderer?.positionAt(e.target,e.clientX,this._charWidth);return!t||!e.shiftKey&&this.bridge.mouseTracking?.()&&t.row>=this.bridge.getScrollbackCount()?null:t},position:e=>{let t=this.element.getBoundingClientRect();return this.renderer?.dragPositionAt(e.clientX,Math.max(t.top+1,Math.min(t.bottom-1,e.clientY)),this._charWidth)??null},select:(e,t)=>this.selectRectangle(e,t),clear:()=>this._historySelection.clear()}),this._outputAnnouncements=new et(this.element,()=>this.bridge,()=>this._canRender()&&this.rafId===null&&this._synchronizedOutputState!==`held`),this._outputAnnouncements.setEnabled(t.announceOutput??!1),this._onVisibilityChange=()=>{this._canRender()?this._scheduleRender():(this._rectangleDrag.cancel(),this._cancelScheduledRender(),this._outputAnnouncements.invalidate())},this.element.ownerDocument.addEventListener(`visibilitychange`,this._onVisibilityChange),this.element.classList.toggle(`cursor-blink`,t.cursorBlink===!0),this.element.classList.toggle(`cursor-steady`,t.cursorBlink===!1),this._onClickFocus=e=>{if(e.defaultPrevented||this._historySelection.active)return;let t=e.target;if(t instanceof Element&&t.closest(`.term-link`)){if(G(e,this.element.ownerDocument.defaultView?.navigator??navigator)||e.detail===0)return;e.preventDefault()}let n=window.getSelection();(!n||n.isCollapsed)&&this.input?.focus()},this._onMouseSelect=e=>{if(e.defaultPrevented||e.button!==0||e.detail!==2&&e.detail!==3||e.altKey||e.ctrlKey||e.metaKey||!(e.target instanceof Element))return;let t=this.renderer?.positionAt(e.target,e.clientX,this._charWidth);t&&this.bridge&&(!e.shiftKey&&this.bridge.mouseTracking?.()&&t.row>=this.bridge.getScrollbackCount()||(e.detail===2?this.selectWord(t):this.selectLine(t.row))&&e.preventDefault())},this.element.addEventListener(`click`,this._onMouseSelect),this.element.addEventListener(`click`,this._onClickFocus),this._onModifierChange=e=>{this.element.classList.toggle(`link-modifier-active`,G(e,this.element.ownerDocument.defaultView?.navigator??navigator))},this._onWindowBlur=()=>{this.element.classList.remove(`link-modifier-active`)},this.element.ownerDocument.addEventListener(`keydown`,this._onModifierChange),this.element.ownerDocument.addEventListener(`keyup`,this._onModifierChange),this.element.ownerDocument.defaultView?.addEventListener(`blur`,this._onWindowBlur),this._onScroll=()=>{this._pendingResizeScrollTop===null&&(this._shouldScrollToBottom&&this._isScrolledToBottom()||this._programmaticScrollTop!==null&&Math.abs(this.element.scrollTop-this._programmaticScrollTop)<=ut?this._programmaticScrollTop=null:(this._programmaticScrollTop=null,this._shouldScrollToBottom=!1,this._scheduleRender()))},this.element.addEventListener(`scroll`,this._onScroll,{passive:!0}),this._onCopy=e=>{if(e.defaultPrevented||!e.clipboardData)return;let t=e.target;if(t instanceof Element&&!this.element.contains(t)&&(t.closest(`input, textarea`)||t.isContentEditable))return;let n=this.getSelectionText();this._historySelection.pending?e.preventDefault():n!==null&&(e.clipboardData.setData(`text/plain`,n),e.preventDefault())},this.element.ownerDocument.addEventListener(`copy`,this._onCopy)}async init(){try{if(this.bridge=this._coreOption?this._coreOption:await s.load(this.wasmUrl),this._destroyed)return this;let e=this.cols,t=this.rows;if(this._setRowHeight(),this.autoResize){let e=this._measureGridSize();e&&(this._initialColsExplicit||(this.cols=e.cols),this._initialRowsExplicit||(this.rows=e.rows))}this.bridge.init(this.cols,this.rows),this._themeColors&&this.bridge.setThemeColors?.(this._themeColors),this.cols=this.bridge.getCols(),this.rows=this.bridge.getRows(),this._debugEnabled&&(this.debug=new at,this.debug.setBridge(this.bridge),globalThis.__wterm=this),this._measureCharSize(),this.renderer=new be(this._container,{colorHost:this.element,maxImageWidth:this.maxImageWidth,maxImageHeight:this.maxImageHeight}),this.renderer.setup(this.cols,this.rows),this.input=new Ve(this.element,(e,t=!1)=>{t||(this._outputAnnouncements.input(),this._scrollToBottom()),this.onData?this.onData(e):this.write(e)},()=>this.bridge,()=>this._charWidth>0&&this._rowHeight>0?{charWidth:this._charWidth,rowHeight:this._rowHeight}:null,()=>{this._rectangleDrag.cancel(),this._historySelection.clear(),this._scrollToBottom()},e=>{this._outputAnnouncements.input(),this._rectangleDrag.cancel(),this._historySelection.clear(),this._scrollToBottom(),this.onBinary?this.onBinary(e):this.onData?e.every(e=>e<128)&&this.onData(String.fromCharCode(...e)):this.write(e)},{selectAll:()=>{this.selectAll()},hasSelection:()=>this._historySelection.active,clearSelection:()=>{this._rectangleDrag.cancel(),this._historySelection.clear()}}),this._setupResizeObserver(),this.autoResize||this._lockHeight(),this.input.focus(),this._initialRender(),(this.cols!==e||this.rows!==t)&&this.onResize?.(this.cols,this.rows)}catch(e){throw this.destroy(),Error(`wterm: failed to initialize: ${e instanceof Error?e.message:e}`)}return this}_isScrolledToBottom(){let e=this.element;return e.scrollHeight-e.scrollTop-e.clientHeight<5}_scrollToBottom(){this._setScrollTop(this.element.scrollHeight)}_setScrollTop(e){let t=this.element.scrollTop;this.element.scrollTop=e;let n=this.element.scrollTop;n!==t&&(this._programmaticScrollTop=n)}setThemeColors(e){let t=[e.foreground,e.background,e.cursor,...e.palette];if(e.palette.length!==16||t.some(e=>!Number.isInteger(e)||e<0||e>16777215))throw RangeError(`Theme colors must be 24-bit RGB values with exactly 16 palette entries`);if(this._destroyed)return;let n={...e,palette:[...e.palette]};this.bridge?.setThemeColors?.(n),this._themeColors=n;let r=[`--term-fg`,`--term-bg`,`--term-cursor`,...e.palette.map((e,t)=>`--term-color-${t}`)];t.forEach((e,t)=>this.element.style.setProperty(r[t],`#${e.toString(16).padStart(6,`0`)}`)),this.renderer?.invalidateColors(),this._scheduleRender()}write(e){if(!this.bridge||this._destroyed)return;this._textCapture.cancel(),this._rectangleDrag.cancel(),this._historySelection.invalidate(),this.renderer?.beforeMutation(this.bridge),this.debug&&this.debug.traceWrite(e),this._shouldScrollToBottom=this._isScrolledToBottom();let t=this._collectWindowSizeQueries(e),n,r=!1,i=e=>{r||(r=!0,n=e)},a=()=>{let e=this._drainResponses();e.hasError&&i(e.error);let t=this.bridge?.getBellCount?.()??0;if(t>0)try{this.onBell?.(t)}catch(e){i(e)}try{this._deliverTitle()}catch(e){i(e)}try{let e=this.bridge?.getClipboardWrite?.()??null;e!==null&&!this._destroyed&&this.onClipboardWrite?.(e)}catch(e){i(e)}try{let e=this.bridge?.getShellIntegrationState?.()??null;e!==null&&!this._destroyed&&this.onShellIntegration?.(e)}catch(e){i(e)}try{let e=this.bridge?.getWorkingDirectory?.()??null;e!==null&&!this._destroyed&&this.onWorkingDirectory?.(e)}catch(e){i(e)}};typeof e==`string`?this.bridge.writeString(e,a):this.bridge.writeRaw(e,a);let o=this.bridge.synchronizedOutput?.()??!1,s=this.bridge.synchronizedOutputGeneration?.()??0;this._updateSynchronizedOutput(o,s),this._invalidateSearch(),this._synchronizedOutputState!==`held`&&(this._setupRendererIfNeeded(),this._scheduleRender()),a();for(let e of t)try{this.onData?.(this._windowSizeResponse(e))}catch(e){i(e)}if(r)throw n}fit(){if(!this.bridge||this._destroyed)return;let e=this._measureGridSize();e&&(e.cols!==this.cols||e.rows!==this.rows)&&this.resize(e.cols,e.rows)}_measureGridSize(){let e=this._measureCharSize();if(!e)return null;let t=getComputedStyle(this.element),n=this.element.getBoundingClientRect(),r=e=>parseFloat(e)||0,i=r(t.borderLeftWidth)+r(t.borderRightWidth),a=r(t.borderTopWidth)+r(t.borderBottomWidth),o=Math.max(0,this.element.offsetWidth-this.element.clientWidth-i),s=Math.max(0,this.element.offsetHeight-this.element.clientHeight-a),c=n.width-r(t.paddingLeft)-r(t.paddingRight)-i-o,l=n.height-r(t.paddingTop)-r(t.paddingBottom)-a-s;return c<=0||l<=0?null:{cols:Math.max(1,Math.floor(c/e.charWidth)),rows:Math.max(1,Math.floor(l/e.rowHeight))}}resize(e,t){if(!this.bridge||this._destroyed)return;this._textCapture.cancel(),this._rectangleDrag.cancel(),this._historySelection.invalidate(),this.renderer?.beforeMutation(this.bridge),this._shouldScrollToBottom=this._pendingResizeScrollTop===null&&this._isScrolledToBottom(),this.bridge.resize(e,t),this._outputAnnouncements.invalidate(),this.cols=this.bridge.getCols(),this.rows=this.bridge.getRows();let n=this.bridge.synchronizedOutput?.()??!1,r=this.bridge.synchronizedOutputGeneration?.()??0;this._updateSynchronizedOutput(n,r)?this._rendererNeedsSetup=!0:(this._setupRenderer(),this._scheduleRender()),this._invalidateSearch(),this.onResize&&this.onResize(this.cols,this.rows)}search(e,t={}){this._destroyed||(this._search.search(e,t),this._paintSearch())}findNext(){return!this._destroyed&&this._search.navigate(1)}findPrevious(){return!this._destroyed&&this._search.navigate(-1)}clearSearch(){this.search(``)}getSearchState(){return this._search.snapshot()}scrollToPrompt(e){if(!this._canRender()||!this.bridge?.findPrompt||!this.renderer||this._synchronizedOutputState===`held`||this.bridge.usingAltScreen()||e!==-1&&e!==1||(this._cancelScheduledRender(),this._doRender(),e===1&&this._isScrolledToBottom()))return!1;let t=this.element.getBoundingClientRect(),n=this.renderer.dragPositionAt(t.left,t.top+this.element.clientTop+1,this._charWidth);if(!n)return!1;let r=this.bridge.findPrompt(n.row,e);if(r===null||!Number.isInteger(r)||r<0||r>=this.bridge.getScrollbackCount()+this.rows||(e<0?r>=n.row:r<=n.row))return!1;let i=this.element.scrollTop;this._shouldScrollToBottom=!1,this._searchReveal=!1,this._pendingResizeScrollTop=r*this._rowHeight,this._doRender();let a=Array.from(this.renderer.searchRows()).find(({row:e})=>e===r);return a&&this._setScrollTop(this.element.scrollTop+a.element.getBoundingClientRect().top-t.top-this.element.clientTop),this._scheduleRender(),Math.abs(this.element.scrollTop-i)>ut}setOutputAnnouncements(e){this._destroyed||this._outputAnnouncements.setEnabled(e)}setRenderingPaused(e){this._destroyed||e===this._renderingPaused||(this._renderingPaused=e,this._onVisibilityChange())}_canRender(){return!this._destroyed&&!this._renderingPaused&&this.element.ownerDocument.visibilityState!==`hidden`}readText(e={}){if(this._destroyed||!this.renderer||!this.bridge)return Promise.reject(Error(`Terminal is not initialized`));let t=this._textCapture.read(e.signal);return this._scheduleRender(),t}getSelectionText(){return this._destroyed?null:this._historySelection.getText()??this.renderer?.getSelectionText()??null}selectAll(){if(this._destroyed||!this.renderer||!this.bridge)return Promise.resolve(!1);this._rectangleDrag.cancel();let e=this._historySelection.select();return this._scheduleRender(),e}selectWord(e){return this._selectUnit(e,`word`)}selectLine(e){return this._selectUnit({row:e,col:0},`line`)}selectRectangle(e,t){if(this._destroyed||!this.bridge||!this.renderer||!this._canRender())return!1;let n=this.renderer.rectangle(this.bridge,e,t,()=>{this.input?.focus()});return n?(this._historySelection.selectRectangle(n),this._historySelection.paintRectangle(this.renderer.searchRows(),this._charWidth),!0):!1}_selectUnit(e,t){return this._destroyed||!this.bridge||!this.renderer?!1:this.renderer.select(this.bridge,e,t,()=>{this._rectangleDrag.cancel(),this._historySelection.clear();let e=this.element.ownerDocument.activeElement;e instanceof HTMLElement&&this.element.contains(e)&&e.tagName===`TEXTAREA`&&e.blur()})}clearSelection(){this._rectangleDrag.cancel(),this._historySelection.clear();let e=this.element.ownerDocument.getSelection();if(e&&!e.isCollapsed){for(let t=0;t<e.rangeCount;t++){let n=e.getRangeAt(t);if(!this.element.contains(n.startContainer)||!this.element.contains(n.endContainer))return}e.removeAllRanges()}}_invalidateSearch(){this.getSearchState().query&&(this._searchReveal=!1,this._search.invalidate(),this._paintSearch())}_paintSearch(){if(!this.renderer||!this.bridge||!this._canRender())return;let e=document.createDocumentFragment(),t=this._search.matches;if(!t.length){this.renderer.setSearchDecorations(e);return}let n=this.getSearchState().activeIndex,r=this.element.getBoundingClientRect();for(let{row:i,element:a}of this.renderer.searchRows()){let o=a.getBoundingClientRect();if(o.bottom<=r.top||o.top>=r.bottom)continue;let s=0,c=t.length;for(;s<c;){let e=s+c>>>1;t[e].end.row<i?s=e+1:c=e}let l=this.bridge.getScrollbackCount(),u=l-i-1,d=i<l?this.bridge.getScrollbackLineLen(u):this.cols;if(d<=0)continue;(i<l?this.bridge.getScrollbackCell(u,d-1):this.bridge.getCell(i-l,d-1)).spacerHead&&d--;let f=-1,p=-1,m=(t,n,r)=>{if(n<=t)return;let i=document.createElement(`div`);i.className=`term-search-match${r?` term-search-active`:``}`,i.style.cssText=`left:${t*this._charWidth}px;top:${a.offsetTop}px;width:${(n-t)*this._charWidth}px;height:${o.height}px`,e.appendChild(i)};for(let e=s;e<t.length&&t[e].start.row<=i;e++){let n=t[e],r=n.start.row===i?n.start.col:0,a=Math.min(d,n.end.row===i?n.end.endCol:d);f>=0&&r>p&&(m(f,p,!1),f=-1),f<0&&(f=r),p=Math.max(p,a)}f>=0&&m(f,p,!1);let h=t[n];h&&h.start.row<=i&&h.end.row>=i&&m(h.start.row===i?h.start.col:0,Math.min(d,h.end.row===i?h.end.endCol:d),!0)}this.renderer.setSearchDecorations(e)}focus(){this.input?this.input.focus():this.element.focus()}_scheduleRender(){this._canRender()&&this._synchronizedOutputState!==`held`&&this.rafId==null&&(this.rafId=requestAnimationFrame(()=>{this.rafId=null,this._doRender()}))}_cancelScheduledRender(){this.rafId!=null&&(cancelAnimationFrame(this.rafId),this.rafId=null)}_updateSynchronizedOutput(e,t){return e?this._synchronizedOutputState===`held`&&t!==this._synchronizedOutputGeneration?(this._armSynchronizedOutputFallback(t),!0):(this._synchronizedOutputState===`passthrough`&&t!==this._synchronizedOutputGeneration&&(this._synchronizedOutputState=`idle`),this._synchronizedOutputState===`idle`?(this._synchronizedOutputState=`held`,this._cancelScheduledRender(),this._armSynchronizedOutputFallback(t),!0):this._synchronizedOutputState===`held`):(this._synchronizedOutputState===`held`&&this._cancelSynchronizedOutputFallback(),this._synchronizedOutputState=`idle`,!1)}_armSynchronizedOutputFallback(e){this._cancelSynchronizedOutputFallback(),this._synchronizedOutputGeneration=e,this._synchronizedOutputTimer=setTimeout(()=>{this._synchronizedOutputState===`held`&&this._synchronizedOutputGeneration===e&&(this._synchronizedOutputTimer=null,this._synchronizedOutputState=`passthrough`,this._setupRendererIfNeeded(),this._cancelScheduledRender(),this._doRender())},lt)}_cancelSynchronizedOutputFallback(){this._synchronizedOutputTimer!=null&&(clearTimeout(this._synchronizedOutputTimer),this._synchronizedOutputTimer=null)}_setupRendererIfNeeded(){this._rendererNeedsSetup&&=(this._setupRenderer(),!1)}_setupRenderer(){!this._shouldScrollToBottom&&this._pendingResizeScrollTop===null&&(this._pendingResizeScrollTop=this.element.scrollTop),this.renderer?.requestSetup()}_initialRender(){this._doRender()}_doRender(){if(!this._canRender()||!this.bridge||!this.renderer||this._synchronizedOutputState===`held`)return;let e=0,t=this.debug?performance.now():0;if(this.debug)for(let t=0;t<this.rows;t++)this.bridge.isDirtyRow(t)&&e++;let n=this._rowHeight||17,r=this.bridge.getScrollbackCount(),i=this.bridge.getScrollbackDiscardedCount?.(),a=i!==void 0&&i>=this._scrollbackDiscardedCount?i-this._scrollbackDiscardedCount:0;i!==void 0&&(this._scrollbackDiscardedCount=i);let o=this._pendingResizeScrollTop===null?this.element.scrollTop:this._pendingResizeScrollTop;!this._shouldScrollToBottom&&a>0&&(o=Math.max(0,o-a*n),this._pendingResizeScrollTop===null?this._setScrollTop(o):this._pendingResizeScrollTop=o),this.renderer.render(this.bridge,{scrollTop:this._shouldScrollToBottom?Math.max(0,(r+this.rows)*n-this.element.clientHeight):o,clientHeight:this.element.clientHeight,rowHeight:n,scrollbackDiscardedCount:i,charWidth:this._charWidth}),this.debug&&this.debug.recordRender(performance.now()-t,e);let s=r>0||this.renderer.hasImageFlow;if(this.element.classList.toggle(`has-scrollback`,s),this._shouldScrollToBottom)this._scrollToBottom();else if(this._pendingResizeScrollTop!==null){let e=this._pendingResizeScrollTop;this._pendingResizeScrollTop=null,this._setScrollTop(e)}else!s&&this.element.scrollTop!==0&&this._setScrollTop(0);if(this.input?.syncInputPosition(),this._searchReveal){this._searchReveal=!1;let e=this._search.matches[this.getSearchState().activeIndex],t=e&&Array.from(this.renderer.searchRows()).find(({row:t})=>t===e.start.row);if(t){let e=t.element.getBoundingClientRect(),n=this.element.getBoundingClientRect();this._setScrollTop(this.element.scrollTop+e.top-n.top-(this.element.clientHeight-e.height)/2)}}this._paintSearch(),this._search.resume(this.bridge),this._historySelection.resume(this.bridge),this._historySelection.paintRectangle(this.renderer.searchRows(),this._charWidth),this._textCapture.resume(this.bridge),this._outputAnnouncements.rendered(),this._deliverTitle(),this._drainResponses()}_deliverTitle(){let e=this.bridge?.getTitle()??null;e!==null&&this.onTitle?.(e)}_drainResponses(){if(!this.bridge)return{hasError:!1};let e,t,n=!1;for(;(e=this.bridge.getResponse())!==null;)try{this.onData&&this.onData(e)}catch(e){n||(n=!0,t=e)}return{hasError:n,error:t}}_collectWindowSizeQueries(e){let t=[],n=this._windowSizeQueryState,r=0;for(;r<e.length;){if(n===0){if(r=typeof e==`string`?e.indexOf(`\x1B`,r):e.indexOf(27,r),r<0)break;n=1,r++;continue}let i=typeof e==`string`?e.charCodeAt(r):e[r];r++;let a=+(i===27);switch(n){case 1:n=i===91?2:a;break;case 2:n=i===49?3:a;break;case 3:n=i===52?4:i===54?6:a;break;case 4:case 6:i===116&&t.push(n===4?14:16),n=a}}return this._windowSizeQueryState=n,t}_windowSizeResponse(e){let{width:t,height:n}=this._pixelSize();if(e===14)return`\x1b[4;${n};${t}t`;let r=Math.max(1,Math.round(this._charWidth));return`\x1b[6;${Math.max(1,Math.round(this._rowHeight))};${r}t`}_pixelSize(){let e=getComputedStyle(this.element),t=(parseFloat(e.paddingLeft)||0)+(parseFloat(e.paddingRight)||0),n=(parseFloat(e.paddingTop)||0)+(parseFloat(e.paddingBottom)||0),r=this.element.clientWidth-t,i=this.element.clientHeight-n;if(r<=0||i<=0){let e=this.element.getBoundingClientRect();r=e.width-t,i=e.height-n}return r<=0&&this._charWidth>0&&(r=this.cols*this._charWidth),i<=0&&this._rowHeight>0&&(i=this.rows*this._rowHeight),{width:Math.max(1,Math.round(r)),height:Math.max(1,Math.round(i))}}_lockHeight(){let e=this._rowHeight||17,t=this.rows*e,n=getComputedStyle(this.element),r=(parseFloat(n.paddingTop)||0)+(parseFloat(n.paddingBottom)||0);n.boxSizing===`border-box`&&(r+=(parseFloat(n.borderTopWidth)||0)+(parseFloat(n.borderBottomWidth)||0)),this.element.style.height=`${t+r}px`}_setRowHeight(){let e=document.createElement(`div`);e.className=`term-row`,e.style.visibility=`hidden`,e.style.position=`absolute`,e.textContent=`W`,this._container.appendChild(e);let t=e.getBoundingClientRect().height;e.remove(),t>0&&(this._rowHeight=t,this.element.style.setProperty(`--term-row-height`,`${t}px`))}_measureCharSize(){let e=document.createElement(`div`);e.className=`term-row`,e.style.visibility=`hidden`,e.style.position=`absolute`;let t=document.createElement(`span`);t.style.width=`auto`,t.textContent=`W`,e.appendChild(t),this._container.appendChild(e);let n=t.getBoundingClientRect().width,r=e.getBoundingClientRect().height;return e.remove(),n===0||r===0?null:(this._charWidth=n,this._rowHeight=r,this.element.style.setProperty(`--term-cell-width`,`${n}px`),{charWidth:n,rowHeight:r})}_setupResizeObserver(){let e=document.createElement(`span`);e.className=`term-size-probe`,e.setAttribute(`aria-hidden`,`true`),e.textContent=`W`,this.element.appendChild(e);let t;this.resizeObserver=new ResizeObserver(e=>{if(this._destroyed)return;for(let n of e)n.target===this.element&&(t=n.contentRect);let n=this._measureCharSize();if(!n||!this.autoResize||!t)return;let{charWidth:r,rowHeight:i}=n,a=Math.max(1,Math.floor(t.width/r)),o=Math.max(1,Math.floor(t.height/i));(a!==this.cols||o!==this.rows)&&this.resize(a,o)}),this.resizeObserver.observe(e),this.autoResize&&this.resizeObserver.observe(this.element)}destroy(){this._destroyed=!0,this._textCapture.cancel(),this._historySelection.destroy(),this._rectangleDrag.destroy(),this._outputAnnouncements.destroy(),this._search.cancel(),this.onSearchChange=null,this._windowSizeQueryState=0,this._cancelScheduledRender(),this._cancelSynchronizedOutputFallback(),this.resizeObserver&&this.resizeObserver.disconnect(),this.input&&this.input.destroy(),this.renderer?.destroy(),this.renderer=null,this.element.removeEventListener(`click`,this._onClickFocus),this.element.removeEventListener(`click`,this._onMouseSelect),this.element.removeEventListener(`scroll`,this._onScroll),this.element.ownerDocument.removeEventListener(`copy`,this._onCopy),this.element.ownerDocument.removeEventListener(`visibilitychange`,this._onVisibilityChange),this.element.ownerDocument.removeEventListener(`keydown`,this._onModifierChange),this.element.ownerDocument.removeEventListener(`keyup`,this._onModifierChange),this.element.ownerDocument.defaultView?.removeEventListener(`blur`,this._onWindowBlur),this.element.classList.remove(`link-modifier-active`),this.element.innerHTML=``,this.debug&&globalThis.__wterm===this&&delete globalThis.__wterm,this.debug=null}};export{dt as WTerm};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-XKyaHtl9.js";import{r as t}from"./i18n-CkO6VFI0.js";import{t as n}from"./jsx-B4XNFIzB.js";import{t as r}from"./component-DWct-Tq6.js";import{n as i}from"./attrs-mixin-CmlG_FtV.js";import{t as a}from"./preload-helper-BLdHbfdN.js";import{l as o}from"./loader-Q6-HPKft.js";import{t as s}from"./screen-Dfvzj6n2.js";import{$t as c,Dn as l,En as u,Tn as d,Xt as f,Zt as p,cn as m,dn as h,en as g,f as _,fn as v,hn as ee,in as y,mn as te,nn as b,on as ne,qt as x,rn as re,sn as ie,tn as ae,un as S,vn as C,wn as oe,wt as w,yn as se}from"./task-design-CwySIAOl.js";import{B as ce,C as T,S as le,x as ue}from"./cloneFileDiffMetadata-CWfw01dG.js";import{$t as E,A as de,B as D,Bt as O,Ct as fe,D as pe,Dt as me,Et as he,F as ge,Ft as k,Gt as A,Ht as j,I as _e,It as M,J as N,Jt as P,K as F,Kt as I,L,Lt as R,M as z,Mt as B,N as ve,Nt as ye,O as be,Ot as V,P as xe,Pt as H,Qt as Se,R as Ce,Rt as we,St as Te,Tt as Ee,Ut as De,Vt as Oe,Wt as ke,Xt as Ae,Yt as U,Zt as je,_t as Me,a as Ne,b as W,bt as Pe,c as Fe,d as Ie,dt as Le,en as Re,f as G,ft as ze,gt as Be,ht as Ve,in as He,j as Ue,k as We,lt as Ge,mt as Ke,nn as qe,pt as K,qt as q,rn as J,s as Je,st as Ye,tn as Xe,u as Ze,vt as Qe,wt as $e,xt as et,y as tt,yt as nt,z as Y,zt as rt}from"./project-threads-Bv7IDBgi.js";import{t as it}from"./lru-DzKYIXMA.js";import{t as at}from"./project-comments-CPUONfs8.js";import{n as ot,t as st}from"./project-thread-links-C-TGkq59.js";function ct(e){let t=[];for(let n of e){let e=He.get(n);if(e==null)throw Error(`getResolvedLanguages: ${n} is not resolved. Please resolve languages before calling getResolvedLanguages`);t.push(e)}return t}function lt(e){for(let t of Array.isArray(e)?e:[e])if(!He.has(t))return!1;return!0}async function ut(e){let t=[],n=[];for(let r of e){if(r===`text`||r===`ansi`)continue;let e=Xe(r)??qe(r);`then`in e?n.push(e):t.push(e)}return n.length>0&&await Promise.all(n).then(e=>{for(let n of e){if(n==null)throw Error(`resolvedLanguages: unable to resolve language`);t.push(n)}}),t}function dt(e){return E.getResolvedThemes(e)}async function ft(e){for(let t of e)Ae(t);let t=await E.resolveThemes(e);for(let n=0;n<e.length;n++)je(e[n],t[n]);return t}var pt=e(it(),1),mt=Symbol(`IGNORE_RESPONSE`),ht=1e4,gt=class{options;highlighter;preferredHighlighter;renderOptions;renderOptionsRequestVersion=0;renderOptionsVersion=0;initialized=!1;workers=[];queuedTasks=[];queuedTaskByInstance=new Map;taskByHighlightKey=new Map;activeTaskById=new Map;activeRequestByInstance=new Map;nextRequestId=0;themeSubscribers=new Set;workersFailed=!1;statSubscribers=new Set;fileCache;diffCache;_queuedBroadcast;lifecycleGeneration=0;constructor(e,{langs:t,theme:n=ce,useTokenTransformer:r=!1,lineDiffType:i=`word-alt`,maxLineDiffLength:a=1e3,tokenizeMaxLineLength:o=1e3,preferredHighlighter:s=`shiki-js`}){this.options=e,this.preferredHighlighter=s,this.renderOptions={theme:n,useTokenTransformer:r,lineDiffType:i,maxLineDiffLength:a,tokenizeMaxLineLength:o},this.fileCache=new pt.default.LRUMap(e.totalASTLRUCacheSize??100),this.diffCache=new pt.default.LRUMap(e.totalASTLRUCacheSize??100),this.queueInitialization(t)}isWorkingPool(){return!this.workersFailed}getFileResultCache(e){return e.cacheKey==null?void 0:this.fileCache.get(e.cacheKey)}getDiffResultCache(e){return e.cacheKey==null?void 0:this.diffCache.get(e.cacheKey)}inspectCaches(){let{fileCache:e,diffCache:t}=this;return{fileCache:e,diffCache:t}}evictFileFromCache(e){try{return this.fileCache.delete(e)!==void 0}finally{this.queueBroadcastStateChanges()}}evictDiffFromCache(e){try{return this.diffCache.delete(e)!==void 0}finally{this.queueBroadcastStateChanges()}}async setRenderOptions({theme:e=this.renderOptions.theme??ce,useTokenTransformer:t=this.renderOptions.useTokenTransformer??!1,lineDiffType:n=this.renderOptions.lineDiffType??`word-alt`,maxLineDiffLength:r=this.renderOptions.maxLineDiffLength??1e3,tokenizeMaxLineLength:i=this.renderOptions.tokenizeMaxLineLength??1e3}){let{lifecycleGeneration:a}=this,o=++this.renderOptionsRequestVersion,s=()=>this.isCurrentLifecycle(a)&&this.renderOptionsRequestVersion===o;try{let a={theme:e,useTokenTransformer:t,lineDiffType:n,maxLineDiffLength:r,tokenizeMaxLineLength:i};if(this.isInitialized()||await this.initialize(),!s()||M(a,this.renderOptions))return;let o=Re(e),c=[];if(P(a.theme,this.renderOptions.theme)||(c=q(o)?dt(o):await ft(o)),!s())return;if(this.highlighter!=null)Se(c,this.highlighter);else{let e=await U({themes:o,langs:[`text`],preferredHighlighter:this.preferredHighlighter});if(!s())return;this.highlighter=e}let l=this.setRenderOptionsOnWorkers(a,c);this.renderOptions=a,this.renderOptionsVersion++,this.diffCache.clear(),this.fileCache.clear(),this.invalidateRenderTasks();for(let e of this.themeSubscribers)e.onThemeChange();await l}catch(e){if(e instanceof O||!s())return;throw e}}getPreferredHighlighter(){return this.preferredHighlighter}getFileRenderOptions(){let{tokenizeMaxLineLength:e,theme:t,useTokenTransformer:n}=this.renderOptions;return{theme:t,useTokenTransformer:n,tokenizeMaxLineLength:e}}getDiffRenderOptions(){return{...this.renderOptions}}async setRenderOptionsOnWorkers(e,t){if(this.workersFailed)return;this.isInitialized()||await this.initialize();let n=[];for(let r of this.workers){if(!r.initialized)throw console.log({managedWorker:r}),Error(`setRenderOptionsOnWorkers: Somehow we have an uninitialized worker`);n.push(new Promise((n,i)=>{let a=this.generateRequestId(),o={type:`set-render-options`,id:a,request:{type:`set-render-options`,id:a,renderOptions:e,resolvedThemes:t},resolve:n,reject:i,requestStart:Date.now()};this.activeTaskById.set(a,o),r.pendingSetupRequestId=a,r.worker.postMessage(o.request)}))}await Promise.all(n)}subscribeToThemeChanges(e){return this.themeSubscribers.add(e),this.queueBroadcastStateChanges(),()=>{this.unsubscribeToThemeChanges(e),this.queueBroadcastStateChanges()}}unsubscribeToThemeChanges(e){this.themeSubscribers.delete(e),this.queueBroadcastStateChanges()}subscribeToStatChanges(e){return this.statSubscribers.add(e),e(this.getStats()),()=>{this.statSubscribers.delete(e)}}queueBroadcastStateChanges(){this._queuedBroadcast??=requestAnimationFrame(this._broadcastStateChanges)}_broadcastStateChanges=()=>{this._queuedBroadcast!=null&&(cancelAnimationFrame(this._queuedBroadcast),this._queuedBroadcast=void 0);let e=this.getStats();for(let t of this.statSubscribers)t(e)};cleanUpTasks(e){this.detachInstanceFromQueuedTasks(e);let t=this.activeRequestByInstance.get(e);if(t!=null){let n=this.activeTaskById.get(t);X(n)?(this.detachInstanceFromRenderTask(n,e),!n.primeCache&&n.instances.size===0&&this.removeActiveTask(n)):this.activeTaskById.delete(t)}this.activeRequestByInstance.delete(e),this.queueBroadcastStateChanges()}isInitialized(){return this.initialized===!0}async initialize(e=[]){if(this.initialized!==!0){if(this.initialized===!1){let{lifecycleGeneration:t}=this,n=new Promise((n,r)=>{(async()=>{try{let r=Re(this.renderOptions.theme),i=[];if(i=q(r)?dt(r):await ft(r),!this.isCurrentLifecycle(t)){n();return}let a=[];if(a=lt(e)?ct(e):await ut(e),!this.isCurrentLifecycle(t)){n();return}let[o]=await Promise.all([U({themes:r,langs:[`text`,...e],preferredHighlighter:this.preferredHighlighter}),this.initializeWorkers(i,a)]);if(!this.isCurrentLifecycle(t)){this.terminateWorkers(),n();return}this.highlighter=o,this.initialized=!0,this.diffCache.clear(),this.fileCache.clear(),this.drainQueue(),this.queueBroadcastStateChanges(),n()}catch(e){if(e instanceof O||!this.isCurrentLifecycle(t)){n();return}this.initialized=!1,this.workersFailed=!0,this.cancelActiveWorkerTasks(),this.terminateWorkers(),this.activeTaskById.clear();for(let t of this.queuedTasks)this.rejectRenderTaskCallbacks(t,bt(e));this.queueBroadcastStateChanges(),r(e)}})()});return this.initialized=n,this.queueBroadcastStateChanges(),n}return this.initialized}}async initializeWorkers(e,t){this.workersFailed=!1;let n=[],r=le(),i=r>0?ue():void 0;this.workers.length>0&&this.terminateWorkers();for(let a=0;a<(this.options.poolSize??8);a++){let a=this.options.workerFactory(),o={worker:a,requestId:void 0,pendingSetupRequestId:void 0,initialized:!1,langs:new Set([`text`,...t.map(({name:e})=>e)]),customExtensionsVersion:0};a.addEventListener(`message`,e=>{this.handleWorkerMessage(o,e.data)}),a.addEventListener(`error`,e=>this.handleWorkerError(o,e)),this.workers.push(o),n.push(new Promise((n,a)=>{let s=this.generateRequestId(),c={type:`initialize`,id:s,request:{type:`initialize`,id:s,renderOptions:this.renderOptions,preferredHighlighter:this.preferredHighlighter,resolvedThemes:e,resolvedLanguages:t,customExtensionsVersion:i==null?void 0:r,customExtensionMap:i},resolve(){o.initialized=!0,n()},reject:a,requestStart:Date.now()};o.pendingSetupRequestId=s,this.activeTaskById.set(s,c),this.executeTask(o,c)}))}let a=this.options.workerInitializationTimeout??ht,o;try{await Promise.race([Promise.all(n),new Promise((e,t)=>{o=setTimeout(()=>{t(Error(`WorkerPoolManager: worker initialization timed out after ${a}ms`))},a)})])}finally{o!=null&&clearTimeout(o)}}handleWorkerError(e,t){let{onWorkerError:n}=this.options;if(n!=null)try{n(t,e.worker)}catch(e){console.error(`WorkerPoolManager: onWorkerError threw:`,e)}else console.error(`Worker error:`,t,e);let{pendingSetupRequestId:r}=e;if(r==null)return;let i=this.activeTaskById.get(r);if(i?.type!==`initialize`)return;let a=xt(t);n!=null&&De(a),i.reject(a),this.cleanWorkerAndTask(e,i)}drainQueue=()=>{if(this._queuedDrain=void 0,this.initialized===!0&&this.queuedTasks.length!==0){for(let e=0;e<this.queuedTasks.length;){let t=this.queuedTasks[e];if(this.hasActiveRequest(t)){e++;continue}let n=vt(t),r=this.getAvailableWorker(n);if(r==null)break;this.queuedTasks.splice(e,1),this.assignWorkerToTask(t,r),this.resolveLanguagesAndExecuteTask(r,t,n)}this.queueBroadcastStateChanges()}};highlightFileAST(e,t){let n=this.getFileResultCache(t);ke(t)||n!=null&&I(n.options,this.getFileRenderOptions())||this.hasMatchingFileInstanceTask(e,t)||this.submitTask(e,{type:`file`,file:t})}primeFileHighlightCache(e){if(!this.isWorkingPool())return Promise.reject(Error(`WorkerPoolManager.primeFileHighlightCache: worker pool is not working`));let t=this.getOrCreateFileHighlightCacheTask(e);return t==null?Promise.resolve():this.createRenderTaskCallbacks(t)}getOrCreateFileHighlightCacheTask(e){if(e.cacheKey==null){console.warn(`WorkerPoolManager.primeFileHighlightCache: priming highlight cache requires file.cacheKey; skipping "${e.name}".`);return}let t=this.getFileResultCache(e),n=this.getFileHighlightKey(e);if(n==null||ke(e)||t!=null&&I(t.options,this.getFileRenderOptions()))return;let r=this.getTaskByHighlightKey(n);if(r!=null)return r.primeCache=!0,r.type===`file`?r:void 0;{let t=this.submitCacheTask({type:`file`,file:e},n);return t.type===`file`?t:void 0}}getPlainFileAST(e,t,n,r){if(this.highlighter==null)this.queueInitialization();else return A(e,this.highlighter,this.renderOptions,{forcePlainText:!0,startingLine:t,totalLines:n,lines:r})}highlightDiffAST(e,t){let n=this.getDiffResultCache(t);H(t)||n!=null&&M(n.options,this.getDiffRenderOptions())||this.hasMatchingDiffInstanceTask(e,t)||this.submitTask(e,{type:`diff`,diff:t})}primeDiffHighlightCache(e){if(!this.isWorkingPool())return Promise.reject(Error(`WorkerPoolManager.primeDiffHighlightCache: worker pool is not working`));let t=this.getOrCreateDiffHighlightCacheTask(e);return t==null?Promise.resolve():this.createRenderTaskCallbacks(t)}getOrCreateDiffHighlightCacheTask(e){if(e.cacheKey==null){console.warn(`WorkerPoolManager.primeDiffHighlightCache: priming highlight cache requires diff.cacheKey; skipping "${e.prevName??e.name}" -> "${e.name}".`);return}let t=this.getDiffResultCache(e),n=this.getDiffHighlightKey(e);if(n==null||H(e)||t!=null&&M(t.options,this.getDiffRenderOptions()))return;let r=this.getTaskByHighlightKey(n);if(r!=null)return r.primeCache=!0,r.type===`diff`?r:void 0;{let t=this.submitCacheTask({type:`diff`,diff:e},n);return t.type===`diff`?t:void 0}}getPlainDiffAST(e,t,n,r,i){return this.highlighter==null?void 0:k(e,this.highlighter,this.renderOptions,{forcePlainText:!0,startingLine:t,totalLines:n,expandedHunks:r,collapsedContextThreshold:i})}terminate(){this.lifecycleGeneration++,this.cancelActiveWorkerTasks(),this.terminateWorkers();let e=new O;for(let t of this.queuedTasks)this.rejectRenderTaskCallbacks(t,e);this.fileCache.clear(),this.diffCache.clear(),this.activeRequestByInstance.clear(),this.queuedTasks.length=0,this.queuedTaskByInstance.clear(),this.taskByHighlightKey.clear(),this.activeTaskById.clear(),this.highlighter=void 0,this.initialized=!1,this.workersFailed=!1,this.queueBroadcastStateChanges()}isCurrentLifecycle(e){return this.lifecycleGeneration===e}queueInitialization(e){this.initialize(e).catch(e=>{j(e)||console.error(e)})}cancelActiveWorkerTasks(){let e=new O;for(let t of this.activeTaskById.values())`reject`in t?t.reject(e):X(t)&&this.rejectRenderTaskCallbacks(t,e)}terminateWorkers(){for(let e of this.workers)e.worker.terminate();this.workers.length=0}getStats(){return{managerState:this.initialized===!1?`waiting`:this.initialized===!0?`initialized`:`initializing`,totalWorkers:this.workers.length,workersFailed:this.workersFailed,busyWorkers:this.workers.filter(e=>e.requestId!=null||e.pendingSetupRequestId!=null).length,queuedTasks:this.queuedTasks.length,activeTasks:this.activeTaskById.size,themeSubscribers:this.themeSubscribers.size,fileCacheSize:this.fileCache.size,diffCacheSize:this.diffCache.size}}submitTask(e,t){this.initialized===!1&&this.queueInitialization();let n=this.getHighlightKeyForRequest(t),r=n==null?void 0:this.getTaskByHighlightKey(n);if(r!=null){this.detachInstanceFromQueuedTasks(e,r),this.addInstanceToTask(r,e),this.queueBroadcastStateChanges();return}this.detachInstanceFromQueuedTasks(e);let i=this.generateRequestId(),a=Date.now(),{renderOptionsVersion:o}=this,s=(()=>{switch(t.type){case`file`:return{type:`file`,id:i,request:{...t,id:i},instances:new Set([e]),primeCache:!1,highlightKey:n,callbacks:new Set,renderOptionsVersion:o,requestStart:a};case`diff`:return{type:`diff`,id:i,request:{...t,id:i},instances:new Set([e]),primeCache:!1,highlightKey:n,callbacks:new Set,renderOptionsVersion:o,requestStart:a}}})();this.enqueueRenderTask(s,e)}submitCacheTask(e,t){this.initialized===!1&&this.queueInitialization();let n=this.generateRequestId(),r=Date.now(),{renderOptionsVersion:i}=this,a=(()=>{switch(e.type){case`file`:return{type:`file`,id:n,request:{...e,id:n},instances:new Set,primeCache:!0,highlightKey:t,callbacks:new Set,renderOptionsVersion:i,requestStart:r};case`diff`:return{type:`diff`,id:n,request:{...e,id:n},instances:new Set,primeCache:!0,highlightKey:t,callbacks:new Set,renderOptionsVersion:i,requestStart:r}}})();return this.enqueueRenderTask(a),a}enqueueRenderTask(e,t){this.queuedTasks.push(e),t!=null&&this.queuedTaskByInstance.set(t,e),e.highlightKey!=null&&this.taskByHighlightKey.set(e.highlightKey,e),this.queueDrain()}async resolveLanguagesAndExecuteTask(e,t,n){try{let r=n.filter(e=>!J(e));r.length>0&&U({themes:Re(this.renderOptions.theme),langs:[`text`,...r],preferredHighlighter:this.preferredHighlighter}).catch(e=>{console.error(e)});let i=n.filter(t=>!e.langs.has(t));if(i.length>0&&(lt(i)?t.request.resolvedLanguages=ct(i):t.request.resolvedLanguages=await ut(i)),!this.activeTaskById.has(t.id)){e.requestId===t.id&&(this.cleanWorkerAndTask(e,t),this.queueBroadcastStateChanges(),this.queuedTasks.length>0&&this.queueDrain());return}this.executeTask(e,t)}catch(n){this.rejectRenderTaskCallbacks(t,bt(n)),this.cleanWorkerAndTask(e,t),this.queueBroadcastStateChanges(),this.queuedTasks.length>0&&this.queueDrain()}}handleWorkerMessage(e,t){let n=this.activeTaskById.get(t.id);try{if(n==null)throw mt;if(t.type===`error`){let e=Error(t.error);if(t.stack&&(e.stack=t.stack),`reject`in n)n.reject(e);else if(X(n))this.notifyHighlightError(n,e),this.rejectRenderTaskCallbacks(n,e);else throw Error(`handleWorkerMessage: unknown task type`);throw e}if(X(n))for(let{name:t}of n.request.resolvedLanguages??[])e.langs.add(t);switch(t.requestType){case`initialize`:if(n.type!==`initialize`)throw Error(`handleWorkerMessage: task/response dont match`);this.syncCustomExtensionVersion(e,n.request),n.resolve();break;case`set-render-options`:if(n.type!==`set-render-options`)throw Error(`handleWorkerMessage: task/response dont match`);n.resolve();break;case`file`:{if(n.type!==`file`)throw Error(`handleWorkerMessage: task/response dont match`);let{result:r,options:i}=t;if(!this.isCurrentRenderTask(n)||!I(i,this.getFileRenderOptions()))throw mt;let{request:a}=n;this.syncCustomExtensionVersion(e,a),n.cacheKeyAtDispatch!=null&&this.fileCache.set(n.cacheKeyAtDispatch,{result:r,options:i}),this.resolveRenderTaskCallbacks(n),this.notifyFileInstances(n,r,i);break}case`diff`:{if(n.type!==`diff`)throw Error(`handleWorkerMessage: task/response dont match`);let{result:r,options:i}=t;if(!this.isCurrentRenderTask(n)||!M(i,this.getDiffRenderOptions()))throw mt;let{request:a}=n;this.syncCustomExtensionVersion(e,a),n.cacheKeyAtDispatch!=null&&this.diffCache.set(n.cacheKeyAtDispatch,{result:r,options:i}),this.resolveRenderTaskCallbacks(n),this.notifyDiffInstances(n,r,i);break}}}catch(e){e!==mt&&console.error(e,n,t)}this.cleanWorkerAndTask(e,n,t.id),this.queueBroadcastStateChanges(),this.queuedTasks.length>0&&this.queueDrain()}_queuedDrain;queueDrain(){this._queuedDrain??(this._queuedDrain=Promise.resolve().then(this.drainQueue),this.queueBroadcastStateChanges())}assignWorkerToTask(e,t){t.requestId=e.id,X(e)&&(this.clearQueuedInstanceRequests(e),this.trackInstanceRequests(e)),this.activeTaskById.set(e.id,e)}cleanWorkerAndTask(e,t,n=t?.id){e.requestId===n&&(e.requestId=void 0),e.pendingSetupRequestId===n&&(e.pendingSetupRequestId=void 0),t!=null&&(X(t)&&(this.rejectRenderTaskCallbacks(t,new rt),this.clearInstanceRequests(t),this.clearHighlightKey(t)),this.activeTaskById.delete(t.id))}executeTask(e,t){_t(t.request)&&this.maybeAttachCustomExtensions(e,t.request),this.activeTaskById.has(t.id)||this.assignWorkerToTask(t,e);try{t.type===`file`?t.cacheKeyAtDispatch=t.request.file.cacheKey:t.type===`diff`&&(t.cacheKeyAtDispatch=t.request.diff.cacheKey),e.worker.postMessage(t.request)}catch(n){console.error(`Failed to post message to worker:`,n),X(t)?(this.notifyHighlightError(t,n),this.rejectRenderTaskCallbacks(t,bt(n))):`reject`in t&&t.reject(n),this.cleanWorkerAndTask(e,t),this.queuedTasks.length>0&&this.queueDrain()}this.queueBroadcastStateChanges()}maybeAttachCustomExtensions(e,t){if(t.customExtensionsVersion!=null)return;let n=le();e.customExtensionsVersion>=n||(t.customExtensionsVersion=n,t.customExtensionMap=ue())}syncCustomExtensionVersion(e,t){t.customExtensionsVersion!=null&&(e.customExtensionsVersion=t.customExtensionsVersion)}getAvailableWorker(e){let t;for(let n of this.workers){if(n.requestId!=null||n.pendingSetupRequestId!=null||!n.initialized)continue;if(t=n,e.length===0)break;let r=!0;for(let t of e)if(!n.langs.has(t)){r=!1;break}if(r)break}return t}getFileHighlightKey(e){if(e.cacheKey!=null)return`file:${e.cacheKey}:${this.renderOptionsVersion}`}getDiffHighlightKey(e){if(e.cacheKey!=null)return`diff:${e.cacheKey}:${this.renderOptionsVersion}`}getHighlightKeyForRequest(e){switch(e.type){case`file`:return this.getFileHighlightKey(e.file);case`diff`:return this.getDiffHighlightKey(e.diff)}}hasActiveRequest(e){for(let t of yt(e))if(this.activeRequestByInstance.has(t))return!0;return!1}addInstanceToTask(e,t){e.type,e.instances.add(t),this.activeTaskById.has(e.id)?this.activeRequestByInstance.set(t,e.id):this.queuedTaskByInstance.set(t,e)}detachInstanceFromQueuedTasks(e,t){let n=this.queuedTaskByInstance.get(e);n!=null&&n!==t&&(this.queuedTaskByInstance.delete(e),this.detachInstanceFromRenderTask(n,e),!n.primeCache&&n.instances.size===0&&this.removeQueuedTask(n))}detachInstanceFromRenderTask(e,t){e.type,e.instances.delete(t)}removeQueuedTask(e){let t=this.queuedTasks.indexOf(e);t!==-1&&this.queuedTasks.splice(t,1),this.rejectRenderTaskCallbacks(e,new rt),this.clearQueuedInstanceRequests(e),this.clearHighlightKey(e)}removeActiveTask(e){this.rejectRenderTaskCallbacks(e,new rt),this.clearInstanceRequests(e),this.clearHighlightKey(e),this.activeTaskById.delete(e.id)}createRenderTaskCallbacks(e){return new Promise((t,n)=>{e.callbacks.add({resolve:t,reject:n})})}resolveRenderTaskCallbacks(e){for(let t of e.callbacks)t.resolve();e.callbacks.clear()}rejectRenderTaskCallbacks(e,t){for(let n of e.callbacks)n.reject(t);e.callbacks.clear()}invalidateRenderTasks(){for(let e=this.queuedTasks.length-1;e>=0;e--){let t=this.queuedTasks[e];t.renderOptionsVersion!==this.renderOptionsVersion&&this.removeQueuedTask(t)}for(let e of Array.from(this.activeTaskById.values()))X(e)&&e.renderOptionsVersion!==this.renderOptionsVersion&&this.removeActiveTask(e)}clearQueuedInstanceRequests(e){for(let t of yt(e))this.queuedTaskByInstance.get(t)===e&&this.queuedTaskByInstance.delete(t)}clearHighlightKey(e){e.highlightKey!=null&&this.taskByHighlightKey.get(e.highlightKey)===e&&this.taskByHighlightKey.delete(e.highlightKey)}trackInstanceRequests(e){for(let t of yt(e))this.activeRequestByInstance.set(t,e.id)}clearInstanceRequests(e){for(let t of yt(e))this.activeRequestByInstance.get(t)===e.id&&this.activeRequestByInstance.delete(t)}notifyFileInstances(e,t,n){for(let r of e.instances)this.activeRequestByInstance.get(r)===e.id&&r.onHighlightSuccess(e.request.file,t,n)}notifyDiffInstances(e,t,n){for(let r of e.instances)this.activeRequestByInstance.get(r)===e.id&&r.onHighlightSuccess(e.request.diff,t,n)}notifyHighlightError(e,t){for(let n of yt(e))this.activeRequestByInstance.get(n)===e.id&&n.onHighlightError(t)}hasMatchingFileInstanceTask(e,t){for(let n of this.iterateRenderTasks())if(n.type===`file`&&this.isCurrentRenderTask(n)&&n.instances.has(e)&&R(t,n.request.file))return!0;return!1}hasMatchingDiffInstanceTask(e,t){for(let n of this.iterateRenderTasks())if(n.type===`diff`&&this.isCurrentRenderTask(n)&&n.instances.has(e)&&we(n.request.diff,t))return!0;return!1}getTaskByHighlightKey(e){let t=this.taskByHighlightKey.get(e);return t!=null&&this.isCurrentRenderTask(t)?t:void 0}isCurrentRenderTask(e){return e.renderOptionsVersion===this.renderOptionsVersion}*iterateRenderTasks(){for(let e of this.queuedTasks)yield e;for(let e of this.activeTaskById.values())X(e)&&(yield e)}generateRequestId(){return`req_${++this.nextRequestId}`}};function _t(e){return e.type===`initialize`||e.type===`file`||e.type===`diff`}function vt(e){let t=new Set;if(e.type===`initialize`||e.type===`set-render-options`)return[];switch(e.type){case`file`:t.add(e.request.file.lang??T(e.request.file.name));break;case`diff`:t.add(e.request.diff.lang??T(e.request.diff.name)),t.add(e.request.diff.lang??T(e.request.diff.prevName??`-`))}return t.delete(`text`),Array.from(t)}function X(e){return e?.type===`file`||e?.type===`diff`}function yt(e){return e.instances}function bt(e){if(e instanceof Error)return e;if(typeof e==`object`&&e){if(`error`in e&&e.error instanceof Error)return e.error;if(`message`in e&&typeof e.message==`string`)return Error(e.message)}return Error(String(e))}function xt(e){let t=`error`in e?e.error:void 0,n=`message`in e&&typeof e.message==`string`&&e.message!==``?e.message:t instanceof Error?t.message:`the worker script failed to load (the error event carries no message)`;return new Oe(`WorkerPoolManager: worker failed: ${n}`,t instanceof Error?{cause:t}:void 0)}async function St(e={}){let{signal:t,renderOptions:n,...r}=e;t?.throwIfAborted();let i=e.workerFactory??(await a(async()=>{let{createCodeWorker:e}=await import(`./worker-factory-CAZ4aPuv.js`);return{createCodeWorker:e}},[])).createCodeWorker;t?.throwIfAborted();let o=new gt({poolSize:2,...r,workerFactory:i},n??{}),s=!1;function c(){s||(s=!0,t?.removeEventListener(`abort`,c),o.terminate())}return t?.addEventListener(`abort`,c,{once:!0}),{pool:o,ready:o.initialize().then(()=>{s&&o.terminate()}),dispose:c}}var Ct=new Set([W.filesApi,W.fileSearchApi,W.fileReviewApi,W.fileMutationsApi,W.fileSavesApi,W.fileReviewActionsApi].flatMap(e=>Object.values(e).map(e=>e.href()))),Z=class extends Error{code;status;constructor(e,t=`request`,n=0){super(e),this.name=`FilesRequestError`,this.code=t,this.status=n}};async function Q(e,n,r,i,a=fetch,o){let s=new URL(e,`http://bud.invalid`),c=s.pathname===`/api/files/mutations/prepare`||s.pathname===`/api/files/mutations/apply`||s.pathname===`/api/files/review-actions/prepare`||s.pathname===`/api/files/review-actions/apply`||s.pathname===`/api/files/save`;if(!e.startsWith(`/api/files`)||e.startsWith(`//`)||s.origin!==`http://bud.invalid`||s.hash||!Ct.has(s.pathname)||(s.pathname===`/api/files/refresh`||s.pathname===`/api/files/save`||s.pathname.startsWith(`/api/files/review-actions/`)||s.pathname.startsWith(`/api/files/mutations/`))&&s.search||c!==!!o)throw new Z(t(`app.client.filesRequest.invalidEndpoint`),`input`);r.throwIfAborted();let l=await a(e,{method:c||s.pathname===`/api/files/refresh`?`POST`:`GET`,headers:{"X-Bud-Token":n,...c?{"Content-Type":`application/json`}:{}},...o?{body:JSON.stringify(o.body)}:{},credentials:`same-origin`,redirect:`error`,cache:`no-store`,signal:r}),u=l.body?.getReader();if(!u)throw new Z(t(`app.client.filesRequest.emptyResponse`),`response`,l.status);let d=[],f=0,p=()=>{u.cancel(r.reason).catch(()=>{})};r.addEventListener(`abort`,p,{once:!0});try{for(;;){r.throwIfAborted();let e=await u.read();if(r.throwIfAborted(),e.done)break;if(f+=e.value.byteLength,f>16777216)throw new Z(t(`app.client.filesRequest.responseExceedsDisplayLimit`),`limit`,l.status);d.push(e.value)}}catch(e){throw await u.cancel().catch(()=>{}),e}finally{r.removeEventListener(`abort`,p),u.releaseLock()}let m=new Uint8Array(f),h=0;for(let e of d)m.set(e,h),h+=e.byteLength;let g;try{g=JSON.parse(new TextDecoder(`utf-8`,{fatal:!0}).decode(m))}catch{throw new Z(t(`app.client.filesRequest.invalidData`),`response`,l.status)}if(!l.ok)throw new Z(g&&typeof g==`object`&&`error`in g&&typeof g.error==`string`?g.error.slice(0,1e3):t(`app.client.filesRequest.couldNotLoadFiles`),g&&typeof g==`object`&&`code`in g&&typeof g.code==`string`?g.code.slice(0,100):`request`,l.status);try{return i(g)}catch{throw new Z(t(`app.client.filesRequest.unexpectedData`),`response`,l.status)}}function wt(){let e=new Set;return{register(t,n){n.aborted||(e.add(t),n.addEventListener(`abort`,()=>e.delete(t),{once:!0}))},async beforeApply(t,n,r){for(let i of e){r.throwIfAborted();let e=await i.beforeApply(t,n,r);if(r.throwIfAborted(),e)throw Error(e)}},async afterApply(t,n){for(let r of e)await r.afterApply(t,n)}}}function Tt(e){return e instanceof Error?e.message:t(`app.client.fileMutationController.actionCouldNotBeCompleted`)}function Et(e,n){if(e.kind!==n.kind)throw Error(t(`app.client.fileMutationController.differentFileAction`));if(e.kind===`restore`)return;let r=`entries`in e?e.entries.map(e=>[e.path,e.destination]):e.kind===`delete`?e.paths.map(e=>[e,null]):[[null,e.path]],i=n.items.map(e=>[e.source,e.destination]);if(JSON.stringify(r)!==JSON.stringify(i))throw Error(t(`app.client.fileMutationController.differentFilePaths`))}function Dt(e,n){if(n.id!==e.id||n.items.length!==e.items.length||n.items.some((t,n)=>t.source!==e.items[n].source||t.destination!==e.items[n].destination))throw Error(t(`app.client.fileMutationController.resultDoesNotMatchPlan`))}function Ot(e){let n=null,r=!1,i=null,a=!1,o=``,s,c,l=null,u=0;function d(){e.signal.aborted||e.onChange()}function f(){return n?.phase===`preparing`||n?.phase===`applying`}function p(){n?.phase!==`applying`&&(s?.abort(),u++,n=null,l=null,d())}async function m(t,r){if(!n||n.phase===`applying`)return;s?.abort();let i=new AbortController;s=i;let a=AbortSignal.any([e.signal,i.signal]),o=++u;l=t,n={...n,phase:`preparing`,plan:null,result:null,error:``},d();try{let i=await e.transport.prepare(t,a);if(a.throwIfAborted(),Et(t,i),o!==u||!n)return;n={...n,plan:i,phase:`confirming`},d(),r&&await h()}catch(e){!a.aborted&&o===u&&n&&(n={...n,phase:`editing`,error:Tt(e)},d())}}async function h(){if(!n?.plan||!l||f())return;let r=l,i=n.plan;if(Date.parse(i.expiresAt)<=Date.now()){n={...n,phase:`editing`,plan:null,error:t(`app.client.fileMutationController.confirmationExpired`)},d();return}s?.abort();let a=new AbortController;s=a;let o=AbortSignal.any([e.signal,a.signal]),c=++u,p=!1;n={...n,phase:`applying`,error:``},d();try{await e.guards.beforeApply(r,i,o),o.throwIfAborted(),p=!0;let a=await e.transport.apply(i,o);if(o.throwIfAborted(),Dt(i,a),c!==u||!n)return;n={...n,phase:`result`,result:a};let s=``;try{await e.guards.afterApply(r,a)}catch(e){s=t(`app.client.fileMutationController.draftMetadataCouldNotBeUpdated`,{error:Tt(e)})}if(await e.onApplied(r,a),c!==u||!n)return;n={...n,error:s},a.status===`applied`&&!s&&![`delete`,`restore`].includes(r.kind)&&(n=null,l=null),d()}catch(r){if(o.aborted||c!==u||!n)return;n={...n,phase:`editing`,plan:null,error:Tt(r)},p&&(await e.onUncertain().catch(()=>{}),n&&c===u&&(n={...n,error:t(`app.client.fileMutationController.refreshAndCheckRecovery`,{error:Tt(r)})})),d()}}function g(t,i=!1){if(f())return;s?.abort(),c?.abort(),u++,r=!1,l=null;let a=``,o=``;try{a=L(t,e.index())}catch(e){o=Tt(e)}n={request:t,destination:a,phase:`editing`,plan:null,result:null,error:o},d(),!o&&(t.action===`delete`||t.action===`restore`||i)&&_()}async function _(){if(n&&!f()){if(n.phase===`confirming`)await h();else try{let t=n.result&&l?D(l,n.result):Ce(n.request,n.destination,e.index());if(!t)return;await m(t,![`delete`,`restore`].includes(t.kind))}catch(e){n&&={...n,error:Tt(e),phase:`editing`},d()}}}async function v(){c?.abort();let t=new AbortController;c=t;let n=AbortSignal.any([e.signal,t.signal]);a=!0,o=``,d();try{let t=await e.transport.recoveries(n);n.aborted||(i=t)}catch(e){n.aborted||(o=Tt(e))}finally{c===t&&(a=!1,d())}}return e.signal.addEventListener(`abort`,()=>{s?.abort(),c?.abort()},{once:!0}),{get state(){return n},get busy(){return f()},get recovery(){return{open:r,recoveries:i,loading:a,error:o}},open:g,close:p,submit:_,destination(e){n&&!f()&&(l=null,n={...n,destination:e,plan:null,result:null,phase:`editing`,error:``},d())},recoveries(){f()||(p(),r=!0,v(),d())},refreshRecoveries:v,closeRecoveries(){c?.abort(),r=!1,d()}}}function kt(e){return new URLSearchParams(e.mode===`commits`?{mode:e.mode,base:e.base,target:e.target}:{mode:e.mode})}async function At(e,n,r,i,a=fetch){if(n.length>20||n.some(t=>!e.entries.some(e=>e.path===t)))throw new Z(t(`app.client.projectFileReviewData.filesOutsidePage`),`input`);let o=new Map,s={},c=0,l=0,u=new AbortController,d=AbortSignal.any([i,u.signal]),f;async function p(){try{for(;c<n.length;){d.throwIfAborted();let i=n[c++],u=kt(e.comparison);u.set(`path`,i),u.set(`expectedRevision`,e.revision);try{let n=await Q(`${W.fileReviewApi.diff.href()}?${u}`,r,d,S,a);if(n.entry.path!==i||n.metadataRevision!==e.revision||JSON.stringify(n.comparison)!==JSON.stringify(e.comparison))throw new Z(t(`app.client.projectFileReviewData.comparisonChanged`),`changed`,409);let c=[n.oldFile,n.newFile,n.conflict?.base,n.conflict?.ours,n.conflict?.theirs].reduce((e,t)=>e+(t?.contents?.length??0)*2,0);l+c>33554432?s[i]=t(`app.client.projectFileReviewData.memoryLimit`):(l+=c,o.set(i,n))}catch(e){if(d.aborted||e instanceof Z&&(e.status===409||e.status===401||e.status===403))throw e;s[i]=e instanceof Error?e.message:t(`app.client.projectFileReviewData.couldNotReadComparison`)}}}catch(e){f??=e,u.abort(e)}}if(await Promise.all(Array.from({length:Math.min(3,n.length)},p)),f)throw f;return i.throwIfAborted(),{diffs:n.flatMap(e=>o.get(e)??[]),failures:s}}var jt={getItem:e=>{let t=B(e);return typeof t==`string`?t:null},setItem:(e,t)=>ye(e,t)},Mt=16,Nt=Mt*y*2,Pt=3145728,Ft=new TextEncoder;function $(e){return e.contents!==e.baseContents}function It(e){return Ft.encode(e.contents).length+Ft.encode(e.baseContents).length}function Lt(e,t){return e===t||e.startsWith(`${t}/`)}function Rt(e,n){if(!e)return[];if(e.length>Pt)throw Error(t(`app.client.fileDrafts.recordExceedsLimit`));let r=JSON.parse(e);if(!r||typeof r!=`object`||Array.isArray(r))throw Error(t(`app.client.fileDrafts.invalidRecord`));let i=r;if(i.version!==1||i.projectId!==n||!Array.isArray(i.drafts)||i.drafts.length>Mt||Object.keys(i).some(e=>![`version`,`projectId`,`drafts`].includes(e)))throw Error(t(`app.client.fileDrafts.invalidRecord`));let a=new Set,o=0;return i.drafts.map(e=>{if(!e||typeof e!=`object`||Array.isArray(e))throw Error(t(`app.client.fileDrafts.invalidDraft`));let n=e;if(Object.keys(n).some(e=>![`id`,`path`,`baseRevision`,`baseContents`,`contents`,`updatedAt`].includes(e))||typeof n.id!=`string`||!/^[a-zA-Z0-9-]{1,80}$/.test(n.id)||!Number.isSafeInteger(n.updatedAt)||Number(n.updatedAt)<0)throw Error(t(`app.client.fileDrafts.invalidDraft`));b({path:n.path,expectedRevision:n.baseRevision,contents:n.baseContents}),b({path:n.path,expectedRevision:n.baseRevision,contents:n.contents});let r=n;if(a.has(r.path))throw Error(t(`app.client.fileDrafts.duplicateDraftPath`));if(a.add(r.path),o+=It(r),o>Nt)throw Error(t(`app.client.fileDrafts.draftsExceedMemoryLimit`));return{...r}})}function zt(e,n,r=Date.now){let i=new Map,a=``,o=`bud:drafts:${e}:v1`;try{for(let t of Rt(n?.getItem(o)??null,e))i.set(t.path,t)}catch{a=t(`app.client.fileDrafts.readFailed`)}let s=!!a;function c(){if(s)return!1;let r=JSON.stringify({version:1,projectId:e,drafts:[...i.values()].filter($)});try{if(!n||r.length>Pt)throw Error(`Storage unavailable`);return n.setItem(o,r),a=``,!0}catch{return a=t(`app.client.fileDrafts.tabOnlyWarning`),!1}}function u(e){if(Ft.encode(e.contents).length>2097152||!e.contents.isWellFormed()||e.contents.includes(`\0`))throw Error(t(`app.client.fileDrafts.unsupportedDraftText`));let n=[...i.values()].filter(t=>t.path!==e.path&&!$(t));for(let e of n)i.delete(e.path);let r=[...i.values()].filter(t=>t.path!==e.path);if(r.length>=Mt||r.reduce((e,t)=>e+It(t),It(e))>Nt)throw Error(t(`app.client.fileDrafts.draftLimitReached`));return i.set(e.path,e),c(),e}return{get warning(){return a},get dirty(){return[...i.values()].filter($)},get(e){return i.get(e)},open(e,t,n){let a=i.get(e);return a&&$(a)?a:(b({path:e,expectedRevision:t,contents:n}),u({id:crypto.randomUUID(),path:e,baseRevision:t,baseContents:n,contents:n,updatedAt:r()}))},change(e,n){let a=i.get(e);if(!a)throw Error(t(`app.client.fileDrafts.draftNoLongerOpen`));return u({...a,contents:n,updatedAt:r()})},acknowledge(e,t,n){let a=i.get(e);if(a)return u({...a,baseRevision:n,baseContents:t,updatedAt:r()})},rebase(e,n,a){let o=i.get(e);if(!o)throw Error(t(`app.client.fileDrafts.draftNoLongerOpen`));return u({...o,id:crypto.randomUUID(),baseRevision:n,baseContents:a,updatedAt:r()})},discard(e){i.delete(e),c()},persist:c,beforeMutation(e,n){let r=[...i.values()].filter($);if(e.kind===`delete`&&r.some(t=>e.paths.some(e=>Lt(t.path,e))))return t(`app.client.fileDrafts.deleteWithUnsavedDrafts`);if(e.kind===`restore`&&r.some(e=>n.items.some(t=>t.destination&&Lt(e.path,t.destination))))return t(`app.client.fileDrafts.restoreWithUnsavedDrafts`);if(e.kind===`move`){if(r.some(t=>e.entries.some(e=>Lt(t.path,e.destination)&&!Lt(t.path,e.path))))return t(`app.client.fileDrafts.destinationHasDraft`);if(r.some(t=>e.entries.some(e=>Lt(t.path,e.path)))&&!c())return t(`app.client.fileDrafts.storageUnavailableForMove`)}return null},afterMutation(e,n){if(e.kind!==`move`)return;let r=n.items.filter(e=>e.status===`applied`&&e.source&&e.destination),a=[],o=new Map(i);for(let e of i.values()){let t=r.find(t=>Lt(e.path,t.source));if(!t)continue;let n=l(t.destination+e.path.slice(t.source.length));a.push({draft:e,path:n}),o.delete(e.path)}for(let{draft:e,path:n}of a){let r=o.get(n);if(r&&$(r))throw Error(t(`app.client.fileDrafts.destinationDraftConflict`));o.set(n,{...e,id:crypto.randomUUID(),path:n})}i=o,c()}}}var Bt=new Map,Vt=!1;function Ht(e,n){Vt||(Vt=!0,window.addEventListener(`beforeunload`,e=>{if([...Bt.values()].some(e=>e.dirty.length)){for(let e of Bt.values())e.persist();e.preventDefault(),e.returnValue=``}}));let r=Bt.get(e);if(r)return r;for(let[e,t]of Bt)t.dirty.length||Bt.delete(e);if(Bt.size>=4)throw Error(t(`app.client.fileDrafts.projectDraftLimitReached`));let i=zt(e,n);return Bt.set(e,i),i}function Ut(e){return e instanceof Error?e.message:t(`app.client.fileEditorController.saveFailed`)}function Wt(e,n){if(e.entry.path!==n)throw Error(t(`app.client.fileEditorController.wrongFileResponse`));if(e.contents===null||!e.revision)throw Error(t(`app.client.fileEditorController.unsupportedFile`));return{revision:e.revision,contents:e.contents}}function Gt(e,t){return e===t||e.startsWith(`${t}/`)}function Kt(e){let n=null,r=!1,i=null,a=``,o,s=new Set,c=0;function l(){e.signal.aborted||e.onChange()}function u(){o?.abort(),c++,n=null,i=null,r=!1,a=``,e.drafts.persist(),l()}function d(e){i!==e&&u()}function f(e){!n||n.draft.path!==e.entry.path||n.saving||n.latest||e.revision!==n.draft.baseRevision&&(n={...n,conflict:!0,error:t(`app.client.fileEditorController.changedOutsideEditor`)},l())}async function p(u,d=`file`,f){o?.abort();let p=new AbortController;o=p;let m=AbortSignal.any([p.signal,e.signal]),h=++c;i=u,r=!0,a=``,l();try{let r=await e.read(u,m);m.throwIfAborted();let i=Wt(r,u),a=e.drafts.open(u,i.revision,i.contents),o=a.baseRevision!==i.revision,c=d===`diff`&&f?.workingRevision===i.revision;n={key:`${a.id}:${h}`,draft:a,file:{name:u,contents:a.contents},oldFile:c?f.file:{name:u,contents:a.baseContents},mode:d,baselineLabel:t(c?`app.client.fileEditorController.index`:`app.client.fileEditorController.openedVersion`),saving:s.has(u),conflict:o,latest:null,error:o?t(`app.client.fileEditorController.recoveredDraftOldVersion`):``,status:$(a)?t(`app.client.fileEditorController.recoveredUnsavedDraft`):``}}catch(r){if(!m.aborted){let i=e.drafts.get(u);i&&$(i)?n={key:`${i.id}:recovery:${h}`,draft:i,file:{name:u,contents:i.contents},oldFile:{name:u,contents:i.baseContents},mode:`file`,baselineLabel:t(`app.client.fileEditorController.openedVersion`),saving:s.has(u),conflict:!0,latest:null,error:t(`app.client.fileEditorController.projectFileUnreadable`,{detail:Ut(r)}),status:t(`app.client.fileEditorController.unsavedDraftAvailable`)}:a=Ut(r)}}finally{h===c&&(r=!1,l())}}function m(t){if(n){try{let r=e.drafts.change(n.draft.path,t);n={...n,draft:r,status:``,error:n.conflict?n.error:``}}catch(e){n={...n,error:Ut(e)}}l()}}async function h(){if(!n||n.saving||n.conflict||n.latest||!$(n.draft))return;let r=n.draft;s.add(r.path),n={...n,saving:!0,error:``,status:``},l();try{let i=await e.save({path:r.path,expectedRevision:r.baseRevision,contents:r.contents},e.signal);if(i.path!==r.path||i.previousRevision!==r.baseRevision)throw Error(t(`app.client.fileEditorController.saveRevisionMismatch`));let a=e.drafts.acknowledge(r.path,r.contents,i.revision);n?.draft.path===r.path&&a&&(n={...n,draft:a,status:``,error:``},i.refresh===`failed`?_.error(t(`app.client.fileEditorController.savedRefreshFailed`),{description:t(`app.client.fileEditorController.refreshBeforeContinuing`)}):$(a)?_.success(t(`app.client.fileEditorController.savedToProject`),{description:t(`app.client.fileEditorController.newerEditsUnsaved`)}):_.success(t(`app.client.fileEditorController.savedToProject`))),e.onSaved()}catch(e){n?.draft.path===r.path&&(n={...n,error:Ut(e),conflict:!0})}finally{s.delete(r.path),n?.draft.path===r.path&&(n={...n,saving:!1}),l()}}async function g(){if(!n||n.saving)return;let r=n;o?.abort();let i=new AbortController;o=i;let a=AbortSignal.any([i.signal,e.signal]),s=++c;try{let i=await e.read(r.draft.path,a);a.throwIfAborted();let o=Wt(i,r.draft.path);if(!n||n.draft.path!==r.draft.path)return;let c=e.drafts.get(r.draft.path);n={...n,key:`${c.id}:merge:${s}`,file:{name:c.path,contents:c.contents},oldFile:{name:c.path,contents:o.contents},mode:`diff`,baselineLabel:t(`app.client.fileEditorController.latestFile`),latest:i,conflict:!0,error:``,status:t(`app.client.fileEditorController.draftOnNewSide`)}}catch(e){!a.aborted&&n&&(n={...n,error:Ut(e)})}finally{l()}}function v(){if(!n?.latest)return;let r=Wt(n.latest,n.draft.path),i=e.drafts.rebase(n.draft.path,r.revision,r.contents);n={...n,draft:i,latest:null,conflict:!1,error:``,status:t(`app.client.fileEditorController.reviewedAgainstLatest`)},l()}async function ee(){if(!n||n.saving)return;let t=n.draft.path;e.drafts.discard(t),u(),await p(t)}return{get state(){return n},get opening(){return r},get openError(){return a},begin:p,change:m,save:h,close:u,closeOtherPath:d,observe:f,checkLatest:g,acceptMerge:v,discard:ee,guard:{async beforeApply(n,r,i){return i.throwIfAborted(),[...s].some(e=>r.items.some(t=>t.source&&Gt(e,t.source)||t.destination&&Gt(e,t.destination)))?t(`app.client.fileEditorController.waitForSave`):e.drafts.beforeMutation(n,r)},afterApply(t,r){e.drafts.afterMutation(t,r),n&&t.kind===`move`&&r.items.some(e=>e.status===`applied`&&e.source&&Gt(n.draft.path,e.source))&&u(),l()}}}}function qt(e){return e instanceof Error?e.message:t(`app.client.fileReviewActionsController.actionCouldNotBeCompleted`)}function Jt(e){let n=null,r,i=0;function a(){e.signal.aborted||e.onChange()}function o(t){return r?.abort(),r=new AbortController,i++,n={phase:t,plan:null,result:null,recoveries:null,error:``},a(),{signal:AbortSignal.any([e.signal,r.signal]),turn:i}}function s(){n?.phase!==`applying`&&(r?.abort(),i++,n=null,a())}async function c(r){if(n?.phase===`applying`)return;let{signal:s,turn:c}=o(`preparing`);try{r.kind!==`undo`&&e.guard([r.path],r.kind===`discard`?`worktree`:`index`);let a=await e.prepare(r,s);if(s.throwIfAborted(),a.kind!==r.kind||r.kind!==`undo`&&!a.paths.includes(r.path))throw Error(t(`app.client.fileReviewActionsController.preparedReviewMismatch`));e.guard(a.paths,a.target),c===i&&(n={phase:`ready`,plan:a,result:null,recoveries:null,error:``})}catch(e){!s.aborted&&c===i&&(n={phase:`error`,plan:null,result:null,recoveries:null,error:qt(e)})}finally{c===i&&a()}}async function l(){if(n?.phase!==`ready`||!n.plan)return;let o=n.plan,s=i,c=AbortSignal.any([e.signal,r.signal]);try{e.guard(o.paths,o.target),n={...n,phase:`applying`,error:``},a();let r=await e.apply({id:o.id,revision:o.revision},c);if(c.throwIfAborted(),r.id!==o.id||r.target!==o.target||r.changedPaths.some(e=>!o.paths.includes(e)))throw Error(t(`app.client.fileReviewActionsController.writeResponseUnconfirmed`));if(s===i){let t=``;try{await e.onApplied(r)}catch(e){t=qt(e)}c.throwIfAborted(),s===i&&(n={...n,phase:`done`,result:r,error:t})}}catch(e){!c.aborted&&s===i&&n&&(n={...n,phase:`error`,error:qt(e)})}finally{s===i&&a()}}async function u(){if(n?.phase===`applying`)return;let{signal:t,turn:r}=o(`preparing`);try{let a=await e.recoveries(t);!t.aborted&&r===i&&(n={phase:`recoveries`,plan:null,result:null,recoveries:a,error:``})}catch(e){!t.aborted&&r===i&&(n={phase:`error`,plan:null,result:null,recoveries:null,error:qt(e)})}finally{r===i&&a()}}return e.signal.addEventListener(`abort`,()=>{r?.abort(),n=null},{once:!0}),{get state(){return n},prepare:c,apply:l,recoveries:u,close:s}}function Yt(e){return e.resolution.state===`outdated`?null:{selection:{path:e.source.viewPath??e.source.path,start:e.resolution.startLine,end:e.resolution.endLine,...e.source.side?{side:e.source.side===`old`?`deletions`:`additions`}:{}},revision:e.resolution.revision}}function Xt(e,t,n){return n?[{path:n.path,revision:n.file?.revision??null,contents:n.file?.contents??null,commit:n.commit}]:e?[{path:e.entry.path,revision:e.revision,contents:e.contents,commit:null}]:t.flatMap(e=>[{path:e.oldFile?.name??e.entry.originalPath??e.entry.path,revision:e.oldFile?.revision??null,contents:e.oldFile?.contents??null,viewPath:e.entry.path,side:`old`,commit:e.base},{path:e.entry.path,previousPath:e.entry.originalPath,revision:e.newFile?.revision??null,contents:e.newFile?.contents??null,viewPath:e.entry.path,side:`new`,commit:e.target}])}function Zt(e,n,r){if(e.endSide&&e.endSide!==e.side)throw Error(t(`app.client.projectCodeComments.selectConsecutiveLines`));let i=e.side===`deletions`?`old`:`new`,a=n.find(t=>(t.viewPath??t.path)===e.path&&(!t.side||t.side===i));if(!a||a.contents===null||!a.revision)throw Error(t(`app.client.projectCodeComments.commentsRequireReadableText`));if(r&&a.revision!==r)throw Error(t(`app.client.projectCodeComments.linesBelongToOlderSource`));return x({path:a.path,revision:a.revision,commit:a.commit??null,side:i,startLine:Math.min(e.start,e.end),endLine:Math.max(e.start,e.end)},a.contents)}function Qt(e){let t=new URLSearchParams({query:e.query,regex:String(e.regex),caseSensitive:String(e.caseSensitive),wholeWord:String(e.wholeWord),directory:e.directory,includeDotfiles:String(e.includeDotfiles),includeIgnored:String(e.includeIgnored),limit:String(e.limit)});for(let n of e.include)t.append(`include`,n);for(let n of e.exclude)t.append(`exclude`,n);return t}function $t(e){let n,r={loading:!1,result:null,error:``,notice:``};function i(){e.signal.aborted||e.onChange()}function a(e=t(`app.client.fileSearchController.searchCancelled`)){n?.abort(),n=void 0,r={...r,loading:!1,notice:e,error:``},i()}return e.signal.addEventListener(`abort`,()=>a(``),{once:!0}),{get state(){return r},cancel:a,async search(o){a(``);let s=new AbortController;n=s;let c=AbortSignal.any([s.signal,e.signal]);r={loading:!0,result:null,error:``,notice:``},i();try{let i=C(o),a=await e.request(i,c);if(Qt(a.query).toString()!==Qt(i).toString())throw new Z(t(`app.client.fileSearchController.differentSearchResults`),`response`);if(c.aborted||n!==s)return;r={loading:!1,result:a,error:``,notice:``}}catch(e){if(c.aborted||n!==s)return;r={loading:!1,result:null,error:e instanceof Error?e.message:t(`app.client.fileSearchController.searchFailed`),notice:``}}finally{n===s&&(n=void 0,i()),s.abort()}}}}function en(e,n){if(e.entry.path!==n.path||e.revision!==n.revision||e.entry.content!==`text`||typeof e.contents!=`string`||n.start<0||n.end<n.start||n.end>e.contents.length)throw Error(t(`app.client.fileSearchController.outdatedResult`));let r=t=>{let n=1,r=0;for(let i of e.contents.matchAll(/\r\n|\r|\n/g)){let e=i.index+i[0].length;if(e>t)break;n++,r=e}return{line:n,column:t-r+1}},i=r(n.start),a=r(n.end);if(i.line!==n.startLine||i.column!==n.startColumn||a.line!==n.endLine||a.column!==n.endColumn)throw Error(t(`app.client.fileSearchController.invalidCoordinates`));return{page:0,scroll:0,revision:n.revision,selection:{path:n.path,start:n.startLine,end:Math.max(n.startLine,n.endLine-Number(n.endColumn===1&&n.endLine>n.startLine))}}}function tn(e){return e instanceof Error?e.message:t(`app.client.projectFileReview.readProjectError`)}function nn(e){let a=e.props.project,s={version:1,projectId:a.id,view:Ve(),positions:{}},l=null,u=null,f=[],m={},_=``,v=!1,y=null,b=!1,ne=!1,x=``,ie=`light`,S,C=!1,oe,w,se,ce=!1,T=``,le,ue,E=``,D=``,O=``,fe=e.props.refresh,me=``,k,A,j=de(),_e=e.props.path,M,P,F=null,I=null,L=!1,R,z,ve=``,V=null,H=null,Se=[],Ce=[],we=``,Te,Ee=null,De,Oe,ke=0,Ae=``,U,je,Ne,Fe=``,Re=!1,G=e.props.store;G||Je(a).then(e=>{G=e});function He(){if(!L){let e=window.document.activeElement;for(;e?.shadowRoot?.activeElement;)e=e.shadowRoot.activeElement;je=e instanceof HTMLElement?e:void 0}L=!0}function qe(){L=!1,z=void 0,K(),e.queueTask(()=>{(je?.isConnected?je:Ne?.querySelector(`diffs-container`)?.shadowRoot?.querySelector(`[contenteditable=true]`)??Ne?.querySelector(`[data-bud-code-review]`))?.focus({preventScroll:!0}),je=void 0})}function K(){e.signal.aborted||e.update()}function q(){return F?JSON.stringify([Pe(s.view,e.props.path),F.commit]):Pe(s.view,e.props.path)}function J(){return s.positions[q()]??Ke()}function Ye(){clearTimeout(se),se=setTimeout(()=>ye(`bud:review:${a.id}:v1`,JSON.stringify(s)),200)}function Xe(e,t=!1){let n=J(),r={...n,...e};s=Qe(s,q(),r),Ye(),(t||JSON.stringify(n.selection)!==JSON.stringify(r.selection)||n.revision!==r.revision)&&K()}function $e(){let t=et(e.props.path,s.view);window.location.pathname+window.location.search+window.location.hash!==t&&(ue=new URL(t,window.location.origin).href,window.history.pushState({...window.history.state},``,t))}function tt(e){F=null,I=null,s={...s,view:{...s.view,...e}},Ye(),$e(),K()}let Y;async function rt(){let n;Y=new Promise(e=>{n=e}),oe?.abort();let r=new AbortController;oe=r;let i=AbortSignal.any([e.signal,r.signal]),o=e.props.path,c=s.view,p=F&&F.path===o?F:null,h=q(),g=JSON.stringify([h,J().page,o]),y=nt(c);v=!0,_=``,D!==g&&(l=null,u=null,f=[],I=null,m={}),K();try{if(p){let e=await Q(`${W.fileReviewApi.source.href()}?${new URLSearchParams(p)}`,a.token,i,ee);if(e.path!==p.path||e.commit!==p.commit)throw new Z(t(`app.client.projectFileReview.sourceResponseCommitMismatch`),`response`);i.aborted||(I=e,D=g)}else if(y)for(let e=0;e<2;e++){let n=await Q(`${W.fileReviewApi.compare.href()}?${kt(y)}`,a.token,i,te);if(n.comparison.mode!==y.mode)throw new Z(t(`app.client.projectFileReview.comparisonMismatch`),`response`);let r=Math.min(J().page,Math.max(0,Math.ceil(n.entries.length/20)-1)),s=J().selection?.path;s&&c.multiple&&n.entries.some(e=>e.path===s)&&(r=Math.floor(n.entries.findIndex(e=>e.path===s)/20)),r!==J().page&&Xe({...J(),page:r});let l=c.multiple?n.entries.slice(r*20,(r+1)*20).map(e=>e.path):n.entries.filter(e=>e.path===o).map(e=>e.path);try{let e=await At(n,l,a.token,i);!i.aborted&&q()===h&&(u=n,f=e.diffs,m=e.failures,D=JSON.stringify([h,r,o]));break}catch(t){if(e===0&&t instanceof Z&&t.status===409)continue;throw t}}else if(o){let e=D!==g&&G?Ie(G,o):null;e&&(l=e,D=g,v=!1,K());let n=await Q(`${W.filesApi.read.href()}?${new URLSearchParams({path:o})}`,a.token,i,d);if(n.entry.path!==o)throw new Z(t(`app.client.projectFileReview.sourceResponseFileMismatch`),`response`);if(G&&Ze(G,n).catch(()=>{}),!i.aborted&&(l=l?.revision===n.revision&&l.entry.path===n.entry.path?l:n,D=g,A?.observe(n),U?.path===o)){let e=U;U=void 0;try{Xe(en(n,e),!0),Ae=t(`app.client.projectFileReview.searchMatchNotice`,{line:e.startLine,column:e.startColumn})}catch(e){Ae=tn(e)}}}}catch(e){i.aborted||(_=tn(e))}finally{oe===r&&(v=!1,K()),n()}}async function it(n=!1){w?.abort();let r=e.props.path;if(!r){y=null;return}let i=new AbortController;w=i;let o=AbortSignal.any([e.signal,i.signal]),c=new URLSearchParams({path:r,limit:`25`});n&&y?.nextCursor&&y.revision?(c.set(`revision`,y.revision),c.set(`cursor`,y.nextCursor)):s.view.mode===`commits`&&c.set(`revision`,s.view.target),ne=!0,x=``,K();try{let e=await Q(`${W.fileReviewApi.history.href()}?${c}`,a.token,o,h);if(e.path!==r)throw new Z(t(`app.client.projectFileReview.historyPathMismatch`),`response`);o.aborted||(y=e)}catch(e){o.aborted||(x=tn(e))}finally{w===i&&(ne=!1,K())}}function at(t){if(s.view.multiple&&u){let e=u.entries.findIndex(e=>e.path===t);Xe({...Ke(),page:Math.max(0,Math.floor(e/20))}),E=``}e.props.onSelect(t),K()}function ct(t,n){let r=n===`parent`&&t.parents[0]?{base:t.parents[0],target:t.commit}:n===`base`?{base:t.commit}:{target:t.commit};b=!1,tt({mode:`commits`,...r}),t.path!==e.props.path&&e.props.onSelect(t.path)}async function lt(){let t=e.props.path,n=s.view.mode;if(!t||!A)return;if(n===`working`){for((!u||u.comparison.mode!==`working`)&&await rt();v&&Y;)if(await Y,e.signal.aborted||e.props.path!==t||s.view.mode!==n)return;if(e.signal.aborted||e.props.path!==t||s.view.mode!==n)return}let r=f.find(e=>e.entry.path===t),i=s.view.mode===`working`&&r?.newFile?.contents!==null&&r?.newFile?.revision;A.begin(t,i?`diff`:`file`,i?{workingRevision:r.newFile.revision,file:r.oldFile?.contents!==null&&r.oldFile?{name:r.oldFile.name,contents:r.oldFile.contents}:null}:void 0)}function ut(e){j=e,ye(`bud:editor-preferences:v1`,JSON.stringify(e)),K()}function dt(){let e=A?.state?.draft;if(!e)return;let t=URL.createObjectURL(new Blob([new TextEncoder().encode(e.contents)],{type:`application/octet-stream`})),n=window.document.createElement(`a`);n.href=t,n.download=e.path.split(`/`).at(-1)??`draft.txt`,n.click(),setTimeout(()=>URL.revokeObjectURL(t),0)}async function ft(t){let n=p(t.conflict);n&&A&&(t.entry.path!==e.props.path&&e.props.onSelect(t.entry.path),P={path:t.entry.path,conflict:n},await A.begin(t.entry.path),K())}function pt(t,n=!1){if(!Le(t)){window.location.assign(Ge(t.id));return}R=t.id,e.props.comments.loadThread(t.id),He(),z=void 0,ve=``;let r=Ce.find(e=>e.thread.id===t.id);if(A?.state?.draft.path===t.anchor.path&&!n){K();return}let i=t.anchor.side===`old`&&r?.source.side===void 0&&r?.resolution.state===`outdated`,a=!n&&!i?r:void 0,o=a?.source.viewPath??a?.source.path??t.anchor.path;t.anchor.commit&&(n||!a)?(F={path:t.anchor.path,commit:t.anchor.commit},o=t.anchor.path,s={...s,view:{...s.view,mode:`source`,multiple:!1}},A?.close()):a||(F=null,s={...s,view:{...s.view,mode:t.anchor.side===`old`?`working`:`source`,multiple:!1}}),o!==e.props.path&&e.props.onSelect(o),Ee=t.id,(!a||o!==e.props.path)&&(E=``),K()}function mt(n,r=!1){if(e.props.comments.ready&&e.props.comments.snapshot.capabilities.create){He(),H=V,R=void 0,ve=``;try{let e=A?.state;if(r&&e&&($(e.draft)||e.conflict||e.saving))throw Error(t(`app.client.projectFileReview.saveDraftBeforeComment`));z=Zt(n,r&&e&&n.side!==`deletions`?[{path:e.draft.path,revision:e.draft.baseRevision,contents:e.draft.contents,commit:null}]:Se,r?void 0:J().revision)}catch(e){z=void 0,ve=tn(e)}K()}}async function ht(n){if(!z)throw Error(t(`app.client.projectFileReview.selectCodeLinesAgain`));if(A?.state&&$(A.state.draft))throw Error(t(`app.client.projectFileReview.saveDraftBeforeSendingComment`));R=(await e.props.comments.write({anchor:z,body:n})).thread.id,z=void 0,K()}let gt=i((n,r)=>{Ne=n,ce=!0;try{k=Ht(a.id,jt);let e=B(`bud:editor-preferences:v1`);j=Ue(JSON.parse(typeof e==`string`?e:`null`))}catch(e){_=tn(e)}k&&(A=Kt({signal:r,drafts:k,read:(e,t)=>Q(`${W.filesApi.read.href()}?${new URLSearchParams({path:e})}`,a.token,t,d),save:(e,t)=>Q(W.fileSavesApi.save.href(),a.token,t,re,fetch,{body:e}),onChange:K,onSaved:()=>{E=``,K()}}),e.props.registerDraftGuard?.(A.guard,r)),M=Jt({signal:r,prepare:(e,t)=>Q(W.fileReviewActionsApi.prepare.href(),a.token,t,c,fetch,{body:e}),apply:(e,t)=>Q(W.fileReviewActionsApi.apply.href(),a.token,t,ae,fetch,{body:e}),recoveries:e=>Q(W.fileReviewActionsApi.recoveries.href(),a.token,e,g),guard(e){if(A?.state?.saving)throw Error(t(`app.client.projectFileReview.waitForSaveBeforeReview`));if(e.some(e=>{let t=k?.get(e);return t&&$(t)}))throw Error(t(`app.client.projectFileReview.saveOrDiscardDraftBeforeActions`))},async onApplied(n){n.target===`worktree`&&A?.close(),P&&n.changedPaths.includes(P.path)&&n.target===`index`&&(P=void 0,A?.close()),E=JSON.stringify([q(),J().page,e.props.path]),fe=e.props.refresh;let r=rt();for(;;){let t=Y;if(await r,e.signal.aborted||Y===t||!Y)break;r=Y}if(_)throw Error(t(`app.client.projectFileReview.writeCompletedRefreshError`,{error:_}))},onChange:K}),window.addEventListener(`beforeunload`,e=>{k?.persist(),k?.dirty.length&&(e.preventDefault(),e.returnValue=``)},{signal:r});try{s=Be(B(`bud:review:${a.id}:v1`),a.id)}catch{}_t(e.props.href),T=e.props.href;let i=()=>{ie=window.document.documentElement.dataset.theme===`dark`?`dark`:`light`,K()},o=new MutationObserver(i);o.observe(window.document.documentElement,{attributes:!0,attributeFilter:[`data-theme`]}),i(),St({signal:r,renderOptions:{theme:ge,lineDiffType:s.view.highlights}}).then(async e=>{await e.ready,r.aborted||(S=e,C=!0,K())}).catch(()=>{C=!0,K()}),r.addEventListener(`abort`,()=>{oe?.abort(),w?.abort(),o.disconnect(),clearTimeout(se),S?.dispose(),k?.persist(),ye(`bud:review:${a.id}:v1`,JSON.stringify(s))},{once:!0})});function _t(t){let n=new URL(t);V=e.props.conversation?.id??null,H=null,V||(F=null,I=null);let r=Me(n,a.id);he(n,a.id).foreign&&(r={view:{mode:`source`,multiple:!1}}),r&&(s={...s,view:{...s.view,...r.view}},r.position&&(s=Qe(s,Pe(s.view,r.position.selection?.path??e.props.path),r.position))),E=``}return()=>{if(ce){(T!==e.props.href||le!==e.props.conversation?.id)&&(T=e.props.href,le=e.props.conversation?.id,ue!==T&&_t(T),ue=void 0);let n=e.props.searchSelection;n&&n.id!==ke&&(ke=n.id,U=n.match,Ae=``,e.queueTask(()=>{A?.close(),P=void 0,tt({mode:`source`,multiple:!1}),E=``,K()})),_e!==e.props.path&&(_e=e.props.path,P=void 0,F?.path!==e.props.path&&(F=null,I=null),e.queueTask(()=>A?.closeOtherPath(e.props.path)));let r=JSON.stringify([q(),J().page,e.props.path]);(r!==E||fe!==e.props.refresh)&&(E=r,fe=e.props.refresh,e.queueTask(()=>{rt()}));let i=JSON.stringify([e.props.path,s.view.mode===`commits`?s.view.target:e.props.repository?.head]);if(b&&i!==O&&(O=i,e.queueTask(()=>{it()})),S&&me!==s.view.highlights){me=s.view.highlights;let n=S;e.queueTask(()=>{n.pool.setRenderOptions({lineDiffType:s.view.highlights}).catch(n=>{e.signal.aborted||(_=t(`app.client.projectFileReview.updateHighlightingError`,{error:tn(n)}),K())})})}}let i=A?.state,c=e.props.comments;if(R&&c.ready&&!c.snapshot.threads.find(e=>e.id===R)?.messagesLoaded&&!c.loadingThread(R)){let t=R;e.queueTask(()=>{c.loadThread(t)})}let d=JSON.stringify([l?.entry.path,l?.revision,I?.path,I?.commit,I?.file?.revision,f.map(e=>e.revision),i?.key,i?.draft.baseRevision]);if((d!==we||Te!==c.version)&&(we=d,Te=c.version,Se=Xt(l,f,I),Ce=ze(c.snapshot.threads,Se)),Oe!==i?.key&&(Oe=i?.key,De=void 0),i&&De&&(Ce=[...De]),V&&V!==H&&c.loaded&&!v&&(l||I||u||_)){let t=c.snapshot.threads.find(e=>e.id===V);if(t)H=V,e.queueTask(()=>pt(t,e.props.conversation?.original??!1));else{L=!0;let t=V;e.queueTask(()=>{c.loadThread(t)})}}if(Ee&&!v){let t=Ce.find(e=>e.thread.id===Ee);if(t){Ee=null;let n=Yt(t);n&&e.queueTask(()=>Xe(n,!0))}}let p=L&&c.ready;p!==Re&&(Re=p,e.queueTask(()=>e.props.onComments?.(p)));let h=k?.dirty.map(e=>e.path)??[];h.join(`\0`)!==Fe&&(Fe=h.join(`\0`),e.queueTask(()=>e.props.onDrafts?.(h)));let g={threads:c.snapshot.threads,locations:Ce,version:c.version,selected:R,onShow:()=>{He(),K()},onOpen:e=>{let t=c.snapshot.threads.find(t=>t.id===e);t&&pt(t)},onCreate:c.snapshot.capabilities.create?e=>mt(e):void 0,onLocations:e=>{A?.state?.key===i?.key&&(De=e,K())}};return n(`div`,{class:`flex h-full min-h-0 flex-col`,mix:gt,children:[(c.loaded?!c.ready:a.storage.threads?.state!==`ready`)?n(o,{as:`p`,variant:`ui-caption`,tone:`muted`,role:`status`,class:`shrink-0 border-b border-line px-3 py-1.5`,children:t(`app.client.projectFileReview.commentsUnavailable`)}):null,Ae?n(o,{as:`p`,variant:`ui-caption`,role:`status`,class:`shrink-0 border-b border-line px-3 py-1.5`,children:Ae}):null,A?.openError?n(o,{as:`p`,variant:`ui-caption`,role:`alert`,class:`shrink-0 border-b border-line px-3 py-1.5 text-red-600 dark:text-red-400`,children:A.openError}):null,A?.opening?n(o,{as:`p`,variant:`ui-caption`,role:`status`,class:`sr-only`,children:t(`app.client.projectFileReview.readingFileForEditing`)}):null,i&&A&&P?.path===i.draft.path?n(pe,{chrome:e.props.chrome,file:{name:i.draft.path,contents:i.draft.contents,cacheKey:i.draft.baseRevision},dirty:$(i.draft),saving:i.saving,stale:i.conflict,error:i.error,status:i.status,theme:ie,workerPool:S?.pool,onChange:A.change,onSave:()=>{A?.save()},onMarkResolved:()=>{P&&M?.prepare({kind:`mark-resolved`,path:P.path,expectedRevision:i.draft.baseRevision,conflict:P.conflict})},onEdit:()=>{P=void 0,A?.begin(i.draft.path),K()},onClose:()=>{P=void 0,A?.close(),E=``,K()}},`merge:${i.key}`):i&&A?n(We,{chrome:e.props.chrome,file:i.file,oldFile:i.oldFile,initialMode:i.mode,sessionKey:i.key,comments:c.ready?{...g,onCreate:c.snapshot.capabilities.create?e=>mt(e,!0):void 0}:void 0,commentRevision:i.draft.baseRevision,baselineLabel:i.baselineLabel,dirty:$(i.draft),saving:i.saving,conflict:i.conflict,reviewingConflict:!!i.latest,status:i.status,error:i.error,storageWarning:k?.warning??``,preferences:j,theme:ie,workerPool:S?.pool,onChange:A.change,onSave:()=>{A?.save()},onClose:()=>{A?.close(),E=``,K()},onDiscard:()=>{A?.discard()},onDownload:dt,onCheckLatest:()=>{A?.checkLatest()},onAcceptMerge:A.acceptMerge,onPreferences:ut},i.key):n(xe,{chrome:e.props.chrome,path:e.props.path,repository:e.props.repository,contextKey:q(),view:s.view,position:J(),document:C?l:null,source:C?I:null,comments:c.ready?g:void 0,snapshot:u,diffs:C?f:[],failures:m,loading:v||!C,error:_,history:y,historyOpen:b,historyLoading:ne,historyError:x,theme:ie,workerPool:S?.pool,onEdit:a.files.edit&&A&&e.props.path&&!F?lt:void 0,onReviewAction:M?e=>{M?.prepare(e)}:void 0,onReviewUndo:M?()=>{M?.recoveries()}:void 0,onResolve:e=>{ft(e)},editLabel:e.props.path&&k?.get(e.props.path)&&$(k.get(e.props.path))?t(`app.client.projectFileReview.resumeDraft`):t(`app.client.projectFileReview.editFile`),onChange:tt,onPosition:Xe,onSelect:at,onPage:e=>{Xe({...Ke(),page:e},!0)},onRetry:()=>{rt()},onHistory:()=>{b=!b,b?O=``:w?.abort(),K()},onHistoryPage:e=>{it(e)},onHistoryRevision:ct,onCopyLink:async t=>{let n=t.selection?.path??e.props.path,r=u?.comparison.mode===`commits`?{...s.view,...u.comparison}:s.view,i=et(n,r,t);await navigator.clipboard.writeText(new URL(i,window.location.origin).href)}}),L&&c.ready?n(N,{threads:c.snapshot.threads.filter(Le),renderThreadLinks:e=>n(ot,{part:`links`,project:a,thread:e,canLink:c.snapshot.capabilities.link,busy:c.busy,onChange:async()=>{await c.load(),await c.loadThread(e.id,!0)}}),renderThreadActions:e=>n(r,{children:[n(st,{thread:e,canMake:c.snapshot.capabilities.link&&a.storage.work?.state===`ready`,busy:c.busy,onMake:c.makeTask}),n(ot,{part:`action`,project:a,thread:e,canLink:c.snapshot.capabilities.link,busy:c.busy,onChange:async()=>{await c.load(),await c.loadThread(e.id,!0)}})]}),capabilities:c.snapshot.capabilities,selected:R,currentPath:e.props.path,locations:Ce,draft:z,loaded:c.loaded,busy:c.busy,now:c.now,error:ve||c.error,onSelect:e=>pt(e),onCloseThread:()=>{R=void 0,K()},onClose:qe,onWrite:c.write,viewerId:c.viewer?.id,onDelete:(e,t)=>c.remove(e.id,t),onCreate:ht,onCancelDraft:()=>{z=void 0,K()},onReload:()=>{c.load()},onSync:c.snapshot.capabilities.sync?()=>{c.sync().catch(()=>{})}:void 0,onOriginal:e=>pt(e,!0),onCopyLink:e=>navigator.clipboard.writeText(new URL(Ge(e.id),window.location.origin).href)}):null,M?.state?n(be,{state:M.state,theme:ie,onApply:()=>{M?.apply()},onClose:M.close,onUndo:e=>{M?.prepare({kind:`undo`,recoveryId:e})},onRecoveries:()=>{M?.recoveries()}}):null]})}}function rn(e){return e instanceof Error?e.message:t(`app.client.projectFiles.couldNotLoadProjectFiles`)}function an(e,t,n){let r=new URLSearchParams({includeIgnored:String(t.includeIgnored),includeDotfiles:`true`});return Promise.all([Q(`${W.filesApi.index.href()}?${r}`,e,n,u),Q(W.fileReviewApi.repository.href(),e,n,v)])}async function on(e,t,n){let r;try{r=Ee(B(`bud:files:${e.id}:v1`),e.id)}catch{r=fe(e.id)}let i=he(n,e.id);i.explicit&&(r=V(r,i.path));let a=await Je(e),o=G(a);if(o&&o.includeIgnored===r.includeIgnored){let{index:e,repository:t}=o;return r=me(r,null,e,t),{view:r,index:e,repository:t,error:``,store:a,stored:!0}}try{let[n,i]=await an(e.token,r,t);return await Fe(a,n,i,r.includeIgnored),{view:me(r,null,n,i),index:n,repository:i,error:``,store:a,stored:!1}}catch(e){return t.throwIfAborted(),{view:r,index:null,repository:null,error:rn(e),store:a,stored:!1}}}function sn(e){let r=e.props.project,{view:a,index:o,repository:s,error:c,store:l}=e.props.initial,u=()=>{let e=G(l);if(!e||e.includeIgnored!==a.includeIgnored)return;let t=a.selected,n=a.selected!==null&&d(a.selected);a=me(a,n?null:o,e.index,e.repository),o=e.index,s=e.repository,t!==a.selected&&N(!0),j()};function d(e){try{return Ht(r.id,jt).dirty.some(t=>t.path===e)}catch{return!1}}let p=[l.listings.subscribeChanges(u),l.files.subscribeChanges(u),l.repositories.subscribeChanges(u)],h=!1,g=e.props.href,v,ee=!1,y=``,te,b,x,re=!1,ae=!1,S=!1,C=!1,w=!1,ce=0,T=!1,le=0,ue,E=[],de=!1,D=$t({signal:e.signal,onChange:j,request:(e,t)=>Q(`${W.fileSearchApi.search.href()}?${Qt(e)}`,r.token,t,se)});function O(){D.cancel(``),T=!1,j()}let fe=wt(),pe=at({store:Je(r),token:r.token,signal:e.signal,onChange:j}),ge,k={},A=Ot({signal:e.signal,index:()=>o,guards:fe,onChange(){A.state?.phase===`applying`&&(te?.abort(),C=!0),j()},transport:{prepare:(e,t)=>Q(W.fileMutationsApi.prepare.href(),r.token,t,ne,fetch,{body:e}),apply:(e,t)=>Q(W.fileMutationsApi.apply.href(),r.token,t,ie,fetch,{body:{id:e.id,revision:e.revision}}),recoveries:e=>Q(W.fileMutationsApi.recoveries.href(),r.token,e,m)},async onApplied(e,n){a=Y(a,e.kind,n);let r=n.items.filter(e=>e.status===`applied`).length;r?_.success(t(`app.client.projectFiles.fileActionsCompleted`,{count:r}),{description:n.recoveryId?t(`app.client.projectFiles.originalContentsAvailableInRecovery`):void 0}):_.error(t(`app.client.projectFiles.fileActionCouldNotBeApplied`),{description:t(`app.client.projectFiles.projectWasRefreshed`)}),N(!0),M(),w=!0,await R(!0),C=!1},async onUncertain(){w=!0,await R(!0),C=!1}});function j(){e.signal.aborted||e.update()}function M(){clearTimeout(b),b=setTimeout(()=>ye(`bud:files:${r.id}:v1`,JSON.stringify(a)),200)}function N(t){let n=$e(null),i=K(window.location.href)===e.props.conversation?.id;if(!e.props.active||!i&&window.location.pathname!==n&&!window.location.pathname.startsWith(`${n}/`)){ee=!0;return}if(ee=!1,i&&t)return;let o=Me(i?e.props.href:window.location.href,r.id),s=o?.view.mode&&o.view.mode!==`source`?et(a.selected,{...Ve(),...o.view}):$e(a.selected);window.location.pathname+window.location.search+window.location.hash!==s&&(v=new URL(s,window.location.origin).href,window.history[t?`replaceState`:`pushState`]({...window.history.state,budFile:a.selected},``,s))}function P(e){let t={...a,...e},n=t.includeIgnored!==a.includeIgnored;a=t,M(),j(),n&&B()}function I(e,t){let n=a.selected;a=V(a,e,t),y=``,M(),n!==e&&N(!1),j()}function L(e){if(E.includes(e)){I(e,[e]),_(t(`app.client.projectFiles.saveOrDiscardDraftToCloseTab`)),j();return}let n=a.selected;a=Te(a,e),M(),n!==a.selected&&N(!1),j()}async function R(t=!1){if(!t&&A.state?.phase===`applying`||ae){S=!0;return}ae=!0,h=!0,c=``;let n=new AbortController;te=n;let i=AbortSignal.any([e.signal,n.signal]);j();try{let[e,t]=await an(r.token,a,i);if(i.aborted)return;let n=a.selected;a=me(a,o,e,t),o=e,s=t,await Fe(l,e,t,a.includeIgnored),M(),n!==a.selected&&N(!0),w&&ce++,w=!1}catch(e){i.aborted||(c=rn(e))}finally{n.abort(),ae=!1,h=!1,j(),S&&!e.signal.aborted&&(S=!1,B())}}function B(){clearTimeout(x),x=setTimeout(()=>{R()},100)}async function be(){if(h)return;let t=new AbortController;try{await Q(W.filesApi.refresh.href(),r.token,AbortSignal.any([e.signal,t.signal]),oe),w=!0,await R()}catch(t){e.signal.aborted||(c=rn(t),j())}finally{t.abort()}}let xe=i((t,n)=>{if(re)return;re=!0;let i=he(e.props.href,r.id);H(i.foreign),!i.foreign&&(i.explicit?i.path!==a.selected:!a.selected)&&N(!0),M();let o=tt(r.token).subscribe(`files`,{onEvent(e){let t=f(e);if(w=!0,C)S=!0;else{if(t.change.reset||ae||a.includeIgnored)return B();Ne(l,t).then(()=>{ce++,w=!1,j()})}},onResync(){w=!0,B()}});e.props.initial.stored&&B(),pe.load(),n.addEventListener(`abort`,()=>{o();for(let e of p)e.unsubscribe();te?.abort(),clearTimeout(b),clearTimeout(x),ye(`bud:files:${r.id}:v1`,JSON.stringify(a))},{once:!0})});function H(e){y=e?t(`app.client.projectFiles.fileLinkBelongsToAnotherProject`):``}return()=>{if(g!==e.props.href){if(g=e.props.href,v!==g){ee=!1;let e=he(g,r.id);e.explicit&&(a=V(a,e.path)),H(e.foreign)}v=void 0}return ee&&e.props.active&&e.queueTask(()=>N(!0)),ge!==pe.version&&(ge=pe.version,k=Ye(pe.snapshot.threads)),n(`div`,{class:`relative h-full min-h-0 ${de?`md:pe-80`:``}`,mix:xe,children:[n(_e,{projectName:r.name,view:a,index:o,repository:s,loading:h,error:c,notice:y,commentCounts:k,dirty:E,onViewChange:P,onSelect:I,onCloseTab:L,onSearch:()=>{T=!0,j()},onRefresh:()=>{be()},mutations:r.files.edit?{busy:A.busy,open:e=>A.open(e),move:(e,t)=>A.open({action:t===`rename`?`rename`:`move`,paths:e.map(e=>e.path),entries:e},!0),recoveries:()=>A.recoveries()}:void 0,sidebar:T?n(F,{...D.state,onSearch:e=>{D.search(e)},onCancel:()=>D.cancel(),onClose:O,onSelect:e=>{ue={id:++le,match:e},I(e.path,[e.path]),window.matchMedia(`(min-width: 768px)`).matches||O()}}):void 0,content:t=>n(nn,{project:r,href:e.props.href,path:a.selected,repository:s,refresh:ce,store:l,chrome:t,onSelect:e=>I(e,[e]),onComments:e=>{de=e,j()},onDrafts:e=>{e.join(`\0`)!==E.join(`\0`)&&(E=e,j())},registerDraftGuard:fe.register,comments:pe,conversation:e.props.conversation,searchSelection:ue})}),A.state?n(ve,{state:A.state,onDestination:A.destination,onSubmit:()=>{A.submit()},onClose:A.close,onRecovery:A.recoveries}):null,A.recovery.open?n(z,{recoveries:A.recovery.recoveries,loading:A.recovery.loading,error:A.recovery.error,onClose:A.closeRecoveries,onRefresh:()=>{A.refreshRecoveries()},onRestore:(e,t)=>A.open({action:`restore`,recoveryId:e,paths:t})}):null]})}}var cn=s({routes:w,load:({project:e,signal:t,url:n})=>on(e,t,n),render:(e,{project:t,url:r,active:i,conversation:a})=>n(sn,{project:t,initial:e,href:r.href,active:i,conversation:a})});export{cn as default};
|