@weapp-vite/dashboard 7.4.0 → 7.6.0

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.
@@ -1,34 +1,30 @@
1
1
  const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./monaco.css","./index.css"])))=>i.map(i=>d[i]);
2
- import{r as e}from"./rolldown-runtime.js";import{A as t,B as n,C as r,D as i,E as a,G as o,H as s,I as c,J as l,K as u,L as d,N as f,O as p,P as m,S as h,U as g,V as _,W as v,X as y,Z as b,_ as x,a as S,b as C,d as w,f as T,g as E,h as D,j as O,k,m as A,o as ee,p as j,s as te,t as ne,u as M,v as N,x as P,y as F,z as re}from"./vue.js";import{a as ie,i as ae,n as oe,r as se,s as ce,t as le}from"./monaco.js";import{E as I,T as L,a as ue,b as de,d as fe,f as R,h as z,m as pe,n as me,t as he,u as ge,w as _e,x as B,y as ve}from"./index.js";import{a as ye,c as V,n as be,o as xe,r as Se,s as H,t as U}from"./AppEmptyState.js";import{t as W}from"./AppMetricTile.js";import{a as Ce,c as we,d as Te,f as Ee,i as De,l as Oe,n as ke,o as Ae,p as je,r as Me,s as Ne,t as Pe,u as Fe}from"./echarts.js";function Ie(e){return e.replaceAll(`\\`,`/`).replace(/^\.\//,``).replace(/^\//,``).split(/[?#]/,1)[0]??``}function Le(e,t){let n=Ie(t);if(!t.startsWith(`.`))return n;let r=[...Ie(e).split(`/`).slice(0,-1),...n.split(`/`)],i=[];for(let e of r)if(e&&e!==`.`){if(e===`..`){i.pop();continue}i.push(e)}return i.join(`/`)}function Re(e,t,n){return{id:`chunk:${n.file}`,kind:`chunk`,label:n.file,packageId:e,packageLabel:t,size:n.size??0,isEntry:n.isEntry,moduleCount:n.modules?.length??0}}function ze(e){let t=[],n=new Map,r=new Map,i=[];for(let a of e.packages){let e=a.files.filter(e=>e.type===`chunk`),o={id:`package:${a.id}`,kind:`package`,label:a.label,packageId:a.id,packageLabel:a.label,size:a.files.reduce((e,t)=>e+(t.size??0),0),fileCount:a.files.length};t.push(o);for(let s of e){let e=Re(a.id,a.label,s);t.push(e),i.push({file:s,node:e}),r.set(Ie(s.file),e.id);let c={id:`${o.id}->${e.id}:contains`,kind:`contains`,source:o.id,target:e.id};n.set(c.id,c)}}let a=0,o=0,s=0;for(let{file:e,node:t}of i){let i=[...(e.imports??[]).map(e=>({file:e,kind:`static-import`})),...(e.dynamicImports??[]).map(e=>({file:e,kind:`dynamic-import`}))];for(let c of i){let i=r.get(Le(e.file,c.file));if(!i){a+=1;continue}let l={id:`${t.id}->${i}:${c.kind}`,kind:c.kind,source:t.id,target:i};n.has(l.id)||(n.set(l.id,l),c.kind===`dynamic-import`?s+=1:o+=1)}}return{dynamicImportCount:s,edges:[...n.values()],nodes:t,staticImportCount:o,unresolvedImportCount:a}}function Be(e,t){let n=e.nodes.filter(e=>e.kind===`package`),r=e.nodes.filter(e=>e.kind===`chunk`),i=t.query.trim().toLowerCase(),a=r.filter(e=>t.packageId===`all`||e.packageId===t.packageId).filter(e=>!i||e.label.toLowerCase().includes(i)).sort((e,t)=>t.size-e.size),o=new Set(a.map(e=>e.id)),s=new Set;for(let t of e.edges){if(t.kind===`contains`)continue;let e=o.has(t.source),n=o.has(t.target);e&&!n?s.add(t.target):n&&!e&&s.add(t.source)}let c=r.filter(e=>s.has(e.id)).sort((e,t)=>t.size-e.size),l=[...new Map([...a,...c].map(e=>[e.id,e])).values()],u=new Set(n.map(e=>e.packageId)),d=[],f=new Set,p=t.maxNodes;for(let e of l){let t=u.has(e.packageId)&&!f.has(e.packageId),n=t?2:1;n>p||(d.push(e),t&&f.add(e.packageId),p-=n)}let m=[...n.filter(e=>f.has(e.packageId)),...d],h=new Set(m.map(e=>e.id)),g=new Set(l.map(e=>e.packageId)),_=new Set([...l.map(e=>e.id),...n.filter(e=>g.has(e.packageId)).map(e=>e.id)]),v=e.edges.filter(e=>_.has(e.source)&&_.has(e.target)),y=e.edges.filter(e=>h.has(e.source)&&h.has(e.target)).sort((e,t)=>Number(e.kind===`contains`)-Number(t.kind===`contains`)).slice(0,t.maxEdges);return{edges:y,nodes:m,truncatedEdgeCount:Math.max(0,v.length-y.length),truncatedNodeCount:Math.max(0,_.size-m.length)}}var Ve={action:`动作`,budget:`预算`,package:`包`,file:`文件`,increment:`增量`,module:`模块`},He={action:`warning`,budget:`warning`,package:`neutral`,file:`neutral`,module:`neutral`,increment:`info`},Ue=[{value:`all`,label:`全部`},{value:`action`,label:`动作`},{value:`budget`,label:`预算`},{value:`package`,label:`包`},{value:`file`,label:`文件`},{value:`module`,label:`模块`},{value:`increment`,label:`增量`}];function We(e,t){let r=v(),i=v(``),a=v(0),o=v(`all`),s=D(()=>{let t=i.value.trim().toLowerCase();return e.items.filter(e=>o.value!==`all`&&e.kind!==o.value?!1:!t||`${e.title} ${e.meta} ${e.value??``} ${e.key} ${e.keywords}`.toLowerCase().includes(t)).slice(0,40)}),c=D(()=>s.value[a.value]??null),l=D(()=>{let t=o.value===`all`?`全部类型`:Ve[o.value];return`匹配 ${s.value.length} / ${e.items.length} 项 · ${t}`});n(()=>e.open,async e=>{if(!e){i.value=``,o.value=`all`,a.value=0;return}await p(),r.value?.focus()}),n(s,()=>{a.value=0});function u(e){return Ve[e]}function d(e){return xe({tone:He[e]})}function f(e){t(`select`,e),t(`close`)}function m(e){if(e.key===`Escape`){e.preventDefault(),t(`close`);return}if(e.key===`ArrowDown`){e.preventDefault(),a.value=Math.min(a.value+1,Math.max(s.value.length-1,0));return}if(e.key===`ArrowUp`){e.preventDefault(),a.value=Math.max(a.value-1,0);return}if(e.key===`Enter`){e.preventDefault();let t=s.value[a.value];t&&f(t)}}return{activeIndex:a,filteredItems:s,getKindLabel:u,getKindTone:d,handleKeydown:m,kindFilter:o,kindOptions:Ue,query:i,resultSummary:l,searchInputRef:r,selectedItem:c,selectItem:f}}var Ge=r({__name:`AnalyzeCommandPalette`,props:{open:{type:Boolean},items:{}},emits:[`close`,`select`],setup(e,{expose:t,emit:n}){t();let r=e,i=n,{activeIndex:a,filteredItems:o,getKindLabel:s,getKindTone:c,handleKeydown:l,kindFilter:u,kindOptions:d,query:f,resultSummary:p,searchInputRef:m,selectedItem:h,selectItem:g}=We(r,i),_={props:r,emit:i,activeIndex:a,filteredItems:o,getKindLabel:s,getKindTone:c,handleKeydown:l,kindFilter:u,kindOptions:d,query:f,resultSummary:p,searchInputRef:m,selectedItem:h,selectItem:g,AppEmptyState:U,AppSelect:B,DashboardIcon:L};return Object.defineProperty(_,"__isScriptSetup",{enumerable:!1,value:!0}),_}}),Ke={class:`mx-auto grid h-[min(44rem,82vh)] w-full max-w-5xl grid-rows-[auto_minmax(0,1fr)] overflow-hidden rounded-lg border border-(--dashboard-border-strong) bg-(--dashboard-panel-strong) shadow-2xl`},qe={class:`grid gap-3 border-b border-(--dashboard-border) px-4 py-3`},Je={class:`flex items-center gap-3`},Ye={class:`h-5 w-5 shrink-0 text-(--dashboard-accent)`},Xe={class:`flex flex-wrap items-center justify-between gap-2`},Ze={class:`text-xs text-(--dashboard-text-soft)`},Qe={class:`grid min-h-0 gap-2 overflow-hidden p-2 lg:grid-cols-[minmax(0,1fr)_minmax(16rem,0.52fr)]`},$e={key:1,class:`grid max-h-full min-h-0 gap-1 overflow-y-auto pr-1`},et=[`onMouseenter`,`onClick`],tt={class:`flex items-start justify-between gap-3`},nt={class:`min-w-0`},rt={class:`flex min-w-0 items-center gap-2`},it={class:`truncate font-medium text-(--dashboard-text)`},at={class:`mt-1 truncate text-xs text-(--dashboard-text-soft)`},ot={key:0,class:`max-w-36 shrink-0 truncate text-sm font-medium text-(--dashboard-accent)`},st={class:`grid min-h-0 grid-rows-[auto_minmax(0,1fr)] gap-3 overflow-hidden rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-4`},ct={class:`flex items-start justify-between gap-3`},lt={key:1,class:`grid min-h-0 content-start gap-3 overflow-y-auto`},ut={class:`font-medium`},dt={class:`mt-1 text-sm leading-6 text-(--dashboard-text-muted)`},ft={class:`grid gap-2 text-sm`},pt={class:`flex items-center justify-between gap-3 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel) px-3 py-2`},mt={key:0,class:`flex items-center justify-between gap-3 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel) px-3 py-2`},ht={class:`text-(--dashboard-accent)`};function gt(e,t,n,r,i,a){return O(),x(A,{to:`body`},[P(te,{"enter-active-class":`transition duration-150 ease-out`,"enter-from-class":`opacity-0`,"enter-to-class":`opacity-100`,"leave-active-class":`transition duration-100 ease-in`,"leave-from-class":`opacity-100`,"leave-to-class":`opacity-0`},{default:_(()=>[n.open?(O(),F(`div`,{key:0,class:`fixed inset-0 z-[70] grid place-items-start bg-slate-950/45 px-3 py-12 backdrop-blur-sm md:px-6 md:py-[9vh]`,onClick:t[4]||=T(e=>r.emit(`close`),[`self`])},[E(`section`,Ke,[E(`div`,qe,[E(`div`,Je,[E(`span`,Ye,[P(r.DashboardIcon,{name:`metric-search`})]),s(E(`input`,{ref:`searchInputRef`,"onUpdate:modelValue":t[0]||=e=>r.query=e,class:`min-w-0 flex-1 bg-transparent text-base outline-none placeholder:text-(--dashboard-text-soft)`,placeholder:`搜索包、文件、模块、预算`,onKeydown:t[1]||=(...e)=>r.handleKeydown&&r.handleKeydown(...e)},null,544),[[M,r.query]])]),E(`div`,Xe,[E(`p`,Ze,b(r.resultSummary),1),P(r.AppSelect,{modelValue:r.kindFilter,"onUpdate:modelValue":t[2]||=e=>r.kindFilter=e,class:`w-40`,label:`筛选搜索结果类型`,options:r.kindOptions,size:`sm`},null,8,[`modelValue`,`options`])])]),E(`div`,Qe,[r.filteredItems.length===0?(O(),x(r.AppEmptyState,{key:0,compact:``},{default:_(()=>[...t[5]||=[C(` 没有匹配结果。 `,-1)]]),_:1})):(O(),F(`ul`,$e,[(O(!0),F(j,null,f(r.filteredItems,(e,t)=>(O(),F(`li`,{key:e.key,class:`list-none`},[E(`button`,{type:`button`,class:l([`w-full rounded-md border px-3 py-2.5 text-left transition`,t===r.activeIndex?`border-(--dashboard-accent) bg-(--dashboard-accent-soft)`:`border-transparent hover:border-(--dashboard-border) hover:bg-(--dashboard-panel-muted)`]),onMouseenter:e=>r.activeIndex=t,onClick:t=>r.selectItem(e)},[E(`div`,tt,[E(`div`,nt,[E(`div`,rt,[E(`span`,{class:l(r.getKindTone(e.kind))},b(r.getKindLabel(e.kind)),3),E(`p`,it,b(e.title),1)]),E(`p`,at,b(e.meta),1)]),e.value?(O(),F(`span`,ot,b(e.value),1)):N(``,!0)])],42,et)]))),128))])),E(`aside`,st,[E(`div`,ct,[t[6]||=E(`div`,null,[E(`p`,{class:`text-[11px] uppercase tracking-[0.2em] text-(--dashboard-accent)`},` Preview `),E(`h3`,{class:`mt-1 text-base font-semibold`},` 当前命令 `)],-1),r.selectedItem?(O(),F(`span`,{key:0,class:l(r.getKindTone(r.selectedItem.kind))},b(r.getKindLabel(r.selectedItem.kind)),3)):N(``,!0)]),r.selectedItem?(O(),F(`div`,lt,[E(`div`,null,[E(`h4`,ut,b(r.selectedItem.title),1),E(`p`,dt,b(r.selectedItem.meta),1)]),E(`div`,ft,[E(`div`,pt,[t[8]||=E(`span`,{class:`text-xs uppercase tracking-[0.16em] text-(--dashboard-text-soft)`},`Tab`,-1),E(`strong`,null,b(r.selectedItem.tab),1)]),r.selectedItem.value?(O(),F(`div`,mt,[t[9]||=E(`span`,{class:`text-xs uppercase tracking-[0.16em] text-(--dashboard-text-soft)`},`Value`,-1),E(`strong`,ht,b(r.selectedItem.value),1)])):N(``,!0)]),E(`button`,{type:`button`,class:`inline-flex h-9 items-center justify-center rounded-md border border-(--dashboard-border) bg-(--dashboard-panel) px-3 text-sm font-medium text-(--dashboard-text) transition hover:border-(--dashboard-border-strong) hover:text-(--dashboard-accent) focus:border-(--dashboard-border-strong) focus:outline-none`,onClick:t[3]||=e=>r.selectItem(r.selectedItem)},` 跳转到结果 `)])):(O(),x(r.AppEmptyState,{key:0,compact:``},{default:_(()=>[...t[7]||=[C(` 选择左侧结果后查看目标和跳转位置。 `,-1)]]),_:1}))])])])])):N(``,!0)]),_:1})])}var _t=I(Ge,[[`render`,gt]]),vt=r({__name:`AnalyzeEmptyPayloadPanel`,setup(e,{expose:t}){t();let n={get RouterLink(){return ne},AppSurfaceCard:be};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}}),yt={class:`grid gap-3 xl:grid-cols-[minmax(0,1fr)_minmax(18rem,0.92fr)]`},bt={class:`rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-4`},xt={class:`mt-4 grid gap-2`},St={class:`grid gap-2`};function Ct(e,t,n,r,i,a){return O(),x(r.AppSurfaceCard,{eyebrow:`Analyze`,title:`等待分析数据注入`,"icon-name":`hero-commands`,tone:`strong`,padding:`header`},{default:_(()=>[E(`div`,yt,[E(`div`,bt,[t[0]||=E(`p`,{class:`text-[11px] uppercase tracking-[0.24em] text-(--dashboard-text-soft)`},` recommended commands `,-1),E(`div`,xt,[(O(),F(j,null,f([`weapp-vite analyze`,`weapp-vite build --ui`,`weapp-vite dev --ui`],e=>E(`code`,{key:e,class:`rounded-md bg-slate-950 px-3 py-3 text-xs text-slate-100 dark:bg-slate-900`},b(e),1)),64))])]),E(`div`,St,[P(r.RouterLink,{class:`rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-4 py-4 transition hover:border-(--dashboard-border-strong) hover:bg-(--dashboard-panel)`,to:`/`},{default:_(()=>[...t[1]||=[E(`p`,{class:`font-medium`},` 返回工作台 `,-1),E(`p`,{class:`mt-1 text-sm leading-6 text-(--dashboard-text-muted)`},` 查看当前状态和命令。 `,-1)]]),_:1}),P(r.RouterLink,{class:`rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-4 py-4 transition hover:border-(--dashboard-border-strong) hover:bg-(--dashboard-panel)`,to:`/activity`},{default:_(()=>[...t[2]||=[E(`p`,{class:`font-medium`},` 查看活动流 `,-1),E(`p`,{class:`mt-1 text-sm leading-6 text-(--dashboard-text-muted)`},` 观察命令、构建、HMR 和诊断事件。 `,-1)]]),_:1})])])]),_:1})}var wt=I(vt,[[`render`,Ct]]),Tt=r({__name:`AnalyzeDraggableGrid`,props:{items:{},storageKey:{},gridClass:{}},setup(e,{expose:r}){r();let i=e,a=o([]),s=o(null),c=D(()=>new Map(i.items.map(e=>[e.id,e]))),l=D(()=>{let e=new Set(i.items.map(e=>e.id)),t=a.value.filter(t=>e.has(t)).map(e=>c.value.get(e)).filter(e=>!!e),n=i.items.filter(e=>!a.value.includes(e.id));return[...t,...n]});function u(){try{let e=window.localStorage.getItem(i.storageKey),t=e?JSON.parse(e):null;a.value=Array.isArray(t)?t.filter(e=>typeof e==`string`):i.items.map(e=>e.id)}catch{a.value=i.items.map(e=>e.id)}}function d(e){a.value=e,window.localStorage.setItem(i.storageKey,JSON.stringify(e))}function f(e,t){s.value=e.id,t.dataTransfer?.setData(`text/plain`,e.id),t.dataTransfer&&(t.dataTransfer.effectAllowed=`move`)}function p(e){let t=s.value;if(s.value=null,!t||t===e.id)return;let n=l.value.map(e=>e.id),r=n.indexOf(t),i=n.indexOf(e.id);r<0||i<0||(n.splice(r,1),n.splice(i,0,t),d(n))}function m(){d(i.items.map(e=>e.id))}t(u),n(()=>i.items.map(e=>e.id).join(`\0`),u);let h={props:i,order:a,draggingId:s,itemMap:c,orderedItems:l,readOrder:u,writeOrder:d,handleDragStart:f,handleDrop:p,resetOrder:m,DashboardIcon:L};return Object.defineProperty(h,"__isScriptSetup",{enumerable:!1,value:!0}),h}}),Et=[`onDrop`],Dt={class:`absolute inset-x-0 top-0 z-10 flex -translate-y-1/2 items-center justify-center gap-2 px-2`},Ot=[`aria-label`,`title`,`onDragstart`],kt={class:`h-4 w-4`,"aria-hidden":`true`},At={class:`h-4 w-4`,"aria-hidden":`true`},jt={class:`min-h-0 min-w-0 max-w-full`};function Mt(e,t,n,r,i,a){return O(),F(`section`,{class:l(n.gridClass)},[(O(!0),F(j,null,f(r.orderedItems,n=>(O(),F(`article`,{key:n.id,class:l([`relative grid min-h-0 min-w-0 max-w-full rounded-lg border border-dashed border-transparent pt-2 transition`,[n.className,r.draggingId===n.id?`border-(--dashboard-accent) opacity-70`:``]]),onDragover:t[1]||=T(()=>{},[`prevent`]),onDrop:e=>r.handleDrop(n)},[E(`div`,Dt,[E(`button`,{class:`inline-flex h-7 w-7 shrink-0 cursor-grab items-center justify-center rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-strong) text-(--dashboard-text-soft) shadow-(--dashboard-shadow) transition hover:border-(--dashboard-border-strong) hover:text-(--dashboard-text)`,draggable:`true`,type:`button`,"aria-label":`拖动调整${n.label}模块位置`,title:`拖动调整${n.label}模块位置`,onDragend:t[0]||=e=>r.draggingId=null,onDragstart:e=>r.handleDragStart(n,e)},[E(`span`,kt,[P(r.DashboardIcon,{name:`metric-drag`})])],40,Ot),r.orderedItems.length>1&&n.id===r.orderedItems[0]?.id?(O(),F(`button`,{key:0,class:`absolute right-2 inline-flex h-7 w-7 shrink-0 items-center justify-center rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-strong) text-(--dashboard-text-soft) shadow-(--dashboard-shadow) transition hover:border-(--dashboard-border-strong) hover:text-(--dashboard-text)`,type:`button`,"aria-label":`重置模块布局`,title:`重置模块布局`,onClick:r.resetOrder},[E(`span`,At,[P(r.DashboardIcon,{name:`metric-reset`})])])):N(``,!0)]),E(`div`,jt,[m(e.$slots,n.id,{item:n})])],42,Et))),128))],2)}var Nt=I(Tt,[[`render`,Mt]]);function Pt(e){return typeof e!=`number`||Number.isNaN(e)||e===0?``:`${e>0?`+`:`-`}${R(Math.abs(e))}`}function Ft(e){let t=Pt(e.sizeDeltaBytes);return{title:e.file,meta:`${e.packageLabel} · ${z(e.packageType)} · ${e.type}${t?` · ${t}`:``}`,value:`${R(e.size)} / ${R(e.compressedSize)}`}}function It(e){return e.kind===`package`?{title:e.packageLabel,meta:`${z(e.packageType)} · ${e.fileCount} 个产物`,value:R(e.totalBytes)}:e.kind===`file`?{title:e.fileName,meta:`${e.packageLabel} · ${e.type} · ${e.childCount} 项`,value:R(e.bytes)}:e.kind===`module`?{title:e.source,meta:`${e.packageLabel} · ${e.packageCount} 个包复用`,value:R(e.bytes??e.originalBytes)}:{title:e.source,meta:`${e.packageLabel} · ${e.fileName}`,value:R(e.bytes)}}function Lt(e){return e.replaceAll(`|`,`\\|`).replaceAll(`
3
- `,` `)}function Rt(e){return[`# dashboard 文件详情`,``,`文件数量:${e.files.length} / ${e.totalCount}`,``,`| 文件 | 包 | 类型 | 总体积 | 压缩后 | 较上次 | 模块 | 来源 |`,`| --- | --- | --- | ---: | ---: | ---: | ---: | --- |`,...e.files.map(e=>[e.file,e.packageLabel,e.type,R(e.size),R(e.compressedSize),Pt(e.sizeDeltaBytes)||`-`,String(e.moduleCount),e.source??`-`].map(Lt).join(` | `)).map(e=>`| ${e} |`),``].join(`
4
- `)}var zt=r({__name:`AppCompactListItem`,props:{title:{},meta:{},value:{},monoTitle:{type:Boolean},clickable:{type:Boolean},active:{type:Boolean}},emits:[`select`],setup(e,{expose:t,emit:n}){t();let r={emit:n};return Object.defineProperty(r,"__isScriptSetup",{enumerable:!1,value:!0}),r}}),Bt={class:`flex items-start justify-between gap-3`},Vt={class:`min-w-0`},Ht={class:`mt-1 line-clamp-2 break-words text-xs leading-5 text-(--dashboard-text-soft)`},Ut={key:0,class:`max-w-[40%] shrink-0 truncate font-medium text-(--dashboard-accent)`},Wt={key:1,class:`list-none`},Gt={class:`flex items-start justify-between gap-3`},Kt={class:`min-w-0`},qt={class:`mt-1 line-clamp-2 break-words text-xs leading-5 text-(--dashboard-text-soft)`},Jt={key:0,class:`max-w-[40%] shrink-0 truncate font-medium text-(--dashboard-accent)`};function Yt(e,t,n,r,i,a){return n.clickable?(O(),F(`li`,Wt,[E(`button`,{type:`button`,class:l([`w-full rounded-xl border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 py-2.5 text-left transition hover:border-(--dashboard-border-strong) hover:bg-(--dashboard-panel)`,n.active?`border-(--dashboard-accent) bg-(--dashboard-accent-soft)`:void 0]),onClick:t[0]||=e=>r.emit(`select`)},[E(`div`,Gt,[E(`div`,Kt,[E(`p`,{class:l([`font-medium`,n.monoTitle?`line-clamp-2 break-all font-mono text-xs leading-5 text-(--dashboard-text)`:`line-clamp-2 break-words leading-5 text-(--dashboard-text)`])},b(n.title),3),E(`p`,qt,b(n.meta),1)]),n.value?(O(),F(`span`,Jt,b(n.value),1)):N(``,!0)])],2)])):(O(),F(`li`,{key:0,class:l([`rounded-xl border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 py-2.5`,n.active?`border-(--dashboard-accent) bg-(--dashboard-accent-soft)`:void 0])},[E(`div`,Bt,[E(`div`,Vt,[E(`p`,{class:l([`font-medium`,n.monoTitle?`line-clamp-2 break-all font-mono text-xs leading-5 text-(--dashboard-text)`:`line-clamp-2 break-words leading-5 text-(--dashboard-text)`])},b(n.title),3),E(`p`,Ht,b(n.meta),1)]),n.value?(O(),F(`span`,Ut,b(n.value),1)):N(``,!0)])],2))}var Xt=I(zt,[[`render`,Yt]]),Zt=r({__name:`AnalyzeFileExplorerPanel`,props:{largestFiles:{},activeLargestFileKey:{},selectedTreemapMeta:{}},emits:[`selectFile`],setup(e,{expose:t,emit:n}){t();let r=e,i=n,a=v(``),o=v(`all`),s=v(`size`),c=v(``),l=null,u=D(()=>{let e=new Set;for(let t of r.largestFiles)e.add(t.type);return[...e].sort((e,t)=>e.localeCompare(t))}),d=D(()=>[{label:`全部类型`,value:`all`},...u.value.map(e=>({label:e,value:e}))]),f=[{label:`按体积`,value:`size`},{label:`按压缩后`,value:`compressed`},{label:`按增量`,value:`delta`},{label:`按模块数`,value:`modules`},{label:`按名称`,value:`name`}],p=D(()=>{let e=a.value.trim().toLowerCase();return r.largestFiles.filter(t=>o.value!==`all`&&t.type!==o.value?!1:!e||[t.file,t.packageId,t.packageLabel,t.packageType,t.type,t.source].some(t=>t?.toLowerCase().includes(e))).sort((e,t)=>s.value===`compressed`?t.compressedSize-e.compressedSize||e.file.localeCompare(t.file):s.value===`delta`?(t.sizeDeltaBytes??-1/0)-(e.sizeDeltaBytes??-1/0)||e.file.localeCompare(t.file):s.value===`modules`?t.moduleCount-e.moduleCount||t.size-e.size||e.file.localeCompare(t.file):s.value===`name`?e.file.localeCompare(t.file):t.size-e.size||e.file.localeCompare(t.file)).map(e=>({key:`${e.packageId}:${e.file}`,file:e,active:r.activeLargestFileKey===`${e.packageId}:${e.file}`||r.selectedTreemapMeta?.kind!==`package`&&r.selectedTreemapMeta?.packageLabel===e.packageLabel&&r.selectedTreemapMeta?.fileName===e.file,...Ft(e)}))}),m=D(()=>r.selectedTreemapMeta?It(r.selectedTreemapMeta):null),h=D(()=>Rt({files:p.value.map(e=>e.file),totalCount:r.largestFiles.length}));function g(e){c.value=e,l&&clearTimeout(l),l=setTimeout(()=>{c.value=``,l=null},1800)}async function _(){try{await V(h.value),g(`已复制`)}catch{g(`复制失败`)}}function y(){let e=new Blob([`${JSON.stringify(p.value.map(e=>e.file),null,2)}\n`],{type:`application/json`}),t=URL.createObjectURL(e),n=document.createElement(`a`);n.href=t,n.download=`weapp-vite-dashboard-files.json`,n.click(),URL.revokeObjectURL(t),g(`已导出`)}k(()=>{l&&clearTimeout(l)});let b={props:r,emit:i,fileQuery:a,fileTypeFilter:o,fileSortMode:s,actionStatus:c,get actionStatusTimer(){return l},set actionStatusTimer(e){l=e},fileTypeOptions:u,fileTypeFilterOptions:d,fileSortOptions:f,largestFileItems:p,selectedItem:m,fileReportText:h,setActionStatus:g,copyFileReport:_,exportFileJson:y,AppCompactListItem:Xt,AppEmptyState:U,AppSelect:B};return Object.defineProperty(b,"__isScriptSetup",{enumerable:!1,value:!0}),b}}),Qt={class:`grid h-full min-h-0 grid-rows-[auto_auto_minmax(0,1fr)] overflow-hidden rounded-lg border border-(--dashboard-border) bg-(--dashboard-panel) p-3 shadow-(--dashboard-shadow)`},$t={class:`mb-2 flex items-center justify-between gap-3`},en={class:`mt-1 text-xs text-(--dashboard-text-soft)`},tn={class:`mb-3 grid gap-2`},nn={class:`flex flex-wrap items-center gap-2`},rn={key:0,class:`text-xs font-medium text-(--dashboard-accent)`},an=[`disabled`],on=[`disabled`],sn={class:`grid grid-cols-2 gap-2`},cn={class:`min-h-0 overflow-y-auto pr-1`},ln={class:`grid gap-2 text-sm`};function un(e,t,n,r,a,o){return O(),F(`section`,Qt,[E(`div`,$t,[E(`div`,null,[t[3]||=E(`h3`,{class:`text-sm font-semibold text-(--dashboard-text)`},` Top Files `,-1),E(`p`,en,` 匹配 `+b(r.largestFileItems.length)+` / `+b(n.largestFiles.length)+` 个文件 `,1)]),t[4]||=E(`span`,{class:`text-[11px] uppercase tracking-[0.16em] text-(--dashboard-text-soft)`},`size`,-1)]),E(`div`,tn,[E(`div`,nn,[r.actionStatus?(O(),F(`span`,rn,b(r.actionStatus),1)):N(``,!0),E(`button`,{type:`button`,class:`h-9 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 text-sm text-(--dashboard-text-soft) transition hover:border-(--dashboard-border-strong) hover:text-(--dashboard-accent) focus:border-(--dashboard-border-strong) focus:outline-none disabled:opacity-50`,disabled:r.largestFileItems.length===0,onClick:r.copyFileReport},` 复制文件 `,8,an),E(`button`,{type:`button`,class:`h-9 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 text-sm text-(--dashboard-text-soft) transition hover:border-(--dashboard-border-strong) hover:text-(--dashboard-accent) focus:border-(--dashboard-border-strong) focus:outline-none disabled:opacity-50`,disabled:r.largestFileItems.length===0,onClick:r.exportFileJson},` 导出 JSON `,8,on)]),s(E(`input`,{"onUpdate:modelValue":t[0]||=e=>r.fileQuery=e,class:`h-9 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 text-sm text-(--dashboard-text) outline-none transition placeholder:text-(--dashboard-text-soft) focus:border-(--dashboard-accent)`,placeholder:`搜索文件、包或来源`,type:`search`},null,512),[[M,r.fileQuery]]),E(`div`,sn,[P(r.AppSelect,{modelValue:r.fileTypeFilter,"onUpdate:modelValue":t[1]||=e=>r.fileTypeFilter=e,label:`筛选文件类型`,options:r.fileTypeFilterOptions},null,8,[`modelValue`,`options`]),P(r.AppSelect,{modelValue:r.fileSortMode,"onUpdate:modelValue":t[2]||=e=>r.fileSortMode=e,label:`排序文件`,options:r.fileSortOptions},null,8,[`modelValue`])])]),E(`div`,cn,[r.selectedItem?(O(),x(r.AppCompactListItem,i({key:0,class:`mb-2`},r.selectedItem),null,16)):N(``,!0),E(`ol`,ln,[r.largestFileItems.length===0?(O(),x(r.AppEmptyState,{key:0,as:`li`,compact:``},{default:_(()=>[...t[5]||=[C(` 没有匹配当前筛选条件的文件。 `,-1)]]),_:1})):N(``,!0),(O(!0),F(j,null,f(r.largestFileItems,e=>(O(),x(r.AppCompactListItem,{key:e.key,active:e.active,clickable:``,meta:e.meta,title:e.title,value:e.value,onSelect:t=>r.emit(`selectFile`,e.file)},null,8,[`active`,`meta`,`title`,`value`,`onSelect`]))),128))])])])}var dn=I(Zt,[[`render`,un]]),fn=r({__name:`AnalyzeFileModulesPanel`,props:{selectedFileModules:{}},setup(e,{expose:t}){t();let n=e,r=v(``),i=v(`all`),a=v(`saving`),o=v(``),s=null;function c(e){return e.replaceAll(`|`,`\\|`).replaceAll(`
5
- `,` `)}let l=D(()=>{let e=new Set;for(let t of n.selectedFileModules)e.add(t.sourceType);return[...e].sort((e,t)=>e.localeCompare(t))}),u=D(()=>[{label:`全部来源`,value:`all`},...l.value.map(e=>({label:e,value:e}))]),d=[{label:`按可节省`,value:`saving`},{label:`按体积`,value:`size`},{label:`按复用包`,value:`duplicates`},{label:`按路径`,value:`source`}],f=D(()=>{let e=r.value.trim().toLowerCase();return n.selectedFileModules.filter(t=>i.value!==`all`&&t.sourceType!==i.value?!1:!e||[t.key,t.source,t.sourceType,t.duplicatePackageCount,t.bytes].some(t=>String(t).toLowerCase().includes(e))).sort((e,t)=>a.value===`size`?t.bytes-e.bytes||t.estimatedSavingBytes-e.estimatedSavingBytes||e.source.localeCompare(t.source):a.value===`duplicates`?t.duplicatePackageCount-e.duplicatePackageCount||t.estimatedSavingBytes-e.estimatedSavingBytes||e.source.localeCompare(t.source):a.value===`source`?e.source.localeCompare(t.source):t.estimatedSavingBytes-e.estimatedSavingBytes||t.bytes-e.bytes||e.source.localeCompare(t.source))}),p=D(()=>f.value.map(e=>({key:e.key,title:e.source,meta:`${e.sourceType} · ${e.duplicatePackageCount>1?`${e.duplicatePackageCount} 个包复用`:`单包模块`} · 可节省 ${R(e.estimatedSavingBytes)}`,value:e.originalBytes&&e.originalBytes!==e.bytes?`${R(e.bytes)} / ${R(e.originalBytes)}`:R(e.bytes)}))),m=D(()=>[`# dashboard 文件模块明细`,``,`模块数量:${f.value.length} / ${n.selectedFileModules.length}`,``,`| 模块 | 来源 | 体积 | 原始体积 | 复用包 | 可节省 |`,`| --- | --- | ---: | ---: | ---: | ---: |`,...f.value.map(e=>[e.source,e.sourceType,R(e.bytes),e.originalBytes?R(e.originalBytes):`-`,String(e.duplicatePackageCount),R(e.estimatedSavingBytes)].map(c).join(` | `)).map(e=>`| ${e} |`),``].join(`
6
- `));function h(e){o.value=e,s&&clearTimeout(s),s=setTimeout(()=>{o.value=``,s=null},1800)}async function g(){try{await V(m.value),h(`已复制`)}catch{h(`复制失败`)}}function _(){let e=new Blob([`${JSON.stringify(f.value,null,2)}\n`],{type:`application/json`}),t=URL.createObjectURL(e),n=document.createElement(`a`);n.href=t,n.download=`weapp-vite-dashboard-file-modules.json`,n.click(),URL.revokeObjectURL(t),h(`已导出`)}k(()=>{s&&clearTimeout(s)});let y={props:n,moduleQuery:r,moduleSourceFilter:i,moduleSortMode:a,actionStatus:o,get actionStatusTimer(){return s},set actionStatusTimer(e){s=e},escapeMarkdownCell:c,moduleSourceOptions:l,moduleSourceFilterOptions:u,moduleSortOptions:d,filteredSelectedFileModules:f,selectedFileModuleItems:p,moduleReportText:m,setActionStatus:h,copyModuleReport:g,exportModuleJson:_,AppCompactListItem:Xt,AppEmptyState:U,AppSelect:B};return Object.defineProperty(y,"__isScriptSetup",{enumerable:!1,value:!0}),y}}),pn={class:`grid h-full min-h-0 grid-rows-[auto_auto_minmax(0,1fr)] overflow-hidden rounded-lg border border-(--dashboard-border) bg-(--dashboard-panel) p-3 shadow-(--dashboard-shadow)`},mn={class:`mb-2 flex items-center justify-between gap-3`},hn={class:`mt-1 text-xs text-(--dashboard-text-soft)`},gn={class:`mb-3 grid gap-2`},_n={class:`flex flex-wrap items-center gap-2`},vn={key:0,class:`text-xs font-medium text-(--dashboard-accent)`},yn=[`disabled`],bn=[`disabled`],xn={class:`grid grid-cols-2 gap-2`},Sn={class:`grid min-h-0 gap-2 overflow-y-auto pr-1 text-sm text-(--dashboard-text-muted)`};function Cn(e,t,n,r,i,a){return O(),F(`section`,pn,[E(`div`,mn,[E(`div`,null,[t[3]||=E(`h3`,{class:`text-sm font-semibold text-(--dashboard-text)`},` 文件详情 `,-1),E(`p`,hn,` 匹配 `+b(r.selectedFileModuleItems.length)+` / `+b(n.selectedFileModules.length)+` 个模块 `,1)]),t[4]||=E(`span`,{class:`text-[11px] uppercase tracking-[0.16em] text-(--dashboard-text-soft)`},`modules`,-1)]),E(`div`,gn,[E(`div`,_n,[r.actionStatus?(O(),F(`span`,vn,b(r.actionStatus),1)):N(``,!0),E(`button`,{type:`button`,class:`h-9 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 text-sm text-(--dashboard-text-soft) transition hover:border-(--dashboard-border-strong) hover:text-(--dashboard-accent) focus:border-(--dashboard-border-strong) focus:outline-none disabled:opacity-50`,disabled:r.selectedFileModuleItems.length===0,onClick:r.copyModuleReport},` 复制模块 `,8,yn),E(`button`,{type:`button`,class:`h-9 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 text-sm text-(--dashboard-text-soft) transition hover:border-(--dashboard-border-strong) hover:text-(--dashboard-accent) focus:border-(--dashboard-border-strong) focus:outline-none disabled:opacity-50`,disabled:r.selectedFileModuleItems.length===0,onClick:r.exportModuleJson},` 导出 JSON `,8,bn)]),s(E(`input`,{"onUpdate:modelValue":t[0]||=e=>r.moduleQuery=e,class:`h-9 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 text-sm text-(--dashboard-text) outline-none transition placeholder:text-(--dashboard-text-soft) focus:border-(--dashboard-accent)`,placeholder:`搜索模块路径或来源`,type:`search`},null,512),[[M,r.moduleQuery]]),E(`div`,xn,[P(r.AppSelect,{modelValue:r.moduleSourceFilter,"onUpdate:modelValue":t[1]||=e=>r.moduleSourceFilter=e,label:`筛选模块来源`,options:r.moduleSourceFilterOptions},null,8,[`modelValue`,`options`]),P(r.AppSelect,{modelValue:r.moduleSortMode,"onUpdate:modelValue":t[2]||=e=>r.moduleSortMode=e,label:`排序文件模块`,options:r.moduleSortOptions},null,8,[`modelValue`])])]),E(`ul`,Sn,[r.selectedFileModuleItems.length===0?(O(),x(r.AppEmptyState,{key:0,as:`li`,compact:``},{default:_(()=>[...t[5]||=[C(` 选择一个 chunk 文件或调整筛选条件查看模块明细。 `,-1)]]),_:1})):N(``,!0),(O(!0),F(j,null,f(r.selectedFileModuleItems,e=>(O(),x(r.AppCompactListItem,{key:e.key,meta:e.meta,"mono-title":``,title:e.title,value:e.value},null,8,[`meta`,`title`,`value`]))),128))])])}var wn=I(fn,[[`render`,Cn]]),G={totalBytes:20971520,mainBytes:2097152,subPackageBytes:2097152,independentBytes:2097152,warningRatio:.85,source:`default`},K=1048576,Tn=[{id:`wechat-default`,label:`平台上限`,detail:`按小程序常见包体限制和 85% 预警线评估。`,config:{totalBytes:20*K,mainBytes:2*K,subPackageBytes:2*K,independentBytes:2*K,warningRatio:.85}},{id:`release-buffer`,label:`发布缓冲`,detail:`保留更早预警空间,适合发版前巡检。`,config:{totalBytes:20*K,mainBytes:2*K,subPackageBytes:2*K,independentBytes:2*K,warningRatio:.75}},{id:`near-limit`,label:`临界排查`,detail:`只标记接近上限的包,适合聚焦最紧急项。`,config:{totalBytes:20*K,mainBytes:2*K,subPackageBytes:2*K,independentBytes:2*K,warningRatio:.95}}];function En(e,t){return Number.isFinite(e)&&e>0?Math.round(e):t}function Dn(e){return Number.isFinite(e)?Math.min(.99,Math.max(.01,e)):G.warningRatio}function On(e,t){return e===`main`?t.mainBytes:e===`subPackage`?t.subPackageBytes:e===`independent`?t.independentBytes:0}function kn(e){let t=e.limitBytes>0?e.currentBytes/e.limitBytes:0;if(!(t<e.warningRatio))return{id:e.id,label:e.label,scope:e.scope,currentBytes:e.currentBytes,limitBytes:e.limitBytes,ratio:t,status:t>=1?`critical`:`warning`}}function An(e){return{totalBytes:En(e?.totalBytes??G.totalBytes,G.totalBytes),mainBytes:En(e?.mainBytes??G.mainBytes,G.mainBytes),subPackageBytes:En(e?.subPackageBytes??G.subPackageBytes,G.subPackageBytes),independentBytes:En(e?.independentBytes??G.independentBytes,G.independentBytes),warningRatio:Dn(e?.warningRatio??G.warningRatio)}}function jn(e,t){return e.totalBytes===t.totalBytes&&e.mainBytes===t.mainBytes&&e.subPackageBytes===t.subPackageBytes&&e.independentBytes===t.independentBytes&&e.warningRatio===t.warningRatio}function Mn(e){let t=An(e);return Tn.find(e=>jn(An(e.config),t))}function Nn(e){let t=An(e.config),n=[],r=kn({id:`__total__`,label:`总包`,scope:`total`,currentBytes:e.totalBytes,limitBytes:t.totalBytes,warningRatio:t.warningRatio});r&&n.push(r);for(let r of e.packages){let e=On(r.type,t);if(!e)continue;let i=kn({id:r.id,label:r.label,scope:r.type,currentBytes:r.totalBytes,limitBytes:e,warningRatio:t.warningRatio});i&&n.push(i)}return n.sort((e,t)=>t.ratio-e.ratio||e.label.localeCompare(t.label))}function Pn(e){let t=An(e);return[`analyze: {`,` budgets: {`,` totalBytes: ${t.totalBytes},`,` mainBytes: ${t.mainBytes},`,` subPackageBytes: ${t.subPackageBytes},`,` independentBytes: ${t.independentBytes},`,` warningRatio: ${t.warningRatio},`,` },`,`},`].join(`
7
- `)}var Fn=r({__name:`BudgetSandboxPanel`,props:{activeBudgetWarningId:{},budgetConfig:{},currentWarnings:{},packageInsights:{},totalBytes:{}},emits:[`selectBudgetWarning`],setup(e,{expose:t,emit:r}){t();let i=e,a=r,o=g({totalMiB:0,mainMiB:0,subPackageMiB:0,independentMiB:0,warningPercent:85}),s=g({text:``,timer:null});function c(e){return Number((e/1024/1024).toFixed(2))}function l(e){return Math.max(1,Math.round((Number.isFinite(e)?e:0)*1024*1024))}function u(){return An(i.budgetConfig??G)}function d(){let e=u();o.totalMiB=c(e.totalBytes),o.mainMiB=c(e.mainBytes),o.subPackageMiB=c(e.subPackageBytes),o.independentMiB=c(e.independentBytes),o.warningPercent=Math.round(e.warningRatio*100)}let f=D(()=>An({totalBytes:l(o.totalMiB),mainBytes:l(o.mainMiB),subPackageBytes:l(o.subPackageMiB),independentBytes:l(o.independentMiB),warningRatio:o.warningPercent/100})),p=D(()=>Nn({totalBytes:i.totalBytes,packages:i.packageInsights,config:f.value})),m=D(()=>Mn(f.value)?.id??null),h=D(()=>new Set(i.currentWarnings.map(e=>e.id))),_=D(()=>new Set(p.value.map(e=>e.id))),v=D(()=>p.value.filter(e=>!h.value.has(e.id)).length),y=D(()=>i.currentWarnings.filter(e=>!_.value.has(e.id)).length),b=D(()=>Pn(f.value)),x=D(()=>p.value.slice(0,6).map(e=>({key:e.id,warning:e,active:i.activeBudgetWarningId===e.id,title:e.label,meta:`${e.status===`critical`?`超预算`:`接近预算`} · ${(e.ratio*100).toFixed(1)}%`,value:`${R(e.currentBytes)} / ${R(e.limitBytes)}`})));function S(e){s.text=e,s.timer&&clearTimeout(s.timer),s.timer=setTimeout(()=>{s.text=``,s.timer=null},1800)}function C(e){let t=Tn.find(t=>t.id===e);if(!t)return;let n=An(t.config);o.totalMiB=c(n.totalBytes),o.mainMiB=c(n.mainBytes),o.subPackageMiB=c(n.subPackageBytes),o.independentMiB=c(n.independentBytes),o.warningPercent=Math.round(n.warningRatio*100),S(`已应用 ${t.label}`)}async function w(){try{await V(b.value),S(`已复制`)}catch{S(`复制失败`)}}n(()=>i.budgetConfig,d,{immediate:!0}),k(()=>{s.timer&&clearTimeout(s.timer)});let T={props:i,emit:a,draft:o,actionStatus:s,bytesToMiB:c,mibToBytes:l,getInitialConfig:u,resetDraft:d,sandboxConfig:f,projectedWarnings:p,activePresetId:m,currentWarningIds:h,projectedWarningIds:_,newWarningCount:v,resolvedWarningCount:y,snippetText:b,projectedWarningItems:x,setActionStatus:S,applyPreset:C,copyBudgetSnippet:w,get budgetSandboxPresets(){return Tn},AppCompactListItem:Xt,AppEmptyState:U};return Object.defineProperty(T,"__isScriptSetup",{enumerable:!1,value:!0}),T}}),In={class:`grid min-h-0 min-w-0 gap-3 overflow-visible rounded-lg border border-(--dashboard-border) bg-(--dashboard-panel) p-3 shadow-(--dashboard-shadow) xl:h-full xl:grid-rows-[auto_minmax(0,1fr)] xl:overflow-hidden`},Ln={class:`mb-2 flex items-center justify-between gap-3`},Rn={class:`mt-1 text-xs text-(--dashboard-text-soft)`},zn={key:0,class:`text-xs font-medium text-(--dashboard-accent)`},Bn={class:`grid min-h-0 min-w-0 gap-3 overflow-visible xl:grid-rows-[auto_auto_auto_minmax(0,1fr)] xl:overflow-hidden`},Vn={class:`grid gap-2 sm:grid-cols-3`},Hn=[`onClick`],Un={class:`block truncate text-xs font-semibold`},Wn={class:`mt-1 line-clamp-2 block text-[11px] leading-4 opacity-80`},Gn={class:`grid gap-2 sm:grid-cols-2`},Kn={class:`grid gap-1 text-[11px] text-(--dashboard-text-soft)`},qn={class:`grid gap-1 text-[11px] text-(--dashboard-text-soft)`},Jn={class:`grid gap-1 text-[11px] text-(--dashboard-text-soft)`},Yn={class:`grid gap-1 text-[11px] text-(--dashboard-text-soft)`},Xn={class:`grid gap-2`},Zn={class:`grid gap-1 text-[11px] text-(--dashboard-text-soft)`},Qn={class:`max-h-80 min-h-0 overflow-y-auto pr-1 xl:max-h-none`},$n={key:1,class:`grid content-start gap-2 text-sm text-(--dashboard-text-muted)`};function er(e,t,n,r,i,a){return O(),F(`section`,In,[E(`div`,Ln,[E(`div`,null,[t[5]||=E(`h3`,{class:`text-sm font-semibold text-(--dashboard-text)`},` 预算沙盘 `,-1),E(`p`,Rn,` 预测 `+b(r.projectedWarnings.length)+` 个告警 · 新增 `+b(r.newWarningCount)+` · 解除 `+b(r.resolvedWarningCount),1)]),r.actionStatus.text?(O(),F(`span`,zn,b(r.actionStatus.text),1)):N(``,!0)]),E(`div`,Bn,[E(`div`,Vn,[(O(!0),F(j,null,f(r.budgetSandboxPresets,e=>(O(),F(`button`,{key:e.id,class:l([`rounded-md border px-2 py-2 text-left transition`,r.activePresetId===e.id?`border-(--dashboard-accent) bg-(--dashboard-accent-soft) text-(--dashboard-text)`:`border-(--dashboard-border) bg-(--dashboard-panel-muted) text-(--dashboard-text-soft) hover:border-(--dashboard-border-strong) hover:text-(--dashboard-text)`]),type:`button`,onClick:t=>r.applyPreset(e.id)},[E(`span`,Un,b(e.label),1),E(`span`,Wn,b(e.detail),1)],10,Hn))),128))]),E(`div`,Gn,[E(`label`,Kn,[t[6]||=C(` 总包 MB `,-1),s(E(`input`,{"onUpdate:modelValue":t[0]||=e=>r.draft.totalMiB=e,class:`h-8 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-2 text-sm text-(--dashboard-text) outline-none focus:border-(--dashboard-accent)`,min:`0.01`,step:`0.01`,type:`number`},null,512),[[M,r.draft.totalMiB,void 0,{number:!0}]])]),E(`label`,qn,[t[7]||=C(` 主包 MB `,-1),s(E(`input`,{"onUpdate:modelValue":t[1]||=e=>r.draft.mainMiB=e,class:`h-8 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-2 text-sm text-(--dashboard-text) outline-none focus:border-(--dashboard-accent)`,min:`0.01`,step:`0.01`,type:`number`},null,512),[[M,r.draft.mainMiB,void 0,{number:!0}]])]),E(`label`,Jn,[t[8]||=C(` 分包 MB `,-1),s(E(`input`,{"onUpdate:modelValue":t[2]||=e=>r.draft.subPackageMiB=e,class:`h-8 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-2 text-sm text-(--dashboard-text) outline-none focus:border-(--dashboard-accent)`,min:`0.01`,step:`0.01`,type:`number`},null,512),[[M,r.draft.subPackageMiB,void 0,{number:!0}]])]),E(`label`,Yn,[t[9]||=C(` 独立分包 MB `,-1),s(E(`input`,{"onUpdate:modelValue":t[3]||=e=>r.draft.independentMiB=e,class:`h-8 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-2 text-sm text-(--dashboard-text) outline-none focus:border-(--dashboard-accent)`,min:`0.01`,step:`0.01`,type:`number`},null,512),[[M,r.draft.independentMiB,void 0,{number:!0}]])])]),E(`div`,Xn,[E(`label`,Zn,[C(` 预警线 `+b(r.draft.warningPercent)+`% `,1),s(E(`input`,{"onUpdate:modelValue":t[4]||=e=>r.draft.warningPercent=e,class:`accent-(--dashboard-accent)`,max:`99`,min:`1`,step:`1`,type:`range`},null,512),[[M,r.draft.warningPercent,void 0,{number:!0}]])]),E(`div`,{class:`grid grid-cols-2 gap-2`},[E(`button`,{class:`h-8 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 text-xs text-(--dashboard-text-soft) transition hover:border-(--dashboard-border-strong) hover:text-(--dashboard-text)`,type:`button`,onClick:r.resetDraft},` 重置 `),E(`button`,{class:`h-8 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 text-xs text-(--dashboard-text-soft) transition hover:border-(--dashboard-border-strong) hover:text-(--dashboard-accent)`,type:`button`,onClick:r.copyBudgetSnippet},` 复制配置 `)])]),E(`div`,Qn,[r.projectedWarningItems.length===0?(O(),x(r.AppEmptyState,{key:0,compact:``},{default:_(()=>[...t[10]||=[C(` 当前沙盘预算下没有预计告警。 `,-1)]]),_:1})):(O(),F(`ul`,$n,[(O(!0),F(j,null,f(r.projectedWarningItems,e=>(O(),x(r.AppCompactListItem,{key:e.key,active:e.active,clickable:``,meta:e.meta,title:e.title,value:e.value,onSelect:t=>r.emit(`selectBudgetWarning`,e.warning)},null,8,[`active`,`meta`,`title`,`value`,`onSelect`]))),128))]))])])])}var tr=I(Fn,[[`render`,er]]),nr=r({__name:`AnalyzeDetailsPanel`,props:{largestFiles:{},selectedFileModules:{},budgetWarnings:{},budgetConfig:{},packageInsights:{},totalBytes:{},activeBudgetWarningId:{},activeLargestFileKey:{},selectedTreemapMeta:{}},emits:[`selectFile`,`selectBudgetWarning`],setup(e,{expose:t,emit:n}){t();let r={emit:n,detailLayoutItems:[{id:`top-files`,label:`Top Files`,className:`min-h-[26rem] xl:min-h-0`},{id:`file-modules`,label:`文件详情`,className:`min-h-[24rem] xl:min-h-0`},{id:`budget`,label:`预算沙盘`,className:`min-h-[24rem] xl:min-h-0`}],AnalyzeDraggableGrid:Nt,AnalyzeFileExplorerPanel:dn,AnalyzeFileModulesPanel:wn,BudgetSandboxPanel:tr};return Object.defineProperty(r,"__isScriptSetup",{enumerable:!1,value:!0}),r}});function rr(e,t,n,r,i,a){return O(),x(r.AnalyzeDraggableGrid,{"grid-class":`grid h-full min-h-0 gap-2 overflow-y-auto pr-1 xl:grid-cols-3 xl:overflow-hidden xl:pr-0`,items:r.detailLayoutItems,"storage-key":`weapp-vite:dashboard:analyze-layout:files`},{"top-files":_(()=>[P(r.AnalyzeFileExplorerPanel,{"largest-files":n.largestFiles,"active-largest-file-key":n.activeLargestFileKey,"selected-treemap-meta":n.selectedTreemapMeta,onSelectFile:t[0]||=e=>r.emit(`selectFile`,e)},null,8,[`largest-files`,`active-largest-file-key`,`selected-treemap-meta`])]),"file-modules":_(()=>[P(r.AnalyzeFileModulesPanel,{"selected-file-modules":n.selectedFileModules},null,8,[`selected-file-modules`])]),budget:_(()=>[P(r.BudgetSandboxPanel,{"active-budget-warning-id":n.activeBudgetWarningId,"budget-config":n.budgetConfig,"current-warnings":n.budgetWarnings,"package-insights":n.packageInsights,"total-bytes":n.totalBytes,onSelectBudgetWarning:t[1]||=e=>r.emit(`selectBudgetWarning`,e)},null,8,[`active-budget-warning-id`,`budget-config`,`current-warnings`,`package-insights`,`total-bytes`])]),_:1})}var ir=I(nr,[[`render`,rr]]),ar={critical:4,warning:3,info:2,success:1},or=[{label:`按优先级`,value:`priority`},{label:`按严重度`,value:`severity`},{label:`按标题`,value:`title`},{label:`按数值`,value:`value`}];function sr(e){return e===`budget`?`预算`:e===`increment`?`增量`:e===`duplicate`?`重复`:`文件`}function cr(e){return xe(e===`critical`?{tone:`error`}:e===`warning`?{tone:`warning`}:e===`success`?{tone:`success`}:{tone:`info`})}function lr(e){return e===`critical`?`必须处理`:e===`warning`?`建议处理`:e===`success`?`可查看`:`定位`}function ur(e,t){return[...e].sort((e,n)=>t===`severity`?ar[n.tone]-ar[e.tone]||n.priority-e.priority||e.title.localeCompare(n.title):t===`title`?e.title.localeCompare(n.title):t===`value`?n.priority-e.priority||String(e.value??``).localeCompare(String(n.value??``))||e.title.localeCompare(n.title):n.priority-e.priority||ar[n.tone]-ar[e.tone]||e.title.localeCompare(n.title))}function dr(e){let t=v(``),n=v(`all`),r=v(`all`),i=v(`priority`),a=D(()=>{let t=new Set;for(let n of e.actions)t.add(n.tone);return[...t].sort((e,t)=>ar[t]-ar[e])}),o=D(()=>{let t=new Set;for(let n of e.actions)t.add(n.kind);return[...t].sort((e,t)=>sr(e).localeCompare(sr(t)))}),s=D(()=>[{label:`全部严重度`,value:`all`},...a.value.map(e=>({label:lr(e),value:e}))]),c=D(()=>[{label:`全部类型`,value:`all`},...o.value.map(e=>({label:sr(e),value:e}))]),l=D(()=>{let a=t.value.trim().toLowerCase();return ur(e.actions.filter(e=>n.value!==`all`&&e.tone!==n.value||r.value!==`all`&&e.kind!==r.value?!1:!a||[e.key,e.kind,e.tone,e.title,e.meta,e.value,e.tab].some(e=>String(e??``).toLowerCase().includes(a))),i.value)});function u(t){return e.queuedActionKeys.includes(t.key)}return{actionKindFilter:r,actionSortOptions:or,actionQuery:t,actionSortMode:i,actionToneFilter:n,filteredActions:l,kindFilterOptions:c,getKindLabel:sr,getToneClassName:cr,getToneLabel:lr,isQueued:u,toneFilterOptions:s}}var fr=r({__name:`AppPanelHeader`,props:{iconName:{},title:{},description:{}},setup(e,{expose:t}){t();let n={iconClassName:Se(),DashboardIcon:L};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}}),pr={class:`flex items-center justify-between gap-3`},mr={class:`flex items-center gap-2`},hr={class:`h-5 w-5`},gr={class:`min-w-0 md:flex md:flex-wrap md:items-baseline md:gap-x-2`},_r={class:`text-lg font-semibold text-(--dashboard-text)`},vr={key:0,class:`text-xs text-(--dashboard-text-soft) md:text-sm`};function yr(e,t,n,r,i,a){return O(),F(`div`,pr,[E(`div`,mr,[E(`span`,{class:l(r.iconClassName)},[E(`span`,hr,[P(r.DashboardIcon,{name:n.iconName},null,8,[`name`])])],2),E(`div`,gr,[E(`h2`,_r,b(n.title),1),n.description?(O(),F(`p`,vr,b(n.description),1)):N(``,!0)])]),m(e.$slots,`meta`)])}var q=I(fr,[[`render`,yr]]),br=r({__name:`ActionCenterPanel`,props:{actions:{},activeKey:{},queuedActionKeys:{}},emits:[`addToQueue`,`copyReport`,`select`],setup(e,{expose:t,emit:n}){t();let r=e,i=n,{actionKindFilter:a,actionQuery:o,actionSortMode:s,actionSortOptions:c,actionToneFilter:l,filteredActions:u,getKindLabel:d,getToneClassName:f,getToneLabel:p,isQueued:m,kindFilterOptions:h,toneFilterOptions:g}=dr(r),_={props:r,emit:i,actionKindFilter:a,actionQuery:o,actionSortMode:s,actionSortOptions:c,actionToneFilter:l,filteredActions:u,getKindLabel:d,getToneClassName:f,getToneLabel:p,isQueued:m,kindFilterOptions:h,toneFilterOptions:g,get surfaceStyles(){return H},AppEmptyState:U,AppPanelHeader:q,AppSelect:B,DashboardIcon:L};return Object.defineProperty(_,"__isScriptSetup",{enumerable:!1,value:!0}),_}}),xr={class:`h-3.5 w-3.5`},Sr={class:`mt-3 grid gap-2`},Cr={class:`flex flex-wrap items-center justify-between gap-2`},wr={class:`text-xs text-(--dashboard-text-soft)`},Tr={class:`grid gap-2 md:grid-cols-3`},Er={class:`mt-3 max-h-[36rem] min-h-0 overflow-y-auto xl:max-h-none xl:overflow-hidden`},Dr={key:1,class:`grid h-full min-h-0 content-start gap-2 overflow-y-auto pr-1`},Or={class:`grid min-w-0 grid-cols-[minmax(0,1fr)_auto] items-start gap-3`},kr=[`onClick`],Ar={class:`flex min-w-0 flex-wrap items-center gap-2`},jr={class:`shrink-0 whitespace-nowrap rounded-full bg-(--dashboard-accent-soft) px-2 py-0.5 text-[11px] text-(--dashboard-text-muted)`},Mr={class:`mt-2 line-clamp-2 break-words text-sm font-medium leading-5 text-(--dashboard-text)`},Nr={class:`mt-1 line-clamp-2 break-words text-xs leading-5 text-(--dashboard-text-soft)`},Pr={key:0,class:`max-w-28 shrink-0 truncate text-sm font-medium text-(--dashboard-accent)`},Fr={class:`mt-2 flex items-center justify-end border-t border-(--dashboard-border) pt-2`},Ir=[`disabled`,`onClick`];function Lr(e,t,n,r,i,a){return O(),F(`section`,{class:l([r.surfaceStyles({padding:`md`}),`grid min-h-0 min-w-0 gap-3 overflow-visible xl:h-full xl:grid-rows-[auto_auto_minmax(0,1fr)] xl:overflow-hidden`])},[P(r.AppPanelHeader,{"icon-name":`metric-health`,title:`问题中心`},{meta:_(()=>[E(`button`,{type:`button`,class:`inline-flex items-center gap-1.5 rounded-full border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-2.5 py-1 text-[11px] text-(--dashboard-text-soft) transition hover:border-(--dashboard-border-strong) hover:text-(--dashboard-text)`,onClick:t[0]||=e=>r.emit(`copyReport`)},[E(`span`,xr,[P(r.DashboardIcon,{name:`metric-copy`})]),t[5]||=C(` 复制 PR `,-1)])]),_:1}),E(`div`,Sr,[E(`div`,Cr,[E(`p`,wr,` 匹配 `+b(r.filteredActions.length)+` / `+b(n.actions.length)+` 个处理项 `,1),s(E(`input`,{"onUpdate:modelValue":t[1]||=e=>r.actionQuery=e,class:`h-9 w-full rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 text-sm text-(--dashboard-text) outline-none transition placeholder:text-(--dashboard-text-soft) focus:border-(--dashboard-accent) md:w-64`,placeholder:`搜索问题、建议或目标页`,type:`search`},null,512),[[M,r.actionQuery]])]),E(`div`,Tr,[P(r.AppSelect,{modelValue:r.actionToneFilter,"onUpdate:modelValue":t[2]||=e=>r.actionToneFilter=e,label:`按严重度筛选`,options:r.toneFilterOptions},null,8,[`modelValue`,`options`]),P(r.AppSelect,{modelValue:r.actionKindFilter,"onUpdate:modelValue":t[3]||=e=>r.actionKindFilter=e,label:`按问题类型筛选`,options:r.kindFilterOptions},null,8,[`modelValue`,`options`]),P(r.AppSelect,{modelValue:r.actionSortMode,"onUpdate:modelValue":t[4]||=e=>r.actionSortMode=e,label:`排序处理项`,options:r.actionSortOptions},null,8,[`modelValue`,`options`])])]),E(`div`,Er,[r.filteredActions.length===0?(O(),x(r.AppEmptyState,{key:0,compact:``},{default:_(()=>[...t[6]||=[C(` 暂无匹配当前筛选条件的事项。 `,-1)]]),_:1})):(O(),F(`ol`,Dr,[(O(!0),F(j,null,f(r.filteredActions,e=>(O(),F(`li`,{key:e.key,class:`list-none`},[E(`article`,{class:l([`rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 py-2.5 transition hover:border-(--dashboard-border-strong) hover:bg-(--dashboard-panel)`,n.activeKey===e.key?`border-(--dashboard-accent) bg-(--dashboard-accent-soft)`:void 0])},[E(`div`,Or,[E(`button`,{type:`button`,class:`min-w-0 text-left`,onClick:t=>r.emit(`select`,e)},[E(`div`,Ar,[E(`span`,{class:l(r.getToneClassName(e.tone))},b(r.getToneLabel(e.tone)),3),E(`span`,jr,b(r.getKindLabel(e.kind)),1)]),E(`p`,Mr,b(e.title),1),E(`p`,Nr,b(e.meta),1)],8,kr),e.value?(O(),F(`span`,Pr,b(e.value),1)):N(``,!0)]),E(`div`,Fr,[E(`button`,{type:`button`,class:`rounded-full border border-(--dashboard-border) px-2.5 py-1 text-[11px] text-(--dashboard-text-soft) transition hover:border-(--dashboard-border-strong) hover:text-(--dashboard-text) disabled:cursor-not-allowed disabled:opacity-55`,disabled:r.isQueued(e),onClick:t=>r.emit(`addToQueue`,e)},b(r.isQueued(e)?`已在清单`:`加入清单`),9,Ir)])],2)]))),128))]))])],2)}var Rr=I(br,[[`render`,Lr]]),zr=r({__name:`AnalyzeWorkQueuePanel`,props:{items:{},activeId:{}},emits:[`clearCompleted`,`copy`,`remove`,`select`,`toggle`],setup(e,{expose:t,emit:n}){t();let r=e,i=n,a=v(`open`),o=D(()=>r.items.filter(e=>!e.completedAt).length),s=D(()=>r.items.length-o.value),c=D(()=>r.items.filter(e=>a.value===`open`?!e.completedAt:a.value!==`done`||!!e.completedAt));function l(e){return xe(e===`critical`?{tone:`error`}:e===`warning`?{tone:`warning`}:e===`success`?{tone:`success`}:{tone:`info`})}let u={props:r,emit:i,queueFilter:a,openCount:o,doneCount:s,visibleItems:c,getToneClassName:l,get surfaceStyles(){return H},AppEmptyState:U,AppPanelHeader:q,DashboardIcon:L};return Object.defineProperty(u,"__isScriptSetup",{enumerable:!1,value:!0}),u}}),Br=[`disabled`],Vr={class:`h-3.5 w-3.5`},Hr={class:`mt-3 grid gap-2`},Ur={class:`grid grid-cols-3 gap-2 text-center`},Wr={class:`mt-3 max-h-[32rem] min-h-0 overflow-y-auto xl:max-h-none xl:overflow-hidden`},Gr={key:1,class:`grid h-full min-h-0 content-start gap-2 overflow-y-auto pr-1`},Kr={class:`flex items-start justify-between gap-2`},qr=[`onClick`],Jr={class:`mt-2 truncate text-sm font-medium text-(--dashboard-text)`},Yr={class:`mt-1 line-clamp-2 text-xs leading-5 text-(--dashboard-text-soft)`},Xr={key:0,class:`shrink-0 text-xs font-medium text-(--dashboard-accent)`},Zr={class:`flex items-center justify-between gap-2 border-t border-(--dashboard-border) pt-2`},Qr=[`onClick`],$r=[`onClick`];function ei(e,t,n,r,i,a){return O(),F(`section`,{class:l([r.surfaceStyles({padding:`md`}),`grid min-h-0 min-w-0 gap-3 overflow-visible xl:h-full xl:grid-rows-[auto_auto_minmax(0,1fr)] xl:overflow-hidden`])},[P(r.AppPanelHeader,{"icon-name":`metric-bookmark`,title:`处理清单`},{meta:_(()=>[E(`button`,{type:`button`,class:`inline-flex items-center gap-1.5 rounded-full border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-2.5 py-1 text-[11px] text-(--dashboard-text-soft) transition hover:border-(--dashboard-border-strong) hover:text-(--dashboard-text)`,disabled:n.items.length===0,onClick:t[0]||=e=>r.emit(`copy`)},[E(`span`,Vr,[P(r.DashboardIcon,{name:`metric-copy`})]),t[5]||=C(` 复制 `,-1)],8,Br)]),_:1}),E(`div`,Hr,[E(`div`,Ur,[E(`button`,{type:`button`,class:l([`rounded-md border px-2 py-2 text-xs transition`,r.queueFilter===`open`?`border-(--dashboard-accent) bg-(--dashboard-accent-soft) text-(--dashboard-text)`:`border-(--dashboard-border) bg-(--dashboard-panel-muted) text-(--dashboard-text-soft) hover:border-(--dashboard-border-strong)`]),onClick:t[1]||=e=>r.queueFilter=`open`},` 待处理 `+b(r.openCount),3),E(`button`,{type:`button`,class:l([`rounded-md border px-2 py-2 text-xs transition`,r.queueFilter===`done`?`border-(--dashboard-accent) bg-(--dashboard-accent-soft) text-(--dashboard-text)`:`border-(--dashboard-border) bg-(--dashboard-panel-muted) text-(--dashboard-text-soft) hover:border-(--dashboard-border-strong)`]),onClick:t[2]||=e=>r.queueFilter=`done`},` 已完成 `+b(r.doneCount),3),E(`button`,{type:`button`,class:l([`rounded-md border px-2 py-2 text-xs transition`,r.queueFilter===`all`?`border-(--dashboard-accent) bg-(--dashboard-accent-soft) text-(--dashboard-text)`:`border-(--dashboard-border) bg-(--dashboard-panel-muted) text-(--dashboard-text-soft) hover:border-(--dashboard-border-strong)`]),onClick:t[3]||=e=>r.queueFilter=`all`},` 全部 `+b(n.items.length),3)]),r.doneCount>0?(O(),F(`button`,{key:0,type:`button`,class:`h-8 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 text-xs text-(--dashboard-text-soft) transition hover:border-(--dashboard-border-strong) hover:text-(--dashboard-text)`,onClick:t[4]||=e=>r.emit(`clearCompleted`)},` 清空已完成 `)):N(``,!0)]),E(`div`,Wr,[r.visibleItems.length===0?(O(),x(r.AppEmptyState,{key:0,compact:``},{default:_(()=>[...t[6]||=[C(` 当前没有处理事项。 `,-1)]]),_:1})):(O(),F(`ol`,Gr,[(O(!0),F(j,null,f(r.visibleItems,e=>(O(),F(`li`,{key:e.id,class:l([`grid gap-2 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-2.5 transition`,n.activeId===e.id?`border-(--dashboard-accent) bg-(--dashboard-accent-soft)`:void 0])},[E(`div`,Kr,[E(`button`,{type:`button`,class:`min-w-0 text-left`,onClick:t=>r.emit(`select`,e)},[E(`span`,{class:l(r.getToneClassName(e.tone))},b(e.completedAt?`完成`:`待处理`),3),E(`p`,Jr,b(e.title),1),E(`p`,Yr,b(e.meta),1)],8,qr),e.value?(O(),F(`span`,Xr,b(e.value),1)):N(``,!0)]),E(`div`,Zr,[E(`button`,{type:`button`,class:`rounded-full border border-(--dashboard-border) px-2.5 py-1 text-[11px] text-(--dashboard-text-soft) transition hover:border-(--dashboard-border-strong) hover:text-(--dashboard-text)`,onClick:t=>r.emit(`toggle`,e.id)},b(e.completedAt?`重新打开`:`标记完成`),9,Qr),E(`button`,{type:`button`,class:`rounded-full border border-(--dashboard-border) px-2.5 py-1 text-[11px] text-(--dashboard-text-soft) transition hover:border-rose-300 hover:text-rose-500`,onClick:t=>r.emit(`remove`,e.id)},` 移除 `,8,$r)])],2))),128))]))])],2)}var ti=I(zr,[[`render`,ei]]);function ni(e){return e===0?`0 B`:`${e>0?`+`:`-`}${R(Math.abs(e))}`}function ri(e,t){return e===0&&t===0?`stable`:t>0?`growing`:t<0?`shrinking`:`stable`}function ii(e){return e===`growing`?`增长`:e===`shrinking`?`下降`:e===`stable`?`稳定`:`样本不足`}function ai(e){return e===`growing`?`历史快照显示体积正在上升`:e===`shrinking`?`历史快照显示体积正在下降`:e===`stable`?`历史快照整体保持稳定`:`需要更多历史快照判断趋势`}function oi(e){let t=[...e].sort((e,t)=>Date.parse(e.capturedAt)-Date.parse(t.capturedAt)),n=t[0],r=t[t.length-1];if(!n||!r||t.length<2)return{status:`insufficient`,label:ii(`insufficient`),headline:ai(`insufficient`),description:`${t.length} 个历史样本`,totalDeltaBytes:0,averageDeltaBytes:0,metrics:[{label:`样本数`,value:t.length},{label:`累计变化`,value:`—`},{label:`平均变化`,value:`—`},{label:`预测下次`,value:`—`}]};let i=t.slice(1).map((e,n)=>e.totalBytes-t[n].totalBytes),a=r.totalBytes-n.totalBytes,o=Math.round(i.reduce((e,t)=>e+t,0)/i.length),s=Math.max(0,r.totalBytes+o),c=ri(a,o);return{status:c,label:ii(c),headline:ai(c),description:`${t.length} 个历史样本 · ${n.label} 至 ${r.label}`,totalDeltaBytes:a,averageDeltaBytes:o,projectedNextBytes:s,metrics:[{label:`样本数`,value:t.length},{label:`累计变化`,value:ni(a)},{label:`平均变化`,value:ni(o)},{label:`预测下次`,value:R(s)}]}}function si(e=1800){let t=v(``),n=null;function r(r){t.value=r,n&&clearTimeout(n),n=setTimeout(()=>{t.value=``,n=null},e)}return k(()=>{n&&clearTimeout(n)}),{actionStatus:t,setActionStatus:r}}function ci(e){return e===0?`无变化`:`${e>0?`+`:`-`}${R(Math.abs(e))}`}function li(e){return new Date(e.capturedAt).toLocaleString(`zh-CN`,{month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`,hour12:!1})}function ui(e){return[e.id,e.label,e.capturedAt,e.packageCount,e.moduleCount,e.duplicateCount,e.totalBytes,e.compressedBytes].join(` `).toLowerCase()}function di(e,t){return[...e].sort((e,n)=>t===`total`?n.totalBytes-e.totalBytes||Date.parse(n.capturedAt)-Date.parse(e.capturedAt):t===`compressed`?n.compressedBytes-e.compressedBytes||Date.parse(n.capturedAt)-Date.parse(e.capturedAt):t===`modules`?n.moduleCount-e.moduleCount||Date.parse(n.capturedAt)-Date.parse(e.capturedAt):t===`duplicates`&&n.duplicateCount-e.duplicateCount||Date.parse(n.capturedAt)-Date.parse(e.capturedAt))}function fi(e){let t=v(``),n=v(`capturedAt`),{actionStatus:r,setActionStatus:i}=si(),a=D(()=>e.snapshots.find(t=>t.id===e.baselineSnapshotId)??null),o=D(()=>e.snapshots[0]??null),s=D(()=>e.snapshots[1]??null),c=D(()=>oi(e.snapshots)),l=D(()=>!o.value||!a.value?``:ci(o.value.totalBytes-a.value.totalBytes)),u=D(()=>!o.value||!s.value?``:ci(o.value.totalBytes-s.value.totalBytes)),d=D(()=>e.comparisonMode===`baseline`?l.value||`未设置`:u.value||`上次快照`),f=D(()=>{let e=a.value;return e?[{label:`基线体积`,value:R(e.totalBytes)},{label:`压缩后`,value:R(e.compressedBytes)},{label:`模块数`,value:String(e.moduleCount)},{label:`复用模块`,value:String(e.duplicateCount)}]:[]}),p=D(()=>{let r=t.value.trim().toLowerCase();return di(e.snapshots.filter(e=>!r||ui(e).includes(r)),n.value)}),m=D(()=>{let e=o.value,t=a.value,n=s.value;return[`# dashboard 历史基线`,``,e?`当前快照:${li(e)} · ${R(e.totalBytes)} · 压缩后 ${R(e.compressedBytes)}`:`当前快照:暂无`,t?`基线快照:${li(t)} · ${R(t.totalBytes)} · 压缩后 ${R(t.compressedBytes)}`:`基线快照:未设置`,n?`上次快照:${li(n)} · ${R(n.totalBytes)} · 压缩后 ${R(n.compressedBytes)}`:`上次快照:暂无`,`当前对比:${d.value}`,``,`| 时间 | 总体积 | 压缩后 | 包 | 模块 | 复用模块 |`,`| --- | ---: | ---: | ---: | ---: | ---: |`,...p.value.map(e=>`| ${li(e)} | ${R(e.totalBytes)} | ${R(e.compressedBytes)} | ${e.packageCount} | ${e.moduleCount} | ${e.duplicateCount} |`),``].join(`
8
- `)});async function h(){try{await V(m.value),i(`已复制`)}catch{i(`复制失败`)}}function g(){let e=new Blob([`${JSON.stringify(p.value,null,2)}\n`],{type:`application/json`}),t=URL.createObjectURL(e),n=document.createElement(`a`);n.href=t,n.download=`weapp-vite-dashboard-history.json`,n.click(),URL.revokeObjectURL(t),i(`已导出`)}return{actionStatus:r,activeComparisonLabel:d,baselineSnapshot:a,baselineSummaryItems:f,copyBaselineReport:h,exportFilteredSnapshots:g,filteredSnapshots:p,formatSnapshotDate:li,historyTrend:c,snapshotQuery:t,snapshotSortMode:n}}var pi=r({__name:`HistoryBaselineToolbar`,props:a({filteredCount:{},totalCount:{},actionStatus:{},disabled:{type:Boolean}},{modelValue:{required:!0},modelModifiers:{}}),emits:a([`copy`,`exportJson`],[`update:modelValue`]),setup(e,{expose:t,emit:n}){t();let r={emit:n,sortMode:d(e,`modelValue`),sortOptions:[{label:`按时间`,value:`capturedAt`},{label:`按体积`,value:`total`},{label:`按压缩后`,value:`compressed`},{label:`按模块数`,value:`modules`},{label:`按复用模块`,value:`duplicates`}],AppSelect:B};return Object.defineProperty(r,"__isScriptSetup",{enumerable:!1,value:!0}),r}}),mi={class:`flex flex-wrap items-center justify-between gap-2`},hi={class:`text-xs text-(--dashboard-text-soft)`},gi={class:`flex flex-wrap items-center gap-2`},_i={key:0,class:`text-xs font-medium text-(--dashboard-accent)`},vi=[`disabled`],yi=[`disabled`];function bi(e,t,n,r,i,a){return O(),F(`div`,mi,[E(`p`,hi,` 匹配 `+b(n.filteredCount)+` / `+b(n.totalCount)+` 个快照 `,1),E(`div`,gi,[n.actionStatus?(O(),F(`span`,_i,b(n.actionStatus),1)):N(``,!0),E(`button`,{type:`button`,class:`h-9 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 text-sm text-(--dashboard-text-soft) transition hover:border-(--dashboard-border-strong) hover:text-(--dashboard-accent) focus:border-(--dashboard-border-strong) focus:outline-none disabled:opacity-50`,disabled:n.disabled,onClick:t[0]||=e=>r.emit(`copy`)},` 复制基线 `,8,vi),E(`button`,{type:`button`,class:`h-9 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 text-sm text-(--dashboard-text-soft) transition hover:border-(--dashboard-border-strong) hover:text-(--dashboard-accent) focus:border-(--dashboard-border-strong) focus:outline-none disabled:opacity-50`,disabled:n.disabled,onClick:t[1]||=e=>r.emit(`exportJson`)},` 导出 JSON `,8,yi),P(r.AppSelect,{modelValue:r.sortMode,"onUpdate:modelValue":t[2]||=e=>r.sortMode=e,class:`w-30`,label:`排序历史基线`,options:r.sortOptions},null,8,[`modelValue`])])])}var xi=I(pi,[[`render`,bi]]),Si=r({__name:`HistoryTrendPanel`,props:{trend:{}},setup(e,{expose:t}){t();function n(e){return e===`growing`?`border-amber-200 bg-amber-50 text-amber-700 dark:border-amber-500/25 dark:bg-amber-500/10 dark:text-amber-300`:e===`shrinking`?`border-emerald-200 bg-emerald-50 text-emerald-700 dark:border-emerald-500/25 dark:bg-emerald-500/10 dark:text-emerald-300`:e===`stable`?`border-sky-200 bg-sky-50 text-sky-700 dark:border-sky-500/25 dark:bg-sky-500/10 dark:text-sky-300`:`border-(--dashboard-border) bg-(--dashboard-panel-muted) text-(--dashboard-text-muted)`}let r={getStatusClassName:n,AppMetricTile:W};return Object.defineProperty(r,"__isScriptSetup",{enumerable:!1,value:!0}),r}}),Ci={class:`rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-3`},wi={class:`flex items-start justify-between gap-3`},Ti={class:`min-w-0`},Ei={class:`mt-2 text-sm font-semibold text-(--dashboard-text)`},Di={class:`mt-1 text-xs leading-5 text-(--dashboard-text-soft)`},Oi={class:`mt-3 grid grid-cols-2 gap-2`};function ki(e,t,n,r,a,o){return O(),F(`section`,Ci,[E(`div`,wi,[E(`div`,Ti,[E(`span`,{class:l([`inline-flex rounded-full border px-2 py-0.5 text-[11px] font-medium`,r.getStatusClassName(n.trend.status)])},b(n.trend.label),3),E(`p`,Ei,b(n.trend.headline),1),E(`p`,Di,b(n.trend.description),1)])]),E(`div`,Oi,[(O(!0),F(j,null,f(n.trend.metrics,e=>(O(),x(r.AppMetricTile,i({key:e.label},{ref_for:!0},e),null,16))),128))])])}var Ai=I(Si,[[`render`,ki]]),ji=r({__name:`HistoryBaselinePanel`,props:{snapshots:{},baselineSnapshotId:{},comparisonMode:{}},emits:[`setBaseline`,`setComparisonMode`],setup(e,{expose:t,emit:n}){t();let r=e,i=n,{actionStatus:a,activeComparisonLabel:o,baselineSummaryItems:s,copyBaselineReport:c,exportFilteredSnapshots:l,filteredSnapshots:u,formatSnapshotDate:d,historyTrend:f,snapshotQuery:p,snapshotSortMode:m}=fi(r),h={props:r,emit:i,actionStatus:a,activeComparisonLabel:o,baselineSummaryItems:s,copyBaselineReport:c,exportFilteredSnapshots:l,filteredSnapshots:u,formatSnapshotDate:d,historyTrend:f,snapshotQuery:p,snapshotSortMode:m,get formatBytes(){return R},get pillButtonStyles(){return ye},get surfaceStyles(){return H},AppEmptyState:U,AppPanelHeader:q,HistoryBaselineToolbar:xi,HistoryTrendPanel:Ai};return Object.defineProperty(h,"__isScriptSetup",{enumerable:!1,value:!0}),h}}),Mi={class:`flex gap-1.5`},Ni=[`disabled`],Pi={class:`mt-3 grid min-h-0 min-w-0 gap-2 overflow-visible xl:grid-rows-[auto_auto_auto_minmax(0,1fr)] xl:overflow-hidden`},Fi={class:`rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 py-2`},Ii={class:`flex items-center justify-between gap-3`},Li={class:`text-sm font-medium text-(--dashboard-accent)`},Ri={key:0,class:`mt-3 grid grid-cols-2 gap-2`},zi={class:`text-[11px] text-(--dashboard-text-soft)`},Bi={class:`mt-1 text-sm font-semibold text-(--dashboard-text)`},Vi={class:`grid gap-2`},Hi={key:1,class:`grid max-h-80 min-h-0 gap-1.5 overflow-y-auto pr-1 xl:max-h-none`},Ui=[`onClick`],Wi={class:`flex items-start justify-between gap-3`},Gi={class:`min-w-0`},Ki={class:`truncate text-sm font-medium text-(--dashboard-text)`},qi={class:`mt-0.5 truncate text-xs text-(--dashboard-text-soft)`},Ji={class:`text-right`},Yi={class:`whitespace-nowrap text-sm font-medium text-(--dashboard-accent)`},Xi={class:`mt-0.5 whitespace-nowrap text-xs text-(--dashboard-text-soft)`};function Zi(e,t,n,r,i,a){return O(),F(`section`,{class:l([r.surfaceStyles({padding:`md`}),`grid min-h-0 min-w-0 gap-3 overflow-visible xl:h-full xl:grid-rows-[auto_minmax(0,1fr)] xl:overflow-hidden`])},[P(r.AppPanelHeader,{"icon-name":`metric-history`,title:`历史基线`},{meta:_(()=>[E(`div`,Mi,[E(`button`,{type:`button`,class:l(r.pillButtonStyles({kind:`badge`,active:n.comparisonMode===`previous`})),onClick:t[0]||=e=>r.emit(`setComparisonMode`,`previous`)},` 上次 `,2),E(`button`,{type:`button`,class:l(r.pillButtonStyles({kind:`badge`,active:n.comparisonMode===`baseline`})),disabled:!n.baselineSnapshotId,onClick:t[1]||=e=>r.emit(`setComparisonMode`,`baseline`)},` Baseline `,10,Ni)])]),_:1}),E(`div`,Pi,[E(`div`,Fi,[E(`div`,Ii,[t[4]||=E(`p`,{class:`text-xs text-(--dashboard-text-soft)`},` 当前对比 `,-1),E(`p`,Li,b(r.activeComparisonLabel),1)]),r.baselineSummaryItems.length?(O(),F(`div`,Ri,[(O(!0),F(j,null,f(r.baselineSummaryItems,e=>(O(),F(`div`,{key:e.label,class:`rounded-md border border-(--dashboard-border) bg-(--dashboard-panel) px-2.5 py-2`},[E(`p`,zi,b(e.label),1),E(`p`,Bi,b(e.value),1)]))),128))])):N(``,!0)]),P(r.HistoryTrendPanel,{trend:r.historyTrend},null,8,[`trend`]),E(`div`,Vi,[P(r.HistoryBaselineToolbar,{modelValue:r.snapshotSortMode,"onUpdate:modelValue":t[2]||=e=>r.snapshotSortMode=e,"action-status":r.actionStatus,disabled:r.filteredSnapshots.length===0,"filtered-count":r.filteredSnapshots.length,"total-count":n.snapshots.length,onCopy:r.copyBaselineReport,onExportJson:r.exportFilteredSnapshots},null,8,[`modelValue`,`action-status`,`disabled`,`filtered-count`,`total-count`,`onCopy`,`onExportJson`]),s(E(`input`,{"onUpdate:modelValue":t[3]||=e=>r.snapshotQuery=e,class:`h-9 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 text-sm text-(--dashboard-text) outline-none transition placeholder:text-(--dashboard-text-soft) focus:border-(--dashboard-accent)`,placeholder:`搜索时间、标签或快照指标`,type:`search`},null,512),[[M,r.snapshotQuery]])]),r.filteredSnapshots.length===0?(O(),x(r.AppEmptyState,{key:0,compact:``},{default:_(()=>[...t[5]||=[C(` 暂无历史快照。 `,-1)]]),_:1})):(O(),F(`ol`,Hi,[(O(!0),F(j,null,f(r.filteredSnapshots,e=>(O(),F(`li`,{key:e.id,class:`list-none`},[E(`button`,{type:`button`,class:l([`w-full rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 py-2 text-left transition hover:border-(--dashboard-border-strong) hover:bg-(--dashboard-panel)`,e.id===n.baselineSnapshotId?`border-(--dashboard-accent) bg-(--dashboard-accent-soft)`:void 0]),onClick:t=>r.emit(`setBaseline`,e.id)},[E(`div`,Wi,[E(`div`,Gi,[E(`p`,Ki,b(r.formatSnapshotDate(e)),1),E(`p`,qi,b(e.packageCount)+` 包 · `+b(e.moduleCount)+` 模块 · 复用 `+b(e.duplicateCount),1)]),E(`div`,Ji,[E(`p`,Yi,b(r.formatBytes(e.totalBytes)),1),E(`p`,Xi,b(e.id===n.baselineSnapshotId?`baseline`:r.formatBytes(e.compressedBytes)),1)])])],10,Ui)]))),128))]))])],2)}var Qi=I(ji,[[`render`,Zi]]),$i=r({__name:`AnalyzeDiagnosticsSection`,props:{actionItems:{},activeWorkQueueItemId:{},baselineSnapshotId:{},comparisonMode:{},historySnapshots:{},queuedActionKeys:{},selectedActionKey:{},workQueueItems:{}},emits:[`addActionToQueue`,`clearCompletedWorkQueue`,`copyPr`,`copyWorkQueue`,`removeWorkQueueItem`,`selectAction`,`selectWorkQueueItem`,`setBaseline`,`setComparisonMode`,`toggleWorkQueueItem`],setup(e,{expose:n,emit:r}){n();let i=r,a=v(null),o=v(66),s=v(76),c=v(`work-queue`),l=D(()=>({"--diagnostics-primary":`${o.value}%`})),u=null,d=null;function f(e){o.value=Math.min(s.value,Math.max(52,Math.round(e)))}function p(e){if(e.button!==0||!a.value)return;e.preventDefault();let t=a.value,n=e=>{let n=t.getBoundingClientRect();f((e-n.left)/n.width*100)},r=e=>n(e.clientX),i=()=>u?.();u?.(),u=()=>{window.removeEventListener(`pointermove`,r),window.removeEventListener(`pointerup`,i),window.removeEventListener(`pointercancel`,i),u=null},window.addEventListener(`pointermove`,r),window.addEventListener(`pointerup`,i),window.addEventListener(`pointercancel`,i),n(e.clientX)}function m(e){e.key===`ArrowLeft`?(e.preventDefault(),f(o.value-4)):e.key===`ArrowRight`?(e.preventDefault(),f(o.value+4)):e.key===`Home`?(e.preventDefault(),f(52)):e.key===`End`&&(e.preventDefault(),f(s.value))}function h(){let e=a.value?.clientWidth??0;e!==0&&(s.value=Math.min(76,Math.max(52,Math.floor((e-320-28)/e*100))),f(o.value))}function g(e,t=!1){c.value=e,t&&document.getElementById(`diagnostics-${e}-tab`)?.focus()}function _(e){e.key===`ArrowLeft`||e.key===`Home`?(e.preventDefault(),g(`work-queue`,!0)):(e.key===`ArrowRight`||e.key===`End`)&&(e.preventDefault(),g(`history`,!0))}t(()=>{d=new ResizeObserver(h),a.value&&d.observe(a.value),h()}),k(()=>{u?.(),d?.disconnect()});let y={emit:i,splitRoot:a,splitPercent:o,splitMaxPercent:s,activeSideTab:c,splitStyle:l,get stopResize(){return u},set stopResize(e){u=e},get splitResizeObserver(){return d},set splitResizeObserver(e){d=e},setSplitPercent:f,handleResizePointerDown:p,handleResizeKeydown:m,updateSplitBounds:h,setActiveSideTab:g,handleSideTabKeydown:_,ActionCenterPanel:Rr,AnalyzeWorkQueuePanel:ti,HistoryBaselinePanel:Qi};return Object.defineProperty(y,"__isScriptSetup",{enumerable:!1,value:!0}),y}}),ea={class:`min-h-0 min-w-0 xl:h-full xl:overflow-hidden`},ta=[`aria-valuemax`,`aria-valuenow`],na={class:`grid min-h-0 min-w-0 gap-2 overflow-visible xl:h-full xl:grid-rows-[auto_minmax(0,1fr)] xl:overflow-hidden`},ra={class:`grid grid-cols-2 rounded-lg border border-(--dashboard-border) bg-(--dashboard-panel) p-1`,role:`tablist`,"aria-label":`诊断侧栏`},ia=[`aria-selected`,`tabindex`],aa=[`aria-selected`,`tabindex`],oa={class:`min-h-0 min-w-0 overflow-visible xl:overflow-hidden`},sa={id:`diagnostics-work-queue-panel`,class:`h-full min-h-0`,role:`tabpanel`,"aria-labelledby":`diagnostics-work-queue-tab`},ca={id:`diagnostics-history-panel`,class:`h-full min-h-0`,role:`tabpanel`,"aria-labelledby":`diagnostics-history-tab`};function la(e,t,n,r,i,a){return O(),F(`section`,{ref:`splitRoot`,class:`diagnostics-split`,style:y(r.splitStyle)},[E(`div`,ea,[P(r.ActionCenterPanel,{actions:n.actionItems,"active-key":n.selectedActionKey,"queued-action-keys":n.queuedActionKeys,onAddToQueue:t[0]||=e=>r.emit(`addActionToQueue`,e),onCopyReport:t[1]||=e=>r.emit(`copyPr`),onSelect:t[2]||=e=>r.emit(`selectAction`,e)},null,8,[`actions`,`active-key`,`queued-action-keys`])]),E(`button`,{class:`group hidden min-h-0 cursor-col-resize items-center justify-center rounded-md outline-none xl:flex focus-visible:ring-2 focus-visible:ring-(--dashboard-accent)`,type:`button`,role:`separator`,"aria-label":`调整问题中心和诊断侧栏宽度`,"aria-orientation":`vertical`,"aria-valuemin":`52`,"aria-valuemax":r.splitMaxPercent,"aria-valuenow":r.splitPercent,onKeydown:r.handleResizeKeydown,onPointerdown:r.handleResizePointerDown},[...t[12]||=[E(`span`,{class:`h-12 w-0.5 rounded-full bg-(--dashboard-border-strong) transition group-hover:bg-(--dashboard-accent)`},null,-1)]],40,ta),E(`div`,na,[E(`div`,ra,[E(`button`,{id:`diagnostics-work-queue-tab`,type:`button`,role:`tab`,class:l([`rounded-md px-3 py-2 text-sm font-medium transition`,r.activeSideTab===`work-queue`?`bg-(--dashboard-accent-soft) text-(--dashboard-accent)`:`text-(--dashboard-text-soft) hover:bg-(--dashboard-panel-muted) hover:text-(--dashboard-text)`]),"aria-selected":r.activeSideTab===`work-queue`,tabindex:r.activeSideTab===`work-queue`?0:-1,"aria-controls":`diagnostics-work-queue-panel`,onClick:t[3]||=e=>r.setActiveSideTab(`work-queue`),onKeydown:r.handleSideTabKeydown},` 处理清单 `,42,ia),E(`button`,{id:`diagnostics-history-tab`,type:`button`,role:`tab`,class:l([`rounded-md px-3 py-2 text-sm font-medium transition`,r.activeSideTab===`history`?`bg-(--dashboard-accent-soft) text-(--dashboard-accent)`:`text-(--dashboard-text-soft) hover:bg-(--dashboard-panel-muted) hover:text-(--dashboard-text)`]),"aria-selected":r.activeSideTab===`history`,tabindex:r.activeSideTab===`history`?0:-1,"aria-controls":`diagnostics-history-panel`,onClick:t[4]||=e=>r.setActiveSideTab(`history`),onKeydown:r.handleSideTabKeydown},` 历史基线 `,42,aa)]),E(`div`,oa,[s(E(`div`,sa,[P(r.AnalyzeWorkQueuePanel,{items:n.workQueueItems,"active-id":n.activeWorkQueueItemId,onClearCompleted:t[5]||=e=>r.emit(`clearCompletedWorkQueue`),onCopy:t[6]||=e=>r.emit(`copyWorkQueue`),onRemove:t[7]||=e=>r.emit(`removeWorkQueueItem`,e),onSelect:t[8]||=e=>r.emit(`selectWorkQueueItem`,e),onToggle:t[9]||=e=>r.emit(`toggleWorkQueueItem`,e)},null,8,[`items`,`active-id`])],512),[[w,r.activeSideTab===`work-queue`]]),s(E(`div`,ca,[P(r.HistoryBaselinePanel,{snapshots:n.historySnapshots,"baseline-snapshot-id":n.baselineSnapshotId,"comparison-mode":n.comparisonMode,onSetBaseline:t[10]||=e=>r.emit(`setBaseline`,e),onSetComparisonMode:t[11]||=e=>r.emit(`setComparisonMode`,e)},null,8,[`snapshots`,`baseline-snapshot-id`,`comparison-mode`])],512),[[w,r.activeSideTab===`history`]])])])],4)}var ua=I($i,[[`render`,la],[`__scopeId`,`data-v-a5f11dba`]]);function da(e){return Math.max(0,Math.min(100,Math.round(e)))}function fa(e){return e===`blocked`?`Blocked`:e===`review`?`Review`:`Ready`}function pa(e){return e===`blocked`?`发布前需要先处理阻断项`:e===`review`?`建议评审后再发布`:`当前分析未发现阻断项`}function ma(e){let t=[];for(let n of[...e.criticalActions,...e.warningActions].slice(0,3))t.push(`${n.title}:${n.meta}`);return t.length===0&&e.largestPackage&&t.push(`持续关注最大包 ${e.largestPackage.label},当前 ${R(e.largestPackage.totalBytes)}。`),t.length===0&&e.largestFile&&t.push(`持续关注最大文件 ${e.largestFile.file},当前 ${R(e.largestFile.size)}。`),t}function ha(e){return[`# dashboard 发布门禁`,``,`状态:${e.label}`,`风险分:${e.score}`,e.headline,``,`## 指标`,``,...e.metrics.map(e=>`- ${e.label}:${e.value}`),``,`## 建议`,``,...e.recommendations.length>0?e.recommendations.map(e=>`- ${e}`):[`- 当前没有需要立即处理的事项。`],``].join(`
9
- `)}function ga(e){let t=e.actionItems.filter(e=>e.tone===`critical`),n=e.actionItems.filter(e=>e.tone===`warning`),r=e.largestFiles[0],i=e.packageInsights[0],a=t.length>0?`blocked`:n.length>0?`review`:`ready`,o=da(100-t.length*28-n.length*12),s=[{label:`阻断项`,value:t.length},{label:`建议项`,value:n.length},{label:`最大包`,value:i?R(i.totalBytes):`—`},{label:`最大文件`,value:r?R(r.size):`—`}],c={status:a,label:fa(a),score:o,headline:pa(a),description:`${e.actionItems.length} 个候选事项 · ${e.packageInsights.length} 个包 · ${e.largestFiles.length} 个文件样本`,metrics:s,recommendations:ma({criticalActions:t,warningActions:n,largestFile:r,largestPackage:i})};return{...c,report:ha(c)}}function _a(e){let t=D(()=>e.actionItems.slice(0,4)),n=D(()=>e.largestFiles.slice(0,5)),r=D(()=>e.packageInsights.reduce((e,t)=>e+t.totalBytes,0)),i=D(()=>ga({actionItems:e.actionItems,largestFiles:e.largestFiles,packageInsights:e.packageInsights})),{actionStatus:a,setActionStatus:o}=si(),s=D(()=>e.packageInsights.slice(0,5).map(e=>{let t=r.value>0?e.totalBytes/r.value*100:0;return{...e,typeLabel:z(e.type),sizeLabel:R(e.totalBytes),compressedLabel:`${e.compressedSizeSource===`real`?`Brotli`:`估算`} ${R(e.compressedBytes)}`,sharePercent:t,shareStyle:{width:`${Math.max(t,2).toFixed(1)}%`}}}));async function c(){try{await V(i.value.report),o(`已复制`)}catch{o(`复制失败`)}}return{copyReleaseGateReport:c,gateCopyStatus:a,getToneClassName:cr,getToneLabel:lr,packageOverviewItems:s,releaseGate:i,visibleActions:t,visibleLargestFiles:n}}var va=r({__name:`DashboardMetricGrid`,props:{cards:{},packageTypeSummary:{},compact:{type:Boolean}},setup(e,{expose:t}){t();let n=e;function r(e){return[H({padding:n.compact?`sm`:`md`}),`h-full min-w-0`,e.wide?`xl:col-span-2`:`xl:col-span-1`]}let i={props:n,getMetricCardClassName:r,metricCardRows:D(()=>n.cards.map(e=>({...e,packageTypeTags:e.label===`总产物体积`?n.packageTypeSummary.map(e=>({label:z(e.label),value:String(e.value)})):[]}))),get iconFrameStyles(){return Se},DashboardIcon:L};return Object.defineProperty(i,"__isScriptSetup",{enumerable:!1,value:!0}),i}}),ya={class:`min-w-0`},ba={key:0,class:`mt-1 text-xs font-medium text-(--dashboard-accent)`},xa={key:0,class:`mt-3 flex flex-wrap gap-1.5`};function Sa(e,t,n,r,i,a){return O(),F(`section`,{class:l(n.compact?`grid min-h-0 items-stretch gap-2 md:grid-cols-3 xl:grid-cols-6`:`grid items-stretch gap-2.5 md:grid-cols-2 xl:grid-cols-6`)},[(O(!0),F(j,null,f(r.metricCardRows,e=>(O(),F(`article`,{key:e.label,class:l(r.getMetricCardClassName(e))},[E(`div`,{class:l(n.compact?`relative h-full min-w-0 pr-8`:`flex h-full min-w-0 items-start justify-between gap-2`)},[E(`div`,ya,[E(`p`,{class:l(n.compact?`truncate text-[11px] leading-4 text-(--dashboard-text-soft)`:`text-[11px] uppercase tracking-[0.22em] text-(--dashboard-text-soft)`)},b(e.label),3),E(`p`,{class:l(n.compact?`mt-1 text-xl font-semibold leading-6`:`mt-2 text-2xl font-semibold md:text-[1.65rem]`)},b(e.value),3),e.detail?(O(),F(`p`,ba,b(e.detail),1)):N(``,!0)]),E(`span`,{class:l([r.iconFrameStyles({size:n.compact?`sm`:`lg`}),n.compact?`absolute right-0 top-0`:void 0])},[E(`span`,{class:l(n.compact?`h-4.5 w-4.5`:`h-5 w-5`)},[P(r.DashboardIcon,{name:e.iconName},null,8,[`name`])],2)],2)],2),e.packageTypeTags.length>0&&!n.compact?(O(),F(`div`,xa,[(O(!0),F(j,null,f(e.packageTypeTags,e=>(O(),F(`span`,{key:e.label,class:`rounded-full border border-(--dashboard-border-strong) bg-(--dashboard-accent-soft) px-3 py-1 text-xs text-(--dashboard-text)`},b(e.label)+` `+b(e.value),1))),128))])):N(``,!0)],2))),128))],2)}var Ca=I(va,[[`render`,Sa]]),wa=r({__name:`ReleaseGatePanel`,props:{gate:{},copyStatus:{}},emits:[`copy`],setup(e,{expose:t,emit:n}){t();let r=n;function i(e){return e===`blocked`?`border-rose-200 bg-rose-100 text-rose-700 dark:border-rose-500/30 dark:bg-rose-500/12 dark:text-rose-300`:e===`review`?`border-amber-200 bg-amber-100 text-amber-700 dark:border-amber-500/30 dark:bg-amber-500/12 dark:text-amber-300`:`border-emerald-200 bg-emerald-100 text-emerald-700 dark:border-emerald-500/30 dark:bg-emerald-500/12 dark:text-emerald-300`}let a={emit:r,getStatusClassName:i,AppMetricTile:W,AppPanelHeader:q,DashboardIcon:L};return Object.defineProperty(a,"__isScriptSetup",{enumerable:!1,value:!0}),a}}),Ta={class:`rounded-lg border border-(--dashboard-border) bg-(--dashboard-panel) p-4 shadow-(--dashboard-shadow)`},Ea={class:`flex items-center gap-2`},Da={key:0,class:`text-xs font-medium text-(--dashboard-accent)`},Oa={class:`h-3.5 w-3.5`},ka={class:`mt-3 grid gap-3 xl:grid-cols-[minmax(0,0.7fr)_minmax(0,1fr)]`},Aa={class:`rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-3`},ja={class:`flex items-start justify-between gap-3`},Ma={class:`mt-3 text-lg font-semibold text-(--dashboard-text)`},Na={class:`mt-1 text-xs leading-5 text-(--dashboard-text-soft)`},Pa={class:`shrink-0 text-right`},Fa={class:`mt-1 text-3xl font-semibold text-(--dashboard-accent)`},Ia={class:`grid gap-3 md:grid-cols-[minmax(0,0.9fr)_minmax(0,1fr)]`},La={class:`grid grid-cols-2 gap-2`},Ra={class:`grid content-start gap-1.5 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-3 text-xs text-(--dashboard-text-muted)`},za={key:0};function Ba(e,t,n,r,a,o){return O(),F(`section`,Ta,[P(r.AppPanelHeader,{"icon-name":`metric-quality`,title:`发布门禁`},{meta:_(()=>[E(`div`,Ea,[n.copyStatus?(O(),F(`span`,Da,b(n.copyStatus),1)):N(``,!0),E(`button`,{type:`button`,class:`inline-flex items-center gap-1.5 rounded-full border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-2.5 py-1 text-[11px] text-(--dashboard-text-soft) transition hover:border-(--dashboard-border-strong) hover:text-(--dashboard-text)`,onClick:t[0]||=e=>r.emit(`copy`)},[E(`span`,Oa,[P(r.DashboardIcon,{name:`metric-copy`})]),t[1]||=C(` 复制门禁 `,-1)])])]),_:1}),E(`div`,ka,[E(`div`,Aa,[E(`div`,ja,[E(`div`,null,[E(`span`,{class:l([`inline-flex rounded-full border px-2.5 py-1 text-[11px] font-medium uppercase tracking-[0.16em]`,r.getStatusClassName(n.gate.status)])},b(n.gate.label),3),E(`p`,Ma,b(n.gate.headline),1),E(`p`,Na,b(n.gate.description),1)]),E(`div`,Pa,[t[2]||=E(`p`,{class:`text-[11px] uppercase tracking-[0.18em] text-(--dashboard-text-soft)`},` score `,-1),E(`p`,Fa,b(n.gate.score),1)])])]),E(`div`,Ia,[E(`div`,La,[(O(!0),F(j,null,f(n.gate.metrics,e=>(O(),x(r.AppMetricTile,i({key:e.label},{ref_for:!0},e),null,16))),128))]),E(`ol`,Ra,[(O(!0),F(j,null,f(n.gate.recommendations,e=>(O(),F(`li`,{key:e,class:`line-clamp-2`},b(e),1))),128)),n.gate.recommendations.length===0?(O(),F(`li`,za,` 当前没有需要立即处理的事项。 `)):N(``,!0)])])])])}var Va=I(wa,[[`render`,Ba]]),Ha=r({__name:`AnalyzeOverviewPanel`,props:{actionItems:{},cards:{},largestFiles:{},packageInsights:{},packageTypeSummary:{}},emits:[`copyReport`,`selectAction`,`selectFile`,`selectPackage`],setup(e,{expose:t,emit:n}){t();let r=e,i=n,{copyReleaseGateReport:a,gateCopyStatus:o,getToneClassName:s,getToneLabel:c,packageOverviewItems:l,releaseGate:u,visibleActions:d,visibleLargestFiles:f}=_a(r),p={props:r,emit:i,copyReleaseGateReport:a,gateCopyStatus:o,getToneClassName:s,getToneLabel:c,packageOverviewItems:l,releaseGate:u,visibleActions:d,visibleLargestFiles:f,get formatBytes(){return R},get formatPackageType(){return z},get surfaceStyles(){return H},AppEmptyState:U,AppPanelHeader:q,DashboardIcon:L,DashboardMetricGrid:Ca,ReleaseGatePanel:Va};return Object.defineProperty(p,"__isScriptSetup",{enumerable:!1,value:!0}),p}}),Ua={class:`grid min-h-0 min-w-0 gap-2 overflow-visible xl:h-full xl:grid-rows-[auto_auto_minmax(0,1fr)] xl:overflow-hidden`},Wa={class:`grid min-h-0 min-w-0 gap-2 overflow-visible xl:grid-cols-[minmax(0,0.95fr)_minmax(0,0.85fr)_minmax(0,0.9fr)] xl:overflow-hidden`},Ga={class:`h-3.5 w-3.5`},Ka={class:`mt-3 min-h-0 flex-1 overflow-hidden`},qa={key:1,class:`grid h-full min-h-0 gap-2 overflow-y-auto pr-1`},Ja=[`onClick`],Ya={class:`grid min-w-0 grid-cols-[minmax(0,1fr)_auto] items-start gap-3`},Xa={class:`min-w-0`},Za={class:`mt-2 line-clamp-2 break-words text-sm font-medium leading-5 text-(--dashboard-text)`},Qa={class:`mt-1 line-clamp-2 break-words text-xs leading-5 text-(--dashboard-text-soft)`},$a={key:0,class:`max-w-28 shrink-0 truncate text-sm font-semibold text-(--dashboard-accent)`},eo={class:`mt-3 grid min-h-0 gap-2 overflow-y-auto pr-1`},to=[`onClick`],no={class:`grid min-w-0 grid-cols-[minmax(0,1fr)_auto] items-start gap-3`},ro={class:`min-w-0`},io={class:`truncate font-mono text-xs font-semibold text-(--dashboard-text)`},ao={class:`mt-1 truncate text-xs text-(--dashboard-text-soft)`},oo={class:`shrink-0 text-right`},so={class:`text-sm font-semibold leading-5 text-(--dashboard-accent)`},co={class:`text-[11px] leading-4 text-(--dashboard-text-soft)`},lo={class:`mt-3 grid min-h-0 gap-2 overflow-y-auto pr-1`},uo=[`onClick`],fo={class:`flex items-start justify-between gap-3`},po={class:`min-w-0`},mo={class:`truncate text-sm font-medium text-(--dashboard-text)`},ho={class:`mt-1 text-xs text-(--dashboard-text-soft)`},go={class:`shrink-0 text-right`},_o={class:`text-sm font-semibold text-(--dashboard-text)`},vo={class:`text-[11px] text-(--dashboard-text-soft)`},yo={class:`mt-2 h-1.5 overflow-hidden rounded-full bg-(--dashboard-accent-soft)`};function bo(e,t,n,r,i,a){return O(),F(`section`,Ua,[P(r.DashboardMetricGrid,{compact:``,cards:n.cards,"package-type-summary":n.packageTypeSummary},null,8,[`cards`,`package-type-summary`]),P(r.ReleaseGatePanel,{gate:r.releaseGate,"copy-status":r.gateCopyStatus,onCopy:r.copyReleaseGateReport},null,8,[`gate`,`copy-status`,`onCopy`]),E(`div`,Wa,[E(`section`,{class:l([r.surfaceStyles({padding:`md`}),`min-h-0 overflow-hidden`])},[P(r.AppPanelHeader,{"icon-name":`metric-health`,title:`处理队列`},{meta:_(()=>[E(`button`,{type:`button`,class:`inline-flex items-center gap-1.5 rounded-full border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-2.5 py-1 text-[11px] text-(--dashboard-text-soft) transition hover:border-(--dashboard-border-strong) hover:text-(--dashboard-text)`,onClick:t[0]||=e=>r.emit(`copyReport`)},[E(`span`,Ga,[P(r.DashboardIcon,{name:`metric-copy`})]),t[1]||=C(` 复制 PR `,-1)])]),_:1}),E(`div`,Ka,[r.visibleActions.length===0?(O(),x(r.AppEmptyState,{key:0,compact:``},{default:_(()=>[...t[2]||=[C(` 当前没有需要立即处理的事项。 `,-1)]]),_:1})):(O(),F(`ol`,qa,[(O(!0),F(j,null,f(r.visibleActions,e=>(O(),F(`li`,{key:e.key,class:`list-none`},[E(`button`,{type:`button`,class:`w-full rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 py-2.5 text-left transition hover:border-(--dashboard-border-strong) hover:bg-(--dashboard-panel)`,onClick:t=>r.emit(`selectAction`,e)},[E(`div`,Ya,[E(`div`,Xa,[E(`span`,{class:l(r.getToneClassName(e.tone))},b(r.getToneLabel(e.tone)),3),E(`p`,Za,b(e.title),1),E(`p`,Qa,b(e.meta),1)]),e.value?(O(),F(`span`,$a,b(e.value),1)):N(``,!0)])],8,Ja)]))),128))]))])],2),E(`section`,{class:l([r.surfaceStyles({padding:`md`}),`min-h-0 overflow-hidden`])},[P(r.AppPanelHeader,{"icon-name":`top-files`,title:`Top Files`}),E(`ol`,eo,[(O(!0),F(j,null,f(r.visibleLargestFiles,e=>(O(),F(`li`,{key:`${e.packageId}:${e.file}`,class:`list-none`},[E(`button`,{type:`button`,class:`w-full rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 py-2.5 text-left transition hover:border-(--dashboard-border-strong) hover:bg-(--dashboard-panel)`,onClick:t=>r.emit(`selectFile`,e)},[E(`div`,no,[E(`div`,ro,[E(`p`,io,b(e.file),1),E(`p`,ao,b(e.packageLabel)+` · `+b(r.formatPackageType(e.packageType))+` · `+b(e.type)+` · `+b(e.moduleCount)+` 模块 `,1)]),E(`div`,oo,[E(`p`,so,b(r.formatBytes(e.size)),1),E(`p`,co,b(r.formatBytes(e.compressedSize)),1)])])],8,to)]))),128))])],2),E(`section`,{class:l([r.surfaceStyles({padding:`md`}),`min-h-0 overflow-hidden`])},[P(r.AppPanelHeader,{"icon-name":`tab-packages`,title:`包体分布`}),E(`ol`,lo,[(O(!0),F(j,null,f(r.packageOverviewItems,e=>(O(),F(`li`,{key:e.id,class:`list-none`},[E(`button`,{type:`button`,class:`w-full rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 py-2.5 text-left transition hover:border-(--dashboard-border-strong) hover:bg-(--dashboard-panel)`,onClick:t=>r.emit(`selectPackage`,e)},[E(`div`,fo,[E(`div`,po,[E(`p`,mo,b(e.label),1),E(`p`,ho,b(e.typeLabel)+` · `+b(e.fileCount)+` 产物 · `+b(e.moduleCount)+` 模块 `,1)]),E(`div`,go,[E(`p`,_o,b(e.sizeLabel),1),E(`p`,vo,b(e.compressedLabel),1)])]),E(`div`,yo,[E(`div`,{class:`h-full rounded-full bg-(--dashboard-accent)`,style:y(e.shareStyle)},null,4)])],8,uo)]))),128))])],2)])])}var xo=I(Ha,[[`render`,bo]]);function So(e){return e===`high`?`高`:e===`medium`?`中`:`低`}function Co(e){let t=e.packages.some(e=>e.packageLabel.includes(`independent`)||e.packageId.includes(`independent`))?`high`:e.packageCount>2?`medium`:`low`,n=t===`high`?.72:t===`medium`?.86:1;return{id:`duplicate:${e.id}`,title:`收敛重复模块 ${e.source}`,detail:`${e.packageCount} 个包复用 · 单份 ${R(e.bytes)} · ${e.advice}`,impactBytes:e.estimatedSavingBytes,effort:t,priority:Math.round(e.estimatedSavingBytes*n+e.packageCount*128),action:t===`high`?`先确认独立分包隔离要求,再评估公共入口。`:`优先抽到共享入口或调整引用边界。`}}function wo(e){let t=e.category===`第三方依赖`?`medium`:`low`,n=t===`medium`?.82:.92;return{id:`increment:${e.key}`,title:`复核增长来源 ${e.label}`,detail:`${e.category} · ${e.packageLabel} · +${R(e.deltaBytes)}`,impactBytes:e.deltaBytes,effort:t,priority:Math.round(e.deltaBytes*n),action:e.advice}}function To(e){let t=e.moduleCount>12?`medium`:`low`;return{id:`file:${e.packageId}:${e.file}`,title:`检查大文件边界 ${e.file}`,detail:`${e.packageLabel} · ${R(e.size)} · ${e.moduleCount} 个模块`,impactBytes:e.size,effort:t,priority:Math.round(e.size*.42+e.moduleCount*96),action:e.isEntry?`确认入口依赖是否可懒加载或拆到分包。`:`检查静态资源和模块聚合边界。`}}function Eo(e){return[`# dashboard 模块优化计划`,``,`计划项:${e.items.length}`,`估算影响:${R(e.totalImpactBytes)}`,`低成本项:${e.quickWinCount}`,``,`| 优先级 | 事项 | 影响 | 成本 | 建议 |`,`| ---: | --- | ---: | --- | --- |`,...e.items.map(e=>`| ${e.priority} | ${e.title.replaceAll(`|`,`\\|`)} | ${R(e.impactBytes)} | ${So(e.effort)} | ${e.action.replaceAll(`|`,`\\|`)} |`),``].join(`
10
- `)}function Do(e){let t=e.duplicateModules.filter(e=>e.estimatedSavingBytes>0).slice(0,8).map(Co),n=e.incrementAttribution.filter(e=>e.deltaBytes>0).slice(0,6).map(wo),r=new Set(e.duplicateModules.flatMap(e=>e.packages.flatMap(e=>e.files.map(t=>`${e.packageId}:${t}`)))),i=e.largestFiles.filter(e=>e.size>0&&!r.has(`${e.packageId}:${e.file}`)).slice(0,4).map(To),a=[...t,...n,...i].sort((e,t)=>t.priority-e.priority||t.impactBytes-e.impactBytes||e.title.localeCompare(t.title)).slice(0,8),o={totalImpactBytes:a.reduce((e,t)=>e+t.impactBytes,0),quickWinCount:a.filter(e=>e.effort===`low`).length,items:a};return{...o,report:Eo(o)}}function Oo(e){return{title:e.source,meta:`${e.packageCount} 个包 · 单份 ${R(e.bytes)} · 可节省 ${R(e.estimatedSavingBytes)} · ${e.advice}`}}function ko(e){return{title:e.sourceCategory,meta:`${e.count} 个模块`,value:R(e.bytes)}}function Ao(e){return{title:e.label,meta:`${e.category} · ${e.packageLabel} · ${e.advice}`,value:`+${R(e.deltaBytes)}`}}function jo(e){return{title:e.category,meta:`${e.count} 项增长`,value:`+${R(e.deltaBytes)}`}}function Mo(e){return{title:e.file,meta:`${e.packageLabel} · ${fe(e.from)} · ${e.moduleCount} 模块`}}function No(e){return e.replaceAll(`|`,`\\|`).replaceAll(`
11
- `,` `)}function Po(e,t){return[...e].sort((e,n)=>t===`packages`?n.packageCount-e.packageCount||n.estimatedSavingBytes-e.estimatedSavingBytes||e.source.localeCompare(n.source):t===`size`?n.bytes-e.bytes||n.packageCount-e.packageCount||e.source.localeCompare(n.source):t===`source`?e.source.localeCompare(n.source):n.estimatedSavingBytes-e.estimatedSavingBytes||n.packageCount-e.packageCount||e.source.localeCompare(n.source))}function Fo(e){let t=v(``),n=v(`all`),r=v(`saving`),{actionStatus:i,setActionStatus:a}=si(),o=D(()=>{let t=new Set;for(let n of e.duplicateModules)t.add(n.sourceType);return[...t].sort((e,t)=>e.localeCompare(t))}),s=D(()=>{let i=t.value.trim().toLowerCase();return Po(e.duplicateModules.filter(e=>n.value!==`all`&&e.sourceType!==n.value?!1:!i||[e.id,e.source,e.sourceType,e.advice,e.packages.map(e=>e.packageLabel).join(` `),e.packages.flatMap(e=>e.files).join(` `)].some(e=>e.toLowerCase().includes(i))),r.value)}),c=D(()=>s.value.map(e=>({key:e.id,packages:e.packages,...Oo(e)}))),l=D(()=>e.moduleSourceSummary.map(e=>({key:`${e.sourceType}:${e.sourceCategory}`,...ko(e)}))),u=D(()=>e.incrementAttribution.slice(0,8).map(e=>({key:e.key,...Ao(e)}))),d=D(()=>e.incrementSummary.slice(0,6).map(e=>({key:e.category,...jo(e)}))),f=D(()=>e.visibleLargestFiles.slice(0,6).map(e=>({key:`${e.packageId}:${e.file}`,...Mo(e)}))),p=D(()=>Do({duplicateModules:e.duplicateModules,incrementAttribution:e.incrementAttribution,largestFiles:e.visibleLargestFiles})),m=D(()=>[`# dashboard 重复模块`,``,`模块数量:${s.value.length} / ${e.duplicateModules.length}`,``,`| 模块 | 来源 | 包数量 | 单份体积 | 可节省 | 建议 | 涉及包 |`,`| --- | --- | ---: | ---: | ---: | --- | --- |`,...s.value.map(e=>[e.source,e.sourceType,String(e.packageCount),R(e.bytes),R(e.estimatedSavingBytes),e.advice,e.packages.map(e=>e.packageLabel).join(`, `)].map(No).join(` | `)).map(e=>`| ${e} |`),``].join(`
12
- `));async function h(){try{await V(m.value),a(`已复制`)}catch{a(`复制失败`)}}function g(){let e=new Blob([`${JSON.stringify(s.value,null,2)}\n`],{type:`application/json`}),t=URL.createObjectURL(e),n=document.createElement(`a`);n.href=t,n.download=`weapp-vite-dashboard-duplicate-modules.json`,n.click(),URL.revokeObjectURL(t),a(`已导出`)}return{actionStatus:i,copyDuplicateModulesReport:h,duplicateModuleItems:c,duplicateQuery:t,duplicateSortMode:r,duplicateSourceFilter:n,duplicateSourceOptions:o,exportDuplicateModulesJson:g,incrementItems:u,incrementSummaryItems:d,largestFileSampleItems:f,moduleOptimizationPlan:p,moduleSourceItems:l}}var Io=r({__name:`AppSummaryValueCard`,props:{title:{},meta:{},value:{},breakTitle:{type:Boolean}},setup(e,{expose:t}){t();let n={};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}}),Lo={class:`rounded-xl border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-3.5`},Ro={class:`flex flex-wrap items-start justify-between gap-3`},zo={class:`min-w-0`},Bo={class:`mt-1 text-xs text-(--dashboard-text-soft)`},Vo={key:0,class:`font-medium text-(--dashboard-accent)`};function Ho(e,t,n,r,i,a){return O(),F(`article`,Lo,[E(`div`,Ro,[E(`div`,zo,[E(`p`,{class:l([`font-medium text-(--dashboard-text)`,n.breakTitle?`break-all`:void 0])},b(n.title),3),E(`p`,Bo,b(n.meta),1)]),n.value?(O(),F(`p`,Vo,b(n.value),1)):N(``,!0)]),m(e.$slots,`default`)])}var Uo=I(Io,[[`render`,Ho]]),Wo=r({__name:`DuplicateModulesToolbar`,props:a({filteredCount:{},totalCount:{},sourceOptions:{},actionStatus:{},disabled:{type:Boolean}},{query:{required:!0},queryModifiers:{},sourceFilter:{required:!0},sourceFilterModifiers:{},sortMode:{required:!0},sortModeModifiers:{}}),emits:a([`copy`,`exportJson`],[`update:query`,`update:sourceFilter`,`update:sortMode`]),setup(e,{expose:t,emit:n}){t();let r=e,i={props:r,emit:n,query:d(e,`query`),sourceFilter:d(e,`sourceFilter`),sortMode:d(e,`sortMode`),sourceFilterOptions:D(()=>[{label:`全部来源`,value:`all`},...r.sourceOptions.map(e=>({label:e,value:e}))]),sortOptions:[{label:`按可节省`,value:`saving`},{label:`按包数量`,value:`packages`},{label:`按单份体积`,value:`size`},{label:`按路径`,value:`source`}],AppSelect:B};return Object.defineProperty(i,"__isScriptSetup",{enumerable:!1,value:!0}),i}}),Go={class:`flex flex-wrap items-center gap-2`},Ko={class:`text-xs font-medium text-(--dashboard-text-soft)`},qo={key:0,class:`text-xs font-medium text-(--dashboard-accent)`},Jo=[`disabled`],Yo=[`disabled`];function Xo(e,t,n,r,i,a){return O(),F(`div`,Go,[E(`span`,Ko,` 匹配 `+b(n.filteredCount)+` / `+b(n.totalCount),1),n.actionStatus?(O(),F(`span`,qo,b(n.actionStatus),1)):N(``,!0),E(`button`,{type:`button`,class:`h-9 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 text-sm text-(--dashboard-text-soft) transition hover:border-(--dashboard-border-strong) hover:text-(--dashboard-accent) focus:border-(--dashboard-border-strong) focus:outline-none disabled:opacity-50`,disabled:n.disabled,onClick:t[0]||=e=>r.emit(`copy`)},` 复制重复模块 `,8,Jo),E(`button`,{type:`button`,class:`h-9 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 text-sm text-(--dashboard-text-soft) transition hover:border-(--dashboard-border-strong) hover:text-(--dashboard-accent) focus:border-(--dashboard-border-strong) focus:outline-none disabled:opacity-50`,disabled:n.disabled,onClick:t[1]||=e=>r.emit(`exportJson`)},` 导出 JSON `,8,Yo),s(E(`input`,{"onUpdate:modelValue":t[2]||=e=>r.query=e,class:`h-9 w-56 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 text-sm text-(--dashboard-text) outline-none transition placeholder:text-(--dashboard-text-soft) focus:border-(--dashboard-accent)`,placeholder:`搜索模块、包或文件`,type:`search`},null,512),[[M,r.query]]),P(r.AppSelect,{modelValue:r.sourceFilter,"onUpdate:modelValue":t[3]||=e=>r.sourceFilter=e,class:`w-28`,label:`筛选重复模块来源`,options:r.sourceFilterOptions},null,8,[`modelValue`,`options`]),P(r.AppSelect,{modelValue:r.sortMode,"onUpdate:modelValue":t[4]||=e=>r.sortMode=e,class:`w-30`,label:`排序重复模块`,options:r.sortOptions},null,8,[`modelValue`])])}var Zo=I(Wo,[[`render`,Xo]]),Qo=r({__name:`ModuleInsightsSidebar`,props:{incrementItems:{},incrementSummaryItems:{},moduleSourceItems:{},largestFileSampleItems:{},optimizationPlan:{}},setup(e,{expose:t}){t();let n=e,r=v(``),i=null;function a(e){return e===`high`?`高成本`:e===`medium`?`中成本`:`低成本`}function o(e){return e===`high`?`border-rose-200 bg-rose-50 text-rose-700 dark:border-rose-500/25 dark:bg-rose-500/10 dark:text-rose-300`:e===`medium`?`border-amber-200 bg-amber-50 text-amber-700 dark:border-amber-500/25 dark:bg-amber-500/10 dark:text-amber-300`:`border-emerald-200 bg-emerald-50 text-emerald-700 dark:border-emerald-500/25 dark:bg-emerald-500/10 dark:text-emerald-300`}function s(e){r.value=e,i&&clearTimeout(i),i=setTimeout(()=>{r.value=``,i=null},1800)}async function c(){try{await V(n.optimizationPlan.report),s(`计划已复制`)}catch{s(`复制失败`)}}k(()=>{i&&clearTimeout(i)});let l={props:n,optimizationPlanStatus:r,get optimizationPlanStatusTimer(){return i},set optimizationPlanStatusTimer(e){i=e},getEffortLabel:a,getEffortClassName:o,setOptimizationPlanStatus:s,copyOptimizationPlan:c,get formatBytes(){return R},get surfaceStyles(){return H},AppCompactListItem:Xt,AppEmptyState:U,AppMetricTile:W,AppPanelHeader:q,AppSummaryValueCard:Uo};return Object.defineProperty(l,"__isScriptSetup",{enumerable:!1,value:!0}),l}}),$o={class:`grid min-h-0 min-w-0 content-start gap-3 overflow-visible`},es={class:`flex items-center gap-2`},ts={key:0,class:`text-xs font-medium text-(--dashboard-accent)`},ns=[`disabled`],rs={class:`mt-3 grid gap-2 sm:grid-cols-3`},is={key:0,class:`mt-3 grid max-h-54 gap-2 overflow-y-auto pr-1`},as={class:`flex items-start justify-between gap-3`},os={class:`min-w-0 text-sm font-medium text-(--dashboard-text)`},ss={class:`mt-1 line-clamp-2 text-xs leading-5 text-(--dashboard-text-muted)`},cs={class:`mt-2 text-xs text-(--dashboard-text-soft)`},ls={key:0,class:`mt-4 grid min-h-0 min-w-0 gap-3 overflow-visible`},us={class:`grid max-h-80 gap-2 overflow-y-auto pr-1 sm:grid-cols-2`},ds={class:`max-h-80 space-y-2 overflow-y-auto pr-1 text-sm text-(--dashboard-text-muted)`},fs={class:`mt-4 grid min-h-0 min-w-0 gap-3 overflow-visible`},ps={class:`grid max-h-80 gap-2.5 overflow-y-auto pr-1 sm:grid-cols-2`},ms={class:`max-h-80 space-y-2.5 overflow-y-auto pr-1 text-sm text-(--dashboard-text-muted)`};function hs(e,t,n,r,i,a){return O(),F(`div`,$o,[E(`section`,{class:l([r.surfaceStyles({padding:`md`}),`min-w-0 overflow-hidden`])},[P(r.AppPanelHeader,{"icon-name":`metric-quality`,title:`优化计划`},{meta:_(()=>[E(`div`,es,[r.optimizationPlanStatus?(O(),F(`span`,ts,b(r.optimizationPlanStatus),1)):N(``,!0),E(`button`,{type:`button`,class:`h-8 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 text-xs text-(--dashboard-text-soft) transition hover:border-(--dashboard-border-strong) hover:text-(--dashboard-accent) disabled:opacity-50`,disabled:n.optimizationPlan.items.length===0,onClick:r.copyOptimizationPlan},` 复制计划 `,8,ns)])]),_:1}),E(`div`,rs,[P(r.AppMetricTile,{label:`计划项`,value:n.optimizationPlan.items.length},null,8,[`value`]),P(r.AppMetricTile,{label:`估算影响`,value:r.formatBytes(n.optimizationPlan.totalImpactBytes)},null,8,[`value`]),P(r.AppMetricTile,{label:`低成本项`,value:n.optimizationPlan.quickWinCount},null,8,[`value`])]),n.optimizationPlan.items.length?(O(),F(`div`,is,[(O(!0),F(j,null,f(n.optimizationPlan.items,e=>(O(),F(`article`,{key:e.id,class:`rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-3`},[E(`div`,as,[E(`p`,os,b(e.title),1),E(`span`,{class:l([`shrink-0 rounded-full border px-2 py-0.5 text-[11px]`,r.getEffortClassName(e.effort)])},b(r.getEffortLabel(e.effort)),3)]),E(`p`,ss,b(e.detail),1),E(`p`,cs,b(e.action)+` · 影响 `+b(r.formatBytes(e.impactBytes)),1)]))),128))])):(O(),x(r.AppEmptyState,{key:1,class:`mt-3`},{default:_(()=>[...t[0]||=[C(` 当前没有需要生成的模块优化计划。 `,-1)]]),_:1}))],2),E(`section`,{class:l([r.surfaceStyles({padding:`md`}),`min-h-0 min-w-0 overflow-hidden`])},[P(r.AppPanelHeader,{"icon-name":`metric-time`,title:`增量归因`}),n.incrementItems.length?(O(),F(`div`,ls,[E(`div`,us,[(O(!0),F(j,null,f(n.incrementSummaryItems,e=>(O(),x(r.AppSummaryValueCard,{key:e.key,meta:e.meta,title:e.title,value:e.value},null,8,[`meta`,`title`,`value`]))),128))]),E(`ul`,ds,[(O(!0),F(j,null,f(n.incrementItems,e=>(O(),x(r.AppCompactListItem,{key:e.key,meta:e.meta,"mono-title":``,title:e.title,value:e.value},null,8,[`meta`,`title`,`value`]))),128))])])):(O(),x(r.AppEmptyState,{key:1,class:`mt-4`},{default:_(()=>[...t[1]||=[C(` 暂无可对比的正向增量。 `,-1)]]),_:1}))],2),E(`section`,{class:l([r.surfaceStyles({padding:`md`}),`min-h-0 min-w-0 overflow-hidden`])},[P(r.AppPanelHeader,{"icon-name":`module-sources`,title:`模块来源`}),E(`div`,fs,[E(`div`,ps,[(O(!0),F(j,null,f(n.moduleSourceItems,e=>(O(),x(r.AppSummaryValueCard,{key:e.key,meta:e.meta,title:e.title,value:e.value},null,8,[`meta`,`title`,`value`]))),128))]),E(`ul`,ms,[(O(!0),F(j,null,f(n.largestFileSampleItems,e=>(O(),x(r.AppCompactListItem,{key:e.key,meta:e.meta,"mono-title":``,title:e.title,value:e.value},null,8,[`meta`,`title`,`value`]))),128))])])],2)])}var gs=I(Qo,[[`render`,hs]]),_s=r({__name:`ModulesPanel`,props:{duplicateModules:{},moduleSourceSummary:{},incrementAttribution:{},incrementSummary:{},visibleLargestFiles:{}},setup(e,{expose:t}){t();let n=e,{actionStatus:r,copyDuplicateModulesReport:i,duplicateModuleItems:a,duplicateQuery:o,duplicateSortMode:s,duplicateSourceFilter:c,duplicateSourceOptions:l,exportDuplicateModulesJson:u,incrementItems:d,incrementSummaryItems:f,largestFileSampleItems:p,moduleOptimizationPlan:m,moduleSourceItems:h}=Fo(n),g={props:n,actionStatus:r,copyDuplicateModulesReport:i,duplicateModuleItems:a,duplicateQuery:o,duplicateSortMode:s,duplicateSourceFilter:c,duplicateSourceOptions:l,exportDuplicateModulesJson:u,incrementItems:d,incrementSummaryItems:f,largestFileSampleItems:p,moduleOptimizationPlan:m,moduleSourceItems:h,get surfaceStyles(){return H},AppEmptyState:U,AppPanelHeader:q,AppSummaryValueCard:Uo,DuplicateModulesToolbar:Zo,ModuleInsightsSidebar:gs};return Object.defineProperty(g,"__isScriptSetup",{enumerable:!1,value:!0}),g}}),vs={class:`flex flex-wrap items-start justify-between gap-3`},ys={key:0,class:`mt-4 max-h-96 space-y-2.5 overflow-y-auto pr-1 xl:max-h-[calc(100%-5.75rem)]`},bs={class:`mt-3 space-y-1.5 text-xs text-(--dashboard-text-muted)`},xs={class:`font-medium text-(--dashboard-text)`};function Ss(e,t,n,r,i,a){return O(),F(`section`,{class:l([`grid min-h-0 min-w-0 items-start gap-3 overflow-visible`,n.duplicateModules.length?`xl:grid-cols-[minmax(0,1.24fr)_minmax(0,0.76fr)]`:`xl:grid-cols-[minmax(20rem,0.72fr)_minmax(0,1.28fr)]`])},[E(`div`,{class:l([r.surfaceStyles({padding:`md`}),`min-h-0 min-w-0 overflow-hidden`])},[E(`div`,vs,[P(r.AppPanelHeader,{"icon-name":`duplicate-modules`,title:`重复模块`,description:`${n.duplicateModules.length} 个重复模块样本`},null,8,[`description`]),P(r.DuplicateModulesToolbar,{query:r.duplicateQuery,"onUpdate:query":t[0]||=e=>r.duplicateQuery=e,"sort-mode":r.duplicateSortMode,"onUpdate:sortMode":t[1]||=e=>r.duplicateSortMode=e,"source-filter":r.duplicateSourceFilter,"onUpdate:sourceFilter":t[2]||=e=>r.duplicateSourceFilter=e,"action-status":r.actionStatus,disabled:r.duplicateModuleItems.length===0,"filtered-count":r.duplicateModuleItems.length,"source-options":r.duplicateSourceOptions,"total-count":n.duplicateModules.length,onCopy:r.copyDuplicateModulesReport,onExportJson:r.exportDuplicateModulesJson},null,8,[`query`,`sort-mode`,`source-filter`,`action-status`,`disabled`,`filtered-count`,`source-options`,`total-count`,`onCopy`,`onExportJson`])]),r.duplicateModuleItems.length?(O(),F(`div`,ys,[(O(!0),F(j,null,f(r.duplicateModuleItems,e=>(O(),x(r.AppSummaryValueCard,{key:e.key,"break-title":``,meta:e.meta,title:e.title,value:e.value},{default:_(()=>[E(`ul`,bs,[(O(!0),F(j,null,f(e.packages,n=>(O(),F(`li`,{key:`${e.key}:${n.packageId}`},[E(`span`,xs,b(n.packageLabel),1),t[3]||=E(`span`,{class:`text-(--dashboard-text-soft)`},` · `,-1),E(`span`,null,b(n.files.join(`、`)),1)]))),128))])]),_:2},1032,[`meta`,`title`,`value`]))),128))])):(O(),x(r.AppEmptyState,{key:1,class:`mt-4`},{default:_(()=>[...t[4]||=[C(` 当前构建未检测到跨包重复模块。 `,-1)]]),_:1}))],2),P(r.ModuleInsightsSidebar,{"increment-items":r.incrementItems,"increment-summary-items":r.incrementSummaryItems,"largest-file-sample-items":r.largestFileSampleItems,"module-source-items":r.moduleSourceItems,"optimization-plan":r.moduleOptimizationPlan},null,8,[`increment-items`,`increment-summary-items`,`largest-file-sample-items`,`module-source-items`,`optimization-plan`])],2)}var Cs=I(_s,[[`render`,Ss]]);function ws(e){return Math.max(0,Math.min(100,Math.round(e)))}function Ts(e){if(typeof e.sizeDeltaBytes!=`number`||e.sizeDeltaBytes<=0||e.totalBytes<=0)return 0;let t=e.sizeDeltaBytes/e.totalBytes;return Math.min(18,t*80)}function Es(e){return e?e.status===`critical`?32:18:0}function Ds(e){return e.moduleCount<=0||e.duplicateModuleCount<=0?0:Math.min(18,e.duplicateModuleCount/e.moduleCount*60)}function Os(e){return Math.min(10,Math.max(0,e.entryFileCount-1)*3)}function ks(e){return e<70?`risk`:e<86?`watch`:`good`}function As(e){return e===`risk`?`高风险`:e===`watch`?`需关注`:`健康`}function js(e,t){return t?.status===`critical`?`预算超限 ${(t.ratio*100).toFixed(1)}%`:t?.status===`warning`?`接近预算 ${(t.ratio*100).toFixed(1)}%`:typeof e.sizeDeltaBytes==`number`&&e.sizeDeltaBytes>0?`较上次增长 ${R(e.sizeDeltaBytes)}`:e.duplicateModuleCount>0?`${e.duplicateModuleCount} 个重复模块`:`未发现主要风险`}function Ms(e,t){let n=ws(100-Es(t)-Ts(e)-Ds(e)-Os(e)),r=ks(n);return{id:e.id,label:e.label,score:n,status:r,statusLabel:As(r),detail:`${e.fileCount} 个产物 · ${e.moduleCount} 个模块 · ${R(e.totalBytes)}`,primaryRisk:js(e,t),metrics:[{label:`体积`,value:R(e.totalBytes)},{label:`重复模块`,value:e.duplicateModuleCount},{label:`Entry`,value:e.entryFileCount},{label:`较上次`,value:typeof e.sizeDeltaBytes==`number`?`${e.sizeDeltaBytes>=0?`+`:`-`}${R(Math.abs(e.sizeDeltaBytes))}`:`—`}]}}function Ns(e){let t=new Map(e.budgetWarnings.map(e=>[e.id,e])),n=e.packageInsights.map(e=>Ms(e,t.get(e.id))).sort((e,t)=>e.score-t.score||e.label.localeCompare(t.label)),r=n.reduce((e,t)=>e+t.score,0);return{averageScore:n.length>0?ws(r/n.length):100,riskCount:n.filter(e=>e.status===`risk`).length,watchCount:n.filter(e=>e.status===`watch`).length,healthiestPackage:[...n].sort((e,t)=>t.score-e.score||e.label.localeCompare(t.label))[0],weakestPackage:n[0],items:n}}function Ps(e){return typeof e!=`number`||Number.isNaN(e)||e===0?`—`:`${e>0?`+`:`-`}${R(Math.abs(e))}`}function Fs(e){return[{label:`Chunks`,value:e.chunkCount},{label:`Assets`,value:e.assetCount},{label:`压缩后`,value:R(e.compressedBytes)},{label:`较上次`,value:Ps(e.sizeDeltaBytes)}]}function Is(e){return e.replaceAll(`|`,`\\|`).replaceAll(`
13
- `,` `)}function Ls(e,t){return[`# dashboard 包体探索`,``,`包数量:${e.length} / ${t}`,``,`| 包 | 类型 | 总体积 | 压缩后 | 较上次 | 预算 | 产物 | 模块 | 重复模块 |`,`| --- | --- | ---: | ---: | ---: | --- | ---: | ---: | ---: |`,...e.map(e=>[e.label,e.typeLabel,e.totalBytesLabel,e.compressedBytesLabel,e.deltaText,e.budgetText,String(e.fileCount),String(e.moduleCount),String(e.duplicateModuleCount)].map(Is).join(` | `)).map(e=>`| ${e} |`),``].join(`
14
- `)}function Rs(e,t){return[...e].sort((e,n)=>t===`compressed`?n.compressedBytes-e.compressedBytes||e.label.localeCompare(n.label):t===`delta`?(n.sizeDeltaBytes??-1/0)-(e.sizeDeltaBytes??-1/0)||e.label.localeCompare(n.label):t===`duplicates`?n.duplicateModuleCount-e.duplicateModuleCount||n.totalBytes-e.totalBytes||e.label.localeCompare(n.label):t===`files`?n.fileCount-e.fileCount||n.totalBytes-e.totalBytes||e.label.localeCompare(n.label):t===`name`?e.label.localeCompare(n.label):t===`health`?e.healthScore-n.healthScore||n.totalBytes-e.totalBytes||e.label.localeCompare(n.label):n.totalBytes-e.totalBytes||e.label.localeCompare(n.label))}function zs(e){let t=v(``),n=v(`all`),r=v(`all`),i=v(`size`),{actionStatus:a,setActionStatus:o}=si(),s=D(()=>new Map(e.budgetWarnings.map(e=>[e.id,e]))),c=D(()=>Ns({packageInsights:e.packageInsights,budgetWarnings:e.budgetWarnings})),l=D(()=>new Map(c.value.items.map(e=>[e.id,e.score]))),u=D(()=>{let t=new Set;for(let n of e.packageInsights)t.add(n.type);return[...t].sort((e,t)=>z(e).localeCompare(z(t)))}),d=D(()=>e.packageInsights.map(t=>{let n=z(t.type),r=s.value.get(t.id),i=e.selectedTreemapMeta?.packageLabel===t.label;return{...t,typeLabel:n,summaryText:`${n} · ${t.fileCount} 个产物 · ${t.moduleCount} 个模块 · 跨包 ${t.duplicateModuleCount}`,totalBytesLabel:R(t.totalBytes),compressedBytesLabel:`${t.compressedSizeSource===`real`?`Brotli`:`估算`} ${R(t.compressedBytes)}`,deltaText:Ps(t.sizeDeltaBytes),budgetText:r?`${r.status===`critical`?`超预算`:`接近预算`} ${(r.ratio*100).toFixed(1)}%`:`预算正常`,selected:i,entryCountText:`${t.entryFileCount} 个 entry`,healthScore:l.value.get(t.id)??100,metrics:Fs(t)}})),f=D(()=>{let e=t.value.trim().toLowerCase();return Rs(d.value.filter(t=>{if(n.value!==`all`&&t.type!==n.value)return!1;let i=s.value.has(t.id);return r.value===`warning`&&!i||r.value===`normal`&&i?!1:!e||[t.id,t.label,t.type,t.typeLabel,t.summaryText].some(t=>t.toLowerCase().includes(e))}),i.value)}),p=D(()=>Ls(f.value,d.value.length));async function m(){try{await V(p.value),o(`已复制`)}catch{o(`复制失败`)}}function h(){let e=new Blob([`${JSON.stringify(f.value,null,2)}\n`],{type:`application/json`}),t=URL.createObjectURL(e),n=document.createElement(`a`);n.href=t,n.download=`weapp-vite-dashboard-packages.json`,n.click(),URL.revokeObjectURL(t),o(`已导出`)}return{actionStatus:a,copyPackageReport:m,exportPackageJson:h,filteredPackageInsightCards:f,packageBudgetFilter:r,packageHealth:c,packageInsightCards:d,packageQuery:t,packageSortMode:i,packageTypeFilter:n,packageTypeOptions:u}}var Bs=r({__name:`AppPackageFileTable`,props:{files:{}},setup(e,{expose:t}){t();let n=e;function r(e){let t=typeof e.sizeDeltaBytes==`number`&&e.sizeDeltaBytes!==0?`${e.sizeDeltaBytes>0?`+`:`-`}${R(Math.abs(e.sizeDeltaBytes))}`:`—`;return{file:e.file,type:e.type,fromLabel:fe(e.from),sizeLabel:R(e.size),compressedLabel:R(e.compressedSize),deltaLabel:t}}let i={props:n,createPackageFileRow:r,fileRows:D(()=>n.files.map(e=>r(e)))};return Object.defineProperty(i,"__isScriptSetup",{enumerable:!1,value:!0}),i}}),Vs={class:`max-w-full overflow-x-auto rounded-xl border border-(--dashboard-border)`},Hs={class:`min-w-[48rem] divide-y divide-(--dashboard-border) text-left text-sm`},Us={class:`divide-y divide-(--dashboard-border) text-(--dashboard-text-muted)`},Ws={class:`px-3 py-2 font-mono text-xs text-(--dashboard-text)`},Gs={class:`px-3 py-2`},Ks={class:`px-3 py-2`},qs={class:`px-3 py-2 font-medium text-(--dashboard-text)`},Js={class:`px-3 py-2 font-medium text-(--dashboard-text)`};function Ys(e,t,n,r,i,a){return O(),F(`div`,Vs,[E(`table`,Hs,[t[0]||=E(`thead`,{class:`bg-(--dashboard-panel-muted) text-(--dashboard-text-soft)`},[E(`tr`,null,[E(`th`,{class:`px-3 py-2 text-[11px] font-medium uppercase tracking-[0.18em]`},` 文件 `),E(`th`,{class:`px-3 py-2 text-[11px] font-medium uppercase tracking-[0.18em]`},` 类型 `),E(`th`,{class:`px-3 py-2 text-[11px] font-medium uppercase tracking-[0.18em]`},` 来源 `),E(`th`,{class:`px-3 py-2 text-[11px] font-medium uppercase tracking-[0.18em]`},` 体积 / 压缩 `),E(`th`,{class:`px-3 py-2 text-[11px] font-medium uppercase tracking-[0.18em]`},` 较上次 `)])],-1),E(`tbody`,Us,[(O(!0),F(j,null,f(r.fileRows,e=>(O(),F(`tr`,{key:e.file},[E(`td`,Ws,b(e.file),1),E(`td`,Gs,b(e.type),1),E(`td`,Ks,b(e.fromLabel),1),E(`td`,qs,b(e.sizeLabel)+` / `+b(e.compressedLabel),1),E(`td`,Js,b(e.deltaLabel),1)]))),128))])])])}var Xs=I(Bs,[[`render`,Ys]]),Zs=r({__name:`PackageExplorerToolbar`,props:a({filteredCount:{},totalCount:{},typeOptions:{},actionStatus:{},disabled:{type:Boolean}},{query:{required:!0},queryModifiers:{},typeFilter:{required:!0},typeFilterModifiers:{},budgetFilter:{required:!0},budgetFilterModifiers:{},sortMode:{required:!0},sortModeModifiers:{}}),emits:a([`copy`,`exportJson`],[`update:query`,`update:typeFilter`,`update:budgetFilter`,`update:sortMode`]),setup(e,{expose:t,emit:n}){t();let r=e,i={props:r,emit:n,query:d(e,`query`),typeFilter:d(e,`typeFilter`),budgetFilter:d(e,`budgetFilter`),sortMode:d(e,`sortMode`),typeFilterOptions:D(()=>[{label:`全部类型`,value:`all`},...r.typeOptions.map(e=>({label:z(e),value:e}))]),budgetFilterOptions:[{label:`全部预算`,value:`all`},{label:`仅告警`,value:`warning`},{label:`预算正常`,value:`normal`}],sortOptions:[{label:`按健康分`,value:`health`},{label:`按体积`,value:`size`},{label:`按压缩后`,value:`compressed`},{label:`按增量`,value:`delta`},{label:`按重复模块`,value:`duplicates`},{label:`按产物数`,value:`files`},{label:`按名称`,value:`name`}],AppSelect:B};return Object.defineProperty(i,"__isScriptSetup",{enumerable:!1,value:!0}),i}}),Qs={class:`flex flex-wrap items-center justify-between gap-3`},$s={class:`text-xs font-medium text-(--dashboard-text-soft)`},ec={key:0,class:`mt-1 text-xs font-medium text-(--dashboard-accent)`},tc={class:`flex flex-wrap items-center gap-2`},nc=[`disabled`],rc=[`disabled`];function ic(e,t,n,r,i,a){return O(),F(`div`,Qs,[E(`div`,null,[E(`p`,$s,` 匹配 `+b(n.filteredCount)+` / `+b(n.totalCount)+` 个包 `,1),n.actionStatus?(O(),F(`p`,ec,b(n.actionStatus),1)):N(``,!0)]),E(`div`,tc,[E(`button`,{type:`button`,class:`h-9 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 text-sm text-(--dashboard-text-soft) transition hover:border-(--dashboard-border-strong) hover:text-(--dashboard-accent) focus:border-(--dashboard-border-strong) focus:outline-none disabled:opacity-50`,disabled:n.disabled,onClick:t[0]||=e=>r.emit(`copy`)},` 复制包体 `,8,nc),E(`button`,{type:`button`,class:`h-9 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 text-sm text-(--dashboard-text-soft) transition hover:border-(--dashboard-border-strong) hover:text-(--dashboard-accent) focus:border-(--dashboard-border-strong) focus:outline-none disabled:opacity-50`,disabled:n.disabled,onClick:t[1]||=e=>r.emit(`exportJson`)},` 导出 JSON `,8,rc),s(E(`input`,{"onUpdate:modelValue":t[2]||=e=>r.query=e,class:`h-9 w-56 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 text-sm text-(--dashboard-text) outline-none transition placeholder:text-(--dashboard-text-soft) focus:border-(--dashboard-accent)`,placeholder:`搜索包名或类型`,type:`search`},null,512),[[M,r.query]]),P(r.AppSelect,{modelValue:r.typeFilter,"onUpdate:modelValue":t[3]||=e=>r.typeFilter=e,class:`w-28`,label:`筛选包类型`,options:r.typeFilterOptions},null,8,[`modelValue`,`options`]),P(r.AppSelect,{modelValue:r.budgetFilter,"onUpdate:modelValue":t[4]||=e=>r.budgetFilter=e,class:`w-28`,label:`筛选包预算状态`,options:r.budgetFilterOptions},null,8,[`modelValue`]),P(r.AppSelect,{modelValue:r.sortMode,"onUpdate:modelValue":t[5]||=e=>r.sortMode=e,class:`w-32`,label:`排序包`,options:r.sortOptions},null,8,[`modelValue`])])])}var ac=I(Zs,[[`render`,ic]]),oc=r({__name:`PackageHealthPanel`,props:{health:{}},setup(e,{expose:t}){t();function n(e){return e===`risk`?`border-rose-200 bg-rose-50 text-rose-700 dark:border-rose-500/25 dark:bg-rose-500/10 dark:text-rose-300`:e===`watch`?`border-amber-200 bg-amber-50 text-amber-700 dark:border-amber-500/25 dark:bg-amber-500/10 dark:text-amber-300`:`border-emerald-200 bg-emerald-50 text-emerald-700 dark:border-emerald-500/25 dark:bg-emerald-500/10 dark:text-emerald-300`}let r={getStatusClassName:n,AppMetricTile:W,AppPanelHeader:q};return Object.defineProperty(r,"__isScriptSetup",{enumerable:!1,value:!0}),r}}),sc={class:`rounded-lg border border-(--dashboard-border) bg-(--dashboard-panel) p-4 shadow-(--dashboard-shadow)`},cc={class:`mt-3 grid gap-3 xl:grid-cols-[minmax(0,0.45fr)_minmax(0,1fr)]`},lc={class:`grid gap-2 sm:grid-cols-3`},uc={class:`grid gap-2 md:grid-cols-2 xl:grid-cols-3`},dc={class:`flex items-start justify-between gap-3`},fc={class:`min-w-0`},pc={class:`truncate text-sm font-semibold text-(--dashboard-text)`},mc={class:`mt-1 text-xs leading-5 text-(--dashboard-text-soft)`},hc={class:`mt-3 flex items-end justify-between gap-3`},gc={class:`text-3xl font-semibold text-(--dashboard-accent)`},_c={class:`line-clamp-2 text-right text-xs leading-5 text-(--dashboard-text-muted)`};function vc(e,t,n,r,i,a){return O(),F(`section`,sc,[P(r.AppPanelHeader,{"icon-name":`metric-health`,title:`包体健康`,description:n.health.weakestPackage?`优先关注 ${n.health.weakestPackage.label}`:`当前没有包体样本`},null,8,[`description`]),E(`div`,cc,[E(`div`,lc,[P(r.AppMetricTile,{label:`平均分`,value:n.health.averageScore},null,8,[`value`]),P(r.AppMetricTile,{label:`高风险`,value:n.health.riskCount},null,8,[`value`]),P(r.AppMetricTile,{label:`需关注`,value:n.health.watchCount},null,8,[`value`])]),E(`div`,uc,[(O(!0),F(j,null,f(n.health.items.slice(0,3),e=>(O(),F(`article`,{key:e.id,class:`rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-3`},[E(`div`,dc,[E(`div`,fc,[E(`p`,pc,b(e.label),1),E(`p`,mc,b(e.detail),1)]),E(`span`,{class:l([`shrink-0 rounded-full border px-2 py-0.5 text-[11px]`,r.getStatusClassName(e.status)])},b(e.statusLabel),3)]),E(`div`,hc,[E(`p`,gc,b(e.score),1),E(`p`,_c,b(e.primaryRisk),1)])]))),128))])])])}var yc=I(oc,[[`render`,vc]]),bc=r({__name:`PackagesPanel`,props:{packageInsights:{},budgetWarnings:{},selectedTreemapMeta:{}},setup(e,{expose:t}){t();let n=e,{actionStatus:r,copyPackageReport:i,exportPackageJson:a,filteredPackageInsightCards:o,packageBudgetFilter:s,packageHealth:c,packageInsightCards:l,packageQuery:u,packageSortMode:d,packageTypeFilter:f,packageTypeOptions:p}=zs(n),m={props:n,actionStatus:r,copyPackageReport:i,exportPackageJson:a,filteredPackageInsightCards:o,packageBudgetFilter:s,packageHealth:c,packageInsightCards:l,packageQuery:u,packageSortMode:d,packageTypeFilter:f,packageTypeOptions:p,get surfaceStyles(){return H},AppEmptyState:U,AppMetricTile:W,AppPackageFileTable:Xs,AppPanelHeader:q,PackageExplorerToolbar:ac,PackageHealthPanel:yc};return Object.defineProperty(m,"__isScriptSetup",{enumerable:!1,value:!0}),m}}),xc={class:`grid min-h-0 min-w-0 gap-3 overflow-visible xl:h-full xl:grid-rows-[auto_minmax(0,1fr)] xl:overflow-hidden`},Sc={class:`grid min-w-0 gap-3`},Cc={class:`grid max-h-[48rem] min-h-0 min-w-0 auto-rows-max gap-3 overflow-y-auto pr-1 xl:max-h-none xl:grid-cols-2`},wc={class:`flex flex-wrap items-start justify-between gap-4`},Tc={class:`min-w-0`},Ec={class:`mt-2 text-sm text-(--dashboard-text-soft)`},Dc={class:`max-w-[45%] shrink-0 text-right`},Oc={class:`text-xl font-semibold text-(--dashboard-text)`},kc={class:`text-xs text-(--dashboard-text-soft)`},Ac={class:`mt-1 text-xs text-(--dashboard-accent)`},jc={class:`mt-4 grid grid-cols-2 gap-2 text-sm md:grid-cols-4`},Mc={class:`mt-4`};function Nc(e,t,n,r,a,o){return O(),F(`section`,xc,[E(`div`,Sc,[P(r.PackageHealthPanel,{health:r.packageHealth},null,8,[`health`]),E(`div`,{class:l([r.surfaceStyles({padding:`md`}),`grid gap-3`])},[P(r.AppPanelHeader,{"icon-name":`tab-packages`,title:`包体探索`,description:`${r.packageInsightCards.length} 个包体样本`},null,8,[`description`]),P(r.PackageExplorerToolbar,{"budget-filter":r.packageBudgetFilter,"onUpdate:budgetFilter":t[0]||=e=>r.packageBudgetFilter=e,query:r.packageQuery,"onUpdate:query":t[1]||=e=>r.packageQuery=e,"sort-mode":r.packageSortMode,"onUpdate:sortMode":t[2]||=e=>r.packageSortMode=e,"type-filter":r.packageTypeFilter,"onUpdate:typeFilter":t[3]||=e=>r.packageTypeFilter=e,"action-status":r.actionStatus,disabled:r.filteredPackageInsightCards.length===0,"filtered-count":r.filteredPackageInsightCards.length,"total-count":r.packageInsightCards.length,"type-options":r.packageTypeOptions,onCopy:r.copyPackageReport,onExportJson:r.exportPackageJson},null,8,[`budget-filter`,`query`,`sort-mode`,`type-filter`,`action-status`,`disabled`,`filtered-count`,`total-count`,`type-options`,`onCopy`,`onExportJson`])],2)]),E(`div`,Cc,[r.filteredPackageInsightCards.length===0?(O(),x(r.AppEmptyState,{key:0,class:`xl:col-span-2`},{default:_(()=>[...t[4]||=[C(` 没有匹配当前筛选条件的包。 `,-1)]]),_:1})):N(``,!0),(O(!0),F(j,null,f(r.filteredPackageInsightCards,e=>(O(),F(`article`,{key:e.id,class:l([[r.surfaceStyles({padding:`md`}),e.selected?`border-(--dashboard-accent)`:``],`min-w-0 max-w-full border transition`])},[E(`div`,wc,[E(`div`,Tc,[P(r.AppPanelHeader,{"icon-name":`tab-packages`,title:e.label,description:e.typeLabel},null,8,[`title`,`description`]),E(`p`,Ec,b(e.summaryText),1)]),E(`div`,Dc,[E(`p`,Oc,b(e.totalBytesLabel),1),E(`p`,kc,b(e.compressedBytesLabel),1),E(`p`,Ac,b(e.budgetText),1)])]),E(`div`,jc,[(O(!0),F(j,null,f(e.metrics,e=>(O(),x(r.AppMetricTile,i({key:e.label},{ref_for:!0},e),null,16))),128))]),E(`div`,Mc,[P(r.AppPackageFileTable,{files:e.topFiles},null,8,[`files`])])],2))),128))])])}var Pc=I(bc,[[`render`,Nc]]),Fc=r({__name:`PrReviewChecklistPanel`,props:{checklist:{},copyStatus:{}},emits:[`copy`,`select`],setup(e,{expose:t,emit:n}){t();let r=n;function i(e){return e===`blocked`?`border-rose-200 bg-rose-100 text-rose-700 dark:border-rose-500/30 dark:bg-rose-500/12 dark:text-rose-300`:e===`review`?`border-amber-200 bg-amber-100 text-amber-700 dark:border-amber-500/30 dark:bg-amber-500/12 dark:text-amber-300`:`border-emerald-200 bg-emerald-100 text-emerald-700 dark:border-emerald-500/30 dark:bg-emerald-500/12 dark:text-emerald-300`}function a(e){return e===`critical`?`border-rose-200 bg-rose-50 text-rose-700 dark:border-rose-500/25 dark:bg-rose-500/10 dark:text-rose-300`:e===`warning`?`border-amber-200 bg-amber-50 text-amber-700 dark:border-amber-500/25 dark:bg-amber-500/10 dark:text-amber-300`:e===`success`?`border-emerald-200 bg-emerald-50 text-emerald-700 dark:border-emerald-500/25 dark:bg-emerald-500/10 dark:text-emerald-300`:`border-(--dashboard-border) bg-(--dashboard-panel-muted) text-(--dashboard-text-muted)`}let o={emit:r,getStatusClassName:i,getToneClassName:a,AppMetricTile:W,AppPanelHeader:q,DashboardIcon:L};return Object.defineProperty(o,"__isScriptSetup",{enumerable:!1,value:!0}),o}}),Ic={class:`grid min-h-0 min-w-0 gap-2 overflow-visible xl:h-full xl:grid-rows-[auto_minmax(0,1fr)] xl:overflow-hidden`},Lc={class:`rounded-lg border border-(--dashboard-border) bg-(--dashboard-panel) p-4 shadow-(--dashboard-shadow)`},Rc={class:`flex items-center gap-2`},zc={key:0,class:`text-xs font-medium text-(--dashboard-accent)`},Bc={class:`h-3.5 w-3.5`},Vc={class:`mt-3 grid gap-3 lg:grid-cols-[minmax(0,0.82fr)_minmax(0,1fr)]`},Hc={class:`rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-3`},Uc={class:`mt-3 text-lg font-semibold text-(--dashboard-text)`},Wc={class:`mt-1 text-xs leading-5 text-(--dashboard-text-soft)`},Gc={class:`grid grid-cols-2 gap-2 md:grid-cols-4`},Kc={class:`grid max-h-[40rem] min-h-0 min-w-0 gap-2 overflow-y-auto pr-1 xl:max-h-none xl:grid-cols-3 xl:overflow-hidden xl:pr-0`},qc={class:`text-sm font-semibold text-(--dashboard-text)`},Jc={class:`mt-1 text-xs leading-5 text-(--dashboard-text-soft)`},Yc={class:`mt-3 min-h-0 overflow-y-auto pr-1`},Xc={key:0,class:`rounded-md border border-dashed border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 py-4 text-sm text-(--dashboard-text-muted)`},Zc=[`onClick`],Qc={class:`mt-0.5 flex h-4 w-4 items-center justify-center rounded border border-current text-[10px] leading-none`},$c={class:`min-w-0`},el={class:`block text-sm font-medium text-(--dashboard-text)`},tl={class:`mt-1 line-clamp-2 block text-xs leading-5 text-(--dashboard-text-muted)`};function nl(e,t,n,r,a,o){return O(),F(`section`,Ic,[E(`div`,Lc,[P(r.AppPanelHeader,{"icon-name":`metric-bookmark`,title:`PR 风险清单`},{meta:_(()=>[E(`div`,Rc,[n.copyStatus?(O(),F(`span`,zc,b(n.copyStatus),1)):N(``,!0),E(`button`,{type:`button`,class:`inline-flex items-center gap-1.5 rounded-full border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-2.5 py-1 text-[11px] text-(--dashboard-text-soft) transition hover:border-(--dashboard-border-strong) hover:text-(--dashboard-text)`,onClick:t[0]||=e=>r.emit(`copy`)},[E(`span`,Bc,[P(r.DashboardIcon,{name:`metric-copy`})]),t[1]||=C(` 复制清单 `,-1)])])]),_:1}),E(`div`,Vc,[E(`div`,Hc,[E(`span`,{class:l([`inline-flex rounded-full border px-2.5 py-1 text-[11px] font-medium uppercase tracking-[0.16em]`,r.getStatusClassName(n.checklist.status)])},b(n.checklist.label),3),E(`p`,Uc,b(n.checklist.headline),1),E(`p`,Wc,b(n.checklist.description),1)]),E(`div`,Gc,[(O(!0),F(j,null,f(n.checklist.metrics,e=>(O(),x(r.AppMetricTile,i({key:e.label},{ref_for:!0},e),null,16))),128))])])]),E(`div`,Kc,[(O(!0),F(j,null,f(n.checklist.lanes,e=>(O(),F(`section`,{key:e.key,class:`grid min-h-[18rem] grid-rows-[auto_minmax(0,1fr)] rounded-lg border border-(--dashboard-border) bg-(--dashboard-panel) p-4 shadow-(--dashboard-shadow)`},[E(`div`,null,[E(`p`,qc,b(e.title),1),E(`p`,Jc,b(e.description),1)]),E(`div`,Yc,[e.items.length===0?(O(),F(`div`,Xc,b(e.emptyText),1)):N(``,!0),(O(!0),F(j,null,f(e.items,e=>(O(),F(`button`,{key:e.id,type:`button`,class:l([`mb-2 grid w-full grid-cols-[1rem_minmax(0,1fr)] gap-2 rounded-md border px-3 py-2.5 text-left transition hover:border-(--dashboard-border-strong)`,r.getToneClassName(e.tone)]),onClick:t=>r.emit(`select`,e)},[E(`span`,Qc,b(e.checked?`✓`:``),1),E(`span`,$c,[E(`span`,el,b(e.title),1),E(`span`,tl,b(e.detail),1)])],10,Zc))),128))])]))),128))])])}var rl=I(Fc,[[`render`,nl]]),il={noSemanticValidation:!0,noSuggestionDiagnostics:!0,noSyntaxValidation:!0},al={diagnostics:!1};function ol(e){e.typescript.javascriptDefaults.setDiagnosticsOptions(il),e.typescript.javascriptDefaults.setModeConfiguration(al),e.typescript.typescriptDefaults.setDiagnosticsOptions(il),e.typescript.typescriptDefaults.setModeConfiguration(al),e.editor.defineTheme(`weapp-dashboard-light`,{base:`vs`,inherit:!0,rules:[],colors:{"diffEditor.insertedTextBackground":`#d1fae55f`,"diffEditor.insertedLineBackground":`#ecfdf545`,"diffEditor.removedTextBackground":`#ffe4e65c`,"diffEditor.removedLineBackground":`#fff1f242`,"diffEditor.diagonalFill":`#94a3b855`,"editorGutter.modifiedBackground":`#2dd4bf`,"editorGutter.addedBackground":`#10b981`,"editorGutter.deletedBackground":`#f43f5e`}}),e.editor.defineTheme(`weapp-dashboard-dark`,{base:`vs-dark`,inherit:!0,rules:[],colors:{"diffEditor.insertedTextBackground":`#14532d2c`,"diffEditor.insertedLineBackground":`#052e161c`,"diffEditor.removedTextBackground":`#5f1f2a24`,"diffEditor.removedLineBackground":`#2a111818`,"diffEditor.diagonalFill":`#33415588`,"editorGutter.modifiedBackground":`#2dd4bf`,"editorGutter.addedBackground":`#22c55e`,"editorGutter.deletedBackground":`#fb7185`}})}function sl(e){return e===`dark`?`weapp-dashboard-dark`:`weapp-dashboard-light`}var cl={css:ae,html:se,javascript:le,json:oe,less:ae,scss:ae,typescript:le},ll=globalThis;ll.MonacoEnvironment={getWorker:(e,t)=>new(cl[t]??ie)};function ul(e){return`${e.packageId}:${e.file}`}function dl(e,t){return t.endsWith(`.wxml`)||t.endsWith(`.vue`)?`html`:t.endsWith(`.wxss`)?`css`:e===`plaintext`&&t.endsWith(`.json`)?`json`:e}function fl(e){let t=e.indexOf(`?`);return t===-1?e:e.slice(0,t)}async function pl(e,t,n){let r=await ue(e,t,n);return{...r,language:dl(r.language,r.path)}}function ml(e){let t=new Set;if(!e)return[];e.source&&t.add(fl(e.source));for(let n of e.modules??[])(n.sourceType===`src`||n.sourceType===`workspace`||n.sourceType===`plugin`)&&t.add(fl(n.source));return[...t].sort((e,t)=>e.localeCompare(t))}function hl(e){return e?e.replace(/\r\n?/g,`
15
- `).split(`
16
- `):[]}function gl(e){return new TextEncoder().encode(e).byteLength}function _l(e){let t=new Map;for(let n of e)t.set(n,(t.get(n)??0)+1);return t}function vl(e,t){let n=hl(e),r=hl(t),i=_l(r),a=0;for(let e of n){let t=i.get(e)??0;t<=0||(a+=1,t===1?i.delete(e):i.set(e,t-1))}let o=gl(e),s=gl(t);return{sourceLines:n.length,artifactLines:r.length,addedLines:Math.max(r.length-a,0),removedLines:Math.max(n.length-a,0),sourceBytes:o,artifactBytes:s,byteDelta:s-o,unchangedLineRatio:n.length>0?a/n.length:1}}function yl(e){return e===0?`无变化`:`${e>0?`+`:`-`}${R(Math.abs(e))}`}function bl(e){return`${Math.round(e*100)}%`}function xl(e){let t=e.unchangedLineRatio>=.7?`success`:e.unchangedLineRatio>=.35?`info`:`warning`,n=e.byteDelta>10240?`warning`:e.byteDelta<-1024?`success`:`info`,r=e.addedLines>e.removedLines*2&&e.addedLines>20?`warning`:e.removedLines>e.addedLines*2&&e.removedLines>20?`success`:`info`;return[{id:`retention`,label:`源码保留`,value:bl(e.unchangedLineRatio),detail:t===`warning`?`源码行在产物中保留较少,建议检查编译注入、运行时包装或转译膨胀。`:t===`success`?`源码结构在产物中较容易追踪,适合继续逐段定位差异。`:`产物保留了部分源码结构,可结合 diff 继续确认主要变化段。`,tone:t},{id:`size`,label:`字节影响`,value:yl(e.byteDelta),detail:n===`warning`?`产物明显大于源码,优先查看新增运行时代码、公共 helper 和重复片段。`:n===`success`?`产物比源码更紧凑,当前转换结果对体积较友好。`:`字节变化较小,体积影响暂时可控。`,tone:n},{id:`churn`,label:`行变动`,value:`${e.addedLines} / ${e.removedLines}`,detail:r===`warning`?`新增行明显多于删除行,建议优先检查模板展开、样式注入或 helper 合并策略。`:r===`success`?`删除行明显多于新增行,说明转换后结构有所收敛。`:`新增和删除相对均衡,适合直接用 diff 定位关键段。`,tone:r}]}function Sl(e){let t=e.insights??xl(e.stats);return[`# dashboard 源码对比摘要`,``,`源码:${e.sourcePath}`,`产物:${e.artifactPath}`,``,`- 源码行数:${e.stats.sourceLines}`,`- 产物行数:${e.stats.artifactLines}`,`- 估算新增行:${e.stats.addedLines}`,`- 估算删除行:${e.stats.removedLines}`,`- 字节变化:${yl(e.stats.byteDelta)}`,`- 未变更行占比:${Math.round(e.stats.unchangedLineRatio*100)}%`,``,`## 洞察`,...t.map(e=>`- ${e.label}(${e.value}):${e.detail}`),``].join(`
17
- `)}function Cl(e){let t=v(),r=v(``),i=v(``),a=o(null),s=o(null),c=v(``),l=v(!1),u=o(null),d,f,m,h=0,g=!1,_=D(()=>e.files.value.map(e=>({key:ul(e),label:`${e.packageLabel} · ${e.file}`,file:e}))),y=D(()=>_.value.find(e=>e.key===r.value)?.file??e.files.value[0]??null),b=D(()=>ml(y.value)),x=D(()=>l.value?`加载中`:c.value?c.value:a.value&&s.value?`${a.value.path} ↔ ${s.value.path}`:`等待文件`),S=D(()=>a.value&&s.value?vl(a.value.content,s.value.content):null);function C(){return e.activeFileKey.value&&_.value.some(t=>t.key===e.activeFileKey.value)?e.activeFileKey.value:_.value[0]?.key??``}function w(){d?.setModel(null),f?.dispose(),m?.dispose(),f=void 0,m=void 0}function T(e,t,n,a){return!g&&e===h&&me.value===t&&i.value===n&&r.value===a}function E(){let e=u.value;e&&d&&a.value&&s.value&&(w(),f=e.editor.createModel(a.value.content,a.value.language,e.Uri.parse(`weapp-source://model/${encodeURIComponent(a.value.path)}`)),m=e.editor.createModel(s.value.content,s.value.language,e.Uri.parse(`weapp-artifact://model/${encodeURIComponent(s.value.path)}`)),d.setModel({original:f,modified:m}))}async function O(){let n=t.value;if(g||u.value||!n)return;let r=await ce(()=>import(`./monaco.js`).then(e=>e.o),__vite__mapDeps([0]),import.meta.url);g||t.value!==n||u.value||(u.value=r,ol(r),r.editor.setTheme(sl(e.theme.value)),d=r.editor.createDiffEditor(n,{automaticLayout:!0,minimap:{enabled:!1},originalEditable:!1,readOnly:!0,renderSideBySide:!0,scrollBeyondLastLine:!1}))}async function A(){if(g)return;let t=++h,n=i.value,o=y.value,u=me.value,d=r.value;if(u===null||!n||!o){a.value=null,s.value=null,c.value=b.value.length===0?`无源码候选`:``,l.value=!1,w();return}l.value=!0,c.value=``,a.value=null,s.value=null,w(),e.onSelectFile(o);try{let[e,r]=await Promise.all([pl(`source`,n,u),pl(`artifact`,o.file,u)]);if(!T(t,u,n,d)||(a.value=e,s.value=r,await p(),!T(t,u,n,d))||(await O(),!T(t,u,n,d)))return;E()}catch(e){if(!T(t,u,n,d))return;a.value=null,s.value=null,w(),c.value=e instanceof Error?e.message:`文件读取失败`}finally{T(t,u,n,d)&&(l.value=!1)}}return n(()=>[e.activeFileKey.value,_.value.map(e=>e.key).join(`\0`)],()=>{r.value=C()},{immediate:!0}),n(b,t=>{i.value=e.initialSourcePath&&t.includes(e.initialSourcePath)?e.initialSourcePath:t[0]??``},{immediate:!0}),n([r,i,me],()=>{A()},{immediate:!0}),n(e.theme,e=>{u.value?.editor.setTheme(sl(e))}),k(()=>{g=!0,h+=1,w(),d?.dispose()}),{artifactContent:s,artifactOptions:_,compareStats:S,editorElement:t,loadComparison:A,loadError:c,loading:l,selectedArtifactKey:r,selectedSourcePath:i,sourceContent:a,sourceOptions:b,statusText:x}}var wl=r({__name:`SourceArtifactComparePanel`,props:{activeFileKey:{},files:{},theme:{},initialSourcePath:{}},emits:[`selectFile`],setup(e,{expose:t,emit:n}){t();let r=e,i=n,{activeFileKey:a,files:o,theme:s}=u(r),c=v(``),l=null,{artifactContent:d,artifactOptions:f,compareStats:p,editorElement:m,loadComparison:h,loadError:g,loading:_,selectedArtifactKey:y,selectedSourcePath:b,sourceContent:x,sourceOptions:S,statusText:C}=Cl({activeFileKey:a,files:o,theme:s,initialSourcePath:r.initialSourcePath,onSelectFile(e){i(`selectFile`,e)}}),w=D(()=>[{label:`源码文件`,value:``},...S.value.map(e=>({label:e,value:e}))]),T=D(()=>f.value.map(e=>({label:e.label,value:e.key}))),E=D(()=>p.value?[{label:`源码行数`,value:String(p.value.sourceLines)},{label:`产物行数`,value:String(p.value.artifactLines)},{label:`新增 / 删除`,value:`${p.value.addedLines} / ${p.value.removedLines}`},{label:`字节变化`,value:yl(p.value.byteDelta)}]:[]),O=D(()=>p.value?`${R(p.value.sourceBytes)} → ${R(p.value.artifactBytes)}`:``),A=D(()=>p.value?xl(p.value):[]);function ee(e){return e===`warning`?`border-amber-300/60 bg-amber-50 text-amber-800 dark:border-amber-500/25 dark:bg-amber-500/10 dark:text-amber-200`:e===`success`?`border-emerald-300/60 bg-emerald-50 text-emerald-800 dark:border-emerald-500/25 dark:bg-emerald-500/10 dark:text-emerald-200`:`border-(--dashboard-border) bg-(--dashboard-panel-muted) text-(--dashboard-text)`}function j(e){c.value=e,l&&clearTimeout(l),l=setTimeout(()=>{c.value=``,l=null},1800)}async function te(){if(p.value&&x.value&&d.value)try{await V(Sl({sourcePath:x.value.path,artifactPath:d.value.path,stats:p.value,insights:A.value})),j(`已复制`)}catch{j(`复制失败`)}}k(()=>{l&&clearTimeout(l)});let ne={props:r,emit:i,activeFileKey:a,files:o,theme:s,copyStatus:c,get copyStatusTimer(){return l},set copyStatusTimer(e){l=e},artifactContent:d,artifactOptions:f,compareStats:p,editorElement:m,loadComparison:h,loadError:g,loading:_,selectedArtifactKey:y,selectedSourcePath:b,sourceContent:x,sourceOptions:S,statusText:C,sourceSelectOptions:w,artifactSelectOptions:T,compareMetricItems:E,compareSizeText:O,compareInsights:A,getInsightClassName:ee,setCopyStatus:j,copyCompareReport:te,AppEmptyState:U,AppMetricTile:W,AppSelect:B};return Object.defineProperty(ne,"__isScriptSetup",{enumerable:!1,value:!0}),ne}}),Tl={class:`grid min-h-0 min-w-0 gap-3 overflow-visible rounded-lg border border-(--dashboard-border) bg-(--dashboard-panel) p-3 shadow-(--dashboard-shadow) xl:h-full xl:grid-rows-[auto_minmax(0,1fr)] xl:overflow-hidden`},El={class:`grid gap-3`},Dl={class:`flex flex-wrap items-center justify-between gap-3`},Ol={class:`mt-1 text-xs text-(--dashboard-text-soft)`},kl={class:`flex items-center gap-2`},Al={key:0,class:`text-xs font-medium text-(--dashboard-accent)`},jl=[`disabled`],Ml=[`disabled`],Nl={class:`grid gap-2 lg:grid-cols-2`},Pl={key:0,class:`grid gap-2 lg:grid-cols-[minmax(0,1fr)_auto] lg:items-center`},Fl={class:`grid grid-cols-2 gap-2 xl:grid-cols-4`},Il={class:`text-xs text-(--dashboard-text-soft)`},Ll={key:1,class:`grid gap-2 lg:grid-cols-3`},Rl={class:`flex items-start justify-between gap-3`},zl={class:`text-xs font-semibold uppercase tracking-[0.14em]`},Bl={class:`shrink-0 text-sm font-semibold`},Vl={class:`mt-2 line-clamp-2 text-xs leading-5`},Hl={class:`relative min-h-96 min-w-0 overflow-hidden rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) xl:min-h-0`},Ul={ref:`editorElement`,class:`absolute inset-0`};function Wl(e,t,n,r,a,o){return O(),F(`section`,Tl,[E(`div`,El,[E(`div`,Dl,[E(`div`,null,[t[3]||=E(`h2`,{class:`text-lg font-semibold text-(--dashboard-text)`},` 源码对比 `,-1),E(`p`,Ol,b(r.statusText),1)]),E(`div`,kl,[r.copyStatus?(O(),F(`span`,Al,b(r.copyStatus),1)):N(``,!0),E(`button`,{type:`button`,class:`h-9 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 text-sm text-(--dashboard-text-soft) transition hover:border-(--dashboard-border-strong) hover:text-(--dashboard-accent) focus:border-(--dashboard-border-strong) focus:outline-none disabled:opacity-50`,disabled:!r.compareStats,onClick:r.copyCompareReport},` 复制摘要 `,8,jl),E(`button`,{type:`button`,class:`h-9 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 text-sm text-(--dashboard-text-soft) transition hover:border-(--dashboard-border-strong) hover:text-(--dashboard-accent) focus:border-(--dashboard-border-strong) focus:outline-none disabled:opacity-50`,disabled:r.loading||!r.selectedArtifactKey||!r.selectedSourcePath,onClick:t[0]||=(...e)=>r.loadComparison&&r.loadComparison(...e)},` 刷新 `,8,Ml)])]),E(`div`,Nl,[P(r.AppSelect,{modelValue:r.selectedSourcePath,"onUpdate:modelValue":t[1]||=e=>r.selectedSourcePath=e,label:`选择源码文件`,options:r.sourceSelectOptions},null,8,[`modelValue`,`options`]),P(r.AppSelect,{modelValue:r.selectedArtifactKey,"onUpdate:modelValue":t[2]||=e=>r.selectedArtifactKey=e,label:`选择构建产物`,options:r.artifactSelectOptions},null,8,[`modelValue`,`options`])]),r.compareStats?(O(),F(`div`,Pl,[E(`div`,Fl,[(O(!0),F(j,null,f(r.compareMetricItems,e=>(O(),x(r.AppMetricTile,i({key:e.label},{ref_for:!0},e),null,16))),128))]),E(`p`,Il,b(r.compareSizeText),1)])):N(``,!0),r.compareInsights.length?(O(),F(`div`,Ll,[(O(!0),F(j,null,f(r.compareInsights,e=>(O(),F(`article`,{key:e.id,class:l([`rounded-md border px-3 py-2.5`,r.getInsightClassName(e.tone)])},[E(`div`,Rl,[E(`p`,zl,b(e.label),1),E(`p`,Bl,b(e.value),1)]),E(`p`,Vl,b(e.detail),1)],2))),128))])):N(``,!0)]),E(`div`,Hl,[s(E(`div`,Ul,null,512),[[w,r.sourceContent&&r.artifactContent]]),!r.sourceContent||!r.artifactContent?(O(),x(r.AppEmptyState,{key:0,class:`m-3 h-[calc(100%-1.5rem)]`},{default:_(()=>[C(b(r.loadError||`暂无可对比文件。`),1)]),_:1})):N(``,!0)])])}var Gl=I(wl,[[`render`,Wl]]),J=`\0`,Kl=[{itemStyle:{borderWidth:1,gapWidth:1},upperLabel:{show:!0,height:24,fontSize:12,fontWeight:650,lineHeight:17,overflow:`truncate`,textBorderWidth:0}},{itemStyle:{borderWidth:1,gapWidth:1},upperLabel:{show:!0,height:22,fontSize:11,fontWeight:600,lineHeight:15,overflow:`truncate`,textBorderWidth:0}},{itemStyle:{borderWidth:.75,gapWidth:.75}}];function ql(e){return`package${J}${e}`}function Y(e,t){return`file${J}${e}${J}${t}`}function X(e,t,n){return`module${J}${e}${J}${t}${J}${n}`}function Jl(e,t){return`asset${J}${e}${J}${t}`}function Yl(e){let t=e.replaceAll(`\\`,`/`),n=pe(e).replace(/^(?:\.\.\/)+/,``),r=n.split(`/`).filter(Boolean);if(r.length===0)return n;if(t.includes(`/node_modules/`)){let e=r[0];return e.startsWith(`@`)&&r[1]?`${e}/${r[1]}`:e}return r.length>2?`${r[r.length-2]}/${r[r.length-1]}`:r.join(`/`)}function Xl(e){return e===void 0||!Number.isFinite(e)||e<0?`未知`:e===0?`0 B`:R(e)}function Zl({data:e}){if(!e?.meta)return``;let t=e.meta,n=t.kind===`package`?t.totalBytes:t.kind===`module`?t.bytes??t.originalBytes:t.bytes;return`${e.name}\n${Xl(n)}`}function Z(e){return String(e).replace(/[&<>"']/g,e=>({"&":`&amp;`,"<":`&lt;`,">":`&gt;`,'"':`&quot;`,"'":`&#39;`})[e])}function Ql(e){let t=Yl(e),n=[`<strong>${Z(t)}</strong>`];return t!==e&&(n.push(`<span>完整路径</span>`),n.push(`<span style="font-family:monospace;word-break:break-all">${Z(e)}</span>`)),n}function $l(e){if(!e)return``;let t=[];if(e.kind===`package`?(t.push(`<strong>${Z(e.packageLabel)}</strong>`),t.push(`类型:${Z(e.packageType)}`),t.push(`产物数量:${Z(e.fileCount)}`),t.push(`累计体积:${Xl(e.totalBytes)}`)):e.kind===`file`?(t.push(...Ql(e.fileName)),t.push(`所属:${Z(e.packageLabel)}`),t.push(`类型:${e.type===`chunk`?`代码 chunk`:`资源`} · 来源:${Z(e.from)}`),t.push(`体积:${Xl(e.bytes)}`),e.childCount>0&&t.push(`模块数量:${Z(e.childCount)}`)):e.kind===`module`?(t.push(...Ql(e.source)),t.push(`所属:${Z(e.packageLabel)} → ${Z(e.fileName)}`),t.push(`源码类型:${Z(ve(e.sourceType))}`),t.push(`${e.bytes===void 0?`源码体积`:`模块体积`}:${Xl(e.bytes??e.originalBytes)}`),e.packageCount>1&&t.push(`产出分包:${Z(e.packageCount)} 个`)):e.kind===`asset`&&(t.push(...Ql(e.source)),t.push(`所属:${Z(e.packageLabel)} → ${Z(e.fileName)}`),t.push(`资源体积:${Xl(e.bytes)}`)),e.colorLabel&&t.push(`颜色:${Z(e.colorLabel)}`),e.deltaBytes!==void 0){let n=e.deltaBytes>0?`+`:e.deltaBytes<0?`−`:``;t.push(`体积变化:${n}${Xl(Math.abs(e.deltaBytes))}(${n}${Math.abs(e.deltaBytes)} B)`)}return t.join(`<br/>`)}function eu(e){let t=new Map(e.packages.map(e=>[e.id,e])),n=new Map,r=new Map;for(let t of e.packages)for(let e of t.files){n.set(Y(t.id,e.file),{pkg:t,file:e});for(let n of e.modules??[])r.set(X(t.id,e.file,n.id),n)}return{packages:t,files:n,modules:new Map(e.modules.map(e=>[e.id,e])),modulesByNodeId:r}}function tu(e,t){let n=new Map;function r(e){for(let t of e)n.set(t.meta.nodeId,t),t.children&&r(t.children)}return r(t),{...e,tree:n}}function nu(e,t){return t.kind===`package`?void 0:e.files.get(Y(t.packageId,t.fileName))}function ru(e,t){if(t.kind===`module`)return e.modulesByNodeId.get(t.nodeId)}function iu(e,{pkg:t,file:n}){let r=Y(t.id,n.file),i=e.tree.get(r)?.meta;return i?.kind===`file`?i:{kind:`file`,nodeId:r,packageId:t.id,packageLabel:t.label,fileName:n.file,from:n.from,type:n.type,bytes:n.size,childCount:n.type===`chunk`?n.modules?.length??0:Number(!!n.source)}}function au(e){return e===void 0?`未知(未记录)`:e===0?`0 B`:R(e)}function ou(e){if(!e)return{text:`未知(未记录)`,bytes:void 0};let t=0,n=0;for(let r of e.files)r.size===void 0?n++:t+=r.size;return{bytes:n?void 0:t,text:n?`已知 ${au(t)} · ${n} 个产物体积未知`:au(t)}}function su(e,t){if(t.kind===`package`)return ou(e.packages.get(t.packageId));let n=t.kind===`module`?ru(e,t)?.bytes:nu(e,t)?.file.size;return{bytes:n,text:au(n)}}function cu(e,t){return t.kind===`package`?t.packageId:t.kind===`module`?ru(e,t)?.source||t.source:t.kind===`asset`&&nu(e,t)?.file.source||t.fileName}function lu(e){return e.kind===`package`?z(e.packageType):e.kind===`module`?`模块 · ${ve(e.sourceType)}`:e.kind===`asset`?`资源来源`:e.type===`chunk`?`代码产物`:`资源产物`}function uu(e,t){let n=su(e,t);return{id:t.nodeId,path:cu(e,t),description:t.kind===`package`?t.packageLabel:`${lu(t)} · ${t.packageLabel}`,size:`${n.text}${t.kind===`module`&&n.bytes!==void 0?` · 模块贡献`:``}`,bytes:n.bytes,meta:t}}function du(e,t){let n=uu(e,iu(e,t));return e.tree.has(n.id)||(n.description+=` · 当前筛选外`),n}function fu(e){return e.sort((e,t)=>(t.bytes??-1)-(e.bytes??-1)||e.path.localeCompare(t.path)||e.id.localeCompare(t.id))}function pu(e,t){let n=nu(e,t)?.file,r=ru(e,t);return t.kind===`package`?{available:!1,message:`选择产物或模块后查看源码与产物。`}:t.kind===`module`?{available:!!(r&&[`src`,`workspace`,`plugin`].includes(r.sourceType)&&r.source),message:r?.sourceType===`node_modules`?`依赖模块暂无可读取的源码入口。`:`分析报告未记录此模块的可读取源码。`}:{available:!!(n?.source||t.kind===`file`&&n?.modules?.some(e=>[`src`,`workspace`,`plugin`].includes(e.sourceType)&&e.source)),message:`分析报告未记录此产物的可读取源码。`}}function mu(e){let t=new Map;for(let n of e.files.values()){if(n.file.type!==`chunk`)continue;let e=Ie(n.file.file),r=t.get(e);r?r.push(n):t.set(e,[n])}let n=new Map,r=new Map;for(let i of e.files.values()){if(i.file.type!==`chunk`)continue;let e=[];for(let n of[`static`,`dynamic`]){let a=n===`static`?i.file.imports:i.file.dynamicImports;for(let o of new Set(a)){let a=/^(?:[a-z][\w+.-]*:|\/\/)/i.test(o)?[]:t.get(Le(i.file.file,o))??[],s=a.filter(e=>e.pkg.id===i.pkg.id),c=s.length?s:a,l=c.length===1?c[0]:void 0,u={source:i,target:l,path:o,kind:n,unresolved:l?void 0:c.length>1?`同名产物存在歧义,无法定位`:`外部或未输出的产物`};if(e.push(u),l){let e=Y(l.pkg.id,l.file.file),t=r.get(e);t?t.push(u):r.set(e,[u])}}}n.set(Y(i.pkg.id,i.file.file),e)}return{outgoing:n,incoming:r}}function hu(e,t){let n=ru(e,t);if(!n)return[];let r=new Map,i=nu(e,t);if(i){let t=du(e,i);r.set(t.id,t)}for(let t of e.modules.get(n.id)?.packages??[])for(let n of t.files){let i=Y(t.packageId,n),a=e.files.get(i);r.set(i,a?du(e,a):{id:i,path:n,description:`${e.packages.get(t.packageId)?.label??t.packageId} · 报告未包含产物详情`,size:`未知(未记录)`})}return fu([...r.values()])}function gu(e,t,n){return[`outgoing`,`incoming`].flatMap(r=>[`static`,`dynamic`].map(i=>{let a=(t[r].get(n.nodeId)??[]).filter(e=>e.kind===i).map(t=>{let n=r===`incoming`?t.source:t.target,a=`${r}\u0000${i}\u0000${t.source.pkg.id}\u0000${t.source.file.file}\u0000${t.path}`;if(!n)return{id:a,path:t.path,description:t.unresolved??``,size:`体积未知`};let o=du(e,n);return{...o,id:a,description:`${o.description} · import: ${t.path}`}});return{id:`${r}-${i}`,title:`${r===`incoming`?`被引用 · `:`引用 · `}${i===`static`?`静态 import`:`动态 import`}`,empty:r===`incoming`?`报告中没有可定位到此产物的引用。`:`报告未记录此类引用。`,rows:fu(a)}}))}function _u(e,t,n,r){if(!r||r.kind===`package`||r.kind===`file`){let i=r?e.tree.get(r.nodeId)?.children??[]:n,a=[{id:`children`,title:r?r.kind===`package`?`产物文件`:`模块与资源`:`包`,empty:!r||r.kind===`package`?`当前筛选下没有可浏览的节点。请调整图表筛选。`:`当前筛选下无子节点,或报告未记录模块 / 资源来源。`,rows:fu(i.map(t=>uu(e,t.meta)))}];return r?.kind===`file`&&r.type===`chunk`&&a.push(...gu(e,t,r)),a}if(r.kind===`module`)return[{id:`locations`,title:`所在产物 · 跨包位置`,empty:`报告未记录此模块的产物位置。`,rows:hu(e,r)}];let i=nu(e,r);return[{id:`locations`,title:`所在产物`,empty:`报告未包含此资源的产物详情。`,rows:i?[du(e,i)]:[]}]}var vu={outgoing:new Map,incoming:new Map};function yu(e){return e.map(e=>JSON.stringify(e)).sort().join(`
18
- `)}function bu(e,t){let n=[];if(!t)for(let t of e.packages.values()){if(!t.files.length)continue;let e=0,r=0;for(let n of t.files)n.size===void 0?r++:e+=n.size;n.push([ql(t.id),t.label,e,r])}else if(t.kind===`package`){let r=e.packages.get(t.packageId);if(r)for(let e of r.files)n.push([Y(r.id,e.file),e.file,r.label,e.type,e.size])}else if(t.kind===`file`){let r=e.files.get(t.nodeId);if(r){let{pkg:e,file:t}=r;if(t.type===`chunk`)for(let r of t.modules??[])n.push([X(e.id,t.file,r.id),r.source,e.label,r.sourceType,r.bytes]);else t.source&&n.push([Jl(e.id,t.file),t.source,e.label,t.size])}}return yu(n)}function xu(e,t,n){let r=new Map;if((!t||t.kind===`package`||t.kind===`file`)&&(r.set(`children`,bu(e,t)),!t||t.kind===`package`))return r;let i={...e,tree:new Map},a=t,o=vu;if(t.kind===`file`){let s=e.files.get(t.nodeId);if(s?.file.type!==`chunk`)return r;a=iu(i,s),o=n()}for(let e of _u(i,o,[],a))e.id!==`children`&&r.set(e.id,yu(e.rows.map(e=>[e.id,e.path,e.description,e.bytes,e.meta?.nodeId])));return r}function Su(e){let t=D(()=>e.selectedMeta()?.nodeId??null),r=g(new Map);return n([e.report,t],([t,n],i)=>{n!==i[1]&&r.clear();let a=xu(t,e.selectedMeta(),e.imports);for(let[e,t]of r){let n=a.get(e);!t.open&&n!==t.signature&&(t.unread=!0),t.signature=n}for(let[e,t]of a)r.has(e)||r.set(e,{open:!0,unread:!1,signature:t})},{immediate:!0}),{isOpen:e=>r.get(e)?.open??!0,hasUnread:e=>r.get(e)?.unread??!1,setOpen(e,t){let n=r.get(e);n&&(n.open=t,t&&(n.unread=!1))}}}var Cu=r({__name:`TreemapDetailGroup`,props:{section:{},open:{type:Boolean},unread:{type:Boolean},searching:{type:Boolean}},emits:[`toggle`,`selectNode`],setup(e,{expose:t,emit:n}){t();let r=e,i=n,a=c(),o=re(`group`);function s(){o.value&&i(`toggle`,r.section.id,o.value)}let l={props:r,emit:i,contentId:a,group:o,toggle:s};return Object.defineProperty(l,"__isScriptSetup",{enumerable:!1,value:!0}),l}}),wu=[`aria-label`],Tu=[`aria-expanded`,`aria-controls`],Eu={class:`min-w-0 flex-1 [overflow-wrap:anywhere]`},Du={key:0,role:`status`,class:`shrink-0 text-[11px] font-medium text-(--dashboard-accent)`},Ou={class:`shrink-0 font-normal text-(--dashboard-text-soft) tabular-nums`},ku=[`id`,`hidden`],Au={key:0,class:`min-w-0 divide-y divide-(--dashboard-border)`},ju=[`title`,`onClick`],Mu={class:`block font-mono text-xs leading-5 [overflow-wrap:anywhere]`},Nu={class:`mt-1 block text-[11px] leading-4 text-(--dashboard-text-soft) [overflow-wrap:anywhere]`},Pu={class:`mt-1 block text-xs text-(--dashboard-text-soft) tabular-nums`},Fu={key:1,class:`px-1 py-2`},Iu={class:`font-mono text-xs leading-5 [overflow-wrap:anywhere]`},Lu={class:`mt-1 text-[11px] leading-5 text-(--dashboard-text-soft) [overflow-wrap:anywhere]`},Ru={key:1,class:`mt-2 text-xs leading-5 text-(--dashboard-text-soft)`};function zu(e,t,n,r,i,a){return O(),F(`section`,{ref:`group`,"aria-label":n.section.title,class:`mt-4 min-w-0`},[E(`h4`,null,[E(`button`,{type:`button`,class:`flex min-h-11 w-full items-center gap-2 rounded-sm px-1 text-left text-xs font-semibold hover:bg-(--dashboard-panel-muted) focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-(--dashboard-accent)`,"aria-expanded":n.open,"aria-controls":r.contentId,onClick:r.toggle},[E(`span`,{class:l([`iconify mdi--chevron-right size-4 shrink-0`,{"rotate-90":n.open}]),"aria-hidden":`true`},null,2),E(`span`,Eu,b(n.section.title),1),n.unread?(O(),F(`span`,Du,`有更新`)):N(``,!0),E(`span`,Ou,b(n.section.rows.length),1)],8,Tu)]),E(`div`,{id:r.contentId,hidden:!n.open},[n.section.rows.length?(O(),F(`ul`,Au,[(O(!0),F(j,null,f(n.section.rows,e=>(O(),F(`li`,{key:e.id,class:`min-w-0`},[e.meta?(O(),F(`button`,{key:0,type:`button`,title:e.path,class:`block min-h-11 w-full min-w-0 rounded-sm px-1 py-2 text-left hover:bg-(--dashboard-accent-soft) focus-visible:outline-2 focus-visible:outline-offset-1 focus-visible:outline-(--dashboard-accent)`,onClick:t=>r.emit(`selectNode`,e.meta)},[E(`span`,Mu,b(e.path),1),E(`span`,Nu,b(e.description),1),E(`span`,Pu,b(e.size),1)],8,ju)):(O(),F(`div`,Fu,[E(`p`,Iu,b(e.path),1),E(`p`,Lu,b(e.description)+` · `+b(e.size),1)]))]))),128))])):(O(),F(`p`,Ru,b(n.searching?`此分组没有匹配结果。`:n.section.empty),1))],8,ku)],8,wu)}var Bu=I(Cu,[[`render`,zu]]),Vu=r({__name:`TreemapSelectionPanel`,props:{result:{},nodes:{},selectedMeta:{}},emits:[`selectNode`,`openSource`],setup(e,{expose:t,emit:r}){t();let i=e,a=r,s=o(``),c=o(null),l=o(null),u=o(null),d=D(()=>eu(i.result)),f=D(()=>tu(d.value,i.nodes)),m=D(()=>mu(d.value)),h=Su({report:()=>d.value,imports:()=>m.value,selectedMeta:()=>i.selectedMeta}),g=D(()=>{let e=i.selectedMeta;return e?{path:cu(f.value,e),kind:lu(e),size:su(f.value,e),module:ru(f.value,e),source:pu(f.value,e),outsideFilter:!f.value.tree.has(e.nodeId)}:null}),_=D(()=>!i.selectedMeta||!g.value?`按包浏览产物与模块`:i.selectedMeta.kind===`package`?i.selectedMeta.packageLabel:g.value.path.split(/[\\/]/).pop()||g.value.path),v=D(()=>_u(f.value,m.value,i.nodes,i.selectedMeta)),y=D(()=>{let e=s.value.trim().toLowerCase();return v.value.map(t=>({...t,rows:e?t.rows.filter(t=>`${t.path} ${t.description}`.toLowerCase().includes(e)):t.rows}))}),b=D(()=>y.value.reduce((e,t)=>e+t.rows.length,0)),x=D(()=>v.value.reduce((e,t)=>e+t.rows.length,0));n(()=>i.selectedMeta?.nodeId,()=>{s.value=``});function S(e){for(let t=e;t;t=t.parentElement)if(/auto|scroll/.test(getComputedStyle(t).overflowY))return t;return document.scrollingElement instanceof HTMLElement?document.scrollingElement:document.documentElement}function C(e){if(e===document.scrollingElement)return{top:0,bottom:window.innerHeight};let t=e.getBoundingClientRect();return{top:Math.max(0,t.top+e.clientTop),bottom:Math.min(window.innerHeight,t.top+e.clientTop+e.clientHeight)}}let w=0;async function T(e,t){let n=++w,r=i.selectedMeta?.nodeId,a=S(t),o=a.scrollTop,s=!h.isOpen(e);if(h.setOpen(e,s),!s||(await p(),n!==w||r!==i.selectedMeta?.nodeId||!t.isConnected||!h.isOpen(e)||Math.abs(a.scrollTop-o)>1))return;let c=C(a),u=t.getBoundingClientRect();if(u.bottom<=c.bottom)return;let d=Math.max(c.top,l.value?.getBoundingClientRect().bottom??c.top);a.scrollTo({top:a.scrollTop+u.top-d,behavior:`instant`})}async function E(e){if(w++,a(`selectNode`,e),await p(),u.value?.focus({preventScroll:!0}),c.value){let e=S(c.value),t=e===c.value?0:e.scrollTop+c.value.getBoundingClientRect().top-C(e).top;e.scrollTo({top:t,behavior:`instant`})}}let O={props:i,emit:a,query:s,panel:c,identityHeader:l,heading:u,report:d,context:f,imports:m,sectionState:h,details:g,identityLabel:_,sections:v,filteredSections:y,visibleCount:b,totalCount:x,findScrollContainer:S,getScrollBounds:C,get disclosureRequest(){return w},set disclosureRequest(e){w=e},toggleSection:T,selectNode:E,get formatSignedBytes(){return yl},get formatDetailBytes(){return au},TreemapDetailGroup:Bu};return Object.defineProperty(O,"__isScriptSetup",{enumerable:!1,value:!0}),O}}),Hu={ref:`panel`,"aria-label":`节点详情与导航`,class:`min-w-0 text-sm text-(--dashboard-text) [&_:is(button,input)]:scroll-mt-24`},Uu={ref:`identityHeader`,class:`sticky top-0 z-10 -mx-4 -mt-4 border-b border-(--dashboard-border) bg-(--dashboard-panel) px-4 py-3`},Wu={ref:`heading`,tabindex:`-1`,class:`flex min-w-0 items-baseline gap-2 rounded-sm text-sm font-semibold focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-(--dashboard-accent)`},Gu={class:`shrink-0`},Ku=[`title`],qu=[`title`],Ju={class:`mt-4 min-w-0 border-b border-(--dashboard-border) pb-4`},Yu={class:`mt-2 font-mono text-xs leading-5 [overflow-wrap:anywhere]`},Xu={class:`mt-3 grid min-w-0 grid-cols-[auto_minmax(0,1fr)] gap-x-3 gap-y-2 text-xs leading-5`},Zu={class:`[overflow-wrap:anywhere]`},Qu={class:`[overflow-wrap:anywhere]`},$u={class:`font-mono [overflow-wrap:anywhere]`},ed={class:`font-mono [overflow-wrap:anywhere]`},td={class:`text-(--dashboard-text-soft)`},nd={class:`tabular-nums [overflow-wrap:anywhere]`},rd={class:`tabular-nums`},id={class:`[overflow-wrap:anywhere]`},ad={class:`tabular-nums`},od={key:0,class:`mt-3 text-xs leading-5 text-(--dashboard-text-soft)`},sd={key:1,class:`mt-3 text-xs leading-5 text-(--dashboard-text-soft)`},cd={key:2,class:`mt-3 text-xs leading-5 text-(--dashboard-text-soft)`},ld={key:4,class:`mt-3 text-xs leading-5 text-(--dashboard-text-soft)`},ud={key:1,class:`mt-2 text-xs leading-5 text-(--dashboard-text-soft)`},dd={class:`mt-4 min-w-0`},fd={class:`block text-xs text-(--dashboard-text-soft)`},pd={"aria-live":`polite`,class:`mt-2 text-xs text-(--dashboard-text-soft)`},md={key:0,class:`mt-3 text-xs leading-5 text-(--dashboard-text-soft)`},hd={key:1,class:`mt-4 text-[11px] leading-5 text-(--dashboard-text-soft)`};function gd(e,t,n,r,i,a){return O(),F(`section`,Hu,[E(`header`,Uu,[E(`h3`,Wu,[E(`span`,Gu,b(r.details?`节点详情`:`浏览构建产物`),1),n.selectedMeta?(O(),F(`span`,{key:0,class:`truncate text-xs font-normal text-(--dashboard-text-soft)`,title:n.selectedMeta.packageLabel},b(n.selectedMeta.packageLabel),9,Ku)):N(``,!0)],512),E(`p`,{class:`mt-1 truncate font-mono text-xs text-(--dashboard-text-muted)`,title:r.details?.path},b(r.identityLabel),9,qu)],512),E(`div`,Ju,[n.selectedMeta&&r.details?(O(),F(j,{key:0},[E(`p`,Yu,b(r.details.path),1),E(`dl`,Xu,[t[7]||=E(`dt`,{class:`text-(--dashboard-text-soft)`},` 类型 `,-1),E(`dd`,Zu,b(r.details.kind),1),t[8]||=E(`dt`,{class:`text-(--dashboard-text-soft)`},` 所属包 `,-1),E(`dd`,Qu,b(n.selectedMeta.packageLabel)+` · `+b(n.selectedMeta.packageId),1),n.selectedMeta.kind===`module`||n.selectedMeta.kind===`asset`?(O(),F(j,{key:0},[t[2]||=E(`dt`,{class:`text-(--dashboard-text-soft)`},` 所在产物 `,-1),E(`dd`,$u,b(n.selectedMeta.fileName),1)],64)):N(``,!0),r.details.module&&r.details.module.id!==r.details.path?(O(),F(j,{key:1},[t[3]||=E(`dt`,{class:`text-(--dashboard-text-soft)`},` 模块 ID `,-1),E(`dd`,ed,b(r.details.module.id),1)],64)):N(``,!0),E(`dt`,td,b(n.selectedMeta.kind===`module`?`模块贡献`:`实际产物体积`),1),E(`dd`,nd,b(r.details.size.text),1),r.details.module?.originalBytes===void 0?N(``,!0):(O(),F(j,{key:2},[t[4]||=E(`dt`,{class:`text-(--dashboard-text-soft)`},` 原始模块体积 `,-1),E(`dd`,rd,b(r.formatDetailBytes(r.details.module.originalBytes)),1)],64)),n.selectedMeta.colorLabel?(O(),F(j,{key:3},[t[5]||=E(`dt`,{class:`text-(--dashboard-text-soft)`},` 着色依据 `,-1),E(`dd`,id,b(n.selectedMeta.colorLabel),1)],64)):N(``,!0),n.selectedMeta.deltaBytes===void 0?N(``,!0):(O(),F(j,{key:4},[t[6]||=E(`dt`,{class:`text-(--dashboard-text-soft)`},` 相对基线 `,-1),E(`dd`,ad,b(r.formatSignedBytes(n.selectedMeta.deltaBytes)),1)],64))]),n.selectedMeta.kind===`module`?(O(),F(`p`,od,` 模块贡献来自打包器记录,不等于独立产物大小。缺失时图块面积使用原始模块体积估算;两者均缺失时仅作占位。 `)):N(``,!0),n.selectedMeta.kind===`module`&&!r.details.module?(O(),F(`p`,sd,` 报告中未找到与此节点 ID 匹配的模块,无法确认完整源码路径与跨包位置。 `)):N(``,!0),r.details.outsideFilter?(O(),F(`p`,cd,` 此节点不在当前图表筛选中;详情仍使用完整分析报告。调整筛选可在图中查看。 `)):N(``,!0),n.selectedMeta.kind!==`package`&&r.details.source.available?(O(),F(`button`,{key:3,type:`button`,class:`mt-3 min-h-9 rounded-md border border-(--dashboard-border) px-3 text-xs font-medium text-(--dashboard-accent) hover:bg-(--dashboard-accent-soft) focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-(--dashboard-accent)`,onClick:t[0]||=e=>r.emit(`openSource`,n.selectedMeta)},` 查看源码与产物 `)):(O(),F(`p`,ld,b(r.details.source.message),1))],64)):(O(),F(`p`,ud,` 从包进入产物、模块或资源;下方按钮与图块选择同步,无需操作画布。 `))]),E(`div`,dd,[E(`label`,fd,[t[9]||=C(` 搜索当前列表 `,-1),s(E(`input`,{"onUpdate:modelValue":t[1]||=e=>r.query=e,type:`search`,autocomplete:`off`,placeholder:`输入路径、包名或引用名称`,class:`mt-2 min-h-9 w-full min-w-0 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel) px-3 text-xs text-(--dashboard-text) placeholder:text-(--dashboard-text-soft) focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-(--dashboard-accent)`},null,512),[[M,r.query]])]),E(`p`,pd,b(r.visibleCount)+` / `+b(r.totalCount)+` 项 · 按已记录体积从大到小 `,1),r.query.trim()&&!r.visibleCount?(O(),F(`p`,md,` 当前列表没有匹配结果;清空搜索可查看全部条目。 `)):N(``,!0),(O(!0),F(j,null,f(r.filteredSections,e=>(O(),x(r.TreemapDetailGroup,{key:e.id,section:e,open:r.sectionState.isOpen(e.id),unread:r.sectionState.hasUnread(e.id),searching:!!r.query.trim(),onToggle:r.toggleSection,onSelectNode:r.selectNode},null,8,[`section`,`open`,`unread`,`searching`]))),128)),n.selectedMeta?.kind===`file`||n.selectedMeta?.kind===`module`?(O(),F(`p`,hd,` 引用仅来自构建产物的静态 / 动态 import 记录;模块位置不是源码级依赖关系。 `)):N(``,!0)])],512)}var _d=I(Vu,[[`render`,gd]]),vd=`inline-flex min-h-8 items-center justify-center rounded px-2 text-xs text-(--dashboard-text-muted) hover:bg-(--dashboard-panel-muted) hover:text-(--dashboard-accent) focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-(--dashboard-accent) disabled:cursor-not-allowed disabled:opacity-50`,yd=r({__name:`TreemapCard`,props:{bindChartRef:{type:Function},filterMode:{},filterOptions:{},canUseSelectedPackageFilter:{type:Boolean},hasComparison:{type:Boolean},comparisonLabel:{},colorMode:{},colorDescription:{},legend:{},nodes:{},path:{},result:{},selectedMeta:{},isEmpty:{type:Boolean}},emits:[`resetFocus`,`selectNode`,`openSource`,`inspectProblem`,`updateFilterMode`,`updateColorMode`],setup(e,{expose:t,emit:n}){t();let r=e,i=n,a=D(()=>r.filterOptions.map(e=>({...e,label:e.value===`growth`&&!r.hasComparison?`增长(无比较快照)`:e.label,disabled:e.value===`selected-package`&&!r.canUseSelectedPackageFilter||e.value===`growth`&&!r.hasComparison}))),o=D(()=>[{value:`package`,label:`所属分包`},{value:`source`,label:`模块来源`},{value:`duplicates`,label:`重复打包`},{value:`delta`,label:r.hasComparison?`构建增量`:`构建增量(无比较快照)`,disabled:!r.hasComparison}]),s=D(()=>r.nodes.reduce((e,t)=>e+t.value,0));function c(e){r.bindChartRef(e instanceof Element?e:null)}let l={props:r,emit:i,filters:a,colorOptions:o,visibleBytes:s,buttonClass:vd,handleChartRef:c,get formatBytes(){return R},AppSelect:B,TreemapSelectionPanel:_d};return Object.defineProperty(l,"__isScriptSetup",{enumerable:!1,value:!0}),l}}),bd={class:`flex min-h-0 flex-col overflow-clip rounded-lg border border-(--dashboard-border) bg-(--dashboard-panel) xl:h-full`,"aria-label":`体积地图工作台`},xd={class:`flex flex-wrap items-center gap-x-4 gap-y-2 border-b border-(--dashboard-border) px-3 py-2`},Sd={class:`mr-auto text-sm font-semibold`},Cd={class:`ml-1 font-mono text-xs font-normal text-(--dashboard-text-muted)`},wd={class:`flex min-w-0 flex-wrap items-center gap-1`},Td={class:`flex items-center gap-1`,"aria-label":`分析问题`},Ed=[`disabled`,`title`],Dd={class:`grid min-h-0 flex-1 xl:grid-cols-[minmax(0,1fr)_20rem]`},Od={class:`flex min-h-0 flex-col`},kd={class:`flex min-h-10 flex-wrap items-center gap-1 border-b border-(--dashboard-border) px-2 py-1`,"aria-label":`体积地图下钻路径`},Ad=[`aria-current`],jd=[`aria-current`,`title`,`onClick`],Md={class:`relative min-h-[24rem] flex-1 xl:min-h-0`},Nd={key:0,class:`absolute inset-0 flex flex-col items-center justify-center gap-3 bg-(--dashboard-panel) p-6 text-center`,role:`status`},Pd={class:`text-sm text-(--dashboard-text-muted)`},Fd={class:`flex flex-wrap items-center gap-x-4 gap-y-1 border-t border-(--dashboard-border) px-3 py-2 text-[11px] text-(--dashboard-text-muted)`},Id={class:`w-full`},Ld={key:0};function Rd(e,t,n,r,i,a){return O(),F(`section`,bd,[E(`div`,xd,[E(`h2`,Sd,[t[8]||=C(` 体积地图 `,-1),E(`span`,Cd,b(r.formatBytes(r.visibleBytes)),1)]),E(`div`,wd,[P(r.AppSelect,{"model-value":n.filterMode,options:r.filters,label:`显示`,size:`sm`,variant:`toolbar`,"onUpdate:modelValue":t[0]||=e=>r.emit(`updateFilterMode`,e)},null,8,[`model-value`,`options`]),P(r.AppSelect,{"model-value":n.colorMode,options:r.colorOptions,label:`着色`,size:`sm`,variant:`toolbar`,"onUpdate:modelValue":t[1]||=e=>r.emit(`updateColorMode`,e)},null,8,[`model-value`,`options`])]),E(`div`,Td,[E(`button`,{type:`button`,class:l(r.buttonClass),onClick:t[2]||=e=>r.emit(`inspectProblem`,`duplicates`)},` 查重复 `),E(`button`,{type:`button`,class:l(r.buttonClass),disabled:!n.hasComparison,title:n.hasComparison?`对比${n.comparisonLabel},只看增长部分`:`需要上次构建或选定基线快照`,onClick:t[3]||=e=>r.emit(`inspectProblem`,`growth`)},` 看增长 `,8,Ed)])]),E(`div`,Dd,[E(`div`,Od,[E(`nav`,kd,[E(`button`,{type:`button`,class:l(r.buttonClass),"aria-current":n.path.length===0?`location`:void 0,onClick:t[4]||=e=>r.emit(`resetFocus`)},` 全部产物 `,8,Ad),(O(!0),F(j,null,f(n.path,(e,i)=>(O(),F(j,{key:e.id},[t[9]||=E(`span`,{class:`text-xs text-(--dashboard-text-soft)`,"aria-hidden":`true`},`/`,-1),E(`button`,{type:`button`,class:l([`max-w-full break-all text-left`,[r.buttonClass,i===n.path.length-1?`font-medium text-(--dashboard-accent)`:void 0]]),"aria-current":i===n.path.length-1?`location`:void 0,title:e.meta.kind===`package`?e.meta.packageLabel:e.meta.kind===`file`?e.meta.fileName:e.meta.source,onClick:t=>r.emit(`selectNode`,e.meta)},b(e.name),11,jd)],64))),128))]),E(`div`,Md,[E(`div`,{ref:r.handleChartRef,class:`absolute inset-0`,role:`img`,"aria-label":`构建产物体积图。可点击节点下钻,也可使用节点详情中的列表选择。`},null,512),n.isEmpty?(O(),F(`div`,Nd,[E(`p`,Pd,b(n.filterMode===`growth`&&!n.hasComparison?`没有可比较的构建快照。`:`当前条件下没有匹配的产物。`),1),E(`button`,{type:`button`,class:l(r.buttonClass),onClick:t[5]||=e=>r.emit(`updateFilterMode`,`all`)},` 显示全部产物 `)])):N(``,!0)]),E(`div`,Fd,[(O(!0),F(j,null,f(n.legend,e=>(O(),F(`span`,{key:e.label,class:`inline-flex items-center gap-1.5`},[E(`span`,{class:`h-2.5 w-2.5 shrink-0 rounded-sm`,style:y({backgroundColor:e.color}),"aria-hidden":`true`},null,4),C(` `+b(e.label),1)]))),128)),E(`p`,Id,[C(b(n.colorDescription),1),n.colorMode===`delta`&&n.hasComparison?(O(),F(`span`,Ld,` · 对比`+b(n.comparisonLabel),1)):N(``,!0)])])]),P(r.TreemapSelectionPanel,{class:`border-t border-(--dashboard-border) p-4 xl:min-h-0 xl:overflow-y-auto xl:border-l xl:border-t-0`,result:n.result,nodes:n.nodes,"selected-meta":n.selectedMeta,onSelectNode:t[6]||=e=>r.emit(`selectNode`,e),onOpenSource:t[7]||=e=>r.emit(`openSource`,e)},null,8,[`result`,`nodes`,`selected-meta`])])])}var zd=I(yd,[[`render`,Rd]]),Bd=r({__name:`AnalyzeResultSections`,props:{actionItems:{},activeBudgetWarningId:{},activeLargestFileKey:{},activeTab:{},activeWorkQueueItemId:{},baselineSnapshotId:{},budgetConfig:{},budgetWarnings:{},canUseSelectedPackageFilter:{type:Boolean},hasTreemapComparison:{type:Boolean},comparisonMode:{},copyStatus:{},filteredDuplicateModules:{},filteredLargestFiles:{},historySnapshots:{},incrementAttribution:{},incrementSummary:{},isTreemapEmpty:{type:Boolean},largestFiles:{},metricPackageTypeSummary:{},moduleSourceSummary:{},modulesLayoutItems:{},overviewLayoutItems:{},packageInsights:{},packagesLayoutItems:{},prReviewChecklist:{},queuedActionKeys:{},reviewLayoutItems:{},result:{},selectedTreemapMeta:{},selectedActionKey:{},selectedFileModules:{},sourceLayoutItems:{},theme:{},topCards:{},totalBytes:{},treemapColorMode:{},treemapColorDescription:{},treemapComparisonLabel:{},treemapLegend:{},treemapNodes:{},treemapPath:{},treemapSourcePath:{},treemapFilterMode:{},treemapFilterOptions:{},visibleLargestFiles:{},workQueueItems:{},bindChartRef:{type:Function}},emits:[`addActionToQueue`,`clearCompletedWorkQueue`,`copyPr`,`copyReviewChecklist`,`copyWorkQueue`,`inspectTreemapProblem`,`openTreemapSource`,`removeWorkQueueItem`,`resetTreemapFocus`,`selectAction`,`selectBudgetWarning`,`selectFile`,`selectPackage`,`selectReviewChecklistItem`,`selectTreemapNode`,`selectWorkQueueItem`,`setBaseline`,`setComparisonMode`,`toggleWorkQueueItem`,`updateTreemapColorMode`,`updateTreemapFilterMode`],setup(e,{expose:t,emit:n}){t();let r={emit:n,ChunkGraphPanel:h(()=>ce(()=>import(`./ChunkGraphPanel.js`),__vite__mapDeps([0,1]),import.meta.url)),AnalyzeDetailsPanel:ir,AnalyzeDiagnosticsSection:ua,AnalyzeDraggableGrid:Nt,AnalyzeOverviewPanel:xo,ModulesPanel:Cs,PackagesPanel:Pc,PrReviewChecklistPanel:rl,SourceArtifactComparePanel:Gl,TreemapCard:zd};return Object.defineProperty(r,"__isScriptSetup",{enumerable:!1,value:!0}),r}}),Vd={key:0,class:`min-h-0`},Hd={key:1,class:`min-h-0`},Ud={key:2,class:`min-h-0`},Wd={key:3,class:`min-h-0`},Gd={key:4,class:`min-h-0 flex-1`},Kd={key:5,class:`min-h-0`},qd={key:6,class:`min-h-0`},Jd={key:7,class:`min-h-0`},Yd={key:8,class:`min-h-0`};function Xd(e,t,n,r,i,a){return n.activeTab===`overview`?(O(),F(`section`,Vd,[P(r.AnalyzeDraggableGrid,{"grid-class":`grid h-full min-h-0 min-w-0 gap-2 overflow-x-hidden overflow-y-auto xl:overflow-hidden`,items:n.overviewLayoutItems,"storage-key":`weapp-vite:dashboard:analyze-layout:overview`},{metrics:_(()=>[P(r.AnalyzeOverviewPanel,{"action-items":n.actionItems,cards:n.topCards,"largest-files":n.largestFiles,"package-insights":n.packageInsights,"package-type-summary":n.metricPackageTypeSummary,onCopyReport:t[0]||=e=>r.emit(`copyPr`),onSelectAction:t[1]||=e=>r.emit(`selectAction`,e),onSelectFile:t[2]||=e=>r.emit(`selectFile`,e),onSelectPackage:t[3]||=e=>r.emit(`selectPackage`,e)},null,8,[`action-items`,`cards`,`largest-files`,`package-insights`,`package-type-summary`])]),_:1},8,[`items`])])):n.activeTab===`diagnostics`?(O(),F(`section`,Hd,[P(r.AnalyzeDiagnosticsSection,{"action-items":n.actionItems,"active-work-queue-item-id":n.activeWorkQueueItemId,"baseline-snapshot-id":n.baselineSnapshotId,"comparison-mode":n.comparisonMode,"history-snapshots":n.historySnapshots,"queued-action-keys":n.queuedActionKeys,"selected-action-key":n.selectedActionKey,"work-queue-items":n.workQueueItems,onAddActionToQueue:t[4]||=e=>r.emit(`addActionToQueue`,e),onClearCompletedWorkQueue:t[5]||=e=>r.emit(`clearCompletedWorkQueue`),onCopyPr:t[6]||=e=>r.emit(`copyPr`),onCopyWorkQueue:t[7]||=e=>r.emit(`copyWorkQueue`),onRemoveWorkQueueItem:t[8]||=e=>r.emit(`removeWorkQueueItem`,e),onSelectAction:t[9]||=e=>r.emit(`selectAction`,e),onSelectWorkQueueItem:t[10]||=e=>r.emit(`selectWorkQueueItem`,e),onSetBaseline:t[11]||=e=>r.emit(`setBaseline`,e),onSetComparisonMode:t[12]||=e=>r.emit(`setComparisonMode`,e),onToggleWorkQueueItem:t[13]||=e=>r.emit(`toggleWorkQueueItem`,e)},null,8,[`action-items`,`active-work-queue-item-id`,`baseline-snapshot-id`,`comparison-mode`,`history-snapshots`,`queued-action-keys`,`selected-action-key`,`work-queue-items`])])):n.activeTab===`review`?(O(),F(`section`,Ud,[P(r.AnalyzeDraggableGrid,{"grid-class":`grid h-full min-h-0 min-w-0 gap-2 overflow-x-hidden overflow-y-auto xl:overflow-hidden`,items:n.reviewLayoutItems,"storage-key":`weapp-vite:dashboard:analyze-layout:review`},{review:_(()=>[P(r.PrReviewChecklistPanel,{checklist:n.prReviewChecklist,"copy-status":n.copyStatus,onCopy:t[14]||=e=>r.emit(`copyReviewChecklist`),onSelect:t[15]||=e=>r.emit(`selectReviewChecklistItem`,e)},null,8,[`checklist`,`copy-status`])]),_:1},8,[`items`])])):n.activeTab===`graph`?(O(),F(`section`,Wd,[P(r.ChunkGraphPanel,{result:n.result,theme:n.theme},null,8,[`result`,`theme`])])):n.activeTab===`treemap`?(O(),F(`section`,Gd,[P(r.TreemapCard,{"bind-chart-ref":n.bindChartRef,"filter-mode":n.treemapFilterMode,"filter-options":n.treemapFilterOptions,"can-use-selected-package-filter":n.canUseSelectedPackageFilter,"has-comparison":n.hasTreemapComparison,"comparison-label":n.treemapComparisonLabel,"color-mode":n.treemapColorMode,"color-description":n.treemapColorDescription,legend:n.treemapLegend,nodes:n.treemapNodes,path:n.treemapPath,result:n.result,"selected-meta":n.selectedTreemapMeta,"is-empty":n.isTreemapEmpty,onResetFocus:t[16]||=e=>r.emit(`resetTreemapFocus`),onSelectNode:t[17]||=e=>r.emit(`selectTreemapNode`,e),onOpenSource:t[18]||=e=>r.emit(`openTreemapSource`,e),onInspectProblem:t[19]||=e=>r.emit(`inspectTreemapProblem`,e),onUpdateColorMode:t[20]||=e=>r.emit(`updateTreemapColorMode`,e),onUpdateFilterMode:t[21]||=e=>r.emit(`updateTreemapFilterMode`,e)},null,8,[`bind-chart-ref`,`filter-mode`,`filter-options`,`can-use-selected-package-filter`,`has-comparison`,`comparison-label`,`color-mode`,`color-description`,`legend`,`nodes`,`path`,`result`,`selected-meta`,`is-empty`])])):n.activeTab===`files`?(O(),F(`section`,Kd,[P(r.AnalyzeDetailsPanel,{"largest-files":n.filteredLargestFiles,"selected-file-modules":n.selectedFileModules,"budget-warnings":n.budgetWarnings,"budget-config":n.budgetConfig,"package-insights":n.packageInsights,"total-bytes":n.totalBytes,"active-budget-warning-id":n.activeBudgetWarningId,"active-largest-file-key":n.activeLargestFileKey,"selected-treemap-meta":n.selectedTreemapMeta,onSelectBudgetWarning:t[22]||=e=>r.emit(`selectBudgetWarning`,e),onSelectFile:t[23]||=e=>r.emit(`selectFile`,e)},null,8,[`largest-files`,`selected-file-modules`,`budget-warnings`,`budget-config`,`package-insights`,`total-bytes`,`active-budget-warning-id`,`active-largest-file-key`,`selected-treemap-meta`])])):n.activeTab===`source`?(O(),F(`section`,qd,[P(r.AnalyzeDraggableGrid,{"grid-class":`grid h-full min-h-0 min-w-0 gap-2 overflow-x-hidden overflow-y-auto xl:overflow-hidden`,items:n.sourceLayoutItems,"storage-key":`weapp-vite:dashboard:analyze-layout:source`},{source:_(()=>[P(r.SourceArtifactComparePanel,{"active-file-key":n.activeLargestFileKey,files:n.filteredLargestFiles,theme:n.theme,"initial-source-path":n.treemapSourcePath,onSelectFile:t[24]||=e=>r.emit(`selectFile`,e)},null,8,[`active-file-key`,`files`,`theme`,`initial-source-path`])]),_:1},8,[`items`])])):n.activeTab===`packages`?(O(),F(`section`,Jd,[P(r.AnalyzeDraggableGrid,{"grid-class":`grid h-full min-h-0 min-w-0 gap-2 overflow-x-hidden overflow-y-auto xl:overflow-hidden`,items:n.packagesLayoutItems,"storage-key":`weapp-vite:dashboard:analyze-layout:packages`},{packages:_(()=>[P(r.PackagesPanel,{"package-insights":n.packageInsights,"budget-warnings":n.budgetWarnings,"selected-treemap-meta":n.selectedTreemapMeta},null,8,[`package-insights`,`budget-warnings`,`selected-treemap-meta`])]),_:1},8,[`items`])])):(O(),F(`section`,Yd,[P(r.AnalyzeDraggableGrid,{"grid-class":`grid h-full min-h-0 min-w-0 items-start gap-2 overflow-x-hidden overflow-y-auto`,items:n.modulesLayoutItems,"storage-key":`weapp-vite:dashboard:analyze-layout:modules`},{modules:_(()=>[P(r.ModulesPanel,{"duplicate-modules":n.filteredDuplicateModules,"module-source-summary":n.moduleSourceSummary,"increment-attribution":n.incrementAttribution,"increment-summary":n.incrementSummary,"visible-largest-files":n.visibleLargestFiles},null,8,[`duplicate-modules`,`module-source-summary`,`increment-attribution`,`increment-summary`,`visible-largest-files`])]),_:1},8,[`items`])]))}var Zd=I(Bd,[[`render`,Xd]]),Qd=r({__name:`AnalyzeExportMenu`,props:{open:{type:Boolean}},emits:[`update:open`,`copySummary`,`copyMarkdown`,`copyPr`,`exportJson`,`exportMarkdown`,`exportCsv`],setup(e,{expose:t,emit:n}){t();let r=n,i={emit:r,exportActions:[{key:`summary`,label:`复制摘要`,description:`关键指标和首要风险,适合 IM 快速同步。`,iconName:`metric-copy`,action:()=>r(`copySummary`)},{key:`markdown-copy`,label:`复制完整报告`,description:`包含预算、包体、Top 文件和重复模块表格。`,iconName:`file-samples`,action:()=>r(`copyMarkdown`)},{key:`pr`,label:`复制 PR 摘要`,description:`面向评审评论的增量、预算和重复模块摘要。`,iconName:`metric-copy`,action:()=>r(`copyPr`)},{key:`json`,label:`导出 JSON`,description:`保留原始 analyze payload,适合离线排查。`,iconName:`metric-size-outline`,action:()=>r(`exportJson`)},{key:`markdown`,label:`导出 MD`,description:`生成完整 Markdown 报告文件。`,iconName:`file-samples`,action:()=>r(`exportMarkdown`)},{key:`csv`,label:`导出 CSV`,description:`导出包、文件、重复模块和增量归因明细。`,iconName:`file-samples`,action:()=>r(`exportCsv`)}],get pillButtonStyles(){return ye},DashboardIcon:L};return Object.defineProperty(i,"__isScriptSetup",{enumerable:!1,value:!0}),i}}),$d={class:`h-4.5 w-4.5`},ef={key:0,class:`absolute right-0 top-[calc(100%+0.45rem)] z-50 grid w-76 gap-1.5 rounded-lg border border-(--dashboard-border) bg-(--dashboard-panel) p-1.5 shadow-(--dashboard-shadow)`},tf=[`onClick`],nf={class:`mt-0.5 h-4.5 w-4.5 text-(--dashboard-text-soft)`},rf={class:`min-w-0`},af={class:`block font-medium`},of={class:`mt-0.5 block text-xs leading-5 text-(--dashboard-text-soft)`};function sf(e,t,n,r,i,a){return O(),F(`div`,{class:`relative shrink-0`,onClick:t[1]||=T(()=>{},[`stop`])},[E(`button`,{class:l(r.pillButtonStyles({kind:`nav`,active:n.open})),type:`button`,onClick:t[0]||=e=>r.emit(`update:open`,!n.open)},[E(`span`,$d,[P(r.DashboardIcon,{name:`nav-menu`})]),t[2]||=C(` 更多 `,-1)],2),n.open?(O(),F(`div`,ef,[(O(),F(j,null,f(r.exportActions,e=>E(`button`,{key:e.key,class:`grid grid-cols-[1.125rem_minmax(0,1fr)] gap-x-2 rounded-md px-3 py-2 text-left text-sm text-(--dashboard-text) transition hover:bg-(--dashboard-panel-muted)`,type:`button`,onClick:e.action},[E(`span`,nf,[P(r.DashboardIcon,{name:e.iconName},null,8,[`name`])]),E(`span`,rf,[E(`span`,af,b(e.label),1),E(`span`,of,b(e.description),1)])],8,tf)),64))])):N(``,!0)])}var cf=I(Qd,[[`render`,sf]]),lf=r({__name:`AppInfoPill`,props:{label:{},iconName:{},uppercase:{type:Boolean}},setup(e,{expose:t}){t();let n={DashboardIcon:L};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}}),uf={key:0,class:`mr-1.5 h-4 w-4 text-(--dashboard-accent)`};function df(e,t,n,r,i,a){return O(),F(`span`,{class:l([`inline-flex items-center rounded-full border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-2.5 py-1 text-xs font-medium text-(--dashboard-text-soft)`,n.uppercase?`tracking-[0.18em] uppercase`:void 0])},[n.iconName?(O(),F(`span`,uf,[P(r.DashboardIcon,{name:n.iconName},null,8,[`name`])])):N(``,!0),C(` `+b(n.label),1)],2)}var ff=I(lf,[[`render`,df]]),pf=r({__name:`AnalyzeToolbar`,props:{canSearch:{type:Boolean},canResetView:{type:Boolean},exportStatus:{},moreMenuOpen:{type:Boolean},openWorkQueueCount:{},statusPills:{}},emits:[`copyMarkdown`,`copyPr`,`copySummary`,`copyViewLink`,`exportCsv`,`exportJson`,`exportMarkdown`,`openSearch`,`resetView`,`update:moreMenuOpen`],setup(e,{expose:t,emit:n}){t();let r={emit:n,get pillButtonStyles(){return ye},AnalyzeExportMenu:cf,AppInfoPill:ff,DashboardIcon:L};return Object.defineProperty(r,"__isScriptSetup",{enumerable:!1,value:!0}),r}}),mf={class:`relative z-20 flex min-w-0 items-center gap-2 overflow-visible rounded-lg border border-(--dashboard-border) bg-(--dashboard-panel) px-3 py-2 shadow-(--dashboard-shadow)`},hf={class:`flex min-w-0 flex-1 flex-nowrap items-center gap-2 overflow-x-auto pb-0.5`},gf={class:`h-4.5 w-4.5`},_f={class:`h-4.5 w-4.5`},vf=[`disabled`],yf={class:`h-4.5 w-4.5`};function bf(e,t,n,r,a,o){return O(),F(`section`,mf,[E(`div`,hf,[n.canSearch?(O(),F(`button`,{key:0,class:l([`shrink-0`,r.pillButtonStyles({kind:`nav`,active:!1})]),onClick:t[0]||=e=>r.emit(`openSearch`)},[E(`span`,gf,[P(r.DashboardIcon,{name:`metric-search`})]),t[10]||=C(` 搜索 `,-1)],2)):N(``,!0),n.canSearch?(O(),F(`button`,{key:1,class:l([`shrink-0`,r.pillButtonStyles({kind:`nav`,active:!1})]),onClick:t[1]||=e=>r.emit(`copyViewLink`)},[E(`span`,_f,[P(r.DashboardIcon,{name:`metric-link`})]),t[11]||=C(` 复制视图 `,-1)],2)):N(``,!0),n.canSearch?(O(),F(`button`,{key:2,class:l([`shrink-0 disabled:cursor-not-allowed disabled:opacity-55`,r.pillButtonStyles({kind:`nav`,active:!1})]),disabled:!n.canResetView,onClick:t[2]||=e=>r.emit(`resetView`)},[E(`span`,yf,[P(r.DashboardIcon,{name:`metric-reset`})]),t[12]||=C(` 重置视图 `,-1)],10,vf)):N(``,!0),n.exportStatus?(O(),x(r.AppInfoPill,{key:3,class:`shrink-0`,label:n.exportStatus,uppercase:``},null,8,[`label`])):N(``,!0),n.openWorkQueueCount>0?(O(),x(r.AppInfoPill,{key:4,class:`shrink-0`,"icon-name":`metric-bookmark`,label:`${n.openWorkQueueCount} 个待处理`,uppercase:``},null,8,[`label`])):N(``,!0),(O(!0),F(j,null,f(n.statusPills,e=>(O(),x(r.AppInfoPill,i({key:e.label,class:`shrink-0`},{ref_for:!0},e,{uppercase:``}),null,16))),128))]),n.canSearch?(O(),x(r.AnalyzeExportMenu,{key:0,open:n.moreMenuOpen,"onUpdate:open":t[3]||=e=>r.emit(`update:moreMenuOpen`,e),onCopyMarkdown:t[4]||=e=>r.emit(`copyMarkdown`),onCopyPr:t[5]||=e=>r.emit(`copyPr`),onCopySummary:t[6]||=e=>r.emit(`copySummary`),onExportCsv:t[7]||=e=>r.emit(`exportCsv`),onExportJson:t[8]||=e=>r.emit(`exportJson`),onExportMarkdown:t[9]||=e=>r.emit(`exportMarkdown`)},null,8,[`open`])):N(``,!0)])}var xf=I(pf,[[`render`,bf]]);function Sf(e){return e===`blocked`?`Blocked`:e===`review`?`Review`:`Ready`}function Cf(e){return e===`blocked`?`PR 合并前仍有阻断项`:e===`review`?`建议完成复核后再合并`:`当前清单未发现发布风险`}function wf(e){return{id:`action:${e.key}`,title:e.title,detail:e.value?`${e.meta} · ${e.value}`:e.meta,checked:e.tone===`success`,tone:e.tone,tab:e.tab,actionKey:e.key}}function Tf(e){return{id:`queue:${e.id}`,title:e.title,detail:e.value?`${e.meta} · ${e.value}`:e.meta,checked:!!e.completedAt,tone:e.tone,tab:e.tab,workQueueItemId:e.id}}function Ef(e){return e.items.length===0?[`- [x] ${e.emptyText}`]:e.items.map(e=>`- [${e.checked?`x`:` `}] ${e.title}:${e.detail}`)}function Df(e){return[`## PR 风险清单`,``,`状态:${e.label}`,e.headline,``,...e.metrics.map(e=>`- ${e.label}:${e.value}`),``,...e.lanes.flatMap(e=>[`### ${e.title}`,``,...Ef(e),``])].join(`
19
- `)}function Of(e){let t=e.actionItems.filter(e=>e.tone===`critical`),n=e.actionItems.filter(e=>e.tone===`warning`),r=e.workQueueItems.filter(e=>!e.completedAt),i=e.workQueueItems.filter(e=>e.completedAt),a=new Set(e.workQueueItems.map(e=>e.targetKey)),o=e.actionItems.filter(e=>e.tone!==`critical`&&e.tone!==`success`&&!a.has(e.key)).slice(0,4),s=t.length>0?`blocked`:n.length>0||r.length>0?`review`:`ready`,c=[{key:`blockers`,title:`合并前阻断`,description:`必须先处理的预算、增长或产物异常。`,items:t.slice(0,5).map(wf),emptyText:`没有阻断项。`},{key:`verification`,title:`评审复核`,description:`需要 reviewer 主动确认的高风险变化。`,items:n.slice(0,6).map(wf),emptyText:`没有需要额外复核的风险。`},{key:`followups`,title:`后续跟进`,description:`来自处理清单和剩余建议动作的后续事项。`,items:[...r.slice(0,4).map(Tf),...o.map(wf)].slice(0,6),emptyText:i.length>0?`处理清单已完成。`:`没有待跟进事项。`}],l={status:s,label:Sf(s),headline:Cf(s),description:`${e.actionItems.length} 个分析动作 · ${r.length} 个待处理清单`,metrics:[{label:`阻断项`,value:t.length},{label:`复核项`,value:n.length},{label:`待处理`,value:r.length},{label:`已完成`,value:i.length}],lanes:c};return{...l,report:Df(l)}}function kf(e){return`${(e.ratio*100).toFixed(1)}%`}function Af(e,t,n){if(t&&n)return e.find(e=>e.packageId===t&&e.file===n)}function jf(e,t){let n=e.packages[0],r=n?.files[0]??``,i=t.find(e=>e.id===n?.packageId),a=i?.label??n?.packageLabel??``;return{key:`duplicate:${e.id}`,kind:`duplicate`,title:`减少重复模块 ${e.source}`,meta:`${e.packageCount} 个包复用 · ${e.advice}`,value:`可省 ${R(e.estimatedSavingBytes)}`,tone:e.estimatedSavingBytes>1024?`warning`:`info`,tab:`modules`,priority:72+Math.min(e.estimatedSavingBytes/1024,18),moduleMeta:n&&i?{kind:`module`,nodeId:X(n.packageId,r,e.id),packageId:n.packageId,packageLabel:a,fileName:r,source:e.source,sourceType:e.sourceType,bytes:e.bytes,packageCount:e.packageCount}:void 0}}function Mf(e,t,n){let r=Af(t,e.packageId,e.file),i=n.find(t=>t.id===e.packageId),a=!r&&e.moduleId&&e.packageId&&e.file&&i?{kind:`module`,nodeId:X(e.packageId,e.file,e.moduleId),packageId:e.packageId,packageLabel:e.packageLabel,fileName:e.file,source:e.label,sourceType:e.sourceType??`src`,bytes:e.currentBytes,packageCount:1}:void 0;return{key:`increment:${e.key}`,kind:`increment`,title:`定位增长 ${e.label}`,meta:`${e.category} · ${e.advice}`,value:`+${R(e.deltaBytes)}`,tone:`info`,tab:r?`files`:`modules`,priority:80+Math.min(e.deltaBytes/1024,15),file:r,moduleMeta:a}}function Nf(e){return{actionItems:D(()=>{let t=[];for(let n of e.budgetWarnings.value)t.push({key:`budget:${n.id}`,kind:`budget`,title:`处理 ${n.label} 预算`,meta:`${n.status===`critical`?`已超预算`:`接近预算`} · 当前 ${R(n.currentBytes)} / ${R(n.limitBytes)}`,value:kf(n),tone:n.status===`critical`?`critical`:`warning`,tab:`files`,priority:n.status===`critical`?100+n.ratio:90+n.ratio,warning:n});for(let n of e.incrementAttribution.value.slice(0,12))t.push(Mf(n,e.largestFiles.value,e.packageInsights.value));for(let n of e.duplicateModules.value.filter(e=>e.estimatedSavingBytes>0).slice(0,12))t.push(jf(n,e.packageInsights.value));let n=e.largestFiles.value[0];return n&&t.push({key:`file:${n.packageId}:${n.file}`,kind:`file`,title:`查看最大文件 ${n.file}`,meta:`${n.packageLabel} · ${n.type} · 压缩后 ${R(n.compressedSize)}`,value:R(n.size),tone:`success`,tab:`files`,priority:45,file:n}),t.sort((e,t)=>t.priority-e.priority||e.title.localeCompare(t.title))})}}function Pf(e){return e.filter(e=>e!==void 0&&e!==``).join(` `).toLowerCase()}function Ff(e,t,n){return e.find(e=>e.id===t||e.label===n)}function If(e,t,n){if(t&&n)return e.find(e=>e.packageId===t&&e.file===n)}function Lf(e){return{key:`package:${e.id}`,kind:`package`,title:e.label,meta:`${z(e.type)} · ${e.fileCount} 个产物 · ${e.moduleCount} 个模块`,value:R(e.totalBytes),keywords:Pf([e.id,e.label,e.type,e.totalBytes]),tab:`packages`,packageMeta:{kind:`package`,nodeId:ql(e.id),packageId:e.id,packageLabel:e.label,packageType:e.type,fileCount:e.fileCount,totalBytes:e.totalBytes}}}function Rf(e){return{key:`file:${e.packageId}:${e.file}`,kind:`file`,title:e.file,meta:`${e.packageLabel} · ${e.type} · 压缩后 ${R(e.compressedSize)}`,value:R(e.size),keywords:Pf([e.packageId,e.packageLabel,e.file,e.type,e.source,e.size]),tab:`files`,file:e}}function zf(e){return{key:`budget:${e.id}`,kind:`budget`,title:`${e.label} 预算`,meta:`${e.status===`critical`?`已超预算`:`接近预算`} · ${R(e.currentBytes)} / ${R(e.limitBytes)}`,value:`${(e.ratio*100).toFixed(1)}%`,keywords:Pf([e.id,e.label,e.scope,e.status,e.currentBytes]),tab:`files`,warning:e}}function Bf(e,t){let n=e.packages[0],r=n?.files[0]??``,i=Ff(t,n?.packageId,n?.packageLabel),a=i?.label??n?.packageLabel??``;return{key:`module:${e.id}`,kind:`module`,title:e.source,meta:`${e.sourceType} · ${e.packageCount} 个包复用 · ${e.advice}`,value:`可省 ${R(e.estimatedSavingBytes)}`,keywords:Pf([e.id,e.source,e.sourceType,e.packageCount,e.packages.map(e=>e.packageLabel).join(` `)]),tab:`modules`,moduleMeta:n&&i?{kind:`module`,nodeId:X(n.packageId,r,e.id),packageId:n.packageId,packageLabel:a,fileName:r,source:e.source,sourceType:e.sourceType,bytes:e.bytes,packageCount:e.packageCount}:void 0}}function Vf(e,t,n){let r=If(t,e.packageId,e.file),i=Ff(n,e.packageId,e.packageLabel);return{key:`increment:${e.key}`,kind:`increment`,title:e.label,meta:`${e.category} · ${e.advice}`,value:`+${R(e.deltaBytes)}`,keywords:Pf([e.key,e.label,e.category,e.packageLabel,e.file,e.deltaBytes]),tab:r?`files`:`modules`,file:r,moduleMeta:!r&&e.moduleId&&e.packageId&&e.file&&i?{kind:`module`,nodeId:X(e.packageId,e.file,e.moduleId),packageId:e.packageId,packageLabel:e.packageLabel,fileName:e.file,source:e.label,sourceType:e.sourceType??`src`,bytes:e.currentBytes,packageCount:1}:void 0}}function Hf(e){return{key:`action:${e.key}`,kind:`action`,title:e.title,meta:e.meta,value:e.value,keywords:Pf([e.title,e.meta,e.value,e.kind,e.tone]),tab:e.tab,action:e,warning:e.warning,file:e.file,moduleMeta:e.moduleMeta}}function Uf(e){return{commandItems:D(()=>[...e.actionItems.value.map(Hf),...e.budgetWarnings.value.map(zf),...e.packageInsights.value.map(Lf),...e.largestFiles.value.map(Rf),...e.duplicateModules.value.map(t=>Bf(t,e.packageInsights.value)),...e.incrementAttribution.value.map(t=>Vf(t,e.largestFiles.value,e.packageInsights.value))])}}var Wf=2097152;function Q(e){return e.size??0}function Gf(e){return e.brotliSize??e.gzipSize??ge(Q(e),e.file,e.type)}function Kf(e){return typeof e.brotliSize==`number`||typeof e.gzipSize==`number`?`real`:`estimated`}function qf(e,t){return`${e}\u0000${t}`}function Jf(e){let t=new Map,n=new Map,r=new Map,i=0,a=0;for(let o of e?.packages??[]){let e=0;for(let t of o.files){let s=Q(t);e+=s,i+=s,a+=Gf(t),n.set(qf(o.id,t.file),s);for(let e of t.modules??[]){let n=e.bytes??e.originalBytes??0,i=r.get(e.id);(!i||i.bytes<n)&&r.set(e.id,{source:e.source,sourceType:e.sourceType,bytes:n,packageId:o.id,packageLabel:o.label,file:t.file})}}t.set(o.id,e)}return{packageBytes:t,fileBytes:n,moduleBytes:r,totalBytes:i,compressedBytes:a}}function Yf(e){let t=new Map;for(let n of e.packages)for(let e of n.files)for(let r of e.modules??[])t.has(r.id)||t.set(r.id,{source:r.source,sourceType:r.sourceType,packageId:n.id,packageLabel:n.label,file:e.file});return t}function Xf(e){let t=new Map;for(let n of e?.packages??[])for(let e of n.files)for(let n of e.modules??[]){let e=t.get(n.id),r=n.bytes??0,i=n.originalBytes??r;if(!e){t.set(n.id,{bytes:r,originalBytes:i,sourceType:n.sourceType});continue}t.set(n.id,{bytes:Math.max(e.bytes,r),originalBytes:Math.max(e.originalBytes,i),sourceType:e.sourceType})}return t}function Zf(e){if(e!==`virtual`)return Wf}function Qf(e,t){let n=t.metadata?.budgets;if(!n)return Zf(e);if(e===`main`)return n.mainBytes;if(e===`subPackage`)return n.subPackageBytes;if(e===`independent`)return n.independentBytes}function $f(e){let t=e.limitBytes>0?e.currentBytes/e.limitBytes:0;if(!(t<(e.warningRatio??.85)))return{id:e.id,label:e.label,scope:e.scope,currentBytes:e.currentBytes,limitBytes:e.limitBytes,ratio:t,status:t>=1?`critical`:`warning`}}function ep(e){return e>=1048576?`${(e/1024/1024).toFixed(e%1048576==0?0:2)} MB`:e>=1024?`${(e/1024).toFixed(e%1024==0?0:2)} KB`:`${e} B`}function tp(e){if(!e)return[];let t=[],n=e.packages.flatMap(e=>e.files).reduce((e,t)=>e+Q(t),0),r=e.metadata?.budgets,i=$f({id:`__total__`,label:`总包`,scope:`total`,currentBytes:n,limitBytes:r?.totalBytes??20971520,warningRatio:r?.warningRatio});i&&t.push(i);for(let n of e.packages){let i=Qf(n.type,e);if(!i)continue;let a=$f({id:n.id,label:n.label,scope:n.type,currentBytes:n.files.reduce((e,t)=>e+Q(t),0),limitBytes:i,warningRatio:r?.warningRatio});a&&t.push(a)}return t.sort((e,t)=>t.ratio-e.ratio||e.label.localeCompare(t.label))}function np(e){let t=e?.metadata?.budgets,n=t?.source??`default`;return[{key:`total`,label:`总包预算`,value:`${ep(t?.totalBytes??20971520)}`,source:n},{key:`main`,label:`主包预算`,value:`${ep(t?.mainBytes??2097152)}`,source:n},{key:`subPackage`,label:`分包预算`,value:`${ep(t?.subPackageBytes??2097152)}`,source:n},{key:`independent`,label:`独立分包预算`,value:`${ep(t?.independentBytes??2097152)}`,source:n}]}function rp(e,t){return e.includes(`wevu`)||e.includes(`@weapp-vite/dashboard`)?`WeVu / runtime`:t===`node_modules`||e.includes(`node_modules`)?`第三方依赖`:t===`workspace`?`工作区包`:t===`plugin`?`插件生成`:e.endsWith(`.wxss`)||e.endsWith(`.css`)||e.endsWith(`.scss`)?`样式资源`:e.endsWith(`.wxml`)||e.endsWith(`.json`)?`页面结构`:`业务源码`}function ip(e,t){return e===`第三方依赖`?`检查依赖边界或公共入口。`:e===`WeVu / runtime`?`排查组件和 API 引用边界。`:e===`样式资源`?`检查样式复用和生成范围。`:t?`确认分包归属和懒加载边界。`:`对比新增引用和共享模块。`}function ap(e,t){let n=t===`node_modules`||t===`workspace`?`dependency`:t,r=e.indexOf(`?`),i=(r===-1?e:e.slice(0,r)).replaceAll(`\\`,`/`).replace(/^\0/,``);if(n===`dependency`){let e=i.lastIndexOf(`/node_modules/`);e>=0?i=i.slice(e+14):i.startsWith(`node_modules/`)?i=i.slice(13):t===`workspace`&&(i=(i.match(/(?:^|\/)packages-runtime\/(wevu\/.*)$/)??i.match(/(?:^|\/)(@[^/]+\/[^/]+\/dist\/.*)$/))?.[1]??i)}return`${n}\0${i}`}function op(e){if(!e.result||!e.previousResult)return[];let t=[],n=Yf(e.result);for(let n of e.result.packages)for(let r of n.files){let i=Q(r),a=e.previousMaps.fileBytes.get(qf(n.id,r.file))??0,o=i-a;if(o<=0)continue;let s=rp(r.source??r.file);t.push({key:`file:${n.id}:${r.file}`,label:r.file,category:s,packageId:n.id,packageLabel:n.label,file:r.file,currentBytes:i,previousBytes:a,deltaBytes:o,advice:ip(s,a===0)})}let r=new Map;for(let[t,n]of e.previousMaps.moduleBytes){let e=ap(n.source??t,n.sourceType);r.set(e,Math.max(r.get(e)??0,n.bytes))}let i=new Map;for(let[t,r]of e.moduleInfoMap){let e=n.get(t),a=e?.sourceType??r.sourceType,o=pe(e?.source??t),s=ap(e?.source??t,a),c=i.get(s);c&&c.currentBytes>=r.bytes||i.set(s,{id:t,label:o,sourceType:a,currentBytes:r.bytes,packageId:e?.packageId,packageLabel:e?.packageLabel??``,file:e?.file})}for(let[e,n]of i){let i=r.get(e)??0,a=n.currentBytes-i;if(a<=0)continue;let o=rp(n.label,n.sourceType);t.push({key:`module:${n.id}`,label:n.label,category:o,packageId:n.packageId,packageLabel:n.packageLabel,file:n.file,moduleId:n.id,sourceType:n.sourceType,currentBytes:n.currentBytes,previousBytes:i,deltaBytes:a,advice:ip(o,i===0)})}return t.sort((e,t)=>t.deltaBytes-e.deltaBytes||e.category.localeCompare(t.category)||e.label.localeCompare(t.label))}function sp(e){let t=new Map;for(let n of e){let e=t.get(n.category)??{category:n.category,count:0,deltaBytes:0};e.count+=1,e.deltaBytes+=n.deltaBytes,t.set(n.category,e)}return[...t.values()].sort((e,t)=>t.deltaBytes-e.deltaBytes||t.count-e.count||e.category.localeCompare(t.category))}function cp(e,t){return{packageId:t.packageId,packageLabel:e.get(t.packageId)??t.packageId,files:t.files}}function lp(e,t){return e.includes(`wevu`)||e.includes(`@weapp-vite/dashboard`)?`wevu / dashboard runtime`:t===`node_modules`?`第三方依赖`:t===`plugin`?`插件生成`:t===`workspace`?`工作区包`:e.startsWith(`pages/`)||e.includes(`/pages/`)?`业务页面`:e.startsWith(`components/`)||e.includes(`/components/`)?`业务组件`:e.startsWith(`shared/`)||e.includes(`/shared/`)||e.includes(`/utils/`)?`业务共享`:`业务源码`}function up(e,t){return{sourceType:e,sourceCategory:t,count:0,bytes:0}}function dp(e,t,n,r){return t.some(e=>n.get(e.packageId)===`independent`)?r>0?`含独立分包,先确认隔离要求,再评估公共入口。`:`含独立分包,重复可能来自隔离边界。`:e===`node_modules`?`依赖被多个包带入,检查引用边界或考虑主包公共入口。`:e===`src`||e===`workspace`?`共享源码跨包重复,优先抽公共模块或调整分包归属。`:e===`plugin`?`插件生成内容跨包重复,检查插件产物输出策略。`:`检查该模块是否需要在多个包内重复存在。`}function fp(e){return e.result?e.result.modules.filter(e=>e.packages.length>1).map(t=>{let n=e.moduleInfoMap.get(t.id),r=pe(t.source),i=t.packages.map(t=>cp(e.packageLabelMap,t)),a=n?.bytes??n?.originalBytes??0,o=a*Math.max(t.packages.length-1,0);return{id:t.id,source:r,sourceType:t.sourceType,packageCount:t.packages.length,bytes:a,estimatedSavingBytes:o,advice:dp(t.sourceType,i,e.packageTypeMap,o),packages:i}}).sort((e,t)=>t.estimatedSavingBytes-e.estimatedSavingBytes||t.packageCount-e.packageCount||t.bytes-e.bytes||e.source.localeCompare(t.source)):[]}function pp(e,t){let n=new Map;for(let r of e?.modules??[]){let e=t.get(r.id),i=lp(r.source,r.sourceType),a=`${r.sourceType}:${i}`,o=n.get(a)??up(r.sourceType,i);o.count+=1,o.bytes+=e?.bytes??e?.originalBytes??0,n.set(a,o)}return[...n.values()].sort((e,t)=>t.bytes-e.bytes||t.count-e.count||e.sourceCategory.localeCompare(t.sourceCategory))}function mp(e,t){return{label:e,value:t}}function hp(e,t,n){let r=Q(t),i=n.get(qf(e.id,t.file));return{packageId:e.id,packageLabel:e.label,packageType:e.type,file:t.file,size:r,gzipSize:t.gzipSize,brotliSize:t.brotliSize,compressedSize:Gf(t),compressedSizeSource:Kf(t),sizeDeltaBytes:typeof i==`number`?r-i:void 0,type:t.type,from:t.from,isEntry:!!t.isEntry,moduleCount:t.modules?.length??0,modules:t.modules,source:t.source}}function gp(e,t,n){let r=Q(t),i=n.get(qf(e,t.file));return{file:t.file,size:r,gzipSize:t.gzipSize,brotliSize:t.brotliSize,compressedSize:Gf(t),compressedSizeSource:Kf(t),sizeDeltaBytes:typeof i==`number`?r-i:void 0,type:t.type,from:t.from,isEntry:!!t.isEntry,moduleCount:t.modules?.length??0}}function _p(e){if(!e.result)return{packageCount:0,moduleCount:0,duplicateCount:0,totalBytes:0,gzipBytes:0,brotliBytes:0,estimatedCompressedBytes:0,compressedBytes:0,compressedSizeSource:`estimated`,subpackageCount:0,entryCount:0,budgetWarningCount:0};let t=e.result.packages.flatMap(e=>e.files),n=t.reduce((e,t)=>e+Q(t),0),r=t.reduce((e,t)=>e+(t.gzipSize??0),0),i=t.reduce((e,t)=>e+(t.brotliSize??0),0),a=t.reduce((e,t)=>e+ge(Q(t),t.file,t.type),0),o=t.some(e=>typeof e.gzipSize==`number`||typeof e.brotliSize==`number`),s=o?t.reduce((e,t)=>e+Gf(t),0):a;return{packageCount:e.result.packages.length,moduleCount:e.result.modules.length,duplicateCount:e.result.modules.filter(e=>e.packages.length>1).length,totalBytes:n,gzipBytes:r,brotliBytes:i,estimatedCompressedBytes:a,compressedBytes:s,compressedSizeSource:o?`real`:`estimated`,sizeDeltaBytes:e.previousMaps.totalBytes>0?n-e.previousMaps.totalBytes:void 0,compressedDeltaBytes:e.previousMaps.compressedBytes>0?s-e.previousMaps.compressedBytes:void 0,subpackageCount:e.result.subPackages.length,entryCount:t.filter(e=>e.isEntry).length,budgetWarningCount:e.budgetWarnings.length}}function vp(e){let t=new Map;for(let n of e?.packages??[])t.set(n.type,(t.get(n.type)??0)+1);return Array.from(t.entries(),([e,t])=>mp(e,t)).sort((e,t)=>t.value-e.value||e.label.localeCompare(t.label))}function yp(e,t){return e?e.packages.map(n=>{let r=new Set,i=0;for(let t of e.modules)t.packages.some(e=>e.packageId===n.id)&&(r.add(t.id),t.packages.length>1&&i++);let a=n.files.map(e=>gp(n.id,e,t.fileBytes)).sort((e,t)=>t.size-e.size||e.file.localeCompare(t.file)).slice(0,5),o=n.files.reduce((e,t)=>e+Q(t),0),s=n.files.reduce((e,t)=>e+(t.gzipSize??0),0),c=n.files.reduce((e,t)=>e+(t.brotliSize??0),0),l=n.files.reduce((e,t)=>e+Gf(t),0),u=n.files.some(e=>typeof e.gzipSize==`number`||typeof e.brotliSize==`number`)?`real`:`estimated`,d=t.packageBytes.get(n.id);return{id:n.id,label:n.label,type:n.type,totalBytes:o,gzipBytes:s,brotliBytes:c,compressedBytes:l,compressedSizeSource:u,sizeDeltaBytes:typeof d==`number`?o-d:void 0,fileCount:n.files.length,chunkCount:n.files.filter(e=>e.type===`chunk`).length,assetCount:n.files.filter(e=>e.type===`asset`).length,moduleCount:r.size,duplicateModuleCount:i,entryFileCount:n.files.filter(e=>e.isEntry).length,topFiles:a}}).sort((e,t)=>t.totalBytes-e.totalBytes||e.label.localeCompare(t.label)):[]}function bp(e,t){let n=[];for(let r of e?.packages??[])for(let e of r.files)n.push(hp(r,e,t));return n.sort((e,t)=>t.size-e.size||e.file.localeCompare(t.file))}function xp(e,t){let n=D(()=>Jf(t?.value??null)),r=D(()=>new Map((e.value?.packages??[]).map(e=>[e.id,e.label]))),i=D(()=>new Map((e.value?.packages??[]).map(e=>[e.id,e.type]))),a=D(()=>Xf(e.value)),o=D(()=>tp(e.value)),s=D(()=>np(e.value)),c=D(()=>op({result:e.value,previousResult:t?.value,previousMaps:n.value,moduleInfoMap:a.value})),l=D(()=>sp(c.value)),u=D(()=>_p({result:e.value,previousMaps:n.value,budgetWarnings:o.value})),d=D(()=>vp(e.value)),f=D(()=>yp(e.value,n.value)),p=D(()=>bp(e.value,n.value.fileBytes));return{artifactFiles:p,summary:u,packageTypeSummary:d,packageInsights:f,largestFiles:D(()=>p.value.slice(0,18)),duplicateModules:D(()=>fp({result:e.value,moduleInfoMap:a.value,packageLabelMap:r.value,packageTypeMap:i.value})),moduleSourceSummary:D(()=>pp(e.value,a.value)),budgetWarnings:o,budgetLimitItems:s,incrementAttribution:c,incrementSummary:l,subPackages:D(()=>e.value?.subPackages??[])}}var Sp=[`action`,`file`,`budget`],Cp=[`critical`,`warning`,`info`,`success`],wp=[`overview`,`diagnostics`,`graph`,`treemap`,`files`,`source`,`packages`,`modules`];function Tp(){return new Date().toISOString()}function Ep(e,t){return typeof e==`string`&&t.includes(e)}function Dp(e){if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.id==`string`&&Ep(t.targetKind,Sp)&&typeof t.targetKey==`string`&&typeof t.title==`string`&&typeof t.meta==`string`&&Ep(t.tone,Cp)&&Ep(t.tab,wp)&&typeof t.createdAt==`string`}function Op(e){if(!Array.isArray(e))return[];let t=new Map;for(let n of e)Dp(n)&&t.set(n.id,{id:n.id,targetKind:n.targetKind,targetKey:n.targetKey,title:n.title,meta:n.meta,value:typeof n.value==`string`?n.value:void 0,tone:n.tone,tab:n.tab,createdAt:n.createdAt,completedAt:typeof n.completedAt==`string`?n.completedAt:void 0});return[...t.values()].sort((e,t)=>!!e.completedAt==!!t.completedAt?Date.parse(t.createdAt)-Date.parse(e.createdAt):e.completedAt?1:-1)}function kp(e,t=Tp()){return{id:`action:${e.key}`,targetKind:`action`,targetKey:e.key,title:e.title,meta:e.meta,value:e.value,tone:e.tone,tab:e.tab,createdAt:t}}function Ap(e){let t=Op(e).map(e=>`| ${e.completedAt?`完成`:`待处理`} | ${e.title.replaceAll(`|`,`\\|`)} | ${e.meta.replaceAll(`|`,`\\|`)} | ${e.value??`-`} | ${e.tab} |`);return[`# dashboard 处理清单`,``,`待处理:${e.filter(e=>!e.completedAt).length}`,`已完成:${e.filter(e=>e.completedAt).length}`,``,`| 状态 | 事项 | 说明 | 数值 | 视图 |`,`| --- | --- | --- | ---: | --- |`,t.join(`
2
+ import{r as e}from"./rolldown-runtime.js";import{$ as t,A as n,B as r,C as i,D as a,F as o,G as s,H as c,J as l,K as u,L as d,M as f,O as p,P as m,Q as h,R as g,S as _,U as v,V as y,W as b,X as x,Y as S,_ as C,a as w,d as T,f as E,g as D,h as O,j as k,k as A,l as j,m as M,o as N,p as ee,q as P,s as te,t as ne,u as F,v as I,w as L,x as R,y as re}from"./vue.js";import{a as ie,i as ae,n as oe,r as se,s as ce,t as le}from"./monaco.js";import{D as ue,E as de,F as z,N as fe,O as pe,S as B,_ as me,a as he,c as ge,d as _e,f as ve,i as ye,k as be,l as xe,n as Se,o as Ce,r as we,t as Te,u as V,v as Ee,x as H,y as U}from"./index.js";import{a as De,c as W,l as Oe,n as ke,o as Ae,r as je,s as Me,t as G}from"./AppEmptyState.js";import{r as K,t as Ne}from"./AppMetricTile.js";import{a as Pe,c as Fe,d as Ie,f as Le,i as Re,l as ze,n as Be,o as Ve,p as He,r as Ue,s as We,t as Ge,u as Ke}from"./echarts.js";function qe(e){return e.replaceAll(`\\`,`/`).replace(/^\.\//,``).replace(/^\//,``).split(/[?#]/,1)[0]??``}function Je(e,t){let n=qe(t);if(!t.startsWith(`.`))return n;let r=[...qe(e).split(`/`).slice(0,-1),...n.split(`/`)],i=[];for(let e of r)e&&e!==`.`&&(e===`..`?i.pop():i.push(e));return i.join(`/`)}function Ye(e,t,n){return{id:`chunk:${n.file}`,kind:`chunk`,label:n.file,packageId:e,packageLabel:t,size:n.size??0,isEntry:n.isEntry,moduleCount:n.modules?.length??0}}function Xe(e){let t=[],n=new Map,r=new Map,i=[];for(let a of e.packages){let e=a.files.filter(e=>e.type===`chunk`),o={id:`package:${a.id}`,kind:`package`,label:a.label,packageId:a.id,packageLabel:a.label,size:a.files.reduce((e,t)=>e+(t.size??0),0),fileCount:a.files.length};t.push(o);for(let s of e){let e=Ye(a.id,a.label,s);t.push(e),i.push({file:s,node:e}),r.set(qe(s.file),e.id);let c={id:`${o.id}->${e.id}:contains`,kind:`contains`,source:o.id,target:e.id};n.set(c.id,c)}}let a=0,o=0,s=0;for(let{file:e,node:t}of i){let i=[...(e.imports??[]).map(e=>({file:e,kind:`static-import`})),...(e.dynamicImports??[]).map(e=>({file:e,kind:`dynamic-import`}))];for(let c of i){let i=r.get(Je(e.file,c.file));if(!i){a+=1;continue}let l={id:`${t.id}->${i}:${c.kind}`,kind:c.kind,source:t.id,target:i};n.has(l.id)||(n.set(l.id,l),c.kind===`dynamic-import`?s+=1:o+=1)}}return{dynamicImportCount:s,edges:[...n.values()],nodes:t,staticImportCount:o,unresolvedImportCount:a}}function Ze(e,t){let n=e.nodes.filter(e=>e.kind===`package`),r=e.nodes.filter(e=>e.kind===`chunk`),i=t.query.trim().toLowerCase(),a=r.filter(e=>t.packageId===`all`||e.packageId===t.packageId).filter(e=>!i||e.label.toLowerCase().includes(i)).sort((e,t)=>t.size-e.size),o=new Set(a.map(e=>e.id)),s=new Set;for(let t of e.edges){if(t.kind===`contains`)continue;let e=o.has(t.source),n=o.has(t.target);e&&!n?s.add(t.target):n&&!e&&s.add(t.source)}let c=r.filter(e=>s.has(e.id)).sort((e,t)=>t.size-e.size),l=[...new Map([...a,...c].map(e=>[e.id,e])).values()],u=new Set(n.map(e=>e.packageId)),d=[],f=new Set,p=t.maxNodes;for(let e of l){let t=u.has(e.packageId)&&!f.has(e.packageId),n=t?2:1;n>p||(d.push(e),t&&f.add(e.packageId),p-=n)}let m=[...n.filter(e=>f.has(e.packageId)),...d],h=new Set(m.map(e=>e.id)),g=new Set(l.map(e=>e.packageId)),_=new Set([...l.map(e=>e.id),...n.filter(e=>g.has(e.packageId)).map(e=>e.id)]),v=e.edges.filter(e=>_.has(e.source)&&_.has(e.target)),y=e.edges.filter(e=>h.has(e.source)&&h.has(e.target)).sort((e,t)=>Number(e.kind===`contains`)-Number(t.kind===`contains`)).slice(0,t.maxEdges);return{edges:y,nodes:m,truncatedEdgeCount:Math.max(0,v.length-y.length),truncatedNodeCount:Math.max(0,_.size-m.length)}}var Qe={action:`动作`,budget:`预算`,package:`包`,file:`文件`,increment:`增量`,module:`模块`},$e={action:`warning`,budget:`warning`,package:`neutral`,file:`neutral`,module:`neutral`,increment:`info`},et=[{value:`all`,label:`全部`},{value:`action`,label:`动作`},{value:`budget`,label:`预算`},{value:`package`,label:`包`},{value:`file`,label:`文件`},{value:`module`,label:`模块`},{value:`increment`,label:`增量`}];function tt(e,t){let n=u(),r=u(``),i=u(0),a=u(`all`),o=M(()=>{let t=r.value.trim().toLowerCase();return e.items.filter(e=>a.value!==`all`&&e.kind!==a.value?!1:!t||`${e.title} ${e.meta} ${e.value??``} ${e.key} ${e.keywords}`.toLowerCase().includes(t)).slice(0,40)}),s=M(()=>o.value[i.value]??null),c=M(()=>{let t=a.value===`all`?`全部类型`:Qe[a.value];return`匹配 ${o.value.length} / ${e.items.length} 项 · ${t}`});y(()=>e.open,async e=>{e?(await A(),n.value?.focus()):(r.value=``,a.value=`all`,i.value=0)}),y(o,()=>{i.value=0});function l(e){return Qe[e]}function d(e){return Ae({tone:$e[e]})}function f(e){t(`select`,e),t(`close`)}function p(e){if(e.key===`Escape`)e.preventDefault(),t(`close`);else if(e.key===`ArrowDown`)e.preventDefault(),i.value=Math.min(i.value+1,Math.max(o.value.length-1,0));else if(e.key===`ArrowUp`)e.preventDefault(),i.value=Math.max(i.value-1,0);else if(e.key===`Enter`){e.preventDefault();let t=o.value[i.value];t&&f(t)}}return{activeIndex:i,filteredItems:o,getKindLabel:l,getKindTone:d,handleKeydown:p,kindFilter:a,kindOptions:et,query:r,resultSummary:c,searchInputRef:n,selectedItem:s,selectItem:f}}var nt=L({__name:`AnalyzeCommandPalette`,props:{open:{type:Boolean},items:{}},emits:[`close`,`select`],setup(e,{expose:t,emit:n}){t();let r=e,i=n,{activeIndex:a,filteredItems:o,getKindLabel:s,getKindTone:c,handleKeydown:l,kindFilter:u,kindOptions:d,query:f,resultSummary:p,searchInputRef:m,selectedItem:h,selectItem:g}=tt(r,i),_={props:r,emit:i,activeIndex:a,filteredItems:o,getKindLabel:s,getKindTone:c,handleKeydown:l,kindFilter:u,kindOptions:d,query:f,resultSummary:p,searchInputRef:m,selectedItem:h,selectItem:g,AppEmptyState:G,AppSelect:be,DashboardIcon:pe};return Object.defineProperty(_,"__isScriptSetup",{enumerable:!1,value:!0}),_}}),rt={class:`mx-auto grid h-[min(44rem,82vh)] w-full max-w-5xl grid-rows-[auto_minmax(0,1fr)] overflow-hidden rounded-lg border border-(--dashboard-border-strong) bg-(--dashboard-panel-strong) shadow-2xl`},it={class:`grid gap-3 border-b border-(--dashboard-border) px-4 py-3`},at={class:`flex items-center gap-3`},ot={class:`h-5 w-5 shrink-0 text-(--dashboard-accent)`},st={class:`flex flex-wrap items-center justify-between gap-2`},ct={class:`text-xs text-(--dashboard-text-soft)`},lt={class:`grid min-h-0 gap-2 overflow-hidden p-2 lg:grid-cols-[minmax(0,1fr)_minmax(16rem,0.52fr)]`},ut={key:1,class:`grid max-h-full min-h-0 gap-1 overflow-y-auto pr-1`},dt=[`onMouseenter`,`onClick`],ft={class:`flex items-start justify-between gap-3`},pt={class:`min-w-0`},mt={class:`flex min-w-0 items-center gap-2`},ht={class:`truncate font-medium text-(--dashboard-text)`},gt={class:`mt-1 truncate text-xs text-(--dashboard-text-soft)`},_t={key:0,class:`max-w-36 shrink-0 truncate text-sm font-medium text-(--dashboard-accent)`},vt={class:`grid min-h-0 grid-rows-[auto_minmax(0,1fr)] gap-3 overflow-hidden rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-4`},yt={class:`flex items-start justify-between gap-3`},bt={key:1,class:`grid min-h-0 content-start gap-3 overflow-y-auto`},xt={class:`font-medium`},St={class:`mt-1 text-sm leading-6 text-(--dashboard-text-muted)`},Ct={class:`grid gap-2 text-sm`},wt={class:`flex items-center justify-between gap-3 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel) px-3 py-2`},Tt={key:0,class:`flex items-center justify-between gap-3 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel) px-3 py-2`},Et={class:`text-(--dashboard-accent)`};function Dt(e,n,r,i,a,o){return f(),D(ee,{to:`body`},[_(te,{"enter-active-class":`transition duration-150 ease-out`,"enter-from-class":`opacity-0`,"enter-to-class":`opacity-100`,"leave-active-class":`transition duration-100 ease-in`,"leave-from-class":`opacity-100`,"leave-to-class":`opacity-0`},{default:c(()=>[r.open?(f(),I(`div`,{key:0,class:`fixed inset-0 z-[70] grid place-items-start bg-slate-950/45 px-3 py-12 backdrop-blur-sm md:px-6 md:py-[9vh]`,onClick:n[4]||=T(e=>i.emit(`close`),[`self`])},[O(`section`,rt,[O(`div`,it,[O(`div`,at,[O(`span`,ot,[_(i.DashboardIcon,{name:`metric-search`})]),v(O(`input`,{ref:`searchInputRef`,"onUpdate:modelValue":n[0]||=e=>i.query=e,class:`min-w-0 flex-1 bg-transparent text-base outline-none placeholder:text-(--dashboard-text-soft)`,placeholder:`搜索包、文件、模块、预算`,onKeydown:n[1]||=(...e)=>i.handleKeydown&&i.handleKeydown(...e)},null,544),[[j,i.query]])]),O(`div`,st,[O(`p`,ct,t(i.resultSummary),1),_(i.AppSelect,{modelValue:i.kindFilter,"onUpdate:modelValue":n[2]||=e=>i.kindFilter=e,class:`w-40`,label:`筛选搜索结果类型`,options:i.kindOptions,size:`sm`},null,8,[`modelValue`,`options`])])]),O(`div`,lt,[i.filteredItems.length===0?(f(),D(i.AppEmptyState,{key:0,compact:``},{default:c(()=>[...n[5]||=[R(` 没有匹配结果。 `,-1)]]),_:1})):(f(),I(`ul`,ut,[(f(!0),I(E,null,m(i.filteredItems,(e,n)=>(f(),I(`li`,{key:e.key,class:`list-none`},[O(`button`,{type:`button`,class:x([`w-full rounded-md border px-3 py-2.5 text-left transition`,n===i.activeIndex?`border-(--dashboard-accent) bg-(--dashboard-accent-soft)`:`border-transparent hover:border-(--dashboard-border) hover:bg-(--dashboard-panel-muted)`]),onMouseenter:e=>i.activeIndex=n,onClick:t=>i.selectItem(e)},[O(`div`,ft,[O(`div`,pt,[O(`div`,mt,[O(`span`,{class:x(i.getKindTone(e.kind))},t(i.getKindLabel(e.kind)),3),O(`p`,ht,t(e.title),1)]),O(`p`,gt,t(e.meta),1)]),e.value?(f(),I(`span`,_t,t(e.value),1)):C(``,!0)])],42,dt)]))),128))])),O(`aside`,vt,[O(`div`,yt,[n[6]||=O(`div`,null,[O(`p`,{class:`text-[11px] uppercase tracking-[0.2em] text-(--dashboard-accent)`},` Preview `),O(`h3`,{class:`mt-1 text-base font-semibold`},` 当前命令 `)],-1),i.selectedItem?(f(),I(`span`,{key:0,class:x(i.getKindTone(i.selectedItem.kind))},t(i.getKindLabel(i.selectedItem.kind)),3)):C(``,!0)]),i.selectedItem?(f(),I(`div`,bt,[O(`div`,null,[O(`h4`,xt,t(i.selectedItem.title),1),O(`p`,St,t(i.selectedItem.meta),1)]),O(`div`,Ct,[O(`div`,wt,[n[8]||=O(`span`,{class:`text-xs uppercase tracking-[0.16em] text-(--dashboard-text-soft)`},`Tab`,-1),O(`strong`,null,t(i.selectedItem.tab),1)]),i.selectedItem.value?(f(),I(`div`,Tt,[n[9]||=O(`span`,{class:`text-xs uppercase tracking-[0.16em] text-(--dashboard-text-soft)`},`Value`,-1),O(`strong`,Et,t(i.selectedItem.value),1)])):C(``,!0)]),O(`button`,{type:`button`,class:`inline-flex h-9 items-center justify-center rounded-md border border-(--dashboard-border) bg-(--dashboard-panel) px-3 text-sm font-medium text-(--dashboard-text) transition hover:border-(--dashboard-border-strong) hover:text-(--dashboard-accent) focus:border-(--dashboard-border-strong) focus:outline-none`,onClick:n[3]||=e=>i.selectItem(i.selectedItem)},` 跳转到结果 `)])):(f(),D(i.AppEmptyState,{key:0,compact:``},{default:c(()=>[...n[7]||=[R(` 选择左侧结果后查看目标和跳转位置。 `,-1)]]),_:1}))])])])])):C(``,!0)]),_:1})])}var Ot=z(nt,[[`render`,Dt]]),kt=L({__name:`AnalyzeEmptyPayloadPanel`,setup(e,{expose:t}){t();let n={get RouterLink(){return ne},AppSurfaceCard:ke};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}}),At={class:`grid gap-3 xl:grid-cols-[minmax(0,1fr)_minmax(18rem,0.92fr)]`},jt={class:`rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-4`},Mt={class:`mt-4 grid gap-2`},Nt={class:`grid gap-2`};function Pt(e,n,r,i,a,o){return f(),D(i.AppSurfaceCard,{eyebrow:`Analyze`,title:`等待分析数据注入`,"icon-name":`hero-commands`,tone:`strong`,padding:`header`},{default:c(()=>[O(`div`,At,[O(`div`,jt,[n[0]||=O(`p`,{class:`text-[11px] uppercase tracking-[0.24em] text-(--dashboard-text-soft)`},` recommended commands `,-1),O(`div`,Mt,[(f(),I(E,null,m([`weapp-vite analyze`,`weapp-vite build --ui`,`weapp-vite dev --ui`],e=>O(`code`,{key:e,class:`rounded-md bg-slate-950 px-3 py-3 text-xs text-slate-100 dark:bg-slate-900`},t(e),1)),64))])]),O(`div`,Nt,[_(i.RouterLink,{class:`rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-4 py-4 transition hover:border-(--dashboard-border-strong) hover:bg-(--dashboard-panel)`,to:`/`},{default:c(()=>[...n[1]||=[O(`p`,{class:`font-medium`},` 返回工作台 `,-1),O(`p`,{class:`mt-1 text-sm leading-6 text-(--dashboard-text-muted)`},` 查看当前状态和命令。 `,-1)]]),_:1}),_(i.RouterLink,{class:`rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-4 py-4 transition hover:border-(--dashboard-border-strong) hover:bg-(--dashboard-panel)`,to:`/activity`},{default:c(()=>[...n[2]||=[O(`p`,{class:`font-medium`},` 查看活动流 `,-1),O(`p`,{class:`mt-1 text-sm leading-6 text-(--dashboard-text-muted)`},` 观察命令、构建、HMR 和诊断事件。 `,-1)]]),_:1})])])]),_:1})}var Ft=z(kt,[[`render`,Pt]]);function It(e){return Math.max(0,Math.min(100,Math.round(e)))}function Lt(e){return e===`blocked`?`Blocked`:e===`review`?`Review`:`Ready`}function Rt(e){return e===`blocked`?`发布前需要先处理阻断项`:e===`review`?`建议评审后再发布`:`当前分析未发现阻断项`}function zt(e){let t=[];for(let n of[...e.criticalActions,...e.warningActions].slice(0,3))t.push(`${n.title}:${n.meta}`);return t.length===0&&e.largestPackage&&t.push(`持续关注最大包 ${e.largestPackage.label},当前 ${U(e.largestPackage.totalBytes)}。`),t.length===0&&e.largestFile&&t.push(`持续关注最大文件 ${e.largestFile.file},当前 ${U(e.largestFile.size)}。`),t}function Bt(e){return[`# dashboard 发布门禁`,``,`状态:${e.label}`,`风险分:${e.score}`,e.headline,``,`## 指标`,``,...e.metrics.map(e=>`- ${e.label}:${e.value}`),``,`## 建议`,``,...e.recommendations.length>0?e.recommendations.map(e=>`- ${e}`):[`- 当前没有需要立即处理的事项。`],``].join(`
3
+ `)}function Vt(e){let t=e.actionItems.filter(e=>e.tone===`critical`),n=e.actionItems.filter(e=>e.tone===`warning`),r=e.largestFiles[0],i=e.packageInsights[0],a=t.length>0?`blocked`:n.length>0?`review`:`ready`,o=It(100-t.length*28-n.length*12),s=[{label:`阻断项`,value:t.length},{label:`建议项`,value:n.length},{label:`最大包`,value:i?U(i.totalBytes):`—`},{label:`最大文件`,value:r?U(r.size):`—`}],c={status:a,label:Lt(a),score:o,headline:Rt(a),description:`${e.actionItems.length} 个候选事项 · ${e.packageInsights.length} 个包 · ${e.largestFiles.length} 个文件样本`,metrics:s,recommendations:zt({criticalActions:t,warningActions:n,largestFile:r,largestPackage:i})};return{...c,report:Bt(c)}}function Ht(e=1800){let t=u(``),r=null;function i(n){t.value=n,r&&clearTimeout(r),r=setTimeout(()=>{t.value=``,r=null},e)}return n(()=>{r&&clearTimeout(r)}),{actionStatus:t,setActionStatus:i}}function Ut(e){let t=M(()=>e.packageInsights.reduce((e,t)=>e+t.totalBytes,0)),n=M(()=>e.packageInsights.length>0?U(t.value):`—`),r=M(()=>{let t=e.actionItems.filter(e=>e.kind===`budget`),n=t.filter(e=>e.measurementUnknown||e.warning?.status===`unknown`).length;return n>0?`预算告警 ${t.length} 项 · ${n} 项测量待确认`:t.length>0?`预算告警 ${t.length} 项`:e.packageInsights.length>0?`未发现预算告警`:`预算暂无数据`}),i=M(()=>Vt({actionItems:e.actionItems,largestFiles:e.largestFiles,packageInsights:e.packageInsights})),{actionStatus:a,setActionStatus:o}=Ht(),s=M(()=>e.packageInsights.map(e=>{let n=t.value>0?e.totalBytes/t.value*100:0;return{...e,typeLabel:B(e.type),sizeLabel:U(e.totalBytes),compressedLabel:`${e.compressedSizeSource===`real`?`Brotli`:`估算`} ${U(e.compressedBytes)}`,deltaLabel:typeof e.sizeDeltaBytes==`number`?`较基线 ${e.sizeDeltaBytes>=0?`+`:`−`}${U(Math.abs(e.sizeDeltaBytes))}`:``,shareStyle:{width:`${n}%`}}}).sort((e,t)=>t.totalBytes-e.totalBytes)),c=M(()=>s.value.slice(0,3));async function l(){try{await W(i.value.report),o(`已复制`)}catch{o(`复制失败`)}}return{budgetSummary:r,copyReleaseGateReport:l,gateCopyStatus:a,packageOverviewItems:s,packagePreviewItems:c,releaseGate:i,totalPackageBytesLabel:n}}var Wt=L({__name:`AnalyzeBuildSummary`,props:{actionItems:{},cards:{},largestFiles:{},packageInsights:{},packageTypeSummary:{}},emits:[`copyReport`,`selectFile`,`selectPackage`],setup(e,{expose:t,emit:n}){t();let r=e,i=n,{budgetSummary:a,copyReleaseGateReport:o,gateCopyStatus:s,packageOverviewItems:c,packagePreviewItems:l,releaseGate:u,totalPackageBytesLabel:d}=Ut(r),f=P(!1);function p(e){f.value=e.target.open}let m={props:r,emit:i,budgetSummary:a,copyReleaseGateReport:o,gateCopyStatus:s,packageOverviewItems:c,packagePreviewItems:l,releaseGate:u,totalPackageBytesLabel:d,detailsOpen:f,handleDetailsToggle:p,get formatBytes(){return U},get formatPackageType(){return B},DashboardIcon:pe};return Object.defineProperty(m,"__isScriptSetup",{enumerable:!1,value:!0}),m}}),Gt={class:`grid min-w-0 content-start gap-2`},Kt={class:`flex min-w-0 flex-wrap items-baseline justify-between gap-x-2 gap-y-0.5`},qt={class:`text-xl font-semibold leading-7 tabular-nums text-(--dashboard-text)`},Jt={class:`w-full text-xs leading-4 text-(--dashboard-text-muted)`},Yt={class:`min-w-0`},Xt={class:`text-xs leading-4 text-(--dashboard-text-soft)`},Zt={key:0,class:`mt-2 text-sm text-(--dashboard-text-soft)`},Qt={key:1,class:`mt-1 grid min-w-0`},$t=[`aria-label`,`onClick`],en={class:`flex min-w-0 items-baseline justify-between gap-2 text-xs leading-4`},tn=[`title`],nn={class:`shrink-0 tabular-nums text-(--dashboard-text-muted)`},rn={class:`mt-1 block h-1 overflow-hidden rounded-full bg-(--dashboard-panel-muted)`,"aria-hidden":`true`},an={class:`flex min-h-9 cursor-pointer list-none items-center justify-between gap-2 rounded-sm py-1.5 text-xs font-medium text-(--dashboard-text-muted) focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-(--dashboard-accent) pointer-coarse:min-h-11`},on={class:`min-w-0`},sn={key:0,class:`grid min-w-0 gap-5 pt-2 pb-4`},cn={class:`min-w-0`},ln={class:`mt-2 text-xs leading-5 text-(--dashboard-text-soft)`},un={class:`mt-2 grid gap-2 text-sm`},dn={class:`flex flex-wrap items-baseline justify-between gap-x-3 gap-y-1`},fn={class:`font-semibold tabular-nums text-(--dashboard-text)`},pn={class:`text-(--dashboard-text-soft)`},mn={class:`font-semibold tabular-nums text-(--dashboard-text)`},hn={key:0,class:`mt-2 grid gap-2 text-sm leading-6 text-(--dashboard-text-muted)`},gn={class:`min-w-0`},_n={class:`mt-2 grid gap-3 text-sm`},vn={class:`text-(--dashboard-text-soft)`},yn={class:`font-semibold tabular-nums text-(--dashboard-text)`},bn={key:0,class:`w-full text-xs leading-5 text-(--dashboard-text-muted)`},xn={key:0,class:`mt-3 flex flex-wrap gap-x-3 gap-y-1 text-xs leading-5 text-(--dashboard-text-soft)`},Sn={class:`min-w-0`},Cn={key:0,class:`mt-2 text-sm leading-6 text-(--dashboard-text-soft)`},wn={key:1,class:`mt-2 divide-y divide-(--dashboard-border)`},Tn=[`aria-label`,`onClick`],En={class:`block text-sm font-semibold leading-6 text-(--dashboard-text) [overflow-wrap:anywhere]`},Dn={class:`block text-xs leading-5 text-(--dashboard-text-soft)`},On={class:`mt-1 flex flex-wrap gap-x-3 gap-y-1 text-sm leading-6 tabular-nums`},kn={class:`font-semibold text-(--dashboard-text)`},An={class:`text-(--dashboard-text-soft)`},jn={class:`block text-xs leading-5 tabular-nums text-(--dashboard-text-soft)`},Mn={class:`min-w-0`},Nn={key:0,class:`mt-2 text-sm leading-6 text-(--dashboard-text-soft)`},Pn={key:1,class:`mt-2 divide-y divide-(--dashboard-border)`},Fn=[`aria-label`,`onClick`],In={class:`block font-mono text-sm font-medium leading-6 text-(--dashboard-text) [overflow-wrap:anywhere]`},Ln={class:`mt-1 block text-xs leading-5 text-(--dashboard-text-soft) [overflow-wrap:anywhere]`},Rn={class:`mt-1 flex flex-wrap gap-x-3 gap-y-1 text-sm leading-6 tabular-nums`},zn={class:`font-semibold text-(--dashboard-text)`},Bn={class:`text-(--dashboard-text-soft)`},Vn={class:`grid min-w-0 gap-2 border-t border-(--dashboard-border) pt-3`},Hn={class:`size-4 shrink-0`,"aria-hidden":`true`},Un={role:`status`,class:`text-xs leading-5 text-(--dashboard-accent)`},Wn={class:`size-4 shrink-0`,"aria-hidden":`true`};function Gn(e,n,r,i,a,o){return f(),I(`section`,Gt,[O(`header`,Kt,[n[2]||=O(`h2`,{class:`text-xs font-medium text-(--dashboard-text-soft)`},`总产物体积`,-1),O(`p`,qt,t(i.totalPackageBytesLabel),1),O(`p`,Jt,t(i.budgetSummary),1)]),O(`figure`,Yt,[O(`figcaption`,Xt,` 包体占比 · 前 `+t(i.packagePreviewItems.length)+` 包 · 满格 = 总量 `,1),i.packagePreviewItems.length===0?(f(),I(`p`,Zt,` 当前没有包体数据。 `)):(f(),I(`ol`,Qt,[(f(!0),I(E,null,m(i.packagePreviewItems,e=>(f(),I(`li`,{key:e.id,class:`min-w-0`},[O(`button`,{type:`button`,class:`block min-h-8 w-full min-w-0 rounded-sm py-1 text-left hover:bg-(--dashboard-panel-muted) focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-(--dashboard-accent) pointer-coarse:min-h-11`,"aria-label":`查看包 ${e.label} 的详情,${e.sizeLabel}`,onClick:t=>i.emit(`selectPackage`,e)},[O(`span`,en,[O(`span`,{title:e.label,class:`min-w-0 truncate font-medium text-(--dashboard-text)`},t(e.label),9,tn),O(`span`,nn,t(e.sizeLabel),1)]),O(`span`,rn,[O(`span`,{class:`block h-full rounded-full bg-(--dashboard-accent)`,style:h(e.shareStyle)},null,4)])],8,$t)]))),128))]))]),O(`details`,{class:`group min-w-0 border-t border-(--dashboard-border)`,onToggle:i.handleDetailsToggle},[O(`summary`,an,[O(`span`,on,`全部 `+t(r.packageInsights.length)+` 包与构建明细`,1),n[3]||=O(`span`,{class:`icon-[mdi--chevron-down] size-4 shrink-0 group-open:rotate-180`,"aria-hidden":`true`},null,-1)]),i.detailsOpen?(f(),I(`div`,sn,[O(`section`,cn,[n[5]||=O(`h3`,{class:`text-sm font-semibold text-(--dashboard-text)`},`评分与分析依据`,-1),O(`p`,ln,t(i.releaseGate.description),1),O(`dl`,un,[O(`div`,dn,[n[4]||=O(`dt`,{class:`text-(--dashboard-text-soft)`},`分析评分`,-1),O(`dd`,fn,t(i.releaseGate.score)+` / 100`,1)]),(f(!0),I(E,null,m(i.releaseGate.metrics,e=>(f(),I(`div`,{key:e.label,class:`flex min-w-0 flex-wrap items-baseline justify-between gap-x-3 gap-y-1`},[O(`dt`,pn,t(e.label),1),O(`dd`,mn,t(e.value),1)]))),128))]),n[6]||=O(`p`,{class:`mt-2 text-xs leading-5 text-(--dashboard-text-soft)`},`仅基于当前分析,不代表发布审批。`,-1),i.releaseGate.recommendations.length>0?(f(),I(`ul`,hn,[(f(!0),I(E,null,m(i.releaseGate.recommendations,e=>(f(),I(`li`,{key:e},t(e),1))),128))])):C(``,!0)]),O(`section`,gn,[n[7]||=O(`h3`,{class:`text-sm font-semibold text-(--dashboard-text)`},`全部指标`,-1),O(`dl`,_n,[(f(!0),I(E,null,m(r.cards,e=>(f(),I(`div`,{key:e.label,class:`flex min-w-0 flex-wrap items-baseline justify-between gap-x-3 gap-y-1`},[O(`dt`,vn,t(e.label),1),O(`dd`,yn,t(e.value),1),e.detail?(f(),I(`dd`,bn,t(e.detail),1)):C(``,!0)]))),128))]),r.packageTypeSummary.length>0?(f(),I(`p`,xn,[(f(!0),I(E,null,m(r.packageTypeSummary,e=>(f(),I(`span`,{key:e.label},t(i.formatPackageType(e.label))+` `+t(e.value),1))),128))])):C(``,!0)]),O(`section`,Sn,[n[9]||=O(`h3`,{class:`text-sm font-semibold text-(--dashboard-text)`},`全部包体`,-1),i.packageOverviewItems.length===0?(f(),I(`p`,Cn,`当前没有包体数据。`)):(f(),I(`ol`,wn,[(f(!0),I(E,null,m(i.packageOverviewItems,e=>(f(),I(`li`,{key:e.id,class:`min-w-0`},[O(`button`,{type:`button`,class:`w-full min-w-0 rounded-sm py-3 text-left hover:bg-(--dashboard-panel-muted) focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-(--dashboard-accent)`,"aria-label":`查看包 ${e.label} 的详情`,onClick:t=>i.emit(`selectPackage`,e)},[O(`span`,En,t(e.label),1),O(`span`,Dn,t(e.typeLabel)+` · `+t(e.fileCount)+` 产物 · `+t(e.moduleCount)+` 模块 `,1),O(`span`,On,[O(`span`,kn,t(e.sizeLabel),1),O(`span`,An,t(e.compressedLabel),1)]),O(`span`,jn,t(e.deltaLabel||`无可比基线`),1),n[8]||=O(`span`,{class:`mt-1 block text-xs leading-5 text-(--dashboard-accent)`},`查看包详情 →`,-1)],8,Tn)]))),128))]))]),O(`section`,Mn,[n[11]||=O(`h3`,{class:`text-sm font-semibold text-(--dashboard-text)`},`文件体积排行`,-1),r.largestFiles.length===0?(f(),I(`p`,Nn,`当前没有文件体积数据。`)):(f(),I(`ol`,Pn,[(f(!0),I(E,null,m(r.largestFiles,e=>(f(),I(`li`,{key:`${e.packageId}:${e.file}`,class:`min-w-0`},[O(`button`,{type:`button`,class:`w-full min-w-0 rounded-sm py-3 text-left hover:bg-(--dashboard-panel-muted) focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-(--dashboard-accent)`,"aria-label":`查看文件 ${e.file} 的详情`,onClick:t=>i.emit(`selectFile`,e)},[O(`span`,In,t(e.file),1),O(`span`,Ln,t(e.packageLabel)+` · `+t(e.type)+` · `+t(e.moduleCount)+` 模块 `,1),O(`span`,Rn,[O(`span`,zn,t(i.formatBytes(e.size)),1),O(`span`,Bn,t(e.compressedSizeSource===`real`?`Brotli`:`估算压缩`)+` `+t(i.formatBytes(e.compressedSize)),1)]),n[10]||=O(`span`,{class:`mt-1 block text-xs leading-5 text-(--dashboard-accent)`},`查看文件详情 →`,-1)],8,Fn)]))),128))]))]),O(`div`,Vn,[O(`button`,{type:`button`,class:`inline-flex min-h-11 items-center justify-center gap-2 rounded-md border border-(--dashboard-border) px-2 py-2 text-sm text-(--dashboard-text-muted) hover:bg-(--dashboard-panel-muted) focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-(--dashboard-accent)`,onClick:n[0]||=(...e)=>i.copyReleaseGateReport&&i.copyReleaseGateReport(...e)},[O(`span`,Hn,[_(i.DashboardIcon,{name:`metric-copy`})]),n[12]||=R(` 复制构建结论 `,-1)]),O(`span`,Un,t(i.gateCopyStatus),1),O(`button`,{type:`button`,class:`inline-flex min-h-11 items-center justify-center gap-2 rounded-md border border-(--dashboard-border) px-2 py-2 text-sm text-(--dashboard-text-muted) hover:bg-(--dashboard-panel-muted) focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-(--dashboard-accent)`,onClick:n[1]||=e=>i.emit(`copyReport`)},[O(`span`,Wn,[_(i.DashboardIcon,{name:`metric-copy`})]),n[13]||=R(` 复制评审摘要 `,-1)])])])):C(``,!0)],32)])}var Kn=z(Wt,[[`render`,Gn]]);function qn(e){return e===`runtime`||e===`reactivity`||e===`host`||e===`helper`}var Jn={totalBytes:20971520,mainBytes:2097152,subPackageBytes:2097152,independentBytes:2097152,warningRatio:.85,source:`default`};function Yn(e){let t=e.metadata?.budgets??Jn,n=(e,n=!1)=>{let r=e.limitBytes>0?e.currentBytes/e.limitBytes:+(e.currentBytes>0);return{...e,ratio:r,status:n?`unknown`:r>=1?`exceeded`:r>=t.warningRatio?`warning`:`ok`}},r=e.packages.flatMap(e=>e.files),i=new Map(r.map(e=>[e.file,e])),a=e=>e.some(e=>typeof e.size!=`number`||!Number.isFinite(e.size)||e.size<0),o=[n({id:`__total__`,label:`总包`,scope:`total`,currentBytes:[...i.values()].reduce((e,t)=>e+(t.size??0),0),limitBytes:t.totalBytes,measurement:`file-bytes`,files:[...i.keys()].sort()},a(r))];for(let r of e.packages){let e=t.packageBytes?.[r.id]??(r.type===`main`?t.mainBytes:r.type===`subPackage`?t.subPackageBytes:r.type===`independent`?t.independentBytes:void 0);e!==void 0&&o.push(n({id:r.id,label:r.label,scope:r.type,currentBytes:r.files.reduce((e,t)=>e+(t.size??0),0),limitBytes:e,measurement:`file-bytes`,files:r.files.map(e=>e.file).sort()},a(r.files)))}if(t.runtimeBytes!==void 0){let i=e.artifacts;o.push(n({id:`__runtime__`,label:`Runtime(含混合 chunk 的文件上界)`,scope:`runtime`,currentBytes:i?.runtime.upperBoundBytes??0,limitBytes:t.runtimeBytes,measurement:i?`upper-bound`:`unavailable`,files:i?.files.filter(e=>i.runtime.unknownFiles.includes(e.file)||e.modules.some(e=>qn(e.category))).map(e=>e.file)??r.filter(e=>e.type===`chunk`||/\.[cm]?js$/i.test(e.file)).map(e=>e.file)},!i||i.runtime.unknownFiles.length>0))}return o.sort((e,t)=>t.ratio-e.ratio||e.label.localeCompare(t.label))}function Xn(e,t){let n=t===`node_modules`||t===`workspace`?`dependency`:t,r=e.indexOf(`?`),i=(r===-1?e:e.slice(0,r)).replaceAll(`\\`,`/`).replace(/^\0/,``);if(n===`dependency`){let e=i.lastIndexOf(`/node_modules/`);e>=0?i=i.slice(e+14):i.startsWith(`node_modules/`)?i=i.slice(13):t===`workspace`&&(i=(i.match(/(?:^|\/)packages-runtime\/(wevu\/.*)$/)??i.match(/(?:^|\/)(@[^/]+\/[^/]+\/dist\/.*)$/))?.[1]??i)}return`${n}\0${i}`}function Zn(e,t){return e.includes(`wevu`)||e.includes(`@weapp-vite/dashboard`)?`WeVu / runtime`:t===`node_modules`||e.includes(`node_modules`)?`第三方依赖`:t===`workspace`?`工作区包`:t===`plugin`?`插件生成`:e.endsWith(`.wxss`)||e.endsWith(`.css`)||e.endsWith(`.scss`)?`样式资源`:e.endsWith(`.wxml`)||e.endsWith(`.json`)?`页面结构`:`业务源码`}function Qn(e,t){return t===`unmeasured`?`缺少体积测量,不能判断增长或缩小。`:t===`removed`||t===`decreased`?`确认体积减少符合预期,检查受影响页面与依赖边界。`:e===`第三方依赖`?`检查依赖边界或公共入口。`:e===`WeVu / runtime`?`排查组件和 API 引用边界。`:e===`样式资源`?`检查样式复用和生成范围。`:t===`added`?`确认分包归属和懒加载边界。`:`对比新增引用和共享模块。`}function $n(e){let t=new Map,n=new Map,r=new Map,i=0,a=0;for(let o of e.packages){let e=0,s=0;for(let t of o.files){let i=t.size??null;i===null?s+=1:e+=i;let a=`file:${o.id}\0${t.file}`;n.set(a,{key:a,label:t.file,bytes:i,packageId:o.id,packageLabel:o.label,file:t.file,category:Zn(t.source??t.file)});for(let e of t.modules??[]){let n=e.bytes??e.originalBytes??null,i=r.get(e.id);if(i){i.bytes=i.bytes===null||n===null?null:Math.max(i.bytes,n);continue}let a=e.source.indexOf(`?`);r.set(e.id,{key:`module:${Xn(e.source,e.sourceType)}`,label:e.source,bytes:n,moduleId:e.id,sourceType:e.sourceType,packageId:o.id,packageLabel:o.label,file:t.file,category:Zn(a===-1?e.source:e.source.slice(0,a),e.sourceType)})}}i+=e,a+=s;let c=`package:${o.id}`;t.set(c,{key:c,label:o.label,bytes:s>0?null:e,packageId:o.id,packageLabel:o.label})}let o=new Map;for(let e of r.values()){let t=o.get(e.key);t?t.bytes===null||e.bytes===null?t.bytes=null:t.bytes<e.bytes&&o.set(e.key,e):o.set(e.key,e)}return{packages:t,files:n,modules:o,totalBytes:a>0?null:i,unmeasuredFiles:a}}function er(e,t){let n=[],r=(e,t,r,i)=>{n.push({key:e.key,label:e.label,packageId:e.packageId,packageLabel:e.packageLabel,file:e.file,moduleId:e.moduleId,sourceType:e.sourceType,category:e.category,change:i,currentBytes:t,previousBytes:r,deltaBytes:t===null||r===null?null:t-r,advice:e.category?Qn(e.category,i):void 0})};for(let[n,i]of e){let e=t.get(n);e?i.bytes===null||e.bytes===null?r(i,i.bytes,e.bytes,`unmeasured`):i.bytes!==e.bytes&&r(i,i.bytes,e.bytes,i.bytes>e.bytes?`increased`:`decreased`):r(i,i.bytes,0,`added`)}for(let[n,i]of t)e.has(n)||r(i,0,i.bytes,`removed`);return n.sort((e,t)=>(t.deltaBytes??-1/0)-(e.deltaBytes??-1/0)||e.key.localeCompare(t.key))}function tr(e,t){let n=$n(e),r=$n(t);return{currentBytes:n.totalBytes,previousBytes:r.totalBytes,deltaBytes:n.totalBytes===null||r.totalBytes===null?null:n.totalBytes-r.totalBytes,currentUnmeasuredFiles:n.unmeasuredFiles,previousUnmeasuredFiles:r.unmeasuredFiles,packages:er(n.packages,r.packages),files:er(n.files,r.files),modules:er(n.modules,r.modules)}}function nr(e){let t=new Map;for(let n of e.packages)for(let e of n.files)for(let n of e.modules??[])t.set(n.id,Math.max(t.get(n.id)??0,n.bytes??n.originalBytes??0));return t}function rr(e,t,n){return t?n>0?`含独立分包,先确认隔离要求,再评估是否抽公共入口。`:`含独立分包,重复可能来自隔离边界。`:e===`node_modules`?`依赖被多个包带入,检查引用边界或考虑主包公共入口。`:e===`src`||e===`workspace`?`共享源码跨包重复,优先抽公共模块或调整分包归属。`:e===`plugin`?`插件生成内容跨包重复,检查插件产物输出策略。`:`检查该模块是否需要在多个包内重复存在。`}function ir(e){let t=nr(e),n=new Map(e.packages.map(e=>[e.id,e.type]));return e.modules.filter(e=>e.packages.length>1).map(e=>{let r=t.get(e.id)??0,i=e.packages.map(e=>e.packageId),a=r*(i.length-1),o=i.some(e=>n.get(e)===`independent`);return{id:e.id,source:e.source,sourceType:e.sourceType,packageCount:i.length,bytes:r,estimatedSavingBytes:a,packages:i,hasIndependentPackage:o,advice:rr(e.sourceType,o,a)}}).sort((e,t)=>t.estimatedSavingBytes-e.estimatedSavingBytes||t.packageCount-e.packageCount||t.bytes-e.bytes||e.source.localeCompare(t.source)||e.id.localeCompare(t.id))}function q(e){return typeof e==`number`&&Number.isFinite(e)&&e>=0?e:null}function ar(e,t,n){let r=e.modules.find(e=>e.id===t);if(!r||r.packages.length<=1)return 0;for(let n of r.packages){let r=e.packages.find(e=>e.id===n.packageId);if(!r||n.files.length===0)return null;for(let e of n.files){let n=r.files.find(t=>t.file===e)?.modules?.find(e=>e.id===t);if(q(n?.bytes??n?.originalBytes)===null)return null}}return q(n)}function or(e,t){return{packageId:t.packageId,packageLabel:e.get(t.packageId)??t.packageId,files:t.files}}function sr(e,t){return e.includes(`wevu`)||e.includes(`@weapp-vite/dashboard`)?`wevu / dashboard runtime`:t===`node_modules`?`第三方依赖`:t===`plugin`?`插件生成`:t===`workspace`?`工作区包`:e.startsWith(`pages/`)||e.includes(`/pages/`)?`业务页面`:e.startsWith(`components/`)||e.includes(`/components/`)?`业务组件`:e.startsWith(`shared/`)||e.includes(`/shared/`)||e.includes(`/utils/`)?`业务共享`:`业务源码`}function cr(e,t){return{sourceType:e,sourceCategory:t,count:0,bytes:0}}function lr(e){if(!e.result)return[];let t=new Map(e.result.modules.map(e=>[e.id,e]));return ir(e.result).map(n=>{let r=t.get(n.id);return{...n,source:H(n.source),packages:r.packages.map(t=>or(e.packageLabelMap,t))}})}function ur(e,t){let n=new Map;for(let r of e?.modules??[]){let e=t.get(r.id),i=sr(r.source,r.sourceType),a=`${r.sourceType}:${i}`,o=n.get(a)??cr(r.sourceType,i);o.count+=1,o.bytes+=e?.bytes??e?.originalBytes??0,n.set(a,o)}return[...n.values()].sort((e,t)=>t.bytes-e.bytes||t.count-e.count||e.sourceCategory.localeCompare(t.sourceCategory))}function dr(e){return e.size??0}function fr(e){return e.brotliSize??e.gzipSize??me(dr(e),e.file,e.type)}function pr(e){return typeof e.brotliSize==`number`||typeof e.gzipSize==`number`?`real`:`estimated`}function mr(e,t){return`${e}\u0000${t}`}function hr(e){let t=new Map,n=new Map,r=0,i=0;for(let a of e?.packages??[]){let e=0;for(let t of a.files){let o=dr(t);e+=o,r+=o,i+=fr(t),n.set(mr(a.id,t.file),o)}t.set(a.id,e)}return{packageBytes:t,fileBytes:n,totalBytes:r,compressedBytes:i}}function gr(e){let t=new Map;for(let n of e?.packages??[])for(let e of n.files)for(let n of e.modules??[]){let e=t.get(n.id),r=n.bytes??0,i=n.originalBytes??r;e?t.set(n.id,{bytes:Math.max(e.bytes,r),originalBytes:Math.max(e.originalBytes,i),sourceType:e.sourceType}):t.set(n.id,{bytes:r,originalBytes:i,sourceType:n.sourceType})}return t}function _r(e,t){return{label:e,value:t}}function vr(e,t,n){let r=dr(t),i=n.get(mr(e.id,t.file));return{packageId:e.id,packageLabel:e.label,packageType:e.type,file:t.file,size:r,gzipSize:t.gzipSize,brotliSize:t.brotliSize,compressedSize:fr(t),compressedSizeSource:pr(t),sizeDeltaBytes:typeof i==`number`?r-i:void 0,type:t.type,from:t.from,isEntry:!!t.isEntry,moduleCount:t.modules?.length??0,modules:t.modules,source:t.source}}function yr(e,t,n){let r=dr(t),i=n.get(mr(e,t.file));return{file:t.file,size:r,gzipSize:t.gzipSize,brotliSize:t.brotliSize,compressedSize:fr(t),compressedSizeSource:pr(t),sizeDeltaBytes:typeof i==`number`?r-i:void 0,type:t.type,from:t.from,isEntry:!!t.isEntry,moduleCount:t.modules?.length??0}}function br(e){if(!e.result)return{packageCount:0,moduleCount:0,duplicateCount:0,totalBytes:0,gzipBytes:0,brotliBytes:0,estimatedCompressedBytes:0,compressedBytes:0,compressedSizeSource:`estimated`,subpackageCount:0,entryCount:0,budgetWarningCount:0};let t=e.result.packages.flatMap(e=>e.files),n=t.reduce((e,t)=>e+dr(t),0),r=t.reduce((e,t)=>e+(t.gzipSize??0),0),i=t.reduce((e,t)=>e+(t.brotliSize??0),0),a=t.reduce((e,t)=>e+me(dr(t),t.file,t.type),0),o=t.some(e=>typeof e.gzipSize==`number`||typeof e.brotliSize==`number`),s=o?t.reduce((e,t)=>e+fr(t),0):a;return{packageCount:e.result.packages.length,moduleCount:e.result.modules.length,duplicateCount:e.result.modules.filter(e=>e.packages.length>1).length,totalBytes:n,gzipBytes:r,brotliBytes:i,estimatedCompressedBytes:a,compressedBytes:s,compressedSizeSource:o?`real`:`estimated`,sizeDeltaBytes:e.previousMaps.totalBytes>0?n-e.previousMaps.totalBytes:void 0,compressedDeltaBytes:e.previousMaps.compressedBytes>0?s-e.previousMaps.compressedBytes:void 0,subpackageCount:e.result.subPackages.length,entryCount:t.filter(e=>e.isEntry).length,budgetWarningCount:e.budgetWarnings.length}}function xr(e){let t=new Map;for(let n of e?.packages??[])t.set(n.type,(t.get(n.type)??0)+1);return Array.from(t.entries(),([e,t])=>_r(e,t)).sort((e,t)=>t.value-e.value||e.label.localeCompare(t.label))}function Sr(e,t){return e?e.packages.map(n=>{let r=new Set,i=0;for(let t of e.modules)t.packages.some(e=>e.packageId===n.id)&&(r.add(t.id),t.packages.length>1&&i++);let a=n.files.map(e=>yr(n.id,e,t.fileBytes)).sort((e,t)=>t.size-e.size||e.file.localeCompare(t.file)).slice(0,5),o=n.files.reduce((e,t)=>e+dr(t),0),s=n.files.reduce((e,t)=>e+(t.gzipSize??0),0),c=n.files.reduce((e,t)=>e+(t.brotliSize??0),0),l=n.files.reduce((e,t)=>e+fr(t),0),u=n.files.some(e=>typeof e.gzipSize==`number`||typeof e.brotliSize==`number`)?`real`:`estimated`,d=t.packageBytes.get(n.id);return{id:n.id,label:n.label,type:n.type,totalBytes:o,gzipBytes:s,brotliBytes:c,compressedBytes:l,compressedSizeSource:u,sizeDeltaBytes:typeof d==`number`?o-d:void 0,fileCount:n.files.length,chunkCount:n.files.filter(e=>e.type===`chunk`).length,assetCount:n.files.filter(e=>e.type===`asset`).length,moduleCount:r.size,duplicateModuleCount:i,entryFileCount:n.files.filter(e=>e.isEntry).length,topFiles:a}}).sort((e,t)=>t.totalBytes-e.totalBytes||e.label.localeCompare(t.label)):[]}function Cr(e,t){let n=[];for(let r of e?.packages??[])for(let e of r.files)n.push(vr(r,e,t));return n.sort((e,t)=>t.size-e.size||e.file.localeCompare(t.file))}var wr=`\0`,Tr=[{itemStyle:{borderWidth:1,gapWidth:1},upperLabel:{show:!0,height:24,fontSize:12,fontWeight:650,lineHeight:17,overflow:`truncate`,textBorderWidth:0}},{itemStyle:{borderWidth:1,gapWidth:1},upperLabel:{show:!0,height:22,fontSize:11,fontWeight:600,lineHeight:15,overflow:`truncate`,textBorderWidth:0}},{itemStyle:{borderWidth:.75,gapWidth:.75}}];function Er(e){return`package${wr}${e}`}function J(e,t){return`file${wr}${e}${wr}${t}`}function Y(e,t,n){return`module${wr}${e}${wr}${t}${wr}${n}`}function Dr(e,t){return`asset${wr}${e}${wr}${t}`}function Or(e){let t=e.replaceAll(`\\`,`/`),n=H(e).replace(/^(?:\.\.\/)+/,``),r=n.split(`/`).filter(Boolean);if(r.length===0)return n;if(t.includes(`/node_modules/`)){let e=r[0];return e.startsWith(`@`)&&r[1]?`${e}/${r[1]}`:e}return r.length>2?`${r[r.length-2]}/${r[r.length-1]}`:r.join(`/`)}function kr(e){return e===void 0||!Number.isFinite(e)||e<0?`未知`:e===0?`0 B`:U(e)}function Ar({data:e}){if(!e?.meta)return``;let t=e.meta,n=t.kind===`package`?t.totalBytes:t.kind===`module`?t.bytes??t.originalBytes:t.bytes;return`${e.name}\n${kr(n)}`}function X(e){return String(e).replace(/[&<>"']/g,e=>({"&":`&amp;`,"<":`&lt;`,">":`&gt;`,'"':`&quot;`,"'":`&#39;`})[e])}function jr(e){let t=Or(e),n=[`<strong>${X(t)}</strong>`];return t!==e&&(n.push(`<span>完整路径</span>`),n.push(`<span style="font-family:monospace;word-break:break-all">${X(e)}</span>`)),n}function Mr(e){if(!e)return``;let t=[];if(e.kind===`package`?(t.push(`<strong>${X(e.packageLabel)}</strong>`),t.push(`类型:${X(e.packageType)}`),t.push(`产物数量:${X(e.fileCount)}`),t.push(`累计体积:${kr(e.totalBytes)}`)):e.kind===`file`?(t.push(...jr(e.fileName)),t.push(`所属:${X(e.packageLabel)}`),t.push(`类型:${e.type===`chunk`?`代码 chunk`:`资源`} · 来源:${X(e.from)}`),t.push(`体积:${kr(e.bytes)}`),e.childCount>0&&t.push(`模块数量:${X(e.childCount)}`)):e.kind===`module`?(t.push(...jr(e.source)),t.push(`所属:${X(e.packageLabel)} → ${X(e.fileName)}`),t.push(`源码类型:${X(de(e.sourceType))}`),t.push(`${e.bytes===void 0?`源码体积`:`模块体积`}:${kr(e.bytes??e.originalBytes)}`),e.packageCount>1&&t.push(`产出分包:${X(e.packageCount)} 个`)):e.kind===`asset`&&(t.push(...jr(e.source)),t.push(`所属:${X(e.packageLabel)} → ${X(e.fileName)}`),t.push(`资源体积:${kr(e.bytes)}`)),e.colorLabel&&t.push(`颜色:${X(e.colorLabel)}`),e.deltaBytes!==void 0){let n=e.deltaBytes>0?`+`:e.deltaBytes<0?`−`:``;t.push(`体积变化:${n}${kr(Math.abs(e.deltaBytes))}(${n}${Math.abs(e.deltaBytes)} B)`)}return t.join(`<br/>`)}function Nr(e,t){return e===null||t===null?null:e-t}function Pr(e){let{action:t,result:n}=e;if(t.kind===`budget`){let e=Yn(n).find(e=>e.id===t.warning?.id&&e.scope===t.warning.scope);return{budget:e,label:e?.label??`预算目标不可用`}}if(t.kind===`duplicate`){let e=n.modules.find(e=>t.key===`duplicate:${e.id}`);return{moduleId:e?.id,label:e?`跨包重复 · ${H(e.source)}`:`重复模块不可用`}}let r=e.incrementAttribution.find(e=>t.key===`increment:${e.key}`),i=t.file&&t.key===`increment:file:${t.file.packageId}:${t.file.file}`?t.file:void 0;return{moduleId:r?.moduleId,packageId:r?.packageId??i?.packageId,file:r?.file??i?.file,label:r?`${r.moduleId===void 0?`产物增长`:`模块增长`} · ${r.label}`:i?`产物增长 · ${i.file}`:`增长目标不可用`}}function Fr(e,t,n){let r=n.budget?.scope===`runtime`?new Set(n.budget.files):null,i=new Map(e.modules.find(e=>e.id===n.moduleId)?.packages.map(e=>[e.packageId,new Set(e.files)])),a=new Map,o=new Map;for(let e of t?.packages??[])for(let t of e.files)o.set(mr(e.id,t.file),q(t.size));let s=e.packages.map(e=>({...e,files:e.files.filter(t=>n.budget?n.budget.scope===`total`||(r?r.has(t.file):e.id===n.budget.id):n.moduleId===void 0?e.id===n.packageId&&t.file===n.file:i.get(e.id)?.has(t.file)||t.modules?.some(e=>e.id===n.moduleId))})).filter(e=>e.files.length>0);for(let e of s)for(let t of e.files)a.set(mr(e.id,t.file),q(t.size));return Cr({...e,packages:s},new Map).map(e=>{let n=mr(e.packageId,e.file),r=a.get(n)??null,i=t?o.has(n)?o.get(n):0:null,s=Nr(r,i);return{entry:{...e,sizeDeltaBytes:s??void 0},bytes:r,previousBytes:i,deltaBytes:s}}).sort((e,t)=>(t.bytes??-1)-(e.bytes??-1)||e.entry.packageId.localeCompare(t.entry.packageId)||e.entry.file.localeCompare(t.entry.file))}function Ir(e,t,n){let r=new Map,i=new Map(e.modules.map(e=>[e.id,e])),a=new Map(t.map(e=>[mr(e.entry.packageId,e.entry.file),e.entry])),o=(e,t,a)=>{if(n!==void 0&&t.id!==n)return;let o=Y(e.packageId,e.file,t.id);if(r.has(o))return;let s=q(t.bytes??t.originalBytes);r.set(o,{id:o,bytes:s,readable:a,meta:{kind:`module`,nodeId:o,packageId:e.packageId,packageLabel:e.packageLabel,fileName:e.file,source:t.source,sourceType:t.sourceType,bytes:s??void 0,originalBytes:q(t.originalBytes)??void 0,packageCount:i.get(t.id)?.packages.length??1}})};for(let{entry:e}of t)for(let t of e.modules??[])o(e,t,t.sourceType!==`node_modules`&&!!t.source);for(let t of e.modules)if(n===void 0||t.id===n)for(let e of t.packages)for(let n of e.files){let r=a.get(mr(e.packageId,n));r&&o(r,t,!1)}return[...r.values()].sort((e,t)=>(t.bytes??-1)-(e.bytes??-1)||e.id.localeCompare(t.id))}function Lr(e,t){if(!e)return null;let n=Yn(e).find(e=>e.id===t.id&&e.scope===t.scope);if(n)return n.status===`unknown`?null:q(n.currentBytes);if(t.scope===`runtime`){let t=e.artifacts?.runtime;return t&&t.unknownFiles.length===0?q(t.upperBoundBytes):null}return t.scope===`total`?null:tr(e,{packages:[]}).packages.find(e=>e.packageId===t.id)?.currentBytes??(e.packages.some(e=>e.id===t.id)?null:0)}function Rr(e,t){let n=tr(e.result,e.previous??{packages:[]}).modules.find(e=>e.moduleId===t);if(!n&&e.previous){let r=tr(e.result,{packages:[]}).modules.find(e=>e.moduleId===t);r&&(n={...r,previousBytes:r.currentBytes,deltaBytes:r.currentBytes===null?null:0})}let r=q(n?.currentBytes),i=e.previous?q(n?.previousBytes):null;return{currentBytes:r,previousBytes:i,deltaBytes:Nr(r,i)}}function zr(e,t){if(!e)return null;let n=ir(e).find(e=>e.id===t)?.estimatedSavingBytes;return ar(e,t,n)}function Br(e){let{action:t,result:n,previous:r}=e,i=Pr(e),a=Fr(n,r,i),o=Ir(n,a,i.moduleId),s={classification:`unknown`,scopeLabel:i.label,currentBytes:null,previousBytes:null,deltaBytes:null,limitBytes:null,measurement:`unavailable`,artifacts:a.slice(0,12),artifactCount:a.length,sources:o.slice(0,16),sourceCount:o.length,constraints:[`包、产物、模块是重叠粒度,不能相加为总增长或总收益;产物行按包内位置计数,总包预算按共享规则对输出路径去重。`,`来源行保留真实包/产物/模块位置;同一模块可出现多次,不代表多条独立依赖链。缺测为未知,不是 0。`,`来源只证明报告记录的关联,不证明当前源码、完整依赖链或可安全删除;源码需要另行读取验证。`],steps:[],checks:[`拟议:经授权后使用项目原生构建链重新构建,读取新报告核对同一目标及测量口径。`,`拟议:检查受影响页面、分包加载和真实运行时行为,再判断是否解决;本上下文没有执行这些检查。`]};if(r||s.constraints.push(`浏览器未提供比较报告,previousBytes / deltaBytes 均未知,不能推断新增或增长。`),i.budget){let e=i.budget;s.currentBytes=e.status===`unknown`?null:q(e.currentBytes),s.previousBytes=Lr(r,e),s.limitBytes=q(e.limitBytes),s.measurement=e.measurement,s.classification=s.currentBytes===null?`unknown`:e.status===`exceeded`?`problem`:e.status===`warning`?`risk`:`clue`,s.steps.push(`先核对预算范围、阈值和缺测项,再查看该范围的产物与来源,提出需要源码证明的改动假设。`),s.checks.unshift(`拟议:复验同一预算范围的完整测量与实际阈值,不能用其他包或全局汇总替代目标范围。`),e.scope===`runtime`&&s.constraints.push(`Runtime 是包含混合 chunk 的文件体积上界,不是运行时代码净体积;只列共享预算规则认定的相关文件,不能视为一个分包。`)}else if(t.kind===`duplicate`&&i.moduleId!==void 0){let t=e.duplicateModules.find(e=>e.id===i.moduleId);s.currentBytes=ar(n,i.moduleId,t?.estimatedSavingBytes),s.previousBytes=zr(r,i.moduleId),s.measurement=`upper-bound`,s.classification=s.currentBytes===null?`unknown`:`clue`,s.constraints.push(`当前值是共享规则的重复体积估算上界,不是全部副本的总量,也不是保证可节省的字节;差值只比较重复估算。`),n.modules.find(e=>e.id===i.moduleId)?.packages.some(e=>n.packages.some(t=>t.id===e.packageId&&t.type===`independent`))&&s.constraints.push(`包含独立分包,重复可能是隔离要求;不能直接假定可移入主包或删除副本。`),s.steps.push(`逐个核对真实产物位置和源码引用边界,先确认独立分包隔离与加载约束,再评估是否有可合并的重复。`),s.checks.unshift(`拟议:对比重建前后的真实产物体积和重复位置,同时验证各分包独立运行;不要把估算值当作验收收益。`)}else if(t.kind===`increment`&&i.moduleId!==void 0)Object.assign(s,Rr(e,i.moduleId)),s.measurement=s.currentBytes===null?`unavailable`:`upper-bound`,s.classification=s.currentBytes===null||s.deltaBytes===null?`unknown`:`clue`,s.constraints.push(`模块按共享比较规则匹配规范来源,取记录贡献的最大值(可回落到原始体积),不是最终文件净增量;产物行仅作关联对照。`);else if(t.kind===`increment`){let e=a.find(e=>e.entry.packageId===i.packageId&&e.entry.file===i.file);e&&(s.currentBytes=e.bytes,s.previousBytes=e.previousBytes,s.measurement=e.bytes===null?`unavailable`:`file-bytes`,s.classification=e.bytes===null||e.deltaBytes===null?`unknown`:`clue`)}return s.deltaBytes=Nr(s.currentBytes,s.previousBytes),t.kind===`increment`&&(s.steps.push(`核对浏览器比较报告的来源,再按所选文件或模块粒度定位变化;增长本身不是错误,优化原因仍是假设。`),s.checks.unshift(`拟议:在可核对的同一比较基线上检查目标差值;没有基线或存在缺测时保持未知,不宣称增长已消除。`)),s.classification===`unknown`&&s.steps.unshift(`先补全目标定位、测量或比较基线;在事实不足时只列待确认项,不给出确定修复结论。`),s}var Vr={critical:4,warning:3,info:2,success:1},Hr=[{label:`按优先级`,value:`priority`},{label:`按严重度`,value:`severity`},{label:`按标题`,value:`title`},{label:`按数值`,value:`value`}];function Ur(e){return e===`budget`?`预算`:e===`increment`?`增量`:`重复`}function Wr(e){return Ae(e===`critical`?{tone:`error`}:e===`warning`?{tone:`warning`}:e===`success`?{tone:`success`}:{tone:`info`})}function Gr(e){return e===`critical`?`必须处理`:e===`warning`?`建议处理`:e===`success`?`可查看`:`定位`}function Kr(e,t){return[...e].sort((e,n)=>t===`severity`?Vr[n.tone]-Vr[e.tone]||n.priority-e.priority||e.title.localeCompare(n.title):t===`title`?e.title.localeCompare(n.title):t===`value`?n.priority-e.priority||String(e.value??``).localeCompare(String(n.value??``))||e.title.localeCompare(n.title):n.priority-e.priority||Vr[n.tone]-Vr[e.tone]||e.title.localeCompare(n.title))}function qr(e){let t=u(``),n=u(`all`),r=u(`all`),i=u(`priority`),a=M(()=>{let t=new Set;for(let n of e.actions)t.add(n.tone);return[...t].sort((e,t)=>Vr[t]-Vr[e])}),o=M(()=>{let t=new Set;for(let n of e.actions)t.add(n.kind);return[...t].sort((e,t)=>Ur(e).localeCompare(Ur(t)))}),s=M(()=>[{label:`全部严重度`,value:`all`},...a.value.map(e=>({label:Gr(e),value:e}))]),c=M(()=>[{label:`全部类型`,value:`all`},...o.value.map(e=>({label:Ur(e),value:e}))]);return{actionKindFilter:r,actionSortOptions:Hr,actionQuery:t,actionSortMode:i,actionToneFilter:n,filteredActions:M(()=>{let a=t.value.trim().toLowerCase();return Kr(e.actions.filter(e=>n.value!==`all`&&e.tone!==n.value||r.value!==`all`&&e.kind!==r.value?!1:!a||[e.key,e.kind,e.tone,e.title,e.meta,e.value,e.tab].some(e=>String(e??``).toLowerCase().includes(a))),i.value)}),kindFilterOptions:c,getKindLabel:Ur,getToneClassName:Wr,getToneLabel:Gr,toneFilterOptions:s}}var Jr=L({__name:`ActionCenterPanel`,props:{actions:{},activeKey:{}},emits:[`select`],setup(e,{expose:t,emit:n}){t();let r=e,i=n,{actionKindFilter:a,actionQuery:o,actionSortMode:s,actionSortOptions:c,actionToneFilter:l,filteredActions:u,getKindLabel:f,getToneLabel:p,kindFilterOptions:m,toneFilterOptions:h}=qr(r),g={props:r,emit:i,actionKindFilter:a,actionQuery:o,actionSortMode:s,actionSortOptions:c,actionToneFilter:l,filteredActions:u,getKindLabel:f,getToneLabel:p,kindFilterOptions:m,toneFilterOptions:h,advancedFilterSummary:M(()=>[l.value===`all`?``:p(l.value),a.value===`all`?``:f(a.value),s.value===`priority`?``:c.find(e=>e.value===s.value)?.label].filter(Boolean).join(` · `)),searchId:d(),listId:d(),visibleRows:M(()=>u.value.map(e=>{let t=`待核实线索`,n=`info`;e.measurementUnknown?(t=`测量不完整`,n=`neutral`):e.kind===`budget`?!e.warning||e.warning.status===`unknown`?(t=`测量不完整`,n=`neutral`):e.warning.status===`critical`?(t=`超出预算`,n=`error`):(t=`接近预算`,n=`warning`):e.kind===`increment`?t=`增长线索`:e.kind===`duplicate`&&(t=`重复待核实`);let r=H(e.targetLabel),i=r.lastIndexOf(`/`);return{item:e,label:t,target:r,name:r.slice(i+1),directory:i<0?``:r.slice(0,i+1),toneClass:n===`error`||n===`warning`?`text-amber-700 dark:text-amber-200`:`text-(--dashboard-text-muted)`}})),AppEmptyState:G,AppSelect:be};return Object.defineProperty(g,"__isScriptSetup",{enumerable:!1,value:!0}),g}}),Yr={"data-diagnostic-index":``,"aria-label":`问题索引`,class:`grid min-w-0 content-start gap-3`},Xr={class:`flex flex-wrap items-baseline justify-between gap-2`},Zr={class:`text-xs tabular-nums text-(--dashboard-text-soft)`},Qr=[`for`],$r={class:`relative min-w-0`},ei=[`id`,`aria-controls`],ti=[`open`],ni={class:`flex min-h-9 cursor-pointer list-none items-center gap-2 py-1 text-xs text-(--dashboard-text-muted) hover:text-(--dashboard-text)`},ri={class:`min-w-0 flex-1`},ii={key:0},ai={class:`grid min-w-0 gap-2 pt-2`},oi={key:0,class:`text-xs tabular-nums text-(--dashboard-text-soft)`,role:`status`},si=[`id`],ci={key:1,class:`divide-y divide-(--dashboard-border)`},li=[`aria-pressed`,`title`,`aria-label`,`data-diagnostic-key`,`onClick`],ui={class:`flex min-w-0 items-baseline justify-between gap-2`},di={class:`min-w-0 font-mono text-sm font-medium leading-5 text-(--dashboard-text) [overflow-wrap:anywhere]`},fi={key:0,class:`max-w-[45%] shrink-0 text-right text-xs font-medium leading-5 tabular-nums text-(--dashboard-text) [overflow-wrap:anywhere]`},pi={class:`mt-1 flex min-w-0 items-baseline gap-2 text-xs leading-5`},mi={key:0,class:`min-w-0 truncate text-(--dashboard-text-soft)`};function hi(e,n,r,i,a,o){return f(),I(`aside`,Yr,[O(`header`,Xr,[n[4]||=O(`h2`,{class:`text-sm font-semibold text-(--dashboard-text-muted)`},`问题与线索`,-1),O(`span`,Zr,t(r.actions.length)+` 项`,1)]),O(`label`,{for:i.searchId,class:`sr-only`},`搜索问题与线索`,8,Qr),O(`div`,$r,[n[5]||=O(`span`,{class:`icon-[mdi--magnify] pointer-events-none absolute top-1/2 left-2.5 size-4 -translate-y-1/2 text-(--dashboard-text-soft)`,"aria-hidden":`true`},null,-1),v(O(`input`,{id:i.searchId,"onUpdate:modelValue":n[0]||=e=>i.actionQuery=e,"data-diagnostic-search":``,class:`min-h-9 w-full min-w-0 rounded-sm border border-(--dashboard-border) bg-(--dashboard-panel) pr-2 pl-8 text-sm text-(--dashboard-text) placeholder:text-(--dashboard-text-soft) pointer-coarse:min-h-11`,placeholder:`搜索名称或路径`,type:`search`,"aria-controls":i.listId},null,8,ei),[[j,i.actionQuery]])]),O(`details`,{class:`group min-w-0`,open:!!i.advancedFilterSummary},[O(`summary`,ni,[n[7]||=O(`span`,{class:`icon-[mdi--filter-outline] size-4 shrink-0`,"aria-hidden":`true`},null,-1),O(`span`,ri,[n[6]||=R(`筛选与排序`,-1),i.advancedFilterSummary?(f(),I(`span`,ii,` · `+t(i.advancedFilterSummary),1)):C(``,!0)]),n[8]||=O(`span`,{class:`icon-[mdi--chevron-right] size-4 shrink-0 group-open:rotate-90`,"aria-hidden":`true`},null,-1)]),O(`div`,ai,[_(i.AppSelect,{modelValue:i.actionToneFilter,"onUpdate:modelValue":n[1]||=e=>i.actionToneFilter=e,label:`按严重度筛选`,options:i.toneFilterOptions},null,8,[`modelValue`,`options`]),_(i.AppSelect,{modelValue:i.actionKindFilter,"onUpdate:modelValue":n[2]||=e=>i.actionKindFilter=e,label:`按问题类型筛选`,options:i.kindFilterOptions},null,8,[`modelValue`,`options`]),_(i.AppSelect,{modelValue:i.actionSortMode,"onUpdate:modelValue":n[3]||=e=>i.actionSortMode=e,label:`排序处理项`,options:i.actionSortOptions},null,8,[`modelValue`,`options`])])],8,ti),i.actionQuery||i.advancedFilterSummary?(f(),I(`p`,oi,` 匹配 `+t(i.filteredActions.length)+` / `+t(r.actions.length)+` 项 `,1)):C(``,!0),O(`div`,{id:i.listId,class:`max-h-[min(32rem,45dvh)] min-w-0 overflow-y-auto p-0.5`},[i.filteredActions.length===0?(f(),D(i.AppEmptyState,{key:0,compact:``},{default:c(()=>[R(t(r.actions.length===0?`当前没有问题或待查线索。`:`没有匹配项,请调整搜索或筛选。`),1)]),_:1})):(f(),I(`ol`,ci,[(f(!0),I(E,null,m(i.visibleRows,e=>(f(),I(`li`,{key:e.item.key,class:`min-w-0 list-none`},[O(`button`,{type:`button`,class:x([`min-h-11 w-full min-w-0 border-l-2 px-2 py-2 text-left focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-(--dashboard-accent)`,r.activeKey===e.item.key?`border-l-(--dashboard-accent) bg-(--dashboard-accent-soft)`:`border-transparent hover:bg-(--dashboard-panel-muted)`]),"aria-pressed":r.activeKey===e.item.key,title:e.target,"aria-label":`${e.target},${e.label}${e.item.value?`,${e.item.value}`:``}`,"data-diagnostic-key":e.item.key,onClick:t=>i.emit(`select`,e.item)},[O(`span`,ui,[O(`span`,di,t(e.name),1),e.item.value?(f(),I(`span`,fi,t(e.item.value),1)):C(``,!0)]),O(`span`,pi,[O(`span`,{class:x([`shrink-0`,e.toneClass])},t(e.label),3),e.directory?(f(),I(`span`,mi,t(e.directory),1)):C(``,!0)])],10,li)]))),128))]))],8,si)])}var gi=z(Jr,[[`render`,hi]]);function _i(e){return e===0?`无变化`:`${e>0?`+`:`-`}${U(Math.abs(e))}`}var vi=L({__name:`DiagnosticArtifactEvidence`,props:{evidence:{},comparisonLabel:{}},emits:[`openFile`,`showSources`],setup(e,{expose:t,emit:n}){t();let r=e,i=n,a=M(()=>{let{currentBytes:e,previousBytes:t,limitBytes:n,measurement:i}=r.evidence,a=Math.max(e??0,t??0,n??0,1),o=[{key:`previous`,label:`对照基线`,bytes:t},{key:`current`,label:i===`upper-bound`?`当前估算上界`:`当前报告`,bytes:e}];return n!==null&&o.push({key:`limit`,label:`预算上限`,bytes:n}),o.map(e=>({...e,width:e.bytes===null?null:`${e.bytes/a*100}%`}))}),o=M(()=>r.evidence.sources.slice(0,3)),s=M(()=>{let e=null;for(let t of o.value)t.bytes!==null&&(e=Math.max(e??0,t.bytes));return e});function c(e){let t=H(e);return t.slice(t.lastIndexOf(`/`)+1)}let l={props:r,emit:i,measurements:a,sourcePreview:o,sourceScale:s,sourceName:c,get formatBytes(){return U},get formatModuleIdentifier(){return H},get formatSourceType(){return de},get formatSignedBytes(){return _i}};return Object.defineProperty(l,"__isScriptSetup",{enumerable:!1,value:!0}),l}}),yi={class:`@container/artifact-evidence min-w-0`},bi={class:`artifact-evidence-grid grid min-w-0 border-y border-(--dashboard-border)`},xi={"aria-label":`体积测量对照`,class:`artifact-measurements min-w-0 py-4`},Si={class:`flex flex-wrap items-baseline justify-between gap-2`},Ci={class:`text-xs text-(--dashboard-text-soft) [overflow-wrap:anywhere]`},wi={class:`mt-3 flex flex-wrap items-baseline justify-between gap-x-3 gap-y-1 text-xs text-(--dashboard-text-soft)`},Ti={class:`min-w-0 [overflow-wrap:anywhere]`},Ei={class:`mt-3 grid gap-3`},Di=[`data-measurement`],Oi={class:`text-xs text-(--dashboard-text-muted) [overflow-wrap:anywhere]`},ki={class:`col-span-2`,"aria-hidden":`true`},Ai={class:`grid min-w-0 grid-cols-[minmax(0,1fr)_minmax(0,auto)] items-baseline gap-3 border-t border-(--dashboard-border) pt-3`},ji={class:`text-xs text-(--dashboard-text-muted)`},Mi={class:`min-w-0 text-right font-mono text-lg font-medium tabular-nums text-(--dashboard-text) [overflow-wrap:anywhere]`},Ni={key:0,class:`mt-2 text-xs leading-5 text-(--dashboard-text-soft)`},Pi={key:1,class:`mt-2 text-xs leading-5 text-(--dashboard-text-soft)`},Fi={key:2,class:`mt-2 text-xs leading-5 text-(--dashboard-text-soft)`},Ii={"aria-label":`关联产物`,class:`mt-4 min-w-0 border-t border-(--dashboard-border) pt-3`},Li={class:`flex flex-wrap items-baseline justify-between gap-2`},Ri={"data-artifact-count":``,class:`text-xs tabular-nums text-(--dashboard-text-soft)`},zi={key:0,class:`mt-3 text-sm leading-6 text-(--dashboard-text-muted)`},Bi={class:`divide-y divide-(--dashboard-border)`},Vi=[`aria-label`,`onClick`],Hi={class:`min-w-0 [overflow-wrap:anywhere]`},Ui={class:`mt-1 text-xs text-(--dashboard-text-soft) [overflow-wrap:anywhere]`},Wi={class:`mt-2 grid grid-cols-3 gap-2 text-xs leading-5`},Gi={class:`min-w-0`},Ki={class:`tabular-nums text-(--dashboard-text) [overflow-wrap:anywhere]`},qi={class:`min-w-0`},Ji={class:`tabular-nums text-(--dashboard-text) [overflow-wrap:anywhere]`},Yi={class:`min-w-0`},Xi={class:`tabular-nums text-(--dashboard-text) [overflow-wrap:anywhere]`},Zi={"aria-label":`关联来源摘要`,class:`artifact-sources min-w-0 border-t border-(--dashboard-border) py-4`},Qi={class:`flex flex-wrap items-baseline justify-between gap-2`},$i={class:`text-xs tabular-nums text-(--dashboard-text-soft)`},ea={key:0,class:`mt-4 text-sm leading-6 text-(--dashboard-text-soft)`},ta={key:1,class:`mt-3 text-xs leading-5 text-(--dashboard-text-soft)`},na={key:0,class:`font-mono tabular-nums`},ra={key:2,class:`mt-2 divide-y divide-(--dashboard-border)`},ia={class:`group min-w-0`,"data-source-detail":``},aa=[`title`,`aria-label`],oa={class:`flex min-w-0 items-baseline gap-2`},sa={class:`min-w-0 flex-1 font-mono text-xs leading-5 text-(--dashboard-text) [overflow-wrap:anywhere]`},ca={class:`shrink-0 font-mono text-sm tabular-nums text-(--dashboard-text)`},la={class:`mt-1 block truncate pl-5 text-xs leading-4 text-(--dashboard-text-soft)`},ua={class:`grid min-w-0 gap-2 pb-3 pl-5 text-xs leading-5 text-(--dashboard-text-muted)`},da={class:`text-(--dashboard-text-soft)`},fa={class:`font-mono [overflow-wrap:anywhere]`},pa={class:`[overflow-wrap:anywhere]`},ma={class:`font-mono [overflow-wrap:anywhere]`},ha={key:3,class:`mt-3 text-xs leading-5 text-(--dashboard-text-soft)`},ga={key:4,class:`mt-3 border-t border-(--dashboard-border) pt-1`},_a={class:`min-h-9 cursor-pointer rounded-sm py-2 text-xs text-(--dashboard-text-muted) focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-(--dashboard-accent) pointer-coarse:min-h-11`},va={class:`mt-2 grid list-disc gap-2 pl-4 text-xs leading-6 text-(--dashboard-text-soft)`};function ya(e,n,r,i,a,o){return f(),I(`div`,yi,[O(`div`,bi,[O(`section`,xi,[O(`header`,Si,[n[1]||=O(`h3`,{class:`text-sm font-medium text-(--dashboard-text)`},` 体积对照 `,-1),O(`span`,Ci,t(r.comparisonLabel),1)]),O(`div`,wi,[O(`span`,Ti,t(r.evidence.scopeLabel),1),n[2]||=O(`span`,null,`同一字节尺度`,-1)]),O(`dl`,Ei,[(f(!0),I(E,null,m(i.measurements,e=>(f(),I(`div`,{key:e.key,"data-measurement":e.key,class:`grid min-w-0 grid-cols-[minmax(0,1fr)_minmax(0,auto)] items-baseline gap-x-3 gap-y-1.5`},[O(`dt`,Oi,t(e.label),1),O(`dd`,{class:x([`min-w-0 text-right font-mono tabular-nums text-(--dashboard-text) [overflow-wrap:anywhere]`,e.key===`current`?`text-xl font-medium`:`text-sm`])},t(e.bytes===null?`未知 / 未提供`:i.formatBytes(e.bytes)),3),O(`dd`,ki,[O(`span`,{class:x([`block h-3 bg-(--dashboard-panel-muted)`,e.bytes===null?`border border-dashed border-(--dashboard-border)`:``])},[e.width!==null&&e.bytes!==0?(f(),I(`span`,{key:0,class:x([`block h-full`,e.key===`current`?`bg-(--dashboard-accent)`:e.key===`limit`?`bg-(--dashboard-text-muted)`:`bg-(--dashboard-border-strong)`]),style:h({width:e.width})},null,6)):C(``,!0)],2)])],8,Di))),128)),O(`div`,Ai,[O(`dt`,ji,t(r.evidence.measurement===`upper-bound`?`上界较基线变化`:`较基线变化`),1),O(`dd`,Mi,t(r.evidence.deltaBytes===null?`未知`:i.formatSignedBytes(r.evidence.deltaBytes)),1)])]),r.evidence.measurement===`upper-bound`?(f(),I(`p`,Ni,` 上界不是可移除体积或已实现收益。 `)):r.evidence.measurement===`unavailable`?(f(),I(`p`,Pi,` 测量不完整,不能判断预算达标。 `)):C(``,!0),r.evidence.currentBytes===null||r.evidence.previousBytes===null?(f(),I(`p`,Fi,t(r.evidence.previousBytes===null?`基线未提供或缺测;`:``)+`未知不按 0 计算。 `,1)):C(``,!0),O(`section`,Ii,[O(`header`,Li,[n[3]||=O(`h4`,{class:`text-xs font-medium text-(--dashboard-text)`},` 关联产物 `,-1),O(`span`,Ri,`展示 `+t(r.evidence.artifacts.length)+` / `+t(r.evidence.artifactCount)+` 项 · 最多 12 项`,1)]),r.evidence.artifacts.length===0?(f(),I(`p`,zi,` 当前报告没有可定位的关联产物。 `)):(f(),I(`details`,{key:r.evidence.scopeLabel,class:`mt-1`},[n[8]||=O(`summary`,{class:`min-h-9 cursor-pointer rounded-sm py-2 text-xs text-(--dashboard-text-muted) focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-(--dashboard-accent) pointer-coarse:min-h-11`},` 产物位置与逐项测量 `,-1),O(`ul`,Bi,[(f(!0),I(E,null,m(r.evidence.artifacts,e=>(f(),I(`li`,{key:`${e.entry.packageId}:${e.entry.from}:${e.entry.file}`,class:`min-w-0 py-3`},[O(`button`,{type:`button`,"data-diagnostic-open-file":``,class:`inline-flex min-h-9 max-w-full items-start gap-2 rounded-sm py-1 text-left font-mono text-xs leading-6 text-(--dashboard-accent) underline decoration-(--dashboard-border-strong) underline-offset-4 hover:decoration-current focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-(--dashboard-accent) pointer-coarse:min-h-11`,"aria-label":`打开产物 ${e.entry.packageLabel} / ${e.entry.file}`,onClick:t=>i.emit(`openFile`,e.entry)},[O(`span`,Hi,t(e.entry.file),1),n[4]||=O(`span`,{class:`icon-[mdi--arrow-top-right] mt-1 size-4 shrink-0`,"aria-hidden":`true`},null,-1)],8,Vi),O(`p`,Ui,t(e.entry.packageLabel)+` · `+t(e.entry.type),1),O(`dl`,Wi,[O(`div`,Gi,[n[5]||=O(`dt`,{class:`text-(--dashboard-text-soft)`},`基线`,-1),O(`dd`,Ki,t(e.previousBytes===null?`未知`:i.formatBytes(e.previousBytes)),1)]),O(`div`,qi,[n[6]||=O(`dt`,{class:`text-(--dashboard-text-soft)`},`当前`,-1),O(`dd`,Ji,t(e.bytes===null?`未知`:i.formatBytes(e.bytes)),1)]),O(`div`,Yi,[n[7]||=O(`dt`,{class:`text-(--dashboard-text-soft)`},`变化`,-1),O(`dd`,Xi,t(e.deltaBytes===null?`未知`:i.formatSignedBytes(e.deltaBytes)),1)])])]))),128))])]))])]),O(`section`,Zi,[O(`header`,Qi,[n[9]||=O(`h3`,{class:`text-sm font-medium text-(--dashboard-text)`},` 来源贡献 `,-1),O(`span`,$i,`摘要 `+t(i.sourcePreview.length)+` / `+t(r.evidence.sourceCount)+` 项`,1)]),i.sourcePreview.length===0?(f(),I(`p`,ea,` 暂无可定位来源;需补齐模块报告或核对资源。 `)):C(``,!0),i.sourcePreview.length?(f(),I(`p`,ta,[R(t(i.sourceScale===null?`来源体积未提供`:`条长参照:摘要内最大已知来源`)+` `,1),i.sourceScale===null?C(``,!0):(f(),I(`span`,na,t(i.formatBytes(i.sourceScale)),1))])):C(``,!0),i.sourcePreview.length?(f(),I(`ul`,ra,[(f(!0),I(E,null,m(i.sourcePreview,e=>(f(),I(`li`,{key:e.id,class:`min-w-0`},[O(`details`,ia,[O(`summary`,{title:i.formatModuleIdentifier(e.meta.source),"aria-label":`查看来源 ${i.formatModuleIdentifier(e.meta.source)},${e.meta.packageLabel} 的关联详情`,class:`min-h-11 cursor-pointer list-none rounded-sm py-2 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-(--dashboard-accent)`},[O(`span`,oa,[n[10]||=O(`span`,{class:`icon-[mdi--chevron-right] size-3 shrink-0 self-center text-(--dashboard-text-soft) group-open:rotate-90`,"aria-hidden":`true`},null,-1),O(`code`,sa,t(i.sourceName(e.meta.source)),1),O(`span`,ca,t(e.bytes===null?`未知`:i.formatBytes(e.bytes)),1)]),O(`span`,la,t(e.meta.packageLabel),1),O(`span`,{class:x([`mt-2 block h-1.5 bg-(--dashboard-panel-muted)`,e.bytes===null?`border border-dashed border-(--dashboard-border)`:``]),"aria-hidden":`true`},[e.bytes!==null&&e.bytes>0&&i.sourceScale!==null&&i.sourceScale>0?(f(),I(`span`,{key:0,class:`block h-full bg-(--dashboard-accent)`,style:h({width:`${e.bytes/i.sourceScale*100}%`})},null,4)):C(``,!0)],2)],8,aa),O(`dl`,ua,[O(`div`,null,[O(`dt`,da,`来源 · `+t(i.formatSourceType(e.meta.sourceType)),1),O(`dd`,fa,t(i.formatModuleIdentifier(e.meta.source)),1)]),O(`div`,null,[n[11]||=O(`dt`,{class:`text-(--dashboard-text-soft)`},`所属包`,-1),O(`dd`,pa,t(e.meta.packageLabel),1)]),O(`div`,null,[n[12]||=O(`dt`,{class:`text-(--dashboard-text-soft)`},`关联产物`,-1),O(`dd`,ma,t(e.meta.fileName),1)])])])]))),128))])):C(``,!0),i.sourcePreview.length?(f(),I(`p`,ha,` 仅为报告关联,贡献不可相加,也不等于可节省量。 `)):C(``,!0),O(`button`,{type:`button`,class:`mt-2 inline-flex min-h-9 max-w-full items-center gap-2 rounded-sm py-1.5 text-left text-xs text-(--dashboard-accent) [overflow-wrap:anywhere] hover:underline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-(--dashboard-accent) pointer-coarse:min-h-11`,onClick:n[0]||=e=>i.emit(`showSources`)},[...n[13]||=[R(` 查看模块与来源 `,-1),O(`span`,{class:`icon-[mdi--arrow-right] size-4 shrink-0`,"aria-hidden":`true`},null,-1)]]),r.evidence.constraints.length?(f(),I(`details`,ga,[O(`summary`,_a,` 完整证据边界 · `+t(r.evidence.constraints.length)+` 项 `,1),O(`ul`,va,[(f(!0),I(E,null,m(r.evidence.constraints,e=>(f(),I(`li`,{key:e,class:`[overflow-wrap:anywhere]`},t(e),1))),128))])])):C(``,!0)])])])}var ba=z(vi,[[`render`,ya],[`__scopeId`,`data-v-d04f9a1a`]]),xa=L({__name:`DiagnosticSourcesEvidence`,props:{evidence:{}},emits:[`openSource`],setup(e,{expose:t,emit:n}){t();let r={emit:n,get formatBytes(){return U},get formatSourceType(){return de}};return Object.defineProperty(r,"__isScriptSetup",{enumerable:!1,value:!0}),r}}),Sa={"aria-label":`报告中的模块与来源`,class:`@container/source-evidence min-w-0 border-t border-(--dashboard-border) pt-6`},Ca={class:`flex flex-wrap items-baseline justify-between gap-2`},wa={"data-source-count":``,class:`text-xs tabular-nums text-(--dashboard-text-soft)`},Ta={key:0,class:`mt-6 text-sm leading-6 text-(--dashboard-text-soft)`},Ea={key:1,class:`mt-6 divide-y divide-(--dashboard-border)`},Da={class:`min-w-0`},Oa={class:`flex min-w-0 flex-wrap items-baseline justify-between gap-x-4 gap-y-1`},ka={class:`text-xs text-(--dashboard-text-soft)`},Aa={class:`text-xs tabular-nums text-(--dashboard-text-muted)`},ja=[`aria-label`,`onClick`],Ma={class:`min-w-0 [overflow-wrap:anywhere]`},Na={key:1,"data-diagnostic-unreadable-source":``,class:`mt-2`},Pa={class:`block font-mono text-xs leading-6 text-(--dashboard-text) [overflow-wrap:anywhere]`},Fa={class:`mt-1 text-xs leading-5 text-(--dashboard-text-soft)`},Ia={class:`grid content-start gap-1 text-xs leading-5 text-(--dashboard-text-muted)`},La={class:`grid grid-cols-[3rem_minmax(0,1fr)] gap-2`},Ra={class:`[overflow-wrap:anywhere]`},za={class:`grid grid-cols-[3rem_minmax(0,1fr)] gap-2`},Ba={class:`font-mono [overflow-wrap:anywhere]`};function Va(e,n,r,i,a,o){return f(),I(`section`,Sa,[O(`header`,Ca,[n[0]||=O(`h3`,{class:`font-mono text-sm font-medium text-(--dashboard-text)`},` 模块与来源 `,-1),O(`span`,wa,`展示 `+t(r.evidence.sources.length)+` / `+t(r.evidence.sourceCount)+` 项 · 最多 16 项`,1)]),n[4]||=O(`p`,{class:`mt-3 text-sm leading-6 text-(--dashboard-text-muted)`},` 报告关联不等于导入链;打开来源后需核对当前源码与构建时刻的差异。 `,-1),r.evidence.sources.length===0?(f(),I(`p`,Ta,` 当前条目没有可定位的来源模块。没有来源记录不代表没有依赖;请先补齐模块报告或核对资源本身。 `)):(f(),I(`ul`,Ea,[(f(!0),I(E,null,m(r.evidence.sources,e=>(f(),I(`li`,{key:e.id,class:`source-evidence-row grid min-w-0 gap-3 py-4 first:pt-0`},[O(`div`,Da,[O(`div`,Oa,[O(`span`,ka,t(i.formatSourceType(e.meta.sourceType)),1),O(`span`,Aa,` 模块体积 `+t(e.bytes===null?`未知`:i.formatBytes(e.bytes)),1)]),e.readable?(f(),I(`button`,{key:0,type:`button`,"data-diagnostic-open-source":``,class:`mt-1 inline-flex min-h-9 max-w-full items-start gap-2 rounded-sm py-1 text-left font-mono text-xs leading-6 text-(--dashboard-accent) underline decoration-(--dashboard-border-strong) underline-offset-4 hover:decoration-current focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-(--dashboard-accent) pointer-coarse:min-h-11`,"aria-label":`打开来源 ${e.meta.source},${e.meta.packageLabel} / ${e.meta.fileName}`,onClick:t=>i.emit(`openSource`,e.meta)},[O(`span`,Ma,t(e.meta.source),1),n[1]||=O(`span`,{class:`icon-[mdi--arrow-top-right] mt-1 size-4 shrink-0`,"aria-hidden":`true`},null,-1)],8,ja)):(f(),I(`div`,Na,[O(`code`,Pa,t(e.meta.source),1),O(`p`,Fa,t(e.meta.sourceType===`node_modules`?`依赖源码需在外部工作区核实。`:`未提供可导航的源码映射,需在外部工作区核实。`),1)]))]),O(`dl`,Ia,[O(`div`,La,[n[2]||=O(`dt`,{class:`text-(--dashboard-text-soft)`},`所属包`,-1),O(`dd`,Ra,t(e.meta.packageLabel),1)]),O(`div`,za,[n[3]||=O(`dt`,{class:`text-(--dashboard-text-soft)`},`产物`,-1),O(`dd`,Ba,t(e.meta.fileName),1)])])]))),128))]))])}var Ha=z(xa,[[`render`,Va],[`__scopeId`,`data-v-d4528f4c`]]),Ua=L({__name:`DiagnosticEvidencePanel`,props:{action:{},evidence:{},comparisonLabel:{}},emits:[`openFile`,`openSource`,`inspect`],setup(e,{expose:t,emit:n}){t();let i=e,a=n,o=[{id:`compare`,label:`产物对照`},{id:`sources`,label:`模块与来源`},{id:`verification`,label:`复验条件`}],s=d(),c=P(`compare`),l=r(`panel`),u=r(`tabButtons`);async function f(e,t=!1){c.value=e,t&&(await A(),u.value?.find(t=>t.dataset.evidenceTab===e)?.focus())}function p(e,t){let n;if(e.key===`ArrowRight`)n=(t+1)%o.length;else if(e.key===`ArrowLeft`)n=(t+o.length-1)%o.length;else if(e.key===`Home`)n=0;else if(e.key===`End`)n=o.length-1;else return;e.preventDefault();let r=o[n];r&&f(r.id,!0)}y(()=>i.action?.key,()=>{f(`compare`,!!(l.value?.contains(document.activeElement)||u.value?.includes(document.activeElement)))});let m={props:i,emit:a,tabs:o,panelId:s,activeTab:c,panel:l,tabButtons:u,selectTab:f,handleTabKeydown:p,DiagnosticArtifactEvidence:ba,DiagnosticSourcesEvidence:Ha};return Object.defineProperty(m,"__isScriptSetup",{enumerable:!1,value:!0}),m}}),Wa={"data-diagnostic-evidence":``,"aria-label":`所选条目的证据工作区`,class:`diagnostic-workspace min-w-0`},Ga={class:`diagnostic-columns grid min-w-0 items-start overflow-hidden rounded-md border border-(--dashboard-border) bg-(--dashboard-panel)`},Ka={class:`diagnostic-index min-w-0 border-b border-(--dashboard-border) bg-(--dashboard-bg) p-3`,"aria-label":`问题与线索索引`},qa={ref:`panel`,class:`grid min-w-0 content-start gap-3 p-3 sm:p-4`},Ja={class:`flex min-w-0 flex-wrap items-center justify-between gap-x-5 gap-y-2 border-b border-(--dashboard-border)`},Ya={key:0,role:`tablist`,"aria-label":`证据视图`,class:`flex min-w-0 gap-5`},Xa=[`id`,`aria-controls`,`aria-selected`,`tabindex`,`data-evidence-tab`,`onClick`,`onKeydown`],Za=[`id`,`aria-labelledby`],Qa=[`id`,`aria-labelledby`],$a=[`id`,`aria-labelledby`],eo={class:`diagnostic-verification grid gap-6`},to={"aria-label":`调查步骤`},no={key:0,class:`mt-3 grid list-decimal gap-3 pl-5 text-sm leading-6 text-(--dashboard-text-muted)`},ro={key:1,class:`mt-3 text-sm text-(--dashboard-text-soft)`},io={"aria-label":`复验要求`},ao={key:0,class:`mt-3 grid gap-3 text-sm leading-6 text-(--dashboard-text-muted)`},oo={key:1,class:`mt-3 text-sm text-(--dashboard-text-soft)`},so={class:`flex min-w-0 flex-wrap items-center justify-between gap-x-4 gap-y-2 text-xs text-(--dashboard-text-soft)`},co={key:2,class:`min-w-0 border-l-2 border-(--dashboard-accent) py-2 pl-4`};function lo(e,n,r,i,a,s){return f(),I(`section`,Wa,[O(`div`,Ga,[O(`aside`,Ka,[o(e.$slots,`index`,{},void 0,!0)]),O(`div`,qa,[r.action&&r.evidence?o(e.$slots,`heading`,{},void 0,!0,0):C(``,!0),O(`div`,Ja,[r.action&&r.evidence?(f(),I(`div`,Ya,[(f(),I(E,null,m(i.tabs,(e,n)=>O(`button`,{id:`${i.panelId}-tab-${e.id}`,key:e.id,ref_for:!0,ref:`tabButtons`,type:`button`,role:`tab`,class:x([`min-h-11 min-w-0 border-b-2 py-2 text-sm font-medium [overflow-wrap:anywhere] focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-(--dashboard-accent)`,i.activeTab===e.id?`border-(--dashboard-accent) text-(--dashboard-accent)`:`border-transparent text-(--dashboard-text-muted) hover:text-(--dashboard-text)`]),"aria-controls":`${i.panelId}-panel-${e.id}`,"aria-selected":i.activeTab===e.id,tabindex:i.activeTab===e.id?0:-1,"data-evidence-tab":e.id,onClick:t=>i.selectTab(e.id),onKeydown:e=>i.handleTabKeydown(e,n)},t(e.label),43,Xa)),64))])):C(``,!0),o(e.$slots,`controls`,{},void 0,!0)]),r.action&&r.evidence?(f(),I(E,{key:1},[v(O(`div`,{id:`${i.panelId}-panel-compare`,role:`tabpanel`,tabindex:`0`,"aria-labelledby":`${i.panelId}-tab-compare`,class:`min-w-0 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-(--dashboard-accent)`},[_(i.DiagnosticArtifactEvidence,{evidence:r.evidence,"comparison-label":r.comparisonLabel,onOpenFile:n[0]||=e=>i.emit(`openFile`,e),onShowSources:n[1]||=e=>i.selectTab(`sources`,!0)},null,8,[`evidence`,`comparison-label`])],8,Za),[[F,i.activeTab===`compare`]]),v(O(`div`,{id:`${i.panelId}-panel-sources`,role:`tabpanel`,tabindex:`0`,"aria-labelledby":`${i.panelId}-tab-sources`,class:`min-w-0 border-t border-(--dashboard-border) pt-6 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-(--dashboard-accent)`},[_(i.DiagnosticSourcesEvidence,{evidence:r.evidence,onOpenSource:n[2]||=e=>i.emit(`openSource`,e)},null,8,[`evidence`])],8,Qa),[[F,i.activeTab===`sources`]]),v(O(`div`,{id:`${i.panelId}-panel-verification`,role:`tabpanel`,tabindex:`0`,"aria-labelledby":`${i.panelId}-tab-verification`,class:`min-w-0 border-t border-(--dashboard-border) pt-6 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-(--dashboard-accent)`},[n[6]||=O(`p`,{class:`mb-5 font-mono text-xs text-(--dashboard-text-soft)`},`拟议检查 · 尚未运行`,-1),O(`div`,eo,[O(`section`,to,[n[4]||=O(`h3`,{class:`text-base font-semibold text-(--dashboard-text)`},`先补齐证据`,-1),r.evidence.steps.length?(f(),I(`ol`,no,[(f(!0),I(E,null,m(r.evidence.steps,e=>(f(),I(`li`,{key:e},t(e),1))),128))])):(f(),I(`p`,ro,`当前条目尚无可用调查步骤。`))]),O(`section`,io,[n[5]||=O(`h3`,{class:`text-base font-semibold text-(--dashboard-text)`},`判断是否解决`,-1),r.evidence.checks.length?(f(),I(`ul`,ao,[(f(!0),I(E,null,m(r.evidence.checks,e=>(f(),I(`li`,{key:e,class:`border-b border-(--dashboard-border) pb-3`},t(e),1))),128))])):(f(),I(`p`,oo,`当前条目尚无可用复验条件。`))])]),n[7]||=O(`p`,{class:`mt-5 border-l-2 border-(--dashboard-accent) pl-3 text-xs leading-5 text-(--dashboard-text-muted)`},` 只有构建通过或总量下降不足以宣称解决。需要重新读取实际测量,并验证相关页面与分包运行行为;合理增长可以保留。 `,-1)],8,$a),[[F,i.activeTab===`verification`]]),O(`footer`,so,[n[9]||=O(`p`,null,`产物数据不等于源码因果。`,-1),O(`button`,{type:`button`,"data-diagnostic-inspect":``,class:`inline-flex min-h-11 items-center gap-2 text-(--dashboard-accent) hover:underline`,onClick:n[3]||=e=>i.emit(`inspect`,r.action)},[...n[8]||=[R(` 查看完整分析 `,-1),O(`span`,{class:`icon-[mdi--arrow-right] size-4 shrink-0`,"aria-hidden":`true`},null,-1)]])])],64)):(f(),I(`div`,co,[...n[10]||=[O(`h2`,{class:`font-semibold text-(--dashboard-text)`},`当前没有预算风险或待查线索`,-1),O(`p`,{class:`mt-2 text-sm leading-6 text-(--dashboard-text-muted)`},`可从包体图继续查看产物;构建数据不代表运行时已经验收。`,-1)]]))],512)])])}var uo=z(Ua,[[`render`,lo],[`__scopeId`,`data-v-dc397ef9`]]),fo=L({__name:`HistoryBaselinePanel`,props:{snapshots:{},baselineSnapshotId:{},comparisonMode:{}},emits:[`setBaseline`,`setComparisonMode`],setup(e,{expose:t,emit:n}){t();let r=e,i=n,a=M(()=>r.comparisonMode===`baseline`&&r.baselineSnapshotId?`snapshot:${r.baselineSnapshotId}`:`previous`),o=M(()=>[{value:`previous`,label:`上次构建`},...r.snapshots.map(e=>({value:`snapshot:${e.id}`,label:`${new Date(e.capturedAt).toLocaleString(`zh-CN`,{hour12:!1})} · ${U(e.totalBytes)}`}))]);function s(e){e===`previous`?i(`setComparisonMode`,`previous`):i(`setBaseline`,e.slice(9))}let c={props:r,emit:i,selectedValue:a,options:o,selectBaseline:s,AppSelect:be};return Object.defineProperty(c,"__isScriptSetup",{enumerable:!1,value:!0}),c}});function po(e,t,n,r,i,a){return f(),D(r.AppSelect,{class:`w-full max-w-72`,label:`对照基线`,variant:`toolbar`,"model-value":r.selectedValue,options:r.options,"onUpdate:modelValue":r.selectBaseline},null,8,[`model-value`,`options`])}var mo=z(fo,[[`render`,po]]),ho=L({__name:`AnalyzeDiagnosticsSection`,props:{actionItems:{},baselineSnapshotId:{},comparisonMode:{},comparisonResult:{},duplicateModules:{},historySnapshots:{},incrementAttribution:{},result:{},selectedActionKey:{}},emits:[`focusAction`,`openFile`,`openSource`,`selectAction`,`setBaseline`,`setComparisonMode`],setup(e,{expose:t,emit:n}){t();let r=e,i=n,a=M(()=>r.actionItems.find(e=>e.key===r.selectedActionKey)??r.actionItems[0]),o=M(()=>H(a.value?.targetLabel??``)),s=M(()=>o.value.slice(o.value.lastIndexOf(`/`)+1)),c=M(()=>a.value?{budget:`预算`,increment:`增长`,duplicate:`重复`}[a.value.kind]:``),l=M(()=>a.value?Br({action:a.value,result:r.result,previous:r.comparisonResult,duplicateModules:r.duplicateModules,incrementAttribution:r.incrementAttribution}):null),u={props:r,emit:i,selectedAction:a,selectedTarget:o,selectedName:s,selectedKindLabel:c,evidence:l,classificationLabel:M(()=>l.value?{problem:`超出预算`,risk:`预算风险`,clue:`待查线索`,unknown:`测量不完整`}[l.value.classification]:``),comparisonLabel:M(()=>r.comparisonResult?r.comparisonMode===`baseline`?`浏览器选定基线`:`上次构建(浏览器对照)`:`无历史基线,不推断增长`),primaryArtifact:M(()=>l.value?.artifacts[0]?.entry??null),get dashboardAnalyzeRevision(){return Ce},ActionCenterPanel:gi,DiagnosticEvidencePanel:uo,HistoryBaselinePanel:mo};return Object.defineProperty(u,"__isScriptSetup",{enumerable:!1,value:!0}),u}}),go={class:`grid min-w-0 content-start gap-5`,"aria-label":`问题与证据`},_o={class:`mt-1.5 border-t border-(--dashboard-border) pt-1.5`},vo={class:`mt-3 text-xs text-(--dashboard-text-soft)`},yo={key:0},bo={class:`flex min-w-0 flex-wrap items-start justify-between gap-3`},xo={class:`min-w-0 flex-1 basis-64`},So={class:`flex min-w-0 flex-wrap items-center gap-x-3 gap-y-1`},Co={"data-diagnostic-object":``,class:`min-w-0 font-mono text-base font-semibold leading-6 text-(--dashboard-text) [overflow-wrap:anywhere]`},wo={class:`rounded-sm border border-(--dashboard-border) px-1.5 py-0.5 text-xs text-(--dashboard-text-muted)`},To={key:0,"data-diagnostic-object-path":``,class:`mt-1 font-mono text-xs leading-5 text-(--dashboard-text-soft) [overflow-wrap:anywhere]`};function Eo(e,n,r,i,a,s){return f(),I(`section`,go,[_(i.DiagnosticEvidencePanel,{action:i.selectedAction,evidence:i.evidence,"comparison-label":i.comparisonLabel,onOpenFile:n[4]||=e=>i.emit(`openFile`,e),onOpenSource:n[5]||=e=>i.emit(`openSource`,e),onInspect:n[6]||=e=>i.emit(`selectAction`,e)},re({index:c(()=>[o(e.$slots,`overview`),O(`div`,_o,[_(i.ActionCenterPanel,{actions:r.actionItems,"active-key":i.selectedAction?.key??null,onSelect:n[0]||=e=>i.emit(`focusAction`,e)},null,8,[`actions`,`active-key`])]),O(`p`,vo,[n[7]||=R(` 当前报告`,-1),i.dashboardAnalyzeRevision===null?C(``,!0):(f(),I(`span`,yo,` · R`+t(i.dashboardAnalyzeRevision),1))])]),controls:c(()=>[_(i.HistoryBaselinePanel,{snapshots:r.historySnapshots,"baseline-snapshot-id":r.baselineSnapshotId,"comparison-mode":r.comparisonMode,onSetBaseline:n[1]||=e=>i.emit(`setBaseline`,e),onSetComparisonMode:n[2]||=e=>i.emit(`setComparisonMode`,e)},null,8,[`snapshots`,`baseline-snapshot-id`,`comparison-mode`])]),_:2},[i.selectedAction?{name:`heading`,fn:c(()=>[O(`header`,bo,[O(`div`,xo,[O(`div`,So,[O(`h2`,Co,t(i.selectedName),1),O(`span`,wo,t(i.selectedKindLabel)+` · `+t(i.classificationLabel),1)]),i.selectedTarget===i.selectedName?C(``,!0):(f(),I(`p`,To,t(i.selectedTarget),1))]),i.primaryArtifact?(f(),I(`button`,{key:0,type:`button`,class:`inline-flex min-h-11 items-center justify-center rounded-lg border border-(--dashboard-border) px-3 text-sm font-medium text-(--dashboard-text-muted) hover:bg-(--dashboard-panel-muted)`,onClick:n[3]||=e=>i.emit(`openFile`,i.primaryArtifact)},` 检查关联对象 `)):C(``,!0)])]),key:`0`}:void 0]),1032,[`action`,`evidence`,`comparison-label`])])}var Do=z(ho,[[`render`,Eo]]),Oo=L({__name:`AnalyzeDraggableGrid`,props:{items:{},storageKey:{},gridClass:{}},setup(e,{expose:t}){t();let n=e,r=P([]),i=P(null),a=M(()=>new Map(n.items.map(e=>[e.id,e]))),o=M(()=>{let e=new Set(n.items.map(e=>e.id)),t=r.value.filter(t=>e.has(t)).map(e=>a.value.get(e)).filter(e=>!!e),i=n.items.filter(e=>!r.value.includes(e.id));return[...t,...i]});function s(){try{let e=window.localStorage.getItem(n.storageKey),t=e?JSON.parse(e):null;r.value=Array.isArray(t)?t.filter(e=>typeof e==`string`):n.items.map(e=>e.id)}catch{r.value=n.items.map(e=>e.id)}}function c(e){r.value=e,window.localStorage.setItem(n.storageKey,JSON.stringify(e))}function l(e,t){i.value=e.id,t.dataTransfer?.setData(`text/plain`,e.id),t.dataTransfer&&(t.dataTransfer.effectAllowed=`move`)}function u(e){let t=i.value;if(i.value=null,!t||t===e.id)return;let n=o.value.map(e=>e.id),r=n.indexOf(t),a=n.indexOf(e.id);r<0||a<0||(n.splice(r,1),n.splice(a,0,t),c(n))}function d(){c(n.items.map(e=>e.id))}k(s),y(()=>n.items.map(e=>e.id).join(`\0`),s);let f={props:n,order:r,draggingId:i,itemMap:a,orderedItems:o,readOrder:s,writeOrder:c,handleDragStart:l,handleDrop:u,resetOrder:d,AppToolButton:K,DashboardIcon:pe};return Object.defineProperty(f,"__isScriptSetup",{enumerable:!1,value:!0}),f}}),ko=[`onDrop`],Ao={key:0,class:`absolute inset-x-0 top-0 z-10 flex -translate-y-1/2 items-center justify-center gap-2 px-2`},jo=[`aria-label`,`title`,`onDragstart`],Mo={class:`h-4 w-4`,"aria-hidden":`true`},No={class:`min-h-0 min-w-0 max-w-full`};function Po(e,t,n,r,i,a){return f(),I(`section`,{class:x(n.gridClass)},[(f(!0),I(E,null,m(r.orderedItems,n=>(f(),I(`article`,{key:n.id,class:x([`relative grid min-h-0 min-w-0 max-w-full rounded-lg border border-dashed border-transparent transition`,[n.className,r.orderedItems.length>1?`pt-2`:``,r.draggingId===n.id?`border-(--dashboard-accent) opacity-70`:``]]),onDragover:t[1]||=T(()=>{},[`prevent`]),onDrop:e=>r.handleDrop(n)},[r.orderedItems.length>1?(f(),I(`div`,Ao,[O(`button`,{class:`inline-flex h-7 w-7 shrink-0 cursor-grab items-center justify-center rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-strong) text-(--dashboard-text-soft) shadow-(--dashboard-shadow) transition hover:border-(--dashboard-border-strong) hover:text-(--dashboard-text)`,draggable:`true`,type:`button`,"aria-label":`拖动调整${n.label}模块位置`,title:`拖动调整${n.label}模块位置`,onDragend:t[0]||=e=>r.draggingId=null,onDragstart:e=>r.handleDragStart(n,e)},[O(`span`,Mo,[_(r.DashboardIcon,{name:`metric-drag`})])],40,jo),r.orderedItems.length>1&&n.id===r.orderedItems[0]?.id?(f(),D(r.AppToolButton,{key:0,class:`absolute right-2 shadow-(--dashboard-shadow)`,label:`重置模块布局`,"icon-name":`metric-reset`,"touch-label":`重置`,onClick:r.resetOrder})):C(``,!0)])):C(``,!0),O(`div`,No,[o(e.$slots,n.id,{item:n})])],42,ko))),128))],2)}var Fo=z(Oo,[[`render`,Po]]),Io=L({__name:`AppPanelHeader`,props:{iconName:{},title:{},description:{}},setup(e,{expose:t}){t();let n={iconClassName:je(),DashboardIcon:pe};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}}),Lo={class:`flex items-center justify-between gap-3`},Ro={class:`flex items-center gap-2`},zo={class:`h-5 w-5`},Bo={class:`min-w-0 md:flex md:flex-wrap md:items-baseline md:gap-x-2`},Vo={class:`text-lg font-semibold text-(--dashboard-text)`},Ho={key:0,class:`text-xs text-(--dashboard-text-soft) md:text-sm`};function Uo(e,n,r,i,a,s){return f(),I(`div`,Lo,[O(`div`,Ro,[O(`span`,{class:x(i.iconClassName)},[O(`span`,zo,[_(i.DashboardIcon,{name:r.iconName},null,8,[`name`])])],2),O(`div`,Bo,[O(`h2`,Vo,t(r.title),1),r.description?(f(),I(`p`,Ho,t(r.description),1)):C(``,!0)])]),o(e.$slots,`meta`)])}var Wo=z(Io,[[`render`,Uo]]),Go=L({__name:`AnalyzeWorkQueuePanel`,props:{items:{},activeId:{}},emits:[`clearCompleted`,`copy`,`remove`,`select`,`toggle`],setup(e,{expose:t,emit:n}){t();let r=e,i=n,a=u(`open`),o=M(()=>r.items.filter(e=>!e.completedAt).length),s=M(()=>r.items.length-o.value),c=M(()=>r.items.filter(e=>a.value===`open`?!e.completedAt:a.value!==`done`||!!e.completedAt));function l(e){return Ae(e===`critical`?{tone:`error`}:e===`warning`?{tone:`warning`}:e===`success`?{tone:`success`}:{tone:`info`})}let d={props:r,emit:i,queueFilter:a,openCount:o,doneCount:s,visibleItems:c,getToneClassName:l,get surfaceStyles(){return Me},AppEmptyState:G,AppPanelHeader:Wo,AppToolButton:K};return Object.defineProperty(d,"__isScriptSetup",{enumerable:!1,value:!0}),d}}),Ko={class:`mt-3 grid gap-2`},qo={class:`grid grid-cols-3 gap-2 text-center`},Jo={class:`mt-3 max-h-[32rem] min-h-0 overflow-y-auto xl:max-h-none xl:overflow-hidden`},Yo={key:1,class:`grid h-full min-h-0 content-start gap-2 overflow-y-auto pr-1`},Xo={class:`flex items-start justify-between gap-2`},Zo=[`onClick`],Qo={class:`mt-2 truncate text-sm font-medium text-(--dashboard-text)`},$o={class:`mt-1 line-clamp-2 text-xs leading-5 text-(--dashboard-text-soft)`},es={key:0,class:`shrink-0 text-xs font-medium text-(--dashboard-accent)`},ts={class:`flex items-center justify-between gap-2 border-t border-(--dashboard-border) pt-2`},ns=[`onClick`],rs=[`onClick`];function is(e,n,r,i,a,o){return f(),I(`section`,{class:x([i.surfaceStyles({padding:`md`}),`grid min-h-0 min-w-0 gap-3 overflow-visible xl:h-full xl:grid-rows-[auto_auto_minmax(0,1fr)] xl:overflow-hidden`])},[_(i.AppPanelHeader,{"icon-name":`metric-bookmark`,title:`处理清单`},{meta:c(()=>[_(i.AppToolButton,{label:`复制处理清单`,"icon-name":`metric-copy`,"touch-label":`复制`,disabled:r.items.length===0,onClick:n[0]||=e=>i.emit(`copy`)},null,8,[`disabled`])]),_:1}),O(`div`,Ko,[O(`div`,qo,[O(`button`,{type:`button`,class:x([`rounded-md border px-2 py-2 text-xs transition`,i.queueFilter===`open`?`border-(--dashboard-accent) bg-(--dashboard-accent-soft) text-(--dashboard-text)`:`border-(--dashboard-border) bg-(--dashboard-panel-muted) text-(--dashboard-text-soft) hover:border-(--dashboard-border-strong)`]),onClick:n[1]||=e=>i.queueFilter=`open`},` 待处理 `+t(i.openCount),3),O(`button`,{type:`button`,class:x([`rounded-md border px-2 py-2 text-xs transition`,i.queueFilter===`done`?`border-(--dashboard-accent) bg-(--dashboard-accent-soft) text-(--dashboard-text)`:`border-(--dashboard-border) bg-(--dashboard-panel-muted) text-(--dashboard-text-soft) hover:border-(--dashboard-border-strong)`]),onClick:n[2]||=e=>i.queueFilter=`done`},` 已完成 `+t(i.doneCount),3),O(`button`,{type:`button`,class:x([`rounded-md border px-2 py-2 text-xs transition`,i.queueFilter===`all`?`border-(--dashboard-accent) bg-(--dashboard-accent-soft) text-(--dashboard-text)`:`border-(--dashboard-border) bg-(--dashboard-panel-muted) text-(--dashboard-text-soft) hover:border-(--dashboard-border-strong)`]),onClick:n[3]||=e=>i.queueFilter=`all`},` 全部 `+t(r.items.length),3)]),i.doneCount>0?(f(),I(`button`,{key:0,type:`button`,class:`h-8 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 text-xs text-(--dashboard-text-soft) transition hover:border-(--dashboard-border-strong) hover:text-(--dashboard-text)`,onClick:n[4]||=e=>i.emit(`clearCompleted`)},` 清空已完成 `)):C(``,!0)]),O(`div`,Jo,[i.visibleItems.length===0?(f(),D(i.AppEmptyState,{key:0,compact:``},{default:c(()=>[...n[5]||=[R(` 当前没有处理事项。 `,-1)]]),_:1})):(f(),I(`ol`,Yo,[(f(!0),I(E,null,m(i.visibleItems,e=>(f(),I(`li`,{key:e.id,class:x([`grid gap-2 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-2.5 transition`,r.activeId===e.id?`border-(--dashboard-accent) bg-(--dashboard-accent-soft)`:void 0])},[O(`div`,Xo,[O(`button`,{type:`button`,class:`min-w-0 text-left`,onClick:t=>i.emit(`select`,e)},[O(`span`,{class:x(i.getToneClassName(e.tone))},t(e.completedAt?`完成`:`待处理`),3),O(`p`,Qo,t(e.title),1),O(`p`,$o,t(e.meta),1)],8,Zo),e.value?(f(),I(`span`,es,t(e.value),1)):C(``,!0)]),O(`div`,ts,[O(`button`,{type:`button`,class:`rounded-full border border-(--dashboard-border) px-2.5 py-1 text-[11px] text-(--dashboard-text-soft) transition hover:border-(--dashboard-border-strong) hover:text-(--dashboard-text)`,onClick:t=>i.emit(`toggle`,e.id)},t(e.completedAt?`重新打开`:`标记完成`),9,ns),O(`button`,{type:`button`,class:`rounded-full border border-(--dashboard-border) px-2.5 py-1 text-[11px] text-(--dashboard-text-soft) transition hover:border-rose-300 hover:text-rose-500`,onClick:t=>i.emit(`remove`,e.id)},` 移除 `,8,rs)])],2))),128))]))])],2)}var as=z(Go,[[`render`,is]]);function os(e){return e>=1048576?`${(e/1024/1024).toFixed(e%1048576==0?0:2)} MB`:e>=1024?`${(e/1024).toFixed(e%1024==0?0:2)} KB`:`${e} B`}function ss(e){return e?Yn(e).filter(e=>e.status!==`ok`).map(e=>({...e,status:e.status===`unknown`?`unknown`:e.status===`exceeded`?`critical`:`warning`})):[]}function cs(e){let t=e?.metadata?.budgets,n=t?.source??`default`;return[{key:`total`,label:`总包预算`,value:`${os(t?.totalBytes??20971520)}`,source:n},{key:`main`,label:`主包预算`,value:`${os(t?.mainBytes??2097152)}`,source:n},{key:`subPackage`,label:`分包预算`,value:`${os(t?.subPackageBytes??2097152)}`,source:n},{key:`independent`,label:`独立分包预算`,value:`${os(t?.independentBytes??2097152)}`,source:n}]}var Z={totalBytes:20971520,mainBytes:2097152,subPackageBytes:2097152,independentBytes:2097152,warningRatio:.85,source:`default`},Q=1048576,ls=[{id:`wechat-default`,label:`平台上限`,detail:`按小程序常见包体限制和 85% 预警线评估。`,config:{totalBytes:20*Q,mainBytes:2*Q,subPackageBytes:2*Q,independentBytes:2*Q,warningRatio:.85}},{id:`release-buffer`,label:`发布缓冲`,detail:`保留更早预警空间,适合发版前巡检。`,config:{totalBytes:20*Q,mainBytes:2*Q,subPackageBytes:2*Q,independentBytes:2*Q,warningRatio:.75}},{id:`near-limit`,label:`临界排查`,detail:`只标记接近上限的包,适合聚焦最紧急项。`,config:{totalBytes:20*Q,mainBytes:2*Q,subPackageBytes:2*Q,independentBytes:2*Q,warningRatio:.95}}];function us(e,t){return Number.isFinite(e)&&e>0?Math.round(e):t}function ds(e){return Number.isFinite(e)?Math.min(.99,Math.max(.01,e)):Z.warningRatio}function fs(e){return{totalBytes:us(e?.totalBytes??Z.totalBytes,Z.totalBytes),mainBytes:us(e?.mainBytes??Z.mainBytes,Z.mainBytes),subPackageBytes:us(e?.subPackageBytes??Z.subPackageBytes,Z.subPackageBytes),independentBytes:us(e?.independentBytes??Z.independentBytes,Z.independentBytes),warningRatio:ds(e?.warningRatio??Z.warningRatio),...e?.runtimeBytes===void 0?{}:{runtimeBytes:e.runtimeBytes},...e?.packageBytes===void 0?{}:{packageBytes:e.packageBytes}}}function ps(e,t){return e.totalBytes===t.totalBytes&&e.mainBytes===t.mainBytes&&e.subPackageBytes===t.subPackageBytes&&e.independentBytes===t.independentBytes&&e.warningRatio===t.warningRatio}function ms(e){let t=fs(e);return ls.find(e=>ps(fs(e.config),t))}function hs(e){return ss({packages:e.result.packages,artifacts:e.result.artifacts,metadata:{budgets:{...fs(e.config),source:`config`}}})}function gs(e){let t=fs(e);return[`analyze: {`,` budgets: {`,` totalBytes: ${t.totalBytes},`,` mainBytes: ${t.mainBytes},`,` subPackageBytes: ${t.subPackageBytes},`,` independentBytes: ${t.independentBytes},`,` warningRatio: ${t.warningRatio},`,...t.runtimeBytes===void 0?[]:[` runtimeBytes: ${t.runtimeBytes},`],...t.packageBytes===void 0?[]:[` packageBytes: ${JSON.stringify(t.packageBytes)},`],` },`,`},`].join(`
4
+ `)}var _s=L({__name:`AppCompactListItem`,props:{title:{},meta:{},value:{},monoTitle:{type:Boolean},clickable:{type:Boolean},active:{type:Boolean}},emits:[`select`],setup(e,{expose:t,emit:n}){t();let r={emit:n};return Object.defineProperty(r,"__isScriptSetup",{enumerable:!1,value:!0}),r}}),vs={class:`flex items-start justify-between gap-3`},ys={class:`min-w-0`},bs={class:`mt-1 line-clamp-2 break-words text-xs leading-5 text-(--dashboard-text-soft)`},xs={key:0,class:`max-w-[40%] shrink-0 truncate font-medium text-(--dashboard-accent)`},Ss={key:1,class:`list-none`},Cs={class:`flex items-start justify-between gap-3`},ws={class:`min-w-0`},Ts={class:`mt-1 line-clamp-2 break-words text-xs leading-5 text-(--dashboard-text-soft)`},Es={key:0,class:`max-w-[40%] shrink-0 truncate font-medium text-(--dashboard-accent)`};function Ds(e,n,r,i,a,o){return r.clickable?(f(),I(`li`,Ss,[O(`button`,{type:`button`,class:x([`w-full rounded-xl border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 py-2.5 text-left transition hover:border-(--dashboard-border-strong) hover:bg-(--dashboard-panel)`,r.active?`border-(--dashboard-accent) bg-(--dashboard-accent-soft)`:void 0]),onClick:n[0]||=e=>i.emit(`select`)},[O(`div`,Cs,[O(`div`,ws,[O(`p`,{class:x([`font-medium`,r.monoTitle?`line-clamp-2 break-all font-mono text-xs leading-5 text-(--dashboard-text)`:`line-clamp-2 break-words leading-5 text-(--dashboard-text)`])},t(r.title),3),O(`p`,Ts,t(r.meta),1)]),r.value?(f(),I(`span`,Es,t(r.value),1)):C(``,!0)])],2)])):(f(),I(`li`,{key:0,class:x([`rounded-xl border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 py-2.5`,r.active?`border-(--dashboard-accent) bg-(--dashboard-accent-soft)`:void 0])},[O(`div`,vs,[O(`div`,ys,[O(`p`,{class:x([`font-medium`,r.monoTitle?`line-clamp-2 break-all font-mono text-xs leading-5 text-(--dashboard-text)`:`line-clamp-2 break-words leading-5 text-(--dashboard-text)`])},t(r.title),3),O(`p`,bs,t(r.meta),1)]),r.value?(f(),I(`span`,xs,t(r.value),1)):C(``,!0)])],2))}var Os=z(_s,[[`render`,Ds]]),ks=L({__name:`BudgetSandboxPanel`,props:{activeBudgetWarningId:{},currentWarnings:{},result:{}},emits:[`selectBudgetWarning`],setup(e,{expose:t,emit:r}){t();let i=e,a=r,o=s({totalMiB:0,mainMiB:0,subPackageMiB:0,independentMiB:0,warningPercent:85}),c=s({text:``,timer:null});function l(e){return e/1048576}function u(e){return Math.max(1,Math.round((Number.isFinite(e)?e:0)*1024*1024))}function d(){return fs(i.result.metadata?.budgets??Z)}function f(){let e=d();o.totalMiB=l(e.totalBytes),o.mainMiB=l(e.mainBytes),o.subPackageMiB=l(e.subPackageBytes),o.independentMiB=l(e.independentBytes),o.warningPercent=Math.round(e.warningRatio*100)}let p=M(()=>fs({...i.result.metadata?.budgets,totalBytes:u(o.totalMiB),mainBytes:u(o.mainMiB),subPackageBytes:u(o.subPackageMiB),independentBytes:u(o.independentMiB),warningRatio:o.warningPercent/100})),m=M(()=>hs({result:i.result,config:p.value})),h=M(()=>ms(p.value)?.id??null),g=M(()=>new Set(i.currentWarnings.map(e=>e.id))),_=M(()=>new Set(m.value.map(e=>e.id))),v=M(()=>m.value.filter(e=>!g.value.has(e.id)).length),b=M(()=>i.currentWarnings.filter(e=>!_.value.has(e.id)).length),x=M(()=>gs(p.value)),S=M(()=>m.value.slice(0,6).map(e=>({key:e.id,warning:e,active:i.activeBudgetWarningId===e.id,title:e.label,meta:e.status===`unknown`?`体积或归因不完整,无法验收`:`${e.status===`critical`?`超预算`:`接近预算`} · ${(e.ratio*100).toFixed(1)}%`,value:`${U(e.currentBytes)} / ${U(e.limitBytes)}`})));function C(e){c.text=e,c.timer&&clearTimeout(c.timer),c.timer=setTimeout(()=>{c.text=``,c.timer=null},1800)}function w(e){let t=ls.find(t=>t.id===e);if(!t)return;let n=fs(t.config);o.totalMiB=l(n.totalBytes),o.mainMiB=l(n.mainBytes),o.subPackageMiB=l(n.subPackageBytes),o.independentMiB=l(n.independentBytes),o.warningPercent=Math.round(n.warningRatio*100),C(`已应用 ${t.label}`)}async function T(){try{await W(x.value),C(`已复制`)}catch{C(`复制失败`)}}y(()=>i.result.metadata?.budgets,f,{immediate:!0}),n(()=>{c.timer&&clearTimeout(c.timer)});let E={props:i,emit:a,draft:o,actionStatus:c,bytesToMiB:l,mibToBytes:u,getInitialConfig:d,resetDraft:f,sandboxConfig:p,projectedWarnings:m,activePresetId:h,currentWarningIds:g,projectedWarningIds:_,newWarningCount:v,resolvedWarningCount:b,snippetText:x,projectedWarningItems:S,setActionStatus:C,applyPreset:w,copyBudgetSnippet:T,get budgetSandboxPresets(){return ls},AppCompactListItem:Os,AppEmptyState:G,AppToolButton:K};return Object.defineProperty(E,"__isScriptSetup",{enumerable:!1,value:!0}),E}}),As={class:`grid min-h-0 min-w-0 gap-3 overflow-visible rounded-lg border border-(--dashboard-border) bg-(--dashboard-panel) p-3 shadow-(--dashboard-shadow) xl:h-full xl:grid-rows-[auto_minmax(0,1fr)] xl:overflow-hidden`},js={class:`mb-2 flex items-center justify-between gap-3`},Ms={class:`min-w-0`},Ns={class:`mt-1 text-xs text-(--dashboard-text-soft)`},Ps={key:0,class:`text-xs font-medium text-(--dashboard-accent)`},Fs={class:`grid min-h-0 min-w-0 gap-3 overflow-visible xl:grid-rows-[auto_auto_auto_minmax(0,1fr)] xl:overflow-hidden`},Is={class:`grid gap-2 sm:grid-cols-3`},Ls=[`onClick`],Rs={class:`block truncate text-xs font-semibold`},zs={class:`mt-1 line-clamp-2 block text-[11px] leading-4 opacity-80`},Bs={class:`grid gap-2 sm:grid-cols-2`},Vs={class:`grid gap-1 text-[11px] text-(--dashboard-text-soft)`},Hs={class:`grid gap-1 text-[11px] text-(--dashboard-text-soft)`},Us={class:`grid gap-1 text-[11px] text-(--dashboard-text-soft)`},Ws={class:`grid gap-1 text-[11px] text-(--dashboard-text-soft)`},Gs={class:`grid gap-2`},Ks={class:`grid gap-1 text-[11px] text-(--dashboard-text-soft)`},qs={class:`grid grid-cols-[minmax(0,1fr)_auto] items-center gap-2`},Js={class:`max-h-80 min-h-0 overflow-y-auto pr-1 xl:max-h-none`},Ys={key:1,class:`grid content-start gap-2 text-sm text-(--dashboard-text-muted)`};function Xs(e,n,r,i,a,o){return f(),I(`section`,As,[O(`div`,js,[O(`div`,Ms,[n[5]||=O(`h3`,{class:`text-sm font-semibold text-(--dashboard-text)`},` 预算沙盘 `,-1),O(`p`,Ns,` 预测 `+t(i.projectedWarnings.length)+` 个告警 · 新增 `+t(i.newWarningCount)+` · 解除 `+t(i.resolvedWarningCount),1)]),i.actionStatus.text?(f(),I(`span`,Ps,t(i.actionStatus.text),1)):C(``,!0)]),O(`div`,Fs,[O(`div`,Is,[(f(!0),I(E,null,m(i.budgetSandboxPresets,e=>(f(),I(`button`,{key:e.id,class:x([`rounded-md border px-2 py-2 text-left transition`,i.activePresetId===e.id?`border-(--dashboard-accent) bg-(--dashboard-accent-soft) text-(--dashboard-text)`:`border-(--dashboard-border) bg-(--dashboard-panel-muted) text-(--dashboard-text-soft) hover:border-(--dashboard-border-strong) hover:text-(--dashboard-text)`]),type:`button`,onClick:t=>i.applyPreset(e.id)},[O(`span`,Rs,t(e.label),1),O(`span`,zs,t(e.detail),1)],10,Ls))),128))]),O(`div`,Bs,[O(`label`,Vs,[n[6]||=R(` 总包 MB `,-1),v(O(`input`,{"onUpdate:modelValue":n[0]||=e=>i.draft.totalMiB=e,class:`h-8 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-2 text-sm text-(--dashboard-text) outline-none focus:border-(--dashboard-accent)`,min:`0.01`,step:`0.01`,type:`number`},null,512),[[j,i.draft.totalMiB,void 0,{number:!0}]])]),O(`label`,Hs,[n[7]||=R(` 主包 MB `,-1),v(O(`input`,{"onUpdate:modelValue":n[1]||=e=>i.draft.mainMiB=e,class:`h-8 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-2 text-sm text-(--dashboard-text) outline-none focus:border-(--dashboard-accent)`,min:`0.01`,step:`0.01`,type:`number`},null,512),[[j,i.draft.mainMiB,void 0,{number:!0}]])]),O(`label`,Us,[n[8]||=R(` 分包 MB `,-1),v(O(`input`,{"onUpdate:modelValue":n[2]||=e=>i.draft.subPackageMiB=e,class:`h-8 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-2 text-sm text-(--dashboard-text) outline-none focus:border-(--dashboard-accent)`,min:`0.01`,step:`0.01`,type:`number`},null,512),[[j,i.draft.subPackageMiB,void 0,{number:!0}]])]),O(`label`,Ws,[n[9]||=R(` 独立分包 MB `,-1),v(O(`input`,{"onUpdate:modelValue":n[3]||=e=>i.draft.independentMiB=e,class:`h-8 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-2 text-sm text-(--dashboard-text) outline-none focus:border-(--dashboard-accent)`,min:`0.01`,step:`0.01`,type:`number`},null,512),[[j,i.draft.independentMiB,void 0,{number:!0}]])])]),O(`div`,Gs,[O(`label`,Ks,[R(` 预警线 `+t(i.draft.warningPercent)+`% `,1),v(O(`input`,{"onUpdate:modelValue":n[4]||=e=>i.draft.warningPercent=e,class:`accent-(--dashboard-accent)`,max:`99`,min:`1`,step:`1`,type:`range`},null,512),[[j,i.draft.warningPercent,void 0,{number:!0}]])]),O(`div`,qs,[O(`button`,{class:`h-8 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 text-xs text-(--dashboard-text-soft) transition hover:border-(--dashboard-border-strong) hover:text-(--dashboard-text)`,type:`button`,onClick:i.resetDraft},` 重置 `),_(i.AppToolButton,{label:`复制预算配置`,"icon-name":`metric-copy`,"touch-label":`复制`,onClick:i.copyBudgetSnippet})])]),O(`div`,Js,[i.projectedWarningItems.length===0?(f(),D(i.AppEmptyState,{key:0,compact:``},{default:c(()=>[...n[10]||=[R(` 当前沙盘预算下没有预计告警。 `,-1)]]),_:1})):(f(),I(`ul`,Ys,[(f(!0),I(E,null,m(i.projectedWarningItems,e=>(f(),D(i.AppCompactListItem,{key:e.key,active:e.active,clickable:``,meta:e.meta,title:e.title,value:e.value,onSelect:t=>i.emit(`selectBudgetWarning`,e.warning)},null,8,[`active`,`meta`,`title`,`value`,`onSelect`]))),128))]))])])])}var Zs=z(ks,[[`render`,Xs]]);function Qs(e,t){return!!e&&!!t&&e.sessionId===t.sessionId&&e.revision===t.revision&&e.reportHash===t.reportHash}function $s(e){let t=P(null),n=P(null),r=P(``),i=P(null),a=P(``),o=P(``),s=P(``),c=P(null),l=P(``),u=P(null),d=!1,f=0,p=null;function m(e){f+=1,i.value=e,c.value=null,u.value=null,e&&e!==p&&(p=e,l.value=``),o.value=``,s.value=``}let h=M(()=>xe.value.items),g=M(()=>h.value.find(e=>e.id===i.value)??null),_=M(()=>ge.value===`connected`&&V.value!==null),v=M(()=>a.value!==``),x=M(()=>t.value?t.value.report?_.value?Qs(t.value.report,V.value)?``:`草稿绑定的报告已过期。不会自动改绑;可明确用当前报告新建草稿并保留问题。`:`宿主未连接或报告正在同步;草稿与问题已保留。`:`创建草稿时报告尚未就绪。连接后请明确绑定当前报告。`:`请从关联对象创建调查草稿。`),C=M(()=>!v.value&&!x.value&&r.value.trim().length>0&&r.value.trim().length<=4096),w=M(()=>_.value&&!v.value&&!!g.value&&[`submitted`,`claimed`,`proposed`,`authorized`,`executing`].includes(g.value.status)),T=M(()=>_.value&&!v.value&&g.value?.status===`proposed`&&!!g.value.proposal&&Qs(g.value.report,V.value)),E=M(()=>{let e=g.value,t=V.value;return!e||e.status!==`completed`?`只有外部 Agent 回报完成的任务才能进行人工复验。`:!_.value||!t?`请等待当前报告同步完成;复验摘要已保留。`:t.sessionId!==e.report.sessionId||t.revision<=e.report.revision?`请先生成同一宿主会话中的更新报告,再检查实际结果。`:``}),D=M(()=>!v.value&&!E.value&&!!u.value&&!!l.value.trim()&&l.value.trim().length<=4096);y(()=>S(e.requestId),()=>{let i=S(e.request);if(!i)return;let a=V.value,o={target:{...i},report:a?{...a}:null};m(null),t.value?(n.value=o,s.value=`已有未提交草稿;新对象不会覆盖它,请选择保留或替换。`):(t.value=o,r.value=``)},{immediate:!0}),y([g,V,ge],()=>{let e=g.value,t=c.value;(!_.value||!e||!t||e.id!==t.id||e.version!==t.version||e.proposal?.id!==t.proposalId||!Qs(e.report,V.value))&&(c.value=null);let n=u.value;(!_.value||!e||!n||e.id!==n.id||e.version!==n.version||!Qs(n.report,V.value))&&(u.value=null)},{flush:`sync`}),b(()=>{d=!0});function O(){n.value&&!v.value&&(t.value=n.value,n.value=null,r.value=``,m(null),s.value=`已替换为明确选择的新对象;尚未提交。`)}function k(){n.value=null,s.value=`已保留原对象、报告和问题。`}function A(){v.value||(t.value=null,n.value=null,r.value=``,o.value=``,s.value=`本地草稿已取消,没有发送调查。`)}function j(){let e=V.value;t.value&&_.value&&e&&!v.value&&(t.value={target:{...t.value.target},report:{...e}},s.value=`已明确为原对象创建当前报告草稿,保留问题;提交时宿主会重新检查对象是否存在。`,o.value=``)}async function N(e,t){if(v.value||d)return;let n=V.value?.sessionId,r=f;a.value=e,o.value=``,s.value=``;try{let e=await t();if(!d&&V.value?.sessionId===n)return e}catch(e){!d&&f===r&&(!V.value||V.value.sessionId===n)&&(o.value=`${e instanceof Error?e.message:String(e)} 未确认操作成功,请检查任务列表后再决定是否重试。输入已保留。`)}finally{d||(a.value=``)}}async function ee(){let e=t.value;if(!C.value||!e?.report)return;let n=r.value,i=f,a=await N(`submit`,()=>he({report:e.report,target:e.target,question:n.trim()}));a&&(t.value===e&&r.value===n&&(t.value=null,r.value=``),f===i&&(m(a.id),s.value=`调查已由宿主接收;创建任务不授予文件修改或执行权限。`))}function te(e){let t=g.value;c.value=e&&T.value&&t?.proposal?{id:t.id,version:t.version,proposalId:t.proposal.id}:null}async function ne(){if(!T.value||!c.value)return;let e=c.value,t=f;await N(`authorize`,()=>Se(e))&&f===t&&(s.value=`宿主已接受此提案的授权。执行仍由外部 Agent 与其工作区权限控制。`)}async function F(){let e=g.value;if(!w.value||!e)return;let t=f;await N(`cancel`,()=>we({id:e.id,version:e.version}))&&f===t&&(s.value=`宿主已取消此调查,后续回报将被拒绝;外部进程不会因此停止,请在外部客户端处理。`)}function I(e){let t=g.value,n=V.value;u.value=e&&!E.value&&t&&n?{id:t.id,version:t.version,report:{...n}}:null}async function L(){if(!D.value||!u.value)return;let e={...u.value,summary:l.value.trim()},t=f;await N(`verify`,()=>ve(e))&&f===t&&(s.value=`宿主已记录你的人工复验结论与新报告测量;这不是自动验证 Agent 回报。`)}async function R(){o.value=``;try{await ye()}catch(e){d||(o.value=e instanceof Error?e.message:String(e))}}return{draft:t,pendingDraft:n,question:r,selectedId:i,tasks:h,selectedTask:g,connected:_,busy:v,pendingAction:a,error:o,notice:s,draftIssue:x,canSubmit:C,canCancel:w,canAuthorize:T,authorization:c,verificationSummary:l,verification:u,verificationIssue:E,canVerify:D,selectTask:m,replaceDraft:O,keepDraft:k,cancelDraft:A,renewDraft:j,submitDraft:ee,confirmAuthorization:te,authorizeProposal:ne,cancelTask:F,confirmVerification:I,verifyTask:L,reconnect:R}}var ec={submitted:`等待外部 Agent 领取`,claimed:`已领取 · 等待提案`,proposed:`提案待你授权`,authorized:`已授权 · 等待外部执行`,executing:`Agent 已报告开始执行`,completed:`Agent 回报完成 · 待复验`,failed:`Agent 回报失败`,cancelled:`调查已取消`,stale:`原报告已过期`,verified:`已记录人工复验`};function tc(e){return e.kind===`package`?`包 ${e.packageId}`:e.kind===`artifact`?`${e.packageId} / ${e.file}`:`${e.packageId} / ${e.file} → ${e.moduleId}`}var nc=L({__name:`InvestigationDraftForm`,props:{draft:{},question:{},issue:{},canSubmit:{type:Boolean},canRenew:{type:Boolean},busy:{type:Boolean}},emits:[`update:question`,`submit`,`cancel`,`renew`],setup(e,{expose:t,emit:n}){t();let r={props:e,emit:n,id:d(),get investigationTargetLabel(){return tc}};return Object.defineProperty(r,"__isScriptSetup",{enumerable:!1,value:!0}),r}}),rc=[`aria-labelledby`],ic=[`id`],ac={class:`border-l-2 border-(--dashboard-accent) bg-(--dashboard-panel) px-4 py-3`},oc={class:`mt-1 break-all font-mono text-sm text-(--dashboard-text)`},sc={key:0,class:`mt-2 text-xs leading-6 text-(--dashboard-text-muted)`},cc={class:`cursor-pointer`},lc={class:`break-all font-mono`},uc={class:`break-all font-mono`},dc={key:1,class:`mt-2 text-sm text-(--dashboard-text-muted)`},fc=[`for`],pc=[`id`,`value`,`disabled`,`aria-describedby`],mc=[`id`],hc={class:`flex flex-wrap gap-2`},gc=[`disabled`],_c=[`disabled`],vc=[`disabled`];function yc(e,n,r,i,a,o){return f(),I(`form`,{class:`grid gap-4`,"aria-labelledby":`${i.id}-heading`,onSubmit:n[3]||=T(e=>i.emit(`submit`),[`prevent`])},[O(`div`,null,[n[4]||=O(`p`,{class:`font-mono text-xs text-(--dashboard-accent)`},`01 / 本地草稿`,-1),O(`h3`,{id:`${i.id}-heading`,class:`mt-1 text-base font-semibold text-(--dashboard-text)`},`先定义问题,再提交调查`,8,ic),n[5]||=O(`p`,{class:`mt-2 text-sm leading-6 text-(--dashboard-text-muted)`},`浏览其他对象不会改变此草稿。提交只创建任务,不会自动调用 Agent 或授予执行权限。`,-1)]),O(`div`,ac,[n[7]||=O(`p`,{class:`text-xs text-(--dashboard-text-soft)`},`已冻结对象`,-1),O(`p`,oc,t(i.investigationTargetLabel(r.draft.target)),1),r.draft.report?(f(),I(`details`,sc,[O(`summary`,cc,`绑定报告 r`+t(r.draft.report.revision)+` · 查看会话与完整摘要`,1),O(`p`,lc,`会话 `+t(r.draft.report.sessionId),1),O(`p`,uc,`报告 SHA-256 `+t(r.draft.report.reportHash),1),n[6]||=O(`p`,null,`这是报告身份,不是磁盘源码内容的快照或哈希。`,-1)])):(f(),I(`p`,dc,`尚未绑定可用报告`))]),O(`div`,null,[O(`label`,{for:`${i.id}-question`,class:`block text-sm font-medium text-(--dashboard-text)`},`调查问题与预期结果`,8,fc),O(`textarea`,{id:`${i.id}-question`,value:r.question,disabled:r.busy,"aria-describedby":`${i.id}-issue`,maxlength:`4096`,required:``,rows:`4`,class:`mt-2 block w-full min-w-0 resize-y rounded-md border border-(--dashboard-border) bg-(--dashboard-bg) p-3 text-sm leading-7 text-(--dashboard-text) disabled:opacity-60`,placeholder:`例如:解释此产物的主要体积来源,给出保持现有行为的修改方案与验证步骤。`,onInput:n[0]||=e=>i.emit(`update:question`,e.target.value)},null,40,pc),O(`p`,{id:`${i.id}-issue`,role:`status`,class:`mt-2 text-sm leading-6 text-(--dashboard-text-muted)`},t(r.issue||`问题可继续编辑;对象与报告身份不随浏览选择改变。`),9,mc)]),O(`div`,hc,[O(`button`,{type:`submit`,disabled:!r.canSubmit,class:`min-h-11 rounded-md border border-(--dashboard-accent) bg-(--dashboard-accent-soft) px-4 text-sm font-semibold text-(--dashboard-accent) hover:bg-(--dashboard-panel-muted) disabled:opacity-50`},t(r.busy?`正在提交…`:`提交调查`),9,gc),r.issue?(f(),I(`button`,{key:0,type:`button`,disabled:!r.canRenew||r.busy,class:`min-h-11 rounded-md border border-(--dashboard-border) px-3 text-sm text-(--dashboard-text) hover:bg-(--dashboard-panel-muted) disabled:opacity-50`,onClick:n[1]||=e=>i.emit(`renew`)},t(i.props.draft.report?`用当前报告新建草稿,保留问题`:`明确绑定当前报告`),9,_c)):C(``,!0),O(`button`,{type:`button`,disabled:r.busy,class:`min-h-11 rounded-md px-3 text-sm text-(--dashboard-text-muted) underline-offset-4 hover:underline disabled:opacity-50`,onClick:n[2]||=e=>i.emit(`cancel`)},`取消草稿`,8,vc)])],40,rc)}var bc=z(nc,[[`render`,yc]]),xc=L({__name:`InvestigationContextCopy`,props:{task:{}},setup(e,{expose:t}){t();let n=e,i=d(),a=P(!1),o=P(``),s=r(`context`),c=M(()=>[`Dashboard 对象调查(上下文辅助,不是执行指令或授权)`,JSON.stringify({id:n.task.id,version:n.task.version,report:n.task.report,target:n.task.target,question:n.task.question,status:n.task.status},null,2),`请在已配置的 Dashboard MCP 上读取 get-dashboard-state 与 get-investigation,核实会话、报告、任务版本及状态后再领取或回报。`,`Agent 名称是自行声明;任务领取不证明在线。先提交提案,等待浏览器对精确提案的授权后再开始。`,`报告哈希不代表源码快照。文件与命令权限由外部客户端管理;Dashboard 不提供通用执行或写文件接口。`,`此处复制没有发送任务,也没有授予权限。`].join(`
5
+
6
+ `));y(c,()=>{o.value=``});function l(){let e=document.activeElement;try{Oe(c.value),o.value=`已复制。请手动交给已配置 MCP 的客户端;没有派发任务或授予权限。`}catch{a.value=!0,o.value=`剪贴板不可用。请展开下方文本并手动选择复制。`}finally{document.activeElement===document.body&&e instanceof HTMLElement&&e.isConnected&&e.focus({preventScroll:!0})}}let u={props:n,id:i,expanded:a,status:o,textarea:s,context:c,copyContext:l};return Object.defineProperty(u,"__isScriptSetup",{enumerable:!1,value:!0}),u}}),Sc=[`aria-labelledby`],Cc=[`id`],wc={class:`mt-2 flex flex-wrap gap-2`},Tc=[`aria-expanded`,`aria-controls`],Ec={role:`status`,class:`mt-2 text-sm leading-6 text-(--dashboard-text-muted)`},Dc=[`id`],Oc=[`for`],kc=[`id`,`value`];function Ac(e,n,r,i,a,o){return f(),I(`section`,{class:`border-t border-(--dashboard-border) pt-4`,"aria-labelledby":`${i.id}-heading`},[O(`h4`,{id:`${i.id}-heading`,class:`text-sm font-semibold text-(--dashboard-text)`},`交给外部 Agent`,8,Cc),n[2]||=O(`p`,{class:`mt-2 text-sm leading-6 text-(--dashboard-text-muted)`},`已配置 MCP 的客户端可以读取此任务。这里不检测 Agent 在线状态,复制也不等于派发。`,-1),O(`div`,wc,[O(`button`,{type:`button`,class:`min-h-11 rounded-md border border-(--dashboard-border) px-3 text-sm text-(--dashboard-text) hover:bg-(--dashboard-panel-muted)`,onClick:i.copyContext},`复制任务 ID 与上下文`),O(`button`,{type:`button`,class:`min-h-11 rounded-md px-3 text-sm text-(--dashboard-accent) hover:underline`,"aria-expanded":i.expanded,"aria-controls":`${i.id}-context`,onClick:n[0]||=e=>i.expanded=!i.expanded},t(i.expanded?`收起文本`:`查看 / 手动复制文本`),9,Tc)]),O(`p`,Ec,t(i.status),1),v(O(`div`,{id:`${i.id}-context`,class:`mt-3`},[O(`label`,{for:`${i.id}-text`,class:`text-sm text-(--dashboard-text-muted)`},`任务上下文(只读)`,8,Oc),O(`textarea`,{id:`${i.id}-text`,ref:`context`,value:i.context,readonly:``,rows:`8`,spellcheck:`false`,class:`mt-2 block w-full min-w-0 resize-y rounded-md border border-(--dashboard-border) bg-(--dashboard-bg) p-3 font-mono text-xs leading-6 text-(--dashboard-text)`},null,8,kc),O(`button`,{type:`button`,class:`mt-2 min-h-11 rounded-md px-3 text-sm text-(--dashboard-accent) hover:underline`,onClick:n[1]||=e=>{i.textarea?.focus(),i.textarea?.select()}},`选中全部文本`)],8,Dc),[[F,i.expanded]])],8,Sc)}var jc=z(xc,[[`render`,Ac]]),Mc=L({__name:`InvestigationMeasurements`,props:{measurements:{}},setup(e,{expose:t}){t();let n=e,r={props:n,rows:M(()=>[{label:`原始产物`,bytes:n.measurements.rawBytes},{label:`gzip`,bytes:n.measurements.gzipBytes},{label:`brotli`,bytes:n.measurements.brotliBytes},{label:`模块归因`,bytes:n.measurements.attributedBytes},{label:`源码`,bytes:n.measurements.sourceBytes}]),get formatBytes(){return U}};return Object.defineProperty(r,"__isScriptSetup",{enumerable:!1,value:!0}),r}}),Nc={class:`flex flex-wrap gap-x-6 gap-y-3 text-sm`},Pc={class:`text-xs text-(--dashboard-text-soft)`},Fc={class:`mt-1 font-mono text-(--dashboard-text)`};function Ic(e,n,r,i,a,o){return f(),I(`dl`,Nc,[(f(!0),I(E,null,m(i.rows,e=>(f(),I(`div`,{key:e.label},[O(`dt`,Pc,t(e.label),1),O(`dd`,Fc,t(e.bytes===null?`未测量`:i.formatBytes(e.bytes)),1)]))),128))])}var Lc=z(Mc,[[`render`,Ic]]),Rc=L({__name:`InvestigationTaskDetails`,props:{task:{},currentReport:{},busy:{type:Boolean},canAuthorize:{type:Boolean},authorizationChecked:{type:Boolean},canCancel:{type:Boolean},verificationIssue:{},verificationSummary:{},verificationChecked:{type:Boolean},canVerify:{type:Boolean}},emits:[`confirmAuthorization`,`authorize`,`cancel`,`update:verificationSummary`,`confirmVerification`,`verify`],setup(e,{expose:t,emit:n}){t();let r={props:e,emit:n,id:d(),checkOutcomeLabels:{passed:`Agent 称通过`,failed:`Agent 称失败`,"not-run":`未运行`},InvestigationContextCopy:jc,InvestigationMeasurements:Lc,get investigationStatusLabels(){return ec},get investigationTargetLabel(){return tc}};return Object.defineProperty(r,"__isScriptSetup",{enumerable:!1,value:!0}),r}}),zc=[`aria-labelledby`,`aria-busy`],Bc={role:`status`,class:`text-sm font-medium text-(--dashboard-accent)`},Vc=[`id`],Hc={class:`mt-2 break-all font-mono text-xs leading-6 text-(--dashboard-text-muted)`},Uc={class:`mt-2 text-xs leading-6 text-(--dashboard-text-soft)`},Wc={class:`cursor-pointer`},Gc={class:`break-all font-mono`},Kc={class:`break-all font-mono`},qc={class:`break-all font-mono`},Jc=[`aria-labelledby`],Yc=[`id`],Xc=[`aria-labelledby`],Zc=[`id`],Qc={key:0,class:`mt-2 text-sm leading-6 text-(--dashboard-text)`},$c={key:1,class:`mt-2 text-sm leading-6 text-(--dashboard-text-muted)`},el=[`aria-labelledby`],tl=[`id`],nl={class:`mt-2 break-all font-mono text-xs leading-6 text-(--dashboard-text-soft)`},rl={class:`mt-2 whitespace-pre-wrap text-sm leading-7 text-(--dashboard-text)`},il={class:`mt-3 grid gap-3 text-sm`},al={class:`break-all font-mono leading-6 text-(--dashboard-text)`},ol={class:`mt-1 whitespace-pre-wrap leading-6 text-(--dashboard-text-muted)`},sl={class:`mt-2 list-disc space-y-1 pl-5 text-sm leading-6 text-(--dashboard-text-muted)`},cl={key:0,class:`mt-2 list-disc space-y-1 pl-5 text-sm leading-6 text-(--dashboard-text-muted)`},ll={key:1,class:`mt-2 text-sm leading-6 text-(--dashboard-text-muted)`},ul={key:2,class:`mt-4 grid gap-3`},dl={class:`flex items-start gap-3 text-sm leading-6 text-(--dashboard-text)`},fl=[`checked`,`disabled`],pl={key:0,role:`status`,class:`text-sm leading-6 text-(--dashboard-text-muted)`},ml=[`disabled`],hl={key:3,class:`mt-4 break-all text-sm leading-6 text-(--dashboard-text-muted)`},gl=[`aria-labelledby`],_l=[`id`],vl={class:`mt-2 whitespace-pre-wrap text-sm leading-7 text-(--dashboard-text)`},yl={class:`mt-2 text-xs leading-6 text-(--dashboard-text-soft)`},bl={key:0,class:`mt-2 grid gap-1 font-mono text-xs leading-6 text-(--dashboard-text-muted)`},xl={key:1,class:`mt-2 text-sm text-(--dashboard-text-muted)`},Sl={key:2,class:`mt-2 grid gap-3 text-sm leading-6 text-(--dashboard-text-muted)`},Cl={class:`break-all font-mono`},wl={key:3,class:`mt-2 text-sm text-(--dashboard-text-muted)`},Tl=[`aria-labelledby`],El=[`id`],Dl={role:`status`,class:`text-sm leading-6 text-(--dashboard-text-muted)`},Ol=[`for`],kl=[`id`,`value`,`disabled`],Al={class:`flex items-start gap-3 text-sm leading-6 text-(--dashboard-text)`},jl=[`checked`,`disabled`],Ml=[`disabled`],Nl=[`aria-labelledby`],Pl=[`id`],Fl={class:`mt-2 whitespace-pre-wrap text-sm leading-7 text-(--dashboard-text)`},Il={class:`my-3 text-xs leading-6 text-(--dashboard-text-soft)`},Ll={key:1,class:`text-sm leading-6 text-(--dashboard-text-muted)`},Rl={key:4,class:`border-t border-(--dashboard-border) pt-4`},zl=[`disabled`],Bl={key:5,role:`status`,class:`border-l-2 border-(--dashboard-border-strong) pl-3 text-sm leading-7 text-(--dashboard-text-muted)`};function Vl(e,n,r,i,a,o){return f(),I(`article`,{class:`grid gap-5`,"aria-labelledby":`${i.id}-heading`,"aria-busy":r.busy},[O(`header`,null,[O(`p`,Bc,t(i.investigationStatusLabels[r.task.status]),1),O(`h3`,{id:`${i.id}-heading`,class:`mt-2 whitespace-pre-wrap text-base font-semibold leading-7 text-(--dashboard-text)`},t(r.task.question),9,Vc),O(`p`,Hc,t(i.investigationTargetLabel(r.task.target)),1),O(`details`,Uc,[O(`summary`,Wc,`任务身份 · r`+t(r.task.report.revision)+` · 任务版本 `+t(r.task.version),1),O(`p`,Gc,`任务 `+t(r.task.id),1),O(`p`,Kc,`会话 `+t(r.task.report.sessionId),1),O(`p`,qc,`报告 SHA-256 `+t(r.task.report.reportHash),1),O(`p`,null,`创建 `+t(r.task.createdAt)+` · 更新 `+t(r.task.updatedAt),1),n[6]||=O(`p`,null,`报告哈希不是源码快照;工作区权限仍由外部客户端控制。`,-1)])]),O(`section`,{class:`border-l-2 border-(--dashboard-accent) bg-(--dashboard-panel) p-4`,"aria-labelledby":`${i.id}-evidence`},[O(`h4`,{id:`${i.id}-evidence`,class:`mb-3 text-sm font-semibold text-(--dashboard-text)`},`提交时的报告测量`,8,Yc),_(i.InvestigationMeasurements,{measurements:r.task.evidence},null,8,[`measurements`]),n[7]||=O(`p`,{class:`mt-3 text-xs leading-6 text-(--dashboard-text-soft)`},`压缩、模块归因和源码字节是不同口径;未测量不等于零,归因不代表实际产物压缩收益。`,-1)],8,Jc),O(`section`,{"aria-labelledby":`${i.id}-claim`},[O(`h4`,{id:`${i.id}-claim`,class:`text-sm font-semibold text-(--dashboard-text)`},`外部 Agent 记录`,8,Zc),r.task.agent?(f(),I(`p`,Qc,t(r.task.agent.name)+` 已领取 · `+t(r.task.agent.claimedAt),1)):(f(),I(`p`,$c,t(r.task.status===`submitted`?`等待外部 Agent 领取。`:`没有 Agent 领取记录。`),1)),n[8]||=O(`p`,{class:`mt-1 text-xs leading-6 text-(--dashboard-text-soft)`},`领取名称由客户端自行声明,不是认证身份、在线连接或心跳证明。`,-1)],8,Xc),r.task.proposal?(f(),I(`section`,{key:0,class:`border-t border-(--dashboard-border) pt-4`,"aria-labelledby":`${i.id}-proposal`},[n[10]||=O(`p`,{class:`font-mono text-xs text-(--dashboard-accent)`},`02 / 外部提案`,-1),O(`h4`,{id:`${i.id}-proposal`,class:`mt-1 text-sm font-semibold text-(--dashboard-text)`},`查看精确变更,再决定是否授权`,8,tl),O(`p`,nl,`提案 `+t(r.task.proposal.id),1),O(`p`,rl,t(r.task.proposal.summary),1),O(`ul`,il,[(f(!0),I(E,null,m(r.task.proposal.changes,(e,n)=>(f(),I(`li`,{key:n,class:`border-l border-(--dashboard-border-strong) pl-3`},[O(`p`,al,t(e.path),1),O(`p`,ol,t(e.description),1)]))),128))]),n[11]||=O(`h5`,{class:`mt-4 text-sm font-medium text-(--dashboard-text)`},`提议的检查(尚不是执行结果)`,-1),O(`ul`,sl,[(f(!0),I(E,null,m(r.task.proposal.checks,(e,n)=>(f(),I(`li`,{key:n,class:`whitespace-pre-wrap`},t(e),1))),128))]),n[12]||=O(`h5`,{class:`mt-4 text-sm font-medium text-(--dashboard-text)`},`Agent 声明的风险`,-1),r.task.proposal.risks.length?(f(),I(`ul`,cl,[(f(!0),I(E,null,m(r.task.proposal.risks,(e,n)=>(f(),I(`li`,{key:n,class:`whitespace-pre-wrap`},t(e),1))),128))])):(f(),I(`p`,ll,`Agent 未列出风险,不代表已经证明没有风险。`)),r.task.status===`proposed`?(f(),I(`div`,ul,[O(`label`,dl,[O(`input`,{type:`checkbox`,checked:r.authorizationChecked,disabled:!r.canAuthorize,class:`mt-1 size-4 shrink-0 accent-(--dashboard-accent)`,onChange:n[0]||=e=>i.emit(`confirmAuthorization`,e.target.checked)},null,40,fl),n[9]||=O(`span`,null,`我已查看此提案的路径、检查与风险,同意仅授权上述提案。报告或提案改变后需要重新确认。`,-1)]),!r.canAuthorize&&!r.busy?(f(),I(`p`,pl,`连接或原报告已变化;旧提案不可授权。请保留此记录并针对当前报告重新调查。`)):C(``,!0),O(`button`,{type:`button`,disabled:!r.canAuthorize||!r.authorizationChecked,class:`min-h-11 justify-self-start rounded-md border border-(--dashboard-accent) bg-(--dashboard-accent-soft) px-4 text-sm font-semibold text-(--dashboard-accent) disabled:opacity-50`,onClick:n[1]||=e=>i.emit(`authorize`)},`明确授权此提案`,8,ml)])):C(``,!0),r.task.authorization?(f(),I(`p`,hl,`授权记录:`+t(r.task.authorization.proposalId)+` · `+t(r.task.authorization.authorizedAt)+`。这只记录执行意图,不代替外部文件或命令权限。`,1)):C(``,!0)],8,el)):C(``,!0),r.task.receipt?(f(),I(`section`,{key:1,class:`border-t border-(--dashboard-border) pt-4`,"aria-labelledby":`${i.id}-receipt`},[n[13]||=O(`p`,{class:`font-mono text-xs text-(--dashboard-accent)`},`03 / Agent 回报`,-1),O(`h4`,{id:`${i.id}-receipt`,class:`mt-1 text-sm font-semibold text-(--dashboard-text)`},t(r.task.receipt.outcome===`completed`?`Agent 回报完成,不等于验证通过`:`Agent 回报失败`),9,_l),O(`p`,vl,t(r.task.receipt.summary),1),O(`p`,yl,`回报时间 `+t(r.task.receipt.reportedAt)+` · 下列内容未经 Dashboard 独立执行验证。`,1),n[14]||=O(`h5`,{class:`mt-3 text-sm font-medium text-(--dashboard-text)`},`声明修改的文件`,-1),r.task.receipt.changedFiles.length?(f(),I(`ul`,bl,[(f(!0),I(E,null,m(r.task.receipt.changedFiles,(e,n)=>(f(),I(`li`,{key:n,class:`break-all`},t(e),1))),128))])):(f(),I(`p`,xl,`没有声明修改的文件。`)),n[15]||=O(`h5`,{class:`mt-3 text-sm font-medium text-(--dashboard-text)`},`声明的检查结果`,-1),r.task.receipt.checks.length?(f(),I(`ul`,Sl,[(f(!0),I(E,null,m(r.task.receipt.checks,(e,n)=>(f(),I(`li`,{key:n},[O(`p`,Cl,t(e.command),1),O(`p`,null,t(i.checkOutcomeLabels[e.outcome])+` · `+t(e.summary),1)]))),128))])):(f(),I(`p`,wl,`没有检查回报。`))],8,gl)):C(``,!0),r.task.status===`completed`?(f(),I(`form`,{key:2,class:`grid gap-3 border-t border-(--dashboard-border) pt-4`,"aria-labelledby":`${i.id}-verify`,onSubmit:n[4]||=T(e=>i.emit(`verify`),[`prevent`])},[O(`div`,null,[n[16]||=O(`p`,{class:`font-mono text-xs text-(--dashboard-accent)`},`04 / 人工复验`,-1),O(`h4`,{id:`${i.id}-verify`,class:`mt-1 text-sm font-semibold text-(--dashboard-text)`},`检查更新报告与实际行为后,记录你的结论`,8,El)]),O(`p`,Dl,t(r.verificationIssue||`当前报告 r${r.currentReport?.revision},晚于原报告 r${r.task.report.revision}。报告更新本身不证明问题已解决。`),1),O(`label`,{for:`${i.id}-summary`,class:`text-sm text-(--dashboard-text)`},`人工复验摘要:实际检查了什么、结果与剩余限制`,8,Ol),O(`textarea`,{id:`${i.id}-summary`,value:r.verificationSummary,disabled:r.busy,rows:`3`,maxlength:`4096`,required:``,class:`block w-full resize-y rounded-md border border-(--dashboard-border) bg-(--dashboard-bg) p-3 text-sm leading-7 text-(--dashboard-text) disabled:opacity-60`,onInput:n[2]||=e=>i.emit(`update:verificationSummary`,e.target.value)},null,40,kl),O(`label`,Al,[O(`input`,{type:`checkbox`,checked:r.verificationChecked,disabled:!!r.verificationIssue||r.busy,class:`mt-1 size-4 shrink-0 accent-(--dashboard-accent)`,onChange:n[3]||=e=>i.emit(`confirmVerification`,e.target.checked)},null,40,jl),O(`span`,null,`我已检查当前报告 r`+t(i.props.currentReport?.revision??`—`)+` 及相关行为,并将以上摘要作为我的复验结论,而不是把 Agent 回报当作证明。`,1)]),O(`button`,{type:`submit`,disabled:!r.canVerify,class:`min-h-11 justify-self-start rounded-md border border-(--dashboard-accent) bg-(--dashboard-accent-soft) px-4 text-sm font-semibold text-(--dashboard-accent) disabled:opacity-50`},`提交人工复验记录`,8,Ml)],40,Tl)):C(``,!0),r.task.verification?(f(),I(`section`,{key:3,class:`border-t border-(--dashboard-border) pt-4`,"aria-labelledby":`${i.id}-verified`},[O(`h4`,{id:`${i.id}-verified`,class:`text-sm font-semibold text-(--dashboard-text)`},`人工复验记录 · r`+t(r.task.verification.report.revision),9,Pl),O(`p`,Fl,t(r.task.verification.summary),1),O(`p`,Il,t(r.task.verification.verifiedAt)+` · 由用户明确提交,不是自动判定成功。`,1),r.task.verification.after?(f(),D(i.InvestigationMeasurements,{key:0,measurements:r.task.verification.after},null,8,[`measurements`])):(f(),I(`p`,Ll,`更新报告中已找不到原对象;不把缺失对象计为零体积。`))],8,Nl)):C(``,!0),[`submitted`,`claimed`,`proposed`,`authorized`,`executing`,`cancelled`].includes(r.task.status)?(f(),I(`section`,Rl,[n[17]||=O(`p`,{class:`text-sm leading-6 text-(--dashboard-text-muted)`},`取消只停止本任务接受后续回报,不能终止外部进程或撤销已有文件修改。需要停止执行时,请到外部客户端操作。`,-1),r.task.status===`cancelled`?C(``,!0):(f(),I(`button`,{key:0,type:`button`,disabled:!r.canCancel,class:`mt-3 min-h-11 rounded-md border border-(--dashboard-border-strong) px-3 text-sm text-(--dashboard-text) hover:bg-(--dashboard-panel-muted) disabled:opacity-50`,onClick:n[5]||=e=>i.emit(`cancel`)},`取消此调查(不终止外部进程)`,8,zl))])):C(``,!0),r.task.status===`stale`?(f(),I(`p`,Bl,`报告已更新,此任务不会自动改绑,原提案及授权不可继续使用。请从当前对象创建新的调查。`)):C(``,!0),_(i.InvestigationContextCopy,{task:r.task},null,8,[`task`])],8,zc)}var Hl=z(Rc,[[`render`,Vl]]),Ul=L({__name:`ObjectInvestigationPanel`,props:{request:{},requestId:{}},setup(e,{expose:t}){t();let n=e,r=d(),{draft:i,pendingDraft:a,question:o,selectedId:s,tasks:c,selectedTask:l,connected:u,busy:f,pendingAction:p,error:m,notice:h,draftIssue:g,canSubmit:_,canCancel:v,canAuthorize:y,authorization:b,verificationSummary:x,verification:S,verificationIssue:C,canVerify:w,selectTask:T,replaceDraft:E,keepDraft:D,cancelDraft:O,renewDraft:k,submitDraft:A,confirmAuthorization:j,authorizeProposal:M,cancelTask:N,confirmVerification:ee,verifyTask:P,reconnect:te}=$s({request:()=>n.request,requestId:()=>n.requestId}),ne={props:n,id:r,draft:i,pendingDraft:a,question:o,selectedId:s,tasks:c,selectedTask:l,connected:u,busy:f,pendingAction:p,error:m,notice:h,draftIssue:g,canSubmit:_,canCancel:v,canAuthorize:y,authorization:b,verificationSummary:x,verification:S,verificationIssue:C,canVerify:w,selectTask:T,replaceDraft:E,keepDraft:D,cancelDraft:O,renewDraft:k,submitDraft:A,confirmAuthorization:j,authorizeProposal:M,cancelTask:N,confirmVerification:ee,verifyTask:P,reconnect:te,get dashboardConnectionStatus(){return ge},get dashboardReportIdentity(){return V},InvestigationDraftForm:bc,InvestigationTaskDetails:Hl,get investigationStatusLabels(){return ec},get investigationTargetLabel(){return tc}};return Object.defineProperty(ne,"__isScriptSetup",{enumerable:!1,value:!0}),ne}}),Wl=[`aria-labelledby`],Gl={class:`flex flex-wrap items-start justify-between gap-3`},Kl=[`id`],ql={role:`status`,class:`text-xs leading-6 text-(--dashboard-text-muted)`},Jl={key:0,class:`mt-4 flex flex-wrap items-center gap-3 border-l-2 border-(--dashboard-border-strong) bg-(--dashboard-panel) px-4 py-3`},Yl={class:`flex-1 text-sm leading-6 text-(--dashboard-text-muted)`},Xl=[`disabled`],Zl={key:1,role:`alert`,class:`mt-4 border-l-2 border-(--dashboard-border-strong) bg-(--dashboard-panel) p-3 text-sm leading-7`},Ql={role:`status`,class:`mt-3 text-sm leading-6 text-(--dashboard-text-muted)`},$l={key:2,class:`mt-3 border border-(--dashboard-border-strong) bg-(--dashboard-panel) p-4`},eu={class:`mt-1 break-all font-mono text-xs leading-6 text-(--dashboard-text-muted)`},tu={class:`mt-3 flex flex-wrap gap-2`},nu=[`disabled`],ru=[`disabled`],iu={class:`investigation-layout mt-4 grid gap-5 border-t border-(--dashboard-border) pt-4`},au={class:`min-w-0`},ou={key:2,class:`py-5 text-sm leading-7 text-(--dashboard-text-muted)`},su={key:3,role:`status`,class:`mt-4 text-sm text-(--dashboard-text-muted)`},cu={class:`min-w-0`,"aria-label":`选择调查任务或本地草稿`},lu={class:`text-xs font-medium text-(--dashboard-text-soft)`},uu=[`aria-pressed`],du={class:`mt-1 block break-all text-xs leading-6 text-(--dashboard-text-muted)`},fu={key:1,class:`mt-2 grid max-h-80 gap-2 overflow-y-auto p-1`},pu=[`aria-pressed`,`onClick`],mu={class:`block text-xs text-(--dashboard-accent)`},hu={class:`mt-1 block text-sm leading-6`},gu={class:`mt-1 block break-all font-mono text-xs leading-6 text-(--dashboard-text-soft)`},_u={key:2,class:`mt-3 text-sm leading-7 text-(--dashboard-text-muted)`};function vu(e,n,r,i,a,o){return f(),I(`section`,{class:`investigation-panel min-w-0 bg-(--dashboard-shell) text-(--dashboard-text)`,"aria-labelledby":`${i.id}-heading`},[O(`header`,Gl,[O(`div`,null,[O(`h2`,{id:`${i.id}-heading`,class:`text-base font-semibold`},`对象调查`,8,Kl),n[6]||=O(`p`,{class:`mt-1 text-xs leading-6 text-(--dashboard-text-soft)`},`草稿 → 外部领取 → 精确提案授权 → Agent 回报 → 人工复验`,-1)]),O(`p`,ql,t(i.connected?`宿主已同步 · 不代表 Agent 在线`:`宿主未就绪 · 本地输入保留`),1)]),i.connected?C(``,!0):(f(),I(`div`,Jl,[O(`p`,Yl,t(i.dashboardConnectionStatus===`connected`?`正在同步报告,暂不可提交或授权。`:`当前无法确认宿主状态。草稿不会丢失,也不会自动重发调查。`),1),i.dashboardConnectionStatus===`connected`?C(``,!0):(f(),I(`button`,{key:0,type:`button`,disabled:i.dashboardConnectionStatus===`connecting`,class:`min-h-11 rounded-md border border-(--dashboard-border) px-3 text-sm disabled:opacity-50`,onClick:n[0]||=(...e)=>i.reconnect&&i.reconnect(...e)},t(i.dashboardConnectionStatus===`connecting`?`连接中…`:`重新连接宿主`),9,Xl))])),i.error?(f(),I(`p`,Zl,t(i.error),1)):C(``,!0),O(`p`,Ql,t(i.notice),1),i.pendingDraft?(f(),I(`div`,$l,[n[7]||=O(`p`,{class:`text-sm leading-6`},`新的调查请求尚未覆盖原草稿:`,-1),O(`p`,eu,t(i.investigationTargetLabel(i.pendingDraft.target))+` · `+t(i.pendingDraft.report?`r${i.pendingDraft.report.revision}`:`报告未就绪`),1),O(`div`,tu,[O(`button`,{type:`button`,disabled:i.busy,class:`min-h-11 rounded-md border border-(--dashboard-border) px-3 text-sm hover:bg-(--dashboard-panel-muted) disabled:opacity-50`,onClick:n[1]||=(...e)=>i.keepDraft&&i.keepDraft(...e)},`保留原草稿`,8,nu),O(`button`,{type:`button`,disabled:i.busy,class:`min-h-11 rounded-md border border-(--dashboard-accent) px-3 text-sm text-(--dashboard-accent) hover:bg-(--dashboard-accent-soft) disabled:opacity-50`,onClick:n[2]||=(...e)=>i.replaceDraft&&i.replaceDraft(...e)},t(i.draft?`放弃原草稿,使用新请求`:`使用新请求创建草稿`),9,ru)])])):C(``,!0),O(`div`,iu,[O(`div`,au,[i.selectedId===null&&i.draft?(f(),D(i.InvestigationDraftForm,{key:0,question:i.question,"onUpdate:question":n[3]||=e=>i.question=e,draft:i.draft,issue:i.draftIssue,"can-submit":i.canSubmit,"can-renew":i.connected,busy:i.busy,onSubmit:i.submitDraft,onCancel:i.cancelDraft,onRenew:i.renewDraft},null,8,[`question`,`draft`,`issue`,`can-submit`,`can-renew`,`busy`,`onSubmit`,`onCancel`,`onRenew`])):i.selectedTask?(f(),D(i.InvestigationTaskDetails,{key:1,task:i.selectedTask,"current-report":i.dashboardReportIdentity,busy:i.busy,"can-authorize":i.canAuthorize,"authorization-checked":!!i.authorization,"can-cancel":i.canCancel,"verification-issue":i.verificationIssue,"verification-summary":i.verificationSummary,"verification-checked":!!i.verification,"can-verify":i.canVerify,onConfirmAuthorization:i.confirmAuthorization,onAuthorize:i.authorizeProposal,onCancel:i.cancelTask,"onUpdate:verificationSummary":n[4]||=e=>i.verificationSummary=e,onConfirmVerification:i.confirmVerification,onVerify:i.verifyTask},null,8,[`task`,`current-report`,`busy`,`can-authorize`,`authorization-checked`,`can-cancel`,`verification-issue`,`verification-summary`,`verification-checked`,`can-verify`,`onConfirmAuthorization`,`onAuthorize`,`onCancel`,`onConfirmVerification`,`onVerify`])):(f(),I(`p`,ou,t(i.selectedId?`此任务不在当前宿主列表中。会话可能已更换,或终态记录已被回收;不会将旧任务绑定到新报告。`:`从任务列表选择宿主任务,或在关联对象上点击“创建调查”。创建草稿不会提交或派发。`),1)),i.pendingAction?(f(),I(`p`,su,`正在等待宿主确认操作,请勿重复提交…`)):C(``,!0)]),O(`nav`,cu,[O(`h3`,lu,`本地草稿与宿主任务 · `+t(i.tasks.length)+`/32`,1),i.draft?(f(),I(`button`,{key:0,type:`button`,"aria-pressed":i.selectedId===null,class:`task-option mt-3 w-full rounded-md border px-3 py-3 text-left`,onClick:n[5]||=e=>i.selectTask(null)},[n[8]||=O(`span`,{class:`block text-sm font-medium`},`未提交草稿`,-1),O(`span`,du,t(i.investigationTargetLabel(i.draft.target)),1)],8,uu)):C(``,!0),i.tasks.length?(f(),I(`ul`,fu,[(f(!0),I(E,null,m(i.tasks,e=>(f(),I(`li`,{key:e.id},[O(`button`,{type:`button`,"aria-pressed":i.selectedId===e.id,class:`task-option w-full rounded-md border px-3 py-3 text-left`,onClick:t=>i.selectTask(e.id)},[O(`span`,mu,t(i.investigationStatusLabels[e.status]),1),O(`span`,hu,t(e.question),1),O(`span`,gu,t(i.investigationTargetLabel(e.target)),1)],8,pu)]))),128))])):(f(),I(`p`,_u,`宿主尚无调查记录。请先选择真实对象并创建草稿。`)),n[9]||=O(`p`,{class:`mt-3 text-xs leading-6 text-(--dashboard-text-soft)`},`记录属于当前宿主会话,不是永久历史;最多保留 32 项。`,-1)])])],8,Wl)}var yu=z(Ul,[[`render`,vu],[`__scopeId`,`data-v-daaf89ae`]]);function bu(e){return e===`high`?`高`:e===`medium`?`中`:`低`}function xu(e){let t=e.packages.some(e=>e.packageLabel.includes(`independent`)||e.packageId.includes(`independent`))?`high`:e.packageCount>2?`medium`:`low`,n=t===`high`?.72:t===`medium`?.86:1;return{id:`duplicate:${e.id}`,title:`收敛重复模块 ${e.source}`,detail:`${e.packageCount} 个包复用 · 单份 ${U(e.bytes)} · ${e.advice}`,impactBytes:e.estimatedSavingBytes,effort:t,priority:Math.round(e.estimatedSavingBytes*n+e.packageCount*128),action:t===`high`?`先确认独立分包隔离要求,再评估公共入口。`:`优先抽到共享入口或调整引用边界。`}}function Su(e){let t=e.category===`第三方依赖`?`medium`:`low`,n=t===`medium`?.82:.92;return{id:`increment:${e.key}`,title:`复核增长来源 ${e.label}`,detail:`${e.category} · ${e.packageLabel} · +${U(e.deltaBytes)}`,impactBytes:e.deltaBytes,effort:t,priority:Math.round(e.deltaBytes*n),action:e.advice}}function Cu(e){let t=e.moduleCount>12?`medium`:`low`;return{id:`file:${e.packageId}:${e.file}`,title:`检查大文件边界 ${e.file}`,detail:`${e.packageLabel} · ${U(e.size)} · ${e.moduleCount} 个模块`,impactBytes:e.size,effort:t,priority:Math.round(e.size*.42+e.moduleCount*96),action:e.isEntry?`确认入口依赖是否可懒加载或拆到分包。`:`检查静态资源和模块聚合边界。`}}function wu(e){return[`# dashboard 模块优化计划`,``,`计划项:${e.items.length}`,`估算影响:${U(e.totalImpactBytes)}`,`低成本项:${e.quickWinCount}`,``,`| 优先级 | 事项 | 影响 | 成本 | 建议 |`,`| ---: | --- | ---: | --- | --- |`,...e.items.map(e=>`| ${e.priority} | ${e.title.replaceAll(`|`,`\\|`)} | ${U(e.impactBytes)} | ${bu(e.effort)} | ${e.action.replaceAll(`|`,`\\|`)} |`),``].join(`
7
+ `)}function Tu(e){let t=e.duplicateModules.filter(e=>e.estimatedSavingBytes>0).slice(0,8).map(xu),n=e.incrementAttribution.filter(e=>e.deltaBytes>0).slice(0,6).map(Su),r=new Set(e.duplicateModules.flatMap(e=>e.packages.flatMap(e=>e.files.map(t=>`${e.packageId}:${t}`)))),i=e.largestFiles.filter(e=>e.size>0&&!r.has(`${e.packageId}:${e.file}`)).slice(0,4).map(Cu),a=[...t,...n,...i].sort((e,t)=>t.priority-e.priority||t.impactBytes-e.impactBytes||e.title.localeCompare(t.title)).slice(0,8),o={totalImpactBytes:a.reduce((e,t)=>e+t.impactBytes,0),quickWinCount:a.filter(e=>e.effort===`low`).length,items:a};return{...o,report:wu(o)}}function Eu(e){return{title:e.source,meta:`${e.packageCount} 个包 · 单份 ${U(e.bytes)} · 可节省 ${U(e.estimatedSavingBytes)} · ${e.advice}`}}function Du(e){return{title:e.sourceCategory,meta:`${e.count} 个模块`,value:U(e.bytes)}}function Ou(e){return{title:e.label,meta:`${e.category} · ${e.packageLabel} · ${e.advice}`,value:`+${U(e.deltaBytes)}`}}function ku(e){return{title:e.category,meta:`${e.count} 项增长`,value:`+${U(e.deltaBytes)}`}}function Au(e){return{title:e.file,meta:`${e.packageLabel} · ${Ee(e.from)} · ${e.moduleCount} 模块`}}function ju(e){return e.replaceAll(`|`,`\\|`).replaceAll(`
8
+ `,` `)}function Mu(e,t){return[...e].sort((e,n)=>t===`packages`?n.packageCount-e.packageCount||n.estimatedSavingBytes-e.estimatedSavingBytes||e.source.localeCompare(n.source):t===`size`?n.bytes-e.bytes||n.packageCount-e.packageCount||e.source.localeCompare(n.source):t===`source`?e.source.localeCompare(n.source):n.estimatedSavingBytes-e.estimatedSavingBytes||n.packageCount-e.packageCount||e.source.localeCompare(n.source))}function Nu(e){let t=u(``),n=u(`all`),r=u(`saving`),{actionStatus:i,setActionStatus:a}=Ht(),o=M(()=>{let t=new Set;for(let n of e.duplicateModules)t.add(n.sourceType);return[...t].sort((e,t)=>e.localeCompare(t))}),s=M(()=>{let i=t.value.trim().toLowerCase();return Mu(e.duplicateModules.filter(e=>n.value!==`all`&&e.sourceType!==n.value?!1:!i||[e.id,e.source,e.sourceType,e.advice,e.packages.map(e=>e.packageLabel).join(` `),e.packages.flatMap(e=>e.files).join(` `)].some(e=>e.toLowerCase().includes(i))),r.value)}),c=M(()=>s.value.map(e=>({key:e.id,packages:e.packages,...Eu(e)}))),l=M(()=>e.moduleSourceSummary.map(e=>({key:`${e.sourceType}:${e.sourceCategory}`,...Du(e)}))),d=M(()=>e.incrementAttribution.slice(0,8).map(e=>({key:e.key,...Ou(e)}))),f=M(()=>e.incrementSummary.slice(0,6).map(e=>({key:e.category,...ku(e)}))),p=M(()=>e.visibleLargestFiles.slice(0,6).map(e=>({key:`${e.packageId}:${e.file}`,...Au(e)}))),m=M(()=>Tu({duplicateModules:e.duplicateModules,incrementAttribution:e.incrementAttribution,largestFiles:e.visibleLargestFiles})),h=M(()=>[`# dashboard 重复模块`,``,`模块数量:${s.value.length} / ${e.duplicateModules.length}`,``,`| 模块 | 来源 | 包数量 | 单份体积 | 可节省 | 建议 | 涉及包 |`,`| --- | --- | ---: | ---: | ---: | --- | --- |`,...s.value.map(e=>[e.source,e.sourceType,String(e.packageCount),U(e.bytes),U(e.estimatedSavingBytes),e.advice,e.packages.map(e=>e.packageLabel).join(`, `)].map(ju).join(` | `)).map(e=>`| ${e} |`),``].join(`
9
+ `));async function g(){try{await W(h.value),a(`已复制`)}catch{a(`复制失败`)}}function _(){let e=new Blob([`${JSON.stringify(s.value,null,2)}\n`],{type:`application/json`}),t=URL.createObjectURL(e),n=document.createElement(`a`);n.href=t,n.download=`weapp-vite-dashboard-duplicate-modules.json`,n.click(),URL.revokeObjectURL(t),a(`已导出`)}return{actionStatus:i,copyDuplicateModulesReport:g,duplicateModuleItems:c,duplicateQuery:t,duplicateSortMode:r,duplicateSourceFilter:n,duplicateSourceOptions:o,exportDuplicateModulesJson:_,incrementItems:d,incrementSummaryItems:f,largestFileSampleItems:p,moduleOptimizationPlan:m,moduleSourceItems:l}}var Pu=L({__name:`AppSummaryValueCard`,props:{title:{},meta:{},value:{},breakTitle:{type:Boolean}},setup(e,{expose:t}){t();let n={};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}}),Fu={class:`rounded-xl border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-3.5`},Iu={class:`flex flex-wrap items-start justify-between gap-3`},Lu={class:`min-w-0`},Ru={class:`mt-1 text-xs text-(--dashboard-text-soft)`},zu={key:0,class:`font-medium text-(--dashboard-accent)`};function Bu(e,n,r,i,a,s){return f(),I(`article`,Fu,[O(`div`,Iu,[O(`div`,Lu,[O(`p`,{class:x([`font-medium text-(--dashboard-text)`,r.breakTitle?`break-all`:void 0])},t(r.title),3),O(`p`,Ru,t(r.meta),1)]),r.value?(f(),I(`p`,zu,t(r.value),1)):C(``,!0)]),o(e.$slots,`default`)])}var Vu=z(Pu,[[`render`,Bu]]),Hu=L({__name:`DuplicateModulesToolbar`,props:a({filteredCount:{},totalCount:{},sourceOptions:{},actionStatus:{},disabled:{type:Boolean}},{query:{required:!0},queryModifiers:{},sourceFilter:{required:!0},sourceFilterModifiers:{},sortMode:{required:!0},sortModeModifiers:{}}),emits:a([`copy`,`exportJson`],[`update:query`,`update:sourceFilter`,`update:sortMode`]),setup(e,{expose:t,emit:n}){t();let r=e,i={props:r,emit:n,query:g(e,`query`),sourceFilter:g(e,`sourceFilter`),sortMode:g(e,`sortMode`),sourceFilterOptions:M(()=>[{label:`全部来源`,value:`all`},...r.sourceOptions.map(e=>({label:e,value:e}))]),sortOptions:[{label:`按可节省`,value:`saving`},{label:`按包数量`,value:`packages`},{label:`按单份体积`,value:`size`},{label:`按路径`,value:`source`}],AppSelect:be,AppToolButton:K};return Object.defineProperty(i,"__isScriptSetup",{enumerable:!1,value:!0}),i}}),Uu={class:`flex min-w-0 flex-wrap items-center gap-2`},Wu={class:`text-xs font-medium text-(--dashboard-text-soft)`},Gu={key:0,class:`text-xs font-medium text-(--dashboard-accent)`},Ku={class:`flex shrink-0 flex-nowrap items-center gap-2`};function qu(e,n,r,i,a,o){return f(),I(`div`,Uu,[O(`span`,Wu,` 匹配 `+t(r.filteredCount)+` / `+t(r.totalCount),1),r.actionStatus?(f(),I(`span`,Gu,t(r.actionStatus),1)):C(``,!0),O(`div`,Ku,[_(i.AppToolButton,{label:`复制重复模块`,"icon-name":`metric-copy`,"touch-label":`复制`,disabled:r.disabled,onClick:n[0]||=e=>i.emit(`copy`)},null,8,[`disabled`]),_(i.AppToolButton,{label:`导出重复模块 JSON`,"icon-name":`metric-entries`,"touch-label":`导出`,disabled:r.disabled,onClick:n[1]||=e=>i.emit(`exportJson`)},null,8,[`disabled`])]),v(O(`input`,{"onUpdate:modelValue":n[2]||=e=>i.query=e,class:`h-9 w-56 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 text-sm text-(--dashboard-text) outline-none transition placeholder:text-(--dashboard-text-soft) focus:border-(--dashboard-accent)`,placeholder:`搜索模块、包或文件`,type:`search`},null,512),[[j,i.query]]),_(i.AppSelect,{modelValue:i.sourceFilter,"onUpdate:modelValue":n[3]||=e=>i.sourceFilter=e,class:`w-28`,label:`筛选重复模块来源`,options:i.sourceFilterOptions},null,8,[`modelValue`,`options`]),_(i.AppSelect,{modelValue:i.sortMode,"onUpdate:modelValue":n[4]||=e=>i.sortMode=e,class:`w-30`,label:`排序重复模块`,options:i.sortOptions},null,8,[`modelValue`])])}var Ju=z(Hu,[[`render`,qu]]),Yu=L({__name:`ModuleInsightsSidebar`,props:{incrementItems:{},incrementSummaryItems:{},moduleSourceItems:{},largestFileSampleItems:{},optimizationPlan:{}},setup(e,{expose:t}){t();let r=e,i=u(``),a=null;function o(e){return e===`high`?`高成本`:e===`medium`?`中成本`:`低成本`}function s(e){return e===`high`?`border-rose-200 bg-rose-50 text-rose-700 dark:border-rose-500/25 dark:bg-rose-500/10 dark:text-rose-300`:e===`medium`?`border-amber-200 bg-amber-50 text-amber-700 dark:border-amber-500/25 dark:bg-amber-500/10 dark:text-amber-300`:`border-emerald-200 bg-emerald-50 text-emerald-700 dark:border-emerald-500/25 dark:bg-emerald-500/10 dark:text-emerald-300`}function c(e){i.value=e,a&&clearTimeout(a),a=setTimeout(()=>{i.value=``,a=null},1800)}async function l(){try{await W(r.optimizationPlan.report),c(`计划已复制`)}catch{c(`复制失败`)}}n(()=>{a&&clearTimeout(a)});let d={props:r,optimizationPlanStatus:i,get optimizationPlanStatusTimer(){return a},set optimizationPlanStatusTimer(e){a=e},getEffortLabel:o,getEffortClassName:s,setOptimizationPlanStatus:c,copyOptimizationPlan:l,get formatBytes(){return U},get surfaceStyles(){return Me},AppCompactListItem:Os,AppEmptyState:G,AppMetricTile:Ne,AppPanelHeader:Wo,AppSummaryValueCard:Vu,AppToolButton:K};return Object.defineProperty(d,"__isScriptSetup",{enumerable:!1,value:!0}),d}}),Xu={class:`grid min-h-0 min-w-0 content-start gap-3 overflow-visible`},Zu={class:`flex min-w-0 flex-wrap items-center gap-2`},Qu={key:0,class:`text-xs font-medium text-(--dashboard-accent)`},$u={class:`mt-3 grid gap-2 sm:grid-cols-3`},ed={key:0,class:`mt-3 grid max-h-54 gap-2 overflow-y-auto pr-1`},td={class:`flex items-start justify-between gap-3`},nd={class:`min-w-0 text-sm font-medium text-(--dashboard-text)`},rd={class:`mt-1 line-clamp-2 text-xs leading-5 text-(--dashboard-text-muted)`},id={class:`mt-2 text-xs text-(--dashboard-text-soft)`},ad={key:0,class:`mt-4 grid min-h-0 min-w-0 gap-3 overflow-visible`},od={class:`grid max-h-80 gap-2 overflow-y-auto pr-1 sm:grid-cols-2`},sd={class:`max-h-80 space-y-2 overflow-y-auto pr-1 text-sm text-(--dashboard-text-muted)`},cd={class:`mt-4 grid min-h-0 min-w-0 gap-3 overflow-visible`},ld={class:`grid max-h-80 gap-2.5 overflow-y-auto pr-1 sm:grid-cols-2`},ud={class:`max-h-80 space-y-2.5 overflow-y-auto pr-1 text-sm text-(--dashboard-text-muted)`};function dd(e,n,r,i,a,o){return f(),I(`div`,Xu,[O(`section`,{class:x([i.surfaceStyles({padding:`md`}),`min-w-0 overflow-hidden`])},[_(i.AppPanelHeader,{class:`min-w-0 flex-wrap`,"icon-name":`metric-quality`,title:`优化计划`},{meta:c(()=>[O(`div`,Zu,[i.optimizationPlanStatus?(f(),I(`span`,Qu,t(i.optimizationPlanStatus),1)):C(``,!0),_(i.AppToolButton,{label:`复制模块优化计划`,"icon-name":`metric-copy`,"touch-label":`复制`,disabled:r.optimizationPlan.items.length===0,onClick:i.copyOptimizationPlan},null,8,[`disabled`])])]),_:1}),O(`div`,$u,[_(i.AppMetricTile,{label:`计划项`,value:r.optimizationPlan.items.length},null,8,[`value`]),_(i.AppMetricTile,{label:`估算影响`,value:i.formatBytes(r.optimizationPlan.totalImpactBytes)},null,8,[`value`]),_(i.AppMetricTile,{label:`低成本项`,value:r.optimizationPlan.quickWinCount},null,8,[`value`])]),r.optimizationPlan.items.length?(f(),I(`div`,ed,[(f(!0),I(E,null,m(r.optimizationPlan.items,e=>(f(),I(`article`,{key:e.id,class:`rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-3`},[O(`div`,td,[O(`p`,nd,t(e.title),1),O(`span`,{class:x([`shrink-0 rounded-full border px-2 py-0.5 text-[11px]`,i.getEffortClassName(e.effort)])},t(i.getEffortLabel(e.effort)),3)]),O(`p`,rd,t(e.detail),1),O(`p`,id,t(e.action)+` · 影响 `+t(i.formatBytes(e.impactBytes)),1)]))),128))])):(f(),D(i.AppEmptyState,{key:1,class:`mt-3`},{default:c(()=>[...n[0]||=[R(` 当前没有需要生成的模块优化计划。 `,-1)]]),_:1}))],2),O(`section`,{class:x([i.surfaceStyles({padding:`md`}),`min-h-0 min-w-0 overflow-hidden`])},[_(i.AppPanelHeader,{"icon-name":`metric-time`,title:`增量归因`}),r.incrementItems.length?(f(),I(`div`,ad,[O(`div`,od,[(f(!0),I(E,null,m(r.incrementSummaryItems,e=>(f(),D(i.AppSummaryValueCard,{key:e.key,meta:e.meta,title:e.title,value:e.value},null,8,[`meta`,`title`,`value`]))),128))]),O(`ul`,sd,[(f(!0),I(E,null,m(r.incrementItems,e=>(f(),D(i.AppCompactListItem,{key:e.key,meta:e.meta,"mono-title":``,title:e.title,value:e.value},null,8,[`meta`,`title`,`value`]))),128))])])):(f(),D(i.AppEmptyState,{key:1,class:`mt-4`},{default:c(()=>[...n[1]||=[R(` 暂无可对比的正向增量。 `,-1)]]),_:1}))],2),O(`section`,{class:x([i.surfaceStyles({padding:`md`}),`min-h-0 min-w-0 overflow-hidden`])},[_(i.AppPanelHeader,{"icon-name":`module-sources`,title:`模块来源`}),O(`div`,cd,[O(`div`,ld,[(f(!0),I(E,null,m(r.moduleSourceItems,e=>(f(),D(i.AppSummaryValueCard,{key:e.key,meta:e.meta,title:e.title,value:e.value},null,8,[`meta`,`title`,`value`]))),128))]),O(`ul`,ud,[(f(!0),I(E,null,m(r.largestFileSampleItems,e=>(f(),D(i.AppCompactListItem,{key:e.key,meta:e.meta,"mono-title":``,title:e.title,value:e.value},null,8,[`meta`,`title`,`value`]))),128))])])],2)])}var fd=z(Yu,[[`render`,dd]]),pd=L({__name:`ModulesPanel`,props:{duplicateModules:{},duplicateModuleScopeLabel:{},moduleSourceSummary:{},incrementAttribution:{},incrementSummary:{},visibleLargestFiles:{}},emits:[`resetScope`],setup(e,{expose:t,emit:n}){t();let r=e,i=n,{actionStatus:a,copyDuplicateModulesReport:o,duplicateModuleItems:s,duplicateQuery:c,duplicateSortMode:l,duplicateSourceFilter:u,duplicateSourceOptions:d,exportDuplicateModulesJson:f,incrementItems:p,incrementSummaryItems:m,largestFileSampleItems:h,moduleOptimizationPlan:g,moduleSourceItems:_}=Nu(r);function v(){c.value=``,u.value=`all`,i(`resetScope`)}let y={props:r,emit:i,actionStatus:a,copyDuplicateModulesReport:o,duplicateModuleItems:s,duplicateQuery:c,duplicateSortMode:l,duplicateSourceFilter:u,duplicateSourceOptions:d,exportDuplicateModulesJson:f,incrementItems:p,incrementSummaryItems:m,largestFileSampleItems:h,moduleOptimizationPlan:g,moduleSourceItems:_,resetDuplicateScope:v,get surfaceStyles(){return Me},AppEmptyState:G,AppPanelHeader:Wo,AppSummaryValueCard:Vu,DuplicateModulesToolbar:Ju,ModuleInsightsSidebar:fd};return Object.defineProperty(y,"__isScriptSetup",{enumerable:!1,value:!0}),y}}),md={class:`flex flex-wrap items-start justify-between gap-3`},hd={key:0,class:`mt-3 flex min-w-0 flex-wrap items-center gap-2 text-xs`},gd={class:`min-w-0 [overflow-wrap:anywhere] text-(--dashboard-text-muted)`},_d={key:1,class:`mt-4 max-h-96 space-y-2.5 overflow-y-auto pr-1 xl:max-h-[calc(100%-5.75rem)]`},vd={class:`mt-3 space-y-1.5 text-xs text-(--dashboard-text-muted)`},yd={class:`font-medium text-(--dashboard-text)`};function bd(e,n,r,i,a,o){return f(),I(`section`,{class:x([`grid min-h-0 min-w-0 items-start gap-3 overflow-visible`,r.duplicateModules.length?`xl:grid-cols-[minmax(0,1.24fr)_minmax(0,0.76fr)]`:`xl:grid-cols-[minmax(20rem,0.72fr)_minmax(0,1.28fr)]`])},[O(`div`,{class:x([i.surfaceStyles({padding:`md`}),`min-h-0 min-w-0 overflow-hidden`])},[O(`div`,md,[_(i.AppPanelHeader,{"icon-name":`duplicate-modules`,title:`重复模块`,description:`${r.duplicateModules.length} 个重复模块样本`},null,8,[`description`]),_(i.DuplicateModulesToolbar,{query:i.duplicateQuery,"onUpdate:query":n[0]||=e=>i.duplicateQuery=e,"sort-mode":i.duplicateSortMode,"onUpdate:sortMode":n[1]||=e=>i.duplicateSortMode=e,"source-filter":i.duplicateSourceFilter,"onUpdate:sourceFilter":n[2]||=e=>i.duplicateSourceFilter=e,"action-status":i.actionStatus,disabled:i.duplicateModuleItems.length===0,"filtered-count":i.duplicateModuleItems.length,"source-options":i.duplicateSourceOptions,"total-count":r.duplicateModules.length,onCopy:i.copyDuplicateModulesReport,onExportJson:i.exportDuplicateModulesJson},null,8,[`query`,`sort-mode`,`source-filter`,`action-status`,`disabled`,`filtered-count`,`source-options`,`total-count`,`onCopy`,`onExportJson`])]),r.duplicateModuleScopeLabel?(f(),I(`div`,hd,[O(`span`,gd,t(r.duplicateModuleScopeLabel),1),O(`button`,{type:`button`,class:`rounded-md px-2 py-1 text-(--dashboard-accent) hover:bg-(--dashboard-accent-soft) focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-(--dashboard-accent)`,onClick:i.resetDuplicateScope},` 查看全部重复模块 `),n[3]||=O(`p`,{class:`w-full text-(--dashboard-text-soft)`},` 仅筛选重复模块条目,保留每个模块涉及的全部包体信息。 `,-1)])):C(``,!0),i.duplicateModuleItems.length?(f(),I(`div`,_d,[(f(!0),I(E,null,m(i.duplicateModuleItems,e=>(f(),D(i.AppSummaryValueCard,{key:e.key,"break-title":``,meta:e.meta,title:e.title,value:e.value},{default:c(()=>[O(`ul`,vd,[(f(!0),I(E,null,m(e.packages,r=>(f(),I(`li`,{key:`${e.key}:${r.packageId}`},[O(`span`,yd,t(r.packageLabel),1),n[4]||=O(`span`,{class:`text-(--dashboard-text-soft)`},` · `,-1),O(`span`,null,t(r.files.join(`、`)),1)]))),128))])]),_:2},1032,[`meta`,`title`,`value`]))),128))])):(f(),D(i.AppEmptyState,{key:2,class:`mt-4`},{default:c(()=>[R(t(r.duplicateModuleScopeLabel||i.duplicateQuery.trim()||i.duplicateSourceFilter!==`all`?`当前范围及筛选条件下没有匹配的重复模块。`:`当前构建未检测到跨包重复模块。`),1)]),_:1}))],2),_(i.ModuleInsightsSidebar,{"increment-items":i.incrementItems,"increment-summary-items":i.incrementSummaryItems,"largest-file-sample-items":i.largestFileSampleItems,"module-source-items":i.moduleSourceItems,"optimization-plan":i.moduleOptimizationPlan},null,8,[`increment-items`,`increment-summary-items`,`largest-file-sample-items`,`module-source-items`,`optimization-plan`])],2)}var xd=z(pd,[[`render`,bd]]);function Sd(e){return JSON.stringify(e.kind===`package`?[e.kind,e.packageId]:e.kind===`artifact`?[e.kind,e.packageId,e.file]:[e.kind,e.packageId,e.file,e.moduleId])}function Cd(e){return typeof e==`number`&&Number.isFinite(e)&&e>=0?e:null}function wd(e,t){let n=0;for(let r of e.files){let e=Cd(r[t]);if(e===null)return null;n+=e}return n}function Td(e,t,n){return{label:e,rawBytes:n?null:Cd(t?.size),gzipBytes:n?null:Cd(t?.gzipSize),brotliBytes:n?null:Cd(t?.brotliSize),attributedBytes:Cd(n?.bytes),sourceBytes:Cd(n?.originalBytes)}}function Ed(e){let t={packages:[],artifacts:[],modules:[],nodes:new Map},n=new Map(e.packages.map(e=>[e.id,e.label]));for(let n of e.packages){let e={kind:`package`,packageId:n.id},r={key:Sd(e),target:e,label:n.label,packageLabel:n.label,artifactKey:null,sourcePath:null,sourceType:null,placementOnly:!1,moduleCount:0,measurements:{label:n.label,rawBytes:wd(n,`size`),gzipBytes:wd(n,`gzipSize`),brotliBytes:wd(n,`brotliSize`),attributedBytes:null,sourceBytes:null}};t.packages.push(r),t.nodes.set(r.key,r);for(let e of n.files){let i={kind:`artifact`,packageId:n.id,file:e.file},a=Sd(i),o={key:a,target:i,label:e.file,packageLabel:n.label,artifactKey:a,sourcePath:e.source?.split(`?`)[0]||null,sourceType:e.type,placementOnly:!1,measurements:Td(e.file,e),moduleCount:0};t.artifacts.push(o),t.nodes.set(a,o);for(let i of e.modules??[]){let s={kind:`module`,packageId:n.id,file:e.file,moduleId:i.id},c={key:Sd(s),target:s,label:i.source||i.id,packageLabel:n.label,artifactKey:a,sourcePath:i.sourceType===`node_modules`?null:i.source.split(`?`)[0]||null,sourceType:i.sourceType,placementOnly:!1,measurements:Td(i.source||i.id,void 0,i),moduleCount:0};t.nodes.has(c.key)||(t.modules.push(c),t.nodes.set(c.key,c),o.moduleCount+=1,r.moduleCount+=1)}}}for(let r of e.modules)for(let e of r.packages)for(let i of e.files){let a={kind:`module`,packageId:e.packageId,file:i,moduleId:r.id},o=Sd(a);if(t.nodes.has(o))continue;let s=Sd({kind:`artifact`,packageId:e.packageId,file:i}),c={key:o,target:a,label:r.source||r.id,packageLabel:n.get(e.packageId)??e.packageId,artifactKey:s,sourcePath:null,sourceType:r.sourceType,placementOnly:!0,measurements:Td(r.source||r.id),moduleCount:0};t.modules.push(c),t.nodes.set(o,c);let l=t.nodes.get(s);l&&(l.moduleCount+=1);let u=t.nodes.get(Sd({kind:`package`,packageId:e.packageId}));u&&(u.moduleCount+=1)}return t}function Dd(e,t,n){let r=t.trim().toLocaleLowerCase();return e.filter(e=>(!n||e.target.packageId===n)&&(!r||`${e.label}\n${e.target.kind===`module`?e.target.moduleId:``}\n${e.target.packageId}\n${e.target.kind===`package`?``:e.target.file}`.toLocaleLowerCase().includes(r)))}function Od(e,t){return(t?e.nodes.get(Sd(t)):void 0)??e.artifacts[0]??null}function kd(e,t){if(!t)return[];let n=e.packages.find(e=>e.target.packageId===t.target.packageId),r=e.artifacts.find(e=>t.target.kind===`package`?e.target.packageId===t.target.packageId:e.key===t.artifactKey);return[n,r,e.modules.find(e=>t.target.kind===`module`?e.key===t.key:r!==void 0&&e.artifactKey===r.key)].filter(e=>e!==void 0)}function Ad(e){let t=P(``),n=P(``),r=P(``),i=P(``),a=M(()=>Ed(e.result.value)),o=M(()=>Od(a.value,e.target.value)),s=M(()=>!!e.target.value&&!a.value.nodes.has(Sd(e.target.value))),c=M(()=>Dd(a.value.packages,n.value,t.value)),l=M(()=>Dd(a.value.artifacts,r.value,t.value)),u=M(()=>Dd(a.value.modules,i.value,t.value));return{index:a,selected:o,selectedArtifact:M(()=>o.value?.artifactKey?a.value.nodes.get(o.value.artifactKey)??null:null),targetMissing:s,packageFilter:t,packageQuery:n,artifactQuery:r,moduleQuery:i,packages:c,artifacts:l,modules:u}}var jd={noSemanticValidation:!0,noSuggestionDiagnostics:!0,noSyntaxValidation:!0},Md={diagnostics:!1};function Nd(e){e.typescript.javascriptDefaults.setDiagnosticsOptions(jd),e.typescript.javascriptDefaults.setModeConfiguration(Md),e.typescript.typescriptDefaults.setDiagnosticsOptions(jd),e.typescript.typescriptDefaults.setModeConfiguration(Md),e.editor.defineTheme(`weapp-dashboard-light`,{base:`vs`,inherit:!0,rules:[],colors:{"diffEditor.insertedTextBackground":`#d1fae55f`,"diffEditor.insertedLineBackground":`#ecfdf545`,"diffEditor.removedTextBackground":`#ffe4e65c`,"diffEditor.removedLineBackground":`#fff1f242`,"diffEditor.diagonalFill":`#94a3b855`,"editorGutter.modifiedBackground":`#2dd4bf`,"editorGutter.addedBackground":`#10b981`,"editorGutter.deletedBackground":`#f43f5e`}}),e.editor.defineTheme(`weapp-dashboard-dark`,{base:`vs-dark`,inherit:!0,rules:[],colors:{"diffEditor.insertedTextBackground":`#14532d2c`,"diffEditor.insertedLineBackground":`#052e161c`,"diffEditor.removedTextBackground":`#5f1f2a24`,"diffEditor.removedLineBackground":`#2a111818`,"diffEditor.diagonalFill":`#33415588`,"editorGutter.modifiedBackground":`#2dd4bf`,"editorGutter.addedBackground":`#22c55e`,"editorGutter.deletedBackground":`#fb7185`}})}function Pd(e){return e===`dark`?`weapp-dashboard-dark`:`weapp-dashboard-light`}function Fd(e){let t=P(),r,i,a=[],o=!1;function s(){i?.dispose(),i=void 0;for(let e of a)e.dispose();a=[]}async function c(n,c,l){let u=t.value;if(!u||!l()||o||!n&&!c)return;let d=r??await ce(()=>import(`./monaco.js`).then(e=>e.o),__vite__mapDeps([0]),import.meta.url);if(!l()||o||t.value!==u)return;r=d,Nd(d),d.editor.setTheme(Pd(e.value)),s();let f={automaticLayout:!0,minimap:{enabled:!1},readOnly:!0,domReadOnly:!0,scrollBeyondLastLine:!1,wordWrap:`on`};if(n&&c){let e=d.editor.createModel(n.content,n.language),t=d.editor.createModel(c.content,c.language);a=[e,t];let r=d.editor.createDiffEditor(u,{...f,originalEditable:!1,renderSideBySide:!0,useInlineViewWhenSpaceIsLimited:!0,renderSideBySideInlineBreakpoint:650});r.setModel({original:e,modified:t}),i=r}else{let e=n??c,t=d.editor.createModel(e.content,e.language);a=[t],i=d.editor.create(u,{...f,model:t,ariaLabel:n?`当前源码,只读`:`报告产物,只读`})}}return y(e,e=>r?.editor.setTheme(Pd(e))),n(()=>{o=!0,s()}),{editorElement:t,clearEditor:s,showContents:c}}var Id={css:ae,html:se,javascript:le,json:oe,less:ae,scss:ae,typescript:le},Ld=globalThis;Ld.MonacoEnvironment={getWorker:(e,t)=>new(Id[t]??ie)};function Rd(e,t){return t.endsWith(`.wxml`)||t.endsWith(`.vue`)?`html`:t.endsWith(`.wxss`)?`css`:e===`plaintext`&&t.endsWith(`.json`)?`json`:e}async function zd(e,t,n){let r=await _e(e,t,n);return{...r,language:Rd(r.language,r.path)}}function Bd(e){let t=P(null),r=P(null),i=P(``),a=P(!1),{editorElement:o,clearEditor:s,showContents:c}=Fd(e.theme),l=0,u=!1,d=M(()=>a.value?`正在读取当前修订的内容…`:t.value&&r.value?`当前源码 ↔ 报告捕获的构建产物`:r.value?`报告捕获的构建产物`:t.value?`当前源码`:`尚无可读内容`);async function f(){if(u)return;let n=++l,o=Ce.value,d=e.sourcePath.value,f=e.artifact.value;if(t.value=null,r.value=null,i.value=``,a.value=!1,s(),ge.value!==`connected`){i.value=`后端未连接。浏览上下文已保留,连接恢复后重新读取。`;return}if(o===null){i.value=`报告正在更新或已失效,等待当前修订完成同步。`;return}if(!f&&!d)return;let p=()=>!u&&l===n&&Ce.value===o&&ge.value===`connected`&&e.artifact.value?.key===f?.key&&e.sourcePath.value===d;a.value=!0;try{let[e,n]=await Promise.allSettled([d?zd(`source`,d,o):Promise.resolve(null),f?zd(`artifact`,f.file,o):Promise.resolve(null)]);if(!p())return;let a=[];e.status===`fulfilled`?t.value=e.value:a.push(`源码:${e.reason instanceof Error?e.reason.message:`读取失败`}`),n.status===`fulfilled`?r.value=n.value:a.push(`产物:${n.reason instanceof Error?n.reason.message:`读取失败`}`),i.value=a.join(`;`),await A(),p()&&await c(t.value,r.value,p)}catch(e){p()&&(i.value=e instanceof Error?e.message:`内容显示失败`)}finally{p()&&(a.value=!1)}}return y([()=>e.artifact.value?.key,e.sourcePath,Ce,ge],()=>{f()},{immediate:!0,flush:`sync`}),n(()=>{u=!0,l+=1,s()}),{artifactContent:r,sourceContent:t,editorElement:o,loadComparison:f,loadError:i,loading:a,statusText:d}}var Vd=L({__name:`SourceArtifactComparePanel`,props:{artifact:{},sourcePath:{},theme:{}},setup(e,{expose:t}){t();let n=e,{artifact:r,sourcePath:i,theme:a}=l(n),{artifactContent:o,sourceContent:s,editorElement:c,loadComparison:u,loadError:d,loading:f,statusText:p}=Bd({artifact:r,sourcePath:i,theme:a}),m=P(``),h=M(()=>[s.value?`当前源码:${s.value.path}\n${s.value.content}`:``,o.value?`报告产物:${o.value.path}\n${o.value.content}`:``].filter(Boolean).join(`
10
+
11
+ `));y([o,s],()=>{m.value=``});async function g(){let e=h.value;try{await W(e),h.value===e&&(m.value=`内容已复制`)}catch{h.value===e&&(m.value=`复制失败,请在只读编辑器中选择内容后手动复制。`)}}let _={props:n,artifact:r,sourcePath:i,theme:a,artifactContent:o,sourceContent:s,editorElement:c,loadComparison:u,loadError:d,loading:f,statusText:p,copyStatus:m,copyContent:h,copyContents:g,get formatBytes(){return U},AppEmptyState:G};return Object.defineProperty(_,"__isScriptSetup",{enumerable:!1,value:!0}),_}}),Hd={class:`content-reader`,"aria-label":`对象内容`},Ud={class:`content-toolbar`},Wd={class:`content-actions`},Gd=[`disabled`],Kd=[`disabled`],qd={key:0,role:`status`,class:`content-message`},Jd={key:1,role:`alert`,class:`content-message`},Yd={class:`content-paths`},Xd={key:0},Zd={key:0},Qd={key:1},$d={key:0},ef=[`aria-busy`],tf={ref:`editorElement`,class:`editor-host`};function nf(e,n,r,i,a,o){return f(),I(`section`,Hd,[O(`header`,Ud,[O(`div`,null,[O(`h3`,null,t(i.statusText),1),n[1]||=O(`p`,null,`源码为当前文件,产物来自报告快照;两者展示构建转换,不代表优化收益或构建前后变化。`,-1)]),O(`div`,Wd,[O(`button`,{type:`button`,disabled:!i.copyContent,onClick:i.copyContents},`复制内容`,8,Gd),O(`button`,{type:`button`,disabled:i.loading||!i.artifact&&!i.sourcePath,onClick:n[0]||=(...e)=>i.loadComparison&&i.loadComparison(...e)},`重新读取`,8,Kd)])]),i.copyStatus?(f(),I(`p`,qd,t(i.copyStatus),1)):C(``,!0),i.loadError?(f(),I(`p`,Jd,t(i.loadError),1)):C(``,!0),O(`div`,Yd,[i.sourcePath?(f(),I(`p`,Xd,[n[2]||=O(`span`,null,`源码`,-1),n[3]||=R(),O(`code`,null,t(i.sourcePath),1),i.sourceContent?(f(),I(`span`,Zd,` · `+t(i.formatBytes(i.sourceContent.size)),1)):C(``,!0)])):C(``,!0),i.artifact?(f(),I(`p`,Qd,[n[4]||=O(`span`,null,`产物`,-1),n[5]||=R(),O(`code`,null,t(i.artifact.file),1),i.artifactContent?(f(),I(`span`,$d,` · `+t(i.formatBytes(i.artifactContent.size)),1)):C(``,!0)])):C(``,!0)]),O(`div`,{class:`editor-frame`,"aria-busy":i.loading},[v(O(`div`,tf,null,512),[[F,i.sourceContent||i.artifactContent]]),!i.sourceContent&&!i.artifactContent?(f(),D(i.AppEmptyState,{key:0,class:`m-3`},{default:c(()=>[R(t(i.loading?`正在读取…`:i.loadError||`此对象没有可请求的文本内容。二进制、缺失文件和无读取授权的来源不会生成替代内容。`),1)]),_:1})):C(``,!0)],8,ef)])}var rf=z(Vd,[[`render`,nf],[`__scopeId`,`data-v-02c96028`]]),af=L({__name:`ObjectBuildChanges`,props:{node:{},comparisonResult:{},baselineLabel:{}},setup(e,{expose:t}){t();let n=e,r=M(()=>n.comparisonResult?Ed(n.comparisonResult).nodes.get(n.node.key)??null:null),i={props:n,baseline:r,rows:M(()=>(n.node.target.kind===`module`?[{key:`attributedBytes`,label:`当前产物中的归因`},{key:`sourceBytes`,label:`原始源码`}]:[{key:`rawBytes`,label:`原始体积`},{key:`gzipBytes`,label:`Gzip 实测`},{key:`brotliBytes`,label:`Brotli 实测`}]).map(({key:e,label:t})=>{let i=r.value?.measurements[e]??null,a=n.node.measurements[e],o=i===null||a===null?null:a-i;return{label:t,before:i===null?`未测量`:U(i),after:a===null?`未测量`:U(a),delta:o===null?`不可比较`:`${o>0?`+`:o<0?`−`:``}${U(Math.abs(o))}`}}))};return Object.defineProperty(i,"__isScriptSetup",{enumerable:!1,value:!0}),i}}),of={class:`build-changes`},sf={key:0,class:`change-note`},cf={class:`change-note`},lf={key:0},uf={key:0,class:`change-note`},df={key:1,class:`change-metrics`};function ff(e,n,r,i,a,o){return f(),I(`section`,of,[n[1]||=O(`h3`,null,`构建变化`,-1),r.comparisonResult?(f(),I(E,{key:1},[O(`p`,cf,[R(`基线:`+t(r.baselineLabel||`已选择的历史报告`),1),r.comparisonResult.metadata?.generatedAt?(f(),I(`span`,lf,` · `+t(r.comparisonResult.metadata.generatedAt),1)):C(``,!0)]),i.baseline?(f(),I(`dl`,df,[(f(!0),I(E,null,m(i.rows,e=>(f(),I(`div`,{key:e.label,class:`change-metric`},[O(`dt`,null,t(e.label),1),O(`dd`,null,[O(`span`,null,`基线 `+t(e.before),1),O(`span`,null,`当前 `+t(e.after),1),O(`strong`,null,t(e.delta),1)])]))),128))])):(f(),I(`p`,uf,`基线中没有相同身份的对象,可能为新增或路径已改变;不把不存在或缺测当成零。`)),n[0]||=O(`p`,{class:`change-note`},`只比较同一包、产物与模块身份的同口径测量。变化不自动证明某次修改有效。`,-1)],64)):(f(),I(`p`,sf,`未选择基线。请在构建分析中选择真实历史报告,再比较同一对象的测量;源码与产物转换不是构建增量。`))])}var pf=z(af,[[`render`,ff],[`__scopeId`,`data-v-41651bdc`]]),mf=L({__name:`ObjectEvidence`,props:{node:{},artifact:{}},emits:[`select`,`content`],setup(e,{expose:t,emit:n}){t();let r=e,i={props:r,emit:n,facts:M(()=>r.node.target.kind===`module`?[{label:`当前产物中的归因体积`,value:r.node.measurements.attributedBytes},{label:`原始源码体积`,value:r.node.measurements.sourceBytes}]:[{label:`原始体积`,value:r.node.measurements.rawBytes},{label:`Gzip 实测`,value:r.node.measurements.gzipBytes},{label:`Brotli 实测`,value:r.node.measurements.brotliBytes}]),get formatBytes(){return U}};return Object.defineProperty(i,"__isScriptSetup",{enumerable:!1,value:!0}),i}}),hf={class:`object-evidence`},gf={class:`evidence-facts`},_f={key:0},vf={key:0,class:`evidence-note`},yf={key:1,class:`evidence-note`},bf={key:2,class:`evidence-note`},xf={class:`evidence-context`},Sf={key:0},Cf={key:1},wf={key:0},Tf={key:1};function Ef(e,n,r,i,a,o){return f(),I(`section`,hf,[O(`div`,null,[O(`h3`,null,t(r.node.target.kind===`module`?`模块证据`:r.node.target.kind===`package`?`包证据`:`产物证据`),1),O(`dl`,gf,[(f(!0),I(E,null,m(i.facts,e=>(f(),I(`div`,{key:e.label},[O(`dt`,null,t(e.label),1),O(`dd`,null,t(e.value===null?`未测量`:i.formatBytes(e.value)),1)]))),128)),r.node.target.kind===`module`?C(``,!0):(f(),I(`div`,_f,[n[2]||=O(`dt`,null,`模块落点`,-1),O(`dd`,null,t(r.node.moduleCount),1)]))]),r.node.target.kind===`module`?(f(),I(`p`,vf,`归因是模块在此产物中的构成贡献,不是独立文件大小;原始源码体积与压缩体积不能混用,也不能据此推算节省。`)):r.node.target.kind===`package`?(f(),I(`p`,yf,`包体积只汇总报告中的产物;任一成员缺少测量时,对应汇总为未测量。不同压缩算法分别展示。`)):(f(),I(`p`,bf,`仅展示报告记录的真实测量。未记录压缩结果时,不使用估算值替代。`))]),O(`div`,xf,[O(`dl`,null,[O(`div`,null,[n[3]||=O(`dt`,null,`所属包`,-1),O(`dd`,null,[R(t(r.node.packageLabel)+` `,1),O(`code`,null,t(r.node.target.packageId),1)])]),r.node.target.kind===`package`?C(``,!0):(f(),I(`div`,Sf,[n[4]||=O(`dt`,null,`产物路径`,-1),O(`dd`,null,[O(`code`,null,t(r.node.target.file),1)])])),r.node.target.kind===`module`?(f(),I(`div`,Cf,[n[5]||=O(`dt`,null,`模块身份`,-1),O(`dd`,null,[O(`code`,null,t(r.node.target.moduleId),1)])])):C(``,!0)]),r.node.placementOnly?(f(),I(`p`,wf,`此落点仅由报告反向关联记录,未提供当前产物中的归因与源码读取授权。`)):r.node.target.kind===`module`&&!r.node.sourcePath?(f(),I(`p`,Tf,`当前模块来源不可读取;仍可检查所属产物。`)):C(``,!0),r.node.target.kind===`package`?C(``,!0):(f(),I(`button`,{key:2,type:`button`,onClick:n[0]||=e=>i.emit(`content`)},t(r.node.sourcePath?`读取源码与产物`:`检查产物内容`),1)),r.node.target.kind===`module`&&r.artifact?(f(),I(`button`,{key:3,type:`button`,onClick:n[1]||=e=>i.emit(`select`,r.artifact)},`选择所属产物`)):C(``,!0)])])}var Df=z(mf,[[`render`,Ef],[`__scopeId`,`data-v-344f4442`]]),Of=L({__name:`ObjectRelationLane`,props:{title:{},number:{},items:{},total:{},query:{},selectedKey:{}},emits:[`select`,`query`],setup(e,{expose:t,emit:n}){let i=e,a=n,o=r(`list`);y(()=>i.query,()=>{o.value?.scrollTo({top:0})},{flush:`post`});function s(e){let t=o.value,n=Array.from(t?.querySelectorAll(`[data-node-key]`)??[]).find(t=>t.dataset.nodeKey===e);t&&n&&(n.offsetTop<t.scrollTop||n.offsetTop+n.offsetHeight>t.scrollTop+t.clientHeight)&&(t.scrollTop=n.offsetTop-(t.clientHeight-n.offsetHeight)/2)}t({reveal:s});let c={props:i,emit:a,list:o,reveal:s,get formatBytes(){return U}};return Object.defineProperty(c,"__isScriptSetup",{enumerable:!1,value:!0}),c}}),kf=[`aria-label`],Af={class:`lane-heading`},jf={class:`lane-number`},Mf={class:`lane-count`},Nf={class:`lane-search`},Pf={class:`sr-only`},Ff=[`value`,`placeholder`],If=[`aria-label`],Lf=[`data-node-key`,`aria-pressed`,`title`,`onClick`],Rf={class:`node-type`},zf={class:`node-context`},Bf={key:0,class:`selected-marker`},Vf={class:`node-path`},Hf={class:`node-facts`},Uf={key:0},Wf={key:1},Gf={key:2},Kf={key:3},qf={key:0,class:`lane-empty`,role:`status`};function Jf(e,n,r,i,a,o){return f(),I(`section`,{class:`relation-lane`,"aria-label":r.title},[O(`header`,Af,[O(`h3`,null,[O(`span`,jf,t(r.number),1),R(t(r.title)+` `,1),O(`span`,Mf,t(r.total),1)]),O(`label`,Nf,[O(`span`,Pf,`搜索`+t(r.title),1),O(`input`,{value:r.query,type:`search`,placeholder:`搜索${r.title}路径或名称`,onInput:n[0]||=e=>i.emit(`query`,e.target.value)},null,40,Ff)])]),O(`div`,{ref:`list`,class:`lane-nodes`,tabindex:`0`,"aria-label":`${r.title}列表,可滚动浏览`},[(f(!0),I(E,null,m(r.items,e=>(f(),I(`button`,{key:e.key,type:`button`,class:`relation-node`,"data-node-key":e.key,"aria-pressed":e.key===r.selectedKey,title:`${e.packageLabel} · ${e.target.kind===`module`?`${e.target.file} · `:``}${e.label}`,onClick:t=>i.emit(`select`,e)},[O(`span`,Rf,[O(`span`,null,t(e.target.kind===`package`?`PACKAGE`:e.sourceType),1),O(`span`,zf,t(e.target.kind===`module`?`${e.packageLabel} / ${e.target.file}`:e.target.kind===`artifact`?e.packageLabel:e.target.packageId),1),e.key===r.selectedKey?(f(),I(`span`,Bf,`当前对象`)):C(``,!0)]),O(`code`,Vf,t(e.label),1),O(`span`,Hf,[e.target.kind===`module`?(f(),I(`span`,Uf,`归因 `+t(e.measurements.attributedBytes===null?`未测量`:i.formatBytes(e.measurements.attributedBytes)),1)):(f(),I(`strong`,Wf,t(e.measurements.rawBytes===null?`体积未测量`:i.formatBytes(e.measurements.rawBytes)),1)),e.target.kind===`module`?(f(),I(`span`,Kf,t(e.sourcePath?`源码可请求`:`源码不可读`),1)):(f(),I(`span`,Gf,t(e.moduleCount)+` 模块落点`,1))])],8,Lf))),128)),r.items.length?C(``,!0):(f(),I(`p`,qf,`没有匹配的`+t(r.title)+`。可清除搜索或更换包范围。`,1))],8,If)],8,kf)}var Yf=z(Of,[[`render`,Jf],[`__scopeId`,`data-v-375c9747`]]),Xf=L({__name:`RelationConnections`,props:{edges:{}},setup(e,{expose:t}){t();let i=e,a=r(`svg`),o=P([]),s,c,l,u=!1;async function d(){if(await A(),u||!a.value?.parentElement)return;let e=a.value.parentElement;if(!a.value.getClientRects().length){o.value=[];return}let t=e.getBoundingClientRect(),n=new Map;for(let t of e.querySelectorAll(`.lane-nodes`)){let e=t.getBoundingClientRect();for(let r of t.querySelectorAll(`[data-node-key]`)){let t=r.getBoundingClientRect(),i=t.top+t.height/2;r.dataset.nodeKey&&i>=e.top&&i<=e.bottom&&n.set(r.dataset.nodeKey,t)}}o.value=i.edges.flatMap(e=>{let r=n.get(e.from),i=n.get(e.to);if(!r||!i||i.left<=r.right)return[];let a=r.right-t.left,o=i.left-t.left,s=r.top+r.height/2-t.top,c=i.top+i.height/2-t.top;return[{d:`M ${a} ${s} H ${(a+o)/2} V ${c} H ${o}`,active:e.active}]})}function f(){l===void 0&&(l=requestAnimationFrame(()=>{l=void 0,d()}))}y(()=>i.edges,f,{flush:`post`}),k(()=>{c=a.value?.parentElement??void 0,c&&(s=new ResizeObserver(f),s.observe(c),c.addEventListener(`scroll`,f,{capture:!0,passive:!0})),f()}),n(()=>{u=!0,s?.disconnect(),c?.removeEventListener(`scroll`,f,!0),l!==void 0&&cancelAnimationFrame(l)});let p={props:i,svg:a,paths:o,get observer(){return s},set observer(e){s=e},get parent(){return c},set parent(e){c=e},get frame(){return l},set frame(e){l=e},get disposed(){return u},set disposed(e){u=e},updatePaths:d,scheduleUpdate:f};return Object.defineProperty(p,"__isScriptSetup",{enumerable:!1,value:!0}),p}}),Zf={ref:`svg`,class:`relation-wires`,"aria-hidden":`true`},Qf=[`d`];function $f(e,t,n,r,i,a){return f(),I(`svg`,Zf,[(f(!0),I(E,null,m(r.paths,(e,t)=>(f(),I(`path`,{key:t,d:e.d,class:x({active:e.active})},null,10,Qf))),128))],512)}var ep=z(Xf,[[`render`,$f],[`__scopeId`,`data-v-0f049a39`]]),tp=L({__name:`ObjectRelationLanes`,props:{packages:{},artifacts:{},modules:{},packageQuery:{},artifactQuery:{},moduleQuery:{},selected:{}},emits:[`select`,`update:packageQuery`,`update:artifactQuery`,`update:moduleQuery`],setup(e,{expose:t,emit:n}){t();let i=e,a=n,o=r(`laneRefs`),s=M(()=>[{key:`packages`,title:`包`,query:i.packageQuery,all:i.packages},{key:`artifacts`,title:`产物`,query:i.artifactQuery,all:i.artifacts},{key:`modules`,title:`模块落点`,query:i.moduleQuery,all:i.modules}]),c=M(()=>{let e=new Map(i.packages.map(e=>[e.target.packageId,e])),t=new Map(i.artifacts.map(e=>[e.key,e]));return[...i.artifacts.flatMap(t=>{let n=e.get(t.target.packageId);return n?[{from:n.key,to:t.key,active:i.selected?.artifactKey===t.key||i.selected?.key===n.key}]:[]}),...i.modules.flatMap(e=>{let n=e.artifactKey?t.get(e.artifactKey):void 0;return n?[{from:n.key,to:e.key,active:i.selected?.key===e.key||i.selected?.key===n.key}]:[]})]});function l(e,t){a(e===`packages`?`update:packageQuery`:e===`artifacts`?`update:artifactQuery`:`update:moduleQuery`,t)}function u(){for(let e of kd(i,i.selected))for(let t of o.value??[])t.reveal(e.key)}y(()=>i.selected?.key,u,{flush:`post`}),k(u);let d={props:i,emit:a,laneRefs:o,lanes:s,edges:c,setQuery:l,locateSelection:u,ObjectRelationLane:Yf,RelationConnections:ep};return Object.defineProperty(d,"__isScriptSetup",{enumerable:!1,value:!0}),d}}),np={class:`relation-grid`},rp={class:`relation-caption`},ip=[`disabled`];function ap(e,t,n,r,i,a){return f(),I(`div`,null,[O(`div`,np,[_(r.RelationConnections,{edges:r.edges},null,8,[`edges`]),(f(!0),I(E,null,m(r.lanes,(e,i)=>(f(),D(r.ObjectRelationLane,{key:e.key,ref_for:!0,ref:`laneRefs`,title:e.title,number:`0${i+1}`,items:e.all,total:e.all.length,query:e.query,"selected-key":n.selected?.key??null,onSelect:t[0]||=e=>r.emit(`select`,e),onQuery:t=>r.setQuery(e.key,t)},null,8,[`title`,`number`,`items`,`total`,`query`,`selected-key`,`onQuery`]))),128))]),O(`footer`,rp,[t[1]||=O(`span`,null,[O(`span`,{class:`legend-line`}),R(`报告收录与归属,不表示 import 或调用。滚动或搜索浏览全部对象。`)],-1),O(`button`,{type:`button`,disabled:!n.selected,onClick:r.locateSelection},`定位当前对象`,8,ip)])])}var op=z(tp,[[`render`,ap],[`__scopeId`,`data-v-284ff41f`]]),sp=L({__name:`ObjectInspectionWorkbench`,props:{result:{},comparisonResult:{},target:{},theme:{},sourcePath:{},baselineLabel:{},investigationRequestId:{}},emits:[`selectTarget`,`investigate`],setup(e,{expose:t,emit:n}){t();let r=e,i=n,{result:a,target:o}=l(r),{index:s,selected:c,selectedArtifact:u,targetMissing:d,packageFilter:f,packageQuery:p,artifactQuery:m,moduleQuery:h,packages:g,artifacts:_,modules:v}=Ad({result:a,target:o}),b=P(`evidence`),x=P(null),S=[{key:`evidence`,label:`当前对象`},{key:`content`,label:`内容`},{key:`changes`,label:`构建变化`},{key:`investigation`,label:`调查`}],C=M(()=>[{value:``,label:`全部包(显式范围)`},...s.value.packages.map(e=>({value:e.target.packageId,label:`${e.label} · ${e.target.packageId}`}))]),w=M(()=>u.value?.target.kind===`artifact`?{key:u.value.key,file:u.value.target.file}:null),T=M(()=>!(!c.value||c.value.target.kind!==`package`&&!u.value)),E=M(()=>{if(!c.value||c.value.target.kind===`package`)return null;if(c.value.target.kind===`module`)return c.value.sourcePath;let e=r.sourcePath?.split(`?`)[0];return e&&(c.value.sourcePath===e||s.value.modules.some(t=>t.artifactKey===c.value?.key&&t.sourcePath===e))?e:c.value.sourcePath}),D=M(()=>ge.value===`connected`?Ce.value===null?`报告同步中`:`报告修订 ${Ce.value}`:`后端未连接`);function O(){A(()=>{x.value?.scrollIntoView({block:`start`}),x.value?.focus({preventScroll:!0})})}y(()=>r.sourcePath,e=>{e&&(b.value=`content`,O())},{immediate:!0}),y(()=>r.investigationRequestId,e=>{e>0&&(b.value=`investigation`,O())},{immediate:!0});function k(e){i(`selectTarget`,e.target),e.target.kind===`module`&&(b.value=`content`,O())}function j(){c.value&&T.value&&(b.value=`investigation`,i(`investigate`,c.value.target))}let N={props:r,emit:i,result:a,target:o,index:s,selected:c,selectedArtifact:u,targetMissing:d,packageFilter:f,packageQuery:p,artifactQuery:m,moduleQuery:h,packages:g,artifacts:_,modules:v,dock:b,dockElement:x,dockTabs:S,packageOptions:C,readerArtifact:w,canInvestigate:T,readerSource:E,connectionText:D,revealDock:O,selectNode:k,investigate:j,get dashboardAnalyzeRevision(){return Ce},get dashboardConnectionStatus(){return ge},AppSelect:be,SourceArtifactComparePanel:rf,ObjectBuildChanges:pf,ObjectEvidence:Df,ObjectRelationLanes:op};return Object.defineProperty(N,"__isScriptSetup",{enumerable:!1,value:!0}),N}}),cp={class:`object-workbench`,"aria-label":`关联工作台`},lp={class:`workbench-heading`},up={key:0,class:`current-object`},dp={class:`context-line`},fp=[`disabled`],pp=[`disabled`],mp={key:0,class:`workbench-notice`,role:`status`},hp={key:1,class:`workbench-notice`,role:`status`},gp={key:2,class:`workbench-notice`,role:`status`},_p={class:`stage-heading`},vp={class:`package-filter`},yp={key:3,class:`workbench-notice`,role:`status`},bp={ref:`dockElement`,class:`context-dock`,tabindex:`-1`,"aria-label":`当前对象检查区`},xp={class:`dock-toolbar`},Sp={class:`dock-tabs`,role:`group`,"aria-label":`检查内容`},Cp=[`aria-pressed`,`onClick`],wp={class:`dock-status`},Tp={class:`dock-body`},Ep={key:1},Dp={key:0,class:`dock-body`},Op={key:0},kp={key:0,class:`content-note`},Ap={key:1,class:`content-note`},jp={key:1,class:`dock-body`},Mp={key:1},Np={class:`dock-body`};function Pp(e,n,r,i,a,s){return f(),I(`section`,cp,[O(`header`,lp,[O(`div`,null,[n[6]||=O(`h2`,null,`关联工作台`,-1),i.selected?(f(),I(`p`,up,[O(`span`,null,t(i.selected.target.kind===`package`?`包`:i.selected.target.kind===`artifact`?`产物`:`模块`),1),O(`code`,null,t(i.selected.label),1)])):C(``,!0),O(`p`,dp,t(i.result.packages.length)+` 个包 / `+t(i.index.artifacts.length)+` 个产物 / `+t(i.index.modules.length)+` 个模块落点 · 基线:`+t(r.comparisonResult?r.baselineLabel||`已选择历史报告`:`未选择`),1)]),O(`button`,{type:`button`,class:`inspect-button`,disabled:!i.selected,onClick:n[0]||=e=>{i.dock=`evidence`,i.revealDock()}},`查看证据`,8,fp),O(`button`,{type:`button`,class:`investigate-button`,disabled:!i.canInvestigate,onClick:i.investigate},`创建调查`,8,pp)]),i.targetMissing?(f(),I(`p`,mp,`原对象已不在当前报告中`+t(i.selected?`,暂展示当前报告中的真实对象`:`,当前报告暂无可展示对象`)+`;浏览筛选与调查草稿未改变。`,1)):C(``,!0),i.dashboardConnectionStatus!==`connected`||i.dashboardAnalyzeRevision===null?(f(),I(`p`,hp,t(i.connectionText)+`。保留报告浏览上下文;内容读取等待当前报告同步,不显示旧修订内容。`,1)):C(``,!0),i.selected?.placementOnly&&!i.selectedArtifact?(f(),I(`p`,gp,`报告记录了模块落点,但未收录对应产物。保留归属证据,不提供内容读取或调查提交。`)):C(``,!0),O(`div`,_p,[n[7]||=O(`div`,null,[O(`h3`,null,`报告收录关系`),O(`p`,null,`选择只改变检查对象,不缩小列表或修改搜索。`)],-1),O(`div`,vp,[_(i.AppSelect,{modelValue:i.packageFilter,"onUpdate:modelValue":n[1]||=e=>i.packageFilter=e,label:`筛选包范围(与对象选择独立)`,options:i.packageOptions},null,8,[`modelValue`,`options`])])]),!i.index.packages.length&&!i.index.artifacts.length&&!i.index.modules.length?(f(),I(`p`,yp,`当前报告没有收录对象。构建完成后,真实的包、产物与模块关系会出现在这里。`)):(f(),D(i.ObjectRelationLanes,{key:4,"package-query":i.packageQuery,"onUpdate:packageQuery":n[2]||=e=>i.packageQuery=e,"artifact-query":i.artifactQuery,"onUpdate:artifactQuery":n[3]||=e=>i.artifactQuery=e,"module-query":i.moduleQuery,"onUpdate:moduleQuery":n[4]||=e=>i.moduleQuery=e,packages:i.packages,artifacts:i.artifacts,modules:i.modules,selected:i.selected,onSelect:i.selectNode},null,8,[`package-query`,`artifact-query`,`module-query`,`packages`,`artifacts`,`modules`,`selected`])),O(`section`,bp,[O(`header`,xp,[O(`div`,Sp,[(f(),I(E,null,m(i.dockTabs,e=>O(`button`,{key:e.key,type:`button`,"aria-pressed":i.dock===e.key,onClick:t=>i.dock=e.key},t(e.label),9,Cp)),64))]),O(`span`,wp,t(i.connectionText),1)]),v(O(`div`,Tp,[i.selected?(f(),D(i.ObjectEvidence,{key:0,node:i.selected,artifact:i.selectedArtifact,onSelect:i.selectNode,onContent:n[5]||=e=>i.dock=`content`},null,8,[`node`,`artifact`])):(f(),I(`p`,Ep,`选择报告中的对象后,在此检查证据。`))],512),[[F,i.dock===`evidence`]]),i.dock===`content`?(f(),I(`div`,Dp,[i.selected?.target.kind===`package`?(f(),I(`p`,Op,`包没有单独的文本内容。请选择产物或模块,包范围不会因选择自动改变。`)):(f(),I(E,{key:1},[i.selected?.placementOnly?(f(),I(`p`,kp,`此模块只有报告落点,没有源码读取授权或测量归因;仅尝试读取真实存在的所属产物。`)):i.selected?.target.kind===`module`&&!i.readerSource?(f(),I(`p`,Ap,`此模块源码不可读取,下面展示所属产物(如果可读)。`)):C(``,!0),_(i.SourceArtifactComparePanel,{artifact:i.readerArtifact,"source-path":i.readerSource,theme:r.theme},null,8,[`artifact`,`source-path`,`theme`])],64))])):C(``,!0),i.dock===`changes`?(f(),I(`div`,jp,[i.selected?(f(),D(i.ObjectBuildChanges,{key:0,node:i.selected,"comparison-result":r.comparisonResult,"baseline-label":r.baselineLabel},null,8,[`node`,`comparison-result`,`baseline-label`])):(f(),I(`p`,Mp,`当前没有可比较对象。`))])):C(``,!0),v(O(`div`,Np,[o(e.$slots,`investigation`,{},void 0,!0)],512),[[F,i.dock===`investigation`]])],512)])}var Fp=z(sp,[[`render`,Pp],[`__scopeId`,`data-v-5c3069c3`]]);function Ip(e){return Math.max(0,Math.min(100,Math.round(e)))}function Lp(e){if(typeof e.sizeDeltaBytes!=`number`||e.sizeDeltaBytes<=0||e.totalBytes<=0)return 0;let t=e.sizeDeltaBytes/e.totalBytes;return Math.min(18,t*80)}function Rp(e){return e?e.status===`critical`?32:18:0}function zp(e){return e.moduleCount<=0||e.duplicateModuleCount<=0?0:Math.min(18,e.duplicateModuleCount/e.moduleCount*60)}function Bp(e){return Math.min(10,Math.max(0,e.entryFileCount-1)*3)}function Vp(e){return e<70?`risk`:e<86?`watch`:`good`}function Hp(e){return e===`risk`?`高风险`:e===`watch`?`需关注`:`健康`}function Up(e,t){return t?.status===`critical`?{primaryRisk:`预算超限 ${(t.ratio*100).toFixed(1)}%`,primaryRiskKind:`budget`}:t?.status===`warning`?{primaryRisk:`接近预算 ${(t.ratio*100).toFixed(1)}%`,primaryRiskKind:`budget`}:typeof e.sizeDeltaBytes==`number`&&e.sizeDeltaBytes>0?{primaryRisk:`较上次增长 ${U(e.sizeDeltaBytes)}`,primaryRiskKind:`growth`}:e.duplicateModuleCount>0?{primaryRisk:`${e.duplicateModuleCount} 个重复模块`,primaryRiskKind:`duplicates`}:{primaryRisk:`未发现主要风险`,primaryRiskKind:`none`}}function Wp(e,t){let n=Ip(100-Rp(t)-Lp(e)-zp(e)-Bp(e)),r=Vp(n);return{id:e.id,label:e.label,typeLabel:B(e.type),path:e.type===`subPackage`||e.type===`independent`?e.id:void 0,score:n,status:r,statusLabel:Hp(r),detail:`${U(e.totalBytes)} · ${e.fileCount} 个产物 · ${e.moduleCount} 个模块`,...Up(e,t),metrics:[{label:`体积`,value:U(e.totalBytes)},{label:`重复模块`,value:e.duplicateModuleCount},{label:`Entry`,value:e.entryFileCount},{label:`较上次`,value:typeof e.sizeDeltaBytes==`number`?`${e.sizeDeltaBytes>=0?`+`:`-`}${U(Math.abs(e.sizeDeltaBytes))}`:`—`}]}}function Gp(e){let t=new Map(e.budgetWarnings.map(e=>[e.id,e])),n=e.packageInsights.map(e=>Wp(e,t.get(e.id))).sort((e,t)=>e.score-t.score||e.label.localeCompare(t.label)),r=n.reduce((e,t)=>e+t.score,0);return{averageScore:n.length>0?Ip(r/n.length):100,riskCount:n.filter(e=>e.status===`risk`).length,watchCount:n.filter(e=>e.status===`watch`).length,healthiestPackage:[...n].sort((e,t)=>t.score-e.score||e.label.localeCompare(t.label))[0],weakestPackage:n[0],items:n}}function Kp(e){return typeof e!=`number`||Number.isNaN(e)||e===0?`—`:`${e>0?`+`:`-`}${U(Math.abs(e))}`}function qp(e){return[{label:`Chunks`,value:e.chunkCount},{label:`Assets`,value:e.assetCount},{label:`压缩后`,value:U(e.compressedBytes)},{label:`较上次`,value:Kp(e.sizeDeltaBytes)}]}function Jp(e){return e.replaceAll(`|`,`\\|`).replaceAll(`
12
+ `,` `)}function Yp(e,t){return[`# dashboard 包体探索`,``,`包数量:${e.length} / ${t}`,``,`| 包 | 类型 | 总体积 | 压缩后 | 较上次 | 预算 | 产物 | 模块 | 重复模块 |`,`| --- | --- | ---: | ---: | ---: | --- | ---: | ---: | ---: |`,...e.map(e=>[e.label,e.typeLabel,e.totalBytesLabel,e.compressedBytesLabel,e.deltaText,e.budgetText,String(e.fileCount),String(e.moduleCount),String(e.duplicateModuleCount)].map(Jp).join(` | `)).map(e=>`| ${e} |`),``].join(`
13
+ `)}function Xp(e,t){return[...e].sort((e,n)=>t===`compressed`?n.compressedBytes-e.compressedBytes||e.label.localeCompare(n.label):t===`delta`?(n.sizeDeltaBytes??-1/0)-(e.sizeDeltaBytes??-1/0)||e.label.localeCompare(n.label):t===`duplicates`?n.duplicateModuleCount-e.duplicateModuleCount||n.totalBytes-e.totalBytes||e.label.localeCompare(n.label):t===`files`?n.fileCount-e.fileCount||n.totalBytes-e.totalBytes||e.label.localeCompare(n.label):t===`name`?e.label.localeCompare(n.label):t===`health`?e.healthScore-n.healthScore||n.totalBytes-e.totalBytes||e.label.localeCompare(n.label):n.totalBytes-e.totalBytes||e.label.localeCompare(n.label))}function Zp(e){let t=u(``),n=u(`all`),r=u(`all`),i=u(`size`),{actionStatus:a,setActionStatus:o}=Ht(),s=M(()=>new Map(e.budgetWarnings.map(e=>[e.id,e]))),c=M(()=>Gp({packageInsights:e.packageInsights,budgetWarnings:e.budgetWarnings})),l=M(()=>new Map(c.value.items.map(e=>[e.id,e.score]))),d=M(()=>{let t=new Set;for(let n of e.packageInsights)t.add(n.type);return[...t].sort((e,t)=>B(e).localeCompare(B(t)))}),f=M(()=>e.packageInsights.map(t=>{let n=B(t.type),r=s.value.get(t.id),i=e.selectedTreemapMeta?.packageLabel===t.label;return{...t,typeLabel:n,summaryText:`${n} · ${t.fileCount} 个产物 · ${t.moduleCount} 个模块 · 跨包 ${t.duplicateModuleCount}`,totalBytesLabel:U(t.totalBytes),compressedBytesLabel:`${t.compressedSizeSource===`real`?`Brotli`:`估算`} ${U(t.compressedBytes)}`,deltaText:Kp(t.sizeDeltaBytes),budgetText:r?r.status===`unknown`?`预算待确认:体积测量不完整`:`${r.status===`critical`?`超预算`:`接近预算`} ${(r.ratio*100).toFixed(1)}%`:`预算正常`,selected:i,entryCountText:`${t.entryFileCount} 个 entry`,healthScore:l.value.get(t.id)??100,metrics:qp(t)}})),p=M(()=>{let e=t.value.trim().toLowerCase();return Xp(f.value.filter(t=>{if(n.value!==`all`&&t.type!==n.value)return!1;let i=s.value.has(t.id);return r.value===`warning`&&!i||r.value===`normal`&&i?!1:!e||[t.id,t.label,t.type,t.typeLabel,t.summaryText].some(t=>t.toLowerCase().includes(e))}),i.value)}),m=M(()=>Yp(p.value,f.value.length));async function h(){try{await W(m.value),o(`已复制`)}catch{o(`复制失败`)}}function g(){let e=new Blob([`${JSON.stringify(p.value,null,2)}\n`],{type:`application/json`}),t=URL.createObjectURL(e),n=document.createElement(`a`);n.href=t,n.download=`weapp-vite-dashboard-packages.json`,n.click(),URL.revokeObjectURL(t),o(`已导出`)}return{actionStatus:a,copyPackageReport:h,exportPackageJson:g,filteredPackageInsightCards:p,packageBudgetFilter:r,packageHealth:c,packageInsightCards:f,packageQuery:t,packageSortMode:i,packageTypeFilter:n,packageTypeOptions:d}}var Qp=L({__name:`AppPackageFileTable`,props:{files:{}},setup(e,{expose:t}){t();let n=e;function r(e){let t=typeof e.sizeDeltaBytes==`number`&&e.sizeDeltaBytes!==0?`${e.sizeDeltaBytes>0?`+`:`-`}${U(Math.abs(e.sizeDeltaBytes))}`:`—`;return{file:e.file,type:e.type,fromLabel:Ee(e.from),sizeLabel:U(e.size),compressedLabel:U(e.compressedSize),deltaLabel:t}}let i={props:n,createPackageFileRow:r,fileRows:M(()=>n.files.map(e=>r(e)))};return Object.defineProperty(i,"__isScriptSetup",{enumerable:!1,value:!0}),i}}),$p={class:`max-w-full overflow-x-auto rounded-xl border border-(--dashboard-border)`},em={class:`min-w-[48rem] divide-y divide-(--dashboard-border) whitespace-nowrap text-left text-sm`},tm={class:`divide-y divide-(--dashboard-border) text-(--dashboard-text-muted)`},nm={class:`px-3 py-2 whitespace-normal font-mono text-xs text-(--dashboard-text)`},rm={class:`px-3 py-2`},im={class:`px-3 py-2`},am={class:`px-3 py-2 font-medium text-(--dashboard-text)`},om={class:`px-3 py-2 font-medium text-(--dashboard-text)`};function sm(e,n,r,i,a,o){return f(),I(`div`,$p,[O(`table`,em,[n[0]||=O(`thead`,{class:`bg-(--dashboard-panel-muted) text-(--dashboard-text-soft)`},[O(`tr`,null,[O(`th`,{class:`px-3 py-2 text-[11px] font-medium uppercase tracking-[0.18em]`},` 文件 `),O(`th`,{class:`px-3 py-2 text-[11px] font-medium uppercase tracking-[0.18em]`},` 类型 `),O(`th`,{class:`px-3 py-2 text-[11px] font-medium uppercase tracking-[0.18em]`},` 来源 `),O(`th`,{class:`px-3 py-2 text-[11px] font-medium uppercase tracking-[0.18em]`},` 体积 / 压缩 `),O(`th`,{class:`px-3 py-2 text-[11px] font-medium uppercase tracking-[0.18em]`},` 较上次 `)])],-1),O(`tbody`,tm,[(f(!0),I(E,null,m(i.fileRows,e=>(f(),I(`tr`,{key:e.file},[O(`td`,nm,t(e.file),1),O(`td`,rm,t(e.type),1),O(`td`,im,t(e.fromLabel),1),O(`td`,am,t(e.sizeLabel)+` / `+t(e.compressedLabel),1),O(`td`,om,t(e.deltaLabel),1)]))),128))])])])}var cm=z(Qp,[[`render`,sm]]),lm=L({__name:`PackageExplorerToolbar`,props:a({filteredCount:{},totalCount:{},typeOptions:{},actionStatus:{},disabled:{type:Boolean}},{query:{required:!0},queryModifiers:{},typeFilter:{required:!0},typeFilterModifiers:{},budgetFilter:{required:!0},budgetFilterModifiers:{},sortMode:{required:!0},sortModeModifiers:{}}),emits:a([`copy`,`exportJson`],[`update:query`,`update:typeFilter`,`update:budgetFilter`,`update:sortMode`]),setup(e,{expose:t,emit:n}){t();let r=e,i={props:r,emit:n,query:g(e,`query`),typeFilter:g(e,`typeFilter`),budgetFilter:g(e,`budgetFilter`),sortMode:g(e,`sortMode`),typeFilterOptions:M(()=>[{label:`全部类型`,value:`all`},...r.typeOptions.map(e=>({label:B(e),value:e}))]),budgetFilterOptions:[{label:`全部预算`,value:`all`},{label:`仅告警`,value:`warning`},{label:`预算正常`,value:`normal`}],sortOptions:[{label:`按健康分`,value:`health`},{label:`按体积`,value:`size`},{label:`按压缩后`,value:`compressed`},{label:`按增量`,value:`delta`},{label:`按重复模块`,value:`duplicates`},{label:`按产物数`,value:`files`},{label:`按名称`,value:`name`}],AppSelect:be,AppToolButton:K};return Object.defineProperty(i,"__isScriptSetup",{enumerable:!1,value:!0}),i}}),um={class:`flex flex-wrap items-center justify-between gap-3`},dm={class:`min-w-0`},fm={class:`text-xs font-medium text-(--dashboard-text-soft)`},pm={key:0,class:`mt-1 text-xs font-medium text-(--dashboard-accent)`},mm={class:`flex min-w-0 flex-wrap items-center gap-2`},hm={class:`flex shrink-0 flex-nowrap items-center gap-2`};function gm(e,n,r,i,a,o){return f(),I(`div`,um,[O(`div`,dm,[O(`p`,fm,` 匹配 `+t(r.filteredCount)+` / `+t(r.totalCount)+` 个包 `,1),r.actionStatus?(f(),I(`p`,pm,t(r.actionStatus),1)):C(``,!0)]),O(`div`,mm,[O(`div`,hm,[_(i.AppToolButton,{label:`复制包体数据`,"icon-name":`metric-copy`,"touch-label":`复制`,disabled:r.disabled,onClick:n[0]||=e=>i.emit(`copy`)},null,8,[`disabled`]),_(i.AppToolButton,{label:`导出包体 JSON`,"icon-name":`metric-entries`,"touch-label":`导出`,disabled:r.disabled,onClick:n[1]||=e=>i.emit(`exportJson`)},null,8,[`disabled`])]),v(O(`input`,{"onUpdate:modelValue":n[2]||=e=>i.query=e,class:`h-9 w-56 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 text-sm text-(--dashboard-text) outline-none transition placeholder:text-(--dashboard-text-soft) focus:border-(--dashboard-accent)`,placeholder:`搜索包名或类型`,type:`search`},null,512),[[j,i.query]]),_(i.AppSelect,{modelValue:i.typeFilter,"onUpdate:modelValue":n[3]||=e=>i.typeFilter=e,class:`w-28`,label:`筛选包类型`,options:i.typeFilterOptions},null,8,[`modelValue`,`options`]),_(i.AppSelect,{modelValue:i.budgetFilter,"onUpdate:modelValue":n[4]||=e=>i.budgetFilter=e,class:`w-28`,label:`筛选包预算状态`,options:i.budgetFilterOptions},null,8,[`modelValue`]),_(i.AppSelect,{modelValue:i.sortMode,"onUpdate:modelValue":n[5]||=e=>i.sortMode=e,class:`w-32`,label:`排序包`,options:i.sortOptions},null,8,[`modelValue`])])])}var _m=z(lm,[[`render`,gm]]),vm=L({__name:`PackageHealthPanel`,props:{health:{}},emits:[`inspectDuplicates`],setup(e,{expose:t,emit:n}){t();let r=n;function i(e){return e===`risk`?`text-rose-700 dark:text-rose-300`:e===`watch`?`text-amber-700 dark:text-amber-300`:`text-(--dashboard-accent)`}let a={emit:r,getStatusClassName:i,AppPanelHeader:Wo};return Object.defineProperty(a,"__isScriptSetup",{enumerable:!1,value:!0}),a}}),ym={class:`package-health rounded-lg border border-(--dashboard-border) bg-(--dashboard-panel) shadow-(--dashboard-shadow)`,"aria-label":`包体健康`},bm={class:`flex flex-wrap items-center justify-between gap-x-6 gap-y-3 border-b border-(--dashboard-border) px-4 py-3`},xm={class:`flex flex-wrap items-baseline gap-x-5 gap-y-2 text-[13px] tabular-nums`},Sm={class:`flex items-baseline gap-2`},Cm={class:`text-base font-semibold text-(--dashboard-text)`},wm={class:`flex items-baseline gap-2`},Tm={class:`flex items-baseline gap-2`},Em={key:0,class:`px-4 py-3 text-sm text-(--dashboard-text-soft)`},Dm={key:1,class:`package-health-items`},Om={key:0,class:`package-health-kind text-[13px] text-(--dashboard-text-soft)`},km={class:`package-health-detail text-[13px] leading-5 text-(--dashboard-text-soft)`},Am=[`aria-label`],jm={class:`package-health-risk text-[13px] leading-5 text-(--dashboard-text-muted)`},Mm=[`aria-label`,`onClick`],Nm={class:`min-w-0 underline underline-offset-4 [overflow-wrap:anywhere]`};function Pm(e,n,r,i,a,o){return f(),I(`section`,ym,[O(`header`,bm,[_(i.AppPanelHeader,{"icon-name":`metric-health`,title:`包体健康`}),O(`dl`,xm,[O(`div`,Sm,[n[0]||=O(`dt`,{class:`text-(--dashboard-text-soft)`},` 平均分 `,-1),O(`dd`,Cm,t(r.health.averageScore),1)]),O(`div`,wm,[n[1]||=O(`dt`,{class:`text-(--dashboard-text-soft)`},` 高风险 `,-1),O(`dd`,{class:x([`text-base font-semibold`,r.health.riskCount>0?i.getStatusClassName(`risk`):`text-(--dashboard-text-muted)`])},t(r.health.riskCount),3)]),O(`div`,Tm,[n[2]||=O(`dt`,{class:`text-(--dashboard-text-soft)`},` 需关注 `,-1),O(`dd`,{class:x([`text-base font-semibold`,r.health.watchCount>0?i.getStatusClassName(`watch`):`text-(--dashboard-text-muted)`])},t(r.health.watchCount),3)])])]),r.health.items.length===0?(f(),I(`p`,Em,` 当前没有包体样本 `)):(f(),I(`div`,Dm,[(f(!0),I(E,null,m(r.health.items.slice(0,3),e=>(f(),I(`article`,{key:e.id,class:`package-health-item`},[e.path||e.typeLabel!==e.label?(f(),I(`p`,Om,t(e.typeLabel),1)):C(``,!0),O(`p`,{class:x([`package-health-status text-xs`,i.getStatusClassName(e.status)])},[n[3]||=O(`span`,{class:`size-1.5 shrink-0 rounded-full bg-current`,"aria-hidden":`true`},null,-1),R(` `+t(e.statusLabel),1)],2),O(`h3`,{class:x([`package-health-name text-sm font-medium text-(--dashboard-text)`,{"font-mono":e.path}])},t(e.path??e.label),3),O(`p`,km,t(e.detail),1),O(`p`,{class:x([`package-health-score font-semibold tabular-nums`,e.status===`good`?`text-(--dashboard-text)`:i.getStatusClassName(e.status)]),"aria-label":`健康评分 ${e.score} 分,满分 100 分`},[R(t(e.score),1),n[4]||=O(`small`,{class:`ml-1 text-xs font-normal text-(--dashboard-text-soft)`},`/ 100`,-1)],10,Am),O(`p`,jm,[e.primaryRiskKind===`duplicates`?(f(),I(`button`,{key:0,type:`button`,class:`inline-flex min-h-8 max-w-full items-center gap-1 rounded-sm text-left text-(--dashboard-accent) hover:text-(--dashboard-text) focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-(--dashboard-accent) pointer-coarse:min-h-11`,"aria-label":`查看${e.label}的${e.primaryRisk}`,onClick:t=>i.emit(`inspectDuplicates`,e.id)},[O(`span`,Nm,t(e.primaryRisk),1),n[5]||=O(`span`,{class:`icon-[mdi--arrow-right] size-3.5 shrink-0`,"aria-hidden":`true`},null,-1)],8,Mm)):(f(),I(E,{key:1},[R(t(e.primaryRisk),1)],64))])]))),128))]))])}var Fm=z(vm,[[`render`,Pm],[`__scopeId`,`data-v-d5476e17`]]),Im=L({__name:`PackagesPanel`,props:{packageInsights:{},budgetWarnings:{},selectedTreemapMeta:{}},emits:[`inspectDuplicates`],setup(e,{expose:t,emit:n}){t();let r=e,i=n,{actionStatus:a,copyPackageReport:o,exportPackageJson:s,filteredPackageInsightCards:c,packageBudgetFilter:l,packageHealth:u,packageInsightCards:d,packageQuery:f,packageSortMode:p,packageTypeFilter:m,packageTypeOptions:h}=Zp(r),g={props:r,emit:i,actionStatus:a,copyPackageReport:o,exportPackageJson:s,filteredPackageInsightCards:c,packageBudgetFilter:l,packageHealth:u,packageInsightCards:d,packageQuery:f,packageSortMode:p,packageTypeFilter:m,packageTypeOptions:h,get surfaceStyles(){return Me},AppEmptyState:G,AppMetricTile:Ne,AppPackageFileTable:cm,AppPanelHeader:Wo,PackageExplorerToolbar:_m,PackageHealthPanel:Fm};return Object.defineProperty(g,"__isScriptSetup",{enumerable:!1,value:!0}),g}}),Lm={class:`grid min-h-0 min-w-0 gap-3 overflow-visible xl:h-full xl:grid-rows-[auto_minmax(0,1fr)] xl:overflow-hidden`},Rm={class:`grid min-w-0 gap-3`},zm={class:`grid max-h-[48rem] min-h-0 min-w-0 auto-rows-max gap-3 overflow-y-auto pr-1 xl:max-h-none xl:grid-cols-2`},Bm={class:`flex flex-wrap items-start justify-between gap-4`},Vm={class:`min-w-0`},Hm={class:`mt-2 text-sm text-(--dashboard-text-soft)`},Um={class:`max-w-[45%] shrink-0 text-right`},Wm={class:`text-xl font-semibold text-(--dashboard-text)`},Gm={class:`text-xs text-(--dashboard-text-soft)`},Km={class:`mt-1 text-xs text-(--dashboard-accent)`},qm={class:`mt-4 grid grid-cols-2 gap-2 text-sm md:grid-cols-4`},Jm={class:`mt-4`};function Ym(e,n,r,i,a,o){return f(),I(`section`,Lm,[O(`div`,Rm,[_(i.PackageHealthPanel,{health:i.packageHealth,onInspectDuplicates:n[0]||=e=>i.emit(`inspectDuplicates`,e)},null,8,[`health`]),O(`div`,{class:x([i.surfaceStyles({padding:`md`}),`grid gap-3`])},[_(i.AppPanelHeader,{"icon-name":`tab-packages`,title:`包体探索`,description:`${i.packageInsightCards.length} 个包体样本`},null,8,[`description`]),_(i.PackageExplorerToolbar,{"budget-filter":i.packageBudgetFilter,"onUpdate:budgetFilter":n[1]||=e=>i.packageBudgetFilter=e,query:i.packageQuery,"onUpdate:query":n[2]||=e=>i.packageQuery=e,"sort-mode":i.packageSortMode,"onUpdate:sortMode":n[3]||=e=>i.packageSortMode=e,"type-filter":i.packageTypeFilter,"onUpdate:typeFilter":n[4]||=e=>i.packageTypeFilter=e,"action-status":i.actionStatus,disabled:i.filteredPackageInsightCards.length===0,"filtered-count":i.filteredPackageInsightCards.length,"total-count":i.packageInsightCards.length,"type-options":i.packageTypeOptions,onCopy:i.copyPackageReport,onExportJson:i.exportPackageJson},null,8,[`budget-filter`,`query`,`sort-mode`,`type-filter`,`action-status`,`disabled`,`filtered-count`,`total-count`,`type-options`,`onCopy`,`onExportJson`])],2)]),O(`div`,zm,[i.filteredPackageInsightCards.length===0?(f(),D(i.AppEmptyState,{key:0,class:`xl:col-span-2`},{default:c(()=>[...n[5]||=[R(` 没有匹配当前筛选条件的包。 `,-1)]]),_:1})):C(``,!0),(f(!0),I(E,null,m(i.filteredPackageInsightCards,e=>(f(),I(`article`,{key:e.id,class:x([[i.surfaceStyles({padding:`md`}),e.selected?`border-(--dashboard-accent)`:``],`min-w-0 max-w-full border transition`])},[O(`div`,Bm,[O(`div`,Vm,[_(i.AppPanelHeader,{"icon-name":`tab-packages`,title:e.label,description:e.typeLabel},null,8,[`title`,`description`]),O(`p`,Hm,t(e.summaryText),1)]),O(`div`,Um,[O(`p`,Wm,t(e.totalBytesLabel),1),O(`p`,Gm,t(e.compressedBytesLabel),1),O(`p`,Km,t(e.budgetText),1)])]),O(`div`,qm,[(f(!0),I(E,null,m(e.metrics,e=>(f(),D(i.AppMetricTile,p({key:e.label},{ref_for:!0},e),null,16))),128))]),O(`div`,Jm,[_(i.AppPackageFileTable,{files:e.topFiles},null,8,[`files`])])],2))),128))])])}var Xm=z(Im,[[`render`,Ym]]),Zm=L({__name:`PrReviewChecklistPanel`,props:{checklist:{},copyStatus:{}},emits:[`copy`,`select`],setup(e,{expose:t,emit:n}){t();let r=n;function i(e){return e===`blocked`?`border-rose-200 bg-rose-100 text-rose-700 dark:border-rose-500/30 dark:bg-rose-500/12 dark:text-rose-300`:e===`review`?`border-amber-200 bg-amber-100 text-amber-700 dark:border-amber-500/30 dark:bg-amber-500/12 dark:text-amber-300`:`border-emerald-200 bg-emerald-100 text-emerald-700 dark:border-emerald-500/30 dark:bg-emerald-500/12 dark:text-emerald-300`}function a(e){return e===`critical`?`border-rose-200 bg-rose-50 text-rose-700 dark:border-rose-500/25 dark:bg-rose-500/10 dark:text-rose-300`:e===`warning`?`border-amber-200 bg-amber-50 text-amber-700 dark:border-amber-500/25 dark:bg-amber-500/10 dark:text-amber-300`:e===`success`?`border-emerald-200 bg-emerald-50 text-emerald-700 dark:border-emerald-500/25 dark:bg-emerald-500/10 dark:text-emerald-300`:`border-(--dashboard-border) bg-(--dashboard-panel-muted) text-(--dashboard-text-muted)`}let o={emit:r,getStatusClassName:i,getToneClassName:a,AppMetricTile:Ne,AppPanelHeader:Wo,AppToolButton:K};return Object.defineProperty(o,"__isScriptSetup",{enumerable:!1,value:!0}),o}}),Qm={class:`grid min-h-0 min-w-0 gap-2 overflow-visible xl:h-full xl:grid-rows-[auto_minmax(0,1fr)] xl:overflow-hidden`},$m={class:`rounded-lg border border-(--dashboard-border) bg-(--dashboard-panel) p-4 shadow-(--dashboard-shadow)`},eh={class:`flex min-w-0 flex-wrap items-center gap-2`},th={key:0,class:`text-xs font-medium text-(--dashboard-accent)`},nh={class:`mt-3 grid gap-3 lg:grid-cols-[minmax(0,0.82fr)_minmax(0,1fr)]`},rh={class:`rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-3`},ih={class:`mt-3 text-lg font-semibold text-(--dashboard-text)`},ah={class:`mt-1 text-xs leading-5 text-(--dashboard-text-soft)`},oh={class:`grid grid-cols-2 gap-2 md:grid-cols-4`},sh={class:`grid max-h-[40rem] min-h-0 min-w-0 gap-2 overflow-y-auto pr-1 xl:max-h-none xl:grid-cols-3 xl:overflow-hidden xl:pr-0`},ch={class:`text-sm font-semibold text-(--dashboard-text)`},lh={class:`mt-1 text-xs leading-5 text-(--dashboard-text-soft)`},uh={class:`mt-3 min-h-0 overflow-y-auto pr-1`},dh={key:0,class:`rounded-md border border-dashed border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 py-4 text-sm text-(--dashboard-text-muted)`},fh=[`onClick`],ph={class:`mt-0.5 flex h-4 w-4 items-center justify-center rounded border border-current text-[10px] leading-none`},mh={class:`min-w-0`},hh={class:`block text-sm font-medium text-(--dashboard-text)`},gh={class:`mt-1 line-clamp-2 block text-xs leading-5 text-(--dashboard-text-muted)`};function _h(e,n,r,i,a,o){return f(),I(`section`,Qm,[O(`div`,$m,[_(i.AppPanelHeader,{class:`min-w-0 flex-wrap`,"icon-name":`metric-bookmark`,title:`PR 风险清单`},{meta:c(()=>[O(`div`,eh,[r.copyStatus?(f(),I(`span`,th,t(r.copyStatus),1)):C(``,!0),_(i.AppToolButton,{label:`复制 PR 风险清单`,"icon-name":`metric-copy`,"touch-label":`复制`,onClick:n[0]||=e=>i.emit(`copy`)})])]),_:1}),O(`div`,nh,[O(`div`,rh,[O(`span`,{class:x([`inline-flex rounded-full border px-2.5 py-1 text-[11px] font-medium uppercase tracking-[0.16em]`,i.getStatusClassName(r.checklist.status)])},t(r.checklist.label),3),O(`p`,ih,t(r.checklist.headline),1),O(`p`,ah,t(r.checklist.description),1)]),O(`div`,oh,[(f(!0),I(E,null,m(r.checklist.metrics,e=>(f(),D(i.AppMetricTile,p({key:e.label},{ref_for:!0},e),null,16))),128))])])]),O(`div`,sh,[(f(!0),I(E,null,m(r.checklist.lanes,e=>(f(),I(`section`,{key:e.key,class:`grid min-h-[18rem] grid-rows-[auto_minmax(0,1fr)] rounded-lg border border-(--dashboard-border) bg-(--dashboard-panel) p-4 shadow-(--dashboard-shadow)`},[O(`div`,null,[O(`p`,ch,t(e.title),1),O(`p`,lh,t(e.description),1)]),O(`div`,uh,[e.items.length===0?(f(),I(`div`,dh,t(e.emptyText),1)):C(``,!0),(f(!0),I(E,null,m(e.items,e=>(f(),I(`button`,{key:e.id,type:`button`,class:x([`mb-2 grid w-full grid-cols-[1rem_minmax(0,1fr)] gap-2 rounded-md border px-3 py-2.5 text-left transition hover:border-(--dashboard-border-strong)`,i.getToneClassName(e.tone)]),onClick:t=>i.emit(`select`,e)},[O(`span`,ph,t(e.checked?`✓`:``),1),O(`span`,mh,[O(`span`,hh,t(e.title),1),O(`span`,gh,t(e.detail),1)])],10,fh))),128))])]))),128))])])}var vh=z(Zm,[[`render`,_h]]);function yh(e){let t=new Map(e.packages.map(e=>[e.id,e])),n=new Map,r=new Map;for(let t of e.packages)for(let e of t.files){n.set(J(t.id,e.file),{pkg:t,file:e});for(let n of e.modules??[])r.set(Y(t.id,e.file,n.id),n)}return{packages:t,files:n,modules:new Map(e.modules.map(e=>[e.id,e])),modulesByNodeId:r}}function bh(e,t){let n=new Map;function r(e){for(let t of e)n.set(t.meta.nodeId,t),t.children&&r(t.children)}return r(t),{...e,tree:n}}function xh(e,t){return t.kind===`package`?void 0:e.files.get(J(t.packageId,t.fileName))}function Sh(e,t){if(t.kind===`module`)return e.modulesByNodeId.get(t.nodeId)}function Ch(e,{pkg:t,file:n}){let r=J(t.id,n.file),i=e.tree.get(r)?.meta;return i?.kind===`file`?i:{kind:`file`,nodeId:r,packageId:t.id,packageLabel:t.label,fileName:n.file,from:n.from,type:n.type,bytes:n.size,childCount:n.type===`chunk`?n.modules?.length??0:Number(!!n.source)}}function wh(e){return e===void 0?`未知(未记录)`:e===0?`0 B`:U(e)}function Th(e){if(!e)return{text:`未知(未记录)`,bytes:void 0};let t=0,n=0;for(let r of e.files)r.size===void 0?n++:t+=r.size;return{bytes:n?void 0:t,text:n?`已知 ${wh(t)} · ${n} 个产物体积未知`:wh(t)}}function Eh(e,t){if(t.kind===`package`)return Th(e.packages.get(t.packageId));let n=t.kind===`module`?Sh(e,t)?.bytes:xh(e,t)?.file.size;return{bytes:n,text:wh(n)}}function Dh(e,t){return t.kind===`package`?t.packageId:t.kind===`module`?Sh(e,t)?.source||t.source:t.kind===`asset`&&xh(e,t)?.file.source||t.fileName}function Oh(e){return e.kind===`package`?B(e.packageType):e.kind===`module`?`模块 · ${de(e.sourceType)}`:e.kind===`asset`?`资源来源`:e.type===`chunk`?`代码产物`:`资源产物`}function kh(e,t){let n=Eh(e,t);return{id:t.nodeId,path:Dh(e,t),description:t.kind===`package`?t.packageLabel:`${Oh(t)} · ${t.packageLabel}`,size:`${n.text}${t.kind===`module`&&n.bytes!==void 0?` · 模块贡献`:``}`,bytes:n.bytes,meta:t}}function Ah(e,t){let n=kh(e,Ch(e,t));return e.tree.has(n.id)||(n.description+=` · 当前筛选外`),n}function jh(e){return e.sort((e,t)=>(t.bytes??-1)-(e.bytes??-1)||e.path.localeCompare(t.path)||e.id.localeCompare(t.id))}function Mh(e,t){let n=xh(e,t)?.file,r=Sh(e,t);return t.kind===`package`?{available:!1,message:`选择产物或模块后查看源码与产物。`}:t.kind===`module`?{available:!!(r&&[`src`,`workspace`,`plugin`].includes(r.sourceType)&&r.source),message:r?.sourceType===`node_modules`?`依赖模块暂无可读取的源码入口。`:`分析报告未记录此模块的可读取源码。`}:{available:!!(n?.source||t.kind===`file`&&n?.modules?.some(e=>[`src`,`workspace`,`plugin`].includes(e.sourceType)&&e.source)),message:`分析报告未记录此产物的可读取源码。`}}function Nh(e){let t=new Map;for(let n of e.files.values()){if(n.file.type!==`chunk`)continue;let e=qe(n.file.file),r=t.get(e);r?r.push(n):t.set(e,[n])}let n=new Map,r=new Map;for(let i of e.files.values()){if(i.file.type!==`chunk`)continue;let e=[];for(let n of[`static`,`dynamic`]){let a=n===`static`?i.file.imports:i.file.dynamicImports;for(let o of new Set(a)){let a=/^(?:[a-z][\w+.-]*:|\/\/)/i.test(o)?[]:t.get(Je(i.file.file,o))??[],s=a.filter(e=>e.pkg.id===i.pkg.id),c=s.length?s:a,l=c.length===1?c[0]:void 0,u={source:i,target:l,path:o,kind:n,unresolved:l?void 0:c.length>1?`同名产物存在歧义,无法定位`:`外部或未输出的产物`};if(e.push(u),l){let e=J(l.pkg.id,l.file.file),t=r.get(e);t?t.push(u):r.set(e,[u])}}}n.set(J(i.pkg.id,i.file.file),e)}return{outgoing:n,incoming:r}}function Ph(e,t){let n=Sh(e,t);if(!n)return[];let r=new Map,i=xh(e,t);if(i){let t=Ah(e,i);r.set(t.id,t)}for(let t of e.modules.get(n.id)?.packages??[])for(let n of t.files){let i=J(t.packageId,n),a=e.files.get(i);r.set(i,a?Ah(e,a):{id:i,path:n,description:`${e.packages.get(t.packageId)?.label??t.packageId} · 报告未包含产物详情`,size:`未知(未记录)`})}return jh([...r.values()])}function Fh(e,t,n){return[`outgoing`,`incoming`].flatMap(r=>[`static`,`dynamic`].map(i=>{let a=(t[r].get(n.nodeId)??[]).filter(e=>e.kind===i).map(t=>{let n=r===`incoming`?t.source:t.target,a=`${r}\u0000${i}\u0000${t.source.pkg.id}\u0000${t.source.file.file}\u0000${t.path}`;if(!n)return{id:a,path:t.path,description:t.unresolved??``,size:`体积未知`};let o=Ah(e,n);return{...o,id:a,description:`${o.description} · import: ${t.path}`}});return{id:`${r}-${i}`,title:`${r===`incoming`?`被引用 · `:`引用 · `}${i===`static`?`静态 import`:`动态 import`}`,empty:r===`incoming`?`报告中没有可定位到此产物的引用。`:`报告未记录此类引用。`,rows:jh(a)}}))}function Ih(e,t,n,r){if(!r||r.kind===`package`||r.kind===`file`){let i=r?e.tree.get(r.nodeId)?.children??[]:n,a=[{id:`children`,title:r?r.kind===`package`?`产物文件`:`模块与资源`:`包`,empty:!r||r.kind===`package`?`当前筛选下没有可浏览的节点。请调整图表筛选。`:`当前筛选下无子节点,或报告未记录模块 / 资源来源。`,rows:jh(i.map(t=>kh(e,t.meta)))}];return r?.kind===`file`&&r.type===`chunk`&&a.push(...Fh(e,t,r)),a}if(r.kind===`module`)return[{id:`locations`,title:`所在产物 · 跨包位置`,empty:`报告未记录此模块的产物位置。`,rows:Ph(e,r)}];let i=xh(e,r);return[{id:`locations`,title:`所在产物`,empty:`报告未包含此资源的产物详情。`,rows:i?[Ah(e,i)]:[]}]}var Lh={outgoing:new Map,incoming:new Map};function Rh(e){return e.map(e=>JSON.stringify(e)).sort().join(`
14
+ `)}function zh(e,t){let n=[];if(!t)for(let t of e.packages.values()){if(!t.files.length)continue;let e=0,r=0;for(let n of t.files)n.size===void 0?r++:e+=n.size;n.push([Er(t.id),t.label,e,r])}else if(t.kind===`package`){let r=e.packages.get(t.packageId);if(r)for(let e of r.files)n.push([J(r.id,e.file),e.file,r.label,e.type,e.size])}else if(t.kind===`file`){let r=e.files.get(t.nodeId);if(r){let{pkg:e,file:t}=r;if(t.type===`chunk`)for(let r of t.modules??[])n.push([Y(e.id,t.file,r.id),r.source,e.label,r.sourceType,r.bytes]);else t.source&&n.push([Dr(e.id,t.file),t.source,e.label,t.size])}}return Rh(n)}function Bh(e,t,n){let r=new Map;if((!t||t.kind===`package`||t.kind===`file`)&&(r.set(`children`,zh(e,t)),!t||t.kind===`package`))return r;let i={...e,tree:new Map},a=t,o=Lh;if(t.kind===`file`){let s=e.files.get(t.nodeId);if(s?.file.type!==`chunk`)return r;a=Ch(i,s),o=n()}for(let e of Ih(i,o,[],a))e.id!==`children`&&r.set(e.id,Rh(e.rows.map(e=>[e.id,e.path,e.description,e.bytes,e.meta?.nodeId])));return r}function Vh(e){let t=M(()=>e.selectedMeta()?.nodeId??null),n=s(new Map);return y([e.report,t],([t,r],i)=>{r!==i[1]&&n.clear();let a=Bh(t,e.selectedMeta(),e.imports);for(let[e,t]of n){let n=a.get(e);!t.open&&n!==t.signature&&(t.unread=!0),t.signature=n}for(let[e,t]of a)n.has(e)||n.set(e,{open:!0,unread:!1,signature:t})},{immediate:!0}),{isOpen:e=>n.get(e)?.open??!0,hasUnread:e=>n.get(e)?.unread??!1,setOpen(e,t){let r=n.get(e);r&&(r.open=t,t&&(r.unread=!1))}}}var Hh=L({__name:`TreemapDetailGroup`,props:{section:{},open:{type:Boolean},unread:{type:Boolean},searching:{type:Boolean}},emits:[`toggle`,`selectNode`],setup(e,{expose:t,emit:n}){t();let i=e,a=n,o=d(),s=r(`group`);function c(){s.value&&a(`toggle`,i.section.id,s.value)}let l={props:i,emit:a,contentId:o,group:s,toggle:c};return Object.defineProperty(l,"__isScriptSetup",{enumerable:!1,value:!0}),l}}),Uh=[`aria-label`],Wh=[`aria-expanded`,`aria-controls`],Gh={class:`min-w-0 flex-1 [overflow-wrap:anywhere]`},Kh={key:0,role:`status`,class:`shrink-0 text-[11px] font-medium text-(--dashboard-accent)`},qh={class:`shrink-0 font-normal text-(--dashboard-text-soft) tabular-nums`},Jh=[`id`,`hidden`],Yh={key:0,class:`min-w-0 divide-y divide-(--dashboard-border)`},Xh=[`title`,`onClick`],Zh={class:`block font-mono text-xs leading-5 [overflow-wrap:anywhere]`},Qh={class:`mt-1 block text-[11px] leading-4 text-(--dashboard-text-soft) [overflow-wrap:anywhere]`},$h={class:`mt-1 block text-xs text-(--dashboard-text-soft) tabular-nums`},eg={key:1,class:`px-1 py-2`},tg={class:`font-mono text-xs leading-5 [overflow-wrap:anywhere]`},ng={class:`mt-1 text-[11px] leading-5 text-(--dashboard-text-soft) [overflow-wrap:anywhere]`},rg={key:1,class:`mt-2 text-xs leading-5 text-(--dashboard-text-soft)`};function ig(e,n,r,i,a,o){return f(),I(`section`,{ref:`group`,"aria-label":r.section.title,class:`mt-4 min-w-0`},[O(`h4`,null,[O(`button`,{type:`button`,class:`flex min-h-11 w-full items-center gap-2 rounded-sm px-1 text-left text-xs font-semibold hover:bg-(--dashboard-panel-muted) focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-(--dashboard-accent)`,"aria-expanded":r.open,"aria-controls":i.contentId,onClick:i.toggle},[O(`span`,{class:x([`icon-[mdi--chevron-right] size-4 shrink-0`,{"rotate-90":r.open}]),"aria-hidden":`true`},null,2),O(`span`,Gh,t(r.section.title),1),r.unread?(f(),I(`span`,Kh,`有更新`)):C(``,!0),O(`span`,qh,t(r.section.rows.length),1)],8,Wh)]),O(`div`,{id:i.contentId,hidden:!r.open},[r.section.rows.length?(f(),I(`ul`,Yh,[(f(!0),I(E,null,m(r.section.rows,e=>(f(),I(`li`,{key:e.id,class:`min-w-0`},[e.meta?(f(),I(`button`,{key:0,type:`button`,title:e.path,class:`block min-h-11 w-full min-w-0 rounded-sm px-1 py-2 text-left hover:bg-(--dashboard-accent-soft) focus-visible:outline-2 focus-visible:outline-offset-1 focus-visible:outline-(--dashboard-accent)`,onClick:t=>i.emit(`selectNode`,e.meta)},[O(`span`,Zh,t(e.path),1),O(`span`,Qh,t(e.description),1),O(`span`,$h,t(e.size),1)],8,Xh)):(f(),I(`div`,eg,[O(`p`,tg,t(e.path),1),O(`p`,ng,t(e.description)+` · `+t(e.size),1)]))]))),128))])):(f(),I(`p`,rg,t(r.searching?`此分组没有匹配结果。`:r.section.empty),1))],8,Jh)],8,Uh)}var ag=z(Hh,[[`render`,ig]]),og=L({__name:`TreemapSelectionPanel`,props:{result:{},nodes:{},selectedMeta:{}},emits:[`selectNode`,`openSource`],setup(e,{expose:t,emit:n}){t();let r=e,i=n,a=P(``),o=P(null),s=P(null),c=P(null),l=M(()=>yh(r.result)),u=M(()=>bh(l.value,r.nodes)),d=M(()=>Nh(l.value)),f=Vh({report:()=>l.value,imports:()=>d.value,selectedMeta:()=>r.selectedMeta}),p=M(()=>{let e=r.selectedMeta;return e?{path:Dh(u.value,e),kind:Oh(e),size:Eh(u.value,e),module:Sh(u.value,e),source:Mh(u.value,e),outsideFilter:!u.value.tree.has(e.nodeId)}:null}),m=M(()=>!r.selectedMeta||!p.value?`按包浏览产物与模块`:r.selectedMeta.kind===`package`?r.selectedMeta.packageLabel:p.value.path.split(/[\\/]/).pop()||p.value.path),h=M(()=>Ih(u.value,d.value,r.nodes,r.selectedMeta)),g=M(()=>{let e=a.value.trim().toLowerCase();return h.value.map(t=>({...t,rows:e?t.rows.filter(t=>`${t.path} ${t.description}`.toLowerCase().includes(e)):t.rows}))}),_=M(()=>g.value.reduce((e,t)=>e+t.rows.length,0)),v=M(()=>h.value.reduce((e,t)=>e+t.rows.length,0));y(()=>r.selectedMeta?.nodeId,()=>{a.value=``});function b(e){for(let t=e;t;t=t.parentElement)if(/auto|scroll/.test(getComputedStyle(t).overflowY))return t;return document.scrollingElement instanceof HTMLElement?document.scrollingElement:document.documentElement}function x(e){if(e===document.scrollingElement)return{top:0,bottom:window.innerHeight};let t=e.getBoundingClientRect();return{top:Math.max(0,t.top+e.clientTop),bottom:Math.min(window.innerHeight,t.top+e.clientTop+e.clientHeight)}}let S=0;async function C(e,t){let n=++S,i=r.selectedMeta?.nodeId,a=b(t),o=a.scrollTop,c=!f.isOpen(e);if(f.setOpen(e,c),!c||(await A(),n!==S||i!==r.selectedMeta?.nodeId||!t.isConnected||!f.isOpen(e)||Math.abs(a.scrollTop-o)>1))return;let l=x(a),u=t.getBoundingClientRect();if(u.bottom<=l.bottom)return;let d=Math.max(l.top,s.value?.getBoundingClientRect().bottom??l.top);a.scrollTo({top:a.scrollTop+u.top-d,behavior:`instant`})}async function w(e){if(S++,i(`selectNode`,e),await A(),c.value?.focus({preventScroll:!0}),o.value){let e=b(o.value),t=e===o.value?0:e.scrollTop+o.value.getBoundingClientRect().top-x(e).top;e.scrollTo({top:t,behavior:`instant`})}}let T={props:r,emit:i,query:a,panel:o,identityHeader:s,heading:c,report:l,context:u,imports:d,sectionState:f,details:p,identityLabel:m,sections:h,filteredSections:g,visibleCount:_,totalCount:v,findScrollContainer:b,getScrollBounds:x,get disclosureRequest(){return S},set disclosureRequest(e){S=e},toggleSection:C,selectNode:w,get formatSignedBytes(){return _i},get formatDetailBytes(){return wh},TreemapDetailGroup:ag};return Object.defineProperty(T,"__isScriptSetup",{enumerable:!1,value:!0}),T}}),sg={ref:`panel`,"aria-label":`节点详情与导航`,class:`min-w-0 text-sm text-(--dashboard-text) [&_:is(button,input)]:scroll-mt-24`},cg={ref:`identityHeader`,class:`sticky top-0 z-10 -mx-4 -mt-4 border-b border-(--dashboard-border) bg-(--dashboard-panel) px-4 py-3`},lg={ref:`heading`,tabindex:`-1`,class:`flex min-w-0 items-baseline gap-2 rounded-sm text-sm font-semibold focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-(--dashboard-accent)`},ug={class:`shrink-0`},dg=[`title`],fg=[`title`],pg={class:`mt-4 min-w-0 border-b border-(--dashboard-border) pb-4`},mg={class:`mt-2 font-mono text-xs leading-5 [overflow-wrap:anywhere]`},hg={class:`mt-3 grid min-w-0 grid-cols-[auto_minmax(0,1fr)] gap-x-3 gap-y-2 text-xs leading-5`},gg={class:`[overflow-wrap:anywhere]`},_g={class:`[overflow-wrap:anywhere]`},vg={class:`font-mono [overflow-wrap:anywhere]`},yg={class:`font-mono [overflow-wrap:anywhere]`},bg={class:`text-(--dashboard-text-soft)`},xg={class:`tabular-nums [overflow-wrap:anywhere]`},Sg={class:`tabular-nums`},Cg={class:`[overflow-wrap:anywhere]`},wg={class:`tabular-nums`},Tg={key:0,class:`mt-3 text-xs leading-5 text-(--dashboard-text-soft)`},Eg={key:1,class:`mt-3 text-xs leading-5 text-(--dashboard-text-soft)`},Dg={key:2,class:`mt-3 text-xs leading-5 text-(--dashboard-text-soft)`},Og={key:4,class:`mt-3 text-xs leading-5 text-(--dashboard-text-soft)`},kg={key:1,class:`mt-2 text-xs leading-5 text-(--dashboard-text-soft)`},Ag={class:`mt-4 min-w-0`},jg={class:`block text-xs text-(--dashboard-text-soft)`},Mg={"aria-live":`polite`,class:`mt-2 text-xs text-(--dashboard-text-soft)`},Ng={key:0,class:`mt-3 text-xs leading-5 text-(--dashboard-text-soft)`},Pg={key:1,class:`mt-4 text-[11px] leading-5 text-(--dashboard-text-soft)`};function Fg(e,n,r,i,a,o){return f(),I(`section`,sg,[O(`header`,cg,[O(`h3`,lg,[O(`span`,ug,t(i.details?`节点详情`:`浏览构建产物`),1),r.selectedMeta?(f(),I(`span`,{key:0,class:`truncate text-xs font-normal text-(--dashboard-text-soft)`,title:r.selectedMeta.packageLabel},t(r.selectedMeta.packageLabel),9,dg)):C(``,!0)],512),O(`p`,{class:`mt-1 truncate font-mono text-xs text-(--dashboard-text-muted)`,title:i.details?.path},t(i.identityLabel),9,fg)],512),O(`div`,pg,[r.selectedMeta&&i.details?(f(),I(E,{key:0},[O(`p`,mg,t(i.details.path),1),O(`dl`,hg,[n[7]||=O(`dt`,{class:`text-(--dashboard-text-soft)`},` 类型 `,-1),O(`dd`,gg,t(i.details.kind),1),n[8]||=O(`dt`,{class:`text-(--dashboard-text-soft)`},` 所属包 `,-1),O(`dd`,_g,t(r.selectedMeta.packageLabel)+` · `+t(r.selectedMeta.packageId),1),r.selectedMeta.kind===`module`||r.selectedMeta.kind===`asset`?(f(),I(E,{key:0},[n[2]||=O(`dt`,{class:`text-(--dashboard-text-soft)`},` 所在产物 `,-1),O(`dd`,vg,t(r.selectedMeta.fileName),1)],64)):C(``,!0),i.details.module&&i.details.module.id!==i.details.path?(f(),I(E,{key:1},[n[3]||=O(`dt`,{class:`text-(--dashboard-text-soft)`},` 模块 ID `,-1),O(`dd`,yg,t(i.details.module.id),1)],64)):C(``,!0),O(`dt`,bg,t(r.selectedMeta.kind===`module`?`模块贡献`:`实际产物体积`),1),O(`dd`,xg,t(i.details.size.text),1),i.details.module?.originalBytes===void 0?C(``,!0):(f(),I(E,{key:2},[n[4]||=O(`dt`,{class:`text-(--dashboard-text-soft)`},` 原始模块体积 `,-1),O(`dd`,Sg,t(i.formatDetailBytes(i.details.module.originalBytes)),1)],64)),r.selectedMeta.colorLabel?(f(),I(E,{key:3},[n[5]||=O(`dt`,{class:`text-(--dashboard-text-soft)`},` 着色依据 `,-1),O(`dd`,Cg,t(r.selectedMeta.colorLabel),1)],64)):C(``,!0),r.selectedMeta.deltaBytes===void 0?C(``,!0):(f(),I(E,{key:4},[n[6]||=O(`dt`,{class:`text-(--dashboard-text-soft)`},` 相对基线 `,-1),O(`dd`,wg,t(i.formatSignedBytes(r.selectedMeta.deltaBytes)),1)],64))]),r.selectedMeta.kind===`module`?(f(),I(`p`,Tg,` 模块贡献来自打包器记录,不等于独立产物大小。缺失时图块面积使用原始模块体积估算;两者均缺失时仅作占位。 `)):C(``,!0),r.selectedMeta.kind===`module`&&!i.details.module?(f(),I(`p`,Eg,` 报告中未找到与此节点 ID 匹配的模块,无法确认完整源码路径与跨包位置。 `)):C(``,!0),i.details.outsideFilter?(f(),I(`p`,Dg,` 此节点不在当前图表筛选中;详情仍使用完整分析报告。调整筛选可在图中查看。 `)):C(``,!0),r.selectedMeta.kind!==`package`&&i.details.source.available?(f(),I(`button`,{key:3,type:`button`,class:`mt-3 min-h-9 rounded-md border border-(--dashboard-border) px-3 text-xs font-medium text-(--dashboard-accent) hover:bg-(--dashboard-accent-soft) focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-(--dashboard-accent)`,onClick:n[0]||=e=>i.emit(`openSource`,r.selectedMeta)},` 查看源码与产物 `)):(f(),I(`p`,Og,t(i.details.source.message),1))],64)):(f(),I(`p`,kg,` 从包进入产物、模块或资源;下方按钮与图块选择同步,无需操作画布。 `))]),O(`div`,Ag,[O(`label`,jg,[n[9]||=R(` 搜索当前列表 `,-1),v(O(`input`,{"onUpdate:modelValue":n[1]||=e=>i.query=e,type:`search`,autocomplete:`off`,placeholder:`输入路径、包名或引用名称`,class:`mt-2 min-h-9 w-full min-w-0 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel) px-3 text-xs text-(--dashboard-text) placeholder:text-(--dashboard-text-soft) focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-(--dashboard-accent)`},null,512),[[j,i.query]])]),O(`p`,Mg,t(i.visibleCount)+` / `+t(i.totalCount)+` 项 · 按已记录体积从大到小 `,1),i.query.trim()&&!i.visibleCount?(f(),I(`p`,Ng,` 当前列表没有匹配结果;清空搜索可查看全部条目。 `)):C(``,!0),(f(!0),I(E,null,m(i.filteredSections,e=>(f(),D(i.TreemapDetailGroup,{key:e.id,section:e,open:i.sectionState.isOpen(e.id),unread:i.sectionState.hasUnread(e.id),searching:!!i.query.trim(),onToggle:i.toggleSection,onSelectNode:i.selectNode},null,8,[`section`,`open`,`unread`,`searching`]))),128)),r.selectedMeta?.kind===`file`||r.selectedMeta?.kind===`module`?(f(),I(`p`,Pg,` 引用仅来自构建产物的静态 / 动态 import 记录;模块位置不是源码级依赖关系。 `)):C(``,!0)])],512)}var Ig=z(og,[[`render`,Fg]]),Lg=`inline-flex min-h-8 items-center justify-center rounded px-2 text-xs text-(--dashboard-text-muted) hover:bg-(--dashboard-panel-muted) hover:text-(--dashboard-accent) focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-(--dashboard-accent) disabled:cursor-not-allowed disabled:opacity-50`,Rg=L({__name:`TreemapCard`,props:{bindChartRef:{type:Function},filterMode:{},filterOptions:{},canUseSelectedPackageFilter:{type:Boolean},hasComparison:{type:Boolean},comparisonLabel:{},colorMode:{},colorDescription:{},legend:{},nodes:{},path:{},result:{},selectedMeta:{},isEmpty:{type:Boolean}},emits:[`resetFocus`,`selectNode`,`openSource`,`inspectProblem`,`updateFilterMode`,`updateColorMode`],setup(e,{expose:t,emit:n}){t();let r=e,i=n,a=M(()=>r.filterOptions.map(e=>({...e,label:e.value===`growth`&&!r.hasComparison?`增长(无比较快照)`:e.label,disabled:e.value===`selected-package`&&!r.canUseSelectedPackageFilter||e.value===`growth`&&!r.hasComparison}))),o=M(()=>[{value:`package`,label:`所属分包`},{value:`source`,label:`模块来源`},{value:`duplicates`,label:`重复打包`},{value:`delta`,label:r.hasComparison?`构建增量`:`构建增量(无比较快照)`,disabled:!r.hasComparison}]),s=M(()=>r.nodes.reduce((e,t)=>e+t.value,0));function c(e){r.bindChartRef(e instanceof Element?e:null)}let l={props:r,emit:i,filters:a,colorOptions:o,visibleBytes:s,buttonClass:Lg,handleChartRef:c,get formatBytes(){return U},AppSelect:be,TreemapSelectionPanel:Ig};return Object.defineProperty(l,"__isScriptSetup",{enumerable:!1,value:!0}),l}}),zg={class:`flex min-h-0 flex-col overflow-clip rounded-lg border border-(--dashboard-border) bg-(--dashboard-panel) xl:h-full`,"aria-label":`体积地图工作台`},Bg={class:`flex flex-wrap items-center gap-x-4 gap-y-2 border-b border-(--dashboard-border) px-3 py-2`},Vg={class:`mr-auto text-sm font-semibold`},Hg={class:`ml-1 font-mono text-xs font-normal text-(--dashboard-text-muted)`},Ug={class:`flex min-w-0 flex-wrap items-center gap-1`},Wg={class:`flex items-center gap-1`,"aria-label":`分析问题`},Gg=[`disabled`,`title`],Kg={class:`grid min-h-0 flex-1 xl:grid-cols-[minmax(0,1fr)_20rem]`},qg={class:`flex min-h-0 flex-col`},Jg={class:`flex min-h-10 flex-wrap items-center gap-1 border-b border-(--dashboard-border) px-2 py-1`,"aria-label":`体积地图下钻路径`},Yg=[`aria-current`],Xg=[`aria-current`,`title`,`onClick`],Zg={class:`relative min-h-[24rem] flex-1 xl:min-h-0`},Qg={key:0,class:`absolute inset-0 flex flex-col items-center justify-center gap-3 bg-(--dashboard-panel) p-6 text-center`,role:`status`},$g={class:`text-sm text-(--dashboard-text-muted)`},e_={class:`flex flex-wrap items-center gap-x-4 gap-y-1 border-t border-(--dashboard-border) px-3 py-2 text-[11px] text-(--dashboard-text-muted)`},t_={class:`w-full`},n_={key:0};function r_(e,n,r,i,a,o){return f(),I(`section`,zg,[O(`div`,Bg,[O(`h2`,Vg,[n[8]||=R(` 体积地图 `,-1),O(`span`,Hg,t(i.formatBytes(i.visibleBytes)),1)]),O(`div`,Ug,[_(i.AppSelect,{"model-value":r.filterMode,options:i.filters,label:`显示`,size:`sm`,variant:`toolbar`,"onUpdate:modelValue":n[0]||=e=>i.emit(`updateFilterMode`,e)},null,8,[`model-value`,`options`]),_(i.AppSelect,{"model-value":r.colorMode,options:i.colorOptions,label:`着色`,size:`sm`,variant:`toolbar`,"onUpdate:modelValue":n[1]||=e=>i.emit(`updateColorMode`,e)},null,8,[`model-value`,`options`])]),O(`div`,Wg,[O(`button`,{type:`button`,class:x(i.buttonClass),onClick:n[2]||=e=>i.emit(`inspectProblem`,`duplicates`)},` 查重复 `),O(`button`,{type:`button`,class:x(i.buttonClass),disabled:!r.hasComparison,title:r.hasComparison?`对比${r.comparisonLabel},只看增长部分`:`需要上次构建或选定基线快照`,onClick:n[3]||=e=>i.emit(`inspectProblem`,`growth`)},` 看增长 `,8,Gg)])]),O(`div`,Kg,[O(`div`,qg,[O(`nav`,Jg,[O(`button`,{type:`button`,class:x(i.buttonClass),"aria-current":r.path.length===0?`location`:void 0,onClick:n[4]||=e=>i.emit(`resetFocus`)},` 全部产物 `,8,Yg),(f(!0),I(E,null,m(r.path,(e,a)=>(f(),I(E,{key:e.id},[n[9]||=O(`span`,{class:`text-xs text-(--dashboard-text-soft)`,"aria-hidden":`true`},`/`,-1),O(`button`,{type:`button`,class:x([`max-w-full break-all text-left`,[i.buttonClass,a===r.path.length-1?`font-medium text-(--dashboard-accent)`:void 0]]),"aria-current":a===r.path.length-1?`location`:void 0,title:e.meta.kind===`package`?e.meta.packageLabel:e.meta.kind===`file`?e.meta.fileName:e.meta.source,onClick:t=>i.emit(`selectNode`,e.meta)},t(e.name),11,Xg)],64))),128))]),O(`div`,Zg,[O(`div`,{ref:i.handleChartRef,class:`absolute inset-0`,role:`img`,"aria-label":`构建产物体积图。可点击节点下钻,也可使用节点详情中的列表选择。`},null,512),r.isEmpty?(f(),I(`div`,Qg,[O(`p`,$g,t(r.filterMode===`growth`&&!r.hasComparison?`没有可比较的构建快照。`:`当前条件下没有匹配的产物。`),1),O(`button`,{type:`button`,class:x(i.buttonClass),onClick:n[5]||=e=>i.emit(`updateFilterMode`,`all`)},` 显示全部产物 `)])):C(``,!0)]),O(`div`,e_,[(f(!0),I(E,null,m(r.legend,e=>(f(),I(`span`,{key:e.label,class:`inline-flex items-center gap-1.5`},[O(`span`,{class:`h-2.5 w-2.5 shrink-0 rounded-sm`,style:h({backgroundColor:e.color}),"aria-hidden":`true`},null,4),R(` `+t(e.label),1)]))),128)),O(`p`,t_,[R(t(r.colorDescription),1),r.colorMode===`delta`&&r.hasComparison?(f(),I(`span`,n_,` · 对比`+t(r.comparisonLabel),1)):C(``,!0)])])]),_(i.TreemapSelectionPanel,{class:`border-t border-(--dashboard-border) p-4 xl:min-h-0 xl:overflow-y-auto xl:border-l xl:border-t-0`,result:r.result,nodes:r.nodes,"selected-meta":r.selectedMeta,onSelectNode:n[6]||=e=>i.emit(`selectNode`,e),onOpenSource:n[7]||=e=>i.emit(`openSource`,e)},null,8,[`result`,`nodes`,`selected-meta`])])])}var i_=z(Rg,[[`render`,r_]]),a_=L({__name:`AnalyzeResultSections`,props:{actionItems:{},activeBudgetWarningId:{},activeTab:{},activeWorkQueueItemId:{},baselineSnapshotId:{},budgetWarnings:{},canUseSelectedPackageFilter:{type:Boolean},hasTreemapComparison:{type:Boolean},comparisonMode:{},comparisonResult:{},copyStatus:{},duplicateModuleScopeLabel:{},duplicateModules:{},filteredDuplicateModules:{},historySnapshots:{},incrementAttribution:{},incrementSummary:{},isTreemapEmpty:{type:Boolean},inspectionTarget:{},inspectionSourcePath:{},investigationRequest:{},investigationRequestId:{},largestFiles:{},metricPackageTypeSummary:{},moduleSourceSummary:{},modulesLayoutItems:{},packageInsights:{},packagesLayoutItems:{},prReviewChecklist:{},queuedActionKeys:{},reviewLayoutItems:{},result:{},selectedTreemapMeta:{},selectedActionKey:{},theme:{},topCards:{},treemapColorMode:{},treemapColorDescription:{},treemapComparisonLabel:{},treemapLegend:{},treemapNodes:{},treemapPath:{},treemapFilterMode:{},treemapFilterOptions:{},visibleLargestFiles:{},workQueueItems:{},bindChartRef:{type:Function}},emits:[`addActionToQueue`,`clearCompletedWorkQueue`,`copyPr`,`copyReviewChecklist`,`copyWorkQueue`,`focusAction`,`inspectDuplicates`,`inspectTreemapProblem`,`openFile`,`openTreemapSource`,`removeWorkQueueItem`,`resetTreemapFocus`,`selectAction`,`selectBudgetWarning`,`selectPackage`,`selectReviewChecklistItem`,`selectInspectionTarget`,`investigate`,`selectTreemapNode`,`selectWorkQueueItem`,`setBaseline`,`setComparisonMode`,`toggleWorkQueueItem`,`updateTreemapColorMode`,`updateTreemapFilterMode`],setup(e,{expose:t,emit:n}){t();let r=e,a={props:r,emit:n,ChunkGraphPanel:i(()=>ce(()=>import(`./ChunkGraphPanel.js`),__vite__mapDeps([0,1]),import.meta.url)),selectedAction:M(()=>r.actionItems.find(e=>e.key===r.selectedActionKey)??r.actionItems[0]),AnalyzeBuildSummary:Kn,AnalyzeDiagnosticsSection:Do,AnalyzeDraggableGrid:Fo,AnalyzeWorkQueuePanel:as,BudgetSandboxPanel:Zs,ObjectInvestigationPanel:yu,ModulesPanel:xd,ObjectInspectionWorkbench:Fp,PackagesPanel:Xm,PrReviewChecklistPanel:vh,TreemapCard:i_};return Object.defineProperty(a,"__isScriptSetup",{enumerable:!1,value:!0}),a}}),o_={key:0,class:`grid min-h-0 min-w-0 content-start gap-6`},s_={key:1,class:`min-h-0`},c_=[`open`],l_={class:`min-h-11 cursor-pointer py-2 text-sm text-(--dashboard-text-muted)`},u_={key:0},d_=[`disabled`],f_={key:2,class:`min-h-0`},p_={key:3,class:`min-h-0 flex-1`},m_={key:4,class:`min-h-0 min-w-0 flex-1`},h_={key:5,class:`min-h-0`},g_=[`open`],__={key:6,class:`min-h-0`};function v_(e,n,r,i,a,o){return r.activeTab===`diagnostics`?(f(),I(`section`,o_,[_(i.AnalyzeDiagnosticsSection,{"action-items":r.actionItems,"baseline-snapshot-id":r.baselineSnapshotId,"comparison-mode":r.comparisonMode,"comparison-result":r.comparisonResult,"duplicate-modules":r.duplicateModules,"increment-attribution":r.incrementAttribution,result:r.result,"history-snapshots":r.historySnapshots,"selected-action-key":r.selectedActionKey,onFocusAction:n[3]||=e=>i.emit(`focusAction`,e),onOpenFile:n[4]||=e=>i.emit(`openFile`,e),onOpenSource:n[5]||=e=>i.emit(`openTreemapSource`,e),onSelectAction:n[6]||=e=>i.emit(`selectAction`,e),onSetBaseline:n[7]||=e=>i.emit(`setBaseline`,e),onSetComparisonMode:n[8]||=e=>i.emit(`setComparisonMode`,e)},{overview:c(()=>[_(i.AnalyzeBuildSummary,{"action-items":r.actionItems,cards:r.topCards,"largest-files":r.largestFiles,"package-insights":r.packageInsights,"package-type-summary":r.metricPackageTypeSummary,onCopyReport:n[0]||=e=>i.emit(`copyPr`),onSelectFile:n[1]||=e=>i.emit(`openFile`,e),onSelectPackage:n[2]||=e=>i.emit(`selectPackage`,e)},null,8,[`action-items`,`cards`,`largest-files`,`package-insights`,`package-type-summary`])]),_:1},8,[`action-items`,`baseline-snapshot-id`,`comparison-mode`,`comparison-result`,`duplicate-modules`,`increment-attribution`,`result`,`history-snapshots`,`selected-action-key`])])):r.activeTab===`review`?(f(),I(`section`,s_,[_(i.AnalyzeDraggableGrid,{"grid-class":`grid h-full min-h-0 min-w-0 gap-2 overflow-x-hidden overflow-y-auto xl:overflow-hidden`,items:r.reviewLayoutItems,"storage-key":`weapp-vite:dashboard:analyze-layout:review`},{review:c(()=>[_(i.PrReviewChecklistPanel,{checklist:r.prReviewChecklist,"copy-status":r.copyStatus,onCopy:n[9]||=e=>i.emit(`copyReviewChecklist`),onSelect:n[10]||=e=>i.emit(`selectReviewChecklistItem`,e)},null,8,[`checklist`,`copy-status`])]),_:1},8,[`items`]),O(`details`,{class:`mt-4 border-t border-(--dashboard-border) pt-3`,open:!!r.activeWorkQueueItemId},[O(`summary`,l_,[n[28]||=R(` 手动跟进清单`,-1),r.workQueueItems.length?(f(),I(`span`,u_,`(`+t(r.workQueueItems.length)+` 项)`,1)):C(``,!0)]),n[29]||=O(`p`,{class:`mb-3 text-xs leading-5 text-(--dashboard-text-soft)`},`仅记录本地跟进状态,不执行修复,也不证明问题已经解决。`,-1),i.selectedAction?(f(),I(`button`,{key:0,type:`button`,disabled:r.queuedActionKeys.includes(i.selectedAction.key),class:`mb-3 min-h-11 max-w-full rounded-md border border-(--dashboard-border) px-3 text-left text-sm text-(--dashboard-text-muted) [overflow-wrap:anywhere] focus-visible:outline-2 focus-visible:outline-(--dashboard-accent) disabled:opacity-50`,onClick:n[11]||=e=>i.emit(`addActionToQueue`,i.selectedAction)},t(r.queuedActionKeys.includes(i.selectedAction.key)?`已在清单:`:`加入清单:`)+t(i.selectedAction.title),9,d_)):C(``,!0),_(i.AnalyzeWorkQueuePanel,{items:r.workQueueItems,"active-id":r.activeWorkQueueItemId,onClearCompleted:n[12]||=e=>i.emit(`clearCompletedWorkQueue`),onCopy:n[13]||=e=>i.emit(`copyWorkQueue`),onRemove:n[14]||=e=>i.emit(`removeWorkQueueItem`,e),onSelect:n[15]||=e=>i.emit(`selectWorkQueueItem`,e),onToggle:n[16]||=e=>i.emit(`toggleWorkQueueItem`,e)},null,8,[`items`,`active-id`])],8,c_)])):r.activeTab===`graph`?(f(),I(`section`,f_,[_(i.ChunkGraphPanel,{result:r.result,theme:r.theme},null,8,[`result`,`theme`])])):r.activeTab===`treemap`?(f(),I(`section`,p_,[_(i.TreemapCard,{"bind-chart-ref":r.bindChartRef,"filter-mode":r.treemapFilterMode,"filter-options":r.treemapFilterOptions,"can-use-selected-package-filter":r.canUseSelectedPackageFilter,"has-comparison":r.hasTreemapComparison,"comparison-label":r.treemapComparisonLabel,"color-mode":r.treemapColorMode,"color-description":r.treemapColorDescription,legend:r.treemapLegend,nodes:r.treemapNodes,path:r.treemapPath,result:r.result,"selected-meta":r.selectedTreemapMeta,"is-empty":r.isTreemapEmpty,onResetFocus:n[17]||=e=>i.emit(`resetTreemapFocus`),onSelectNode:n[18]||=e=>i.emit(`selectTreemapNode`,e),onOpenSource:n[19]||=e=>i.emit(`openTreemapSource`,e),onInspectProblem:n[20]||=e=>i.emit(`inspectTreemapProblem`,e),onUpdateColorMode:n[21]||=e=>i.emit(`updateTreemapColorMode`,e),onUpdateFilterMode:n[22]||=e=>i.emit(`updateTreemapFilterMode`,e)},null,8,[`bind-chart-ref`,`filter-mode`,`filter-options`,`can-use-selected-package-filter`,`has-comparison`,`comparison-label`,`color-mode`,`color-description`,`legend`,`nodes`,`path`,`result`,`selected-meta`,`is-empty`])])):r.activeTab===`files`?(f(),I(`section`,m_,[_(i.ObjectInspectionWorkbench,{result:r.result,"comparison-result":r.comparisonResult,target:r.inspectionTarget,"source-path":r.inspectionSourcePath,theme:r.theme,"baseline-label":r.treemapComparisonLabel,"investigation-request-id":r.investigationRequestId,onSelectTarget:n[23]||=e=>i.emit(`selectInspectionTarget`,e),onInvestigate:n[24]||=e=>i.emit(`investigate`,e)},{investigation:c(()=>[_(i.ObjectInvestigationPanel,{request:r.investigationRequest,"request-id":r.investigationRequestId},null,8,[`request`,`request-id`])]),_:1},8,[`result`,`comparison-result`,`target`,`source-path`,`theme`,`baseline-label`,`investigation-request-id`])])):r.activeTab===`packages`?(f(),I(`section`,h_,[_(i.AnalyzeDraggableGrid,{"grid-class":`grid h-full min-h-0 min-w-0 gap-2 overflow-x-hidden overflow-y-auto xl:overflow-hidden`,items:r.packagesLayoutItems,"storage-key":`weapp-vite:dashboard:analyze-layout:packages`},{packages:c(()=>[_(i.PackagesPanel,{"package-insights":r.packageInsights,"budget-warnings":r.budgetWarnings,"selected-treemap-meta":r.selectedTreemapMeta,onInspectDuplicates:n[25]||=e=>i.emit(`inspectDuplicates`,e)},null,8,[`package-insights`,`budget-warnings`,`selected-treemap-meta`])]),_:1},8,[`items`]),O(`details`,{class:`mt-4 rounded-lg border border-(--dashboard-border) bg-(--dashboard-panel) p-4`,open:!!r.activeBudgetWarningId},[n[30]||=O(`summary`,{class:`min-h-11 cursor-pointer py-2 text-sm font-medium`},` 预算试算与风险范围 `,-1),_(i.BudgetSandboxPanel,{"active-budget-warning-id":r.activeBudgetWarningId,"current-warnings":r.budgetWarnings,result:r.result,onSelectBudgetWarning:n[26]||=e=>i.emit(`selectBudgetWarning`,e)},null,8,[`active-budget-warning-id`,`current-warnings`,`result`])],8,g_)])):(f(),I(`section`,__,[_(i.AnalyzeDraggableGrid,{"grid-class":`grid h-full min-h-0 min-w-0 items-start gap-2 overflow-x-hidden overflow-y-auto`,items:r.modulesLayoutItems,"storage-key":`weapp-vite:dashboard:analyze-layout:modules`},{modules:c(()=>[_(i.ModulesPanel,{"duplicate-modules":r.filteredDuplicateModules,"duplicate-module-scope-label":r.duplicateModuleScopeLabel,"module-source-summary":r.moduleSourceSummary,"increment-attribution":r.incrementAttribution,"increment-summary":r.incrementSummary,"visible-largest-files":r.visibleLargestFiles,onResetScope:n[27]||=e=>i.emit(`resetTreemapFocus`)},null,8,[`duplicate-modules`,`duplicate-module-scope-label`,`module-source-summary`,`increment-attribution`,`increment-summary`,`visible-largest-files`])]),_:1},8,[`items`])]))}var y_=z(a_,[[`render`,v_]]),b_=L({__name:`AnalyzeExportMenu`,props:{open:{type:Boolean},canResetView:{type:Boolean}},emits:[`update:open`,`copySummary`,`copyMarkdown`,`copyPr`,`exportJson`,`exportMarkdown`,`exportCsv`,`resetView`],setup(e,{expose:t,emit:n}){t();let r=n,i={emit:r,menuId:d(),exportActions:[{key:`summary`,label:`复制摘要`,description:`关键指标和首要风险,适合 IM 快速同步。`,iconName:`metric-copy`,action:()=>r(`copySummary`)},{key:`markdown-copy`,label:`复制完整报告`,description:`包含预算、包体、Top 文件和重复模块表格。`,iconName:`file-samples`,action:()=>r(`copyMarkdown`)},{key:`pr`,label:`复制 PR 摘要`,description:`面向评审评论的增量、预算和重复模块摘要。`,iconName:`metric-copy`,action:()=>r(`copyPr`)},{key:`json`,label:`导出 JSON`,description:`保留原始 analyze payload,适合离线排查。`,iconName:`metric-size-outline`,action:()=>r(`exportJson`)},{key:`markdown`,label:`导出 MD`,description:`生成完整 Markdown 报告文件。`,iconName:`file-samples`,action:()=>r(`exportMarkdown`)},{key:`csv`,label:`导出 CSV`,description:`导出包、文件、重复模块和增量归因明细。`,iconName:`file-samples`,action:()=>r(`exportCsv`)}],get pillButtonStyles(){return De},DashboardIcon:pe};return Object.defineProperty(i,"__isScriptSetup",{enumerable:!1,value:!0}),i}}),x_=[`aria-expanded`,`aria-controls`],S_={class:`h-4.5 w-4.5`},C_=[`id`],w_=[`disabled`],T_={class:`size-4.5 shrink-0`,"aria-hidden":`true`},E_=[`onClick`],D_={class:`mt-0.5 h-4.5 w-4.5 text-(--dashboard-text-soft)`},O_={class:`min-w-0`},k_={class:`block font-medium`},A_={class:`mt-0.5 block text-xs leading-5 text-(--dashboard-text-soft)`};function j_(e,n,r,i,a,o){return f(),I(`div`,{class:`relative shrink-0`,onClick:n[2]||=T(()=>{},[`stop`])},[O(`button`,{class:x(i.pillButtonStyles({kind:`nav`,active:r.open,class:`h-8 py-0`})),type:`button`,"aria-expanded":r.open,"aria-controls":r.open?i.menuId:void 0,onClick:n[0]||=e=>i.emit(`update:open`,!r.open)},[O(`span`,S_,[_(i.DashboardIcon,{name:`nav-menu`})]),n[3]||=R(` 更多 `,-1)],10,x_),r.open?(f(),I(`div`,{key:0,id:i.menuId,class:`absolute right-0 top-[calc(100%+0.45rem)] z-50 grid max-h-[60dvh] w-76 max-w-[calc(100vw-2rem)] gap-1.5 overflow-y-auto rounded-lg border border-(--dashboard-border) bg-(--dashboard-panel) p-1.5 shadow-(--dashboard-shadow)`},[O(`button`,{class:`flex items-center gap-2 rounded-md px-3 py-2 text-left text-sm text-(--dashboard-text) hover:bg-(--dashboard-panel-muted) focus-visible:outline-2 focus-visible:outline-(--dashboard-accent) disabled:opacity-50 sm:hidden pointer-coarse:min-h-11`,type:`button`,disabled:!r.canResetView,onClick:n[1]||=e=>i.emit(`resetView`)},[O(`span`,T_,[_(i.DashboardIcon,{name:`metric-reset`})]),n[4]||=R(` 重置视图 `,-1)],8,w_),(f(),I(E,null,m(i.exportActions,e=>O(`button`,{key:e.key,class:`grid grid-cols-[1.125rem_minmax(0,1fr)] gap-x-2 rounded-md px-3 py-2 text-left text-sm text-(--dashboard-text) transition hover:bg-(--dashboard-panel-muted)`,type:`button`,onClick:e.action},[O(`span`,D_,[_(i.DashboardIcon,{name:e.iconName},null,8,[`name`])]),O(`span`,O_,[O(`span`,k_,t(e.label),1),O(`span`,A_,t(e.description),1)])],8,E_)),64))],8,C_)):C(``,!0)])}var M_=z(b_,[[`render`,j_]]),N_=L({__name:`AppInfoPill`,props:{label:{},iconName:{},uppercase:{type:Boolean}},setup(e,{expose:t}){t();let n={DashboardIcon:pe};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}}),P_={key:0,class:`mr-1.5 h-4 w-4 text-(--dashboard-accent)`};function F_(e,n,r,i,a,o){return f(),I(`span`,{class:x([`inline-flex items-center rounded-full border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-2.5 py-1 text-xs font-medium text-(--dashboard-text-soft)`,r.uppercase?`tracking-[0.18em] uppercase`:void 0])},[r.iconName?(f(),I(`span`,P_,[_(i.DashboardIcon,{name:r.iconName},null,8,[`name`])])):C(``,!0),R(` `+t(r.label),1)],2)}var I_=z(N_,[[`render`,F_]]),L_=L({__name:`AnalyzeToolbar`,props:{canSearch:{type:Boolean},canResetView:{type:Boolean},exportStatus:{},moreMenuOpen:{type:Boolean},statusPills:{}},emits:[`copyMarkdown`,`copyPr`,`copySummary`,`copyViewLink`,`exportCsv`,`exportJson`,`exportMarkdown`,`openSearch`,`resetView`,`update:moreMenuOpen`],setup(e,{expose:t,emit:n}){t();let r={emit:n,AnalyzeExportMenu:M_,AppInfoPill:I_,AppToolButton:K};return Object.defineProperty(r,"__isScriptSetup",{enumerable:!1,value:!0}),r}}),R_={class:`relative z-20 flex min-w-0 flex-wrap items-center gap-2 overflow-visible rounded-lg border border-(--dashboard-border) bg-(--dashboard-panel) px-3 py-2 shadow-(--dashboard-shadow)`},z_={class:`flex min-w-0 flex-1 items-center gap-2 sm:flex-none`},B_={key:2,class:`hidden sm:block`},V_={class:`order-last flex min-w-0 w-full flex-wrap items-center gap-2 empty:hidden sm:order-none sm:w-auto sm:flex-1`};function H_(e,t,n,r,i,a){return f(),I(`section`,R_,[O(`div`,z_,[n.canSearch?(f(),D(r.AppToolButton,{key:0,"icon-name":`metric-search`,label:`搜索分析结果`,"touch-label":`搜索`,onClick:t[0]||=e=>r.emit(`openSearch`)})):C(``,!0),n.canSearch?(f(),D(r.AppToolButton,{key:1,"icon-name":`metric-link`,label:`复制视图链接`,"touch-label":`复制`,onClick:t[1]||=e=>r.emit(`copyViewLink`)})):C(``,!0),n.canSearch?(f(),I(`div`,B_,[_(r.AppToolButton,{"icon-name":`metric-reset`,label:`重置视图`,"touch-label":`重置`,disabled:!n.canResetView,onClick:t[2]||=e=>r.emit(`resetView`)},null,8,[`disabled`])])):C(``,!0)]),O(`div`,V_,[n.exportStatus?(f(),D(r.AppInfoPill,{key:0,class:`shrink-0`,label:n.exportStatus,uppercase:``},null,8,[`label`])):C(``,!0),(f(!0),I(E,null,m(n.statusPills,e=>(f(),D(r.AppInfoPill,p({key:e.label,class:`shrink-0`},{ref_for:!0},e,{uppercase:``}),null,16))),128))]),n.canSearch?(f(),D(r.AnalyzeExportMenu,{key:0,open:n.moreMenuOpen,"can-reset-view":n.canResetView,onResetView:t[3]||=e=>r.emit(`resetView`),"onUpdate:open":t[4]||=e=>r.emit(`update:moreMenuOpen`,e),onCopyMarkdown:t[5]||=e=>r.emit(`copyMarkdown`),onCopyPr:t[6]||=e=>r.emit(`copyPr`),onCopySummary:t[7]||=e=>r.emit(`copySummary`),onExportCsv:t[8]||=e=>r.emit(`exportCsv`),onExportJson:t[9]||=e=>r.emit(`exportJson`),onExportMarkdown:t[10]||=e=>r.emit(`exportMarkdown`)},null,8,[`open`,`can-reset-view`])):C(``,!0)])}var U_=z(L_,[[`render`,H_]]);function W_(e){return e===`blocked`?`Blocked`:e===`review`?`Review`:`Ready`}function G_(e){return e===`blocked`?`PR 合并前仍有阻断项`:e===`review`?`建议完成复核后再合并`:`当前清单未发现发布风险`}function K_(e){return{id:`action:${e.key}`,title:e.title,detail:e.value?`${e.meta} · ${e.value}`:e.meta,checked:e.tone===`success`,tone:e.tone,tab:e.tab,actionKey:e.key}}function q_(e){return{id:`queue:${e.id}`,title:e.title,detail:e.value?`${e.meta} · ${e.value}`:e.meta,checked:!!e.completedAt,tone:e.tone,tab:e.tab,workQueueItemId:e.id}}function J_(e){return e.items.length===0?[`- [x] ${e.emptyText}`]:e.items.map(e=>`- [${e.checked?`x`:` `}] ${e.title}:${e.detail}`)}function Y_(e){return[`## PR 风险清单`,``,`状态:${e.label}`,e.headline,``,...e.metrics.map(e=>`- ${e.label}:${e.value}`),``,...e.lanes.flatMap(e=>[`### ${e.title}`,``,...J_(e),``])].join(`
15
+ `)}function X_(e){let t=e.actionItems.filter(e=>e.tone===`critical`),n=e.actionItems.filter(e=>e.tone===`warning`),r=e.workQueueItems.filter(e=>!e.completedAt),i=e.workQueueItems.filter(e=>e.completedAt),a=new Set(e.workQueueItems.map(e=>e.targetKey)),o=e.actionItems.filter(e=>e.tone!==`critical`&&e.tone!==`success`&&!a.has(e.key)).slice(0,4),s=t.length>0?`blocked`:n.length>0||r.length>0?`review`:`ready`,c=[{key:`blockers`,title:`合并前阻断`,description:`必须先处理的预算、增长或产物异常。`,items:t.slice(0,5).map(K_),emptyText:`没有阻断项。`},{key:`verification`,title:`评审复核`,description:`需要 reviewer 主动确认的高风险变化。`,items:n.slice(0,6).map(K_),emptyText:`没有需要额外复核的风险。`},{key:`followups`,title:`后续跟进`,description:`来自处理清单和剩余建议动作的后续事项。`,items:[...r.slice(0,4).map(q_),...o.map(K_)].slice(0,6),emptyText:i.length>0?`处理清单已完成。`:`没有待跟进事项。`}],l={status:s,label:W_(s),headline:G_(s),description:`${e.actionItems.length} 个分析动作 · ${r.length} 个待处理清单`,metrics:[{label:`阻断项`,value:t.length},{label:`复核项`,value:n.length},{label:`待处理`,value:r.length},{label:`已完成`,value:i.length}],lanes:c};return{...l,report:Y_(l)}}function Z_(e){return e.status===`unknown`?`未知`:`${(e.ratio*100).toFixed(1)}%`}function Q_(e,t,n){if(t&&n)return e.find(e=>e.packageId===t&&e.file===n)}function $_(e,t,n){let r=e.packages[0],i=r?.files[0]??``,a=t.find(e=>e.id===r?.packageId),o=a?.label??r?.packageLabel??``;return{key:`duplicate:${e.id}`,kind:`duplicate`,title:`核对跨包重复 ${e.source}`,targetLabel:e.source,meta:`${e.packageCount} 个包复用 · ${e.advice}`,value:n===null?`估算重复 未知`:`估算重复 ${U(n)}`,measurementUnknown:n===null,tone:e.estimatedSavingBytes>1024?`warning`:`info`,tab:`modules`,priority:72+Math.min(e.estimatedSavingBytes/1024,18),moduleMeta:r&&a?{kind:`module`,nodeId:Y(r.packageId,i,e.id),packageId:r.packageId,packageLabel:o,fileName:i,source:e.source,sourceType:e.sourceType,bytes:e.bytes,packageCount:e.packageCount}:void 0}}function ev(e,t,n){let r=Q_(t,e.packageId,e.file),i=n.find(t=>t.id===e.packageId),a=!r&&e.moduleId&&e.packageId&&e.file&&i?{kind:`module`,nodeId:Y(e.packageId,e.file,e.moduleId),packageId:e.packageId,packageLabel:e.packageLabel,fileName:e.file,source:e.label,sourceType:e.sourceType??`src`,bytes:e.currentBytes,packageCount:1}:void 0;return{key:`increment:${e.key}`,kind:`increment`,title:`定位增长 ${e.label}`,targetLabel:e.label,meta:`${e.category} · ${e.advice}`,value:`+${U(e.deltaBytes)}`,tone:`info`,tab:r?`files`:`modules`,priority:80+Math.min(e.deltaBytes/1024,15),file:r,moduleMeta:a}}function tv(e){return{actionItems:M(()=>{let t=[];for(let n of e.budgetWarnings.value)t.push({key:`budget:${n.id}`,kind:`budget`,title:`处理 ${n.label} 预算`,targetLabel:n.label,meta:n.status===`unknown`?`体积或归因不完整,无法验收预算`:`${n.status===`critical`?`已超预算`:`接近预算`} · 当前 ${U(n.currentBytes)} / ${U(n.limitBytes)}`,value:Z_(n),measurementUnknown:n.status===`unknown`,tone:n.status===`critical`?`critical`:`warning`,tab:`files`,priority:n.status===`critical`?100+n.ratio:90+n.ratio,warning:n});for(let n of e.incrementAttribution.value.slice(0,12))t.push(ev(n,e.largestFiles.value,e.packageInsights.value));let n=e.resultRef.value;if(n){let r=0;for(let i of e.duplicateModules.value){let a=ar(n,i.id,i.estimatedSavingBytes);if(!(a!==null&&a<=0)&&(t.push($_(i,e.packageInsights.value,a)),++r===12))break}}return t.sort((e,t)=>t.priority-e.priority||e.title.localeCompare(t.title))})}}function nv(e){return e.filter(e=>e!==void 0&&e!==``).join(` `).toLowerCase()}function rv(e,t,n){return e.find(e=>e.id===t||e.label===n)}function iv(e,t,n){if(t&&n)return e.find(e=>e.packageId===t&&e.file===n)}function av(e){return{key:`package:${e.id}`,kind:`package`,title:e.label,meta:`${B(e.type)} · ${e.fileCount} 个产物 · ${e.moduleCount} 个模块`,value:U(e.totalBytes),keywords:nv([e.id,e.label,e.type,e.totalBytes]),tab:`packages`,packageMeta:{kind:`package`,nodeId:Er(e.id),packageId:e.id,packageLabel:e.label,packageType:e.type,fileCount:e.fileCount,totalBytes:e.totalBytes}}}function ov(e){return{key:`file:${e.packageId}:${e.file}`,kind:`file`,title:e.file,meta:`${e.packageLabel} · ${e.type} · 压缩后 ${U(e.compressedSize)}`,value:U(e.size),keywords:nv([e.packageId,e.packageLabel,e.file,e.type,e.source,e.size]),tab:`files`,file:e}}function sv(e){return{key:`budget:${e.id}`,kind:`budget`,title:`${e.label} 预算`,meta:e.status===`unknown`?`体积或归因不完整,无法验收预算`:`${e.status===`critical`?`已超预算`:`接近预算`} · ${U(e.currentBytes)} / ${U(e.limitBytes)}`,value:e.status===`unknown`?`未知`:`${(e.ratio*100).toFixed(1)}%`,keywords:nv([e.id,e.label,e.scope,e.status,e.currentBytes]),tab:`files`,warning:e}}function cv(e,t,n){let r=e.packages[0],i=r?.files[0]??``,a=rv(t,r?.packageId,r?.packageLabel),o=a?.label??r?.packageLabel??``,s=n?ar(n,e.id,e.estimatedSavingBytes):null;return{key:`module:${e.id}`,kind:`module`,title:e.source,meta:`${e.sourceType} · ${e.packageCount} 个包复用 · ${e.advice}`,value:s===null?`估算重复 未知`:`估算重复 ${U(s)}`,keywords:nv([e.id,e.source,e.sourceType,e.packageCount,e.packages.map(e=>e.packageLabel).join(` `)]),tab:`modules`,moduleMeta:r&&a?{kind:`module`,nodeId:Y(r.packageId,i,e.id),packageId:r.packageId,packageLabel:o,fileName:i,source:e.source,sourceType:e.sourceType,bytes:e.bytes,packageCount:e.packageCount}:void 0}}function lv(e,t,n){let r=iv(t,e.packageId,e.file),i=rv(n,e.packageId,e.packageLabel);return{key:`increment:${e.key}`,kind:`increment`,title:e.label,meta:`${e.category} · ${e.advice}`,value:`+${U(e.deltaBytes)}`,keywords:nv([e.key,e.label,e.category,e.packageLabel,e.file,e.deltaBytes]),tab:r?`files`:`modules`,file:r,moduleMeta:!r&&e.moduleId&&e.packageId&&e.file&&i?{kind:`module`,nodeId:Y(e.packageId,e.file,e.moduleId),packageId:e.packageId,packageLabel:e.packageLabel,fileName:e.file,source:e.label,sourceType:e.sourceType??`src`,bytes:e.currentBytes,packageCount:1}:void 0}}function uv(e){return{key:`action:${e.key}`,kind:`action`,title:e.title,meta:e.meta,value:e.value,keywords:nv([e.title,e.meta,e.value,e.kind,e.tone]),tab:e.tab,action:e,warning:e.warning,file:e.file,moduleMeta:e.moduleMeta}}function dv(e){return{commandItems:M(()=>[...e.actionItems.value.map(uv),...e.budgetWarnings.value.map(sv),...e.packageInsights.value.map(av),...e.largestFiles.value.map(ov),...e.duplicateModules.value.map(t=>cv(t,e.packageInsights.value,e.resultRef.value)),...e.incrementAttribution.value.map(t=>lv(t,e.largestFiles.value,e.packageInsights.value))])}}function fv(e){if(!e.result||!e.previousResult)return[];let t=tr(e.result,e.previousResult);return[...t.files,...t.modules].filter(e=>e.currentBytes!==null&&e.previousBytes!==null&&e.deltaBytes!==null&&e.deltaBytes>0).map(e=>({key:e.moduleId===void 0?`file:${e.packageId}:${e.file}`:`module:${e.moduleId}`,label:e.moduleId===void 0?e.label:H(e.label),category:e.category??``,packageId:e.packageId,packageLabel:e.packageLabel??``,file:e.file,moduleId:e.moduleId,sourceType:e.sourceType,currentBytes:e.currentBytes,previousBytes:e.previousBytes,deltaBytes:e.deltaBytes,advice:e.advice??``})).sort((e,t)=>t.deltaBytes-e.deltaBytes||e.category.localeCompare(t.category)||e.label.localeCompare(t.label))}function pv(e){let t=new Map;for(let n of e){let e=t.get(n.category)??{category:n.category,count:0,deltaBytes:0};e.count+=1,e.deltaBytes+=n.deltaBytes,t.set(n.category,e)}return[...t.values()].sort((e,t)=>t.deltaBytes-e.deltaBytes||t.count-e.count||e.category.localeCompare(t.category))}function mv(e,t){let n=M(()=>hr(t?.value??null)),r=M(()=>new Map((e.value?.packages??[]).map(e=>[e.id,e.label]))),i=M(()=>gr(e.value)),a=M(()=>ss(e.value)),o=M(()=>cs(e.value)),s=M(()=>fv({result:e.value,previousResult:t?.value})),c=M(()=>pv(s.value)),l=M(()=>br({result:e.value,previousMaps:n.value,budgetWarnings:a.value})),u=M(()=>xr(e.value)),d=M(()=>Sr(e.value,n.value)),f=M(()=>Cr(e.value,n.value.fileBytes));return{artifactFiles:f,summary:l,packageTypeSummary:u,packageInsights:d,largestFiles:M(()=>f.value.slice(0,18)),duplicateModules:M(()=>lr({result:e.value,packageLabelMap:r.value})),moduleSourceSummary:M(()=>ur(e.value,i.value)),budgetWarnings:a,budgetLimitItems:o,incrementAttribution:s,incrementSummary:c,subPackages:M(()=>e.value?.subPackages??[])}}var hv=[`action`,`file`,`budget`],gv=[`critical`,`warning`,`info`,`success`],_v=[`diagnostics`,`graph`,`treemap`,`files`,`source`,`packages`,`modules`];function vv(){return new Date().toISOString()}function yv(e,t){return typeof e==`string`&&t.includes(e)}function bv(e){if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.id==`string`&&yv(t.targetKind,hv)&&typeof t.targetKey==`string`&&typeof t.title==`string`&&typeof t.meta==`string`&&yv(t.tone,gv)&&yv(t.tab,_v)&&typeof t.createdAt==`string`}function xv(e){if(!Array.isArray(e))return[];let t=new Map;for(let n of e)bv(n)&&t.set(n.id,{id:n.id,targetKind:n.targetKind,targetKey:n.targetKey,title:n.title,meta:n.meta,value:typeof n.value==`string`?n.value:void 0,tone:n.tone,tab:n.tab,createdAt:n.createdAt,completedAt:typeof n.completedAt==`string`?n.completedAt:void 0});return[...t.values()].sort((e,t)=>!!e.completedAt==!!t.completedAt?Date.parse(t.createdAt)-Date.parse(e.createdAt):e.completedAt?1:-1)}function Sv(e,t=vv()){return{id:`action:${e.key}`,targetKind:`action`,targetKey:e.key,title:e.title,meta:e.meta,value:e.value,tone:e.tone,tab:e.tab,createdAt:t}}function Cv(e){let t=xv(e).map(e=>`| ${e.completedAt?`完成`:`待处理`} | ${e.title.replaceAll(`|`,`\\|`)} | ${e.meta.replaceAll(`|`,`\\|`)} | ${e.value??`-`} | ${e.tab} |`);return[`# dashboard 处理清单`,``,`待处理:${e.filter(e=>!e.completedAt).length}`,`已完成:${e.filter(e=>e.completedAt).length}`,``,`| 状态 | 事项 | 说明 | 数值 | 视图 |`,`| --- | --- | --- | ---: | --- |`,t.join(`
20
16
  `)||`| - | 暂无事项 | - | - | - |`,``].join(`
21
- `)}function jp(e){let t=o(null),n=o(!1),r=o(null);function i(){t.value=null,r.value=null}function a(){e.selectedLargestFile.value=null,e.selectedBudgetWarning.value=null}function s(n){if(t.value=n.key,n.kind===`increment`?e.treemapFilterMode.value=`growth`:n.kind===`duplicate`&&(e.treemapFilterMode.value=`duplicates`),n.warning){e.activeTab.value=`files`,e.handleSelectBudgetWarning(n.warning),e.treemapFilterMode.value=`selected-package`;return}if(n.file){e.activeTab.value=`files`,e.handleSelectLargestFile(n.file),e.treemapFilterMode.value=`selected-package`;return}if(n.moduleMeta){e.activeTab.value=n.tab,e.selectedTreemapMeta.value=n.moduleMeta,a();return}e.activeTab.value=n.tab}function c(t){if(t.action){s(t.action);return}if(t.warning){e.activeTab.value=`files`,e.handleSelectBudgetWarning(t.warning),e.treemapFilterMode.value=`selected-package`;return}if(t.file){e.activeTab.value=`files`,e.handleSelectLargestFile(t.file),e.treemapFilterMode.value=`selected-package`;return}if(t.moduleMeta){e.activeTab.value=t.tab,e.selectedTreemapMeta.value=t.moduleMeta,a(),e.treemapFilterMode.value=t.kind===`increment`?`growth`:`duplicates`;return}if(t.packageMeta){e.activeTab.value=t.tab,e.selectedTreemapMeta.value=t.packageMeta,a(),e.treemapFilterMode.value=`selected-package`;return}e.activeTab.value=t.tab}function l(t){e.addWorkQueueItem(kp(t)),e.exportStatus.value=`已加入清单`}function u(t){if(r.value=t.id,t.targetKind===`action`){let n=e.actionItems.value.find(e=>e.key===t.targetKey);if(n){s(n);return}}e.activeTab.value=t.tab}function d(t){if(t.actionKey){let n=e.actionItems.value.find(e=>e.key===t.actionKey);if(n){s(n);return}}if(t.workQueueItemId){let n=e.workQueueItems.value.find(e=>e.id===t.workQueueItemId);if(n){u(n);return}}e.activeTab.value=t.tab}return{activeWorkQueueItemId:r,commandPaletteOpen:n,selectedActionKey:t,handleAddActionToWorkQueue:l,handleSelectAction:s,handleSelectCommand:c,handleSelectReviewChecklistItem:d,handleSelectWorkQueueItem:u,resetPageSelection:i}}function Mp(e){let t=e.packageInsights[0],n=e.duplicateModules[0];return[`总产物体积:${R(e.summary.totalBytes)}`,`Gzip:${R(e.summary.gzipBytes)}`,`Brotli/压缩后:${R(e.summary.compressedBytes)}`,`包体:${e.summary.packageCount} 个,分包配置:${e.summary.subpackageCount} 个`,`模块:${e.summary.moduleCount} 个,跨包复用:${e.summary.duplicateCount} 个`,`预算告警:${e.summary.budgetWarningCount} 个`,t?`最大包:${t.label} ${R(t.totalBytes)}`:``,n?`首要重复模块:${n.source},估算可节省 ${R(n.estimatedSavingBytes)}(${n.advice})`:``].filter(Boolean).join(`
22
- `)}function Np(e){let t=e.packageInsights.map(e=>`| ${e.label} | ${e.type} | ${R(e.totalBytes)} | ${R(e.compressedBytes)} | ${typeof e.sizeDeltaBytes==`number`?`${e.sizeDeltaBytes>0?`+`:`-`}${R(Math.abs(e.sizeDeltaBytes))}`:`无变化`} |`).join(`
23
- `),n=e.largestFiles.slice(0,10).map(e=>`| ${e.file} | ${e.packageLabel} | ${e.type} | ${R(e.size)} | ${R(e.compressedSize)} |`).join(`
24
- `),r=e.duplicateModules.slice(0,10).map(e=>`| ${e.source} | ${e.sourceType} | ${e.packageCount} | ${R(e.estimatedSavingBytes)} | ${e.advice} |`).join(`
25
- `),i=e.budgetWarnings.map(e=>`| ${e.label} | ${e.scope} | ${R(e.currentBytes)} | ${R(e.limitBytes)} | ${e.status===`critical`?`超预算`:`接近预算`} ${(e.ratio*100).toFixed(1)}% |`).join(`
26
- `),a=e.duplicateModules.find(e=>e.estimatedSavingBytes>0);return[`# weapp-vite analyze 报告`,``,`生成时间:${e.generatedAt??new Date().toISOString()}`,``,`## 本次变化摘要`,``,`- 总产物体积:${R(e.summary.totalBytes)}`,`- 压缩后体积:${R(e.summary.compressedBytes)}`,`- 包体数量:${e.summary.packageCount}`,`- 源码模块:${e.summary.moduleCount}`,`- 跨包复用:${e.summary.duplicateCount}`,`- 预算告警:${e.summary.budgetWarningCount}`,``,`## 预算告警`,``,`| 对象 | 范围 | 当前体积 | 预算 | 状态 |`,`| --- | --- | ---: | ---: | --- |`,i||`| - | - | 0 B | 0 B | 正常 |`,``,`## 建议动作`,``,e.budgetWarnings[0]?`- 优先处理 ${e.budgetWarnings[0].label}:当前 ${R(e.budgetWarnings[0].currentBytes)},预算 ${R(e.budgetWarnings[0].limitBytes)}。`:`- 当前没有预算超限或接近预算的包体。`,a?`- 优先处理重复模块 ${a.source},估算可节省 ${R(a.estimatedSavingBytes)}。`:`- 当前没有可估算收益的重复模块。`,``,`## 包体`,``,`| 包 | 类型 | 体积 | 压缩后 | 较上次 |`,`| --- | --- | ---: | ---: | ---: |`,t||`| - | - | 0 B | 0 B | 无变化 |`,``,`## Top 文件`,``,`| 文件 | 包 | 类型 | 体积 | 压缩后 |`,`| --- | --- | --- | ---: | ---: |`,n||`| - | - | - | 0 B | 0 B |`,``,`## 重复模块`,``,`| 模块 | 来源 | 包数量 | 估算可节省 | 建议 |`,`| --- | --- | ---: | ---: | --- |`,r||`| - | - | 0 | 0 B | - |`,``].join(`
27
- `)}function Pp(e){let t=e.incrementAttribution.slice(0,8).map(e=>`| ${e.label} | ${e.category} | ${e.packageLabel} | +${R(e.deltaBytes)} | ${e.advice} |`).join(`
28
- `),n=e.incrementSummary.slice(0,6).map(e=>`| ${e.category} | ${e.count} | +${R(e.deltaBytes)} |`).join(`
29
- `),r=e.budgetWarnings.slice(0,5).map(e=>`| ${e.label} | ${R(e.currentBytes)} | ${R(e.limitBytes)} | ${e.status===`critical`?`超预算`:`接近预算`} ${(e.ratio*100).toFixed(1)}% |`).join(`
30
- `),i=e.duplicateModules.slice(0,5).map(e=>`| ${e.source} | ${e.packageCount} | ${R(e.estimatedSavingBytes)} | ${e.advice} |`).join(`
31
- `);return[`## weapp-vite analyze PR 摘要`,``,`- 总产物体积:${R(e.summary.totalBytes)}${typeof e.summary.sizeDeltaBytes==`number`?`(较上次 ${e.summary.sizeDeltaBytes>=0?`+`:`-`}${R(Math.abs(e.summary.sizeDeltaBytes))})`:``}`,`- 压缩后体积:${R(e.summary.compressedBytes)}`,`- 预算告警:${e.budgetWarnings.length}`,`- 增量归因:${e.incrementAttribution.length>0?`${e.incrementAttribution.length} 项正向增长`:`无正向增长`}`,`- 跨包复用:${e.duplicateModules.length}`,``,`### 增量来源`,``,`| 来源 | 项数 | 增量 |`,`| --- | ---: | ---: |`,n||`| - | 0 | 0 B |`,``,`### Top 增量`,``,`| 文件/模块 | 来源 | 包 | 增量 | 建议 |`,`| --- | --- | --- | ---: | --- |`,t||`| - | - | - | 0 B | - |`,``,`### 预算状态`,``,`| 对象 | 当前体积 | 预算 | 状态 |`,`| --- | ---: | ---: | --- |`,r||`| - | 0 B | 0 B | 正常 |`,``,`### 重复模块`,``,`| 模块 | 包数量 | 估算可节省 | 建议 |`,`| --- | ---: | ---: | --- |`,i||`| - | 0 | 0 B | - |`,``].join(`
32
- `)}function Fp(e){let t=String(e??``);return/[",\n\r]/.test(t)?`"${t.replaceAll(`"`,`""`)}"`:t}function Ip(e){return e.map(Fp).join(`,`)}function Lp(e){let t=[Ip([`section`,`label`,`package`,`type`,`sizeBytes`,`compressedBytes`,`deltaBytes`,`count`,`detail`])];for(let n of e.packageInsights)t.push(Ip([`package`,n.label,n.id,n.type,n.totalBytes,n.compressedBytes,n.sizeDeltaBytes,n.fileCount,`${n.moduleCount} modules; ${n.duplicateModuleCount} duplicate modules`]));for(let n of e.largestFiles)t.push(Ip([`file`,n.file,n.packageLabel,n.type,n.size,n.compressedSize,n.sizeDeltaBytes,n.moduleCount,n.source??n.from]));for(let n of e.duplicateModules)t.push(Ip([`duplicate-module`,n.source,n.packages.map(e=>e.packageLabel).join(`; `),n.sourceType,n.bytes,n.estimatedSavingBytes,void 0,n.packageCount,n.advice]));for(let n of e.incrementAttribution)t.push(Ip([`increment`,n.label,n.packageLabel,n.category,n.currentBytes,n.deltaBytes,n.deltaBytes,1,n.advice]));return t.join(`
33
- `)}function Rp(e){let t=new Blob([`${e.content}\n`],{type:e.type}),n=URL.createObjectURL(t),r=document.createElement(`a`);r.href=n,r.download=e.filename,r.click(),URL.revokeObjectURL(n)}function zp(e){let t=o(``),n=D(()=>Mp({summary:e.summary.value,packageInsights:e.packageInsights.value,duplicateModules:e.duplicateModules.value})),r=D(()=>Np({generatedAt:e.resultRef.value?.metadata?.generatedAt,summary:e.summary.value,packageInsights:e.packageInsights.value,largestFiles:e.largestFiles.value,duplicateModules:e.duplicateModules.value,budgetWarnings:e.budgetWarnings.value})),i=D(()=>Pp({summary:e.summary.value,incrementAttribution:e.incrementAttribution.value,incrementSummary:e.incrementSummary.value,budgetWarnings:e.budgetWarnings.value,duplicateModules:e.duplicateModules.value})),a=D(()=>Lp({packageInsights:e.packageInsights.value,largestFiles:e.largestFiles.value,duplicateModules:e.duplicateModules.value,incrementAttribution:e.incrementAttribution.value}));async function s(){await V(n.value),t.value=`已复制`,e.moreMenuOpen.value=!1}async function c(){await V(r.value),t.value=`报告已复制`,e.moreMenuOpen.value=!1}async function l(){await V(i.value),t.value=`PR 摘要已复制`,e.moreMenuOpen.value=!1}async function u(){await V(e.prReviewChecklist.value.report),t.value=`评审清单已复制`}async function d(){await V(Ap(e.workQueueItems.value)),t.value=`处理清单已复制`}function f(){e.resultRef.value&&(Rp({content:JSON.stringify(e.resultRef.value,null,2),filename:`weapp-vite-analyze.json`,type:`application/json`}),t.value=`已导出`,e.moreMenuOpen.value=!1)}function p(){Rp({content:r.value,filename:`weapp-vite-analyze.md`,type:`text/markdown`}),t.value=`已导出 MD`,e.moreMenuOpen.value=!1}function m(){Rp({content:a.value,filename:`weapp-vite-analyze.csv`,type:`text/csv;charset=utf-8`}),t.value=`已导出 CSV`,e.moreMenuOpen.value=!1}return{exportStatus:t,copyMarkdownReport:c,copyPrReport:l,copyPrReviewChecklist:u,copySummary:s,copyWorkQueueReport:d,exportCsv:m,exportJson:f,exportMarkdown:p}}function Bp(e){return _e.some(t=>t.value===e)?e:`all`}function Vp(e,t){return t.mode===`all`?!0:t.mode===`selected-package`?t.selectedPackageId?e.packageId===t.selectedPackageId:!1:t.mode===`growth`?t.growthFileKeys.has(`${e.packageId}\u0000${e.file}`)||(e.modules??[]).some(e=>t.growthModuleIds.has(e.id)):t.mode===`duplicates`?(e.modules??[]).some(e=>t.duplicateModuleIds.has(e.id)):t.mode===`node_modules`?(e.modules??[]).some(e=>e.sourceType===`node_modules`):e.type===`asset`||(e.modules??[]).some(e=>e.sourceType===`src`||e.sourceType===`workspace`)}function Hp(e){let t=e.files.filter(t=>Vp(t,e.filterState)),{meta:n,warning:r}=e;return r&&r.scope!==`total`?t.filter(e=>e.packageId===r.id):n?n.kind===`package`?t.filter(e=>e.packageId===n.packageId):n.kind===`file`||n.kind===`asset`||n.kind===`module`?t.filter(e=>e.packageId===n.packageId&&e.file===n.fileName):t:t}function Up(e,t){for(let n of e){if(n.id===t)return[n];if(n.children){let e=Up(n.children,t);if(e.length>0)return[n,...e]}}return[]}function Wp(e){let t=new Map(e.duplicateModules.map(e=>[e.id,e]));return e.modules.filter(t=>e.mode===`growth`?e.growthModuleIds.has(t.id):e.mode===`duplicates`?e.duplicateModuleIds.has(t.id):e.mode===`node_modules`?t.sourceType===`node_modules`:e.mode!==`source`||t.sourceType===`src`||t.sourceType===`workspace`).map(e=>{let n=t.get(e.id),r=e.bytes??e.originalBytes??0;return{key:e.id,source:e.source,sourceType:e.sourceType,bytes:r,originalBytes:e.originalBytes,duplicatePackageCount:n?.packageCount??1,estimatedSavingBytes:n?.estimatedSavingBytes??0}}).sort((e,t)=>t.estimatedSavingBytes-e.estimatedSavingBytes||t.bytes-e.bytes||e.source.localeCompare(t.source))}function Gp(e){let t=S(),n=ee();function r(e){let r={...t.query};return e===`all`?delete r.filter:r.filter=e,n.replace({query:r})}let i=D({get(){return Bp(t.query.filter)},set(e){r(e)}}),a=D(()=>{let e=t.query.color;return e===`source`||e===`duplicates`||e===`delta`?e:`package`});function o(r){if(r===`delta`&&!e.hasComparison.value)return;let i={...t.query};r===`package`?delete i.color:i.color=r,n.replace({query:i})}function s(r){(r!==`growth`||e.hasComparison.value)&&(e.selectedTreemapMeta.value=null,e.selectedLargestFile.value=null,e.selectedBudgetWarning.value=null,n.replace({query:{...t.query,filter:r,color:r===`growth`?`delta`:`duplicates`}}))}let c=D(()=>new Set(e.incrementAttribution.value.filter(e=>e.packageId&&e.file).map(e=>`${e.packageId}\u0000${e.file}`))),l=D(()=>new Set(e.incrementAttribution.value.map(e=>e.moduleId).filter(e=>!!e))),u=D(()=>new Set(e.duplicateModules.value.map(e=>e.id))),d=D(()=>e.selectedTreemapMeta.value?.packageId?e.selectedTreemapMeta.value.packageId:e.selectedLargestFile.value?.packageId?e.selectedLargestFile.value.packageId:e.selectedBudgetWarning.value&&e.selectedBudgetWarning.value.scope!==`total`?e.selectedBudgetWarning.value.id:null),f=D(()=>({mode:i.value,selectedPackageId:i.value===`selected-package`?d.value:null,growthFileKeys:c.value,growthModuleIds:l.value,duplicateModuleIds:u.value})),p=D(()=>!!d.value);function m(t){(t!==`selected-package`||d.value)&&(t!==`growth`||e.hasComparison.value)&&(i.value=t)}return{canUseSelectedPackageFilter:p,duplicateModuleIds:u,growthModuleIds:l,handleInspectTreemapProblem:s,handleUpdateTreemapColorMode:o,handleUpdateTreemapFilterMode:m,selectedPackageId:d,setTreemapFilterMode:r,treemapFilterMode:i,treemapColorMode:a,treemapFilterState:f}}je();function Kp(e){let t=o(),r,i,a;function s(){r?.resize()}function c(){i?.disconnect(),i=void 0,a!==void 0&&(window.cancelAnimationFrame(a),a=void 0),r?.dispose(),r=void 0}function l(e){r?.dispatchAction({type:`treemapRootToNode`,seriesIndex:0,targetNodeId:e})}function u(){r?.setOption(e.treemapOption.value,!0),r?.resize()}async function d(){if(e.activeTab.value!==`treemap`){c();return}await p();let n=t.value;e.activeTab.value===`treemap`&&n?.isConnected&&(r||(r=Ee(n,e.resolvedTheme.value===`dark`?`dark`:void 0,{renderer:`canvas`}),r.on(`click`,e.handleChartClick),i=new ResizeObserver(()=>{a!==void 0&&window.cancelAnimationFrame(a),a=window.requestAnimationFrame(()=>{a=void 0,s()})}),i.observe(n)),r.setOption(e.treemapOption.value,!0),e.focusNodeId.value&&l(e.focusNodeId.value),r.resize())}function f(e){let n=e instanceof HTMLDivElement?e:void 0;n!==t.value&&(c(),t.value=n,n&&d())}return n(e.treemapOption,t=>{r&&(r.setOption(t,!0),e.focusNodeId.value&&l(e.focusNodeId.value))},{flush:`post`}),n(e.focusNodeId,e=>{e?l(e):u()},{flush:`post`}),n(e.activeTab,()=>{d()}),n(e.resolvedTheme,async()=>{r&&t.value&&c(),await d()}),{bindChartRef:f,destroyChart:c,ensureChart:d,handleResize:s}}function qp(e){let t=2166136261;for(let n=0;n<e.length;n++)t^=e.charCodeAt(n),t=Math.imul(t,16777619);let n=Math.imul((t^t>>>4)>>>0,3266489909)>>>0;return Math.round((n/4294967296*360+247)%360)}function Jp(e,t,n){let r=t/100,i=n/100,a=(1-Math.abs(2*i-1))*r,o=e/60,s=a*(1-Math.abs(o%2-1)),c=i-a/2,[l,u,d]=o<1?[a,s,0]:o<2?[s,a,0]:o<3?[0,a,s]:o<4?[0,s,a]:o<5?[s,0,a]:[a,0,s];return[l+c,u+c,d+c].map(e=>Math.round(e*255)/255)}function Yp(e){return e<=.04045?e/12.92:((e+.055)/1.055)**2.4}function Xp([e,t,n]){return .2126*Yp(e)+.7152*Yp(t)+.0722*Yp(n)}function Zp(e,t){let n=Math.max(e,t),r=Math.min(e,t);return(n+.05)/(r+.05)}function Qp(e){let t=Xp(e),n=Xp([248/255,250/255,252/255]),r=Xp([15/255,23/255,42/255]),i=Zp(t,n),a=Zp(t,r);return Math.max(i,a)>=4.5?i>=a?`#f8fafc`:`#0f172a`:Zp(t,1)>=Zp(t,0)?`#ffffff`:`#000000`}function $p(...e){return e.some(e=>{if(!e)return!1;let t=e.replaceAll(`\\`,`/`);return t.includes(`packages-runtime/wevu/`)||t.includes(`node_modules/wevu/`)||t.includes(`node_modules/@weapp-vite/wevu/`)||t.includes(`weapp-vendors/wevu-`)})}function em(e,t=!1){let n=e===`#f8fafc`||e===`#ffffff`;return{color:e,ellipsis:`…`,fontSize:t?12:11,fontWeight:t?650:500,lineHeight:t?17:15,minMargin:5,overflow:`truncate`,textBorderWidth:0,textShadowBlur:n?2:0,textShadowColor:n?`rgba(0, 0, 0, 0.48)`:`transparent`}}function tm(e,t=qp(e),n=42){let r=`hsl(${t}, ${n}%, 46%)`,i=Qp(Jp(t,n,46)),a=`#475569`;return{itemStyle:{color:r,borderColor:a},label:{...em(i),show:!0},upperLabel:{...em(i,!0),backgroundColor:r,padding:[0,4],show:!0},emphasis:{itemStyle:{color:r,borderColor:a},label:{color:i,show:!0},upperLabel:{color:i,backgroundColor:r,show:!0}}}}var nm={business:{label:`业务 / 工作区`,hue:210},npm:{label:`npm 依赖`,hue:275},plugin:{label:`插件 / 生成代码`,hue:38},runtime:{label:`WeVu runtime`,hue:175},asset:{label:`资源`,hue:325},unknown:{label:`未知`,hue:215,saturation:8},mixed:{label:`混合来源`,hue:215,saturation:18},duplicate:{label:`跨包重复模块`,hue:12},containsDuplicate:{label:`含重复模块`,hue:38},unique:{label:`未发现跨包重复`,hue:215,saturation:12},growth:{label:`增大`,hue:12},shrink:{label:`缩小`,hue:150},unchanged:{label:`不变`,hue:215,saturation:12},added:{label:`新增`,hue:275},addedUnknown:{label:`新增(体积未知)`,hue:275,saturation:18},noBaseline:{label:`无比较快照`,hue:215,saturation:8}},rm=Object.fromEntries(Object.entries(nm).map(([e,t])=>[e,tm(e,t.hue,`saturation`in t?t.saturation:void 0)]));function im(e){return typeof e==`number`&&Number.isFinite(e)&&e>=0?e:void 0}function am(e){return $p(e.id,e.source)?`runtime`:e.sourceType===`src`||e.sourceType===`workspace`?`business`:e.sourceType===`node_modules`?`npm`:e.sourceType===`plugin`?`plugin`:`unknown`}function om(e,t){return e===void 0||e===t?t:`mixed`}function sm(e){let t=new Map;for(let n of e?.packages??[])for(let e of n.files)for(let r of e.modules??[]){let e=t.get(r.id);e?e.add(n.id):t.set(r.id,new Set([n.id]))}let n=new Map([...t].map(([e,t])=>[e,t.size])),r=new Map;for(let t of e?.packages??[]){let e,i=!1,a=0;for(let o of t.files){let s,c=!1;for(let e of o.modules??[]){let i={source:am(e),duplicated:(n.get(e.id)??0)>1,bytes:im(e.bytes)};r.set(X(t.id,o.file,e.id),i),s=om(s,i.source),c||=i.duplicated}let l={source:o.type===`asset`?`asset`:s??`unknown`,duplicated:c,bytes:im(o.size)};r.set(Y(t.id,o.file),l),o.type===`asset`&&r.set(Jl(t.id,o.file),l),e=om(e,l.source),i||=c,a=a!==void 0&&l.bytes!==void 0?a+l.bytes:void 0}r.set(ql(t.id),{source:e??`unknown`,duplicated:i,bytes:a})}return{nodes:r,moduleUsageCount:n}}function cm(e){let t=new Map;for(let n of e?.packages??[]){let e=0;for(let r of n.files){let i=im(r.size);t.set(Y(n.id,r.file),i),r.type===`asset`&&t.set(Jl(n.id,r.file),i);for(let e of r.modules??[])t.set(X(n.id,r.file,e.id),im(e.bytes));e=e!==void 0&&i!==void 0?e+i:void 0}t.set(ql(n.id),e)}return t}function lm(e,t,n){if(!n)return{key:`noBaseline`};if(!n.has(e))return t===void 0?{key:`addedUnknown`}:{key:`added`,deltaBytes:t};let r=n.get(e);if(t===void 0||r===void 0)return{key:`unknown`};let i=t-r;return{key:i>0?`growth`:i<0?`shrink`:`unchanged`,deltaBytes:i}}function um(e){let t=new Map,n=new Map;function r(i){let a=e.current.nodes.get(i.id),o,s,c;if(e.mode===`package`){o=i.meta.packageLabel;let e=i.meta.packageId,t=n.get(e);s=t??tm(e),t||n.set(e,s)}else{let t;if(e.mode===`source`)t=a?.source??`unknown`;else if(e.mode===`duplicates`)t=a?.duplicated?i.meta.kind===`module`?`duplicate`:`containsDuplicate`:`unique`;else{let n=lm(i.id,a?.bytes,e.comparison);t=n.key,c=n.deltaBytes}o=nm[t].label,s=rm[t]}let l=`${o}\0${s.itemStyle.color}`;return t.has(l)||t.set(l,{label:o,color:s.itemStyle.color}),{...i,...s,meta:{...i.meta,colorLabel:o,deltaBytes:c},children:i.children?.map(r)}}return{nodes:e.nodes.map(r),legend:[...t.values()]}}function dm(e,t){switch(e){case`package`:return`颜色表示所属分包,与筛选和体积独立;同一分包保持同色。`;case`source`:return`按完整当前快照中的来源分类;仅明确的 WeVu 路径标记为 runtime,插件不等同于 runtime,容器可包含混合来源。`;case`duplicates`:return`按模块 ID 判断是否实际产出到多个不同分包,不按 npm 版本判断;容器“含重复模块”不代表其中所有内容重复。`;case`delta`:return t?`对比完整快照的同一分包 / 文件 / 模块位置,使用产物字节数;缺失体积为未知,新增单独标记。颜色不改变筛选后的面积;已删除节点不在当前图中。`:`无比较快照,无法判断体积变化;面积仍显示当前筛选结果。`}}function fm(e,t,n,r,i){let a=X(e,n,i.id),o=Math.max(i.bytes??i.originalBytes??1,1),s=r.get(i.id)??1;return{id:a,name:Yl(i.source),value:o,meta:{kind:`module`,nodeId:a,packageId:e,packageLabel:t,fileName:n,source:i.source,sourceType:i.sourceType,bytes:i.bytes,originalBytes:i.originalBytes,packageCount:s}}}function pm(e,t,n,r){let i=Jl(e,n),a=Math.max(r.size??1,1);return{id:i,name:Yl(r.source??n),value:a,meta:{kind:`asset`,nodeId:i,packageId:e,packageLabel:t,fileName:n,source:r.source??n,bytes:r.size}}}function mm(e,t,n,r,i,a){let o=Y(t,r.file),s=Math.max(a,1);return{id:o,name:Yl(r.file),value:s,meta:{kind:`file`,nodeId:o,packageId:t,packageLabel:n.get(t)??e,fileName:r.file,from:r.from,childCount:i.length,type:r.type,bytes:r.size},children:i.length>0?i:void 0}}function hm(e,t,n){let r=ql(e.id);return{id:r,name:e.label,value:Math.max(t,1),meta:{kind:`package`,nodeId:r,packageId:e.id,packageLabel:e.label,packageType:e.type,fileCount:e.files.length,totalBytes:e.files.every(e=>e.size!==void 0&&Number.isFinite(e.size)&&e.size>=0)?t:void 0},children:n}}function gm(e){return e.reduce((e,t)=>e+t.value,0)}function _m(e,t){return`${e}\u0000${t}`}function vm(e,t,n){return n.mode===`all`||n.mode===`selected-package`?!!t.source:n.mode===`growth`?n.growthFileKeys.has(_m(e,t.file)):n.mode===`source`&&!!t.source}function ym(e,t){return e.mode===`all`||e.mode===`selected-package`?t:e.mode===`growth`?t.filter(t=>e.growthModuleIds.has(t.id)):e.mode===`duplicates`?t.filter(t=>e.duplicateModuleIds.has(t.id)):e.mode===`node_modules`?t.filter(e=>e.sourceType===`node_modules`):t.filter(e=>e.sourceType===`src`||e.sourceType===`workspace`)}function bm(e){return e.result.packages.flatMap(t=>{if(e.filter.mode===`selected-package`&&(!e.filter.selectedPackageId||t.id!==e.filter.selectedPackageId))return[];let n=t.files.flatMap(n=>{let r=e.filter.mode===`growth`&&e.filter.growthFileKeys.has(_m(t.id,n.file)),i=n.type===`chunk`?ym(e.filter,n.modules??[]).map(r=>fm(t.id,t.label,n.file,e.moduleUsageCount,r)):vm(t.id,n,e.filter)?[pm(t.id,t.label,n.file,n)]:[];if(e.filter.mode!==`all`&&e.filter.mode!==`selected-package`&&i.length===0&&!r)return[];let a=e.filter.mode===`all`||e.filter.mode===`selected-package`||r?n.size??gm(i):gm(i);return[mm(t.label,t.id,e.packageLabelMap,n,i,a)]});return n.length===0?[]:[hm(t,e.filter.mode===`all`||e.filter.mode===`selected-package`?t.files.reduce((e,t)=>e+(t.size??0),0):gm(n),n)]})}function xm(e,t,n,r){let i=D(()=>new Map((e.value?.packages??[]).map(e=>[e.id,e.label]))),a=D(()=>sm(e.value)),o=D(()=>r.comparisonResult.value?cm(r.comparisonResult.value):null),s=D(()=>{let t=e.value;return t?bm({result:t,packageLabelMap:i.value,moduleUsageCount:a.value.moduleUsageCount,filter:n.value}):[]}),c=D(()=>um({nodes:s.value,mode:r.mode.value,current:a.value,comparison:r.mode.value===`delta`?o.value:null})),l=D(()=>c.value.nodes),u=D(()=>c.value.legend),d=D(()=>dm(r.mode.value,r.comparisonResult.value!==null));return{treemapOption:D(()=>{let e=t.value===`dark`,n=e?`#f8fafc`:`#0f172a`;return{backgroundColor:`transparent`,animation:!1,tooltip:{formatter:e=>$l(e.data?.meta),confine:!0,borderColor:e?`rgba(148, 163, 184, 0.2)`:`rgba(71, 85, 105, 0.18)`,borderWidth:1,backgroundColor:e?`rgba(15, 18, 24, 0.96)`:`rgba(255, 255, 255, 0.98)`,extraCssText:`max-width: 26rem; white-space: normal; overflow-wrap: anywhere; border-radius: 8px; box-shadow: 0 12px 32px rgba(0, 0, 0, 0.24);`,padding:[10,12],textStyle:{color:n,fontSize:12,lineHeight:19}},series:[{type:`treemap`,animation:!1,top:2,right:2,bottom:2,left:2,sort:`desc`,squareRatio:(1+Math.sqrt(5))/2,nodeClick:!1,roam:!1,breadcrumb:{show:!1},visibleMin:14,label:{show:!0,color:n,formatter:Zl,fontSize:11,fontWeight:500,lineHeight:15,minMargin:5,overflow:`truncate`,textBorderWidth:0},labelLayout:({rect:e})=>({hideOverlap:!0,fontSize:e.width<60||e.height<34||e.width*e.height<2800?0:11}),upperLabel:{show:!0,color:n,formatter:e=>Zl(e).replace(`
34
- `,` · `),fontSize:12,fontWeight:650,lineHeight:17,overflow:`truncate`,textBorderWidth:0},itemStyle:{borderColor:`#475569`,borderWidth:1,gapWidth:1},emphasis:{itemStyle:{borderWidth:2}},levels:Kl,data:l.value}]}}),treemapNodes:l,treemapLegend:u,treemapColorDescription:d}}function Sm(e){let t=o(null),r=0,i=D(()=>e.selectedMeta.value?Up(e.nodes.value,e.selectedMeta.value.nodeId):[]),a=D(()=>{let n=e.selectedFile.value;return n&&`${n.packageId}:${n.file}`===t.value?.fileKey?t.value.path:null});async function s(t){let n=++r;Up(e.nodes.value,t.nodeId).length===0&&await e.setFilterMode(`all`);let i=Up(e.nodes.value,t.nodeId).at(-1);n===r&&i&&(e.selectedMeta.value=i.meta,e.selectedFile.value=null,e.selectedWarning.value=null)}async function c(){let n=++r;e.filterMode.value===`selected-package`&&await e.setFilterMode(`all`),n===r&&(e.selectedMeta.value=null,e.selectedFile.value=null,e.selectedWarning.value=null,t.value=null)}function l(n){if(r++,n.kind===`package`)return;let i=e.largestFiles.value.find(e=>e.packageId===n.packageId&&e.file===n.fileName);if(!i)return;let a=n.kind===`module`?i.modules?.find(e=>X(i.packageId,i.file,e.id)===n.nodeId):null,o=n.kind===`module`?a?.sourceType===`node_modules`?void 0:a?.source:i.source??i.modules?.find(e=>e.sourceType!==`node_modules`&&e.source)?.source;o&&(t.value={fileKey:`${i.packageId}:${i.file}`,path:o.split(`?`,1)[0]},e.selectedMeta.value=n,e.selectedFile.value=i,e.selectedWarning.value=null,e.activeTab.value=`source`)}return n([e.nodes,e.activeTab],([t])=>{let n=e.selectedMeta.value;if(e.activeTab.value!==`treemap`||!n)return;let r=Up(t,n.nodeId).at(-1)??t.find(e=>e.meta.packageId===n.packageId);e.selectedMeta.value=r?.meta??null,!r&&e.filterMode.value===`selected-package`&&e.setFilterMode(`all`),e.selectedFile.value=null,e.selectedWarning.value=null}),{treemapPath:i,treemapSourcePath:a,handleSelectTreemapNode:s,handleResetTreemapFocus:c,handleOpenTreemapSource:l}}Fe(),De(),ke(),Pe(),Te([Oe,we,Ne,Ae,Me,Ce]);function Cm(e){let t=o(null),n=o(null),r=o(null),i=D(()=>e.comparisonResultRef.value!==null),{canUseSelectedPackageFilter:a,duplicateModuleIds:s,growthModuleIds:c,handleInspectTreemapProblem:l,handleUpdateTreemapColorMode:u,handleUpdateTreemapFilterMode:d,setTreemapFilterMode:f,treemapColorMode:p,treemapFilterMode:m,treemapFilterState:h}=Gp({duplicateModules:e.duplicateModules,incrementAttribution:e.incrementAttribution,selectedBudgetWarning:r,selectedLargestFile:n,selectedTreemapMeta:t,hasComparison:i}),{treemapOption:g,treemapNodes:_,treemapLegend:v,treemapColorDescription:y}=xm(e.resultRef,e.resolvedTheme,h,{mode:p,comparisonResult:e.comparisonResultRef}),b=D(()=>e.resultRef.value!==null&&_.value.length===0),x=D(()=>Hp({files:e.largestFiles.value,filterState:h.value,meta:t.value,warning:r.value})),S=D(()=>x.value.slice(0,10)),C=D(()=>n.value?`${n.value.packageId}:${n.value.file}`:null),w=D(()=>{if(n.value)return Y(n.value.packageId,n.value.file);let e=t.value;return e&&(e.kind===`module`||e.kind===`asset`)?Y(e.packageId,e.fileName):e?.nodeId??null}),T=D(()=>{if(n.value)return n.value;let r=t.value;return!r||r.kind===`package`?null:e.largestFiles.value.find(e=>e.packageId===r.packageId&&e.file===r.fileName)??null}),E=D(()=>{let n=t.value;return n?.kind===`module`?e.duplicateModules.value.filter(e=>X(n.packageId,n.fileName,e.id)===n.nodeId):e.duplicateModules.value}),O=D(()=>Wp({modules:T.value?.modules??[],mode:m.value,growthModuleIds:c.value,duplicateModuleIds:s.value,duplicateModules:e.duplicateModules.value})),k=Sm({activeTab:e.activeTab,nodes:_,largestFiles:e.largestFiles,selectedMeta:t,selectedFile:n,selectedWarning:r,filterMode:m,setFilterMode:f});function A(e){if(!e||typeof e!=`object`||!(`data`in e))return;let t=e.data;if(!t||typeof t!=`object`||!(`id`in t)||typeof t.id!=`string`)return;let n=Up(_.value,t.id).at(-1)?.meta;n&&k.handleSelectTreemapNode(n)}let{bindChartRef:ee,destroyChart:j,ensureChart:te,handleResize:ne}=Kp({activeTab:e.activeTab,resolvedTheme:e.resolvedTheme,treemapOption:g,handleChartClick:A,focusNodeId:w});function M(e){n.value=e,t.value={kind:`file`,nodeId:Y(e.packageId,e.file),packageId:e.packageId,packageLabel:e.packageLabel,fileName:e.file,from:e.from,childCount:e.moduleCount,type:e.type,bytes:e.size}}function N(i){if(r.value=i,n.value=Hp({files:e.largestFiles.value,filterState:h.value,meta:null,warning:i})[0]??null,!n.value||i.scope===`total`){t.value=null;return}let a=e.packageInsights.value.find(e=>e.id===i.id);t.value=a?{kind:`package`,nodeId:ql(a.id),packageId:a.id,packageLabel:a.label,packageType:a.type,fileCount:a.fileCount,totalBytes:a.totalBytes}:null}function P(i){e.activeTab.value=`packages`,t.value={kind:`package`,nodeId:ql(i.id),packageId:i.id,packageLabel:i.label,packageType:i.type,fileCount:i.fileCount,totalBytes:i.totalBytes},n.value=null,r.value=null,m.value=`selected-package`}function F(){t.value=null,n.value=null,r.value=null}return{...k,activeLargestFileKey:C,bindChartRef:ee,canUseSelectedPackageFilter:a,destroyChart:j,ensureChart:te,filteredDuplicateModules:E,filteredLargestFiles:x,handleResize:ne,handleInspectTreemapProblem:l,handleSelectBudgetWarning:N,handleSelectLargestFile:M,handleSelectPackageInsight:P,handleUpdateTreemapColorMode:u,hasTreemapComparison:i,handleUpdateTreemapFilterMode:d,isTreemapEmpty:b,resetTreemapSelection:F,selectedBudgetWarning:r,selectedFileModules:O,selectedLargestFile:n,selectedTreemapMeta:t,treemapColorMode:p,treemapColorDescription:y,treemapLegend:v,treemapNodes:_,treemapFilterMode:m,visibleLargestFiles:S}}function wm(e){let t=S(),n=ee(),r=D(()=>t.fullPath!==`/analyze`);async function i(){let r=n.resolve({path:t.path,query:t.query}).href;await V(new URL(r,window.location.origin).href),e.exportStatus.value=`视图链接已复制`,e.moreMenuOpen.value=!1}async function a(){e.resetTreemapSelection(),e.resetPageSelection(),e.moreMenuOpen.value=!1,await n.replace({path:`/analyze`,query:{}}),e.exportStatus.value=`已重置视图`}return{canResetView:r,copyViewLink:i,resetAnalyzeView:a}}var Tm=`weapp-vite:dashboard:analyze-work-queue`;function Em(){try{let e=window.localStorage.getItem(Tm);return Op(e?JSON.parse(e):null)}catch{return[]}}function Dm(e){try{window.localStorage.setItem(Tm,JSON.stringify(e))}catch{}}function Om(){let e=o([]),n=D(()=>e.value.filter(e=>!e.completedAt)),r=D(()=>e.value.filter(e=>e.completedAt)),i=D(()=>e.value.filter(e=>e.targetKind===`action`&&!e.completedAt).map(e=>e.targetKey));function a(t){e.value=Op(t),Dm(e.value)}function s(t){let n=e.value.find(e=>e.id===t.id);a([n?{...n,...t,createdAt:n.createdAt,completedAt:void 0}:t,...e.value.filter(e=>e.id!==t.id)])}function c(t){let n=new Date().toISOString();a(e.value.map(e=>e.id===t?{...e,completedAt:e.completedAt?void 0:n}:e))}function l(t){a(e.value.filter(e=>e.id!==t))}function u(){a(e.value.filter(e=>!e.completedAt))}return t(()=>{e.value=Em()}),{completedWorkQueueItems:r,openWorkQueueItems:n,queuedActionKeys:i,workQueueItems:e,addWorkQueueItem:s,clearCompletedWorkQueueItems:u,removeWorkQueueItem:l,toggleWorkQueueItem:c}}function $(e){return e}function km(e){return typeof e!=`number`||Number.isNaN(e)||e===0?``:`${e>0?`+`:`-`}${R(Math.abs(e))}`}function Am(e){let t=S(),n=ee(),r=D({get(){let e=t.query.tab;return e===`diagnostics`||e===`review`||e===`graph`||e===`treemap`||e===`files`||e===`source`||e===`packages`||e===`modules`?e:`overview`},set(e){let r={...t.query};e===`overview`?delete r.tab:r.tab=e,n.replace({query:r})}}),i=D(()=>e.packageInsights.value.reduce((e,t)=>e+t.chunkCount,0)),a=D(()=>e.packageInsights.value.reduce((e,t)=>e+t.assetCount,0)),o=D(()=>e.duplicateModules.value.reduce((e,t)=>e+t.bytes,0)),s=D(()=>{let t=e.summary.value,n=t.compressedSizeSource===`real`?`Brotli`:`估算压缩后`,r=km(t.compressedDeltaBytes);return`${n} ${R(t.compressedBytes)}${r?` · ${r}`:``}`}),c=D(()=>{let t=km(e.summary.value.sizeDeltaBytes);return t?`较上次 ${t}`:s.value});function l(){return[$({label:`包体数量`,value:String(e.summary.value.packageCount),iconName:`metric-packages`}),$({label:`分包配置`,value:String(e.summary.value.subpackageCount),iconName:`metric-subpackages`}),$({label:`Chunk 数量`,value:String(i.value),iconName:`metric-chunks`}),$({label:`Asset 数量`,value:String(a.value),iconName:`metric-assets`}),$({label:`总产物体积`,value:R(e.summary.value.totalBytes),detail:s.value,wide:!0,iconName:`metric-size-outline`})]}function u(){return[$({label:`源码模块`,value:String(e.summary.value.moduleCount),iconName:`metric-modules`}),$({label:`跨包复用`,value:String(e.summary.value.duplicateCount),iconName:`metric-duplicates`}),$({label:`来源类型`,value:String(e.moduleSourceSummary.value.length),iconName:`metric-sources`}),$({label:`复用体积`,value:o.value>0?R(o.value):`0 B`,iconName:`metric-copy`}),$({label:`预算告警`,value:String(e.summary.value.budgetWarningCount),detail:c.value,wide:!0,iconName:`metric-time`})]}function d(){return[$({label:`包体数量`,value:String(e.summary.value.packageCount),iconName:`tab-packages`}),$({label:`源码模块`,value:String(e.summary.value.moduleCount),iconName:`metric-modules`}),$({label:`跨包复用`,value:String(e.summary.value.duplicateCount),iconName:`metric-duplicates`}),$({label:`预算告警`,value:String(e.summary.value.budgetWarningCount),iconName:`metric-entries`}),$({label:`总产物体积`,value:R(e.summary.value.totalBytes),detail:s.value,wide:!0,iconName:`metric-size`})]}return{activeTab:r,topCards:D(()=>r.value===`packages`?l():r.value===`modules`?u():d()),packageTypeSummary:e.packageTypeSummary}}var jm=[{id:`metrics`,label:`关键指标`}],Mm=[{id:`review`,label:`PR 风险清单`}],Nm=[{id:`packages`,label:`包与产物`}],Pm=[{id:`modules`,label:`模块复用`}],Fm=[{id:`source`,label:`源码对比`}];function Im(){let e=o(!1),{resolvedTheme:r}=de(),{baselineSnapshotId:i,comparisonMode:a,comparisonResultRef:s,historySnapshots:c,lastUpdatedAt:l,resultRef:u,setBaselineSnapshot:d,setComparisonMode:f,updateCount:p}=he(),m=xp(u,s),{activeTab:h,topCards:g,packageTypeSummary:_}=Am({summary:m.summary,packageInsights:m.packageInsights,packageTypeSummary:m.packageTypeSummary,duplicateModules:m.duplicateModules,moduleSourceSummary:m.moduleSourceSummary,lastUpdatedAt:l}),v=Cm({activeTab:h,resultRef:u,comparisonResultRef:s,resolvedTheme:r,largestFiles:m.artifactFiles,duplicateModules:m.duplicateModules,incrementAttribution:m.incrementAttribution,packageInsights:m.packageInsights}),{actionItems:y}=Nf({budgetWarnings:m.budgetWarnings,incrementAttribution:m.incrementAttribution,duplicateModules:m.duplicateModules,largestFiles:m.largestFiles,packageInsights:m.packageInsights}),b=Om(),x=D(()=>Of({actionItems:y.value,workQueueItems:b.workQueueItems.value})),{commandItems:S}=Uf({actionItems:y,budgetWarnings:m.budgetWarnings,duplicateModules:m.duplicateModules,incrementAttribution:m.incrementAttribution,largestFiles:m.largestFiles,packageInsights:m.packageInsights}),C=zp({resultRef:u,summary:m.summary,packageInsights:m.packageInsights,largestFiles:m.largestFiles,duplicateModules:m.duplicateModules,budgetWarnings:m.budgetWarnings,incrementAttribution:m.incrementAttribution,incrementSummary:m.incrementSummary,prReviewChecklist:x,workQueueItems:b.workQueueItems,moreMenuOpen:e}),w=jp({activeTab:h,actionItems:y,workQueueItems:b.workQueueItems,addWorkQueueItem:b.addWorkQueueItem,exportStatus:C.exportStatus,treemapFilterMode:v.treemapFilterMode,selectedTreemapMeta:v.selectedTreemapMeta,selectedLargestFile:v.selectedLargestFile,selectedBudgetWarning:v.selectedBudgetWarning,handleSelectBudgetWarning:v.handleSelectBudgetWarning,handleSelectLargestFile:v.handleSelectLargestFile}),T=wm({exportStatus:C.exportStatus,moreMenuOpen:e,resetPageSelection:w.resetPageSelection,resetTreemapSelection:v.resetTreemapSelection}),E=D(()=>`${p.value} 次数据同步`),O=D(()=>r.value===`dark`?`status-dark`:`status-light`),A=D(()=>[{iconName:O.value,label:E.value},{label:l.value}]),ee=D(()=>v.selectedBudgetWarning.value?.id??null),j=D(()=>a.value===`baseline`?`选定基线`:`上次构建`);function te(){e.value=!1}function ne(t){t.key===`Escape`&&(e.value=!1),(t.metaKey||t.ctrlKey)&&t.key.toLowerCase()===`k`&&(t.preventDefault(),u.value&&(w.commandPaletteOpen.value=!0))}return n(u,()=>{h.value!==`treemap`&&(v.resetTreemapSelection(),v.treemapFilterMode.value===`selected-package`&&(v.treemapFilterMode.value=`all`)),w.resetPageSelection()}),t(()=>{window.addEventListener(`resize`,v.handleResize),window.addEventListener(`keydown`,ne),window.addEventListener(`click`,te),v.ensureChart()}),k(()=>{window.removeEventListener(`resize`,v.handleResize),window.removeEventListener(`keydown`,ne),window.removeEventListener(`click`,te),v.destroyChart()}),{...m,...w,...C,...v,...T,...b,actionItems:y,activeTab:h,activeBudgetWarningId:ee,baselineSnapshotId:i,commandItems:S,comparisonMode:a,historySnapshots:c,metricPackageTypeSummary:_,modulesLayoutItems:Pm,moreMenuOpen:e,overviewLayoutItems:jm,packagesLayoutItems:Nm,prReviewChecklist:x,resolvedTheme:r,reviewLayoutItems:Mm,setBaselineSnapshot:d,setComparisonMode:f,sourceLayoutItems:Fm,statusPills:A,topCards:g,treemapFilterOptions:_e,treemapComparisonLabel:j,resultRef:u}}var Lm=e({default:()=>Bm}),Rm=r({__name:`analyze`,setup(e,{expose:t}){t();let{actionItems:n,activeBudgetWarningId:r,activeLargestFileKey:i,activeTab:a,activeWorkQueueItemId:o,baselineSnapshotId:s,bindChartRef:c,budgetWarnings:l,canUseSelectedPackageFilter:u,canResetView:d,clearCompletedWorkQueueItems:f,commandItems:p,commandPaletteOpen:m,comparisonMode:h,copyMarkdownReport:g,copyPrReport:_,copyPrReviewChecklist:v,copySummary:y,copyViewLink:b,copyWorkQueueReport:x,exportCsv:S,exportJson:C,exportMarkdown:w,exportStatus:T,filteredDuplicateModules:E,filteredLargestFiles:D,handleAddActionToWorkQueue:O,handleInspectTreemapProblem:k,handleOpenTreemapSource:A,handleResetTreemapFocus:ee,handleSelectAction:j,handleSelectBudgetWarning:te,handleSelectLargestFile:ne,handleSelectPackageInsight:M,handleSelectReviewChecklistItem:N,handleSelectCommand:P,handleSelectTreemapNode:F,handleSelectWorkQueueItem:re,handleUpdateTreemapColorMode:ie,hasTreemapComparison:ae,handleUpdateTreemapFilterMode:oe,historySnapshots:se,incrementAttribution:ce,incrementSummary:le,isTreemapEmpty:I,largestFiles:L,metricPackageTypeSummary:ue,modulesLayoutItems:de,moduleSourceSummary:fe,moreMenuOpen:R,openWorkQueueItems:z,overviewLayoutItems:pe,packageInsights:me,packagesLayoutItems:he,prReviewChecklist:ge,queuedActionKeys:_e,removeWorkQueueItem:B,resetAnalyzeView:ve,resolvedTheme:ye,resultRef:V,reviewLayoutItems:be,selectedActionKey:xe,selectedFileModules:Se,selectedTreemapMeta:H,setBaselineSnapshot:U,setComparisonMode:W,sourceLayoutItems:Ce,statusPills:we,summary:Te,toggleWorkQueueItem:Ee,topCards:De,treemapColorMode:Oe,treemapColorDescription:ke,treemapComparisonLabel:Ae,treemapLegend:je,treemapNodes:Me,treemapPath:Ne,treemapSourcePath:Pe,treemapFilterMode:Fe,treemapFilterOptions:Ie,visibleLargestFiles:Le,workQueueItems:Re}=Im(),ze={actionItems:n,activeBudgetWarningId:r,activeLargestFileKey:i,activeTab:a,activeWorkQueueItemId:o,baselineSnapshotId:s,bindChartRef:c,budgetWarnings:l,canUseSelectedPackageFilter:u,canResetView:d,clearCompletedWorkQueueItems:f,commandItems:p,commandPaletteOpen:m,comparisonMode:h,copyMarkdownReport:g,copyPrReport:_,copyPrReviewChecklist:v,copySummary:y,copyViewLink:b,copyWorkQueueReport:x,exportCsv:S,exportJson:C,exportMarkdown:w,exportStatus:T,filteredDuplicateModules:E,filteredLargestFiles:D,handleAddActionToWorkQueue:O,handleInspectTreemapProblem:k,handleOpenTreemapSource:A,handleResetTreemapFocus:ee,handleSelectAction:j,handleSelectBudgetWarning:te,handleSelectLargestFile:ne,handleSelectPackageInsight:M,handleSelectReviewChecklistItem:N,handleSelectCommand:P,handleSelectTreemapNode:F,handleSelectWorkQueueItem:re,handleUpdateTreemapColorMode:ie,hasTreemapComparison:ae,handleUpdateTreemapFilterMode:oe,historySnapshots:se,incrementAttribution:ce,incrementSummary:le,isTreemapEmpty:I,largestFiles:L,metricPackageTypeSummary:ue,modulesLayoutItems:de,moduleSourceSummary:fe,moreMenuOpen:R,openWorkQueueItems:z,overviewLayoutItems:pe,packageInsights:me,packagesLayoutItems:he,prReviewChecklist:ge,queuedActionKeys:_e,removeWorkQueueItem:B,resetAnalyzeView:ve,resolvedTheme:ye,resultRef:V,reviewLayoutItems:be,selectedActionKey:xe,selectedFileModules:Se,selectedTreemapMeta:H,setBaselineSnapshot:U,setComparisonMode:W,sourceLayoutItems:Ce,statusPills:we,summary:Te,toggleWorkQueueItem:Ee,topCards:De,treemapColorMode:Oe,treemapColorDescription:ke,treemapComparisonLabel:Ae,treemapLegend:je,treemapNodes:Me,treemapPath:Ne,treemapSourcePath:Pe,treemapFilterMode:Fe,treemapFilterOptions:Ie,visibleLargestFiles:Le,workQueueItems:Re,AnalyzeCommandPalette:_t,AnalyzeEmptyPayloadPanel:wt,AnalyzeResultSections:Zd,AnalyzeToolbar:xf};return Object.defineProperty(ze,"__isScriptSetup",{enumerable:!1,value:!0}),ze}});function zm(e,t,n,r,i,a){return O(),F(`div`,{class:l(r.activeTab===`treemap`?`flex h-full min-h-0 flex-col gap-2`:`grid min-h-[calc(100dvh-8rem)] grid-rows-[auto_minmax(44rem,1fr)] gap-4`)},[r.resultRef?N(``,!0):(O(),x(r.AnalyzeEmptyPayloadPanel,{key:0})),P(r.AnalyzeToolbar,{"more-menu-open":r.moreMenuOpen,"onUpdate:moreMenuOpen":t[0]||=e=>r.moreMenuOpen=e,"can-reset-view":r.canResetView,"can-search":!!r.resultRef,"export-status":r.exportStatus,"open-work-queue-count":r.openWorkQueueItems.length,"status-pills":r.statusPills,onCopyMarkdown:r.copyMarkdownReport,onCopyPr:r.copyPrReport,onCopySummary:r.copySummary,onCopyViewLink:r.copyViewLink,onExportCsv:r.exportCsv,onExportJson:r.exportJson,onExportMarkdown:r.exportMarkdown,onOpenSearch:t[1]||=e=>r.commandPaletteOpen=!0,onResetView:r.resetAnalyzeView},null,8,[`more-menu-open`,`can-reset-view`,`can-search`,`export-status`,`open-work-queue-count`,`status-pills`,`onCopyMarkdown`,`onCopyPr`,`onCopySummary`,`onCopyViewLink`,`onExportCsv`,`onExportJson`,`onExportMarkdown`,`onResetView`]),r.resultRef?(O(),x(r.AnalyzeResultSections,{key:1,"action-items":r.actionItems,"active-budget-warning-id":r.activeBudgetWarningId,"active-largest-file-key":r.activeLargestFileKey,"active-tab":r.activeTab,"active-work-queue-item-id":r.activeWorkQueueItemId,"baseline-snapshot-id":r.baselineSnapshotId,"bind-chart-ref":r.bindChartRef,"budget-config":r.resultRef.metadata?.budgets,"budget-warnings":r.budgetWarnings,"can-use-selected-package-filter":r.canUseSelectedPackageFilter,"comparison-mode":r.comparisonMode,"has-treemap-comparison":r.hasTreemapComparison,"copy-status":r.exportStatus,"filtered-duplicate-modules":r.filteredDuplicateModules,"filtered-largest-files":r.filteredLargestFiles,"history-snapshots":r.historySnapshots,"increment-attribution":r.incrementAttribution,"increment-summary":r.incrementSummary,"is-treemap-empty":r.isTreemapEmpty,"largest-files":r.largestFiles,"metric-package-type-summary":r.metricPackageTypeSummary,"modules-layout-items":r.modulesLayoutItems,"module-source-summary":r.moduleSourceSummary,"overview-layout-items":r.overviewLayoutItems,"package-insights":r.packageInsights,"packages-layout-items":r.packagesLayoutItems,"pr-review-checklist":r.prReviewChecklist,"queued-action-keys":r.queuedActionKeys,"review-layout-items":r.reviewLayoutItems,result:r.resultRef,"selected-action-key":r.selectedActionKey,"selected-file-modules":r.selectedFileModules,"selected-treemap-meta":r.selectedTreemapMeta,"source-layout-items":r.sourceLayoutItems,theme:r.resolvedTheme,"top-cards":r.topCards,"total-bytes":r.summary.totalBytes,"treemap-color-mode":r.treemapColorMode,"treemap-color-description":r.treemapColorDescription,"treemap-comparison-label":r.treemapComparisonLabel,"treemap-legend":r.treemapLegend,"treemap-nodes":r.treemapNodes,"treemap-path":r.treemapPath,"treemap-source-path":r.treemapSourcePath,"treemap-filter-mode":r.treemapFilterMode,"treemap-filter-options":r.treemapFilterOptions,"visible-largest-files":r.visibleLargestFiles,"work-queue-items":r.workQueueItems,onAddActionToQueue:r.handleAddActionToWorkQueue,onClearCompletedWorkQueue:r.clearCompletedWorkQueueItems,onCopyPr:r.copyPrReport,onCopyReviewChecklist:r.copyPrReviewChecklist,onCopyWorkQueue:r.copyWorkQueueReport,onInspectTreemapProblem:r.handleInspectTreemapProblem,onOpenTreemapSource:r.handleOpenTreemapSource,onRemoveWorkQueueItem:r.removeWorkQueueItem,onResetTreemapFocus:r.handleResetTreemapFocus,onSelectAction:r.handleSelectAction,onSelectBudgetWarning:r.handleSelectBudgetWarning,onSelectFile:r.handleSelectLargestFile,onSelectPackage:r.handleSelectPackageInsight,onSelectTreemapNode:r.handleSelectTreemapNode,onSelectReviewChecklistItem:r.handleSelectReviewChecklistItem,onSelectWorkQueueItem:r.handleSelectWorkQueueItem,onSetBaseline:r.setBaselineSnapshot,onSetComparisonMode:r.setComparisonMode,onToggleWorkQueueItem:r.toggleWorkQueueItem,onUpdateTreemapColorMode:r.handleUpdateTreemapColorMode,onUpdateTreemapFilterMode:r.handleUpdateTreemapFilterMode},null,8,`action-items.active-budget-warning-id.active-largest-file-key.active-tab.active-work-queue-item-id.baseline-snapshot-id.bind-chart-ref.budget-config.budget-warnings.can-use-selected-package-filter.comparison-mode.has-treemap-comparison.copy-status.filtered-duplicate-modules.filtered-largest-files.history-snapshots.increment-attribution.increment-summary.is-treemap-empty.largest-files.metric-package-type-summary.modules-layout-items.module-source-summary.overview-layout-items.package-insights.packages-layout-items.pr-review-checklist.queued-action-keys.review-layout-items.result.selected-action-key.selected-file-modules.selected-treemap-meta.source-layout-items.theme.top-cards.total-bytes.treemap-color-mode.treemap-color-description.treemap-comparison-label.treemap-legend.treemap-nodes.treemap-path.treemap-source-path.treemap-filter-mode.treemap-filter-options.visible-largest-files.work-queue-items.onAddActionToQueue.onClearCompletedWorkQueue.onCopyPr.onCopyReviewChecklist.onCopyWorkQueue.onInspectTreemapProblem.onOpenTreemapSource.onRemoveWorkQueueItem.onResetTreemapFocus.onSelectAction.onSelectBudgetWarning.onSelectFile.onSelectPackage.onSelectTreemapNode.onSelectReviewChecklistItem.onSelectWorkQueueItem.onSetBaseline.onSetComparisonMode.onToggleWorkQueueItem.onUpdateTreemapColorMode.onUpdateTreemapFilterMode`.split(`.`))):N(``,!0),P(r.AnalyzeCommandPalette,{open:!!(r.resultRef&&r.commandPaletteOpen),items:r.commandItems,onClose:t[2]||=e=>r.commandPaletteOpen=!1,onSelect:r.handleSelectCommand},null,8,[`open`,`items`,`onSelect`])],2)}var Bm=I(Rm,[[`render`,zm]]);export{Bm as default,ze as n,Be as r,Lm as t};
17
+ `)}function wv(e){let t=P(null),n=P(!1),r=P(null);function i(){t.value=null,r.value=null}function a(){e.selectedLargestFile.value=null,e.selectedBudgetWarning.value=null}function o(t){e.selectedBudgetWarning.value=null,e.openInspectionFile(t)}function s(e){t.value=e.key}function c(n){t.value=n.key,n.warning?e.handleSelectBudgetWarning(n.warning):n.file?o(n.file):(n.moduleMeta&&(e.selectedTreemapMeta.value=n.moduleMeta,a()),n.kind===`increment`||n.kind===`duplicate`?e.setTreemapFilterMode(n.kind===`increment`?`growth`:`duplicates`,n.tab):e.activeTab.value=n.tab)}function l(t){t.action?c(t.action):t.warning?e.handleSelectBudgetWarning(t.warning):t.file?o(t.file):t.moduleMeta?(e.selectedTreemapMeta.value=t.moduleMeta,a(),e.setTreemapFilterMode(t.kind===`increment`?`growth`:`duplicates`,t.tab)):t.packageMeta?(e.selectedTreemapMeta.value=t.packageMeta,a(),e.setTreemapFilterMode(`selected-package`,t.tab)):e.activeTab.value=t.tab}function u(t){e.addWorkQueueItem(Sv(t)),e.exportStatus.value=`已加入清单`}function d(t){if(r.value=t.id,t.targetKind===`action`){let n=e.actionItems.value.find(e=>e.key===t.targetKey);if(n){c(n);return}}e.activeTab.value=t.tab}function f(t){if(t.actionKey){let n=e.actionItems.value.find(e=>e.key===t.actionKey);if(n){c(n);return}}if(t.workQueueItemId){let n=e.workQueueItems.value.find(e=>e.id===t.workQueueItemId);if(n){d(n);return}}e.activeTab.value=t.tab}return{activeWorkQueueItemId:r,commandPaletteOpen:n,selectedActionKey:t,handleAddActionToWorkQueue:u,handleFocusAction:s,handleOpenFile:o,handleSelectAction:c,handleSelectCommand:l,handleSelectReviewChecklistItem:f,handleSelectWorkQueueItem:d,resetPageSelection:i}}function Tv(e){let t=e.packageInsights[0],n=e.duplicateModules[0];return[`总产物体积:${U(e.summary.totalBytes)}`,`Gzip:${U(e.summary.gzipBytes)}`,`Brotli/压缩后:${U(e.summary.compressedBytes)}`,`包体:${e.summary.packageCount} 个,分包配置:${e.summary.subpackageCount} 个`,`模块:${e.summary.moduleCount} 个,跨包复用:${e.summary.duplicateCount} 个`,`预算告警:${e.summary.budgetWarningCount} 个`,t?`最大包:${t.label} ${U(t.totalBytes)}`:``,n?`首要重复模块:${n.source},估算可节省 ${U(n.estimatedSavingBytes)}(${n.advice})`:``].filter(Boolean).join(`
18
+ `)}function Ev(e){let t=e.packageInsights.map(e=>`| ${e.label} | ${e.type} | ${U(e.totalBytes)} | ${U(e.compressedBytes)} | ${typeof e.sizeDeltaBytes==`number`?`${e.sizeDeltaBytes>0?`+`:`-`}${U(Math.abs(e.sizeDeltaBytes))}`:`无变化`} |`).join(`
19
+ `),n=e.largestFiles.slice(0,10).map(e=>`| ${e.file} | ${e.packageLabel} | ${e.type} | ${U(e.size)} | ${U(e.compressedSize)} |`).join(`
20
+ `),r=e.duplicateModules.slice(0,10).map(e=>`| ${e.source} | ${e.sourceType} | ${e.packageCount} | ${U(e.estimatedSavingBytes)} | ${e.advice} |`).join(`
21
+ `),i=e.budgetWarnings.map(e=>`| ${e.label} | ${e.scope} | ${U(e.currentBytes)} | ${U(e.limitBytes)} | ${e.status===`unknown`?`体积或归因不完整,无法验收`:`${e.status===`critical`?`超预算`:`接近预算`} ${(e.ratio*100).toFixed(1)}%`} |`).join(`
22
+ `),a=e.duplicateModules.find(e=>e.estimatedSavingBytes>0);return[`# weapp-vite analyze 报告`,``,`生成时间:${e.generatedAt??new Date().toISOString()}`,``,`## 本次变化摘要`,``,`- 总产物体积:${U(e.summary.totalBytes)}`,`- 压缩后体积:${U(e.summary.compressedBytes)}`,`- 包体数量:${e.summary.packageCount}`,`- 源码模块:${e.summary.moduleCount}`,`- 跨包复用:${e.summary.duplicateCount}`,`- 预算告警:${e.summary.budgetWarningCount}`,``,`## 预算告警`,``,`| 对象 | 范围 | 当前体积 | 预算 | 状态 |`,`| --- | --- | ---: | ---: | --- |`,i||`| - | - | 0 B | 0 B | 正常 |`,``,`## 建议动作`,``,e.budgetWarnings[0]?`- 优先处理 ${e.budgetWarnings[0].label}:当前 ${U(e.budgetWarnings[0].currentBytes)},预算 ${U(e.budgetWarnings[0].limitBytes)}。`:`- 当前没有预算超限或接近预算的包体。`,a?`- 优先处理重复模块 ${a.source},估算可节省 ${U(a.estimatedSavingBytes)}。`:`- 当前没有可估算收益的重复模块。`,``,`## 包体`,``,`| 包 | 类型 | 体积 | 压缩后 | 较上次 |`,`| --- | --- | ---: | ---: | ---: |`,t||`| - | - | 0 B | 0 B | 无变化 |`,``,`## Top 文件`,``,`| 文件 | 包 | 类型 | 体积 | 压缩后 |`,`| --- | --- | --- | ---: | ---: |`,n||`| - | - | - | 0 B | 0 B |`,``,`## 重复模块`,``,`| 模块 | 来源 | 包数量 | 估算可节省 | 建议 |`,`| --- | --- | ---: | ---: | --- |`,r||`| - | - | 0 | 0 B | - |`,``].join(`
23
+ `)}function Dv(e){let t=e.incrementAttribution.slice(0,8).map(e=>`| ${e.label} | ${e.category} | ${e.packageLabel} | +${U(e.deltaBytes)} | ${e.advice} |`).join(`
24
+ `),n=e.incrementSummary.slice(0,6).map(e=>`| ${e.category} | ${e.count} | +${U(e.deltaBytes)} |`).join(`
25
+ `),r=e.budgetWarnings.slice(0,5).map(e=>`| ${e.label} | ${U(e.currentBytes)} | ${U(e.limitBytes)} | ${e.status===`unknown`?`体积或归因不完整,无法验收`:`${e.status===`critical`?`超预算`:`接近预算`} ${(e.ratio*100).toFixed(1)}%`} |`).join(`
26
+ `),i=e.duplicateModules.slice(0,5).map(e=>`| ${e.source} | ${e.packageCount} | ${U(e.estimatedSavingBytes)} | ${e.advice} |`).join(`
27
+ `);return[`## weapp-vite analyze PR 摘要`,``,`- 总产物体积:${U(e.summary.totalBytes)}${typeof e.summary.sizeDeltaBytes==`number`?`(较上次 ${e.summary.sizeDeltaBytes>=0?`+`:`-`}${U(Math.abs(e.summary.sizeDeltaBytes))})`:``}`,`- 压缩后体积:${U(e.summary.compressedBytes)}`,`- 预算告警:${e.budgetWarnings.length}`,`- 增量归因:${e.incrementAttribution.length>0?`${e.incrementAttribution.length} 项正向增长`:`无正向增长`}`,`- 跨包复用:${e.duplicateModules.length}`,``,`### 增量来源`,``,`| 来源 | 项数 | 增量 |`,`| --- | ---: | ---: |`,n||`| - | 0 | 0 B |`,``,`### Top 增量`,``,`| 文件/模块 | 来源 | 包 | 增量 | 建议 |`,`| --- | --- | --- | ---: | --- |`,t||`| - | - | - | 0 B | - |`,``,`### 预算状态`,``,`| 对象 | 当前体积 | 预算 | 状态 |`,`| --- | ---: | ---: | --- |`,r||`| - | 0 B | 0 B | 正常 |`,``,`### 重复模块`,``,`| 模块 | 包数量 | 估算可节省 | 建议 |`,`| --- | ---: | ---: | --- |`,i||`| - | 0 | 0 B | - |`,``].join(`
28
+ `)}function Ov(e){let t=String(e??``);return/[",\n\r]/.test(t)?`"${t.replaceAll(`"`,`""`)}"`:t}function kv(e){return e.map(Ov).join(`,`)}function Av(e){let t=[kv([`section`,`label`,`package`,`type`,`sizeBytes`,`compressedBytes`,`deltaBytes`,`count`,`detail`])];for(let n of e.packageInsights)t.push(kv([`package`,n.label,n.id,n.type,n.totalBytes,n.compressedBytes,n.sizeDeltaBytes,n.fileCount,`${n.moduleCount} modules; ${n.duplicateModuleCount} duplicate modules`]));for(let n of e.largestFiles)t.push(kv([`file`,n.file,n.packageLabel,n.type,n.size,n.compressedSize,n.sizeDeltaBytes,n.moduleCount,n.source??n.from]));for(let n of e.duplicateModules)t.push(kv([`duplicate-module`,n.source,n.packages.map(e=>e.packageLabel).join(`; `),n.sourceType,n.bytes,n.estimatedSavingBytes,void 0,n.packageCount,n.advice]));for(let n of e.incrementAttribution)t.push(kv([`increment`,n.label,n.packageLabel,n.category,n.currentBytes,n.deltaBytes,n.deltaBytes,1,n.advice]));return t.join(`
29
+ `)}function jv(e){let t=new Blob([`${e.content}\n`],{type:e.type}),n=URL.createObjectURL(t),r=document.createElement(`a`);r.href=n,r.download=e.filename,r.click(),URL.revokeObjectURL(n)}function Mv(e){let t=P(``),n=M(()=>Tv({summary:e.summary.value,packageInsights:e.packageInsights.value,duplicateModules:e.duplicateModules.value})),r=M(()=>Ev({generatedAt:e.resultRef.value?.metadata?.generatedAt,summary:e.summary.value,packageInsights:e.packageInsights.value,largestFiles:e.largestFiles.value,duplicateModules:e.duplicateModules.value,budgetWarnings:e.budgetWarnings.value})),i=M(()=>Dv({summary:e.summary.value,incrementAttribution:e.incrementAttribution.value,incrementSummary:e.incrementSummary.value,budgetWarnings:e.budgetWarnings.value,duplicateModules:e.duplicateModules.value})),a=M(()=>Av({packageInsights:e.packageInsights.value,largestFiles:e.largestFiles.value,duplicateModules:e.duplicateModules.value,incrementAttribution:e.incrementAttribution.value}));async function o(){await W(n.value),t.value=`已复制`,e.moreMenuOpen.value=!1}async function s(){await W(r.value),t.value=`报告已复制`,e.moreMenuOpen.value=!1}async function c(){await W(i.value),t.value=`PR 摘要已复制`,e.moreMenuOpen.value=!1}async function l(){await W(e.prReviewChecklist.value.report),t.value=`评审清单已复制`}async function u(){await W(Cv(e.workQueueItems.value)),t.value=`处理清单已复制`}function d(){e.resultRef.value&&(jv({content:JSON.stringify(e.resultRef.value,null,2),filename:`weapp-vite-analyze.json`,type:`application/json`}),t.value=`已导出`,e.moreMenuOpen.value=!1)}function f(){jv({content:r.value,filename:`weapp-vite-analyze.md`,type:`text/markdown`}),t.value=`已导出 MD`,e.moreMenuOpen.value=!1}function p(){jv({content:a.value,filename:`weapp-vite-analyze.csv`,type:`text/csv;charset=utf-8`}),t.value=`已导出 CSV`,e.moreMenuOpen.value=!1}return{exportStatus:t,copyMarkdownReport:s,copyPrReport:c,copyPrReviewChecklist:l,copySummary:o,copyWorkQueueReport:u,exportCsv:p,exportJson:d,exportMarkdown:f}}function Nv(e){return fe.some(t=>t.value===e)?e:`all`}function Pv(e,t){return t.mode===`all`?!0:t.mode===`selected-package`?t.selectedPackageId?e.packageId===t.selectedPackageId:!1:t.mode===`growth`?t.growthFileKeys.has(`${e.packageId}\u0000${e.file}`)||(e.modules??[]).some(e=>t.growthModuleIds.has(e.id)):t.mode===`duplicates`?(e.modules??[]).some(e=>t.duplicateModuleIds.has(e.id)):t.mode===`node_modules`?(e.modules??[]).some(e=>e.sourceType===`node_modules`):e.type===`asset`||(e.modules??[]).some(e=>e.sourceType===`src`||e.sourceType===`workspace`)}function Fv(e){let t=e.files.filter(t=>Pv(t,e.filterState)),{warning:n}=e;if(n?.scope===`runtime`){let e=new Set(n.files);return t.filter(t=>e.has(t.file))}return n&&n.scope!==`total`?t.filter(e=>e.packageId===n.id):t}function Iv(e,t){for(let n of e){if(n.id===t)return[n];if(n.children){let e=Iv(n.children,t);if(e.length>0)return[n,...e]}}return[]}function Lv(e){let t=w(),n=N();function r(e,r){let i={...t.query};return r&&(i.tab=r),e===`all`?delete i.filter:i.filter=e,n.replace({query:i})}let i=M({get(){return Nv(t.query.filter)},set(e){r(e)}}),a=M(()=>{let e=t.query.color;return e===`source`||e===`duplicates`||e===`delta`?e:`package`});function o(r){if(r===`delta`&&!e.hasComparison.value)return;let i={...t.query};r===`package`?delete i.color:i.color=r,n.replace({query:i})}function s(r){(r!==`growth`||e.hasComparison.value)&&(e.selectedTreemapMeta.value=null,e.selectedLargestFile.value=null,e.selectedBudgetWarning.value=null,n.replace({query:{...t.query,filter:r,color:r===`growth`?`delta`:`duplicates`}}))}let c=M(()=>new Set(e.incrementAttribution.value.filter(e=>e.packageId&&e.file).map(e=>`${e.packageId}\u0000${e.file}`))),l=M(()=>new Set(e.incrementAttribution.value.map(e=>e.moduleId).filter(e=>!!e))),u=M(()=>new Set(e.duplicateModules.value.map(e=>e.id))),d=M(()=>e.selectedTreemapMeta.value?.packageId?e.selectedTreemapMeta.value.packageId:e.selectedLargestFile.value?.packageId?e.selectedLargestFile.value.packageId:e.selectedBudgetWarning.value&&e.selectedBudgetWarning.value.scope!==`total`&&e.selectedBudgetWarning.value.scope!==`runtime`?e.selectedBudgetWarning.value.id:null),f=M(()=>({mode:i.value,selectedPackageId:i.value===`selected-package`?d.value:null,growthFileKeys:c.value,growthModuleIds:l.value,duplicateModuleIds:u.value})),p=M(()=>!!d.value);function m(t){(t!==`selected-package`||d.value)&&(t!==`growth`||e.hasComparison.value)&&(i.value=t)}return{canUseSelectedPackageFilter:p,duplicateModuleIds:u,growthModuleIds:l,handleInspectTreemapProblem:s,handleUpdateTreemapColorMode:o,handleUpdateTreemapFilterMode:m,selectedPackageId:d,setTreemapFilterMode:r,treemapFilterMode:i,treemapColorMode:a,treemapFilterState:f}}He();function Rv(e){let t=P(),n,r,i;function a(){n?.resize()}function o(){r?.disconnect(),r=void 0,i!==void 0&&(window.cancelAnimationFrame(i),i=void 0),n?.dispose(),n=void 0}function s(e){n?.dispatchAction({type:`treemapRootToNode`,seriesIndex:0,targetNodeId:e})}function c(){n?.setOption(e.treemapOption.value,!0),n?.resize()}async function l(){if(e.activeTab.value!==`treemap`){o();return}await A();let c=t.value;e.activeTab.value===`treemap`&&c?.isConnected&&(n||(n=Le(c,e.resolvedTheme.value===`dark`?`dark`:void 0,{renderer:`canvas`}),n.on(`click`,e.handleChartClick),r=new ResizeObserver(()=>{i!==void 0&&window.cancelAnimationFrame(i),i=window.requestAnimationFrame(()=>{i=void 0,a()})}),r.observe(c)),n.setOption(e.treemapOption.value,!0),e.focusNodeId.value&&s(e.focusNodeId.value),n.resize())}function u(e){let n=e instanceof HTMLDivElement?e:void 0;n!==t.value&&(o(),t.value=n,n&&l())}return y(e.treemapOption,t=>{n&&(n.setOption(t,!0),e.focusNodeId.value&&s(e.focusNodeId.value))},{flush:`post`}),y(e.focusNodeId,e=>{e?s(e):c()},{flush:`post`}),y(e.activeTab,()=>{l()}),y(e.resolvedTheme,async()=>{n&&t.value&&o(),await l()}),{bindChartRef:u,destroyChart:o,ensureChart:l,handleResize:a}}function zv(e){let t=2166136261;for(let n=0;n<e.length;n++)t^=e.charCodeAt(n),t=Math.imul(t,16777619);let n=Math.imul((t^t>>>4)>>>0,3266489909)>>>0;return Math.round((n/4294967296*360+247)%360)}function Bv(e,t,n){let r=t/100,i=n/100,a=(1-Math.abs(2*i-1))*r,o=e/60,s=a*(1-Math.abs(o%2-1)),c=i-a/2,[l,u,d]=o<1?[a,s,0]:o<2?[s,a,0]:o<3?[0,a,s]:o<4?[0,s,a]:o<5?[s,0,a]:[a,0,s];return[l+c,u+c,d+c].map(e=>Math.round(e*255)/255)}function Vv(e){return e<=.04045?e/12.92:((e+.055)/1.055)**2.4}function Hv([e,t,n]){return .2126*Vv(e)+.7152*Vv(t)+.0722*Vv(n)}function Uv(e,t){let n=Math.max(e,t),r=Math.min(e,t);return(n+.05)/(r+.05)}function Wv(e){let t=Hv(e),n=Hv([248/255,250/255,252/255]),r=Hv([15/255,23/255,42/255]),i=Uv(t,n),a=Uv(t,r);return Math.max(i,a)>=4.5?i>=a?`#f8fafc`:`#0f172a`:Uv(t,1)>=Uv(t,0)?`#ffffff`:`#000000`}function Gv(...e){return e.some(e=>{if(!e)return!1;let t=e.replaceAll(`\\`,`/`);return t.includes(`packages-runtime/wevu/`)||t.includes(`node_modules/wevu/`)||t.includes(`node_modules/@weapp-vite/wevu/`)||t.includes(`weapp-vendors/wevu-`)})}function Kv(e,t=!1){let n=e===`#f8fafc`||e===`#ffffff`;return{color:e,ellipsis:`…`,fontSize:t?12:11,fontWeight:t?650:500,lineHeight:t?17:15,minMargin:5,overflow:`truncate`,textBorderWidth:0,textShadowBlur:n?2:0,textShadowColor:n?`rgba(0, 0, 0, 0.48)`:`transparent`}}function qv(e,t=zv(e),n=42){let r=`hsl(${t}, ${n}%, 46%)`,i=Wv(Bv(t,n,46)),a=`#475569`;return{itemStyle:{color:r,borderColor:a},label:{...Kv(i),show:!0},upperLabel:{...Kv(i,!0),backgroundColor:r,padding:[0,4],show:!0},emphasis:{itemStyle:{color:r,borderColor:a},label:{color:i,show:!0},upperLabel:{color:i,backgroundColor:r,show:!0}}}}var Jv={business:{label:`业务 / 工作区`,hue:210},npm:{label:`npm 依赖`,hue:275},plugin:{label:`插件 / 生成代码`,hue:38},runtime:{label:`WeVu runtime`,hue:175},asset:{label:`资源`,hue:325},unknown:{label:`未知`,hue:215,saturation:8},mixed:{label:`混合来源`,hue:215,saturation:18},duplicate:{label:`跨包重复模块`,hue:12},containsDuplicate:{label:`含重复模块`,hue:38},unique:{label:`未发现跨包重复`,hue:215,saturation:12},growth:{label:`增大`,hue:12},shrink:{label:`缩小`,hue:150},unchanged:{label:`不变`,hue:215,saturation:12},added:{label:`新增`,hue:275},addedUnknown:{label:`新增(体积未知)`,hue:275,saturation:18},noBaseline:{label:`无比较快照`,hue:215,saturation:8}},Yv=Object.fromEntries(Object.entries(Jv).map(([e,t])=>[e,qv(e,t.hue,`saturation`in t?t.saturation:void 0)]));function Xv(e){return typeof e==`number`&&Number.isFinite(e)&&e>=0?e:void 0}function Zv(e){return Gv(e.id,e.source)?`runtime`:e.sourceType===`src`||e.sourceType===`workspace`?`business`:e.sourceType===`node_modules`?`npm`:e.sourceType===`plugin`?`plugin`:`unknown`}function Qv(e,t){return e===void 0||e===t?t:`mixed`}function $v(e){let t=new Map;for(let n of e?.packages??[])for(let e of n.files)for(let r of e.modules??[]){let e=t.get(r.id);e?e.add(n.id):t.set(r.id,new Set([n.id]))}let n=new Map([...t].map(([e,t])=>[e,t.size])),r=new Map;for(let t of e?.packages??[]){let e,i=!1,a=0;for(let o of t.files){let s,c=!1;for(let e of o.modules??[]){let i={source:Zv(e),duplicated:(n.get(e.id)??0)>1,bytes:Xv(e.bytes)};r.set(Y(t.id,o.file,e.id),i),s=Qv(s,i.source),c||=i.duplicated}let l={source:o.type===`asset`?`asset`:s??`unknown`,duplicated:c,bytes:Xv(o.size)};r.set(J(t.id,o.file),l),o.type===`asset`&&r.set(Dr(t.id,o.file),l),e=Qv(e,l.source),i||=c,a=a!==void 0&&l.bytes!==void 0?a+l.bytes:void 0}r.set(Er(t.id),{source:e??`unknown`,duplicated:i,bytes:a})}return{nodes:r,moduleUsageCount:n}}function ey(e){let t=new Map;for(let n of e?.packages??[]){let e=0;for(let r of n.files){let i=Xv(r.size);t.set(J(n.id,r.file),i),r.type===`asset`&&t.set(Dr(n.id,r.file),i);for(let e of r.modules??[])t.set(Y(n.id,r.file,e.id),Xv(e.bytes));e=e!==void 0&&i!==void 0?e+i:void 0}t.set(Er(n.id),e)}return t}function ty(e,t,n){if(!n)return{key:`noBaseline`};if(!n.has(e))return t===void 0?{key:`addedUnknown`}:{key:`added`,deltaBytes:t};let r=n.get(e);if(t===void 0||r===void 0)return{key:`unknown`};let i=t-r;return{key:i>0?`growth`:i<0?`shrink`:`unchanged`,deltaBytes:i}}function ny(e){let t=new Map,n=new Map;function r(i){let a=e.current.nodes.get(i.id),o,s,c;if(e.mode===`package`){o=i.meta.packageLabel;let e=i.meta.packageId,t=n.get(e);s=t??qv(e),t||n.set(e,s)}else{let t;if(e.mode===`source`)t=a?.source??`unknown`;else if(e.mode===`duplicates`)t=a?.duplicated?i.meta.kind===`module`?`duplicate`:`containsDuplicate`:`unique`;else{let n=ty(i.id,a?.bytes,e.comparison);t=n.key,c=n.deltaBytes}o=Jv[t].label,s=Yv[t]}let l=`${o}\0${s.itemStyle.color}`;return t.has(l)||t.set(l,{label:o,color:s.itemStyle.color}),{...i,...s,meta:{...i.meta,colorLabel:o,deltaBytes:c},children:i.children?.map(r)}}return{nodes:e.nodes.map(r),legend:[...t.values()]}}function ry(e,t){switch(e){case`package`:return`颜色表示所属分包,与筛选和体积独立;同一分包保持同色。`;case`source`:return`按完整当前快照中的来源分类;仅明确的 WeVu 路径标记为 runtime,插件不等同于 runtime,容器可包含混合来源。`;case`duplicates`:return`按模块 ID 判断是否实际产出到多个不同分包,不按 npm 版本判断;容器“含重复模块”不代表其中所有内容重复。`;case`delta`:return t?`对比完整快照的同一分包 / 文件 / 模块位置,使用产物字节数;缺失体积为未知,新增单独标记。颜色不改变筛选后的面积;已删除节点不在当前图中。`:`无比较快照,无法判断体积变化;面积仍显示当前筛选结果。`}}function iy(e,t,n,r,i){let a=Y(e,n,i.id),o=Math.max(i.bytes??i.originalBytes??1,1),s=r.get(i.id)??1;return{id:a,name:Or(i.source),value:o,meta:{kind:`module`,nodeId:a,packageId:e,packageLabel:t,fileName:n,source:i.source,sourceType:i.sourceType,bytes:i.bytes,originalBytes:i.originalBytes,packageCount:s}}}function ay(e,t,n,r){let i=Dr(e,n),a=Math.max(r.size??1,1);return{id:i,name:Or(r.source??n),value:a,meta:{kind:`asset`,nodeId:i,packageId:e,packageLabel:t,fileName:n,source:r.source??n,bytes:r.size}}}function oy(e,t,n,r,i,a){let o=J(t,r.file),s=Math.max(a,1);return{id:o,name:Or(r.file),value:s,meta:{kind:`file`,nodeId:o,packageId:t,packageLabel:n.get(t)??e,fileName:r.file,from:r.from,childCount:i.length,type:r.type,bytes:r.size},children:i.length>0?i:void 0}}function sy(e,t,n){let r=Er(e.id);return{id:r,name:e.label,value:Math.max(t,1),meta:{kind:`package`,nodeId:r,packageId:e.id,packageLabel:e.label,packageType:e.type,fileCount:e.files.length,totalBytes:e.files.every(e=>e.size!==void 0&&Number.isFinite(e.size)&&e.size>=0)?t:void 0},children:n}}function cy(e){return e.reduce((e,t)=>e+t.value,0)}function ly(e,t){return`${e}\u0000${t}`}function uy(e,t,n){return n.mode===`all`||n.mode===`selected-package`?!!t.source:n.mode===`growth`?n.growthFileKeys.has(ly(e,t.file)):n.mode===`source`&&!!t.source}function dy(e,t){return e.mode===`all`||e.mode===`selected-package`?t:e.mode===`growth`?t.filter(t=>e.growthModuleIds.has(t.id)):e.mode===`duplicates`?t.filter(t=>e.duplicateModuleIds.has(t.id)):e.mode===`node_modules`?t.filter(e=>e.sourceType===`node_modules`):t.filter(e=>e.sourceType===`src`||e.sourceType===`workspace`)}function fy(e){return e.result.packages.flatMap(t=>{if(e.filter.mode===`selected-package`&&(!e.filter.selectedPackageId||t.id!==e.filter.selectedPackageId))return[];let n=t.files.flatMap(n=>{let r=e.filter.mode===`growth`&&e.filter.growthFileKeys.has(ly(t.id,n.file)),i=n.type===`chunk`?dy(e.filter,n.modules??[]).map(r=>iy(t.id,t.label,n.file,e.moduleUsageCount,r)):uy(t.id,n,e.filter)?[ay(t.id,t.label,n.file,n)]:[];if(e.filter.mode!==`all`&&e.filter.mode!==`selected-package`&&i.length===0&&!r)return[];let a=e.filter.mode===`all`||e.filter.mode===`selected-package`||r?n.size??cy(i):cy(i);return[oy(t.label,t.id,e.packageLabelMap,n,i,a)]});return n.length===0?[]:[sy(t,e.filter.mode===`all`||e.filter.mode===`selected-package`?t.files.reduce((e,t)=>e+(t.size??0),0):cy(n),n)]})}function py(e,t,n,r){let i=M(()=>new Map((e.value?.packages??[]).map(e=>[e.id,e.label]))),a=M(()=>$v(e.value)),o=M(()=>r.comparisonResult.value?ey(r.comparisonResult.value):null),s=M(()=>{let t=e.value;return t?fy({result:t,packageLabelMap:i.value,moduleUsageCount:a.value.moduleUsageCount,filter:n.value}):[]}),c=M(()=>ny({nodes:s.value,mode:r.mode.value,current:a.value,comparison:r.mode.value===`delta`?o.value:null})),l=M(()=>c.value.nodes),u=M(()=>c.value.legend),d=M(()=>ry(r.mode.value,r.comparisonResult.value!==null));return{treemapOption:M(()=>{let e=t.value===`dark`,n=e?`#f8fafc`:`#0f172a`;return{backgroundColor:`transparent`,animation:!1,tooltip:{formatter:e=>Mr(e.data?.meta),confine:!0,borderColor:e?`rgba(148, 163, 184, 0.2)`:`rgba(71, 85, 105, 0.18)`,borderWidth:1,backgroundColor:e?`rgba(15, 18, 24, 0.96)`:`rgba(255, 255, 255, 0.98)`,extraCssText:`max-width: 26rem; white-space: normal; overflow-wrap: anywhere; border-radius: 8px; box-shadow: 0 12px 32px rgba(0, 0, 0, 0.24);`,padding:[10,12],textStyle:{color:n,fontSize:12,lineHeight:19}},series:[{type:`treemap`,animation:!1,top:2,right:2,bottom:2,left:2,sort:`desc`,squareRatio:(1+Math.sqrt(5))/2,nodeClick:!1,roam:!1,breadcrumb:{show:!1},visibleMin:14,label:{show:!0,color:n,formatter:Ar,fontSize:11,fontWeight:500,lineHeight:15,minMargin:5,overflow:`truncate`,textBorderWidth:0},labelLayout:({rect:e})=>({hideOverlap:!0,fontSize:e.width<60||e.height<34||e.width*e.height<2800?0:11}),upperLabel:{show:!0,color:n,formatter:e=>Ar(e).replace(`
30
+ `,` · `),fontSize:12,fontWeight:650,lineHeight:17,overflow:`truncate`,textBorderWidth:0},itemStyle:{borderColor:`#475569`,borderWidth:1,gapWidth:1},emphasis:{itemStyle:{borderWidth:2}},levels:Tr,data:l.value}]}}),treemapNodes:l,treemapLegend:u,treemapColorDescription:d}}function my(e){let t=0,n=M(()=>e.selectedMeta.value?Iv(e.nodes.value,e.selectedMeta.value.nodeId):[]);async function r(n){let r=++t;Iv(e.nodes.value,n.nodeId).length===0&&await e.setFilterMode(`all`);let i=Iv(e.nodes.value,n.nodeId).at(-1);r===t&&i&&(e.selectedMeta.value=i.meta,e.selectedFile.value=null,e.selectedWarning.value=null)}async function i(){let n=++t;e.filterMode.value===`selected-package`&&await e.setFilterMode(`all`),n===t&&(e.selectedMeta.value=null,e.selectedFile.value=null,e.selectedWarning.value=null)}return y([e.nodes,e.activeTab],([t])=>{let n=e.selectedMeta.value;if(e.activeTab.value!==`treemap`||!n)return;let r=Iv(t,n.nodeId).at(-1)??t.find(e=>e.meta.packageId===n.packageId);e.selectedMeta.value=r?.meta??null,!r&&e.filterMode.value===`selected-package`&&e.setFilterMode(`all`),e.selectedFile.value=null,e.selectedWarning.value=null}),{treemapPath:n,handleSelectTreemapNode:r,handleResetTreemapFocus:i}}Ke(),Re(),Be(),Ge(),Ie([ze,Fe,We,Ve,Ue,Pe]);function hy(e){let t=P(null),n=P(null),r=P(null),i=M(()=>e.comparisonResultRef.value!==null),{canUseSelectedPackageFilter:a,handleInspectTreemapProblem:o,handleUpdateTreemapColorMode:s,handleUpdateTreemapFilterMode:c,setTreemapFilterMode:l,treemapColorMode:u,treemapFilterMode:d,treemapFilterState:f}=Lv({duplicateModules:e.duplicateModules,incrementAttribution:e.incrementAttribution,selectedBudgetWarning:r,selectedLargestFile:n,selectedTreemapMeta:t,hasComparison:i}),{treemapOption:p,treemapNodes:m,treemapLegend:h,treemapColorDescription:g}=py(e.resultRef,e.resolvedTheme,f,{mode:u,comparisonResult:e.comparisonResultRef}),_=M(()=>e.resultRef.value!==null&&m.value.length===0),v=M(()=>Fv({files:e.largestFiles.value,filterState:f.value,warning:r.value})),y=M(()=>v.value.slice(0,10)),b=M(()=>n.value?`${n.value.packageId}:${n.value.file}`:null),x=M(()=>{if(n.value)return J(n.value.packageId,n.value.file);let e=t.value;return e&&(e.kind===`module`||e.kind===`asset`)?J(e.packageId,e.fileName):e?.nodeId??null}),S=M(()=>{let n=t.value;if(n?.kind===`module`)return e.duplicateModules.value.filter(e=>Y(n.packageId,n.fileName,e.id)===n.nodeId);let r=f.value.selectedPackageId;return r?e.duplicateModules.value.filter(e=>e.packages.some(e=>e.packageId===r)):e.duplicateModules.value}),C=M(()=>{let n=t.value;if(n?.kind===`module`)return`模块范围:${n.source}`;let r=f.value.selectedPackageId,i=e.packageInsights.value.find(e=>e.id===r);return i?`包体范围:${i.label}`:null}),w=my({activeTab:e.activeTab,nodes:m,selectedMeta:t,selectedFile:n,selectedWarning:r,filterMode:d,setFilterMode:l});function T(e){if(!e||typeof e!=`object`||!(`data`in e))return;let t=e.data;if(!t||typeof t!=`object`||!(`id`in t)||typeof t.id!=`string`)return;let n=Iv(m.value,t.id).at(-1)?.meta;n&&w.handleSelectTreemapNode(n)}let{bindChartRef:E,destroyChart:D,ensureChart:O,handleResize:k}=Rv({activeTab:e.activeTab,resolvedTheme:e.resolvedTheme,treemapOption:p,handleChartClick:T,focusNodeId:x});function A(e){n.value=e,t.value={kind:`file`,nodeId:J(e.packageId,e.file),packageId:e.packageId,packageLabel:e.packageLabel,fileName:e.file,from:e.from,childCount:e.moduleCount,type:e.type,bytes:e.size}}function j(i){let a=i.scope===`total`||i.scope===`runtime`;if(l(a?`all`:`selected-package`,`packages`),r.value=i,n.value=Fv({files:e.largestFiles.value,filterState:{...f.value,mode:`all`,selectedPackageId:null},warning:i})[0]??null,!n.value||a){t.value=null;return}let o=e.packageInsights.value.find(e=>e.id===i.id);t.value=o?{kind:`package`,nodeId:Er(o.id),packageId:o.id,packageLabel:o.label,packageType:o.type,fileCount:o.fileCount,totalBytes:o.totalBytes}:null}function N(e,i){t.value={kind:`package`,nodeId:Er(e.id),packageId:e.id,packageLabel:e.label,packageType:e.type,fileCount:e.fileCount,totalBytes:e.totalBytes},n.value=null,r.value=null,l(`selected-package`,i)}function ee(e){N(e,`packages`)}function te(t){let n=e.packageInsights.value.find(e=>e.id===t);n&&N(n,`modules`)}function ne(){t.value=null,n.value=null,r.value=null}return{...w,activeLargestFileKey:b,bindChartRef:E,canUseSelectedPackageFilter:a,destroyChart:D,duplicateModuleScopeLabel:C,ensureChart:O,filteredDuplicateModules:S,filteredLargestFiles:v,handleResize:k,handleInspectPackageDuplicates:te,handleInspectTreemapProblem:o,handleSelectBudgetWarning:j,handleSelectLargestFile:A,handleSelectPackageInsight:ee,handleUpdateTreemapColorMode:s,hasTreemapComparison:i,handleUpdateTreemapFilterMode:c,isTreemapEmpty:_,resetTreemapSelection:ne,selectedBudgetWarning:r,selectedLargestFile:n,selectedTreemapMeta:t,setTreemapFilterMode:l,treemapColorMode:u,treemapColorDescription:g,treemapLegend:h,treemapNodes:m,treemapFilterMode:d,visibleLargestFiles:y}}function gy(e){let t=w(),n=N(),r=M(()=>t.fullPath!==`/analyze`);async function i(){let r=n.resolve({path:t.path,query:t.query}).href;await W(new URL(r,window.location.origin).href),e.exportStatus.value=`视图链接已复制`,e.moreMenuOpen.value=!1}async function a(){e.resetTreemapSelection(),e.resetPageSelection(),e.moreMenuOpen.value=!1,await n.replace({path:`/analyze`,query:{}}),e.exportStatus.value=`已重置视图`}return{canResetView:r,copyViewLink:i,resetAnalyzeView:a}}var _y=`weapp-vite:dashboard:analyze-work-queue`;function vy(){try{let e=window.localStorage.getItem(_y);return xv(e?JSON.parse(e):null)}catch{return[]}}function yy(e){try{window.localStorage.setItem(_y,JSON.stringify(e))}catch{}}function by(){let e=P([]),t=M(()=>e.value.filter(e=>!e.completedAt)),n=M(()=>e.value.filter(e=>e.completedAt)),r=M(()=>e.value.filter(e=>e.targetKind===`action`&&!e.completedAt).map(e=>e.targetKey));function i(t){e.value=xv(t),yy(e.value)}function a(t){let n=e.value.find(e=>e.id===t.id);i([n?{...n,...t,createdAt:n.createdAt,completedAt:void 0}:t,...e.value.filter(e=>e.id!==t.id)])}function o(t){let n=new Date().toISOString();i(e.value.map(e=>e.id===t?{...e,completedAt:e.completedAt?void 0:n}:e))}function s(t){i(e.value.filter(e=>e.id!==t))}function c(){i(e.value.filter(e=>!e.completedAt))}return k(()=>{e.value=vy()}),{completedWorkQueueItems:n,openWorkQueueItems:t,queuedActionKeys:r,workQueueItems:e,addWorkQueueItem:a,clearCompletedWorkQueueItems:c,removeWorkQueueItem:s,toggleWorkQueueItem:o}}function $(e){return e}function xy(e){return typeof e!=`number`||Number.isNaN(e)||e===0?``:`${e>0?`+`:`-`}${U(Math.abs(e))}`}function Sy(e){let t=w(),n=N(),r=M({get(){let e=t.query.tab;return e===`diagnostics`||e===`review`||e===`graph`||e===`treemap`||e===`files`||e===`packages`||e===`modules`?e:`diagnostics`},set(e){let r={...t.query};e===`diagnostics`?delete r.tab:r.tab=e,n.replace({query:r})}}),i=M(()=>e.packageInsights.value.reduce((e,t)=>e+t.chunkCount,0)),a=M(()=>e.packageInsights.value.reduce((e,t)=>e+t.assetCount,0)),o=M(()=>e.duplicateModules.value.reduce((e,t)=>e+t.bytes,0)),s=M(()=>{let t=e.summary.value,n=t.compressedSizeSource===`real`?`Brotli`:`估算压缩后`,r=xy(t.compressedDeltaBytes);return`${n} ${U(t.compressedBytes)}${r?` · ${r}`:``}`}),c=M(()=>{let t=xy(e.summary.value.sizeDeltaBytes);return t?`较上次 ${t}`:s.value});function l(){return[$({label:`包体数量`,value:String(e.summary.value.packageCount),iconName:`metric-packages`}),$({label:`分包配置`,value:String(e.summary.value.subpackageCount),iconName:`metric-subpackages`}),$({label:`Chunk 数量`,value:String(i.value),iconName:`metric-chunks`}),$({label:`Asset 数量`,value:String(a.value),iconName:`metric-assets`}),$({label:`总产物体积`,value:U(e.summary.value.totalBytes),detail:s.value,wide:!0,iconName:`metric-size-outline`})]}function u(){return[$({label:`源码模块`,value:String(e.summary.value.moduleCount),iconName:`metric-modules`}),$({label:`跨包复用`,value:String(e.summary.value.duplicateCount),iconName:`metric-duplicates`}),$({label:`来源类型`,value:String(e.moduleSourceSummary.value.length),iconName:`metric-sources`}),$({label:`复用体积`,value:o.value>0?U(o.value):`0 B`,iconName:`metric-copy`}),$({label:`预算告警`,value:String(e.summary.value.budgetWarningCount),detail:c.value,wide:!0,iconName:`metric-time`})]}function d(){return[$({label:`包体数量`,value:String(e.summary.value.packageCount),iconName:`tab-packages`}),$({label:`源码模块`,value:String(e.summary.value.moduleCount),iconName:`metric-modules`}),$({label:`跨包复用`,value:String(e.summary.value.duplicateCount),iconName:`metric-duplicates`}),$({label:`预算告警`,value:String(e.summary.value.budgetWarningCount),iconName:`metric-entries`}),$({label:`总产物体积`,value:U(e.summary.value.totalBytes),detail:s.value,wide:!0,iconName:`metric-size`})]}return{activeTab:r,topCards:M(()=>r.value===`packages`?l():r.value===`modules`?u():d()),packageTypeSummary:e.packageTypeSummary}}function Cy(e){let t=P(null),n=P(null),r=P(null),i=P(0);function a(t){let n=e.resultRef.value;if(t.kind===`module`&&n?.modules.some(e=>e.id===t.moduleId&&e.packages.some(e=>e.packageId===t.packageId&&e.files.includes(t.file))))return!0;let r=n?.packages.find(e=>e.id===t.packageId);if(!r)return!1;if(t.kind===`package`)return!0;let i=r.files.find(e=>e.file===t.file);return i?t.kind===`artifact`||!!i.modules?.some(e=>e.id===t.moduleId):!1}function o(e){a(e)&&(t.value={...e},n.value=null)}function s(t){let n={kind:`artifact`,packageId:t.packageId,file:t.file};a(n)&&(o(n),e.activeTab.value=`files`)}function c(r){if(r.kind===`package`)return;let i=(e.resultRef.value?.packages.find(e=>e.id===r.packageId))?.files.find(e=>e.file===r.fileName);if(!i)return;let a=r.kind===`module`?i.modules?.find(e=>Y(r.packageId,i.file,e.id)===r.nodeId):void 0,o=r.kind===`module`?a?.sourceType===`node_modules`?void 0:a?.source:i.source??i.modules?.find(e=>e.sourceType!==`node_modules`&&e.source)?.source;o&&(t.value=a?{kind:`module`,packageId:r.packageId,file:i.file,moduleId:a.id}:{kind:`artifact`,packageId:r.packageId,file:i.file},n.value=o.split(`?`,1)[0],e.activeTab.value=`files`)}function l(t){a(t)&&(t.kind===`package`||e.resultRef.value?.packages.find(e=>e.id===t.packageId)?.files.some(e=>e.file===t.file))&&(r.value={...t},i.value+=1,e.activeTab.value=`files`)}function u(){t.value=null,n.value=null}return{inspectionTarget:t,inspectionSourcePath:n,investigationRequest:r,investigationRequestId:i,handleSelectInspectionTarget:o,handleOpenInspectionFile:s,handleOpenInspectionSource:c,handleCreateObjectInvestigation:l,resetInspectionSelection:u}}var wy=[{id:`review`,label:`PR 风险清单`}],Ty=[{id:`packages`,label:`包与产物`}],Ey=[{id:`modules`,label:`模块复用`}];function Dy(){let e=P(!1),{resolvedTheme:t}=ue(),{baselineSnapshotId:r,comparisonMode:i,comparisonResultRef:a,historySnapshots:o,lastUpdatedAt:s,resultRef:c,setBaselineSnapshot:l,setComparisonMode:u,updateCount:d}=Te(),f=mv(c,a),{activeTab:p,topCards:m,packageTypeSummary:h}=Sy({summary:f.summary,packageInsights:f.packageInsights,packageTypeSummary:f.packageTypeSummary,duplicateModules:f.duplicateModules,moduleSourceSummary:f.moduleSourceSummary,lastUpdatedAt:s}),g=Cy({resultRef:c,activeTab:p}),_=hy({activeTab:p,resultRef:c,comparisonResultRef:a,resolvedTheme:t,largestFiles:f.artifactFiles,duplicateModules:f.duplicateModules,incrementAttribution:f.incrementAttribution,packageInsights:f.packageInsights}),{actionItems:v}=tv({resultRef:c,budgetWarnings:f.budgetWarnings,incrementAttribution:f.incrementAttribution,duplicateModules:f.duplicateModules,largestFiles:f.largestFiles,packageInsights:f.packageInsights}),b=by(),x=M(()=>X_({actionItems:v.value,workQueueItems:b.workQueueItems.value})),{commandItems:S}=dv({resultRef:c,actionItems:v,budgetWarnings:f.budgetWarnings,duplicateModules:f.duplicateModules,incrementAttribution:f.incrementAttribution,largestFiles:f.largestFiles,packageInsights:f.packageInsights}),C=Mv({resultRef:c,summary:f.summary,packageInsights:f.packageInsights,largestFiles:f.largestFiles,duplicateModules:f.duplicateModules,budgetWarnings:f.budgetWarnings,incrementAttribution:f.incrementAttribution,incrementSummary:f.incrementSummary,prReviewChecklist:x,workQueueItems:b.workQueueItems,moreMenuOpen:e}),w=wv({activeTab:p,actionItems:v,workQueueItems:b.workQueueItems,addWorkQueueItem:b.addWorkQueueItem,openInspectionFile:g.handleOpenInspectionFile,exportStatus:C.exportStatus,setTreemapFilterMode:_.setTreemapFilterMode,selectedTreemapMeta:_.selectedTreemapMeta,selectedLargestFile:_.selectedLargestFile,selectedBudgetWarning:_.selectedBudgetWarning,handleSelectBudgetWarning:_.handleSelectBudgetWarning}),T=gy({exportStatus:C.exportStatus,moreMenuOpen:e,resetPageSelection(){w.resetPageSelection(),g.resetInspectionSelection()},resetTreemapSelection:_.resetTreemapSelection}),E=M(()=>`${d.value} 次数据同步`),D=M(()=>t.value===`dark`?`status-dark`:`status-light`),O=M(()=>[{iconName:D.value,label:E.value},{label:s.value}]),A=M(()=>_.selectedBudgetWarning.value?.id??null),j=M(()=>i.value===`baseline`?`选定基线`:`上次构建`);function N(){e.value=!1}function ee(t){t.key===`Escape`&&(e.value=!1),(t.metaKey||t.ctrlKey)&&t.key.toLowerCase()===`k`&&(t.preventDefault(),c.value&&(w.commandPaletteOpen.value=!0))}return y(c,()=>{p.value!==`treemap`&&(_.resetTreemapSelection(),_.treemapFilterMode.value===`selected-package`&&(_.treemapFilterMode.value=`all`)),w.resetPageSelection()}),k(()=>{window.addEventListener(`resize`,_.handleResize),window.addEventListener(`keydown`,ee),window.addEventListener(`click`,N),_.ensureChart()}),n(()=>{window.removeEventListener(`resize`,_.handleResize),window.removeEventListener(`keydown`,ee),window.removeEventListener(`click`,N),_.destroyChart()}),{...f,...w,...g,...C,..._,...T,...b,actionItems:v,activeTab:p,activeBudgetWarningId:A,baselineSnapshotId:r,commandItems:S,comparisonMode:i,comparisonResultRef:a,historySnapshots:o,metricPackageTypeSummary:h,modulesLayoutItems:Ey,moreMenuOpen:e,packagesLayoutItems:Ty,prReviewChecklist:x,resolvedTheme:t,reviewLayoutItems:wy,setBaselineSnapshot:l,setComparisonMode:u,statusPills:O,topCards:m,treemapFilterOptions:fe,treemapComparisonLabel:j,resultRef:c}}var Oy=e({default:()=>jy}),ky=L({__name:`analyze`,setup(e,{expose:t}){t();let{actionItems:n,activeBudgetWarningId:r,activeTab:i,activeWorkQueueItemId:a,baselineSnapshotId:o,bindChartRef:s,budgetWarnings:c,canUseSelectedPackageFilter:l,canResetView:u,clearCompletedWorkQueueItems:d,commandItems:f,commandPaletteOpen:p,comparisonMode:m,comparisonResultRef:h,copyMarkdownReport:g,copyPrReport:_,copyPrReviewChecklist:v,copySummary:y,copyViewLink:b,copyWorkQueueReport:x,duplicateModuleScopeLabel:S,duplicateModules:C,exportCsv:w,exportJson:T,exportMarkdown:E,exportStatus:D,filteredDuplicateModules:O,handleAddActionToWorkQueue:k,handleFocusAction:A,handleCreateObjectInvestigation:j,handleInspectPackageDuplicates:N,handleInspectTreemapProblem:ee,handleOpenFile:P,handleOpenInspectionSource:te,handleResetTreemapFocus:ne,handleSelectAction:F,handleSelectBudgetWarning:I,handleSelectPackageInsight:L,handleSelectInspectionTarget:R,handleSelectReviewChecklistItem:re,handleSelectCommand:ie,handleSelectTreemapNode:ae,handleSelectWorkQueueItem:oe,handleUpdateTreemapColorMode:se,hasTreemapComparison:ce,handleUpdateTreemapFilterMode:le,historySnapshots:ue,incrementAttribution:de,incrementSummary:z,inspectionSourcePath:fe,inspectionTarget:pe,investigationRequest:B,investigationRequestId:me,isTreemapEmpty:he,largestFiles:ge,metricPackageTypeSummary:_e,modulesLayoutItems:ve,moduleSourceSummary:ye,moreMenuOpen:be,packageInsights:xe,packagesLayoutItems:Se,prReviewChecklist:Ce,queuedActionKeys:we,removeWorkQueueItem:Te,resetAnalyzeView:V,resolvedTheme:Ee,resultRef:H,reviewLayoutItems:U,selectedActionKey:De,selectedTreemapMeta:W,setBaselineSnapshot:Oe,setComparisonMode:ke,statusPills:Ae,toggleWorkQueueItem:je,topCards:Me,treemapColorMode:G,treemapColorDescription:K,treemapComparisonLabel:Ne,treemapLegend:Pe,treemapNodes:Fe,treemapPath:Ie,treemapFilterMode:Le,treemapFilterOptions:Re,visibleLargestFiles:ze,workQueueItems:Be}=Dy(),Ve={actionItems:n,activeBudgetWarningId:r,activeTab:i,activeWorkQueueItemId:a,baselineSnapshotId:o,bindChartRef:s,budgetWarnings:c,canUseSelectedPackageFilter:l,canResetView:u,clearCompletedWorkQueueItems:d,commandItems:f,commandPaletteOpen:p,comparisonMode:m,comparisonResultRef:h,copyMarkdownReport:g,copyPrReport:_,copyPrReviewChecklist:v,copySummary:y,copyViewLink:b,copyWorkQueueReport:x,duplicateModuleScopeLabel:S,duplicateModules:C,exportCsv:w,exportJson:T,exportMarkdown:E,exportStatus:D,filteredDuplicateModules:O,handleAddActionToWorkQueue:k,handleFocusAction:A,handleCreateObjectInvestigation:j,handleInspectPackageDuplicates:N,handleInspectTreemapProblem:ee,handleOpenFile:P,handleOpenInspectionSource:te,handleResetTreemapFocus:ne,handleSelectAction:F,handleSelectBudgetWarning:I,handleSelectPackageInsight:L,handleSelectInspectionTarget:R,handleSelectReviewChecklistItem:re,handleSelectCommand:ie,handleSelectTreemapNode:ae,handleSelectWorkQueueItem:oe,handleUpdateTreemapColorMode:se,hasTreemapComparison:ce,handleUpdateTreemapFilterMode:le,historySnapshots:ue,incrementAttribution:de,incrementSummary:z,inspectionSourcePath:fe,inspectionTarget:pe,investigationRequest:B,investigationRequestId:me,isTreemapEmpty:he,largestFiles:ge,metricPackageTypeSummary:_e,modulesLayoutItems:ve,moduleSourceSummary:ye,moreMenuOpen:be,packageInsights:xe,packagesLayoutItems:Se,prReviewChecklist:Ce,queuedActionKeys:we,removeWorkQueueItem:Te,resetAnalyzeView:V,resolvedTheme:Ee,resultRef:H,reviewLayoutItems:U,selectedActionKey:De,selectedTreemapMeta:W,setBaselineSnapshot:Oe,setComparisonMode:ke,statusPills:Ae,toggleWorkQueueItem:je,topCards:Me,treemapColorMode:G,treemapColorDescription:K,treemapComparisonLabel:Ne,treemapLegend:Pe,treemapNodes:Fe,treemapPath:Ie,treemapFilterMode:Le,treemapFilterOptions:Re,visibleLargestFiles:ze,workQueueItems:Be,pageClassName:M(()=>(i.value===`treemap`||i.value===`files`)&&H.value?`flex h-full min-h-0 flex-col gap-2`:!H.value||i.value===`diagnostics`?`grid min-w-0 content-start gap-4`:`grid min-h-[calc(100dvh-8rem)] grid-rows-[auto_minmax(44rem,1fr)] gap-4`),AnalyzeCommandPalette:Ot,AnalyzeEmptyPayloadPanel:Ft,AnalyzeResultSections:y_,AnalyzeToolbar:U_};return Object.defineProperty(Ve,"__isScriptSetup",{enumerable:!1,value:!0}),Ve}});function Ay(e,t,n,r,i,a){return f(),I(`div`,{class:x(r.pageClassName)},[r.resultRef?C(``,!0):(f(),D(r.AnalyzeEmptyPayloadPanel,{key:0})),_(r.AnalyzeToolbar,{"more-menu-open":r.moreMenuOpen,"onUpdate:moreMenuOpen":t[0]||=e=>r.moreMenuOpen=e,"can-reset-view":r.canResetView,"can-search":!!r.resultRef,"export-status":r.exportStatus,"status-pills":r.statusPills,onCopyMarkdown:r.copyMarkdownReport,onCopyPr:r.copyPrReport,onCopySummary:r.copySummary,onCopyViewLink:r.copyViewLink,onExportCsv:r.exportCsv,onExportJson:r.exportJson,onExportMarkdown:r.exportMarkdown,onOpenSearch:t[1]||=e=>r.commandPaletteOpen=!0,onResetView:r.resetAnalyzeView},null,8,[`more-menu-open`,`can-reset-view`,`can-search`,`export-status`,`status-pills`,`onCopyMarkdown`,`onCopyPr`,`onCopySummary`,`onCopyViewLink`,`onExportCsv`,`onExportJson`,`onExportMarkdown`,`onResetView`]),r.resultRef?(f(),D(r.AnalyzeResultSections,{key:1,"action-items":r.actionItems,"active-budget-warning-id":r.activeBudgetWarningId,"active-tab":r.activeTab,"active-work-queue-item-id":r.activeWorkQueueItemId,"baseline-snapshot-id":r.baselineSnapshotId,"bind-chart-ref":r.bindChartRef,"budget-warnings":r.budgetWarnings,"can-use-selected-package-filter":r.canUseSelectedPackageFilter,"comparison-mode":r.comparisonMode,"comparison-result":r.comparisonResultRef,"has-treemap-comparison":r.hasTreemapComparison,"copy-status":r.exportStatus,"duplicate-module-scope-label":r.duplicateModuleScopeLabel,"duplicate-modules":r.duplicateModules,"filtered-duplicate-modules":r.filteredDuplicateModules,"history-snapshots":r.historySnapshots,"increment-attribution":r.incrementAttribution,"increment-summary":r.incrementSummary,"inspection-source-path":r.inspectionSourcePath,"inspection-target":r.inspectionTarget,"investigation-request":r.investigationRequest,"investigation-request-id":r.investigationRequestId,"is-treemap-empty":r.isTreemapEmpty,"largest-files":r.largestFiles,"metric-package-type-summary":r.metricPackageTypeSummary,"modules-layout-items":r.modulesLayoutItems,"module-source-summary":r.moduleSourceSummary,"package-insights":r.packageInsights,"packages-layout-items":r.packagesLayoutItems,"pr-review-checklist":r.prReviewChecklist,"queued-action-keys":r.queuedActionKeys,"review-layout-items":r.reviewLayoutItems,result:r.resultRef,"selected-action-key":r.selectedActionKey,"selected-treemap-meta":r.selectedTreemapMeta,theme:r.resolvedTheme,"top-cards":r.topCards,"treemap-color-mode":r.treemapColorMode,"treemap-color-description":r.treemapColorDescription,"treemap-comparison-label":r.treemapComparisonLabel,"treemap-legend":r.treemapLegend,"treemap-nodes":r.treemapNodes,"treemap-path":r.treemapPath,"treemap-filter-mode":r.treemapFilterMode,"treemap-filter-options":r.treemapFilterOptions,"visible-largest-files":r.visibleLargestFiles,"work-queue-items":r.workQueueItems,onAddActionToQueue:r.handleAddActionToWorkQueue,onClearCompletedWorkQueue:r.clearCompletedWorkQueueItems,onCopyPr:r.copyPrReport,onCopyReviewChecklist:r.copyPrReviewChecklist,onCopyWorkQueue:r.copyWorkQueueReport,onFocusAction:r.handleFocusAction,onInspectDuplicates:r.handleInspectPackageDuplicates,onInspectTreemapProblem:r.handleInspectTreemapProblem,onOpenFile:r.handleOpenFile,onOpenTreemapSource:r.handleOpenInspectionSource,onRemoveWorkQueueItem:r.removeWorkQueueItem,onResetTreemapFocus:r.handleResetTreemapFocus,onSelectAction:r.handleSelectAction,onSelectBudgetWarning:r.handleSelectBudgetWarning,onSelectInspectionTarget:r.handleSelectInspectionTarget,onInvestigate:r.handleCreateObjectInvestigation,onSelectPackage:r.handleSelectPackageInsight,onSelectTreemapNode:r.handleSelectTreemapNode,onSelectReviewChecklistItem:r.handleSelectReviewChecklistItem,onSelectWorkQueueItem:r.handleSelectWorkQueueItem,onSetBaseline:r.setBaselineSnapshot,onSetComparisonMode:r.setComparisonMode,onToggleWorkQueueItem:r.toggleWorkQueueItem,onUpdateTreemapColorMode:r.handleUpdateTreemapColorMode,onUpdateTreemapFilterMode:r.handleUpdateTreemapFilterMode},null,8,`action-items.active-budget-warning-id.active-tab.active-work-queue-item-id.baseline-snapshot-id.bind-chart-ref.budget-warnings.can-use-selected-package-filter.comparison-mode.comparison-result.has-treemap-comparison.copy-status.duplicate-module-scope-label.duplicate-modules.filtered-duplicate-modules.history-snapshots.increment-attribution.increment-summary.inspection-source-path.inspection-target.investigation-request.investigation-request-id.is-treemap-empty.largest-files.metric-package-type-summary.modules-layout-items.module-source-summary.package-insights.packages-layout-items.pr-review-checklist.queued-action-keys.review-layout-items.result.selected-action-key.selected-treemap-meta.theme.top-cards.treemap-color-mode.treemap-color-description.treemap-comparison-label.treemap-legend.treemap-nodes.treemap-path.treemap-filter-mode.treemap-filter-options.visible-largest-files.work-queue-items.onAddActionToQueue.onClearCompletedWorkQueue.onCopyPr.onCopyReviewChecklist.onCopyWorkQueue.onFocusAction.onInspectDuplicates.onInspectTreemapProblem.onOpenFile.onOpenTreemapSource.onRemoveWorkQueueItem.onResetTreemapFocus.onSelectAction.onSelectBudgetWarning.onSelectInspectionTarget.onInvestigate.onSelectPackage.onSelectTreemapNode.onSelectReviewChecklistItem.onSelectWorkQueueItem.onSetBaseline.onSetComparisonMode.onToggleWorkQueueItem.onUpdateTreemapColorMode.onUpdateTreemapFilterMode`.split(`.`))):C(``,!0),_(r.AnalyzeCommandPalette,{open:!!(r.resultRef&&r.commandPaletteOpen),items:r.commandItems,onClose:t[2]||=e=>r.commandPaletteOpen=!1,onSelect:r.handleSelectCommand},null,8,[`open`,`items`,`onSelect`])],2)}var jy=z(ky,[[`render`,Ay]]);export{jy as default,Xe as n,Ze as r,Oy as t};