@weapp-vite/dashboard 6.16.18 → 6.16.19

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,32 +1,32 @@
1
1
  const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./monaco.css"])))=>i.map(i=>d[i]);
2
- import{A as e,B as t,C as n,D as r,E as i,G as a,H as o,I as s,K as c,N as l,O as u,P as d,R as f,S as p,U as m,V as h,W as g,X as _,Y as v,_ as y,a as b,b as x,d as S,f as C,g as w,h as T,j as E,k as D,l as O,m as ee,o as k,p as A,q as j,s as M,t as N,u as P,v as F,x as I,y as L,z as R}from"./vue.js";import{Rt as te,a as ne,i as re,n as ie,r as ae,t as oe}from"./monaco.js";import{D as se,E as z,O as B,S as ce,T as le,b as ue,c as V,m as de,o as fe,s as pe,t as me,u as H,w as U,x as he,y as ge}from"./index.js";import{n as W,t as G}from"./AppEmptyState.js";import{t as K}from"./AppMetricTile.js";import{a as _e,c as ve,i as ye,n as be,o as xe,r as Se,s as Ce,t as we}from"./echarts.js";var Te={action:`动作`,budget:`预算`,package:`包`,file:`文件`,increment:`增量`,module:`模块`},Ee={action:`warning`,budget:`warning`,package:`neutral`,file:`neutral`,module:`neutral`,increment:`info`},De=[{value:`all`,label:`全部`},{value:`action`,label:`动作`},{value:`budget`,label:`预算`},{value:`package`,label:`包`},{value:`file`,label:`文件`},{value:`module`,label:`模块`},{value:`increment`,label:`增量`}];function Oe(e,t){let n=m(),r=m(``),i=m(0),a=m(`all`),o=T(()=>{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):!0).slice(0,40)}),s=T(()=>o.value[i.value]??null),c=T(()=>{let t=a.value===`all`?`全部类型`:Te[a.value];return`匹配 ${o.value.length} / ${e.items.length} 项 · ${t}`});f(()=>e.open,async e=>{if(!e){r.value=``,a.value=`all`,i.value=0;return}await u(),n.value?.focus()}),f(o,()=>{i.value=0});function l(e){return Te[e]}function d(e){return le({tone:Ee[e]})}function p(e){t(`select`,e),t(`close`)}function h(e){if(e.key===`Escape`){e.preventDefault(),t(`close`);return}if(e.key===`ArrowDown`){e.preventDefault(),i.value=Math.min(i.value+1,Math.max(o.value.length-1,0));return}if(e.key===`ArrowUp`){e.preventDefault(),i.value=Math.max(i.value-1,0);return}if(e.key===`Enter`){e.preventDefault();let t=o.value[i.value];t&&p(t)}}return{activeIndex:i,filteredItems:o,getKindLabel:l,getKindTone:d,handleKeydown:h,kindFilter:a,kindOptions:De,query:r,resultSummary:c,searchInputRef:n,selectedItem:s,selectItem:p}}var 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`},Ae={class:`grid gap-3 border-b border-(--dashboard-border) px-4 py-3`},je={class:`flex items-center gap-3`},Me={class:`h-5 w-5 shrink-0 text-(--dashboard-accent)`},Ne={class:`flex flex-wrap items-center justify-between gap-2`},Pe={class:`text-xs text-(--dashboard-text-soft)`},Fe=[`value`],Ie={class:`grid min-h-0 gap-2 overflow-hidden p-2 lg:grid-cols-[minmax(0,1fr)_minmax(16rem,0.52fr)]`},Le={key:1,class:`grid max-h-full min-h-0 gap-1 overflow-y-auto pr-1`},Re=[`onMouseenter`,`onClick`],ze={class:`flex items-start justify-between gap-3`},Be={class:`min-w-0`},Ve={class:`flex min-w-0 items-center gap-2`},He={class:`truncate font-medium text-(--dashboard-text)`},Ue={class:`mt-1 truncate text-xs text-(--dashboard-text-soft)`},We={key:0,class:`whitespace-nowrap text-sm font-medium text-(--dashboard-accent)`},Ge={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`},Ke={class:`flex items-start justify-between gap-3`},qe={key:1,class:`grid min-h-0 content-start gap-3 overflow-y-auto`},Je={class:`font-medium`},Ye={class:`mt-1 text-sm leading-6 text-(--dashboard-text-muted)`},Xe={class:`grid gap-2 text-sm`},Ze={class:`flex items-center justify-between gap-3 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel) px-3 py-2`},Qe={key:0,class:`flex items-center justify-between gap-3 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel) px-3 py-2`},$e={class:`text-(--dashboard-accent)`},et=n({__name:`AnalyzeCommandPalette`,props:{open:{type:Boolean},items:{}},emits:[`close`,`select`],setup(e,{emit:n}){let r=e,i=n,{activeIndex:a,filteredItems:o,getKindLabel:s,getKindTone:u,handleKeydown:d,kindFilter:f,kindOptions:m,query:g,resultSummary:v,searchInputRef:b,selectedItem:x,selectItem:S}=Oe(r,i);return(n,r)=>(E(),y(ee,{to:`body`},[p(M,{"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:R(()=>[e.open?(E(),L(`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:r[4]||=C(e=>i(`close`),[`self`])},[w(`section`,ke,[w(`div`,Ae,[w(`div`,je,[w(`span`,Me,[p(B,{name:`metric-search`})]),t(w(`input`,{ref_key:`searchInputRef`,ref:b,"onUpdate:modelValue":r[0]||=e=>h(g)?g.value=e:null,class:`min-w-0 flex-1 bg-transparent text-base outline-none placeholder:text-(--dashboard-text-soft)`,placeholder:`搜索包、文件、模块、预算`,onKeydown:r[1]||=(...e)=>c(d)&&c(d)(...e)},null,544),[[P,c(g)]])]),w(`div`,Ne,[w(`p`,Pe,_(c(v)),1),t(w(`select`,{"onUpdate:modelValue":r[2]||=e=>h(f)?f.value=e:null,class:`h-8 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel) px-2.5 text-sm text-(--dashboard-text) outline-none transition focus:border-(--dashboard-border-strong)`},[(E(!0),L(A,null,l(c(m),e=>(E(),L(`option`,{key:e.value,value:e.value},_(e.label),9,Fe))),128))],512),[[O,c(f)]])])]),w(`div`,Ie,[c(o).length===0?(E(),y(G,{key:0,compact:``},{default:R(()=>[...r[5]||=[I(` 没有匹配结果。 `,-1)]]),_:1})):(E(),L(`ul`,Le,[(E(!0),L(A,null,l(c(o),(e,t)=>(E(),L(`li`,{key:e.key,class:`list-none`},[w(`button`,{type:`button`,class:j([`w-full rounded-md border px-3 py-2.5 text-left transition`,t===c(a)?`border-(--dashboard-accent) bg-(--dashboard-accent-soft)`:`border-transparent hover:border-(--dashboard-border) hover:bg-(--dashboard-panel-muted)`]),onMouseenter:e=>a.value=t,onClick:t=>c(S)(e)},[w(`div`,ze,[w(`div`,Be,[w(`div`,Ve,[w(`span`,{class:j(c(u)(e.kind))},_(c(s)(e.kind)),3),w(`p`,He,_(e.title),1)]),w(`p`,Ue,_(e.meta),1)]),e.value?(E(),L(`span`,We,_(e.value),1)):F(``,!0)])],42,Re)]))),128))])),w(`aside`,Ge,[w(`div`,Ke,[r[6]||=w(`div`,null,[w(`p`,{class:`text-[11px] uppercase tracking-[0.2em] text-(--dashboard-accent)`},` Preview `),w(`h3`,{class:`mt-1 text-base font-semibold`},` 当前命令 `)],-1),c(x)?(E(),L(`span`,{key:0,class:j(c(u)(c(x).kind))},_(c(s)(c(x).kind)),3)):F(``,!0)]),c(x)?(E(),L(`div`,qe,[w(`div`,null,[w(`h4`,Je,_(c(x).title),1),w(`p`,Ye,_(c(x).meta),1)]),w(`div`,Xe,[w(`div`,Ze,[r[8]||=w(`span`,{class:`text-xs uppercase tracking-[0.16em] text-(--dashboard-text-soft)`},`Tab`,-1),w(`strong`,null,_(c(x).tab),1)]),c(x).value?(E(),L(`div`,Qe,[r[9]||=w(`span`,{class:`text-xs uppercase tracking-[0.16em] text-(--dashboard-text-soft)`},`Value`,-1),w(`strong`,$e,_(c(x).value),1)])):F(``,!0)]),w(`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:r[3]||=e=>c(S)(c(x))},` 跳转到结果 `)])):(E(),y(G,{key:0,compact:``},{default:R(()=>[...r[7]||=[I(` 选择左侧结果后查看目标和跳转位置。 `,-1)]]),_:1}))])])])])):F(``,!0)]),_:1})]))}}),tt={class:`grid gap-3 xl:grid-cols-[minmax(0,1fr)_minmax(18rem,0.92fr)]`},nt={class:`rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-4`},rt={class:`mt-4 grid gap-2`},it={class:`grid gap-2`},at=n({__name:`AnalyzeEmptyPayloadPanel`,setup(e){return(e,t)=>(E(),y(he,{eyebrow:`Analyze`,title:`等待分析数据注入`,"icon-name":`hero-commands`,tone:`strong`,padding:`header`},{default:R(()=>[w(`div`,tt,[w(`div`,nt,[t[0]||=w(`p`,{class:`text-[11px] uppercase tracking-[0.24em] text-(--dashboard-text-soft)`},` recommended commands `,-1),w(`div`,rt,[(E(),L(A,null,l([`weapp-vite analyze`,`weapp-vite build --ui`,`weapp-vite dev --ui`],e=>w(`code`,{key:e,class:`rounded-md bg-slate-950 px-3 py-3 text-xs text-slate-100 dark:bg-slate-900`},_(e),1)),64))])]),w(`div`,it,[p(c(N),{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:R(()=>[...t[1]||=[w(`p`,{class:`font-medium`},` 返回工作台 `,-1),w(`p`,{class:`mt-1 text-sm leading-6 text-(--dashboard-text-muted)`},` 查看当前状态和命令。 `,-1)]]),_:1}),p(c(N),{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:R(()=>[...t[2]||=[w(`p`,{class:`font-medium`},` 查看活动流 `,-1),w(`p`,{class:`mt-1 text-sm leading-6 text-(--dashboard-text-muted)`},` 观察命令、构建、HMR 和诊断事件。 `,-1)]]),_:1})])])]),_:1}))}}),ot=[`onDrop`],st={class:`flex min-h-0 items-center justify-between gap-2 pb-1`},ct=[`onDragstart`],lt={class:`truncate`},ut={class:`min-h-0 overflow-hidden`},q=n({__name:`AnalyzeDraggableGrid`,props:{items:{},storageKey:{},gridClass:{}},setup(t){let n=t,r=g([]),i=g(null),a=T(()=>new Map(n.items.map(e=>[e.id,e]))),o=T(()=>{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 u(e,t){i.value=e.id,t.dataTransfer?.setData(`text/plain`,e.id),t.dataTransfer&&(t.dataTransfer.effectAllowed=`move`)}function p(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 m(){c(n.items.map(e=>e.id))}return e(s),f(()=>n.items.map(e=>e.id).join(`\0`),s),(e,n)=>(E(),L(`section`,{class:j(t.gridClass)},[(E(!0),L(A,null,l(o.value,t=>(E(),L(`article`,{key:t.id,class:j([`grid min-h-0 grid-rows-[auto_minmax(0,1fr)] overflow-hidden rounded-lg border border-dashed border-transparent transition`,[t.className,i.value===t.id?`border-(--dashboard-accent) opacity-70`:``]]),onDragover:n[1]||=C(()=>{},[`prevent`]),onDrop:e=>p(t)},[w(`div`,st,[w(`button`,{class:`inline-flex min-w-0 cursor-grab items-center gap-2 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-2 py-1 text-[11px] uppercase tracking-[0.16em] text-(--dashboard-text-soft) transition hover:border-(--dashboard-border-strong) hover:text-(--dashboard-text)`,draggable:`true`,type:`button`,onDragend:n[0]||=e=>i.value=null,onDragstart:e=>u(t,e)},[n[2]||=w(`span`,{"aria-hidden":`true`},`::`,-1),w(`span`,lt,_(t.label),1)],40,ct),o.value.length>1&&t.id===o.value[0]?.id?(E(),L(`button`,{key:0,class:`shrink-0 rounded-full border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-2 py-1 text-[11px] text-(--dashboard-text-soft) transition hover:border-(--dashboard-border-strong) hover:text-(--dashboard-text)`,type:`button`,onClick:m},` 重置布局 `)):F(``,!0)]),w(`div`,ut,[d(e.$slots,t.id,{item:t})])],42,ot))),128))],2))}});function dt(e){return typeof e!=`number`||Number.isNaN(e)||e===0?``:`${e>0?`+`:`-`}${V(Math.abs(e))}`}function ft(e){let t=dt(e.sizeDeltaBytes);return{title:e.file,meta:`${e.packageLabel} · ${H(e.packageType)} · ${e.type}${t?` · ${t}`:``}`,value:`${V(e.size)} / ${V(e.compressedSize)}`}}function pt(e){return e.kind===`package`?{title:e.packageLabel,meta:`${H(e.packageType)} · ${e.fileCount} 个产物`,value:V(e.totalBytes)}:e.kind===`file`?{title:e.fileName,meta:`${e.packageLabel} · ${e.type} · ${e.childCount} 项`,value:V(e.bytes)}:e.kind===`module`?{title:e.source,meta:`${e.packageLabel} · ${e.packageCount} 个包复用`,value:V(e.bytes??e.originalBytes)}:{title:e.source,meta:`${e.packageLabel} · ${e.fileName}`,value:V(e.bytes)}}function mt(e){return e.replaceAll(`|`,`\\|`).replaceAll(`
3
- `,` `)}function ht(e){return[`# dashboard 文件详情`,``,`文件数量:${e.files.length} / ${e.totalCount}`,``,`| 文件 | 包 | 类型 | 总体积 | 压缩后 | 较上次 | 模块 | 来源 |`,`| --- | --- | --- | ---: | ---: | ---: | ---: | --- |`,...e.files.map(e=>[e.file,e.packageLabel,e.type,V(e.size),V(e.compressedSize),dt(e.sizeDeltaBytes)||`-`,String(e.moduleCount),e.source??`-`].map(mt).join(` | `)).map(e=>`| ${e} |`),``].join(`
4
- `)}var gt={class:`flex items-start justify-between gap-3`},_t={class:`min-w-0`},vt={class:`mt-1 text-xs text-(--dashboard-text-soft)`},yt={key:0,class:`whitespace-nowrap font-medium text-(--dashboard-accent)`},bt={key:1,class:`list-none`},xt={class:`flex items-start justify-between gap-3`},St={class:`min-w-0`},Ct={class:`mt-1 text-xs text-(--dashboard-text-soft)`},wt={key:0,class:`whitespace-nowrap font-medium text-(--dashboard-accent)`},Tt=n({__name:`AppCompactListItem`,props:{title:{},meta:{},value:{},monoTitle:{type:Boolean},clickable:{type:Boolean},active:{type:Boolean}},emits:[`select`],setup(e,{emit:t}){let n=t;return(t,r)=>e.clickable?(E(),L(`li`,bt,[w(`button`,{type:`button`,class:j([`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)`,e.active?`border-(--dashboard-accent) bg-(--dashboard-accent-soft)`:void 0]),onClick:r[0]||=e=>n(`select`)},[w(`div`,xt,[w(`div`,St,[w(`p`,{class:j([`font-medium`,e.monoTitle?`truncate font-mono text-xs text-(--dashboard-text)`:`truncate text-(--dashboard-text)`])},_(e.title),3),w(`p`,Ct,_(e.meta),1)]),e.value?(E(),L(`span`,wt,_(e.value),1)):F(``,!0)])],2)])):(E(),L(`li`,{key:0,class:j([`rounded-xl border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 py-2.5`,e.active?`border-(--dashboard-accent) bg-(--dashboard-accent-soft)`:void 0])},[w(`div`,gt,[w(`div`,_t,[w(`p`,{class:j([`font-medium`,e.monoTitle?`truncate font-mono text-xs text-(--dashboard-text)`:`truncate text-(--dashboard-text)`])},_(e.title),3),w(`p`,vt,_(e.meta),1)]),e.value?(E(),L(`span`,yt,_(e.value),1)):F(``,!0)])],2))}}),Et={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)`},Dt={class:`mb-2 flex items-center justify-between gap-3`},Ot={class:`mt-1 text-xs text-(--dashboard-text-soft)`},kt={class:`mb-3 grid gap-2`},At={class:`flex flex-wrap items-center gap-2`},jt={key:0,class:`text-xs font-medium text-(--dashboard-accent)`},Mt=[`disabled`],Nt=[`disabled`],Pt={class:`grid grid-cols-2 gap-2`},Ft=[`value`],It={class:`min-h-0 overflow-y-auto pr-1`},Lt={class:`grid gap-2 text-sm`},Rt=n({__name:`AnalyzeFileExplorerPanel`,props:{largestFiles:{},activeLargestFileKey:{},selectedTreemapMeta:{}},emits:[`selectFile`],setup(e,{emit:n}){let i=e,a=n,o=m(``),s=m(`all`),c=m(`size`),u=m(``),d=null,f=T(()=>{let e=new Set;for(let t of i.largestFiles)e.add(t.type);return[...e].sort((e,t)=>e.localeCompare(t))}),p=T(()=>{let e=o.value.trim().toLowerCase();return i.largestFiles.filter(t=>s.value!==`all`&&t.type!==s.value?!1:e?[t.file,t.packageId,t.packageLabel,t.packageType,t.type,t.source].some(t=>t?.toLowerCase().includes(e)):!0).sort((e,t)=>c.value===`compressed`?t.compressedSize-e.compressedSize||e.file.localeCompare(t.file):c.value===`delta`?(t.sizeDeltaBytes??-1/0)-(e.sizeDeltaBytes??-1/0)||e.file.localeCompare(t.file):c.value===`modules`?t.moduleCount-e.moduleCount||t.size-e.size||e.file.localeCompare(t.file):c.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:i.activeLargestFileKey===`${e.packageId}:${e.file}`||i.selectedTreemapMeta?.kind!==`package`&&i.selectedTreemapMeta?.packageLabel===e.packageLabel&&i.selectedTreemapMeta?.fileName===e.file,...ft(e)}))}),h=T(()=>i.selectedTreemapMeta?pt(i.selectedTreemapMeta):null),g=T(()=>ht({files:p.value.map(e=>e.file),totalCount:i.largestFiles.length}));function v(e){u.value=e,d&&clearTimeout(d),d=setTimeout(()=>{u.value=``,d=null},1800)}async function b(){try{await W(g.value),v(`已复制`)}catch{v(`复制失败`)}}function S(){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),v(`已导出`)}return D(()=>{d&&clearTimeout(d)}),(n,i)=>(E(),L(`section`,Et,[w(`div`,Dt,[w(`div`,null,[i[3]||=w(`h3`,{class:`text-sm font-semibold text-(--dashboard-text)`},` Top Files `,-1),w(`p`,Ot,` 匹配 `+_(p.value.length)+` / `+_(e.largestFiles.length)+` 个文件 `,1)]),i[4]||=w(`span`,{class:`text-[11px] uppercase tracking-[0.16em] text-(--dashboard-text-soft)`},`size`,-1)]),w(`div`,kt,[w(`div`,At,[u.value?(E(),L(`span`,jt,_(u.value),1)):F(``,!0),w(`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:p.value.length===0,onClick:b},` 复制文件 `,8,Mt),w(`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:p.value.length===0,onClick:S},` 导出 JSON `,8,Nt)]),t(w(`input`,{"onUpdate:modelValue":i[0]||=e=>o.value=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),[[P,o.value]]),w(`div`,Pt,[t(w(`select`,{"onUpdate:modelValue":i[1]||=e=>s.value=e,class:`h-9 min-w-0 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-2.5 text-sm text-(--dashboard-text) outline-none transition focus:border-(--dashboard-accent)`},[i[5]||=w(`option`,{value:`all`},` 全部类型 `,-1),(E(!0),L(A,null,l(f.value,e=>(E(),L(`option`,{key:e,value:e},_(e),9,Ft))),128))],512),[[O,s.value]]),t(w(`select`,{"onUpdate:modelValue":i[2]||=e=>c.value=e,class:`h-9 min-w-0 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-2.5 text-sm text-(--dashboard-text) outline-none transition focus:border-(--dashboard-accent)`},[...i[6]||=[x(`<option value="size"> 按体积 </option><option value="compressed"> 按压缩后 </option><option value="delta"> 按增量 </option><option value="modules"> 按模块数 </option><option value="name"> 按名称 </option>`,5)]],512),[[O,c.value]])])]),w(`div`,It,[h.value?(E(),y(Tt,r({key:0,class:`mb-2`},h.value),null,16)):F(``,!0),w(`ol`,Lt,[p.value.length===0?(E(),y(G,{key:0,as:`li`,compact:``},{default:R(()=>[...i[7]||=[I(` 没有匹配当前筛选条件的文件。 `,-1)]]),_:1})):F(``,!0),(E(!0),L(A,null,l(p.value,e=>(E(),y(Tt,{key:e.key,active:e.active,clickable:``,meta:e.meta,title:e.title,value:e.value,onSelect:t=>a(`selectFile`,e.file)},null,8,[`active`,`meta`,`title`,`value`,`onSelect`]))),128))])])]))}}),zt={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)`},Bt={class:`mb-2 flex items-center justify-between gap-3`},Vt={class:`mt-1 text-xs text-(--dashboard-text-soft)`},Ht={class:`mb-3 grid gap-2`},Ut={class:`flex flex-wrap items-center gap-2`},Wt={key:0,class:`text-xs font-medium text-(--dashboard-accent)`},Gt=[`disabled`],Kt=[`disabled`],qt={class:`grid grid-cols-2 gap-2`},Jt=[`value`],Yt={class:`grid min-h-0 gap-2 overflow-y-auto pr-1 text-sm text-(--dashboard-text-muted)`},Xt=n({__name:`AnalyzeFileModulesPanel`,props:{selectedFileModules:{}},setup(e){let n=e,r=m(``),i=m(`all`),a=m(`saving`),o=m(``),s=null;function c(e){return e.replaceAll(`|`,`\\|`).replaceAll(`
2
+ import{A as e,B as t,C as n,D as r,E as i,G as a,H as o,I as s,K as c,N as l,O as u,P as d,R as f,S as p,U as m,V as h,W as g,X as _,Y as v,_ as y,a as b,b as x,d as S,f as C,g as w,h as T,j as E,k as D,l as O,m as ee,o as k,p as A,q as j,s as M,t as N,u as P,v as F,x as I,y as L,z as R}from"./vue.js";import{a as te,i as ne,n as re,r as ie,s as ae,t as oe}from"./monaco.js";import{D as se,E as z,O as B,S as ce,T as le,b as ue,c as V,m as de,o as fe,s as pe,t as me,u as H,w as U,x as he,y as ge}from"./index.js";import{n as W,t as G}from"./AppEmptyState.js";import{t as K}from"./AppMetricTile.js";import{a as _e,c as ve,d as ye,i as be,l as xe,n as Se,o as Ce,r as we,s as Te,t as Ee,u as De}from"./echarts.js";var Oe={action:`动作`,budget:`预算`,package:`包`,file:`文件`,increment:`增量`,module:`模块`},ke={action:`warning`,budget:`warning`,package:`neutral`,file:`neutral`,module:`neutral`,increment:`info`},Ae=[{value:`all`,label:`全部`},{value:`action`,label:`动作`},{value:`budget`,label:`预算`},{value:`package`,label:`包`},{value:`file`,label:`文件`},{value:`module`,label:`模块`},{value:`increment`,label:`增量`}];function je(e,t){let n=m(),r=m(``),i=m(0),a=m(`all`),o=T(()=>{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):!0).slice(0,40)}),s=T(()=>o.value[i.value]??null),c=T(()=>{let t=a.value===`all`?`全部类型`:Oe[a.value];return`匹配 ${o.value.length} / ${e.items.length} 项 · ${t}`});f(()=>e.open,async e=>{if(!e){r.value=``,a.value=`all`,i.value=0;return}await u(),n.value?.focus()}),f(o,()=>{i.value=0});function l(e){return Oe[e]}function d(e){return le({tone:ke[e]})}function p(e){t(`select`,e),t(`close`)}function h(e){if(e.key===`Escape`){e.preventDefault(),t(`close`);return}if(e.key===`ArrowDown`){e.preventDefault(),i.value=Math.min(i.value+1,Math.max(o.value.length-1,0));return}if(e.key===`ArrowUp`){e.preventDefault(),i.value=Math.max(i.value-1,0);return}if(e.key===`Enter`){e.preventDefault();let t=o.value[i.value];t&&p(t)}}return{activeIndex:i,filteredItems:o,getKindLabel:l,getKindTone:d,handleKeydown:h,kindFilter:a,kindOptions:Ae,query:r,resultSummary:c,searchInputRef:n,selectedItem:s,selectItem:p}}var Me={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`},Ne={class:`grid gap-3 border-b border-(--dashboard-border) px-4 py-3`},Pe={class:`flex items-center gap-3`},Fe={class:`h-5 w-5 shrink-0 text-(--dashboard-accent)`},Ie={class:`flex flex-wrap items-center justify-between gap-2`},Le={class:`text-xs text-(--dashboard-text-soft)`},Re=[`value`],ze={class:`grid min-h-0 gap-2 overflow-hidden p-2 lg:grid-cols-[minmax(0,1fr)_minmax(16rem,0.52fr)]`},Be={key:1,class:`grid max-h-full min-h-0 gap-1 overflow-y-auto pr-1`},Ve=[`onMouseenter`,`onClick`],He={class:`flex items-start justify-between gap-3`},Ue={class:`min-w-0`},We={class:`flex min-w-0 items-center gap-2`},Ge={class:`truncate font-medium text-(--dashboard-text)`},Ke={class:`mt-1 truncate text-xs text-(--dashboard-text-soft)`},qe={key:0,class:`whitespace-nowrap text-sm font-medium text-(--dashboard-accent)`},Je={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`},Ye={class:`flex items-start justify-between gap-3`},Xe={key:1,class:`grid min-h-0 content-start gap-3 overflow-y-auto`},Ze={class:`font-medium`},Qe={class:`mt-1 text-sm leading-6 text-(--dashboard-text-muted)`},$e={class:`grid gap-2 text-sm`},et={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`},nt={class:`text-(--dashboard-accent)`},rt=n({__name:`AnalyzeCommandPalette`,props:{open:{type:Boolean},items:{}},emits:[`close`,`select`],setup(e,{emit:n}){let r=e,i=n,{activeIndex:a,filteredItems:o,getKindLabel:s,getKindTone:u,handleKeydown:d,kindFilter:f,kindOptions:m,query:g,resultSummary:v,searchInputRef:b,selectedItem:x,selectItem:S}=je(r,i);return(n,r)=>(E(),y(ee,{to:`body`},[p(M,{"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:R(()=>[e.open?(E(),L(`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:r[4]||=C(e=>i(`close`),[`self`])},[w(`section`,Me,[w(`div`,Ne,[w(`div`,Pe,[w(`span`,Fe,[p(B,{name:`metric-search`})]),t(w(`input`,{ref_key:`searchInputRef`,ref:b,"onUpdate:modelValue":r[0]||=e=>h(g)?g.value=e:null,class:`min-w-0 flex-1 bg-transparent text-base outline-none placeholder:text-(--dashboard-text-soft)`,placeholder:`搜索包、文件、模块、预算`,onKeydown:r[1]||=(...e)=>c(d)&&c(d)(...e)},null,544),[[P,c(g)]])]),w(`div`,Ie,[w(`p`,Le,_(c(v)),1),t(w(`select`,{"onUpdate:modelValue":r[2]||=e=>h(f)?f.value=e:null,class:`h-8 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel) px-2.5 text-sm text-(--dashboard-text) outline-none transition focus:border-(--dashboard-border-strong)`},[(E(!0),L(A,null,l(c(m),e=>(E(),L(`option`,{key:e.value,value:e.value},_(e.label),9,Re))),128))],512),[[O,c(f)]])])]),w(`div`,ze,[c(o).length===0?(E(),y(G,{key:0,compact:``},{default:R(()=>[...r[5]||=[I(` 没有匹配结果。 `,-1)]]),_:1})):(E(),L(`ul`,Be,[(E(!0),L(A,null,l(c(o),(e,t)=>(E(),L(`li`,{key:e.key,class:`list-none`},[w(`button`,{type:`button`,class:j([`w-full rounded-md border px-3 py-2.5 text-left transition`,t===c(a)?`border-(--dashboard-accent) bg-(--dashboard-accent-soft)`:`border-transparent hover:border-(--dashboard-border) hover:bg-(--dashboard-panel-muted)`]),onMouseenter:e=>a.value=t,onClick:t=>c(S)(e)},[w(`div`,He,[w(`div`,Ue,[w(`div`,We,[w(`span`,{class:j(c(u)(e.kind))},_(c(s)(e.kind)),3),w(`p`,Ge,_(e.title),1)]),w(`p`,Ke,_(e.meta),1)]),e.value?(E(),L(`span`,qe,_(e.value),1)):F(``,!0)])],42,Ve)]))),128))])),w(`aside`,Je,[w(`div`,Ye,[r[6]||=w(`div`,null,[w(`p`,{class:`text-[11px] uppercase tracking-[0.2em] text-(--dashboard-accent)`},` Preview `),w(`h3`,{class:`mt-1 text-base font-semibold`},` 当前命令 `)],-1),c(x)?(E(),L(`span`,{key:0,class:j(c(u)(c(x).kind))},_(c(s)(c(x).kind)),3)):F(``,!0)]),c(x)?(E(),L(`div`,Xe,[w(`div`,null,[w(`h4`,Ze,_(c(x).title),1),w(`p`,Qe,_(c(x).meta),1)]),w(`div`,$e,[w(`div`,et,[r[8]||=w(`span`,{class:`text-xs uppercase tracking-[0.16em] text-(--dashboard-text-soft)`},`Tab`,-1),w(`strong`,null,_(c(x).tab),1)]),c(x).value?(E(),L(`div`,tt,[r[9]||=w(`span`,{class:`text-xs uppercase tracking-[0.16em] text-(--dashboard-text-soft)`},`Value`,-1),w(`strong`,nt,_(c(x).value),1)])):F(``,!0)]),w(`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:r[3]||=e=>c(S)(c(x))},` 跳转到结果 `)])):(E(),y(G,{key:0,compact:``},{default:R(()=>[...r[7]||=[I(` 选择左侧结果后查看目标和跳转位置。 `,-1)]]),_:1}))])])])])):F(``,!0)]),_:1})]))}}),it={class:`grid gap-3 xl:grid-cols-[minmax(0,1fr)_minmax(18rem,0.92fr)]`},at={class:`rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-4`},ot={class:`mt-4 grid gap-2`},st={class:`grid gap-2`},ct=n({__name:`AnalyzeEmptyPayloadPanel`,setup(e){return(e,t)=>(E(),y(he,{eyebrow:`Analyze`,title:`等待分析数据注入`,"icon-name":`hero-commands`,tone:`strong`,padding:`header`},{default:R(()=>[w(`div`,it,[w(`div`,at,[t[0]||=w(`p`,{class:`text-[11px] uppercase tracking-[0.24em] text-(--dashboard-text-soft)`},` recommended commands `,-1),w(`div`,ot,[(E(),L(A,null,l([`weapp-vite analyze`,`weapp-vite build --ui`,`weapp-vite dev --ui`],e=>w(`code`,{key:e,class:`rounded-md bg-slate-950 px-3 py-3 text-xs text-slate-100 dark:bg-slate-900`},_(e),1)),64))])]),w(`div`,st,[p(c(N),{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:R(()=>[...t[1]||=[w(`p`,{class:`font-medium`},` 返回工作台 `,-1),w(`p`,{class:`mt-1 text-sm leading-6 text-(--dashboard-text-muted)`},` 查看当前状态和命令。 `,-1)]]),_:1}),p(c(N),{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:R(()=>[...t[2]||=[w(`p`,{class:`font-medium`},` 查看活动流 `,-1),w(`p`,{class:`mt-1 text-sm leading-6 text-(--dashboard-text-muted)`},` 观察命令、构建、HMR 和诊断事件。 `,-1)]]),_:1})])])]),_:1}))}}),lt=[`onDrop`],ut={class:`flex min-h-0 items-center justify-between gap-2 pb-1`},dt=[`onDragstart`],ft={class:`truncate`},pt={class:`min-h-0 overflow-hidden`},q=n({__name:`AnalyzeDraggableGrid`,props:{items:{},storageKey:{},gridClass:{}},setup(t){let n=t,r=g([]),i=g(null),a=T(()=>new Map(n.items.map(e=>[e.id,e]))),o=T(()=>{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 u(e,t){i.value=e.id,t.dataTransfer?.setData(`text/plain`,e.id),t.dataTransfer&&(t.dataTransfer.effectAllowed=`move`)}function p(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 m(){c(n.items.map(e=>e.id))}return e(s),f(()=>n.items.map(e=>e.id).join(`\0`),s),(e,n)=>(E(),L(`section`,{class:j(t.gridClass)},[(E(!0),L(A,null,l(o.value,t=>(E(),L(`article`,{key:t.id,class:j([`grid min-h-0 grid-rows-[auto_minmax(0,1fr)] overflow-hidden rounded-lg border border-dashed border-transparent transition`,[t.className,i.value===t.id?`border-(--dashboard-accent) opacity-70`:``]]),onDragover:n[1]||=C(()=>{},[`prevent`]),onDrop:e=>p(t)},[w(`div`,ut,[w(`button`,{class:`inline-flex min-w-0 cursor-grab items-center gap-2 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-2 py-1 text-[11px] uppercase tracking-[0.16em] text-(--dashboard-text-soft) transition hover:border-(--dashboard-border-strong) hover:text-(--dashboard-text)`,draggable:`true`,type:`button`,onDragend:n[0]||=e=>i.value=null,onDragstart:e=>u(t,e)},[n[2]||=w(`span`,{"aria-hidden":`true`},`::`,-1),w(`span`,ft,_(t.label),1)],40,dt),o.value.length>1&&t.id===o.value[0]?.id?(E(),L(`button`,{key:0,class:`shrink-0 rounded-full border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-2 py-1 text-[11px] text-(--dashboard-text-soft) transition hover:border-(--dashboard-border-strong) hover:text-(--dashboard-text)`,type:`button`,onClick:m},` 重置布局 `)):F(``,!0)]),w(`div`,pt,[d(e.$slots,t.id,{item:t})])],42,lt))),128))],2))}});function mt(e){return typeof e!=`number`||Number.isNaN(e)||e===0?``:`${e>0?`+`:`-`}${V(Math.abs(e))}`}function ht(e){let t=mt(e.sizeDeltaBytes);return{title:e.file,meta:`${e.packageLabel} · ${H(e.packageType)} · ${e.type}${t?` · ${t}`:``}`,value:`${V(e.size)} / ${V(e.compressedSize)}`}}function gt(e){return e.kind===`package`?{title:e.packageLabel,meta:`${H(e.packageType)} · ${e.fileCount} 个产物`,value:V(e.totalBytes)}:e.kind===`file`?{title:e.fileName,meta:`${e.packageLabel} · ${e.type} · ${e.childCount} 项`,value:V(e.bytes)}:e.kind===`module`?{title:e.source,meta:`${e.packageLabel} · ${e.packageCount} 个包复用`,value:V(e.bytes??e.originalBytes)}:{title:e.source,meta:`${e.packageLabel} · ${e.fileName}`,value:V(e.bytes)}}function _t(e){return e.replaceAll(`|`,`\\|`).replaceAll(`
3
+ `,` `)}function vt(e){return[`# dashboard 文件详情`,``,`文件数量:${e.files.length} / ${e.totalCount}`,``,`| 文件 | 包 | 类型 | 总体积 | 压缩后 | 较上次 | 模块 | 来源 |`,`| --- | --- | --- | ---: | ---: | ---: | ---: | --- |`,...e.files.map(e=>[e.file,e.packageLabel,e.type,V(e.size),V(e.compressedSize),mt(e.sizeDeltaBytes)||`-`,String(e.moduleCount),e.source??`-`].map(_t).join(` | `)).map(e=>`| ${e} |`),``].join(`
4
+ `)}var yt={class:`flex items-start justify-between gap-3`},bt={class:`min-w-0`},xt={class:`mt-1 text-xs text-(--dashboard-text-soft)`},St={key:0,class:`whitespace-nowrap font-medium text-(--dashboard-accent)`},Ct={key:1,class:`list-none`},wt={class:`flex items-start justify-between gap-3`},Tt={class:`min-w-0`},Et={class:`mt-1 text-xs text-(--dashboard-text-soft)`},Dt={key:0,class:`whitespace-nowrap font-medium text-(--dashboard-accent)`},Ot=n({__name:`AppCompactListItem`,props:{title:{},meta:{},value:{},monoTitle:{type:Boolean},clickable:{type:Boolean},active:{type:Boolean}},emits:[`select`],setup(e,{emit:t}){let n=t;return(t,r)=>e.clickable?(E(),L(`li`,Ct,[w(`button`,{type:`button`,class:j([`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)`,e.active?`border-(--dashboard-accent) bg-(--dashboard-accent-soft)`:void 0]),onClick:r[0]||=e=>n(`select`)},[w(`div`,wt,[w(`div`,Tt,[w(`p`,{class:j([`font-medium`,e.monoTitle?`truncate font-mono text-xs text-(--dashboard-text)`:`truncate text-(--dashboard-text)`])},_(e.title),3),w(`p`,Et,_(e.meta),1)]),e.value?(E(),L(`span`,Dt,_(e.value),1)):F(``,!0)])],2)])):(E(),L(`li`,{key:0,class:j([`rounded-xl border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 py-2.5`,e.active?`border-(--dashboard-accent) bg-(--dashboard-accent-soft)`:void 0])},[w(`div`,yt,[w(`div`,bt,[w(`p`,{class:j([`font-medium`,e.monoTitle?`truncate font-mono text-xs text-(--dashboard-text)`:`truncate text-(--dashboard-text)`])},_(e.title),3),w(`p`,xt,_(e.meta),1)]),e.value?(E(),L(`span`,St,_(e.value),1)):F(``,!0)])],2))}}),kt={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)`},At={class:`mb-2 flex items-center justify-between gap-3`},jt={class:`mt-1 text-xs text-(--dashboard-text-soft)`},Mt={class:`mb-3 grid gap-2`},Nt={class:`flex flex-wrap items-center gap-2`},Pt={key:0,class:`text-xs font-medium text-(--dashboard-accent)`},Ft=[`disabled`],It=[`disabled`],Lt={class:`grid grid-cols-2 gap-2`},Rt=[`value`],zt={class:`min-h-0 overflow-y-auto pr-1`},Bt={class:`grid gap-2 text-sm`},Vt=n({__name:`AnalyzeFileExplorerPanel`,props:{largestFiles:{},activeLargestFileKey:{},selectedTreemapMeta:{}},emits:[`selectFile`],setup(e,{emit:n}){let i=e,a=n,o=m(``),s=m(`all`),c=m(`size`),u=m(``),d=null,f=T(()=>{let e=new Set;for(let t of i.largestFiles)e.add(t.type);return[...e].sort((e,t)=>e.localeCompare(t))}),p=T(()=>{let e=o.value.trim().toLowerCase();return i.largestFiles.filter(t=>s.value!==`all`&&t.type!==s.value?!1:e?[t.file,t.packageId,t.packageLabel,t.packageType,t.type,t.source].some(t=>t?.toLowerCase().includes(e)):!0).sort((e,t)=>c.value===`compressed`?t.compressedSize-e.compressedSize||e.file.localeCompare(t.file):c.value===`delta`?(t.sizeDeltaBytes??-1/0)-(e.sizeDeltaBytes??-1/0)||e.file.localeCompare(t.file):c.value===`modules`?t.moduleCount-e.moduleCount||t.size-e.size||e.file.localeCompare(t.file):c.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:i.activeLargestFileKey===`${e.packageId}:${e.file}`||i.selectedTreemapMeta?.kind!==`package`&&i.selectedTreemapMeta?.packageLabel===e.packageLabel&&i.selectedTreemapMeta?.fileName===e.file,...ht(e)}))}),h=T(()=>i.selectedTreemapMeta?gt(i.selectedTreemapMeta):null),g=T(()=>vt({files:p.value.map(e=>e.file),totalCount:i.largestFiles.length}));function v(e){u.value=e,d&&clearTimeout(d),d=setTimeout(()=>{u.value=``,d=null},1800)}async function b(){try{await W(g.value),v(`已复制`)}catch{v(`复制失败`)}}function S(){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),v(`已导出`)}return D(()=>{d&&clearTimeout(d)}),(n,i)=>(E(),L(`section`,kt,[w(`div`,At,[w(`div`,null,[i[3]||=w(`h3`,{class:`text-sm font-semibold text-(--dashboard-text)`},` Top Files `,-1),w(`p`,jt,` 匹配 `+_(p.value.length)+` / `+_(e.largestFiles.length)+` 个文件 `,1)]),i[4]||=w(`span`,{class:`text-[11px] uppercase tracking-[0.16em] text-(--dashboard-text-soft)`},`size`,-1)]),w(`div`,Mt,[w(`div`,Nt,[u.value?(E(),L(`span`,Pt,_(u.value),1)):F(``,!0),w(`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:p.value.length===0,onClick:b},` 复制文件 `,8,Ft),w(`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:p.value.length===0,onClick:S},` 导出 JSON `,8,It)]),t(w(`input`,{"onUpdate:modelValue":i[0]||=e=>o.value=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),[[P,o.value]]),w(`div`,Lt,[t(w(`select`,{"onUpdate:modelValue":i[1]||=e=>s.value=e,class:`h-9 min-w-0 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-2.5 text-sm text-(--dashboard-text) outline-none transition focus:border-(--dashboard-accent)`},[i[5]||=w(`option`,{value:`all`},` 全部类型 `,-1),(E(!0),L(A,null,l(f.value,e=>(E(),L(`option`,{key:e,value:e},_(e),9,Rt))),128))],512),[[O,s.value]]),t(w(`select`,{"onUpdate:modelValue":i[2]||=e=>c.value=e,class:`h-9 min-w-0 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-2.5 text-sm text-(--dashboard-text) outline-none transition focus:border-(--dashboard-accent)`},[...i[6]||=[x(`<option value="size"> 按体积 </option><option value="compressed"> 按压缩后 </option><option value="delta"> 按增量 </option><option value="modules"> 按模块数 </option><option value="name"> 按名称 </option>`,5)]],512),[[O,c.value]])])]),w(`div`,zt,[h.value?(E(),y(Ot,r({key:0,class:`mb-2`},h.value),null,16)):F(``,!0),w(`ol`,Bt,[p.value.length===0?(E(),y(G,{key:0,as:`li`,compact:``},{default:R(()=>[...i[7]||=[I(` 没有匹配当前筛选条件的文件。 `,-1)]]),_:1})):F(``,!0),(E(!0),L(A,null,l(p.value,e=>(E(),y(Ot,{key:e.key,active:e.active,clickable:``,meta:e.meta,title:e.title,value:e.value,onSelect:t=>a(`selectFile`,e.file)},null,8,[`active`,`meta`,`title`,`value`,`onSelect`]))),128))])])]))}}),Ht={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)`},Ut={class:`mb-2 flex items-center justify-between gap-3`},Wt={class:`mt-1 text-xs text-(--dashboard-text-soft)`},Gt={class:`mb-3 grid gap-2`},Kt={class:`flex flex-wrap items-center gap-2`},qt={key:0,class:`text-xs font-medium text-(--dashboard-accent)`},Jt=[`disabled`],Yt=[`disabled`],Xt={class:`grid grid-cols-2 gap-2`},Zt=[`value`],Qt={class:`grid min-h-0 gap-2 overflow-y-auto pr-1 text-sm text-(--dashboard-text-muted)`},$t=n({__name:`AnalyzeFileModulesPanel`,props:{selectedFileModules:{}},setup(e){let n=e,r=m(``),i=m(`all`),a=m(`saving`),o=m(``),s=null;function c(e){return e.replaceAll(`|`,`\\|`).replaceAll(`
5
5
  `,` `)}let u=T(()=>{let e=new Set;for(let t of n.selectedFileModules)e.add(t.sourceType);return[...e].sort((e,t)=>e.localeCompare(t))}),d=T(()=>{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)):!0).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))}),f=T(()=>d.value.map(e=>({key:e.key,title:e.source,meta:`${e.sourceType} · ${e.duplicatePackageCount>1?`${e.duplicatePackageCount} 个包复用`:`单包模块`} · 可节省 ${V(e.estimatedSavingBytes)}`,value:e.originalBytes&&e.originalBytes!==e.bytes?`${V(e.bytes)} / ${V(e.originalBytes)}`:V(e.bytes)}))),p=T(()=>[`# dashboard 文件模块明细`,``,`模块数量:${d.value.length} / ${n.selectedFileModules.length}`,``,`| 模块 | 来源 | 体积 | 原始体积 | 复用包 | 可节省 |`,`| --- | --- | ---: | ---: | ---: | ---: |`,...d.value.map(e=>[e.source,e.sourceType,V(e.bytes),e.originalBytes?V(e.originalBytes):`-`,String(e.duplicatePackageCount),V(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 W(p.value),h(`已复制`)}catch{h(`复制失败`)}}function v(){let e=new Blob([`${JSON.stringify(d.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(`已导出`)}return D(()=>{s&&clearTimeout(s)}),(n,s)=>(E(),L(`section`,zt,[w(`div`,Bt,[w(`div`,null,[s[3]||=w(`h3`,{class:`text-sm font-semibold text-(--dashboard-text)`},` 文件详情 `,-1),w(`p`,Vt,` 匹配 `+_(f.value.length)+` / `+_(e.selectedFileModules.length)+` 个模块 `,1)]),s[4]||=w(`span`,{class:`text-[11px] uppercase tracking-[0.16em] text-(--dashboard-text-soft)`},`modules`,-1)]),w(`div`,Ht,[w(`div`,Ut,[o.value?(E(),L(`span`,Wt,_(o.value),1)):F(``,!0),w(`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:f.value.length===0,onClick:g},` 复制模块 `,8,Gt),w(`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:f.value.length===0,onClick:v},` 导出 JSON `,8,Kt)]),t(w(`input`,{"onUpdate:modelValue":s[0]||=e=>r.value=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),[[P,r.value]]),w(`div`,qt,[t(w(`select`,{"onUpdate:modelValue":s[1]||=e=>i.value=e,class:`h-9 min-w-0 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-2.5 text-sm text-(--dashboard-text) outline-none transition focus:border-(--dashboard-accent)`},[s[5]||=w(`option`,{value:`all`},` 全部来源 `,-1),(E(!0),L(A,null,l(u.value,e=>(E(),L(`option`,{key:e,value:e},_(e),9,Jt))),128))],512),[[O,i.value]]),t(w(`select`,{"onUpdate:modelValue":s[2]||=e=>a.value=e,class:`h-9 min-w-0 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-2.5 text-sm text-(--dashboard-text) outline-none transition focus:border-(--dashboard-accent)`},[...s[6]||=[w(`option`,{value:`saving`},` 按可节省 `,-1),w(`option`,{value:`size`},` 按体积 `,-1),w(`option`,{value:`duplicates`},` 按复用包 `,-1),w(`option`,{value:`source`},` 按路径 `,-1)]],512),[[O,a.value]])])]),w(`ul`,Yt,[f.value.length===0?(E(),y(G,{key:0,as:`li`,compact:``},{default:R(()=>[...s[7]||=[I(` 选择一个 chunk 文件或调整筛选条件查看模块明细。 `,-1)]]),_:1})):F(``,!0),(E(!0),L(A,null,l(f.value,e=>(E(),y(Tt,{key:e.key,meta:e.meta,"mono-title":``,title:e.title,value:e.value},null,8,[`meta`,`title`,`value`]))),128))])]))}}),J={totalBytes:20*1024*1024,mainBytes:2*1024*1024,subPackageBytes:2*1024*1024,independentBytes:2*1024*1024,warningRatio:.85,source:`default`},Y=1024*1024,Zt=[{id:`wechat-default`,label:`平台上限`,detail:`按小程序常见包体限制和 85% 预警线评估。`,config:{totalBytes:20*Y,mainBytes:2*Y,subPackageBytes:2*Y,independentBytes:2*Y,warningRatio:.85}},{id:`release-buffer`,label:`发布缓冲`,detail:`保留更早预警空间,适合发版前巡检。`,config:{totalBytes:20*Y,mainBytes:2*Y,subPackageBytes:2*Y,independentBytes:2*Y,warningRatio:.75}},{id:`near-limit`,label:`临界排查`,detail:`只标记接近上限的包,适合聚焦最紧急项。`,config:{totalBytes:20*Y,mainBytes:2*Y,subPackageBytes:2*Y,independentBytes:2*Y,warningRatio:.95}}];function Qt(e,t){return Number.isFinite(e)&&e>0?Math.round(e):t}function $t(e){return Number.isFinite(e)?Math.min(.99,Math.max(.01,e)):J.warningRatio}function en(e,t){return e===`main`?t.mainBytes:e===`subPackage`?t.subPackageBytes:e===`independent`?t.independentBytes:0}function tn(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 nn(e){return{totalBytes:Qt(e?.totalBytes??J.totalBytes,J.totalBytes),mainBytes:Qt(e?.mainBytes??J.mainBytes,J.mainBytes),subPackageBytes:Qt(e?.subPackageBytes??J.subPackageBytes,J.subPackageBytes),independentBytes:Qt(e?.independentBytes??J.independentBytes,J.independentBytes),warningRatio:$t(e?.warningRatio??J.warningRatio)}}function rn(e,t){return e.totalBytes===t.totalBytes&&e.mainBytes===t.mainBytes&&e.subPackageBytes===t.subPackageBytes&&e.independentBytes===t.independentBytes&&e.warningRatio===t.warningRatio}function an(e){let t=nn(e);return Zt.find(e=>rn(nn(e.config),t))}function on(e){let t=nn(e.config),n=[],r=tn({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=en(r.type,t);if(!e)continue;let i=tn({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 sn(e){let t=nn(e);return[`analyze: {`,` budgets: {`,` totalBytes: ${t.totalBytes},`,` mainBytes: ${t.mainBytes},`,` subPackageBytes: ${t.subPackageBytes},`,` independentBytes: ${t.independentBytes},`,` warningRatio: ${t.warningRatio},`,` },`,`},`].join(`
7
- `)}var cn={class:`grid h-full min-h-0 grid-rows-[auto_minmax(0,1fr)] overflow-hidden rounded-lg border border-(--dashboard-border) bg-(--dashboard-panel) p-3 shadow-(--dashboard-shadow)`},ln={class:`mb-2 flex items-center justify-between gap-3`},un={class:`mt-1 text-xs text-(--dashboard-text-soft)`},dn={key:0,class:`text-xs font-medium text-(--dashboard-accent)`},fn={class:`grid min-h-0 grid-rows-[auto_auto_auto_minmax(0,1fr)] gap-3 overflow-hidden`},pn={class:`grid grid-cols-3 gap-2`},mn=[`onClick`],hn={class:`block truncate text-xs font-semibold`},gn={class:`mt-1 line-clamp-2 block text-[11px] leading-4 opacity-80`},_n={class:`grid grid-cols-2 gap-2`},vn={class:`grid gap-1 text-[11px] text-(--dashboard-text-soft)`},yn={class:`grid gap-1 text-[11px] text-(--dashboard-text-soft)`},bn={class:`grid gap-1 text-[11px] text-(--dashboard-text-soft)`},xn={class:`grid gap-1 text-[11px] text-(--dashboard-text-soft)`},Sn={class:`grid gap-2`},Cn={class:`grid gap-1 text-[11px] text-(--dashboard-text-soft)`},wn={class:`min-h-0 overflow-y-auto pr-1`},Tn={key:1,class:`grid content-start gap-2 text-sm text-(--dashboard-text-muted)`},En=n({__name:`BudgetSandboxPanel`,props:{activeBudgetWarningId:{},budgetConfig:{},currentWarnings:{},packageInsights:{},totalBytes:{}},emits:[`selectBudgetWarning`],setup(e,{emit:n}){let r=e,i=n,a=o({totalMiB:0,mainMiB:0,subPackageMiB:0,independentMiB:0,warningPercent:85}),s=o({text:``,timer:null});function u(e){return Number((e/1024/1024).toFixed(2))}function d(e){return Math.max(1,Math.round((Number.isFinite(e)?e:0)*1024*1024))}function p(){return nn(r.budgetConfig??J)}function m(){let e=p();a.totalMiB=u(e.totalBytes),a.mainMiB=u(e.mainBytes),a.subPackageMiB=u(e.subPackageBytes),a.independentMiB=u(e.independentBytes),a.warningPercent=Math.round(e.warningRatio*100)}let h=T(()=>nn({totalBytes:d(a.totalMiB),mainBytes:d(a.mainMiB),subPackageBytes:d(a.subPackageMiB),independentBytes:d(a.independentMiB),warningRatio:a.warningPercent/100})),g=T(()=>on({totalBytes:r.totalBytes,packages:r.packageInsights,config:h.value})),v=T(()=>an(h.value)?.id??null),b=T(()=>new Set(r.currentWarnings.map(e=>e.id))),x=T(()=>new Set(g.value.map(e=>e.id))),S=T(()=>g.value.filter(e=>!b.value.has(e.id)).length),C=T(()=>r.currentWarnings.filter(e=>!x.value.has(e.id)).length),O=T(()=>sn(h.value)),ee=T(()=>g.value.slice(0,6).map(e=>({key:e.id,warning:e,active:r.activeBudgetWarningId===e.id,title:e.label,meta:`${e.status===`critical`?`超预算`:`接近预算`} · ${(e.ratio*100).toFixed(1)}%`,value:`${V(e.currentBytes)} / ${V(e.limitBytes)}`})));function k(e){s.text=e,s.timer&&clearTimeout(s.timer),s.timer=setTimeout(()=>{s.text=``,s.timer=null},1800)}function M(e){let t=Zt.find(t=>t.id===e);if(!t)return;let n=nn(t.config);a.totalMiB=u(n.totalBytes),a.mainMiB=u(n.mainBytes),a.subPackageMiB=u(n.subPackageBytes),a.independentMiB=u(n.independentBytes),a.warningPercent=Math.round(n.warningRatio*100),k(`已应用 ${t.label}`)}async function N(){try{await W(O.value),k(`已复制`)}catch{k(`复制失败`)}}return f(()=>r.budgetConfig,m,{immediate:!0}),D(()=>{s.timer&&clearTimeout(s.timer)}),(e,n)=>(E(),L(`section`,cn,[w(`div`,ln,[w(`div`,null,[n[5]||=w(`h3`,{class:`text-sm font-semibold text-(--dashboard-text)`},` 预算沙盘 `,-1),w(`p`,un,` 预测 `+_(g.value.length)+` 个告警 · 新增 `+_(S.value)+` · 解除 `+_(C.value),1)]),s.text?(E(),L(`span`,dn,_(s.text),1)):F(``,!0)]),w(`div`,fn,[w(`div`,pn,[(E(!0),L(A,null,l(c(Zt),e=>(E(),L(`button`,{key:e.id,class:j([`rounded-md border px-2 py-2 text-left transition`,v.value===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=>M(e.id)},[w(`span`,hn,_(e.label),1),w(`span`,gn,_(e.detail),1)],10,mn))),128))]),w(`div`,_n,[w(`label`,vn,[n[6]||=I(` 总包 MB `,-1),t(w(`input`,{"onUpdate:modelValue":n[0]||=e=>a.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),[[P,a.totalMiB,void 0,{number:!0}]])]),w(`label`,yn,[n[7]||=I(` 主包 MB `,-1),t(w(`input`,{"onUpdate:modelValue":n[1]||=e=>a.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),[[P,a.mainMiB,void 0,{number:!0}]])]),w(`label`,bn,[n[8]||=I(` 分包 MB `,-1),t(w(`input`,{"onUpdate:modelValue":n[2]||=e=>a.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),[[P,a.subPackageMiB,void 0,{number:!0}]])]),w(`label`,xn,[n[9]||=I(` 独立分包 MB `,-1),t(w(`input`,{"onUpdate:modelValue":n[3]||=e=>a.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),[[P,a.independentMiB,void 0,{number:!0}]])])]),w(`div`,Sn,[w(`label`,Cn,[I(` 预警线 `+_(a.warningPercent)+`% `,1),t(w(`input`,{"onUpdate:modelValue":n[4]||=e=>a.warningPercent=e,class:`accent-(--dashboard-accent)`,max:`99`,min:`1`,step:`1`,type:`range`},null,512),[[P,a.warningPercent,void 0,{number:!0}]])]),w(`div`,{class:`grid grid-cols-2 gap-2`},[w(`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:m},` 重置 `),w(`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:N},` 复制配置 `)])]),w(`div`,wn,[ee.value.length===0?(E(),y(G,{key:0,compact:``},{default:R(()=>[...n[10]||=[I(` 当前沙盘预算下没有预计告警。 `,-1)]]),_:1})):(E(),L(`ul`,Tn,[(E(!0),L(A,null,l(ee.value,e=>(E(),y(Tt,{key:e.key,active:e.active,clickable:``,meta:e.meta,title:e.title,value:e.value,onSelect:t=>i(`selectBudgetWarning`,e.warning)},null,8,[`active`,`meta`,`title`,`value`,`onSelect`]))),128))]))])])]))}}),Dn=n({__name:`AnalyzeDetailsPanel`,props:{largestFiles:{},selectedFileModules:{},budgetWarnings:{},budgetConfig:{},packageInsights:{},totalBytes:{},activeBudgetWarningId:{},activeLargestFileKey:{},selectedTreemapMeta:{}},emits:[`selectFile`,`selectBudgetWarning`],setup(e,{emit:t}){let n=t,r=[{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`}];return(t,i)=>(E(),y(q,{"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,"storage-key":`weapp-vite:dashboard:analyze-layout:files`},{"top-files":R(()=>[p(Rt,{"largest-files":e.largestFiles,"active-largest-file-key":e.activeLargestFileKey,"selected-treemap-meta":e.selectedTreemapMeta,onSelectFile:i[0]||=e=>n(`selectFile`,e)},null,8,[`largest-files`,`active-largest-file-key`,`selected-treemap-meta`])]),"file-modules":R(()=>[p(Xt,{"selected-file-modules":e.selectedFileModules},null,8,[`selected-file-modules`])]),budget:R(()=>[p(En,{"active-budget-warning-id":e.activeBudgetWarningId,"budget-config":e.budgetConfig,"current-warnings":e.budgetWarnings,"package-insights":e.packageInsights,"total-bytes":e.totalBytes,onSelectBudgetWarning:i[1]||=e=>n(`selectBudgetWarning`,e)},null,8,[`active-budget-warning-id`,`budget-config`,`current-warnings`,`package-insights`,`total-bytes`])]),_:1}))}}),On={critical:4,warning:3,info:2,success:1};function kn(e){return e===`budget`?`预算`:e===`increment`?`增量`:e===`duplicate`?`重复`:`文件`}function An(e){return le(e===`critical`?{tone:`error`}:e===`warning`?{tone:`warning`}:e===`success`?{tone:`success`}:{tone:`info`})}function jn(e){return e===`critical`?`必须处理`:e===`warning`?`建议处理`:e===`success`?`可查看`:`定位`}function Mn(e,t){return[...e].sort((e,n)=>t===`severity`?On[n.tone]-On[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||On[n.tone]-On[e.tone]||e.title.localeCompare(n.title))}function Nn(e){let t=m(``),n=m(`all`),r=m(`all`),i=m(`priority`),a=T(()=>{let t=new Set;for(let n of e.actions)t.add(n.tone);return[...t].sort((e,t)=>On[t]-On[e])}),o=T(()=>{let t=new Set;for(let n of e.actions)t.add(n.kind);return[...t].sort((e,t)=>kn(e).localeCompare(kn(t)))}),s=T(()=>{let a=t.value.trim().toLowerCase();return Mn(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)):!0),i.value)});function c(t){return e.queuedActionKeys.includes(t.key)}return{actionKindFilter:r,actionQuery:t,actionSortMode:i,actionToneFilter:n,filteredActions:s,getKindLabel:kn,getToneClassName:An,getToneLabel:jn,isQueued:c,kindOptions:o,toneOptions:a}}var Pn={class:`flex items-center justify-between gap-3`},Fn={class:`flex items-center gap-2`},In={class:`h-5 w-5`},Ln={class:`text-lg font-semibold text-(--dashboard-text)`},Rn={key:0,class:`text-xs text-(--dashboard-text-soft) md:text-sm`},X=n({__name:`AppPanelHeader`,props:{iconName:{},title:{},description:{}},setup(e){let t=ce();return(n,r)=>(E(),L(`div`,Pn,[w(`div`,Fn,[w(`span`,{class:j(c(t))},[w(`span`,In,[p(B,{name:e.iconName},null,8,[`name`])])],2),w(`div`,null,[w(`h2`,Ln,_(e.title),1),e.description?(E(),L(`p`,Rn,_(e.description),1)):F(``,!0)])]),d(n.$slots,`meta`)]))}}),zn={class:`h-3.5 w-3.5`},Bn={class:`mt-3 grid gap-2`},Vn={class:`flex flex-wrap items-center justify-between gap-2`},Hn={class:`text-xs text-(--dashboard-text-soft)`},Un={class:`grid grid-cols-3 gap-2`},Wn=[`value`],Gn=[`value`],Kn={class:`mt-3 min-h-0 overflow-hidden`},qn={key:1,class:`grid h-full min-h-0 content-start gap-2 overflow-y-auto pr-1`},Jn={class:`flex items-start justify-between gap-3`},Yn=[`onClick`],Xn={class:`flex min-w-0 items-center gap-2`},Zn={class:`rounded-full bg-(--dashboard-accent-soft) px-2 py-0.5 text-[11px] text-(--dashboard-text-muted)`},Qn={class:`truncate text-sm font-medium text-(--dashboard-text)`},$n={class:`mt-1 truncate text-xs text-(--dashboard-text-soft)`},er={key:0,class:`whitespace-nowrap text-sm font-medium text-(--dashboard-accent)`},tr={class:`mt-2 flex items-center justify-end border-t border-(--dashboard-border) pt-2`},nr=[`disabled`,`onClick`],rr=n({__name:`ActionCenterPanel`,props:{actions:{},activeKey:{},queuedActionKeys:{}},emits:[`addToQueue`,`copyReport`,`select`],setup(e,{emit:n}){let r=e,i=n,{actionKindFilter:a,actionQuery:o,actionSortMode:s,actionToneFilter:u,filteredActions:d,getKindLabel:f,getToneClassName:m,getToneLabel:g,isQueued:v,kindOptions:b,toneOptions:x}=Nn(r);return(n,r)=>(E(),L(`section`,{class:j([c(z)({padding:`md`}),`grid h-full min-h-0 grid-rows-[auto_auto_minmax(0,1fr)] overflow-hidden`])},[p(X,{"icon-name":`metric-health`,title:`问题中心`},{meta:R(()=>[w(`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:r[0]||=e=>i(`copyReport`)},[w(`span`,zn,[p(B,{name:`metric-copy`})]),r[5]||=I(` 复制 PR `,-1)])]),_:1}),w(`div`,Bn,[w(`div`,Vn,[w(`p`,Hn,` 匹配 `+_(c(d).length)+` / `+_(e.actions.length)+` 个处理项 `,1),t(w(`input`,{"onUpdate:modelValue":r[1]||=e=>h(o)?o.value=e:null,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),[[P,c(o)]])]),w(`div`,Un,[t(w(`select`,{"onUpdate:modelValue":r[2]||=e=>h(u)?u.value=e:null,class:`h-9 min-w-0 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-2.5 text-sm text-(--dashboard-text) outline-none transition focus:border-(--dashboard-accent)`},[r[6]||=w(`option`,{value:`all`},` 全部严重度 `,-1),(E(!0),L(A,null,l(c(x),e=>(E(),L(`option`,{key:e,value:e},_(c(g)(e)),9,Wn))),128))],512),[[O,c(u)]]),t(w(`select`,{"onUpdate:modelValue":r[3]||=e=>h(a)?a.value=e:null,class:`h-9 min-w-0 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-2.5 text-sm text-(--dashboard-text) outline-none transition focus:border-(--dashboard-accent)`},[r[7]||=w(`option`,{value:`all`},` 全部类型 `,-1),(E(!0),L(A,null,l(c(b),e=>(E(),L(`option`,{key:e,value:e},_(c(f)(e)),9,Gn))),128))],512),[[O,c(a)]]),t(w(`select`,{"onUpdate:modelValue":r[4]||=e=>h(s)?s.value=e:null,class:`h-9 min-w-0 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-2.5 text-sm text-(--dashboard-text) outline-none transition focus:border-(--dashboard-accent)`},[...r[8]||=[w(`option`,{value:`priority`},` 按优先级 `,-1),w(`option`,{value:`severity`},` 按严重度 `,-1),w(`option`,{value:`title`},` 按标题 `,-1),w(`option`,{value:`value`},` 按数值 `,-1)]],512),[[O,c(s)]])])]),w(`div`,Kn,[c(d).length===0?(E(),y(G,{key:0,compact:``},{default:R(()=>[...r[9]||=[I(` 暂无匹配当前筛选条件的事项。 `,-1)]]),_:1})):(E(),L(`ol`,qn,[(E(!0),L(A,null,l(c(d),t=>(E(),L(`li`,{key:t.key,class:`list-none`},[w(`article`,{class:j([`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)`,e.activeKey===t.key?`border-(--dashboard-accent) bg-(--dashboard-accent-soft)`:void 0])},[w(`div`,Jn,[w(`button`,{type:`button`,class:`min-w-0 text-left`,onClick:e=>i(`select`,t)},[w(`div`,Xn,[w(`span`,{class:j(c(m)(t.tone))},_(c(g)(t.tone)),3),w(`span`,Zn,_(c(f)(t.kind)),1),w(`p`,Qn,_(t.title),1)]),w(`p`,$n,_(t.meta),1)],8,Yn),t.value?(E(),L(`span`,er,_(t.value),1)):F(``,!0)]),w(`div`,tr,[w(`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:c(v)(t),onClick:e=>i(`addToQueue`,t)},_(c(v)(t)?`已在清单`:`加入清单`),9,nr)])],2)]))),128))]))])],2))}}),ir=[`disabled`],ar={class:`h-3.5 w-3.5`},or={class:`mt-3 grid gap-2`},sr={class:`grid grid-cols-3 gap-2 text-center`},cr={class:`mt-3 min-h-0 overflow-hidden`},lr={key:1,class:`grid h-full min-h-0 content-start gap-2 overflow-y-auto pr-1`},ur={class:`flex items-start justify-between gap-2`},dr=[`onClick`],fr={class:`mt-2 truncate text-sm font-medium text-(--dashboard-text)`},pr={class:`mt-1 line-clamp-2 text-xs leading-5 text-(--dashboard-text-soft)`},mr={key:0,class:`shrink-0 text-xs font-medium text-(--dashboard-accent)`},hr={class:`flex items-center justify-between gap-2 border-t border-(--dashboard-border) pt-2`},gr=[`onClick`],_r=[`onClick`],vr=n({__name:`AnalyzeWorkQueuePanel`,props:{items:{},activeId:{}},emits:[`clearCompleted`,`copy`,`remove`,`select`,`toggle`],setup(e,{emit:t}){let n=e,r=t,i=m(`open`),a=T(()=>n.items.filter(e=>!e.completedAt).length),o=T(()=>n.items.length-a.value),s=T(()=>n.items.filter(e=>i.value===`open`?!e.completedAt:i.value===`done`?!!e.completedAt:!0));function u(e){return le(e===`critical`?{tone:`error`}:e===`warning`?{tone:`warning`}:e===`success`?{tone:`success`}:{tone:`info`})}return(t,n)=>(E(),L(`section`,{class:j([c(z)({padding:`md`}),`grid h-full min-h-0 grid-rows-[auto_auto_minmax(0,1fr)] overflow-hidden`])},[p(X,{"icon-name":`metric-bookmark`,title:`处理清单`},{meta:R(()=>[w(`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:e.items.length===0,onClick:n[0]||=e=>r(`copy`)},[w(`span`,ar,[p(B,{name:`metric-copy`})]),n[5]||=I(` 复制 `,-1)],8,ir)]),_:1}),w(`div`,or,[w(`div`,sr,[w(`button`,{type:`button`,class:j([`rounded-md border px-2 py-2 text-xs transition`,i.value===`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.value=`open`},` 待处理 `+_(a.value),3),w(`button`,{type:`button`,class:j([`rounded-md border px-2 py-2 text-xs transition`,i.value===`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.value=`done`},` 已完成 `+_(o.value),3),w(`button`,{type:`button`,class:j([`rounded-md border px-2 py-2 text-xs transition`,i.value===`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.value=`all`},` 全部 `+_(e.items.length),3)]),o.value>0?(E(),L(`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=>r(`clearCompleted`)},` 清空已完成 `)):F(``,!0)]),w(`div`,cr,[s.value.length===0?(E(),y(G,{key:0,compact:``},{default:R(()=>[...n[6]||=[I(` 当前没有处理事项。 `,-1)]]),_:1})):(E(),L(`ol`,lr,[(E(!0),L(A,null,l(s.value,t=>(E(),L(`li`,{key:t.id,class:j([`grid gap-2 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-2.5 transition`,e.activeId===t.id?`border-(--dashboard-accent) bg-(--dashboard-accent-soft)`:void 0])},[w(`div`,ur,[w(`button`,{type:`button`,class:`min-w-0 text-left`,onClick:e=>r(`select`,t)},[w(`span`,{class:j(u(t.tone))},_(t.completedAt?`完成`:`待处理`),3),w(`p`,fr,_(t.title),1),w(`p`,pr,_(t.meta),1)],8,dr),t.value?(E(),L(`span`,mr,_(t.value),1)):F(``,!0)]),w(`div`,hr,[w(`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:e=>r(`toggle`,t.id)},_(t.completedAt?`重新打开`:`标记完成`),9,gr),w(`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:e=>r(`remove`,t.id)},` 移除 `,8,_r)])],2))),128))]))])],2))}});function yr(e){return e===0?`0 B`:`${e>0?`+`:`-`}${V(Math.abs(e))}`}function br(e,t){return e===0&&t===0?`stable`:t>0?`growing`:t<0?`shrinking`:`stable`}function xr(e){return e===`growing`?`增长`:e===`shrinking`?`下降`:e===`stable`?`稳定`:`样本不足`}function Sr(e){return e===`growing`?`历史快照显示体积正在上升`:e===`shrinking`?`历史快照显示体积正在下降`:e===`stable`?`历史快照整体保持稳定`:`需要更多历史快照判断趋势`}function Cr(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:xr(`insufficient`),headline:Sr(`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=br(a,o);return{status:c,label:xr(c),headline:Sr(c),description:`${t.length} 个历史样本 · ${n.label} 至 ${r.label}`,totalDeltaBytes:a,averageDeltaBytes:o,projectedNextBytes:s,metrics:[{label:`样本数`,value:t.length},{label:`累计变化`,value:yr(a)},{label:`平均变化`,value:yr(o)},{label:`预测下次`,value:V(s)}]}}function wr(e=1800){let t=m(``),n=null;function r(r){t.value=r,n&&clearTimeout(n),n=setTimeout(()=>{t.value=``,n=null},e)}return D(()=>{n&&clearTimeout(n)}),{actionStatus:t,setActionStatus:r}}function Tr(e){return e===0?`无变化`:`${e>0?`+`:`-`}${V(Math.abs(e))}`}function Er(e){return new Date(e.capturedAt).toLocaleString(`zh-CN`,{month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`,hour12:!1})}function Dr(e){return[e.id,e.label,e.capturedAt,e.packageCount,e.moduleCount,e.duplicateCount,e.totalBytes,e.compressedBytes].join(` `).toLowerCase()}function Or(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 kr(e){let t=m(``),n=m(`capturedAt`),{actionStatus:r,setActionStatus:i}=wr(),a=T(()=>e.snapshots.find(t=>t.id===e.baselineSnapshotId)??null),o=T(()=>e.snapshots[0]??null),s=T(()=>e.snapshots[1]??null),c=T(()=>Cr(e.snapshots)),l=T(()=>!o.value||!a.value?``:Tr(o.value.totalBytes-a.value.totalBytes)),u=T(()=>!o.value||!s.value?``:Tr(o.value.totalBytes-s.value.totalBytes)),d=T(()=>e.comparisonMode===`baseline`?l.value||`未设置`:u.value||`上次快照`),f=T(()=>{let e=a.value;return e?[{label:`基线体积`,value:V(e.totalBytes)},{label:`压缩后`,value:V(e.compressedBytes)},{label:`模块数`,value:String(e.moduleCount)},{label:`复用模块`,value:String(e.duplicateCount)}]:[]}),p=T(()=>{let r=t.value.trim().toLowerCase();return Or(e.snapshots.filter(e=>!r||Dr(e).includes(r)),n.value)}),h=T(()=>{let e=o.value,t=a.value,n=s.value;return[`# dashboard 历史基线`,``,e?`当前快照:${Er(e)} · ${V(e.totalBytes)} · 压缩后 ${V(e.compressedBytes)}`:`当前快照:暂无`,t?`基线快照:${Er(t)} · ${V(t.totalBytes)} · 压缩后 ${V(t.compressedBytes)}`:`基线快照:未设置`,n?`上次快照:${Er(n)} · ${V(n.totalBytes)} · 压缩后 ${V(n.compressedBytes)}`:`上次快照:暂无`,`当前对比:${d.value}`,``,`| 时间 | 总体积 | 压缩后 | 包 | 模块 | 复用模块 |`,`| --- | ---: | ---: | ---: | ---: | ---: |`,...p.value.map(e=>`| ${Er(e)} | ${V(e.totalBytes)} | ${V(e.compressedBytes)} | ${e.packageCount} | ${e.moduleCount} | ${e.duplicateCount} |`),``].join(`
8
- `)});async function g(){try{await W(h.value),i(`已复制`)}catch{i(`复制失败`)}}function _(){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:g,exportFilteredSnapshots:_,filteredSnapshots:p,formatSnapshotDate:Er,historyTrend:c,snapshotQuery:t,snapshotSortMode:n}}var Ar={class:`flex flex-wrap items-center justify-between gap-2`},jr={class:`text-xs text-(--dashboard-text-soft)`},Mr={class:`flex flex-wrap items-center gap-2`},Nr={key:0,class:`text-xs font-medium text-(--dashboard-accent)`},Pr=[`disabled`],Fr=[`disabled`],Ir=n({__name:`HistoryBaselineToolbar`,props:i({filteredCount:{},totalCount:{},actionStatus:{},disabled:{type:Boolean}},{modelValue:{required:!0},modelModifiers:{}}),emits:i([`copy`,`exportJson`],[`update:modelValue`]),setup(e,{emit:n}){let r=n,i=s(e,`modelValue`);return(n,a)=>(E(),L(`div`,Ar,[w(`p`,jr,` 匹配 `+_(e.filteredCount)+` / `+_(e.totalCount)+` 个快照 `,1),w(`div`,Mr,[e.actionStatus?(E(),L(`span`,Nr,_(e.actionStatus),1)):F(``,!0),w(`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:e.disabled,onClick:a[0]||=e=>r(`copy`)},` 复制基线 `,8,Pr),w(`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:e.disabled,onClick:a[1]||=e=>r(`exportJson`)},` 导出 JSON `,8,Fr),t(w(`select`,{"onUpdate:modelValue":a[2]||=e=>i.value=e,class:`h-9 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-2.5 text-sm text-(--dashboard-text) outline-none transition focus:border-(--dashboard-accent)`},[...a[3]||=[x(`<option value="capturedAt"> 按时间 </option><option value="total"> 按体积 </option><option value="compressed"> 按压缩后 </option><option value="modules"> 按模块数 </option><option value="duplicates"> 按复用模块 </option>`,5)]],512),[[O,i.value]])])]))}}),Lr={class:`rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-3`},Rr={class:`flex items-start justify-between gap-3`},zr={class:`min-w-0`},Br={class:`mt-2 text-sm font-semibold text-(--dashboard-text)`},Vr={class:`mt-1 text-xs leading-5 text-(--dashboard-text-soft)`},Hr={class:`mt-3 grid grid-cols-2 gap-2`},Ur=n({__name:`HistoryTrendPanel`,props:{trend:{}},setup(e){function t(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)`}return(n,i)=>(E(),L(`section`,Lr,[w(`div`,Rr,[w(`div`,zr,[w(`span`,{class:j([`inline-flex rounded-full border px-2 py-0.5 text-[11px] font-medium`,t(e.trend.status)])},_(e.trend.label),3),w(`p`,Br,_(e.trend.headline),1),w(`p`,Vr,_(e.trend.description),1)])]),w(`div`,Hr,[(E(!0),L(A,null,l(e.trend.metrics,e=>(E(),y(K,r({key:e.label},{ref_for:!0},e),null,16))),128))])]))}}),Wr={class:`flex gap-1.5`},Gr=[`disabled`],Kr={class:`mt-3 grid min-h-0 grid-rows-[auto_auto_auto_minmax(0,1fr)] gap-2 overflow-hidden`},qr={class:`rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 py-2`},Jr={class:`flex items-center justify-between gap-3`},Yr={class:`text-sm font-medium text-(--dashboard-accent)`},Xr={key:0,class:`mt-3 grid grid-cols-2 gap-2`},Zr={class:`text-[11px] text-(--dashboard-text-soft)`},Qr={class:`mt-1 text-sm font-semibold text-(--dashboard-text)`},$r={class:`grid gap-2`},ei={key:1,class:`grid min-h-0 gap-1.5 overflow-y-auto pr-1`},ti=[`onClick`],ni={class:`flex items-start justify-between gap-3`},ri={class:`min-w-0`},ii={class:`truncate text-sm font-medium text-(--dashboard-text)`},ai={class:`mt-0.5 truncate text-xs text-(--dashboard-text-soft)`},oi={class:`text-right`},si={class:`whitespace-nowrap text-sm font-medium text-(--dashboard-accent)`},ci={class:`mt-0.5 whitespace-nowrap text-xs text-(--dashboard-text-soft)`},li=n({__name:`HistoryBaselinePanel`,props:{snapshots:{},baselineSnapshotId:{},comparisonMode:{}},emits:[`setBaseline`,`setComparisonMode`],setup(e,{emit:n}){let r=e,i=n,{actionStatus:a,activeComparisonLabel:o,baselineSummaryItems:s,copyBaselineReport:u,exportFilteredSnapshots:d,filteredSnapshots:f,formatSnapshotDate:m,historyTrend:g,snapshotQuery:v,snapshotSortMode:b}=kr(r);return(n,r)=>(E(),L(`section`,{class:j([c(z)({padding:`md`}),`grid h-full min-h-0 grid-rows-[auto_minmax(0,1fr)] overflow-hidden`])},[p(X,{"icon-name":`metric-history`,title:`历史基线`},{meta:R(()=>[w(`div`,Wr,[w(`button`,{type:`button`,class:j(c(U)({kind:`badge`,active:e.comparisonMode===`previous`})),onClick:r[0]||=e=>i(`setComparisonMode`,`previous`)},` 上次 `,2),w(`button`,{type:`button`,class:j(c(U)({kind:`badge`,active:e.comparisonMode===`baseline`})),disabled:!e.baselineSnapshotId,onClick:r[1]||=e=>i(`setComparisonMode`,`baseline`)},` Baseline `,10,Gr)])]),_:1}),w(`div`,Kr,[w(`div`,qr,[w(`div`,Jr,[r[4]||=w(`p`,{class:`text-xs text-(--dashboard-text-soft)`},` 当前对比 `,-1),w(`p`,Yr,_(c(o)),1)]),c(s).length?(E(),L(`div`,Xr,[(E(!0),L(A,null,l(c(s),e=>(E(),L(`div`,{key:e.label,class:`rounded-md border border-(--dashboard-border) bg-(--dashboard-panel) px-2.5 py-2`},[w(`p`,Zr,_(e.label),1),w(`p`,Qr,_(e.value),1)]))),128))])):F(``,!0)]),p(Ur,{trend:c(g)},null,8,[`trend`]),w(`div`,$r,[p(Ir,{modelValue:c(b),"onUpdate:modelValue":r[2]||=e=>h(b)?b.value=e:null,"action-status":c(a),disabled:c(f).length===0,"filtered-count":c(f).length,"total-count":e.snapshots.length,onCopy:c(u),onExportJson:c(d)},null,8,[`modelValue`,`action-status`,`disabled`,`filtered-count`,`total-count`,`onCopy`,`onExportJson`]),t(w(`input`,{"onUpdate:modelValue":r[3]||=e=>h(v)?v.value=e:null,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),[[P,c(v)]])]),c(f).length===0?(E(),y(G,{key:0,compact:``},{default:R(()=>[...r[5]||=[I(` 暂无历史快照。 `,-1)]]),_:1})):(E(),L(`ol`,ei,[(E(!0),L(A,null,l(c(f),t=>(E(),L(`li`,{key:t.id,class:`list-none`},[w(`button`,{type:`button`,class:j([`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)`,t.id===e.baselineSnapshotId?`border-(--dashboard-accent) bg-(--dashboard-accent-soft)`:void 0]),onClick:e=>i(`setBaseline`,t.id)},[w(`div`,ni,[w(`div`,ri,[w(`p`,ii,_(c(m)(t)),1),w(`p`,ai,_(t.packageCount)+` 包 · `+_(t.moduleCount)+` 模块 · 复用 `+_(t.duplicateCount),1)]),w(`div`,oi,[w(`p`,si,_(c(V)(t.totalBytes)),1),w(`p`,ci,_(t.id===e.baselineSnapshotId?`baseline`:c(V)(t.compressedBytes)),1)])])],10,ti)]))),128))]))])],2))}}),ui=n({__name:`AnalyzeDiagnosticsSection`,props:{actionItems:{},activeWorkQueueItemId:{},baselineSnapshotId:{},comparisonMode:{},historySnapshots:{},layoutItems:{},queuedActionKeys:{},selectedActionKey:{},workQueueItems:{}},emits:[`addActionToQueue`,`clearCompletedWorkQueue`,`copyPr`,`copyWorkQueue`,`removeWorkQueueItem`,`selectAction`,`selectWorkQueueItem`,`setBaseline`,`setComparisonMode`,`toggleWorkQueueItem`],setup(e,{emit:t}){let n=t;return(t,r)=>(E(),y(q,{"grid-class":`grid h-full min-h-0 gap-2 overflow-y-auto pr-1 xl:grid-cols-[minmax(0,1fr)_minmax(20rem,0.38fr)_minmax(20rem,0.38fr)] xl:overflow-hidden xl:pr-0`,items:e.layoutItems,"storage-key":`weapp-vite:dashboard:analyze-layout:diagnostics`},{actions:R(()=>[p(rr,{actions:e.actionItems,"active-key":e.selectedActionKey,"queued-action-keys":e.queuedActionKeys,onAddToQueue:r[0]||=e=>n(`addActionToQueue`,e),onCopyReport:r[1]||=e=>n(`copyPr`),onSelect:r[2]||=e=>n(`selectAction`,e)},null,8,[`actions`,`active-key`,`queued-action-keys`])]),"work-queue":R(()=>[p(vr,{items:e.workQueueItems,"active-id":e.activeWorkQueueItemId,onClearCompleted:r[3]||=e=>n(`clearCompletedWorkQueue`),onCopy:r[4]||=e=>n(`copyWorkQueue`),onRemove:r[5]||=e=>n(`removeWorkQueueItem`,e),onSelect:r[6]||=e=>n(`selectWorkQueueItem`,e),onToggle:r[7]||=e=>n(`toggleWorkQueueItem`,e)},null,8,[`items`,`active-id`])]),history:R(()=>[p(li,{snapshots:e.historySnapshots,"baseline-snapshot-id":e.baselineSnapshotId,"comparison-mode":e.comparisonMode,onSetBaseline:r[8]||=e=>n(`setBaseline`,e),onSetComparisonMode:r[9]||=e=>n(`setComparisonMode`,e)},null,8,[`snapshots`,`baseline-snapshot-id`,`comparison-mode`])]),_:1},8,[`items`]))}});function di(e){return Math.max(0,Math.min(100,Math.round(e)))}function fi(e){return e===`blocked`?`Blocked`:e===`review`?`Review`:`Ready`}function pi(e){return e===`blocked`?`发布前需要先处理阻断项`:e===`review`?`建议评审后再发布`:`当前分析未发现阻断项`}function mi(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},当前 ${V(e.largestPackage.totalBytes)}。`),t.length===0&&e.largestFile&&t.push(`持续关注最大文件 ${e.largestFile.file},当前 ${V(e.largestFile.size)}。`),t}function hi(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 gi(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=di(100-t.length*28-n.length*12),s=[{label:`阻断项`,value:t.length},{label:`建议项`,value:n.length},{label:`最大包`,value:i?V(i.totalBytes):`—`},{label:`最大文件`,value:r?V(r.size):`—`}],c={status:a,label:fi(a),score:o,headline:pi(a),description:`${e.actionItems.length} 个候选事项 · ${e.packageInsights.length} 个包 · ${e.largestFiles.length} 个文件样本`,metrics:s,recommendations:mi({criticalActions:t,warningActions:n,largestFile:r,largestPackage:i})};return{...c,report:hi(c)}}function _i(e){let t=T(()=>e.actionItems.slice(0,4)),n=T(()=>e.largestFiles.slice(0,5)),r=T(()=>e.packageInsights.reduce((e,t)=>e+t.totalBytes,0)),i=T(()=>gi({actionItems:e.actionItems,largestFiles:e.largestFiles,packageInsights:e.packageInsights})),{actionStatus:a,setActionStatus:o}=wr(),s=T(()=>e.packageInsights.slice(0,5).map(e=>{let t=r.value>0?e.totalBytes/r.value*100:0;return{...e,typeLabel:H(e.type),sizeLabel:V(e.totalBytes),compressedLabel:`${e.compressedSizeSource===`real`?`Brotli`:`估算`} ${V(e.compressedBytes)}`,sharePercent:t,shareStyle:{width:`${Math.max(t,2).toFixed(1)}%`}}}));async function c(){try{await W(i.value.report),o(`已复制`)}catch{o(`复制失败`)}}return{copyReleaseGateReport:c,gateCopyStatus:a,getToneClassName:An,getToneLabel:jn,packageOverviewItems:s,releaseGate:i,visibleActions:t,visibleLargestFiles:n}}var vi={class:`min-w-0`},yi={key:0,class:`mt-1 text-xs font-medium text-(--dashboard-accent)`},bi={key:0,class:`mt-3 flex flex-wrap gap-1.5`},xi=n({__name:`DashboardMetricGrid`,props:{cards:{},packageTypeSummary:{},compact:{type:Boolean}},setup(e){let t=e;function n(e){return[z({padding:t.compact?`sm`:`md`}),`min-w-0`,e.wide?`xl:col-span-2`:`xl:col-span-1`]}let r=T(()=>t.cards.map(e=>({...e,packageTypeTags:e.label===`总产物体积`?t.packageTypeSummary.map(e=>({label:H(e.label),value:String(e.value)})):[]})));return(t,i)=>(E(),L(`section`,{class:j(e.compact?`grid min-h-0 items-start gap-2 md:grid-cols-3 xl:grid-cols-6`:`grid items-start gap-2.5 md:grid-cols-2 xl:grid-cols-6`)},[(E(!0),L(A,null,l(r.value,t=>(E(),L(`article`,{key:t.label,class:j(n(t))},[w(`div`,{class:j(e.compact?`relative h-full min-w-0 pr-8`:`flex h-full min-w-0 items-start justify-between gap-2`)},[w(`div`,vi,[w(`p`,{class:j(e.compact?`whitespace-nowrap text-[11px] leading-4 text-(--dashboard-text-soft)`:`text-[11px] uppercase tracking-[0.22em] text-(--dashboard-text-soft)`)},_(t.label),3),w(`p`,{class:j(e.compact?`mt-1 text-xl font-semibold leading-6`:`mt-2 text-2xl font-semibold md:text-[1.65rem]`)},_(t.value),3),t.detail?(E(),L(`p`,yi,_(t.detail),1)):F(``,!0)]),w(`span`,{class:j([c(ce)({size:e.compact?`sm`:`lg`}),e.compact?`absolute right-0 top-0`:void 0])},[w(`span`,{class:j(e.compact?`h-4.5 w-4.5`:`h-5 w-5`)},[p(B,{name:t.iconName},null,8,[`name`])],2)],2)],2),t.packageTypeTags.length>0&&!e.compact?(E(),L(`div`,bi,[(E(!0),L(A,null,l(t.packageTypeTags,e=>(E(),L(`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)`},_(e.label)+` `+_(e.value),1))),128))])):F(``,!0)],2))),128))],2))}}),Si={class:`rounded-lg border border-(--dashboard-border) bg-(--dashboard-panel) p-4 shadow-(--dashboard-shadow)`},Ci={class:`flex items-center gap-2`},wi={key:0,class:`text-xs font-medium text-(--dashboard-accent)`},Ti={class:`h-3.5 w-3.5`},Ei={class:`mt-3 grid gap-3 xl:grid-cols-[minmax(0,0.7fr)_minmax(0,1fr)]`},Di={class:`rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-3`},Oi={class:`flex items-start justify-between gap-3`},ki={class:`mt-3 text-lg font-semibold text-(--dashboard-text)`},Ai={class:`mt-1 text-xs leading-5 text-(--dashboard-text-soft)`},ji={class:`shrink-0 text-right`},Mi={class:`mt-1 text-3xl font-semibold text-(--dashboard-accent)`},Ni={class:`grid gap-3 md:grid-cols-[minmax(0,0.9fr)_minmax(0,1fr)]`},Pi={class:`grid grid-cols-2 gap-2`},Fi={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)`},Ii={key:0},Li=n({__name:`ReleaseGatePanel`,props:{gate:{},copyStatus:{}},emits:[`copy`],setup(e,{emit:t}){let n=t;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`}return(t,a)=>(E(),L(`section`,Si,[p(X,{"icon-name":`metric-quality`,title:`发布门禁`},{meta:R(()=>[w(`div`,Ci,[e.copyStatus?(E(),L(`span`,wi,_(e.copyStatus),1)):F(``,!0),w(`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:a[0]||=e=>n(`copy`)},[w(`span`,Ti,[p(B,{name:`metric-copy`})]),a[1]||=I(` 复制门禁 `,-1)])])]),_:1}),w(`div`,Ei,[w(`div`,Di,[w(`div`,Oi,[w(`div`,null,[w(`span`,{class:j([`inline-flex rounded-full border px-2.5 py-1 text-[11px] font-medium uppercase tracking-[0.16em]`,i(e.gate.status)])},_(e.gate.label),3),w(`p`,ki,_(e.gate.headline),1),w(`p`,Ai,_(e.gate.description),1)]),w(`div`,ji,[a[2]||=w(`p`,{class:`text-[11px] uppercase tracking-[0.18em] text-(--dashboard-text-soft)`},` score `,-1),w(`p`,Mi,_(e.gate.score),1)])])]),w(`div`,Ni,[w(`div`,Pi,[(E(!0),L(A,null,l(e.gate.metrics,e=>(E(),y(K,r({key:e.label},{ref_for:!0},e),null,16))),128))]),w(`ol`,Fi,[(E(!0),L(A,null,l(e.gate.recommendations,e=>(E(),L(`li`,{key:e,class:`line-clamp-2`},_(e),1))),128)),e.gate.recommendations.length===0?(E(),L(`li`,Ii,` 当前没有需要立即处理的事项。 `)):F(``,!0)])])])]))}}),Ri={class:`grid h-full min-h-0 grid-rows-[auto_auto_minmax(0,1fr)] gap-2 overflow-hidden`},zi={class:`grid min-h-0 gap-2 overflow-hidden xl:grid-cols-[minmax(0,0.95fr)_minmax(0,0.85fr)_minmax(0,0.9fr)]`},Bi={class:`h-3.5 w-3.5`},Vi={class:`mt-3 min-h-0 flex-1 overflow-hidden`},Hi={key:1,class:`grid h-full min-h-0 gap-2 overflow-y-auto pr-1`},Ui=[`onClick`],Wi={class:`flex min-w-0 items-start justify-between gap-3`},Gi={class:`min-w-0`},Ki={class:`flex min-w-0 items-center gap-2`},qi={class:`truncate text-sm font-medium text-(--dashboard-text)`},Ji={class:`mt-1 truncate text-xs text-(--dashboard-text-soft)`},Yi={key:0,class:`shrink-0 whitespace-nowrap text-sm font-semibold text-(--dashboard-accent)`},Xi={class:`mt-3 grid min-h-0 gap-2 overflow-y-auto pr-1`},Zi=[`onClick`],Qi={class:`grid min-w-0 grid-cols-[minmax(0,1fr)_auto] items-start gap-3`},$i={class:`min-w-0`},ea={class:`truncate font-mono text-xs font-semibold text-(--dashboard-text)`},ta={class:`mt-1 truncate text-xs text-(--dashboard-text-soft)`},na={class:`shrink-0 text-right`},ra={class:`text-sm font-semibold leading-5 text-(--dashboard-accent)`},ia={class:`text-[11px] leading-4 text-(--dashboard-text-soft)`},aa={class:`mt-3 grid min-h-0 gap-2 overflow-y-auto pr-1`},oa=[`onClick`],sa={class:`flex items-start justify-between gap-3`},ca={class:`min-w-0`},la={class:`truncate text-sm font-medium text-(--dashboard-text)`},ua={class:`mt-1 text-xs text-(--dashboard-text-soft)`},da={class:`shrink-0 text-right`},fa={class:`text-sm font-semibold text-(--dashboard-text)`},pa={class:`text-[11px] text-(--dashboard-text-soft)`},ma={class:`mt-2 h-1.5 overflow-hidden rounded-full bg-(--dashboard-accent-soft)`},ha=n({__name:`AnalyzeOverviewPanel`,props:{actionItems:{},cards:{},largestFiles:{},packageInsights:{},packageTypeSummary:{}},emits:[`copyReport`,`selectAction`,`selectFile`,`selectPackage`],setup(e,{emit:t}){let n=e,r=t,{copyReleaseGateReport:i,gateCopyStatus:a,getToneClassName:o,getToneLabel:s,packageOverviewItems:u,releaseGate:d,visibleActions:f,visibleLargestFiles:m}=_i(n);return(t,n)=>(E(),L(`section`,Ri,[p(xi,{compact:``,cards:e.cards,"package-type-summary":e.packageTypeSummary},null,8,[`cards`,`package-type-summary`]),p(Li,{gate:c(d),"copy-status":c(a),onCopy:c(i)},null,8,[`gate`,`copy-status`,`onCopy`]),w(`div`,zi,[w(`section`,{class:j([c(z)({padding:`md`}),`min-h-0 overflow-hidden`])},[p(X,{"icon-name":`metric-health`,title:`处理队列`},{meta:R(()=>[w(`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:n[0]||=e=>r(`copyReport`)},[w(`span`,Bi,[p(B,{name:`metric-copy`})]),n[1]||=I(` 复制 PR `,-1)])]),_:1}),w(`div`,Vi,[c(f).length===0?(E(),y(G,{key:0,compact:``},{default:R(()=>[...n[2]||=[I(` 当前没有需要立即处理的事项。 `,-1)]]),_:1})):(E(),L(`ol`,Hi,[(E(!0),L(A,null,l(c(f),e=>(E(),L(`li`,{key:e.key,class:`list-none`},[w(`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(`selectAction`,e)},[w(`div`,Wi,[w(`div`,Gi,[w(`div`,Ki,[w(`span`,{class:j(c(o)(e.tone))},_(c(s)(e.tone)),3),w(`p`,qi,_(e.title),1)]),w(`p`,Ji,_(e.meta),1)]),e.value?(E(),L(`span`,Yi,_(e.value),1)):F(``,!0)])],8,Ui)]))),128))]))])],2),w(`section`,{class:j([c(z)({padding:`md`}),`min-h-0 overflow-hidden`])},[p(X,{"icon-name":`top-files`,title:`Top Files`}),w(`ol`,Xi,[(E(!0),L(A,null,l(c(m),e=>(E(),L(`li`,{key:`${e.packageId}:${e.file}`,class:`list-none`},[w(`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(`selectFile`,e)},[w(`div`,Qi,[w(`div`,$i,[w(`p`,ea,_(e.file),1),w(`p`,ta,_(e.packageLabel)+` · `+_(c(H)(e.packageType))+` · `+_(e.type)+` · `+_(e.moduleCount)+` 模块 `,1)]),w(`div`,na,[w(`p`,ra,_(c(V)(e.size)),1),w(`p`,ia,_(c(V)(e.compressedSize)),1)])])],8,Zi)]))),128))])],2),w(`section`,{class:j([c(z)({padding:`md`}),`min-h-0 overflow-hidden`])},[p(X,{"icon-name":`tab-packages`,title:`包体分布`}),w(`ol`,aa,[(E(!0),L(A,null,l(c(u),e=>(E(),L(`li`,{key:e.id,class:`list-none`},[w(`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(`selectPackage`,e)},[w(`div`,sa,[w(`div`,ca,[w(`p`,la,_(e.label),1),w(`p`,ua,_(e.typeLabel)+` · `+_(e.fileCount)+` 产物 · `+_(e.moduleCount)+` 模块 `,1)]),w(`div`,da,[w(`p`,fa,_(e.sizeLabel),1),w(`p`,pa,_(e.compressedLabel),1)])]),w(`div`,ma,[w(`div`,{class:`h-full rounded-full bg-(--dashboard-accent)`,style:v(e.shareStyle)},null,4)])],8,oa)]))),128))])],2)])]))}});function ga(e){return e===`high`?`高`:e===`medium`?`中`:`低`}function _a(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} 个包复用 · 单份 ${V(e.bytes)} · ${e.advice}`,impactBytes:e.estimatedSavingBytes,effort:t,priority:Math.round(e.estimatedSavingBytes*n+e.packageCount*128),action:t===`high`?`先确认独立分包隔离要求,再评估公共入口。`:`优先抽到共享入口或调整引用边界。`}}function va(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} · +${V(e.deltaBytes)}`,impactBytes:e.deltaBytes,effort:t,priority:Math.round(e.deltaBytes*n),action:e.advice}}function ya(e){let t=e.moduleCount>12?`medium`:`low`;return{id:`file:${e.packageId}:${e.file}`,title:`检查大文件边界 ${e.file}`,detail:`${e.packageLabel} · ${V(e.size)} · ${e.moduleCount} 个模块`,impactBytes:e.size,effort:t,priority:Math.round(e.size*.42+e.moduleCount*96),action:e.isEntry?`确认入口依赖是否可懒加载或拆到分包。`:`检查静态资源和模块聚合边界。`}}function ba(e){return[`# dashboard 模块优化计划`,``,`计划项:${e.items.length}`,`估算影响:${V(e.totalImpactBytes)}`,`低成本项:${e.quickWinCount}`,``,`| 优先级 | 事项 | 影响 | 成本 | 建议 |`,`| ---: | --- | ---: | --- | --- |`,...e.items.map(e=>`| ${e.priority} | ${e.title.replaceAll(`|`,`\\|`)} | ${V(e.impactBytes)} | ${ga(e.effort)} | ${e.action.replaceAll(`|`,`\\|`)} |`),``].join(`
10
- `)}function xa(e){let t=e.duplicateModules.filter(e=>e.estimatedSavingBytes>0).slice(0,8).map(_a),n=e.incrementAttribution.filter(e=>e.deltaBytes>0).slice(0,6).map(va),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(ya),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:ba(o)}}function Sa(e){return{title:e.source,meta:`${e.packageCount} 个包 · 单份 ${V(e.bytes)} · 可节省 ${V(e.estimatedSavingBytes)} · ${e.advice}`}}function Ca(e){return{title:e.sourceCategory,meta:`${e.count} 个模块`,value:V(e.bytes)}}function wa(e){return{title:e.label,meta:`${e.category} · ${e.packageLabel} · ${e.advice}`,value:`+${V(e.deltaBytes)}`}}function Ta(e){return{title:e.category,meta:`${e.count} 项增长`,value:`+${V(e.deltaBytes)}`}}function Ea(e){return{title:e.file,meta:`${e.packageLabel} · ${pe(e.from)} · ${e.moduleCount} 模块`}}function Da(e){return e.replaceAll(`|`,`\\|`).replaceAll(`
11
- `,` `)}function Oa(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 ka(e){let t=m(``),n=m(`all`),r=m(`saving`),{actionStatus:i,setActionStatus:a}=wr(),o=T(()=>{let t=new Set;for(let n of e.duplicateModules)t.add(n.sourceType);return[...t].sort((e,t)=>e.localeCompare(t))}),s=T(()=>{let i=t.value.trim().toLowerCase();return Oa(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)):!0),r.value)}),c=T(()=>s.value.map(e=>({key:e.id,packages:e.packages,...Sa(e)}))),l=T(()=>e.moduleSourceSummary.map(e=>({key:`${e.sourceType}:${e.sourceCategory}`,...Ca(e)}))),u=T(()=>e.incrementAttribution.slice(0,8).map(e=>({key:e.key,...wa(e)}))),d=T(()=>e.incrementSummary.slice(0,6).map(e=>({key:e.category,...Ta(e)}))),f=T(()=>e.visibleLargestFiles.slice(0,6).map(e=>({key:`${e.packageId}:${e.file}`,...Ea(e)}))),p=T(()=>xa({duplicateModules:e.duplicateModules,incrementAttribution:e.incrementAttribution,largestFiles:e.visibleLargestFiles})),h=T(()=>[`# dashboard 重复模块`,``,`模块数量:${s.value.length} / ${e.duplicateModules.length}`,``,`| 模块 | 来源 | 包数量 | 单份体积 | 可节省 | 建议 | 涉及包 |`,`| --- | --- | ---: | ---: | ---: | --- | --- |`,...s.value.map(e=>[e.source,e.sourceType,String(e.packageCount),V(e.bytes),V(e.estimatedSavingBytes),e.advice,e.packages.map(e=>e.packageLabel).join(`, `)].map(Da).join(` | `)).map(e=>`| ${e} |`),``].join(`
12
- `));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:u,incrementSummaryItems:d,largestFileSampleItems:f,moduleOptimizationPlan:p,moduleSourceItems:l}}var Aa={class:`rounded-xl border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-3.5`},ja={class:`flex flex-wrap items-start justify-between gap-3`},Ma={class:`min-w-0`},Na={class:`mt-1 text-xs text-(--dashboard-text-soft)`},Pa={key:0,class:`font-medium text-(--dashboard-accent)`},Fa=n({__name:`AppSummaryValueCard`,props:{title:{},meta:{},value:{},breakTitle:{type:Boolean}},setup(e){return(t,n)=>(E(),L(`article`,Aa,[w(`div`,ja,[w(`div`,Ma,[w(`p`,{class:j([`font-medium text-(--dashboard-text)`,e.breakTitle?`break-all`:void 0])},_(e.title),3),w(`p`,Na,_(e.meta),1)]),e.value?(E(),L(`p`,Pa,_(e.value),1)):F(``,!0)]),d(t.$slots,`default`)]))}}),Ia={class:`flex flex-wrap items-center gap-2`},La={class:`text-xs font-medium text-(--dashboard-text-soft)`},Ra={key:0,class:`text-xs font-medium text-(--dashboard-accent)`},za=[`disabled`],Ba=[`disabled`],Va=[`value`],Ha=n({__name:`DuplicateModulesToolbar`,props:i({filteredCount:{},totalCount:{},sourceOptions:{},actionStatus:{},disabled:{type:Boolean}},{query:{required:!0},queryModifiers:{},sourceFilter:{required:!0},sourceFilterModifiers:{},sortMode:{required:!0},sortModeModifiers:{}}),emits:i([`copy`,`exportJson`],[`update:query`,`update:sourceFilter`,`update:sortMode`]),setup(e,{emit:n}){let r=n,i=s(e,`query`),a=s(e,`sourceFilter`),o=s(e,`sortMode`);return(n,s)=>(E(),L(`div`,Ia,[w(`span`,La,` 匹配 `+_(e.filteredCount)+` / `+_(e.totalCount),1),e.actionStatus?(E(),L(`span`,Ra,_(e.actionStatus),1)):F(``,!0),w(`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:e.disabled,onClick:s[0]||=e=>r(`copy`)},` 复制重复模块 `,8,za),w(`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:e.disabled,onClick:s[1]||=e=>r(`exportJson`)},` 导出 JSON `,8,Ba),t(w(`input`,{"onUpdate:modelValue":s[2]||=e=>i.value=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),[[P,i.value]]),t(w(`select`,{"onUpdate:modelValue":s[3]||=e=>a.value=e,class:`h-9 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-2.5 text-sm text-(--dashboard-text) outline-none transition focus:border-(--dashboard-accent)`},[s[5]||=w(`option`,{value:`all`},` 全部来源 `,-1),(E(!0),L(A,null,l(e.sourceOptions,e=>(E(),L(`option`,{key:e,value:e},_(e),9,Va))),128))],512),[[O,a.value]]),t(w(`select`,{"onUpdate:modelValue":s[4]||=e=>o.value=e,class:`h-9 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-2.5 text-sm text-(--dashboard-text) outline-none transition focus:border-(--dashboard-accent)`},[...s[6]||=[w(`option`,{value:`saving`},` 按可节省 `,-1),w(`option`,{value:`packages`},` 按包数量 `,-1),w(`option`,{value:`size`},` 按单份体积 `,-1),w(`option`,{value:`source`},` 按路径 `,-1)]],512),[[O,o.value]])]))}}),Ua={class:`grid min-h-0 gap-3 overflow-hidden xl:grid-rows-[auto_minmax(0,1fr)_minmax(0,0.8fr)]`},Wa={class:`flex items-center gap-2`},Ga={key:0,class:`text-xs font-medium text-(--dashboard-accent)`},Ka=[`disabled`],qa={class:`mt-3 grid grid-cols-3 gap-2`},Ja={key:0,class:`mt-3 grid max-h-54 gap-2 overflow-y-auto pr-1`},Ya={class:`flex items-start justify-between gap-3`},Xa={class:`min-w-0 text-sm font-medium text-(--dashboard-text)`},Za={class:`mt-1 line-clamp-2 text-xs leading-5 text-(--dashboard-text-muted)`},Qa={class:`mt-2 text-xs text-(--dashboard-text-soft)`},$a={key:0,class:`mt-4 grid h-[calc(100%-3.5rem)] min-h-0 gap-3 overflow-hidden lg:grid-cols-[minmax(0,0.78fr)_minmax(0,1fr)]`},eo={class:`space-y-2 overflow-y-auto pr-1`},to={class:`space-y-2 overflow-y-auto pr-1 text-sm text-(--dashboard-text-muted)`},no={class:`mt-4 grid h-[calc(100%-3.5rem)] min-h-0 gap-3 overflow-hidden lg:grid-cols-2`},ro={class:`space-y-2.5 overflow-y-auto pr-1`},io={class:`space-y-2.5 overflow-y-auto pr-1 text-sm text-(--dashboard-text-muted)`},ao=n({__name:`ModuleInsightsSidebar`,props:{incrementItems:{},incrementSummaryItems:{},moduleSourceItems:{},largestFileSampleItems:{},optimizationPlan:{}},setup(e){let t=e,n=m(``),r=null;function i(e){return e===`high`?`高成本`:e===`medium`?`中成本`:`低成本`}function a(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 o(e){n.value=e,r&&clearTimeout(r),r=setTimeout(()=>{n.value=``,r=null},1800)}async function s(){try{await W(t.optimizationPlan.report),o(`计划已复制`)}catch{o(`复制失败`)}}return D(()=>{r&&clearTimeout(r)}),(t,r)=>(E(),L(`div`,Ua,[w(`section`,{class:j([c(z)({padding:`md`}),`overflow-hidden`])},[p(X,{"icon-name":`metric-quality`,title:`优化计划`},{meta:R(()=>[w(`div`,Wa,[n.value?(E(),L(`span`,Ga,_(n.value),1)):F(``,!0),w(`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:e.optimizationPlan.items.length===0,onClick:s},` 复制计划 `,8,Ka)])]),_:1}),w(`div`,qa,[p(K,{label:`计划项`,value:e.optimizationPlan.items.length},null,8,[`value`]),p(K,{label:`估算影响`,value:c(V)(e.optimizationPlan.totalImpactBytes)},null,8,[`value`]),p(K,{label:`低成本项`,value:e.optimizationPlan.quickWinCount},null,8,[`value`])]),e.optimizationPlan.items.length?(E(),L(`div`,Ja,[(E(!0),L(A,null,l(e.optimizationPlan.items,e=>(E(),L(`article`,{key:e.id,class:`rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-3`},[w(`div`,Ya,[w(`p`,Xa,_(e.title),1),w(`span`,{class:j([`shrink-0 rounded-full border px-2 py-0.5 text-[11px]`,a(e.effort)])},_(i(e.effort)),3)]),w(`p`,Za,_(e.detail),1),w(`p`,Qa,_(e.action)+` · 影响 `+_(c(V)(e.impactBytes)),1)]))),128))])):(E(),y(G,{key:1,class:`mt-3`},{default:R(()=>[...r[0]||=[I(` 当前没有需要生成的模块优化计划。 `,-1)]]),_:1}))],2),w(`section`,{class:j([c(z)({padding:`md`}),`min-h-0 overflow-hidden`])},[p(X,{"icon-name":`metric-time`,title:`增量归因`}),e.incrementItems.length?(E(),L(`div`,$a,[w(`div`,eo,[(E(!0),L(A,null,l(e.incrementSummaryItems,e=>(E(),y(Fa,{key:e.key,meta:e.meta,title:e.title,value:e.value},null,8,[`meta`,`title`,`value`]))),128))]),w(`ul`,to,[(E(!0),L(A,null,l(e.incrementItems,e=>(E(),y(Tt,{key:e.key,meta:e.meta,"mono-title":``,title:e.title,value:e.value},null,8,[`meta`,`title`,`value`]))),128))])])):(E(),y(G,{key:1,class:`mt-4`},{default:R(()=>[...r[1]||=[I(` 暂无可对比的正向增量。 `,-1)]]),_:1}))],2),w(`section`,{class:j([c(z)({padding:`md`}),`min-h-0 overflow-hidden`])},[p(X,{"icon-name":`module-sources`,title:`模块来源`}),w(`div`,no,[w(`div`,ro,[(E(!0),L(A,null,l(e.moduleSourceItems,e=>(E(),y(Fa,{key:e.key,meta:e.meta,title:e.title,value:e.value},null,8,[`meta`,`title`,`value`]))),128))]),w(`ul`,io,[(E(!0),L(A,null,l(e.largestFileSampleItems,e=>(E(),y(Tt,{key:e.key,meta:e.meta,"mono-title":``,title:e.title,value:e.value},null,8,[`meta`,`title`,`value`]))),128))])])],2)]))}}),oo={class:`grid h-full min-h-0 gap-3 overflow-hidden xl:grid-cols-[minmax(0,1.24fr)_minmax(0,0.76fr)]`},so={class:`flex flex-wrap items-start justify-between gap-3`},co={key:0,class:`mt-4 max-h-[calc(100%-5.75rem)] space-y-2.5 overflow-y-auto pr-1`},lo={class:`mt-3 space-y-1.5 text-xs text-(--dashboard-text-muted)`},uo={class:`font-medium text-(--dashboard-text)`},fo=n({__name:`ModulesPanel`,props:{duplicateModules:{},moduleSourceSummary:{},incrementAttribution:{},incrementSummary:{},visibleLargestFiles:{}},setup(e){let{actionStatus:t,copyDuplicateModulesReport:n,duplicateModuleItems:r,duplicateQuery:i,duplicateSortMode:a,duplicateSourceFilter:o,duplicateSourceOptions:s,exportDuplicateModulesJson:u,incrementItems:d,incrementSummaryItems:f,largestFileSampleItems:m,moduleOptimizationPlan:g,moduleSourceItems:v}=ka(e);return(b,x)=>(E(),L(`section`,oo,[w(`div`,{class:j([c(z)({padding:`md`}),`min-h-0 overflow-hidden`])},[w(`div`,so,[p(X,{"icon-name":`duplicate-modules`,title:`重复模块`,description:`${e.duplicateModules.length} 个重复模块样本`},null,8,[`description`]),p(Ha,{query:c(i),"onUpdate:query":x[0]||=e=>h(i)?i.value=e:null,"sort-mode":c(a),"onUpdate:sortMode":x[1]||=e=>h(a)?a.value=e:null,"source-filter":c(o),"onUpdate:sourceFilter":x[2]||=e=>h(o)?o.value=e:null,"action-status":c(t),disabled:c(r).length===0,"filtered-count":c(r).length,"source-options":c(s),"total-count":e.duplicateModules.length,onCopy:c(n),onExportJson:c(u)},null,8,[`query`,`sort-mode`,`source-filter`,`action-status`,`disabled`,`filtered-count`,`source-options`,`total-count`,`onCopy`,`onExportJson`])]),c(r).length?(E(),L(`div`,co,[(E(!0),L(A,null,l(c(r),e=>(E(),y(Fa,{key:e.key,"break-title":``,meta:e.meta,title:e.title,value:e.value},{default:R(()=>[w(`ul`,lo,[(E(!0),L(A,null,l(e.packages,t=>(E(),L(`li`,{key:`${e.key}:${t.packageId}`},[w(`span`,uo,_(t.packageLabel),1),x[3]||=w(`span`,{class:`text-(--dashboard-text-soft)`},` · `,-1),w(`span`,null,_(t.files.join(`、`)),1)]))),128))])]),_:2},1032,[`meta`,`title`,`value`]))),128))])):(E(),y(G,{key:1,class:`mt-4`},{default:R(()=>[...x[4]||=[I(` 当前构建未检测到跨包重复模块。 `,-1)]]),_:1}))],2),p(ao,{"increment-items":c(d),"increment-summary-items":c(f),"largest-file-sample-items":c(m),"module-source-items":c(v),"optimization-plan":c(g)},null,8,[`increment-items`,`increment-summary-items`,`largest-file-sample-items`,`module-source-items`,`optimization-plan`])]))}});function po(e){return Math.max(0,Math.min(100,Math.round(e)))}function mo(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 ho(e){return e?e.status===`critical`?32:18:0}function go(e){return e.moduleCount<=0||e.duplicateModuleCount<=0?0:Math.min(18,e.duplicateModuleCount/e.moduleCount*60)}function _o(e){return Math.min(10,Math.max(0,e.entryFileCount-1)*3)}function vo(e){return e<70?`risk`:e<86?`watch`:`good`}function yo(e){return e===`risk`?`高风险`:e===`watch`?`需关注`:`健康`}function bo(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?`较上次增长 ${V(e.sizeDeltaBytes)}`:e.duplicateModuleCount>0?`${e.duplicateModuleCount} 个重复模块`:`未发现主要风险`}function xo(e,t){let n=po(100-ho(t)-mo(e)-go(e)-_o(e)),r=vo(n);return{id:e.id,label:e.label,score:n,status:r,statusLabel:yo(r),detail:`${e.fileCount} 个产物 · ${e.moduleCount} 个模块 · ${V(e.totalBytes)}`,primaryRisk:bo(e,t),metrics:[{label:`体积`,value:V(e.totalBytes)},{label:`重复模块`,value:e.duplicateModuleCount},{label:`Entry`,value:e.entryFileCount},{label:`较上次`,value:typeof e.sizeDeltaBytes==`number`?`${e.sizeDeltaBytes>=0?`+`:`-`}${V(Math.abs(e.sizeDeltaBytes))}`:`—`}]}}function So(e){let t=new Map(e.budgetWarnings.map(e=>[e.id,e])),n=e.packageInsights.map(e=>xo(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?po(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 Co(e){return typeof e!=`number`||Number.isNaN(e)||e===0?`—`:`${e>0?`+`:`-`}${V(Math.abs(e))}`}function wo(e){return[{label:`Chunks`,value:e.chunkCount},{label:`Assets`,value:e.assetCount},{label:`压缩后`,value:V(e.compressedBytes)},{label:`较上次`,value:Co(e.sizeDeltaBytes)}]}function To(e){return e.replaceAll(`|`,`\\|`).replaceAll(`
13
- `,` `)}function Eo(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(To).join(` | `)).map(e=>`| ${e} |`),``].join(`
14
- `)}function Do(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 Oo(e){let t=m(``),n=m(`all`),r=m(`all`),i=m(`size`),{actionStatus:a,setActionStatus:o}=wr(),s=T(()=>new Map(e.budgetWarnings.map(e=>[e.id,e]))),c=T(()=>So({packageInsights:e.packageInsights,budgetWarnings:e.budgetWarnings})),l=T(()=>new Map(c.value.items.map(e=>[e.id,e.score]))),u=T(()=>{let t=new Set;for(let n of e.packageInsights)t.add(n.type);return[...t].sort((e,t)=>H(e).localeCompare(H(t)))}),d=T(()=>e.packageInsights.map(t=>{let n=H(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:V(t.totalBytes),compressedBytesLabel:`${t.compressedSizeSource===`real`?`Brotli`:`估算`} ${V(t.compressedBytes)}`,deltaText:Co(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:wo(t)}})),f=T(()=>{let e=t.value.trim().toLowerCase();return Do(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)):!0}),i.value)}),p=T(()=>Eo(f.value,d.value.length));async function h(){try{await W(p.value),o(`已复制`)}catch{o(`复制失败`)}}function g(){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:h,exportPackageJson:g,filteredPackageInsightCards:f,packageBudgetFilter:r,packageHealth:c,packageInsightCards:d,packageQuery:t,packageSortMode:i,packageTypeFilter:n,packageTypeOptions:u}}var ko={class:`overflow-hidden rounded-xl border border-(--dashboard-border)`},Ao={class:`min-w-full divide-y divide-(--dashboard-border) text-left text-sm`},jo={class:`divide-y divide-(--dashboard-border) text-(--dashboard-text-muted)`},Mo={class:`px-3 py-2 font-mono text-xs text-(--dashboard-text)`},No={class:`px-3 py-2`},Po={class:`px-3 py-2`},Fo={class:`px-3 py-2 font-medium text-(--dashboard-text)`},Io={class:`px-3 py-2 font-medium text-(--dashboard-text)`},Lo=n({__name:`AppPackageFileTable`,props:{files:{}},setup(e){let t=e;function n(e){let t=typeof e.sizeDeltaBytes==`number`&&e.sizeDeltaBytes!==0?`${e.sizeDeltaBytes>0?`+`:`-`}${V(Math.abs(e.sizeDeltaBytes))}`:`—`;return{file:e.file,type:e.type,fromLabel:pe(e.from),sizeLabel:V(e.size),compressedLabel:V(e.compressedSize),deltaLabel:t}}let r=T(()=>t.files.map(e=>n(e)));return(e,t)=>(E(),L(`div`,ko,[w(`table`,Ao,[t[0]||=w(`thead`,{class:`bg-(--dashboard-panel-muted) text-(--dashboard-text-soft)`},[w(`tr`,null,[w(`th`,{class:`px-3 py-2 text-[11px] font-medium uppercase tracking-[0.18em]`},` 文件 `),w(`th`,{class:`px-3 py-2 text-[11px] font-medium uppercase tracking-[0.18em]`},` 类型 `),w(`th`,{class:`px-3 py-2 text-[11px] font-medium uppercase tracking-[0.18em]`},` 来源 `),w(`th`,{class:`px-3 py-2 text-[11px] font-medium uppercase tracking-[0.18em]`},` 体积 / 压缩 `),w(`th`,{class:`px-3 py-2 text-[11px] font-medium uppercase tracking-[0.18em]`},` 较上次 `)])],-1),w(`tbody`,jo,[(E(!0),L(A,null,l(r.value,e=>(E(),L(`tr`,{key:e.file},[w(`td`,Mo,_(e.file),1),w(`td`,No,_(e.type),1),w(`td`,Po,_(e.fromLabel),1),w(`td`,Fo,_(e.sizeLabel)+` / `+_(e.compressedLabel),1),w(`td`,Io,_(e.deltaLabel),1)]))),128))])])]))}}),Ro={class:`flex flex-wrap items-center justify-between gap-3`},zo={class:`text-xs font-medium text-(--dashboard-text-soft)`},Bo={key:0,class:`mt-1 text-xs font-medium text-(--dashboard-accent)`},Vo={class:`flex flex-wrap items-center gap-2`},Ho=[`disabled`],Uo=[`disabled`],Wo=[`value`],Go=n({__name:`PackageExplorerToolbar`,props:i({filteredCount:{},totalCount:{},typeOptions:{},actionStatus:{},disabled:{type:Boolean}},{query:{required:!0},queryModifiers:{},typeFilter:{required:!0},typeFilterModifiers:{},budgetFilter:{required:!0},budgetFilterModifiers:{},sortMode:{required:!0},sortModeModifiers:{}}),emits:i([`copy`,`exportJson`],[`update:query`,`update:typeFilter`,`update:budgetFilter`,`update:sortMode`]),setup(e,{emit:n}){let r=n,i=s(e,`query`),a=s(e,`typeFilter`),o=s(e,`budgetFilter`),u=s(e,`sortMode`);return(n,s)=>(E(),L(`div`,Ro,[w(`div`,null,[w(`p`,zo,` 匹配 `+_(e.filteredCount)+` / `+_(e.totalCount)+` 个包 `,1),e.actionStatus?(E(),L(`p`,Bo,_(e.actionStatus),1)):F(``,!0)]),w(`div`,Vo,[w(`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:e.disabled,onClick:s[0]||=e=>r(`copy`)},` 复制包体 `,8,Ho),w(`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:e.disabled,onClick:s[1]||=e=>r(`exportJson`)},` 导出 JSON `,8,Uo),t(w(`input`,{"onUpdate:modelValue":s[2]||=e=>i.value=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),[[P,i.value]]),t(w(`select`,{"onUpdate:modelValue":s[3]||=e=>a.value=e,class:`h-9 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-2.5 text-sm text-(--dashboard-text) outline-none transition focus:border-(--dashboard-accent)`},[s[6]||=w(`option`,{value:`all`},` 全部类型 `,-1),(E(!0),L(A,null,l(e.typeOptions,e=>(E(),L(`option`,{key:e,value:e},_(c(H)(e)),9,Wo))),128))],512),[[O,a.value]]),t(w(`select`,{"onUpdate:modelValue":s[4]||=e=>o.value=e,class:`h-9 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-2.5 text-sm text-(--dashboard-text) outline-none transition focus:border-(--dashboard-accent)`},[...s[7]||=[w(`option`,{value:`all`},` 全部预算 `,-1),w(`option`,{value:`warning`},` 仅告警 `,-1),w(`option`,{value:`normal`},` 预算正常 `,-1)]],512),[[O,o.value]]),t(w(`select`,{"onUpdate:modelValue":s[5]||=e=>u.value=e,class:`h-9 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-2.5 text-sm text-(--dashboard-text) outline-none transition focus:border-(--dashboard-accent)`},[...s[8]||=[x(`<option value="health"> 按健康分 </option><option value="size"> 按体积 </option><option value="compressed"> 按压缩后 </option><option value="delta"> 按增量 </option><option value="duplicates"> 按重复模块 </option><option value="files"> 按产物数 </option><option value="name"> 按名称 </option>`,7)]],512),[[O,u.value]])])]))}}),Ko={class:`rounded-lg border border-(--dashboard-border) bg-(--dashboard-panel) p-4 shadow-(--dashboard-shadow)`},qo={class:`mt-3 grid gap-3 xl:grid-cols-[minmax(0,0.45fr)_minmax(0,1fr)]`},Jo={class:`grid grid-cols-3 gap-2`},Yo={class:`grid gap-2 md:grid-cols-2 xl:grid-cols-3`},Xo={class:`flex items-start justify-between gap-3`},Zo={class:`min-w-0`},Qo={class:`truncate text-sm font-semibold text-(--dashboard-text)`},$o={class:`mt-1 text-xs leading-5 text-(--dashboard-text-soft)`},es={class:`mt-3 flex items-end justify-between gap-3`},ts={class:`text-3xl font-semibold text-(--dashboard-accent)`},ns={class:`line-clamp-2 text-right text-xs leading-5 text-(--dashboard-text-muted)`},rs=n({__name:`PackageHealthPanel`,props:{health:{}},setup(e){function t(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`}return(n,r)=>(E(),L(`section`,Ko,[p(X,{"icon-name":`metric-health`,title:`包体健康`,description:e.health.weakestPackage?`优先关注 ${e.health.weakestPackage.label}`:`当前没有包体样本`},null,8,[`description`]),w(`div`,qo,[w(`div`,Jo,[p(K,{label:`平均分`,value:e.health.averageScore},null,8,[`value`]),p(K,{label:`高风险`,value:e.health.riskCount},null,8,[`value`]),p(K,{label:`需关注`,value:e.health.watchCount},null,8,[`value`])]),w(`div`,Yo,[(E(!0),L(A,null,l(e.health.items.slice(0,3),e=>(E(),L(`article`,{key:e.id,class:`rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-3`},[w(`div`,Xo,[w(`div`,Zo,[w(`p`,Qo,_(e.label),1),w(`p`,$o,_(e.detail),1)]),w(`span`,{class:j([`shrink-0 rounded-full border px-2 py-0.5 text-[11px]`,t(e.status)])},_(e.statusLabel),3)]),w(`div`,es,[w(`p`,ts,_(e.score),1),w(`p`,ns,_(e.primaryRisk),1)])]))),128))])])]))}}),is={class:`grid h-full min-h-0 grid-rows-[auto_minmax(0,1fr)] gap-3 overflow-hidden`},as={class:`grid gap-3`},os={class:`grid min-h-0 auto-rows-max gap-3 overflow-y-auto pr-1 xl:grid-cols-2`},ss={class:`flex flex-wrap items-start justify-between gap-4`},cs={class:`min-w-0`},ls={class:`mt-2 text-sm text-(--dashboard-text-soft)`},us={class:`text-right`},ds={class:`text-xl font-semibold text-(--dashboard-text)`},fs={class:`text-xs text-(--dashboard-text-soft)`},ps={class:`mt-1 text-xs text-(--dashboard-accent)`},ms={class:`mt-4 grid grid-cols-2 gap-2 text-sm md:grid-cols-4`},hs={class:`mt-4`},gs=n({__name:`PackagesPanel`,props:{packageInsights:{},budgetWarnings:{},selectedTreemapMeta:{}},setup(e){let{actionStatus:t,copyPackageReport:n,exportPackageJson:i,filteredPackageInsightCards:a,packageBudgetFilter:o,packageHealth:s,packageInsightCards:u,packageQuery:d,packageSortMode:f,packageTypeFilter:m,packageTypeOptions:g}=Oo(e);return(e,v)=>(E(),L(`section`,is,[w(`div`,as,[p(rs,{health:c(s)},null,8,[`health`]),w(`div`,{class:j([c(z)({padding:`md`}),`grid gap-3`])},[p(X,{"icon-name":`tab-packages`,title:`包体探索`,description:`${c(u).length} 个包体样本`},null,8,[`description`]),p(Go,{"budget-filter":c(o),"onUpdate:budgetFilter":v[0]||=e=>h(o)?o.value=e:null,query:c(d),"onUpdate:query":v[1]||=e=>h(d)?d.value=e:null,"sort-mode":c(f),"onUpdate:sortMode":v[2]||=e=>h(f)?f.value=e:null,"type-filter":c(m),"onUpdate:typeFilter":v[3]||=e=>h(m)?m.value=e:null,"action-status":c(t),disabled:c(a).length===0,"filtered-count":c(a).length,"total-count":c(u).length,"type-options":c(g),onCopy:c(n),onExportJson:c(i)},null,8,[`budget-filter`,`query`,`sort-mode`,`type-filter`,`action-status`,`disabled`,`filtered-count`,`total-count`,`type-options`,`onCopy`,`onExportJson`])],2)]),w(`div`,os,[c(a).length===0?(E(),y(G,{key:0,class:`xl:col-span-2`},{default:R(()=>[...v[4]||=[I(` 没有匹配当前筛选条件的包。 `,-1)]]),_:1})):F(``,!0),(E(!0),L(A,null,l(c(a),e=>(E(),L(`article`,{key:e.id,class:j([[c(z)({padding:`md`}),e.selected?`border-(--dashboard-accent)`:``],`border transition`])},[w(`div`,ss,[w(`div`,cs,[p(X,{"icon-name":`tab-packages`,title:e.label,description:e.typeLabel},null,8,[`title`,`description`]),w(`p`,ls,_(e.summaryText),1)]),w(`div`,us,[w(`p`,ds,_(e.totalBytesLabel),1),w(`p`,fs,_(e.compressedBytesLabel),1),w(`p`,ps,_(e.budgetText),1)])]),w(`div`,ms,[(E(!0),L(A,null,l(e.metrics,e=>(E(),y(K,r({key:e.label},{ref_for:!0},e),null,16))),128))]),w(`div`,hs,[p(Lo,{files:e.topFiles},null,8,[`files`])])],2))),128))])]))}}),_s={class:`grid h-full min-h-0 grid-rows-[auto_minmax(0,1fr)] gap-2 overflow-hidden`},vs={class:`rounded-lg border border-(--dashboard-border) bg-(--dashboard-panel) p-4 shadow-(--dashboard-shadow)`},ys={class:`flex items-center gap-2`},bs={key:0,class:`text-xs font-medium text-(--dashboard-accent)`},xs={class:`h-3.5 w-3.5`},Ss={class:`mt-3 grid gap-3 lg:grid-cols-[minmax(0,0.82fr)_minmax(0,1fr)]`},Cs={class:`rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-3`},ws={class:`mt-3 text-lg font-semibold text-(--dashboard-text)`},Ts={class:`mt-1 text-xs leading-5 text-(--dashboard-text-soft)`},Es={class:`grid grid-cols-2 gap-2 md:grid-cols-4`},Ds={class:`grid min-h-0 gap-2 overflow-y-auto pr-1 xl:grid-cols-3 xl:overflow-hidden xl:pr-0`},Os={class:`text-sm font-semibold text-(--dashboard-text)`},ks={class:`mt-1 text-xs leading-5 text-(--dashboard-text-soft)`},As={class:`mt-3 min-h-0 overflow-y-auto pr-1`},js={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)`},Ms=[`onClick`],Ns={class:`mt-0.5 flex h-4 w-4 items-center justify-center rounded border border-current text-[10px] leading-none`},Ps={class:`min-w-0`},Fs={class:`block text-sm font-medium text-(--dashboard-text)`},Is={class:`mt-1 line-clamp-2 block text-xs leading-5 text-(--dashboard-text-muted)`},Ls=n({__name:`PrReviewChecklistPanel`,props:{checklist:{},copyStatus:{}},emits:[`copy`,`select`],setup(e,{emit:t}){let n=t;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)`}return(t,o)=>(E(),L(`section`,_s,[w(`div`,vs,[p(X,{"icon-name":`metric-bookmark`,title:`PR 风险清单`},{meta:R(()=>[w(`div`,ys,[e.copyStatus?(E(),L(`span`,bs,_(e.copyStatus),1)):F(``,!0),w(`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:o[0]||=e=>n(`copy`)},[w(`span`,xs,[p(B,{name:`metric-copy`})]),o[1]||=I(` 复制清单 `,-1)])])]),_:1}),w(`div`,Ss,[w(`div`,Cs,[w(`span`,{class:j([`inline-flex rounded-full border px-2.5 py-1 text-[11px] font-medium uppercase tracking-[0.16em]`,i(e.checklist.status)])},_(e.checklist.label),3),w(`p`,ws,_(e.checklist.headline),1),w(`p`,Ts,_(e.checklist.description),1)]),w(`div`,Es,[(E(!0),L(A,null,l(e.checklist.metrics,e=>(E(),y(K,r({key:e.label},{ref_for:!0},e),null,16))),128))])])]),w(`div`,Ds,[(E(!0),L(A,null,l(e.checklist.lanes,e=>(E(),L(`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)`},[w(`div`,null,[w(`p`,Os,_(e.title),1),w(`p`,ks,_(e.description),1)]),w(`div`,As,[e.items.length===0?(E(),L(`div`,js,_(e.emptyText),1)):F(``,!0),(E(!0),L(A,null,l(e.items,e=>(E(),L(`button`,{key:e.id,type:`button`,class:j([`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)`,a(e.tone)]),onClick:t=>n(`select`,e)},[w(`span`,Ns,_(e.checked?`✓`:``),1),w(`span`,Ps,[w(`span`,Fs,_(e.title),1),w(`span`,Is,_(e.detail),1)])],10,Ms))),128))])]))),128))])]))}}),Rs={noSemanticValidation:!0,noSuggestionDiagnostics:!0,noSyntaxValidation:!0},zs={diagnostics:!1};function Bs(e){e.typescript.javascriptDefaults.setDiagnosticsOptions(Rs),e.typescript.javascriptDefaults.setModeConfiguration(zs),e.typescript.typescriptDefaults.setDiagnosticsOptions(Rs),e.typescript.typescriptDefaults.setModeConfiguration(zs),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 Vs(e){return e===`dark`?`weapp-dashboard-dark`:`weapp-dashboard-light`}var Hs={css:re,html:ae,javascript:oe,json:ie,less:re,scss:re,typescript:oe},Us=globalThis;Us.MonacoEnvironment={getWorker:(e,t)=>new(Hs[t]??ne)};function Ws(e){return`${e.packageId}:${e.file}`}function Gs(e,t){return t.endsWith(`.wxml`)||t.endsWith(`.vue`)?`html`:t.endsWith(`.wxss`)?`css`:e===`plaintext`&&t.endsWith(`.json`)?`json`:e}function Ks(e){let t=e.indexOf(`?`);return t===-1?e:e.slice(0,t)}async function qs(e,t){let n=new URLSearchParams({kind:e,path:t}),r=await fetch(`/__weapp_vite_file_content?${n.toString()}`),i=await r.json();if(!r.ok)throw Error(i.message||`文件读取失败`);return{...i,language:Gs(i.language,i.path)}}function Js(e){let t=new Set;if(!e)return[];e.source&&t.add(Ks(e.source));for(let n of e.modules??[])(n.sourceType===`src`||n.sourceType===`workspace`||n.sourceType===`plugin`)&&t.add(Ks(n.source));return[...t].sort((e,t)=>e.localeCompare(t))}function Ys(e){return e?e.replace(/\r\n?/g,`
6
+ `));function h(e){o.value=e,s&&clearTimeout(s),s=setTimeout(()=>{o.value=``,s=null},1800)}async function g(){try{await W(p.value),h(`已复制`)}catch{h(`复制失败`)}}function v(){let e=new Blob([`${JSON.stringify(d.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(`已导出`)}return D(()=>{s&&clearTimeout(s)}),(n,s)=>(E(),L(`section`,Ht,[w(`div`,Ut,[w(`div`,null,[s[3]||=w(`h3`,{class:`text-sm font-semibold text-(--dashboard-text)`},` 文件详情 `,-1),w(`p`,Wt,` 匹配 `+_(f.value.length)+` / `+_(e.selectedFileModules.length)+` 个模块 `,1)]),s[4]||=w(`span`,{class:`text-[11px] uppercase tracking-[0.16em] text-(--dashboard-text-soft)`},`modules`,-1)]),w(`div`,Gt,[w(`div`,Kt,[o.value?(E(),L(`span`,qt,_(o.value),1)):F(``,!0),w(`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:f.value.length===0,onClick:g},` 复制模块 `,8,Jt),w(`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:f.value.length===0,onClick:v},` 导出 JSON `,8,Yt)]),t(w(`input`,{"onUpdate:modelValue":s[0]||=e=>r.value=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),[[P,r.value]]),w(`div`,Xt,[t(w(`select`,{"onUpdate:modelValue":s[1]||=e=>i.value=e,class:`h-9 min-w-0 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-2.5 text-sm text-(--dashboard-text) outline-none transition focus:border-(--dashboard-accent)`},[s[5]||=w(`option`,{value:`all`},` 全部来源 `,-1),(E(!0),L(A,null,l(u.value,e=>(E(),L(`option`,{key:e,value:e},_(e),9,Zt))),128))],512),[[O,i.value]]),t(w(`select`,{"onUpdate:modelValue":s[2]||=e=>a.value=e,class:`h-9 min-w-0 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-2.5 text-sm text-(--dashboard-text) outline-none transition focus:border-(--dashboard-accent)`},[...s[6]||=[w(`option`,{value:`saving`},` 按可节省 `,-1),w(`option`,{value:`size`},` 按体积 `,-1),w(`option`,{value:`duplicates`},` 按复用包 `,-1),w(`option`,{value:`source`},` 按路径 `,-1)]],512),[[O,a.value]])])]),w(`ul`,Qt,[f.value.length===0?(E(),y(G,{key:0,as:`li`,compact:``},{default:R(()=>[...s[7]||=[I(` 选择一个 chunk 文件或调整筛选条件查看模块明细。 `,-1)]]),_:1})):F(``,!0),(E(!0),L(A,null,l(f.value,e=>(E(),y(Ot,{key:e.key,meta:e.meta,"mono-title":``,title:e.title,value:e.value},null,8,[`meta`,`title`,`value`]))),128))])]))}}),J={totalBytes:20*1024*1024,mainBytes:2*1024*1024,subPackageBytes:2*1024*1024,independentBytes:2*1024*1024,warningRatio:.85,source:`default`},Y=1024*1024,en=[{id:`wechat-default`,label:`平台上限`,detail:`按小程序常见包体限制和 85% 预警线评估。`,config:{totalBytes:20*Y,mainBytes:2*Y,subPackageBytes:2*Y,independentBytes:2*Y,warningRatio:.85}},{id:`release-buffer`,label:`发布缓冲`,detail:`保留更早预警空间,适合发版前巡检。`,config:{totalBytes:20*Y,mainBytes:2*Y,subPackageBytes:2*Y,independentBytes:2*Y,warningRatio:.75}},{id:`near-limit`,label:`临界排查`,detail:`只标记接近上限的包,适合聚焦最紧急项。`,config:{totalBytes:20*Y,mainBytes:2*Y,subPackageBytes:2*Y,independentBytes:2*Y,warningRatio:.95}}];function tn(e,t){return Number.isFinite(e)&&e>0?Math.round(e):t}function nn(e){return Number.isFinite(e)?Math.min(.99,Math.max(.01,e)):J.warningRatio}function rn(e,t){return e===`main`?t.mainBytes:e===`subPackage`?t.subPackageBytes:e===`independent`?t.independentBytes:0}function an(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 on(e){return{totalBytes:tn(e?.totalBytes??J.totalBytes,J.totalBytes),mainBytes:tn(e?.mainBytes??J.mainBytes,J.mainBytes),subPackageBytes:tn(e?.subPackageBytes??J.subPackageBytes,J.subPackageBytes),independentBytes:tn(e?.independentBytes??J.independentBytes,J.independentBytes),warningRatio:nn(e?.warningRatio??J.warningRatio)}}function sn(e,t){return e.totalBytes===t.totalBytes&&e.mainBytes===t.mainBytes&&e.subPackageBytes===t.subPackageBytes&&e.independentBytes===t.independentBytes&&e.warningRatio===t.warningRatio}function cn(e){let t=on(e);return en.find(e=>sn(on(e.config),t))}function ln(e){let t=on(e.config),n=[],r=an({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=rn(r.type,t);if(!e)continue;let i=an({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 un(e){let t=on(e);return[`analyze: {`,` budgets: {`,` totalBytes: ${t.totalBytes},`,` mainBytes: ${t.mainBytes},`,` subPackageBytes: ${t.subPackageBytes},`,` independentBytes: ${t.independentBytes},`,` warningRatio: ${t.warningRatio},`,` },`,`},`].join(`
7
+ `)}var dn={class:`grid h-full min-h-0 grid-rows-[auto_minmax(0,1fr)] overflow-hidden rounded-lg border border-(--dashboard-border) bg-(--dashboard-panel) p-3 shadow-(--dashboard-shadow)`},fn={class:`mb-2 flex items-center justify-between gap-3`},pn={class:`mt-1 text-xs text-(--dashboard-text-soft)`},mn={key:0,class:`text-xs font-medium text-(--dashboard-accent)`},hn={class:`grid min-h-0 grid-rows-[auto_auto_auto_minmax(0,1fr)] gap-3 overflow-hidden`},gn={class:`grid grid-cols-3 gap-2`},_n=[`onClick`],vn={class:`block truncate text-xs font-semibold`},yn={class:`mt-1 line-clamp-2 block text-[11px] leading-4 opacity-80`},bn={class:`grid grid-cols-2 gap-2`},xn={class:`grid gap-1 text-[11px] text-(--dashboard-text-soft)`},Sn={class:`grid gap-1 text-[11px] text-(--dashboard-text-soft)`},Cn={class:`grid gap-1 text-[11px] text-(--dashboard-text-soft)`},wn={class:`grid gap-1 text-[11px] text-(--dashboard-text-soft)`},Tn={class:`grid gap-2`},En={class:`grid gap-1 text-[11px] text-(--dashboard-text-soft)`},Dn={class:`min-h-0 overflow-y-auto pr-1`},On={key:1,class:`grid content-start gap-2 text-sm text-(--dashboard-text-muted)`},kn=n({__name:`BudgetSandboxPanel`,props:{activeBudgetWarningId:{},budgetConfig:{},currentWarnings:{},packageInsights:{},totalBytes:{}},emits:[`selectBudgetWarning`],setup(e,{emit:n}){let r=e,i=n,a=o({totalMiB:0,mainMiB:0,subPackageMiB:0,independentMiB:0,warningPercent:85}),s=o({text:``,timer:null});function u(e){return Number((e/1024/1024).toFixed(2))}function d(e){return Math.max(1,Math.round((Number.isFinite(e)?e:0)*1024*1024))}function p(){return on(r.budgetConfig??J)}function m(){let e=p();a.totalMiB=u(e.totalBytes),a.mainMiB=u(e.mainBytes),a.subPackageMiB=u(e.subPackageBytes),a.independentMiB=u(e.independentBytes),a.warningPercent=Math.round(e.warningRatio*100)}let h=T(()=>on({totalBytes:d(a.totalMiB),mainBytes:d(a.mainMiB),subPackageBytes:d(a.subPackageMiB),independentBytes:d(a.independentMiB),warningRatio:a.warningPercent/100})),g=T(()=>ln({totalBytes:r.totalBytes,packages:r.packageInsights,config:h.value})),v=T(()=>cn(h.value)?.id??null),b=T(()=>new Set(r.currentWarnings.map(e=>e.id))),x=T(()=>new Set(g.value.map(e=>e.id))),S=T(()=>g.value.filter(e=>!b.value.has(e.id)).length),C=T(()=>r.currentWarnings.filter(e=>!x.value.has(e.id)).length),O=T(()=>un(h.value)),ee=T(()=>g.value.slice(0,6).map(e=>({key:e.id,warning:e,active:r.activeBudgetWarningId===e.id,title:e.label,meta:`${e.status===`critical`?`超预算`:`接近预算`} · ${(e.ratio*100).toFixed(1)}%`,value:`${V(e.currentBytes)} / ${V(e.limitBytes)}`})));function k(e){s.text=e,s.timer&&clearTimeout(s.timer),s.timer=setTimeout(()=>{s.text=``,s.timer=null},1800)}function M(e){let t=en.find(t=>t.id===e);if(!t)return;let n=on(t.config);a.totalMiB=u(n.totalBytes),a.mainMiB=u(n.mainBytes),a.subPackageMiB=u(n.subPackageBytes),a.independentMiB=u(n.independentBytes),a.warningPercent=Math.round(n.warningRatio*100),k(`已应用 ${t.label}`)}async function N(){try{await W(O.value),k(`已复制`)}catch{k(`复制失败`)}}return f(()=>r.budgetConfig,m,{immediate:!0}),D(()=>{s.timer&&clearTimeout(s.timer)}),(e,n)=>(E(),L(`section`,dn,[w(`div`,fn,[w(`div`,null,[n[5]||=w(`h3`,{class:`text-sm font-semibold text-(--dashboard-text)`},` 预算沙盘 `,-1),w(`p`,pn,` 预测 `+_(g.value.length)+` 个告警 · 新增 `+_(S.value)+` · 解除 `+_(C.value),1)]),s.text?(E(),L(`span`,mn,_(s.text),1)):F(``,!0)]),w(`div`,hn,[w(`div`,gn,[(E(!0),L(A,null,l(c(en),e=>(E(),L(`button`,{key:e.id,class:j([`rounded-md border px-2 py-2 text-left transition`,v.value===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=>M(e.id)},[w(`span`,vn,_(e.label),1),w(`span`,yn,_(e.detail),1)],10,_n))),128))]),w(`div`,bn,[w(`label`,xn,[n[6]||=I(` 总包 MB `,-1),t(w(`input`,{"onUpdate:modelValue":n[0]||=e=>a.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),[[P,a.totalMiB,void 0,{number:!0}]])]),w(`label`,Sn,[n[7]||=I(` 主包 MB `,-1),t(w(`input`,{"onUpdate:modelValue":n[1]||=e=>a.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),[[P,a.mainMiB,void 0,{number:!0}]])]),w(`label`,Cn,[n[8]||=I(` 分包 MB `,-1),t(w(`input`,{"onUpdate:modelValue":n[2]||=e=>a.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),[[P,a.subPackageMiB,void 0,{number:!0}]])]),w(`label`,wn,[n[9]||=I(` 独立分包 MB `,-1),t(w(`input`,{"onUpdate:modelValue":n[3]||=e=>a.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),[[P,a.independentMiB,void 0,{number:!0}]])])]),w(`div`,Tn,[w(`label`,En,[I(` 预警线 `+_(a.warningPercent)+`% `,1),t(w(`input`,{"onUpdate:modelValue":n[4]||=e=>a.warningPercent=e,class:`accent-(--dashboard-accent)`,max:`99`,min:`1`,step:`1`,type:`range`},null,512),[[P,a.warningPercent,void 0,{number:!0}]])]),w(`div`,{class:`grid grid-cols-2 gap-2`},[w(`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:m},` 重置 `),w(`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:N},` 复制配置 `)])]),w(`div`,Dn,[ee.value.length===0?(E(),y(G,{key:0,compact:``},{default:R(()=>[...n[10]||=[I(` 当前沙盘预算下没有预计告警。 `,-1)]]),_:1})):(E(),L(`ul`,On,[(E(!0),L(A,null,l(ee.value,e=>(E(),y(Ot,{key:e.key,active:e.active,clickable:``,meta:e.meta,title:e.title,value:e.value,onSelect:t=>i(`selectBudgetWarning`,e.warning)},null,8,[`active`,`meta`,`title`,`value`,`onSelect`]))),128))]))])])]))}}),An=n({__name:`AnalyzeDetailsPanel`,props:{largestFiles:{},selectedFileModules:{},budgetWarnings:{},budgetConfig:{},packageInsights:{},totalBytes:{},activeBudgetWarningId:{},activeLargestFileKey:{},selectedTreemapMeta:{}},emits:[`selectFile`,`selectBudgetWarning`],setup(e,{emit:t}){let n=t,r=[{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`}];return(t,i)=>(E(),y(q,{"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,"storage-key":`weapp-vite:dashboard:analyze-layout:files`},{"top-files":R(()=>[p(Vt,{"largest-files":e.largestFiles,"active-largest-file-key":e.activeLargestFileKey,"selected-treemap-meta":e.selectedTreemapMeta,onSelectFile:i[0]||=e=>n(`selectFile`,e)},null,8,[`largest-files`,`active-largest-file-key`,`selected-treemap-meta`])]),"file-modules":R(()=>[p($t,{"selected-file-modules":e.selectedFileModules},null,8,[`selected-file-modules`])]),budget:R(()=>[p(kn,{"active-budget-warning-id":e.activeBudgetWarningId,"budget-config":e.budgetConfig,"current-warnings":e.budgetWarnings,"package-insights":e.packageInsights,"total-bytes":e.totalBytes,onSelectBudgetWarning:i[1]||=e=>n(`selectBudgetWarning`,e)},null,8,[`active-budget-warning-id`,`budget-config`,`current-warnings`,`package-insights`,`total-bytes`])]),_:1}))}}),jn={critical:4,warning:3,info:2,success:1};function Mn(e){return e===`budget`?`预算`:e===`increment`?`增量`:e===`duplicate`?`重复`:`文件`}function Nn(e){return le(e===`critical`?{tone:`error`}:e===`warning`?{tone:`warning`}:e===`success`?{tone:`success`}:{tone:`info`})}function Pn(e){return e===`critical`?`必须处理`:e===`warning`?`建议处理`:e===`success`?`可查看`:`定位`}function Fn(e,t){return[...e].sort((e,n)=>t===`severity`?jn[n.tone]-jn[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||jn[n.tone]-jn[e.tone]||e.title.localeCompare(n.title))}function In(e){let t=m(``),n=m(`all`),r=m(`all`),i=m(`priority`),a=T(()=>{let t=new Set;for(let n of e.actions)t.add(n.tone);return[...t].sort((e,t)=>jn[t]-jn[e])}),o=T(()=>{let t=new Set;for(let n of e.actions)t.add(n.kind);return[...t].sort((e,t)=>Mn(e).localeCompare(Mn(t)))}),s=T(()=>{let a=t.value.trim().toLowerCase();return Fn(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)):!0),i.value)});function c(t){return e.queuedActionKeys.includes(t.key)}return{actionKindFilter:r,actionQuery:t,actionSortMode:i,actionToneFilter:n,filteredActions:s,getKindLabel:Mn,getToneClassName:Nn,getToneLabel:Pn,isQueued:c,kindOptions:o,toneOptions:a}}var Ln={class:`flex items-center justify-between gap-3`},Rn={class:`flex items-center gap-2`},zn={class:`h-5 w-5`},Bn={class:`text-lg font-semibold text-(--dashboard-text)`},Vn={key:0,class:`text-xs text-(--dashboard-text-soft) md:text-sm`},X=n({__name:`AppPanelHeader`,props:{iconName:{},title:{},description:{}},setup(e){let t=ce();return(n,r)=>(E(),L(`div`,Ln,[w(`div`,Rn,[w(`span`,{class:j(c(t))},[w(`span`,zn,[p(B,{name:e.iconName},null,8,[`name`])])],2),w(`div`,null,[w(`h2`,Bn,_(e.title),1),e.description?(E(),L(`p`,Vn,_(e.description),1)):F(``,!0)])]),d(n.$slots,`meta`)]))}}),Hn={class:`h-3.5 w-3.5`},Un={class:`mt-3 grid gap-2`},Wn={class:`flex flex-wrap items-center justify-between gap-2`},Gn={class:`text-xs text-(--dashboard-text-soft)`},Kn={class:`grid grid-cols-3 gap-2`},qn=[`value`],Jn=[`value`],Yn={class:`mt-3 min-h-0 overflow-hidden`},Xn={key:1,class:`grid h-full min-h-0 content-start gap-2 overflow-y-auto pr-1`},Zn={class:`flex items-start justify-between gap-3`},Qn=[`onClick`],$n={class:`flex min-w-0 items-center gap-2`},er={class:`rounded-full bg-(--dashboard-accent-soft) px-2 py-0.5 text-[11px] text-(--dashboard-text-muted)`},tr={class:`truncate text-sm font-medium text-(--dashboard-text)`},nr={class:`mt-1 truncate text-xs text-(--dashboard-text-soft)`},rr={key:0,class:`whitespace-nowrap text-sm font-medium text-(--dashboard-accent)`},ir={class:`mt-2 flex items-center justify-end border-t border-(--dashboard-border) pt-2`},ar=[`disabled`,`onClick`],or=n({__name:`ActionCenterPanel`,props:{actions:{},activeKey:{},queuedActionKeys:{}},emits:[`addToQueue`,`copyReport`,`select`],setup(e,{emit:n}){let r=e,i=n,{actionKindFilter:a,actionQuery:o,actionSortMode:s,actionToneFilter:u,filteredActions:d,getKindLabel:f,getToneClassName:m,getToneLabel:g,isQueued:v,kindOptions:b,toneOptions:x}=In(r);return(n,r)=>(E(),L(`section`,{class:j([c(z)({padding:`md`}),`grid h-full min-h-0 grid-rows-[auto_auto_minmax(0,1fr)] overflow-hidden`])},[p(X,{"icon-name":`metric-health`,title:`问题中心`},{meta:R(()=>[w(`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:r[0]||=e=>i(`copyReport`)},[w(`span`,Hn,[p(B,{name:`metric-copy`})]),r[5]||=I(` 复制 PR `,-1)])]),_:1}),w(`div`,Un,[w(`div`,Wn,[w(`p`,Gn,` 匹配 `+_(c(d).length)+` / `+_(e.actions.length)+` 个处理项 `,1),t(w(`input`,{"onUpdate:modelValue":r[1]||=e=>h(o)?o.value=e:null,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),[[P,c(o)]])]),w(`div`,Kn,[t(w(`select`,{"onUpdate:modelValue":r[2]||=e=>h(u)?u.value=e:null,class:`h-9 min-w-0 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-2.5 text-sm text-(--dashboard-text) outline-none transition focus:border-(--dashboard-accent)`},[r[6]||=w(`option`,{value:`all`},` 全部严重度 `,-1),(E(!0),L(A,null,l(c(x),e=>(E(),L(`option`,{key:e,value:e},_(c(g)(e)),9,qn))),128))],512),[[O,c(u)]]),t(w(`select`,{"onUpdate:modelValue":r[3]||=e=>h(a)?a.value=e:null,class:`h-9 min-w-0 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-2.5 text-sm text-(--dashboard-text) outline-none transition focus:border-(--dashboard-accent)`},[r[7]||=w(`option`,{value:`all`},` 全部类型 `,-1),(E(!0),L(A,null,l(c(b),e=>(E(),L(`option`,{key:e,value:e},_(c(f)(e)),9,Jn))),128))],512),[[O,c(a)]]),t(w(`select`,{"onUpdate:modelValue":r[4]||=e=>h(s)?s.value=e:null,class:`h-9 min-w-0 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-2.5 text-sm text-(--dashboard-text) outline-none transition focus:border-(--dashboard-accent)`},[...r[8]||=[w(`option`,{value:`priority`},` 按优先级 `,-1),w(`option`,{value:`severity`},` 按严重度 `,-1),w(`option`,{value:`title`},` 按标题 `,-1),w(`option`,{value:`value`},` 按数值 `,-1)]],512),[[O,c(s)]])])]),w(`div`,Yn,[c(d).length===0?(E(),y(G,{key:0,compact:``},{default:R(()=>[...r[9]||=[I(` 暂无匹配当前筛选条件的事项。 `,-1)]]),_:1})):(E(),L(`ol`,Xn,[(E(!0),L(A,null,l(c(d),t=>(E(),L(`li`,{key:t.key,class:`list-none`},[w(`article`,{class:j([`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)`,e.activeKey===t.key?`border-(--dashboard-accent) bg-(--dashboard-accent-soft)`:void 0])},[w(`div`,Zn,[w(`button`,{type:`button`,class:`min-w-0 text-left`,onClick:e=>i(`select`,t)},[w(`div`,$n,[w(`span`,{class:j(c(m)(t.tone))},_(c(g)(t.tone)),3),w(`span`,er,_(c(f)(t.kind)),1),w(`p`,tr,_(t.title),1)]),w(`p`,nr,_(t.meta),1)],8,Qn),t.value?(E(),L(`span`,rr,_(t.value),1)):F(``,!0)]),w(`div`,ir,[w(`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:c(v)(t),onClick:e=>i(`addToQueue`,t)},_(c(v)(t)?`已在清单`:`加入清单`),9,ar)])],2)]))),128))]))])],2))}}),sr=[`disabled`],cr={class:`h-3.5 w-3.5`},lr={class:`mt-3 grid gap-2`},ur={class:`grid grid-cols-3 gap-2 text-center`},dr={class:`mt-3 min-h-0 overflow-hidden`},fr={key:1,class:`grid h-full min-h-0 content-start gap-2 overflow-y-auto pr-1`},pr={class:`flex items-start justify-between gap-2`},mr=[`onClick`],hr={class:`mt-2 truncate text-sm font-medium text-(--dashboard-text)`},gr={class:`mt-1 line-clamp-2 text-xs leading-5 text-(--dashboard-text-soft)`},_r={key:0,class:`shrink-0 text-xs font-medium text-(--dashboard-accent)`},vr={class:`flex items-center justify-between gap-2 border-t border-(--dashboard-border) pt-2`},yr=[`onClick`],br=[`onClick`],xr=n({__name:`AnalyzeWorkQueuePanel`,props:{items:{},activeId:{}},emits:[`clearCompleted`,`copy`,`remove`,`select`,`toggle`],setup(e,{emit:t}){let n=e,r=t,i=m(`open`),a=T(()=>n.items.filter(e=>!e.completedAt).length),o=T(()=>n.items.length-a.value),s=T(()=>n.items.filter(e=>i.value===`open`?!e.completedAt:i.value===`done`?!!e.completedAt:!0));function u(e){return le(e===`critical`?{tone:`error`}:e===`warning`?{tone:`warning`}:e===`success`?{tone:`success`}:{tone:`info`})}return(t,n)=>(E(),L(`section`,{class:j([c(z)({padding:`md`}),`grid h-full min-h-0 grid-rows-[auto_auto_minmax(0,1fr)] overflow-hidden`])},[p(X,{"icon-name":`metric-bookmark`,title:`处理清单`},{meta:R(()=>[w(`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:e.items.length===0,onClick:n[0]||=e=>r(`copy`)},[w(`span`,cr,[p(B,{name:`metric-copy`})]),n[5]||=I(` 复制 `,-1)],8,sr)]),_:1}),w(`div`,lr,[w(`div`,ur,[w(`button`,{type:`button`,class:j([`rounded-md border px-2 py-2 text-xs transition`,i.value===`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.value=`open`},` 待处理 `+_(a.value),3),w(`button`,{type:`button`,class:j([`rounded-md border px-2 py-2 text-xs transition`,i.value===`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.value=`done`},` 已完成 `+_(o.value),3),w(`button`,{type:`button`,class:j([`rounded-md border px-2 py-2 text-xs transition`,i.value===`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.value=`all`},` 全部 `+_(e.items.length),3)]),o.value>0?(E(),L(`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=>r(`clearCompleted`)},` 清空已完成 `)):F(``,!0)]),w(`div`,dr,[s.value.length===0?(E(),y(G,{key:0,compact:``},{default:R(()=>[...n[6]||=[I(` 当前没有处理事项。 `,-1)]]),_:1})):(E(),L(`ol`,fr,[(E(!0),L(A,null,l(s.value,t=>(E(),L(`li`,{key:t.id,class:j([`grid gap-2 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-2.5 transition`,e.activeId===t.id?`border-(--dashboard-accent) bg-(--dashboard-accent-soft)`:void 0])},[w(`div`,pr,[w(`button`,{type:`button`,class:`min-w-0 text-left`,onClick:e=>r(`select`,t)},[w(`span`,{class:j(u(t.tone))},_(t.completedAt?`完成`:`待处理`),3),w(`p`,hr,_(t.title),1),w(`p`,gr,_(t.meta),1)],8,mr),t.value?(E(),L(`span`,_r,_(t.value),1)):F(``,!0)]),w(`div`,vr,[w(`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:e=>r(`toggle`,t.id)},_(t.completedAt?`重新打开`:`标记完成`),9,yr),w(`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:e=>r(`remove`,t.id)},` 移除 `,8,br)])],2))),128))]))])],2))}});function Sr(e){return e===0?`0 B`:`${e>0?`+`:`-`}${V(Math.abs(e))}`}function Cr(e,t){return e===0&&t===0?`stable`:t>0?`growing`:t<0?`shrinking`:`stable`}function wr(e){return e===`growing`?`增长`:e===`shrinking`?`下降`:e===`stable`?`稳定`:`样本不足`}function Tr(e){return e===`growing`?`历史快照显示体积正在上升`:e===`shrinking`?`历史快照显示体积正在下降`:e===`stable`?`历史快照整体保持稳定`:`需要更多历史快照判断趋势`}function Er(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:wr(`insufficient`),headline:Tr(`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=Cr(a,o);return{status:c,label:wr(c),headline:Tr(c),description:`${t.length} 个历史样本 · ${n.label} 至 ${r.label}`,totalDeltaBytes:a,averageDeltaBytes:o,projectedNextBytes:s,metrics:[{label:`样本数`,value:t.length},{label:`累计变化`,value:Sr(a)},{label:`平均变化`,value:Sr(o)},{label:`预测下次`,value:V(s)}]}}function Dr(e=1800){let t=m(``),n=null;function r(r){t.value=r,n&&clearTimeout(n),n=setTimeout(()=>{t.value=``,n=null},e)}return D(()=>{n&&clearTimeout(n)}),{actionStatus:t,setActionStatus:r}}function Or(e){return e===0?`无变化`:`${e>0?`+`:`-`}${V(Math.abs(e))}`}function kr(e){return new Date(e.capturedAt).toLocaleString(`zh-CN`,{month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`,hour12:!1})}function Ar(e){return[e.id,e.label,e.capturedAt,e.packageCount,e.moduleCount,e.duplicateCount,e.totalBytes,e.compressedBytes].join(` `).toLowerCase()}function jr(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 Mr(e){let t=m(``),n=m(`capturedAt`),{actionStatus:r,setActionStatus:i}=Dr(),a=T(()=>e.snapshots.find(t=>t.id===e.baselineSnapshotId)??null),o=T(()=>e.snapshots[0]??null),s=T(()=>e.snapshots[1]??null),c=T(()=>Er(e.snapshots)),l=T(()=>!o.value||!a.value?``:Or(o.value.totalBytes-a.value.totalBytes)),u=T(()=>!o.value||!s.value?``:Or(o.value.totalBytes-s.value.totalBytes)),d=T(()=>e.comparisonMode===`baseline`?l.value||`未设置`:u.value||`上次快照`),f=T(()=>{let e=a.value;return e?[{label:`基线体积`,value:V(e.totalBytes)},{label:`压缩后`,value:V(e.compressedBytes)},{label:`模块数`,value:String(e.moduleCount)},{label:`复用模块`,value:String(e.duplicateCount)}]:[]}),p=T(()=>{let r=t.value.trim().toLowerCase();return jr(e.snapshots.filter(e=>!r||Ar(e).includes(r)),n.value)}),h=T(()=>{let e=o.value,t=a.value,n=s.value;return[`# dashboard 历史基线`,``,e?`当前快照:${kr(e)} · ${V(e.totalBytes)} · 压缩后 ${V(e.compressedBytes)}`:`当前快照:暂无`,t?`基线快照:${kr(t)} · ${V(t.totalBytes)} · 压缩后 ${V(t.compressedBytes)}`:`基线快照:未设置`,n?`上次快照:${kr(n)} · ${V(n.totalBytes)} · 压缩后 ${V(n.compressedBytes)}`:`上次快照:暂无`,`当前对比:${d.value}`,``,`| 时间 | 总体积 | 压缩后 | 包 | 模块 | 复用模块 |`,`| --- | ---: | ---: | ---: | ---: | ---: |`,...p.value.map(e=>`| ${kr(e)} | ${V(e.totalBytes)} | ${V(e.compressedBytes)} | ${e.packageCount} | ${e.moduleCount} | ${e.duplicateCount} |`),``].join(`
8
+ `)});async function g(){try{await W(h.value),i(`已复制`)}catch{i(`复制失败`)}}function _(){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:g,exportFilteredSnapshots:_,filteredSnapshots:p,formatSnapshotDate:kr,historyTrend:c,snapshotQuery:t,snapshotSortMode:n}}var Nr={class:`flex flex-wrap items-center justify-between gap-2`},Pr={class:`text-xs text-(--dashboard-text-soft)`},Fr={class:`flex flex-wrap items-center gap-2`},Ir={key:0,class:`text-xs font-medium text-(--dashboard-accent)`},Lr=[`disabled`],Rr=[`disabled`],zr=n({__name:`HistoryBaselineToolbar`,props:i({filteredCount:{},totalCount:{},actionStatus:{},disabled:{type:Boolean}},{modelValue:{required:!0},modelModifiers:{}}),emits:i([`copy`,`exportJson`],[`update:modelValue`]),setup(e,{emit:n}){let r=n,i=s(e,`modelValue`);return(n,a)=>(E(),L(`div`,Nr,[w(`p`,Pr,` 匹配 `+_(e.filteredCount)+` / `+_(e.totalCount)+` 个快照 `,1),w(`div`,Fr,[e.actionStatus?(E(),L(`span`,Ir,_(e.actionStatus),1)):F(``,!0),w(`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:e.disabled,onClick:a[0]||=e=>r(`copy`)},` 复制基线 `,8,Lr),w(`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:e.disabled,onClick:a[1]||=e=>r(`exportJson`)},` 导出 JSON `,8,Rr),t(w(`select`,{"onUpdate:modelValue":a[2]||=e=>i.value=e,class:`h-9 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-2.5 text-sm text-(--dashboard-text) outline-none transition focus:border-(--dashboard-accent)`},[...a[3]||=[x(`<option value="capturedAt"> 按时间 </option><option value="total"> 按体积 </option><option value="compressed"> 按压缩后 </option><option value="modules"> 按模块数 </option><option value="duplicates"> 按复用模块 </option>`,5)]],512),[[O,i.value]])])]))}}),Br={class:`rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-3`},Vr={class:`flex items-start justify-between gap-3`},Hr={class:`min-w-0`},Ur={class:`mt-2 text-sm font-semibold text-(--dashboard-text)`},Wr={class:`mt-1 text-xs leading-5 text-(--dashboard-text-soft)`},Gr={class:`mt-3 grid grid-cols-2 gap-2`},Kr=n({__name:`HistoryTrendPanel`,props:{trend:{}},setup(e){function t(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)`}return(n,i)=>(E(),L(`section`,Br,[w(`div`,Vr,[w(`div`,Hr,[w(`span`,{class:j([`inline-flex rounded-full border px-2 py-0.5 text-[11px] font-medium`,t(e.trend.status)])},_(e.trend.label),3),w(`p`,Ur,_(e.trend.headline),1),w(`p`,Wr,_(e.trend.description),1)])]),w(`div`,Gr,[(E(!0),L(A,null,l(e.trend.metrics,e=>(E(),y(K,r({key:e.label},{ref_for:!0},e),null,16))),128))])]))}}),qr={class:`flex gap-1.5`},Jr=[`disabled`],Yr={class:`mt-3 grid min-h-0 grid-rows-[auto_auto_auto_minmax(0,1fr)] gap-2 overflow-hidden`},Xr={class:`rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 py-2`},Zr={class:`flex items-center justify-between gap-3`},Qr={class:`text-sm font-medium text-(--dashboard-accent)`},$r={key:0,class:`mt-3 grid grid-cols-2 gap-2`},ei={class:`text-[11px] text-(--dashboard-text-soft)`},ti={class:`mt-1 text-sm font-semibold text-(--dashboard-text)`},ni={class:`grid gap-2`},ri={key:1,class:`grid min-h-0 gap-1.5 overflow-y-auto pr-1`},ii=[`onClick`],ai={class:`flex items-start justify-between gap-3`},oi={class:`min-w-0`},si={class:`truncate text-sm font-medium text-(--dashboard-text)`},ci={class:`mt-0.5 truncate text-xs text-(--dashboard-text-soft)`},li={class:`text-right`},ui={class:`whitespace-nowrap text-sm font-medium text-(--dashboard-accent)`},di={class:`mt-0.5 whitespace-nowrap text-xs text-(--dashboard-text-soft)`},fi=n({__name:`HistoryBaselinePanel`,props:{snapshots:{},baselineSnapshotId:{},comparisonMode:{}},emits:[`setBaseline`,`setComparisonMode`],setup(e,{emit:n}){let r=e,i=n,{actionStatus:a,activeComparisonLabel:o,baselineSummaryItems:s,copyBaselineReport:u,exportFilteredSnapshots:d,filteredSnapshots:f,formatSnapshotDate:m,historyTrend:g,snapshotQuery:v,snapshotSortMode:b}=Mr(r);return(n,r)=>(E(),L(`section`,{class:j([c(z)({padding:`md`}),`grid h-full min-h-0 grid-rows-[auto_minmax(0,1fr)] overflow-hidden`])},[p(X,{"icon-name":`metric-history`,title:`历史基线`},{meta:R(()=>[w(`div`,qr,[w(`button`,{type:`button`,class:j(c(U)({kind:`badge`,active:e.comparisonMode===`previous`})),onClick:r[0]||=e=>i(`setComparisonMode`,`previous`)},` 上次 `,2),w(`button`,{type:`button`,class:j(c(U)({kind:`badge`,active:e.comparisonMode===`baseline`})),disabled:!e.baselineSnapshotId,onClick:r[1]||=e=>i(`setComparisonMode`,`baseline`)},` Baseline `,10,Jr)])]),_:1}),w(`div`,Yr,[w(`div`,Xr,[w(`div`,Zr,[r[4]||=w(`p`,{class:`text-xs text-(--dashboard-text-soft)`},` 当前对比 `,-1),w(`p`,Qr,_(c(o)),1)]),c(s).length?(E(),L(`div`,$r,[(E(!0),L(A,null,l(c(s),e=>(E(),L(`div`,{key:e.label,class:`rounded-md border border-(--dashboard-border) bg-(--dashboard-panel) px-2.5 py-2`},[w(`p`,ei,_(e.label),1),w(`p`,ti,_(e.value),1)]))),128))])):F(``,!0)]),p(Kr,{trend:c(g)},null,8,[`trend`]),w(`div`,ni,[p(zr,{modelValue:c(b),"onUpdate:modelValue":r[2]||=e=>h(b)?b.value=e:null,"action-status":c(a),disabled:c(f).length===0,"filtered-count":c(f).length,"total-count":e.snapshots.length,onCopy:c(u),onExportJson:c(d)},null,8,[`modelValue`,`action-status`,`disabled`,`filtered-count`,`total-count`,`onCopy`,`onExportJson`]),t(w(`input`,{"onUpdate:modelValue":r[3]||=e=>h(v)?v.value=e:null,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),[[P,c(v)]])]),c(f).length===0?(E(),y(G,{key:0,compact:``},{default:R(()=>[...r[5]||=[I(` 暂无历史快照。 `,-1)]]),_:1})):(E(),L(`ol`,ri,[(E(!0),L(A,null,l(c(f),t=>(E(),L(`li`,{key:t.id,class:`list-none`},[w(`button`,{type:`button`,class:j([`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)`,t.id===e.baselineSnapshotId?`border-(--dashboard-accent) bg-(--dashboard-accent-soft)`:void 0]),onClick:e=>i(`setBaseline`,t.id)},[w(`div`,ai,[w(`div`,oi,[w(`p`,si,_(c(m)(t)),1),w(`p`,ci,_(t.packageCount)+` 包 · `+_(t.moduleCount)+` 模块 · 复用 `+_(t.duplicateCount),1)]),w(`div`,li,[w(`p`,ui,_(c(V)(t.totalBytes)),1),w(`p`,di,_(t.id===e.baselineSnapshotId?`baseline`:c(V)(t.compressedBytes)),1)])])],10,ii)]))),128))]))])],2))}}),pi=n({__name:`AnalyzeDiagnosticsSection`,props:{actionItems:{},activeWorkQueueItemId:{},baselineSnapshotId:{},comparisonMode:{},historySnapshots:{},layoutItems:{},queuedActionKeys:{},selectedActionKey:{},workQueueItems:{}},emits:[`addActionToQueue`,`clearCompletedWorkQueue`,`copyPr`,`copyWorkQueue`,`removeWorkQueueItem`,`selectAction`,`selectWorkQueueItem`,`setBaseline`,`setComparisonMode`,`toggleWorkQueueItem`],setup(e,{emit:t}){let n=t;return(t,r)=>(E(),y(q,{"grid-class":`grid h-full min-h-0 gap-2 overflow-y-auto pr-1 xl:grid-cols-[minmax(0,1fr)_minmax(20rem,0.38fr)_minmax(20rem,0.38fr)] xl:overflow-hidden xl:pr-0`,items:e.layoutItems,"storage-key":`weapp-vite:dashboard:analyze-layout:diagnostics`},{actions:R(()=>[p(or,{actions:e.actionItems,"active-key":e.selectedActionKey,"queued-action-keys":e.queuedActionKeys,onAddToQueue:r[0]||=e=>n(`addActionToQueue`,e),onCopyReport:r[1]||=e=>n(`copyPr`),onSelect:r[2]||=e=>n(`selectAction`,e)},null,8,[`actions`,`active-key`,`queued-action-keys`])]),"work-queue":R(()=>[p(xr,{items:e.workQueueItems,"active-id":e.activeWorkQueueItemId,onClearCompleted:r[3]||=e=>n(`clearCompletedWorkQueue`),onCopy:r[4]||=e=>n(`copyWorkQueue`),onRemove:r[5]||=e=>n(`removeWorkQueueItem`,e),onSelect:r[6]||=e=>n(`selectWorkQueueItem`,e),onToggle:r[7]||=e=>n(`toggleWorkQueueItem`,e)},null,8,[`items`,`active-id`])]),history:R(()=>[p(fi,{snapshots:e.historySnapshots,"baseline-snapshot-id":e.baselineSnapshotId,"comparison-mode":e.comparisonMode,onSetBaseline:r[8]||=e=>n(`setBaseline`,e),onSetComparisonMode:r[9]||=e=>n(`setComparisonMode`,e)},null,8,[`snapshots`,`baseline-snapshot-id`,`comparison-mode`])]),_:1},8,[`items`]))}});function mi(e){return Math.max(0,Math.min(100,Math.round(e)))}function hi(e){return e===`blocked`?`Blocked`:e===`review`?`Review`:`Ready`}function gi(e){return e===`blocked`?`发布前需要先处理阻断项`:e===`review`?`建议评审后再发布`:`当前分析未发现阻断项`}function _i(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},当前 ${V(e.largestPackage.totalBytes)}。`),t.length===0&&e.largestFile&&t.push(`持续关注最大文件 ${e.largestFile.file},当前 ${V(e.largestFile.size)}。`),t}function vi(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 yi(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=mi(100-t.length*28-n.length*12),s=[{label:`阻断项`,value:t.length},{label:`建议项`,value:n.length},{label:`最大包`,value:i?V(i.totalBytes):`—`},{label:`最大文件`,value:r?V(r.size):`—`}],c={status:a,label:hi(a),score:o,headline:gi(a),description:`${e.actionItems.length} 个候选事项 · ${e.packageInsights.length} 个包 · ${e.largestFiles.length} 个文件样本`,metrics:s,recommendations:_i({criticalActions:t,warningActions:n,largestFile:r,largestPackage:i})};return{...c,report:vi(c)}}function bi(e){let t=T(()=>e.actionItems.slice(0,4)),n=T(()=>e.largestFiles.slice(0,5)),r=T(()=>e.packageInsights.reduce((e,t)=>e+t.totalBytes,0)),i=T(()=>yi({actionItems:e.actionItems,largestFiles:e.largestFiles,packageInsights:e.packageInsights})),{actionStatus:a,setActionStatus:o}=Dr(),s=T(()=>e.packageInsights.slice(0,5).map(e=>{let t=r.value>0?e.totalBytes/r.value*100:0;return{...e,typeLabel:H(e.type),sizeLabel:V(e.totalBytes),compressedLabel:`${e.compressedSizeSource===`real`?`Brotli`:`估算`} ${V(e.compressedBytes)}`,sharePercent:t,shareStyle:{width:`${Math.max(t,2).toFixed(1)}%`}}}));async function c(){try{await W(i.value.report),o(`已复制`)}catch{o(`复制失败`)}}return{copyReleaseGateReport:c,gateCopyStatus:a,getToneClassName:Nn,getToneLabel:Pn,packageOverviewItems:s,releaseGate:i,visibleActions:t,visibleLargestFiles:n}}var xi={class:`min-w-0`},Si={key:0,class:`mt-1 text-xs font-medium text-(--dashboard-accent)`},Ci={key:0,class:`mt-3 flex flex-wrap gap-1.5`},wi=n({__name:`DashboardMetricGrid`,props:{cards:{},packageTypeSummary:{},compact:{type:Boolean}},setup(e){let t=e;function n(e){return[z({padding:t.compact?`sm`:`md`}),`min-w-0`,e.wide?`xl:col-span-2`:`xl:col-span-1`]}let r=T(()=>t.cards.map(e=>({...e,packageTypeTags:e.label===`总产物体积`?t.packageTypeSummary.map(e=>({label:H(e.label),value:String(e.value)})):[]})));return(t,i)=>(E(),L(`section`,{class:j(e.compact?`grid min-h-0 items-start gap-2 md:grid-cols-3 xl:grid-cols-6`:`grid items-start gap-2.5 md:grid-cols-2 xl:grid-cols-6`)},[(E(!0),L(A,null,l(r.value,t=>(E(),L(`article`,{key:t.label,class:j(n(t))},[w(`div`,{class:j(e.compact?`relative h-full min-w-0 pr-8`:`flex h-full min-w-0 items-start justify-between gap-2`)},[w(`div`,xi,[w(`p`,{class:j(e.compact?`whitespace-nowrap text-[11px] leading-4 text-(--dashboard-text-soft)`:`text-[11px] uppercase tracking-[0.22em] text-(--dashboard-text-soft)`)},_(t.label),3),w(`p`,{class:j(e.compact?`mt-1 text-xl font-semibold leading-6`:`mt-2 text-2xl font-semibold md:text-[1.65rem]`)},_(t.value),3),t.detail?(E(),L(`p`,Si,_(t.detail),1)):F(``,!0)]),w(`span`,{class:j([c(ce)({size:e.compact?`sm`:`lg`}),e.compact?`absolute right-0 top-0`:void 0])},[w(`span`,{class:j(e.compact?`h-4.5 w-4.5`:`h-5 w-5`)},[p(B,{name:t.iconName},null,8,[`name`])],2)],2)],2),t.packageTypeTags.length>0&&!e.compact?(E(),L(`div`,Ci,[(E(!0),L(A,null,l(t.packageTypeTags,e=>(E(),L(`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)`},_(e.label)+` `+_(e.value),1))),128))])):F(``,!0)],2))),128))],2))}}),Ti={class:`rounded-lg border border-(--dashboard-border) bg-(--dashboard-panel) p-4 shadow-(--dashboard-shadow)`},Ei={class:`flex items-center gap-2`},Di={key:0,class:`text-xs font-medium text-(--dashboard-accent)`},Oi={class:`h-3.5 w-3.5`},ki={class:`mt-3 grid gap-3 xl:grid-cols-[minmax(0,0.7fr)_minmax(0,1fr)]`},Ai={class:`rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-3`},ji={class:`flex items-start justify-between gap-3`},Mi={class:`mt-3 text-lg font-semibold text-(--dashboard-text)`},Ni={class:`mt-1 text-xs leading-5 text-(--dashboard-text-soft)`},Pi={class:`shrink-0 text-right`},Fi={class:`mt-1 text-3xl font-semibold text-(--dashboard-accent)`},Ii={class:`grid gap-3 md:grid-cols-[minmax(0,0.9fr)_minmax(0,1fr)]`},Li={class:`grid grid-cols-2 gap-2`},Ri={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)`},zi={key:0},Bi=n({__name:`ReleaseGatePanel`,props:{gate:{},copyStatus:{}},emits:[`copy`],setup(e,{emit:t}){let n=t;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`}return(t,a)=>(E(),L(`section`,Ti,[p(X,{"icon-name":`metric-quality`,title:`发布门禁`},{meta:R(()=>[w(`div`,Ei,[e.copyStatus?(E(),L(`span`,Di,_(e.copyStatus),1)):F(``,!0),w(`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:a[0]||=e=>n(`copy`)},[w(`span`,Oi,[p(B,{name:`metric-copy`})]),a[1]||=I(` 复制门禁 `,-1)])])]),_:1}),w(`div`,ki,[w(`div`,Ai,[w(`div`,ji,[w(`div`,null,[w(`span`,{class:j([`inline-flex rounded-full border px-2.5 py-1 text-[11px] font-medium uppercase tracking-[0.16em]`,i(e.gate.status)])},_(e.gate.label),3),w(`p`,Mi,_(e.gate.headline),1),w(`p`,Ni,_(e.gate.description),1)]),w(`div`,Pi,[a[2]||=w(`p`,{class:`text-[11px] uppercase tracking-[0.18em] text-(--dashboard-text-soft)`},` score `,-1),w(`p`,Fi,_(e.gate.score),1)])])]),w(`div`,Ii,[w(`div`,Li,[(E(!0),L(A,null,l(e.gate.metrics,e=>(E(),y(K,r({key:e.label},{ref_for:!0},e),null,16))),128))]),w(`ol`,Ri,[(E(!0),L(A,null,l(e.gate.recommendations,e=>(E(),L(`li`,{key:e,class:`line-clamp-2`},_(e),1))),128)),e.gate.recommendations.length===0?(E(),L(`li`,zi,` 当前没有需要立即处理的事项。 `)):F(``,!0)])])])]))}}),Vi={class:`grid h-full min-h-0 grid-rows-[auto_auto_minmax(0,1fr)] gap-2 overflow-hidden`},Hi={class:`grid min-h-0 gap-2 overflow-hidden xl:grid-cols-[minmax(0,0.95fr)_minmax(0,0.85fr)_minmax(0,0.9fr)]`},Ui={class:`h-3.5 w-3.5`},Wi={class:`mt-3 min-h-0 flex-1 overflow-hidden`},Gi={key:1,class:`grid h-full min-h-0 gap-2 overflow-y-auto pr-1`},Ki=[`onClick`],qi={class:`flex min-w-0 items-start justify-between gap-3`},Ji={class:`min-w-0`},Yi={class:`flex min-w-0 items-center gap-2`},Xi={class:`truncate text-sm font-medium text-(--dashboard-text)`},Zi={class:`mt-1 truncate text-xs text-(--dashboard-text-soft)`},Qi={key:0,class:`shrink-0 whitespace-nowrap text-sm font-semibold text-(--dashboard-accent)`},$i={class:`mt-3 grid min-h-0 gap-2 overflow-y-auto pr-1`},ea=[`onClick`],ta={class:`grid min-w-0 grid-cols-[minmax(0,1fr)_auto] items-start gap-3`},na={class:`min-w-0`},ra={class:`truncate font-mono text-xs font-semibold text-(--dashboard-text)`},ia={class:`mt-1 truncate text-xs text-(--dashboard-text-soft)`},aa={class:`shrink-0 text-right`},oa={class:`text-sm font-semibold leading-5 text-(--dashboard-accent)`},sa={class:`text-[11px] leading-4 text-(--dashboard-text-soft)`},ca={class:`mt-3 grid min-h-0 gap-2 overflow-y-auto pr-1`},la=[`onClick`],ua={class:`flex items-start justify-between gap-3`},da={class:`min-w-0`},fa={class:`truncate text-sm font-medium text-(--dashboard-text)`},pa={class:`mt-1 text-xs text-(--dashboard-text-soft)`},ma={class:`shrink-0 text-right`},ha={class:`text-sm font-semibold text-(--dashboard-text)`},ga={class:`text-[11px] text-(--dashboard-text-soft)`},_a={class:`mt-2 h-1.5 overflow-hidden rounded-full bg-(--dashboard-accent-soft)`},va=n({__name:`AnalyzeOverviewPanel`,props:{actionItems:{},cards:{},largestFiles:{},packageInsights:{},packageTypeSummary:{}},emits:[`copyReport`,`selectAction`,`selectFile`,`selectPackage`],setup(e,{emit:t}){let n=e,r=t,{copyReleaseGateReport:i,gateCopyStatus:a,getToneClassName:o,getToneLabel:s,packageOverviewItems:u,releaseGate:d,visibleActions:f,visibleLargestFiles:m}=bi(n);return(t,n)=>(E(),L(`section`,Vi,[p(wi,{compact:``,cards:e.cards,"package-type-summary":e.packageTypeSummary},null,8,[`cards`,`package-type-summary`]),p(Bi,{gate:c(d),"copy-status":c(a),onCopy:c(i)},null,8,[`gate`,`copy-status`,`onCopy`]),w(`div`,Hi,[w(`section`,{class:j([c(z)({padding:`md`}),`min-h-0 overflow-hidden`])},[p(X,{"icon-name":`metric-health`,title:`处理队列`},{meta:R(()=>[w(`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:n[0]||=e=>r(`copyReport`)},[w(`span`,Ui,[p(B,{name:`metric-copy`})]),n[1]||=I(` 复制 PR `,-1)])]),_:1}),w(`div`,Wi,[c(f).length===0?(E(),y(G,{key:0,compact:``},{default:R(()=>[...n[2]||=[I(` 当前没有需要立即处理的事项。 `,-1)]]),_:1})):(E(),L(`ol`,Gi,[(E(!0),L(A,null,l(c(f),e=>(E(),L(`li`,{key:e.key,class:`list-none`},[w(`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(`selectAction`,e)},[w(`div`,qi,[w(`div`,Ji,[w(`div`,Yi,[w(`span`,{class:j(c(o)(e.tone))},_(c(s)(e.tone)),3),w(`p`,Xi,_(e.title),1)]),w(`p`,Zi,_(e.meta),1)]),e.value?(E(),L(`span`,Qi,_(e.value),1)):F(``,!0)])],8,Ki)]))),128))]))])],2),w(`section`,{class:j([c(z)({padding:`md`}),`min-h-0 overflow-hidden`])},[p(X,{"icon-name":`top-files`,title:`Top Files`}),w(`ol`,$i,[(E(!0),L(A,null,l(c(m),e=>(E(),L(`li`,{key:`${e.packageId}:${e.file}`,class:`list-none`},[w(`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(`selectFile`,e)},[w(`div`,ta,[w(`div`,na,[w(`p`,ra,_(e.file),1),w(`p`,ia,_(e.packageLabel)+` · `+_(c(H)(e.packageType))+` · `+_(e.type)+` · `+_(e.moduleCount)+` 模块 `,1)]),w(`div`,aa,[w(`p`,oa,_(c(V)(e.size)),1),w(`p`,sa,_(c(V)(e.compressedSize)),1)])])],8,ea)]))),128))])],2),w(`section`,{class:j([c(z)({padding:`md`}),`min-h-0 overflow-hidden`])},[p(X,{"icon-name":`tab-packages`,title:`包体分布`}),w(`ol`,ca,[(E(!0),L(A,null,l(c(u),e=>(E(),L(`li`,{key:e.id,class:`list-none`},[w(`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(`selectPackage`,e)},[w(`div`,ua,[w(`div`,da,[w(`p`,fa,_(e.label),1),w(`p`,pa,_(e.typeLabel)+` · `+_(e.fileCount)+` 产物 · `+_(e.moduleCount)+` 模块 `,1)]),w(`div`,ma,[w(`p`,ha,_(e.sizeLabel),1),w(`p`,ga,_(e.compressedLabel),1)])]),w(`div`,_a,[w(`div`,{class:`h-full rounded-full bg-(--dashboard-accent)`,style:v(e.shareStyle)},null,4)])],8,la)]))),128))])],2)])]))}});function ya(e){return e===`high`?`高`:e===`medium`?`中`:`低`}function ba(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} 个包复用 · 单份 ${V(e.bytes)} · ${e.advice}`,impactBytes:e.estimatedSavingBytes,effort:t,priority:Math.round(e.estimatedSavingBytes*n+e.packageCount*128),action:t===`high`?`先确认独立分包隔离要求,再评估公共入口。`:`优先抽到共享入口或调整引用边界。`}}function xa(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} · +${V(e.deltaBytes)}`,impactBytes:e.deltaBytes,effort:t,priority:Math.round(e.deltaBytes*n),action:e.advice}}function Sa(e){let t=e.moduleCount>12?`medium`:`low`;return{id:`file:${e.packageId}:${e.file}`,title:`检查大文件边界 ${e.file}`,detail:`${e.packageLabel} · ${V(e.size)} · ${e.moduleCount} 个模块`,impactBytes:e.size,effort:t,priority:Math.round(e.size*.42+e.moduleCount*96),action:e.isEntry?`确认入口依赖是否可懒加载或拆到分包。`:`检查静态资源和模块聚合边界。`}}function Ca(e){return[`# dashboard 模块优化计划`,``,`计划项:${e.items.length}`,`估算影响:${V(e.totalImpactBytes)}`,`低成本项:${e.quickWinCount}`,``,`| 优先级 | 事项 | 影响 | 成本 | 建议 |`,`| ---: | --- | ---: | --- | --- |`,...e.items.map(e=>`| ${e.priority} | ${e.title.replaceAll(`|`,`\\|`)} | ${V(e.impactBytes)} | ${ya(e.effort)} | ${e.action.replaceAll(`|`,`\\|`)} |`),``].join(`
10
+ `)}function wa(e){let t=e.duplicateModules.filter(e=>e.estimatedSavingBytes>0).slice(0,8).map(ba),n=e.incrementAttribution.filter(e=>e.deltaBytes>0).slice(0,6).map(xa),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(Sa),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:Ca(o)}}function Ta(e){return{title:e.source,meta:`${e.packageCount} 个包 · 单份 ${V(e.bytes)} · 可节省 ${V(e.estimatedSavingBytes)} · ${e.advice}`}}function Ea(e){return{title:e.sourceCategory,meta:`${e.count} 个模块`,value:V(e.bytes)}}function Da(e){return{title:e.label,meta:`${e.category} · ${e.packageLabel} · ${e.advice}`,value:`+${V(e.deltaBytes)}`}}function Oa(e){return{title:e.category,meta:`${e.count} 项增长`,value:`+${V(e.deltaBytes)}`}}function ka(e){return{title:e.file,meta:`${e.packageLabel} · ${pe(e.from)} · ${e.moduleCount} 模块`}}function Aa(e){return e.replaceAll(`|`,`\\|`).replaceAll(`
11
+ `,` `)}function ja(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 Ma(e){let t=m(``),n=m(`all`),r=m(`saving`),{actionStatus:i,setActionStatus:a}=Dr(),o=T(()=>{let t=new Set;for(let n of e.duplicateModules)t.add(n.sourceType);return[...t].sort((e,t)=>e.localeCompare(t))}),s=T(()=>{let i=t.value.trim().toLowerCase();return ja(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)):!0),r.value)}),c=T(()=>s.value.map(e=>({key:e.id,packages:e.packages,...Ta(e)}))),l=T(()=>e.moduleSourceSummary.map(e=>({key:`${e.sourceType}:${e.sourceCategory}`,...Ea(e)}))),u=T(()=>e.incrementAttribution.slice(0,8).map(e=>({key:e.key,...Da(e)}))),d=T(()=>e.incrementSummary.slice(0,6).map(e=>({key:e.category,...Oa(e)}))),f=T(()=>e.visibleLargestFiles.slice(0,6).map(e=>({key:`${e.packageId}:${e.file}`,...ka(e)}))),p=T(()=>wa({duplicateModules:e.duplicateModules,incrementAttribution:e.incrementAttribution,largestFiles:e.visibleLargestFiles})),h=T(()=>[`# dashboard 重复模块`,``,`模块数量:${s.value.length} / ${e.duplicateModules.length}`,``,`| 模块 | 来源 | 包数量 | 单份体积 | 可节省 | 建议 | 涉及包 |`,`| --- | --- | ---: | ---: | ---: | --- | --- |`,...s.value.map(e=>[e.source,e.sourceType,String(e.packageCount),V(e.bytes),V(e.estimatedSavingBytes),e.advice,e.packages.map(e=>e.packageLabel).join(`, `)].map(Aa).join(` | `)).map(e=>`| ${e} |`),``].join(`
12
+ `));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:u,incrementSummaryItems:d,largestFileSampleItems:f,moduleOptimizationPlan:p,moduleSourceItems:l}}var Na={class:`rounded-xl border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-3.5`},Pa={class:`flex flex-wrap items-start justify-between gap-3`},Fa={class:`min-w-0`},Ia={class:`mt-1 text-xs text-(--dashboard-text-soft)`},La={key:0,class:`font-medium text-(--dashboard-accent)`},Ra=n({__name:`AppSummaryValueCard`,props:{title:{},meta:{},value:{},breakTitle:{type:Boolean}},setup(e){return(t,n)=>(E(),L(`article`,Na,[w(`div`,Pa,[w(`div`,Fa,[w(`p`,{class:j([`font-medium text-(--dashboard-text)`,e.breakTitle?`break-all`:void 0])},_(e.title),3),w(`p`,Ia,_(e.meta),1)]),e.value?(E(),L(`p`,La,_(e.value),1)):F(``,!0)]),d(t.$slots,`default`)]))}}),za={class:`flex flex-wrap items-center gap-2`},Ba={class:`text-xs font-medium text-(--dashboard-text-soft)`},Va={key:0,class:`text-xs font-medium text-(--dashboard-accent)`},Ha=[`disabled`],Ua=[`disabled`],Wa=[`value`],Ga=n({__name:`DuplicateModulesToolbar`,props:i({filteredCount:{},totalCount:{},sourceOptions:{},actionStatus:{},disabled:{type:Boolean}},{query:{required:!0},queryModifiers:{},sourceFilter:{required:!0},sourceFilterModifiers:{},sortMode:{required:!0},sortModeModifiers:{}}),emits:i([`copy`,`exportJson`],[`update:query`,`update:sourceFilter`,`update:sortMode`]),setup(e,{emit:n}){let r=n,i=s(e,`query`),a=s(e,`sourceFilter`),o=s(e,`sortMode`);return(n,s)=>(E(),L(`div`,za,[w(`span`,Ba,` 匹配 `+_(e.filteredCount)+` / `+_(e.totalCount),1),e.actionStatus?(E(),L(`span`,Va,_(e.actionStatus),1)):F(``,!0),w(`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:e.disabled,onClick:s[0]||=e=>r(`copy`)},` 复制重复模块 `,8,Ha),w(`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:e.disabled,onClick:s[1]||=e=>r(`exportJson`)},` 导出 JSON `,8,Ua),t(w(`input`,{"onUpdate:modelValue":s[2]||=e=>i.value=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),[[P,i.value]]),t(w(`select`,{"onUpdate:modelValue":s[3]||=e=>a.value=e,class:`h-9 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-2.5 text-sm text-(--dashboard-text) outline-none transition focus:border-(--dashboard-accent)`},[s[5]||=w(`option`,{value:`all`},` 全部来源 `,-1),(E(!0),L(A,null,l(e.sourceOptions,e=>(E(),L(`option`,{key:e,value:e},_(e),9,Wa))),128))],512),[[O,a.value]]),t(w(`select`,{"onUpdate:modelValue":s[4]||=e=>o.value=e,class:`h-9 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-2.5 text-sm text-(--dashboard-text) outline-none transition focus:border-(--dashboard-accent)`},[...s[6]||=[w(`option`,{value:`saving`},` 按可节省 `,-1),w(`option`,{value:`packages`},` 按包数量 `,-1),w(`option`,{value:`size`},` 按单份体积 `,-1),w(`option`,{value:`source`},` 按路径 `,-1)]],512),[[O,o.value]])]))}}),Ka={class:`grid min-h-0 gap-3 overflow-hidden xl:grid-rows-[auto_minmax(0,1fr)_minmax(0,0.8fr)]`},qa={class:`flex items-center gap-2`},Ja={key:0,class:`text-xs font-medium text-(--dashboard-accent)`},Ya=[`disabled`],Xa={class:`mt-3 grid grid-cols-3 gap-2`},Za={key:0,class:`mt-3 grid max-h-54 gap-2 overflow-y-auto pr-1`},Qa={class:`flex items-start justify-between gap-3`},$a={class:`min-w-0 text-sm font-medium text-(--dashboard-text)`},eo={class:`mt-1 line-clamp-2 text-xs leading-5 text-(--dashboard-text-muted)`},to={class:`mt-2 text-xs text-(--dashboard-text-soft)`},no={key:0,class:`mt-4 grid h-[calc(100%-3.5rem)] min-h-0 gap-3 overflow-hidden lg:grid-cols-[minmax(0,0.78fr)_minmax(0,1fr)]`},ro={class:`space-y-2 overflow-y-auto pr-1`},io={class:`space-y-2 overflow-y-auto pr-1 text-sm text-(--dashboard-text-muted)`},ao={class:`mt-4 grid h-[calc(100%-3.5rem)] min-h-0 gap-3 overflow-hidden lg:grid-cols-2`},oo={class:`space-y-2.5 overflow-y-auto pr-1`},so={class:`space-y-2.5 overflow-y-auto pr-1 text-sm text-(--dashboard-text-muted)`},co=n({__name:`ModuleInsightsSidebar`,props:{incrementItems:{},incrementSummaryItems:{},moduleSourceItems:{},largestFileSampleItems:{},optimizationPlan:{}},setup(e){let t=e,n=m(``),r=null;function i(e){return e===`high`?`高成本`:e===`medium`?`中成本`:`低成本`}function a(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 o(e){n.value=e,r&&clearTimeout(r),r=setTimeout(()=>{n.value=``,r=null},1800)}async function s(){try{await W(t.optimizationPlan.report),o(`计划已复制`)}catch{o(`复制失败`)}}return D(()=>{r&&clearTimeout(r)}),(t,r)=>(E(),L(`div`,Ka,[w(`section`,{class:j([c(z)({padding:`md`}),`overflow-hidden`])},[p(X,{"icon-name":`metric-quality`,title:`优化计划`},{meta:R(()=>[w(`div`,qa,[n.value?(E(),L(`span`,Ja,_(n.value),1)):F(``,!0),w(`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:e.optimizationPlan.items.length===0,onClick:s},` 复制计划 `,8,Ya)])]),_:1}),w(`div`,Xa,[p(K,{label:`计划项`,value:e.optimizationPlan.items.length},null,8,[`value`]),p(K,{label:`估算影响`,value:c(V)(e.optimizationPlan.totalImpactBytes)},null,8,[`value`]),p(K,{label:`低成本项`,value:e.optimizationPlan.quickWinCount},null,8,[`value`])]),e.optimizationPlan.items.length?(E(),L(`div`,Za,[(E(!0),L(A,null,l(e.optimizationPlan.items,e=>(E(),L(`article`,{key:e.id,class:`rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-3`},[w(`div`,Qa,[w(`p`,$a,_(e.title),1),w(`span`,{class:j([`shrink-0 rounded-full border px-2 py-0.5 text-[11px]`,a(e.effort)])},_(i(e.effort)),3)]),w(`p`,eo,_(e.detail),1),w(`p`,to,_(e.action)+` · 影响 `+_(c(V)(e.impactBytes)),1)]))),128))])):(E(),y(G,{key:1,class:`mt-3`},{default:R(()=>[...r[0]||=[I(` 当前没有需要生成的模块优化计划。 `,-1)]]),_:1}))],2),w(`section`,{class:j([c(z)({padding:`md`}),`min-h-0 overflow-hidden`])},[p(X,{"icon-name":`metric-time`,title:`增量归因`}),e.incrementItems.length?(E(),L(`div`,no,[w(`div`,ro,[(E(!0),L(A,null,l(e.incrementSummaryItems,e=>(E(),y(Ra,{key:e.key,meta:e.meta,title:e.title,value:e.value},null,8,[`meta`,`title`,`value`]))),128))]),w(`ul`,io,[(E(!0),L(A,null,l(e.incrementItems,e=>(E(),y(Ot,{key:e.key,meta:e.meta,"mono-title":``,title:e.title,value:e.value},null,8,[`meta`,`title`,`value`]))),128))])])):(E(),y(G,{key:1,class:`mt-4`},{default:R(()=>[...r[1]||=[I(` 暂无可对比的正向增量。 `,-1)]]),_:1}))],2),w(`section`,{class:j([c(z)({padding:`md`}),`min-h-0 overflow-hidden`])},[p(X,{"icon-name":`module-sources`,title:`模块来源`}),w(`div`,ao,[w(`div`,oo,[(E(!0),L(A,null,l(e.moduleSourceItems,e=>(E(),y(Ra,{key:e.key,meta:e.meta,title:e.title,value:e.value},null,8,[`meta`,`title`,`value`]))),128))]),w(`ul`,so,[(E(!0),L(A,null,l(e.largestFileSampleItems,e=>(E(),y(Ot,{key:e.key,meta:e.meta,"mono-title":``,title:e.title,value:e.value},null,8,[`meta`,`title`,`value`]))),128))])])],2)]))}}),lo={class:`grid h-full min-h-0 gap-3 overflow-hidden xl:grid-cols-[minmax(0,1.24fr)_minmax(0,0.76fr)]`},uo={class:`flex flex-wrap items-start justify-between gap-3`},fo={key:0,class:`mt-4 max-h-[calc(100%-5.75rem)] space-y-2.5 overflow-y-auto pr-1`},po={class:`mt-3 space-y-1.5 text-xs text-(--dashboard-text-muted)`},mo={class:`font-medium text-(--dashboard-text)`},ho=n({__name:`ModulesPanel`,props:{duplicateModules:{},moduleSourceSummary:{},incrementAttribution:{},incrementSummary:{},visibleLargestFiles:{}},setup(e){let{actionStatus:t,copyDuplicateModulesReport:n,duplicateModuleItems:r,duplicateQuery:i,duplicateSortMode:a,duplicateSourceFilter:o,duplicateSourceOptions:s,exportDuplicateModulesJson:u,incrementItems:d,incrementSummaryItems:f,largestFileSampleItems:m,moduleOptimizationPlan:g,moduleSourceItems:v}=Ma(e);return(b,x)=>(E(),L(`section`,lo,[w(`div`,{class:j([c(z)({padding:`md`}),`min-h-0 overflow-hidden`])},[w(`div`,uo,[p(X,{"icon-name":`duplicate-modules`,title:`重复模块`,description:`${e.duplicateModules.length} 个重复模块样本`},null,8,[`description`]),p(Ga,{query:c(i),"onUpdate:query":x[0]||=e=>h(i)?i.value=e:null,"sort-mode":c(a),"onUpdate:sortMode":x[1]||=e=>h(a)?a.value=e:null,"source-filter":c(o),"onUpdate:sourceFilter":x[2]||=e=>h(o)?o.value=e:null,"action-status":c(t),disabled:c(r).length===0,"filtered-count":c(r).length,"source-options":c(s),"total-count":e.duplicateModules.length,onCopy:c(n),onExportJson:c(u)},null,8,[`query`,`sort-mode`,`source-filter`,`action-status`,`disabled`,`filtered-count`,`source-options`,`total-count`,`onCopy`,`onExportJson`])]),c(r).length?(E(),L(`div`,fo,[(E(!0),L(A,null,l(c(r),e=>(E(),y(Ra,{key:e.key,"break-title":``,meta:e.meta,title:e.title,value:e.value},{default:R(()=>[w(`ul`,po,[(E(!0),L(A,null,l(e.packages,t=>(E(),L(`li`,{key:`${e.key}:${t.packageId}`},[w(`span`,mo,_(t.packageLabel),1),x[3]||=w(`span`,{class:`text-(--dashboard-text-soft)`},` · `,-1),w(`span`,null,_(t.files.join(`、`)),1)]))),128))])]),_:2},1032,[`meta`,`title`,`value`]))),128))])):(E(),y(G,{key:1,class:`mt-4`},{default:R(()=>[...x[4]||=[I(` 当前构建未检测到跨包重复模块。 `,-1)]]),_:1}))],2),p(co,{"increment-items":c(d),"increment-summary-items":c(f),"largest-file-sample-items":c(m),"module-source-items":c(v),"optimization-plan":c(g)},null,8,[`increment-items`,`increment-summary-items`,`largest-file-sample-items`,`module-source-items`,`optimization-plan`])]))}});function go(e){return Math.max(0,Math.min(100,Math.round(e)))}function _o(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 vo(e){return e?e.status===`critical`?32:18:0}function yo(e){return e.moduleCount<=0||e.duplicateModuleCount<=0?0:Math.min(18,e.duplicateModuleCount/e.moduleCount*60)}function bo(e){return Math.min(10,Math.max(0,e.entryFileCount-1)*3)}function xo(e){return e<70?`risk`:e<86?`watch`:`good`}function So(e){return e===`risk`?`高风险`:e===`watch`?`需关注`:`健康`}function Co(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?`较上次增长 ${V(e.sizeDeltaBytes)}`:e.duplicateModuleCount>0?`${e.duplicateModuleCount} 个重复模块`:`未发现主要风险`}function wo(e,t){let n=go(100-vo(t)-_o(e)-yo(e)-bo(e)),r=xo(n);return{id:e.id,label:e.label,score:n,status:r,statusLabel:So(r),detail:`${e.fileCount} 个产物 · ${e.moduleCount} 个模块 · ${V(e.totalBytes)}`,primaryRisk:Co(e,t),metrics:[{label:`体积`,value:V(e.totalBytes)},{label:`重复模块`,value:e.duplicateModuleCount},{label:`Entry`,value:e.entryFileCount},{label:`较上次`,value:typeof e.sizeDeltaBytes==`number`?`${e.sizeDeltaBytes>=0?`+`:`-`}${V(Math.abs(e.sizeDeltaBytes))}`:`—`}]}}function To(e){let t=new Map(e.budgetWarnings.map(e=>[e.id,e])),n=e.packageInsights.map(e=>wo(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?go(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 Eo(e){return typeof e!=`number`||Number.isNaN(e)||e===0?`—`:`${e>0?`+`:`-`}${V(Math.abs(e))}`}function Do(e){return[{label:`Chunks`,value:e.chunkCount},{label:`Assets`,value:e.assetCount},{label:`压缩后`,value:V(e.compressedBytes)},{label:`较上次`,value:Eo(e.sizeDeltaBytes)}]}function Oo(e){return e.replaceAll(`|`,`\\|`).replaceAll(`
13
+ `,` `)}function ko(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(Oo).join(` | `)).map(e=>`| ${e} |`),``].join(`
14
+ `)}function Ao(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 jo(e){let t=m(``),n=m(`all`),r=m(`all`),i=m(`size`),{actionStatus:a,setActionStatus:o}=Dr(),s=T(()=>new Map(e.budgetWarnings.map(e=>[e.id,e]))),c=T(()=>To({packageInsights:e.packageInsights,budgetWarnings:e.budgetWarnings})),l=T(()=>new Map(c.value.items.map(e=>[e.id,e.score]))),u=T(()=>{let t=new Set;for(let n of e.packageInsights)t.add(n.type);return[...t].sort((e,t)=>H(e).localeCompare(H(t)))}),d=T(()=>e.packageInsights.map(t=>{let n=H(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:V(t.totalBytes),compressedBytesLabel:`${t.compressedSizeSource===`real`?`Brotli`:`估算`} ${V(t.compressedBytes)}`,deltaText:Eo(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:Do(t)}})),f=T(()=>{let e=t.value.trim().toLowerCase();return Ao(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)):!0}),i.value)}),p=T(()=>ko(f.value,d.value.length));async function h(){try{await W(p.value),o(`已复制`)}catch{o(`复制失败`)}}function g(){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:h,exportPackageJson:g,filteredPackageInsightCards:f,packageBudgetFilter:r,packageHealth:c,packageInsightCards:d,packageQuery:t,packageSortMode:i,packageTypeFilter:n,packageTypeOptions:u}}var Mo={class:`overflow-hidden rounded-xl border border-(--dashboard-border)`},No={class:`min-w-full divide-y divide-(--dashboard-border) text-left text-sm`},Po={class:`divide-y divide-(--dashboard-border) text-(--dashboard-text-muted)`},Fo={class:`px-3 py-2 font-mono text-xs text-(--dashboard-text)`},Io={class:`px-3 py-2`},Lo={class:`px-3 py-2`},Ro={class:`px-3 py-2 font-medium text-(--dashboard-text)`},zo={class:`px-3 py-2 font-medium text-(--dashboard-text)`},Bo=n({__name:`AppPackageFileTable`,props:{files:{}},setup(e){let t=e;function n(e){let t=typeof e.sizeDeltaBytes==`number`&&e.sizeDeltaBytes!==0?`${e.sizeDeltaBytes>0?`+`:`-`}${V(Math.abs(e.sizeDeltaBytes))}`:`—`;return{file:e.file,type:e.type,fromLabel:pe(e.from),sizeLabel:V(e.size),compressedLabel:V(e.compressedSize),deltaLabel:t}}let r=T(()=>t.files.map(e=>n(e)));return(e,t)=>(E(),L(`div`,Mo,[w(`table`,No,[t[0]||=w(`thead`,{class:`bg-(--dashboard-panel-muted) text-(--dashboard-text-soft)`},[w(`tr`,null,[w(`th`,{class:`px-3 py-2 text-[11px] font-medium uppercase tracking-[0.18em]`},` 文件 `),w(`th`,{class:`px-3 py-2 text-[11px] font-medium uppercase tracking-[0.18em]`},` 类型 `),w(`th`,{class:`px-3 py-2 text-[11px] font-medium uppercase tracking-[0.18em]`},` 来源 `),w(`th`,{class:`px-3 py-2 text-[11px] font-medium uppercase tracking-[0.18em]`},` 体积 / 压缩 `),w(`th`,{class:`px-3 py-2 text-[11px] font-medium uppercase tracking-[0.18em]`},` 较上次 `)])],-1),w(`tbody`,Po,[(E(!0),L(A,null,l(r.value,e=>(E(),L(`tr`,{key:e.file},[w(`td`,Fo,_(e.file),1),w(`td`,Io,_(e.type),1),w(`td`,Lo,_(e.fromLabel),1),w(`td`,Ro,_(e.sizeLabel)+` / `+_(e.compressedLabel),1),w(`td`,zo,_(e.deltaLabel),1)]))),128))])])]))}}),Vo={class:`flex flex-wrap items-center justify-between gap-3`},Ho={class:`text-xs font-medium text-(--dashboard-text-soft)`},Uo={key:0,class:`mt-1 text-xs font-medium text-(--dashboard-accent)`},Wo={class:`flex flex-wrap items-center gap-2`},Go=[`disabled`],Ko=[`disabled`],qo=[`value`],Jo=n({__name:`PackageExplorerToolbar`,props:i({filteredCount:{},totalCount:{},typeOptions:{},actionStatus:{},disabled:{type:Boolean}},{query:{required:!0},queryModifiers:{},typeFilter:{required:!0},typeFilterModifiers:{},budgetFilter:{required:!0},budgetFilterModifiers:{},sortMode:{required:!0},sortModeModifiers:{}}),emits:i([`copy`,`exportJson`],[`update:query`,`update:typeFilter`,`update:budgetFilter`,`update:sortMode`]),setup(e,{emit:n}){let r=n,i=s(e,`query`),a=s(e,`typeFilter`),o=s(e,`budgetFilter`),u=s(e,`sortMode`);return(n,s)=>(E(),L(`div`,Vo,[w(`div`,null,[w(`p`,Ho,` 匹配 `+_(e.filteredCount)+` / `+_(e.totalCount)+` 个包 `,1),e.actionStatus?(E(),L(`p`,Uo,_(e.actionStatus),1)):F(``,!0)]),w(`div`,Wo,[w(`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:e.disabled,onClick:s[0]||=e=>r(`copy`)},` 复制包体 `,8,Go),w(`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:e.disabled,onClick:s[1]||=e=>r(`exportJson`)},` 导出 JSON `,8,Ko),t(w(`input`,{"onUpdate:modelValue":s[2]||=e=>i.value=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),[[P,i.value]]),t(w(`select`,{"onUpdate:modelValue":s[3]||=e=>a.value=e,class:`h-9 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-2.5 text-sm text-(--dashboard-text) outline-none transition focus:border-(--dashboard-accent)`},[s[6]||=w(`option`,{value:`all`},` 全部类型 `,-1),(E(!0),L(A,null,l(e.typeOptions,e=>(E(),L(`option`,{key:e,value:e},_(c(H)(e)),9,qo))),128))],512),[[O,a.value]]),t(w(`select`,{"onUpdate:modelValue":s[4]||=e=>o.value=e,class:`h-9 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-2.5 text-sm text-(--dashboard-text) outline-none transition focus:border-(--dashboard-accent)`},[...s[7]||=[w(`option`,{value:`all`},` 全部预算 `,-1),w(`option`,{value:`warning`},` 仅告警 `,-1),w(`option`,{value:`normal`},` 预算正常 `,-1)]],512),[[O,o.value]]),t(w(`select`,{"onUpdate:modelValue":s[5]||=e=>u.value=e,class:`h-9 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-2.5 text-sm text-(--dashboard-text) outline-none transition focus:border-(--dashboard-accent)`},[...s[8]||=[x(`<option value="health"> 按健康分 </option><option value="size"> 按体积 </option><option value="compressed"> 按压缩后 </option><option value="delta"> 按增量 </option><option value="duplicates"> 按重复模块 </option><option value="files"> 按产物数 </option><option value="name"> 按名称 </option>`,7)]],512),[[O,u.value]])])]))}}),Yo={class:`rounded-lg border border-(--dashboard-border) bg-(--dashboard-panel) p-4 shadow-(--dashboard-shadow)`},Xo={class:`mt-3 grid gap-3 xl:grid-cols-[minmax(0,0.45fr)_minmax(0,1fr)]`},Zo={class:`grid grid-cols-3 gap-2`},Qo={class:`grid gap-2 md:grid-cols-2 xl:grid-cols-3`},$o={class:`flex items-start justify-between gap-3`},es={class:`min-w-0`},ts={class:`truncate text-sm font-semibold text-(--dashboard-text)`},ns={class:`mt-1 text-xs leading-5 text-(--dashboard-text-soft)`},rs={class:`mt-3 flex items-end justify-between gap-3`},is={class:`text-3xl font-semibold text-(--dashboard-accent)`},as={class:`line-clamp-2 text-right text-xs leading-5 text-(--dashboard-text-muted)`},os=n({__name:`PackageHealthPanel`,props:{health:{}},setup(e){function t(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`}return(n,r)=>(E(),L(`section`,Yo,[p(X,{"icon-name":`metric-health`,title:`包体健康`,description:e.health.weakestPackage?`优先关注 ${e.health.weakestPackage.label}`:`当前没有包体样本`},null,8,[`description`]),w(`div`,Xo,[w(`div`,Zo,[p(K,{label:`平均分`,value:e.health.averageScore},null,8,[`value`]),p(K,{label:`高风险`,value:e.health.riskCount},null,8,[`value`]),p(K,{label:`需关注`,value:e.health.watchCount},null,8,[`value`])]),w(`div`,Qo,[(E(!0),L(A,null,l(e.health.items.slice(0,3),e=>(E(),L(`article`,{key:e.id,class:`rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-3`},[w(`div`,$o,[w(`div`,es,[w(`p`,ts,_(e.label),1),w(`p`,ns,_(e.detail),1)]),w(`span`,{class:j([`shrink-0 rounded-full border px-2 py-0.5 text-[11px]`,t(e.status)])},_(e.statusLabel),3)]),w(`div`,rs,[w(`p`,is,_(e.score),1),w(`p`,as,_(e.primaryRisk),1)])]))),128))])])]))}}),ss={class:`grid h-full min-h-0 grid-rows-[auto_minmax(0,1fr)] gap-3 overflow-hidden`},cs={class:`grid gap-3`},ls={class:`grid min-h-0 auto-rows-max gap-3 overflow-y-auto pr-1 xl:grid-cols-2`},us={class:`flex flex-wrap items-start justify-between gap-4`},ds={class:`min-w-0`},fs={class:`mt-2 text-sm text-(--dashboard-text-soft)`},ps={class:`text-right`},ms={class:`text-xl font-semibold text-(--dashboard-text)`},hs={class:`text-xs text-(--dashboard-text-soft)`},gs={class:`mt-1 text-xs text-(--dashboard-accent)`},_s={class:`mt-4 grid grid-cols-2 gap-2 text-sm md:grid-cols-4`},vs={class:`mt-4`},ys=n({__name:`PackagesPanel`,props:{packageInsights:{},budgetWarnings:{},selectedTreemapMeta:{}},setup(e){let{actionStatus:t,copyPackageReport:n,exportPackageJson:i,filteredPackageInsightCards:a,packageBudgetFilter:o,packageHealth:s,packageInsightCards:u,packageQuery:d,packageSortMode:f,packageTypeFilter:m,packageTypeOptions:g}=jo(e);return(e,v)=>(E(),L(`section`,ss,[w(`div`,cs,[p(os,{health:c(s)},null,8,[`health`]),w(`div`,{class:j([c(z)({padding:`md`}),`grid gap-3`])},[p(X,{"icon-name":`tab-packages`,title:`包体探索`,description:`${c(u).length} 个包体样本`},null,8,[`description`]),p(Jo,{"budget-filter":c(o),"onUpdate:budgetFilter":v[0]||=e=>h(o)?o.value=e:null,query:c(d),"onUpdate:query":v[1]||=e=>h(d)?d.value=e:null,"sort-mode":c(f),"onUpdate:sortMode":v[2]||=e=>h(f)?f.value=e:null,"type-filter":c(m),"onUpdate:typeFilter":v[3]||=e=>h(m)?m.value=e:null,"action-status":c(t),disabled:c(a).length===0,"filtered-count":c(a).length,"total-count":c(u).length,"type-options":c(g),onCopy:c(n),onExportJson:c(i)},null,8,[`budget-filter`,`query`,`sort-mode`,`type-filter`,`action-status`,`disabled`,`filtered-count`,`total-count`,`type-options`,`onCopy`,`onExportJson`])],2)]),w(`div`,ls,[c(a).length===0?(E(),y(G,{key:0,class:`xl:col-span-2`},{default:R(()=>[...v[4]||=[I(` 没有匹配当前筛选条件的包。 `,-1)]]),_:1})):F(``,!0),(E(!0),L(A,null,l(c(a),e=>(E(),L(`article`,{key:e.id,class:j([[c(z)({padding:`md`}),e.selected?`border-(--dashboard-accent)`:``],`border transition`])},[w(`div`,us,[w(`div`,ds,[p(X,{"icon-name":`tab-packages`,title:e.label,description:e.typeLabel},null,8,[`title`,`description`]),w(`p`,fs,_(e.summaryText),1)]),w(`div`,ps,[w(`p`,ms,_(e.totalBytesLabel),1),w(`p`,hs,_(e.compressedBytesLabel),1),w(`p`,gs,_(e.budgetText),1)])]),w(`div`,_s,[(E(!0),L(A,null,l(e.metrics,e=>(E(),y(K,r({key:e.label},{ref_for:!0},e),null,16))),128))]),w(`div`,vs,[p(Bo,{files:e.topFiles},null,8,[`files`])])],2))),128))])]))}}),bs={class:`grid h-full min-h-0 grid-rows-[auto_minmax(0,1fr)] gap-2 overflow-hidden`},xs={class:`rounded-lg border border-(--dashboard-border) bg-(--dashboard-panel) p-4 shadow-(--dashboard-shadow)`},Ss={class:`flex items-center gap-2`},Cs={key:0,class:`text-xs font-medium text-(--dashboard-accent)`},ws={class:`h-3.5 w-3.5`},Ts={class:`mt-3 grid gap-3 lg:grid-cols-[minmax(0,0.82fr)_minmax(0,1fr)]`},Es={class:`rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-3`},Ds={class:`mt-3 text-lg font-semibold text-(--dashboard-text)`},Os={class:`mt-1 text-xs leading-5 text-(--dashboard-text-soft)`},ks={class:`grid grid-cols-2 gap-2 md:grid-cols-4`},As={class:`grid min-h-0 gap-2 overflow-y-auto pr-1 xl:grid-cols-3 xl:overflow-hidden xl:pr-0`},js={class:`text-sm font-semibold text-(--dashboard-text)`},Ms={class:`mt-1 text-xs leading-5 text-(--dashboard-text-soft)`},Ns={class:`mt-3 min-h-0 overflow-y-auto pr-1`},Ps={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)`},Fs=[`onClick`],Is={class:`mt-0.5 flex h-4 w-4 items-center justify-center rounded border border-current text-[10px] leading-none`},Ls={class:`min-w-0`},Rs={class:`block text-sm font-medium text-(--dashboard-text)`},zs={class:`mt-1 line-clamp-2 block text-xs leading-5 text-(--dashboard-text-muted)`},Bs=n({__name:`PrReviewChecklistPanel`,props:{checklist:{},copyStatus:{}},emits:[`copy`,`select`],setup(e,{emit:t}){let n=t;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)`}return(t,o)=>(E(),L(`section`,bs,[w(`div`,xs,[p(X,{"icon-name":`metric-bookmark`,title:`PR 风险清单`},{meta:R(()=>[w(`div`,Ss,[e.copyStatus?(E(),L(`span`,Cs,_(e.copyStatus),1)):F(``,!0),w(`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:o[0]||=e=>n(`copy`)},[w(`span`,ws,[p(B,{name:`metric-copy`})]),o[1]||=I(` 复制清单 `,-1)])])]),_:1}),w(`div`,Ts,[w(`div`,Es,[w(`span`,{class:j([`inline-flex rounded-full border px-2.5 py-1 text-[11px] font-medium uppercase tracking-[0.16em]`,i(e.checklist.status)])},_(e.checklist.label),3),w(`p`,Ds,_(e.checklist.headline),1),w(`p`,Os,_(e.checklist.description),1)]),w(`div`,ks,[(E(!0),L(A,null,l(e.checklist.metrics,e=>(E(),y(K,r({key:e.label},{ref_for:!0},e),null,16))),128))])])]),w(`div`,As,[(E(!0),L(A,null,l(e.checklist.lanes,e=>(E(),L(`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)`},[w(`div`,null,[w(`p`,js,_(e.title),1),w(`p`,Ms,_(e.description),1)]),w(`div`,Ns,[e.items.length===0?(E(),L(`div`,Ps,_(e.emptyText),1)):F(``,!0),(E(!0),L(A,null,l(e.items,e=>(E(),L(`button`,{key:e.id,type:`button`,class:j([`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)`,a(e.tone)]),onClick:t=>n(`select`,e)},[w(`span`,Is,_(e.checked?`✓`:``),1),w(`span`,Ls,[w(`span`,Rs,_(e.title),1),w(`span`,zs,_(e.detail),1)])],10,Fs))),128))])]))),128))])]))}}),Vs={noSemanticValidation:!0,noSuggestionDiagnostics:!0,noSyntaxValidation:!0},Hs={diagnostics:!1};function Us(e){e.typescript.javascriptDefaults.setDiagnosticsOptions(Vs),e.typescript.javascriptDefaults.setModeConfiguration(Hs),e.typescript.typescriptDefaults.setDiagnosticsOptions(Vs),e.typescript.typescriptDefaults.setModeConfiguration(Hs),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 Ws(e){return e===`dark`?`weapp-dashboard-dark`:`weapp-dashboard-light`}var Gs={css:ne,html:ie,javascript:oe,json:re,less:ne,scss:ne,typescript:oe},Ks=globalThis;Ks.MonacoEnvironment={getWorker:(e,t)=>new(Gs[t]??te)};function qs(e){return`${e.packageId}:${e.file}`}function Js(e,t){return t.endsWith(`.wxml`)||t.endsWith(`.vue`)?`html`:t.endsWith(`.wxss`)?`css`:e===`plaintext`&&t.endsWith(`.json`)?`json`:e}function Ys(e){let t=e.indexOf(`?`);return t===-1?e:e.slice(0,t)}async function Xs(e,t){let n=new URLSearchParams({kind:e,path:t}),r=await fetch(`/__weapp_vite_file_content?${n.toString()}`),i=await r.json();if(!r.ok)throw Error(i.message||`文件读取失败`);return{...i,language:Js(i.language,i.path)}}function Zs(e){let t=new Set;if(!e)return[];e.source&&t.add(Ys(e.source));for(let n of e.modules??[])(n.sourceType===`src`||n.sourceType===`workspace`||n.sourceType===`plugin`)&&t.add(Ys(n.source));return[...t].sort((e,t)=>e.localeCompare(t))}function Qs(e){return e?e.replace(/\r\n?/g,`
15
15
  `).split(`
16
- `):[]}function Xs(e){return new TextEncoder().encode(e).byteLength}function Zs(e){let t=new Map;for(let n of e)t.set(n,(t.get(n)??0)+1);return t}function Qs(e,t){let n=Ys(e),r=Ys(t),i=Zs(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=Xs(e),s=Xs(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 $s(e){return e===0?`无变化`:`${e>0?`+`:`-`}${V(Math.abs(e))}`}function ec(e){return`${Math.round(e*100)}%`}function tc(e){let t=e.unchangedLineRatio>=.7?`success`:e.unchangedLineRatio>=.35?`info`:`warning`,n=e.byteDelta>10*1024?`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:ec(e.unchangedLineRatio),detail:t===`warning`?`源码行在产物中保留较少,建议检查编译注入、运行时包装或转译膨胀。`:t===`success`?`源码结构在产物中较容易追踪,适合继续逐段定位差异。`:`产物保留了部分源码结构,可结合 diff 继续确认主要变化段。`,tone:t},{id:`size`,label:`字节影响`,value:$s(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 nc(e){let t=e.insights??tc(e.stats);return[`# dashboard 源码对比摘要`,``,`源码:${e.sourcePath}`,`产物:${e.artifactPath}`,``,`- 源码行数:${e.stats.sourceLines}`,`- 产物行数:${e.stats.artifactLines}`,`- 估算新增行:${e.stats.addedLines}`,`- 估算删除行:${e.stats.removedLines}`,`- 字节变化:${$s(e.stats.byteDelta)}`,`- 未变更行占比:${Math.round(e.stats.unchangedLineRatio*100)}%`,``,`## 洞察`,...t.map(e=>`- ${e.label}(${e.value}):${e.detail}`),``].join(`
17
- `)}function rc(e){let t=m(),n=m(``),r=m(``),i=g(null),a=g(null),o=m(``),s=m(!1),c=g(null),l,d,p,h=0,_=T(()=>e.files.value.map(e=>({key:Ws(e),label:`${e.packageLabel} · ${e.file}`,file:e}))),v=T(()=>_.value.find(e=>e.key===n.value)?.file??e.files.value[0]??null),y=T(()=>Js(v.value)),b=T(()=>s.value?`加载中`:o.value?o.value:i.value&&a.value?`${i.value.path} ↔ ${a.value.path}`:`等待文件`),x=T(()=>i.value&&a.value?Qs(i.value.content,a.value.content):null);function S(){return e.activeFileKey.value&&_.value.some(t=>t.key===e.activeFileKey.value)?e.activeFileKey.value:_.value[0]?.key??``}function C(){l?.setModel(null),d?.dispose(),p?.dispose(),d=void 0,p=void 0}function w(){let e=c.value;!e||!l||!i.value||!a.value||(C(),d=e.editor.createModel(i.value.content,i.value.language,e.Uri.parse(`weapp-source://model/${encodeURIComponent(i.value.path)}`)),p=e.editor.createModel(a.value.content,a.value.language,e.Uri.parse(`weapp-artifact://model/${encodeURIComponent(a.value.path)}`)),l.setModel({original:d,modified:p}))}async function E(){if(c.value||!t.value)return;let n=await te(()=>import(`./monaco.js`).then(e=>e.u),__vite__mapDeps([0]),import.meta.url);c.value=n,Bs(n),n.editor.setTheme(Vs(e.theme.value)),l=n.editor.createDiffEditor(t.value,{automaticLayout:!0,minimap:{enabled:!1},originalEditable:!1,readOnly:!0,renderSideBySide:!0,scrollBeyondLastLine:!1})}async function O(){let t=++h,n=r.value,c=v.value;if(!n||!c){i.value=null,a.value=null,o.value=y.value.length===0?`无源码候选`:``,C();return}s.value=!0,o.value=``,e.onSelectFile(c);try{let[e,r]=await Promise.all([qs(`source`,n),qs(`artifact`,c.file)]);if(t!==h)return;i.value=e,a.value=r,await u(),await E(),w()}catch(e){if(t!==h)return;i.value=null,a.value=null,C(),o.value=e instanceof Error?e.message:`文件读取失败`}finally{t===h&&(s.value=!1)}}return f(()=>[e.activeFileKey.value,_.value.map(e=>e.key).join(`\0`)],()=>{n.value=S()},{immediate:!0}),f(y,e=>{r.value=e[0]??``},{immediate:!0}),f([n,r],()=>{O()},{immediate:!0}),f(e.theme,e=>{c.value?.editor.setTheme(Vs(e))}),D(()=>{C(),l?.dispose()}),{artifactContent:a,artifactOptions:_,compareStats:x,editorElement:t,loadComparison:O,loadError:o,loading:s,selectedArtifactKey:n,selectedSourcePath:r,sourceContent:i,sourceOptions:y,statusText:b}}var ic={class:`grid h-full min-h-0 grid-rows-[auto_minmax(0,1fr)] gap-3 overflow-hidden rounded-lg border border-(--dashboard-border) bg-(--dashboard-panel) p-3 shadow-(--dashboard-shadow)`},ac={class:`grid gap-3`},oc={class:`flex flex-wrap items-center justify-between gap-3`},sc={class:`mt-1 text-xs text-(--dashboard-text-soft)`},cc={class:`flex items-center gap-2`},lc={key:0,class:`text-xs font-medium text-(--dashboard-accent)`},uc=[`disabled`],dc=[`disabled`],fc={class:`grid gap-2 lg:grid-cols-2`},pc=[`value`],mc=[`value`],hc={key:0,class:`grid gap-2 lg:grid-cols-[minmax(0,1fr)_auto] lg:items-center`},gc={class:`grid grid-cols-2 gap-2 xl:grid-cols-4`},_c={class:`text-xs text-(--dashboard-text-soft)`},vc={key:1,class:`grid gap-2 lg:grid-cols-3`},yc={class:`flex items-start justify-between gap-3`},bc={class:`text-xs font-semibold uppercase tracking-[0.14em] opacity-80`},xc={class:`shrink-0 text-sm font-semibold`},Sc={class:`mt-2 line-clamp-2 text-xs leading-5 opacity-80`},Cc={class:`min-h-0 overflow-hidden rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted)`},wc=n({__name:`SourceArtifactComparePanel`,props:{activeFileKey:{},files:{},theme:{}},emits:[`selectFile`],setup(e,{emit:n}){let i=e,o=n,{activeFileKey:s,files:u,theme:d}=a(i),f=m(``),p=null,{artifactContent:g,artifactOptions:v,compareStats:b,editorElement:x,loadComparison:C,loadError:ee,loading:k,selectedArtifactKey:M,selectedSourcePath:N,sourceContent:P,sourceOptions:te,statusText:ne}=rc({activeFileKey:s,files:u,theme:d,onSelectFile(e){o(`selectFile`,e)}}),re=T(()=>b.value?[{label:`源码行数`,value:String(b.value.sourceLines)},{label:`产物行数`,value:String(b.value.artifactLines)},{label:`新增 / 删除`,value:`${b.value.addedLines} / ${b.value.removedLines}`},{label:`字节变化`,value:$s(b.value.byteDelta)}]:[]),ie=T(()=>b.value?`${V(b.value.sourceBytes)} → ${V(b.value.artifactBytes)}`:``),ae=T(()=>b.value?tc(b.value):[]);function oe(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 se(e){f.value=e,p&&clearTimeout(p),p=setTimeout(()=>{f.value=``,p=null},1800)}async function z(){if(!(!b.value||!P.value||!g.value))try{await W(nc({sourcePath:P.value.path,artifactPath:g.value.path,stats:b.value,insights:ae.value})),se(`已复制`)}catch{se(`复制失败`)}}return D(()=>{p&&clearTimeout(p)}),(e,n)=>(E(),L(`section`,ic,[w(`div`,ac,[w(`div`,oc,[w(`div`,null,[n[3]||=w(`h2`,{class:`text-lg font-semibold text-(--dashboard-text)`},` 源码对比 `,-1),w(`p`,sc,_(c(ne)),1)]),w(`div`,cc,[f.value?(E(),L(`span`,lc,_(f.value),1)):F(``,!0),w(`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:!c(b),onClick:z},` 复制摘要 `,8,uc),w(`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:c(k)||!c(M)||!c(N),onClick:n[0]||=(...e)=>c(C)&&c(C)(...e)},` 刷新 `,8,dc)])]),w(`div`,fc,[t(w(`select`,{"onUpdate:modelValue":n[1]||=e=>h(N)?N.value=e:null,class:`h-9 min-w-0 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-2.5 text-sm text-(--dashboard-text) outline-none transition focus:border-(--dashboard-accent)`},[n[4]||=w(`option`,{value:``},` 源码文件 `,-1),(E(!0),L(A,null,l(c(te),e=>(E(),L(`option`,{key:e,value:e},_(e),9,pc))),128))],512),[[O,c(N)]]),t(w(`select`,{"onUpdate:modelValue":n[2]||=e=>h(M)?M.value=e:null,class:`h-9 min-w-0 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-2.5 text-sm text-(--dashboard-text) outline-none transition focus:border-(--dashboard-accent)`},[(E(!0),L(A,null,l(c(v),e=>(E(),L(`option`,{key:e.key,value:e.key},_(e.label),9,mc))),128))],512),[[O,c(M)]])]),c(b)?(E(),L(`div`,hc,[w(`div`,gc,[(E(!0),L(A,null,l(re.value,e=>(E(),y(K,r({key:e.label},{ref_for:!0},e),null,16))),128))]),w(`p`,_c,_(ie.value),1)])):F(``,!0),ae.value.length?(E(),L(`div`,vc,[(E(!0),L(A,null,l(ae.value,e=>(E(),L(`article`,{key:e.id,class:j([`rounded-md border px-3 py-2.5`,oe(e.tone)])},[w(`div`,yc,[w(`p`,bc,_(e.label),1),w(`p`,xc,_(e.value),1)]),w(`p`,Sc,_(e.detail),1)],2))),128))])):F(``,!0)]),w(`div`,Cc,[t(w(`div`,{ref_key:`editorElement`,ref:x,class:`h-full min-h-96`},null,512),[[S,c(P)&&c(g)]]),!c(P)||!c(g)?(E(),y(G,{key:0,class:`m-3 h-[calc(100%-1.5rem)]`},{default:R(()=>[I(_(c(ee)||`暂无可对比文件。`),1)]),_:1})):F(``,!0)])]))}}),Tc={class:`flex items-center gap-2`},Ec=[`disabled`],Dc={class:`mb-2 flex flex-wrap items-center justify-between gap-2 px-2`},Oc={class:`flex flex-wrap gap-1.5`},kc=[`disabled`,`onClick`],Ac={class:`flex flex-wrap items-center gap-2 text-[11px] text-(--dashboard-text-soft)`},jc={class:`relative min-h-0 flex-1 overflow-hidden rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-2`},Mc=`Treemap`,Nc=`从包体到文件再到模块,直接定位体积热点。`,Pc=n({__name:`TreemapCard`,props:{bindChartRef:{type:Function},canFocusSelected:{type:Boolean},filterMode:{},filterOptions:{},canUseSelectedPackageFilter:{type:Boolean},isEmpty:{type:Boolean},theme:{}},emits:[`focusSelected`,`resetFocus`,`updateFilterMode`],setup(e,{emit:t}){let n=e,r=t,i=T(()=>n.theme===`dark`?[{label:`健康`,color:`#166853`},{label:`关注`,color:`#75601f`},{label:`急需改进`,color:`#81323a`}]:[{label:`健康`,color:`#8fd3ad`},{label:`关注`,color:`#ead486`},{label:`急需改进`,color:`#eaa39b`}]);function a(){return U({kind:`badge`})}function o(e){return e.value!==`selected-package`||n.canUseSelectedPackageFilter}function s(e){n.bindChartRef(e instanceof Element?e:null)}return(t,n)=>(E(),L(`div`,{class:j([c(z)({padding:`sm`}),`flex h-full min-h-0 flex-col overflow-hidden`])},[p(X,{class:`mb-2 px-2`,"icon-name":`treemap`,title:Mc,description:Nc},{meta:R(()=>[w(`div`,Tc,[w(`button`,{class:j([a(),e.canFocusSelected?void 0:`cursor-not-allowed opacity-45`]),disabled:!e.canFocusSelected,type:`button`,onClick:n[0]||=e=>r(`focusSelected`)},` 聚焦选中 `,10,Ec),w(`button`,{class:j(a()),type:`button`,onClick:n[1]||=e=>r(`resetFocus`)},` 重置 `,2)])]),_:1}),w(`div`,Dc,[w(`div`,Oc,[(E(!0),L(A,null,l(e.filterOptions,t=>(E(),L(`button`,{key:t.value,class:j([c(U)({kind:`badge`,active:e.filterMode===t.value}),o(t)?void 0:`cursor-not-allowed opacity-45`]),disabled:!o(t),type:`button`,onClick:e=>r(`updateFilterMode`,t.value)},_(t.label),11,kc))),128))]),w(`div`,Ac,[(E(!0),L(A,null,l(i.value,e=>(E(),L(`span`,{key:e.label,class:`inline-flex items-center gap-1.5`},[w(`span`,{class:`h-2.5 w-2.5 rounded-full border border-(--dashboard-border)`,style:v({backgroundColor:e.color})},null,4),I(` `+_(e.label),1)]))),128))])]),w(`div`,jc,[w(`div`,{ref:s,class:`h-full min-h-0 w-full`}),e.isEmpty?(E(),y(G,{key:0,class:`absolute inset-3 z-10 grid place-items-center`,compact:``},{default:R(()=>[...n[2]||=[I(` 当前过滤条件下没有可展示节点。 `,-1)]]),_:1})):F(``,!0)])],2))}}),Fc={key:0,class:`min-h-0 overflow-hidden`},Ic={key:1,class:`min-h-0 overflow-hidden`},Lc={key:2,class:`min-h-0 overflow-hidden`},Rc={key:3,class:`min-h-0 overflow-hidden`},zc={key:4,class:`min-h-0 overflow-hidden`},Bc={key:5,class:`min-h-0 overflow-hidden`},Vc={key:6,class:`min-h-0 overflow-hidden`},Hc={key:7,class:`min-h-0 overflow-hidden`},Uc=n({__name:`AnalyzeResultSections`,props:{actionItems:{},activeBudgetWarningId:{},activeLargestFileKey:{},activeTab:{},activeWorkQueueItemId:{},baselineSnapshotId:{},budgetConfig:{},budgetWarnings:{},canUseSelectedPackageFilter:{type:Boolean},comparisonMode:{},copyStatus:{},diagnosticsLayoutItems:{},filteredDuplicateModules:{},filteredLargestFiles:{},historySnapshots:{},incrementAttribution:{},incrementSummary:{},isTreemapEmpty:{type:Boolean},largestFiles:{},metricPackageTypeSummary:{},moduleSourceSummary:{},modulesLayoutItems:{},overviewLayoutItems:{},packageInsights:{},packagesLayoutItems:{},prReviewChecklist:{},queuedActionKeys:{},reviewLayoutItems:{},selectedTreemapFocusNodeId:{},selectedTreemapMeta:{},selectedActionKey:{},selectedFileModules:{},sourceLayoutItems:{},theme:{},topCards:{},totalBytes:{},treemapFilterMode:{},treemapFilterOptions:{},treemapLayoutItems:{},visibleLargestFiles:{},workQueueItems:{},bindChartRef:{type:Function}},emits:[`addActionToQueue`,`clearCompletedWorkQueue`,`copyPr`,`copyReviewChecklist`,`copyWorkQueue`,`focusTreemapSelection`,`removeWorkQueueItem`,`resetTreemapFocus`,`selectAction`,`selectBudgetWarning`,`selectFile`,`selectPackage`,`selectReviewChecklistItem`,`selectWorkQueueItem`,`setBaseline`,`setComparisonMode`,`toggleWorkQueueItem`,`updateTreemapFilterMode`],setup(e,{emit:t}){let n=t;return(t,r)=>e.activeTab===`overview`?(E(),L(`section`,Fc,[p(q,{"grid-class":`grid h-full min-h-0 gap-2 overflow-hidden`,items:e.overviewLayoutItems,"storage-key":`weapp-vite:dashboard:analyze-layout:overview`},{metrics:R(()=>[p(ha,{"action-items":e.actionItems,cards:e.topCards,"largest-files":e.largestFiles,"package-insights":e.packageInsights,"package-type-summary":e.metricPackageTypeSummary,onCopyReport:r[0]||=e=>n(`copyPr`),onSelectAction:r[1]||=e=>n(`selectAction`,e),onSelectFile:r[2]||=e=>n(`selectFile`,e),onSelectPackage:r[3]||=e=>n(`selectPackage`,e)},null,8,[`action-items`,`cards`,`largest-files`,`package-insights`,`package-type-summary`])]),_:1},8,[`items`])])):e.activeTab===`diagnostics`?(E(),L(`section`,Ic,[p(ui,{"action-items":e.actionItems,"active-work-queue-item-id":e.activeWorkQueueItemId,"baseline-snapshot-id":e.baselineSnapshotId,"comparison-mode":e.comparisonMode,"history-snapshots":e.historySnapshots,"layout-items":e.diagnosticsLayoutItems,"queued-action-keys":e.queuedActionKeys,"selected-action-key":e.selectedActionKey,"work-queue-items":e.workQueueItems,onAddActionToQueue:r[4]||=e=>n(`addActionToQueue`,e),onClearCompletedWorkQueue:r[5]||=e=>n(`clearCompletedWorkQueue`),onCopyPr:r[6]||=e=>n(`copyPr`),onCopyWorkQueue:r[7]||=e=>n(`copyWorkQueue`),onRemoveWorkQueueItem:r[8]||=e=>n(`removeWorkQueueItem`,e),onSelectAction:r[9]||=e=>n(`selectAction`,e),onSelectWorkQueueItem:r[10]||=e=>n(`selectWorkQueueItem`,e),onSetBaseline:r[11]||=e=>n(`setBaseline`,e),onSetComparisonMode:r[12]||=e=>n(`setComparisonMode`,e),onToggleWorkQueueItem:r[13]||=e=>n(`toggleWorkQueueItem`,e)},null,8,[`action-items`,`active-work-queue-item-id`,`baseline-snapshot-id`,`comparison-mode`,`history-snapshots`,`layout-items`,`queued-action-keys`,`selected-action-key`,`work-queue-items`])])):e.activeTab===`review`?(E(),L(`section`,Lc,[p(q,{"grid-class":`grid h-full min-h-0 gap-2 overflow-hidden`,items:e.reviewLayoutItems,"storage-key":`weapp-vite:dashboard:analyze-layout:review`},{review:R(()=>[p(Ls,{checklist:e.prReviewChecklist,"copy-status":e.copyStatus,onCopy:r[14]||=e=>n(`copyReviewChecklist`),onSelect:r[15]||=e=>n(`selectReviewChecklistItem`,e)},null,8,[`checklist`,`copy-status`])]),_:1},8,[`items`])])):e.activeTab===`treemap`?(E(),L(`section`,Rc,[p(q,{"grid-class":`grid h-full min-h-0 gap-2 overflow-hidden`,items:e.treemapLayoutItems,"storage-key":`weapp-vite:dashboard:analyze-layout:treemap`},{treemap:R(()=>[p(Pc,{"bind-chart-ref":e.bindChartRef,"can-focus-selected":!!e.selectedTreemapFocusNodeId,"filter-mode":e.treemapFilterMode,"filter-options":e.treemapFilterOptions,"can-use-selected-package-filter":e.canUseSelectedPackageFilter,"is-empty":e.isTreemapEmpty,theme:e.theme,onFocusSelected:r[16]||=e=>n(`focusTreemapSelection`),onResetFocus:r[17]||=e=>n(`resetTreemapFocus`),onUpdateFilterMode:r[18]||=e=>n(`updateTreemapFilterMode`,e)},null,8,[`bind-chart-ref`,`can-focus-selected`,`filter-mode`,`filter-options`,`can-use-selected-package-filter`,`is-empty`,`theme`])]),_:1},8,[`items`])])):e.activeTab===`files`?(E(),L(`section`,zc,[p(Dn,{"largest-files":e.filteredLargestFiles,"selected-file-modules":e.selectedFileModules,"budget-warnings":e.budgetWarnings,"budget-config":e.budgetConfig,"package-insights":e.packageInsights,"total-bytes":e.totalBytes,"active-budget-warning-id":e.activeBudgetWarningId,"active-largest-file-key":e.activeLargestFileKey,"selected-treemap-meta":e.selectedTreemapMeta,onSelectBudgetWarning:r[19]||=e=>n(`selectBudgetWarning`,e),onSelectFile:r[20]||=e=>n(`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`])])):e.activeTab===`source`?(E(),L(`section`,Bc,[p(q,{"grid-class":`grid h-full min-h-0 gap-2 overflow-hidden`,items:e.sourceLayoutItems,"storage-key":`weapp-vite:dashboard:analyze-layout:source`},{source:R(()=>[p(wc,{"active-file-key":e.activeLargestFileKey,files:e.filteredLargestFiles,theme:e.theme,onSelectFile:r[21]||=e=>n(`selectFile`,e)},null,8,[`active-file-key`,`files`,`theme`])]),_:1},8,[`items`])])):e.activeTab===`packages`?(E(),L(`section`,Vc,[p(q,{"grid-class":`grid h-full min-h-0 gap-2 overflow-hidden`,items:e.packagesLayoutItems,"storage-key":`weapp-vite:dashboard:analyze-layout:packages`},{packages:R(()=>[p(gs,{"package-insights":e.packageInsights,"budget-warnings":e.budgetWarnings,"selected-treemap-meta":e.selectedTreemapMeta},null,8,[`package-insights`,`budget-warnings`,`selected-treemap-meta`])]),_:1},8,[`items`])])):(E(),L(`section`,Hc,[p(q,{"grid-class":`grid h-full min-h-0 gap-2 overflow-hidden`,items:e.modulesLayoutItems,"storage-key":`weapp-vite:dashboard:analyze-layout:modules`},{modules:R(()=>[p(fo,{"duplicate-modules":e.filteredDuplicateModules,"module-source-summary":e.moduleSourceSummary,"increment-attribution":e.incrementAttribution,"increment-summary":e.incrementSummary,"visible-largest-files":e.visibleLargestFiles},null,8,[`duplicate-modules`,`module-source-summary`,`increment-attribution`,`increment-summary`,`visible-largest-files`])]),_:1},8,[`items`])]))}}),Wc={class:`h-4.5 w-4.5`},Gc={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)`},Kc=[`onClick`],qc={class:`mt-0.5 h-4.5 w-4.5 text-(--dashboard-text-soft)`},Jc={class:`min-w-0`},Yc={class:`block font-medium`},Xc={class:`mt-0.5 block text-xs leading-5 text-(--dashboard-text-soft)`},Zc=n({__name:`AnalyzeExportMenu`,props:{open:{type:Boolean}},emits:[`update:open`,`copySummary`,`copyMarkdown`,`copyPr`,`exportJson`,`exportMarkdown`,`exportCsv`],setup(e,{emit:t}){let n=t,r=[{key:`summary`,label:`复制摘要`,description:`关键指标和首要风险,适合 IM 快速同步。`,iconName:`metric-copy`,action:()=>n(`copySummary`)},{key:`markdown-copy`,label:`复制完整报告`,description:`包含预算、包体、Top 文件和重复模块表格。`,iconName:`file-samples`,action:()=>n(`copyMarkdown`)},{key:`pr`,label:`复制 PR 摘要`,description:`面向评审评论的增量、预算和重复模块摘要。`,iconName:`metric-copy`,action:()=>n(`copyPr`)},{key:`json`,label:`导出 JSON`,description:`保留原始 analyze payload,适合离线排查。`,iconName:`metric-size-outline`,action:()=>n(`exportJson`)},{key:`markdown`,label:`导出 MD`,description:`生成完整 Markdown 报告文件。`,iconName:`file-samples`,action:()=>n(`exportMarkdown`)},{key:`csv`,label:`导出 CSV`,description:`导出包、文件、重复模块和增量归因明细。`,iconName:`file-samples`,action:()=>n(`exportCsv`)}];return(t,i)=>(E(),L(`div`,{class:`relative shrink-0`,onClick:i[1]||=C(()=>{},[`stop`])},[w(`button`,{class:j(c(U)({kind:`nav`,active:e.open})),type:`button`,onClick:i[0]||=t=>n(`update:open`,!e.open)},[w(`span`,Wc,[p(B,{name:`nav-menu`})]),i[2]||=I(` 更多 `,-1)],2),e.open?(E(),L(`div`,Gc,[(E(),L(A,null,l(r,e=>w(`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},[w(`span`,qc,[p(B,{name:e.iconName},null,8,[`name`])]),w(`span`,Jc,[w(`span`,Yc,_(e.label),1),w(`span`,Xc,_(e.description),1)])],8,Kc)),64))])):F(``,!0)]))}}),Qc={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)`},$c={class:`flex min-w-0 flex-1 flex-nowrap items-center gap-2 overflow-x-auto pb-0.5`},el={class:`h-4.5 w-4.5`},tl={class:`h-4.5 w-4.5`},nl=[`disabled`],rl={class:`h-4.5 w-4.5`},il=n({__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,{emit:t}){let n=t;return(t,i)=>(E(),L(`section`,Qc,[w(`div`,$c,[e.canSearch?(E(),L(`button`,{key:0,class:j([`shrink-0`,c(U)({kind:`nav`,active:!1})]),onClick:i[0]||=e=>n(`openSearch`)},[w(`span`,el,[p(B,{name:`metric-search`})]),i[10]||=I(` 搜索 `,-1)],2)):F(``,!0),e.canSearch?(E(),L(`button`,{key:1,class:j([`shrink-0`,c(U)({kind:`nav`,active:!1})]),onClick:i[1]||=e=>n(`copyViewLink`)},[w(`span`,tl,[p(B,{name:`metric-link`})]),i[11]||=I(` 复制视图 `,-1)],2)):F(``,!0),e.canSearch?(E(),L(`button`,{key:2,class:j([`shrink-0 disabled:cursor-not-allowed disabled:opacity-55`,c(U)({kind:`nav`,active:!1})]),disabled:!e.canResetView,onClick:i[2]||=e=>n(`resetView`)},[w(`span`,rl,[p(B,{name:`metric-reset`})]),i[12]||=I(` 重置视图 `,-1)],10,nl)):F(``,!0),e.exportStatus?(E(),y(se,{key:3,class:`shrink-0`,label:e.exportStatus,uppercase:``},null,8,[`label`])):F(``,!0),e.openWorkQueueCount>0?(E(),y(se,{key:4,class:`shrink-0`,"icon-name":`metric-bookmark`,label:`${e.openWorkQueueCount} 个待处理`,uppercase:``},null,8,[`label`])):F(``,!0),(E(!0),L(A,null,l(e.statusPills,e=>(E(),y(se,r({key:e.label,class:`shrink-0`},{ref_for:!0},e,{uppercase:``}),null,16))),128))]),e.canSearch?(E(),y(Zc,{key:0,open:e.moreMenuOpen,"onUpdate:open":i[3]||=e=>n(`update:moreMenuOpen`,e),onCopyMarkdown:i[4]||=e=>n(`copyMarkdown`),onCopyPr:i[5]||=e=>n(`copyPr`),onCopySummary:i[6]||=e=>n(`copySummary`),onExportCsv:i[7]||=e=>n(`exportCsv`),onExportJson:i[8]||=e=>n(`exportJson`),onExportMarkdown:i[9]||=e=>n(`exportMarkdown`)},null,8,[`open`])):F(``,!0)]))}});function al(e){return e===`blocked`?`Blocked`:e===`review`?`Review`:`Ready`}function ol(e){return e===`blocked`?`PR 合并前仍有阻断项`:e===`review`?`建议完成复核后再合并`:`当前清单未发现发布风险`}function sl(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 cl(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 ll(e){return e.items.length===0?[`- [x] ${e.emptyText}`]:e.items.map(e=>`- [${e.checked?`x`:` `}] ${e.title}:${e.detail}`)}function ul(e){return[`## PR 风险清单`,``,`状态:${e.label}`,e.headline,``,...e.metrics.map(e=>`- ${e.label}:${e.value}`),``,...e.lanes.flatMap(e=>[`### ${e.title}`,``,...ll(e),``])].join(`
18
- `)}function dl(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(sl),emptyText:`没有阻断项。`},{key:`verification`,title:`评审复核`,description:`需要 reviewer 主动确认的高风险变化。`,items:n.slice(0,6).map(sl),emptyText:`没有需要额外复核的风险。`},{key:`followups`,title:`后续跟进`,description:`来自处理清单和剩余建议动作的后续事项。`,items:[...r.slice(0,4).map(cl),...o.map(sl)].slice(0,6),emptyText:i.length>0?`处理清单已完成。`:`没有待跟进事项。`}],l={status:s,label:al(s),headline:ol(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:ul(l)}}var Z=`\0`,fl=[{itemStyle:{borderWidth:3,gapWidth:4},upperLabel:{show:!0,height:32,color:`#17231d`,fontWeight:`700`,lineHeight:16,overflow:`truncate`,textBorderWidth:0,textShadowBlur:1,textShadowColor:`rgba(255, 255, 255, 0.32)`}},{itemStyle:{borderWidth:2,gapWidth:2}},{itemStyle:{borderWidth:1,gapWidth:1}}];function pl(e){return`package${Z}${e}`}function ml(e,t){return`file${Z}${e}${Z}${t}`}function hl(e,t,n){return`module${Z}${e}${Z}${t}${Z}${n}`}function gl(e,t){return`asset${Z}${e}${Z}${t}`}function _l(e){if(!e)return``;let t=[];return e.kind===`package`?(t.push(`<strong>${e.packageLabel}</strong>`),t.push(`类型:${e.packageType}`),t.push(`产物数量:${e.fileCount}`),e.totalBytes&&t.push(`累计体积:${V(e.totalBytes)}`)):e.kind===`file`?(t.push(`<strong>${e.fileName}</strong>`),t.push(`所属:${e.packageLabel}`),t.push(`类型:${e.type===`chunk`?`代码 chunk`:`资源`} · 来源:${e.from}`),t.push(`体积:${V(e.bytes)}`),e.childCount>0&&t.push(`模块数量:${e.childCount}`)):e.kind===`module`?(t.push(`<strong>${e.source}</strong>`),t.push(`所属:${e.packageLabel} → ${e.fileName}`),t.push(`源码类型:${de(e.sourceType)}`),t.push(`模块体积:${V(e.bytes??e.originalBytes)}`),e.packageCount>1&&t.push(`跨包复用:${e.packageCount} 次`)):e.kind===`asset`&&(t.push(`<strong>${e.source}</strong>`),t.push(`所属:${e.packageLabel} → ${e.fileName}`),t.push(`资源体积:${V(e.bytes)}`)),t.join(`<br/>`)}function vl(e){return`${(e.ratio*100).toFixed(1)}%`}function yl(e,t,n){if(!(!t||!n))return e.find(e=>e.packageId===t&&e.file===n)}function bl(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:`可省 ${V(e.estimatedSavingBytes)}`,tone:e.estimatedSavingBytes>1024?`warning`:`info`,tab:`modules`,priority:72+Math.min(e.estimatedSavingBytes/1024,18),moduleMeta:n&&i?{kind:`module`,nodeId:hl(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 xl(e,t,n){let r=yl(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:hl(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:`+${V(e.deltaBytes)}`,tone:e.deltaBytes>1024?`warning`:`info`,tab:r?`files`:`modules`,priority:80+Math.min(e.deltaBytes/1024,15),file:r,moduleMeta:a}}function Sl(e){return{actionItems:T(()=>{let t=[];for(let n of e.budgetWarnings.value)t.push({key:`budget:${n.id}`,kind:`budget`,title:`处理 ${n.label} 预算`,meta:`${n.status===`critical`?`已超预算`:`接近预算`} · 当前 ${V(n.currentBytes)} / ${V(n.limitBytes)}`,value:vl(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(xl(n,e.largestFiles.value,e.packageInsights.value));for(let n of e.duplicateModules.value.filter(e=>e.estimatedSavingBytes>0).slice(0,12))t.push(bl(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} · 压缩后 ${V(n.compressedSize)}`,value:V(n.size),tone:`success`,tab:`files`,priority:45,file:n}),t.sort((e,t)=>t.priority-e.priority||e.title.localeCompare(t.title))})}}function Cl(e){return e.filter(e=>e!==void 0&&e!==``).join(` `).toLowerCase()}function wl(e,t,n){return e.find(e=>e.id===t||e.label===n)}function Tl(e,t,n){if(!(!t||!n))return e.find(e=>e.packageId===t&&e.file===n)}function El(e){return{key:`package:${e.id}`,kind:`package`,title:e.label,meta:`${H(e.type)} · ${e.fileCount} 个产物 · ${e.moduleCount} 个模块`,value:V(e.totalBytes),keywords:Cl([e.id,e.label,e.type,e.totalBytes]),tab:`packages`,packageMeta:{kind:`package`,nodeId:pl(e.id),packageId:e.id,packageLabel:e.label,packageType:e.type,fileCount:e.fileCount,totalBytes:e.totalBytes}}}function Dl(e){return{key:`file:${e.packageId}:${e.file}`,kind:`file`,title:e.file,meta:`${e.packageLabel} · ${e.type} · 压缩后 ${V(e.compressedSize)}`,value:V(e.size),keywords:Cl([e.packageId,e.packageLabel,e.file,e.type,e.source,e.size]),tab:`files`,file:e}}function Ol(e){return{key:`budget:${e.id}`,kind:`budget`,title:`${e.label} 预算`,meta:`${e.status===`critical`?`已超预算`:`接近预算`} · ${V(e.currentBytes)} / ${V(e.limitBytes)}`,value:`${(e.ratio*100).toFixed(1)}%`,keywords:Cl([e.id,e.label,e.scope,e.status,e.currentBytes]),tab:`files`,warning:e}}function kl(e,t){let n=e.packages[0],r=n?.files[0]??``,i=wl(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:`可省 ${V(e.estimatedSavingBytes)}`,keywords:Cl([e.id,e.source,e.sourceType,e.packageCount,e.packages.map(e=>e.packageLabel).join(` `)]),tab:`modules`,moduleMeta:n&&i?{kind:`module`,nodeId:hl(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 Al(e,t,n){let r=Tl(t,e.packageId,e.file),i=wl(n,e.packageId,e.packageLabel);return{key:`increment:${e.key}`,kind:`increment`,title:e.label,meta:`${e.category} · ${e.advice}`,value:`+${V(e.deltaBytes)}`,keywords:Cl([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:hl(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 jl(e){return{key:`action:${e.key}`,kind:`action`,title:e.title,meta:e.meta,value:e.value,keywords:Cl([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 Ml(e){return{commandItems:T(()=>[...e.actionItems.value.map(jl),...e.budgetWarnings.value.map(Ol),...e.packageInsights.value.map(El),...e.largestFiles.value.map(Dl),...e.duplicateModules.value.map(t=>kl(t,e.packageInsights.value)),...e.incrementAttribution.value.map(t=>Al(t,e.largestFiles.value,e.packageInsights.value))])}}var Nl=2*1024*1024;function Q(e){return e.size??0}function Pl(e){return e.brotliSize??e.gzipSize??fe(Q(e),e.file,e.type)}function Fl(e){return typeof e.brotliSize==`number`||typeof e.gzipSize==`number`?`real`:`estimated`}function Il(e,t){return`${e}\u0000${t}`}function Ll(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+=Pl(t),n.set(Il(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 Rl(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 zl(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 Bl(e){if(e!==`virtual`)return Nl}function Vl(e,t){let n=t.metadata?.budgets;if(!n)return Bl(e);if(e===`main`)return n.mainBytes;if(e===`subPackage`)return n.subPackageBytes;if(e===`independent`)return n.independentBytes}function Hl(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 Ul(e){return e>=1024*1024?`${(e/1024/1024).toFixed(e%(1024*1024)==0?0:2)} MB`:e>=1024?`${(e/1024).toFixed(e%1024==0?0:2)} KB`:`${e} B`}function Wl(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=Hl({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=Vl(n.type,e);if(!i)continue;let a=Hl({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 Gl(e){let t=e?.metadata?.budgets,n=t?.source??`default`;return[{key:`total`,label:`总包预算`,value:`${Ul(t?.totalBytes??20971520)}`,source:n},{key:`main`,label:`主包预算`,value:`${Ul(t?.mainBytes??2097152)}`,source:n},{key:`subPackage`,label:`分包预算`,value:`${Ul(t?.subPackageBytes??2097152)}`,source:n},{key:`independent`,label:`独立分包预算`,value:`${Ul(t?.independentBytes??2097152)}`,source:n}]}function Kl(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 ql(e,t){return e===`第三方依赖`?`检查依赖边界或公共入口。`:e===`WeVu / runtime`?`排查组件和 API 引用边界。`:e===`样式资源`?`检查样式复用和生成范围。`:t?`确认分包归属和懒加载边界。`:`对比新增引用和共享模块。`}function Jl(e){if(!e.result||!e.previousResult)return[];let t=[],n=Rl(e.result);for(let n of e.result.packages)for(let r of n.files){let i=Q(r),a=e.previousMaps.fileBytes.get(Il(n.id,r.file))??0,o=i-a;if(o<=0)continue;let s=Kl(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:ql(s,a===0)})}for(let[r,i]of e.moduleInfoMap){let a=e.previousMaps.moduleBytes.get(r)?.bytes??0,o=i.bytes-a;if(o<=0)continue;let s=e.previousMaps.moduleBytes.get(r),c=n.get(r),l=c?.source??s?.source??r,u=Kl(l,c?.sourceType??i.sourceType);t.push({key:`module:${r}`,label:l,category:u,packageId:c?.packageId??s?.packageId,packageLabel:c?.packageLabel??s?.packageLabel??``,file:c?.file??s?.file,moduleId:r,sourceType:c?.sourceType??i.sourceType,currentBytes:i.bytes,previousBytes:a,deltaBytes:o,advice:ql(u,a===0)})}return t.sort((e,t)=>t.deltaBytes-e.deltaBytes||e.category.localeCompare(t.category)||e.label.localeCompare(t.label))}function Yl(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 Xl(e,t){return{packageId:t.packageId,packageLabel:e.get(t.packageId)??t.packageId,files:t.files}}function Zl(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 Ql(e,t){return{sourceType:e,sourceCategory:t,count:0,bytes:0}}function $l(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 eu(e){return e.result?e.result.modules.filter(e=>e.packages.length>1).map(t=>{let n=e.moduleInfoMap.get(t.id),r=t.packages.map(t=>Xl(e.packageLabelMap,t)),i=n?.bytes??n?.originalBytes??0,a=i*Math.max(t.packages.length-1,0);return{id:t.id,source:t.source,sourceType:t.sourceType,packageCount:t.packages.length,bytes:i,estimatedSavingBytes:a,advice:$l(t.sourceType,r,e.packageTypeMap,a),packages:r}}).sort((e,t)=>t.estimatedSavingBytes-e.estimatedSavingBytes||t.packageCount-e.packageCount||t.bytes-e.bytes||e.source.localeCompare(t.source)):[]}function tu(e,t){let n=new Map;for(let r of e?.modules??[]){let e=t.get(r.id),i=Zl(r.source,r.sourceType),a=`${r.sourceType}:${i}`,o=n.get(a)??Ql(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 nu(e,t){return{label:e,value:t}}function ru(e,t,n){let r=Q(t),i=n.get(Il(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:Pl(t),compressedSizeSource:Fl(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 iu(e,t,n){let r=Q(t),i=n.get(Il(e,t.file));return{file:t.file,size:r,gzipSize:t.gzipSize,brotliSize:t.brotliSize,compressedSize:Pl(t),compressedSizeSource:Fl(t),sizeDeltaBytes:typeof i==`number`?r-i:void 0,type:t.type,from:t.from,isEntry:!!t.isEntry,moduleCount:t.modules?.length??0}}function au(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+fe(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+Pl(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 ou(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])=>nu(e,t)).sort((e,t)=>t.value-e.value||e.label.localeCompare(t.label))}function su(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=>iu(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+Pl(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 cu(e,t){let n=[];for(let r of e?.packages??[])for(let e of r.files)n.push(ru(r,e,t));return n.sort((e,t)=>t.size-e.size||e.file.localeCompare(t.file)).slice(0,18)}function lu(e,t){let n=T(()=>Ll(t?.value??null)),r=T(()=>new Map((e.value?.packages??[]).map(e=>[e.id,e.label]))),i=T(()=>new Map((e.value?.packages??[]).map(e=>[e.id,e.type]))),a=T(()=>zl(e.value)),o=T(()=>Wl(e.value)),s=T(()=>Gl(e.value)),c=T(()=>Jl({result:e.value,previousResult:t?.value,previousMaps:n.value,moduleInfoMap:a.value})),l=T(()=>Yl(c.value));return{summary:T(()=>au({result:e.value,previousMaps:n.value,budgetWarnings:o.value})),packageTypeSummary:T(()=>ou(e.value)),packageInsights:T(()=>su(e.value,n.value)),largestFiles:T(()=>cu(e.value,n.value.fileBytes)),duplicateModules:T(()=>eu({result:e.value,moduleInfoMap:a.value,packageLabelMap:r.value,packageTypeMap:i.value})),moduleSourceSummary:T(()=>tu(e.value,a.value)),budgetWarnings:o,budgetLimitItems:s,incrementAttribution:c,incrementSummary:l,subPackages:T(()=>e.value?.subPackages??[])}}var uu=[`action`,`file`,`budget`],du=[`critical`,`warning`,`info`,`success`],fu=[`overview`,`diagnostics`,`treemap`,`files`,`source`,`packages`,`modules`];function pu(){return new Date().toISOString()}function mu(e,t){return typeof e==`string`&&t.includes(e)}function hu(e){if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.id==`string`&&mu(t.targetKind,uu)&&typeof t.targetKey==`string`&&typeof t.title==`string`&&typeof t.meta==`string`&&mu(t.tone,du)&&mu(t.tab,fu)&&typeof t.createdAt==`string`}function gu(e){if(!Array.isArray(e))return[];let t=new Map;for(let n of e)hu(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 _u(e,t=pu()){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 vu(e){let t=gu(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(`
16
+ `):[]}function $s(e){return new TextEncoder().encode(e).byteLength}function ec(e){let t=new Map;for(let n of e)t.set(n,(t.get(n)??0)+1);return t}function tc(e,t){let n=Qs(e),r=Qs(t),i=ec(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=$s(e),s=$s(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 nc(e){return e===0?`无变化`:`${e>0?`+`:`-`}${V(Math.abs(e))}`}function rc(e){return`${Math.round(e*100)}%`}function ic(e){let t=e.unchangedLineRatio>=.7?`success`:e.unchangedLineRatio>=.35?`info`:`warning`,n=e.byteDelta>10*1024?`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:rc(e.unchangedLineRatio),detail:t===`warning`?`源码行在产物中保留较少,建议检查编译注入、运行时包装或转译膨胀。`:t===`success`?`源码结构在产物中较容易追踪,适合继续逐段定位差异。`:`产物保留了部分源码结构,可结合 diff 继续确认主要变化段。`,tone:t},{id:`size`,label:`字节影响`,value:nc(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 ac(e){let t=e.insights??ic(e.stats);return[`# dashboard 源码对比摘要`,``,`源码:${e.sourcePath}`,`产物:${e.artifactPath}`,``,`- 源码行数:${e.stats.sourceLines}`,`- 产物行数:${e.stats.artifactLines}`,`- 估算新增行:${e.stats.addedLines}`,`- 估算删除行:${e.stats.removedLines}`,`- 字节变化:${nc(e.stats.byteDelta)}`,`- 未变更行占比:${Math.round(e.stats.unchangedLineRatio*100)}%`,``,`## 洞察`,...t.map(e=>`- ${e.label}(${e.value}):${e.detail}`),``].join(`
17
+ `)}function oc(e){let t=m(),n=m(``),r=m(``),i=g(null),a=g(null),o=m(``),s=m(!1),c=g(null),l,d,p,h=0,_=T(()=>e.files.value.map(e=>({key:qs(e),label:`${e.packageLabel} · ${e.file}`,file:e}))),v=T(()=>_.value.find(e=>e.key===n.value)?.file??e.files.value[0]??null),y=T(()=>Zs(v.value)),b=T(()=>s.value?`加载中`:o.value?o.value:i.value&&a.value?`${i.value.path} ↔ ${a.value.path}`:`等待文件`),x=T(()=>i.value&&a.value?tc(i.value.content,a.value.content):null);function S(){return e.activeFileKey.value&&_.value.some(t=>t.key===e.activeFileKey.value)?e.activeFileKey.value:_.value[0]?.key??``}function C(){l?.setModel(null),d?.dispose(),p?.dispose(),d=void 0,p=void 0}function w(){let e=c.value;!e||!l||!i.value||!a.value||(C(),d=e.editor.createModel(i.value.content,i.value.language,e.Uri.parse(`weapp-source://model/${encodeURIComponent(i.value.path)}`)),p=e.editor.createModel(a.value.content,a.value.language,e.Uri.parse(`weapp-artifact://model/${encodeURIComponent(a.value.path)}`)),l.setModel({original:d,modified:p}))}async function E(){if(c.value||!t.value)return;let n=await ae(()=>import(`./monaco.js`).then(e=>e.o),__vite__mapDeps([0]),import.meta.url);c.value=n,Us(n),n.editor.setTheme(Ws(e.theme.value)),l=n.editor.createDiffEditor(t.value,{automaticLayout:!0,minimap:{enabled:!1},originalEditable:!1,readOnly:!0,renderSideBySide:!0,scrollBeyondLastLine:!1})}async function O(){let t=++h,n=r.value,c=v.value;if(!n||!c){i.value=null,a.value=null,o.value=y.value.length===0?`无源码候选`:``,C();return}s.value=!0,o.value=``,e.onSelectFile(c);try{let[e,r]=await Promise.all([Xs(`source`,n),Xs(`artifact`,c.file)]);if(t!==h)return;i.value=e,a.value=r,await u(),await E(),w()}catch(e){if(t!==h)return;i.value=null,a.value=null,C(),o.value=e instanceof Error?e.message:`文件读取失败`}finally{t===h&&(s.value=!1)}}return f(()=>[e.activeFileKey.value,_.value.map(e=>e.key).join(`\0`)],()=>{n.value=S()},{immediate:!0}),f(y,e=>{r.value=e[0]??``},{immediate:!0}),f([n,r],()=>{O()},{immediate:!0}),f(e.theme,e=>{c.value?.editor.setTheme(Ws(e))}),D(()=>{C(),l?.dispose()}),{artifactContent:a,artifactOptions:_,compareStats:x,editorElement:t,loadComparison:O,loadError:o,loading:s,selectedArtifactKey:n,selectedSourcePath:r,sourceContent:i,sourceOptions:y,statusText:b}}var sc={class:`grid h-full min-h-0 grid-rows-[auto_minmax(0,1fr)] gap-3 overflow-hidden rounded-lg border border-(--dashboard-border) bg-(--dashboard-panel) p-3 shadow-(--dashboard-shadow)`},cc={class:`grid gap-3`},lc={class:`flex flex-wrap items-center justify-between gap-3`},uc={class:`mt-1 text-xs text-(--dashboard-text-soft)`},dc={class:`flex items-center gap-2`},fc={key:0,class:`text-xs font-medium text-(--dashboard-accent)`},pc=[`disabled`],mc=[`disabled`],hc={class:`grid gap-2 lg:grid-cols-2`},gc=[`value`],_c=[`value`],vc={key:0,class:`grid gap-2 lg:grid-cols-[minmax(0,1fr)_auto] lg:items-center`},yc={class:`grid grid-cols-2 gap-2 xl:grid-cols-4`},bc={class:`text-xs text-(--dashboard-text-soft)`},xc={key:1,class:`grid gap-2 lg:grid-cols-3`},Sc={class:`flex items-start justify-between gap-3`},Cc={class:`text-xs font-semibold uppercase tracking-[0.14em] opacity-80`},wc={class:`shrink-0 text-sm font-semibold`},Tc={class:`mt-2 line-clamp-2 text-xs leading-5 opacity-80`},Ec={class:`min-h-0 overflow-hidden rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted)`},Dc=n({__name:`SourceArtifactComparePanel`,props:{activeFileKey:{},files:{},theme:{}},emits:[`selectFile`],setup(e,{emit:n}){let i=e,o=n,{activeFileKey:s,files:u,theme:d}=a(i),f=m(``),p=null,{artifactContent:g,artifactOptions:v,compareStats:b,editorElement:x,loadComparison:C,loadError:ee,loading:k,selectedArtifactKey:M,selectedSourcePath:N,sourceContent:P,sourceOptions:te,statusText:ne}=oc({activeFileKey:s,files:u,theme:d,onSelectFile(e){o(`selectFile`,e)}}),re=T(()=>b.value?[{label:`源码行数`,value:String(b.value.sourceLines)},{label:`产物行数`,value:String(b.value.artifactLines)},{label:`新增 / 删除`,value:`${b.value.addedLines} / ${b.value.removedLines}`},{label:`字节变化`,value:nc(b.value.byteDelta)}]:[]),ie=T(()=>b.value?`${V(b.value.sourceBytes)} → ${V(b.value.artifactBytes)}`:``),ae=T(()=>b.value?ic(b.value):[]);function oe(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 se(e){f.value=e,p&&clearTimeout(p),p=setTimeout(()=>{f.value=``,p=null},1800)}async function z(){if(!(!b.value||!P.value||!g.value))try{await W(ac({sourcePath:P.value.path,artifactPath:g.value.path,stats:b.value,insights:ae.value})),se(`已复制`)}catch{se(`复制失败`)}}return D(()=>{p&&clearTimeout(p)}),(e,n)=>(E(),L(`section`,sc,[w(`div`,cc,[w(`div`,lc,[w(`div`,null,[n[3]||=w(`h2`,{class:`text-lg font-semibold text-(--dashboard-text)`},` 源码对比 `,-1),w(`p`,uc,_(c(ne)),1)]),w(`div`,dc,[f.value?(E(),L(`span`,fc,_(f.value),1)):F(``,!0),w(`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:!c(b),onClick:z},` 复制摘要 `,8,pc),w(`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:c(k)||!c(M)||!c(N),onClick:n[0]||=(...e)=>c(C)&&c(C)(...e)},` 刷新 `,8,mc)])]),w(`div`,hc,[t(w(`select`,{"onUpdate:modelValue":n[1]||=e=>h(N)?N.value=e:null,class:`h-9 min-w-0 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-2.5 text-sm text-(--dashboard-text) outline-none transition focus:border-(--dashboard-accent)`},[n[4]||=w(`option`,{value:``},` 源码文件 `,-1),(E(!0),L(A,null,l(c(te),e=>(E(),L(`option`,{key:e,value:e},_(e),9,gc))),128))],512),[[O,c(N)]]),t(w(`select`,{"onUpdate:modelValue":n[2]||=e=>h(M)?M.value=e:null,class:`h-9 min-w-0 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-2.5 text-sm text-(--dashboard-text) outline-none transition focus:border-(--dashboard-accent)`},[(E(!0),L(A,null,l(c(v),e=>(E(),L(`option`,{key:e.key,value:e.key},_(e.label),9,_c))),128))],512),[[O,c(M)]])]),c(b)?(E(),L(`div`,vc,[w(`div`,yc,[(E(!0),L(A,null,l(re.value,e=>(E(),y(K,r({key:e.label},{ref_for:!0},e),null,16))),128))]),w(`p`,bc,_(ie.value),1)])):F(``,!0),ae.value.length?(E(),L(`div`,xc,[(E(!0),L(A,null,l(ae.value,e=>(E(),L(`article`,{key:e.id,class:j([`rounded-md border px-3 py-2.5`,oe(e.tone)])},[w(`div`,Sc,[w(`p`,Cc,_(e.label),1),w(`p`,wc,_(e.value),1)]),w(`p`,Tc,_(e.detail),1)],2))),128))])):F(``,!0)]),w(`div`,Ec,[t(w(`div`,{ref_key:`editorElement`,ref:x,class:`h-full min-h-96`},null,512),[[S,c(P)&&c(g)]]),!c(P)||!c(g)?(E(),y(G,{key:0,class:`m-3 h-[calc(100%-1.5rem)]`},{default:R(()=>[I(_(c(ee)||`暂无可对比文件。`),1)]),_:1})):F(``,!0)])]))}}),Oc={class:`flex items-center gap-2`},kc=[`disabled`],Ac={class:`mb-2 flex flex-wrap items-center justify-between gap-2 px-2`},jc={class:`flex flex-wrap gap-1.5`},Mc=[`disabled`,`onClick`],Nc={class:`flex flex-wrap items-center gap-2 text-[11px] text-(--dashboard-text-soft)`},Pc={class:`relative min-h-0 flex-1 overflow-hidden rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-2`},Fc=`Treemap`,Ic=`从包体到文件再到模块,直接定位体积热点。`,Lc=n({__name:`TreemapCard`,props:{bindChartRef:{type:Function},canFocusSelected:{type:Boolean},filterMode:{},filterOptions:{},canUseSelectedPackageFilter:{type:Boolean},isEmpty:{type:Boolean},theme:{}},emits:[`focusSelected`,`resetFocus`,`updateFilterMode`],setup(e,{emit:t}){let n=e,r=t,i=T(()=>n.theme===`dark`?[{label:`健康`,color:`#166853`},{label:`关注`,color:`#75601f`},{label:`急需改进`,color:`#81323a`}]:[{label:`健康`,color:`#8fd3ad`},{label:`关注`,color:`#ead486`},{label:`急需改进`,color:`#eaa39b`}]);function a(){return U({kind:`badge`})}function o(e){return e.value!==`selected-package`||n.canUseSelectedPackageFilter}function s(e){n.bindChartRef(e instanceof Element?e:null)}return(t,n)=>(E(),L(`div`,{class:j([c(z)({padding:`sm`}),`flex h-full min-h-0 flex-col overflow-hidden`])},[p(X,{class:`mb-2 px-2`,"icon-name":`treemap`,title:Fc,description:Ic},{meta:R(()=>[w(`div`,Oc,[w(`button`,{class:j([a(),e.canFocusSelected?void 0:`cursor-not-allowed opacity-45`]),disabled:!e.canFocusSelected,type:`button`,onClick:n[0]||=e=>r(`focusSelected`)},` 聚焦选中 `,10,kc),w(`button`,{class:j(a()),type:`button`,onClick:n[1]||=e=>r(`resetFocus`)},` 重置 `,2)])]),_:1}),w(`div`,Ac,[w(`div`,jc,[(E(!0),L(A,null,l(e.filterOptions,t=>(E(),L(`button`,{key:t.value,class:j([c(U)({kind:`badge`,active:e.filterMode===t.value}),o(t)?void 0:`cursor-not-allowed opacity-45`]),disabled:!o(t),type:`button`,onClick:e=>r(`updateFilterMode`,t.value)},_(t.label),11,Mc))),128))]),w(`div`,Nc,[(E(!0),L(A,null,l(i.value,e=>(E(),L(`span`,{key:e.label,class:`inline-flex items-center gap-1.5`},[w(`span`,{class:`h-2.5 w-2.5 rounded-full border border-(--dashboard-border)`,style:v({backgroundColor:e.color})},null,4),I(` `+_(e.label),1)]))),128))])]),w(`div`,Pc,[w(`div`,{ref:s,class:`h-full min-h-0 w-full`}),e.isEmpty?(E(),y(G,{key:0,class:`absolute inset-3 z-10 grid place-items-center`,compact:``},{default:R(()=>[...n[2]||=[I(` 当前过滤条件下没有可展示节点。 `,-1)]]),_:1})):F(``,!0)])],2))}}),Rc={key:0,class:`min-h-0 overflow-hidden`},zc={key:1,class:`min-h-0 overflow-hidden`},Bc={key:2,class:`min-h-0 overflow-hidden`},Vc={key:3,class:`min-h-0 overflow-hidden`},Hc={key:4,class:`min-h-0 overflow-hidden`},Uc={key:5,class:`min-h-0 overflow-hidden`},Wc={key:6,class:`min-h-0 overflow-hidden`},Gc={key:7,class:`min-h-0 overflow-hidden`},Kc=n({__name:`AnalyzeResultSections`,props:{actionItems:{},activeBudgetWarningId:{},activeLargestFileKey:{},activeTab:{},activeWorkQueueItemId:{},baselineSnapshotId:{},budgetConfig:{},budgetWarnings:{},canUseSelectedPackageFilter:{type:Boolean},comparisonMode:{},copyStatus:{},diagnosticsLayoutItems:{},filteredDuplicateModules:{},filteredLargestFiles:{},historySnapshots:{},incrementAttribution:{},incrementSummary:{},isTreemapEmpty:{type:Boolean},largestFiles:{},metricPackageTypeSummary:{},moduleSourceSummary:{},modulesLayoutItems:{},overviewLayoutItems:{},packageInsights:{},packagesLayoutItems:{},prReviewChecklist:{},queuedActionKeys:{},reviewLayoutItems:{},selectedTreemapFocusNodeId:{},selectedTreemapMeta:{},selectedActionKey:{},selectedFileModules:{},sourceLayoutItems:{},theme:{},topCards:{},totalBytes:{},treemapFilterMode:{},treemapFilterOptions:{},treemapLayoutItems:{},visibleLargestFiles:{},workQueueItems:{},bindChartRef:{type:Function}},emits:[`addActionToQueue`,`clearCompletedWorkQueue`,`copyPr`,`copyReviewChecklist`,`copyWorkQueue`,`focusTreemapSelection`,`removeWorkQueueItem`,`resetTreemapFocus`,`selectAction`,`selectBudgetWarning`,`selectFile`,`selectPackage`,`selectReviewChecklistItem`,`selectWorkQueueItem`,`setBaseline`,`setComparisonMode`,`toggleWorkQueueItem`,`updateTreemapFilterMode`],setup(e,{emit:t}){let n=t;return(t,r)=>e.activeTab===`overview`?(E(),L(`section`,Rc,[p(q,{"grid-class":`grid h-full min-h-0 gap-2 overflow-hidden`,items:e.overviewLayoutItems,"storage-key":`weapp-vite:dashboard:analyze-layout:overview`},{metrics:R(()=>[p(va,{"action-items":e.actionItems,cards:e.topCards,"largest-files":e.largestFiles,"package-insights":e.packageInsights,"package-type-summary":e.metricPackageTypeSummary,onCopyReport:r[0]||=e=>n(`copyPr`),onSelectAction:r[1]||=e=>n(`selectAction`,e),onSelectFile:r[2]||=e=>n(`selectFile`,e),onSelectPackage:r[3]||=e=>n(`selectPackage`,e)},null,8,[`action-items`,`cards`,`largest-files`,`package-insights`,`package-type-summary`])]),_:1},8,[`items`])])):e.activeTab===`diagnostics`?(E(),L(`section`,zc,[p(pi,{"action-items":e.actionItems,"active-work-queue-item-id":e.activeWorkQueueItemId,"baseline-snapshot-id":e.baselineSnapshotId,"comparison-mode":e.comparisonMode,"history-snapshots":e.historySnapshots,"layout-items":e.diagnosticsLayoutItems,"queued-action-keys":e.queuedActionKeys,"selected-action-key":e.selectedActionKey,"work-queue-items":e.workQueueItems,onAddActionToQueue:r[4]||=e=>n(`addActionToQueue`,e),onClearCompletedWorkQueue:r[5]||=e=>n(`clearCompletedWorkQueue`),onCopyPr:r[6]||=e=>n(`copyPr`),onCopyWorkQueue:r[7]||=e=>n(`copyWorkQueue`),onRemoveWorkQueueItem:r[8]||=e=>n(`removeWorkQueueItem`,e),onSelectAction:r[9]||=e=>n(`selectAction`,e),onSelectWorkQueueItem:r[10]||=e=>n(`selectWorkQueueItem`,e),onSetBaseline:r[11]||=e=>n(`setBaseline`,e),onSetComparisonMode:r[12]||=e=>n(`setComparisonMode`,e),onToggleWorkQueueItem:r[13]||=e=>n(`toggleWorkQueueItem`,e)},null,8,[`action-items`,`active-work-queue-item-id`,`baseline-snapshot-id`,`comparison-mode`,`history-snapshots`,`layout-items`,`queued-action-keys`,`selected-action-key`,`work-queue-items`])])):e.activeTab===`review`?(E(),L(`section`,Bc,[p(q,{"grid-class":`grid h-full min-h-0 gap-2 overflow-hidden`,items:e.reviewLayoutItems,"storage-key":`weapp-vite:dashboard:analyze-layout:review`},{review:R(()=>[p(Bs,{checklist:e.prReviewChecklist,"copy-status":e.copyStatus,onCopy:r[14]||=e=>n(`copyReviewChecklist`),onSelect:r[15]||=e=>n(`selectReviewChecklistItem`,e)},null,8,[`checklist`,`copy-status`])]),_:1},8,[`items`])])):e.activeTab===`treemap`?(E(),L(`section`,Vc,[p(q,{"grid-class":`grid h-full min-h-0 gap-2 overflow-hidden`,items:e.treemapLayoutItems,"storage-key":`weapp-vite:dashboard:analyze-layout:treemap`},{treemap:R(()=>[p(Lc,{"bind-chart-ref":e.bindChartRef,"can-focus-selected":!!e.selectedTreemapFocusNodeId,"filter-mode":e.treemapFilterMode,"filter-options":e.treemapFilterOptions,"can-use-selected-package-filter":e.canUseSelectedPackageFilter,"is-empty":e.isTreemapEmpty,theme:e.theme,onFocusSelected:r[16]||=e=>n(`focusTreemapSelection`),onResetFocus:r[17]||=e=>n(`resetTreemapFocus`),onUpdateFilterMode:r[18]||=e=>n(`updateTreemapFilterMode`,e)},null,8,[`bind-chart-ref`,`can-focus-selected`,`filter-mode`,`filter-options`,`can-use-selected-package-filter`,`is-empty`,`theme`])]),_:1},8,[`items`])])):e.activeTab===`files`?(E(),L(`section`,Hc,[p(An,{"largest-files":e.filteredLargestFiles,"selected-file-modules":e.selectedFileModules,"budget-warnings":e.budgetWarnings,"budget-config":e.budgetConfig,"package-insights":e.packageInsights,"total-bytes":e.totalBytes,"active-budget-warning-id":e.activeBudgetWarningId,"active-largest-file-key":e.activeLargestFileKey,"selected-treemap-meta":e.selectedTreemapMeta,onSelectBudgetWarning:r[19]||=e=>n(`selectBudgetWarning`,e),onSelectFile:r[20]||=e=>n(`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`])])):e.activeTab===`source`?(E(),L(`section`,Uc,[p(q,{"grid-class":`grid h-full min-h-0 gap-2 overflow-hidden`,items:e.sourceLayoutItems,"storage-key":`weapp-vite:dashboard:analyze-layout:source`},{source:R(()=>[p(Dc,{"active-file-key":e.activeLargestFileKey,files:e.filteredLargestFiles,theme:e.theme,onSelectFile:r[21]||=e=>n(`selectFile`,e)},null,8,[`active-file-key`,`files`,`theme`])]),_:1},8,[`items`])])):e.activeTab===`packages`?(E(),L(`section`,Wc,[p(q,{"grid-class":`grid h-full min-h-0 gap-2 overflow-hidden`,items:e.packagesLayoutItems,"storage-key":`weapp-vite:dashboard:analyze-layout:packages`},{packages:R(()=>[p(ys,{"package-insights":e.packageInsights,"budget-warnings":e.budgetWarnings,"selected-treemap-meta":e.selectedTreemapMeta},null,8,[`package-insights`,`budget-warnings`,`selected-treemap-meta`])]),_:1},8,[`items`])])):(E(),L(`section`,Gc,[p(q,{"grid-class":`grid h-full min-h-0 gap-2 overflow-hidden`,items:e.modulesLayoutItems,"storage-key":`weapp-vite:dashboard:analyze-layout:modules`},{modules:R(()=>[p(ho,{"duplicate-modules":e.filteredDuplicateModules,"module-source-summary":e.moduleSourceSummary,"increment-attribution":e.incrementAttribution,"increment-summary":e.incrementSummary,"visible-largest-files":e.visibleLargestFiles},null,8,[`duplicate-modules`,`module-source-summary`,`increment-attribution`,`increment-summary`,`visible-largest-files`])]),_:1},8,[`items`])]))}}),qc={class:`h-4.5 w-4.5`},Jc={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)`},Yc=[`onClick`],Xc={class:`mt-0.5 h-4.5 w-4.5 text-(--dashboard-text-soft)`},Zc={class:`min-w-0`},Qc={class:`block font-medium`},$c={class:`mt-0.5 block text-xs leading-5 text-(--dashboard-text-soft)`},el=n({__name:`AnalyzeExportMenu`,props:{open:{type:Boolean}},emits:[`update:open`,`copySummary`,`copyMarkdown`,`copyPr`,`exportJson`,`exportMarkdown`,`exportCsv`],setup(e,{emit:t}){let n=t,r=[{key:`summary`,label:`复制摘要`,description:`关键指标和首要风险,适合 IM 快速同步。`,iconName:`metric-copy`,action:()=>n(`copySummary`)},{key:`markdown-copy`,label:`复制完整报告`,description:`包含预算、包体、Top 文件和重复模块表格。`,iconName:`file-samples`,action:()=>n(`copyMarkdown`)},{key:`pr`,label:`复制 PR 摘要`,description:`面向评审评论的增量、预算和重复模块摘要。`,iconName:`metric-copy`,action:()=>n(`copyPr`)},{key:`json`,label:`导出 JSON`,description:`保留原始 analyze payload,适合离线排查。`,iconName:`metric-size-outline`,action:()=>n(`exportJson`)},{key:`markdown`,label:`导出 MD`,description:`生成完整 Markdown 报告文件。`,iconName:`file-samples`,action:()=>n(`exportMarkdown`)},{key:`csv`,label:`导出 CSV`,description:`导出包、文件、重复模块和增量归因明细。`,iconName:`file-samples`,action:()=>n(`exportCsv`)}];return(t,i)=>(E(),L(`div`,{class:`relative shrink-0`,onClick:i[1]||=C(()=>{},[`stop`])},[w(`button`,{class:j(c(U)({kind:`nav`,active:e.open})),type:`button`,onClick:i[0]||=t=>n(`update:open`,!e.open)},[w(`span`,qc,[p(B,{name:`nav-menu`})]),i[2]||=I(` 更多 `,-1)],2),e.open?(E(),L(`div`,Jc,[(E(),L(A,null,l(r,e=>w(`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},[w(`span`,Xc,[p(B,{name:e.iconName},null,8,[`name`])]),w(`span`,Zc,[w(`span`,Qc,_(e.label),1),w(`span`,$c,_(e.description),1)])],8,Yc)),64))])):F(``,!0)]))}}),tl={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)`},nl={class:`flex min-w-0 flex-1 flex-nowrap items-center gap-2 overflow-x-auto pb-0.5`},rl={class:`h-4.5 w-4.5`},il={class:`h-4.5 w-4.5`},al=[`disabled`],ol={class:`h-4.5 w-4.5`},sl=n({__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,{emit:t}){let n=t;return(t,i)=>(E(),L(`section`,tl,[w(`div`,nl,[e.canSearch?(E(),L(`button`,{key:0,class:j([`shrink-0`,c(U)({kind:`nav`,active:!1})]),onClick:i[0]||=e=>n(`openSearch`)},[w(`span`,rl,[p(B,{name:`metric-search`})]),i[10]||=I(` 搜索 `,-1)],2)):F(``,!0),e.canSearch?(E(),L(`button`,{key:1,class:j([`shrink-0`,c(U)({kind:`nav`,active:!1})]),onClick:i[1]||=e=>n(`copyViewLink`)},[w(`span`,il,[p(B,{name:`metric-link`})]),i[11]||=I(` 复制视图 `,-1)],2)):F(``,!0),e.canSearch?(E(),L(`button`,{key:2,class:j([`shrink-0 disabled:cursor-not-allowed disabled:opacity-55`,c(U)({kind:`nav`,active:!1})]),disabled:!e.canResetView,onClick:i[2]||=e=>n(`resetView`)},[w(`span`,ol,[p(B,{name:`metric-reset`})]),i[12]||=I(` 重置视图 `,-1)],10,al)):F(``,!0),e.exportStatus?(E(),y(se,{key:3,class:`shrink-0`,label:e.exportStatus,uppercase:``},null,8,[`label`])):F(``,!0),e.openWorkQueueCount>0?(E(),y(se,{key:4,class:`shrink-0`,"icon-name":`metric-bookmark`,label:`${e.openWorkQueueCount} 个待处理`,uppercase:``},null,8,[`label`])):F(``,!0),(E(!0),L(A,null,l(e.statusPills,e=>(E(),y(se,r({key:e.label,class:`shrink-0`},{ref_for:!0},e,{uppercase:``}),null,16))),128))]),e.canSearch?(E(),y(el,{key:0,open:e.moreMenuOpen,"onUpdate:open":i[3]||=e=>n(`update:moreMenuOpen`,e),onCopyMarkdown:i[4]||=e=>n(`copyMarkdown`),onCopyPr:i[5]||=e=>n(`copyPr`),onCopySummary:i[6]||=e=>n(`copySummary`),onExportCsv:i[7]||=e=>n(`exportCsv`),onExportJson:i[8]||=e=>n(`exportJson`),onExportMarkdown:i[9]||=e=>n(`exportMarkdown`)},null,8,[`open`])):F(``,!0)]))}});function cl(e){return e===`blocked`?`Blocked`:e===`review`?`Review`:`Ready`}function ll(e){return e===`blocked`?`PR 合并前仍有阻断项`:e===`review`?`建议完成复核后再合并`:`当前清单未发现发布风险`}function ul(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 dl(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 fl(e){return e.items.length===0?[`- [x] ${e.emptyText}`]:e.items.map(e=>`- [${e.checked?`x`:` `}] ${e.title}:${e.detail}`)}function pl(e){return[`## PR 风险清单`,``,`状态:${e.label}`,e.headline,``,...e.metrics.map(e=>`- ${e.label}:${e.value}`),``,...e.lanes.flatMap(e=>[`### ${e.title}`,``,...fl(e),``])].join(`
18
+ `)}function ml(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(ul),emptyText:`没有阻断项。`},{key:`verification`,title:`评审复核`,description:`需要 reviewer 主动确认的高风险变化。`,items:n.slice(0,6).map(ul),emptyText:`没有需要额外复核的风险。`},{key:`followups`,title:`后续跟进`,description:`来自处理清单和剩余建议动作的后续事项。`,items:[...r.slice(0,4).map(dl),...o.map(ul)].slice(0,6),emptyText:i.length>0?`处理清单已完成。`:`没有待跟进事项。`}],l={status:s,label:cl(s),headline:ll(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:pl(l)}}var Z=`\0`,hl=[{itemStyle:{borderWidth:3,gapWidth:4},upperLabel:{show:!0,height:32,color:`#17231d`,fontWeight:`700`,lineHeight:16,overflow:`truncate`,textBorderWidth:0,textShadowBlur:1,textShadowColor:`rgba(255, 255, 255, 0.32)`}},{itemStyle:{borderWidth:2,gapWidth:2}},{itemStyle:{borderWidth:1,gapWidth:1}}];function gl(e){return`package${Z}${e}`}function _l(e,t){return`file${Z}${e}${Z}${t}`}function vl(e,t,n){return`module${Z}${e}${Z}${t}${Z}${n}`}function yl(e,t){return`asset${Z}${e}${Z}${t}`}function bl(e){if(!e)return``;let t=[];return e.kind===`package`?(t.push(`<strong>${e.packageLabel}</strong>`),t.push(`类型:${e.packageType}`),t.push(`产物数量:${e.fileCount}`),e.totalBytes&&t.push(`累计体积:${V(e.totalBytes)}`)):e.kind===`file`?(t.push(`<strong>${e.fileName}</strong>`),t.push(`所属:${e.packageLabel}`),t.push(`类型:${e.type===`chunk`?`代码 chunk`:`资源`} · 来源:${e.from}`),t.push(`体积:${V(e.bytes)}`),e.childCount>0&&t.push(`模块数量:${e.childCount}`)):e.kind===`module`?(t.push(`<strong>${e.source}</strong>`),t.push(`所属:${e.packageLabel} → ${e.fileName}`),t.push(`源码类型:${de(e.sourceType)}`),t.push(`模块体积:${V(e.bytes??e.originalBytes)}`),e.packageCount>1&&t.push(`跨包复用:${e.packageCount} 次`)):e.kind===`asset`&&(t.push(`<strong>${e.source}</strong>`),t.push(`所属:${e.packageLabel} → ${e.fileName}`),t.push(`资源体积:${V(e.bytes)}`)),t.join(`<br/>`)}function xl(e){return`${(e.ratio*100).toFixed(1)}%`}function Sl(e,t,n){if(!(!t||!n))return e.find(e=>e.packageId===t&&e.file===n)}function Cl(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:`可省 ${V(e.estimatedSavingBytes)}`,tone:e.estimatedSavingBytes>1024?`warning`:`info`,tab:`modules`,priority:72+Math.min(e.estimatedSavingBytes/1024,18),moduleMeta:n&&i?{kind:`module`,nodeId:vl(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 wl(e,t,n){let r=Sl(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:vl(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:`+${V(e.deltaBytes)}`,tone:e.deltaBytes>1024?`warning`:`info`,tab:r?`files`:`modules`,priority:80+Math.min(e.deltaBytes/1024,15),file:r,moduleMeta:a}}function Tl(e){return{actionItems:T(()=>{let t=[];for(let n of e.budgetWarnings.value)t.push({key:`budget:${n.id}`,kind:`budget`,title:`处理 ${n.label} 预算`,meta:`${n.status===`critical`?`已超预算`:`接近预算`} · 当前 ${V(n.currentBytes)} / ${V(n.limitBytes)}`,value:xl(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(wl(n,e.largestFiles.value,e.packageInsights.value));for(let n of e.duplicateModules.value.filter(e=>e.estimatedSavingBytes>0).slice(0,12))t.push(Cl(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} · 压缩后 ${V(n.compressedSize)}`,value:V(n.size),tone:`success`,tab:`files`,priority:45,file:n}),t.sort((e,t)=>t.priority-e.priority||e.title.localeCompare(t.title))})}}function El(e){return e.filter(e=>e!==void 0&&e!==``).join(` `).toLowerCase()}function Dl(e,t,n){return e.find(e=>e.id===t||e.label===n)}function Ol(e,t,n){if(!(!t||!n))return e.find(e=>e.packageId===t&&e.file===n)}function kl(e){return{key:`package:${e.id}`,kind:`package`,title:e.label,meta:`${H(e.type)} · ${e.fileCount} 个产物 · ${e.moduleCount} 个模块`,value:V(e.totalBytes),keywords:El([e.id,e.label,e.type,e.totalBytes]),tab:`packages`,packageMeta:{kind:`package`,nodeId:gl(e.id),packageId:e.id,packageLabel:e.label,packageType:e.type,fileCount:e.fileCount,totalBytes:e.totalBytes}}}function Al(e){return{key:`file:${e.packageId}:${e.file}`,kind:`file`,title:e.file,meta:`${e.packageLabel} · ${e.type} · 压缩后 ${V(e.compressedSize)}`,value:V(e.size),keywords:El([e.packageId,e.packageLabel,e.file,e.type,e.source,e.size]),tab:`files`,file:e}}function jl(e){return{key:`budget:${e.id}`,kind:`budget`,title:`${e.label} 预算`,meta:`${e.status===`critical`?`已超预算`:`接近预算`} · ${V(e.currentBytes)} / ${V(e.limitBytes)}`,value:`${(e.ratio*100).toFixed(1)}%`,keywords:El([e.id,e.label,e.scope,e.status,e.currentBytes]),tab:`files`,warning:e}}function Ml(e,t){let n=e.packages[0],r=n?.files[0]??``,i=Dl(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:`可省 ${V(e.estimatedSavingBytes)}`,keywords:El([e.id,e.source,e.sourceType,e.packageCount,e.packages.map(e=>e.packageLabel).join(` `)]),tab:`modules`,moduleMeta:n&&i?{kind:`module`,nodeId:vl(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 Nl(e,t,n){let r=Ol(t,e.packageId,e.file),i=Dl(n,e.packageId,e.packageLabel);return{key:`increment:${e.key}`,kind:`increment`,title:e.label,meta:`${e.category} · ${e.advice}`,value:`+${V(e.deltaBytes)}`,keywords:El([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:vl(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 Pl(e){return{key:`action:${e.key}`,kind:`action`,title:e.title,meta:e.meta,value:e.value,keywords:El([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 Fl(e){return{commandItems:T(()=>[...e.actionItems.value.map(Pl),...e.budgetWarnings.value.map(jl),...e.packageInsights.value.map(kl),...e.largestFiles.value.map(Al),...e.duplicateModules.value.map(t=>Ml(t,e.packageInsights.value)),...e.incrementAttribution.value.map(t=>Nl(t,e.largestFiles.value,e.packageInsights.value))])}}var Il=2*1024*1024;function Q(e){return e.size??0}function Ll(e){return e.brotliSize??e.gzipSize??fe(Q(e),e.file,e.type)}function Rl(e){return typeof e.brotliSize==`number`||typeof e.gzipSize==`number`?`real`:`estimated`}function zl(e,t){return`${e}\u0000${t}`}function Bl(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+=Ll(t),n.set(zl(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 Vl(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 Hl(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 Ul(e){if(e!==`virtual`)return Il}function Wl(e,t){let n=t.metadata?.budgets;if(!n)return Ul(e);if(e===`main`)return n.mainBytes;if(e===`subPackage`)return n.subPackageBytes;if(e===`independent`)return n.independentBytes}function Gl(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 Kl(e){return e>=1024*1024?`${(e/1024/1024).toFixed(e%(1024*1024)==0?0:2)} MB`:e>=1024?`${(e/1024).toFixed(e%1024==0?0:2)} KB`:`${e} B`}function ql(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=Gl({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=Wl(n.type,e);if(!i)continue;let a=Gl({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 Jl(e){let t=e?.metadata?.budgets,n=t?.source??`default`;return[{key:`total`,label:`总包预算`,value:`${Kl(t?.totalBytes??20971520)}`,source:n},{key:`main`,label:`主包预算`,value:`${Kl(t?.mainBytes??2097152)}`,source:n},{key:`subPackage`,label:`分包预算`,value:`${Kl(t?.subPackageBytes??2097152)}`,source:n},{key:`independent`,label:`独立分包预算`,value:`${Kl(t?.independentBytes??2097152)}`,source:n}]}function Yl(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 Xl(e,t){return e===`第三方依赖`?`检查依赖边界或公共入口。`:e===`WeVu / runtime`?`排查组件和 API 引用边界。`:e===`样式资源`?`检查样式复用和生成范围。`:t?`确认分包归属和懒加载边界。`:`对比新增引用和共享模块。`}function Zl(e){if(!e.result||!e.previousResult)return[];let t=[],n=Vl(e.result);for(let n of e.result.packages)for(let r of n.files){let i=Q(r),a=e.previousMaps.fileBytes.get(zl(n.id,r.file))??0,o=i-a;if(o<=0)continue;let s=Yl(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:Xl(s,a===0)})}for(let[r,i]of e.moduleInfoMap){let a=e.previousMaps.moduleBytes.get(r)?.bytes??0,o=i.bytes-a;if(o<=0)continue;let s=e.previousMaps.moduleBytes.get(r),c=n.get(r),l=c?.source??s?.source??r,u=Yl(l,c?.sourceType??i.sourceType);t.push({key:`module:${r}`,label:l,category:u,packageId:c?.packageId??s?.packageId,packageLabel:c?.packageLabel??s?.packageLabel??``,file:c?.file??s?.file,moduleId:r,sourceType:c?.sourceType??i.sourceType,currentBytes:i.bytes,previousBytes:a,deltaBytes:o,advice:Xl(u,a===0)})}return t.sort((e,t)=>t.deltaBytes-e.deltaBytes||e.category.localeCompare(t.category)||e.label.localeCompare(t.label))}function Ql(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 $l(e,t){return{packageId:t.packageId,packageLabel:e.get(t.packageId)??t.packageId,files:t.files}}function eu(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 tu(e,t){return{sourceType:e,sourceCategory:t,count:0,bytes:0}}function nu(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 ru(e){return e.result?e.result.modules.filter(e=>e.packages.length>1).map(t=>{let n=e.moduleInfoMap.get(t.id),r=t.packages.map(t=>$l(e.packageLabelMap,t)),i=n?.bytes??n?.originalBytes??0,a=i*Math.max(t.packages.length-1,0);return{id:t.id,source:t.source,sourceType:t.sourceType,packageCount:t.packages.length,bytes:i,estimatedSavingBytes:a,advice:nu(t.sourceType,r,e.packageTypeMap,a),packages:r}}).sort((e,t)=>t.estimatedSavingBytes-e.estimatedSavingBytes||t.packageCount-e.packageCount||t.bytes-e.bytes||e.source.localeCompare(t.source)):[]}function iu(e,t){let n=new Map;for(let r of e?.modules??[]){let e=t.get(r.id),i=eu(r.source,r.sourceType),a=`${r.sourceType}:${i}`,o=n.get(a)??tu(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 au(e,t){return{label:e,value:t}}function ou(e,t,n){let r=Q(t),i=n.get(zl(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:Ll(t),compressedSizeSource:Rl(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 su(e,t,n){let r=Q(t),i=n.get(zl(e,t.file));return{file:t.file,size:r,gzipSize:t.gzipSize,brotliSize:t.brotliSize,compressedSize:Ll(t),compressedSizeSource:Rl(t),sizeDeltaBytes:typeof i==`number`?r-i:void 0,type:t.type,from:t.from,isEntry:!!t.isEntry,moduleCount:t.modules?.length??0}}function cu(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+fe(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+Ll(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 lu(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])=>au(e,t)).sort((e,t)=>t.value-e.value||e.label.localeCompare(t.label))}function uu(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=>su(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+Ll(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 du(e,t){let n=[];for(let r of e?.packages??[])for(let e of r.files)n.push(ou(r,e,t));return n.sort((e,t)=>t.size-e.size||e.file.localeCompare(t.file)).slice(0,18)}function fu(e,t){let n=T(()=>Bl(t?.value??null)),r=T(()=>new Map((e.value?.packages??[]).map(e=>[e.id,e.label]))),i=T(()=>new Map((e.value?.packages??[]).map(e=>[e.id,e.type]))),a=T(()=>Hl(e.value)),o=T(()=>ql(e.value)),s=T(()=>Jl(e.value)),c=T(()=>Zl({result:e.value,previousResult:t?.value,previousMaps:n.value,moduleInfoMap:a.value})),l=T(()=>Ql(c.value));return{summary:T(()=>cu({result:e.value,previousMaps:n.value,budgetWarnings:o.value})),packageTypeSummary:T(()=>lu(e.value)),packageInsights:T(()=>uu(e.value,n.value)),largestFiles:T(()=>du(e.value,n.value.fileBytes)),duplicateModules:T(()=>ru({result:e.value,moduleInfoMap:a.value,packageLabelMap:r.value,packageTypeMap:i.value})),moduleSourceSummary:T(()=>iu(e.value,a.value)),budgetWarnings:o,budgetLimitItems:s,incrementAttribution:c,incrementSummary:l,subPackages:T(()=>e.value?.subPackages??[])}}var pu=[`action`,`file`,`budget`],mu=[`critical`,`warning`,`info`,`success`],hu=[`overview`,`diagnostics`,`treemap`,`files`,`source`,`packages`,`modules`];function gu(){return new Date().toISOString()}function _u(e,t){return typeof e==`string`&&t.includes(e)}function vu(e){if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.id==`string`&&_u(t.targetKind,pu)&&typeof t.targetKey==`string`&&typeof t.title==`string`&&typeof t.meta==`string`&&_u(t.tone,mu)&&_u(t.tab,hu)&&typeof t.createdAt==`string`}function yu(e){if(!Array.isArray(e))return[];let t=new Map;for(let n of e)vu(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 bu(e,t=gu()){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 xu(e){let t=yu(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(`
19
19
  `)||`| - | 暂无事项 | - | - | - |`,``].join(`
20
- `)}function yu(e){let t=g(null),n=g(!1),r=g(null);function i(){t.value=null,r.value=null}function a(){e.selectedLargestFile.value=null,e.selectedBudgetWarning.value=null}function o(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 s(t){if(t.action){o(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 c(t){e.addWorkQueueItem(_u(t)),e.exportStatus.value=`已加入清单`}function l(t){if(r.value=t.id,t.targetKind===`action`){let n=e.actionItems.value.find(e=>e.key===t.targetKey);if(n){o(n);return}}e.activeTab.value=t.tab}function u(t){if(t.actionKey){let n=e.actionItems.value.find(e=>e.key===t.actionKey);if(n){o(n);return}}if(t.workQueueItemId){let n=e.workQueueItems.value.find(e=>e.id===t.workQueueItemId);if(n){l(n);return}}e.activeTab.value=t.tab}return{activeWorkQueueItemId:r,commandPaletteOpen:n,selectedActionKey:t,handleAddActionToWorkQueue:c,handleSelectAction:o,handleSelectCommand:s,handleSelectReviewChecklistItem:u,handleSelectWorkQueueItem:l,resetPageSelection:i}}function bu(e){let t=e.packageInsights[0],n=e.duplicateModules[0];return[`总产物体积:${V(e.summary.totalBytes)}`,`Gzip:${V(e.summary.gzipBytes)}`,`Brotli/压缩后:${V(e.summary.compressedBytes)}`,`包体:${e.summary.packageCount} 个,分包配置:${e.summary.subpackageCount} 个`,`模块:${e.summary.moduleCount} 个,跨包复用:${e.summary.duplicateCount} 个`,`预算告警:${e.summary.budgetWarningCount} 个`,t?`最大包:${t.label} ${V(t.totalBytes)}`:``,n?`首要重复模块:${n.source},估算可节省 ${V(n.estimatedSavingBytes)}(${n.advice})`:``].filter(Boolean).join(`
21
- `)}function xu(e){let t=e.packageInsights.map(e=>`| ${e.label} | ${e.type} | ${V(e.totalBytes)} | ${V(e.compressedBytes)} | ${typeof e.sizeDeltaBytes==`number`?`${e.sizeDeltaBytes>0?`+`:`-`}${V(Math.abs(e.sizeDeltaBytes))}`:`无变化`} |`).join(`
20
+ `)}function Su(e){let t=g(null),n=g(!1),r=g(null);function i(){t.value=null,r.value=null}function a(){e.selectedLargestFile.value=null,e.selectedBudgetWarning.value=null}function o(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 s(t){if(t.action){o(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 c(t){e.addWorkQueueItem(bu(t)),e.exportStatus.value=`已加入清单`}function l(t){if(r.value=t.id,t.targetKind===`action`){let n=e.actionItems.value.find(e=>e.key===t.targetKey);if(n){o(n);return}}e.activeTab.value=t.tab}function u(t){if(t.actionKey){let n=e.actionItems.value.find(e=>e.key===t.actionKey);if(n){o(n);return}}if(t.workQueueItemId){let n=e.workQueueItems.value.find(e=>e.id===t.workQueueItemId);if(n){l(n);return}}e.activeTab.value=t.tab}return{activeWorkQueueItemId:r,commandPaletteOpen:n,selectedActionKey:t,handleAddActionToWorkQueue:c,handleSelectAction:o,handleSelectCommand:s,handleSelectReviewChecklistItem:u,handleSelectWorkQueueItem:l,resetPageSelection:i}}function Cu(e){let t=e.packageInsights[0],n=e.duplicateModules[0];return[`总产物体积:${V(e.summary.totalBytes)}`,`Gzip:${V(e.summary.gzipBytes)}`,`Brotli/压缩后:${V(e.summary.compressedBytes)}`,`包体:${e.summary.packageCount} 个,分包配置:${e.summary.subpackageCount} 个`,`模块:${e.summary.moduleCount} 个,跨包复用:${e.summary.duplicateCount} 个`,`预算告警:${e.summary.budgetWarningCount} 个`,t?`最大包:${t.label} ${V(t.totalBytes)}`:``,n?`首要重复模块:${n.source},估算可节省 ${V(n.estimatedSavingBytes)}(${n.advice})`:``].filter(Boolean).join(`
21
+ `)}function wu(e){let t=e.packageInsights.map(e=>`| ${e.label} | ${e.type} | ${V(e.totalBytes)} | ${V(e.compressedBytes)} | ${typeof e.sizeDeltaBytes==`number`?`${e.sizeDeltaBytes>0?`+`:`-`}${V(Math.abs(e.sizeDeltaBytes))}`:`无变化`} |`).join(`
22
22
  `),n=e.largestFiles.slice(0,10).map(e=>`| ${e.file} | ${e.packageLabel} | ${e.type} | ${V(e.size)} | ${V(e.compressedSize)} |`).join(`
23
23
  `),r=e.duplicateModules.slice(0,10).map(e=>`| ${e.source} | ${e.sourceType} | ${e.packageCount} | ${V(e.estimatedSavingBytes)} | ${e.advice} |`).join(`
24
24
  `),i=e.budgetWarnings.map(e=>`| ${e.label} | ${e.scope} | ${V(e.currentBytes)} | ${V(e.limitBytes)} | ${e.status===`critical`?`超预算`:`接近预算`} ${(e.ratio*100).toFixed(1)}% |`).join(`
25
25
  `),a=e.duplicateModules.find(e=>e.estimatedSavingBytes>0);return[`# weapp-vite analyze 报告`,``,`生成时间:${e.generatedAt??new Date().toISOString()}`,``,`## 本次变化摘要`,``,`- 总产物体积:${V(e.summary.totalBytes)}`,`- 压缩后体积:${V(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}:当前 ${V(e.budgetWarnings[0].currentBytes)},预算 ${V(e.budgetWarnings[0].limitBytes)}。`:`- 当前没有预算超限或接近预算的包体。`,a?`- 优先处理重复模块 ${a.source},估算可节省 ${V(a.estimatedSavingBytes)}。`:`- 当前没有可估算收益的重复模块。`,``,`## 包体`,``,`| 包 | 类型 | 体积 | 压缩后 | 较上次 |`,`| --- | --- | ---: | ---: | ---: |`,t||`| - | - | 0 B | 0 B | 无变化 |`,``,`## Top 文件`,``,`| 文件 | 包 | 类型 | 体积 | 压缩后 |`,`| --- | --- | --- | ---: | ---: |`,n||`| - | - | - | 0 B | 0 B |`,``,`## 重复模块`,``,`| 模块 | 来源 | 包数量 | 估算可节省 | 建议 |`,`| --- | --- | ---: | ---: | --- |`,r||`| - | - | 0 | 0 B | - |`,``].join(`
26
- `)}function Su(e){let t=e.incrementAttribution.slice(0,8).map(e=>`| ${e.label} | ${e.category} | ${e.packageLabel} | +${V(e.deltaBytes)} | ${e.advice} |`).join(`
26
+ `)}function Tu(e){let t=e.incrementAttribution.slice(0,8).map(e=>`| ${e.label} | ${e.category} | ${e.packageLabel} | +${V(e.deltaBytes)} | ${e.advice} |`).join(`
27
27
  `),n=e.incrementSummary.slice(0,6).map(e=>`| ${e.category} | ${e.count} | +${V(e.deltaBytes)} |`).join(`
28
28
  `),r=e.budgetWarnings.slice(0,5).map(e=>`| ${e.label} | ${V(e.currentBytes)} | ${V(e.limitBytes)} | ${e.status===`critical`?`超预算`:`接近预算`} ${(e.ratio*100).toFixed(1)}% |`).join(`
29
29
  `),i=e.duplicateModules.slice(0,5).map(e=>`| ${e.source} | ${e.packageCount} | ${V(e.estimatedSavingBytes)} | ${e.advice} |`).join(`
30
30
  `);return[`## weapp-vite analyze PR 摘要`,``,`- 总产物体积:${V(e.summary.totalBytes)}${typeof e.summary.sizeDeltaBytes==`number`?`(较上次 ${e.summary.sizeDeltaBytes>=0?`+`:`-`}${V(Math.abs(e.summary.sizeDeltaBytes))})`:``}`,`- 压缩后体积:${V(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(`
31
- `)}function Cu(e){let t=String(e??``);return/[",\n\r]/.test(t)?`"${t.replaceAll(`"`,`""`)}"`:t}function wu(e){return e.map(Cu).join(`,`)}function Tu(e){let t=[wu([`section`,`label`,`package`,`type`,`sizeBytes`,`compressedBytes`,`deltaBytes`,`count`,`detail`])];for(let n of e.packageInsights)t.push(wu([`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(wu([`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(wu([`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(wu([`increment`,n.label,n.packageLabel,n.category,n.currentBytes,n.deltaBytes,n.deltaBytes,1,n.advice]));return t.join(`
32
- `)}function Eu(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 Du(e){let t=g(``),n=T(()=>bu({summary:e.summary.value,packageInsights:e.packageInsights.value,duplicateModules:e.duplicateModules.value})),r=T(()=>xu({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=T(()=>Su({summary:e.summary.value,incrementAttribution:e.incrementAttribution.value,incrementSummary:e.incrementSummary.value,budgetWarnings:e.budgetWarnings.value,duplicateModules:e.duplicateModules.value})),a=T(()=>Tu({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(vu(e.workQueueItems.value)),t.value=`处理清单已复制`}function d(){e.resultRef.value&&(Eu({content:JSON.stringify(e.resultRef.value,null,2),filename:`weapp-vite-analyze.json`,type:`application/json`}),t.value=`已导出`,e.moreMenuOpen.value=!1)}function f(){Eu({content:r.value,filename:`weapp-vite-analyze.md`,type:`text/markdown`}),t.value=`已导出 MD`,e.moreMenuOpen.value=!1}function p(){Eu({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 Ou(e){return ge.some(t=>t.value===e)?e:`all`}function ku(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 Au(e){let t=e.files.filter(t=>ku(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 ju(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`:!0).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 Mu(e){let t=b(),n=k(),r=T({get(){return Ou(t.query.filter)},set(e){let r={...t.query};e===`all`?delete r.filter:r.filter=e,n.replace({query:r})}}),i=T(()=>new Set(e.incrementAttribution.value.filter(e=>e.packageId&&e.file).map(e=>`${e.packageId}\u0000${e.file}`))),a=T(()=>new Set(e.incrementAttribution.value.map(e=>e.moduleId).filter(e=>!!e))),o=T(()=>new Set(e.duplicateModules.value.map(e=>e.id))),s=T(()=>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),c=T(()=>({mode:r.value,selectedPackageId:s.value,growthFileKeys:i.value,growthModuleIds:a.value,duplicateModuleIds:o.value})),l=T(()=>!!s.value);function u(e){e===`selected-package`&&!s.value||(r.value=e)}return{canUseSelectedPackageFilter:l,duplicateModuleIds:o,growthModuleIds:a,handleUpdateTreemapFilterMode:u,selectedPackageId:s,treemapFilterMode:r,treemapFilterState:c}}function Nu(e){let t=g(),n;function r(){n?.resize()}function i(){n?.dispose(),n=void 0}function a(e){t.value=e instanceof HTMLDivElement?e:void 0}function o(e){n?.dispatchAction({type:`treemapRootToNode`,seriesIndex:0,targetNodeId:e})}function s(){n?.setOption(e.treemapOption.value,!0),n?.resize()}async function c(){if(e.activeTab.value!==`treemap`){i();return}if(await u(),t.value){if(t.value.clientWidth===0||t.value.clientHeight===0){window.requestAnimationFrame(()=>{c()});return}n||(n=ve(t.value,e.resolvedTheme.value===`dark`?`dark`:void 0,{renderer:`canvas`}),n.on(`click`,e.handleChartClick)),n.setOption(e.treemapOption.value,!0),n.resize()}}return f(e.treemapOption,e=>{n&&n.setOption(e,!0)},{deep:!0}),f(e.activeTab,()=>{c()}),f(e.resolvedTheme,async()=>{n&&t.value&&i(),await c()}),{bindChartRef:a,destroyChart:i,ensureChart:c,focusTreemapNode:o,handleResize:r,resetTreemapFocus:s}}var Pu=.85,Fu={light:{green:`#8fd3ad`,yellow:`#ead486`,red:`#eaa39b`},dark:{green:`#166853`,yellow:`#75601f`,red:`#81323a`}},Iu=.5;function Lu(e,t=0,n=1){return Math.min(n,Math.max(t,e))}function Ru(e){let t=Number.parseInt(e.slice(1),16);return{red:t>>16&255,green:t>>8&255,blue:t&255}}function zu(e,t,n){let r=Lu(n),i=Object.values(Ru(e)),a=Object.values(Ru(t));return`#${i.map((e,t)=>Math.round(e+(a[t]-e)*r)).map(e=>e.toString(16).padStart(2,`0`)).join(``)}`}function Bu(e,t){let n=Lu(e),r=Fu[t];return n<=.5?zu(r.green,r.yellow,n/.5):zu(r.yellow,r.red,(n-.5)/.5)}function Vu(e,t){return t===`dark`?e>=.82?`#fda4af`:e>=.5?`#fde68a`:`#5eead4`:e>=.82?`#c6756f`:e>=.5?`#c3a24d`:`#5caf82`}function Hu(...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 Uu(e,...t){return Hu(...t)?Math.min(e,Iu):e}function Wu(e){let{red:t,green:n,blue:r}=Ru(e);return(.299*t+.587*n+.114*r)/255>.56?`#17231d`:`#f8fafc`}function Gu(e,t=!1){let n=Wu(e),r=n===`#17231d`;return{color:n,ellipsis:`…`,fontSize:12,fontWeight:t?700:600,lineHeight:16,minMargin:4,overflow:`truncate`,...t?{textBorderWidth:0,textShadowBlur:1,textShadowColor:r?`rgba(255, 255, 255, 0.32)`:`rgba(15, 23, 42, 0.34)`}:{backgroundColor:r?`rgba(255, 255, 255, 0.58)`:`rgba(15, 23, 42, 0.46)`,borderRadius:3,padding:[1,4],textBorderWidth:0}}}function Ku(e,t){let n=Bu(e,t);return{itemStyle:{color:n,borderColor:Vu(e,t)},label:Gu(n),upperLabel:Gu(n,!0)}}function qu(e,t){return t?e.type===`main`?t.mainBytes:e.type===`subPackage`?t.subPackageBytes:e.type===`independent`?t.independentBytes:t.totalBytes:0}function Ju(e,t,n=Pu){if(t<=0)return 0;let r=e/t;return r>=1?1:r>=n?.58+(r-n)/Math.max(1-n,.01)*.32:Lu(r/n*.42,0,.42)}function Yu(e,t){if(t<=0)return 0;let n=e/t;return n>=.72?.92:n>=.45?.64+(n-.45)/.27*.22:Lu(n/.45*.46,0,.46)}function Xu(e,...t){return Uu(e,...t)}function Zu(e,t,n,r,i,a,o){let s=hl(e,n,a.id),c=Math.max(a.bytes??a.originalBytes??1,1),l=i.get(a.id)??1,u=Xu(Math.max(Yu(c,r),l>1?.62:0,a.sourceType===`node_modules`?.52:0),a.id,a.source,n);return{id:s,name:a.source,value:c,meta:{kind:`module`,nodeId:s,packageId:e,packageLabel:t,fileName:n,source:a.source,sourceType:a.sourceType,bytes:a.bytes,originalBytes:a.originalBytes,packageCount:l},...Ku(u,o)}}function Qu(e,t,n,r,i,a){let o=gl(e,n),s=Math.max(r.size??1,1),c=Xu(Yu(s,i),r.file,r.source,e,t);return{id:o,name:r.source??n,value:s,meta:{kind:`asset`,nodeId:o,packageId:e,packageLabel:t,fileName:n,source:r.source??n,bytes:r.size},...Ku(c,a)}}function $u(e,t,n,r,i,a,o,s,c){let l=ml(t,r.file),u=Math.max(a,1),d=Xu(Math.max(Yu(u,o),s*.72),r.file,r.source,t,e);return{id:l,name:r.file,value:u,meta:{kind:`file`,nodeId:l,packageId:t,packageLabel:n.get(t)??e,fileName:r.file,from:r.from,childCount:i.length,type:r.type,bytes:r.size},...Ku(d,c),children:i.length>0?i:void 0}}function ed(e,t,n,r,i){let a=pl(e.id),o=Xu(r,e.id,e.label);return{id:a,name:e.label,value:Math.max(t,1),meta:{kind:`package`,nodeId:a,packageId:e.id,packageLabel:e.label,packageType:e.type,fileCount:e.files.length,totalBytes:t},...Ku(o,i),children:n}}function td(e){return e.reduce((e,t)=>e+t.value,0)}function nd(e,t){return`${e}\u0000${t}`}function rd(e,t,n){return n.mode===`all`||n.mode===`selected-package`?!!t.source:n.mode===`growth`?n.growthFileKeys.has(nd(e,t.file)):n.mode===`source`?!!t.source:!1}function id(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 ad(){return{mode:`all`,selectedPackageId:null,growthFileKeys:new Set,growthModuleIds:new Set,duplicateModuleIds:new Set}}function od(e){let t=new Map(e.result.packages.map(t=>{let n=t.files.reduce((e,t)=>e+(t.size??0),0),r=qu(t,e.result.metadata?.budgets);return[t.id,Ju(n,r,e.result.metadata?.budgets?.warningRatio)]})),n=new Map(e.result.packages.map(e=>[e.id,e.files.reduce((e,t)=>e+(t.size??0),0)]));return e.result.packages.flatMap(r=>{if(e.filter.mode===`selected-package`&&(!e.filter.selectedPackageId||r.id!==e.filter.selectedPackageId))return[];let i=r.files.flatMap(i=>{let a=n.get(r.id)??0,o=e.filter.mode===`growth`&&e.filter.growthFileKeys.has(nd(r.id,i.file)),s=Math.max(i.size??1,1),c=i.type===`chunk`?id(e.filter,i.modules??[]).map(t=>Zu(r.id,r.label,i.file,s,e.moduleUsageCount,t,e.theme)):rd(r.id,i,e.filter)?[Qu(r.id,r.label,i.file,i,a,e.theme)]:[];if(e.filter.mode!==`all`&&e.filter.mode!==`selected-package`&&c.length===0&&!o)return[];let l=e.filter.mode===`all`||e.filter.mode===`selected-package`||o?i.size??td(c):td(c);return[$u(r.label,r.id,e.packageLabelMap,i,c,l,a,t.get(r.id)??0,e.theme)]});return i.length===0?[]:[ed(r,e.filter.mode===`all`||e.filter.mode===`selected-package`?r.files.reduce((e,t)=>e+(t.size??0),0):td(i),i,t.get(r.id)??0,e.theme)]})}function sd(e,t,n){let r=T(()=>new Map((e.value?.packages??[]).map(e=>[e.id,e.label]))),i=T(()=>new Map((e.value?.modules??[]).map(e=>[e.id,e.packages.length]))),a=T(()=>{let a=e.value;return a?od({result:a,packageLabelMap:r.value,moduleUsageCount:i.value,filter:n?.value??ad(),theme:t.value}):[]});return{treemapOption:T(()=>({backgroundColor:`transparent`,tooltip:{formatter:e=>_l(e.data?.meta),borderColor:t.value===`dark`?`rgba(148, 163, 184, 0.16)`:`rgba(71, 85, 105, 0.14)`,backgroundColor:t.value===`dark`?`rgba(15, 23, 42, 0.92)`:`rgba(255, 255, 255, 0.96)`,textStyle:{color:t.value===`dark`?`#e2e8f0`:`#0f172a`}},series:[{type:`treemap`,nodeClick:`zoomToNode`,roam:`move`,roamTrigger:`global`,zoomToNodeRatio:.72,breadcrumb:{show:!1},visibleMin:1,label:{show:!0,backgroundColor:`rgba(255, 255, 255, 0.58)`,borderRadius:3,color:`#17231d`,formatter:`{b}`,fontSize:12,fontWeight:600,lineHeight:16,minMargin:4,overflow:`truncate`,padding:[1,4],textBorderWidth:0},upperLabel:{show:!0,color:`#17231d`,fontSize:12,fontWeight:700,lineHeight:16,overflow:`truncate`,textBorderWidth:0,textShadowBlur:1,textShadowColor:`rgba(255, 255, 255, 0.32)`},itemStyle:{borderColor:t.value===`dark`?`rgba(15, 23, 42, 0.88)`:`rgba(255, 255, 255, 0.92)`,borderWidth:2,gapWidth:2},emphasis:{itemStyle:{borderColor:t.value===`dark`?`#f8fafc`:`#0f172a`}},levels:fl,data:a.value}]})),treemapNodes:a}}we(),Ce([xe,_e,ye,Se,be]);function cd(e){let t=g(null),n=g(null),r=g(null),{canUseSelectedPackageFilter:i,duplicateModuleIds:a,growthModuleIds:o,handleUpdateTreemapFilterMode:s,treemapFilterMode:c,treemapFilterState:l}=Mu({duplicateModules:e.duplicateModules,incrementAttribution:e.incrementAttribution,selectedBudgetWarning:r,selectedLargestFile:n,selectedTreemapMeta:t}),{treemapOption:u,treemapNodes:d}=sd(e.resultRef,e.resolvedTheme,l),f=T(()=>e.resultRef.value!==null&&d.value.length===0),p=T(()=>{let n=t.value;return n?.kind===`module`?e.duplicateModules.value.filter(e=>e.source===n.source):e.duplicateModules.value}),m=T(()=>Au({files:e.largestFiles.value,filterState:l.value,meta:t.value,warning:r.value})),h=T(()=>m.value.slice(0,10)),_=T(()=>n.value?`${n.value.packageId}:${n.value.file}`:null),v=T(()=>n.value?ml(n.value.packageId,n.value.file):t.value?.nodeId??null),y=T(()=>{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}),b=T(()=>ju({modules:y.value?.modules??[],mode:c.value,growthModuleIds:o.value,duplicateModuleIds:a.value,duplicateModules:e.duplicateModules.value}));function x(e){t.value=e.data?.meta??null,n.value=null,r.value=null}let{bindChartRef:S,destroyChart:C,ensureChart:w,focusTreemapNode:E,handleResize:D,resetTreemapFocus:O}=Nu({activeTab:e.activeTab,resolvedTheme:e.resolvedTheme,treemapOption:u,handleChartClick:x});function ee(e){n.value=e,t.value={kind:`file`,nodeId:ml(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 k(i){if(r.value=i,n.value=Au({files:e.largestFiles.value,filterState:l.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:pl(a.id),packageId:a.id,packageLabel:a.label,packageType:a.type,fileCount:a.fileCount,totalBytes:a.totalBytes}:null}function A(i){e.activeTab.value=`packages`,t.value={kind:`package`,nodeId:pl(i.id),packageId:i.id,packageLabel:i.label,packageType:i.type,fileCount:i.fileCount,totalBytes:i.totalBytes},n.value=null,r.value=null,c.value=`selected-package`}function j(){v.value&&E(v.value)}function M(){O()}function N(){t.value=null,n.value=null,r.value=null}return{activeLargestFileKey:_,bindChartRef:S,canUseSelectedPackageFilter:i,destroyChart:C,ensureChart:w,filteredDuplicateModules:p,filteredLargestFiles:m,handleFocusTreemapSelection:j,handleResetTreemapFocus:M,handleResize:D,handleSelectBudgetWarning:k,handleSelectLargestFile:ee,handleSelectPackageInsight:A,handleUpdateTreemapFilterMode:s,isTreemapEmpty:f,resetTreemapSelection:N,selectedBudgetWarning:r,selectedFileModules:b,selectedLargestFile:n,selectedTreemapFocusNodeId:v,selectedTreemapMeta:t,treemapFilterMode:c,visibleLargestFiles:h}}function ld(e){return new URL(e,window.location.origin).toString()}function ud(e){let t=b(),n=k(),r=T(()=>t.fullPath!==`/analyze`);async function i(){await W(ld(t.fullPath)),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 dd=`weapp-vite:dashboard:analyze-work-queue`;function fd(){try{let e=window.localStorage.getItem(dd);return gu(e?JSON.parse(e):null)}catch{return[]}}function pd(e){try{window.localStorage.setItem(dd,JSON.stringify(e))}catch{}}function md(){let t=g([]),n=T(()=>t.value.filter(e=>!e.completedAt)),r=T(()=>t.value.filter(e=>e.completedAt)),i=T(()=>t.value.filter(e=>e.targetKind===`action`&&!e.completedAt).map(e=>e.targetKey));function a(e){t.value=gu(e),pd(t.value)}function o(e){let n=t.value.find(t=>t.id===e.id);a([n?{...n,...e,createdAt:n.createdAt,completedAt:void 0}:e,...t.value.filter(t=>t.id!==e.id)])}function s(e){let n=new Date().toISOString();a(t.value.map(t=>t.id===e?{...t,completedAt:t.completedAt?void 0:n}:t))}function c(e){a(t.value.filter(t=>t.id!==e))}function l(){a(t.value.filter(e=>!e.completedAt))}return e(()=>{t.value=fd()}),{completedWorkQueueItems:r,openWorkQueueItems:n,queuedActionKeys:i,workQueueItems:t,addWorkQueueItem:o,clearCompletedWorkQueueItems:l,removeWorkQueueItem:c,toggleWorkQueueItem:s}}function $(e){return e}function hd(e){return typeof e!=`number`||Number.isNaN(e)||e===0?``:`${e>0?`+`:`-`}${V(Math.abs(e))}`}function gd(e){let t=b(),n=k(),r=T({get(){let e=t.query.tab;return e===`diagnostics`||e===`review`||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=T(()=>e.packageInsights.value.reduce((e,t)=>e+t.chunkCount,0)),a=T(()=>e.packageInsights.value.reduce((e,t)=>e+t.assetCount,0)),o=T(()=>e.duplicateModules.value.reduce((e,t)=>e+t.bytes,0)),s=T(()=>{let t=e.summary.value,n=t.compressedSizeSource===`real`?`Brotli`:`估算压缩后`,r=hd(t.compressedDeltaBytes);return`${n} ${V(t.compressedBytes)}${r?` · ${r}`:``}`}),c=T(()=>{let t=hd(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:V(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?V(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:V(e.summary.value.totalBytes),detail:s.value,wide:!0,iconName:`metric-size`})]}return{activeTab:r,topCards:T(()=>r.value===`packages`?l():r.value===`modules`?u():d()),packageTypeSummary:e.packageTypeSummary}}var _d=[{id:`metrics`,label:`关键指标`}],vd=[{id:`actions`,label:`问题中心`},{id:`work-queue`,label:`处理清单`},{id:`history`,label:`历史基线`}],yd=[{id:`review`,label:`PR 风险清单`}],bd=[{id:`treemap`,label:`体积地图`}],xd=[{id:`packages`,label:`包与产物`}],Sd=[{id:`modules`,label:`模块复用`}],Cd=[{id:`source`,label:`源码对比`}];function wd(){let t=g(!1),{resolvedTheme:n}=ue(),{baselineSnapshotId:r,comparisonMode:i,comparisonResultRef:a,historySnapshots:o,lastUpdatedAt:s,resultRef:c,setBaselineSnapshot:l,setComparisonMode:u,updateCount:d}=me(),p=lu(c,a),{activeTab:m,topCards:h,packageTypeSummary:_}=gd({summary:p.summary,packageInsights:p.packageInsights,packageTypeSummary:p.packageTypeSummary,duplicateModules:p.duplicateModules,moduleSourceSummary:p.moduleSourceSummary,lastUpdatedAt:s}),v=cd({activeTab:m,resultRef:c,resolvedTheme:n,largestFiles:p.largestFiles,duplicateModules:p.duplicateModules,incrementAttribution:p.incrementAttribution,packageInsights:p.packageInsights}),{actionItems:y}=Sl({budgetWarnings:p.budgetWarnings,incrementAttribution:p.incrementAttribution,duplicateModules:p.duplicateModules,largestFiles:p.largestFiles,packageInsights:p.packageInsights}),b=md(),x=T(()=>dl({actionItems:y.value,workQueueItems:b.workQueueItems.value})),{commandItems:S}=Ml({actionItems:y,budgetWarnings:p.budgetWarnings,duplicateModules:p.duplicateModules,incrementAttribution:p.incrementAttribution,largestFiles:p.largestFiles,packageInsights:p.packageInsights}),C=Du({resultRef:c,summary:p.summary,packageInsights:p.packageInsights,largestFiles:p.largestFiles,duplicateModules:p.duplicateModules,budgetWarnings:p.budgetWarnings,incrementAttribution:p.incrementAttribution,incrementSummary:p.incrementSummary,prReviewChecklist:x,workQueueItems:b.workQueueItems,moreMenuOpen:t}),w=yu({activeTab:m,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}),E=ud({exportStatus:C.exportStatus,moreMenuOpen:t,resetPageSelection:w.resetPageSelection,resetTreemapSelection:v.resetTreemapSelection}),O=T(()=>`${d.value} 次数据同步`),ee=T(()=>n.value===`dark`?`status-dark`:`status-light`),k=T(()=>[{iconName:ee.value,label:O.value},{label:s.value}]),A=T(()=>v.selectedBudgetWarning.value?.id??null);function j(){t.value=!1}function M(e){e.key===`Escape`&&(t.value=!1),(e.metaKey||e.ctrlKey)&&e.key.toLowerCase()===`k`&&(e.preventDefault(),c.value&&(w.commandPaletteOpen.value=!0))}return f(c,()=>{v.resetTreemapSelection(),w.resetPageSelection()}),e(()=>{window.addEventListener(`resize`,v.handleResize),window.addEventListener(`keydown`,M),window.addEventListener(`click`,j),v.ensureChart()}),D(()=>{window.removeEventListener(`resize`,v.handleResize),window.removeEventListener(`keydown`,M),window.removeEventListener(`click`,j),v.destroyChart()}),{...p,...w,...C,...v,...E,...b,actionItems:y,activeTab:m,activeBudgetWarningId:A,baselineSnapshotId:r,commandItems:S,comparisonMode:i,diagnosticsLayoutItems:vd,historySnapshots:o,metricPackageTypeSummary:_,modulesLayoutItems:Sd,moreMenuOpen:t,overviewLayoutItems:_d,packagesLayoutItems:xd,prReviewChecklist:x,resolvedTheme:n,reviewLayoutItems:yd,setBaselineSnapshot:l,setComparisonMode:u,sourceLayoutItems:Cd,statusPills:k,topCards:h,treemapFilterOptions:ge,treemapLayoutItems:bd,resultRef:c}}var Td={class:`grid h-full min-h-0 grid-rows-[auto_minmax(0,1fr)] gap-2 overflow-hidden`},Ed=n({__name:`analyze`,setup(e){let{actionItems:t,activeBudgetWarningId:n,activeLargestFileKey:r,activeTab:i,activeWorkQueueItemId:a,baselineSnapshotId:o,bindChartRef:s,budgetWarnings:l,canUseSelectedPackageFilter:u,canResetView:d,clearCompletedWorkQueueItems:f,commandItems:m,commandPaletteOpen:g,comparisonMode:_,copyMarkdownReport:v,copyPrReport:b,copyPrReviewChecklist:x,copySummary:S,copyViewLink:C,copyWorkQueueReport:w,diagnosticsLayoutItems:T,exportCsv:D,exportJson:O,exportMarkdown:ee,exportStatus:k,filteredDuplicateModules:A,filteredLargestFiles:j,handleAddActionToWorkQueue:M,handleFocusTreemapSelection:N,handleResetTreemapFocus:P,handleSelectAction:I,handleSelectBudgetWarning:R,handleSelectLargestFile:te,handleSelectPackageInsight:ne,handleSelectReviewChecklistItem:re,handleSelectCommand:ie,handleSelectWorkQueueItem:ae,handleUpdateTreemapFilterMode:oe,historySnapshots:se,incrementAttribution:z,incrementSummary:B,isTreemapEmpty:ce,largestFiles:le,metricPackageTypeSummary:ue,modulesLayoutItems:V,moduleSourceSummary:de,moreMenuOpen:fe,openWorkQueueItems:pe,overviewLayoutItems:me,packageInsights:H,packagesLayoutItems:U,prReviewChecklist:he,queuedActionKeys:ge,removeWorkQueueItem:W,resetAnalyzeView:G,resolvedTheme:K,resultRef:_e,reviewLayoutItems:ve,selectedActionKey:ye,selectedFileModules:be,selectedTreemapFocusNodeId:xe,selectedTreemapMeta:Se,setBaselineSnapshot:Ce,setComparisonMode:we,sourceLayoutItems:Te,statusPills:Ee,summary:De,toggleWorkQueueItem:Oe,topCards:ke,treemapFilterMode:Ae,treemapFilterOptions:je,treemapLayoutItems:Me,visibleLargestFiles:Ne,workQueueItems:Pe}=wd();return(e,Fe)=>(E(),L(`div`,Td,[c(_e)?F(``,!0):(E(),y(at,{key:0})),p(il,{"more-menu-open":c(fe),"onUpdate:moreMenuOpen":Fe[0]||=e=>h(fe)?fe.value=e:null,"can-reset-view":c(d),"can-search":!!c(_e),"export-status":c(k),"open-work-queue-count":c(pe).length,"status-pills":c(Ee),onCopyMarkdown:c(v),onCopyPr:c(b),onCopySummary:c(S),onCopyViewLink:c(C),onExportCsv:c(D),onExportJson:c(O),onExportMarkdown:c(ee),onOpenSearch:Fe[1]||=e=>g.value=!0,onResetView:c(G)},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`]),c(_e)?(E(),y(Uc,{key:1,"action-items":c(t),"active-budget-warning-id":c(n),"active-largest-file-key":c(r),"active-tab":c(i),"active-work-queue-item-id":c(a),"baseline-snapshot-id":c(o),"bind-chart-ref":c(s),"budget-config":c(_e).metadata?.budgets,"budget-warnings":c(l),"can-use-selected-package-filter":c(u),"comparison-mode":c(_),"copy-status":c(k),"diagnostics-layout-items":c(T),"filtered-duplicate-modules":c(A),"filtered-largest-files":c(j),"history-snapshots":c(se),"increment-attribution":c(z),"increment-summary":c(B),"is-treemap-empty":c(ce),"largest-files":c(le),"metric-package-type-summary":c(ue),"modules-layout-items":c(V),"module-source-summary":c(de),"overview-layout-items":c(me),"package-insights":c(H),"packages-layout-items":c(U),"pr-review-checklist":c(he),"queued-action-keys":c(ge),"review-layout-items":c(ve),"selected-action-key":c(ye),"selected-file-modules":c(be),"selected-treemap-focus-node-id":c(xe),"selected-treemap-meta":c(Se),"source-layout-items":c(Te),theme:c(K),"top-cards":c(ke),"total-bytes":c(De).totalBytes,"treemap-filter-mode":c(Ae),"treemap-filter-options":c(je),"treemap-layout-items":c(Me),"visible-largest-files":c(Ne),"work-queue-items":c(Pe),onAddActionToQueue:c(M),onClearCompletedWorkQueue:c(f),onCopyPr:c(b),onCopyReviewChecklist:c(x),onCopyWorkQueue:c(w),onFocusTreemapSelection:c(N),onRemoveWorkQueueItem:c(W),onResetTreemapFocus:c(P),onSelectAction:c(I),onSelectBudgetWarning:c(R),onSelectFile:c(te),onSelectPackage:c(ne),onSelectReviewChecklistItem:c(re),onSelectWorkQueueItem:c(ae),onSetBaseline:c(Ce),onSetComparisonMode:c(we),onToggleWorkQueueItem:c(Oe),onUpdateTreemapFilterMode:c(oe)},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.copy-status.diagnostics-layout-items.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.selected-action-key.selected-file-modules.selected-treemap-focus-node-id.selected-treemap-meta.source-layout-items.theme.top-cards.total-bytes.treemap-filter-mode.treemap-filter-options.treemap-layout-items.visible-largest-files.work-queue-items.onAddActionToQueue.onClearCompletedWorkQueue.onCopyPr.onCopyReviewChecklist.onCopyWorkQueue.onFocusTreemapSelection.onRemoveWorkQueueItem.onResetTreemapFocus.onSelectAction.onSelectBudgetWarning.onSelectFile.onSelectPackage.onSelectReviewChecklistItem.onSelectWorkQueueItem.onSetBaseline.onSetComparisonMode.onToggleWorkQueueItem.onUpdateTreemapFilterMode`.split(`.`))):F(``,!0),p(et,{open:!!(c(_e)&&c(g)),items:c(m),onClose:Fe[2]||=e=>g.value=!1,onSelect:c(ie)},null,8,[`open`,`items`,`onSelect`])]))}});export{Ed as default};
31
+ `)}function Eu(e){let t=String(e??``);return/[",\n\r]/.test(t)?`"${t.replaceAll(`"`,`""`)}"`:t}function Du(e){return e.map(Eu).join(`,`)}function Ou(e){let t=[Du([`section`,`label`,`package`,`type`,`sizeBytes`,`compressedBytes`,`deltaBytes`,`count`,`detail`])];for(let n of e.packageInsights)t.push(Du([`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(Du([`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(Du([`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(Du([`increment`,n.label,n.packageLabel,n.category,n.currentBytes,n.deltaBytes,n.deltaBytes,1,n.advice]));return t.join(`
32
+ `)}function ku(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 Au(e){let t=g(``),n=T(()=>Cu({summary:e.summary.value,packageInsights:e.packageInsights.value,duplicateModules:e.duplicateModules.value})),r=T(()=>wu({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=T(()=>Tu({summary:e.summary.value,incrementAttribution:e.incrementAttribution.value,incrementSummary:e.incrementSummary.value,budgetWarnings:e.budgetWarnings.value,duplicateModules:e.duplicateModules.value})),a=T(()=>Ou({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(xu(e.workQueueItems.value)),t.value=`处理清单已复制`}function d(){e.resultRef.value&&(ku({content:JSON.stringify(e.resultRef.value,null,2),filename:`weapp-vite-analyze.json`,type:`application/json`}),t.value=`已导出`,e.moreMenuOpen.value=!1)}function f(){ku({content:r.value,filename:`weapp-vite-analyze.md`,type:`text/markdown`}),t.value=`已导出 MD`,e.moreMenuOpen.value=!1}function p(){ku({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 ju(e){return ge.some(t=>t.value===e)?e:`all`}function Mu(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 Nu(e){let t=e.files.filter(t=>Mu(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 Pu(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`:!0).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 Fu(e){let t=b(),n=k(),r=T({get(){return ju(t.query.filter)},set(e){let r={...t.query};e===`all`?delete r.filter:r.filter=e,n.replace({query:r})}}),i=T(()=>new Set(e.incrementAttribution.value.filter(e=>e.packageId&&e.file).map(e=>`${e.packageId}\u0000${e.file}`))),a=T(()=>new Set(e.incrementAttribution.value.map(e=>e.moduleId).filter(e=>!!e))),o=T(()=>new Set(e.duplicateModules.value.map(e=>e.id))),s=T(()=>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),c=T(()=>({mode:r.value,selectedPackageId:s.value,growthFileKeys:i.value,growthModuleIds:a.value,duplicateModuleIds:o.value})),l=T(()=>!!s.value);function u(e){e===`selected-package`&&!s.value||(r.value=e)}return{canUseSelectedPackageFilter:l,duplicateModuleIds:o,growthModuleIds:a,handleUpdateTreemapFilterMode:u,selectedPackageId:s,treemapFilterMode:r,treemapFilterState:c}}ye(),init_Component(),init_Model(),init_util(),init_vector(),init_Axis(),init_api(),init_parseGeoJson(),init_SeriesData(),init_util(),init_format(),init_number(),init_Chart(),init_graphic(),init_Series(),init_throttle(),init_color(),init_graphic(),init_time(),init_locale(),init_helper(),init_platform(),init_Component(),init_matrix(),init_env(),init_zrender(),ve();function Iu(e){let t=g(),n;function r(){n?.resize()}function i(){n?.dispose(),n=void 0}function a(e){t.value=e instanceof HTMLDivElement?e:void 0}function o(e){n?.dispatchAction({type:`treemapRootToNode`,seriesIndex:0,targetNodeId:e})}function s(){n?.setOption(e.treemapOption.value,!0),n?.resize()}async function c(){if(e.activeTab.value!==`treemap`){i();return}if(await u(),t.value){if(t.value.clientWidth===0||t.value.clientHeight===0){window.requestAnimationFrame(()=>{c()});return}n||(n=De(t.value,e.resolvedTheme.value===`dark`?`dark`:void 0,{renderer:`canvas`}),n.on(`click`,e.handleChartClick)),n.setOption(e.treemapOption.value,!0),n.resize()}}return f(e.treemapOption,e=>{n&&n.setOption(e,!0)},{deep:!0}),f(e.activeTab,()=>{c()}),f(e.resolvedTheme,async()=>{n&&t.value&&i(),await c()}),{bindChartRef:a,destroyChart:i,ensureChart:c,focusTreemapNode:o,handleResize:r,resetTreemapFocus:s}}var Lu=.85,Ru={light:{green:`#8fd3ad`,yellow:`#ead486`,red:`#eaa39b`},dark:{green:`#166853`,yellow:`#75601f`,red:`#81323a`}},zu=.5;function Bu(e,t=0,n=1){return Math.min(n,Math.max(t,e))}function Vu(e){let t=Number.parseInt(e.slice(1),16);return{red:t>>16&255,green:t>>8&255,blue:t&255}}function Hu(e,t,n){let r=Bu(n),i=Object.values(Vu(e)),a=Object.values(Vu(t));return`#${i.map((e,t)=>Math.round(e+(a[t]-e)*r)).map(e=>e.toString(16).padStart(2,`0`)).join(``)}`}function Uu(e,t){let n=Bu(e),r=Ru[t];return n<=.5?Hu(r.green,r.yellow,n/.5):Hu(r.yellow,r.red,(n-.5)/.5)}function Wu(e,t){return t===`dark`?e>=.82?`#fda4af`:e>=.5?`#fde68a`:`#5eead4`:e>=.82?`#c6756f`:e>=.5?`#c3a24d`:`#5caf82`}function Gu(...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 Ku(e,...t){return Gu(...t)?Math.min(e,zu):e}function qu(e){let{red:t,green:n,blue:r}=Vu(e);return(.299*t+.587*n+.114*r)/255>.56?`#17231d`:`#f8fafc`}function Ju(e,t=!1){let n=qu(e),r=n===`#17231d`;return{color:n,ellipsis:`…`,fontSize:12,fontWeight:t?700:600,lineHeight:16,minMargin:4,overflow:`truncate`,...t?{textBorderWidth:0,textShadowBlur:1,textShadowColor:r?`rgba(255, 255, 255, 0.32)`:`rgba(15, 23, 42, 0.34)`}:{backgroundColor:r?`rgba(255, 255, 255, 0.58)`:`rgba(15, 23, 42, 0.46)`,borderRadius:3,padding:[1,4],textBorderWidth:0}}}function Yu(e,t){let n=Uu(e,t);return{itemStyle:{color:n,borderColor:Wu(e,t)},label:Ju(n),upperLabel:Ju(n,!0)}}function Xu(e,t){return t?e.type===`main`?t.mainBytes:e.type===`subPackage`?t.subPackageBytes:e.type===`independent`?t.independentBytes:t.totalBytes:0}function Zu(e,t,n=Lu){if(t<=0)return 0;let r=e/t;return r>=1?1:r>=n?.58+(r-n)/Math.max(1-n,.01)*.32:Bu(r/n*.42,0,.42)}function Qu(e,t){if(t<=0)return 0;let n=e/t;return n>=.72?.92:n>=.45?.64+(n-.45)/.27*.22:Bu(n/.45*.46,0,.46)}function $u(e,...t){return Ku(e,...t)}function ed(e,t,n,r,i,a,o){let s=vl(e,n,a.id),c=Math.max(a.bytes??a.originalBytes??1,1),l=i.get(a.id)??1,u=$u(Math.max(Qu(c,r),l>1?.62:0,a.sourceType===`node_modules`?.52:0),a.id,a.source,n);return{id:s,name:a.source,value:c,meta:{kind:`module`,nodeId:s,packageId:e,packageLabel:t,fileName:n,source:a.source,sourceType:a.sourceType,bytes:a.bytes,originalBytes:a.originalBytes,packageCount:l},...Yu(u,o)}}function td(e,t,n,r,i,a){let o=yl(e,n),s=Math.max(r.size??1,1),c=$u(Qu(s,i),r.file,r.source,e,t);return{id:o,name:r.source??n,value:s,meta:{kind:`asset`,nodeId:o,packageId:e,packageLabel:t,fileName:n,source:r.source??n,bytes:r.size},...Yu(c,a)}}function nd(e,t,n,r,i,a,o,s,c){let l=_l(t,r.file),u=Math.max(a,1),d=$u(Math.max(Qu(u,o),s*.72),r.file,r.source,t,e);return{id:l,name:r.file,value:u,meta:{kind:`file`,nodeId:l,packageId:t,packageLabel:n.get(t)??e,fileName:r.file,from:r.from,childCount:i.length,type:r.type,bytes:r.size},...Yu(d,c),children:i.length>0?i:void 0}}function rd(e,t,n,r,i){let a=gl(e.id),o=$u(r,e.id,e.label);return{id:a,name:e.label,value:Math.max(t,1),meta:{kind:`package`,nodeId:a,packageId:e.id,packageLabel:e.label,packageType:e.type,fileCount:e.files.length,totalBytes:t},...Yu(o,i),children:n}}function id(e){return e.reduce((e,t)=>e+t.value,0)}function ad(e,t){return`${e}\u0000${t}`}function od(e,t,n){return n.mode===`all`||n.mode===`selected-package`?!!t.source:n.mode===`growth`?n.growthFileKeys.has(ad(e,t.file)):n.mode===`source`?!!t.source:!1}function sd(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 cd(){return{mode:`all`,selectedPackageId:null,growthFileKeys:new Set,growthModuleIds:new Set,duplicateModuleIds:new Set}}function ld(e){let t=new Map(e.result.packages.map(t=>{let n=t.files.reduce((e,t)=>e+(t.size??0),0),r=Xu(t,e.result.metadata?.budgets);return[t.id,Zu(n,r,e.result.metadata?.budgets?.warningRatio)]})),n=new Map(e.result.packages.map(e=>[e.id,e.files.reduce((e,t)=>e+(t.size??0),0)]));return e.result.packages.flatMap(r=>{if(e.filter.mode===`selected-package`&&(!e.filter.selectedPackageId||r.id!==e.filter.selectedPackageId))return[];let i=r.files.flatMap(i=>{let a=n.get(r.id)??0,o=e.filter.mode===`growth`&&e.filter.growthFileKeys.has(ad(r.id,i.file)),s=Math.max(i.size??1,1),c=i.type===`chunk`?sd(e.filter,i.modules??[]).map(t=>ed(r.id,r.label,i.file,s,e.moduleUsageCount,t,e.theme)):od(r.id,i,e.filter)?[td(r.id,r.label,i.file,i,a,e.theme)]:[];if(e.filter.mode!==`all`&&e.filter.mode!==`selected-package`&&c.length===0&&!o)return[];let l=e.filter.mode===`all`||e.filter.mode===`selected-package`||o?i.size??id(c):id(c);return[nd(r.label,r.id,e.packageLabelMap,i,c,l,a,t.get(r.id)??0,e.theme)]});return i.length===0?[]:[rd(r,e.filter.mode===`all`||e.filter.mode===`selected-package`?r.files.reduce((e,t)=>e+(t.size??0),0):id(i),i,t.get(r.id)??0,e.theme)]})}function ud(e,t,n){let r=T(()=>new Map((e.value?.packages??[]).map(e=>[e.id,e.label]))),i=T(()=>new Map((e.value?.modules??[]).map(e=>[e.id,e.packages.length]))),a=T(()=>{let a=e.value;return a?ld({result:a,packageLabelMap:r.value,moduleUsageCount:i.value,filter:n?.value??cd(),theme:t.value}):[]});return{treemapOption:T(()=>({backgroundColor:`transparent`,tooltip:{formatter:e=>bl(e.data?.meta),borderColor:t.value===`dark`?`rgba(148, 163, 184, 0.16)`:`rgba(71, 85, 105, 0.14)`,backgroundColor:t.value===`dark`?`rgba(15, 23, 42, 0.92)`:`rgba(255, 255, 255, 0.96)`,textStyle:{color:t.value===`dark`?`#e2e8f0`:`#0f172a`}},series:[{type:`treemap`,nodeClick:`zoomToNode`,roam:`move`,roamTrigger:`global`,zoomToNodeRatio:.72,breadcrumb:{show:!1},visibleMin:1,label:{show:!0,backgroundColor:`rgba(255, 255, 255, 0.58)`,borderRadius:3,color:`#17231d`,formatter:`{b}`,fontSize:12,fontWeight:600,lineHeight:16,minMargin:4,overflow:`truncate`,padding:[1,4],textBorderWidth:0},upperLabel:{show:!0,color:`#17231d`,fontSize:12,fontWeight:700,lineHeight:16,overflow:`truncate`,textBorderWidth:0,textShadowBlur:1,textShadowColor:`rgba(255, 255, 255, 0.32)`},itemStyle:{borderColor:t.value===`dark`?`rgba(15, 23, 42, 0.88)`:`rgba(255, 255, 255, 0.92)`,borderWidth:2,gapWidth:2},emphasis:{itemStyle:{borderColor:t.value===`dark`?`#f8fafc`:`#0f172a`}},levels:hl,data:a.value}]})),treemapNodes:a}}ye(),init_Component(),init_Model(),init_util(),init_vector(),init_Axis(),init_api(),init_parseGeoJson(),init_SeriesData(),init_util(),init_format(),init_number(),init_Chart(),init_graphic(),init_Series(),init_throttle(),init_color(),init_graphic(),init_time(),init_locale(),init_helper(),init_platform(),init_Component(),init_matrix(),init_env(),init_zrender(),ve(),Se(),Ee(),xe([Te,Ce,_e,be,we]);function dd(e){let t=g(null),n=g(null),r=g(null),{canUseSelectedPackageFilter:i,duplicateModuleIds:a,growthModuleIds:o,handleUpdateTreemapFilterMode:s,treemapFilterMode:c,treemapFilterState:l}=Fu({duplicateModules:e.duplicateModules,incrementAttribution:e.incrementAttribution,selectedBudgetWarning:r,selectedLargestFile:n,selectedTreemapMeta:t}),{treemapOption:u,treemapNodes:d}=ud(e.resultRef,e.resolvedTheme,l),f=T(()=>e.resultRef.value!==null&&d.value.length===0),p=T(()=>{let n=t.value;return n?.kind===`module`?e.duplicateModules.value.filter(e=>e.source===n.source):e.duplicateModules.value}),m=T(()=>Nu({files:e.largestFiles.value,filterState:l.value,meta:t.value,warning:r.value})),h=T(()=>m.value.slice(0,10)),_=T(()=>n.value?`${n.value.packageId}:${n.value.file}`:null),v=T(()=>n.value?_l(n.value.packageId,n.value.file):t.value?.nodeId??null),y=T(()=>{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}),b=T(()=>Pu({modules:y.value?.modules??[],mode:c.value,growthModuleIds:o.value,duplicateModuleIds:a.value,duplicateModules:e.duplicateModules.value}));function x(e){t.value=e.data?.meta??null,n.value=null,r.value=null}let{bindChartRef:S,destroyChart:C,ensureChart:w,focusTreemapNode:E,handleResize:D,resetTreemapFocus:O}=Iu({activeTab:e.activeTab,resolvedTheme:e.resolvedTheme,treemapOption:u,handleChartClick:x});function ee(e){n.value=e,t.value={kind:`file`,nodeId:_l(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 k(i){if(r.value=i,n.value=Nu({files:e.largestFiles.value,filterState:l.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:gl(a.id),packageId:a.id,packageLabel:a.label,packageType:a.type,fileCount:a.fileCount,totalBytes:a.totalBytes}:null}function A(i){e.activeTab.value=`packages`,t.value={kind:`package`,nodeId:gl(i.id),packageId:i.id,packageLabel:i.label,packageType:i.type,fileCount:i.fileCount,totalBytes:i.totalBytes},n.value=null,r.value=null,c.value=`selected-package`}function j(){v.value&&E(v.value)}function M(){O()}function N(){t.value=null,n.value=null,r.value=null}return{activeLargestFileKey:_,bindChartRef:S,canUseSelectedPackageFilter:i,destroyChart:C,ensureChart:w,filteredDuplicateModules:p,filteredLargestFiles:m,handleFocusTreemapSelection:j,handleResetTreemapFocus:M,handleResize:D,handleSelectBudgetWarning:k,handleSelectLargestFile:ee,handleSelectPackageInsight:A,handleUpdateTreemapFilterMode:s,isTreemapEmpty:f,resetTreemapSelection:N,selectedBudgetWarning:r,selectedFileModules:b,selectedLargestFile:n,selectedTreemapFocusNodeId:v,selectedTreemapMeta:t,treemapFilterMode:c,visibleLargestFiles:h}}function fd(e){return new URL(e,window.location.origin).toString()}function pd(e){let t=b(),n=k(),r=T(()=>t.fullPath!==`/analyze`);async function i(){await W(fd(t.fullPath)),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 md=`weapp-vite:dashboard:analyze-work-queue`;function hd(){try{let e=window.localStorage.getItem(md);return yu(e?JSON.parse(e):null)}catch{return[]}}function gd(e){try{window.localStorage.setItem(md,JSON.stringify(e))}catch{}}function _d(){let t=g([]),n=T(()=>t.value.filter(e=>!e.completedAt)),r=T(()=>t.value.filter(e=>e.completedAt)),i=T(()=>t.value.filter(e=>e.targetKind===`action`&&!e.completedAt).map(e=>e.targetKey));function a(e){t.value=yu(e),gd(t.value)}function o(e){let n=t.value.find(t=>t.id===e.id);a([n?{...n,...e,createdAt:n.createdAt,completedAt:void 0}:e,...t.value.filter(t=>t.id!==e.id)])}function s(e){let n=new Date().toISOString();a(t.value.map(t=>t.id===e?{...t,completedAt:t.completedAt?void 0:n}:t))}function c(e){a(t.value.filter(t=>t.id!==e))}function l(){a(t.value.filter(e=>!e.completedAt))}return e(()=>{t.value=hd()}),{completedWorkQueueItems:r,openWorkQueueItems:n,queuedActionKeys:i,workQueueItems:t,addWorkQueueItem:o,clearCompletedWorkQueueItems:l,removeWorkQueueItem:c,toggleWorkQueueItem:s}}function $(e){return e}function vd(e){return typeof e!=`number`||Number.isNaN(e)||e===0?``:`${e>0?`+`:`-`}${V(Math.abs(e))}`}function yd(e){let t=b(),n=k(),r=T({get(){let e=t.query.tab;return e===`diagnostics`||e===`review`||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=T(()=>e.packageInsights.value.reduce((e,t)=>e+t.chunkCount,0)),a=T(()=>e.packageInsights.value.reduce((e,t)=>e+t.assetCount,0)),o=T(()=>e.duplicateModules.value.reduce((e,t)=>e+t.bytes,0)),s=T(()=>{let t=e.summary.value,n=t.compressedSizeSource===`real`?`Brotli`:`估算压缩后`,r=vd(t.compressedDeltaBytes);return`${n} ${V(t.compressedBytes)}${r?` · ${r}`:``}`}),c=T(()=>{let t=vd(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:V(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?V(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:V(e.summary.value.totalBytes),detail:s.value,wide:!0,iconName:`metric-size`})]}return{activeTab:r,topCards:T(()=>r.value===`packages`?l():r.value===`modules`?u():d()),packageTypeSummary:e.packageTypeSummary}}var bd=[{id:`metrics`,label:`关键指标`}],xd=[{id:`actions`,label:`问题中心`},{id:`work-queue`,label:`处理清单`},{id:`history`,label:`历史基线`}],Sd=[{id:`review`,label:`PR 风险清单`}],Cd=[{id:`treemap`,label:`体积地图`}],wd=[{id:`packages`,label:`包与产物`}],Td=[{id:`modules`,label:`模块复用`}],Ed=[{id:`source`,label:`源码对比`}];function Dd(){let t=g(!1),{resolvedTheme:n}=ue(),{baselineSnapshotId:r,comparisonMode:i,comparisonResultRef:a,historySnapshots:o,lastUpdatedAt:s,resultRef:c,setBaselineSnapshot:l,setComparisonMode:u,updateCount:d}=me(),p=fu(c,a),{activeTab:m,topCards:h,packageTypeSummary:_}=yd({summary:p.summary,packageInsights:p.packageInsights,packageTypeSummary:p.packageTypeSummary,duplicateModules:p.duplicateModules,moduleSourceSummary:p.moduleSourceSummary,lastUpdatedAt:s}),v=dd({activeTab:m,resultRef:c,resolvedTheme:n,largestFiles:p.largestFiles,duplicateModules:p.duplicateModules,incrementAttribution:p.incrementAttribution,packageInsights:p.packageInsights}),{actionItems:y}=Tl({budgetWarnings:p.budgetWarnings,incrementAttribution:p.incrementAttribution,duplicateModules:p.duplicateModules,largestFiles:p.largestFiles,packageInsights:p.packageInsights}),b=_d(),x=T(()=>ml({actionItems:y.value,workQueueItems:b.workQueueItems.value})),{commandItems:S}=Fl({actionItems:y,budgetWarnings:p.budgetWarnings,duplicateModules:p.duplicateModules,incrementAttribution:p.incrementAttribution,largestFiles:p.largestFiles,packageInsights:p.packageInsights}),C=Au({resultRef:c,summary:p.summary,packageInsights:p.packageInsights,largestFiles:p.largestFiles,duplicateModules:p.duplicateModules,budgetWarnings:p.budgetWarnings,incrementAttribution:p.incrementAttribution,incrementSummary:p.incrementSummary,prReviewChecklist:x,workQueueItems:b.workQueueItems,moreMenuOpen:t}),w=Su({activeTab:m,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}),E=pd({exportStatus:C.exportStatus,moreMenuOpen:t,resetPageSelection:w.resetPageSelection,resetTreemapSelection:v.resetTreemapSelection}),O=T(()=>`${d.value} 次数据同步`),ee=T(()=>n.value===`dark`?`status-dark`:`status-light`),k=T(()=>[{iconName:ee.value,label:O.value},{label:s.value}]),A=T(()=>v.selectedBudgetWarning.value?.id??null);function j(){t.value=!1}function M(e){e.key===`Escape`&&(t.value=!1),(e.metaKey||e.ctrlKey)&&e.key.toLowerCase()===`k`&&(e.preventDefault(),c.value&&(w.commandPaletteOpen.value=!0))}return f(c,()=>{v.resetTreemapSelection(),w.resetPageSelection()}),e(()=>{window.addEventListener(`resize`,v.handleResize),window.addEventListener(`keydown`,M),window.addEventListener(`click`,j),v.ensureChart()}),D(()=>{window.removeEventListener(`resize`,v.handleResize),window.removeEventListener(`keydown`,M),window.removeEventListener(`click`,j),v.destroyChart()}),{...p,...w,...C,...v,...E,...b,actionItems:y,activeTab:m,activeBudgetWarningId:A,baselineSnapshotId:r,commandItems:S,comparisonMode:i,diagnosticsLayoutItems:xd,historySnapshots:o,metricPackageTypeSummary:_,modulesLayoutItems:Td,moreMenuOpen:t,overviewLayoutItems:bd,packagesLayoutItems:wd,prReviewChecklist:x,resolvedTheme:n,reviewLayoutItems:Sd,setBaselineSnapshot:l,setComparisonMode:u,sourceLayoutItems:Ed,statusPills:k,topCards:h,treemapFilterOptions:ge,treemapLayoutItems:Cd,resultRef:c}}var Od={class:`grid h-full min-h-0 grid-rows-[auto_minmax(0,1fr)] gap-2 overflow-hidden`},kd=n({__name:`analyze`,setup(e){let{actionItems:t,activeBudgetWarningId:n,activeLargestFileKey:r,activeTab:i,activeWorkQueueItemId:a,baselineSnapshotId:o,bindChartRef:s,budgetWarnings:l,canUseSelectedPackageFilter:u,canResetView:d,clearCompletedWorkQueueItems:f,commandItems:m,commandPaletteOpen:g,comparisonMode:_,copyMarkdownReport:v,copyPrReport:b,copyPrReviewChecklist:x,copySummary:S,copyViewLink:C,copyWorkQueueReport:w,diagnosticsLayoutItems:T,exportCsv:D,exportJson:O,exportMarkdown:ee,exportStatus:k,filteredDuplicateModules:A,filteredLargestFiles:j,handleAddActionToWorkQueue:M,handleFocusTreemapSelection:N,handleResetTreemapFocus:P,handleSelectAction:I,handleSelectBudgetWarning:R,handleSelectLargestFile:te,handleSelectPackageInsight:ne,handleSelectReviewChecklistItem:re,handleSelectCommand:ie,handleSelectWorkQueueItem:ae,handleUpdateTreemapFilterMode:oe,historySnapshots:se,incrementAttribution:z,incrementSummary:B,isTreemapEmpty:ce,largestFiles:le,metricPackageTypeSummary:ue,modulesLayoutItems:V,moduleSourceSummary:de,moreMenuOpen:fe,openWorkQueueItems:pe,overviewLayoutItems:me,packageInsights:H,packagesLayoutItems:U,prReviewChecklist:he,queuedActionKeys:ge,removeWorkQueueItem:W,resetAnalyzeView:G,resolvedTheme:K,resultRef:_e,reviewLayoutItems:ve,selectedActionKey:ye,selectedFileModules:be,selectedTreemapFocusNodeId:xe,selectedTreemapMeta:Se,setBaselineSnapshot:Ce,setComparisonMode:we,sourceLayoutItems:Te,statusPills:Ee,summary:De,toggleWorkQueueItem:Oe,topCards:ke,treemapFilterMode:Ae,treemapFilterOptions:je,treemapLayoutItems:Me,visibleLargestFiles:Ne,workQueueItems:Pe}=Dd();return(e,Fe)=>(E(),L(`div`,Od,[c(_e)?F(``,!0):(E(),y(ct,{key:0})),p(sl,{"more-menu-open":c(fe),"onUpdate:moreMenuOpen":Fe[0]||=e=>h(fe)?fe.value=e:null,"can-reset-view":c(d),"can-search":!!c(_e),"export-status":c(k),"open-work-queue-count":c(pe).length,"status-pills":c(Ee),onCopyMarkdown:c(v),onCopyPr:c(b),onCopySummary:c(S),onCopyViewLink:c(C),onExportCsv:c(D),onExportJson:c(O),onExportMarkdown:c(ee),onOpenSearch:Fe[1]||=e=>g.value=!0,onResetView:c(G)},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`]),c(_e)?(E(),y(Kc,{key:1,"action-items":c(t),"active-budget-warning-id":c(n),"active-largest-file-key":c(r),"active-tab":c(i),"active-work-queue-item-id":c(a),"baseline-snapshot-id":c(o),"bind-chart-ref":c(s),"budget-config":c(_e).metadata?.budgets,"budget-warnings":c(l),"can-use-selected-package-filter":c(u),"comparison-mode":c(_),"copy-status":c(k),"diagnostics-layout-items":c(T),"filtered-duplicate-modules":c(A),"filtered-largest-files":c(j),"history-snapshots":c(se),"increment-attribution":c(z),"increment-summary":c(B),"is-treemap-empty":c(ce),"largest-files":c(le),"metric-package-type-summary":c(ue),"modules-layout-items":c(V),"module-source-summary":c(de),"overview-layout-items":c(me),"package-insights":c(H),"packages-layout-items":c(U),"pr-review-checklist":c(he),"queued-action-keys":c(ge),"review-layout-items":c(ve),"selected-action-key":c(ye),"selected-file-modules":c(be),"selected-treemap-focus-node-id":c(xe),"selected-treemap-meta":c(Se),"source-layout-items":c(Te),theme:c(K),"top-cards":c(ke),"total-bytes":c(De).totalBytes,"treemap-filter-mode":c(Ae),"treemap-filter-options":c(je),"treemap-layout-items":c(Me),"visible-largest-files":c(Ne),"work-queue-items":c(Pe),onAddActionToQueue:c(M),onClearCompletedWorkQueue:c(f),onCopyPr:c(b),onCopyReviewChecklist:c(x),onCopyWorkQueue:c(w),onFocusTreemapSelection:c(N),onRemoveWorkQueueItem:c(W),onResetTreemapFocus:c(P),onSelectAction:c(I),onSelectBudgetWarning:c(R),onSelectFile:c(te),onSelectPackage:c(ne),onSelectReviewChecklistItem:c(re),onSelectWorkQueueItem:c(ae),onSetBaseline:c(Ce),onSetComparisonMode:c(we),onToggleWorkQueueItem:c(Oe),onUpdateTreemapFilterMode:c(oe)},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.copy-status.diagnostics-layout-items.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.selected-action-key.selected-file-modules.selected-treemap-focus-node-id.selected-treemap-meta.source-layout-items.theme.top-cards.total-bytes.treemap-filter-mode.treemap-filter-options.treemap-layout-items.visible-largest-files.work-queue-items.onAddActionToQueue.onClearCompletedWorkQueue.onCopyPr.onCopyReviewChecklist.onCopyWorkQueue.onFocusTreemapSelection.onRemoveWorkQueueItem.onResetTreemapFocus.onSelectAction.onSelectBudgetWarning.onSelectFile.onSelectPackage.onSelectReviewChecklistItem.onSelectWorkQueueItem.onSetBaseline.onSetComparisonMode.onToggleWorkQueueItem.onUpdateTreemapFilterMode`.split(`.`))):F(``,!0),p(rt,{open:!!(c(_e)&&c(g)),items:c(m),onClose:Fe[2]||=e=>g.value=!1,onSelect:c(ie)},null,8,[`open`,`items`,`onSelect`])]))}});export{kd as default};