glimmervoid 0.46.2-next.140 → 0.46.2-next.142
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/chunks/{main-DOdTqSJs.js → main-CR7hWfhj.js} +13 -13
- package/dist/client/assets/{alert-sound-BGx4LdwZ.js → alert-sound-BBr0as6G.js} +1 -1
- package/dist/client/assets/alert-sound-BBr0as6G.js.br +0 -0
- package/dist/client/assets/{benchmark-panel-DmyIMpSE.js → benchmark-panel-BssD3O2h.js} +1 -1
- package/dist/client/assets/benchmark-panel-BssD3O2h.js.br +0 -0
- package/dist/client/assets/{celebration-player-D5vqHPTv.js → celebration-player-CiOlT5n9.js} +1 -1
- package/dist/client/assets/celebration-player-CiOlT5n9.js.br +0 -0
- package/dist/client/assets/control-ws-D_jLoMnn.js +4 -0
- package/dist/client/assets/control-ws-D_jLoMnn.js.br +0 -0
- package/dist/client/assets/{dialogs-KuXZnfwC.js → dialogs-jfKnZPRt.js} +1 -1
- package/dist/client/assets/dialogs-jfKnZPRt.js.br +0 -0
- package/dist/client/assets/{doc-editor-ui-OPpbWk2i.js → doc-editor-ui-BK6THx6I.js} +1 -1
- package/dist/client/assets/doc-editor-ui-BK6THx6I.js.br +0 -0
- package/dist/client/assets/{first-run-checklist-BICtw3f_.js → first-run-checklist-DjV8UyhE.js} +1 -1
- package/dist/client/assets/first-run-checklist-DjV8UyhE.js.br +0 -0
- package/dist/client/assets/{hooks-panel-UXd6kftV.js → hooks-panel-Cov_E7Nn.js} +1 -1
- package/dist/client/assets/hooks-panel-Cov_E7Nn.js.br +0 -0
- package/dist/client/assets/index-DkVH8Ze_.js +78 -0
- package/dist/client/assets/index-DkVH8Ze_.js.br +0 -0
- package/dist/client/assets/{issues-panel-D1xLAqkG.js → issues-panel-C4xIYyg8.js} +1 -1
- package/dist/client/assets/issues-panel-C4xIYyg8.js.br +0 -0
- package/dist/client/assets/{nyan-cat-D_Wgtw6g.js → nyan-cat-SuwqMGt7.js} +1 -1
- package/dist/client/assets/nyan-cat-SuwqMGt7.js.br +0 -0
- package/dist/client/assets/{phone-shell-BGUCsRyh.js → phone-shell-LNpqjgav.js} +1 -1
- package/dist/client/assets/phone-shell-LNpqjgav.js.br +0 -0
- package/dist/client/assets/{plan-face-DhN__i5r.js → plan-face-CVgq55fc.js} +1 -1
- package/dist/client/assets/plan-face-CVgq55fc.js.br +0 -0
- package/dist/client/assets/{plan-render-mPHVh69n.js → plan-render-CzDoSIwQ.js} +1 -1
- package/dist/client/assets/plan-render-CzDoSIwQ.js.br +0 -0
- package/dist/client/assets/pr-scope-tabs-BWoPol5P.js +1 -0
- package/dist/client/assets/pr-scope-tabs-BWoPol5P.js.br +0 -0
- package/dist/client/assets/{radar-panel-BrQynCPO.js → radar-panel-Cz4wr8sW.js} +1 -1
- package/dist/client/assets/radar-panel-Cz4wr8sW.js.br +0 -0
- package/dist/client/assets/{repo-roots-adder-CiAPoQhG.js → repo-roots-adder-CAMr-ApU.js} +1 -1
- package/dist/client/assets/repo-roots-adder-CAMr-ApU.js.br +0 -0
- package/dist/client/assets/{resume-dialog-BHeA8T70.js → resume-dialog-LCZU0g7P.js} +1 -1
- package/dist/client/assets/resume-dialog-LCZU0g7P.js.br +0 -0
- package/dist/client/assets/{review-queue-panel-BK2UvUw7.js → review-queue-panel-Ccex9SGG.js} +2 -2
- package/dist/client/assets/review-queue-panel-Ccex9SGG.js.br +0 -0
- package/dist/client/assets/{settings-panel-XqOeh2vT.js → settings-panel-BYyO60k-.js} +2 -2
- package/dist/client/assets/settings-panel-BYyO60k-.js.br +0 -0
- package/dist/client/assets/{shown-lightbox-Z7V0d1Ea.js → shown-lightbox-BJoXhjCC.js} +1 -1
- package/dist/client/assets/shown-lightbox-BJoXhjCC.js.br +0 -0
- package/dist/client/assets/{trace-panel-BMX1noJ8.js → trace-panel-Bw6juc09.js} +1 -1
- package/dist/client/assets/trace-panel-Bw6juc09.js.br +0 -0
- package/dist/client/assets/{usage-panel-Btu-cPSN.js → usage-panel-DgfcEHUt.js} +1 -1
- package/dist/client/assets/usage-panel-DgfcEHUt.js.br +0 -0
- package/dist/client/assets/{visions-panel-DlcWh7VY.js → visions-panel-BuuuaLjv.js} +1 -1
- package/dist/client/assets/visions-panel-BuuuaLjv.js.br +0 -0
- package/dist/client/index.html +2 -2
- package/dist/client/index.html.br +0 -0
- package/dist/server/index.js +1 -1
- package/package.json +1 -1
- package/dist/client/assets/alert-sound-BGx4LdwZ.js.br +0 -0
- package/dist/client/assets/benchmark-panel-DmyIMpSE.js.br +0 -0
- package/dist/client/assets/celebration-player-D5vqHPTv.js.br +0 -0
- package/dist/client/assets/control-ws-BYg67aMo.js +0 -4
- package/dist/client/assets/control-ws-BYg67aMo.js.br +0 -0
- package/dist/client/assets/dialogs-KuXZnfwC.js.br +0 -0
- package/dist/client/assets/doc-editor-ui-OPpbWk2i.js.br +0 -0
- package/dist/client/assets/first-run-checklist-BICtw3f_.js.br +0 -0
- package/dist/client/assets/hooks-panel-UXd6kftV.js.br +0 -0
- package/dist/client/assets/index-BcDfmAuk.js +0 -78
- package/dist/client/assets/index-BcDfmAuk.js.br +0 -0
- package/dist/client/assets/issues-panel-D1xLAqkG.js.br +0 -0
- package/dist/client/assets/nyan-cat-D_Wgtw6g.js.br +0 -0
- package/dist/client/assets/phone-shell-BGUCsRyh.js.br +0 -0
- package/dist/client/assets/plan-face-DhN__i5r.js.br +0 -0
- package/dist/client/assets/plan-render-mPHVh69n.js.br +0 -0
- package/dist/client/assets/pr-scope-tabs-Cxb7a5h9.js +0 -1
- package/dist/client/assets/pr-scope-tabs-Cxb7a5h9.js.br +0 -0
- package/dist/client/assets/radar-panel-BrQynCPO.js.br +0 -0
- package/dist/client/assets/repo-roots-adder-CiAPoQhG.js.br +0 -0
- package/dist/client/assets/resume-dialog-BHeA8T70.js.br +0 -0
- package/dist/client/assets/review-queue-panel-BK2UvUw7.js.br +0 -0
- package/dist/client/assets/settings-panel-XqOeh2vT.js.br +0 -0
- package/dist/client/assets/shown-lightbox-Z7V0d1Ea.js.br +0 -0
- package/dist/client/assets/trace-panel-BMX1noJ8.js.br +0 -0
- package/dist/client/assets/usage-panel-Btu-cPSN.js.br +0 -0
- package/dist/client/assets/visions-panel-DlcWh7VY.js.br +0 -0
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Dt as e,ht as t}from"./updates-view-core-B_e7uWeW.js";import{E as n,c as r,o as i,u as a,v as o}from"./dom-helpers-C7P3_59O.js";import{a as s,o as c}from"./card-registry-DsAFY_8B.js";import{B as l,Br as u,G as d,H as f,K as p,Lr as m,R as h,U as g,V as _,W as v,hr as y,ia as ee,ra as b,z as te}from"./index-BcDfmAuk.js";import{a as x,i as S,r as C,t as w}from"./pr-scope-tabs-Cxb7a5h9.js";function T(e){return e?e.configured?`No open issues.`:e.reason??`Loading issues.`:`Loading issues.`}function E(e,t){return t===`all`||e.sources.includes(t)}function ne(e){return{all:e.length,me:e.filter(e=>E(e,`me`)).length,team:e.filter(e=>E(e,`team`)).length,project:e.filter(e=>E(e,`project`)).length}}function re(e,t,n){let r=t.query.trim().toLowerCase().split(/\s+/).filter(Boolean),i=e.filter(e=>{if(!E(e,t.scope)||t.repo&&e.repo!==t.repo||t.label&&!e.labels.includes(t.label)||t.hasSession&&(!e.sessionId||!n.has(e.sessionId))||t.hasPr&&e.pullRequests.length===0||t.isUnassignedOnly&&e.assignees.length>0)return!1;let i=[e.title,`#${e.number}`,e.repo,e.author,...e.labels,...e.assignees,...e.teams].join(` `).toLowerCase();return r.every(e=>i.includes(e))}),a=e=>Date.parse(e)||0,o=e=>t.sort===`comments`?e.comments:t.sort===`created`?a(e.createdAt):a(e.updatedAt);return i.sort((e,t)=>o(t)-o(e)||e.key.localeCompare(t.key))}function ie(e){let t=new Map;for(let n of e){let e=t.get(n.repo)??[];e.push(n),t.set(n.repo,e)}return t}function ae(e){return{repos:[...new Set(e.map(e=>e.repo))].sort(),labels:[...new Set(e.flatMap(e=>e.labels))].sort()}}function oe(e){let t=[e.query.trim()&&`search "${e.query.trim()}"`,e.repo,e.label,e.hasSession&&`has session`,e.hasPr&&`has PR`,e.isUnassignedOnly&&`unassigned`].filter(Boolean);return t.length===0?``:`Filtered by ${t.join(`, `)}.`}function D(e,t){let n=typeof e==`number`?e:Date.parse(e);if(!Number.isFinite(n))return`unknown`;let r=Math.round(Math.max(0,t-n)/6e4);if(r<1)return`now`;if(r<60)return`${r}m`;let i=Math.round(r/60);return i<48?`${i}h`:`${Math.round(i/24)}d`}function O(e,t){let n=D(e,t);return n===`now`?`just now`:n===`unknown`?`at an unknown time`:`${n} ago`}function k(n,r){let i=t(n.url),a=i?r(i.toLowerCase()):void 0;return a?e(a):n.state}var se=[{id:`all`,label:`All`},{id:`me`,label:`Mine`},{id:`team`,label:`Team`},{id:`project`,label:`Projects`}],A={scope:`all`,repo:``,label:``,sort:`updated`,query:``,hasSession:!1,hasPr:!1,isUnassignedOnly:!1},j=null,M=null,N=null,P=null,F=null,I=null,L=null,R=null,z=!1,B=null;function V(e){return e.sessionId?c.get(e.sessionId):void 0}function H(e,t,r){let a=V(t),s=a?.currentState??n.DORMANT,c=o(s,a?.awaitingBackgroundTasks),l=a?`Session: ${c.label}`:`No session yet`,d=r?c.label:``;if(e.dataset.state===s&&e.title===l&&e.dataset.icon===c.icon&&e.textContent===d)return;e.dataset.state=s,e.dataset.icon=c.icon,e.title=l,e.setAttribute(`aria-label`,l);let f=i(`span`,`issues-state-icon`);u(f,c.icon),e.replaceChildren(f),r&&e.append(d)}function U(e,t=!1){let n=i(`span`,t?`issues-state`:`pr-queue-glyph issues-state`);return H(n,e,t),n}function W(e){let t=V(e);return t?s(t):`none yet`}function ce(e){V(e)||_(e)}function le(e){let t=i(`button`,`pr-queue-row issue-row`);t.type=`button`,t.dataset.issueKey=e.key,t.setAttribute(`aria-current`,String(e.key===l().selectedKey));let n=i(`span`,`pr-queue-top`);n.append(i(`span`,`pr-queue-ref`,`#${e.number}`),i(`span`,`pr-queue-title`,e.title||`Untitled issue`));let r=i(`span`,`pr-queue-bottom`);e.sources.includes(`me`)&&r.append(i(`span`,`issues-why`,`you`)),r.append(i(`span`,`issues-row-labels`,e.labels.join(`, `)));for(let t of e.pullRequests){let e=k(t,b),n=i(`span`,`issues-row-pr`,`PR #${t.number} ${e}`);n.dataset.prState=e,r.append(n)}let a=i(`span`,`pr-queue-elapsed`,D(e.updatedAt,Date.now()));return a.dataset.issueAge=e.updatedAt,r.append(a),t.append(U(e),n,r),t.addEventListener(`click`,()=>{g(`select`),d(e.key),j&&(j.dataset.detailOpen=`true`),v(e),X(),P&&(P.scrollTop=0)}),t}function G(e,t,n){let r=i(`dd`);r.append(...n),e.append(i(`dt`,null,t),r)}function K(e){let t=i(`footer`,`pr-footer issues-detail-footer`),n=V(e);if(n&&e.sessionId){let n=e.sessionId,r=i(`button`,`pr-action`,`Go to session`);r.type=`button`,r.addEventListener(`click`,()=>{g(`go-to-session`),y(n)}),t.append(r)}if(e.projectId&&!n){let n=i(`button`,`pr-action`,`Open session`);n.type=`button`,n.disabled=h(e),n.addEventListener(`click`,()=>ce(e)),t.append(n)}t.append(r(`pr-action pr-action-ghost`,`View on GitHub`,e.url));let a=f(e),o=e.projectId?``:`Add a project for ${e.repo} in Settings to open sessions from here.`,s=i(`span`,`pr-action-status issue-open-status`);return s.setAttribute(`role`,`status`),m(s,a?.tone??null,a?.text??o),t.append(s),t}function q(e,t){let n=i(`span`,null,O(e,t));return n.dataset.issueAgo=e,n}function ue(){let e=P?.querySelector(`.issues-detail`),{selectedKey:t,issueByKey:n}=l(),r=t?n.get(t):void 0;if(!e||!r)return;let i=e.querySelector(`.issues-facts .issues-state`);i&&H(i,r,!0);let a=e.querySelector(`.issues-session-name`),o=W(r);a&&a.textContent!==o&&(a.textContent=o);let s=String(!!V(r));e.dataset.hasLiveSession!==s&&(e.dataset.hasLiveSession=s,e.querySelector(`.issues-detail-footer`)?.replaceWith(K(r)))}function J(){if(!P)return;let{latestStatus:e,selectedKey:t}=l(),n=e?.issues.find(e=>e.key===t);if(!n){P.replaceChildren(i(`p`,`pr-empty`,`Pick an issue from the queue.`));return}let a=i(`article`,`pr-detail issues-detail`),o=i(`button`,`pr-action pr-action-ghost issues-back`,`Back to issues`);o.type=`button`,o.addEventListener(`click`,()=>{g(`back`),j&&(j.dataset.detailOpen=`false`),[...N?.querySelectorAll(`[data-issue-key]`)??[]].find(e=>e.dataset.issueKey===l().selectedKey)?.focus({preventScroll:!0})});let s=i(`header`,`pr-detail-heading`),c=i(`div`,`pr-detail-title`);c.append(r(`pr-link`,`${n.repo}#${n.number}`,n.url),i(`h2`,null,n.title||`Untitled issue`));let u=Date.now(),d=i(`div`,`pr-detail-meta`),f=i(`span`,null,`opened by ${n.author||`unknown`} `),p=i(`span`,null,`updated `);f.append(q(n.createdAt,u)),p.append(q(n.updatedAt,u)),d.append(f,p,i(`span`,null,`${n.comments} comments`)),n.sources.includes(`me`)&&d.append(i(`span`,`issues-why`,`assigned to you`));for(let e of n.teams)d.append(i(`span`,null,`mentions ${e}`));s.append(c,d);let m=i(`dl`,`issues-facts`);G(m,`Repository`,[n.repo]),G(m,`Labels`,[n.labels.join(`, `)||`none`]),G(m,`Assignees`,[n.assignees.join(`, `)||`unassigned`]),a.dataset.hasLiveSession=String(!!V(n)),G(m,`Session`,[U(n,!0),i(`span`,`issues-session-name`,W(n))]);let h=n.pullRequests.flatMap(e=>{let t=k(e,b),n=i(`span`,`issues-pr-state`,t);return n.dataset.prState=t,[n,r(`issues-inline-link`,`#${e.number} ${e.title}`,e.url)]});G(m,`Pull request`,h.length>0?h:[`none linked`]);let _=i(`section`,`issues-body-section`),v=i(`div`,`issue-body`,te(n));v.setAttribute(`role`,`status`),_.append(i(`h3`,`pr-section-heading`,`Description`),v),a.append(o,s,m,_,K(n)),P.replaceChildren(a)}function Y(e,t,n,r){if(!e)return;let a=r&&!n.includes(r)?[...n,r].sort():n;e.replaceChildren(...[``,...a].map(e=>{let n=i(`option`,null,e||t);return n.value=e,n})),e.value=r}function X(){z=!1,Z(),J()}function Z(){if(!j||!N||!M)return;let{latestStatus:e,selectedKey:t}=l(),n=e?.issues??[],r=ne(n);M.select(A.scope);for(let[e,t]of M.countElementByScope)t.textContent=String(r[e]);let a=ae(n);Y(I,`All repos`,a.repos,A.repo),Y(L,`All labels`,a.labels,A.label),F&&(F.textContent=oe(A));let o=re(n,A,new Set(c.keys())),s=document.activeElement instanceof HTMLElement&&N.contains(document.activeElement)?document.activeElement.dataset.issueKey:null,u=[...ie(o)].map(([e,t])=>{let n=i(`section`,`pr-queue-section`),r=i(`h3`,`pr-section-heading issues-repo-heading`,e);return t.some(e=>e.projectId)||r.append(i(`span`,`issues-repo-note`,`view only`)),r.append(i(`span`,`issues-repo-count`,String(t.length))),n.append(r,...t.map(le)),n});N.replaceChildren(...u),o.length===0&&N.append(i(`p`,`pr-empty`,n.length>0?`No open issues match these filters. Clear the search or pick All.`:T(e))),s&&[...N.querySelectorAll(`[data-issue-key]`)].find(e=>e.dataset.issueKey===s)?.focus({preventScroll:!0}),t&&!n.some(e=>e.key===t)&&(d(null),j.dataset.detailOpen=`false`),B?.update(e),Q()}function de(){let e=i(`div`,`issues-filters`),t=i(`div`,`issues-search-row`),n=i(`input`,`issues-search`);n.type=`search`,n.placeholder=`Search issues`,n.autocomplete=`off`,n.setAttribute(`aria-label`,`Search issues`),n.addEventListener(`input`,()=>{A.query=n.value,X()}),n.addEventListener(`change`,()=>g(`search`));let r=i(`button`,`pr-action pr-action-ghost`,`Filters`);r.type=`button`,r.setAttribute(`aria-expanded`,`false`),r.setAttribute(`aria-controls`,`issues-filters-panel`);let a=i(`div`,`issues-filters-panel`);a.id=`issues-filters-panel`,a.hidden=!0,r.addEventListener(`click`,()=>{g(`filters-toggle`),a.hidden=!a.hidden,r.setAttribute(`aria-expanded`,String(!a.hidden))}),t.append(n,r);let o=i(`div`,`issues-filter-row`);function s(e){let t=i(`select`,`issues-field`);return t.setAttribute(`aria-label`,e),o.append(t),t}I=s(`Repository`),I.addEventListener(`change`,()=>{g(`filter`),A.repo=I?.value??``,X()}),L=s(`Label`),L.addEventListener(`change`,()=>{g(`filter`),A.label=L?.value??``,X()});let c=s(`Sort`);for(let[e,t]of[[`updated`,`Updated`],[`created`,`Newest`],[`comments`,`Most discussed`]]){let n=i(`option`,null,t);n.value=e??``,c.append(n)}c.addEventListener(`change`,()=>{g(`filter`),A.sort=c.value,X()});let l=i(`div`,`issues-filter-row`);for(let[e,t]of[[`hasSession`,`Has session`],[`hasPr`,`Has PR`],[`isUnassignedOnly`,`Unassigned`]]){let n=i(`label`,`issues-toggle`),r=i(`input`);r.type=`checkbox`,r.addEventListener(`change`,()=>{g(`filter`),A[e]=r.checked,X()}),n.append(r,` ${t}`),l.append(n)}return F=i(`span`,`issues-filter-summary`),F.setAttribute(`role`,`status`),a.append(o,l),e.append(t,F,a),e}function Q(){if(!j||j.closest(`[hidden]`)||document.hidden)return;let e=Date.now(),t=l().latestStatus?.lastSyncAt;R&&(R.textContent=t?`Synced ${O(t,e)}.`:`Not synced yet.`);for(let t of j.querySelectorAll(`[data-issue-age]`))t.textContent=D(t.dataset.issueAge??``,e);for(let t of j.querySelectorAll(`[data-issue-ago]`))t.textContent=O(t.dataset.issueAgo??``,e)}function fe(e){if(j)return;j=i(`div`,`issues-content`),j.dataset.detailOpen=`false`,e.append(j),B=x(`issues`,j);let t=i(`div`,`pr-columns issues-columns`),n=i(`section`,`pr-queue-pane`);n.setAttribute(`aria-label`,`Issue queue`),M=w({label:`Issue scope`,scopes:se,selected:A.scope,onSelect:e=>{g(`scope`),A.scope=e,X()},extraClassName:`issues-scope-tabs`,countClassPrefix:`issues-scope`}),N=i(`nav`,`pr-queue`),N.setAttribute(`aria-label`,`Issues`);let r=C(B.control);R=i(`span`,`issues-sync`),R.setAttribute(`role`,`status`),r.prepend(R),r.append(B.notice),n.append(S(M.element),de(),N,r),P=i(`section`,`pr-detail-host`),P.setAttribute(`aria-label`,`Issue detail`),t.append(n,P),j.append(t),window.setInterval(Q,3e4),p(he),ee(X),X()}function pe(){z&&$(),Q()}function $(){if(a(j))z=!0;else if(z=!1,ue(),A.hasSession)Z();else for(let e of N?.querySelectorAll(`[data-issue-key]`)??[]){let t=l().issueByKey.get(e.dataset.issueKey??``),n=e.querySelector(`.issues-state`);t&&n&&H(n,t,!1)}}var me={status:X,detail:J,"session-state":$};function he(e){me[e]()}var ge={mount:fe,refresh:pe};export{ge as view};
|
|
1
|
+
import{Dt as e,ht as t}from"./updates-view-core-B_e7uWeW.js";import{E as n,c as r,o as i,u as a,v as o}from"./dom-helpers-C7P3_59O.js";import{a as s,o as c}from"./card-registry-DsAFY_8B.js";import{B as l,Br as u,G as d,H as f,K as p,Lr as m,R as h,U as g,V as _,W as v,hr as y,ia as ee,ra as b,z as te}from"./index-DkVH8Ze_.js";import{a as x,i as S,r as C,t as w}from"./pr-scope-tabs-BWoPol5P.js";function T(e){return e?e.configured?`No open issues.`:e.reason??`Loading issues.`:`Loading issues.`}function E(e,t){return t===`all`||e.sources.includes(t)}function ne(e){return{all:e.length,me:e.filter(e=>E(e,`me`)).length,team:e.filter(e=>E(e,`team`)).length,project:e.filter(e=>E(e,`project`)).length}}function re(e,t,n){let r=t.query.trim().toLowerCase().split(/\s+/).filter(Boolean),i=e.filter(e=>{if(!E(e,t.scope)||t.repo&&e.repo!==t.repo||t.label&&!e.labels.includes(t.label)||t.hasSession&&(!e.sessionId||!n.has(e.sessionId))||t.hasPr&&e.pullRequests.length===0||t.isUnassignedOnly&&e.assignees.length>0)return!1;let i=[e.title,`#${e.number}`,e.repo,e.author,...e.labels,...e.assignees,...e.teams].join(` `).toLowerCase();return r.every(e=>i.includes(e))}),a=e=>Date.parse(e)||0,o=e=>t.sort===`comments`?e.comments:t.sort===`created`?a(e.createdAt):a(e.updatedAt);return i.sort((e,t)=>o(t)-o(e)||e.key.localeCompare(t.key))}function ie(e){let t=new Map;for(let n of e){let e=t.get(n.repo)??[];e.push(n),t.set(n.repo,e)}return t}function ae(e){return{repos:[...new Set(e.map(e=>e.repo))].sort(),labels:[...new Set(e.flatMap(e=>e.labels))].sort()}}function oe(e){let t=[e.query.trim()&&`search "${e.query.trim()}"`,e.repo,e.label,e.hasSession&&`has session`,e.hasPr&&`has PR`,e.isUnassignedOnly&&`unassigned`].filter(Boolean);return t.length===0?``:`Filtered by ${t.join(`, `)}.`}function D(e,t){let n=typeof e==`number`?e:Date.parse(e);if(!Number.isFinite(n))return`unknown`;let r=Math.round(Math.max(0,t-n)/6e4);if(r<1)return`now`;if(r<60)return`${r}m`;let i=Math.round(r/60);return i<48?`${i}h`:`${Math.round(i/24)}d`}function O(e,t){let n=D(e,t);return n===`now`?`just now`:n===`unknown`?`at an unknown time`:`${n} ago`}function k(n,r){let i=t(n.url),a=i?r(i.toLowerCase()):void 0;return a?e(a):n.state}var se=[{id:`all`,label:`All`},{id:`me`,label:`Mine`},{id:`team`,label:`Team`},{id:`project`,label:`Projects`}],A={scope:`all`,repo:``,label:``,sort:`updated`,query:``,hasSession:!1,hasPr:!1,isUnassignedOnly:!1},j=null,M=null,N=null,P=null,F=null,I=null,L=null,R=null,z=!1,B=null;function V(e){return e.sessionId?c.get(e.sessionId):void 0}function H(e,t,r){let a=V(t),s=a?.currentState??n.DORMANT,c=o(s,a?.awaitingBackgroundTasks),l=a?`Session: ${c.label}`:`No session yet`,d=r?c.label:``;if(e.dataset.state===s&&e.title===l&&e.dataset.icon===c.icon&&e.textContent===d)return;e.dataset.state=s,e.dataset.icon=c.icon,e.title=l,e.setAttribute(`aria-label`,l);let f=i(`span`,`issues-state-icon`);u(f,c.icon),e.replaceChildren(f),r&&e.append(d)}function U(e,t=!1){let n=i(`span`,t?`issues-state`:`pr-queue-glyph issues-state`);return H(n,e,t),n}function W(e){let t=V(e);return t?s(t):`none yet`}function ce(e){V(e)||_(e)}function le(e){let t=i(`button`,`pr-queue-row issue-row`);t.type=`button`,t.dataset.issueKey=e.key,t.setAttribute(`aria-current`,String(e.key===l().selectedKey));let n=i(`span`,`pr-queue-top`);n.append(i(`span`,`pr-queue-ref`,`#${e.number}`),i(`span`,`pr-queue-title`,e.title||`Untitled issue`));let r=i(`span`,`pr-queue-bottom`);e.sources.includes(`me`)&&r.append(i(`span`,`issues-why`,`you`)),r.append(i(`span`,`issues-row-labels`,e.labels.join(`, `)));for(let t of e.pullRequests){let e=k(t,b),n=i(`span`,`issues-row-pr`,`PR #${t.number} ${e}`);n.dataset.prState=e,r.append(n)}let a=i(`span`,`pr-queue-elapsed`,D(e.updatedAt,Date.now()));return a.dataset.issueAge=e.updatedAt,r.append(a),t.append(U(e),n,r),t.addEventListener(`click`,()=>{g(`select`),d(e.key),j&&(j.dataset.detailOpen=`true`),v(e),X(),P&&(P.scrollTop=0)}),t}function G(e,t,n){let r=i(`dd`);r.append(...n),e.append(i(`dt`,null,t),r)}function K(e){let t=i(`footer`,`pr-footer issues-detail-footer`),n=V(e);if(n&&e.sessionId){let n=e.sessionId,r=i(`button`,`pr-action`,`Go to session`);r.type=`button`,r.addEventListener(`click`,()=>{g(`go-to-session`),y(n)}),t.append(r)}if(e.projectId&&!n){let n=i(`button`,`pr-action`,`Open session`);n.type=`button`,n.disabled=h(e),n.addEventListener(`click`,()=>ce(e)),t.append(n)}t.append(r(`pr-action pr-action-ghost`,`View on GitHub`,e.url));let a=f(e),o=e.projectId?``:`Add a project for ${e.repo} in Settings to open sessions from here.`,s=i(`span`,`pr-action-status issue-open-status`);return s.setAttribute(`role`,`status`),m(s,a?.tone??null,a?.text??o),t.append(s),t}function q(e,t){let n=i(`span`,null,O(e,t));return n.dataset.issueAgo=e,n}function ue(){let e=P?.querySelector(`.issues-detail`),{selectedKey:t,issueByKey:n}=l(),r=t?n.get(t):void 0;if(!e||!r)return;let i=e.querySelector(`.issues-facts .issues-state`);i&&H(i,r,!0);let a=e.querySelector(`.issues-session-name`),o=W(r);a&&a.textContent!==o&&(a.textContent=o);let s=String(!!V(r));e.dataset.hasLiveSession!==s&&(e.dataset.hasLiveSession=s,e.querySelector(`.issues-detail-footer`)?.replaceWith(K(r)))}function J(){if(!P)return;let{latestStatus:e,selectedKey:t}=l(),n=e?.issues.find(e=>e.key===t);if(!n){P.replaceChildren(i(`p`,`pr-empty`,`Pick an issue from the queue.`));return}let a=i(`article`,`pr-detail issues-detail`),o=i(`button`,`pr-action pr-action-ghost issues-back`,`Back to issues`);o.type=`button`,o.addEventListener(`click`,()=>{g(`back`),j&&(j.dataset.detailOpen=`false`),[...N?.querySelectorAll(`[data-issue-key]`)??[]].find(e=>e.dataset.issueKey===l().selectedKey)?.focus({preventScroll:!0})});let s=i(`header`,`pr-detail-heading`),c=i(`div`,`pr-detail-title`);c.append(r(`pr-link`,`${n.repo}#${n.number}`,n.url),i(`h2`,null,n.title||`Untitled issue`));let u=Date.now(),d=i(`div`,`pr-detail-meta`),f=i(`span`,null,`opened by ${n.author||`unknown`} `),p=i(`span`,null,`updated `);f.append(q(n.createdAt,u)),p.append(q(n.updatedAt,u)),d.append(f,p,i(`span`,null,`${n.comments} comments`)),n.sources.includes(`me`)&&d.append(i(`span`,`issues-why`,`assigned to you`));for(let e of n.teams)d.append(i(`span`,null,`mentions ${e}`));s.append(c,d);let m=i(`dl`,`issues-facts`);G(m,`Repository`,[n.repo]),G(m,`Labels`,[n.labels.join(`, `)||`none`]),G(m,`Assignees`,[n.assignees.join(`, `)||`unassigned`]),a.dataset.hasLiveSession=String(!!V(n)),G(m,`Session`,[U(n,!0),i(`span`,`issues-session-name`,W(n))]);let h=n.pullRequests.flatMap(e=>{let t=k(e,b),n=i(`span`,`issues-pr-state`,t);return n.dataset.prState=t,[n,r(`issues-inline-link`,`#${e.number} ${e.title}`,e.url)]});G(m,`Pull request`,h.length>0?h:[`none linked`]);let _=i(`section`,`issues-body-section`),v=i(`div`,`issue-body`,te(n));v.setAttribute(`role`,`status`),_.append(i(`h3`,`pr-section-heading`,`Description`),v),a.append(o,s,m,_,K(n)),P.replaceChildren(a)}function Y(e,t,n,r){if(!e)return;let a=r&&!n.includes(r)?[...n,r].sort():n;e.replaceChildren(...[``,...a].map(e=>{let n=i(`option`,null,e||t);return n.value=e,n})),e.value=r}function X(){z=!1,Z(),J()}function Z(){if(!j||!N||!M)return;let{latestStatus:e,selectedKey:t}=l(),n=e?.issues??[],r=ne(n);M.select(A.scope);for(let[e,t]of M.countElementByScope)t.textContent=String(r[e]);let a=ae(n);Y(I,`All repos`,a.repos,A.repo),Y(L,`All labels`,a.labels,A.label),F&&(F.textContent=oe(A));let o=re(n,A,new Set(c.keys())),s=document.activeElement instanceof HTMLElement&&N.contains(document.activeElement)?document.activeElement.dataset.issueKey:null,u=[...ie(o)].map(([e,t])=>{let n=i(`section`,`pr-queue-section`),r=i(`h3`,`pr-section-heading issues-repo-heading`,e);return t.some(e=>e.projectId)||r.append(i(`span`,`issues-repo-note`,`view only`)),r.append(i(`span`,`issues-repo-count`,String(t.length))),n.append(r,...t.map(le)),n});N.replaceChildren(...u),o.length===0&&N.append(i(`p`,`pr-empty`,n.length>0?`No open issues match these filters. Clear the search or pick All.`:T(e))),s&&[...N.querySelectorAll(`[data-issue-key]`)].find(e=>e.dataset.issueKey===s)?.focus({preventScroll:!0}),t&&!n.some(e=>e.key===t)&&(d(null),j.dataset.detailOpen=`false`),B?.update(e),Q()}function de(){let e=i(`div`,`issues-filters`),t=i(`div`,`issues-search-row`),n=i(`input`,`issues-search`);n.type=`search`,n.placeholder=`Search issues`,n.autocomplete=`off`,n.setAttribute(`aria-label`,`Search issues`),n.addEventListener(`input`,()=>{A.query=n.value,X()}),n.addEventListener(`change`,()=>g(`search`));let r=i(`button`,`pr-action pr-action-ghost`,`Filters`);r.type=`button`,r.setAttribute(`aria-expanded`,`false`),r.setAttribute(`aria-controls`,`issues-filters-panel`);let a=i(`div`,`issues-filters-panel`);a.id=`issues-filters-panel`,a.hidden=!0,r.addEventListener(`click`,()=>{g(`filters-toggle`),a.hidden=!a.hidden,r.setAttribute(`aria-expanded`,String(!a.hidden))}),t.append(n,r);let o=i(`div`,`issues-filter-row`);function s(e){let t=i(`select`,`issues-field`);return t.setAttribute(`aria-label`,e),o.append(t),t}I=s(`Repository`),I.addEventListener(`change`,()=>{g(`filter`),A.repo=I?.value??``,X()}),L=s(`Label`),L.addEventListener(`change`,()=>{g(`filter`),A.label=L?.value??``,X()});let c=s(`Sort`);for(let[e,t]of[[`updated`,`Updated`],[`created`,`Newest`],[`comments`,`Most discussed`]]){let n=i(`option`,null,t);n.value=e??``,c.append(n)}c.addEventListener(`change`,()=>{g(`filter`),A.sort=c.value,X()});let l=i(`div`,`issues-filter-row`);for(let[e,t]of[[`hasSession`,`Has session`],[`hasPr`,`Has PR`],[`isUnassignedOnly`,`Unassigned`]]){let n=i(`label`,`issues-toggle`),r=i(`input`);r.type=`checkbox`,r.addEventListener(`change`,()=>{g(`filter`),A[e]=r.checked,X()}),n.append(r,` ${t}`),l.append(n)}return F=i(`span`,`issues-filter-summary`),F.setAttribute(`role`,`status`),a.append(o,l),e.append(t,F,a),e}function Q(){if(!j||j.closest(`[hidden]`)||document.hidden)return;let e=Date.now(),t=l().latestStatus?.lastSyncAt;R&&(R.textContent=t?`Synced ${O(t,e)}.`:`Not synced yet.`);for(let t of j.querySelectorAll(`[data-issue-age]`))t.textContent=D(t.dataset.issueAge??``,e);for(let t of j.querySelectorAll(`[data-issue-ago]`))t.textContent=O(t.dataset.issueAgo??``,e)}function fe(e){if(j)return;j=i(`div`,`issues-content`),j.dataset.detailOpen=`false`,e.append(j),B=x(`issues`,j);let t=i(`div`,`pr-columns issues-columns`),n=i(`section`,`pr-queue-pane`);n.setAttribute(`aria-label`,`Issue queue`),M=w({label:`Issue scope`,scopes:se,selected:A.scope,onSelect:e=>{g(`scope`),A.scope=e,X()},extraClassName:`issues-scope-tabs`,countClassPrefix:`issues-scope`}),N=i(`nav`,`pr-queue`),N.setAttribute(`aria-label`,`Issues`);let r=C(B.control);R=i(`span`,`issues-sync`),R.setAttribute(`role`,`status`),r.prepend(R),r.append(B.notice),n.append(S(M.element),de(),N,r),P=i(`section`,`pr-detail-host`),P.setAttribute(`aria-label`,`Issue detail`),t.append(n,P),j.append(t),window.setInterval(Q,3e4),p(he),ee(X),X()}function pe(){z&&$(),Q()}function $(){if(a(j))z=!0;else if(z=!1,ue(),A.hasSession)Z();else for(let e of N?.querySelectorAll(`[data-issue-key]`)??[]){let t=l().issueByKey.get(e.dataset.issueKey??``),n=e.querySelector(`.issues-state`);t&&n&&H(n,t,!1)}}var me={status:X,detail:J,"session-state":$};function he(e){me[e]()}var ge={mount:fe,refresh:pe};export{ge as view};
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./rolldown-runtime-DK3Fl9T5.js";import{_ as t}from"./dom-helpers-C7P3_59O.js";import{Ji as n,Qi as r,Xi as i,Yi as a,ai as o,di as s,or as c,qi as l}from"./index-
|
|
1
|
+
import{t as e}from"./rolldown-runtime-DK3Fl9T5.js";import{_ as t}from"./dom-helpers-C7P3_59O.js";import{Ji as n,Qi as r,Xi as i,Yi as a,ai as o,di as s,or as c,qi as l}from"./index-DkVH8Ze_.js";var u=e({currentFlightBlockReason:()=>w,flyAnimalNow:()=>A,startNyanCat:()=>k,stopNyanCat:()=>j}),d=null,f=null,p=null,m=null,h=null,g=null,_=-1,v=null,y={isRightToLeft:!1,arcProgress:0},b=1,x=3;function S(){if(!d||v===null)return;let e=l({viewportWidthPx:document.documentElement.clientWidth,viewportHeightPx:document.documentElement.clientHeight,verticalProgress:v,...y});t(d,n(e,b,window.devicePixelRatio))}function C(){g!==null&&(clearTimeout(g),g=null)}function w(e=s()){return i({isEnabled:e,hasReducedMotion:window.matchMedia(`(prefers-reduced-motion: reduce)`).matches,isPhone:c(),options:o()})}function T(e){e.onanimationend=null,e.style.animation=`none`,m&&(m.style.animation=`none`),e.hidden=!0}function E(e,t){if(!d||!f||!p||!m||w())return;let n=o();C();let i=a(n,_,Math.random,t);if(T(d),!i){g=setTimeout(()=>E(!1),1e3);return}v=i.verticalProgress,y={isRightToLeft:i.isRightToLeft,arcProgress:i.arcProgress},b=n.flyingAnimalsScale,S();let s=r[i.animalIndex];f.className=`nyan-sprite ${s.sprite}`,p.className=`nyan-trail ${s.trail}`,_=i.animalIndex,h?.classList.remove(`is-booped`),d.hidden=!1,d.offsetWidth,d.style.animation=`nyan-fly ${i.durationSeconds}s linear`,m.style.animation=`nyan-trail-hold ${i.durationSeconds}s linear`,e&&(d.style.animationDelay=`-${i.firstDelaySeconds}s`,m.style.animationDelay=`-${i.firstDelaySeconds}s`),d.onanimationend=e=>{d&&e.target===d&&(T(d),g=setTimeout(()=>E(!1),i.gapMs))}}function D(){h&&(h.classList.remove(`is-booped`),h.offsetWidth,h.classList.add(`is-booped`))}function O(e){if(d&&m&&e.target===h)for(let e of[...d.getAnimations(),...m.getAnimations()])e.playbackRate=x}function k(){if(d||w())return;d=document.createElement(`div`),d.className=`nyan-flight`,d.setAttribute(`aria-hidden`,`true`);let e=document.createElement(`div`);e.className=`nyan-trail-window`,m=document.createElement(`div`),m.className=`nyan-trail-hold`,p=document.createElement(`div`),m.append(p),e.append(m),f=document.createElement(`div`),h=document.createElement(`div`),h.className=`nyan-boop`,h.append(f),h.addEventListener(`pointerdown`,D),h.addEventListener(`animationend`,O),d.append(e,h),document.body.appendChild(d),window.addEventListener(`resize`,S),window.addEventListener(`orientationchange`,S),E(!0)}function A(e){k(),E(!1,e)}function j(){C(),window.removeEventListener(`resize`,S),window.removeEventListener(`orientationchange`,S),d?.remove(),d=null,f=null,p=null,m=null,h=null,_=-1,v=null}export{A as n,u as r,w as t};
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e}from"./updates-view-core-B_e7uWeW.js";import{E as t,f as n,g as r,h as i,o as a,t as o}from"./dom-helpers-C7P3_59O.js";import{a as s,g as c,h as l,o as u,p as d,t as f,u as p,v as m}from"./card-registry-DsAFY_8B.js";import{a as h,n as ee,r as g,s as _,t as te}from"./session-tick-XGyxrRw7.js";import{$i as v,$r as ne,Cr as y,Dr as b,Gn as x,Hr as re,Ir as S,Mr as ie,Or as ae,Sr as C,Tr as w,Ur as oe,an as T,cn as se,dn as E,dr as ce,ea as D,en as le,fn as O,fr as k,hr as A,in as ue,jr as de,kr as fe,ln as pe,lr as me,mr as he,na as j,nn as M,on as ge,pr as _e,qr as ve,rn as ye,sn as be,ta as xe,tn as Se,un as Ce,vr as we,wr as Te,yr as Ee}from"./index-BcDfmAuk.js";var De=e=>e.ui.path;function Oe({onSelectSession:e}){let t=a(`div`,`phone-board`),r=a(`header`,`phone-topbar`),i=le({onJump:()=>{M(i);let e=l(E(),null)[0]?.id;e&&s(e)},rowFor:e=>v.get(e)}),o=null;function s(e){o=e,v.get(e)?.scrollIntoView({block:`nearest`}),ye(i,e,()=>{o===e&&d(e)})}function d(t){o=null,e?.(t)}let f=a(`div`,`phone-board-list`),m=a(`div`,`phone-empty`),h=a(`p`,`phone-empty-title`,`No sessions`),ee=a(`p`,`phone-empty-desc`,`Spawn a session to start watching.`);m.append(h,ee),t.append(r,f,m,i);let v=new Map,b=new Map,x=new WeakMap,re=new WeakMap,S=new WeakMap;n(r);function ie(e){let{row:t,refs:n}=C(`button`);t.type=`button`,t.dataset.id=e,t.addEventListener(`click`,()=>d(e));let{item:r}=w(t,()=>he(e));return r.setAttribute(`role`,`listitem`),x.set(t,{refs:n,item:r}),t}function ae(){let e=a(`section`,`phone-board-group`),t=ue({onAdd:ce,onForget:e=>{Ee(e),D()}}),n=a(`div`,`phone-board-group-rows`);return n.setAttribute(`role`,`list`),e.append(t.header,n),re.set(e,{...t,rows:n}),e}function oe(e,t,n){let r=x.get(e);if(!r)return;let{ui:i,state:a,name:o}=t;y(e,r.refs,{ui:i,state:a,name:o,mergeStatus:i.card?.dataset.merge||``,attentionPosition:n})}function se(e,t){let n=re.get(e);n&&(T(n,t,`Board`),n.rows.setAttribute(`aria-label`,`${t.label} sessions`))}function E(){return c(k())}function D(){let e=E(),t=ge(e,De,we(e,De)),n=p(e),r=l(e,null),a=new Map(r.map(({id:e},t)=>[e,t+1]));Se(i,n,r);let o=new Set(t.order),s=t.order.join(`,`),c=S.get(f)===s&&f.childElementCount===t.groups.length;for(let e of t.groups){let t=b.get(e.key);t||(t=ae(),b.set(e.key,t)),se(t,e),c||f.appendChild(t);let n=e.rows.map(e=>e.id).join(`,`),r=re.get(t);if(!r)continue;let i=S.get(r.rows)===n&&r.rows.childElementCount===e.rows.length;for(let t of e.rows){let e=v.get(t.id);e||(e=ie(t.id),v.set(t.id,e)),oe(e,t,a.get(t.id)??null);let n=x.get(e);n&&(i||r.rows.appendChild(n.item))}S.set(r.rows,n)}S.set(f,s);for(let[e,t]of[...b])o.has(e)||(t.remove(),b.delete(e));let d=new Set(be(t));for(let[e,t]of[...v]){if(d.has(e))continue;let n=x.get(t);n&&n.item.remove(),v.delete(e)}let g=t.groups.length>0,_=u.size===0;f.hidden=!g,m.hidden=g,ne(m,_),h.hidden=_,ee.hidden=_,i.hidden=_}function O(e,t){let n=e.card?.dataset.id,r=n?v.get(n):void 0;r&&(t===`flag`?r.dataset.activity=e._activity||``:_(x.get(r)?.refs.glyph))}return te((e,t)=>{let n=v.get(e),r=n?x.get(n):void 0;r&&ve(r.refs.elapsed,g(t))}),{el:t,topBarEl:r,refresh:D,renderActivity:O}}var ke=`clipboard`,Ae=`upload`,je=24,Me=Object.freeze([Object.freeze({id:`esc`,label:`Esc`,bytes:`\x1B`,title:`Send Escape`}),Object.freeze({id:`tab`,label:`Tab`,bytes:` `,title:`Send Tab`}),Object.freeze({id:`left`,label:`←`,bytes:`\x1B[D`,isArrow:!0,title:`Arrow left`}),Object.freeze({id:`up`,label:`↑`,bytes:`\x1B[A`,isArrow:!0,title:`Arrow up`}),Object.freeze({id:`down`,label:`↓`,bytes:`\x1B[B`,isArrow:!0,title:`Arrow down`}),Object.freeze({id:`right`,label:`→`,bytes:`\x1B[C`,isArrow:!0,title:`Arrow right`}),Object.freeze({id:`paste`,label:`Paste`,bytes:null,action:ke,title:`Paste from the clipboard`}),Object.freeze({id:`attach`,label:`Attach`,bytes:null,action:Ae,title:`Upload a photo or file to this session`})]);function Ne(e){let t=Me.find(t=>t.id===e);return t?t.bytes:null}function Pe(e){return!!e&&e.action===ke}function Fe(e){return!!e&&e.action===Ae}function Ie(e,t,n=je){let r=Math.abs(e)>=Math.abs(t),i=r?e:t;return Math.abs(i)<n?null:r?i>0?`right`:`left`:i>0?`down`:`up`}function Le(e,t,n=je){let r=Ie(e,t,n);if(!r)return null;let i=r===`left`||r===`right`,a=i?e:t,o=Math.floor(Math.abs(a)/n),s=Math.sign(a)*o*n;return{arrowKeyId:r,stepCount:o,consumedX:i?s:e,consumedY:i?t:s}}var Re={" ":`\0`,"@":`\0`,"[":`\x1B`,"\\":``,"]":``,"^":``,_:``,"?":``};function ze(e){if(e.length!==1)return null;let t=e.toLowerCase();return t>=`a`&&t<=`z`?String.fromCharCode(t.charCodeAt(0)-96):Re[e]??null}function Be({send:e,getSessionId:t,reportProblem:n}){let r=a(`div`,`phone-key-strip`);r.setAttribute(`role`,`toolbar`),r.setAttribute(`aria-label`,`Terminal keys`);let i=null,o=null,s=a(`button`,`phone-key phone-key-ctrl`,`Ctrl`);s.type=`button`,s.title=`Hold Ctrl for the next key you type`,s.setAttribute(`aria-pressed`,`false`),s.addEventListener(`pointerdown`,e=>e.preventDefault()),s.addEventListener(`click`,()=>l(!c())),r.appendChild(s);function c(){return s.getAttribute(`aria-pressed`)===`true`}function l(e){s.setAttribute(`aria-pressed`,String(e))}function u(){return c()?(l(!1),!0):!1}for(let t of Me){t.id===`left`&&r.appendChild(Ve(e));let n=a(`button`,t.isArrow?`phone-key phone-key-arrow`:`phone-key`,t.label);n.type=`button`,n.dataset.key=t.id,n.title=t.title,t.isArrow&&n.setAttribute(`aria-label`,t.title),n.addEventListener(`pointerdown`,e=>e.preventDefault()),n.addEventListener(`click`,()=>d(t,n)),r.appendChild(n)}function d(t,r){Fe(t)?f(r):Pe(t)?Ue(e,n):e(Ne(t.id))}function f(e){o=e,i||(i=a(`input`,`phone-file-picker`),i.type=`file`,i.hidden=!0,i.addEventListener(`change`,p),r.appendChild(i)),i.click()}function p(){let e=i;if(!e)return;let r=e.files?e.files[0]:null;if(e.value=``,!r)return;let a=t?.();a?m(a,r,o):n(`No session is open to upload to.`)}async function m(e,t,n){n&&(n.disabled=!0),await O(e,t),n&&(n.disabled=!1)}return{element:r,takeHeldControl:u}}function Ve(e){let t=a(`button`,`phone-key phone-arrow-pad`,`Arrows`);t.type=`button`,t.title=`Swipe to send arrow keys`;let n=null,r=null;t.addEventListener(`pointerdown`,e=>{e.preventDefault(),r===null&&(t.setPointerCapture(e.pointerId),r=e.pointerId,n={x:e.clientX,y:e.clientY})}),t.addEventListener(`pointermove`,t=>{if(t.pointerId!==r||!n)return;let i=Le(t.clientX-n.x,t.clientY-n.y);if(i){for(let t=0;t<i.stepCount;t++)e(Ne(i.arrowKeyId));n={x:n.x+i.consumedX,y:n.y+i.consumedY}}});let i=e=>{e.pointerId===r&&(r=null,n=null)};return t.addEventListener(`pointerup`,i),t.addEventListener(`pointercancel`,i),t}var He=`Paste needs clipboard permission.`;function Ue(e,t){let n=null;try{n=navigator.clipboard?.readText?.()}catch{t(He);return}n?n.then(t=>{t&&e(t)}).catch(()=>t(He)):t(`Paste is unavailable in this browser.`)}function We({onBack:n,onShowChanges:s}){let c=a(`div`,`phone-terminal`),l=a(`header`,`phone-topbar phone-terminal-bar`),d=a(`button`,`phone-back`,`‹`);d.type=`button`,d.setAttribute(`aria-label`,`Back to board`),d.addEventListener(`click`,()=>n?.());let f=a(`div`,`phone-terminal-identity`),p=a(`span`,`phone-terminal-name`);p.title=`Double-tap to rename`,p.addEventListener(`dblclick`,()=>he());let m=a(`span`,`session-task-title phone-terminal-title`);ae(m,()=>j());let h=a(`span`,`phone-terminal-badge`);h.innerHTML=`<span class="phone-terminal-glyph" aria-hidden="true"></span><span class="phone-terminal-label"></span><span class="phone-terminal-elapsed" aria-hidden="true"></span>`;let _=i(h,`.phone-terminal-glyph`,`span`),te=i(h,`.phone-terminal-label`,`span`),ne=i(h,`.phone-terminal-elapsed`,`span`);te.before(p),f.append(m,h);let y=a(`button`,`phone-changes`);y.append(oe(re)),y.type=`button`,y.title=`Show this session's code changes`,y.setAttribute(`aria-label`,`Show this session's code changes`),y.addEventListener(`click`,()=>s?.());let x=a(`div`,`phone-terminal-actions`);l.append(d,f,y,x);let C=a(`div`,`phone-card-slot`),w=a(`div`,`phone-empty`);w.innerHTML=`<p class="phone-empty-title">No session selected</p><p class="phone-empty-desc">Select a session from the board to watch it here.</p>`;let T=S(`phone-key-status m-0 px-3 py-1`),{element:ce,takeHeldControl:le}=Be({send:ue,getSessionId:()=>O,reportProblem:e=>T.show(`error`,e)});c.append(l,C,w,T.element,ce);let O=null,k=null,A=null;function ue(t){let n=O?u.get(O):null;n&&(Ce(n,t)?T.clear():T.show(`error`,e))}function pe(){let e=O?u.get(O):null;e?.term&&e.term.focus()}C.addEventListener(`click`,pe);function me(e){let t=ze(e);return!t||!le()?!1:(ue(t),!0)}C.addEventListener(`keydown`,e=>{e.ctrlKey||e.metaKey||e.altKey||me(e.key)&&(e.preventDefault(),e.stopPropagation())},!0),C.addEventListener(`input`,e=>{e instanceof InputEvent&&e.data&&me(e.data.slice(-1))&&(e.stopPropagation(),(O?u.get(O):null)?._resetSoftKeyboardBuffer?.())},!0);function he(){let e=O?u.get(O):null;e&&O&&de(e,O,{returnsFocusToTerminal:!1})}function j(){let e=O?u.get(O):null;e&&O&&ie(e,O)}function M(){let e=O?u.get(O):null,n=!!e;if(w.hidden=n,C.hidden=!n,ce.hidden=!n,f.hidden=!n,y.hidden=!n,!n){l.removeAttribute(`data-state`),l.removeAttribute(`data-monitoring`),l.removeAttribute(`data-prompt`);return}let r=e.currentState||t.DORMANT;Te(l,{glyph:_,label:te},r,e.awaitingBackgroundTasks,e.pendingPromptKind);let i=e.card?.dataset.session||O;b(p)||(p.textContent=i),m.dataset.sessionName=i??``,fe(m,e.taskTitle),ne.textContent=g(e)}function ge(){A&&=(delete A.renameTargetEl,delete A.titleTargetEl,null),p.replaceChildren(),k&&=(r(k),k.parentElement===x&&k.remove(),null)}function _e(e){let t=u.get(e);t&&(O===e&&D()===e&&t.card.parentElement===C||(ge(),O=e,v(t,e,C,{className:`phone-centered`}),k=i(t.card,`.session-actions`,`div`),o(k,x),t.renameTargetEl=p,t.titleTargetEl=m,A=t),M())}function ve(){ge(),D()===O&&xe(),O=null,M()}function ye(){if(!O){M();return}let e=u.get(O);e?e.card.parentElement===C?M():(_e(O),c.hidden||E(e,O,!0)):ve()}function be(){let e=O;e&&E(u.get(e),e,!1)}function Se(){ye();let e=O;if(!e)return;let t=u.get(e);t&&(E(t,e,!0),se(e))}return ee(()=>{let e=O?u.get(O):null;e&&(ne.textContent=g(e))}),M(),{el:c,show:_e,clear:ve,refresh:ye,reveal:Se,unview:be,getSessionId:()=>O}}var N=`board`,P=`terminal`,Ge=`changes`,Ke=Object.freeze({[Ge]:P}),qe=Object.freeze([{id:N,label:`Focus`,glyph:`▤`},{id:P,label:`Terminal`,glyph:`▸`}]),F=[],Je=new Map,I=null,Ye=new Map,L=new Map,Xe=new Map,R=null,z=null,Ze=null,B=null,V=null,H=null,U=new Map,W=new Set,G={},K=!1,Qe=!1,$e=120,q=0,et=0,J=0,Y=null;function tt(){q=0,et=0}function nt(){let e=window.visualViewport;I&&(!K||!e?I.removeAttribute(`data-keyboard`):(I.style.setProperty(`--phone-vh`,`${e.height}px`),I.style.setProperty(`--phone-vv-top`,`${e.offsetTop}px`),e.width!==et&&(et=e.width,q=0),q=Math.max(q,e.height),q-e.height>$e?I.dataset.keyboard=`open`:I.removeAttribute(`data-keyboard`)))}function rt(e,t,n=`phone-nav-item`,r=`phone-nav-dot`){let i=a(`button`,n);i.type=`button`;let o=a(`span`,`phone-nav-glyph`,t);o.setAttribute(`aria-hidden`,`true`),i.append(o,a(`span`,`phone-nav-label`,e));let s=a(`span`,r);return s.setAttribute(`aria-hidden`,`true`),s.hidden=!0,i.appendChild(s),i}function it(e){return e?.querySelector(`.phone-nav-dot`)||null}function at(e,t){e&&(e.hidden=!t,typeof t==`string`&&(e.dataset.attention=t),typeof t!=`string`&&delete e.dataset.attention)}function ot(){let e=[];for(let t of F){if(W.has(t.id))continue;let n=Xe.get(t.id)||!1;e.push(n),at(it(U.get(t.id)),n)}at(it(V),m(e))}function st(){let e=a(`div`,`phone-nav-more-menu`);e.hidden=!0;for(let t of F){let n=rt(t.label,t.glyph,`phone-nav-menu-item`,`phone-nav-dot phone-nav-menu-dot`);n.dataset.screen=t.id,n.hidden=W.has(t.id),n.addEventListener(`click`,()=>{X(!1),$(t.id)}),U.set(t.id,n),e.appendChild(n)}return e}function X(e){H&&V&&(H.hidden=!e,V.setAttribute(`aria-expanded`,String(e)))}function ct(){return!!H&&!H.hidden}function lt(){let e=a(`nav`,`phone-nav`);e.setAttribute(`aria-label`,`Screens`);for(let t of qe){let n=rt(t.label,t.glyph);n.dataset.screen=t.id,n.addEventListener(`click`,()=>$(t.id)),Ye.set(t.id,n),e.appendChild(n)}return V=rt(`More`,`⋯`),V.setAttribute(`aria-expanded`,`false`),V.addEventListener(`click`,()=>X(!ct())),e.appendChild(V),H=st(),e.appendChild(H),e}function ut(e,t,n){let r=a(`section`,`phone-screen`);return r.dataset.screen=e,r.setAttribute(`aria-label`,t),r.hidden=!0,n&&r.appendChild(n),L.set(e,r),r}function dt(){if(I)return;R=Oe({onSelectSession:pt}),h((e,t)=>{K&&R?.renderActivity(e,t)}),z=We({onBack:()=>$(N),onShowChanges:()=>$(Ge)}),Ze=a(`div`,`phone-review`);let e=a(`div`,`phone-screens`),t={[N]:R.el,[P]:z.el};for(let n of qe)e.appendChild(ut(n.id,n.label,t[n.id]));e.appendChild(ut(Ge,`Changes`,ft(Ze)));for(let t of F){let n=a(`div`,`phone-panel phone-${t.id}`);Je.set(t.id,n),e.appendChild(ut(t.id,t.label,n))}I=a(`div`,`phone-shell`),I.id=`phone-shell`,I.append(e,lt()),document.body.appendChild(I),ot(),window.visualViewport?.addEventListener(`resize`,nt),window.visualViewport?.addEventListener(`scroll`,nt),window.addEventListener(`popstate`,xt),document.addEventListener(`click`,e=>{ct()&&H&&V&&e.target instanceof Node&&(H.contains(e.target)||V.contains(e.target)||X(!1))}),document.addEventListener(`keydown`,e=>{e.key===`Escape`&&ct()&&X(!1)})}function ft(e){let t=a(`div`,`phone-changes-screen`),n=a(`header`,`phone-topbar phone-changes-bar`),r=a(`button`,`phone-back`,`‹`);return r.type=`button`,r.setAttribute(`aria-label`,`Back to terminal`),r.addEventListener(`click`,()=>$(P)),B=a(`span`,`phone-changes-session`),n.append(r,a(`span`,`phone-changes-title`,`Changes`),B),t.append(n,e),t}function pt(e){if(u.has(e)){if(!R||!z)throw Error(`Phone shell is not built`);_e(e,`dormant-fallback`),A(e),z.show(e),$(P)}}function mt(e){return Ke[e]??e}function ht(e,t){return t?{glimmervoidScreen:e,glimmervoidNested:!0}:{glimmervoidScreen:mt(e)}}function gt(e){let t=e?.glimmervoidScreen;return typeof t==`string`?t:null}function _t(e){return gt(e)?e.glimmervoidNested===!0?2:1:0}function vt(e){return e===N?0:Ke[e]||G.canGoBack?.(e)?2:1}function yt(e,t){let n=t?e:mt(e);return gt(history.state)===n&&_t(history.state)===(t?2:1)}function Z(){if(!K||Y!==null)return;let e=j.snapshot().phoneScreen||N,t=vt(e);if(J>t){Y=location.href,history.go(t-J),J=t;return}let n=J===2;J>0&&!yt(e,n)&&history.replaceState(ht(e,n),``),J===0&&t>0&&(history.pushState(ht(e,!1),``),J=1),J===1&&t===2&&(history.pushState(ht(e,!0),``),J=2)}function bt(){let e=gt(history.state);return e&&Q(e)?(J=_t(history.state),e):(e&&history.replaceState(null,``),J=0,N)}function xt(e){if(!K)return;if(Y!==null){history.replaceState(history.state,``,Y),Y=null,Z();return}let t=gt(e.state),n=t&&Q(t)?t:N;J=_t(e.state);let r=j.snapshot().phoneScreen;J<2&&n===r&&G.canGoBack?.(r)&&G.onBack?.(r),Ct(n),Z()}function St(e,t){for(let[n,r]of e)n===t?r.setAttribute(`aria-current`,`page`):r.removeAttribute(`aria-current`)}function Ct(e){if(!V||!z)throw Error(`Phone shell is not built`);j.dispatch(`setPhoneScreen`,e),X(!1),wt();for(let[t,n]of L)n.hidden=t!==e;e===N&&Qe&&(Qe=!1,R?.refresh()),G.onScreenShown?.(e),St(Ye,mt(e));let t=U.has(e);t&&V.setAttribute(`aria-current`,`page`),t||V.removeAttribute(`aria-current`),St(U,e),e===P?z.reveal():z.unview()}function Q(e){return L.has(e)&&!W.has(e)}function wt(){if(!B||!z)return;let e=z.getSessionId(),t=e?u.get(e):null,n=t?s(t):``;B.textContent=n,B.title=n}function $(e){I&&Q(e)&&(Ct(e),Z())}function Tt(e){F.sort((t,n)=>e.indexOf(t.id)-e.indexOf(n.id)),H?.append(...F.flatMap(e=>U.get(e.id)??[]))}function Et(e){G=e||{},F=G.panels||[]}function Dt({sessionId:e,linkedScreenId:t}={}){if(K)return;if(dt(),!I||!R||!z)throw Error(`Phone shell is not built`);K=!0,I.hidden=!1;for(let e of G.headerControls||[])o(e,R.topBarEl);x(Ze);for(let e of F)o(e.el,Je.get(e.id)),e.el.hidden=!1;nt(),e&&z.show(e);let n=bt();Mt(),t&&Q(t)?$(t):e&&n===N?$(P):(Ct(n),Z())}function Ot(){if(K){if(!I||!z)throw Error(`Phone shell is not built`);K=!1,z.clear(),x(null);for(let e of F)r(e.el);for(let e of G.headerControls||[])r(e);X(!1),I.hidden=!0,I.removeAttribute(`data-keyboard`),tt(),J>0&&history.go(-J),J=0,Y=null}}function kt(e){return!K||!R||!z||!u.has(e)?!1:(pt(e),pe(e))}function At(){return K}function jt(){return K&&z?z.getSessionId():null}function Mt(){if(!K)return;if(!R||!z)throw Error(`Phone shell is not built`);Lt();let e=mt(j.snapshot().phoneScreen||N);Qe=e!==N,Qe||R.refresh(),z.refresh(),wt(),e===P&&!z.getSessionId()&&$(N);let t=it(Ye.get(N));t&&(t.hidden=d(f.counts)===0)}function Nt(e){return K?(pt(e),!0):!1}function Pt(e){return!K||!Q(e)?!1:($(e),!0)}function Ft(e,t){t&&W.delete(e),t||W.add(e);let n=U.get(e);n&&(n.hidden=!t);let r=L.get(e);r&&!t&&(r.hidden=!0),ot(),!t&&K&&j.snapshot().phoneScreen===e&&$(N)}function It(e,t){Xe.set(e,typeof t==`string`&&t?t:t===!0),ot()}function Lt(){if(!z)throw Error(`Phone shell is not built`);if(z.getSessionId())return;let e=me();e&&(z.show(e),A(e,{rememberFocus:!1}))}export{Dt as activatePhoneShell,Ot as deactivatePhoneShell,jt as getPhoneSessionId,At as isPhoneShellActive,Et as mountPhoneShell,Tt as orderPhonePanels,Mt as refreshPhoneBoard,It as setPhoneScreenAttention,Ft as setPhoneScreenAvailable,kt as showPhonePlan,Pt as showPhoneScreen,Nt as showPhoneSession,Z as syncPhoneHistory};
|
|
1
|
+
import{n as e}from"./updates-view-core-B_e7uWeW.js";import{E as t,f as n,g as r,h as i,o as a,t as o}from"./dom-helpers-C7P3_59O.js";import{a as s,g as c,h as l,o as u,p as d,t as f,u as p,v as m}from"./card-registry-DsAFY_8B.js";import{a as h,n as ee,r as g,s as _,t as te}from"./session-tick-XGyxrRw7.js";import{$i as v,$r as ne,Cr as y,Dr as b,Gn as x,Hr as re,Ir as S,Mr as ie,Or as ae,Sr as C,Tr as w,Ur as oe,an as T,cn as se,dn as E,dr as ce,ea as D,en as le,fn as O,fr as k,hr as A,in as ue,jr as de,kr as fe,ln as pe,lr as me,mr as he,na as j,nn as M,on as ge,pr as _e,qr as ve,rn as ye,sn as be,ta as xe,tn as Se,un as Ce,vr as we,wr as Te,yr as Ee}from"./index-DkVH8Ze_.js";var De=e=>e.ui.path;function Oe({onSelectSession:e}){let t=a(`div`,`phone-board`),r=a(`header`,`phone-topbar`),i=le({onJump:()=>{M(i);let e=l(E(),null)[0]?.id;e&&s(e)},rowFor:e=>v.get(e)}),o=null;function s(e){o=e,v.get(e)?.scrollIntoView({block:`nearest`}),ye(i,e,()=>{o===e&&d(e)})}function d(t){o=null,e?.(t)}let f=a(`div`,`phone-board-list`),m=a(`div`,`phone-empty`),h=a(`p`,`phone-empty-title`,`No sessions`),ee=a(`p`,`phone-empty-desc`,`Spawn a session to start watching.`);m.append(h,ee),t.append(r,f,m,i);let v=new Map,b=new Map,x=new WeakMap,re=new WeakMap,S=new WeakMap;n(r);function ie(e){let{row:t,refs:n}=C(`button`);t.type=`button`,t.dataset.id=e,t.addEventListener(`click`,()=>d(e));let{item:r}=w(t,()=>he(e));return r.setAttribute(`role`,`listitem`),x.set(t,{refs:n,item:r}),t}function ae(){let e=a(`section`,`phone-board-group`),t=ue({onAdd:ce,onForget:e=>{Ee(e),D()}}),n=a(`div`,`phone-board-group-rows`);return n.setAttribute(`role`,`list`),e.append(t.header,n),re.set(e,{...t,rows:n}),e}function oe(e,t,n){let r=x.get(e);if(!r)return;let{ui:i,state:a,name:o}=t;y(e,r.refs,{ui:i,state:a,name:o,mergeStatus:i.card?.dataset.merge||``,attentionPosition:n})}function se(e,t){let n=re.get(e);n&&(T(n,t,`Board`),n.rows.setAttribute(`aria-label`,`${t.label} sessions`))}function E(){return c(k())}function D(){let e=E(),t=ge(e,De,we(e,De)),n=p(e),r=l(e,null),a=new Map(r.map(({id:e},t)=>[e,t+1]));Se(i,n,r);let o=new Set(t.order),s=t.order.join(`,`),c=S.get(f)===s&&f.childElementCount===t.groups.length;for(let e of t.groups){let t=b.get(e.key);t||(t=ae(),b.set(e.key,t)),se(t,e),c||f.appendChild(t);let n=e.rows.map(e=>e.id).join(`,`),r=re.get(t);if(!r)continue;let i=S.get(r.rows)===n&&r.rows.childElementCount===e.rows.length;for(let t of e.rows){let e=v.get(t.id);e||(e=ie(t.id),v.set(t.id,e)),oe(e,t,a.get(t.id)??null);let n=x.get(e);n&&(i||r.rows.appendChild(n.item))}S.set(r.rows,n)}S.set(f,s);for(let[e,t]of[...b])o.has(e)||(t.remove(),b.delete(e));let d=new Set(be(t));for(let[e,t]of[...v]){if(d.has(e))continue;let n=x.get(t);n&&n.item.remove(),v.delete(e)}let g=t.groups.length>0,_=u.size===0;f.hidden=!g,m.hidden=g,ne(m,_),h.hidden=_,ee.hidden=_,i.hidden=_}function O(e,t){let n=e.card?.dataset.id,r=n?v.get(n):void 0;r&&(t===`flag`?r.dataset.activity=e._activity||``:_(x.get(r)?.refs.glyph))}return te((e,t)=>{let n=v.get(e),r=n?x.get(n):void 0;r&&ve(r.refs.elapsed,g(t))}),{el:t,topBarEl:r,refresh:D,renderActivity:O}}var ke=`clipboard`,Ae=`upload`,je=24,Me=Object.freeze([Object.freeze({id:`esc`,label:`Esc`,bytes:`\x1B`,title:`Send Escape`}),Object.freeze({id:`tab`,label:`Tab`,bytes:` `,title:`Send Tab`}),Object.freeze({id:`left`,label:`←`,bytes:`\x1B[D`,isArrow:!0,title:`Arrow left`}),Object.freeze({id:`up`,label:`↑`,bytes:`\x1B[A`,isArrow:!0,title:`Arrow up`}),Object.freeze({id:`down`,label:`↓`,bytes:`\x1B[B`,isArrow:!0,title:`Arrow down`}),Object.freeze({id:`right`,label:`→`,bytes:`\x1B[C`,isArrow:!0,title:`Arrow right`}),Object.freeze({id:`paste`,label:`Paste`,bytes:null,action:ke,title:`Paste from the clipboard`}),Object.freeze({id:`attach`,label:`Attach`,bytes:null,action:Ae,title:`Upload a photo or file to this session`})]);function Ne(e){let t=Me.find(t=>t.id===e);return t?t.bytes:null}function Pe(e){return!!e&&e.action===ke}function Fe(e){return!!e&&e.action===Ae}function Ie(e,t,n=je){let r=Math.abs(e)>=Math.abs(t),i=r?e:t;return Math.abs(i)<n?null:r?i>0?`right`:`left`:i>0?`down`:`up`}function Le(e,t,n=je){let r=Ie(e,t,n);if(!r)return null;let i=r===`left`||r===`right`,a=i?e:t,o=Math.floor(Math.abs(a)/n),s=Math.sign(a)*o*n;return{arrowKeyId:r,stepCount:o,consumedX:i?s:e,consumedY:i?t:s}}var Re={" ":`\0`,"@":`\0`,"[":`\x1B`,"\\":``,"]":``,"^":``,_:``,"?":``};function ze(e){if(e.length!==1)return null;let t=e.toLowerCase();return t>=`a`&&t<=`z`?String.fromCharCode(t.charCodeAt(0)-96):Re[e]??null}function Be({send:e,getSessionId:t,reportProblem:n}){let r=a(`div`,`phone-key-strip`);r.setAttribute(`role`,`toolbar`),r.setAttribute(`aria-label`,`Terminal keys`);let i=null,o=null,s=a(`button`,`phone-key phone-key-ctrl`,`Ctrl`);s.type=`button`,s.title=`Hold Ctrl for the next key you type`,s.setAttribute(`aria-pressed`,`false`),s.addEventListener(`pointerdown`,e=>e.preventDefault()),s.addEventListener(`click`,()=>l(!c())),r.appendChild(s);function c(){return s.getAttribute(`aria-pressed`)===`true`}function l(e){s.setAttribute(`aria-pressed`,String(e))}function u(){return c()?(l(!1),!0):!1}for(let t of Me){t.id===`left`&&r.appendChild(Ve(e));let n=a(`button`,t.isArrow?`phone-key phone-key-arrow`:`phone-key`,t.label);n.type=`button`,n.dataset.key=t.id,n.title=t.title,t.isArrow&&n.setAttribute(`aria-label`,t.title),n.addEventListener(`pointerdown`,e=>e.preventDefault()),n.addEventListener(`click`,()=>d(t,n)),r.appendChild(n)}function d(t,r){Fe(t)?f(r):Pe(t)?Ue(e,n):e(Ne(t.id))}function f(e){o=e,i||(i=a(`input`,`phone-file-picker`),i.type=`file`,i.hidden=!0,i.addEventListener(`change`,p),r.appendChild(i)),i.click()}function p(){let e=i;if(!e)return;let r=e.files?e.files[0]:null;if(e.value=``,!r)return;let a=t?.();a?m(a,r,o):n(`No session is open to upload to.`)}async function m(e,t,n){n&&(n.disabled=!0),await O(e,t),n&&(n.disabled=!1)}return{element:r,takeHeldControl:u}}function Ve(e){let t=a(`button`,`phone-key phone-arrow-pad`,`Arrows`);t.type=`button`,t.title=`Swipe to send arrow keys`;let n=null,r=null;t.addEventListener(`pointerdown`,e=>{e.preventDefault(),r===null&&(t.setPointerCapture(e.pointerId),r=e.pointerId,n={x:e.clientX,y:e.clientY})}),t.addEventListener(`pointermove`,t=>{if(t.pointerId!==r||!n)return;let i=Le(t.clientX-n.x,t.clientY-n.y);if(i){for(let t=0;t<i.stepCount;t++)e(Ne(i.arrowKeyId));n={x:n.x+i.consumedX,y:n.y+i.consumedY}}});let i=e=>{e.pointerId===r&&(r=null,n=null)};return t.addEventListener(`pointerup`,i),t.addEventListener(`pointercancel`,i),t}var He=`Paste needs clipboard permission.`;function Ue(e,t){let n=null;try{n=navigator.clipboard?.readText?.()}catch{t(He);return}n?n.then(t=>{t&&e(t)}).catch(()=>t(He)):t(`Paste is unavailable in this browser.`)}function We({onBack:n,onShowChanges:s}){let c=a(`div`,`phone-terminal`),l=a(`header`,`phone-topbar phone-terminal-bar`),d=a(`button`,`phone-back`,`‹`);d.type=`button`,d.setAttribute(`aria-label`,`Back to board`),d.addEventListener(`click`,()=>n?.());let f=a(`div`,`phone-terminal-identity`),p=a(`span`,`phone-terminal-name`);p.title=`Double-tap to rename`,p.addEventListener(`dblclick`,()=>he());let m=a(`span`,`session-task-title phone-terminal-title`);ae(m,()=>j());let h=a(`span`,`phone-terminal-badge`);h.innerHTML=`<span class="phone-terminal-glyph" aria-hidden="true"></span><span class="phone-terminal-label"></span><span class="phone-terminal-elapsed" aria-hidden="true"></span>`;let _=i(h,`.phone-terminal-glyph`,`span`),te=i(h,`.phone-terminal-label`,`span`),ne=i(h,`.phone-terminal-elapsed`,`span`);te.before(p),f.append(m,h);let y=a(`button`,`phone-changes`);y.append(oe(re)),y.type=`button`,y.title=`Show this session's code changes`,y.setAttribute(`aria-label`,`Show this session's code changes`),y.addEventListener(`click`,()=>s?.());let x=a(`div`,`phone-terminal-actions`);l.append(d,f,y,x);let C=a(`div`,`phone-card-slot`),w=a(`div`,`phone-empty`);w.innerHTML=`<p class="phone-empty-title">No session selected</p><p class="phone-empty-desc">Select a session from the board to watch it here.</p>`;let T=S(`phone-key-status m-0 px-3 py-1`),{element:ce,takeHeldControl:le}=Be({send:ue,getSessionId:()=>O,reportProblem:e=>T.show(`error`,e)});c.append(l,C,w,T.element,ce);let O=null,k=null,A=null;function ue(t){let n=O?u.get(O):null;n&&(Ce(n,t)?T.clear():T.show(`error`,e))}function pe(){let e=O?u.get(O):null;e?.term&&e.term.focus()}C.addEventListener(`click`,pe);function me(e){let t=ze(e);return!t||!le()?!1:(ue(t),!0)}C.addEventListener(`keydown`,e=>{e.ctrlKey||e.metaKey||e.altKey||me(e.key)&&(e.preventDefault(),e.stopPropagation())},!0),C.addEventListener(`input`,e=>{e instanceof InputEvent&&e.data&&me(e.data.slice(-1))&&(e.stopPropagation(),(O?u.get(O):null)?._resetSoftKeyboardBuffer?.())},!0);function he(){let e=O?u.get(O):null;e&&O&&de(e,O,{returnsFocusToTerminal:!1})}function j(){let e=O?u.get(O):null;e&&O&&ie(e,O)}function M(){let e=O?u.get(O):null,n=!!e;if(w.hidden=n,C.hidden=!n,ce.hidden=!n,f.hidden=!n,y.hidden=!n,!n){l.removeAttribute(`data-state`),l.removeAttribute(`data-monitoring`),l.removeAttribute(`data-prompt`);return}let r=e.currentState||t.DORMANT;Te(l,{glyph:_,label:te},r,e.awaitingBackgroundTasks,e.pendingPromptKind);let i=e.card?.dataset.session||O;b(p)||(p.textContent=i),m.dataset.sessionName=i??``,fe(m,e.taskTitle),ne.textContent=g(e)}function ge(){A&&=(delete A.renameTargetEl,delete A.titleTargetEl,null),p.replaceChildren(),k&&=(r(k),k.parentElement===x&&k.remove(),null)}function _e(e){let t=u.get(e);t&&(O===e&&D()===e&&t.card.parentElement===C||(ge(),O=e,v(t,e,C,{className:`phone-centered`}),k=i(t.card,`.session-actions`,`div`),o(k,x),t.renameTargetEl=p,t.titleTargetEl=m,A=t),M())}function ve(){ge(),D()===O&&xe(),O=null,M()}function ye(){if(!O){M();return}let e=u.get(O);e?e.card.parentElement===C?M():(_e(O),c.hidden||E(e,O,!0)):ve()}function be(){let e=O;e&&E(u.get(e),e,!1)}function Se(){ye();let e=O;if(!e)return;let t=u.get(e);t&&(E(t,e,!0),se(e))}return ee(()=>{let e=O?u.get(O):null;e&&(ne.textContent=g(e))}),M(),{el:c,show:_e,clear:ve,refresh:ye,reveal:Se,unview:be,getSessionId:()=>O}}var N=`board`,P=`terminal`,Ge=`changes`,Ke=Object.freeze({[Ge]:P}),qe=Object.freeze([{id:N,label:`Focus`,glyph:`▤`},{id:P,label:`Terminal`,glyph:`▸`}]),F=[],Je=new Map,I=null,Ye=new Map,L=new Map,Xe=new Map,R=null,z=null,Ze=null,B=null,V=null,H=null,U=new Map,W=new Set,G={},K=!1,Qe=!1,$e=120,q=0,et=0,J=0,Y=null;function tt(){q=0,et=0}function nt(){let e=window.visualViewport;I&&(!K||!e?I.removeAttribute(`data-keyboard`):(I.style.setProperty(`--phone-vh`,`${e.height}px`),I.style.setProperty(`--phone-vv-top`,`${e.offsetTop}px`),e.width!==et&&(et=e.width,q=0),q=Math.max(q,e.height),q-e.height>$e?I.dataset.keyboard=`open`:I.removeAttribute(`data-keyboard`)))}function rt(e,t,n=`phone-nav-item`,r=`phone-nav-dot`){let i=a(`button`,n);i.type=`button`;let o=a(`span`,`phone-nav-glyph`,t);o.setAttribute(`aria-hidden`,`true`),i.append(o,a(`span`,`phone-nav-label`,e));let s=a(`span`,r);return s.setAttribute(`aria-hidden`,`true`),s.hidden=!0,i.appendChild(s),i}function it(e){return e?.querySelector(`.phone-nav-dot`)||null}function at(e,t){e&&(e.hidden=!t,typeof t==`string`&&(e.dataset.attention=t),typeof t!=`string`&&delete e.dataset.attention)}function ot(){let e=[];for(let t of F){if(W.has(t.id))continue;let n=Xe.get(t.id)||!1;e.push(n),at(it(U.get(t.id)),n)}at(it(V),m(e))}function st(){let e=a(`div`,`phone-nav-more-menu`);e.hidden=!0;for(let t of F){let n=rt(t.label,t.glyph,`phone-nav-menu-item`,`phone-nav-dot phone-nav-menu-dot`);n.dataset.screen=t.id,n.hidden=W.has(t.id),n.addEventListener(`click`,()=>{X(!1),$(t.id)}),U.set(t.id,n),e.appendChild(n)}return e}function X(e){H&&V&&(H.hidden=!e,V.setAttribute(`aria-expanded`,String(e)))}function ct(){return!!H&&!H.hidden}function lt(){let e=a(`nav`,`phone-nav`);e.setAttribute(`aria-label`,`Screens`);for(let t of qe){let n=rt(t.label,t.glyph);n.dataset.screen=t.id,n.addEventListener(`click`,()=>$(t.id)),Ye.set(t.id,n),e.appendChild(n)}return V=rt(`More`,`⋯`),V.setAttribute(`aria-expanded`,`false`),V.addEventListener(`click`,()=>X(!ct())),e.appendChild(V),H=st(),e.appendChild(H),e}function ut(e,t,n){let r=a(`section`,`phone-screen`);return r.dataset.screen=e,r.setAttribute(`aria-label`,t),r.hidden=!0,n&&r.appendChild(n),L.set(e,r),r}function dt(){if(I)return;R=Oe({onSelectSession:pt}),h((e,t)=>{K&&R?.renderActivity(e,t)}),z=We({onBack:()=>$(N),onShowChanges:()=>$(Ge)}),Ze=a(`div`,`phone-review`);let e=a(`div`,`phone-screens`),t={[N]:R.el,[P]:z.el};for(let n of qe)e.appendChild(ut(n.id,n.label,t[n.id]));e.appendChild(ut(Ge,`Changes`,ft(Ze)));for(let t of F){let n=a(`div`,`phone-panel phone-${t.id}`);Je.set(t.id,n),e.appendChild(ut(t.id,t.label,n))}I=a(`div`,`phone-shell`),I.id=`phone-shell`,I.append(e,lt()),document.body.appendChild(I),ot(),window.visualViewport?.addEventListener(`resize`,nt),window.visualViewport?.addEventListener(`scroll`,nt),window.addEventListener(`popstate`,xt),document.addEventListener(`click`,e=>{ct()&&H&&V&&e.target instanceof Node&&(H.contains(e.target)||V.contains(e.target)||X(!1))}),document.addEventListener(`keydown`,e=>{e.key===`Escape`&&ct()&&X(!1)})}function ft(e){let t=a(`div`,`phone-changes-screen`),n=a(`header`,`phone-topbar phone-changes-bar`),r=a(`button`,`phone-back`,`‹`);return r.type=`button`,r.setAttribute(`aria-label`,`Back to terminal`),r.addEventListener(`click`,()=>$(P)),B=a(`span`,`phone-changes-session`),n.append(r,a(`span`,`phone-changes-title`,`Changes`),B),t.append(n,e),t}function pt(e){if(u.has(e)){if(!R||!z)throw Error(`Phone shell is not built`);_e(e,`dormant-fallback`),A(e),z.show(e),$(P)}}function mt(e){return Ke[e]??e}function ht(e,t){return t?{glimmervoidScreen:e,glimmervoidNested:!0}:{glimmervoidScreen:mt(e)}}function gt(e){let t=e?.glimmervoidScreen;return typeof t==`string`?t:null}function _t(e){return gt(e)?e.glimmervoidNested===!0?2:1:0}function vt(e){return e===N?0:Ke[e]||G.canGoBack?.(e)?2:1}function yt(e,t){let n=t?e:mt(e);return gt(history.state)===n&&_t(history.state)===(t?2:1)}function Z(){if(!K||Y!==null)return;let e=j.snapshot().phoneScreen||N,t=vt(e);if(J>t){Y=location.href,history.go(t-J),J=t;return}let n=J===2;J>0&&!yt(e,n)&&history.replaceState(ht(e,n),``),J===0&&t>0&&(history.pushState(ht(e,!1),``),J=1),J===1&&t===2&&(history.pushState(ht(e,!0),``),J=2)}function bt(){let e=gt(history.state);return e&&Q(e)?(J=_t(history.state),e):(e&&history.replaceState(null,``),J=0,N)}function xt(e){if(!K)return;if(Y!==null){history.replaceState(history.state,``,Y),Y=null,Z();return}let t=gt(e.state),n=t&&Q(t)?t:N;J=_t(e.state);let r=j.snapshot().phoneScreen;J<2&&n===r&&G.canGoBack?.(r)&&G.onBack?.(r),Ct(n),Z()}function St(e,t){for(let[n,r]of e)n===t?r.setAttribute(`aria-current`,`page`):r.removeAttribute(`aria-current`)}function Ct(e){if(!V||!z)throw Error(`Phone shell is not built`);j.dispatch(`setPhoneScreen`,e),X(!1),wt();for(let[t,n]of L)n.hidden=t!==e;e===N&&Qe&&(Qe=!1,R?.refresh()),G.onScreenShown?.(e),St(Ye,mt(e));let t=U.has(e);t&&V.setAttribute(`aria-current`,`page`),t||V.removeAttribute(`aria-current`),St(U,e),e===P?z.reveal():z.unview()}function Q(e){return L.has(e)&&!W.has(e)}function wt(){if(!B||!z)return;let e=z.getSessionId(),t=e?u.get(e):null,n=t?s(t):``;B.textContent=n,B.title=n}function $(e){I&&Q(e)&&(Ct(e),Z())}function Tt(e){F.sort((t,n)=>e.indexOf(t.id)-e.indexOf(n.id)),H?.append(...F.flatMap(e=>U.get(e.id)??[]))}function Et(e){G=e||{},F=G.panels||[]}function Dt({sessionId:e,linkedScreenId:t}={}){if(K)return;if(dt(),!I||!R||!z)throw Error(`Phone shell is not built`);K=!0,I.hidden=!1;for(let e of G.headerControls||[])o(e,R.topBarEl);x(Ze);for(let e of F)o(e.el,Je.get(e.id)),e.el.hidden=!1;nt(),e&&z.show(e);let n=bt();Mt(),t&&Q(t)?$(t):e&&n===N?$(P):(Ct(n),Z())}function Ot(){if(K){if(!I||!z)throw Error(`Phone shell is not built`);K=!1,z.clear(),x(null);for(let e of F)r(e.el);for(let e of G.headerControls||[])r(e);X(!1),I.hidden=!0,I.removeAttribute(`data-keyboard`),tt(),J>0&&history.go(-J),J=0,Y=null}}function kt(e){return!K||!R||!z||!u.has(e)?!1:(pt(e),pe(e))}function At(){return K}function jt(){return K&&z?z.getSessionId():null}function Mt(){if(!K)return;if(!R||!z)throw Error(`Phone shell is not built`);Lt();let e=mt(j.snapshot().phoneScreen||N);Qe=e!==N,Qe||R.refresh(),z.refresh(),wt(),e===P&&!z.getSessionId()&&$(N);let t=it(Ye.get(N));t&&(t.hidden=d(f.counts)===0)}function Nt(e){return K?(pt(e),!0):!1}function Pt(e){return!K||!Q(e)?!1:($(e),!0)}function Ft(e,t){t&&W.delete(e),t||W.add(e);let n=U.get(e);n&&(n.hidden=!t);let r=L.get(e);r&&!t&&(r.hidden=!0),ot(),!t&&K&&j.snapshot().phoneScreen===e&&$(N)}function It(e,t){Xe.set(e,typeof t==`string`&&t?t:t===!0),ot()}function Lt(){if(!z)throw Error(`Phone shell is not built`);if(z.getSessionId())return;let e=me();e&&(z.show(e),A(e,{rememberFocus:!1}))}export{Dt as activatePhoneShell,Ot as deactivatePhoneShell,jt as getPhoneSessionId,At as isPhoneShellActive,Et as mountPhoneShell,Tt as orderPhonePanels,Mt as refreshPhoneBoard,It as setPhoneScreenAttention,Ft as setPhoneScreenAvailable,kt as showPhonePlan,Pt as showPhoneScreen,Nt as showPhoneSession,Z as syncPhoneHistory};
|
|
Binary file
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{n as e,wt as t}from"./updates-view-core-B_e7uWeW.js";import{o as n}from"./dom-helpers-C7P3_59O.js";import{o as r}from"./modal-Bh-cVr-I.js";import{$n as i,Nr as a,Qn as o,ar as s,er as c,ir as l,na as u,nr as ee,rr as te,tr as ne}from"./index-
|
|
1
|
+
import{n as e,wt as t}from"./updates-view-core-B_e7uWeW.js";import{o as n}from"./dom-helpers-C7P3_59O.js";import{o as r}from"./modal-Bh-cVr-I.js";import{$n as i,Nr as a,Qn as o,ar as s,er as c,ir as l,na as u,nr as ee,rr as te,tr as ne}from"./index-DkVH8Ze_.js";import{a as re,i as ie,n as ae,r as oe,t as se}from"./plan-render-CzDoSIwQ.js";var d=2e3,f=3;function ce(e){return e.replace(/\r\n?/g,`
|
|
2
2
|
`).split(`
|
|
3
3
|
`)}function p(e){return{kind:`unchanged`,text:e}}function m(e){return{kind:`skipped`,text:`${e} unchanged lines`}}function h(e,t){return e.length<=7?e.map(t):[...e.slice(0,f).map(t),m(e.length-6),...e.slice(e.length-f).map(t)]}function g(e){return e}function _(e){let t=[],n=0;for(;n<e.length;){if(e[n].kind!==`unchanged`){t.push(e[n]),n++;continue}let r=n;for(;r<e.length&&e[r].kind===`unchanged`;)r++;t.push(...h(e.slice(n,r),g)),n=r}return t}function v(e,t){let n=Math.min(e.length,t.length),r=0;for(;r<n&&e[r]===t[r];)r++;return r}function le(e,t,n){let r=Math.min(e.length,t.length)-n,i=0;for(;i<r&&e[e.length-1-i]===t[t.length-1-i];)i++;return i}function ue(e,t){let n=e.length,r=t.length;if(n===0)return t.map(e=>({kind:`added`,text:e}));if(r===0)return e.map(e=>({kind:`removed`,text:e}));let i=r+1,a=new Int32Array((n+1)*i);for(let o=n-1;o>=0;o--)for(let n=r-1;n>=0;n--){let r=o*i+n;a[r]=e[o]===t[n]?a[r+i+1]+1:Math.max(a[r+i],a[r+1])}let o=[],s=0,c=0;for(;s<n&&c<r;)e[s]===t[c]?(o.push(p(e[s])),s++,c++):a[(s+1)*i+c]>=a[s*i+c+1]?(o.push({kind:`removed`,text:e[s]}),s++):(o.push({kind:`added`,text:t[c]}),c++);for(;s<n;)o.push({kind:`removed`,text:e[s]}),s++;for(;c<r;)o.push({kind:`added`,text:t[c]}),c++;return o}function de(e,t){let n=ce(e),r=ce(t),i=v(n,r),a=le(n,r,i),o=n.slice(i,n.length-a),s=r.slice(i,r.length-a);return o.length+s.length>d?{lines:[],isTooLarge:!0}:{lines:_([...h(n.slice(0,i),p),...ue(o,s),...h(n.slice(n.length-a),p)]),isTooLarge:!1}}var y=12,fe=8,b=``,pe=48,x=new Map;function me(e,t){return JSON.stringify([e,t])}function S(e){return e.id??b}function he(e,t){let n=x.get(e);n||(n=new Map,x.set(e,n));let r=me(t.agentId,t.revision);for(n.delete(r),n.set(r,t.plan);n.size>y;){let e=n.keys().next().value;if(typeof e!=`string`)break;n.delete(e)}}function ge(e){x.delete(e)}function _e(e,t,n){return!e||n===null?null:x.get(e)?.get(me(t,n))??null}function C(d){let f=n(`section`,`plan-face`);f.hidden=!0;let ce=n(`header`,`plan-head`),p=n(`select`,`plan-heading-picker`);p.setAttribute(`aria-label`,`Plan section`);let m=n(`div`,`plan-view-panel`),h=n(`div`,`plan-sheet-head`),g=n(`button`,`plan-control plan-sheet-close`,`×`);g.type=`button`,g.setAttribute(`aria-label`,`Close`),h.append(n(`span`,null,`View`),g);let _=n(`div`,`plan-view-group plan-author-group`),v=n(`div`,`plan-tabs`);v.setAttribute(`role`,`tablist`),v.setAttribute(`aria-label`,`Plan author`),_.append(n(`span`,`plan-sheet-label`,`Author`),v);let le=n(`div`,`plan-view-group plan-revision-group`),ue=n(`div`,`plan-revision-stepper`),y=n(`button`,`plan-control plan-revision-previous`,`‹`);y.type=`button`,y.setAttribute(`aria-label`,`Previous revision`);let b=n(`button`,`plan-control plan-revision-next`,`›`);b.type=`button`,b.setAttribute(`aria-label`,`Next revision`);let x=n(`span`,`plan-revision-label`),ge=n(`span`,`plan-revision-age`);ue.append(y,x,b,ge);let C=n(`div`,`plan-revision-list`);C.setAttribute(`role`,`radiogroup`),C.setAttribute(`aria-label`,`Revision`),le.append(n(`span`,`plan-sheet-label`,`Revision`),ue,C);let ve=n(`div`,`plan-view-group plan-mode-group`),w=n(`div`,`plan-modes`);w.setAttribute(`role`,`radiogroup`),w.setAttribute(`aria-label`,`Show`),ve.append(n(`span`,`plan-sheet-label`,`Show`),w);let ye=n(`div`,`plan-head-spacer`),T=n(`div`,`plan-draft-notice`),be=n(`span`,`plan-draft-dot`);be.setAttribute(`aria-hidden`,`true`);let E=n(`button`,`plan-control plan-draft-chip`,`Peek draft`);E.type=`button`,T.append(be,E),m.append(h,_,le,ve,ye,T);let D=n(`button`,`plan-control plan-view-button`,`View`);D.type=`button`,D.setAttribute(`aria-haspopup`,`dialog`),D.setAttribute(`aria-expanded`,`false`);let xe=n(`button`,`plan-control plan-minimize-button`,`Minimize`);xe.type=`button`,xe.addEventListener(`click`,d.showTerminal),ce.append(p,m,D,xe);let Se=n(`div`,`plan-sheet-backdrop`),Ce=n(`div`,`plan-body-layout`),we=n(`nav`,`plan-heading-rail`);we.setAttribute(`aria-label`,`Plan sections`);let O=n(`article`,`plan-reading-column`);Ce.append(we,O);let k=n(`textarea`,`plan-editor`);k.setAttribute(`aria-label`,`Plan markdown`),k.spellcheck=!1;let Te=n(`footer`,`plan-action-bar`),Ee=n(`span`,`plan-status`);Ee.setAttribute(`role`,`status`);let De=n(`div`,`plan-decision-slot`),Oe=n(`label`,`plan-accept-edits`),ke=n(`input`,`plan-accept-edits-checkbox`);ke.type=`checkbox`,Oe.append(ke,n(`span`,null,`Accept edits`)),De.append(Oe,Ee),Te.append(De);let Ae=new Map;for(let[e,t]of[[`terminal`,`Answer in terminal`],[`revise`,`Send feedback`],[`approve`,`Approve`]]){let r=n(`button`,`plan-action`,t);r.type=`button`,r.dataset.decision=e,r.addEventListener(`click`,()=>{r.disabled||it(e)}),Ae.set(e,r),Te.append(r)}f.append(ce,Ce,Te,Se);let A=null,j={reviews:[]},M=null,N=null,je=!0,P=``,F=``,I=``,L=``,R=!1,z=null,B=!1,V=null,Me=!1,H=!1,Ne=null,U=[],W=null,G=null,Pe=new Map,K=new Map,q=new Map,J=[],Fe=!1,Y=null,X=!1;function Z(e,t=!0){X=e,m.replaceChildren(...e?[h,ve,le,_,T,ye]:[h,_,le,ve,ye,T]),v.setAttribute(`role`,e?`radiogroup`:`tablist`);for(let t of v.querySelectorAll(`button`)){let n=t.getAttribute(`aria-selected`)===`true`||t.getAttribute(`aria-checked`)===`true`;t.setAttribute(`role`,e?`radio`:`tab`),t.removeAttribute(e?`aria-selected`:`aria-checked`),t.setAttribute(e?`aria-checked`:`aria-selected`,String(n))}m.dataset.open=String(e),Se.dataset.open=String(e),D.setAttribute(`aria-expanded`,String(e)),Ce.inert=e,Te.inert=e,p.inert=e,D.inert=e,xe.inert=e,e?(m.setAttribute(`role`,`dialog`),m.setAttribute(`aria-label`,`Plan view`),m.setAttribute(`aria-modal`,`true`),g.focus()):(m.removeAttribute(`role`),m.removeAttribute(`aria-modal`),t&&D.focus())}function Ie(e){e.addEventListener(`keydown`,t=>{let n=[...e.querySelectorAll(`button:not(:disabled)`)],r=n.indexOf(document.activeElement),i=a(t.key,r,n.length,`both`);if(i===null)return;t.preventDefault();let o=X;n[i].click(),!(o&&e!==w)&&(e===w||!X)&&e.querySelector(`[aria-checked="true"], [aria-selected="true"]`)?.focus()})}let Le=u.subscribe((e,t)=>{t.includes(`layout`)&&X&&Z(!1,!1)});d.signal?.addEventListener(`abort`,Le,{once:!0}),Ie(w),Ie(v),Ie(C),D.addEventListener(`click`,()=>Z(!X)),g.addEventListener(`click`,()=>Z(!1)),Se.addEventListener(`click`,()=>Z(!1)),m.addEventListener(`keydown`,e=>{X&&(e.key===`Escape`?(e.preventDefault(),e.stopPropagation(),Z(!1)):r(m,e))});function Re(e){O.querySelector(`#${CSS.escape(e)}`)?.scrollIntoView({behavior:window.matchMedia(`(prefers-reduced-motion: reduce)`).matches?`instant`:`smooth`,block:`start`})}p.addEventListener(`change`,()=>Re(p.value));function ze(){Fe=!1;let e=J.map(e=>O.querySelector(`#${CSS.escape(e.dataset.headingId??``)}`)).filter(e=>e!==null),t=O.getBoundingClientRect().top-O.scrollTop,n=i({headingOffsets:e.map(e=>e.getBoundingClientRect().top-t),scrollTop:O.scrollTop,isScrolledToEnd:O.scrollTop>0&&O.scrollTop+O.clientHeight>=O.scrollHeight-2,readingLineOffset:pe}),r=n===null?null:e[n]?.id??null;for(let e of J)e.dataset.headingId===r?e.setAttribute(`aria-current`,`location`):e.removeAttribute(`aria-current`);r!==null&&(p.value=r)}function Be(){Fe||f.hidden||J.length===0||(Fe=!0,requestAnimationFrame(ze))}O.addEventListener(`scroll`,Be,{passive:!0});function Ve(){Y=null,B=!1,Me=!1,H=!1,Ne=null}function He(e){W=e,d.reportProblem(e),$()}function Ue(e){N=e,W=null,Ve(),Z(!1,X),$()}function We(e){let t=j.reviews.find(e=>e.agentId===M)?.revisions??[],n=t[t.findIndex(e=>e.revision===N)+e];n&&Ue(n.revision)}y.addEventListener(`click`,()=>We(-1)),b.addEventListener(`click`,()=>We(1));function Ge(e,t){return`${A??``}:${e??`main`}:${t??`latest`}`}function Ke(){return Ge(M,N)}function qe(e,t,n){return`${e??``}:${me(t,n??0)}`}function Q(){return qe(A,M,N)}function Je(){return K.get(Q())??null}function Ye(){return Je()?.size??0}function Xe(){if(Y===null)return!1;let e=K.get(Y.target.bucketKey)?.get(Y.target.sectionSlot)??``;return Y.field.value.trim()!==e}function Ze(e){let t=K.get(e);if(!t)return[];let n=[];for(let e of U){let r=t.get(S(e));r&&n.push({heading:e.heading,comment:r})}return n}function Qe(e,t){let n=t.trim(),r=K.get(e.bucketKey)??new Map;K.set(e.bucketKey,r),n.length===0&&r.delete(e.sectionSlot),n.length>0&&r.set(e.sectionSlot,n),r.size===0&&K.delete(e.bucketKey),$()}function $e(e){if(H||R)return;let r={bucketKey:Q(),sectionSlot:S(e)},i=n(`div`,`plan-comment-composer`),a=n(`label`,`plan-comment-label`,`Comment on ${e.heading??`Introduction`}`),o=n(`textarea`,`plan-comment-input`);o.maxLength=t,o.value=K.get(r.bucketKey)?.get(r.sectionSlot)??``,a.append(o);let s=n(`div`,`plan-comment-actions`),c=n(`button`,`plan-control plan-comment-cancel`,`Cancel`);c.type=`button`;let l=n(`button`,`plan-control plan-comment-save`,`Save comment`);l.type=`button`,s.append(c,l),i.append(a,s);let u={target:r,element:i,field:o};Y=u,o.addEventListener(`input`,Ot),c.addEventListener(`click`,()=>{Y===u&&(Y=null,$())}),l.addEventListener(`click`,()=>{Y===u&&(Y=null),Qe(r,o.value)}),$(),o.focus()}function et(e){let t={bucketKey:Q(),sectionSlot:S(e)};if(Y?.target.bucketKey===t.bucketKey&&Y.target.sectionSlot===t.sectionSlot)return Y.element;let r=Je()?.get(t.sectionSlot);if(!r)return null;let i=n(`div`,`plan-comment-card`),a=n(`div`,`plan-comment-head`),o=n(`button`,`plan-control plan-comment-edit`,`Edit`);o.type=`button`,o.addEventListener(`click`,()=>$e(e));let s=n(`button`,`plan-control plan-comment-remove`,`Remove`);return s.type=`button`,s.disabled=R,o.disabled=R,s.addEventListener(`click`,()=>Qe(t,``)),a.append(n(`span`,`plan-comment-label`,`Your comment`),o,s),i.append(a,n(`p`,`plan-comment-text`,r)),i}function tt(t,n,r={}){if(!A||n.revision===null||R)return!1;let i=l(r);if(i!==null)return He(i),!1;let a={agentId:n.agentId,revision:n.revision,decision:t,...r};return d.sendDecision(A,a)?(W=null,R=!0,z=ee(t)?n:null,$(),!0):(He(e),!1)}function nt(e){if(!B)return{};let t=k.value;return t===_e(A,e.agentId,e.revision)?{}:{plan:t}}function rt(e){let t=qe(A,e.agentId,e.revision),n=Ze(t);n.length!==0&&tt(`revise`,e,{comments:n})&&e.revision!==null&&(G={bucketKey:t,agentId:e.agentId,revision:e.revision},$())}function it(e){let t={agentId:M,revision:N};e===`revise`?rt(t):tt(e===`approve`&&!Oe.hidden&&ke.checked?`approve-accept-edits`:e,t,nt(t))}function at(e){Y=null,B=e===`edit`,Me=e===`changes`,B&&V!==Q()&&(k.value=_e(A,M,N)??``,V=Q()),W=null,$()}function ot(e){return`${e.kind}:${Ge(e.agentId,e.revision)}`}function st(e){for(q.set(ot(e),e);q.size>fe;){let e=q.keys().next().value;if(typeof e!=`string`)break;q.delete(e)}}function ct(e,t){return e.agentId===t.agentId?e.kind===`draft`?t.revision===0:t.revision===0?!1:e.revision===null||e.revision===t.revision:!1}function lt(e){for(let[t,n]of q)if(ct(n,e))return q.delete(t),n;return null}function ut(){for(let[e,t]of q)if(t.kind===`draft`)return q.delete(e),t;return null}function dt(){if(q.size!==1)return null;let e=q.entries().next().value;return e?(q.delete(e[0]),e[1]):null}function ft(){if(!A)return;let e=Ke();P!==e&&d.requestPlan(A,M,N??void 0)&&(P=e,st({kind:`selection`,agentId:M,revision:N}))}function pt(){f.hidden||ft()}function mt(){return s(j,M,N)}function ht(e){if(!A)return;let t=Ge(M,e);I!==t&&d.requestPlan(A,M,e)&&(I=t,st({kind:`diff-base`,agentId:M,revision:e}))}function gt(){if(!A)return;let e=`${A}:${M??`main`}`;L!==e&&d.requestDraft(A,M)&&(L=e,st({kind:`draft`,agentId:M,revision:null}))}function _t(e,t){return`${e??``}:${t??``}`}function vt(){return j.reviews.find(e=>e.agentId===M)?.revisions.find(e=>e.revision===N)?.receivedAt??0}function yt(){let e=Pe.get(_t(A,M));return e!==void 0&&e>vt()}function bt(){H?(Ve(),$()):(Y=null,B=!1,Me=!1,gt(),$())}E.addEventListener(`click`,bt);function xt(e){we.replaceChildren(),p.replaceChildren(),J=[];for(let t of e){let e=t.id??`plan-introduction`,r=t.heading??`Introduction`,i=n(`button`,`plan-heading-link`,r);i.type=`button`,i.dataset.level=String(t.level),i.dataset.headingId=e,i.title=r,i.dataset.commented=String(Je()?.has(S(t))===!0),J.push(i),i.addEventListener(`click`,()=>Re(e)),we.append(i);let a=n(`option`,null,r);a.value=e,p.append(a)}}function St(e){let t=mt();if(t===null){O.append(n(`p`,`plan-loading`,`This is the first revision, so there is nothing to diff`));return}let r=_e(A,M,t);if(r===null){O.append(n(`p`,`plan-loading`,`Loading the previous revision`)),ht(t);return}let i=de(r,e);i.isTooLarge?(O.append(n(`p`,`plan-loading`,`This diff is too large to show, so the newer revision stands alone`)),O.append(se(ie(e)))):O.append(ae(i))}function Ct(e){if(O.replaceChildren(),B){xt(U),O.append(k);return}if(e===null){if(U=[],xt(U),F===Ke()){O.append(n(`p`,`plan-loading`,`This plan revision could not be loaded`));return}O.append(n(`p`,`plan-loading`,`Loading plan`)),ft();return}let t=ie(e);if(U=re(t),xt(U),Me){St(e);return}if(H){O.append(se(t));return}let r=Je();O.append(oe(U,{hasComment:e=>r?.has(S(e))===!0,isComposing:e=>Y?.target.bucketKey===Q()&&Y.target.sectionSlot===S(e),onComment:$e,attachmentFor:et}))}function wt(e){_.hidden=e.tabs.length<2,v.replaceChildren();for(let t of e.tabs){let e=n(`button`,`plan-tab`,t.label);e.type=`button`,e.setAttribute(`role`,X?`radio`:`tab`),e.setAttribute(X?`aria-checked`:`aria-selected`,String(t.selected)),e.tabIndex=t.selected?0:-1,e.addEventListener(`click`,()=>{M=t.agentId,N=null,W=null,P=``,F=``,I=``,L=``,Ve(),Z(!1,X),$()}),v.append(e)}}function Tt(){return H?Ne:_e(A,M,N)}function Et(e){return o({state:j,selectedAgentId:M,selectedRevision:N,body:e,isConnected:je,isDecisionInFlight:R,isDraft:H,pendingCommentCount:Ye(),hasUnsavedComment:Xe(),problem:W})}function Dt(e){Ee.textContent=e.status,Ee.hidden=e.status.length===0;let t=e.actions.some(e=>e.kind===`approve`&&e.enabled);Oe.hidden=!t,ke.disabled=!t;for(let t of e.actions){let e=Ae.get(t.kind);e&&(e.disabled=!t.enabled)}}function Ot(){Dt(Et(Tt()))}function $(){let e=X&&m.contains(document.activeElement),t=o({state:j,selectedAgentId:M,selectedRevision:N,body:null,isConnected:je});(M!==t.selectedAgentId||N!==t.selectedRevision)&&Ve(),M=t.selectedAgentId,N=t.selectedRevision,V!==Q()&&(V=null);let r=Tt(),i=Et(r);wt(i);let a=i.revisions.findIndex(e=>e.selected),s=i.revisions[a],l=Date.now();ue.hidden=i.revisions.length<2,x.textContent=`Rev ${a+1} of ${i.revisions.length}`,ge.textContent=s?c(s.receivedAt,l):``,y.disabled=a<=0,b.disabled=a<0||a>=i.revisions.length-1,C.replaceChildren();for(let e of[...i.revisions].reverse()){let t=n(`button`,`plan-revision-option`);t.type=`button`,t.dataset.revision=String(e.revision),t.setAttribute(`role`,`radio`),t.setAttribute(`aria-checked`,String(e.selected)),t.tabIndex=e.selected?0:-1,t.append(n(`span`,`plan-revision-name`,e.label),n(`span`,`plan-revision-age`,c(e.receivedAt,l))),e.isOpen&&t.append(n(`span`,`plan-revision-open`,`OPEN`)),t.addEventListener(`click`,()=>Ue(e.revision)),C.append(t)}w.replaceChildren();let u=B?`edit`:Me?`changes`:`read`,ee=i.modes.find(e=>e.kind===u&&e.enabled)??i.modes[0];for(let e of i.modes){let t=n(`button`,`plan-control plan-mode`,e.label);t.type=`button`,t.dataset.mode=e.kind,t.disabled=!e.enabled,t.setAttribute(`role`,`radio`),t.setAttribute(`aria-checked`,String(e.kind===u)),t.tabIndex=e.kind===ee.kind?0:-1,t.addEventListener(`click`,()=>{t.disabled||(at(e.kind),w.querySelector(`[aria-checked="true"]`)?.focus())}),w.append(t)}T.hidden=!yt()&&!H,E.hidden=T.hidden,E.setAttribute(`aria-pressed`,String(H)),Dt(i),Ct(r),p.disabled=J.length===0,Be(),e&&!m.contains(document.activeElement)&&g.focus()}function kt(e){z!==null&&ne(e,z.agentId)&&(z=null,V=null,d.showTerminal())}function At(e){Y=null,e!==A&&(z=null,R=!1,W=null,q.clear()),Z(!1,!1),A=e,f.hidden=!1,P=``,F=``,$(),pt()}function jt(){Y=null,Z(!1,!1),f.hidden=!0}function Mt(e,t){return t.kind!==`selection`||e.agentId!==M?!1:t.revision===null?N===null||N===e.revision:t.revision===N}function Nt(e){e.kind===`draft`?(L=``,He(`the draft could not be read, so nothing was shown`)):e.kind===`diff-base`?I=``:F=Ge(e.agentId,e.revision)}function Pt(e){G!==null&&te(e,G.agentId)!==G.revision&&(K.delete(G.bucketKey),G=null)}function Ft(e){R=!1,It({reviews:e.reviews});let t=e.body;if(!t){let e=dt()??ut();e!==null&&Nt(e);return}let n=lt(t);if(t.revision===0){if(L=``,n===null||t.agentId!==M)return;Ne=t.plan,H=!0}else he(e.id,t),n!==null&&Mt(t,n)&&(M=t.agentId,N=t.revision,P=``,F=``)}function It(e){let t=te(e,M);t!==null&&t!==te(j,M)&&(N=t,Ve()),Pt(e),j=e,R=!1,kt(e)}function Lt(e){let t=!1;e.state&&It(e.state),e.draft&&Pe.set(_t(e.draft.id,e.draft.agentId),e.draft.changedAt),e.decisionRefused&&(z=null,R=!1,G=null,e.refusalText&&(W=e.refusalText)),typeof e.isConnected==`boolean`&&(t=e.isConnected&&!je,je=e.isConnected,t&&(P=``,F=``,I=``,L=``,R=!1)),e.requestFailed&&(F=P),e.response&&Ft(e.response),f.hidden||$(),(t||e.decisionRefused)&&pt()}return{el:f,show:At,hide:jt,update:Lt}}export{C as createPlanFace,ge as dropPlanBodyCache};
|
|
Binary file
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{Et as e}from"./updates-view-core-B_e7uWeW.js";import{o as t}from"./dom-helpers-C7P3_59O.js";import{Yr as n}from"./index-
|
|
1
|
+
import{Et as e}from"./updates-view-core-B_e7uWeW.js";import{o as t}from"./dom-helpers-C7P3_59O.js";import{Yr as n}from"./index-DkVH8Ze_.js";var r=2,i=8,a=/^ {0,3}(`{3,}|~{3,})([^`]*)$/,o=/^(\s*)(?:([-+*])|(\d+)[.)])\s+(.+)$/,s=/^ {0,3}(?:(?:\*\s*){3,}|(?:-\s*){3,}|(?:_\s*){3,})$/,c=/^:?-{3,}:?$/,l=/^[A-Za-z0-9_+#.-]{1,32}$/;function u(t){return e(t,{overlongLine:`reject`})}function d(e){let t=e.trim().split(/\s+/)[0]??``;return l.test(t)?t:``}function f(e,t){if(!t)return;let n=e.at(-1);n?.type===`text`?n.text+=t:e.push({type:`text`,text:t})}function p(e,t){return e.startsWith(`**`,t)?`**`:e.startsWith(`__`,t)?`__`:null}function m(e,t){return e.startsWith(`*`,t)?`*`:e.startsWith(`_`,t)?`_`:null}function h(e,t,n){let r=e.indexOf(t,n);return r>n?r:-1}function g(e,t){let n=e.indexOf(t);return function(r){return n===-1?-1:(n>=r||(n=e.indexOf(t,r)),n)}}function _(e,t){let n=1;for(let i=t;i<e.length;i++){let t=e[i];if(t===`(`&&n++,t===`)`&&n--,n===0)return i;if(n>r)return-1}return-1}function v(e,t,n){if(e[t]!==`[`)return null;let r=n(t+1);if(r<=t+1||e[r+1]!==`(`)return null;let i=_(e,r+2);return i===-1?null:{label:e.slice(t+1,r),target:e.slice(r+2,i),end:i+1}}function y(e){let t=[],r=g(e,`]`),i=0;for(;i<e.length;){let a=v(e,i,r);if(a){let e=n(a.target.trim());e&&t.push({type:`link`,href:e,children:y(a.label)}),e||f(t,a.label),i=a.end;continue}if(e.startsWith("`",i)){let n=h(e,"`",i+1);if(n!==-1){t.push({type:`code`,text:e.slice(i+1,n)}),i=n+1;continue}}let o=p(e,i);if(o){let n=h(e,o,i+o.length);if(n!==-1){t.push({type:`strong`,children:y(e.slice(i+o.length,n))}),i=n+o.length;continue}}let s=m(e,i);if(s){let n=h(e,s,i+1);if(n!==-1){t.push({type:`emphasis`,children:y(e.slice(i+1,n))}),i=n+1;continue}}f(t,e[i]),i++}return t}function b(e){return e.map(e=>e.type===`text`||e.type===`code`?e.text:b(e.children)).join(``)}var x=`plan-h-`;function S(e,t){let n=e.toLowerCase().normalize(`NFKD`).replace(/[\u0300-\u036f]/g,``).replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``)||`section`,r=(t.slugCounts.get(n)??0)+1;return t.slugCounts.set(n,r),`${x}${r===1?n:`${n}-${r}`}`}function C(e){if(typeof e!=`string`||!e.includes(`|`))return!1;let t=w(e);return t.length<2?!1:t.every(e=>c.test(e))}function w(e){let t=e.trim();return t.startsWith(`|`)&&(t=t.slice(1)),t.endsWith(`|`)&&(t=t.slice(0,-1)),t.split(`|`).map(e=>e.trim())}function T(e){let t=o.exec(e);return t?{indent:t[1].replace(/\t/g,` `).length,ordered:!!t[3],content:t[4]}:null}function E(e,t,n,r){let a=T(e[t]);if(!a)return null;let o=[],s=a.ordered,c=a.indent,l=t;for(;l<e.length;){let t=T(e[l]);if(!t||t.indent<c)break;if(t.indent>c){if(r>=i)break;let t=E(e,l,n,r+1);if(!t||o.length===0)break;o.at(-1)?.children.push(t.block),l=t.next}else{if(t.ordered!==s)break;o.push({children:[{type:`paragraph`,children:y(t.content)}]}),l++}}return{block:{type:`list`,ordered:s,items:o},next:l}}function D(e,t){let n=e[t]??``;return n.trim()===``||u(n)||a.test(n)||s.test(n)||T(n)||/^ {0,3}>/.test(n)?!0:t+1<e.length&&n.includes(`|`)&&C(e[t+1])}function O(e,t,n){let r=[],o=0;for(;o<e.length;){let c=e[o];if(c.trim()===``){o++;continue}let l=a.exec(c);if(l){let t=[],n=l[1][0],i=l[1].length;for(o++;o<e.length;){let r=/^ {0,3}(`{3,}|~{3,})\s*$/.exec(e[o]);if(r&&r[1][0]===n&&r[1].length>=i)break;t.push(e[o]),o++}o<e.length&&o++,r.push({type:`code`,language:d(l[2]),text:t.join(`
|
|
2
2
|
`)});continue}let f=u(c);if(f){let e=y(f.text);r.push({type:`heading`,level:f.level,id:S(b(e),t),children:e}),o++;continue}if(s.test(c)){r.push({type:`rule`}),o++;continue}if(o+1<e.length&&c.includes(`|`)&&C(e[o+1])){let t=w(c).map(y),n=[];for(o+=2;o<e.length&&e[o].includes(`|`)&&e[o].trim()!==``;)n.push(w(e[o]).map(y)),o++;r.push({type:`table`,header:t,rows:n});continue}let p=E(e,o,t,n);if(p){r.push(p.block),o=p.next;continue}if(n<i&&/^ {0,3}>/.test(c)){let i=[];for(;o<e.length&&/^ {0,3}>/.test(e[o]);)i.push(e[o].replace(/^ {0,3}> ?/,``)),o++;r.push({type:`blockquote`,blocks:O(i,t,n+1)});continue}let m=[c.trim()];for(o++;o<e.length&&!D(e,o);)m.push(e[o].trim()),o++;r.push({type:`paragraph`,children:y(m.join(` `))})}return r}function k(e){return O(e.replace(/\r\n?/g,`
|
|
3
3
|
`).split(`
|
|
4
4
|
`),{slugCounts:new Map},0)}function A(e){let t=[],n={heading:null,id:null,level:0,blocks:[]},r=()=>{(n.heading!==null||n.blocks.length!==0)&&t.push(n)};for(let t of e)t.type===`heading`?(r(),n={heading:b(t.children),id:t.id,level:t.level,blocks:[t]}):n.blocks.push(t);return r(),t}function j(e,n){for(let r of n){if(r.type===`text`){e.append(document.createTextNode(r.text));continue}if(r.type===`code`){e.append(t(`code`,`plan-inline-code`,r.text));continue}if(r.type===`emphasis`){let n=t(`em`);j(n,r.children),e.append(n);continue}if(r.type===`strong`){let n=t(`strong`);j(n,r.children),e.append(n);continue}let n=t(`a`,`plan-link`);n.href=r.href,n.target=`_blank`,n.rel=`noopener noreferrer`,j(n,r.children),e.append(n)}}function M(e){let n=t(`li`);return N(n,e.children),n}function N(e,n){for(let r of n)if(r.type===`heading`){let n=t(`h${r.level}`,`plan-heading`);n.id=r.id,j(n,r.children),e.append(n)}else if(r.type===`paragraph`){let n=t(`p`,`plan-paragraph`);j(n,r.children),e.append(n)}else if(r.type===`list`){let n=r.ordered?t(`ol`,`plan-list`):t(`ul`,`plan-list`);n.append(...r.items.map(M)),e.append(n)}else if(r.type===`code`){let n=t(`pre`,`plan-code`),i=t(`code`,r.language?`language-${r.language}`:null,r.text);n.append(i),e.append(n)}else if(r.type===`table`){let n=t(`div`,`plan-table-wrap`),i=t(`table`,`plan-table`),a=t(`thead`),o=t(`tr`);for(let e of r.header){let n=t(`th`);j(n,e),o.append(n)}a.append(o);let s=t(`tbody`);for(let e of r.rows){let n=t(`tr`);for(let r of e){let e=t(`td`);j(e,r),n.append(e)}s.append(n)}i.append(a,s),n.append(i),e.append(n)}else if(r.type===`blockquote`){let n=t(`blockquote`,`plan-blockquote`);N(n,r.blocks),e.append(n)}else e.append(t(`hr`,`plan-rule`))}function P(e){let n=t(`div`,`plan-document`);return N(n,e),n}function F(e,{hasComment:n,isComposing:r,onComment:i,attachmentFor:a}){let o=t(`div`,`plan-document`),s=[];for(let c of e){let e=t(`section`,`plan-section`);e.dataset.selected=`false`,e.addEventListener(`click`,()=>{for(let t of s)t.dataset.selected=String(t===e)}),s.push(e);let l=t(`div`,`plan-section-head`),u=c.blocks[0],d=u?.type===`heading`;if(d&&N(l,[u]),d||(e.id=`plan-introduction`),!n(c)&&!r(c)){let e=t(`button`,`plan-section-comment`,`Comment`);e.type=`button`,e.setAttribute(`aria-label`,`Comment on ${c.heading??`Introduction`}`),e.addEventListener(`click`,()=>i(c)),l.append(e)}let f=t(`div`,`plan-section-body`);N(f,d?c.blocks.slice(1):c.blocks),e.append(l,f);let p=a(c);p&&e.append(p),o.append(e)}return o}var I={added:`+`,removed:`-`,unchanged:` `,skipped:` `};function L(e){let n=t(`div`,`plan-diff`);for(let r of e.lines){let e=t(`div`,`plan-diff-line plan-diff-${r.kind}`),i=t(`span`,`plan-diff-gutter`,I[r.kind]);i.setAttribute(`aria-hidden`,`true`),e.append(i,t(`span`,`plan-diff-text`,r.text)),n.append(e)}return n}export{A as a,k as i,L as n,F as r,P as t};
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{Mt as e,n as t}from"./updates-view-core-B_e7uWeW.js";import{E as n,a as r,c as i,i as a,m as o,o as s,u as c}from"./dom-helpers-C7P3_59O.js";import{d as l,r as u,u as d}from"./control-ws-D_jLoMnn.js";import{a as f,o as p}from"./card-registry-DsAFY_8B.js";import{a as m}from"./modal-Bh-cVr-I.js";import{Ai as h,Bt as g,Dt as ee,Er as _,Et as v,Fr as y,Gr as b,Ht as te,Jr as ne,Kr as x,Lr as S,Nr as re,Rr as C,Rt as w,Sr as ie,Tt as ae,Vt as T,Wr as oe,ki as se,m as E,mi as D,qr as ce,si as O,wr as le,zt as k}from"./index-DkVH8Ze_.js";function ue(e,t){return!!e?.error&&!e.isRefreshing&&typeof e.nextAttemptAt==`number`&&e.nextAttemptAt>t}function A(e,t){if(!e?.error)return null;let n=e.error.trim().replace(/[.!]+$/,``),r=e.incident?.trim().replace(/[.!]+$/,``),i=`Could not reach GitHub: ${n}.${r?` GitHub reports: ${r}.`:``}`;if(e.isRefreshing)return`${i} Refreshing.`;if(typeof e.nextAttemptAt!=`number`)return i;let a=Math.max(0,Math.ceil((e.nextAttemptAt-t)/1e3));return a===0?`${i} Retrying now.`:e.retry?`${i} Retrying in ${a}s (${e.retry.attempt} of ${e.retry.limit}).`:`${i} Next try in ${a>=60?`${Math.ceil(a/60)} min`:`${a}s`}.`}function de(e,t,n){return e?.refreshNotice&&e.isRefreshing?e.refreshNotice:t||e?.isRefreshing?`Refreshing`:n||e?.refreshNotice||``}function fe(e,t){let n=e?.lastRefreshedAt??e?.lastSyncAt??null;if(n===null)return null;let r=Math.max(0,t-n);return!e?.error&&r<=3e5?null:r<6e4?`Last updated less than a minute ago.`:r<36e5?`Last updated ${Math.floor(r/6e4)} min ago.`:`Last updated ${Math.floor(r/36e5)} h ago.`}function pe(e,t,n,r,i,a){return{isVisible:a&&(e.state===`OPEN`||t),isPressed:t,isDisabled:n,statusText:r||(n?`Saving`:i),tone:r?`error`:n?`busy`:null}}function me(e,t,n=``){if(!t||!e.keepMergeable)return null;let r=he(e,!1,``,!0,n).statusText;if(e.isKeepMergeableFixInFlight)return{text:`Repairing`,tone:`warn`,title:r};let i=e.keepMergeableAttempt;return!i||i.outcome===`pushed`||i.outcome===`stopped`?null:{text:`Repair failed`,tone:`danger`,title:r}}function he(e,t,n=``,r=!0,i=``){let a=e.keepMergeableAttempt,o=e.keepMergeable?`On`:`Off`;if(e.keepMergeable&&a&&a.outcome!==`pushed`&&a.outcome!==`stopped`){let e=i?` (${i})`:``;o=`Keep mergeable failed: ${a.reason??`The attempt produced no repair`}${e}`}return e.isKeepMergeableFixInFlight&&(o=`Keep mergeable is running`),pe(e,!!e.keepMergeable,t,n,o,r)}function ge(e){return e?.isKeepMergeableEnabled!==!1}function _e(e){return e?.isMergeQueueEnabled!==!1}function ve(e,t,n){return e?t?`Repair pushed, waiting for you`:n?`On, the last merge failed and retries an hour later once it is ready`:`On, merges as soon as it is ready`:`Not queued`}function ye(e,t,n=``,r=!0){let i=e.mergeQueuePosition!==null&&e.mergeQueuePosition!==void 0;return pe(e,i,t,n,ve(i,!!e.isMergeQueueHeldForRepairPush,!!e.mergeQueueFailure),r)}function be(e){return e.checks.failing.length>0?{label:`Checks`,tone:`danger`,icon:`failed`,text:`${e.checks.failing.length} failing`,items:e.checks.failing}:e.checks.state===`FAILURE`||e.checks.state===`ERROR`?{label:`Checks`,tone:`danger`,icon:`failed`,text:`Failing`}:e.checks.pendingCount>0?{label:`Checks`,tone:`wait`,icon:`running`,text:`${e.checks.pendingCount} running`}:e.checks.state===`PENDING`||e.checks.state===`EXPECTED`?{label:`Checks`,tone:`wait`,icon:`running`,text:`Running`}:e.checks.state===`SUCCESS`?{label:`Checks`,tone:`ok`,icon:`passed`,text:`Passing`}:{label:`Checks`,tone:`muted`,icon:`none`,text:`No checks`}}function j(e){return`${e} ${e===1?`approval`:`approvals`}`}function M(e){return e.reviewRequests.map(e=>e.name).join(`, `)}function xe(e){let t=e.reviewRequests.length>0?`Requested: ${M(e)}`:`Approval required`;return e.approvals>0?`${t}, ${j(e.approvals)}`:t}function Se(e){let t=e.approvals>0?j(e.approvals):`Approved`;return e.mergeStateStatus===`BLOCKED`?{label:`Review`,tone:`wait`,icon:`reviewer`,text:`${t}, merge blocked`}:{label:`Review`,tone:`ok`,icon:`passed`,text:t}}function Ce(e){return e.reviewDecision===`CHANGES_REQUESTED`?{label:`Review`,tone:`warn`,icon:`changes-requested`,text:`Changes requested`}:e.reviewDecision===`APPROVED`?Se(e):e.reviewDecision===`REVIEW_REQUIRED`||e.mergeStateStatus===`BLOCKED`?{label:`Review`,tone:`wait`,icon:`reviewer`,text:xe(e)}:e.reviewRequests.length>0?{label:`Review`,tone:`wait`,icon:`reviewer`,text:`Requested: ${M(e)}`}:{label:`Review`,tone:`muted`,icon:`none`,text:`No review requested`}}function N(e,t){return t?e.lastAuthor!==t:null}function we(e){let t=e.line===null?e.path:`${e.path}:${e.line}`;return e.isOutdated?`${t} (outdated)`:t}function Te(e){let t=e.commentCount-1;return t===0?`No replies`:`${t} ${t===1?`reply`:`replies`}, last by ${e.lastAuthor??`a deleted account`}`}function Ee(e,t){let n=N(e,t);return n===null?null:n?{tone:`warn`,icon:`your-turn`,text:`Waiting on you`}:{tone:`wait`,icon:`reviewer`,text:`Waiting on reviewer`}}function De(e,t){return[...e.threads].sort((e,n)=>{let r=Number(N(n,t)===!0)-Number(N(e,t)===!0);return r===0?(Date.parse(n.lastActivityAt)||0)-(Date.parse(e.lastActivityAt)||0):r}).map(e=>({location:we(e),url:e.url,author:e.author??`a deleted account`,excerpt:e.excerpt,replySummary:Te(e),lastActivityAt:e.lastActivityAt,waiting:Ee(e,t),isWaitingOnYou:N(e,t)===!0}))}function Oe(e,t){if(e.unresolvedThreads===0)return{label:`Threads`,tone:`ok`,icon:`passed`,text:`None open`};let n=`${e.unresolvedThreads} unresolved`;if(!t||e.threads.length===0)return{label:`Threads`,tone:`warn`,icon:`thread`,text:n};let r=e.threads.filter(e=>N(e,t)).length;return r===0?{label:`Threads`,tone:`wait`,icon:`thread`,text:`${n}, all waiting on reviewers`}:{label:`Threads`,tone:`warn`,icon:`your-turn`,text:`${n}, ${r} waiting on you`}}function ke(e){return e.mergeable===`CONFLICTING`||e.mergeStateStatus===`DIRTY`?{label:`Conflicts`,tone:`danger`,icon:`conflict`,text:`Conflicts with ${e.baseRefName}`}:e.mergeable===`MERGEABLE`?{label:`Conflicts`,tone:`ok`,icon:`passed`,text:`None`}:{label:`Conflicts`,tone:`muted`,icon:`unknown`,text:`Not computed yet`}}function Ae(e){let t=e.behindBy!==null&&e.behindBy>0;return e.mergeStateStatus===`BEHIND`?{label:`Base`,tone:`warn`,icon:`behind`,text:t?`${e.behindBy} behind ${e.baseRefName}`:`Behind ${e.baseRefName}`}:e.behindBy===null?{label:`Base`,tone:`muted`,icon:`unknown`,text:`Unknown`}:t?{label:`Base`,tone:`muted`,icon:`behind`,text:`${e.behindBy} behind ${e.baseRefName}, update not required`}:{label:`Base`,tone:`ok`,icon:`passed`,text:`Up to date with ${e.baseRefName}`}}var je={APPROVED:{text:`Approved`,tone:`ok`,icon:`passed`},CHANGES_REQUESTED:{text:`Requested changes`,tone:`warn`,icon:`changes-requested`},COMMENTED:{text:`Commented`,tone:`muted`,icon:`thread`},DISMISSED:{text:`Dismissed`,tone:`muted`,icon:`discarded`},PENDING:{text:`Pending`,tone:`wait`,icon:`running`}};function Me(e){return[...e.reviews].sort((e,t)=>(Date.parse(t.submittedAt??``)||0)-(Date.parse(e.submittedAt??``)||0)).map(e=>{let t=je[e.state]??{text:e.state.toLowerCase().replaceAll(`_`,` `),tone:`muted`,icon:`unknown`};return{reviewer:e.reviewer??`a deleted account`,text:t.text,tone:t.tone,icon:t.icon,submittedAt:e.submittedAt}})}var P={danger:0,warn:1,wait:2,muted:3,ok:4};function Ne(e,t=null){if(e.state===`MERGED`)return[];let n=[be(e),Ce(e),Oe(e,t),ke(e),Ae(e)],r=e.autoRebase?[Pe(e,e.autoRebase)]:[],i=e.mergeQueueFailure?[{label:`Merge when ready`,tone:`danger`,icon:`failed`,text:`Merge failed: ${e.mergeQueueFailure.message}`}]:[];return[...n,...r,...i].toSorted((e,t)=>P[e.tone]-P[t.tone])}function Pe(e,t){return t.outcome===`rebased`?{label:`Auto-rebase`,tone:`ok`,icon:`passed`,text:t.message}:{label:`Auto-rebase`,tone:e.mergeStateStatus===`BEHIND`?`danger`:`warn`,icon:`failed`,text:t.message}}function F(e){return e?e.configured?e.error&&e.prs.length===0?`Pull requests will show here once GitHub answers.`:`No open or recently merged pull requests found.`:`Enable Team review and set its GitHub organization in settings to see your pull requests.`:`Waiting for your pull requests.`}function Fe(e,t=0){if(!e)return[];let n=A(e,t),r=n?[{text:n,tone:`error`}]:[];return e.truncatedNote?[...r,{text:e.truncatedNote,tone:`info`}]:r}var Ie={isVisible:!1,isDisabled:!0,statusText:``,tone:null},Le={merged:{statusText:`Merged on GitHub. Refreshing the list.`,tone:`ok`},queued:{statusText:`Added to the merge queue. Refreshing the list.`,tone:`ok`},"auto-merge":{statusText:`Auto-merge enabled. GitHub merges it once its requirements pass.`,tone:`ok`},unconfirmed:{statusText:`GitHub accepted the request but did not confirm a merge. Check GitHub.`,tone:null}};function Re(e,t){if(e.state!==`OPEN`)return Ie;let n=t?.head===e.headRefOid?t:void 0;if(n?.phase===`pending`)return{isVisible:!0,isDisabled:!0,statusText:`Merging on GitHub`,tone:`busy`};if(n&&n.phase!==`failed`)return{isVisible:!0,isDisabled:!0,...Le[n.phase]};let r=te(e);return r?{isVisible:!0,isDisabled:!0,statusText:r,tone:null}:n?.phase===`failed`?{isVisible:!0,isDisabled:!1,statusText:n.text,tone:`error`}:{isVisible:!0,isDisabled:!1,statusText:`Merges into ${e.baseRefName} with ${T(e.mergeMethod)}`,tone:null}}function ze(e){return`Merge ${e.key} "${e.title}" into ${e.baseRefName} with ${T(e.mergeMethod)}, your default for this repository. Glimmervoid does not delete the branch.`}function Be(t){let n=e.safeParse(t);if(!n.success)return null;let r=t&&typeof t==`object`&&`requestId`in t?t.requestId:null;return typeof r==`string`?{...n.data,requestId:r}:null}var I=null,L=null,R=v().status,z=null,B=new Map,V=new Map,H=null,U={label:`Keep mergeable`,pendingKeys:new Set,errorsByKey:new Map,controlState:(e,t,n,r)=>he(e,t,n,r,E(e.keepMergeableAttempt?.at)),isFeatureEnabled:ge,save:async(e,t)=>{let n=await l(`my-pr-keep-mergeable`,{repo:e.repo,number:e.number,keepMergeable:t},{timeoutMs:y});if(n.type!==`my-pr-keep-mergeable-result`||n.key!==e.key)throw Error(`Unexpected keep mergeable reply.`);return n.ok?null:n.error??`Could not save Keep mergeable.`}},Ve={label:`Merge when ready`,pendingKeys:new Set,errorsByKey:new Map,controlState:ye,isFeatureEnabled:_e,save:async(e,t)=>{let n=await l(`my-pr-merge-when-ready`,{repo:e.repo,number:e.number,mergeWhenReady:t},{timeoutMs:y});if(n.type!==`my-pr-merge-when-ready-result`||n.key!==e.key)throw Error(`Unexpected merge when ready reply.`);return n.ok?null:n.error??`Could not save Merge when ready.`}},W=6e4,G=6e4,He=`The server did not answer within ${W/1e3} s. Check GitHub before trying again.`,Ue=`${t} Check GitHub before trying again.`;function We(e,t){let n=typeof e==`string`?[e]:e,r=s(`div`,`reviews-refresh-control`),i=s(`button`,`pr-action pr-action-ghost reviews-refresh-button`,`Refresh`);i.type=`button`;let a=s(`span`,`reviews-refresh-status`);a.setAttribute(`role`,`status`);let o=s(`p`,`my-pr-error reviews-retry-notice`);r.append(i,a);let u=null,d=!1,f=``,p=null;function m(){let e=Date.now(),n=A(u,e),r=fe(u,e);o.textContent=n?[n,r].filter(Boolean).join(` `):``,o.hidden!==!u?.error&&(o.hidden=!u?.error),a.textContent=de(u,d,f)||(u?.error?``:r)||``,a.hidden!==!a.textContent&&(a.hidden=!a.textContent);let i=o.isConnected&&!c(t)&&!document.hidden&&o.getClientRects().length>0&&ue(u,e);!i&&p!==null&&(window.clearInterval(p),p=null),i&&p===null&&(p=window.setInterval(m,1e3))}function h(e){e!==u&&(f=``),u=e,i.disabled=d||!!e?.isRefreshing||!e?.configured,m()}i.addEventListener(`click`,async()=>{if(!d){d=!0,f=``,h(u);try{let e=await Promise.all(n.map(e=>l(`github-polling-refresh`,{lane:e},{timeoutMs:G}))),t=e.find(e=>e.type===`github-polling-refresh-result`&&!e.ok);t?.type===`github-polling-refresh-result`&&(f=t.error??`Could not refresh from GitHub.`),!t&&e.some(e=>e.type===`github-polling-refresh-result`)&&(f=`Refreshed.`)}catch(e){f=C(e,G)}finally{d=!1,h(u)}}});let g=new MutationObserver(m);g.observe(t,{attributes:!0,subtree:!0,attributeFilter:[`hidden`,`data-queue-collapsed`]});for(let e=t.parentElement;e;e=e.parentElement)g.observe(e,{attributes:!0,attributeFilter:[`hidden`,`data-queue-collapsed`]});return document.addEventListener(`visibilitychange`,m),{control:r,notice:o,update:h}}function K(e,t,n,r){B.set(e,{head:t,phase:n,text:r}),Q()}function Ge(e){if(V.has(e.key))return;let n=u(`my-pr-merge`);if(!d({type:`my-pr-merge`,requestId:n,repo:e.repo,number:e.number,headRefOid:e.headRefOid})){K(e.key,e.headRefOid,`failed`,t);return}let r=window.setTimeout(()=>{V.delete(e.key),K(e.key,e.headRefOid,`failed`,He)},W);V.set(e.key,{requestId:n,head:e.headRefOid,timer:r}),B.set(e.key,{head:e.headRefOid,phase:`pending`,text:``}),Q()}function Ke(e){let t=Re(e,B.get(e.key));if(!t.isVisible)return null;let n=s(`footer`,`pr-footer pr-decision-bar`),r=s(`button`,`pr-action`,`Merge`);r.type=`button`,r.disabled=t.isDisabled;let i=s(`span`,`pr-action-status`,t.statusText);return i.setAttribute(`role`,`status`),i.setAttribute(`aria-live`,`polite`),S(i,t.tone,t.statusText),r.addEventListener(`click`,()=>{m({title:`Merge pull request`,message:ze(e),confirmLabel:`Merge`,onConfirm:()=>Ge(e)})}),n.append(r,i),n}function qe(e,t){let n=t.controlState(e,t.pendingKeys.has(e.key),t.errorsByKey.get(e.key),t.isFeatureEnabled(R));if(!n.isVisible)return null;let r=s(`div`,`my-pr-merge`),i=s(`button`,`pr-action`,t.label);i.type=`button`,i.disabled=n.isDisabled,i.setAttribute(`aria-pressed`,String(n.isPressed));let a=s(`span`,`pr-action-status`,n.statusText);return S(a,n.tone,n.statusText),a.setAttribute(`role`,`status`),a.setAttribute(`aria-live`,`polite`),i.addEventListener(`click`,async()=>{if(!t.pendingKeys.has(e.key)){t.pendingKeys.add(e.key),t.errorsByKey.delete(e.key),Q();try{let r=await t.save(e,!n.isPressed);r&&t.errorsByKey.set(e.key,r)}catch(n){t.errorsByKey.set(e.key,C(n,y))}finally{t.pendingKeys.delete(e.key),Q()}}}),r.append(i,a),r}function q(e,{hasGlyph:t}){let n=s(`span`,`my-pr-stage`);return n.dataset.tone=g(e.stage),t&&n.append(_(w(e.stage),g(e.stage))),n.append(k(e.stage)),n}function Je(e,t){let n=s(`span`,`my-pr-requested`);n.append(s(`span`,null,`Requested`));let r=s(`span`,`avatar-stack`);for(let t of e.reviewRequests){let e=a({login:t.name,url:t.isTeam?t.avatarUrl:void 0,cssPx:16});e.title=t.name,e.setAttribute(`role`,`img`),e.setAttribute(`aria-label`,t.name),r.append(e)}return n.append(r,s(`span`,`my-pr-requested-names`,t.slice(11))),n}function Ye(e){let t=s(`div`,`pr-detail-heading`),n=s(`div`,`pr-detail-title`);n.append(i(`pr-link`,e.key,e.url),s(`h2`,null,e.title));let r=s(`p`,`pr-detail-meta`),a=e.state===`MERGED`?`Merged ${E(Date.parse(e.mergedAt??``))}`:`Updated ${E(Date.parse(e.updatedAt))}`;return r.append(s(`span`,`pr-queue-owner`,`Yours`),q(e,{hasGlyph:!0}),s(`span`,null,`Opened ${E(Date.parse(e.createdAt))}`),s(`span`,null,a)),t.append(n,r),t}function Xe(e){let t=Ne(e,R?.viewer??null);if(t.length===0)return null;let n=s(`section`,`pr-readiness-section`);n.append(s(`h3`,`pr-section-heading`,`Merge readiness`));let r=s(`ul`,`pr-readiness`);for(let n of t){let t=s(`li`,`pr-readiness-row`);t.dataset.tone=n.tone;let i=s(`span`,`pr-readiness-value`);if(n.label===`Review`&&n.text.startsWith(`Requested: `)&&i.append(Je(e,n.text)),i.childNodes.length===0&&(i.textContent=n.text),n.items){let e=s(`ul`,`my-pr-facts`);for(let t of n.items)e.append(s(`li`,null,t));i.append(e)}t.append(_(n.icon,n.tone),s(`span`,`pr-readiness-label`,n.label),i),r.append(t)}return n.append(r),n}function J(e,t){if(t.length===0)return null;let n=s(`section`,`my-pr-threads-section`);n.append(s(`h3`,`pr-section-heading`,e));let r=s(`ul`,`my-pr-threads`);for(let e of t){let t=s(`li`,`my-pr-thread`),n=s(`div`,`my-pr-thread-heading`);if(n.append(i(`my-pr-thread-location`,e.location,e.url)),e.waiting){let t=s(`span`,`my-pr-stage`);t.dataset.tone=e.waiting.tone,t.append(_(e.waiting.icon,e.waiting.tone),e.waiting.text),n.append(t)}let a=s(`p`,`my-pr-thread-excerpt`);a.append(s(`strong`,null,e.author),` ${e.excerpt}`);let o=Date.parse(e.lastActivityAt),c=s(`p`,`my-pr-thread-meta`,Number.isFinite(o)?`${e.replySummary}, ${E(o)}`:e.replySummary);t.append(n,a,c),r.append(t)}return n.append(r),n}function Ze(e){let t=Me(e);if(t.length===0)return null;let n=s(`section`,`pr-readiness-section`);n.append(s(`h3`,`pr-section-heading`,`Reviews`));let i=s(`ul`,`pr-readiness`);for(let e of t){let t=s(`li`,`pr-readiness-row`),n=Date.parse(e.submittedAt??``),a=Number.isFinite(n)?`${e.text} ${E(n)}`:e.text,o=s(`span`,`my-pr-reviewer`);o.append(r([{login:e.reviewer,tone:e.tone,title:e.reviewer,url:e.reviewer===`a deleted account`?null:void 0}],16),s(`span`,null,e.reviewer)),t.append(_(e.icon,e.tone),o,s(`span`,`pr-readiness-value`,a)),i.append(t)}return n.append(i),n}function Qe(e){let t=[U,Ve].map(t=>qe(e,t)).filter(e=>e!==null);if(t.length===0)return null;let n=s(`section`,`my-pr-automation`);return n.append(s(`h3`,`pr-section-heading`,`Automation`),...t),n}function Y(e){if(!I)return;if(!e){I.replaceChildren(s(`p`,`pr-empty`,F(R)));return}let t=De(e,R?.viewer??null),n=s(`article`,`pr-detail`),r=[Xe(e),J(`Threads waiting on you`,t.filter(e=>e.isWaitingOnYou)),J(`Other open threads`,t.filter(e=>!e.isWaitingOnYou)),Ze(e),Qe(e),Ke(e)];n.append(Ye(e),...r.filter(e=>e!==null)),I.replaceChildren(n)}function X(e){let t=e.dataset.sessionId??``,r=p.get(t),i=o(e,`.session-row-name`);r&&ce(i,f(r)||t);let a={glyph:o(e,`.session-row-glyph`),label:o(e,`.session-row-label`)},s=le(e,a,r?.currentState||n.DORMANT,r?.awaitingBackgroundTasks,r?.pendingPromptKind),c=`Focus session ${i.textContent}, ${s}`;x(e,`title`,c),x(e,`aria-label`,c)}function $e(e){let{row:t,refs:n}=ie(`button`,`my-pr-session-pill`);return t.type=`button`,t.dataset.sessionId=e.id,n.name.textContent=e.title,X(t),t.addEventListener(`click`,()=>H?.(e.id)),t}function et(e){if(!e||e.length===0)return null;let t=s(`div`,`my-pr-session-focus`);return t.append(...e.map($e)),t}function Z(){for(let e of document.querySelectorAll(`.my-pr-session-pill`))c(e)||X(e)}function tt(e,t,n){let r=s(`button`,`pr-queue-row`);r.type=`button`,r.dataset.prKey=e.key,r.title=`${e.key}: ${k(e.stage)}`;let i=s(`span`,`pr-queue-glyph`);i.append(_(w(e.stage),g(e.stage)));let a=s(`span`,`pr-queue-top`);a.append(s(`strong`,`pr-queue-ref`,e.key),s(`span`,`pr-queue-title`,e.title));let o=s(`span`,`pr-queue-bottom`);o.append(s(`span`,`pr-queue-owner`,`Yours`),q(e,{hasGlyph:!1})),t&&o.append(s(`span`,`my-pr-stage`,`Stacked on ${t}`));let c=e.state===`MERGED`?e.mergedAt:null,l=c?`merged ${E(Date.parse(c))}`:`opened ${E(Date.parse(e.createdAt))}`;o.append(s(`span`,`pr-queue-elapsed`,l));let u=me(e,U.isFeatureEnabled(R),E(e.keepMergeableAttempt?.at));if(u){let e=s(`span`,`my-pr-stage`,u.text);e.dataset.tone=u.tone,e.title=u.title,o.append(e)}r.append(i,a,o);let d=s(`div`,`my-pr-row-group`);d.append(r);let f=et(n);return f&&d.append(f),{group:d,row:r}}function nt(e){z=e,Y(v().prs.find(e=>e.key===z))}function Q(){let{prs:e,status:t}=v();R=t,z&&Y(e.find(e=>e.key===z)),L?.onChange()}function rt(e,t){return H=t?.openTerminal??null,L=e,I||(I=s(`div`,`pr-detail-mine`),ee(it),Q(),I)}function it(e){switch(e.kind){case`prs`:Q();return;case`session-state`:Z();return;case`merge-result`:ot(e.message);return;case`connection`:at(e.isConnected)}}function at(e){if(!e){for(let[e,t]of V)window.clearTimeout(t.timer),B.set(e,{head:t.head,phase:`failed`,text:Ue});V.size!==0&&(V.clear(),Q())}}function ot(e){let t=Be(e);if(!t)return;let n=V.get(t.key);if(!n||n.requestId!==t.requestId)return;if(window.clearTimeout(n.timer),V.delete(t.key),!t.ok){K(t.key,n.head,`failed`,t.error||`The merge failed.`);return}if(K(t.key,n.head,t.kind??`unconfirmed`,``),t.kind!==`merged`)return;let r=v().prs.find(e=>e.key===t.key);r&&ae([r])}var st={minPx:220,maxPx:720},ct=16,$=new Set,lt=0;function ut(e){let t=D();e.toggleAttribute(`data-queue-collapsed`,t),e.querySelector(`.pr-queue-toggle`)?.setAttribute(`aria-expanded`,String(!t));let n=O();n===null?e.style.removeProperty(`--pr-queue-width`):e.style.setProperty(`--pr-queue-width`,`${n}px`)}function dt(){for(let e of $)e.isConnected?ut(e):$.delete(e)}function ft(e,t){let n=s(`div`,`pr-queue-head`);return e&&n.append(e),t&&n.append(t),n}function pt(e){let t=s(`div`,`pr-queue-foot`);return e&&t.append(e),t}function mt({queueLabel:e,scopeTabs:t,resizerLabel:n}){let r=s(`div`,`pr-columns`),i=s(`div`,`pr-queue-pane`),a=s(`nav`,`pr-queue`);a.id=`pr-queue-${++lt}`,a.setAttribute(`aria-label`,e);let o=s(`button`,`pr-queue-toggle`);o.type=`button`,o.setAttribute(`aria-label`,`Review queue`),o.setAttribute(`aria-controls`,a.id),o.title=`Collapse or expand the review queue`;let c=oe(16,16);c.append(b(`rect`,{x:`1.5`,y:`2`,width:`13`,height:`12`,rx:`2`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.3`})),c.append(b(`path`,{d:`M5.5 2V14`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.3`}));let l=b(`path`,{d:`M11 6L9 8L11 10`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.3`,"stroke-linecap":`round`,"stroke-linejoin":`round`});l.classList.add(`pr-queue-chevron`),c.append(l),o.append(c),o.addEventListener(`click`,()=>{se(!D()),dt()});let u=pt(null);i.append(ft(t,o),a,u);let d=s(`div`,`pr-queue-resizer`);d.setAttribute(`role`,`separator`),d.setAttribute(`aria-orientation`,`vertical`),d.setAttribute(`aria-label`,n),d.tabIndex=0;let f=s(`main`,`pr-detail-host`);return r.append(i,d,f),ut(r),$.add(r),ne({resizer:d,column:i,widthHost:r,widthProperty:`--pr-queue-width`,bounds:st,keyStepPx:ct,getStoredWidth:O,setStoredWidth:h}),{columns:r,queue:a,foot:u,detail:f}}function ht({label:e,scopes:t,selected:n,onSelect:r,extraClassName:i,countClassPrefix:a}){let o=document.createElement(`div`);o.className=i?`pr-scope-tabs ${i}`:`pr-scope-tabs`,o.setAttribute(`role`,`tablist`),o.setAttribute(`aria-label`,e);let s=new Map,c=t.map(e=>{let t=document.createElement(`button`);return t.className=`pr-scope-tab`,t.type=`button`,t.dataset.scope=e.id,t.setAttribute(`role`,`tab`),t.textContent=e.label,t}),l=e=>{for(let[n,r]of c.entries()){let i=t[n].id===e;r.setAttribute(`aria-selected`,String(i)),r.tabIndex=i?0:-1}},u=(e,n)=>{l(t[e].id),r(t[e].id),n&&c[e].focus()};for(let[e,t]of c.entries())t.addEventListener(`click`,()=>u(e,!1)),t.addEventListener(`keydown`,t=>{let n=re(t.key,e,c.length,`horizontal`);n!==null&&(t.preventDefault(),u(n,!0))});return o.append(...c.map((e,n)=>{if(!a)return e;let r=document.createElement(`span`);r.className=a,r.setAttribute(`role`,`presentation`);let i=document.createElement(`span`);return i.className=`${a}-count`,i.dataset.scopeCount=t[n].id,s.set(t[n].id,i),r.append(e,i),r})),l(n),{element:o,select:l,countElementByScope:s}}export{We as a,Z as c,Fe as d,ft as i,nt as l,mt as n,tt as o,pt as r,rt as s,ht as t,F as u};
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{A as e,B as t,C as n,D as r,E as i,F as a,H as o,K as s,L as c,N as l,O as u,P as d,R as ee,S as f,T as p,V as te,j as m,k as ne,v as h,w as g,y as _,z as v}from"./updates-view-core-B_e7uWeW.js";import{c as y,n as b,o as x,p as S,r as C,u as w}from"./dom-helpers-C7P3_59O.js";import{u as T}from"./control-ws-BYg67aMo.js";import{a as E}from"./modal-Bh-cVr-I.js";import{F as D,Fr as O,I as k,L as re,Lr as A,P as ie,Rr as j,_ as ae,h as M,m as N,mn as oe,p as se,pn as ce}from"./index-BcDfmAuk.js";import{createInvestigationDialog as le,createRadarReportDialog as P}from"./dialogs-KuXZnfwC.js";var ue=4e3;function de({render:e,holdMs:t=ue,setTimer:n=setTimeout,clearTimer:r=clearTimeout}){let i=new Set,a=!1,o=null;function s(e){(o===null||e)&&(o!==null&&r(o),o=n(c,t))}function c(){o=null,i.size>0?s(!1):a&&(a=!1,e())}return{begin(e){i.add(e)},settle(e){i.delete(e),s(!0)},request(){i.size===0&&o===null?e():(a=!0,s(!1))},_state(){return{pending:i.size,held:a,armed:o!==null}}}}var F=null,I=`http://www.w3.org/2000/svg`,L=de({render:Q}),R=null,z=new Map,B=new WeakMap,fe=`this issue`,V=se(()=>F),pe={spiking:`spiking`,regressed:`regressed`,worsened:`worsened`,new:`new`,quiet:`quiet`},H=[{columnId:`stripe`,headText:``,cellClass:`radar-stripe`,track:`auto`,phoneTrack:`auto`,isMagnitude:!1,startsActionCluster:!1},{columnId:`change`,headText:``,cellClass:`radar-change`,track:`auto`,phoneTrack:`minmax(68px, auto)`,isMagnitude:!1,startsActionCluster:!1},{columnId:`copy`,headText:``,cellClass:`radar-issue-copy`,track:`minmax(0, 1fr)`,phoneTrack:`minmax(0, 1fr)`,isMagnitude:!1,startsActionCluster:!0},{columnId:`occurrences`,headText:`Occurrences`,cellClass:`radar-metric`,track:`max-content`,phoneTrack:``,isMagnitude:!0,startsActionCluster:!1},{columnId:`users`,headText:`Users`,cellClass:`radar-metric`,track:`max-content`,phoneTrack:``,isMagnitude:!0,startsActionCluster:!1},{columnId:`trend`,headText:`Trend`,cellClass:`radar-issue-trend`,track:`max-content`,phoneTrack:``,isMagnitude:!0,startsActionCluster:!1}],me=H.map(e=>e.track).join(` `),he=H.filter(e=>!e.isMagnitude).map(e=>e.phoneTrack).join(` `),ge=H.findIndex(e=>e.startsActionCluster)+1,U=3e4;function W(e){let t=x(`div`,e);return t.style.setProperty(`--radar-issue-grid`,me),t.style.setProperty(`--radar-issue-grid-phone`,he),t.style.setProperty(`--radar-issue-actions-start`,String(ge)),t}function G(e,t){let n=x(`span`,`radar-issue-magnitudes`),r=!1;for(let i of H){let a=t(i);i.isMagnitude?(r||=(e.append(n),!0),n.append(a)):e.append(a)}}function K(e){return Number.isFinite(e)?String(e):`0`}function _e(e){return typeof e!=`number`||!Number.isFinite(e)||e<=0?``:`elapsed ${M(Date.now()-e)}`}function q(e){return typeof e?.issueId==`string`?e.issueId:``}function J(e,t){return[String(e??``),String(t??``)].join(`::`)}function ve(e,t,n){let r=z.get(J(e,t));if(!r||!r.copy.isConnected)return!1;let i=u(n);return i?(r.summary||(r.summary=x(`span`,`radar-issue-summary`),r.copy.insertBefore(r.summary,r.copy.querySelector(`.radar-issue-meta`))),r.summary.textContent=i,!0):(r.summary?.remove(),r.summary=null,!0)}function ye(e,t,n){let r=q(e);if(!r)return;R?.dialog.close();let i=le({issueTitle:String(e.title||r),projectLabel:n,onOpenReport:()=>X(e)});R={projectId:String(t??``),issueId:r,dialog:i},i.update(g(e))}function Y(){if(!R)return;if(!R.dialog.isOpen()){R=null;return}let e=h(D().latest,R.projectId,R.issueId);e&&R.dialog.update(g(e))}function X(e){let t=q(e);t&&T(`get-radar-report`,{issueId:t},{timeoutMs:O}).then(n=>{n.ok?n.found?P({issueId:t,issueTitle:String(e.title??``),format:String(n.format??``),content:String(n.content||``)}):P({issueId:t,issueTitle:String(e.title??``),message:String(n.message||`Report not found`)}):P({issueId:t,issueTitle:String(e.title??``),error:String(n.error||`Could not read report`)})}).catch(n=>{P({issueId:t,issueTitle:String(e.title??``),error:j(n,O)})})}function be(){let e=x(`div`,`radar-issue-actions`),t=x(`span`,`radar-issue-action-status`);t.setAttribute(`role`,`status`),e.append(t);let n=[],r=null,i=()=>{r?.remove(),r=null},a=t=>{i(),r=t,e.append(t)},o=e=>{for(let t of n)t.disabled=e};return{addButton:(r,i,a)=>{let o=x(`button`,`radar-issue-action`,r);return o.type=`button`,o.title=i,o.addEventListener(`click`,e=>{e.stopPropagation(),a()}),n.push(o),e.insertBefore(o,t),o},request:(e,n,r,a,s,c=null)=>{L.begin(e),o(!0),i(),A(t,`busy`,a);let l=(n,r)=>{o(!1),i(),A(t,n,r),L.settle(e)};T(n,r,{timeoutMs:U}).then(e=>{e.ok?(l(`ok`,s(e)),c&&c(e)):l(`error`,String(e.error||`Request failed`))}).catch(e=>l(`error`,j(e,U)))},showFollowUp:a,wrap:e}}function xe(e){let t=x(`button`,`radar-issue-action radar-open-trace`,`Open trace`);return t.type=`button`,t.title=`Open the session trace`,t.addEventListener(`click`,t=>{t.stopPropagation(),Ve(e)}),t}function Se(e,t,n){let{addButton:r,request:i,showFollowUp:a,wrap:o}=be(),s=(n,r,a,o,s=null)=>i(`${n}:${e.issueId}`,n,{projectId:t,issueId:e.issueId,...r},a,o,s);return e.inFlight&&r(`View investigation`,`Watch the running investigation`,()=>ye(e,t,n)),!e.inFlight&&e.verdict&&q(e)&&r(`Open report`,`Open the investigation report for this issue`,()=>X(e)),e.inFlight||r(`Open session`,`Paste an investigation prompt into the mapped project session`,()=>{s(`radar-open-session`,{},`Opening session`,e=>e.pending?`Starting ${String(e.sessionName||`session`)}; the prompt lands when it is up`:`Prompt pasted into ${String(e.sessionName||`the session`)}; press Enter there`,e=>{typeof e.sessionId==`string`&&D().traceOpener&&a(xe(e.sessionId))})}),r(`Resolve`,`Mark this issue resolved in PostHog`,()=>{s(`radar-issue-action`,{action:`resolve`},`Resolving in PostHog`,()=>`Marked resolved`)}),r(`Suppress`,`Suppress this issue in PostHog`,()=>{E({title:`Suppress issue`,message:`This marks the issue suppressed in PostHog for everyone on the project.`,confirmLabel:`Suppress`,danger:!0,onConfirm:()=>s(`radar-issue-action`,{action:`suppress`},`Suppressing in PostHog`,()=>`Marked suppressed`)})}),o}function Ce(e){return ce()?fe:e}function we(e){let t=B.get(e);t&&(e.title=t())}function Te(){if(F)for(let e of F.querySelectorAll(`.radar-issue-reportable`))we(e)}oe(Te);function Ee(e,t,n){e.classList.add(`radar-issue-reportable`),B.set(e,t),we(e),e.addEventListener(`click`,e=>{e.target instanceof Element&&(e.target.closest(`a, button`)||n())})}function De(n,a,o){let l=x(`div`,`radar-issue`);l.dataset.severity=c(n.change);let d=x(`span`,`radar-stripe`);d.setAttribute(`aria-hidden`,`true`);let ee=x(`span`,`radar-change`,pe[n.change??``]||String(n.change||`unknown`)),f=y(`radar-issue-title`,String(n.title||`Untitled issue`),n.url,String(n.title||``)),p=x(`span`,`radar-metric`);p.append(x(`span`,`radar-metric-value`,K(n.occurrences)),x(`span`,`radar-metric-label`,`occ`));let m=x(`span`,`radar-metric`);m.append(x(`span`,`radar-metric-value`,K(n.users)),x(`span`,`radar-metric-label`,`users`));let h=e(n.history),g=t(h,64,16),_=g?document.createElementNS(I,`svg`):null;if(_){_.classList.add(`radar-sparkline`),_.setAttribute(`viewBox`,`0 0 64 16`),_.setAttribute(`width`,`64`),_.setAttribute(`height`,`16`),_.setAttribute(`role`,`img`),_.setAttribute(`focusable`,`false`);let e=document.createElementNS(I,`title`);e.textContent=te(h);let t=document.createElementNS(I,`polyline`);t.setAttribute(`points`,g),_.append(e,t)}let v=u(n),b=x(`span`,`radar-issue-copy`);b.append(f);let S=null;v&&(S=x(`span`,`radar-issue-summary`),S.textContent=v,b.append(S)),z.set(J(a,n.issueId),{copy:b,summary:S});let C=x(`span`,`radar-issue-meta`),w=i(n);if(w!==null){let e=x(`span`,`radar-issue-seen`);e.title=new Date(w).toLocaleString(),V.track(e,w,N),C.append(e)}let T=r(n);T&&C.append(x(`span`,`radar-issue-status`,T));let E=String(n.title||n.issueId);if(n.inFlight){let e=x(`span`,`radar-verdict`,`investigating`);e.dataset.verdict=`INVESTIGATING`,C.append(e);let t=typeof n.startedAt==`number`?n.startedAt:null;if(t!==null&&Number.isFinite(t)&&t>0){let e=x(`span`,`radar-issue-elapsed`);V.track(e,t,_e),C.append(e)}q(n)&&Ee(l,()=>`Watch the investigation of ${Ce(E)}`,()=>ye(n,a,o))}if(!n.inFlight&&n.verdict){let e=x(`span`,`radar-verdict`,s(n.verdict));e.dataset.verdict=n.verdict,C.append(e),q(n)&&Ee(l,()=>`View investigation report for ${Ce(E)}`,()=>X(n))}C.childElementCount>0&&b.append(C);let D=x(`span`,`radar-issue-trend`);_&&D.append(_);let O=ne(h);if(O){let e=O.direction===`up`?`+`:O.direction===`down`?`-`:`=`,t=x(`span`,`radar-delta`,`${e}${O.percent}%`);t.dataset.direction=O.direction,D.append(t)}let k={stripe:d,change:ee,copy:b,occurrences:p,users:m,trend:D};return G(l,e=>k[e.columnId]),q(n)&&l.append(Se(n,a,o)),l}var Z=(e,t,n)=>C(`radar`,e,t,n);function Oe(e){return e.error?`poll failed: ${e.error}`:e.staleMs>0?`stale ${M(e.staleMs)}`:``}function ke(e,t,{showHost:n,nameTag:r,nameClass:i,hostClass:a}){let o=x(r,i,l(t));o.title=String(t.name||``),e.append(o);let s=n?ee(t.host):``;s&&e.append(x(`span`,a,s))}function Ae(){let e=W(`radar-column-heads`);for(let t of H){if(!t.headText){e.append(x(`span`));continue}let n=x(`span`,`radar-column-head`,t.headText);n.dataset.column=t.columnId,e.append(n)}return e}function je(e,t){let n=e.project,r=x(`div`,`radar-project`),i=v(n.issues),a=o(i),s=x(`div`,`radar-project-head`);ke(s,n,{showHost:t,nameTag:`h3`,nameClass:`radar-project-name`,hostClass:`radar-project-host`}),r.append(s);let c=x(`div`,`radar-project-summary`);c.append(Z(a.active===1?`active issue`:`active issues`,K(a.active))),c.append(Z(`spiking`,K(a.spiking),a.spiking>0?`crit`:null)),c.append(Z(`needs you`,K(a.needsHuman),a.needsHuman>0?`warn`:null));let u=Oe(e);if(u){let t=x(`span`,`radar-project-alert`,u);t.dataset.tone=e.error?`crit`:`warn`,c.append(t)}if(r.append(c),i.length===0)return r;r.append(Ae());let d=W(`radar-issues`);for(let e of i)d.append(De(e,n.projectId,l(n)));return r.append(d),r}function Me(e,t){let n=e.project,r=x(`div`,`radar-quiet-row`),i=x(`span`,`radar-quiet-dot`);return i.setAttribute(`aria-hidden`,`true`),r.append(i),ke(r,n,{showHost:t,nameTag:`span`,nameClass:`radar-quiet-name`,hostClass:`radar-quiet-host`}),r.append(x(`span`,`radar-quiet-count`,`0 issues`)),r}var Ne=(e,t)=>b(`radar`,e,t);function Pe(){let e=x(`div`,`radar-issue`);return e.dataset.skeleton=``,G(e,e=>x(`span`,e.cellClass)),e}function Fe(){let e=W(`radar-issues`);e.setAttribute(`aria-busy`,`true`),e.setAttribute(`aria-label`,`Loading issues`);for(let t=0;t<5;t+=1)e.append(Pe());return e}function Ie(e){return e?.configured===!1?typeof e.reason==`string`&&e.reason.trim()!==``?`Fix it in`:`Switch it on in`:``}function Le(e,t=`ready`){let n=Ne(`Errors`);if(t===`pending`)return n.append(Fe()),n;if(t===`placeholder`||e.length===0){let e=x(`p`,`radar-unconfigured`,a(D().latest)),t=ae(`lanes-posthog`,`posthog-enabled`,`PostHog settings`),r=Ie(D().latest);return e.append(document.createTextNode(r?` ${r} `:` `),t),n.append(e),n}let r=x(`div`,`radar-global-tick`),i=Number(D().latest?.intervalMinutes);V.track(r,D().latest?.ts,e=>{let t=`polled ${N(e)}`;return!Number.isFinite(i)||i<=0?t:`${t}, every ${i}m`}),n.append(r);let o=i>0?i*6e4:0,{loud:s,quiet:c}=m(e,Date.now(),{intervalMs:o}),l=f(e);for(let e of s)n.append(je(e,l));if(c.length===0)return n;let u=x(`div`,`radar-quiet`);for(let e of c)u.append(Me(e,l));return n.append(u),n}function Re(e){let{addButton:t,request:n,wrap:r}=be();return e.issueId&&t(`Open report`,`Open the investigation report for this issue`,()=>{X({issueId:e.issueId,title:e.title})}),t(`Archive`,`Remove this investigation from the inbox`,()=>{n(`archive:${e.id}`,`radar-archive-investigation`,{id:e.id},`Archiving`,()=>`Archived`,()=>ie(e.id))}),r}function ze(e){let t=x(`div`,`radar-investigation`),n=x(`span`,`radar-verdict`,s(e.verdict));n.dataset.verdict=e.verdict;let r=y(`radar-issue-title`,e.title,e.url),i=x(`span`,`radar-issue-copy`);if(i.append(r),e.summaryLine){let t=x(`span`,`radar-issue-summary`);t.textContent=e.summaryLine,i.append(t)}if(e.prUrl){let t=x(`a`,`radar-investigation-pr`,`fix PR`);t.href=e.prUrl,t.target=`_blank`,t.rel=`noopener`,t.title=e.prUrl,i.append(t)}if(t.append(n),e.mode===`fix`){let e=x(`span`,`radar-verdict`,`fix`);e.dataset.mode=`fix`,t.append(e)}if(t.append(i),e.projectLabel){let n=x(`span`,`radar-investigation-project`);n.textContent=e.projectLabel,t.append(n)}if(e.at>0){let n=x(`span`,`radar-investigation-time`,N(e.at));n.title=new Date(e.at).toLocaleString(),t.append(n)}return t.append(Re(e)),t}function Be(e){let t=Ne(`Investigations`,`completed, not yet archived`),n=x(`div`,`radar-investigations`);for(let t of e)n.append(ze(t));return t.append(n),t}function Ve(e){D().traceOpener?.(e)}function Q(){if(!F)return;F.textContent=``,z.clear(),V.reset();let{latest:e,archivedLocally:t}=D(),r=S(e),i=n(e,t),a=d(e,r.length);F.append(Le(r,a)),i.length>0&&F.append(Be(i))}function $(){L.request()}function He(e){R?.dialog.isOpen()&&p(R,e)&&R.dialog.update(_(e))}function Ue(e){if(e.kind===`status`)$(),Y();else if(e.kind===`investigation-activity`){Y();let t=h(D().latest,e.projectId,e.issueId);if(e.wasInFlight&&ve(e.projectId,e.issueId,t))return;$()}else e.isPatched?(Y(),$()):He(e.frame)}function We(e){if(F)return;let t=x(`div`,`radar-content`);e.appendChild(t),F=t,k(()=>!w(F)),re(Ue),V.ensure(),Q()}var Ge={mount:We};export{Ge as view};
|
|
1
|
+
import{A as e,B as t,C as n,D as r,E as i,F as a,H as o,K as s,L as c,N as l,O as u,P as d,R as ee,S as f,T as p,V as te,j as m,k as ne,v as h,w as g,y as _,z as v}from"./updates-view-core-B_e7uWeW.js";import{c as y,n as b,o as x,p as S,r as C,u as w}from"./dom-helpers-C7P3_59O.js";import{d as T}from"./control-ws-D_jLoMnn.js";import{a as E}from"./modal-Bh-cVr-I.js";import{F as D,Fr as O,I as k,L as re,Lr as A,P as ie,Rr as j,_ as ae,h as M,m as N,mn as oe,p as se,pn as ce}from"./index-DkVH8Ze_.js";import{createInvestigationDialog as le,createRadarReportDialog as P}from"./dialogs-jfKnZPRt.js";var ue=4e3;function de({render:e,holdMs:t=ue,setTimer:n=setTimeout,clearTimer:r=clearTimeout}){let i=new Set,a=!1,o=null;function s(e){(o===null||e)&&(o!==null&&r(o),o=n(c,t))}function c(){o=null,i.size>0?s(!1):a&&(a=!1,e())}return{begin(e){i.add(e)},settle(e){i.delete(e),s(!0)},request(){i.size===0&&o===null?e():(a=!0,s(!1))},_state(){return{pending:i.size,held:a,armed:o!==null}}}}var F=null,I=`http://www.w3.org/2000/svg`,L=de({render:Q}),R=null,z=new Map,B=new WeakMap,fe=`this issue`,V=se(()=>F),pe={spiking:`spiking`,regressed:`regressed`,worsened:`worsened`,new:`new`,quiet:`quiet`},H=[{columnId:`stripe`,headText:``,cellClass:`radar-stripe`,track:`auto`,phoneTrack:`auto`,isMagnitude:!1,startsActionCluster:!1},{columnId:`change`,headText:``,cellClass:`radar-change`,track:`auto`,phoneTrack:`minmax(68px, auto)`,isMagnitude:!1,startsActionCluster:!1},{columnId:`copy`,headText:``,cellClass:`radar-issue-copy`,track:`minmax(0, 1fr)`,phoneTrack:`minmax(0, 1fr)`,isMagnitude:!1,startsActionCluster:!0},{columnId:`occurrences`,headText:`Occurrences`,cellClass:`radar-metric`,track:`max-content`,phoneTrack:``,isMagnitude:!0,startsActionCluster:!1},{columnId:`users`,headText:`Users`,cellClass:`radar-metric`,track:`max-content`,phoneTrack:``,isMagnitude:!0,startsActionCluster:!1},{columnId:`trend`,headText:`Trend`,cellClass:`radar-issue-trend`,track:`max-content`,phoneTrack:``,isMagnitude:!0,startsActionCluster:!1}],me=H.map(e=>e.track).join(` `),he=H.filter(e=>!e.isMagnitude).map(e=>e.phoneTrack).join(` `),ge=H.findIndex(e=>e.startsActionCluster)+1,U=3e4;function W(e){let t=x(`div`,e);return t.style.setProperty(`--radar-issue-grid`,me),t.style.setProperty(`--radar-issue-grid-phone`,he),t.style.setProperty(`--radar-issue-actions-start`,String(ge)),t}function G(e,t){let n=x(`span`,`radar-issue-magnitudes`),r=!1;for(let i of H){let a=t(i);i.isMagnitude?(r||=(e.append(n),!0),n.append(a)):e.append(a)}}function K(e){return Number.isFinite(e)?String(e):`0`}function _e(e){return typeof e!=`number`||!Number.isFinite(e)||e<=0?``:`elapsed ${M(Date.now()-e)}`}function q(e){return typeof e?.issueId==`string`?e.issueId:``}function J(e,t){return[String(e??``),String(t??``)].join(`::`)}function ve(e,t,n){let r=z.get(J(e,t));if(!r||!r.copy.isConnected)return!1;let i=u(n);return i?(r.summary||(r.summary=x(`span`,`radar-issue-summary`),r.copy.insertBefore(r.summary,r.copy.querySelector(`.radar-issue-meta`))),r.summary.textContent=i,!0):(r.summary?.remove(),r.summary=null,!0)}function ye(e,t,n){let r=q(e);if(!r)return;R?.dialog.close();let i=le({issueTitle:String(e.title||r),projectLabel:n,onOpenReport:()=>X(e)});R={projectId:String(t??``),issueId:r,dialog:i},i.update(g(e))}function Y(){if(!R)return;if(!R.dialog.isOpen()){R=null;return}let e=h(D().latest,R.projectId,R.issueId);e&&R.dialog.update(g(e))}function X(e){let t=q(e);t&&T(`get-radar-report`,{issueId:t},{timeoutMs:O}).then(n=>{n.ok?n.found?P({issueId:t,issueTitle:String(e.title??``),format:String(n.format??``),content:String(n.content||``)}):P({issueId:t,issueTitle:String(e.title??``),message:String(n.message||`Report not found`)}):P({issueId:t,issueTitle:String(e.title??``),error:String(n.error||`Could not read report`)})}).catch(n=>{P({issueId:t,issueTitle:String(e.title??``),error:j(n,O)})})}function be(){let e=x(`div`,`radar-issue-actions`),t=x(`span`,`radar-issue-action-status`);t.setAttribute(`role`,`status`),e.append(t);let n=[],r=null,i=()=>{r?.remove(),r=null},a=t=>{i(),r=t,e.append(t)},o=e=>{for(let t of n)t.disabled=e};return{addButton:(r,i,a)=>{let o=x(`button`,`radar-issue-action`,r);return o.type=`button`,o.title=i,o.addEventListener(`click`,e=>{e.stopPropagation(),a()}),n.push(o),e.insertBefore(o,t),o},request:(e,n,r,a,s,c=null)=>{L.begin(e),o(!0),i(),A(t,`busy`,a);let l=(n,r)=>{o(!1),i(),A(t,n,r),L.settle(e)};T(n,r,{timeoutMs:U}).then(e=>{e.ok?(l(`ok`,s(e)),c&&c(e)):l(`error`,String(e.error||`Request failed`))}).catch(e=>l(`error`,j(e,U)))},showFollowUp:a,wrap:e}}function xe(e){let t=x(`button`,`radar-issue-action radar-open-trace`,`Open trace`);return t.type=`button`,t.title=`Open the session trace`,t.addEventListener(`click`,t=>{t.stopPropagation(),Ve(e)}),t}function Se(e,t,n){let{addButton:r,request:i,showFollowUp:a,wrap:o}=be(),s=(n,r,a,o,s=null)=>i(`${n}:${e.issueId}`,n,{projectId:t,issueId:e.issueId,...r},a,o,s);return e.inFlight&&r(`View investigation`,`Watch the running investigation`,()=>ye(e,t,n)),!e.inFlight&&e.verdict&&q(e)&&r(`Open report`,`Open the investigation report for this issue`,()=>X(e)),e.inFlight||r(`Open session`,`Paste an investigation prompt into the mapped project session`,()=>{s(`radar-open-session`,{},`Opening session`,e=>e.pending?`Starting ${String(e.sessionName||`session`)}; the prompt lands when it is up`:`Prompt pasted into ${String(e.sessionName||`the session`)}; press Enter there`,e=>{typeof e.sessionId==`string`&&D().traceOpener&&a(xe(e.sessionId))})}),r(`Resolve`,`Mark this issue resolved in PostHog`,()=>{s(`radar-issue-action`,{action:`resolve`},`Resolving in PostHog`,()=>`Marked resolved`)}),r(`Suppress`,`Suppress this issue in PostHog`,()=>{E({title:`Suppress issue`,message:`This marks the issue suppressed in PostHog for everyone on the project.`,confirmLabel:`Suppress`,danger:!0,onConfirm:()=>s(`radar-issue-action`,{action:`suppress`},`Suppressing in PostHog`,()=>`Marked suppressed`)})}),o}function Ce(e){return ce()?fe:e}function we(e){let t=B.get(e);t&&(e.title=t())}function Te(){if(F)for(let e of F.querySelectorAll(`.radar-issue-reportable`))we(e)}oe(Te);function Ee(e,t,n){e.classList.add(`radar-issue-reportable`),B.set(e,t),we(e),e.addEventListener(`click`,e=>{e.target instanceof Element&&(e.target.closest(`a, button`)||n())})}function De(n,a,o){let l=x(`div`,`radar-issue`);l.dataset.severity=c(n.change);let d=x(`span`,`radar-stripe`);d.setAttribute(`aria-hidden`,`true`);let ee=x(`span`,`radar-change`,pe[n.change??``]||String(n.change||`unknown`)),f=y(`radar-issue-title`,String(n.title||`Untitled issue`),n.url,String(n.title||``)),p=x(`span`,`radar-metric`);p.append(x(`span`,`radar-metric-value`,K(n.occurrences)),x(`span`,`radar-metric-label`,`occ`));let m=x(`span`,`radar-metric`);m.append(x(`span`,`radar-metric-value`,K(n.users)),x(`span`,`radar-metric-label`,`users`));let h=e(n.history),g=t(h,64,16),_=g?document.createElementNS(I,`svg`):null;if(_){_.classList.add(`radar-sparkline`),_.setAttribute(`viewBox`,`0 0 64 16`),_.setAttribute(`width`,`64`),_.setAttribute(`height`,`16`),_.setAttribute(`role`,`img`),_.setAttribute(`focusable`,`false`);let e=document.createElementNS(I,`title`);e.textContent=te(h);let t=document.createElementNS(I,`polyline`);t.setAttribute(`points`,g),_.append(e,t)}let v=u(n),b=x(`span`,`radar-issue-copy`);b.append(f);let S=null;v&&(S=x(`span`,`radar-issue-summary`),S.textContent=v,b.append(S)),z.set(J(a,n.issueId),{copy:b,summary:S});let C=x(`span`,`radar-issue-meta`),w=i(n);if(w!==null){let e=x(`span`,`radar-issue-seen`);e.title=new Date(w).toLocaleString(),V.track(e,w,N),C.append(e)}let T=r(n);T&&C.append(x(`span`,`radar-issue-status`,T));let E=String(n.title||n.issueId);if(n.inFlight){let e=x(`span`,`radar-verdict`,`investigating`);e.dataset.verdict=`INVESTIGATING`,C.append(e);let t=typeof n.startedAt==`number`?n.startedAt:null;if(t!==null&&Number.isFinite(t)&&t>0){let e=x(`span`,`radar-issue-elapsed`);V.track(e,t,_e),C.append(e)}q(n)&&Ee(l,()=>`Watch the investigation of ${Ce(E)}`,()=>ye(n,a,o))}if(!n.inFlight&&n.verdict){let e=x(`span`,`radar-verdict`,s(n.verdict));e.dataset.verdict=n.verdict,C.append(e),q(n)&&Ee(l,()=>`View investigation report for ${Ce(E)}`,()=>X(n))}C.childElementCount>0&&b.append(C);let D=x(`span`,`radar-issue-trend`);_&&D.append(_);let O=ne(h);if(O){let e=O.direction===`up`?`+`:O.direction===`down`?`-`:`=`,t=x(`span`,`radar-delta`,`${e}${O.percent}%`);t.dataset.direction=O.direction,D.append(t)}let k={stripe:d,change:ee,copy:b,occurrences:p,users:m,trend:D};return G(l,e=>k[e.columnId]),q(n)&&l.append(Se(n,a,o)),l}var Z=(e,t,n)=>C(`radar`,e,t,n);function Oe(e){return e.error?`poll failed: ${e.error}`:e.staleMs>0?`stale ${M(e.staleMs)}`:``}function ke(e,t,{showHost:n,nameTag:r,nameClass:i,hostClass:a}){let o=x(r,i,l(t));o.title=String(t.name||``),e.append(o);let s=n?ee(t.host):``;s&&e.append(x(`span`,a,s))}function Ae(){let e=W(`radar-column-heads`);for(let t of H){if(!t.headText){e.append(x(`span`));continue}let n=x(`span`,`radar-column-head`,t.headText);n.dataset.column=t.columnId,e.append(n)}return e}function je(e,t){let n=e.project,r=x(`div`,`radar-project`),i=v(n.issues),a=o(i),s=x(`div`,`radar-project-head`);ke(s,n,{showHost:t,nameTag:`h3`,nameClass:`radar-project-name`,hostClass:`radar-project-host`}),r.append(s);let c=x(`div`,`radar-project-summary`);c.append(Z(a.active===1?`active issue`:`active issues`,K(a.active))),c.append(Z(`spiking`,K(a.spiking),a.spiking>0?`crit`:null)),c.append(Z(`needs you`,K(a.needsHuman),a.needsHuman>0?`warn`:null));let u=Oe(e);if(u){let t=x(`span`,`radar-project-alert`,u);t.dataset.tone=e.error?`crit`:`warn`,c.append(t)}if(r.append(c),i.length===0)return r;r.append(Ae());let d=W(`radar-issues`);for(let e of i)d.append(De(e,n.projectId,l(n)));return r.append(d),r}function Me(e,t){let n=e.project,r=x(`div`,`radar-quiet-row`),i=x(`span`,`radar-quiet-dot`);return i.setAttribute(`aria-hidden`,`true`),r.append(i),ke(r,n,{showHost:t,nameTag:`span`,nameClass:`radar-quiet-name`,hostClass:`radar-quiet-host`}),r.append(x(`span`,`radar-quiet-count`,`0 issues`)),r}var Ne=(e,t)=>b(`radar`,e,t);function Pe(){let e=x(`div`,`radar-issue`);return e.dataset.skeleton=``,G(e,e=>x(`span`,e.cellClass)),e}function Fe(){let e=W(`radar-issues`);e.setAttribute(`aria-busy`,`true`),e.setAttribute(`aria-label`,`Loading issues`);for(let t=0;t<5;t+=1)e.append(Pe());return e}function Ie(e){return e?.configured===!1?typeof e.reason==`string`&&e.reason.trim()!==``?`Fix it in`:`Switch it on in`:``}function Le(e,t=`ready`){let n=Ne(`Errors`);if(t===`pending`)return n.append(Fe()),n;if(t===`placeholder`||e.length===0){let e=x(`p`,`radar-unconfigured`,a(D().latest)),t=ae(`lanes-posthog`,`posthog-enabled`,`PostHog settings`),r=Ie(D().latest);return e.append(document.createTextNode(r?` ${r} `:` `),t),n.append(e),n}let r=x(`div`,`radar-global-tick`),i=Number(D().latest?.intervalMinutes);V.track(r,D().latest?.ts,e=>{let t=`polled ${N(e)}`;return!Number.isFinite(i)||i<=0?t:`${t}, every ${i}m`}),n.append(r);let o=i>0?i*6e4:0,{loud:s,quiet:c}=m(e,Date.now(),{intervalMs:o}),l=f(e);for(let e of s)n.append(je(e,l));if(c.length===0)return n;let u=x(`div`,`radar-quiet`);for(let e of c)u.append(Me(e,l));return n.append(u),n}function Re(e){let{addButton:t,request:n,wrap:r}=be();return e.issueId&&t(`Open report`,`Open the investigation report for this issue`,()=>{X({issueId:e.issueId,title:e.title})}),t(`Archive`,`Remove this investigation from the inbox`,()=>{n(`archive:${e.id}`,`radar-archive-investigation`,{id:e.id},`Archiving`,()=>`Archived`,()=>ie(e.id))}),r}function ze(e){let t=x(`div`,`radar-investigation`),n=x(`span`,`radar-verdict`,s(e.verdict));n.dataset.verdict=e.verdict;let r=y(`radar-issue-title`,e.title,e.url),i=x(`span`,`radar-issue-copy`);if(i.append(r),e.summaryLine){let t=x(`span`,`radar-issue-summary`);t.textContent=e.summaryLine,i.append(t)}if(e.prUrl){let t=x(`a`,`radar-investigation-pr`,`fix PR`);t.href=e.prUrl,t.target=`_blank`,t.rel=`noopener`,t.title=e.prUrl,i.append(t)}if(t.append(n),e.mode===`fix`){let e=x(`span`,`radar-verdict`,`fix`);e.dataset.mode=`fix`,t.append(e)}if(t.append(i),e.projectLabel){let n=x(`span`,`radar-investigation-project`);n.textContent=e.projectLabel,t.append(n)}if(e.at>0){let n=x(`span`,`radar-investigation-time`,N(e.at));n.title=new Date(e.at).toLocaleString(),t.append(n)}return t.append(Re(e)),t}function Be(e){let t=Ne(`Investigations`,`completed, not yet archived`),n=x(`div`,`radar-investigations`);for(let t of e)n.append(ze(t));return t.append(n),t}function Ve(e){D().traceOpener?.(e)}function Q(){if(!F)return;F.textContent=``,z.clear(),V.reset();let{latest:e,archivedLocally:t}=D(),r=S(e),i=n(e,t),a=d(e,r.length);F.append(Le(r,a)),i.length>0&&F.append(Be(i))}function $(){L.request()}function He(e){R?.dialog.isOpen()&&p(R,e)&&R.dialog.update(_(e))}function Ue(e){if(e.kind===`status`)$(),Y();else if(e.kind===`investigation-activity`){Y();let t=h(D().latest,e.projectId,e.issueId);if(e.wasInFlight&&ve(e.projectId,e.issueId,t))return;$()}else e.isPatched?(Y(),$()):He(e.frame)}function We(e){if(F)return;let t=x(`div`,`radar-content`);e.appendChild(t),F=t,k(()=>!w(F)),re(Ue),V.ensure(),Q()}var Ge={mount:We};export{Ge as view};
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./dom-helpers-C7P3_59O.js";import{
|
|
1
|
+
import{o as e}from"./dom-helpers-C7P3_59O.js";import{d as t}from"./control-ws-D_jLoMnn.js";var n=`claude-code`;function r(e,{defaultId:t=n}={}){let r=(Array.isArray(e)?e:[]).filter(e=>e?.resolvable&&typeof e.id==`string`&&e.id).map(e=>{let t=String(e.id);return{id:t,label:typeof e.label==`string`&&e.label?e.label:t}}),i=r.some(e=>e.id===t)?t:r.length>0?r[0].id:t;return{show:r.length>1,options:r,selectedId:i}}var i=`No supported agent CLI was found on the PATH Glimmervoid runs with. Install Claude Code (or another supported agent), make sure its command is on that PATH, then run glimmervoid doctor to confirm.`;function a(e){let t=typeof e==`object`&&e?e:null;return t===null||!Array.isArray(t.agents)||t.error||r(t.agents).options.length>0?{canSpawn:!0,guidance:``}:{canSpawn:!1,guidance:i}}var o={agent:`upcoming`,repoRoots:`upcoming`,firstSession:`upcoming`};function s(e,t){return e<t?`done`:e===t?`current`:`upcoming`}function c({agentListing:e,repoRoots:t}){let n=a(e).canSpawn?t.length===0?2:3:1;return{agent:s(1,n),repoRoots:s(2,n),firstSession:s(3,n)}}var l=[[`agent`,`agent`],[`repoRoots`,`repo_roots`],[`firstSession`,`first_session`]];function u({step:e,state:t}){return`${e}:${t}`}function d(e,t){let n=[];for(let[r,i]of l){let a=t[r];if(a===`upcoming`)continue;let o={step:i,state:a};e.has(u(o))||n.push(o)}return n}function f(e){return r(typeof e==`object`&&e?e.agents:[]).options.map(e=>e.label).join(`, `)}function p(e){return e===1?`1 git repo`:`${e} git repos`}function m(e,t){let n=[...e];for(let e of t){let t=e.trim();t&&!n.includes(t)&&n.push(t)}return n.length===e.length?null:n}function h(e,t){return e.length>0?[]:t.filter(e=>e.gitRepoCount>0).map(e=>e.path)}var g=0,_=`Could not read the current repository roots.`;function v(e){return Array.isArray(e)&&e.every(e=>typeof e==`string`)}async function y(e){let n=await t(`get-settings`,{});if(n.type!==`settings`)return _;let r=n.settings.repoRoots;if(!v(r))return _;let i=m(r,e);if(!i)return null;let a=await t(`update-settings`,{settings:{repoRoots:i}});return a.type===`settings-error`?a.message:null}function b({onAdded:t}){g+=1;let n=`repo-roots-adder-path-${g}`,r=e(`div`,`repo-roots-adder`),i=e(`div`,`repo-roots-adder-found`),a=e(`span`,`repo-roots-adder-label`,`FOUND ON THIS MACHINE`),o=e(`ul`,`repo-roots-adder-list`);i.append(a,o),i.hidden=!0;let s=e(`label`,`repo-roots-adder-label`,`TYPE A PATH`);s.htmlFor=n;let c=e(`div`,`repo-roots-adder-row`),l=e(`input`,`dialog-input repo-roots-adder-input`);l.id=n,l.type=`text`,l.placeholder=`/path/to/your/checkouts`,l.autocomplete=`off`,l.spellcheck=!1;let u=e(`button`,`btn-dialog btn-dialog-cancel`,`Add`);u.type=`button`,u.disabled=!0,c.append(l,u);let d=e(`p`,`repo-roots-adder-error`);d.setAttribute(`role`,`alert`),r.append(i,s,c,d);let f=!1;function m(e){f=e;for(let t of r.querySelectorAll(`button`))t.disabled=e;e||(u.disabled=l.value.trim()===``)}async function h(e,n){if(!f){m(!0),d.textContent=``;try{let r=await y([e]);if(r){d.textContent=r;return}l.value=``,t(n)}catch(e){d.textContent=`Could not save the folder: ${e instanceof Error?e.message:String(e)}`}finally{m(!1)}}}l.addEventListener(`input`,()=>{u.disabled=f||l.value.trim()===``}),l.addEventListener(`keydown`,e=>{e.key===`Enter`&&l.value.trim()!==``&&(e.preventDefault(),h(l.value.trim(),`typed`))}),u.addEventListener(`click`,()=>{h(l.value.trim(),`typed`)});function _(t){o.textContent=``;for(let n of t){let t=e(`li`,`repo-roots-adder-suggestion`),r=e(`button`,`btn-dialog btn-dialog-cancel`,`Add`);r.type=`button`,r.setAttribute(`aria-label`,`Add ${n.label}`),r.addEventListener(`click`,()=>{h(n.path,`suggested`)}),t.append(e(`span`,`repo-roots-adder-path`,n.label),e(`span`,`repo-roots-adder-count`,p(n.gitRepoCount)),r),o.append(t)}i.hidden=t.length===0,s.textContent=t.length>0?`OR TYPE A PATH`:`TYPE A PATH`}return{element:r,setSuggestions:_}}export{c as a,h as c,r as d,f as i,n as l,y as n,d as o,o as r,u as s,b as t,a as u};
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Q as e}from"./updates-view-core-B_e7uWeW.js";import{C as t,E as n,o as r}from"./dom-helpers-C7P3_59O.js";import{
|
|
1
|
+
import{Q as e}from"./updates-view-core-B_e7uWeW.js";import{C as t,E as n,o as r}from"./dom-helpers-C7P3_59O.js";import{d as i}from"./control-ws-D_jLoMnn.js";import{o as a}from"./card-registry-DsAFY_8B.js";import{a as o,n as s}from"./modal-Bh-cVr-I.js";import{Ar as c,Fr as l,Ir as u,Pr as d,Rr as f,zr as p}from"./index-DkVH8Ze_.js";function m(e,t){return t===n.RUNNING?e===`restart-fresh`?{title:`Restart fresh`,message:`This agent is mid-turn. A fresh restart ends this conversation and starts a new one. Restart anyway?`,confirmLabel:`Restart fresh`,danger:!0}:e===`restart-into`?{title:`Restart`,message:`This agent is mid-turn. Restarting interrupts the current turn and switches to the earlier conversation you picked. Restart anyway?`,confirmLabel:`Restart`,danger:!0}:{title:`Restart`,message:`This agent is mid-turn. Restarting interrupts the current turn and keeps this conversation. Restart anyway?`,confirmLabel:`Restart`,danger:!1}:null}function h(e,n,r,i){let a=t.includes(n)?`force-restart`:`restart`;return e===`restart-fresh`?{type:a,id:r,fresh:!0}:e===`restart-into`?{type:a,id:r,conversationId:i}:{type:a,id:r}}function g(e,t,n,r=``){let i=()=>n.send(h(e,n.readState(),t,r)),a=m(e,n.readState());a?n.confirm({...a,onConfirm:i}):i()}var _=`DORMANT`;function v(t){return t?e(Date.now()-t,{rounding:`round`,wording:`compact`,suffix:` ago`,justNowBelowSeconds:60}):``}function y(e){return[e.worktreeName,e.gitBranch?e.gitBranch.replace(/^refs\/heads\//,``):null,v(e.mtime)].filter(Boolean).join(` · `)}function b(e,t){let n=r(`button`,`resume-item`);return n.type=`button`,n.setAttribute(`role`,`option`),n.setAttribute(`aria-selected`,`false`),n.innerHTML=`<span class="resume-item-title">${d(e)}</span><span class="resume-item-meta">${d(t)}</span>`,n}async function x(e,t,n){if(t.kind===`this`)return!0;let r=t.kind===`earlier`?t.conversationId:``,i=await p(`resume-conversation`,{id:e,conversationId:r},n);return i?i.type===`resume-conversation-ack`&&i.ok?!0:(n.show(`error`,i.type===`error`?i.message:`The conversation was not changed.`),!1):!1}var S={this:`restart`,fresh:`restart-fresh`,earlier:`restart-into`};function C(e,t,n,r){let i=n.kind===`earlier`?n.conversationId:``;g(S[n.kind],t,{readState:r,send:t=>{c(e,t)},confirm:o},i)}function w(e,{readState:t,canListEarlier:n}){let{overlay:o,dialog:d,close:p,actions:m,btnCancel:h}=s({title:`Restart`,dialogClass:`dialog resume-dialog`}),g=r(`p`,`dialog-message`,n?`Restart into this conversation, a fresh one, or an earlier one from this repo (any worktree).`:`Restart into this conversation or a fresh one.`),v=r(`div`,`resume-list`);v.setAttribute(`role`,`listbox`),v.setAttribute(`aria-label`,`Conversation to restart into`);let S=r(`button`,`btn-dialog btn-dialog-confirm`,`Restart`);S.type=`button`,m.append(S);let w=u(`dialog-error`);d.append(g,v,w.element,m);let T={kind:`this`};function E(e,t){for(let e of v.querySelectorAll(`.resume-item`))e.classList.remove(`resume-item-current`),e.setAttribute(`aria-selected`,`false`);e.classList.add(`resume-item-current`),e.setAttribute(`aria-selected`,`true`),T=t}function D(e,t,n){let r=b(t,n);return r.addEventListener(`click`,()=>E(r,e)),v.append(r),r}E(D({kind:`this`},`This conversation`,`Keeps the current conversation`),{kind:`this`}),D({kind:`fresh`},`Fresh conversation`,`Ends this conversation and starts a new one`);async function O(t,n){d.dataset.applying=``;let r=await x(e,n,w);delete d.dataset.applying,r&&(p(),c(t,{type:`start-session`,id:e}))}function k(){if(d.dataset.applying!==void 0)return;let n=a.get(e);n?t()===_?O(n,T):(p(),C(n,e,T,t)):p()}if(h.addEventListener(`click`,p),S.addEventListener(`click`,k),requestAnimationFrame(()=>S.focus()),!n)return;let A=r(`div`,`resume-empty`,`Loading earlier conversations...`);v.append(A),i(`list-conversations`,{id:e},{timeoutMs:l}).then(e=>{if(!o.isConnected)return;if(e.error){A.textContent=`Could not list earlier conversations: ${e.error}`;return}let t=e.type===`conversations`?e.current??null:null,n=(e.type===`conversations`?e.conversations:[]).filter(e=>e.id!==t);if(n.length===0)A.textContent=`No earlier conversations found for this repo.`;else{A.remove();for(let e of n)D({kind:`earlier`,conversationId:e.id},e.title||e.id,y(e))}}).catch(e=>{o.isConnected&&(A.textContent=`Could not list earlier conversations: ${f(e,l)}`)})}export{w as openRestartDialog};
|
|
Binary file
|