glimmervoid 0.46.1-next.99 → 0.46.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/dist/bin/glimmervoid.js +3 -3
  2. package/dist/chunks/config-store-B5Slifzz.js +1 -0
  3. package/dist/chunks/{config-store-SeN0w6cD.js → config-store-DDNmZ_D7.js} +3 -1
  4. package/dist/chunks/{main-BQubti_L.js → main-GgXenoSk.js} +3 -3
  5. package/dist/chunks/{pair-cli-DojX0sOi.js → pair-cli-fDiZsM5e.js} +2 -2
  6. package/dist/chunks/{remote-config-BQ0ggoxv.js → remote-config-QRP1O8B6.js} +1 -1
  7. package/dist/chunks/{settings-cli-DP_NIdxV.js → settings-cli-6pG0t44Q.js} +2 -2
  8. package/dist/chunks/{settings-readout-core-C1uJhry6.js → settings-readout-core-DBeH6YNb.js} +1 -1
  9. package/dist/client/assets/{benchmark-panel-CQhtmLCD.js → benchmark-panel-DChPUXGA.js} +1 -1
  10. package/dist/client/assets/benchmark-panel-DChPUXGA.js.br +0 -0
  11. package/dist/client/assets/{dialogs-BEgG553B.js → dialogs-DdT1F2S6.js} +1 -1
  12. package/dist/client/assets/dialogs-DdT1F2S6.js.br +0 -0
  13. package/dist/client/assets/{hooks-panel-DbDFYwDE.js → hooks-panel-BsUFFLp2.js} +1 -1
  14. package/dist/client/assets/hooks-panel-BsUFFLp2.js.br +0 -0
  15. package/dist/client/assets/{index-BNC5TNCw.js → index-BReL4NSr.js} +4 -4
  16. package/dist/client/assets/index-BReL4NSr.js.br +0 -0
  17. package/dist/client/assets/{issues-panel-DUy5MN1w.js → issues-panel-D28hf84c.js} +1 -1
  18. package/dist/client/assets/issues-panel-D28hf84c.js.br +0 -0
  19. package/dist/client/assets/{plan-face-YG7_bim2.js → plan-face-CJorgkgV.js} +1 -1
  20. package/dist/client/assets/plan-face-CJorgkgV.js.br +0 -0
  21. package/dist/client/assets/{pr-scope-tabs-B6hSEKhE.js → pr-scope-tabs-jELwYeSS.js} +1 -1
  22. package/dist/client/assets/pr-scope-tabs-jELwYeSS.js.br +0 -0
  23. package/dist/client/assets/{radar-panel-Dwf81XY8.js → radar-panel-CTcFyxm0.js} +1 -1
  24. package/dist/client/assets/radar-panel-CTcFyxm0.js.br +0 -0
  25. package/dist/client/assets/{review-queue-panel-CX5PdYEa.js → review-queue-panel-R9p5_F6Q.js} +1 -1
  26. package/dist/client/assets/review-queue-panel-R9p5_F6Q.js.br +0 -0
  27. package/dist/client/assets/{settings-panel-D5bpgzN1.js → settings-panel-3mnXcihD.js} +2 -2
  28. package/dist/client/assets/settings-panel-3mnXcihD.js.br +0 -0
  29. package/dist/client/assets/{trace-panel-DdSXD0Oy.js → trace-panel-6p6YymRs.js} +1 -1
  30. package/dist/client/assets/trace-panel-6p6YymRs.js.br +0 -0
  31. package/dist/client/assets/{usage-panel-DUuuYopO.js → usage-panel-DBzi4xwe.js} +1 -1
  32. package/dist/client/assets/usage-panel-DBzi4xwe.js.br +0 -0
  33. package/dist/client/assets/{visions-panel-t56x_cjW.js → visions-panel-BMCIETcz.js} +1 -1
  34. package/dist/client/assets/visions-panel-BMCIETcz.js.br +0 -0
  35. package/dist/client/index.html +1 -1
  36. package/dist/client/index.html.br +0 -0
  37. package/dist/server/index.js +1 -1
  38. package/package.json +1 -1
  39. package/dist/chunks/config-store-CaMEG7BR.js +0 -1
  40. package/dist/client/assets/benchmark-panel-CQhtmLCD.js.br +0 -0
  41. package/dist/client/assets/dialogs-BEgG553B.js.br +0 -0
  42. package/dist/client/assets/hooks-panel-DbDFYwDE.js.br +0 -0
  43. package/dist/client/assets/index-BNC5TNCw.js.br +0 -0
  44. package/dist/client/assets/issues-panel-DUy5MN1w.js.br +0 -0
  45. package/dist/client/assets/plan-face-YG7_bim2.js.br +0 -0
  46. package/dist/client/assets/pr-scope-tabs-B6hSEKhE.js.br +0 -0
  47. package/dist/client/assets/radar-panel-Dwf81XY8.js.br +0 -0
  48. package/dist/client/assets/review-queue-panel-CX5PdYEa.js.br +0 -0
  49. package/dist/client/assets/settings-panel-D5bpgzN1.js.br +0 -0
  50. package/dist/client/assets/trace-panel-DdSXD0Oy.js.br +0 -0
  51. package/dist/client/assets/usage-panel-DUuuYopO.js.br +0 -0
  52. package/dist/client/assets/visions-panel-t56x_cjW.js.br +0 -0
@@ -1 +1 @@
1
- import{$t as e,It as t,Kt as n,c as r,o as i,u as a,v as o}from"./dom-helpers-B98sy9ep.js";import{m as s,p as c}from"./poll-ago-DdlzkUaM.js";import{a as l,u}from"./action-status-D9Sf2cZp.js";import{B as d,Cr as f,G as p,H as m,L as h,R as ee,U as g,V as _,W as v,hr as y,wr as te,z as b}from"./index-BNC5TNCw.js";import{a as ne,i as re,r as x,t as S}from"./pr-scope-tabs-B6hSEKhE.js";function C(e){return e?e.configured?`No open issues.`:e.reason??`Loading issues.`:`Loading issues.`}function w(e,t){return t===`all`||e.sources.includes(t)}function T(e){return{all:e.length,me:e.filter(e=>w(e,`me`)).length,team:e.filter(e=>w(e,`team`)).length,project:e.filter(e=>w(e,`project`)).length}}function E(e,t,n){let r=t.query.trim().toLowerCase().split(/\s+/).filter(Boolean),i=e.filter(e=>{if(!w(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?s.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?c(t):`none yet`}function ce(e){V(e)||d(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===b().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,f),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`,()=>{m(`select`),v(e.key),j&&(j.dataset.detailOpen=`true`),g(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`,()=>{m(`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=_(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`),l(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}=b(),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}=b(),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`,()=>{m(`back`),j&&(j.dataset.detailOpen=`false`),[...N?.querySelectorAll(`[data-issue-key]`)??[]].find(e=>e.dataset.issueKey===b().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 l=Date.now(),u=i(`div`,`pr-detail-meta`),d=i(`span`,null,`opened by ${n.author||`unknown`} `),p=i(`span`,null,`updated `);d.append(q(n.createdAt,l)),p.append(q(n.updatedAt,l)),u.append(d,p,i(`span`,null,`${n.comments} comments`)),n.sources.includes(`me`)&&u.append(i(`span`,`issues-why`,`assigned to you`));for(let e of n.teams)u.append(i(`span`,null,`mentions ${e}`));s.append(c,u);let h=i(`dl`,`issues-facts`);G(h,`Repository`,[n.repo]),G(h,`Labels`,[n.labels.join(`, `)||`none`]),G(h,`Assignees`,[n.assignees.join(`, `)||`unassigned`]),a.dataset.hasLiveSession=String(!!V(n)),G(h,`Session`,[U(n,!0),i(`span`,`issues-session-name`,W(n))]);let g=n.pullRequests.flatMap(e=>{let t=k(e,f),n=i(`span`,`issues-pr-state`,t);return n.dataset.prState=t,[n,r(`issues-inline-link`,`#${e.number} ${e.title}`,e.url)]});G(h,`Pull request`,g.length>0?g:[`none linked`]);let _=i(`section`,`issues-body-section`),v=i(`div`,`issue-body`,ee(n));v.setAttribute(`role`,`status`),_.append(i(`h3`,`pr-section-heading`,`Description`),v),a.append(o,s,h,_,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}=b(),n=e?.issues??[],r=T(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=E(n,A,new Set(s.keys())),c=document.activeElement instanceof HTMLElement&&N.contains(document.activeElement)?document.activeElement.dataset.issueKey:null,l=[...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(...l),o.length===0&&N.append(i(`p`,`pr-empty`,n.length>0?`No open issues match these filters. Clear the search or pick All.`:C(e))),c&&[...N.querySelectorAll(`[data-issue-key]`)].find(e=>e.dataset.issueKey===c)?.focus({preventScroll:!0}),t&&!n.some(e=>e.key===t)&&(v(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`,()=>m(`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`,()=>{m(`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`,()=>{m(`filter`),A.repo=I?.value??``,X()}),L=s(`Label`),L.addEventListener(`change`,()=>{m(`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`,()=>{m(`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`,()=>{m(`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=b().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=ne(`issues`,j);let t=i(`div`,`pr-columns issues-columns`),n=i(`section`,`pr-queue-pane`);n.setAttribute(`aria-label`,`Issue queue`),M=S({label:`Issue scope`,scopes:se,selected:A.scope,onSelect:e=>{m(`scope`),A.scope=e,X()},extraClassName:`issues-scope-tabs`,countClassPrefix:`issues-scope`}),N=i(`nav`,`pr-queue`),N.setAttribute(`aria-label`,`Issues`);let r=x(B.control);R=i(`span`,`issues-sync`),R.setAttribute(`role`,`status`),r.prepend(R),r.append(B.notice),n.append(re(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),te(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=b().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{$t as e,It as t,Kt as n,c as r,o as i,u as a,v as o}from"./dom-helpers-B98sy9ep.js";import{m as s,p as c}from"./poll-ago-DdlzkUaM.js";import{a as l,u}from"./action-status-D9Sf2cZp.js";import{B as d,Cr as f,G as p,H as m,L as h,R as ee,U as g,V as _,W as v,hr as y,wr as te,z as b}from"./index-BReL4NSr.js";import{a as ne,i as re,r as x,t as S}from"./pr-scope-tabs-jELwYeSS.js";function C(e){return e?e.configured?`No open issues.`:e.reason??`Loading issues.`:`Loading issues.`}function w(e,t){return t===`all`||e.sources.includes(t)}function T(e){return{all:e.length,me:e.filter(e=>w(e,`me`)).length,team:e.filter(e=>w(e,`team`)).length,project:e.filter(e=>w(e,`project`)).length}}function E(e,t,n){let r=t.query.trim().toLowerCase().split(/\s+/).filter(Boolean),i=e.filter(e=>{if(!w(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?s.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?c(t):`none yet`}function ce(e){V(e)||d(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===b().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,f),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`,()=>{m(`select`),v(e.key),j&&(j.dataset.detailOpen=`true`),g(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`,()=>{m(`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=_(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`),l(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}=b(),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}=b(),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`,()=>{m(`back`),j&&(j.dataset.detailOpen=`false`),[...N?.querySelectorAll(`[data-issue-key]`)??[]].find(e=>e.dataset.issueKey===b().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 l=Date.now(),u=i(`div`,`pr-detail-meta`),d=i(`span`,null,`opened by ${n.author||`unknown`} `),p=i(`span`,null,`updated `);d.append(q(n.createdAt,l)),p.append(q(n.updatedAt,l)),u.append(d,p,i(`span`,null,`${n.comments} comments`)),n.sources.includes(`me`)&&u.append(i(`span`,`issues-why`,`assigned to you`));for(let e of n.teams)u.append(i(`span`,null,`mentions ${e}`));s.append(c,u);let h=i(`dl`,`issues-facts`);G(h,`Repository`,[n.repo]),G(h,`Labels`,[n.labels.join(`, `)||`none`]),G(h,`Assignees`,[n.assignees.join(`, `)||`unassigned`]),a.dataset.hasLiveSession=String(!!V(n)),G(h,`Session`,[U(n,!0),i(`span`,`issues-session-name`,W(n))]);let g=n.pullRequests.flatMap(e=>{let t=k(e,f),n=i(`span`,`issues-pr-state`,t);return n.dataset.prState=t,[n,r(`issues-inline-link`,`#${e.number} ${e.title}`,e.url)]});G(h,`Pull request`,g.length>0?g:[`none linked`]);let _=i(`section`,`issues-body-section`),v=i(`div`,`issue-body`,ee(n));v.setAttribute(`role`,`status`),_.append(i(`h3`,`pr-section-heading`,`Description`),v),a.append(o,s,h,_,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}=b(),n=e?.issues??[],r=T(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=E(n,A,new Set(s.keys())),c=document.activeElement instanceof HTMLElement&&N.contains(document.activeElement)?document.activeElement.dataset.issueKey:null,l=[...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(...l),o.length===0&&N.append(i(`p`,`pr-empty`,n.length>0?`No open issues match these filters. Clear the search or pick All.`:C(e))),c&&[...N.querySelectorAll(`[data-issue-key]`)].find(e=>e.dataset.issueKey===c)?.focus({preventScroll:!0}),t&&!n.some(e=>e.key===t)&&(v(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`,()=>m(`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`,()=>{m(`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`,()=>{m(`filter`),A.repo=I?.value??``,X()}),L=s(`Label`),L.addEventListener(`change`,()=>{m(`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`,()=>{m(`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`,()=>{m(`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=b().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=ne(`issues`,j);let t=i(`div`,`pr-columns issues-columns`),n=i(`section`,`pr-queue-pane`);n.setAttribute(`aria-label`,`Issue queue`),M=S({label:`Issue scope`,scopes:se,selected:A.scope,onSelect:e=>{m(`scope`),A.scope=e,X()},extraClassName:`issues-scope-tabs`,countClassPrefix:`issues-scope`}),N=i(`nav`,`pr-queue`),N.setAttribute(`aria-label`,`Issues`);let r=x(B.control);R=i(`span`,`issues-sync`),R.setAttribute(`role`,`status`),r.prepend(R),r.append(B.notice),n.append(re(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),te(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=b().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,3 +1,3 @@
1
- import{C as e,Xt as t,o as n}from"./dom-helpers-B98sy9ep.js";import{t as r}from"./roving-keys-core-BDobx2It.js";import{o as i}from"./modal-5t7_5VCF.js";import{An as a,Cn as o,Dn as s,En as c,On as l,Sr as u,Tn as ee,er as te,ir as ne,kn as re,nr as ie,rr as ae,tr as oe,wn as se}from"./index-BNC5TNCw.js";var d=2e3,f=3;function ce(e){return e.replace(/\r\n?/g,`
1
+ import{C as e,Xt as t,o as n}from"./dom-helpers-B98sy9ep.js";import{t as r}from"./roving-keys-core-BDobx2It.js";import{o as i}from"./modal-5t7_5VCF.js";import{An as a,Cn as o,Dn as s,En as c,On as l,Sr as u,Tn as ee,er as te,ir as ne,kn as re,nr as ie,rr as ae,tr as oe,wn as se}from"./index-BReL4NSr.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 xe=n(`button`,`plan-control plan-draft-chip`,`Peek draft`);xe.type=`button`,T.append(be,xe),m.append(h,_,le,ve,ye,T);let E=n(`button`,`plan-control plan-view-button`,`View`);E.type=`button`,E.setAttribute(`aria-haspopup`,`dialog`),E.setAttribute(`aria-expanded`,`false`);let Se=n(`button`,`plan-control plan-minimize-button`,`Minimize`);Se.type=`button`,Se.addEventListener(`click`,d.showTerminal),ce.append(p,m,E,Se);let Ce=n(`div`,`plan-sheet-backdrop`),we=n(`div`,`plan-body-layout`),Te=n(`nav`,`plan-heading-rail`);Te.setAttribute(`aria-label`,`Plan sections`);let D=n(`article`,`plan-reading-column`);we.append(Te,D);let O=n(`textarea`,`plan-editor`);O.setAttribute(`aria-label`,`Plan markdown`),O.spellcheck=!1;let Ee=n(`footer`,`plan-action-bar`),De=n(`span`,`plan-status`);De.setAttribute(`role`,`status`);let Oe=n(`div`,`plan-decision-slot`),ke=n(`label`,`plan-accept-edits`),Ae=n(`input`,`plan-accept-edits-checkbox`);Ae.type=`checkbox`,ke.append(Ae,n(`span`,null,`Accept edits`)),Oe.append(ke,De),Ee.append(Oe);let je=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)}),je.set(e,r),Ee.append(r)}f.append(ce,we,Ee,Ce);let k=null,A={reviews:[]},j=null,M=null,Me=!0,N=``,P=``,F=``,I=``,L=!1,R=null,z=!1,B=null,V=!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),Ce.dataset.open=String(e),E.setAttribute(`aria-expanded`,String(e)),we.inert=e,Ee.inert=e,p.inert=e,E.inert=e,Se.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&&E.focus())}function Ie(e){e.addEventListener(`keydown`,t=>{let n=[...e.querySelectorAll(`button:not(:disabled)`)],i=n.indexOf(document.activeElement),a=r(t.key,i,n.length,`both`);if(a===null)return;t.preventDefault();let o=X;n[a].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),E.addEventListener(`click`,()=>Z(!X)),g.addEventListener(`click`,()=>Z(!1)),Ce.addEventListener(`click`,()=>Z(!1)),m.addEventListener(`keydown`,e=>{X&&(e.key===`Escape`?(e.preventDefault(),e.stopPropagation(),Z(!1)):i(m,e))});function Re(e){D.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=>D.querySelector(`#${CSS.escape(e.dataset.headingId??``)}`)).filter(e=>e!==null),t=D.getBoundingClientRect().top-D.scrollTop,n=se({headingOffsets:e.map(e=>e.getBoundingClientRect().top-t),scrollTop:D.scrollTop,isScrolledToEnd:D.scrollTop>0&&D.scrollTop+D.clientHeight>=D.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))}D.addEventListener(`scroll`,Be,{passive:!0});function Ve(){Y=null,z=!1,V=!1,H=!1,Ne=null}function He(e){W=e,d.reportProblem(e),$()}function Ue(e){M=e,W=null,Ve(),Z(!1,X),$()}function We(e){let t=A.reviews.find(e=>e.agentId===j)?.revisions??[],n=t[t.findIndex(e=>e.revision===M)+e];n&&Ue(n.revision)}y.addEventListener(`click`,()=>We(-1)),b.addEventListener(`click`,()=>We(1));function Ge(e,t){return`${k??``}:${e??`main`}:${t??`latest`}`}function Ke(){return Ge(j,M)}function qe(e,t,n){return`${e??``}:${me(t,n??0)}`}function Q(){return qe(k,j,M)}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||L)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=L,o.disabled=L,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(!k||n.revision===null||L)return!1;let i=re(r);if(i!==null)return He(i),!1;let a={agentId:n.agentId,revision:n.revision,decision:t,...r};return d.sendDecision(k,a)?(W=null,L=!0,R=s(t)?n:null,$(),!0):(He(e),!1)}function nt(e){if(!z)return{};let t=O.value;return t===_e(k,e.agentId,e.revision)?{}:{plan:t}}function rt(e){let t=qe(k,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:j,revision:M};e===`revise`?rt(t):tt(e===`approve`&&!ke.hidden&&Ae.checked?`approve-accept-edits`:e,t,nt(t))}function at(e){Y=null,z=e===`edit`,V=e===`changes`,z&&B!==Q()&&(O.value=_e(k,j,M)??``,B=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(!k)return;let e=Ke();N!==e&&d.requestPlan(k,j,M??void 0)&&(N=e,st({kind:`selection`,agentId:j,revision:M}))}function pt(){f.hidden||ft()}function mt(){return a(A,j,M)}function ht(e){if(!k)return;let t=Ge(j,e);F!==t&&d.requestPlan(k,j,e)&&(F=t,st({kind:`diff-base`,agentId:j,revision:e}))}function gt(){if(!k)return;let e=`${k}:${j??`main`}`;I!==e&&d.requestDraft(k,j)&&(I=e,st({kind:`draft`,agentId:j,revision:null}))}function _t(e,t){return`${e??``}:${t??``}`}function vt(){return A.reviews.find(e=>e.agentId===j)?.revisions.find(e=>e.revision===M)?.receivedAt??0}function yt(){let e=Pe.get(_t(k,j));return e!==void 0&&e>vt()}function bt(){H?(Ve(),$()):(Y=null,z=!1,V=!1,gt(),$())}xe.addEventListener(`click`,bt);function xt(e){Te.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)),Te.append(i);let a=n(`option`,null,r);a.value=e,p.append(a)}}function St(e){let t=mt();if(t===null){D.append(n(`p`,`plan-loading`,`This is the first revision, so there is nothing to diff`));return}let r=_e(k,j,t);if(r===null){D.append(n(`p`,`plan-loading`,`Loading the previous revision`)),ht(t);return}let i=de(r,e);i.isTooLarge?(D.append(n(`p`,`plan-loading`,`This diff is too large to show, so the newer revision stands alone`)),D.append(te(ae(e)))):D.append(oe(i))}function Ct(e){if(D.replaceChildren(),z){xt(U),D.append(O);return}if(e===null){if(U=[],xt(U),P===Ke()){D.append(n(`p`,`plan-loading`,`This plan revision could not be loaded`));return}D.append(n(`p`,`plan-loading`,`Loading plan`)),ft();return}let t=ae(e);if(U=ne(t),xt(U),V){St(e);return}if(H){D.append(te(t));return}let r=Je();D.append(ie(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`,()=>{j=t.agentId,M=null,W=null,N=``,P=``,F=``,I=``,Ve(),Z(!1,X),$()}),v.append(e)}}function Tt(){return H?Ne:_e(k,j,M)}function Et(e){return o({state:A,selectedAgentId:j,selectedRevision:M,body:e,isConnected:Me,isDecisionInFlight:L,isDraft:H,pendingCommentCount:Ye(),hasUnsavedComment:Xe(),problem:W})}function Dt(e){De.textContent=e.status,De.hidden=e.status.length===0;let t=e.actions.some(e=>e.kind===`approve`&&e.enabled);ke.hidden=!t,Ae.disabled=!t;for(let t of e.actions){let e=je.get(t.kind);e&&(e.disabled=!t.enabled)}}function Ot(){Dt(Et(Tt()))}function $(){let e=X&&m.contains(document.activeElement),t=o({state:A,selectedAgentId:j,selectedRevision:M,body:null,isConnected:Me});(j!==t.selectedAgentId||M!==t.selectedRevision)&&Ve(),j=t.selectedAgentId,M=t.selectedRevision,B!==Q()&&(B=null);let r=Tt(),i=Et(r);wt(i);let a=i.revisions.findIndex(e=>e.selected),s=i.revisions[a],c=Date.now();ue.hidden=i.revisions.length<2,x.textContent=`Rev ${a+1} of ${i.revisions.length}`,ge.textContent=s?ee(s.receivedAt,c):``,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`,ee(e.receivedAt,c))),e.isOpen&&t.append(n(`span`,`plan-revision-open`,`OPEN`)),t.addEventListener(`click`,()=>Ue(e.revision)),C.append(t)}w.replaceChildren();let l=z?`edit`:V?`changes`:`read`,u=i.modes.find(e=>e.kind===l&&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===l)),t.tabIndex=e.kind===u.kind?0:-1,t.addEventListener(`click`,()=>{t.disabled||(at(e.kind),w.querySelector(`[aria-checked="true"]`)?.focus())}),w.append(t)}T.hidden=!yt()&&!H,xe.hidden=T.hidden,xe.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){R!==null&&c(e,R.agentId)&&(R=null,B=null,d.showTerminal())}function At(e){Y=null,e!==k&&(R=null,L=!1,W=null,q.clear()),Z(!1,!1),k=e,f.hidden=!1,N=``,P=``,$(),pt()}function jt(){Y=null,Z(!1,!1),f.hidden=!0}function Mt(e,t){return t.kind!==`selection`||e.agentId!==j?!1:t.revision===null?M===null||M===e.revision:t.revision===M}function Nt(e){e.kind===`draft`?(I=``,He(`the draft could not be read, so nothing was shown`)):e.kind===`diff-base`?F=``:P=Ge(e.agentId,e.revision)}function Pt(e){G!==null&&l(e,G.agentId)!==G.revision&&(K.delete(G.bucketKey),G=null)}function Ft(e){L=!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(I=``,n===null||t.agentId!==j)return;Ne=t.plan,H=!0}else he(e.id,t),n!==null&&Mt(t,n)&&(j=t.agentId,M=t.revision,N=``,P=``)}function It(e){let t=l(e,j);t!==null&&t!==l(A,j)&&(M=t,Ve()),Pt(e),A=e,L=!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&&(R=null,L=!1,G=null,e.refusalText&&(W=e.refusalText)),typeof e.isConnected==`boolean`&&(t=e.isConnected&&!Me,Me=e.isConnected,t&&(N=``,P=``,F=``,I=``,L=!1)),e.requestFailed&&(P=N),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};
@@ -1 +1 @@
1
- import{C as e,Kt as t,Tn as n,a as r,c as i,i as a,m as o,o as s,u as c}from"./dom-helpers-B98sy9ep.js";import{l,r as u,u as d}from"./control-ws-C8SS9PPx.js";import{m as f,n as p,p as m}from"./poll-ago-DdlzkUaM.js";import{G as h,S as g,W as ee,l as _}from"./ui-prefs-Dvsgw_ZF.js";import{T as v,a as y,s as b,t as x,w as te}from"./action-status-D9Sf2cZp.js";import{t as ne}from"./roving-keys-core-BDobx2It.js";import{a as re}from"./modal-5t7_5VCF.js";import{Bt as S,Et as ie,Jn as ae,Lt as C,Rt as w,Tt as T,Vt as oe,Xn as se,Yn as E,qn as ce,wt as le,zt as D}from"./index-BNC5TNCw.js";function ue(e,t){return!!e?.error&&!e.isRefreshing&&typeof e.nextAttemptAt==`number`&&e.nextAttemptAt>t}function O(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 k(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 pe(e,t,n=``){if(!t||!e.keepMergeable)return null;let r=A(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 A(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`),k(e,!!e.keepMergeable,t,n,o,r)}function me(e){return e?.isKeepMergeableEnabled!==!1}function he(e){return e?.isMergeQueueEnabled!==!1}function ge(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 _e(e,t,n=``,r=!0){let i=e.mergeQueuePosition!==null&&e.mergeQueuePosition!==void 0;return k(e,i,t,n,ge(i,!!e.isMergeQueueHeldForRepairPush,!!e.mergeQueueFailure),r)}function ve(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 ye(e){let t=e.reviewRequests.length>0?`Requested: ${M(e)}`:`Approval required`;return e.approvals>0?`${t}, ${j(e.approvals)}`:t}function be(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 xe(e){return e.reviewDecision===`CHANGES_REQUESTED`?{label:`Review`,tone:`warn`,icon:`changes-requested`,text:`Changes requested`}:e.reviewDecision===`APPROVED`?be(e):e.reviewDecision===`REVIEW_REQUIRED`||e.mergeStateStatus===`BLOCKED`?{label:`Review`,tone:`wait`,icon:`reviewer`,text:ye(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 Se(e){let t=e.line===null?e.path:`${e.path}:${e.line}`;return e.isOutdated?`${t} (outdated)`:t}function Ce(e){let t=e.commentCount-1;return t===0?`No replies`:`${t} ${t===1?`reply`:`replies`}, last by ${e.lastAuthor??`a deleted account`}`}function we(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 Te(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:Se(e),url:e.url,author:e.author??`a deleted account`,excerpt:e.excerpt,replySummary:Ce(e),lastActivityAt:e.lastActivityAt,waiting:we(e,t),isWaitingOnYou:N(e,t)===!0}))}function Ee(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 De(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 Oe(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 ke={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 Ae(e){return[...e.reviews].sort((e,t)=>(Date.parse(t.submittedAt??``)||0)-(Date.parse(e.submittedAt??``)||0)).map(e=>{let t=ke[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 je(e,t=null){if(e.state===`MERGED`)return[];let n=[ve(e),xe(e),Ee(e,t),De(e),Oe(e)],r=e.autoRebase?[Me(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 Me(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 Ne(e,t=0){if(!e)return[];let n=O(e,t),r=n?[{text:n,tone:`error`}]:[];return e.truncatedNote?[...r,{text:e.truncatedNote,tone:`info`}]:r}var Pe={isVisible:!1,isDisabled:!0,statusText:``,tone:null},Fe={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 Ie(e,t){if(e.state!==`OPEN`)return Pe;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,...Fe[n.phase]};let r=oe(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 ${S(e.mergeMethod)}`,tone:null}}function Le(e){return`Merge ${e.key} "${e.title}" into ${e.baseRefName} with ${S(e.mergeMethod)}, your default for this repository. Glimmervoid does not delete the branch.`}function Re(e){let t=n.safeParse(e);if(!t.success)return null;let r=e&&typeof e==`object`&&`requestId`in e?e.requestId:null;return typeof r==`string`?{...t.data,requestId:r}:null}var I=null,L=null,R=T().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)=>A(e,t,n,r,p(e.keepMergeableAttempt?.at)),isFeatureEnabled:me,save:async(e,t)=>{let n=await d(`my-pr-keep-mergeable`,{repo:e.repo,number:e.number,keepMergeable:t},{timeoutMs:x});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.`}},ze={label:`Merge when ready`,pendingKeys:new Set,errorsByKey:new Map,controlState:_e,isFeatureEnabled:he,save:async(e,t)=>{let n=await d(`my-pr-merge-when-ready`,{repo:e.repo,number:e.number,mergeWhenReady:t},{timeoutMs:x});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,Be=`The server did not answer within ${W/1e3} s. Check GitHub before trying again.`,Ve=`${e} Check GitHub before trying again.`;function He(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 l=null,u=!1,f=``,p=null;function m(){let e=Date.now(),n=O(l,e),r=fe(l,e);o.textContent=n?[n,r].filter(Boolean).join(` `):``,o.hidden!==!l?.error&&(o.hidden=!l?.error),a.textContent=de(l,u,f)||(l?.error?``:r)||``,a.hidden!==!a.textContent&&(a.hidden=!a.textContent);let i=o.isConnected&&!c(t)&&!document.hidden&&o.getClientRects().length>0&&ue(l,e);!i&&p!==null&&(window.clearInterval(p),p=null),i&&p===null&&(p=window.setInterval(m,1e3))}function h(e){e!==l&&(f=``),l=e,i.disabled=u||!!e?.isRefreshing||!e?.configured,m()}i.addEventListener(`click`,async()=>{if(!u){u=!0,f=``,h(l);try{let e=await Promise.all(n.map(e=>d(`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=b(e,G)}finally{u=!1,h(l)}}});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}),Z()}function Ue(t){if(V.has(t.key))return;let n=u(`my-pr-merge`);if(!l({type:`my-pr-merge`,requestId:n,repo:t.repo,number:t.number,headRefOid:t.headRefOid})){K(t.key,t.headRefOid,`failed`,e);return}let r=window.setTimeout(()=>{V.delete(t.key),K(t.key,t.headRefOid,`failed`,Be)},W);V.set(t.key,{requestId:n,head:t.headRefOid,timer:r}),B.set(t.key,{head:t.headRefOid,phase:`pending`,text:``}),Z()}function We(e){let t=Ie(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`),y(i,t.tone,t.statusText),r.addEventListener(`click`,()=>{re({title:`Merge pull request`,message:Le(e),confirmLabel:`Merge`,onConfirm:()=>Ue(e)})}),n.append(r,i),n}function Ge(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 y(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),Z();try{let r=await t.save(e,!n.isPressed);r&&t.errorsByKey.set(e.key,r)}catch(n){t.errorsByKey.set(e.key,b(n,x))}finally{t.pendingKeys.delete(e.key),Z()}}}),r.append(i,a),r}function q(e,{hasGlyph:t}){let n=s(`span`,`my-pr-stage`);return n.dataset.tone=D(e.stage),t&&n.append(E(C(e.stage),D(e.stage))),n.append(w(e.stage)),n}function Ke(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 qe(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 ${p(Date.parse(e.mergedAt??``))}`:`Updated ${p(Date.parse(e.updatedAt))}`;return r.append(s(`span`,`pr-queue-owner`,`Yours`),q(e,{hasGlyph:!0}),s(`span`,null,`Opened ${p(Date.parse(e.createdAt))}`),s(`span`,null,a)),t.append(n,r),t}function Je(e){let t=je(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(Ke(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(E(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(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}, ${p(o)}`:e.replySummary);t.append(n,a,c),r.append(t)}return n.append(r),n}function Ye(e){let t=Ae(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} ${p(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(e.icon,e.tone),o,s(`span`,`pr-readiness-value`,a)),i.append(t)}return n.append(i),n}function Xe(e){let t=[U,ze].map(t=>Ge(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=Te(e,R?.viewer??null),n=s(`article`,`pr-detail`),r=[Je(e),J(`Threads waiting on you`,t.filter(e=>e.isWaitingOnYou)),J(`Other open threads`,t.filter(e=>!e.isWaitingOnYou)),Ye(e),Xe(e),We(e)];n.append(qe(e),...r.filter(e=>e!==null)),I.replaceChildren(n)}function X(e){let n=e.dataset.sessionId??``,r=f.get(n),i=o(e,`.session-row-name`);r&&(i.textContent=m(r)||n);let a={glyph:o(e,`.session-row-glyph`),label:o(e,`.session-row-label`)},s=ae(e,a,r?.currentState||t.DORMANT,r?.awaitingBackgroundTasks,r?.pendingPromptKind),c=`Focus session ${i.textContent}, ${s}`;e.title=c,e.setAttribute(`aria-label`,c)}function Ze(e){let{row:t,refs:n}=ce(`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 Qe(e){if(!e||e.length===0)return null;let t=s(`div`,`my-pr-session-focus`);return t.append(...e.map(Ze)),t}function $e(){for(let e of document.querySelectorAll(`.my-pr-session-pill`))X(e)}function et(e,t,n){let r=s(`button`,`pr-queue-row`);r.type=`button`,r.dataset.prKey=e.key,r.title=`${e.key}: ${w(e.stage)}`;let i=s(`span`,`pr-queue-glyph`);i.append(E(C(e.stage),D(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 ${p(Date.parse(c))}`:`opened ${p(Date.parse(e.createdAt))}`;o.append(s(`span`,`pr-queue-elapsed`,l));let u=pe(e,U.isFeatureEnabled(R),p(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=Qe(n);return f&&d.append(f),{group:d,row:r}}function tt(e){z=e,Y(T().prs.find(e=>e.key===z))}function Z(){let{prs:e,status:t}=T();R=t,z&&Y(e.find(e=>e.key===z)),L?.onChange()}function nt(e,t){return H=t?.openTerminal??null,L=e,I||(I=s(`div`,`pr-detail-mine`),ie(rt),Z(),I)}function rt(e){switch(e.kind){case`prs`:Z();return;case`session-state`:$e();return;case`merge-result`:at(e.message);return;case`connection`:it(e.isConnected)}}function it(e){if(!e){for(let[e,t]of V)window.clearTimeout(t.timer),B.set(e,{head:t.head,phase:`failed`,text:Ve});V.size!==0&&(V.clear(),Z())}}function at(e){let t=Re(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=T().prs.find(e=>e.key===t.key);r&&le([r])}var ot={minPx:220,maxPx:720},st=16,Q=new Set,ct=0;function $(e){let t=g();e.toggleAttribute(`data-queue-collapsed`,t),e.querySelector(`.pr-queue-toggle`)?.setAttribute(`aria-expanded`,String(!t));let n=_();n===null?e.style.removeProperty(`--pr-queue-width`):e.style.setProperty(`--pr-queue-width`,`${n}px`)}function lt(){for(let e of Q)e.isConnected?$(e):Q.delete(e)}function ut(e,t){let n=s(`div`,`pr-queue-head`);return e&&n.append(e),t&&n.append(t),n}function dt(e){let t=s(`div`,`pr-queue-foot`);return e&&t.append(e),t}function ft({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-${++ct}`,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=te(16,16);c.append(v(`rect`,{x:`1.5`,y:`2`,width:`13`,height:`12`,rx:`2`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.3`})),c.append(v(`path`,{d:`M5.5 2V14`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.3`}));let l=v(`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`,()=>{ee(!g()),lt()});let u=dt(null);i.append(ut(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),$(r),Q.add(r),se({resizer:d,column:i,widthHost:r,widthProperty:`--pr-queue-width`,bounds:ot,keyStepPx:st,getStoredWidth:_,setStoredWidth:h}),{columns:r,queue:a,foot:u,detail:f}}function pt({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=ne(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{He as a,tt as c,ut as i,F as l,ft as n,et as o,dt as r,nt as s,pt as t,Ne as u};
1
+ import{C as e,Kt as t,Tn as n,a as r,c as i,i as a,m as o,o as s,u as c}from"./dom-helpers-B98sy9ep.js";import{l,r as u,u as d}from"./control-ws-C8SS9PPx.js";import{m as f,n as p,p as m}from"./poll-ago-DdlzkUaM.js";import{G as h,S as g,W as ee,l as _}from"./ui-prefs-Dvsgw_ZF.js";import{T as v,a as y,s as b,t as x,w as te}from"./action-status-D9Sf2cZp.js";import{t as ne}from"./roving-keys-core-BDobx2It.js";import{a as re}from"./modal-5t7_5VCF.js";import{Bt as S,Et as ie,Jn as ae,Lt as C,Rt as w,Tt as T,Vt as oe,Xn as se,Yn as E,qn as ce,wt as le,zt as D}from"./index-BReL4NSr.js";function ue(e,t){return!!e?.error&&!e.isRefreshing&&typeof e.nextAttemptAt==`number`&&e.nextAttemptAt>t}function O(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 k(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 pe(e,t,n=``){if(!t||!e.keepMergeable)return null;let r=A(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 A(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`),k(e,!!e.keepMergeable,t,n,o,r)}function me(e){return e?.isKeepMergeableEnabled!==!1}function he(e){return e?.isMergeQueueEnabled!==!1}function ge(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 _e(e,t,n=``,r=!0){let i=e.mergeQueuePosition!==null&&e.mergeQueuePosition!==void 0;return k(e,i,t,n,ge(i,!!e.isMergeQueueHeldForRepairPush,!!e.mergeQueueFailure),r)}function ve(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 ye(e){let t=e.reviewRequests.length>0?`Requested: ${M(e)}`:`Approval required`;return e.approvals>0?`${t}, ${j(e.approvals)}`:t}function be(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 xe(e){return e.reviewDecision===`CHANGES_REQUESTED`?{label:`Review`,tone:`warn`,icon:`changes-requested`,text:`Changes requested`}:e.reviewDecision===`APPROVED`?be(e):e.reviewDecision===`REVIEW_REQUIRED`||e.mergeStateStatus===`BLOCKED`?{label:`Review`,tone:`wait`,icon:`reviewer`,text:ye(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 Se(e){let t=e.line===null?e.path:`${e.path}:${e.line}`;return e.isOutdated?`${t} (outdated)`:t}function Ce(e){let t=e.commentCount-1;return t===0?`No replies`:`${t} ${t===1?`reply`:`replies`}, last by ${e.lastAuthor??`a deleted account`}`}function we(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 Te(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:Se(e),url:e.url,author:e.author??`a deleted account`,excerpt:e.excerpt,replySummary:Ce(e),lastActivityAt:e.lastActivityAt,waiting:we(e,t),isWaitingOnYou:N(e,t)===!0}))}function Ee(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 De(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 Oe(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 ke={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 Ae(e){return[...e.reviews].sort((e,t)=>(Date.parse(t.submittedAt??``)||0)-(Date.parse(e.submittedAt??``)||0)).map(e=>{let t=ke[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 je(e,t=null){if(e.state===`MERGED`)return[];let n=[ve(e),xe(e),Ee(e,t),De(e),Oe(e)],r=e.autoRebase?[Me(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 Me(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 Ne(e,t=0){if(!e)return[];let n=O(e,t),r=n?[{text:n,tone:`error`}]:[];return e.truncatedNote?[...r,{text:e.truncatedNote,tone:`info`}]:r}var Pe={isVisible:!1,isDisabled:!0,statusText:``,tone:null},Fe={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 Ie(e,t){if(e.state!==`OPEN`)return Pe;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,...Fe[n.phase]};let r=oe(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 ${S(e.mergeMethod)}`,tone:null}}function Le(e){return`Merge ${e.key} "${e.title}" into ${e.baseRefName} with ${S(e.mergeMethod)}, your default for this repository. Glimmervoid does not delete the branch.`}function Re(e){let t=n.safeParse(e);if(!t.success)return null;let r=e&&typeof e==`object`&&`requestId`in e?e.requestId:null;return typeof r==`string`?{...t.data,requestId:r}:null}var I=null,L=null,R=T().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)=>A(e,t,n,r,p(e.keepMergeableAttempt?.at)),isFeatureEnabled:me,save:async(e,t)=>{let n=await d(`my-pr-keep-mergeable`,{repo:e.repo,number:e.number,keepMergeable:t},{timeoutMs:x});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.`}},ze={label:`Merge when ready`,pendingKeys:new Set,errorsByKey:new Map,controlState:_e,isFeatureEnabled:he,save:async(e,t)=>{let n=await d(`my-pr-merge-when-ready`,{repo:e.repo,number:e.number,mergeWhenReady:t},{timeoutMs:x});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,Be=`The server did not answer within ${W/1e3} s. Check GitHub before trying again.`,Ve=`${e} Check GitHub before trying again.`;function He(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 l=null,u=!1,f=``,p=null;function m(){let e=Date.now(),n=O(l,e),r=fe(l,e);o.textContent=n?[n,r].filter(Boolean).join(` `):``,o.hidden!==!l?.error&&(o.hidden=!l?.error),a.textContent=de(l,u,f)||(l?.error?``:r)||``,a.hidden!==!a.textContent&&(a.hidden=!a.textContent);let i=o.isConnected&&!c(t)&&!document.hidden&&o.getClientRects().length>0&&ue(l,e);!i&&p!==null&&(window.clearInterval(p),p=null),i&&p===null&&(p=window.setInterval(m,1e3))}function h(e){e!==l&&(f=``),l=e,i.disabled=u||!!e?.isRefreshing||!e?.configured,m()}i.addEventListener(`click`,async()=>{if(!u){u=!0,f=``,h(l);try{let e=await Promise.all(n.map(e=>d(`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=b(e,G)}finally{u=!1,h(l)}}});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}),Z()}function Ue(t){if(V.has(t.key))return;let n=u(`my-pr-merge`);if(!l({type:`my-pr-merge`,requestId:n,repo:t.repo,number:t.number,headRefOid:t.headRefOid})){K(t.key,t.headRefOid,`failed`,e);return}let r=window.setTimeout(()=>{V.delete(t.key),K(t.key,t.headRefOid,`failed`,Be)},W);V.set(t.key,{requestId:n,head:t.headRefOid,timer:r}),B.set(t.key,{head:t.headRefOid,phase:`pending`,text:``}),Z()}function We(e){let t=Ie(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`),y(i,t.tone,t.statusText),r.addEventListener(`click`,()=>{re({title:`Merge pull request`,message:Le(e),confirmLabel:`Merge`,onConfirm:()=>Ue(e)})}),n.append(r,i),n}function Ge(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 y(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),Z();try{let r=await t.save(e,!n.isPressed);r&&t.errorsByKey.set(e.key,r)}catch(n){t.errorsByKey.set(e.key,b(n,x))}finally{t.pendingKeys.delete(e.key),Z()}}}),r.append(i,a),r}function q(e,{hasGlyph:t}){let n=s(`span`,`my-pr-stage`);return n.dataset.tone=D(e.stage),t&&n.append(E(C(e.stage),D(e.stage))),n.append(w(e.stage)),n}function Ke(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 qe(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 ${p(Date.parse(e.mergedAt??``))}`:`Updated ${p(Date.parse(e.updatedAt))}`;return r.append(s(`span`,`pr-queue-owner`,`Yours`),q(e,{hasGlyph:!0}),s(`span`,null,`Opened ${p(Date.parse(e.createdAt))}`),s(`span`,null,a)),t.append(n,r),t}function Je(e){let t=je(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(Ke(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(E(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(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}, ${p(o)}`:e.replySummary);t.append(n,a,c),r.append(t)}return n.append(r),n}function Ye(e){let t=Ae(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} ${p(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(e.icon,e.tone),o,s(`span`,`pr-readiness-value`,a)),i.append(t)}return n.append(i),n}function Xe(e){let t=[U,ze].map(t=>Ge(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=Te(e,R?.viewer??null),n=s(`article`,`pr-detail`),r=[Je(e),J(`Threads waiting on you`,t.filter(e=>e.isWaitingOnYou)),J(`Other open threads`,t.filter(e=>!e.isWaitingOnYou)),Ye(e),Xe(e),We(e)];n.append(qe(e),...r.filter(e=>e!==null)),I.replaceChildren(n)}function X(e){let n=e.dataset.sessionId??``,r=f.get(n),i=o(e,`.session-row-name`);r&&(i.textContent=m(r)||n);let a={glyph:o(e,`.session-row-glyph`),label:o(e,`.session-row-label`)},s=ae(e,a,r?.currentState||t.DORMANT,r?.awaitingBackgroundTasks,r?.pendingPromptKind),c=`Focus session ${i.textContent}, ${s}`;e.title=c,e.setAttribute(`aria-label`,c)}function Ze(e){let{row:t,refs:n}=ce(`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 Qe(e){if(!e||e.length===0)return null;let t=s(`div`,`my-pr-session-focus`);return t.append(...e.map(Ze)),t}function $e(){for(let e of document.querySelectorAll(`.my-pr-session-pill`))X(e)}function et(e,t,n){let r=s(`button`,`pr-queue-row`);r.type=`button`,r.dataset.prKey=e.key,r.title=`${e.key}: ${w(e.stage)}`;let i=s(`span`,`pr-queue-glyph`);i.append(E(C(e.stage),D(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 ${p(Date.parse(c))}`:`opened ${p(Date.parse(e.createdAt))}`;o.append(s(`span`,`pr-queue-elapsed`,l));let u=pe(e,U.isFeatureEnabled(R),p(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=Qe(n);return f&&d.append(f),{group:d,row:r}}function tt(e){z=e,Y(T().prs.find(e=>e.key===z))}function Z(){let{prs:e,status:t}=T();R=t,z&&Y(e.find(e=>e.key===z)),L?.onChange()}function nt(e,t){return H=t?.openTerminal??null,L=e,I||(I=s(`div`,`pr-detail-mine`),ie(rt),Z(),I)}function rt(e){switch(e.kind){case`prs`:Z();return;case`session-state`:$e();return;case`merge-result`:at(e.message);return;case`connection`:it(e.isConnected)}}function it(e){if(!e){for(let[e,t]of V)window.clearTimeout(t.timer),B.set(e,{head:t.head,phase:`failed`,text:Ve});V.size!==0&&(V.clear(),Z())}}function at(e){let t=Re(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=T().prs.find(e=>e.key===t.key);r&&le([r])}var ot={minPx:220,maxPx:720},st=16,Q=new Set,ct=0;function $(e){let t=g();e.toggleAttribute(`data-queue-collapsed`,t),e.querySelector(`.pr-queue-toggle`)?.setAttribute(`aria-expanded`,String(!t));let n=_();n===null?e.style.removeProperty(`--pr-queue-width`):e.style.setProperty(`--pr-queue-width`,`${n}px`)}function lt(){for(let e of Q)e.isConnected?$(e):Q.delete(e)}function ut(e,t){let n=s(`div`,`pr-queue-head`);return e&&n.append(e),t&&n.append(t),n}function dt(e){let t=s(`div`,`pr-queue-foot`);return e&&t.append(e),t}function ft({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-${++ct}`,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=te(16,16);c.append(v(`rect`,{x:`1.5`,y:`2`,width:`13`,height:`12`,rx:`2`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.3`})),c.append(v(`path`,{d:`M5.5 2V14`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.3`}));let l=v(`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`,()=>{ee(!g()),lt()});let u=dt(null);i.append(ut(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),$(r),Q.add(r),se({resizer:d,column:i,widthHost:r,widthProperty:`--pr-queue-width`,bounds:ot,keyStepPx:st,getStoredWidth:_,setStoredWidth:h}),{columns:r,queue:a,foot:u,detail:f}}function pt({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=ne(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{He as a,tt as c,ut as i,F as l,ft as n,et as o,dt as r,nt as s,pt as t,Ne as u};
@@ -1 +1 @@
1
- import{B as e,G as t,J as n,K as r,Q as i,U as a,W as o,X as s,Y as c,Z as l,at as u,c as d,ct as ee,et as f,it as te,lt as p,n as m,nt as h,o as g,ot as _,p as v,pt as y,q as ne,r as b,st as re,tt as x,u as S,z as C}from"./dom-helpers-B98sy9ep.js";import{u as w}from"./control-ws-C8SS9PPx.js";import{n as T,r as E,t as D}from"./poll-ago-DdlzkUaM.js";import{a as O,s as k,t as A}from"./action-status-D9Sf2cZp.js";import{a as ie}from"./modal-5t7_5VCF.js";import{F as ae,I as oe,N as se,P as j,Qn as ce,Zn as le,g as ue}from"./index-BNC5TNCw.js";import{createInvestigationDialog as de,createRadarReportDialog as M}from"./dialogs-BEgG553B.js";var fe=4e3;function pe({render:e,holdMs:t=fe,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 N=null,P=`http://www.w3.org/2000/svg`,F=pe({render:Ve}),I=null,L=new Map,R=new WeakMap,me=`this issue`,z=D(()=>N),he={spiking:`spiking`,regressed:`regressed`,worsened:`worsened`,new:`new`,quiet:`quiet`},B=[{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}],ge=B.map(e=>e.track).join(` `),_e=B.filter(e=>!e.isMagnitude).map(e=>e.phoneTrack).join(` `),ve=B.findIndex(e=>e.startsActionCluster)+1,V=3e4;function H(e){let t=g(`div`,e);return t.style.setProperty(`--radar-issue-grid`,ge),t.style.setProperty(`--radar-issue-grid-phone`,_e),t.style.setProperty(`--radar-issue-actions-start`,String(ve)),t}function U(e,t){let n=g(`span`,`radar-issue-magnitudes`),r=!1;for(let i of B){let a=t(i);i.isMagnitude?(r||=(e.append(n),!0),n.append(a)):e.append(a)}}function W(e){return Number.isFinite(e)?String(e):`0`}function ye(e){return typeof e!=`number`||!Number.isFinite(e)||e<=0?``:`elapsed ${E(Date.now()-e)}`}function G(e){return typeof e?.issueId==`string`?e.issueId:``}function K(e,t){return[String(e??``),String(t??``)].join(`::`)}function be(e,t,n){let r=L.get(K(e,t));if(!r||!r.copy.isConnected)return!1;let i=c(n);return i?(r.summary||(r.summary=g(`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 q(e,n,r){let i=G(e);if(!i)return;I?.dialog.close();let a=de({issueTitle:String(e.title||i),projectLabel:r,onOpenReport:()=>Y(e)});I={projectId:String(n??``),issueId:i,dialog:a},a.update(t(e))}function J(){if(!I)return;if(!I.dialog.isOpen()){I=null;return}let e=C(j().latest,I.projectId,I.issueId);e&&I.dialog.update(t(e))}function Y(e){let t=G(e);t&&w(`get-radar-report`,{issueId:t},{timeoutMs:A}).then(n=>{n.ok?n.found?M({issueId:t,issueTitle:String(e.title??``),format:String(n.format??``),content:String(n.content||``)}):M({issueId:t,issueTitle:String(e.title??``),message:String(n.message||`Report not found`)}):M({issueId:t,issueTitle:String(e.title??``),error:String(n.error||`Could not read report`)})}).catch(n=>{M({issueId:t,issueTitle:String(e.title??``),error:k(n,A)})})}function X(){let e=g(`div`,`radar-issue-actions`),t=g(`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=g(`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)=>{F.begin(e),o(!0),i(),O(t,`busy`,a);let l=(n,r)=>{o(!1),i(),O(t,n,r),F.settle(e)};w(n,r,{timeoutMs:V}).then(e=>{e.ok?(l(`ok`,s(e)),c&&c(e)):l(`error`,String(e.error||`Request failed`))}).catch(e=>l(`error`,k(e,V)))},showFollowUp:a,wrap:e}}function xe(e){let t=g(`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(),Be(e)}),t}function Se(e,t,n){let{addButton:r,request:i,showFollowUp:a,wrap:o}=X(),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`,()=>q(e,t,n)),!e.inFlight&&e.verdict&&G(e)&&r(`Open report`,`Open the investigation report for this issue`,()=>Y(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`&&j().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`,()=>{ie({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 Z(e){return le()?me:e}function Ce(e){let t=R.get(e);t&&(e.title=t())}function we(){if(N)for(let e of N.querySelectorAll(`.radar-issue-reportable`))Ce(e)}ce(we);function Te(e,t,n){e.classList.add(`radar-issue-reportable`),R.set(e,t),Ce(e),e.addEventListener(`click`,e=>{e.target instanceof Element&&(e.target.closest(`a, button`)||n())})}function Ee(e,t,r){let i=g(`div`,`radar-issue`);i.dataset.severity=te(e.change);let a=g(`span`,`radar-stripe`);a.setAttribute(`aria-hidden`,`true`);let o=g(`span`,`radar-change`,he[e.change??``]||String(e.change||`unknown`)),u=d(`radar-issue-title`,String(e.title||`Untitled issue`),e.url,String(e.title||``)),f=g(`span`,`radar-metric`);f.append(g(`span`,`radar-metric-value`,W(e.occurrences)),g(`span`,`radar-metric-label`,`occ`));let p=g(`span`,`radar-metric`);p.append(g(`span`,`radar-metric-value`,W(e.users)),g(`span`,`radar-metric-label`,`users`));let m=l(e.history),h=re(m,64,16),_=h?document.createElementNS(P,`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(P,`title`);e.textContent=ee(m);let t=document.createElementNS(P,`polyline`);t.setAttribute(`points`,h),_.append(e,t)}let v=c(e),b=g(`span`,`radar-issue-copy`);b.append(u);let x=null;v&&(x=g(`span`,`radar-issue-summary`),x.textContent=v,b.append(x)),L.set(K(t,e.issueId),{copy:b,summary:x});let S=g(`span`,`radar-issue-meta`),C=ne(e);if(C!==null){let e=g(`span`,`radar-issue-seen`);e.title=new Date(C).toLocaleString(),z.track(e,C,T),S.append(e)}let w=n(e);w&&S.append(g(`span`,`radar-issue-status`,w));let E=String(e.title||e.issueId);if(e.inFlight){let n=g(`span`,`radar-verdict`,`investigating`);n.dataset.verdict=`INVESTIGATING`,S.append(n);let a=typeof e.startedAt==`number`?e.startedAt:null;if(a!==null&&Number.isFinite(a)&&a>0){let e=g(`span`,`radar-issue-elapsed`);z.track(e,a,ye),S.append(e)}G(e)&&Te(i,()=>`Watch the investigation of ${Z(E)}`,()=>q(e,t,r))}if(!e.inFlight&&e.verdict){let t=g(`span`,`radar-verdict`,y(e.verdict));t.dataset.verdict=e.verdict,S.append(t),G(e)&&Te(i,()=>`View investigation report for ${Z(E)}`,()=>Y(e))}S.childElementCount>0&&b.append(S);let D=g(`span`,`radar-issue-trend`);_&&D.append(_);let O=s(m);if(O){let e=O.direction===`up`?`+`:O.direction===`down`?`-`:`=`,t=g(`span`,`radar-delta`,`${e}${O.percent}%`);t.dataset.direction=O.direction,D.append(t)}let k={stripe:a,change:o,copy:b,occurrences:f,users:p,trend:D};return U(i,e=>k[e.columnId]),G(e)&&i.append(Se(e,t,r)),i}var Q=(e,t,n)=>b(`radar`,e,t,n);function De(e){return e.error?`poll failed: ${e.error}`:e.staleMs>0?`stale ${E(e.staleMs)}`:``}function Oe(e,t,{showHost:n,nameTag:r,nameClass:i,hostClass:a}){let o=g(r,i,f(t));o.title=String(t.name||``),e.append(o);let s=n?u(t.host):``;s&&e.append(g(`span`,a,s))}function ke(){let e=H(`radar-column-heads`);for(let t of B){if(!t.headText){e.append(g(`span`));continue}let n=g(`span`,`radar-column-head`,t.headText);n.dataset.column=t.columnId,e.append(n)}return e}function Ae(e,t){let n=e.project,r=g(`div`,`radar-project`),i=_(n.issues),a=p(i),o=g(`div`,`radar-project-head`);Oe(o,n,{showHost:t,nameTag:`h3`,nameClass:`radar-project-name`,hostClass:`radar-project-host`}),r.append(o);let s=g(`div`,`radar-project-summary`);s.append(Q(a.active===1?`active issue`:`active issues`,W(a.active))),s.append(Q(`spiking`,W(a.spiking),a.spiking>0?`crit`:null)),s.append(Q(`needs you`,W(a.needsHuman),a.needsHuman>0?`warn`:null));let c=De(e);if(c){let t=g(`span`,`radar-project-alert`,c);t.dataset.tone=e.error?`crit`:`warn`,s.append(t)}if(r.append(s),i.length===0)return r;r.append(ke());let l=H(`radar-issues`);for(let e of i)l.append(Ee(e,n.projectId,f(n)));return r.append(l),r}function je(e,t){let n=e.project,r=g(`div`,`radar-quiet-row`),i=g(`span`,`radar-quiet-dot`);return i.setAttribute(`aria-hidden`,`true`),r.append(i),Oe(r,n,{showHost:t,nameTag:`span`,nameClass:`radar-quiet-name`,hostClass:`radar-quiet-host`}),r.append(g(`span`,`radar-quiet-count`,`0 issues`)),r}var Me=(e,t)=>m(`radar`,e,t);function Ne(){let e=g(`div`,`radar-issue`);return e.dataset.skeleton=``,U(e,e=>g(`span`,e.cellClass)),e}function Pe(){let e=H(`radar-issues`);e.setAttribute(`aria-busy`,`true`),e.setAttribute(`aria-label`,`Loading issues`);for(let t=0;t<5;t+=1)e.append(Ne());return e}function Fe(e){return e?.configured===!1?typeof e.reason==`string`&&e.reason.trim()!==``?`Fix it in`:`Switch it on in`:``}function Ie(e,t=`ready`){let n=Me(`Errors`);if(t===`pending`)return n.append(Pe()),n;if(t===`placeholder`||e.length===0){let e=g(`p`,`radar-unconfigured`,h(j().latest)),t=ue(`lanes-posthog`,`posthog-enabled`,`PostHog settings`),r=Fe(j().latest);return e.append(document.createTextNode(r?` ${r} `:` `),t),n.append(e),n}let r=g(`div`,`radar-global-tick`),o=Number(j().latest?.intervalMinutes);z.track(r,j().latest?.ts,e=>{let t=`polled ${T(e)}`;return!Number.isFinite(o)||o<=0?t:`${t}, every ${o}m`}),n.append(r);let s=o>0?o*6e4:0,{loud:c,quiet:l}=i(e,Date.now(),{intervalMs:s}),u=a(e);for(let e of c)n.append(Ae(e,u));if(l.length===0)return n;let d=g(`div`,`radar-quiet`);for(let e of l)d.append(je(e,u));return n.append(d),n}function Le(e){let{addButton:t,request:n,wrap:r}=X();return e.issueId&&t(`Open report`,`Open the investigation report for this issue`,()=>{Y({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`,()=>se(e.id))}),r}function Re(e){let t=g(`div`,`radar-investigation`),n=g(`span`,`radar-verdict`,y(e.verdict));n.dataset.verdict=e.verdict;let r=d(`radar-issue-title`,e.title,e.url),i=g(`span`,`radar-issue-copy`);if(i.append(r),e.summaryLine){let t=g(`span`,`radar-issue-summary`);t.textContent=e.summaryLine,i.append(t)}if(e.prUrl){let t=g(`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=g(`span`,`radar-verdict`,`fix`);e.dataset.mode=`fix`,t.append(e)}if(t.append(i),e.projectLabel){let n=g(`span`,`radar-investigation-project`);n.textContent=e.projectLabel,t.append(n)}if(e.at>0){let n=g(`span`,`radar-investigation-time`,T(e.at));n.title=new Date(e.at).toLocaleString(),t.append(n)}return t.append(Le(e)),t}function ze(e){let t=Me(`Investigations`,`completed, not yet archived`),n=g(`div`,`radar-investigations`);for(let t of e)n.append(Re(t));return t.append(n),t}function Be(e){j().traceOpener?.(e)}function Ve(){if(!N)return;N.textContent=``,L.clear(),z.reset();let{latest:e,archivedLocally:t}=j(),n=v(e),r=o(e,t),i=x(e,n.length);N.append(Ie(n,i)),r.length>0&&N.append(ze(r))}function $(){F.request()}function He(t){I?.dialog.isOpen()&&r(I,t)&&I.dialog.update(e(t))}function Ue(e){if(e.kind===`status`)$(),J();else if(e.kind===`investigation-activity`){J();let t=C(j().latest,e.projectId,e.issueId);if(e.wasInFlight&&be(e.projectId,e.issueId,t))return;$()}else e.isPatched?(J(),$()):He(e.frame)}function We(e){if(N)return;let t=g(`div`,`radar-content`);e.appendChild(t),N=t,ae(()=>!S(N)),oe(Ue),z.ensure(),Ve()}var Ge={mount:We};export{Ge as view};
1
+ import{B as e,G as t,J as n,K as r,Q as i,U as a,W as o,X as s,Y as c,Z as l,at as u,c as d,ct as ee,et as f,it as te,lt as p,n as m,nt as h,o as g,ot as _,p as v,pt as y,q as ne,r as b,st as re,tt as x,u as S,z as C}from"./dom-helpers-B98sy9ep.js";import{u as w}from"./control-ws-C8SS9PPx.js";import{n as T,r as E,t as D}from"./poll-ago-DdlzkUaM.js";import{a as O,s as k,t as A}from"./action-status-D9Sf2cZp.js";import{a as ie}from"./modal-5t7_5VCF.js";import{F as ae,I as oe,N as se,P as j,Qn as ce,Zn as le,g as ue}from"./index-BReL4NSr.js";import{createInvestigationDialog as de,createRadarReportDialog as M}from"./dialogs-DdT1F2S6.js";var fe=4e3;function pe({render:e,holdMs:t=fe,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 N=null,P=`http://www.w3.org/2000/svg`,F=pe({render:Ve}),I=null,L=new Map,R=new WeakMap,me=`this issue`,z=D(()=>N),he={spiking:`spiking`,regressed:`regressed`,worsened:`worsened`,new:`new`,quiet:`quiet`},B=[{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}],ge=B.map(e=>e.track).join(` `),_e=B.filter(e=>!e.isMagnitude).map(e=>e.phoneTrack).join(` `),ve=B.findIndex(e=>e.startsActionCluster)+1,V=3e4;function H(e){let t=g(`div`,e);return t.style.setProperty(`--radar-issue-grid`,ge),t.style.setProperty(`--radar-issue-grid-phone`,_e),t.style.setProperty(`--radar-issue-actions-start`,String(ve)),t}function U(e,t){let n=g(`span`,`radar-issue-magnitudes`),r=!1;for(let i of B){let a=t(i);i.isMagnitude?(r||=(e.append(n),!0),n.append(a)):e.append(a)}}function W(e){return Number.isFinite(e)?String(e):`0`}function ye(e){return typeof e!=`number`||!Number.isFinite(e)||e<=0?``:`elapsed ${E(Date.now()-e)}`}function G(e){return typeof e?.issueId==`string`?e.issueId:``}function K(e,t){return[String(e??``),String(t??``)].join(`::`)}function be(e,t,n){let r=L.get(K(e,t));if(!r||!r.copy.isConnected)return!1;let i=c(n);return i?(r.summary||(r.summary=g(`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 q(e,n,r){let i=G(e);if(!i)return;I?.dialog.close();let a=de({issueTitle:String(e.title||i),projectLabel:r,onOpenReport:()=>Y(e)});I={projectId:String(n??``),issueId:i,dialog:a},a.update(t(e))}function J(){if(!I)return;if(!I.dialog.isOpen()){I=null;return}let e=C(j().latest,I.projectId,I.issueId);e&&I.dialog.update(t(e))}function Y(e){let t=G(e);t&&w(`get-radar-report`,{issueId:t},{timeoutMs:A}).then(n=>{n.ok?n.found?M({issueId:t,issueTitle:String(e.title??``),format:String(n.format??``),content:String(n.content||``)}):M({issueId:t,issueTitle:String(e.title??``),message:String(n.message||`Report not found`)}):M({issueId:t,issueTitle:String(e.title??``),error:String(n.error||`Could not read report`)})}).catch(n=>{M({issueId:t,issueTitle:String(e.title??``),error:k(n,A)})})}function X(){let e=g(`div`,`radar-issue-actions`),t=g(`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=g(`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)=>{F.begin(e),o(!0),i(),O(t,`busy`,a);let l=(n,r)=>{o(!1),i(),O(t,n,r),F.settle(e)};w(n,r,{timeoutMs:V}).then(e=>{e.ok?(l(`ok`,s(e)),c&&c(e)):l(`error`,String(e.error||`Request failed`))}).catch(e=>l(`error`,k(e,V)))},showFollowUp:a,wrap:e}}function xe(e){let t=g(`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(),Be(e)}),t}function Se(e,t,n){let{addButton:r,request:i,showFollowUp:a,wrap:o}=X(),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`,()=>q(e,t,n)),!e.inFlight&&e.verdict&&G(e)&&r(`Open report`,`Open the investigation report for this issue`,()=>Y(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`&&j().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`,()=>{ie({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 Z(e){return le()?me:e}function Ce(e){let t=R.get(e);t&&(e.title=t())}function we(){if(N)for(let e of N.querySelectorAll(`.radar-issue-reportable`))Ce(e)}ce(we);function Te(e,t,n){e.classList.add(`radar-issue-reportable`),R.set(e,t),Ce(e),e.addEventListener(`click`,e=>{e.target instanceof Element&&(e.target.closest(`a, button`)||n())})}function Ee(e,t,r){let i=g(`div`,`radar-issue`);i.dataset.severity=te(e.change);let a=g(`span`,`radar-stripe`);a.setAttribute(`aria-hidden`,`true`);let o=g(`span`,`radar-change`,he[e.change??``]||String(e.change||`unknown`)),u=d(`radar-issue-title`,String(e.title||`Untitled issue`),e.url,String(e.title||``)),f=g(`span`,`radar-metric`);f.append(g(`span`,`radar-metric-value`,W(e.occurrences)),g(`span`,`radar-metric-label`,`occ`));let p=g(`span`,`radar-metric`);p.append(g(`span`,`radar-metric-value`,W(e.users)),g(`span`,`radar-metric-label`,`users`));let m=l(e.history),h=re(m,64,16),_=h?document.createElementNS(P,`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(P,`title`);e.textContent=ee(m);let t=document.createElementNS(P,`polyline`);t.setAttribute(`points`,h),_.append(e,t)}let v=c(e),b=g(`span`,`radar-issue-copy`);b.append(u);let x=null;v&&(x=g(`span`,`radar-issue-summary`),x.textContent=v,b.append(x)),L.set(K(t,e.issueId),{copy:b,summary:x});let S=g(`span`,`radar-issue-meta`),C=ne(e);if(C!==null){let e=g(`span`,`radar-issue-seen`);e.title=new Date(C).toLocaleString(),z.track(e,C,T),S.append(e)}let w=n(e);w&&S.append(g(`span`,`radar-issue-status`,w));let E=String(e.title||e.issueId);if(e.inFlight){let n=g(`span`,`radar-verdict`,`investigating`);n.dataset.verdict=`INVESTIGATING`,S.append(n);let a=typeof e.startedAt==`number`?e.startedAt:null;if(a!==null&&Number.isFinite(a)&&a>0){let e=g(`span`,`radar-issue-elapsed`);z.track(e,a,ye),S.append(e)}G(e)&&Te(i,()=>`Watch the investigation of ${Z(E)}`,()=>q(e,t,r))}if(!e.inFlight&&e.verdict){let t=g(`span`,`radar-verdict`,y(e.verdict));t.dataset.verdict=e.verdict,S.append(t),G(e)&&Te(i,()=>`View investigation report for ${Z(E)}`,()=>Y(e))}S.childElementCount>0&&b.append(S);let D=g(`span`,`radar-issue-trend`);_&&D.append(_);let O=s(m);if(O){let e=O.direction===`up`?`+`:O.direction===`down`?`-`:`=`,t=g(`span`,`radar-delta`,`${e}${O.percent}%`);t.dataset.direction=O.direction,D.append(t)}let k={stripe:a,change:o,copy:b,occurrences:f,users:p,trend:D};return U(i,e=>k[e.columnId]),G(e)&&i.append(Se(e,t,r)),i}var Q=(e,t,n)=>b(`radar`,e,t,n);function De(e){return e.error?`poll failed: ${e.error}`:e.staleMs>0?`stale ${E(e.staleMs)}`:``}function Oe(e,t,{showHost:n,nameTag:r,nameClass:i,hostClass:a}){let o=g(r,i,f(t));o.title=String(t.name||``),e.append(o);let s=n?u(t.host):``;s&&e.append(g(`span`,a,s))}function ke(){let e=H(`radar-column-heads`);for(let t of B){if(!t.headText){e.append(g(`span`));continue}let n=g(`span`,`radar-column-head`,t.headText);n.dataset.column=t.columnId,e.append(n)}return e}function Ae(e,t){let n=e.project,r=g(`div`,`radar-project`),i=_(n.issues),a=p(i),o=g(`div`,`radar-project-head`);Oe(o,n,{showHost:t,nameTag:`h3`,nameClass:`radar-project-name`,hostClass:`radar-project-host`}),r.append(o);let s=g(`div`,`radar-project-summary`);s.append(Q(a.active===1?`active issue`:`active issues`,W(a.active))),s.append(Q(`spiking`,W(a.spiking),a.spiking>0?`crit`:null)),s.append(Q(`needs you`,W(a.needsHuman),a.needsHuman>0?`warn`:null));let c=De(e);if(c){let t=g(`span`,`radar-project-alert`,c);t.dataset.tone=e.error?`crit`:`warn`,s.append(t)}if(r.append(s),i.length===0)return r;r.append(ke());let l=H(`radar-issues`);for(let e of i)l.append(Ee(e,n.projectId,f(n)));return r.append(l),r}function je(e,t){let n=e.project,r=g(`div`,`radar-quiet-row`),i=g(`span`,`radar-quiet-dot`);return i.setAttribute(`aria-hidden`,`true`),r.append(i),Oe(r,n,{showHost:t,nameTag:`span`,nameClass:`radar-quiet-name`,hostClass:`radar-quiet-host`}),r.append(g(`span`,`radar-quiet-count`,`0 issues`)),r}var Me=(e,t)=>m(`radar`,e,t);function Ne(){let e=g(`div`,`radar-issue`);return e.dataset.skeleton=``,U(e,e=>g(`span`,e.cellClass)),e}function Pe(){let e=H(`radar-issues`);e.setAttribute(`aria-busy`,`true`),e.setAttribute(`aria-label`,`Loading issues`);for(let t=0;t<5;t+=1)e.append(Ne());return e}function Fe(e){return e?.configured===!1?typeof e.reason==`string`&&e.reason.trim()!==``?`Fix it in`:`Switch it on in`:``}function Ie(e,t=`ready`){let n=Me(`Errors`);if(t===`pending`)return n.append(Pe()),n;if(t===`placeholder`||e.length===0){let e=g(`p`,`radar-unconfigured`,h(j().latest)),t=ue(`lanes-posthog`,`posthog-enabled`,`PostHog settings`),r=Fe(j().latest);return e.append(document.createTextNode(r?` ${r} `:` `),t),n.append(e),n}let r=g(`div`,`radar-global-tick`),o=Number(j().latest?.intervalMinutes);z.track(r,j().latest?.ts,e=>{let t=`polled ${T(e)}`;return!Number.isFinite(o)||o<=0?t:`${t}, every ${o}m`}),n.append(r);let s=o>0?o*6e4:0,{loud:c,quiet:l}=i(e,Date.now(),{intervalMs:s}),u=a(e);for(let e of c)n.append(Ae(e,u));if(l.length===0)return n;let d=g(`div`,`radar-quiet`);for(let e of l)d.append(je(e,u));return n.append(d),n}function Le(e){let{addButton:t,request:n,wrap:r}=X();return e.issueId&&t(`Open report`,`Open the investigation report for this issue`,()=>{Y({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`,()=>se(e.id))}),r}function Re(e){let t=g(`div`,`radar-investigation`),n=g(`span`,`radar-verdict`,y(e.verdict));n.dataset.verdict=e.verdict;let r=d(`radar-issue-title`,e.title,e.url),i=g(`span`,`radar-issue-copy`);if(i.append(r),e.summaryLine){let t=g(`span`,`radar-issue-summary`);t.textContent=e.summaryLine,i.append(t)}if(e.prUrl){let t=g(`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=g(`span`,`radar-verdict`,`fix`);e.dataset.mode=`fix`,t.append(e)}if(t.append(i),e.projectLabel){let n=g(`span`,`radar-investigation-project`);n.textContent=e.projectLabel,t.append(n)}if(e.at>0){let n=g(`span`,`radar-investigation-time`,T(e.at));n.title=new Date(e.at).toLocaleString(),t.append(n)}return t.append(Le(e)),t}function ze(e){let t=Me(`Investigations`,`completed, not yet archived`),n=g(`div`,`radar-investigations`);for(let t of e)n.append(Re(t));return t.append(n),t}function Be(e){j().traceOpener?.(e)}function Ve(){if(!N)return;N.textContent=``,L.clear(),z.reset();let{latest:e,archivedLocally:t}=j(),n=v(e),r=o(e,t),i=x(e,n.length);N.append(Ie(n,i)),r.length>0&&N.append(ze(r))}function $(){F.request()}function He(t){I?.dialog.isOpen()&&r(I,t)&&I.dialog.update(e(t))}function Ue(e){if(e.kind===`status`)$(),J();else if(e.kind===`investigation-activity`){J();let t=C(j().latest,e.projectId,e.issueId);if(e.wasInFlight&&be(e.projectId,e.issueId,t))return;$()}else e.isPatched?(J(),$()):He(e.frame)}function We(e){if(N)return;let t=g(`div`,`radar-content`);e.appendChild(t),N=t,ae(()=>!S(N)),oe(Ue),z.ensure(),Ve()}var Ge={mount:We};export{Ge as view};
@@ -1,4 +1,4 @@
1
- import{C as e,H as t,Nn as n,On as r,Pn as i,V as a,a as o,c as s,d as c,i as l,jn as u,kn as d,o as f,u as p}from"./dom-helpers-B98sy9ep.js";import{l as m,r as h}from"./control-ws-C8SS9PPx.js";import{n as g,t as _}from"./poll-ago-DdlzkUaM.js";import{lt as ee}from"./ui-prefs-Dvsgw_ZF.js";import{T as v,a as y,w as b}from"./action-status-D9Sf2cZp.js";import{i as x}from"./modal-5t7_5VCF.js";import{$ as S,$t as C,At as w,Ct as T,Dt as te,Ft as ne,Hn as re,It as E,Lt as ie,Mt as D,Nt as ae,Ot as O,Pt as oe,Q as se,Qn as ce,Rt as le,St as ue,Tt as k,Yn as de,Z as fe,Zn as pe,_t as me,at as he,bt as ge,ct as _e,dt as ve,en as ye,et as be,ft as xe,g as Se,gt as Ce,ht as we,it as Te,jt as Ee,kt as De,lt as Oe,mt as ke,nt as Ae,ot as je,pt as Me,rt as Ne,st as Pe,tt as Fe,ut as Ie,vt as Le,xt as Re,yt as ze,zn as Be,zt as Ve}from"./index-BNC5TNCw.js";import{a as He,c as Ue,l as We,n as Ge,o as Ke,s as qe,t as Je,u as Ye}from"./pr-scope-tabs-B6hSEKhE.js";var Xe=`> [!NOTE]
1
+ import{C as e,H as t,Nn as n,On as r,Pn as i,V as a,a as o,c as s,d as c,i as l,jn as u,kn as d,o as f,u as p}from"./dom-helpers-B98sy9ep.js";import{l as m,r as h}from"./control-ws-C8SS9PPx.js";import{n as g,t as _}from"./poll-ago-DdlzkUaM.js";import{lt as ee}from"./ui-prefs-Dvsgw_ZF.js";import{T as v,a as y,w as b}from"./action-status-D9Sf2cZp.js";import{i as x}from"./modal-5t7_5VCF.js";import{$ as S,$t as C,At as w,Ct as T,Dt as te,Ft as ne,Hn as re,It as E,Lt as ie,Mt as D,Nt as ae,Ot as O,Pt as oe,Q as se,Qn as ce,Rt as le,St as ue,Tt as k,Yn as de,Z as fe,Zn as pe,_t as me,at as he,bt as ge,ct as _e,dt as ve,en as ye,et as be,ft as xe,g as Se,gt as Ce,ht as we,it as Te,jt as Ee,kt as De,lt as Oe,mt as ke,nt as Ae,ot as je,pt as Me,rt as Ne,st as Pe,tt as Fe,ut as Ie,vt as Le,xt as Re,yt as ze,zn as Be,zt as Ve}from"./index-BReL4NSr.js";import{a as He,c as Ue,l as We,n as Ge,o as Ke,s as qe,t as Je,u as Ye}from"./pr-scope-tabs-jELwYeSS.js";var Xe=`> [!NOTE]
2
2
  > Automated review. Not written by a human.`,Ze=`> [!NOTE]
3
3
  > Automated review by [Glimmervoid](https://glimmervoid.dev). Not written by a human.`,Qe=`> [!NOTE]
4
4
  > Automated review by [Glimmervoid](https://glimmervoid.dev), not written by a human. Approved by hand after checking it.`,$e=d.options.join(`|`),et=String.raw`\*\*(?:\[([^\]\n]+)\]\s+)?(${$e})\*\*`;function tt(e){return[...e.matchAll(new RegExp(et,`g`))].flatMap(e=>{let t=d.safeParse(e[2]);return t.success?[t.data]:[]})}function nt(e){let t=new RegExp(String.raw`^${et}\s*(?:\r?\n|$)`).exec(e);if(!t)return null;let n=d.safeParse(t[2]);return n.success?{reviewer:t[1]??null,severity:n.data,length:t[0].length}:null}function rt(e){let t=e.trimStart(),n=[Xe,Ze,Qe].find(e=>t.startsWith(e));return n?t.slice(n.length).trim():e.trim()}var it=`(line not in the diff)`,at=String.raw`- ${et}`,ot=String.raw`\*\*\x60([^\x60\n]+)\x60\*\* ${it.replace(/[()]/g,`\\$&`)}`,st=new RegExp(String.raw`^(?:${at}|${ot})`,`gm`),ct=new RegExp(String.raw`^${at}\s*(?:\x60([^\x60\n]+)\x60:\s*)?`),lt=new RegExp(String.raw`^${ot}\s*`);function ut(e){return d.options.find(t=>e.includes(t))??null}function dt(e){let t=ct.exec(e);if(t)return{severity:d.parse(t[2]),location:t[3]??null,body:e.slice(t[0].length).trim(),markdown:e};let n=lt.exec(e),r=n?e.slice(n[0].length).trim():e;return{severity:ut(tt(r)),location:n?.[1]??null,body:r,markdown:e}}function ft(e){let t=rt(e),n=t.search(st);return(n===-1?t:t.slice(0,n)).trim()}function pt(e){let t=rt(e),n=[...t.matchAll(st)].map(e=>e.index);return n.map((e,r)=>t.slice(e,n[r+1]).trim()).filter(Boolean).map(dt)}var mt={"direct-request":`Needs you`,"team-request":`Ready`,"changes-requested":`Author to fix`,"checks-failing":`Checks failing`,"checks-pending":`Checks running`,draft:`Draft`,"review-available":`Ready`,approved:`Approved`},ht={APPROVE:{label:`You approved`,tone:`ok`,icon:`passed`},COMMENT:{label:`You commented`,tone:`muted`,icon:`thread`},REQUEST_CHANGES:{label:`You requested changes`,tone:`wait`,icon:`changes-requested`}},gt={APPROVED:{label:`You approved`,tone:`ok`,icon:`passed`},CHANGES_REQUESTED:{label:`You requested changes`,tone:`wait`,icon:`changes-requested`},COMMENTED:{label:`You commented`,tone:`muted`,icon:`thread`}};function _t(e){let t=(e.githubReviews??[]).filter(e=>e.isViewer).sort((e,t)=>(Date.parse(t.submittedAt??``)||0)-(Date.parse(e.submittedAt??``)||0)).at(0);if(!e.postedEvent)return t?gt[t.state]:null;if(!t)return ht[e.postedEvent];let n=Date.parse(t.submittedAt??``);return Number.isNaN(n)||e.postedAt!==void 0&&e.postedAt>n?ht[e.postedEvent]:gt[t.state]}var vt={"changes-requested":`changes-requested`,"checks-failing":`failed`,"checks-pending":`running`,draft:`draft`};function yt(e){let{reason:t}=w(e),n=vt[t];return n?{text:mt[t],icon:n}:null}function bt(e){return yt(e)?.text??null}var xt={discarded:{tone:`muted`,icon:`discarded`,meaning:`Not mine`}};function St(e,t){let n=bt(t);return n?`${e}, ${n}`:e}function Ct(e){if(n(e))return!0;let t=(e.githubReviews??[]).filter(e=>e.isViewer);return t.length===0||t.some(t=>t.commit===Ee(e))}var wt={tone:`warn`,icon:`your-turn`,meaning:`Comments resolved`};function Tt(e,t){if(e.prStage)return{tone:Ve(e.prStage),icon:ie(e.prStage),meaning:le(e.prStage)};let n=xt[t];if(n)return n;if(t===`inReview`)return{tone:`wait`,icon:`running`,meaning:St(`In review`,e)};if(t===`queued`)return{tone:`muted`,icon:`queued`,meaning:St(`Queued`,e)};if(t===`settled`&&`reviewedHead`in e){let t=Ct(e)?_t(e):null;return t?{tone:t.tone,icon:t.icon,meaning:t.label}:{tone:`ok`,icon:`passed`,meaning:`Others reviewed`}}if(t===`posted`&&`reviewedHead`in e){let t=_t(e);return t?{tone:t.tone,icon:t.icon,meaning:t.label}:{tone:`muted`,icon:`none`,meaning:`Posted`}}if(t===`attention`&&`status`in e)return e.status===`error`?{tone:`danger`,icon:`failed`,meaning:`Review failed`}:{tone:`warn`,icon:`stale`,meaning:`Out of date`};let r=yt(e);return r?{tone:`wait`,icon:r.icon,meaning:r.text}:t===`ready`&&`reviewedHead`in e&&oe(e)?wt:{tone:`warn`,icon:`your-turn`,meaning:`Waits on you`}}function Et(e){return!e||e.total===0?null:e.total===1?e.resolved===1?`Your 1 comment resolved`:`Your 1 comment unresolved`:e.resolved===e.total?`All ${e.total} of your comments resolved`:`${e.resolved} of ${e.total} of your comments resolved`}function Dt(e){return`${e} ${e===1?`comment`:`comments`}`}function Ot(e,t,n){let r=[`${E(e.repo,e.number)}: ${e.title}`],a=`reviewedHead`in e?e.assessment?.goal.trim():``;if(a&&r.push(a),r.push(Tt(e,t).meaning),n.opened&&r.push(`Opened ${n.opened}`),n.reviewed&&r.push(`Reviewed ${n.reviewed}`),n.posted&&r.push(`Posted ${n.posted}`),!(`reviewedHead`in e))return r.join(`