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

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 (61) hide show
  1. package/common/managed/finding-detail.d.ts +2 -1
  2. package/common/managed/finding-detail.js +42 -11
  3. package/common/managed/finding-values.d.ts +2 -0
  4. package/common/managed/finding-values.js +44 -0
  5. package/common/managed/lite-name.d.ts +2 -0
  6. package/common/managed/lite-name.js +20 -0
  7. package/common/managed/npm-packages.d.ts +2 -0
  8. package/common/managed/npm-packages.js +18 -1
  9. package/common/managed/routes.js +19 -7
  10. package/common/managed/team-app.d.ts +1 -0
  11. package/common/managed/team-app.js +17 -1
  12. package/out/activity.js +4 -4
  13. package/out/{chunk-75YLHBCM.js → chunk-2K6UN3PC.js} +1 -1
  14. package/out/{chunk-HTBYHSPG.js → chunk-CHRBUGVN.js} +1 -1
  15. package/out/{chunk-4XMP7YVH.js → chunk-FMXWXDR4.js} +1 -1
  16. package/out/chunk-HT2SSA3V.js +1 -0
  17. package/out/{chunk-2WDZPXVL.js → chunk-IMM274IW.js} +1 -1
  18. package/out/{chunk-FKBXNUW4.js → chunk-KOGNQDSJ.js} +1 -1
  19. package/out/chunk-LJ7XRXFU.js +52 -0
  20. package/out/{chunk-PBZPYIG7.js → chunk-MYGJBYYJ.js} +1 -1
  21. package/out/chunk-NCN3M5EP.js +3 -0
  22. package/out/chunk-OGAYMEER.js +232 -0
  23. package/out/client-managed-import.js +1 -1
  24. package/out/client-managed.js +26 -26
  25. package/out/compare.js +14 -14
  26. package/out/dialogs.js +31 -31
  27. package/out/graph.js +1 -1
  28. package/out/index.html +7 -7
  29. package/out/scan.js +2 -2
  30. package/out/view.css +1 -1
  31. package/out/view.js +11 -11
  32. package/package.json +8 -1
  33. package/server-managed/agent-merges.ts +1 -1
  34. package/server-managed/app-agents.ts +4 -2
  35. package/server-managed/commit-lockfiles.ts +7 -4
  36. package/server-managed/comparison.ts +13 -2
  37. package/server-managed/db-neon.ts +13 -3
  38. package/server-managed/db.ts +2 -1
  39. package/server-managed/dependency-review-comments.ts +16 -18
  40. package/server-managed/dependency-reviews.ts +45 -27
  41. package/server-managed/github-app.ts +3 -42
  42. package/server-managed/github-requests.ts +127 -0
  43. package/server-managed/http.ts +433 -129
  44. package/server-managed/listed-activity.ts +39 -0
  45. package/server-managed/locked-packages.ts +28 -5
  46. package/server-managed/npm-kept.ts +18 -4
  47. package/server-managed/npm-patch.ts +325 -0
  48. package/server-managed/pull-dependencies.ts +9 -6
  49. package/server-managed/pull-dependency-reviews.ts +19 -13
  50. package/server-managed/repository-agents.ts +162 -69
  51. package/server-managed/repository-dependency-reviews.ts +6 -5
  52. package/server-managed/repository-pulls.ts +114 -58
  53. package/server-managed/repository-pulse.ts +5 -3
  54. package/server-managed/repository-stamp.ts +41 -0
  55. package/server-managed/reviewed-dependencies.ts +4 -5
  56. package/server-managed/team-app.ts +3 -1
  57. package/server-managed/team-reports.ts +29 -10
  58. package/out/chunk-6LNQTKAV.js +0 -52
  59. package/out/chunk-6S2U2UYG.js +0 -232
  60. package/out/chunk-FC65TPUB.js +0 -1
  61. package/out/chunk-UK7RGJT6.js +0 -3
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-IMM274IW.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,Be as h,C as g,Cc as ee,Cd as _,Ce as te,D as ne,Dc as re,Dd as ie,Ec as ae,Ed as oe,Fc as v,Fd as se,G as ce,H as le,I as ue,Ib as de,K as fe,Kb as pe,Kd as me,L as y,Ld as he,Le as ge,Mb as _e,Me as ve,N as ye,Nc as be,Ne as xe,Ob as Se,Oc as Ce,Oe as we,P as Te,Pb as Ee,Pe as De,Q as Oe,Qb as ke,R as Ae,Rb as je,S as Me,Sb as Ne,T as b,Tb as Pe,Tc as Fe,Ua as Ie,Ub as Le,Uc as Re,V as ze,Va as Be,Vb as Ve,Vc as He,Wa as Ue,Wc as We,Xa as Ge,Xb as x,Xc as Ke,Ya as qe,Yb as Je,Yc as Ye,Zb as Xe,Zc as Ze,_b as Qe,ac as $e,ad as et,bc as tt,bd as nt,c as rt,cb as it,cc as S,d as C,db as at,dc as ot,e as st,eb as w,ec as ct,f as lt,fc as ut,gb as dt,gc as T,h as ft,hb as E,hc as pt,he as mt,i as ht,ia as gt,ib as _t,ic as vt,ie as yt,ja as bt,jb as xt,jc as St,je as Ct,k as wt,ka as Tt,kc as Et,l as Dt,la as Ot,lb as kt,lc as At,le as jt,m as Mt,ma as Nt,mb as Pt,mc as Ft,me as It,na as Lt,nc as Rt,nd as zt,ne as Bt,nf as Vt,o as Ht,oa as Ut,oc as Wt,oe as D,of as Gt,p as Kt,pc as qt,pe as Jt,pf as Yt,q as Xt,qc as Zt,qe as Qt,qf as O,r as $t,ra as en,rc as tn,re as nn,rf as rn,s as an,sc as k,se as on,sf as sn,t as cn,tc as A,te as j,ue as ln,v as un,vb as dn,ve as fn,vf as pn,w as M,wb as mn,we as hn,wf as gn,x as N,xb as _n,xc as vn,xe as yn,xf as bn,y as xn,yb as Sn,yc as Cn,yf as wn,zb as Tn,zc as En,zf as Dn}from"./chunk-OGAYMEER.js";import"./chunk-JCIIBLKR.js";import"./chunk-VH4XMZIW.js";import{d as On}from"./chunk-KOGNQDSJ.js";import{D as kn,L as An,N as jn,T as Mn,Y as Nn,_ as P,b as Pn,n as Fn,t as In,u as Ln,v as Rn,x as zn,y as Bn}from"./chunk-LJ7XRXFU.js";import{f as Vn,g as Hn}from"./chunk-7VAWINQF.js";import"./chunk-NRPC74AM.js";import"./chunk-7BKKYVWR.js";import{f as F}from"./chunk-7C7DWL7I.js";import"./chunk-PNHBZGDD.js";import"./chunk-VFWMQ3LG.js";import{$ as Un,C as Wn,D as Gn,K as Kn,L as qn,N as Jn,T as Yn,W as Xn,X as Zn,_ as Qn,a as I,b as $n,d as L,e as R,f as er,fa as tr,ha as nr,j as rr,ja as ir,r as ar,s as or,u as sr}from"./chunk-FMXWXDR4.js";import{g as cr}from"./chunk-2K6UN3PC.js";import"./chunk-WCPJDAYA.js";import"./chunk-IYPY47MC.js";import{a as lr,d as ur}from"./chunk-PWFUOLZK.js";import{a as dr,i as fr,j as pr,p as mr,r as hr,t as gr}from"./chunk-HT2SSA3V.js";import{B as _r,I as vr,l as yr}from"./chunk-SXV2T5C4.js";import{d as br,i as xr,k as Sr,l as Cr,q as wr,w as Tr}from"./chunk-WFYLMF6Z.js";import"./chunk-C4Z6ZBXV.js";import{a as z,b as Er,c as B,g as V,i as Dr,j as H}from"./chunk-2XUEZHIP.js";import"./chunk-TUII34K2.js";import"./chunk-OOJM4CTU.js";var Or={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 kr(){f(async(e,t,n)=>{let r=Te(e);try{return await dn(e,r,Or[n]??Or.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 Ar=class extends kt{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 B`<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`,Ar);function jr({retry:e=!1}={}){return Pt(`sync-auth-dialog`,{retry:!!e})}function Mr(){c(async({retry:e})=>{try{return await jr({retry:e})}catch(e){return console.warn(`Sync auth dialog failed to open:`,e),null}})}var Nr=`https://triage.space/`,Pr=[{hostname:`deepaudit.dev`,pathPrefix:`/`,supportsSync:!0},{hostname:`chalker.github.io`,pathPrefix:`/deepview/`,supportsSync:!1}];function Fr(){for(let e of Pr)if(location.hostname===e.hostname&&location.pathname.startsWith(e.pathPrefix))return e;return null}var Ir=[`deepview.triage`,`deepview.triage.pending`],Lr=`deepview.repoUrls`;function Rr(){try{for(let e of Ir)if(localStorage.getItem(e))return!0}catch{return!0}try{let e=localStorage.getItem(Lr);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 zr(){if(Rr())return!0;let e=[];try{e=await xn()}catch{return!0}if(e.length>0)return!0;try{if(y().length>0)return!0}catch{return!0}try{return await g()}catch{return!0}}var Br=class extends H{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=()=>B`<a class="om-link" href="${Nr}" target="_blank" rel="noopener noreferrer">${Nr}</a>`;return B`<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?B`<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>`:B`<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`,Br);function Vr(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 Hr(){let e=Fr();return e?await zr()?await Vr(e)?(location.assign(Nr),!0):!1:(location.replace(Nr),!0):!1}var U=null,Ur=!1,Wr=null;function Gr(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 Kr(){if(U)return U;U=document.createElement(`div`),U.id=`lock-overlay`,U.setAttribute(`role`,`dialog`),U.setAttribute(`aria-modal`,`true`),U.setAttribute(`aria-label`,`Unlock DeepView`),Dr(B`<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>`,U);let e=U.querySelector(`button`),t=U.querySelector(`.lock-overlay-error`);return e.addEventListener(`click`,async()=>{if(!Ur&&qr()){Ur=!0,t.hidden=!0,t.textContent=``,e.disabled=!0,e.textContent=`Waiting…`,Wr=new AbortController;try{await ht({signal:Wr.signal})}catch(e){let n=Gr(e);t.textContent=n,t.hidden=!n}finally{Ur=!1,Wr=null,e.disabled=!1,e.textContent=`Unlock with passkey`}}}),U.querySelector(`.lock-overlay-wipe`).addEventListener(`click`,async e=>{if(e.preventDefault(),!Ur&&qr()&&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 wt()}catch(e){alert(`Wipe failed: ${e?.message??e}. Try again or clear localStorage manually via DevTools.`);return}location.reload()}}),document.body.append(U),U}function qr(){return N()||!lt()?!1:C()&&!st()}async function Jr(){if(await Qt(),qr()){let e=Kr();e.hidden=!1;let t=e.querySelector(`button`);t&&t.focus()}else if(U&&(U.hidden=!0,Wr))try{Wr.abort()}catch{}}ft(Jr),document.addEventListener(`managed-client-mode-change`,Jr),Jr();var Yr=2;function Xr(e,t){M.focusSplit=t,e.closest(`.focus-main`)?.style.setProperty(`--focus-split`,String(t)),e.setAttribute(`aria-valuenow`,String(Math.round(t)))}function Zr(){try{localStorage.setItem(Kt,String(M.focusSplit))}catch{}}function Qr(e,t){Xr(e,cn(t)),Zr()}function $r(e,t){Qr(e,M.focusSplit+t)}function ei(e){Qr(e,an)}function ti(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&&Xr(e,cn((t.clientX-r.left)/r.width*100))},i=()=>{e.removeEventListener(`pointermove`,r),e.removeEventListener(`pointerup`,i),e.removeEventListener(`pointercancel`,i),e.classList.remove(`dragging`),Zr()};e.addEventListener(`pointermove`,r),e.addEventListener(`pointerup`,i),e.addEventListener(`pointercancel`,i)}function ni(e,t){return Ve(Le(e)).map(e=>t?[T(e)]:ut(e))}var ri={annotation(e){let t=ot(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=>Jn(e,pt(e)),evidence:(e,t,n)=>Xn(e,t,pt(t),n),commit:e=>Qn(e.repo?.github,e.commitHash),report:e=>e._reportName??null};function ii(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&&!Gn(t.file)&&i.add(t.repo.github);return i.size===1?[...i][0]:i.size===0&&!M.currentWorkspace&&M.repoUrl?M.repoUrl:null}function ai(e){return e.replace(/\.(?:json|md|codex)$/iu,``)}function oi(){return M.currentWorkspace?y().find(e=>e.id===M.currentWorkspace)??null:null}function si(e,t){if(t)return t.name;let n=e.map(e=>e.fileName);return n.length===1?ai(n[0]):Kn(n).replace(/[-_. ]+$/u,``)||`${n.length} reports`}function ci({oneSamplePerGroup:e=!1}={}){let t=M.reports,a=ke(),s=r(),c=ni(s,e),l=oi(),u=t.flatMap(e=>e.groups??[]),d=u.some(e=>e.some(yr)),f=u.some(e=>e.some(sr));return vr({title:si(t,l),workspace:l?.name??null,reports:t.map(e=>({name:e.fileName,source:e.source})),repo:ii(t,c),generatedAt:new Date,view:{bucket:i(),severityMode:d?M.severityMode:null,revalidation:f?M.showRevalidation:null,revalidationDetail:f&&M.showRevalidation!==!1?o():null},filters:n(a),counts:{included:c.length,total:s.length},groups:c},ri)}function li(){let e=oi(),t=M.reports.map(e=>e.fileName),n=``;return e?n=e.name:t.length===1?n=ai(t[0]):t.length>1&&(n=ai(Kn(t))),n=n.replaceAll(/[\\/:*?"<>|\p{Cc}]/gu,`-`).trim(),`${n||`deepview-report`}.md`}function ui(e){if(M.reports.length===0)return;let t=new Blob([ci(e)],{type:`text/markdown;charset=utf-8`});xt(t,li())}function di(e){return!N()||!bt.active||!M.currentManagedTeam?null:bt.navigate(gr({view:e,teamId:M.currentManagedTeam,reportId:M.currentManagedReport},M.managedTeams))}var fi=!1;ce(()=>{if(fi)return;fi=!0;let e=2;function t(){--e===0&&mi()}requestAnimationFrame(t),setTimeout(t,350)});var pi=!1;function mi(){fi=!1;let e=le();if(e&&(M.currentView===`findings`||M.currentView===`files`)){pi||(pi=!0,e.catch(()=>{}).finally(()=>{pi=!1,mi()}));return}M.findingIndexTick++,M.currentView===`bundles`&&M.selectedBundle||M.currentView===`packages`||M.currentView===`repositories`||M.currentView===`links`?O():(M.currentView===`findings`||M.currentView===`files`)&&(D().catch(()=>{}),O())}var hi=!1;ue(()=>{M.currentView!==`findings`&&M.currentView!==`files`&&!x()||hi||(hi=!0,queueMicrotask(()=>{hi=!1,(M.currentView===`findings`||M.currentView===`files`||x())&&(M.bundleHashTick++,O())}))}),Oe(()=>{M.linksTick++,O()});function gi(){M.currentView===`bundles`&&M.bundleDetailsTab===`graph`?xe():Gt()}function _i(){M.currentView===`bundles`&&M.bundleDetailsTab===`graph`?we():Yt()}function vi(){let e=document.querySelector(`.bundle-source-code-wrap`),t=e?.scrollTop??0,n=e?.scrollLeft??0;O();let r=document.querySelector(`.bundle-source-code-wrap`);r&&(r.scrollTop=t,r.scrollLeft=n)}function W(e){let t=document.querySelector(e)?.scrollTop??0;O();let n=document.querySelector(e);n&&(n.scrollTop=t)}function G(){M.viewMode===`table`?W(`.findings-table-list`):O()}var yi=0;function bi(){yi||=requestAnimationFrame(()=>{yi=0,O()})}function K(e,t){for(let n of e.composedPath())if(n?.matches?.(t))return n;return null}function xi(e,t){queueMicrotask(()=>{let n=document.querySelector(`.bundle-source-lineno-row[data-line="${e}"]`);n&&n.scrollIntoView(t)})}function Si(e){e.classList.add(`copied`),setTimeout(()=>e.classList.remove(`copied`),1e3)}function Ci(e,t){try{navigator.clipboard.writeText(t).then(()=>(Si(e),null)).catch(()=>{})}catch{}}function wi(e){let t=_(M.bundleCodeHistory,M.bundleDetails?.integrity??null,M.bundleSourceFile);M.bundleCodeHistory=ie(t,e),M.bundleSourceFile=e}function Ti(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(!N()||Pn()||M.currentView!==`bundles`||M.bundleDetailsTab!==`code`)return;let e=hr(new URL(location.href));if(e?.bundleTab!==`code`||e.file==null||e.file!==et(M)?.file)return;let t=M.bundleSourceFile,n=e.endLine??e.line;M.bundleSourceTargetLine=e.line&&n<=Hn(Vn(M.bundleDetails).get(t)??``)?{bundle:M.bundleDetails?.integrity??null,path:t,line:e.line,...e.endLine?{end:e.endLine}:{}}:null,O(),M.bundleSourceTargetLine&&xi(e.line,{block:`center`})});function Ei(e){let t=e.target.closest(`[data-bundle-source-line]`);if(t){let n=Number(t.dataset.bundleSourceLine),r=M.bundleDetails?.integrity??null,i=M.bundleSourceFile,a=M.bundleSourceTargetLine,o=a?.bundle===r&&a.path===i?a:null;if(e.shiftKey&&o){let e=o.anchor??o.line;M.bundleSourceTargetLine={bundle:r,path:i,line:Math.min(e,n),end:Math.max(e,n),anchor:e}}else o?.line===n&&!(o.end>n)?M.bundleSourceTargetLine=null:M.bundleSourceTargetLine={bundle:r,path:i,line:n};return vi(),!0}let n=e.target.closest(`[data-bundle-source-wrap]`);if(n){let e=zt(n);M.bundleSourceWrap=!M.bundleSourceWrap;try{localStorage.setItem($t,String(M.bundleSourceWrap))}catch{}return O(),queueMicrotask(e),!0}if(e.target.closest(`[data-bundle-source-pretty]`))return m(),O(),Ti(),!0;if(e.target.closest(`[data-bundle-source-lockfile]`))return se(),O(),!0;let r=e.target.closest(`[data-bundle-code-history]`);if(r){let e=_(M.bundleCodeHistory,M.bundleDetails?.integrity??null,M.bundleSourceFile),t=oe(e,r.dataset.bundleCodeHistory===`back`?-1:1),n=t.files[t.at];return t.at===e.at||!Vn(M.bundleDetails).has(n)||(M.bundleCodeHistory=t,M.bundleSourceFile=n,M.bundleSourceFindingIdx=null,M.bundleCodeSearchMode=`files`,M.bundleCodeSearchQuery=``,W(`.bundle-code-rail-body`),De(),Ti()),!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=Hi(e),i=ee(r,n.dataset.focusCodeIntegrity,n.dataset.focusCodeFile,t);return i&&(Ui(r,i),queueMicrotask(()=>n.querySelector(`.focus-code-source`)?.focus({preventScroll:!0}))),!0}return Vn(M.bundleDetails).has(t)&&(M.currentView===`bundles`&&M.bundleDetailsTab===`search`&&(gn(`code`,{preserveSource:!0}),M.selectedBundle&&j(M.selectedBundle,`code`,{push:!0})),wi(t),M.bundleSourceFindingIdx=null,M.bundleDetailsTab===`code`&&(M.bundleCodeSearchMode=`files`,M.bundleCodeSearchQuery=``),W(`.bundle-code-rail-body`),De(),Ti(!0)),!0}if(e.target.classList?.contains(`bundle-source-overlay`)||e.target.closest(`[data-action="bundle-source-close"]`))return M.bundleSourceFile&&(gn(M.bundleDetailsTab),O()),!0;if(e.target.closest(`[data-action="bundle-source-panel-close"]`))return M.bundleSourceFindingIdx!=null&&(M.bundleSourceFindingIdx=null,vi()),!0;let a=e.target.closest(`[data-bundle-source-finding]`);if(a){let e=parseInt(a.dataset.bundleSourceFinding,10);return Number.isFinite(e)&&(M.bundleSourceFindingIdx=M.bundleSourceFindingIdx===e?null:e,vi()),!0}return!1}function Di(e){let t=Hi(e);if(!t)return null;let n=T(t);return Un(n,vt(n))}E.addEventListener(`click`,e=>{if(K(e,`[data-finding-history]`)){let t=Hi(e),n=t&&T(t);Tt(n)&&Be(n);return}let t=K(e,`[data-code-nav-file]`);if(t){Ui(Hi(e),{integrity:t.dataset.codeNavIntegrity,file:t.dataset.codeNavFile,range:Yn(t.dataset.codeNavLine)});return}let n=K(e,`[data-code-history]`);if(n){Gi(n.dataset.codeHistory===`forward`?1:-1);return}let r=K(e,`[data-code-preview]`);if(r){let e=r.dataset.codePreview,t=new Set(M.codePreviews);t.delete(e)||t.add(e),M.codePreviews=t,O();return}let i=K(e,`[data-finding-code-report]`);if(i&&N()){zn({reportId:i.dataset.findingCodeReport,file:i.dataset.findingCodeFile,line:i.dataset.findingCodeLine});return}let a=K(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;M.bundleSourceFile=t||null,M.bundleCodeHistory=null,M.bundleSourceFindingIdx=null,(M.bundleDetailsTab===`code`||M.bundleDetailsTab===`search`)&&(M.bundleDetailsTab=`overview`);let i=()=>{Number.isFinite(r)&&xi(r,{block:`start`,behavior:`instant`})};if(M.selectedBundle===e&&M.bundleDetails?.integrity===e){O(),Dn().then(()=>(M.selectedBundle===e&&M.bundleSourceFile===t&&i(),null));return}M.selectedBundle=e,M.selectedBundleWorkspace=null,M.bundleDetails=null,O(),(async()=>(await wn(e),i()))();return}let o=e.target.closest(`[data-package-expand]`);if(o){let e=o.dataset.packageExpand;M.expandedPackages.has(e)?M.expandedPackages.delete(e):M.expandedPackages.add(e),O();return}let s=e.target.closest(`[data-package-row-issues]`);if(s){let e=s.dataset.packageRowIssues,t=s.dataset.packageRowIssuesVersion;M.selectedPackage=e,M.selectedPackageVersion=t||null,M.packageDetailsTab=`issues`,M.packageSlideTriage=null,M.packageSlideTransient=!0,O();return}let c=e.target.closest(`[data-repository-row-issues]`);if(c){let e=c.dataset.repositoryRowIssues;M.selectedRepository=e,M.repositoryDetailsTab=`issues`,M.repositorySlideTriage=null,M.repositorySlideTransient=!0,O();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(M.selectedPackage===e&&M.selectedPackageVersion===n)return;M.selectedPackage=e,M.selectedPackageVersion=n,M.packageDetailsTab=`overview`,M.packageSlideTriage=null,M.packageSlideTransient=!1,O();return}if(e.target.closest(`[data-deselect-package]`)){M.selectedPackage=null,M.selectedPackageVersion=null,O();return}let d=e.target.closest(`[data-package-tab]`);if(d){let e=d.dataset.packageTab;(e===`overview`||e===`issues`)&&M.packageDetailsTab!==e&&(M.packageDetailsTab=e,O());return}if(e.target.closest(`[data-action="package-slide-back"]`)){M.packageDetailsTab=`overview`,M.packageSlideTriage=null,M.packageSlideTransient&&(M.selectedPackage=null,M.selectedPackageVersion=null,M.packageSlideTransient=!1),O();return}let f=K(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 Bt(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&&ln(e);return}let m=e.target.closest(`[data-select-repository]`);if(m){let e=m.dataset.selectRepository;if(M.selectedRepository===e)return;M.selectedRepository=e,M.repositoryDetailsTab=`overview`,M.repositorySlideTriage=null,M.repositorySlideTransient=!1,O();return}if(e.target.closest(`[data-deselect-repository]`)){M.selectedRepository=null,O();return}let g=e.target.closest(`[data-repository-tab]`);if(g){let e=g.dataset.repositoryTab;(e===`overview`||e===`issues`)&&M.repositoryDetailsTab!==e&&(M.repositoryDetailsTab=e,O());return}if(e.target.closest(`[data-action="repository-slide-back"]`)){M.repositoryDetailsTab=`overview`,M.repositorySlideTriage=null,M.repositorySlideTransient&&(M.selectedRepository=null,M.repositorySlideTransient=!1),O();return}let ee=e.target.closest(`[data-bundle-tab]`);if(ee){let e=ee.dataset.bundleTab;if(dr.has(e)||e===`review`&&M.bundleDetails?.npm||mr.has(e)&&M.bundleDetails?.repository){if(e===M.bundleDetailsTab){M.selectedBundle&&j(M.selectedBundle,e);return}M.bundleDetailsTab===`graph`&&e!==`graph`&&(R(),document.body.classList.remove(`report-fullscreen`)),nt(M,e,e=>me(e)?.oldVersion??null),gn(e),M.selectedBundle&&j(M.selectedBundle,e,{push:!0}),O(),e===`code`&&Dn().then(()=>(M.bundleDetailsTab===`code`&&De(),null))}return}if(e.target.closest(`[data-bundle-retry-sources]`)){M.bundleDetails&&delete M.bundleDetails.sourceError,O();return}let _=e.target.closest(`[data-bundle-download]`);if(_){let e=_.dataset.bundleDownload,t=(M.bundles??[]).find(t=>t.integrity===e);if(!t)return;(async()=>{let{confirmed:n}=await In({name:t.name,encrypted:C()});if(n)try{let n=await ne(e);xt(new Blob([n],{type:`application/octet-stream`}),t.name)}catch(e){alert(`Failed to download bundle: ${e.message}`)}})();return}let ie=e.target.closest(`[data-bundle-export-sbom]`);if(ie){let e=ie.dataset.bundleExportSbom,t=M.bundleDetails,n=(M.bundles??[]).find(e=>e.integrity===M.selectedBundle);if(!n||!t||t.integrity!==n.integrity)return;try{let r=e===`cyclonedx`,i=r?h(t,n):te(t,n),a=`${u(n.name)}.${r?`cdx`:`spdx`}.json`;xt(new Blob([i],{type:`application/json`}),a)}catch(t){alert(`Failed to export ${e===`cyclonedx`?`CycloneDX`:`SPDX`}: ${t.message}`)}return}if(K(e,`[data-bundle-search-context]`)){M.bundleSearchContext=!M.bundleSearchContext,W(`.bundle-search-results`);return}if(e.target.closest(`[data-advisories-consent]`)){ge(),O();return}if(e.target.closest(`[data-advisories-retry]`)){ve(M.bundleDetails,O).catch(()=>{}),O();return}let ae=e.target.closest(`[data-bundle-issue-report]`);if(ae){let e=ae.dataset.bundleIssueReport;e&&ln(e);return}if(Ei(e))return;let oe=e.target.closest(`[data-bundle-code-issue-step]`);if(oe){let e=oe.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=oe.dataset.bundleCodeIssueStep===`-1`?-1:1,n=t.findIndex(e=>e.idx===M.bundleSourceFindingIdx),r=n===-1?e>0?t[0]:t.at(-1):t[(n+e+t.length)%t.length];M.bundleSourceFindingIdx=r.idx,vi(),r.line>0&&xi(r.line,{block:`center`,behavior:`smooth`})}return}let v=K(e,`[data-bundle-view-source]`);if(v){let e=v.dataset.bundleViewSource;if(!e)return;let t=v.dataset.bundleViewFindingIdx,n=t===void 0?null:parseInt(t,10),r=v.dataset.bundleViewLine,i=r?parseInt(r,10):null;Number.isFinite(i)&&(M.bundleSourcePretty=!1,M.bundleSourceLockfile=!1);let a=M.bundleSourceFile!==e;if(wi(e),Number.isFinite(n)?M.bundleSourceFindingIdx=n:a&&(M.bundleSourceFindingIdx=null),M.bundleSourceTargetLine=Number.isFinite(i)?{bundle:M.bundleDetails?.integrity??null,path:e,line:i}:null,v.closest(`.bundle-code-rail`)?W(`.bundle-code-rail-body`):v.closest(`.bundle-search-results`)?W(`.bundle-search-results`):v.closest(`.bundles-slide-body`)?W(`.bundles-slide-body`):O(),Number.isFinite(i)){let t=v.dataset.bundleViewScrollBlock||`center`;Dn().then(()=>(M.bundleSourceFile===e&&xi(i,{block:t,behavior:`smooth`}),null))}return}let se=e.target.closest(`[data-action="workspace-reports"], [data-action="workspace-bundles"], [data-action="workspace-repositories"], [data-action="workspace-dependencies"]`);if(se){let e=se.dataset.action.slice(10);M.currentView!==`workspace-${e}`&&fn(M.currentManagedTeam??M.currentWorkspace,e);return}if(e.target.closest(`[data-action="workspace-findings"]`)){if(M.currentView===`findings`)return;if(M.currentView===`files`){if(di(`findings`))return;M.currentView=`findings`,M.filesSelectedFile=null,document.body.classList.remove(`report-fullscreen`),O()}else N()?hn(M.managedTeams.find(e=>e.id===M.currentManagedTeam)):yn(M.currentWorkspace);return}let ce=e.target.closest(`[data-workspace-report]`);if(ce){N()?hn(M.managedTeams.find(e=>e.id===M.currentManagedTeam),ce.dataset.workspaceReport):ln(ce.dataset.workspaceReport,void 0,{workspaceId:M.currentWorkspace});return}let le=e.target.closest(`[data-workspace-repository]`);if(le){let{workspaceRepository:e,repositoryName:t,repositoryPath:n}=le.dataset;document.dispatchEvent(new CustomEvent(`managed-repository-code-open`,{detail:{repoId:Number(e),repo:t,path:n}}));return}let ue=e.target.closest(`[data-workspace-bundle]`);if(ue){if(N())bt.navigate(gr({view:`bundles`,teamId:M.currentManagedTeam,bundleId:ue.dataset.workspaceBundle,bundleTab:`overview`},M.managedTeams));else{let e=ue.dataset.workspaceBundle;pn(e,`overview`,{workspaceId:M.currentWorkspace}),j(e,`overview`),O(),D(),wn(e)}return}if(e.target.closest(`[data-action="toggle-files"]`)){if(di(M.currentView===`files`?`findings`:`files`))return;M.currentView===`files`?M.currentView=`findings`:(M.viewMode===`graph`&&R(),M.currentView=`files`),document.body.classList.remove(`report-fullscreen`),O();return}let de=K(e,`[data-g2-pkg]`);if(de){let e=de.dataset.g2Pkg;L.solo=L.solo===e?null:e,L.solo&&(L.selected=null),gi(),_i(),L.graphState?.requestDraw?.();return}let fe=K(e,`[data-g2-select]`);if(fe){L.selected=fe.dataset.g2Select,gi(),L.graphState?.requestDraw?.();return}let pe=K(e,`[data-g2-top-pkgs]`);if(pe){L.topPkgsTab=pe.dataset.g2TopPkgs,_i();return}let y=K(e,`[data-g2-jump-findings]`);if(y){if(M.currentView===`bundles`){M.bundleDetailsTab===`graph`&&R(),gn(`issues`),M.selectedBundle&&j(M.selectedBundle,`issues`,{push:!0}),O();return}if(_e(),M.filterConfMin=0,M.filterInclude=y.dataset.g2JumpFindings,M.currentView=`findings`,M.viewMode===`graph`&&(M.viewMode=`table`),R(),di(`findings`))return;O();return}let he=K(e,`[data-g2-jump-file]`);if(he){let e=he.dataset.g2JumpFile;R();let t=()=>requestAnimationFrame(()=>{let t=document.querySelector(`#${ir(e)}`);t&&t.scrollIntoView({behavior:`smooth`,block:`start`})}),n=di(`files`);if(n){n.then(e=>e?t():void 0);return}M.currentView=`files`,O(),t();return}if(K(e,`#g2-path-filter-clear`)){L.pathFilter=``;let e=document.querySelector(`graph-layout`)?.shadowRoot?.querySelector(`#g2-path-filter`);e&&(e.value=``),L.graphState?.requestDraw?.();return}if(K(e,`#g2-fullscreen`)){document.body.classList.toggle(`report-fullscreen`);return}if(K(e,`[data-g2-show-all]`)){L.showAll=!L.showAll,L.layoutCache=null,L.selected=null,R(),O();return}if(K(e,`[data-g2-packages-view]`)){L.bundleLayout===`flow`?L.flowPackagesView=!L.flowPackagesView:L.bundleLayout===`dependencies`?(L.dependencyPackagesView=!L.dependencyPackagesView,L.solo=null):L.packagesView=!L.packagesView,L.layoutCache=null,L.selected=null,L.focusedPkg=null,R(),O();return}if(K(e,`[data-g2-bundle-issues]`)){L.bundleIssues=!L.bundleIssues,R({keepViewport:!0}),O();return}let ye=K(e,`[data-g2-layout]`);if(ye){let e=ye.dataset.g2Layout;if(![`graph`,`layers`,`matrix`,`dependencies`,`flow`].includes(e)||L.bundleLayout===e&&!L.focusedPkg)return;L.bundleLayout=e,e===`dependencies`&&(L.dependencyPackagesView=!1),L.layoutCache=null,L.selected=null,L.solo=null,L.focusedPkg=null,R(),O();return}let be=K(e,`.graph2-triage-selector [data-triage-show]`);if(be){let e=be.dataset.triageShow;M.shownTriage=M.shownTriage===e?null:e,L.layoutCache=null,L.selected=null,R(),O();return}let xe=K(e,`[data-g2-focus-pkg]`);if(xe){L.focusedPkg=xe.dataset.g2FocusPkg,L.layoutCache=null,R(),O();return}if(K(e,`#g2-back-to-full`)){L.focusedPkg=null,L.layoutCache=null,(L.packagesView||L.bundleLayout===`layers`)&&(L.selected=null),R(),O();return}let Se=K(e,`.tab`);if(Se&&K(e,`.tabs`)){let t=K(e,`[data-gid]`).dataset.gid,n=Se.dataset.tid;M.activeTabByGroup.set(t,n),G();return}let Ce=K(e,`[data-triage-action]`);if(Ce){let e=Ce.closest(`.triage-menu`),t=e?.dataset.gid;if(!t)return;let n=k(t);if(!n)return;let r=Ce.dataset.triageAction;if(![`inprogress`,`fixed`,`invalid`,`deleted`,`ignored`,`restore`].includes(r))return;let{targets:i,clearing:a}=Ft(n,r);if(i.length===0)return;ji(i,a?`untriaged`:r);try{e.hidePopover()}catch{}b(),G();return}if(K(e,`.mark-comment`)){let t=K(e,`[data-gid]`).dataset.gid,n=k(t);if(!n)return;let r=T(n);if(!$e(r))return;if(N()){kn(r,G).catch(()=>mt(`Could not open comments. Please retry.`));return}let i=er(r),a=ot(r)?.comment??``;Fn({initial:a,finding:r}).then(e=>(e===null||!S(r)||(F(M.triage,i,{comment:e||void 0}),b(),G()),null)).catch(()=>{});return}let we=K(e,`.mark-copy`);if(we){let t=Di(e);if(t===null)return;Ci(we,t);return}let Te=K(e,`.mark-link`);if(Te){let t=K(e,`[data-gid]`),n=t?k(t.dataset.gid):null;if(!n)return;let r=re(T(n));if(!r)return;Ci(Te,r);return}let Ee=K(e,`[data-copy-report]`);if(Ee){Ci(Ee,Ee.dataset.copyReport);return}let Oe=K(e,`[data-copy-path]`);if(Oe){Ci(Oe,Oe.dataset.copyPath);return}let ke=K(e,`.mark-issue`);if(ke&&N()&&M.managedSession&&!M.managedSession.publicShare&&M.currentManagedTeam){let t=K(e,`[data-gid]`),n=t?k(t.dataset.gid):null,r=n?T(n):null;if(r?._managedReportId&&r.id){e.preventDefault();let t=new URL(ke.dataset.issueForm);Ie({teamId:M.currentManagedTeam,session:{...M.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:Jn(r,pt(r)),evidence:Zn(r),showRevalidation:or(),findingLink:re(r)},renderBody:He,render:O}).catch(()=>mt(`Could not open issue creation. Please retry.`));return}}let Ae=K(e,`.mark-claude`);if(Ae){let t=Di(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}}
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
- `,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}}
7
+ ${t}`)}`;try{window.location.href=n,Si(Ae)}catch{}return}if(K(e,`.mark-fix`)){let t=K(e,`[data-gid]`)?.dataset.gid,n=t?k(t):null;if(!n)return;let r=T(n);if(!S(r))return;let i=tn(n),a=ot(r)?.fix??``;Bn({initial:a,finding:r,canApplyToGroup:Et(i,a)}).then(e=>{if(e===null||!S(r))return null;let n=e.scope===`group`?i.filter(e=>S(e)&&(e===r||At(e,a))):[r],o=!1;for(let t of n)F(M.triage,er(t),{fix:e.value||void 0})&&(o=!0);return o&&(n.length>1&&M.activeTabByGroup.set(t,er(r)),G(),queueMicrotask(b)),null}).catch(()=>{});return}let je=K(e,`[data-flag-toggle]`);if(je){let t=je.dataset.flagToggle,n=K(e,`[data-gid]`)?.dataset.gid,r=(n?k(n):null)?.find(e=>er(e)===t);if(!r||!S(r))return;let i=ot(r)?.flagged;F(M.triage,t,{flagged:i!==!0}),b(),G();return}let Me=e.target.closest(`[data-triage-show]`);if(Me&&!Me.closest(`.graph2-triage-selector`)){let e=Me.dataset.triageShow;M.shownTriage=M.shownTriage===e?null:e,O();return}if(e.target.closest(`[data-table-deselect]`)){M.tableSelectedGid=null,G();return}let Ne=e.target.closest(`[data-tree-select]`);if(Ne){let e=Ne.dataset.treeSelect;M.filesSelectedFile=M.filesSelectedFile===e?null:e,O();return}e.target.closest(`[data-tree-deselect]`)&&(M.filesSelectedFile=null,O())});var Oi=document.querySelector(`#bundle-source-overlay-slot`);Oi&&Oi.addEventListener(`click`,Ei);function ki(e){let t=e?k(e):null;t&&Wt(t)&&queueMicrotask(b)}E.addEventListener(`row-select`,e=>{let t=e.detail?.gid;if(!t)return;let n=M.tableSelectedGid!==t;M.tableSelectedGid=n?t:null,n&&ki(t),G()});var Ai=`application/x-deepview-kanban-gid`;function ji(e,t){for(let n of e)S(n)&&On(M.triage,n,t,Wn())}function Mi(){for(let e of E.querySelectorAll(`.kanban-card.dragging`))e.classList.remove(`dragging`);for(let e of E.querySelectorAll(`.kanban-column.drag-over`))e.classList.remove(`drag-over`)}E.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=k(n);if(!r||Rt(r).length===0){e.preventDefault();return}e.dataTransfer.setData(Ai,n),e.dataTransfer.setData(`text/plain`,n),e.dataTransfer.effectAllowed=`move`,t.classList.add(`dragging`)}),E.addEventListener(`dragend`,Mi),E.addEventListener(`dragover`,e=>{if(!e.dataTransfer?.types.includes(Ai))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 E.querySelectorAll(`.kanban-column.drag-over`))e!==t&&e.classList.remove(`drag-over`);t.classList.add(`drag-over`)}}),E.addEventListener(`dragleave`,e=>{let t=e.target.closest?.(`.kanban-column[data-kanban-target]`);t&&(t.contains(e.relatedTarget)||t.classList.remove(`drag-over`))}),E.addEventListener(`drop`,e=>{if(!e.dataTransfer?.types.includes(Ai))return;let t=e.target.closest?.(`.kanban-column[data-kanban-target]`);if(!t){Mi();return}e.preventDefault();let n=e.dataTransfer.getData(Ai),r=t.dataset.kanbanTarget;if(Mi(),!n||!r)return;let i=k(n);if(!i||(St(i).commonTriage??`untriaged`)===r)return;let a=Rt(i);a.length!==0&&(ji(a,r),O(),queueMicrotask(b))});var Ni=!1,Pi=[`theme-w95`,`theme-paper`];function Fi(){return!!document.startViewTransition&&!Pi.some(e=>document.body.classList.contains(e))}function q(e){return e?E.querySelector(`.kanban-card[data-gid="${CSS.escape(e)}"]`):null}function Ii(e){let t=e??E.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 Li(e){M.kanbanPopoverGid=e,M.focusCodeStack=[],M.focusCodeAt=0}function Ri(){l()}function J(e){let t=M.kanbanPopoverGid;if(t===e)return;let n=t===null&&e!==null,r=t!==null&&e===null;if(!Fi()||!n&&!r){ki(e),Li(e),O(),Ri();return}if(Ni)return;ki(e),Ni=!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),Ni=!1};if(n){let t=q(e);t?(Ii(t),t.style.viewTransitionName=`kanban-detail-modal`,t.getBoundingClientRect()):Ii(),Li(e);let n=Vt(()=>{O(),Ri(),t&&(t.style.viewTransitionName=``)}),r=setTimeout(()=>a(t),600);(async()=>{try{await n.finished}catch{}clearTimeout(r),a(t)})();return}Ii(),Li(e);let o=null,s=Vt(()=>{O(),o=q(t),o&&(Ii(o),o.style.viewTransitionName=`kanban-detail-modal`)}),c=setTimeout(()=>a(o??q(t)),600);(async()=>{try{await s.finished}catch{}clearTimeout(c),a(o??q(t))})()}function zi(e){let t=q(M.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;J(o);let s=q(o);s&&(s.focus({preventScroll:!0}),s.scrollIntoView({block:`nearest`,behavior:`instant`}))}var Bi=null;function Vi(){Je(),M.focusCodeStack=[],M.focusCodeAt=0,O(),Bi?.isConnected&&Bi.focus({preventScroll:!0}),Bi=null}E.addEventListener(`click`,e=>{let t=K(e,`[data-links-preview]`);if(t){e.preventDefault(),Bi=t;let n=t.dataset.previewRow,r=Xe(t.dataset.linksPreview,t.dataset.previewReport,n===void 0?void 0:Number(n),t.dataset.previewManagedReport);O(),E.querySelector(`.kanban-detail-close`)?.focus({preventScroll:!0}),r.then(()=>{O(),l();let e=x()?.group?.[0]._bundleHashes;if(Array.isArray(e))for(let t of e)bn(t).catch(()=>{});return null});return}if(e.target.closest?.(`.kanban-detail-close`)){if(x()){Vi();return}J(null);return}if(e.target.closest?.(`[data-kanban-detail-fullscreen]`)){M.kanbanDetailFullscreen=!M.kanbanDetailFullscreen;try{localStorage.setItem(Xt,String(M.kanbanDetailFullscreen))}catch{}O(),l();return}let n=e.target.closest?.(`[data-kanban-expand]`);if(n){let e=n.dataset.kanbanExpand,t=M.kanbanExpandedColumn===e?null:e;M.kanbanExpandedColumn=t,t&&M.kanbanPopoverGid&&q(M.kanbanPopoverGid)?.closest(`.kanban-column`)?.dataset.kanbanTarget!==t&&(M.kanbanPopoverGid=null),O();return}let r=e.target.closest?.(`[data-kanban-nav]`);if(r){zi(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&&J(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;J(M.kanbanPopoverGid===e?null:e);return}if(!K(e,`.kanban-detail-modal, .kanban-detail-side`)){if(x()){Vi();return}M.kanbanPopoverGid&&J(null)}}),E.addEventListener(`change`,e=>{let t=e.target.closest?.(`[data-kanban-column]`);if(!t)return;let n=t.selectedOptions[0]?.dataset.gid;n&&J(n)}),document.addEventListener(`keydown`,e=>{if(e.key===`Escape`){if(x()){!e.defaultPrevented&&!Ji(e)&&!document.querySelector(`:popover-open:not(#styled-tooltip)`)&&Vi();return}if(M.kanbanPopoverGid){J(null);return}M.viewMode!==`kanban`||M.kanbanExpandedColumn===null||(M.kanbanExpandedColumn=null,O())}});function Hi(e){let t=K(e,`[data-gid]`)?.dataset?.gid;return t?k(t):null}function Ui(e,t){if(!t.integrity||!t.file)return;let n=p(e);if(!n)return;let r=vn(n,t);r&&(M.focusCodeStack=r.stack,M.focusCodeAt=r.at,O()),t.range||Wi(),l()}function Wi(){for(let e of E.querySelectorAll(`.focus-code-body`))e.scrollTop=0,e.scrollLeft=0}E.addEventListener(`keydown`,e=>{if(e.key!==`Enter`&&e.key!==` `)return;let t=K(e,`[data-code-nav-file]`);t&&(e.preventDefault(),Ui(Hi(e),{integrity:t.dataset.codeNavIntegrity,file:t.dataset.codeNavFile,range:Yn(t.dataset.codeNavLine)}))});function Gi(e){let t=Cn(M.focusCodeStack,M.focusCodeAt,e);t!==M.focusCodeAt&&(M.focusCodeAt=t,O(),M.focusCodeStack[t]?.range||Wi(),l())}function Ki(e){if(!e||M.focusGid===e)return;ki(e),M.focusGid=e,M.focusCodeStack=[],M.focusCodeAt=0,O();let t=E.querySelector(`.focus-side-card.active`);t&&t.scrollIntoView({block:`nearest`,behavior:`instant`}),l()}function qi(e){let t=[...E.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&&Ki(i)}E.addEventListener(`click`,e=>{let t=e.target.closest?.(`[data-focus-nav]`);if(t){qi(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&&Ki(r)}),E.addEventListener(`pointerdown`,e=>{if(e.button!==0)return;let t=e.target.closest?.(`[data-focus-splitter]`);t&&ti(t,e)}),E.addEventListener(`dblclick`,e=>{let t=e.target.closest?.(`[data-focus-splitter]`);t&&ei(t)});function Ji(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(M.currentView!==`findings`)return;let t=M.viewMode===`focus`,n=M.viewMode===`kanban`&&M.kanbanPopoverGid!==null;if(!t&&!n||e.metaKey||e.ctrlKey||e.altKey||e.shiftKey||Ji(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){$r(i,r*Yr);return}t?qi(r):zi(r)}),E.addEventListener(`mark-color`,e=>{let t=K(e,`[data-gid]`);if(!t)return;let n=t.dataset.gid,r=k(n);if(!r)return;let i=T(r);if(!S(i))return;let a=er(i),o=e.detail?.color;o&&(ot(i)?.color===o?F(M.triage,a,{color:void 0}):F(M.triage,a,{color:o}),b(),G())});var Y=null,Yi=null,Xi=null,Zi=!1;function Qi(){if(Y!==null)return;if(M.reports.length===0){Xi=null,Zi=!1;return}Y=M.viewMode,Yi=document.title;let e=!1;M.viewMode===`table`&&(M.viewMode=`list`,e=!0),Xi&&(Se(Xi),e=!0),e&&O();for(let e of E.querySelectorAll(`finding-card`))e.toggleAttribute(`print-one-sample`,Zi),e.ensureRendered({sync:!0});let t=M.reports.map(e=>e.fileName),n=``;t.length===1?n=t[0]:t.length>1&&(n=Kn(t)),n=n.replace(/\.json$/u,``),n&&(document.title=n)}function $i(){if(Y===null)return;for(let e of E.querySelectorAll(`finding-card`))e.removeAttribute(`print-one-sample`);Zi=!1;let e=!1;M.viewMode!==Y&&(M.viewMode=Y,e=!0),Xi&&(Ee(),Xi=null,e=!0),e&&O(),document.title=Yi,Y=null,Yi=null}window.addEventListener(`beforeprint`,Qi),window.addEventListener(`afterprint`,$i);async function ea(e,{oneSamplePerGroup:t=!1}={}){if(Y===null){Xi=e,Zi=t;try{Qi(),await Promise.all([...E.querySelectorAll(`finding-card`)].map(e=>e.ensureRendered())),window.print()}catch(e){throw $i(),e}}}function ta(e,t){if(!e)return t();Se(e);try{return t()}finally{Ee()}}document.addEventListener(`download-requested`,async()=>{if(M.reports.length===0)return;let{confirmed:e,view:t,fields:n,mode:r,oneSamplePerGroup:i}=await Ln(`download`);if(!await nn()){mt(`Could not load finding details to export. Open the team again to retry.`);return}if(t){await Rn(ta(n,()=>ci({oneSamplePerGroup:i})));return}if(e){if(r===`print`){await ea(n,{oneSamplePerGroup:i});return}ta(n,()=>ui({oneSamplePerGroup:i}))}}),E.addEventListener(`analyzer-change`,e=>{M.filterAnalyzer=e.detail.analyzer,M.filterModel=e.detail.model,O()}),E.addEventListener(`repo-change`,e=>{M.filterRepo=e.detail.value,O()}),E.addEventListener(`revalidate-change`,e=>{M.filterRevalidate=e.detail.value,O()}),E.addEventListener(`partial-change`,e=>{M.filterPartial=e.detail.value,O()}),E.addEventListener(`revalidation-change`,e=>{M.showRevalidation=e.detail.on,!e.detail.on&&M.reports.some(e=>(e.groups??[]).some(e=>e.some(e=>!e.isApp&&(e.isUpstream||Gn(e.file)))))?mt(`App mode off is not recommended; it can conflate triage for issues in dependencies.`,{kind:`warning`}):e.detail.on&&yt(),ar(M.showRevalidation,M.upstreamOnly),Pe(Zt(),{resetSort:!1}),O()}),E.addEventListener(`revalidation-conflicts-open`,()=>{(async()=>{let e=await jn(M.revalidateConflicts);if(!e)return;let t=await Bt(e.id,e.reportName);t.ok||alert(t.reason)})().catch(e=>console.warn(`revalidation: open conflicting finding failed:`,e))}),E.addEventListener(`revalidation-detail-change`,e=>{M.revalidationDetailed=e.detail.on===!0,O()}),E.addEventListener(`upstream-only-change`,e=>{if(M.upstreamOnly=e.detail.on===!0,ar(M.showRevalidation,M.upstreamOnly),!M.upstreamOnly){let e=Zt();je(e,Ne(e))===`confirmed`&&(M.filterRevalidate=`confirmed`,M.filterPartial=``)}O()}),E.addEventListener(`bundle-search-mode-change`,e=>{let t=e.detail?.mode;if([`files`,`code`,`issues`,`largest`].includes(t)){if(M.bundleCodeSearchMode=t,O(),t===`files`)De();else if(t===`largest`){let e=document.querySelector(`.bundle-code-rail-body`);e&&(e.scrollTop=0)}}}),E.addEventListener(`bundle-graph-reason-change`,e=>{let t=e.detail?.reason;t!==null&&typeof t!=`string`||(L.bundleReason=t,L.layoutCache=null,L.selected=null,L.solo=null,L.focusedPkg=null,R(),O())}),E.addEventListener(`bundle-search-regex-toggle`,()=>{M.bundleSearchRegex=!M.bundleSearchRegex,O()}),E.addEventListener(`bundle-search-case-toggle`,()=>{M.bundleSearchCase=!M.bundleSearchCase,O()}),E.addEventListener(`bundle-swap`,e=>{let t=e.detail?.integrity;if(!t||!(M.bundles??[]).some(e=>e.integrity===t))return;let n=M.bundles.find(e=>e.integrity===t),r=rn(e.detail.bundles??[]),i=()=>{setTimeout(()=>sn(r))};if(n.managedId){let t=e.detail.target===void 0?M.selectedBundle:e.detail.target,r=M.bundles.find(e=>e.integrity===t),a=r?.managedId?{compareId:r.managedId,...pr(e.detail.mode)}:null;bt.navigate(s(M.managedTeams,n,M.currentManagedTeam,`compare`,a,M.bundles)).finally(i);return}pn(t,`compare`),j(t,`compare`),O(),D(),wn(t).finally(i)}),E.addEventListener(`bundle-compare-change`,e=>{let{base:t,target:n,mode:r}=e.detail??{};!N()||!t||t!==M.selectedBundle||M.bundleDetailsTab!==`compare`||(M.bundleCompare=n?{bundle:t,target:n,mode:fr(r)}:null,j(t,`compare`))}),E.addEventListener(`sort-change`,e=>{let{kind:t,value:n}=e.detail;if(t===`findings`)M.sortBy=n;else if(t===`packages`)M.packagesSortBy=n;else if(t===`repositories`)M.repositoriesSortBy=n;else return;O()}),E.addEventListener(`range-change`,e=>{e.target.id===`conf-range`&&(M.filterConfMin=e.detail.low,M.filterConfMax=e.detail.high,O())}),E.addEventListener(`input`,e=>{let t=e.composedPath()[0],n=t?.id,r=t?.value;n===`g2-path-filter`&&(L.pathFilter=r,L.graphState?.requestDraw?.())}),E.addEventListener(`search-input`,e=>{if(!e.detail)return;let{kind:t,value:n}=e.detail;if(t===`findings`){M.filterInclude=n,n||(M.filterIncludeNegate=!1),bi();return}if(t===`files`){M.filesSearch=n,bi();return}if(t===`packages`)M.packagesSearchQuery=n;else if(t===`repositories`)M.repositoriesSearchQuery=n;else if(t===`bundle-code`){M.bundleCodeSearchQuery=n,bi();return}else if(t===`bundle-search`){M.bundleSearchQuery=n,bi();return}else return;O()}),E.addEventListener(`search-negate-toggle`,()=>{M.filterIncludeNegate=!M.filterIncludeNegate,O()}),E.addEventListener(`severity-toggle`,e=>{let t=e.detail.severity;if(e.detail.kind===`graph`){L.selectedSeverities.has(t)?L.selectedSeverities.delete(t):L.selectedSeverities.add(t),e.composedPath()[0].selected=[...L.selectedSeverities],L.graphState?.requestDraw?.(),_i();return}M.filterSeverities.has(t)?M.filterSeverities.delete(t):M.filterSeverities.add(t),O()}),E.addEventListener(`color-toggle`,e=>{let t=e.detail.color;if(e.detail.kind===`graph`){L.selectedColors.has(t)?L.selectedColors.delete(t):L.selectedColors.add(t),e.composedPath()[0].selected=[...L.selectedColors],L.graphState?.requestDraw?.(),_i();return}M.filterColors.has(t)?M.filterColors.delete(t):M.filterColors.add(t),O()}),E.addEventListener(`source-toggle`,e=>{let t=e.detail.source,n=M.filterSources.has(t);M.filterSources.clear(),n||M.filterSources.add(t),O()}),E.addEventListener(`annotation-filter-toggle`,e=>{let t=e.detail?.key,n=e=>e===``?`with`:e===`with`?`without`:``;if(t===`comment`)M.filterComment=n(M.filterComment);else if(t===`fix`)M.filterFix=n(M.filterFix);else if(t===`flag`)M.filterFlagged=n(M.filterFlagged);else if(t===`duplicates`&&!M.currentWorkspace)M.filterDuplicates=n(M.filterDuplicates);else if(t===`cross-context`)M.filterCrossContext=n(M.filterCrossContext);else if(t===`app-stacked`)M.filterAppStacked=n(M.filterAppStacked);else if(t===`security`)M.filterSecurity=n(M.filterSecurity);else return;O()}),E.addEventListener(`slide-triage-toggle`,e=>{let{kind:t,value:n}=e.detail;if(t===`package`)M.packageSlideTriage=M.packageSlideTriage===n?null:n;else if(t===`repository`)M.repositorySlideTriage=M.repositorySlideTriage===n?null:n;else return;O()}),E.addEventListener(`view-mode-change`,e=>{if(e.detail.kind===`files`){M.filesViewMode=e.detail.mode,O();return}M.viewMode=e.detail.mode,M.viewMode!==`kanban`&&(M.kanbanPopoverGid=null),M.viewMode!==`focus`&&(M.focusGid=null),O()}),E.addEventListener(`severity-mode-change`,e=>{let t=e.detail?.mode;if(t===`corrected`||t===`original`){M.severityMode=t;try{localStorage.setItem(Ht,t)}catch{}O()}}),E.addEventListener(`repo-edit-start`,()=>{N()||(M.repoEditing=!0,O())}),E.addEventListener(`repo-input`,e=>{N()||(M.repoUrl=e.detail.url,un(M.currentFile,M.repoUrl))}),E.addEventListener(`repo-commit`,e=>{N()||(M.repoUrl=e.detail.url,un(M.currentFile,M.repoUrl),M.repoEditing=!1,O())}),E.addEventListener(`repo-cancel`,e=>{N()||(M.repoUrl=e.detail.url,un(M.currentFile,M.repoUrl),M.repoEditing=!1,O())}),document.addEventListener(`keydown`,e=>{if(e.key===`Escape`){if(M.bundleSourceFindingIdx!=null){M.bundleSourceFindingIdx=null,vi();return}if(M.bundleSourceFile){if(M.currentView===`bundles`&&M.bundleDetailsTab===`code`)return;gn(M.bundleDetailsTab),O()}}});function X(e,t){for(let[n,r]of Object.entries(t))e.hasAttribute(n)||e.setAttribute(n,r)}var Z=Math.PI*2;function na(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 ra(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 ia(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 aa(e){return e.slice(1).reduce((t,n,r)=>t+Math.hypot(n.x-e[r].x,n.y-e[r].y),0)}function oa(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 sa(e,t,n=7){let r=na(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)*Z/20+Z)%Z);for(let[n,r]of[[0,0],[e,0],[e,t],[0,t]])c.push((Math.atan2(r-i.y,n-i.x)+Z)%Z);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),ra(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=ra(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]+Z)%Z,f=(c[(n+1)%c.length]-c[n]+Z)%Z,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=>{ia(e)>.01&&f.push({points:e,...oa(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=aa(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+aa(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+aa(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 ca=`.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
+ `,la=`http://www.w3.org/2000/svg`,ua=null;function da(){ua||(ua=new CSSStyleSheet,ua.replaceSync(ca),document.adoptedStyleSheets=[...document.adoptedStyleSheets,ua])}var fa=1.5,pa=0;function Q(e,t={}){let n=document.createElementNS(la,e);for(let[e,r]of Object.entries(t))n.setAttribute(e,String(r));return n}function ma(e){let t=document.createElement(`div`);t.className=`screen-crack`,t.setAttribute(`aria-hidden`,`true`),da();let n=Q(`svg`,{viewBox:`0 0 ${e.width} ${e.height}`,preserveAspectRatio:`none`});n.classList.add(`screen-crack-svg`);let r=Q(`defs`),i=`screen-crack-mask-${++pa}`,a=Q(`mask`,{id:i,maskUnits:`userSpaceOnUse`,maskContentUnits:`userSpaceOnUse`,x:0,y:0,width:e.width,height:e.height});a.append(Q(`rect`,{width:e.width,height:e.height,fill:`black`})),r.append(a);let o=Q(`g`),s=Q(`g`),c=e.pieces.map(e=>{let t=e.points.map(e=>`${e.x},${e.y}`).join(` `),n=Q(`g`),r=Q(`g`);n.classList.add(`screen-crack-shard`),r.classList.add(`screen-crack-shard`),n.append(Q(`polygon`,{points:t,fill:`white`}));let i=Q(`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 ha(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=Q(`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*fa,delay:r.delay*fa,easing:`cubic-bezier(.2,.7,.2,1)`})}}}function ga(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=sa(n,t),{overlay:i,glass:a,cracks:o,shards:s,flash:c}=ma(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),ha(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))*fa,_=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:_-1}).finished.then(m,()=>{}),d(o,[{opacity:1},{opacity:0}],{duration:450,delay:_,easing:`ease-out`});for(let{masked:e,outlined:t,outline:n,piece:r}of s){let i=_+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 _a=`: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
+ `,va=`deepview.theme`,ya=Object.freeze([`dark`,`light`,`green`,`pink`,`w95`,`paper`]),ba=Object.freeze([`dark`,`green`,`pink`,`w95`,`paper`,`light`]),xa=3,Sa={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`}},Ca=window.matchMedia?.(`(display-mode: window-controls-overlay)`),wa=window.matchMedia?.(`(display-mode: standalone)`),Ta=window.navigator?.windowControlsOverlay,Ea={light:`☀`,dark:`☾`,green:`🕶️`,pink:`✿`,w95:`⊞`,paper:`📄`},Da=`deepview-theme-changed`,$=`dark`,Oa=!1,ka=0,Aa=!1,ja=!1,Ma=0,Na=0,Pa=!1;function Fa(){if(!Aa)return $===`light`?`dark`:`light`;let e=Pa?ba:ba.filter(e=>e!==`w95`),t=e.includes($)?$:`pink`;return e[(e.indexOf(t)+1)%e.length]}function Ia(){window.dispatchEvent(new CustomEvent(Da,{detail:{theme:$}}))}function La(){try{let e=localStorage.getItem(va);return ya.includes(e)?e:`dark`}catch{return`dark`}}function Ra(){let e=document.querySelector(`meta[name="theme-color"]`);if(!e)return;let{base:t,dim:n,sidebar:r}=Sa[$],i=Ta?.visible??Ca?.matches??!1,a=(wa?.matches||Ca?.matches)&&!i;e.setAttribute(`content`,Oa?n:a&&r?r:t)}function za(e){ya.includes(e)||(e=`dark`),$=e;for(let e of ya)e!==`dark`&&document.body.classList.remove(`theme-${e}`);e!==`dark`&&document.body.classList.add(`theme-${e}`);try{e===`dark`?localStorage.removeItem(va):localStorage.setItem(va,e)}catch{}Ra(),Ia()}za(La()),Ca?.addEventListener(`change`,Ra),wa?.addEventListener(`change`,Ra),Ta?.addEventListener(`geometrychange`,Ra),window.addEventListener(`beforeprint`,()=>{Oa=!0,za($)}),window.addEventListener(`afterprint`,()=>{Oa=!1,za($)});function Ba(e){if(!ya.includes(e))throw TypeError(`unknown theme`);Ma++,za(e)}function Va(){return $}var Ha=class extends H{static properties={_theme:{state:!0}};static styles=z(_a);constructor(){super(),this._theme=$}connectedCallback(){super.connectedCallback(),X(this,{role:`button`,tabindex:`0`,"aria-label":`toggle theme`}),this.addEventListener(`click`,this._toggle),this.addEventListener(`keydown`,this._onKeydown),window.addEventListener(Da,this._onThemeChanged),this._onThemeChanged()}disconnectedCallback(){window.removeEventListener(Da,this._onThemeChanged),this.removeEventListener(`click`,this._toggle),this.removeEventListener(`keydown`,this._onKeydown),super.disconnectedCallback()}_onThemeChanged=()=>{this._theme=$,this.setAttribute(`aria-disabled`,String(ja))};_toggle=()=>{if(ja)return;if(!Aa&&++ka>=8&&$===`dark`){Aa=!0,ja=!0,Ia();let e=Ma,t=()=>{Ma===e&&za(`green`)},n=()=>{ja=!1,Ia()};try{ga(t).catch(t).finally(n)}catch{t(),n()}return}let e=Fa();$===`green`&&e===`pink`&&++Na>=xa&&(Pa=!0),za(e)};_onKeydown=e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),e.repeat||this._toggle())};render(){return B`${Ea[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}}
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)}}
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()}})();
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 A{static properties={group:{attribute:!1},selected:{type:Boolean}};static styles=[z(Ct),z(Ka),z(Wa),z(Ua),z(qa),z(Ga)];_near=!1;_watching=!1;constructor(){super(),this.group=null,this.selected=!1}render(){if(!this.group)return B``;if(this.dataset.gid=Qe(this.group),!this._near)return this.classList.toggle(`selected`,this.selected),B`<div class="row row-pending" aria-busy="true"></div>`;let e=new Set(Ye(this.group));this.selected&&e.add(`selected`);for(let t of Ja)this.classList.toggle(t,e.has(t));return B`<div class="row">${Ze(this.group)}</div>`}connectedCallback(){super.connectedCallback(),nr(this.renderRoot),this.addEventListener(`click`,this._onClick),this._watching=!0,it(this,e=>this._onNear(e))}disconnectedCallback(){this.removeEventListener(`click`,this._onClick),this._watching&&=(at(this),!1),super.disconnectedCallback()}_onNear(e){e?(this._watching&&=(at(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
+ `,Za=class extends H{static properties={items:{attribute:!1},selectedGid:{attribute:!1}};static styles=z(Xa);constructor(){super(),this.items=[],this.selectedGid=null}render(){return B`${ur(this.items??[],e=>Qe(e),e=>B`<finding-row .group="${e}" ?selected="${Qe(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 A{static properties={group:{attribute:!1},inGroup:{type:Boolean,attribute:`in-group`,reflect:!0},context:{type:String,reflect:!0},lazy:{type:Boolean}};static styles=[z(Ct),z(Ka),z(Wa),z(Qa),z(qa),z(Ga),z(e),z(a)];_near=!1;_watched=null;constructor(){super(),this.group=null,this.inGroup=!1,this.context=null,this.lazy=!1}render(){if(!this.group)return B``;if(this.dataset.gid=Qe(this.group),this.lazy&&!this._near)return this.classList.add(`finding`),B`<div class="card card-pending" aria-busy="true"></div>`;let e=new Set(We(this.group));for(let t of $a)this.classList.toggle(t,e.has(t));return B`<div class="card">${Ke(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&&(En(e,n),e.dataset.revealedTo=String(Math.round(e.scrollTop)))}}connectedCallback(){if(super.connectedCallback(),nr(this.renderRoot),this.lazy){this._watched=this.closest(`.flat-group`)??this,it(this._watched,e=>this._onNear(e));return}this.hasUpdated&&this.requestUpdate()}disconnectedCallback(){this._watched&&=(at(this._watched),null),super.disconnectedCallback()}_onNear(e){e?(this._watched&&=(at(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 H{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=()=>V,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 B`<div class="kanban-rail-spacer" aria-hidden="true"></div>${ur(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 H{static properties={selected:{type:String},disabled:{type:Boolean}};static styles=z(co);constructor(){super(),this.selected=null,this.disabled=!1}render(){return B`${lo.map(e=>B`<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 A{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=M.filterConfMin,t=M.filterConfMax,n=this.revalidateOptions??[],r=this.rangeDisabled,i=n.length>0&&!!M.filterRevalidate,a=r?`No confidence range: some findings on screen carry no confidence score`:V;return B`<span class="${I({"conf-range-label":!0,replaced:i,disabled:r})}" data-tooltip="${a}">Confidence</span> <span class="${I({"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?B`<revalidate-filter class="${I({replaces:i})}" .options="${n}" ?has-partial="${this.hasPartial}"></revalidate-filter>`:V}`}};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=B`<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:Fe,code:Re,issues:B`<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:B`<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 A{static properties={modes:{attribute:!1}};createRenderRoot(){return this}constructor(){super(),this.modes=[]}render(){let e=M.bundleCodeSearchQuery,t=M.bundleCodeSearchMode,n=this.modes.includes(t)?t:`files`,r=po[n]??po.files;return B`${ho} <input type="text" class="bundle-code-search-input" placeholder="${r}" aria-label="${r}" .value="${P(e)}" @input="${this._onInput}"> ${e?B`<button type="button" class="bundle-code-search-clear" aria-label="Clear search" @click="${this._onClear}">×</button>`:V} ${this.modes.length>0?B`<span class="bundle-code-search-modes" role="tablist">${this.modes.map(e=>B`<button type="button" class="${I({"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]??V}</button>`)}</span>`:V}`}_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=B`<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 A{createRenderRoot(){return this}render(){let e=M.bundleSearchQuery,t=M.bundleSearchRegex,n=M.bundleSearchCase,r=t?`Search by regular expression…`:`Search all source…`;return B`${yo} <input type="text" class="bundle-search-input" placeholder="${r}" aria-label="${r}" spellcheck="false" autocapitalize="off" autocomplete="off" .value="${P(e)}" @input="${this._onInput}"> ${e?B`<button type="button" class="bundle-search-clear" aria-label="Clear search" @click="${this._onClear}">×</button>`:V} <span class="bundle-search-mods"><button type="button" class="${I({"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="${I({"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 A{static properties={kind:{type:String}};createRenderRoot(){return this}constructor(){super(),this.kind=``}render(){let e=xo(`entity-search`,So,this.kind);return e?B`<input type="search" class="packages-search" placeholder="${`${e.label}\u2026`}" aria-label="${e.label}" .value="${P(M[e.stateKey])}" @input="${this._onInput}">`:V}_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 A{static properties={kind:{type:String}};createRenderRoot(){return this}constructor(){super(),this.kind=``}render(){let e=xo(`entity-sort`,To,this.kind);return e?B`<select class="packages-sort" aria-label="${e.aria}" .value="${P(M[e.stateKey])}" @change="${this._onChange}">${wo.map(([t,n])=>B`<option value="${t}" ?selected="${M[e.stateKey]===t}">${n}</option>`)}</select>`:V}_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 A{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)=>B`<option value="${e}" ?selected="${M.sortBy===e}">${t}</option>`;return B`<select class="sort-select" aria-label="Sort findings" .value="${P(M.sortBy)}" @change="${this._onChange}">${e(`severity`,`Severity ↓`)} ${this.showFile?e(`file`,`File ↑`):V} ${this.showConfidence?B`${e(`confidence-desc`,`Confidence ↓`)}${e(`confidence-asc`,`Confidence ↑`)}`:V} ${this.showPriority?B`${e(`priority-desc`,`Priority ↓`)}${e(`priority-asc`,`Priority ↑`)}`:V}</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
+ `,ko=class extends H{static properties={min:{type:Number},max:{type:Number},step:{type:Number},low:{type:Number},high:{type:Number}};static styles=z(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 B`<div class="track-wrap" style="${lr({"--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 H{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 B`<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=B`<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=B`<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 H{static properties={url:{type:String},editable:{type:Boolean,reflect:!0},editing:{type:Boolean,reflect:!0},_copied:{state:!0}};static styles=z(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?qn(this.url):`Set repo`;return B`<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="${P(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?qn(this.url):`Set repo`,n=e?this._copied?`chip copied`:`chip`:`chip empty`;return B`<span class="${n}" @click="${e?null:this._onEdit}">${Mo} ${e?this._slugLabel(t):B`<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 B`<span class="${e}">${Mo} ${this._slugLabel(qn(this.url))}</span>`}return V}_slugLabel(e){return B`<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=qn(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=B`<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=B`<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=B`<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=br(wr.replace(`width="14" height="14"`,`width="12" height="12"`)),zo=B`<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=B`<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=B`<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 A{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(),X(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`?!M.currentWorkspace&&(this.hasDuplicates||M[e.stateKey]):this[e.hasKey]||M[e.stateKey]);return e.length===0?V:B`${e.map(e=>{let t=M[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 B`<button type="button" class="${I({"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 A{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(),X(this,{role:`group`,"aria-label":`Filter by severity`})}render(){let e=this.kind===`graph`?new Set(this.selected):M.filterSeverities,t=Go.filter(([t])=>(this.counts[t]??0)||e.has(t));return t.length===0?V:B`${t.map(([t,n])=>{let r=this.counts[t]??0,i=e.has(t);return B`<button type="button" class="${I({"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`,V]],Jo=class extends A{createRenderRoot(){return this}connectedCallback(){super.connectedCallback(),X(this,{role:`group`,"aria-label":`Severity display mode`})}render(){let e=M.severityMode;return B`<span class="severity-mode-label">Severity</span><span class="severity-mode-chips">${qo.map(([t,n,r])=>{let i=e===t;return B`<button type="button" class="${I({"severity-mode-chip":!0,active:i})}" aria-pressed="${String(i)}" data-tooltip="${r}" @click="${()=>this._select(t)}">${n}</button>`})}</span>`}_select(e){e!==M.severityMode&&this.dispatchEvent(new CustomEvent(`severity-mode-change`,{detail:{mode:e},bubbles:!0,composed:!0}))}};customElements.define(`severity-mode-switch`,Jo);var Yo=B`<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=B`<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 A{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(),X(this,{role:`group`,"aria-label":`Revalidation layer`})}render(){let e=M.revalidateConflicts.size,t=e>0?B`<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>`:V,n=M.showRevalidation!==!1,r=n&&M.revalidationDetailed===!0,i=M.upstreamOnly===!0,a=i&&!this.upstreamDisabled;return B`${t}${e===0&&this.canDrop?B`<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>`:V}${e===0&&this.canDrop&&this.canDetail?B`<button type="button" class="${I({"revalidation-detail":!0,on:r})}" aria-pressed="${String(r)}" aria-label="${Xo}" data-tooltip="${Xo}" ?disabled="${!n||i}" @click="${this._toggleDetail}">${Yo}</button>`:V}${this.canUpstream?B`<button type="button" class="${I({"revalidation-upstream":!0,on:a})}" aria-pressed="${String(a)}" aria-label="${Qo}" data-tooltip="${Qo}" ?disabled="${this.upstreamDisabled}" @click="${this._toggleUpstream}">${Zo}</button>`:V}`}_toggle=()=>{this.dispatchEvent(new CustomEvent(`revalidation-change`,{detail:{on:M.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:M.revalidationDetailed!==!0},bubbles:!0,composed:!0}))};_toggleUpstream=()=>{this.upstreamDisabled||this.dispatchEvent(new CustomEvent(`upstream-only-change`,{detail:{on:M.upstreamOnly!==!0},bubbles:!0,composed:!0}))}};customElements.define(`revalidation-switch`,$o);var es=B`<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 A{createRenderRoot(){return this}render(){let e=M.currentView===`bundles`&&M.selectedBundle,t=!M.currentFile&&!e;return B`<button type="button" class="danger" ?disabled="${t}">${es}<span>Delete current</span></button>`}};customElements.define(`sidebar-delete-current`,ts);var ns=B`<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=B`<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 A{static properties={kind:{type:String},count:{type:Number}};createRenderRoot(){return this}constructor(){super(),this.kind=``,this.count=0}render(){if(this.count===0)return V;let e=xo(`sidebar-view-button`,is,this.kind);if(!e)return V;let t=M.currentView===e.view;return B`<button type="button" class="${I({"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 A{static properties={counts:{attribute:!1},kind:{type:String}};createRenderRoot(){return this}constructor(){super(),this.counts={},this.kind=``}connectedCallback(){super.connectedCallback(),X(this,{role:`group`,"aria-label":`Triage view`})}render(){let e=xo(`slide-triage-tabs`,ss,this.kind);if(!e)return V;let t=M[e.stateKey],n=os.filter(e=>(this.counts[e]??0)>0||t===e);return n.length===0?V:B`${n.map(e=>{let n=t===e,r=this.counts[e]??0;return B`<button type="button" class="${I({"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 A{createRenderRoot(){return this}connectedCallback(){super.connectedCallback(),X(this,{role:`group`,"aria-label":`Source filter`})}render(){return B`${ls.map(([e,t])=>{let n=M.filterSources.has(e);return B`<button type="button" class="${I({"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=B`<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=B`<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 A{static properties={kind:{type:String}};createRenderRoot(){return this}constructor(){super(),this.kind=``}render(){let e=xo(`toolbar-search`,ps,this.kind);if(!e)return V;let t=M[e.stateKey];return B`${ds} <input type="text" aria-label="${e.placeholder}" placeholder="${e.placeholder}" .value="${P(t)}" @input="${this._onInput}"> ${this.kind===`findings`&&t?this._negateToggle():V}`}_negateToggle(){let e=M.filterIncludeNegate;return B`<button type="button" class="${I({"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 A{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)`:qn(e),special:e==null}))];return B`<repository-selector variant="filter" label="Filter by repository" .options="${e}" .value="${M.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 A{static properties={options:{attribute:!1},hasPartial:{type:Boolean,attribute:`has-partial`}};createRenderRoot(){return this}constructor(){super(),this.options=[],this.hasPartial=!1}render(){return B`<select class="sort-select" aria-label="Filter by revalidation outcome" .value="${P(M.filterRevalidate)}" @change="${this._onChange}"><option value="" hidden ?selected="${M.filterRevalidate===``}"></option><option value="">Confidence</option>${this.options.map(e=>B`<option value="${e.value}" ?selected="${M.filterRevalidate===e.value}">${e.label}</option>`)}</select> ${this.hasPartial&&M.filterRevalidate===`confirmed`?this._partialChip():V}`}_partialChip(){let e=gs[M.filterPartial]??gs[``];return B`<button type="button" class="${I({"partial-cycle":!0,[e.cls]:!0})}" data-tooltip="${e.title}" @click="${this._onPartial}">${e.label}</button>`}_onPartial=()=>{let e=rr.indexOf(M.filterPartial),t=rr[(e+1)%rr.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 A{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(),X(this,{role:`group`,"aria-label":`Filter by mark color`})}render(){let e=this.kind===`graph`?new Set(this.selected):M.filterColors;return vs.some(([t])=>(this.counts[t]??0)||e.has(t))?B`${vs.map(([t,n,r])=>{let i=this.counts[t]??0,a=e.has(t);return B`<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>`})}`:V}_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 A{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(),X(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&&!M.shownTriage;return this.classList.toggle(`is-empty`,r),r?V:B`${e.map(e=>{let t=this.counts[e]??0,n=M.shownTriage===e;if(t===0&&!n)return V;let r=Cs(e);return B`<button type="button" class="${I({"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:B`<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:B`<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:B`<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:B`<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:B`<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:B`${br(Cr)}`},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 A{static properties={modes:{type:String},kind:{type:String}};createRenderRoot(){return this}constructor(){super(),this.modes=Ds.join(`,`),this.kind=`findings`}connectedCallback(){super.connectedCallback(),X(this,{role:`group`,"aria-label":`View mode`})}render(){let e=this.kind===`files`?M.filesViewMode:M.viewMode,t=this.modes.split(`,`).map(e=>e.trim()).filter(e=>Ds.includes(e)),n=t.length>0?t:Ds;return B`${n.map(t=>B`<button type="button" class="${I({"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 H{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 Ue({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,en(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)=>Ge({[e]:t},n,r)))}_unlink(e){return this._change((t,n)=>qe(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 B`<span class="${`managed-profile-avatar${r?` is-large`:``}`}" aria-hidden="true"><span>${(n[0]??`?`).toUpperCase()}</span> ${d()?V:B`<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 B`<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="${P(a.nameAccount===e)}" ?disabled="${s}" aria-label="${`Use @${n}'s name`}" @change="${()=>this._choose(`name`,e)}"> ${r?B`<span>${r}</span>`:B`<span class="managed-profile-muted">No name</span>`}</label></td><td><label class="managed-profile-choice"><input type="radio" name="managed-profile-avatar" .checked="${P(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?V:B`<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 B`<section class="managed-profile"><header class="managed-profile-card">${this._avatar(this.session?.id??``,{initial:n,large:!0})}<div><h1>${r||`@${n}`}</h1>${r?B`<p class="managed-profile-muted">@${n}</p>`:V}</div></header>${i?B`<p class="managed-profile-error" role="alert">${i}</p>`:V} ${this._error?B`<p class="managed-profile-error" role="alert">${this._error}</p>`:V}<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?B`<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>`:V} ${this._readOnly?B`<p class="managed-profile-muted">${this.session?.viewer?`Viewing as another user is read only.`:`The preview changes nothing.`}</p>`:B`<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 A{createRenderRoot(){return this}render(){return M.reports.length>0&&M.currentView===`findings`&&M.viewMode!==`graph`&&M.viewMode!==`kanban`?B`<button type="button" class="toolbar-export-btn" aria-label="Download or print report" @click="${this._onClick}">${t}</button>`:V}_onClick=()=>{this.dispatchEvent(new CustomEvent(`download-requested`,{bubbles:!0,composed:!0}))}};customElements.define(`download-button`,Ns);var Ps=class extends A{static styles=Er`.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(),nr(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&&(tr(),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=B`<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=B`<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:B`<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:B`<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,Er`: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=Ut(()=>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(!_r(this.url))return B`${this.url}`;let e=Ot(this.url),t=!e&&Nt(this.url),n=e||t,r=Lt.read(this.url);if(!r&&!n){let e=`Open fix link: ${this.url}`;return B`<a class="${this.compact?`fix-link`:``}" href="${this.url}" target="_blank" rel="noopener noreferrer" draggable="false" data-tooltip="${this.compact?e:V}" aria-label="${e}">${this.compact?B`<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 B`<a class="fix-link" href="${this.url}" target="_blank" rel="noopener noreferrer" draggable="false" aria-label="${c}" aria-details="${this.compact&&n?`fix-preview`:V}" data-tooltip="${this.compact&&!n?c:V}" @mouseenter="${this._schedulePreview}" @mouseleave="${this._leavePreview}" @focus="${this._schedulePreview}" @blur="${this._leavePreview}" @click="${this._hidePreview}">${this.compact?a?B`<span class="${`status ${i}`}">${a}</span>`:B`<slot></slot>`:B`${a?B`<span class="${`link-icon ${i}`}">${a}</span>`:V} <span class="link-title">${r?.title??(o||this.url)}</span> ${r?B`<span class="ref">${o}</span><span class="${`link-status ${i}`}">${Fs[i]}</span>`:V}`} </a>${this.compact&&n?B`<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">${br(Tr)}<span>${o}</span></span> <span class="${`status ${i}`}">${a}${r?Fs[i]:e?`Pull request`:`Issue`}</span></div>${r?B`<div class="preview-title">${r.title}</div>`:V} ${r?.description?B`<div class="preview-description">${r.description}</div>`:V}</a>`:V}`}};customElements.define(`managed-fix-link`,zs);var Bs=class extends Ps{static properties={finding:{attribute:!1},comment:{type:String}};static styles=[Ps.styles,z(a),Er`: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?ae(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=N(),t=e?v(this.finding):[];if(!(e?t.length>0:this.comment))return V;let n=(e?t.map(e=>e.body):[this.comment]).some(e=>e.split(/[\r\n]/u).some(e=>e.length>100));return B`<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=>be(e,Ce(e.body))):B`<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 M.triage)r[e]&&t.set(n,r[e]);return t}window.DeepView={get reports(){return M.reports.slice()},get groups(){return qt()},get findings(){return qt().flat()},get currentFile(){return M.currentFile},get currentWorkspace(){return M.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=M.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(tt())throw Error(`DeepView.triage.set: triage is read-only on this page`);let o=!1;if(t!==void 0&&(t===null||t===``?F(M.triage,e,{color:void 0})&&(o=!0):M.triage.get(e)?.color!==t&&(F(M.triage,e,{color:t}),o=!0)),n!==void 0){if(n===null||n===``||n===!1)F(M.triage,e,{triage:void 0})&&(o=!0);else if(n===`inprogress`||n===`fixed`||n===`invalid`||n===`deleted`||n===`ignored`)M.triage.get(e)?.triage!==n&&(F(M.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?M.triage.get(e)?.comment!==t&&(F(M.triage,e,{comment:t}),o=!0):F(M.triage,e,{comment:void 0})&&(o=!0)}if(i!==void 0){let t=i?String(i):``;t?M.triage.get(e)?.fix!==t&&(F(M.triage,e,{fix:t}),o=!0):F(M.triage,e,{fix:void 0})&&(o=!0)}if(a!==void 0){let t=a===null||a===``?void 0:!!a;M.triage.get(e)?.flagged!==t&&(F(M.triage,e,{flagged:t}),o=!0)}return o&&(await b(),O()),o}},forceManagedMode:Jt,setTheme:Ba,get theme(){return Va()},triageSync:de,refresh(){O()},export(){return Mn()},compareReports(){return An()}};var Hs={default:w.default,"claude-security":w[`claude-security`],"codex-security":w[`codex-security`],deepsec:w.deepsec,piolium:w.piolium,"markdown-generic":w[`markdown-generic`],bundle:xr,workspace:Sr,links:wr,github:Tr};for(let e of document.querySelectorAll(`.drop-supported-icon[data-icon]`)){let t=Hs[e.dataset.icon];t&&(e.innerHTML=$n(t))}Tn(O),Me(O),Sn(O),de.onStatusChange(O),mn(async(e,t)=>{M.currentWorkspace===e?await yn(e):M.currentFile&&M.currentFile===t?await ln(t):await D()}),_n(async()=>{await D(),M.currentView===`bundles`&&O()}),kr(),Mr();async function Us(){let e=gt();if(!e)return!1;try{history.replaceState(null,``,location.pathname)}catch{}let t;try{t=await Nn({encoded:e})}catch(e){return alert(`Couldn't open the share-link unlock prompt: ${e.message}`),!1}if(!t)return!1;let n=await ye({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 yn(n.workspace.id):await D(),!0}async function Ws(){let e=cr();if(!e)return!1;try{history.replaceState(null,``,location.pathname)}catch{}let t=await It(e);return t.ok?!0:(alert(t.reason),!1)}var Gs=!1;async function Ks(){if(await Qt(),!Gs&&(N()||!C()||st())){Gs=!0;try{await qs()}finally{dt.hidden=!1,jt()}}}async function qs(){let e=he(),t=()=>e===he()&&!N();if(N()){await D();return}if(await Mt(),!t()||(fe(),await Promise.all([D(),Ae().catch(e=>console.warn(`initial linked findings:`,e))]),!t())||await Us()||!t()||await Ws()||!t())return;let n=Dt(on);if(n){if(n.startsWith(`wbs:`)||n.startsWith(`wrs:`))await fn(n.slice(4),n.startsWith(`wrs:`)?`reports`:`bundles`);else if(n.startsWith(`ws:`)){let e=n.slice(3);y().some(t=>t.id===e)&&await yn(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=dr.has(i)?i:`overview`;if((M.bundles??[]).some(e=>e.integrity===r)){let e=y().filter(e=>e.bundles.includes(r));pn(r,a,{workspaceId:e.length===1?e[0].id:null}),O(),wn(r),await D()}}else{let e=await xn();if(!t())return;let r=ze(n);r&&e.includes(r.name)&&await ln(r.name,void 0,{workspaceId:r.workspaceId})}}}var Js=!1,Ys=!1;document.addEventListener(`managed-client-mode-change`,()=>{Js=!N()&&C()});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()}))}ft(async()=>{if(await Qt(),N()){O();return}let e=Js,t=C();if(Js=t,O(),!Gs&&st()){Ks().catch(e=>console.warn(`continueBoot:`,e));return}if(Gs&&t&&!st()){Xs(`Encryption was just enabled in another tab.`);return}Gs&&e&&!t&&!rt()&&Xs(`Encryption was disabled in another tab.`)}),window.addEventListener(`hashchange`,()=>{!Gs||N()||(async()=>{await Us()||await Ws()})().catch(e=>console.warn(`deep-link hashchange:`,e))}),(async()=>{if(!await Hr()){await Qt(),Js=!N()&&C();try{let e=window.matchMedia?.(`(display-mode: window-controls-overlay)`),t=()=>{let t=!1;try{t=localStorage.getItem(`deepview.sidebarCollapsed`)===`1`}catch{}_t.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{}!N()&&C()&&!st()||await Ks()}})();