@preventive/triage 1.0.0-alpha.50 → 1.0.0-alpha.51

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 (51) hide show
  1. package/common/managed/finding-detail.d.ts +2 -1
  2. package/common/managed/finding-detail.js +43 -9
  3. package/common/managed/npm-packages.d.ts +2 -0
  4. package/common/managed/npm-packages.js +18 -1
  5. package/common/managed/routes.js +19 -7
  6. package/common/managed/team-app.d.ts +1 -0
  7. package/common/managed/team-app.js +17 -1
  8. package/out/activity.js +4 -4
  9. package/out/{chunk-75YLHBCM.js → chunk-2K6UN3PC.js} +1 -1
  10. package/out/{chunk-2WDZPXVL.js → chunk-7JBSSRD7.js} +1 -1
  11. package/out/{chunk-4XMP7YVH.js → chunk-FMXWXDR4.js} +1 -1
  12. package/out/chunk-HT2SSA3V.js +1 -0
  13. package/out/chunk-IPAH4LKF.js +232 -0
  14. package/out/{chunk-FKBXNUW4.js → chunk-KOGNQDSJ.js} +1 -1
  15. package/out/{chunk-UK7RGJT6.js → chunk-VDRXHIHN.js} +2 -2
  16. package/out/{chunk-HTBYHSPG.js → chunk-WRAJVD35.js} +1 -1
  17. package/out/client-managed-import.js +1 -1
  18. package/out/client-managed.js +25 -25
  19. package/out/compare.js +14 -14
  20. package/out/dialogs.js +41 -41
  21. package/out/graph.js +1 -1
  22. package/out/index.html +6 -6
  23. package/out/scan.js +2 -2
  24. package/out/view.css +1 -1
  25. package/out/view.js +7 -7
  26. package/package.json +3 -1
  27. package/server-managed/agent-merges.ts +1 -1
  28. package/server-managed/app-agents.ts +4 -2
  29. package/server-managed/commit-lockfiles.ts +7 -4
  30. package/server-managed/comparison.ts +13 -2
  31. package/server-managed/db-neon.ts +13 -3
  32. package/server-managed/db.ts +2 -1
  33. package/server-managed/dependency-review-comments.ts +16 -18
  34. package/server-managed/dependency-reviews.ts +45 -27
  35. package/server-managed/github-app.ts +3 -42
  36. package/server-managed/github-requests.ts +97 -0
  37. package/server-managed/http.ts +249 -75
  38. package/server-managed/listed-activity.ts +39 -0
  39. package/server-managed/locked-packages.ts +28 -5
  40. package/server-managed/npm-kept.ts +14 -4
  41. package/server-managed/npm-patch.ts +325 -0
  42. package/server-managed/pull-dependencies.ts +9 -6
  43. package/server-managed/pull-dependency-reviews.ts +19 -13
  44. package/server-managed/repository-agents.ts +162 -69
  45. package/server-managed/repository-dependency-reviews.ts +6 -5
  46. package/server-managed/repository-pulls.ts +114 -58
  47. package/server-managed/repository-pulse.ts +1 -1
  48. package/server-managed/reviewed-dependencies.ts +4 -5
  49. package/server-managed/team-reports.ts +19 -7
  50. package/out/chunk-6S2U2UYG.js +0 -232
  51. package/out/chunk-FC65TPUB.js +0 -1
package/out/view.js CHANGED
@@ -1,19 +1,19 @@
1
- import"./chunk-R3NZFXVR.js";import{a as e,b as t,e as n,f as r,g as i,i as a}from"./chunk-2WDZPXVL.js";import{$b as o,$c as s,Ab as c,Ac as l,Ba as u,Bb as d,Bc as f,Bd as p,C as m,Cc as h,Cd as g,D as ee,Dc as te,Dd as ne,Ec as re,Ed as ie,Fc as _,Fd as ae,G as oe,H as se,I as ce,Ib as le,Ie as ue,Je as de,K as fe,Kb as pe,Kd as me,Ke as he,L as v,Ld as ge,Le as _e,Mb as ve,Me as ye,N as be,Nc as xe,Ob as Se,Oc as Ce,P as we,Pb as Te,Q as Ee,Qb as De,R as Oe,Rb as ke,S as Ae,Sb as je,T as y,Tb as Me,Tc as Ne,Ua as Pe,Ub as Fe,Uc as Ie,V as Le,Va as Re,Vb as ze,Vc as Be,Wa as Ve,Wc as He,Xa as Ue,Xb as We,Xc as Ge,Ya as Ke,Yb as qe,Yc as Je,Zb as Ye,Zc as Xe,_b as Ze,ac as Qe,ad as $e,bc as et,bd as tt,c as nt,cb as rt,cc as b,d as x,db as it,dc as at,e as ot,eb as S,ec as st,ee as ct,f as lt,fc as ut,fe as dt,gb as ft,gc as C,ge as pt,h as mt,hb as w,hc as ht,i as gt,ia as _t,ib as vt,ic as yt,ie as bt,ja as xt,jb as St,jc as Ct,je as wt,k as Tt,ka as Et,kc as Dt,ke as Ot,kf as kt,l as At,la as jt,lb as Mt,lc as Nt,le as T,lf as Pt,m as Ft,ma as It,mb as Lt,mc as Rt,me as zt,mf as Bt,na as Vt,nc as Ht,nd as Ut,ne as Wt,nf as E,o as Gt,oa as Kt,oc as qt,oe as Jt,of as Yt,p as Xt,pc as Zt,pe as Qt,pf as $t,q as en,qc as tn,qe as D,r as nn,ra as rn,rc as an,re as on,s as sn,sc as O,se as cn,sf as ln,t as un,tc as k,te as dn,tf as fn,ue as pn,uf as mn,v as hn,vb as gn,vf as _n,w as A,wb as vn,wf as yn,x as j,xb as bn,xc as xn,xe as Sn,y as Cn,yb as wn,yc as Tn,ye as En,zb as Dn,zc as On,ze as kn}from"./chunk-6S2U2UYG.js";import"./chunk-JCIIBLKR.js";import"./chunk-VH4XMZIW.js";import{d as An}from"./chunk-FKBXNUW4.js";import{D as jn,L as Mn,N as Nn,T as Pn,Y as Fn,_ as M,b as In,n as Ln,t as Rn,u as zn,v as Bn,x as Vn,y as Hn}from"./chunk-6LNQTKAV.js";import{f as Un,g as Wn}from"./chunk-7VAWINQF.js";import"./chunk-NRPC74AM.js";import"./chunk-7BKKYVWR.js";import{f as N}from"./chunk-7C7DWL7I.js";import"./chunk-PNHBZGDD.js";import"./chunk-VFWMQ3LG.js";import{$ as Gn,C as Kn,D as qn,K as Jn,L as Yn,N as Xn,T as Zn,W as Qn,X as $n,_ as er,a as P,b as tr,d as F,e as I,f as nr,fa as rr,ha as ir,j as ar,ja as or,r as sr,s as cr,u as lr}from"./chunk-4XMP7YVH.js";import{g as ur}from"./chunk-75YLHBCM.js";import"./chunk-WCPJDAYA.js";import"./chunk-IYPY47MC.js";import{a as dr,d as fr}from"./chunk-PWFUOLZK.js";import{a as pr,g as mr,h as hr,n as gr,p as _r,r as vr}from"./chunk-FC65TPUB.js";import{B as yr,I as br,l as xr}from"./chunk-SXV2T5C4.js";import{d as Sr,i as Cr,k as wr,l as Tr,q as Er,w as Dr}from"./chunk-WFYLMF6Z.js";import"./chunk-C4Z6ZBXV.js";import{a as L,b as Or,c as R,g as z,i as kr,j as B}from"./chunk-2XUEZHIP.js";import"./chunk-TUII34K2.js";import"./chunk-OOJM4CTU.js";var Ar={attach:{title:`Synced triage on report attach`,intro:`have triage from your workspace that disagrees with your local view on`,trailingNote:`Other findings in this report whose chain value didn't conflict were applied automatically; this list only covers disagreements. Pick which side to keep.`,importedSideLabel:`Apply from chain`,applyButton:`Apply`},chain:{title:`Triage conflict from peer update`,intro:`were changed by a peer (or by another tab) in a way that disagrees with your local triage on`,trailingNote:`Other findings whose remote value didn't conflict were applied automatically; this list only covers disagreements. Pick which side to keep for each — a "keep current" pick re-publishes your local value to the chain on your next save.`,importedSideLabel:`Apply from chain`,applyButton:`Apply`}};function jr(){d(async(e,t,n)=>{let r=we(e);try{return await gn(e,r,Ar[n]??Ar.attach)}catch{let t=e.length;return alert(`${n===`attach`?`A report attach`:`A workspace sync`} had ${t} triage disagreement${t===1?``:`s`} with your local view. Kept your local values because another dialog is open. ${n===`attach`?`Detach and re-attach the report to pick again.`:`Your local values will re-publish to the chain on the next change.`}`),null}})}var Mr=class extends Mt{static properties={retry:{type:Boolean},_value:{state:!0}};constructor(){super(),this.retry=!1,this._value=``}_finish(e){this._value=``,super._finish(e)}_onCancel=()=>this._finish(null);_onInput=e=>{this._value=e.target.value};_onSubmit=()=>{let e=this._value??``;e&&this._finish(e)};_onKeydown=e=>{e.key===`Enter`&&(e.preventDefault(),this._onSubmit())};render(){let e=(this._value??``).length>0,t=this.retry?`That password didn't match. Try again, or cancel to leave the workspace unsynced for now.`:`This sync server requires a password before it accepts a new workspace. Enter it to create the workspace on the server.`;return R`<dialog @close="${this._onClose}"><header><h3>Sync server password</h3></header><p class="nwd-intro">${t}</p><input type="password" class="nwd-input" placeholder="Password" autocomplete="off" data-1p-ignore="true" data-lpignore="true" data-bwignore="true" data-form-type="other" name="dv-sync-auth" maxlength="4096" .value="${this._value}" @input="${this._onInput}" @keydown="${this._onKeydown}"><footer class="nwd-actions"><span class="nwd-spacer"></span> <button type="button" @click="${this._onCancel}">Cancel</button> <button type="button" class="primary" ?disabled="${!e}" @click="${this._onSubmit}">${this.retry?`Retry`:`Authenticate`}</button></footer></dialog>`}};customElements.define(`sync-auth-dialog`,Mr);function Nr({retry:e=!1}={}){return Lt(`sync-auth-dialog`,{retry:!!e})}function Pr(){c(async({retry:e})=>{try{return await Nr({retry:e})}catch(e){return console.warn(`Sync auth dialog failed to open:`,e),null}})}var Fr=`https://triage.space/`,Ir=[{hostname:`deepaudit.dev`,pathPrefix:`/`,supportsSync:!0},{hostname:`chalker.github.io`,pathPrefix:`/deepview/`,supportsSync:!1}];function Lr(){for(let e of Ir)if(location.hostname===e.hostname&&location.pathname.startsWith(e.pathPrefix))return e;return null}var Rr=[`deepview.triage`,`deepview.triage.pending`],zr=`deepview.repoUrls`;function Br(){try{for(let e of Rr)if(localStorage.getItem(e))return!0}catch{return!0}try{let e=localStorage.getItem(zr);if(e){let t=JSON.parse(e);if(t&&typeof t==`object`&&Object.keys(t).length>0)return!0}}catch{return!0}return!1}async function Vr(){if(Br())return!0;let e=[];try{e=await Cn()}catch{return!0}if(e.length>0)return!0;try{if(v().length>0)return!0}catch{return!0}try{return await m()}catch{return!0}}var Hr=class extends B{static properties={supportsSync:{attribute:!1}};createRenderRoot(){return this}constructor(){super(),this.supportsSync=!1}firstUpdated(){let e=this.querySelector(`dialog`);e&&e.showModal();let t=this.querySelector(`button.om-stay`);t&&t.focus()}_finish(e){if(this._settled)return;this._settled=!0;let t=this.querySelector(`dialog`);t&&t.close(),this.dispatchEvent(new CustomEvent(`resolve`,{detail:e}))}_onClose=()=>this._finish(!1);_onStay=()=>this._finish(!1);_onMigrate=()=>this._finish(!0);render(){let e=()=>R`<a class="om-link" href="${Fr}" target="_blank" rel="noopener noreferrer">${Fr}</a>`;return R`<dialog class="origin-migration-dialog" @close="${this._onClose}"><header class="om-head"><h3>This deepview build has moved</h3><p><code>${location.host}${location.pathname}</code> has moved to ${e()}.</p></header><section class="om-body"><p>Workspaces and reports don't migrate automatically — they live in this origin's browser storage (OPFS where available, localStorage as a fallback) and have to be re-imported on ${e()}.</p>${this.supportsSync?R`<p>For each workspace, use the <strong>Export workspace</strong> button in the sidebar to download a <code>.gz</code> bundle (workspace + its reports + its triage), then drop that file on ${e()}. Workspaces that had sync configured will pick their triage state back up from the sync server once you re-import them with the same key.</p><p>For triage attached to loose reports (or as a top-up after re-importing workspaces), call <code>DeepView.export()</code> in the browser console — that downloads just the triage entries plus saved repo URLs, no reports or workspaces.</p>`:R`<p>This build has no sync layer. For each workspace, use the <strong>Export workspace</strong> button in the sidebar to download a <code>.gz</code> bundle (workspace + its reports + its triage), then drop that file on ${e()}.</p><p>For triage attached to loose reports, call <code>DeepView.export()</code> in the browser console — that downloads just the triage entries plus saved repo URLs, no reports or workspaces. Reports themselves need to be re-dropped from their original JSON on the new origin.</p>`}</section><footer class="om-actions"><button type="button" class="om-stay" @click="${this._onStay}">Keep editing on ${location.host}</button> <button type="button" class="primary om-go" @click="${this._onMigrate}">Switch to triage.space</button></footer></dialog>`}};customElements.define(`origin-migration-dialog`,Hr);function Ur(e){return new Promise(t=>{let n=document.createElement(`origin-migration-dialog`);n.supportsSync=e.supportsSync,n.addEventListener(`resolve`,e=>{n.remove(),t(!!e.detail)}),document.body.append(n)})}async function Wr(){let e=Lr();return e?await Vr()?await Ur(e)?(location.assign(Fr),!0):!1:(location.replace(Fr),!0):!1}var V=null,Gr=!1,Kr=null;function qr(e){if(!e)return`Could not unlock. Try again.`;switch(e.name??``){case`NotAllowedError`:case`AbortError`:return``;case`SecurityError`:return`The site identity does not match the one this passkey was registered for. If you opened DeepView through a different URL (different subdomain, different port), reload via the original URL.`;case`InvalidStateError`:return`The passkey state on this device is inconsistent. Try reloading the page or removing and re-creating the passkey.`;case`NotSupportedError`:return`This browser does not support the WebAuthn PRF extension this site needs. Try a recent Chrome, Safari, or Edge with a platform authenticator.`;case`NetworkError`:return`A network error prevented the passkey from completing. Check your connection and try again.`;case`UnknownError`:return`The authenticator returned an unknown error. Try again, or use a different passkey.`;default:{let t=e.message??String(e);return t.length>200?t.slice(0,197)+`…`:t}}}function Jr(){if(V)return V;V=document.createElement(`div`),V.id=`lock-overlay`,V.setAttribute(`role`,`dialog`),V.setAttribute(`aria-modal`,`true`),V.setAttribute(`aria-label`,`Unlock DeepView`),kr(R`<div class="lock-overlay-card"><div class="lock-overlay-icon" aria-hidden="true"><svg viewBox="0 0 32 32" width="40" height="40" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="7" y="15" width="18" height="12" rx="1.5"/><path d="M11 15v-4a5 5 0 0 1 10 0v4"/></svg></div><h2 class="lock-overlay-title">DeepView is locked</h2><p class="lock-overlay-body">Your triage data and reports are encrypted with a passkey on this device. Unlock to continue.</p><p class="lock-overlay-error" hidden></p><button type="button" class="lock-overlay-button primary">Unlock with passkey</button><p class="lock-overlay-footer">Lost your passkey? <a href="#" class="lock-overlay-wipe">Wipe local data and start over</a></p></div>`,V);let e=V.querySelector(`button`),t=V.querySelector(`.lock-overlay-error`);return e.addEventListener(`click`,async()=>{if(!Gr&&Yr()){Gr=!0,t.hidden=!0,t.textContent=``,e.disabled=!0,e.textContent=`Waiting…`,Kr=new AbortController;try{await gt({signal:Kr.signal})}catch(e){let n=qr(e);t.textContent=n,t.hidden=!n}finally{Gr=!1,Kr=null,e.disabled=!1,e.textContent=`Unlock with passkey`}}}),V.querySelector(`.lock-overlay-wipe`).addEventListener(`click`,async e=>{if(e.preventDefault(),!Gr&&Yr()&&confirm(`Wipe ALL local DeepView data and start over?
1
+ import"./chunk-R3NZFXVR.js";import{a as e,b as t,e as n,f as r,g as i,i as a}from"./chunk-7JBSSRD7.js";import{$b as o,$c as s,Ab as c,Ac as l,Ae as u,Ba as d,Bb as f,Bc as p,Bd as m,C as h,Cc as g,Cd as ee,D as te,Dc as ne,Dd as re,Ec as ie,Ed as ae,Fc as _,Fd as oe,G as se,H as ce,I as le,Ib as ue,Je as de,K as fe,Kb as pe,Kd as me,Ke as he,L as v,Ld as ge,Le as _e,Mb as ve,Me as ye,N as be,Nc as xe,Ne as Se,Ob as Ce,Oc as we,P as Te,Pb as Ee,Q as De,Qb as Oe,R as ke,Rb as Ae,S as je,Sb as Me,T as y,Tb as Ne,Tc as Pe,Ua as Fe,Ub as Ie,Uc as Le,V as Re,Va as ze,Vb as Be,Vc as Ve,Wa as He,Wc as Ue,Xa as We,Xb as b,Xc as Ge,Ya as Ke,Yb as qe,Yc as Je,Zb as Ye,Zc as Xe,_b as Ze,ac as Qe,ad as $e,bc as et,bd as tt,c as nt,cb as rt,cc as x,d as S,db as it,dc as at,e as ot,eb as st,ec as ct,f as lt,fc as ut,fe as dt,gb as ft,gc as C,ge as pt,h as mt,hb as w,hc as ht,he as gt,i as _t,ia as vt,ib as yt,ic as bt,ja as xt,jb as St,jc as Ct,je as wt,k as Tt,ka as Et,kc as Dt,ke as Ot,l as kt,la as At,lb as jt,lc as Mt,le as Nt,lf as Pt,m as Ft,ma as It,mb as Lt,mc as Rt,me as T,mf as zt,na as Bt,nc as Vt,nd as Ht,ne as Ut,nf as Wt,o as Gt,oa as Kt,oc as qt,oe as Jt,of as E,p as Yt,pc as Xt,pe as Zt,pf as Qt,q as $t,qc as en,qe as tn,qf as nn,r as rn,ra as an,rc as on,re as D,s as sn,sc as O,se as cn,t as ln,tc as k,te as un,tf as dn,ue as fn,uf as pn,v as mn,vb as hn,ve as gn,vf as _n,w as A,wb as vn,wf as yn,x as j,xb as bn,xc as xn,xf as Sn,y as Cn,yb as wn,yc as Tn,ye as En,zb as Dn,zc as On,ze as kn}from"./chunk-IPAH4LKF.js";import"./chunk-JCIIBLKR.js";import"./chunk-VH4XMZIW.js";import{d as An}from"./chunk-KOGNQDSJ.js";import{D as jn,L as Mn,N as Nn,T as Pn,Y as Fn,_ as M,b as In,n as Ln,t as Rn,u as zn,v as Bn,x as Vn,y as Hn}from"./chunk-6LNQTKAV.js";import{f as Un,g as Wn}from"./chunk-7VAWINQF.js";import"./chunk-NRPC74AM.js";import"./chunk-7BKKYVWR.js";import{f as N}from"./chunk-7C7DWL7I.js";import"./chunk-PNHBZGDD.js";import"./chunk-VFWMQ3LG.js";import{$ as Gn,C as Kn,D as qn,K as Jn,L as Yn,N as Xn,T as Zn,W as Qn,X as $n,_ as er,a as P,b as tr,d as F,e as I,f as nr,fa as rr,ha as ir,j as ar,ja as or,r as sr,s as cr,u as lr}from"./chunk-FMXWXDR4.js";import{g as ur}from"./chunk-2K6UN3PC.js";import"./chunk-WCPJDAYA.js";import"./chunk-IYPY47MC.js";import{a as dr,d as fr}from"./chunk-PWFUOLZK.js";import{a as pr,i as mr,j as hr,p as gr,r as _r,t as vr}from"./chunk-HT2SSA3V.js";import{B as yr,I as br,l as xr}from"./chunk-SXV2T5C4.js";import{d as Sr,i as Cr,k as wr,l as Tr,q as Er,w as Dr}from"./chunk-WFYLMF6Z.js";import"./chunk-C4Z6ZBXV.js";import{a as L,b as Or,c as R,g as z,i as kr,j as B}from"./chunk-2XUEZHIP.js";import"./chunk-TUII34K2.js";import"./chunk-OOJM4CTU.js";var Ar={attach:{title:`Synced triage on report attach`,intro:`have triage from your workspace that disagrees with your local view on`,trailingNote:`Other findings in this report whose chain value didn't conflict were applied automatically; this list only covers disagreements. Pick which side to keep.`,importedSideLabel:`Apply from chain`,applyButton:`Apply`},chain:{title:`Triage conflict from peer update`,intro:`were changed by a peer (or by another tab) in a way that disagrees with your local triage on`,trailingNote:`Other findings whose remote value didn't conflict were applied automatically; this list only covers disagreements. Pick which side to keep for each — a "keep current" pick re-publishes your local value to the chain on your next save.`,importedSideLabel:`Apply from chain`,applyButton:`Apply`}};function jr(){f(async(e,t,n)=>{let r=Te(e);try{return await hn(e,r,Ar[n]??Ar.attach)}catch{let t=e.length;return alert(`${n===`attach`?`A report attach`:`A workspace sync`} had ${t} triage disagreement${t===1?``:`s`} with your local view. Kept your local values because another dialog is open. ${n===`attach`?`Detach and re-attach the report to pick again.`:`Your local values will re-publish to the chain on the next change.`}`),null}})}var Mr=class extends jt{static properties={retry:{type:Boolean},_value:{state:!0}};constructor(){super(),this.retry=!1,this._value=``}_finish(e){this._value=``,super._finish(e)}_onCancel=()=>this._finish(null);_onInput=e=>{this._value=e.target.value};_onSubmit=()=>{let e=this._value??``;e&&this._finish(e)};_onKeydown=e=>{e.key===`Enter`&&(e.preventDefault(),this._onSubmit())};render(){let e=(this._value??``).length>0,t=this.retry?`That password didn't match. Try again, or cancel to leave the workspace unsynced for now.`:`This sync server requires a password before it accepts a new workspace. Enter it to create the workspace on the server.`;return R`<dialog @close="${this._onClose}"><header><h3>Sync server password</h3></header><p class="nwd-intro">${t}</p><input type="password" class="nwd-input" placeholder="Password" autocomplete="off" data-1p-ignore="true" data-lpignore="true" data-bwignore="true" data-form-type="other" name="dv-sync-auth" maxlength="4096" .value="${this._value}" @input="${this._onInput}" @keydown="${this._onKeydown}"><footer class="nwd-actions"><span class="nwd-spacer"></span> <button type="button" @click="${this._onCancel}">Cancel</button> <button type="button" class="primary" ?disabled="${!e}" @click="${this._onSubmit}">${this.retry?`Retry`:`Authenticate`}</button></footer></dialog>`}};customElements.define(`sync-auth-dialog`,Mr);function Nr({retry:e=!1}={}){return Lt(`sync-auth-dialog`,{retry:!!e})}function Pr(){c(async({retry:e})=>{try{return await Nr({retry:e})}catch(e){return console.warn(`Sync auth dialog failed to open:`,e),null}})}var Fr=`https://triage.space/`,Ir=[{hostname:`deepaudit.dev`,pathPrefix:`/`,supportsSync:!0},{hostname:`chalker.github.io`,pathPrefix:`/deepview/`,supportsSync:!1}];function Lr(){for(let e of Ir)if(location.hostname===e.hostname&&location.pathname.startsWith(e.pathPrefix))return e;return null}var Rr=[`deepview.triage`,`deepview.triage.pending`],zr=`deepview.repoUrls`;function Br(){try{for(let e of Rr)if(localStorage.getItem(e))return!0}catch{return!0}try{let e=localStorage.getItem(zr);if(e){let t=JSON.parse(e);if(t&&typeof t==`object`&&Object.keys(t).length>0)return!0}}catch{return!0}return!1}async function Vr(){if(Br())return!0;let e=[];try{e=await Cn()}catch{return!0}if(e.length>0)return!0;try{if(v().length>0)return!0}catch{return!0}try{return await h()}catch{return!0}}var Hr=class extends B{static properties={supportsSync:{attribute:!1}};createRenderRoot(){return this}constructor(){super(),this.supportsSync=!1}firstUpdated(){let e=this.querySelector(`dialog`);e&&e.showModal();let t=this.querySelector(`button.om-stay`);t&&t.focus()}_finish(e){if(this._settled)return;this._settled=!0;let t=this.querySelector(`dialog`);t&&t.close(),this.dispatchEvent(new CustomEvent(`resolve`,{detail:e}))}_onClose=()=>this._finish(!1);_onStay=()=>this._finish(!1);_onMigrate=()=>this._finish(!0);render(){let e=()=>R`<a class="om-link" href="${Fr}" target="_blank" rel="noopener noreferrer">${Fr}</a>`;return R`<dialog class="origin-migration-dialog" @close="${this._onClose}"><header class="om-head"><h3>This deepview build has moved</h3><p><code>${location.host}${location.pathname}</code> has moved to ${e()}.</p></header><section class="om-body"><p>Workspaces and reports don't migrate automatically — they live in this origin's browser storage (OPFS where available, localStorage as a fallback) and have to be re-imported on ${e()}.</p>${this.supportsSync?R`<p>For each workspace, use the <strong>Export workspace</strong> button in the sidebar to download a <code>.gz</code> bundle (workspace + its reports + its triage), then drop that file on ${e()}. Workspaces that had sync configured will pick their triage state back up from the sync server once you re-import them with the same key.</p><p>For triage attached to loose reports (or as a top-up after re-importing workspaces), call <code>DeepView.export()</code> in the browser console — that downloads just the triage entries plus saved repo URLs, no reports or workspaces.</p>`:R`<p>This build has no sync layer. For each workspace, use the <strong>Export workspace</strong> button in the sidebar to download a <code>.gz</code> bundle (workspace + its reports + its triage), then drop that file on ${e()}.</p><p>For triage attached to loose reports, call <code>DeepView.export()</code> in the browser console — that downloads just the triage entries plus saved repo URLs, no reports or workspaces. Reports themselves need to be re-dropped from their original JSON on the new origin.</p>`}</section><footer class="om-actions"><button type="button" class="om-stay" @click="${this._onStay}">Keep editing on ${location.host}</button> <button type="button" class="primary om-go" @click="${this._onMigrate}">Switch to triage.space</button></footer></dialog>`}};customElements.define(`origin-migration-dialog`,Hr);function Ur(e){return new Promise(t=>{let n=document.createElement(`origin-migration-dialog`);n.supportsSync=e.supportsSync,n.addEventListener(`resolve`,e=>{n.remove(),t(!!e.detail)}),document.body.append(n)})}async function Wr(){let e=Lr();return e?await Vr()?await Ur(e)?(location.assign(Fr),!0):!1:(location.replace(Fr),!0):!1}var V=null,Gr=!1,Kr=null;function qr(e){if(!e)return`Could not unlock. Try again.`;switch(e.name??``){case`NotAllowedError`:case`AbortError`:return``;case`SecurityError`:return`The site identity does not match the one this passkey was registered for. If you opened DeepView through a different URL (different subdomain, different port), reload via the original URL.`;case`InvalidStateError`:return`The passkey state on this device is inconsistent. Try reloading the page or removing and re-creating the passkey.`;case`NotSupportedError`:return`This browser does not support the WebAuthn PRF extension this site needs. Try a recent Chrome, Safari, or Edge with a platform authenticator.`;case`NetworkError`:return`A network error prevented the passkey from completing. Check your connection and try again.`;case`UnknownError`:return`The authenticator returned an unknown error. Try again, or use a different passkey.`;default:{let t=e.message??String(e);return t.length>200?t.slice(0,197)+`…`:t}}}function Jr(){if(V)return V;V=document.createElement(`div`),V.id=`lock-overlay`,V.setAttribute(`role`,`dialog`),V.setAttribute(`aria-modal`,`true`),V.setAttribute(`aria-label`,`Unlock DeepView`),kr(R`<div class="lock-overlay-card"><div class="lock-overlay-icon" aria-hidden="true"><svg viewBox="0 0 32 32" width="40" height="40" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="7" y="15" width="18" height="12" rx="1.5"/><path d="M11 15v-4a5 5 0 0 1 10 0v4"/></svg></div><h2 class="lock-overlay-title">DeepView is locked</h2><p class="lock-overlay-body">Your triage data and reports are encrypted with a passkey on this device. Unlock to continue.</p><p class="lock-overlay-error" hidden></p><button type="button" class="lock-overlay-button primary">Unlock with passkey</button><p class="lock-overlay-footer">Lost your passkey? <a href="#" class="lock-overlay-wipe">Wipe local data and start over</a></p></div>`,V);let e=V.querySelector(`button`),t=V.querySelector(`.lock-overlay-error`);return e.addEventListener(`click`,async()=>{if(!Gr&&Yr()){Gr=!0,t.hidden=!0,t.textContent=``,e.disabled=!0,e.textContent=`Waiting…`,Kr=new AbortController;try{await _t({signal:Kr.signal})}catch(e){let n=qr(e);t.textContent=n,t.hidden=!n}finally{Gr=!1,Kr=null,e.disabled=!1,e.textContent=`Unlock with passkey`}}}),V.querySelector(`.lock-overlay-wipe`).addEventListener(`click`,async e=>{if(e.preventDefault(),!Gr&&Yr()&&confirm(`Wipe ALL local DeepView data and start over?
2
2
 
3
3
  This deletes your encrypted triage, all reports, and the passkey registration on this device. The data CANNOT be recovered after this — there is no backup.
4
4
 
5
- Use this only if you have lost access to your passkey and have no other way to unlock.`)&&confirm(`Really wipe everything? This cannot be undone.`)){try{await Tt()}catch(e){alert(`Wipe failed: ${e?.message??e}. Try again or clear localStorage manually via DevTools.`);return}location.reload()}}),document.body.append(V),V}function Yr(){return j()||!lt()?!1:x()&&!ot()}async function Xr(){if(await Wt(),Yr()){let e=Jr();e.hidden=!1;let t=e.querySelector(`button`);t&&t.focus()}else if(V&&(V.hidden=!0,Kr))try{Kr.abort()}catch{}}mt(Xr),document.addEventListener(`managed-client-mode-change`,Xr),Xr();var Zr=2;function Qr(e,t){A.focusSplit=t,e.closest(`.focus-main`)?.style.setProperty(`--focus-split`,String(t)),e.setAttribute(`aria-valuenow`,String(Math.round(t)))}function $r(){try{localStorage.setItem(Xt,String(A.focusSplit))}catch{}}function ei(e,t){Qr(e,un(t)),$r()}function ti(e,t){ei(e,A.focusSplit+t)}function ni(e){ei(e,sn)}function ri(e,t){let n=e.closest(`.focus-main`);if(!n)return;t.preventDefault(),e.classList.add(`dragging`);try{e.setPointerCapture(t.pointerId)}catch{}let r=t=>{let r=n.getBoundingClientRect();r.width!==0&&Qr(e,un((t.clientX-r.left)/r.width*100))},i=()=>{e.removeEventListener(`pointermove`,r),e.removeEventListener(`pointerup`,i),e.removeEventListener(`pointercancel`,i),e.classList.remove(`dragging`),$r()};e.addEventListener(`pointermove`,r),e.addEventListener(`pointerup`,i),e.addEventListener(`pointercancel`,i)}function ii(e,t){return ze(Fe(e)).map(e=>t?[C(e)]:ut(e))}var ai={annotation(e){let t=at(e),n=st(e);return!t&&!n?null:{triage:t?.triage,color:t?.color,comment:t?.comment,fix:t?.fix,flagged:t?.flagged===!0,ignored:n}},location:e=>Xn(e,ht(e)),evidence:(e,t,n)=>Qn(e,t,ht(t),n),commit:e=>er(e.repo?.github,e.commitHash),report:e=>e._reportName??null};function oi(e,t){let n=new Set(e.map(e=>e.repo??null)),r=n.size===1?[...n][0]:null;if(r)return r;let i=new Set;for(let e of t)for(let t of e)t.repo?.github&&!qn(t.file)&&i.add(t.repo.github);return i.size===1?[...i][0]:i.size===0&&!A.currentWorkspace&&A.repoUrl?A.repoUrl:null}function si(e){return e.replace(/\.(?:json|md|codex)$/iu,``)}function ci(){return A.currentWorkspace?v().find(e=>e.id===A.currentWorkspace)??null:null}function li(e,t){if(t)return t.name;let n=e.map(e=>e.fileName);return n.length===1?si(n[0]):Jn(n).replace(/[-_. ]+$/u,``)||`${n.length} reports`}function ui({oneSamplePerGroup:e=!1}={}){let t=A.reports,a=De(),s=r(),c=ii(s,e),l=ci(),u=t.flatMap(e=>e.groups??[]),d=u.some(e=>e.some(xr)),f=u.some(e=>e.some(lr));return br({title:li(t,l),workspace:l?.name??null,reports:t.map(e=>({name:e.fileName,source:e.source})),repo:oi(t,c),generatedAt:new Date,view:{bucket:i(),severityMode:d?A.severityMode:null,revalidation:f?A.showRevalidation:null,revalidationDetail:f&&A.showRevalidation!==!1?o():null},filters:n(a),counts:{included:c.length,total:s.length},groups:c},ai)}function di(){let e=ci(),t=A.reports.map(e=>e.fileName),n=``;return e?n=e.name:t.length===1?n=si(t[0]):t.length>1&&(n=si(Jn(t))),n=n.replaceAll(/[\\/:*?"<>|\p{Cc}]/gu,`-`).trim(),`${n||`deepview-report`}.md`}function fi(e){if(A.reports.length===0)return;let t=new Blob([ui(e)],{type:`text/markdown;charset=utf-8`});St(t,di())}function pi(e){return!j()||!xt.active||!A.currentManagedTeam?null:xt.navigate(vr({view:e,teamId:A.currentManagedTeam,reportId:A.currentManagedReport},A.managedTeams))}var mi=!1;oe(()=>{if(mi)return;mi=!0;let e=2;function t(){--e===0&&gi()}requestAnimationFrame(t),setTimeout(t,350)});var hi=!1;function gi(){mi=!1;let e=se();if(e&&(A.currentView===`findings`||A.currentView===`files`)){hi||(hi=!0,e.catch(()=>{}).finally(()=>{hi=!1,gi()}));return}A.findingIndexTick++,A.currentView===`bundles`&&A.selectedBundle||A.currentView===`packages`||A.currentView===`repositories`||A.currentView===`links`?E():(A.currentView===`findings`||A.currentView===`files`)&&(T().catch(()=>{}),E())}var _i=!1;ce(()=>{A.currentView!==`findings`&&A.currentView!==`files`&&!We()||_i||(_i=!0,queueMicrotask(()=>{_i=!1,(A.currentView===`findings`||A.currentView===`files`||We())&&(A.bundleHashTick++,E())}))}),Ee(()=>{A.linksTick++,E()});function vi(){A.currentView===`bundles`&&A.bundleDetailsTab===`graph`?he():Pt()}function yi(){A.currentView===`bundles`&&A.bundleDetailsTab===`graph`?_e():Bt()}function bi(){let e=document.querySelector(`.bundle-source-code-wrap`),t=e?.scrollTop??0,n=e?.scrollLeft??0;E();let r=document.querySelector(`.bundle-source-code-wrap`);r&&(r.scrollTop=t,r.scrollLeft=n)}function H(e){let t=document.querySelector(e)?.scrollTop??0;E();let n=document.querySelector(e);n&&(n.scrollTop=t)}function U(){A.viewMode===`table`?H(`.findings-table-list`):E()}var xi=0;function Si(){xi||=requestAnimationFrame(()=>{xi=0,E()})}function W(e,t){for(let n of e.composedPath())if(n?.matches?.(t))return n;return null}function Ci(e,t){queueMicrotask(()=>{let n=document.querySelector(`.bundle-source-lineno-row[data-line="${e}"]`);n&&n.scrollIntoView(t)})}function wi(e){e.classList.add(`copied`),setTimeout(()=>e.classList.remove(`copied`),1e3)}function Ti(e,t){try{navigator.clipboard.writeText(t).then(()=>(wi(e),null)).catch(()=>{})}catch{}}function Ei(e){let t=g(A.bundleCodeHistory,A.bundleDetails?.integrity??null,A.bundleSourceFile);A.bundleCodeHistory=ne(t,e),A.bundleSourceFile=e}function Di(e=!1){queueMicrotask(()=>{let t=document.querySelector(`.bundle-source-code-wrap`);t&&(t.scrollTop=0,t.scrollLeft=0),e&&t?.querySelector(`.bundle-source-code`)?.focus({preventScroll:!0})})}window.addEventListener(`hashchange`,()=>{if(!j()||In()||A.currentView!==`bundles`||A.bundleDetailsTab!==`code`)return;let e=_r(new URL(location.href));if(e?.bundleTab!==`code`||e.file==null||e.file!==$e(A)?.file)return;let t=A.bundleSourceFile,n=e.endLine??e.line;A.bundleSourceTargetLine=e.line&&n<=Wn(Un(A.bundleDetails).get(t)??``)?{bundle:A.bundleDetails?.integrity??null,path:t,line:e.line,...e.endLine?{end:e.endLine}:{}}:null,E(),A.bundleSourceTargetLine&&Ci(e.line,{block:`center`})});function Oi(e){let t=e.target.closest(`[data-bundle-source-line]`);if(t){let n=Number(t.dataset.bundleSourceLine),r=A.bundleDetails?.integrity??null,i=A.bundleSourceFile,a=A.bundleSourceTargetLine,o=a?.bundle===r&&a.path===i?a:null;if(e.shiftKey&&o){let e=o.anchor??o.line;A.bundleSourceTargetLine={bundle:r,path:i,line:Math.min(e,n),end:Math.max(e,n),anchor:e}}else o?.line===n&&!(o.end>n)?A.bundleSourceTargetLine=null:A.bundleSourceTargetLine={bundle:r,path:i,line:n};return bi(),!0}let n=e.target.closest(`[data-bundle-source-wrap]`);if(n){let e=Ut(n);A.bundleSourceWrap=!A.bundleSourceWrap;try{localStorage.setItem(nn,String(A.bundleSourceWrap))}catch{}return E(),queueMicrotask(e),!0}if(e.target.closest(`[data-bundle-source-pretty]`))return p(),E(),Di(),!0;if(e.target.closest(`[data-bundle-source-lockfile]`))return ae(),E(),!0;let r=e.target.closest(`[data-bundle-code-history]`);if(r){let e=g(A.bundleCodeHistory,A.bundleDetails?.integrity??null,A.bundleSourceFile),t=ie(e,r.dataset.bundleCodeHistory===`back`?-1:1),n=t.files[t.at];return t.at===e.at||!Un(A.bundleDetails).has(n)||(A.bundleCodeHistory=t,A.bundleSourceFile=n,A.bundleSourceFindingIdx=null,A.bundleCodeSearchMode=`files`,A.bundleCodeSearchQuery=``,H(`.bundle-code-rail-body`),ye(),Di()),!0}let i=e.target.closest(`[data-bundle-source-link]`);if(i){let t=i.dataset.bundleSourceLink,n=i.closest(`.focus-pane-code`);if(n){let r=Wi(e),i=h(r,n.dataset.focusCodeIntegrity,n.dataset.focusCodeFile,t);return i&&(Gi(r,i),queueMicrotask(()=>n.querySelector(`.focus-code-source`)?.focus({preventScroll:!0}))),!0}return Un(A.bundleDetails).has(t)&&(A.currentView===`bundles`&&A.bundleDetailsTab===`search`&&(fn(`code`,{preserveSource:!0}),A.selectedBundle&&D(A.selectedBundle,`code`,{push:!0})),Ei(t),A.bundleSourceFindingIdx=null,A.bundleDetailsTab===`code`&&(A.bundleCodeSearchMode=`files`,A.bundleCodeSearchQuery=``),H(`.bundle-code-rail-body`),ye(),Di(!0)),!0}if(e.target.classList?.contains(`bundle-source-overlay`)||e.target.closest(`[data-action="bundle-source-close"]`))return A.bundleSourceFile&&(fn(A.bundleDetailsTab),E()),!0;if(e.target.closest(`[data-action="bundle-source-panel-close"]`))return A.bundleSourceFindingIdx!=null&&(A.bundleSourceFindingIdx=null,bi()),!0;let a=e.target.closest(`[data-bundle-source-finding]`);if(a){let e=parseInt(a.dataset.bundleSourceFinding,10);return Number.isFinite(e)&&(A.bundleSourceFindingIdx=A.bundleSourceFindingIdx===e?null:e,bi()),!0}return!1}function ki(e){let t=Wi(e);if(!t)return null;let n=C(t);return Gn(n,yt(n))}w.addEventListener(`click`,e=>{if(W(e,`[data-finding-history]`)){let t=Wi(e),n=t&&C(t);Et(n)&&Re(n);return}let t=W(e,`[data-code-nav-file]`);if(t){Gi(Wi(e),{integrity:t.dataset.codeNavIntegrity,file:t.dataset.codeNavFile,range:Zn(t.dataset.codeNavLine)});return}let n=W(e,`[data-code-history]`);if(n){qi(n.dataset.codeHistory===`forward`?1:-1);return}let r=W(e,`[data-code-preview]`);if(r){let e=r.dataset.codePreview,t=new Set(A.codePreviews);t.delete(e)||t.add(e),A.codePreviews=t,E();return}let i=W(e,`[data-finding-code-report]`);if(i&&j()){Vn({reportId:i.dataset.findingCodeReport,file:i.dataset.findingCodeFile,line:i.dataset.findingCodeLine});return}let a=W(e,`[data-finding-code-bundle]`);if(a){let e=a.dataset.findingCodeBundle,t=a.dataset.findingCodeFile,n=a.dataset.findingCodeLine,r=n?parseInt(n,10):null;A.bundleSourceFile=t||null,A.bundleCodeHistory=null,A.bundleSourceFindingIdx=null,(A.bundleDetailsTab===`code`||A.bundleDetailsTab===`search`)&&(A.bundleDetailsTab=`overview`);let i=()=>{Number.isFinite(r)&&Ci(r,{block:`start`,behavior:`instant`})};if(A.selectedBundle===e&&A.bundleDetails?.integrity===e){E(),yn().then(()=>(A.selectedBundle===e&&A.bundleSourceFile===t&&i(),null));return}A.selectedBundle=e,A.selectedBundleWorkspace=null,A.bundleDetails=null,E(),(async()=>(await _n(e),i()))();return}let o=e.target.closest(`[data-package-expand]`);if(o){let e=o.dataset.packageExpand;A.expandedPackages.has(e)?A.expandedPackages.delete(e):A.expandedPackages.add(e),E();return}let s=e.target.closest(`[data-package-row-issues]`);if(s){let e=s.dataset.packageRowIssues,t=s.dataset.packageRowIssuesVersion;A.selectedPackage=e,A.selectedPackageVersion=t||null,A.packageDetailsTab=`issues`,A.packageSlideTriage=null,A.packageSlideTransient=!0,E();return}let c=e.target.closest(`[data-repository-row-issues]`);if(c){let e=c.dataset.repositoryRowIssues;A.selectedRepository=e,A.repositoryDetailsTab=`issues`,A.repositorySlideTriage=null,A.repositorySlideTransient=!0,E();return}let l=e.target.closest(`[data-select-package]`);if(l){let e=l.dataset.selectPackage,t=l.dataset.selectPackageVersion??``,n=t===``?null:t;if(A.selectedPackage===e&&A.selectedPackageVersion===n)return;A.selectedPackage=e,A.selectedPackageVersion=n,A.packageDetailsTab=`overview`,A.packageSlideTriage=null,A.packageSlideTransient=!1,E();return}if(e.target.closest(`[data-deselect-package]`)){A.selectedPackage=null,A.selectedPackageVersion=null,E();return}let u=e.target.closest(`[data-package-tab]`);if(u){let e=u.dataset.packageTab;(e===`overview`||e===`issues`)&&A.packageDetailsTab!==e&&(A.packageDetailsTab=e,E());return}if(e.target.closest(`[data-action="package-slide-back"]`)){A.packageDetailsTab=`overview`,A.packageSlideTriage=null,A.packageSlideTransient&&(A.selectedPackage=null,A.selectedPackageVersion=null,A.packageSlideTransient=!1),E();return}let d=W(e,`[data-links-report][data-links-finding]`);if(d){e.preventDefault();let{linksReport:t,linksFinding:n,managedReport:r}=d.dataset;t&&n&&(async()=>{let e=await Ot(n,t,r);e.ok||alert(e.reason)})().catch(e=>console.warn(`links: reveal in report failed:`,e));return}let f=e.target.closest(`[data-package-report]`);if(f){let e=f.dataset.packageReport;e&&on(e);return}let p=e.target.closest(`[data-select-repository]`);if(p){let e=p.dataset.selectRepository;if(A.selectedRepository===e)return;A.selectedRepository=e,A.repositoryDetailsTab=`overview`,A.repositorySlideTriage=null,A.repositorySlideTransient=!1,E();return}if(e.target.closest(`[data-deselect-repository]`)){A.selectedRepository=null,E();return}let m=e.target.closest(`[data-repository-tab]`);if(m){let e=m.dataset.repositoryTab;(e===`overview`||e===`issues`)&&A.repositoryDetailsTab!==e&&(A.repositoryDetailsTab=e,E());return}if(e.target.closest(`[data-action="repository-slide-back"]`)){A.repositoryDetailsTab=`overview`,A.repositorySlideTriage=null,A.repositorySlideTransient&&(A.selectedRepository=null,A.repositorySlideTransient=!1),E();return}let h=e.target.closest(`[data-bundle-tab]`);if(h){let e=h.dataset.bundleTab;if(pr.has(e)||e===`review`&&A.bundleDetails?.npm||gr.has(e)&&A.bundleDetails?.repository){if(e===A.bundleDetailsTab){A.selectedBundle&&D(A.selectedBundle,e);return}A.bundleDetailsTab===`graph`&&e!==`graph`&&(I(),document.body.classList.remove(`report-fullscreen`)),tt(A,e,e=>me(e)?.oldVersion??null),fn(e),A.selectedBundle&&D(A.selectedBundle,e,{push:!0}),E(),e===`code`&&yn().then(()=>(A.bundleDetailsTab===`code`&&ye(),null))}return}if(e.target.closest(`[data-bundle-retry-sources]`)){A.bundleDetails&&delete A.bundleDetails.sourceError,E();return}let g=e.target.closest(`[data-bundle-download]`);if(g){let e=g.dataset.bundleDownload,t=(A.bundles??[]).find(t=>t.integrity===e);if(!t)return;(async()=>{let{confirmed:n}=await Rn({name:t.name,encrypted:x()});if(n)try{let n=await ee(e);St(new Blob([n],{type:`application/octet-stream`}),t.name)}catch(e){alert(`Failed to download bundle: ${e.message}`)}})();return}let ne=e.target.closest(`[data-bundle-export-sbom]`);if(ne){let e=ne.dataset.bundleExportSbom,t=A.bundleDetails,n=(A.bundles??[]).find(e=>e.integrity===A.selectedBundle);if(!n||!t||t.integrity!==n.integrity)return;try{let r=e===`cyclonedx`,i=r?En(t,n):kn(t,n),a=`${Sn(n.name)}.${r?`cdx`:`spdx`}.json`;St(new Blob([i],{type:`application/json`}),a)}catch(t){alert(`Failed to export ${e===`cyclonedx`?`CycloneDX`:`SPDX`}: ${t.message}`)}return}if(W(e,`[data-bundle-search-context]`)){A.bundleSearchContext=!A.bundleSearchContext,H(`.bundle-search-results`);return}if(e.target.closest(`[data-advisories-consent]`)){ue(),E();return}if(e.target.closest(`[data-advisories-retry]`)){de(A.bundleDetails,E).catch(()=>{}),E();return}let re=e.target.closest(`[data-bundle-issue-report]`);if(re){let e=re.dataset.bundleIssueReport;e&&on(e);return}if(Oi(e))return;let ie=e.target.closest(`[data-bundle-code-issue-step]`);if(ie){let e=ie.closest(`[data-bundle-code-issue-order]`),t=null;try{t=JSON.parse(e?.dataset.bundleCodeIssueOrder??`null`)}catch{}if(Array.isArray(t)&&t.length>0){let e=ie.dataset.bundleCodeIssueStep===`-1`?-1:1,n=t.findIndex(e=>e.idx===A.bundleSourceFindingIdx),r=n===-1?e>0?t[0]:t.at(-1):t[(n+e+t.length)%t.length];A.bundleSourceFindingIdx=r.idx,bi(),r.line>0&&Ci(r.line,{block:`center`,behavior:`smooth`})}return}let _=W(e,`[data-bundle-view-source]`);if(_){let e=_.dataset.bundleViewSource;if(!e)return;let t=_.dataset.bundleViewFindingIdx,n=t===void 0?null:parseInt(t,10),r=_.dataset.bundleViewLine,i=r?parseInt(r,10):null;Number.isFinite(i)&&(A.bundleSourcePretty=!1,A.bundleSourceLockfile=!1);let a=A.bundleSourceFile!==e;if(Ei(e),Number.isFinite(n)?A.bundleSourceFindingIdx=n:a&&(A.bundleSourceFindingIdx=null),A.bundleSourceTargetLine=Number.isFinite(i)?{bundle:A.bundleDetails?.integrity??null,path:e,line:i}:null,_.closest(`.bundle-code-rail`)?H(`.bundle-code-rail-body`):_.closest(`.bundle-search-results`)?H(`.bundle-search-results`):_.closest(`.bundles-slide-body`)?H(`.bundles-slide-body`):E(),Number.isFinite(i)){let t=_.dataset.bundleViewScrollBlock||`center`;yn().then(()=>(A.bundleSourceFile===e&&Ci(i,{block:t,behavior:`smooth`}),null))}return}let ae=e.target.closest(`[data-action="workspace-reports"], [data-action="workspace-bundles"], [data-action="workspace-repositories"], [data-action="workspace-dependencies"]`);if(ae){let e=ae.dataset.action.slice(10);A.currentView!==`workspace-${e}`&&cn(A.currentManagedTeam??A.currentWorkspace,e);return}if(e.target.closest(`[data-action="workspace-findings"]`)){if(A.currentView===`findings`)return;if(A.currentView===`files`){if(pi(`findings`))return;A.currentView=`findings`,A.filesSelectedFile=null,document.body.classList.remove(`report-fullscreen`),E()}else j()?dn(A.managedTeams.find(e=>e.id===A.currentManagedTeam)):pn(A.currentWorkspace);return}let oe=e.target.closest(`[data-workspace-report]`);if(oe){j()?dn(A.managedTeams.find(e=>e.id===A.currentManagedTeam),oe.dataset.workspaceReport):on(oe.dataset.workspaceReport,void 0,{workspaceId:A.currentWorkspace});return}let se=e.target.closest(`[data-workspace-repository]`);if(se){let{workspaceRepository:e,repositoryName:t,repositoryPath:n}=se.dataset;document.dispatchEvent(new CustomEvent(`managed-repository-code-open`,{detail:{repoId:Number(e),repo:t,path:n}}));return}let ce=e.target.closest(`[data-workspace-bundle]`);if(ce){if(j())xt.navigate(vr({view:`bundles`,teamId:A.currentManagedTeam,bundleId:ce.dataset.workspaceBundle,bundleTab:`overview`},A.managedTeams));else{let e=ce.dataset.workspaceBundle;ln(e,`overview`,{workspaceId:A.currentWorkspace}),D(e,`overview`),E(),T(),_n(e)}return}if(e.target.closest(`[data-action="toggle-files"]`)){if(pi(A.currentView===`files`?`findings`:`files`))return;A.currentView===`files`?A.currentView=`findings`:(A.viewMode===`graph`&&I(),A.currentView=`files`),document.body.classList.remove(`report-fullscreen`),E();return}let le=W(e,`[data-g2-pkg]`);if(le){let e=le.dataset.g2Pkg;F.solo=F.solo===e?null:e,F.solo&&(F.selected=null),vi(),yi(),F.graphState?.requestDraw?.();return}let fe=W(e,`[data-g2-select]`);if(fe){F.selected=fe.dataset.g2Select,vi(),F.graphState?.requestDraw?.();return}let pe=W(e,`[data-g2-top-pkgs]`);if(pe){F.topPkgsTab=pe.dataset.g2TopPkgs,yi();return}let he=W(e,`[data-g2-jump-findings]`);if(he){if(A.currentView===`bundles`){A.bundleDetailsTab===`graph`&&I(),fn(`issues`),A.selectedBundle&&D(A.selectedBundle,`issues`,{push:!0}),E();return}if(ve(),A.filterConfMin=0,A.filterInclude=he.dataset.g2JumpFindings,A.currentView=`findings`,A.viewMode===`graph`&&(A.viewMode=`table`),I(),pi(`findings`))return;E();return}let v=W(e,`[data-g2-jump-file]`);if(v){let e=v.dataset.g2JumpFile;I();let t=()=>requestAnimationFrame(()=>{let t=document.querySelector(`#${or(e)}`);t&&t.scrollIntoView({behavior:`smooth`,block:`start`})}),n=pi(`files`);if(n){n.then(e=>e?t():void 0);return}A.currentView=`files`,E(),t();return}if(W(e,`#g2-path-filter-clear`)){F.pathFilter=``;let e=document.querySelector(`graph-layout`)?.shadowRoot?.querySelector(`#g2-path-filter`);e&&(e.value=``),F.graphState?.requestDraw?.();return}if(W(e,`#g2-fullscreen`)){document.body.classList.toggle(`report-fullscreen`);return}if(W(e,`[data-g2-show-all]`)){F.showAll=!F.showAll,F.layoutCache=null,F.selected=null,I(),E();return}if(W(e,`[data-g2-packages-view]`)){F.bundleLayout===`flow`?F.flowPackagesView=!F.flowPackagesView:F.bundleLayout===`dependencies`?(F.dependencyPackagesView=!F.dependencyPackagesView,F.solo=null):F.packagesView=!F.packagesView,F.layoutCache=null,F.selected=null,F.focusedPkg=null,I(),E();return}if(W(e,`[data-g2-bundle-issues]`)){F.bundleIssues=!F.bundleIssues,I({keepViewport:!0}),E();return}let ge=W(e,`[data-g2-layout]`);if(ge){let e=ge.dataset.g2Layout;if(![`graph`,`layers`,`matrix`,`dependencies`,`flow`].includes(e)||F.bundleLayout===e&&!F.focusedPkg)return;F.bundleLayout=e,e===`dependencies`&&(F.dependencyPackagesView=!1),F.layoutCache=null,F.selected=null,F.solo=null,F.focusedPkg=null,I(),E();return}let _e=W(e,`.graph2-triage-selector [data-triage-show]`);if(_e){let e=_e.dataset.triageShow;A.shownTriage=A.shownTriage===e?null:e,F.layoutCache=null,F.selected=null,I(),E();return}let be=W(e,`[data-g2-focus-pkg]`);if(be){F.focusedPkg=be.dataset.g2FocusPkg,F.layoutCache=null,I(),E();return}if(W(e,`#g2-back-to-full`)){F.focusedPkg=null,F.layoutCache=null,(F.packagesView||F.bundleLayout===`layers`)&&(F.selected=null),I(),E();return}let xe=W(e,`.tab`);if(xe&&W(e,`.tabs`)){let t=W(e,`[data-gid]`).dataset.gid,n=xe.dataset.tid;A.activeTabByGroup.set(t,n),U();return}let Se=W(e,`[data-triage-action]`);if(Se){let e=Se.closest(`.triage-menu`),t=e?.dataset.gid;if(!t)return;let n=O(t);if(!n)return;let r=Se.dataset.triageAction;if(![`inprogress`,`fixed`,`invalid`,`deleted`,`ignored`,`restore`].includes(r))return;let{targets:i,clearing:a}=Rt(n,r);if(i.length===0)return;Ni(i,a?`untriaged`:r);try{e.hidePopover()}catch{}y(),U();return}if(W(e,`.mark-comment`)){let t=W(e,`[data-gid]`).dataset.gid,n=O(t);if(!n)return;let r=C(n);if(!Qe(r))return;if(j()){jn(r,U).catch(()=>ct(`Could not open comments. Please retry.`));return}let i=nr(r),a=at(r)?.comment??``;Ln({initial:a,finding:r}).then(e=>(e===null||!b(r)||(N(A.triage,i,{comment:e||void 0}),y(),U()),null)).catch(()=>{});return}let Ce=W(e,`.mark-copy`);if(Ce){let t=ki(e);if(t===null)return;Ti(Ce,t);return}let we=W(e,`.mark-link`);if(we){let t=W(e,`[data-gid]`),n=t?O(t.dataset.gid):null;if(!n)return;let r=te(C(n));if(!r)return;Ti(we,r);return}let Te=W(e,`[data-copy-report]`);if(Te){Ti(Te,Te.dataset.copyReport);return}let Ee=W(e,`[data-copy-path]`);if(Ee){Ti(Ee,Ee.dataset.copyPath);return}let De=W(e,`.mark-issue`);if(De&&j()&&A.managedSession&&!A.managedSession.publicShare&&A.currentManagedTeam){let t=W(e,`[data-gid]`),n=t?O(t.dataset.gid):null,r=n?C(n):null;if(r?._managedReportId&&r.id){e.preventDefault();let t=new URL(De.dataset.issueForm);Pe({teamId:A.currentManagedTeam,session:{...A.managedSession},context:{reportId:r._managedReportId,findingId:r.id,repository:t.pathname.split(`/`).slice(1,3).join(`/`)},formUrl:t.href,title:t.searchParams.get(`title`)??``,body:t.searchParams.get(`body`)??``,finding:r,draftOptions:{sourceUrl:Xn(r,ht(r)),evidence:$n(r),showRevalidation:cr(),findingLink:te(r)},renderBody:Be,render:E}).catch(()=>ct(`Could not open issue creation. Please retry.`));return}}let Oe=W(e,`.mark-claude`);if(Oe){let t=ki(e);if(t===null)return;let n=`claude://code/new?q=${encodeURIComponent(`Confirm and fix:
5
+ Use this only if you have lost access to your passkey and have no other way to unlock.`)&&confirm(`Really wipe everything? This cannot be undone.`)){try{await Tt()}catch(e){alert(`Wipe failed: ${e?.message??e}. Try again or clear localStorage manually via DevTools.`);return}location.reload()}}),document.body.append(V),V}function Yr(){return j()||!lt()?!1:S()&&!ot()}async function Xr(){if(await Jt(),Yr()){let e=Jr();e.hidden=!1;let t=e.querySelector(`button`);t&&t.focus()}else if(V&&(V.hidden=!0,Kr))try{Kr.abort()}catch{}}mt(Xr),document.addEventListener(`managed-client-mode-change`,Xr),Xr();var Zr=2;function Qr(e,t){A.focusSplit=t,e.closest(`.focus-main`)?.style.setProperty(`--focus-split`,String(t)),e.setAttribute(`aria-valuenow`,String(Math.round(t)))}function $r(){try{localStorage.setItem(Yt,String(A.focusSplit))}catch{}}function ei(e,t){Qr(e,ln(t)),$r()}function ti(e,t){ei(e,A.focusSplit+t)}function ni(e){ei(e,sn)}function ri(e,t){let n=e.closest(`.focus-main`);if(!n)return;t.preventDefault(),e.classList.add(`dragging`);try{e.setPointerCapture(t.pointerId)}catch{}let r=t=>{let r=n.getBoundingClientRect();r.width!==0&&Qr(e,ln((t.clientX-r.left)/r.width*100))},i=()=>{e.removeEventListener(`pointermove`,r),e.removeEventListener(`pointerup`,i),e.removeEventListener(`pointercancel`,i),e.classList.remove(`dragging`),$r()};e.addEventListener(`pointermove`,r),e.addEventListener(`pointerup`,i),e.addEventListener(`pointercancel`,i)}function ii(e,t){return Be(Ie(e)).map(e=>t?[C(e)]:ut(e))}var ai={annotation(e){let t=at(e),n=ct(e);return!t&&!n?null:{triage:t?.triage,color:t?.color,comment:t?.comment,fix:t?.fix,flagged:t?.flagged===!0,ignored:n}},location:e=>Xn(e,ht(e)),evidence:(e,t,n)=>Qn(e,t,ht(t),n),commit:e=>er(e.repo?.github,e.commitHash),report:e=>e._reportName??null};function oi(e,t){let n=new Set(e.map(e=>e.repo??null)),r=n.size===1?[...n][0]:null;if(r)return r;let i=new Set;for(let e of t)for(let t of e)t.repo?.github&&!qn(t.file)&&i.add(t.repo.github);return i.size===1?[...i][0]:i.size===0&&!A.currentWorkspace&&A.repoUrl?A.repoUrl:null}function si(e){return e.replace(/\.(?:json|md|codex)$/iu,``)}function ci(){return A.currentWorkspace?v().find(e=>e.id===A.currentWorkspace)??null:null}function li(e,t){if(t)return t.name;let n=e.map(e=>e.fileName);return n.length===1?si(n[0]):Jn(n).replace(/[-_. ]+$/u,``)||`${n.length} reports`}function ui({oneSamplePerGroup:e=!1}={}){let t=A.reports,a=Oe(),s=r(),c=ii(s,e),l=ci(),u=t.flatMap(e=>e.groups??[]),d=u.some(e=>e.some(xr)),f=u.some(e=>e.some(lr));return br({title:li(t,l),workspace:l?.name??null,reports:t.map(e=>({name:e.fileName,source:e.source})),repo:oi(t,c),generatedAt:new Date,view:{bucket:i(),severityMode:d?A.severityMode:null,revalidation:f?A.showRevalidation:null,revalidationDetail:f&&A.showRevalidation!==!1?o():null},filters:n(a),counts:{included:c.length,total:s.length},groups:c},ai)}function di(){let e=ci(),t=A.reports.map(e=>e.fileName),n=``;return e?n=e.name:t.length===1?n=si(t[0]):t.length>1&&(n=si(Jn(t))),n=n.replaceAll(/[\\/:*?"<>|\p{Cc}]/gu,`-`).trim(),`${n||`deepview-report`}.md`}function fi(e){if(A.reports.length===0)return;let t=new Blob([ui(e)],{type:`text/markdown;charset=utf-8`});St(t,di())}function pi(e){return!j()||!xt.active||!A.currentManagedTeam?null:xt.navigate(vr({view:e,teamId:A.currentManagedTeam,reportId:A.currentManagedReport},A.managedTeams))}var mi=!1;se(()=>{if(mi)return;mi=!0;let e=2;function t(){--e===0&&gi()}requestAnimationFrame(t),setTimeout(t,350)});var hi=!1;function gi(){mi=!1;let e=ce();if(e&&(A.currentView===`findings`||A.currentView===`files`)){hi||(hi=!0,e.catch(()=>{}).finally(()=>{hi=!1,gi()}));return}A.findingIndexTick++,A.currentView===`bundles`&&A.selectedBundle||A.currentView===`packages`||A.currentView===`repositories`||A.currentView===`links`?E():(A.currentView===`findings`||A.currentView===`files`)&&(T().catch(()=>{}),E())}var _i=!1;le(()=>{A.currentView!==`findings`&&A.currentView!==`files`&&!b()||_i||(_i=!0,queueMicrotask(()=>{_i=!1,(A.currentView===`findings`||A.currentView===`files`||b())&&(A.bundleHashTick++,E())}))}),De(()=>{A.linksTick++,E()});function vi(){A.currentView===`bundles`&&A.bundleDetailsTab===`graph`?_e():zt()}function yi(){A.currentView===`bundles`&&A.bundleDetailsTab===`graph`?ye():Wt()}function bi(){let e=document.querySelector(`.bundle-source-code-wrap`),t=e?.scrollTop??0,n=e?.scrollLeft??0;E();let r=document.querySelector(`.bundle-source-code-wrap`);r&&(r.scrollTop=t,r.scrollLeft=n)}function H(e){let t=document.querySelector(e)?.scrollTop??0;E();let n=document.querySelector(e);n&&(n.scrollTop=t)}function U(){A.viewMode===`table`?H(`.findings-table-list`):E()}var xi=0;function Si(){xi||=requestAnimationFrame(()=>{xi=0,E()})}function W(e,t){for(let n of e.composedPath())if(n?.matches?.(t))return n;return null}function Ci(e,t){queueMicrotask(()=>{let n=document.querySelector(`.bundle-source-lineno-row[data-line="${e}"]`);n&&n.scrollIntoView(t)})}function wi(e){e.classList.add(`copied`),setTimeout(()=>e.classList.remove(`copied`),1e3)}function Ti(e,t){try{navigator.clipboard.writeText(t).then(()=>(wi(e),null)).catch(()=>{})}catch{}}function Ei(e){let t=ee(A.bundleCodeHistory,A.bundleDetails?.integrity??null,A.bundleSourceFile);A.bundleCodeHistory=re(t,e),A.bundleSourceFile=e}function Di(e=!1){queueMicrotask(()=>{let t=document.querySelector(`.bundle-source-code-wrap`);t&&(t.scrollTop=0,t.scrollLeft=0),e&&t?.querySelector(`.bundle-source-code`)?.focus({preventScroll:!0})})}window.addEventListener(`hashchange`,()=>{if(!j()||In()||A.currentView!==`bundles`||A.bundleDetailsTab!==`code`)return;let e=_r(new URL(location.href));if(e?.bundleTab!==`code`||e.file==null||e.file!==$e(A)?.file)return;let t=A.bundleSourceFile,n=e.endLine??e.line;A.bundleSourceTargetLine=e.line&&n<=Wn(Un(A.bundleDetails).get(t)??``)?{bundle:A.bundleDetails?.integrity??null,path:t,line:e.line,...e.endLine?{end:e.endLine}:{}}:null,E(),A.bundleSourceTargetLine&&Ci(e.line,{block:`center`})});function Oi(e){let t=e.target.closest(`[data-bundle-source-line]`);if(t){let n=Number(t.dataset.bundleSourceLine),r=A.bundleDetails?.integrity??null,i=A.bundleSourceFile,a=A.bundleSourceTargetLine,o=a?.bundle===r&&a.path===i?a:null;if(e.shiftKey&&o){let e=o.anchor??o.line;A.bundleSourceTargetLine={bundle:r,path:i,line:Math.min(e,n),end:Math.max(e,n),anchor:e}}else o?.line===n&&!(o.end>n)?A.bundleSourceTargetLine=null:A.bundleSourceTargetLine={bundle:r,path:i,line:n};return bi(),!0}let n=e.target.closest(`[data-bundle-source-wrap]`);if(n){let e=Ht(n);A.bundleSourceWrap=!A.bundleSourceWrap;try{localStorage.setItem(rn,String(A.bundleSourceWrap))}catch{}return E(),queueMicrotask(e),!0}if(e.target.closest(`[data-bundle-source-pretty]`))return m(),E(),Di(),!0;if(e.target.closest(`[data-bundle-source-lockfile]`))return oe(),E(),!0;let r=e.target.closest(`[data-bundle-code-history]`);if(r){let e=ee(A.bundleCodeHistory,A.bundleDetails?.integrity??null,A.bundleSourceFile),t=ae(e,r.dataset.bundleCodeHistory===`back`?-1:1),n=t.files[t.at];return t.at===e.at||!Un(A.bundleDetails).has(n)||(A.bundleCodeHistory=t,A.bundleSourceFile=n,A.bundleSourceFindingIdx=null,A.bundleCodeSearchMode=`files`,A.bundleCodeSearchQuery=``,H(`.bundle-code-rail-body`),Se(),Di()),!0}let i=e.target.closest(`[data-bundle-source-link]`);if(i){let t=i.dataset.bundleSourceLink,n=i.closest(`.focus-pane-code`);if(n){let r=Wi(e),i=g(r,n.dataset.focusCodeIntegrity,n.dataset.focusCodeFile,t);return i&&(Gi(r,i),queueMicrotask(()=>n.querySelector(`.focus-code-source`)?.focus({preventScroll:!0}))),!0}return Un(A.bundleDetails).has(t)&&(A.currentView===`bundles`&&A.bundleDetailsTab===`search`&&(pn(`code`,{preserveSource:!0}),A.selectedBundle&&D(A.selectedBundle,`code`,{push:!0})),Ei(t),A.bundleSourceFindingIdx=null,A.bundleDetailsTab===`code`&&(A.bundleCodeSearchMode=`files`,A.bundleCodeSearchQuery=``),H(`.bundle-code-rail-body`),Se(),Di(!0)),!0}if(e.target.classList?.contains(`bundle-source-overlay`)||e.target.closest(`[data-action="bundle-source-close"]`))return A.bundleSourceFile&&(pn(A.bundleDetailsTab),E()),!0;if(e.target.closest(`[data-action="bundle-source-panel-close"]`))return A.bundleSourceFindingIdx!=null&&(A.bundleSourceFindingIdx=null,bi()),!0;let a=e.target.closest(`[data-bundle-source-finding]`);if(a){let e=parseInt(a.dataset.bundleSourceFinding,10);return Number.isFinite(e)&&(A.bundleSourceFindingIdx=A.bundleSourceFindingIdx===e?null:e,bi()),!0}return!1}function ki(e){let t=Wi(e);if(!t)return null;let n=C(t);return Gn(n,bt(n))}w.addEventListener(`click`,e=>{if(W(e,`[data-finding-history]`)){let t=Wi(e),n=t&&C(t);Et(n)&&ze(n);return}let t=W(e,`[data-code-nav-file]`);if(t){Gi(Wi(e),{integrity:t.dataset.codeNavIntegrity,file:t.dataset.codeNavFile,range:Zn(t.dataset.codeNavLine)});return}let n=W(e,`[data-code-history]`);if(n){qi(n.dataset.codeHistory===`forward`?1:-1);return}let r=W(e,`[data-code-preview]`);if(r){let e=r.dataset.codePreview,t=new Set(A.codePreviews);t.delete(e)||t.add(e),A.codePreviews=t,E();return}let i=W(e,`[data-finding-code-report]`);if(i&&j()){Vn({reportId:i.dataset.findingCodeReport,file:i.dataset.findingCodeFile,line:i.dataset.findingCodeLine});return}let a=W(e,`[data-finding-code-bundle]`);if(a){let e=a.dataset.findingCodeBundle,t=a.dataset.findingCodeFile,n=a.dataset.findingCodeLine,r=n?parseInt(n,10):null;A.bundleSourceFile=t||null,A.bundleCodeHistory=null,A.bundleSourceFindingIdx=null,(A.bundleDetailsTab===`code`||A.bundleDetailsTab===`search`)&&(A.bundleDetailsTab=`overview`);let i=()=>{Number.isFinite(r)&&Ci(r,{block:`start`,behavior:`instant`})};if(A.selectedBundle===e&&A.bundleDetails?.integrity===e){E(),Sn().then(()=>(A.selectedBundle===e&&A.bundleSourceFile===t&&i(),null));return}A.selectedBundle=e,A.selectedBundleWorkspace=null,A.bundleDetails=null,E(),(async()=>(await yn(e),i()))();return}let o=e.target.closest(`[data-package-expand]`);if(o){let e=o.dataset.packageExpand;A.expandedPackages.has(e)?A.expandedPackages.delete(e):A.expandedPackages.add(e),E();return}let s=e.target.closest(`[data-package-row-issues]`);if(s){let e=s.dataset.packageRowIssues,t=s.dataset.packageRowIssuesVersion;A.selectedPackage=e,A.selectedPackageVersion=t||null,A.packageDetailsTab=`issues`,A.packageSlideTriage=null,A.packageSlideTransient=!0,E();return}let c=e.target.closest(`[data-repository-row-issues]`);if(c){let e=c.dataset.repositoryRowIssues;A.selectedRepository=e,A.repositoryDetailsTab=`issues`,A.repositorySlideTriage=null,A.repositorySlideTransient=!0,E();return}let l=e.target.closest(`[data-select-package]`);if(l){let e=l.dataset.selectPackage,t=l.dataset.selectPackageVersion??``,n=t===``?null:t;if(A.selectedPackage===e&&A.selectedPackageVersion===n)return;A.selectedPackage=e,A.selectedPackageVersion=n,A.packageDetailsTab=`overview`,A.packageSlideTriage=null,A.packageSlideTransient=!1,E();return}if(e.target.closest(`[data-deselect-package]`)){A.selectedPackage=null,A.selectedPackageVersion=null,E();return}let d=e.target.closest(`[data-package-tab]`);if(d){let e=d.dataset.packageTab;(e===`overview`||e===`issues`)&&A.packageDetailsTab!==e&&(A.packageDetailsTab=e,E());return}if(e.target.closest(`[data-action="package-slide-back"]`)){A.packageDetailsTab=`overview`,A.packageSlideTriage=null,A.packageSlideTransient&&(A.selectedPackage=null,A.selectedPackageVersion=null,A.packageSlideTransient=!1),E();return}let f=W(e,`[data-links-report][data-links-finding]`);if(f){e.preventDefault();let{linksReport:t,linksFinding:n,managedReport:r}=f.dataset;t&&n&&(async()=>{let e=await Nt(n,t,r);e.ok||alert(e.reason)})().catch(e=>console.warn(`links: reveal in report failed:`,e));return}let p=e.target.closest(`[data-package-report]`);if(p){let e=p.dataset.packageReport;e&&cn(e);return}let m=e.target.closest(`[data-select-repository]`);if(m){let e=m.dataset.selectRepository;if(A.selectedRepository===e)return;A.selectedRepository=e,A.repositoryDetailsTab=`overview`,A.repositorySlideTriage=null,A.repositorySlideTransient=!1,E();return}if(e.target.closest(`[data-deselect-repository]`)){A.selectedRepository=null,E();return}let h=e.target.closest(`[data-repository-tab]`);if(h){let e=h.dataset.repositoryTab;(e===`overview`||e===`issues`)&&A.repositoryDetailsTab!==e&&(A.repositoryDetailsTab=e,E());return}if(e.target.closest(`[data-action="repository-slide-back"]`)){A.repositoryDetailsTab=`overview`,A.repositorySlideTriage=null,A.repositorySlideTransient&&(A.selectedRepository=null,A.repositorySlideTransient=!1),E();return}let g=e.target.closest(`[data-bundle-tab]`);if(g){let e=g.dataset.bundleTab;if(pr.has(e)||e===`review`&&A.bundleDetails?.npm||gr.has(e)&&A.bundleDetails?.repository){if(e===A.bundleDetailsTab){A.selectedBundle&&D(A.selectedBundle,e);return}A.bundleDetailsTab===`graph`&&e!==`graph`&&(I(),document.body.classList.remove(`report-fullscreen`)),tt(A,e,e=>me(e)?.oldVersion??null),pn(e),A.selectedBundle&&D(A.selectedBundle,e,{push:!0}),E(),e===`code`&&Sn().then(()=>(A.bundleDetailsTab===`code`&&Se(),null))}return}if(e.target.closest(`[data-bundle-retry-sources]`)){A.bundleDetails&&delete A.bundleDetails.sourceError,E();return}let ee=e.target.closest(`[data-bundle-download]`);if(ee){let e=ee.dataset.bundleDownload,t=(A.bundles??[]).find(t=>t.integrity===e);if(!t)return;(async()=>{let{confirmed:n}=await Rn({name:t.name,encrypted:S()});if(n)try{let n=await te(e);St(new Blob([n],{type:`application/octet-stream`}),t.name)}catch(e){alert(`Failed to download bundle: ${e.message}`)}})();return}let re=e.target.closest(`[data-bundle-export-sbom]`);if(re){let e=re.dataset.bundleExportSbom,t=A.bundleDetails,n=(A.bundles??[]).find(e=>e.integrity===A.selectedBundle);if(!n||!t||t.integrity!==n.integrity)return;try{let r=e===`cyclonedx`,i=r?kn(t,n):u(t,n),a=`${En(n.name)}.${r?`cdx`:`spdx`}.json`;St(new Blob([i],{type:`application/json`}),a)}catch(t){alert(`Failed to export ${e===`cyclonedx`?`CycloneDX`:`SPDX`}: ${t.message}`)}return}if(W(e,`[data-bundle-search-context]`)){A.bundleSearchContext=!A.bundleSearchContext,H(`.bundle-search-results`);return}if(e.target.closest(`[data-advisories-consent]`)){de(),E();return}if(e.target.closest(`[data-advisories-retry]`)){he(A.bundleDetails,E).catch(()=>{}),E();return}let ie=e.target.closest(`[data-bundle-issue-report]`);if(ie){let e=ie.dataset.bundleIssueReport;e&&cn(e);return}if(Oi(e))return;let ae=e.target.closest(`[data-bundle-code-issue-step]`);if(ae){let e=ae.closest(`[data-bundle-code-issue-order]`),t=null;try{t=JSON.parse(e?.dataset.bundleCodeIssueOrder??`null`)}catch{}if(Array.isArray(t)&&t.length>0){let e=ae.dataset.bundleCodeIssueStep===`-1`?-1:1,n=t.findIndex(e=>e.idx===A.bundleSourceFindingIdx),r=n===-1?e>0?t[0]:t.at(-1):t[(n+e+t.length)%t.length];A.bundleSourceFindingIdx=r.idx,bi(),r.line>0&&Ci(r.line,{block:`center`,behavior:`smooth`})}return}let _=W(e,`[data-bundle-view-source]`);if(_){let e=_.dataset.bundleViewSource;if(!e)return;let t=_.dataset.bundleViewFindingIdx,n=t===void 0?null:parseInt(t,10),r=_.dataset.bundleViewLine,i=r?parseInt(r,10):null;Number.isFinite(i)&&(A.bundleSourcePretty=!1,A.bundleSourceLockfile=!1);let a=A.bundleSourceFile!==e;if(Ei(e),Number.isFinite(n)?A.bundleSourceFindingIdx=n:a&&(A.bundleSourceFindingIdx=null),A.bundleSourceTargetLine=Number.isFinite(i)?{bundle:A.bundleDetails?.integrity??null,path:e,line:i}:null,_.closest(`.bundle-code-rail`)?H(`.bundle-code-rail-body`):_.closest(`.bundle-search-results`)?H(`.bundle-search-results`):_.closest(`.bundles-slide-body`)?H(`.bundles-slide-body`):E(),Number.isFinite(i)){let t=_.dataset.bundleViewScrollBlock||`center`;Sn().then(()=>(A.bundleSourceFile===e&&Ci(i,{block:t,behavior:`smooth`}),null))}return}let oe=e.target.closest(`[data-action="workspace-reports"], [data-action="workspace-bundles"], [data-action="workspace-repositories"], [data-action="workspace-dependencies"]`);if(oe){let e=oe.dataset.action.slice(10);A.currentView!==`workspace-${e}`&&un(A.currentManagedTeam??A.currentWorkspace,e);return}if(e.target.closest(`[data-action="workspace-findings"]`)){if(A.currentView===`findings`)return;if(A.currentView===`files`){if(pi(`findings`))return;A.currentView=`findings`,A.filesSelectedFile=null,document.body.classList.remove(`report-fullscreen`),E()}else j()?fn(A.managedTeams.find(e=>e.id===A.currentManagedTeam)):gn(A.currentWorkspace);return}let se=e.target.closest(`[data-workspace-report]`);if(se){j()?fn(A.managedTeams.find(e=>e.id===A.currentManagedTeam),se.dataset.workspaceReport):cn(se.dataset.workspaceReport,void 0,{workspaceId:A.currentWorkspace});return}let ce=e.target.closest(`[data-workspace-repository]`);if(ce){let{workspaceRepository:e,repositoryName:t,repositoryPath:n}=ce.dataset;document.dispatchEvent(new CustomEvent(`managed-repository-code-open`,{detail:{repoId:Number(e),repo:t,path:n}}));return}let le=e.target.closest(`[data-workspace-bundle]`);if(le){if(j())xt.navigate(vr({view:`bundles`,teamId:A.currentManagedTeam,bundleId:le.dataset.workspaceBundle,bundleTab:`overview`},A.managedTeams));else{let e=le.dataset.workspaceBundle;dn(e,`overview`,{workspaceId:A.currentWorkspace}),D(e,`overview`),E(),T(),yn(e)}return}if(e.target.closest(`[data-action="toggle-files"]`)){if(pi(A.currentView===`files`?`findings`:`files`))return;A.currentView===`files`?A.currentView=`findings`:(A.viewMode===`graph`&&I(),A.currentView=`files`),document.body.classList.remove(`report-fullscreen`),E();return}let ue=W(e,`[data-g2-pkg]`);if(ue){let e=ue.dataset.g2Pkg;F.solo=F.solo===e?null:e,F.solo&&(F.selected=null),vi(),yi(),F.graphState?.requestDraw?.();return}let fe=W(e,`[data-g2-select]`);if(fe){F.selected=fe.dataset.g2Select,vi(),F.graphState?.requestDraw?.();return}let pe=W(e,`[data-g2-top-pkgs]`);if(pe){F.topPkgsTab=pe.dataset.g2TopPkgs,yi();return}let v=W(e,`[data-g2-jump-findings]`);if(v){if(A.currentView===`bundles`){A.bundleDetailsTab===`graph`&&I(),pn(`issues`),A.selectedBundle&&D(A.selectedBundle,`issues`,{push:!0}),E();return}if(ve(),A.filterConfMin=0,A.filterInclude=v.dataset.g2JumpFindings,A.currentView=`findings`,A.viewMode===`graph`&&(A.viewMode=`table`),I(),pi(`findings`))return;E();return}let ge=W(e,`[data-g2-jump-file]`);if(ge){let e=ge.dataset.g2JumpFile;I();let t=()=>requestAnimationFrame(()=>{let t=document.querySelector(`#${or(e)}`);t&&t.scrollIntoView({behavior:`smooth`,block:`start`})}),n=pi(`files`);if(n){n.then(e=>e?t():void 0);return}A.currentView=`files`,E(),t();return}if(W(e,`#g2-path-filter-clear`)){F.pathFilter=``;let e=document.querySelector(`graph-layout`)?.shadowRoot?.querySelector(`#g2-path-filter`);e&&(e.value=``),F.graphState?.requestDraw?.();return}if(W(e,`#g2-fullscreen`)){document.body.classList.toggle(`report-fullscreen`);return}if(W(e,`[data-g2-show-all]`)){F.showAll=!F.showAll,F.layoutCache=null,F.selected=null,I(),E();return}if(W(e,`[data-g2-packages-view]`)){F.bundleLayout===`flow`?F.flowPackagesView=!F.flowPackagesView:F.bundleLayout===`dependencies`?(F.dependencyPackagesView=!F.dependencyPackagesView,F.solo=null):F.packagesView=!F.packagesView,F.layoutCache=null,F.selected=null,F.focusedPkg=null,I(),E();return}if(W(e,`[data-g2-bundle-issues]`)){F.bundleIssues=!F.bundleIssues,I({keepViewport:!0}),E();return}let _e=W(e,`[data-g2-layout]`);if(_e){let e=_e.dataset.g2Layout;if(![`graph`,`layers`,`matrix`,`dependencies`,`flow`].includes(e)||F.bundleLayout===e&&!F.focusedPkg)return;F.bundleLayout=e,e===`dependencies`&&(F.dependencyPackagesView=!1),F.layoutCache=null,F.selected=null,F.solo=null,F.focusedPkg=null,I(),E();return}let ye=W(e,`.graph2-triage-selector [data-triage-show]`);if(ye){let e=ye.dataset.triageShow;A.shownTriage=A.shownTriage===e?null:e,F.layoutCache=null,F.selected=null,I(),E();return}let be=W(e,`[data-g2-focus-pkg]`);if(be){F.focusedPkg=be.dataset.g2FocusPkg,F.layoutCache=null,I(),E();return}if(W(e,`#g2-back-to-full`)){F.focusedPkg=null,F.layoutCache=null,(F.packagesView||F.bundleLayout===`layers`)&&(F.selected=null),I(),E();return}let xe=W(e,`.tab`);if(xe&&W(e,`.tabs`)){let t=W(e,`[data-gid]`).dataset.gid,n=xe.dataset.tid;A.activeTabByGroup.set(t,n),U();return}let Ce=W(e,`[data-triage-action]`);if(Ce){let e=Ce.closest(`.triage-menu`),t=e?.dataset.gid;if(!t)return;let n=O(t);if(!n)return;let r=Ce.dataset.triageAction;if(![`inprogress`,`fixed`,`invalid`,`deleted`,`ignored`,`restore`].includes(r))return;let{targets:i,clearing:a}=Rt(n,r);if(i.length===0)return;Ni(i,a?`untriaged`:r);try{e.hidePopover()}catch{}y(),U();return}if(W(e,`.mark-comment`)){let t=W(e,`[data-gid]`).dataset.gid,n=O(t);if(!n)return;let r=C(n);if(!Qe(r))return;if(j()){jn(r,U).catch(()=>dt(`Could not open comments. Please retry.`));return}let i=nr(r),a=at(r)?.comment??``;Ln({initial:a,finding:r}).then(e=>(e===null||!x(r)||(N(A.triage,i,{comment:e||void 0}),y(),U()),null)).catch(()=>{});return}let we=W(e,`.mark-copy`);if(we){let t=ki(e);if(t===null)return;Ti(we,t);return}let Te=W(e,`.mark-link`);if(Te){let t=W(e,`[data-gid]`),n=t?O(t.dataset.gid):null;if(!n)return;let r=ne(C(n));if(!r)return;Ti(Te,r);return}let Ee=W(e,`[data-copy-report]`);if(Ee){Ti(Ee,Ee.dataset.copyReport);return}let De=W(e,`[data-copy-path]`);if(De){Ti(De,De.dataset.copyPath);return}let Oe=W(e,`.mark-issue`);if(Oe&&j()&&A.managedSession&&!A.managedSession.publicShare&&A.currentManagedTeam){let t=W(e,`[data-gid]`),n=t?O(t.dataset.gid):null,r=n?C(n):null;if(r?._managedReportId&&r.id){e.preventDefault();let t=new URL(Oe.dataset.issueForm);Fe({teamId:A.currentManagedTeam,session:{...A.managedSession},context:{reportId:r._managedReportId,findingId:r.id,repository:t.pathname.split(`/`).slice(1,3).join(`/`)},formUrl:t.href,title:t.searchParams.get(`title`)??``,body:t.searchParams.get(`body`)??``,finding:r,draftOptions:{sourceUrl:Xn(r,ht(r)),evidence:$n(r),showRevalidation:cr(),findingLink:ne(r)},renderBody:Ve,render:E}).catch(()=>dt(`Could not open issue creation. Please retry.`));return}}let ke=W(e,`.mark-claude`);if(ke){let t=ki(e);if(t===null)return;let n=`claude://code/new?q=${encodeURIComponent(`Confirm and fix:
6
6
 
7
- ${t}`)}`;try{window.location.href=n,wi(Oe)}catch{}return}if(W(e,`.mark-fix`)){let t=W(e,`[data-gid]`)?.dataset.gid,n=t?O(t):null;if(!n)return;let r=C(n);if(!b(r))return;let i=an(n),a=at(r)?.fix??``;Hn({initial:a,finding:r,canApplyToGroup:Dt(i,a)}).then(e=>{if(e===null||!b(r))return null;let n=e.scope===`group`?i.filter(e=>b(e)&&(e===r||Nt(e,a))):[r],o=!1;for(let t of n)N(A.triage,nr(t),{fix:e.value||void 0})&&(o=!0);return o&&(n.length>1&&A.activeTabByGroup.set(t,nr(r)),U(),queueMicrotask(y)),null}).catch(()=>{});return}let ke=W(e,`[data-flag-toggle]`);if(ke){let t=ke.dataset.flagToggle,n=W(e,`[data-gid]`)?.dataset.gid,r=(n?O(n):null)?.find(e=>nr(e)===t);if(!r||!b(r))return;let i=at(r)?.flagged;N(A.triage,t,{flagged:i!==!0}),y(),U();return}let Ae=e.target.closest(`[data-triage-show]`);if(Ae&&!Ae.closest(`.graph2-triage-selector`)){let e=Ae.dataset.triageShow;A.shownTriage=A.shownTriage===e?null:e,E();return}if(e.target.closest(`[data-table-deselect]`)){A.tableSelectedGid=null,U();return}let je=e.target.closest(`[data-tree-select]`);if(je){let e=je.dataset.treeSelect;A.filesSelectedFile=A.filesSelectedFile===e?null:e,E();return}e.target.closest(`[data-tree-deselect]`)&&(A.filesSelectedFile=null,E())});var Ai=document.querySelector(`#bundle-source-overlay-slot`);Ai&&Ai.addEventListener(`click`,Oi);function ji(e){let t=e?O(e):null;t&&qt(t)&&queueMicrotask(y)}w.addEventListener(`row-select`,e=>{let t=e.detail?.gid;if(!t)return;let n=A.tableSelectedGid!==t;A.tableSelectedGid=n?t:null,n&&ji(t),U()});var Mi=`application/x-deepview-kanban-gid`;function Ni(e,t){for(let n of e)b(n)&&An(A.triage,n,t,Kn())}function Pi(){for(let e of w.querySelectorAll(`.kanban-card.dragging`))e.classList.remove(`dragging`);for(let e of w.querySelectorAll(`.kanban-column.drag-over`))e.classList.remove(`drag-over`)}w.addEventListener(`dragstart`,e=>{let t=e.target.closest?.(`.kanban-card[data-kanban-source]`);if(!t||!e.dataTransfer)return;let n=t.dataset.gid;if(!n)return;let r=O(n);if(!r||Ht(r).length===0){e.preventDefault();return}e.dataTransfer.setData(Mi,n),e.dataTransfer.setData(`text/plain`,n),e.dataTransfer.effectAllowed=`move`,t.classList.add(`dragging`)}),w.addEventListener(`dragend`,Pi),w.addEventListener(`dragover`,e=>{if(!e.dataTransfer?.types.includes(Mi))return;let t=e.target.closest?.(`.kanban-column[data-kanban-target]`);if(t&&(e.preventDefault(),e.dataTransfer.dropEffect=`move`,!t.classList.contains(`drag-over`))){for(let e of w.querySelectorAll(`.kanban-column.drag-over`))e!==t&&e.classList.remove(`drag-over`);t.classList.add(`drag-over`)}}),w.addEventListener(`dragleave`,e=>{let t=e.target.closest?.(`.kanban-column[data-kanban-target]`);t&&(t.contains(e.relatedTarget)||t.classList.remove(`drag-over`))}),w.addEventListener(`drop`,e=>{if(!e.dataTransfer?.types.includes(Mi))return;let t=e.target.closest?.(`.kanban-column[data-kanban-target]`);if(!t){Pi();return}e.preventDefault();let n=e.dataTransfer.getData(Mi),r=t.dataset.kanbanTarget;if(Pi(),!n||!r)return;let i=O(n);if(!i||(Ct(i).commonTriage??`untriaged`)===r)return;let a=Ht(i);a.length!==0&&(Ni(a,r),E(),queueMicrotask(y))});var Fi=!1,Ii=[`theme-w95`,`theme-paper`];function Li(){return!!document.startViewTransition&&!Ii.some(e=>document.body.classList.contains(e))}function G(e){return e?w.querySelector(`.kanban-card[data-gid="${CSS.escape(e)}"]`):null}function Ri(e){let t=e??w.querySelector(`.kanban-card`);if(!t)return;let n=t.getBoundingClientRect();n.width<=0||n.height<=0||(document.documentElement.style.setProperty(`--kanban-clip-card-w`,`${Math.floor(n.width)}px`),document.documentElement.style.setProperty(`--kanban-clip-card-h`,`${Math.floor(n.height)}px`),document.documentElement.style.setProperty(`--kanban-return-card-bg`,getComputedStyle(t).backgroundColor))}function zi(e){A.kanbanPopoverGid=e,A.focusCodeStack=[],A.focusCodeAt=0}function Bi(){l()}function K(e){let t=A.kanbanPopoverGid;if(t===e)return;let n=t===null&&e!==null,r=t!==null&&e===null;if(!Li()||!n&&!r){ji(e),zi(e),E(),Bi();return}if(Fi)return;ji(e),Fi=!0;let i=n?`kanban-opening`:`kanban-closing`;document.documentElement.classList.add(i);let a=e=>{e&&(e.style.viewTransitionName=``),document.documentElement.classList.remove(i),Fi=!1};if(n){let t=G(e);t?(Ri(t),t.style.viewTransitionName=`kanban-detail-modal`,t.getBoundingClientRect()):Ri(),zi(e);let n=kt(()=>{E(),Bi(),t&&(t.style.viewTransitionName=``)}),r=setTimeout(()=>a(t),600);(async()=>{try{await n.finished}catch{}clearTimeout(r),a(t)})();return}Ri(),zi(e);let o=null,s=kt(()=>{E(),o=G(t),o&&(Ri(o),o.style.viewTransitionName=`kanban-detail-modal`)}),c=setTimeout(()=>a(o??G(t)),600);(async()=>{try{await s.finished}catch{}clearTimeout(c),a(o??G(t))})()}function Vi(e){let t=G(A.kanbanPopoverGid),n=t?.closest(`.kanban-column`);if(!n)return;let r=[...n.querySelectorAll(`.kanban-card[data-kanban-source]`)],i=r.indexOf(t);if(i<0)return;let a=Math.min(Math.max(i+e,0),r.length-1);if(a===i)return;let o=r[a].dataset.gid;if(!o)return;K(o);let s=G(o);s&&(s.focus({preventScroll:!0}),s.scrollIntoView({block:`nearest`,behavior:`instant`}))}var Hi=null;function Ui(){qe(),A.focusCodeStack=[],A.focusCodeAt=0,E(),Hi?.isConnected&&Hi.focus({preventScroll:!0}),Hi=null}w.addEventListener(`click`,e=>{let t=W(e,`[data-links-preview]`);if(t){e.preventDefault(),Hi=t;let n=t.dataset.previewRow,r=Ye(t.dataset.linksPreview,t.dataset.previewReport,n===void 0?void 0:Number(n),t.dataset.previewManagedReport);E(),w.querySelector(`.kanban-detail-close`)?.focus({preventScroll:!0}),r.then(()=>{E(),l();let e=We()?.group?.[0]._bundleHashes;if(Array.isArray(e))for(let t of e)mn(t).catch(()=>{});return null});return}if(e.target.closest?.(`.kanban-detail-close`)){if(We()){Ui();return}K(null);return}if(e.target.closest?.(`[data-kanban-detail-fullscreen]`)){A.kanbanDetailFullscreen=!A.kanbanDetailFullscreen;try{localStorage.setItem(en,String(A.kanbanDetailFullscreen))}catch{}E(),l();return}let n=e.target.closest?.(`[data-kanban-expand]`);if(n){let e=n.dataset.kanbanExpand,t=A.kanbanExpandedColumn===e?null:e;A.kanbanExpandedColumn=t,t&&A.kanbanPopoverGid&&G(A.kanbanPopoverGid)?.closest(`.kanban-column`)?.dataset.kanbanTarget!==t&&(A.kanbanPopoverGid=null),E();return}let r=e.target.closest?.(`[data-kanban-nav]`);if(r){Vi(r.dataset.kanbanNav===`next`?1:-1);return}let i=e.target.closest?.(`[data-kanban-select]`);if(i){if(window.getSelection?.()?.toString())return;let e=i.dataset.gid;e&&K(e);return}if(e.target.closest?.(`.kanban-action:not(.kanban-fix-note)`))return;let a=e.target.closest?.(`.kanban-card[data-kanban-source]`);if(a){if(window.getSelection?.()?.toString())return;let e=a.dataset.gid;if(!e)return;K(A.kanbanPopoverGid===e?null:e);return}if(!W(e,`.kanban-detail-modal, .kanban-detail-side`)){if(We()){Ui();return}A.kanbanPopoverGid&&K(null)}}),w.addEventListener(`change`,e=>{let t=e.target.closest?.(`[data-kanban-column]`);if(!t)return;let n=t.selectedOptions[0]?.dataset.gid;n&&K(n)}),document.addEventListener(`keydown`,e=>{if(e.key===`Escape`){if(We()){!e.defaultPrevented&&!Xi(e)&&!document.querySelector(`:popover-open:not(#styled-tooltip)`)&&Ui();return}if(A.kanbanPopoverGid){K(null);return}A.viewMode!==`kanban`||A.kanbanExpandedColumn===null||(A.kanbanExpandedColumn=null,E())}});function Wi(e){let t=W(e,`[data-gid]`)?.dataset?.gid;return t?O(t):null}function Gi(e,t){if(!t.integrity||!t.file)return;let n=f(e);if(!n)return;let r=xn(n,t);r&&(A.focusCodeStack=r.stack,A.focusCodeAt=r.at,E()),t.range||Ki(),l()}function Ki(){for(let e of w.querySelectorAll(`.focus-code-body`))e.scrollTop=0,e.scrollLeft=0}w.addEventListener(`keydown`,e=>{if(e.key!==`Enter`&&e.key!==` `)return;let t=W(e,`[data-code-nav-file]`);t&&(e.preventDefault(),Gi(Wi(e),{integrity:t.dataset.codeNavIntegrity,file:t.dataset.codeNavFile,range:Zn(t.dataset.codeNavLine)}))});function qi(e){let t=Tn(A.focusCodeStack,A.focusCodeAt,e);t!==A.focusCodeAt&&(A.focusCodeAt=t,E(),A.focusCodeStack[t]?.range||Ki(),l())}function Ji(e){if(!e||A.focusGid===e)return;ji(e),A.focusGid=e,A.focusCodeStack=[],A.focusCodeAt=0,E();let t=w.querySelector(`.focus-side-card.active`);t&&t.scrollIntoView({block:`nearest`,behavior:`instant`}),l()}function Yi(e){let t=[...w.querySelectorAll(`.focus-side-card[data-focus-select]`)];if(t.length===0)return;let n=t.findIndex(e=>e.classList.contains(`active`)),r=n<0?e>0?0:t.length-1:Math.min(Math.max(n+e,0),t.length-1);if(r===n)return;let i=t[r].dataset.gid;i&&Ji(i)}w.addEventListener(`click`,e=>{let t=e.target.closest?.(`[data-focus-nav]`);if(t){Yi(t.dataset.focusNav===`next`?1:-1);return}let n=e.target.closest?.(`.focus-side-card[data-focus-select]`);if(!n||window.getSelection?.()?.toString())return;let r=n.dataset.gid;r&&Ji(r)}),w.addEventListener(`pointerdown`,e=>{if(e.button!==0)return;let t=e.target.closest?.(`[data-focus-splitter]`);t&&ri(t,e)}),w.addEventListener(`dblclick`,e=>{let t=e.target.closest?.(`[data-focus-splitter]`);t&&ni(t)});function Xi(e){if(document.querySelector(`dialog[open]`))return!0;for(let t of e.composedPath()){if(!t||t.nodeType!==1)continue;let e=t.tagName;if(e===`INPUT`||e===`TEXTAREA`||e===`SELECT`||e===`DIALOG`&&t.open||t.isContentEditable)return!0}return!1}document.addEventListener(`keydown`,e=>{if(A.currentView!==`findings`)return;let t=A.viewMode===`focus`,n=A.viewMode===`kanban`&&A.kanbanPopoverGid!==null;if(!t&&!n||e.metaKey||e.ctrlKey||e.altKey||e.shiftKey||Xi(e))return;let r=0;if(e.key===`ArrowRight`)r=1;else if(e.key===`ArrowLeft`)r=-1;else return;e.preventDefault();let i=e.target?.closest?.(`[data-focus-splitter]`);if(i){ti(i,r*Zr);return}t?Yi(r):Vi(r)}),w.addEventListener(`mark-color`,e=>{let t=W(e,`[data-gid]`);if(!t)return;let n=t.dataset.gid,r=O(n);if(!r)return;let i=C(r);if(!b(i))return;let a=nr(i),o=e.detail?.color;o&&(at(i)?.color===o?N(A.triage,a,{color:void 0}):N(A.triage,a,{color:o}),y(),U())});var q=null,Zi=null,J=null,Qi=!1;function $i(){if(q!==null)return;if(A.reports.length===0){J=null,Qi=!1;return}q=A.viewMode,Zi=document.title;let e=!1;A.viewMode===`table`&&(A.viewMode=`list`,e=!0),J&&(Se(J),e=!0),e&&E();for(let e of w.querySelectorAll(`finding-card`))e.toggleAttribute(`print-one-sample`,Qi),e.ensureRendered({sync:!0});let t=A.reports.map(e=>e.fileName),n=``;t.length===1?n=t[0]:t.length>1&&(n=Jn(t)),n=n.replace(/\.json$/u,``),n&&(document.title=n)}function ea(){if(q===null)return;for(let e of w.querySelectorAll(`finding-card`))e.removeAttribute(`print-one-sample`);Qi=!1;let e=!1;A.viewMode!==q&&(A.viewMode=q,e=!0),J&&(Te(),J=null,e=!0),e&&E(),document.title=Zi,q=null,Zi=null}window.addEventListener(`beforeprint`,$i),window.addEventListener(`afterprint`,ea);async function ta(e,{oneSamplePerGroup:t=!1}={}){if(q===null){J=e,Qi=t;try{$i(),await Promise.all([...w.querySelectorAll(`finding-card`)].map(e=>e.ensureRendered())),window.print()}catch(e){throw ea(),e}}}function na(e,t){if(!e)return t();Se(e);try{return t()}finally{Te()}}document.addEventListener(`download-requested`,async()=>{if(A.reports.length===0)return;let{confirmed:e,view:t,fields:n,mode:r,oneSamplePerGroup:i}=await zn(`download`);if(!await Jt()){ct(`Could not load finding details to export. Open the team again to retry.`);return}if(t){await Bn(na(n,()=>ui({oneSamplePerGroup:i})));return}if(e){if(r===`print`){await ta(n,{oneSamplePerGroup:i});return}na(n,()=>fi({oneSamplePerGroup:i}))}}),w.addEventListener(`analyzer-change`,e=>{A.filterAnalyzer=e.detail.analyzer,A.filterModel=e.detail.model,E()}),w.addEventListener(`repo-change`,e=>{A.filterRepo=e.detail.value,E()}),w.addEventListener(`revalidate-change`,e=>{A.filterRevalidate=e.detail.value,E()}),w.addEventListener(`partial-change`,e=>{A.filterPartial=e.detail.value,E()}),w.addEventListener(`revalidation-change`,e=>{A.showRevalidation=e.detail.on,!e.detail.on&&A.reports.some(e=>(e.groups??[]).some(e=>e.some(e=>!e.isApp&&(e.isUpstream||qn(e.file)))))?ct(`App mode off is not recommended; it can conflate triage for issues in dependencies.`,{kind:`warning`}):e.detail.on&&dt(),sr(A.showRevalidation,A.upstreamOnly),Me(tn(),{resetSort:!1}),E()}),w.addEventListener(`revalidation-conflicts-open`,()=>{(async()=>{let e=await Nn(A.revalidateConflicts);if(!e)return;let t=await Ot(e.id,e.reportName);t.ok||alert(t.reason)})().catch(e=>console.warn(`revalidation: open conflicting finding failed:`,e))}),w.addEventListener(`revalidation-detail-change`,e=>{A.revalidationDetailed=e.detail.on===!0,E()}),w.addEventListener(`upstream-only-change`,e=>{if(A.upstreamOnly=e.detail.on===!0,sr(A.showRevalidation,A.upstreamOnly),!A.upstreamOnly){let e=tn();ke(e,je(e))===`confirmed`&&(A.filterRevalidate=`confirmed`,A.filterPartial=``)}E()}),w.addEventListener(`bundle-search-mode-change`,e=>{let t=e.detail?.mode;if([`files`,`code`,`issues`,`largest`].includes(t)){if(A.bundleCodeSearchMode=t,E(),t===`files`)ye();else if(t===`largest`){let e=document.querySelector(`.bundle-code-rail-body`);e&&(e.scrollTop=0)}}}),w.addEventListener(`bundle-graph-reason-change`,e=>{let t=e.detail?.reason;t!==null&&typeof t!=`string`||(F.bundleReason=t,F.layoutCache=null,F.selected=null,F.solo=null,F.focusedPkg=null,I(),E())}),w.addEventListener(`bundle-search-regex-toggle`,()=>{A.bundleSearchRegex=!A.bundleSearchRegex,E()}),w.addEventListener(`bundle-search-case-toggle`,()=>{A.bundleSearchCase=!A.bundleSearchCase,E()}),w.addEventListener(`bundle-swap`,e=>{let t=e.detail?.integrity;if(!t||!(A.bundles??[]).some(e=>e.integrity===t))return;let n=A.bundles.find(e=>e.integrity===t),r=Yt(e.detail.bundles??[]),i=()=>{setTimeout(()=>$t(r))};if(n.managedId){let t=e.detail.target===void 0?A.selectedBundle:e.detail.target,r=A.bundles.find(e=>e.integrity===t),a=r?.managedId?{compareId:r.managedId,...hr(e.detail.mode)}:null;xt.navigate(s(A.managedTeams,n,A.currentManagedTeam,`compare`,a,A.bundles)).finally(i);return}ln(t,`compare`),D(t,`compare`),E(),T(),_n(t).finally(i)}),w.addEventListener(`bundle-compare-change`,e=>{let{base:t,target:n,mode:r}=e.detail??{};!j()||!t||t!==A.selectedBundle||A.bundleDetailsTab!==`compare`||(A.bundleCompare=n?{bundle:t,target:n,mode:mr(r)}:null,D(t,`compare`))}),w.addEventListener(`sort-change`,e=>{let{kind:t,value:n}=e.detail;if(t===`findings`)A.sortBy=n;else if(t===`packages`)A.packagesSortBy=n;else if(t===`repositories`)A.repositoriesSortBy=n;else return;E()}),w.addEventListener(`range-change`,e=>{e.target.id===`conf-range`&&(A.filterConfMin=e.detail.low,A.filterConfMax=e.detail.high,E())}),w.addEventListener(`input`,e=>{let t=e.composedPath()[0],n=t?.id,r=t?.value;n===`g2-path-filter`&&(F.pathFilter=r,F.graphState?.requestDraw?.())}),w.addEventListener(`search-input`,e=>{if(!e.detail)return;let{kind:t,value:n}=e.detail;if(t===`findings`){A.filterInclude=n,n||(A.filterIncludeNegate=!1),Si();return}if(t===`files`){A.filesSearch=n,Si();return}if(t===`packages`)A.packagesSearchQuery=n;else if(t===`repositories`)A.repositoriesSearchQuery=n;else if(t===`bundle-code`){A.bundleCodeSearchQuery=n,Si();return}else if(t===`bundle-search`){A.bundleSearchQuery=n,Si();return}else return;E()}),w.addEventListener(`search-negate-toggle`,()=>{A.filterIncludeNegate=!A.filterIncludeNegate,E()}),w.addEventListener(`severity-toggle`,e=>{let t=e.detail.severity;if(e.detail.kind===`graph`){F.selectedSeverities.has(t)?F.selectedSeverities.delete(t):F.selectedSeverities.add(t),e.composedPath()[0].selected=[...F.selectedSeverities],F.graphState?.requestDraw?.(),yi();return}A.filterSeverities.has(t)?A.filterSeverities.delete(t):A.filterSeverities.add(t),E()}),w.addEventListener(`color-toggle`,e=>{let t=e.detail.color;if(e.detail.kind===`graph`){F.selectedColors.has(t)?F.selectedColors.delete(t):F.selectedColors.add(t),e.composedPath()[0].selected=[...F.selectedColors],F.graphState?.requestDraw?.(),yi();return}A.filterColors.has(t)?A.filterColors.delete(t):A.filterColors.add(t),E()}),w.addEventListener(`source-toggle`,e=>{let t=e.detail.source,n=A.filterSources.has(t);A.filterSources.clear(),n||A.filterSources.add(t),E()}),w.addEventListener(`annotation-filter-toggle`,e=>{let t=e.detail?.key,n=e=>e===``?`with`:e===`with`?`without`:``;if(t===`comment`)A.filterComment=n(A.filterComment);else if(t===`fix`)A.filterFix=n(A.filterFix);else if(t===`flag`)A.filterFlagged=n(A.filterFlagged);else if(t===`duplicates`&&!A.currentWorkspace)A.filterDuplicates=n(A.filterDuplicates);else if(t===`cross-context`)A.filterCrossContext=n(A.filterCrossContext);else if(t===`app-stacked`)A.filterAppStacked=n(A.filterAppStacked);else if(t===`security`)A.filterSecurity=n(A.filterSecurity);else return;E()}),w.addEventListener(`slide-triage-toggle`,e=>{let{kind:t,value:n}=e.detail;if(t===`package`)A.packageSlideTriage=A.packageSlideTriage===n?null:n;else if(t===`repository`)A.repositorySlideTriage=A.repositorySlideTriage===n?null:n;else return;E()}),w.addEventListener(`view-mode-change`,e=>{if(e.detail.kind===`files`){A.filesViewMode=e.detail.mode,E();return}A.viewMode=e.detail.mode,A.viewMode!==`kanban`&&(A.kanbanPopoverGid=null),A.viewMode!==`focus`&&(A.focusGid=null),E()}),w.addEventListener(`severity-mode-change`,e=>{let t=e.detail?.mode;if(t===`corrected`||t===`original`){A.severityMode=t;try{localStorage.setItem(Gt,t)}catch{}E()}}),w.addEventListener(`repo-edit-start`,()=>{j()||(A.repoEditing=!0,E())}),w.addEventListener(`repo-input`,e=>{j()||(A.repoUrl=e.detail.url,hn(A.currentFile,A.repoUrl))}),w.addEventListener(`repo-commit`,e=>{j()||(A.repoUrl=e.detail.url,hn(A.currentFile,A.repoUrl),A.repoEditing=!1,E())}),w.addEventListener(`repo-cancel`,e=>{j()||(A.repoUrl=e.detail.url,hn(A.currentFile,A.repoUrl),A.repoEditing=!1,E())}),document.addEventListener(`keydown`,e=>{if(e.key===`Escape`){if(A.bundleSourceFindingIdx!=null){A.bundleSourceFindingIdx=null,bi();return}if(A.bundleSourceFile){if(A.currentView===`bundles`&&A.bundleDetailsTab===`code`)return;fn(A.bundleDetailsTab),E()}}});function Y(e,t){for(let[n,r]of Object.entries(t))e.hasAttribute(n)||e.setAttribute(n,r)}var X=Math.PI*2;function ra(e){return()=>{e=e+1831565813|0;let t=e;return t=Math.imul(t^t>>>15,t|1),t^=t+Math.imul(t^t>>>7,t|61),((t^t>>>14)>>>0)/4294967296}}function ia(e,t,n,r){let i=Math.cos(t),a=Math.sin(t);return Math.min(i>0?(n-e.x)/i:i<0?-e.x/i:1/0,a>0?(r-e.y)/a:a<0?-e.y/a:1/0)}function aa(e){return Math.abs(e.reduce((t,n,r)=>{let i=e[(r+1)%e.length];return t+n.x*i.y-i.x*n.y},0))/2}function oa(e){return e.slice(1).reduce((t,n,r)=>t+Math.hypot(n.x-e[r].x,n.y-e[r].y),0)}function sa(e,t,n,r){let i=e.map(e=>e.x),a=e.map(e=>e.y),o={x:(Math.min(...i)+Math.max(...i))/2,y:(Math.min(...a)+Math.max(...a))/2},s=Math.max(...e.map(e=>Math.hypot(e.x-o.x,e.y-o.y))),c=Math.atan2(o.y-t.y,o.x-t.x);return{center:o,distance:Math.hypot(o.x-t.x,o.y-t.y),dx:Math.cos(c)*(80+r()*200)+(r()-.5)*90,dy:n-o.y+s+40,rotation:(r()-.5)*160,delay:r()*120}}function ca(e,t,n=7){let r=ra(n),i={x:e*1820/1920,y:t*90/1080},a=Math.hypot(e,t),o=(e,t)=>e<1e-8?0:e>t-1e-8?t:e,s=n=>({x:o(n.x,e),y:o(n.y,t)}),c=Array.from({length:20},(e,t)=>((t+(r()-.5)*.35)*X/20+X)%X);for(let[n,r]of[[0,0],[e,0],[e,t],[0,t]])c.push((Math.atan2(r-i.y,n-i.x)+X)%X);c.sort((e,t)=>e-t);let l=[.045,.29,.58].map(n=>n*Math.min(e,t)).map(n=>c.map(a=>{let o=Math.min(n*(.92+r()*.16),ia(i,a,e,t));return s({x:i.x+Math.cos(a)*o,y:i.y+Math.sin(a)*o})}));l.push(c.map(n=>{let r=ia(i,n,e,t);return s({x:i.x+Math.cos(n)*r,y:i.y+Math.sin(n)*r})}));let u=l.map((n,a)=>n.map((o,c)=>{let u=n[(c+1)%n.length],d={x:(o.x+u.x)/2,y:(o.y+u.y)/2},f=Math.hypot(u.x-o.x,u.y-o.y),p=o.x===u.x&&(o.x===0||o.x===e)||o.y===u.y&&(o.y===0||o.y===t),m=a===l.length-1||p?0:(r()-.5)*f*.08,h=Math.atan2(d.y-i.y,d.x-i.x);return[o,s({x:d.x+Math.cos(h)*m,y:d.y+Math.sin(h)*m}),u]})),d=l.slice(1).map((e,t)=>e.map((e,n)=>{let a=l[t][n],o=Math.hypot(e.x-a.x,e.y-a.y),u={x:(a.x+e.x)/2,y:(a.y+e.y)/2},d=(c[n]-c[(n+c.length-1)%c.length]+X)%X,f=(c[(n+1)%c.length]-c[n]+X)%X,p=Math.min(d,f)*Math.hypot(u.x-i.x,u.y-i.y),m=(r()-.5)*Math.min(o*.12,p*.14);return[a,s({x:u.x-Math.sin(c[n])*m,y:u.y+Math.cos(c[n])*m}),e]})),f=[],p=e=>{aa(e)>.01&&f.push({points:e,...sa(e,i,t,r)})};p(u[0].flatMap(e=>e.slice(0,-1)));for(let e=0;e<l.length-1;e++)for(let t=0;t<c.length;t++){let n=(t+1)%c.length;p([...d[e][t],...u[e+1][t].slice(1),...d[e][n].toReversed().slice(1),...u[e][t].toReversed().slice(1)])}let m=Math.max(...f.map(e=>e.distance));for(let e of f)e.delay+=e.distance/m*400;let h=[],g=(e,t,n,r)=>{let i=oa(e);i>.1&&h.push({points:e,length:i,delay:t,duration:n,width:r})};for(let e=0;e<c.length;e++){let t=[i,l[0][e],...d.flatMap(t=>t[e].slice(1))];g(t,0,200+oa(t)/a*1e3,1.1)}for(let e of u.slice(0,-1))for(let t of e)g(t,Math.hypot(t[0].x-i.x,t[0].y-i.y)/a*1e3,220+oa(t)/a*400,.7);for(let n of l[1]){let o=Math.atan2(n.y-i.y,n.x-i.x)+(r()-.5)*1.4,c=Math.min(e,t)*(.07+r()*.12),l=[n];for(let e=1;e<=3;e++)l.push(s({x:n.x+Math.cos(o+(r()-.5)*.3)*c*e/3,y:n.y+Math.sin(o+(r()-.5)*.3)*c*e/3}));g(l,Math.hypot(n.x-i.x,n.y-i.y)/a*1e3+80,220,.5)}return{width:e,height:t,impact:i,pieces:f,cracks:h}}var la=`.screen-crack{position:fixed;inset:0;z-index:2147483646;overflow:hidden;pointer-events:none;user-select:none}.screen-crack-svg{position:absolute;inset:0;width:100%;height:100%;overflow:hidden}.screen-crack-glass{position:absolute;inset:0;backdrop-filter:blur(9px) brightness(1.06) saturate(.85);background:linear-gradient(135deg,#dcebff0f,#dcebff00 55%);mask-mode:luminance;opacity:0}.screen-crack-shard{transform-box:fill-box;transform-origin:center}.screen-crack-outline{opacity:0}.screen-crack-flash{position:absolute;width:18vmin;height:18vmin;border-radius:50%;background:radial-gradient(circle,rgb(255 255 255 / .85),rgb(200 230 255 / .15) 55%,transparent 75%);transform:translate(-50%,-50%);opacity:0}@media print{.screen-crack{display:none}}
7
+ ${t}`)}`;try{window.location.href=n,wi(ke)}catch{}return}if(W(e,`.mark-fix`)){let t=W(e,`[data-gid]`)?.dataset.gid,n=t?O(t):null;if(!n)return;let r=C(n);if(!x(r))return;let i=on(n),a=at(r)?.fix??``;Hn({initial:a,finding:r,canApplyToGroup:Dt(i,a)}).then(e=>{if(e===null||!x(r))return null;let n=e.scope===`group`?i.filter(e=>x(e)&&(e===r||Mt(e,a))):[r],o=!1;for(let t of n)N(A.triage,nr(t),{fix:e.value||void 0})&&(o=!0);return o&&(n.length>1&&A.activeTabByGroup.set(t,nr(r)),U(),queueMicrotask(y)),null}).catch(()=>{});return}let Ae=W(e,`[data-flag-toggle]`);if(Ae){let t=Ae.dataset.flagToggle,n=W(e,`[data-gid]`)?.dataset.gid,r=(n?O(n):null)?.find(e=>nr(e)===t);if(!r||!x(r))return;let i=at(r)?.flagged;N(A.triage,t,{flagged:i!==!0}),y(),U();return}let je=e.target.closest(`[data-triage-show]`);if(je&&!je.closest(`.graph2-triage-selector`)){let e=je.dataset.triageShow;A.shownTriage=A.shownTriage===e?null:e,E();return}if(e.target.closest(`[data-table-deselect]`)){A.tableSelectedGid=null,U();return}let Me=e.target.closest(`[data-tree-select]`);if(Me){let e=Me.dataset.treeSelect;A.filesSelectedFile=A.filesSelectedFile===e?null:e,E();return}e.target.closest(`[data-tree-deselect]`)&&(A.filesSelectedFile=null,E())});var Ai=document.querySelector(`#bundle-source-overlay-slot`);Ai&&Ai.addEventListener(`click`,Oi);function ji(e){let t=e?O(e):null;t&&qt(t)&&queueMicrotask(y)}w.addEventListener(`row-select`,e=>{let t=e.detail?.gid;if(!t)return;let n=A.tableSelectedGid!==t;A.tableSelectedGid=n?t:null,n&&ji(t),U()});var Mi=`application/x-deepview-kanban-gid`;function Ni(e,t){for(let n of e)x(n)&&An(A.triage,n,t,Kn())}function Pi(){for(let e of w.querySelectorAll(`.kanban-card.dragging`))e.classList.remove(`dragging`);for(let e of w.querySelectorAll(`.kanban-column.drag-over`))e.classList.remove(`drag-over`)}w.addEventListener(`dragstart`,e=>{let t=e.target.closest?.(`.kanban-card[data-kanban-source]`);if(!t||!e.dataTransfer)return;let n=t.dataset.gid;if(!n)return;let r=O(n);if(!r||Vt(r).length===0){e.preventDefault();return}e.dataTransfer.setData(Mi,n),e.dataTransfer.setData(`text/plain`,n),e.dataTransfer.effectAllowed=`move`,t.classList.add(`dragging`)}),w.addEventListener(`dragend`,Pi),w.addEventListener(`dragover`,e=>{if(!e.dataTransfer?.types.includes(Mi))return;let t=e.target.closest?.(`.kanban-column[data-kanban-target]`);if(t&&(e.preventDefault(),e.dataTransfer.dropEffect=`move`,!t.classList.contains(`drag-over`))){for(let e of w.querySelectorAll(`.kanban-column.drag-over`))e!==t&&e.classList.remove(`drag-over`);t.classList.add(`drag-over`)}}),w.addEventListener(`dragleave`,e=>{let t=e.target.closest?.(`.kanban-column[data-kanban-target]`);t&&(t.contains(e.relatedTarget)||t.classList.remove(`drag-over`))}),w.addEventListener(`drop`,e=>{if(!e.dataTransfer?.types.includes(Mi))return;let t=e.target.closest?.(`.kanban-column[data-kanban-target]`);if(!t){Pi();return}e.preventDefault();let n=e.dataTransfer.getData(Mi),r=t.dataset.kanbanTarget;if(Pi(),!n||!r)return;let i=O(n);if(!i||(Ct(i).commonTriage??`untriaged`)===r)return;let a=Vt(i);a.length!==0&&(Ni(a,r),E(),queueMicrotask(y))});var Fi=!1,Ii=[`theme-w95`,`theme-paper`];function Li(){return!!document.startViewTransition&&!Ii.some(e=>document.body.classList.contains(e))}function G(e){return e?w.querySelector(`.kanban-card[data-gid="${CSS.escape(e)}"]`):null}function Ri(e){let t=e??w.querySelector(`.kanban-card`);if(!t)return;let n=t.getBoundingClientRect();n.width<=0||n.height<=0||(document.documentElement.style.setProperty(`--kanban-clip-card-w`,`${Math.floor(n.width)}px`),document.documentElement.style.setProperty(`--kanban-clip-card-h`,`${Math.floor(n.height)}px`),document.documentElement.style.setProperty(`--kanban-return-card-bg`,getComputedStyle(t).backgroundColor))}function zi(e){A.kanbanPopoverGid=e,A.focusCodeStack=[],A.focusCodeAt=0}function Bi(){l()}function K(e){let t=A.kanbanPopoverGid;if(t===e)return;let n=t===null&&e!==null,r=t!==null&&e===null;if(!Li()||!n&&!r){ji(e),zi(e),E(),Bi();return}if(Fi)return;ji(e),Fi=!0;let i=n?`kanban-opening`:`kanban-closing`;document.documentElement.classList.add(i);let a=e=>{e&&(e.style.viewTransitionName=``),document.documentElement.classList.remove(i),Fi=!1};if(n){let t=G(e);t?(Ri(t),t.style.viewTransitionName=`kanban-detail-modal`,t.getBoundingClientRect()):Ri(),zi(e);let n=Pt(()=>{E(),Bi(),t&&(t.style.viewTransitionName=``)}),r=setTimeout(()=>a(t),600);(async()=>{try{await n.finished}catch{}clearTimeout(r),a(t)})();return}Ri(),zi(e);let o=null,s=Pt(()=>{E(),o=G(t),o&&(Ri(o),o.style.viewTransitionName=`kanban-detail-modal`)}),c=setTimeout(()=>a(o??G(t)),600);(async()=>{try{await s.finished}catch{}clearTimeout(c),a(o??G(t))})()}function Vi(e){let t=G(A.kanbanPopoverGid),n=t?.closest(`.kanban-column`);if(!n)return;let r=[...n.querySelectorAll(`.kanban-card[data-kanban-source]`)],i=r.indexOf(t);if(i<0)return;let a=Math.min(Math.max(i+e,0),r.length-1);if(a===i)return;let o=r[a].dataset.gid;if(!o)return;K(o);let s=G(o);s&&(s.focus({preventScroll:!0}),s.scrollIntoView({block:`nearest`,behavior:`instant`}))}var Hi=null;function Ui(){qe(),A.focusCodeStack=[],A.focusCodeAt=0,E(),Hi?.isConnected&&Hi.focus({preventScroll:!0}),Hi=null}w.addEventListener(`click`,e=>{let t=W(e,`[data-links-preview]`);if(t){e.preventDefault(),Hi=t;let n=t.dataset.previewRow,r=Ye(t.dataset.linksPreview,t.dataset.previewReport,n===void 0?void 0:Number(n),t.dataset.previewManagedReport);E(),w.querySelector(`.kanban-detail-close`)?.focus({preventScroll:!0}),r.then(()=>{E(),l();let e=b()?.group?.[0]._bundleHashes;if(Array.isArray(e))for(let t of e)_n(t).catch(()=>{});return null});return}if(e.target.closest?.(`.kanban-detail-close`)){if(b()){Ui();return}K(null);return}if(e.target.closest?.(`[data-kanban-detail-fullscreen]`)){A.kanbanDetailFullscreen=!A.kanbanDetailFullscreen;try{localStorage.setItem($t,String(A.kanbanDetailFullscreen))}catch{}E(),l();return}let n=e.target.closest?.(`[data-kanban-expand]`);if(n){let e=n.dataset.kanbanExpand,t=A.kanbanExpandedColumn===e?null:e;A.kanbanExpandedColumn=t,t&&A.kanbanPopoverGid&&G(A.kanbanPopoverGid)?.closest(`.kanban-column`)?.dataset.kanbanTarget!==t&&(A.kanbanPopoverGid=null),E();return}let r=e.target.closest?.(`[data-kanban-nav]`);if(r){Vi(r.dataset.kanbanNav===`next`?1:-1);return}let i=e.target.closest?.(`[data-kanban-select]`);if(i){if(window.getSelection?.()?.toString())return;let e=i.dataset.gid;e&&K(e);return}if(e.target.closest?.(`.kanban-action:not(.kanban-fix-note)`))return;let a=e.target.closest?.(`.kanban-card[data-kanban-source]`);if(a){if(window.getSelection?.()?.toString())return;let e=a.dataset.gid;if(!e)return;K(A.kanbanPopoverGid===e?null:e);return}if(!W(e,`.kanban-detail-modal, .kanban-detail-side`)){if(b()){Ui();return}A.kanbanPopoverGid&&K(null)}}),w.addEventListener(`change`,e=>{let t=e.target.closest?.(`[data-kanban-column]`);if(!t)return;let n=t.selectedOptions[0]?.dataset.gid;n&&K(n)}),document.addEventListener(`keydown`,e=>{if(e.key===`Escape`){if(b()){!e.defaultPrevented&&!Xi(e)&&!document.querySelector(`:popover-open:not(#styled-tooltip)`)&&Ui();return}if(A.kanbanPopoverGid){K(null);return}A.viewMode!==`kanban`||A.kanbanExpandedColumn===null||(A.kanbanExpandedColumn=null,E())}});function Wi(e){let t=W(e,`[data-gid]`)?.dataset?.gid;return t?O(t):null}function Gi(e,t){if(!t.integrity||!t.file)return;let n=p(e);if(!n)return;let r=xn(n,t);r&&(A.focusCodeStack=r.stack,A.focusCodeAt=r.at,E()),t.range||Ki(),l()}function Ki(){for(let e of w.querySelectorAll(`.focus-code-body`))e.scrollTop=0,e.scrollLeft=0}w.addEventListener(`keydown`,e=>{if(e.key!==`Enter`&&e.key!==` `)return;let t=W(e,`[data-code-nav-file]`);t&&(e.preventDefault(),Gi(Wi(e),{integrity:t.dataset.codeNavIntegrity,file:t.dataset.codeNavFile,range:Zn(t.dataset.codeNavLine)}))});function qi(e){let t=Tn(A.focusCodeStack,A.focusCodeAt,e);t!==A.focusCodeAt&&(A.focusCodeAt=t,E(),A.focusCodeStack[t]?.range||Ki(),l())}function Ji(e){if(!e||A.focusGid===e)return;ji(e),A.focusGid=e,A.focusCodeStack=[],A.focusCodeAt=0,E();let t=w.querySelector(`.focus-side-card.active`);t&&t.scrollIntoView({block:`nearest`,behavior:`instant`}),l()}function Yi(e){let t=[...w.querySelectorAll(`.focus-side-card[data-focus-select]`)];if(t.length===0)return;let n=t.findIndex(e=>e.classList.contains(`active`)),r=n<0?e>0?0:t.length-1:Math.min(Math.max(n+e,0),t.length-1);if(r===n)return;let i=t[r].dataset.gid;i&&Ji(i)}w.addEventListener(`click`,e=>{let t=e.target.closest?.(`[data-focus-nav]`);if(t){Yi(t.dataset.focusNav===`next`?1:-1);return}let n=e.target.closest?.(`.focus-side-card[data-focus-select]`);if(!n||window.getSelection?.()?.toString())return;let r=n.dataset.gid;r&&Ji(r)}),w.addEventListener(`pointerdown`,e=>{if(e.button!==0)return;let t=e.target.closest?.(`[data-focus-splitter]`);t&&ri(t,e)}),w.addEventListener(`dblclick`,e=>{let t=e.target.closest?.(`[data-focus-splitter]`);t&&ni(t)});function Xi(e){if(document.querySelector(`dialog[open]`))return!0;for(let t of e.composedPath()){if(!t||t.nodeType!==1)continue;let e=t.tagName;if(e===`INPUT`||e===`TEXTAREA`||e===`SELECT`||e===`DIALOG`&&t.open||t.isContentEditable)return!0}return!1}document.addEventListener(`keydown`,e=>{if(A.currentView!==`findings`)return;let t=A.viewMode===`focus`,n=A.viewMode===`kanban`&&A.kanbanPopoverGid!==null;if(!t&&!n||e.metaKey||e.ctrlKey||e.altKey||e.shiftKey||Xi(e))return;let r=0;if(e.key===`ArrowRight`)r=1;else if(e.key===`ArrowLeft`)r=-1;else return;e.preventDefault();let i=e.target?.closest?.(`[data-focus-splitter]`);if(i){ti(i,r*Zr);return}t?Yi(r):Vi(r)}),w.addEventListener(`mark-color`,e=>{let t=W(e,`[data-gid]`);if(!t)return;let n=t.dataset.gid,r=O(n);if(!r)return;let i=C(r);if(!x(i))return;let a=nr(i),o=e.detail?.color;o&&(at(i)?.color===o?N(A.triage,a,{color:void 0}):N(A.triage,a,{color:o}),y(),U())});var q=null,Zi=null,J=null,Qi=!1;function $i(){if(q!==null)return;if(A.reports.length===0){J=null,Qi=!1;return}q=A.viewMode,Zi=document.title;let e=!1;A.viewMode===`table`&&(A.viewMode=`list`,e=!0),J&&(Ce(J),e=!0),e&&E();for(let e of w.querySelectorAll(`finding-card`))e.toggleAttribute(`print-one-sample`,Qi),e.ensureRendered({sync:!0});let t=A.reports.map(e=>e.fileName),n=``;t.length===1?n=t[0]:t.length>1&&(n=Jn(t)),n=n.replace(/\.json$/u,``),n&&(document.title=n)}function ea(){if(q===null)return;for(let e of w.querySelectorAll(`finding-card`))e.removeAttribute(`print-one-sample`);Qi=!1;let e=!1;A.viewMode!==q&&(A.viewMode=q,e=!0),J&&(Ee(),J=null,e=!0),e&&E(),document.title=Zi,q=null,Zi=null}window.addEventListener(`beforeprint`,$i),window.addEventListener(`afterprint`,ea);async function ta(e,{oneSamplePerGroup:t=!1}={}){if(q===null){J=e,Qi=t;try{$i(),await Promise.all([...w.querySelectorAll(`finding-card`)].map(e=>e.ensureRendered())),window.print()}catch(e){throw ea(),e}}}function na(e,t){if(!e)return t();Ce(e);try{return t()}finally{Ee()}}document.addEventListener(`download-requested`,async()=>{if(A.reports.length===0)return;let{confirmed:e,view:t,fields:n,mode:r,oneSamplePerGroup:i}=await zn(`download`);if(!await Zt()){dt(`Could not load finding details to export. Open the team again to retry.`);return}if(t){await Bn(na(n,()=>ui({oneSamplePerGroup:i})));return}if(e){if(r===`print`){await ta(n,{oneSamplePerGroup:i});return}na(n,()=>fi({oneSamplePerGroup:i}))}}),w.addEventListener(`analyzer-change`,e=>{A.filterAnalyzer=e.detail.analyzer,A.filterModel=e.detail.model,E()}),w.addEventListener(`repo-change`,e=>{A.filterRepo=e.detail.value,E()}),w.addEventListener(`revalidate-change`,e=>{A.filterRevalidate=e.detail.value,E()}),w.addEventListener(`partial-change`,e=>{A.filterPartial=e.detail.value,E()}),w.addEventListener(`revalidation-change`,e=>{A.showRevalidation=e.detail.on,!e.detail.on&&A.reports.some(e=>(e.groups??[]).some(e=>e.some(e=>!e.isApp&&(e.isUpstream||qn(e.file)))))?dt(`App mode off is not recommended; it can conflate triage for issues in dependencies.`,{kind:`warning`}):e.detail.on&&pt(),sr(A.showRevalidation,A.upstreamOnly),Ne(en(),{resetSort:!1}),E()}),w.addEventListener(`revalidation-conflicts-open`,()=>{(async()=>{let e=await Nn(A.revalidateConflicts);if(!e)return;let t=await Nt(e.id,e.reportName);t.ok||alert(t.reason)})().catch(e=>console.warn(`revalidation: open conflicting finding failed:`,e))}),w.addEventListener(`revalidation-detail-change`,e=>{A.revalidationDetailed=e.detail.on===!0,E()}),w.addEventListener(`upstream-only-change`,e=>{if(A.upstreamOnly=e.detail.on===!0,sr(A.showRevalidation,A.upstreamOnly),!A.upstreamOnly){let e=en();Ae(e,Me(e))===`confirmed`&&(A.filterRevalidate=`confirmed`,A.filterPartial=``)}E()}),w.addEventListener(`bundle-search-mode-change`,e=>{let t=e.detail?.mode;if([`files`,`code`,`issues`,`largest`].includes(t)){if(A.bundleCodeSearchMode=t,E(),t===`files`)Se();else if(t===`largest`){let e=document.querySelector(`.bundle-code-rail-body`);e&&(e.scrollTop=0)}}}),w.addEventListener(`bundle-graph-reason-change`,e=>{let t=e.detail?.reason;t!==null&&typeof t!=`string`||(F.bundleReason=t,F.layoutCache=null,F.selected=null,F.solo=null,F.focusedPkg=null,I(),E())}),w.addEventListener(`bundle-search-regex-toggle`,()=>{A.bundleSearchRegex=!A.bundleSearchRegex,E()}),w.addEventListener(`bundle-search-case-toggle`,()=>{A.bundleSearchCase=!A.bundleSearchCase,E()}),w.addEventListener(`bundle-swap`,e=>{let t=e.detail?.integrity;if(!t||!(A.bundles??[]).some(e=>e.integrity===t))return;let n=A.bundles.find(e=>e.integrity===t),r=Qt(e.detail.bundles??[]),i=()=>{setTimeout(()=>nn(r))};if(n.managedId){let t=e.detail.target===void 0?A.selectedBundle:e.detail.target,r=A.bundles.find(e=>e.integrity===t),a=r?.managedId?{compareId:r.managedId,...hr(e.detail.mode)}:null;xt.navigate(s(A.managedTeams,n,A.currentManagedTeam,`compare`,a,A.bundles)).finally(i);return}dn(t,`compare`),D(t,`compare`),E(),T(),yn(t).finally(i)}),w.addEventListener(`bundle-compare-change`,e=>{let{base:t,target:n,mode:r}=e.detail??{};!j()||!t||t!==A.selectedBundle||A.bundleDetailsTab!==`compare`||(A.bundleCompare=n?{bundle:t,target:n,mode:mr(r)}:null,D(t,`compare`))}),w.addEventListener(`sort-change`,e=>{let{kind:t,value:n}=e.detail;if(t===`findings`)A.sortBy=n;else if(t===`packages`)A.packagesSortBy=n;else if(t===`repositories`)A.repositoriesSortBy=n;else return;E()}),w.addEventListener(`range-change`,e=>{e.target.id===`conf-range`&&(A.filterConfMin=e.detail.low,A.filterConfMax=e.detail.high,E())}),w.addEventListener(`input`,e=>{let t=e.composedPath()[0],n=t?.id,r=t?.value;n===`g2-path-filter`&&(F.pathFilter=r,F.graphState?.requestDraw?.())}),w.addEventListener(`search-input`,e=>{if(!e.detail)return;let{kind:t,value:n}=e.detail;if(t===`findings`){A.filterInclude=n,n||(A.filterIncludeNegate=!1),Si();return}if(t===`files`){A.filesSearch=n,Si();return}if(t===`packages`)A.packagesSearchQuery=n;else if(t===`repositories`)A.repositoriesSearchQuery=n;else if(t===`bundle-code`){A.bundleCodeSearchQuery=n,Si();return}else if(t===`bundle-search`){A.bundleSearchQuery=n,Si();return}else return;E()}),w.addEventListener(`search-negate-toggle`,()=>{A.filterIncludeNegate=!A.filterIncludeNegate,E()}),w.addEventListener(`severity-toggle`,e=>{let t=e.detail.severity;if(e.detail.kind===`graph`){F.selectedSeverities.has(t)?F.selectedSeverities.delete(t):F.selectedSeverities.add(t),e.composedPath()[0].selected=[...F.selectedSeverities],F.graphState?.requestDraw?.(),yi();return}A.filterSeverities.has(t)?A.filterSeverities.delete(t):A.filterSeverities.add(t),E()}),w.addEventListener(`color-toggle`,e=>{let t=e.detail.color;if(e.detail.kind===`graph`){F.selectedColors.has(t)?F.selectedColors.delete(t):F.selectedColors.add(t),e.composedPath()[0].selected=[...F.selectedColors],F.graphState?.requestDraw?.(),yi();return}A.filterColors.has(t)?A.filterColors.delete(t):A.filterColors.add(t),E()}),w.addEventListener(`source-toggle`,e=>{let t=e.detail.source,n=A.filterSources.has(t);A.filterSources.clear(),n||A.filterSources.add(t),E()}),w.addEventListener(`annotation-filter-toggle`,e=>{let t=e.detail?.key,n=e=>e===``?`with`:e===`with`?`without`:``;if(t===`comment`)A.filterComment=n(A.filterComment);else if(t===`fix`)A.filterFix=n(A.filterFix);else if(t===`flag`)A.filterFlagged=n(A.filterFlagged);else if(t===`duplicates`&&!A.currentWorkspace)A.filterDuplicates=n(A.filterDuplicates);else if(t===`cross-context`)A.filterCrossContext=n(A.filterCrossContext);else if(t===`app-stacked`)A.filterAppStacked=n(A.filterAppStacked);else if(t===`security`)A.filterSecurity=n(A.filterSecurity);else return;E()}),w.addEventListener(`slide-triage-toggle`,e=>{let{kind:t,value:n}=e.detail;if(t===`package`)A.packageSlideTriage=A.packageSlideTriage===n?null:n;else if(t===`repository`)A.repositorySlideTriage=A.repositorySlideTriage===n?null:n;else return;E()}),w.addEventListener(`view-mode-change`,e=>{if(e.detail.kind===`files`){A.filesViewMode=e.detail.mode,E();return}A.viewMode=e.detail.mode,A.viewMode!==`kanban`&&(A.kanbanPopoverGid=null),A.viewMode!==`focus`&&(A.focusGid=null),E()}),w.addEventListener(`severity-mode-change`,e=>{let t=e.detail?.mode;if(t===`corrected`||t===`original`){A.severityMode=t;try{localStorage.setItem(Gt,t)}catch{}E()}}),w.addEventListener(`repo-edit-start`,()=>{j()||(A.repoEditing=!0,E())}),w.addEventListener(`repo-input`,e=>{j()||(A.repoUrl=e.detail.url,mn(A.currentFile,A.repoUrl))}),w.addEventListener(`repo-commit`,e=>{j()||(A.repoUrl=e.detail.url,mn(A.currentFile,A.repoUrl),A.repoEditing=!1,E())}),w.addEventListener(`repo-cancel`,e=>{j()||(A.repoUrl=e.detail.url,mn(A.currentFile,A.repoUrl),A.repoEditing=!1,E())}),document.addEventListener(`keydown`,e=>{if(e.key===`Escape`){if(A.bundleSourceFindingIdx!=null){A.bundleSourceFindingIdx=null,bi();return}if(A.bundleSourceFile){if(A.currentView===`bundles`&&A.bundleDetailsTab===`code`)return;pn(A.bundleDetailsTab),E()}}});function Y(e,t){for(let[n,r]of Object.entries(t))e.hasAttribute(n)||e.setAttribute(n,r)}var X=Math.PI*2;function ra(e){return()=>{e=e+1831565813|0;let t=e;return t=Math.imul(t^t>>>15,t|1),t^=t+Math.imul(t^t>>>7,t|61),((t^t>>>14)>>>0)/4294967296}}function ia(e,t,n,r){let i=Math.cos(t),a=Math.sin(t);return Math.min(i>0?(n-e.x)/i:i<0?-e.x/i:1/0,a>0?(r-e.y)/a:a<0?-e.y/a:1/0)}function aa(e){return Math.abs(e.reduce((t,n,r)=>{let i=e[(r+1)%e.length];return t+n.x*i.y-i.x*n.y},0))/2}function oa(e){return e.slice(1).reduce((t,n,r)=>t+Math.hypot(n.x-e[r].x,n.y-e[r].y),0)}function sa(e,t,n,r){let i=e.map(e=>e.x),a=e.map(e=>e.y),o={x:(Math.min(...i)+Math.max(...i))/2,y:(Math.min(...a)+Math.max(...a))/2},s=Math.max(...e.map(e=>Math.hypot(e.x-o.x,e.y-o.y))),c=Math.atan2(o.y-t.y,o.x-t.x);return{center:o,distance:Math.hypot(o.x-t.x,o.y-t.y),dx:Math.cos(c)*(80+r()*200)+(r()-.5)*90,dy:n-o.y+s+40,rotation:(r()-.5)*160,delay:r()*120}}function ca(e,t,n=7){let r=ra(n),i={x:e*1820/1920,y:t*90/1080},a=Math.hypot(e,t),o=(e,t)=>e<1e-8?0:e>t-1e-8?t:e,s=n=>({x:o(n.x,e),y:o(n.y,t)}),c=Array.from({length:20},(e,t)=>((t+(r()-.5)*.35)*X/20+X)%X);for(let[n,r]of[[0,0],[e,0],[e,t],[0,t]])c.push((Math.atan2(r-i.y,n-i.x)+X)%X);c.sort((e,t)=>e-t);let l=[.045,.29,.58].map(n=>n*Math.min(e,t)).map(n=>c.map(a=>{let o=Math.min(n*(.92+r()*.16),ia(i,a,e,t));return s({x:i.x+Math.cos(a)*o,y:i.y+Math.sin(a)*o})}));l.push(c.map(n=>{let r=ia(i,n,e,t);return s({x:i.x+Math.cos(n)*r,y:i.y+Math.sin(n)*r})}));let u=l.map((n,a)=>n.map((o,c)=>{let u=n[(c+1)%n.length],d={x:(o.x+u.x)/2,y:(o.y+u.y)/2},f=Math.hypot(u.x-o.x,u.y-o.y),p=o.x===u.x&&(o.x===0||o.x===e)||o.y===u.y&&(o.y===0||o.y===t),m=a===l.length-1||p?0:(r()-.5)*f*.08,h=Math.atan2(d.y-i.y,d.x-i.x);return[o,s({x:d.x+Math.cos(h)*m,y:d.y+Math.sin(h)*m}),u]})),d=l.slice(1).map((e,t)=>e.map((e,n)=>{let a=l[t][n],o=Math.hypot(e.x-a.x,e.y-a.y),u={x:(a.x+e.x)/2,y:(a.y+e.y)/2},d=(c[n]-c[(n+c.length-1)%c.length]+X)%X,f=(c[(n+1)%c.length]-c[n]+X)%X,p=Math.min(d,f)*Math.hypot(u.x-i.x,u.y-i.y),m=(r()-.5)*Math.min(o*.12,p*.14);return[a,s({x:u.x-Math.sin(c[n])*m,y:u.y+Math.cos(c[n])*m}),e]})),f=[],p=e=>{aa(e)>.01&&f.push({points:e,...sa(e,i,t,r)})};p(u[0].flatMap(e=>e.slice(0,-1)));for(let e=0;e<l.length-1;e++)for(let t=0;t<c.length;t++){let n=(t+1)%c.length;p([...d[e][t],...u[e+1][t].slice(1),...d[e][n].toReversed().slice(1),...u[e][t].toReversed().slice(1)])}let m=Math.max(...f.map(e=>e.distance));for(let e of f)e.delay+=e.distance/m*400;let h=[],g=(e,t,n,r)=>{let i=oa(e);i>.1&&h.push({points:e,length:i,delay:t,duration:n,width:r})};for(let e=0;e<c.length;e++){let t=[i,l[0][e],...d.flatMap(t=>t[e].slice(1))];g(t,0,200+oa(t)/a*1e3,1.1)}for(let e of u.slice(0,-1))for(let t of e)g(t,Math.hypot(t[0].x-i.x,t[0].y-i.y)/a*1e3,220+oa(t)/a*400,.7);for(let n of l[1]){let o=Math.atan2(n.y-i.y,n.x-i.x)+(r()-.5)*1.4,c=Math.min(e,t)*(.07+r()*.12),l=[n];for(let e=1;e<=3;e++)l.push(s({x:n.x+Math.cos(o+(r()-.5)*.3)*c*e/3,y:n.y+Math.sin(o+(r()-.5)*.3)*c*e/3}));g(l,Math.hypot(n.x-i.x,n.y-i.y)/a*1e3+80,220,.5)}return{width:e,height:t,impact:i,pieces:f,cracks:h}}var la=`.screen-crack{position:fixed;inset:0;z-index:2147483646;overflow:hidden;pointer-events:none;user-select:none}.screen-crack-svg{position:absolute;inset:0;width:100%;height:100%;overflow:hidden}.screen-crack-glass{position:absolute;inset:0;backdrop-filter:blur(9px) brightness(1.06) saturate(.85);background:linear-gradient(135deg,#dcebff0f,#dcebff00 55%);mask-mode:luminance;opacity:0}.screen-crack-shard{transform-box:fill-box;transform-origin:center}.screen-crack-outline{opacity:0}.screen-crack-flash{position:absolute;width:18vmin;height:18vmin;border-radius:50%;background:radial-gradient(circle,rgb(255 255 255 / .85),rgb(200 230 255 / .15) 55%,transparent 75%);transform:translate(-50%,-50%);opacity:0}@media print{.screen-crack{display:none}}
8
8
  `,ua=`http://www.w3.org/2000/svg`,da=null;function fa(){da||(da=new CSSStyleSheet,da.replaceSync(la),document.adoptedStyleSheets=[...document.adoptedStyleSheets,da])}var pa=1.5,ma=0;function Z(e,t={}){let n=document.createElementNS(ua,e);for(let[e,r]of Object.entries(t))n.setAttribute(e,String(r));return n}function ha(e){let t=document.createElement(`div`);t.className=`screen-crack`,t.setAttribute(`aria-hidden`,`true`),fa();let n=Z(`svg`,{viewBox:`0 0 ${e.width} ${e.height}`,preserveAspectRatio:`none`});n.classList.add(`screen-crack-svg`);let r=Z(`defs`),i=`screen-crack-mask-${++ma}`,a=Z(`mask`,{id:i,maskUnits:`userSpaceOnUse`,maskContentUnits:`userSpaceOnUse`,x:0,y:0,width:e.width,height:e.height});a.append(Z(`rect`,{width:e.width,height:e.height,fill:`black`})),r.append(a);let o=Z(`g`),s=Z(`g`),c=e.pieces.map(e=>{let t=e.points.map(e=>`${e.x},${e.y}`).join(` `),n=Z(`g`),r=Z(`g`);n.classList.add(`screen-crack-shard`),r.classList.add(`screen-crack-shard`),n.append(Z(`polygon`,{points:t,fill:`white`}));let i=Z(`polygon`,{points:t,fill:`none`,stroke:`rgb(240 248 255 / .8)`,"stroke-width":1.1,"stroke-linejoin":`round`});return i.classList.add(`screen-crack-outline`),r.append(i),a.append(n),s.append(r),{masked:n,outlined:r,outline:i,piece:e}});n.append(r,o,s);let l=document.createElement(`div`);l.className=`screen-crack-glass`;let u=`${document.URL.split(`#`)[0]}#${i}`;l.style.maskImage=`url("${u}")`,l.style.webkitMaskImage=`url("${u}")`;let d=document.createElement(`div`);return d.className=`screen-crack-flash`,d.style.left=`${e.impact.x}px`,d.style.top=`${e.impact.y}px`,t.append(l,n,d),{overlay:t,glass:l,cracks:o,shards:c,flash:d}}function ga(e,t,n){for(let r of t.cracks){let t=r.points.map((e,t)=>`${t===0?`M`:`L`}${e.x} ${e.y}`).join(` `);for(let i of[!0,!1]){let a=Z(`path`,{d:t,fill:`none`,stroke:i?`rgb(0 0 0 / .55)`:`rgb(232 244 255 / .95)`,"stroke-width":r.width+(i?.8:0),"stroke-linecap":`round`,"stroke-linejoin":`round`});i&&a.setAttribute(`transform`,`translate(.5 .7)`),a.style.strokeDasharray=`${r.length} ${r.length}`,a.style.strokeDashoffset=String(r.length),e.append(a),n(a,[{strokeDashoffset:String(r.length)},{strokeDashoffset:`0`}],{duration:r.duration*pa,delay:r.delay*pa,easing:`cubic-bezier(.2,.7,.2,1)`})}}}function _a(e){let t=window.innerHeight,n=window.innerWidth;if(window.matchMedia(`(prefers-reduced-motion: reduce)`).matches||!n||!t||!Element.prototype.animate)return e(),Promise.resolve();let r=ca(n,t),{overlay:i,glass:a,cracks:o,shards:s,flash:c}=ha(r);document.body.append(i);let l=document.timeline.currentTime,u=[],d=(e,t,n)=>{let r=e.animate(t,{fill:`both`,...n});return r.playbackRate=2,r.startTime=l,u.push(r),r},f=!1,p=!1,m=()=>{p||(p=!0,e())},h=()=>{if(!f){f=!0,window.removeEventListener(`resize`,h),window.removeEventListener(`beforeprint`,h),document.removeEventListener(`visibilitychange`,g),i.remove();for(let e of u)e.cancel();m()}},g=()=>{document.hidden&&h()};window.addEventListener(`resize`,h,{once:!0}),window.addEventListener(`beforeprint`,h,{once:!0}),document.addEventListener(`visibilitychange`,g),ga(o,r,d),d(c,[{opacity:0,transform:`translate(-50%, -50%) scale(0)`},{opacity:.85,transform:`translate(-50%, -50%) scale(.8)`,offset:.08},{opacity:0,transform:`translate(-50%, -50%) scale(2.4)`}],{duration:600,easing:`ease-out`}),d(o,[{transform:`translate(0, 0)`},{transform:`translate(-3px, 2px)`},{transform:`translate(3px, -2px)`},{transform:`translate(-2px, -2px)`},{transform:`translate(2px, 2px)`},{transform:`translate(0, 0)`}],{duration:450});let ee=Math.max(...r.cracks.map(e=>e.delay+e.duration))*pa,te=Math.max(500,ee*.8);d(a,[{opacity:0},{opacity:1}],{duration:500,easing:`ease-out`}),d(c,[{visibility:`visible`},{visibility:`visible`}],{duration:1,delay:te-1}).finished.then(m,()=>{}),d(o,[{opacity:1},{opacity:0}],{duration:450,delay:te,easing:`ease-out`});for(let{masked:e,outlined:t,outline:n,piece:r}of s){let i=te+r.delay,a=[{transform:`translate(0, 0) rotate(0deg)`},{transform:`translate(${r.dx}px, ${r.dy}px) rotate(${r.rotation}deg)`}];for(let n of[e,t])d(n,a,{duration:1700,delay:i,easing:`cubic-bezier(.32,0,.82,.94)`});d(n,[{opacity:0},{opacity:1}],{duration:250,delay:i})}return Promise.all(u.map(e=>e.finished)).then(h,h)}var va=`:host{position:absolute;top:.5rem;right:.5rem;z-index:1000;width:30px;height:30px;background:var(--theme-toggle-bg, transparent);color:var(--muted);border:var(--theme-toggle-border, 0);border-radius:var(--ui-radius, 6px);font-size:1rem;line-height:1;font-family:inherit;display:flex;align-items:center;justify-content:center;transition:color .12s,background .12s;cursor:default;user-select:none}:host(:hover){color:var(--text);background:var(--theme-toggle-hover-bg, rgb(from var(--text) r g b / .06))}:host(:focus-visible){outline:2px solid var(--accent);outline-offset:2px}@media print{:host{display:none!important}}@media(display-mode:window-controls-overlay){:host{-webkit-app-region:no-drag;app-region:no-drag}}
9
9
  `,ya=`deepview.theme`,ba=Object.freeze([`dark`,`light`,`green`,`pink`,`w95`,`paper`]),xa=Object.freeze([`dark`,`green`,`pink`,`w95`,`paper`,`light`]),Sa=3,Ca={dark:{base:`#1a1a1b`,dim:`#0a0a0a`},light:{base:`#f6f6fa`,dim:`#646464`},green:{base:`#0a140a`,dim:`#050a05`,sidebar:`#0f1e0f`},pink:{base:`#ffe4ee`,dim:`#a3727f`,sidebar:`#ffe0f0`},w95:{base:`#000080`,dim:`#000033`},paper:{base:`#ffffff`,dim:`#666666`}},wa=window.matchMedia?.(`(display-mode: window-controls-overlay)`),Ta=window.matchMedia?.(`(display-mode: standalone)`),Ea=window.navigator?.windowControlsOverlay,Da={light:`☀`,dark:`☾`,green:`🕶️`,pink:`✿`,w95:`⊞`,paper:`📄`},Oa=`deepview-theme-changed`,Q=`dark`,ka=!1,Aa=0,ja=!1,Ma=!1,Na=0,Pa=0,Fa=!1;function Ia(){if(!ja)return Q===`light`?`dark`:`light`;let e=Fa?xa:xa.filter(e=>e!==`w95`),t=e.includes(Q)?Q:`pink`;return e[(e.indexOf(t)+1)%e.length]}function La(){window.dispatchEvent(new CustomEvent(Oa,{detail:{theme:Q}}))}function Ra(){try{let e=localStorage.getItem(ya);return ba.includes(e)?e:`dark`}catch{return`dark`}}function za(){let e=document.querySelector(`meta[name="theme-color"]`);if(!e)return;let{base:t,dim:n,sidebar:r}=Ca[Q],i=Ea?.visible??wa?.matches??!1,a=(Ta?.matches||wa?.matches)&&!i;e.setAttribute(`content`,ka?n:a&&r?r:t)}function $(e){ba.includes(e)||(e=`dark`),Q=e;for(let e of ba)e!==`dark`&&document.body.classList.remove(`theme-${e}`);e!==`dark`&&document.body.classList.add(`theme-${e}`);try{e===`dark`?localStorage.removeItem(ya):localStorage.setItem(ya,e)}catch{}za(),La()}$(Ra()),wa?.addEventListener(`change`,za),Ta?.addEventListener(`change`,za),Ea?.addEventListener(`geometrychange`,za),window.addEventListener(`beforeprint`,()=>{ka=!0,$(Q)}),window.addEventListener(`afterprint`,()=>{ka=!1,$(Q)});function Ba(e){if(!ba.includes(e))throw TypeError(`unknown theme`);Na++,$(e)}function Va(){return Q}var Ha=class extends B{static properties={_theme:{state:!0}};static styles=L(va);constructor(){super(),this._theme=Q}connectedCallback(){super.connectedCallback(),Y(this,{role:`button`,tabindex:`0`,"aria-label":`toggle theme`}),this.addEventListener(`click`,this._toggle),this.addEventListener(`keydown`,this._onKeydown),window.addEventListener(Oa,this._onThemeChanged),this._onThemeChanged()}disconnectedCallback(){window.removeEventListener(Oa,this._onThemeChanged),this.removeEventListener(`click`,this._toggle),this.removeEventListener(`keydown`,this._onKeydown),super.disconnectedCallback()}_onThemeChanged=()=>{this._theme=Q,this.setAttribute(`aria-disabled`,String(Ma))};_toggle=()=>{if(Ma)return;if(!ja&&++Aa>=8&&Q===`dark`){ja=!0,Ma=!0,La();let e=Na,t=()=>{Na===e&&$(`green`)},n=()=>{Ma=!1,La()};try{_a(t).catch(t).finally(n)}catch{t(),n()}return}let e=Ia();Q===`green`&&e===`pink`&&++Pa>=Sa&&(Fa=!0),$(e)};_onKeydown=e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),e.repeat||this._toggle())};render(){return R`${Da[this._theme]}`}};customElements.define(`theme-toggle`,Ha);var Ua=`:host{display:block}.row{display:grid;grid-template-columns:5.5rem minmax(0,1fr);gap:.2rem .85rem;padding:.25rem .7rem;font-size:.8rem;border-bottom:1px solid var(--border);transition:background .12s}:host(:last-child) .row{border-bottom:none}.row.row-pending{min-height:3rem}:host(:hover) .row{background:rgb(from var(--text) r g b / .04)}:host(.mark-red) .row{background:var(--mark-red-bg)}:host(.mark-blue) .row{background:var(--mark-blue-bg)}:host(.mark-green) .row{background:var(--mark-green-bg)}:host(.mark-gray) .row{background:var(--mark-gray-bg)}:host(.has-conflict) .row{outline:2px dashed var(--accent);outline-offset:-2px}:host(.selected) .row{outline:2px solid var(--accent);outline-offset:-2px}:host(.link-target) .row{animation:link-target-flash 1.6s ease-out}@keyframes link-target-flash{0%,30%{box-shadow:inset 0 0 0 2px var(--accent)}to{box-shadow:inset 0 0 0 2px rgb(from var(--accent) r g b / 0)}}@media(prefers-reduced-motion:reduce){:host(.link-target) .row{animation:none;box-shadow:inset 0 0 0 2px var(--accent)}}:host(:first-of-type) .row{border-top-left-radius:var(--ui-radius, 6px);border-top-right-radius:var(--ui-radius, 6px)}:host(:last-of-type) .row{border-bottom-left-radius:var(--ui-radius, 6px);border-bottom-right-radius:var(--ui-radius, 6px)}.row-score{grid-column:1;grid-row:1 / 3;align-self:center;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.2rem;font-variant-numeric:tabular-nums;.badge{min-width:4.4rem;text-align:center}.row-conf{color:var(--muted);font-size:.72rem;user-select:none;& strong{color:var(--text);font-size:.8rem}}}.row-body{display:contents}.title-row{grid-column:2;grid-row:1;min-width:0;display:flex;align-items:baseline;gap:.5rem;.title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500;user-select:none}.row-type{color:var(--muted);font-size:.68rem;flex-shrink:0}}.meta-row{grid-column:2;grid-row:2;min-width:0;display:flex;align-items:center;gap:.55rem;.row-loc{color:var(--muted);font-size:.72rem;flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;& a{color:inherit;text-decoration:none;cursor:default}& a:hover{color:var(--accent)}}.marks{display:flex;gap:.35rem;align-items:center;min-width:0;margin-left:auto;user-select:none}}.gh-ref-btn{display:inline-flex;align-items:center;position:relative;flex-shrink:0;padding:0 .15rem;color:var(--muted);cursor:default;&:before{content:"";position:absolute;inset:-.25rem -2px}&:hover{color:var(--accent)}&:focus-visible{outline:1px solid var(--accent);outline-offset:1px;border-radius:var(--ui-radius, 2px)}}.tabs-row{grid-column:2;grid-row:3;min-width:0;.tabs{display:flex;gap:.25rem;flex-wrap:wrap}}.badge,.tabs,.tab,.row-type{cursor:default;user-select:none}.line-num{color:var(--muted);font-size:.75rem}.line-num a{color:inherit}@media print{:host(:hover) .row,:host(.mark-red) .row,:host(.mark-blue) .row,:host(.mark-green) .row,:host(.mark-gray) .row{background:transparent!important}:host(.triage-fixed),:host(.triage-invalid),:host(.triage-deleted),:host(.triage-ignored){opacity:1}:host(.selected) .row,:host(.has-conflict) .row{outline:none!important}:host(.link-target) .row{animation:none;box-shadow:none!important}.row{break-inside:avoid}.marks{display:none!important}.badge{-webkit-print-color-adjust:exact;print-color-adjust:exact;&.critical{background:#a30b0f!important;color:#fff!important}&.high{background:#b8400a!important;color:#fff!important}&.medium{background:#855107!important;color:#fff!important}&.low{background:#374151!important;color:#fff!important}&.high_bug{background:#7a3e0c!important;color:#fff!important}&.bug{background:#4d4538!important;color:#fff!important}&.informational{background:#0550ae!important;color:#fff!important}}.badge-orig{background:transparent!important;color:#555!important;border-color:#999!important}.badge-varies{color:#555!important;border-color:#999!important}.badge-arrow,.badge-corr-mark,.badge-pre{color:#555!important}a,.line-num,.line-num a{color:inherit}}
10
10
  `,Wa=`:host(.triage-fixed),:host(.triage-invalid),:host(.triage-deleted),:host(.triage-ignored){opacity:.75}.badge{display:inline-block;font-size:.7rem;font-weight:600;text-transform:uppercase;padding:.15rem .45rem;border-radius:3px;letter-spacing:.03em;line-height:1;&.critical{background:var(--critical);color:#fff}&.high{background:var(--high);color:#fff}&.medium{background:var(--medium);color:#000}&.low{background:var(--low);color:var(--badge-low-text)}&.high_bug{background:var(--high-bug);color:#fff}&.bug{background:var(--bug);color:#fff}&.informational{background:var(--info);color:#fff}}.badge-pair{display:inline-flex;align-items:center;gap:.25rem}.badge-pair-full,.badge-pair-compact{flex-direction:column;gap:.15rem}.badge-orig-wrap{display:inline-flex;align-items:center;gap:.15rem;line-height:1}.badge-arrow,.badge-corr-mark{font-size:.6rem;line-height:1;color:var(--muted)}.badge-arrow.up,.badge-corr-mark.up{color:var(--high)}.badge-pre{font-size:.55rem;text-transform:uppercase;letter-spacing:.03em;color:var(--muted)}.badge-orig{display:inline-block;font-size:.58rem;font-weight:600;text-transform:uppercase;padding:.08rem .3rem;border-radius:3px;letter-spacing:.03em;line-height:1;background:transparent;color:var(--muted);border:1px solid var(--border);&.struck{text-decoration:line-through;text-decoration-thickness:1px}&.critical{border-color:rgb(from var(--critical) r g b / .55)}&.high{border-color:rgb(from var(--high) r g b / .55)}&.medium{border-color:rgb(from var(--medium) r g b / .55)}&.low{border-color:rgb(from var(--low) r g b / .55)}&.high_bug{border-color:rgb(from var(--high-bug) r g b / .55)}&.bug{border-color:rgb(from var(--bug) r g b / .55)}&.informational{border-color:rgb(from var(--info) r g b / .55)}}.badge-varies{font-size:.55rem;font-weight:600;text-transform:uppercase;letter-spacing:.03em;padding:.08rem .3rem;border-radius:3px;line-height:1;background:transparent;color:var(--muted);border:1px dashed var(--border)}.mark-action-group{display:inline-flex;border:1px solid var(--border);border-radius:var(--ui-radius, 3px);background:linear-gradient(var(--surface),var(--surface)),var(--bg);overflow:hidden;margin-right:.25rem;flex-shrink:0}.mark-comment,.mark-fix,.mark-flag,.mark-copy,.mark-link,.mark-issue,.mark-claude{background:transparent;border:0;color:var(--muted);padding:0 .25rem;height:1.4rem;cursor:default;display:inline-flex;align-items:center;justify-content:center;&:not(:last-child){border-right:1px solid var(--border)}&:not(:disabled):hover{color:var(--accent);background:var(--surface-active)}}.mark-issue{text-decoration:none}.mark-comment.has-comment,.mark-fix.has-fix,.mark-flag.flagged{color:var(--accent)}.mark-flag svg{display:block}.mark-copy.copied,.mark-link.copied,.mark-claude.copied{color:var(--green, #4ade80);background:color-mix(in srgb,var(--green, #4ade80) 14%,transparent)}.mark-comment.has-comment .bubble,.mark-fix.has-fix .wrench,.mark-flag.flagged .flag-cloth{fill:var(--accent);fill-opacity:.15}.triage-menu-wrap{position:relative;display:inline-flex;margin-left:.25rem;flex-shrink:0}.mark-triage-menu{cursor:default;background:linear-gradient(var(--surface),var(--surface)),var(--bg);border:1px solid var(--border);color:var(--muted);border-radius:var(--ui-radius, 3px);padding:0 .3rem;height:1.5rem;display:inline-flex;align-items:center;justify-content:center;gap:.25rem;font:inherit}.mark-triage-menu:not(:disabled):hover{color:var(--text);border-color:var(--accent)}.mark-comment:disabled,.mark-fix:disabled,.mark-flag:disabled,.mark-triage-menu:disabled,.triage-menu-item:disabled{opacity:.4}.mark-triage-menu.with-label{padding:0 .35rem 0 .5rem;font-size:.72rem;height:1.5rem}.mark-triage-menu .mark-triage-label{text-transform:uppercase;letter-spacing:.05em;font-weight:600}.mark-triage-menu.triage-state-deleted{border-color:var(--critical);color:var(--critical)}.mark-triage-menu.triage-state-fixed{border-color:var(--green, #4ade80);color:var(--green, #4ade80)}.mark-triage-menu.triage-state-inprogress{border-color:var(--warning, #d97706);color:var(--warning, #d97706)}.mark-triage-menu.triage-state-invalid{border-color:var(--muted);color:var(--text)}.mark-triage-menu.triage-state-ignored{border-color:var(--accent, #2563eb);color:var(--accent, #2563eb)}.triage-menu[popover]{position:fixed;inset:auto;margin:0;min-width:7rem;background:var(--bg);border:1px solid var(--border);border-radius:var(--ui-radius, 4px);padding:.25rem;box-shadow:0 4px 12px #00000040;display:flex;flex-direction:column;gap:1px;-webkit-app-region:no-drag;app-region:no-drag}.triage-menu[popover]:not(:popover-open){display:none}.triage-menu[popover]:popover-open{display:flex}.triage-menu-item{cursor:default;background:transparent;border:0;padding:.35rem .5rem;font-size:.78rem;color:var(--text);text-align:left;border-radius:var(--ui-radius, 3px);font-family:inherit}.triage-menu-item:not(:disabled):hover{background:var(--surface)}.triage-menu-item.active:before{content:"\\2713 ";color:var(--accent)}.triage-menu-inprogress:not(:disabled):hover{color:var(--warning, #d97706)}.triage-menu-fixed:not(:disabled):hover{color:var(--green, #4ade80)}.triage-menu-invalid:not(:disabled):hover{color:var(--muted)}.triage-menu-deleted:not(:disabled):hover{color:var(--critical)}.line-num a:hover{color:var(--accent)}:host-context(body.theme-w95){& *,*:before,*:after{letter-spacing:0!important;text-transform:none!important}.badge{border-radius:0;text-transform:capitalize!important}.mark-action-group{gap:0;overflow:visible;border:0;border-radius:0;background:none}:is(.mark-comment,.mark-fix,.mark-flag,.mark-copy,.mark-link,.mark-issue,.mark-claude,.mark-triage-menu){height:23px;padding:0 6px;border:0;border-radius:0;background:var(--w95-face);color:#000;box-shadow:var(--w95-raised);&:not(:last-child){border-right:0}&:not(:disabled):hover{background:var(--w95-face);color:#000;border-color:transparent}&:not(:disabled):active{box-shadow:var(--w95-pressed)}&:disabled{color:var(--w95-shadow);opacity:1}}.mark-triage-menu .mark-triage-label{font-weight:400}.triage-menu[popover]{border:1px solid #000;border-radius:0;box-shadow:none;background:var(--w95-face)}.triage-menu-item:not(:disabled):hover{background:var(--w95-title);color:#fff}.triage-menu-item.active:before{color:inherit}}
11
11
  `,Ga=`.tab-level-separator{align-self:center;padding-inline:.125rem;color:var(--muted);font-size:.75rem;line-height:1}.tab{--tab-severity: var(--bg);position:relative;display:inline-flex;align-items:center;gap:.35rem;border:1px solid transparent;border-radius:var(--ui-radius, 4px);padding-block:calc(.35rem - .1em);padding-inline:.5rem;min-width:0;font-family:inherit;font-size:.75rem;line-height:1.3;color:var(--text);background:var(--tab-severity);background-image:linear-gradient(135deg,var(--tab-marker, transparent) 50%,var(--tab-marker-shadow, transparent) 50%,transparent 60%);background-size:12px 12px;background-repeat:no-repeat;background-origin:border-box;&.tab-with-confidence{padding-right:1rem;min-width:3.25rem}&.tab-with-analyzer{padding-right:calc(.5rem + 20px)}&.tab-severity-critical{--tab-severity: var(--critical);color:#fff}&.tab-severity-high{--tab-severity: var(--high);color:#fff}&.tab-severity-medium{--tab-severity: var(--medium);color:#000}&.tab-severity-low{--tab-severity: var(--low);color:var(--badge-low-text)}&.tab-severity-high_bug{--tab-severity: var(--high-bug);color:#fff}&.tab-severity-bug{--tab-severity: var(--bug);color:#fff}&.tab-severity-informational{--tab-severity: var(--info);color:#fff}&.tab-mark-red{--tab-marker: var(--marker-red)}&.tab-mark-blue{--tab-marker: var(--marker-blue)}&.tab-mark-green{--tab-marker: var(--marker-green)}&.tab-mark-gray{--tab-marker: var(--marker-gray)}&:is(.tab-mark-red,.tab-mark-blue,.tab-mark-green,.tab-mark-gray){--tab-marker-shadow: rgb(0 0 0 / .3)}&:hover{border-color:var(--muted)}&.active{border-color:var(--text);box-shadow:inset 0 0 0 1px var(--text)}&.active:before{content:"";position:absolute;z-index:1;top:-1px;left:-1px;width:12px;height:12px;border-top-left-radius:inherit;background:var(--tab-marker, transparent);clip-path:polygon(0 0,100% 0,0 100%);pointer-events:none}&.tab-with-analyzer:is(:hover,.active):after{content:"";position:absolute;inset:-1px;border:1px solid var(--muted);border-radius:inherit;pointer-events:none}&.tab-with-analyzer.active:after{border-color:var(--text);box-shadow:inset 0 0 0 1px var(--text)}&.tab-deleted .tab-label{text-decoration:line-through;opacity:.6}&.tab-inprogress .tab-label:after{content:" \\25d0";opacity:.6}&.tab-fixed .tab-label{opacity:.65}&.tab-fixed .tab-label:after{content:" \\2713";opacity:.6}&.tab-invalid .tab-label{opacity:.65}&.tab-invalid .tab-label:after{content:" \\2298";opacity:.6}&.tab-ignored .tab-label{opacity:.55}&.tab-ignored .tab-label:after{content:" \\1f441";opacity:.6;font-size:.7em}.tab-label{display:flex;align-items:center;gap:.35rem;text-align:left}.tab-conf{position:absolute;right:.25rem;bottom:.15rem;font-size:.6rem;line-height:1;color:inherit}.tab-analyzer{position:absolute;inset:-1px -1px -1px auto;width:20px;display:flex;overflow:hidden;border-radius:var(--ui-radius, 0 4px 4px 0);box-shadow:0 0 2px #0003}.tab-analyzer .report-logo{flex:1;border:0}.tab-analyzer svg{display:block}.tab-conf-max{display:none}.tab-severity{display:inline-flex}.badge{padding:0;background:none;color:inherit}.tab-indicators{display:inline-flex;align-items:center;gap:.25rem}.tab-indicators:empty{display:none}.tab-marks{display:inline-flex;align-items:center;gap:.15rem;color:inherit}.tab-marks svg{display:block}.tab-marks :is(.bubble,.wrench,.flag-cloth){fill:currentcolor;fill-opacity:.15}.badge-corr-mark{color:inherit}}
12
12
  `,Ka=`.report-button{display:inline-flex;align-items:center;max-width:16rem;padding:0;overflow:hidden;background:transparent;border:1px solid var(--border);border-radius:var(--ui-radius, 3px);color:var(--muted);font:inherit;font-size:.7rem;text-decoration:none;cursor:default;transition:border-color .12s,color .12s;&:hover{border-color:var(--accent);color:var(--accent)}&:focus-visible{outline:2px solid var(--accent);outline-offset:1px}}.report-button-label{min-width:0;padding:.1rem .4rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
13
13
  `,qa=`a{cursor:default}.finding-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:.25rem 1rem;min-width:0;max-width:100%}.finding-action-controls{display:flex;flex:0 0 auto;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:.35rem;max-width:100%}.finding-actions .report-chip{flex:0 1 auto;width:max-content;min-width:0;max-width:100%;min-height:1.4rem}.finding-actions .report-chip-label{white-space:normal;overflow-wrap:anywhere;text-align:left}
14
- `,Ja=[`is-critical`,`mark-red`,`mark-blue`,`mark-green`,`mark-gray`,`has-conflict`,`triage-inprogress`,`triage-fixed`,`triage-invalid`,`triage-deleted`,`triage-ignored`,`selected`],Ya=class extends k{static properties={group:{attribute:!1},selected:{type:Boolean}};static styles=[L(pt),L(Ka),L(Wa),L(Ua),L(qa),L(Ga)];_near=!1;_watching=!1;constructor(){super(),this.group=null,this.selected=!1}render(){if(!this.group)return R``;if(this.dataset.gid=Ze(this.group),!this._near)return this.classList.toggle(`selected`,this.selected),R`<div class="row row-pending" aria-busy="true"></div>`;let e=new Set(Je(this.group));this.selected&&e.add(`selected`);for(let t of Ja)this.classList.toggle(t,e.has(t));return R`<div class="row">${Xe(this.group)}</div>`}connectedCallback(){super.connectedCallback(),ir(this.renderRoot),this.addEventListener(`click`,this._onClick),this._watching=!0,rt(this,e=>this._onNear(e))}disconnectedCallback(){this.removeEventListener(`click`,this._onClick),this._watching&&=(it(this),!1),super.disconnectedCallback()}_onNear(e){e?(this._watching&&=(it(this),!1),this._near=!0,this.requestUpdate()):this._near&&(this._near=!1,this.requestUpdate())}ensureRendered({sync:e=!1}={}){return this._near||this._onNear(!0),e&&this.isConnected&&this.isUpdatePending&&this.performUpdate(),this.updateComplete}_onClick=e=>{e.composedPath().some(e=>e?.matches?.(`a, button, label`))||this.dataset.gid&&this.dispatchEvent(new CustomEvent(`row-select`,{detail:{gid:this.dataset.gid},bubbles:!0,composed:!0}))}};customElements.define(`finding-row`,Ya);var Xa=`:host{display:block;background:var(--surface);backdrop-filter:var(--glass-blur);border:1px solid var(--border);border-radius:var(--ui-radius, 6px);overflow:hidden;box-shadow:var(--shadow-glass);margin-bottom:1rem;max-width:1200px}@media not print{finding-row{content-visibility:auto;contain-intrinsic-size:auto 3.2rem}}
14
+ `,Ja=[`is-critical`,`mark-red`,`mark-blue`,`mark-green`,`mark-gray`,`has-conflict`,`triage-inprogress`,`triage-fixed`,`triage-invalid`,`triage-deleted`,`triage-ignored`,`selected`],Ya=class extends k{static properties={group:{attribute:!1},selected:{type:Boolean}};static styles=[L(gt),L(Ka),L(Wa),L(Ua),L(qa),L(Ga)];_near=!1;_watching=!1;constructor(){super(),this.group=null,this.selected=!1}render(){if(!this.group)return R``;if(this.dataset.gid=Ze(this.group),!this._near)return this.classList.toggle(`selected`,this.selected),R`<div class="row row-pending" aria-busy="true"></div>`;let e=new Set(Je(this.group));this.selected&&e.add(`selected`);for(let t of Ja)this.classList.toggle(t,e.has(t));return R`<div class="row">${Xe(this.group)}</div>`}connectedCallback(){super.connectedCallback(),ir(this.renderRoot),this.addEventListener(`click`,this._onClick),this._watching=!0,rt(this,e=>this._onNear(e))}disconnectedCallback(){this.removeEventListener(`click`,this._onClick),this._watching&&=(it(this),!1),super.disconnectedCallback()}_onNear(e){e?(this._watching&&=(it(this),!1),this._near=!0,this.requestUpdate()):this._near&&(this._near=!1,this.requestUpdate())}ensureRendered({sync:e=!1}={}){return this._near||this._onNear(!0),e&&this.isConnected&&this.isUpdatePending&&this.performUpdate(),this.updateComplete}_onClick=e=>{e.composedPath().some(e=>e?.matches?.(`a, button, label`))||this.dataset.gid&&this.dispatchEvent(new CustomEvent(`row-select`,{detail:{gid:this.dataset.gid},bubbles:!0,composed:!0}))}};customElements.define(`finding-row`,Ya);var Xa=`:host{display:block;background:var(--surface);backdrop-filter:var(--glass-blur);border:1px solid var(--border);border-radius:var(--ui-radius, 6px);overflow:hidden;box-shadow:var(--shadow-glass);margin-bottom:1rem;max-width:1200px}@media not print{finding-row{content-visibility:auto;contain-intrinsic-size:auto 3.2rem}}
15
15
  `,Za=class extends B{static properties={items:{attribute:!1},selectedGid:{attribute:!1}};static styles=L(Xa);constructor(){super(),this.items=[],this.selectedGid=null}render(){return R`${fr(this.items??[],e=>Ze(e),e=>R`<finding-row .group="${e}" ?selected="${Ze(e)===this.selectedGid}"></finding-row>`)}`}};customElements.define(`finding-table`,Za);var Qa=`:host{display:block}:host(.hidden){display:none}:host([lazy]:not(.content-ready)){visibility:hidden}.card{padding:.5rem .75rem;padding-bottom:var(--finding-card-pad-bottom, .5rem);border-bottom:1px solid var(--border);font-size:.875rem;display:var(--finding-card-display, block);flex-direction:column;flex:1}:host(:last-child) .card{border-bottom:none}.card.card-pending{min-height:8rem}:host(.has-conflict) .card{outline:2px dashed var(--accent);outline-offset:-2px}:host(.has-conflict[popup][context="kanban-detail"]) .card{outline:none}:host(.link-target) .card{animation:link-target-flash 1.6s ease-out}@keyframes link-target-flash{0%,30%{box-shadow:inset 0 0 0 2px var(--accent)}to{box-shadow:inset 0 0 0 2px rgb(from var(--accent) r g b / 0)}}@media(prefers-reduced-motion:reduce){:host(.link-target) .card{animation:none;box-shadow:inset 0 0 0 2px var(--accent)}}:host([in-group]) .line-row{display:none}@media not print{:host([in-group]) .line-row+*{margin-top:0}:host([in-group]) .line-row+:is(.conf-reason,.revalidate-verdict,.severity-reason){padding-top:0;border-top:0}}.tabs{display:flex;gap:.25rem;flex-wrap:wrap}.marks-left{display:flex;align-items:center;gap:.5rem;margin-right:auto;flex-wrap:wrap}.commit-ref{color:var(--muted);font-size:.8rem;& a{color:var(--accent);font-family:ui-monospace,SFMono-Regular,Menlo,monospace}& a:hover{text-decoration:underline}& span{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}}.marks-commit-row{margin-top:.4rem;padding-left:4.75rem}.tab-body{display:none;grid-template-columns:auto 1fr;gap:.25rem .75rem;&.active{display:grid}}.tab-body>:not(.finding-left){min-width:0;overflow-wrap:break-word}.desc-title{grid-column:2;font-size:1.08em;font-weight:600;letter-spacing:-.005em;line-height:1.35;color:var(--text)}.desc{grid-column:2;white-space:pre-wrap;font-size:.96em;line-height:1.6;color:rgb(from var(--text) r g b / .82);margin-top:.4rem}.section,.evidence,.recommendation{grid-column:2;margin-top:.55rem;font-size:.92em}.section-label{display:flex;align-items:center;gap:.3rem;color:var(--muted);font-weight:600;font-size:.62rem;text-transform:uppercase;letter-spacing:.06em;&:before{content:"";flex:none;width:2px;height:.58rem;margin-left:calc((2px + .3rem)*-1);border-radius:1px;background:currentcolor;opacity:.75;-webkit-print-color-adjust:exact;print-color-adjust:exact}}.code-preview-btn{display:inline-flex;align-items:center;margin-left:.35rem;padding:0 .15rem;border:0;background:transparent;color:var(--muted);vertical-align:-2px;&.open{color:var(--accent)}}.gh-ref-btn{display:inline-flex;align-items:center;margin-left:.25rem;padding:0 .15rem;color:var(--muted);vertical-align:-2px}:is(.code-preview-btn,.gh-ref-btn){position:relative;&:before{content:"";position:absolute;inset:-.25rem -2px}&:hover{color:var(--accent)}&:focus-visible{outline:1px solid var(--accent);outline-offset:1px;border-radius:var(--ui-radius, 2px)}}.code-preview-tip{position:absolute;z-index:20;top:100%;left:0;margin-top:.3rem;width:max-content;max-width:min(100%,46rem);visibility:hidden;filter:drop-shadow(0 2px 6px rgb(0 0 0 / .35));background:var(--bg);border-radius:var(--ui-radius, 4px);.code-preview{margin:0}}:is(.line-row,.evidence-list li):has(.code-preview-btn:is(:hover,:focus-visible))>.code-preview-tip{visibility:visible}.code-preview{margin:.3rem 0 .1rem;border:1px solid var(--border);border-radius:var(--ui-radius, 4px);background:var(--surface);backdrop-filter:var(--glass-blur);max-height:calc(10lh + .7rem);overflow:auto;display:flex;align-items:flex-start;white-space:normal;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.75rem;line-height:1.5}.code-preview-pending{display:block;padding:.35rem .5rem;color:var(--muted);font-style:italic}.code-preview-gutter{flex:none;padding:.35rem .45rem .35rem .5rem;border-right:1px solid var(--border);color:var(--muted);text-align:right;user-select:none;position:sticky;left:0;z-index:1;background-color:var(--bg);background-image:linear-gradient(rgb(from var(--text) r g b / .03),rgb(from var(--text) r g b / .03)),linear-gradient(var(--surface),var(--surface));.code-preview-lineno{width:var(--lineno-width, 3ch);opacity:.7}.cited{opacity:1;color:var(--accent);font-weight:600}}.code-preview-source{margin:0;padding:.35rem .6rem;white-space:pre;color:var(--text);font:inherit;& code{font:inherit}}summary.section-label{cursor:default;list-style:none;&::-webkit-details-marker{display:none}&:after{content:"";flex:none;width:.3rem;height:.3rem;margin-left:.05rem;border-right:1.5px solid currentcolor;border-bottom:1.5px solid currentcolor;transform:translateY(-1px) rotate(-45deg);transition:transform .12s;opacity:.8}}details[open]>summary.section-label:after{transform:translateY(-2px) rotate(45deg)}.evidence-count{font-weight:500;opacity:.8}.section-body{white-space:pre-wrap;line-height:1.55;color:rgb(from var(--text) r g b / .82);margin-top:.1rem}.para+.para{margin-top:.5lh}.md-list{margin:0;padding-inline-start:1.2em}.md-list li+li{margin-top:.25lh}.para+.md-list,.md-list+.para,.md-list+.md-list{margin-top:.5lh}.md-list li::marker{color:rgb(from currentcolor r g b / .45)}.md-list li.md-task{list-style:none;position:relative}.md-task>input{position:absolute;inset-inline-start:-1.2em;top:calc((1lh - .9em)/2);width:.9em;height:.9em;margin:0;font:inherit}.md-heading{font-weight:600}.md-heading:is([aria-level="1"],[aria-level="2"]){font-size:1.15em}.md-heading:not(:first-child){margin-top:.75lh}.md-heading+*{margin-top:.25lh}.md-rule{margin:.75lh 0;border:0;border-top:1px solid var(--border)}.recommendation .section-label,.recommendation .section-body{color:var(--green)}.conf-reason,.revalidate-verdict{grid-column:2;white-space:pre-wrap;font-size:.92em;font-style:italic;color:var(--muted);margin-top:.6rem;padding-top:.55rem;border-top:1px dashed var(--border)}.revalidate-stamp{display:inline-block;margin-top:.1rem;font-size:.55rem;font-weight:600;line-height:1;text-transform:uppercase;letter-spacing:.03em;padding:.14rem .3rem;border-radius:3px;background:transparent;color:var(--muted);border:1px solid var(--border);white-space:nowrap;&.confirmed{color:var(--critical);border-color:rgb(from var(--critical) r g b / .55)}&.partial{color:var(--yellow);border-color:rgb(from var(--yellow) r g b / .55)}&.unknown{color:var(--warning);border-color:rgb(from var(--warning) r g b / .55)}}.evidence-list{margin:.25rem 0 0;padding-left:1.6rem;display:flex;flex-direction:column;gap:.15rem;>li{position:relative}& li::marker{color:var(--muted);font-size:.9em}>li.current:before{content:"";position:absolute;left:-1.5rem;top:.58em;width:.35rem;height:.35rem;border-radius:50%;background:var(--accent)}>li.current::marker{color:var(--accent)}& li:has(.evidence-note):not(:last-child){margin-bottom:.3rem}}.evidence-ref{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.92em;overflow-wrap:anywhere;color:var(--accent);text-decoration:none;&:is(a,[role=link]):hover{text-decoration:underline}&:focus-visible{outline:1px solid var(--accent);outline-offset:1px;border-radius:var(--ui-radius, 2px)}}:is(.line-num a,.evidence-ref,.gh-ref-btn){cursor:default}span.evidence-ref:not([role]){color:var(--muted)}.evidence-note{white-space:pre-wrap;line-height:1.5;color:rgb(from var(--text) r g b / .78);margin-top:.1rem}.desc-title a,.desc a,.section-body a,.conf-reason a,.revalidate-verdict a{color:var(--accent);text-decoration:none;&:hover{text-decoration:underline}}.inline-quote{background:rgb(from var(--accent) r g b / .1);padding:1px;border-radius:3px;color:var(--text)}.inline-code{background:var(--surface-active);border-radius:3px;border:1px solid var(--border);padding:0 .25em;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.9em;color:var(--text)}.code-block:not(.token){white-space:normal;margin:.5rem 0;border:1px solid var(--border);border-radius:var(--ui-radius, 4px);background:rgb(from var(--text) r g b / .05);overflow:hidden;width:fit-content;max-width:100%;.code-block-lang{padding:.15rem .5rem;border-bottom:1px solid var(--border);color:var(--muted);font-size:.62rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em}& pre{margin:0;padding:.45rem .6rem;overflow-x:auto;white-space:pre;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.85em;line-height:1.5;color:var(--text)}& code{font:inherit}}.line-row{display:flex;justify-content:space-between;align-items:baseline;gap:.5rem;flex-wrap:wrap;padding-right:var(--finding-line-end-inset, 0);position:relative}.run-meta{color:var(--muted);font-size:.65rem}.finding-code-btn{display:inline-block;margin-top:.35rem;padding:.1rem .45rem;background:transparent;border:1px solid var(--border);border-radius:var(--ui-radius, 999px);color:var(--muted);font:inherit;font-size:.65rem;font-weight:500;white-space:nowrap}.finding-code-btn:hover{border-color:var(--accent);color:var(--accent)}.marks{display:flex;gap:.35rem;justify-content:flex-end;margin-top:.4rem;align-items:center;position:var(--finding-marks-position, static);bottom:0;background:var(--finding-marks-bg, transparent);padding-bottom:var(--finding-marks-pad-bottom, 0);padding-left:4.75rem;user-select:none}.finding-left{align-self:start;text-align:center;min-width:4rem;padding-top:var(--finding-left-inset, 0);position:var(--finding-left-position, relative);top:var(--finding-mark-sticky-top, 0);.value-label:last-child{margin-bottom:0}}:host(:not([popup])) .finding-left{padding-top:calc(var(--finding-left-inset, 0px) + 2px)}.conf-score{font-size:.75rem;color:var(--muted);margin-top:.3rem;& strong{color:var(--text);font-size:.85rem}}.conf-ring{--col: var(--muted);position:relative;width:3rem;height:3rem;margin:.7rem auto .15rem;display:flex;align-items:center;justify-content:center;& svg{position:absolute;inset:0;width:100%;height:100%;transform:rotate(-90deg)}& circle{fill:none;stroke-width:4}.conf-ring-track{stroke:var(--border)}.conf-ring-arc{stroke:var(--col);stroke-linecap:round}& span{position:relative;z-index:1;font-size:.8rem;font-weight:700;color:var(--text);font-variant-numeric:tabular-nums}& small{font-size:.55rem;color:var(--muted);font-weight:500}&.critical{--col: var(--critical)}&.high{--col: var(--high)}&.medium{--col: var(--medium)}&.low{--col: var(--low)}&.high_bug{--col: var(--high-bug)}&.bug{--col: var(--bug)}&.informational{--col: var(--info)}}.value-label{display:block;font-size:.45rem;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin-top:.1rem;margin-bottom:.3rem;font-weight:500}.print-case-label{display:none}.badge,.tabs,.tab,.value-label,.run-meta,.conf-ring{cursor:default;user-select:none}.severity-reason{margin-top:.4rem;padding-top:.35rem;border-top:1px dashed var(--border);font-size:.82em;font-style:italic;color:var(--muted)}.severity-reason-label{font-style:normal;font-weight:600;text-transform:uppercase;font-size:.85em;letter-spacing:.04em;margin-right:.35rem}.duplicates-block .file-icon{flex-shrink:0}:host([context="focus"]) .triage-menu-wrap>.mark-triage-menu{display:none}:host([context="focus"]) .triage-menu-wrap{display:inline-flex}:host([context="focus"]) .triage-menu[popover]{position:static;inset:auto;display:inline-flex!important;flex-flow:row wrap;margin:0;padding:0;background:transparent;border:0;border-radius:0;box-shadow:none;min-width:0;gap:.25rem}:host([context="focus"]) .triage-menu-item{background:transparent;border:1px solid var(--border);padding:.2rem .5rem;border-radius:var(--ui-radius, 3px);font-size:.72rem;font-weight:500;text-transform:uppercase;letter-spacing:.04em}:host([context="focus"]) .triage-menu-item.active{background:rgb(from var(--accent) r g b / .12);border-color:var(--accent);color:var(--accent)}:host([context="focus"]) .triage-menu-item:not(:disabled):hover{background:var(--surface-active)}:host([context="focus"]) .triage-menu-inprogress.active{background:rgb(from var(--warning, #d97706) r g b / .12);border-color:var(--warning, #d97706);color:var(--warning, #d97706)}:host([context="focus"]) .triage-menu-fixed.active{background:rgb(from var(--green, #4ade80) r g b / .12);border-color:var(--green, #4ade80);color:var(--green, #4ade80)}:host([context="focus"]) .triage-menu-deleted.active{background:rgb(from var(--critical) r g b / .12);border-color:var(--critical);color:var(--critical)}:host([context="focus"]) .triage-menu-item.active:before{content:"";margin:0}:host([context="focus"]) .marks{gap:.5rem;margin-top:var(--finding-marks-margin-top, .65rem);padding-left:0;padding-top:.55rem;border-top:1px solid var(--border);flex-wrap:wrap}:host([context="focus"]) .marks-commit-row{padding-left:0}:host([context="focus"]) .mark-comment,:host([context="focus"]) .mark-fix,:host([context="focus"]) .mark-flag,:host([context="focus"]) .mark-copy,:host([context="focus"]) .mark-link,:host([context="focus"]) .mark-issue,:host([context="focus"]) .mark-claude{height:1.75rem;padding:0 .55rem;gap:.35rem;display:inline-flex;align-items:center;font-size:.72rem}:host([context="focus"]) .mark-btn-label{color:inherit;font-weight:500;letter-spacing:.02em}.finding-top-marks{position:absolute;top:calc(var(--finding-left-inset, 0px) - var(--finding-mark-inset, .5rem));left:calc(.75rem - var(--finding-mark-inset, .5rem));display:grid;grid-template-columns:24px 12px;column-gap:31px;&.color-red{color:var(--marker-red)}&.color-blue{color:var(--marker-blue)}&.color-green{color:var(--marker-green)}&.color-gray{color:var(--marker-gray)}}.finding-color-mark{grid-column:1;display:block;width:24px;height:12px;border-radius:var(--ui-radius, 0 0 6px 6px);background:currentcolor;box-shadow:inset 0 0 0 1px rgb(from var(--text) r g b / .15)}.finding-bookmark-mark{grid-column:2;display:block;width:12px;height:12px;background:var(--bookmark-color);clip-path:polygon(0 0,100% 0,100% 100%,50% 75%,0 100%)}:host(:not([popup])) :is(.finding-color-mark,.finding-bookmark-mark){height:10px}.comment-block,.fix-block{margin-top:.5rem;padding:.35rem .55rem;border-left:3px solid var(--accent);background:rgb(from var(--accent) r g b / .08);border-radius:var(--ui-radius, 0 4px 4px 0);font-size:.82rem;color:var(--text)}.comment-block{white-space:pre-wrap;& a{color:var(--accent);text-decoration:none}& a:hover{text-decoration:underline}& a.comment-self-ref{text-decoration:underline dotted;text-underline-offset:2px}& a.comment-self-ref:hover{text-decoration:underline solid}}.comment-block:has(.managed-comment){white-space:normal}.fix-block{word-break:break-all;& a{color:var(--accent);text-decoration:none}& a:hover{text-decoration:underline}}.fix-block:has(managed-fix-link){display:flex;align-items:center;gap:.6rem;padding:.45rem .65rem;border:1px solid var(--border);border-radius:var(--ui-radius, 6px);background:rgb(from var(--muted) r g b / .04);word-break:normal;.fix-label{flex:none;font-size:.75rem;font-weight:500}& managed-fix-link{flex:1;min-width:0}}.duplicates-block{display:flex;align-items:baseline;flex-wrap:wrap;gap:.1rem .4rem;margin-top:.5rem;padding:.35rem .55rem;border-left:3px solid var(--muted);background:rgb(from var(--muted) r g b / .1);border-radius:var(--ui-radius, 0 4px 4px 0);font-size:.82rem;color:var(--text);.duplicates-label{color:var(--muted);font-weight:600}& a.duplicate-ref{display:inline-flex;align-items:center;gap:.25rem;color:var(--accent);text-decoration:none}& a.duplicate-ref .duplicate-ref-id{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.78rem;text-decoration:underline dotted;text-underline-offset:2px}& a.duplicate-ref:hover .duplicate-ref-id{text-decoration:underline solid}}.comment-label,.fix-label{color:var(--muted);font-weight:600;margin-right:.35rem}.line-num{color:var(--muted);font-size:.8rem}.line-num a{color:inherit;text-decoration:none}.npm-link{display:inline-block;padding:0 .4rem;border:1px solid var(--border);border-radius:var(--ui-radius, 3px);font-size:.72rem;font-weight:500;color:var(--muted);text-decoration:none}.npm-link:hover{border-color:var(--accent);color:var(--accent)}@media print{.card{break-inside:var(--finding-print-break, avoid);box-decoration-break:clone;padding:.45rem .25rem}.finding-code-btn,.mark-copy,.mark-link,.mark-issue,.mark-claude{display:none!important}.npm-link{border:0;padding:0}:host(.triage-fixed),:host(.triage-invalid),:host(.triage-deleted),:host(.triage-ignored){opacity:1}:host(.link-target) .card{animation:none;box-shadow:none!important}:host(.multi-case) .card:before{content:"Multiple reports of one finding";display:block;font-size:.7rem;font-weight:700;color:#555;text-transform:uppercase;letter-spacing:.06em;border-bottom:1px solid #bbb;padding-bottom:.2rem;margin-bottom:.35rem;-webkit-print-color-adjust:exact;print-color-adjust:exact}.marks,.tabs{display:none!important}.tab-body{display:grid!important;break-inside:var(--finding-print-break, avoid)}:host(.multi-case) .tab-body{break-inside:auto}:host(.multi-case) .tab-body+.tab-body{break-inside:avoid}.tab-body+.tab-body{margin-top:.5rem;padding-top:.5rem;border-top:1px dashed #999}:host([print-one-sample]) .tab-body:not(.active),:host([print-one-sample]) .print-case-label,:host([print-one-sample]) .card:before{display:none!important}:host([print-one-sample]) .tab-body.active{margin-top:0;padding-top:0;border-top:0;break-inside:var(--finding-print-break, avoid)}.finding-body{display:flex;flex-direction:column;>*{flex-shrink:0}}.line-row,.desc-title,.conf-reason,.severity-reason{break-inside:avoid}.section-label{break-after:avoid}.desc,.section-body{orphans:2;widows:2}.section,.recommendation,.evidence{break-inside:avoid}.evidence{order:99}.evidence>summary{break-after:avoid}.evidence-list>li{break-inside:avoid}:host([in-group].multi-case:not([print-one-sample])) .tab-body .line-row{display:flex}:host([in-group]:is(:not(.multi-case),[print-one-sample])) .line-row+*{margin-top:0}:host([in-group]:is(:not(.multi-case),[print-one-sample])) .line-row+.conf-reason{padding-top:0;border-top:0}.line-row .discovered-in{flex-basis:100%;order:99}.print-case-label{display:block;grid-column:1 / -1;break-after:avoid;font-size:.65rem;font-weight:600;color:#555;background:#eee;padding:.1rem .35rem;border-radius:3px;margin-bottom:.25rem;letter-spacing:.04em;-webkit-print-color-adjust:exact;print-color-adjust:exact}.value-label{color:#777}.badge{-webkit-print-color-adjust:exact;print-color-adjust:exact;&.critical{background:#a30b0f!important;color:#fff!important}&.high{background:#b8400a!important;color:#fff!important}&.medium{background:#855107!important;color:#fff!important}&.low{background:#374151!important;color:#fff!important}&.high_bug{background:#7a3e0c!important;color:#fff!important}&.bug{background:#4d4538!important;color:#fff!important}&.informational{background:#0550ae!important;color:#fff!important}}.badge-orig{background:transparent!important;color:#555!important;border-color:#999!important}.badge-varies,.revalidate-stamp{color:#555!important;border-color:#999!important}.badge-arrow,.badge-corr-mark,.badge-pre,.severity-reason{color:#555!important}a,.line-num,.line-num a,.desc-title a,.desc a,.section-body a,.conf-reason a,.revalidate-verdict a,.evidence-ref{color:inherit}details:not([open])>:not(summary){display:block}details::details-content{content-visibility:visible}summary.section-label{cursor:default;&:after{display:none}}.code-preview-btn,.gh-ref-btn{display:none}.inline-code{border:0;background:transparent}.code-block:not(.token){background:transparent;border-color:#bbb;.code-block-lang{color:#555;border-bottom-color:#bbb}& pre{white-space:pre-wrap;overflow:visible}.token{color:#333!important}.token.comment,.token.prolog,.token.cdata{color:#666!important}}}:host-context(body.theme-w95){&:host([context="focus"]) .triage-menu-item{min-height:23px;padding:0 8px;border:0;border-radius:0;background:var(--w95-face);color:#000;box-shadow:var(--w95-raised);font-size:11px;font-weight:400;&.active{border-color:transparent;background:var(--w95-dither);color:#000;box-shadow:var(--w95-pressed)}&:not(:disabled):hover{background:var(--w95-face)}}:is(.code-preview-btn,.gh-ref-btn,.finding-code-btn){border:0;border-radius:0;background:var(--w95-face);color:#000;box-shadow:var(--w95-raised)}.code-block:not(.token){padding:2px;border:0;border-radius:0;background:#fff;box-shadow:var(--w95-sunken);.code-block-lang{padding:1px 6px;border-bottom:0;background:var(--w95-face);color:#000;box-shadow:var(--w95-raised);font-size:11px;font-weight:400}}}:host-context(body.theme-w95) *{overscroll-behavior:none}
16
- `,$a=[`finding`,`is-critical`,`mark-red`,`mark-blue`,`mark-green`,`mark-gray`,`has-conflict`,`triage-inprogress`,`triage-fixed`,`triage-invalid`,`triage-deleted`,`triage-ignored`,`multi-case`],eo=class extends k{static properties={group:{attribute:!1},inGroup:{type:Boolean,attribute:`in-group`,reflect:!0},context:{type:String,reflect:!0},lazy:{type:Boolean}};static styles=[L(pt),L(Ka),L(Wa),L(Qa),L(qa),L(Ga),L(e),L(a)];_near=!1;_watched=null;constructor(){super(),this.group=null,this.inGroup=!1,this.context=null,this.lazy=!1}render(){if(!this.group)return R``;if(this.dataset.gid=Ze(this.group),this.lazy&&!this._near)return this.classList.add(`finding`),R`<div class="card card-pending" aria-busy="true"></div>`;let e=new Set(He(this.group));for(let t of $a)this.classList.toggle(t,e.has(t));return R`<div class="card">${Ge(this.group,{context:this.context})}</div>`}updated(){this.classList.toggle(`content-ready`,!!this.group&&(!this.lazy||this._near));for(let e of this.renderRoot.querySelectorAll(`.code-preview`)){let t=e.dataset.revealedTo;if(t!==void 0&&Math.round(e.scrollTop)!==Number(t))continue;let n=e.querySelectorAll(`.code-preview-lineno.cited`);n.length!==0&&(On(e,n),e.dataset.revealedTo=String(Math.round(e.scrollTop)))}}connectedCallback(){if(super.connectedCallback(),ir(this.renderRoot),this.lazy){this._watched=this.closest(`.flat-group`)??this,rt(this._watched,e=>this._onNear(e));return}this.hasUpdated&&this.requestUpdate()}disconnectedCallback(){this._watched&&=(it(this._watched),null),super.disconnectedCallback()}_onNear(e){e?(this._watched&&=(it(this._watched),null),this._near=!0,this.requestUpdate()):this._near&&(this._near=!1,this.requestUpdate())}ensureRendered({sync:e=!1}={}){return this.lazy&&!this._near&&this._onNear(!0),e&&this.isConnected&&this.isUpdatePending&&this.performUpdate(),this.updateComplete}};customElements.define(`finding-card`,eo);var to=48,no=4;function ro(e,t){let n=new Float64Array(e+1);for(let r=0;r<e;r++)n[r+1]=n[r]+t(r);return n}function io(e,t){let n=0,r=e.length-2;for(;n<r;){let i=n+r>>1;e[i+1]>t?r=i:n=i+1}return Math.max(0,n)}function ao(e,t,n){let r=e.length-1;return r===0?{from:0,to:0}:{from:io(e,t-n),to:Math.min(r,io(e,t+2*n)+1)}}function oo(e,t,n,r){return e[t]<n?e[t]:e[t+1]>n+r?Math.min(e[t],e[t+1]-r):n}var so=class extends B{static properties={items:{attribute:!1},activeKey:{attribute:!1},keyOf:{attribute:!1},renderItem:{attribute:!1}};constructor(){super(),this.items=[],this.activeKey=null,this.keyOf=e=>e,this.renderItem=()=>z,this._heights=new Map,this._total=0,this._keys=new WeakMap,this._version=0,this._tops=null,this._range={from:0,to:0},this._hold=null,this._goal=null,this._carried=null,this._reveal=!1,this._passes=0,this.addEventListener(`scroll`,()=>{!this.isUpdatePending&&!this._covers()&&this.requestUpdate()},{passive:!0})}createRenderRoot(){return this}connectedCallback(){super.connectedCallback(),this._resizes=new ResizeObserver(()=>{!this.isUpdatePending&&(this._reveal||!this._covers())&&this.requestUpdate()}),this._resizes.observe(this),this._themes=new AbortController,globalThis.addEventListener(`deepview-theme-changed`,()=>this._forgetHeights(),{signal:this._themes.signal})}disconnectedCallback(){super.disconnectedCallback(),this._resizes?.disconnect(),this._themes?.abort()}_forgetHeights(){this._carried??=this._holdOf(this.items,this.scrollTop),this._heights.clear(),this._total=0,this._version++,this.requestUpdate()}_keysOf(e){let t=this._keys.get(e);return t||this._keys.set(e,t=e.map(e=>this.keyOf(e))),t}_topsOf(e){let t=this._tops;if(t?.list===e&&t.version===this._version)return t.tops;let n=this._keysOf(e),r=this._heights.size>0?this._total/this._heights.size:to,i=ro(e.length,e=>this._heights.get(n[e])??r);return this._tops={list:e,version:this._version,tops:i},i}_viewHeight(){let e=getComputedStyle(this);return Math.max(0,this.clientHeight-parseFloat(e.paddingTop)-parseFloat(e.paddingBottom))}_covers(){let e=this._topsOf(this.items),{from:t,to:n}=this._range,r=this.scrollTop;return io(e,r)>=t&&(n>=this.items.length||io(e,r+this._viewHeight())<n)}_holdOf(e,t){if(e.length===0)return null;let n=this._topsOf(e),r=io(n,t);return{key:this._keysOf(e)[r],index:r,offset:n[r]-t}}_heldTop(e){let t=this._hold;if(!t)return null;let n=this._keysOf(this.items),r=n[t.index]===t.key?t.index:n.indexOf(t.key);return r<0?null:e[r]-t.offset}willUpdate(e){e.has(`activeKey`)&&(this._reveal=!0);let t=this.scrollTop,n=this._viewHeight();if(this._hold=this._carried??this._holdOf(e.get(`items`)??this.items,t),this._carried=null,this._goal=null,this._reveal&&n>0){this._reveal=!1;let e=this._keysOf(this.items).indexOf(this.activeKey);e>=0&&(this._goal={index:e,from:t})}let r=this._topsOf(this.items),i=this._goal?oo(r,this._goal.index,t,n):this._heldTop(r)??t;this._range=ao(r,i,n)}render(){let{from:e,to:t}=this._range;return R`<div class="kanban-rail-spacer" aria-hidden="true"></div>${fr(this.items.slice(e,t),this.keyOf,this.renderItem)}<div class="kanban-rail-spacer" aria-hidden="true"></div>`}updated(){if(this.clientHeight===0)return;let e=this._viewHeight(),{from:t,to:n}=this._range,r=[...this.children],i=this._keysOf(this.items),a=r[1].getBoundingClientRect().top;for(let e=t;e<n;e++){let n=r[e-t+2].getBoundingClientRect().top,o=this._heights.get(i[e]);o!==n-a&&(this._total+=n-a-(o??0),this._heights.set(i[e],n-a),this._version++),a=n}let o=this._topsOf(this.items);r[0].style.height=`${o[t]}px`,r.at(-1).style.height=`${o[this.items.length]-o[n]}px`;let s=this._goal?oo(o,this._goal.index,this._goal.from,e):this._heldTop(o);s!==null&&Math.abs(this.scrollTop-s)>=1&&(this.scrollTop=s),this._covers()||++this._passes>=no?this._passes=0:this.requestUpdate()}};customElements.define(`kanban-rail`,so);var co=`:host{display:inline-flex;gap:4px;align-items:center;flex-shrink:0}button{width:14px;height:14px;user-select:none;padding:0;background:transparent;border:1.5px solid currentcolor;border-radius:var(--ui-radius, 50%);opacity:.55;transition:opacity .12s,transform .12s}button:not(:disabled):hover{opacity:1;transform:scale(1.12)}button:disabled{opacity:.25}button.active{background:currentcolor;opacity:1;box-shadow:0 0 0 2px var(--surface),0 0 0 3px currentcolor}.color-red{color:var(--marker-red)}.color-blue{color:var(--marker-blue)}.color-green{color:var(--marker-green)}.color-gray{color:var(--marker-gray)}
17
- `,lo=[`red`,`blue`,`green`,`gray`],uo=class extends B{static properties={selected:{type:String},disabled:{type:Boolean}};static styles=L(co);constructor(){super(),this.selected=null,this.disabled=!1}render(){return R`${lo.map(e=>R`<button type="button" class="${`color-${e}${this.selected===e?` active`:``}`}" data-color="${e}" aria-label="${`mark ${e}`}" ?disabled="${this.disabled}" @click="${this._onClick}"></button>`)}`}_onClick=e=>{if(this.disabled)return;let t=e.currentTarget.dataset.color;this.dispatchEvent(new CustomEvent(`mark-color`,{detail:{color:t},bubbles:!0,composed:!0}))}};customElements.define(`color-marker`,uo);var fo=class extends k{static properties={rangeDisabled:{type:Boolean,attribute:`range-disabled`},revalidateOptions:{attribute:!1},hasPartial:{type:Boolean,attribute:`has-partial`}};createRenderRoot(){return this}constructor(){super(),this.rangeDisabled=!1,this.revalidateOptions=[],this.hasPartial=!1}render(){let e=A.filterConfMin,t=A.filterConfMax,n=this.revalidateOptions??[],r=this.rangeDisabled,i=n.length>0&&!!A.filterRevalidate,a=r?`No confidence range: some findings on screen carry no confidence score`:z;return R`<span class="${P({"conf-range-label":!0,replaced:i,disabled:r})}" data-tooltip="${a}">Confidence</span> <span class="${P({"conf-range":!0,replaced:i,disabled:r})}" ?inert="${r||i}"><range-slider id="conf-range" min="0" max="10" step="1" low="${e}" high="${t}" aria-label="Confidence range"></range-slider><conf-range-mirror id="conf-range-vals" class="conf-vals" for="conf-range" .low="${e}" .high="${t}"></conf-range-mirror></span>${n.length>0?R`<revalidate-filter class="${P({replaces:i})}" .options="${n}" ?has-partial="${this.hasPartial}"></revalidate-filter>`:z}`}};customElements.define(`conf-filter`,fo);var po={files:`Filter files…`,code:`Search code…`,issues:`Search issues…`,largest:`Filter largest files…`},mo={files:`Filter files`,code:`Search code`,issues:`Search issues`,largest:`Largest files`},ho=R`<svg class="bundle-code-search-icon" viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><circle cx="6.5" cy="6.5" r="4.5"/><path d="M9.7 9.7L13 13" stroke-linecap="round"/></svg>`,go={files:Ne,code:Ie,issues:R`<svg viewBox="0 0 16 16" width="13" height="13" fill="none" stroke="currentColor" stroke-width="1.3" aria-hidden="true"><circle cx="8" cy="8" r="6"/><path d="M8 4.8v3.6" stroke-linecap="round"/><circle cx="8" cy="11" r=".7" fill="currentColor" stroke="none"/></svg>`,largest:R`<svg viewBox="0 0 16 16" width="13" height="13" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" aria-hidden="true"><path d="M2.5 4h11M2.5 8h7.5M2.5 12h4"/></svg>`},_o=class extends k{static properties={modes:{attribute:!1}};createRenderRoot(){return this}constructor(){super(),this.modes=[]}render(){let e=A.bundleCodeSearchQuery,t=A.bundleCodeSearchMode,n=this.modes.includes(t)?t:`files`,r=po[n]??po.files;return R`${ho} <input type="text" class="bundle-code-search-input" placeholder="${r}" aria-label="${r}" .value="${M(e)}" @input="${this._onInput}"> ${e?R`<button type="button" class="bundle-code-search-clear" aria-label="Clear search" @click="${this._onClear}">×</button>`:z} ${this.modes.length>0?R`<span class="bundle-code-search-modes" role="tablist">${this.modes.map(e=>R`<button type="button" class="${P({"bundle-code-search-mode":!0,active:n===e})}" role="tab" aria-selected="${String(n===e)}" data-tooltip="${mo[e]??e}" aria-label="${mo[e]??e}" @click="${()=>this._selectMode(e)}">${go[e]??z}</button>`)}</span>`:z}`}_onInput=e=>{this._dispatchInput(e.target.value)};_onClear=()=>{this._dispatchInput(``)};_dispatchInput(e){this.dispatchEvent(new CustomEvent(`search-input`,{detail:{kind:`bundle-code`,value:e},bubbles:!0,composed:!0}))}_selectMode(e){this.dispatchEvent(new CustomEvent(`bundle-search-mode-change`,{detail:{mode:e},bubbles:!0,composed:!0}))}};customElements.define(`bundle-code-search`,_o);var vo=class extends HTMLElement{connectedCallback(){this._schedule=()=>{this._frame||=requestAnimationFrame(()=>this._update())},this._resize=new ResizeObserver(this._schedule),this._resize.observe(this),this._mutation=new MutationObserver(this._schedule),this._mutation.observe(this,{childList:!0,subtree:!0,characterData:!0,attributes:!0,attributeFilter:[`hidden`]}),this._mode=matchMedia(`(display-mode: window-controls-overlay)`),this._mode.addEventListener(`change`,this._schedule),navigator.windowControlsOverlay?.addEventListener(`geometrychange`,this._schedule),this._schedule()}disconnectedCallback(){cancelAnimationFrame(this._frame),this._frame=0,this._resize.disconnect(),this._mutation.disconnect(),this._mode.removeEventListener(`change`,this._schedule),navigator.windowControlsOverlay?.removeEventListener(`geometrychange`,this._schedule)}_update(){this._frame=0,this.classList.remove(`boxed`);let e=this.querySelector(`.bundles-slide-bar`);if(!e)return;this._resize.observe(e);let t=this.querySelector(`.bundles-slide-tabs`);t&&this._resize.observe(t);let n=parseFloat(getComputedStyle(this,`::before`).height)||0;if(!n)return;let r=this.getBoundingClientRect(),i=e.getBoundingClientRect();this.classList.toggle(`boxed`,i.top>r.top+1||i.height>n+1)}};customElements.define(`bundle-slide-header`,vo);var yo=R`<svg class="bundle-search-icon" viewBox="0 0 16 16" width="15" height="15" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><circle cx="6.5" cy="6.5" r="4.5"/><path d="M9.7 9.7L13 13" stroke-linecap="round"/></svg>`,bo=class extends k{createRenderRoot(){return this}render(){let e=A.bundleSearchQuery,t=A.bundleSearchRegex,n=A.bundleSearchCase,r=t?`Search by regular expression…`:`Search all source…`;return R`${yo} <input type="text" class="bundle-search-input" placeholder="${r}" aria-label="${r}" spellcheck="false" autocapitalize="off" autocomplete="off" .value="${M(e)}" @input="${this._onInput}"> ${e?R`<button type="button" class="bundle-search-clear" aria-label="Clear search" @click="${this._onClear}">×</button>`:z} <span class="bundle-search-mods"><button type="button" class="${P({"bundle-search-mod":!0,active:n})}" data-tooltip="${n?`Case-sensitive on — click to ignore case`:`Match case`}" aria-label="Match case" aria-pressed="${String(n)}" @click="${this._onToggleCase}">Aa</button> <button type="button" class="${P({"bundle-search-mod":!0,active:t})}" data-tooltip="${t?`Regular expression on — click for plain text`:`Match by regular expression`}" aria-label="Match by regular expression" aria-pressed="${String(t)}" @click="${this._onToggleRegex}">.*</button></span>`}_onInput=e=>{this._dispatchInput(e.target.value)};_onClear=()=>{this._dispatchInput(``)};_dispatchInput(e){this.dispatchEvent(new CustomEvent(`search-input`,{detail:{kind:`bundle-search`,value:e},bubbles:!0,composed:!0}))}_onToggleRegex=()=>{this.dispatchEvent(new CustomEvent(`bundle-search-regex-toggle`,{bubbles:!0,composed:!0}))};_onToggleCase=()=>{this.dispatchEvent(new CustomEvent(`bundle-search-case-toggle`,{bubbles:!0,composed:!0}))}};customElements.define(`bundle-search`,bo);function xo(e,t,n){let r=t[n];return r||console.warn(`<${e}>: unknown kind ${JSON.stringify(n)}; expected one of ${Object.keys(t).map(e=>JSON.stringify(e)).join(`, `)}.`),r}var So={packages:{stateKey:`packagesSearchQuery`,label:`Filter packages`},repositories:{stateKey:`repositoriesSearchQuery`,label:`Filter repositories`}},Co=class extends k{static properties={kind:{type:String}};createRenderRoot(){return this}constructor(){super(),this.kind=``}render(){let e=xo(`entity-search`,So,this.kind);return e?R`<input type="search" class="packages-search" placeholder="${`${e.label}\u2026`}" aria-label="${e.label}" .value="${M(A[e.stateKey])}" @input="${this._onInput}">`:z}_onInput=e=>{this.dispatchEvent(new CustomEvent(`search-input`,{detail:{kind:this.kind,value:e.target.value},bubbles:!0,composed:!0}))}};customElements.define(`entity-search`,Co);var wo=[[`findings-desc`,`Findings ↓`],[`files-desc`,`Files ↓`],[`reports-desc`,`Reports ↓`],[`name-asc`,`Name A→Z`]],To={packages:{stateKey:`packagesSortBy`,aria:`Sort packages`},repositories:{stateKey:`repositoriesSortBy`,aria:`Sort repositories`}},Eo=class extends k{static properties={kind:{type:String}};createRenderRoot(){return this}constructor(){super(),this.kind=``}render(){let e=xo(`entity-sort`,To,this.kind);return e?R`<select class="packages-sort" aria-label="${e.aria}" .value="${M(A[e.stateKey])}" @change="${this._onChange}">${wo.map(([t,n])=>R`<option value="${t}" ?selected="${A[e.stateKey]===t}">${n}</option>`)}</select>`:z}_onChange=e=>{this.dispatchEvent(new CustomEvent(`sort-change`,{detail:{kind:this.kind,value:e.target.value},bubbles:!0,composed:!0}))}};customElements.define(`entity-sort`,Eo);var Do=class extends k{static properties={showFile:{type:Boolean,attribute:`show-file`},showConfidence:{type:Boolean,attribute:`show-confidence`},showPriority:{type:Boolean,attribute:`show-priority`}};createRenderRoot(){return this}constructor(){super(),this.showFile=!1,this.showConfidence=!1,this.showPriority=!1}render(){let e=(e,t)=>R`<option value="${e}" ?selected="${A.sortBy===e}">${t}</option>`;return R`<select class="sort-select" aria-label="Sort findings" .value="${M(A.sortBy)}" @change="${this._onChange}">${e(`severity`,`Severity ↓`)} ${this.showFile?e(`file`,`File ↑`):z} ${this.showConfidence?R`${e(`confidence-desc`,`Confidence ↓`)}${e(`confidence-asc`,`Confidence ↑`)}`:z} ${this.showPriority?R`${e(`priority-desc`,`Priority ↓`)}${e(`priority-asc`,`Priority ↑`)}`:z}</select>`}_onChange=e=>{this.dispatchEvent(new CustomEvent(`sort-change`,{detail:{kind:`findings`,value:e.target.value},bubbles:!0,composed:!0}))}};customElements.define(`findings-sort`,Do);var Oo=`:host{display:inline-flex;align-items:center;width:8.5rem;height:16px;--rs-thumb-size: 14px;--rs-track-height: 3px;--rs-rail: rgb(from currentcolor r g b / .25);--rs-fill: var(--accent, currentColor)}.track-wrap{position:relative;flex:1;height:var(--rs-thumb-size)}.track{position:absolute;left:0;right:0;top:50%;height:var(--rs-track-height);transform:translateY(-50%);border-radius:var(--ui-radius, 99px);background:linear-gradient(to right,var(--rs-rail) 0,var(--rs-rail) var(--low, 0%),var(--rs-fill) var(--low, 0%),var(--rs-fill) var(--high, 100%),var(--rs-rail) var(--high, 100%))}input[type=range]{appearance:none;-webkit-appearance:none;position:absolute;left:0;right:0;top:0;width:100%;height:var(--rs-thumb-size);background:transparent;pointer-events:none;margin:0;padding:0;outline:none}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;pointer-events:auto;width:var(--rs-thumb-size);height:var(--rs-thumb-size);border-radius:50%;background:var(--rs-fill);border:0;box-shadow:0 1px 3px #00000080}input[type=range]::-moz-range-thumb{pointer-events:auto;width:var(--rs-thumb-size);height:var(--rs-thumb-size);border-radius:50%;background:var(--rs-fill);border:0;box-shadow:0 1px 3px #00000080}input[type=range]::-webkit-slider-runnable-track{background:transparent;height:var(--rs-thumb-size)}:host-context(body.theme-w95){height:22px;--rs-thumb-size: 22px;.track{height:4px;box-shadow:var(--w95-sunken);background:linear-gradient(to right,#fff 0,#fff var(--low, 0%),var(--w95-title) var(--low, 0%),var(--w95-title) var(--high, 100%),#fff var(--high, 100%))}& input[type=range]::-webkit-slider-thumb{width:11px;height:21px;border-radius:0;background:var(--w95-face);box-shadow:var(--w95-raised)}& input[type=range]::-moz-range-thumb{width:11px;height:21px;border-radius:0;background:var(--w95-face);box-shadow:var(--w95-raised)}}
16
+ `,$a=[`finding`,`is-critical`,`mark-red`,`mark-blue`,`mark-green`,`mark-gray`,`has-conflict`,`triage-inprogress`,`triage-fixed`,`triage-invalid`,`triage-deleted`,`triage-ignored`,`multi-case`],eo=class extends k{static properties={group:{attribute:!1},inGroup:{type:Boolean,attribute:`in-group`,reflect:!0},context:{type:String,reflect:!0},lazy:{type:Boolean}};static styles=[L(gt),L(Ka),L(Wa),L(Qa),L(qa),L(Ga),L(e),L(a)];_near=!1;_watched=null;constructor(){super(),this.group=null,this.inGroup=!1,this.context=null,this.lazy=!1}render(){if(!this.group)return R``;if(this.dataset.gid=Ze(this.group),this.lazy&&!this._near)return this.classList.add(`finding`),R`<div class="card card-pending" aria-busy="true"></div>`;let e=new Set(Ue(this.group));for(let t of $a)this.classList.toggle(t,e.has(t));return R`<div class="card">${Ge(this.group,{context:this.context})}</div>`}updated(){this.classList.toggle(`content-ready`,!!this.group&&(!this.lazy||this._near));for(let e of this.renderRoot.querySelectorAll(`.code-preview`)){let t=e.dataset.revealedTo;if(t!==void 0&&Math.round(e.scrollTop)!==Number(t))continue;let n=e.querySelectorAll(`.code-preview-lineno.cited`);n.length!==0&&(On(e,n),e.dataset.revealedTo=String(Math.round(e.scrollTop)))}}connectedCallback(){if(super.connectedCallback(),ir(this.renderRoot),this.lazy){this._watched=this.closest(`.flat-group`)??this,rt(this._watched,e=>this._onNear(e));return}this.hasUpdated&&this.requestUpdate()}disconnectedCallback(){this._watched&&=(it(this._watched),null),super.disconnectedCallback()}_onNear(e){e?(this._watched&&=(it(this._watched),null),this._near=!0,this.requestUpdate()):this._near&&(this._near=!1,this.requestUpdate())}ensureRendered({sync:e=!1}={}){return this.lazy&&!this._near&&this._onNear(!0),e&&this.isConnected&&this.isUpdatePending&&this.performUpdate(),this.updateComplete}};customElements.define(`finding-card`,eo);var to=48,no=4;function ro(e,t){let n=new Float64Array(e+1);for(let r=0;r<e;r++)n[r+1]=n[r]+t(r);return n}function io(e,t){let n=0,r=e.length-2;for(;n<r;){let i=n+r>>1;e[i+1]>t?r=i:n=i+1}return Math.max(0,n)}function ao(e,t,n){let r=e.length-1;return r===0?{from:0,to:0}:{from:io(e,t-n),to:Math.min(r,io(e,t+2*n)+1)}}function oo(e,t,n,r){return e[t]<n?e[t]:e[t+1]>n+r?Math.min(e[t],e[t+1]-r):n}var so=class extends B{static properties={items:{attribute:!1},activeKey:{attribute:!1},keyOf:{attribute:!1},renderItem:{attribute:!1}};constructor(){super(),this.items=[],this.activeKey=null,this.keyOf=e=>e,this.renderItem=()=>z,this._heights=new Map,this._total=0,this._keys=new WeakMap,this._version=0,this._tops=null,this._range={from:0,to:0},this._hold=null,this._goal=null,this._carried=null,this._reveal=!1,this._passes=0,this.addEventListener(`scroll`,()=>{!this.isUpdatePending&&!this._covers()&&this.requestUpdate()},{passive:!0})}createRenderRoot(){return this}connectedCallback(){super.connectedCallback(),this._resizes=new ResizeObserver(()=>{!this.isUpdatePending&&(this._reveal||!this._covers())&&this.requestUpdate()}),this._resizes.observe(this),this._themes=new AbortController,globalThis.addEventListener(`deepview-theme-changed`,()=>this._forgetHeights(),{signal:this._themes.signal})}disconnectedCallback(){super.disconnectedCallback(),this._resizes?.disconnect(),this._themes?.abort()}_forgetHeights(){this._carried??=this._holdOf(this.items,this.scrollTop),this._heights.clear(),this._total=0,this._version++,this.requestUpdate()}_keysOf(e){let t=this._keys.get(e);return t||this._keys.set(e,t=e.map(e=>this.keyOf(e))),t}_topsOf(e){let t=this._tops;if(t?.list===e&&t.version===this._version)return t.tops;let n=this._keysOf(e),r=this._heights.size>0?this._total/this._heights.size:to,i=ro(e.length,e=>this._heights.get(n[e])??r);return this._tops={list:e,version:this._version,tops:i},i}_viewHeight(){let e=getComputedStyle(this);return Math.max(0,this.clientHeight-parseFloat(e.paddingTop)-parseFloat(e.paddingBottom))}_covers(){let e=this._topsOf(this.items),{from:t,to:n}=this._range,r=this.scrollTop;return io(e,r)>=t&&(n>=this.items.length||io(e,r+this._viewHeight())<n)}_holdOf(e,t){if(e.length===0)return null;let n=this._topsOf(e),r=io(n,t);return{key:this._keysOf(e)[r],index:r,offset:n[r]-t}}_heldTop(e){let t=this._hold;if(!t)return null;let n=this._keysOf(this.items),r=n[t.index]===t.key?t.index:n.indexOf(t.key);return r<0?null:e[r]-t.offset}willUpdate(e){e.has(`activeKey`)&&(this._reveal=!0);let t=this.scrollTop,n=this._viewHeight();if(this._hold=this._carried??this._holdOf(e.get(`items`)??this.items,t),this._carried=null,this._goal=null,this._reveal&&n>0){this._reveal=!1;let e=this._keysOf(this.items).indexOf(this.activeKey);e>=0&&(this._goal={index:e,from:t})}let r=this._topsOf(this.items),i=this._goal?oo(r,this._goal.index,t,n):this._heldTop(r)??t;this._range=ao(r,i,n)}render(){let{from:e,to:t}=this._range;return R`<div class="kanban-rail-spacer" aria-hidden="true"></div>${fr(this.items.slice(e,t),this.keyOf,this.renderItem)}<div class="kanban-rail-spacer" aria-hidden="true"></div>`}updated(){if(this.clientHeight===0)return;let e=this._viewHeight(),{from:t,to:n}=this._range,r=[...this.children],i=this._keysOf(this.items),a=r[1].getBoundingClientRect().top;for(let e=t;e<n;e++){let n=r[e-t+2].getBoundingClientRect().top,o=this._heights.get(i[e]);o!==n-a&&(this._total+=n-a-(o??0),this._heights.set(i[e],n-a),this._version++),a=n}let o=this._topsOf(this.items);r[0].style.height=`${o[t]}px`,r.at(-1).style.height=`${o[this.items.length]-o[n]}px`;let s=this._goal?oo(o,this._goal.index,this._goal.from,e):this._heldTop(o);s!==null&&Math.abs(this.scrollTop-s)>=1&&(this.scrollTop=s),this._covers()||++this._passes>=no?this._passes=0:this.requestUpdate()}};customElements.define(`kanban-rail`,so);var co=`:host{display:inline-flex;gap:4px;align-items:center;flex-shrink:0}button{width:14px;height:14px;user-select:none;padding:0;background:transparent;border:1.5px solid currentcolor;border-radius:var(--ui-radius, 50%);opacity:.55;transition:opacity .12s,transform .12s}button:not(:disabled):hover{opacity:1;transform:scale(1.12)}button:disabled{opacity:.25}button.active{background:currentcolor;opacity:1;box-shadow:0 0 0 2px var(--surface),0 0 0 3px currentcolor}.color-red{color:var(--marker-red)}.color-blue{color:var(--marker-blue)}.color-green{color:var(--marker-green)}.color-gray{color:var(--marker-gray)}
17
+ `,lo=[`red`,`blue`,`green`,`gray`],uo=class extends B{static properties={selected:{type:String},disabled:{type:Boolean}};static styles=L(co);constructor(){super(),this.selected=null,this.disabled=!1}render(){return R`${lo.map(e=>R`<button type="button" class="${`color-${e}${this.selected===e?` active`:``}`}" data-color="${e}" aria-label="${`mark ${e}`}" ?disabled="${this.disabled}" @click="${this._onClick}"></button>`)}`}_onClick=e=>{if(this.disabled)return;let t=e.currentTarget.dataset.color;this.dispatchEvent(new CustomEvent(`mark-color`,{detail:{color:t},bubbles:!0,composed:!0}))}};customElements.define(`color-marker`,uo);var fo=class extends k{static properties={rangeDisabled:{type:Boolean,attribute:`range-disabled`},revalidateOptions:{attribute:!1},hasPartial:{type:Boolean,attribute:`has-partial`}};createRenderRoot(){return this}constructor(){super(),this.rangeDisabled=!1,this.revalidateOptions=[],this.hasPartial=!1}render(){let e=A.filterConfMin,t=A.filterConfMax,n=this.revalidateOptions??[],r=this.rangeDisabled,i=n.length>0&&!!A.filterRevalidate,a=r?`No confidence range: some findings on screen carry no confidence score`:z;return R`<span class="${P({"conf-range-label":!0,replaced:i,disabled:r})}" data-tooltip="${a}">Confidence</span> <span class="${P({"conf-range":!0,replaced:i,disabled:r})}" ?inert="${r||i}"><range-slider id="conf-range" min="0" max="10" step="1" low="${e}" high="${t}" aria-label="Confidence range"></range-slider><conf-range-mirror id="conf-range-vals" class="conf-vals" for="conf-range" .low="${e}" .high="${t}"></conf-range-mirror></span>${n.length>0?R`<revalidate-filter class="${P({replaces:i})}" .options="${n}" ?has-partial="${this.hasPartial}"></revalidate-filter>`:z}`}};customElements.define(`conf-filter`,fo);var po={files:`Filter files…`,code:`Search code…`,issues:`Search issues…`,largest:`Filter largest files…`},mo={files:`Filter files`,code:`Search code`,issues:`Search issues`,largest:`Largest files`},ho=R`<svg class="bundle-code-search-icon" viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><circle cx="6.5" cy="6.5" r="4.5"/><path d="M9.7 9.7L13 13" stroke-linecap="round"/></svg>`,go={files:Pe,code:Le,issues:R`<svg viewBox="0 0 16 16" width="13" height="13" fill="none" stroke="currentColor" stroke-width="1.3" aria-hidden="true"><circle cx="8" cy="8" r="6"/><path d="M8 4.8v3.6" stroke-linecap="round"/><circle cx="8" cy="11" r=".7" fill="currentColor" stroke="none"/></svg>`,largest:R`<svg viewBox="0 0 16 16" width="13" height="13" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" aria-hidden="true"><path d="M2.5 4h11M2.5 8h7.5M2.5 12h4"/></svg>`},_o=class extends k{static properties={modes:{attribute:!1}};createRenderRoot(){return this}constructor(){super(),this.modes=[]}render(){let e=A.bundleCodeSearchQuery,t=A.bundleCodeSearchMode,n=this.modes.includes(t)?t:`files`,r=po[n]??po.files;return R`${ho} <input type="text" class="bundle-code-search-input" placeholder="${r}" aria-label="${r}" .value="${M(e)}" @input="${this._onInput}"> ${e?R`<button type="button" class="bundle-code-search-clear" aria-label="Clear search" @click="${this._onClear}">×</button>`:z} ${this.modes.length>0?R`<span class="bundle-code-search-modes" role="tablist">${this.modes.map(e=>R`<button type="button" class="${P({"bundle-code-search-mode":!0,active:n===e})}" role="tab" aria-selected="${String(n===e)}" data-tooltip="${mo[e]??e}" aria-label="${mo[e]??e}" @click="${()=>this._selectMode(e)}">${go[e]??z}</button>`)}</span>`:z}`}_onInput=e=>{this._dispatchInput(e.target.value)};_onClear=()=>{this._dispatchInput(``)};_dispatchInput(e){this.dispatchEvent(new CustomEvent(`search-input`,{detail:{kind:`bundle-code`,value:e},bubbles:!0,composed:!0}))}_selectMode(e){this.dispatchEvent(new CustomEvent(`bundle-search-mode-change`,{detail:{mode:e},bubbles:!0,composed:!0}))}};customElements.define(`bundle-code-search`,_o);var vo=class extends HTMLElement{connectedCallback(){this._schedule=()=>{this._frame||=requestAnimationFrame(()=>this._update())},this._resize=new ResizeObserver(this._schedule),this._resize.observe(this),this._mutation=new MutationObserver(this._schedule),this._mutation.observe(this,{childList:!0,subtree:!0,characterData:!0,attributes:!0,attributeFilter:[`hidden`]}),this._mode=matchMedia(`(display-mode: window-controls-overlay)`),this._mode.addEventListener(`change`,this._schedule),navigator.windowControlsOverlay?.addEventListener(`geometrychange`,this._schedule),this._schedule()}disconnectedCallback(){cancelAnimationFrame(this._frame),this._frame=0,this._resize.disconnect(),this._mutation.disconnect(),this._mode.removeEventListener(`change`,this._schedule),navigator.windowControlsOverlay?.removeEventListener(`geometrychange`,this._schedule)}_update(){this._frame=0,this.classList.remove(`boxed`);let e=this.querySelector(`.bundles-slide-bar`);if(!e)return;this._resize.observe(e);let t=this.querySelector(`.bundles-slide-tabs`);t&&this._resize.observe(t);let n=parseFloat(getComputedStyle(this,`::before`).height)||0;if(!n)return;let r=this.getBoundingClientRect(),i=e.getBoundingClientRect();this.classList.toggle(`boxed`,i.top>r.top+1||i.height>n+1)}};customElements.define(`bundle-slide-header`,vo);var yo=R`<svg class="bundle-search-icon" viewBox="0 0 16 16" width="15" height="15" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><circle cx="6.5" cy="6.5" r="4.5"/><path d="M9.7 9.7L13 13" stroke-linecap="round"/></svg>`,bo=class extends k{createRenderRoot(){return this}render(){let e=A.bundleSearchQuery,t=A.bundleSearchRegex,n=A.bundleSearchCase,r=t?`Search by regular expression…`:`Search all source…`;return R`${yo} <input type="text" class="bundle-search-input" placeholder="${r}" aria-label="${r}" spellcheck="false" autocapitalize="off" autocomplete="off" .value="${M(e)}" @input="${this._onInput}"> ${e?R`<button type="button" class="bundle-search-clear" aria-label="Clear search" @click="${this._onClear}">×</button>`:z} <span class="bundle-search-mods"><button type="button" class="${P({"bundle-search-mod":!0,active:n})}" data-tooltip="${n?`Case-sensitive on — click to ignore case`:`Match case`}" aria-label="Match case" aria-pressed="${String(n)}" @click="${this._onToggleCase}">Aa</button> <button type="button" class="${P({"bundle-search-mod":!0,active:t})}" data-tooltip="${t?`Regular expression on — click for plain text`:`Match by regular expression`}" aria-label="Match by regular expression" aria-pressed="${String(t)}" @click="${this._onToggleRegex}">.*</button></span>`}_onInput=e=>{this._dispatchInput(e.target.value)};_onClear=()=>{this._dispatchInput(``)};_dispatchInput(e){this.dispatchEvent(new CustomEvent(`search-input`,{detail:{kind:`bundle-search`,value:e},bubbles:!0,composed:!0}))}_onToggleRegex=()=>{this.dispatchEvent(new CustomEvent(`bundle-search-regex-toggle`,{bubbles:!0,composed:!0}))};_onToggleCase=()=>{this.dispatchEvent(new CustomEvent(`bundle-search-case-toggle`,{bubbles:!0,composed:!0}))}};customElements.define(`bundle-search`,bo);function xo(e,t,n){let r=t[n];return r||console.warn(`<${e}>: unknown kind ${JSON.stringify(n)}; expected one of ${Object.keys(t).map(e=>JSON.stringify(e)).join(`, `)}.`),r}var So={packages:{stateKey:`packagesSearchQuery`,label:`Filter packages`},repositories:{stateKey:`repositoriesSearchQuery`,label:`Filter repositories`}},Co=class extends k{static properties={kind:{type:String}};createRenderRoot(){return this}constructor(){super(),this.kind=``}render(){let e=xo(`entity-search`,So,this.kind);return e?R`<input type="search" class="packages-search" placeholder="${`${e.label}\u2026`}" aria-label="${e.label}" .value="${M(A[e.stateKey])}" @input="${this._onInput}">`:z}_onInput=e=>{this.dispatchEvent(new CustomEvent(`search-input`,{detail:{kind:this.kind,value:e.target.value},bubbles:!0,composed:!0}))}};customElements.define(`entity-search`,Co);var wo=[[`findings-desc`,`Findings ↓`],[`files-desc`,`Files ↓`],[`reports-desc`,`Reports ↓`],[`name-asc`,`Name A→Z`]],To={packages:{stateKey:`packagesSortBy`,aria:`Sort packages`},repositories:{stateKey:`repositoriesSortBy`,aria:`Sort repositories`}},Eo=class extends k{static properties={kind:{type:String}};createRenderRoot(){return this}constructor(){super(),this.kind=``}render(){let e=xo(`entity-sort`,To,this.kind);return e?R`<select class="packages-sort" aria-label="${e.aria}" .value="${M(A[e.stateKey])}" @change="${this._onChange}">${wo.map(([t,n])=>R`<option value="${t}" ?selected="${A[e.stateKey]===t}">${n}</option>`)}</select>`:z}_onChange=e=>{this.dispatchEvent(new CustomEvent(`sort-change`,{detail:{kind:this.kind,value:e.target.value},bubbles:!0,composed:!0}))}};customElements.define(`entity-sort`,Eo);var Do=class extends k{static properties={showFile:{type:Boolean,attribute:`show-file`},showConfidence:{type:Boolean,attribute:`show-confidence`},showPriority:{type:Boolean,attribute:`show-priority`}};createRenderRoot(){return this}constructor(){super(),this.showFile=!1,this.showConfidence=!1,this.showPriority=!1}render(){let e=(e,t)=>R`<option value="${e}" ?selected="${A.sortBy===e}">${t}</option>`;return R`<select class="sort-select" aria-label="Sort findings" .value="${M(A.sortBy)}" @change="${this._onChange}">${e(`severity`,`Severity ↓`)} ${this.showFile?e(`file`,`File ↑`):z} ${this.showConfidence?R`${e(`confidence-desc`,`Confidence ↓`)}${e(`confidence-asc`,`Confidence ↑`)}`:z} ${this.showPriority?R`${e(`priority-desc`,`Priority ↓`)}${e(`priority-asc`,`Priority ↑`)}`:z}</select>`}_onChange=e=>{this.dispatchEvent(new CustomEvent(`sort-change`,{detail:{kind:`findings`,value:e.target.value},bubbles:!0,composed:!0}))}};customElements.define(`findings-sort`,Do);var Oo=`:host{display:inline-flex;align-items:center;width:8.5rem;height:16px;--rs-thumb-size: 14px;--rs-track-height: 3px;--rs-rail: rgb(from currentcolor r g b / .25);--rs-fill: var(--accent, currentColor)}.track-wrap{position:relative;flex:1;height:var(--rs-thumb-size)}.track{position:absolute;left:0;right:0;top:50%;height:var(--rs-track-height);transform:translateY(-50%);border-radius:var(--ui-radius, 99px);background:linear-gradient(to right,var(--rs-rail) 0,var(--rs-rail) var(--low, 0%),var(--rs-fill) var(--low, 0%),var(--rs-fill) var(--high, 100%),var(--rs-rail) var(--high, 100%))}input[type=range]{appearance:none;-webkit-appearance:none;position:absolute;left:0;right:0;top:0;width:100%;height:var(--rs-thumb-size);background:transparent;pointer-events:none;margin:0;padding:0;outline:none}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;pointer-events:auto;width:var(--rs-thumb-size);height:var(--rs-thumb-size);border-radius:50%;background:var(--rs-fill);border:0;box-shadow:0 1px 3px #00000080}input[type=range]::-moz-range-thumb{pointer-events:auto;width:var(--rs-thumb-size);height:var(--rs-thumb-size);border-radius:50%;background:var(--rs-fill);border:0;box-shadow:0 1px 3px #00000080}input[type=range]::-webkit-slider-runnable-track{background:transparent;height:var(--rs-thumb-size)}:host-context(body.theme-w95){height:22px;--rs-thumb-size: 22px;.track{height:4px;box-shadow:var(--w95-sunken);background:linear-gradient(to right,#fff 0,#fff var(--low, 0%),var(--w95-title) var(--low, 0%),var(--w95-title) var(--high, 100%),#fff var(--high, 100%))}& input[type=range]::-webkit-slider-thumb{width:11px;height:21px;border-radius:0;background:var(--w95-face);box-shadow:var(--w95-raised)}& input[type=range]::-moz-range-thumb{width:11px;height:21px;border-radius:0;background:var(--w95-face);box-shadow:var(--w95-raised)}}
18
18
  `,ko=class extends B{static properties={min:{type:Number},max:{type:Number},step:{type:Number},low:{type:Number},high:{type:Number}};static styles=L(Oo);constructor(){super(),this.min=0,this.max=100,this.step=1,this.low=0,this.high=100}willUpdate(){this.low<this.min&&(this.low=this.min),this.high>this.max&&(this.high=this.max),this.low>this.high&&(this.low=this.high)}render(){let e=this.max-this.min||1,t=(this.low-this.min)/e*100,n=(this.high-this.min)/e*100;return R`<div class="track-wrap" style="${dr({"--low":`${t}%`,"--high":`${n}%`})}"><div class="track"></div><input type="range" min="${this.min}" max="${this.max}" step="${this.step}" @input="${this._onInput}" @change="${this._onChange}"> <input type="range" min="${this.min}" max="${this.max}" step="${this.step}" @input="${this._onInput}" @change="${this._onChange}"></div>`}firstUpdated(){this._inputs=[...this.renderRoot.querySelectorAll(`input[type="range"]`)],this._inputs[0].value=this.low,this._inputs[1].value=this.high}updated(e){if(!this._inputs||!(e.has(`low`)||e.has(`high`)))return;let t=this._inputs.map(e=>Number(e.value)),n=t[0]>t[1],r=+!!n,i=+!n;this.low!==t[r]&&(this._inputs[r].value=this.low),this.high!==t[i]&&(this._inputs[i].value=this.high)}_onInput=()=>{let e=Number(this._inputs[0].value),t=Number(this._inputs[1].value);this.low=Math.min(e,t),this.high=Math.max(e,t),this._emit(`range-input`)};_onChange=()=>{this._emit(`range-change`)};_emit(e){this.dispatchEvent(new CustomEvent(e,{detail:{low:this.low,high:this.high},bubbles:!0,composed:!0}))}};customElements.define(`range-slider`,ko);var Ao=class extends B{static properties={low:{type:Number},high:{type:Number},for:{type:String}};createRenderRoot(){return this}constructor(){super(),this.low=0,this.high=10,this.for=`conf-range`,this._dragging=!1,this._liveLow=0,this._liveHigh=10}connectedCallback(){super.connectedCallback(),document.addEventListener(`range-input`,this._onRangeInput),document.addEventListener(`range-change`,this._onRangeChange)}disconnectedCallback(){super.disconnectedCallback(),document.removeEventListener(`range-input`,this._onRangeInput),document.removeEventListener(`range-change`,this._onRangeChange)}willUpdate(e){this._dragging&&(e.has(`low`)&&this.low!==this._liveLow&&(this.low=this._liveLow),e.has(`high`)&&this.high!==this._liveHigh&&(this.high=this._liveHigh))}_onRangeInput=e=>{e.target?.id===this.for&&(this._dragging=!0,this._liveLow=e.detail.low,this._liveHigh=e.detail.high,this.low=e.detail.low,this.high=e.detail.high)};_onRangeChange=e=>{e.target?.id===this.for&&(this._dragging=!1)};render(){return R`<span>${this.low}</span><span class="dash">–</span><span>${this.high}</span>`}};customElements.define(`conf-range-mirror`,Ao);var jo=`:host{display:inline-flex;vertical-align:middle;position:relative}.chip{display:inline-flex;align-items:center;gap:.375rem;cursor:default;user-select:none;position:relative;min-height:24px;box-sizing:border-box;padding:.125rem .375rem .125rem .5rem;background:var(--surface);border:var(--header-tag-border, 1px solid var(--border));border-radius:var(--ui-radius, 999px);color:var(--text);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.72rem;font-weight:500}.chip svg{color:var(--muted);flex-shrink:0}.chip.empty:hover{border-color:var(--accent)}.chip.empty .label{color:var(--muted);font-style:italic}.chip.readonly{padding-right:.5rem}.chip.copied:after{content:"Copied";position:absolute;inset:0;display:grid;place-items:center;background:var(--surface);backdrop-filter:var(--glass-blur);border-radius:var(--ui-radius, 999px);color:var(--text);font-weight:400;white-space:nowrap;pointer-events:none}.edit-btn{width:18px;height:18px;display:grid;place-items:center;padding:0;margin-left:.125rem;background:transparent;border:0;border-radius:var(--ui-radius, 4px);color:var(--muted)}.edit-btn:hover{color:var(--text);background:rgb(from var(--text) r g b / .06)}@media(display-mode:window-controls-overlay){.edit-btn,input{-webkit-app-region:no-drag;app-region:no-drag}}.chip[inert]{visibility:hidden;min-width:19rem}input{position:absolute;inset:0;box-sizing:border-box;padding:0 .55rem;background:var(--surface);border:1px solid var(--accent);border-radius:var(--ui-radius, 999px);color:var(--text);font:inherit;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.72rem;font-weight:400;outline:none}@media print{.chip{color:#000!important;border:0!important}.chip svg{color:#000!important}.edit-btn,input{display:none!important}}:host-context(body.theme-w95) .chip{min-height:23px;border:0;background:var(--w95-face);box-shadow:var(--w95-raised);color:#000;font-family:inherit;font-size:11px;font-weight:400;&.empty:hover{border-color:transparent}}
19
- `,Mo=R`<svg viewBox="0 0 16 16" width="12" height="12" fill="currentColor" aria-hidden="true"><path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0 0 16 8c0-4.42-3.58-8-8-8z"/></svg>`,No=R`<svg viewBox="0 0 16 16" width="11" height="11" fill="currentColor" aria-hidden="true"><path d="M11.013 1.427a1.75 1.75 0 0 1 2.474 0l1.086 1.086a1.75 1.75 0 0 1 0 2.474l-8.61 8.61c-.21.21-.47.364-.756.445l-3.251.93a.75.75 0 0 1-.927-.928l.929-3.25c.082-.286.235-.547.445-.758l8.61-8.61z"/></svg>`,Po=class extends B{static properties={url:{type:String},editable:{type:Boolean,reflect:!0},editing:{type:Boolean,reflect:!0},_copied:{state:!0}};static styles=L(jo);constructor(){super(),this.url=``,this.editable=!1,this.editing=!1,this._copied=!1,this._opener=``}render(){if(this.editable&&this.editing){let e=!!this.url,t=e?Yn(this.url):`Set repo`;return R`<span class="${e?`chip`:`chip empty`}" aria-hidden="true" inert>${Mo} <span class="label">${t}</span> <button type="button" class="edit-btn">${No}</button> </span><input type="text" .value="${M(this.url)}" placeholder="user/repo or https://github.com/user/repo" @input="${this._onInput}" @focus="${this._onFocus}" @keydown="${this._onKeydown}" @blur="${this._onBlur}">`}if(this.editable){let e=!!this.url,t=e?Yn(this.url):`Set repo`,n=e?this._copied?`chip copied`:`chip`:`chip empty`;return R`<span class="${n}" @click="${e?null:this._onEdit}">${Mo} ${e?this._slugLabel(t):R`<span class="label">${t}</span>`} <button type="button" class="edit-btn" aria-label="Edit repo URL" @click="${this._onEdit}">${No}</button></span>`}if(this.url){let e=this._copied?`chip readonly copied`:`chip readonly`;return R`<span class="${e}">${Mo} ${this._slugLabel(Yn(this.url))}</span>`}return z}_slugLabel(e){return R`<span class="label" @click="${this._onCopyLabel}">${e}</span>`}updated(e){if(e.has(`editing`)&&this.editing){let e=this.renderRoot.querySelector(`input`);e&&(e.focus(),e.select())}}_onEdit=e=>{e&&e.stopPropagation(),this._emit(`repo-edit-start`)};_onCopyLabel=e=>{e&&e.stopPropagation();let t=Yn(this.url);if(t)try{navigator.clipboard.writeText(t).then(()=>(this._copied=!0,setTimeout(()=>{this._copied=!1},1e3),null)).catch(()=>{})}catch{}};_onFocus=e=>{this._opener=e.target.value};_onInput=e=>{this.url=e.target.value,this._emit(`repo-input`,{url:this.url})};_onKeydown=e=>{e.key===`Enter`?(e.preventDefault(),this._emit(`repo-commit`,{url:this.url})):e.key===`Escape`&&(e.preventDefault(),this.url=this._opener,this._emit(`repo-cancel`,{url:this._opener}))};_onBlur=()=>{this.editing&&this._emit(`repo-commit`,{url:this.url})};_emit(e,t){this.dispatchEvent(new CustomEvent(e,{detail:t,bubbles:!0,composed:!0}))}};customElements.define(`repo-chip`,Po);var Fo=R`<svg viewBox="0 0 16 16" width="12" height="12" aria-hidden="true"><path class="bubble" d="M2.5 3h11a.5.5 0 0 1 .5.5v6.5a.5.5 0 0 1-.5.5H8.4l-3 2.6V10.5H2.5a.5.5 0 0 1-.5-.5V3.5a.5.5 0 0 1 .5-.5z" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linejoin="round"/></svg>`,Io=R`<svg viewBox="0 0 16 16" width="12" height="12" aria-hidden="true"><path class="wrench" d="M10.4 2.6a3 3 0 0 0-3.6 4.5L2 12l2 2 4.9-4.8a3 3 0 0 0 4.5-3.6l-1.8 1.8-1.5-.4-.4-1.5z" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linejoin="round"/></svg>`,Lo=R`<svg viewBox="0 0 16 16" width="12" height="12" aria-hidden="true"><path class="flag-cloth" d="M5 1.5h6v13l-3-2.7-3 2.7z" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linejoin="round"/></svg>`,Ro=Sr(Er.replace(`width="14" height="14"`,`width="12" height="12"`)),zo=R`<svg viewBox="0 0 16 16" width="12" height="12" aria-hidden="true"><g fill="none" stroke="currentColor" stroke-width="1.15" stroke-linecap="round" stroke-linejoin="round"><path d="M5 1.2 1.3 3.1v5.7L5 10.7l3.7-1.9V3.1Z M1.3 3.1 5 5l3.7-1.9 M5 5v5.7"/><path d="M11 5.2 7.3 7.1v5.7l3.7 1.9 3.7-1.9V7.1Z M7.3 7.1 11 9l3.7-1.9 M11 9v5.7"/></g></svg>`,Bo=R`<svg viewBox="0 0 16 16" width="12" height="12" aria-hidden="true"><g fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"><rect x="3.4" y="1.5" width="10" height="3.6" rx=".8"/><rect x="2.2" y="5.3" width="10" height="3.6" rx=".8"/><rect x="1" y="9.1" width="10" height="3.6" rx=".8"/></g></svg>`,Vo=R`<svg viewBox="0 0 16 16" width="12" height="12" aria-hidden="true"><path d="M8 1.5 13 3.5v4c0 3-2.1 5.5-5 7-2.9-1.5-5-4-5-7v-4Z" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linejoin="round"/></svg>`,Ho=[{key:`comment`,glyph:Fo,label:`commented`,stateKey:`filterComment`,hasKey:`hasComment`},{key:`fix`,glyph:Io,label:`fixed`,stateKey:`filterFix`,hasKey:`hasFix`},{key:`flag`,glyph:Lo,label:`flagged`,stateKey:`filterFlagged`,hasKey:`hasFlagged`},{key:`duplicates`,glyph:Ro,label:`rows with duplicates in other reports`,stateKey:`filterDuplicates`,hasKey:`hasDuplicates`},{key:`cross-context`,glyph:zo,label:`rows across multiple repos or packages`,stateKey:`filterCrossContext`,hasKey:`hasCrossContext`},{key:`app-stacked`,glyph:Bo,label:`stacked App rows`,stateKey:`filterAppStacked`,hasKey:`hasAppStacked`},{key:`security`,glyph:Vo,label:`security-related rows`,stateKey:`filterSecurity`,hasKey:`hasSecurityContrast`}],Uo=new Set([`duplicates`,`cross-context`,`app-stacked`,`security`]),Wo=class extends k{static properties={group:{type:String},hasComment:{attribute:!1},hasFix:{attribute:!1},hasFlagged:{attribute:!1},hasDuplicates:{attribute:!1},hasCrossContext:{attribute:!1},hasAppStacked:{attribute:!1},hasSecurityContrast:{attribute:!1}};createRenderRoot(){return this}constructor(){super(),this.group=`marks`,this.hasComment=!1,this.hasFix=!1,this.hasFlagged=!1,this.hasDuplicates=!1,this.hasCrossContext=!1,this.hasAppStacked=!1,this.hasSecurityContrast=!1}connectedCallback(){super.connectedCallback(),Y(this,{role:`group`,"aria-label":this.group===`context`?`Finding row filters`:`Annotation filter`})}render(){let e=Ho.filter(e=>this.group===`context`===Uo.has(e.key)).filter(e=>e.key===`security`?this.hasSecurityContrast:e.key===`duplicates`?!A.currentWorkspace&&(this.hasDuplicates||A[e.stateKey]):this[e.hasKey]||A[e.stateKey]);return e.length===0?z:R`${e.map(e=>{let t=A[e.stateKey],n=Uo.has(e.key)?e.label:`${e.label} findings`,r=t===`with`?`Showing only ${n} \u2014 click to exclude them`:t===`without`?`Excluding ${n} \u2014 click to clear`:`Show only ${n}`;return R`<button type="button" class="${P({"annotation-chip":!0,"sel-with":t===`with`,"sel-without":t===`without`})}" aria-label="${r}" aria-pressed="${String(t!==``)}" @click="${()=>this._toggle(e.key)}">${e.glyph}</button>`})}`}_toggle(e){this.dispatchEvent(new CustomEvent(`annotation-filter-toggle`,{detail:{key:e},bubbles:!0,composed:!0}))}};customElements.define(`annotation-filter`,Wo);var Go=[[`critical`,`Critical`],[`high`,`High`],[`medium`,`Medium`],[`low`,`Low`],[`high_bug`,`High bug`],[`bug`,`Bug`],[`informational`,`Info`]],Ko=class extends k{static properties={counts:{attribute:!1},selected:{attribute:!1},kind:{type:String}};createRenderRoot(){return this}constructor(){super(),this.counts={},this.selected=[],this.kind=`findings`}connectedCallback(){super.connectedCallback(),Y(this,{role:`group`,"aria-label":`Filter by severity`})}render(){let e=this.kind===`graph`?new Set(this.selected):A.filterSeverities,t=Go.filter(([t])=>(this.counts[t]??0)||e.has(t));return t.length===0?z:R`${t.map(([t,n])=>{let r=this.counts[t]??0,i=e.has(t);return R`<button type="button" class="${P({"sev-chip":!0,[t]:!0,active:i})}" aria-pressed="${String(i)}" @click="${()=>this._toggle(t)}"><span class="sd"></span><span class="name">${n}</span><span class="n">${r}</span></button>`})}`}_toggle(e){this.dispatchEvent(new CustomEvent(`severity-toggle`,{detail:{severity:e,kind:this.kind},bubbles:!0,composed:!0}))}};customElements.define(`severity-chips`,Ko);var qo=[[`corrected`,`Corrected`,`Show corrected severities (application-specific re-ratings)`],[`original`,`Original`,z]],Jo=class extends k{createRenderRoot(){return this}connectedCallback(){super.connectedCallback(),Y(this,{role:`group`,"aria-label":`Severity display mode`})}render(){let e=A.severityMode;return R`<span class="severity-mode-label">Severity</span><span class="severity-mode-chips">${qo.map(([t,n,r])=>{let i=e===t;return R`<button type="button" class="${P({"severity-mode-chip":!0,active:i})}" aria-pressed="${String(i)}" data-tooltip="${r}" @click="${()=>this._select(t)}">${n}</button>`})}</span>`}_select(e){e!==A.severityMode&&this.dispatchEvent(new CustomEvent(`severity-mode-change`,{detail:{mode:e},bubbles:!0,composed:!0}))}};customElements.define(`severity-mode-switch`,Jo);var Yo=R`<svg viewBox="0 0 16 16" width="13" height="13" aria-hidden="true"><path d="M8 1.8 14.4 5 8 8.2 1.6 5z" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linejoin="round"/><path d="M2.6 8 8 10.7 13.4 8" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"/><path d="M2.6 11 8 13.7 13.4 11" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"/></svg>`,Xo=`Show underlying code findings`,Zo=R`<svg viewBox="0 0 16 16" width="13" height="13" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M3 5.5v2h10v-2M8 7.5v3"/><rect x="1" y="1.5" width="4" height="4" rx=".6"/><rect x="11" y="1.5" width="4" height="4" rx=".6"/><rect x="6" y="10.5" width="4" height="4" rx=".6"/></svg>`,Qo=`Show only upstream dependency findings`,$o=class extends k{static properties={canDrop:{type:Boolean,attribute:`can-drop`},canDetail:{type:Boolean,attribute:`can-detail`},canUpstream:{type:Boolean,attribute:`can-upstream`},upstreamDisabled:{type:Boolean,attribute:`upstream-disabled`}};createRenderRoot(){return this}constructor(){super(),this.canDrop=!1,this.canDetail=!1,this.canUpstream=!1,this.upstreamDisabled=!1}connectedCallback(){super.connectedCallback(),Y(this,{role:`group`,"aria-label":`Revalidation layer`})}render(){let e=A.revalidateConflicts.size,t=e>0?R`<button type="button" class="revalidation-toggle revalidation-conflicts" aria-haspopup="dialog" aria-label="${`View ${e} revalidation conflict${e===1?``:`s`}`}" @click="${this._openConflicts}">${e} ${e===1?`conflict`:`conflicts`}</button>`:z,n=A.showRevalidation!==!1,r=n&&A.revalidationDetailed===!0,i=A.upstreamOnly===!0,a=i&&!this.upstreamDisabled;return R`${t}${e===0&&this.canDrop?R`<mode-switch class="revalidation-toggle" label="App" borderless .checked="${n}" accessible-label="App view — hide the issues the revalidation pass ruled out" .disabled="${i}" @click="${this._toggle}"></mode-switch>`:z}${e===0&&this.canDrop&&this.canDetail?R`<button type="button" class="${P({"revalidation-detail":!0,on:r})}" aria-pressed="${String(r)}" aria-label="${Xo}" data-tooltip="${Xo}" ?disabled="${!n||i}" @click="${this._toggleDetail}">${Yo}</button>`:z}${this.canUpstream?R`<button type="button" class="${P({"revalidation-upstream":!0,on:a})}" aria-pressed="${String(a)}" aria-label="${Qo}" data-tooltip="${Qo}" ?disabled="${this.upstreamDisabled}" @click="${this._toggleUpstream}">${Zo}</button>`:z}`}_toggle=()=>{this.dispatchEvent(new CustomEvent(`revalidation-change`,{detail:{on:A.showRevalidation===!1},bubbles:!0,composed:!0}))};_openConflicts=()=>{this.dispatchEvent(new CustomEvent(`revalidation-conflicts-open`,{bubbles:!0,composed:!0}))};_toggleDetail=()=>{this.dispatchEvent(new CustomEvent(`revalidation-detail-change`,{detail:{on:A.revalidationDetailed!==!0},bubbles:!0,composed:!0}))};_toggleUpstream=()=>{this.upstreamDisabled||this.dispatchEvent(new CustomEvent(`upstream-only-change`,{detail:{on:A.upstreamOnly!==!0},bubbles:!0,composed:!0}))}};customElements.define(`revalidation-switch`,$o);var es=R`<svg class="trash-icon" viewBox="0 0 16 16" width="11" height="11" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M3 4h10M6.5 4V2.5h3V4M5 4l.7 9h4.6L11 4"/></svg>`,ts=class extends k{createRenderRoot(){return this}render(){let e=A.currentView===`bundles`&&A.selectedBundle,t=!A.currentFile&&!e;return R`<button type="button" class="danger" ?disabled="${t}">${es}<span>Delete current</span></button>`}};customElements.define(`sidebar-delete-current`,ts);var ns=R`<svg viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M2 6h12v7a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V6Z"/><path d="M2 6l1.6-3.3A1.3 1.3 0 0 1 4.8 2h6.4a1.3 1.3 0 0 1 1.2.7L14 6"/><path d="M8 2v4"/></svg>`,rs=R`<svg viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><line x1="4" x2="4" y1="2.5" y2="10"/><circle cx="12" cy="4" r="2"/><circle cx="4" cy="12" r="2"/><path d="M12 6a6 6 0 0 1-6 6"/></svg>`,is={packages:{title:`Show packages`,icon:ns,view:`packages`},repositories:{title:`Show repositories`,icon:rs,view:`repositories`}},as=class extends k{static properties={kind:{type:String},count:{type:Number}};createRenderRoot(){return this}constructor(){super(),this.kind=``,this.count=0}render(){if(this.count===0)return z;let e=xo(`sidebar-view-button`,is,this.kind);if(!e)return z;let t=A.currentView===e.view;return R`<button type="button" class="${P({"sidebar-view-btn":!0,active:t})}" aria-label="${e.title}">${e.icon}<span class="view-btn-count">${this.count}</span></button>`}};customElements.define(`sidebar-view-button`,as);var os=[`invalid`,`deleted`],ss={package:{stateKey:`packageSlideTriage`},repository:{stateKey:`repositorySlideTriage`}},cs=class extends k{static properties={counts:{attribute:!1},kind:{type:String}};createRenderRoot(){return this}constructor(){super(),this.counts={},this.kind=``}connectedCallback(){super.connectedCallback(),Y(this,{role:`group`,"aria-label":`Triage view`})}render(){let e=xo(`slide-triage-tabs`,ss,this.kind);if(!e)return z;let t=A[e.stateKey],n=os.filter(e=>(this.counts[e]??0)>0||t===e);return n.length===0?z:R`${n.map(e=>{let n=t===e,r=this.counts[e]??0;return R`<button type="button" class="${P({"triage-state-btn":!0,[`triage-state-${e}`]:!0,active:n})}" aria-pressed="${String(n)}" @click="${()=>this._toggle(e)}">${e.charAt(0).toUpperCase()+e.slice(1)} (${r})</button>`})}`}_toggle(e){this.dispatchEvent(new CustomEvent(`slide-triage-toggle`,{detail:{kind:this.kind,value:e},bubbles:!0,composed:!0}))}};customElements.define(`slide-triage-tabs`,cs);var ls=[[`own`,`Sources`],[`modules`,`Deps`]],us=class extends k{createRenderRoot(){return this}connectedCallback(){super.connectedCallback(),Y(this,{role:`group`,"aria-label":`Source filter`})}render(){return R`${ls.map(([e,t])=>{let n=A.filterSources.has(e);return R`<button type="button" class="${P({"source-chip":!0,active:n})}" aria-pressed="${String(n)}" @click="${()=>this._toggle(e)}">${t}</button>`})}`}_toggle(e){this.dispatchEvent(new CustomEvent(`source-toggle`,{detail:{source:e},bubbles:!0,composed:!0}))}};customElements.define(`source-filter`,us);var ds=R`<svg viewBox="0 0 24 24" width="13" height="13" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true"><circle cx="11" cy="11" r="7"/><path d="m20 20-3.5-3.5"/></svg>`,fs=R`<svg viewBox="0 0 16 16" width="13" height="13" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M3 6h10v4"/></svg>`,ps={findings:{stateKey:`filterInclude`,placeholder:`Search findings…`},files:{stateKey:`filesSearch`,placeholder:`Search files…`}},ms=class extends k{static properties={kind:{type:String}};createRenderRoot(){return this}constructor(){super(),this.kind=``}render(){let e=xo(`toolbar-search`,ps,this.kind);if(!e)return z;let t=A[e.stateKey];return R`${ds} <input type="text" aria-label="${e.placeholder}" placeholder="${e.placeholder}" .value="${M(t)}" @input="${this._onInput}"> ${this.kind===`findings`&&t?this._negateToggle():z}`}_negateToggle(){let e=A.filterIncludeNegate;return R`<button type="button" class="${P({"search-negate-btn":!0,active:e})}" data-tooltip="${e?`Negation on — click to undo`:`Negate: show non-matching findings`}" aria-label="Negate search" aria-pressed="${String(e)}" @click="${this._onToggleNegate}">${fs}</button>`}_onInput=e=>{this.dispatchEvent(new CustomEvent(`search-input`,{detail:{kind:this.kind,value:e.target.value},bubbles:!0,composed:!0}))};_onToggleNegate=()=>{this.dispatchEvent(new CustomEvent(`search-negate-toggle`,{bubbles:!0,composed:!0}))}};customElements.define(`toolbar-search`,ms);var hs=class extends k{static properties={options:{attribute:!1}};createRenderRoot(){return this}constructor(){super(),this.options=[]}render(){let e=[{value:``,label:`All repositories`,special:!0,reset:!0},...this.options.map(e=>({value:e??pe,label:e==null?`(no repo)`:Yn(e),special:e==null}))];return R`<repository-selector variant="filter" label="Filter by repository" .options="${e}" .value="${A.filterRepo}" @repository-change="${e=>this.dispatchEvent(new CustomEvent(`repo-change`,{detail:{value:e.detail.value},bubbles:!0,composed:!0}))}"></repository-selector>`}};customElements.define(`repo-filter`,hs);var gs={"":{cls:`included`,label:`+ Partial`,title:`Confirmed, partial and revalidation rows — click for full confirmations only`},exclude:{cls:`excluded`,label:`− Partial`,title:`Full confirmations only — click to show the partial ones only`},only:{cls:`only`,label:`only Partial`,title:`Partial confirmations only — click to show all of them again`}},_s=class extends k{static properties={options:{attribute:!1},hasPartial:{type:Boolean,attribute:`has-partial`}};createRenderRoot(){return this}constructor(){super(),this.options=[],this.hasPartial=!1}render(){return R`<select class="sort-select" aria-label="Filter by revalidation outcome" .value="${M(A.filterRevalidate)}" @change="${this._onChange}"><option value="" hidden ?selected="${A.filterRevalidate===``}"></option><option value="">Confidence</option>${this.options.map(e=>R`<option value="${e.value}" ?selected="${A.filterRevalidate===e.value}">${e.label}</option>`)}</select> ${this.hasPartial&&A.filterRevalidate===`confirmed`?this._partialChip():z}`}_partialChip(){let e=gs[A.filterPartial]??gs[``];return R`<button type="button" class="${P({"partial-cycle":!0,[e.cls]:!0})}" data-tooltip="${e.title}" @click="${this._onPartial}">${e.label}</button>`}_onPartial=()=>{let e=ar.indexOf(A.filterPartial),t=ar[(e+1)%ar.length];this.dispatchEvent(new CustomEvent(`partial-change`,{detail:{value:t},bubbles:!0,composed:!0}))};_onChange=e=>{let{value:t}=e.target;t||(e.target.selectedIndex=0),this.dispatchEvent(new CustomEvent(`revalidate-change`,{detail:{value:t},bubbles:!0,composed:!0}))}};customElements.define(`revalidate-filter`,_s);var vs=[[`none`,`none`,`unmarked`],[`red`,`r`,`red`],[`blue`,`b`,`blue`],[`green`,`g`,`green`],[`gray`,`x`,`gray`]],ys=class extends k{static properties={counts:{attribute:!1},selected:{attribute:!1},kind:{type:String}};createRenderRoot(){return this}constructor(){super(),this.counts={},this.selected=[],this.kind=`findings`}connectedCallback(){super.connectedCallback(),Y(this,{role:`group`,"aria-label":`Filter by mark color`})}render(){let e=this.kind===`graph`?new Set(this.selected):A.filterColors;return vs.some(([t])=>(this.counts[t]??0)||e.has(t))?R`${vs.map(([t,n,r])=>{let i=this.counts[t]??0,a=e.has(t);return R`<button type="button" class="${a?`active`:``}" aria-label="${`${r} (${i})`}" aria-pressed="${String(a)}" @click="${()=>this._toggle(t)}"><span class="${`td ${n}`}"></span><span class="count">${i}</span></button>`})}`:z}_toggle(e){this.dispatchEvent(new CustomEvent(`color-toggle`,{detail:{color:e,kind:this.kind},bubbles:!0,composed:!0}))}};customElements.define(`triage-filter`,ys);var bs=[`inprogress`,`fixed`,`invalid`,`deleted`,`ignored`],xs={graph:`graph2-triage-selector`,packages:`packages-triage-selector`},Ss={inprogress:`In progress`},Cs=e=>Ss[e]??e.charAt(0).toUpperCase()+e.slice(1),ws=class extends k{static properties={counts:{attribute:!1},states:{attribute:!1},variant:{type:String}};createRenderRoot(){return this}constructor(){super(),this.counts={},this.states=null,this.variant=``}connectedCallback(){super.connectedCallback(),Y(this,{role:`group`,"aria-label":`Triage view`})}render(){let e=this.states??bs,t=e.reduce((e,t)=>e+(this.counts[t]??0),0),n=this.variant?xs[this.variant]:null;this.variant&&n===void 0&&console.warn(`<triage-selector>: unknown variant ${JSON.stringify(this.variant)}; expected one of ${Object.keys(xs).map(e=>JSON.stringify(e)).join(`, `)} or "".`);for(let e of Object.values(xs))this.classList.toggle(e,e===n);let r=t===0&&!A.shownTriage;return this.classList.toggle(`is-empty`,r),r?z:R`${e.map(e=>{let t=this.counts[e]??0,n=A.shownTriage===e;if(t===0&&!n)return z;let r=Cs(e);return R`<button type="button" class="${P({"triage-state-btn":!0,[`triage-state-${e}`]:!0,active:n})}" data-triage-show="${e}" aria-pressed="${String(n)}"><span>${r}</span><span class="n">${t}</span></button>`})}`}};customElements.define(`triage-selector`,ws);var Ts={table:R`<svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"><rect x="3" y="3" width="18" height="18" rx="2"/><line x1="3" x2="21" y1="9" y2="9"/><line x1="3" x2="21" y1="15" y2="15"/><line x1="9" x2="9" y1="3" y2="21"/></svg>`,list:R`<svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true"><line x1="3" x2="21" y1="6" y2="6"/><line x1="3" x2="21" y1="12" y2="12"/><line x1="3" x2="21" y1="18" y2="18"/></svg>`,grouped:R`<svg viewBox="0 0 16 16" width="16" height="16" fill="currentColor" aria-hidden="true"><rect x="2" y="1.5" width="12" height="2" rx=".4"/><rect x="5" y="4.4" width="9" height="1.3"/><rect x="5" y="6.2" width="9" height="1.3"/><rect x="2" y="8.5" width="12" height="2" rx=".4"/><rect x="5" y="11.4" width="9" height="1.3"/><rect x="5" y="13.2" width="9" height="1.3"/></svg>`,kanban:R`<svg viewBox="0 0 16 16" width="16" height="16" fill="currentColor" aria-hidden="true"><rect x="1.5" y="2" width="3.8" height="12" rx=".6" fill="none" stroke="currentColor" stroke-width="1"/><rect x="6.1" y="2" width="3.8" height="12" rx=".6" fill="none" stroke="currentColor" stroke-width="1"/><rect x="10.7" y="2" width="3.8" height="12" rx=".6" fill="none" stroke="currentColor" stroke-width="1"/><rect x="2.4" y="3.6" width="2" height="1.4" rx=".2"/><rect x="2.4" y="5.6" width="2" height="1.4" rx=".2"/><rect x="7" y="3.6" width="2" height="1.4" rx=".2"/><rect x="11.6" y="3.6" width="2" height="1.4" rx=".2"/><rect x="11.6" y="5.6" width="2" height="1.4" rx=".2"/><rect x="11.6" y="7.6" width="2" height="1.4" rx=".2"/></svg>`,focus:R`<svg viewBox="0 0 16 16" width="16" height="16" fill="currentColor" aria-hidden="true"><rect x="1.5" y="2.5" width="8.5" height="11" rx=".6" fill="none" stroke="currentColor" stroke-width="1"/><rect x="3" y="4.4" width="5.5" height="1"/><rect x="3" y="6.4" width="5.5" height="1"/><rect x="3" y="8.4" width="3.5" height="1"/><rect x="11.2" y="2.5" width="3.3" height="2.5" rx=".4" fill="currentColor" opacity=".55"/><rect x="11.2" y="5.7" width="3.3" height="2.5" rx=".4" fill="currentColor" opacity=".35"/><rect x="11.2" y="8.9" width="3.3" height="2.5" rx=".4" fill="currentColor" opacity=".22"/></svg>`,graph:R`${Sr(Tr)}`},Es={table:`Table view (compact rows, click a row to expand)`,list:`List view (flat, one card per finding)`,grouped:`List view, grouped by file`,focus:`Focus view (one finding centered + a queue of next findings)`,kanban:`Kanban board, columns grouped by triage status`,graph:`Graph view (canvas with imports / exports)`},Ds=[`kanban`,`focus`,`table`,`list`,`grouped`,`graph`],Os=class extends k{static properties={modes:{type:String},kind:{type:String}};createRenderRoot(){return this}constructor(){super(),this.modes=Ds.join(`,`),this.kind=`findings`}connectedCallback(){super.connectedCallback(),Y(this,{role:`group`,"aria-label":`View mode`})}render(){let e=this.kind===`files`?A.filesViewMode:A.viewMode,t=this.modes.split(`,`).map(e=>e.trim()).filter(e=>Ds.includes(e)),n=t.length>0?t:Ds;return R`${n.map(t=>R`<button type="button" class="${P({"view-mode-btn":!0,active:e===t})}" aria-label="${Es[t]}" aria-pressed="${String(e===t)}" @click="${()=>this._select(t,e)}">${Ts[t]}</button>`)}`}_select(e,t){e!==t&&this.dispatchEvent(new CustomEvent(`view-mode-change`,{detail:{mode:e,kind:this.kind},bubbles:!0,composed:!0}))}};customElements.define(`view-mode-buttons`,Os);var ks=`/api/oauth/github/link`,As={"github-account-own":`That is the account you sign in with. On GitHub, pick or add the other account to link.`,"github-account-registered":`That GitHub account has signed in here before, so it is a user of its own and cannot be linked.`,"github-account-linked":`That GitHub account is already linked to another user.`,"github-authorization-declined":`Linking was cancelled on GitHub.`,"invalid-oauth-state":`The link request expired or was started from another session. Try again.`},js=e=>new Date(e).toLocaleDateString(void 0,{month:`short`,day:`numeric`,year:`numeric`}),Ms=class extends B{static properties={session:{attribute:!1},linkError:{attribute:!1},_profile:{state:!0},_pending:{state:!0},_busy:{state:!0},_error:{state:!0},_avatarRevision:{state:!0}};constructor(){super(),this._profile=null,this._avatarRevision=0,this._controller=new AbortController}createRenderRoot(){return this}disconnectedCallback(){super.disconnectedCallback(),this._controller.abort(),this._key=null}get _readOnly(){return!!this.session?.viewer||u()!==null}async _load(){let e=this._key;this._busy=!0,this._error=null;try{let t=await Ve({signal:this._controller.signal});e===this._key&&(this._profile=t)}catch(t){e===this._key&&t.name!==`AbortError`&&(this._error=t.message)}finally{e===this._key&&(this._busy=!1)}}async _change(e,t=null){if(this._busy||this._readOnly)return;let n=this._key;this._busy=!0,this._error=null;try{let r=await e(this.session.csrfToken,{signal:this._controller.signal});if(n!==this._key)return;let i=r.avatarAccount!==this._profile?.avatarAccount;i&&this._avatarRevision++,this._profile=r,rn(this.session.id,r,i,t),document.dispatchEvent(new CustomEvent(`managed-profile-change`,{detail:{userId:this.session.id,name:r.name,avatarChanged:i}}))}catch(e){n===this._key&&e.name!==`AbortError`&&(this._error=e.message)}finally{n===this._key&&(this._busy=!1,this._pending=null)}}_choose(e,t){return this._busy||this._readOnly?Promise.resolve():(this._pending={[`${e}Account`]:t},this._change((n,r)=>Ue({[e]:t},n,r)))}_unlink(e){return this._change((t,n)=>Ke(e.id,t,n),{login:e.login,githubId:e.githubId})}_avatar(e,{own:t=!1,initial:n,large:r=!1}={}){let i=`/api/avatar/${encodeURIComponent(e)}${t?`?own`:this._avatarRevision?`?v=${this._avatarRevision}`:``}`;return R`<span class="${`managed-profile-avatar${r?` is-large`:``}`}" aria-hidden="true"><span>${(n[0]??`?`).toUpperCase()}</span> ${u()?z:R`<img alt="" src="${i}" @error="${e=>e.currentTarget.classList.add(`broken`)}">`}</span>`}_account({id:e,githubId:t,login:n,name:r,linkedAt:i},a){let o=e===null,s=this._busy||this._readOnly;return R`<tr><td><span class="managed-profile-account">${this._avatar(o?this.session.id:e,{own:o,initial:n})} <span><a href="${`https://github.com/${encodeURIComponent(n)}`}" target="_blank" rel="noreferrer">@${n}</a> <span class="managed-profile-muted">${o?`Sign-in account`:i===null?`Linked`:`Linked ${js(i)}`}</span></span></span></td><td><label class="managed-profile-choice"><input type="radio" name="managed-profile-name" .checked="${M(a.nameAccount===e)}" ?disabled="${s}" aria-label="${`Use @${n}'s name`}" @change="${()=>this._choose(`name`,e)}"> ${r?R`<span>${r}</span>`:R`<span class="managed-profile-muted">No name</span>`}</label></td><td><label class="managed-profile-choice"><input type="radio" name="managed-profile-avatar" .checked="${M(a.avatarAccount===e)}" ?disabled="${s}" aria-label="${`Use @${n}'s avatar`}" @change="${()=>this._choose(`avatar`,e)}"><span class="managed-profile-muted">Avatar</span></label></td><td>${o?z:R`<button type="button" class="npm-review-button" ?disabled="${s}" aria-label="${`Unlink @${n}`}" @click="${()=>this._unlink({id:e,githubId:t,login:n})}">Unlink</button>`}</td></tr>`}render(){let e=JSON.stringify([this.session?.id,this.session?.role]);e!==this._key&&(this._controller.abort(),this._controller=new AbortController,this._key=e,this._profile=null,this._load());let t=this._profile,n=t?.login??this.session?.login??``,r=t?t.name:this.session?.name??null,i=this.linkError?As[this.linkError]??`Could not link the account (${this.linkError}).`:null;return R`<section class="managed-profile"><header class="managed-profile-card">${this._avatar(this.session?.id??``,{initial:n,large:!0})}<div><h1>${r||`@${n}`}</h1>${r?R`<p class="managed-profile-muted">@${n}</p>`:z}</div></header>${i?R`<p class="managed-profile-error" role="alert">${i}</p>`:z} ${this._error?R`<p class="managed-profile-error" role="alert">${this._error}</p>`:z}<section class="managed-profile-section" aria-labelledby="managed-profile-accounts"><h2 id="managed-profile-accounts">GitHub accounts</h2><p class="managed-profile-muted">You sign in as @${n}. Your name and avatar can come from any of your accounts. A linked account cannot sign in or register here.</p>${t?R`<table class="managed-profile-accounts"><thead><tr><th scope="col">Account</th><th scope="col">Name</th><th scope="col">Avatar</th><th scope="col"><span class="sr-only">Actions</span></th></tr></thead><tbody>${[{id:null,login:t.login,name:t.githubName,linkedAt:null},...t.accounts].map(e=>this._account(e,{...t,...this._pending}))}</tbody></table>`:z} ${this._readOnly?R`<p class="managed-profile-muted">${this.session?.viewer?`Viewing as another user is read only.`:`The preview changes nothing.`}</p>`:R`<a class="npm-review-button npm-review-primary" href="${ks}">Link GitHub account</a><p class="managed-profile-muted">GitHub asks which account to link: pick or add the other account there.</p>`}</section></section>`}};customElements.define(`managed-profile`,Ms);var Ns=class extends k{createRenderRoot(){return this}render(){return A.reports.length>0&&A.currentView===`findings`&&A.viewMode!==`graph`&&A.viewMode!==`kanban`?R`<button type="button" class="toolbar-export-btn" aria-label="Download or print report" @click="${this._onClick}">${t}</button>`:z}_onClick=()=>{this.dispatchEvent(new CustomEvent(`download-requested`,{bubbles:!0,composed:!0}))}};customElements.define(`download-button`,Ns);var Ps=class extends k{static styles=Or`.preview{position:fixed;inset:auto;margin:0;padding:14px;box-sizing:border-box;width:min(24rem,calc(100vw - 24px));max-height:calc(100vh - 24px);overflow:auto;border:1px solid var(--border);border-radius:var(--ui-radius, 10px);background:var(--bg);color:var(--text);box-shadow:0 8px 28px #00000040;font:13px/1.45 system-ui,sans-serif;text-align:left;white-space:normal;overflow-wrap:anywhere;letter-spacing:normal;cursor:default}.preview.wide{width:min(36rem,calc(100vw - 24px))}@media print{.preview{display:none}}:host-context(body.theme-w95) *{overscroll-behavior:none}`;constructor(){super(),this.showTimer=null,this.hideTimer=null}connectedCallback(){super.connectedCallback(),ir(this.renderRoot)}disconnectedCallback(){this._hidePreview(),super.disconnectedCallback()}updated(){let e=this.renderRoot.querySelector(`.preview`);e?e.matches(`:popover-open`)&&this._positionPreview():this._hidePreview()}_schedulePreview(){clearTimeout(this.hideTimer),clearTimeout(this.showTimer),this.renderRoot.querySelector(`.preview`)&&(this.showTimer=setTimeout(()=>{if(!this.isConnected)return;let e=this.renderRoot.querySelector(`.preview`);e&&(rr(),e.showPopover(),this._positionPreview(),document.addEventListener(`keydown`,this._previewKeyDown,!0),window.addEventListener(`scroll`,this._previewScroll,!0),window.addEventListener(`resize`,this._hidePreview))},150))}_keepPreview(){clearTimeout(this.hideTimer)}_leavePreview(){clearTimeout(this.showTimer),clearTimeout(this.hideTimer),this.hideTimer=setTimeout(()=>{this.renderRoot.querySelector(`.preview`)?.contains(this.renderRoot.activeElement)||this._hidePreview()},150)}_hidePreview=()=>{clearTimeout(this.showTimer),clearTimeout(this.hideTimer);let e=this.renderRoot?.querySelector(`.preview`);e?.matches(`:popover-open`)&&e.hidePopover(),document.removeEventListener(`keydown`,this._previewKeyDown,!0),window.removeEventListener(`scroll`,this._previewScroll,!0),window.removeEventListener(`resize`,this._hidePreview)};_previewKeyDown=e=>{e.key===`Escape`&&(e.preventDefault(),e.stopPropagation(),this.renderRoot.querySelector(`.preview`)?.contains(this.renderRoot.activeElement)&&this.renderRoot.querySelector(`[aria-details]`).focus({preventScroll:!0}),this._hidePreview())};_previewScroll=e=>{e.composedPath().includes(this.renderRoot.querySelector(`.preview`))||this._hidePreview()};_positionPreview(){let e=this.renderRoot.querySelector(`.preview`),t=this.renderRoot.querySelector(`[aria-details]`).getBoundingClientRect(),{width:n,height:r}=e.getBoundingClientRect(),i=Math.max(12,Math.min(t.left,window.innerWidth-n-12)),a=t.bottom+8+r<=window.innerHeight-12?t.bottom+8:Math.max(12,t.top-8-r);e.style.left=`${i}px`,e.style.top=`${a}px`}},Fs={open:`Open`,draft:`Draft`,closed:`Closed`,merged:`Merged`,completed:`Completed`,not_planned:`Not planned`,duplicate:`Duplicate`,unknown:`Closed`},Is=R`<svg viewBox="0 0 16 16" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="4" cy="3" r="1.75"/><circle cx="4" cy="13" r="1.75"/><circle cx="12" cy="13" r="1.75"/><path d="M4 4.75v6.5M12 11.25V5a2 2 0 0 0-2-2H8m2-2L8 3l2 2"/></svg>`,Ls=R`<svg viewBox="0 0 16 16" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><circle cx="8" cy="8" r="6.25"/><circle cx="8" cy="8" r="1.5" fill="currentColor" stroke="none"/></svg>`,Rs={completed:R`<svg viewBox="0 0 16 16" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="8" cy="8" r="6.25"/><path d="m5 8 2 2 4-4"/></svg>`,not_planned:R`<svg viewBox="0 0 16 16" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><circle cx="8" cy="8" r="6.25"/><path d="m3.5 12.5 9-9"/></svg>`},zs=class extends Ps{static properties={url:{type:String},compact:{type:Boolean,reflect:!0}};static styles=[Ps.styles,Or`:host{display:inline;word-break:normal}a{color:var(--accent);text-decoration:none;overflow-wrap:anywhere;cursor:default}.status{display:inline-flex;align-items:center;gap:.3em;vertical-align:text-bottom;margin-right:.35em;font-weight:600;white-space:nowrap}svg{flex:none}.open{color:light-dark(#1a7f37,#3fb950)}.draft,.not_planned,.duplicate,.unknown,.unavailable{color:var(--muted)}.closed{color:light-dark(#d1242f,#f85149)}.merged,.completed{color:light-dark(#8250df,#a371f7)}:host(:not([compact])){display:block}:host(:not([compact])) .fix-link{display:flex;align-items:center;gap:.55rem;min-width:0}.link-icon{flex:none;line-height:1}.link-icon svg{display:block}.link-title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text);font-weight:500;line-height:1.5}.link-icon.unavailable+.link-title{color:var(--accent)}.ref{min-width:0;max-width:32%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted);font-size:.74rem}.link-status{flex:none;padding:.15rem .4rem;border-radius:999px;background:color-mix(in srgb,currentColor 10%,transparent);font-size:.7rem;font-weight:500;line-height:1.3}:host([compact]){display:inline-flex}:host([compact]) .fix-link{display:inline-flex;align-items:center;justify-content:center;width:100%;height:100%}:host([compact]) .fix-link svg{width:14px;height:14px}:host([compact]) .status{margin:0;font-size:1rem;line-height:1}.preview{width:min(28.8rem,calc(100vw - 24px))}.preview.wide{width:min(43.2rem,calc(100vw - 24px))}:host-context(body.theme-w95) .preview{background:var(--w95-tooltip)}.preview-header{display:flex;align-items:center;justify-content:space-between;gap:12px}.preview-ref{display:inline-flex;align-items:center;gap:.4rem;min-width:0;color:var(--muted);font-size:12px;line-height:1.4}.preview-ref span{min-width:0}.preview-description{margin-top:8px;white-space:pre-wrap}.preview-title{margin-top:8px;font-size:15px;font-weight:600;line-height:1.4}.preview .preview-header .status{flex:none;margin:0;font-size:12px;line-height:1.4}@media print{:host(:not([compact])) .fix-link{display:block}.link-title,.ref{white-space:normal;overflow:visible;text-overflow:clip;max-width:none}.link-icon{display:inline-block;vertical-align:middle;margin-right:.55rem}.ref,.link-status{margin-left:.55rem}.preview{display:none}}`];constructor(){super(),this.url=``,this.compact=!1,this.unsubscribe=null}connectedCallback(){super.connectedCallback(),this.unsubscribe=Kt(()=>this.requestUpdate()),this.hasUpdated&&this.requestUpdate()}disconnectedCallback(){this.unsubscribe?.(),this.unsubscribe=null,super.disconnectedCallback()}updated(e){e.has(`url`)||e.has(`compact`)?this._hidePreview():super.updated(e)}render(){if(!yr(this.url))return R`${this.url}`;let e=jt(this.url),t=!e&&It(this.url),n=e||t,r=Vt.read(this.url);if(!r&&!n){let e=`Open fix link: ${this.url}`;return R`<a class="${this.compact?`fix-link`:``}" href="${this.url}" target="_blank" rel="noopener noreferrer" draggable="false" data-tooltip="${this.compact?e:z}" aria-label="${e}">${this.compact?R`<slot></slot>`:this.url}</a>`}let i=r?t&&r.status===`closed`?r.stateReason??`unknown`:r.status:`unavailable`,a=e?Is:t?Rs[i]??Ls:null,o=n?`${n.repo}#${n.number}`:``,s=(r?.title.length??0)>40||(r?.description??``).split(/[\r\n]/u).some(e=>e.length>100),c=r?`${Fs[i]} ${e?`pull request`:`issue`}: ${r.title} (${o})`:n?`Open ${e?`pull request`:`issue`}: ${o}`:`Open fix link: ${this.url}`;return R`<a class="fix-link" href="${this.url}" target="_blank" rel="noopener noreferrer" draggable="false" aria-label="${c}" aria-details="${this.compact&&n?`fix-preview`:z}" data-tooltip="${this.compact&&!n?c:z}" @mouseenter="${this._schedulePreview}" @mouseleave="${this._leavePreview}" @focus="${this._schedulePreview}" @blur="${this._leavePreview}" @click="${this._hidePreview}">${this.compact?a?R`<span class="${`status ${i}`}">${a}</span>`:R`<slot></slot>`:R`${a?R`<span class="${`link-icon ${i}`}">${a}</span>`:z} <span class="link-title">${r?.title??(o||this.url)}</span> ${r?R`<span class="ref">${o}</span><span class="${`link-status ${i}`}">${Fs[i]}</span>`:z}`} </a>${this.compact&&n?R`<a class="${s?`preview wide`:`preview`}" id="fix-preview" popover="manual" href="${this.url}" target="_blank" rel="noopener noreferrer" draggable="false" aria-label="${`Open ${e?`pull request`:`issue`} ${o} on GitHub`}" @mouseenter="${this._keepPreview}" @mouseleave="${this._leavePreview}" @focusin="${this._keepPreview}" @focusout="${this._leavePreview}" @click="${e=>{e.stopPropagation(),this._hidePreview()}}"><div class="preview-header"><span class="preview-ref">${Sr(Dr)}<span>${o}</span></span> <span class="${`status ${i}`}">${a}${r?Fs[i]:e?`Pull request`:`Issue`}</span></div>${r?R`<div class="preview-title">${r.title}</div>`:z} ${r?.description?R`<div class="preview-description">${r.description}</div>`:z}</a>`:z}`}};customElements.define(`managed-fix-link`,zs);var Bs=class extends Ps{static properties={finding:{attribute:!1},comment:{type:String}};static styles=[Ps.styles,L(a),Or`:host{display:inline-flex}:host([hidden]){display:none!important}button{border:0;padding:0;background:none;color:inherit;font:inherit;cursor:default}.preview-trigger{display:inline-flex;align-items:center;justify-content:center;line-height:0}.preview-trigger:hover{color:var(--accent)}.managed-comment+.managed-comment{margin-top:12px;padding-top:12px;border-top:1px solid var(--border)}.comment-body{white-space:pre-wrap}.comment-body a{color:var(--accent);text-decoration:none}.comment-body a:hover{text-decoration:underline}.preview-footer{display:flex;justify-content:flex-end;margin-top:8px}.edit-hint{color:var(--muted);font-size:12px}.edit-hint:hover{color:var(--accent)}`];constructor(){super(),this.finding=null,this.comment=``,this.unsubscribe=null}connectedCallback(){super.connectedCallback(),this._subscribe(),document.addEventListener(`managed-comments-reset`,this._resetComments),this.hasUpdated&&this.requestUpdate()}disconnectedCallback(){this.unsubscribe?.(),this.unsubscribe=null,document.removeEventListener(`managed-comments-reset`,this._resetComments),super.disconnectedCallback()}updated(e){this.hidden=!this.renderRoot.querySelector(`.preview`),e.has(`finding`)&&(this._hidePreview(),this._subscribe()),super.updated(e)}_subscribe(){this.unsubscribe?.(),this.unsubscribe=this.finding?.id?re(this.finding.id,()=>this.requestUpdate()):null}_resetComments=()=>{this._hidePreview(),this.requestUpdate()};_previewClick(e){if(e.target.closest(`a, button`)){this._hidePreview();return}window.getSelection?.()?.toString()||(e.stopPropagation(),this.renderRoot.querySelector(`.preview-trigger`).click())}render(){let e=j(),t=e?_(this.finding):[];if(!(e?t.length>0:this.comment))return z;let n=(e?t.map(e=>e.body):[this.comment]).some(e=>e.split(/[\r\n]/u).some(e=>e.length>100));return R`<button type="button" class="preview-trigger mark-comment" aria-label="${e?`View comments`:`Edit comment`}" aria-details="comment-preview" @mouseenter="${this._schedulePreview}" @mouseleave="${this._leavePreview}" @focus="${this._schedulePreview}" @blur="${this._leavePreview}" @click="${this._hidePreview}"><slot></slot></button><div class="${n?`preview wide`:`preview`}" id="comment-preview" popover="manual" role="region" aria-label="${e?`Comments`:`Comment`}" @mouseenter="${this._keepPreview}" @mouseleave="${this._leavePreview}" @focusin="${this._keepPreview}" @focusout="${this._leavePreview}" @click="${this._previewClick}">${e?t.map(e=>xe(e,Ce(e.body))):R`<div class="comment-body">${Ce(this.comment)}</div><div class="preview-footer"><button type="button" class="mark-comment edit-hint">Edit</button></div>`}</div>`}};customElements.define(`comment-preview`,Bs);function Vs(e){let t=new Map;for(let[n,r]of A.triage)r[e]&&t.set(n,r[e]);return t}window.DeepView={get reports(){return A.reports.slice()},get groups(){return Zt()},get findings(){return Zt().flat()},get currentFile(){return A.currentFile},get currentWorkspace(){return A.currentWorkspace},triage:{get markers(){return Vs(`color`)},get triageState(){return Vs(`triage`)},get comments(){return Vs(`comment`)},get fixes(){return Vs(`fix`)},get flags(){return Vs(`flagged`)},get(e){let t=A.triage.get(e),n={};return t?.color&&(n.color=t.color),t?.triage&&(n.triage=t.triage),t?.comment&&(n.comment=t.comment),t?.fix&&(n.fix=t.fix),t?.flagged!==void 0&&(n.flagged=t.flagged),n},async set(e,{color:t,triage:n,comment:r,fix:i,flagged:a}={}){if(et())throw Error(`DeepView.triage.set: triage is read-only on this page`);let o=!1;if(t!==void 0&&(t===null||t===``?N(A.triage,e,{color:void 0})&&(o=!0):A.triage.get(e)?.color!==t&&(N(A.triage,e,{color:t}),o=!0)),n!==void 0){if(n===null||n===``||n===!1)N(A.triage,e,{triage:void 0})&&(o=!0);else if(n===`inprogress`||n===`fixed`||n===`invalid`||n===`deleted`||n===`ignored`)A.triage.get(e)?.triage!==n&&(N(A.triage,e,{triage:n}),o=!0);else throw TypeError(`DeepView.triage.set: unknown triage value ${JSON.stringify(n)} (expected 'inprogress' | 'fixed' | 'invalid' | 'deleted' | 'ignored' | null)`)}if(r!==void 0){let t=r?String(r):``;t?A.triage.get(e)?.comment!==t&&(N(A.triage,e,{comment:t}),o=!0):N(A.triage,e,{comment:void 0})&&(o=!0)}if(i!==void 0){let t=i?String(i):``;t?A.triage.get(e)?.fix!==t&&(N(A.triage,e,{fix:t}),o=!0):N(A.triage,e,{fix:void 0})&&(o=!0)}if(a!==void 0){let t=a===null||a===``?void 0:!!a;A.triage.get(e)?.flagged!==t&&(N(A.triage,e,{flagged:t}),o=!0)}return o&&(await y(),E()),o}},forceManagedMode:zt,setTheme:Ba,get theme(){return Va()},triageSync:le,refresh(){E()},export(){return Pn()},compareReports(){return Mn()}};var Hs={default:S.default,"claude-security":S[`claude-security`],"codex-security":S[`codex-security`],deepsec:S.deepsec,piolium:S.piolium,"markdown-generic":S[`markdown-generic`],bundle:Cr,workspace:wr,links:Er,github:Dr};for(let e of document.querySelectorAll(`.drop-supported-icon[data-icon]`)){let t=Hs[e.dataset.icon];t&&(e.innerHTML=tr(t))}Dn(E),Ae(E),wn(E),le.onStatusChange(E),vn(async(e,t)=>{A.currentWorkspace===e?await pn(e):A.currentFile&&A.currentFile===t?await on(t):await T()}),bn(async()=>{await T(),A.currentView===`bundles`&&E()}),jr(),Pr();async function Us(){let e=_t();if(!e)return!1;try{history.replaceState(null,``,location.pathname)}catch{}let t;try{t=await Fn({encoded:e})}catch(e){return alert(`Couldn't open the share-link unlock prompt: ${e.message}`),!1}if(!t)return!1;let n=await be({id:t.id,name:t.name,privateKey:t.privateKeyBase64});if(n.status===`already-attached`)return alert(`This workspace is already attached as "${n.workspace.name}".`),!1;if(n.status===`name-collision`){let e=n.existing?.name;return alert(e?`A workspace named "${e}" already exists. Open the share link again and pick a different name.`:`The shared workspace name is empty or invalid. Ask the sender to re-share with a real name.`),!1}return n.workspace?.id?await pn(n.workspace.id):await T(),!0}async function Ws(){let e=ur();if(!e)return!1;try{history.replaceState(null,``,location.pathname)}catch{}let t=await wt(e);return t.ok?!0:(alert(t.reason),!1)}var Gs=!1;async function Ks(){if(await Wt(),!Gs&&(j()||!x()||ot())){Gs=!0;try{await qs()}finally{ft.hidden=!1,bt()}}}async function qs(){let e=ge(),t=()=>e===ge()&&!j();if(j()){await T();return}if(await Ft(),!t()||(fe(),await Promise.all([T(),Oe().catch(e=>console.warn(`initial linked findings:`,e))]),!t())||await Us()||!t()||await Ws()||!t())return;let n=At(Qt);if(n){if(n.startsWith(`wbs:`)||n.startsWith(`wrs:`))await cn(n.slice(4),n.startsWith(`wrs:`)?`reports`:`bundles`);else if(n.startsWith(`ws:`)){let e=n.slice(3);v().some(t=>t.id===e)&&await pn(e)}else if(n.startsWith(`b:`)){let e=n.slice(2),t=e.indexOf(` `),r=t>=0?e.slice(0,t):e,i=t>=0?e.slice(t+1):``,a=pr.has(i)?i:`overview`;if((A.bundles??[]).some(e=>e.integrity===r)){let e=v().filter(e=>e.bundles.includes(r));ln(r,a,{workspaceId:e.length===1?e[0].id:null}),E(),_n(r),await T()}}else{let e=await Cn();if(!t())return;let r=Le(n);r&&e.includes(r.name)&&await on(r.name,void 0,{workspaceId:r.workspaceId})}}}var Js=!1,Ys=!1;document.addEventListener(`managed-client-mode-change`,()=>{Js=!j()&&x()});function Xs(e){Ys||(Ys=!0,queueMicrotask(()=>{alert(e+` This tab will reload to refresh its state. Any unsaved edits in this tab will be lost.`),location.reload()}))}mt(async()=>{if(await Wt(),j()){E();return}let e=Js,t=x();if(Js=t,E(),!Gs&&ot()){Ks().catch(e=>console.warn(`continueBoot:`,e));return}if(Gs&&t&&!ot()){Xs(`Encryption was just enabled in another tab.`);return}Gs&&e&&!t&&!nt()&&Xs(`Encryption was disabled in another tab.`)}),window.addEventListener(`hashchange`,()=>{!Gs||j()||(async()=>{await Us()||await Ws()})().catch(e=>console.warn(`deep-link hashchange:`,e))}),(async()=>{if(!await Wr()){await Wt(),Js=!j()&&x();try{let e=window.matchMedia?.(`(display-mode: window-controls-overlay)`),t=()=>{let t=!1;try{t=localStorage.getItem(`deepview.sidebarCollapsed`)===`1`}catch{}vt.classList.toggle(`collapsed`,t&&!e?.matches)};t(),e?.addEventListener(`change`,t);let n=e?.matches;if(window.matchMedia?.(`(display-mode: standalone)`).matches||n){let e=document.querySelector(`meta[name="viewport"]`);e&&e.setAttribute(`content`,`width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no`),window.addEventListener(`wheel`,e=>{(e.ctrlKey||e.metaKey)&&e.preventDefault()},{passive:!1}),window.addEventListener(`keydown`,e=>{(e.ctrlKey||e.metaKey)&&(e.key===`=`||e.key===`+`||e.key===`-`||e.key===`0`)&&e.preventDefault()})}}catch{}!j()&&x()&&!ot()||await Ks()}})();
19
+ `,Mo=R`<svg viewBox="0 0 16 16" width="12" height="12" fill="currentColor" aria-hidden="true"><path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0 0 16 8c0-4.42-3.58-8-8-8z"/></svg>`,No=R`<svg viewBox="0 0 16 16" width="11" height="11" fill="currentColor" aria-hidden="true"><path d="M11.013 1.427a1.75 1.75 0 0 1 2.474 0l1.086 1.086a1.75 1.75 0 0 1 0 2.474l-8.61 8.61c-.21.21-.47.364-.756.445l-3.251.93a.75.75 0 0 1-.927-.928l.929-3.25c.082-.286.235-.547.445-.758l8.61-8.61z"/></svg>`,Po=class extends B{static properties={url:{type:String},editable:{type:Boolean,reflect:!0},editing:{type:Boolean,reflect:!0},_copied:{state:!0}};static styles=L(jo);constructor(){super(),this.url=``,this.editable=!1,this.editing=!1,this._copied=!1,this._opener=``}render(){if(this.editable&&this.editing){let e=!!this.url,t=e?Yn(this.url):`Set repo`;return R`<span class="${e?`chip`:`chip empty`}" aria-hidden="true" inert>${Mo} <span class="label">${t}</span> <button type="button" class="edit-btn">${No}</button> </span><input type="text" .value="${M(this.url)}" placeholder="user/repo or https://github.com/user/repo" @input="${this._onInput}" @focus="${this._onFocus}" @keydown="${this._onKeydown}" @blur="${this._onBlur}">`}if(this.editable){let e=!!this.url,t=e?Yn(this.url):`Set repo`,n=e?this._copied?`chip copied`:`chip`:`chip empty`;return R`<span class="${n}" @click="${e?null:this._onEdit}">${Mo} ${e?this._slugLabel(t):R`<span class="label">${t}</span>`} <button type="button" class="edit-btn" aria-label="Edit repo URL" @click="${this._onEdit}">${No}</button></span>`}if(this.url){let e=this._copied?`chip readonly copied`:`chip readonly`;return R`<span class="${e}">${Mo} ${this._slugLabel(Yn(this.url))}</span>`}return z}_slugLabel(e){return R`<span class="label" @click="${this._onCopyLabel}">${e}</span>`}updated(e){if(e.has(`editing`)&&this.editing){let e=this.renderRoot.querySelector(`input`);e&&(e.focus(),e.select())}}_onEdit=e=>{e&&e.stopPropagation(),this._emit(`repo-edit-start`)};_onCopyLabel=e=>{e&&e.stopPropagation();let t=Yn(this.url);if(t)try{navigator.clipboard.writeText(t).then(()=>(this._copied=!0,setTimeout(()=>{this._copied=!1},1e3),null)).catch(()=>{})}catch{}};_onFocus=e=>{this._opener=e.target.value};_onInput=e=>{this.url=e.target.value,this._emit(`repo-input`,{url:this.url})};_onKeydown=e=>{e.key===`Enter`?(e.preventDefault(),this._emit(`repo-commit`,{url:this.url})):e.key===`Escape`&&(e.preventDefault(),this.url=this._opener,this._emit(`repo-cancel`,{url:this._opener}))};_onBlur=()=>{this.editing&&this._emit(`repo-commit`,{url:this.url})};_emit(e,t){this.dispatchEvent(new CustomEvent(e,{detail:t,bubbles:!0,composed:!0}))}};customElements.define(`repo-chip`,Po);var Fo=R`<svg viewBox="0 0 16 16" width="12" height="12" aria-hidden="true"><path class="bubble" d="M2.5 3h11a.5.5 0 0 1 .5.5v6.5a.5.5 0 0 1-.5.5H8.4l-3 2.6V10.5H2.5a.5.5 0 0 1-.5-.5V3.5a.5.5 0 0 1 .5-.5z" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linejoin="round"/></svg>`,Io=R`<svg viewBox="0 0 16 16" width="12" height="12" aria-hidden="true"><path class="wrench" d="M10.4 2.6a3 3 0 0 0-3.6 4.5L2 12l2 2 4.9-4.8a3 3 0 0 0 4.5-3.6l-1.8 1.8-1.5-.4-.4-1.5z" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linejoin="round"/></svg>`,Lo=R`<svg viewBox="0 0 16 16" width="12" height="12" aria-hidden="true"><path class="flag-cloth" d="M5 1.5h6v13l-3-2.7-3 2.7z" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linejoin="round"/></svg>`,Ro=Sr(Er.replace(`width="14" height="14"`,`width="12" height="12"`)),zo=R`<svg viewBox="0 0 16 16" width="12" height="12" aria-hidden="true"><g fill="none" stroke="currentColor" stroke-width="1.15" stroke-linecap="round" stroke-linejoin="round"><path d="M5 1.2 1.3 3.1v5.7L5 10.7l3.7-1.9V3.1Z M1.3 3.1 5 5l3.7-1.9 M5 5v5.7"/><path d="M11 5.2 7.3 7.1v5.7l3.7 1.9 3.7-1.9V7.1Z M7.3 7.1 11 9l3.7-1.9 M11 9v5.7"/></g></svg>`,Bo=R`<svg viewBox="0 0 16 16" width="12" height="12" aria-hidden="true"><g fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"><rect x="3.4" y="1.5" width="10" height="3.6" rx=".8"/><rect x="2.2" y="5.3" width="10" height="3.6" rx=".8"/><rect x="1" y="9.1" width="10" height="3.6" rx=".8"/></g></svg>`,Vo=R`<svg viewBox="0 0 16 16" width="12" height="12" aria-hidden="true"><path d="M8 1.5 13 3.5v4c0 3-2.1 5.5-5 7-2.9-1.5-5-4-5-7v-4Z" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linejoin="round"/></svg>`,Ho=[{key:`comment`,glyph:Fo,label:`commented`,stateKey:`filterComment`,hasKey:`hasComment`},{key:`fix`,glyph:Io,label:`fixed`,stateKey:`filterFix`,hasKey:`hasFix`},{key:`flag`,glyph:Lo,label:`flagged`,stateKey:`filterFlagged`,hasKey:`hasFlagged`},{key:`duplicates`,glyph:Ro,label:`rows with duplicates in other reports`,stateKey:`filterDuplicates`,hasKey:`hasDuplicates`},{key:`cross-context`,glyph:zo,label:`rows across multiple repos or packages`,stateKey:`filterCrossContext`,hasKey:`hasCrossContext`},{key:`app-stacked`,glyph:Bo,label:`stacked App rows`,stateKey:`filterAppStacked`,hasKey:`hasAppStacked`},{key:`security`,glyph:Vo,label:`security-related rows`,stateKey:`filterSecurity`,hasKey:`hasSecurityContrast`}],Uo=new Set([`duplicates`,`cross-context`,`app-stacked`,`security`]),Wo=class extends k{static properties={group:{type:String},hasComment:{attribute:!1},hasFix:{attribute:!1},hasFlagged:{attribute:!1},hasDuplicates:{attribute:!1},hasCrossContext:{attribute:!1},hasAppStacked:{attribute:!1},hasSecurityContrast:{attribute:!1}};createRenderRoot(){return this}constructor(){super(),this.group=`marks`,this.hasComment=!1,this.hasFix=!1,this.hasFlagged=!1,this.hasDuplicates=!1,this.hasCrossContext=!1,this.hasAppStacked=!1,this.hasSecurityContrast=!1}connectedCallback(){super.connectedCallback(),Y(this,{role:`group`,"aria-label":this.group===`context`?`Finding row filters`:`Annotation filter`})}render(){let e=Ho.filter(e=>this.group===`context`===Uo.has(e.key)).filter(e=>e.key===`security`?this.hasSecurityContrast:e.key===`duplicates`?!A.currentWorkspace&&(this.hasDuplicates||A[e.stateKey]):this[e.hasKey]||A[e.stateKey]);return e.length===0?z:R`${e.map(e=>{let t=A[e.stateKey],n=Uo.has(e.key)?e.label:`${e.label} findings`,r=t===`with`?`Showing only ${n} \u2014 click to exclude them`:t===`without`?`Excluding ${n} \u2014 click to clear`:`Show only ${n}`;return R`<button type="button" class="${P({"annotation-chip":!0,"sel-with":t===`with`,"sel-without":t===`without`})}" aria-label="${r}" aria-pressed="${String(t!==``)}" @click="${()=>this._toggle(e.key)}">${e.glyph}</button>`})}`}_toggle(e){this.dispatchEvent(new CustomEvent(`annotation-filter-toggle`,{detail:{key:e},bubbles:!0,composed:!0}))}};customElements.define(`annotation-filter`,Wo);var Go=[[`critical`,`Critical`],[`high`,`High`],[`medium`,`Medium`],[`low`,`Low`],[`high_bug`,`High bug`],[`bug`,`Bug`],[`informational`,`Info`]],Ko=class extends k{static properties={counts:{attribute:!1},selected:{attribute:!1},kind:{type:String}};createRenderRoot(){return this}constructor(){super(),this.counts={},this.selected=[],this.kind=`findings`}connectedCallback(){super.connectedCallback(),Y(this,{role:`group`,"aria-label":`Filter by severity`})}render(){let e=this.kind===`graph`?new Set(this.selected):A.filterSeverities,t=Go.filter(([t])=>(this.counts[t]??0)||e.has(t));return t.length===0?z:R`${t.map(([t,n])=>{let r=this.counts[t]??0,i=e.has(t);return R`<button type="button" class="${P({"sev-chip":!0,[t]:!0,active:i})}" aria-pressed="${String(i)}" @click="${()=>this._toggle(t)}"><span class="sd"></span><span class="name">${n}</span><span class="n">${r}</span></button>`})}`}_toggle(e){this.dispatchEvent(new CustomEvent(`severity-toggle`,{detail:{severity:e,kind:this.kind},bubbles:!0,composed:!0}))}};customElements.define(`severity-chips`,Ko);var qo=[[`corrected`,`Corrected`,`Show corrected severities (application-specific re-ratings)`],[`original`,`Original`,z]],Jo=class extends k{createRenderRoot(){return this}connectedCallback(){super.connectedCallback(),Y(this,{role:`group`,"aria-label":`Severity display mode`})}render(){let e=A.severityMode;return R`<span class="severity-mode-label">Severity</span><span class="severity-mode-chips">${qo.map(([t,n,r])=>{let i=e===t;return R`<button type="button" class="${P({"severity-mode-chip":!0,active:i})}" aria-pressed="${String(i)}" data-tooltip="${r}" @click="${()=>this._select(t)}">${n}</button>`})}</span>`}_select(e){e!==A.severityMode&&this.dispatchEvent(new CustomEvent(`severity-mode-change`,{detail:{mode:e},bubbles:!0,composed:!0}))}};customElements.define(`severity-mode-switch`,Jo);var Yo=R`<svg viewBox="0 0 16 16" width="13" height="13" aria-hidden="true"><path d="M8 1.8 14.4 5 8 8.2 1.6 5z" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linejoin="round"/><path d="M2.6 8 8 10.7 13.4 8" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"/><path d="M2.6 11 8 13.7 13.4 11" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"/></svg>`,Xo=`Show underlying code findings`,Zo=R`<svg viewBox="0 0 16 16" width="13" height="13" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M3 5.5v2h10v-2M8 7.5v3"/><rect x="1" y="1.5" width="4" height="4" rx=".6"/><rect x="11" y="1.5" width="4" height="4" rx=".6"/><rect x="6" y="10.5" width="4" height="4" rx=".6"/></svg>`,Qo=`Show only upstream dependency findings`,$o=class extends k{static properties={canDrop:{type:Boolean,attribute:`can-drop`},canDetail:{type:Boolean,attribute:`can-detail`},canUpstream:{type:Boolean,attribute:`can-upstream`},upstreamDisabled:{type:Boolean,attribute:`upstream-disabled`}};createRenderRoot(){return this}constructor(){super(),this.canDrop=!1,this.canDetail=!1,this.canUpstream=!1,this.upstreamDisabled=!1}connectedCallback(){super.connectedCallback(),Y(this,{role:`group`,"aria-label":`Revalidation layer`})}render(){let e=A.revalidateConflicts.size,t=e>0?R`<button type="button" class="revalidation-toggle revalidation-conflicts" aria-haspopup="dialog" aria-label="${`View ${e} revalidation conflict${e===1?``:`s`}`}" @click="${this._openConflicts}">${e} ${e===1?`conflict`:`conflicts`}</button>`:z,n=A.showRevalidation!==!1,r=n&&A.revalidationDetailed===!0,i=A.upstreamOnly===!0,a=i&&!this.upstreamDisabled;return R`${t}${e===0&&this.canDrop?R`<mode-switch class="revalidation-toggle" label="App" borderless .checked="${n}" accessible-label="App view — hide the issues the revalidation pass ruled out" .disabled="${i}" @click="${this._toggle}"></mode-switch>`:z}${e===0&&this.canDrop&&this.canDetail?R`<button type="button" class="${P({"revalidation-detail":!0,on:r})}" aria-pressed="${String(r)}" aria-label="${Xo}" data-tooltip="${Xo}" ?disabled="${!n||i}" @click="${this._toggleDetail}">${Yo}</button>`:z}${this.canUpstream?R`<button type="button" class="${P({"revalidation-upstream":!0,on:a})}" aria-pressed="${String(a)}" aria-label="${Qo}" data-tooltip="${Qo}" ?disabled="${this.upstreamDisabled}" @click="${this._toggleUpstream}">${Zo}</button>`:z}`}_toggle=()=>{this.dispatchEvent(new CustomEvent(`revalidation-change`,{detail:{on:A.showRevalidation===!1},bubbles:!0,composed:!0}))};_openConflicts=()=>{this.dispatchEvent(new CustomEvent(`revalidation-conflicts-open`,{bubbles:!0,composed:!0}))};_toggleDetail=()=>{this.dispatchEvent(new CustomEvent(`revalidation-detail-change`,{detail:{on:A.revalidationDetailed!==!0},bubbles:!0,composed:!0}))};_toggleUpstream=()=>{this.upstreamDisabled||this.dispatchEvent(new CustomEvent(`upstream-only-change`,{detail:{on:A.upstreamOnly!==!0},bubbles:!0,composed:!0}))}};customElements.define(`revalidation-switch`,$o);var es=R`<svg class="trash-icon" viewBox="0 0 16 16" width="11" height="11" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M3 4h10M6.5 4V2.5h3V4M5 4l.7 9h4.6L11 4"/></svg>`,ts=class extends k{createRenderRoot(){return this}render(){let e=A.currentView===`bundles`&&A.selectedBundle,t=!A.currentFile&&!e;return R`<button type="button" class="danger" ?disabled="${t}">${es}<span>Delete current</span></button>`}};customElements.define(`sidebar-delete-current`,ts);var ns=R`<svg viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M2 6h12v7a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V6Z"/><path d="M2 6l1.6-3.3A1.3 1.3 0 0 1 4.8 2h6.4a1.3 1.3 0 0 1 1.2.7L14 6"/><path d="M8 2v4"/></svg>`,rs=R`<svg viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><line x1="4" x2="4" y1="2.5" y2="10"/><circle cx="12" cy="4" r="2"/><circle cx="4" cy="12" r="2"/><path d="M12 6a6 6 0 0 1-6 6"/></svg>`,is={packages:{title:`Show packages`,icon:ns,view:`packages`},repositories:{title:`Show repositories`,icon:rs,view:`repositories`}},as=class extends k{static properties={kind:{type:String},count:{type:Number}};createRenderRoot(){return this}constructor(){super(),this.kind=``,this.count=0}render(){if(this.count===0)return z;let e=xo(`sidebar-view-button`,is,this.kind);if(!e)return z;let t=A.currentView===e.view;return R`<button type="button" class="${P({"sidebar-view-btn":!0,active:t})}" aria-label="${e.title}">${e.icon}<span class="view-btn-count">${this.count}</span></button>`}};customElements.define(`sidebar-view-button`,as);var os=[`invalid`,`deleted`],ss={package:{stateKey:`packageSlideTriage`},repository:{stateKey:`repositorySlideTriage`}},cs=class extends k{static properties={counts:{attribute:!1},kind:{type:String}};createRenderRoot(){return this}constructor(){super(),this.counts={},this.kind=``}connectedCallback(){super.connectedCallback(),Y(this,{role:`group`,"aria-label":`Triage view`})}render(){let e=xo(`slide-triage-tabs`,ss,this.kind);if(!e)return z;let t=A[e.stateKey],n=os.filter(e=>(this.counts[e]??0)>0||t===e);return n.length===0?z:R`${n.map(e=>{let n=t===e,r=this.counts[e]??0;return R`<button type="button" class="${P({"triage-state-btn":!0,[`triage-state-${e}`]:!0,active:n})}" aria-pressed="${String(n)}" @click="${()=>this._toggle(e)}">${e.charAt(0).toUpperCase()+e.slice(1)} (${r})</button>`})}`}_toggle(e){this.dispatchEvent(new CustomEvent(`slide-triage-toggle`,{detail:{kind:this.kind,value:e},bubbles:!0,composed:!0}))}};customElements.define(`slide-triage-tabs`,cs);var ls=[[`own`,`Sources`],[`modules`,`Deps`]],us=class extends k{createRenderRoot(){return this}connectedCallback(){super.connectedCallback(),Y(this,{role:`group`,"aria-label":`Source filter`})}render(){return R`${ls.map(([e,t])=>{let n=A.filterSources.has(e);return R`<button type="button" class="${P({"source-chip":!0,active:n})}" aria-pressed="${String(n)}" @click="${()=>this._toggle(e)}">${t}</button>`})}`}_toggle(e){this.dispatchEvent(new CustomEvent(`source-toggle`,{detail:{source:e},bubbles:!0,composed:!0}))}};customElements.define(`source-filter`,us);var ds=R`<svg viewBox="0 0 24 24" width="13" height="13" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true"><circle cx="11" cy="11" r="7"/><path d="m20 20-3.5-3.5"/></svg>`,fs=R`<svg viewBox="0 0 16 16" width="13" height="13" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M3 6h10v4"/></svg>`,ps={findings:{stateKey:`filterInclude`,placeholder:`Search findings…`},files:{stateKey:`filesSearch`,placeholder:`Search files…`}},ms=class extends k{static properties={kind:{type:String}};createRenderRoot(){return this}constructor(){super(),this.kind=``}render(){let e=xo(`toolbar-search`,ps,this.kind);if(!e)return z;let t=A[e.stateKey];return R`${ds} <input type="text" aria-label="${e.placeholder}" placeholder="${e.placeholder}" .value="${M(t)}" @input="${this._onInput}"> ${this.kind===`findings`&&t?this._negateToggle():z}`}_negateToggle(){let e=A.filterIncludeNegate;return R`<button type="button" class="${P({"search-negate-btn":!0,active:e})}" data-tooltip="${e?`Negation on — click to undo`:`Negate: show non-matching findings`}" aria-label="Negate search" aria-pressed="${String(e)}" @click="${this._onToggleNegate}">${fs}</button>`}_onInput=e=>{this.dispatchEvent(new CustomEvent(`search-input`,{detail:{kind:this.kind,value:e.target.value},bubbles:!0,composed:!0}))};_onToggleNegate=()=>{this.dispatchEvent(new CustomEvent(`search-negate-toggle`,{bubbles:!0,composed:!0}))}};customElements.define(`toolbar-search`,ms);var hs=class extends k{static properties={options:{attribute:!1}};createRenderRoot(){return this}constructor(){super(),this.options=[]}render(){let e=[{value:``,label:`All repositories`,special:!0,reset:!0},...this.options.map(e=>({value:e??pe,label:e==null?`(no repo)`:Yn(e),special:e==null}))];return R`<repository-selector variant="filter" label="Filter by repository" .options="${e}" .value="${A.filterRepo}" @repository-change="${e=>this.dispatchEvent(new CustomEvent(`repo-change`,{detail:{value:e.detail.value},bubbles:!0,composed:!0}))}"></repository-selector>`}};customElements.define(`repo-filter`,hs);var gs={"":{cls:`included`,label:`+ Partial`,title:`Confirmed, partial and revalidation rows — click for full confirmations only`},exclude:{cls:`excluded`,label:`− Partial`,title:`Full confirmations only — click to show the partial ones only`},only:{cls:`only`,label:`only Partial`,title:`Partial confirmations only — click to show all of them again`}},_s=class extends k{static properties={options:{attribute:!1},hasPartial:{type:Boolean,attribute:`has-partial`}};createRenderRoot(){return this}constructor(){super(),this.options=[],this.hasPartial=!1}render(){return R`<select class="sort-select" aria-label="Filter by revalidation outcome" .value="${M(A.filterRevalidate)}" @change="${this._onChange}"><option value="" hidden ?selected="${A.filterRevalidate===``}"></option><option value="">Confidence</option>${this.options.map(e=>R`<option value="${e.value}" ?selected="${A.filterRevalidate===e.value}">${e.label}</option>`)}</select> ${this.hasPartial&&A.filterRevalidate===`confirmed`?this._partialChip():z}`}_partialChip(){let e=gs[A.filterPartial]??gs[``];return R`<button type="button" class="${P({"partial-cycle":!0,[e.cls]:!0})}" data-tooltip="${e.title}" @click="${this._onPartial}">${e.label}</button>`}_onPartial=()=>{let e=ar.indexOf(A.filterPartial),t=ar[(e+1)%ar.length];this.dispatchEvent(new CustomEvent(`partial-change`,{detail:{value:t},bubbles:!0,composed:!0}))};_onChange=e=>{let{value:t}=e.target;t||(e.target.selectedIndex=0),this.dispatchEvent(new CustomEvent(`revalidate-change`,{detail:{value:t},bubbles:!0,composed:!0}))}};customElements.define(`revalidate-filter`,_s);var vs=[[`none`,`none`,`unmarked`],[`red`,`r`,`red`],[`blue`,`b`,`blue`],[`green`,`g`,`green`],[`gray`,`x`,`gray`]],ys=class extends k{static properties={counts:{attribute:!1},selected:{attribute:!1},kind:{type:String}};createRenderRoot(){return this}constructor(){super(),this.counts={},this.selected=[],this.kind=`findings`}connectedCallback(){super.connectedCallback(),Y(this,{role:`group`,"aria-label":`Filter by mark color`})}render(){let e=this.kind===`graph`?new Set(this.selected):A.filterColors;return vs.some(([t])=>(this.counts[t]??0)||e.has(t))?R`${vs.map(([t,n,r])=>{let i=this.counts[t]??0,a=e.has(t);return R`<button type="button" class="${a?`active`:``}" aria-label="${`${r} (${i})`}" aria-pressed="${String(a)}" @click="${()=>this._toggle(t)}"><span class="${`td ${n}`}"></span><span class="count">${i}</span></button>`})}`:z}_toggle(e){this.dispatchEvent(new CustomEvent(`color-toggle`,{detail:{color:e,kind:this.kind},bubbles:!0,composed:!0}))}};customElements.define(`triage-filter`,ys);var bs=[`inprogress`,`fixed`,`invalid`,`deleted`,`ignored`],xs={graph:`graph2-triage-selector`,packages:`packages-triage-selector`},Ss={inprogress:`In progress`},Cs=e=>Ss[e]??e.charAt(0).toUpperCase()+e.slice(1),ws=class extends k{static properties={counts:{attribute:!1},states:{attribute:!1},variant:{type:String}};createRenderRoot(){return this}constructor(){super(),this.counts={},this.states=null,this.variant=``}connectedCallback(){super.connectedCallback(),Y(this,{role:`group`,"aria-label":`Triage view`})}render(){let e=this.states??bs,t=e.reduce((e,t)=>e+(this.counts[t]??0),0),n=this.variant?xs[this.variant]:null;this.variant&&n===void 0&&console.warn(`<triage-selector>: unknown variant ${JSON.stringify(this.variant)}; expected one of ${Object.keys(xs).map(e=>JSON.stringify(e)).join(`, `)} or "".`);for(let e of Object.values(xs))this.classList.toggle(e,e===n);let r=t===0&&!A.shownTriage;return this.classList.toggle(`is-empty`,r),r?z:R`${e.map(e=>{let t=this.counts[e]??0,n=A.shownTriage===e;if(t===0&&!n)return z;let r=Cs(e);return R`<button type="button" class="${P({"triage-state-btn":!0,[`triage-state-${e}`]:!0,active:n})}" data-triage-show="${e}" aria-pressed="${String(n)}"><span>${r}</span><span class="n">${t}</span></button>`})}`}};customElements.define(`triage-selector`,ws);var Ts={table:R`<svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"><rect x="3" y="3" width="18" height="18" rx="2"/><line x1="3" x2="21" y1="9" y2="9"/><line x1="3" x2="21" y1="15" y2="15"/><line x1="9" x2="9" y1="3" y2="21"/></svg>`,list:R`<svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true"><line x1="3" x2="21" y1="6" y2="6"/><line x1="3" x2="21" y1="12" y2="12"/><line x1="3" x2="21" y1="18" y2="18"/></svg>`,grouped:R`<svg viewBox="0 0 16 16" width="16" height="16" fill="currentColor" aria-hidden="true"><rect x="2" y="1.5" width="12" height="2" rx=".4"/><rect x="5" y="4.4" width="9" height="1.3"/><rect x="5" y="6.2" width="9" height="1.3"/><rect x="2" y="8.5" width="12" height="2" rx=".4"/><rect x="5" y="11.4" width="9" height="1.3"/><rect x="5" y="13.2" width="9" height="1.3"/></svg>`,kanban:R`<svg viewBox="0 0 16 16" width="16" height="16" fill="currentColor" aria-hidden="true"><rect x="1.5" y="2" width="3.8" height="12" rx=".6" fill="none" stroke="currentColor" stroke-width="1"/><rect x="6.1" y="2" width="3.8" height="12" rx=".6" fill="none" stroke="currentColor" stroke-width="1"/><rect x="10.7" y="2" width="3.8" height="12" rx=".6" fill="none" stroke="currentColor" stroke-width="1"/><rect x="2.4" y="3.6" width="2" height="1.4" rx=".2"/><rect x="2.4" y="5.6" width="2" height="1.4" rx=".2"/><rect x="7" y="3.6" width="2" height="1.4" rx=".2"/><rect x="11.6" y="3.6" width="2" height="1.4" rx=".2"/><rect x="11.6" y="5.6" width="2" height="1.4" rx=".2"/><rect x="11.6" y="7.6" width="2" height="1.4" rx=".2"/></svg>`,focus:R`<svg viewBox="0 0 16 16" width="16" height="16" fill="currentColor" aria-hidden="true"><rect x="1.5" y="2.5" width="8.5" height="11" rx=".6" fill="none" stroke="currentColor" stroke-width="1"/><rect x="3" y="4.4" width="5.5" height="1"/><rect x="3" y="6.4" width="5.5" height="1"/><rect x="3" y="8.4" width="3.5" height="1"/><rect x="11.2" y="2.5" width="3.3" height="2.5" rx=".4" fill="currentColor" opacity=".55"/><rect x="11.2" y="5.7" width="3.3" height="2.5" rx=".4" fill="currentColor" opacity=".35"/><rect x="11.2" y="8.9" width="3.3" height="2.5" rx=".4" fill="currentColor" opacity=".22"/></svg>`,graph:R`${Sr(Tr)}`},Es={table:`Table view (compact rows, click a row to expand)`,list:`List view (flat, one card per finding)`,grouped:`List view, grouped by file`,focus:`Focus view (one finding centered + a queue of next findings)`,kanban:`Kanban board, columns grouped by triage status`,graph:`Graph view (canvas with imports / exports)`},Ds=[`kanban`,`focus`,`table`,`list`,`grouped`,`graph`],Os=class extends k{static properties={modes:{type:String},kind:{type:String}};createRenderRoot(){return this}constructor(){super(),this.modes=Ds.join(`,`),this.kind=`findings`}connectedCallback(){super.connectedCallback(),Y(this,{role:`group`,"aria-label":`View mode`})}render(){let e=this.kind===`files`?A.filesViewMode:A.viewMode,t=this.modes.split(`,`).map(e=>e.trim()).filter(e=>Ds.includes(e)),n=t.length>0?t:Ds;return R`${n.map(t=>R`<button type="button" class="${P({"view-mode-btn":!0,active:e===t})}" aria-label="${Es[t]}" aria-pressed="${String(e===t)}" @click="${()=>this._select(t,e)}">${Ts[t]}</button>`)}`}_select(e,t){e!==t&&this.dispatchEvent(new CustomEvent(`view-mode-change`,{detail:{mode:e,kind:this.kind},bubbles:!0,composed:!0}))}};customElements.define(`view-mode-buttons`,Os);var ks=`/api/oauth/github/link`,As={"github-account-own":`That is the account you sign in with. On GitHub, pick or add the other account to link.`,"github-account-registered":`That GitHub account has signed in here before, so it is a user of its own and cannot be linked.`,"github-account-linked":`That GitHub account is already linked to another user.`,"github-authorization-declined":`Linking was cancelled on GitHub.`,"invalid-oauth-state":`The link request expired or was started from another session. Try again.`},js=e=>new Date(e).toLocaleDateString(void 0,{month:`short`,day:`numeric`,year:`numeric`}),Ms=class extends B{static properties={session:{attribute:!1},linkError:{attribute:!1},_profile:{state:!0},_pending:{state:!0},_busy:{state:!0},_error:{state:!0},_avatarRevision:{state:!0}};constructor(){super(),this._profile=null,this._avatarRevision=0,this._controller=new AbortController}createRenderRoot(){return this}disconnectedCallback(){super.disconnectedCallback(),this._controller.abort(),this._key=null}get _readOnly(){return!!this.session?.viewer||d()!==null}async _load(){let e=this._key;this._busy=!0,this._error=null;try{let t=await He({signal:this._controller.signal});e===this._key&&(this._profile=t)}catch(t){e===this._key&&t.name!==`AbortError`&&(this._error=t.message)}finally{e===this._key&&(this._busy=!1)}}async _change(e,t=null){if(this._busy||this._readOnly)return;let n=this._key;this._busy=!0,this._error=null;try{let r=await e(this.session.csrfToken,{signal:this._controller.signal});if(n!==this._key)return;let i=r.avatarAccount!==this._profile?.avatarAccount;i&&this._avatarRevision++,this._profile=r,an(this.session.id,r,i,t),document.dispatchEvent(new CustomEvent(`managed-profile-change`,{detail:{userId:this.session.id,name:r.name,avatarChanged:i}}))}catch(e){n===this._key&&e.name!==`AbortError`&&(this._error=e.message)}finally{n===this._key&&(this._busy=!1,this._pending=null)}}_choose(e,t){return this._busy||this._readOnly?Promise.resolve():(this._pending={[`${e}Account`]:t},this._change((n,r)=>We({[e]:t},n,r)))}_unlink(e){return this._change((t,n)=>Ke(e.id,t,n),{login:e.login,githubId:e.githubId})}_avatar(e,{own:t=!1,initial:n,large:r=!1}={}){let i=`/api/avatar/${encodeURIComponent(e)}${t?`?own`:this._avatarRevision?`?v=${this._avatarRevision}`:``}`;return R`<span class="${`managed-profile-avatar${r?` is-large`:``}`}" aria-hidden="true"><span>${(n[0]??`?`).toUpperCase()}</span> ${d()?z:R`<img alt="" src="${i}" @error="${e=>e.currentTarget.classList.add(`broken`)}">`}</span>`}_account({id:e,githubId:t,login:n,name:r,linkedAt:i},a){let o=e===null,s=this._busy||this._readOnly;return R`<tr><td><span class="managed-profile-account">${this._avatar(o?this.session.id:e,{own:o,initial:n})} <span><a href="${`https://github.com/${encodeURIComponent(n)}`}" target="_blank" rel="noreferrer">@${n}</a> <span class="managed-profile-muted">${o?`Sign-in account`:i===null?`Linked`:`Linked ${js(i)}`}</span></span></span></td><td><label class="managed-profile-choice"><input type="radio" name="managed-profile-name" .checked="${M(a.nameAccount===e)}" ?disabled="${s}" aria-label="${`Use @${n}'s name`}" @change="${()=>this._choose(`name`,e)}"> ${r?R`<span>${r}</span>`:R`<span class="managed-profile-muted">No name</span>`}</label></td><td><label class="managed-profile-choice"><input type="radio" name="managed-profile-avatar" .checked="${M(a.avatarAccount===e)}" ?disabled="${s}" aria-label="${`Use @${n}'s avatar`}" @change="${()=>this._choose(`avatar`,e)}"><span class="managed-profile-muted">Avatar</span></label></td><td>${o?z:R`<button type="button" class="npm-review-button" ?disabled="${s}" aria-label="${`Unlink @${n}`}" @click="${()=>this._unlink({id:e,githubId:t,login:n})}">Unlink</button>`}</td></tr>`}render(){let e=JSON.stringify([this.session?.id,this.session?.role]);e!==this._key&&(this._controller.abort(),this._controller=new AbortController,this._key=e,this._profile=null,this._load());let t=this._profile,n=t?.login??this.session?.login??``,r=t?t.name:this.session?.name??null,i=this.linkError?As[this.linkError]??`Could not link the account (${this.linkError}).`:null;return R`<section class="managed-profile"><header class="managed-profile-card">${this._avatar(this.session?.id??``,{initial:n,large:!0})}<div><h1>${r||`@${n}`}</h1>${r?R`<p class="managed-profile-muted">@${n}</p>`:z}</div></header>${i?R`<p class="managed-profile-error" role="alert">${i}</p>`:z} ${this._error?R`<p class="managed-profile-error" role="alert">${this._error}</p>`:z}<section class="managed-profile-section" aria-labelledby="managed-profile-accounts"><h2 id="managed-profile-accounts">GitHub accounts</h2><p class="managed-profile-muted">You sign in as @${n}. Your name and avatar can come from any of your accounts. A linked account cannot sign in or register here.</p>${t?R`<table class="managed-profile-accounts"><thead><tr><th scope="col">Account</th><th scope="col">Name</th><th scope="col">Avatar</th><th scope="col"><span class="sr-only">Actions</span></th></tr></thead><tbody>${[{id:null,login:t.login,name:t.githubName,linkedAt:null},...t.accounts].map(e=>this._account(e,{...t,...this._pending}))}</tbody></table>`:z} ${this._readOnly?R`<p class="managed-profile-muted">${this.session?.viewer?`Viewing as another user is read only.`:`The preview changes nothing.`}</p>`:R`<a class="npm-review-button npm-review-primary" href="${ks}">Link GitHub account</a><p class="managed-profile-muted">GitHub asks which account to link: pick or add the other account there.</p>`}</section></section>`}};customElements.define(`managed-profile`,Ms);var Ns=class extends k{createRenderRoot(){return this}render(){return A.reports.length>0&&A.currentView===`findings`&&A.viewMode!==`graph`&&A.viewMode!==`kanban`?R`<button type="button" class="toolbar-export-btn" aria-label="Download or print report" @click="${this._onClick}">${t}</button>`:z}_onClick=()=>{this.dispatchEvent(new CustomEvent(`download-requested`,{bubbles:!0,composed:!0}))}};customElements.define(`download-button`,Ns);var Ps=class extends k{static styles=Or`.preview{position:fixed;inset:auto;margin:0;padding:14px;box-sizing:border-box;width:min(24rem,calc(100vw - 24px));max-height:calc(100vh - 24px);overflow:auto;border:1px solid var(--border);border-radius:var(--ui-radius, 10px);background:var(--bg);color:var(--text);box-shadow:0 8px 28px #00000040;font:13px/1.45 system-ui,sans-serif;text-align:left;white-space:normal;overflow-wrap:anywhere;letter-spacing:normal;cursor:default}.preview.wide{width:min(36rem,calc(100vw - 24px))}@media print{.preview{display:none}}:host-context(body.theme-w95) *{overscroll-behavior:none}`;constructor(){super(),this.showTimer=null,this.hideTimer=null}connectedCallback(){super.connectedCallback(),ir(this.renderRoot)}disconnectedCallback(){this._hidePreview(),super.disconnectedCallback()}updated(){let e=this.renderRoot.querySelector(`.preview`);e?e.matches(`:popover-open`)&&this._positionPreview():this._hidePreview()}_schedulePreview(){clearTimeout(this.hideTimer),clearTimeout(this.showTimer),this.renderRoot.querySelector(`.preview`)&&(this.showTimer=setTimeout(()=>{if(!this.isConnected)return;let e=this.renderRoot.querySelector(`.preview`);e&&(rr(),e.showPopover(),this._positionPreview(),document.addEventListener(`keydown`,this._previewKeyDown,!0),window.addEventListener(`scroll`,this._previewScroll,!0),window.addEventListener(`resize`,this._hidePreview))},150))}_keepPreview(){clearTimeout(this.hideTimer)}_leavePreview(){clearTimeout(this.showTimer),clearTimeout(this.hideTimer),this.hideTimer=setTimeout(()=>{this.renderRoot.querySelector(`.preview`)?.contains(this.renderRoot.activeElement)||this._hidePreview()},150)}_hidePreview=()=>{clearTimeout(this.showTimer),clearTimeout(this.hideTimer);let e=this.renderRoot?.querySelector(`.preview`);e?.matches(`:popover-open`)&&e.hidePopover(),document.removeEventListener(`keydown`,this._previewKeyDown,!0),window.removeEventListener(`scroll`,this._previewScroll,!0),window.removeEventListener(`resize`,this._hidePreview)};_previewKeyDown=e=>{e.key===`Escape`&&(e.preventDefault(),e.stopPropagation(),this.renderRoot.querySelector(`.preview`)?.contains(this.renderRoot.activeElement)&&this.renderRoot.querySelector(`[aria-details]`).focus({preventScroll:!0}),this._hidePreview())};_previewScroll=e=>{e.composedPath().includes(this.renderRoot.querySelector(`.preview`))||this._hidePreview()};_positionPreview(){let e=this.renderRoot.querySelector(`.preview`),t=this.renderRoot.querySelector(`[aria-details]`).getBoundingClientRect(),{width:n,height:r}=e.getBoundingClientRect(),i=Math.max(12,Math.min(t.left,window.innerWidth-n-12)),a=t.bottom+8+r<=window.innerHeight-12?t.bottom+8:Math.max(12,t.top-8-r);e.style.left=`${i}px`,e.style.top=`${a}px`}},Fs={open:`Open`,draft:`Draft`,closed:`Closed`,merged:`Merged`,completed:`Completed`,not_planned:`Not planned`,duplicate:`Duplicate`,unknown:`Closed`},Is=R`<svg viewBox="0 0 16 16" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="4" cy="3" r="1.75"/><circle cx="4" cy="13" r="1.75"/><circle cx="12" cy="13" r="1.75"/><path d="M4 4.75v6.5M12 11.25V5a2 2 0 0 0-2-2H8m2-2L8 3l2 2"/></svg>`,Ls=R`<svg viewBox="0 0 16 16" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><circle cx="8" cy="8" r="6.25"/><circle cx="8" cy="8" r="1.5" fill="currentColor" stroke="none"/></svg>`,Rs={completed:R`<svg viewBox="0 0 16 16" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="8" cy="8" r="6.25"/><path d="m5 8 2 2 4-4"/></svg>`,not_planned:R`<svg viewBox="0 0 16 16" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><circle cx="8" cy="8" r="6.25"/><path d="m3.5 12.5 9-9"/></svg>`},zs=class extends Ps{static properties={url:{type:String},compact:{type:Boolean,reflect:!0}};static styles=[Ps.styles,Or`:host{display:inline;word-break:normal}a{color:var(--accent);text-decoration:none;overflow-wrap:anywhere;cursor:default}.status{display:inline-flex;align-items:center;gap:.3em;vertical-align:text-bottom;margin-right:.35em;font-weight:600;white-space:nowrap}svg{flex:none}.open{color:light-dark(#1a7f37,#3fb950)}.draft,.not_planned,.duplicate,.unknown,.unavailable{color:var(--muted)}.closed{color:light-dark(#d1242f,#f85149)}.merged,.completed{color:light-dark(#8250df,#a371f7)}:host(:not([compact])){display:block}:host(:not([compact])) .fix-link{display:flex;align-items:center;gap:.55rem;min-width:0}.link-icon{flex:none;line-height:1}.link-icon svg{display:block}.link-title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text);font-weight:500;line-height:1.5}.link-icon.unavailable+.link-title{color:var(--accent)}.ref{min-width:0;max-width:32%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted);font-size:.74rem}.link-status{flex:none;padding:.15rem .4rem;border-radius:999px;background:color-mix(in srgb,currentColor 10%,transparent);font-size:.7rem;font-weight:500;line-height:1.3}:host([compact]){display:inline-flex}:host([compact]) .fix-link{display:inline-flex;align-items:center;justify-content:center;width:100%;height:100%}:host([compact]) .fix-link svg{width:14px;height:14px}:host([compact]) .status{margin:0;font-size:1rem;line-height:1}.preview{width:min(28.8rem,calc(100vw - 24px))}.preview.wide{width:min(43.2rem,calc(100vw - 24px))}:host-context(body.theme-w95) .preview{background:var(--w95-tooltip)}.preview-header{display:flex;align-items:center;justify-content:space-between;gap:12px}.preview-ref{display:inline-flex;align-items:center;gap:.4rem;min-width:0;color:var(--muted);font-size:12px;line-height:1.4}.preview-ref span{min-width:0}.preview-description{margin-top:8px;white-space:pre-wrap}.preview-title{margin-top:8px;font-size:15px;font-weight:600;line-height:1.4}.preview .preview-header .status{flex:none;margin:0;font-size:12px;line-height:1.4}@media print{:host(:not([compact])) .fix-link{display:block}.link-title,.ref{white-space:normal;overflow:visible;text-overflow:clip;max-width:none}.link-icon{display:inline-block;vertical-align:middle;margin-right:.55rem}.ref,.link-status{margin-left:.55rem}.preview{display:none}}`];constructor(){super(),this.url=``,this.compact=!1,this.unsubscribe=null}connectedCallback(){super.connectedCallback(),this.unsubscribe=Kt(()=>this.requestUpdate()),this.hasUpdated&&this.requestUpdate()}disconnectedCallback(){this.unsubscribe?.(),this.unsubscribe=null,super.disconnectedCallback()}updated(e){e.has(`url`)||e.has(`compact`)?this._hidePreview():super.updated(e)}render(){if(!yr(this.url))return R`${this.url}`;let e=At(this.url),t=!e&&It(this.url),n=e||t,r=Bt.read(this.url);if(!r&&!n){let e=`Open fix link: ${this.url}`;return R`<a class="${this.compact?`fix-link`:``}" href="${this.url}" target="_blank" rel="noopener noreferrer" draggable="false" data-tooltip="${this.compact?e:z}" aria-label="${e}">${this.compact?R`<slot></slot>`:this.url}</a>`}let i=r?t&&r.status===`closed`?r.stateReason??`unknown`:r.status:`unavailable`,a=e?Is:t?Rs[i]??Ls:null,o=n?`${n.repo}#${n.number}`:``,s=(r?.title.length??0)>40||(r?.description??``).split(/[\r\n]/u).some(e=>e.length>100),c=r?`${Fs[i]} ${e?`pull request`:`issue`}: ${r.title} (${o})`:n?`Open ${e?`pull request`:`issue`}: ${o}`:`Open fix link: ${this.url}`;return R`<a class="fix-link" href="${this.url}" target="_blank" rel="noopener noreferrer" draggable="false" aria-label="${c}" aria-details="${this.compact&&n?`fix-preview`:z}" data-tooltip="${this.compact&&!n?c:z}" @mouseenter="${this._schedulePreview}" @mouseleave="${this._leavePreview}" @focus="${this._schedulePreview}" @blur="${this._leavePreview}" @click="${this._hidePreview}">${this.compact?a?R`<span class="${`status ${i}`}">${a}</span>`:R`<slot></slot>`:R`${a?R`<span class="${`link-icon ${i}`}">${a}</span>`:z} <span class="link-title">${r?.title??(o||this.url)}</span> ${r?R`<span class="ref">${o}</span><span class="${`link-status ${i}`}">${Fs[i]}</span>`:z}`} </a>${this.compact&&n?R`<a class="${s?`preview wide`:`preview`}" id="fix-preview" popover="manual" href="${this.url}" target="_blank" rel="noopener noreferrer" draggable="false" aria-label="${`Open ${e?`pull request`:`issue`} ${o} on GitHub`}" @mouseenter="${this._keepPreview}" @mouseleave="${this._leavePreview}" @focusin="${this._keepPreview}" @focusout="${this._leavePreview}" @click="${e=>{e.stopPropagation(),this._hidePreview()}}"><div class="preview-header"><span class="preview-ref">${Sr(Dr)}<span>${o}</span></span> <span class="${`status ${i}`}">${a}${r?Fs[i]:e?`Pull request`:`Issue`}</span></div>${r?R`<div class="preview-title">${r.title}</div>`:z} ${r?.description?R`<div class="preview-description">${r.description}</div>`:z}</a>`:z}`}};customElements.define(`managed-fix-link`,zs);var Bs=class extends Ps{static properties={finding:{attribute:!1},comment:{type:String}};static styles=[Ps.styles,L(a),Or`:host{display:inline-flex}:host([hidden]){display:none!important}button{border:0;padding:0;background:none;color:inherit;font:inherit;cursor:default}.preview-trigger{display:inline-flex;align-items:center;justify-content:center;line-height:0}.preview-trigger:hover{color:var(--accent)}.managed-comment+.managed-comment{margin-top:12px;padding-top:12px;border-top:1px solid var(--border)}.comment-body{white-space:pre-wrap}.comment-body a{color:var(--accent);text-decoration:none}.comment-body a:hover{text-decoration:underline}.preview-footer{display:flex;justify-content:flex-end;margin-top:8px}.edit-hint{color:var(--muted);font-size:12px}.edit-hint:hover{color:var(--accent)}`];constructor(){super(),this.finding=null,this.comment=``,this.unsubscribe=null}connectedCallback(){super.connectedCallback(),this._subscribe(),document.addEventListener(`managed-comments-reset`,this._resetComments),this.hasUpdated&&this.requestUpdate()}disconnectedCallback(){this.unsubscribe?.(),this.unsubscribe=null,document.removeEventListener(`managed-comments-reset`,this._resetComments),super.disconnectedCallback()}updated(e){this.hidden=!this.renderRoot.querySelector(`.preview`),e.has(`finding`)&&(this._hidePreview(),this._subscribe()),super.updated(e)}_subscribe(){this.unsubscribe?.(),this.unsubscribe=this.finding?.id?ie(this.finding.id,()=>this.requestUpdate()):null}_resetComments=()=>{this._hidePreview(),this.requestUpdate()};_previewClick(e){if(e.target.closest(`a, button`)){this._hidePreview();return}window.getSelection?.()?.toString()||(e.stopPropagation(),this.renderRoot.querySelector(`.preview-trigger`).click())}render(){let e=j(),t=e?_(this.finding):[];if(!(e?t.length>0:this.comment))return z;let n=(e?t.map(e=>e.body):[this.comment]).some(e=>e.split(/[\r\n]/u).some(e=>e.length>100));return R`<button type="button" class="preview-trigger mark-comment" aria-label="${e?`View comments`:`Edit comment`}" aria-details="comment-preview" @mouseenter="${this._schedulePreview}" @mouseleave="${this._leavePreview}" @focus="${this._schedulePreview}" @blur="${this._leavePreview}" @click="${this._hidePreview}"><slot></slot></button><div class="${n?`preview wide`:`preview`}" id="comment-preview" popover="manual" role="region" aria-label="${e?`Comments`:`Comment`}" @mouseenter="${this._keepPreview}" @mouseleave="${this._leavePreview}" @focusin="${this._keepPreview}" @focusout="${this._leavePreview}" @click="${this._previewClick}">${e?t.map(e=>xe(e,we(e.body))):R`<div class="comment-body">${we(this.comment)}</div><div class="preview-footer"><button type="button" class="mark-comment edit-hint">Edit</button></div>`}</div>`}};customElements.define(`comment-preview`,Bs);function Vs(e){let t=new Map;for(let[n,r]of A.triage)r[e]&&t.set(n,r[e]);return t}window.DeepView={get reports(){return A.reports.slice()},get groups(){return Xt()},get findings(){return Xt().flat()},get currentFile(){return A.currentFile},get currentWorkspace(){return A.currentWorkspace},triage:{get markers(){return Vs(`color`)},get triageState(){return Vs(`triage`)},get comments(){return Vs(`comment`)},get fixes(){return Vs(`fix`)},get flags(){return Vs(`flagged`)},get(e){let t=A.triage.get(e),n={};return t?.color&&(n.color=t.color),t?.triage&&(n.triage=t.triage),t?.comment&&(n.comment=t.comment),t?.fix&&(n.fix=t.fix),t?.flagged!==void 0&&(n.flagged=t.flagged),n},async set(e,{color:t,triage:n,comment:r,fix:i,flagged:a}={}){if(et())throw Error(`DeepView.triage.set: triage is read-only on this page`);let o=!1;if(t!==void 0&&(t===null||t===``?N(A.triage,e,{color:void 0})&&(o=!0):A.triage.get(e)?.color!==t&&(N(A.triage,e,{color:t}),o=!0)),n!==void 0){if(n===null||n===``||n===!1)N(A.triage,e,{triage:void 0})&&(o=!0);else if(n===`inprogress`||n===`fixed`||n===`invalid`||n===`deleted`||n===`ignored`)A.triage.get(e)?.triage!==n&&(N(A.triage,e,{triage:n}),o=!0);else throw TypeError(`DeepView.triage.set: unknown triage value ${JSON.stringify(n)} (expected 'inprogress' | 'fixed' | 'invalid' | 'deleted' | 'ignored' | null)`)}if(r!==void 0){let t=r?String(r):``;t?A.triage.get(e)?.comment!==t&&(N(A.triage,e,{comment:t}),o=!0):N(A.triage,e,{comment:void 0})&&(o=!0)}if(i!==void 0){let t=i?String(i):``;t?A.triage.get(e)?.fix!==t&&(N(A.triage,e,{fix:t}),o=!0):N(A.triage,e,{fix:void 0})&&(o=!0)}if(a!==void 0){let t=a===null||a===``?void 0:!!a;A.triage.get(e)?.flagged!==t&&(N(A.triage,e,{flagged:t}),o=!0)}return o&&(await y(),E()),o}},forceManagedMode:Ut,setTheme:Ba,get theme(){return Va()},triageSync:ue,refresh(){E()},export(){return Pn()},compareReports(){return Mn()}};var Hs={default:st.default,"claude-security":st[`claude-security`],"codex-security":st[`codex-security`],deepsec:st.deepsec,piolium:st.piolium,"markdown-generic":st[`markdown-generic`],bundle:Cr,workspace:wr,links:Er,github:Dr};for(let e of document.querySelectorAll(`.drop-supported-icon[data-icon]`)){let t=Hs[e.dataset.icon];t&&(e.innerHTML=tr(t))}Dn(E),je(E),wn(E),ue.onStatusChange(E),vn(async(e,t)=>{A.currentWorkspace===e?await gn(e):A.currentFile&&A.currentFile===t?await cn(t):await T()}),bn(async()=>{await T(),A.currentView===`bundles`&&E()}),jr(),Pr();async function Us(){let e=vt();if(!e)return!1;try{history.replaceState(null,``,location.pathname)}catch{}let t;try{t=await Fn({encoded:e})}catch(e){return alert(`Couldn't open the share-link unlock prompt: ${e.message}`),!1}if(!t)return!1;let n=await be({id:t.id,name:t.name,privateKey:t.privateKeyBase64});if(n.status===`already-attached`)return alert(`This workspace is already attached as "${n.workspace.name}".`),!1;if(n.status===`name-collision`){let e=n.existing?.name;return alert(e?`A workspace named "${e}" already exists. Open the share link again and pick a different name.`:`The shared workspace name is empty or invalid. Ask the sender to re-share with a real name.`),!1}return n.workspace?.id?await gn(n.workspace.id):await T(),!0}async function Ws(){let e=ur();if(!e)return!1;try{history.replaceState(null,``,location.pathname)}catch{}let t=await Ot(e);return t.ok?!0:(alert(t.reason),!1)}var Gs=!1;async function Ks(){if(await Jt(),!Gs&&(j()||!S()||ot())){Gs=!0;try{await qs()}finally{ft.hidden=!1,wt()}}}async function qs(){let e=ge(),t=()=>e===ge()&&!j();if(j()){await T();return}if(await Ft(),!t()||(fe(),await Promise.all([T(),ke().catch(e=>console.warn(`initial linked findings:`,e))]),!t())||await Us()||!t()||await Ws()||!t())return;let n=kt(tn);if(n){if(n.startsWith(`wbs:`)||n.startsWith(`wrs:`))await un(n.slice(4),n.startsWith(`wrs:`)?`reports`:`bundles`);else if(n.startsWith(`ws:`)){let e=n.slice(3);v().some(t=>t.id===e)&&await gn(e)}else if(n.startsWith(`b:`)){let e=n.slice(2),t=e.indexOf(` `),r=t>=0?e.slice(0,t):e,i=t>=0?e.slice(t+1):``,a=pr.has(i)?i:`overview`;if((A.bundles??[]).some(e=>e.integrity===r)){let e=v().filter(e=>e.bundles.includes(r));dn(r,a,{workspaceId:e.length===1?e[0].id:null}),E(),yn(r),await T()}}else{let e=await Cn();if(!t())return;let r=Re(n);r&&e.includes(r.name)&&await cn(r.name,void 0,{workspaceId:r.workspaceId})}}}var Js=!1,Ys=!1;document.addEventListener(`managed-client-mode-change`,()=>{Js=!j()&&S()});function Xs(e){Ys||(Ys=!0,queueMicrotask(()=>{alert(e+` This tab will reload to refresh its state. Any unsaved edits in this tab will be lost.`),location.reload()}))}mt(async()=>{if(await Jt(),j()){E();return}let e=Js,t=S();if(Js=t,E(),!Gs&&ot()){Ks().catch(e=>console.warn(`continueBoot:`,e));return}if(Gs&&t&&!ot()){Xs(`Encryption was just enabled in another tab.`);return}Gs&&e&&!t&&!nt()&&Xs(`Encryption was disabled in another tab.`)}),window.addEventListener(`hashchange`,()=>{!Gs||j()||(async()=>{await Us()||await Ws()})().catch(e=>console.warn(`deep-link hashchange:`,e))}),(async()=>{if(!await Wr()){await Jt(),Js=!j()&&S();try{let e=window.matchMedia?.(`(display-mode: window-controls-overlay)`),t=()=>{let t=!1;try{t=localStorage.getItem(`deepview.sidebarCollapsed`)===`1`}catch{}yt.classList.toggle(`collapsed`,t&&!e?.matches)};t(),e?.addEventListener(`change`,t);let n=e?.matches;if(window.matchMedia?.(`(display-mode: standalone)`).matches||n){let e=document.querySelector(`meta[name="viewport"]`);e&&e.setAttribute(`content`,`width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no`),window.addEventListener(`wheel`,e=>{(e.ctrlKey||e.metaKey)&&e.preventDefault()},{passive:!1}),window.addEventListener(`keydown`,e=>{(e.ctrlKey||e.metaKey)&&(e.key===`=`||e.key===`+`||e.key===`-`||e.key===`0`)&&e.preventDefault()})}}catch{}!j()&&S()&&!ot()||await Ks()}})();