@preventive/triage 1.0.0-alpha.49 → 1.0.0-alpha.50
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/common/managed/finding-detail.d.ts +2 -0
- package/common/managed/finding-detail.js +32 -0
- package/common/managed/github-agents.ts +6 -3
- package/common/managed/routes.js +14 -2
- package/out/activity.js +4 -4
- package/out/{chunk-ULIF7A7N.js → chunk-2WDZPXVL.js} +1 -1
- package/out/chunk-4XMP7YVH.js +36 -0
- package/out/chunk-6S2U2UYG.js +232 -0
- package/out/{chunk-IO7JTZ6O.js → chunk-75YLHBCM.js} +1 -1
- package/out/chunk-FC65TPUB.js +1 -0
- package/out/{chunk-O6M574JI.js → chunk-FKBXNUW4.js} +1 -1
- package/out/{chunk-PBSOL2SL.js → chunk-HTBYHSPG.js} +1 -1
- package/out/{chunk-SZD5CW5R.js → chunk-UK7RGJT6.js} +2 -2
- package/out/client-managed-import.js +1 -1
- package/out/client-managed.js +2 -2
- package/out/compare.js +14 -14
- package/out/dialogs.js +34 -30
- package/out/graph.js +1 -1
- package/out/index.html +6 -6
- package/out/scan.js +2 -2
- package/out/view.css +1 -1
- package/out/view.js +15 -15
- package/package.json +4 -1
- package/server-managed/agent-merges.ts +31 -136
- package/server-managed/app-agents.ts +4 -0
- package/server-managed/commit-coauthors.ts +46 -24
- package/server-managed/http.ts +115 -37
- package/server-managed/npm-kept.ts +8 -0
- package/server-managed/public-workspace.ts +2 -2
- package/server-managed/repository-agents.ts +189 -57
- package/server-managed/repository-history.ts +51 -13
- package/server-managed/repository-pulls.ts +156 -0
- package/server-managed/repository-pulse.ts +3 -2
- package/server-managed/repository-squashes.ts +29 -6
- package/server-managed/team-reports.ts +33 -18
- package/out/chunk-BC2UCLFJ.js +0 -1
- package/out/chunk-C2AVODGZ.js +0 -36
- package/out/chunk-JEAUAJVF.js +0 -232
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-ULIF7A7N.js";import{$b as o,$c as s,Ab as c,Ac as l,Ba as u,Bb as d,Bc as f,Bd as p,C as m,Cc as h,Cd as g,D as ee,Dc as te,Dd as ne,Ec as re,Ed as ie,Ee as ae,Fc as _,Fd as oe,Fe as se,G as ce,Ge as le,H as ue,He as de,I as fe,Ib as pe,Ie as me,K as he,Kb as ge,Kd as _e,L as v,Ld as ve,Mb as ye,N as be,Nc as xe,Ob as Se,Oc as Ce,P as we,Pb as Te,Q as Ee,Qb as De,R as Oe,Rb as ke,S as Ae,Sb as je,T as y,Tb as Me,Tc as Ne,Ua as Pe,Ub as Fe,Uc as Ie,V as Le,Va as Re,Vb as ze,Vc as Be,Wa as Ve,Wc as He,Xa as Ue,Xb as b,Xc as We,Ya as Ge,Yb as Ke,Yc as qe,Zb as Je,Zc as Ye,_b as Xe,ac as Ze,ad as Qe,bc as $e,bd as et,be as tt,c as nt,cb as rt,cc as x,ce as it,d as S,db as at,dc as ot,de as st,e as ct,eb as C,ec as lt,f as ut,fc as dt,fe as ft,gb as pt,gc as w,ge as mt,gf as ht,h as gt,hb as T,hc as _t,he as vt,hf as yt,i as bt,ia as xt,ib as St,ic as Ct,ie as E,if as wt,ja as Tt,jb as Et,jc as Dt,je as Ot,jf as D,k as kt,ka as At,kc as jt,ke as Mt,kf as Nt,l as Pt,la as Ft,lb as It,lc as Lt,le as Rt,lf as zt,m as Bt,ma as Vt,mb as Ht,mc as Ut,me as O,na as Wt,nc as Gt,nd as Kt,ne as qt,o as Jt,oa as Yt,oc as Xt,oe as Zt,of as Qt,p as $t,pc as en,pe as tn,pf as nn,q as rn,qc as an,qe as on,qf as sn,r as cn,ra as ln,rc as un,rf as dn,s as fn,sc as k,sf as pn,t as mn,tc as A,te as hn,ue as gn,v as _n,vb as vn,ve as yn,w as j,wb as bn,x as M,xb as xn,xc as Sn,y as Cn,yb as wn,yc as Tn,zb as En,zc as Dn}from"./chunk-JEAUAJVF.js";import"./chunk-JCIIBLKR.js";import"./chunk-VH4XMZIW.js";import{d as On}from"./chunk-O6M574JI.js";import{D as kn,L as An,N as jn,T as Mn,Y as Nn,_ as N,b as Pn,n as Fn,t as In,u as Ln,v as Rn,x as zn,y as Bn}from"./chunk-6LNQTKAV.js";import{f as Vn,g as Hn}from"./chunk-7VAWINQF.js";import"./chunk-NRPC74AM.js";import"./chunk-7BKKYVWR.js";import{f as P}from"./chunk-7C7DWL7I.js";import"./chunk-PNHBZGDD.js";import"./chunk-VFWMQ3LG.js";import{C as Un,D as Wn,J as Gn,K as Kn,M as qn,S as Jn,V as Yn,W as Xn,Z as Zn,_ as Qn,a as F,b as $n,d as I,e as L,ea as er,f as tr,ga as nr,ia as rr,j as ir,r as ar,s as or,u as sr}from"./chunk-C2AVODGZ.js";import{g as cr}from"./chunk-IO7JTZ6O.js";import"./chunk-WCPJDAYA.js";import"./chunk-IYPY47MC.js";import{a as lr,d as ur}from"./chunk-PWFUOLZK.js";import{a as dr,g as fr,h as pr,n as mr,o as hr,q as gr}from"./chunk-BC2UCLFJ.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 R,b as Er,c as z,g as B,i as Dr,j as V}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(){d(async(e,t,n)=>{let r=we(e);try{return await vn(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 It{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 z`<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 Ht(`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 Cn()}catch{return!0}if(e.length>0)return!0;try{if(v().length>0)return!0}catch{return!0}try{return await m()}catch{return!0}}var Br=class extends V{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=()=>z`<a class="om-link" href="${Nr}" target="_blank" rel="noopener noreferrer">${Nr}</a>`;return z`<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?z`<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>`:z`<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 H=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(H)return H;H=document.createElement(`div`),H.id=`lock-overlay`,H.setAttribute(`role`,`dialog`),H.setAttribute(`aria-modal`,`true`),H.setAttribute(`aria-label`,`Unlock DeepView`),Dr(z`<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>`,H);let e=H.querySelector(`button`),t=H.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 bt({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`}}}),H.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,e as n,f as r,g as i,i as a}from"./chunk-2WDZPXVL.js";import{$b as o,$c as s,Ab as c,Ac as l,Ba as u,Bb as d,Bc as f,Bd as p,C as m,Cc as h,Cd as g,D as ee,Dc as te,Dd as ne,Ec as re,Ed as ie,Fc as _,Fd as ae,G as oe,H as se,I as ce,Ib as le,Ie as ue,Je as de,K as fe,Kb as pe,Kd as me,Ke as he,L as v,Ld as ge,Le as _e,Mb as ve,Me as ye,N as be,Nc as xe,Ob as Se,Oc as Ce,P as we,Pb as Te,Q as Ee,Qb as De,R as Oe,Rb as ke,S as Ae,Sb as je,T as y,Tb as Me,Tc as Ne,Ua as Pe,Ub as Fe,Uc as Ie,V as Le,Va as Re,Vb as ze,Vc as Be,Wa as Ve,Wc as He,Xa as Ue,Xb as We,Xc as Ge,Ya as Ke,Yb as qe,Yc as Je,Zb as Ye,Zc as Xe,_b as Ze,ac as Qe,ad as $e,bc as et,bd as tt,c as nt,cb as rt,cc as b,d as x,db as it,dc as at,e as ot,eb as S,ec as st,ee as ct,f as lt,fc as ut,fe as dt,gb as ft,gc as C,ge as pt,h as mt,hb as w,hc as ht,i as gt,ia as _t,ib as vt,ic as yt,ie as bt,ja as xt,jb as St,jc as Ct,je as wt,k as Tt,ka as Et,kc as Dt,ke as Ot,kf as kt,l as At,la as jt,lb as Mt,lc as Nt,le as T,lf as Pt,m as Ft,ma as It,mb as Lt,mc as Rt,me as zt,mf as Bt,na as Vt,nc as Ht,nd as Ut,ne as Wt,nf as E,o as Gt,oa as Kt,oc as qt,oe as Jt,of as Yt,p as Xt,pc as Zt,pe as Qt,pf as $t,q as en,qc as tn,qe as D,r as nn,ra as rn,rc as an,re as on,s as sn,sc as O,se as cn,sf as ln,t as un,tc as k,te as dn,tf as fn,ue as pn,uf as mn,v as hn,vb as gn,vf as _n,w as A,wb as vn,wf as yn,x as j,xb as bn,xc as xn,xe as Sn,y as Cn,yb as wn,yc as Tn,ye as En,zb as Dn,zc as On,ze as kn}from"./chunk-6S2U2UYG.js";import"./chunk-JCIIBLKR.js";import"./chunk-VH4XMZIW.js";import{d as An}from"./chunk-FKBXNUW4.js";import{D as jn,L as Mn,N as Nn,T as Pn,Y as Fn,_ as M,b as In,n as Ln,t as Rn,u as zn,v as Bn,x as Vn,y as Hn}from"./chunk-6LNQTKAV.js";import{f as Un,g as Wn}from"./chunk-7VAWINQF.js";import"./chunk-NRPC74AM.js";import"./chunk-7BKKYVWR.js";import{f as N}from"./chunk-7C7DWL7I.js";import"./chunk-PNHBZGDD.js";import"./chunk-VFWMQ3LG.js";import{$ as Gn,C as Kn,D as qn,K as Jn,L as Yn,N as Xn,T as Zn,W as Qn,X as $n,_ as er,a as P,b as tr,d as F,e as I,f as nr,fa as rr,ha as ir,j as ar,ja as or,r as sr,s as cr,u as lr}from"./chunk-4XMP7YVH.js";import{g as ur}from"./chunk-75YLHBCM.js";import"./chunk-WCPJDAYA.js";import"./chunk-IYPY47MC.js";import{a as dr,d as fr}from"./chunk-PWFUOLZK.js";import{a as pr,g as mr,h as hr,n as gr,p as _r,r as vr}from"./chunk-FC65TPUB.js";import{B as yr,I as br,l as xr}from"./chunk-SXV2T5C4.js";import{d as Sr,i as Cr,k as wr,l as Tr,q as Er,w as Dr}from"./chunk-WFYLMF6Z.js";import"./chunk-C4Z6ZBXV.js";import{a as L,b as Or,c as R,g as z,i as kr,j as B}from"./chunk-2XUEZHIP.js";import"./chunk-TUII34K2.js";import"./chunk-OOJM4CTU.js";var Ar={attach:{title:`Synced triage on report attach`,intro:`have triage from your workspace that disagrees with your local view on`,trailingNote:`Other findings in this report whose chain value didn't conflict were applied automatically; this list only covers disagreements. Pick which side to keep.`,importedSideLabel:`Apply from chain`,applyButton:`Apply`},chain:{title:`Triage conflict from peer update`,intro:`were changed by a peer (or by another tab) in a way that disagrees with your local triage on`,trailingNote:`Other findings whose remote value didn't conflict were applied automatically; this list only covers disagreements. Pick which side to keep for each — a "keep current" pick re-publishes your local value to the chain on your next save.`,importedSideLabel:`Apply from chain`,applyButton:`Apply`}};function jr(){d(async(e,t,n)=>{let r=we(e);try{return await gn(e,r,Ar[n]??Ar.attach)}catch{let t=e.length;return alert(`${n===`attach`?`A report attach`:`A workspace sync`} had ${t} triage disagreement${t===1?``:`s`} with your local view. Kept your local values because another dialog is open. ${n===`attach`?`Detach and re-attach the report to pick again.`:`Your local values will re-publish to the chain on the next change.`}`),null}})}var Mr=class extends Mt{static properties={retry:{type:Boolean},_value:{state:!0}};constructor(){super(),this.retry=!1,this._value=``}_finish(e){this._value=``,super._finish(e)}_onCancel=()=>this._finish(null);_onInput=e=>{this._value=e.target.value};_onSubmit=()=>{let e=this._value??``;e&&this._finish(e)};_onKeydown=e=>{e.key===`Enter`&&(e.preventDefault(),this._onSubmit())};render(){let e=(this._value??``).length>0,t=this.retry?`That password didn't match. Try again, or cancel to leave the workspace unsynced for now.`:`This sync server requires a password before it accepts a new workspace. Enter it to create the workspace on the server.`;return R`<dialog @close="${this._onClose}"><header><h3>Sync server password</h3></header><p class="nwd-intro">${t}</p><input type="password" class="nwd-input" placeholder="Password" autocomplete="off" data-1p-ignore="true" data-lpignore="true" data-bwignore="true" data-form-type="other" name="dv-sync-auth" maxlength="4096" .value="${this._value}" @input="${this._onInput}" @keydown="${this._onKeydown}"><footer class="nwd-actions"><span class="nwd-spacer"></span> <button type="button" @click="${this._onCancel}">Cancel</button> <button type="button" class="primary" ?disabled="${!e}" @click="${this._onSubmit}">${this.retry?`Retry`:`Authenticate`}</button></footer></dialog>`}};customElements.define(`sync-auth-dialog`,Mr);function Nr({retry:e=!1}={}){return Lt(`sync-auth-dialog`,{retry:!!e})}function Pr(){c(async({retry:e})=>{try{return await Nr({retry:e})}catch(e){return console.warn(`Sync auth dialog failed to open:`,e),null}})}var Fr=`https://triage.space/`,Ir=[{hostname:`deepaudit.dev`,pathPrefix:`/`,supportsSync:!0},{hostname:`chalker.github.io`,pathPrefix:`/deepview/`,supportsSync:!1}];function Lr(){for(let e of Ir)if(location.hostname===e.hostname&&location.pathname.startsWith(e.pathPrefix))return e;return null}var Rr=[`deepview.triage`,`deepview.triage.pending`],zr=`deepview.repoUrls`;function Br(){try{for(let e of Rr)if(localStorage.getItem(e))return!0}catch{return!0}try{let e=localStorage.getItem(zr);if(e){let t=JSON.parse(e);if(t&&typeof t==`object`&&Object.keys(t).length>0)return!0}}catch{return!0}return!1}async function Vr(){if(Br())return!0;let e=[];try{e=await Cn()}catch{return!0}if(e.length>0)return!0;try{if(v().length>0)return!0}catch{return!0}try{return await m()}catch{return!0}}var Hr=class extends B{static properties={supportsSync:{attribute:!1}};createRenderRoot(){return this}constructor(){super(),this.supportsSync=!1}firstUpdated(){let e=this.querySelector(`dialog`);e&&e.showModal();let t=this.querySelector(`button.om-stay`);t&&t.focus()}_finish(e){if(this._settled)return;this._settled=!0;let t=this.querySelector(`dialog`);t&&t.close(),this.dispatchEvent(new CustomEvent(`resolve`,{detail:e}))}_onClose=()=>this._finish(!1);_onStay=()=>this._finish(!1);_onMigrate=()=>this._finish(!0);render(){let e=()=>R`<a class="om-link" href="${Fr}" target="_blank" rel="noopener noreferrer">${Fr}</a>`;return R`<dialog class="origin-migration-dialog" @close="${this._onClose}"><header class="om-head"><h3>This deepview build has moved</h3><p><code>${location.host}${location.pathname}</code> has moved to ${e()}.</p></header><section class="om-body"><p>Workspaces and reports don't migrate automatically — they live in this origin's browser storage (OPFS where available, localStorage as a fallback) and have to be re-imported on ${e()}.</p>${this.supportsSync?R`<p>For each workspace, use the <strong>Export workspace</strong> button in the sidebar to download a <code>.gz</code> bundle (workspace + its reports + its triage), then drop that file on ${e()}. Workspaces that had sync configured will pick their triage state back up from the sync server once you re-import them with the same key.</p><p>For triage attached to loose reports (or as a top-up after re-importing workspaces), call <code>DeepView.export()</code> in the browser console — that downloads just the triage entries plus saved repo URLs, no reports or workspaces.</p>`:R`<p>This build has no sync layer. For each workspace, use the <strong>Export workspace</strong> button in the sidebar to download a <code>.gz</code> bundle (workspace + its reports + its triage), then drop that file on ${e()}.</p><p>For triage attached to loose reports, call <code>DeepView.export()</code> in the browser console — that downloads just the triage entries plus saved repo URLs, no reports or workspaces. Reports themselves need to be re-dropped from their original JSON on the new origin.</p>`}</section><footer class="om-actions"><button type="button" class="om-stay" @click="${this._onStay}">Keep editing on ${location.host}</button> <button type="button" class="primary om-go" @click="${this._onMigrate}">Switch to triage.space</button></footer></dialog>`}};customElements.define(`origin-migration-dialog`,Hr);function Ur(e){return new Promise(t=>{let n=document.createElement(`origin-migration-dialog`);n.supportsSync=e.supportsSync,n.addEventListener(`resolve`,e=>{n.remove(),t(!!e.detail)}),document.body.append(n)})}async function Wr(){let e=Lr();return e?await Vr()?await Ur(e)?(location.assign(Fr),!0):!1:(location.replace(Fr),!0):!1}var V=null,Gr=!1,Kr=null;function qr(e){if(!e)return`Could not unlock. Try again.`;switch(e.name??``){case`NotAllowedError`:case`AbortError`:return``;case`SecurityError`:return`The site identity does not match the one this passkey was registered for. If you opened DeepView through a different URL (different subdomain, different port), reload via the original URL.`;case`InvalidStateError`:return`The passkey state on this device is inconsistent. Try reloading the page or removing and re-creating the passkey.`;case`NotSupportedError`:return`This browser does not support the WebAuthn PRF extension this site needs. Try a recent Chrome, Safari, or Edge with a platform authenticator.`;case`NetworkError`:return`A network error prevented the passkey from completing. Check your connection and try again.`;case`UnknownError`:return`The authenticator returned an unknown error. Try again, or use a different passkey.`;default:{let t=e.message??String(e);return t.length>200?t.slice(0,197)+`…`:t}}}function Jr(){if(V)return V;V=document.createElement(`div`),V.id=`lock-overlay`,V.setAttribute(`role`,`dialog`),V.setAttribute(`aria-modal`,`true`),V.setAttribute(`aria-label`,`Unlock DeepView`),kr(R`<div class="lock-overlay-card"><div class="lock-overlay-icon" aria-hidden="true"><svg viewBox="0 0 32 32" width="40" height="40" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="7" y="15" width="18" height="12" rx="1.5"/><path d="M11 15v-4a5 5 0 0 1 10 0v4"/></svg></div><h2 class="lock-overlay-title">DeepView is locked</h2><p class="lock-overlay-body">Your triage data and reports are encrypted with a passkey on this device. Unlock to continue.</p><p class="lock-overlay-error" hidden></p><button type="button" class="lock-overlay-button primary">Unlock with passkey</button><p class="lock-overlay-footer">Lost your passkey? <a href="#" class="lock-overlay-wipe">Wipe local data and start over</a></p></div>`,V);let e=V.querySelector(`button`),t=V.querySelector(`.lock-overlay-error`);return e.addEventListener(`click`,async()=>{if(!Gr&&Yr()){Gr=!0,t.hidden=!0,t.textContent=``,e.disabled=!0,e.textContent=`Waiting…`,Kr=new AbortController;try{await gt({signal:Kr.signal})}catch(e){let n=qr(e);t.textContent=n,t.hidden=!n}finally{Gr=!1,Kr=null,e.disabled=!1,e.textContent=`Unlock with passkey`}}}),V.querySelector(`.lock-overlay-wipe`).addEventListener(`click`,async e=>{if(e.preventDefault(),!Gr&&Yr()&&confirm(`Wipe ALL local DeepView data and start over?
|
|
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 kt()}catch(e){alert(`Wipe failed: ${e?.message??e}. Try again or clear localStorage manually via DevTools.`);return}location.reload()}}),document.body.append(H),H}function qr(){return M()||!ut()?!1:S()&&!ct()}async function Jr(){if(await Mt(),qr()){let e=Kr();e.hidden=!1;let t=e.querySelector(`button`);t&&t.focus()}else if(H&&(H.hidden=!0,Wr))try{Wr.abort()}catch{}}gt(Jr),document.addEventListener(`managed-client-mode-change`,Jr),Jr();var Yr=2;function Xr(e,t){j.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($t,String(j.focusSplit))}catch{}}function Qr(e,t){Xr(e,mn(t)),Zr()}function $r(e,t){Qr(e,j.focusSplit+t)}function ei(e){Qr(e,fn)}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,mn((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 ze(Fe(e)).map(e=>t?[w(e)]:dt(e))}var ri={annotation(e){let t=ot(e),n=lt(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,_t(e)),evidence:(e,t,n)=>Yn(e,t,_t(t),n),commit:e=>Zn(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&&!Wn(t.file)&&i.add(t.repo.github);return i.size===1?[...i][0]:i.size===0&&!j.currentWorkspace&&j.repoUrl?j.repoUrl:null}function ai(e){return e.replace(/\.(?:json|md|codex)$/iu,``)}function oi(){return j.currentWorkspace?v().find(e=>e.id===j.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]):Gn(n).replace(/[-_. ]+$/u,``)||`${n.length} reports`}function ci({oneSamplePerGroup:e=!1}={}){let t=j.reports,a=De(),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?j.severityMode:null,revalidation:f?j.showRevalidation:null,revalidationDetail:f&&j.showRevalidation!==!1?o():null},filters:n(a),counts:{included:c.length,total:s.length},groups:c},ri)}function li(){let e=oi(),t=j.reports.map(e=>e.fileName),n=``;return e?n=e.name:t.length===1?n=ai(t[0]):t.length>1&&(n=ai(Gn(t))),n=n.replaceAll(/[\\/:*?"<>|\p{Cc}]/gu,`-`).trim(),`${n||`deepview-report`}.md`}function ui(e){if(j.reports.length===0)return;let t=new Blob([ci(e)],{type:`text/markdown;charset=utf-8`});Et(t,li())}function di(e){return!M()||!Tt.active||!j.currentManagedTeam?null:Tt.navigate(gr({view:e,teamId:j.currentManagedTeam,reportId:j.currentManagedReport},j.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=ue();if(e&&(j.currentView===`findings`||j.currentView===`files`)){pi||(pi=!0,e.catch(()=>{}).finally(()=>{pi=!1,mi()}));return}j.findingIndexTick++,j.currentView===`bundles`&&j.selectedBundle||j.currentView===`packages`||j.currentView===`repositories`||j.currentView===`links`?D():(j.currentView===`findings`||j.currentView===`files`)&&(E().catch(()=>{}),D())}var hi=!1;fe(()=>{j.currentView!==`findings`&&j.currentView!==`files`&&!b()||hi||(hi=!0,queueMicrotask(()=>{hi=!1,(j.currentView===`findings`||j.currentView===`files`||b())&&(j.bundleHashTick++,D())}))}),Ee(()=>{j.linksTick++,D()});function gi(){j.currentView===`bundles`&&j.bundleDetailsTab===`graph`?le():yt()}function _i(){j.currentView===`bundles`&&j.bundleDetailsTab===`graph`?de():wt()}function vi(){let e=document.querySelector(`.bundle-source-code-wrap`),t=e?.scrollTop??0,n=e?.scrollLeft??0;D();let r=document.querySelector(`.bundle-source-code-wrap`);r&&(r.scrollTop=t,r.scrollLeft=n)}function U(e){let t=document.querySelector(e)?.scrollTop??0;D();let n=document.querySelector(e);n&&(n.scrollTop=t)}function W(){j.viewMode===`table`?U(`.findings-table-list`):D()}var yi=0;function bi(){yi||=requestAnimationFrame(()=>{yi=0,D()})}function G(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=g(j.bundleCodeHistory,j.bundleDetails?.integrity??null,j.bundleSourceFile);j.bundleCodeHistory=ne(t,e),j.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(!M()||Pn()||j.currentView!==`bundles`||j.bundleDetailsTab!==`code`)return;let e=hr(new URL(location.href));if(e?.bundleTab!==`code`||e.file==null||e.file!==Qe(j)?.file)return;let t=j.bundleSourceFile,n=e.endLine??e.line;j.bundleSourceTargetLine=e.line&&n<=Hn(Vn(j.bundleDetails).get(t)??``)?{bundle:j.bundleDetails?.integrity??null,path:t,line:e.line,...e.endLine?{end:e.endLine}:{}}:null,D(),j.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=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 vi(),!0}let n=e.target.closest(`[data-bundle-source-wrap]`);if(n){let e=Kt(n);j.bundleSourceWrap=!j.bundleSourceWrap;try{localStorage.setItem(cn,String(j.bundleSourceWrap))}catch{}return D(),queueMicrotask(e),!0}if(e.target.closest(`[data-bundle-source-pretty]`))return p(),D(),Ti(),!0;if(e.target.closest(`[data-bundle-source-lockfile]`))return oe(),D(),!0;let r=e.target.closest(`[data-bundle-code-history]`);if(r){let e=g(j.bundleCodeHistory,j.bundleDetails?.integrity??null,j.bundleSourceFile),t=ie(e,r.dataset.bundleCodeHistory===`back`?-1:1),n=t.files[t.at];return t.at===e.at||!Vn(j.bundleDetails).has(n)||(j.bundleCodeHistory=t,j.bundleSourceFile=n,j.bundleSourceFindingIdx=null,j.bundleCodeSearchMode=`files`,j.bundleCodeSearchQuery=``,U(`.bundle-code-rail-body`),me(),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=h(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(j.bundleDetails).has(t)&&(j.currentView===`bundles`&&j.bundleDetailsTab===`search`&&(nn(`code`,{preserveSource:!0}),j.selectedBundle&&O(j.selectedBundle,`code`,{push:!0})),wi(t),j.bundleSourceFindingIdx=null,j.bundleDetailsTab===`code`&&(j.bundleCodeSearchMode=`files`,j.bundleCodeSearchQuery=``),U(`.bundle-code-rail-body`),me(),Ti(!0)),!0}if(e.target.classList?.contains(`bundle-source-overlay`)||e.target.closest(`[data-action="bundle-source-close"]`))return j.bundleSourceFile&&(nn(j.bundleDetailsTab),D()),!0;if(e.target.closest(`[data-action="bundle-source-panel-close"]`))return j.bundleSourceFindingIdx!=null&&(j.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)&&(j.bundleSourceFindingIdx=j.bundleSourceFindingIdx===e?null:e,vi()),!0}return!1}function Di(e){let t=Hi(e);if(!t)return null;let n=w(t);return Qn(n,Ct(n))}T.addEventListener(`click`,e=>{if(G(e,`[data-finding-history]`)){let t=Hi(e),n=t&&w(t);At(n)&&Re(n);return}let t=G(e,`[data-code-nav-file]`);if(t){Ui(Hi(e),{integrity:t.dataset.codeNavIntegrity,file:t.dataset.codeNavFile,range:Jn(t.dataset.codeNavLine)});return}let n=G(e,`[data-code-history]`);if(n){Gi(n.dataset.codeHistory===`forward`?1:-1);return}let r=G(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,D();return}let i=G(e,`[data-finding-code-report]`);if(i&&M()){zn({reportId:i.dataset.findingCodeReport,file:i.dataset.findingCodeFile,line:i.dataset.findingCodeLine});return}let a=G(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)&&xi(r,{block:`start`,behavior:`instant`})};if(j.selectedBundle===e&&j.bundleDetails?.integrity===e){D(),pn().then(()=>(j.selectedBundle===e&&j.bundleSourceFile===t&&i(),null));return}j.selectedBundle=e,j.selectedBundleWorkspace=null,j.bundleDetails=null,D(),(async()=>(await dn(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),D();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,D();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,D();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,D();return}if(e.target.closest(`[data-deselect-package]`)){j.selectedPackage=null,j.selectedPackageVersion=null,D();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,D());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),D();return}let d=G(e,`[data-links-report][data-links-finding]`);if(d){e.preventDefault();let{linksReport:t,linksFinding:n,managedReport:r}=d.dataset;t&&n&&(async()=>{let e=await vt(n,t,r);e.ok||alert(e.reason)})().catch(e=>console.warn(`links: reveal in report failed:`,e));return}let f=e.target.closest(`[data-package-report]`);if(f){let e=f.dataset.packageReport;e&&qt(e);return}let p=e.target.closest(`[data-select-repository]`);if(p){let e=p.dataset.selectRepository;if(j.selectedRepository===e)return;j.selectedRepository=e,j.repositoryDetailsTab=`overview`,j.repositorySlideTriage=null,j.repositorySlideTransient=!1,D();return}if(e.target.closest(`[data-deselect-repository]`)){j.selectedRepository=null,D();return}let m=e.target.closest(`[data-repository-tab]`);if(m){let e=m.dataset.repositoryTab;(e===`overview`||e===`issues`)&&j.repositoryDetailsTab!==e&&(j.repositoryDetailsTab=e,D());return}if(e.target.closest(`[data-action="repository-slide-back"]`)){j.repositoryDetailsTab=`overview`,j.repositorySlideTriage=null,j.repositorySlideTransient&&(j.selectedRepository=null,j.repositorySlideTransient=!1),D();return}let h=e.target.closest(`[data-bundle-tab]`);if(h){let e=h.dataset.bundleTab;if(dr.has(e)||e===`review`&&j.bundleDetails?.npm||mr.has(e)&&j.bundleDetails?.repository){if(e===j.bundleDetailsTab){j.selectedBundle&&O(j.selectedBundle,e);return}j.bundleDetailsTab===`graph`&&e!==`graph`&&(L(),document.body.classList.remove(`report-fullscreen`)),et(j,e,e=>_e(e)?.oldVersion??null),nn(e),j.selectedBundle&&O(j.selectedBundle,e,{push:!0}),D(),e===`code`&&pn().then(()=>(j.bundleDetailsTab===`code`&&me(),null))}return}if(e.target.closest(`[data-bundle-retry-sources]`)){j.bundleDetails&&delete j.bundleDetails.sourceError,D();return}let g=e.target.closest(`[data-bundle-download]`);if(g){let e=g.dataset.bundleDownload,t=(j.bundles??[]).find(t=>t.integrity===e);if(!t)return;(async()=>{let{confirmed:n}=await In({name:t.name,encrypted:S()});if(n)try{let n=await ee(e);Et(new Blob([n],{type:`application/octet-stream`}),t.name)}catch(e){alert(`Failed to download bundle: ${e.message}`)}})();return}let ne=e.target.closest(`[data-bundle-export-sbom]`);if(ne){let e=ne.dataset.bundleExportSbom,t=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?gn(t,n):yn(t,n),a=`${hn(n.name)}.${r?`cdx`:`spdx`}.json`;Et(new Blob([i],{type:`application/json`}),a)}catch(t){alert(`Failed to export ${e===`cyclonedx`?`CycloneDX`:`SPDX`}: ${t.message}`)}return}if(G(e,`[data-bundle-search-context]`)){j.bundleSearchContext=!j.bundleSearchContext,U(`.bundle-search-results`);return}if(e.target.closest(`[data-advisories-consent]`)){ae(),D();return}if(e.target.closest(`[data-advisories-retry]`)){se(j.bundleDetails,D).catch(()=>{}),D();return}let re=e.target.closest(`[data-bundle-issue-report]`);if(re){let e=re.dataset.bundleIssueReport;e&&qt(e);return}if(Ei(e))return;let ie=e.target.closest(`[data-bundle-code-issue-step]`);if(ie){let e=ie.closest(`[data-bundle-code-issue-order]`),t=null;try{t=JSON.parse(e?.dataset.bundleCodeIssueOrder??`null`)}catch{}if(Array.isArray(t)&&t.length>0){let e=ie.dataset.bundleCodeIssueStep===`-1`?-1:1,n=t.findIndex(e=>e.idx===j.bundleSourceFindingIdx),r=n===-1?e>0?t[0]:t.at(-1):t[(n+e+t.length)%t.length];j.bundleSourceFindingIdx=r.idx,vi(),r.line>0&&xi(r.line,{block:`center`,behavior:`smooth`})}return}let _=G(e,`[data-bundle-view-source]`);if(_){let e=_.dataset.bundleViewSource;if(!e)return;let t=_.dataset.bundleViewFindingIdx,n=t===void 0?null:parseInt(t,10),r=_.dataset.bundleViewLine,i=r?parseInt(r,10):null;Number.isFinite(i)&&(j.bundleSourcePretty=!1,j.bundleSourceLockfile=!1);let a=j.bundleSourceFile!==e;if(wi(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,_.closest(`.bundle-code-rail`)?U(`.bundle-code-rail-body`):_.closest(`.bundle-search-results`)?U(`.bundle-search-results`):_.closest(`.bundles-slide-body`)?U(`.bundles-slide-body`):D(),Number.isFinite(i)){let t=_.dataset.bundleViewScrollBlock||`center`;pn().then(()=>(j.bundleSourceFile===e&&xi(i,{block:t,behavior:`smooth`}),null))}return}let oe=e.target.closest(`[data-action="workspace-reports"], [data-action="workspace-bundles"], [data-action="workspace-repositories"], [data-action="workspace-dependencies"]`);if(oe){let e=oe.dataset.action.slice(10);j.currentView!==`workspace-${e}`&&Zt(j.currentManagedTeam??j.currentWorkspace,e);return}if(e.target.closest(`[data-action="workspace-findings"]`)){if(j.currentView===`findings`)return;if(j.currentView===`files`){if(di(`findings`))return;j.currentView=`findings`,j.filesSelectedFile=null,document.body.classList.remove(`report-fullscreen`),D()}else M()?tn(j.managedTeams.find(e=>e.id===j.currentManagedTeam)):on(j.currentWorkspace);return}let ce=e.target.closest(`[data-workspace-report]`);if(ce){M()?tn(j.managedTeams.find(e=>e.id===j.currentManagedTeam),ce.dataset.workspaceReport):qt(ce.dataset.workspaceReport,void 0,{workspaceId:j.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(M())Tt.navigate(gr({view:`bundles`,teamId:j.currentManagedTeam,bundleId:ue.dataset.workspaceBundle,bundleTab:`overview`},j.managedTeams));else{let e=ue.dataset.workspaceBundle;Qt(e,`overview`,{workspaceId:j.currentWorkspace}),O(e,`overview`),D(),E(),dn(e)}return}if(e.target.closest(`[data-action="toggle-files"]`)){if(di(j.currentView===`files`?`findings`:`files`))return;j.currentView===`files`?j.currentView=`findings`:(j.viewMode===`graph`&&L(),j.currentView=`files`),document.body.classList.remove(`report-fullscreen`),D();return}let de=G(e,`[data-g2-pkg]`);if(de){let e=de.dataset.g2Pkg;I.solo=I.solo===e?null:e,I.solo&&(I.selected=null),gi(),_i(),I.graphState?.requestDraw?.();return}let fe=G(e,`[data-g2-select]`);if(fe){I.selected=fe.dataset.g2Select,gi(),I.graphState?.requestDraw?.();return}let pe=G(e,`[data-g2-top-pkgs]`);if(pe){I.topPkgsTab=pe.dataset.g2TopPkgs,_i();return}let he=G(e,`[data-g2-jump-findings]`);if(he){if(j.currentView===`bundles`){j.bundleDetailsTab===`graph`&&L(),nn(`issues`),j.selectedBundle&&O(j.selectedBundle,`issues`,{push:!0}),D();return}if(ye(),j.filterConfMin=0,j.filterInclude=he.dataset.g2JumpFindings,j.currentView=`findings`,j.viewMode===`graph`&&(j.viewMode=`table`),L(),di(`findings`))return;D();return}let ge=G(e,`[data-g2-jump-file]`);if(ge){let e=ge.dataset.g2JumpFile;L();let t=()=>requestAnimationFrame(()=>{let t=document.querySelector(`#${rr(e)}`);t&&t.scrollIntoView({behavior:`smooth`,block:`start`})}),n=di(`files`);if(n){n.then(e=>e?t():void 0);return}j.currentView=`files`,D(),t();return}if(G(e,`#g2-path-filter-clear`)){I.pathFilter=``;let e=document.querySelector(`graph-layout`)?.shadowRoot?.querySelector(`#g2-path-filter`);e&&(e.value=``),I.graphState?.requestDraw?.();return}if(G(e,`#g2-fullscreen`)){document.body.classList.toggle(`report-fullscreen`);return}if(G(e,`[data-g2-show-all]`)){I.showAll=!I.showAll,I.layoutCache=null,I.selected=null,L(),D();return}if(G(e,`[data-g2-packages-view]`)){I.bundleLayout===`flow`?I.flowPackagesView=!I.flowPackagesView:I.bundleLayout===`dependencies`?(I.dependencyPackagesView=!I.dependencyPackagesView,I.solo=null):I.packagesView=!I.packagesView,I.layoutCache=null,I.selected=null,I.focusedPkg=null,L(),D();return}if(G(e,`[data-g2-bundle-issues]`)){I.bundleIssues=!I.bundleIssues,L({keepViewport:!0}),D();return}let v=G(e,`[data-g2-layout]`);if(v){let e=v.dataset.g2Layout;if(![`graph`,`layers`,`matrix`,`dependencies`,`flow`].includes(e)||I.bundleLayout===e&&!I.focusedPkg)return;I.bundleLayout=e,e===`dependencies`&&(I.dependencyPackagesView=!1),I.layoutCache=null,I.selected=null,I.solo=null,I.focusedPkg=null,L(),D();return}let ve=G(e,`.graph2-triage-selector [data-triage-show]`);if(ve){let e=ve.dataset.triageShow;j.shownTriage=j.shownTriage===e?null:e,I.layoutCache=null,I.selected=null,L(),D();return}let be=G(e,`[data-g2-focus-pkg]`);if(be){I.focusedPkg=be.dataset.g2FocusPkg,I.layoutCache=null,L(),D();return}if(G(e,`#g2-back-to-full`)){I.focusedPkg=null,I.layoutCache=null,(I.packagesView||I.bundleLayout===`layers`)&&(I.selected=null),L(),D();return}let xe=G(e,`.tab`);if(xe&&G(e,`.tabs`)){let t=G(e,`[data-gid]`).dataset.gid,n=xe.dataset.tid;j.activeTabByGroup.set(t,n),W();return}let Se=G(e,`[data-triage-action]`);if(Se){let e=Se.closest(`.triage-menu`),t=e?.dataset.gid;if(!t)return;let n=k(t);if(!n)return;let r=Se.dataset.triageAction;if(![`inprogress`,`fixed`,`invalid`,`deleted`,`ignored`,`restore`].includes(r))return;let{targets:i,clearing:a}=Ut(n,r);if(i.length===0)return;ji(i,a?`untriaged`:r);try{e.hidePopover()}catch{}y(),W();return}if(G(e,`.mark-comment`)){let t=G(e,`[data-gid]`).dataset.gid,n=k(t);if(!n)return;let r=w(n);if(!Ze(r))return;if(M()){kn(r,W).catch(()=>tt(`Could not open comments. Please retry.`));return}let i=tr(r),a=ot(r)?.comment??``;Fn({initial:a,finding:r}).then(e=>(e===null||!x(r)||(P(j.triage,i,{comment:e||void 0}),y(),W()),null)).catch(()=>{});return}let Ce=G(e,`.mark-copy`);if(Ce){let t=Di(e);if(t===null)return;Ci(Ce,t);return}let we=G(e,`.mark-link`);if(we){let t=G(e,`[data-gid]`),n=t?k(t.dataset.gid):null;if(!n)return;let r=te(w(n));if(!r)return;Ci(we,r);return}let Te=G(e,`[data-copy-report]`);if(Te){Ci(Te,Te.dataset.copyReport);return}let Ee=G(e,`[data-copy-path]`);if(Ee){Ci(Ee,Ee.dataset.copyPath);return}let De=G(e,`.mark-issue`);if(De&&M()&&j.managedSession&&!j.managedSession.publicShare&&j.currentManagedTeam){let t=G(e,`[data-gid]`),n=t?k(t.dataset.gid):null,r=n?w(n):null;if(r?._managedReportId&&r.id){e.preventDefault();let t=new URL(De.dataset.issueForm);Pe({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`)??``,body:t.searchParams.get(`body`)??``,finding:r,draftOptions:{sourceUrl:qn(r,_t(r)),evidence:Xn(r),showRevalidation:or()},renderBody:Be,render:D}).catch(()=>tt(`Could not open issue creation. Please retry.`));return}}let Oe=G(e,`.mark-claude`);if(Oe){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 Tt()}catch(e){alert(`Wipe failed: ${e?.message??e}. Try again or clear localStorage manually via DevTools.`);return}location.reload()}}),document.body.append(V),V}function Yr(){return j()||!lt()?!1:x()&&!ot()}async function Xr(){if(await Wt(),Yr()){let e=Jr();e.hidden=!1;let t=e.querySelector(`button`);t&&t.focus()}else if(V&&(V.hidden=!0,Kr))try{Kr.abort()}catch{}}mt(Xr),document.addEventListener(`managed-client-mode-change`,Xr),Xr();var Zr=2;function Qr(e,t){A.focusSplit=t,e.closest(`.focus-main`)?.style.setProperty(`--focus-split`,String(t)),e.setAttribute(`aria-valuenow`,String(Math.round(t)))}function $r(){try{localStorage.setItem(Xt,String(A.focusSplit))}catch{}}function ei(e,t){Qr(e,un(t)),$r()}function ti(e,t){ei(e,A.focusSplit+t)}function ni(e){ei(e,sn)}function ri(e,t){let n=e.closest(`.focus-main`);if(!n)return;t.preventDefault(),e.classList.add(`dragging`);try{e.setPointerCapture(t.pointerId)}catch{}let r=t=>{let r=n.getBoundingClientRect();r.width!==0&&Qr(e,un((t.clientX-r.left)/r.width*100))},i=()=>{e.removeEventListener(`pointermove`,r),e.removeEventListener(`pointerup`,i),e.removeEventListener(`pointercancel`,i),e.classList.remove(`dragging`),$r()};e.addEventListener(`pointermove`,r),e.addEventListener(`pointerup`,i),e.addEventListener(`pointercancel`,i)}function ii(e,t){return ze(Fe(e)).map(e=>t?[C(e)]:ut(e))}var ai={annotation(e){let t=at(e),n=st(e);return!t&&!n?null:{triage:t?.triage,color:t?.color,comment:t?.comment,fix:t?.fix,flagged:t?.flagged===!0,ignored:n}},location:e=>Xn(e,ht(e)),evidence:(e,t,n)=>Qn(e,t,ht(t),n),commit:e=>er(e.repo?.github,e.commitHash),report:e=>e._reportName??null};function oi(e,t){let n=new Set(e.map(e=>e.repo??null)),r=n.size===1?[...n][0]:null;if(r)return r;let i=new Set;for(let e of t)for(let t of e)t.repo?.github&&!qn(t.file)&&i.add(t.repo.github);return i.size===1?[...i][0]:i.size===0&&!A.currentWorkspace&&A.repoUrl?A.repoUrl:null}function si(e){return e.replace(/\.(?:json|md|codex)$/iu,``)}function ci(){return A.currentWorkspace?v().find(e=>e.id===A.currentWorkspace)??null:null}function li(e,t){if(t)return t.name;let n=e.map(e=>e.fileName);return n.length===1?si(n[0]):Jn(n).replace(/[-_. ]+$/u,``)||`${n.length} reports`}function ui({oneSamplePerGroup:e=!1}={}){let t=A.reports,a=De(),s=r(),c=ii(s,e),l=ci(),u=t.flatMap(e=>e.groups??[]),d=u.some(e=>e.some(xr)),f=u.some(e=>e.some(lr));return br({title:li(t,l),workspace:l?.name??null,reports:t.map(e=>({name:e.fileName,source:e.source})),repo:oi(t,c),generatedAt:new Date,view:{bucket:i(),severityMode:d?A.severityMode:null,revalidation:f?A.showRevalidation:null,revalidationDetail:f&&A.showRevalidation!==!1?o():null},filters:n(a),counts:{included:c.length,total:s.length},groups:c},ai)}function di(){let e=ci(),t=A.reports.map(e=>e.fileName),n=``;return e?n=e.name:t.length===1?n=si(t[0]):t.length>1&&(n=si(Jn(t))),n=n.replaceAll(/[\\/:*?"<>|\p{Cc}]/gu,`-`).trim(),`${n||`deepview-report`}.md`}function fi(e){if(A.reports.length===0)return;let t=new Blob([ui(e)],{type:`text/markdown;charset=utf-8`});St(t,di())}function pi(e){return!j()||!xt.active||!A.currentManagedTeam?null:xt.navigate(vr({view:e,teamId:A.currentManagedTeam,reportId:A.currentManagedReport},A.managedTeams))}var mi=!1;oe(()=>{if(mi)return;mi=!0;let e=2;function t(){--e===0&&gi()}requestAnimationFrame(t),setTimeout(t,350)});var hi=!1;function gi(){mi=!1;let e=se();if(e&&(A.currentView===`findings`||A.currentView===`files`)){hi||(hi=!0,e.catch(()=>{}).finally(()=>{hi=!1,gi()}));return}A.findingIndexTick++,A.currentView===`bundles`&&A.selectedBundle||A.currentView===`packages`||A.currentView===`repositories`||A.currentView===`links`?E():(A.currentView===`findings`||A.currentView===`files`)&&(T().catch(()=>{}),E())}var _i=!1;ce(()=>{A.currentView!==`findings`&&A.currentView!==`files`&&!We()||_i||(_i=!0,queueMicrotask(()=>{_i=!1,(A.currentView===`findings`||A.currentView===`files`||We())&&(A.bundleHashTick++,E())}))}),Ee(()=>{A.linksTick++,E()});function vi(){A.currentView===`bundles`&&A.bundleDetailsTab===`graph`?he():Pt()}function yi(){A.currentView===`bundles`&&A.bundleDetailsTab===`graph`?_e():Bt()}function bi(){let e=document.querySelector(`.bundle-source-code-wrap`),t=e?.scrollTop??0,n=e?.scrollLeft??0;E();let r=document.querySelector(`.bundle-source-code-wrap`);r&&(r.scrollTop=t,r.scrollLeft=n)}function H(e){let t=document.querySelector(e)?.scrollTop??0;E();let n=document.querySelector(e);n&&(n.scrollTop=t)}function U(){A.viewMode===`table`?H(`.findings-table-list`):E()}var xi=0;function Si(){xi||=requestAnimationFrame(()=>{xi=0,E()})}function W(e,t){for(let n of e.composedPath())if(n?.matches?.(t))return n;return null}function Ci(e,t){queueMicrotask(()=>{let n=document.querySelector(`.bundle-source-lineno-row[data-line="${e}"]`);n&&n.scrollIntoView(t)})}function wi(e){e.classList.add(`copied`),setTimeout(()=>e.classList.remove(`copied`),1e3)}function Ti(e,t){try{navigator.clipboard.writeText(t).then(()=>(wi(e),null)).catch(()=>{})}catch{}}function Ei(e){let t=g(A.bundleCodeHistory,A.bundleDetails?.integrity??null,A.bundleSourceFile);A.bundleCodeHistory=ne(t,e),A.bundleSourceFile=e}function Di(e=!1){queueMicrotask(()=>{let t=document.querySelector(`.bundle-source-code-wrap`);t&&(t.scrollTop=0,t.scrollLeft=0),e&&t?.querySelector(`.bundle-source-code`)?.focus({preventScroll:!0})})}window.addEventListener(`hashchange`,()=>{if(!j()||In()||A.currentView!==`bundles`||A.bundleDetailsTab!==`code`)return;let e=_r(new URL(location.href));if(e?.bundleTab!==`code`||e.file==null||e.file!==$e(A)?.file)return;let t=A.bundleSourceFile,n=e.endLine??e.line;A.bundleSourceTargetLine=e.line&&n<=Wn(Un(A.bundleDetails).get(t)??``)?{bundle:A.bundleDetails?.integrity??null,path:t,line:e.line,...e.endLine?{end:e.endLine}:{}}:null,E(),A.bundleSourceTargetLine&&Ci(e.line,{block:`center`})});function Oi(e){let t=e.target.closest(`[data-bundle-source-line]`);if(t){let n=Number(t.dataset.bundleSourceLine),r=A.bundleDetails?.integrity??null,i=A.bundleSourceFile,a=A.bundleSourceTargetLine,o=a?.bundle===r&&a.path===i?a:null;if(e.shiftKey&&o){let e=o.anchor??o.line;A.bundleSourceTargetLine={bundle:r,path:i,line:Math.min(e,n),end:Math.max(e,n),anchor:e}}else o?.line===n&&!(o.end>n)?A.bundleSourceTargetLine=null:A.bundleSourceTargetLine={bundle:r,path:i,line:n};return bi(),!0}let n=e.target.closest(`[data-bundle-source-wrap]`);if(n){let e=Ut(n);A.bundleSourceWrap=!A.bundleSourceWrap;try{localStorage.setItem(nn,String(A.bundleSourceWrap))}catch{}return E(),queueMicrotask(e),!0}if(e.target.closest(`[data-bundle-source-pretty]`))return p(),E(),Di(),!0;if(e.target.closest(`[data-bundle-source-lockfile]`))return ae(),E(),!0;let r=e.target.closest(`[data-bundle-code-history]`);if(r){let e=g(A.bundleCodeHistory,A.bundleDetails?.integrity??null,A.bundleSourceFile),t=ie(e,r.dataset.bundleCodeHistory===`back`?-1:1),n=t.files[t.at];return t.at===e.at||!Un(A.bundleDetails).has(n)||(A.bundleCodeHistory=t,A.bundleSourceFile=n,A.bundleSourceFindingIdx=null,A.bundleCodeSearchMode=`files`,A.bundleCodeSearchQuery=``,H(`.bundle-code-rail-body`),ye(),Di()),!0}let i=e.target.closest(`[data-bundle-source-link]`);if(i){let t=i.dataset.bundleSourceLink,n=i.closest(`.focus-pane-code`);if(n){let r=Wi(e),i=h(r,n.dataset.focusCodeIntegrity,n.dataset.focusCodeFile,t);return i&&(Gi(r,i),queueMicrotask(()=>n.querySelector(`.focus-code-source`)?.focus({preventScroll:!0}))),!0}return Un(A.bundleDetails).has(t)&&(A.currentView===`bundles`&&A.bundleDetailsTab===`search`&&(fn(`code`,{preserveSource:!0}),A.selectedBundle&&D(A.selectedBundle,`code`,{push:!0})),Ei(t),A.bundleSourceFindingIdx=null,A.bundleDetailsTab===`code`&&(A.bundleCodeSearchMode=`files`,A.bundleCodeSearchQuery=``),H(`.bundle-code-rail-body`),ye(),Di(!0)),!0}if(e.target.classList?.contains(`bundle-source-overlay`)||e.target.closest(`[data-action="bundle-source-close"]`))return A.bundleSourceFile&&(fn(A.bundleDetailsTab),E()),!0;if(e.target.closest(`[data-action="bundle-source-panel-close"]`))return A.bundleSourceFindingIdx!=null&&(A.bundleSourceFindingIdx=null,bi()),!0;let a=e.target.closest(`[data-bundle-source-finding]`);if(a){let e=parseInt(a.dataset.bundleSourceFinding,10);return Number.isFinite(e)&&(A.bundleSourceFindingIdx=A.bundleSourceFindingIdx===e?null:e,bi()),!0}return!1}function ki(e){let t=Wi(e);if(!t)return null;let n=C(t);return Gn(n,yt(n))}w.addEventListener(`click`,e=>{if(W(e,`[data-finding-history]`)){let t=Wi(e),n=t&&C(t);Et(n)&&Re(n);return}let t=W(e,`[data-code-nav-file]`);if(t){Gi(Wi(e),{integrity:t.dataset.codeNavIntegrity,file:t.dataset.codeNavFile,range:Zn(t.dataset.codeNavLine)});return}let n=W(e,`[data-code-history]`);if(n){qi(n.dataset.codeHistory===`forward`?1:-1);return}let r=W(e,`[data-code-preview]`);if(r){let e=r.dataset.codePreview,t=new Set(A.codePreviews);t.delete(e)||t.add(e),A.codePreviews=t,E();return}let i=W(e,`[data-finding-code-report]`);if(i&&j()){Vn({reportId:i.dataset.findingCodeReport,file:i.dataset.findingCodeFile,line:i.dataset.findingCodeLine});return}let a=W(e,`[data-finding-code-bundle]`);if(a){let e=a.dataset.findingCodeBundle,t=a.dataset.findingCodeFile,n=a.dataset.findingCodeLine,r=n?parseInt(n,10):null;A.bundleSourceFile=t||null,A.bundleCodeHistory=null,A.bundleSourceFindingIdx=null,(A.bundleDetailsTab===`code`||A.bundleDetailsTab===`search`)&&(A.bundleDetailsTab=`overview`);let i=()=>{Number.isFinite(r)&&Ci(r,{block:`start`,behavior:`instant`})};if(A.selectedBundle===e&&A.bundleDetails?.integrity===e){E(),yn().then(()=>(A.selectedBundle===e&&A.bundleSourceFile===t&&i(),null));return}A.selectedBundle=e,A.selectedBundleWorkspace=null,A.bundleDetails=null,E(),(async()=>(await _n(e),i()))();return}let o=e.target.closest(`[data-package-expand]`);if(o){let e=o.dataset.packageExpand;A.expandedPackages.has(e)?A.expandedPackages.delete(e):A.expandedPackages.add(e),E();return}let s=e.target.closest(`[data-package-row-issues]`);if(s){let e=s.dataset.packageRowIssues,t=s.dataset.packageRowIssuesVersion;A.selectedPackage=e,A.selectedPackageVersion=t||null,A.packageDetailsTab=`issues`,A.packageSlideTriage=null,A.packageSlideTransient=!0,E();return}let c=e.target.closest(`[data-repository-row-issues]`);if(c){let e=c.dataset.repositoryRowIssues;A.selectedRepository=e,A.repositoryDetailsTab=`issues`,A.repositorySlideTriage=null,A.repositorySlideTransient=!0,E();return}let l=e.target.closest(`[data-select-package]`);if(l){let e=l.dataset.selectPackage,t=l.dataset.selectPackageVersion??``,n=t===``?null:t;if(A.selectedPackage===e&&A.selectedPackageVersion===n)return;A.selectedPackage=e,A.selectedPackageVersion=n,A.packageDetailsTab=`overview`,A.packageSlideTriage=null,A.packageSlideTransient=!1,E();return}if(e.target.closest(`[data-deselect-package]`)){A.selectedPackage=null,A.selectedPackageVersion=null,E();return}let u=e.target.closest(`[data-package-tab]`);if(u){let e=u.dataset.packageTab;(e===`overview`||e===`issues`)&&A.packageDetailsTab!==e&&(A.packageDetailsTab=e,E());return}if(e.target.closest(`[data-action="package-slide-back"]`)){A.packageDetailsTab=`overview`,A.packageSlideTriage=null,A.packageSlideTransient&&(A.selectedPackage=null,A.selectedPackageVersion=null,A.packageSlideTransient=!1),E();return}let d=W(e,`[data-links-report][data-links-finding]`);if(d){e.preventDefault();let{linksReport:t,linksFinding:n,managedReport:r}=d.dataset;t&&n&&(async()=>{let e=await Ot(n,t,r);e.ok||alert(e.reason)})().catch(e=>console.warn(`links: reveal in report failed:`,e));return}let f=e.target.closest(`[data-package-report]`);if(f){let e=f.dataset.packageReport;e&&on(e);return}let p=e.target.closest(`[data-select-repository]`);if(p){let e=p.dataset.selectRepository;if(A.selectedRepository===e)return;A.selectedRepository=e,A.repositoryDetailsTab=`overview`,A.repositorySlideTriage=null,A.repositorySlideTransient=!1,E();return}if(e.target.closest(`[data-deselect-repository]`)){A.selectedRepository=null,E();return}let m=e.target.closest(`[data-repository-tab]`);if(m){let e=m.dataset.repositoryTab;(e===`overview`||e===`issues`)&&A.repositoryDetailsTab!==e&&(A.repositoryDetailsTab=e,E());return}if(e.target.closest(`[data-action="repository-slide-back"]`)){A.repositoryDetailsTab=`overview`,A.repositorySlideTriage=null,A.repositorySlideTransient&&(A.selectedRepository=null,A.repositorySlideTransient=!1),E();return}let h=e.target.closest(`[data-bundle-tab]`);if(h){let e=h.dataset.bundleTab;if(pr.has(e)||e===`review`&&A.bundleDetails?.npm||gr.has(e)&&A.bundleDetails?.repository){if(e===A.bundleDetailsTab){A.selectedBundle&&D(A.selectedBundle,e);return}A.bundleDetailsTab===`graph`&&e!==`graph`&&(I(),document.body.classList.remove(`report-fullscreen`)),tt(A,e,e=>me(e)?.oldVersion??null),fn(e),A.selectedBundle&&D(A.selectedBundle,e,{push:!0}),E(),e===`code`&&yn().then(()=>(A.bundleDetailsTab===`code`&&ye(),null))}return}if(e.target.closest(`[data-bundle-retry-sources]`)){A.bundleDetails&&delete A.bundleDetails.sourceError,E();return}let g=e.target.closest(`[data-bundle-download]`);if(g){let e=g.dataset.bundleDownload,t=(A.bundles??[]).find(t=>t.integrity===e);if(!t)return;(async()=>{let{confirmed:n}=await Rn({name:t.name,encrypted:x()});if(n)try{let n=await ee(e);St(new Blob([n],{type:`application/octet-stream`}),t.name)}catch(e){alert(`Failed to download bundle: ${e.message}`)}})();return}let ne=e.target.closest(`[data-bundle-export-sbom]`);if(ne){let e=ne.dataset.bundleExportSbom,t=A.bundleDetails,n=(A.bundles??[]).find(e=>e.integrity===A.selectedBundle);if(!n||!t||t.integrity!==n.integrity)return;try{let r=e===`cyclonedx`,i=r?En(t,n):kn(t,n),a=`${Sn(n.name)}.${r?`cdx`:`spdx`}.json`;St(new Blob([i],{type:`application/json`}),a)}catch(t){alert(`Failed to export ${e===`cyclonedx`?`CycloneDX`:`SPDX`}: ${t.message}`)}return}if(W(e,`[data-bundle-search-context]`)){A.bundleSearchContext=!A.bundleSearchContext,H(`.bundle-search-results`);return}if(e.target.closest(`[data-advisories-consent]`)){ue(),E();return}if(e.target.closest(`[data-advisories-retry]`)){de(A.bundleDetails,E).catch(()=>{}),E();return}let re=e.target.closest(`[data-bundle-issue-report]`);if(re){let e=re.dataset.bundleIssueReport;e&&on(e);return}if(Oi(e))return;let ie=e.target.closest(`[data-bundle-code-issue-step]`);if(ie){let e=ie.closest(`[data-bundle-code-issue-order]`),t=null;try{t=JSON.parse(e?.dataset.bundleCodeIssueOrder??`null`)}catch{}if(Array.isArray(t)&&t.length>0){let e=ie.dataset.bundleCodeIssueStep===`-1`?-1:1,n=t.findIndex(e=>e.idx===A.bundleSourceFindingIdx),r=n===-1?e>0?t[0]:t.at(-1):t[(n+e+t.length)%t.length];A.bundleSourceFindingIdx=r.idx,bi(),r.line>0&&Ci(r.line,{block:`center`,behavior:`smooth`})}return}let _=W(e,`[data-bundle-view-source]`);if(_){let e=_.dataset.bundleViewSource;if(!e)return;let t=_.dataset.bundleViewFindingIdx,n=t===void 0?null:parseInt(t,10),r=_.dataset.bundleViewLine,i=r?parseInt(r,10):null;Number.isFinite(i)&&(A.bundleSourcePretty=!1,A.bundleSourceLockfile=!1);let a=A.bundleSourceFile!==e;if(Ei(e),Number.isFinite(n)?A.bundleSourceFindingIdx=n:a&&(A.bundleSourceFindingIdx=null),A.bundleSourceTargetLine=Number.isFinite(i)?{bundle:A.bundleDetails?.integrity??null,path:e,line:i}:null,_.closest(`.bundle-code-rail`)?H(`.bundle-code-rail-body`):_.closest(`.bundle-search-results`)?H(`.bundle-search-results`):_.closest(`.bundles-slide-body`)?H(`.bundles-slide-body`):E(),Number.isFinite(i)){let t=_.dataset.bundleViewScrollBlock||`center`;yn().then(()=>(A.bundleSourceFile===e&&Ci(i,{block:t,behavior:`smooth`}),null))}return}let ae=e.target.closest(`[data-action="workspace-reports"], [data-action="workspace-bundles"], [data-action="workspace-repositories"], [data-action="workspace-dependencies"]`);if(ae){let e=ae.dataset.action.slice(10);A.currentView!==`workspace-${e}`&&cn(A.currentManagedTeam??A.currentWorkspace,e);return}if(e.target.closest(`[data-action="workspace-findings"]`)){if(A.currentView===`findings`)return;if(A.currentView===`files`){if(pi(`findings`))return;A.currentView=`findings`,A.filesSelectedFile=null,document.body.classList.remove(`report-fullscreen`),E()}else j()?dn(A.managedTeams.find(e=>e.id===A.currentManagedTeam)):pn(A.currentWorkspace);return}let oe=e.target.closest(`[data-workspace-report]`);if(oe){j()?dn(A.managedTeams.find(e=>e.id===A.currentManagedTeam),oe.dataset.workspaceReport):on(oe.dataset.workspaceReport,void 0,{workspaceId:A.currentWorkspace});return}let se=e.target.closest(`[data-workspace-repository]`);if(se){let{workspaceRepository:e,repositoryName:t,repositoryPath:n}=se.dataset;document.dispatchEvent(new CustomEvent(`managed-repository-code-open`,{detail:{repoId:Number(e),repo:t,path:n}}));return}let ce=e.target.closest(`[data-workspace-bundle]`);if(ce){if(j())xt.navigate(vr({view:`bundles`,teamId:A.currentManagedTeam,bundleId:ce.dataset.workspaceBundle,bundleTab:`overview`},A.managedTeams));else{let e=ce.dataset.workspaceBundle;ln(e,`overview`,{workspaceId:A.currentWorkspace}),D(e,`overview`),E(),T(),_n(e)}return}if(e.target.closest(`[data-action="toggle-files"]`)){if(pi(A.currentView===`files`?`findings`:`files`))return;A.currentView===`files`?A.currentView=`findings`:(A.viewMode===`graph`&&I(),A.currentView=`files`),document.body.classList.remove(`report-fullscreen`),E();return}let le=W(e,`[data-g2-pkg]`);if(le){let e=le.dataset.g2Pkg;F.solo=F.solo===e?null:e,F.solo&&(F.selected=null),vi(),yi(),F.graphState?.requestDraw?.();return}let fe=W(e,`[data-g2-select]`);if(fe){F.selected=fe.dataset.g2Select,vi(),F.graphState?.requestDraw?.();return}let pe=W(e,`[data-g2-top-pkgs]`);if(pe){F.topPkgsTab=pe.dataset.g2TopPkgs,yi();return}let he=W(e,`[data-g2-jump-findings]`);if(he){if(A.currentView===`bundles`){A.bundleDetailsTab===`graph`&&I(),fn(`issues`),A.selectedBundle&&D(A.selectedBundle,`issues`,{push:!0}),E();return}if(ve(),A.filterConfMin=0,A.filterInclude=he.dataset.g2JumpFindings,A.currentView=`findings`,A.viewMode===`graph`&&(A.viewMode=`table`),I(),pi(`findings`))return;E();return}let v=W(e,`[data-g2-jump-file]`);if(v){let e=v.dataset.g2JumpFile;I();let t=()=>requestAnimationFrame(()=>{let t=document.querySelector(`#${or(e)}`);t&&t.scrollIntoView({behavior:`smooth`,block:`start`})}),n=pi(`files`);if(n){n.then(e=>e?t():void 0);return}A.currentView=`files`,E(),t();return}if(W(e,`#g2-path-filter-clear`)){F.pathFilter=``;let e=document.querySelector(`graph-layout`)?.shadowRoot?.querySelector(`#g2-path-filter`);e&&(e.value=``),F.graphState?.requestDraw?.();return}if(W(e,`#g2-fullscreen`)){document.body.classList.toggle(`report-fullscreen`);return}if(W(e,`[data-g2-show-all]`)){F.showAll=!F.showAll,F.layoutCache=null,F.selected=null,I(),E();return}if(W(e,`[data-g2-packages-view]`)){F.bundleLayout===`flow`?F.flowPackagesView=!F.flowPackagesView:F.bundleLayout===`dependencies`?(F.dependencyPackagesView=!F.dependencyPackagesView,F.solo=null):F.packagesView=!F.packagesView,F.layoutCache=null,F.selected=null,F.focusedPkg=null,I(),E();return}if(W(e,`[data-g2-bundle-issues]`)){F.bundleIssues=!F.bundleIssues,I({keepViewport:!0}),E();return}let ge=W(e,`[data-g2-layout]`);if(ge){let e=ge.dataset.g2Layout;if(![`graph`,`layers`,`matrix`,`dependencies`,`flow`].includes(e)||F.bundleLayout===e&&!F.focusedPkg)return;F.bundleLayout=e,e===`dependencies`&&(F.dependencyPackagesView=!1),F.layoutCache=null,F.selected=null,F.solo=null,F.focusedPkg=null,I(),E();return}let _e=W(e,`.graph2-triage-selector [data-triage-show]`);if(_e){let e=_e.dataset.triageShow;A.shownTriage=A.shownTriage===e?null:e,F.layoutCache=null,F.selected=null,I(),E();return}let be=W(e,`[data-g2-focus-pkg]`);if(be){F.focusedPkg=be.dataset.g2FocusPkg,F.layoutCache=null,I(),E();return}if(W(e,`#g2-back-to-full`)){F.focusedPkg=null,F.layoutCache=null,(F.packagesView||F.bundleLayout===`layers`)&&(F.selected=null),I(),E();return}let xe=W(e,`.tab`);if(xe&&W(e,`.tabs`)){let t=W(e,`[data-gid]`).dataset.gid,n=xe.dataset.tid;A.activeTabByGroup.set(t,n),U();return}let Se=W(e,`[data-triage-action]`);if(Se){let e=Se.closest(`.triage-menu`),t=e?.dataset.gid;if(!t)return;let n=O(t);if(!n)return;let r=Se.dataset.triageAction;if(![`inprogress`,`fixed`,`invalid`,`deleted`,`ignored`,`restore`].includes(r))return;let{targets:i,clearing:a}=Rt(n,r);if(i.length===0)return;Ni(i,a?`untriaged`:r);try{e.hidePopover()}catch{}y(),U();return}if(W(e,`.mark-comment`)){let t=W(e,`[data-gid]`).dataset.gid,n=O(t);if(!n)return;let r=C(n);if(!Qe(r))return;if(j()){jn(r,U).catch(()=>ct(`Could not open comments. Please retry.`));return}let i=nr(r),a=at(r)?.comment??``;Ln({initial:a,finding:r}).then(e=>(e===null||!b(r)||(N(A.triage,i,{comment:e||void 0}),y(),U()),null)).catch(()=>{});return}let Ce=W(e,`.mark-copy`);if(Ce){let t=ki(e);if(t===null)return;Ti(Ce,t);return}let we=W(e,`.mark-link`);if(we){let t=W(e,`[data-gid]`),n=t?O(t.dataset.gid):null;if(!n)return;let r=te(C(n));if(!r)return;Ti(we,r);return}let Te=W(e,`[data-copy-report]`);if(Te){Ti(Te,Te.dataset.copyReport);return}let Ee=W(e,`[data-copy-path]`);if(Ee){Ti(Ee,Ee.dataset.copyPath);return}let De=W(e,`.mark-issue`);if(De&&j()&&A.managedSession&&!A.managedSession.publicShare&&A.currentManagedTeam){let t=W(e,`[data-gid]`),n=t?O(t.dataset.gid):null,r=n?C(n):null;if(r?._managedReportId&&r.id){e.preventDefault();let t=new URL(De.dataset.issueForm);Pe({teamId:A.currentManagedTeam,session:{...A.managedSession},context:{reportId:r._managedReportId,findingId:r.id,repository:t.pathname.split(`/`).slice(1,3).join(`/`)},formUrl:t.href,title:t.searchParams.get(`title`)??``,body:t.searchParams.get(`body`)??``,finding:r,draftOptions:{sourceUrl:Xn(r,ht(r)),evidence:$n(r),showRevalidation:cr(),findingLink:te(r)},renderBody:Be,render:E}).catch(()=>ct(`Could not open issue creation. Please retry.`));return}}let Oe=W(e,`.mark-claude`);if(Oe){let t=ki(e);if(t===null)return;let n=`claude://code/new?q=${encodeURIComponent(`Confirm and fix:
|
|
6
6
|
|
|
7
|
-
${t}`)}`;try{window.location.href=n,Si(Oe)}catch{}return}if(G(e,`.mark-fix`)){let t=G(e,`[data-gid]`)?.dataset.gid,n=t?k(t):null;if(!n)return;let r=w(n);if(!x(r))return;let i=un(n),a=ot(r)?.fix??``;Bn({initial:a,finding:r,canApplyToGroup:jt(i,a)}).then(e=>{if(e===null||!x(r))return null;let n=e.scope===`group`?i.filter(e=>x(e)&&(e===r||Lt(e,a))):[r],o=!1;for(let t of n)P(j.triage,tr(t),{fix:e.value||void 0})&&(o=!0);return o&&(n.length>1&&j.activeTabByGroup.set(t,tr(r)),W(),queueMicrotask(y)),null}).catch(()=>{});return}let ke=G(e,`[data-flag-toggle]`);if(ke){let t=ke.dataset.flagToggle,n=G(e,`[data-gid]`)?.dataset.gid,r=(n?k(n):null)?.find(e=>tr(e)===t);if(!r||!x(r))return;let i=ot(r)?.flagged;P(j.triage,t,{flagged:i!==!0}),y(),W();return}let Ae=e.target.closest(`[data-triage-show]`);if(Ae&&!Ae.closest(`.graph2-triage-selector`)){let e=Ae.dataset.triageShow;j.shownTriage=j.shownTriage===e?null:e,D();return}if(e.target.closest(`[data-table-deselect]`)){j.tableSelectedGid=null,W();return}let je=e.target.closest(`[data-tree-select]`);if(je){let e=je.dataset.treeSelect;j.filesSelectedFile=j.filesSelectedFile===e?null:e,D();return}e.target.closest(`[data-tree-deselect]`)&&(j.filesSelectedFile=null,D())});var Oi=document.querySelector(`#bundle-source-overlay-slot`);Oi&&Oi.addEventListener(`click`,Ei);function ki(e){let t=e?k(e):null;t&&Xt(t)&&queueMicrotask(y)}T.addEventListener(`row-select`,e=>{let t=e.detail?.gid;if(!t)return;let n=j.tableSelectedGid!==t;j.tableSelectedGid=n?t:null,n&&ki(t),W()});var Ai=`application/x-deepview-kanban-gid`;function ji(e,t){for(let n of e)x(n)&&On(j.triage,n,t,Un())}function Mi(){for(let e of T.querySelectorAll(`.kanban-card.dragging`))e.classList.remove(`dragging`);for(let e of T.querySelectorAll(`.kanban-column.drag-over`))e.classList.remove(`drag-over`)}T.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||Gt(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`)}),T.addEventListener(`dragend`,Mi),T.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 T.querySelectorAll(`.kanban-column.drag-over`))e!==t&&e.classList.remove(`drag-over`);t.classList.add(`drag-over`)}}),T.addEventListener(`dragleave`,e=>{let t=e.target.closest?.(`.kanban-column[data-kanban-target]`);t&&(t.contains(e.relatedTarget)||t.classList.remove(`drag-over`))}),T.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||(Dt(i).commonTriage??`untriaged`)===r)return;let a=Gt(i);a.length!==0&&(ji(a,r),D(),queueMicrotask(y))});var Ni=!1,Pi=[`theme-w95`,`theme-paper`];function Fi(){return!!document.startViewTransition&&!Pi.some(e=>document.body.classList.contains(e))}function K(e){return e?T.querySelector(`.kanban-card[data-gid="${CSS.escape(e)}"]`):null}function Ii(e){let t=e??T.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){j.kanbanPopoverGid=e,j.focusCodeStack=[],j.focusCodeAt=0}function Ri(){l()}function q(e){let t=j.kanbanPopoverGid;if(t===e)return;let n=t===null&&e!==null,r=t!==null&&e===null;if(!Fi()||!n&&!r){ki(e),Li(e),D(),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=K(e);t?(Ii(t),t.style.viewTransitionName=`kanban-detail-modal`,t.getBoundingClientRect()):Ii(),Li(e);let n=ht(()=>{D(),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=ht(()=>{D(),o=K(t),o&&(Ii(o),o.style.viewTransitionName=`kanban-detail-modal`)}),c=setTimeout(()=>a(o??K(t)),600);(async()=>{try{await s.finished}catch{}clearTimeout(c),a(o??K(t))})()}function zi(e){let t=K(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;q(o);let s=K(o);s&&(s.focus({preventScroll:!0}),s.scrollIntoView({block:`nearest`,behavior:`instant`}))}var Bi=null;function Vi(){Ke(),j.focusCodeStack=[],j.focusCodeAt=0,D(),Bi?.isConnected&&Bi.focus({preventScroll:!0}),Bi=null}T.addEventListener(`click`,e=>{let t=G(e,`[data-links-preview]`);if(t){e.preventDefault(),Bi=t;let n=t.dataset.previewRow,r=Je(t.dataset.linksPreview,t.dataset.previewReport,n===void 0?void 0:Number(n),t.dataset.previewManagedReport);D(),T.querySelector(`.kanban-detail-close`)?.focus({preventScroll:!0}),r.then(()=>{D(),l();let e=b()?.group?.[0]._bundleHashes;if(Array.isArray(e))for(let t of e)sn(t).catch(()=>{});return null});return}if(e.target.closest?.(`.kanban-detail-close`)){if(b()){Vi();return}q(null);return}if(e.target.closest?.(`[data-kanban-detail-fullscreen]`)){j.kanbanDetailFullscreen=!j.kanbanDetailFullscreen;try{localStorage.setItem(rn,String(j.kanbanDetailFullscreen))}catch{}D(),l();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&&K(j.kanbanPopoverGid)?.closest(`.kanban-column`)?.dataset.kanbanTarget!==t&&(j.kanbanPopoverGid=null),D();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&&q(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;q(j.kanbanPopoverGid===e?null:e);return}if(!G(e,`.kanban-detail-modal, .kanban-detail-side`)){if(b()){Vi();return}j.kanbanPopoverGid&&q(null)}}),T.addEventListener(`change`,e=>{let t=e.target.closest?.(`[data-kanban-column]`);if(!t)return;let n=t.selectedOptions[0]?.dataset.gid;n&&q(n)}),document.addEventListener(`keydown`,e=>{if(e.key===`Escape`){if(b()){!e.defaultPrevented&&!Ji(e)&&!document.querySelector(`:popover-open:not(#styled-tooltip)`)&&Vi();return}if(j.kanbanPopoverGid){q(null);return}j.viewMode!==`kanban`||j.kanbanExpandedColumn===null||(j.kanbanExpandedColumn=null,D())}});function Hi(e){let t=G(e,`[data-gid]`)?.dataset?.gid;return t?k(t):null}function Ui(e,t){if(!t.integrity||!t.file)return;let n=f(e);if(!n)return;let r=Sn(n,t);r&&(j.focusCodeStack=r.stack,j.focusCodeAt=r.at,D()),t.range||Wi(),l()}function Wi(){for(let e of T.querySelectorAll(`.focus-code-body`))e.scrollTop=0,e.scrollLeft=0}T.addEventListener(`keydown`,e=>{if(e.key!==`Enter`&&e.key!==` `)return;let t=G(e,`[data-code-nav-file]`);t&&(e.preventDefault(),Ui(Hi(e),{integrity:t.dataset.codeNavIntegrity,file:t.dataset.codeNavFile,range:Jn(t.dataset.codeNavLine)}))});function Gi(e){let t=Tn(j.focusCodeStack,j.focusCodeAt,e);t!==j.focusCodeAt&&(j.focusCodeAt=t,D(),j.focusCodeStack[t]?.range||Wi(),l())}function Ki(e){if(!e||j.focusGid===e)return;ki(e),j.focusGid=e,j.focusCodeStack=[],j.focusCodeAt=0,D();let t=T.querySelector(`.focus-side-card.active`);t&&t.scrollIntoView({block:`nearest`,behavior:`instant`}),l()}function qi(e){let t=[...T.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)}T.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)}),T.addEventListener(`pointerdown`,e=>{if(e.button!==0)return;let t=e.target.closest?.(`[data-focus-splitter]`);t&&ti(t,e)}),T.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(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||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)}),T.addEventListener(`mark-color`,e=>{let t=G(e,`[data-gid]`);if(!t)return;let n=t.dataset.gid,r=k(n);if(!r)return;let i=w(r);if(!x(i))return;let a=tr(i),o=e.detail?.color;o&&(ot(i)?.color===o?P(j.triage,a,{color:void 0}):P(j.triage,a,{color:o}),y(),W())});var J=null,Yi=null,Y=null,Xi=!1;function Zi(){if(J!==null)return;if(j.reports.length===0){Y=null,Xi=!1;return}J=j.viewMode,Yi=document.title;let e=!1;j.viewMode===`table`&&(j.viewMode=`list`,e=!0),Y&&(Se(Y),e=!0),e&&D();for(let e of T.querySelectorAll(`finding-card`))e.toggleAttribute(`print-one-sample`,Xi),e.ensureRendered({sync:!0});let t=j.reports.map(e=>e.fileName),n=``;t.length===1?n=t[0]:t.length>1&&(n=Gn(t)),n=n.replace(/\.json$/u,``),n&&(document.title=n)}function Qi(){if(J===null)return;for(let e of T.querySelectorAll(`finding-card`))e.removeAttribute(`print-one-sample`);Xi=!1;let e=!1;j.viewMode!==J&&(j.viewMode=J,e=!0),Y&&(Te(),Y=null,e=!0),e&&D(),document.title=Yi,J=null,Yi=null}window.addEventListener(`beforeprint`,Zi),window.addEventListener(`afterprint`,Qi);async function $i(e,{oneSamplePerGroup:t=!1}={}){if(J===null){Y=e,Xi=t;try{Zi(),await Promise.all([...T.querySelectorAll(`finding-card`)].map(e=>e.ensureRendered())),window.print()}catch(e){throw Qi(),e}}}function ea(e,t){if(!e)return t();Se(e);try{return t()}finally{Te()}}document.addEventListener(`download-requested`,async()=>{if(j.reports.length===0)return;let{confirmed:e,view:t,fields:n,mode:r,oneSamplePerGroup:i}=await Ln(`download`);if(t){await Rn(ea(n,()=>ci({oneSamplePerGroup:i})));return}if(e){if(r===`print`){await $i(n,{oneSamplePerGroup:i});return}ea(n,()=>ui({oneSamplePerGroup:i}))}}),T.addEventListener(`analyzer-change`,e=>{j.filterAnalyzer=e.detail.analyzer,j.filterModel=e.detail.model,D()}),T.addEventListener(`repo-change`,e=>{j.filterRepo=e.detail.value,D()}),T.addEventListener(`revalidate-change`,e=>{j.filterRevalidate=e.detail.value,D()}),T.addEventListener(`partial-change`,e=>{j.filterPartial=e.detail.value,D()}),T.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||Wn(e.file)))))?tt(`App mode off is not recommended; it can conflate triage for issues in dependencies.`,{kind:`warning`}):e.detail.on&&it(),ar(j.showRevalidation,j.upstreamOnly),Me(an(),{resetSort:!1}),D()}),T.addEventListener(`revalidation-conflicts-open`,()=>{(async()=>{let e=await jn(j.revalidateConflicts);if(!e)return;let t=await vt(e.id,e.reportName);t.ok||alert(t.reason)})().catch(e=>console.warn(`revalidation: open conflicting finding failed:`,e))}),T.addEventListener(`revalidation-detail-change`,e=>{j.revalidationDetailed=e.detail.on===!0,D()}),T.addEventListener(`upstream-only-change`,e=>{if(j.upstreamOnly=e.detail.on===!0,ar(j.showRevalidation,j.upstreamOnly),!j.upstreamOnly){let e=an();ke(e,je(e))===`confirmed`&&(j.filterRevalidate=`confirmed`,j.filterPartial=``)}D()}),T.addEventListener(`bundle-search-mode-change`,e=>{let t=e.detail?.mode;if([`files`,`code`,`issues`,`largest`].includes(t)){if(j.bundleCodeSearchMode=t,D(),t===`files`)me();else if(t===`largest`){let e=document.querySelector(`.bundle-code-rail-body`);e&&(e.scrollTop=0)}}}),T.addEventListener(`bundle-graph-reason-change`,e=>{let t=e.detail?.reason;t!==null&&typeof t!=`string`||(I.bundleReason=t,I.layoutCache=null,I.selected=null,I.solo=null,I.focusedPkg=null,L(),D())}),T.addEventListener(`bundle-search-regex-toggle`,()=>{j.bundleSearchRegex=!j.bundleSearchRegex,D()}),T.addEventListener(`bundle-search-case-toggle`,()=>{j.bundleSearchCase=!j.bundleSearchCase,D()}),T.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=Nt(e.detail.bundles??[]),i=()=>{setTimeout(()=>zt(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,...pr(e.detail.mode)}:null;Tt.navigate(s(j.managedTeams,n,j.currentManagedTeam,`compare`,a,j.bundles)).finally(i);return}Qt(t,`compare`),O(t,`compare`),D(),E(),dn(t).finally(i)}),T.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:fr(r)}:null,O(t,`compare`))}),T.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;D()}),T.addEventListener(`range-change`,e=>{e.target.id===`conf-range`&&(j.filterConfMin=e.detail.low,j.filterConfMax=e.detail.high,D())}),T.addEventListener(`input`,e=>{let t=e.composedPath()[0],n=t?.id,r=t?.value;n===`g2-path-filter`&&(I.pathFilter=r,I.graphState?.requestDraw?.())}),T.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),bi();return}if(t===`files`){j.filesSearch=n,bi();return}if(t===`packages`)j.packagesSearchQuery=n;else if(t===`repositories`)j.repositoriesSearchQuery=n;else if(t===`bundle-code`){j.bundleCodeSearchQuery=n,bi();return}else if(t===`bundle-search`){j.bundleSearchQuery=n,bi();return}else return;D()}),T.addEventListener(`search-negate-toggle`,()=>{j.filterIncludeNegate=!j.filterIncludeNegate,D()}),T.addEventListener(`severity-toggle`,e=>{let t=e.detail.severity;if(e.detail.kind===`graph`){I.selectedSeverities.has(t)?I.selectedSeverities.delete(t):I.selectedSeverities.add(t),e.composedPath()[0].selected=[...I.selectedSeverities],I.graphState?.requestDraw?.(),_i();return}j.filterSeverities.has(t)?j.filterSeverities.delete(t):j.filterSeverities.add(t),D()}),T.addEventListener(`color-toggle`,e=>{let t=e.detail.color;if(e.detail.kind===`graph`){I.selectedColors.has(t)?I.selectedColors.delete(t):I.selectedColors.add(t),e.composedPath()[0].selected=[...I.selectedColors],I.graphState?.requestDraw?.(),_i();return}j.filterColors.has(t)?j.filterColors.delete(t):j.filterColors.add(t),D()}),T.addEventListener(`source-toggle`,e=>{let t=e.detail.source,n=j.filterSources.has(t);j.filterSources.clear(),n||j.filterSources.add(t),D()}),T.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;D()}),T.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;D()}),T.addEventListener(`view-mode-change`,e=>{if(e.detail.kind===`files`){j.filesViewMode=e.detail.mode,D();return}j.viewMode=e.detail.mode,j.viewMode!==`kanban`&&(j.kanbanPopoverGid=null),j.viewMode!==`focus`&&(j.focusGid=null),D()}),T.addEventListener(`severity-mode-change`,e=>{let t=e.detail?.mode;if(t===`corrected`||t===`original`){j.severityMode=t;try{localStorage.setItem(Jt,t)}catch{}D()}}),T.addEventListener(`repo-edit-start`,()=>{M()||(j.repoEditing=!0,D())}),T.addEventListener(`repo-input`,e=>{M()||(j.repoUrl=e.detail.url,_n(j.currentFile,j.repoUrl))}),T.addEventListener(`repo-commit`,e=>{M()||(j.repoUrl=e.detail.url,_n(j.currentFile,j.repoUrl),j.repoEditing=!1,D())}),T.addEventListener(`repo-cancel`,e=>{M()||(j.repoUrl=e.detail.url,_n(j.currentFile,j.repoUrl),j.repoEditing=!1,D())}),document.addEventListener(`keydown`,e=>{if(e.key===`Escape`){if(j.bundleSourceFindingIdx!=null){j.bundleSourceFindingIdx=null,vi();return}if(j.bundleSourceFile){if(j.currentView===`bundles`&&j.bundleDetailsTab===`code`)return;nn(j.bundleDetailsTab),D()}}});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 ta(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 na(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 ra(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 ia(e){return e.slice(1).reduce((t,n,r)=>t+Math.hypot(n.x-e[r].x,n.y-e[r].y),0)}function aa(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 oa(e,t,n=7){let r=ta(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),na(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=na(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=>{ra(e)>.01&&f.push({points:e,...aa(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=ia(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+ia(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+ia(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 sa=`.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
|
-
`,
|
|
9
|
-
`,
|
|
10
|
-
`,
|
|
11
|
-
`,
|
|
12
|
-
`,
|
|
13
|
-
`,
|
|
14
|
-
`,
|
|
15
|
-
`,Xa=class extends V{static properties={items:{attribute:!1},selectedGid:{attribute:!1}};static styles=R(Ya);constructor(){super(),this.items=[],this.selectedGid=null}render(){return z`${ur(this.items??[],e=>Xe(e),e=>z`<finding-row .group="${e}" ?selected="${Xe(e)===this.selectedGid}"></finding-row>`)}`}};customElements.define(`finding-table`,Xa);var Za=`: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
|
-
|
|
17
|
-
`,co=[`red`,`blue`,`green`,`gray`],lo=class extends V{static properties={selected:{type:String},disabled:{type:Boolean}};static styles=R(so);constructor(){super(),this.selected=null,this.disabled=!1}render(){return z`${co.map(e=>z`<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`,lo);var uo=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=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`:B;return z`<span class="${F({"conf-range-label":!0,replaced:i,disabled:r})}" data-tooltip="${a}">Confidence</span> <span class="${F({"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?z`<revalidate-filter class="${F({replaces:i})}" .options="${n}" ?has-partial="${this.hasPartial}"></revalidate-filter>`:B}`}};customElements.define(`conf-filter`,uo);var fo={files:`Filter files…`,code:`Search code…`,issues:`Search issues…`,largest:`Filter largest files…`},po={files:`Filter files`,code:`Search code`,issues:`Search issues`,largest:`Largest files`},mo=z`<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>`,ho={files:Ne,code:Ie,issues:z`<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:z`<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>`},go=class extends A{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=fo[n]??fo.files;return z`${mo} <input type="text" class="bundle-code-search-input" placeholder="${r}" aria-label="${r}" .value="${N(e)}" @input="${this._onInput}"> ${e?z`<button type="button" class="bundle-code-search-clear" aria-label="Clear search" @click="${this._onClear}">×</button>`:B} ${this.modes.length>0?z`<span class="bundle-code-search-modes" role="tablist">${this.modes.map(e=>z`<button type="button" class="${F({"bundle-code-search-mode":!0,active:n===e})}" role="tab" aria-selected="${String(n===e)}" data-tooltip="${po[e]??e}" aria-label="${po[e]??e}" @click="${()=>this._selectMode(e)}">${ho[e]??B}</button>`)}</span>`:B}`}_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`,go);var _o=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`,_o);var vo=z`<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>`,yo=class extends A{createRenderRoot(){return this}render(){let e=j.bundleSearchQuery,t=j.bundleSearchRegex,n=j.bundleSearchCase,r=t?`Search by regular expression…`:`Search all source…`;return z`${vo} <input type="text" class="bundle-search-input" placeholder="${r}" aria-label="${r}" spellcheck="false" autocapitalize="off" autocomplete="off" .value="${N(e)}" @input="${this._onInput}"> ${e?z`<button type="button" class="bundle-search-clear" aria-label="Clear search" @click="${this._onClear}">×</button>`:B} <span class="bundle-search-mods"><button type="button" class="${F({"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="${F({"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`,yo);function bo(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 xo={packages:{stateKey:`packagesSearchQuery`,label:`Filter packages`},repositories:{stateKey:`repositoriesSearchQuery`,label:`Filter repositories`}},So=class extends A{static properties={kind:{type:String}};createRenderRoot(){return this}constructor(){super(),this.kind=``}render(){let e=bo(`entity-search`,xo,this.kind);return e?z`<input type="search" class="packages-search" placeholder="${`${e.label}\u2026`}" aria-label="${e.label}" .value="${N(j[e.stateKey])}" @input="${this._onInput}">`:B}_onInput=e=>{this.dispatchEvent(new CustomEvent(`search-input`,{detail:{kind:this.kind,value:e.target.value},bubbles:!0,composed:!0}))}};customElements.define(`entity-search`,So);var Co=[[`findings-desc`,`Findings ↓`],[`files-desc`,`Files ↓`],[`reports-desc`,`Reports ↓`],[`name-asc`,`Name A→Z`]],wo={packages:{stateKey:`packagesSortBy`,aria:`Sort packages`},repositories:{stateKey:`repositoriesSortBy`,aria:`Sort repositories`}},To=class extends A{static properties={kind:{type:String}};createRenderRoot(){return this}constructor(){super(),this.kind=``}render(){let e=bo(`entity-sort`,wo,this.kind);return e?z`<select class="packages-sort" aria-label="${e.aria}" .value="${N(j[e.stateKey])}" @change="${this._onChange}">${Co.map(([t,n])=>z`<option value="${t}" ?selected="${j[e.stateKey]===t}">${n}</option>`)}</select>`:B}_onChange=e=>{this.dispatchEvent(new CustomEvent(`sort-change`,{detail:{kind:this.kind,value:e.target.value},bubbles:!0,composed:!0}))}};customElements.define(`entity-sort`,To);var Eo=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)=>z`<option value="${e}" ?selected="${j.sortBy===e}">${t}</option>`;return z`<select class="sort-select" aria-label="Sort findings" .value="${N(j.sortBy)}" @change="${this._onChange}">${e(`severity`,`Severity ↓`)} ${this.showFile?e(`file`,`File ↑`):B} ${this.showConfidence?z`${e(`confidence-desc`,`Confidence ↓`)}${e(`confidence-asc`,`Confidence ↑`)}`:B} ${this.showPriority?z`${e(`priority-desc`,`Priority ↓`)}${e(`priority-asc`,`Priority ↑`)}`:B}</select>`}_onChange=e=>{this.dispatchEvent(new CustomEvent(`sort-change`,{detail:{kind:`findings`,value:e.target.value},bubbles:!0,composed:!0}))}};customElements.define(`findings-sort`,Eo);var Do=`: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
|
-
`,
|
|
19
|
-
`,jo=z`<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>`,Mo=z`<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>`,No=class extends V{static properties={url:{type:String},editable:{type:Boolean,reflect:!0},editing:{type:Boolean,reflect:!0},_copied:{state:!0}};static styles=R(Ao);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?Kn(this.url):`Set repo`;return z`<span class="${e?`chip`:`chip empty`}" aria-hidden="true" inert>${jo} <span class="label">${t}</span> <button type="button" class="edit-btn">${Mo}</button> </span><input type="text" .value="${N(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?Kn(this.url):`Set repo`,n=e?this._copied?`chip copied`:`chip`:`chip empty`;return z`<span class="${n}" @click="${e?null:this._onEdit}">${jo} ${e?this._slugLabel(t):z`<span class="label">${t}</span>`} <button type="button" class="edit-btn" aria-label="Edit repo URL" @click="${this._onEdit}">${Mo}</button></span>`}if(this.url){let e=this._copied?`chip readonly copied`:`chip readonly`;return z`<span class="${e}">${jo} ${this._slugLabel(Kn(this.url))}</span>`}return B}_slugLabel(e){return z`<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=Kn(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`,No);var Po=z`<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>`,Fo=z`<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>`,Io=z`<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>`,Lo=br(wr.replace(`width="14" height="14"`,`width="12" height="12"`)),Ro=z`<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>`,zo=z`<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>`,Bo=z`<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>`,Vo=[{key:`comment`,glyph:Po,label:`commented`,stateKey:`filterComment`,hasKey:`hasComment`},{key:`fix`,glyph:Fo,label:`fixed`,stateKey:`filterFix`,hasKey:`hasFix`},{key:`flag`,glyph:Io,label:`flagged`,stateKey:`filterFlagged`,hasKey:`hasFlagged`},{key:`duplicates`,glyph:Lo,label:`rows with duplicates in other reports`,stateKey:`filterDuplicates`,hasKey:`hasDuplicates`},{key:`cross-context`,glyph:Ro,label:`rows across multiple repos or packages`,stateKey:`filterCrossContext`,hasKey:`hasCrossContext`},{key:`app-stacked`,glyph:zo,label:`stacked App rows`,stateKey:`filterAppStacked`,hasKey:`hasAppStacked`},{key:`security`,glyph:Bo,label:`security-related rows`,stateKey:`filterSecurity`,hasKey:`hasSecurityContrast`}],Ho=new Set([`duplicates`,`cross-context`,`app-stacked`,`security`]),Uo=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=Vo.filter(e=>this.group===`context`===Ho.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?B:z`${e.map(e=>{let t=j[e.stateKey],n=Ho.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 z`<button type="button" class="${F({"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`,Uo);var Wo=[[`critical`,`Critical`],[`high`,`High`],[`medium`,`Medium`],[`low`,`Low`],[`high_bug`,`High bug`],[`bug`,`Bug`],[`informational`,`Info`]],Go=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):j.filterSeverities,t=Wo.filter(([t])=>(this.counts[t]??0)||e.has(t));return t.length===0?B:z`${t.map(([t,n])=>{let r=this.counts[t]??0,i=e.has(t);return z`<button type="button" class="${F({"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`,Go);var Ko=[[`corrected`,`Corrected`,`Show corrected severities (application-specific re-ratings)`],[`original`,`Original`,B]],qo=class extends A{createRenderRoot(){return this}connectedCallback(){super.connectedCallback(),X(this,{role:`group`,"aria-label":`Severity display mode`})}render(){let e=j.severityMode;return z`<span class="severity-mode-label">Severity</span><span class="severity-mode-chips">${Ko.map(([t,n,r])=>{let i=e===t;return z`<button type="button" class="${F({"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`,qo);var Jo=z`<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>`,Yo=`Show underlying code findings`,Xo=z`<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>`,Zo=`Show only upstream dependency findings`,Qo=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=j.revalidateConflicts.size,t=e>0?z`<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>`:B,n=j.showRevalidation!==!1,r=n&&j.revalidationDetailed===!0,i=j.upstreamOnly===!0,a=i&&!this.upstreamDisabled;return z`${t}${e===0&&this.canDrop?z`<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>`:B}${e===0&&this.canDrop&&this.canDetail?z`<button type="button" class="${F({"revalidation-detail":!0,on:r})}" aria-pressed="${String(r)}" aria-label="${Yo}" data-tooltip="${Yo}" ?disabled="${!n||i}" @click="${this._toggleDetail}">${Jo}</button>`:B}${this.canUpstream?z`<button type="button" class="${F({"revalidation-upstream":!0,on:a})}" aria-pressed="${String(a)}" aria-label="${Zo}" data-tooltip="${Zo}" ?disabled="${this.upstreamDisabled}" @click="${this._toggleUpstream}">${Xo}</button>`:B}`}_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`,Qo);var $o=z`<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>`,es=class extends A{createRenderRoot(){return this}render(){let e=j.currentView===`bundles`&&j.selectedBundle,t=!j.currentFile&&!e;return z`<button type="button" class="danger" ?disabled="${t}">${$o}<span>Delete current</span></button>`}};customElements.define(`sidebar-delete-current`,es);var ts=z`<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>`,ns=z`<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>`,rs={packages:{title:`Show packages`,icon:ts,view:`packages`},repositories:{title:`Show repositories`,icon:ns,view:`repositories`}},is=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 B;let e=bo(`sidebar-view-button`,rs,this.kind);if(!e)return B;let t=j.currentView===e.view;return z`<button type="button" class="${F({"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`,is);var as=[`invalid`,`deleted`],os={package:{stateKey:`packageSlideTriage`},repository:{stateKey:`repositorySlideTriage`}},ss=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=bo(`slide-triage-tabs`,os,this.kind);if(!e)return B;let t=j[e.stateKey],n=as.filter(e=>(this.counts[e]??0)>0||t===e);return n.length===0?B:z`${n.map(e=>{let n=t===e,r=this.counts[e]??0;return z`<button type="button" class="${F({"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`,ss);var cs=[[`own`,`Sources`],[`modules`,`Deps`]],ls=class extends A{createRenderRoot(){return this}connectedCallback(){super.connectedCallback(),X(this,{role:`group`,"aria-label":`Source filter`})}render(){return z`${cs.map(([e,t])=>{let n=j.filterSources.has(e);return z`<button type="button" class="${F({"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`,ls);var us=z`<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>`,ds=z`<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>`,fs={findings:{stateKey:`filterInclude`,placeholder:`Search findings…`},files:{stateKey:`filesSearch`,placeholder:`Search files…`}},ps=class extends A{static properties={kind:{type:String}};createRenderRoot(){return this}constructor(){super(),this.kind=``}render(){let e=bo(`toolbar-search`,fs,this.kind);if(!e)return B;let t=j[e.stateKey];return z`${us} <input type="text" aria-label="${e.placeholder}" placeholder="${e.placeholder}" .value="${N(t)}" @input="${this._onInput}"> ${this.kind===`findings`&&t?this._negateToggle():B}`}_negateToggle(){let e=j.filterIncludeNegate;return z`<button type="button" class="${F({"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}">${ds}</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`,ps);var ms=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??ge,label:e==null?`(no repo)`:Kn(e),special:e==null}))];return z`<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`,ms);var hs={"":{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`}},gs=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 z`<select class="sort-select" aria-label="Filter by revalidation outcome" .value="${N(j.filterRevalidate)}" @change="${this._onChange}"><option value="" hidden ?selected="${j.filterRevalidate===``}"></option><option value="">Confidence</option>${this.options.map(e=>z`<option value="${e.value}" ?selected="${j.filterRevalidate===e.value}">${e.label}</option>`)}</select> ${this.hasPartial&&j.filterRevalidate===`confirmed`?this._partialChip():B}`}_partialChip(){let e=hs[j.filterPartial]??hs[``];return z`<button type="button" class="${F({"partial-cycle":!0,[e.cls]:!0})}" data-tooltip="${e.title}" @click="${this._onPartial}">${e.label}</button>`}_onPartial=()=>{let e=ir.indexOf(j.filterPartial),t=ir[(e+1)%ir.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`,gs);var _s=[[`none`,`none`,`unmarked`],[`red`,`r`,`red`],[`blue`,`b`,`blue`],[`green`,`g`,`green`],[`gray`,`x`,`gray`]],vs=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):j.filterColors;return _s.some(([t])=>(this.counts[t]??0)||e.has(t))?z`${_s.map(([t,n,r])=>{let i=this.counts[t]??0,a=e.has(t);return z`<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>`})}`:B}_toggle(e){this.dispatchEvent(new CustomEvent(`color-toggle`,{detail:{color:e,kind:this.kind},bubbles:!0,composed:!0}))}};customElements.define(`triage-filter`,vs);var ys=[`inprogress`,`fixed`,`invalid`,`deleted`,`ignored`],bs={graph:`graph2-triage-selector`,packages:`packages-triage-selector`},xs={inprogress:`In progress`},Ss=e=>xs[e]??e.charAt(0).toUpperCase()+e.slice(1),Cs=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??ys,t=e.reduce((e,t)=>e+(this.counts[t]??0),0),n=this.variant?bs[this.variant]:null;this.variant&&n===void 0&&console.warn(`<triage-selector>: unknown variant ${JSON.stringify(this.variant)}; expected one of ${Object.keys(bs).map(e=>JSON.stringify(e)).join(`, `)} or "".`);for(let e of Object.values(bs))this.classList.toggle(e,e===n);let r=t===0&&!j.shownTriage;return this.classList.toggle(`is-empty`,r),r?B:z`${e.map(e=>{let t=this.counts[e]??0,n=j.shownTriage===e;if(t===0&&!n)return B;let r=Ss(e);return z`<button type="button" class="${F({"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`,Cs);var ws={table:z`<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:z`<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:z`<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:z`<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:z`<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:z`${br(Cr)}`},Ts={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)`},Es=[`kanban`,`focus`,`table`,`list`,`grouped`,`graph`],Ds=class extends A{static properties={modes:{type:String},kind:{type:String}};createRenderRoot(){return this}constructor(){super(),this.modes=Es.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=>Es.includes(e)),n=t.length>0?t:Es;return z`${n.map(t=>z`<button type="button" class="${F({"view-mode-btn":!0,active:e===t})}" aria-label="${Ts[t]}" aria-pressed="${String(e===t)}" @click="${()=>this._select(t,e)}">${ws[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`,Ds);var Os=`/api/oauth/github/link`,ks={"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.`},As=e=>new Date(e).toLocaleDateString(void 0,{month:`short`,day:`numeric`,year:`numeric`}),js=class extends V{static properties={session:{attribute:!1},linkError:{attribute:!1},_profile:{state:!0},_pending:{state:!0},_busy:{state:!0},_error:{state:!0},_avatarRevision:{state:!0}};constructor(){super(),this._profile=null,this._avatarRevision=0,this._controller=new AbortController}createRenderRoot(){return this}disconnectedCallback(){super.disconnectedCallback(),this._controller.abort(),this._key=null}get _readOnly(){return!!this.session?.viewer||u()!==null}async _load(){let e=this._key;this._busy=!0,this._error=null;try{let t=await Ve({signal:this._controller.signal});e===this._key&&(this._profile=t)}catch(t){e===this._key&&t.name!==`AbortError`&&(this._error=t.message)}finally{e===this._key&&(this._busy=!1)}}async _change(e,t=null){if(this._busy||this._readOnly)return;let n=this._key;this._busy=!0,this._error=null;try{let r=await e(this.session.csrfToken,{signal:this._controller.signal});if(n!==this._key)return;let i=r.avatarAccount!==this._profile?.avatarAccount;i&&this._avatarRevision++,this._profile=r,ln(this.session.id,r,i,t),document.dispatchEvent(new CustomEvent(`managed-profile-change`,{detail:{userId:this.session.id,name:r.name,avatarChanged:i}}))}catch(e){n===this._key&&e.name!==`AbortError`&&(this._error=e.message)}finally{n===this._key&&(this._busy=!1,this._pending=null)}}_choose(e,t){return this._busy||this._readOnly?Promise.resolve():(this._pending={[`${e}Account`]:t},this._change((n,r)=>Ue({[e]:t},n,r)))}_unlink(e){return this._change((t,n)=>Ge(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 z`<span class="${`managed-profile-avatar${r?` is-large`:``}`}" aria-hidden="true"><span>${(n[0]??`?`).toUpperCase()}</span> ${u()?B:z`<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 z`<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 ${As(i)}`}</span></span></span></td><td><label class="managed-profile-choice"><input type="radio" name="managed-profile-name" .checked="${N(a.nameAccount===e)}" ?disabled="${s}" aria-label="${`Use @${n}'s name`}" @change="${()=>this._choose(`name`,e)}"> ${r?z`<span>${r}</span>`:z`<span class="managed-profile-muted">No name</span>`}</label></td><td><label class="managed-profile-choice"><input type="radio" name="managed-profile-avatar" .checked="${N(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?B:z`<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?ks[this.linkError]??`Could not link the account (${this.linkError}).`:null;return z`<section class="managed-profile"><header class="managed-profile-card">${this._avatar(this.session?.id??``,{initial:n,large:!0})}<div><h1>${r||`@${n}`}</h1>${r?z`<p class="managed-profile-muted">@${n}</p>`:B}</div></header>${i?z`<p class="managed-profile-error" role="alert">${i}</p>`:B} ${this._error?z`<p class="managed-profile-error" role="alert">${this._error}</p>`:B}<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?z`<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>`:B} ${this._readOnly?z`<p class="managed-profile-muted">${this.session?.viewer?`Viewing as another user is read only.`:`The preview changes nothing.`}</p>`:z`<a class="npm-review-button npm-review-primary" href="${Os}">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`,js);var Ms=class extends A{createRenderRoot(){return this}render(){return j.reports.length>0&&j.currentView===`findings`&&j.viewMode!==`graph`&&j.viewMode!==`kanban`?z`<button type="button" class="toolbar-export-btn" aria-label="Download or print report" @click="${this._onClick}">${t}</button>`:B}_onClick=()=>{this.dispatchEvent(new CustomEvent(`download-requested`,{bubbles:!0,composed:!0}))}};customElements.define(`download-button`,Ms);var Ns=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&&(er(),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`}},Ps={open:`Open`,draft:`Draft`,closed:`Closed`,merged:`Merged`,completed:`Completed`,not_planned:`Not planned`,duplicate:`Duplicate`,unknown:`Closed`},Fs=z`<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>`,Is=z`<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>`,Ls={completed:z`<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:z`<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>`},Rs=class extends Ns{static properties={url:{type:String},compact:{type:Boolean,reflect:!0}};static styles=[Ns.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=Yt(()=>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 z`${this.url}`;let e=Ft(this.url),t=!e&&Vt(this.url),n=e||t,r=Wt.read(this.url);if(!r&&!n){let e=`Open fix link: ${this.url}`;return z`<a class="${this.compact?`fix-link`:``}" href="${this.url}" target="_blank" rel="noopener noreferrer" draggable="false" data-tooltip="${this.compact?e:B}" aria-label="${e}">${this.compact?z`<slot></slot>`:this.url}</a>`}let i=r?t&&r.status===`closed`?r.stateReason??`unknown`:r.status:`unavailable`,a=e?Fs:t?Ls[i]??Is: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?`${Ps[i]} ${e?`pull request`:`issue`}: ${r.title} (${o})`:n?`Open ${e?`pull request`:`issue`}: ${o}`:`Open fix link: ${this.url}`;return z`<a class="fix-link" href="${this.url}" target="_blank" rel="noopener noreferrer" draggable="false" aria-label="${c}" aria-details="${this.compact&&n?`fix-preview`:B}" data-tooltip="${this.compact&&!n?c:B}" @mouseenter="${this._schedulePreview}" @mouseleave="${this._leavePreview}" @focus="${this._schedulePreview}" @blur="${this._leavePreview}" @click="${this._hidePreview}">${this.compact?a?z`<span class="${`status ${i}`}">${a}</span>`:z`<slot></slot>`:z`${a?z`<span class="${`link-icon ${i}`}">${a}</span>`:B} <span class="link-title">${r?.title??(o||this.url)}</span> ${r?z`<span class="ref">${o}</span><span class="${`link-status ${i}`}">${Ps[i]}</span>`:B}`} </a>${this.compact&&n?z`<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?Ps[i]:e?`Pull request`:`Issue`}</span></div>${r?z`<div class="preview-title">${r.title}</div>`:B} ${r?.description?z`<div class="preview-description">${r.description}</div>`:B}</a>`:B}`}};customElements.define(`managed-fix-link`,Rs);var zs=class extends Ns{static properties={finding:{attribute:!1},comment:{type:String}};static styles=[Ns.styles,R(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?re(this.finding.id,()=>this.requestUpdate()):null}_resetComments=()=>{this._hidePreview(),this.requestUpdate()};_previewClick(e){if(e.target.closest(`a, button`)){this._hidePreview();return}window.getSelection?.()?.toString()||(e.stopPropagation(),this.renderRoot.querySelector(`.preview-trigger`).click())}render(){let e=M(),t=e?_(this.finding):[];if(!(e?t.length>0:this.comment))return B;let n=(e?t.map(e=>e.body):[this.comment]).some(e=>e.split(/[\r\n]/u).some(e=>e.length>100));return z`<button type="button" class="preview-trigger mark-comment" aria-label="${e?`View comments`:`Edit comment`}" aria-details="comment-preview" @mouseenter="${this._schedulePreview}" @mouseleave="${this._leavePreview}" @focus="${this._schedulePreview}" @blur="${this._leavePreview}" @click="${this._hidePreview}"><slot></slot></button><div class="${n?`preview wide`:`preview`}" id="comment-preview" popover="manual" role="region" aria-label="${e?`Comments`:`Comment`}" @mouseenter="${this._keepPreview}" @mouseleave="${this._leavePreview}" @focusin="${this._keepPreview}" @focusout="${this._leavePreview}" @click="${this._previewClick}">${e?t.map(e=>xe(e,Ce(e.body))):z`<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`,zs);function Bs(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 en()},get findings(){return en().flat()},get currentFile(){return j.currentFile},get currentWorkspace(){return j.currentWorkspace},triage:{get markers(){return Bs(`color`)},get triageState(){return Bs(`triage`)},get comments(){return Bs(`comment`)},get fixes(){return Bs(`fix`)},get flags(){return Bs(`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($e())throw Error(`DeepView.triage.set: triage is read-only on this page`);let o=!1;if(t!==void 0&&(t===null||t===``?P(j.triage,e,{color:void 0})&&(o=!0):j.triage.get(e)?.color!==t&&(P(j.triage,e,{color:t}),o=!0)),n!==void 0){if(n===null||n===``||n===!1)P(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&&(P(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&&(P(j.triage,e,{comment:t}),o=!0):P(j.triage,e,{comment:void 0})&&(o=!0)}if(i!==void 0){let t=i?String(i):``;t?j.triage.get(e)?.fix!==t&&(P(j.triage,e,{fix:t}),o=!0):P(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&&(P(j.triage,e,{flagged:t}),o=!0)}return o&&(await y(),D()),o}},forceManagedMode:Ot,setTheme:za,get theme(){return Ba()},triageSync:pe,refresh(){D()},export(){return Mn()},compareReports(){return An()}};var Vs={default:C.default,"claude-security":C[`claude-security`],"codex-security":C[`codex-security`],deepsec:C.deepsec,piolium:C.piolium,"markdown-generic":C[`markdown-generic`],bundle:xr,workspace:Sr,links:wr,github:Tr};for(let e of document.querySelectorAll(`.drop-supported-icon[data-icon]`)){let t=Vs[e.dataset.icon];t&&(e.innerHTML=$n(t))}En(D),Ae(D),wn(D),pe.onStatusChange(D),bn(async(e,t)=>{j.currentWorkspace===e?await on(e):j.currentFile&&j.currentFile===t?await qt(t):await E()}),xn(async()=>{await E(),j.currentView===`bundles`&&D()}),kr(),Mr();async function Hs(){let e=xt();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 be({id:t.id,name:t.name,privateKey:t.privateKeyBase64});if(n.status===`already-attached`)return alert(`This workspace is already attached as "${n.workspace.name}".`),!1;if(n.status===`name-collision`){let e=n.existing?.name;return alert(e?`A workspace named "${e}" already exists. Open the share link again and pick a different name.`:`The shared workspace name is empty or invalid. Ask the sender to re-share with a real name.`),!1}return n.workspace?.id?await on(n.workspace.id):await E(),!0}async function Us(){let e=cr();if(!e)return!1;try{history.replaceState(null,``,location.pathname)}catch{}let t=await mt(e);return t.ok?!0:(alert(t.reason),!1)}var Ws=!1;async function Gs(){if(await Mt(),!Ws&&(M()||!S()||ct())){Ws=!0;try{await Ks()}finally{pt.hidden=!1,ft()}}}async function Ks(){let e=ve(),t=()=>e===ve()&&!M();if(M()){await E();return}if(await Bt(),!t()||(he(),await Promise.all([E(),Oe().catch(e=>console.warn(`initial linked findings:`,e))]),!t())||await Hs()||!t()||await Us()||!t())return;let n=Pt(Rt);if(n){if(n.startsWith(`wbs:`)||n.startsWith(`wrs:`))await Zt(n.slice(4),n.startsWith(`wrs:`)?`reports`:`bundles`);else if(n.startsWith(`ws:`)){let e=n.slice(3);v().some(t=>t.id===e)&&await on(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((j.bundles??[]).some(e=>e.integrity===r)){let e=v().filter(e=>e.bundles.includes(r));Qt(r,a,{workspaceId:e.length===1?e[0].id:null}),D(),dn(r),await E()}}else{let e=await Cn();if(!t())return;let r=Le(n);r&&e.includes(r.name)&&await qt(r.name,void 0,{workspaceId:r.workspaceId})}}}var qs=!1,Js=!1;document.addEventListener(`managed-client-mode-change`,()=>{qs=!M()&&S()});function Ys(e){Js||(Js=!0,queueMicrotask(()=>{alert(e+` This tab will reload to refresh its state. Any unsaved edits in this tab will be lost.`),location.reload()}))}gt(async()=>{if(await Mt(),M()){D();return}let e=qs,t=S();if(qs=t,D(),!Ws&&ct()){Gs().catch(e=>console.warn(`continueBoot:`,e));return}if(Ws&&t&&!ct()){Ys(`Encryption was just enabled in another tab.`);return}Ws&&e&&!t&&!nt()&&Ys(`Encryption was disabled in another tab.`)}),window.addEventListener(`hashchange`,()=>{!Ws||M()||(async()=>{await Hs()||await Us()})().catch(e=>console.warn(`deep-link hashchange:`,e))}),(async()=>{if(!await Hr()){await Mt(),qs=!M()&&S();try{let e=window.matchMedia?.(`(display-mode: window-controls-overlay)`),t=()=>{let t=!1;try{t=localStorage.getItem(`deepview.sidebarCollapsed`)===`1`}catch{}St.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()&&S()&&!ct()||await Gs()}})();
|
|
7
|
+
${t}`)}`;try{window.location.href=n,wi(Oe)}catch{}return}if(W(e,`.mark-fix`)){let t=W(e,`[data-gid]`)?.dataset.gid,n=t?O(t):null;if(!n)return;let r=C(n);if(!b(r))return;let i=an(n),a=at(r)?.fix??``;Hn({initial:a,finding:r,canApplyToGroup:Dt(i,a)}).then(e=>{if(e===null||!b(r))return null;let n=e.scope===`group`?i.filter(e=>b(e)&&(e===r||Nt(e,a))):[r],o=!1;for(let t of n)N(A.triage,nr(t),{fix:e.value||void 0})&&(o=!0);return o&&(n.length>1&&A.activeTabByGroup.set(t,nr(r)),U(),queueMicrotask(y)),null}).catch(()=>{});return}let ke=W(e,`[data-flag-toggle]`);if(ke){let t=ke.dataset.flagToggle,n=W(e,`[data-gid]`)?.dataset.gid,r=(n?O(n):null)?.find(e=>nr(e)===t);if(!r||!b(r))return;let i=at(r)?.flagged;N(A.triage,t,{flagged:i!==!0}),y(),U();return}let Ae=e.target.closest(`[data-triage-show]`);if(Ae&&!Ae.closest(`.graph2-triage-selector`)){let e=Ae.dataset.triageShow;A.shownTriage=A.shownTriage===e?null:e,E();return}if(e.target.closest(`[data-table-deselect]`)){A.tableSelectedGid=null,U();return}let je=e.target.closest(`[data-tree-select]`);if(je){let e=je.dataset.treeSelect;A.filesSelectedFile=A.filesSelectedFile===e?null:e,E();return}e.target.closest(`[data-tree-deselect]`)&&(A.filesSelectedFile=null,E())});var Ai=document.querySelector(`#bundle-source-overlay-slot`);Ai&&Ai.addEventListener(`click`,Oi);function ji(e){let t=e?O(e):null;t&&qt(t)&&queueMicrotask(y)}w.addEventListener(`row-select`,e=>{let t=e.detail?.gid;if(!t)return;let n=A.tableSelectedGid!==t;A.tableSelectedGid=n?t:null,n&&ji(t),U()});var Mi=`application/x-deepview-kanban-gid`;function Ni(e,t){for(let n of e)b(n)&&An(A.triage,n,t,Kn())}function Pi(){for(let e of w.querySelectorAll(`.kanban-card.dragging`))e.classList.remove(`dragging`);for(let e of w.querySelectorAll(`.kanban-column.drag-over`))e.classList.remove(`drag-over`)}w.addEventListener(`dragstart`,e=>{let t=e.target.closest?.(`.kanban-card[data-kanban-source]`);if(!t||!e.dataTransfer)return;let n=t.dataset.gid;if(!n)return;let r=O(n);if(!r||Ht(r).length===0){e.preventDefault();return}e.dataTransfer.setData(Mi,n),e.dataTransfer.setData(`text/plain`,n),e.dataTransfer.effectAllowed=`move`,t.classList.add(`dragging`)}),w.addEventListener(`dragend`,Pi),w.addEventListener(`dragover`,e=>{if(!e.dataTransfer?.types.includes(Mi))return;let t=e.target.closest?.(`.kanban-column[data-kanban-target]`);if(t&&(e.preventDefault(),e.dataTransfer.dropEffect=`move`,!t.classList.contains(`drag-over`))){for(let e of w.querySelectorAll(`.kanban-column.drag-over`))e!==t&&e.classList.remove(`drag-over`);t.classList.add(`drag-over`)}}),w.addEventListener(`dragleave`,e=>{let t=e.target.closest?.(`.kanban-column[data-kanban-target]`);t&&(t.contains(e.relatedTarget)||t.classList.remove(`drag-over`))}),w.addEventListener(`drop`,e=>{if(!e.dataTransfer?.types.includes(Mi))return;let t=e.target.closest?.(`.kanban-column[data-kanban-target]`);if(!t){Pi();return}e.preventDefault();let n=e.dataTransfer.getData(Mi),r=t.dataset.kanbanTarget;if(Pi(),!n||!r)return;let i=O(n);if(!i||(Ct(i).commonTriage??`untriaged`)===r)return;let a=Ht(i);a.length!==0&&(Ni(a,r),E(),queueMicrotask(y))});var Fi=!1,Ii=[`theme-w95`,`theme-paper`];function Li(){return!!document.startViewTransition&&!Ii.some(e=>document.body.classList.contains(e))}function G(e){return e?w.querySelector(`.kanban-card[data-gid="${CSS.escape(e)}"]`):null}function Ri(e){let t=e??w.querySelector(`.kanban-card`);if(!t)return;let n=t.getBoundingClientRect();n.width<=0||n.height<=0||(document.documentElement.style.setProperty(`--kanban-clip-card-w`,`${Math.floor(n.width)}px`),document.documentElement.style.setProperty(`--kanban-clip-card-h`,`${Math.floor(n.height)}px`),document.documentElement.style.setProperty(`--kanban-return-card-bg`,getComputedStyle(t).backgroundColor))}function zi(e){A.kanbanPopoverGid=e,A.focusCodeStack=[],A.focusCodeAt=0}function Bi(){l()}function K(e){let t=A.kanbanPopoverGid;if(t===e)return;let n=t===null&&e!==null,r=t!==null&&e===null;if(!Li()||!n&&!r){ji(e),zi(e),E(),Bi();return}if(Fi)return;ji(e),Fi=!0;let i=n?`kanban-opening`:`kanban-closing`;document.documentElement.classList.add(i);let a=e=>{e&&(e.style.viewTransitionName=``),document.documentElement.classList.remove(i),Fi=!1};if(n){let t=G(e);t?(Ri(t),t.style.viewTransitionName=`kanban-detail-modal`,t.getBoundingClientRect()):Ri(),zi(e);let n=kt(()=>{E(),Bi(),t&&(t.style.viewTransitionName=``)}),r=setTimeout(()=>a(t),600);(async()=>{try{await n.finished}catch{}clearTimeout(r),a(t)})();return}Ri(),zi(e);let o=null,s=kt(()=>{E(),o=G(t),o&&(Ri(o),o.style.viewTransitionName=`kanban-detail-modal`)}),c=setTimeout(()=>a(o??G(t)),600);(async()=>{try{await s.finished}catch{}clearTimeout(c),a(o??G(t))})()}function Vi(e){let t=G(A.kanbanPopoverGid),n=t?.closest(`.kanban-column`);if(!n)return;let r=[...n.querySelectorAll(`.kanban-card[data-kanban-source]`)],i=r.indexOf(t);if(i<0)return;let a=Math.min(Math.max(i+e,0),r.length-1);if(a===i)return;let o=r[a].dataset.gid;if(!o)return;K(o);let s=G(o);s&&(s.focus({preventScroll:!0}),s.scrollIntoView({block:`nearest`,behavior:`instant`}))}var Hi=null;function Ui(){qe(),A.focusCodeStack=[],A.focusCodeAt=0,E(),Hi?.isConnected&&Hi.focus({preventScroll:!0}),Hi=null}w.addEventListener(`click`,e=>{let t=W(e,`[data-links-preview]`);if(t){e.preventDefault(),Hi=t;let n=t.dataset.previewRow,r=Ye(t.dataset.linksPreview,t.dataset.previewReport,n===void 0?void 0:Number(n),t.dataset.previewManagedReport);E(),w.querySelector(`.kanban-detail-close`)?.focus({preventScroll:!0}),r.then(()=>{E(),l();let e=We()?.group?.[0]._bundleHashes;if(Array.isArray(e))for(let t of e)mn(t).catch(()=>{});return null});return}if(e.target.closest?.(`.kanban-detail-close`)){if(We()){Ui();return}K(null);return}if(e.target.closest?.(`[data-kanban-detail-fullscreen]`)){A.kanbanDetailFullscreen=!A.kanbanDetailFullscreen;try{localStorage.setItem(en,String(A.kanbanDetailFullscreen))}catch{}E(),l();return}let n=e.target.closest?.(`[data-kanban-expand]`);if(n){let e=n.dataset.kanbanExpand,t=A.kanbanExpandedColumn===e?null:e;A.kanbanExpandedColumn=t,t&&A.kanbanPopoverGid&&G(A.kanbanPopoverGid)?.closest(`.kanban-column`)?.dataset.kanbanTarget!==t&&(A.kanbanPopoverGid=null),E();return}let r=e.target.closest?.(`[data-kanban-nav]`);if(r){Vi(r.dataset.kanbanNav===`next`?1:-1);return}let i=e.target.closest?.(`[data-kanban-select]`);if(i){if(window.getSelection?.()?.toString())return;let e=i.dataset.gid;e&&K(e);return}if(e.target.closest?.(`.kanban-action:not(.kanban-fix-note)`))return;let a=e.target.closest?.(`.kanban-card[data-kanban-source]`);if(a){if(window.getSelection?.()?.toString())return;let e=a.dataset.gid;if(!e)return;K(A.kanbanPopoverGid===e?null:e);return}if(!W(e,`.kanban-detail-modal, .kanban-detail-side`)){if(We()){Ui();return}A.kanbanPopoverGid&&K(null)}}),w.addEventListener(`change`,e=>{let t=e.target.closest?.(`[data-kanban-column]`);if(!t)return;let n=t.selectedOptions[0]?.dataset.gid;n&&K(n)}),document.addEventListener(`keydown`,e=>{if(e.key===`Escape`){if(We()){!e.defaultPrevented&&!Xi(e)&&!document.querySelector(`:popover-open:not(#styled-tooltip)`)&&Ui();return}if(A.kanbanPopoverGid){K(null);return}A.viewMode!==`kanban`||A.kanbanExpandedColumn===null||(A.kanbanExpandedColumn=null,E())}});function Wi(e){let t=W(e,`[data-gid]`)?.dataset?.gid;return t?O(t):null}function Gi(e,t){if(!t.integrity||!t.file)return;let n=f(e);if(!n)return;let r=xn(n,t);r&&(A.focusCodeStack=r.stack,A.focusCodeAt=r.at,E()),t.range||Ki(),l()}function Ki(){for(let e of w.querySelectorAll(`.focus-code-body`))e.scrollTop=0,e.scrollLeft=0}w.addEventListener(`keydown`,e=>{if(e.key!==`Enter`&&e.key!==` `)return;let t=W(e,`[data-code-nav-file]`);t&&(e.preventDefault(),Gi(Wi(e),{integrity:t.dataset.codeNavIntegrity,file:t.dataset.codeNavFile,range:Zn(t.dataset.codeNavLine)}))});function qi(e){let t=Tn(A.focusCodeStack,A.focusCodeAt,e);t!==A.focusCodeAt&&(A.focusCodeAt=t,E(),A.focusCodeStack[t]?.range||Ki(),l())}function Ji(e){if(!e||A.focusGid===e)return;ji(e),A.focusGid=e,A.focusCodeStack=[],A.focusCodeAt=0,E();let t=w.querySelector(`.focus-side-card.active`);t&&t.scrollIntoView({block:`nearest`,behavior:`instant`}),l()}function Yi(e){let t=[...w.querySelectorAll(`.focus-side-card[data-focus-select]`)];if(t.length===0)return;let n=t.findIndex(e=>e.classList.contains(`active`)),r=n<0?e>0?0:t.length-1:Math.min(Math.max(n+e,0),t.length-1);if(r===n)return;let i=t[r].dataset.gid;i&&Ji(i)}w.addEventListener(`click`,e=>{let t=e.target.closest?.(`[data-focus-nav]`);if(t){Yi(t.dataset.focusNav===`next`?1:-1);return}let n=e.target.closest?.(`.focus-side-card[data-focus-select]`);if(!n||window.getSelection?.()?.toString())return;let r=n.dataset.gid;r&&Ji(r)}),w.addEventListener(`pointerdown`,e=>{if(e.button!==0)return;let t=e.target.closest?.(`[data-focus-splitter]`);t&&ri(t,e)}),w.addEventListener(`dblclick`,e=>{let t=e.target.closest?.(`[data-focus-splitter]`);t&&ni(t)});function Xi(e){if(document.querySelector(`dialog[open]`))return!0;for(let t of e.composedPath()){if(!t||t.nodeType!==1)continue;let e=t.tagName;if(e===`INPUT`||e===`TEXTAREA`||e===`SELECT`||e===`DIALOG`&&t.open||t.isContentEditable)return!0}return!1}document.addEventListener(`keydown`,e=>{if(A.currentView!==`findings`)return;let t=A.viewMode===`focus`,n=A.viewMode===`kanban`&&A.kanbanPopoverGid!==null;if(!t&&!n||e.metaKey||e.ctrlKey||e.altKey||e.shiftKey||Xi(e))return;let r=0;if(e.key===`ArrowRight`)r=1;else if(e.key===`ArrowLeft`)r=-1;else return;e.preventDefault();let i=e.target?.closest?.(`[data-focus-splitter]`);if(i){ti(i,r*Zr);return}t?Yi(r):Vi(r)}),w.addEventListener(`mark-color`,e=>{let t=W(e,`[data-gid]`);if(!t)return;let n=t.dataset.gid,r=O(n);if(!r)return;let i=C(r);if(!b(i))return;let a=nr(i),o=e.detail?.color;o&&(at(i)?.color===o?N(A.triage,a,{color:void 0}):N(A.triage,a,{color:o}),y(),U())});var q=null,Zi=null,J=null,Qi=!1;function $i(){if(q!==null)return;if(A.reports.length===0){J=null,Qi=!1;return}q=A.viewMode,Zi=document.title;let e=!1;A.viewMode===`table`&&(A.viewMode=`list`,e=!0),J&&(Se(J),e=!0),e&&E();for(let e of w.querySelectorAll(`finding-card`))e.toggleAttribute(`print-one-sample`,Qi),e.ensureRendered({sync:!0});let t=A.reports.map(e=>e.fileName),n=``;t.length===1?n=t[0]:t.length>1&&(n=Jn(t)),n=n.replace(/\.json$/u,``),n&&(document.title=n)}function ea(){if(q===null)return;for(let e of w.querySelectorAll(`finding-card`))e.removeAttribute(`print-one-sample`);Qi=!1;let e=!1;A.viewMode!==q&&(A.viewMode=q,e=!0),J&&(Te(),J=null,e=!0),e&&E(),document.title=Zi,q=null,Zi=null}window.addEventListener(`beforeprint`,$i),window.addEventListener(`afterprint`,ea);async function ta(e,{oneSamplePerGroup:t=!1}={}){if(q===null){J=e,Qi=t;try{$i(),await Promise.all([...w.querySelectorAll(`finding-card`)].map(e=>e.ensureRendered())),window.print()}catch(e){throw ea(),e}}}function na(e,t){if(!e)return t();Se(e);try{return t()}finally{Te()}}document.addEventListener(`download-requested`,async()=>{if(A.reports.length===0)return;let{confirmed:e,view:t,fields:n,mode:r,oneSamplePerGroup:i}=await zn(`download`);if(!await Jt()){ct(`Could not load finding details to export. Open the team again to retry.`);return}if(t){await Bn(na(n,()=>ui({oneSamplePerGroup:i})));return}if(e){if(r===`print`){await ta(n,{oneSamplePerGroup:i});return}na(n,()=>fi({oneSamplePerGroup:i}))}}),w.addEventListener(`analyzer-change`,e=>{A.filterAnalyzer=e.detail.analyzer,A.filterModel=e.detail.model,E()}),w.addEventListener(`repo-change`,e=>{A.filterRepo=e.detail.value,E()}),w.addEventListener(`revalidate-change`,e=>{A.filterRevalidate=e.detail.value,E()}),w.addEventListener(`partial-change`,e=>{A.filterPartial=e.detail.value,E()}),w.addEventListener(`revalidation-change`,e=>{A.showRevalidation=e.detail.on,!e.detail.on&&A.reports.some(e=>(e.groups??[]).some(e=>e.some(e=>!e.isApp&&(e.isUpstream||qn(e.file)))))?ct(`App mode off is not recommended; it can conflate triage for issues in dependencies.`,{kind:`warning`}):e.detail.on&&dt(),sr(A.showRevalidation,A.upstreamOnly),Me(tn(),{resetSort:!1}),E()}),w.addEventListener(`revalidation-conflicts-open`,()=>{(async()=>{let e=await Nn(A.revalidateConflicts);if(!e)return;let t=await Ot(e.id,e.reportName);t.ok||alert(t.reason)})().catch(e=>console.warn(`revalidation: open conflicting finding failed:`,e))}),w.addEventListener(`revalidation-detail-change`,e=>{A.revalidationDetailed=e.detail.on===!0,E()}),w.addEventListener(`upstream-only-change`,e=>{if(A.upstreamOnly=e.detail.on===!0,sr(A.showRevalidation,A.upstreamOnly),!A.upstreamOnly){let e=tn();ke(e,je(e))===`confirmed`&&(A.filterRevalidate=`confirmed`,A.filterPartial=``)}E()}),w.addEventListener(`bundle-search-mode-change`,e=>{let t=e.detail?.mode;if([`files`,`code`,`issues`,`largest`].includes(t)){if(A.bundleCodeSearchMode=t,E(),t===`files`)ye();else if(t===`largest`){let e=document.querySelector(`.bundle-code-rail-body`);e&&(e.scrollTop=0)}}}),w.addEventListener(`bundle-graph-reason-change`,e=>{let t=e.detail?.reason;t!==null&&typeof t!=`string`||(F.bundleReason=t,F.layoutCache=null,F.selected=null,F.solo=null,F.focusedPkg=null,I(),E())}),w.addEventListener(`bundle-search-regex-toggle`,()=>{A.bundleSearchRegex=!A.bundleSearchRegex,E()}),w.addEventListener(`bundle-search-case-toggle`,()=>{A.bundleSearchCase=!A.bundleSearchCase,E()}),w.addEventListener(`bundle-swap`,e=>{let t=e.detail?.integrity;if(!t||!(A.bundles??[]).some(e=>e.integrity===t))return;let n=A.bundles.find(e=>e.integrity===t),r=Yt(e.detail.bundles??[]),i=()=>{setTimeout(()=>$t(r))};if(n.managedId){let t=e.detail.target===void 0?A.selectedBundle:e.detail.target,r=A.bundles.find(e=>e.integrity===t),a=r?.managedId?{compareId:r.managedId,...hr(e.detail.mode)}:null;xt.navigate(s(A.managedTeams,n,A.currentManagedTeam,`compare`,a,A.bundles)).finally(i);return}ln(t,`compare`),D(t,`compare`),E(),T(),_n(t).finally(i)}),w.addEventListener(`bundle-compare-change`,e=>{let{base:t,target:n,mode:r}=e.detail??{};!j()||!t||t!==A.selectedBundle||A.bundleDetailsTab!==`compare`||(A.bundleCompare=n?{bundle:t,target:n,mode:mr(r)}:null,D(t,`compare`))}),w.addEventListener(`sort-change`,e=>{let{kind:t,value:n}=e.detail;if(t===`findings`)A.sortBy=n;else if(t===`packages`)A.packagesSortBy=n;else if(t===`repositories`)A.repositoriesSortBy=n;else return;E()}),w.addEventListener(`range-change`,e=>{e.target.id===`conf-range`&&(A.filterConfMin=e.detail.low,A.filterConfMax=e.detail.high,E())}),w.addEventListener(`input`,e=>{let t=e.composedPath()[0],n=t?.id,r=t?.value;n===`g2-path-filter`&&(F.pathFilter=r,F.graphState?.requestDraw?.())}),w.addEventListener(`search-input`,e=>{if(!e.detail)return;let{kind:t,value:n}=e.detail;if(t===`findings`){A.filterInclude=n,n||(A.filterIncludeNegate=!1),Si();return}if(t===`files`){A.filesSearch=n,Si();return}if(t===`packages`)A.packagesSearchQuery=n;else if(t===`repositories`)A.repositoriesSearchQuery=n;else if(t===`bundle-code`){A.bundleCodeSearchQuery=n,Si();return}else if(t===`bundle-search`){A.bundleSearchQuery=n,Si();return}else return;E()}),w.addEventListener(`search-negate-toggle`,()=>{A.filterIncludeNegate=!A.filterIncludeNegate,E()}),w.addEventListener(`severity-toggle`,e=>{let t=e.detail.severity;if(e.detail.kind===`graph`){F.selectedSeverities.has(t)?F.selectedSeverities.delete(t):F.selectedSeverities.add(t),e.composedPath()[0].selected=[...F.selectedSeverities],F.graphState?.requestDraw?.(),yi();return}A.filterSeverities.has(t)?A.filterSeverities.delete(t):A.filterSeverities.add(t),E()}),w.addEventListener(`color-toggle`,e=>{let t=e.detail.color;if(e.detail.kind===`graph`){F.selectedColors.has(t)?F.selectedColors.delete(t):F.selectedColors.add(t),e.composedPath()[0].selected=[...F.selectedColors],F.graphState?.requestDraw?.(),yi();return}A.filterColors.has(t)?A.filterColors.delete(t):A.filterColors.add(t),E()}),w.addEventListener(`source-toggle`,e=>{let t=e.detail.source,n=A.filterSources.has(t);A.filterSources.clear(),n||A.filterSources.add(t),E()}),w.addEventListener(`annotation-filter-toggle`,e=>{let t=e.detail?.key,n=e=>e===``?`with`:e===`with`?`without`:``;if(t===`comment`)A.filterComment=n(A.filterComment);else if(t===`fix`)A.filterFix=n(A.filterFix);else if(t===`flag`)A.filterFlagged=n(A.filterFlagged);else if(t===`duplicates`&&!A.currentWorkspace)A.filterDuplicates=n(A.filterDuplicates);else if(t===`cross-context`)A.filterCrossContext=n(A.filterCrossContext);else if(t===`app-stacked`)A.filterAppStacked=n(A.filterAppStacked);else if(t===`security`)A.filterSecurity=n(A.filterSecurity);else return;E()}),w.addEventListener(`slide-triage-toggle`,e=>{let{kind:t,value:n}=e.detail;if(t===`package`)A.packageSlideTriage=A.packageSlideTriage===n?null:n;else if(t===`repository`)A.repositorySlideTriage=A.repositorySlideTriage===n?null:n;else return;E()}),w.addEventListener(`view-mode-change`,e=>{if(e.detail.kind===`files`){A.filesViewMode=e.detail.mode,E();return}A.viewMode=e.detail.mode,A.viewMode!==`kanban`&&(A.kanbanPopoverGid=null),A.viewMode!==`focus`&&(A.focusGid=null),E()}),w.addEventListener(`severity-mode-change`,e=>{let t=e.detail?.mode;if(t===`corrected`||t===`original`){A.severityMode=t;try{localStorage.setItem(Gt,t)}catch{}E()}}),w.addEventListener(`repo-edit-start`,()=>{j()||(A.repoEditing=!0,E())}),w.addEventListener(`repo-input`,e=>{j()||(A.repoUrl=e.detail.url,hn(A.currentFile,A.repoUrl))}),w.addEventListener(`repo-commit`,e=>{j()||(A.repoUrl=e.detail.url,hn(A.currentFile,A.repoUrl),A.repoEditing=!1,E())}),w.addEventListener(`repo-cancel`,e=>{j()||(A.repoUrl=e.detail.url,hn(A.currentFile,A.repoUrl),A.repoEditing=!1,E())}),document.addEventListener(`keydown`,e=>{if(e.key===`Escape`){if(A.bundleSourceFindingIdx!=null){A.bundleSourceFindingIdx=null,bi();return}if(A.bundleSourceFile){if(A.currentView===`bundles`&&A.bundleDetailsTab===`code`)return;fn(A.bundleDetailsTab),E()}}});function Y(e,t){for(let[n,r]of Object.entries(t))e.hasAttribute(n)||e.setAttribute(n,r)}var X=Math.PI*2;function ra(e){return()=>{e=e+1831565813|0;let t=e;return t=Math.imul(t^t>>>15,t|1),t^=t+Math.imul(t^t>>>7,t|61),((t^t>>>14)>>>0)/4294967296}}function ia(e,t,n,r){let i=Math.cos(t),a=Math.sin(t);return Math.min(i>0?(n-e.x)/i:i<0?-e.x/i:1/0,a>0?(r-e.y)/a:a<0?-e.y/a:1/0)}function aa(e){return Math.abs(e.reduce((t,n,r)=>{let i=e[(r+1)%e.length];return t+n.x*i.y-i.x*n.y},0))/2}function oa(e){return e.slice(1).reduce((t,n,r)=>t+Math.hypot(n.x-e[r].x,n.y-e[r].y),0)}function sa(e,t,n,r){let i=e.map(e=>e.x),a=e.map(e=>e.y),o={x:(Math.min(...i)+Math.max(...i))/2,y:(Math.min(...a)+Math.max(...a))/2},s=Math.max(...e.map(e=>Math.hypot(e.x-o.x,e.y-o.y))),c=Math.atan2(o.y-t.y,o.x-t.x);return{center:o,distance:Math.hypot(o.x-t.x,o.y-t.y),dx:Math.cos(c)*(80+r()*200)+(r()-.5)*90,dy:n-o.y+s+40,rotation:(r()-.5)*160,delay:r()*120}}function ca(e,t,n=7){let r=ra(n),i={x:e*1820/1920,y:t*90/1080},a=Math.hypot(e,t),o=(e,t)=>e<1e-8?0:e>t-1e-8?t:e,s=n=>({x:o(n.x,e),y:o(n.y,t)}),c=Array.from({length:20},(e,t)=>((t+(r()-.5)*.35)*X/20+X)%X);for(let[n,r]of[[0,0],[e,0],[e,t],[0,t]])c.push((Math.atan2(r-i.y,n-i.x)+X)%X);c.sort((e,t)=>e-t);let l=[.045,.29,.58].map(n=>n*Math.min(e,t)).map(n=>c.map(a=>{let o=Math.min(n*(.92+r()*.16),ia(i,a,e,t));return s({x:i.x+Math.cos(a)*o,y:i.y+Math.sin(a)*o})}));l.push(c.map(n=>{let r=ia(i,n,e,t);return s({x:i.x+Math.cos(n)*r,y:i.y+Math.sin(n)*r})}));let u=l.map((n,a)=>n.map((o,c)=>{let u=n[(c+1)%n.length],d={x:(o.x+u.x)/2,y:(o.y+u.y)/2},f=Math.hypot(u.x-o.x,u.y-o.y),p=o.x===u.x&&(o.x===0||o.x===e)||o.y===u.y&&(o.y===0||o.y===t),m=a===l.length-1||p?0:(r()-.5)*f*.08,h=Math.atan2(d.y-i.y,d.x-i.x);return[o,s({x:d.x+Math.cos(h)*m,y:d.y+Math.sin(h)*m}),u]})),d=l.slice(1).map((e,t)=>e.map((e,n)=>{let a=l[t][n],o=Math.hypot(e.x-a.x,e.y-a.y),u={x:(a.x+e.x)/2,y:(a.y+e.y)/2},d=(c[n]-c[(n+c.length-1)%c.length]+X)%X,f=(c[(n+1)%c.length]-c[n]+X)%X,p=Math.min(d,f)*Math.hypot(u.x-i.x,u.y-i.y),m=(r()-.5)*Math.min(o*.12,p*.14);return[a,s({x:u.x-Math.sin(c[n])*m,y:u.y+Math.cos(c[n])*m}),e]})),f=[],p=e=>{aa(e)>.01&&f.push({points:e,...sa(e,i,t,r)})};p(u[0].flatMap(e=>e.slice(0,-1)));for(let e=0;e<l.length-1;e++)for(let t=0;t<c.length;t++){let n=(t+1)%c.length;p([...d[e][t],...u[e+1][t].slice(1),...d[e][n].toReversed().slice(1),...u[e][t].toReversed().slice(1)])}let m=Math.max(...f.map(e=>e.distance));for(let e of f)e.delay+=e.distance/m*400;let h=[],g=(e,t,n,r)=>{let i=oa(e);i>.1&&h.push({points:e,length:i,delay:t,duration:n,width:r})};for(let e=0;e<c.length;e++){let t=[i,l[0][e],...d.flatMap(t=>t[e].slice(1))];g(t,0,200+oa(t)/a*1e3,1.1)}for(let e of u.slice(0,-1))for(let t of e)g(t,Math.hypot(t[0].x-i.x,t[0].y-i.y)/a*1e3,220+oa(t)/a*400,.7);for(let n of l[1]){let o=Math.atan2(n.y-i.y,n.x-i.x)+(r()-.5)*1.4,c=Math.min(e,t)*(.07+r()*.12),l=[n];for(let e=1;e<=3;e++)l.push(s({x:n.x+Math.cos(o+(r()-.5)*.3)*c*e/3,y:n.y+Math.sin(o+(r()-.5)*.3)*c*e/3}));g(l,Math.hypot(n.x-i.x,n.y-i.y)/a*1e3+80,220,.5)}return{width:e,height:t,impact:i,pieces:f,cracks:h}}var la=`.screen-crack{position:fixed;inset:0;z-index:2147483646;overflow:hidden;pointer-events:none;user-select:none}.screen-crack-svg{position:absolute;inset:0;width:100%;height:100%;overflow:hidden}.screen-crack-glass{position:absolute;inset:0;backdrop-filter:blur(9px) brightness(1.06) saturate(.85);background:linear-gradient(135deg,#dcebff0f,#dcebff00 55%);mask-mode:luminance;opacity:0}.screen-crack-shard{transform-box:fill-box;transform-origin:center}.screen-crack-outline{opacity:0}.screen-crack-flash{position:absolute;width:18vmin;height:18vmin;border-radius:50%;background:radial-gradient(circle,rgb(255 255 255 / .85),rgb(200 230 255 / .15) 55%,transparent 75%);transform:translate(-50%,-50%);opacity:0}@media print{.screen-crack{display:none}}
|
|
8
|
+
`,ua=`http://www.w3.org/2000/svg`,da=null;function fa(){da||(da=new CSSStyleSheet,da.replaceSync(la),document.adoptedStyleSheets=[...document.adoptedStyleSheets,da])}var pa=1.5,ma=0;function Z(e,t={}){let n=document.createElementNS(ua,e);for(let[e,r]of Object.entries(t))n.setAttribute(e,String(r));return n}function ha(e){let t=document.createElement(`div`);t.className=`screen-crack`,t.setAttribute(`aria-hidden`,`true`),fa();let n=Z(`svg`,{viewBox:`0 0 ${e.width} ${e.height}`,preserveAspectRatio:`none`});n.classList.add(`screen-crack-svg`);let r=Z(`defs`),i=`screen-crack-mask-${++ma}`,a=Z(`mask`,{id:i,maskUnits:`userSpaceOnUse`,maskContentUnits:`userSpaceOnUse`,x:0,y:0,width:e.width,height:e.height});a.append(Z(`rect`,{width:e.width,height:e.height,fill:`black`})),r.append(a);let o=Z(`g`),s=Z(`g`),c=e.pieces.map(e=>{let t=e.points.map(e=>`${e.x},${e.y}`).join(` `),n=Z(`g`),r=Z(`g`);n.classList.add(`screen-crack-shard`),r.classList.add(`screen-crack-shard`),n.append(Z(`polygon`,{points:t,fill:`white`}));let i=Z(`polygon`,{points:t,fill:`none`,stroke:`rgb(240 248 255 / .8)`,"stroke-width":1.1,"stroke-linejoin":`round`});return i.classList.add(`screen-crack-outline`),r.append(i),a.append(n),s.append(r),{masked:n,outlined:r,outline:i,piece:e}});n.append(r,o,s);let l=document.createElement(`div`);l.className=`screen-crack-glass`;let u=`${document.URL.split(`#`)[0]}#${i}`;l.style.maskImage=`url("${u}")`,l.style.webkitMaskImage=`url("${u}")`;let d=document.createElement(`div`);return d.className=`screen-crack-flash`,d.style.left=`${e.impact.x}px`,d.style.top=`${e.impact.y}px`,t.append(l,n,d),{overlay:t,glass:l,cracks:o,shards:c,flash:d}}function ga(e,t,n){for(let r of t.cracks){let t=r.points.map((e,t)=>`${t===0?`M`:`L`}${e.x} ${e.y}`).join(` `);for(let i of[!0,!1]){let a=Z(`path`,{d:t,fill:`none`,stroke:i?`rgb(0 0 0 / .55)`:`rgb(232 244 255 / .95)`,"stroke-width":r.width+(i?.8:0),"stroke-linecap":`round`,"stroke-linejoin":`round`});i&&a.setAttribute(`transform`,`translate(.5 .7)`),a.style.strokeDasharray=`${r.length} ${r.length}`,a.style.strokeDashoffset=String(r.length),e.append(a),n(a,[{strokeDashoffset:String(r.length)},{strokeDashoffset:`0`}],{duration:r.duration*pa,delay:r.delay*pa,easing:`cubic-bezier(.2,.7,.2,1)`})}}}function _a(e){let t=window.innerHeight,n=window.innerWidth;if(window.matchMedia(`(prefers-reduced-motion: reduce)`).matches||!n||!t||!Element.prototype.animate)return e(),Promise.resolve();let r=ca(n,t),{overlay:i,glass:a,cracks:o,shards:s,flash:c}=ha(r);document.body.append(i);let l=document.timeline.currentTime,u=[],d=(e,t,n)=>{let r=e.animate(t,{fill:`both`,...n});return r.playbackRate=2,r.startTime=l,u.push(r),r},f=!1,p=!1,m=()=>{p||(p=!0,e())},h=()=>{if(!f){f=!0,window.removeEventListener(`resize`,h),window.removeEventListener(`beforeprint`,h),document.removeEventListener(`visibilitychange`,g),i.remove();for(let e of u)e.cancel();m()}},g=()=>{document.hidden&&h()};window.addEventListener(`resize`,h,{once:!0}),window.addEventListener(`beforeprint`,h,{once:!0}),document.addEventListener(`visibilitychange`,g),ga(o,r,d),d(c,[{opacity:0,transform:`translate(-50%, -50%) scale(0)`},{opacity:.85,transform:`translate(-50%, -50%) scale(.8)`,offset:.08},{opacity:0,transform:`translate(-50%, -50%) scale(2.4)`}],{duration:600,easing:`ease-out`}),d(o,[{transform:`translate(0, 0)`},{transform:`translate(-3px, 2px)`},{transform:`translate(3px, -2px)`},{transform:`translate(-2px, -2px)`},{transform:`translate(2px, 2px)`},{transform:`translate(0, 0)`}],{duration:450});let ee=Math.max(...r.cracks.map(e=>e.delay+e.duration))*pa,te=Math.max(500,ee*.8);d(a,[{opacity:0},{opacity:1}],{duration:500,easing:`ease-out`}),d(c,[{visibility:`visible`},{visibility:`visible`}],{duration:1,delay:te-1}).finished.then(m,()=>{}),d(o,[{opacity:1},{opacity:0}],{duration:450,delay:te,easing:`ease-out`});for(let{masked:e,outlined:t,outline:n,piece:r}of s){let i=te+r.delay,a=[{transform:`translate(0, 0) rotate(0deg)`},{transform:`translate(${r.dx}px, ${r.dy}px) rotate(${r.rotation}deg)`}];for(let n of[e,t])d(n,a,{duration:1700,delay:i,easing:`cubic-bezier(.32,0,.82,.94)`});d(n,[{opacity:0},{opacity:1}],{duration:250,delay:i})}return Promise.all(u.map(e=>e.finished)).then(h,h)}var va=`:host{position:absolute;top:.5rem;right:.5rem;z-index:1000;width:30px;height:30px;background:var(--theme-toggle-bg, transparent);color:var(--muted);border:var(--theme-toggle-border, 0);border-radius:var(--ui-radius, 6px);font-size:1rem;line-height:1;font-family:inherit;display:flex;align-items:center;justify-content:center;transition:color .12s,background .12s;cursor:default;user-select:none}:host(:hover){color:var(--text);background:var(--theme-toggle-hover-bg, rgb(from var(--text) r g b / .06))}:host(:focus-visible){outline:2px solid var(--accent);outline-offset:2px}@media print{:host{display:none!important}}@media(display-mode:window-controls-overlay){:host{-webkit-app-region:no-drag;app-region:no-drag}}
|
|
9
|
+
`,ya=`deepview.theme`,ba=Object.freeze([`dark`,`light`,`green`,`pink`,`w95`,`paper`]),xa=Object.freeze([`dark`,`green`,`pink`,`w95`,`paper`,`light`]),Sa=3,Ca={dark:{base:`#1a1a1b`,dim:`#0a0a0a`},light:{base:`#f6f6fa`,dim:`#646464`},green:{base:`#0a140a`,dim:`#050a05`,sidebar:`#0f1e0f`},pink:{base:`#ffe4ee`,dim:`#a3727f`,sidebar:`#ffe0f0`},w95:{base:`#000080`,dim:`#000033`},paper:{base:`#ffffff`,dim:`#666666`}},wa=window.matchMedia?.(`(display-mode: window-controls-overlay)`),Ta=window.matchMedia?.(`(display-mode: standalone)`),Ea=window.navigator?.windowControlsOverlay,Da={light:`☀`,dark:`☾`,green:`🕶️`,pink:`✿`,w95:`⊞`,paper:`📄`},Oa=`deepview-theme-changed`,Q=`dark`,ka=!1,Aa=0,ja=!1,Ma=!1,Na=0,Pa=0,Fa=!1;function Ia(){if(!ja)return Q===`light`?`dark`:`light`;let e=Fa?xa:xa.filter(e=>e!==`w95`),t=e.includes(Q)?Q:`pink`;return e[(e.indexOf(t)+1)%e.length]}function La(){window.dispatchEvent(new CustomEvent(Oa,{detail:{theme:Q}}))}function Ra(){try{let e=localStorage.getItem(ya);return ba.includes(e)?e:`dark`}catch{return`dark`}}function za(){let e=document.querySelector(`meta[name="theme-color"]`);if(!e)return;let{base:t,dim:n,sidebar:r}=Ca[Q],i=Ea?.visible??wa?.matches??!1,a=(Ta?.matches||wa?.matches)&&!i;e.setAttribute(`content`,ka?n:a&&r?r:t)}function $(e){ba.includes(e)||(e=`dark`),Q=e;for(let e of ba)e!==`dark`&&document.body.classList.remove(`theme-${e}`);e!==`dark`&&document.body.classList.add(`theme-${e}`);try{e===`dark`?localStorage.removeItem(ya):localStorage.setItem(ya,e)}catch{}za(),La()}$(Ra()),wa?.addEventListener(`change`,za),Ta?.addEventListener(`change`,za),Ea?.addEventListener(`geometrychange`,za),window.addEventListener(`beforeprint`,()=>{ka=!0,$(Q)}),window.addEventListener(`afterprint`,()=>{ka=!1,$(Q)});function Ba(e){if(!ba.includes(e))throw TypeError(`unknown theme`);Na++,$(e)}function Va(){return Q}var Ha=class extends B{static properties={_theme:{state:!0}};static styles=L(va);constructor(){super(),this._theme=Q}connectedCallback(){super.connectedCallback(),Y(this,{role:`button`,tabindex:`0`,"aria-label":`toggle theme`}),this.addEventListener(`click`,this._toggle),this.addEventListener(`keydown`,this._onKeydown),window.addEventListener(Oa,this._onThemeChanged),this._onThemeChanged()}disconnectedCallback(){window.removeEventListener(Oa,this._onThemeChanged),this.removeEventListener(`click`,this._toggle),this.removeEventListener(`keydown`,this._onKeydown),super.disconnectedCallback()}_onThemeChanged=()=>{this._theme=Q,this.setAttribute(`aria-disabled`,String(Ma))};_toggle=()=>{if(Ma)return;if(!ja&&++Aa>=8&&Q===`dark`){ja=!0,Ma=!0,La();let e=Na,t=()=>{Na===e&&$(`green`)},n=()=>{Ma=!1,La()};try{_a(t).catch(t).finally(n)}catch{t(),n()}return}let e=Ia();Q===`green`&&e===`pink`&&++Pa>=Sa&&(Fa=!0),$(e)};_onKeydown=e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),e.repeat||this._toggle())};render(){return R`${Da[this._theme]}`}};customElements.define(`theme-toggle`,Ha);var Ua=`:host{display:block}.row{display:grid;grid-template-columns:5.5rem minmax(0,1fr);gap:.2rem .85rem;padding:.25rem .7rem;font-size:.8rem;border-bottom:1px solid var(--border);transition:background .12s}:host(:last-child) .row{border-bottom:none}.row.row-pending{min-height:3rem}:host(:hover) .row{background:rgb(from var(--text) r g b / .04)}:host(.mark-red) .row{background:var(--mark-red-bg)}:host(.mark-blue) .row{background:var(--mark-blue-bg)}:host(.mark-green) .row{background:var(--mark-green-bg)}:host(.mark-gray) .row{background:var(--mark-gray-bg)}:host(.has-conflict) .row{outline:2px dashed var(--accent);outline-offset:-2px}:host(.selected) .row{outline:2px solid var(--accent);outline-offset:-2px}:host(.link-target) .row{animation:link-target-flash 1.6s ease-out}@keyframes link-target-flash{0%,30%{box-shadow:inset 0 0 0 2px var(--accent)}to{box-shadow:inset 0 0 0 2px rgb(from var(--accent) r g b / 0)}}@media(prefers-reduced-motion:reduce){:host(.link-target) .row{animation:none;box-shadow:inset 0 0 0 2px var(--accent)}}:host(:first-of-type) .row{border-top-left-radius:var(--ui-radius, 6px);border-top-right-radius:var(--ui-radius, 6px)}:host(:last-of-type) .row{border-bottom-left-radius:var(--ui-radius, 6px);border-bottom-right-radius:var(--ui-radius, 6px)}.row-score{grid-column:1;grid-row:1 / 3;align-self:center;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.2rem;font-variant-numeric:tabular-nums;.badge{min-width:4.4rem;text-align:center}.row-conf{color:var(--muted);font-size:.72rem;user-select:none;& strong{color:var(--text);font-size:.8rem}}}.row-body{display:contents}.title-row{grid-column:2;grid-row:1;min-width:0;display:flex;align-items:baseline;gap:.5rem;.title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500;user-select:none}.row-type{color:var(--muted);font-size:.68rem;flex-shrink:0}}.meta-row{grid-column:2;grid-row:2;min-width:0;display:flex;align-items:center;gap:.55rem;.row-loc{color:var(--muted);font-size:.72rem;flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;& a{color:inherit;text-decoration:none;cursor:default}& a:hover{color:var(--accent)}}.marks{display:flex;gap:.35rem;align-items:center;min-width:0;margin-left:auto;user-select:none}}.gh-ref-btn{display:inline-flex;align-items:center;position:relative;flex-shrink:0;padding:0 .15rem;color:var(--muted);cursor:default;&:before{content:"";position:absolute;inset:-.25rem -2px}&:hover{color:var(--accent)}&:focus-visible{outline:1px solid var(--accent);outline-offset:1px;border-radius:var(--ui-radius, 2px)}}.tabs-row{grid-column:2;grid-row:3;min-width:0;.tabs{display:flex;gap:.25rem;flex-wrap:wrap}}.badge,.tabs,.tab,.row-type{cursor:default;user-select:none}.line-num{color:var(--muted);font-size:.75rem}.line-num a{color:inherit}@media print{:host(:hover) .row,:host(.mark-red) .row,:host(.mark-blue) .row,:host(.mark-green) .row,:host(.mark-gray) .row{background:transparent!important}:host(.triage-fixed),:host(.triage-invalid),:host(.triage-deleted),:host(.triage-ignored){opacity:1}:host(.selected) .row,:host(.has-conflict) .row{outline:none!important}:host(.link-target) .row{animation:none;box-shadow:none!important}.row{break-inside:avoid}.marks{display:none!important}.badge{-webkit-print-color-adjust:exact;print-color-adjust:exact;&.critical{background:#a30b0f!important;color:#fff!important}&.high{background:#b8400a!important;color:#fff!important}&.medium{background:#855107!important;color:#fff!important}&.low{background:#374151!important;color:#fff!important}&.high_bug{background:#7a3e0c!important;color:#fff!important}&.bug{background:#4d4538!important;color:#fff!important}&.informational{background:#0550ae!important;color:#fff!important}}.badge-orig{background:transparent!important;color:#555!important;border-color:#999!important}.badge-varies{color:#555!important;border-color:#999!important}.badge-arrow,.badge-corr-mark,.badge-pre{color:#555!important}a,.line-num,.line-num a{color:inherit}}
|
|
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 k{static properties={group:{attribute:!1},selected:{type:Boolean}};static styles=[L(pt),L(Ka),L(Wa),L(Ua),L(qa),L(Ga)];_near=!1;_watching=!1;constructor(){super(),this.group=null,this.selected=!1}render(){if(!this.group)return R``;if(this.dataset.gid=Ze(this.group),!this._near)return this.classList.toggle(`selected`,this.selected),R`<div class="row row-pending" aria-busy="true"></div>`;let e=new Set(Je(this.group));this.selected&&e.add(`selected`);for(let t of Ja)this.classList.toggle(t,e.has(t));return R`<div class="row">${Xe(this.group)}</div>`}connectedCallback(){super.connectedCallback(),ir(this.renderRoot),this.addEventListener(`click`,this._onClick),this._watching=!0,rt(this,e=>this._onNear(e))}disconnectedCallback(){this.removeEventListener(`click`,this._onClick),this._watching&&=(it(this),!1),super.disconnectedCallback()}_onNear(e){e?(this._watching&&=(it(this),!1),this._near=!0,this.requestUpdate()):this._near&&(this._near=!1,this.requestUpdate())}ensureRendered({sync:e=!1}={}){return this._near||this._onNear(!0),e&&this.isConnected&&this.isUpdatePending&&this.performUpdate(),this.updateComplete}_onClick=e=>{e.composedPath().some(e=>e?.matches?.(`a, button, label`))||this.dataset.gid&&this.dispatchEvent(new CustomEvent(`row-select`,{detail:{gid:this.dataset.gid},bubbles:!0,composed:!0}))}};customElements.define(`finding-row`,Ya);var Xa=`:host{display:block;background:var(--surface);backdrop-filter:var(--glass-blur);border:1px solid var(--border);border-radius:var(--ui-radius, 6px);overflow:hidden;box-shadow:var(--shadow-glass);margin-bottom:1rem;max-width:1200px}@media not print{finding-row{content-visibility:auto;contain-intrinsic-size:auto 3.2rem}}
|
|
15
|
+
`,Za=class extends B{static properties={items:{attribute:!1},selectedGid:{attribute:!1}};static styles=L(Xa);constructor(){super(),this.items=[],this.selectedGid=null}render(){return R`${fr(this.items??[],e=>Ze(e),e=>R`<finding-row .group="${e}" ?selected="${Ze(e)===this.selectedGid}"></finding-row>`)}`}};customElements.define(`finding-table`,Za);var Qa=`:host{display:block}:host(.hidden){display:none}:host([lazy]:not(.content-ready)){visibility:hidden}.card{padding:.5rem .75rem;padding-bottom:var(--finding-card-pad-bottom, .5rem);border-bottom:1px solid var(--border);font-size:.875rem;display:var(--finding-card-display, block);flex-direction:column;flex:1}:host(:last-child) .card{border-bottom:none}.card.card-pending{min-height:8rem}:host(.has-conflict) .card{outline:2px dashed var(--accent);outline-offset:-2px}:host(.has-conflict[popup][context="kanban-detail"]) .card{outline:none}:host(.link-target) .card{animation:link-target-flash 1.6s ease-out}@keyframes link-target-flash{0%,30%{box-shadow:inset 0 0 0 2px var(--accent)}to{box-shadow:inset 0 0 0 2px rgb(from var(--accent) r g b / 0)}}@media(prefers-reduced-motion:reduce){:host(.link-target) .card{animation:none;box-shadow:inset 0 0 0 2px var(--accent)}}:host([in-group]) .line-row{display:none}@media not print{:host([in-group]) .line-row+*{margin-top:0}:host([in-group]) .line-row+:is(.conf-reason,.revalidate-verdict,.severity-reason){padding-top:0;border-top:0}}.tabs{display:flex;gap:.25rem;flex-wrap:wrap}.marks-left{display:flex;align-items:center;gap:.5rem;margin-right:auto;flex-wrap:wrap}.commit-ref{color:var(--muted);font-size:.8rem;& a{color:var(--accent);font-family:ui-monospace,SFMono-Regular,Menlo,monospace}& a:hover{text-decoration:underline}& span{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}}.marks-commit-row{margin-top:.4rem;padding-left:4.75rem}.tab-body{display:none;grid-template-columns:auto 1fr;gap:.25rem .75rem;&.active{display:grid}}.tab-body>:not(.finding-left){min-width:0;overflow-wrap:break-word}.desc-title{grid-column:2;font-size:1.08em;font-weight:600;letter-spacing:-.005em;line-height:1.35;color:var(--text)}.desc{grid-column:2;white-space:pre-wrap;font-size:.96em;line-height:1.6;color:rgb(from var(--text) r g b / .82);margin-top:.4rem}.section,.evidence,.recommendation{grid-column:2;margin-top:.55rem;font-size:.92em}.section-label{display:flex;align-items:center;gap:.3rem;color:var(--muted);font-weight:600;font-size:.62rem;text-transform:uppercase;letter-spacing:.06em;&:before{content:"";flex:none;width:2px;height:.58rem;margin-left:calc((2px + .3rem)*-1);border-radius:1px;background:currentcolor;opacity:.75;-webkit-print-color-adjust:exact;print-color-adjust:exact}}.code-preview-btn{display:inline-flex;align-items:center;margin-left:.35rem;padding:0 .15rem;border:0;background:transparent;color:var(--muted);vertical-align:-2px;&.open{color:var(--accent)}}.gh-ref-btn{display:inline-flex;align-items:center;margin-left:.25rem;padding:0 .15rem;color:var(--muted);vertical-align:-2px}:is(.code-preview-btn,.gh-ref-btn){position:relative;&:before{content:"";position:absolute;inset:-.25rem -2px}&:hover{color:var(--accent)}&:focus-visible{outline:1px solid var(--accent);outline-offset:1px;border-radius:var(--ui-radius, 2px)}}.code-preview-tip{position:absolute;z-index:20;top:100%;left:0;margin-top:.3rem;width:max-content;max-width:min(100%,46rem);visibility:hidden;filter:drop-shadow(0 2px 6px rgb(0 0 0 / .35));background:var(--bg);border-radius:var(--ui-radius, 4px);.code-preview{margin:0}}:is(.line-row,.evidence-list li):has(.code-preview-btn:is(:hover,:focus-visible))>.code-preview-tip{visibility:visible}.code-preview{margin:.3rem 0 .1rem;border:1px solid var(--border);border-radius:var(--ui-radius, 4px);background:var(--surface);backdrop-filter:var(--glass-blur);max-height:calc(10lh + .7rem);overflow:auto;display:flex;align-items:flex-start;white-space:normal;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.75rem;line-height:1.5}.code-preview-pending{display:block;padding:.35rem .5rem;color:var(--muted);font-style:italic}.code-preview-gutter{flex:none;padding:.35rem .45rem .35rem .5rem;border-right:1px solid var(--border);color:var(--muted);text-align:right;user-select:none;position:sticky;left:0;z-index:1;background-color:var(--bg);background-image:linear-gradient(rgb(from var(--text) r g b / .03),rgb(from var(--text) r g b / .03)),linear-gradient(var(--surface),var(--surface));.code-preview-lineno{width:var(--lineno-width, 3ch);opacity:.7}.cited{opacity:1;color:var(--accent);font-weight:600}}.code-preview-source{margin:0;padding:.35rem .6rem;white-space:pre;color:var(--text);font:inherit;& code{font:inherit}}summary.section-label{cursor:default;list-style:none;&::-webkit-details-marker{display:none}&:after{content:"";flex:none;width:.3rem;height:.3rem;margin-left:.05rem;border-right:1.5px solid currentcolor;border-bottom:1.5px solid currentcolor;transform:translateY(-1px) rotate(-45deg);transition:transform .12s;opacity:.8}}details[open]>summary.section-label:after{transform:translateY(-2px) rotate(45deg)}.evidence-count{font-weight:500;opacity:.8}.section-body{white-space:pre-wrap;line-height:1.55;color:rgb(from var(--text) r g b / .82);margin-top:.1rem}.para+.para{margin-top:.5lh}.md-list{margin:0;padding-inline-start:1.2em}.md-list li+li{margin-top:.25lh}.para+.md-list,.md-list+.para,.md-list+.md-list{margin-top:.5lh}.md-list li::marker{color:rgb(from currentcolor r g b / .45)}.md-list li.md-task{list-style:none;position:relative}.md-task>input{position:absolute;inset-inline-start:-1.2em;top:calc((1lh - .9em)/2);width:.9em;height:.9em;margin:0;font:inherit}.md-heading{font-weight:600}.md-heading:is([aria-level="1"],[aria-level="2"]){font-size:1.15em}.md-heading:not(:first-child){margin-top:.75lh}.md-heading+*{margin-top:.25lh}.md-rule{margin:.75lh 0;border:0;border-top:1px solid var(--border)}.recommendation .section-label,.recommendation .section-body{color:var(--green)}.conf-reason,.revalidate-verdict{grid-column:2;white-space:pre-wrap;font-size:.92em;font-style:italic;color:var(--muted);margin-top:.6rem;padding-top:.55rem;border-top:1px dashed var(--border)}.revalidate-stamp{display:inline-block;margin-top:.1rem;font-size:.55rem;font-weight:600;line-height:1;text-transform:uppercase;letter-spacing:.03em;padding:.14rem .3rem;border-radius:3px;background:transparent;color:var(--muted);border:1px solid var(--border);white-space:nowrap;&.confirmed{color:var(--critical);border-color:rgb(from var(--critical) r g b / .55)}&.partial{color:var(--yellow);border-color:rgb(from var(--yellow) r g b / .55)}&.unknown{color:var(--warning);border-color:rgb(from var(--warning) r g b / .55)}}.evidence-list{margin:.25rem 0 0;padding-left:1.6rem;display:flex;flex-direction:column;gap:.15rem;>li{position:relative}& li::marker{color:var(--muted);font-size:.9em}>li.current:before{content:"";position:absolute;left:-1.5rem;top:.58em;width:.35rem;height:.35rem;border-radius:50%;background:var(--accent)}>li.current::marker{color:var(--accent)}& li:has(.evidence-note):not(:last-child){margin-bottom:.3rem}}.evidence-ref{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.92em;overflow-wrap:anywhere;color:var(--accent);text-decoration:none;&:is(a,[role=link]):hover{text-decoration:underline}&:focus-visible{outline:1px solid var(--accent);outline-offset:1px;border-radius:var(--ui-radius, 2px)}}:is(.line-num a,.evidence-ref,.gh-ref-btn){cursor:default}span.evidence-ref:not([role]){color:var(--muted)}.evidence-note{white-space:pre-wrap;line-height:1.5;color:rgb(from var(--text) r g b / .78);margin-top:.1rem}.desc-title a,.desc a,.section-body a,.conf-reason a,.revalidate-verdict a{color:var(--accent);text-decoration:none;&:hover{text-decoration:underline}}.inline-quote{background:rgb(from var(--accent) r g b / .1);padding:1px;border-radius:3px;color:var(--text)}.inline-code{background:var(--surface-active);border-radius:3px;border:1px solid var(--border);padding:0 .25em;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.9em;color:var(--text)}.code-block:not(.token){white-space:normal;margin:.5rem 0;border:1px solid var(--border);border-radius:var(--ui-radius, 4px);background:rgb(from var(--text) r g b / .05);overflow:hidden;width:fit-content;max-width:100%;.code-block-lang{padding:.15rem .5rem;border-bottom:1px solid var(--border);color:var(--muted);font-size:.62rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em}& pre{margin:0;padding:.45rem .6rem;overflow-x:auto;white-space:pre;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.85em;line-height:1.5;color:var(--text)}& code{font:inherit}}.line-row{display:flex;justify-content:space-between;align-items:baseline;gap:.5rem;flex-wrap:wrap;padding-right:var(--finding-line-end-inset, 0);position:relative}.run-meta{color:var(--muted);font-size:.65rem}.finding-code-btn{display:inline-block;margin-top:.35rem;padding:.1rem .45rem;background:transparent;border:1px solid var(--border);border-radius:var(--ui-radius, 999px);color:var(--muted);font:inherit;font-size:.65rem;font-weight:500;white-space:nowrap}.finding-code-btn:hover{border-color:var(--accent);color:var(--accent)}.marks{display:flex;gap:.35rem;justify-content:flex-end;margin-top:.4rem;align-items:center;position:var(--finding-marks-position, static);bottom:0;background:var(--finding-marks-bg, transparent);padding-bottom:var(--finding-marks-pad-bottom, 0);padding-left:4.75rem;user-select:none}.finding-left{align-self:start;text-align:center;min-width:4rem;padding-top:var(--finding-left-inset, 0);position:var(--finding-left-position, relative);top:var(--finding-mark-sticky-top, 0);.value-label:last-child{margin-bottom:0}}:host(:not([popup])) .finding-left{padding-top:calc(var(--finding-left-inset, 0px) + 2px)}.conf-score{font-size:.75rem;color:var(--muted);margin-top:.3rem;& strong{color:var(--text);font-size:.85rem}}.conf-ring{--col: var(--muted);position:relative;width:3rem;height:3rem;margin:.7rem auto .15rem;display:flex;align-items:center;justify-content:center;& svg{position:absolute;inset:0;width:100%;height:100%;transform:rotate(-90deg)}& circle{fill:none;stroke-width:4}.conf-ring-track{stroke:var(--border)}.conf-ring-arc{stroke:var(--col);stroke-linecap:round}& span{position:relative;z-index:1;font-size:.8rem;font-weight:700;color:var(--text);font-variant-numeric:tabular-nums}& small{font-size:.55rem;color:var(--muted);font-weight:500}&.critical{--col: var(--critical)}&.high{--col: var(--high)}&.medium{--col: var(--medium)}&.low{--col: var(--low)}&.high_bug{--col: var(--high-bug)}&.bug{--col: var(--bug)}&.informational{--col: var(--info)}}.value-label{display:block;font-size:.45rem;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin-top:.1rem;margin-bottom:.3rem;font-weight:500}.print-case-label{display:none}.badge,.tabs,.tab,.value-label,.run-meta,.conf-ring{cursor:default;user-select:none}.severity-reason{margin-top:.4rem;padding-top:.35rem;border-top:1px dashed var(--border);font-size:.82em;font-style:italic;color:var(--muted)}.severity-reason-label{font-style:normal;font-weight:600;text-transform:uppercase;font-size:.85em;letter-spacing:.04em;margin-right:.35rem}.duplicates-block .file-icon{flex-shrink:0}:host([context="focus"]) .triage-menu-wrap>.mark-triage-menu{display:none}:host([context="focus"]) .triage-menu-wrap{display:inline-flex}:host([context="focus"]) .triage-menu[popover]{position:static;inset:auto;display:inline-flex!important;flex-flow:row wrap;margin:0;padding:0;background:transparent;border:0;border-radius:0;box-shadow:none;min-width:0;gap:.25rem}:host([context="focus"]) .triage-menu-item{background:transparent;border:1px solid var(--border);padding:.2rem .5rem;border-radius:var(--ui-radius, 3px);font-size:.72rem;font-weight:500;text-transform:uppercase;letter-spacing:.04em}:host([context="focus"]) .triage-menu-item.active{background:rgb(from var(--accent) r g b / .12);border-color:var(--accent);color:var(--accent)}:host([context="focus"]) .triage-menu-item:not(:disabled):hover{background:var(--surface-active)}:host([context="focus"]) .triage-menu-inprogress.active{background:rgb(from var(--warning, #d97706) r g b / .12);border-color:var(--warning, #d97706);color:var(--warning, #d97706)}:host([context="focus"]) .triage-menu-fixed.active{background:rgb(from var(--green, #4ade80) r g b / .12);border-color:var(--green, #4ade80);color:var(--green, #4ade80)}:host([context="focus"]) .triage-menu-deleted.active{background:rgb(from var(--critical) r g b / .12);border-color:var(--critical);color:var(--critical)}:host([context="focus"]) .triage-menu-item.active:before{content:"";margin:0}:host([context="focus"]) .marks{gap:.5rem;margin-top:var(--finding-marks-margin-top, .65rem);padding-left:0;padding-top:.55rem;border-top:1px solid var(--border);flex-wrap:wrap}:host([context="focus"]) .marks-commit-row{padding-left:0}:host([context="focus"]) .mark-comment,:host([context="focus"]) .mark-fix,:host([context="focus"]) .mark-flag,:host([context="focus"]) .mark-copy,:host([context="focus"]) .mark-link,:host([context="focus"]) .mark-issue,:host([context="focus"]) .mark-claude{height:1.75rem;padding:0 .55rem;gap:.35rem;display:inline-flex;align-items:center;font-size:.72rem}:host([context="focus"]) .mark-btn-label{color:inherit;font-weight:500;letter-spacing:.02em}.finding-top-marks{position:absolute;top:calc(var(--finding-left-inset, 0px) - var(--finding-mark-inset, .5rem));left:calc(.75rem - var(--finding-mark-inset, .5rem));display:grid;grid-template-columns:24px 12px;column-gap:31px;&.color-red{color:var(--marker-red)}&.color-blue{color:var(--marker-blue)}&.color-green{color:var(--marker-green)}&.color-gray{color:var(--marker-gray)}}.finding-color-mark{grid-column:1;display:block;width:24px;height:12px;border-radius:var(--ui-radius, 0 0 6px 6px);background:currentcolor;box-shadow:inset 0 0 0 1px rgb(from var(--text) r g b / .15)}.finding-bookmark-mark{grid-column:2;display:block;width:12px;height:12px;background:var(--bookmark-color);clip-path:polygon(0 0,100% 0,100% 100%,50% 75%,0 100%)}:host(:not([popup])) :is(.finding-color-mark,.finding-bookmark-mark){height:10px}.comment-block,.fix-block{margin-top:.5rem;padding:.35rem .55rem;border-left:3px solid var(--accent);background:rgb(from var(--accent) r g b / .08);border-radius:var(--ui-radius, 0 4px 4px 0);font-size:.82rem;color:var(--text)}.comment-block{white-space:pre-wrap;& a{color:var(--accent);text-decoration:none}& a:hover{text-decoration:underline}& a.comment-self-ref{text-decoration:underline dotted;text-underline-offset:2px}& a.comment-self-ref:hover{text-decoration:underline solid}}.comment-block:has(.managed-comment){white-space:normal}.fix-block{word-break:break-all;& a{color:var(--accent);text-decoration:none}& a:hover{text-decoration:underline}}.fix-block:has(managed-fix-link){display:flex;align-items:center;gap:.6rem;padding:.45rem .65rem;border:1px solid var(--border);border-radius:var(--ui-radius, 6px);background:rgb(from var(--muted) r g b / .04);word-break:normal;.fix-label{flex:none;font-size:.75rem;font-weight:500}& managed-fix-link{flex:1;min-width:0}}.duplicates-block{display:flex;align-items:baseline;flex-wrap:wrap;gap:.1rem .4rem;margin-top:.5rem;padding:.35rem .55rem;border-left:3px solid var(--muted);background:rgb(from var(--muted) r g b / .1);border-radius:var(--ui-radius, 0 4px 4px 0);font-size:.82rem;color:var(--text);.duplicates-label{color:var(--muted);font-weight:600}& a.duplicate-ref{display:inline-flex;align-items:center;gap:.25rem;color:var(--accent);text-decoration:none}& a.duplicate-ref .duplicate-ref-id{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.78rem;text-decoration:underline dotted;text-underline-offset:2px}& a.duplicate-ref:hover .duplicate-ref-id{text-decoration:underline solid}}.comment-label,.fix-label{color:var(--muted);font-weight:600;margin-right:.35rem}.line-num{color:var(--muted);font-size:.8rem}.line-num a{color:inherit;text-decoration:none}.npm-link{display:inline-block;padding:0 .4rem;border:1px solid var(--border);border-radius:var(--ui-radius, 3px);font-size:.72rem;font-weight:500;color:var(--muted);text-decoration:none}.npm-link:hover{border-color:var(--accent);color:var(--accent)}@media print{.card{break-inside:var(--finding-print-break, avoid);box-decoration-break:clone;padding:.45rem .25rem}.finding-code-btn,.mark-copy,.mark-link,.mark-issue,.mark-claude{display:none!important}.npm-link{border:0;padding:0}:host(.triage-fixed),:host(.triage-invalid),:host(.triage-deleted),:host(.triage-ignored){opacity:1}:host(.link-target) .card{animation:none;box-shadow:none!important}:host(.multi-case) .card:before{content:"Multiple reports of one finding";display:block;font-size:.7rem;font-weight:700;color:#555;text-transform:uppercase;letter-spacing:.06em;border-bottom:1px solid #bbb;padding-bottom:.2rem;margin-bottom:.35rem;-webkit-print-color-adjust:exact;print-color-adjust:exact}.marks,.tabs{display:none!important}.tab-body{display:grid!important;break-inside:var(--finding-print-break, avoid)}:host(.multi-case) .tab-body{break-inside:auto}:host(.multi-case) .tab-body+.tab-body{break-inside:avoid}.tab-body+.tab-body{margin-top:.5rem;padding-top:.5rem;border-top:1px dashed #999}:host([print-one-sample]) .tab-body:not(.active),:host([print-one-sample]) .print-case-label,:host([print-one-sample]) .card:before{display:none!important}:host([print-one-sample]) .tab-body.active{margin-top:0;padding-top:0;border-top:0;break-inside:var(--finding-print-break, avoid)}.finding-body{display:flex;flex-direction:column;>*{flex-shrink:0}}.line-row,.desc-title,.conf-reason,.severity-reason{break-inside:avoid}.section-label{break-after:avoid}.desc,.section-body{orphans:2;widows:2}.section,.recommendation,.evidence{break-inside:avoid}.evidence{order:99}.evidence>summary{break-after:avoid}.evidence-list>li{break-inside:avoid}:host([in-group].multi-case:not([print-one-sample])) .tab-body .line-row{display:flex}:host([in-group]:is(:not(.multi-case),[print-one-sample])) .line-row+*{margin-top:0}:host([in-group]:is(:not(.multi-case),[print-one-sample])) .line-row+.conf-reason{padding-top:0;border-top:0}.line-row .discovered-in{flex-basis:100%;order:99}.print-case-label{display:block;grid-column:1 / -1;break-after:avoid;font-size:.65rem;font-weight:600;color:#555;background:#eee;padding:.1rem .35rem;border-radius:3px;margin-bottom:.25rem;letter-spacing:.04em;-webkit-print-color-adjust:exact;print-color-adjust:exact}.value-label{color:#777}.badge{-webkit-print-color-adjust:exact;print-color-adjust:exact;&.critical{background:#a30b0f!important;color:#fff!important}&.high{background:#b8400a!important;color:#fff!important}&.medium{background:#855107!important;color:#fff!important}&.low{background:#374151!important;color:#fff!important}&.high_bug{background:#7a3e0c!important;color:#fff!important}&.bug{background:#4d4538!important;color:#fff!important}&.informational{background:#0550ae!important;color:#fff!important}}.badge-orig{background:transparent!important;color:#555!important;border-color:#999!important}.badge-varies,.revalidate-stamp{color:#555!important;border-color:#999!important}.badge-arrow,.badge-corr-mark,.badge-pre,.severity-reason{color:#555!important}a,.line-num,.line-num a,.desc-title a,.desc a,.section-body a,.conf-reason a,.revalidate-verdict a,.evidence-ref{color:inherit}details:not([open])>:not(summary){display:block}details::details-content{content-visibility:visible}summary.section-label{cursor:default;&:after{display:none}}.code-preview-btn,.gh-ref-btn{display:none}.inline-code{border:0;background:transparent}.code-block:not(.token){background:transparent;border-color:#bbb;.code-block-lang{color:#555;border-bottom-color:#bbb}& pre{white-space:pre-wrap;overflow:visible}.token{color:#333!important}.token.comment,.token.prolog,.token.cdata{color:#666!important}}}:host-context(body.theme-w95){&:host([context="focus"]) .triage-menu-item{min-height:23px;padding:0 8px;border:0;border-radius:0;background:var(--w95-face);color:#000;box-shadow:var(--w95-raised);font-size:11px;font-weight:400;&.active{border-color:transparent;background:var(--w95-dither);color:#000;box-shadow:var(--w95-pressed)}&:not(:disabled):hover{background:var(--w95-face)}}:is(.code-preview-btn,.gh-ref-btn,.finding-code-btn){border:0;border-radius:0;background:var(--w95-face);color:#000;box-shadow:var(--w95-raised)}.code-block:not(.token){padding:2px;border:0;border-radius:0;background:#fff;box-shadow:var(--w95-sunken);.code-block-lang{padding:1px 6px;border-bottom:0;background:var(--w95-face);color:#000;box-shadow:var(--w95-raised);font-size:11px;font-weight:400}}}:host-context(body.theme-w95) *{overscroll-behavior:none}
|
|
16
|
+
`,$a=[`finding`,`is-critical`,`mark-red`,`mark-blue`,`mark-green`,`mark-gray`,`has-conflict`,`triage-inprogress`,`triage-fixed`,`triage-invalid`,`triage-deleted`,`triage-ignored`,`multi-case`],eo=class extends k{static properties={group:{attribute:!1},inGroup:{type:Boolean,attribute:`in-group`,reflect:!0},context:{type:String,reflect:!0},lazy:{type:Boolean}};static styles=[L(pt),L(Ka),L(Wa),L(Qa),L(qa),L(Ga),L(e),L(a)];_near=!1;_watched=null;constructor(){super(),this.group=null,this.inGroup=!1,this.context=null,this.lazy=!1}render(){if(!this.group)return R``;if(this.dataset.gid=Ze(this.group),this.lazy&&!this._near)return this.classList.add(`finding`),R`<div class="card card-pending" aria-busy="true"></div>`;let e=new Set(He(this.group));for(let t of $a)this.classList.toggle(t,e.has(t));return R`<div class="card">${Ge(this.group,{context:this.context})}</div>`}updated(){this.classList.toggle(`content-ready`,!!this.group&&(!this.lazy||this._near));for(let e of this.renderRoot.querySelectorAll(`.code-preview`)){let t=e.dataset.revealedTo;if(t!==void 0&&Math.round(e.scrollTop)!==Number(t))continue;let n=e.querySelectorAll(`.code-preview-lineno.cited`);n.length!==0&&(On(e,n),e.dataset.revealedTo=String(Math.round(e.scrollTop)))}}connectedCallback(){if(super.connectedCallback(),ir(this.renderRoot),this.lazy){this._watched=this.closest(`.flat-group`)??this,rt(this._watched,e=>this._onNear(e));return}this.hasUpdated&&this.requestUpdate()}disconnectedCallback(){this._watched&&=(it(this._watched),null),super.disconnectedCallback()}_onNear(e){e?(this._watched&&=(it(this._watched),null),this._near=!0,this.requestUpdate()):this._near&&(this._near=!1,this.requestUpdate())}ensureRendered({sync:e=!1}={}){return this.lazy&&!this._near&&this._onNear(!0),e&&this.isConnected&&this.isUpdatePending&&this.performUpdate(),this.updateComplete}};customElements.define(`finding-card`,eo);var to=48,no=4;function ro(e,t){let n=new Float64Array(e+1);for(let r=0;r<e;r++)n[r+1]=n[r]+t(r);return n}function io(e,t){let n=0,r=e.length-2;for(;n<r;){let i=n+r>>1;e[i+1]>t?r=i:n=i+1}return Math.max(0,n)}function ao(e,t,n){let r=e.length-1;return r===0?{from:0,to:0}:{from:io(e,t-n),to:Math.min(r,io(e,t+2*n)+1)}}function oo(e,t,n,r){return e[t]<n?e[t]:e[t+1]>n+r?Math.min(e[t],e[t+1]-r):n}var so=class extends B{static properties={items:{attribute:!1},activeKey:{attribute:!1},keyOf:{attribute:!1},renderItem:{attribute:!1}};constructor(){super(),this.items=[],this.activeKey=null,this.keyOf=e=>e,this.renderItem=()=>z,this._heights=new Map,this._total=0,this._keys=new WeakMap,this._version=0,this._tops=null,this._range={from:0,to:0},this._hold=null,this._goal=null,this._carried=null,this._reveal=!1,this._passes=0,this.addEventListener(`scroll`,()=>{!this.isUpdatePending&&!this._covers()&&this.requestUpdate()},{passive:!0})}createRenderRoot(){return this}connectedCallback(){super.connectedCallback(),this._resizes=new ResizeObserver(()=>{!this.isUpdatePending&&(this._reveal||!this._covers())&&this.requestUpdate()}),this._resizes.observe(this),this._themes=new AbortController,globalThis.addEventListener(`deepview-theme-changed`,()=>this._forgetHeights(),{signal:this._themes.signal})}disconnectedCallback(){super.disconnectedCallback(),this._resizes?.disconnect(),this._themes?.abort()}_forgetHeights(){this._carried??=this._holdOf(this.items,this.scrollTop),this._heights.clear(),this._total=0,this._version++,this.requestUpdate()}_keysOf(e){let t=this._keys.get(e);return t||this._keys.set(e,t=e.map(e=>this.keyOf(e))),t}_topsOf(e){let t=this._tops;if(t?.list===e&&t.version===this._version)return t.tops;let n=this._keysOf(e),r=this._heights.size>0?this._total/this._heights.size:to,i=ro(e.length,e=>this._heights.get(n[e])??r);return this._tops={list:e,version:this._version,tops:i},i}_viewHeight(){let e=getComputedStyle(this);return Math.max(0,this.clientHeight-parseFloat(e.paddingTop)-parseFloat(e.paddingBottom))}_covers(){let e=this._topsOf(this.items),{from:t,to:n}=this._range,r=this.scrollTop;return io(e,r)>=t&&(n>=this.items.length||io(e,r+this._viewHeight())<n)}_holdOf(e,t){if(e.length===0)return null;let n=this._topsOf(e),r=io(n,t);return{key:this._keysOf(e)[r],index:r,offset:n[r]-t}}_heldTop(e){let t=this._hold;if(!t)return null;let n=this._keysOf(this.items),r=n[t.index]===t.key?t.index:n.indexOf(t.key);return r<0?null:e[r]-t.offset}willUpdate(e){e.has(`activeKey`)&&(this._reveal=!0);let t=this.scrollTop,n=this._viewHeight();if(this._hold=this._carried??this._holdOf(e.get(`items`)??this.items,t),this._carried=null,this._goal=null,this._reveal&&n>0){this._reveal=!1;let e=this._keysOf(this.items).indexOf(this.activeKey);e>=0&&(this._goal={index:e,from:t})}let r=this._topsOf(this.items),i=this._goal?oo(r,this._goal.index,t,n):this._heldTop(r)??t;this._range=ao(r,i,n)}render(){let{from:e,to:t}=this._range;return R`<div class="kanban-rail-spacer" aria-hidden="true"></div>${fr(this.items.slice(e,t),this.keyOf,this.renderItem)}<div class="kanban-rail-spacer" aria-hidden="true"></div>`}updated(){if(this.clientHeight===0)return;let e=this._viewHeight(),{from:t,to:n}=this._range,r=[...this.children],i=this._keysOf(this.items),a=r[1].getBoundingClientRect().top;for(let e=t;e<n;e++){let n=r[e-t+2].getBoundingClientRect().top,o=this._heights.get(i[e]);o!==n-a&&(this._total+=n-a-(o??0),this._heights.set(i[e],n-a),this._version++),a=n}let o=this._topsOf(this.items);r[0].style.height=`${o[t]}px`,r.at(-1).style.height=`${o[this.items.length]-o[n]}px`;let s=this._goal?oo(o,this._goal.index,this._goal.from,e):this._heldTop(o);s!==null&&Math.abs(this.scrollTop-s)>=1&&(this.scrollTop=s),this._covers()||++this._passes>=no?this._passes=0:this.requestUpdate()}};customElements.define(`kanban-rail`,so);var co=`:host{display:inline-flex;gap:4px;align-items:center;flex-shrink:0}button{width:14px;height:14px;user-select:none;padding:0;background:transparent;border:1.5px solid currentcolor;border-radius:var(--ui-radius, 50%);opacity:.55;transition:opacity .12s,transform .12s}button:not(:disabled):hover{opacity:1;transform:scale(1.12)}button:disabled{opacity:.25}button.active{background:currentcolor;opacity:1;box-shadow:0 0 0 2px var(--surface),0 0 0 3px currentcolor}.color-red{color:var(--marker-red)}.color-blue{color:var(--marker-blue)}.color-green{color:var(--marker-green)}.color-gray{color:var(--marker-gray)}
|
|
17
|
+
`,lo=[`red`,`blue`,`green`,`gray`],uo=class extends B{static properties={selected:{type:String},disabled:{type:Boolean}};static styles=L(co);constructor(){super(),this.selected=null,this.disabled=!1}render(){return R`${lo.map(e=>R`<button type="button" class="${`color-${e}${this.selected===e?` active`:``}`}" data-color="${e}" aria-label="${`mark ${e}`}" ?disabled="${this.disabled}" @click="${this._onClick}"></button>`)}`}_onClick=e=>{if(this.disabled)return;let t=e.currentTarget.dataset.color;this.dispatchEvent(new CustomEvent(`mark-color`,{detail:{color:t},bubbles:!0,composed:!0}))}};customElements.define(`color-marker`,uo);var fo=class extends k{static properties={rangeDisabled:{type:Boolean,attribute:`range-disabled`},revalidateOptions:{attribute:!1},hasPartial:{type:Boolean,attribute:`has-partial`}};createRenderRoot(){return this}constructor(){super(),this.rangeDisabled=!1,this.revalidateOptions=[],this.hasPartial=!1}render(){let e=A.filterConfMin,t=A.filterConfMax,n=this.revalidateOptions??[],r=this.rangeDisabled,i=n.length>0&&!!A.filterRevalidate,a=r?`No confidence range: some findings on screen carry no confidence score`:z;return R`<span class="${P({"conf-range-label":!0,replaced:i,disabled:r})}" data-tooltip="${a}">Confidence</span> <span class="${P({"conf-range":!0,replaced:i,disabled:r})}" ?inert="${r||i}"><range-slider id="conf-range" min="0" max="10" step="1" low="${e}" high="${t}" aria-label="Confidence range"></range-slider><conf-range-mirror id="conf-range-vals" class="conf-vals" for="conf-range" .low="${e}" .high="${t}"></conf-range-mirror></span>${n.length>0?R`<revalidate-filter class="${P({replaces:i})}" .options="${n}" ?has-partial="${this.hasPartial}"></revalidate-filter>`:z}`}};customElements.define(`conf-filter`,fo);var po={files:`Filter files…`,code:`Search code…`,issues:`Search issues…`,largest:`Filter largest files…`},mo={files:`Filter files`,code:`Search code`,issues:`Search issues`,largest:`Largest files`},ho=R`<svg class="bundle-code-search-icon" viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><circle cx="6.5" cy="6.5" r="4.5"/><path d="M9.7 9.7L13 13" stroke-linecap="round"/></svg>`,go={files:Ne,code:Ie,issues:R`<svg viewBox="0 0 16 16" width="13" height="13" fill="none" stroke="currentColor" stroke-width="1.3" aria-hidden="true"><circle cx="8" cy="8" r="6"/><path d="M8 4.8v3.6" stroke-linecap="round"/><circle cx="8" cy="11" r=".7" fill="currentColor" stroke="none"/></svg>`,largest:R`<svg viewBox="0 0 16 16" width="13" height="13" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" aria-hidden="true"><path d="M2.5 4h11M2.5 8h7.5M2.5 12h4"/></svg>`},_o=class extends k{static properties={modes:{attribute:!1}};createRenderRoot(){return this}constructor(){super(),this.modes=[]}render(){let e=A.bundleCodeSearchQuery,t=A.bundleCodeSearchMode,n=this.modes.includes(t)?t:`files`,r=po[n]??po.files;return R`${ho} <input type="text" class="bundle-code-search-input" placeholder="${r}" aria-label="${r}" .value="${M(e)}" @input="${this._onInput}"> ${e?R`<button type="button" class="bundle-code-search-clear" aria-label="Clear search" @click="${this._onClear}">×</button>`:z} ${this.modes.length>0?R`<span class="bundle-code-search-modes" role="tablist">${this.modes.map(e=>R`<button type="button" class="${P({"bundle-code-search-mode":!0,active:n===e})}" role="tab" aria-selected="${String(n===e)}" data-tooltip="${mo[e]??e}" aria-label="${mo[e]??e}" @click="${()=>this._selectMode(e)}">${go[e]??z}</button>`)}</span>`:z}`}_onInput=e=>{this._dispatchInput(e.target.value)};_onClear=()=>{this._dispatchInput(``)};_dispatchInput(e){this.dispatchEvent(new CustomEvent(`search-input`,{detail:{kind:`bundle-code`,value:e},bubbles:!0,composed:!0}))}_selectMode(e){this.dispatchEvent(new CustomEvent(`bundle-search-mode-change`,{detail:{mode:e},bubbles:!0,composed:!0}))}};customElements.define(`bundle-code-search`,_o);var vo=class extends HTMLElement{connectedCallback(){this._schedule=()=>{this._frame||=requestAnimationFrame(()=>this._update())},this._resize=new ResizeObserver(this._schedule),this._resize.observe(this),this._mutation=new MutationObserver(this._schedule),this._mutation.observe(this,{childList:!0,subtree:!0,characterData:!0,attributes:!0,attributeFilter:[`hidden`]}),this._mode=matchMedia(`(display-mode: window-controls-overlay)`),this._mode.addEventListener(`change`,this._schedule),navigator.windowControlsOverlay?.addEventListener(`geometrychange`,this._schedule),this._schedule()}disconnectedCallback(){cancelAnimationFrame(this._frame),this._frame=0,this._resize.disconnect(),this._mutation.disconnect(),this._mode.removeEventListener(`change`,this._schedule),navigator.windowControlsOverlay?.removeEventListener(`geometrychange`,this._schedule)}_update(){this._frame=0,this.classList.remove(`boxed`);let e=this.querySelector(`.bundles-slide-bar`);if(!e)return;this._resize.observe(e);let t=this.querySelector(`.bundles-slide-tabs`);t&&this._resize.observe(t);let n=parseFloat(getComputedStyle(this,`::before`).height)||0;if(!n)return;let r=this.getBoundingClientRect(),i=e.getBoundingClientRect();this.classList.toggle(`boxed`,i.top>r.top+1||i.height>n+1)}};customElements.define(`bundle-slide-header`,vo);var yo=R`<svg class="bundle-search-icon" viewBox="0 0 16 16" width="15" height="15" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><circle cx="6.5" cy="6.5" r="4.5"/><path d="M9.7 9.7L13 13" stroke-linecap="round"/></svg>`,bo=class extends k{createRenderRoot(){return this}render(){let e=A.bundleSearchQuery,t=A.bundleSearchRegex,n=A.bundleSearchCase,r=t?`Search by regular expression…`:`Search all source…`;return R`${yo} <input type="text" class="bundle-search-input" placeholder="${r}" aria-label="${r}" spellcheck="false" autocapitalize="off" autocomplete="off" .value="${M(e)}" @input="${this._onInput}"> ${e?R`<button type="button" class="bundle-search-clear" aria-label="Clear search" @click="${this._onClear}">×</button>`:z} <span class="bundle-search-mods"><button type="button" class="${P({"bundle-search-mod":!0,active:n})}" data-tooltip="${n?`Case-sensitive on — click to ignore case`:`Match case`}" aria-label="Match case" aria-pressed="${String(n)}" @click="${this._onToggleCase}">Aa</button> <button type="button" class="${P({"bundle-search-mod":!0,active:t})}" data-tooltip="${t?`Regular expression on — click for plain text`:`Match by regular expression`}" aria-label="Match by regular expression" aria-pressed="${String(t)}" @click="${this._onToggleRegex}">.*</button></span>`}_onInput=e=>{this._dispatchInput(e.target.value)};_onClear=()=>{this._dispatchInput(``)};_dispatchInput(e){this.dispatchEvent(new CustomEvent(`search-input`,{detail:{kind:`bundle-search`,value:e},bubbles:!0,composed:!0}))}_onToggleRegex=()=>{this.dispatchEvent(new CustomEvent(`bundle-search-regex-toggle`,{bubbles:!0,composed:!0}))};_onToggleCase=()=>{this.dispatchEvent(new CustomEvent(`bundle-search-case-toggle`,{bubbles:!0,composed:!0}))}};customElements.define(`bundle-search`,bo);function xo(e,t,n){let r=t[n];return r||console.warn(`<${e}>: unknown kind ${JSON.stringify(n)}; expected one of ${Object.keys(t).map(e=>JSON.stringify(e)).join(`, `)}.`),r}var So={packages:{stateKey:`packagesSearchQuery`,label:`Filter packages`},repositories:{stateKey:`repositoriesSearchQuery`,label:`Filter repositories`}},Co=class extends k{static properties={kind:{type:String}};createRenderRoot(){return this}constructor(){super(),this.kind=``}render(){let e=xo(`entity-search`,So,this.kind);return e?R`<input type="search" class="packages-search" placeholder="${`${e.label}\u2026`}" aria-label="${e.label}" .value="${M(A[e.stateKey])}" @input="${this._onInput}">`:z}_onInput=e=>{this.dispatchEvent(new CustomEvent(`search-input`,{detail:{kind:this.kind,value:e.target.value},bubbles:!0,composed:!0}))}};customElements.define(`entity-search`,Co);var wo=[[`findings-desc`,`Findings ↓`],[`files-desc`,`Files ↓`],[`reports-desc`,`Reports ↓`],[`name-asc`,`Name A→Z`]],To={packages:{stateKey:`packagesSortBy`,aria:`Sort packages`},repositories:{stateKey:`repositoriesSortBy`,aria:`Sort repositories`}},Eo=class extends k{static properties={kind:{type:String}};createRenderRoot(){return this}constructor(){super(),this.kind=``}render(){let e=xo(`entity-sort`,To,this.kind);return e?R`<select class="packages-sort" aria-label="${e.aria}" .value="${M(A[e.stateKey])}" @change="${this._onChange}">${wo.map(([t,n])=>R`<option value="${t}" ?selected="${A[e.stateKey]===t}">${n}</option>`)}</select>`:z}_onChange=e=>{this.dispatchEvent(new CustomEvent(`sort-change`,{detail:{kind:this.kind,value:e.target.value},bubbles:!0,composed:!0}))}};customElements.define(`entity-sort`,Eo);var Do=class extends k{static properties={showFile:{type:Boolean,attribute:`show-file`},showConfidence:{type:Boolean,attribute:`show-confidence`},showPriority:{type:Boolean,attribute:`show-priority`}};createRenderRoot(){return this}constructor(){super(),this.showFile=!1,this.showConfidence=!1,this.showPriority=!1}render(){let e=(e,t)=>R`<option value="${e}" ?selected="${A.sortBy===e}">${t}</option>`;return R`<select class="sort-select" aria-label="Sort findings" .value="${M(A.sortBy)}" @change="${this._onChange}">${e(`severity`,`Severity ↓`)} ${this.showFile?e(`file`,`File ↑`):z} ${this.showConfidence?R`${e(`confidence-desc`,`Confidence ↓`)}${e(`confidence-asc`,`Confidence ↑`)}`:z} ${this.showPriority?R`${e(`priority-desc`,`Priority ↓`)}${e(`priority-asc`,`Priority ↑`)}`:z}</select>`}_onChange=e=>{this.dispatchEvent(new CustomEvent(`sort-change`,{detail:{kind:`findings`,value:e.target.value},bubbles:!0,composed:!0}))}};customElements.define(`findings-sort`,Do);var Oo=`:host{display:inline-flex;align-items:center;width:8.5rem;height:16px;--rs-thumb-size: 14px;--rs-track-height: 3px;--rs-rail: rgb(from currentcolor r g b / .25);--rs-fill: var(--accent, currentColor)}.track-wrap{position:relative;flex:1;height:var(--rs-thumb-size)}.track{position:absolute;left:0;right:0;top:50%;height:var(--rs-track-height);transform:translateY(-50%);border-radius:var(--ui-radius, 99px);background:linear-gradient(to right,var(--rs-rail) 0,var(--rs-rail) var(--low, 0%),var(--rs-fill) var(--low, 0%),var(--rs-fill) var(--high, 100%),var(--rs-rail) var(--high, 100%))}input[type=range]{appearance:none;-webkit-appearance:none;position:absolute;left:0;right:0;top:0;width:100%;height:var(--rs-thumb-size);background:transparent;pointer-events:none;margin:0;padding:0;outline:none}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;pointer-events:auto;width:var(--rs-thumb-size);height:var(--rs-thumb-size);border-radius:50%;background:var(--rs-fill);border:0;box-shadow:0 1px 3px #00000080}input[type=range]::-moz-range-thumb{pointer-events:auto;width:var(--rs-thumb-size);height:var(--rs-thumb-size);border-radius:50%;background:var(--rs-fill);border:0;box-shadow:0 1px 3px #00000080}input[type=range]::-webkit-slider-runnable-track{background:transparent;height:var(--rs-thumb-size)}:host-context(body.theme-w95){height:22px;--rs-thumb-size: 22px;.track{height:4px;box-shadow:var(--w95-sunken);background:linear-gradient(to right,#fff 0,#fff var(--low, 0%),var(--w95-title) var(--low, 0%),var(--w95-title) var(--high, 100%),#fff var(--high, 100%))}& input[type=range]::-webkit-slider-thumb{width:11px;height:21px;border-radius:0;background:var(--w95-face);box-shadow:var(--w95-raised)}& input[type=range]::-moz-range-thumb{width:11px;height:21px;border-radius:0;background:var(--w95-face);box-shadow:var(--w95-raised)}}
|
|
18
|
+
`,ko=class extends B{static properties={min:{type:Number},max:{type:Number},step:{type:Number},low:{type:Number},high:{type:Number}};static styles=L(Oo);constructor(){super(),this.min=0,this.max=100,this.step=1,this.low=0,this.high=100}willUpdate(){this.low<this.min&&(this.low=this.min),this.high>this.max&&(this.high=this.max),this.low>this.high&&(this.low=this.high)}render(){let e=this.max-this.min||1,t=(this.low-this.min)/e*100,n=(this.high-this.min)/e*100;return R`<div class="track-wrap" style="${dr({"--low":`${t}%`,"--high":`${n}%`})}"><div class="track"></div><input type="range" min="${this.min}" max="${this.max}" step="${this.step}" @input="${this._onInput}" @change="${this._onChange}"> <input type="range" min="${this.min}" max="${this.max}" step="${this.step}" @input="${this._onInput}" @change="${this._onChange}"></div>`}firstUpdated(){this._inputs=[...this.renderRoot.querySelectorAll(`input[type="range"]`)],this._inputs[0].value=this.low,this._inputs[1].value=this.high}updated(e){if(!this._inputs||!(e.has(`low`)||e.has(`high`)))return;let t=this._inputs.map(e=>Number(e.value)),n=t[0]>t[1],r=+!!n,i=+!n;this.low!==t[r]&&(this._inputs[r].value=this.low),this.high!==t[i]&&(this._inputs[i].value=this.high)}_onInput=()=>{let e=Number(this._inputs[0].value),t=Number(this._inputs[1].value);this.low=Math.min(e,t),this.high=Math.max(e,t),this._emit(`range-input`)};_onChange=()=>{this._emit(`range-change`)};_emit(e){this.dispatchEvent(new CustomEvent(e,{detail:{low:this.low,high:this.high},bubbles:!0,composed:!0}))}};customElements.define(`range-slider`,ko);var Ao=class extends B{static properties={low:{type:Number},high:{type:Number},for:{type:String}};createRenderRoot(){return this}constructor(){super(),this.low=0,this.high=10,this.for=`conf-range`,this._dragging=!1,this._liveLow=0,this._liveHigh=10}connectedCallback(){super.connectedCallback(),document.addEventListener(`range-input`,this._onRangeInput),document.addEventListener(`range-change`,this._onRangeChange)}disconnectedCallback(){super.disconnectedCallback(),document.removeEventListener(`range-input`,this._onRangeInput),document.removeEventListener(`range-change`,this._onRangeChange)}willUpdate(e){this._dragging&&(e.has(`low`)&&this.low!==this._liveLow&&(this.low=this._liveLow),e.has(`high`)&&this.high!==this._liveHigh&&(this.high=this._liveHigh))}_onRangeInput=e=>{e.target?.id===this.for&&(this._dragging=!0,this._liveLow=e.detail.low,this._liveHigh=e.detail.high,this.low=e.detail.low,this.high=e.detail.high)};_onRangeChange=e=>{e.target?.id===this.for&&(this._dragging=!1)};render(){return R`<span>${this.low}</span><span class="dash">–</span><span>${this.high}</span>`}};customElements.define(`conf-range-mirror`,Ao);var jo=`:host{display:inline-flex;vertical-align:middle;position:relative}.chip{display:inline-flex;align-items:center;gap:.375rem;cursor:default;user-select:none;position:relative;min-height:24px;box-sizing:border-box;padding:.125rem .375rem .125rem .5rem;background:var(--surface);border:var(--header-tag-border, 1px solid var(--border));border-radius:var(--ui-radius, 999px);color:var(--text);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.72rem;font-weight:500}.chip svg{color:var(--muted);flex-shrink:0}.chip.empty:hover{border-color:var(--accent)}.chip.empty .label{color:var(--muted);font-style:italic}.chip.readonly{padding-right:.5rem}.chip.copied:after{content:"Copied";position:absolute;inset:0;display:grid;place-items:center;background:var(--surface);backdrop-filter:var(--glass-blur);border-radius:var(--ui-radius, 999px);color:var(--text);font-weight:400;white-space:nowrap;pointer-events:none}.edit-btn{width:18px;height:18px;display:grid;place-items:center;padding:0;margin-left:.125rem;background:transparent;border:0;border-radius:var(--ui-radius, 4px);color:var(--muted)}.edit-btn:hover{color:var(--text);background:rgb(from var(--text) r g b / .06)}@media(display-mode:window-controls-overlay){.edit-btn,input{-webkit-app-region:no-drag;app-region:no-drag}}.chip[inert]{visibility:hidden;min-width:19rem}input{position:absolute;inset:0;box-sizing:border-box;padding:0 .55rem;background:var(--surface);border:1px solid var(--accent);border-radius:var(--ui-radius, 999px);color:var(--text);font:inherit;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.72rem;font-weight:400;outline:none}@media print{.chip{color:#000!important;border:0!important}.chip svg{color:#000!important}.edit-btn,input{display:none!important}}:host-context(body.theme-w95) .chip{min-height:23px;border:0;background:var(--w95-face);box-shadow:var(--w95-raised);color:#000;font-family:inherit;font-size:11px;font-weight:400;&.empty:hover{border-color:transparent}}
|
|
19
|
+
`,Mo=R`<svg viewBox="0 0 16 16" width="12" height="12" fill="currentColor" aria-hidden="true"><path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0 0 16 8c0-4.42-3.58-8-8-8z"/></svg>`,No=R`<svg viewBox="0 0 16 16" width="11" height="11" fill="currentColor" aria-hidden="true"><path d="M11.013 1.427a1.75 1.75 0 0 1 2.474 0l1.086 1.086a1.75 1.75 0 0 1 0 2.474l-8.61 8.61c-.21.21-.47.364-.756.445l-3.251.93a.75.75 0 0 1-.927-.928l.929-3.25c.082-.286.235-.547.445-.758l8.61-8.61z"/></svg>`,Po=class extends B{static properties={url:{type:String},editable:{type:Boolean,reflect:!0},editing:{type:Boolean,reflect:!0},_copied:{state:!0}};static styles=L(jo);constructor(){super(),this.url=``,this.editable=!1,this.editing=!1,this._copied=!1,this._opener=``}render(){if(this.editable&&this.editing){let e=!!this.url,t=e?Yn(this.url):`Set repo`;return R`<span class="${e?`chip`:`chip empty`}" aria-hidden="true" inert>${Mo} <span class="label">${t}</span> <button type="button" class="edit-btn">${No}</button> </span><input type="text" .value="${M(this.url)}" placeholder="user/repo or https://github.com/user/repo" @input="${this._onInput}" @focus="${this._onFocus}" @keydown="${this._onKeydown}" @blur="${this._onBlur}">`}if(this.editable){let e=!!this.url,t=e?Yn(this.url):`Set repo`,n=e?this._copied?`chip copied`:`chip`:`chip empty`;return R`<span class="${n}" @click="${e?null:this._onEdit}">${Mo} ${e?this._slugLabel(t):R`<span class="label">${t}</span>`} <button type="button" class="edit-btn" aria-label="Edit repo URL" @click="${this._onEdit}">${No}</button></span>`}if(this.url){let e=this._copied?`chip readonly copied`:`chip readonly`;return R`<span class="${e}">${Mo} ${this._slugLabel(Yn(this.url))}</span>`}return z}_slugLabel(e){return R`<span class="label" @click="${this._onCopyLabel}">${e}</span>`}updated(e){if(e.has(`editing`)&&this.editing){let e=this.renderRoot.querySelector(`input`);e&&(e.focus(),e.select())}}_onEdit=e=>{e&&e.stopPropagation(),this._emit(`repo-edit-start`)};_onCopyLabel=e=>{e&&e.stopPropagation();let t=Yn(this.url);if(t)try{navigator.clipboard.writeText(t).then(()=>(this._copied=!0,setTimeout(()=>{this._copied=!1},1e3),null)).catch(()=>{})}catch{}};_onFocus=e=>{this._opener=e.target.value};_onInput=e=>{this.url=e.target.value,this._emit(`repo-input`,{url:this.url})};_onKeydown=e=>{e.key===`Enter`?(e.preventDefault(),this._emit(`repo-commit`,{url:this.url})):e.key===`Escape`&&(e.preventDefault(),this.url=this._opener,this._emit(`repo-cancel`,{url:this._opener}))};_onBlur=()=>{this.editing&&this._emit(`repo-commit`,{url:this.url})};_emit(e,t){this.dispatchEvent(new CustomEvent(e,{detail:t,bubbles:!0,composed:!0}))}};customElements.define(`repo-chip`,Po);var Fo=R`<svg viewBox="0 0 16 16" width="12" height="12" aria-hidden="true"><path class="bubble" d="M2.5 3h11a.5.5 0 0 1 .5.5v6.5a.5.5 0 0 1-.5.5H8.4l-3 2.6V10.5H2.5a.5.5 0 0 1-.5-.5V3.5a.5.5 0 0 1 .5-.5z" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linejoin="round"/></svg>`,Io=R`<svg viewBox="0 0 16 16" width="12" height="12" aria-hidden="true"><path class="wrench" d="M10.4 2.6a3 3 0 0 0-3.6 4.5L2 12l2 2 4.9-4.8a3 3 0 0 0 4.5-3.6l-1.8 1.8-1.5-.4-.4-1.5z" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linejoin="round"/></svg>`,Lo=R`<svg viewBox="0 0 16 16" width="12" height="12" aria-hidden="true"><path class="flag-cloth" d="M5 1.5h6v13l-3-2.7-3 2.7z" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linejoin="round"/></svg>`,Ro=Sr(Er.replace(`width="14" height="14"`,`width="12" height="12"`)),zo=R`<svg viewBox="0 0 16 16" width="12" height="12" aria-hidden="true"><g fill="none" stroke="currentColor" stroke-width="1.15" stroke-linecap="round" stroke-linejoin="round"><path d="M5 1.2 1.3 3.1v5.7L5 10.7l3.7-1.9V3.1Z M1.3 3.1 5 5l3.7-1.9 M5 5v5.7"/><path d="M11 5.2 7.3 7.1v5.7l3.7 1.9 3.7-1.9V7.1Z M7.3 7.1 11 9l3.7-1.9 M11 9v5.7"/></g></svg>`,Bo=R`<svg viewBox="0 0 16 16" width="12" height="12" aria-hidden="true"><g fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"><rect x="3.4" y="1.5" width="10" height="3.6" rx=".8"/><rect x="2.2" y="5.3" width="10" height="3.6" rx=".8"/><rect x="1" y="9.1" width="10" height="3.6" rx=".8"/></g></svg>`,Vo=R`<svg viewBox="0 0 16 16" width="12" height="12" aria-hidden="true"><path d="M8 1.5 13 3.5v4c0 3-2.1 5.5-5 7-2.9-1.5-5-4-5-7v-4Z" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linejoin="round"/></svg>`,Ho=[{key:`comment`,glyph:Fo,label:`commented`,stateKey:`filterComment`,hasKey:`hasComment`},{key:`fix`,glyph:Io,label:`fixed`,stateKey:`filterFix`,hasKey:`hasFix`},{key:`flag`,glyph:Lo,label:`flagged`,stateKey:`filterFlagged`,hasKey:`hasFlagged`},{key:`duplicates`,glyph:Ro,label:`rows with duplicates in other reports`,stateKey:`filterDuplicates`,hasKey:`hasDuplicates`},{key:`cross-context`,glyph:zo,label:`rows across multiple repos or packages`,stateKey:`filterCrossContext`,hasKey:`hasCrossContext`},{key:`app-stacked`,glyph:Bo,label:`stacked App rows`,stateKey:`filterAppStacked`,hasKey:`hasAppStacked`},{key:`security`,glyph:Vo,label:`security-related rows`,stateKey:`filterSecurity`,hasKey:`hasSecurityContrast`}],Uo=new Set([`duplicates`,`cross-context`,`app-stacked`,`security`]),Wo=class extends k{static properties={group:{type:String},hasComment:{attribute:!1},hasFix:{attribute:!1},hasFlagged:{attribute:!1},hasDuplicates:{attribute:!1},hasCrossContext:{attribute:!1},hasAppStacked:{attribute:!1},hasSecurityContrast:{attribute:!1}};createRenderRoot(){return this}constructor(){super(),this.group=`marks`,this.hasComment=!1,this.hasFix=!1,this.hasFlagged=!1,this.hasDuplicates=!1,this.hasCrossContext=!1,this.hasAppStacked=!1,this.hasSecurityContrast=!1}connectedCallback(){super.connectedCallback(),Y(this,{role:`group`,"aria-label":this.group===`context`?`Finding row filters`:`Annotation filter`})}render(){let e=Ho.filter(e=>this.group===`context`===Uo.has(e.key)).filter(e=>e.key===`security`?this.hasSecurityContrast:e.key===`duplicates`?!A.currentWorkspace&&(this.hasDuplicates||A[e.stateKey]):this[e.hasKey]||A[e.stateKey]);return e.length===0?z:R`${e.map(e=>{let t=A[e.stateKey],n=Uo.has(e.key)?e.label:`${e.label} findings`,r=t===`with`?`Showing only ${n} \u2014 click to exclude them`:t===`without`?`Excluding ${n} \u2014 click to clear`:`Show only ${n}`;return R`<button type="button" class="${P({"annotation-chip":!0,"sel-with":t===`with`,"sel-without":t===`without`})}" aria-label="${r}" aria-pressed="${String(t!==``)}" @click="${()=>this._toggle(e.key)}">${e.glyph}</button>`})}`}_toggle(e){this.dispatchEvent(new CustomEvent(`annotation-filter-toggle`,{detail:{key:e},bubbles:!0,composed:!0}))}};customElements.define(`annotation-filter`,Wo);var Go=[[`critical`,`Critical`],[`high`,`High`],[`medium`,`Medium`],[`low`,`Low`],[`high_bug`,`High bug`],[`bug`,`Bug`],[`informational`,`Info`]],Ko=class extends k{static properties={counts:{attribute:!1},selected:{attribute:!1},kind:{type:String}};createRenderRoot(){return this}constructor(){super(),this.counts={},this.selected=[],this.kind=`findings`}connectedCallback(){super.connectedCallback(),Y(this,{role:`group`,"aria-label":`Filter by severity`})}render(){let e=this.kind===`graph`?new Set(this.selected):A.filterSeverities,t=Go.filter(([t])=>(this.counts[t]??0)||e.has(t));return t.length===0?z:R`${t.map(([t,n])=>{let r=this.counts[t]??0,i=e.has(t);return R`<button type="button" class="${P({"sev-chip":!0,[t]:!0,active:i})}" aria-pressed="${String(i)}" @click="${()=>this._toggle(t)}"><span class="sd"></span><span class="name">${n}</span><span class="n">${r}</span></button>`})}`}_toggle(e){this.dispatchEvent(new CustomEvent(`severity-toggle`,{detail:{severity:e,kind:this.kind},bubbles:!0,composed:!0}))}};customElements.define(`severity-chips`,Ko);var qo=[[`corrected`,`Corrected`,`Show corrected severities (application-specific re-ratings)`],[`original`,`Original`,z]],Jo=class extends k{createRenderRoot(){return this}connectedCallback(){super.connectedCallback(),Y(this,{role:`group`,"aria-label":`Severity display mode`})}render(){let e=A.severityMode;return R`<span class="severity-mode-label">Severity</span><span class="severity-mode-chips">${qo.map(([t,n,r])=>{let i=e===t;return R`<button type="button" class="${P({"severity-mode-chip":!0,active:i})}" aria-pressed="${String(i)}" data-tooltip="${r}" @click="${()=>this._select(t)}">${n}</button>`})}</span>`}_select(e){e!==A.severityMode&&this.dispatchEvent(new CustomEvent(`severity-mode-change`,{detail:{mode:e},bubbles:!0,composed:!0}))}};customElements.define(`severity-mode-switch`,Jo);var Yo=R`<svg viewBox="0 0 16 16" width="13" height="13" aria-hidden="true"><path d="M8 1.8 14.4 5 8 8.2 1.6 5z" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linejoin="round"/><path d="M2.6 8 8 10.7 13.4 8" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"/><path d="M2.6 11 8 13.7 13.4 11" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"/></svg>`,Xo=`Show underlying code findings`,Zo=R`<svg viewBox="0 0 16 16" width="13" height="13" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M3 5.5v2h10v-2M8 7.5v3"/><rect x="1" y="1.5" width="4" height="4" rx=".6"/><rect x="11" y="1.5" width="4" height="4" rx=".6"/><rect x="6" y="10.5" width="4" height="4" rx=".6"/></svg>`,Qo=`Show only upstream dependency findings`,$o=class extends k{static properties={canDrop:{type:Boolean,attribute:`can-drop`},canDetail:{type:Boolean,attribute:`can-detail`},canUpstream:{type:Boolean,attribute:`can-upstream`},upstreamDisabled:{type:Boolean,attribute:`upstream-disabled`}};createRenderRoot(){return this}constructor(){super(),this.canDrop=!1,this.canDetail=!1,this.canUpstream=!1,this.upstreamDisabled=!1}connectedCallback(){super.connectedCallback(),Y(this,{role:`group`,"aria-label":`Revalidation layer`})}render(){let e=A.revalidateConflicts.size,t=e>0?R`<button type="button" class="revalidation-toggle revalidation-conflicts" aria-haspopup="dialog" aria-label="${`View ${e} revalidation conflict${e===1?``:`s`}`}" @click="${this._openConflicts}">${e} ${e===1?`conflict`:`conflicts`}</button>`:z,n=A.showRevalidation!==!1,r=n&&A.revalidationDetailed===!0,i=A.upstreamOnly===!0,a=i&&!this.upstreamDisabled;return R`${t}${e===0&&this.canDrop?R`<mode-switch class="revalidation-toggle" label="App" borderless .checked="${n}" accessible-label="App view — hide the issues the revalidation pass ruled out" .disabled="${i}" @click="${this._toggle}"></mode-switch>`:z}${e===0&&this.canDrop&&this.canDetail?R`<button type="button" class="${P({"revalidation-detail":!0,on:r})}" aria-pressed="${String(r)}" aria-label="${Xo}" data-tooltip="${Xo}" ?disabled="${!n||i}" @click="${this._toggleDetail}">${Yo}</button>`:z}${this.canUpstream?R`<button type="button" class="${P({"revalidation-upstream":!0,on:a})}" aria-pressed="${String(a)}" aria-label="${Qo}" data-tooltip="${Qo}" ?disabled="${this.upstreamDisabled}" @click="${this._toggleUpstream}">${Zo}</button>`:z}`}_toggle=()=>{this.dispatchEvent(new CustomEvent(`revalidation-change`,{detail:{on:A.showRevalidation===!1},bubbles:!0,composed:!0}))};_openConflicts=()=>{this.dispatchEvent(new CustomEvent(`revalidation-conflicts-open`,{bubbles:!0,composed:!0}))};_toggleDetail=()=>{this.dispatchEvent(new CustomEvent(`revalidation-detail-change`,{detail:{on:A.revalidationDetailed!==!0},bubbles:!0,composed:!0}))};_toggleUpstream=()=>{this.upstreamDisabled||this.dispatchEvent(new CustomEvent(`upstream-only-change`,{detail:{on:A.upstreamOnly!==!0},bubbles:!0,composed:!0}))}};customElements.define(`revalidation-switch`,$o);var es=R`<svg class="trash-icon" viewBox="0 0 16 16" width="11" height="11" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M3 4h10M6.5 4V2.5h3V4M5 4l.7 9h4.6L11 4"/></svg>`,ts=class extends k{createRenderRoot(){return this}render(){let e=A.currentView===`bundles`&&A.selectedBundle,t=!A.currentFile&&!e;return R`<button type="button" class="danger" ?disabled="${t}">${es}<span>Delete current</span></button>`}};customElements.define(`sidebar-delete-current`,ts);var ns=R`<svg viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M2 6h12v7a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V6Z"/><path d="M2 6l1.6-3.3A1.3 1.3 0 0 1 4.8 2h6.4a1.3 1.3 0 0 1 1.2.7L14 6"/><path d="M8 2v4"/></svg>`,rs=R`<svg viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><line x1="4" x2="4" y1="2.5" y2="10"/><circle cx="12" cy="4" r="2"/><circle cx="4" cy="12" r="2"/><path d="M12 6a6 6 0 0 1-6 6"/></svg>`,is={packages:{title:`Show packages`,icon:ns,view:`packages`},repositories:{title:`Show repositories`,icon:rs,view:`repositories`}},as=class extends k{static properties={kind:{type:String},count:{type:Number}};createRenderRoot(){return this}constructor(){super(),this.kind=``,this.count=0}render(){if(this.count===0)return z;let e=xo(`sidebar-view-button`,is,this.kind);if(!e)return z;let t=A.currentView===e.view;return R`<button type="button" class="${P({"sidebar-view-btn":!0,active:t})}" aria-label="${e.title}">${e.icon}<span class="view-btn-count">${this.count}</span></button>`}};customElements.define(`sidebar-view-button`,as);var os=[`invalid`,`deleted`],ss={package:{stateKey:`packageSlideTriage`},repository:{stateKey:`repositorySlideTriage`}},cs=class extends k{static properties={counts:{attribute:!1},kind:{type:String}};createRenderRoot(){return this}constructor(){super(),this.counts={},this.kind=``}connectedCallback(){super.connectedCallback(),Y(this,{role:`group`,"aria-label":`Triage view`})}render(){let e=xo(`slide-triage-tabs`,ss,this.kind);if(!e)return z;let t=A[e.stateKey],n=os.filter(e=>(this.counts[e]??0)>0||t===e);return n.length===0?z:R`${n.map(e=>{let n=t===e,r=this.counts[e]??0;return R`<button type="button" class="${P({"triage-state-btn":!0,[`triage-state-${e}`]:!0,active:n})}" aria-pressed="${String(n)}" @click="${()=>this._toggle(e)}">${e.charAt(0).toUpperCase()+e.slice(1)} (${r})</button>`})}`}_toggle(e){this.dispatchEvent(new CustomEvent(`slide-triage-toggle`,{detail:{kind:this.kind,value:e},bubbles:!0,composed:!0}))}};customElements.define(`slide-triage-tabs`,cs);var ls=[[`own`,`Sources`],[`modules`,`Deps`]],us=class extends k{createRenderRoot(){return this}connectedCallback(){super.connectedCallback(),Y(this,{role:`group`,"aria-label":`Source filter`})}render(){return R`${ls.map(([e,t])=>{let n=A.filterSources.has(e);return R`<button type="button" class="${P({"source-chip":!0,active:n})}" aria-pressed="${String(n)}" @click="${()=>this._toggle(e)}">${t}</button>`})}`}_toggle(e){this.dispatchEvent(new CustomEvent(`source-toggle`,{detail:{source:e},bubbles:!0,composed:!0}))}};customElements.define(`source-filter`,us);var ds=R`<svg viewBox="0 0 24 24" width="13" height="13" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true"><circle cx="11" cy="11" r="7"/><path d="m20 20-3.5-3.5"/></svg>`,fs=R`<svg viewBox="0 0 16 16" width="13" height="13" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M3 6h10v4"/></svg>`,ps={findings:{stateKey:`filterInclude`,placeholder:`Search findings…`},files:{stateKey:`filesSearch`,placeholder:`Search files…`}},ms=class extends k{static properties={kind:{type:String}};createRenderRoot(){return this}constructor(){super(),this.kind=``}render(){let e=xo(`toolbar-search`,ps,this.kind);if(!e)return z;let t=A[e.stateKey];return R`${ds} <input type="text" aria-label="${e.placeholder}" placeholder="${e.placeholder}" .value="${M(t)}" @input="${this._onInput}"> ${this.kind===`findings`&&t?this._negateToggle():z}`}_negateToggle(){let e=A.filterIncludeNegate;return R`<button type="button" class="${P({"search-negate-btn":!0,active:e})}" data-tooltip="${e?`Negation on — click to undo`:`Negate: show non-matching findings`}" aria-label="Negate search" aria-pressed="${String(e)}" @click="${this._onToggleNegate}">${fs}</button>`}_onInput=e=>{this.dispatchEvent(new CustomEvent(`search-input`,{detail:{kind:this.kind,value:e.target.value},bubbles:!0,composed:!0}))};_onToggleNegate=()=>{this.dispatchEvent(new CustomEvent(`search-negate-toggle`,{bubbles:!0,composed:!0}))}};customElements.define(`toolbar-search`,ms);var hs=class extends k{static properties={options:{attribute:!1}};createRenderRoot(){return this}constructor(){super(),this.options=[]}render(){let e=[{value:``,label:`All repositories`,special:!0,reset:!0},...this.options.map(e=>({value:e??pe,label:e==null?`(no repo)`:Yn(e),special:e==null}))];return R`<repository-selector variant="filter" label="Filter by repository" .options="${e}" .value="${A.filterRepo}" @repository-change="${e=>this.dispatchEvent(new CustomEvent(`repo-change`,{detail:{value:e.detail.value},bubbles:!0,composed:!0}))}"></repository-selector>`}};customElements.define(`repo-filter`,hs);var gs={"":{cls:`included`,label:`+ Partial`,title:`Confirmed, partial and revalidation rows — click for full confirmations only`},exclude:{cls:`excluded`,label:`− Partial`,title:`Full confirmations only — click to show the partial ones only`},only:{cls:`only`,label:`only Partial`,title:`Partial confirmations only — click to show all of them again`}},_s=class extends k{static properties={options:{attribute:!1},hasPartial:{type:Boolean,attribute:`has-partial`}};createRenderRoot(){return this}constructor(){super(),this.options=[],this.hasPartial=!1}render(){return R`<select class="sort-select" aria-label="Filter by revalidation outcome" .value="${M(A.filterRevalidate)}" @change="${this._onChange}"><option value="" hidden ?selected="${A.filterRevalidate===``}"></option><option value="">Confidence</option>${this.options.map(e=>R`<option value="${e.value}" ?selected="${A.filterRevalidate===e.value}">${e.label}</option>`)}</select> ${this.hasPartial&&A.filterRevalidate===`confirmed`?this._partialChip():z}`}_partialChip(){let e=gs[A.filterPartial]??gs[``];return R`<button type="button" class="${P({"partial-cycle":!0,[e.cls]:!0})}" data-tooltip="${e.title}" @click="${this._onPartial}">${e.label}</button>`}_onPartial=()=>{let e=ar.indexOf(A.filterPartial),t=ar[(e+1)%ar.length];this.dispatchEvent(new CustomEvent(`partial-change`,{detail:{value:t},bubbles:!0,composed:!0}))};_onChange=e=>{let{value:t}=e.target;t||(e.target.selectedIndex=0),this.dispatchEvent(new CustomEvent(`revalidate-change`,{detail:{value:t},bubbles:!0,composed:!0}))}};customElements.define(`revalidate-filter`,_s);var vs=[[`none`,`none`,`unmarked`],[`red`,`r`,`red`],[`blue`,`b`,`blue`],[`green`,`g`,`green`],[`gray`,`x`,`gray`]],ys=class extends k{static properties={counts:{attribute:!1},selected:{attribute:!1},kind:{type:String}};createRenderRoot(){return this}constructor(){super(),this.counts={},this.selected=[],this.kind=`findings`}connectedCallback(){super.connectedCallback(),Y(this,{role:`group`,"aria-label":`Filter by mark color`})}render(){let e=this.kind===`graph`?new Set(this.selected):A.filterColors;return vs.some(([t])=>(this.counts[t]??0)||e.has(t))?R`${vs.map(([t,n,r])=>{let i=this.counts[t]??0,a=e.has(t);return R`<button type="button" class="${a?`active`:``}" aria-label="${`${r} (${i})`}" aria-pressed="${String(a)}" @click="${()=>this._toggle(t)}"><span class="${`td ${n}`}"></span><span class="count">${i}</span></button>`})}`:z}_toggle(e){this.dispatchEvent(new CustomEvent(`color-toggle`,{detail:{color:e,kind:this.kind},bubbles:!0,composed:!0}))}};customElements.define(`triage-filter`,ys);var bs=[`inprogress`,`fixed`,`invalid`,`deleted`,`ignored`],xs={graph:`graph2-triage-selector`,packages:`packages-triage-selector`},Ss={inprogress:`In progress`},Cs=e=>Ss[e]??e.charAt(0).toUpperCase()+e.slice(1),ws=class extends k{static properties={counts:{attribute:!1},states:{attribute:!1},variant:{type:String}};createRenderRoot(){return this}constructor(){super(),this.counts={},this.states=null,this.variant=``}connectedCallback(){super.connectedCallback(),Y(this,{role:`group`,"aria-label":`Triage view`})}render(){let e=this.states??bs,t=e.reduce((e,t)=>e+(this.counts[t]??0),0),n=this.variant?xs[this.variant]:null;this.variant&&n===void 0&&console.warn(`<triage-selector>: unknown variant ${JSON.stringify(this.variant)}; expected one of ${Object.keys(xs).map(e=>JSON.stringify(e)).join(`, `)} or "".`);for(let e of Object.values(xs))this.classList.toggle(e,e===n);let r=t===0&&!A.shownTriage;return this.classList.toggle(`is-empty`,r),r?z:R`${e.map(e=>{let t=this.counts[e]??0,n=A.shownTriage===e;if(t===0&&!n)return z;let r=Cs(e);return R`<button type="button" class="${P({"triage-state-btn":!0,[`triage-state-${e}`]:!0,active:n})}" data-triage-show="${e}" aria-pressed="${String(n)}"><span>${r}</span><span class="n">${t}</span></button>`})}`}};customElements.define(`triage-selector`,ws);var Ts={table:R`<svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"><rect x="3" y="3" width="18" height="18" rx="2"/><line x1="3" x2="21" y1="9" y2="9"/><line x1="3" x2="21" y1="15" y2="15"/><line x1="9" x2="9" y1="3" y2="21"/></svg>`,list:R`<svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true"><line x1="3" x2="21" y1="6" y2="6"/><line x1="3" x2="21" y1="12" y2="12"/><line x1="3" x2="21" y1="18" y2="18"/></svg>`,grouped:R`<svg viewBox="0 0 16 16" width="16" height="16" fill="currentColor" aria-hidden="true"><rect x="2" y="1.5" width="12" height="2" rx=".4"/><rect x="5" y="4.4" width="9" height="1.3"/><rect x="5" y="6.2" width="9" height="1.3"/><rect x="2" y="8.5" width="12" height="2" rx=".4"/><rect x="5" y="11.4" width="9" height="1.3"/><rect x="5" y="13.2" width="9" height="1.3"/></svg>`,kanban:R`<svg viewBox="0 0 16 16" width="16" height="16" fill="currentColor" aria-hidden="true"><rect x="1.5" y="2" width="3.8" height="12" rx=".6" fill="none" stroke="currentColor" stroke-width="1"/><rect x="6.1" y="2" width="3.8" height="12" rx=".6" fill="none" stroke="currentColor" stroke-width="1"/><rect x="10.7" y="2" width="3.8" height="12" rx=".6" fill="none" stroke="currentColor" stroke-width="1"/><rect x="2.4" y="3.6" width="2" height="1.4" rx=".2"/><rect x="2.4" y="5.6" width="2" height="1.4" rx=".2"/><rect x="7" y="3.6" width="2" height="1.4" rx=".2"/><rect x="11.6" y="3.6" width="2" height="1.4" rx=".2"/><rect x="11.6" y="5.6" width="2" height="1.4" rx=".2"/><rect x="11.6" y="7.6" width="2" height="1.4" rx=".2"/></svg>`,focus:R`<svg viewBox="0 0 16 16" width="16" height="16" fill="currentColor" aria-hidden="true"><rect x="1.5" y="2.5" width="8.5" height="11" rx=".6" fill="none" stroke="currentColor" stroke-width="1"/><rect x="3" y="4.4" width="5.5" height="1"/><rect x="3" y="6.4" width="5.5" height="1"/><rect x="3" y="8.4" width="3.5" height="1"/><rect x="11.2" y="2.5" width="3.3" height="2.5" rx=".4" fill="currentColor" opacity=".55"/><rect x="11.2" y="5.7" width="3.3" height="2.5" rx=".4" fill="currentColor" opacity=".35"/><rect x="11.2" y="8.9" width="3.3" height="2.5" rx=".4" fill="currentColor" opacity=".22"/></svg>`,graph:R`${Sr(Tr)}`},Es={table:`Table view (compact rows, click a row to expand)`,list:`List view (flat, one card per finding)`,grouped:`List view, grouped by file`,focus:`Focus view (one finding centered + a queue of next findings)`,kanban:`Kanban board, columns grouped by triage status`,graph:`Graph view (canvas with imports / exports)`},Ds=[`kanban`,`focus`,`table`,`list`,`grouped`,`graph`],Os=class extends k{static properties={modes:{type:String},kind:{type:String}};createRenderRoot(){return this}constructor(){super(),this.modes=Ds.join(`,`),this.kind=`findings`}connectedCallback(){super.connectedCallback(),Y(this,{role:`group`,"aria-label":`View mode`})}render(){let e=this.kind===`files`?A.filesViewMode:A.viewMode,t=this.modes.split(`,`).map(e=>e.trim()).filter(e=>Ds.includes(e)),n=t.length>0?t:Ds;return R`${n.map(t=>R`<button type="button" class="${P({"view-mode-btn":!0,active:e===t})}" aria-label="${Es[t]}" aria-pressed="${String(e===t)}" @click="${()=>this._select(t,e)}">${Ts[t]}</button>`)}`}_select(e,t){e!==t&&this.dispatchEvent(new CustomEvent(`view-mode-change`,{detail:{mode:e,kind:this.kind},bubbles:!0,composed:!0}))}};customElements.define(`view-mode-buttons`,Os);var ks=`/api/oauth/github/link`,As={"github-account-own":`That is the account you sign in with. On GitHub, pick or add the other account to link.`,"github-account-registered":`That GitHub account has signed in here before, so it is a user of its own and cannot be linked.`,"github-account-linked":`That GitHub account is already linked to another user.`,"github-authorization-declined":`Linking was cancelled on GitHub.`,"invalid-oauth-state":`The link request expired or was started from another session. Try again.`},js=e=>new Date(e).toLocaleDateString(void 0,{month:`short`,day:`numeric`,year:`numeric`}),Ms=class extends B{static properties={session:{attribute:!1},linkError:{attribute:!1},_profile:{state:!0},_pending:{state:!0},_busy:{state:!0},_error:{state:!0},_avatarRevision:{state:!0}};constructor(){super(),this._profile=null,this._avatarRevision=0,this._controller=new AbortController}createRenderRoot(){return this}disconnectedCallback(){super.disconnectedCallback(),this._controller.abort(),this._key=null}get _readOnly(){return!!this.session?.viewer||u()!==null}async _load(){let e=this._key;this._busy=!0,this._error=null;try{let t=await Ve({signal:this._controller.signal});e===this._key&&(this._profile=t)}catch(t){e===this._key&&t.name!==`AbortError`&&(this._error=t.message)}finally{e===this._key&&(this._busy=!1)}}async _change(e,t=null){if(this._busy||this._readOnly)return;let n=this._key;this._busy=!0,this._error=null;try{let r=await e(this.session.csrfToken,{signal:this._controller.signal});if(n!==this._key)return;let i=r.avatarAccount!==this._profile?.avatarAccount;i&&this._avatarRevision++,this._profile=r,rn(this.session.id,r,i,t),document.dispatchEvent(new CustomEvent(`managed-profile-change`,{detail:{userId:this.session.id,name:r.name,avatarChanged:i}}))}catch(e){n===this._key&&e.name!==`AbortError`&&(this._error=e.message)}finally{n===this._key&&(this._busy=!1,this._pending=null)}}_choose(e,t){return this._busy||this._readOnly?Promise.resolve():(this._pending={[`${e}Account`]:t},this._change((n,r)=>Ue({[e]:t},n,r)))}_unlink(e){return this._change((t,n)=>Ke(e.id,t,n),{login:e.login,githubId:e.githubId})}_avatar(e,{own:t=!1,initial:n,large:r=!1}={}){let i=`/api/avatar/${encodeURIComponent(e)}${t?`?own`:this._avatarRevision?`?v=${this._avatarRevision}`:``}`;return R`<span class="${`managed-profile-avatar${r?` is-large`:``}`}" aria-hidden="true"><span>${(n[0]??`?`).toUpperCase()}</span> ${u()?z:R`<img alt="" src="${i}" @error="${e=>e.currentTarget.classList.add(`broken`)}">`}</span>`}_account({id:e,githubId:t,login:n,name:r,linkedAt:i},a){let o=e===null,s=this._busy||this._readOnly;return R`<tr><td><span class="managed-profile-account">${this._avatar(o?this.session.id:e,{own:o,initial:n})} <span><a href="${`https://github.com/${encodeURIComponent(n)}`}" target="_blank" rel="noreferrer">@${n}</a> <span class="managed-profile-muted">${o?`Sign-in account`:i===null?`Linked`:`Linked ${js(i)}`}</span></span></span></td><td><label class="managed-profile-choice"><input type="radio" name="managed-profile-name" .checked="${M(a.nameAccount===e)}" ?disabled="${s}" aria-label="${`Use @${n}'s name`}" @change="${()=>this._choose(`name`,e)}"> ${r?R`<span>${r}</span>`:R`<span class="managed-profile-muted">No name</span>`}</label></td><td><label class="managed-profile-choice"><input type="radio" name="managed-profile-avatar" .checked="${M(a.avatarAccount===e)}" ?disabled="${s}" aria-label="${`Use @${n}'s avatar`}" @change="${()=>this._choose(`avatar`,e)}"><span class="managed-profile-muted">Avatar</span></label></td><td>${o?z:R`<button type="button" class="npm-review-button" ?disabled="${s}" aria-label="${`Unlink @${n}`}" @click="${()=>this._unlink({id:e,githubId:t,login:n})}">Unlink</button>`}</td></tr>`}render(){let e=JSON.stringify([this.session?.id,this.session?.role]);e!==this._key&&(this._controller.abort(),this._controller=new AbortController,this._key=e,this._profile=null,this._load());let t=this._profile,n=t?.login??this.session?.login??``,r=t?t.name:this.session?.name??null,i=this.linkError?As[this.linkError]??`Could not link the account (${this.linkError}).`:null;return R`<section class="managed-profile"><header class="managed-profile-card">${this._avatar(this.session?.id??``,{initial:n,large:!0})}<div><h1>${r||`@${n}`}</h1>${r?R`<p class="managed-profile-muted">@${n}</p>`:z}</div></header>${i?R`<p class="managed-profile-error" role="alert">${i}</p>`:z} ${this._error?R`<p class="managed-profile-error" role="alert">${this._error}</p>`:z}<section class="managed-profile-section" aria-labelledby="managed-profile-accounts"><h2 id="managed-profile-accounts">GitHub accounts</h2><p class="managed-profile-muted">You sign in as @${n}. Your name and avatar can come from any of your accounts. A linked account cannot sign in or register here.</p>${t?R`<table class="managed-profile-accounts"><thead><tr><th scope="col">Account</th><th scope="col">Name</th><th scope="col">Avatar</th><th scope="col"><span class="sr-only">Actions</span></th></tr></thead><tbody>${[{id:null,login:t.login,name:t.githubName,linkedAt:null},...t.accounts].map(e=>this._account(e,{...t,...this._pending}))}</tbody></table>`:z} ${this._readOnly?R`<p class="managed-profile-muted">${this.session?.viewer?`Viewing as another user is read only.`:`The preview changes nothing.`}</p>`:R`<a class="npm-review-button npm-review-primary" href="${ks}">Link GitHub account</a><p class="managed-profile-muted">GitHub asks which account to link: pick or add the other account there.</p>`}</section></section>`}};customElements.define(`managed-profile`,Ms);var Ns=class extends k{createRenderRoot(){return this}render(){return A.reports.length>0&&A.currentView===`findings`&&A.viewMode!==`graph`&&A.viewMode!==`kanban`?R`<button type="button" class="toolbar-export-btn" aria-label="Download or print report" @click="${this._onClick}">${t}</button>`:z}_onClick=()=>{this.dispatchEvent(new CustomEvent(`download-requested`,{bubbles:!0,composed:!0}))}};customElements.define(`download-button`,Ns);var Ps=class extends k{static styles=Or`.preview{position:fixed;inset:auto;margin:0;padding:14px;box-sizing:border-box;width:min(24rem,calc(100vw - 24px));max-height:calc(100vh - 24px);overflow:auto;border:1px solid var(--border);border-radius:var(--ui-radius, 10px);background:var(--bg);color:var(--text);box-shadow:0 8px 28px #00000040;font:13px/1.45 system-ui,sans-serif;text-align:left;white-space:normal;overflow-wrap:anywhere;letter-spacing:normal;cursor:default}.preview.wide{width:min(36rem,calc(100vw - 24px))}@media print{.preview{display:none}}:host-context(body.theme-w95) *{overscroll-behavior:none}`;constructor(){super(),this.showTimer=null,this.hideTimer=null}connectedCallback(){super.connectedCallback(),ir(this.renderRoot)}disconnectedCallback(){this._hidePreview(),super.disconnectedCallback()}updated(){let e=this.renderRoot.querySelector(`.preview`);e?e.matches(`:popover-open`)&&this._positionPreview():this._hidePreview()}_schedulePreview(){clearTimeout(this.hideTimer),clearTimeout(this.showTimer),this.renderRoot.querySelector(`.preview`)&&(this.showTimer=setTimeout(()=>{if(!this.isConnected)return;let e=this.renderRoot.querySelector(`.preview`);e&&(rr(),e.showPopover(),this._positionPreview(),document.addEventListener(`keydown`,this._previewKeyDown,!0),window.addEventListener(`scroll`,this._previewScroll,!0),window.addEventListener(`resize`,this._hidePreview))},150))}_keepPreview(){clearTimeout(this.hideTimer)}_leavePreview(){clearTimeout(this.showTimer),clearTimeout(this.hideTimer),this.hideTimer=setTimeout(()=>{this.renderRoot.querySelector(`.preview`)?.contains(this.renderRoot.activeElement)||this._hidePreview()},150)}_hidePreview=()=>{clearTimeout(this.showTimer),clearTimeout(this.hideTimer);let e=this.renderRoot?.querySelector(`.preview`);e?.matches(`:popover-open`)&&e.hidePopover(),document.removeEventListener(`keydown`,this._previewKeyDown,!0),window.removeEventListener(`scroll`,this._previewScroll,!0),window.removeEventListener(`resize`,this._hidePreview)};_previewKeyDown=e=>{e.key===`Escape`&&(e.preventDefault(),e.stopPropagation(),this.renderRoot.querySelector(`.preview`)?.contains(this.renderRoot.activeElement)&&this.renderRoot.querySelector(`[aria-details]`).focus({preventScroll:!0}),this._hidePreview())};_previewScroll=e=>{e.composedPath().includes(this.renderRoot.querySelector(`.preview`))||this._hidePreview()};_positionPreview(){let e=this.renderRoot.querySelector(`.preview`),t=this.renderRoot.querySelector(`[aria-details]`).getBoundingClientRect(),{width:n,height:r}=e.getBoundingClientRect(),i=Math.max(12,Math.min(t.left,window.innerWidth-n-12)),a=t.bottom+8+r<=window.innerHeight-12?t.bottom+8:Math.max(12,t.top-8-r);e.style.left=`${i}px`,e.style.top=`${a}px`}},Fs={open:`Open`,draft:`Draft`,closed:`Closed`,merged:`Merged`,completed:`Completed`,not_planned:`Not planned`,duplicate:`Duplicate`,unknown:`Closed`},Is=R`<svg viewBox="0 0 16 16" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="4" cy="3" r="1.75"/><circle cx="4" cy="13" r="1.75"/><circle cx="12" cy="13" r="1.75"/><path d="M4 4.75v6.5M12 11.25V5a2 2 0 0 0-2-2H8m2-2L8 3l2 2"/></svg>`,Ls=R`<svg viewBox="0 0 16 16" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><circle cx="8" cy="8" r="6.25"/><circle cx="8" cy="8" r="1.5" fill="currentColor" stroke="none"/></svg>`,Rs={completed:R`<svg viewBox="0 0 16 16" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="8" cy="8" r="6.25"/><path d="m5 8 2 2 4-4"/></svg>`,not_planned:R`<svg viewBox="0 0 16 16" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><circle cx="8" cy="8" r="6.25"/><path d="m3.5 12.5 9-9"/></svg>`},zs=class extends Ps{static properties={url:{type:String},compact:{type:Boolean,reflect:!0}};static styles=[Ps.styles,Or`:host{display:inline;word-break:normal}a{color:var(--accent);text-decoration:none;overflow-wrap:anywhere;cursor:default}.status{display:inline-flex;align-items:center;gap:.3em;vertical-align:text-bottom;margin-right:.35em;font-weight:600;white-space:nowrap}svg{flex:none}.open{color:light-dark(#1a7f37,#3fb950)}.draft,.not_planned,.duplicate,.unknown,.unavailable{color:var(--muted)}.closed{color:light-dark(#d1242f,#f85149)}.merged,.completed{color:light-dark(#8250df,#a371f7)}:host(:not([compact])){display:block}:host(:not([compact])) .fix-link{display:flex;align-items:center;gap:.55rem;min-width:0}.link-icon{flex:none;line-height:1}.link-icon svg{display:block}.link-title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text);font-weight:500;line-height:1.5}.link-icon.unavailable+.link-title{color:var(--accent)}.ref{min-width:0;max-width:32%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted);font-size:.74rem}.link-status{flex:none;padding:.15rem .4rem;border-radius:999px;background:color-mix(in srgb,currentColor 10%,transparent);font-size:.7rem;font-weight:500;line-height:1.3}:host([compact]){display:inline-flex}:host([compact]) .fix-link{display:inline-flex;align-items:center;justify-content:center;width:100%;height:100%}:host([compact]) .fix-link svg{width:14px;height:14px}:host([compact]) .status{margin:0;font-size:1rem;line-height:1}.preview{width:min(28.8rem,calc(100vw - 24px))}.preview.wide{width:min(43.2rem,calc(100vw - 24px))}:host-context(body.theme-w95) .preview{background:var(--w95-tooltip)}.preview-header{display:flex;align-items:center;justify-content:space-between;gap:12px}.preview-ref{display:inline-flex;align-items:center;gap:.4rem;min-width:0;color:var(--muted);font-size:12px;line-height:1.4}.preview-ref span{min-width:0}.preview-description{margin-top:8px;white-space:pre-wrap}.preview-title{margin-top:8px;font-size:15px;font-weight:600;line-height:1.4}.preview .preview-header .status{flex:none;margin:0;font-size:12px;line-height:1.4}@media print{:host(:not([compact])) .fix-link{display:block}.link-title,.ref{white-space:normal;overflow:visible;text-overflow:clip;max-width:none}.link-icon{display:inline-block;vertical-align:middle;margin-right:.55rem}.ref,.link-status{margin-left:.55rem}.preview{display:none}}`];constructor(){super(),this.url=``,this.compact=!1,this.unsubscribe=null}connectedCallback(){super.connectedCallback(),this.unsubscribe=Kt(()=>this.requestUpdate()),this.hasUpdated&&this.requestUpdate()}disconnectedCallback(){this.unsubscribe?.(),this.unsubscribe=null,super.disconnectedCallback()}updated(e){e.has(`url`)||e.has(`compact`)?this._hidePreview():super.updated(e)}render(){if(!yr(this.url))return R`${this.url}`;let e=jt(this.url),t=!e&&It(this.url),n=e||t,r=Vt.read(this.url);if(!r&&!n){let e=`Open fix link: ${this.url}`;return R`<a class="${this.compact?`fix-link`:``}" href="${this.url}" target="_blank" rel="noopener noreferrer" draggable="false" data-tooltip="${this.compact?e:z}" aria-label="${e}">${this.compact?R`<slot></slot>`:this.url}</a>`}let i=r?t&&r.status===`closed`?r.stateReason??`unknown`:r.status:`unavailable`,a=e?Is:t?Rs[i]??Ls:null,o=n?`${n.repo}#${n.number}`:``,s=(r?.title.length??0)>40||(r?.description??``).split(/[\r\n]/u).some(e=>e.length>100),c=r?`${Fs[i]} ${e?`pull request`:`issue`}: ${r.title} (${o})`:n?`Open ${e?`pull request`:`issue`}: ${o}`:`Open fix link: ${this.url}`;return R`<a class="fix-link" href="${this.url}" target="_blank" rel="noopener noreferrer" draggable="false" aria-label="${c}" aria-details="${this.compact&&n?`fix-preview`:z}" data-tooltip="${this.compact&&!n?c:z}" @mouseenter="${this._schedulePreview}" @mouseleave="${this._leavePreview}" @focus="${this._schedulePreview}" @blur="${this._leavePreview}" @click="${this._hidePreview}">${this.compact?a?R`<span class="${`status ${i}`}">${a}</span>`:R`<slot></slot>`:R`${a?R`<span class="${`link-icon ${i}`}">${a}</span>`:z} <span class="link-title">${r?.title??(o||this.url)}</span> ${r?R`<span class="ref">${o}</span><span class="${`link-status ${i}`}">${Fs[i]}</span>`:z}`} </a>${this.compact&&n?R`<a class="${s?`preview wide`:`preview`}" id="fix-preview" popover="manual" href="${this.url}" target="_blank" rel="noopener noreferrer" draggable="false" aria-label="${`Open ${e?`pull request`:`issue`} ${o} on GitHub`}" @mouseenter="${this._keepPreview}" @mouseleave="${this._leavePreview}" @focusin="${this._keepPreview}" @focusout="${this._leavePreview}" @click="${e=>{e.stopPropagation(),this._hidePreview()}}"><div class="preview-header"><span class="preview-ref">${Sr(Dr)}<span>${o}</span></span> <span class="${`status ${i}`}">${a}${r?Fs[i]:e?`Pull request`:`Issue`}</span></div>${r?R`<div class="preview-title">${r.title}</div>`:z} ${r?.description?R`<div class="preview-description">${r.description}</div>`:z}</a>`:z}`}};customElements.define(`managed-fix-link`,zs);var Bs=class extends Ps{static properties={finding:{attribute:!1},comment:{type:String}};static styles=[Ps.styles,L(a),Or`:host{display:inline-flex}:host([hidden]){display:none!important}button{border:0;padding:0;background:none;color:inherit;font:inherit;cursor:default}.preview-trigger{display:inline-flex;align-items:center;justify-content:center;line-height:0}.preview-trigger:hover{color:var(--accent)}.managed-comment+.managed-comment{margin-top:12px;padding-top:12px;border-top:1px solid var(--border)}.comment-body{white-space:pre-wrap}.comment-body a{color:var(--accent);text-decoration:none}.comment-body a:hover{text-decoration:underline}.preview-footer{display:flex;justify-content:flex-end;margin-top:8px}.edit-hint{color:var(--muted);font-size:12px}.edit-hint:hover{color:var(--accent)}`];constructor(){super(),this.finding=null,this.comment=``,this.unsubscribe=null}connectedCallback(){super.connectedCallback(),this._subscribe(),document.addEventListener(`managed-comments-reset`,this._resetComments),this.hasUpdated&&this.requestUpdate()}disconnectedCallback(){this.unsubscribe?.(),this.unsubscribe=null,document.removeEventListener(`managed-comments-reset`,this._resetComments),super.disconnectedCallback()}updated(e){this.hidden=!this.renderRoot.querySelector(`.preview`),e.has(`finding`)&&(this._hidePreview(),this._subscribe()),super.updated(e)}_subscribe(){this.unsubscribe?.(),this.unsubscribe=this.finding?.id?re(this.finding.id,()=>this.requestUpdate()):null}_resetComments=()=>{this._hidePreview(),this.requestUpdate()};_previewClick(e){if(e.target.closest(`a, button`)){this._hidePreview();return}window.getSelection?.()?.toString()||(e.stopPropagation(),this.renderRoot.querySelector(`.preview-trigger`).click())}render(){let e=j(),t=e?_(this.finding):[];if(!(e?t.length>0:this.comment))return z;let n=(e?t.map(e=>e.body):[this.comment]).some(e=>e.split(/[\r\n]/u).some(e=>e.length>100));return R`<button type="button" class="preview-trigger mark-comment" aria-label="${e?`View comments`:`Edit comment`}" aria-details="comment-preview" @mouseenter="${this._schedulePreview}" @mouseleave="${this._leavePreview}" @focus="${this._schedulePreview}" @blur="${this._leavePreview}" @click="${this._hidePreview}"><slot></slot></button><div class="${n?`preview wide`:`preview`}" id="comment-preview" popover="manual" role="region" aria-label="${e?`Comments`:`Comment`}" @mouseenter="${this._keepPreview}" @mouseleave="${this._leavePreview}" @focusin="${this._keepPreview}" @focusout="${this._leavePreview}" @click="${this._previewClick}">${e?t.map(e=>xe(e,Ce(e.body))):R`<div class="comment-body">${Ce(this.comment)}</div><div class="preview-footer"><button type="button" class="mark-comment edit-hint">Edit</button></div>`}</div>`}};customElements.define(`comment-preview`,Bs);function Vs(e){let t=new Map;for(let[n,r]of A.triage)r[e]&&t.set(n,r[e]);return t}window.DeepView={get reports(){return A.reports.slice()},get groups(){return Zt()},get findings(){return Zt().flat()},get currentFile(){return A.currentFile},get currentWorkspace(){return A.currentWorkspace},triage:{get markers(){return Vs(`color`)},get triageState(){return Vs(`triage`)},get comments(){return Vs(`comment`)},get fixes(){return Vs(`fix`)},get flags(){return Vs(`flagged`)},get(e){let t=A.triage.get(e),n={};return t?.color&&(n.color=t.color),t?.triage&&(n.triage=t.triage),t?.comment&&(n.comment=t.comment),t?.fix&&(n.fix=t.fix),t?.flagged!==void 0&&(n.flagged=t.flagged),n},async set(e,{color:t,triage:n,comment:r,fix:i,flagged:a}={}){if(et())throw Error(`DeepView.triage.set: triage is read-only on this page`);let o=!1;if(t!==void 0&&(t===null||t===``?N(A.triage,e,{color:void 0})&&(o=!0):A.triage.get(e)?.color!==t&&(N(A.triage,e,{color:t}),o=!0)),n!==void 0){if(n===null||n===``||n===!1)N(A.triage,e,{triage:void 0})&&(o=!0);else if(n===`inprogress`||n===`fixed`||n===`invalid`||n===`deleted`||n===`ignored`)A.triage.get(e)?.triage!==n&&(N(A.triage,e,{triage:n}),o=!0);else throw TypeError(`DeepView.triage.set: unknown triage value ${JSON.stringify(n)} (expected 'inprogress' | 'fixed' | 'invalid' | 'deleted' | 'ignored' | null)`)}if(r!==void 0){let t=r?String(r):``;t?A.triage.get(e)?.comment!==t&&(N(A.triage,e,{comment:t}),o=!0):N(A.triage,e,{comment:void 0})&&(o=!0)}if(i!==void 0){let t=i?String(i):``;t?A.triage.get(e)?.fix!==t&&(N(A.triage,e,{fix:t}),o=!0):N(A.triage,e,{fix:void 0})&&(o=!0)}if(a!==void 0){let t=a===null||a===``?void 0:!!a;A.triage.get(e)?.flagged!==t&&(N(A.triage,e,{flagged:t}),o=!0)}return o&&(await y(),E()),o}},forceManagedMode:zt,setTheme:Ba,get theme(){return Va()},triageSync:le,refresh(){E()},export(){return Pn()},compareReports(){return Mn()}};var Hs={default:S.default,"claude-security":S[`claude-security`],"codex-security":S[`codex-security`],deepsec:S.deepsec,piolium:S.piolium,"markdown-generic":S[`markdown-generic`],bundle:Cr,workspace:wr,links:Er,github:Dr};for(let e of document.querySelectorAll(`.drop-supported-icon[data-icon]`)){let t=Hs[e.dataset.icon];t&&(e.innerHTML=tr(t))}Dn(E),Ae(E),wn(E),le.onStatusChange(E),vn(async(e,t)=>{A.currentWorkspace===e?await pn(e):A.currentFile&&A.currentFile===t?await on(t):await T()}),bn(async()=>{await T(),A.currentView===`bundles`&&E()}),jr(),Pr();async function Us(){let e=_t();if(!e)return!1;try{history.replaceState(null,``,location.pathname)}catch{}let t;try{t=await Fn({encoded:e})}catch(e){return alert(`Couldn't open the share-link unlock prompt: ${e.message}`),!1}if(!t)return!1;let n=await be({id:t.id,name:t.name,privateKey:t.privateKeyBase64});if(n.status===`already-attached`)return alert(`This workspace is already attached as "${n.workspace.name}".`),!1;if(n.status===`name-collision`){let e=n.existing?.name;return alert(e?`A workspace named "${e}" already exists. Open the share link again and pick a different name.`:`The shared workspace name is empty or invalid. Ask the sender to re-share with a real name.`),!1}return n.workspace?.id?await pn(n.workspace.id):await T(),!0}async function Ws(){let e=ur();if(!e)return!1;try{history.replaceState(null,``,location.pathname)}catch{}let t=await wt(e);return t.ok?!0:(alert(t.reason),!1)}var Gs=!1;async function Ks(){if(await Wt(),!Gs&&(j()||!x()||ot())){Gs=!0;try{await qs()}finally{ft.hidden=!1,bt()}}}async function qs(){let e=ge(),t=()=>e===ge()&&!j();if(j()){await T();return}if(await Ft(),!t()||(fe(),await Promise.all([T(),Oe().catch(e=>console.warn(`initial linked findings:`,e))]),!t())||await Us()||!t()||await Ws()||!t())return;let n=At(Qt);if(n){if(n.startsWith(`wbs:`)||n.startsWith(`wrs:`))await cn(n.slice(4),n.startsWith(`wrs:`)?`reports`:`bundles`);else if(n.startsWith(`ws:`)){let e=n.slice(3);v().some(t=>t.id===e)&&await pn(e)}else if(n.startsWith(`b:`)){let e=n.slice(2),t=e.indexOf(` `),r=t>=0?e.slice(0,t):e,i=t>=0?e.slice(t+1):``,a=pr.has(i)?i:`overview`;if((A.bundles??[]).some(e=>e.integrity===r)){let e=v().filter(e=>e.bundles.includes(r));ln(r,a,{workspaceId:e.length===1?e[0].id:null}),E(),_n(r),await T()}}else{let e=await Cn();if(!t())return;let r=Le(n);r&&e.includes(r.name)&&await on(r.name,void 0,{workspaceId:r.workspaceId})}}}var Js=!1,Ys=!1;document.addEventListener(`managed-client-mode-change`,()=>{Js=!j()&&x()});function Xs(e){Ys||(Ys=!0,queueMicrotask(()=>{alert(e+` This tab will reload to refresh its state. Any unsaved edits in this tab will be lost.`),location.reload()}))}mt(async()=>{if(await Wt(),j()){E();return}let e=Js,t=x();if(Js=t,E(),!Gs&&ot()){Ks().catch(e=>console.warn(`continueBoot:`,e));return}if(Gs&&t&&!ot()){Xs(`Encryption was just enabled in another tab.`);return}Gs&&e&&!t&&!nt()&&Xs(`Encryption was disabled in another tab.`)}),window.addEventListener(`hashchange`,()=>{!Gs||j()||(async()=>{await Us()||await Ws()})().catch(e=>console.warn(`deep-link hashchange:`,e))}),(async()=>{if(!await Wr()){await Wt(),Js=!j()&&x();try{let e=window.matchMedia?.(`(display-mode: window-controls-overlay)`),t=()=>{let t=!1;try{t=localStorage.getItem(`deepview.sidebarCollapsed`)===`1`}catch{}vt.classList.toggle(`collapsed`,t&&!e?.matches)};t(),e?.addEventListener(`change`,t);let n=e?.matches;if(window.matchMedia?.(`(display-mode: standalone)`).matches||n){let e=document.querySelector(`meta[name="viewport"]`);e&&e.setAttribute(`content`,`width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no`),window.addEventListener(`wheel`,e=>{(e.ctrlKey||e.metaKey)&&e.preventDefault()},{passive:!1}),window.addEventListener(`keydown`,e=>{(e.ctrlKey||e.metaKey)&&(e.key===`=`||e.key===`+`||e.key===`-`||e.key===`0`)&&e.preventDefault()})}}catch{}!j()&&x()&&!ot()||await Ks()}})();
|