@preventive/triage 1.0.0-alpha.53 → 1.0.0-alpha.54

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 (109) hide show
  1. package/common/bundle-compare-diff.js +28 -9
  2. package/common/bundle-compare-inputs.d.ts +1 -0
  3. package/common/bundle-compare-inputs.js +91 -15
  4. package/common/bundle-comparison.js +14 -7
  5. package/common/default-scan-models.ts +3 -0
  6. package/common/dependency-reviews.d.ts +1 -1
  7. package/common/dependency-reviews.js +1 -1
  8. package/common/managed/finding-detail.d.ts +1 -1
  9. package/common/managed/finding-detail.js +7 -7
  10. package/common/managed/team-app.d.ts +7 -0
  11. package/common/managed/team-app.js +31 -7
  12. package/common/workspace-app.js +19 -7
  13. package/out/activity.js +4 -4
  14. package/out/chunk-4EMM6UCD.js +1 -0
  15. package/out/chunk-4ISO5F7Y.js +7 -0
  16. package/out/chunk-4XIH7YTX.js +1 -0
  17. package/out/chunk-6W5BMATD.js +1 -0
  18. package/out/{chunk-WFYLMF6Z.js → chunk-74AEKRES.js} +1 -1
  19. package/out/chunk-DEVAORP2.js +1 -0
  20. package/out/{chunk-KOGNQDSJ.js → chunk-DTM47KGS.js} +1 -1
  21. package/out/chunk-E3LFSUDJ.js +9 -0
  22. package/out/chunk-FHIVVVUA.js +6 -0
  23. package/out/chunk-G3LY2FV4.js +1 -0
  24. package/out/chunk-HAZKDK4M.js +4 -0
  25. package/out/chunk-HOB3YPS5.js +1 -0
  26. package/out/chunk-I47TYPXO.js +52 -0
  27. package/out/chunk-J7A5OSZE.js +244 -0
  28. package/out/chunk-JFL7WLRV.js +1 -0
  29. package/out/chunk-JMG5DXII.js +2 -0
  30. package/out/chunk-JOXLZXMI.js +1 -0
  31. package/out/chunk-L4CTEMRG.js +2 -0
  32. package/out/chunk-M37X4LCF.js +14 -0
  33. package/out/chunk-M3Y6SLC4.js +1 -0
  34. package/out/chunk-NXATZJQ2.js +1 -0
  35. package/out/{chunk-MYGJBYYJ.js → chunk-ORIP5INC.js} +1 -1
  36. package/out/chunk-PAD2JHZT.js +1 -0
  37. package/out/chunk-QMVOEBWC.js +13 -0
  38. package/out/{chunk-SXV2T5C4.js → chunk-QRKFPLA4.js} +1 -1
  39. package/out/chunk-RRBIJL2B.js +1 -0
  40. package/out/{chunk-GDPCLSOS.js → chunk-SYXT3SFP.js} +1 -1
  41. package/out/chunk-TOXMUOIW.js +5 -0
  42. package/out/chunk-UBOCLLF2.js +1 -0
  43. package/out/chunk-UCP3JRE2.js +1 -0
  44. package/out/{chunk-JEFZTVNX.js → chunk-VC72ZO3P.js} +1 -1
  45. package/out/chunk-VRX2APNA.js +9 -0
  46. package/out/{chunk-NE2UGKRJ.js → chunk-VZMELPVL.js} +4 -3
  47. package/out/{chunk-YA4ETCFU.js → chunk-WHVXTJHK.js} +1 -1
  48. package/out/chunk-WMFDQS2L.js +11 -0
  49. package/out/chunk-WNSVBOSO.js +41 -0
  50. package/out/chunk-WREU7JAG.js +1 -0
  51. package/out/chunk-Y5ZHFNBD.js +2 -0
  52. package/out/chunk-YF4M5OCI.js +1 -0
  53. package/out/chunk-Z667U2UJ.js +1 -0
  54. package/out/chunk-ZQHLECTI.js +1 -0
  55. package/out/client-managed-import.js +1 -1
  56. package/out/client-managed.js +27 -26
  57. package/out/compare.js +14 -14
  58. package/out/dialogs.js +36 -51
  59. package/out/graph.js +17 -15
  60. package/out/index.html +26 -10
  61. package/out/prism.js +1 -1
  62. package/out/scan.js +2 -2
  63. package/out/terminal.js +232 -232
  64. package/out/view.css +1 -1
  65. package/out/view.js +15 -15
  66. package/package.json +11 -7
  67. package/risk/actions/resolve.js +36 -5
  68. package/risk/index.d.ts +20 -2
  69. package/risk/npm/malware.js +6 -4
  70. package/risk/npm/registry.js +8 -6
  71. package/server-managed/bundle-advisories.ts +56 -74
  72. package/server-managed/bundle-build-worker.js +61 -4
  73. package/server-managed/bundle-build.ts +13 -4
  74. package/server-managed/bundle-dependency-reviews.ts +74 -0
  75. package/server-managed/bundle-validation.ts +32 -0
  76. package/server-managed/db-methods.ts +51 -16
  77. package/server-managed/db-neon.ts +18 -2
  78. package/server-managed/db.ts +11 -2
  79. package/server-managed/github-issue-links.ts +151 -47
  80. package/server-managed/github-pulls.ts +34 -15
  81. package/server-managed/http.ts +227 -12
  82. package/server-managed/index.ts +13 -1
  83. package/server-managed/managed-issues.ts +29 -15
  84. package/server-managed/npm-insights.ts +4 -3
  85. package/server-managed/npm-kept.ts +4 -0
  86. package/server-managed/package-entry-points.ts +37 -9
  87. package/server-managed/pretty-print.ts +7 -5
  88. package/server-managed/public-workspace.ts +2 -2
  89. package/server-managed/repository-actions.ts +7 -4
  90. package/server-managed/repository-browser.ts +11 -4
  91. package/server-managed/repository-risk-audit.ts +4 -5
  92. package/server-managed/repository-risk.ts +4 -4
  93. package/server-managed/sql.ts +2 -1
  94. package/server-managed/stasis-config.ts +46 -0
  95. package/server-managed/team-app-summaries.ts +54 -0
  96. package/server-managed/team-app.ts +52 -31
  97. package/server-managed/team-reports.ts +27 -7
  98. package/server-managed/upstream-cache.ts +41 -32
  99. package/server-managed/workspace-shares.ts +3 -1
  100. package/out/chunk-2ZDZWLFY.js +0 -1
  101. package/out/chunk-7VAWINQF.js +0 -6
  102. package/out/chunk-FMXWXDR4.js +0 -36
  103. package/out/chunk-IZ7POWI3.js +0 -18
  104. package/out/chunk-LJ7XRXFU.js +0 -52
  105. package/out/chunk-QB4CBOX2.js +0 -1
  106. package/out/chunk-TQJDYHVE.js +0 -2
  107. package/out/chunk-TSIFIFBX.js +0 -232
  108. package/out/chunk-VH4XMZIW.js +0 -2
  109. package/out/chunk-WYLQWYLA.js +0 -1
package/out/view.js CHANGED
@@ -1,19 +1,19 @@
1
- import"./chunk-R3NZFXVR.js";import{a as e,b as t,e as n,f as r,g as i,i as a}from"./chunk-NE2UGKRJ.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-TSIFIFBX.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?
1
+ import"./chunk-R3NZFXVR.js";import{a as e,b as t,c as n,f as r,g as i,h as a,j as o}from"./chunk-VZMELPVL.js";import{$b as s,$c as c,Ab as l,Ac as u,Ae as d,Af as f,Ba as p,Bb as m,Bc as h,Be as g,Bf as _,C as v,Cc as ee,Ce as te,Cf as ne,D as re,Dc as ie,De as ae,Df as oe,Ec as se,Ef as ce,Fc as le,Fe as ue,G as y,Gd as de,Ge as fe,H as pe,Hd as me,He as he,I as ge,Ib as _e,Id as ve,Jd as ye,K as be,Kb as xe,Kd as Se,L as b,Mb as Ce,N as we,Ob as Te,P as Ee,Pb as De,Pd as Oe,Q as ke,Qb as Ae,Qc as je,Qd as Me,Qe as Ne,R as Pe,Rb as Fe,Rc as Ie,Re as Le,S as Re,Sb as ze,T as x,Tb as Be,Ua as Ve,Ub as He,V as Ue,Va as We,Vb as Ge,Wa as Ke,Wc as qe,Xa as Je,Xb as S,Xc as Ye,Ya as Xe,Yb as Ze,Yc as Qe,Zb as $e,Zc as et,_b as tt,_c as nt,ac as rt,ad as it,bc as at,bd as ot,c as st,cb as ct,cc as C,d as w,db as lt,dc as ut,dd as dt,e as ft,eb as pt,ec as mt,ed as ht,f as gt,fc as _t,fd as vt,gb as yt,gc as T,h as bt,hb as E,hc as xt,i as St,ia as Ct,ib as wt,ic as Tt,ja as Et,jb as Dt,jc as Ot,k as kt,ka as At,kc as jt,l as Mt,la as Nt,lb as Pt,lc as Ft,m as It,ma as Lt,mb as Rt,mc as zt,me as Bt,na as Vt,nc as Ht,ne as Ut,o as Wt,oa as Gt,oc as Kt,oe as qt,p as Jt,pc as Yt,pf as Xt,q as Zt,qc as Qt,qe as $t,qf as en,r as tn,ra as nn,rc as rn,re as an,rf as on,s as sn,sc as D,sd as cn,se as ln,sf as un,t as dn,tc as O,te as k,tf as fn,ue as pn,uf as mn,v as hn,vb as gn,ve as _n,vf as A,w as j,wb as vn,we as yn,wf as bn,x as M,xb as xn,xc as Sn,xe as Cn,xf as wn,y as Tn,yb as En,yc as Dn,ye as N,zb as On,zc as kn,ze as An}from"./chunk-J7A5OSZE.js";import"./chunk-JCIIBLKR.js";import"./chunk-E3LFSUDJ.js";import"./chunk-JMG5DXII.js";import{d as jn}from"./chunk-DTM47KGS.js";import{D as Mn,L as Nn,N as Pn,T as Fn,Y as In,_ as P,b as Ln,ba as Rn,ea as zn,n as Bn,t as Vn,u as Hn,v as Un,x as Wn,y as Gn}from"./chunk-I47TYPXO.js";import{g as Kn,h as qn}from"./chunk-FHIVVVUA.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{D as Jn,E as Yn,L as Xn,M as Zn,O as Qn,X as $n,_ as er,a as I,c as tr,ca as nr,da as rr,e as L,f as R,g as ir,ja as ar,k as or,la as sr,na as cr,s as lr,v as ur}from"./chunk-WNSVBOSO.js";import{g as dr}from"./chunk-2K6UN3PC.js";import"./chunk-WCPJDAYA.js";import"./chunk-IYPY47MC.js";import{a as fr,d as pr}from"./chunk-PWFUOLZK.js";import{a as mr,i as hr,j as gr,p as _r,r as vr,t as yr}from"./chunk-HT2SSA3V.js";import{B as br,I as xr,l as Sr}from"./chunk-QRKFPLA4.js";import{d as Cr,i as wr,k as Tr,l as Er,r as Dr,x as Or}from"./chunk-74AEKRES.js";import"./chunk-C4Z6ZBXV.js";import{a as z,b as kr,c as B,g as V,i as Ar,j as H}from"./chunk-2XUEZHIP.js";import"./chunk-TUII34K2.js";import"./chunk-OOJM4CTU.js";var jr={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 Mr(){m(async(e,t,n)=>{let r=Ee(e);try{return await gn(e,r,jr[n]??jr.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 Nr=class extends Pt{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`,Nr);function Pr({retry:e=!1}={}){return Rt(`sync-auth-dialog`,{retry:!!e})}function Fr(){l(async({retry:e})=>{try{return await Pr({retry:e})}catch(e){return console.warn(`Sync auth dialog failed to open:`,e),null}})}var Ir=`https://triage.space/`,Lr=[{hostname:`deepaudit.dev`,pathPrefix:`/`,supportsSync:!0},{hostname:`chalker.github.io`,pathPrefix:`/deepview/`,supportsSync:!1}];function Rr(){for(let e of Lr)if(location.hostname===e.hostname&&location.pathname.startsWith(e.pathPrefix))return e;return null}var zr=[`deepview.triage`,`deepview.triage.pending`],Br=`deepview.repoUrls`;function Vr(){try{for(let e of zr)if(localStorage.getItem(e))return!0}catch{return!0}try{let e=localStorage.getItem(Br);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 Hr(){if(Vr())return!0;let e=[];try{e=await Tn()}catch{return!0}if(e.length>0)return!0;try{if(b().length>0)return!0}catch{return!0}try{return await v()}catch{return!0}}var Ur=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="${Ir}" target="_blank" rel="noopener noreferrer">${Ir}</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`,Ur);function Wr(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 Gr(){let e=Rr();return e?await Hr()?await Wr(e)?(location.assign(Ir),!0):!1:(location.replace(Ir),!0):!1}var U=null,Kr=!1,qr=null;function Jr(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 Yr(){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`),Ar(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(!Kr&&Xr()){Kr=!0,t.hidden=!0,t.textContent=``,e.disabled=!0,e.textContent=`Waiting…`,qr=new AbortController;try{await St({signal:qr.signal})}catch(e){let n=Jr(e);t.textContent=n,t.hidden=!n}finally{Kr=!1,qr=null,e.disabled=!1,e.textContent=`Unlock with passkey`}}}),U.querySelector(`.lock-overlay-wipe`).addEventListener(`click`,async e=>{if(e.preventDefault(),!Kr&&Xr()&&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 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:
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 kt()}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 Xr(){return M()||!gt()?!1:w()&&!ft()}async function Zr(){if(await _n(),Xr()){let e=Yr();e.hidden=!1;let t=e.querySelector(`button`);t&&t.focus()}else if(U&&(U.hidden=!0,qr))try{qr.abort()}catch{}}bt(Zr),document.addEventListener(`managed-client-mode-change`,Zr),Zr();var Qr=2;function $r(e,t){j.focusSplit=t,e.closest(`.focus-main`)?.style.setProperty(`--focus-split`,String(t)),e.setAttribute(`aria-valuenow`,String(Math.round(t)))}function ei(){try{localStorage.setItem(Jt,String(j.focusSplit))}catch{}}function ti(e,t){$r(e,dn(t)),ei()}function ni(e,t){ti(e,j.focusSplit+t)}function ri(e){ti(e,sn)}function ii(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&&$r(e,dn((t.clientX-r.left)/r.width*100))},i=()=>{e.removeEventListener(`pointermove`,r),e.removeEventListener(`pointerup`,i),e.removeEventListener(`pointercancel`,i),e.classList.remove(`dragging`),ei()};e.addEventListener(`pointermove`,r),e.addEventListener(`pointerup`,i),e.addEventListener(`pointercancel`,i)}function ai(e,t){return Ge(He(e)).map(e=>t?[T(e)]:_t(e))}var oi={annotation(e){let t=ut(e),n=mt(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=>Qn(e,xt(e)),evidence:(e,t,n)=>er(e,t,xt(t),n),commit:e=>nr(e.repo?.github,e.commitHash),report:e=>e._reportName??null};function si(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&&!Yn(t.file)&&i.add(t.repo.github);return i.size===1?[...i][0]:i.size===0&&!j.currentWorkspace&&j.repoUrl?j.repoUrl:null}function ci(e){return e.replace(/\.(?:json|md|codex)$/iu,``)}function li(){return j.currentWorkspace?b().find(e=>e.id===j.currentWorkspace)??null:null}function ui(e,t){if(t)return t.name;let n=e.map(e=>e.fileName);return n.length===1?ci(n[0]):Xn(n).replace(/[-_. ]+$/u,``)||`${n.length} reports`}function di({oneSamplePerGroup:e=!1}={}){let t=j.reports,n=Ae(),o=i(),c=ai(o,e),l=li(),u=t.flatMap(e=>e.groups??[]),d=u.some(e=>e.some(Sr)),f=u.some(e=>e.some(ur));return xr({title:ui(t,l),workspace:l?.name??null,reports:t.map(e=>({name:e.fileName,source:e.source})),repo:si(t,c),generatedAt:new Date,view:{bucket:a(),severityMode:d?j.severityMode:null,revalidation:f?j.showRevalidation:null,revalidationDetail:f&&j.showRevalidation!==!1?s():null},filters:r(n),counts:{included:c.length,total:o.length},groups:c},oi)}function fi(){let e=li(),t=j.reports.map(e=>e.fileName),n=``;return e?n=e.name:t.length===1?n=ci(t[0]):t.length>1&&(n=ci(Xn(t))),n=n.replaceAll(/[\\/:*?"<>|\p{Cc}]/gu,`-`).trim(),`${n||`deepview-report`}.md`}function pi(e){if(j.reports.length===0)return;let t=new Blob([di(e)],{type:`text/markdown;charset=utf-8`});Dt(t,fi())}function mi(e){return!M()||!Et.active||!j.currentManagedTeam?null:Et.navigate(yr({view:e,teamId:j.currentManagedTeam,reportId:j.currentManagedReport},j.managedTeams))}var hi=!1;y(()=>{if(hi)return;hi=!0;let e=2;function t(){--e===0&&_i()}requestAnimationFrame(t),setTimeout(t,350)});var gi=!1;function _i(){hi=!1;let e=pe();if(e&&(j.currentView===`findings`||j.currentView===`files`)){gi||(gi=!0,e.catch(()=>{}).finally(()=>{gi=!1,_i()}));return}j.findingIndexTick++,j.currentView===`bundles`&&j.selectedBundle||j.currentView===`packages`||j.currentView===`repositories`||j.currentView===`links`?A():(j.currentView===`findings`||j.currentView===`files`)&&(k().catch(()=>{}),A())}var vi=!1;ge(()=>{j.currentView!==`findings`&&j.currentView!==`files`&&!S()||vi||(vi=!0,queueMicrotask(()=>{vi=!1,(j.currentView===`findings`||j.currentView===`files`||S())&&(j.bundleHashTick++,A())}))}),ke(()=>{j.linksTick++,A()});function yi(){j.currentView===`bundles`&&j.bundleDetailsTab===`graph`?Xt():fn()}function bi(){j.currentView===`bundles`&&j.bundleDetailsTab===`graph`?en():mn()}function xi(){let e=document.querySelector(`.bundle-source-code-wrap`),t=e?.scrollTop??0,n=e?.scrollLeft??0;A();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;A();let n=document.querySelector(e);n&&(n.scrollTop=t)}function G(){j.viewMode===`table`?W(`.findings-table-list`):A()}var Si=0;function Ci(){Si||=requestAnimationFrame(()=>{Si=0,A()})}function K(e,t){for(let n of e.composedPath())if(n?.matches?.(t))return n;return null}function wi(e,t){queueMicrotask(()=>{let n=document.querySelector(`.bundle-source-lineno-row[data-line="${e}"]`);n&&n.scrollIntoView(t)})}function Ti(e){e.classList.add(`copied`),setTimeout(()=>e.classList.remove(`copied`),1e3)}function Ei(e,t){try{navigator.clipboard.writeText(t).then(()=>(Ti(e),null)).catch(()=>{})}catch{}}function Di(e){let t=me(j.bundleCodeHistory,j.bundleDetails?.integrity??null,j.bundleSourceFile);j.bundleCodeHistory=ve(t,e),j.bundleSourceFile=e}function Oi(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(!M()||Ln()||j.currentView!==`bundles`||j.bundleDetailsTab!==`code`)return;let e=vr(new URL(location.href));if(e?.bundleTab!==`code`||e.file==null||e.file!==ht(j)?.file)return;let t=j.bundleSourceFile,n=e.endLine??e.line;j.bundleSourceTargetLine=e.line&&n<=qn(Kn(j.bundleDetails).get(t)??``)?{bundle:j.bundleDetails?.integrity??null,path:t,line:e.line,...e.endLine?{end:e.endLine}:{}}:null,A(),j.bundleSourceTargetLine&&wi(e.line,{block:`center`})});function ki(e){let t=e.target.closest(`[data-bundle-source-line]`);if(t){let n=Number(t.dataset.bundleSourceLine),r=j.bundleDetails?.integrity??null,i=j.bundleSourceFile,a=j.bundleSourceTargetLine,o=a?.bundle===r&&a.path===i?a:null;if(e.shiftKey&&o){let e=o.anchor??o.line;j.bundleSourceTargetLine={bundle:r,path:i,line:Math.min(e,n),end:Math.max(e,n),anchor:e}}else o?.line===n&&!(o.end>n)?j.bundleSourceTargetLine=null:j.bundleSourceTargetLine={bundle:r,path:i,line:n};return xi(),!0}let n=e.target.closest(`[data-bundle-source-wrap]`);if(n){let e=cn(n);j.bundleSourceWrap=!j.bundleSourceWrap;try{localStorage.setItem(tn,String(j.bundleSourceWrap))}catch{}return A(),queueMicrotask(e),!0}if(e.target.closest(`[data-bundle-source-pretty]`))return de(),A(),Oi(),!0;if(e.target.closest(`[data-bundle-source-lockfile]`))return Se(),A(),!0;if(e.target.closest(`[data-dropped-lockfile-close]`))return ae(),!0;let r=e.target.closest(`[data-bundle-code-history]`);if(r){let e=me(j.bundleCodeHistory,j.bundleDetails?.integrity??null,j.bundleSourceFile),t=ye(e,r.dataset.bundleCodeHistory===`back`?-1:1),n=t.files[t.at];return t.at===e.at||!Kn(j.bundleDetails).has(n)||(j.bundleCodeHistory=t,j.bundleSourceFile=n,j.bundleSourceFindingIdx=null,j.bundleCodeSearchMode=`files`,j.bundleCodeSearchQuery=``,W(`.bundle-code-rail-body`),on(),Oi()),!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=Gi(e),i=ee(r,n.dataset.focusCodeIntegrity,n.dataset.focusCodeFile,t);return i&&(Ki(r,i),queueMicrotask(()=>n.querySelector(`.focus-code-source`)?.focus({preventScroll:!0}))),!0}return Kn(j.bundleDetails).has(t)&&(j.currentView===`bundles`&&j.bundleDetailsTab===`search`&&(_(`code`,{preserveSource:!0}),j.selectedBundle&&N(j.selectedBundle,`code`,{push:!0})),Di(t),j.bundleSourceFindingIdx=null,j.bundleDetailsTab===`code`&&(j.bundleCodeSearchMode=`files`,j.bundleCodeSearchQuery=``),W(`.bundle-code-rail-body`),on(),Oi(!0)),!0}if(e.target.classList?.contains(`bundle-source-overlay`)||e.target.closest(`[data-action="bundle-source-close"]`))return j.bundleSourceFile&&(_(j.bundleDetailsTab),A()),!0;if(e.target.closest(`[data-action="bundle-source-panel-close"]`))return j.bundleSourceFindingIdx!=null&&(j.bundleSourceFindingIdx=null,xi()),!0;let a=e.target.closest(`[data-bundle-source-finding]`);if(a){let e=parseInt(a.dataset.bundleSourceFinding,10);return Number.isFinite(e)&&(j.bundleSourceFindingIdx=j.bundleSourceFindingIdx===e?null:e,xi()),!0}return!1}function Ai(e){let t=Gi(e);if(!t)return null;let n=T(t);return rr(n,Tt(n))}E.addEventListener(`click`,e=>{if(K(e,`[data-finding-history]`)){let t=Gi(e),n=t&&T(t);At(n)&&We(n);return}let t=K(e,`[data-code-nav-file]`);if(t){Ki(Gi(e),{integrity:t.dataset.codeNavIntegrity,file:t.dataset.codeNavFile,range:$n(t.dataset.codeNavLine)});return}let n=K(e,`[data-code-history]`);if(n){Ji(n.dataset.codeHistory===`forward`?1:-1);return}let r=K(e,`[data-code-preview]`);if(r){let e=r.dataset.codePreview,t=new Set(j.codePreviews);t.delete(e)||t.add(e),j.codePreviews=t,A();return}let i=K(e,`[data-finding-code-report]`);if(i&&M()){Wn({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;j.bundleSourceFile=t||null,j.bundleCodeHistory=null,j.bundleSourceFindingIdx=null,(j.bundleDetailsTab===`code`||j.bundleDetailsTab===`search`)&&(j.bundleDetailsTab=`overview`);let i=()=>{Number.isFinite(r)&&wi(r,{block:`start`,behavior:`instant`})};if(j.selectedBundle===e&&j.bundleDetails?.integrity===e){A(),ce().then(()=>(j.selectedBundle===e&&j.bundleSourceFile===t&&i(),null));return}j.selectedBundle=e,j.selectedBundleWorkspace=null,j.bundleDetails=null,A(),(async()=>(await oe(e),i()))();return}let o=e.target.closest(`[data-package-expand]`);if(o){let e=o.dataset.packageExpand;j.expandedPackages.has(e)?j.expandedPackages.delete(e):j.expandedPackages.add(e),A();return}let s=e.target.closest(`[data-package-row-issues]`);if(s){let e=s.dataset.packageRowIssues,t=s.dataset.packageRowIssuesVersion;j.selectedPackage=e,j.selectedPackageVersion=t||null,j.packageDetailsTab=`issues`,j.packageSlideTriage=null,j.packageSlideTransient=!0,A();return}let c=e.target.closest(`[data-repository-row-issues]`);if(c){let e=c.dataset.repositoryRowIssues;j.selectedRepository=e,j.repositoryDetailsTab=`issues`,j.repositorySlideTriage=null,j.repositorySlideTransient=!0,A();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(j.selectedPackage===e&&j.selectedPackageVersion===n)return;j.selectedPackage=e,j.selectedPackageVersion=n,j.packageDetailsTab=`overview`,j.packageSlideTriage=null,j.packageSlideTransient=!1,A();return}if(e.target.closest(`[data-deselect-package]`)){j.selectedPackage=null,j.selectedPackageVersion=null,A();return}let u=e.target.closest(`[data-package-tab]`);if(u){let e=u.dataset.packageTab;(e===`overview`||e===`issues`)&&j.packageDetailsTab!==e&&(j.packageDetailsTab=e,A());return}if(e.target.closest(`[data-action="package-slide-back"]`)){j.packageDetailsTab=`overview`,j.packageSlideTriage=null,j.packageSlideTransient&&(j.selectedPackage=null,j.selectedPackageVersion=null,j.packageSlideTransient=!1),A();return}let p=K(e,`[data-links-report][data-links-finding]`);if(p){e.preventDefault();let{linksReport:t,linksFinding:n,managedReport:r}=p.dataset;t&&n&&(async()=>{let e=await ln(n,t,r);e.ok||alert(e.reason)})().catch(e=>console.warn(`links: reveal in report failed:`,e));return}let m=e.target.closest(`[data-package-report]`);if(m){let e=m.dataset.packageReport;e&&An(e);return}let h=e.target.closest(`[data-select-repository]`);if(h){let e=h.dataset.selectRepository;if(j.selectedRepository===e)return;j.selectedRepository=e,j.repositoryDetailsTab=`overview`,j.repositorySlideTriage=null,j.repositorySlideTransient=!1,A();return}if(e.target.closest(`[data-deselect-repository]`)){j.selectedRepository=null,A();return}let v=e.target.closest(`[data-repository-tab]`);if(v){let e=v.dataset.repositoryTab;(e===`overview`||e===`issues`)&&j.repositoryDetailsTab!==e&&(j.repositoryDetailsTab=e,A());return}if(e.target.closest(`[data-action="repository-slide-back"]`)){j.repositoryDetailsTab=`overview`,j.repositorySlideTriage=null,j.repositorySlideTransient&&(j.selectedRepository=null,j.repositorySlideTransient=!1),A();return}let ee=e.target.closest(`[data-bundle-tab]`);if(ee){let e=ee.dataset.bundleTab;if(mr.has(e)||e===`review`&&j.bundleDetails?.npm||_r.has(e)&&j.bundleDetails?.repository){if(e===j.bundleDetailsTab){j.selectedBundle&&N(j.selectedBundle,e);return}j.bundleDetailsTab===`graph`&&e!==`graph`&&(R(),document.body.classList.remove(`report-fullscreen`)),vt(j,e,e=>Oe(e)?.oldVersion??null),_(e),j.selectedBundle&&N(j.selectedBundle,e,{push:!0}),A(),e===`code`&&ce().then(()=>(j.bundleDetailsTab===`code`&&on(),null))}return}if(e.target.closest(`[data-bundle-retry-sources]`)){j.bundleDetails&&delete j.bundleDetails.sourceError,A();return}let ne=e.target.closest(`[data-bundle-download]`);if(ne){let e=ne.dataset.bundleDownload,t=(j.bundles??[]).find(t=>t.integrity===e);if(!t)return;(async()=>{let{confirmed:n}=await Vn({name:t.name,encrypted:w()});if(n)try{let n=await re(e);Dt(new Blob([n],{type:`application/octet-stream`}),t.name)}catch(e){alert(`Failed to download bundle: ${e.message}`)}})();return}let ae=e.target.closest(`[data-bundle-export-sbom]`);if(ae){let e=ae.dataset.bundleExportSbom,t=j.bundleDetails,n=(j.bundles??[]).find(e=>e.integrity===j.selectedBundle);if(!n||!t||t.integrity!==n.integrity)return;try{let r=e===`cyclonedx`,i=r?fe(t,n):he(t,n),a=`${ue(n.name)}.${r?`cdx`:`spdx`}.json`;Dt(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]`)){j.bundleSearchContext=!j.bundleSearchContext,W(`.bundle-search-results`);return}if(e.target.closest(`[data-advisories-consent]`)){Ne(),A();return}if(e.target.closest(`[data-advisories-retry]`)){Le(j.bundleDetails,A).catch(()=>{}),A();return}let se=e.target.closest(`[data-bundle-issue-report]`);if(se){let e=se.dataset.bundleIssueReport;e&&An(e);return}if(ki(e))return;let le=e.target.closest(`[data-bundle-code-issue-step]`);if(le){let e=le.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=le.dataset.bundleCodeIssueStep===`-1`?-1:1,n=t.findIndex(e=>e.idx===j.bundleSourceFindingIdx),r=n===-1?e>0?t[0]:t.at(-1):t[(n+e+t.length)%t.length];j.bundleSourceFindingIdx=r.idx,xi(),r.line>0&&wi(r.line,{block:`center`,behavior:`smooth`})}return}let y=K(e,`[data-bundle-view-source]`);if(y){let e=y.dataset.bundleViewSource;if(!e)return;let t=y.dataset.bundleViewFindingIdx,n=t===void 0?null:parseInt(t,10),r=y.dataset.bundleViewLine,i=r?parseInt(r,10):null;Number.isFinite(i)&&(j.bundleSourcePretty=!1,j.bundleSourceLockfile=!1);let a=j.bundleSourceFile!==e;if(Di(e),Number.isFinite(n)?j.bundleSourceFindingIdx=n:a&&(j.bundleSourceFindingIdx=null),j.bundleSourceTargetLine=Number.isFinite(i)?{bundle:j.bundleDetails?.integrity??null,path:e,line:i}:null,y.closest(`.bundle-code-rail`)?W(`.bundle-code-rail-body`):y.closest(`.bundle-search-results`)?W(`.bundle-search-results`):y.closest(`.bundles-slide-body`)?W(`.bundles-slide-body`):A(),Number.isFinite(i)){let t=y.dataset.bundleViewScrollBlock||`center`;ce().then(()=>(j.bundleSourceFile===e&&wi(i,{block:t,behavior:`smooth`}),null))}return}let de=e.target.closest(`[data-action="workspace-reports"], [data-action="workspace-bundles"], [data-action="workspace-repositories"], [data-action="workspace-dependencies"]`);if(de){let e=de.dataset.action.slice(10);j.currentView!==`workspace-${e}`&&d(j.currentManagedTeam??j.currentWorkspace,e);return}if(e.target.closest(`[data-action="workspace-findings"]`)){if(j.currentView===`findings`)return;if(j.currentView===`files`){if(mi(`findings`))return;j.currentView=`findings`,j.filesSelectedFile=null,document.body.classList.remove(`report-fullscreen`),A()}else M()?g(j.managedTeams.find(e=>e.id===j.currentManagedTeam)):te(j.currentWorkspace);return}let pe=e.target.closest(`[data-workspace-report]`);if(pe){M()?g(j.managedTeams.find(e=>e.id===j.currentManagedTeam),pe.dataset.workspaceReport):An(pe.dataset.workspaceReport,void 0,{workspaceId:j.currentWorkspace});return}let me=e.target.closest(`[data-workspace-repository]`);if(me){let{workspaceRepository:e,repositoryName:t,repositoryPath:n}=me.dataset;document.dispatchEvent(new CustomEvent(`managed-repository-code-open`,{detail:{repoId:Number(e),repo:t,path:n}}));return}let ge=e.target.closest(`[data-workspace-bundle]`);if(ge){if(M())Et.navigate(yr({view:`bundles`,teamId:j.currentManagedTeam,bundleId:ge.dataset.workspaceBundle,bundleTab:`overview`},j.managedTeams));else{let e=ge.dataset.workspaceBundle;f(e,`overview`,{workspaceId:j.currentWorkspace}),N(e,`overview`),A(),k(),oe(e)}return}if(e.target.closest(`[data-action="toggle-files"]`)){if(mi(j.currentView===`files`?`findings`:`files`))return;j.currentView===`files`?j.currentView=`findings`:(j.viewMode===`graph`&&R(),j.currentView=`files`),document.body.classList.remove(`report-fullscreen`),A();return}let _e=K(e,`[data-g2-pkg]`);if(_e){let e=_e.dataset.g2Pkg;L.solo=L.solo===e?null:e,L.solo&&(L.selected=null),yi(),bi(),L.graphState?.requestDraw?.();return}let ve=K(e,`[data-g2-select]`);if(ve){L.selected=ve.dataset.g2Select,yi(),L.graphState?.requestDraw?.();return}let ye=K(e,`[data-g2-top-pkgs]`);if(ye){L.topPkgsTab=ye.dataset.g2TopPkgs,bi();return}let be=K(e,`[data-g2-jump-findings]`);if(be){if(j.currentView===`bundles`){j.bundleDetailsTab===`graph`&&R(),_(`issues`),j.selectedBundle&&N(j.selectedBundle,`issues`,{push:!0}),A();return}if(Ce(),j.filterConfMin=0,j.filterInclude=be.dataset.g2JumpFindings,j.currentView=`findings`,j.viewMode===`graph`&&(j.viewMode=`table`),R(),mi(`findings`))return;A();return}let xe=K(e,`[data-g2-jump-file]`);if(xe){let e=xe.dataset.g2JumpFile;R();let t=()=>requestAnimationFrame(()=>{let t=document.querySelector(`#${cr(e)}`);t&&t.scrollIntoView({behavior:`smooth`,block:`start`})}),n=mi(`files`);if(n){n.then(e=>e?t():void 0);return}j.currentView=`files`,A(),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(),A();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(),A();return}if(K(e,`[data-g2-bundle-issues]`)){L.bundleIssues=!L.bundleIssues,R({keepViewport:!0}),A();return}let Se=K(e,`[data-g2-layout]`);if(Se){let e=Se.dataset.g2Layout;if(![`graph`,`layers`,`matrix`,`dependencies`,`flow`,`package-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(),A();return}let b=K(e,`.graph2-triage-selector [data-triage-show]`);if(b){let e=b.dataset.triageShow;j.shownTriage=j.shownTriage===e?null:e,L.layoutCache=null,L.selected=null,R(),A();return}let we=K(e,`[data-g2-focus-pkg]`);if(we){L.focusedPkg=we.dataset.g2FocusPkg,L.layoutCache=null,R(),A();return}if(K(e,`#g2-back-to-full`)){L.focusedPkg=null,L.layoutCache=null,(L.packagesView||L.bundleLayout===`layers`)&&(L.selected=null),R(),A();return}let Te=K(e,`.tab`);if(Te&&K(e,`.tabs`)){let t=K(e,`[data-gid]`).dataset.gid,n=Te.dataset.tid;j.activeTabByGroup.set(t,n),G();return}let Ee=K(e,`[data-triage-action]`);if(Ee){let e=Ee.closest(`.triage-menu`),t=e?.dataset.gid;if(!t)return;let n=D(t);if(!n)return;let r=Ee.dataset.triageAction;if(![`inprogress`,`fixed`,`invalid`,`deleted`,`ignored`,`restore`].includes(r))return;let{targets:i,clearing:a}=zt(n,r);if(i.length===0)return;Pi(i,a?`untriaged`:r);try{e.hidePopover()}catch{}x(),G();return}if(K(e,`.mark-comment`)){let t=K(e,`[data-gid]`).dataset.gid,n=D(t);if(!n)return;let r=T(n);if(!rt(r))return;if(M()){Mn(r,G).catch(()=>Bt(`Could not open comments. Please retry.`));return}let i=ir(r),a=ut(r)?.comment??``;Bn({initial:a,finding:r}).then(e=>(e===null||!C(r)||(F(j.triage,i,{comment:e||void 0}),x(),G()),null)).catch(()=>{});return}let De=K(e,`.mark-copy`);if(De){let t=Ai(e);if(t===null)return;Ei(De,t);return}let ke=K(e,`.mark-link`);if(ke){let t=K(e,`[data-gid]`),n=t?D(t.dataset.gid):null;if(!n)return;let r=ie(T(n));if(!r)return;Ei(ke,r);return}let Ae=K(e,`[data-copy-report]`);if(Ae){Ei(Ae,Ae.dataset.copyReport);return}let je=K(e,`[data-copy-path]`);if(je){Ei(je,je.dataset.copyPath);return}let Me=K(e,`.mark-issue`);if(Me&&M()&&j.managedSession&&!j.managedSession.publicShare&&j.currentManagedTeam){let t=K(e,`[data-gid]`),n=t?D(t.dataset.gid):null,r=n?T(n):null;if(r?._managedReportId&&r.id){e.preventDefault();let t=new URL(Me.dataset.issueForm);Ve({teamId:j.currentManagedTeam,session:{...j.managedSession},context:{reportId:r._managedReportId,findingId:r.id,repository:t.pathname.split(`/`).slice(1,3).join(`/`)},formUrl:t.href,title:t.searchParams.get(`title`)??``,finding:r,draftOptions:{...et(r),findingLink:ie(r)},renderBody:Qe,render:A}).catch(()=>Bt(`Could not open issue creation. Please retry.`));return}}let Pe=K(e,`.mark-claude`);if(Pe){let t=Ai(e);if(t===null)return;let n=`claude://code/new?q=${encodeURIComponent(`Confirm and fix:
6
6
 
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
- `,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
- `,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
- `,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
- `,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 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()}})();
7
+ ${t}`)}`;try{window.location.href=n,Ti(Pe)}catch{}return}if(K(e,`.mark-fix`)){let t=K(e,`[data-gid]`)?.dataset.gid,n=t?D(t):null;if(!n)return;let r=T(n);if(!C(r))return;let i=rn(n),a=ut(r)?.fix??``;Gn({initial:a,finding:r,canApplyToGroup:jt(i,a)}).then(e=>{if(e===null||!C(r))return null;let n=e.scope===`group`?i.filter(e=>C(e)&&(e===r||Ft(e,a))):[r],o=!1;for(let t of n)F(j.triage,ir(t),{fix:e.value||void 0})&&(o=!0);return o&&(n.length>1&&j.activeTabByGroup.set(t,ir(r)),G(),queueMicrotask(x)),null}).catch(()=>{});return}let Fe=K(e,`[data-flag-toggle]`);if(Fe){let t=Fe.dataset.flagToggle,n=K(e,`[data-gid]`)?.dataset.gid,r=(n?D(n):null)?.find(e=>ir(e)===t);if(!r||!C(r))return;let i=ut(r)?.flagged;F(j.triage,t,{flagged:i!==!0}),x(),G();return}let Ie=e.target.closest(`[data-triage-show]`);if(Ie&&!Ie.closest(`.graph2-triage-selector`)){let e=Ie.dataset.triageShow;j.shownTriage=j.shownTriage===e?null:e,A();return}if(e.target.closest(`[data-table-deselect]`)){j.tableSelectedGid=null,G();return}let Re=e.target.closest(`[data-tree-select]`);if(Re){let e=Re.dataset.treeSelect;j.filesSelectedFile=j.filesSelectedFile===e?null:e,A();return}e.target.closest(`[data-tree-deselect]`)&&(j.filesSelectedFile=null,A())});var ji=document.querySelector(`#bundle-source-overlay-slot`);ji&&ji.addEventListener(`click`,ki);function Mi(e){let t=e?D(e):null;t&&Kt(t)&&queueMicrotask(x)}E.addEventListener(`row-select`,e=>{let t=e.detail?.gid;if(!t)return;let n=j.tableSelectedGid!==t;j.tableSelectedGid=n?t:null,n&&Mi(t),G()});var Ni=`application/x-deepview-kanban-gid`;function Pi(e,t){for(let n of e)C(n)&&jn(j.triage,n,t,Jn())}function Fi(){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=D(n);if(!r||Ht(r).length===0){e.preventDefault();return}e.dataTransfer.setData(Ni,n),e.dataTransfer.setData(`text/plain`,n),e.dataTransfer.effectAllowed=`move`,t.classList.add(`dragging`)}),E.addEventListener(`dragend`,Fi),E.addEventListener(`dragover`,e=>{if(!e.dataTransfer?.types.includes(Ni))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(Ni))return;let t=e.target.closest?.(`.kanban-column[data-kanban-target]`);if(!t){Fi();return}e.preventDefault();let n=e.dataTransfer.getData(Ni),r=t.dataset.kanbanTarget;if(Fi(),!n||!r)return;let i=D(n);if(!i||(Ot(i).commonTriage??`untriaged`)===r)return;let a=Ht(i);a.length!==0&&(Pi(a,r),A(),queueMicrotask(x))});var Ii=!1,Li=[`theme-w95`,`theme-paper`];function Ri(){return!!document.startViewTransition&&!Li.some(e=>document.body.classList.contains(e))}function q(e){return e?E.querySelector(`.kanban-card[data-gid="${CSS.escape(e)}"]`):null}function zi(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 Bi(e){j.kanbanPopoverGid=e,j.focusCodeStack=[],j.focusCodeAt=0}function Vi(){u()}function J(e){let t=j.kanbanPopoverGid;if(t===e)return;let n=t===null&&e!==null,r=t!==null&&e===null;if(!Ri()||!n&&!r){Mi(e),Bi(e),A(),Vi();return}if(Ii)return;Mi(e),Ii=!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),Ii=!1};if(n){let t=q(e);t?(zi(t),t.style.viewTransitionName=`kanban-detail-modal`,t.getBoundingClientRect()):zi(),Bi(e);let n=un(()=>{A(),Vi(),t&&(t.style.viewTransitionName=``)}),r=setTimeout(()=>a(t),600);(async()=>{try{await n.finished}catch{}clearTimeout(r),a(t)})();return}zi(),Bi(e);let o=null,s=un(()=>{A(),o=q(t),o&&(zi(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 Hi(e){let t=q(j.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 Ui=null;function Wi(){Ze(),j.focusCodeStack=[],j.focusCodeAt=0,A(),Ui?.isConnected&&Ui.focus({preventScroll:!0}),Ui=null}E.addEventListener(`click`,e=>{let t=K(e,`[data-links-preview]`);if(t){e.preventDefault(),Ui=t;let n=t.dataset.previewRow,r=$e(t.dataset.linksPreview,t.dataset.previewReport,n===void 0?void 0:Number(n),t.dataset.previewManagedReport);A(),E.querySelector(`.kanban-detail-close`)?.focus({preventScroll:!0}),r.then(()=>{A(),u();let e=S()?.group?.[0]._bundleHashes;if(Array.isArray(e))for(let t of e)ne(t).catch(()=>{});return null});return}if(e.target.closest?.(`.kanban-detail-close`)){if(S()){Wi();return}J(null);return}if(e.target.closest?.(`[data-kanban-detail-fullscreen]`)){j.kanbanDetailFullscreen=!j.kanbanDetailFullscreen;try{localStorage.setItem(Zt,String(j.kanbanDetailFullscreen))}catch{}A(),u();return}let n=e.target.closest?.(`[data-kanban-expand]`);if(n){let e=n.dataset.kanbanExpand,t=j.kanbanExpandedColumn===e?null:e;j.kanbanExpandedColumn=t,t&&j.kanbanPopoverGid&&q(j.kanbanPopoverGid)?.closest(`.kanban-column`)?.dataset.kanbanTarget!==t&&(j.kanbanPopoverGid=null),A();return}let r=e.target.closest?.(`[data-kanban-nav]`);if(r){Hi(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(j.kanbanPopoverGid===e?null:e);return}if(!K(e,`.kanban-detail-modal, .kanban-detail-side`)){if(S()){Wi();return}j.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(S()){!e.defaultPrevented&&!Zi(e)&&!document.querySelector(`:popover-open:not(#styled-tooltip)`)&&Wi();return}if(j.kanbanPopoverGid){J(null);return}j.viewMode!==`kanban`||j.kanbanExpandedColumn===null||(j.kanbanExpandedColumn=null,A())}});function Gi(e){let t=K(e,`[data-gid]`)?.dataset?.gid;return t?D(t):null}function Ki(e,t){if(!t.integrity||!t.file)return;let n=h(e);if(!n)return;let r=Sn(n,t);r&&(j.focusCodeStack=r.stack,j.focusCodeAt=r.at,A()),t.range||qi(),u()}function qi(){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(),Ki(Gi(e),{integrity:t.dataset.codeNavIntegrity,file:t.dataset.codeNavFile,range:$n(t.dataset.codeNavLine)}))});function Ji(e){let t=Dn(j.focusCodeStack,j.focusCodeAt,e);t!==j.focusCodeAt&&(j.focusCodeAt=t,A(),j.focusCodeStack[t]?.range||qi(),u())}function Yi(e){if(!e||j.focusGid===e)return;Mi(e),j.focusGid=e,j.focusCodeStack=[],j.focusCodeAt=0,A();let t=E.querySelector(`.focus-side-card.active`);t&&t.scrollIntoView({block:`nearest`,behavior:`instant`}),u()}function Xi(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&&Yi(i)}E.addEventListener(`click`,e=>{let t=e.target.closest?.(`[data-focus-nav]`);if(t){Xi(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&&Yi(r)}),E.addEventListener(`pointerdown`,e=>{if(e.button!==0)return;let t=e.target.closest?.(`[data-focus-splitter]`);t&&ii(t,e)}),E.addEventListener(`dblclick`,e=>{let t=e.target.closest?.(`[data-focus-splitter]`);t&&ri(t)});function Zi(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(j.currentView!==`findings`)return;let t=j.viewMode===`focus`,n=j.viewMode===`kanban`&&j.kanbanPopoverGid!==null;if(!t&&!n||e.metaKey||e.ctrlKey||e.altKey||e.shiftKey||Zi(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){ni(i,r*Qr);return}t?Xi(r):Hi(r)}),E.addEventListener(`mark-color`,e=>{let t=K(e,`[data-gid]`);if(!t)return;let n=t.dataset.gid,r=D(n);if(!r)return;let i=T(r);if(!C(i))return;let a=ir(i),o=e.detail?.color;o&&(ut(i)?.color===o?F(j.triage,a,{color:void 0}):F(j.triage,a,{color:o}),x(),G())});var Y=null,Qi=null,$i=null,ea=!1;function ta(){if(Y!==null)return;if(j.reports.length===0){$i=null,ea=!1;return}Y=j.viewMode,Qi=document.title;let e=!1;j.viewMode===`table`&&(j.viewMode=`list`,e=!0),$i&&(Te($i),e=!0),e&&A();for(let e of E.querySelectorAll(`finding-card`))e.toggleAttribute(`print-one-sample`,ea),e.ensureRendered({sync:!0});let t=j.reports.map(e=>e.fileName),n=``;t.length===1?n=t[0]:t.length>1&&(n=Xn(t)),n=n.replace(/\.json$/u,``),n&&(document.title=n)}function na(){if(Y===null)return;for(let e of E.querySelectorAll(`finding-card`))e.removeAttribute(`print-one-sample`);ea=!1;let e=!1;j.viewMode!==Y&&(j.viewMode=Y,e=!0),$i&&(De(),$i=null,e=!0),e&&A(),document.title=Qi,Y=null,Qi=null}window.addEventListener(`beforeprint`,ta),window.addEventListener(`afterprint`,na);async function ra(e,{oneSamplePerGroup:t=!1}={}){if(Y===null){$i=e,ea=t;try{ta(),await Promise.all([...E.querySelectorAll(`finding-card`)].map(e=>e.ensureRendered())),window.print()}catch(e){throw na(),e}}}function ia(e,t){if(!e)return t();Te(e);try{return t()}finally{De()}}document.addEventListener(`download-requested`,async()=>{if(j.reports.length===0)return;let{confirmed:e,view:t,fields:n,mode:r,oneSamplePerGroup:i}=await Hn(`download`);if(!await yn()){Bt(`Could not load finding details to export. Open the team again to retry.`);return}if(t){await Un(ia(n,()=>di({oneSamplePerGroup:i})));return}if(e){if(r===`print`){await ra(n,{oneSamplePerGroup:i});return}ia(n,()=>pi({oneSamplePerGroup:i}))}}),E.addEventListener(`analyzer-change`,e=>{j.filterAnalyzer=e.detail.analyzer,j.filterModel=e.detail.model,A()}),E.addEventListener(`repo-change`,e=>{j.filterRepo=e.detail.value,A()}),E.addEventListener(`revalidate-change`,e=>{j.filterRevalidate=e.detail.value,A()}),E.addEventListener(`partial-change`,e=>{j.filterPartial=e.detail.value,A()}),E.addEventListener(`revalidation-change`,e=>{j.showRevalidation=e.detail.on,!e.detail.on&&j.reports.some(e=>(e.groups??[]).some(e=>e.some(e=>!e.isApp&&(e.isUpstream||Yn(e.file)))))?Bt(`App mode off is not recommended; it can conflate triage for issues in dependencies.`,{kind:`warning`}):e.detail.on&&Ut(),lr(j.showRevalidation,j.upstreamOnly),Be(Qt(),{resetSort:!1}),A()}),E.addEventListener(`revalidation-conflicts-open`,()=>{(async()=>{let e=await Pn(j.revalidateConflicts);if(!e)return;let t=await ln(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=>{j.revalidationDetailed=e.detail.on===!0,A()}),E.addEventListener(`upstream-only-change`,e=>{if(j.upstreamOnly=e.detail.on===!0,lr(j.showRevalidation,j.upstreamOnly),!j.upstreamOnly){let e=Qt();Fe(e,ze(e))===`confirmed`&&(j.filterRevalidate=`confirmed`,j.filterPartial=``)}A()}),E.addEventListener(`bundle-search-mode-change`,e=>{let t=e.detail?.mode;if([`files`,`code`,`issues`,`largest`].includes(t)){if(j.bundleCodeSearchMode=t,A(),t===`files`)on();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(),A())}),E.addEventListener(`bundle-search-regex-toggle`,()=>{j.bundleSearchRegex=!j.bundleSearchRegex,A()}),E.addEventListener(`bundle-search-case-toggle`,()=>{j.bundleSearchCase=!j.bundleSearchCase,A()}),E.addEventListener(`bundle-swap`,e=>{let t=e.detail?.integrity;if(!t||!(j.bundles??[]).some(e=>e.integrity===t))return;let n=j.bundles.find(e=>e.integrity===t),r=bn(e.detail.bundles??[]),i=()=>{setTimeout(()=>wn(r))};if(n.managedId){let t=e.detail.target===void 0?j.selectedBundle:e.detail.target,r=j.bundles.find(e=>e.integrity===t),a=r?.managedId?{compareId:r.managedId,...gr(e.detail.mode)}:null;Et.navigate(dt(j.managedTeams,n,j.currentManagedTeam,`compare`,a,j.bundles)).finally(i);return}f(t,`compare`),N(t,`compare`),A(),k(),oe(t).finally(i)}),E.addEventListener(`bundle-compare-change`,e=>{let{base:t,target:n,mode:r}=e.detail??{};!M()||!t||t!==j.selectedBundle||j.bundleDetailsTab!==`compare`||(j.bundleCompare=n?{bundle:t,target:n,mode:hr(r)}:null,N(t,`compare`))}),E.addEventListener(`sort-change`,e=>{let{kind:t,value:n}=e.detail;if(t===`findings`)j.sortBy=n;else if(t===`packages`)j.packagesSortBy=n;else if(t===`repositories`)j.repositoriesSortBy=n;else return;A()}),E.addEventListener(`range-change`,e=>{e.target.id===`conf-range`&&(j.filterConfMin=e.detail.low,j.filterConfMax=e.detail.high,A())}),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`){j.filterInclude=n,n||(j.filterIncludeNegate=!1),Ci();return}if(t===`files`){j.filesSearch=n,Ci();return}if(t===`packages`)j.packagesSearchQuery=n;else if(t===`repositories`)j.repositoriesSearchQuery=n;else if(t===`bundle-code`){j.bundleCodeSearchQuery=n,Ci();return}else if(t===`bundle-search`){j.bundleSearchQuery=n,Ci();return}else return;A()}),E.addEventListener(`search-negate-toggle`,()=>{j.filterIncludeNegate=!j.filterIncludeNegate,A()}),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?.(),bi();return}j.filterSeverities.has(t)?j.filterSeverities.delete(t):j.filterSeverities.add(t),A()}),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?.(),bi();return}j.filterColors.has(t)?j.filterColors.delete(t):j.filterColors.add(t),A()}),E.addEventListener(`source-toggle`,e=>{let t=e.detail.source,n=j.filterSources.has(t);j.filterSources.clear(),n||j.filterSources.add(t),A()}),E.addEventListener(`annotation-filter-toggle`,e=>{let t=e.detail?.key,n=e=>e===``?`with`:e===`with`?`without`:``;if(t===`comment`)j.filterComment=n(j.filterComment);else if(t===`fix`)j.filterFix=n(j.filterFix);else if(t===`flag`)j.filterFlagged=n(j.filterFlagged);else if(t===`duplicates`&&!j.currentWorkspace)j.filterDuplicates=n(j.filterDuplicates);else if(t===`cross-context`)j.filterCrossContext=n(j.filterCrossContext);else if(t===`app-stacked`)j.filterAppStacked=n(j.filterAppStacked);else if(t===`security`)j.filterSecurity=n(j.filterSecurity);else return;A()}),E.addEventListener(`slide-triage-toggle`,e=>{let{kind:t,value:n}=e.detail;if(t===`package`)j.packageSlideTriage=j.packageSlideTriage===n?null:n;else if(t===`repository`)j.repositorySlideTriage=j.repositorySlideTriage===n?null:n;else return;A()}),E.addEventListener(`view-mode-change`,e=>{if(e.detail.kind===`files`){j.filesViewMode=e.detail.mode,A();return}j.viewMode=e.detail.mode,j.viewMode!==`kanban`&&(j.kanbanPopoverGid=null),j.viewMode!==`focus`&&(j.focusGid=null),A()}),E.addEventListener(`severity-mode-change`,e=>{let t=e.detail?.mode;if(t===`corrected`||t===`original`){j.severityMode=t;try{localStorage.setItem(Wt,t)}catch{}A()}}),E.addEventListener(`repo-edit-start`,()=>{M()||(j.repoEditing=!0,A())}),E.addEventListener(`repo-input`,e=>{M()||(j.repoUrl=e.detail.url,hn(j.currentFile,j.repoUrl))}),E.addEventListener(`repo-commit`,e=>{M()||(j.repoUrl=e.detail.url,hn(j.currentFile,j.repoUrl),j.repoEditing=!1,A())}),E.addEventListener(`repo-cancel`,e=>{M()||(j.repoUrl=e.detail.url,hn(j.currentFile,j.repoUrl),j.repoEditing=!1,A())}),document.addEventListener(`keydown`,e=>{if(e.key===`Escape`){if(j.bundleSourceFindingIdx!=null){j.bundleSourceFindingIdx=null,xi();return}if(j.bundleSourceFile){if(j.currentView===`bundles`&&j.bundleDetailsTab===`code`)return;_(j.bundleDetailsTab),A()}}});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 aa(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 oa(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 sa(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 ca(e){return e.slice(1).reduce((t,n,r)=>t+Math.hypot(n.x-e[r].x,n.y-e[r].y),0)}function la(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 ua(e,t,n=7){let r=aa(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),oa(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=oa(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=>{sa(e)>.01&&f.push({points:e,...la(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=ca(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+ca(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+ca(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 da=`.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
+ `,fa=`http://www.w3.org/2000/svg`,pa=null;function ma(){pa||(pa=new CSSStyleSheet,pa.replaceSync(da),document.adoptedStyleSheets=[...document.adoptedStyleSheets,pa])}var ha=1.5,ga=0;function Q(e,t={}){let n=document.createElementNS(fa,e);for(let[e,r]of Object.entries(t))n.setAttribute(e,String(r));return n}function _a(e){let t=document.createElement(`div`);t.className=`screen-crack`,t.setAttribute(`aria-hidden`,`true`),ma();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-${++ga}`,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 va(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*ha,delay:r.delay*ha,easing:`cubic-bezier(.2,.7,.2,1)`})}}}function ya(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=ua(n,t),{overlay:i,glass:a,cracks:o,shards:s,flash:c}=_a(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),va(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 _=Math.max(...r.cracks.map(e=>e.delay+e.duration))*ha,v=Math.max(500,_*.8);d(a,[{opacity:0},{opacity:1}],{duration:500,easing:`ease-out`}),d(c,[{visibility:`visible`},{visibility:`visible`}],{duration:1,delay:v-1}).finished.then(m,()=>{}),d(o,[{opacity:1},{opacity:0}],{duration:450,delay:v,easing:`ease-out`});for(let{masked:e,outlined:t,outline:n,piece:r}of s){let i=v+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 ba=`: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
+ `,xa=`deepview.theme`,Sa=Object.freeze([`dark`,`light`,`green`,`pink`,`w95`,`paper`]),Ca=Object.freeze([`dark`,`green`,`pink`,`w95`,`paper`,`light`]),wa=3,Ta={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`}},Ea=window.matchMedia?.(`(display-mode: window-controls-overlay)`),Da=window.matchMedia?.(`(display-mode: standalone)`),Oa=window.navigator?.windowControlsOverlay,ka={light:`☀`,dark:`☾`,green:`🕶️`,pink:`✿`,w95:`⊞`,paper:`📄`},Aa=`deepview-theme-changed`,$=`dark`,ja=!1,Ma=0,Na=!1,Pa=!1,Fa=0,Ia=0,La=!1;function Ra(){if(!Na)return $===`light`?`dark`:`light`;let e=La?Ca:Ca.filter(e=>e!==`w95`),t=e.includes($)?$:`pink`;return e[(e.indexOf(t)+1)%e.length]}function za(){window.dispatchEvent(new CustomEvent(Aa,{detail:{theme:$}}))}function Ba(){try{let e=localStorage.getItem(xa);return Sa.includes(e)?e:`dark`}catch{return`dark`}}function Va(){let e=document.querySelector(`meta[name="theme-color"]`);if(!e)return;let{base:t,dim:n,sidebar:r}=Ta[$],i=Oa?.visible??Ea?.matches??!1,a=(Da?.matches||Ea?.matches)&&!i;e.setAttribute(`content`,ja?n:a&&r?r:t)}function Ha(e){Sa.includes(e)||(e=`dark`),$=e;for(let e of Sa)e!==`dark`&&document.body.classList.remove(`theme-${e}`);e!==`dark`&&document.body.classList.add(`theme-${e}`);try{e===`dark`?localStorage.removeItem(xa):localStorage.setItem(xa,e)}catch{}Va(),za()}Ha(Ba()),Ea?.addEventListener(`change`,Va),Da?.addEventListener(`change`,Va),Oa?.addEventListener(`geometrychange`,Va),window.addEventListener(`beforeprint`,()=>{ja=!0,Ha($)}),window.addEventListener(`afterprint`,()=>{ja=!1,Ha($)});function Ua(e){if(!Sa.includes(e))throw TypeError(`unknown theme`);Fa++,Ha(e)}function Wa(){return $}var Ga=class extends H{static properties={_theme:{state:!0}};static styles=z(ba);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(Aa,this._onThemeChanged),this._onThemeChanged()}disconnectedCallback(){window.removeEventListener(Aa,this._onThemeChanged),this.removeEventListener(`click`,this._toggle),this.removeEventListener(`keydown`,this._onKeydown),super.disconnectedCallback()}_onThemeChanged=()=>{this._theme=$,this.setAttribute(`aria-disabled`,String(Pa))};_toggle=()=>{if(Pa)return;if(!Na&&++Ma>=8&&$===`dark`){Na=!0,Pa=!0,za();let e=Fa,t=()=>{Fa===e&&Ha(`green`)},n=()=>{Pa=!1,za()};try{ya(t).catch(t).finally(n)}catch{t(),n()}return}let e=Ra();$===`green`&&e===`pink`&&++Ia>=wa&&(La=!0),Ha(e)};_onKeydown=e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),e.repeat||this._toggle())};render(){return B`${ka[this._theme]}`}};customElements.define(`theme-toggle`,Ga);var Ka=`: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
+ `,qa=`: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
+ `,Ja=`.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
+ `,Ya=`.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
+ `,Xa=`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
+ `,Za=[`is-critical`,`mark-red`,`mark-blue`,`mark-green`,`mark-gray`,`has-conflict`,`triage-inprogress`,`triage-fixed`,`triage-invalid`,`triage-deleted`,`triage-ignored`,`selected`],Qa=class extends O{static properties={group:{attribute:!1},selected:{type:Boolean}};static styles=[z(qt),z(Ya),z(qa),z(Ka),z(Xa),z(Ja)];_near=!1;_watching=!1;constructor(){super(),this.group=null,this.selected=!1}render(){if(!this.group)return B``;if(this.dataset.gid=tt(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(it(this.group));this.selected&&e.add(`selected`);for(let t of Za)this.classList.toggle(t,e.has(t));return B`<div class="row">${ot(this.group)}</div>`}connectedCallback(){super.connectedCallback(),sr(this.renderRoot),this.addEventListener(`click`,this._onClick),this._watching=!0,ct(this,e=>this._onNear(e))}disconnectedCallback(){this.removeEventListener(`click`,this._onClick),this._watching&&=(lt(this),!1),super.disconnectedCallback()}_onNear(e){e?(this._watching&&=(lt(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`,Qa);var $a=`: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
+ `,eo=class extends H{static properties={items:{attribute:!1},selectedGid:{attribute:!1}};static styles=z($a);constructor(){super(),this.items=[],this.selectedGid=null}render(){return B`${pr(this.items??[],e=>tt(e),e=>B`<finding-row .group="${e}" ?selected="${tt(e)===this.selectedGid}"></finding-row>`)}`}};customElements.define(`finding-table`,eo);var to=`: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
+ `,no=[`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`],ro=class extends O{static properties={group:{attribute:!1},inGroup:{type:Boolean,attribute:`in-group`,reflect:!0},context:{type:String,reflect:!0},lazy:{type:Boolean}};static styles=[z(qt),z(Ya),z(qa),z(to),z(e),z(Xa),z(Ja),z(t),z(o)];_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=tt(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(nt(this.group));for(let t of no)this.classList.toggle(t,e.has(t));return B`<div class="card">${c(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&&(kn(e,n),e.dataset.revealedTo=String(Math.round(e.scrollTop)))}}connectedCallback(){if(super.connectedCallback(),sr(this.renderRoot),this.lazy){this._watched=this.closest(`.flat-group`)??this,ct(this._watched,e=>this._onNear(e));return}this.hasUpdated&&this.requestUpdate()}disconnectedCallback(){this._watched&&=(lt(this._watched),null),super.disconnectedCallback()}_onNear(e){e?(this._watched&&=(lt(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`,ro);var io=48,ao=4;function oo(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 so(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 co(e,t,n){let r=e.length-1;return r===0?{from:0,to:0}:{from:so(e,t-n),to:Math.min(r,so(e,t+2*n)+1)}}function lo(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 uo=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:io,i=oo(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 so(e,r)>=t&&(n>=this.items.length||so(e,r+this._viewHeight())<n)}_holdOf(e,t){if(e.length===0)return null;let n=this._topsOf(e),r=so(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?lo(r,this._goal.index,t,n):this._heldTop(r)??t;this._range=co(r,i,n)}render(){let{from:e,to:t}=this._range;return B`<div class="kanban-rail-spacer" aria-hidden="true"></div>${pr(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?lo(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>=ao?this._passes=0:this.requestUpdate()}};customElements.define(`kanban-rail`,uo);var fo=`: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
+ `,po=[`red`,`blue`,`green`,`gray`],mo=class extends H{static properties={selected:{type:String},disabled:{type:Boolean}};static styles=z(fo);constructor(){super(),this.selected=null,this.disabled=!1}render(){return B`${po.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`,mo);var ho=class extends O{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=j.filterConfMin,t=j.filterConfMax,n=this.revalidateOptions??[],r=this.rangeDisabled,i=n.length>0&&!!j.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`,ho);var go={files:`Filter files…`,code:`Search code…`,issues:`Search issues…`,largest:`Filter largest files…`},_o={files:`Filter files`,code:`Search code`,issues:`Search issues`,largest:`Largest files`},vo=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>`,yo={files:qe,code:Ye,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>`},bo=class extends O{static properties={modes:{attribute:!1}};createRenderRoot(){return this}constructor(){super(),this.modes=[]}render(){let e=j.bundleCodeSearchQuery,t=j.bundleCodeSearchMode,n=this.modes.includes(t)?t:`files`,r=go[n]??go.files;return B`${vo} <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="${_o[e]??e}" aria-label="${_o[e]??e}" @click="${()=>this._selectMode(e)}">${yo[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`,bo);var xo=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`,xo);var So=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>`,Co=class extends O{createRenderRoot(){return this}render(){let e=j.bundleSearchQuery,t=j.bundleSearchRegex,n=j.bundleSearchCase,r=t?`Search by regular expression…`:`Search all source…`;return B`${So} <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`,Co);function wo(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 To={packages:{stateKey:`packagesSearchQuery`,label:`Filter packages`},repositories:{stateKey:`repositoriesSearchQuery`,label:`Filter repositories`}},Eo=class extends O{static properties={kind:{type:String}};createRenderRoot(){return this}constructor(){super(),this.kind=``}render(){let e=wo(`entity-search`,To,this.kind);return e?B`<input type="search" class="packages-search" placeholder="${`${e.label}\u2026`}" aria-label="${e.label}" .value="${P(j[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`,Eo);var Do=[[`findings-desc`,`Findings ↓`],[`files-desc`,`Files ↓`],[`reports-desc`,`Reports ↓`],[`name-asc`,`Name A→Z`]],Oo={packages:{stateKey:`packagesSortBy`,aria:`Sort packages`},repositories:{stateKey:`repositoriesSortBy`,aria:`Sort repositories`}},ko=class extends O{static properties={kind:{type:String}};createRenderRoot(){return this}constructor(){super(),this.kind=``}render(){let e=wo(`entity-sort`,Oo,this.kind);return e?B`<select class="packages-sort" aria-label="${e.aria}" .value="${P(j[e.stateKey])}" @change="${this._onChange}">${Do.map(([t,n])=>B`<option value="${t}" ?selected="${j[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`,ko);var Ao=class extends O{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="${j.sortBy===e}">${t}</option>`;return B`<select class="sort-select" aria-label="Sort findings" .value="${P(j.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`,Ao);var jo=`: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
+ `,Mo=class extends H{static properties={min:{type:Number},max:{type:Number},step:{type:Number},low:{type:Number},high:{type:Number}};static styles=z(jo);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="${fr({"--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`,Mo);var No=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`,No);var Po=`: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
+ `,Fo=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>`,Io=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>`,Lo=class extends H{static properties={url:{type:String},editable:{type:Boolean,reflect:!0},editing:{type:Boolean,reflect:!0},_copied:{state:!0}};static styles=z(Po);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?Zn(this.url):`Set repo`;return B`<span class="${e?`chip`:`chip empty`}" aria-hidden="true" inert>${Fo} <span class="label">${t}</span> <button type="button" class="edit-btn">${Io}</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?Zn(this.url):`Set repo`,n=e?this._copied?`chip copied`:`chip`:`chip empty`;return B`<span class="${n}" @click="${e?null:this._onEdit}">${Fo} ${e?this._slugLabel(t):B`<span class="label">${t}</span>`} <button type="button" class="edit-btn" aria-label="Edit repo URL" @click="${this._onEdit}">${Io}</button></span>`}if(this.url){let e=this._copied?`chip readonly copied`:`chip readonly`;return B`<span class="${e}">${Fo} ${this._slugLabel(Zn(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=Zn(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`,Lo);var Ro=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>`,zo=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>`,Bo=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>`,Vo=Cr(Dr.replace(`width="14" height="14"`,`width="12" height="12"`)),Ho=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>`,Uo=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>`,Wo=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>`,Go=[{key:`comment`,glyph:Ro,label:`commented`,stateKey:`filterComment`,hasKey:`hasComment`},{key:`fix`,glyph:zo,label:`fixed`,stateKey:`filterFix`,hasKey:`hasFix`},{key:`flag`,glyph:Bo,label:`flagged`,stateKey:`filterFlagged`,hasKey:`hasFlagged`},{key:`duplicates`,glyph:Vo,label:`rows with duplicates in other reports`,stateKey:`filterDuplicates`,hasKey:`hasDuplicates`},{key:`cross-context`,glyph:Ho,label:`rows across multiple repos or packages`,stateKey:`filterCrossContext`,hasKey:`hasCrossContext`},{key:`app-stacked`,glyph:Uo,label:`stacked App rows`,stateKey:`filterAppStacked`,hasKey:`hasAppStacked`},{key:`security`,glyph:Wo,label:`security-related rows`,stateKey:`filterSecurity`,hasKey:`hasSecurityContrast`}],Ko=new Set([`duplicates`,`cross-context`,`app-stacked`,`security`]),qo=class extends O{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=Go.filter(e=>this.group===`context`===Ko.has(e.key)).filter(e=>e.key===`security`?this.hasSecurityContrast:e.key===`duplicates`?!j.currentWorkspace&&(this.hasDuplicates||j[e.stateKey]):this[e.hasKey]||j[e.stateKey]);return e.length===0?V:B`${e.map(e=>{let t=j[e.stateKey],n=Ko.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`,qo);var Jo=[[`critical`,`Critical`],[`high`,`High`],[`medium`,`Medium`],[`low`,`Low`],[`high_bug`,`High bug`],[`bug`,`Bug`],[`informational`,`Info`]],Yo=class extends O{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):j.filterSeverities,t=Jo.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`,Yo);var Xo=[[`corrected`,`Corrected`,`Show corrected severities (application-specific re-ratings)`],[`original`,`Original`,V]],Zo=class extends O{createRenderRoot(){return this}connectedCallback(){super.connectedCallback(),X(this,{role:`group`,"aria-label":`Severity display mode`})}render(){let e=j.severityMode;return B`<span class="severity-mode-label">Severity</span><span class="severity-mode-chips">${Xo.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!==j.severityMode&&this.dispatchEvent(new CustomEvent(`severity-mode-change`,{detail:{mode:e},bubbles:!0,composed:!0}))}};customElements.define(`severity-mode-switch`,Zo);var Qo=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>`,$o=`Show underlying code findings`,es=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>`,ts=`Show only upstream dependency findings`,ns=class extends O{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=j.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=j.showRevalidation!==!1,r=n&&j.revalidationDetailed===!0,i=j.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="${$o}" data-tooltip="${$o}" ?disabled="${!n||i}" @click="${this._toggleDetail}">${Qo}</button>`:V}${this.canUpstream?B`<button type="button" class="${I({"revalidation-upstream":!0,on:a})}" aria-pressed="${String(a)}" aria-label="${ts}" data-tooltip="${ts}" ?disabled="${this.upstreamDisabled}" @click="${this._toggleUpstream}">${es}</button>`:V}`}_toggle=()=>{this.dispatchEvent(new CustomEvent(`revalidation-change`,{detail:{on:j.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:j.revalidationDetailed!==!0},bubbles:!0,composed:!0}))};_toggleUpstream=()=>{this.upstreamDisabled||this.dispatchEvent(new CustomEvent(`upstream-only-change`,{detail:{on:j.upstreamOnly!==!0},bubbles:!0,composed:!0}))}};customElements.define(`revalidation-switch`,ns);var rs=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>`,is=class extends O{createRenderRoot(){return this}render(){let e=j.currentView===`bundles`&&j.selectedBundle,t=!j.currentFile&&!e;return B`<button type="button" class="danger" ?disabled="${t}">${rs}<span>Delete current</span></button>`}};customElements.define(`sidebar-delete-current`,is);var as=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>`,os=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>`,ss={packages:{title:`Show packages`,icon:as,view:`packages`},repositories:{title:`Show repositories`,icon:os,view:`repositories`}},cs=class extends O{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=wo(`sidebar-view-button`,ss,this.kind);if(!e)return V;let t=j.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`,cs);var ls=[`invalid`,`deleted`],us={package:{stateKey:`packageSlideTriage`},repository:{stateKey:`repositorySlideTriage`}},ds=class extends O{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=wo(`slide-triage-tabs`,us,this.kind);if(!e)return V;let t=j[e.stateKey],n=ls.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`,ds);var fs=[[`own`,`Sources`],[`modules`,`Deps`]],ps=class extends O{createRenderRoot(){return this}connectedCallback(){super.connectedCallback(),X(this,{role:`group`,"aria-label":`Source filter`})}render(){return B`${fs.map(([e,t])=>{let n=j.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`,ps);var ms=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>`,hs=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>`,gs={findings:{stateKey:`filterInclude`,placeholder:`Search findings…`},files:{stateKey:`filesSearch`,placeholder:`Search files…`}},_s=class extends O{static properties={kind:{type:String}};createRenderRoot(){return this}constructor(){super(),this.kind=``}render(){let e=wo(`toolbar-search`,gs,this.kind);if(!e)return V;let t=j[e.stateKey];return B`${ms} <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=j.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}">${hs}</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`,_s);var vs=class extends O{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??xe,label:e==null?`(no repo)`:Zn(e),special:e==null}))];return B`<repository-selector variant="filter" label="Filter by repository" .options="${e}" .value="${j.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`,vs);var ys={"":{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`}},bs=class extends O{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(j.filterRevalidate)}" @change="${this._onChange}"><option value="" hidden ?selected="${j.filterRevalidate===``}"></option><option value="">Confidence</option>${this.options.map(e=>B`<option value="${e.value}" ?selected="${j.filterRevalidate===e.value}">${e.label}</option>`)}</select> ${this.hasPartial&&j.filterRevalidate===`confirmed`?this._partialChip():V}`}_partialChip(){let e=ys[j.filterPartial]??ys[``];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=or.indexOf(j.filterPartial),t=or[(e+1)%or.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`,bs);var xs=[[`none`,`none`,`unmarked`],[`red`,`r`,`red`],[`blue`,`b`,`blue`],[`green`,`g`,`green`],[`gray`,`x`,`gray`]],Ss=class extends O{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):j.filterColors;return xs.some(([t])=>(this.counts[t]??0)||e.has(t))?B`${xs.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`,Ss);var Cs=[`inprogress`,`fixed`,`invalid`,`deleted`,`ignored`],ws={graph:`graph2-triage-selector`,packages:`packages-triage-selector`},Ts={inprogress:`In progress`},Es=e=>Ts[e]??e.charAt(0).toUpperCase()+e.slice(1),Ds=class extends O{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??Cs,t=e.reduce((e,t)=>e+(this.counts[t]??0),0),n=this.variant?ws[this.variant]:null;this.variant&&n===void 0&&console.warn(`<triage-selector>: unknown variant ${JSON.stringify(this.variant)}; expected one of ${Object.keys(ws).map(e=>JSON.stringify(e)).join(`, `)} or "".`);for(let e of Object.values(ws))this.classList.toggle(e,e===n);let r=t===0&&!j.shownTriage;return this.classList.toggle(`is-empty`,r),r?V:B`${e.map(e=>{let t=this.counts[e]??0,n=j.shownTriage===e;if(t===0&&!n)return V;let r=Es(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`,Ds);var Os={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`${Cr(Er)}`},ks={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)`},As=[`kanban`,`focus`,`table`,`list`,`grouped`,`graph`],js=class extends O{static properties={modes:{type:String},kind:{type:String}};createRenderRoot(){return this}constructor(){super(),this.modes=As.join(`,`),this.kind=`findings`}connectedCallback(){super.connectedCallback(),X(this,{role:`group`,"aria-label":`View mode`})}render(){let e=this.kind===`files`?j.filesViewMode:j.viewMode,t=this.modes.split(`,`).map(e=>e.trim()).filter(e=>As.includes(e)),n=t.length>0?t:As;return B`${n.map(t=>B`<button type="button" class="${I({"view-mode-btn":!0,active:e===t})}" aria-label="${ks[t]}" aria-pressed="${String(e===t)}" @click="${()=>this._select(t,e)}">${Os[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`,js);var Ms=`/api/oauth/github/link`,Ns={"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.`},Ps=e=>new Date(e).toLocaleDateString(void 0,{month:`short`,day:`numeric`,year:`numeric`}),Fs=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||p()!==null}async _load(){let e=this._key;this._busy=!0,this._error=null;try{let t=await Ke({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,nn(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)=>Je({[e]:t},n,r)))}_unlink(e){return this._change((t,n)=>Xe(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> ${p()?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 ${Ps(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?Ns[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="${Ms}">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`,Fs);var Is=class extends O{createRenderRoot(){return this}render(){return j.reports.length>0&&j.currentView===`findings`&&j.viewMode!==`graph`&&j.viewMode!==`kanban`?B`<button type="button" class="toolbar-export-btn" aria-label="Download or print report" @click="${this._onClick}">${n}</button>`:V}_onClick=()=>{this.dispatchEvent(new CustomEvent(`download-requested`,{bubbles:!0,composed:!0}))}};customElements.define(`download-button`,Is);var Ls=class extends O{static styles=kr`.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(),sr(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&&(ar(),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`}},Rs={open:`Open`,draft:`Draft`,closed:`Closed`,merged:`Merged`,completed:`Completed`,not_planned:`Not planned`,duplicate:`Duplicate`,unknown:`Closed`},zs=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>`,Bs=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>`,Vs={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>`},Hs=class extends Ls{static properties={url:{type:String},compact:{type:Boolean,reflect:!0}};static styles=[Ls.styles,kr`: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=Gt(()=>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(!br(this.url))return B`${this.url}`;let e=Nt(this.url),t=!e&&Lt(this.url),n=e||t,r=Vt.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?zs:t?Vs[i]??Bs: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?`${Rs[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}`}">${Rs[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">${Cr(Or)}<span>${o}</span></span> <span class="${`status ${i}`}">${a}${r?Rs[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`,Hs);var Us=class extends Ls{static properties={finding:{attribute:!1},comment:{type:String}};static styles=[Ls.styles,z(o),kr`: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?se(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=M(),t=e?le(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=>je(e,Ie(e.body))):B`<div class="comment-body">${Ie(this.comment)}</div><div class="preview-footer"><button type="button" class="mark-comment edit-hint">Edit</button></div>`}</div>`}};customElements.define(`comment-preview`,Us);function Ws(e){let t=new Map;for(let[n,r]of j.triage)r[e]&&t.set(n,r[e]);return t}window.DeepView={get reports(){return j.reports.slice()},get groups(){return Yt()},get findings(){return Yt().flat()},get currentFile(){return j.currentFile},get currentWorkspace(){return j.currentWorkspace},triage:{get markers(){return Ws(`color`)},get triageState(){return Ws(`triage`)},get comments(){return Ws(`comment`)},get fixes(){return Ws(`fix`)},get flags(){return Ws(`flagged`)},get(e){let t=j.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(at())throw Error(`DeepView.triage.set: triage is read-only on this page`);let o=!1;if(t!==void 0&&(t===null||t===``?F(j.triage,e,{color:void 0})&&(o=!0):j.triage.get(e)?.color!==t&&(F(j.triage,e,{color:t}),o=!0)),n!==void 0){if(n===null||n===``||n===!1)F(j.triage,e,{triage:void 0})&&(o=!0);else if(n===`inprogress`||n===`fixed`||n===`invalid`||n===`deleted`||n===`ignored`)j.triage.get(e)?.triage!==n&&(F(j.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?j.triage.get(e)?.comment!==t&&(F(j.triage,e,{comment:t}),o=!0):F(j.triage,e,{comment:void 0})&&(o=!0)}if(i!==void 0){let t=i?String(i):``;t?j.triage.get(e)?.fix!==t&&(F(j.triage,e,{fix:t}),o=!0):F(j.triage,e,{fix:void 0})&&(o=!0)}if(a!==void 0){let t=a===null||a===``?void 0:!!a;j.triage.get(e)?.flagged!==t&&(F(j.triage,e,{flagged:t}),o=!0)}return o&&(await x(),A()),o}},forceManagedMode:pn,setTheme:Ua,get theme(){return Wa()},triageSync:_e,refresh(){A()},export(){return Fn()},compareReports(){return Nn()}};var Gs={default:pt.default,"claude-security":pt[`claude-security`],"codex-security":pt[`codex-security`],deepsec:pt.deepsec,piolium:pt.piolium,"markdown-generic":pt[`markdown-generic`],bundle:wr,workspace:Tr,links:Dr,github:Or},Ks={"lockfile-npm":zn(`npm`),"lockfile-ruby":Rn(`Gemfile.lock`),"lockfile-python":Rn(`pyproject.py`),"lockfile-cargo":zn(`cargo`),"lockfile-composer":zn(`composer`),"lockfile-soldeer":zn(`soldeer`)};for(let e of document.querySelectorAll(`.drop-supported-icon[data-icon]`)){let t=Gs[e.dataset.icon];t?e.innerHTML=tr(t):Object.hasOwn(Ks,e.dataset.icon)&&Ar(Ks[e.dataset.icon],e)}On(A),Re(A),En(A),_e.onStatusChange(A),vn(async(e,t)=>{j.currentWorkspace===e?await te(e):j.currentFile&&j.currentFile===t?await An(t):await k()}),xn(async()=>{await k(),j.currentView===`bundles`&&A()}),Mr(),Fr();async function qs(){let e=Ct();if(!e)return!1;try{history.replaceState(null,``,location.pathname)}catch{}let t;try{t=await In({encoded:e})}catch(e){return alert(`Couldn't open the share-link unlock prompt: ${e.message}`),!1}if(!t)return!1;let n=await we({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 te(n.workspace.id):await k(),!0}async function Js(){let e=dr();if(!e)return!1;try{history.replaceState(null,``,location.pathname)}catch{}let t=await an(e);return t.ok?!0:(alert(t.reason),!1)}var Ys=!1;async function Xs(){if(await _n(),!Ys&&(M()||!w()||ft())){Ys=!0;try{await Zs()}finally{yt.hidden=!1,$t()}}}async function Zs(){let e=Me(),t=()=>e===Me()&&!M();if(M()){await k();return}if(await It(),!t()||(be(),await Promise.all([k(),Pe().catch(e=>console.warn(`initial linked findings:`,e))]),!t())||await qs()||!t()||await Js()||!t())return;let n=Mt(Cn);if(n){if(n.startsWith(`wbs:`)||n.startsWith(`wrs:`))await d(n.slice(4),n.startsWith(`wrs:`)?`reports`:`bundles`);else if(n.startsWith(`ws:`)){let e=n.slice(3);b().some(t=>t.id===e)&&await te(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=mr.has(i)?i:`overview`;if((j.bundles??[]).some(e=>e.integrity===r)){let e=b().filter(e=>e.bundles.includes(r));f(r,a,{workspaceId:e.length===1?e[0].id:null}),A(),oe(r),await k()}}else{let e=await Tn();if(!t())return;let r=Ue(n);r&&e.includes(r.name)&&await An(r.name,void 0,{workspaceId:r.workspaceId})}}}var Qs=!1,$s=!1;document.addEventListener(`managed-client-mode-change`,()=>{Qs=!M()&&w()});function ec(e){$s||($s=!0,queueMicrotask(()=>{alert(e+` This tab will reload to refresh its state. Any unsaved edits in this tab will be lost.`),location.reload()}))}bt(async()=>{if(await _n(),M()){A();return}let e=Qs,t=w();if(Qs=t,A(),!Ys&&ft()){Xs().catch(e=>console.warn(`continueBoot:`,e));return}if(Ys&&t&&!ft()){ec(`Encryption was just enabled in another tab.`);return}Ys&&e&&!t&&!st()&&ec(`Encryption was disabled in another tab.`)}),window.addEventListener(`hashchange`,()=>{!Ys||M()||(async()=>{await qs()||await Js()})().catch(e=>console.warn(`deep-link hashchange:`,e))}),(async()=>{if(!await Gr()){await _n(),Qs=!M()&&w();try{let e=window.matchMedia?.(`(display-mode: window-controls-overlay)`),t=()=>{let t=!1;try{t=localStorage.getItem(`deepview.sidebarCollapsed`)===`1`}catch{}wt.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{}!M()&&w()&&!ft()||await Xs()}})();