@sma1lboy/rove 0.9.273 → 0.9.274
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/dist/cli/{chunk-1h1ejknz.js → chunk-033k4ap7.js} +1 -1
- package/dist/cli/{chunk-bmg5y8eh.js → chunk-0g3sjn8z.js} +1 -1
- package/dist/cli/{chunk-nyn1j7cf.js → chunk-16ttm9x6.js} +1 -1
- package/dist/cli/{chunk-adj65prq.js → chunk-29s67j3k.js} +2 -2
- package/dist/cli/{chunk-ajad94vy.js → chunk-2v68zaaa.js} +1 -1
- package/dist/cli/{chunk-m1n1rszx.js → chunk-2y29zrm1.js} +1 -1
- package/dist/cli/{chunk-rkn2fby6.js → chunk-4d1v6066.js} +1 -1
- package/dist/cli/{chunk-x7yxf5b5.js → chunk-5gzpq34w.js} +2 -2
- package/dist/cli/{chunk-655kt3e1.js → chunk-8h437k1q.js} +1 -1
- package/dist/cli/{chunk-xgm43xm3.js → chunk-9er68n24.js} +1 -1
- package/dist/cli/{chunk-x6xevrtz.js → chunk-b492aee1.js} +1 -1
- package/dist/cli/{chunk-fy4eyzbt.js → chunk-by6fjf7m.js} +1 -1
- package/dist/cli/{chunk-5c4vr45n.js → chunk-cpf78z3x.js} +1 -1
- package/dist/cli/{chunk-f6hgkc7g.js → chunk-dpq60qph.js} +1 -1
- package/dist/cli/{chunk-80t9z2b2.js → chunk-egpcaxwb.js} +1 -1
- package/dist/cli/{chunk-4d50eg3p.js → chunk-erx7x9xg.js} +3 -3
- package/dist/cli/{chunk-bp0en3f7.js → chunk-ewqqwtrj.js} +1 -1
- package/dist/cli/{chunk-nf3kg9rz.js → chunk-fmbv4m3y.js} +1 -1
- package/dist/cli/{chunk-8zw085pc.js → chunk-fs51wx31.js} +1 -1
- package/dist/cli/{chunk-64f3ncxx.js → chunk-g3tv8kht.js} +1 -1
- package/dist/cli/{chunk-vw34sdkk.js → chunk-g9yba5vh.js} +1 -1
- package/dist/cli/{chunk-63t3sh8c.js → chunk-gryq2vgw.js} +1 -1
- package/dist/cli/{chunk-qd72kqg9.js → chunk-kyt9ytz2.js} +1 -1
- package/dist/cli/{chunk-98s0fhmv.js → chunk-m4dvx7bd.js} +1 -1
- package/dist/cli/{chunk-jcrg7pjv.js → chunk-m6yy3qc1.js} +1 -1
- package/dist/cli/{chunk-fkn6z4yq.js → chunk-mxgtz5vz.js} +1 -1
- package/dist/cli/{chunk-zxkjpfp5.js → chunk-nzbq51h9.js} +1 -1
- package/dist/cli/{chunk-k9zarq1x.js → chunk-p4s826r2.js} +1 -1
- package/dist/cli/{chunk-9eqh0yph.js → chunk-p6334e7v.js} +1 -1
- package/dist/cli/{chunk-qnaxnx5w.js → chunk-q6septaj.js} +1 -1
- package/dist/cli/{chunk-sap4tggv.js → chunk-qe7xb4rm.js} +1 -1
- package/dist/cli/{chunk-ms92andd.js → chunk-qs1r0tqr.js} +1 -1
- package/dist/cli/{chunk-a4x8h7zv.js → chunk-r77pfw4m.js} +1 -1
- package/dist/cli/{chunk-jbdg5ggt.js → chunk-sa48rtjz.js} +1 -1
- package/dist/cli/{chunk-1n7tcq6a.js → chunk-sbds7zx4.js} +1 -1
- package/dist/cli/{chunk-f5fk30x1.js → chunk-t5y8k772.js} +1 -1
- package/dist/cli/{chunk-k5k2jpxk.js → chunk-tw9w8pzg.js} +2 -2
- package/dist/cli/{chunk-6d3espha.js → chunk-vht2e44j.js} +1 -1
- package/dist/cli/{chunk-w2xdmnnf.js → chunk-vm551pxs.js} +1 -1
- package/dist/cli/{chunk-ra18rjj4.js → chunk-w09356fj.js} +1 -1
- package/dist/cli/{chunk-qsqde2kj.js → chunk-w9cdc97q.js} +1 -1
- package/dist/cli/{chunk-wqvmvgaf.js → chunk-xbwq4bc0.js} +1 -1
- package/dist/cli/{chunk-jwta8rp8.js → chunk-y5axx6ev.js} +1 -1
- package/dist/cli/{chunk-bm0qe5gy.js → chunk-ypd337d0.js} +2 -2
- package/dist/cli/index.js +4 -4
- package/dist/cli/rove.js +1 -1
- package/dist/web/assets/{index-Bc0LgdLr.js → index-C9vaSoIJ.js} +2 -2
- package/dist/web/index.html +1 -1
- package/package.json +3 -3
|
@@ -17,7 +17,7 @@ Error generating stack: `+e.message+`
|
|
|
17
17
|
`),[i,a]=(0,g.useState)(null);return(0,g.useEffect)(()=>{let t=!0,r=e.client,i=e=>r.request(e).then(e=>e.repos).catch(()=>[]);return Promise.all([i(`repos.list`),i(`issue.repos`)]).then(([e,t])=>sf(e,n,t)).then(e=>Promise.all(e.map(e=>r.request(`issue.list`,{repo:e}).catch(t=>({repoRoot:e,nextId:1,issues:[],readError:rf(t)}))))).then(e=>{t&&a([...e].sort((e,t)=>e.repoRoot.localeCompare(t.repoRoot)))}),()=>{t=!1}},[e,t,r]),i}function cp(e){let{issue:t}=e,n=t.body.trim();return(0,B.jsxs)(`div`,{"data-issue":t.id,className:`kb-card ${e.selected?`is-selected`:``} ${e.column===`done`?`is-done`:``} ${e.badge?.tone===`tone-attention`?`is-attention`:``}`,onClick:()=>e.selected?e.onOpen():e.onSelect(),onContextMenu:t=>{t.preventDefault(),e.onMenu(t.clientX,t.clientY)},children:[(0,B.jsxs)(`div`,{className:`kb-card-head`,children:[(0,B.jsx)(`span`,{className:`kb-card-title`,children:t.title}),(0,B.jsxs)(`span`,{className:`muted mono`,children:[`#`,t.id]})]}),(0,B.jsx)(`div`,{className:`kb-card-body muted`,children:n}),(0,B.jsxs)(`div`,{className:`kb-card-foot mono muted`,children:[(0,B.jsx)(`span`,{children:t.created}),e.badge&&(0,B.jsx)(`span`,{className:e.badge.tone,children:e.badge.label})]})]})}var lp=5e3,up=760;function dp({model:e}){let{kanban:t,group:n,common:r}=tf(),[i,a]=uf(lp),o=sp(e,i),{engines:s,defaultEngine:c}=op(e),l=v(e.tasks),u=lf(e),[d,f]=(0,g.useState)(null),[p,m]=(0,g.useState)(null),h=pf(),[_,y]=(0,g.useState)(!1);(0,g.useEffect)(()=>{let e=h.current;if(!e)return;let t=new ResizeObserver(()=>y(e.clientWidth<up));return t.observe(e),()=>t.disconnect()},[h]);let b=o??[],x=u?b.find(e=>e.repoRoot.replace(/^\/private\//,`/`)===u.replace(/^\/private\//,`/`)):void 0,S=Math.max(0,b.findIndex(e=>e.repoRoot===(d??x?.repoRoot))),C=b[S],w=b.map(e=>e.repoRoot),T=b.filter(e=>e.readError).map(e=>`${e.repoRoot}\0${e.readError}`).join(`
|
|
18
18
|
`);(0,g.useEffect)(()=>{for(let e of b)e.readError&&U(nf(t.readFailedToast,{repo:of(e.repoRoot,w),error:e.readError}),`error`)},[T]);let E=l?.tasks??[],D=new Set(E.map(e=>e.id)),O=e=>E.find(t=>t.id===e)?.group,{columns:k,attentionCount:ee}=Vf(C?Uf(C.issues,D.size===0?void 0:e=>D.has(e)):[],e=>O(e)===`waiting-on-you`),A={backlog:t.column.backlog,in_progress:t.column.inProgress,parked:t.column.parked,done:t.column.done},j=(e,t)=>{let r=e.taskId&&(t===`in_progress`||t===`parked`)?O(e.taskId):void 0,i=r===`waiting-on-you`?n.waitingOnYou:r===`landing`?n.landing:r===`ready-for-review`?n.readyForReview:r===`working`?n.working:null;return r&&i?{label:i,tone:ap[r]??`muted`}:null},M=async(t,n,r,i)=>{try{return await e.client.request(t,{repo:C?.repoRoot,...n})}catch(e){return U(nf(r,{id:String(i),error:rf(e)}),`error`),null}finally{a()}},N=(e,n)=>M(`issue.setStatus`,{id:e.id,status:n},t.statusFailed,e.id),P=t=>{H.set(null),e.select(t)},F=async(n,r,i)=>{try{let a=await $f(e.client,{repo:n,issue:r,engine:i.engine,placement:i.placement});for(let e of a.warnings)U(nf(e.kind===`link`?t.linkFailed:t.statusFailed,{id:String(r.id),error:e.error}),`error`);i.jump?(H.set(null),e.selectWhenListed(a.taskId),a.tabId&&await e.refreshTabsNow().then(()=>e.select(a.taskId,a.tabId))):U(nf(t.detail.startedBackground,{title:`#${r.id} ${r.title}`}))}catch(e){U(Ee(e),`error`)}finally{a()}},I=async(e,n)=>{if(!C||n.kind===`create`)return;let r={};n.title!==e.title&&(r.title=n.title),n.body!==e.body&&(r.body=n.body),(r.title!==void 0||r.body!==void 0)&&await M(`issue.update`,{id:e.id,...r},t.updateFailed,e.id),n.status!==e.status&&await N(e,n.status),n.kind===`open`?P(n.taskId):n.kind===`unlink`?await M(`issue.update`,{id:e.id,task:`none`},t.unlinkFailed,e.id):n.kind===`start`&&await F(C.repoRoot,{...e,...r},n)},te=t=>{C&&(m(t.id),V.set((0,B.jsx)(ip,{model:e,issue:t,mode:`detail`,engines:s,defaultEngine:c,onOutcome:e=>void I(t,e)})))},ne=()=>{if(!C)return;let n=C.repoRoot,r={id:C.nextId,title:``,status:`open`,created:new Date().toISOString().slice(0,10),body:``};V.set((0,B.jsx)(ip,{model:e,issue:r,mode:`create`,engines:s,defaultEngine:c,onOutcome:i=>{i.kind===`create`&&(async()=>{try{let t=await e.client.request(`issue.create`,{repo:n,title:i.title,body:i.body});if(a(),!i.start)return;let o=t.issues.find(e=>e.id===r.id)??t.issues.reduce((e,t)=>e&&e.id>t.id?e:t,null);o&&await F(n,o,i.start)}catch(e){U(nf(t.createFailed,{error:rf(e)}),`error`)}})()}}))},re=()=>{let n=C?.issues.find(e=>e.id===p);if(!C||!n)return;let i=C.repoRoot;V.set((0,B.jsx)(Ae,{title:nf(t.confirmDelete.title,{id:String(n.id)}),body:nf(t.confirmDelete.body,{title:n.title}),confirmLabel:r.confirm,onConfirm:async()=>{try{await e.client.request(`issue.delete`,{repo:i,id:n.id}),m(null)}catch(e){U(nf(t.deleteFailed,{id:String(n.id),error:rf(e)}),`error`)}finally{a()}}}))},ie=e=>{b.length!==0&&(f(b[(S+e+b.length)%b.length]?.repoRoot??null),m(null))},R=e=>{let t=zf(k,p,e);t!=null&&m(t)},z=e=>k.some(e=>e.issues.length>0)?R(e):ie(e===`left`?-1:1);ff(e=>{if(e.ctrlKey)return e.key===`c`&&(H.set(null),!0);switch(e.key){case`Escape`:case`q`:return H.set(null),!0;case`r`:return a(),!0;case`Tab`:return ie(e.shiftKey?-1:1),!0;case`ArrowUp`:return R(`up`),!0;case`ArrowDown`:return R(`down`),!0;case`ArrowRight`:case`l`:return z(`right`),!0;case`ArrowLeft`:case`h`:return z(`left`),!0;case`Enter`:{let e=C?.issues.find(e=>e.id===p);return e&&te(e),!0}case`n`:return ne(),!0;case`d`:return re(),!0;default:return!1}});let ae=(0,g.useRef)(null);(0,g.useEffect)(()=>{ae.current?.querySelector(`[data-issue="${p}"]`)?.scrollIntoView({block:`nearest`})},[p]);let oe=(e,n,r)=>{m(e.id),le.set({x:n,y:r,items:np.filter(t=>t!==e.status).map(n=>({label:nf(t.menu.setStatus,{status:t.detail.status[n]}),run:()=>void N(e,n)}))})},se=k.find(e=>e.issues.some(e=>e.id===p))??k.find(e=>e.issues.length>0)??k[0],ce=(e,n)=>(0,B.jsxs)(`section`,{className:`kb-lane kb-lane-${e.key}`,children:[n&&(0,B.jsxs)(`h2`,{className:`kb-lane-head`,children:[(0,B.jsxs)(`span`,{children:[A[e.key],` (`,e.issues.length+e.hiddenCount,`)`]}),e.key===`in_progress`&&ee>0&&(0,B.jsx)(`span`,{className:`tone-warning`,children:nf(t.attention,{count:String(ee)})})]}),(0,B.jsxs)(`div`,{className:`kb-cards`,children:[e.issues.map(t=>(0,B.jsx)(cp,{issue:t,column:e.key,selected:t.id===p,badge:j(t,e.key),onSelect:()=>m(t.id),onOpen:()=>te(t),onMenu:(e,n)=>oe(t,e,n)},t.id)),e.issues.length===0&&e.hiddenCount===0&&(0,B.jsx)(`p`,{className:`muted mono`,children:t.columnEmpty}),e.hiddenCount>0&&(0,B.jsx)(`p`,{className:`muted mono`,children:nf(t.more,{count:String(e.hiddenCount)})})]})]},e.key);return(0,B.jsxs)(`div`,{className:`page kb-page`,tabIndex:0,ref:h,children:[(0,B.jsxs)(`div`,{className:`kb-top`,children:[(0,B.jsx)(`h1`,{className:`page-title`,children:t.title}),(0,B.jsx)(`span`,{className:`muted mono kb-hint-line`,children:t.hint}),(0,B.jsxs)(`span`,{className:`pg-actions mono`,children:[(0,B.jsx)(`button`,{type:`button`,className:`link`,disabled:!C,onClick:ne,children:L(`pages.new`)}),(0,B.jsx)(`button`,{type:`button`,className:`link`,disabled:!C?.issues.some(e=>e.id===p),onClick:re,children:L(`pages.delete`)})]})]}),o===null?(0,B.jsx)(`p`,{className:`muted`,children:t.loading}):C?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`div`,{className:`kb-project`,children:[(0,B.jsxs)(`button`,{type:`button`,className:`kb-project-name`,onClick:()=>ie(1),children:[of(C.repoRoot,w),b.length>1&&(0,B.jsx)(`span`,{className:`muted`,children:` ${S+1}/${b.length}`})]}),!_&&(0,B.jsx)(`span`,{className:`muted mono kb-project-path`,children:C.repoRoot}),C.issues.length===0&&!C.readError&&(0,B.jsx)(`span`,{className:`muted kb-empty`,children:t.empty})]}),C.readError?(0,B.jsx)(`p`,{className:`error`,children:nf(t.readFailed,{error:C.readError})}):_&&se?(0,B.jsxs)(`div`,{className:`kb-single`,ref:ae,children:[(0,B.jsx)(`div`,{className:`kb-strip mono`,children:k.map(e=>(0,B.jsxs)(`button`,{type:`button`,className:e.key===se.key?`is-active`:`muted`,onClick:()=>{let t=e.issues[0];t&&m(t.id)},children:[A[e.key],` (`,e.issues.length+e.hiddenCount,`)`]},e.key))}),ce(se,!1)]}):(0,B.jsx)(`div`,{className:`kb-board`,ref:ae,children:k.map(e=>ce(e,!0))})]}):(0,B.jsx)(`p`,{className:`muted`,children:t.noRepos})]})}var fp={title:`Mods`,empty:`No mod is drawing anything.`,emptyHint:`A plugin with a [mod] entry draws its panes here, in the TUI and the web alike.`,keys:`↑↓/tab move · enter press · esc back`,pressFailed:`{plugin}: the press did not reach the mod ({reason})`},pp={title:`Mods`,empty:`当前没有 mod 在绘制内容。`,emptyHint:`声明了 [mod] 的插件会在这里绘制面板,TUI 和 web 显示的是同一份。`,keys:`↑↓/tab 移动 · enter 按下 · esc 返回`,pressFailed:`{plugin}:按键没有送达 mod({reason})`},mp=[0,6,12,20];function hp(e){return`mod-${e.kind}:${e.plugin}/${e.pane}/${e.key}`}function gp(e){let[t,n]=(0,g.useState)(e.value??``);return(0,B.jsx)(`form`,{className:`mod-field`,onSubmit:r=>{r.preventDefault(),e.onSubmit(t),n(e.value??``)},children:(0,B.jsx)(`input`,{id:e.id,className:`input`,spellCheck:!1,value:t,placeholder:e.placeholder,onFocus:e.onFocus,onChange:e=>n(e.target.value)})})}function _p(e){let{node:t}=e;if(t.type===`text`){let e=`mod-text${t.tone?` tone-${t.tone}`:``}${t.bold?` is-bold`:``}`;return(0,B.jsx)(`span`,{className:e,children:t.text})}if(t.type===`input`){let n={kind:`input`,plugin:e.pane.plugin,pane:e.pane.id,key:t.key};return(0,B.jsx)(gp,{id:hp(n),placeholder:t.placeholder,value:t.value,onFocus:()=>e.onFocus(n),onSubmit:t=>e.onSubmit(n,t)},t.value??``)}if(t.type===`button`){let n={kind:`button`,plugin:e.pane.plugin,pane:e.pane.id,key:t.key};return(0,B.jsx)(`button`,{type:`button`,id:hp(n),className:`mod-button tone-${t.tone??`info`}${Gt(n,e.cursor)?` is-cursor`:``}`,onFocus:()=>e.onFocus(n),onClick:()=>e.onPress(n),children:t.label})}return(0,B.jsx)(`div`,{className:`mod-box${t.direction===`row`?` is-row`:``}${t.border?` is-framed`:``}`,style:{flexDirection:t.direction??`column`,gap:mp[t.gap??0],padding:mp[t.padding??0]},children:t.children.map((t,n)=>(0,B.jsx)(_p,{...e,node:t},n))})}function vp({model:e}){let t=z()===`zh`?pp:fp,n=v(e.mods),r=Wt(n),[i,a]=(0,g.useState)(null),o=Kt(r,i),s=pf(),c=(0,g.useRef)(!1),l=(t,n,r={})=>{a(t),!c.current&&(c.current=!0,e.client.request(n,{plugin:t.plugin,pane:t.pane,key:t.key,...r}).catch(e=>U(e instanceof Error?e.message:String(e),`error`)).finally(()=>{c.current=!1}))},u=e=>l(e,`mod.press`),d=(e,t)=>l(e,`mod.submit`,{value:t}),f=e=>{let t=qt(r,o,e);a(t),t&&document.getElementById(hp(t))?.focus()};return ff(e=>{if(e.ctrlKey)return e.key===`c`&&(H.set(null),!0);switch(e.key){case`Escape`:case`q`:return H.set(null),!0;case`ArrowDown`:return f(1),!0;case`ArrowUp`:return f(-1),!0;case`Enter`:return e.target instanceof HTMLButtonElement?!1:(o?.kind===`button`&&u(o),!0);default:return!1}}),(0,B.jsxs)(`div`,{className:`page mods-page`,tabIndex:0,ref:s,children:[(0,B.jsxs)(`div`,{className:`pg-top`,children:[(0,B.jsx)(`h1`,{className:`page-title`,children:t.title}),(0,B.jsx)(`span`,{className:`pg-hint muted keys-only`,children:t.keys})]}),n.length===0?(0,B.jsxs)(`div`,{className:`mods-empty`,children:[(0,B.jsx)(`p`,{children:t.empty}),(0,B.jsx)(`p`,{className:`muted`,children:t.emptyHint})]}):n.map(e=>(0,B.jsxs)(`section`,{className:`mod-pane`,children:[(0,B.jsxs)(`header`,{className:`mod-pane-title`,children:[e.title,` `,(0,B.jsxs)(`span`,{className:`muted`,children:[`· `,e.plugin]})]}),(0,B.jsx)(_p,{node:e.tree,pane:e,cursor:o,onPress:u,onSubmit:d,onFocus:a})]},`${e.plugin}/${e.id}`))]})}function yp(e){return e===`dispatch_failed`||e===`skipped_unavailable`||e===`script_failed`}function bp(e,t){return e.response?`responded`:e.status!==`dispatched`&&e.status!==`revived`?null:e.deliveryStatus===`missing`?`missing`:e.deliveryStatus===`awaiting`?`awaiting`:t-Date.parse(e.at)>72e5?`missing`:`awaiting`}var xp=6e4,Sp=3294,Cp=new Map([[`JAN`,1],[`FEB`,2],[`MAR`,3],[`APR`,4],[`MAY`,5],[`JUN`,6],[`JUL`,7],[`AUG`,8],[`SEP`,9],[`OCT`,10],[`NOV`,11],[`DEC`,12]]),wp=new Map([[`SUN`,0],[`MON`,1],[`TUE`,2],[`WED`,3],[`THU`,4],[`FRI`,5],[`SAT`,6]]),Tp=256;function Ep(e,t,n){let r=e.toUpperCase(),i=t?.get(r);if(i!==void 0)return i;if(!/^\d+$/.test(r))throw Error(`invalid cron ${n}: ${e}`);return Number(r)}function Dp(e){let t=new Set;for(let n of e.value.split(`,`)){if(n.length===0)throw Error(`invalid cron ${e.field}: ${e.value}`);let[r,i,...a]=n.split(`/`);if(a.length>0||r===void 0)throw Error(`invalid cron ${e.field}: ${n}`);let o=1;if(i!==void 0&&(!/^\d+$/.test(i)||(o=Number(i),o<1)))throw Error(`invalid cron ${e.field} step: ${n}`);let s,c;if(r===`*`)s=e.min,c=e.max;else if(r.includes(`-`)){let[t,i,...a]=r.split(`-`);if(a.length>0||t===void 0||i===void 0)throw Error(`invalid cron ${e.field} range: ${n}`);s=Ep(t,e.names,e.field),c=Ep(i,e.names,e.field)}else s=Ep(r,e.names,e.field),c=i===void 0?s:e.max;if(s<e.min||c>e.max||s>c)throw Error(`cron ${e.field} out of range: ${n}`);for(let n=s;n<=c;n+=o)t.add(e.normalize?e.normalize(n):n)}return t}function Op(e){if(e.length>Tp)throw Error(`cron expression is too long`);let t=e.trim().split(/\s+/).filter(Boolean);if(t.length!==5)throw Error(`cron expression needs 5 fields (minute hour day month weekday), got ${t.length}`);let[n,r,i,a,o]=t;return{minutes:Dp({value:n,min:0,max:59,field:`minute`}),hours:Dp({value:r,min:0,max:23,field:`hour`}),daysOfMonth:Dp({value:i,min:1,max:31,field:`day-of-month`}),months:Dp({value:a,min:1,max:12,field:`month`,names:Cp}),daysOfWeek:Dp({value:o,min:0,max:7,field:`weekday`,names:wp,normalize:e=>e%7}),dayOfMonthRestricted:!i.startsWith(`*`),dayOfWeekRestricted:!o.startsWith(`*`)}}function kp(e){try{return Op(e),!0}catch{return!1}}function Ap(e,t,n){return new Date(e.year,e.month-1,e.day,t,n,0,0).getTime()}function jp(e){let t=new Date(e);return{year:t.getFullYear(),month:t.getMonth()+1,day:t.getDate()}}function Mp(e,t){return jp(new Date(e.year,e.month-1,e.day+t,12,0,0,0).getTime())}function Np(e,t){if(!e.months.has(t.month))return!1;let n=e.daysOfMonth.has(t.day),r=e.daysOfWeek.has(new Date(t.year,t.month-1,t.day).getDay());return e.dayOfMonthRestricted&&e.dayOfWeekRestricted?n||r:n&&r}function Pp(e){return e-e%xp}function Fp(e,t){return[...e].sort((e,n)=>(e-n)*t)}function Ip(e,t){let n=Op(e),r=Fp(n.hours,1),i=Fp(n.minutes,1),a=new Date(Pp(t)+xp),o=jp(a.getTime()),s=a.getHours(),c=a.getMinutes();for(let e=0;e<Sp;e++){if(Np(n,o)){for(let e of r)if(!(e<s))for(let n of i){if(e===s&&n<c)continue;let r=Ap(o,e,n);if(r>t)return r}}o=Mp(o,1),s=0,c=0}throw Error(`cron expression never matches: ${e}`)}var Lp=[`minute`,`hour`,`dayOfMonth`,`month`,`dayOfWeek`];function Rp(e){let t=e.trim().split(/\s+/).filter(Boolean);return Lp.map((e,n)=>t[n]??`*`)}function zp(e){return Lp.map((t,n)=>e[n]??`*`).join(` `)}var Bp=[`*`,`*/5`,`*/10`,`*/15`,`*/30`,...Kp(0,59)],Vp=[`*`,`*/2`,`*/3`,`*/4`,`*/6`,`*/12`,...Kp(0,23)],Hp=[`*`,...Kp(1,31)],Up=[`*`,`JAN`,`FEB`,`MAR`,`APR`,`MAY`,`JUN`,`JUL`,`AUG`,`SEP`,`OCT`,`NOV`,`DEC`],Wp=[`*`,`MON-FRI`,`SAT,SUN`,`MON`,`TUE`,`WED`,`THU`,`FRI`,`SAT`,`SUN`],Gp=[`MON`,`TUE`,`WED`,`THU`,`FRI`,`SAT`,`SUN`];function Kp(e,t){let n=[];for(let r=e;r<=t;r++)n.push(String(r));return n}var qp={minute:Bp,hour:Vp,dayOfMonth:Hp,month:Up,dayOfWeek:Wp};function Jp(e,t,n){let r=qp[e],i=r.indexOf(t.trim().toUpperCase());return i<0?(n>0?r[0]:r[r.length-1])??t:r[(i+n+r.length)%r.length]??t}function Yp(e,t){return Math.min(Math.max(e+t,0),Lp.length-1)}function Xp(e,t,n){let r=Rp(e);return t<0||t>=Lp.length||(r[t]=n),zp(r)}function Zp(e,t){let[n,r,i,a,o]=Rp(e);if(a!==`*`||i!==`*`||n===void 0||r===void 0||o===void 0)return null;let s=Qp(n,r,t);if(!s)return null;let{at:c,bare:l}=s;if(o===`*`)return l?c:t(`automations.schedule.everyDay`,{at:c});if(o===`MON-FRI`)return t(`automations.schedule.weekdays`,{at:c});if(o===`SAT,SUN`)return t(`automations.schedule.weekends`,{at:c});let u=Gp.find(e=>e===o.toUpperCase());return u?t(`automations.schedule.onWeekday`,{weekday:t(`automations.schedule.dow.${u}`),at:c}):null}function Qp(e,t,n){return t===`*`?e===`*`?{at:n(`automations.schedule.everyMinute`),bare:!0}:e.startsWith(`*/`)?{at:n(`automations.schedule.everyMinutes`,{n:e.slice(2)}),bare:!0}:/^\d+$/.test(e)?{at:n(`automations.schedule.hourlyAt`,{minute:e.padStart(2,`0`)}),bare:!1}:null:t.startsWith(`*/`)&&e===`0`?{at:n(`automations.schedule.everyHours`,{n:t.slice(2)}),bare:!0}:/^\d+$/.test(t)&&/^\d+$/.test(e)?{at:n(`automations.schedule.atClock`,{time:`${t.padStart(2,`0`)}:${e.padStart(2,`0`)}`}),bare:!1}:null}function $p(e,t,n,r){let i=e.trim();if(!kp(i))return{kind:`invalid`};let a;try{a=Ip(i,t)}catch{return{kind:`never`}}return{kind:`ok`,nextRunMs:a,relative:em(a-t,n),absolute:tm(a,t,n,r)}}function em(e,t){let{minutes:n,hours:r,days:i}=jf(e);return n<60?t(`automations.when.inMinutes`,{n:Math.max(1,n)}):r<24?t(`automations.when.inHours`,{n:r}):t(`automations.when.inDays`,{n:i})}function tm(e,t,n,r){let i=new Date(e),a=`${String(i.getHours()).padStart(2,`0`)}:${String(i.getMinutes()).padStart(2,`0`)}`,o=new Date(t);if(i.getFullYear()===o.getFullYear()&&i.getMonth()===o.getMonth()&&i.getDate()===o.getDate())return a;let s=e-t<5184e5,c=i.toLocaleDateString(r,s?{weekday:`short`}:{weekday:`short`,month:`short`,day:`numeric`});return s?`${c} ${a}`:n(`automations.when.dateTime`,{date:c,time:a})}var nm={name:``,repo:``,prompt:``,schedule:`0 9 * * MON-FRI`};function rm(e){return e.name.trim().length>0&&(e.repo===null||e.repo.trim().length>0)&&e.prompt.trim().length>0&&(!e.target||e.target.taskId.trim().length>0&&/^tab-[\w-]+$/.test(e.target.tabId))&&kp(e.schedule.trim())}function im(e){return e.name.trim().length===0?`name`:e.repo!==null&&e.repo.trim().length===0?`repo`:e.target&&!e.target.taskId.trim()?`target`:e.target&&!/^tab-[\w-]+$/.test(e.target.tabId)?`targetTab`:e.prompt.trim().length===0?`prompt`:kp(e.schedule.trim())?null:`schedule`}function am(){let{auto:e}=tf();return(t,n)=>{let r=e;for(let e of t.replace(/^automations\./,``).split(`.`))r=r&&typeof r==`object`?Reflect.get(r,e):void 0;return typeof r==`string`?n?nf(r,n):r:t}}function om(e){let{auto:t,common:n}=tf(),r=am(),i=z()===`zh`?`zh-CN`:`en-US`,[a,o]=(0,g.useState)(()=>({...nm,repo:e.repos.find(t=>e.defaultRepo&&af(t)===af(e.defaultRepo))??e.repos[0]??null})),[s,c]=(0,g.useState)(0),[l,u]=(0,g.useState)(null),d=(0,g.useRef)({}),f=e=>t=>{d.current[e]=t};(0,g.useEffect)(()=>d.current.name?.focus(),[]);let p=e=>{o(t=>({...t,...e})),u(null)};(0,g.useEffect)(()=>{let e=e=>{e.key===`Escape`&&(e.preventDefault(),e.stopImmediatePropagation(),xe())};return window.addEventListener(`keydown`,e,{capture:!0}),()=>window.removeEventListener(`keydown`,e,{capture:!0})},[]);let m=()=>{if(rm(a)){xe(),e.onSubmit({name:a.name.trim(),repo:a.repo===null?null:a.repo.trim(),prompt:a.prompt.trim(),schedule:a.schedule.trim(),...a.target?{target:a.target}:{}});return}let n=im(a);n&&(d.current[n]?.focus(),u(Reflect.get(t.missing,n)))},h=a.repo===null?[]:e.tasks.filter(e=>af(e.repo)===af(a.repo??``)),_=a.target?h.findIndex(e=>e.id===a.target?.taskId)+1:0,v=e=>{let t=(_+e+h.length+1)%(h.length+1),n=h[t-1];p({target:n?{kind:`existing-tab`,taskId:n.id,tabId:`tab-1`}:void 0})},y=[null,...e.repos],b=e=>{let t=Math.min(Math.max(y.indexOf(a.repo)+e,0),y.length-1),n=y[t];n!==void 0&&p({repo:n,target:void 0})},x=e=>t=>{(t.key===`ArrowUp`||t.key===`ArrowDown`)&&(t.preventDefault(),e(t.key===`ArrowDown`?1:-1))},S=e=>t=>{t.key===`Enter`&&(t.preventDefault(),d.current[e]?.focus())},C=Rp(a.schedule),w=e=>{let t=Lp[s];t&&p({schedule:Xp(a.schedule,s,Jp(t,C[s]??`*`,e))})},T=e=>{if(!(e.ctrlKey||e.metaKey||e.altKey)){if(e.key===`ArrowLeft`||e.key===`h`)c(Yp(s,-1));else if(e.key===`ArrowRight`||e.key===`l`)c(Yp(s,1));else if(e.key===`ArrowUp`||e.key===`ArrowDown`)w(e.key===`ArrowUp`?1:-1);else return;e.preventDefault()}},E=$p(a.schedule,Date.now(),r,i),D=Zp(a.schedule,r);return(0,B.jsx)(`div`,{className:`overlay`,onMouseDown:e=>e.target===e.currentTarget&&xe(),children:(0,B.jsxs)(`dialog`,{open:!0,className:`dialog is-wide kb-drawer`,"aria-label":t.newTitle,children:[(0,B.jsx)(`h1`,{className:`kicker`,children:t.newTitle}),(0,B.jsxs)(`div`,{className:`dialog-body`,children:[(0,B.jsxs)(`label`,{className:`field`,children:[(0,B.jsx)(`span`,{className:`kicker`,children:t.fieldName}),(0,B.jsx)(`input`,{ref:f(`name`),className:`input`,spellCheck:!1,placeholder:t.namePlaceholder,value:a.name,onChange:e=>p({name:e.target.value}),onKeyDown:S(`repo`)})]}),(0,B.jsxs)(`div`,{className:`field`,children:[(0,B.jsxs)(`span`,{className:`kicker kb-label`,children:[t.fieldRepo,(0,B.jsx)(`span`,{className:`muted kb-hint keys-only`,children:`↑/↓`})]}),(0,B.jsx)(tp,{fieldRef:f(`repo`),kind:`list`,label:t.fieldRepo,className:`kb-places`,onKeyDown:x(b),children:y.map(t=>(0,B.jsxs)(`button`,{type:`button`,tabIndex:-1,"aria-selected":t===a.repo,className:`kb-place ${t===a.repo?`is-active`:``}`,onClick:()=>{p({repo:t,target:void 0}),d.current.repo?.focus()},children:[t===a.repo?`▸ `:` `,t===null?L(`rail.noProject`):of(t,e.repos)]},t??``))})]}),(0,B.jsxs)(`div`,{className:`field`,children:[(0,B.jsxs)(`span`,{className:`kicker kb-label`,children:[t.fieldTarget,(0,B.jsx)(`span`,{className:`muted kb-hint keys-only`,children:`↑/↓`})]}),(0,B.jsx)(tp,{fieldRef:f(`target`),kind:`list`,label:t.fieldTarget,onKeyDown:x(v),onClick:()=>v(1),children:a.target?h[_-1]?.title??a.target.taskId:t.targetFresh})]}),a.target&&(0,B.jsxs)(`label`,{className:`field`,children:[(0,B.jsx)(`span`,{className:`kicker`,children:t.fieldTargetTab}),(0,B.jsx)(`input`,{ref:f(`targetTab`),className:`input`,spellCheck:!1,value:a.target.tabId,onChange:e=>a.target&&p({target:{...a.target,tabId:e.target.value}}),onKeyDown:S(`prompt`)})]}),(0,B.jsxs)(`label`,{className:`field`,children:[(0,B.jsx)(`span`,{className:`kicker`,children:t.fieldPrompt}),(0,B.jsx)(`input`,{ref:f(`prompt`),className:`input`,spellCheck:!1,placeholder:t.promptPlaceholder,value:a.prompt,onChange:e=>p({prompt:e.target.value}),onKeyDown:S(`schedule`)})]}),(0,B.jsxs)(`div`,{className:`field`,children:[(0,B.jsxs)(`span`,{className:`kicker kb-label`,children:[t.fieldSchedule,(0,B.jsx)(`span`,{className:`muted kb-hint keys-only`,children:`←/→ ↑/↓`})]}),(0,B.jsx)(tp,{fieldRef:f(`schedule`),kind:`cells`,label:t.fieldSchedule,className:`pg-cron`,onKeyDown:T,children:Lp.map((e,n)=>(0,B.jsxs)(`button`,{type:`button`,tabIndex:-1,className:n===s?`is-active`:``,onClick:()=>{c(n),d.current.schedule?.focus()},children:[C[n]??`*`,(0,B.jsx)(`span`,{children:t.cronField[e]})]},e))}),(0,B.jsx)(`div`,{className:`pg-cron-step`,children:[-1,1].map(e=>{let n=t.cronField[Lp[s]??`minute`]??``;return(0,B.jsx)(`button`,{type:`button`,tabIndex:-1,"aria-label":L(e<0?`pages.cronDown`:`pages.cronUp`,{field:n}),onClick:()=>{w(e),d.current.schedule?.focus()},children:e<0?`−`:`+`},e)})}),E.kind===`ok`?(0,B.jsxs)(`p`,{className:`tone-success mono`,children:[D?`${D} · `:``,E.relative,` · `,E.absolute]}):(0,B.jsx)(`p`,{className:`error mono`,children:E.kind===`never`?t.cronNever:t.cronInvalid})]}),l&&(0,B.jsxs)(`p`,{className:`error`,children:[`※ `,l]}),(0,B.jsx)(`p`,{className:`muted kb-legend`,children:bi(t.composerLegend)}),(0,B.jsxs)(`div`,{className:`actions`,children:[(0,B.jsx)(`button`,{type:`button`,className:`link`,onClick:xe,children:n.cancel}),(0,B.jsx)(`button`,{ref:f(`confirm`),type:`button`,className:`button`,onClick:m,children:n.create})]})]})]})})}var sm=5e3,cm=5,lm={dispatched:`success`,revived:`success`,skipped_precheck:`muted`,skipped_cancelled:`muted`,skipped_missed:`warning`,skipped_unavailable:`warning`,dispatch_failed:`error`,ran:`success`,script_failed:`error`},um={success:`tone-success`,muted:`muted`,warning:`tone-warning`,error:`tone-attention`},dm={success:`✓`,error:`†`,warning:`!`,muted:`·`},fm=e=>lm[e]??`muted`;function pm({model:e}){let{auto:t,common:n}=tf(),r=e.client,[i,a]=uf(sm),o=v(e.tasks),s=cf(e),c=lf(e),[l,u]=(0,g.useState)(null),[d,f]=(0,g.useState)([]),[p,m]=(0,g.useState)(0),[h,_]=(0,g.useState)(null),[y,b]=(0,g.useState)(null),x=pf();(0,g.useEffect)(()=>{let e=!0;return r.request(`routine.list`).then(t=>e&&u(t)).catch(()=>e&&u(e=>e??{automations:[],keepsDaemonAlive:!1})),()=>{e=!1}},[r,i]);let S=v(fe);(0,g.useEffect)(()=>{if(S===null||!l)return;let e=l.automations.findIndex(e=>e.id===S);e>=0&&m(e),fe.set(null)},[S,l]);let C=l?.automations??[],w=l?.lastRunStatus??{},T=Math.min(p,Math.max(0,C.length-1)),E=C[T],D=C.filter(e=>{let t=w[e.id];return t!==void 0&&yp(t)}).length;(0,g.useEffect)(()=>{let e=!0;if(!E){f([]);return}return r.request(`routine.runs`,{id:E.id}).then(t=>e&&f(t.runs)).catch(()=>e&&f([])),()=>{e=!1}},[r,E?.id,i]),(0,g.useEffect)(()=>b(null),[E?.id]);let O=(0,g.useRef)(null);(0,g.useEffect)(()=>{O.current?.querySelector(`[data-row="${T}"]`)?.scrollIntoView({block:`nearest`})},[T]);let k=Date.now(),ee=e=>{let n=e?Date.parse(e):NaN;if(!Number.isFinite(n))return`—`;let r=n-k,i=r>=0,a=Math.floor(Math.abs(r)/6e4),o=Math.floor(a/60);return a<1?i?t.when.now:t.when.justNow:a<60?nf(i?t.when.inMinutes:t.when.minutesAgo,{n:a}):o<24?nf(i?t.when.inHours:t.when.hoursAgo,{n:o}):new Date(n).toLocaleDateString()},A=e=>t.runStatus[e]??e,j=e=>o?.tasks.find(t=>t.id===e)?.title??e,M=t=>{H.set(null),e.select(t)},N=(e,t,n)=>U(nf(e,{name:t,error:rf(n)}),`error`),P=async()=>{if(!(!E||h)){_(E.id);try{await r.request(`routine.setEnabled`,{id:E.id,enabled:!E.enabled}),a()}catch(e){N(E.enabled?t.disableFailed:t.enableFailed,E.name,e)}finally{_(null)}}},F=async()=>{if(!(!E||h)){_(E.id),b(nf(t.running,{name:E.name}));try{let e=await r.request(`routine.runNow`,{id:E.id});b(nf(t.ranWith,{name:E.name,status:e.status})),a()}catch(e){N(t.runFailed,E.name,e)}finally{_(null)}}},I=async()=>{if(h)return;let e=sf(await r.request(`repos.list`).then(e=>e.repos).catch(()=>[]),s);V.set((0,B.jsx)(om,{repos:e,tasks:(o?.tasks??[]).filter(e=>!e.deleting).map(e=>({id:e.id,title:e.title,repo:e.repo})),defaultRepo:c,onSubmit:e=>{(async()=>{_(`new`);try{await r.request(`routine.create`,{...e.repo===null?{}:{repo:e.repo},name:e.name,prompt:e.prompt,schedule:e.schedule,...e.target?{targetTask:e.target.taskId,targetTab:e.target.tabId}:{}}),a()}catch(e){U(nf(t.createFailed,{error:rf(e)}),`error`)}finally{_(null)}})()}}))},te=()=>{if(!E||h)return;let e=E;V.set((0,B.jsx)(Ae,{title:t.deleteTitle,body:nf(t.deleteBody,{name:e.name}),confirmLabel:t.deleteButton,onConfirm:async()=>{_(e.id);try{await r.request(`routine.delete`,{id:e.id}),a()}catch(n){N(t.deleteFailed,e.name,n)}finally{_(null)}}}))};ff(e=>{if(e.ctrlKey)return e.key===`c`&&(H.set(null),!0);switch(e.key){case`Escape`:case`q`:return H.set(null),!0;case`j`:case`ArrowDown`:return m(Math.min(C.length-1,T+1)),!0;case`k`:case`ArrowUp`:return m(Math.max(0,T-1)),!0;case`n`:return I(),!0;case`r`:return a(),!0;case`e`:return P(),!0;case`s`:return F(),!0;case`d`:return te(),!0;case`Enter`:{let e=d[0]?.taskId;return e?M(e):d.length>0&&b(t.latestRunNoTask),!0}default:return!1}});let ne=E?.target;return(0,B.jsxs)(`div`,{className:`page`,tabIndex:0,ref:x,children:[(0,B.jsxs)(`div`,{className:`pg-top`,children:[(0,B.jsx)(`h1`,{className:`page-title`,children:t.title}),(0,B.jsxs)(`span`,{className:`pg-actions mono`,children:[D>0&&(0,B.jsx)(`span`,{className:`tone-attention`,children:nf(t.needAttention,{count:String(D),total:String(C.length)})}),(0,B.jsx)(`span`,{className:l?.keepsDaemonAlive?`tone-success`:`muted`,children:l?.keepsDaemonAlive?t.holdingDaemon:t.notHolding}),(0,B.jsx)(`button`,{type:`button`,className:`link`,onClick:()=>void I(),children:L(`pages.new`)})]})]}),l===null?(0,B.jsx)(`p`,{className:`muted`,children:n.loading}):C.length===0?(0,B.jsxs)(`div`,{className:`pg-list`,children:[(0,B.jsx)(`p`,{className:`muted`,children:t.empty}),(0,B.jsx)(`p`,{className:`keys-only`,children:t.emptyHint})]}):(0,B.jsx)(`div`,{className:`pg-list`,ref:O,children:C.map((e,n)=>{let r=w[e.id],i=r?fm(r):null;return(0,B.jsxs)(`div`,{"data-row":n,className:`pg-row ${n===T?`is-cursor`:``} ${e.enabled?``:`is-off`}`,onClick:()=>m(n),children:[(0,B.jsx)(`span`,{className:`pg-name`,children:e.name}),(0,B.jsx)(`span`,{className:`pg-grow muted mono`,children:`${e.repo===void 0?L(`rail.noProject`):of(e.repo,C.flatMap(e=>e.repo??[]))} · ${e.schedule}`}),!e.enabled&&(0,B.jsxs)(`span`,{className:`tone-warning mono`,children:[t.paused,` ·`]}),(0,B.jsx)(`span`,{className:`muted mono`,children:ee(e.nextRunAt)}),(0,B.jsx)(`span`,{className:`mono ${i?um[i]:`muted`}`,style:{width:`1ch`},children:i?dm[i]:` `})]},e.id)})}),(0,B.jsx)(`div`,{className:`pg-detail`,children:E?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`div`,{children:[(0,B.jsxs)(`div`,{className:`pg-actions`,children:[(0,B.jsx)(`span`,{className:`pg-prompt pg-grow`,children:E.prompt}),(0,B.jsx)(`button`,{type:`button`,className:`link`,disabled:h===E.id,onClick:()=>void F(),children:t.runNow}),(0,B.jsx)(`button`,{type:`button`,className:`link`,disabled:h===E.id,onClick:()=>void P(),children:L(E.enabled?`pages.routinePause`:`pages.routineEnable`)}),(0,B.jsx)(`button`,{type:`button`,className:`link`,disabled:h===E.id,onClick:te,children:L(`pages.delete`)})]}),(0,B.jsx)(`p`,{className:`muted`,children:ne?nf(t.targetExisting,{task:j(ne.taskId),tab:ne.tabId}):E.persistentSession?t.targetStanding:t.targetFresh}),E.precheck&&(0,B.jsx)(`p`,{className:`muted mono`,children:nf(t.precheck,{command:E.precheck.command})}),(0,B.jsx)(`h2`,{className:`kicker`,children:t.recentRuns}),d.length===0?(0,B.jsx)(`p`,{className:`muted`,children:t.noRuns}):d.slice(0,cm).map(e=>{let n=bp(e,k),r=n===`awaiting`?` · ${t.responseAwaiting}`:n===`missing`?` · ${t.responseMissing}`:``,i=n===`missing`?`tone-warning`:um[fm(e.status)],a=`${e.trigger===`manual`?`▸`:`·`} #${e.runNumber} ${A(e.status)}${e.tabId?` · ${e.tabId}`:``}${e.error?` — ${e.error}`:``}${r} ${ee(e.at)}`,o=e.taskId;return o?(0,B.jsx)(`button`,{type:`button`,className:`pg-run pg-run-open mono ${i}`,onClick:()=>M(o),children:a},e.id):(0,B.jsx)(`p`,{className:`pg-run mono ${i}`,children:a},e.id)}),d[0]?.precheckResult&&(0,B.jsx)(mm,{run:d[0]})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`h2`,{className:`kicker`,children:t.responses}),d.filter(e=>e.response).length===0?(0,B.jsx)(`p`,{className:`muted`,children:t.noResponses}):d.filter(e=>e.response).map(e=>(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`p`,{className:`pg-run mono ${um[fm(e.status)]}`,children:`#${e.runNumber} ${A(e.status)} · ${ee(e.response?.at)}`}),(0,B.jsx)(`p`,{className:`pg-response`,children:e.response?.text})]},e.id))]})]}):(0,B.jsx)(`p`,{className:`muted`,children:t.noSelection})}),y&&(0,B.jsx)(`p`,{className:`muted pg-notice`,children:y})]})}function mm({run:e}){let{auto:t}=tf(),n=e.precheckResult;if(!n)return null;let r=n.timedOut?t.precheckTimedOut:nf(t.precheckExited,{code:String(n.exitCode??`?`)}),i=[{label:t.precheckStdout,text:n.stdout},{label:t.precheckStderr,text:n.stderr}].filter(e=>e.text.trim().length>0);return(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`h2`,{className:`kicker`,children:nf(t.precheckDetail,{exit:r,duration:String(n.durationMs)})}),i.length===0?(0,B.jsx)(`p`,{className:`muted`,children:t.precheckNoOutput}):i.map(e=>(0,B.jsx)(`p`,{className:`pg-response mono`,children:`${e.label}: ${e.text.replace(/\s+$/,``).split(`
|
|
19
19
|
`).slice(-10).join(`
|
|
20
|
-
`)}`},e.label))]})}var hm={id:`mods`,label:`mods`},gm=[{id:`kanban`,label:`kanban`,mod:`kanban`},{id:`routines`,label:`automations`},{id:`issues`,label:`issues`,mod:`issues`},{id:`dispatch`,label:`dispatch`}];function _m({model:e}){let{nav:t}=tf(),n=v(H),r=v(e.mods).length>0,i=v(e.installedMods),a=gm.filter(e=>!e.mod||i.has(e.mod)),o=r?[...a,hm]:a;return(0,B.jsxs)(`div`,{className:`rail-nav`,children:[(0,B.jsxs)(`button`,{type:`button`,className:`rail-nav-row`,onClick:()=>Wo(),children:[L(`rail.newTask`),(0,B.jsx)(`span`,{className:`rail-nav-plus`,"aria-hidden":`true`,children:`+`})]}),o.map(e=>(0,B.jsx)(`button`,{type:`button`,className:`rail-nav-row ${n===e.id?`is-active`:``}`,"aria-current":n===e.id?`page`:void 0,onClick:()=>Vn(e.id),children:e.label===`dispatch`?L(`dispatch.nav`):t[e.label]},e.id))]})}function vm({model:e,page:t}){(0,g.useEffect)(()=>e.selection.subscribe(()=>H.set(null)),[e]);let n=v(e.installedMods);return t===`kanban`&&n.has(`kanban`)?(0,B.jsx)(dp,{model:e}):t===`routines`?(0,B.jsx)(pm,{model:e}):t===`issues`&&n.has(`issues`)?(0,B.jsx)(Ff,{model:e}):t===`mods`?(0,B.jsx)(vp,{model:e}):t===`dispatch`?(0,B.jsx)(Df,{model:e}):null}var ym=p();function bm(e){return e?.match(/^https?:\/\/[^/]+\/([^/]+\/[^/]+)\/(?:pull|merge_requests|-\/merge_requests)\//)?.[1]}var xm=e=>e.charAt(0).toUpperCase()+e.slice(1);function Sm(e){return[L(`rail.pr.state.${e.state}`),...e.checks?[L(`rail.pr.checks.${e.checks}`)]:[]].join(` · `)}function Cm(e){let t=new Map;for(let n of e){let e=sd(n),r=[...e&&n.pr?[{pr:n.pr,mark:e}]:[],...(n.sessionPrs??[]).flatMap(e=>{let t=cd(e);return t?[{pr:e,mark:t}]:[]})];for(let{pr:e,mark:i}of r){let r=e.url??(e.number===void 0?n.id:`${n.repo}#${e.number}`),a=t.get(r),o=e.lifecycle===`unknown`,s=a?.pr.lifecycle===`unknown`;(!a||s&&!o||o===s&&ld([a.mark,i])!==a.mark)&&t.set(r,{task:n,pr:e,mark:i})}}return[...t.values()]}function wm({tasks:e}){let[t,n]=(0,g.useState)(null),[r,i]=(0,g.useState)(!1),a=(0,g.useRef)(null),o=(0,g.useRef)(null),s=(0,g.useRef)(null),c=_i();(0,g.useLayoutEffect)(()=>{let e=s.current;if(!e||!t)return;let n=e.getBoundingClientRect();n.right>window.innerWidth-8&&(e.style.left=`${Math.max(8,window.innerWidth-n.width-8)}px`,e.style.top=`${t.bottom+6}px`);let r=e.getBoundingClientRect().bottom-(window.innerHeight-8);r>0&&(e.style.top=`${Math.max(8,e.getBoundingClientRect().top-r)}px`)},[t]);let l=()=>{o.current!==null&&window.clearTimeout(o.current),o.current=null,i(!1),a.current&&!t&&n(a.current.getBoundingClientRect())},u=()=>{i(!0),o.current=window.setTimeout(()=>n(null),140)};(0,g.useEffect)(()=>{if(!c||!t)return;let e=e=>{let t=e.target;a.current?.contains(t)||s.current?.contains(t)||(i(!0),o.current=window.setTimeout(()=>n(null),140))};return document.addEventListener(`pointerdown`,e,!0),()=>document.removeEventListener(`pointerdown`,e,!0)},[c,t]),(0,g.useEffect)(()=>()=>{o.current!==null&&window.clearTimeout(o.current)},[]);let d=Cm(e),f=ld(d.map(e=>e.mark));if(!f)return null;let p=d.length===1?`PR #${d[0]?.pr.number??``} · ${Sm(f)}`:L(`rail.pr.many`,{count:d.length});return(0,B.jsxs)(`span`,{ref:a,className:`chip pr-chip ${f.tone}`,"aria-label":p,onMouseEnter:c?void 0:l,onMouseLeave:c?void 0:u,onClick:e=>{c&&(e.stopPropagation(),t&&!r?u():l())},children:[f.glyph,d.length>1&&(0,B.jsx)(`span`,{className:`pr-chip-count`,children:d.length}),t&&(0,ym.createPortal)((0,B.jsx)(`div`,{ref:s,className:`pr-list ${r?`is-closing`:``}`,style:{top:t.top-6,left:t.right+8},onMouseEnter:c?void 0:l,onMouseLeave:c?void 0:u,onClick:e=>e.stopPropagation(),onKeyDown:e=>e.stopPropagation(),onMouseDown:e=>e.stopPropagation(),onContextMenu:e=>e.stopPropagation(),children:d.map(({task:e,pr:t,mark:n})=>{let r=bm(t?.url),i=t?.additions!==void 0&&t.deletions!==void 0;return(0,B.jsxs)(`button`,{type:`button`,className:`pr-list-item`,disabled:!t?.url,onClick:()=>t?.url&&window.open(t.url,`_blank`,`noopener`),children:[(0,B.jsx)(`span`,{className:`pr-list-title`,children:t.title||e.title}),(0,B.jsxs)(`span`,{className:`pr-list-line`,children:[(0,B.jsxs)(`span`,{className:`pr-list-state ${n.tone}`,children:[(0,B.jsx)(`span`,{className:`pr-list-glyph`,children:n.glyph}),xm(L(`rail.pr.state.${n.state}`))]}),(0,B.jsx)(`span`,{className:`pr-list-meta`,children:[...n.checks?[L(`rail.pr.checks.${n.checks}`)]:[],[r,t?.number===void 0?``:`#${t.number}`].filter(Boolean).join(` `)].filter(Boolean).map(e=>` · ${e}`).join(``)}),i&&(0,B.jsxs)(`span`,{className:`pr-list-stats`,children:[(0,B.jsxs)(`span`,{className:`tone-success`,children:[`+`,t.additions]}),(0,B.jsxs)(`span`,{className:`tone-attention`,children:[`−`,t.deletions]})]})]})]},t.url??`${e.id}#${t.number??``}`)})}),document.body)]})}var Tm=`~archived`;function Em(e,t,n,r){let i=t.filter(e=>!e.routine);if(i.length===0)return e;let a={id:Tm,kind:`archived`,count:i.length,expanded:n};if(!n)return[...e,a];let o=Dn([{repo:``,label:``,key:Tm,tasks:i}],``,r,1);return[...e,a,...o.filter(e=>e.kind!==`project`)]}function Dm(e,t,n){let r=t.kind===`main`,i=e=>r?e.kind===`main`:e.kind!==`main`&&e.repo===t.repo&&!e.pinned==!t.pinned;if(t.id===n.id||!i(n))return null;let a=e.filter(i).sort((e,t)=>(e.order??e.rank)-(t.order??t.rank)).map(e=>e.id);return a.indexOf(n.id)-a.indexOf(t.id)}function Om(e,t,n,r){let i=Dm(e,t,n);return i===null?null:r===`above`&&i>0?i-1:r===`below`&&i<0?i+1:i}var km=e=>e===void 0||e.kind===`project`?0:e.kind===`task`||e.kind===`pane`?e.depth:1;function Am(e,t){let n=km(e[t]),r=t+1;for(;r<e.length&&km(e[r])>n;)r++;return r}function jm(e,t){let n=km(e[t]),r=[];for(let i=2;i<=n;i++){let a=t+1;for(;a<e.length&&km(e[a])>i;)a++;let o=a<e.length&&km(e[a])===i;r.push(i===n?o?`tee`:`elbow`:o?`pipe`:`blank`)}return r}function Mm(e,t,n,r){let i=e.findIndex(e=>e.id===t);if(i<0||t===n)return e;let a=Am(e,i),o=e.slice(i,a),s=[...e.slice(0,i),...e.slice(a)],c=s.findIndex(e=>e.id===n);if(c<0)return e;let l=r===`above`?c:Am(s,c);return[...s.slice(0,l),...o,...s.slice(l)]}function Nm(e,t,n,r,i){let[a,o]=(0,g.useState)(null),s=(0,g.useRef)(t);s.current=t;let[c,l]=(0,g.useState)(null),u=(0,g.useRef)(()=>o(null));(0,g.useEffect)(()=>{if(!c)return;let e=()=>{l(null),u.current()};if(t!==c)return e();let n=window.setTimeout(e,3e3);return()=>window.clearTimeout(n)},[t,c]);let d=(0,g.useRef)(null),f=(0,g.useRef)(null),p=()=>[...d.current?.querySelectorAll(`[data-row]`)??[]];(0,g.useLayoutEffect)(()=>{let e=f.current;if(!e||(f.current=null,window.matchMedia(`(prefers-reduced-motion: reduce)`).matches))return;let t=p().flatMap(t=>{let n=e.get(t.dataset.row??``),r=n===void 0?0:n-t.getBoundingClientRect().top;return r?[{el:t,dy:r}]:[]});for(let{el:e,dy:n}of t)e.style.transition=`none`,e.style.transform=`translateY(${n}px)`;d.current?.getBoundingClientRect();for(let{el:e}of t)e.style.transition=`transform 150ms ease-out`,e.style.transform=``,e.addEventListener(`transitionend`,()=>e.style.removeProperty(`transition`),{once:!0})});let m=(0,g.useRef)(null),h=(0,g.useRef)([]),_=(0,g.useRef)(new Map),v=(0,g.useRef)(0),y=(0,g.useRef)(0),b=e=>{m.current=e,o(e)},x=e=>!n||e.machine!==void 0?null:e.kind===`project`?t.find(t=>t.id===i(e.repo).mainTaskId)??null:e.kind===`task`&&e.depth===1&&e.task.kind!==`main`?e.task:null,S=e=>{let t=x(e);if(t)return{draggable:!0,onDragStart:n=>{n.dataTransfer.effectAllowed=`move`,n.dataTransfer.setData(`text/plain`,t.id),d.current=n.currentTarget.closest(`.rail-body`),T(d.current);let r=h.current,i=r.findIndex(t=>t.id===e.id);v.current=r.slice(i,Am(r,i)).reduce((e,t,n)=>e+(_.current.get(t.id)?.height??0)+(n>0?_.current.get(t.id)?.gap??0:0),0),y.current=n.clientY,b({fromRow:e.id,from:t,toRow:e.id,to:t,side:`above`})},onDragEnd:()=>m.current&&b(null)}},C=(e,n,r)=>{let i=n;if(r.from.kind===`main`)for(;i>0&&e[i]?.kind!==`project`;)i--;let a=e[i],o=a&&x(a);return!a||!o||Dm(t,r.from,o)===null?null:{row:a.id,task:o}},w={onDragOver:e=>{let t=m.current;if(!t)return;e.preventDefault();let n=e.clientY-y.current;y.current=e.clientY;let r=e.target.closest(`[data-row]`)?.dataset.row,i=h.current,a=C(i,i.findIndex(e=>e.id===r),t);if(!a||a.row===t.fromRow)return;let o=e.currentTarget.querySelector(`[data-row="${CSS.escape(t.fromRow)}"]`)?.getBoundingClientRect().top;if(o===void 0||e.clientY>=o&&e.clientY<o+v.current)return;let s=e.clientY<o?`above`:`below`;(s===`above`?n>=0:n<=0)||(t.toRow!==a.row||t.side!==s)&&b({...t,toRow:a.row,to:a.task,side:s})},onDrop:n=>{let i=m.current;if(!i)return;n.preventDefault();let a=Om(t,i.from,i.to,i.side);m.current=null,r?u.current=()=>o(null):u.current=()=>{f.current=new Map(p().map(e=>[e.dataset.row??``,e.getBoundingClientRect().top])),o(null),Ea(`default`),U(W(`tasks`,`sort.label`,{mode:W(`tasks`,`sort.modes.default`)}))},a?ja(e,i.from.id,a).finally(()=>l(s.current)):u.current()}},T=e=>{let t=[...e?.querySelectorAll(`[data-row]`)??[]];_.current=new Map(t.map((e,n)=>{let r=t[n-1],i=r?e.offsetTop-r.offsetTop-r.offsetHeight:0;return[e.dataset.row??``,{top:e.offsetTop,gap:i,height:e.offsetHeight}]}))},E=e=>{h.current=a?Mm(e,a.fromRow,a.toRow,a.side):e;let t=new Map;if(!a)return t;let n=Math.min(...[..._.current.values()].map(e=>e.top));for(let[e,r]of h.current.entries()){let i=_.current.get(r.id);if(!i)return new Map;e>0&&(n+=i.gap),n!==i.top&&t.set(r.id,n-i.top),n+=i.height}return t};return{props:S,body:w,dragging:a?.fromRow??null,places:e=>{let t=E(e);return e=>{let n=t.get(e.id);return n?{"data-row":e.id,style:{transform:`translateY(${n}px)`}}:{"data-row":e.id}}}}}function Pm(e,t,n,r){let i=e=>e.kind===`task`&&e.task.kind===`main`&&e.task.id!==n&&(r?t[e.task.id]?.length===0:(t[e.task.id]?.length??0)===0),a=[];for(let t=0;t<e.length;t++){let n=e[t];if(n?.kind!==`project`){n&&a.push(n);continue}let r=t+1;for(;r<e.length&&e[r]?.kind!==`project`;)r++;let o=e.slice(t+1,r);o.every(i)||a.push(n,...o),t=r-1}return a}var Fm=new Map,Im=_(null);function Lm(e){return Fm.set(e.stream,e),()=>{Fm.get(e.stream)===e&&Fm.delete(e.stream),Im.get()===e&&Im.set(null)}}function Rm(e){return Fm.get(e)}_r(()=>[{id:`terminal.scroll-up`,chords:[`ctrl+pageup`],prefix:!1,surface:`terminal`,run:()=>Im.get()?.scrollPages(-1)},{id:`terminal.scroll-down`,chords:[`ctrl+pagedown`],prefix:!1,surface:`terminal`,run:()=>Im.get()?.scrollPages(1)},{id:`terminal.reset`,chords:[`f5`],prefix:!1,surface:`terminal`,run:()=>Im.get()?.reset()},{id:`terminal.search`,chords:[`/`],prefix:!0,surface:`terminal`,live:()=>Im.get()!==null,run:()=>Im.get()?.openSearch()}]);var zm=new class{constructor(){this.listeners=[],this.unexpectedErrorHandler=function(e){setTimeout(()=>{throw e.stack?Wm.isErrorNoTelemetry(e)?new Wm(e.message+`
|
|
20
|
+
`)}`},e.label))]})}var hm={id:`mods`,label:`mods`},gm=[{id:`kanban`,label:`kanban`,mod:`kanban`},{id:`routines`,label:`automations`},{id:`issues`,label:`issues`,mod:`issues`},{id:`dispatch`,label:`dispatch`}];function _m({model:e}){let{nav:t}=tf(),n=v(H),r=v(e.mods).length>0,i=v(e.installedMods),a=gm.filter(e=>!e.mod||i.has(e.mod)),o=r?[...a,hm]:a;return(0,B.jsxs)(`div`,{className:`rail-nav`,children:[(0,B.jsxs)(`button`,{type:`button`,className:`rail-nav-row`,onClick:()=>Wo(),children:[L(`rail.newTask`),(0,B.jsx)(`span`,{className:`rail-nav-plus`,"aria-hidden":`true`,children:`+`})]}),o.map(e=>(0,B.jsx)(`button`,{type:`button`,className:`rail-nav-row ${n===e.id?`is-active`:``}`,"aria-current":n===e.id?`page`:void 0,onClick:()=>Vn(e.id),children:e.label===`dispatch`?L(`dispatch.nav`):t[e.label]},e.id))]})}function vm({model:e,page:t}){(0,g.useEffect)(()=>e.selection.subscribe(()=>H.set(null)),[e]);let n=v(e.installedMods);return t===`kanban`&&n.has(`kanban`)?(0,B.jsx)(dp,{model:e}):t===`routines`?(0,B.jsx)(pm,{model:e}):t===`issues`&&n.has(`issues`)?(0,B.jsx)(Ff,{model:e}):t===`mods`?(0,B.jsx)(vp,{model:e}):t===`dispatch`?(0,B.jsx)(Df,{model:e}):null}var ym=p();function bm(e){return e?.match(/^https?:\/\/[^/]+\/([^/]+\/[^/]+)\/(?:pull|merge_requests|-\/merge_requests)\//)?.[1]}var xm=e=>e.charAt(0).toUpperCase()+e.slice(1);function Sm(e){return[L(`rail.pr.state.${e.state}`),...e.checks?[L(`rail.pr.checks.${e.checks}`)]:[]].join(` · `)}function Cm(e){let t=new Map;for(let n of e){let e=sd(n),r=[...e&&n.pr?[{pr:n.pr,mark:e}]:[],...(n.sessionPrs??[]).flatMap(e=>{let t=cd(e);return t?[{pr:e,mark:t}]:[]})];for(let{pr:e,mark:i}of r){let r=e.url??(e.number===void 0?n.id:`${n.repo}#${e.number}`),a=t.get(r),o=e.lifecycle===`unknown`,s=a?.pr.lifecycle===`unknown`;(!a||s&&!o||o===s&&ld([a.mark,i])!==a.mark)&&t.set(r,{task:n,pr:e,mark:i})}}return[...t.values()]}function wm({tasks:e,onOpen:t}){let[n,r]=(0,g.useState)(null),[i,a]=(0,g.useState)(!1),o=(0,g.useRef)(null),s=(0,g.useRef)(null),c=(0,g.useRef)(null),l=_i();(0,g.useLayoutEffect)(()=>{let e=c.current;if(!e||!n)return;let t=e.getBoundingClientRect();t.right>window.innerWidth-8&&(e.style.left=`${Math.max(8,window.innerWidth-t.width-8)}px`,e.style.top=`${n.bottom+6}px`);let r=e.getBoundingClientRect().bottom-(window.innerHeight-8);r>0&&(e.style.top=`${Math.max(8,e.getBoundingClientRect().top-r)}px`)},[n]);let u=()=>{t?.(),s.current!==null&&window.clearTimeout(s.current),s.current=null,a(!1),o.current&&!n&&r(o.current.getBoundingClientRect())},d=()=>{a(!0),s.current=window.setTimeout(()=>r(null),140)};(0,g.useEffect)(()=>{if(!l||!n)return;let e=e=>{let t=e.target;o.current?.contains(t)||c.current?.contains(t)||(a(!0),s.current=window.setTimeout(()=>r(null),140))};return document.addEventListener(`pointerdown`,e,!0),()=>document.removeEventListener(`pointerdown`,e,!0)},[l,n]),(0,g.useEffect)(()=>()=>{s.current!==null&&window.clearTimeout(s.current)},[]);let f=Cm(e),p=ld(f.map(e=>e.mark));if(!p)return null;let m=f.length===1?`PR #${f[0]?.pr.number??``} · ${Sm(p)}`:L(`rail.pr.many`,{count:f.length});return(0,B.jsxs)(`span`,{ref:o,className:`chip pr-chip ${p.tone}`,"aria-label":m,onMouseEnter:l?void 0:u,onMouseLeave:l?void 0:d,onClick:e=>{l&&(e.stopPropagation(),n&&!i?d():u())},children:[p.glyph,f.length>1&&(0,B.jsx)(`span`,{className:`pr-chip-count`,children:f.length}),n&&(0,ym.createPortal)((0,B.jsx)(`div`,{ref:c,className:`pr-list ${i?`is-closing`:``}`,style:{top:n.top-6,left:n.right+8},onMouseEnter:l?void 0:u,onMouseLeave:l?void 0:d,onClick:e=>e.stopPropagation(),onKeyDown:e=>e.stopPropagation(),onMouseDown:e=>e.stopPropagation(),onContextMenu:e=>e.stopPropagation(),children:f.map(({task:e,pr:t,mark:n})=>{let r=bm(t?.url),i=t?.additions!==void 0&&t.deletions!==void 0;return(0,B.jsxs)(`button`,{type:`button`,className:`pr-list-item`,disabled:!t?.url,onClick:()=>t?.url&&window.open(t.url,`_blank`,`noopener`),children:[(0,B.jsx)(`span`,{className:`pr-list-title`,children:t.title||e.title}),(0,B.jsxs)(`span`,{className:`pr-list-line`,children:[(0,B.jsxs)(`span`,{className:`pr-list-state ${n.tone}`,children:[(0,B.jsx)(`span`,{className:`pr-list-glyph`,children:n.glyph}),xm(L(`rail.pr.state.${n.state}`))]}),(0,B.jsx)(`span`,{className:`pr-list-meta`,children:[...n.checks?[L(`rail.pr.checks.${n.checks}`)]:[],[r,t?.number===void 0?``:`#${t.number}`].filter(Boolean).join(` `)].filter(Boolean).map(e=>` · ${e}`).join(``)}),i&&(0,B.jsxs)(`span`,{className:`pr-list-stats`,children:[(0,B.jsxs)(`span`,{className:`tone-success`,children:[`+`,t.additions]}),(0,B.jsxs)(`span`,{className:`tone-attention`,children:[`−`,t.deletions]})]})]})]},t.url??`${e.id}#${t.number??``}`)})}),document.body)]})}var Tm=`~archived`;function Em(e,t,n,r){let i=t.filter(e=>!e.routine);if(i.length===0)return e;let a={id:Tm,kind:`archived`,count:i.length,expanded:n};if(!n)return[...e,a];let o=Dn([{repo:``,label:``,key:Tm,tasks:i}],``,r,1);return[...e,a,...o.filter(e=>e.kind!==`project`)]}function Dm(e,t,n){let r=t.kind===`main`,i=e=>r?e.kind===`main`:e.kind!==`main`&&e.repo===t.repo&&!e.pinned==!t.pinned;if(t.id===n.id||!i(n))return null;let a=e.filter(i).sort((e,t)=>(e.order??e.rank)-(t.order??t.rank)).map(e=>e.id);return a.indexOf(n.id)-a.indexOf(t.id)}function Om(e,t,n,r){let i=Dm(e,t,n);return i===null?null:r===`above`&&i>0?i-1:r===`below`&&i<0?i+1:i}var km=e=>e===void 0||e.kind===`project`?0:e.kind===`task`||e.kind===`pane`?e.depth:1;function Am(e,t){let n=km(e[t]),r=t+1;for(;r<e.length&&km(e[r])>n;)r++;return r}function jm(e,t){let n=km(e[t]),r=[];for(let i=2;i<=n;i++){let a=t+1;for(;a<e.length&&km(e[a])>i;)a++;let o=a<e.length&&km(e[a])===i;r.push(i===n?o?`tee`:`elbow`:o?`pipe`:`blank`)}return r}function Mm(e,t,n,r){let i=e.findIndex(e=>e.id===t);if(i<0||t===n)return e;let a=Am(e,i),o=e.slice(i,a),s=[...e.slice(0,i),...e.slice(a)],c=s.findIndex(e=>e.id===n);if(c<0)return e;let l=r===`above`?c:Am(s,c);return[...s.slice(0,l),...o,...s.slice(l)]}function Nm(e,t,n,r,i){let[a,o]=(0,g.useState)(null),s=(0,g.useRef)(t);s.current=t;let[c,l]=(0,g.useState)(null),u=(0,g.useRef)(()=>o(null));(0,g.useEffect)(()=>{if(!c)return;let e=()=>{l(null),u.current()};if(t!==c)return e();let n=window.setTimeout(e,3e3);return()=>window.clearTimeout(n)},[t,c]);let d=(0,g.useRef)(null),f=(0,g.useRef)(null),p=()=>[...d.current?.querySelectorAll(`[data-row]`)??[]];(0,g.useLayoutEffect)(()=>{let e=f.current;if(!e||(f.current=null,window.matchMedia(`(prefers-reduced-motion: reduce)`).matches))return;let t=p().flatMap(t=>{let n=e.get(t.dataset.row??``),r=n===void 0?0:n-t.getBoundingClientRect().top;return r?[{el:t,dy:r}]:[]});for(let{el:e,dy:n}of t)e.style.transition=`none`,e.style.transform=`translateY(${n}px)`;d.current?.getBoundingClientRect();for(let{el:e}of t)e.style.transition=`transform 150ms ease-out`,e.style.transform=``,e.addEventListener(`transitionend`,()=>e.style.removeProperty(`transition`),{once:!0})});let m=(0,g.useRef)(null),h=(0,g.useRef)([]),_=(0,g.useRef)(new Map),v=(0,g.useRef)(0),y=(0,g.useRef)(0),b=e=>{m.current=e,o(e)},x=e=>!n||e.machine!==void 0?null:e.kind===`project`?t.find(t=>t.id===i(e.repo).mainTaskId)??null:e.kind===`task`&&e.depth===1&&e.task.kind!==`main`?e.task:null,S=e=>{let t=x(e);if(t)return{draggable:!0,onDragStart:n=>{n.dataTransfer.effectAllowed=`move`,n.dataTransfer.setData(`text/plain`,t.id),d.current=n.currentTarget.closest(`.rail-body`),T(d.current);let r=h.current,i=r.findIndex(t=>t.id===e.id);v.current=r.slice(i,Am(r,i)).reduce((e,t,n)=>e+(_.current.get(t.id)?.height??0)+(n>0?_.current.get(t.id)?.gap??0:0),0),y.current=n.clientY,b({fromRow:e.id,from:t,toRow:e.id,to:t,side:`above`})},onDragEnd:()=>m.current&&b(null)}},C=(e,n,r)=>{let i=n;if(r.from.kind===`main`)for(;i>0&&e[i]?.kind!==`project`;)i--;let a=e[i],o=a&&x(a);return!a||!o||Dm(t,r.from,o)===null?null:{row:a.id,task:o}},w={onDragOver:e=>{let t=m.current;if(!t)return;e.preventDefault();let n=e.clientY-y.current;y.current=e.clientY;let r=e.target.closest(`[data-row]`)?.dataset.row,i=h.current,a=C(i,i.findIndex(e=>e.id===r),t);if(!a||a.row===t.fromRow)return;let o=e.currentTarget.querySelector(`[data-row="${CSS.escape(t.fromRow)}"]`)?.getBoundingClientRect().top;if(o===void 0||e.clientY>=o&&e.clientY<o+v.current)return;let s=e.clientY<o?`above`:`below`;(s===`above`?n>=0:n<=0)||(t.toRow!==a.row||t.side!==s)&&b({...t,toRow:a.row,to:a.task,side:s})},onDrop:n=>{let i=m.current;if(!i)return;n.preventDefault();let a=Om(t,i.from,i.to,i.side);m.current=null,r?u.current=()=>o(null):u.current=()=>{f.current=new Map(p().map(e=>[e.dataset.row??``,e.getBoundingClientRect().top])),o(null),Ea(`default`),U(W(`tasks`,`sort.label`,{mode:W(`tasks`,`sort.modes.default`)}))},a?ja(e,i.from.id,a).finally(()=>l(s.current)):u.current()}},T=e=>{let t=[...e?.querySelectorAll(`[data-row]`)??[]];_.current=new Map(t.map((e,n)=>{let r=t[n-1],i=r?e.offsetTop-r.offsetTop-r.offsetHeight:0;return[e.dataset.row??``,{top:e.offsetTop,gap:i,height:e.offsetHeight}]}))},E=e=>{h.current=a?Mm(e,a.fromRow,a.toRow,a.side):e;let t=new Map;if(!a)return t;let n=Math.min(...[..._.current.values()].map(e=>e.top));for(let[e,r]of h.current.entries()){let i=_.current.get(r.id);if(!i)return new Map;e>0&&(n+=i.gap),n!==i.top&&t.set(r.id,n-i.top),n+=i.height}return t};return{props:S,body:w,dragging:a?.fromRow??null,places:e=>{let t=E(e);return e=>{let n=t.get(e.id);return n?{"data-row":e.id,style:{transform:`translateY(${n}px)`}}:{"data-row":e.id}}}}}function Pm(e,t,n,r){let i=e=>e.kind===`task`&&e.task.kind===`main`&&e.task.id!==n&&(r?t[e.task.id]?.length===0:(t[e.task.id]?.length??0)===0),a=[];for(let t=0;t<e.length;t++){let n=e[t];if(n?.kind!==`project`){n&&a.push(n);continue}let r=t+1;for(;r<e.length&&e[r]?.kind!==`project`;)r++;let o=e.slice(t+1,r);o.every(i)||a.push(n,...o),t=r-1}return a}var Fm=new Map,Im=_(null);function Lm(e){return Fm.set(e.stream,e),()=>{Fm.get(e.stream)===e&&Fm.delete(e.stream),Im.get()===e&&Im.set(null)}}function Rm(e){return Fm.get(e)}_r(()=>[{id:`terminal.scroll-up`,chords:[`ctrl+pageup`],prefix:!1,surface:`terminal`,run:()=>Im.get()?.scrollPages(-1)},{id:`terminal.scroll-down`,chords:[`ctrl+pagedown`],prefix:!1,surface:`terminal`,run:()=>Im.get()?.scrollPages(1)},{id:`terminal.reset`,chords:[`f5`],prefix:!1,surface:`terminal`,run:()=>Im.get()?.reset()},{id:`terminal.search`,chords:[`/`],prefix:!0,surface:`terminal`,live:()=>Im.get()!==null,run:()=>Im.get()?.openSearch()}]);var zm=new class{constructor(){this.listeners=[],this.unexpectedErrorHandler=function(e){setTimeout(()=>{throw e.stack?Wm.isErrorNoTelemetry(e)?new Wm(e.message+`
|
|
21
21
|
|
|
22
22
|
`+e.stack):Error(e.message+`
|
|
23
23
|
|
|
@@ -108,6 +108,6 @@ out vec4 outColor;
|
|
|
108
108
|
|
|
109
109
|
void main() {
|
|
110
110
|
outColor = v_color;
|
|
111
|
-
}`,hO=8,gO=hO*Float32Array.BYTES_PER_ELEMENT,_O=20*hO,vO=class{constructor(){this.attributes=new Float32Array(_O),this.count=0}},yO=0,bO=0,xO=0,SO=0,CO=0,wO=0,TO=0,EO=class extends QT{constructor(e,t,n,r){super(),this._terminal=e,this._gl=t,this._dimensions=n,this._themeService=r,this._vertices=new vO,this._verticesCursor=new vO;let i=this._gl;this._program=bE(GD(i,pO,mO)),this._register(YT(()=>i.deleteProgram(this._program))),this._projectionLocation=bE(i.getUniformLocation(this._program,`u_projection`)),this._vertexArrayObject=i.createVertexArray(),i.bindVertexArray(this._vertexArrayObject);let a=new Float32Array([0,0,1,0,0,1,1,1]),o=i.createBuffer();this._register(YT(()=>i.deleteBuffer(o))),i.bindBuffer(i.ARRAY_BUFFER,o),i.bufferData(i.ARRAY_BUFFER,a,i.STATIC_DRAW),i.enableVertexAttribArray(3),i.vertexAttribPointer(3,2,this._gl.FLOAT,!1,0,0);let s=new Uint8Array([0,1,2,3]),c=i.createBuffer();this._register(YT(()=>i.deleteBuffer(c))),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,c),i.bufferData(i.ELEMENT_ARRAY_BUFFER,s,i.STATIC_DRAW),this._attributesBuffer=bE(i.createBuffer()),this._register(YT(()=>i.deleteBuffer(this._attributesBuffer))),i.bindBuffer(i.ARRAY_BUFFER,this._attributesBuffer),i.enableVertexAttribArray(0),i.vertexAttribPointer(0,2,i.FLOAT,!1,gO,0),i.vertexAttribDivisor(0,1),i.enableVertexAttribArray(1),i.vertexAttribPointer(1,2,i.FLOAT,!1,gO,2*Float32Array.BYTES_PER_ELEMENT),i.vertexAttribDivisor(1,1),i.enableVertexAttribArray(2),i.vertexAttribPointer(2,4,i.FLOAT,!1,gO,4*Float32Array.BYTES_PER_ELEMENT),i.vertexAttribDivisor(2,1),this._updateCachedColors(r.colors),this._register(this._themeService.onChangeColors(e=>{this._updateCachedColors(e),this._updateViewportRectangle()}))}renderBackgrounds(){this._renderVertices(this._vertices)}renderCursor(){this._renderVertices(this._verticesCursor)}_renderVertices(e){let t=this._gl;t.useProgram(this._program),t.bindVertexArray(this._vertexArrayObject),t.uniformMatrix4fv(this._projectionLocation,!1,WD),t.bindBuffer(t.ARRAY_BUFFER,this._attributesBuffer),t.bufferData(t.ARRAY_BUFFER,e.attributes,t.DYNAMIC_DRAW),t.drawElementsInstanced(this._gl.TRIANGLE_STRIP,4,t.UNSIGNED_BYTE,0,e.count)}handleResize(){this._updateViewportRectangle()}setDimensions(e){this._dimensions=e}_updateCachedColors(e){this._bgFloat=this._colorToFloat32Array(e.background),this._cursorFloat=this._colorToFloat32Array(e.cursor)}_updateViewportRectangle(){this._addRectangleFloat(this._vertices.attributes,0,0,0,this._terminal.cols*this._dimensions.device.cell.width,this._terminal.rows*this._dimensions.device.cell.height,this._bgFloat)}updateBackgrounds(e){let t=this._terminal,n=this._vertices,r=1,i,a,o,s,c,l,u,d,f,p,m;for(i=0;i<t.rows;i++){for(o=-1,s=0,c=0,l=!1,a=0;a<t.cols;a++)u=(i*t.cols+a)*sO,d=e.cells[u+cO],f=e.cells[u+lO],p=!!(f&67108864),(d!==s||f!==c&&(l||p))&&((s!==0||l&&c!==0)&&(m=r++*hO,this._updateRectangle(n,m,c,s,o,a,i)),o=a,s=d,c=f,l=p);(s!==0||l&&c!==0)&&(m=r++*hO,this._updateRectangle(n,m,c,s,o,t.cols,i))}n.count=r}updateCursor(e){let t=this._verticesCursor,n=e.cursor;if(!n||n.style===`block`){t.count=0;return}let r,i=0;(n.style===`bar`||n.style===`outline`)&&(r=i++*hO,this._addRectangleFloat(t.attributes,r,n.x*this._dimensions.device.cell.width,n.y*this._dimensions.device.cell.height,n.style===`bar`?n.dpr*n.cursorWidth:n.dpr,this._dimensions.device.cell.height,this._cursorFloat)),(n.style===`underline`||n.style===`outline`)&&(r=i++*hO,this._addRectangleFloat(t.attributes,r,n.x*this._dimensions.device.cell.width,(n.y+1)*this._dimensions.device.cell.height-n.dpr,n.width*this._dimensions.device.cell.width,n.dpr,this._cursorFloat)),n.style===`outline`&&(r=i++*hO,this._addRectangleFloat(t.attributes,r,n.x*this._dimensions.device.cell.width,n.y*this._dimensions.device.cell.height,n.width*this._dimensions.device.cell.width,n.dpr,this._cursorFloat),r=i++*hO,this._addRectangleFloat(t.attributes,r,(n.x+n.width)*this._dimensions.device.cell.width-n.dpr,n.y*this._dimensions.device.cell.height,n.dpr,this._dimensions.device.cell.height,this._cursorFloat)),t.count=i}_updateRectangle(e,t,n,r,i,a,o){if(n&67108864)switch(n&50331648){case 16777216:case 33554432:yO=this._themeService.colors.ansi[n&255].rgba;break;case 50331648:yO=(n&16777215)<<8;break;default:yO=this._themeService.colors.foreground.rgba}else switch(r&50331648){case 16777216:case 33554432:yO=this._themeService.colors.ansi[r&255].rgba;break;case 50331648:yO=(r&16777215)<<8;break;default:yO=this._themeService.colors.background.rgba}e.attributes.length<t+4&&(e.attributes=qD(e.attributes,this._terminal.rows*this._terminal.cols*hO)),bO=i*this._dimensions.device.cell.width,xO=o*this._dimensions.device.cell.height,SO=(yO>>24&255)/255,CO=(yO>>16&255)/255,wO=(yO>>8&255)/255,TO=1,this._addRectangle(e.attributes,t,bO,xO,(a-i)*this._dimensions.device.cell.width,this._dimensions.device.cell.height,SO,CO,wO,TO)}_addRectangle(e,t,n,r,i,a,o,s,c,l){e[t]=n/this._dimensions.device.canvas.width,e[t+1]=r/this._dimensions.device.canvas.height,e[t+2]=i/this._dimensions.device.canvas.width,e[t+3]=a/this._dimensions.device.canvas.height,e[t+4]=o,e[t+5]=s,e[t+6]=c,e[t+7]=l}_addRectangleFloat(e,t,n,r,i,a,o){e[t]=n/this._dimensions.device.canvas.width,e[t+1]=r/this._dimensions.device.canvas.height,e[t+2]=i/this._dimensions.device.canvas.width,e[t+3]=a/this._dimensions.device.canvas.height,e[t+4]=o[0],e[t+5]=o[1],e[t+6]=o[2],e[t+7]=o[3]}_colorToFloat32Array(e){return new Float32Array([(e.rgba>>24&255)/255,(e.rgba>>16&255)/255,(e.rgba>>8&255)/255,(e.rgba&255)/255])}},DO=class extends QT{constructor(e,t,n,r,i,a,o,s){super(),this._container=t,this._alpha=i,this._coreBrowserService=a,this._optionsService=o,this._themeService=s,this._deviceCharWidth=0,this._deviceCharHeight=0,this._deviceCellWidth=0,this._deviceCellHeight=0,this._deviceCharLeft=0,this._deviceCharTop=0,this._canvas=this._coreBrowserService.mainDocument.createElement(`canvas`),this._canvas.classList.add(`xterm-${n}-layer`),this._canvas.style.zIndex=r.toString(),this._initCanvas(),this._container.appendChild(this._canvas),this._register(this._themeService.onChangeColors(t=>{this._refreshCharAtlas(e,t),this.reset(e)})),this._register(YT(()=>{this._canvas.remove()}))}_initCanvas(){this._ctx=bE(this._canvas.getContext(`2d`,{alpha:this._alpha})),this._alpha||this._clearAll()}handleBlur(e){}handleFocus(e){}handleCursorMove(e){}handleGridChanged(e,t,n){}handleSelectionChanged(e,t,n,r=!1){}_setTransparency(e,t){if(t===this._alpha)return;let n=this._canvas;this._alpha=t,this._canvas=this._canvas.cloneNode(),this._initCanvas(),this._container.replaceChild(this._canvas,n),this._refreshCharAtlas(e,this._themeService.colors),this.handleGridChanged(e,0,e.rows-1)}_refreshCharAtlas(e,t){this._deviceCharWidth<=0&&this._deviceCharHeight<=0||(this._charAtlas=LD(e,this._optionsService.rawOptions,t,this._deviceCellWidth,this._deviceCellHeight,this._deviceCharWidth,this._deviceCharHeight,this._coreBrowserService.dpr,2048),this._charAtlas.warmUp())}resize(e,t){this._deviceCellWidth=t.device.cell.width,this._deviceCellHeight=t.device.cell.height,this._deviceCharWidth=t.device.char.width,this._deviceCharHeight=t.device.char.height,this._deviceCharLeft=t.device.char.left,this._deviceCharTop=t.device.char.top,this._canvas.width=t.device.canvas.width,this._canvas.height=t.device.canvas.height,this._canvas.style.width=`${t.css.canvas.width}px`,this._canvas.style.height=`${t.css.canvas.height}px`,this._alpha||this._clearAll(),this._refreshCharAtlas(e,this._themeService.colors)}_fillBottomLineAtCells(e,t,n=1){this._ctx.fillRect(e*this._deviceCellWidth,(t+1)*this._deviceCellHeight-this._coreBrowserService.dpr-1,n*this._deviceCellWidth,this._coreBrowserService.dpr)}_clearAll(){this._alpha?this._ctx.clearRect(0,0,this._canvas.width,this._canvas.height):(this._ctx.fillStyle=this._themeService.colors.background.css,this._ctx.fillRect(0,0,this._canvas.width,this._canvas.height))}_clearCells(e,t,n,r){this._alpha?this._ctx.clearRect(e*this._deviceCellWidth,t*this._deviceCellHeight,n*this._deviceCellWidth,r*this._deviceCellHeight):(this._ctx.fillStyle=this._themeService.colors.background.css,this._ctx.fillRect(e*this._deviceCellWidth,t*this._deviceCellHeight,n*this._deviceCellWidth,r*this._deviceCellHeight))}_fillCharTrueColor(e,t,n,r){this._ctx.font=this._getFont(e,!1,!1),this._ctx.textBaseline=BE,this._clipCell(n,r,t.getWidth()),this._ctx.fillText(t.getChars(),n*this._deviceCellWidth+this._deviceCharLeft,r*this._deviceCellHeight+this._deviceCharTop+this._deviceCharHeight)}_clipCell(e,t,n){this._ctx.beginPath(),this._ctx.rect(e*this._deviceCellWidth,t*this._deviceCellHeight,n*this._deviceCellWidth,this._deviceCellHeight),this._ctx.clip()}_getFont(e,t,n){let r=t?e.options.fontWeightBold:e.options.fontWeight;return`${n?`italic`:``} ${r} ${e.options.fontSize*this._coreBrowserService.dpr}px ${e.options.fontFamily}`}},OO=class extends DO{constructor(e,t,n,r,i,a,o){super(n,e,`link`,t,!0,i,a,o),this._register(r.onShowLinkUnderline(e=>this._handleShowLinkUnderline(e))),this._register(r.onHideLinkUnderline(e=>this._handleHideLinkUnderline(e)))}resize(e,t){super.resize(e,t),this._state=void 0}reset(e){this._clearCurrentLink()}_clearCurrentLink(){if(this._state){this._clearCells(this._state.x1,this._state.y1,this._state.cols-this._state.x1,1);let e=this._state.y2-this._state.y1-1;e>0&&this._clearCells(0,this._state.y1+1,this._state.cols,e),this._clearCells(0,this._state.y2,this._state.x2,1),this._state=void 0}}_handleShowLinkUnderline(e){if(e.fg===257?this._ctx.fillStyle=this._themeService.colors.background.css:e.fg!==void 0&&FD(e.fg)?this._ctx.fillStyle=this._themeService.colors.ansi[e.fg].css:this._ctx.fillStyle=this._themeService.colors.foreground.css,e.y1===e.y2)this._fillBottomLineAtCells(e.x1,e.y1,e.x2-e.x1);else{this._fillBottomLineAtCells(e.x1,e.y1,e.cols-e.x1);for(let t=e.y1+1;t<e.y2;t++)this._fillBottomLineAtCells(0,t,e.cols);this._fillBottomLineAtCells(0,e.y2,e.x2)}this._state=e}_handleHideLinkUnderline(e){this._clearCurrentLink()}},kO=typeof window==`object`?window:globalThis,AO=class{constructor(){this.mapWindowIdToZoomLevel=new Map,this._onDidChangeZoomLevel=new CD,this.onDidChangeZoomLevel=this._onDidChangeZoomLevel.event,this.mapWindowIdToZoomFactor=new Map,this._onDidChangeFullscreen=new CD,this.onDidChangeFullscreen=this._onDidChangeFullscreen.event,this.mapWindowIdToFullScreen=new Map}getZoomLevel(e){return this.mapWindowIdToZoomLevel.get(this.getWindowId(e))??0}setZoomLevel(e,t){if(this.getZoomLevel(t)===e)return;let n=this.getWindowId(t);this.mapWindowIdToZoomLevel.set(n,e),this._onDidChangeZoomLevel.fire(n)}getZoomFactor(e){return this.mapWindowIdToZoomFactor.get(this.getWindowId(e))??1}setZoomFactor(e,t){this.mapWindowIdToZoomFactor.set(this.getWindowId(t),e)}setFullscreen(e,t){if(this.isFullscreen(t)===e)return;let n=this.getWindowId(t);this.mapWindowIdToFullScreen.set(n,e),this._onDidChangeFullscreen.fire(n)}isFullscreen(e){return!!this.mapWindowIdToFullScreen.get(this.getWindowId(e))}getWindowId(e){return e.vscodeWindowId}};AO.INSTANCE=new AO;var jO=AO;function MO(e,t,n){typeof t==`string`&&(t=e.matchMedia(t)),t.addEventListener(`change`,n)}jO.INSTANCE.onDidChangeZoomLevel,jO.INSTANCE.onDidChangeFullscreen;var NO=typeof navigator==`object`?navigator.userAgent:``;NO.indexOf(`Firefox`);var PO=NO.indexOf(`AppleWebKit`)>=0;!(NO.indexOf(`Chrome`)>=0)&&NO.indexOf(`Safari`),NO.indexOf(`Electron/`),NO.indexOf(`Android`);var FO=!1;if(typeof kO.matchMedia==`function`){let e=kO.matchMedia(`(display-mode: standalone) or (display-mode: window-controls-overlay)`),t=kO.matchMedia(`(display-mode: fullscreen)`);FO=e.matches,MO(kO,e,({matches:e})=>{FO&&t.matches||(FO=e)})}function IO(){return FO}var LO=`en`,RO=!1,zO=!1,BO=!1,VO=LO,HO,UO=globalThis,WO;typeof UO.vscode<`u`&&typeof UO.vscode.process<`u`?WO=UO.vscode.process:typeof process<`u`&&typeof process?.versions?.node==`string`&&(WO=process);var GO=typeof WO?.versions?.electron==`string`&&WO?.type===`renderer`;if(typeof WO==`object`){WO.platform,WO.platform,RO=WO.platform===`linux`,RO&&WO.env.SNAP&&WO.env.SNAP_REVISION,WO.env.CI||WO.env.BUILD_ARTIFACTSTAGINGDIRECTORY,VO=LO;let e=WO.env.VSCODE_NLS_CONFIG;if(e)try{let t=JSON.parse(e);t.userLocale,t.osLocale,VO=t.resolvedLanguage||LO,t.languagePack?.translationsConfigFile}catch{}zO=!0}else typeof navigator==`object`&&!GO?(HO=navigator.userAgent,HO.indexOf(`Windows`),HO.indexOf(`Macintosh`),(HO.indexOf(`Macintosh`)>=0||HO.indexOf(`iPad`)>=0||HO.indexOf(`iPhone`)>=0)&&navigator.maxTouchPoints&&navigator.maxTouchPoints,RO=HO.indexOf(`Linux`)>=0,HO?.indexOf(`Mobi`),BO=!0,VO=globalThis._VSCODE_NLS_LANGUAGE||LO,navigator.language.toLowerCase()):console.error(`Unable to resolve platform.`);var KO=zO;BO&&typeof UO.importScripts==`function`&&UO.origin;var qO=HO,JO=VO,YO;(e=>{function t(){return JO}e.value=t;function n(){return JO.length===2?JO===`en`:JO.length>=3&&JO[0]===`e`&&JO[1]===`n`&&JO[2]===`-`}e.isDefaultVariant=n;function r(){return JO===`en`}e.isDefault=r})(YO||={});var XO=typeof UO.postMessage==`function`&&!UO.importScripts;(()=>{if(XO){let e=[];UO.addEventListener(`message`,t=>{if(t.data&&t.data.vscodeScheduleAsyncWork)for(let n=0,r=e.length;n<r;n++){let r=e[n];if(r.id===t.data.vscodeScheduleAsyncWork){e.splice(n,1),r.callback();return}}});let t=0;return n=>{let r=++t;e.push({id:r,callback:n}),UO.postMessage({vscodeScheduleAsyncWork:r},`*`)}}return e=>setTimeout(e)})();var ZO=!!(qO&&qO.indexOf(`Chrome`)>=0);qO&&qO.indexOf(`Firefox`),!ZO&&qO&&qO.indexOf(`Safari`),qO&&qO.indexOf(`Edg/`),qO&&qO.indexOf(`Android`);var QO=typeof navigator==`object`?navigator:{};KO||document.queryCommandSupported&&document.queryCommandSupported(`copy`)||QO&&QO.clipboard&&QO.clipboard.writeText,KO||QO&&QO.clipboard&&QO.clipboard.readText,KO||IO()||QO.keyboard,`ontouchstart`in kO||QO.maxTouchPoints,kO.PointerEvent&&(`ontouchstart`in kO||navigator.maxTouchPoints);var $O=class{constructor(){this._keyCodeToStr=[],this._strToKeyCode=Object.create(null)}define(e,t){this._keyCodeToStr[e]=t,this._strToKeyCode[t.toLowerCase()]=e}keyCodeToStr(e){return this._keyCodeToStr[e]}strToKeyCode(e){return this._strToKeyCode[e.toLowerCase()]||0}},ek=new $O,tk=new $O,nk=new $O;Array(230);var rk;(e=>{function t(e){return ek.keyCodeToStr(e)}e.toString=t;function n(e){return ek.strToKeyCode(e)}e.fromString=n;function r(e){return tk.keyCodeToStr(e)}e.toUserSettingsUS=r;function i(e){return nk.keyCodeToStr(e)}e.toUserSettingsGeneral=i;function a(e){return tk.strToKeyCode(e)||nk.strToKeyCode(e)}e.fromUserSettings=a;function o(e){if(e>=98&&e<=113)return null;switch(e){case 16:return`Up`;case 18:return`Down`;case 15:return`Left`;case 17:return`Right`}return ek.keyCodeToStr(e)}e.toElectronAccelerator=o})(rk||={});var ik=Object.freeze(function(e,t){let n=setTimeout(e.bind(t),0);return{dispose(){clearTimeout(n)}}}),ak;(e=>{function t(t){return t===e.None||t===e.Cancelled||t instanceof ok?!0:!t||typeof t!=`object`?!1:typeof t.isCancellationRequested==`boolean`&&typeof t.onCancellationRequested==`function`}e.isCancellationToken=t,e.None=Object.freeze({isCancellationRequested:!1,onCancellationRequested:dD.None}),e.Cancelled=Object.freeze({isCancellationRequested:!0,onCancellationRequested:ik})})(ak||={});var ok=class{constructor(){this._isCancelled=!1,this._emitter=null}cancel(){this._isCancelled||(this._isCancelled=!0,this._emitter&&(this._emitter.fire(void 0),this.dispose()))}get isCancellationRequested(){return this._isCancelled}get onCancellationRequested(){return this._isCancelled?ik:(this._emitter||=new CD,this._emitter.event)}dispose(){this._emitter&&=(this._emitter.dispose(),null)}};(function(){typeof globalThis.requestIdleCallback!=`function`||globalThis.cancelIdleCallback})();var sk;(e=>{async function t(e){let t,n=await Promise.all(e.map(e=>e.then(e=>e,e=>{t||=e})));if(typeof t<`u`)throw t;return n}e.settled=t;function n(e){return new Promise(async(t,n)=>{try{await e(t,n)}catch(e){n(e)}})}e.withAsyncBody=n})(sk||={});var ck=class e{static fromArray(t){return new e(e=>{e.emitMany(t)})}static fromPromise(t){return new e(async e=>{e.emitMany(await t)})}static fromPromises(t){return new e(async e=>{await Promise.all(t.map(async t=>e.emitOne(await t)))})}static merge(t){return new e(async e=>{await Promise.all(t.map(async t=>{for await(let n of t)e.emitOne(n)}))})}constructor(e,t){this._state=0,this._results=[],this._error=null,this._onReturn=t,this._onStateChanged=new CD,queueMicrotask(async()=>{let t={emitOne:e=>this.emitOne(e),emitMany:e=>this.emitMany(e),reject:e=>this.reject(e)};try{await Promise.resolve(e(t)),this.resolve()}catch(e){this.reject(e)}finally{t.emitOne=void 0,t.emitMany=void 0,t.reject=void 0}})}[Symbol.asyncIterator](){let e=0;return{next:async()=>{do{if(this._state===2)throw this._error;if(e<this._results.length)return{done:!1,value:this._results[e++]};if(this._state===1)return{done:!0,value:void 0};await dD.toPromise(this._onStateChanged.event)}while(!0)},return:async()=>(this._onReturn?.(),{done:!0,value:void 0})}}static map(t,n){return new e(async e=>{for await(let r of t)e.emitOne(n(r))})}map(t){return e.map(this,t)}static filter(t,n){return new e(async e=>{for await(let r of t)n(r)&&e.emitOne(r)})}filter(t){return e.filter(this,t)}static coalesce(t){return e.filter(t,e=>!!e)}coalesce(){return e.coalesce(this)}static async toPromise(e){let t=[];for await(let n of e)t.push(n);return t}toPromise(){return e.toPromise(this)}emitOne(e){this._state===0&&(this._results.push(e),this._onStateChanged.fire())}emitMany(e){this._state===0&&(this._results=this._results.concat(e),this._onStateChanged.fire())}resolve(){this._state===0&&(this._state=1,this._onStateChanged.fire())}reject(e){this._state===0&&(this._state=2,this._error=e,this._onStateChanged.fire())}};ck.EMPTY=ck.fromArray([]);function lk(e){return uk(e,0)}function uk(e,t){switch(typeof e){case`object`:return e===null?dk(349,t):Array.isArray(e)?mk(e,t):hk(e,t);case`string`:return pk(e,t);case`boolean`:return fk(e,t);case`number`:return dk(e,t);case`undefined`:return dk(937,t);default:return dk(617,t)}}function dk(e,t){return(t<<5)-t+e|0}function fk(e,t){return dk(e?433:863,t)}function pk(e,t){t=dk(149417,t);for(let n=0,r=e.length;n<r;n++)t=dk(e.charCodeAt(n),t);return t}function mk(e,t){return t=dk(104579,t),e.reduce((e,t)=>uk(t,e),t)}function hk(e,t){return t=dk(181387,t),Object.keys(e).sort().reduce((t,n)=>(t=pk(n,t),uk(e[n],t)),t)}var{registerWindow:gk,getWindow:_k,getDocument:vk,getWindows:yk,getWindowsCount:bk,getWindowId:xk,getWindowById:Sk,hasWindow:Ck,onDidRegisterWindow:wk,onWillUnregisterWindow:Tk,onDidUnregisterWindow:Ek}=function(){let e=new Map,t={window:kO,disposables:new ZT};e.set(kO.vscodeWindowId,t);let n=new CD,r=new CD,i=new CD;function a(n,r){return(typeof n==`number`?e.get(n):void 0)??(r?t:void 0)}return{onDidRegisterWindow:n.event,onWillUnregisterWindow:i.event,onDidUnregisterWindow:r.event,registerWindow(t){if(e.has(t.vscodeWindowId))return QT.None;let a=new ZT,o={window:t,disposables:a.add(new ZT)};return e.set(t.vscodeWindowId,o),a.add(YT(()=>{e.delete(t.vscodeWindowId),r.fire(t)})),a.add(Ok(t,Ak.BEFORE_UNLOAD,()=>{i.fire(t)})),n.fire(o),a},getWindows(){return e.values()},getWindowsCount(){return e.size},getWindowId(e){return e.vscodeWindowId},hasWindow(t){return e.has(t)},getWindowById:a,getWindow(e){let t=e;if(t?.ownerDocument?.defaultView)return t.ownerDocument.defaultView.window;let n=e;return n?.view?n.view.window:kO},getDocument(e){return _k(e).document}}}(),Dk=class{constructor(e,t,n,r){this._node=e,this._type=t,this._handler=n,this._options=r||!1,this._node.addEventListener(this._type,this._handler,this._options)}dispose(){this._handler&&=(this._node.removeEventListener(this._type,this._handler,this._options),this._node=null,null)}};function Ok(e,t,n,r){return new Dk(e,t,n,r)}var kk=class e{constructor(e,t){this.width=e,this.height=t}with(t=this.width,n=this.height){return t!==this.width||n!==this.height?new e(t,n):this}static is(e){return typeof e==`object`&&typeof e.height==`number`&&typeof e.width==`number`}static lift(t){return t instanceof e?t:new e(t.width,t.height)}static equals(e,t){return e===t?!0:!e||!t?!1:e.width===t.width&&e.height===t.height}};kk.None=new kk(0,0),new class{constructor(){this.mutationObservers=new Map}observe(e,t,n){let r=this.mutationObservers.get(e);r||(r=new Map,this.mutationObservers.set(e,r));let i=lk(n),a=r.get(i);if(a)a.users+=1;else{let o=new CD,s=new MutationObserver(e=>o.fire(e));s.observe(e,n);let c=a={users:1,observer:s,onDidMutate:o.event};t.add(YT(()=>{--c.users,c.users===0&&(o.dispose(),s.disconnect(),r?.delete(i),r?.size===0&&this.mutationObservers.delete(e))})),r.set(i,a)}return a.onDidMutate}};var Ak={CLICK:`click`,AUXCLICK:`auxclick`,DBLCLICK:`dblclick`,MOUSE_UP:`mouseup`,MOUSE_DOWN:`mousedown`,MOUSE_OVER:`mouseover`,MOUSE_MOVE:`mousemove`,MOUSE_OUT:`mouseout`,MOUSE_ENTER:`mouseenter`,MOUSE_LEAVE:`mouseleave`,MOUSE_WHEEL:`wheel`,POINTER_UP:`pointerup`,POINTER_DOWN:`pointerdown`,POINTER_MOVE:`pointermove`,POINTER_LEAVE:`pointerleave`,CONTEXT_MENU:`contextmenu`,WHEEL:`wheel`,KEY_DOWN:`keydown`,KEY_PRESS:`keypress`,KEY_UP:`keyup`,LOAD:`load`,BEFORE_UNLOAD:`beforeunload`,UNLOAD:`unload`,PAGE_SHOW:`pageshow`,PAGE_HIDE:`pagehide`,PASTE:`paste`,ABORT:`abort`,ERROR:`error`,RESIZE:`resize`,SCROLL:`scroll`,FULLSCREEN_CHANGE:`fullscreenchange`,WK_FULLSCREEN_CHANGE:`webkitfullscreenchange`,SELECT:`select`,CHANGE:`change`,SUBMIT:`submit`,RESET:`reset`,FOCUS:`focus`,FOCUS_IN:`focusin`,FOCUS_OUT:`focusout`,BLUR:`blur`,INPUT:`input`,STORAGE:`storage`,DRAG_START:`dragstart`,DRAG:`drag`,DRAG_ENTER:`dragenter`,DRAG_LEAVE:`dragleave`,DRAG_OVER:`dragover`,DROP:`drop`,DRAG_END:`dragend`,ANIMATION_START:PO?`webkitAnimationStart`:`animationstart`,ANIMATION_END:PO?`webkitAnimationEnd`:`animationend`,ANIMATION_ITERATION:PO?`webkitAnimationIteration`:`animationiteration`},jk=class extends QT{constructor(e,t,n,r,i,a,o,s,c){super(),this._terminal=e,this._characterJoinerService=t,this._charSizeService=n,this._coreBrowserService=r,this._coreService=i,this._decorationService=a,this._optionsService=o,this._themeService=s,this._cursorBlinkStateManager=new $T,this._charAtlasDisposable=this._register(new $T),this._observerDisposable=this._register(new $T),this._model=new fO,this._workCell=new UD,this._workCell2=new UD,this._rectangleRenderer=this._register(new $T),this._glyphRenderer=this._register(new $T),this._onChangeTextureAtlas=this._register(new CD),this.onChangeTextureAtlas=this._onChangeTextureAtlas.event,this._onAddTextureAtlasCanvas=this._register(new CD),this.onAddTextureAtlasCanvas=this._onAddTextureAtlasCanvas.event,this._onRemoveTextureAtlasCanvas=this._register(new CD),this.onRemoveTextureAtlasCanvas=this._onRemoveTextureAtlasCanvas.event,this._onRequestRedraw=this._register(new CD),this.onRequestRedraw=this._onRequestRedraw.event,this._onContextLoss=this._register(new CD),this.onContextLoss=this._onContextLoss.event,this._canvas=this._coreBrowserService.mainDocument.createElement(`canvas`);let l={antialias:!1,depth:!1,preserveDrawingBuffer:c};if(this._gl=this._canvas.getContext(`webgl2`,l),!this._gl)throw Error(`WebGL2 not supported `+this._gl);this._register(this._themeService.onChangeColors(()=>this._handleColorChange())),this._cellColorResolver=new RE(this._terminal,this._optionsService,this._model.selection,this._decorationService,this._coreBrowserService,this._themeService),this._core=this._terminal._core,this._renderLayers=[new OO(this._core.screenElement,2,this._terminal,this._core.linkifier,this._coreBrowserService,o,this._themeService)],this.dimensions=OE(),this._devicePixelRatio=this._coreBrowserService.dpr,this._updateDimensions(),this._updateCursorBlink(),this._register(o.onOptionChange(()=>this._handleOptionsChanged())),this._deviceMaxTextureSize=this._gl.getParameter(this._gl.MAX_TEXTURE_SIZE),this._register(Ok(this._canvas,`webglcontextlost`,e=>{console.log(`webglcontextlost event received`),e.preventDefault(),this._contextRestorationTimeout=setTimeout(()=>{this._contextRestorationTimeout=void 0,console.warn(`webgl context not restored; firing onContextLoss`),this._onContextLoss.fire(e)},3e3)})),this._register(Ok(this._canvas,`webglcontextrestored`,e=>{console.warn(`webglcontextrestored event received`),clearTimeout(this._contextRestorationTimeout),this._contextRestorationTimeout=void 0,RD(this._terminal),this._initializeWebGLState(),this._requestRedrawViewport()})),this._observerDisposable.value=VD(this._canvas,this._coreBrowserService.window,(e,t)=>this._setCanvasDevicePixelDimensions(e,t)),this._register(this._coreBrowserService.onWindowChange(e=>{this._observerDisposable.value=VD(this._canvas,e,(e,t)=>this._setCanvasDevicePixelDimensions(e,t))})),this._core.screenElement.appendChild(this._canvas),[this._rectangleRenderer.value,this._glyphRenderer.value]=this._initializeWebGLState(),this._isAttached=this._core.screenElement.isConnected,this._register(YT(()=>{for(let e of this._renderLayers)e.dispose();this._canvas.parentElement?.removeChild(this._canvas),RD(this._terminal)}))}get textureAtlas(){return this._charAtlas?.pages[0].canvas}_handleColorChange(){this._refreshCharAtlas(),this._clearModel(!0)}handleDevicePixelRatioChange(){this._devicePixelRatio!==this._coreBrowserService.dpr&&(this._devicePixelRatio=this._coreBrowserService.dpr,this.handleResize(this._terminal.cols,this._terminal.rows))}handleResize(e,t){this._updateDimensions(),this._model.resize(this._terminal.cols,this._terminal.rows);for(let e of this._renderLayers)e.resize(this._terminal,this.dimensions);this._canvas.width=this.dimensions.device.canvas.width,this._canvas.height=this.dimensions.device.canvas.height,this._canvas.style.width=`${this.dimensions.css.canvas.width}px`,this._canvas.style.height=`${this.dimensions.css.canvas.height}px`,this._core.screenElement.style.width=`${this.dimensions.css.canvas.width}px`,this._core.screenElement.style.height=`${this.dimensions.css.canvas.height}px`,this._rectangleRenderer.value?.setDimensions(this.dimensions),this._rectangleRenderer.value?.handleResize(),this._glyphRenderer.value?.setDimensions(this.dimensions),this._glyphRenderer.value?.handleResize(),this._refreshCharAtlas(),this._clearModel(!1)}handleCharSizeChanged(){this.handleResize(this._terminal.cols,this._terminal.rows)}handleBlur(){for(let e of this._renderLayers)e.handleBlur(this._terminal);this._cursorBlinkStateManager.value?.pause(),this._requestRedrawViewport()}handleFocus(){for(let e of this._renderLayers)e.handleFocus(this._terminal);this._cursorBlinkStateManager.value?.resume(),this._requestRedrawViewport()}handleSelectionChanged(e,t,n){for(let r of this._renderLayers)r.handleSelectionChanged(this._terminal,e,t,n);this._model.selection.update(this._core,e,t,n),this._requestRedrawViewport()}handleCursorMove(){for(let e of this._renderLayers)e.handleCursorMove(this._terminal);this._cursorBlinkStateManager.value?.restartBlinkAnimation()}_handleOptionsChanged(){this._updateDimensions(),this._refreshCharAtlas(),this._updateCursorBlink()}_initializeWebGLState(){return this._rectangleRenderer.value=new EO(this._terminal,this._gl,this.dimensions,this._themeService),this._glyphRenderer.value=new iO(this._terminal,this._gl,this.dimensions,this._optionsService),this.handleCharSizeChanged(),[this._rectangleRenderer.value,this._glyphRenderer.value]}_refreshCharAtlas(){if(this.dimensions.device.char.width<=0&&this.dimensions.device.char.height<=0){this._isAttached=!1;return}let e=LD(this._terminal,this._optionsService.rawOptions,this._themeService.colors,this.dimensions.device.cell.width,this.dimensions.device.cell.height,this.dimensions.device.char.width,this.dimensions.device.char.height,this._coreBrowserService.dpr,this._deviceMaxTextureSize);this._charAtlas!==e&&(this._onChangeTextureAtlas.fire(e.pages[0].canvas),this._charAtlasDisposable.value=JT(dD.forward(e.onAddTextureAtlasCanvas,this._onAddTextureAtlasCanvas),dD.forward(e.onRemoveTextureAtlasCanvas,this._onRemoveTextureAtlasCanvas))),this._charAtlas=e,this._charAtlas.warmUp(),this._glyphRenderer.value?.setAtlas(this._charAtlas)}_clearModel(e){this._model.clear(),e&&this._glyphRenderer.value?.clear()}clearTextureAtlas(){this._charAtlas?.clearTexture(),this._clearModel(!0),this._requestRedrawViewport()}clear(){this._clearModel(!0);for(let e of this._renderLayers)e.reset(this._terminal);this._cursorBlinkStateManager.value?.restartBlinkAnimation(),this._updateCursorBlink()}renderRows(e,t){if(!this._isAttached){if(this._core.screenElement?.isConnected&&this._charSizeService.width&&this._charSizeService.height)this._updateDimensions(),this._refreshCharAtlas(),this._isAttached=!0;else return}for(let n of this._renderLayers)n.handleGridChanged(this._terminal,e,t);!this._glyphRenderer.value||!this._rectangleRenderer.value||(this._glyphRenderer.value.beginFrame()?(this._clearModel(!0),this._updateModel(0,this._terminal.rows-1)):this._updateModel(e,t),this._rectangleRenderer.value.renderBackgrounds(),this._glyphRenderer.value.render(this._model),(!this._cursorBlinkStateManager.value||this._cursorBlinkStateManager.value.isCursorVisible)&&this._rectangleRenderer.value.renderCursor())}_updateCursorBlink(){this._coreService.decPrivateModes.cursorBlink??this._terminal.options.cursorBlink?this._cursorBlinkStateManager.value=new BD(()=>{this._requestRedrawCursor()},this._coreBrowserService):this._cursorBlinkStateManager.clear(),this._requestRedrawCursor()}_updateModel(e,t){let n=this._core,r=this._workCell,i,a,o,s,c,l,u=0,d=!0,f,p,m,h,g,_,v,y,b;e=Nk(e,n.rows-1,0),t=Nk(t,n.rows-1,0);let x=this._coreService.decPrivateModes.cursorStyle??n.options.cursorStyle??`block`,S=this._terminal.buffer.active.baseY+this._terminal.buffer.active.cursorY,C=S-n.buffer.ydisp,w=Math.min(this._terminal.buffer.active.cursorX,n.cols-1),T=-1,E=this._coreService.isCursorInitialized&&!this._coreService.isCursorHidden&&(!this._cursorBlinkStateManager.value||this._cursorBlinkStateManager.value.isCursorVisible);this._model.cursor=void 0;let D=!1;for(a=e;a<=t;a++)for(o=a+n.buffer.ydisp,s=n.buffer.lines.get(o),this._model.lineLengths[a]=0,m=S===o,u=0,c=this._characterJoinerService.getJoinedCharacters(o),y=0;y<n.cols;y++){if(i=this._cellColorResolver.result.bg,s.loadCell(y,r),y===0&&(i=this._cellColorResolver.result.bg),l=!1,d=y>=u,f=y,c.length>0&&y===c[0][0]&&d){p=c.shift();let e=this._model.selection.isCellSelected(this._terminal,p[0],o);for(v=p[0]+1;v<p[1];v++)d&&=e===this._model.selection.isCellSelected(this._terminal,v,o);d&&=!m||w<p[0]||w>=p[1],d?(l=!0,r=new Mk(r,s.translateToString(!0,p[0],p[1]),p[1]-p[0]),f=p[1]-1):u=p[1]}if(h=r.getChars(),g=r.getCode(),v=(a*n.cols+y)*sO,this._cellColorResolver.resolve(r,y,o,this.dimensions.device.cell.width),E&&o===S&&(y===w&&(this._model.cursor={x:w,y:C,width:r.getWidth(),style:this._coreBrowserService.isFocused?x:n.options.cursorInactiveStyle,cursorWidth:n.options.cursorWidth,dpr:this._devicePixelRatio},T=w+r.getWidth()-1),y>=w&&y<=T&&(this._coreBrowserService.isFocused&&x===`block`||this._coreBrowserService.isFocused===!1&&n.options.cursorInactiveStyle===`block`)&&(this._cellColorResolver.result.fg=50331648|this._themeService.colors.cursorAccent.rgba>>8&16777215,this._cellColorResolver.result.bg=50331648|this._themeService.colors.cursor.rgba>>8&16777215)),g!==0&&(this._model.lineLengths[a]=y+1),(this._model.cells[v]!==g||this._model.cells[v+cO]!==this._cellColorResolver.result.bg||this._model.cells[v+lO]!==this._cellColorResolver.result.fg||this._model.cells[v+uO]!==this._cellColorResolver.result.ext)&&(D=!0,h.length>1&&(g|=dO),this._model.cells[v]=g,this._model.cells[v+cO]=this._cellColorResolver.result.bg,this._model.cells[v+lO]=this._cellColorResolver.result.fg,this._model.cells[v+uO]=this._cellColorResolver.result.ext,_=r.getWidth(),this._glyphRenderer.value.updateCell(y,a,g,this._cellColorResolver.result.bg,this._cellColorResolver.result.fg,this._cellColorResolver.result.ext,h,_,i),l)){for(r=this._workCell,y++;y<=f;y++)b=(a*n.cols+y)*sO,this._glyphRenderer.value.updateCell(y,a,0,0,0,0,sE,0,0),this._model.cells[b]=0,this._model.cells[b+cO]=this._cellColorResolver.result.bg,this._model.cells[b+lO]=this._cellColorResolver.result.fg,this._model.cells[b+uO]=this._cellColorResolver.result.ext;y--}}D&&this._rectangleRenderer.value.updateBackgrounds(this._model),this._rectangleRenderer.value.updateCursor(this._model)}_updateDimensions(){!this._charSizeService.width||!this._charSizeService.height||(this.dimensions.device.char.width=Math.floor(this._charSizeService.width*this._devicePixelRatio),this.dimensions.device.char.height=Math.ceil(this._charSizeService.height*this._devicePixelRatio),this.dimensions.device.cell.height=Math.floor(this.dimensions.device.char.height*this._optionsService.rawOptions.lineHeight),this.dimensions.device.char.top=this._optionsService.rawOptions.lineHeight===1?0:Math.round((this.dimensions.device.cell.height-this.dimensions.device.char.height)/2),this.dimensions.device.cell.width=this.dimensions.device.char.width+Math.round(this._optionsService.rawOptions.letterSpacing),this.dimensions.device.char.left=Math.floor(this._optionsService.rawOptions.letterSpacing/2),this.dimensions.device.canvas.height=this._terminal.rows*this.dimensions.device.cell.height,this.dimensions.device.canvas.width=this._terminal.cols*this.dimensions.device.cell.width,this.dimensions.css.canvas.height=Math.round(this.dimensions.device.canvas.height/this._devicePixelRatio),this.dimensions.css.canvas.width=Math.round(this.dimensions.device.canvas.width/this._devicePixelRatio),this.dimensions.css.cell.height=this.dimensions.device.cell.height/this._devicePixelRatio,this.dimensions.css.cell.width=this.dimensions.device.cell.width/this._devicePixelRatio)}_setCanvasDevicePixelDimensions(e,t){this._canvas.width===e&&this._canvas.height===t||(this._canvas.width=e,this._canvas.height=t,this._requestRedrawViewport())}_requestRedrawViewport(){this._onRequestRedraw.fire({start:0,end:this._terminal.rows-1})}_requestRedrawCursor(){let e=this._terminal.buffer.active.cursorY;this._onRequestRedraw.fire({start:e,end:e})}},Mk=class extends oD{constructor(e,t,n){super(),this.content=0,this.combinedData=``,this.fg=e.fg,this.bg=e.bg,this.combinedData=t,this._width=n}isCombined(){return 2097152}getWidth(){return this._width}getChars(){return this.combinedData}getCode(){return 2097151}setFromCharData(e){throw Error(`not implemented`)}getAsCharData(){return[this.fg,this.getChars(),this.getWidth(),this.getCode()]}};function Nk(e,t,n=0){return Math.max(Math.min(e,t),n)}var Pk=`di$target`,Fk=`di$dependencies`,Ik=new Map;function Lk(e){if(Ik.has(e))return Ik.get(e);let t=function(e,n,r){if(arguments.length!==3)throw Error(`@IServiceName-decorator can only be used to decorate a parameter`);Rk(t,e,r)};return t._id=e,Ik.set(e,t),t}function Rk(e,t,n){t[Pk]===t?t[Fk].push({id:e,index:n}):(t[Fk]=[{id:e,index:n}],t[Pk]=t)}Lk(`BufferService`),Lk(`CoreMouseService`),Lk(`CoreService`),Lk(`CharsetService`),Lk(`InstantiationService`),Lk(`LogService`);var zk=Lk(`OptionsService`);Lk(`OscLinkService`),Lk(`UnicodeService`),Lk(`DecorationService`);var Bk={trace:0,debug:1,info:2,warn:3,error:4,off:5},Vk=`xterm.js: `,Hk=class extends QT{constructor(e){super(),this._optionsService=e,this._logLevel=5,this._updateLogLevel(),this._register(this._optionsService.onSpecificOptionChange(`logLevel`,()=>this._updateLogLevel())),Uk=this}get logLevel(){return this._logLevel}_updateLogLevel(){this._logLevel=Bk[this._optionsService.rawOptions.logLevel]}_evalLazyOptionalParams(e){for(let t=0;t<e.length;t++)typeof e[t]==`function`&&(e[t]=e[t]())}_log(e,t,n){this._evalLazyOptionalParams(n),e.call(console,(this._optionsService.options.logger?``:Vk)+t,...n)}trace(e,...t){this._logLevel<=0&&this._log(this._optionsService.options.logger?.trace.bind(this._optionsService.options.logger)??console.log,e,t)}debug(e,...t){this._logLevel<=1&&this._log(this._optionsService.options.logger?.debug.bind(this._optionsService.options.logger)??console.log,e,t)}info(e,...t){this._logLevel<=2&&this._log(this._optionsService.options.logger?.info.bind(this._optionsService.options.logger)??console.info,e,t)}warn(e,...t){this._logLevel<=3&&this._log(this._optionsService.options.logger?.warn.bind(this._optionsService.options.logger)??console.warn,e,t)}error(e,...t){this._logLevel<=4&&this._log(this._optionsService.options.logger?.error.bind(this._optionsService.options.logger)??console.error,e,t)}};Hk=jT([MT(0,zk)],Hk);var Uk,Wk=class extends QT{constructor(e){if(aE&&oE()<16&&!document.createElement(`canvas`).getContext(`webgl2`,{antialias:!1,depth:!1,preserveDrawingBuffer:!0}))throw Error(`Webgl2 is only supported on Safari 16 and above`);super(),this._preserveDrawingBuffer=e,this._onChangeTextureAtlas=this._register(new CD),this.onChangeTextureAtlas=this._onChangeTextureAtlas.event,this._onAddTextureAtlasCanvas=this._register(new CD),this.onAddTextureAtlasCanvas=this._onAddTextureAtlasCanvas.event,this._onRemoveTextureAtlasCanvas=this._register(new CD),this.onRemoveTextureAtlasCanvas=this._onRemoveTextureAtlasCanvas.event,this._onContextLoss=this._register(new CD),this.onContextLoss=this._onContextLoss.event}activate(e){let t=e._core;if(!e.element){this._register(t.onWillOpen(()=>this.activate(e)));return}this._terminal=e;let n=t.coreService,r=t.optionsService,i=t,a=i._renderService,o=i._characterJoinerService,s=i._charSizeService,c=i._coreBrowserService,l=i._decorationService;i._logService;let u=i._themeService;this._renderer=this._register(new jk(e,o,s,c,n,l,r,u,this._preserveDrawingBuffer)),this._register(dD.forward(this._renderer.onContextLoss,this._onContextLoss)),this._register(dD.forward(this._renderer.onChangeTextureAtlas,this._onChangeTextureAtlas)),this._register(dD.forward(this._renderer.onAddTextureAtlasCanvas,this._onAddTextureAtlasCanvas)),this._register(dD.forward(this._renderer.onRemoveTextureAtlasCanvas,this._onRemoveTextureAtlasCanvas)),a.setRenderer(this._renderer),this._register(YT(()=>{if(this._terminal._core._store._isDisposed)return;let t=this._terminal._core._renderService;t.setRenderer(this._terminal._core._createRenderer()),t.handleResize(e.cols,e.rows)}))}get textureAtlas(){return this._renderer?.textureAtlas}clearTextureAtlas(){this._renderer?.clearTextureAtlas()}};function Gk(e){let t=null,n=null;try{let r=new Set(e.element?.querySelectorAll(`canvas`)),i=new Wk;i.onContextLoss(()=>{i.dispose(),t=null}),e.loadAddon(i),t=i,n=[...e.element?.querySelectorAll(`canvas`)??[]].find(e=>!r.has(e)&&!e.classList.contains(`xterm-link-layer`))??null}catch{}let r=new ResizeObserver(()=>{let n=e._core?._renderService;t&&n&&!n._isPaused&&typeof n._renderRows==`function`&&n._renderRows(0,e.rows-1)});if(n)try{r.observe(n,{box:`device-pixel-content-box`})}catch{}let i=()=>{t&&(t.clearTextureAtlas(),e.refresh(0,e.rows-1))};return document.fonts.addEventListener(`loadingdone`,i),{dispose(){document.fonts.removeEventListener(`loadingdone`,i),r.disconnect(),n?.getContext(`webgl2`)?.getExtension(`WEBGL_lose_context`)?.loseContext()}}}function Kk(e){return Uint8Array.from(atob(e),e=>e.charCodeAt(0))}function qk(e){return!e||typeof e!=`object`||!(`stream`in e)||typeof e.stream!=`string`?null:{stream:e.stream,...`data`in e&&typeof e.data==`string`?{data:e.data}:{},...`code`in e&&(typeof e.code==`number`||e.code===null)?{code:e.code}:{}}}var Jk=65536,Yk=20;function Xk(e){let t=0,n=null,r=()=>{n!==null&&window.clearTimeout(n),n=null,t>0&&e(t),t=0};return{parsed(e){t+=e,t>=Jk?r():n??=window.setTimeout(r,Yk)},dispose(){n!==null&&window.clearTimeout(n),n=null,t=0}}}function Zk(e){return!e||typeof e!=`object`||!(`stream`in e)||!(`replay`in e)?null:typeof e.stream==`string`&&typeof e.replay==`string`?{stream:e.stream,replay:e.replay}:null}var Qk=8;function $k(e,t,n){return n&&n!==`leaf-1`?`${e}::${t}::${n}`:`${e}::${t}`}function eA(e){return e.type!==`keydown`||e.key.toLowerCase()!==`c`||e.altKey?null:e.metaKey||e.ctrlKey&&e.shiftKey?`copy`:e.ctrlKey?`interrupt-or-copy`:null}var tA=new WeakMap;function nA(e){let{client:t,el:n,taskId:r,tabId:i}=e,a=new dT({fontFamily:xT,fontSize:13,lineHeight:1.15,theme:Cl.get()??yT,cursorBlink:!0,scrollback:Fs.get().prefs.scrollbackRows,allowProposedApi:!0,overviewRuler:{width:Qk},scrollOnUserInput:!1}),o=new hT(a),s=new qh;a.loadAddon(o),a.loadAddon(s);let c=new pg;a.loadAddon(c),a.loadAddon(new d_),a.unicode.activeVersion=`11`,a.loadAddon(new __),a.open(n);let l=Gk(a);o.fit();let u=null,d=()=>{let e=a.element?.querySelector(`.xterm-screen`);if(!u||!e||a.rows<=0||a.cols<=0)return;let t=document.createElement(`canvas`).getContext(`2d`);t&&(t.font=`${a.options.fontSize??13}px ${xT}`);let n=t?.measureText(`W`).width??0;u.style.setProperty(`--row-h`,`${e.clientHeight/a.rows}px`),n>0&&(u.style.letterSpacing=`${e.clientWidth/a.cols-n}px`)};e.snapshot&&(u=document.createElement(`div`),u.className=`term-snapshot`,u.innerHTML=e.snapshot,u.style.backgroundColor=(Cl.get()??yT).background??``,n.append(u),d(),requestAnimationFrame(d));let f=a.onResize(d),p=()=>{u?.remove(),u=null,f.dispose()},m=u?window.setTimeout(p,1500):null;e.focusOnMount&&a.focus();let h=$k(r,i,e.leafId),g=tA.get(t);g||(g=new Map,tA.set(t,g));let _=g.get(h)??{owners:0,attached:!1};_.owners++,g.set(h,_);let v=()=>void t.request(`term.detach`,{stream:h}).catch(()=>{}),y=null,b=!1,x=null,S=!1,C=wT(e=>{y&&b&&t.request(`term.input`,{stream:y,data:e}).catch(()=>{})}),w=Xk(e=>{y&&t.request(`term.ack`,{stream:y,chars:e}).catch(()=>{})}),T=(e,t,n)=>a.write(e,()=>{n?.(),w.parsed(t)}),E=t.on(`term.data`,e=>{let t=qk(e);if(!t?.data||t.stream!==h)return;let n=Kk(t.data);x?x.push({bytes:n,chars:t.data.length}):y&&T(n,t.data.length)}),D=t.on(`term.reset`,e=>{let t=Zk(e);!t||t.stream!==h||!y||x||(a.write(`\x1Bc`),C.replay(e=>T(Kk(t.replay),t.replay.length,e)))}),O=t.on(`term.exit`,t=>{let n=qk(t);!n||n.stream!==h||(b=!1,e.setNotice({kind:`exited`,code:n.code??null}),e.onExit(n.code??null))}),k=async()=>{x=[],y=null;try{let n=await t.request(`term.attach`,{taskId:r,tabId:i,...e.leafId&&e.leafId!==`leaf-1`?{leafId:e.leafId}:{},cols:a.cols,rows:a.rows,acks:!0}),o=g.get(h);if(o?o.attached=!0:v(),S)return;a.reset(),C.replay(e=>a.write(Kk(n.replay),e));for(let e of x)T(e.bytes,e.chars);if(y=n.stream,b=n.alive,n.alive&&a.rows>2){let{cols:e,rows:r}=a,i=n.stream;t.request(`term.resize`,{stream:i,cols:e,rows:r-1}).then(()=>new Promise(e=>window.setTimeout(e,60))).then(()=>y===i?t.request(`term.resize`,{stream:i,cols:a.cols,rows:a.rows}):void 0).then(()=>window.setTimeout(p,250)).catch(p)}else p();n.alive&&document.activeElement===a.textarea&&pe.set(n.stream),e.setNotice(n.alive?{kind:`none`}:n.restored?{kind:`restored`}:{kind:`exited`,code:null})}catch(t){if(S)return;t instanceof Ba&&t.code===`TAB_NOT_LIVE`?e.setNotice({kind:`notLive`}):t instanceof Ba&&t.code===`NOT_CONNECTED`||e.setNotice({kind:`failed`,message:t instanceof Error?t.message:String(t)})}finally{x=null,y||p()}},ee=()=>n.clientWidth>0&&n.clientHeight>0,A=!1,j=t.onOpen(()=>{A=!ee(),A||k()}),M=null,N=a.onData(e=>{if(M&&e.length===1){let t=M;M=null,t(),C.forward(vT(e))}else C.forward(e)}),P=0,F=()=>{!y||!b||(P=Date.now(),t.request(`term.resize`,{stream:y,cols:a.cols,rows:a.rows}).catch(()=>{}))},I=a.onKey(()=>{Date.now()-P>1e3&&F()}),te=null,ne=a.onResize(({cols:e,rows:n})=>{te!==null&&window.clearTimeout(te),te=window.setTimeout(()=>{y&&b&&t.request(`term.resize`,{stream:y,cols:e,rows:n}).catch(()=>{})},80)}),re=()=>{Se.get()!==null||!ee()||(o.fit(),A&&(A=!1,k()))},ie=new ResizeObserver(re);ie.observe(n);let L=Se.subscribe(re),R=Fs.subscribe(()=>{a.options.scrollback=Fs.get().prefs.scrollbackRows}),z=()=>{n.style.backgroundColor=(Cl.get()??yT).background??``};z();let ae=Cl.subscribe(()=>{a.options.theme=Cl.get()??yT,z()});a.attachCustomKeyEventHandler(t=>{if(t.type===`keydown`&&t.ctrlKey&&!t.metaKey&&!t.altKey&&!t.shiftKey&&t.key.toLowerCase()===`v`&&/Mac|iPhone|iPad/.test(navigator.platform))return e.pasteImage(),!1;let n=eA(t);if(!n)return!0;let r=a.getSelection();return r.trim().length===0?n===`interrupt-or-copy`:(e.copyText(r),a.clearSelection(),!1)});let oe=!1,B=e=>{oe=e.button===0},se=()=>{if(!oe)return;oe=!1;let t=a.getSelection();t.trim().length>0&&e.copyText(t)};n.addEventListener(`mousedown`,B),document.addEventListener(`mouseup`,se);let ce=a.textarea,le=0,V=null,ue=0,de=e=>{if(e.ctrlKey||Math.abs(e.deltaX)>Math.abs(e.deltaY)||TT({alternateScreen:a.buffer.active.type===`alternate`,mouseTracking:a.modes.mouseTrackingMode!==`none`,shift:e.shiftKey})===`app`)return;e.preventDefault(),e.stopPropagation();let t=a.element?.querySelector(`.xterm-screen`),n=t&&a.rows>0?t.clientHeight/a.rows:0,r=ET(le,e,n||15,a.rows);le=r.carry,r.lines!==0&&(V=null,a.scrollLines(r.lines))};n.addEventListener(`wheel`,de,{capture:!0,passive:!1});let H=e=>{e.target instanceof Element&&e.target.closest(`.scrollbar`)&&(V=null)};n.addEventListener(`mousedown`,H,{capture:!0});let fe=()=>{if(a.buffer.active.type===`normal`){let e=DT(a.buffer.active);V===null&&e>0&&(V=e),ue=performance.now()}return!1},me=a.parser.registerCsiHandler({final:`J`},e=>e[0]===3&&fe()),he=a.parser.registerEscHandler({final:`c`},fe),ge=()=>{V=null,DT(a.buffer.active)>0&&a.scrollToBottom()},_e=a.onKey(ge);ce?.addEventListener(`paste`,ge),ce?.addEventListener(`compositionend`,ge);let ve=()=>e.onScrolled(DT(a.buffer.active)),U=a.onScroll(ve),ye=a.onWriteParsed(()=>{V!==null&&performance.now()-ue>1e3&&(V=null);let e=OT(V,a.buffer.active);e!==null&&a.scrollToLine(e),ve()}),be=e=>{V=null,e()},xe=()=>{pe.set(y),F(),e.onFocusChange(!0)},Ce=()=>e.onFocusChange(!1);return ce?.addEventListener(`focus`,xe),ce?.addEventListener(`blur`,Ce),{term:a,search:s,stream:h,scrollLines:e=>be(()=>a.scrollLines(e)),scrollToTop:()=>be(()=>a.scrollToTop()),scrollToBottom:()=>be(()=>a.scrollToBottom()),armCtrl:e=>{M=e},reattach:k,snapshot:()=>c.serializeAsHTML({scrollback:0,includeGlobalBackground:!0}),dispose(){S=!0,p(),m!==null&&window.clearTimeout(m),ie.disconnect(),n.removeEventListener(`wheel`,de,{capture:!0}),n.removeEventListener(`mousedown`,H,{capture:!0}),ce?.removeEventListener(`paste`,ge),ce?.removeEventListener(`compositionend`,ge),me.dispose(),he.dispose(),_e.dispose(),ae(),R(),L(),te!==null&&window.clearTimeout(te),n.removeEventListener(`mousedown`,B),document.removeEventListener(`mouseup`,se),ce?.removeEventListener(`focus`,xe),ce?.removeEventListener(`blur`,Ce),U.dispose(),ye.dispose(),N.dispose(),I.dispose(),ne.dispose(),j(),E(),O(),D(),w.dispose(),y&&pe.get()===y&&pe.set(null),_.owners--,_.owners===0&&(g.delete(h),_.attached&&v()),a.dispose(),l.dispose()}}}var rA=_({});function iA(e,t,n){let r=rA.get()[`${e}::${t.id}`];return r&&r.sig===Yi(n)&&Hi(n.root).some(e=>e.id===r.leaf)?r.leaf:n.activeLeafId}function aA(e,t,n,r){rA.set({...rA.get(),[`${e}::${t}`]:{sig:Yi(n),leaf:r}})}function oA(e,t,n,r){aA(e,t.id,n,r),Rm($k(e,t.id,r))?.focus()}function sA(e){let{taskId:t,tabId:n}=e.selection.get(),r=t?e.tabs.get()[t]?.find(e=>e.id===n):void 0;return t&&r?{taskId:t,tab:r}:null}async function cA(e,t,n){try{let r=await e.client.request(`tab.split`,t);await e.refreshTabsNow(),n?.(r)}catch(e){U(e instanceof Error?e.message:String(e),`error`)}}function lA(e,t,n,r,i){let a=i??(n.split?iA(t,n,n.split):`leaf-1`),o=e.selection.get();(o.taskId!==t||o.tabId!==n.id)&&e.select(t,n.id);let s=Rm($k(t,n.id,a))?.size();cA(e,{taskId:t,tabId:n.id,action:`open`,direction:r,leafId:a,...s},e=>{e.changed?e.split&&aA(t,n.id,e.split,e.leaf):U(L(`layout.splitTooSmall`),`error`)})}function uA(e,t,n,r){let i=n.split,a=i?iA(t,n,i):r,o=()=>cA(e,{taskId:t,tabId:n.id,action:`close`,leafId:r},e=>{let i=e.split;if(!i)return;let o=a!==r&&Hi(i.root).some(e=>e.id===a);aA(t,n.id,i,o?a:i.activeLeafId)});if(!i||!qi(n,i,r)){o();return}V.set((0,B.jsx)(Ae,{title:L(`confirm.closePaneTitle`,{pane:Ki(i,Nn(n)).get(r)??r}),body:L(`confirm.closePaneBody`),confirmLabel:L(`menu.closePane`),onConfirm:o}))}function dA(e,t,n,r){let i=n.split;i&&V.set((0,B.jsx)(ke,{title:qr(`split.renameTitle`),initial:Ki(i,Nn(n)).get(r)??``,allowEmpty:!0,submitLabel:L(`dialog.save`),onSubmit:i=>cA(e,{taskId:t,tabId:n.id,action:`rename`,leafId:r,title:i})}))}function fA(e,t,n,r){return[{label:L(`menu.renamePane`),section:`split`,key:Or(`workspace.split.rename`)??void 0,run:()=>dA(e,t,n,r)},{label:L(`menu.closePane`),section:`split`,key:Ct(`workspace.split.close`)||void 0,run:()=>uA(e,t,n,r)}]}function pA(e,t,n,r){return[{label:L(`menu.splitRight`),section:`split`,key:Or(`workspace.split.right`)??void 0,run:()=>lA(e,t,n,`right`,r)},{label:L(`menu.splitDown`),section:`split`,key:Or(`workspace.split.down`)??void 0,run:()=>lA(e,t,n,`down`,r)}]}function mA(e,t,n,r){let i=n.split,a=r??(i?iA(t,n,i):`leaf-1`);return[...pA(e,t,n,a),...Ui(i)?fA(e,t,n,a):[]]}function hA(e,t){let n=e.tabs.get()[t]??[],r=e.selection.get(),i=(r.taskId===t?n.find(e=>e.id===r.tabId):void 0)??on(n);return!i||!Ji(i)?[]:pA(e,t,i,i.split?iA(t,i,i.split):`leaf-1`)}function gA(e,{task:t,tab:n,leaf:r}){n.split&&oA(t.id,n,n.split,r),e.select(t.id,n.id)}function _A(e){let{row:t}=e,n=v(e.model.selection);v(rA);let r=n.taskId===t.task.id&&n.tabId===t.tab.id&&!!t.tab.split&&iA(t.task.id,t.tab,t.tab.split)===t.leaf;return(0,B.jsxs)(`button`,{type:`button`,className:`row pane-row ${r?`is-active-pane`:``} ${e.cursor?`is-cursor`:``}`,"aria-current":r||void 0,onClick:e.onClick,onContextMenu:e.onMenu,...e.place,children:[(0,B.jsx)(`span`,{className:`child-indent`,"aria-hidden":`true`,children:e.guides?.map((e,t)=>(0,B.jsx)(`span`,{className:`guide is-${e}`},t))}),(0,B.jsx)(`span`,{className:`row-title`,children:t.label})]})}function vA(e,t){let n=t?.trim()??``;return n&&e?.effortLevels?.includes(n)?n:``}function yA({model:e,taskId:t}){let[n,r]=(0,g.useState)([]),[i,a]=(0,g.useState)({}),[o,s]=(0,g.useState)(``),[c,l]=(0,g.useState)(``),[u,d]=(0,g.useState)(``),[f,p]=(0,g.useState)(!1),{busy:m,error:h,submit:_}=Oe();(0,g.useEffect)(()=>{Promise.all([e.client.request(`engines.list`),e.client.request(`task.get`,{taskId:t})]).then(([e,t])=>{let n=e.engines.filter(e=>e.ready!==!1||e.id===t.task.engine),i=n.find(e=>e.id===t.task.engine)??n[0];r(n),a(t.task),s(i?.id??``),l(vA(i,t.task.effort)),d(i?.id===t.task.engine?t.task.model??``:``),p(!0)})},[e,t]);let v=n.find(e=>e.id===o),y=v?.effortLevels??[],b=y.length>0?[``,...y]:[],x=(v?.models??[]).map(e=>e.id).filter(e=>e.toLowerCase().includes(u.trim().toLowerCase())&&e!==u.trim()).slice(0,6),S=e=>{s(e);let t=n.find(t=>t.id===e);l(vA(t,e===i.engine?i.effort:void 0)),d(e===i.engine?i.model??``:``)},C=e=>{let t=n.findIndex(e=>e.id===o),r=n[Math.max(0,Math.min(n.length-1,t+e))];r&&S(r.id)},w=e=>{if(b.length===0)return;let t=Math.max(0,b.indexOf(c));l(b[Math.max(0,Math.min(b.length-1,t+e))]??``)},T=e=>{let t=e.target instanceof HTMLInputElement;if(e.key===`ArrowUp`&&!t)C(-1);else if(e.key===`ArrowDown`&&!t)C(1);else if((e.key===`ArrowLeft`||e.key===`h`)&&!t)w(-1);else if((e.key===`ArrowRight`||e.key===`l`)&&!t)w(1);else return;e.preventDefault()},E=()=>_(async()=>{if(!v)return;let n=y.length>0?c:void 0,r=v.acceptsModel?u.trim():void 0;(v.id!==i.engine||n!==void 0&&n!==(i.effort??``)||r!==void 0&&r!==(i.model??``))&&(await e.client.request(`task.setEngine`,{taskId:t,engine:v.id,...n===void 0?{}:{effort:n},...r===void 0?{}:{model:r}}),U(W(`tasks`,`toast.engineSwitched`,{engine:v.name})))});return(0,B.jsx)(De,{title:W(`tasks`,`changeEngine.title`),wide:!0,children:(0,B.jsxs)(`form`,{className:`dialog-body`,onKeyDown:T,onSubmit:e=>{e.preventDefault(),E()},children:[(0,B.jsx)(`ul`,{className:`choices`,"aria-label":W(`tasks`,`changeEngine.title`),children:n.map(e=>(0,B.jsx)(`li`,{children:(0,B.jsxs)(`button`,{type:`button`,"aria-pressed":e.id===o,className:`row ${e.id===o?`is-selected`:``}`,onClick:()=>S(e.id),children:[(0,B.jsx)(`span`,{className:`glyph tone-accent`,children:e.id===o?`●`:` `}),(0,B.jsx)(`span`,{className:`row-title`,children:e.name}),e.id===i.engine&&(0,B.jsx)(`span`,{className:`muted`,children:W(`tasks`,`changeEngine.current`)})]})},e.id))}),f&&v&&v.acceptsModel&&(0,B.jsxs)(`label`,{className:`field`,children:[(0,B.jsx)(`span`,{className:`kicker`,children:W(`tasks`,`engineModel.label`)}),(0,B.jsx)(`input`,{className:`input`,spellCheck:!1,placeholder:W(`tasks`,`engineModel.placeholder`),value:u,onChange:e=>d(e.target.value)}),x.length>0&&(0,B.jsx)(`div`,{className:`chips-row model-suggest`,children:x.map(e=>(0,B.jsx)(`button`,{type:`button`,className:`chip-button`,onClick:()=>d(e),children:e},e))})]}),b.length>0&&(0,B.jsxs)(`div`,{className:`field`,children:[(0,B.jsx)(`span`,{className:`kicker`,children:W(`tasks`,`changeEngine.effortLabel`)}),(0,B.jsx)(`div`,{className:`chips-row`,children:b.map(e=>(0,B.jsx)(`button`,{type:`button`,"aria-pressed":e===c,className:`chip-button ${e===c?`is-active`:``}`,onClick:()=>l(e),children:e===``?W(`tasks`,`changeEngine.noEffort`):e},e||`default`))})]}),(0,B.jsx)(`p`,{className:`muted taskops-hint keys-only`,children:[W(`tasks`,`changeEngine.footer.engine`),...v?.acceptsModel?[W(`tasks`,`changeEngine.footer.model`)]:[],...b.length>0?[W(`tasks`,`changeEngine.footer.effort`)]:[],W(`tasks`,`changeEngine.footer.set`),W(`tasks`,`changeEngine.footer.cancel`)].join(` · `)}),h&&(0,B.jsx)(`p`,{className:`error`,children:h}),(0,B.jsx)(je,{busy:m||!f,submitLabel:L(`taskops.set`)})]})})}function bA({model:e,task:t}){let[n,r]=(0,g.useState)(null),[i,a]=(0,g.useState)(null),{busy:o,error:s,submit:c}=Oe();(0,g.useEffect)(()=>{e.client.request(`task.get`,{taskId:t.id}).then(e=>r(e.task)).catch(e=>a(Ee(e)))},[e,t.id]);let l=()=>c(async()=>{if(!n?.prompt)return;let t=(await e.client.request(`task.spawn`,{repo:n.repo,prompt:n.prompt,...n.engine?{engine:n.engine}:{},...n.baseRef?{baseBranch:n.baseRef}:{}})).taskIds[0];t&&e.selectWhenListed(t)});return(0,B.jsx)(De,{title:W(`tasks`,`runAgain.title`),wide:!0,children:(0,B.jsxs)(`form`,{className:`dialog-body`,onSubmit:e=>{e.preventDefault(),l()},children:[(0,B.jsx)(`p`,{className:`muted`,children:W(`tasks`,`runAgain.source`,{title:t.title})}),(0,B.jsx)(`pre`,{className:`brief`,children:n?.prompt??i??W(`tasks`,`fieldNotes.loading`)}),(0,B.jsx)(`p`,{className:`muted taskops-hint`,children:W(`tasks`,`runAgain.hint`)}),s&&(0,B.jsx)(`p`,{className:`error`,children:s}),(0,B.jsx)(je,{busy:o||!n?.prompt,submitLabel:W(`tasks`,`runAgain.confirm`)})]})})}function xA(e){let t=new Date(e);if(Number.isNaN(t.getTime()))return e;let n=e=>String(e).padStart(2,`0`);return`${t.getFullYear()}-${n(t.getMonth()+1)}-${n(t.getDate())} ${n(t.getHours())}:${n(t.getMinutes())}`}function SA({model:e,repo:t}){let[n,r]=(0,g.useState)({kind:`loading`}),[i,a]=(0,g.useState)(0),[o,s]=(0,g.useState)(null),[c,l]=(0,g.useState)(null),u=(0,g.useRef)(null),d=()=>e.client.request(`notes.list`,{repo:t}).then(e=>r({kind:`ready`,notes:e.notes})).catch(e=>r({kind:`error`,message:Ee(e)}));(0,g.useEffect)(()=>void d(),[]);let f=n.kind===`ready`?n.notes:[];(0,g.useEffect)(()=>a(e=>Math.max(0,Math.min(e,f.length-1))),[f.length]),(0,g.useEffect)(()=>{u.current?.querySelector(`.is-selected`)?.scrollIntoView({block:`nearest`})},[i]);let p=async n=>{if(n.id!==void 0){l(null);try{await e.client.request(`notes.delete`,{repo:t,id:n.id}),s(null),await d()}catch(e){l(Ee(e))}}};return(0,B.jsx)(De,{title:W(`tasks`,`fieldNotes.title`),wide:!0,children:(0,B.jsxs)(`div`,{className:`dialog-body`,onKeyDown:e=>{if(!o){if(e.key===`ArrowDown`||e.key===`j`)a(e=>Math.min(f.length-1,e+1));else if(e.key===`ArrowUp`||e.key===`k`)a(e=>Math.max(0,e-1));else if(e.key===`d`&&f[i]?.id!==void 0)s(f[i]??null);else return;e.preventDefault()}},children:[(0,B.jsx)(`p`,{className:`muted taskops-path`,children:t}),n.kind===`loading`&&(0,B.jsx)(`p`,{className:`muted`,children:W(`tasks`,`fieldNotes.loading`)}),n.kind===`error`&&(0,B.jsx)(`p`,{className:`error`,children:n.message}),n.kind===`ready`&&f.length===0&&(0,B.jsx)(`p`,{className:`muted`,children:W(`tasks`,`fieldNotes.empty`)}),f.length>0&&(0,B.jsx)(`ul`,{className:`notes choices`,ref:u,children:f.map((e,t)=>(0,B.jsx)(`li`,{children:(0,B.jsxs)(`button`,{type:`button`,className:`note ${t===i?`is-selected`:``}`,onClick:()=>a(t),autoFocus:t===0,children:[(0,B.jsxs)(`span`,{className:`note-head mono`,children:[t===i?`▸ `:` `,xA(e.at),` · `,e.author]}),(0,B.jsx)(`span`,{className:`note-text`,children:e.text})]})},`${e.at}:${t}`))}),o&&(0,B.jsxs)(`div`,{className:`note-confirm`,children:[(0,B.jsx)(`p`,{children:(0,B.jsx)(`strong`,{children:W(`tasks`,`fieldNotes.confirmDelete.title`)})}),(0,B.jsx)(`p`,{className:`muted`,children:W(`tasks`,`fieldNotes.confirmDelete.body`,{text:o.text})}),c&&(0,B.jsx)(`p`,{className:`error`,children:c}),(0,B.jsxs)(`div`,{className:`actions`,children:[(0,B.jsx)(`button`,{type:`button`,className:`link`,onClick:()=>s(null),children:L(`dialog.cancel`)}),(0,B.jsx)(`button`,{type:`button`,className:`button is-danger`,onClick:()=>void p(o),children:L(`taskops.retire`)})]})]}),!o&&(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`p`,{className:`muted taskops-hint keys-only`,children:W(`tasks`,`fieldNotes.footerDeletable`)}),(0,B.jsxs)(`div`,{className:`actions`,children:[(0,B.jsx)(`button`,{type:`button`,className:`link`,disabled:f[i]?.id===void 0,onClick:()=>s(f[i]??null),children:L(`taskops.retire`)}),(0,B.jsx)(`button`,{type:`button`,className:`link`,onClick:xe,children:L(`taskops.close`)})]})]})]})})}var CA=[`backlog`,`in_progress`,`in_review`,`done`,`canceled`,`error`],wA={backlog:`status.backlog`,in_progress:`status.inProgress`,in_review:`status.inReview`,done:`status.done`,canceled:`status.canceled`,error:`status.error`},TA=e=>({binding:e,key:Or(e)??void 0});async function EA(e,t){if(!e){U(L(`menu.nothingToCopy`,{what:t}),`error`);return}try{await navigator.clipboard.writeText(e),U(L(`menu.copied`,{text:e}))}catch{U(L(`menu.copyFailed`),`error`)}}function DA(e,t,n){let r=[{label:L(`menu.newTask`),section:`open`,run:()=>Wo(t)}],i=n.mainTaskId;return i&&(n.first||r.push({label:W(`tasks`,`menu.moveToTop`),section:`edit`,run:()=>void e.client.request(`task.move`,{taskId:i,direction:`top`}).catch(e=>U(W(`tasks`,`toast.moveFailed`,{error:String(e)}),`error`))}),r.push({label:W(`tasks`,`menu.reorderProject`),section:`edit`,...TA(`sidebar.localMerge`),run:()=>OA()})),r.push({label:W(`tasks`,`menu.fieldNotes`),section:`notes`,run:()=>V.set((0,B.jsx)(SA,{model:e,repo:t}))}),i&&r.push({label:W(`tasks`,`menu.forgetProject`),section:`danger`,danger:!0,run:()=>V.set(Kc(e,t,n.label))}),r}function OA(){ka(!Oa.get()),document.querySelector(`.rail`)?.focus()}function kA(e,t,n){let r=e.client,i=[];n&&(i.push({label:L(`menu.closeTab`),section:`tab`,run:()=>V.set((0,B.jsx)(Ae,{title:L(`confirm.closeTabTitle`,{tab:n.title??n.engineName??n.id}),body:L(`confirm.closeTabBody`),confirmLabel:L(`menu.closeTab`),onConfirm:async()=>{await r.request(`tab.close`,{taskId:t.id,tabId:n.id}),await e.refreshTabsNow()}}))}),i.push(...mA(e,t.id,n))),i.push({label:L(`menu.newChat`),section:`open`,run:()=>void Ni(e,t.id)}),i.push({label:L(`menu.newChatPick`),section:`open`,run:()=>V.set((0,B.jsx)(Li,{model:e,taskId:t.id}))}),i.push({label:L(`menu.newShell`),section:`open`,run:()=>void Pi(e,t.id,{kind:`shell`}).catch(e=>U(String(e),`error`))}),t.hasPrompt&&i.push({label:W(`tasks`,`menu.runAgain`),section:`open`,run:()=>V.set((0,B.jsx)(bA,{model:e,task:t}))});let a=!t.machine;a&&i.push({label:W(`tasks`,`menu.openEditor`),section:`open`,...TA(`tasks.openWorktree`),run:()=>void Vc(e,t.id)}),i.push({label:L(`menu.rename`),section:`edit`,...TA(`sidebar.rename`),run:()=>V.set((0,B.jsx)(ke,{title:L(`menu.rename`),initial:t.title,submitLabel:L(`dialog.save`),onSubmit:e=>r.request(`task.rename`,{taskId:t.id,title:e}).then(()=>{})}))}),t.kind!==`main`&&i.push({label:t.pinned?L(`menu.unpin`):L(`menu.pin`),section:`edit`,...TA(`sidebar.pin`),run:()=>void r.request(`task.pin`,{taskId:t.id,pinned:!t.pinned}).catch(e=>U(String(e),`error`))}),a&&i.push({label:W(`tasks`,`menu.reorder`),section:`edit`,...TA(`sidebar.localMerge`),run:()=>OA()}),i.push({label:L(`menu.setStatus`),section:`edit`,children:CA.map(e=>({label:L(wA[e]),checked:e===t.status,run:()=>void r.request(`task.setStatus`,{taskId:t.id,status:e}).catch(e=>U(String(e),`error`))}))}),a&&i.push({label:L(`menu.changeEngine`),section:`edit`,...TA(`tasks.cycleEngine`),run:()=>V.set((0,B.jsx)(yA,{model:e,taskId:t.id}))}),t.pr?.checkState===`failing`&&i.push({label:W(`tasks`,`menu.fixChecks`),section:`git`,key:Ct(`files.fixChecks`),run:()=>void Bc(e,t.id,L(`taskops.fixSent`))}),t.kind===`task`&&t.branch&&a&&i.push({label:W(`tasks`,`menu.syncBase`),section:`git`,key:Ct(`files.syncBase`),run:()=>void Rc(e,t.id)}),t.branch&&i.push({label:L(`menu.renameBranch`),section:`git`,...TA(`tasks.renameBranch`),run:()=>V.set((0,B.jsx)(ke,{title:L(`menu.renameBranch`),initial:t.branch,submitLabel:L(`dialog.save`),onSubmit:e=>r.request(`task.setBranch`,{taskId:t.id,branch:e}).then(()=>{})}))}),t.kind===`task`&&t.branch&&i.push({label:L(`menu.land`),section:`git`,run:()=>void Ic(e,t)});let o=[{label:L(`menu.copyWhat.id`),run:()=>void EA(t.id,L(`menu.what.id`))}];return t.branch&&o.push({label:L(`menu.copyWhat.branch`),run:()=>void EA(t.branch,L(`menu.what.branch`))}),o.push({label:L(`menu.copyWhat.path`),run:()=>void r.request(`task.get`,{taskId:t.id}).then(e=>EA(e.task.worktreePath,L(`menu.what.path`))).catch(e=>U(String(e),`error`))}),i.push({label:L(`menu.copy`),section:`copy`,children:o}),t.kind!==`main`&&i.push({label:W(`tasks`,t.archived?`menu.unarchive`:`menu.archive`),section:`danger`,run:()=>void Gc(e,t)}),i.push({label:L(`menu.removeSession`),section:`danger`,...TA(`sidebar.delete`),danger:!0,run:()=>V.set(t.kind===`main`?Wc(e,t):Uc(e,t))}),i}var AA=`rove.collapsedProjects`,jA=`rove.foldedTasks`,MA=`rove.openedTasks`,NA=600;function PA(e){try{let t=JSON.parse(localStorage.getItem(e)??`[]`);return new Set(Array.isArray(t)?t.filter(e=>typeof e==`string`):[])}catch{return new Set}}function FA(e,t){try{localStorage.setItem(e,JSON.stringify([...t]))}catch{}}var IA=(e,t)=>{let n=new Set(e);return n.delete(t)||n.add(t),n};function LA(){let e=v(Ta),[t,n]=(0,g.useState)({active:!1,query:``}),[r,i]=(0,g.useState)(!1),a=()=>i(e=>!e),[o,s]=(0,g.useState)(()=>PA(AA)),c=e=>s(t=>{let n=IA(t,e);return FA(AA,n),n}),[l,u]=(0,g.useState)(()=>({folded:PA(jA),opened:PA(MA)}));return{sort:e,cycleSort:Da,search:t,setSearch:n,archivedOpen:r,toggleArchived:a,collapsed:o,toggleProject:c,hand:l,toggleTaskFold:(e,t)=>u(n=>{let r=new Set(n.folded),i=new Set(n.opened);return t?(r.delete(e),i.add(e)):(i.delete(e),r.add(e)),FA(jA,r),FA(MA,i),{folded:r,opened:i}})}}var RA=[`sidebar.nav`,`sidebar.goto`,`sidebar.select`,`sidebar.tree.open`,`sidebar.rename`,`sidebar.pin`,`sidebar.localMerge`,`sidebar.delete`,`sidebar.sort`,`sidebar.search.enter`,`tasks.renameBranch`,`tasks.cycleEngine`,`tasks.openWorktree`,`tasks.update`,`tasks.focusEngine`,`task.new`,`settings.open.sidebar`,`worktrees.open.sidebar`];function zA(e){for(let t of e)for(let e of RA){let n=St(e).indexOf(t);if(n>=0)return{id:e,slot:n}}return null}function BA(e,t,n,r){let{search:i,setSearch:a}=n,[o,s]=(0,g.useState)(null),c=(0,g.useRef)(0),l=t.filter(e=>e.kind!==`project`),u=l.findIndex(e=>e.id===o);(0,g.useEffect)(()=>{u<0&&s(r.selectedId&&l.some(e=>e.id===r.selectedId)?r.selectedId:l[0]?.id??null)},[u,l,r.selectedId]);let d=l[u],f=d?.kind===`task`||d?.kind===`pane`?d.task.id:null;(0,g.useEffect)(()=>es.set(f),[f]);let p=l[0]?.id??null;(0,g.useEffect)(()=>{i.query,i.active&&s(p)},[i.active,i.query,p]);let m=e=>{let t=l[Math.max(0,Math.min(l.length-1,e))];t&&s(t.id)},h=t=>{t?.kind===`archived`&&n.toggleArchived(),t?.kind===`task`&&e.select(t.task.id),t?.kind===`pane`&&gA(e,t),t&&t.kind!==`archived`&&zn()},_=(t,n)=>{t?.kind===`task`&&ce(kA(e,t.task,null),n)?.run?.()},v=async t=>{if(t?.kind===`task`&&t.machine===void 0)try{let{engines:n}=await e.client.request(`engines.list`),r=n.filter(e=>e.ready!==!1),i=r[(r.findIndex(e=>e.id===t.task.engine?.id)+1)%r.length];if(!i||i.id===t.task.engine?.id)return;await e.client.request(`task.setCommand`,{taskId:t.task.id,engine:i.id}),U(L(`rail.engineSwitched`,{engine:i.name}))}catch(e){U(L(`rail.engineSwitchFailed`,{error:e instanceof Error?e.message:String(e)}),`error`)}};return{cursor:o,setCursor:s,onKeyDown:t=>{let o=l[u];if(i.active){if(t.metaKey||t.ctrlKey||t.altKey)return;if(t.key===`Escape`)a({active:!1,query:``});else if(t.key===`Enter`)h(o),a({active:!1,query:``});else if(t.key===`ArrowDown`)m(u+1);else if(t.key===`ArrowUp`)m(u-1);else if(t.key===`Backspace`)a(e=>({...e,query:e.query.slice(0,-1)}));else if(t.key.length===1)a(e=>({...e,query:e.query+t.key}));else return;t.preventDefault();return}let s=zA(mr(t));if(Oa.get()){let n=o?.kind===`task`&&o.machine===void 0;if(s?.id===`sidebar.nav`)n&&Aa(e,o,s.slot%2==0?1:-1);else if(s?.id===`sidebar.localMerge`||t.key===`Enter`||t.key===`Escape`)Oa.set(!1);else return;t.preventDefault();return}switch(s?.id){case`sidebar.nav`:m(s.slot%2==0?u+1:u-1);break;case`sidebar.goto`:s.slot%2==1?m(l.length-1):Date.now()-c.current<NA?(m(0),c.current=0):c.current=Date.now();break;case`sidebar.select`:case`sidebar.tree.open`:h(o);break;case`tasks.focusEngine`:document.querySelector(`.term-slot:not(.is-hidden) textarea`)?.focus();break;case`sidebar.rename`:case`sidebar.pin`:case`sidebar.delete`:case`tasks.renameBranch`:case`tasks.openWorktree`:_(o,s.id);break;case`tasks.cycleEngine`:v(o);break;case`sidebar.localMerge`:o?.machine===void 0&&ka(!0);break;case`sidebar.sort`:n.cycleSort(),U(W(`tasks`,`sort.label`,{mode:W(`tasks`,`sort.modes.${Ta.get()}`)}));break;case`sidebar.search.enter`:a({active:!0,query:``});break;case`task.new`:r.onNewTask(o?.kind===`task`||o?.kind===`pane`?o.task.repo:void 0,o?.machine);break;case`settings.open.sidebar`:r.onSettings();break;case`worktrees.open.sidebar`:Vn(`worktrees`);break;case`tasks.update`:Vn(`update`);break;default:return}t.preventDefault()}}}var VA=(e,t,n)=>`~pane:${e}:${t}:${n}`;function HA(e,t){return e.flatMap(e=>e.kind===`task`?[e,...(t[e.task.id]??[]).flatMap(t=>{let n=t.split;if(!n||!Ui(n))return[];let r=Ki(n,Nn(t));return Hi(n.root).map(n=>({id:VA(e.task.id,t.id,n.id),kind:`pane`,task:e.task,tab:t,leaf:n.id,label:r.get(n.id)??n.id,depth:e.depth+1,...e.machine===void 0?{}:{machine:e.machine}}))})]:[e])}var UA=450,WA=!1;typeof document<`u`&&(document.addEventListener(`keydown`,()=>{WA=!0},!0),document.addEventListener(`pointerdown`,()=>{WA=!1},!0));var GA=e=>{let t=e.querySelector(`.row-title`);return!!t&&t.scrollWidth>t.clientWidth};function KA(e,t){let[n,r]=(0,g.useState)(null),i=(0,g.useRef)(null),a=(0,g.useRef)(null),o=()=>{i.current!==null&&window.clearTimeout(i.current),i.current=null},s=e=>{o(),i.current=window.setTimeout(()=>r(e.getBoundingClientRect()),UA)};return(0,g.useEffect)(()=>{let e=a.current,n=e?.closest(`.rail`);if(!t||!e||!n||!WA||!n.contains(document.activeElement)||!GA(e))return;let i=()=>{o(),r(null)},c=e=>{e.relatedTarget instanceof Node&&n.contains(e.relatedTarget)||i()};return s(e),n.addEventListener(`focusout`,c),()=>{n.removeEventListener(`focusout`,c),i()}},[t]),(0,g.useEffect)(()=>()=>{i.current!==null&&window.clearTimeout(i.current)},[]),{ref:e=>{a.current=e},onPointerEnter:e=>{e.pointerType===`touch`||!GA(e.currentTarget)||s(e.currentTarget)},onPointerLeave:()=>{o(),r(null)},tip:n?(0,ym.createPortal)((0,B.jsx)(`div`,{className:`row-tip`,role:`tooltip`,style:{top:n.top+n.height/2,left:n.right+8},children:e}),document.body):null}}var qA=1.2,JA=.3,YA=20,XA=.35,ZA=.25,QA=.12,$A=2,ej=1,tj={error:{dots:[0,4,8,2,6],bright:1},done:{dots:[3,7,5,2],bright:1},idle:{dots:[1,2,5,8,7,6,3,0],bright:.6}},nj=Array.from({length:9},(e,t)=>Math.hypot(t%3-1,Math.floor(t/3)-1));function rj(e){return XA+.65*(.5+.5*Math.cos(2*Math.PI*e/qA))}function ij(e,t,n,r=1){switch(e){case`working`:{let e=t*80/1e3/r;return nj.map(t=>rj(e-t*JA))}case`waiting`:{let e=[0,1,4,5].includes(Math.floor(t/r)%YA);return Array(9).fill(e?ZA:1)}default:{let t=tj[e],r=Array(9).fill(QA);return t?.dots.forEach((e,i)=>{let a=Math.min(Math.max(n-i*ej,0),$A)/$A;r[e]=t.bright*a+QA*(1-a)}),r}}}function aj(e,t){let n=tj[e];return!n||t<(n.dots.length-1)*ej+$A}var oj=3,sj=new Set,cj;function lj(e,t){let n=typeof matchMedia==`function`&&matchMedia(`(prefers-reduced-motion: reduce)`).matches,r=1/0,i=e.held+t-e.step,a=aj(e.look,n?r:i);return ij(e.look,t,n?r:i,n?oj:1).forEach((t,n)=>{let r=e.el.children[n].style;r.opacity=t.toFixed(3)}),a}function uj(){let e=Math.floor(performance.now()/80);for(let t of sj)lj(t,e)||sj.delete(t);dj()}function dj(){cj=sj.size?window.setTimeout(uj,80-performance.now()%80+2):void 0}function fj(e,t,n){let r=Math.floor(performance.now()/80),i=n>0?Math.max(Date.now()-n,0):1/0,a={el:e,look:t,step:r,held:Math.floor(i/80)};return lj(a,r)&&(sj.add(a),cj===void 0&&dj()),()=>{sj.delete(a)}}function pj({status:e}){let{look:t,tone:n}=td(e);return(0,B.jsx)(mj,{look:t,tone:n,since:e?.since??0},t)}function mj({look:e,tone:t,since:n}){let r=(0,g.useRef)(null),[i]=(0,g.useState)(n);return(0,g.useLayoutEffect)(()=>{let t=r.current;return t?fj(t,e,i):void 0},[e,i]),(0,B.jsx)(`span`,{ref:r,className:`dots tone-${t}`,"aria-hidden":`true`,children:Array.from({length:9},(e,t)=>(0,B.jsx)(`i`,{},t))})}function hj(e){return e.replace(/\[`[0-9a-f]{7,40}`\]\([^)]*\)\s*/g,``).replace(/\s+[—-]\s+\[@[^\]]+\]\([^)]*\)\s*$/,``).trim()}function gj(e){let t=[],n=(e,n)=>t.push({kind:e,text:n,id:t.length});for(let r of e.split(/\r?\n/)){let e=r.trimEnd();if(e.trim()===``)continue;let i=/^#{1,6}\s+(.*)$/.exec(e);if(i){n(`heading`,i[1]??``);continue}let a=/^\s*[-*]\s+(.*)$/.exec(e);if(a){n(`item`,a[1]??``);continue}let o=t.at(-1);o&&o.kind!==`heading`?o.text=`${o.text} ${e.trim()}`:n(`para`,e.trim())}return t.map(e=>e.kind===`item`?{...e,text:hj(e.text)}:e)}var _j=/\[([^\]]+)\]\((https?:\/\/[^)\s]+)\)|`([^`]+)`|\*\*([^*]+)\*\*/g;function vj(e){let t=[],n=0;for(let r of e.matchAll(_j)){let i=r.index??0;i>n&&t.push(e.slice(n,i));let[a,o,s,c,l]=r;o!==void 0&&s!==void 0?t.push((0,B.jsx)(`a`,{href:s,target:`_blank`,rel:`noopener noreferrer`,children:vj(o)},i)):c===void 0?l!==void 0&&t.push((0,B.jsx)(`b`,{children:l},i)):t.push((0,B.jsx)(`code`,{children:c},i)),n=i+a.length}return n<e.length&&t.push(e.slice(n)),t}function yj({body:e}){let t=gj(e),n=[],r=[],i=()=>{r.length>0&&n.push((0,B.jsx)(`ul`,{children:r},`ul-${n.length}`)),r=[]};for(let e of t){if(e.kind===`item`){r.push((0,B.jsx)(`li`,{children:vj(e.text)},e.id));continue}i(),n.push(e.kind===`heading`?(0,B.jsx)(`h3`,{children:e.text},e.id):(0,B.jsx)(`p`,{children:vj(e.text)},e.id))}return i(),(0,B.jsx)(`div`,{className:`release-md`,children:n})}var bj=_(null),xj=(e,t)=>e.replace(/\{(\w+)\}/g,(e,n)=>t[n]??e),Sj=e=>`https://github.com/Sma1lboy/rove/releases/tag/v${e}`;function Cj(){return z()===`zh`?$e:Qe}function wj(e){return e.request(`update.check`,{force:!0,locale:te.get()}).then(bj.set,()=>{})}function Tj(){let e=Cj(),t=v(bj);return t?.info?.hasUpdate?(0,B.jsxs)(`button`,{type:`button`,className:`kicker update-chip`,title:xj(e.chip,{version:t.info.latest}),onClick:()=>Vn(`update`),children:[`↑`,(0,B.jsxs)(`span`,{className:`update-chip-version`,children:[` `,t.info.latest]})]}):null}function Ej({client:e}){let t=Cj(),n=v(bj),[r,i]=(0,g.useState)(!1),[a,o]=(0,g.useState)(`release`),[s,c]=(0,g.useState)(null),l=(0,g.useRef)(null);(0,g.useEffect)(()=>{l.current?.focus(),wj(e).finally(()=>i(!0))},[e]);let u=n?.info??null,d=n?.current??``,f=u?.latest??d,p=u?.hasUpdate===!0,m=r&&u===null,h=r&&u!==null&&!p,_=n?.notes??[],y=_[0]?.url??(f?Sj(f):null),b=[{id:`release`,key:`R`,label:t.actions.openRelease,detail:y??t.releaseUrlUnavailable},{id:`close`,key:`Q`,label:t.actions.close,detail:t.actions.closeDetail}],x=e=>{if(e===`close`)return H.set(null);c(y&&window.open(y,`_blank`,`noopener`)!==null?t.statusReleaseOpened:t.statusReleaseError)};return(0,B.jsxs)(`div`,{className:`page`,tabIndex:0,ref:l,onKeyDown:e=>{if(e.ctrlKey&&!e.metaKey&&!e.altKey&&e.key.toLowerCase()===`c`&&!window.getSelection()?.toString())return e.preventDefault(),x(`close`);if(e.metaKey||e.ctrlKey||e.altKey)return;let t=b.findIndex(e=>e.id===a);if(e.key===`j`||e.key===`ArrowDown`)o(b[(t+1)%b.length]?.id??`close`);else if(e.key===`k`||e.key===`ArrowUp`)o(b[(t-1+b.length)%b.length]?.id??`close`);else if(e.key===`Enter`)x(a);else if(e.key===`r`)x(`release`);else if(e.key===`q`||e.key===`Escape`)x(`close`);else return;e.preventDefault()},children:[(0,B.jsxs)(`div`,{className:`page-head`,children:[(0,B.jsx)(`h1`,{className:`page-title mono`,children:t.pageTitle}),(0,B.jsx)(`button`,{type:`button`,className:`link muted mono`,onClick:()=>x(`close`),children:_i()?L(`dialog.close`):t.closeHint})]}),(0,B.jsxs)(`p`,{className:`mono update-versions`,children:[(0,B.jsx)(`span`,{className:`muted`,children:t.current}),` `,(0,B.jsxs)(`b`,{children:[`v`,d]}),` `,(0,B.jsx)(`span`,{className:`muted`,children:t.latest}),` `,m?(0,B.jsx)(`b`,{className:`muted`,children:t.latestUnknown}):r?(0,B.jsxs)(`b`,{className:p?`tone-warning`:`tone-success`,children:[`v`,f]}):(0,B.jsx)(`span`,{className:`muted`,children:`…`})]}),m&&(0,B.jsx)(`p`,{className:`muted`,children:t.registryRetry}),h&&(0,B.jsx)(`p`,{className:`tone-success`,children:t.upToDate}),p&&(0,B.jsx)(`p`,{className:`mono muted`,children:`rove update`}),(0,B.jsx)(`div`,{className:`update-actions`,children:b.map(e=>(0,B.jsxs)(`button`,{type:`button`,className:`update-action ${a===e.id?`is-cursor`:``}`,onClick:()=>x(e.id),children:[(0,B.jsxs)(`span`,{className:`tone-accent mono update-key`,children:[`[`,e.key,`]`]}),(0,B.jsx)(`span`,{className:`update-label`,children:e.label}),(0,B.jsx)(`span`,{className:`muted`,children:e.detail})]},e.id))}),s&&(0,B.jsx)(`p`,{className:`mono tone-accent`,children:s}),p&&(0,B.jsx)(`p`,{className:`mono muted`,children:xj(t.changesSectionHeader,{from:d,to:f})}),!r&&(0,B.jsx)(`p`,{className:`muted`,children:t.loadingNotes}),r&&p&&_.length===0&&(0,B.jsx)(`p`,{className:`muted`,children:t.notesUnavailable}),_.map(e=>(0,B.jsxs)(`section`,{className:`release-notes`,children:[(0,B.jsxs)(`h2`,{className:`mono`,children:[`v`,e.version]}),(0,B.jsx)(yj,{body:e.body})]},e.version))]})}var Dj=`rove.whatsNewSeenVersion`,Oj=e=>e.split(/[.-]/).slice(0,3).map(Number),kj=(e,t)=>{let[n,r]=[Oj(e),Oj(t)];for(let e=0;e<3;e++)if((n[e]??0)!==(r[e]??0))return(n[e]??0)>(r[e]??0);return!1};function Aj(e,t){let n=localStorage.getItem(Dj);localStorage.setItem(Dj,t),!(!n||!kj(t,n))&&e.request(`release.notes`,{version:t.replace(/-.*$/,``),locale:te.get()}).then(e=>V.set((0,B.jsx)(jj,{from:n,to:t,notes:e.notes})),()=>V.set((0,B.jsx)(jj,{from:n,to:t,notes:null})))}function jj(e){let t=Cj(),n=(0,g.useRef)(null);return(0,g.useEffect)(()=>n.current?.focus(),[]),(0,g.useEffect)(()=>{let e=e=>{e.key===`q`&&V.set(null)};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[]),(0,B.jsxs)(De,{title:t.whatsNew.title,wide:!0,children:[(0,B.jsx)(`p`,{className:`muted`,children:xj(t.whatsNew.upgraded,{from:e.from,to:e.to})}),(0,B.jsx)(`div`,{className:`whats-new-body`,children:e.notes?(0,B.jsx)(yj,{body:e.notes.body}):(0,B.jsx)(`p`,{className:`muted`,children:t.whatsNew.notesUnavailable})}),(0,B.jsxs)(`div`,{className:`actions`,children:[(0,B.jsx)(`span`,{className:`mono muted whats-new-keys`,children:L(`whatsNew.keys`)}),(0,B.jsx)(`a`,{className:`link`,href:e.notes?.url??Sj(e.to),target:`_blank`,rel:`noopener noreferrer`,children:L(`whatsNew.openRelease`)}),(0,B.jsx)(`button`,{ref:n,type:`button`,className:`button`,onClick:()=>V.set(null),children:L(`whatsNew.continue`)})]})]})}function Mj(e){let t=W(`doctor`,`fix.humanOnlyWhy`),n=[];if(e.git||n.push({id:`git`,label:W(`doctor`,`fix.git`),action:W(`doctor`,`fix.gitAction`),why:t}),e.engines.length===0){let r=e.signedOut.length>0;n.push({id:`engine`,label:W(`doctor`,r?`fix.noEngineLogin`:`fix.noEngine`),action:W(`doctor`,r?`fix.noEngineLoginAction`:`fix.noEngineAction`,{list:e.signedOut.map(e=>e.id).join(`, `)}),why:t})}return n}function Nj({model:e}){z(),v(mt);let[t,n]=(0,g.useState)(null);(0,g.useEffect)(()=>{let t=!0;return e.client.request(`welcome.env`).then(e=>t&&n(e)).catch(()=>{}),()=>{t=!1}},[e]);let r=[{cap:Ct(`task.new.global`),msg:`stepNew`},{cap:pt(`f1`),msg:`stepHelp`},{cap:bt(),msg:`stepPrefix`}],i=t===null?null:t.engines.length>0?{key:`enginesFound`,warn:!1,list:t.engines.map(e=>e.name).join(` · `)}:t.signedOut.length>0?{key:`enginesSignedOut`,warn:!0,list:t.signedOut.map(e=>e.name).join(` · `)}:{key:`enginesMissing`,warn:!0,list:``},a=t!==null&&(t.engines.length===0||!t.git)?Mj(t):[],o=t?.start??null;return(0,B.jsxs)(`div`,{className:`welcome`,"data-field":`welcome`,children:[(0,B.jsx)(`h1`,{className:`welcome-title`,children:W(`workspace`,`welcome.title`)}),(0,B.jsx)(`p`,{className:`muted`,children:W(`workspace`,`welcome.tagline`)}),(0,B.jsx)(`dl`,{className:`welcome-steps keys-only`,children:r.map(e=>(0,B.jsxs)(`div`,{className:`welcome-step`,children:[(0,B.jsx)(`dt`,{className:`welcome-cap mono`,children:e.cap}),(0,B.jsx)(`dd`,{className:`muted`,children:W(`workspace`,`welcome.${e.msg}`)})]},e.msg))}),(0,B.jsx)(`p`,{className:`muted`,children:W(`workspace`,`welcome.worktreeExplain`)}),t!==null&&i!==null&&(0,B.jsxs)(`div`,{className:`welcome-env`,children:[(0,B.jsx)(`p`,{className:i.warn?`tone-warn`:`muted`,children:W(`workspace`,`welcome.${i.key}`,{list:i.list})}),!t.git&&(0,B.jsx)(`p`,{className:`tone-warn`,children:W(`workspace`,`welcome.gitMissing`)}),a.map(e=>(0,B.jsxs)(`div`,{className:`welcome-fix`,children:[(0,B.jsx)(`p`,{className:`tone-warn`,children:e.label}),(0,B.jsx)(`p`,{className:`tone-accent mono`,children:e.action}),(0,B.jsx)(`p`,{className:`muted`,children:e.why})]},e.id)),a.length>0&&(0,B.jsx)(`p`,{className:`muted`,children:W(`common`,`failureHint`,{command:`rove doctor`})})]}),t!==null&&o!==null&&(0,B.jsxs)(`div`,{className:`welcome-start`,children:[(0,B.jsx)(`button`,{type:`button`,className:`button`,"data-field":`quick-start`,onClick:()=>V.set((0,B.jsx)(Ti,{model:e,start:o,engines:t.engines})),children:W(`onboarding`,`quickStart`)}),(0,B.jsx)(`p`,{className:`muted`,children:_i()?L(`pages.quickIntentTouch`):W(`onboarding`,`quickIntent`,{key:Ct(`task.new.global`)})})]}),(0,B.jsx)(`p`,{className:`muted welcome-docs`,children:W(`workspace`,`welcome.docsHint`)})]})}function Pj(e,t){e.preventDefault(),le.set({x:e.clientX,y:e.clientY,items:t,target:e.currentTarget,fromKeyboard:e.button!==2})}function Fj({model:e,narrow:t}){let n=z(),r=v(e.tasks),i=v(e.remote),a=za(e),o=v(e.tabs),s=v(e.tabsSettled),c=v(e.selection),l=r?.tasks??[],u=r?.attention.filter(e=>e.unread).length??0,d=c.taskId,f=new Map([...l,...i].map(e=>[e.id,e])),p=LA(),m=v(Oa),h=e=>jn({tasks:l,remote:i,machines:a,sort:p.sort,query:e,fold:{...p.hand,selectedId:d??void 0}}),_=h(p.search.active?p.search.query:``),{groups:y}=_,b=p.search.active?_.rows:Em(Pn(HA(Pm(_.rows,o,c.taskId,s),o),p.collapsed),r?.archived??[],p.archivedOpen,{...p.hand,selectedId:d??void 0}),x=e=>e.filter(e=>e.kind!==`project`),S=(n===`zh`?Ye:Je).machine,C=new Set(a.filter(e=>e.state!==`online`).map(e=>e.alias)),w=y.find(e=>e.tasks.some(e=>e.kind===`main`))?.repo,T=e=>({mainTaskId:y.find(t=>t.repo===e)?.tasks.find(e=>e.kind===`main`)?.id??null,label:_n(e),first:e===w}),E=Nm(e,l,!p.search.active,p.sort==="default",T),D=E.places(b),O=()=>V.set((0,B.jsx)(Ac,{model:e})),k=BA(e,b,p,{selectedId:d,onNewTask:Wo,onSettings:O}),ee=x(h(``).rows).length,A=(0,g.useRef)(null),j=v(hd)&&!t,M=v(gd)&&j,N=t?l.find(e=>e.id===c.taskId&&!e.deleting)??null:null;return(0,B.jsxs)(`nav`,{className:`rail ${j?`is-folded`:``}`,ref:A,inert:j&&!M,"aria-hidden":j&&!M,onMouseEnter:j?()=>vd(!0):void 0,onMouseLeave:j?()=>vd(!1):void 0,tabIndex:0,onKeyDown:e=>{zl(`sidebar`),k.onKeyDown(e)},children:[(0,B.jsxs)(`header`,{className:`rail-head`,children:[(0,B.jsxs)(`span`,{className:`wordmark`,children:[(0,B.jsx)(`span`,{className:`bracket`,children:`[`}),` rove `,(0,B.jsx)(`span`,{className:`bracket`,children:`]`})]}),(0,B.jsxs)(`span`,{className:`badge-host`,children:[(0,B.jsx)(`button`,{type:`button`,className:`kicker inbox-chip ${u>0?`is-accent`:``}`,onClick:()=>V.set((0,B.jsx)(Sa,{model:e})),children:L(`rail.inbox`,{count:u})}),(0,B.jsx)(pl,{model:e,bindingId:`inbox.show`})]}),(0,B.jsx)(Tj,{})]}),m&&(0,B.jsxs)(`div`,{className:`rail-search mono`,children:[(0,B.jsx)(`span`,{className:`tone-accent`,children:W(`tasks`,`moveChip`).trim()}),(0,B.jsx)(`span`,{className:`muted keys-only`,children:L(`taskops.moveHint`)})]}),p.search.active&&(0,B.jsxs)(`div`,{className:`rail-search mono`,children:[(0,B.jsx)(`span`,{className:`tone-accent`,children:`/`}),(0,B.jsx)(`span`,{children:p.search.query}),(0,B.jsx)(`span`,{className:`caret`,children:`█`}),(0,B.jsx)(`span`,{className:`muted`,children:p.search.query?`${x(b).length}/${ee}`:L(`rail.searchPlaceholder`)})]}),(0,B.jsx)(_m,{model:e}),(0,B.jsxs)(`div`,{className:`rail-body ${E.dragging?`is-sorting`:``}`,...E.body,children:[r&&l.length===0&&i.length===0&&t&&(0,B.jsx)(Nj,{model:e}),r&&l.length===0&&i.length===0&&!t&&(0,B.jsxs)(`div`,{className:`empty`,children:[(0,B.jsx)(`p`,{children:L(`rail.empty`)}),(0,B.jsx)(`p`,{className:`muted`,children:L(`rail.emptyHint`)})]}),N&&(0,B.jsx)(Ed,{title:N.title}),b.map((t,n)=>t.kind===`pane`?(0,B.jsx)(_A,{model:e,row:t,guides:jm(b,n),cursor:t.id===k.cursor,place:D(t),onClick:()=>{k.setCursor(t.id),gA(e,t),zn()},onMenu:n=>{k.setCursor(t.id),Pj(n,fA(e,t.task.id,t.tab,t.leaf))}},t.id):(0,B.jsx)(Ij,{row:t,guides:t.kind===`task`&&t.depth>1?jm(b,n):void 0,cloud:Ia(t,a,S),tabs:t.kind===`task`?o[t.task.id]:void 0,selected:t.id===d,cursor:t.id===k.cursor,stale:t.machine!==void 0&&C.has(t.machine),collapsed:t.kind===`project`&&p.collapsed.has(t.id),drag:E.props(t),dragging:E.dragging===t.id,place:D(t),onNewTask:t.kind===`project`&&!t.noProject?()=>Wo(t.repo,t.machine):void 0,moving:m&&t.machine===void 0&&(t.kind===`project`?!t.noProject&&T(t.repo).mainTaskId===k.cursor:t.id===k.cursor&&(t.kind!==`task`||t.task.kind!==`main`)),prTasks:t.kind===`task`?[t.task,...(t.fold?.descendantIds??[]).flatMap(e=>f.get(e)??[])]:void 0,rollup:t.kind===`task`&&t.fold?.collapsed?ad([t.task,...t.fold.descendantIds.flatMap(e=>f.get(e)??[])]):void 0,onToggleFold:()=>{t.kind===`task`&&p.toggleTaskFold(t.id,t.fold?.collapsed===!0),t.kind===`archived`&&p.toggleArchived()},onClick:()=>{k.setCursor(t.id),t.kind===`archived`&&p.toggleArchived(),t.kind===`project`&&p.toggleProject(t.id),t.kind===`task`&&(e.select(t.task.id),zn())},onMenu:n=>{if(!(t.kind===`project`&&(t.machine!==void 0||t.noProject))){if(t.kind===`project`){let r=T(t.repo);r.mainTaskId&&k.setCursor(r.mainTaskId),Pj(n,DA(e,t.repo,r));return}t.kind===`task`&&(k.setCursor(t.id),Pj(n,zj(Rj(kA(e,t.task,null),t.fold,()=>p.toggleTaskFold(t.id,t.fold?.collapsed===!0)),hA(e,t.task.id))))}}},t.id))]}),(0,B.jsxs)(`div`,{className:`rail-nav rail-foot`,children:[(0,B.jsxs)(`button`,{type:`button`,className:`rail-nav-row`,onClick:O,children:[(0,B.jsxs)(`svg`,{className:`rail-nav-icon`,viewBox:`0 0 24 24`,"aria-hidden":`true`,children:[(0,B.jsx)(`path`,{d:`M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z`}),(0,B.jsx)(`circle`,{cx:`12`,cy:`12`,r:`3`})]}),(0,B.jsx)(`span`,{children:L(`rail.settings`)})]}),(0,B.jsx)(pl,{model:e,bindingId:`settings.open`})]}),(0,B.jsx)(kd,{pane:`sidebar`}),!t&&!j&&(0,B.jsx)(xd,{rail:A})]})}function Ij(e){let{row:t}=e,n=KA(t.kind===`task`?Mn(t.task,e.tabs):``,e.cursor&&t.kind===`task`),r=e.dragging?`is-dragging`:``,i=`${e.cursor?`is-cursor`:``} ${e.moving?`is-moving`:``} ${e.stale?`is-stale`:``} ${r}`;if(t.kind===`project`)return(0,B.jsxs)(`h2`,{className:`project-head ${e.moving?`is-moving`:``} ${e.stale?`is-stale`:``} ${r}`,onContextMenu:e.onMenu,...e.place,...e.drag,children:[(0,B.jsxs)(`button`,{type:`button`,className:`project-toggle`,title:t.noProject?void 0:t.repo,"aria-expanded":!e.collapsed,onClick:e.onClick,children:[(0,B.jsx)(`span`,{className:`project-label`,children:t.label}),(0,B.jsx)(`svg`,{className:`project-chevron ${e.collapsed?`is-collapsed`:``}`,viewBox:`0 0 10 10`,"aria-hidden":`true`,children:(0,B.jsx)(`path`,{d:`M2.5 3.75 5 6.25l2.5-2.5`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.3`,strokeLinecap:`round`,strokeLinejoin:`round`})})]}),e.onNewTask&&(0,B.jsx)(`button`,{type:`button`,className:`project-add`,title:L(`rail.newTask`),onClick:e.onNewTask,children:`+`})]});if(t.kind===`archived`)return(0,B.jsx)(`button`,{type:`button`,className:`row count-row archived-row ${i}`,"aria-expanded":t.expanded,onClick:e.onClick,...e.place,children:(0,B.jsx)(`span`,{className:`row-title muted`,children:W(`tasks`,`archivedRow`,{count:t.count})})});let a=t.task,o=a.rowStatus?.kind===`running`;return(0,B.jsxs)(`button`,{type:`button`,ref:n.ref,className:`row task-row ${e.selected?`is-selected`:``} ${i} ${o?`is-running`:``}`,onClick:e.onClick,onContextMenu:e.onMenu,onPointerEnter:n.onPointerEnter,onPointerLeave:n.onPointerLeave,...e.place,...e.drag,children:[n.tip,e.guides&&(0,B.jsx)(`span`,{className:`child-indent`,"aria-hidden":`true`,children:e.guides.map((e,t)=>(0,B.jsx)(`span`,{className:`guide is-${e}`},t))}),(0,B.jsx)(`span`,{className:`row-title`,children:Mn(a,e.tabs)}),(0,B.jsxs)(`span`,{className:`chips`,children:[t.level!==void 0&&(0,B.jsx)(`span`,{className:`chip muted`,children:t.level}),(a.extraRepoCount??0)>0&&(0,B.jsxs)(`span`,{className:`chip muted`,title:L(`rail.extraRepos`,{count:a.extraRepoCount??0}),children:[`+`,a.extraRepoCount]}),t.fold?.collapsed&&(0,B.jsx)(Lj,{count:t.fold.count,onUnfold:e.onToggleFold}),a.pinned&&(0,B.jsx)(`span`,{className:`chip muted`,children:`▴`}),(0,B.jsx)(wm,{tasks:e.prTasks??[a]}),(0,B.jsx)(pj,{status:t.fold?.collapsed?e.rollup:a.rowStatus}),e.cloud&&(0,B.jsx)(La,{label:e.cloud})]})]})}function Lj(e){let t=W(`tasks`,`menu.expandChildren`);return(0,B.jsxs)(`span`,{role:`button`,tabIndex:-1,"aria-label":t,"aria-expanded":!1,className:`chip fold-toggle muted`,title:t,onClick:t=>{t.stopPropagation(),e.onUnfold()},children:[e.count,(0,B.jsx)(`svg`,{className:`project-chevron is-collapsed`,viewBox:`0 0 10 10`,"aria-hidden":`true`,children:(0,B.jsx)(`path`,{d:`M2.5 3.75 5 6.25l2.5-2.5`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.3`,strokeLinecap:`round`,strokeLinejoin:`round`})})]})}function Rj(e,t,n){if(!t)return e;let r={label:W(`tasks`,t.collapsed?`menu.expandChildren`:`menu.collapseChildren`),section:`open`,run:n},i=e.map(e=>e.section).lastIndexOf(`open`);return[...e.slice(0,i+1),r,...e.slice(i+1)]}function zj(e,t){let n=e.map(e=>e.section).lastIndexOf(`open`);return[...e.slice(0,n+1),...t,...e.slice(n+1)]}function Bj(e){return e===`localhost`||e.endsWith(`.localhost`)||e===`[::1]`||/^127(\.\d{1,3}){3}$/.test(e)}var Vj=/^(localhost|127(\.\d{1,3}){3}|\[::1\])(:\d+)?([/?#]|$)/i,Hj=/^[a-z][a-z0-9+.-]*:(?!\d+([/?#]|$))/i;function Uj(e){let t=e.trim();if(!t||/\s/.test(t)||Hj.test(t)&&!/^https?:\/\//i.test(t))return null;let n=/^https?:\/\//i.test(t)?t:Vj.test(t)?`http://${t}`:`https://${t.replace(/^\/\//,``)}`;try{let e=new URL(n);return e.hostname?e.href:null}catch{return null}}function Wj(e,t,n=Bj(t.hostname)){let r=new URL(e);return r.origin===t.origin?`self`:Bj(r.hostname)?n?`yes`:`remote`:r.protocol===`https:`?`yes`:`unreachable`}function Gj(e,t,n){let r=new URL(e).host;return t===`self`?{key:`self`,host:r}:t===`remote`?{key:`remote`,host:r}:t===`unreachable`?{key:`noFrame`,host:r}:n&&!n.reachable?{key:`unreachable`,host:r}:n&&!n.frameable?{key:`refuses`,host:r}:null}var Kj=6e4,qj=new Map;function Jj(e){let t=qj.get(e);return t&&Date.now()-t.at<Kj?t:null}function Yj(e,t,n){let[,r]=(0,g.useState)(0);(0,g.useEffect)(()=>{if(!n||Jj(t))return;let i=!0;return e.request(`browser.probe`,{url:t,origin:window.location.origin}).then(e=>qj.set(t,{probe:e,at:Date.now()}),()=>qj.set(t,{probe:null,at:Date.now()})).then(()=>i&&r(e=>e+1)),()=>{i=!1}},[e,t,n]);let i=n?Jj(t):null;return{pending:n&&!i,probe:i?.probe??null}}function Xj({d:e}){return(0,B.jsx)(`svg`,{viewBox:`0 0 16 16`,"aria-hidden":`true`,children:(0,B.jsx)(`path`,{d:e})})}var Zj=`M6.5 3.5h-3v9h9v-3M9.5 3.5h3v3M12.5 3.5l-5 5`;function Qj({model:e,tab:t,onNavigate:n,onStep:r}){z();let i=nu(t),[a,o]=(0,g.useState)(i),[s,c]=(0,g.useState)(!1),[l,u]=(0,g.useState)(0),d=v(e.client.conn).hello?.peer?.local,f=i?Wj(i,window.location,d):null;(0,g.useEffect)(()=>{o(i),c(!1)},[i]);let p=e=>{let t=Uj(e);c(t===null&&e.trim()!==``),t!==null&&(o(t),t===i?u(l+1):n(t))},m=i?new URL(i).hostname:``,h=f===`yes`&&i.startsWith(`https:`)&&!Bj(m),{pending:_,probe:y}=Yj(e.client,i,h),b=i&&f?Gj(i,f,y):null,x=f===`yes`&&!b&&!_,S=b?L(`browser.${b.key}`,{host:b.host}):f===null?L(s?`browser.invalid`:`browser.empty`):null;return(0,B.jsxs)(`div`,{className:`browser`,children:[(0,B.jsxs)(`form`,{className:`browser-bar`,onSubmit:e=>{e.preventDefault(),p(a)},children:[(0,B.jsx)(`button`,{type:`button`,className:`rail-bar-btn`,disabled:t.at<=0,title:L(`browser.back`),"aria-label":L(`browser.back`),onClick:()=>r(t.at-1),children:(0,B.jsx)(Xj,{d:`M10 3.5 5.5 8l4.5 4.5`})}),(0,B.jsx)(`button`,{type:`button`,className:`rail-bar-btn`,disabled:t.at>=t.urls.length-1,title:L(`browser.forward`),"aria-label":L(`browser.forward`),onClick:()=>r(t.at+1),children:(0,B.jsx)(Xj,{d:`M6 3.5 10.5 8 6 12.5`})}),(0,B.jsx)(`button`,{type:`button`,className:`rail-bar-btn`,disabled:!x,title:L(`browser.reload`),"aria-label":L(`browser.reload`),onClick:()=>u(l+1),children:(0,B.jsx)(Xj,{d:`M12.5 8a4.5 4.5 0 1 1-1.4-3.3M12.5 2.5v2.7H9.8`})}),(0,B.jsx)(`input`,{className:`browser-url mono`,value:a,placeholder:L(`browser.placeholder`),"aria-label":L(`browser.address`),"aria-invalid":s,spellCheck:!1,autoCapitalize:`off`,autoCorrect:`off`,inputMode:`url`,onChange:e=>o(e.target.value)}),i?(0,B.jsx)(`a`,{className:`rail-bar-btn`,href:i,target:`_blank`,rel:`noopener noreferrer`,title:L(`browser.openTab`),"aria-label":L(`browser.openTab`),children:(0,B.jsx)(Xj,{d:Zj})}):(0,B.jsx)(`button`,{type:`button`,className:`rail-bar-btn`,disabled:!0,"aria-label":L(`browser.openTab`),children:(0,B.jsx)(Xj,{d:Zj})})]}),x?(0,B.jsx)(`iframe`,{className:`browser-frame`,src:i,title:i,sandbox:`allow-scripts allow-same-origin allow-forms allow-popups`,referrerPolicy:`no-referrer`},`${i}#${l}`):S?(0,B.jsx)(`p`,{className:`side-empty`,children:S}):null]})}function $j(e,t){let n={children:new Map,file:!1};for(let t of e){let e=n;for(let n of t.split(`/`)){let t=e.children.get(n);t||(t={children:new Map,file:!1},e.children.set(n,t)),e=t}e.file=!0}let r=[],i=(e,n,a)=>{let o=[...e.children].sort(([e,t],[n,r])=>{let i=t.children.size>0&&!t.file;return i===(r.children.size>0&&!r.file)?e.localeCompare(n):i?-1:1});for(let[e,s]of o){let o=s.children.size>0&&!s.file,c=o?`${n}${e}/`:`${n}${e}`,l=o&&t.has(c);r.push({path:c,name:e,depth:a,dir:o,open:l}),l&&i(s,c,a+1)}};return i(n,``,0),r}function eM({model:e,task:t,narrow:n=!1}){let r=_i();z();let[i,a]=(0,g.useState)(`changes`),[o,s]=(0,g.useState)(`working`),[c,l]=(0,g.useState)(null),[u,d]=(0,g.useState)(null),[f,p]=(0,g.useState)(new Set),[m,h]=(0,g.useState)(0),[_,y]=(0,g.useState)(0),b=(0,g.useRef)(null),x=v(pe),S=JSON.stringify(t.changes??null);(0,g.useEffect)(()=>{let n=!0,r=e.client;return Promise.all([r.request(`files.list`,{taskId:t.id}),r.request(`diff.files`,{taskId:t.id})]).then(([e,r])=>{n&&(l({taskId:t.id,files:e.files,changes:r.files,base:r.base}),d(null))},e=>n&&d(e instanceof Error?e.message:String(e))),()=>{n=!1}},[e,t.id,S,_]);let C=c?.taskId===t.id?c:null,w=o===`branch`&&C?.base!=null,T=i===`all`?$j(C?.files??[],f).map(e=>({path:e.path,label:e.name,depth:e.depth,dir:e.dir,open:e.open})):(C?.changes??[]).filter(e=>e.scope===(w?`branch`:`working`)).map(e=>({path:e.path,label:e.path,depth:0,dir:!1,open:!1,status:e.status,added:e.added,deleted:e.deleted})),E=Math.min(m,Math.max(0,T.length-1)),D=T[E],O=(e,t)=>p(n=>{let r=new Set(n);return t??!r.has(e)?r.add(e):r.delete(e),r}),k=e=>Xu({taskId:t.id,path:e,scope:w?`branch`:`working`}),ee=n=>{if(n.status===`D`||t.machine){k(n.path);return}e.client.request(`file.openInEditor`,{taskId:t.id,path:n.path}).then(async({tabId:n})=>{await e.refreshTabsNow(),e.select(t.id,n)}).catch(e=>U(e instanceof Error?e.message:String(e),`error`))},A=n=>{if(!x?.startsWith(`${t.id}::`)){U(L(`files.mentionNoEngine`),`error`);return}e.client.request(`term.input`,{stream:x,data:`@${n} `}).catch(e=>U(String(e),`error`))},j=n=>t.machine?U(L(`files.remoteNoExternal`,{host:t.machine.label}),`error`):void e.client.request(`file.openExternal`,{taskId:t.id,path:n}).then(()=>U(L(`taskops.openedExternal`))).catch(e=>U(e instanceof Error?e.message:String(e),`error`));return(0,B.jsxs)(`div`,{className:`files ${n?`is-narrow`:``}`,tabIndex:0,ref:b,onKeyDown:e=>{let t=e.key;if(t===`j`||t===`ArrowDown`)h(Math.min(T.length-1,E+1));else if(t===`k`||t===`ArrowUp`)h(Math.max(0,E-1));else if((t===`l`||t===`ArrowRight`)&&D?.dir)O(D.path,!0);else if((t===`h`||t===`ArrowLeft`)&&D?.dir)O(D.path,!1);else if(t===`[`||t===`]`)a(i===`all`?`changes`:`all`);else if(t===`b`&&i===`changes`&&C?.base!=null)s(o===`working`?`branch`:`working`);else if(t===`r`)y(e=>e+1);else if(t===`D`&&e.shiftKey)k(`.`);else if(t===`d`&&D)k(D.path);else if(t===`Enter`&&D)D.dir?O(D.path):ee(D);else if(t===`a`&&D)A(D.path);else if(t===`o`&&D&&!D.dir)j(D.path);else return;e.preventDefault()},children:[(0,B.jsxs)(`div`,{className:`files-actions`,children:[!n&&(0,B.jsx)(`button`,{type:`button`,className:`link`,onClick:()=>me.set(!0),children:L(`files.zen`)}),(0,B.jsx)(`button`,{type:`button`,className:`link`,onClick:()=>void e.client.request(`tab.requestPR`,e.engineTarget(t.id)).then(()=>U(L(`files.prRequested`))).catch(e=>U(e instanceof Error?e.message:String(e),`error`)),children:L(`files.createPR`)})]}),(0,B.jsx)(`div`,{className:`files-tabs`,role:`tablist`,children:[`all`,`changes`].map(e=>(0,B.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":i===e,className:`files-tab ${i===e?`is-active`:``}`,onClick:()=>{a(e),h(0)},children:L(e===`all`?`files.all`:`files.changes`)},e))}),i===`changes`&&(0,B.jsxs)(`div`,{className:`files-scope`,children:[(0,B.jsx)(`span`,{children:w?L(`files.scopeBranch`,{base:C?.base??``}):L(`files.scopeWorking`)}),C?.base==null?C&&(0,B.jsx)(`span`,{children:L(`files.noBase`)}):(0,B.jsx)(`button`,{type:`button`,className:`link`,onClick:()=>s(o===`working`?`branch`:`working`),children:L(r?`files.toggleScopeTouch`:`files.toggleScope`)}),(0,B.jsx)(`span`,{children:L(`files.legend`)}),(0,B.jsx)(`button`,{type:`button`,className:`link`,onClick:()=>k(`.`),children:L(r?`files.diffAllTouch`:`files.diffAll`)})]}),(0,B.jsxs)(`div`,{className:`files-body`,children:[u&&(0,B.jsx)(`p`,{className:`error mono`,children:u}),!u&&C&&T.length===0&&(0,B.jsx)(`p`,{className:`placeholder-line`,children:L(i===`all`?`files.emptyAll`:`files.emptyChanges`)}),T.map((e,t)=>(0,B.jsxs)(`button`,{type:`button`,className:`row file-row ${t===E?`is-selected`:``}`,style:{paddingLeft:8+e.depth*14},title:e.path,onClick:()=>{h(t),b.current?.focus(),e.dir?O(e.path):n||r?k(e.path):ee(e)},children:[e.status?(0,B.jsx)(`span`,{className:`glyph status-${e.status===`?`?`untracked`:e.status}`,children:e.status}):(0,B.jsx)(`span`,{className:`glyph tone-muted`,children:e.dir?e.open?`▾`:`▸`:` `}),(0,B.jsx)(`span`,{className:`row-title`,children:e.label}),e.added?(0,B.jsxs)(`span`,{className:`chip tone-diff-added`,children:[`+`,e.added]}):null,e.deleted?(0,B.jsxs)(`span`,{className:`chip tone-diff-removed`,children:[`−`,e.deleted]}):null]},e.path))]})]})}function tM({children:e}){return(0,B.jsx)(`svg`,{className:`panel-icon`,viewBox:`0 0 16 16`,"aria-hidden":`true`,children:e})}var nM={files:(0,B.jsx)(`path`,{d:`M2 4.5a1 1 0 0 1 1-1h3l1.5 1.5H13a1 1 0 0 1 1 1V12a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1z`}),diff:(0,B.jsx)(`path`,{d:`M3.5 2.5h9a1 1 0 0 1 1 1v9a1 1 0 0 1-1 1h-9a1 1 0 0 1-1-1v-9a1 1 0 0 1 1-1zM8 5v4M6 7h4M6 11h4`}),browser:(0,B.jsx)(`path`,{d:`M8 2a6 6 0 1 0 0 12A6 6 0 0 0 8 2zM2 8h12M8 2c2.2 2 2.2 10 0 12M8 2c-2.2 2-2.2 10 0 12`})};function rM(e){if(e.kind===`files`)return L(`panel.files`);if(e.kind===`diff`)return e.path===`.`?L(`panel.diff`):ru(e.path);let t=nu(e);return t?iu(t):L(`panel.browser`)}function iM(e){return e.kind===`diff`?e.path===`.`?L(`preview.whole`):e.path:e.kind===`browser`&&nu(e)||rM(e)}var aM=7.3,oM=51,sM=160;function cM(e,t){let n=0;for(let t of e){let e=0;for(let n of t)e+=(n.codePointAt(0)??0)>11903?2:1;n+=Math.min(sM,oM+e*aM)+2}return n<=t}var lM=null;function uM(e,t,n,r){let i=(t,r)=>({label:r,section:`move`,run:()=>qu(e,e=>Tu(e,n.id,t))}),a=[];return!t.bottom&&t.top.tabs.length>1?a.push(i(`bottom`,L(`panel.splitDown`))):t.bottom&&a.push(r===`top`?i(`bottom`,L(`panel.moveBottom`)):i(`top`,L(`panel.moveTop`))),a.push({label:L(`panel.close`),section:`close`,run:()=>Zu(e,n.id)}),t.top.tabs.length+(t.bottom?.tabs.length??0)>1&&a.push({label:L(`panel.closeOthers`),section:`close`,run:()=>qu(e,e=>wu(e,n.id))}),a}function dM(e,t){return[{label:L(`panel.newFiles`),run:()=>qu(e,e=>pu(e,t))},{label:L(`panel.newDiff`),run:()=>qu(e,e=>hu(e,`.`,`working`))},{label:L(`panel.newBrowser`),run:()=>qu(e,e=>mu(e,t))}]}function fM({taskId:e,panel:t,group:n,tabs:r,active:i,narrow:a,children:o}){z();let[s,c]=(0,g.useState)(null),l=()=>lM?.taskId===e,u=t=>{let r=lM;lM=null,c(null),r?.taskId===e&&qu(e,e=>Tu(e,r.id,n,t))},d=t=>{let r=t.currentTarget.getBoundingClientRect();le.set({x:r.left,y:r.bottom+2,items:dM(e,n),target:t.currentTarget})},f=(e,t)=>{if(!l())return;e.preventDefault(),e.stopPropagation();let n=e.currentTarget.getBoundingClientRect();c({id:t,after:e.clientX>n.left+n.width/2})},p=(0,g.useRef)(null),[m,h]=(0,g.useState)(0);(0,g.useEffect)(()=>{let e=p.current;if(!e)return;let t=new ResizeObserver(([e])=>h(e?.contentRect.width??0));return t.observe(e),()=>t.disconnect()},[]);let _=m>0&&!cM(r.map(rM),m);return(0,g.useEffect)(()=>{p.current?.querySelector(`.is-active`)?.scrollIntoView({block:`nearest`,inline:`nearest`})},[i,r.length,_]),(0,B.jsxs)(`div`,{className:`side-head`,style:{gridRow:n===`top`?1:4},onDragOver:e=>{l()&&(e.preventDefault(),c(null))},onDrop:e=>{e.preventDefault(),u()},children:[(0,B.jsx)(`div`,{className:`ptabs ${_?`is-compact`:``}`,role:`tablist`,"aria-label":L(`panel.tabs`),ref:p,children:r.map((r,o)=>(0,B.jsxs)(`div`,{role:`presentation`,className:`ptab ${r.id===i?`is-active`:``}`,"data-drop":s?.id===r.id?s.after?`after`:`before`:void 0,draggable:!a,onDragStart:()=>{lM={taskId:e,id:r.id}},onDragEnd:()=>{lM=null,c(null)},onDragOver:e=>f(e,r.id),onDrop:e=>{e.preventDefault(),e.stopPropagation(),u(o+(s?.id===r.id&&s.after?1:0))},onMouseDown:e=>{e.button===1&&e.preventDefault()},onAuxClick:t=>{t.button===1&&(t.preventDefault(),Zu(e,r.id))},onContextMenu:i=>{a||Pj(i,uM(e,t,r,n))},children:[(0,B.jsxs)(`button`,{type:`button`,role:`tab`,"aria-selected":r.id===i,className:`ptab-main`,title:iM(r),onClick:()=>qu(e,e=>lu(e,r.id)),children:[(0,B.jsx)(tM,{children:nM[r.kind]}),(0,B.jsx)(`span`,{className:`ptab-label`,children:rM(r)})]}),(0,B.jsx)(`button`,{type:`button`,className:`ptab-close`,"aria-label":L(`panel.close`),tabIndex:-1,onClick:()=>Zu(e,r.id),children:`×`})]},r.id))}),!a&&(0,B.jsx)(`button`,{type:`button`,className:`rail-bar-btn panel-tool`,title:L(`panel.new`),"aria-label":L(`panel.new`),onClick:d,children:(0,B.jsx)(`svg`,{viewBox:`0 0 16 16`,"aria-hidden":`true`,children:(0,B.jsx)(`path`,{d:`M8 3.5v9M3.5 8h9`})})}),o]})}var pM=/^@@ -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@/;function mM(e,t=null){let n=[],r=0,i=0,a=t,o=!1;for(let t of e.replace(/\n$/,``).split(`
|
|
111
|
+
}`,hO=8,gO=hO*Float32Array.BYTES_PER_ELEMENT,_O=20*hO,vO=class{constructor(){this.attributes=new Float32Array(_O),this.count=0}},yO=0,bO=0,xO=0,SO=0,CO=0,wO=0,TO=0,EO=class extends QT{constructor(e,t,n,r){super(),this._terminal=e,this._gl=t,this._dimensions=n,this._themeService=r,this._vertices=new vO,this._verticesCursor=new vO;let i=this._gl;this._program=bE(GD(i,pO,mO)),this._register(YT(()=>i.deleteProgram(this._program))),this._projectionLocation=bE(i.getUniformLocation(this._program,`u_projection`)),this._vertexArrayObject=i.createVertexArray(),i.bindVertexArray(this._vertexArrayObject);let a=new Float32Array([0,0,1,0,0,1,1,1]),o=i.createBuffer();this._register(YT(()=>i.deleteBuffer(o))),i.bindBuffer(i.ARRAY_BUFFER,o),i.bufferData(i.ARRAY_BUFFER,a,i.STATIC_DRAW),i.enableVertexAttribArray(3),i.vertexAttribPointer(3,2,this._gl.FLOAT,!1,0,0);let s=new Uint8Array([0,1,2,3]),c=i.createBuffer();this._register(YT(()=>i.deleteBuffer(c))),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,c),i.bufferData(i.ELEMENT_ARRAY_BUFFER,s,i.STATIC_DRAW),this._attributesBuffer=bE(i.createBuffer()),this._register(YT(()=>i.deleteBuffer(this._attributesBuffer))),i.bindBuffer(i.ARRAY_BUFFER,this._attributesBuffer),i.enableVertexAttribArray(0),i.vertexAttribPointer(0,2,i.FLOAT,!1,gO,0),i.vertexAttribDivisor(0,1),i.enableVertexAttribArray(1),i.vertexAttribPointer(1,2,i.FLOAT,!1,gO,2*Float32Array.BYTES_PER_ELEMENT),i.vertexAttribDivisor(1,1),i.enableVertexAttribArray(2),i.vertexAttribPointer(2,4,i.FLOAT,!1,gO,4*Float32Array.BYTES_PER_ELEMENT),i.vertexAttribDivisor(2,1),this._updateCachedColors(r.colors),this._register(this._themeService.onChangeColors(e=>{this._updateCachedColors(e),this._updateViewportRectangle()}))}renderBackgrounds(){this._renderVertices(this._vertices)}renderCursor(){this._renderVertices(this._verticesCursor)}_renderVertices(e){let t=this._gl;t.useProgram(this._program),t.bindVertexArray(this._vertexArrayObject),t.uniformMatrix4fv(this._projectionLocation,!1,WD),t.bindBuffer(t.ARRAY_BUFFER,this._attributesBuffer),t.bufferData(t.ARRAY_BUFFER,e.attributes,t.DYNAMIC_DRAW),t.drawElementsInstanced(this._gl.TRIANGLE_STRIP,4,t.UNSIGNED_BYTE,0,e.count)}handleResize(){this._updateViewportRectangle()}setDimensions(e){this._dimensions=e}_updateCachedColors(e){this._bgFloat=this._colorToFloat32Array(e.background),this._cursorFloat=this._colorToFloat32Array(e.cursor)}_updateViewportRectangle(){this._addRectangleFloat(this._vertices.attributes,0,0,0,this._terminal.cols*this._dimensions.device.cell.width,this._terminal.rows*this._dimensions.device.cell.height,this._bgFloat)}updateBackgrounds(e){let t=this._terminal,n=this._vertices,r=1,i,a,o,s,c,l,u,d,f,p,m;for(i=0;i<t.rows;i++){for(o=-1,s=0,c=0,l=!1,a=0;a<t.cols;a++)u=(i*t.cols+a)*sO,d=e.cells[u+cO],f=e.cells[u+lO],p=!!(f&67108864),(d!==s||f!==c&&(l||p))&&((s!==0||l&&c!==0)&&(m=r++*hO,this._updateRectangle(n,m,c,s,o,a,i)),o=a,s=d,c=f,l=p);(s!==0||l&&c!==0)&&(m=r++*hO,this._updateRectangle(n,m,c,s,o,t.cols,i))}n.count=r}updateCursor(e){let t=this._verticesCursor,n=e.cursor;if(!n||n.style===`block`){t.count=0;return}let r,i=0;(n.style===`bar`||n.style===`outline`)&&(r=i++*hO,this._addRectangleFloat(t.attributes,r,n.x*this._dimensions.device.cell.width,n.y*this._dimensions.device.cell.height,n.style===`bar`?n.dpr*n.cursorWidth:n.dpr,this._dimensions.device.cell.height,this._cursorFloat)),(n.style===`underline`||n.style===`outline`)&&(r=i++*hO,this._addRectangleFloat(t.attributes,r,n.x*this._dimensions.device.cell.width,(n.y+1)*this._dimensions.device.cell.height-n.dpr,n.width*this._dimensions.device.cell.width,n.dpr,this._cursorFloat)),n.style===`outline`&&(r=i++*hO,this._addRectangleFloat(t.attributes,r,n.x*this._dimensions.device.cell.width,n.y*this._dimensions.device.cell.height,n.width*this._dimensions.device.cell.width,n.dpr,this._cursorFloat),r=i++*hO,this._addRectangleFloat(t.attributes,r,(n.x+n.width)*this._dimensions.device.cell.width-n.dpr,n.y*this._dimensions.device.cell.height,n.dpr,this._dimensions.device.cell.height,this._cursorFloat)),t.count=i}_updateRectangle(e,t,n,r,i,a,o){if(n&67108864)switch(n&50331648){case 16777216:case 33554432:yO=this._themeService.colors.ansi[n&255].rgba;break;case 50331648:yO=(n&16777215)<<8;break;default:yO=this._themeService.colors.foreground.rgba}else switch(r&50331648){case 16777216:case 33554432:yO=this._themeService.colors.ansi[r&255].rgba;break;case 50331648:yO=(r&16777215)<<8;break;default:yO=this._themeService.colors.background.rgba}e.attributes.length<t+4&&(e.attributes=qD(e.attributes,this._terminal.rows*this._terminal.cols*hO)),bO=i*this._dimensions.device.cell.width,xO=o*this._dimensions.device.cell.height,SO=(yO>>24&255)/255,CO=(yO>>16&255)/255,wO=(yO>>8&255)/255,TO=1,this._addRectangle(e.attributes,t,bO,xO,(a-i)*this._dimensions.device.cell.width,this._dimensions.device.cell.height,SO,CO,wO,TO)}_addRectangle(e,t,n,r,i,a,o,s,c,l){e[t]=n/this._dimensions.device.canvas.width,e[t+1]=r/this._dimensions.device.canvas.height,e[t+2]=i/this._dimensions.device.canvas.width,e[t+3]=a/this._dimensions.device.canvas.height,e[t+4]=o,e[t+5]=s,e[t+6]=c,e[t+7]=l}_addRectangleFloat(e,t,n,r,i,a,o){e[t]=n/this._dimensions.device.canvas.width,e[t+1]=r/this._dimensions.device.canvas.height,e[t+2]=i/this._dimensions.device.canvas.width,e[t+3]=a/this._dimensions.device.canvas.height,e[t+4]=o[0],e[t+5]=o[1],e[t+6]=o[2],e[t+7]=o[3]}_colorToFloat32Array(e){return new Float32Array([(e.rgba>>24&255)/255,(e.rgba>>16&255)/255,(e.rgba>>8&255)/255,(e.rgba&255)/255])}},DO=class extends QT{constructor(e,t,n,r,i,a,o,s){super(),this._container=t,this._alpha=i,this._coreBrowserService=a,this._optionsService=o,this._themeService=s,this._deviceCharWidth=0,this._deviceCharHeight=0,this._deviceCellWidth=0,this._deviceCellHeight=0,this._deviceCharLeft=0,this._deviceCharTop=0,this._canvas=this._coreBrowserService.mainDocument.createElement(`canvas`),this._canvas.classList.add(`xterm-${n}-layer`),this._canvas.style.zIndex=r.toString(),this._initCanvas(),this._container.appendChild(this._canvas),this._register(this._themeService.onChangeColors(t=>{this._refreshCharAtlas(e,t),this.reset(e)})),this._register(YT(()=>{this._canvas.remove()}))}_initCanvas(){this._ctx=bE(this._canvas.getContext(`2d`,{alpha:this._alpha})),this._alpha||this._clearAll()}handleBlur(e){}handleFocus(e){}handleCursorMove(e){}handleGridChanged(e,t,n){}handleSelectionChanged(e,t,n,r=!1){}_setTransparency(e,t){if(t===this._alpha)return;let n=this._canvas;this._alpha=t,this._canvas=this._canvas.cloneNode(),this._initCanvas(),this._container.replaceChild(this._canvas,n),this._refreshCharAtlas(e,this._themeService.colors),this.handleGridChanged(e,0,e.rows-1)}_refreshCharAtlas(e,t){this._deviceCharWidth<=0&&this._deviceCharHeight<=0||(this._charAtlas=LD(e,this._optionsService.rawOptions,t,this._deviceCellWidth,this._deviceCellHeight,this._deviceCharWidth,this._deviceCharHeight,this._coreBrowserService.dpr,2048),this._charAtlas.warmUp())}resize(e,t){this._deviceCellWidth=t.device.cell.width,this._deviceCellHeight=t.device.cell.height,this._deviceCharWidth=t.device.char.width,this._deviceCharHeight=t.device.char.height,this._deviceCharLeft=t.device.char.left,this._deviceCharTop=t.device.char.top,this._canvas.width=t.device.canvas.width,this._canvas.height=t.device.canvas.height,this._canvas.style.width=`${t.css.canvas.width}px`,this._canvas.style.height=`${t.css.canvas.height}px`,this._alpha||this._clearAll(),this._refreshCharAtlas(e,this._themeService.colors)}_fillBottomLineAtCells(e,t,n=1){this._ctx.fillRect(e*this._deviceCellWidth,(t+1)*this._deviceCellHeight-this._coreBrowserService.dpr-1,n*this._deviceCellWidth,this._coreBrowserService.dpr)}_clearAll(){this._alpha?this._ctx.clearRect(0,0,this._canvas.width,this._canvas.height):(this._ctx.fillStyle=this._themeService.colors.background.css,this._ctx.fillRect(0,0,this._canvas.width,this._canvas.height))}_clearCells(e,t,n,r){this._alpha?this._ctx.clearRect(e*this._deviceCellWidth,t*this._deviceCellHeight,n*this._deviceCellWidth,r*this._deviceCellHeight):(this._ctx.fillStyle=this._themeService.colors.background.css,this._ctx.fillRect(e*this._deviceCellWidth,t*this._deviceCellHeight,n*this._deviceCellWidth,r*this._deviceCellHeight))}_fillCharTrueColor(e,t,n,r){this._ctx.font=this._getFont(e,!1,!1),this._ctx.textBaseline=BE,this._clipCell(n,r,t.getWidth()),this._ctx.fillText(t.getChars(),n*this._deviceCellWidth+this._deviceCharLeft,r*this._deviceCellHeight+this._deviceCharTop+this._deviceCharHeight)}_clipCell(e,t,n){this._ctx.beginPath(),this._ctx.rect(e*this._deviceCellWidth,t*this._deviceCellHeight,n*this._deviceCellWidth,this._deviceCellHeight),this._ctx.clip()}_getFont(e,t,n){let r=t?e.options.fontWeightBold:e.options.fontWeight;return`${n?`italic`:``} ${r} ${e.options.fontSize*this._coreBrowserService.dpr}px ${e.options.fontFamily}`}},OO=class extends DO{constructor(e,t,n,r,i,a,o){super(n,e,`link`,t,!0,i,a,o),this._register(r.onShowLinkUnderline(e=>this._handleShowLinkUnderline(e))),this._register(r.onHideLinkUnderline(e=>this._handleHideLinkUnderline(e)))}resize(e,t){super.resize(e,t),this._state=void 0}reset(e){this._clearCurrentLink()}_clearCurrentLink(){if(this._state){this._clearCells(this._state.x1,this._state.y1,this._state.cols-this._state.x1,1);let e=this._state.y2-this._state.y1-1;e>0&&this._clearCells(0,this._state.y1+1,this._state.cols,e),this._clearCells(0,this._state.y2,this._state.x2,1),this._state=void 0}}_handleShowLinkUnderline(e){if(e.fg===257?this._ctx.fillStyle=this._themeService.colors.background.css:e.fg!==void 0&&FD(e.fg)?this._ctx.fillStyle=this._themeService.colors.ansi[e.fg].css:this._ctx.fillStyle=this._themeService.colors.foreground.css,e.y1===e.y2)this._fillBottomLineAtCells(e.x1,e.y1,e.x2-e.x1);else{this._fillBottomLineAtCells(e.x1,e.y1,e.cols-e.x1);for(let t=e.y1+1;t<e.y2;t++)this._fillBottomLineAtCells(0,t,e.cols);this._fillBottomLineAtCells(0,e.y2,e.x2)}this._state=e}_handleHideLinkUnderline(e){this._clearCurrentLink()}},kO=typeof window==`object`?window:globalThis,AO=class{constructor(){this.mapWindowIdToZoomLevel=new Map,this._onDidChangeZoomLevel=new CD,this.onDidChangeZoomLevel=this._onDidChangeZoomLevel.event,this.mapWindowIdToZoomFactor=new Map,this._onDidChangeFullscreen=new CD,this.onDidChangeFullscreen=this._onDidChangeFullscreen.event,this.mapWindowIdToFullScreen=new Map}getZoomLevel(e){return this.mapWindowIdToZoomLevel.get(this.getWindowId(e))??0}setZoomLevel(e,t){if(this.getZoomLevel(t)===e)return;let n=this.getWindowId(t);this.mapWindowIdToZoomLevel.set(n,e),this._onDidChangeZoomLevel.fire(n)}getZoomFactor(e){return this.mapWindowIdToZoomFactor.get(this.getWindowId(e))??1}setZoomFactor(e,t){this.mapWindowIdToZoomFactor.set(this.getWindowId(t),e)}setFullscreen(e,t){if(this.isFullscreen(t)===e)return;let n=this.getWindowId(t);this.mapWindowIdToFullScreen.set(n,e),this._onDidChangeFullscreen.fire(n)}isFullscreen(e){return!!this.mapWindowIdToFullScreen.get(this.getWindowId(e))}getWindowId(e){return e.vscodeWindowId}};AO.INSTANCE=new AO;var jO=AO;function MO(e,t,n){typeof t==`string`&&(t=e.matchMedia(t)),t.addEventListener(`change`,n)}jO.INSTANCE.onDidChangeZoomLevel,jO.INSTANCE.onDidChangeFullscreen;var NO=typeof navigator==`object`?navigator.userAgent:``;NO.indexOf(`Firefox`);var PO=NO.indexOf(`AppleWebKit`)>=0;!(NO.indexOf(`Chrome`)>=0)&&NO.indexOf(`Safari`),NO.indexOf(`Electron/`),NO.indexOf(`Android`);var FO=!1;if(typeof kO.matchMedia==`function`){let e=kO.matchMedia(`(display-mode: standalone) or (display-mode: window-controls-overlay)`),t=kO.matchMedia(`(display-mode: fullscreen)`);FO=e.matches,MO(kO,e,({matches:e})=>{FO&&t.matches||(FO=e)})}function IO(){return FO}var LO=`en`,RO=!1,zO=!1,BO=!1,VO=LO,HO,UO=globalThis,WO;typeof UO.vscode<`u`&&typeof UO.vscode.process<`u`?WO=UO.vscode.process:typeof process<`u`&&typeof process?.versions?.node==`string`&&(WO=process);var GO=typeof WO?.versions?.electron==`string`&&WO?.type===`renderer`;if(typeof WO==`object`){WO.platform,WO.platform,RO=WO.platform===`linux`,RO&&WO.env.SNAP&&WO.env.SNAP_REVISION,WO.env.CI||WO.env.BUILD_ARTIFACTSTAGINGDIRECTORY,VO=LO;let e=WO.env.VSCODE_NLS_CONFIG;if(e)try{let t=JSON.parse(e);t.userLocale,t.osLocale,VO=t.resolvedLanguage||LO,t.languagePack?.translationsConfigFile}catch{}zO=!0}else typeof navigator==`object`&&!GO?(HO=navigator.userAgent,HO.indexOf(`Windows`),HO.indexOf(`Macintosh`),(HO.indexOf(`Macintosh`)>=0||HO.indexOf(`iPad`)>=0||HO.indexOf(`iPhone`)>=0)&&navigator.maxTouchPoints&&navigator.maxTouchPoints,RO=HO.indexOf(`Linux`)>=0,HO?.indexOf(`Mobi`),BO=!0,VO=globalThis._VSCODE_NLS_LANGUAGE||LO,navigator.language.toLowerCase()):console.error(`Unable to resolve platform.`);var KO=zO;BO&&typeof UO.importScripts==`function`&&UO.origin;var qO=HO,JO=VO,YO;(e=>{function t(){return JO}e.value=t;function n(){return JO.length===2?JO===`en`:JO.length>=3&&JO[0]===`e`&&JO[1]===`n`&&JO[2]===`-`}e.isDefaultVariant=n;function r(){return JO===`en`}e.isDefault=r})(YO||={});var XO=typeof UO.postMessage==`function`&&!UO.importScripts;(()=>{if(XO){let e=[];UO.addEventListener(`message`,t=>{if(t.data&&t.data.vscodeScheduleAsyncWork)for(let n=0,r=e.length;n<r;n++){let r=e[n];if(r.id===t.data.vscodeScheduleAsyncWork){e.splice(n,1),r.callback();return}}});let t=0;return n=>{let r=++t;e.push({id:r,callback:n}),UO.postMessage({vscodeScheduleAsyncWork:r},`*`)}}return e=>setTimeout(e)})();var ZO=!!(qO&&qO.indexOf(`Chrome`)>=0);qO&&qO.indexOf(`Firefox`),!ZO&&qO&&qO.indexOf(`Safari`),qO&&qO.indexOf(`Edg/`),qO&&qO.indexOf(`Android`);var QO=typeof navigator==`object`?navigator:{};KO||document.queryCommandSupported&&document.queryCommandSupported(`copy`)||QO&&QO.clipboard&&QO.clipboard.writeText,KO||QO&&QO.clipboard&&QO.clipboard.readText,KO||IO()||QO.keyboard,`ontouchstart`in kO||QO.maxTouchPoints,kO.PointerEvent&&(`ontouchstart`in kO||navigator.maxTouchPoints);var $O=class{constructor(){this._keyCodeToStr=[],this._strToKeyCode=Object.create(null)}define(e,t){this._keyCodeToStr[e]=t,this._strToKeyCode[t.toLowerCase()]=e}keyCodeToStr(e){return this._keyCodeToStr[e]}strToKeyCode(e){return this._strToKeyCode[e.toLowerCase()]||0}},ek=new $O,tk=new $O,nk=new $O;Array(230);var rk;(e=>{function t(e){return ek.keyCodeToStr(e)}e.toString=t;function n(e){return ek.strToKeyCode(e)}e.fromString=n;function r(e){return tk.keyCodeToStr(e)}e.toUserSettingsUS=r;function i(e){return nk.keyCodeToStr(e)}e.toUserSettingsGeneral=i;function a(e){return tk.strToKeyCode(e)||nk.strToKeyCode(e)}e.fromUserSettings=a;function o(e){if(e>=98&&e<=113)return null;switch(e){case 16:return`Up`;case 18:return`Down`;case 15:return`Left`;case 17:return`Right`}return ek.keyCodeToStr(e)}e.toElectronAccelerator=o})(rk||={});var ik=Object.freeze(function(e,t){let n=setTimeout(e.bind(t),0);return{dispose(){clearTimeout(n)}}}),ak;(e=>{function t(t){return t===e.None||t===e.Cancelled||t instanceof ok?!0:!t||typeof t!=`object`?!1:typeof t.isCancellationRequested==`boolean`&&typeof t.onCancellationRequested==`function`}e.isCancellationToken=t,e.None=Object.freeze({isCancellationRequested:!1,onCancellationRequested:dD.None}),e.Cancelled=Object.freeze({isCancellationRequested:!0,onCancellationRequested:ik})})(ak||={});var ok=class{constructor(){this._isCancelled=!1,this._emitter=null}cancel(){this._isCancelled||(this._isCancelled=!0,this._emitter&&(this._emitter.fire(void 0),this.dispose()))}get isCancellationRequested(){return this._isCancelled}get onCancellationRequested(){return this._isCancelled?ik:(this._emitter||=new CD,this._emitter.event)}dispose(){this._emitter&&=(this._emitter.dispose(),null)}};(function(){typeof globalThis.requestIdleCallback!=`function`||globalThis.cancelIdleCallback})();var sk;(e=>{async function t(e){let t,n=await Promise.all(e.map(e=>e.then(e=>e,e=>{t||=e})));if(typeof t<`u`)throw t;return n}e.settled=t;function n(e){return new Promise(async(t,n)=>{try{await e(t,n)}catch(e){n(e)}})}e.withAsyncBody=n})(sk||={});var ck=class e{static fromArray(t){return new e(e=>{e.emitMany(t)})}static fromPromise(t){return new e(async e=>{e.emitMany(await t)})}static fromPromises(t){return new e(async e=>{await Promise.all(t.map(async t=>e.emitOne(await t)))})}static merge(t){return new e(async e=>{await Promise.all(t.map(async t=>{for await(let n of t)e.emitOne(n)}))})}constructor(e,t){this._state=0,this._results=[],this._error=null,this._onReturn=t,this._onStateChanged=new CD,queueMicrotask(async()=>{let t={emitOne:e=>this.emitOne(e),emitMany:e=>this.emitMany(e),reject:e=>this.reject(e)};try{await Promise.resolve(e(t)),this.resolve()}catch(e){this.reject(e)}finally{t.emitOne=void 0,t.emitMany=void 0,t.reject=void 0}})}[Symbol.asyncIterator](){let e=0;return{next:async()=>{do{if(this._state===2)throw this._error;if(e<this._results.length)return{done:!1,value:this._results[e++]};if(this._state===1)return{done:!0,value:void 0};await dD.toPromise(this._onStateChanged.event)}while(!0)},return:async()=>(this._onReturn?.(),{done:!0,value:void 0})}}static map(t,n){return new e(async e=>{for await(let r of t)e.emitOne(n(r))})}map(t){return e.map(this,t)}static filter(t,n){return new e(async e=>{for await(let r of t)n(r)&&e.emitOne(r)})}filter(t){return e.filter(this,t)}static coalesce(t){return e.filter(t,e=>!!e)}coalesce(){return e.coalesce(this)}static async toPromise(e){let t=[];for await(let n of e)t.push(n);return t}toPromise(){return e.toPromise(this)}emitOne(e){this._state===0&&(this._results.push(e),this._onStateChanged.fire())}emitMany(e){this._state===0&&(this._results=this._results.concat(e),this._onStateChanged.fire())}resolve(){this._state===0&&(this._state=1,this._onStateChanged.fire())}reject(e){this._state===0&&(this._state=2,this._error=e,this._onStateChanged.fire())}};ck.EMPTY=ck.fromArray([]);function lk(e){return uk(e,0)}function uk(e,t){switch(typeof e){case`object`:return e===null?dk(349,t):Array.isArray(e)?mk(e,t):hk(e,t);case`string`:return pk(e,t);case`boolean`:return fk(e,t);case`number`:return dk(e,t);case`undefined`:return dk(937,t);default:return dk(617,t)}}function dk(e,t){return(t<<5)-t+e|0}function fk(e,t){return dk(e?433:863,t)}function pk(e,t){t=dk(149417,t);for(let n=0,r=e.length;n<r;n++)t=dk(e.charCodeAt(n),t);return t}function mk(e,t){return t=dk(104579,t),e.reduce((e,t)=>uk(t,e),t)}function hk(e,t){return t=dk(181387,t),Object.keys(e).sort().reduce((t,n)=>(t=pk(n,t),uk(e[n],t)),t)}var{registerWindow:gk,getWindow:_k,getDocument:vk,getWindows:yk,getWindowsCount:bk,getWindowId:xk,getWindowById:Sk,hasWindow:Ck,onDidRegisterWindow:wk,onWillUnregisterWindow:Tk,onDidUnregisterWindow:Ek}=function(){let e=new Map,t={window:kO,disposables:new ZT};e.set(kO.vscodeWindowId,t);let n=new CD,r=new CD,i=new CD;function a(n,r){return(typeof n==`number`?e.get(n):void 0)??(r?t:void 0)}return{onDidRegisterWindow:n.event,onWillUnregisterWindow:i.event,onDidUnregisterWindow:r.event,registerWindow(t){if(e.has(t.vscodeWindowId))return QT.None;let a=new ZT,o={window:t,disposables:a.add(new ZT)};return e.set(t.vscodeWindowId,o),a.add(YT(()=>{e.delete(t.vscodeWindowId),r.fire(t)})),a.add(Ok(t,Ak.BEFORE_UNLOAD,()=>{i.fire(t)})),n.fire(o),a},getWindows(){return e.values()},getWindowsCount(){return e.size},getWindowId(e){return e.vscodeWindowId},hasWindow(t){return e.has(t)},getWindowById:a,getWindow(e){let t=e;if(t?.ownerDocument?.defaultView)return t.ownerDocument.defaultView.window;let n=e;return n?.view?n.view.window:kO},getDocument(e){return _k(e).document}}}(),Dk=class{constructor(e,t,n,r){this._node=e,this._type=t,this._handler=n,this._options=r||!1,this._node.addEventListener(this._type,this._handler,this._options)}dispose(){this._handler&&=(this._node.removeEventListener(this._type,this._handler,this._options),this._node=null,null)}};function Ok(e,t,n,r){return new Dk(e,t,n,r)}var kk=class e{constructor(e,t){this.width=e,this.height=t}with(t=this.width,n=this.height){return t!==this.width||n!==this.height?new e(t,n):this}static is(e){return typeof e==`object`&&typeof e.height==`number`&&typeof e.width==`number`}static lift(t){return t instanceof e?t:new e(t.width,t.height)}static equals(e,t){return e===t?!0:!e||!t?!1:e.width===t.width&&e.height===t.height}};kk.None=new kk(0,0),new class{constructor(){this.mutationObservers=new Map}observe(e,t,n){let r=this.mutationObservers.get(e);r||(r=new Map,this.mutationObservers.set(e,r));let i=lk(n),a=r.get(i);if(a)a.users+=1;else{let o=new CD,s=new MutationObserver(e=>o.fire(e));s.observe(e,n);let c=a={users:1,observer:s,onDidMutate:o.event};t.add(YT(()=>{--c.users,c.users===0&&(o.dispose(),s.disconnect(),r?.delete(i),r?.size===0&&this.mutationObservers.delete(e))})),r.set(i,a)}return a.onDidMutate}};var Ak={CLICK:`click`,AUXCLICK:`auxclick`,DBLCLICK:`dblclick`,MOUSE_UP:`mouseup`,MOUSE_DOWN:`mousedown`,MOUSE_OVER:`mouseover`,MOUSE_MOVE:`mousemove`,MOUSE_OUT:`mouseout`,MOUSE_ENTER:`mouseenter`,MOUSE_LEAVE:`mouseleave`,MOUSE_WHEEL:`wheel`,POINTER_UP:`pointerup`,POINTER_DOWN:`pointerdown`,POINTER_MOVE:`pointermove`,POINTER_LEAVE:`pointerleave`,CONTEXT_MENU:`contextmenu`,WHEEL:`wheel`,KEY_DOWN:`keydown`,KEY_PRESS:`keypress`,KEY_UP:`keyup`,LOAD:`load`,BEFORE_UNLOAD:`beforeunload`,UNLOAD:`unload`,PAGE_SHOW:`pageshow`,PAGE_HIDE:`pagehide`,PASTE:`paste`,ABORT:`abort`,ERROR:`error`,RESIZE:`resize`,SCROLL:`scroll`,FULLSCREEN_CHANGE:`fullscreenchange`,WK_FULLSCREEN_CHANGE:`webkitfullscreenchange`,SELECT:`select`,CHANGE:`change`,SUBMIT:`submit`,RESET:`reset`,FOCUS:`focus`,FOCUS_IN:`focusin`,FOCUS_OUT:`focusout`,BLUR:`blur`,INPUT:`input`,STORAGE:`storage`,DRAG_START:`dragstart`,DRAG:`drag`,DRAG_ENTER:`dragenter`,DRAG_LEAVE:`dragleave`,DRAG_OVER:`dragover`,DROP:`drop`,DRAG_END:`dragend`,ANIMATION_START:PO?`webkitAnimationStart`:`animationstart`,ANIMATION_END:PO?`webkitAnimationEnd`:`animationend`,ANIMATION_ITERATION:PO?`webkitAnimationIteration`:`animationiteration`},jk=class extends QT{constructor(e,t,n,r,i,a,o,s,c){super(),this._terminal=e,this._characterJoinerService=t,this._charSizeService=n,this._coreBrowserService=r,this._coreService=i,this._decorationService=a,this._optionsService=o,this._themeService=s,this._cursorBlinkStateManager=new $T,this._charAtlasDisposable=this._register(new $T),this._observerDisposable=this._register(new $T),this._model=new fO,this._workCell=new UD,this._workCell2=new UD,this._rectangleRenderer=this._register(new $T),this._glyphRenderer=this._register(new $T),this._onChangeTextureAtlas=this._register(new CD),this.onChangeTextureAtlas=this._onChangeTextureAtlas.event,this._onAddTextureAtlasCanvas=this._register(new CD),this.onAddTextureAtlasCanvas=this._onAddTextureAtlasCanvas.event,this._onRemoveTextureAtlasCanvas=this._register(new CD),this.onRemoveTextureAtlasCanvas=this._onRemoveTextureAtlasCanvas.event,this._onRequestRedraw=this._register(new CD),this.onRequestRedraw=this._onRequestRedraw.event,this._onContextLoss=this._register(new CD),this.onContextLoss=this._onContextLoss.event,this._canvas=this._coreBrowserService.mainDocument.createElement(`canvas`);let l={antialias:!1,depth:!1,preserveDrawingBuffer:c};if(this._gl=this._canvas.getContext(`webgl2`,l),!this._gl)throw Error(`WebGL2 not supported `+this._gl);this._register(this._themeService.onChangeColors(()=>this._handleColorChange())),this._cellColorResolver=new RE(this._terminal,this._optionsService,this._model.selection,this._decorationService,this._coreBrowserService,this._themeService),this._core=this._terminal._core,this._renderLayers=[new OO(this._core.screenElement,2,this._terminal,this._core.linkifier,this._coreBrowserService,o,this._themeService)],this.dimensions=OE(),this._devicePixelRatio=this._coreBrowserService.dpr,this._updateDimensions(),this._updateCursorBlink(),this._register(o.onOptionChange(()=>this._handleOptionsChanged())),this._deviceMaxTextureSize=this._gl.getParameter(this._gl.MAX_TEXTURE_SIZE),this._register(Ok(this._canvas,`webglcontextlost`,e=>{console.log(`webglcontextlost event received`),e.preventDefault(),this._contextRestorationTimeout=setTimeout(()=>{this._contextRestorationTimeout=void 0,console.warn(`webgl context not restored; firing onContextLoss`),this._onContextLoss.fire(e)},3e3)})),this._register(Ok(this._canvas,`webglcontextrestored`,e=>{console.warn(`webglcontextrestored event received`),clearTimeout(this._contextRestorationTimeout),this._contextRestorationTimeout=void 0,RD(this._terminal),this._initializeWebGLState(),this._requestRedrawViewport()})),this._observerDisposable.value=VD(this._canvas,this._coreBrowserService.window,(e,t)=>this._setCanvasDevicePixelDimensions(e,t)),this._register(this._coreBrowserService.onWindowChange(e=>{this._observerDisposable.value=VD(this._canvas,e,(e,t)=>this._setCanvasDevicePixelDimensions(e,t))})),this._core.screenElement.appendChild(this._canvas),[this._rectangleRenderer.value,this._glyphRenderer.value]=this._initializeWebGLState(),this._isAttached=this._core.screenElement.isConnected,this._register(YT(()=>{for(let e of this._renderLayers)e.dispose();this._canvas.parentElement?.removeChild(this._canvas),RD(this._terminal)}))}get textureAtlas(){return this._charAtlas?.pages[0].canvas}_handleColorChange(){this._refreshCharAtlas(),this._clearModel(!0)}handleDevicePixelRatioChange(){this._devicePixelRatio!==this._coreBrowserService.dpr&&(this._devicePixelRatio=this._coreBrowserService.dpr,this.handleResize(this._terminal.cols,this._terminal.rows))}handleResize(e,t){this._updateDimensions(),this._model.resize(this._terminal.cols,this._terminal.rows);for(let e of this._renderLayers)e.resize(this._terminal,this.dimensions);this._canvas.width=this.dimensions.device.canvas.width,this._canvas.height=this.dimensions.device.canvas.height,this._canvas.style.width=`${this.dimensions.css.canvas.width}px`,this._canvas.style.height=`${this.dimensions.css.canvas.height}px`,this._core.screenElement.style.width=`${this.dimensions.css.canvas.width}px`,this._core.screenElement.style.height=`${this.dimensions.css.canvas.height}px`,this._rectangleRenderer.value?.setDimensions(this.dimensions),this._rectangleRenderer.value?.handleResize(),this._glyphRenderer.value?.setDimensions(this.dimensions),this._glyphRenderer.value?.handleResize(),this._refreshCharAtlas(),this._clearModel(!1)}handleCharSizeChanged(){this.handleResize(this._terminal.cols,this._terminal.rows)}handleBlur(){for(let e of this._renderLayers)e.handleBlur(this._terminal);this._cursorBlinkStateManager.value?.pause(),this._requestRedrawViewport()}handleFocus(){for(let e of this._renderLayers)e.handleFocus(this._terminal);this._cursorBlinkStateManager.value?.resume(),this._requestRedrawViewport()}handleSelectionChanged(e,t,n){for(let r of this._renderLayers)r.handleSelectionChanged(this._terminal,e,t,n);this._model.selection.update(this._core,e,t,n),this._requestRedrawViewport()}handleCursorMove(){for(let e of this._renderLayers)e.handleCursorMove(this._terminal);this._cursorBlinkStateManager.value?.restartBlinkAnimation()}_handleOptionsChanged(){this._updateDimensions(),this._refreshCharAtlas(),this._updateCursorBlink()}_initializeWebGLState(){return this._rectangleRenderer.value=new EO(this._terminal,this._gl,this.dimensions,this._themeService),this._glyphRenderer.value=new iO(this._terminal,this._gl,this.dimensions,this._optionsService),this.handleCharSizeChanged(),[this._rectangleRenderer.value,this._glyphRenderer.value]}_refreshCharAtlas(){if(this.dimensions.device.char.width<=0&&this.dimensions.device.char.height<=0){this._isAttached=!1;return}let e=LD(this._terminal,this._optionsService.rawOptions,this._themeService.colors,this.dimensions.device.cell.width,this.dimensions.device.cell.height,this.dimensions.device.char.width,this.dimensions.device.char.height,this._coreBrowserService.dpr,this._deviceMaxTextureSize);this._charAtlas!==e&&(this._onChangeTextureAtlas.fire(e.pages[0].canvas),this._charAtlasDisposable.value=JT(dD.forward(e.onAddTextureAtlasCanvas,this._onAddTextureAtlasCanvas),dD.forward(e.onRemoveTextureAtlasCanvas,this._onRemoveTextureAtlasCanvas))),this._charAtlas=e,this._charAtlas.warmUp(),this._glyphRenderer.value?.setAtlas(this._charAtlas)}_clearModel(e){this._model.clear(),e&&this._glyphRenderer.value?.clear()}clearTextureAtlas(){this._charAtlas?.clearTexture(),this._clearModel(!0),this._requestRedrawViewport()}clear(){this._clearModel(!0);for(let e of this._renderLayers)e.reset(this._terminal);this._cursorBlinkStateManager.value?.restartBlinkAnimation(),this._updateCursorBlink()}renderRows(e,t){if(!this._isAttached){if(this._core.screenElement?.isConnected&&this._charSizeService.width&&this._charSizeService.height)this._updateDimensions(),this._refreshCharAtlas(),this._isAttached=!0;else return}for(let n of this._renderLayers)n.handleGridChanged(this._terminal,e,t);!this._glyphRenderer.value||!this._rectangleRenderer.value||(this._glyphRenderer.value.beginFrame()?(this._clearModel(!0),this._updateModel(0,this._terminal.rows-1)):this._updateModel(e,t),this._rectangleRenderer.value.renderBackgrounds(),this._glyphRenderer.value.render(this._model),(!this._cursorBlinkStateManager.value||this._cursorBlinkStateManager.value.isCursorVisible)&&this._rectangleRenderer.value.renderCursor())}_updateCursorBlink(){this._coreService.decPrivateModes.cursorBlink??this._terminal.options.cursorBlink?this._cursorBlinkStateManager.value=new BD(()=>{this._requestRedrawCursor()},this._coreBrowserService):this._cursorBlinkStateManager.clear(),this._requestRedrawCursor()}_updateModel(e,t){let n=this._core,r=this._workCell,i,a,o,s,c,l,u=0,d=!0,f,p,m,h,g,_,v,y,b;e=Nk(e,n.rows-1,0),t=Nk(t,n.rows-1,0);let x=this._coreService.decPrivateModes.cursorStyle??n.options.cursorStyle??`block`,S=this._terminal.buffer.active.baseY+this._terminal.buffer.active.cursorY,C=S-n.buffer.ydisp,w=Math.min(this._terminal.buffer.active.cursorX,n.cols-1),T=-1,E=this._coreService.isCursorInitialized&&!this._coreService.isCursorHidden&&(!this._cursorBlinkStateManager.value||this._cursorBlinkStateManager.value.isCursorVisible);this._model.cursor=void 0;let D=!1;for(a=e;a<=t;a++)for(o=a+n.buffer.ydisp,s=n.buffer.lines.get(o),this._model.lineLengths[a]=0,m=S===o,u=0,c=this._characterJoinerService.getJoinedCharacters(o),y=0;y<n.cols;y++){if(i=this._cellColorResolver.result.bg,s.loadCell(y,r),y===0&&(i=this._cellColorResolver.result.bg),l=!1,d=y>=u,f=y,c.length>0&&y===c[0][0]&&d){p=c.shift();let e=this._model.selection.isCellSelected(this._terminal,p[0],o);for(v=p[0]+1;v<p[1];v++)d&&=e===this._model.selection.isCellSelected(this._terminal,v,o);d&&=!m||w<p[0]||w>=p[1],d?(l=!0,r=new Mk(r,s.translateToString(!0,p[0],p[1]),p[1]-p[0]),f=p[1]-1):u=p[1]}if(h=r.getChars(),g=r.getCode(),v=(a*n.cols+y)*sO,this._cellColorResolver.resolve(r,y,o,this.dimensions.device.cell.width),E&&o===S&&(y===w&&(this._model.cursor={x:w,y:C,width:r.getWidth(),style:this._coreBrowserService.isFocused?x:n.options.cursorInactiveStyle,cursorWidth:n.options.cursorWidth,dpr:this._devicePixelRatio},T=w+r.getWidth()-1),y>=w&&y<=T&&(this._coreBrowserService.isFocused&&x===`block`||this._coreBrowserService.isFocused===!1&&n.options.cursorInactiveStyle===`block`)&&(this._cellColorResolver.result.fg=50331648|this._themeService.colors.cursorAccent.rgba>>8&16777215,this._cellColorResolver.result.bg=50331648|this._themeService.colors.cursor.rgba>>8&16777215)),g!==0&&(this._model.lineLengths[a]=y+1),(this._model.cells[v]!==g||this._model.cells[v+cO]!==this._cellColorResolver.result.bg||this._model.cells[v+lO]!==this._cellColorResolver.result.fg||this._model.cells[v+uO]!==this._cellColorResolver.result.ext)&&(D=!0,h.length>1&&(g|=dO),this._model.cells[v]=g,this._model.cells[v+cO]=this._cellColorResolver.result.bg,this._model.cells[v+lO]=this._cellColorResolver.result.fg,this._model.cells[v+uO]=this._cellColorResolver.result.ext,_=r.getWidth(),this._glyphRenderer.value.updateCell(y,a,g,this._cellColorResolver.result.bg,this._cellColorResolver.result.fg,this._cellColorResolver.result.ext,h,_,i),l)){for(r=this._workCell,y++;y<=f;y++)b=(a*n.cols+y)*sO,this._glyphRenderer.value.updateCell(y,a,0,0,0,0,sE,0,0),this._model.cells[b]=0,this._model.cells[b+cO]=this._cellColorResolver.result.bg,this._model.cells[b+lO]=this._cellColorResolver.result.fg,this._model.cells[b+uO]=this._cellColorResolver.result.ext;y--}}D&&this._rectangleRenderer.value.updateBackgrounds(this._model),this._rectangleRenderer.value.updateCursor(this._model)}_updateDimensions(){!this._charSizeService.width||!this._charSizeService.height||(this.dimensions.device.char.width=Math.floor(this._charSizeService.width*this._devicePixelRatio),this.dimensions.device.char.height=Math.ceil(this._charSizeService.height*this._devicePixelRatio),this.dimensions.device.cell.height=Math.floor(this.dimensions.device.char.height*this._optionsService.rawOptions.lineHeight),this.dimensions.device.char.top=this._optionsService.rawOptions.lineHeight===1?0:Math.round((this.dimensions.device.cell.height-this.dimensions.device.char.height)/2),this.dimensions.device.cell.width=this.dimensions.device.char.width+Math.round(this._optionsService.rawOptions.letterSpacing),this.dimensions.device.char.left=Math.floor(this._optionsService.rawOptions.letterSpacing/2),this.dimensions.device.canvas.height=this._terminal.rows*this.dimensions.device.cell.height,this.dimensions.device.canvas.width=this._terminal.cols*this.dimensions.device.cell.width,this.dimensions.css.canvas.height=Math.round(this.dimensions.device.canvas.height/this._devicePixelRatio),this.dimensions.css.canvas.width=Math.round(this.dimensions.device.canvas.width/this._devicePixelRatio),this.dimensions.css.cell.height=this.dimensions.device.cell.height/this._devicePixelRatio,this.dimensions.css.cell.width=this.dimensions.device.cell.width/this._devicePixelRatio)}_setCanvasDevicePixelDimensions(e,t){this._canvas.width===e&&this._canvas.height===t||(this._canvas.width=e,this._canvas.height=t,this._requestRedrawViewport())}_requestRedrawViewport(){this._onRequestRedraw.fire({start:0,end:this._terminal.rows-1})}_requestRedrawCursor(){let e=this._terminal.buffer.active.cursorY;this._onRequestRedraw.fire({start:e,end:e})}},Mk=class extends oD{constructor(e,t,n){super(),this.content=0,this.combinedData=``,this.fg=e.fg,this.bg=e.bg,this.combinedData=t,this._width=n}isCombined(){return 2097152}getWidth(){return this._width}getChars(){return this.combinedData}getCode(){return 2097151}setFromCharData(e){throw Error(`not implemented`)}getAsCharData(){return[this.fg,this.getChars(),this.getWidth(),this.getCode()]}};function Nk(e,t,n=0){return Math.max(Math.min(e,t),n)}var Pk=`di$target`,Fk=`di$dependencies`,Ik=new Map;function Lk(e){if(Ik.has(e))return Ik.get(e);let t=function(e,n,r){if(arguments.length!==3)throw Error(`@IServiceName-decorator can only be used to decorate a parameter`);Rk(t,e,r)};return t._id=e,Ik.set(e,t),t}function Rk(e,t,n){t[Pk]===t?t[Fk].push({id:e,index:n}):(t[Fk]=[{id:e,index:n}],t[Pk]=t)}Lk(`BufferService`),Lk(`CoreMouseService`),Lk(`CoreService`),Lk(`CharsetService`),Lk(`InstantiationService`),Lk(`LogService`);var zk=Lk(`OptionsService`);Lk(`OscLinkService`),Lk(`UnicodeService`),Lk(`DecorationService`);var Bk={trace:0,debug:1,info:2,warn:3,error:4,off:5},Vk=`xterm.js: `,Hk=class extends QT{constructor(e){super(),this._optionsService=e,this._logLevel=5,this._updateLogLevel(),this._register(this._optionsService.onSpecificOptionChange(`logLevel`,()=>this._updateLogLevel())),Uk=this}get logLevel(){return this._logLevel}_updateLogLevel(){this._logLevel=Bk[this._optionsService.rawOptions.logLevel]}_evalLazyOptionalParams(e){for(let t=0;t<e.length;t++)typeof e[t]==`function`&&(e[t]=e[t]())}_log(e,t,n){this._evalLazyOptionalParams(n),e.call(console,(this._optionsService.options.logger?``:Vk)+t,...n)}trace(e,...t){this._logLevel<=0&&this._log(this._optionsService.options.logger?.trace.bind(this._optionsService.options.logger)??console.log,e,t)}debug(e,...t){this._logLevel<=1&&this._log(this._optionsService.options.logger?.debug.bind(this._optionsService.options.logger)??console.log,e,t)}info(e,...t){this._logLevel<=2&&this._log(this._optionsService.options.logger?.info.bind(this._optionsService.options.logger)??console.info,e,t)}warn(e,...t){this._logLevel<=3&&this._log(this._optionsService.options.logger?.warn.bind(this._optionsService.options.logger)??console.warn,e,t)}error(e,...t){this._logLevel<=4&&this._log(this._optionsService.options.logger?.error.bind(this._optionsService.options.logger)??console.error,e,t)}};Hk=jT([MT(0,zk)],Hk);var Uk,Wk=class extends QT{constructor(e){if(aE&&oE()<16&&!document.createElement(`canvas`).getContext(`webgl2`,{antialias:!1,depth:!1,preserveDrawingBuffer:!0}))throw Error(`Webgl2 is only supported on Safari 16 and above`);super(),this._preserveDrawingBuffer=e,this._onChangeTextureAtlas=this._register(new CD),this.onChangeTextureAtlas=this._onChangeTextureAtlas.event,this._onAddTextureAtlasCanvas=this._register(new CD),this.onAddTextureAtlasCanvas=this._onAddTextureAtlasCanvas.event,this._onRemoveTextureAtlasCanvas=this._register(new CD),this.onRemoveTextureAtlasCanvas=this._onRemoveTextureAtlasCanvas.event,this._onContextLoss=this._register(new CD),this.onContextLoss=this._onContextLoss.event}activate(e){let t=e._core;if(!e.element){this._register(t.onWillOpen(()=>this.activate(e)));return}this._terminal=e;let n=t.coreService,r=t.optionsService,i=t,a=i._renderService,o=i._characterJoinerService,s=i._charSizeService,c=i._coreBrowserService,l=i._decorationService;i._logService;let u=i._themeService;this._renderer=this._register(new jk(e,o,s,c,n,l,r,u,this._preserveDrawingBuffer)),this._register(dD.forward(this._renderer.onContextLoss,this._onContextLoss)),this._register(dD.forward(this._renderer.onChangeTextureAtlas,this._onChangeTextureAtlas)),this._register(dD.forward(this._renderer.onAddTextureAtlasCanvas,this._onAddTextureAtlasCanvas)),this._register(dD.forward(this._renderer.onRemoveTextureAtlasCanvas,this._onRemoveTextureAtlasCanvas)),a.setRenderer(this._renderer),this._register(YT(()=>{if(this._terminal._core._store._isDisposed)return;let t=this._terminal._core._renderService;t.setRenderer(this._terminal._core._createRenderer()),t.handleResize(e.cols,e.rows)}))}get textureAtlas(){return this._renderer?.textureAtlas}clearTextureAtlas(){this._renderer?.clearTextureAtlas()}};function Gk(e){let t=null,n=null;try{let r=new Set(e.element?.querySelectorAll(`canvas`)),i=new Wk;i.onContextLoss(()=>{i.dispose(),t=null}),e.loadAddon(i),t=i,n=[...e.element?.querySelectorAll(`canvas`)??[]].find(e=>!r.has(e)&&!e.classList.contains(`xterm-link-layer`))??null}catch{}let r=new ResizeObserver(()=>{let n=e._core?._renderService;t&&n&&!n._isPaused&&typeof n._renderRows==`function`&&n._renderRows(0,e.rows-1)});if(n)try{r.observe(n,{box:`device-pixel-content-box`})}catch{}let i=()=>{t&&(t.clearTextureAtlas(),e.refresh(0,e.rows-1))};return document.fonts.addEventListener(`loadingdone`,i),{dispose(){document.fonts.removeEventListener(`loadingdone`,i),r.disconnect(),n?.getContext(`webgl2`)?.getExtension(`WEBGL_lose_context`)?.loseContext()}}}function Kk(e){return Uint8Array.from(atob(e),e=>e.charCodeAt(0))}function qk(e){return!e||typeof e!=`object`||!(`stream`in e)||typeof e.stream!=`string`?null:{stream:e.stream,...`data`in e&&typeof e.data==`string`?{data:e.data}:{},...`code`in e&&(typeof e.code==`number`||e.code===null)?{code:e.code}:{}}}var Jk=65536,Yk=20;function Xk(e){let t=0,n=null,r=()=>{n!==null&&window.clearTimeout(n),n=null,t>0&&e(t),t=0};return{parsed(e){t+=e,t>=Jk?r():n??=window.setTimeout(r,Yk)},dispose(){n!==null&&window.clearTimeout(n),n=null,t=0}}}function Zk(e){return!e||typeof e!=`object`||!(`stream`in e)||!(`replay`in e)?null:typeof e.stream==`string`&&typeof e.replay==`string`?{stream:e.stream,replay:e.replay}:null}var Qk=8;function $k(e,t,n){return n&&n!==`leaf-1`?`${e}::${t}::${n}`:`${e}::${t}`}function eA(e){return e.type!==`keydown`||e.key.toLowerCase()!==`c`||e.altKey?null:e.metaKey||e.ctrlKey&&e.shiftKey?`copy`:e.ctrlKey?`interrupt-or-copy`:null}var tA=new WeakMap;function nA(e){let{client:t,el:n,taskId:r,tabId:i}=e,a=new dT({fontFamily:xT,fontSize:13,lineHeight:1.15,theme:Cl.get()??yT,cursorBlink:!0,scrollback:Fs.get().prefs.scrollbackRows,allowProposedApi:!0,overviewRuler:{width:Qk},scrollOnUserInput:!1}),o=new hT(a),s=new qh;a.loadAddon(o),a.loadAddon(s);let c=new pg;a.loadAddon(c),a.loadAddon(new d_),a.unicode.activeVersion=`11`,a.loadAddon(new __),a.open(n);let l=Gk(a);o.fit();let u=null,d=()=>{let e=a.element?.querySelector(`.xterm-screen`);if(!u||!e||a.rows<=0||a.cols<=0)return;let t=document.createElement(`canvas`).getContext(`2d`);t&&(t.font=`${a.options.fontSize??13}px ${xT}`);let n=t?.measureText(`W`).width??0;u.style.setProperty(`--row-h`,`${e.clientHeight/a.rows}px`),n>0&&(u.style.letterSpacing=`${e.clientWidth/a.cols-n}px`)};e.snapshot&&(u=document.createElement(`div`),u.className=`term-snapshot`,u.innerHTML=e.snapshot,u.style.backgroundColor=(Cl.get()??yT).background??``,n.append(u),d(),requestAnimationFrame(d));let f=a.onResize(d),p=()=>{u?.remove(),u=null,f.dispose()},m=u?window.setTimeout(p,1500):null;e.focusOnMount&&a.focus();let h=$k(r,i,e.leafId),g=tA.get(t);g||(g=new Map,tA.set(t,g));let _=g.get(h)??{owners:0,attached:!1};_.owners++,g.set(h,_);let v=()=>void t.request(`term.detach`,{stream:h}).catch(()=>{}),y=null,b=!1,x=null,S=!1,C=wT(e=>{y&&b&&t.request(`term.input`,{stream:y,data:e}).catch(()=>{})}),w=Xk(e=>{y&&t.request(`term.ack`,{stream:y,chars:e}).catch(()=>{})}),T=(e,t,n)=>a.write(e,()=>{n?.(),w.parsed(t)}),E=t.on(`term.data`,e=>{let t=qk(e);if(!t?.data||t.stream!==h)return;let n=Kk(t.data);x?x.push({bytes:n,chars:t.data.length}):y&&T(n,t.data.length)}),D=t.on(`term.reset`,e=>{let t=Zk(e);!t||t.stream!==h||!y||x||(a.write(`\x1Bc`),C.replay(e=>T(Kk(t.replay),t.replay.length,e)))}),O=t.on(`term.exit`,t=>{let n=qk(t);!n||n.stream!==h||(b=!1,e.setNotice({kind:`exited`,code:n.code??null}),e.onExit(n.code??null))}),k=async()=>{x=[],y=null;try{let n=await t.request(`term.attach`,{taskId:r,tabId:i,...e.leafId&&e.leafId!==`leaf-1`?{leafId:e.leafId}:{},cols:a.cols,rows:a.rows,acks:!0}),o=g.get(h);if(o?o.attached=!0:v(),S)return;a.reset(),C.replay(e=>a.write(Kk(n.replay),e));for(let e of x)T(e.bytes,e.chars);if(y=n.stream,b=n.alive,n.alive&&a.rows>2){let{cols:e,rows:r}=a,i=n.stream;t.request(`term.resize`,{stream:i,cols:e,rows:r-1}).then(()=>new Promise(e=>window.setTimeout(e,60))).then(()=>y===i?t.request(`term.resize`,{stream:i,cols:a.cols,rows:a.rows}):void 0).then(()=>window.setTimeout(p,250)).catch(p)}else p();n.alive&&document.activeElement===a.textarea&&pe.set(n.stream),e.setNotice(n.alive?{kind:`none`}:n.restored?{kind:`restored`}:{kind:`exited`,code:null})}catch(t){if(S)return;t instanceof Ba&&t.code===`TAB_NOT_LIVE`?e.setNotice({kind:`notLive`}):t instanceof Ba&&t.code===`NOT_CONNECTED`||e.setNotice({kind:`failed`,message:t instanceof Error?t.message:String(t)})}finally{x=null,y||p()}},ee=()=>n.clientWidth>0&&n.clientHeight>0,A=!1,j=t.onOpen(()=>{A=!ee(),A||k()}),M=null,N=a.onData(e=>{if(M&&e.length===1){let t=M;M=null,t(),C.forward(vT(e))}else C.forward(e)}),P=0,F=()=>{!y||!b||(P=Date.now(),t.request(`term.resize`,{stream:y,cols:a.cols,rows:a.rows}).catch(()=>{}))},I=a.onKey(()=>{Date.now()-P>1e3&&F()}),te=null,ne=a.onResize(({cols:e,rows:n})=>{te!==null&&window.clearTimeout(te),te=window.setTimeout(()=>{y&&b&&t.request(`term.resize`,{stream:y,cols:e,rows:n}).catch(()=>{})},80)}),re=()=>{Se.get()!==null||!ee()||(o.fit(),A&&(A=!1,k()))},ie=new ResizeObserver(re);ie.observe(n);let L=Se.subscribe(re),R=Fs.subscribe(()=>{a.options.scrollback=Fs.get().prefs.scrollbackRows}),z=()=>{n.style.backgroundColor=(Cl.get()??yT).background??``};z();let ae=Cl.subscribe(()=>{a.options.theme=Cl.get()??yT,z()});a.attachCustomKeyEventHandler(t=>{if(t.type===`keydown`&&t.ctrlKey&&!t.metaKey&&!t.altKey&&!t.shiftKey&&t.key.toLowerCase()===`v`&&/Mac|iPhone|iPad/.test(navigator.platform))return e.pasteImage(),!1;let n=eA(t);if(!n)return!0;let r=a.getSelection();return r.trim().length===0?n===`interrupt-or-copy`:(e.copyText(r),a.clearSelection(),!1)});let oe=!1,B=e=>{oe=e.button===0},se=()=>{if(!oe)return;oe=!1;let t=a.getSelection();t.trim().length>0&&e.copyText(t)};n.addEventListener(`mousedown`,B),document.addEventListener(`mouseup`,se);let ce=a.textarea,le=0,V=null,ue=0,de=e=>{if(e.ctrlKey||Math.abs(e.deltaX)>Math.abs(e.deltaY)||TT({alternateScreen:a.buffer.active.type===`alternate`,mouseTracking:a.modes.mouseTrackingMode!==`none`,shift:e.shiftKey})===`app`)return;e.preventDefault(),e.stopPropagation();let t=a.element?.querySelector(`.xterm-screen`),n=t&&a.rows>0?t.clientHeight/a.rows:0,r=ET(le,e,n||15,a.rows);le=r.carry,r.lines!==0&&(V=null,a.scrollLines(r.lines))};n.addEventListener(`wheel`,de,{capture:!0,passive:!1});let H=e=>{e.target instanceof Element&&e.target.closest(`.scrollbar`)&&(V=null)};n.addEventListener(`mousedown`,H,{capture:!0});let fe=()=>{if(a.buffer.active.type===`normal`){let e=DT(a.buffer.active);V===null&&e>0&&(V=e),ue=performance.now()}return!1},me=a.parser.registerCsiHandler({final:`J`},e=>e[0]===3&&fe()),he=a.parser.registerEscHandler({final:`c`},fe),ge=()=>{V=null,DT(a.buffer.active)>0&&a.scrollToBottom()},_e=a.onKey(ge);ce?.addEventListener(`paste`,ge),ce?.addEventListener(`compositionend`,ge);let ve=()=>e.onScrolled(DT(a.buffer.active)),U=a.onScroll(ve),ye=a.onWriteParsed(()=>{V!==null&&performance.now()-ue>1e3&&(V=null);let e=OT(V,a.buffer.active);e!==null&&a.scrollToLine(e),ve()}),be=e=>{V=null,e()},xe=()=>{pe.set(y),F(),e.onFocusChange(!0)},Ce=()=>e.onFocusChange(!1);return ce?.addEventListener(`focus`,xe),ce?.addEventListener(`blur`,Ce),{term:a,search:s,stream:h,scrollLines:e=>be(()=>a.scrollLines(e)),scrollToTop:()=>be(()=>a.scrollToTop()),scrollToBottom:()=>be(()=>a.scrollToBottom()),armCtrl:e=>{M=e},reattach:k,snapshot:()=>c.serializeAsHTML({scrollback:0,includeGlobalBackground:!0}),dispose(){S=!0,p(),m!==null&&window.clearTimeout(m),ie.disconnect(),n.removeEventListener(`wheel`,de,{capture:!0}),n.removeEventListener(`mousedown`,H,{capture:!0}),ce?.removeEventListener(`paste`,ge),ce?.removeEventListener(`compositionend`,ge),me.dispose(),he.dispose(),_e.dispose(),ae(),R(),L(),te!==null&&window.clearTimeout(te),n.removeEventListener(`mousedown`,B),document.removeEventListener(`mouseup`,se),ce?.removeEventListener(`focus`,xe),ce?.removeEventListener(`blur`,Ce),U.dispose(),ye.dispose(),N.dispose(),I.dispose(),ne.dispose(),j(),E(),O(),D(),w.dispose(),y&&pe.get()===y&&pe.set(null),_.owners--,_.owners===0&&(g.delete(h),_.attached&&v()),a.dispose(),l.dispose()}}}var rA=_({});function iA(e,t,n){let r=rA.get()[`${e}::${t.id}`];return r&&r.sig===Yi(n)&&Hi(n.root).some(e=>e.id===r.leaf)?r.leaf:n.activeLeafId}function aA(e,t,n,r){rA.set({...rA.get(),[`${e}::${t}`]:{sig:Yi(n),leaf:r}})}function oA(e,t,n,r){aA(e,t.id,n,r),Rm($k(e,t.id,r))?.focus()}function sA(e){let{taskId:t,tabId:n}=e.selection.get(),r=t?e.tabs.get()[t]?.find(e=>e.id===n):void 0;return t&&r?{taskId:t,tab:r}:null}async function cA(e,t,n){try{let r=await e.client.request(`tab.split`,t);await e.refreshTabsNow(),n?.(r)}catch(e){U(e instanceof Error?e.message:String(e),`error`)}}function lA(e,t,n,r,i){let a=i??(n.split?iA(t,n,n.split):`leaf-1`),o=e.selection.get();(o.taskId!==t||o.tabId!==n.id)&&e.select(t,n.id);let s=Rm($k(t,n.id,a))?.size();cA(e,{taskId:t,tabId:n.id,action:`open`,direction:r,leafId:a,...s},e=>{e.changed?e.split&&aA(t,n.id,e.split,e.leaf):U(L(`layout.splitTooSmall`),`error`)})}function uA(e,t,n,r){let i=n.split,a=i?iA(t,n,i):r,o=()=>cA(e,{taskId:t,tabId:n.id,action:`close`,leafId:r},e=>{let i=e.split;if(!i)return;let o=a!==r&&Hi(i.root).some(e=>e.id===a);aA(t,n.id,i,o?a:i.activeLeafId)});if(!i||!qi(n,i,r)){o();return}V.set((0,B.jsx)(Ae,{title:L(`confirm.closePaneTitle`,{pane:Ki(i,Nn(n)).get(r)??r}),body:L(`confirm.closePaneBody`),confirmLabel:L(`menu.closePane`),onConfirm:o}))}function dA(e,t,n,r){let i=n.split;i&&V.set((0,B.jsx)(ke,{title:qr(`split.renameTitle`),initial:Ki(i,Nn(n)).get(r)??``,allowEmpty:!0,submitLabel:L(`dialog.save`),onSubmit:i=>cA(e,{taskId:t,tabId:n.id,action:`rename`,leafId:r,title:i})}))}function fA(e,t,n,r){return[{label:L(`menu.renamePane`),section:`split`,key:Or(`workspace.split.rename`)??void 0,run:()=>dA(e,t,n,r)},{label:L(`menu.closePane`),section:`split`,key:Ct(`workspace.split.close`)||void 0,run:()=>uA(e,t,n,r)}]}function pA(e,t,n,r){return[{label:L(`menu.splitRight`),section:`split`,key:Or(`workspace.split.right`)??void 0,run:()=>lA(e,t,n,`right`,r)},{label:L(`menu.splitDown`),section:`split`,key:Or(`workspace.split.down`)??void 0,run:()=>lA(e,t,n,`down`,r)}]}function mA(e,t,n,r){let i=n.split,a=r??(i?iA(t,n,i):`leaf-1`);return[...pA(e,t,n,a),...Ui(i)?fA(e,t,n,a):[]]}function hA(e,t){let n=e.tabs.get()[t]??[],r=e.selection.get(),i=(r.taskId===t?n.find(e=>e.id===r.tabId):void 0)??on(n);return!i||!Ji(i)?[]:pA(e,t,i,i.split?iA(t,i,i.split):`leaf-1`)}function gA(e,{task:t,tab:n,leaf:r}){n.split&&oA(t.id,n,n.split,r),e.select(t.id,n.id)}function _A(e){let{row:t}=e,n=v(e.model.selection);v(rA);let r=n.taskId===t.task.id&&n.tabId===t.tab.id&&!!t.tab.split&&iA(t.task.id,t.tab,t.tab.split)===t.leaf;return(0,B.jsxs)(`button`,{type:`button`,className:`row pane-row ${r?`is-active-pane`:``} ${e.cursor?`is-cursor`:``}`,"aria-current":r||void 0,onClick:e.onClick,onContextMenu:e.onMenu,...e.place,children:[(0,B.jsx)(`span`,{className:`child-indent`,"aria-hidden":`true`,children:e.guides?.map((e,t)=>(0,B.jsx)(`span`,{className:`guide is-${e}`},t))}),(0,B.jsx)(`span`,{className:`row-title`,children:t.label})]})}function vA(e,t){let n=t?.trim()??``;return n&&e?.effortLevels?.includes(n)?n:``}function yA({model:e,taskId:t}){let[n,r]=(0,g.useState)([]),[i,a]=(0,g.useState)({}),[o,s]=(0,g.useState)(``),[c,l]=(0,g.useState)(``),[u,d]=(0,g.useState)(``),[f,p]=(0,g.useState)(!1),{busy:m,error:h,submit:_}=Oe();(0,g.useEffect)(()=>{Promise.all([e.client.request(`engines.list`),e.client.request(`task.get`,{taskId:t})]).then(([e,t])=>{let n=e.engines.filter(e=>e.ready!==!1||e.id===t.task.engine),i=n.find(e=>e.id===t.task.engine)??n[0];r(n),a(t.task),s(i?.id??``),l(vA(i,t.task.effort)),d(i?.id===t.task.engine?t.task.model??``:``),p(!0)})},[e,t]);let v=n.find(e=>e.id===o),y=v?.effortLevels??[],b=y.length>0?[``,...y]:[],x=(v?.models??[]).map(e=>e.id).filter(e=>e.toLowerCase().includes(u.trim().toLowerCase())&&e!==u.trim()).slice(0,6),S=e=>{s(e);let t=n.find(t=>t.id===e);l(vA(t,e===i.engine?i.effort:void 0)),d(e===i.engine?i.model??``:``)},C=e=>{let t=n.findIndex(e=>e.id===o),r=n[Math.max(0,Math.min(n.length-1,t+e))];r&&S(r.id)},w=e=>{if(b.length===0)return;let t=Math.max(0,b.indexOf(c));l(b[Math.max(0,Math.min(b.length-1,t+e))]??``)},T=e=>{let t=e.target instanceof HTMLInputElement;if(e.key===`ArrowUp`&&!t)C(-1);else if(e.key===`ArrowDown`&&!t)C(1);else if((e.key===`ArrowLeft`||e.key===`h`)&&!t)w(-1);else if((e.key===`ArrowRight`||e.key===`l`)&&!t)w(1);else return;e.preventDefault()},E=()=>_(async()=>{if(!v)return;let n=y.length>0?c:void 0,r=v.acceptsModel?u.trim():void 0;(v.id!==i.engine||n!==void 0&&n!==(i.effort??``)||r!==void 0&&r!==(i.model??``))&&(await e.client.request(`task.setEngine`,{taskId:t,engine:v.id,...n===void 0?{}:{effort:n},...r===void 0?{}:{model:r}}),U(W(`tasks`,`toast.engineSwitched`,{engine:v.name})))});return(0,B.jsx)(De,{title:W(`tasks`,`changeEngine.title`),wide:!0,children:(0,B.jsxs)(`form`,{className:`dialog-body`,onKeyDown:T,onSubmit:e=>{e.preventDefault(),E()},children:[(0,B.jsx)(`ul`,{className:`choices`,"aria-label":W(`tasks`,`changeEngine.title`),children:n.map(e=>(0,B.jsx)(`li`,{children:(0,B.jsxs)(`button`,{type:`button`,"aria-pressed":e.id===o,className:`row ${e.id===o?`is-selected`:``}`,onClick:()=>S(e.id),children:[(0,B.jsx)(`span`,{className:`glyph tone-accent`,children:e.id===o?`●`:` `}),(0,B.jsx)(`span`,{className:`row-title`,children:e.name}),e.id===i.engine&&(0,B.jsx)(`span`,{className:`muted`,children:W(`tasks`,`changeEngine.current`)})]})},e.id))}),f&&v&&v.acceptsModel&&(0,B.jsxs)(`label`,{className:`field`,children:[(0,B.jsx)(`span`,{className:`kicker`,children:W(`tasks`,`engineModel.label`)}),(0,B.jsx)(`input`,{className:`input`,spellCheck:!1,placeholder:W(`tasks`,`engineModel.placeholder`),value:u,onChange:e=>d(e.target.value)}),x.length>0&&(0,B.jsx)(`div`,{className:`chips-row model-suggest`,children:x.map(e=>(0,B.jsx)(`button`,{type:`button`,className:`chip-button`,onClick:()=>d(e),children:e},e))})]}),b.length>0&&(0,B.jsxs)(`div`,{className:`field`,children:[(0,B.jsx)(`span`,{className:`kicker`,children:W(`tasks`,`changeEngine.effortLabel`)}),(0,B.jsx)(`div`,{className:`chips-row`,children:b.map(e=>(0,B.jsx)(`button`,{type:`button`,"aria-pressed":e===c,className:`chip-button ${e===c?`is-active`:``}`,onClick:()=>l(e),children:e===``?W(`tasks`,`changeEngine.noEffort`):e},e||`default`))})]}),(0,B.jsx)(`p`,{className:`muted taskops-hint keys-only`,children:[W(`tasks`,`changeEngine.footer.engine`),...v?.acceptsModel?[W(`tasks`,`changeEngine.footer.model`)]:[],...b.length>0?[W(`tasks`,`changeEngine.footer.effort`)]:[],W(`tasks`,`changeEngine.footer.set`),W(`tasks`,`changeEngine.footer.cancel`)].join(` · `)}),h&&(0,B.jsx)(`p`,{className:`error`,children:h}),(0,B.jsx)(je,{busy:m||!f,submitLabel:L(`taskops.set`)})]})})}function bA({model:e,task:t}){let[n,r]=(0,g.useState)(null),[i,a]=(0,g.useState)(null),{busy:o,error:s,submit:c}=Oe();(0,g.useEffect)(()=>{e.client.request(`task.get`,{taskId:t.id}).then(e=>r(e.task)).catch(e=>a(Ee(e)))},[e,t.id]);let l=()=>c(async()=>{if(!n?.prompt)return;let t=(await e.client.request(`task.spawn`,{repo:n.repo,prompt:n.prompt,...n.engine?{engine:n.engine}:{},...n.baseRef?{baseBranch:n.baseRef}:{}})).taskIds[0];t&&e.selectWhenListed(t)});return(0,B.jsx)(De,{title:W(`tasks`,`runAgain.title`),wide:!0,children:(0,B.jsxs)(`form`,{className:`dialog-body`,onSubmit:e=>{e.preventDefault(),l()},children:[(0,B.jsx)(`p`,{className:`muted`,children:W(`tasks`,`runAgain.source`,{title:t.title})}),(0,B.jsx)(`pre`,{className:`brief`,children:n?.prompt??i??W(`tasks`,`fieldNotes.loading`)}),(0,B.jsx)(`p`,{className:`muted taskops-hint`,children:W(`tasks`,`runAgain.hint`)}),s&&(0,B.jsx)(`p`,{className:`error`,children:s}),(0,B.jsx)(je,{busy:o||!n?.prompt,submitLabel:W(`tasks`,`runAgain.confirm`)})]})})}function xA(e){let t=new Date(e);if(Number.isNaN(t.getTime()))return e;let n=e=>String(e).padStart(2,`0`);return`${t.getFullYear()}-${n(t.getMonth()+1)}-${n(t.getDate())} ${n(t.getHours())}:${n(t.getMinutes())}`}function SA({model:e,repo:t}){let[n,r]=(0,g.useState)({kind:`loading`}),[i,a]=(0,g.useState)(0),[o,s]=(0,g.useState)(null),[c,l]=(0,g.useState)(null),u=(0,g.useRef)(null),d=()=>e.client.request(`notes.list`,{repo:t}).then(e=>r({kind:`ready`,notes:e.notes})).catch(e=>r({kind:`error`,message:Ee(e)}));(0,g.useEffect)(()=>void d(),[]);let f=n.kind===`ready`?n.notes:[];(0,g.useEffect)(()=>a(e=>Math.max(0,Math.min(e,f.length-1))),[f.length]),(0,g.useEffect)(()=>{u.current?.querySelector(`.is-selected`)?.scrollIntoView({block:`nearest`})},[i]);let p=async n=>{if(n.id!==void 0){l(null);try{await e.client.request(`notes.delete`,{repo:t,id:n.id}),s(null),await d()}catch(e){l(Ee(e))}}};return(0,B.jsx)(De,{title:W(`tasks`,`fieldNotes.title`),wide:!0,children:(0,B.jsxs)(`div`,{className:`dialog-body`,onKeyDown:e=>{if(!o){if(e.key===`ArrowDown`||e.key===`j`)a(e=>Math.min(f.length-1,e+1));else if(e.key===`ArrowUp`||e.key===`k`)a(e=>Math.max(0,e-1));else if(e.key===`d`&&f[i]?.id!==void 0)s(f[i]??null);else return;e.preventDefault()}},children:[(0,B.jsx)(`p`,{className:`muted taskops-path`,children:t}),n.kind===`loading`&&(0,B.jsx)(`p`,{className:`muted`,children:W(`tasks`,`fieldNotes.loading`)}),n.kind===`error`&&(0,B.jsx)(`p`,{className:`error`,children:n.message}),n.kind===`ready`&&f.length===0&&(0,B.jsx)(`p`,{className:`muted`,children:W(`tasks`,`fieldNotes.empty`)}),f.length>0&&(0,B.jsx)(`ul`,{className:`notes choices`,ref:u,children:f.map((e,t)=>(0,B.jsx)(`li`,{children:(0,B.jsxs)(`button`,{type:`button`,className:`note ${t===i?`is-selected`:``}`,onClick:()=>a(t),autoFocus:t===0,children:[(0,B.jsxs)(`span`,{className:`note-head mono`,children:[t===i?`▸ `:` `,xA(e.at),` · `,e.author]}),(0,B.jsx)(`span`,{className:`note-text`,children:e.text})]})},`${e.at}:${t}`))}),o&&(0,B.jsxs)(`div`,{className:`note-confirm`,children:[(0,B.jsx)(`p`,{children:(0,B.jsx)(`strong`,{children:W(`tasks`,`fieldNotes.confirmDelete.title`)})}),(0,B.jsx)(`p`,{className:`muted`,children:W(`tasks`,`fieldNotes.confirmDelete.body`,{text:o.text})}),c&&(0,B.jsx)(`p`,{className:`error`,children:c}),(0,B.jsxs)(`div`,{className:`actions`,children:[(0,B.jsx)(`button`,{type:`button`,className:`link`,onClick:()=>s(null),children:L(`dialog.cancel`)}),(0,B.jsx)(`button`,{type:`button`,className:`button is-danger`,onClick:()=>void p(o),children:L(`taskops.retire`)})]})]}),!o&&(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`p`,{className:`muted taskops-hint keys-only`,children:W(`tasks`,`fieldNotes.footerDeletable`)}),(0,B.jsxs)(`div`,{className:`actions`,children:[(0,B.jsx)(`button`,{type:`button`,className:`link`,disabled:f[i]?.id===void 0,onClick:()=>s(f[i]??null),children:L(`taskops.retire`)}),(0,B.jsx)(`button`,{type:`button`,className:`link`,onClick:xe,children:L(`taskops.close`)})]})]})]})})}var CA=[`backlog`,`in_progress`,`in_review`,`done`,`canceled`,`error`],wA={backlog:`status.backlog`,in_progress:`status.inProgress`,in_review:`status.inReview`,done:`status.done`,canceled:`status.canceled`,error:`status.error`},TA=e=>({binding:e,key:Or(e)??void 0});async function EA(e,t){if(!e){U(L(`menu.nothingToCopy`,{what:t}),`error`);return}try{await navigator.clipboard.writeText(e),U(L(`menu.copied`,{text:e}))}catch{U(L(`menu.copyFailed`),`error`)}}function DA(e,t,n){let r=[{label:L(`menu.newTask`),section:`open`,run:()=>Wo(t)}],i=n.mainTaskId;return i&&(n.first||r.push({label:W(`tasks`,`menu.moveToTop`),section:`edit`,run:()=>void e.client.request(`task.move`,{taskId:i,direction:`top`}).catch(e=>U(W(`tasks`,`toast.moveFailed`,{error:String(e)}),`error`))}),r.push({label:W(`tasks`,`menu.reorderProject`),section:`edit`,...TA(`sidebar.localMerge`),run:()=>OA()})),r.push({label:W(`tasks`,`menu.fieldNotes`),section:`notes`,run:()=>V.set((0,B.jsx)(SA,{model:e,repo:t}))}),i&&r.push({label:W(`tasks`,`menu.forgetProject`),section:`danger`,danger:!0,run:()=>V.set(Kc(e,t,n.label))}),r}function OA(){ka(!Oa.get()),document.querySelector(`.rail`)?.focus()}function kA(e,t,n){let r=e.client,i=[];n&&(i.push({label:L(`menu.closeTab`),section:`tab`,run:()=>V.set((0,B.jsx)(Ae,{title:L(`confirm.closeTabTitle`,{tab:n.title??n.engineName??n.id}),body:L(`confirm.closeTabBody`),confirmLabel:L(`menu.closeTab`),onConfirm:async()=>{await r.request(`tab.close`,{taskId:t.id,tabId:n.id}),await e.refreshTabsNow()}}))}),i.push(...mA(e,t.id,n))),i.push({label:L(`menu.newChat`),section:`open`,run:()=>void Ni(e,t.id)}),i.push({label:L(`menu.newChatPick`),section:`open`,run:()=>V.set((0,B.jsx)(Li,{model:e,taskId:t.id}))}),i.push({label:L(`menu.newShell`),section:`open`,run:()=>void Pi(e,t.id,{kind:`shell`}).catch(e=>U(String(e),`error`))}),t.hasPrompt&&i.push({label:W(`tasks`,`menu.runAgain`),section:`open`,run:()=>V.set((0,B.jsx)(bA,{model:e,task:t}))});let a=!t.machine;a&&i.push({label:W(`tasks`,`menu.openEditor`),section:`open`,...TA(`tasks.openWorktree`),run:()=>void Vc(e,t.id)}),i.push({label:L(`menu.rename`),section:`edit`,...TA(`sidebar.rename`),run:()=>V.set((0,B.jsx)(ke,{title:L(`menu.rename`),initial:t.title,submitLabel:L(`dialog.save`),onSubmit:e=>r.request(`task.rename`,{taskId:t.id,title:e}).then(()=>{})}))}),t.kind!==`main`&&i.push({label:t.pinned?L(`menu.unpin`):L(`menu.pin`),section:`edit`,...TA(`sidebar.pin`),run:()=>void r.request(`task.pin`,{taskId:t.id,pinned:!t.pinned}).catch(e=>U(String(e),`error`))}),a&&i.push({label:W(`tasks`,`menu.reorder`),section:`edit`,...TA(`sidebar.localMerge`),run:()=>OA()}),i.push({label:L(`menu.setStatus`),section:`edit`,children:CA.map(e=>({label:L(wA[e]),checked:e===t.status,run:()=>void r.request(`task.setStatus`,{taskId:t.id,status:e}).catch(e=>U(String(e),`error`))}))}),a&&i.push({label:L(`menu.changeEngine`),section:`edit`,...TA(`tasks.cycleEngine`),run:()=>V.set((0,B.jsx)(yA,{model:e,taskId:t.id}))}),t.pr?.checkState===`failing`&&i.push({label:W(`tasks`,`menu.fixChecks`),section:`git`,key:Ct(`files.fixChecks`),run:()=>void Bc(e,t.id,L(`taskops.fixSent`))}),t.kind===`task`&&t.branch&&a&&i.push({label:W(`tasks`,`menu.syncBase`),section:`git`,key:Ct(`files.syncBase`),run:()=>void Rc(e,t.id)}),t.branch&&i.push({label:L(`menu.renameBranch`),section:`git`,...TA(`tasks.renameBranch`),run:()=>V.set((0,B.jsx)(ke,{title:L(`menu.renameBranch`),initial:t.branch,submitLabel:L(`dialog.save`),onSubmit:e=>r.request(`task.setBranch`,{taskId:t.id,branch:e}).then(()=>{})}))}),t.kind===`task`&&t.branch&&i.push({label:L(`menu.land`),section:`git`,run:()=>void Ic(e,t)});let o=[{label:L(`menu.copyWhat.id`),run:()=>void EA(t.id,L(`menu.what.id`))}];return t.branch&&o.push({label:L(`menu.copyWhat.branch`),run:()=>void EA(t.branch,L(`menu.what.branch`))}),o.push({label:L(`menu.copyWhat.path`),run:()=>void r.request(`task.get`,{taskId:t.id}).then(e=>EA(e.task.worktreePath,L(`menu.what.path`))).catch(e=>U(String(e),`error`))}),i.push({label:L(`menu.copy`),section:`copy`,children:o}),t.kind!==`main`&&i.push({label:W(`tasks`,t.archived?`menu.unarchive`:`menu.archive`),section:`danger`,run:()=>void Gc(e,t)}),i.push({label:L(`menu.removeSession`),section:`danger`,...TA(`sidebar.delete`),danger:!0,run:()=>V.set(t.kind===`main`?Wc(e,t):Uc(e,t))}),i}var AA=`rove.collapsedProjects`,jA=`rove.foldedTasks`,MA=`rove.openedTasks`,NA=600;function PA(e){try{let t=JSON.parse(localStorage.getItem(e)??`[]`);return new Set(Array.isArray(t)?t.filter(e=>typeof e==`string`):[])}catch{return new Set}}function FA(e,t){try{localStorage.setItem(e,JSON.stringify([...t]))}catch{}}var IA=(e,t)=>{let n=new Set(e);return n.delete(t)||n.add(t),n};function LA(){let e=v(Ta),[t,n]=(0,g.useState)({active:!1,query:``}),[r,i]=(0,g.useState)(!1),a=()=>i(e=>!e),[o,s]=(0,g.useState)(()=>PA(AA)),c=e=>s(t=>{let n=IA(t,e);return FA(AA,n),n}),[l,u]=(0,g.useState)(()=>({folded:PA(jA),opened:PA(MA)}));return{sort:e,cycleSort:Da,search:t,setSearch:n,archivedOpen:r,toggleArchived:a,collapsed:o,toggleProject:c,hand:l,toggleTaskFold:(e,t)=>u(n=>{let r=new Set(n.folded),i=new Set(n.opened);return t?(r.delete(e),i.add(e)):(i.delete(e),r.add(e)),FA(jA,r),FA(MA,i),{folded:r,opened:i}})}}var RA=[`sidebar.nav`,`sidebar.goto`,`sidebar.select`,`sidebar.tree.open`,`sidebar.rename`,`sidebar.pin`,`sidebar.localMerge`,`sidebar.delete`,`sidebar.sort`,`sidebar.search.enter`,`tasks.renameBranch`,`tasks.cycleEngine`,`tasks.openWorktree`,`tasks.update`,`tasks.focusEngine`,`task.new`,`settings.open.sidebar`,`worktrees.open.sidebar`];function zA(e){for(let t of e)for(let e of RA){let n=St(e).indexOf(t);if(n>=0)return{id:e,slot:n}}return null}function BA(e,t,n,r){let{search:i,setSearch:a}=n,[o,s]=(0,g.useState)(null),c=(0,g.useRef)(0),l=t.filter(e=>e.kind!==`project`),u=l.findIndex(e=>e.id===o);(0,g.useEffect)(()=>{u<0&&s(r.selectedId&&l.some(e=>e.id===r.selectedId)?r.selectedId:l[0]?.id??null)},[u,l,r.selectedId]);let d=l[u],f=d?.kind===`task`||d?.kind===`pane`?d.task.id:null;(0,g.useEffect)(()=>es.set(f),[f]);let p=l[0]?.id??null;(0,g.useEffect)(()=>{i.query,i.active&&s(p)},[i.active,i.query,p]);let m=e=>{let t=l[Math.max(0,Math.min(l.length-1,e))];t&&s(t.id)},h=t=>{t?.kind===`archived`&&n.toggleArchived(),t?.kind===`task`&&e.select(t.task.id),t?.kind===`pane`&&gA(e,t),t&&t.kind!==`archived`&&zn()},_=(t,n)=>{t?.kind===`task`&&ce(kA(e,t.task,null),n)?.run?.()},v=async t=>{if(t?.kind===`task`&&t.machine===void 0)try{let{engines:n}=await e.client.request(`engines.list`),r=n.filter(e=>e.ready!==!1),i=r[(r.findIndex(e=>e.id===t.task.engine?.id)+1)%r.length];if(!i||i.id===t.task.engine?.id)return;await e.client.request(`task.setCommand`,{taskId:t.task.id,engine:i.id}),U(L(`rail.engineSwitched`,{engine:i.name}))}catch(e){U(L(`rail.engineSwitchFailed`,{error:e instanceof Error?e.message:String(e)}),`error`)}};return{cursor:o,setCursor:s,onKeyDown:t=>{let o=l[u];if(i.active){if(t.metaKey||t.ctrlKey||t.altKey)return;if(t.key===`Escape`)a({active:!1,query:``});else if(t.key===`Enter`)h(o),a({active:!1,query:``});else if(t.key===`ArrowDown`)m(u+1);else if(t.key===`ArrowUp`)m(u-1);else if(t.key===`Backspace`)a(e=>({...e,query:e.query.slice(0,-1)}));else if(t.key.length===1)a(e=>({...e,query:e.query+t.key}));else return;t.preventDefault();return}let s=zA(mr(t));if(Oa.get()){let n=o?.kind===`task`&&o.machine===void 0;if(s?.id===`sidebar.nav`)n&&Aa(e,o,s.slot%2==0?1:-1);else if(s?.id===`sidebar.localMerge`||t.key===`Enter`||t.key===`Escape`)Oa.set(!1);else return;t.preventDefault();return}switch(s?.id){case`sidebar.nav`:m(s.slot%2==0?u+1:u-1);break;case`sidebar.goto`:s.slot%2==1?m(l.length-1):Date.now()-c.current<NA?(m(0),c.current=0):c.current=Date.now();break;case`sidebar.select`:case`sidebar.tree.open`:h(o);break;case`tasks.focusEngine`:document.querySelector(`.term-slot:not(.is-hidden) textarea`)?.focus();break;case`sidebar.rename`:case`sidebar.pin`:case`sidebar.delete`:case`tasks.renameBranch`:case`tasks.openWorktree`:_(o,s.id);break;case`tasks.cycleEngine`:v(o);break;case`sidebar.localMerge`:o?.machine===void 0&&ka(!0);break;case`sidebar.sort`:n.cycleSort(),U(W(`tasks`,`sort.label`,{mode:W(`tasks`,`sort.modes.${Ta.get()}`)}));break;case`sidebar.search.enter`:a({active:!0,query:``});break;case`task.new`:r.onNewTask(o?.kind===`task`||o?.kind===`pane`?o.task.repo:void 0,o?.machine);break;case`settings.open.sidebar`:r.onSettings();break;case`worktrees.open.sidebar`:Vn(`worktrees`);break;case`tasks.update`:Vn(`update`);break;default:return}t.preventDefault()}}}var VA=(e,t,n)=>`~pane:${e}:${t}:${n}`;function HA(e,t){return e.flatMap(e=>e.kind===`task`?[e,...(t[e.task.id]??[]).flatMap(t=>{let n=t.split;if(!n||!Ui(n))return[];let r=Ki(n,Nn(t));return Hi(n.root).map(n=>({id:VA(e.task.id,t.id,n.id),kind:`pane`,task:e.task,tab:t,leaf:n.id,label:r.get(n.id)??n.id,depth:e.depth+1,...e.machine===void 0?{}:{machine:e.machine}}))})]:[e])}var UA=450,WA=!1;typeof document<`u`&&(document.addEventListener(`keydown`,()=>{WA=!0},!0),document.addEventListener(`pointerdown`,()=>{WA=!1},!0));var GA=e=>{let t=e.querySelector(`.row-title`);return!!t&&t.scrollWidth>t.clientWidth};function KA(e,t){let[n,r]=(0,g.useState)(null),i=(0,g.useRef)(null),a=(0,g.useRef)(null),o=()=>{i.current!==null&&window.clearTimeout(i.current),i.current=null},s=e=>{o(),i.current=window.setTimeout(()=>r(e.getBoundingClientRect()),UA)},c=()=>{o(),r(null)};return(0,g.useEffect)(()=>{let e=a.current,n=e?.closest(`.rail`);if(!t||!e||!n||!WA||!n.contains(document.activeElement)||!GA(e))return;let i=()=>{o(),r(null)},c=e=>{e.relatedTarget instanceof Node&&n.contains(e.relatedTarget)||i()};return s(e),n.addEventListener(`focusout`,c),()=>{n.removeEventListener(`focusout`,c),i()}},[t]),(0,g.useEffect)(()=>()=>{i.current!==null&&window.clearTimeout(i.current)},[]),{ref:e=>{a.current=e},onPointerEnter:e=>{e.pointerType===`touch`||!GA(e.currentTarget)||s(e.currentTarget)},onPointerLeave:c,hide:c,tip:n?(0,ym.createPortal)((0,B.jsx)(`div`,{className:`row-tip`,role:`tooltip`,style:{top:n.top+n.height/2,left:n.right+8},children:e}),document.body):null}}var qA=1.2,JA=.3,YA=20,XA=.35,ZA=.25,QA=.12,$A=2,ej=1,tj={error:{dots:[0,4,8,2,6],bright:1},done:{dots:[3,7,5,2],bright:1},idle:{dots:[1,2,5,8,7,6,3,0],bright:.6}},nj=Array.from({length:9},(e,t)=>Math.hypot(t%3-1,Math.floor(t/3)-1));function rj(e){return XA+.65*(.5+.5*Math.cos(2*Math.PI*e/qA))}function ij(e,t,n,r=1){switch(e){case`working`:{let e=t*80/1e3/r;return nj.map(t=>rj(e-t*JA))}case`waiting`:{let e=[0,1,4,5].includes(Math.floor(t/r)%YA);return Array(9).fill(e?ZA:1)}default:{let t=tj[e],r=Array(9).fill(QA);return t?.dots.forEach((e,i)=>{let a=Math.min(Math.max(n-i*ej,0),$A)/$A;r[e]=t.bright*a+QA*(1-a)}),r}}}function aj(e,t){let n=tj[e];return!n||t<(n.dots.length-1)*ej+$A}var oj=3,sj=new Set,cj;function lj(e,t){let n=typeof matchMedia==`function`&&matchMedia(`(prefers-reduced-motion: reduce)`).matches,r=1/0,i=e.held+t-e.step,a=aj(e.look,n?r:i);return ij(e.look,t,n?r:i,n?oj:1).forEach((t,n)=>{let r=e.el.children[n].style;r.opacity=t.toFixed(3)}),a}function uj(){let e=Math.floor(performance.now()/80);for(let t of sj)lj(t,e)||sj.delete(t);dj()}function dj(){cj=sj.size?window.setTimeout(uj,80-performance.now()%80+2):void 0}function fj(e,t,n){let r=Math.floor(performance.now()/80),i=n>0?Math.max(Date.now()-n,0):1/0,a={el:e,look:t,step:r,held:Math.floor(i/80)};return lj(a,r)&&(sj.add(a),cj===void 0&&dj()),()=>{sj.delete(a)}}function pj({status:e}){let{look:t,tone:n}=td(e);return(0,B.jsx)(mj,{look:t,tone:n,since:e?.since??0},t)}function mj({look:e,tone:t,since:n}){let r=(0,g.useRef)(null),[i]=(0,g.useState)(n);return(0,g.useLayoutEffect)(()=>{let t=r.current;return t?fj(t,e,i):void 0},[e,i]),(0,B.jsx)(`span`,{ref:r,className:`dots tone-${t}`,"aria-hidden":`true`,children:Array.from({length:9},(e,t)=>(0,B.jsx)(`i`,{},t))})}function hj(e){return e.replace(/\[`[0-9a-f]{7,40}`\]\([^)]*\)\s*/g,``).replace(/\s+[—-]\s+\[@[^\]]+\]\([^)]*\)\s*$/,``).trim()}function gj(e){let t=[],n=(e,n)=>t.push({kind:e,text:n,id:t.length});for(let r of e.split(/\r?\n/)){let e=r.trimEnd();if(e.trim()===``)continue;let i=/^#{1,6}\s+(.*)$/.exec(e);if(i){n(`heading`,i[1]??``);continue}let a=/^\s*[-*]\s+(.*)$/.exec(e);if(a){n(`item`,a[1]??``);continue}let o=t.at(-1);o&&o.kind!==`heading`?o.text=`${o.text} ${e.trim()}`:n(`para`,e.trim())}return t.map(e=>e.kind===`item`?{...e,text:hj(e.text)}:e)}var _j=/\[([^\]]+)\]\((https?:\/\/[^)\s]+)\)|`([^`]+)`|\*\*([^*]+)\*\*/g;function vj(e){let t=[],n=0;for(let r of e.matchAll(_j)){let i=r.index??0;i>n&&t.push(e.slice(n,i));let[a,o,s,c,l]=r;o!==void 0&&s!==void 0?t.push((0,B.jsx)(`a`,{href:s,target:`_blank`,rel:`noopener noreferrer`,children:vj(o)},i)):c===void 0?l!==void 0&&t.push((0,B.jsx)(`b`,{children:l},i)):t.push((0,B.jsx)(`code`,{children:c},i)),n=i+a.length}return n<e.length&&t.push(e.slice(n)),t}function yj({body:e}){let t=gj(e),n=[],r=[],i=()=>{r.length>0&&n.push((0,B.jsx)(`ul`,{children:r},`ul-${n.length}`)),r=[]};for(let e of t){if(e.kind===`item`){r.push((0,B.jsx)(`li`,{children:vj(e.text)},e.id));continue}i(),n.push(e.kind===`heading`?(0,B.jsx)(`h3`,{children:e.text},e.id):(0,B.jsx)(`p`,{children:vj(e.text)},e.id))}return i(),(0,B.jsx)(`div`,{className:`release-md`,children:n})}var bj=_(null),xj=(e,t)=>e.replace(/\{(\w+)\}/g,(e,n)=>t[n]??e),Sj=e=>`https://github.com/Sma1lboy/rove/releases/tag/v${e}`;function Cj(){return z()===`zh`?$e:Qe}function wj(e){return e.request(`update.check`,{force:!0,locale:te.get()}).then(bj.set,()=>{})}function Tj(){let e=Cj(),t=v(bj);return t?.info?.hasUpdate?(0,B.jsxs)(`button`,{type:`button`,className:`kicker update-chip`,title:xj(e.chip,{version:t.info.latest}),onClick:()=>Vn(`update`),children:[`↑`,(0,B.jsxs)(`span`,{className:`update-chip-version`,children:[` `,t.info.latest]})]}):null}function Ej({client:e}){let t=Cj(),n=v(bj),[r,i]=(0,g.useState)(!1),[a,o]=(0,g.useState)(`release`),[s,c]=(0,g.useState)(null),l=(0,g.useRef)(null);(0,g.useEffect)(()=>{l.current?.focus(),wj(e).finally(()=>i(!0))},[e]);let u=n?.info??null,d=n?.current??``,f=u?.latest??d,p=u?.hasUpdate===!0,m=r&&u===null,h=r&&u!==null&&!p,_=n?.notes??[],y=_[0]?.url??(f?Sj(f):null),b=[{id:`release`,key:`R`,label:t.actions.openRelease,detail:y??t.releaseUrlUnavailable},{id:`close`,key:`Q`,label:t.actions.close,detail:t.actions.closeDetail}],x=e=>{if(e===`close`)return H.set(null);c(y&&window.open(y,`_blank`,`noopener`)!==null?t.statusReleaseOpened:t.statusReleaseError)};return(0,B.jsxs)(`div`,{className:`page`,tabIndex:0,ref:l,onKeyDown:e=>{if(e.ctrlKey&&!e.metaKey&&!e.altKey&&e.key.toLowerCase()===`c`&&!window.getSelection()?.toString())return e.preventDefault(),x(`close`);if(e.metaKey||e.ctrlKey||e.altKey)return;let t=b.findIndex(e=>e.id===a);if(e.key===`j`||e.key===`ArrowDown`)o(b[(t+1)%b.length]?.id??`close`);else if(e.key===`k`||e.key===`ArrowUp`)o(b[(t-1+b.length)%b.length]?.id??`close`);else if(e.key===`Enter`)x(a);else if(e.key===`r`)x(`release`);else if(e.key===`q`||e.key===`Escape`)x(`close`);else return;e.preventDefault()},children:[(0,B.jsxs)(`div`,{className:`page-head`,children:[(0,B.jsx)(`h1`,{className:`page-title mono`,children:t.pageTitle}),(0,B.jsx)(`button`,{type:`button`,className:`link muted mono`,onClick:()=>x(`close`),children:_i()?L(`dialog.close`):t.closeHint})]}),(0,B.jsxs)(`p`,{className:`mono update-versions`,children:[(0,B.jsx)(`span`,{className:`muted`,children:t.current}),` `,(0,B.jsxs)(`b`,{children:[`v`,d]}),` `,(0,B.jsx)(`span`,{className:`muted`,children:t.latest}),` `,m?(0,B.jsx)(`b`,{className:`muted`,children:t.latestUnknown}):r?(0,B.jsxs)(`b`,{className:p?`tone-warning`:`tone-success`,children:[`v`,f]}):(0,B.jsx)(`span`,{className:`muted`,children:`…`})]}),m&&(0,B.jsx)(`p`,{className:`muted`,children:t.registryRetry}),h&&(0,B.jsx)(`p`,{className:`tone-success`,children:t.upToDate}),p&&(0,B.jsx)(`p`,{className:`mono muted`,children:`rove update`}),(0,B.jsx)(`div`,{className:`update-actions`,children:b.map(e=>(0,B.jsxs)(`button`,{type:`button`,className:`update-action ${a===e.id?`is-cursor`:``}`,onClick:()=>x(e.id),children:[(0,B.jsxs)(`span`,{className:`tone-accent mono update-key`,children:[`[`,e.key,`]`]}),(0,B.jsx)(`span`,{className:`update-label`,children:e.label}),(0,B.jsx)(`span`,{className:`muted`,children:e.detail})]},e.id))}),s&&(0,B.jsx)(`p`,{className:`mono tone-accent`,children:s}),p&&(0,B.jsx)(`p`,{className:`mono muted`,children:xj(t.changesSectionHeader,{from:d,to:f})}),!r&&(0,B.jsx)(`p`,{className:`muted`,children:t.loadingNotes}),r&&p&&_.length===0&&(0,B.jsx)(`p`,{className:`muted`,children:t.notesUnavailable}),_.map(e=>(0,B.jsxs)(`section`,{className:`release-notes`,children:[(0,B.jsxs)(`h2`,{className:`mono`,children:[`v`,e.version]}),(0,B.jsx)(yj,{body:e.body})]},e.version))]})}var Dj=`rove.whatsNewSeenVersion`,Oj=e=>e.split(/[.-]/).slice(0,3).map(Number),kj=(e,t)=>{let[n,r]=[Oj(e),Oj(t)];for(let e=0;e<3;e++)if((n[e]??0)!==(r[e]??0))return(n[e]??0)>(r[e]??0);return!1};function Aj(e,t){let n=localStorage.getItem(Dj);localStorage.setItem(Dj,t),!(!n||!kj(t,n))&&e.request(`release.notes`,{version:t.replace(/-.*$/,``),locale:te.get()}).then(e=>V.set((0,B.jsx)(jj,{from:n,to:t,notes:e.notes})),()=>V.set((0,B.jsx)(jj,{from:n,to:t,notes:null})))}function jj(e){let t=Cj(),n=(0,g.useRef)(null);return(0,g.useEffect)(()=>n.current?.focus(),[]),(0,g.useEffect)(()=>{let e=e=>{e.key===`q`&&V.set(null)};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[]),(0,B.jsxs)(De,{title:t.whatsNew.title,wide:!0,children:[(0,B.jsx)(`p`,{className:`muted`,children:xj(t.whatsNew.upgraded,{from:e.from,to:e.to})}),(0,B.jsx)(`div`,{className:`whats-new-body`,children:e.notes?(0,B.jsx)(yj,{body:e.notes.body}):(0,B.jsx)(`p`,{className:`muted`,children:t.whatsNew.notesUnavailable})}),(0,B.jsxs)(`div`,{className:`actions`,children:[(0,B.jsx)(`span`,{className:`mono muted whats-new-keys`,children:L(`whatsNew.keys`)}),(0,B.jsx)(`a`,{className:`link`,href:e.notes?.url??Sj(e.to),target:`_blank`,rel:`noopener noreferrer`,children:L(`whatsNew.openRelease`)}),(0,B.jsx)(`button`,{ref:n,type:`button`,className:`button`,onClick:()=>V.set(null),children:L(`whatsNew.continue`)})]})]})}function Mj(e){let t=W(`doctor`,`fix.humanOnlyWhy`),n=[];if(e.git||n.push({id:`git`,label:W(`doctor`,`fix.git`),action:W(`doctor`,`fix.gitAction`),why:t}),e.engines.length===0){let r=e.signedOut.length>0;n.push({id:`engine`,label:W(`doctor`,r?`fix.noEngineLogin`:`fix.noEngine`),action:W(`doctor`,r?`fix.noEngineLoginAction`:`fix.noEngineAction`,{list:e.signedOut.map(e=>e.id).join(`, `)}),why:t})}return n}function Nj({model:e}){z(),v(mt);let[t,n]=(0,g.useState)(null);(0,g.useEffect)(()=>{let t=!0;return e.client.request(`welcome.env`).then(e=>t&&n(e)).catch(()=>{}),()=>{t=!1}},[e]);let r=[{cap:Ct(`task.new.global`),msg:`stepNew`},{cap:pt(`f1`),msg:`stepHelp`},{cap:bt(),msg:`stepPrefix`}],i=t===null?null:t.engines.length>0?{key:`enginesFound`,warn:!1,list:t.engines.map(e=>e.name).join(` · `)}:t.signedOut.length>0?{key:`enginesSignedOut`,warn:!0,list:t.signedOut.map(e=>e.name).join(` · `)}:{key:`enginesMissing`,warn:!0,list:``},a=t!==null&&(t.engines.length===0||!t.git)?Mj(t):[],o=t?.start??null;return(0,B.jsxs)(`div`,{className:`welcome`,"data-field":`welcome`,children:[(0,B.jsx)(`h1`,{className:`welcome-title`,children:W(`workspace`,`welcome.title`)}),(0,B.jsx)(`p`,{className:`muted`,children:W(`workspace`,`welcome.tagline`)}),(0,B.jsx)(`dl`,{className:`welcome-steps keys-only`,children:r.map(e=>(0,B.jsxs)(`div`,{className:`welcome-step`,children:[(0,B.jsx)(`dt`,{className:`welcome-cap mono`,children:e.cap}),(0,B.jsx)(`dd`,{className:`muted`,children:W(`workspace`,`welcome.${e.msg}`)})]},e.msg))}),(0,B.jsx)(`p`,{className:`muted`,children:W(`workspace`,`welcome.worktreeExplain`)}),t!==null&&i!==null&&(0,B.jsxs)(`div`,{className:`welcome-env`,children:[(0,B.jsx)(`p`,{className:i.warn?`tone-warn`:`muted`,children:W(`workspace`,`welcome.${i.key}`,{list:i.list})}),!t.git&&(0,B.jsx)(`p`,{className:`tone-warn`,children:W(`workspace`,`welcome.gitMissing`)}),a.map(e=>(0,B.jsxs)(`div`,{className:`welcome-fix`,children:[(0,B.jsx)(`p`,{className:`tone-warn`,children:e.label}),(0,B.jsx)(`p`,{className:`tone-accent mono`,children:e.action}),(0,B.jsx)(`p`,{className:`muted`,children:e.why})]},e.id)),a.length>0&&(0,B.jsx)(`p`,{className:`muted`,children:W(`common`,`failureHint`,{command:`rove doctor`})})]}),t!==null&&o!==null&&(0,B.jsxs)(`div`,{className:`welcome-start`,children:[(0,B.jsx)(`button`,{type:`button`,className:`button`,"data-field":`quick-start`,onClick:()=>V.set((0,B.jsx)(Ti,{model:e,start:o,engines:t.engines})),children:W(`onboarding`,`quickStart`)}),(0,B.jsx)(`p`,{className:`muted`,children:_i()?L(`pages.quickIntentTouch`):W(`onboarding`,`quickIntent`,{key:Ct(`task.new.global`)})})]}),(0,B.jsx)(`p`,{className:`muted welcome-docs`,children:W(`workspace`,`welcome.docsHint`)})]})}function Pj(e,t){e.preventDefault(),le.set({x:e.clientX,y:e.clientY,items:t,target:e.currentTarget,fromKeyboard:e.button!==2})}function Fj({model:e,narrow:t}){let n=z(),r=v(e.tasks),i=v(e.remote),a=za(e),o=v(e.tabs),s=v(e.tabsSettled),c=v(e.selection),l=r?.tasks??[],u=r?.attention.filter(e=>e.unread).length??0,d=c.taskId,f=new Map([...l,...i].map(e=>[e.id,e])),p=LA(),m=v(Oa),h=e=>jn({tasks:l,remote:i,machines:a,sort:p.sort,query:e,fold:{...p.hand,selectedId:d??void 0}}),_=h(p.search.active?p.search.query:``),{groups:y}=_,b=p.search.active?_.rows:Em(Pn(HA(Pm(_.rows,o,c.taskId,s),o),p.collapsed),r?.archived??[],p.archivedOpen,{...p.hand,selectedId:d??void 0}),x=e=>e.filter(e=>e.kind!==`project`),S=(n===`zh`?Ye:Je).machine,C=new Set(a.filter(e=>e.state!==`online`).map(e=>e.alias)),w=y.find(e=>e.tasks.some(e=>e.kind===`main`))?.repo,T=e=>({mainTaskId:y.find(t=>t.repo===e)?.tasks.find(e=>e.kind===`main`)?.id??null,label:_n(e),first:e===w}),E=Nm(e,l,!p.search.active,p.sort==="default",T),D=E.places(b),O=()=>V.set((0,B.jsx)(Ac,{model:e})),k=BA(e,b,p,{selectedId:d,onNewTask:Wo,onSettings:O}),ee=x(h(``).rows).length,A=(0,g.useRef)(null),j=v(hd)&&!t,M=v(gd)&&j,N=t?l.find(e=>e.id===c.taskId&&!e.deleting)??null:null;return(0,B.jsxs)(`nav`,{className:`rail ${j?`is-folded`:``}`,ref:A,inert:j&&!M,"aria-hidden":j&&!M,onMouseEnter:j?()=>vd(!0):void 0,onMouseLeave:j?()=>vd(!1):void 0,tabIndex:0,onKeyDown:e=>{zl(`sidebar`),k.onKeyDown(e)},children:[(0,B.jsxs)(`header`,{className:`rail-head`,children:[(0,B.jsxs)(`span`,{className:`wordmark`,children:[(0,B.jsx)(`span`,{className:`bracket`,children:`[`}),` rove `,(0,B.jsx)(`span`,{className:`bracket`,children:`]`})]}),(0,B.jsxs)(`span`,{className:`badge-host`,children:[(0,B.jsx)(`button`,{type:`button`,className:`kicker inbox-chip ${u>0?`is-accent`:``}`,onClick:()=>V.set((0,B.jsx)(Sa,{model:e})),children:L(`rail.inbox`,{count:u})}),(0,B.jsx)(pl,{model:e,bindingId:`inbox.show`})]}),(0,B.jsx)(Tj,{})]}),m&&(0,B.jsxs)(`div`,{className:`rail-search mono`,children:[(0,B.jsx)(`span`,{className:`tone-accent`,children:W(`tasks`,`moveChip`).trim()}),(0,B.jsx)(`span`,{className:`muted keys-only`,children:L(`taskops.moveHint`)})]}),p.search.active&&(0,B.jsxs)(`div`,{className:`rail-search mono`,children:[(0,B.jsx)(`span`,{className:`tone-accent`,children:`/`}),(0,B.jsx)(`span`,{children:p.search.query}),(0,B.jsx)(`span`,{className:`caret`,children:`█`}),(0,B.jsx)(`span`,{className:`muted`,children:p.search.query?`${x(b).length}/${ee}`:L(`rail.searchPlaceholder`)})]}),(0,B.jsx)(_m,{model:e}),(0,B.jsxs)(`div`,{className:`rail-body ${E.dragging?`is-sorting`:``}`,...E.body,children:[r&&l.length===0&&i.length===0&&t&&(0,B.jsx)(Nj,{model:e}),r&&l.length===0&&i.length===0&&!t&&(0,B.jsxs)(`div`,{className:`empty`,children:[(0,B.jsx)(`p`,{children:L(`rail.empty`)}),(0,B.jsx)(`p`,{className:`muted`,children:L(`rail.emptyHint`)})]}),N&&(0,B.jsx)(Ed,{title:N.title}),b.map((t,n)=>t.kind===`pane`?(0,B.jsx)(_A,{model:e,row:t,guides:jm(b,n),cursor:t.id===k.cursor,place:D(t),onClick:()=>{k.setCursor(t.id),gA(e,t),zn()},onMenu:n=>{k.setCursor(t.id),Pj(n,fA(e,t.task.id,t.tab,t.leaf))}},t.id):(0,B.jsx)(Ij,{row:t,guides:t.kind===`task`&&t.depth>1?jm(b,n):void 0,cloud:Ia(t,a,S),tabs:t.kind===`task`?o[t.task.id]:void 0,selected:t.id===d,cursor:t.id===k.cursor,stale:t.machine!==void 0&&C.has(t.machine),collapsed:t.kind===`project`&&p.collapsed.has(t.id),drag:E.props(t),dragging:E.dragging===t.id,place:D(t),onNewTask:t.kind===`project`&&!t.noProject?()=>Wo(t.repo,t.machine):void 0,moving:m&&t.machine===void 0&&(t.kind===`project`?!t.noProject&&T(t.repo).mainTaskId===k.cursor:t.id===k.cursor&&(t.kind!==`task`||t.task.kind!==`main`)),prTasks:t.kind===`task`?[t.task,...(t.fold?.descendantIds??[]).flatMap(e=>f.get(e)??[])]:void 0,rollup:t.kind===`task`&&t.fold?.collapsed?ad([t.task,...t.fold.descendantIds.flatMap(e=>f.get(e)??[])]):void 0,onToggleFold:()=>{t.kind===`task`&&p.toggleTaskFold(t.id,t.fold?.collapsed===!0),t.kind===`archived`&&p.toggleArchived()},onClick:()=>{k.setCursor(t.id),t.kind===`archived`&&p.toggleArchived(),t.kind===`project`&&p.toggleProject(t.id),t.kind===`task`&&(e.select(t.task.id),zn())},onMenu:n=>{if(!(t.kind===`project`&&(t.machine!==void 0||t.noProject))){if(t.kind===`project`){let r=T(t.repo);r.mainTaskId&&k.setCursor(r.mainTaskId),Pj(n,DA(e,t.repo,r));return}t.kind===`task`&&(k.setCursor(t.id),Pj(n,zj(Rj(kA(e,t.task,null),t.fold,()=>p.toggleTaskFold(t.id,t.fold?.collapsed===!0)),hA(e,t.task.id))))}}},t.id))]}),(0,B.jsxs)(`div`,{className:`rail-nav rail-foot`,children:[(0,B.jsxs)(`button`,{type:`button`,className:`rail-nav-row`,onClick:O,children:[(0,B.jsxs)(`svg`,{className:`rail-nav-icon`,viewBox:`0 0 24 24`,"aria-hidden":`true`,children:[(0,B.jsx)(`path`,{d:`M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z`}),(0,B.jsx)(`circle`,{cx:`12`,cy:`12`,r:`3`})]}),(0,B.jsx)(`span`,{children:L(`rail.settings`)})]}),(0,B.jsx)(pl,{model:e,bindingId:`settings.open`})]}),(0,B.jsx)(kd,{pane:`sidebar`}),!t&&!j&&(0,B.jsx)(xd,{rail:A})]})}function Ij(e){let{row:t}=e,n=KA(t.kind===`task`?Mn(t.task,e.tabs):``,e.cursor&&t.kind===`task`),r=e.dragging?`is-dragging`:``,i=`${e.cursor?`is-cursor`:``} ${e.moving?`is-moving`:``} ${e.stale?`is-stale`:``} ${r}`;if(t.kind===`project`)return(0,B.jsxs)(`h2`,{className:`project-head ${e.moving?`is-moving`:``} ${e.stale?`is-stale`:``} ${r}`,onContextMenu:e.onMenu,...e.place,...e.drag,children:[(0,B.jsxs)(`button`,{type:`button`,className:`project-toggle`,title:t.noProject?void 0:t.repo,"aria-expanded":!e.collapsed,onClick:e.onClick,children:[(0,B.jsx)(`span`,{className:`project-label`,children:t.label}),(0,B.jsx)(`svg`,{className:`project-chevron ${e.collapsed?`is-collapsed`:``}`,viewBox:`0 0 10 10`,"aria-hidden":`true`,children:(0,B.jsx)(`path`,{d:`M2.5 3.75 5 6.25l2.5-2.5`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.3`,strokeLinecap:`round`,strokeLinejoin:`round`})})]}),e.onNewTask&&(0,B.jsx)(`button`,{type:`button`,className:`project-add`,title:L(`rail.newTask`),onClick:e.onNewTask,children:`+`})]});if(t.kind===`archived`)return(0,B.jsx)(`button`,{type:`button`,className:`row count-row archived-row ${i}`,"aria-expanded":t.expanded,onClick:e.onClick,...e.place,children:(0,B.jsx)(`span`,{className:`row-title muted`,children:W(`tasks`,`archivedRow`,{count:t.count})})});let a=t.task,o=a.rowStatus?.kind===`running`;return(0,B.jsxs)(`button`,{type:`button`,ref:n.ref,className:`row task-row ${e.selected?`is-selected`:``} ${i} ${o?`is-running`:``}`,onClick:e.onClick,onContextMenu:e.onMenu,onPointerEnter:n.onPointerEnter,onPointerLeave:n.onPointerLeave,...e.place,...e.drag,children:[n.tip,e.guides&&(0,B.jsx)(`span`,{className:`child-indent`,"aria-hidden":`true`,children:e.guides.map((e,t)=>(0,B.jsx)(`span`,{className:`guide is-${e}`},t))}),(0,B.jsx)(`span`,{className:`row-title`,children:Mn(a,e.tabs)}),(0,B.jsxs)(`span`,{className:`chips`,children:[t.level!==void 0&&(0,B.jsx)(`span`,{className:`chip muted`,children:t.level}),(a.extraRepoCount??0)>0&&(0,B.jsxs)(`span`,{className:`chip muted`,title:L(`rail.extraRepos`,{count:a.extraRepoCount??0}),children:[`+`,a.extraRepoCount]}),t.fold?.collapsed&&(0,B.jsx)(Lj,{count:t.fold.count,onUnfold:e.onToggleFold}),a.pinned&&(0,B.jsx)(`span`,{className:`chip muted`,children:`▴`}),(0,B.jsx)(wm,{tasks:e.prTasks??[a],onOpen:n.hide}),(0,B.jsx)(pj,{status:t.fold?.collapsed?e.rollup:a.rowStatus}),e.cloud&&(0,B.jsx)(La,{label:e.cloud})]})]})}function Lj(e){let t=W(`tasks`,`menu.expandChildren`);return(0,B.jsxs)(`span`,{role:`button`,tabIndex:-1,"aria-label":t,"aria-expanded":!1,className:`chip fold-toggle muted`,title:t,onClick:t=>{t.stopPropagation(),e.onUnfold()},children:[e.count,(0,B.jsx)(`svg`,{className:`project-chevron is-collapsed`,viewBox:`0 0 10 10`,"aria-hidden":`true`,children:(0,B.jsx)(`path`,{d:`M2.5 3.75 5 6.25l2.5-2.5`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.3`,strokeLinecap:`round`,strokeLinejoin:`round`})})]})}function Rj(e,t,n){if(!t)return e;let r={label:W(`tasks`,t.collapsed?`menu.expandChildren`:`menu.collapseChildren`),section:`open`,run:n},i=e.map(e=>e.section).lastIndexOf(`open`);return[...e.slice(0,i+1),r,...e.slice(i+1)]}function zj(e,t){let n=e.map(e=>e.section).lastIndexOf(`open`);return[...e.slice(0,n+1),...t,...e.slice(n+1)]}function Bj(e){return e===`localhost`||e.endsWith(`.localhost`)||e===`[::1]`||/^127(\.\d{1,3}){3}$/.test(e)}var Vj=/^(localhost|127(\.\d{1,3}){3}|\[::1\])(:\d+)?([/?#]|$)/i,Hj=/^[a-z][a-z0-9+.-]*:(?!\d+([/?#]|$))/i;function Uj(e){let t=e.trim();if(!t||/\s/.test(t)||Hj.test(t)&&!/^https?:\/\//i.test(t))return null;let n=/^https?:\/\//i.test(t)?t:Vj.test(t)?`http://${t}`:`https://${t.replace(/^\/\//,``)}`;try{let e=new URL(n);return e.hostname?e.href:null}catch{return null}}function Wj(e,t,n=Bj(t.hostname)){let r=new URL(e);return r.origin===t.origin?`self`:Bj(r.hostname)?n?`yes`:`remote`:r.protocol===`https:`?`yes`:`unreachable`}function Gj(e,t,n){let r=new URL(e).host;return t===`self`?{key:`self`,host:r}:t===`remote`?{key:`remote`,host:r}:t===`unreachable`?{key:`noFrame`,host:r}:n&&!n.reachable?{key:`unreachable`,host:r}:n&&!n.frameable?{key:`refuses`,host:r}:null}var Kj=6e4,qj=new Map;function Jj(e){let t=qj.get(e);return t&&Date.now()-t.at<Kj?t:null}function Yj(e,t,n){let[,r]=(0,g.useState)(0);(0,g.useEffect)(()=>{if(!n||Jj(t))return;let i=!0;return e.request(`browser.probe`,{url:t,origin:window.location.origin}).then(e=>qj.set(t,{probe:e,at:Date.now()}),()=>qj.set(t,{probe:null,at:Date.now()})).then(()=>i&&r(e=>e+1)),()=>{i=!1}},[e,t,n]);let i=n?Jj(t):null;return{pending:n&&!i,probe:i?.probe??null}}function Xj({d:e}){return(0,B.jsx)(`svg`,{viewBox:`0 0 16 16`,"aria-hidden":`true`,children:(0,B.jsx)(`path`,{d:e})})}var Zj=`M6.5 3.5h-3v9h9v-3M9.5 3.5h3v3M12.5 3.5l-5 5`;function Qj({model:e,tab:t,onNavigate:n,onStep:r}){z();let i=nu(t),[a,o]=(0,g.useState)(i),[s,c]=(0,g.useState)(!1),[l,u]=(0,g.useState)(0),d=v(e.client.conn).hello?.peer?.local,f=i?Wj(i,window.location,d):null;(0,g.useEffect)(()=>{o(i),c(!1)},[i]);let p=e=>{let t=Uj(e);c(t===null&&e.trim()!==``),t!==null&&(o(t),t===i?u(l+1):n(t))},m=i?new URL(i).hostname:``,h=f===`yes`&&i.startsWith(`https:`)&&!Bj(m),{pending:_,probe:y}=Yj(e.client,i,h),b=i&&f?Gj(i,f,y):null,x=f===`yes`&&!b&&!_,S=b?L(`browser.${b.key}`,{host:b.host}):f===null?L(s?`browser.invalid`:`browser.empty`):null;return(0,B.jsxs)(`div`,{className:`browser`,children:[(0,B.jsxs)(`form`,{className:`browser-bar`,onSubmit:e=>{e.preventDefault(),p(a)},children:[(0,B.jsx)(`button`,{type:`button`,className:`rail-bar-btn`,disabled:t.at<=0,title:L(`browser.back`),"aria-label":L(`browser.back`),onClick:()=>r(t.at-1),children:(0,B.jsx)(Xj,{d:`M10 3.5 5.5 8l4.5 4.5`})}),(0,B.jsx)(`button`,{type:`button`,className:`rail-bar-btn`,disabled:t.at>=t.urls.length-1,title:L(`browser.forward`),"aria-label":L(`browser.forward`),onClick:()=>r(t.at+1),children:(0,B.jsx)(Xj,{d:`M6 3.5 10.5 8 6 12.5`})}),(0,B.jsx)(`button`,{type:`button`,className:`rail-bar-btn`,disabled:!x,title:L(`browser.reload`),"aria-label":L(`browser.reload`),onClick:()=>u(l+1),children:(0,B.jsx)(Xj,{d:`M12.5 8a4.5 4.5 0 1 1-1.4-3.3M12.5 2.5v2.7H9.8`})}),(0,B.jsx)(`input`,{className:`browser-url mono`,value:a,placeholder:L(`browser.placeholder`),"aria-label":L(`browser.address`),"aria-invalid":s,spellCheck:!1,autoCapitalize:`off`,autoCorrect:`off`,inputMode:`url`,onChange:e=>o(e.target.value)}),i?(0,B.jsx)(`a`,{className:`rail-bar-btn`,href:i,target:`_blank`,rel:`noopener noreferrer`,title:L(`browser.openTab`),"aria-label":L(`browser.openTab`),children:(0,B.jsx)(Xj,{d:Zj})}):(0,B.jsx)(`button`,{type:`button`,className:`rail-bar-btn`,disabled:!0,"aria-label":L(`browser.openTab`),children:(0,B.jsx)(Xj,{d:Zj})})]}),x?(0,B.jsx)(`iframe`,{className:`browser-frame`,src:i,title:i,sandbox:`allow-scripts allow-same-origin allow-forms allow-popups`,referrerPolicy:`no-referrer`},`${i}#${l}`):S?(0,B.jsx)(`p`,{className:`side-empty`,children:S}):null]})}function $j(e,t){let n={children:new Map,file:!1};for(let t of e){let e=n;for(let n of t.split(`/`)){let t=e.children.get(n);t||(t={children:new Map,file:!1},e.children.set(n,t)),e=t}e.file=!0}let r=[],i=(e,n,a)=>{let o=[...e.children].sort(([e,t],[n,r])=>{let i=t.children.size>0&&!t.file;return i===(r.children.size>0&&!r.file)?e.localeCompare(n):i?-1:1});for(let[e,s]of o){let o=s.children.size>0&&!s.file,c=o?`${n}${e}/`:`${n}${e}`,l=o&&t.has(c);r.push({path:c,name:e,depth:a,dir:o,open:l}),l&&i(s,c,a+1)}};return i(n,``,0),r}function eM({model:e,task:t,narrow:n=!1}){let r=_i();z();let[i,a]=(0,g.useState)(`changes`),[o,s]=(0,g.useState)(`working`),[c,l]=(0,g.useState)(null),[u,d]=(0,g.useState)(null),[f,p]=(0,g.useState)(new Set),[m,h]=(0,g.useState)(0),[_,y]=(0,g.useState)(0),b=(0,g.useRef)(null),x=v(pe),S=JSON.stringify(t.changes??null);(0,g.useEffect)(()=>{let n=!0,r=e.client;return Promise.all([r.request(`files.list`,{taskId:t.id}),r.request(`diff.files`,{taskId:t.id})]).then(([e,r])=>{n&&(l({taskId:t.id,files:e.files,changes:r.files,base:r.base}),d(null))},e=>n&&d(e instanceof Error?e.message:String(e))),()=>{n=!1}},[e,t.id,S,_]);let C=c?.taskId===t.id?c:null,w=o===`branch`&&C?.base!=null,T=i===`all`?$j(C?.files??[],f).map(e=>({path:e.path,label:e.name,depth:e.depth,dir:e.dir,open:e.open})):(C?.changes??[]).filter(e=>e.scope===(w?`branch`:`working`)).map(e=>({path:e.path,label:e.path,depth:0,dir:!1,open:!1,status:e.status,added:e.added,deleted:e.deleted})),E=Math.min(m,Math.max(0,T.length-1)),D=T[E],O=(e,t)=>p(n=>{let r=new Set(n);return t??!r.has(e)?r.add(e):r.delete(e),r}),k=e=>Xu({taskId:t.id,path:e,scope:w?`branch`:`working`}),ee=n=>{if(n.status===`D`||t.machine){k(n.path);return}e.client.request(`file.openInEditor`,{taskId:t.id,path:n.path}).then(async({tabId:n})=>{await e.refreshTabsNow(),e.select(t.id,n)}).catch(e=>U(e instanceof Error?e.message:String(e),`error`))},A=n=>{if(!x?.startsWith(`${t.id}::`)){U(L(`files.mentionNoEngine`),`error`);return}e.client.request(`term.input`,{stream:x,data:`@${n} `}).catch(e=>U(String(e),`error`))},j=n=>t.machine?U(L(`files.remoteNoExternal`,{host:t.machine.label}),`error`):void e.client.request(`file.openExternal`,{taskId:t.id,path:n}).then(()=>U(L(`taskops.openedExternal`))).catch(e=>U(e instanceof Error?e.message:String(e),`error`));return(0,B.jsxs)(`div`,{className:`files ${n?`is-narrow`:``}`,tabIndex:0,ref:b,onKeyDown:e=>{let t=e.key;if(t===`j`||t===`ArrowDown`)h(Math.min(T.length-1,E+1));else if(t===`k`||t===`ArrowUp`)h(Math.max(0,E-1));else if((t===`l`||t===`ArrowRight`)&&D?.dir)O(D.path,!0);else if((t===`h`||t===`ArrowLeft`)&&D?.dir)O(D.path,!1);else if(t===`[`||t===`]`)a(i===`all`?`changes`:`all`);else if(t===`b`&&i===`changes`&&C?.base!=null)s(o===`working`?`branch`:`working`);else if(t===`r`)y(e=>e+1);else if(t===`D`&&e.shiftKey)k(`.`);else if(t===`d`&&D)k(D.path);else if(t===`Enter`&&D)D.dir?O(D.path):ee(D);else if(t===`a`&&D)A(D.path);else if(t===`o`&&D&&!D.dir)j(D.path);else return;e.preventDefault()},children:[(0,B.jsxs)(`div`,{className:`files-actions`,children:[!n&&(0,B.jsx)(`button`,{type:`button`,className:`link`,onClick:()=>me.set(!0),children:L(`files.zen`)}),(0,B.jsx)(`button`,{type:`button`,className:`link`,onClick:()=>void e.client.request(`tab.requestPR`,e.engineTarget(t.id)).then(()=>U(L(`files.prRequested`))).catch(e=>U(e instanceof Error?e.message:String(e),`error`)),children:L(`files.createPR`)})]}),(0,B.jsx)(`div`,{className:`files-tabs`,role:`tablist`,children:[`all`,`changes`].map(e=>(0,B.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":i===e,className:`files-tab ${i===e?`is-active`:``}`,onClick:()=>{a(e),h(0)},children:L(e===`all`?`files.all`:`files.changes`)},e))}),i===`changes`&&(0,B.jsxs)(`div`,{className:`files-scope`,children:[(0,B.jsx)(`span`,{children:w?L(`files.scopeBranch`,{base:C?.base??``}):L(`files.scopeWorking`)}),C?.base==null?C&&(0,B.jsx)(`span`,{children:L(`files.noBase`)}):(0,B.jsx)(`button`,{type:`button`,className:`link`,onClick:()=>s(o===`working`?`branch`:`working`),children:L(r?`files.toggleScopeTouch`:`files.toggleScope`)}),(0,B.jsx)(`span`,{children:L(`files.legend`)}),(0,B.jsx)(`button`,{type:`button`,className:`link`,onClick:()=>k(`.`),children:L(r?`files.diffAllTouch`:`files.diffAll`)})]}),(0,B.jsxs)(`div`,{className:`files-body`,children:[u&&(0,B.jsx)(`p`,{className:`error mono`,children:u}),!u&&C&&T.length===0&&(0,B.jsx)(`p`,{className:`placeholder-line`,children:L(i===`all`?`files.emptyAll`:`files.emptyChanges`)}),T.map((e,t)=>(0,B.jsxs)(`button`,{type:`button`,className:`row file-row ${t===E?`is-selected`:``}`,style:{paddingLeft:8+e.depth*14},title:e.path,onClick:()=>{h(t),b.current?.focus(),e.dir?O(e.path):n||r?k(e.path):ee(e)},children:[e.status?(0,B.jsx)(`span`,{className:`glyph status-${e.status===`?`?`untracked`:e.status}`,children:e.status}):(0,B.jsx)(`span`,{className:`glyph tone-muted`,children:e.dir?e.open?`▾`:`▸`:` `}),(0,B.jsx)(`span`,{className:`row-title`,children:e.label}),e.added?(0,B.jsxs)(`span`,{className:`chip tone-diff-added`,children:[`+`,e.added]}):null,e.deleted?(0,B.jsxs)(`span`,{className:`chip tone-diff-removed`,children:[`−`,e.deleted]}):null]},e.path))]})]})}function tM({children:e}){return(0,B.jsx)(`svg`,{className:`panel-icon`,viewBox:`0 0 16 16`,"aria-hidden":`true`,children:e})}var nM={files:(0,B.jsx)(`path`,{d:`M2 4.5a1 1 0 0 1 1-1h3l1.5 1.5H13a1 1 0 0 1 1 1V12a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1z`}),diff:(0,B.jsx)(`path`,{d:`M3.5 2.5h9a1 1 0 0 1 1 1v9a1 1 0 0 1-1 1h-9a1 1 0 0 1-1-1v-9a1 1 0 0 1 1-1zM8 5v4M6 7h4M6 11h4`}),browser:(0,B.jsx)(`path`,{d:`M8 2a6 6 0 1 0 0 12A6 6 0 0 0 8 2zM2 8h12M8 2c2.2 2 2.2 10 0 12M8 2c-2.2 2-2.2 10 0 12`})};function rM(e){if(e.kind===`files`)return L(`panel.files`);if(e.kind===`diff`)return e.path===`.`?L(`panel.diff`):ru(e.path);let t=nu(e);return t?iu(t):L(`panel.browser`)}function iM(e){return e.kind===`diff`?e.path===`.`?L(`preview.whole`):e.path:e.kind===`browser`&&nu(e)||rM(e)}var aM=7.3,oM=51,sM=160;function cM(e,t){let n=0;for(let t of e){let e=0;for(let n of t)e+=(n.codePointAt(0)??0)>11903?2:1;n+=Math.min(sM,oM+e*aM)+2}return n<=t}var lM=null;function uM(e,t,n,r){let i=(t,r)=>({label:r,section:`move`,run:()=>qu(e,e=>Tu(e,n.id,t))}),a=[];return!t.bottom&&t.top.tabs.length>1?a.push(i(`bottom`,L(`panel.splitDown`))):t.bottom&&a.push(r===`top`?i(`bottom`,L(`panel.moveBottom`)):i(`top`,L(`panel.moveTop`))),a.push({label:L(`panel.close`),section:`close`,run:()=>Zu(e,n.id)}),t.top.tabs.length+(t.bottom?.tabs.length??0)>1&&a.push({label:L(`panel.closeOthers`),section:`close`,run:()=>qu(e,e=>wu(e,n.id))}),a}function dM(e,t){return[{label:L(`panel.newFiles`),run:()=>qu(e,e=>pu(e,t))},{label:L(`panel.newDiff`),run:()=>qu(e,e=>hu(e,`.`,`working`))},{label:L(`panel.newBrowser`),run:()=>qu(e,e=>mu(e,t))}]}function fM({taskId:e,panel:t,group:n,tabs:r,active:i,narrow:a,children:o}){z();let[s,c]=(0,g.useState)(null),l=()=>lM?.taskId===e,u=t=>{let r=lM;lM=null,c(null),r?.taskId===e&&qu(e,e=>Tu(e,r.id,n,t))},d=t=>{let r=t.currentTarget.getBoundingClientRect();le.set({x:r.left,y:r.bottom+2,items:dM(e,n),target:t.currentTarget})},f=(e,t)=>{if(!l())return;e.preventDefault(),e.stopPropagation();let n=e.currentTarget.getBoundingClientRect();c({id:t,after:e.clientX>n.left+n.width/2})},p=(0,g.useRef)(null),[m,h]=(0,g.useState)(0);(0,g.useEffect)(()=>{let e=p.current;if(!e)return;let t=new ResizeObserver(([e])=>h(e?.contentRect.width??0));return t.observe(e),()=>t.disconnect()},[]);let _=m>0&&!cM(r.map(rM),m);return(0,g.useEffect)(()=>{p.current?.querySelector(`.is-active`)?.scrollIntoView({block:`nearest`,inline:`nearest`})},[i,r.length,_]),(0,B.jsxs)(`div`,{className:`side-head`,style:{gridRow:n===`top`?1:4},onDragOver:e=>{l()&&(e.preventDefault(),c(null))},onDrop:e=>{e.preventDefault(),u()},children:[(0,B.jsx)(`div`,{className:`ptabs ${_?`is-compact`:``}`,role:`tablist`,"aria-label":L(`panel.tabs`),ref:p,children:r.map((r,o)=>(0,B.jsxs)(`div`,{role:`presentation`,className:`ptab ${r.id===i?`is-active`:``}`,"data-drop":s?.id===r.id?s.after?`after`:`before`:void 0,draggable:!a,onDragStart:()=>{lM={taskId:e,id:r.id}},onDragEnd:()=>{lM=null,c(null)},onDragOver:e=>f(e,r.id),onDrop:e=>{e.preventDefault(),e.stopPropagation(),u(o+(s?.id===r.id&&s.after?1:0))},onMouseDown:e=>{e.button===1&&e.preventDefault()},onAuxClick:t=>{t.button===1&&(t.preventDefault(),Zu(e,r.id))},onContextMenu:i=>{a||Pj(i,uM(e,t,r,n))},children:[(0,B.jsxs)(`button`,{type:`button`,role:`tab`,"aria-selected":r.id===i,className:`ptab-main`,title:iM(r),onClick:()=>qu(e,e=>lu(e,r.id)),children:[(0,B.jsx)(tM,{children:nM[r.kind]}),(0,B.jsx)(`span`,{className:`ptab-label`,children:rM(r)})]}),(0,B.jsx)(`button`,{type:`button`,className:`ptab-close`,"aria-label":L(`panel.close`),tabIndex:-1,onClick:()=>Zu(e,r.id),children:`×`})]},r.id))}),!a&&(0,B.jsx)(`button`,{type:`button`,className:`rail-bar-btn panel-tool`,title:L(`panel.new`),"aria-label":L(`panel.new`),onClick:d,children:(0,B.jsx)(`svg`,{viewBox:`0 0 16 16`,"aria-hidden":`true`,children:(0,B.jsx)(`path`,{d:`M8 3.5v9M3.5 8h9`})})}),o]})}var pM=/^@@ -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@/;function mM(e,t=null){let n=[],r=0,i=0,a=t,o=!1;for(let t of e.replace(/\n$/,``).split(`
|
|
112
112
|
`)){if(t.startsWith(`diff --git `)){let e=/ b\/(.+)$/.exec(t);a=e?e[1]:a,o=!1,n.push({kind:`file`,text:a??t,oldNo:null,newNo:null,path:a});continue}let e=pM.exec(t);if(e){r=Number(e[1]),i=Number(e[2]),o=!0,n.push({kind:`hunk`,text:t,oldNo:null,newNo:null,path:a});continue}if(!o){n.push({kind:`meta`,text:t,oldNo:null,newNo:null,path:a});continue}t.startsWith(`+`)?n.push({kind:`add`,text:t.slice(1),oldNo:null,newNo:i++,path:a}):t.startsWith(`-`)?n.push({kind:`del`,text:t.slice(1),oldNo:r++,newNo:null,path:a}):t.startsWith(`\\`)?n.push({kind:`meta`,text:t,oldNo:null,newNo:null,path:a}):n.push({kind:`ctx`,text:t.slice(1),oldNo:r++,newNo:i++,path:a})}return n}function hM(e,t){return e.replace(/\n$/,``).split(`
|
|
113
113
|
`).map((e,n)=>({kind:`ctx`,text:e,oldNo:null,newNo:n+1,path:t}))}function gM(e){return e.kind===`del`?e.oldNo:e.kind===`add`||e.kind===`ctx`?e.newNo:null}function _M(e,t,n){let r=e[t],i=r?gM(r):null;if(!r?.path||i===null)return null;if(n===null||n===t)return{path:r.path,line:i};let a=e[Math.min(n,t)],o=e[Math.max(n,t)],s=a?gM(a):null,c=o?gM(o):null;return s===null||c===null||a?.path!==o?.path?{path:r.path,line:i}:s===c?{path:r.path,line:c}:{path:r.path,startLine:Math.min(s,c),line:Math.max(s,c)}}function vM(e,t){if(!e||typeof e!=`object`||!(`kind`in e))return{kind:`text`,text:L(`preview.unknown`)};let n=`text`in e&&typeof e.text==`string`?e.text:``;switch(e.kind){case`diff`:return{kind:`rows`,rows:mM(n,t===`.`?null:t),diff:!0};case`code`:return{kind:`rows`,rows:hM(n,t),diff:!1};case`binary`:return{kind:`text`,text:L(`preview.binary`)};case`empty`:return{kind:`text`,text:L(`preview.empty`)};case`error`:return{kind:`text`,text:`message`in e?String(e.message):L(`preview.unknown`),error:!0};default:return{kind:`text`,text:L(`preview.noHunks`,{kind:String(e.kind)})}}}function yM(e,t){let n=gM(t);return n!==null&&e.filePath===t.path&&n>=(e.startLine??e.line)&&n<=e.line}function bM({model:e,view:t,active:n,restored:r,onClose:i}){z();let[a,o]=(0,g.useState)(null),[s,c]=(0,g.useState)([]),[l,u]=(0,g.useState)(0),[d,f]=(0,g.useState)(null),[p,m]=(0,g.useState)(0),h=(0,g.useRef)(null),_=e.client;(0,g.useEffect)(()=>{let e=!0;return o(null),_.request(`diff.file`,{taskId:t.taskId,path:t.path,scope:t.scope}).then(n=>e&&o(vM(n,t.path)),t=>e&&o({kind:`text`,text:t instanceof Error?t.message:String(t),error:!0})),()=>{e=!1}},[_,t.taskId,t.path,t.scope,p]);let v=()=>void _.request(`review.list`,{taskId:t.taskId}).then(e=>c(e.notes));(0,g.useEffect)(v,[_,t.taskId,p]);let y=(0,g.useRef)(!1);(0,g.useEffect)(()=>{n&&(y.current||!r)&&h.current?.focus(),y.current=!0},[n,r]);let b=a?.kind===`rows`?a.rows:[],x=b.map((e,t)=>`row-${t}`);(0,g.useEffect)(()=>{h.current?.querySelector(`[data-row="${l}"]`)?.scrollIntoView({block:`nearest`})},[l]);let S=()=>{let e=_M(b,l,d);if(!e)return;let n=e.startLine?`${e.path}:${e.startLine}-${e.line}`:`${e.path}:${e.line}`;V.set((0,B.jsx)(ke,{title:L(`preview.noteTitle`,{location:n}),submitLabel:L(`preview.noteSubmit`),onSubmit:async n=>{await _.request(`review.add`,{taskId:t.taskId,filePath:e.path,line:e.line,...e.startLine?{startLine:e.startLine}:{},body:n}),f(null),v(),h.current?.focus()}}))},C=()=>{let e=b[l],n=e&&s.find(t=>yM(t,e));n&&_.request(`review.remove`,{taskId:t.taskId,id:n.id}).then(v)},w=()=>void _.request(`review.send`,e.engineTarget(t.taskId)).then(e=>{U(e.delivered?L(`preview.sent`,{count:e.sent}):L(`preview.notSent`,{reason:e.reason??``}),e.delivered?`info`:`error`),v()}).catch(e=>U(e instanceof Error?e.message:String(e),`error`)),T=e=>{let t=e.key;if(t===`j`||t===`ArrowDown`)u(e=>Math.min(b.length-1,e+1));else if(t===`k`||t===`ArrowUp`)u(e=>Math.max(0,e-1));else if(t===`v`)f(e=>e===null?l:null);else if(t===`c`&&!e.ctrlKey)S();else if(t===`x`)C();else if(t===`s`)w();else if(t===`r`)m(e=>e+1);else if(t===`q`||t===`Escape`)i();else if(e.ctrlKey&&!e.metaKey&&t.toLowerCase()===`c`&&!window.getSelection()?.toString())i();else return;e.preventDefault()},E=d===null?l:Math.min(d,l),D=d===null?l:Math.max(d,l);return(0,B.jsx)(`div`,{className:`preview`,tabIndex:0,ref:h,onKeyDown:T,children:(0,B.jsxs)(`div`,{className:`preview-body`,children:[!a&&(0,B.jsx)(`p`,{className:`placeholder-line`,children:L(`preview.loading`)}),a?.kind===`text`&&(0,B.jsx)(`p`,{className:`placeholder-line ${a.error?`error`:``}`,children:a.text}),b.map((e,t)=>{let n=s.some(t=>yM(t,e));return(0,B.jsxs)(`div`,{"data-row":t,className:`diff-row kind-${e.kind} ${t>=E&&t<=D?`is-cursor`:``} ${n?`is-noted`:``}`,onClick:()=>u(t),children:[(0,B.jsx)(`span`,{className:`gutter`,children:e.oldNo??``}),(0,B.jsx)(`span`,{className:`gutter`,children:e.newNo??``}),(0,B.jsx)(`span`,{className:`sign`,children:e.kind===`add`?`+`:e.kind===`del`?`−`:n?`●`:` `}),(0,B.jsx)(`span`,{className:`code`,children:e.text})]},x[t])})]})})}function xM(){z();let e=v(ur),t=L(e?`panel.restore`:`panel.expand`);return(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`button`,{type:`button`,className:`rail-bar-btn panel-tool`,title:t,"aria-label":t,"aria-pressed":e,onClick:()=>ur.set(!e),children:(0,B.jsx)(`svg`,{viewBox:`0 0 16 16`,"aria-hidden":`true`,children:(0,B.jsx)(`path`,{d:e?`M13.5 6.5h-4v-4M2.5 9.5h4v4M9.5 6.5l4-4M6.5 9.5l-4 4`:`M9.5 2.5h4v4M6.5 13.5h-4v-4M13.5 2.5l-4.5 4.5M2.5 13.5 7 9`})})}),(0,B.jsx)(`button`,{type:`button`,className:`rail-bar-btn panel-tool`,title:L(`panel.hide`),"aria-label":L(`panel.hide`),onClick:()=>lr.set(!1),children:(0,B.jsx)(`svg`,{viewBox:`0 0 16 16`,"aria-hidden":`true`,children:(0,B.jsx)(`path`,{d:`M4 4l8 8M12 4l-8 8`})})})]})}function SM({panel:e}){z();let t=(0,g.useRef)(null);return(0,B.jsx)(`div`,{className:`rail-grip panel-grip`,title:L(`panel.resize`),onPointerDown:n=>{t.current={x:n.clientX,width:e.current?.getBoundingClientRect().width??0},e.current?.classList.add(`is-resizing`),n.currentTarget.setPointerCapture(n.pointerId),Te(!0)},onPointerMove:e=>{let n=t.current;if(!n||e.clientX===n.x)return;let r=hd.get()?0:yd(md.get()??280);cr.set(dr(n.width-(e.clientX-n.x),r))},onLostPointerCapture:()=>{t.current=null,e.current?.classList.remove(`is-resizing`),Te(!1)},onDoubleClick:()=>cr.set(null)})}function CM({taskId:e,body:t}){z();let n=(0,g.useRef)(!1);return(0,B.jsx)(`div`,{className:`side-divider`,title:L(`panel.resizeSplit`),onPointerDown:e=>{n.current=!0,t.current?.classList.add(`is-resizing`),e.currentTarget.setPointerCapture(e.pointerId)},onPointerMove:r=>{let i=t.current?.getBoundingClientRect(),a=t.current?.querySelectorAll(`.side-head`);if(!n.current||!i||a?.length!==2)return;let o=a[0]?.getBoundingClientRect(),s=a[1]?.getBoundingClientRect();if(!o||!s)return;let c=r.currentTarget.getBoundingClientRect().height,l=i.bottom-o.bottom-s.height-c;l>0&&qu(e,e=>Eu(e,(r.clientY-o.bottom-c/2)/l))},onLostPointerCapture:()=>{n.current=!1,t.current?.classList.remove(`is-resizing`)},onDoubleClick:()=>qu(e,e=>Eu(e,.5))})}function wM({model:e,task:t,tab:n,narrow:r,active:i,restored:a}){return n.kind===`files`?(0,B.jsx)(eM,{model:e,task:t,narrow:r}):n.kind===`diff`?(0,B.jsx)(bM,{model:e,view:{taskId:t.id,path:n.path,scope:n.scope},active:i,restored:a,onClose:()=>Zu(t.id,n.id)},`${n.path}:${n.scope}`):(0,B.jsx)(Qj,{model:e,tab:n,onNavigate:e=>qu(t.id,t=>xu(t,n.id,e)),onStep:e=>qu(t.id,t=>Su(t,n.id,e))})}function TM({model:e,task:t,narrow:n}){z();let r=Ku(t.id),i=v(ar),a=v(ur),o=(0,g.useRef)(null),s=(0,g.useRef)(null),c=i===`terminal`?`files`:i,l=$l(r),u=n?tu(r,c):null;(0,g.useEffect)(()=>{n&&!u&&qu(t.id,e=>_u(e,c))},[n,u,c,t.id]);let d=n?u?[u.id]:[]:Ql(r).flatMap(([,e])=>e.active?[e.active]:[]),f=(0,g.useRef)([]);f.current=Du(f.current,d,l);let p=(0,g.useRef)(new Set(d)),m=!n&&r.bottom!==null,h=m?`auto minmax(0, ${r.ratio*100}fr) var(--divider) auto minmax(0, ${(1-r.ratio)*100}fr)`:`auto minmax(0, 1fr)`,_=l.filter(e=>e.kind===c),y=!n&&r.top.tabs.length===0;return(0,B.jsxs)(`aside`,{className:`side-panel ${n?`is-narrow`:``}`,ref:o,children:[!n&&!a&&(0,B.jsx)(SM,{panel:o}),(0,B.jsxs)(`div`,{className:`side-body`,ref:s,style:{gridTemplateRows:h},children:[n?(_.length>1||c===`diff`)&&(0,B.jsx)(fM,{taskId:t.id,panel:r,group:`top`,tabs:_,active:u?.id??null,narrow:!0}):Ql(r).map(([e,n])=>(0,B.jsx)(fM,{taskId:t.id,panel:r,group:e,tabs:n.tabs,active:n.active,narrow:!1,children:e===`top`&&(0,B.jsx)(xM,{})},e)),y&&(0,B.jsx)(`p`,{className:`side-empty`,children:L(`panel.empty`)}),m&&(0,B.jsx)(CM,{taskId:t.id,body:s}),l.filter(e=>f.current.includes(e.id)).map(i=>(0,B.jsx)(`div`,{className:`side-view`,hidden:!d.includes(i.id),style:{gridRow:eu(r,i.id)?.name===`bottom`&&!n?5:2},children:(0,B.jsx)(wM,{model:e,task:t,tab:i,narrow:n,active:d.includes(i.id),restored:p.current.has(i.id)})},i.id))]})]})}function EM({model:e,task:t,remoteHost:n,narrow:r=!1}){let i=v(me),a=v(lr);return!r&&(i||!a)?null:t?(0,B.jsx)(TM,{model:e,task:t,narrow:r},t.id):n?(0,B.jsx)(`aside`,{className:`side-panel`,children:(0,B.jsx)(Ra,{host:n})}):null}function DM(e){return e<32||e>=127&&e<=159||e>=768&&e<=879||e>=4448&&e<=4607||e>=6832&&e<=6911||e>=7616&&e<=7679||e>=8203&&e<=8207||e>=8234&&e<=8238||e>=8288&&e<=8292||e>=8400&&e<=8447||e>=12330&&e<=12335||e>=12441&&e<=12442||e>=65024&&e<=65039||e>=65056&&e<=65071||e===65279?0:e>=4352&&e<=4447||e===9001||e===9002||e>=11904&&e<=12350||e>=12353&&e<=13311||e>=13312&&e<=19903||e>=19968&&e<=40959||e>=40960&&e<=42191||e>=44032&&e<=55203||e>=63744&&e<=64255||e>=65040&&e<=65049||e>=65072&&e<=65135||e>=65280&&e<=65376||e>=65504&&e<=65510||e===126980||e===127183||e>=127488&&e<=127743||e>=127744&&e<=129791||e>=131072&&e<=262141?2:1}function OM(e){let t=0;for(let n of e)t+=DM(n.codePointAt(0));return t}function kM(e){return e>=4352?2:1}function AM(e,t,n){if(t<=0)return``;let r=0;for(let t of e)r+=n(t.codePointAt(0)??0);if(r<=t)return e;let i=0,a=``;for(let r of e){let e=n(r.codePointAt(0)??0);if(i+e>t-1)break;i+=e,a+=r}return`${a}…`}var jM=e=>e>=95?`crit`:e>=75?`warn`:`ok`,MM=e=>String(e).padStart(2,`0`);function NM(e,t){if(e==null||e<=t)return``;let n=new Date(e),r=`${MM(n.getHours())}:${MM(n.getMinutes())}`;return e-t<864e5?`→ ${r}`:`→ ${n.getMonth()+1}/${n.getDate()} ${r}`}function PM(e,t){return e.windows.map(e=>({label:e.label,percentText:`${e.percent}%`,resetText:NM(e.resetsAt,t),tone:jM(e.percent)}))}function FM(e,t){let n=e.windows.find(e=>e.kind===`session`)??e.windows[0];return n?{label:n.label,percentText:`${n.percent}%`,resetText:NM(n.resetsAt,t),tone:jM(n.percent)}:null}function IM(e,t){let n=[OM(t===0?e.label:`· ${e.label}`),OM(e.percentText)];return e.resetText&&n.push(OM(e.resetText)),n.reduce((e,t)=>e+t,0)+(n.length-1)}function LM(e){return OM(e.vendor)+e.chips.reduce((e,t,n)=>e+IM(t,n),0)+e.chips.length}function RM(e){let t=[...e.usage.entries()].map(([t,n])=>({vendor:e.vendorLabel(t).toUpperCase(),snapshot:n,chips:PM(n,e.nowMs)})).filter(e=>e.chips.length>0);if(t.length===0)return null;if(!e.forceCompact){let n=t.map(e=>({vendor:e.vendor,chips:e.chips}));if(n.reduce((e,t)=>e+LM(t),0)+(n.length-1)*2<=e.budget)return{form:`full`,vendors:n}}let n=[],r=e.budget;for(let i of t){let t=FM(i.snapshot,e.nowMs);if(!t)continue;let a=n.length>0?2:0,o=OM(i.vendor)+1+OM(t.percentText);if(o+a<=r){n.push({vendor:i.vendor,percentText:t.percentText,tone:t.tone}),r-=o+a;continue}let s=r-a-1-OM(t.percentText);s>=3&&n.push({vendor:AM(i.vendor,s,kM),percentText:t.percentText,tone:t.tone});break}return{form:`compact`,vendors:n}}function zM(e){if(!e)return null;let t=e.contextWindowTokens;if(t===void 0||t<=0)return null;let n=Math.min(100,Math.max(0,Math.round(e.contextTokens/t*100)));return{label:`ctx`,percentText:`${n}%${e.approximate?`~`:``}`,resetText:``,tone:jM(n)}}function BM(e){return!e||e.inputTokens===void 0&&e.outputTokens===void 0?null:{label:`Σ`,text:VM((e.inputTokens??0)+(e.outputTokens??0))}}function VM(e){return e<1e3?String(e):e<1e6?`${Math.floor(e/1e3)}k`:`${(Math.floor(e/1e5)/10).toFixed(1)}M`}var HM=1e4,UM=5;function WM({percentText:e,tone:t}){let n=Math.min(100,Math.max(0,Number.parseInt(e,10)||0));return(0,B.jsx)(`span`,{className:`usage-bar tone-${t}`,style:{"--fill":`${n}%`}})}var GM=.6,KM=3;function qM(){let e=(0,g.useRef)(null),[t,n]=(0,g.useState)(1/0);return(0,g.useLayoutEffect)(()=>{let t=e.current;if(!t)return;let r=()=>{let e=Number.parseFloat(getComputedStyle(t).fontSize)*GM;n(Math.floor(t.clientWidth/e))},i=new ResizeObserver(r);return i.observe(t),r(),()=>i.disconnect()},[]),[e,t]}function JM({client:e,taskId:t,tabId:n}){let r=v(e.conn),[i,a]=(0,g.useState)(null),[o,s]=qM();(0,g.useEffect)(()=>{if(r.state!==`open`)return;let i=!0,o=()=>e.request(`usage.get`,t&&n?{taskId:t,tabId:n}:{}).then(e=>{i&&a(e)}).catch(()=>{});o();let s=window.setInterval(o,HM);return()=>{i=!1,window.clearInterval(s)}},[e,r.state,t,n]);let c=zM(i?.context),l=BM(i?.context),u=new Map((i?.usage??[]).map(e=>[e.vendor,e.name])),d=(c?`${c.label} ${c.percentText}`.length+UM+KM:0)+(l?`${l.label} ${l.text}`.length+KM:0),f=(e,t,n=!1)=>RM({usage:new Map(e.map(e=>[e.vendor,{capturedAt:e.capturedAt,windows:e.windows}])),budget:t,nowMs:Date.now(),vendorLabel:e=>u.get(e)??e,forceCompact:n}),p=i?.usage??[],m=s-d-p.length,h=p.reduce((e,t)=>e+t.windows.length,0)*UM,_=p.length?f(p,m-h):null,y=_?.form===`compact`?f(p,m,!0):_;return(0,B.jsxs)(`span`,{className:`usage`,ref:o,children:[c&&(0,B.jsxs)(`span`,{className:`usage-chip`,children:[(0,B.jsx)(`span`,{children:c.label}),(0,B.jsx)(WM,{percentText:c.percentText,tone:c.tone}),(0,B.jsx)(`span`,{className:`tone-${c.tone}`,children:c.percentText})]}),l&&(0,B.jsxs)(`span`,{className:`usage-chip`,children:[l.label,` `,l.text]}),y?.form===`full`&&y.vendors.map(e=>(0,B.jsxs)(`span`,{className:`usage-chip`,children:[(0,B.jsx)(`span`,{children:e.vendor}),e.chips.map((e,t)=>(0,B.jsxs)(`span`,{children:[` `,t===0?e.label:`· ${e.label}`,(0,B.jsx)(WM,{percentText:e.percentText,tone:e.tone}),(0,B.jsx)(`span`,{className:`tone-${e.tone}`,children:e.percentText}),e.resetText?` ${e.resetText}`:``]},e.label))]},e.vendor)),y?.form===`compact`&&y.vendors.map(e=>(0,B.jsxs)(`span`,{className:`usage-chip`,children:[e.vendor,` `,(0,B.jsx)(`span`,{className:`tone-${e.tone}`,children:e.percentText})]},e.vendor))]})}function YM({model:e,narrow:t}){let n=e.client,r=v(n.conn),i=v(e.selection);return(0,B.jsxs)(`footer`,{className:`status`,children:[(0,B.jsx)(JM,{client:n,taskId:i.taskId,tabId:i.tabId}),r.state!==`open`&&(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`span`,{className:`dot state-${r.state}`}),(0,B.jsx)(`span`,{children:r.state===`retrying`?L(`status.retrying`,{count:r.failures}):L(`status.connecting`)})]}),r.state===`retrying`&&(0,B.jsx)(`button`,{type:`button`,className:`link`,onClick:()=>n.retryNow(),children:L(`status.retry`)}),(0,B.jsx)(Od,{model:e,narrow:t})]})}var XM=new Set,ZM=2e3;function QM(e){XM.add(e)}function $M(e,t=ZM){setTimeout(()=>XM.delete(e),t)}var eN=e=>XM.has(e),tN={up:`layout.termKeyUp`,down:`layout.termKeyDown`,left:`layout.termKeyLeft`,right:`layout.termKeyRight`,interrupt:`layout.termKeyInterrupt`};function nN({handle:e}){z();let[t,n]=(0,g.useState)(!1);(0,g.useEffect)(()=>{e.armCtrl(t?()=>n(!1):null)},[e,t]),(0,g.useEffect)(()=>()=>e.armCtrl(null),[e]);let{term:r}=e;return(0,B.jsxs)(`div`,{className:`term-keys mono`,role:`toolbar`,"aria-label":L(`layout.termKeys`),onPointerDown:e=>e.preventDefault(),children:[(0,B.jsx)(`button`,{type:`button`,className:t?`is-on`:``,"aria-pressed":t,onClick:()=>n(!t),children:`ctrl`}),_T.map(e=>(0,B.jsx)(`button`,{type:`button`,"aria-label":tN[e.id]?L(tN[e.id]):void 0,onClick:()=>{n(!1),r.input(e.bytes(r.modes.applicationCursorKeysMode),!0)},children:e.cap},e.id))]})}function rN(e){switch(e.kind){case`restored`:return L(`workspace.restored`);case`notLive`:return L(`workspace.tabNotLive`);case`exited`:return L(`workspace.exited`,{code:e.code??`?`});case`failed`:return L(`workspace.attachFailed`,{message:e.message});case`none`:return``}}function iN(e){z();let{notice:t,engineExit:n,model:r,taskId:i,revive:a}=e,o=t.kind===`none`?n:null;if(t.kind===`none`&&!o)return null;let s=t.kind===`notLive`||t.kind===`restored`||t.kind===`exited`,c=t.kind===`exited`||o!==null,l=a.error?L(`workspace.reopenFailed`,{message:a.error}):o?L(`workspace.engineExited`,{code:o.code??`?`}):rN(t);return(0,B.jsxs)(`div`,{className:`term-notice ${t.kind===`failed`||a.error?`is-error`:``}`,children:[(0,B.jsx)(`span`,{children:l}),e.onReopen&&(s||o)&&(0,B.jsx)(`button`,{type:`button`,className:`link tone-info`,disabled:a.busy,onClick:()=>e.onReopen?.(o!==null),children:a.busy?L(`workspace.reopening`):L(o?`workspace.retry`:`workspace.reopen`)}),t.kind===`failed`&&e.onRetryAttach&&(0,B.jsx)(`button`,{type:`button`,className:`link tone-info`,onClick:e.onRetryAttach,children:L(`workspace.retry`)}),c&&(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`button`,{type:`button`,className:`link tone-info`,onClick:()=>V.set((0,B.jsx)(Ac,{model:r,section:`engines`})),children:L(`workspace.engineSettings`)}),(0,B.jsx)(`button`,{type:`button`,className:`link tone-info`,onClick:()=>V.set((0,B.jsx)(Li,{model:r,taskId:i})),children:L(`menu.newChatPick`)})]})]})}var aN=8,oN=32,sN=new WeakMap,cN=null;function lN(e){let t=sN.get(e);return t||(t={entries:new Map,snapshots:new Map},sN.set(e,t)),t}function uN(){return cN||(cN=document.createElement(`div`),cN.style.display=`none`,document.body.append(cN)),cN}function dN(e,t,n){e.snapshots.delete(t),e.snapshots.set(t,n);for(let t of e.snapshots.keys()){if(e.snapshots.size<=oN)break;e.snapshots.delete(t)}}function fN(e,t,n){e.entries.delete(t.key),n?dN(e,t.key,t.handle.snapshot()):e.snapshots.delete(t.key),t.handle.dispose(),t.box.remove()}function pN(e){let t=[...e.entries.values()].filter(e=>e.slot.parkedAt!==null);t.sort((e,t)=>(e.slot.parkedAt??0)-(t.slot.parkedAt??0));for(let n of t.slice(0,Math.max(0,t.length-aN)))fN(e,n,!0)}function mN(e,t,n,r){return lN(e).entries.get($k(t,n,r))?.slot.parkedAt!=null}function hN(e,t){let n=lN(e.client),r=$k(e.taskId,e.tabId,e.leafId),i=n.entries.get(r);if(i&&i.slot.parkedAt!==null){let{slot:r,handle:a,box:o}=i;return r.parkedAt=null,r.binding=t,e.host.append(o),t.setNotice(r.notice),t.onScrolled(r.scrolled),a.term.refresh(0,a.term.rows-1),e.focusOnMount&&a.term.focus(),{handle:a,release:()=>gN(n,i)}}let a=document.createElement(`div`);a.className=`term-box`,e.host.append(a);let o=!i,s={binding:t,notice:{kind:`none`},scrolled:0,parkedAt:null},c=null,l=o?n.snapshots.get(r):void 0;l&&n.snapshots.delete(r);let u=nA({...e,el:a,snapshot:l,setNotice:e=>{s.notice=e,s.binding?.setNotice(e)},onScrolled:e=>{s.scrolled=e,s.binding?.onScrolled(e)},onFocusChange:e=>s.binding?.onFocusChange(e),onExit:e=>{s.binding?s.binding.onExit(e):c&&n.entries.get(r)===c&&fN(n,c,!1)},copyText:e=>s.binding?.copyText(e)??Promise.resolve(!1),pasteImage:()=>s.binding?.pasteImage()??Promise.resolve()});if(!o)return{handle:u,release:()=>{u.dispose(),a.remove()}};let d={key:r,handle:u,box:a,slot:s};return c=d,n.entries.set(r,d),{handle:u,release:()=>gN(n,d)}}function gN(e,t){let{slot:n}=t;e.entries.get(t.key)===t&&n.parkedAt===null&&(n.binding?.onFocusChange(!1),n.binding=null,t.handle.term.blur(),n.parkedAt=performance.now(),uN().append(t.box),pN(e))}var _N={matchBackground:`#a9a39a`,matchOverviewRuler:`#a9a39a`,activeMatchBackground:`#cc785c`,activeMatchColorOverviewRuler:`#cc785c`};function vN({handle:e,onClose:t}){let{term:n,search:r}=e,i=(0,g.useRef)(n.buffer.active.viewportY),a=n.buffer.active.type===`alternate`,[o,s]=(0,g.useState)(``),[c,l]=(0,g.useState)({index:-1,total:0});(0,g.useEffect)(()=>{let e=r.onDidChangeResults(({resultIndex:e,resultCount:t})=>l({index:e,total:t}));return()=>{e.dispose(),r.clearDecorations()}},[r]),(0,g.useEffect)(()=>{if(!a){if(n.clearSelection(),o.length===0){r.clearDecorations(),l({index:-1,total:0});return}r.findPrevious(o,{decorations:_N})}},[o,a,r,n]);let u=()=>{r.clearDecorations(),n.clearSelection(),n.scrollToLine(i.current),t()},d=e=>{if(e.key===`Escape`)u();else if(a)return;else if(e.key===`Enter`||e.key===`ArrowUp`)r.findPrevious(o,{decorations:_N});else if(e.key===`ArrowDown`)r.findNext(o,{decorations:_N});else return;e.preventDefault(),e.stopPropagation()},f=o.length===0?qr(`search.placeholder`):c.total===0?qr(`search.noMatches`):qr(`search.position`,{index:c.index<0?`?`:c.index+1,total:c.total});return(0,B.jsxs)(`div`,{className:`term-search mono`,children:[a?(0,B.jsx)(`span`,{className:`tone-warning`,children:qr(`search.unavailable`)}):(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`span`,{className:`tone-info`,children:`/`}),(0,B.jsx)(`input`,{className:`term-search-input`,autoFocus:!0,spellCheck:!1,value:o,onChange:e=>s(e.target.value),onKeyDown:d}),(0,B.jsx)(`span`,{className:`muted`,children:f})]}),a&&(0,B.jsx)(`input`,{className:`term-search-input is-hidden`,autoFocus:!0,readOnly:!0,onKeyDown:d,"aria-label":qr(`search.unavailable`)})]})}async function yN(e,t,n){let r=Yf(n);r.length<n.length&&U(L(`layout.dropUnsupported`),`error`);for(let n of r)try{t.term.paste(`${await Zf(e,n)} `)}catch(e){U(e instanceof Error?e.message:String(e),`error`)}t.term.focus()}async function bN(){if(!navigator.clipboard?.read)throw Error(L(`layout.pasteNeedsHttps`));let e=[];for(let t of await navigator.clipboard.read())for(let n of t.types)(n.startsWith(`image/`)||n===`application/pdf`)&&e.push(new File([await t.getType(n)],`clipboard`,{type:n}));return Yf(e)}async function xN(e,t){let n;try{n=await bN()}catch(e){U(L(`layout.pasteNoAccess`,{error:e instanceof Error?e.message:String(e)}),`error`);return}n.length===0?U(L(`layout.pasteNoImage`),`error`):await yN(e,t,n)}async function SN(e){try{return await navigator.clipboard.writeText(e),!0}catch{return U(L(`menu.copyFailed`),`error`),!1}}function CN(e){let{client:t,taskId:n,tabId:r,leafId:i}=e;z();let a=(0,g.useRef)(null),[o,s]=(0,g.useState)({kind:`none`}),[c,l]=(0,g.useState)(null),[u,d]=(0,g.useState)(0),[f,p]=(0,g.useState)(!1),[m,h]=(0,g.useState)({busy:!1,error:null}),_=(0,g.useRef)(e);_.current=e,(0,g.useEffect)(()=>{let e=a.current;if(!e)return;let o=null,c=!1,u=[document.fonts.load(`13px "JetBrains Mono"`),document.fonts.load(`bold 13px "JetBrains Mono"`)];document.fonts.load(`13px "${bT}"`,String.fromCodePoint(57504)).catch(()=>{});let f=()=>{c||(o=hN({client:t,host:e,taskId:n,tabId:r,leafId:i,focusOnMount:_.current.focused!==!1},{setNotice:s,onScrolled:d,onFocusChange:e=>{if(!o)return;let{stream:t}=o.handle;e?(_.current.onActivate?.(),Im.set(Rm(t)??null)):Im.get()?.stream===t&&Im.set(null)},onExit:()=>{eN($k(n,r,i))||_.current.onExit?.()},copyText:SN,pasteImage:async()=>{o&&await xN(t,o.handle)}}),l(o.handle))};return mN(t,n,r,i)?f():Promise.allSettled(u).then(f),()=>{c=!0,l(null),p(!1),o?.release()}},[t,n,r,i]),(0,g.useEffect)(()=>{if(!c)return;let{term:e,stream:a}=c,o={stream:a,focus:()=>e.focus(),scrollPages:e=>c.scrollLines(e*10),hasSelection:()=>e.hasSelection(),copySelection:()=>{let t=e.getSelection();return t.trim().length!==0&&(SN(t),e.clearSelection(),!0)},openSearch:()=>p(!0),reset:()=>{let o={cols:e.cols,rows:e.rows};V.set((0,B.jsx)(Ae,{title:qr(`reset.title`),body:qr(`reset.body`),confirmLabel:L(`workspace.reset`),onConfirm:async()=>{QM(a);try{await t.request(`tab.split`,{taskId:n,tabId:r,action:`reset`,leafId:i??`leaf-1`,...o}),await c.reattach(),e.focus()}finally{$M(a)}}}))},size:()=>({cols:e.cols,rows:e.rows})},s=Lm(o);return document.activeElement===e.textarea&&Im.set(o),()=>{s()}},[c,t,n,r,i]),(0,g.useEffect)(()=>{e.focused&&c&&document.activeElement!==c.term.textarea&&c.term.focus()},[e.focused,c]);let v=!i||i===`leaf-1`,[y,b]=(0,g.useState)(null),x=e.engineExit?.since===y,S=(0,g.useRef)(!1),C=async(i,a)=>{if(!S.current){S.current=!0,h({busy:!0,error:null});try{await t.request(`term.revive`,{taskId:n,tabId:r,...a?{restartExited:a}:{}}),await i.reattach(),i.term.focus(),b(e.engineExit?.since??null),h({busy:!1,error:null})}catch(e){h({busy:!1,error:e instanceof Error?e.message:String(e)})}finally{S.current=!1}}};return(0,B.jsxs)(`div`,{className:`term-pane`,"data-stream":$k(n,r,i),onDragOver:e=>e.dataTransfer.types.includes(`Files`)&&e.preventDefault(),onDrop:e=>{!e.dataTransfer.files.length||!c||(e.preventDefault(),yN(t,c,Array.from(e.dataTransfer.files)))},onPasteCapture:e=>{if(!c)return;let n=Yf(e.clipboardData.files);(n.length!==0||e.clipboardData.getData(`text/plain`)===``)&&(e.preventDefault(),e.stopPropagation(),n.length>0?yN(t,c,n):xN(t,c))},children:[(0,B.jsx)(`div`,{className:`term-host`,ref:a}),(0,B.jsx)(iN,{notice:o,engineExit:x?null:e.engineExit??null,model:e.model,taskId:n,revive:m,onReopen:v&&c?e=>void C(c,e):void 0,onRetryAttach:c?()=>void c.reattach():void 0}),u>0&&!f&&c&&(0,B.jsxs)(`div`,{className:`term-scrolled mono`,children:[(0,B.jsx)(`span`,{className:`tone-warning`,children:qr(`scrolledBack`,{lines:u})}),(0,B.jsx)(`button`,{type:`button`,className:`link tone-info`,onClick:()=>c.scrollToTop(),children:qr(`scrollFirst`)}),(0,B.jsx)(`button`,{type:`button`,className:`link tone-info`,onClick:()=>c.scrollToBottom(),children:qr(`scrollLatest`)})]}),f&&c&&(0,B.jsx)(vN,{handle:c,onClose:()=>{p(!1),c.term.focus()}}),c&&(0,B.jsx)(nN,{handle:c})]})}var wN=e=>sA(e)!==null,TN=e=>Ui(sA(e)?.tab.split);function EN(e){let t=sA(e),n=t?.tab.split;return t&&n?{...t,split:n,leaf:iA(t.taskId,t.tab,n)}:null}_r(()=>[{id:`workspace.split.right`,chords:[`ctrl+\\`],prefix:!1,surface:`workspace`,live:wN,run:e=>{let t=sA(e);t&&lA(e,t.taskId,t.tab,`right`)}},{id:`workspace.split.down`,chords:[`ctrl+=`],prefix:!1,surface:`workspace`,live:wN,run:e=>{let t=sA(e);t&&lA(e,t.taskId,t.tab,`down`)}},{id:`workspace.split.focus-next`,chords:[`f3`],prefix:!1,surface:`workspace`,live:TN,run:e=>{let t=EN(e);t&&oA(t.taskId,t.tab,t.split,Gi(t.split,t.leaf))}},{id:`workspace.split.close`,chords:[`w`],prefix:!0,surface:`workspace`,live:TN,run:e=>{let t=EN(e);t&&uA(e,t.taskId,t.tab,t.leaf)}},{id:`workspace.split.rename`,chords:[`f2`],prefix:!1,surface:`workspace`,live:TN,run:e=>{let t=EN(e);t&&dA(e,t.taskId,t.tab,t.leaf)}}]);var DN=[{id:`leaf-1`,x:0,y:0,w:1,h:1,left:!1,top:!1}];function ON({model:e,taskId:t,tab:n}){let r=n.split;v(rA);let i=r?iA(t,n,r):`leaf-1`,a=r?Ki(r,Nn(n)):new Map,o=Ui(r),{prefs:s}=Bs(),c=v(e.tasks)?.tasks.find(e=>e.id===t)?.tabStatus?.[n.id]??n.status,l=n.kind===`engine`&&c?.reason===`dead`?c.since:null;(0,g.useEffect)(()=>{l!==null&&e.refreshTabsNow()},[l,e]);let u=l!==null&&n.alive!==!1?{code:n.exit?.code??null,since:l}:null;return(0,B.jsx)(`div`,{className:`split ${o?`is-${s.splitStyle}`:``}`,children:(r?Wi(r.root):DN).map(s=>(0,B.jsxs)(`div`,{className:`split-leaf ${s.left?`has-left`:``} ${s.top?`has-top`:``} ${s.id===i?`is-active`:``}`,style:{left:`calc(${s.x*100}% + var(--ml, 0px))`,top:`calc(${s.y*100}% + var(--mt, 0px))`,width:`calc(${s.w*100}% - var(--ml, 0px))`,height:`calc(${s.h*100}% - var(--mt, 0px))`},children:[(0,B.jsx)(CN,{client:e.client,model:e,engineExit:s.id===`leaf-1`?u:null,taskId:t,tabId:n.id,leafId:s.id,focused:s.id===i,onActivate:()=>r&&aA(t,n.id,r,s.id),onExit:()=>{o?cA(e,{taskId:t,tabId:n.id,action:`close`,leafId:s.id}):n.kind!==`engine`&&e.client.request(`tab.close`,{taskId:t,tabId:n.id}).then(()=>e.refreshTabsNow()).catch(()=>{})}}),o&&(0,B.jsx)(`span`,{className:`split-name`,onContextMenu:r=>Pj(r,mA(e,t,n,s.id)),children:a.get(s.id)})]},s.id))})}function kN(e,t){return e===`never`?!1:e!==`multipleOnly`||t>=2}function AN({taskId:e}){z();let t=Ku(e),n=v(lr),r=v(me),i=n&&!r?vu(t):null;return(0,B.jsx)(`div`,{className:`panel-launch`,children:ir.map(t=>(0,B.jsx)(`button`,{type:`button`,className:`rail-bar-btn ${i===t?`is-on`:``}`,title:L(`panel.${t}`),"aria-label":L(`panel.${t}`),"aria-pressed":i===t,onClick:()=>Yu(e,t),children:(0,B.jsx)(tM,{children:nM[t]})},t))})}function jN({model:e,task:t,tabs:n,narrow:r}){let i=v(e.selection),{prefs:a}=Bs();return(0,B.jsxs)(`div`,{className:`tab-strip ${kN(a.tabStrip,n.length)?``:`is-tabs-hidden`}`,role:`tablist`,children:[n.map((n,r)=>(0,B.jsxs)(`button`,{type:`button`,role:`tab`,"aria-selected":n.id===i.tabId,className:`tab ${n.id===i.tabId?`is-active`:``}`,onClick:()=>e.select(t.id,n.id),onContextMenu:r=>Pj(r,kA(e,t,n)),children:[(0,B.jsx)(`span`,{className:`tab-index`,children:r+1}),Nn(n)]},n.id)),!r&&(0,B.jsx)(AN,{taskId:t.id})]})}function MN(e,t){return e.replace(/\{(\w+)\}/g,(e,n)=>String(t[n]??e))}function NN({model:e}){let t=z()===`zh`?rt:nt,n=e.client,[r,i]=(0,g.useState)(null),[a,o]=(0,g.useState)([]),[s,c]=(0,g.useState)(0),[l,u]=(0,g.useState)(0),d=(0,g.useRef)(null);(0,g.useEffect)(()=>{let e=!0,t=!1,r=r=>n.request(`worktrees.list`,{network:r}).then(n=>{if(!(!e||!r&&t)&&(r&&(t=!0),i(n.projects),r)){let e=new Set(n.projects.flatMap(e=>e.worktrees.map(e=>e.path)));o(t=>t.filter(t=>e.has(t)))}}).catch(()=>{});return r(!1),r(!0),()=>{e=!1}},[n,l]),(0,g.useEffect)(()=>d.current?.focus(),[]);let f=(r??[]).map(e=>({...e,worktrees:e.worktrees.filter(e=>!a.includes(e.path))})),p=f.flatMap(e=>e.worktrees),m=Math.min(s,Math.max(0,p.length-1));(0,g.useEffect)(()=>{d.current?.querySelector(`[data-row="${m}"]`)?.scrollIntoView({block:`nearest`})},[m]);let h=(0,g.useCallback)(()=>u(e=>e+1),[]),_=async(e,r)=>{o(t=>[...t,e.path]);try{let i=await n.request(`worktrees.remove`,{path:e.path,force:r});i.residue&&U(MN(t.delete.residue,i.residue)),h()}catch(n){o(t=>t.filter(t=>t!==e.path));let i=n&&typeof n==`object`&&`code`in n?n.code:null;if(!r&&i===`DIRTY_WORKTREE`){V.set((0,B.jsx)(Ae,{title:t.delete.forceTitle,body:`${MN(t.delete.forceBody,{branch:e.branch||e.path})}\n\n${MN(t.delete.forceReason,{reason:Ee(n)})}`,confirmLabel:t.delete.button,onConfirm:()=>_(e,!0)}));return}U(MN(t.delete.failed,{error:Ee(n)}),`error`)}},v=e=>V.set((0,B.jsx)(Ae,{title:t.delete.confirmTitle,body:MN(t.delete.confirmBody,{branch:e.branch||e.path}),confirmLabel:t.delete.button,onConfirm:async()=>{_(e,!1)}})),y=n=>{if(!n.taskId){U(t.land.noTask,`error`);return}Ic(e,{id:n.taskId,title:n.branch,branch:n.branch},h)},b=e=>{if(e.ctrlKey&&!e.metaKey&&!e.altKey&&e.key.toLowerCase()===`c`&&!window.getSelection()?.toString())return e.preventDefault(),H.set(null);if(e.metaKey||e.ctrlKey||e.altKey)return;let t=p[m];if(e.key===`j`||e.key===`ArrowDown`)c(Math.min(p.length-1,m+1));else if(e.key===`k`||e.key===`ArrowUp`)c(Math.max(0,m-1));else if(e.key===`d`&&t)v(t);else if(e.key===`l`&&t)y(t);else if(e.key===`q`||e.key===`Escape`)H.set(null);else return;e.preventDefault()},x=0;return(0,B.jsxs)(`div`,{className:`page`,tabIndex:0,ref:d,onKeyDown:b,children:[(0,B.jsx)(`h1`,{className:`page-title`,children:t.title}),r===null?(0,B.jsx)(`p`,{className:`muted`,children:t.loading}):f.length===0?(0,B.jsx)(`p`,{className:`muted`,children:t.noProjects}):f.map(e=>{let n=x;return x+=e.worktrees.length,(0,B.jsxs)(`section`,{className:`page-group`,children:[(0,B.jsxs)(`h2`,{className:`project-head`,children:[(0,B.jsx)(`span`,{children:e.repo}),(0,B.jsx)(`span`,{className:`rule`})]}),e.worktrees.length===0&&(0,B.jsx)(`p`,{className:`muted mono`,children:t.noWorktrees}),e.worktrees.map((e,r)=>{let i=n+r;return(0,B.jsxs)(`div`,{"data-row":i,className:`wt-row ${i===m?`is-cursor`:``}`,onClick:()=>c(i),children:[(0,B.jsxs)(`div`,{className:`wt-line`,children:[(0,B.jsx)(`span`,{className:`wt-branch`,children:e.branch||t.row.detached}),e.roveManaged&&(0,B.jsx)(`span`,{className:`chip muted`,children:t.badge.roveManaged}),e.dirty===!0&&(0,B.jsx)(`span`,{className:`chip tone-warning`,children:t.badge.dirty}),e.dirty===null&&(0,B.jsx)(`span`,{className:`chip muted`,children:t.badge.dirtyUnknown}),(0,B.jsx)(`span`,{className:`chip ${e.branchOnRemote===!0?`tone-success`:e.branchOnRemote===!1?`tone-warning`:`muted`}`,children:e.branchOnRemote===!0?t.badge.remoteOn:e.branchOnRemote===!1?t.badge.remoteOff:t.badge.remoteUnknown}),e.verdictReason!==`dirty`&&e.verdictReason!==`fresh`&&(0,B.jsx)(`span`,{className:`chip ${e.verdict===`merged`?`tone-success`:e.verdict===`stale`?`tone-warning`:`tone-accent`}`,children:t.verdict[e.verdictReason]??e.verdictReason})]}),(0,B.jsxs)(`div`,{className:`wt-line muted mono`,children:[(0,B.jsx)(`span`,{className:`wt-path`,children:e.path}),e.createdAtMs>0&&(0,B.jsx)(`span`,{children:MN(t.row.created,{age:oi(Date.now()-e.createdAtMs)})})]}),i===m&&(0,B.jsxs)(`div`,{className:`wt-line wt-actions`,children:[(0,B.jsx)(`button`,{type:`button`,className:`link`,onClick:()=>v(e),children:t.delete.button}),e.taskId&&(0,B.jsx)(`button`,{type:`button`,className:`link`,onClick:()=>y(e),children:t.land.button})]})]},e.path)})]},e.repo)}),(0,B.jsxs)(`p`,{className:`page-hints mono muted keys-only`,children:[`j/k · d `,t.delete.button,` · l `,t.land.button,` · q/esc`]})]})}function PN({model:e,narrow:t}){let n=v(e.selection),r=v(e.tabs),i=v(e.tasks),a=v(e.remote),o=a.find(e=>e.id===n.taskId&&!e.machine?.stale),s=nn(i,n.taskId)??o??null,c=o?void 0:a.find(e=>e.id===n.taskId),l=s?r[s.id]??[]:[],u=s?s.id in r:!1,d=v(H),f=jl(s?.id),p=s?.rowStatus?.kind===`running`,m=v(he),h=v(ar)!==`terminal`&&t&&!!s;return(0,g.useEffect)(()=>{let t=e.selection.get();return e.selection.subscribe(()=>{he.set(null);let n=e.selection.get();(n.taskId!==t.taskId||n.tabId!==t.tabId)&&ar.set(`terminal`),t=n})},[e]),(0,g.useEffect)(()=>ql(e),[e]),d===`update`?(0,B.jsxs)(`main`,{className:`workspace`,children:[t&&(0,B.jsx)(Td,{}),(0,B.jsx)(Ej,{client:e.client})]}):d===`worktrees`?(0,B.jsxs)(`main`,{className:`workspace`,children:[t&&(0,B.jsx)(Td,{}),(0,B.jsx)(NN,{model:e})]}):d?(0,B.jsxs)(`main`,{className:`workspace`,children:[t&&(0,B.jsx)(Td,{}),(0,B.jsx)(vm,{model:e,page:d})]}):m?(0,B.jsxs)(`main`,{className:`workspace`,children:[t&&(0,B.jsx)(Td,{}),(0,B.jsx)(`div`,{className:`pane`,children:(0,B.jsx)(qo,{model:e,seed:m},`${m.machine??``}\0${m.repo??``}`)})]}):(0,B.jsxs)(`main`,{className:`workspace`,children:[t&&(0,B.jsx)(Td,{taskId:s?.id}),s&&(0,B.jsx)(jN,{model:e,task:s,tabs:l,narrow:t}),(0,B.jsxs)(`div`,{className:`pane ${p?`is-working`:``}`,style:f?{"--task-ink":f}:void 0,children:[!t&&!s&&!c&&i&&i.tasks.length+a.length===0&&(0,B.jsx)(Nj,{model:e}),!s&&!c&&i&&i.tasks.length+a.length>0&&(0,B.jsx)(`p`,{className:`placeholder`,children:L(`workspace.pickTask`)}),c?.machine&&(0,B.jsx)(`div`,{className:`placeholder`,children:(0,B.jsx)(Ra,{host:c.machine.label})}),s&&u&&l.length===0&&!h&&(0,B.jsxs)(`div`,{className:`placeholder`,children:[(0,B.jsx)(`p`,{children:L(`workspace.noTabs`)}),(0,B.jsx)(`button`,{type:`button`,className:`button`,onClick:()=>void Ni(e,s.id),children:L(`menu.newChat`)}),` `,(0,B.jsx)(`button`,{type:`button`,className:`button`,onClick:()=>V.set((0,B.jsx)(Li,{model:e,taskId:s.id})),children:L(`menu.newChatPick`)})]}),s&&h&&(0,B.jsx)(EM,{model:e,task:s,narrow:!0}),s&&n.tabId&&l.some(e=>e.id===n.tabId)&&(0,B.jsx)(`div`,{className:`term-slot ${h?`is-hidden`:``}`,children:(0,B.jsx)(ON,{model:e,taskId:s.id,tab:l.find(e=>e.id===n.tabId)??l[0]},`${s.id}::${n.tabId}`)})]})]})}function FN({model:e}){z();let t=v(e.client.conn);return t.hello===null&&t.failures>=2?(0,B.jsx)(IN,{}):(0,B.jsx)(LN,{model:e})}function IN(){let[e,t]=(0,g.useState)(null);return(0,g.useEffect)(()=>{Jn().then(t)},[]),e===null?null:e?(0,B.jsx)(Qn,{}):(0,B.jsx)(se,{failing:!0})}function LN({model:e}){ol(e);let t=v(e.client.conn).hello;(0,g.useEffect)(()=>{t&&(wj(e.client),Aj(e.client,t.roveVersion))},[t,e.client]),ca(e),aa(e),vt(e.client),Nl(e),jt(e.client),(0,g.useEffect)(()=>(e.onSelect=zn,he.subscribe(()=>{he.get()!==null&&zn()})),[e]);let n=v(me),r=v(e.selection),i=v(e.tasks),a=v(e.remote),o=Gn(),s=v(hd),c=v(gd),l=v(md),u=v(Rn),d=v(cr),f=v(lr),p=v(ur),m=v(H),h=v(Se)===`drag`,_=v(he)!==null,y=a.find(e=>e.id===r.taskId&&!e.machine?.stale),b=nn(i,r.taskId)??y??null,x=y?void 0:a.find(e=>e.id===r.taskId),S=o?Kn(u,!!b||!!x,m!==null||_):null;(0,g.useEffect)(()=>e.setTaskShown(S===null||S===`content`&&m===null&&!_),[e,S,m,_]);let C=yd(l??280),w={"--rail-w":`${s?0:C}px`,"--rail-open-w":`${C}px`,"--panel-w":d===null?void 0:`${dr(d,s?0:C)}px`};return(0,B.jsxs)(`div`,{className:`app-shell`,children:[(0,B.jsx)(Nt,{onRefresh:()=>Mt(e.client)}),(0,B.jsxs)(`div`,{className:`app ${n||!f||!b&&!x||o?`is-zen`:``} ${p&&!n&&!o?`is-panel-expanded`:``} ${S?`is-narrow narrow-${S}`:``} ${s&&!o?`is-rail-folded`:``} ${s&&c&&!o?`is-rail-peek`:``} ${h?`is-dragging`:``}`,style:o?void 0:w,children:[!o&&(0,B.jsx)(Cd,{model:e}),s&&!o&&(0,B.jsx)(`div`,{className:`rail-peek-edge`,onMouseEnter:()=>vd(!0),onMouseLeave:()=>vd(!1)}),(0,B.jsx)(Fj,{model:e,narrow:o}),(0,B.jsx)(PN,{model:e,narrow:o}),!o&&(0,B.jsx)(EM,{model:e,task:b,remoteHost:x?.machine?.label}),(0,B.jsx)(YM,{model:e,narrow:o}),(0,B.jsx)(rr,{}),(0,B.jsx)(dl,{model:e}),(0,B.jsx)(Fn,{model:e})]})]})}var RN=`a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])`;function zN(e){return[...e.querySelectorAll(RN)].filter(e=>e.tabIndex>=0&&e.offsetParent!==null)}function BN(){window.addEventListener(`keydown`,e=>{if(e.key!==`Tab`||e.defaultPrevented||e.ctrlKey||e.metaKey||e.altKey)return;let t=[...document.querySelectorAll(`.overlay:not(.is-leaving)`)].at(-1);if(!t)return;let n=zN(t);if(n.length===0)return;let r=document.activeElement,i=r instanceof HTMLElement&&t.contains(r),a=e.shiftKey?n.filter(e=>i&&!!(r.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_PRECEDING)).at(-1)??n.at(-1):n.find(e=>i&&!!(r.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_FOLLOWING))??n[0];e.preventDefault(),a?.focus()})}function VN(e){if(!ye())for(let t of document.querySelectorAll(`${e}:not(.is-leaving)`)){let e=t.cloneNode(!0);e.classList.add(`is-leaving`),e.inert=!0,e.setAttribute(`aria-hidden`,`true`),document.body.append(e);let n=t.querySelectorAll(`*`),r=e.querySelectorAll(`*`);n.forEach((e,t)=>{let n=r[t];e.scrollTop&&(n.scrollTop=e.scrollTop),(e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement)&&(n.value=e.value)}),window.setTimeout(()=>e.remove(),200)}}function HN(e){for(let t of document.querySelectorAll(`${e}.is-leaving`))t.remove()}function UN(){for(let e of document.querySelectorAll(`.overlay:not(.is-leaving)`))for(let t of e.getAnimations())t instanceof CSSAnimation&&t.animationName===`fade-in`&&t.finish()}function WN(){let e=V.get(),t=-1/0;V.subscribe(()=>{let n=V.get();if(n===null&&e!==null)t=performance.now(),VN(`.overlay`);else if(n!==null){let n=e!==null||performance.now()-t<140;HN(`.overlay`),n&&requestAnimationFrame(UN)}e=n});let n=le.get();le.subscribe(()=>{let e=le.get();e===null&&n!==null?VN(`.menu`):e!==null&&HN(`.menu`),n=e});let r=_a.get().guide;_a.subscribe(()=>{let e=_a.get().guide;e===null&&r!==null?VN(`.prefix-guide`):e!==null&&HN(`.prefix-guide`),r=e})}var GN=500,KN=10,qN=`input, textarea, select, [contenteditable], .xterm`,JN=[`mousedown`,`mouseup`,`click`,`contextmenu`];function YN(){let e=null,t=()=>{e&&window.clearTimeout(e.timer),e=null},n=()=>{let e=e=>{e.preventDefault(),e.stopPropagation()},t=()=>{for(let t of JN)document.removeEventListener(t,e,!0);document.removeEventListener(`pointerdown`,t,!0),document.removeEventListener(`keydown`,t,!0)};for(let t of JN)document.addEventListener(t,e,!0);document.addEventListener(`pointerdown`,t,!0),document.addEventListener(`keydown`,t,!0)};document.addEventListener(`pointerdown`,r=>{if(t(),r.pointerType!==`touch`||!(r.target instanceof Element)||r.target.closest(qN))return;let i=r.target,a={x:r.clientX,y:r.clientY,native:!1,timer:window.setTimeout(()=>{e=null,!(a.native||!i.isConnected)&&(i.dispatchEvent(new MouseEvent(`contextmenu`,{bubbles:!0,cancelable:!0,clientX:a.x,clientY:a.y,button:2})),n())},GN)};e=a},!0),document.addEventListener(`pointermove`,n=>{e&&Math.hypot(n.clientX-e.x,n.clientY-e.y)>KN&&t()},!0),document.addEventListener(`pointerup`,t,!0),document.addEventListener(`pointercancel`,t,!0),document.addEventListener(`contextmenu`,t=>{e&&t.isTrusted&&(e.native=!0)},!0)}function XN(e,t){e.viewingExtras=()=>Lu({narrow:Un(),panelOpen:lr.get(),zen:me.get()});let n=()=>e.reportViewing();lr.subscribe(n),me.subscribe(n),Wn(n),t.on(`panel`,t=>{Iu(t)&&Qu(t,e.selection.get().taskId)})}function ZN(e){let t=e;return!!t&&typeof t.promptId==`string`&&typeof t.title==`string`}function QN({client:e,prompt:t}){let n=(z()===`zh`?Ne:Me).prompt,[r,i]=(0,g.useState)(t.initial??``),a=(0,g.useRef)(!1),{busy:o,error:s,submit:c}=Oe();return(0,g.useEffect)(()=>()=>{a.current||e.request(`ui.promptReply`,{promptId:t.promptId}).catch(()=>{})},[e,t.promptId]),(0,B.jsx)(De,{title:t.title,children:(0,B.jsxs)(`form`,{className:`dialog-body`,onSubmit:n=>{n.preventDefault(),c(async()=>{await e.request(`ui.promptReply`,{promptId:t.promptId,value:r}),a.current=!0})},children:[(0,B.jsx)(`input`,{className:`input`,"aria-label":n.fieldLabel,autoFocus:!0,spellCheck:!1,value:r,placeholder:t.placeholder,onChange:e=>i(e.target.value)}),s&&(0,B.jsx)(`p`,{className:`error`,children:s}),(0,B.jsx)(je,{busy:o,submitLabel:n.submitLabel})]})})}function $N(e,t){V.get()||V.set((0,B.jsx)(QN,{client:e,prompt:t},t.promptId))}var eP=`rove-web.reloadedFor`;function tP(e,t,n){return e===null?`adopt`:t===e||t===n?`stay`:`reload`}function nP(){let e=null;try{e=window.sessionStorage}catch{}return{storage:e,reload:()=>window.location.reload()}}function rP(e,t=nP()){let n=null,r=null,i=()=>{try{return t.storage?.getItem(eP)??r}catch{return r}};return e.conn.subscribe(()=>{let{state:a,hello:o}=e.conn.get();if(a!==`open`||!o)return;let s=tP(n,o.roveVersion,i());if(s===`adopt`&&(n=o.roveVersion),s===`reload`){r=o.roveVersion;try{t.storage?.setItem(eP,o.roveVersion)}catch{}t.reload()}})}function iP(){let e=window.visualViewport;if(!e)return;let t=document.documentElement,n=()=>{t.style.setProperty(`--vvh`,`${e.height*e.scale}px`),e.scale===1&&window.scrollY!==0&&window.scrollTo(0,0)};e.addEventListener(`resize`,n),e.addEventListener(`scroll`,n),window.addEventListener(`scroll`,n,{passive:!0}),n()}var aP=(0,h.createRoot)(document.getElementById(`root`));iP(),YN(),WN(),BN();var oP=a();if(!oP)Jn().then(e=>aP.render((0,B.jsx)(g.StrictMode,{children:e?(0,B.jsx)(Qn,{}):(0,B.jsx)(se,{})})));else{let e=new Wa(Ga(),oP),t=new an(e);e.on(`prompt`,t=>{ZN(t)&&$N(e,t)}),XN(t,e),rP(e),e.start(),aP.render((0,B.jsx)(g.StrictMode,{children:(0,B.jsx)(FN,{model:t})}))}
|