@weapp-vite/dashboard 6.17.3 → 6.17.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/AppEmptyState.js +1 -0
- package/dist/assets/AppInsetPanel.js +1 -0
- package/dist/assets/AppMetricTile.js +1 -0
- package/dist/assets/AppRuntimeBadge.js +1 -0
- package/dist/assets/AppSectionHeading.js +1 -0
- package/dist/assets/activity.js +5 -6
- package/dist/assets/analyze.js +30 -36
- package/dist/assets/css.worker-C078mPpn.js +89 -0
- package/dist/assets/echarts.js +11 -4
- package/dist/assets/editor.worker-Cn2oRESe.js +26 -0
- package/dist/assets/html.worker-BO6WuOEO.js +502 -0
- package/dist/assets/index.css +2 -1
- package/dist/assets/index.js +1 -1
- package/dist/assets/json.worker-C4lWBgVJ.js +58 -0
- package/dist/assets/monaco.css +1 -1
- package/dist/assets/monaco.js +288 -319
- package/dist/assets/pages.js +2 -0
- package/dist/assets/rolldown-runtime.js +1 -0
- package/dist/assets/tokens.js +1 -1
- package/dist/assets/{ts.worker-BH9nVgjN.js → ts.worker-CDlTriQ3.js} +253 -237
- package/dist/assets/vendor.js +1 -8
- package/dist/assets/vue.js +1 -1
- package/package.json +4 -4
- package/dist/assets/AppInsetPanel.vue_vue_type_script_setup_true_lang.js +0 -1
- package/dist/assets/AppMetricTile.vue_vue_type_script_setup_true_lang.js +0 -1
- package/dist/assets/AppRuntimeBadge.vue_vue_type_script_setup_true_lang.js +0 -1
- package/dist/assets/AppSectionHeading.vue_vue_type_script_setup_true_lang.js +0 -1
- package/dist/assets/clipboard.js +0 -1
- package/dist/assets/css.worker-DBVD8oXr.js +0 -93
- package/dist/assets/editor.worker-CdQrwHl8.js +0 -26
- package/dist/assets/html.worker-CwpTb9lJ.js +0 -470
- package/dist/assets/index2.js +0 -2
- package/dist/assets/json.worker-BoL8UZqY.js +0 -58
package/dist/assets/analyze.js
CHANGED
|
@@ -1,38 +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{l as ne,a as k,k as D,M as tt,d as N,o as b,f as W,b as C,T as za,w as P,c as y,N as at,e as s,C as E,D as se,u,G as U,t as h,E as J,F,r as L,h as O,n as M,g as _,O as Aa,R as ct,m as ot,j as rt,v as Y,p as fe,P as st,K as he,Q as mt,H as pe,I as ke,S as At,U as Pa,V as Wa,y as nt,W as lt}from"./vue.js";import{j as ce,_ as ae,a as Ra,f as B,k as ie,l as Pt,n as te,p as be,o as Wt,q as Ue,t as Da,v as Rt,x as Dt,y as Na,u as ja}from"./index.js";import{_ as X,c as G}from"./clipboard.js";import{_ as de}from"./AppMetricTile.vue_vue_type_script_setup_true_lang.js";import{W as pt,a as Ke,b as Qa,c as Oa,d as Ea,_ as Ua}from"./monaco.js";import{i as Ka,u as qa,a as Va,b as Ja,c as Ha,d as Ga,e as Ya}from"./echarts.js";import"./vendor.js";const bt={action:"动作",budget:"预算",package:"包",file:"文件",increment:"增量",module:"模块"},Xa={action:"warning",budget:"warning",package:"neutral",file:"neutral",module:"neutral",increment:"info"},Za=[{value:"all",label:"全部"},{value:"action",label:"动作"},{value:"budget",label:"预算"},{value:"package",label:"包"},{value:"file",label:"文件"},{value:"module",label:"模块"},{value:"increment",label:"增量"}];function eo(e,a){const t=D(),r=D(""),o=D(0),n=D("all"),l=k(()=>{const v=r.value.trim().toLowerCase();return e.items.filter($=>n.value!=="all"&&$.kind!==n.value?!1:v?`${$.title} ${$.meta} ${$.value??""} ${$.key} ${$.keywords}`.toLowerCase().includes(v):!0).slice(0,40)}),c=k(()=>l.value[o.value]??null),m=k(()=>{const v=n.value==="all"?"全部类型":bt[n.value];return`匹配 ${l.value.length} / ${e.items.length} 项 · ${v}`});ne(()=>e.open,async v=>{if(!v){r.value="",n.value="all",o.value=0;return}await tt(),t.value?.focus()}),ne(l,()=>{o.value=0});function p(v){return bt[v]}function g(v){return ce({tone:Xa[v]})}function i(v){a("select",v),a("close")}function x(v){if(v.key==="Escape"){v.preventDefault(),a("close");return}if(v.key==="ArrowDown"){v.preventDefault(),o.value=Math.min(o.value+1,Math.max(l.value.length-1,0));return}if(v.key==="ArrowUp"){v.preventDefault(),o.value=Math.max(o.value-1,0);return}if(v.key==="Enter"){v.preventDefault();const S=l.value[o.value];S&&i(S)}}return{activeIndex:o,filteredItems:l,getKindLabel:p,getKindTone:g,handleKeydown:x,kindFilter:n,kindOptions:Za,query:r,resultSummary:m,searchInputRef:t,selectedItem:c,selectItem:i}}const to={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"},ao={class:"grid gap-3 border-b border-(--dashboard-border) px-4 py-3"},oo={class:"flex items-center gap-3"},ro={class:"h-5 w-5 shrink-0 text-(--dashboard-accent)"},so={class:"flex flex-wrap items-center justify-between gap-2"},no={class:"text-xs text-(--dashboard-text-soft)"},lo=["value"],io={class:"grid min-h-0 gap-2 overflow-hidden p-2 lg:grid-cols-[minmax(0,1fr)_minmax(16rem,0.52fr)]"},uo={key:1,class:"grid max-h-full min-h-0 gap-1 overflow-y-auto pr-1"},co=["onMouseenter","onClick"],mo={class:"flex items-start justify-between gap-3"},po={class:"min-w-0"},bo={class:"flex min-w-0 items-center gap-2"},go={class:"truncate font-medium text-(--dashboard-text)"},fo={class:"mt-1 truncate text-xs text-(--dashboard-text-soft)"},yo={key:0,class:"whitespace-nowrap text-sm font-medium text-(--dashboard-accent)"},ho={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"},vo={class:"flex items-start justify-between gap-3"},xo={key:1,class:"grid min-h-0 content-start gap-3 overflow-y-auto"},ko={class:"font-medium"},$o={class:"mt-1 text-sm leading-6 text-(--dashboard-text-muted)"},wo={class:"grid gap-2 text-sm"},Bo={class:"flex items-center justify-between gap-3 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel) px-3 py-2"},So={key:0,class:"flex items-center justify-between gap-3 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel) px-3 py-2"},Co={class:"text-(--dashboard-accent)"},Io=N({__name:"AnalyzeCommandPalette",props:{open:{type:Boolean},items:{}},emits:["close","select"],setup(e,{emit:a}){const t=e,r=a,{activeIndex:o,filteredItems:n,getKindLabel:l,getKindTone:c,handleKeydown:m,kindFilter:p,kindOptions:g,query:i,resultSummary:x,searchInputRef:v,selectedItem:S,selectItem:$}=eo(t,r);return(f,d)=>(b(),W(Aa,{to:"body"},[C(za,{"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:P(()=>[e.open?(b(),y("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:d[4]||(d[4]=at(w=>r("close"),["self"]))},[s("section",to,[s("div",ao,[s("div",oo,[s("span",ro,[C(ae,{name:"metric-search"})]),E(s("input",{ref_key:"searchInputRef",ref:v,"onUpdate:modelValue":d[0]||(d[0]=w=>U(i)?i.value=w:null),class:"min-w-0 flex-1 bg-transparent text-base outline-none placeholder:text-(--dashboard-text-soft)",placeholder:"搜索包、文件、模块、预算",onKeydown:d[1]||(d[1]=(...w)=>u(m)&&u(m)(...w))},null,544),[[se,u(i)]])]),s("div",so,[s("p",no,h(u(x)),1),E(s("select",{"onUpdate:modelValue":d[2]||(d[2]=w=>U(p)?p.value=w: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)"},[(b(!0),y(F,null,L(u(g),w=>(b(),y("option",{key:w.value,value:w.value},h(w.label),9,lo))),128))],512),[[J,u(p)]])])]),s("div",io,[u(n).length===0?(b(),W(X,{key:0,compact:""},{default:P(()=>[...d[5]||(d[5]=[O(" 没有匹配结果。 ",-1)])]),_:1})):(b(),y("ul",uo,[(b(!0),y(F,null,L(u(n),(w,T)=>(b(),y("li",{key:w.key,class:"list-none"},[s("button",{type:"button",class:M(["w-full rounded-md border px-3 py-2.5 text-left transition",T===u(o)?"border-(--dashboard-accent) bg-(--dashboard-accent-soft)":"border-transparent hover:border-(--dashboard-border) hover:bg-(--dashboard-panel-muted)"]),onMouseenter:Q=>o.value=T,onClick:Q=>u($)(w)},[s("div",mo,[s("div",po,[s("div",bo,[s("span",{class:M(u(c)(w.kind))},h(u(l)(w.kind)),3),s("p",go,h(w.title),1)]),s("p",fo,h(w.meta),1)]),w.value?(b(),y("span",yo,h(w.value),1)):_("",!0)])],42,co)]))),128))])),s("aside",ho,[s("div",vo,[d[6]||(d[6]=s("div",null,[s("p",{class:"text-[11px] uppercase tracking-[0.2em] text-(--dashboard-accent)"}," Preview "),s("h3",{class:"mt-1 text-base font-semibold"}," 当前命令 ")],-1)),u(S)?(b(),y("span",{key:0,class:M(u(c)(u(S).kind))},h(u(l)(u(S).kind)),3)):_("",!0)]),u(S)?(b(),y("div",xo,[s("div",null,[s("h4",ko,h(u(S).title),1),s("p",$o,h(u(S).meta),1)]),s("div",wo,[s("div",Bo,[d[8]||(d[8]=s("span",{class:"text-xs uppercase tracking-[0.16em] text-(--dashboard-text-soft)"},"Tab",-1)),s("strong",null,h(u(S).tab),1)]),u(S).value?(b(),y("div",So,[d[9]||(d[9]=s("span",{class:"text-xs uppercase tracking-[0.16em] text-(--dashboard-text-soft)"},"Value",-1)),s("strong",Co,h(u(S).value),1)])):_("",!0)]),s("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:d[3]||(d[3]=w=>u($)(u(S)))}," 跳转到结果 ")])):(b(),W(X,{key:0,compact:""},{default:P(()=>[...d[7]||(d[7]=[O(" 选择左侧结果后查看目标和跳转位置。 ",-1)])]),_:1}))])])])])):_("",!0)]),_:1})]))}}),Mo={class:"grid gap-3 xl:grid-cols-[minmax(0,1fr)_minmax(18rem,0.92fr)]"},To={class:"rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-4"},Fo={class:"mt-4 grid gap-2"},Lo={class:"grid gap-2"},_o=N({__name:"AnalyzeEmptyPayloadPanel",setup(e){return(a,t)=>(b(),W(Ra,{eyebrow:"Analyze",title:"等待分析数据注入","icon-name":"hero-commands",tone:"strong",padding:"header"},{default:P(()=>[s("div",Mo,[s("div",To,[t[0]||(t[0]=s("p",{class:"text-[11px] uppercase tracking-[0.24em] text-(--dashboard-text-soft)"}," recommended commands ",-1)),s("div",Fo,[(b(),y(F,null,L(["weapp-vite analyze","weapp-vite build --ui","weapp-vite dev --ui"],r=>s("code",{key:r,class:"rounded-md bg-slate-950 px-3 py-3 text-xs text-slate-100 dark:bg-slate-900"},h(r),1)),64))])]),s("div",Lo,[C(u(ct),{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:P(()=>[...t[1]||(t[1]=[s("p",{class:"font-medium"}," 返回工作台 ",-1),s("p",{class:"mt-1 text-sm leading-6 text-(--dashboard-text-muted)"}," 查看当前状态和命令。 ",-1)])]),_:1}),C(u(ct),{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:P(()=>[...t[2]||(t[2]=[s("p",{class:"font-medium"}," 查看活动流 ",-1),s("p",{class:"mt-1 text-sm leading-6 text-(--dashboard-text-muted)"}," 观察命令、构建、HMR 和诊断事件。 ",-1)])]),_:1})])])]),_:1}))}}),zo=["onDrop"],Ao={class:"flex min-h-0 items-center justify-between gap-2 pb-1"},Po=["onDragstart"],Wo={class:"truncate"},Ro={class:"min-h-0 overflow-hidden"},me=N({__name:"AnalyzeDraggableGrid",props:{items:{},storageKey:{},gridClass:{}},setup(e){const a=e,t=Y([]),r=Y(null),o=k(()=>new Map(a.items.map(i=>[i.id,i]))),n=k(()=>{const i=new Set(a.items.map(S=>S.id)),x=t.value.filter(S=>i.has(S)).map(S=>o.value.get(S)).filter(S=>!!S),v=a.items.filter(S=>!t.value.includes(S.id));return[...x,...v]});function l(){try{const i=window.localStorage.getItem(a.storageKey),x=i?JSON.parse(i):null;t.value=Array.isArray(x)?x.filter(v=>typeof v=="string"):a.items.map(v=>v.id)}catch{t.value=a.items.map(i=>i.id)}}function c(i){t.value=i,window.localStorage.setItem(a.storageKey,JSON.stringify(i))}function m(i,x){r.value=i.id,x.dataTransfer?.setData("text/plain",i.id),x.dataTransfer&&(x.dataTransfer.effectAllowed="move")}function p(i){const x=r.value;if(r.value=null,!x||x===i.id)return;const v=n.value.map(f=>f.id),S=v.indexOf(x),$=v.indexOf(i.id);S<0||$<0||(v.splice(S,1),v.splice($,0,x),c(v))}function g(){c(a.items.map(i=>i.id))}return ot(l),ne(()=>a.items.map(i=>i.id).join("\0"),l),(i,x)=>(b(),y("section",{class:M(e.gridClass)},[(b(!0),y(F,null,L(n.value,v=>(b(),y("article",{key:v.id,class:M(["grid min-h-0 grid-rows-[auto_minmax(0,1fr)] overflow-hidden rounded-lg border border-dashed border-transparent transition",[v.className,r.value===v.id?"border-(--dashboard-accent) opacity-70":""]]),onDragover:x[1]||(x[1]=at(()=>{},["prevent"])),onDrop:S=>p(v)},[s("div",Ao,[s("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:x[0]||(x[0]=S=>r.value=null),onDragstart:S=>m(v,S)},[x[2]||(x[2]=s("span",{"aria-hidden":"true"},"::",-1)),s("span",Wo,h(v.label),1)],40,Po),n.value.length>1&&v.id===n.value[0]?.id?(b(),y("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:g}," 重置布局 ")):_("",!0)]),s("div",Ro,[rt(i.$slots,v.id,{item:v})])],42,zo))),128))],2))}});function Nt(e){return typeof e!="number"||Number.isNaN(e)||e===0?"":`${e>0?"+":"-"}${B(Math.abs(e))}`}function Do(e){const a=Nt(e.sizeDeltaBytes);return{title:e.file,meta:`${e.packageLabel} · ${ie(e.packageType)} · ${e.type}${a?` · ${a}`:""}`,value:`${B(e.size)} / ${B(e.compressedSize)}`}}function No(e){return e.kind==="package"?{title:e.packageLabel,meta:`${ie(e.packageType)} · ${e.fileCount} 个产物`,value:B(e.totalBytes)}:e.kind==="file"?{title:e.fileName,meta:`${e.packageLabel} · ${e.type} · ${e.childCount} 项`,value:B(e.bytes)}:e.kind==="module"?{title:e.source,meta:`${e.packageLabel} · ${e.packageCount} 个包复用`,value:B(e.bytes??e.originalBytes)}:{title:e.source,meta:`${e.packageLabel} · ${e.fileName}`,value:B(e.bytes)}}function jo(e){return e.replaceAll("|","\\|").replaceAll(`
|
|
3
|
-
|
|
4
|
-
`)}
|
|
5
|
-
`
|
|
6
|
-
|
|
7
|
-
`));function x($){n.value=$,l&&clearTimeout(l),l=setTimeout(()=>{n.value="",l=null},1800)}async function v(){try{await G(i.value),x("已复制")}catch{x("复制失败")}}function S(){const $=new Blob([`${JSON.stringify(p.value,null,2)}
|
|
8
|
-
`],{type:"application/json"}),f=URL.createObjectURL($),d=document.createElement("a");d.href=f,d.download="weapp-vite-dashboard-file-modules.json",d.click(),URL.revokeObjectURL(f),x("已导出")}return fe(()=>{l&&clearTimeout(l)}),($,f)=>(b(),y("section",ur,[s("div",cr,[s("div",null,[f[3]||(f[3]=s("h3",{class:"text-sm font-semibold text-(--dashboard-text)"}," 文件详情 ",-1)),s("p",mr," 匹配 "+h(g.value.length)+" / "+h(e.selectedFileModules.length)+" 个模块 ",1)]),f[4]||(f[4]=s("span",{class:"text-[11px] uppercase tracking-[0.16em] text-(--dashboard-text-soft)"},"modules",-1))]),s("div",pr,[s("div",br,[n.value?(b(),y("span",gr,h(n.value),1)):_("",!0),s("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:g.value.length===0,onClick:v}," 复制模块 ",8,fr),s("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:g.value.length===0,onClick:S}," 导出 JSON ",8,yr)]),E(s("input",{"onUpdate:modelValue":f[0]||(f[0]=d=>t.value=d),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),[[se,t.value]]),s("div",hr,[E(s("select",{"onUpdate:modelValue":f[1]||(f[1]=d=>r.value=d),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)"},[f[5]||(f[5]=s("option",{value:"all"}," 全部来源 ",-1)),(b(!0),y(F,null,L(m.value,d=>(b(),y("option",{key:d,value:d},h(d),9,vr))),128))],512),[[J,r.value]]),E(s("select",{"onUpdate:modelValue":f[2]||(f[2]=d=>o.value=d),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)"},[...f[6]||(f[6]=[s("option",{value:"saving"}," 按可节省 ",-1),s("option",{value:"size"}," 按体积 ",-1),s("option",{value:"duplicates"}," 按复用包 ",-1),s("option",{value:"source"}," 按路径 ",-1)])],512),[[J,o.value]])])]),s("ul",xr,[g.value.length===0?(b(),W(X,{key:0,as:"li",compact:""},{default:P(()=>[...f[7]||(f[7]=[O(" 选择一个 chunk 文件或调整筛选条件查看模块明细。 ",-1)])]),_:1})):_("",!0),(b(!0),y(F,null,L(g.value,d=>(b(),W($e,{key:d.key,meta:d.meta,"mono-title":"",title:d.title,value:d.value},null,8,["meta","title","value"]))),128))])]))}}),le={totalBytes:20*1024*1024,mainBytes:2*1024*1024,subPackageBytes:2*1024*1024,independentBytes:2*1024*1024,warningRatio:.85},re=1024*1024,Ye=[{id:"wechat-default",label:"平台上限",detail:"按小程序常见包体限制和 85% 预警线评估。",config:{totalBytes:20*re,mainBytes:2*re,subPackageBytes:2*re,independentBytes:2*re,warningRatio:.85}},{id:"release-buffer",label:"发布缓冲",detail:"保留更早预警空间,适合发版前巡检。",config:{totalBytes:20*re,mainBytes:2*re,subPackageBytes:2*re,independentBytes:2*re,warningRatio:.75}},{id:"near-limit",label:"临界排查",detail:"只标记接近上限的包,适合聚焦最紧急项。",config:{totalBytes:20*re,mainBytes:2*re,subPackageBytes:2*re,independentBytes:2*re,warningRatio:.95}}];function Te(e,a){return Number.isFinite(e)&&e>0?Math.round(e):a}function $r(e){return Number.isFinite(e)?Math.min(.99,Math.max(.01,e)):le.warningRatio}function wr(e,a){return e==="main"?a.mainBytes:e==="subPackage"?a.subPackageBytes:e==="independent"?a.independentBytes:0}function gt(e){const a=e.limitBytes>0?e.currentBytes/e.limitBytes:0;if(!(a<e.warningRatio))return{id:e.id,label:e.label,scope:e.scope,currentBytes:e.currentBytes,limitBytes:e.limitBytes,ratio:a,status:a>=1?"critical":"warning"}}function ye(e){return{totalBytes:Te(e?.totalBytes??le.totalBytes,le.totalBytes),mainBytes:Te(e?.mainBytes??le.mainBytes,le.mainBytes),subPackageBytes:Te(e?.subPackageBytes??le.subPackageBytes,le.subPackageBytes),independentBytes:Te(e?.independentBytes??le.independentBytes,le.independentBytes),warningRatio:$r(e?.warningRatio??le.warningRatio)}}function Br(e,a){return e.totalBytes===a.totalBytes&&e.mainBytes===a.mainBytes&&e.subPackageBytes===a.subPackageBytes&&e.independentBytes===a.independentBytes&&e.warningRatio===a.warningRatio}function Sr(e){const a=ye(e);return Ye.find(t=>Br(ye(t.config),a))}function Cr(e){const a=ye(e.config),t=[],r=gt({id:"__total__",label:"总包",scope:"total",currentBytes:e.totalBytes,limitBytes:a.totalBytes,warningRatio:a.warningRatio});r&&t.push(r);for(const o of e.packages){const n=wr(o.type,a);if(!n)continue;const l=gt({id:o.id,label:o.label,scope:o.type,currentBytes:o.totalBytes,limitBytes:n,warningRatio:a.warningRatio});l&&t.push(l)}return t.sort((o,n)=>n.ratio-o.ratio||o.label.localeCompare(n.label))}function Ir(e){const a=ye(e);return["analyze: {"," budgets: {",` totalBytes: ${a.totalBytes},`,` mainBytes: ${a.mainBytes},`,` subPackageBytes: ${a.subPackageBytes},`,` independentBytes: ${a.independentBytes},`,` warningRatio: ${a.warningRatio},`," },","},"].join(`
|
|
9
|
-
`)}const Mr={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)"},Tr={class:"mb-2 flex items-center justify-between gap-3"},Fr={class:"mt-1 text-xs text-(--dashboard-text-soft)"},Lr={key:0,class:"text-xs font-medium text-(--dashboard-accent)"},_r={class:"grid min-h-0 grid-rows-[auto_auto_auto_minmax(0,1fr)] gap-3 overflow-hidden"},zr={class:"grid grid-cols-3 gap-2"},Ar=["onClick"],Pr={class:"block truncate text-xs font-semibold"},Wr={class:"mt-1 line-clamp-2 block text-[11px] leading-4 opacity-80"},Rr={class:"grid grid-cols-2 gap-2"},Dr={class:"grid gap-1 text-[11px] text-(--dashboard-text-soft)"},Nr={class:"grid gap-1 text-[11px] text-(--dashboard-text-soft)"},jr={class:"grid gap-1 text-[11px] text-(--dashboard-text-soft)"},Qr={class:"grid gap-1 text-[11px] text-(--dashboard-text-soft)"},Or={class:"grid gap-2"},Er={class:"grid gap-1 text-[11px] text-(--dashboard-text-soft)"},Ur={class:"min-h-0 overflow-y-auto pr-1"},Kr={key:1,class:"grid content-start gap-2 text-sm text-(--dashboard-text-muted)"},qr=N({__name:"BudgetSandboxPanel",props:{activeBudgetWarningId:{},budgetConfig:{},currentWarnings:{},packageInsights:{},totalBytes:{}},emits:["selectBudgetWarning"],setup(e,{emit:a}){const t=e,r=a,o=mt({totalMiB:0,mainMiB:0,subPackageMiB:0,independentMiB:0,warningPercent:85}),n=mt({text:"",timer:null});function l(z){return Number((z/1024/1024).toFixed(2))}function c(z){return Math.max(1,Math.round((Number.isFinite(z)?z:0)*1024*1024))}function m(){return ye(t.budgetConfig??le)}function p(){const z=m();o.totalMiB=l(z.totalBytes),o.mainMiB=l(z.mainBytes),o.subPackageMiB=l(z.subPackageBytes),o.independentMiB=l(z.independentBytes),o.warningPercent=Math.round(z.warningRatio*100)}const g=k(()=>ye({totalBytes:c(o.totalMiB),mainBytes:c(o.mainMiB),subPackageBytes:c(o.subPackageMiB),independentBytes:c(o.independentMiB),warningRatio:o.warningPercent/100})),i=k(()=>Cr({totalBytes:t.totalBytes,packages:t.packageInsights,config:g.value})),x=k(()=>Sr(g.value)?.id??null),v=k(()=>new Set(t.currentWarnings.map(z=>z.id))),S=k(()=>new Set(i.value.map(z=>z.id))),$=k(()=>i.value.filter(z=>!v.value.has(z.id)).length),f=k(()=>t.currentWarnings.filter(z=>!S.value.has(z.id)).length),d=k(()=>Ir(g.value)),w=k(()=>i.value.slice(0,6).map(z=>({key:z.id,warning:z,active:t.activeBudgetWarningId===z.id,title:z.label,meta:`${z.status==="critical"?"超预算":"接近预算"} · ${(z.ratio*100).toFixed(1)}%`,value:`${B(z.currentBytes)} / ${B(z.limitBytes)}`})));function T(z){n.text=z,n.timer&&clearTimeout(n.timer),n.timer=setTimeout(()=>{n.text="",n.timer=null},1800)}function Q(z){const I=Ye.find(K=>K.id===z);if(!I)return;const A=ye(I.config);o.totalMiB=l(A.totalBytes),o.mainMiB=l(A.mainBytes),o.subPackageMiB=l(A.subPackageBytes),o.independentMiB=l(A.independentBytes),o.warningPercent=Math.round(A.warningRatio*100),T(`已应用 ${I.label}`)}async function Z(){try{await G(d.value),T("已复制")}catch{T("复制失败")}}return ne(()=>t.budgetConfig,p,{immediate:!0}),fe(()=>{n.timer&&clearTimeout(n.timer)}),(z,I)=>(b(),y("section",Mr,[s("div",Tr,[s("div",null,[I[5]||(I[5]=s("h3",{class:"text-sm font-semibold text-(--dashboard-text)"}," 预算沙盘 ",-1)),s("p",Fr," 预测 "+h(i.value.length)+" 个告警 · 新增 "+h($.value)+" · 解除 "+h(f.value),1)]),n.text?(b(),y("span",Lr,h(n.text),1)):_("",!0)]),s("div",_r,[s("div",zr,[(b(!0),y(F,null,L(u(Ye),A=>(b(),y("button",{key:A.id,class:M(["rounded-md border px-2 py-2 text-left transition",x.value===A.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:K=>Q(A.id)},[s("span",Pr,h(A.label),1),s("span",Wr,h(A.detail),1)],10,Ar))),128))]),s("div",Rr,[s("label",Dr,[I[6]||(I[6]=O(" 总包 MB ",-1)),E(s("input",{"onUpdate:modelValue":I[0]||(I[0]=A=>o.totalMiB=A),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),[[se,o.totalMiB,void 0,{number:!0}]])]),s("label",Nr,[I[7]||(I[7]=O(" 主包 MB ",-1)),E(s("input",{"onUpdate:modelValue":I[1]||(I[1]=A=>o.mainMiB=A),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),[[se,o.mainMiB,void 0,{number:!0}]])]),s("label",jr,[I[8]||(I[8]=O(" 分包 MB ",-1)),E(s("input",{"onUpdate:modelValue":I[2]||(I[2]=A=>o.subPackageMiB=A),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),[[se,o.subPackageMiB,void 0,{number:!0}]])]),s("label",Qr,[I[9]||(I[9]=O(" 独立分包 MB ",-1)),E(s("input",{"onUpdate:modelValue":I[3]||(I[3]=A=>o.independentMiB=A),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),[[se,o.independentMiB,void 0,{number:!0}]])])]),s("div",Or,[s("label",Er,[O(" 预警线 "+h(o.warningPercent)+"% ",1),E(s("input",{"onUpdate:modelValue":I[4]||(I[4]=A=>o.warningPercent=A),class:"accent-(--dashboard-accent)",max:"99",min:"1",step:"1",type:"range"},null,512),[[se,o.warningPercent,void 0,{number:!0}]])]),s("div",{class:"grid grid-cols-2 gap-2"},[s("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:p}," 重置 "),s("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:Z}," 复制配置 ")])]),s("div",Ur,[w.value.length===0?(b(),W(X,{key:0,compact:""},{default:P(()=>[...I[10]||(I[10]=[O(" 当前沙盘预算下没有预计告警。 ",-1)])]),_:1})):(b(),y("ul",Kr,[(b(!0),y(F,null,L(w.value,A=>(b(),W($e,{key:A.key,active:A.active,clickable:"",meta:A.meta,title:A.title,value:A.value,onSelect:K=>r("selectBudgetWarning",A.warning)},null,8,["active","meta","title","value","onSelect"]))),128))]))])])]))}}),Vr=N({__name:"AnalyzeDetailsPanel",props:{largestFiles:{},selectedFileModules:{},budgetWarnings:{},budgetConfig:{},packageInsights:{},totalBytes:{},activeBudgetWarningId:{},activeLargestFileKey:{},selectedTreemapMeta:{}},emits:["selectFile","selectBudgetWarning"],setup(e,{emit:a}){const t=a,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(o,n)=>(b(),W(me,{"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":P(()=>[C(ir,{"largest-files":e.largestFiles,"active-largest-file-key":e.activeLargestFileKey,"selected-treemap-meta":e.selectedTreemapMeta,onSelectFile:n[0]||(n[0]=l=>t("selectFile",l))},null,8,["largest-files","active-largest-file-key","selected-treemap-meta"])]),"file-modules":P(()=>[C(kr,{"selected-file-modules":e.selectedFileModules},null,8,["selected-file-modules"])]),budget:P(()=>[C(qr,{"active-budget-warning-id":e.activeBudgetWarningId,"budget-config":e.budgetConfig,"current-warnings":e.budgetWarnings,"package-insights":e.packageInsights,"total-bytes":e.totalBytes,onSelectBudgetWarning:n[1]||(n[1]=l=>t("selectBudgetWarning",l))},null,8,["active-budget-warning-id","budget-config","current-warnings","package-insights","total-bytes"])]),_:1}))}}),xe={critical:4,warning:3,info:2,success:1};function qe(e){return e==="budget"?"预算":e==="increment"?"增量":e==="duplicate"?"重复":"文件"}function jt(e){return e==="critical"?ce({tone:"error"}):e==="warning"?ce({tone:"warning"}):e==="success"?ce({tone:"success"}):ce({tone:"info"})}function Qt(e){return e==="critical"?"必须处理":e==="warning"?"建议处理":e==="success"?"可查看":"定位"}function Jr(e,a){return[...e].sort((t,r)=>a==="severity"?xe[r.tone]-xe[t.tone]||r.priority-t.priority||t.title.localeCompare(r.title):a==="title"?t.title.localeCompare(r.title):a==="value"?r.priority-t.priority||String(t.value??"").localeCompare(String(r.value??""))||t.title.localeCompare(r.title):r.priority-t.priority||xe[r.tone]-xe[t.tone]||t.title.localeCompare(r.title))}function Hr(e){const a=D(""),t=D("all"),r=D("all"),o=D("priority"),n=k(()=>{const p=new Set;for(const g of e.actions)p.add(g.tone);return[...p].sort((g,i)=>xe[i]-xe[g])}),l=k(()=>{const p=new Set;for(const g of e.actions)p.add(g.kind);return[...p].sort((g,i)=>qe(g).localeCompare(qe(i)))}),c=k(()=>{const p=a.value.trim().toLowerCase(),g=e.actions.filter(i=>t.value!=="all"&&i.tone!==t.value||r.value!=="all"&&i.kind!==r.value?!1:p?[i.key,i.kind,i.tone,i.title,i.meta,i.value,i.tab].some(x=>String(x??"").toLowerCase().includes(p)):!0);return Jr(g,o.value)});function m(p){return e.queuedActionKeys.includes(p.key)}return{actionKindFilter:r,actionQuery:a,actionSortMode:o,actionToneFilter:t,filteredActions:c,getKindLabel:qe,getToneClassName:jt,getToneLabel:Qt,isQueued:m,kindOptions:l,toneOptions:n}}const Gr={class:"flex items-center justify-between gap-3"},Yr={class:"flex items-center gap-2"},Xr={class:"h-5 w-5"},Zr={class:"text-lg font-semibold text-(--dashboard-text)"},es={key:0,class:"text-xs text-(--dashboard-text-soft) md:text-sm"},H=N({__name:"AppPanelHeader",props:{iconName:{},title:{},description:{}},setup(e){const a=Pt();return(t,r)=>(b(),y("div",Gr,[s("div",Yr,[s("span",{class:M(u(a))},[s("span",Xr,[C(ae,{name:e.iconName},null,8,["name"])])],2),s("div",null,[s("h2",Zr,h(e.title),1),e.description?(b(),y("p",es,h(e.description),1)):_("",!0)])]),rt(t.$slots,"meta")]))}}),ts={class:"h-3.5 w-3.5"},as={class:"mt-3 grid gap-2"},os={class:"flex flex-wrap items-center justify-between gap-2"},rs={class:"text-xs text-(--dashboard-text-soft)"},ss={class:"grid grid-cols-3 gap-2"},ns=["value"],ls=["value"],ds={class:"mt-3 min-h-0 overflow-hidden"},is={key:1,class:"grid h-full min-h-0 content-start gap-2 overflow-y-auto pr-1"},us={class:"flex items-start justify-between gap-3"},cs=["onClick"],ms={class:"flex min-w-0 items-center gap-2"},ps={class:"rounded-full bg-(--dashboard-accent-soft) px-2 py-0.5 text-[11px] text-(--dashboard-text-muted)"},bs={class:"truncate text-sm font-medium text-(--dashboard-text)"},gs={class:"mt-1 truncate text-xs text-(--dashboard-text-soft)"},fs={key:0,class:"whitespace-nowrap text-sm font-medium text-(--dashboard-accent)"},ys={class:"mt-2 flex items-center justify-end border-t border-(--dashboard-border) pt-2"},hs=["disabled","onClick"],vs=N({__name:"ActionCenterPanel",props:{actions:{},activeKey:{},queuedActionKeys:{}},emits:["addToQueue","copyReport","select"],setup(e,{emit:a}){const t=e,r=a,{actionKindFilter:o,actionQuery:n,actionSortMode:l,actionToneFilter:c,filteredActions:m,getKindLabel:p,getToneClassName:g,getToneLabel:i,isQueued:x,kindOptions:v,toneOptions:S}=Hr(t);return($,f)=>(b(),y("section",{class:M([u(te)({padding:"md"}),"grid h-full min-h-0 grid-rows-[auto_auto_minmax(0,1fr)] overflow-hidden"])},[C(H,{"icon-name":"metric-health",title:"问题中心"},{meta:P(()=>[s("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:f[0]||(f[0]=d=>r("copyReport"))},[s("span",ts,[C(ae,{name:"metric-copy"})]),f[5]||(f[5]=O(" 复制 PR ",-1))])]),_:1}),s("div",as,[s("div",os,[s("p",rs," 匹配 "+h(u(m).length)+" / "+h(e.actions.length)+" 个处理项 ",1),E(s("input",{"onUpdate:modelValue":f[1]||(f[1]=d=>U(n)?n.value=d: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),[[se,u(n)]])]),s("div",ss,[E(s("select",{"onUpdate:modelValue":f[2]||(f[2]=d=>U(c)?c.value=d: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)"},[f[6]||(f[6]=s("option",{value:"all"}," 全部严重度 ",-1)),(b(!0),y(F,null,L(u(S),d=>(b(),y("option",{key:d,value:d},h(u(i)(d)),9,ns))),128))],512),[[J,u(c)]]),E(s("select",{"onUpdate:modelValue":f[3]||(f[3]=d=>U(o)?o.value=d: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)"},[f[7]||(f[7]=s("option",{value:"all"}," 全部类型 ",-1)),(b(!0),y(F,null,L(u(v),d=>(b(),y("option",{key:d,value:d},h(u(p)(d)),9,ls))),128))],512),[[J,u(o)]]),E(s("select",{"onUpdate:modelValue":f[4]||(f[4]=d=>U(l)?l.value=d: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)"},[...f[8]||(f[8]=[s("option",{value:"priority"}," 按优先级 ",-1),s("option",{value:"severity"}," 按严重度 ",-1),s("option",{value:"title"}," 按标题 ",-1),s("option",{value:"value"}," 按数值 ",-1)])],512),[[J,u(l)]])])]),s("div",ds,[u(m).length===0?(b(),W(X,{key:0,compact:""},{default:P(()=>[...f[9]||(f[9]=[O(" 暂无匹配当前筛选条件的事项。 ",-1)])]),_:1})):(b(),y("ol",is,[(b(!0),y(F,null,L(u(m),d=>(b(),y("li",{key:d.key,class:"list-none"},[s("article",{class:M(["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===d.key?"border-(--dashboard-accent) bg-(--dashboard-accent-soft)":void 0])},[s("div",us,[s("button",{type:"button",class:"min-w-0 text-left",onClick:w=>r("select",d)},[s("div",ms,[s("span",{class:M(u(g)(d.tone))},h(u(i)(d.tone)),3),s("span",ps,h(u(p)(d.kind)),1),s("p",bs,h(d.title),1)]),s("p",gs,h(d.meta),1)],8,cs),d.value?(b(),y("span",fs,h(d.value),1)):_("",!0)]),s("div",ys,[s("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:u(x)(d),onClick:w=>r("addToQueue",d)},h(u(x)(d)?"已在清单":"加入清单"),9,hs)])],2)]))),128))]))])],2))}}),xs=["disabled"],ks={class:"h-3.5 w-3.5"},$s={class:"mt-3 grid gap-2"},ws={class:"grid grid-cols-3 gap-2 text-center"},Bs={class:"mt-3 min-h-0 overflow-hidden"},Ss={key:1,class:"grid h-full min-h-0 content-start gap-2 overflow-y-auto pr-1"},Cs={class:"flex items-start justify-between gap-2"},Is=["onClick"],Ms={class:"mt-2 truncate text-sm font-medium text-(--dashboard-text)"},Ts={class:"mt-1 line-clamp-2 text-xs leading-5 text-(--dashboard-text-soft)"},Fs={key:0,class:"shrink-0 text-xs font-medium text-(--dashboard-accent)"},Ls={class:"flex items-center justify-between gap-2 border-t border-(--dashboard-border) pt-2"},_s=["onClick"],zs=["onClick"],As=N({__name:"AnalyzeWorkQueuePanel",props:{items:{},activeId:{}},emits:["clearCompleted","copy","remove","select","toggle"],setup(e,{emit:a}){const t=e,r=a,o=D("open"),n=k(()=>t.items.filter(p=>!p.completedAt).length),l=k(()=>t.items.length-n.value),c=k(()=>t.items.filter(p=>o.value==="open"?!p.completedAt:o.value==="done"?!!p.completedAt:!0));function m(p){return p==="critical"?ce({tone:"error"}):p==="warning"?ce({tone:"warning"}):p==="success"?ce({tone:"success"}):ce({tone:"info"})}return(p,g)=>(b(),y("section",{class:M([u(te)({padding:"md"}),"grid h-full min-h-0 grid-rows-[auto_auto_minmax(0,1fr)] overflow-hidden"])},[C(H,{"icon-name":"metric-bookmark",title:"处理清单"},{meta:P(()=>[s("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:g[0]||(g[0]=i=>r("copy"))},[s("span",ks,[C(ae,{name:"metric-copy"})]),g[5]||(g[5]=O(" 复制 ",-1))],8,xs)]),_:1}),s("div",$s,[s("div",ws,[s("button",{type:"button",class:M(["rounded-md border px-2 py-2 text-xs transition",o.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:g[1]||(g[1]=i=>o.value="open")}," 待处理 "+h(n.value),3),s("button",{type:"button",class:M(["rounded-md border px-2 py-2 text-xs transition",o.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:g[2]||(g[2]=i=>o.value="done")}," 已完成 "+h(l.value),3),s("button",{type:"button",class:M(["rounded-md border px-2 py-2 text-xs transition",o.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:g[3]||(g[3]=i=>o.value="all")}," 全部 "+h(e.items.length),3)]),l.value>0?(b(),y("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:g[4]||(g[4]=i=>r("clearCompleted"))}," 清空已完成 ")):_("",!0)]),s("div",Bs,[c.value.length===0?(b(),W(X,{key:0,compact:""},{default:P(()=>[...g[6]||(g[6]=[O(" 当前没有处理事项。 ",-1)])]),_:1})):(b(),y("ol",Ss,[(b(!0),y(F,null,L(c.value,i=>(b(),y("li",{key:i.id,class:M(["grid gap-2 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-2.5 transition",e.activeId===i.id?"border-(--dashboard-accent) bg-(--dashboard-accent-soft)":void 0])},[s("div",Cs,[s("button",{type:"button",class:"min-w-0 text-left",onClick:x=>r("select",i)},[s("span",{class:M(m(i.tone))},h(i.completedAt?"完成":"待处理"),3),s("p",Ms,h(i.title),1),s("p",Ts,h(i.meta),1)],8,Is),i.value?(b(),y("span",Fs,h(i.value),1)):_("",!0)]),s("div",Ls,[s("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:x=>r("toggle",i.id)},h(i.completedAt?"重新打开":"标记完成"),9,_s),s("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:x=>r("remove",i.id)}," 移除 ",8,zs)])],2))),128))]))])],2))}});function ft(e){return e===0?"0 B":`${e>0?"+":"-"}${B(Math.abs(e))}`}function Ps(e,a){return e===0&&a===0?"stable":a>0?"growing":a<0?"shrinking":"stable"}function yt(e){return e==="growing"?"增长":e==="shrinking"?"下降":e==="stable"?"稳定":"样本不足"}function ht(e){return e==="growing"?"历史快照显示体积正在上升":e==="shrinking"?"历史快照显示体积正在下降":e==="stable"?"历史快照整体保持稳定":"需要更多历史快照判断趋势"}function Ws(e){const a=[...e].sort((p,g)=>Date.parse(p.capturedAt)-Date.parse(g.capturedAt)),t=a[0],r=a[a.length-1];if(!t||!r||a.length<2)return{status:"insufficient",label:yt("insufficient"),headline:ht("insufficient"),description:`${a.length} 个历史样本`,totalDeltaBytes:0,averageDeltaBytes:0,metrics:[{label:"样本数",value:a.length},{label:"累计变化",value:"—"},{label:"平均变化",value:"—"},{label:"预测下次",value:"—"}]};const o=a.slice(1).map((p,g)=>p.totalBytes-a[g].totalBytes),n=r.totalBytes-t.totalBytes,l=Math.round(o.reduce((p,g)=>p+g,0)/o.length),c=Math.max(0,r.totalBytes+l),m=Ps(n,l);return{status:m,label:yt(m),headline:ht(m),description:`${a.length} 个历史样本 · ${t.label} 至 ${r.label}`,totalDeltaBytes:n,averageDeltaBytes:l,projectedNextBytes:c,metrics:[{label:"样本数",value:a.length},{label:"累计变化",value:ft(n)},{label:"平均变化",value:ft(l)},{label:"预测下次",value:B(c)}]}}function ze(e=1800){const a=D("");let t=null;function r(o){a.value=o,t&&clearTimeout(t),t=setTimeout(()=>{a.value="",t=null},e)}return fe(()=>{t&&clearTimeout(t)}),{actionStatus:a,setActionStatus:r}}function vt(e){return e===0?"无变化":`${e>0?"+":"-"}${B(Math.abs(e))}`}function Se(e){return new Date(e.capturedAt).toLocaleString("zh-CN",{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",hour12:!1})}function Rs(e){return[e.id,e.label,e.capturedAt,e.packageCount,e.moduleCount,e.duplicateCount,e.totalBytes,e.compressedBytes].join(" ").toLowerCase()}function Ds(e,a){return[...e].sort((t,r)=>a==="total"?r.totalBytes-t.totalBytes||Date.parse(r.capturedAt)-Date.parse(t.capturedAt):a==="compressed"?r.compressedBytes-t.compressedBytes||Date.parse(r.capturedAt)-Date.parse(t.capturedAt):a==="modules"?r.moduleCount-t.moduleCount||Date.parse(r.capturedAt)-Date.parse(t.capturedAt):a==="duplicates"&&r.duplicateCount-t.duplicateCount||Date.parse(r.capturedAt)-Date.parse(t.capturedAt))}function Ns(e){const a=D(""),t=D("capturedAt"),{actionStatus:r,setActionStatus:o}=ze(),n=k(()=>e.snapshots.find(d=>d.id===e.baselineSnapshotId)??null),l=k(()=>e.snapshots[0]??null),c=k(()=>e.snapshots[1]??null),m=k(()=>Ws(e.snapshots)),p=k(()=>!l.value||!n.value?"":vt(l.value.totalBytes-n.value.totalBytes)),g=k(()=>!l.value||!c.value?"":vt(l.value.totalBytes-c.value.totalBytes)),i=k(()=>e.comparisonMode==="baseline"?p.value||"未设置":g.value||"上次快照"),x=k(()=>{const d=n.value;return d?[{label:"基线体积",value:B(d.totalBytes)},{label:"压缩后",value:B(d.compressedBytes)},{label:"模块数",value:String(d.moduleCount)},{label:"复用模块",value:String(d.duplicateCount)}]:[]}),v=k(()=>{const d=a.value.trim().toLowerCase(),w=e.snapshots.filter(T=>!d||Rs(T).includes(d));return Ds(w,t.value)}),S=k(()=>{const d=l.value,w=n.value,T=c.value;return["# dashboard 历史基线","",d?`当前快照:${Se(d)} · ${B(d.totalBytes)} · 压缩后 ${B(d.compressedBytes)}`:"当前快照:暂无",w?`基线快照:${Se(w)} · ${B(w.totalBytes)} · 压缩后 ${B(w.compressedBytes)}`:"基线快照:未设置",T?`上次快照:${Se(T)} · ${B(T.totalBytes)} · 压缩后 ${B(T.compressedBytes)}`:"上次快照:暂无",`当前对比:${i.value}`,"","| 时间 | 总体积 | 压缩后 | 包 | 模块 | 复用模块 |","| --- | ---: | ---: | ---: | ---: | ---: |",...v.value.map(Q=>`| ${Se(Q)} | ${B(Q.totalBytes)} | ${B(Q.compressedBytes)} | ${Q.packageCount} | ${Q.moduleCount} | ${Q.duplicateCount} |`),""].join(`
|
|
10
|
-
`)})
|
|
11
|
-
`],{type:"application/json"}),w=URL.createObjectURL(d),T=document.createElement("a");T.href=w,T.download="weapp-vite-dashboard-history.json",T.click(),URL.revokeObjectURL(w),o("已导出")}return{actionStatus:r,activeComparisonLabel:i,baselineSnapshot:n,baselineSummaryItems:x,copyBaselineReport:$,exportFilteredSnapshots:f,filteredSnapshots:v,formatSnapshotDate:Se,historyTrend:m,snapshotQuery:a,snapshotSortMode:t}}const js={class:"flex flex-wrap items-center justify-between gap-2"},Qs={class:"text-xs text-(--dashboard-text-soft)"},Os={class:"flex flex-wrap items-center gap-2"},Es={key:0,class:"text-xs font-medium text-(--dashboard-accent)"},Us=["disabled"],Ks=["disabled"],qs=N({__name:"HistoryBaselineToolbar",props:ke({filteredCount:{},totalCount:{},actionStatus:{},disabled:{type:Boolean}},{modelValue:{required:!0},modelModifiers:{}}),emits:ke(["copy","exportJson"],["update:modelValue"]),setup(e,{emit:a}){const t=a,r=pe(e,"modelValue");return(o,n)=>(b(),y("div",js,[s("p",Qs," 匹配 "+h(e.filteredCount)+" / "+h(e.totalCount)+" 个快照 ",1),s("div",Os,[e.actionStatus?(b(),y("span",Es,h(e.actionStatus),1)):_("",!0),s("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:n[0]||(n[0]=l=>t("copy"))}," 复制基线 ",8,Us),s("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:n[1]||(n[1]=l=>t("exportJson"))}," 导出 JSON ",8,Ks),E(s("select",{"onUpdate:modelValue":n[2]||(n[2]=l=>r.value=l),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)"},[...n[3]||(n[3]=[st('<option value="capturedAt"> 按时间 </option><option value="total"> 按体积 </option><option value="compressed"> 按压缩后 </option><option value="modules"> 按模块数 </option><option value="duplicates"> 按复用模块 </option>',5)])],512),[[J,r.value]])])]))}}),Vs={class:"rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-3"},Js={class:"flex items-start justify-between gap-3"},Hs={class:"min-w-0"},Gs={class:"mt-2 text-sm font-semibold text-(--dashboard-text)"},Ys={class:"mt-1 text-xs leading-5 text-(--dashboard-text-soft)"},Xs={class:"mt-3 grid grid-cols-2 gap-2"},Zs=N({__name:"HistoryTrendPanel",props:{trend:{}},setup(e){function a(t){return t==="growing"?"border-amber-200 bg-amber-50 text-amber-700 dark:border-amber-500/25 dark:bg-amber-500/10 dark:text-amber-300":t==="shrinking"?"border-emerald-200 bg-emerald-50 text-emerald-700 dark:border-emerald-500/25 dark:bg-emerald-500/10 dark:text-emerald-300":t==="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(t,r)=>(b(),y("section",Vs,[s("div",Js,[s("div",Hs,[s("span",{class:M(["inline-flex rounded-full border px-2 py-0.5 text-[11px] font-medium",a(e.trend.status)])},h(e.trend.label),3),s("p",Gs,h(e.trend.headline),1),s("p",Ys,h(e.trend.description),1)])]),s("div",Xs,[(b(!0),y(F,null,L(e.trend.metrics,o=>(b(),W(de,he({key:o.label},{ref_for:!0},o),null,16))),128))])]))}}),en={class:"flex gap-1.5"},tn=["disabled"],an={class:"mt-3 grid min-h-0 grid-rows-[auto_auto_auto_minmax(0,1fr)] gap-2 overflow-hidden"},on={class:"rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 py-2"},rn={class:"flex items-center justify-between gap-3"},sn={class:"text-sm font-medium text-(--dashboard-accent)"},nn={key:0,class:"mt-3 grid grid-cols-2 gap-2"},ln={class:"text-[11px] text-(--dashboard-text-soft)"},dn={class:"mt-1 text-sm font-semibold text-(--dashboard-text)"},un={class:"grid gap-2"},cn={key:1,class:"grid min-h-0 gap-1.5 overflow-y-auto pr-1"},mn=["onClick"],pn={class:"flex items-start justify-between gap-3"},bn={class:"min-w-0"},gn={class:"truncate text-sm font-medium text-(--dashboard-text)"},fn={class:"mt-0.5 truncate text-xs text-(--dashboard-text-soft)"},yn={class:"text-right"},hn={class:"whitespace-nowrap text-sm font-medium text-(--dashboard-accent)"},vn={class:"mt-0.5 whitespace-nowrap text-xs text-(--dashboard-text-soft)"},xn=N({__name:"HistoryBaselinePanel",props:{snapshots:{},baselineSnapshotId:{},comparisonMode:{}},emits:["setBaseline","setComparisonMode"],setup(e,{emit:a}){const t=e,r=a,{actionStatus:o,activeComparisonLabel:n,baselineSummaryItems:l,copyBaselineReport:c,exportFilteredSnapshots:m,filteredSnapshots:p,formatSnapshotDate:g,historyTrend:i,snapshotQuery:x,snapshotSortMode:v}=Ns(t);return(S,$)=>(b(),y("section",{class:M([u(te)({padding:"md"}),"grid h-full min-h-0 grid-rows-[auto_minmax(0,1fr)] overflow-hidden"])},[C(H,{"icon-name":"metric-history",title:"历史基线"},{meta:P(()=>[s("div",en,[s("button",{type:"button",class:M(u(be)({kind:"badge",active:e.comparisonMode==="previous"})),onClick:$[0]||($[0]=f=>r("setComparisonMode","previous"))}," 上次 ",2),s("button",{type:"button",class:M(u(be)({kind:"badge",active:e.comparisonMode==="baseline"})),disabled:!e.baselineSnapshotId,onClick:$[1]||($[1]=f=>r("setComparisonMode","baseline"))}," Baseline ",10,tn)])]),_:1}),s("div",an,[s("div",on,[s("div",rn,[$[4]||($[4]=s("p",{class:"text-xs text-(--dashboard-text-soft)"}," 当前对比 ",-1)),s("p",sn,h(u(n)),1)]),u(l).length?(b(),y("div",nn,[(b(!0),y(F,null,L(u(l),f=>(b(),y("div",{key:f.label,class:"rounded-md border border-(--dashboard-border) bg-(--dashboard-panel) px-2.5 py-2"},[s("p",ln,h(f.label),1),s("p",dn,h(f.value),1)]))),128))])):_("",!0)]),C(Zs,{trend:u(i)},null,8,["trend"]),s("div",un,[C(qs,{modelValue:u(v),"onUpdate:modelValue":$[2]||($[2]=f=>U(v)?v.value=f:null),"action-status":u(o),disabled:u(p).length===0,"filtered-count":u(p).length,"total-count":e.snapshots.length,onCopy:u(c),onExportJson:u(m)},null,8,["modelValue","action-status","disabled","filtered-count","total-count","onCopy","onExportJson"]),E(s("input",{"onUpdate:modelValue":$[3]||($[3]=f=>U(x)?x.value=f: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),[[se,u(x)]])]),u(p).length===0?(b(),W(X,{key:0,compact:""},{default:P(()=>[...$[5]||($[5]=[O(" 暂无历史快照。 ",-1)])]),_:1})):(b(),y("ol",cn,[(b(!0),y(F,null,L(u(p),f=>(b(),y("li",{key:f.id,class:"list-none"},[s("button",{type:"button",class:M(["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)",f.id===e.baselineSnapshotId?"border-(--dashboard-accent) bg-(--dashboard-accent-soft)":void 0]),onClick:d=>r("setBaseline",f.id)},[s("div",pn,[s("div",bn,[s("p",gn,h(u(g)(f)),1),s("p",fn,h(f.packageCount)+" 包 · "+h(f.moduleCount)+" 模块 · 复用 "+h(f.duplicateCount),1)]),s("div",yn,[s("p",hn,h(u(B)(f.totalBytes)),1),s("p",vn,h(f.id===e.baselineSnapshotId?"baseline":u(B)(f.compressedBytes)),1)])])],10,mn)]))),128))]))])],2))}}),kn=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:a}){const t=a;return(r,o)=>(b(),W(me,{"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:P(()=>[C(vs,{actions:e.actionItems,"active-key":e.selectedActionKey,"queued-action-keys":e.queuedActionKeys,onAddToQueue:o[0]||(o[0]=n=>t("addActionToQueue",n)),onCopyReport:o[1]||(o[1]=n=>t("copyPr")),onSelect:o[2]||(o[2]=n=>t("selectAction",n))},null,8,["actions","active-key","queued-action-keys"])]),"work-queue":P(()=>[C(As,{items:e.workQueueItems,"active-id":e.activeWorkQueueItemId,onClearCompleted:o[3]||(o[3]=n=>t("clearCompletedWorkQueue")),onCopy:o[4]||(o[4]=n=>t("copyWorkQueue")),onRemove:o[5]||(o[5]=n=>t("removeWorkQueueItem",n)),onSelect:o[6]||(o[6]=n=>t("selectWorkQueueItem",n)),onToggle:o[7]||(o[7]=n=>t("toggleWorkQueueItem",n))},null,8,["items","active-id"])]),history:P(()=>[C(xn,{snapshots:e.historySnapshots,"baseline-snapshot-id":e.baselineSnapshotId,"comparison-mode":e.comparisonMode,onSetBaseline:o[8]||(o[8]=n=>t("setBaseline",n)),onSetComparisonMode:o[9]||(o[9]=n=>t("setComparisonMode",n))},null,8,["snapshots","baseline-snapshot-id","comparison-mode"])]),_:1},8,["items"]))}});function $n(e){return Math.max(0,Math.min(100,Math.round(e)))}function wn(e){return e==="blocked"?"Blocked":e==="review"?"Review":"Ready"}function Bn(e){return e==="blocked"?"发布前需要先处理阻断项":e==="review"?"建议评审后再发布":"当前分析未发现阻断项"}function Sn(e){const a=[];for(const t of[...e.criticalActions,...e.warningActions].slice(0,3))a.push(`${t.title}:${t.meta}`);return a.length===0&&e.largestPackage&&a.push(`持续关注最大包 ${e.largestPackage.label},当前 ${B(e.largestPackage.totalBytes)}。`),a.length===0&&e.largestFile&&a.push(`持续关注最大文件 ${e.largestFile.file},当前 ${B(e.largestFile.size)}。`),a}function Cn(e){return["# dashboard 发布门禁","",`状态:${e.label}`,`风险分:${e.score}`,e.headline,"","## 指标","",...e.metrics.map(a=>`- ${a.label}:${a.value}`),"","## 建议","",...e.recommendations.length>0?e.recommendations.map(a=>`- ${a}`):["- 当前没有需要立即处理的事项。"],""].join(`
|
|
12
|
-
`)}function In(e){const a=e.actionItems.filter(p=>p.tone==="critical"),t=e.actionItems.filter(p=>p.tone==="warning"),r=e.largestFiles[0],o=e.packageInsights[0],n=a.length>0?"blocked":t.length>0?"review":"ready",l=$n(100-a.length*28-t.length*12),c=[{label:"阻断项",value:a.length},{label:"建议项",value:t.length},{label:"最大包",value:o?B(o.totalBytes):"—"},{label:"最大文件",value:r?B(r.size):"—"}],m={status:n,label:wn(n),score:l,headline:Bn(n),description:`${e.actionItems.length} 个候选事项 · ${e.packageInsights.length} 个包 · ${e.largestFiles.length} 个文件样本`,metrics:c,recommendations:Sn({criticalActions:a,warningActions:t,largestFile:r,largestPackage:o})};return{...m,report:Cn(m)}}function Mn(e){const a=k(()=>e.actionItems.slice(0,4)),t=k(()=>e.largestFiles.slice(0,5)),r=k(()=>e.packageInsights.reduce((p,g)=>p+g.totalBytes,0)),o=k(()=>In({actionItems:e.actionItems,largestFiles:e.largestFiles,packageInsights:e.packageInsights})),{actionStatus:n,setActionStatus:l}=ze(),c=k(()=>e.packageInsights.slice(0,5).map(p=>{const g=r.value>0?p.totalBytes/r.value*100:0;return{...p,typeLabel:ie(p.type),sizeLabel:B(p.totalBytes),compressedLabel:`${p.compressedSizeSource==="real"?"Brotli":"估算"} ${B(p.compressedBytes)}`,sharePercent:g,shareStyle:{width:`${Math.max(g,2).toFixed(1)}%`}}}));async function m(){try{await G(o.value.report),l("已复制")}catch{l("复制失败")}}return{copyReleaseGateReport:m,gateCopyStatus:n,getToneClassName:jt,getToneLabel:Qt,packageOverviewItems:c,releaseGate:o,visibleActions:a,visibleLargestFiles:t}}const Tn={class:"min-w-0"},Fn={key:0,class:"mt-1 text-xs font-medium text-(--dashboard-accent)"},Ln={key:0,class:"mt-3 flex flex-wrap gap-1.5"},_n=N({__name:"DashboardMetricGrid",props:{cards:{},packageTypeSummary:{},compact:{type:Boolean}},setup(e){const a=e;function t(o){return[te({padding:a.compact?"sm":"md"}),"min-w-0",o.wide?"xl:col-span-2":"xl:col-span-1"]}const r=k(()=>a.cards.map(o=>({...o,packageTypeTags:o.label==="总产物体积"?a.packageTypeSummary.map(n=>({label:ie(n.label),value:String(n.value)})):[]})));return(o,n)=>(b(),y("section",{class:M(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")},[(b(!0),y(F,null,L(r.value,l=>(b(),y("article",{key:l.label,class:M(t(l))},[s("div",{class:M(e.compact?"relative h-full min-w-0 pr-8":"flex h-full min-w-0 items-start justify-between gap-2")},[s("div",Tn,[s("p",{class:M(e.compact?"whitespace-nowrap text-[11px] leading-4 text-(--dashboard-text-soft)":"text-[11px] uppercase tracking-[0.22em] text-(--dashboard-text-soft)")},h(l.label),3),s("p",{class:M(e.compact?"mt-1 text-xl font-semibold leading-6":"mt-2 text-2xl font-semibold md:text-[1.65rem]")},h(l.value),3),l.detail?(b(),y("p",Fn,h(l.detail),1)):_("",!0)]),s("span",{class:M([u(Pt)({size:e.compact?"sm":"lg"}),e.compact?"absolute right-0 top-0":void 0])},[s("span",{class:M(e.compact?"h-4.5 w-4.5":"h-5 w-5")},[C(ae,{name:l.iconName},null,8,["name"])],2)],2)],2),l.packageTypeTags.length>0&&!e.compact?(b(),y("div",Ln,[(b(!0),y(F,null,L(l.packageTypeTags,c=>(b(),y("span",{key:c.label,class:"rounded-full border border-(--dashboard-border-strong) bg-(--dashboard-accent-soft) px-3 py-1 text-xs text-(--dashboard-text)"},h(c.label)+" "+h(c.value),1))),128))])):_("",!0)],2))),128))],2))}}),zn={class:"rounded-lg border border-(--dashboard-border) bg-(--dashboard-panel) p-4 shadow-(--dashboard-shadow)"},An={class:"flex items-center gap-2"},Pn={key:0,class:"text-xs font-medium text-(--dashboard-accent)"},Wn={class:"h-3.5 w-3.5"},Rn={class:"mt-3 grid gap-3 xl:grid-cols-[minmax(0,0.7fr)_minmax(0,1fr)]"},Dn={class:"rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-3"},Nn={class:"flex items-start justify-between gap-3"},jn={class:"mt-3 text-lg font-semibold text-(--dashboard-text)"},Qn={class:"mt-1 text-xs leading-5 text-(--dashboard-text-soft)"},On={class:"shrink-0 text-right"},En={class:"mt-1 text-3xl font-semibold text-(--dashboard-accent)"},Un={class:"grid gap-3 md:grid-cols-[minmax(0,0.9fr)_minmax(0,1fr)]"},Kn={class:"grid grid-cols-2 gap-2"},qn={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)"},Vn={key:0},Jn=N({__name:"ReleaseGatePanel",props:{gate:{},copyStatus:{}},emits:["copy"],setup(e,{emit:a}){const t=a;function r(o){return o==="blocked"?"border-rose-200 bg-rose-100 text-rose-700 dark:border-rose-500/30 dark:bg-rose-500/12 dark:text-rose-300":o==="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(o,n)=>(b(),y("section",zn,[C(H,{"icon-name":"metric-quality",title:"发布门禁"},{meta:P(()=>[s("div",An,[e.copyStatus?(b(),y("span",Pn,h(e.copyStatus),1)):_("",!0),s("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]||(n[0]=l=>t("copy"))},[s("span",Wn,[C(ae,{name:"metric-copy"})]),n[1]||(n[1]=O(" 复制门禁 ",-1))])])]),_:1}),s("div",Rn,[s("div",Dn,[s("div",Nn,[s("div",null,[s("span",{class:M(["inline-flex rounded-full border px-2.5 py-1 text-[11px] font-medium uppercase tracking-[0.16em]",r(e.gate.status)])},h(e.gate.label),3),s("p",jn,h(e.gate.headline),1),s("p",Qn,h(e.gate.description),1)]),s("div",On,[n[2]||(n[2]=s("p",{class:"text-[11px] uppercase tracking-[0.18em] text-(--dashboard-text-soft)"}," score ",-1)),s("p",En,h(e.gate.score),1)])])]),s("div",Un,[s("div",Kn,[(b(!0),y(F,null,L(e.gate.metrics,l=>(b(),W(de,he({key:l.label},{ref_for:!0},l),null,16))),128))]),s("ol",qn,[(b(!0),y(F,null,L(e.gate.recommendations,l=>(b(),y("li",{key:l,class:"line-clamp-2"},h(l),1))),128)),e.gate.recommendations.length===0?(b(),y("li",Vn," 当前没有需要立即处理的事项。 ")):_("",!0)])])])]))}}),Hn={class:"grid h-full min-h-0 grid-rows-[auto_auto_minmax(0,1fr)] gap-2 overflow-hidden"},Gn={class:"grid min-h-0 gap-2 overflow-hidden xl:grid-cols-[minmax(0,0.95fr)_minmax(0,0.85fr)_minmax(0,0.9fr)]"},Yn={class:"h-3.5 w-3.5"},Xn={class:"mt-3 min-h-0 flex-1 overflow-hidden"},Zn={key:1,class:"grid h-full min-h-0 gap-2 overflow-y-auto pr-1"},el=["onClick"],tl={class:"flex min-w-0 items-start justify-between gap-3"},al={class:"min-w-0"},ol={class:"flex min-w-0 items-center gap-2"},rl={class:"truncate text-sm font-medium text-(--dashboard-text)"},sl={class:"mt-1 truncate text-xs text-(--dashboard-text-soft)"},nl={key:0,class:"shrink-0 whitespace-nowrap text-sm font-semibold text-(--dashboard-accent)"},ll={class:"mt-3 grid min-h-0 gap-2 overflow-y-auto pr-1"},dl=["onClick"],il={class:"grid min-w-0 grid-cols-[minmax(0,1fr)_auto] items-start gap-3"},ul={class:"min-w-0"},cl={class:"truncate font-mono text-xs font-semibold text-(--dashboard-text)"},ml={class:"mt-1 truncate text-xs text-(--dashboard-text-soft)"},pl={class:"shrink-0 text-right"},bl={class:"text-sm font-semibold leading-5 text-(--dashboard-accent)"},gl={class:"text-[11px] leading-4 text-(--dashboard-text-soft)"},fl={class:"mt-3 grid min-h-0 gap-2 overflow-y-auto pr-1"},yl=["onClick"],hl={class:"flex items-start justify-between gap-3"},vl={class:"min-w-0"},xl={class:"truncate text-sm font-medium text-(--dashboard-text)"},kl={class:"mt-1 text-xs text-(--dashboard-text-soft)"},$l={class:"shrink-0 text-right"},wl={class:"text-sm font-semibold text-(--dashboard-text)"},Bl={class:"text-[11px] text-(--dashboard-text-soft)"},Sl={class:"mt-2 h-1.5 overflow-hidden rounded-full bg-(--dashboard-accent-soft)"},Cl=N({__name:"AnalyzeOverviewPanel",props:{actionItems:{},cards:{},largestFiles:{},packageInsights:{},packageTypeSummary:{}},emits:["copyReport","selectAction","selectFile","selectPackage"],setup(e,{emit:a}){const t=e,r=a,{copyReleaseGateReport:o,gateCopyStatus:n,getToneClassName:l,getToneLabel:c,packageOverviewItems:m,releaseGate:p,visibleActions:g,visibleLargestFiles:i}=Mn(t);return(x,v)=>(b(),y("section",Hn,[C(_n,{compact:"",cards:e.cards,"package-type-summary":e.packageTypeSummary},null,8,["cards","package-type-summary"]),C(Jn,{gate:u(p),"copy-status":u(n),onCopy:u(o)},null,8,["gate","copy-status","onCopy"]),s("div",Gn,[s("section",{class:M([u(te)({padding:"md"}),"min-h-0 overflow-hidden"])},[C(H,{"icon-name":"metric-health",title:"处理队列"},{meta:P(()=>[s("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:v[0]||(v[0]=S=>r("copyReport"))},[s("span",Yn,[C(ae,{name:"metric-copy"})]),v[1]||(v[1]=O(" 复制 PR ",-1))])]),_:1}),s("div",Xn,[u(g).length===0?(b(),W(X,{key:0,compact:""},{default:P(()=>[...v[2]||(v[2]=[O(" 当前没有需要立即处理的事项。 ",-1)])]),_:1})):(b(),y("ol",Zn,[(b(!0),y(F,null,L(u(g),S=>(b(),y("li",{key:S.key,class:"list-none"},[s("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:$=>r("selectAction",S)},[s("div",tl,[s("div",al,[s("div",ol,[s("span",{class:M(u(l)(S.tone))},h(u(c)(S.tone)),3),s("p",rl,h(S.title),1)]),s("p",sl,h(S.meta),1)]),S.value?(b(),y("span",nl,h(S.value),1)):_("",!0)])],8,el)]))),128))]))])],2),s("section",{class:M([u(te)({padding:"md"}),"min-h-0 overflow-hidden"])},[C(H,{"icon-name":"top-files",title:"Top Files"}),s("ol",ll,[(b(!0),y(F,null,L(u(i),S=>(b(),y("li",{key:`${S.packageId}:${S.file}`,class:"list-none"},[s("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:$=>r("selectFile",S)},[s("div",il,[s("div",ul,[s("p",cl,h(S.file),1),s("p",ml,h(S.packageLabel)+" · "+h(u(ie)(S.packageType))+" · "+h(S.type)+" · "+h(S.moduleCount)+" 模块 ",1)]),s("div",pl,[s("p",bl,h(u(B)(S.size)),1),s("p",gl,h(u(B)(S.compressedSize)),1)])])],8,dl)]))),128))])],2),s("section",{class:M([u(te)({padding:"md"}),"min-h-0 overflow-hidden"])},[C(H,{"icon-name":"tab-packages",title:"包体分布"}),s("ol",fl,[(b(!0),y(F,null,L(u(m),S=>(b(),y("li",{key:S.id,class:"list-none"},[s("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:$=>r("selectPackage",S)},[s("div",hl,[s("div",vl,[s("p",xl,h(S.label),1),s("p",kl,h(S.typeLabel)+" · "+h(S.fileCount)+" 产物 · "+h(S.moduleCount)+" 模块 ",1)]),s("div",$l,[s("p",wl,h(S.sizeLabel),1),s("p",Bl,h(S.compressedLabel),1)])]),s("div",Sl,[s("div",{class:"h-full rounded-full bg-(--dashboard-accent)",style:At(S.shareStyle)},null,4)])],8,yl)]))),128))])],2)])]))}});function Il(e){return e==="high"?"高":e==="medium"?"中":"低"}function Ml(e){const a=e.packages.some(r=>r.packageLabel.includes("independent")||r.packageId.includes("independent"))?"high":e.packageCount>2?"medium":"low",t=a==="high"?.72:a==="medium"?.86:1;return{id:`duplicate:${e.id}`,title:`收敛重复模块 ${e.source}`,detail:`${e.packageCount} 个包复用 · 单份 ${B(e.bytes)} · ${e.advice}`,impactBytes:e.estimatedSavingBytes,effort:a,priority:Math.round(e.estimatedSavingBytes*t+e.packageCount*128),action:a==="high"?"先确认独立分包隔离要求,再评估公共入口。":"优先抽到共享入口或调整引用边界。"}}function Tl(e){const a=e.category==="第三方依赖"?"medium":"low",t=a==="medium"?.82:.92;return{id:`increment:${e.key}`,title:`复核增长来源 ${e.label}`,detail:`${e.category} · ${e.packageLabel} · +${B(e.deltaBytes)}`,impactBytes:e.deltaBytes,effort:a,priority:Math.round(e.deltaBytes*t),action:e.advice}}function Fl(e){const a=e.moduleCount>12?"medium":"low";return{id:`file:${e.packageId}:${e.file}`,title:`检查大文件边界 ${e.file}`,detail:`${e.packageLabel} · ${B(e.size)} · ${e.moduleCount} 个模块`,impactBytes:e.size,effort:a,priority:Math.round(e.size*.42+e.moduleCount*96),action:e.isEntry?"确认入口依赖是否可懒加载或拆到分包。":"检查静态资源和模块聚合边界。"}}function Ll(e){return["# dashboard 模块优化计划","",`计划项:${e.items.length}`,`估算影响:${B(e.totalImpactBytes)}`,`低成本项:${e.quickWinCount}`,"","| 优先级 | 事项 | 影响 | 成本 | 建议 |","| ---: | --- | ---: | --- | --- |",...e.items.map(a=>`| ${a.priority} | ${a.title.replaceAll("|","\\|")} | ${B(a.impactBytes)} | ${Il(a.effort)} | ${a.action.replaceAll("|","\\|")} |`),""].join(`
|
|
13
|
-
`)}function
|
|
14
|
-
`," ")}function Nl(e,a){return[...e].sort((t,r)=>a==="packages"?r.packageCount-t.packageCount||r.estimatedSavingBytes-t.estimatedSavingBytes||t.source.localeCompare(r.source):a==="size"?r.bytes-t.bytes||r.packageCount-t.packageCount||t.source.localeCompare(r.source):a==="source"?t.source.localeCompare(r.source):r.estimatedSavingBytes-t.estimatedSavingBytes||r.packageCount-t.packageCount||t.source.localeCompare(r.source))}function jl(e){const a=D(""),t=D("all"),r=D("saving"),{actionStatus:o,setActionStatus:n}=ze(),l=k(()=>{const d=new Set;for(const w of e.duplicateModules)d.add(w.sourceType);return[...d].sort((w,T)=>w.localeCompare(T))}),c=k(()=>{const d=a.value.trim().toLowerCase(),w=e.duplicateModules.filter(T=>t.value!=="all"&&T.sourceType!==t.value?!1:d?[T.id,T.source,T.sourceType,T.advice,T.packages.map(Q=>Q.packageLabel).join(" "),T.packages.flatMap(Q=>Q.files).join(" ")].some(Q=>Q.toLowerCase().includes(d)):!0);return Nl(w,r.value)}),m=k(()=>c.value.map(d=>({key:d.id,packages:d.packages,...zl(d)}))),p=k(()=>e.moduleSourceSummary.map(d=>({key:`${d.sourceType}:${d.sourceCategory}`,...Al(d)}))),g=k(()=>e.incrementAttribution.slice(0,8).map(d=>({key:d.key,...Pl(d)}))),i=k(()=>e.incrementSummary.slice(0,6).map(d=>({key:d.category,...Wl(d)}))),x=k(()=>e.visibleLargestFiles.slice(0,6).map(d=>({key:`${d.packageId}:${d.file}`,...Rl(d)}))),v=k(()=>_l({duplicateModules:e.duplicateModules,incrementAttribution:e.incrementAttribution,largestFiles:e.visibleLargestFiles})),S=k(()=>["# dashboard 重复模块","",`模块数量:${c.value.length} / ${e.duplicateModules.length}`,"","| 模块 | 来源 | 包数量 | 单份体积 | 可节省 | 建议 | 涉及包 |","| --- | --- | ---: | ---: | ---: | --- | --- |",...c.value.map(d=>[d.source,d.sourceType,String(d.packageCount),B(d.bytes),B(d.estimatedSavingBytes),d.advice,d.packages.map(w=>w.packageLabel).join(", ")].map(Dl).join(" | ")).map(d=>`| ${d} |`),""].join(`
|
|
15
|
-
`));async function $(){try{await G(S.value),n("已复制")}catch{n("复制失败")}}function f(){const d=new Blob([`${JSON.stringify(c.value,null,2)}
|
|
16
|
-
`],{type:"application/json"}),w=URL.createObjectURL(d),T=document.createElement("a");T.href=w,T.download="weapp-vite-dashboard-duplicate-modules.json",T.click(),URL.revokeObjectURL(w),n("已导出")}return{actionStatus:o,copyDuplicateModulesReport:$,duplicateModuleItems:m,duplicateQuery:a,duplicateSortMode:r,duplicateSourceFilter:t,duplicateSourceOptions:l,exportDuplicateModulesJson:f,incrementItems:g,incrementSummaryItems:i,largestFileSampleItems:x,moduleOptimizationPlan:v,moduleSourceItems:p}}const Ql={class:"rounded-xl border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-3.5"},Ol={class:"flex flex-wrap items-start justify-between gap-3"},El={class:"min-w-0"},Ul={class:"mt-1 text-xs text-(--dashboard-text-soft)"},Kl={key:0,class:"font-medium text-(--dashboard-accent)"},Xe=N({__name:"AppSummaryValueCard",props:{title:{},meta:{},value:{},breakTitle:{type:Boolean}},setup(e){return(a,t)=>(b(),y("article",Ql,[s("div",Ol,[s("div",El,[s("p",{class:M(["font-medium text-(--dashboard-text)",e.breakTitle?"break-all":void 0])},h(e.title),3),s("p",Ul,h(e.meta),1)]),e.value?(b(),y("p",Kl,h(e.value),1)):_("",!0)]),rt(a.$slots,"default")]))}}),ql={class:"flex flex-wrap items-center gap-2"},Vl={class:"text-xs font-medium text-(--dashboard-text-soft)"},Jl={key:0,class:"text-xs font-medium text-(--dashboard-accent)"},Hl=["disabled"],Gl=["disabled"],Yl=["value"],Xl=N({__name:"DuplicateModulesToolbar",props:ke({filteredCount:{},totalCount:{},sourceOptions:{},actionStatus:{},disabled:{type:Boolean}},{query:{required:!0},queryModifiers:{},sourceFilter:{required:!0},sourceFilterModifiers:{},sortMode:{required:!0},sortModeModifiers:{}}),emits:ke(["copy","exportJson"],["update:query","update:sourceFilter","update:sortMode"]),setup(e,{emit:a}){const t=a,r=pe(e,"query"),o=pe(e,"sourceFilter"),n=pe(e,"sortMode");return(l,c)=>(b(),y("div",ql,[s("span",Vl," 匹配 "+h(e.filteredCount)+" / "+h(e.totalCount),1),e.actionStatus?(b(),y("span",Jl,h(e.actionStatus),1)):_("",!0),s("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:c[0]||(c[0]=m=>t("copy"))}," 复制重复模块 ",8,Hl),s("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:c[1]||(c[1]=m=>t("exportJson"))}," 导出 JSON ",8,Gl),E(s("input",{"onUpdate:modelValue":c[2]||(c[2]=m=>r.value=m),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),[[se,r.value]]),E(s("select",{"onUpdate:modelValue":c[3]||(c[3]=m=>o.value=m),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)"},[c[5]||(c[5]=s("option",{value:"all"}," 全部来源 ",-1)),(b(!0),y(F,null,L(e.sourceOptions,m=>(b(),y("option",{key:m,value:m},h(m),9,Yl))),128))],512),[[J,o.value]]),E(s("select",{"onUpdate:modelValue":c[4]||(c[4]=m=>n.value=m),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)"},[...c[6]||(c[6]=[s("option",{value:"saving"}," 按可节省 ",-1),s("option",{value:"packages"}," 按包数量 ",-1),s("option",{value:"size"}," 按单份体积 ",-1),s("option",{value:"source"}," 按路径 ",-1)])],512),[[J,n.value]])]))}}),Zl={class:"grid min-h-0 gap-3 overflow-hidden xl:grid-rows-[auto_minmax(0,1fr)_minmax(0,0.8fr)]"},ed={class:"flex items-center gap-2"},td={key:0,class:"text-xs font-medium text-(--dashboard-accent)"},ad=["disabled"],od={class:"mt-3 grid grid-cols-3 gap-2"},rd={key:0,class:"mt-3 grid max-h-54 gap-2 overflow-y-auto pr-1"},sd={class:"flex items-start justify-between gap-3"},nd={class:"min-w-0 text-sm font-medium text-(--dashboard-text)"},ld={class:"mt-1 line-clamp-2 text-xs leading-5 text-(--dashboard-text-muted)"},dd={class:"mt-2 text-xs text-(--dashboard-text-soft)"},id={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)]"},ud={class:"space-y-2 overflow-y-auto pr-1"},cd={class:"space-y-2 overflow-y-auto pr-1 text-sm text-(--dashboard-text-muted)"},md={class:"mt-4 grid h-[calc(100%-3.5rem)] min-h-0 gap-3 overflow-hidden lg:grid-cols-2"},pd={class:"space-y-2.5 overflow-y-auto pr-1"},bd={class:"space-y-2.5 overflow-y-auto pr-1 text-sm text-(--dashboard-text-muted)"},gd=N({__name:"ModuleInsightsSidebar",props:{incrementItems:{},incrementSummaryItems:{},moduleSourceItems:{},largestFileSampleItems:{},optimizationPlan:{}},setup(e){const a=e,t=D("");let r=null;function o(m){return m==="high"?"高成本":m==="medium"?"中成本":"低成本"}function n(m){return m==="high"?"border-rose-200 bg-rose-50 text-rose-700 dark:border-rose-500/25 dark:bg-rose-500/10 dark:text-rose-300":m==="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 l(m){t.value=m,r&&clearTimeout(r),r=setTimeout(()=>{t.value="",r=null},1800)}async function c(){try{await G(a.optimizationPlan.report),l("计划已复制")}catch{l("复制失败")}}return fe(()=>{r&&clearTimeout(r)}),(m,p)=>(b(),y("div",Zl,[s("section",{class:M([u(te)({padding:"md"}),"overflow-hidden"])},[C(H,{"icon-name":"metric-quality",title:"优化计划"},{meta:P(()=>[s("div",ed,[t.value?(b(),y("span",td,h(t.value),1)):_("",!0),s("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:c}," 复制计划 ",8,ad)])]),_:1}),s("div",od,[C(de,{label:"计划项",value:e.optimizationPlan.items.length},null,8,["value"]),C(de,{label:"估算影响",value:u(B)(e.optimizationPlan.totalImpactBytes)},null,8,["value"]),C(de,{label:"低成本项",value:e.optimizationPlan.quickWinCount},null,8,["value"])]),e.optimizationPlan.items.length?(b(),y("div",rd,[(b(!0),y(F,null,L(e.optimizationPlan.items,g=>(b(),y("article",{key:g.id,class:"rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-3"},[s("div",sd,[s("p",nd,h(g.title),1),s("span",{class:M(["shrink-0 rounded-full border px-2 py-0.5 text-[11px]",n(g.effort)])},h(o(g.effort)),3)]),s("p",ld,h(g.detail),1),s("p",dd,h(g.action)+" · 影响 "+h(u(B)(g.impactBytes)),1)]))),128))])):(b(),W(X,{key:1,class:"mt-3"},{default:P(()=>[...p[0]||(p[0]=[O(" 当前没有需要生成的模块优化计划。 ",-1)])]),_:1}))],2),s("section",{class:M([u(te)({padding:"md"}),"min-h-0 overflow-hidden"])},[C(H,{"icon-name":"metric-time",title:"增量归因"}),e.incrementItems.length?(b(),y("div",id,[s("div",ud,[(b(!0),y(F,null,L(e.incrementSummaryItems,g=>(b(),W(Xe,{key:g.key,meta:g.meta,title:g.title,value:g.value},null,8,["meta","title","value"]))),128))]),s("ul",cd,[(b(!0),y(F,null,L(e.incrementItems,g=>(b(),W($e,{key:g.key,meta:g.meta,"mono-title":"",title:g.title,value:g.value},null,8,["meta","title","value"]))),128))])])):(b(),W(X,{key:1,class:"mt-4"},{default:P(()=>[...p[1]||(p[1]=[O(" 暂无可对比的正向增量。 ",-1)])]),_:1}))],2),s("section",{class:M([u(te)({padding:"md"}),"min-h-0 overflow-hidden"])},[C(H,{"icon-name":"module-sources",title:"模块来源"}),s("div",md,[s("div",pd,[(b(!0),y(F,null,L(e.moduleSourceItems,g=>(b(),W(Xe,{key:g.key,meta:g.meta,title:g.title,value:g.value},null,8,["meta","title","value"]))),128))]),s("ul",bd,[(b(!0),y(F,null,L(e.largestFileSampleItems,g=>(b(),W($e,{key:g.key,meta:g.meta,"mono-title":"",title:g.title,value:g.value},null,8,["meta","title","value"]))),128))])])],2)]))}}),fd={class:"grid h-full min-h-0 gap-3 overflow-hidden xl:grid-cols-[minmax(0,1.24fr)_minmax(0,0.76fr)]"},yd={class:"flex flex-wrap items-start justify-between gap-3"},hd={key:0,class:"mt-4 max-h-[calc(100%-5.75rem)] space-y-2.5 overflow-y-auto pr-1"},vd={class:"mt-3 space-y-1.5 text-xs text-(--dashboard-text-muted)"},xd={class:"font-medium text-(--dashboard-text)"},kd=N({__name:"ModulesPanel",props:{duplicateModules:{},moduleSourceSummary:{},incrementAttribution:{},incrementSummary:{},visibleLargestFiles:{}},setup(e){const a=e,{actionStatus:t,copyDuplicateModulesReport:r,duplicateModuleItems:o,duplicateQuery:n,duplicateSortMode:l,duplicateSourceFilter:c,duplicateSourceOptions:m,exportDuplicateModulesJson:p,incrementItems:g,incrementSummaryItems:i,largestFileSampleItems:x,moduleOptimizationPlan:v,moduleSourceItems:S}=jl(a);return($,f)=>(b(),y("section",fd,[s("div",{class:M([u(te)({padding:"md"}),"min-h-0 overflow-hidden"])},[s("div",yd,[C(H,{"icon-name":"duplicate-modules",title:"重复模块",description:`${e.duplicateModules.length} 个重复模块样本`},null,8,["description"]),C(Xl,{query:u(n),"onUpdate:query":f[0]||(f[0]=d=>U(n)?n.value=d:null),"sort-mode":u(l),"onUpdate:sortMode":f[1]||(f[1]=d=>U(l)?l.value=d:null),"source-filter":u(c),"onUpdate:sourceFilter":f[2]||(f[2]=d=>U(c)?c.value=d:null),"action-status":u(t),disabled:u(o).length===0,"filtered-count":u(o).length,"source-options":u(m),"total-count":e.duplicateModules.length,onCopy:u(r),onExportJson:u(p)},null,8,["query","sort-mode","source-filter","action-status","disabled","filtered-count","source-options","total-count","onCopy","onExportJson"])]),u(o).length?(b(),y("div",hd,[(b(!0),y(F,null,L(u(o),d=>(b(),W(Xe,{key:d.key,"break-title":"",meta:d.meta,title:d.title,value:d.value},{default:P(()=>[s("ul",vd,[(b(!0),y(F,null,L(d.packages,w=>(b(),y("li",{key:`${d.key}:${w.packageId}`},[s("span",xd,h(w.packageLabel),1),f[3]||(f[3]=s("span",{class:"text-(--dashboard-text-soft)"}," · ",-1)),s("span",null,h(w.files.join("、")),1)]))),128))])]),_:2},1032,["meta","title","value"]))),128))])):(b(),W(X,{key:1,class:"mt-4"},{default:P(()=>[...f[4]||(f[4]=[O(" 当前构建未检测到跨包重复模块。 ",-1)])]),_:1}))],2),C(gd,{"increment-items":u(g),"increment-summary-items":u(i),"largest-file-sample-items":u(x),"module-source-items":u(S),"optimization-plan":u(v)},null,8,["increment-items","increment-summary-items","largest-file-sample-items","module-source-items","optimization-plan"])]))}});function Ot(e){return Math.max(0,Math.min(100,Math.round(e)))}function $d(e){if(typeof e.sizeDeltaBytes!="number"||e.sizeDeltaBytes<=0||e.totalBytes<=0)return 0;const a=e.sizeDeltaBytes/e.totalBytes;return Math.min(18,a*80)}function wd(e){return e?e.status==="critical"?32:18:0}function Bd(e){return e.moduleCount<=0||e.duplicateModuleCount<=0?0:Math.min(18,e.duplicateModuleCount/e.moduleCount*60)}function Sd(e){return Math.min(10,Math.max(0,e.entryFileCount-1)*3)}function Cd(e){return e<70?"risk":e<86?"watch":"good"}function Id(e){return e==="risk"?"高风险":e==="watch"?"需关注":"健康"}function Md(e,a){return a?.status==="critical"?`预算超限 ${(a.ratio*100).toFixed(1)}%`:a?.status==="warning"?`接近预算 ${(a.ratio*100).toFixed(1)}%`:typeof e.sizeDeltaBytes=="number"&&e.sizeDeltaBytes>0?`较上次增长 ${B(e.sizeDeltaBytes)}`:e.duplicateModuleCount>0?`${e.duplicateModuleCount} 个重复模块`:"未发现主要风险"}function Td(e,a){const t=Ot(100-wd(a)-$d(e)-Bd(e)-Sd(e)),r=Cd(t);return{id:e.id,label:e.label,score:t,status:r,statusLabel:Id(r),detail:`${e.fileCount} 个产物 · ${e.moduleCount} 个模块 · ${B(e.totalBytes)}`,primaryRisk:Md(e,a),metrics:[{label:"体积",value:B(e.totalBytes)},{label:"重复模块",value:e.duplicateModuleCount},{label:"Entry",value:e.entryFileCount},{label:"较上次",value:typeof e.sizeDeltaBytes=="number"?`${e.sizeDeltaBytes>=0?"+":"-"}${B(Math.abs(e.sizeDeltaBytes))}`:"—"}]}}function Fd(e){const a=new Map(e.budgetWarnings.map(o=>[o.id,o])),t=e.packageInsights.map(o=>Td(o,a.get(o.id))).sort((o,n)=>o.score-n.score||o.label.localeCompare(n.label)),r=t.reduce((o,n)=>o+n.score,0);return{averageScore:t.length>0?Ot(r/t.length):100,riskCount:t.filter(o=>o.status==="risk").length,watchCount:t.filter(o=>o.status==="watch").length,healthiestPackage:[...t].sort((o,n)=>n.score-o.score||o.label.localeCompare(n.label))[0],weakestPackage:t[0],items:t}}function Et(e){return typeof e!="number"||Number.isNaN(e)||e===0?"—":`${e>0?"+":"-"}${B(Math.abs(e))}`}function Ld(e){return[{label:"Chunks",value:e.chunkCount},{label:"Assets",value:e.assetCount},{label:"压缩后",value:B(e.compressedBytes)},{label:"较上次",value:Et(e.sizeDeltaBytes)}]}function _d(e){return e.replaceAll("|","\\|").replaceAll(`
|
|
17
|
-
`," ")}function zd(e,a){return["# dashboard 包体探索","",`包数量:${e.length} / ${a}`,"","| 包 | 类型 | 总体积 | 压缩后 | 较上次 | 预算 | 产物 | 模块 | 重复模块 |","| --- | --- | ---: | ---: | ---: | --- | ---: | ---: | ---: |",...e.map(t=>[t.label,t.typeLabel,t.totalBytesLabel,t.compressedBytesLabel,t.deltaText,t.budgetText,String(t.fileCount),String(t.moduleCount),String(t.duplicateModuleCount)].map(_d).join(" | ")).map(t=>`| ${t} |`),""].join(`
|
|
18
|
-
`)}function Ad(e,a){return[...e].sort((t,r)=>a==="compressed"?r.compressedBytes-t.compressedBytes||t.label.localeCompare(r.label):a==="delta"?(r.sizeDeltaBytes??Number.NEGATIVE_INFINITY)-(t.sizeDeltaBytes??Number.NEGATIVE_INFINITY)||t.label.localeCompare(r.label):a==="duplicates"?r.duplicateModuleCount-t.duplicateModuleCount||r.totalBytes-t.totalBytes||t.label.localeCompare(r.label):a==="files"?r.fileCount-t.fileCount||r.totalBytes-t.totalBytes||t.label.localeCompare(r.label):a==="name"?t.label.localeCompare(r.label):a==="health"?t.healthScore-r.healthScore||r.totalBytes-t.totalBytes||t.label.localeCompare(r.label):r.totalBytes-t.totalBytes||t.label.localeCompare(r.label))}function Pd(e){const a=D(""),t=D("all"),r=D("all"),o=D("size"),{actionStatus:n,setActionStatus:l}=ze(),c=k(()=>new Map(e.budgetWarnings.map(f=>[f.id,f]))),m=k(()=>Fd({packageInsights:e.packageInsights,budgetWarnings:e.budgetWarnings})),p=k(()=>new Map(m.value.items.map(f=>[f.id,f.score]))),g=k(()=>{const f=new Set;for(const d of e.packageInsights)f.add(d.type);return[...f].sort((d,w)=>ie(d).localeCompare(ie(w)))}),i=k(()=>e.packageInsights.map(f=>{const d=ie(f.type),w=c.value.get(f.id),T=e.selectedTreemapMeta?.packageLabel===f.label;return{...f,typeLabel:d,summaryText:`${d} · ${f.fileCount} 个产物 · ${f.moduleCount} 个模块 · 跨包 ${f.duplicateModuleCount}`,totalBytesLabel:B(f.totalBytes),compressedBytesLabel:`${f.compressedSizeSource==="real"?"Brotli":"估算"} ${B(f.compressedBytes)}`,deltaText:Et(f.sizeDeltaBytes),budgetText:w?`${w.status==="critical"?"超预算":"接近预算"} ${(w.ratio*100).toFixed(1)}%`:"预算正常",selected:T,entryCountText:`${f.entryFileCount} 个 entry`,healthScore:p.value.get(f.id)??100,metrics:Ld(f)}})),x=k(()=>{const f=a.value.trim().toLowerCase(),d=i.value.filter(w=>{if(t.value!=="all"&&w.type!==t.value)return!1;const T=c.value.has(w.id);return r.value==="warning"&&!T||r.value==="normal"&&T?!1:f?[w.id,w.label,w.type,w.typeLabel,w.summaryText].some(Q=>Q.toLowerCase().includes(f)):!0});return Ad(d,o.value)}),v=k(()=>zd(x.value,i.value.length));async function S(){try{await G(v.value),l("已复制")}catch{l("复制失败")}}function $(){const f=new Blob([`${JSON.stringify(x.value,null,2)}
|
|
19
|
-
`],{type:"application/json"}),d=URL.createObjectURL(f),w=document.createElement("a");w.href=d,w.download="weapp-vite-dashboard-packages.json",w.click(),URL.revokeObjectURL(d),l("已导出")}return{actionStatus:n,copyPackageReport:S,exportPackageJson:$,filteredPackageInsightCards:x,packageBudgetFilter:r,packageHealth:m,packageInsightCards:i,packageQuery:a,packageSortMode:o,packageTypeFilter:t,packageTypeOptions:g}}const Wd={class:"overflow-hidden rounded-xl border border-(--dashboard-border)"},Rd={class:"min-w-full divide-y divide-(--dashboard-border) text-left text-sm"},Dd={class:"divide-y divide-(--dashboard-border) text-(--dashboard-text-muted)"},Nd={class:"px-3 py-2 font-mono text-xs text-(--dashboard-text)"},jd={class:"px-3 py-2"},Qd={class:"px-3 py-2"},Od={class:"px-3 py-2 font-medium text-(--dashboard-text)"},Ed={class:"px-3 py-2 font-medium text-(--dashboard-text)"},Ud=N({__name:"AppPackageFileTable",props:{files:{}},setup(e){const a=e;function t(o){const n=typeof o.sizeDeltaBytes=="number"&&o.sizeDeltaBytes!==0?`${o.sizeDeltaBytes>0?"+":"-"}${B(Math.abs(o.sizeDeltaBytes))}`:"—";return{file:o.file,type:o.type,fromLabel:Wt(o.from),sizeLabel:B(o.size),compressedLabel:B(o.compressedSize),deltaLabel:n}}const r=k(()=>a.files.map(o=>t(o)));return(o,n)=>(b(),y("div",Wd,[s("table",Rd,[n[0]||(n[0]=s("thead",{class:"bg-(--dashboard-panel-muted) text-(--dashboard-text-soft)"},[s("tr",null,[s("th",{class:"px-3 py-2 text-[11px] font-medium uppercase tracking-[0.18em]"}," 文件 "),s("th",{class:"px-3 py-2 text-[11px] font-medium uppercase tracking-[0.18em]"}," 类型 "),s("th",{class:"px-3 py-2 text-[11px] font-medium uppercase tracking-[0.18em]"}," 来源 "),s("th",{class:"px-3 py-2 text-[11px] font-medium uppercase tracking-[0.18em]"}," 体积 / 压缩 "),s("th",{class:"px-3 py-2 text-[11px] font-medium uppercase tracking-[0.18em]"}," 较上次 ")])],-1)),s("tbody",Dd,[(b(!0),y(F,null,L(r.value,l=>(b(),y("tr",{key:l.file},[s("td",Nd,h(l.file),1),s("td",jd,h(l.type),1),s("td",Qd,h(l.fromLabel),1),s("td",Od,h(l.sizeLabel)+" / "+h(l.compressedLabel),1),s("td",Ed,h(l.deltaLabel),1)]))),128))])])]))}}),Kd={class:"flex flex-wrap items-center justify-between gap-3"},qd={class:"text-xs font-medium text-(--dashboard-text-soft)"},Vd={key:0,class:"mt-1 text-xs font-medium text-(--dashboard-accent)"},Jd={class:"flex flex-wrap items-center gap-2"},Hd=["disabled"],Gd=["disabled"],Yd=["value"],Xd=N({__name:"PackageExplorerToolbar",props:ke({filteredCount:{},totalCount:{},typeOptions:{},actionStatus:{},disabled:{type:Boolean}},{query:{required:!0},queryModifiers:{},typeFilter:{required:!0},typeFilterModifiers:{},budgetFilter:{required:!0},budgetFilterModifiers:{},sortMode:{required:!0},sortModeModifiers:{}}),emits:ke(["copy","exportJson"],["update:query","update:typeFilter","update:budgetFilter","update:sortMode"]),setup(e,{emit:a}){const t=a,r=pe(e,"query"),o=pe(e,"typeFilter"),n=pe(e,"budgetFilter"),l=pe(e,"sortMode");return(c,m)=>(b(),y("div",Kd,[s("div",null,[s("p",qd," 匹配 "+h(e.filteredCount)+" / "+h(e.totalCount)+" 个包 ",1),e.actionStatus?(b(),y("p",Vd,h(e.actionStatus),1)):_("",!0)]),s("div",Jd,[s("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:m[0]||(m[0]=p=>t("copy"))}," 复制包体 ",8,Hd),s("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:m[1]||(m[1]=p=>t("exportJson"))}," 导出 JSON ",8,Gd),E(s("input",{"onUpdate:modelValue":m[2]||(m[2]=p=>r.value=p),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),[[se,r.value]]),E(s("select",{"onUpdate:modelValue":m[3]||(m[3]=p=>o.value=p),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)"},[m[6]||(m[6]=s("option",{value:"all"}," 全部类型 ",-1)),(b(!0),y(F,null,L(e.typeOptions,p=>(b(),y("option",{key:p,value:p},h(u(ie)(p)),9,Yd))),128))],512),[[J,o.value]]),E(s("select",{"onUpdate:modelValue":m[4]||(m[4]=p=>n.value=p),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)"},[...m[7]||(m[7]=[s("option",{value:"all"}," 全部预算 ",-1),s("option",{value:"warning"}," 仅告警 ",-1),s("option",{value:"normal"}," 预算正常 ",-1)])],512),[[J,n.value]]),E(s("select",{"onUpdate:modelValue":m[5]||(m[5]=p=>l.value=p),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)"},[...m[8]||(m[8]=[st('<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),[[J,l.value]])])]))}}),Zd={class:"rounded-lg border border-(--dashboard-border) bg-(--dashboard-panel) p-4 shadow-(--dashboard-shadow)"},ei={class:"mt-3 grid gap-3 xl:grid-cols-[minmax(0,0.45fr)_minmax(0,1fr)]"},ti={class:"grid grid-cols-3 gap-2"},ai={class:"grid gap-2 md:grid-cols-2 xl:grid-cols-3"},oi={class:"flex items-start justify-between gap-3"},ri={class:"min-w-0"},si={class:"truncate text-sm font-semibold text-(--dashboard-text)"},ni={class:"mt-1 text-xs leading-5 text-(--dashboard-text-soft)"},li={class:"mt-3 flex items-end justify-between gap-3"},di={class:"text-3xl font-semibold text-(--dashboard-accent)"},ii={class:"line-clamp-2 text-right text-xs leading-5 text-(--dashboard-text-muted)"},ui=N({__name:"PackageHealthPanel",props:{health:{}},setup(e){function a(t){return t==="risk"?"border-rose-200 bg-rose-50 text-rose-700 dark:border-rose-500/25 dark:bg-rose-500/10 dark:text-rose-300":t==="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(t,r)=>(b(),y("section",Zd,[C(H,{"icon-name":"metric-health",title:"包体健康",description:e.health.weakestPackage?`优先关注 ${e.health.weakestPackage.label}`:"当前没有包体样本"},null,8,["description"]),s("div",ei,[s("div",ti,[C(de,{label:"平均分",value:e.health.averageScore},null,8,["value"]),C(de,{label:"高风险",value:e.health.riskCount},null,8,["value"]),C(de,{label:"需关注",value:e.health.watchCount},null,8,["value"])]),s("div",ai,[(b(!0),y(F,null,L(e.health.items.slice(0,3),o=>(b(),y("article",{key:o.id,class:"rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-3"},[s("div",oi,[s("div",ri,[s("p",si,h(o.label),1),s("p",ni,h(o.detail),1)]),s("span",{class:M(["shrink-0 rounded-full border px-2 py-0.5 text-[11px]",a(o.status)])},h(o.statusLabel),3)]),s("div",li,[s("p",di,h(o.score),1),s("p",ii,h(o.primaryRisk),1)])]))),128))])])]))}}),ci={class:"grid h-full min-h-0 grid-rows-[auto_minmax(0,1fr)] gap-3 overflow-hidden"},mi={class:"grid gap-3"},pi={class:"grid min-h-0 auto-rows-max gap-3 overflow-y-auto pr-1 xl:grid-cols-2"},bi={class:"flex flex-wrap items-start justify-between gap-4"},gi={class:"min-w-0"},fi={class:"mt-2 text-sm text-(--dashboard-text-soft)"},yi={class:"text-right"},hi={class:"text-xl font-semibold text-(--dashboard-text)"},vi={class:"text-xs text-(--dashboard-text-soft)"},xi={class:"mt-1 text-xs text-(--dashboard-accent)"},ki={class:"mt-4 grid grid-cols-2 gap-2 text-sm md:grid-cols-4"},$i={class:"mt-4"},wi=N({__name:"PackagesPanel",props:{packageInsights:{},budgetWarnings:{},selectedTreemapMeta:{}},setup(e){const a=e,{actionStatus:t,copyPackageReport:r,exportPackageJson:o,filteredPackageInsightCards:n,packageBudgetFilter:l,packageHealth:c,packageInsightCards:m,packageQuery:p,packageSortMode:g,packageTypeFilter:i,packageTypeOptions:x}=Pd(a);return(v,S)=>(b(),y("section",ci,[s("div",mi,[C(ui,{health:u(c)},null,8,["health"]),s("div",{class:M([u(te)({padding:"md"}),"grid gap-3"])},[C(H,{"icon-name":"tab-packages",title:"包体探索",description:`${u(m).length} 个包体样本`},null,8,["description"]),C(Xd,{"budget-filter":u(l),"onUpdate:budgetFilter":S[0]||(S[0]=$=>U(l)?l.value=$:null),query:u(p),"onUpdate:query":S[1]||(S[1]=$=>U(p)?p.value=$:null),"sort-mode":u(g),"onUpdate:sortMode":S[2]||(S[2]=$=>U(g)?g.value=$:null),"type-filter":u(i),"onUpdate:typeFilter":S[3]||(S[3]=$=>U(i)?i.value=$:null),"action-status":u(t),disabled:u(n).length===0,"filtered-count":u(n).length,"total-count":u(m).length,"type-options":u(x),onCopy:u(r),onExportJson:u(o)},null,8,["budget-filter","query","sort-mode","type-filter","action-status","disabled","filtered-count","total-count","type-options","onCopy","onExportJson"])],2)]),s("div",pi,[u(n).length===0?(b(),W(X,{key:0,class:"xl:col-span-2"},{default:P(()=>[...S[4]||(S[4]=[O(" 没有匹配当前筛选条件的包。 ",-1)])]),_:1})):_("",!0),(b(!0),y(F,null,L(u(n),$=>(b(),y("article",{key:$.id,class:M([[u(te)({padding:"md"}),$.selected?"border-(--dashboard-accent)":""],"border transition"])},[s("div",bi,[s("div",gi,[C(H,{"icon-name":"tab-packages",title:$.label,description:$.typeLabel},null,8,["title","description"]),s("p",fi,h($.summaryText),1)]),s("div",yi,[s("p",hi,h($.totalBytesLabel),1),s("p",vi,h($.compressedBytesLabel),1),s("p",xi,h($.budgetText),1)])]),s("div",ki,[(b(!0),y(F,null,L($.metrics,f=>(b(),W(de,he({key:f.label},{ref_for:!0},f),null,16))),128))]),s("div",$i,[C(Ud,{files:$.topFiles},null,8,["files"])])],2))),128))])]))}}),Bi={class:"grid h-full min-h-0 grid-rows-[auto_minmax(0,1fr)] gap-2 overflow-hidden"},Si={class:"rounded-lg border border-(--dashboard-border) bg-(--dashboard-panel) p-4 shadow-(--dashboard-shadow)"},Ci={class:"flex items-center gap-2"},Ii={key:0,class:"text-xs font-medium text-(--dashboard-accent)"},Mi={class:"h-3.5 w-3.5"},Ti={class:"mt-3 grid gap-3 lg:grid-cols-[minmax(0,0.82fr)_minmax(0,1fr)]"},Fi={class:"rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-3"},Li={class:"mt-3 text-lg font-semibold text-(--dashboard-text)"},_i={class:"mt-1 text-xs leading-5 text-(--dashboard-text-soft)"},zi={class:"grid grid-cols-2 gap-2 md:grid-cols-4"},Ai={class:"grid min-h-0 gap-2 overflow-y-auto pr-1 xl:grid-cols-3 xl:overflow-hidden xl:pr-0"},Pi={class:"text-sm font-semibold text-(--dashboard-text)"},Wi={class:"mt-1 text-xs leading-5 text-(--dashboard-text-soft)"},Ri={class:"mt-3 min-h-0 overflow-y-auto pr-1"},Di={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)"},Ni=["onClick"],ji={class:"mt-0.5 flex h-4 w-4 items-center justify-center rounded border border-current text-[10px] leading-none"},Qi={class:"min-w-0"},Oi={class:"block text-sm font-medium text-(--dashboard-text)"},Ei={class:"mt-1 line-clamp-2 block text-xs leading-5 text-(--dashboard-text-muted)"},Ui=N({__name:"PrReviewChecklistPanel",props:{checklist:{},copyStatus:{}},emits:["copy","select"],setup(e,{emit:a}){const t=a;function r(n){return n==="blocked"?"border-rose-200 bg-rose-100 text-rose-700 dark:border-rose-500/30 dark:bg-rose-500/12 dark:text-rose-300":n==="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 o(n){return n==="critical"?"border-rose-200 bg-rose-50 text-rose-700 dark:border-rose-500/25 dark:bg-rose-500/10 dark:text-rose-300":n==="warning"?"border-amber-200 bg-amber-50 text-amber-700 dark:border-amber-500/25 dark:bg-amber-500/10 dark:text-amber-300":n==="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(n,l)=>(b(),y("section",Bi,[s("div",Si,[C(H,{"icon-name":"metric-bookmark",title:"PR 风险清单"},{meta:P(()=>[s("div",Ci,[e.copyStatus?(b(),y("span",Ii,h(e.copyStatus),1)):_("",!0),s("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:l[0]||(l[0]=c=>t("copy"))},[s("span",Mi,[C(ae,{name:"metric-copy"})]),l[1]||(l[1]=O(" 复制清单 ",-1))])])]),_:1}),s("div",Ti,[s("div",Fi,[s("span",{class:M(["inline-flex rounded-full border px-2.5 py-1 text-[11px] font-medium uppercase tracking-[0.16em]",r(e.checklist.status)])},h(e.checklist.label),3),s("p",Li,h(e.checklist.headline),1),s("p",_i,h(e.checklist.description),1)]),s("div",zi,[(b(!0),y(F,null,L(e.checklist.metrics,c=>(b(),W(de,he({key:c.label},{ref_for:!0},c),null,16))),128))])])]),s("div",Ai,[(b(!0),y(F,null,L(e.checklist.lanes,c=>(b(),y("section",{key:c.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)"},[s("div",null,[s("p",Pi,h(c.title),1),s("p",Wi,h(c.description),1)]),s("div",Ri,[c.items.length===0?(b(),y("div",Di,h(c.emptyText),1)):_("",!0),(b(!0),y(F,null,L(c.items,m=>(b(),y("button",{key:m.id,type:"button",class:M(["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)",o(m.tone)]),onClick:p=>t("select",m)},[s("span",ji,h(m.checked?"✓":""),1),s("span",Qi,[s("span",Oi,h(m.title),1),s("span",Ei,h(m.detail),1)])],10,Ni))),128))])]))),128))])]))}}),xt={noSemanticValidation:!0,noSuggestionDiagnostics:!0,noSyntaxValidation:!0},kt={diagnostics:!1};function Ki(e){e.typescript.javascriptDefaults.setDiagnosticsOptions(xt),e.typescript.javascriptDefaults.setModeConfiguration(kt),e.typescript.typescriptDefaults.setDiagnosticsOptions(xt),e.typescript.typescriptDefaults.setModeConfiguration(kt),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 $t(e){return e==="dark"?"weapp-dashboard-dark":"weapp-dashboard-light"}const qi={css:Ke,html:Oa,javascript:pt,json:Qa,less:Ke,scss:Ke,typescript:pt},Vi=globalThis;Vi.MonacoEnvironment={getWorker:(e,a)=>{const t=qi[a]??Ea;return new t}};function Ji(e){return`${e.packageId}:${e.file}`}function Hi(e,a){return a.endsWith(".wxml")||a.endsWith(".vue")?"html":a.endsWith(".wxss")?"css":e==="plaintext"&&a.endsWith(".json")?"json":e}function wt(e){const a=e.indexOf("?");return a===-1?e:e.slice(0,a)}async function Bt(e,a){const t=new URLSearchParams({kind:e,path:a}),r=await fetch(`/__weapp_vite_file_content?${t.toString()}`),o=await r.json();if(!r.ok)throw new Error(o.message||"文件读取失败");return{...o,language:Hi(o.language,o.path)}}function Gi(e){const a=new Set;if(!e)return[];e.source&&a.add(wt(e.source));for(const t of e.modules??[])(t.sourceType==="src"||t.sourceType==="workspace"||t.sourceType==="plugin")&&a.add(wt(t.source));return[...a].sort((t,r)=>t.localeCompare(r))}function St(e){return e?e.replace(/\r\n?/g,`
|
|
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,J 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,_,a as v,b as y,d as b,f as x,g as S,h as C,j as w,k as T,l as E,m as D,o as O,p as k,q as A,s as ee,t as j,u as M,v as N,x as P,y as F,z as I}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 L,O as R,S as ce,T as le,b as ue,c as z,k as B,m as de,o as fe,s as pe,t as me,u as V,w as H,x as he,y as ge}from"./index.js";import{n as U,t as W}from"./AppEmptyState.js";import{t as G}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=o(),r=o(``),i=o(0),a=o(`all`),s=C(()=>{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)}),c=C(()=>s.value[i.value]??null),l=C(()=>{let t=a.value===`all`?`全部类型`:Oe[a.value];return`匹配 ${s.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(s,()=>{i.value=0});function d(e){return Oe[e]}function p(e){return le({tone:ke[e]})}function m(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(s.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=s.value[i.value];t&&m(t)}}return{activeIndex:i,filteredItems:s,getKindLabel:d,getKindTone:p,handleKeydown:h,kindFilter:a,kindOptions:Ae,query:r,resultSummary:l,searchInputRef:n,selectedItem:c,selectItem:m}}var Me=n({__name:`AnalyzeCommandPalette`,props:{open:{type:Boolean},items:{}},emits:[`close`,`select`],setup(e,{expose:t,emit:n}){t();let r=e,i=n,{activeIndex:a,filteredItems:o,getKindLabel:s,getKindTone:c,handleKeydown:l,kindFilter:u,kindOptions:d,query:f,resultSummary:p,searchInputRef:m,selectedItem:h,selectItem:g}=je(r,i),_={props:r,emit:i,activeIndex:a,filteredItems:o,getKindLabel:s,getKindTone:c,handleKeydown:l,kindFilter:u,kindOptions:d,query:f,resultSummary:p,searchInputRef:m,selectedItem:h,selectItem:g,AppEmptyState:W,DashboardIcon:R};return Object.defineProperty(_,"__isScriptSetup",{enumerable:!1,value:!0}),_}}),Ne={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`},Pe={class:`grid gap-3 border-b border-(--dashboard-border) px-4 py-3`},Fe={class:`flex items-center gap-3`},Ie={class:`h-5 w-5 shrink-0 text-(--dashboard-accent)`},Le={class:`flex flex-wrap items-center justify-between gap-2`},Re={class:`text-xs text-(--dashboard-text-soft)`},ze=[`value`],Be={class:`grid min-h-0 gap-2 overflow-hidden p-2 lg:grid-cols-[minmax(0,1fr)_minmax(16rem,0.52fr)]`},Ve={key:1,class:`grid max-h-full min-h-0 gap-1 overflow-y-auto pr-1`},He=[`onMouseenter`,`onClick`],Ue={class:`flex items-start justify-between gap-3`},We={class:`min-w-0`},Ge={class:`flex min-w-0 items-center gap-2`},Ke={class:`truncate font-medium text-(--dashboard-text)`},qe={class:`mt-1 truncate text-xs text-(--dashboard-text-soft)`},Je={key:0,class:`whitespace-nowrap text-sm font-medium text-(--dashboard-accent)`},Ye={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`},Xe={class:`flex items-start justify-between gap-3`},Ze={key:1,class:`grid min-h-0 content-start gap-3 overflow-y-auto`},Qe={class:`font-medium`},$e={class:`mt-1 text-sm leading-6 text-(--dashboard-text-muted)`},et={class:`grid gap-2 text-sm`},tt={class:`flex items-center justify-between gap-3 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel) px-3 py-2`},nt={key:0,class:`flex items-center justify-between gap-3 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel) px-3 py-2`},rt={class:`text-(--dashboard-accent)`};function it(e,n,r,i,o,s){return w(),_(D,{to:`body`},[p(ee,{"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:I(()=>[r.open?(w(),F(`div`,{key:0,class:`fixed inset-0 z-[70] grid place-items-start bg-slate-950/45 px-3 py-12 backdrop-blur-sm md:px-6 md:py-[9vh]`,onClick:n[4]||=x(e=>i.emit(`close`),[`self`])},[S(`section`,Ne,[S(`div`,Pe,[S(`div`,Fe,[S(`span`,Ie,[p(i.DashboardIcon,{name:`metric-search`})]),t(S(`input`,{ref:`searchInputRef`,"onUpdate:modelValue":n[0]||=e=>i.query=e,class:`min-w-0 flex-1 bg-transparent text-base outline-none placeholder:text-(--dashboard-text-soft)`,placeholder:`搜索包、文件、模块、预算`,onKeydown:n[1]||=(...e)=>i.handleKeydown&&i.handleKeydown(...e)},null,544),[[M,i.query]])]),S(`div`,Le,[S(`p`,Re,c(i.resultSummary),1),t(S(`select`,{"onUpdate:modelValue":n[2]||=e=>i.kindFilter=e,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)`},[(w(!0),F(k,null,l(i.kindOptions,e=>(w(),F(`option`,{key:e.value,value:e.value},c(e.label),9,ze))),128))],512),[[E,i.kindFilter]])])]),S(`div`,Be,[i.filteredItems.length===0?(w(),_(i.AppEmptyState,{key:0,compact:``},{default:I(()=>[...n[5]||=[P(` 没有匹配结果。 `,-1)]]),_:1})):(w(),F(`ul`,Ve,[(w(!0),F(k,null,l(i.filteredItems,(e,t)=>(w(),F(`li`,{key:e.key,class:`list-none`},[S(`button`,{type:`button`,class:a([`w-full rounded-md border px-3 py-2.5 text-left transition`,t===i.activeIndex?`border-(--dashboard-accent) bg-(--dashboard-accent-soft)`:`border-transparent hover:border-(--dashboard-border) hover:bg-(--dashboard-panel-muted)`]),onMouseenter:e=>i.activeIndex=t,onClick:t=>i.selectItem(e)},[S(`div`,Ue,[S(`div`,We,[S(`div`,Ge,[S(`span`,{class:a(i.getKindTone(e.kind))},c(i.getKindLabel(e.kind)),3),S(`p`,Ke,c(e.title),1)]),S(`p`,qe,c(e.meta),1)]),e.value?(w(),F(`span`,Je,c(e.value),1)):N(``,!0)])],42,He)]))),128))])),S(`aside`,Ye,[S(`div`,Xe,[n[6]||=S(`div`,null,[S(`p`,{class:`text-[11px] uppercase tracking-[0.2em] text-(--dashboard-accent)`},` Preview `),S(`h3`,{class:`mt-1 text-base font-semibold`},` 当前命令 `)],-1),i.selectedItem?(w(),F(`span`,{key:0,class:a(i.getKindTone(i.selectedItem.kind))},c(i.getKindLabel(i.selectedItem.kind)),3)):N(``,!0)]),i.selectedItem?(w(),F(`div`,Ze,[S(`div`,null,[S(`h4`,Qe,c(i.selectedItem.title),1),S(`p`,$e,c(i.selectedItem.meta),1)]),S(`div`,et,[S(`div`,tt,[n[8]||=S(`span`,{class:`text-xs uppercase tracking-[0.16em] text-(--dashboard-text-soft)`},`Tab`,-1),S(`strong`,null,c(i.selectedItem.tab),1)]),i.selectedItem.value?(w(),F(`div`,nt,[n[9]||=S(`span`,{class:`text-xs uppercase tracking-[0.16em] text-(--dashboard-text-soft)`},`Value`,-1),S(`strong`,rt,c(i.selectedItem.value),1)])):N(``,!0)]),S(`button`,{type:`button`,class:`inline-flex h-9 items-center justify-center rounded-md border border-(--dashboard-border) bg-(--dashboard-panel) px-3 text-sm font-medium text-(--dashboard-text) transition hover:border-(--dashboard-border-strong) hover:text-(--dashboard-accent) focus:border-(--dashboard-border-strong) focus:outline-none`,onClick:n[3]||=e=>i.selectItem(i.selectedItem)},` 跳转到结果 `)])):(w(),_(i.AppEmptyState,{key:0,compact:``},{default:I(()=>[...n[7]||=[P(` 选择左侧结果后查看目标和跳转位置。 `,-1)]]),_:1}))])])])])):N(``,!0)]),_:1})])}var at=B(Me,[[`render`,it]]),ot=n({__name:`AnalyzeEmptyPayloadPanel`,setup(e,{expose:t}){t();let n={get RouterLink(){return j},AppSurfaceCard:he};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}}),st={class:`grid gap-3 xl:grid-cols-[minmax(0,1fr)_minmax(18rem,0.92fr)]`},ct={class:`rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-4`},lt={class:`mt-4 grid gap-2`},ut={class:`grid gap-2`};function dt(e,t,n,r,i,a){return w(),_(r.AppSurfaceCard,{eyebrow:`Analyze`,title:`等待分析数据注入`,"icon-name":`hero-commands`,tone:`strong`,padding:`header`},{default:I(()=>[S(`div`,st,[S(`div`,ct,[t[0]||=S(`p`,{class:`text-[11px] uppercase tracking-[0.24em] text-(--dashboard-text-soft)`},` recommended commands `,-1),S(`div`,lt,[(w(),F(k,null,l([`weapp-vite analyze`,`weapp-vite build --ui`,`weapp-vite dev --ui`],e=>S(`code`,{key:e,class:`rounded-md bg-slate-950 px-3 py-3 text-xs text-slate-100 dark:bg-slate-900`},c(e),1)),64))])]),S(`div`,ut,[p(r.RouterLink,{class:`rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-4 py-4 transition hover:border-(--dashboard-border-strong) hover:bg-(--dashboard-panel)`,to:`/`},{default:I(()=>[...t[1]||=[S(`p`,{class:`font-medium`},` 返回工作台 `,-1),S(`p`,{class:`mt-1 text-sm leading-6 text-(--dashboard-text-muted)`},` 查看当前状态和命令。 `,-1)]]),_:1}),p(r.RouterLink,{class:`rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-4 py-4 transition hover:border-(--dashboard-border-strong) hover:bg-(--dashboard-panel)`,to:`/activity`},{default:I(()=>[...t[2]||=[S(`p`,{class:`font-medium`},` 查看活动流 `,-1),S(`p`,{class:`mt-1 text-sm leading-6 text-(--dashboard-text-muted)`},` 观察命令、构建、HMR 和诊断事件。 `,-1)]]),_:1})])])]),_:1})}var ft=B(ot,[[`render`,dt]]),pt=n({__name:`AnalyzeDraggableGrid`,props:{items:{},storageKey:{},gridClass:{}},setup(t,{expose:n}){n();let r=t,i=m([]),a=m(null),o=C(()=>new Map(r.items.map(e=>[e.id,e]))),s=C(()=>{let e=new Set(r.items.map(e=>e.id)),t=i.value.filter(t=>e.has(t)).map(e=>o.value.get(e)).filter(e=>!!e),n=r.items.filter(e=>!i.value.includes(e.id));return[...t,...n]});function c(){try{let e=window.localStorage.getItem(r.storageKey),t=e?JSON.parse(e):null;i.value=Array.isArray(t)?t.filter(e=>typeof e==`string`):r.items.map(e=>e.id)}catch{i.value=r.items.map(e=>e.id)}}function l(e){i.value=e,window.localStorage.setItem(r.storageKey,JSON.stringify(e))}function u(e,t){a.value=e.id,t.dataTransfer?.setData(`text/plain`,e.id),t.dataTransfer&&(t.dataTransfer.effectAllowed=`move`)}function d(e){let t=a.value;if(a.value=null,!t||t===e.id)return;let n=s.value.map(e=>e.id),r=n.indexOf(t),i=n.indexOf(e.id);r<0||i<0||(n.splice(r,1),n.splice(i,0,t),l(n))}function p(){l(r.items.map(e=>e.id))}e(c),f(()=>r.items.map(e=>e.id).join(`\0`),c);let h={props:r,order:i,draggingId:a,itemMap:o,orderedItems:s,readOrder:c,writeOrder:l,handleDragStart:u,handleDrop:d,resetOrder:p};return Object.defineProperty(h,"__isScriptSetup",{enumerable:!1,value:!0}),h}}),mt=[`onDrop`],ht={class:`flex min-h-0 items-center justify-between gap-2 pb-1`},gt=[`onDragstart`],_t={class:`truncate`},vt={class:`min-h-0 overflow-hidden`};function yt(e,t,n,r,i,o){return w(),F(`section`,{class:a(n.gridClass)},[(w(!0),F(k,null,l(r.orderedItems,n=>(w(),F(`article`,{key:n.id,class:a([`grid min-h-0 grid-rows-[auto_minmax(0,1fr)] overflow-hidden rounded-lg border border-dashed border-transparent transition`,[n.className,r.draggingId===n.id?`border-(--dashboard-accent) opacity-70`:``]]),onDragover:t[1]||=x(()=>{},[`prevent`]),onDrop:e=>r.handleDrop(n)},[S(`div`,ht,[S(`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:t[0]||=e=>r.draggingId=null,onDragstart:e=>r.handleDragStart(n,e)},[t[2]||=S(`span`,{"aria-hidden":`true`},`::`,-1),S(`span`,_t,c(n.label),1)],40,gt),r.orderedItems.length>1&&n.id===r.orderedItems[0]?.id?(w(),F(`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:r.resetOrder},` 重置布局 `)):N(``,!0)]),S(`div`,vt,[d(e.$slots,n.id,{item:n})])],42,mt))),128))],2)}var bt=B(pt,[[`render`,yt]]);function xt(e){return typeof e!=`number`||Number.isNaN(e)||e===0?``:`${e>0?`+`:`-`}${z(Math.abs(e))}`}function St(e){let t=xt(e.sizeDeltaBytes);return{title:e.file,meta:`${e.packageLabel} · ${V(e.packageType)} · ${e.type}${t?` · ${t}`:``}`,value:`${z(e.size)} / ${z(e.compressedSize)}`}}function Ct(e){return e.kind===`package`?{title:e.packageLabel,meta:`${V(e.packageType)} · ${e.fileCount} 个产物`,value:z(e.totalBytes)}:e.kind===`file`?{title:e.fileName,meta:`${e.packageLabel} · ${e.type} · ${e.childCount} 项`,value:z(e.bytes)}:e.kind===`module`?{title:e.source,meta:`${e.packageLabel} · ${e.packageCount} 个包复用`,value:z(e.bytes??e.originalBytes)}:{title:e.source,meta:`${e.packageLabel} · ${e.fileName}`,value:z(e.bytes)}}function wt(e){return e.replaceAll(`|`,`\\|`).replaceAll(`
|
|
3
|
+
`,` `)}function Tt(e){return[`# dashboard 文件详情`,``,`文件数量:${e.files.length} / ${e.totalCount}`,``,`| 文件 | 包 | 类型 | 总体积 | 压缩后 | 较上次 | 模块 | 来源 |`,`| --- | --- | --- | ---: | ---: | ---: | ---: | --- |`,...e.files.map(e=>[e.file,e.packageLabel,e.type,z(e.size),z(e.compressedSize),xt(e.sizeDeltaBytes)||`-`,String(e.moduleCount),e.source??`-`].map(wt).join(` | `)).map(e=>`| ${e} |`),``].join(`
|
|
4
|
+
`)}var Et=n({__name:`AppCompactListItem`,props:{title:{},meta:{},value:{},monoTitle:{type:Boolean},clickable:{type:Boolean},active:{type:Boolean}},emits:[`select`],setup(e,{expose:t,emit:n}){t();let r={emit:n};return Object.defineProperty(r,"__isScriptSetup",{enumerable:!1,value:!0}),r}}),Dt={class:`flex items-start justify-between gap-3`},Ot={class:`min-w-0`},kt={class:`mt-1 text-xs text-(--dashboard-text-soft)`},At={key:0,class:`whitespace-nowrap font-medium text-(--dashboard-accent)`},jt={key:1,class:`list-none`},Mt={class:`flex items-start justify-between gap-3`},Nt={class:`min-w-0`},Pt={class:`mt-1 text-xs text-(--dashboard-text-soft)`},Ft={key:0,class:`whitespace-nowrap font-medium text-(--dashboard-accent)`};function It(e,t,n,r,i,o){return n.clickable?(w(),F(`li`,jt,[S(`button`,{type:`button`,class:a([`w-full rounded-xl border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 py-2.5 text-left transition hover:border-(--dashboard-border-strong) hover:bg-(--dashboard-panel)`,n.active?`border-(--dashboard-accent) bg-(--dashboard-accent-soft)`:void 0]),onClick:t[0]||=e=>r.emit(`select`)},[S(`div`,Mt,[S(`div`,Nt,[S(`p`,{class:a([`font-medium`,n.monoTitle?`truncate font-mono text-xs text-(--dashboard-text)`:`truncate text-(--dashboard-text)`])},c(n.title),3),S(`p`,Pt,c(n.meta),1)]),n.value?(w(),F(`span`,Ft,c(n.value),1)):N(``,!0)])],2)])):(w(),F(`li`,{key:0,class:a([`rounded-xl border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 py-2.5`,n.active?`border-(--dashboard-accent) bg-(--dashboard-accent-soft)`:void 0])},[S(`div`,Dt,[S(`div`,Ot,[S(`p`,{class:a([`font-medium`,n.monoTitle?`truncate font-mono text-xs text-(--dashboard-text)`:`truncate text-(--dashboard-text)`])},c(n.title),3),S(`p`,kt,c(n.meta),1)]),n.value?(w(),F(`span`,At,c(n.value),1)):N(``,!0)])],2))}var Lt=B(Et,[[`render`,It]]),Rt=n({__name:`AnalyzeFileExplorerPanel`,props:{largestFiles:{},activeLargestFileKey:{},selectedTreemapMeta:{}},emits:[`selectFile`],setup(e,{expose:t,emit:n}){t();let r=e,i=n,a=o(``),s=o(`all`),c=o(`size`),l=o(``),u=null,d=C(()=>{let e=new Set;for(let t of r.largestFiles)e.add(t.type);return[...e].sort((e,t)=>e.localeCompare(t))}),f=C(()=>{let e=a.value.trim().toLowerCase();return r.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:r.activeLargestFileKey===`${e.packageId}:${e.file}`||r.selectedTreemapMeta?.kind!==`package`&&r.selectedTreemapMeta?.packageLabel===e.packageLabel&&r.selectedTreemapMeta?.fileName===e.file,...St(e)}))}),p=C(()=>r.selectedTreemapMeta?Ct(r.selectedTreemapMeta):null),m=C(()=>Tt({files:f.value.map(e=>e.file),totalCount:r.largestFiles.length}));function h(e){l.value=e,u&&clearTimeout(u),u=setTimeout(()=>{l.value=``,u=null},1800)}async function g(){try{await U(m.value),h(`已复制`)}catch{h(`复制失败`)}}function _(){let e=new Blob([`${JSON.stringify(f.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),h(`已导出`)}T(()=>{u&&clearTimeout(u)});let v={props:r,emit:i,fileQuery:a,fileTypeFilter:s,fileSortMode:c,actionStatus:l,get actionStatusTimer(){return u},set actionStatusTimer(e){u=e},fileTypeOptions:d,largestFileItems:f,selectedItem:p,fileReportText:m,setActionStatus:h,copyFileReport:g,exportFileJson:_,AppCompactListItem:Lt,AppEmptyState:W};return Object.defineProperty(v,"__isScriptSetup",{enumerable:!1,value:!0}),v}}),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:`min-h-0 overflow-y-auto pr-1`},Xt={class:`grid gap-2 text-sm`};function Zt(e,n,i,a,o,s){return w(),F(`section`,zt,[S(`div`,Bt,[S(`div`,null,[n[3]||=S(`h3`,{class:`text-sm font-semibold text-(--dashboard-text)`},` Top Files `,-1),S(`p`,Vt,` 匹配 `+c(a.largestFileItems.length)+` / `+c(i.largestFiles.length)+` 个文件 `,1)]),n[4]||=S(`span`,{class:`text-[11px] uppercase tracking-[0.16em] text-(--dashboard-text-soft)`},`size`,-1)]),S(`div`,Ht,[S(`div`,Ut,[a.actionStatus?(w(),F(`span`,Wt,c(a.actionStatus),1)):N(``,!0),S(`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:a.largestFileItems.length===0,onClick:a.copyFileReport},` 复制文件 `,8,Gt),S(`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:a.largestFileItems.length===0,onClick:a.exportFileJson},` 导出 JSON `,8,Kt)]),t(S(`input`,{"onUpdate:modelValue":n[0]||=e=>a.fileQuery=e,class:`h-9 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 text-sm text-(--dashboard-text) outline-none transition placeholder:text-(--dashboard-text-soft) focus:border-(--dashboard-accent)`,placeholder:`搜索文件、包或来源`,type:`search`},null,512),[[M,a.fileQuery]]),S(`div`,qt,[t(S(`select`,{"onUpdate:modelValue":n[1]||=e=>a.fileTypeFilter=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)`},[n[5]||=S(`option`,{value:`all`},` 全部类型 `,-1),(w(!0),F(k,null,l(a.fileTypeOptions,e=>(w(),F(`option`,{key:e,value:e},c(e),9,Jt))),128))],512),[[E,a.fileTypeFilter]]),t(S(`select`,{"onUpdate:modelValue":n[2]||=e=>a.fileSortMode=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)`},[...n[6]||=[y(`<option value="size"> 按体积 </option><option value="compressed"> 按压缩后 </option><option value="delta"> 按增量 </option><option value="modules"> 按模块数 </option><option value="name"> 按名称 </option>`,5)]],512),[[E,a.fileSortMode]])])]),S(`div`,Yt,[a.selectedItem?(w(),_(a.AppCompactListItem,r({key:0,class:`mb-2`},a.selectedItem),null,16)):N(``,!0),S(`ol`,Xt,[a.largestFileItems.length===0?(w(),_(a.AppEmptyState,{key:0,as:`li`,compact:``},{default:I(()=>[...n[7]||=[P(` 没有匹配当前筛选条件的文件。 `,-1)]]),_:1})):N(``,!0),(w(!0),F(k,null,l(a.largestFileItems,e=>(w(),_(a.AppCompactListItem,{key:e.key,active:e.active,clickable:``,meta:e.meta,title:e.title,value:e.value,onSelect:t=>a.emit(`selectFile`,e.file)},null,8,[`active`,`meta`,`title`,`value`,`onSelect`]))),128))])])])}var Qt=B(Rt,[[`render`,Zt]]),$t=n({__name:`AnalyzeFileModulesPanel`,props:{selectedFileModules:{}},setup(e,{expose:t}){t();let n=e,r=o(``),i=o(`all`),a=o(`saving`),s=o(``),c=null;function l(e){return e.replaceAll(`|`,`\\|`).replaceAll(`
|
|
5
|
+
`,` `)}let u=C(()=>{let e=new Set;for(let t of n.selectedFileModules)e.add(t.sourceType);return[...e].sort((e,t)=>e.localeCompare(t))}),d=C(()=>{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=C(()=>d.value.map(e=>({key:e.key,title:e.source,meta:`${e.sourceType} · ${e.duplicatePackageCount>1?`${e.duplicatePackageCount} 个包复用`:`单包模块`} · 可节省 ${z(e.estimatedSavingBytes)}`,value:e.originalBytes&&e.originalBytes!==e.bytes?`${z(e.bytes)} / ${z(e.originalBytes)}`:z(e.bytes)}))),p=C(()=>[`# dashboard 文件模块明细`,``,`模块数量:${d.value.length} / ${n.selectedFileModules.length}`,``,`| 模块 | 来源 | 体积 | 原始体积 | 复用包 | 可节省 |`,`| --- | --- | ---: | ---: | ---: | ---: |`,...d.value.map(e=>[e.source,e.sourceType,z(e.bytes),e.originalBytes?z(e.originalBytes):`-`,String(e.duplicatePackageCount),z(e.estimatedSavingBytes)].map(l).join(` | `)).map(e=>`| ${e} |`),``].join(`
|
|
6
|
+
`));function m(e){s.value=e,c&&clearTimeout(c),c=setTimeout(()=>{s.value=``,c=null},1800)}async function h(){try{await U(p.value),m(`已复制`)}catch{m(`复制失败`)}}function g(){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),m(`已导出`)}T(()=>{c&&clearTimeout(c)});let _={props:n,moduleQuery:r,moduleSourceFilter:i,moduleSortMode:a,actionStatus:s,get actionStatusTimer(){return c},set actionStatusTimer(e){c=e},escapeMarkdownCell:l,moduleSourceOptions:u,filteredSelectedFileModules:d,selectedFileModuleItems:f,moduleReportText:p,setActionStatus:m,copyModuleReport:h,exportModuleJson:g,AppCompactListItem:Lt,AppEmptyState:W};return Object.defineProperty(_,"__isScriptSetup",{enumerable:!1,value:!0}),_}}),en={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)`},tn={class:`mb-2 flex items-center justify-between gap-3`},nn={class:`mt-1 text-xs text-(--dashboard-text-soft)`},rn={class:`mb-3 grid gap-2`},an={class:`flex flex-wrap items-center gap-2`},on={key:0,class:`text-xs font-medium text-(--dashboard-accent)`},sn=[`disabled`],cn=[`disabled`],ln={class:`grid grid-cols-2 gap-2`},un=[`value`],dn={class:`grid min-h-0 gap-2 overflow-y-auto pr-1 text-sm text-(--dashboard-text-muted)`};function fn(e,n,r,i,a,o){return w(),F(`section`,en,[S(`div`,tn,[S(`div`,null,[n[3]||=S(`h3`,{class:`text-sm font-semibold text-(--dashboard-text)`},` 文件详情 `,-1),S(`p`,nn,` 匹配 `+c(i.selectedFileModuleItems.length)+` / `+c(r.selectedFileModules.length)+` 个模块 `,1)]),n[4]||=S(`span`,{class:`text-[11px] uppercase tracking-[0.16em] text-(--dashboard-text-soft)`},`modules`,-1)]),S(`div`,rn,[S(`div`,an,[i.actionStatus?(w(),F(`span`,on,c(i.actionStatus),1)):N(``,!0),S(`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:i.selectedFileModuleItems.length===0,onClick:i.copyModuleReport},` 复制模块 `,8,sn),S(`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:i.selectedFileModuleItems.length===0,onClick:i.exportModuleJson},` 导出 JSON `,8,cn)]),t(S(`input`,{"onUpdate:modelValue":n[0]||=e=>i.moduleQuery=e,class:`h-9 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 text-sm text-(--dashboard-text) outline-none transition placeholder:text-(--dashboard-text-soft) focus:border-(--dashboard-accent)`,placeholder:`搜索模块路径或来源`,type:`search`},null,512),[[M,i.moduleQuery]]),S(`div`,ln,[t(S(`select`,{"onUpdate:modelValue":n[1]||=e=>i.moduleSourceFilter=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)`},[n[5]||=S(`option`,{value:`all`},` 全部来源 `,-1),(w(!0),F(k,null,l(i.moduleSourceOptions,e=>(w(),F(`option`,{key:e,value:e},c(e),9,un))),128))],512),[[E,i.moduleSourceFilter]]),t(S(`select`,{"onUpdate:modelValue":n[2]||=e=>i.moduleSortMode=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)`},[...n[6]||=[S(`option`,{value:`saving`},` 按可节省 `,-1),S(`option`,{value:`size`},` 按体积 `,-1),S(`option`,{value:`duplicates`},` 按复用包 `,-1),S(`option`,{value:`source`},` 按路径 `,-1)]],512),[[E,i.moduleSortMode]])])]),S(`ul`,dn,[i.selectedFileModuleItems.length===0?(w(),_(i.AppEmptyState,{key:0,as:`li`,compact:``},{default:I(()=>[...n[7]||=[P(` 选择一个 chunk 文件或调整筛选条件查看模块明细。 `,-1)]]),_:1})):N(``,!0),(w(!0),F(k,null,l(i.selectedFileModuleItems,e=>(w(),_(i.AppCompactListItem,{key:e.key,meta:e.meta,"mono-title":``,title:e.title,value:e.value},null,8,[`meta`,`title`,`value`]))),128))])])}var pn=B($t,[[`render`,fn]]),K={totalBytes:20*1024*1024,mainBytes:2*1024*1024,subPackageBytes:2*1024*1024,independentBytes:2*1024*1024,warningRatio:.85,source:`default`},q=1024*1024,mn=[{id:`wechat-default`,label:`平台上限`,detail:`按小程序常见包体限制和 85% 预警线评估。`,config:{totalBytes:20*q,mainBytes:2*q,subPackageBytes:2*q,independentBytes:2*q,warningRatio:.85}},{id:`release-buffer`,label:`发布缓冲`,detail:`保留更早预警空间,适合发版前巡检。`,config:{totalBytes:20*q,mainBytes:2*q,subPackageBytes:2*q,independentBytes:2*q,warningRatio:.75}},{id:`near-limit`,label:`临界排查`,detail:`只标记接近上限的包,适合聚焦最紧急项。`,config:{totalBytes:20*q,mainBytes:2*q,subPackageBytes:2*q,independentBytes:2*q,warningRatio:.95}}];function hn(e,t){return Number.isFinite(e)&&e>0?Math.round(e):t}function gn(e){return Number.isFinite(e)?Math.min(.99,Math.max(.01,e)):K.warningRatio}function _n(e,t){return e===`main`?t.mainBytes:e===`subPackage`?t.subPackageBytes:e===`independent`?t.independentBytes:0}function vn(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 J(e){return{totalBytes:hn(e?.totalBytes??K.totalBytes,K.totalBytes),mainBytes:hn(e?.mainBytes??K.mainBytes,K.mainBytes),subPackageBytes:hn(e?.subPackageBytes??K.subPackageBytes,K.subPackageBytes),independentBytes:hn(e?.independentBytes??K.independentBytes,K.independentBytes),warningRatio:gn(e?.warningRatio??K.warningRatio)}}function yn(e,t){return e.totalBytes===t.totalBytes&&e.mainBytes===t.mainBytes&&e.subPackageBytes===t.subPackageBytes&&e.independentBytes===t.independentBytes&&e.warningRatio===t.warningRatio}function bn(e){let t=J(e);return mn.find(e=>yn(J(e.config),t))}function xn(e){let t=J(e.config),n=[],r=vn({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=_n(r.type,t);if(!e)continue;let i=vn({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=J(e);return[`analyze: {`,` budgets: {`,` totalBytes: ${t.totalBytes},`,` mainBytes: ${t.mainBytes},`,` subPackageBytes: ${t.subPackageBytes},`,` independentBytes: ${t.independentBytes},`,` warningRatio: ${t.warningRatio},`,` },`,`},`].join(`
|
|
7
|
+
`)}var Cn=n({__name:`BudgetSandboxPanel`,props:{activeBudgetWarningId:{},budgetConfig:{},currentWarnings:{},packageInsights:{},totalBytes:{}},emits:[`selectBudgetWarning`],setup(e,{expose:t,emit:n}){t();let r=e,i=n,a=h({totalMiB:0,mainMiB:0,subPackageMiB:0,independentMiB:0,warningPercent:85}),o=h({text:``,timer:null});function s(e){return Number((e/1024/1024).toFixed(2))}function c(e){return Math.max(1,Math.round((Number.isFinite(e)?e:0)*1024*1024))}function l(){return J(r.budgetConfig??K)}function u(){let e=l();a.totalMiB=s(e.totalBytes),a.mainMiB=s(e.mainBytes),a.subPackageMiB=s(e.subPackageBytes),a.independentMiB=s(e.independentBytes),a.warningPercent=Math.round(e.warningRatio*100)}let d=C(()=>J({totalBytes:c(a.totalMiB),mainBytes:c(a.mainMiB),subPackageBytes:c(a.subPackageMiB),independentBytes:c(a.independentMiB),warningRatio:a.warningPercent/100})),p=C(()=>xn({totalBytes:r.totalBytes,packages:r.packageInsights,config:d.value})),m=C(()=>bn(d.value)?.id??null),g=C(()=>new Set(r.currentWarnings.map(e=>e.id))),_=C(()=>new Set(p.value.map(e=>e.id))),v=C(()=>p.value.filter(e=>!g.value.has(e.id)).length),y=C(()=>r.currentWarnings.filter(e=>!_.value.has(e.id)).length),b=C(()=>Sn(d.value)),x=C(()=>p.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:`${z(e.currentBytes)} / ${z(e.limitBytes)}`})));function S(e){o.text=e,o.timer&&clearTimeout(o.timer),o.timer=setTimeout(()=>{o.text=``,o.timer=null},1800)}function w(e){let t=mn.find(t=>t.id===e);if(!t)return;let n=J(t.config);a.totalMiB=s(n.totalBytes),a.mainMiB=s(n.mainBytes),a.subPackageMiB=s(n.subPackageBytes),a.independentMiB=s(n.independentBytes),a.warningPercent=Math.round(n.warningRatio*100),S(`已应用 ${t.label}`)}async function E(){try{await U(b.value),S(`已复制`)}catch{S(`复制失败`)}}f(()=>r.budgetConfig,u,{immediate:!0}),T(()=>{o.timer&&clearTimeout(o.timer)});let D={props:r,emit:i,draft:a,actionStatus:o,bytesToMiB:s,mibToBytes:c,getInitialConfig:l,resetDraft:u,sandboxConfig:d,projectedWarnings:p,activePresetId:m,currentWarningIds:g,projectedWarningIds:_,newWarningCount:v,resolvedWarningCount:y,snippetText:b,projectedWarningItems:x,setActionStatus:S,applyPreset:w,copyBudgetSnippet:E,get budgetSandboxPresets(){return mn},AppCompactListItem:Lt,AppEmptyState:W};return Object.defineProperty(D,"__isScriptSetup",{enumerable:!1,value:!0}),D}}),wn={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)`},Tn={class:`mb-2 flex items-center justify-between gap-3`},En={class:`mt-1 text-xs text-(--dashboard-text-soft)`},Dn={key:0,class:`text-xs font-medium text-(--dashboard-accent)`},On={class:`grid min-h-0 grid-rows-[auto_auto_auto_minmax(0,1fr)] gap-3 overflow-hidden`},kn={class:`grid grid-cols-3 gap-2`},An=[`onClick`],jn={class:`block truncate text-xs font-semibold`},Mn={class:`mt-1 line-clamp-2 block text-[11px] leading-4 opacity-80`},Nn={class:`grid grid-cols-2 gap-2`},Pn={class:`grid gap-1 text-[11px] text-(--dashboard-text-soft)`},Fn={class:`grid gap-1 text-[11px] text-(--dashboard-text-soft)`},In={class:`grid gap-1 text-[11px] text-(--dashboard-text-soft)`},Ln={class:`grid gap-1 text-[11px] text-(--dashboard-text-soft)`},Rn={class:`grid gap-2`},zn={class:`grid gap-1 text-[11px] text-(--dashboard-text-soft)`},Bn={class:`min-h-0 overflow-y-auto pr-1`},Vn={key:1,class:`grid content-start gap-2 text-sm text-(--dashboard-text-muted)`};function Hn(e,n,r,i,o,s){return w(),F(`section`,wn,[S(`div`,Tn,[S(`div`,null,[n[5]||=S(`h3`,{class:`text-sm font-semibold text-(--dashboard-text)`},` 预算沙盘 `,-1),S(`p`,En,` 预测 `+c(i.projectedWarnings.length)+` 个告警 · 新增 `+c(i.newWarningCount)+` · 解除 `+c(i.resolvedWarningCount),1)]),i.actionStatus.text?(w(),F(`span`,Dn,c(i.actionStatus.text),1)):N(``,!0)]),S(`div`,On,[S(`div`,kn,[(w(!0),F(k,null,l(i.budgetSandboxPresets,e=>(w(),F(`button`,{key:e.id,class:a([`rounded-md border px-2 py-2 text-left transition`,i.activePresetId===e.id?`border-(--dashboard-accent) bg-(--dashboard-accent-soft) text-(--dashboard-text)`:`border-(--dashboard-border) bg-(--dashboard-panel-muted) text-(--dashboard-text-soft) hover:border-(--dashboard-border-strong) hover:text-(--dashboard-text)`]),type:`button`,onClick:t=>i.applyPreset(e.id)},[S(`span`,jn,c(e.label),1),S(`span`,Mn,c(e.detail),1)],10,An))),128))]),S(`div`,Nn,[S(`label`,Pn,[n[6]||=P(` 总包 MB `,-1),t(S(`input`,{"onUpdate:modelValue":n[0]||=e=>i.draft.totalMiB=e,class:`h-8 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-2 text-sm text-(--dashboard-text) outline-none focus:border-(--dashboard-accent)`,min:`0.01`,step:`0.01`,type:`number`},null,512),[[M,i.draft.totalMiB,void 0,{number:!0}]])]),S(`label`,Fn,[n[7]||=P(` 主包 MB `,-1),t(S(`input`,{"onUpdate:modelValue":n[1]||=e=>i.draft.mainMiB=e,class:`h-8 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-2 text-sm text-(--dashboard-text) outline-none focus:border-(--dashboard-accent)`,min:`0.01`,step:`0.01`,type:`number`},null,512),[[M,i.draft.mainMiB,void 0,{number:!0}]])]),S(`label`,In,[n[8]||=P(` 分包 MB `,-1),t(S(`input`,{"onUpdate:modelValue":n[2]||=e=>i.draft.subPackageMiB=e,class:`h-8 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-2 text-sm text-(--dashboard-text) outline-none focus:border-(--dashboard-accent)`,min:`0.01`,step:`0.01`,type:`number`},null,512),[[M,i.draft.subPackageMiB,void 0,{number:!0}]])]),S(`label`,Ln,[n[9]||=P(` 独立分包 MB `,-1),t(S(`input`,{"onUpdate:modelValue":n[3]||=e=>i.draft.independentMiB=e,class:`h-8 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-2 text-sm text-(--dashboard-text) outline-none focus:border-(--dashboard-accent)`,min:`0.01`,step:`0.01`,type:`number`},null,512),[[M,i.draft.independentMiB,void 0,{number:!0}]])])]),S(`div`,Rn,[S(`label`,zn,[P(` 预警线 `+c(i.draft.warningPercent)+`% `,1),t(S(`input`,{"onUpdate:modelValue":n[4]||=e=>i.draft.warningPercent=e,class:`accent-(--dashboard-accent)`,max:`99`,min:`1`,step:`1`,type:`range`},null,512),[[M,i.draft.warningPercent,void 0,{number:!0}]])]),S(`div`,{class:`grid grid-cols-2 gap-2`},[S(`button`,{class:`h-8 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 text-xs text-(--dashboard-text-soft) transition hover:border-(--dashboard-border-strong) hover:text-(--dashboard-text)`,type:`button`,onClick:i.resetDraft},` 重置 `),S(`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:i.copyBudgetSnippet},` 复制配置 `)])]),S(`div`,Bn,[i.projectedWarningItems.length===0?(w(),_(i.AppEmptyState,{key:0,compact:``},{default:I(()=>[...n[10]||=[P(` 当前沙盘预算下没有预计告警。 `,-1)]]),_:1})):(w(),F(`ul`,Vn,[(w(!0),F(k,null,l(i.projectedWarningItems,e=>(w(),_(i.AppCompactListItem,{key:e.key,active:e.active,clickable:``,meta:e.meta,title:e.title,value:e.value,onSelect:t=>i.emit(`selectBudgetWarning`,e.warning)},null,8,[`active`,`meta`,`title`,`value`,`onSelect`]))),128))]))])])])}var Un=B(Cn,[[`render`,Hn]]),Wn=n({__name:`AnalyzeDetailsPanel`,props:{largestFiles:{},selectedFileModules:{},budgetWarnings:{},budgetConfig:{},packageInsights:{},totalBytes:{},activeBudgetWarningId:{},activeLargestFileKey:{},selectedTreemapMeta:{}},emits:[`selectFile`,`selectBudgetWarning`],setup(e,{expose:t,emit:n}){t();let r={emit:n,detailLayoutItems:[{id:`top-files`,label:`Top Files`,className:`min-h-[26rem] xl:min-h-0`},{id:`file-modules`,label:`文件详情`,className:`min-h-[24rem] xl:min-h-0`},{id:`budget`,label:`预算沙盘`,className:`min-h-[24rem] xl:min-h-0`}],AnalyzeDraggableGrid:bt,AnalyzeFileExplorerPanel:Qt,AnalyzeFileModulesPanel:pn,BudgetSandboxPanel:Un};return Object.defineProperty(r,"__isScriptSetup",{enumerable:!1,value:!0}),r}});function Gn(e,t,n,r,i,a){return w(),_(r.AnalyzeDraggableGrid,{"grid-class":`grid h-full min-h-0 gap-2 overflow-y-auto pr-1 xl:grid-cols-3 xl:overflow-hidden xl:pr-0`,items:r.detailLayoutItems,"storage-key":`weapp-vite:dashboard:analyze-layout:files`},{"top-files":I(()=>[p(r.AnalyzeFileExplorerPanel,{"largest-files":n.largestFiles,"active-largest-file-key":n.activeLargestFileKey,"selected-treemap-meta":n.selectedTreemapMeta,onSelectFile:t[0]||=e=>r.emit(`selectFile`,e)},null,8,[`largest-files`,`active-largest-file-key`,`selected-treemap-meta`])]),"file-modules":I(()=>[p(r.AnalyzeFileModulesPanel,{"selected-file-modules":n.selectedFileModules},null,8,[`selected-file-modules`])]),budget:I(()=>[p(r.BudgetSandboxPanel,{"active-budget-warning-id":n.activeBudgetWarningId,"budget-config":n.budgetConfig,"current-warnings":n.budgetWarnings,"package-insights":n.packageInsights,"total-bytes":n.totalBytes,onSelectBudgetWarning:t[1]||=e=>r.emit(`selectBudgetWarning`,e)},null,8,[`active-budget-warning-id`,`budget-config`,`current-warnings`,`package-insights`,`total-bytes`])]),_:1})}var Kn=B(Wn,[[`render`,Gn]]),Y={critical:4,warning:3,info:2,success:1};function qn(e){return e===`budget`?`预算`:e===`increment`?`增量`:e===`duplicate`?`重复`:`文件`}function Jn(e){return le(e===`critical`?{tone:`error`}:e===`warning`?{tone:`warning`}:e===`success`?{tone:`success`}:{tone:`info`})}function Yn(e){return e===`critical`?`必须处理`:e===`warning`?`建议处理`:e===`success`?`可查看`:`定位`}function Xn(e,t){return[...e].sort((e,n)=>t===`severity`?Y[n.tone]-Y[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||Y[n.tone]-Y[e.tone]||e.title.localeCompare(n.title))}function Zn(e){let t=o(``),n=o(`all`),r=o(`all`),i=o(`priority`),a=C(()=>{let t=new Set;for(let n of e.actions)t.add(n.tone);return[...t].sort((e,t)=>Y[t]-Y[e])}),s=C(()=>{let t=new Set;for(let n of e.actions)t.add(n.kind);return[...t].sort((e,t)=>qn(e).localeCompare(qn(t)))}),c=C(()=>{let a=t.value.trim().toLowerCase();return Xn(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 l(t){return e.queuedActionKeys.includes(t.key)}return{actionKindFilter:r,actionQuery:t,actionSortMode:i,actionToneFilter:n,filteredActions:c,getKindLabel:qn,getToneClassName:Jn,getToneLabel:Yn,isQueued:l,kindOptions:s,toneOptions:a}}var Qn=n({__name:`AppPanelHeader`,props:{iconName:{},title:{},description:{}},setup(e,{expose:t}){t();let n={iconClassName:ce(),DashboardIcon:R};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}}),$n={class:`flex items-center justify-between gap-3`},er={class:`flex items-center gap-2`},tr={class:`h-5 w-5`},nr={class:`text-lg font-semibold text-(--dashboard-text)`},rr={key:0,class:`text-xs text-(--dashboard-text-soft) md:text-sm`};function ir(e,t,n,r,i,o){return w(),F(`div`,$n,[S(`div`,er,[S(`span`,{class:a(r.iconClassName)},[S(`span`,tr,[p(r.DashboardIcon,{name:n.iconName},null,8,[`name`])])],2),S(`div`,null,[S(`h2`,nr,c(n.title),1),n.description?(w(),F(`p`,rr,c(n.description),1)):N(``,!0)])]),d(e.$slots,`meta`)])}var X=B(Qn,[[`render`,ir]]),ar=n({__name:`ActionCenterPanel`,props:{actions:{},activeKey:{},queuedActionKeys:{}},emits:[`addToQueue`,`copyReport`,`select`],setup(e,{expose:t,emit:n}){t();let r=e,i=n,{actionKindFilter:a,actionQuery:o,actionSortMode:s,actionToneFilter:c,filteredActions:l,getKindLabel:u,getToneClassName:d,getToneLabel:f,isQueued:p,kindOptions:m,toneOptions:h}=Zn(r),g={props:r,emit:i,actionKindFilter:a,actionQuery:o,actionSortMode:s,actionToneFilter:c,filteredActions:l,getKindLabel:u,getToneClassName:d,getToneLabel:f,isQueued:p,kindOptions:m,toneOptions:h,get surfaceStyles(){return L},AppEmptyState:W,AppPanelHeader:X,DashboardIcon:R};return Object.defineProperty(g,"__isScriptSetup",{enumerable:!1,value:!0}),g}}),or={class:`h-3.5 w-3.5`},sr={class:`mt-3 grid gap-2`},cr={class:`flex flex-wrap items-center justify-between gap-2`},lr={class:`text-xs text-(--dashboard-text-soft)`},ur={class:`grid grid-cols-3 gap-2`},dr=[`value`],fr=[`value`],pr={class:`mt-3 min-h-0 overflow-hidden`},mr={key:1,class:`grid h-full min-h-0 content-start gap-2 overflow-y-auto pr-1`},hr={class:`flex items-start justify-between gap-3`},gr=[`onClick`],_r={class:`flex min-w-0 items-center gap-2`},vr={class:`rounded-full bg-(--dashboard-accent-soft) px-2 py-0.5 text-[11px] text-(--dashboard-text-muted)`},yr={class:`truncate text-sm font-medium text-(--dashboard-text)`},br={class:`mt-1 truncate text-xs text-(--dashboard-text-soft)`},xr={key:0,class:`whitespace-nowrap text-sm font-medium text-(--dashboard-accent)`},Sr={class:`mt-2 flex items-center justify-end border-t border-(--dashboard-border) pt-2`},Cr=[`disabled`,`onClick`];function wr(e,n,r,i,o,s){return w(),F(`section`,{class:a([i.surfaceStyles({padding:`md`}),`grid h-full min-h-0 grid-rows-[auto_auto_minmax(0,1fr)] overflow-hidden`])},[p(i.AppPanelHeader,{"icon-name":`metric-health`,title:`问题中心`},{meta:I(()=>[S(`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=>i.emit(`copyReport`)},[S(`span`,or,[p(i.DashboardIcon,{name:`metric-copy`})]),n[5]||=P(` 复制 PR `,-1)])]),_:1}),S(`div`,sr,[S(`div`,cr,[S(`p`,lr,` 匹配 `+c(i.filteredActions.length)+` / `+c(r.actions.length)+` 个处理项 `,1),t(S(`input`,{"onUpdate:modelValue":n[1]||=e=>i.actionQuery=e,class:`h-9 w-full rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 text-sm text-(--dashboard-text) outline-none transition placeholder:text-(--dashboard-text-soft) focus:border-(--dashboard-accent) md:w-64`,placeholder:`搜索问题、建议或目标页`,type:`search`},null,512),[[M,i.actionQuery]])]),S(`div`,ur,[t(S(`select`,{"onUpdate:modelValue":n[2]||=e=>i.actionToneFilter=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)`},[n[6]||=S(`option`,{value:`all`},` 全部严重度 `,-1),(w(!0),F(k,null,l(i.toneOptions,e=>(w(),F(`option`,{key:e,value:e},c(i.getToneLabel(e)),9,dr))),128))],512),[[E,i.actionToneFilter]]),t(S(`select`,{"onUpdate:modelValue":n[3]||=e=>i.actionKindFilter=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)`},[n[7]||=S(`option`,{value:`all`},` 全部类型 `,-1),(w(!0),F(k,null,l(i.kindOptions,e=>(w(),F(`option`,{key:e,value:e},c(i.getKindLabel(e)),9,fr))),128))],512),[[E,i.actionKindFilter]]),t(S(`select`,{"onUpdate:modelValue":n[4]||=e=>i.actionSortMode=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)`},[...n[8]||=[S(`option`,{value:`priority`},` 按优先级 `,-1),S(`option`,{value:`severity`},` 按严重度 `,-1),S(`option`,{value:`title`},` 按标题 `,-1),S(`option`,{value:`value`},` 按数值 `,-1)]],512),[[E,i.actionSortMode]])])]),S(`div`,pr,[i.filteredActions.length===0?(w(),_(i.AppEmptyState,{key:0,compact:``},{default:I(()=>[...n[9]||=[P(` 暂无匹配当前筛选条件的事项。 `,-1)]]),_:1})):(w(),F(`ol`,mr,[(w(!0),F(k,null,l(i.filteredActions,e=>(w(),F(`li`,{key:e.key,class:`list-none`},[S(`article`,{class:a([`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)`,r.activeKey===e.key?`border-(--dashboard-accent) bg-(--dashboard-accent-soft)`:void 0])},[S(`div`,hr,[S(`button`,{type:`button`,class:`min-w-0 text-left`,onClick:t=>i.emit(`select`,e)},[S(`div`,_r,[S(`span`,{class:a(i.getToneClassName(e.tone))},c(i.getToneLabel(e.tone)),3),S(`span`,vr,c(i.getKindLabel(e.kind)),1),S(`p`,yr,c(e.title),1)]),S(`p`,br,c(e.meta),1)],8,gr),e.value?(w(),F(`span`,xr,c(e.value),1)):N(``,!0)]),S(`div`,Sr,[S(`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:i.isQueued(e),onClick:t=>i.emit(`addToQueue`,e)},c(i.isQueued(e)?`已在清单`:`加入清单`),9,Cr)])],2)]))),128))]))])],2)}var Tr=B(ar,[[`render`,wr]]),Er=n({__name:`AnalyzeWorkQueuePanel`,props:{items:{},activeId:{}},emits:[`clearCompleted`,`copy`,`remove`,`select`,`toggle`],setup(e,{expose:t,emit:n}){t();let r=e,i=n,a=o(`open`),s=C(()=>r.items.filter(e=>!e.completedAt).length),c=C(()=>r.items.length-s.value),l=C(()=>r.items.filter(e=>a.value===`open`?!e.completedAt:a.value===`done`?!!e.completedAt:!0));function u(e){return le(e===`critical`?{tone:`error`}:e===`warning`?{tone:`warning`}:e===`success`?{tone:`success`}:{tone:`info`})}let d={props:r,emit:i,queueFilter:a,openCount:s,doneCount:c,visibleItems:l,getToneClassName:u,get surfaceStyles(){return L},AppEmptyState:W,AppPanelHeader:X,DashboardIcon:R};return Object.defineProperty(d,"__isScriptSetup",{enumerable:!1,value:!0}),d}}),Dr=[`disabled`],Or={class:`h-3.5 w-3.5`},kr={class:`mt-3 grid gap-2`},Ar={class:`grid grid-cols-3 gap-2 text-center`},jr={class:`mt-3 min-h-0 overflow-hidden`},Mr={key:1,class:`grid h-full min-h-0 content-start gap-2 overflow-y-auto pr-1`},Nr={class:`flex items-start justify-between gap-2`},Pr=[`onClick`],Fr={class:`mt-2 truncate text-sm font-medium text-(--dashboard-text)`},Ir={class:`mt-1 line-clamp-2 text-xs leading-5 text-(--dashboard-text-soft)`},Lr={key:0,class:`shrink-0 text-xs font-medium text-(--dashboard-accent)`},Rr={class:`flex items-center justify-between gap-2 border-t border-(--dashboard-border) pt-2`},zr=[`onClick`],Br=[`onClick`];function Vr(e,t,n,r,i,o){return w(),F(`section`,{class:a([r.surfaceStyles({padding:`md`}),`grid h-full min-h-0 grid-rows-[auto_auto_minmax(0,1fr)] overflow-hidden`])},[p(r.AppPanelHeader,{"icon-name":`metric-bookmark`,title:`处理清单`},{meta:I(()=>[S(`button`,{type:`button`,class:`inline-flex items-center gap-1.5 rounded-full border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-2.5 py-1 text-[11px] text-(--dashboard-text-soft) transition hover:border-(--dashboard-border-strong) hover:text-(--dashboard-text)`,disabled:n.items.length===0,onClick:t[0]||=e=>r.emit(`copy`)},[S(`span`,Or,[p(r.DashboardIcon,{name:`metric-copy`})]),t[5]||=P(` 复制 `,-1)],8,Dr)]),_:1}),S(`div`,kr,[S(`div`,Ar,[S(`button`,{type:`button`,class:a([`rounded-md border px-2 py-2 text-xs transition`,r.queueFilter===`open`?`border-(--dashboard-accent) bg-(--dashboard-accent-soft) text-(--dashboard-text)`:`border-(--dashboard-border) bg-(--dashboard-panel-muted) text-(--dashboard-text-soft) hover:border-(--dashboard-border-strong)`]),onClick:t[1]||=e=>r.queueFilter=`open`},` 待处理 `+c(r.openCount),3),S(`button`,{type:`button`,class:a([`rounded-md border px-2 py-2 text-xs transition`,r.queueFilter===`done`?`border-(--dashboard-accent) bg-(--dashboard-accent-soft) text-(--dashboard-text)`:`border-(--dashboard-border) bg-(--dashboard-panel-muted) text-(--dashboard-text-soft) hover:border-(--dashboard-border-strong)`]),onClick:t[2]||=e=>r.queueFilter=`done`},` 已完成 `+c(r.doneCount),3),S(`button`,{type:`button`,class:a([`rounded-md border px-2 py-2 text-xs transition`,r.queueFilter===`all`?`border-(--dashboard-accent) bg-(--dashboard-accent-soft) text-(--dashboard-text)`:`border-(--dashboard-border) bg-(--dashboard-panel-muted) text-(--dashboard-text-soft) hover:border-(--dashboard-border-strong)`]),onClick:t[3]||=e=>r.queueFilter=`all`},` 全部 `+c(n.items.length),3)]),r.doneCount>0?(w(),F(`button`,{key:0,type:`button`,class:`h-8 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 text-xs text-(--dashboard-text-soft) transition hover:border-(--dashboard-border-strong) hover:text-(--dashboard-text)`,onClick:t[4]||=e=>r.emit(`clearCompleted`)},` 清空已完成 `)):N(``,!0)]),S(`div`,jr,[r.visibleItems.length===0?(w(),_(r.AppEmptyState,{key:0,compact:``},{default:I(()=>[...t[6]||=[P(` 当前没有处理事项。 `,-1)]]),_:1})):(w(),F(`ol`,Mr,[(w(!0),F(k,null,l(r.visibleItems,e=>(w(),F(`li`,{key:e.id,class:a([`grid gap-2 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-2.5 transition`,n.activeId===e.id?`border-(--dashboard-accent) bg-(--dashboard-accent-soft)`:void 0])},[S(`div`,Nr,[S(`button`,{type:`button`,class:`min-w-0 text-left`,onClick:t=>r.emit(`select`,e)},[S(`span`,{class:a(r.getToneClassName(e.tone))},c(e.completedAt?`完成`:`待处理`),3),S(`p`,Fr,c(e.title),1),S(`p`,Ir,c(e.meta),1)],8,Pr),e.value?(w(),F(`span`,Lr,c(e.value),1)):N(``,!0)]),S(`div`,Rr,[S(`button`,{type:`button`,class:`rounded-full border border-(--dashboard-border) px-2.5 py-1 text-[11px] text-(--dashboard-text-soft) transition hover:border-(--dashboard-border-strong) hover:text-(--dashboard-text)`,onClick:t=>r.emit(`toggle`,e.id)},c(e.completedAt?`重新打开`:`标记完成`),9,zr),S(`button`,{type:`button`,class:`rounded-full border border-(--dashboard-border) px-2.5 py-1 text-[11px] text-(--dashboard-text-soft) transition hover:border-rose-300 hover:text-rose-500`,onClick:t=>r.emit(`remove`,e.id)},` 移除 `,8,Br)])],2))),128))]))])],2)}var Hr=B(Er,[[`render`,Vr]]);function Ur(e){return e===0?`0 B`:`${e>0?`+`:`-`}${z(Math.abs(e))}`}function Wr(e,t){return e===0&&t===0?`stable`:t>0?`growing`:t<0?`shrinking`:`stable`}function Gr(e){return e===`growing`?`增长`:e===`shrinking`?`下降`:e===`stable`?`稳定`:`样本不足`}function Kr(e){return e===`growing`?`历史快照显示体积正在上升`:e===`shrinking`?`历史快照显示体积正在下降`:e===`stable`?`历史快照整体保持稳定`:`需要更多历史快照判断趋势`}function qr(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:Gr(`insufficient`),headline:Kr(`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=Wr(a,o);return{status:c,label:Gr(c),headline:Kr(c),description:`${t.length} 个历史样本 · ${n.label} 至 ${r.label}`,totalDeltaBytes:a,averageDeltaBytes:o,projectedNextBytes:s,metrics:[{label:`样本数`,value:t.length},{label:`累计变化`,value:Ur(a)},{label:`平均变化`,value:Ur(o)},{label:`预测下次`,value:z(s)}]}}function Jr(e=1800){let t=o(``),n=null;function r(r){t.value=r,n&&clearTimeout(n),n=setTimeout(()=>{t.value=``,n=null},e)}return T(()=>{n&&clearTimeout(n)}),{actionStatus:t,setActionStatus:r}}function Yr(e){return e===0?`无变化`:`${e>0?`+`:`-`}${z(Math.abs(e))}`}function Xr(e){return new Date(e.capturedAt).toLocaleString(`zh-CN`,{month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`,hour12:!1})}function Zr(e){return[e.id,e.label,e.capturedAt,e.packageCount,e.moduleCount,e.duplicateCount,e.totalBytes,e.compressedBytes].join(` `).toLowerCase()}function Qr(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 $r(e){let t=o(``),n=o(`capturedAt`),{actionStatus:r,setActionStatus:i}=Jr(),a=C(()=>e.snapshots.find(t=>t.id===e.baselineSnapshotId)??null),s=C(()=>e.snapshots[0]??null),c=C(()=>e.snapshots[1]??null),l=C(()=>qr(e.snapshots)),u=C(()=>!s.value||!a.value?``:Yr(s.value.totalBytes-a.value.totalBytes)),d=C(()=>!s.value||!c.value?``:Yr(s.value.totalBytes-c.value.totalBytes)),f=C(()=>e.comparisonMode===`baseline`?u.value||`未设置`:d.value||`上次快照`),p=C(()=>{let e=a.value;return e?[{label:`基线体积`,value:z(e.totalBytes)},{label:`压缩后`,value:z(e.compressedBytes)},{label:`模块数`,value:String(e.moduleCount)},{label:`复用模块`,value:String(e.duplicateCount)}]:[]}),m=C(()=>{let r=t.value.trim().toLowerCase();return Qr(e.snapshots.filter(e=>!r||Zr(e).includes(r)),n.value)}),h=C(()=>{let e=s.value,t=a.value,n=c.value;return[`# dashboard 历史基线`,``,e?`当前快照:${Xr(e)} · ${z(e.totalBytes)} · 压缩后 ${z(e.compressedBytes)}`:`当前快照:暂无`,t?`基线快照:${Xr(t)} · ${z(t.totalBytes)} · 压缩后 ${z(t.compressedBytes)}`:`基线快照:未设置`,n?`上次快照:${Xr(n)} · ${z(n.totalBytes)} · 压缩后 ${z(n.compressedBytes)}`:`上次快照:暂无`,`当前对比:${f.value}`,``,`| 时间 | 总体积 | 压缩后 | 包 | 模块 | 复用模块 |`,`| --- | ---: | ---: | ---: | ---: | ---: |`,...m.value.map(e=>`| ${Xr(e)} | ${z(e.totalBytes)} | ${z(e.compressedBytes)} | ${e.packageCount} | ${e.moduleCount} | ${e.duplicateCount} |`),``].join(`
|
|
8
|
+
`)});async function g(){try{await U(h.value),i(`已复制`)}catch{i(`复制失败`)}}function _(){let e=new Blob([`${JSON.stringify(m.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:f,baselineSnapshot:a,baselineSummaryItems:p,copyBaselineReport:g,exportFilteredSnapshots:_,filteredSnapshots:m,formatSnapshotDate:Xr,historyTrend:l,snapshotQuery:t,snapshotSortMode:n}}var ei=n({__name:`HistoryBaselineToolbar`,props:i({filteredCount:{},totalCount:{},actionStatus:{},disabled:{type:Boolean}},{modelValue:{required:!0},modelModifiers:{}}),emits:i([`copy`,`exportJson`],[`update:modelValue`]),setup(e,{expose:t,emit:n}){t();let r={emit:n,sortMode:s(e,`modelValue`)};return Object.defineProperty(r,"__isScriptSetup",{enumerable:!1,value:!0}),r}}),ti={class:`flex flex-wrap items-center justify-between gap-2`},ni={class:`text-xs text-(--dashboard-text-soft)`},ri={class:`flex flex-wrap items-center gap-2`},ii={key:0,class:`text-xs font-medium text-(--dashboard-accent)`},ai=[`disabled`],oi=[`disabled`];function si(e,n,r,i,a,o){return w(),F(`div`,ti,[S(`p`,ni,` 匹配 `+c(r.filteredCount)+` / `+c(r.totalCount)+` 个快照 `,1),S(`div`,ri,[r.actionStatus?(w(),F(`span`,ii,c(r.actionStatus),1)):N(``,!0),S(`button`,{type:`button`,class:`h-9 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 text-sm text-(--dashboard-text-soft) transition hover:border-(--dashboard-border-strong) hover:text-(--dashboard-accent) focus:border-(--dashboard-border-strong) focus:outline-none disabled:opacity-50`,disabled:r.disabled,onClick:n[0]||=e=>i.emit(`copy`)},` 复制基线 `,8,ai),S(`button`,{type:`button`,class:`h-9 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 text-sm text-(--dashboard-text-soft) transition hover:border-(--dashboard-border-strong) hover:text-(--dashboard-accent) focus:border-(--dashboard-border-strong) focus:outline-none disabled:opacity-50`,disabled:r.disabled,onClick:n[1]||=e=>i.emit(`exportJson`)},` 导出 JSON `,8,oi),t(S(`select`,{"onUpdate:modelValue":n[2]||=e=>i.sortMode=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)`},[...n[3]||=[y(`<option value="capturedAt"> 按时间 </option><option value="total"> 按体积 </option><option value="compressed"> 按压缩后 </option><option value="modules"> 按模块数 </option><option value="duplicates"> 按复用模块 </option>`,5)]],512),[[E,i.sortMode]])])])}var ci=B(ei,[[`render`,si]]),li=n({__name:`HistoryTrendPanel`,props:{trend:{}},setup(e,{expose:t}){t();function n(e){return e===`growing`?`border-amber-200 bg-amber-50 text-amber-700 dark:border-amber-500/25 dark:bg-amber-500/10 dark:text-amber-300`:e===`shrinking`?`border-emerald-200 bg-emerald-50 text-emerald-700 dark:border-emerald-500/25 dark:bg-emerald-500/10 dark:text-emerald-300`:e===`stable`?`border-sky-200 bg-sky-50 text-sky-700 dark:border-sky-500/25 dark:bg-sky-500/10 dark:text-sky-300`:`border-(--dashboard-border) bg-(--dashboard-panel-muted) text-(--dashboard-text-muted)`}let r={getStatusClassName:n,AppMetricTile:G};return Object.defineProperty(r,"__isScriptSetup",{enumerable:!1,value:!0}),r}}),ui={class:`rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-3`},di={class:`flex items-start justify-between gap-3`},fi={class:`min-w-0`},pi={class:`mt-2 text-sm font-semibold text-(--dashboard-text)`},mi={class:`mt-1 text-xs leading-5 text-(--dashboard-text-soft)`},hi={class:`mt-3 grid grid-cols-2 gap-2`};function gi(e,t,n,i,o,s){return w(),F(`section`,ui,[S(`div`,di,[S(`div`,fi,[S(`span`,{class:a([`inline-flex rounded-full border px-2 py-0.5 text-[11px] font-medium`,i.getStatusClassName(n.trend.status)])},c(n.trend.label),3),S(`p`,pi,c(n.trend.headline),1),S(`p`,mi,c(n.trend.description),1)])]),S(`div`,hi,[(w(!0),F(k,null,l(n.trend.metrics,e=>(w(),_(i.AppMetricTile,r({key:e.label},{ref_for:!0},e),null,16))),128))])])}var _i=B(li,[[`render`,gi]]),vi=n({__name:`HistoryBaselinePanel`,props:{snapshots:{},baselineSnapshotId:{},comparisonMode:{}},emits:[`setBaseline`,`setComparisonMode`],setup(e,{expose:t,emit:n}){t();let r=e,i=n,{actionStatus:a,activeComparisonLabel:o,baselineSummaryItems:s,copyBaselineReport:c,exportFilteredSnapshots:l,filteredSnapshots:u,formatSnapshotDate:d,historyTrend:f,snapshotQuery:p,snapshotSortMode:m}=$r(r),h={props:r,emit:i,actionStatus:a,activeComparisonLabel:o,baselineSummaryItems:s,copyBaselineReport:c,exportFilteredSnapshots:l,filteredSnapshots:u,formatSnapshotDate:d,historyTrend:f,snapshotQuery:p,snapshotSortMode:m,get formatBytes(){return z},get pillButtonStyles(){return H},get surfaceStyles(){return L},AppEmptyState:W,AppPanelHeader:X,HistoryBaselineToolbar:ci,HistoryTrendPanel:_i};return Object.defineProperty(h,"__isScriptSetup",{enumerable:!1,value:!0}),h}}),yi={class:`flex gap-1.5`},bi=[`disabled`],xi={class:`mt-3 grid min-h-0 grid-rows-[auto_auto_auto_minmax(0,1fr)] gap-2 overflow-hidden`},Si={class:`rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 py-2`},Ci={class:`flex items-center justify-between gap-3`},wi={class:`text-sm font-medium text-(--dashboard-accent)`},Ti={key:0,class:`mt-3 grid grid-cols-2 gap-2`},Ei={class:`text-[11px] text-(--dashboard-text-soft)`},Di={class:`mt-1 text-sm font-semibold text-(--dashboard-text)`},Oi={class:`grid gap-2`},ki={key:1,class:`grid min-h-0 gap-1.5 overflow-y-auto pr-1`},Ai=[`onClick`],ji={class:`flex items-start justify-between gap-3`},Mi={class:`min-w-0`},Ni={class:`truncate text-sm font-medium text-(--dashboard-text)`},Pi={class:`mt-0.5 truncate text-xs text-(--dashboard-text-soft)`},Fi={class:`text-right`},Ii={class:`whitespace-nowrap text-sm font-medium text-(--dashboard-accent)`},Li={class:`mt-0.5 whitespace-nowrap text-xs text-(--dashboard-text-soft)`};function Ri(e,n,r,i,o,s){return w(),F(`section`,{class:a([i.surfaceStyles({padding:`md`}),`grid h-full min-h-0 grid-rows-[auto_minmax(0,1fr)] overflow-hidden`])},[p(i.AppPanelHeader,{"icon-name":`metric-history`,title:`历史基线`},{meta:I(()=>[S(`div`,yi,[S(`button`,{type:`button`,class:a(i.pillButtonStyles({kind:`badge`,active:r.comparisonMode===`previous`})),onClick:n[0]||=e=>i.emit(`setComparisonMode`,`previous`)},` 上次 `,2),S(`button`,{type:`button`,class:a(i.pillButtonStyles({kind:`badge`,active:r.comparisonMode===`baseline`})),disabled:!r.baselineSnapshotId,onClick:n[1]||=e=>i.emit(`setComparisonMode`,`baseline`)},` Baseline `,10,bi)])]),_:1}),S(`div`,xi,[S(`div`,Si,[S(`div`,Ci,[n[4]||=S(`p`,{class:`text-xs text-(--dashboard-text-soft)`},` 当前对比 `,-1),S(`p`,wi,c(i.activeComparisonLabel),1)]),i.baselineSummaryItems.length?(w(),F(`div`,Ti,[(w(!0),F(k,null,l(i.baselineSummaryItems,e=>(w(),F(`div`,{key:e.label,class:`rounded-md border border-(--dashboard-border) bg-(--dashboard-panel) px-2.5 py-2`},[S(`p`,Ei,c(e.label),1),S(`p`,Di,c(e.value),1)]))),128))])):N(``,!0)]),p(i.HistoryTrendPanel,{trend:i.historyTrend},null,8,[`trend`]),S(`div`,Oi,[p(i.HistoryBaselineToolbar,{modelValue:i.snapshotSortMode,"onUpdate:modelValue":n[2]||=e=>i.snapshotSortMode=e,"action-status":i.actionStatus,disabled:i.filteredSnapshots.length===0,"filtered-count":i.filteredSnapshots.length,"total-count":r.snapshots.length,onCopy:i.copyBaselineReport,onExportJson:i.exportFilteredSnapshots},null,8,[`modelValue`,`action-status`,`disabled`,`filtered-count`,`total-count`,`onCopy`,`onExportJson`]),t(S(`input`,{"onUpdate:modelValue":n[3]||=e=>i.snapshotQuery=e,class:`h-9 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 text-sm text-(--dashboard-text) outline-none transition placeholder:text-(--dashboard-text-soft) focus:border-(--dashboard-accent)`,placeholder:`搜索时间、标签或快照指标`,type:`search`},null,512),[[M,i.snapshotQuery]])]),i.filteredSnapshots.length===0?(w(),_(i.AppEmptyState,{key:0,compact:``},{default:I(()=>[...n[5]||=[P(` 暂无历史快照。 `,-1)]]),_:1})):(w(),F(`ol`,ki,[(w(!0),F(k,null,l(i.filteredSnapshots,e=>(w(),F(`li`,{key:e.id,class:`list-none`},[S(`button`,{type:`button`,class:a([`w-full rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 py-2 text-left transition hover:border-(--dashboard-border-strong) hover:bg-(--dashboard-panel)`,e.id===r.baselineSnapshotId?`border-(--dashboard-accent) bg-(--dashboard-accent-soft)`:void 0]),onClick:t=>i.emit(`setBaseline`,e.id)},[S(`div`,ji,[S(`div`,Mi,[S(`p`,Ni,c(i.formatSnapshotDate(e)),1),S(`p`,Pi,c(e.packageCount)+` 包 · `+c(e.moduleCount)+` 模块 · 复用 `+c(e.duplicateCount),1)]),S(`div`,Fi,[S(`p`,Ii,c(i.formatBytes(e.totalBytes)),1),S(`p`,Li,c(e.id===r.baselineSnapshotId?`baseline`:i.formatBytes(e.compressedBytes)),1)])])],10,Ai)]))),128))]))])],2)}var zi=B(vi,[[`render`,Ri]]),Bi=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,{expose:t,emit:n}){t();let r={emit:n,ActionCenterPanel:Tr,AnalyzeDraggableGrid:bt,AnalyzeWorkQueuePanel:Hr,HistoryBaselinePanel:zi};return Object.defineProperty(r,"__isScriptSetup",{enumerable:!1,value:!0}),r}});function Vi(e,t,n,r,i,a){return w(),_(r.AnalyzeDraggableGrid,{"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:n.layoutItems,"storage-key":`weapp-vite:dashboard:analyze-layout:diagnostics`},{actions:I(()=>[p(r.ActionCenterPanel,{actions:n.actionItems,"active-key":n.selectedActionKey,"queued-action-keys":n.queuedActionKeys,onAddToQueue:t[0]||=e=>r.emit(`addActionToQueue`,e),onCopyReport:t[1]||=e=>r.emit(`copyPr`),onSelect:t[2]||=e=>r.emit(`selectAction`,e)},null,8,[`actions`,`active-key`,`queued-action-keys`])]),"work-queue":I(()=>[p(r.AnalyzeWorkQueuePanel,{items:n.workQueueItems,"active-id":n.activeWorkQueueItemId,onClearCompleted:t[3]||=e=>r.emit(`clearCompletedWorkQueue`),onCopy:t[4]||=e=>r.emit(`copyWorkQueue`),onRemove:t[5]||=e=>r.emit(`removeWorkQueueItem`,e),onSelect:t[6]||=e=>r.emit(`selectWorkQueueItem`,e),onToggle:t[7]||=e=>r.emit(`toggleWorkQueueItem`,e)},null,8,[`items`,`active-id`])]),history:I(()=>[p(r.HistoryBaselinePanel,{snapshots:n.historySnapshots,"baseline-snapshot-id":n.baselineSnapshotId,"comparison-mode":n.comparisonMode,onSetBaseline:t[8]||=e=>r.emit(`setBaseline`,e),onSetComparisonMode:t[9]||=e=>r.emit(`setComparisonMode`,e)},null,8,[`snapshots`,`baseline-snapshot-id`,`comparison-mode`])]),_:1},8,[`items`])}var Hi=B(Bi,[[`render`,Vi]]);function Ui(e){return Math.max(0,Math.min(100,Math.round(e)))}function Wi(e){return e===`blocked`?`Blocked`:e===`review`?`Review`:`Ready`}function Gi(e){return e===`blocked`?`发布前需要先处理阻断项`:e===`review`?`建议评审后再发布`:`当前分析未发现阻断项`}function Ki(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},当前 ${z(e.largestPackage.totalBytes)}。`),t.length===0&&e.largestFile&&t.push(`持续关注最大文件 ${e.largestFile.file},当前 ${z(e.largestFile.size)}。`),t}function qi(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 Ji(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=Ui(100-t.length*28-n.length*12),s=[{label:`阻断项`,value:t.length},{label:`建议项`,value:n.length},{label:`最大包`,value:i?z(i.totalBytes):`—`},{label:`最大文件`,value:r?z(r.size):`—`}],c={status:a,label:Wi(a),score:o,headline:Gi(a),description:`${e.actionItems.length} 个候选事项 · ${e.packageInsights.length} 个包 · ${e.largestFiles.length} 个文件样本`,metrics:s,recommendations:Ki({criticalActions:t,warningActions:n,largestFile:r,largestPackage:i})};return{...c,report:qi(c)}}function Yi(e){let t=C(()=>e.actionItems.slice(0,4)),n=C(()=>e.largestFiles.slice(0,5)),r=C(()=>e.packageInsights.reduce((e,t)=>e+t.totalBytes,0)),i=C(()=>Ji({actionItems:e.actionItems,largestFiles:e.largestFiles,packageInsights:e.packageInsights})),{actionStatus:a,setActionStatus:o}=Jr(),s=C(()=>e.packageInsights.slice(0,5).map(e=>{let t=r.value>0?e.totalBytes/r.value*100:0;return{...e,typeLabel:V(e.type),sizeLabel:z(e.totalBytes),compressedLabel:`${e.compressedSizeSource===`real`?`Brotli`:`估算`} ${z(e.compressedBytes)}`,sharePercent:t,shareStyle:{width:`${Math.max(t,2).toFixed(1)}%`}}}));async function c(){try{await U(i.value.report),o(`已复制`)}catch{o(`复制失败`)}}return{copyReleaseGateReport:c,gateCopyStatus:a,getToneClassName:Jn,getToneLabel:Yn,packageOverviewItems:s,releaseGate:i,visibleActions:t,visibleLargestFiles:n}}var Xi=n({__name:`DashboardMetricGrid`,props:{cards:{},packageTypeSummary:{},compact:{type:Boolean}},setup(e,{expose:t}){t();let n=e;function r(e){return[L({padding:n.compact?`sm`:`md`}),`min-w-0`,e.wide?`xl:col-span-2`:`xl:col-span-1`]}let i={props:n,getMetricCardClassName:r,metricCardRows:C(()=>n.cards.map(e=>({...e,packageTypeTags:e.label===`总产物体积`?n.packageTypeSummary.map(e=>({label:V(e.label),value:String(e.value)})):[]}))),get iconFrameStyles(){return ce},DashboardIcon:R};return Object.defineProperty(i,"__isScriptSetup",{enumerable:!1,value:!0}),i}}),Zi={class:`min-w-0`},Qi={key:0,class:`mt-1 text-xs font-medium text-(--dashboard-accent)`},$i={key:0,class:`mt-3 flex flex-wrap gap-1.5`};function ea(e,t,n,r,i,o){return w(),F(`section`,{class:a(n.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`)},[(w(!0),F(k,null,l(r.metricCardRows,e=>(w(),F(`article`,{key:e.label,class:a(r.getMetricCardClassName(e))},[S(`div`,{class:a(n.compact?`relative h-full min-w-0 pr-8`:`flex h-full min-w-0 items-start justify-between gap-2`)},[S(`div`,Zi,[S(`p`,{class:a(n.compact?`whitespace-nowrap text-[11px] leading-4 text-(--dashboard-text-soft)`:`text-[11px] uppercase tracking-[0.22em] text-(--dashboard-text-soft)`)},c(e.label),3),S(`p`,{class:a(n.compact?`mt-1 text-xl font-semibold leading-6`:`mt-2 text-2xl font-semibold md:text-[1.65rem]`)},c(e.value),3),e.detail?(w(),F(`p`,Qi,c(e.detail),1)):N(``,!0)]),S(`span`,{class:a([r.iconFrameStyles({size:n.compact?`sm`:`lg`}),n.compact?`absolute right-0 top-0`:void 0])},[S(`span`,{class:a(n.compact?`h-4.5 w-4.5`:`h-5 w-5`)},[p(r.DashboardIcon,{name:e.iconName},null,8,[`name`])],2)],2)],2),e.packageTypeTags.length>0&&!n.compact?(w(),F(`div`,$i,[(w(!0),F(k,null,l(e.packageTypeTags,e=>(w(),F(`span`,{key:e.label,class:`rounded-full border border-(--dashboard-border-strong) bg-(--dashboard-accent-soft) px-3 py-1 text-xs text-(--dashboard-text)`},c(e.label)+` `+c(e.value),1))),128))])):N(``,!0)],2))),128))],2)}var ta=B(Xi,[[`render`,ea]]),na=n({__name:`ReleaseGatePanel`,props:{gate:{},copyStatus:{}},emits:[`copy`],setup(e,{expose:t,emit:n}){t();let r=n;function i(e){return e===`blocked`?`border-rose-200 bg-rose-100 text-rose-700 dark:border-rose-500/30 dark:bg-rose-500/12 dark:text-rose-300`:e===`review`?`border-amber-200 bg-amber-100 text-amber-700 dark:border-amber-500/30 dark:bg-amber-500/12 dark:text-amber-300`:`border-emerald-200 bg-emerald-100 text-emerald-700 dark:border-emerald-500/30 dark:bg-emerald-500/12 dark:text-emerald-300`}let a={emit:r,getStatusClassName:i,AppMetricTile:G,AppPanelHeader:X,DashboardIcon:R};return Object.defineProperty(a,"__isScriptSetup",{enumerable:!1,value:!0}),a}}),ra={class:`rounded-lg border border-(--dashboard-border) bg-(--dashboard-panel) p-4 shadow-(--dashboard-shadow)`},ia={class:`flex items-center gap-2`},aa={key:0,class:`text-xs font-medium text-(--dashboard-accent)`},oa={class:`h-3.5 w-3.5`},sa={class:`mt-3 grid gap-3 xl:grid-cols-[minmax(0,0.7fr)_minmax(0,1fr)]`},ca={class:`rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-3`},la={class:`flex items-start justify-between gap-3`},ua={class:`mt-3 text-lg font-semibold text-(--dashboard-text)`},da={class:`mt-1 text-xs leading-5 text-(--dashboard-text-soft)`},fa={class:`shrink-0 text-right`},pa={class:`mt-1 text-3xl font-semibold text-(--dashboard-accent)`},ma={class:`grid gap-3 md:grid-cols-[minmax(0,0.9fr)_minmax(0,1fr)]`},ha={class:`grid grid-cols-2 gap-2`},ga={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)`},_a={key:0};function va(e,t,n,i,o,s){return w(),F(`section`,ra,[p(i.AppPanelHeader,{"icon-name":`metric-quality`,title:`发布门禁`},{meta:I(()=>[S(`div`,ia,[n.copyStatus?(w(),F(`span`,aa,c(n.copyStatus),1)):N(``,!0),S(`button`,{type:`button`,class:`inline-flex items-center gap-1.5 rounded-full border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-2.5 py-1 text-[11px] text-(--dashboard-text-soft) transition hover:border-(--dashboard-border-strong) hover:text-(--dashboard-text)`,onClick:t[0]||=e=>i.emit(`copy`)},[S(`span`,oa,[p(i.DashboardIcon,{name:`metric-copy`})]),t[1]||=P(` 复制门禁 `,-1)])])]),_:1}),S(`div`,sa,[S(`div`,ca,[S(`div`,la,[S(`div`,null,[S(`span`,{class:a([`inline-flex rounded-full border px-2.5 py-1 text-[11px] font-medium uppercase tracking-[0.16em]`,i.getStatusClassName(n.gate.status)])},c(n.gate.label),3),S(`p`,ua,c(n.gate.headline),1),S(`p`,da,c(n.gate.description),1)]),S(`div`,fa,[t[2]||=S(`p`,{class:`text-[11px] uppercase tracking-[0.18em] text-(--dashboard-text-soft)`},` score `,-1),S(`p`,pa,c(n.gate.score),1)])])]),S(`div`,ma,[S(`div`,ha,[(w(!0),F(k,null,l(n.gate.metrics,e=>(w(),_(i.AppMetricTile,r({key:e.label},{ref_for:!0},e),null,16))),128))]),S(`ol`,ga,[(w(!0),F(k,null,l(n.gate.recommendations,e=>(w(),F(`li`,{key:e,class:`line-clamp-2`},c(e),1))),128)),n.gate.recommendations.length===0?(w(),F(`li`,_a,` 当前没有需要立即处理的事项。 `)):N(``,!0)])])])])}var ya=B(na,[[`render`,va]]),ba=n({__name:`AnalyzeOverviewPanel`,props:{actionItems:{},cards:{},largestFiles:{},packageInsights:{},packageTypeSummary:{}},emits:[`copyReport`,`selectAction`,`selectFile`,`selectPackage`],setup(e,{expose:t,emit:n}){t();let r=e,i=n,{copyReleaseGateReport:a,gateCopyStatus:o,getToneClassName:s,getToneLabel:c,packageOverviewItems:l,releaseGate:u,visibleActions:d,visibleLargestFiles:f}=Yi(r),p={props:r,emit:i,copyReleaseGateReport:a,gateCopyStatus:o,getToneClassName:s,getToneLabel:c,packageOverviewItems:l,releaseGate:u,visibleActions:d,visibleLargestFiles:f,get formatBytes(){return z},get formatPackageType(){return V},get surfaceStyles(){return L},AppEmptyState:W,AppPanelHeader:X,DashboardIcon:R,DashboardMetricGrid:ta,ReleaseGatePanel:ya};return Object.defineProperty(p,"__isScriptSetup",{enumerable:!1,value:!0}),p}}),xa={class:`grid h-full min-h-0 grid-rows-[auto_auto_minmax(0,1fr)] gap-2 overflow-hidden`},Sa={class:`grid min-h-0 gap-2 overflow-hidden xl:grid-cols-[minmax(0,0.95fr)_minmax(0,0.85fr)_minmax(0,0.9fr)]`},Ca={class:`h-3.5 w-3.5`},wa={class:`mt-3 min-h-0 flex-1 overflow-hidden`},Ta={key:1,class:`grid h-full min-h-0 gap-2 overflow-y-auto pr-1`},Ea=[`onClick`],Da={class:`flex min-w-0 items-start justify-between gap-3`},Oa={class:`min-w-0`},ka={class:`flex min-w-0 items-center gap-2`},Aa={class:`truncate text-sm font-medium text-(--dashboard-text)`},ja={class:`mt-1 truncate text-xs text-(--dashboard-text-soft)`},Ma={key:0,class:`shrink-0 whitespace-nowrap text-sm font-semibold text-(--dashboard-accent)`},Na={class:`mt-3 grid min-h-0 gap-2 overflow-y-auto pr-1`},Pa=[`onClick`],Fa={class:`grid min-w-0 grid-cols-[minmax(0,1fr)_auto] items-start gap-3`},Ia={class:`min-w-0`},La={class:`truncate font-mono text-xs font-semibold text-(--dashboard-text)`},Ra={class:`mt-1 truncate text-xs text-(--dashboard-text-soft)`},za={class:`shrink-0 text-right`},Ba={class:`text-sm font-semibold leading-5 text-(--dashboard-accent)`},Va={class:`text-[11px] leading-4 text-(--dashboard-text-soft)`},Ha={class:`mt-3 grid min-h-0 gap-2 overflow-y-auto pr-1`},Ua=[`onClick`],Wa={class:`flex items-start justify-between gap-3`},Ga={class:`min-w-0`},Ka={class:`truncate text-sm font-medium text-(--dashboard-text)`},qa={class:`mt-1 text-xs text-(--dashboard-text-soft)`},Ja={class:`shrink-0 text-right`},Ya={class:`text-sm font-semibold text-(--dashboard-text)`},Xa={class:`text-[11px] text-(--dashboard-text-soft)`},Za={class:`mt-2 h-1.5 overflow-hidden rounded-full bg-(--dashboard-accent-soft)`};function Qa(e,t,n,r,i,o){return w(),F(`section`,xa,[p(r.DashboardMetricGrid,{compact:``,cards:n.cards,"package-type-summary":n.packageTypeSummary},null,8,[`cards`,`package-type-summary`]),p(r.ReleaseGatePanel,{gate:r.releaseGate,"copy-status":r.gateCopyStatus,onCopy:r.copyReleaseGateReport},null,8,[`gate`,`copy-status`,`onCopy`]),S(`div`,Sa,[S(`section`,{class:a([r.surfaceStyles({padding:`md`}),`min-h-0 overflow-hidden`])},[p(r.AppPanelHeader,{"icon-name":`metric-health`,title:`处理队列`},{meta:I(()=>[S(`button`,{type:`button`,class:`inline-flex items-center gap-1.5 rounded-full border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-2.5 py-1 text-[11px] text-(--dashboard-text-soft) transition hover:border-(--dashboard-border-strong) hover:text-(--dashboard-text)`,onClick:t[0]||=e=>r.emit(`copyReport`)},[S(`span`,Ca,[p(r.DashboardIcon,{name:`metric-copy`})]),t[1]||=P(` 复制 PR `,-1)])]),_:1}),S(`div`,wa,[r.visibleActions.length===0?(w(),_(r.AppEmptyState,{key:0,compact:``},{default:I(()=>[...t[2]||=[P(` 当前没有需要立即处理的事项。 `,-1)]]),_:1})):(w(),F(`ol`,Ta,[(w(!0),F(k,null,l(r.visibleActions,e=>(w(),F(`li`,{key:e.key,class:`list-none`},[S(`button`,{type:`button`,class:`w-full rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 py-2.5 text-left transition hover:border-(--dashboard-border-strong) hover:bg-(--dashboard-panel)`,onClick:t=>r.emit(`selectAction`,e)},[S(`div`,Da,[S(`div`,Oa,[S(`div`,ka,[S(`span`,{class:a(r.getToneClassName(e.tone))},c(r.getToneLabel(e.tone)),3),S(`p`,Aa,c(e.title),1)]),S(`p`,ja,c(e.meta),1)]),e.value?(w(),F(`span`,Ma,c(e.value),1)):N(``,!0)])],8,Ea)]))),128))]))])],2),S(`section`,{class:a([r.surfaceStyles({padding:`md`}),`min-h-0 overflow-hidden`])},[p(r.AppPanelHeader,{"icon-name":`top-files`,title:`Top Files`}),S(`ol`,Na,[(w(!0),F(k,null,l(r.visibleLargestFiles,e=>(w(),F(`li`,{key:`${e.packageId}:${e.file}`,class:`list-none`},[S(`button`,{type:`button`,class:`w-full rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 py-2.5 text-left transition hover:border-(--dashboard-border-strong) hover:bg-(--dashboard-panel)`,onClick:t=>r.emit(`selectFile`,e)},[S(`div`,Fa,[S(`div`,Ia,[S(`p`,La,c(e.file),1),S(`p`,Ra,c(e.packageLabel)+` · `+c(r.formatPackageType(e.packageType))+` · `+c(e.type)+` · `+c(e.moduleCount)+` 模块 `,1)]),S(`div`,za,[S(`p`,Ba,c(r.formatBytes(e.size)),1),S(`p`,Va,c(r.formatBytes(e.compressedSize)),1)])])],8,Pa)]))),128))])],2),S(`section`,{class:a([r.surfaceStyles({padding:`md`}),`min-h-0 overflow-hidden`])},[p(r.AppPanelHeader,{"icon-name":`tab-packages`,title:`包体分布`}),S(`ol`,Ha,[(w(!0),F(k,null,l(r.packageOverviewItems,e=>(w(),F(`li`,{key:e.id,class:`list-none`},[S(`button`,{type:`button`,class:`w-full rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 py-2.5 text-left transition hover:border-(--dashboard-border-strong) hover:bg-(--dashboard-panel)`,onClick:t=>r.emit(`selectPackage`,e)},[S(`div`,Wa,[S(`div`,Ga,[S(`p`,Ka,c(e.label),1),S(`p`,qa,c(e.typeLabel)+` · `+c(e.fileCount)+` 产物 · `+c(e.moduleCount)+` 模块 `,1)]),S(`div`,Ja,[S(`p`,Ya,c(e.sizeLabel),1),S(`p`,Xa,c(e.compressedLabel),1)])]),S(`div`,Za,[S(`div`,{class:`h-full rounded-full bg-(--dashboard-accent)`,style:A(e.shareStyle)},null,4)])],8,Ua)]))),128))])],2)])])}var $a=B(ba,[[`render`,Qa]]);function eo(e){return e===`high`?`高`:e===`medium`?`中`:`低`}function to(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} 个包复用 · 单份 ${z(e.bytes)} · ${e.advice}`,impactBytes:e.estimatedSavingBytes,effort:t,priority:Math.round(e.estimatedSavingBytes*n+e.packageCount*128),action:t===`high`?`先确认独立分包隔离要求,再评估公共入口。`:`优先抽到共享入口或调整引用边界。`}}function no(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} · +${z(e.deltaBytes)}`,impactBytes:e.deltaBytes,effort:t,priority:Math.round(e.deltaBytes*n),action:e.advice}}function ro(e){let t=e.moduleCount>12?`medium`:`low`;return{id:`file:${e.packageId}:${e.file}`,title:`检查大文件边界 ${e.file}`,detail:`${e.packageLabel} · ${z(e.size)} · ${e.moduleCount} 个模块`,impactBytes:e.size,effort:t,priority:Math.round(e.size*.42+e.moduleCount*96),action:e.isEntry?`确认入口依赖是否可懒加载或拆到分包。`:`检查静态资源和模块聚合边界。`}}function io(e){return[`# dashboard 模块优化计划`,``,`计划项:${e.items.length}`,`估算影响:${z(e.totalImpactBytes)}`,`低成本项:${e.quickWinCount}`,``,`| 优先级 | 事项 | 影响 | 成本 | 建议 |`,`| ---: | --- | ---: | --- | --- |`,...e.items.map(e=>`| ${e.priority} | ${e.title.replaceAll(`|`,`\\|`)} | ${z(e.impactBytes)} | ${eo(e.effort)} | ${e.action.replaceAll(`|`,`\\|`)} |`),``].join(`
|
|
10
|
+
`)}function ao(e){let t=e.duplicateModules.filter(e=>e.estimatedSavingBytes>0).slice(0,8).map(to),n=e.incrementAttribution.filter(e=>e.deltaBytes>0).slice(0,6).map(no),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(ro),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:io(o)}}function oo(e){return{title:e.source,meta:`${e.packageCount} 个包 · 单份 ${z(e.bytes)} · 可节省 ${z(e.estimatedSavingBytes)} · ${e.advice}`}}function so(e){return{title:e.sourceCategory,meta:`${e.count} 个模块`,value:z(e.bytes)}}function co(e){return{title:e.label,meta:`${e.category} · ${e.packageLabel} · ${e.advice}`,value:`+${z(e.deltaBytes)}`}}function lo(e){return{title:e.category,meta:`${e.count} 项增长`,value:`+${z(e.deltaBytes)}`}}function uo(e){return{title:e.file,meta:`${e.packageLabel} · ${pe(e.from)} · ${e.moduleCount} 模块`}}function fo(e){return e.replaceAll(`|`,`\\|`).replaceAll(`
|
|
11
|
+
`,` `)}function po(e,t){return[...e].sort((e,n)=>t===`packages`?n.packageCount-e.packageCount||n.estimatedSavingBytes-e.estimatedSavingBytes||e.source.localeCompare(n.source):t===`size`?n.bytes-e.bytes||n.packageCount-e.packageCount||e.source.localeCompare(n.source):t===`source`?e.source.localeCompare(n.source):n.estimatedSavingBytes-e.estimatedSavingBytes||n.packageCount-e.packageCount||e.source.localeCompare(n.source))}function mo(e){let t=o(``),n=o(`all`),r=o(`saving`),{actionStatus:i,setActionStatus:a}=Jr(),s=C(()=>{let t=new Set;for(let n of e.duplicateModules)t.add(n.sourceType);return[...t].sort((e,t)=>e.localeCompare(t))}),c=C(()=>{let i=t.value.trim().toLowerCase();return po(e.duplicateModules.filter(e=>n.value!==`all`&&e.sourceType!==n.value?!1:i?[e.id,e.source,e.sourceType,e.advice,e.packages.map(e=>e.packageLabel).join(` `),e.packages.flatMap(e=>e.files).join(` `)].some(e=>e.toLowerCase().includes(i)):!0),r.value)}),l=C(()=>c.value.map(e=>({key:e.id,packages:e.packages,...oo(e)}))),u=C(()=>e.moduleSourceSummary.map(e=>({key:`${e.sourceType}:${e.sourceCategory}`,...so(e)}))),d=C(()=>e.incrementAttribution.slice(0,8).map(e=>({key:e.key,...co(e)}))),f=C(()=>e.incrementSummary.slice(0,6).map(e=>({key:e.category,...lo(e)}))),p=C(()=>e.visibleLargestFiles.slice(0,6).map(e=>({key:`${e.packageId}:${e.file}`,...uo(e)}))),m=C(()=>ao({duplicateModules:e.duplicateModules,incrementAttribution:e.incrementAttribution,largestFiles:e.visibleLargestFiles})),h=C(()=>[`# dashboard 重复模块`,``,`模块数量:${c.value.length} / ${e.duplicateModules.length}`,``,`| 模块 | 来源 | 包数量 | 单份体积 | 可节省 | 建议 | 涉及包 |`,`| --- | --- | ---: | ---: | ---: | --- | --- |`,...c.value.map(e=>[e.source,e.sourceType,String(e.packageCount),z(e.bytes),z(e.estimatedSavingBytes),e.advice,e.packages.map(e=>e.packageLabel).join(`, `)].map(fo).join(` | `)).map(e=>`| ${e} |`),``].join(`
|
|
12
|
+
`));async function g(){try{await U(h.value),a(`已复制`)}catch{a(`复制失败`)}}function _(){let e=new Blob([`${JSON.stringify(c.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:l,duplicateQuery:t,duplicateSortMode:r,duplicateSourceFilter:n,duplicateSourceOptions:s,exportDuplicateModulesJson:_,incrementItems:d,incrementSummaryItems:f,largestFileSampleItems:p,moduleOptimizationPlan:m,moduleSourceItems:u}}var ho=n({__name:`AppSummaryValueCard`,props:{title:{},meta:{},value:{},breakTitle:{type:Boolean}},setup(e,{expose:t}){t();let n={};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}}),go={class:`rounded-xl border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-3.5`},_o={class:`flex flex-wrap items-start justify-between gap-3`},vo={class:`min-w-0`},yo={class:`mt-1 text-xs text-(--dashboard-text-soft)`},bo={key:0,class:`font-medium text-(--dashboard-accent)`};function xo(e,t,n,r,i,o){return w(),F(`article`,go,[S(`div`,_o,[S(`div`,vo,[S(`p`,{class:a([`font-medium text-(--dashboard-text)`,n.breakTitle?`break-all`:void 0])},c(n.title),3),S(`p`,yo,c(n.meta),1)]),n.value?(w(),F(`p`,bo,c(n.value),1)):N(``,!0)]),d(e.$slots,`default`)])}var So=B(ho,[[`render`,xo]]),Co=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,{expose:t,emit:n}){t();let r={emit:n,query:s(e,`query`),sourceFilter:s(e,`sourceFilter`),sortMode:s(e,`sortMode`)};return Object.defineProperty(r,"__isScriptSetup",{enumerable:!1,value:!0}),r}}),wo={class:`flex flex-wrap items-center gap-2`},To={class:`text-xs font-medium text-(--dashboard-text-soft)`},Eo={key:0,class:`text-xs font-medium text-(--dashboard-accent)`},Do=[`disabled`],Oo=[`disabled`],ko=[`value`];function Ao(e,n,r,i,a,o){return w(),F(`div`,wo,[S(`span`,To,` 匹配 `+c(r.filteredCount)+` / `+c(r.totalCount),1),r.actionStatus?(w(),F(`span`,Eo,c(r.actionStatus),1)):N(``,!0),S(`button`,{type:`button`,class:`h-9 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 text-sm text-(--dashboard-text-soft) transition hover:border-(--dashboard-border-strong) hover:text-(--dashboard-accent) focus:border-(--dashboard-border-strong) focus:outline-none disabled:opacity-50`,disabled:r.disabled,onClick:n[0]||=e=>i.emit(`copy`)},` 复制重复模块 `,8,Do),S(`button`,{type:`button`,class:`h-9 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 text-sm text-(--dashboard-text-soft) transition hover:border-(--dashboard-border-strong) hover:text-(--dashboard-accent) focus:border-(--dashboard-border-strong) focus:outline-none disabled:opacity-50`,disabled:r.disabled,onClick:n[1]||=e=>i.emit(`exportJson`)},` 导出 JSON `,8,Oo),t(S(`input`,{"onUpdate:modelValue":n[2]||=e=>i.query=e,class:`h-9 w-56 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 text-sm text-(--dashboard-text) outline-none transition placeholder:text-(--dashboard-text-soft) focus:border-(--dashboard-accent)`,placeholder:`搜索模块、包或文件`,type:`search`},null,512),[[M,i.query]]),t(S(`select`,{"onUpdate:modelValue":n[3]||=e=>i.sourceFilter=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)`},[n[5]||=S(`option`,{value:`all`},` 全部来源 `,-1),(w(!0),F(k,null,l(r.sourceOptions,e=>(w(),F(`option`,{key:e,value:e},c(e),9,ko))),128))],512),[[E,i.sourceFilter]]),t(S(`select`,{"onUpdate:modelValue":n[4]||=e=>i.sortMode=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)`},[...n[6]||=[S(`option`,{value:`saving`},` 按可节省 `,-1),S(`option`,{value:`packages`},` 按包数量 `,-1),S(`option`,{value:`size`},` 按单份体积 `,-1),S(`option`,{value:`source`},` 按路径 `,-1)]],512),[[E,i.sortMode]])])}var jo=B(Co,[[`render`,Ao]]),Mo=n({__name:`ModuleInsightsSidebar`,props:{incrementItems:{},incrementSummaryItems:{},moduleSourceItems:{},largestFileSampleItems:{},optimizationPlan:{}},setup(e,{expose:t}){t();let n=e,r=o(``),i=null;function a(e){return e===`high`?`高成本`:e===`medium`?`中成本`:`低成本`}function s(e){return e===`high`?`border-rose-200 bg-rose-50 text-rose-700 dark:border-rose-500/25 dark:bg-rose-500/10 dark:text-rose-300`:e===`medium`?`border-amber-200 bg-amber-50 text-amber-700 dark:border-amber-500/25 dark:bg-amber-500/10 dark:text-amber-300`:`border-emerald-200 bg-emerald-50 text-emerald-700 dark:border-emerald-500/25 dark:bg-emerald-500/10 dark:text-emerald-300`}function c(e){r.value=e,i&&clearTimeout(i),i=setTimeout(()=>{r.value=``,i=null},1800)}async function l(){try{await U(n.optimizationPlan.report),c(`计划已复制`)}catch{c(`复制失败`)}}T(()=>{i&&clearTimeout(i)});let u={props:n,optimizationPlanStatus:r,get optimizationPlanStatusTimer(){return i},set optimizationPlanStatusTimer(e){i=e},getEffortLabel:a,getEffortClassName:s,setOptimizationPlanStatus:c,copyOptimizationPlan:l,get formatBytes(){return z},get surfaceStyles(){return L},AppCompactListItem:Lt,AppEmptyState:W,AppMetricTile:G,AppPanelHeader:X,AppSummaryValueCard:So};return Object.defineProperty(u,"__isScriptSetup",{enumerable:!1,value:!0}),u}}),No={class:`grid min-h-0 gap-3 overflow-hidden xl:grid-rows-[auto_minmax(0,1fr)_minmax(0,0.8fr)]`},Po={class:`flex items-center gap-2`},Fo={key:0,class:`text-xs font-medium text-(--dashboard-accent)`},Io=[`disabled`],Lo={class:`mt-3 grid grid-cols-3 gap-2`},Ro={key:0,class:`mt-3 grid max-h-54 gap-2 overflow-y-auto pr-1`},zo={class:`flex items-start justify-between gap-3`},Bo={class:`min-w-0 text-sm font-medium text-(--dashboard-text)`},Vo={class:`mt-1 line-clamp-2 text-xs leading-5 text-(--dashboard-text-muted)`},Ho={class:`mt-2 text-xs text-(--dashboard-text-soft)`},Uo={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)]`},Wo={class:`space-y-2 overflow-y-auto pr-1`},Go={class:`space-y-2 overflow-y-auto pr-1 text-sm text-(--dashboard-text-muted)`},Ko={class:`mt-4 grid h-[calc(100%-3.5rem)] min-h-0 gap-3 overflow-hidden lg:grid-cols-2`},qo={class:`space-y-2.5 overflow-y-auto pr-1`},Jo={class:`space-y-2.5 overflow-y-auto pr-1 text-sm text-(--dashboard-text-muted)`};function Yo(e,t,n,r,i,o){return w(),F(`div`,No,[S(`section`,{class:a([r.surfaceStyles({padding:`md`}),`overflow-hidden`])},[p(r.AppPanelHeader,{"icon-name":`metric-quality`,title:`优化计划`},{meta:I(()=>[S(`div`,Po,[r.optimizationPlanStatus?(w(),F(`span`,Fo,c(r.optimizationPlanStatus),1)):N(``,!0),S(`button`,{type:`button`,class:`h-8 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 text-xs text-(--dashboard-text-soft) transition hover:border-(--dashboard-border-strong) hover:text-(--dashboard-accent) disabled:opacity-50`,disabled:n.optimizationPlan.items.length===0,onClick:r.copyOptimizationPlan},` 复制计划 `,8,Io)])]),_:1}),S(`div`,Lo,[p(r.AppMetricTile,{label:`计划项`,value:n.optimizationPlan.items.length},null,8,[`value`]),p(r.AppMetricTile,{label:`估算影响`,value:r.formatBytes(n.optimizationPlan.totalImpactBytes)},null,8,[`value`]),p(r.AppMetricTile,{label:`低成本项`,value:n.optimizationPlan.quickWinCount},null,8,[`value`])]),n.optimizationPlan.items.length?(w(),F(`div`,Ro,[(w(!0),F(k,null,l(n.optimizationPlan.items,e=>(w(),F(`article`,{key:e.id,class:`rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-3`},[S(`div`,zo,[S(`p`,Bo,c(e.title),1),S(`span`,{class:a([`shrink-0 rounded-full border px-2 py-0.5 text-[11px]`,r.getEffortClassName(e.effort)])},c(r.getEffortLabel(e.effort)),3)]),S(`p`,Vo,c(e.detail),1),S(`p`,Ho,c(e.action)+` · 影响 `+c(r.formatBytes(e.impactBytes)),1)]))),128))])):(w(),_(r.AppEmptyState,{key:1,class:`mt-3`},{default:I(()=>[...t[0]||=[P(` 当前没有需要生成的模块优化计划。 `,-1)]]),_:1}))],2),S(`section`,{class:a([r.surfaceStyles({padding:`md`}),`min-h-0 overflow-hidden`])},[p(r.AppPanelHeader,{"icon-name":`metric-time`,title:`增量归因`}),n.incrementItems.length?(w(),F(`div`,Uo,[S(`div`,Wo,[(w(!0),F(k,null,l(n.incrementSummaryItems,e=>(w(),_(r.AppSummaryValueCard,{key:e.key,meta:e.meta,title:e.title,value:e.value},null,8,[`meta`,`title`,`value`]))),128))]),S(`ul`,Go,[(w(!0),F(k,null,l(n.incrementItems,e=>(w(),_(r.AppCompactListItem,{key:e.key,meta:e.meta,"mono-title":``,title:e.title,value:e.value},null,8,[`meta`,`title`,`value`]))),128))])])):(w(),_(r.AppEmptyState,{key:1,class:`mt-4`},{default:I(()=>[...t[1]||=[P(` 暂无可对比的正向增量。 `,-1)]]),_:1}))],2),S(`section`,{class:a([r.surfaceStyles({padding:`md`}),`min-h-0 overflow-hidden`])},[p(r.AppPanelHeader,{"icon-name":`module-sources`,title:`模块来源`}),S(`div`,Ko,[S(`div`,qo,[(w(!0),F(k,null,l(n.moduleSourceItems,e=>(w(),_(r.AppSummaryValueCard,{key:e.key,meta:e.meta,title:e.title,value:e.value},null,8,[`meta`,`title`,`value`]))),128))]),S(`ul`,Jo,[(w(!0),F(k,null,l(n.largestFileSampleItems,e=>(w(),_(r.AppCompactListItem,{key:e.key,meta:e.meta,"mono-title":``,title:e.title,value:e.value},null,8,[`meta`,`title`,`value`]))),128))])])],2)])}var Xo=B(Mo,[[`render`,Yo]]),Zo=n({__name:`ModulesPanel`,props:{duplicateModules:{},moduleSourceSummary:{},incrementAttribution:{},incrementSummary:{},visibleLargestFiles:{}},setup(e,{expose:t}){t();let n=e,{actionStatus:r,copyDuplicateModulesReport:i,duplicateModuleItems:a,duplicateQuery:o,duplicateSortMode:s,duplicateSourceFilter:c,duplicateSourceOptions:l,exportDuplicateModulesJson:u,incrementItems:d,incrementSummaryItems:f,largestFileSampleItems:p,moduleOptimizationPlan:m,moduleSourceItems:h}=mo(n),g={props:n,actionStatus:r,copyDuplicateModulesReport:i,duplicateModuleItems:a,duplicateQuery:o,duplicateSortMode:s,duplicateSourceFilter:c,duplicateSourceOptions:l,exportDuplicateModulesJson:u,incrementItems:d,incrementSummaryItems:f,largestFileSampleItems:p,moduleOptimizationPlan:m,moduleSourceItems:h,get surfaceStyles(){return L},AppEmptyState:W,AppPanelHeader:X,AppSummaryValueCard:So,DuplicateModulesToolbar:jo,ModuleInsightsSidebar:Xo};return Object.defineProperty(g,"__isScriptSetup",{enumerable:!1,value:!0}),g}}),Qo={class:`grid h-full min-h-0 gap-3 overflow-hidden xl:grid-cols-[minmax(0,1.24fr)_minmax(0,0.76fr)]`},$o={class:`flex flex-wrap items-start justify-between gap-3`},es={key:0,class:`mt-4 max-h-[calc(100%-5.75rem)] space-y-2.5 overflow-y-auto pr-1`},ts={class:`mt-3 space-y-1.5 text-xs text-(--dashboard-text-muted)`},ns={class:`font-medium text-(--dashboard-text)`};function rs(e,t,n,r,i,o){return w(),F(`section`,Qo,[S(`div`,{class:a([r.surfaceStyles({padding:`md`}),`min-h-0 overflow-hidden`])},[S(`div`,$o,[p(r.AppPanelHeader,{"icon-name":`duplicate-modules`,title:`重复模块`,description:`${n.duplicateModules.length} 个重复模块样本`},null,8,[`description`]),p(r.DuplicateModulesToolbar,{query:r.duplicateQuery,"onUpdate:query":t[0]||=e=>r.duplicateQuery=e,"sort-mode":r.duplicateSortMode,"onUpdate:sortMode":t[1]||=e=>r.duplicateSortMode=e,"source-filter":r.duplicateSourceFilter,"onUpdate:sourceFilter":t[2]||=e=>r.duplicateSourceFilter=e,"action-status":r.actionStatus,disabled:r.duplicateModuleItems.length===0,"filtered-count":r.duplicateModuleItems.length,"source-options":r.duplicateSourceOptions,"total-count":n.duplicateModules.length,onCopy:r.copyDuplicateModulesReport,onExportJson:r.exportDuplicateModulesJson},null,8,[`query`,`sort-mode`,`source-filter`,`action-status`,`disabled`,`filtered-count`,`source-options`,`total-count`,`onCopy`,`onExportJson`])]),r.duplicateModuleItems.length?(w(),F(`div`,es,[(w(!0),F(k,null,l(r.duplicateModuleItems,e=>(w(),_(r.AppSummaryValueCard,{key:e.key,"break-title":``,meta:e.meta,title:e.title,value:e.value},{default:I(()=>[S(`ul`,ts,[(w(!0),F(k,null,l(e.packages,n=>(w(),F(`li`,{key:`${e.key}:${n.packageId}`},[S(`span`,ns,c(n.packageLabel),1),t[3]||=S(`span`,{class:`text-(--dashboard-text-soft)`},` · `,-1),S(`span`,null,c(n.files.join(`、`)),1)]))),128))])]),_:2},1032,[`meta`,`title`,`value`]))),128))])):(w(),_(r.AppEmptyState,{key:1,class:`mt-4`},{default:I(()=>[...t[4]||=[P(` 当前构建未检测到跨包重复模块。 `,-1)]]),_:1}))],2),p(r.ModuleInsightsSidebar,{"increment-items":r.incrementItems,"increment-summary-items":r.incrementSummaryItems,"largest-file-sample-items":r.largestFileSampleItems,"module-source-items":r.moduleSourceItems,"optimization-plan":r.moduleOptimizationPlan},null,8,[`increment-items`,`increment-summary-items`,`largest-file-sample-items`,`module-source-items`,`optimization-plan`])])}var is=B(Zo,[[`render`,rs]]);function as(e){return Math.max(0,Math.min(100,Math.round(e)))}function os(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 ss(e){return e?e.status===`critical`?32:18:0}function cs(e){return e.moduleCount<=0||e.duplicateModuleCount<=0?0:Math.min(18,e.duplicateModuleCount/e.moduleCount*60)}function ls(e){return Math.min(10,Math.max(0,e.entryFileCount-1)*3)}function us(e){return e<70?`risk`:e<86?`watch`:`good`}function ds(e){return e===`risk`?`高风险`:e===`watch`?`需关注`:`健康`}function fs(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?`较上次增长 ${z(e.sizeDeltaBytes)}`:e.duplicateModuleCount>0?`${e.duplicateModuleCount} 个重复模块`:`未发现主要风险`}function ps(e,t){let n=as(100-ss(t)-os(e)-cs(e)-ls(e)),r=us(n);return{id:e.id,label:e.label,score:n,status:r,statusLabel:ds(r),detail:`${e.fileCount} 个产物 · ${e.moduleCount} 个模块 · ${z(e.totalBytes)}`,primaryRisk:fs(e,t),metrics:[{label:`体积`,value:z(e.totalBytes)},{label:`重复模块`,value:e.duplicateModuleCount},{label:`Entry`,value:e.entryFileCount},{label:`较上次`,value:typeof e.sizeDeltaBytes==`number`?`${e.sizeDeltaBytes>=0?`+`:`-`}${z(Math.abs(e.sizeDeltaBytes))}`:`—`}]}}function ms(e){let t=new Map(e.budgetWarnings.map(e=>[e.id,e])),n=e.packageInsights.map(e=>ps(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?as(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 hs(e){return typeof e!=`number`||Number.isNaN(e)||e===0?`—`:`${e>0?`+`:`-`}${z(Math.abs(e))}`}function gs(e){return[{label:`Chunks`,value:e.chunkCount},{label:`Assets`,value:e.assetCount},{label:`压缩后`,value:z(e.compressedBytes)},{label:`较上次`,value:hs(e.sizeDeltaBytes)}]}function _s(e){return e.replaceAll(`|`,`\\|`).replaceAll(`
|
|
13
|
+
`,` `)}function vs(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(_s).join(` | `)).map(e=>`| ${e} |`),``].join(`
|
|
14
|
+
`)}function ys(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 bs(e){let t=o(``),n=o(`all`),r=o(`all`),i=o(`size`),{actionStatus:a,setActionStatus:s}=Jr(),c=C(()=>new Map(e.budgetWarnings.map(e=>[e.id,e]))),l=C(()=>ms({packageInsights:e.packageInsights,budgetWarnings:e.budgetWarnings})),u=C(()=>new Map(l.value.items.map(e=>[e.id,e.score]))),d=C(()=>{let t=new Set;for(let n of e.packageInsights)t.add(n.type);return[...t].sort((e,t)=>V(e).localeCompare(V(t)))}),f=C(()=>e.packageInsights.map(t=>{let n=V(t.type),r=c.value.get(t.id),i=e.selectedTreemapMeta?.packageLabel===t.label;return{...t,typeLabel:n,summaryText:`${n} · ${t.fileCount} 个产物 · ${t.moduleCount} 个模块 · 跨包 ${t.duplicateModuleCount}`,totalBytesLabel:z(t.totalBytes),compressedBytesLabel:`${t.compressedSizeSource===`real`?`Brotli`:`估算`} ${z(t.compressedBytes)}`,deltaText:hs(t.sizeDeltaBytes),budgetText:r?`${r.status===`critical`?`超预算`:`接近预算`} ${(r.ratio*100).toFixed(1)}%`:`预算正常`,selected:i,entryCountText:`${t.entryFileCount} 个 entry`,healthScore:u.value.get(t.id)??100,metrics:gs(t)}})),p=C(()=>{let e=t.value.trim().toLowerCase();return ys(f.value.filter(t=>{if(n.value!==`all`&&t.type!==n.value)return!1;let i=c.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)}),m=C(()=>vs(p.value,f.value.length));async function h(){try{await U(m.value),s(`已复制`)}catch{s(`复制失败`)}}function g(){let e=new Blob([`${JSON.stringify(p.value,null,2)}\n`],{type:`application/json`}),t=URL.createObjectURL(e),n=document.createElement(`a`);n.href=t,n.download=`weapp-vite-dashboard-packages.json`,n.click(),URL.revokeObjectURL(t),s(`已导出`)}return{actionStatus:a,copyPackageReport:h,exportPackageJson:g,filteredPackageInsightCards:p,packageBudgetFilter:r,packageHealth:l,packageInsightCards:f,packageQuery:t,packageSortMode:i,packageTypeFilter:n,packageTypeOptions:d}}var xs=n({__name:`AppPackageFileTable`,props:{files:{}},setup(e,{expose:t}){t();let n=e;function r(e){let t=typeof e.sizeDeltaBytes==`number`&&e.sizeDeltaBytes!==0?`${e.sizeDeltaBytes>0?`+`:`-`}${z(Math.abs(e.sizeDeltaBytes))}`:`—`;return{file:e.file,type:e.type,fromLabel:pe(e.from),sizeLabel:z(e.size),compressedLabel:z(e.compressedSize),deltaLabel:t}}let i={props:n,createPackageFileRow:r,fileRows:C(()=>n.files.map(e=>r(e)))};return Object.defineProperty(i,"__isScriptSetup",{enumerable:!1,value:!0}),i}}),Ss={class:`overflow-hidden rounded-xl border border-(--dashboard-border)`},Cs={class:`min-w-full divide-y divide-(--dashboard-border) text-left text-sm`},ws={class:`divide-y divide-(--dashboard-border) text-(--dashboard-text-muted)`},Ts={class:`px-3 py-2 font-mono text-xs text-(--dashboard-text)`},Es={class:`px-3 py-2`},Ds={class:`px-3 py-2`},Os={class:`px-3 py-2 font-medium text-(--dashboard-text)`},ks={class:`px-3 py-2 font-medium text-(--dashboard-text)`};function As(e,t,n,r,i,a){return w(),F(`div`,Ss,[S(`table`,Cs,[t[0]||=S(`thead`,{class:`bg-(--dashboard-panel-muted) text-(--dashboard-text-soft)`},[S(`tr`,null,[S(`th`,{class:`px-3 py-2 text-[11px] font-medium uppercase tracking-[0.18em]`},` 文件 `),S(`th`,{class:`px-3 py-2 text-[11px] font-medium uppercase tracking-[0.18em]`},` 类型 `),S(`th`,{class:`px-3 py-2 text-[11px] font-medium uppercase tracking-[0.18em]`},` 来源 `),S(`th`,{class:`px-3 py-2 text-[11px] font-medium uppercase tracking-[0.18em]`},` 体积 / 压缩 `),S(`th`,{class:`px-3 py-2 text-[11px] font-medium uppercase tracking-[0.18em]`},` 较上次 `)])],-1),S(`tbody`,ws,[(w(!0),F(k,null,l(r.fileRows,e=>(w(),F(`tr`,{key:e.file},[S(`td`,Ts,c(e.file),1),S(`td`,Es,c(e.type),1),S(`td`,Ds,c(e.fromLabel),1),S(`td`,Os,c(e.sizeLabel)+` / `+c(e.compressedLabel),1),S(`td`,ks,c(e.deltaLabel),1)]))),128))])])])}var js=B(xs,[[`render`,As]]),Ms=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,{expose:t,emit:n}){t();let r={emit:n,query:s(e,`query`),typeFilter:s(e,`typeFilter`),budgetFilter:s(e,`budgetFilter`),sortMode:s(e,`sortMode`),get formatPackageType(){return V}};return Object.defineProperty(r,"__isScriptSetup",{enumerable:!1,value:!0}),r}}),Ns={class:`flex flex-wrap items-center justify-between gap-3`},Ps={class:`text-xs font-medium text-(--dashboard-text-soft)`},Fs={key:0,class:`mt-1 text-xs font-medium text-(--dashboard-accent)`},Is={class:`flex flex-wrap items-center gap-2`},Ls=[`disabled`],Rs=[`disabled`],zs=[`value`];function Bs(e,n,r,i,a,o){return w(),F(`div`,Ns,[S(`div`,null,[S(`p`,Ps,` 匹配 `+c(r.filteredCount)+` / `+c(r.totalCount)+` 个包 `,1),r.actionStatus?(w(),F(`p`,Fs,c(r.actionStatus),1)):N(``,!0)]),S(`div`,Is,[S(`button`,{type:`button`,class:`h-9 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 text-sm text-(--dashboard-text-soft) transition hover:border-(--dashboard-border-strong) hover:text-(--dashboard-accent) focus:border-(--dashboard-border-strong) focus:outline-none disabled:opacity-50`,disabled:r.disabled,onClick:n[0]||=e=>i.emit(`copy`)},` 复制包体 `,8,Ls),S(`button`,{type:`button`,class:`h-9 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 text-sm text-(--dashboard-text-soft) transition hover:border-(--dashboard-border-strong) hover:text-(--dashboard-accent) focus:border-(--dashboard-border-strong) focus:outline-none disabled:opacity-50`,disabled:r.disabled,onClick:n[1]||=e=>i.emit(`exportJson`)},` 导出 JSON `,8,Rs),t(S(`input`,{"onUpdate:modelValue":n[2]||=e=>i.query=e,class:`h-9 w-56 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 text-sm text-(--dashboard-text) outline-none transition placeholder:text-(--dashboard-text-soft) focus:border-(--dashboard-accent)`,placeholder:`搜索包名或类型`,type:`search`},null,512),[[M,i.query]]),t(S(`select`,{"onUpdate:modelValue":n[3]||=e=>i.typeFilter=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)`},[n[6]||=S(`option`,{value:`all`},` 全部类型 `,-1),(w(!0),F(k,null,l(r.typeOptions,e=>(w(),F(`option`,{key:e,value:e},c(i.formatPackageType(e)),9,zs))),128))],512),[[E,i.typeFilter]]),t(S(`select`,{"onUpdate:modelValue":n[4]||=e=>i.budgetFilter=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)`},[...n[7]||=[S(`option`,{value:`all`},` 全部预算 `,-1),S(`option`,{value:`warning`},` 仅告警 `,-1),S(`option`,{value:`normal`},` 预算正常 `,-1)]],512),[[E,i.budgetFilter]]),t(S(`select`,{"onUpdate:modelValue":n[5]||=e=>i.sortMode=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)`},[...n[8]||=[y(`<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),[[E,i.sortMode]])])])}var Vs=B(Ms,[[`render`,Bs]]),Hs=n({__name:`PackageHealthPanel`,props:{health:{}},setup(e,{expose:t}){t();function n(e){return e===`risk`?`border-rose-200 bg-rose-50 text-rose-700 dark:border-rose-500/25 dark:bg-rose-500/10 dark:text-rose-300`:e===`watch`?`border-amber-200 bg-amber-50 text-amber-700 dark:border-amber-500/25 dark:bg-amber-500/10 dark:text-amber-300`:`border-emerald-200 bg-emerald-50 text-emerald-700 dark:border-emerald-500/25 dark:bg-emerald-500/10 dark:text-emerald-300`}let r={getStatusClassName:n,AppMetricTile:G,AppPanelHeader:X};return Object.defineProperty(r,"__isScriptSetup",{enumerable:!1,value:!0}),r}}),Us={class:`rounded-lg border border-(--dashboard-border) bg-(--dashboard-panel) p-4 shadow-(--dashboard-shadow)`},Ws={class:`mt-3 grid gap-3 xl:grid-cols-[minmax(0,0.45fr)_minmax(0,1fr)]`},Gs={class:`grid grid-cols-3 gap-2`},Ks={class:`grid gap-2 md:grid-cols-2 xl:grid-cols-3`},qs={class:`flex items-start justify-between gap-3`},Js={class:`min-w-0`},Ys={class:`truncate text-sm font-semibold text-(--dashboard-text)`},Xs={class:`mt-1 text-xs leading-5 text-(--dashboard-text-soft)`},Zs={class:`mt-3 flex items-end justify-between gap-3`},Qs={class:`text-3xl font-semibold text-(--dashboard-accent)`},$s={class:`line-clamp-2 text-right text-xs leading-5 text-(--dashboard-text-muted)`};function ec(e,t,n,r,i,o){return w(),F(`section`,Us,[p(r.AppPanelHeader,{"icon-name":`metric-health`,title:`包体健康`,description:n.health.weakestPackage?`优先关注 ${n.health.weakestPackage.label}`:`当前没有包体样本`},null,8,[`description`]),S(`div`,Ws,[S(`div`,Gs,[p(r.AppMetricTile,{label:`平均分`,value:n.health.averageScore},null,8,[`value`]),p(r.AppMetricTile,{label:`高风险`,value:n.health.riskCount},null,8,[`value`]),p(r.AppMetricTile,{label:`需关注`,value:n.health.watchCount},null,8,[`value`])]),S(`div`,Ks,[(w(!0),F(k,null,l(n.health.items.slice(0,3),e=>(w(),F(`article`,{key:e.id,class:`rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-3`},[S(`div`,qs,[S(`div`,Js,[S(`p`,Ys,c(e.label),1),S(`p`,Xs,c(e.detail),1)]),S(`span`,{class:a([`shrink-0 rounded-full border px-2 py-0.5 text-[11px]`,r.getStatusClassName(e.status)])},c(e.statusLabel),3)]),S(`div`,Zs,[S(`p`,Qs,c(e.score),1),S(`p`,$s,c(e.primaryRisk),1)])]))),128))])])])}var tc=B(Hs,[[`render`,ec]]),nc=n({__name:`PackagesPanel`,props:{packageInsights:{},budgetWarnings:{},selectedTreemapMeta:{}},setup(e,{expose:t}){t();let n=e,{actionStatus:r,copyPackageReport:i,exportPackageJson:a,filteredPackageInsightCards:o,packageBudgetFilter:s,packageHealth:c,packageInsightCards:l,packageQuery:u,packageSortMode:d,packageTypeFilter:f,packageTypeOptions:p}=bs(n),m={props:n,actionStatus:r,copyPackageReport:i,exportPackageJson:a,filteredPackageInsightCards:o,packageBudgetFilter:s,packageHealth:c,packageInsightCards:l,packageQuery:u,packageSortMode:d,packageTypeFilter:f,packageTypeOptions:p,get surfaceStyles(){return L},AppEmptyState:W,AppMetricTile:G,AppPackageFileTable:js,AppPanelHeader:X,PackageExplorerToolbar:Vs,PackageHealthPanel:tc};return Object.defineProperty(m,"__isScriptSetup",{enumerable:!1,value:!0}),m}}),rc={class:`grid h-full min-h-0 grid-rows-[auto_minmax(0,1fr)] gap-3 overflow-hidden`},ic={class:`grid gap-3`},ac={class:`grid min-h-0 auto-rows-max gap-3 overflow-y-auto pr-1 xl:grid-cols-2`},oc={class:`flex flex-wrap items-start justify-between gap-4`},sc={class:`min-w-0`},cc={class:`mt-2 text-sm text-(--dashboard-text-soft)`},lc={class:`text-right`},uc={class:`text-xl font-semibold text-(--dashboard-text)`},dc={class:`text-xs text-(--dashboard-text-soft)`},fc={class:`mt-1 text-xs text-(--dashboard-accent)`},pc={class:`mt-4 grid grid-cols-2 gap-2 text-sm md:grid-cols-4`},mc={class:`mt-4`};function hc(e,t,n,i,o,s){return w(),F(`section`,rc,[S(`div`,ic,[p(i.PackageHealthPanel,{health:i.packageHealth},null,8,[`health`]),S(`div`,{class:a([i.surfaceStyles({padding:`md`}),`grid gap-3`])},[p(i.AppPanelHeader,{"icon-name":`tab-packages`,title:`包体探索`,description:`${i.packageInsightCards.length} 个包体样本`},null,8,[`description`]),p(i.PackageExplorerToolbar,{"budget-filter":i.packageBudgetFilter,"onUpdate:budgetFilter":t[0]||=e=>i.packageBudgetFilter=e,query:i.packageQuery,"onUpdate:query":t[1]||=e=>i.packageQuery=e,"sort-mode":i.packageSortMode,"onUpdate:sortMode":t[2]||=e=>i.packageSortMode=e,"type-filter":i.packageTypeFilter,"onUpdate:typeFilter":t[3]||=e=>i.packageTypeFilter=e,"action-status":i.actionStatus,disabled:i.filteredPackageInsightCards.length===0,"filtered-count":i.filteredPackageInsightCards.length,"total-count":i.packageInsightCards.length,"type-options":i.packageTypeOptions,onCopy:i.copyPackageReport,onExportJson:i.exportPackageJson},null,8,[`budget-filter`,`query`,`sort-mode`,`type-filter`,`action-status`,`disabled`,`filtered-count`,`total-count`,`type-options`,`onCopy`,`onExportJson`])],2)]),S(`div`,ac,[i.filteredPackageInsightCards.length===0?(w(),_(i.AppEmptyState,{key:0,class:`xl:col-span-2`},{default:I(()=>[...t[4]||=[P(` 没有匹配当前筛选条件的包。 `,-1)]]),_:1})):N(``,!0),(w(!0),F(k,null,l(i.filteredPackageInsightCards,e=>(w(),F(`article`,{key:e.id,class:a([[i.surfaceStyles({padding:`md`}),e.selected?`border-(--dashboard-accent)`:``],`border transition`])},[S(`div`,oc,[S(`div`,sc,[p(i.AppPanelHeader,{"icon-name":`tab-packages`,title:e.label,description:e.typeLabel},null,8,[`title`,`description`]),S(`p`,cc,c(e.summaryText),1)]),S(`div`,lc,[S(`p`,uc,c(e.totalBytesLabel),1),S(`p`,dc,c(e.compressedBytesLabel),1),S(`p`,fc,c(e.budgetText),1)])]),S(`div`,pc,[(w(!0),F(k,null,l(e.metrics,e=>(w(),_(i.AppMetricTile,r({key:e.label},{ref_for:!0},e),null,16))),128))]),S(`div`,mc,[p(i.AppPackageFileTable,{files:e.topFiles},null,8,[`files`])])],2))),128))])])}var gc=B(nc,[[`render`,hc]]),_c=n({__name:`PrReviewChecklistPanel`,props:{checklist:{},copyStatus:{}},emits:[`copy`,`select`],setup(e,{expose:t,emit:n}){t();let r=n;function i(e){return e===`blocked`?`border-rose-200 bg-rose-100 text-rose-700 dark:border-rose-500/30 dark:bg-rose-500/12 dark:text-rose-300`:e===`review`?`border-amber-200 bg-amber-100 text-amber-700 dark:border-amber-500/30 dark:bg-amber-500/12 dark:text-amber-300`:`border-emerald-200 bg-emerald-100 text-emerald-700 dark:border-emerald-500/30 dark:bg-emerald-500/12 dark:text-emerald-300`}function a(e){return e===`critical`?`border-rose-200 bg-rose-50 text-rose-700 dark:border-rose-500/25 dark:bg-rose-500/10 dark:text-rose-300`:e===`warning`?`border-amber-200 bg-amber-50 text-amber-700 dark:border-amber-500/25 dark:bg-amber-500/10 dark:text-amber-300`:e===`success`?`border-emerald-200 bg-emerald-50 text-emerald-700 dark:border-emerald-500/25 dark:bg-emerald-500/10 dark:text-emerald-300`:`border-(--dashboard-border) bg-(--dashboard-panel-muted) text-(--dashboard-text-muted)`}let o={emit:r,getStatusClassName:i,getToneClassName:a,AppMetricTile:G,AppPanelHeader:X,DashboardIcon:R};return Object.defineProperty(o,"__isScriptSetup",{enumerable:!1,value:!0}),o}}),vc={class:`grid h-full min-h-0 grid-rows-[auto_minmax(0,1fr)] gap-2 overflow-hidden`},yc={class:`rounded-lg border border-(--dashboard-border) bg-(--dashboard-panel) p-4 shadow-(--dashboard-shadow)`},bc={class:`flex items-center gap-2`},xc={key:0,class:`text-xs font-medium text-(--dashboard-accent)`},Sc={class:`h-3.5 w-3.5`},Cc={class:`mt-3 grid gap-3 lg:grid-cols-[minmax(0,0.82fr)_minmax(0,1fr)]`},wc={class:`rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-3`},Tc={class:`mt-3 text-lg font-semibold text-(--dashboard-text)`},Ec={class:`mt-1 text-xs leading-5 text-(--dashboard-text-soft)`},Dc={class:`grid grid-cols-2 gap-2 md:grid-cols-4`},Oc={class:`grid min-h-0 gap-2 overflow-y-auto pr-1 xl:grid-cols-3 xl:overflow-hidden xl:pr-0`},kc={class:`text-sm font-semibold text-(--dashboard-text)`},Ac={class:`mt-1 text-xs leading-5 text-(--dashboard-text-soft)`},jc={class:`mt-3 min-h-0 overflow-y-auto pr-1`},Mc={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)`},Nc=[`onClick`],Pc={class:`mt-0.5 flex h-4 w-4 items-center justify-center rounded border border-current text-[10px] leading-none`},Fc={class:`min-w-0`},Ic={class:`block text-sm font-medium text-(--dashboard-text)`},Lc={class:`mt-1 line-clamp-2 block text-xs leading-5 text-(--dashboard-text-muted)`};function Rc(e,t,n,i,o,s){return w(),F(`section`,vc,[S(`div`,yc,[p(i.AppPanelHeader,{"icon-name":`metric-bookmark`,title:`PR 风险清单`},{meta:I(()=>[S(`div`,bc,[n.copyStatus?(w(),F(`span`,xc,c(n.copyStatus),1)):N(``,!0),S(`button`,{type:`button`,class:`inline-flex items-center gap-1.5 rounded-full border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-2.5 py-1 text-[11px] text-(--dashboard-text-soft) transition hover:border-(--dashboard-border-strong) hover:text-(--dashboard-text)`,onClick:t[0]||=e=>i.emit(`copy`)},[S(`span`,Sc,[p(i.DashboardIcon,{name:`metric-copy`})]),t[1]||=P(` 复制清单 `,-1)])])]),_:1}),S(`div`,Cc,[S(`div`,wc,[S(`span`,{class:a([`inline-flex rounded-full border px-2.5 py-1 text-[11px] font-medium uppercase tracking-[0.16em]`,i.getStatusClassName(n.checklist.status)])},c(n.checklist.label),3),S(`p`,Tc,c(n.checklist.headline),1),S(`p`,Ec,c(n.checklist.description),1)]),S(`div`,Dc,[(w(!0),F(k,null,l(n.checklist.metrics,e=>(w(),_(i.AppMetricTile,r({key:e.label},{ref_for:!0},e),null,16))),128))])])]),S(`div`,Oc,[(w(!0),F(k,null,l(n.checklist.lanes,e=>(w(),F(`section`,{key:e.key,class:`grid min-h-[18rem] grid-rows-[auto_minmax(0,1fr)] rounded-lg border border-(--dashboard-border) bg-(--dashboard-panel) p-4 shadow-(--dashboard-shadow)`},[S(`div`,null,[S(`p`,kc,c(e.title),1),S(`p`,Ac,c(e.description),1)]),S(`div`,jc,[e.items.length===0?(w(),F(`div`,Mc,c(e.emptyText),1)):N(``,!0),(w(!0),F(k,null,l(e.items,e=>(w(),F(`button`,{key:e.id,type:`button`,class:a([`mb-2 grid w-full grid-cols-[1rem_minmax(0,1fr)] gap-2 rounded-md border px-3 py-2.5 text-left transition hover:border-(--dashboard-border-strong)`,i.getToneClassName(e.tone)]),onClick:t=>i.emit(`select`,e)},[S(`span`,Pc,c(e.checked?`✓`:``),1),S(`span`,Fc,[S(`span`,Ic,c(e.title),1),S(`span`,Lc,c(e.detail),1)])],10,Nc))),128))])]))),128))])])}var zc=B(_c,[[`render`,Rc]]),Bc={noSemanticValidation:!0,noSuggestionDiagnostics:!0,noSyntaxValidation:!0},Vc={diagnostics:!1};function Hc(e){e.typescript.javascriptDefaults.setDiagnosticsOptions(Bc),e.typescript.javascriptDefaults.setModeConfiguration(Vc),e.typescript.typescriptDefaults.setDiagnosticsOptions(Bc),e.typescript.typescriptDefaults.setModeConfiguration(Vc),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 Uc(e){return e===`dark`?`weapp-dashboard-dark`:`weapp-dashboard-light`}var Wc={css:ne,html:ie,javascript:oe,json:re,less:ne,scss:ne,typescript:oe},Gc=globalThis;Gc.MonacoEnvironment={getWorker:(e,t)=>new(Wc[t]??te)};function Kc(e){return`${e.packageId}:${e.file}`}function qc(e,t){return t.endsWith(`.wxml`)||t.endsWith(`.vue`)?`html`:t.endsWith(`.wxss`)?`css`:e===`plaintext`&&t.endsWith(`.json`)?`json`:e}function Jc(e){let t=e.indexOf(`?`);return t===-1?e:e.slice(0,t)}async function Yc(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:qc(i.language,i.path)}}function Xc(e){let t=new Set;if(!e)return[];e.source&&t.add(Jc(e.source));for(let n of e.modules??[])(n.sourceType===`src`||n.sourceType===`workspace`||n.sourceType===`plugin`)&&t.add(Jc(n.source));return[...t].sort((e,t)=>e.localeCompare(t))}function Zc(e){return e?e.replace(/\r\n?/g,`
|
|
20
15
|
`).split(`
|
|
21
|
-
`):[]}function
|
|
22
|
-
`)}function tu(e){const a=D(),t=D(""),r=D(""),o=Y(null),n=Y(null),l=D(""),c=D(!1),m=Y(null);let p,g,i,x=0;const v=k(()=>e.files.value.map(I=>({key:Ji(I),label:`${I.packageLabel} · ${I.file}`,file:I}))),S=k(()=>v.value.find(I=>I.key===t.value)?.file??e.files.value[0]??null),$=k(()=>Gi(S.value)),f=k(()=>c.value?"加载中":l.value?l.value:o.value&&n.value?`${o.value.path} ↔ ${n.value.path}`:"等待文件"),d=k(()=>o.value&&n.value?Xi(o.value.content,n.value.content):null);function w(){return e.activeFileKey.value&&v.value.some(I=>I.key===e.activeFileKey.value)?e.activeFileKey.value:v.value[0]?.key??""}function T(){p?.setModel(null),g?.dispose(),i?.dispose(),g=void 0,i=void 0}function Q(){const I=m.value;!I||!p||!o.value||!n.value||(T(),g=I.editor.createModel(o.value.content,o.value.language,I.Uri.parse(`weapp-source://model/${encodeURIComponent(o.value.path)}`)),i=I.editor.createModel(n.value.content,n.value.language,I.Uri.parse(`weapp-artifact://model/${encodeURIComponent(n.value.path)}`)),p.setModel({original:g,modified:i}))}async function Z(){if(m.value||!a.value)return;const I=await Ua(()=>import("./monaco.js").then(A=>A.e),__vite__mapDeps([0]),import.meta.url);m.value=I,Ki(I),I.editor.setTheme($t(e.theme.value)),p=I.editor.createDiffEditor(a.value,{automaticLayout:!0,minimap:{enabled:!1},originalEditable:!1,readOnly:!0,renderSideBySide:!0,scrollBeyondLastLine:!1})}async function z(){const I=++x,A=r.value,K=S.value;if(!A||!K){o.value=null,n.value=null,l.value=$.value.length===0?"无源码候选":"",T();return}c.value=!0,l.value="",e.onSelectFile(K);try{const[oe,V]=await Promise.all([Bt("source",A),Bt("artifact",K.file)]);if(I!==x)return;o.value=oe,n.value=V,await tt(),await Z(),Q()}catch(oe){if(I!==x)return;o.value=null,n.value=null,T(),l.value=oe instanceof Error?oe.message:"文件读取失败"}finally{I===x&&(c.value=!1)}}return ne(()=>[e.activeFileKey.value,v.value.map(I=>I.key).join("\0")],()=>{t.value=w()},{immediate:!0}),ne($,I=>{r.value=I[0]??""},{immediate:!0}),ne([t,r],()=>{z()},{immediate:!0}),ne(e.theme,I=>{m.value?.editor.setTheme($t(I))}),fe(()=>{T(),p?.dispose()}),{artifactContent:n,artifactOptions:v,compareStats:d,editorElement:a,loadComparison:z,loadError:l,loading:c,selectedArtifactKey:t,selectedSourcePath:r,sourceContent:o,sourceOptions:$,statusText:f}}const au={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)"},ou={class:"grid gap-3"},ru={class:"flex flex-wrap items-center justify-between gap-3"},su={class:"mt-1 text-xs text-(--dashboard-text-soft)"},nu={class:"flex items-center gap-2"},lu={key:0,class:"text-xs font-medium text-(--dashboard-accent)"},du=["disabled"],iu=["disabled"],uu={class:"grid gap-2 lg:grid-cols-2"},cu=["value"],mu=["value"],pu={key:0,class:"grid gap-2 lg:grid-cols-[minmax(0,1fr)_auto] lg:items-center"},bu={class:"grid grid-cols-2 gap-2 xl:grid-cols-4"},gu={class:"text-xs text-(--dashboard-text-soft)"},fu={key:1,class:"grid gap-2 lg:grid-cols-3"},yu={class:"flex items-start justify-between gap-3"},hu={class:"text-xs font-semibold uppercase tracking-[0.14em] opacity-80"},vu={class:"shrink-0 text-sm font-semibold"},xu={class:"mt-2 line-clamp-2 text-xs leading-5 opacity-80"},ku={class:"min-h-0 overflow-hidden rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted)"},$u=N({__name:"SourceArtifactComparePanel",props:{activeFileKey:{},files:{},theme:{}},emits:["selectFile"],setup(e,{emit:a}){const t=e,r=a,{activeFileKey:o,files:n,theme:l}=Pa(t),c=D("");let m=null;const{artifactContent:p,artifactOptions:g,compareStats:i,editorElement:x,loadComparison:v,loadError:S,loading:$,selectedArtifactKey:f,selectedSourcePath:d,sourceContent:w,sourceOptions:T,statusText:Q}=tu({activeFileKey:o,files:n,theme:l,onSelectFile(V){r("selectFile",V)}}),Z=k(()=>i.value?[{label:"源码行数",value:String(i.value.sourceLines)},{label:"产物行数",value:String(i.value.artifactLines)},{label:"新增 / 删除",value:`${i.value.addedLines} / ${i.value.removedLines}`},{label:"字节变化",value:dt(i.value.byteDelta)}]:[]),z=k(()=>i.value?`${B(i.value.sourceBytes)} → ${B(i.value.artifactBytes)}`:""),I=k(()=>i.value?Ut(i.value):[]);function A(V){return V==="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":V==="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 K(V){c.value=V,m&&clearTimeout(m),m=setTimeout(()=>{c.value="",m=null},1800)}async function oe(){if(!(!i.value||!w.value||!p.value))try{await G(eu({sourcePath:w.value.path,artifactPath:p.value.path,stats:i.value,insights:I.value})),K("已复制")}catch{K("复制失败")}}return fe(()=>{m&&clearTimeout(m)}),(V,q)=>(b(),y("section",au,[s("div",ou,[s("div",ru,[s("div",null,[q[3]||(q[3]=s("h2",{class:"text-lg font-semibold text-(--dashboard-text)"}," 源码对比 ",-1)),s("p",su,h(u(Q)),1)]),s("div",nu,[c.value?(b(),y("span",lu,h(c.value),1)):_("",!0),s("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:!u(i),onClick:oe}," 复制摘要 ",8,du),s("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:u($)||!u(f)||!u(d),onClick:q[0]||(q[0]=(...j)=>u(v)&&u(v)(...j))}," 刷新 ",8,iu)])]),s("div",uu,[E(s("select",{"onUpdate:modelValue":q[1]||(q[1]=j=>U(d)?d.value=j: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)"},[q[4]||(q[4]=s("option",{value:""}," 源码文件 ",-1)),(b(!0),y(F,null,L(u(T),j=>(b(),y("option",{key:j,value:j},h(j),9,cu))),128))],512),[[J,u(d)]]),E(s("select",{"onUpdate:modelValue":q[2]||(q[2]=j=>U(f)?f.value=j: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)"},[(b(!0),y(F,null,L(u(g),j=>(b(),y("option",{key:j.key,value:j.key},h(j.label),9,mu))),128))],512),[[J,u(f)]])]),u(i)?(b(),y("div",pu,[s("div",bu,[(b(!0),y(F,null,L(Z.value,j=>(b(),W(de,he({key:j.label},{ref_for:!0},j),null,16))),128))]),s("p",gu,h(z.value),1)])):_("",!0),I.value.length?(b(),y("div",fu,[(b(!0),y(F,null,L(I.value,j=>(b(),y("article",{key:j.id,class:M(["rounded-md border px-3 py-2.5",A(j.tone)])},[s("div",yu,[s("p",hu,h(j.label),1),s("p",vu,h(j.value),1)]),s("p",xu,h(j.detail),1)],2))),128))])):_("",!0)]),s("div",ku,[E(s("div",{ref_key:"editorElement",ref:x,class:"h-full min-h-96"},null,512),[[Wa,u(w)&&u(p)]]),!u(w)||!u(p)?(b(),W(X,{key:0,class:"m-3 h-[calc(100%-1.5rem)]"},{default:P(()=>[O(h(u(S)||"暂无可对比文件。"),1)]),_:1})):_("",!0)])]))}}),wu={class:"flex items-center gap-2"},Bu=["disabled"],Su={class:"mb-2 flex flex-wrap items-center justify-between gap-2 px-2"},Cu={class:"flex flex-wrap gap-1.5"},Iu=["disabled","onClick"],Mu={class:"flex flex-wrap items-center gap-2 text-[11px] text-(--dashboard-text-soft)"},Tu={class:"relative min-h-0 flex-1 overflow-hidden rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-2"},Fu="Treemap",Lu="从包体到文件再到模块,直接定位体积热点。",_u=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:a}){const t=e,r=a,o=k(()=>t.theme==="dark"?[{label:"健康",color:"#166853"},{label:"关注",color:"#75601f"},{label:"急需改进",color:"#81323a"}]:[{label:"健康",color:"#8fd3ad"},{label:"关注",color:"#ead486"},{label:"急需改进",color:"#eaa39b"}]);function n(){return be({kind:"badge"})}function l(m){return m.value!=="selected-package"||t.canUseSelectedPackageFilter}function c(m){t.bindChartRef(m instanceof Element?m:null)}return(m,p)=>(b(),y("div",{class:M([u(te)({padding:"sm"}),"flex h-full min-h-0 flex-col overflow-hidden"])},[C(H,{class:"mb-2 px-2","icon-name":"treemap",title:Fu,description:Lu},{meta:P(()=>[s("div",wu,[s("button",{class:M([n(),e.canFocusSelected?void 0:"cursor-not-allowed opacity-45"]),disabled:!e.canFocusSelected,type:"button",onClick:p[0]||(p[0]=g=>r("focusSelected"))}," 聚焦选中 ",10,Bu),s("button",{class:M(n()),type:"button",onClick:p[1]||(p[1]=g=>r("resetFocus"))}," 重置 ",2)])]),_:1}),s("div",Su,[s("div",Cu,[(b(!0),y(F,null,L(e.filterOptions,g=>(b(),y("button",{key:g.value,class:M([u(be)({kind:"badge",active:e.filterMode===g.value}),l(g)?void 0:"cursor-not-allowed opacity-45"]),disabled:!l(g),type:"button",onClick:i=>r("updateFilterMode",g.value)},h(g.label),11,Iu))),128))]),s("div",Mu,[(b(!0),y(F,null,L(o.value,g=>(b(),y("span",{key:g.label,class:"inline-flex items-center gap-1.5"},[s("span",{class:"h-2.5 w-2.5 rounded-full border border-(--dashboard-border)",style:At({backgroundColor:g.color})},null,4),O(" "+h(g.label),1)]))),128))])]),s("div",Tu,[s("div",{ref:c,class:"h-full min-h-0 w-full"}),e.isEmpty?(b(),W(X,{key:0,class:"absolute inset-3 z-10 grid place-items-center",compact:""},{default:P(()=>[...p[2]||(p[2]=[O(" 当前过滤条件下没有可展示节点。 ",-1)])]),_:1})):_("",!0)])],2))}}),zu={key:0,class:"min-h-0 overflow-hidden"},Au={key:1,class:"min-h-0 overflow-hidden"},Pu={key:2,class:"min-h-0 overflow-hidden"},Wu={key:3,class:"min-h-0 overflow-hidden"},Ru={key:4,class:"min-h-0 overflow-hidden"},Du={key:5,class:"min-h-0 overflow-hidden"},Nu={key:6,class:"min-h-0 overflow-hidden"},ju={key:7,class:"min-h-0 overflow-hidden"},Qu=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:a}){const t=a;return(r,o)=>e.activeTab==="overview"?(b(),y("section",zu,[C(me,{"grid-class":"grid h-full min-h-0 gap-2 overflow-hidden",items:e.overviewLayoutItems,"storage-key":"weapp-vite:dashboard:analyze-layout:overview"},{metrics:P(()=>[C(Cl,{"action-items":e.actionItems,cards:e.topCards,"largest-files":e.largestFiles,"package-insights":e.packageInsights,"package-type-summary":e.metricPackageTypeSummary,onCopyReport:o[0]||(o[0]=n=>t("copyPr")),onSelectAction:o[1]||(o[1]=n=>t("selectAction",n)),onSelectFile:o[2]||(o[2]=n=>t("selectFile",n)),onSelectPackage:o[3]||(o[3]=n=>t("selectPackage",n))},null,8,["action-items","cards","largest-files","package-insights","package-type-summary"])]),_:1},8,["items"])])):e.activeTab==="diagnostics"?(b(),y("section",Au,[C(kn,{"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:o[4]||(o[4]=n=>t("addActionToQueue",n)),onClearCompletedWorkQueue:o[5]||(o[5]=n=>t("clearCompletedWorkQueue")),onCopyPr:o[6]||(o[6]=n=>t("copyPr")),onCopyWorkQueue:o[7]||(o[7]=n=>t("copyWorkQueue")),onRemoveWorkQueueItem:o[8]||(o[8]=n=>t("removeWorkQueueItem",n)),onSelectAction:o[9]||(o[9]=n=>t("selectAction",n)),onSelectWorkQueueItem:o[10]||(o[10]=n=>t("selectWorkQueueItem",n)),onSetBaseline:o[11]||(o[11]=n=>t("setBaseline",n)),onSetComparisonMode:o[12]||(o[12]=n=>t("setComparisonMode",n)),onToggleWorkQueueItem:o[13]||(o[13]=n=>t("toggleWorkQueueItem",n))},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"?(b(),y("section",Pu,[C(me,{"grid-class":"grid h-full min-h-0 gap-2 overflow-hidden",items:e.reviewLayoutItems,"storage-key":"weapp-vite:dashboard:analyze-layout:review"},{review:P(()=>[C(Ui,{checklist:e.prReviewChecklist,"copy-status":e.copyStatus,onCopy:o[14]||(o[14]=n=>t("copyReviewChecklist")),onSelect:o[15]||(o[15]=n=>t("selectReviewChecklistItem",n))},null,8,["checklist","copy-status"])]),_:1},8,["items"])])):e.activeTab==="treemap"?(b(),y("section",Wu,[C(me,{"grid-class":"grid h-full min-h-0 gap-2 overflow-hidden",items:e.treemapLayoutItems,"storage-key":"weapp-vite:dashboard:analyze-layout:treemap"},{treemap:P(()=>[C(_u,{"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:o[16]||(o[16]=n=>t("focusTreemapSelection")),onResetFocus:o[17]||(o[17]=n=>t("resetTreemapFocus")),onUpdateFilterMode:o[18]||(o[18]=n=>t("updateTreemapFilterMode",n))},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"?(b(),y("section",Ru,[C(Vr,{"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:o[19]||(o[19]=n=>t("selectBudgetWarning",n)),onSelectFile:o[20]||(o[20]=n=>t("selectFile",n))},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"?(b(),y("section",Du,[C(me,{"grid-class":"grid h-full min-h-0 gap-2 overflow-hidden",items:e.sourceLayoutItems,"storage-key":"weapp-vite:dashboard:analyze-layout:source"},{source:P(()=>[C($u,{"active-file-key":e.activeLargestFileKey,files:e.filteredLargestFiles,theme:e.theme,onSelectFile:o[21]||(o[21]=n=>t("selectFile",n))},null,8,["active-file-key","files","theme"])]),_:1},8,["items"])])):e.activeTab==="packages"?(b(),y("section",Nu,[C(me,{"grid-class":"grid h-full min-h-0 gap-2 overflow-hidden",items:e.packagesLayoutItems,"storage-key":"weapp-vite:dashboard:analyze-layout:packages"},{packages:P(()=>[C(wi,{"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"])])):(b(),y("section",ju,[C(me,{"grid-class":"grid h-full min-h-0 gap-2 overflow-hidden",items:e.modulesLayoutItems,"storage-key":"weapp-vite:dashboard:analyze-layout:modules"},{modules:P(()=>[C(kd,{"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"])]))}}),Ou={class:"h-4.5 w-4.5"},Eu={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)"},Uu=["onClick"],Ku={class:"mt-0.5 h-4.5 w-4.5 text-(--dashboard-text-soft)"},qu={class:"min-w-0"},Vu={class:"block font-medium"},Ju={class:"mt-0.5 block text-xs leading-5 text-(--dashboard-text-soft)"},Hu=N({__name:"AnalyzeExportMenu",props:{open:{type:Boolean}},emits:["update:open","copySummary","copyMarkdown","copyPr","exportJson","exportMarkdown","exportCsv"],setup(e,{emit:a}){const t=a,r=[{key:"summary",label:"复制摘要",description:"关键指标和首要风险,适合 IM 快速同步。",iconName:"metric-copy",action:()=>t("copySummary")},{key:"markdown-copy",label:"复制完整报告",description:"包含预算、包体、Top 文件和重复模块表格。",iconName:"file-samples",action:()=>t("copyMarkdown")},{key:"pr",label:"复制 PR 摘要",description:"面向评审评论的增量、预算和重复模块摘要。",iconName:"metric-copy",action:()=>t("copyPr")},{key:"json",label:"导出 JSON",description:"保留原始 analyze payload,适合离线排查。",iconName:"metric-size-outline",action:()=>t("exportJson")},{key:"markdown",label:"导出 MD",description:"生成完整 Markdown 报告文件。",iconName:"file-samples",action:()=>t("exportMarkdown")},{key:"csv",label:"导出 CSV",description:"导出包、文件、重复模块和增量归因明细。",iconName:"file-samples",action:()=>t("exportCsv")}];return(o,n)=>(b(),y("div",{class:"relative shrink-0",onClick:n[1]||(n[1]=at(()=>{},["stop"]))},[s("button",{class:M(u(be)({kind:"nav",active:e.open})),type:"button",onClick:n[0]||(n[0]=l=>t("update:open",!e.open))},[s("span",Ou,[C(ae,{name:"nav-menu"})]),n[2]||(n[2]=O(" 更多 ",-1))],2),e.open?(b(),y("div",Eu,[(b(),y(F,null,L(r,l=>s("button",{key:l.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:l.action},[s("span",Ku,[C(ae,{name:l.iconName},null,8,["name"])]),s("span",qu,[s("span",Vu,h(l.label),1),s("span",Ju,h(l.description),1)])],8,Uu)),64))])):_("",!0)]))}}),Gu={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)"},Yu={class:"flex min-w-0 flex-1 flex-nowrap items-center gap-2 overflow-x-auto pb-0.5"},Xu={class:"h-4.5 w-4.5"},Zu={class:"h-4.5 w-4.5"},ec=["disabled"],tc={class:"h-4.5 w-4.5"},ac=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:a}){const t=a;return(r,o)=>(b(),y("section",Gu,[s("div",Yu,[e.canSearch?(b(),y("button",{key:0,class:M(["shrink-0",u(be)({kind:"nav",active:!1})]),onClick:o[0]||(o[0]=n=>t("openSearch"))},[s("span",Xu,[C(ae,{name:"metric-search"})]),o[10]||(o[10]=O(" 搜索 ",-1))],2)):_("",!0),e.canSearch?(b(),y("button",{key:1,class:M(["shrink-0",u(be)({kind:"nav",active:!1})]),onClick:o[1]||(o[1]=n=>t("copyViewLink"))},[s("span",Zu,[C(ae,{name:"metric-link"})]),o[11]||(o[11]=O(" 复制视图 ",-1))],2)):_("",!0),e.canSearch?(b(),y("button",{key:2,class:M(["shrink-0 disabled:cursor-not-allowed disabled:opacity-55",u(be)({kind:"nav",active:!1})]),disabled:!e.canResetView,onClick:o[2]||(o[2]=n=>t("resetView"))},[s("span",tc,[C(ae,{name:"metric-reset"})]),o[12]||(o[12]=O(" 重置视图 ",-1))],10,ec)):_("",!0),e.exportStatus?(b(),W(Ue,{key:3,class:"shrink-0",label:e.exportStatus,uppercase:""},null,8,["label"])):_("",!0),e.openWorkQueueCount>0?(b(),W(Ue,{key:4,class:"shrink-0","icon-name":"metric-bookmark",label:`${e.openWorkQueueCount} 个待处理`,uppercase:""},null,8,["label"])):_("",!0),(b(!0),y(F,null,L(e.statusPills,n=>(b(),W(Ue,he({key:n.label,class:"shrink-0"},{ref_for:!0},n,{uppercase:""}),null,16))),128))]),e.canSearch?(b(),W(Hu,{key:0,open:e.moreMenuOpen,"onUpdate:open":o[3]||(o[3]=n=>t("update:moreMenuOpen",n)),onCopyMarkdown:o[4]||(o[4]=n=>t("copyMarkdown")),onCopyPr:o[5]||(o[5]=n=>t("copyPr")),onCopySummary:o[6]||(o[6]=n=>t("copySummary")),onExportCsv:o[7]||(o[7]=n=>t("exportCsv")),onExportJson:o[8]||(o[8]=n=>t("exportJson")),onExportMarkdown:o[9]||(o[9]=n=>t("exportMarkdown"))},null,8,["open"])):_("",!0)]))}});function oc(e){return e==="blocked"?"Blocked":e==="review"?"Review":"Ready"}function rc(e){return e==="blocked"?"PR 合并前仍有阻断项":e==="review"?"建议完成复核后再合并":"当前清单未发现发布风险"}function Ve(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 sc(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 nc(e){return e.items.length===0?[`- [x] ${e.emptyText}`]:e.items.map(a=>`- [${a.checked?"x":" "}] ${a.title}:${a.detail}`)}function lc(e){return["## PR 风险清单","",`状态:${e.label}`,e.headline,"",...e.metrics.map(a=>`- ${a.label}:${a.value}`),"",...e.lanes.flatMap(a=>[`### ${a.title}`,"",...nc(a),""])].join(`
|
|
23
|
-
`)}function dc(e){const a=e.actionItems.filter(g=>g.tone==="critical"),t=e.actionItems.filter(g=>g.tone==="warning"),r=e.workQueueItems.filter(g=>!g.completedAt),o=e.workQueueItems.filter(g=>g.completedAt),n=new Set(e.workQueueItems.map(g=>g.targetKey)),l=e.actionItems.filter(g=>g.tone!=="critical"&&g.tone!=="success"&&!n.has(g.key)).slice(0,4),c=a.length>0?"blocked":t.length>0||r.length>0?"review":"ready",m=[{key:"blockers",title:"合并前阻断",description:"必须先处理的预算、增长或产物异常。",items:a.slice(0,5).map(Ve),emptyText:"没有阻断项。"},{key:"verification",title:"评审复核",description:"需要 reviewer 主动确认的高风险变化。",items:t.slice(0,6).map(Ve),emptyText:"没有需要额外复核的风险。"},{key:"followups",title:"后续跟进",description:"来自处理清单和剩余建议动作的后续事项。",items:[...r.slice(0,4).map(sc),...l.map(Ve)].slice(0,6),emptyText:o.length>0?"处理清单已完成。":"没有待跟进事项。"}],p={status:c,label:oc(c),headline:rc(c),description:`${e.actionItems.length} 个分析动作 · ${r.length} 个待处理清单`,metrics:[{label:"阻断项",value:a.length},{label:"复核项",value:t.length},{label:"待处理",value:r.length},{label:"已完成",value:o.length}],lanes:m};return{...p,report:lc(p)}}const ge="\0",ic=[{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 _e(e){return`package${ge}${e}`}function Ze(e,a){return`file${ge}${e}${ge}${a}`}function Ie(e,a,t){return`module${ge}${e}${ge}${a}${ge}${t}`}function uc(e,a){return`asset${ge}${e}${ge}${a}`}function cc(e){if(!e)return"";const a=[];return e.kind==="package"?(a.push(`<strong>${e.packageLabel}</strong>`),a.push(`类型:${e.packageType}`),a.push(`产物数量:${e.fileCount}`),e.totalBytes&&a.push(`累计体积:${B(e.totalBytes)}`)):e.kind==="file"?(a.push(`<strong>${e.fileName}</strong>`),a.push(`所属:${e.packageLabel}`),a.push(`类型:${e.type==="chunk"?"代码 chunk":"资源"} · 来源:${e.from}`),a.push(`体积:${B(e.bytes)}`),e.childCount>0&&a.push(`模块数量:${e.childCount}`)):e.kind==="module"?(a.push(`<strong>${e.source}</strong>`),a.push(`所属:${e.packageLabel} → ${e.fileName}`),a.push(`源码类型:${Da(e.sourceType)}`),a.push(`模块体积:${B(e.bytes??e.originalBytes)}`),e.packageCount>1&&a.push(`跨包复用:${e.packageCount} 次`)):e.kind==="asset"&&(a.push(`<strong>${e.source}</strong>`),a.push(`所属:${e.packageLabel} → ${e.fileName}`),a.push(`资源体积:${B(e.bytes)}`)),a.join("<br/>")}function mc(e){return`${(e.ratio*100).toFixed(1)}%`}function pc(e,a,t){if(!(!a||!t))return e.find(r=>r.packageId===a&&r.file===t)}function bc(e,a){const t=e.packages[0],r=t?.files[0]??"",o=a.find(l=>l.id===t?.packageId),n=o?.label??t?.packageLabel??"";return{key:`duplicate:${e.id}`,kind:"duplicate",title:`减少重复模块 ${e.source}`,meta:`${e.packageCount} 个包复用 · ${e.advice}`,value:`可省 ${B(e.estimatedSavingBytes)}`,tone:e.estimatedSavingBytes>1024?"warning":"info",tab:"modules",priority:72+Math.min(e.estimatedSavingBytes/1024,18),moduleMeta:t&&o?{kind:"module",nodeId:Ie(t.packageId,r,e.id),packageId:t.packageId,packageLabel:n,fileName:r,source:e.source,sourceType:e.sourceType,bytes:e.bytes,packageCount:e.packageCount}:void 0}}function gc(e,a,t){const r=pc(a,e.packageId,e.file),o=t.find(l=>l.id===e.packageId),n=!r&&e.moduleId&&e.packageId&&e.file&&o?{kind:"module",nodeId:Ie(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:`+${B(e.deltaBytes)}`,tone:e.deltaBytes>1024?"warning":"info",tab:r?"files":"modules",priority:80+Math.min(e.deltaBytes/1024,15),file:r,moduleMeta:n}}function fc(e){return{actionItems:k(()=>{const t=[];for(const o of e.budgetWarnings.value)t.push({key:`budget:${o.id}`,kind:"budget",title:`处理 ${o.label} 预算`,meta:`${o.status==="critical"?"已超预算":"接近预算"} · 当前 ${B(o.currentBytes)} / ${B(o.limitBytes)}`,value:mc(o),tone:o.status==="critical"?"critical":"warning",tab:"files",priority:o.status==="critical"?100+o.ratio:90+o.ratio,warning:o});for(const o of e.incrementAttribution.value.slice(0,12))t.push(gc(o,e.largestFiles.value,e.packageInsights.value));for(const o of e.duplicateModules.value.filter(n=>n.estimatedSavingBytes>0).slice(0,12))t.push(bc(o,e.packageInsights.value));const r=e.largestFiles.value[0];return r&&t.push({key:`file:${r.packageId}:${r.file}`,kind:"file",title:`查看最大文件 ${r.file}`,meta:`${r.packageLabel} · ${r.type} · 压缩后 ${B(r.compressedSize)}`,value:B(r.size),tone:"success",tab:"files",priority:45,file:r}),t.sort((o,n)=>n.priority-o.priority||o.title.localeCompare(n.title))})}}function we(e){return e.filter(a=>a!==void 0&&a!=="").join(" ").toLowerCase()}function Kt(e,a,t){return e.find(r=>r.id===a||r.label===t)}function yc(e,a,t){if(!(!a||!t))return e.find(r=>r.packageId===a&&r.file===t)}function hc(e){return{key:`package:${e.id}`,kind:"package",title:e.label,meta:`${ie(e.type)} · ${e.fileCount} 个产物 · ${e.moduleCount} 个模块`,value:B(e.totalBytes),keywords:we([e.id,e.label,e.type,e.totalBytes]),tab:"packages",packageMeta:{kind:"package",nodeId:_e(e.id),packageId:e.id,packageLabel:e.label,packageType:e.type,fileCount:e.fileCount,totalBytes:e.totalBytes}}}function vc(e){return{key:`file:${e.packageId}:${e.file}`,kind:"file",title:e.file,meta:`${e.packageLabel} · ${e.type} · 压缩后 ${B(e.compressedSize)}`,value:B(e.size),keywords:we([e.packageId,e.packageLabel,e.file,e.type,e.source,e.size]),tab:"files",file:e}}function xc(e){return{key:`budget:${e.id}`,kind:"budget",title:`${e.label} 预算`,meta:`${e.status==="critical"?"已超预算":"接近预算"} · ${B(e.currentBytes)} / ${B(e.limitBytes)}`,value:`${(e.ratio*100).toFixed(1)}%`,keywords:we([e.id,e.label,e.scope,e.status,e.currentBytes]),tab:"files",warning:e}}function kc(e,a){const t=e.packages[0],r=t?.files[0]??"",o=Kt(a,t?.packageId,t?.packageLabel),n=o?.label??t?.packageLabel??"";return{key:`module:${e.id}`,kind:"module",title:e.source,meta:`${e.sourceType} · ${e.packageCount} 个包复用 · ${e.advice}`,value:`可省 ${B(e.estimatedSavingBytes)}`,keywords:we([e.id,e.source,e.sourceType,e.packageCount,e.packages.map(l=>l.packageLabel).join(" ")]),tab:"modules",moduleMeta:t&&o?{kind:"module",nodeId:Ie(t.packageId,r,e.id),packageId:t.packageId,packageLabel:n,fileName:r,source:e.source,sourceType:e.sourceType,bytes:e.bytes,packageCount:e.packageCount}:void 0}}function $c(e,a,t){const r=yc(a,e.packageId,e.file),o=Kt(t,e.packageId,e.packageLabel);return{key:`increment:${e.key}`,kind:"increment",title:e.label,meta:`${e.category} · ${e.advice}`,value:`+${B(e.deltaBytes)}`,keywords:we([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&&o?{kind:"module",nodeId:Ie(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 wc(e){return{key:`action:${e.key}`,kind:"action",title:e.title,meta:e.meta,value:e.value,keywords:we([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 Bc(e){return{commandItems:k(()=>[...e.actionItems.value.map(wc),...e.budgetWarnings.value.map(xc),...e.packageInsights.value.map(hc),...e.largestFiles.value.map(vc),...e.duplicateModules.value.map(t=>kc(t,e.packageInsights.value)),...e.incrementAttribution.value.map(t=>$c(t,e.largestFiles.value,e.packageInsights.value))])}}const qt=20*1024*1024,Le=2*1024*1024,Sc=.85;function ue(e){return e.size??0}function Me(e){return e.brotliSize??e.gzipSize??Rt(ue(e),e.file,e.type)}function Vt(e){return typeof e.brotliSize=="number"||typeof e.gzipSize=="number"?"real":"estimated"}function Ae(e,a){return`${e}\0${a}`}function Cc(e){const a=new Map,t=new Map,r=new Map;let o=0,n=0;for(const l of e?.packages??[]){let c=0;for(const m of l.files){const p=ue(m);c+=p,o+=p,n+=Me(m),t.set(Ae(l.id,m.file),p);for(const g of m.modules??[]){const i=g.bytes??g.originalBytes??0,x=r.get(g.id);(!x||x.bytes<i)&&r.set(g.id,{source:g.source,sourceType:g.sourceType,bytes:i,packageId:l.id,packageLabel:l.label,file:m.file})}}a.set(l.id,c)}return{packageBytes:a,fileBytes:t,moduleBytes:r,totalBytes:o,compressedBytes:n}}function Ic(e){const a=new Map;for(const t of e.packages)for(const r of t.files)for(const o of r.modules??[])a.has(o.id)||a.set(o.id,{source:o.source,sourceType:o.sourceType,packageId:t.id,packageLabel:t.label,file:r.file});return a}function Mc(e){const a=new Map;for(const t of e?.packages??[])for(const r of t.files)for(const o of r.modules??[]){const n=a.get(o.id),l=o.bytes??0,c=o.originalBytes??l;if(!n){a.set(o.id,{bytes:l,originalBytes:c,sourceType:o.sourceType});continue}a.set(o.id,{bytes:Math.max(n.bytes,l),originalBytes:Math.max(n.originalBytes,c),sourceType:n.sourceType})}return a}function Tc(e){if(e!=="virtual")return Le}function Fc(e,a){const t=a.metadata?.budgets;if(!t)return Tc(e);if(e==="main")return t.mainBytes;if(e==="subPackage")return t.subPackageBytes;if(e==="independent")return t.independentBytes}function It(e){const a=e.limitBytes>0?e.currentBytes/e.limitBytes:0,t=e.warningRatio??Sc;if(!(a<t))return{id:e.id,label:e.label,scope:e.scope,currentBytes:e.currentBytes,limitBytes:e.limitBytes,ratio:a,status:a>=1?"critical":"warning"}}function Fe(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 Lc(e){if(!e)return[];const a=[],t=e.packages.flatMap(n=>n.files).reduce((n,l)=>n+ue(l),0),r=e.metadata?.budgets,o=It({id:"__total__",label:"总包",scope:"total",currentBytes:t,limitBytes:r?.totalBytes??qt,warningRatio:r?.warningRatio});o&&a.push(o);for(const n of e.packages){const l=Fc(n.type,e);if(!l)continue;const c=It({id:n.id,label:n.label,scope:n.type,currentBytes:n.files.reduce((m,p)=>m+ue(p),0),limitBytes:l,warningRatio:r?.warningRatio});c&&a.push(c)}return a.sort((n,l)=>l.ratio-n.ratio||n.label.localeCompare(l.label))}function _c(e){const a=e?.metadata?.budgets,t=a?.source??"default";return[{key:"total",label:"总包预算",value:`${Fe(a?.totalBytes??qt)}`,source:t},{key:"main",label:"主包预算",value:`${Fe(a?.mainBytes??Le)}`,source:t},{key:"subPackage",label:"分包预算",value:`${Fe(a?.subPackageBytes??Le)}`,source:t},{key:"independent",label:"独立分包预算",value:`${Fe(a?.independentBytes??Le)}`,source:t}]}function Mt(e,a){return e.includes("wevu")||e.includes("@weapp-vite/dashboard")?"WeVu / runtime":a==="node_modules"||e.includes("node_modules")?"第三方依赖":a==="workspace"?"工作区包":a==="plugin"?"插件生成":e.endsWith(".wxss")||e.endsWith(".css")||e.endsWith(".scss")?"样式资源":e.endsWith(".wxml")||e.endsWith(".json")?"页面结构":"业务源码"}function Tt(e,a){return e==="第三方依赖"?"检查依赖边界或公共入口。":e==="WeVu / runtime"?"排查组件和 API 引用边界。":e==="样式资源"?"检查样式复用和生成范围。":a?"确认分包归属和懒加载边界。":"对比新增引用和共享模块。"}function zc(e){if(!e.result||!e.previousResult)return[];const a=[],t=Ic(e.result);for(const r of e.result.packages)for(const o of r.files){const n=ue(o),l=e.previousMaps.fileBytes.get(Ae(r.id,o.file))??0,c=n-l;if(c<=0)continue;const m=Mt(o.source??o.file);a.push({key:`file:${r.id}:${o.file}`,label:o.file,category:m,packageId:r.id,packageLabel:r.label,file:o.file,currentBytes:n,previousBytes:l,deltaBytes:c,advice:Tt(m,l===0)})}for(const[r,o]of e.moduleInfoMap){const n=e.previousMaps.moduleBytes.get(r)?.bytes??0,l=o.bytes-n;if(l<=0)continue;const c=e.previousMaps.moduleBytes.get(r),m=t.get(r),p=m?.source??c?.source??r,g=Mt(p,m?.sourceType??o.sourceType);a.push({key:`module:${r}`,label:p,category:g,packageId:m?.packageId??c?.packageId,packageLabel:m?.packageLabel??c?.packageLabel??"",file:m?.file??c?.file,moduleId:r,sourceType:m?.sourceType??o.sourceType,currentBytes:o.bytes,previousBytes:n,deltaBytes:l,advice:Tt(g,n===0)})}return a.sort((r,o)=>o.deltaBytes-r.deltaBytes||r.category.localeCompare(o.category)||r.label.localeCompare(o.label))}function Ac(e){const a=new Map;for(const t of e){const r=a.get(t.category)??{category:t.category,count:0,deltaBytes:0};r.count+=1,r.deltaBytes+=t.deltaBytes,a.set(t.category,r)}return[...a.values()].sort((t,r)=>r.deltaBytes-t.deltaBytes||r.count-t.count||t.category.localeCompare(r.category))}function Pc(e,a){return{packageId:a.packageId,packageLabel:e.get(a.packageId)??a.packageId,files:a.files}}function Wc(e,a){return e.includes("wevu")||e.includes("@weapp-vite/dashboard")?"wevu / dashboard runtime":a==="node_modules"?"第三方依赖":a==="plugin"?"插件生成":a==="workspace"?"工作区包":e.startsWith("pages/")||e.includes("/pages/")?"业务页面":e.startsWith("components/")||e.includes("/components/")?"业务组件":e.startsWith("shared/")||e.includes("/shared/")||e.includes("/utils/")?"业务共享":"业务源码"}function Rc(e,a){return{sourceType:e,sourceCategory:a,count:0,bytes:0}}function Dc(e,a,t,r){return a.some(n=>t.get(n.packageId)==="independent")?r>0?"含独立分包,先确认隔离要求,再评估公共入口。":"含独立分包,重复可能来自隔离边界。":e==="node_modules"?"依赖被多个包带入,检查引用边界或考虑主包公共入口。":e==="src"||e==="workspace"?"共享源码跨包重复,优先抽公共模块或调整分包归属。":e==="plugin"?"插件生成内容跨包重复,检查插件产物输出策略。":"检查该模块是否需要在多个包内重复存在。"}function Nc(e){return e.result?e.result.modules.filter(a=>a.packages.length>1).map(a=>{const t=e.moduleInfoMap.get(a.id),r=a.packages.map(l=>Pc(e.packageLabelMap,l)),o=t?.bytes??t?.originalBytes??0,n=o*Math.max(a.packages.length-1,0);return{id:a.id,source:a.source,sourceType:a.sourceType,packageCount:a.packages.length,bytes:o,estimatedSavingBytes:n,advice:Dc(a.sourceType,r,e.packageTypeMap,n),packages:r}}).sort((a,t)=>t.estimatedSavingBytes-a.estimatedSavingBytes||t.packageCount-a.packageCount||t.bytes-a.bytes||a.source.localeCompare(t.source)):[]}function jc(e,a){const t=new Map;for(const r of e?.modules??[]){const o=a.get(r.id),n=Wc(r.source,r.sourceType),l=`${r.sourceType}:${n}`,c=t.get(l)??Rc(r.sourceType,n);c.count+=1,c.bytes+=o?.bytes??o?.originalBytes??0,t.set(l,c)}return[...t.values()].sort((r,o)=>o.bytes-r.bytes||o.count-r.count||r.sourceCategory.localeCompare(o.sourceCategory))}function Qc(e,a){return{label:e,value:a}}function Oc(e,a,t){const r=ue(a),o=t.get(Ae(e.id,a.file));return{packageId:e.id,packageLabel:e.label,packageType:e.type,file:a.file,size:r,gzipSize:a.gzipSize,brotliSize:a.brotliSize,compressedSize:Me(a),compressedSizeSource:Vt(a),sizeDeltaBytes:typeof o=="number"?r-o:void 0,type:a.type,from:a.from,isEntry:!!a.isEntry,moduleCount:a.modules?.length??0,modules:a.modules,source:a.source}}function Ec(e,a,t){const r=ue(a),o=t.get(Ae(e,a.file));return{file:a.file,size:r,gzipSize:a.gzipSize,brotliSize:a.brotliSize,compressedSize:Me(a),compressedSizeSource:Vt(a),sizeDeltaBytes:typeof o=="number"?r-o:void 0,type:a.type,from:a.from,isEntry:!!a.isEntry,moduleCount:a.modules?.length??0}}function Uc(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};const a=e.result.packages.flatMap(m=>m.files),t=a.reduce((m,p)=>m+ue(p),0),r=a.reduce((m,p)=>m+(p.gzipSize??0),0),o=a.reduce((m,p)=>m+(p.brotliSize??0),0),n=a.reduce((m,p)=>m+Rt(ue(p),p.file,p.type),0),l=a.some(m=>typeof m.gzipSize=="number"||typeof m.brotliSize=="number"),c=l?a.reduce((m,p)=>m+Me(p),0):n;return{packageCount:e.result.packages.length,moduleCount:e.result.modules.length,duplicateCount:e.result.modules.filter(m=>m.packages.length>1).length,totalBytes:t,gzipBytes:r,brotliBytes:o,estimatedCompressedBytes:n,compressedBytes:c,compressedSizeSource:l?"real":"estimated",sizeDeltaBytes:e.previousMaps.totalBytes>0?t-e.previousMaps.totalBytes:void 0,compressedDeltaBytes:e.previousMaps.compressedBytes>0?c-e.previousMaps.compressedBytes:void 0,subpackageCount:e.result.subPackages.length,entryCount:a.filter(m=>m.isEntry).length,budgetWarningCount:e.budgetWarnings.length}}function Kc(e){const a=new Map;for(const t of e?.packages??[])a.set(t.type,(a.get(t.type)??0)+1);return Array.from(a.entries(),([t,r])=>Qc(t,r)).sort((t,r)=>r.value-t.value||t.label.localeCompare(r.label))}function qc(e,a){return e?e.packages.map(t=>{const r=new Set;let o=0;for(const x of e.modules)x.packages.some(v=>v.packageId===t.id)&&(r.add(x.id),x.packages.length>1&&o++);const n=t.files.map(x=>Ec(t.id,x,a.fileBytes)).sort((x,v)=>v.size-x.size||x.file.localeCompare(v.file)).slice(0,5),l=t.files.reduce((x,v)=>x+ue(v),0),c=t.files.reduce((x,v)=>x+(v.gzipSize??0),0),m=t.files.reduce((x,v)=>x+(v.brotliSize??0),0),p=t.files.reduce((x,v)=>x+Me(v),0),g=t.files.some(x=>typeof x.gzipSize=="number"||typeof x.brotliSize=="number")?"real":"estimated",i=a.packageBytes.get(t.id);return{id:t.id,label:t.label,type:t.type,totalBytes:l,gzipBytes:c,brotliBytes:m,compressedBytes:p,compressedSizeSource:g,sizeDeltaBytes:typeof i=="number"?l-i:void 0,fileCount:t.files.length,chunkCount:t.files.filter(x=>x.type==="chunk").length,assetCount:t.files.filter(x=>x.type==="asset").length,moduleCount:r.size,duplicateModuleCount:o,entryFileCount:t.files.filter(x=>x.isEntry).length,topFiles:n}}).sort((t,r)=>r.totalBytes-t.totalBytes||t.label.localeCompare(r.label)):[]}function Vc(e,a){const t=[];for(const r of e?.packages??[])for(const o of r.files)t.push(Oc(r,o,a));return t.sort((r,o)=>o.size-r.size||r.file.localeCompare(o.file)).slice(0,18)}function Jc(e,a){const t=k(()=>Cc(a?.value??null)),r=k(()=>new Map((e.value?.packages??[]).map(f=>[f.id,f.label]))),o=k(()=>new Map((e.value?.packages??[]).map(f=>[f.id,f.type]))),n=k(()=>Mc(e.value)),l=k(()=>Lc(e.value)),c=k(()=>_c(e.value)),m=k(()=>zc({result:e.value,previousResult:a?.value,previousMaps:t.value,moduleInfoMap:n.value})),p=k(()=>Ac(m.value)),g=k(()=>Uc({result:e.value,previousMaps:t.value,budgetWarnings:l.value})),i=k(()=>Kc(e.value)),x=k(()=>qc(e.value,t.value)),v=k(()=>Vc(e.value,t.value.fileBytes)),S=k(()=>Nc({result:e.value,moduleInfoMap:n.value,packageLabelMap:r.value,packageTypeMap:o.value})),$=k(()=>jc(e.value,n.value));return{summary:g,packageTypeSummary:i,packageInsights:x,largestFiles:v,duplicateModules:S,moduleSourceSummary:$,budgetWarnings:l,budgetLimitItems:c,incrementAttribution:m,incrementSummary:p,subPackages:k(()=>e.value?.subPackages??[])}}const Hc=["action","file","budget"],Gc=["critical","warning","info","success"],Yc=["overview","diagnostics","treemap","files","source","packages","modules"];function Xc(){return new Date().toISOString()}function Je(e,a){return typeof e=="string"&&a.includes(e)}function Zc(e){if(!e||typeof e!="object")return!1;const a=e;return typeof a.id=="string"&&Je(a.targetKind,Hc)&&typeof a.targetKey=="string"&&typeof a.title=="string"&&typeof a.meta=="string"&&Je(a.tone,Gc)&&Je(a.tab,Yc)&&typeof a.createdAt=="string"}function it(e){if(!Array.isArray(e))return[];const a=new Map;for(const t of e)Zc(t)&&a.set(t.id,{id:t.id,targetKind:t.targetKind,targetKey:t.targetKey,title:t.title,meta:t.meta,value:typeof t.value=="string"?t.value:void 0,tone:t.tone,tab:t.tab,createdAt:t.createdAt,completedAt:typeof t.completedAt=="string"?t.completedAt:void 0});return[...a.values()].sort((t,r)=>!!t.completedAt!=!!r.completedAt?t.completedAt?1:-1:Date.parse(r.createdAt)-Date.parse(t.createdAt))}function em(e,a=Xc()){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:a}}function tm(e){const a=it(e).map(t=>`| ${t.completedAt?"完成":"待处理"} | ${t.title.replaceAll("|","\\|")} | ${t.meta.replaceAll("|","\\|")} | ${t.value??"-"} | ${t.tab} |`);return["# dashboard 处理清单","",`待处理:${e.filter(t=>!t.completedAt).length}`,`已完成:${e.filter(t=>t.completedAt).length}`,"","| 状态 | 事项 | 说明 | 数值 | 视图 |","| --- | --- | --- | ---: | --- |",a.join(`
|
|
24
|
-
`)
|
|
25
|
-
`)}function
|
|
26
|
-
`)}function
|
|
27
|
-
`),
|
|
28
|
-
`),r=e.duplicateModules.slice(0,10).map(
|
|
29
|
-
`),
|
|
30
|
-
`),
|
|
31
|
-
`)}function
|
|
32
|
-
`),
|
|
33
|
-
`),r=e.budgetWarnings.slice(0,5).map(
|
|
34
|
-
`),
|
|
35
|
-
`);return[
|
|
36
|
-
`)}function
|
|
37
|
-
`)}function He(e){const a=new Blob([`${e.content}
|
|
38
|
-
`],{type:e.type}),t=URL.createObjectURL(a),r=document.createElement("a");r.href=t,r.download=e.filename,r.click(),URL.revokeObjectURL(t)}function dm(e){const a=Y(""),t=k(()=>om({summary:e.summary.value,packageInsights:e.packageInsights.value,duplicateModules:e.duplicateModules.value})),r=k(()=>rm({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})),o=k(()=>sm({summary:e.summary.value,incrementAttribution:e.incrementAttribution.value,incrementSummary:e.incrementSummary.value,budgetWarnings:e.budgetWarnings.value,duplicateModules:e.duplicateModules.value})),n=k(()=>lm({packageInsights:e.packageInsights.value,largestFiles:e.largestFiles.value,duplicateModules:e.duplicateModules.value,incrementAttribution:e.incrementAttribution.value}));async function l(){await G(t.value),a.value="已复制",e.moreMenuOpen.value=!1}async function c(){await G(r.value),a.value="报告已复制",e.moreMenuOpen.value=!1}async function m(){await G(o.value),a.value="PR 摘要已复制",e.moreMenuOpen.value=!1}async function p(){await G(e.prReviewChecklist.value.report),a.value="评审清单已复制"}async function g(){await G(tm(e.workQueueItems.value)),a.value="处理清单已复制"}function i(){e.resultRef.value&&(He({content:JSON.stringify(e.resultRef.value,null,2),filename:"weapp-vite-analyze.json",type:"application/json"}),a.value="已导出",e.moreMenuOpen.value=!1)}function x(){He({content:r.value,filename:"weapp-vite-analyze.md",type:"text/markdown"}),a.value="已导出 MD",e.moreMenuOpen.value=!1}function v(){He({content:n.value,filename:"weapp-vite-analyze.csv",type:"text/csv;charset=utf-8"}),a.value="已导出 CSV",e.moreMenuOpen.value=!1}return{exportStatus:a,copyMarkdownReport:c,copyPrReport:m,copyPrReviewChecklist:p,copySummary:l,copyWorkQueueReport:g,exportCsv:v,exportJson:i,exportMarkdown:x}}function im(e){return Dt.some(a=>a.value===e)?e:"all"}function um(e,a){return a.mode==="all"?!0:a.mode==="selected-package"?a.selectedPackageId?e.packageId===a.selectedPackageId:!1:a.mode==="growth"?a.growthFileKeys.has(`${e.packageId}\0${e.file}`)||(e.modules??[]).some(t=>a.growthModuleIds.has(t.id)):a.mode==="duplicates"?(e.modules??[]).some(t=>a.duplicateModuleIds.has(t.id)):a.mode==="node_modules"?(e.modules??[]).some(t=>t.sourceType==="node_modules"):e.type==="asset"||(e.modules??[]).some(t=>t.sourceType==="src"||t.sourceType==="workspace")}function Ft(e){const a=e.files.filter(o=>um(o,e.filterState)),{meta:t,warning:r}=e;return r&&r.scope!=="total"?a.filter(o=>o.packageId===r.id):t?t.kind==="package"?a.filter(o=>o.packageId===t.packageId):t.kind==="file"||t.kind==="asset"||t.kind==="module"?a.filter(o=>o.packageId===t.packageId&&o.file===t.fileName):a:a}function cm(e){const a=new Map(e.duplicateModules.map(t=>[t.id,t]));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(t=>{const r=a.get(t.id),o=t.bytes??t.originalBytes??0;return{key:t.id,source:t.source,sourceType:t.sourceType,bytes:o,originalBytes:t.originalBytes,duplicatePackageCount:r?.packageCount??1,estimatedSavingBytes:r?.estimatedSavingBytes??0}}).sort((t,r)=>r.estimatedSavingBytes-t.estimatedSavingBytes||r.bytes-t.bytes||t.source.localeCompare(r.source))}function mm(e){const a=nt(),t=lt(),r=k({get(){return im(a.query.filter)},set(i){const x={...a.query};i==="all"?delete x.filter:x.filter=i,t.replace({query:x})}}),o=k(()=>new Set(e.incrementAttribution.value.filter(i=>i.packageId&&i.file).map(i=>`${i.packageId}\0${i.file}`))),n=k(()=>new Set(e.incrementAttribution.value.map(i=>i.moduleId).filter(i=>!!i))),l=k(()=>new Set(e.duplicateModules.value.map(i=>i.id))),c=k(()=>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),m=k(()=>({mode:r.value,selectedPackageId:c.value,growthFileKeys:o.value,growthModuleIds:n.value,duplicateModuleIds:l.value})),p=k(()=>!!c.value);function g(i){i==="selected-package"&&!c.value||(r.value=i)}return{canUseSelectedPackageFilter:p,duplicateModuleIds:l,growthModuleIds:n,handleUpdateTreemapFilterMode:g,selectedPackageId:c,treemapFilterMode:r,treemapFilterState:m}}function pm(e){const a=Y();let t;function r(){t?.resize()}function o(){t?.dispose(),t=void 0}function n(p){a.value=p instanceof HTMLDivElement?p:void 0}function l(p){t?.dispatchAction({type:"treemapRootToNode",seriesIndex:0,targetNodeId:p})}function c(){t?.setOption(e.treemapOption.value,!0),t?.resize()}async function m(){if(e.activeTab.value!=="treemap"){o();return}if(await tt(),!!a.value){if(a.value.clientWidth===0||a.value.clientHeight===0){window.requestAnimationFrame(()=>{m()});return}t||(t=Ka(a.value,e.resolvedTheme.value==="dark"?"dark":void 0,{renderer:"canvas"}),t.on("click",e.handleChartClick)),t.setOption(e.treemapOption.value,!0),t.resize()}}return ne(e.treemapOption,p=>{t&&t.setOption(p,!0)},{deep:!0}),ne(e.activeTab,()=>{m()}),ne(e.resolvedTheme,async()=>{t&&a.value&&o(),await m()}),{bindChartRef:n,destroyChart:o,ensureChart:m,focusTreemapNode:l,handleResize:r,resetTreemapFocus:c}}const bm=.85,gm={light:{green:"#8fd3ad",yellow:"#ead486",red:"#eaa39b"},dark:{green:"#166853",yellow:"#75601f",red:"#81323a"}},fm=.5;function Pe(e,a=0,t=1){return Math.min(t,Math.max(a,e))}function et(e){const a=Number.parseInt(e.slice(1),16);return{red:a>>16&255,green:a>>8&255,blue:a&255}}function Lt(e,a,t){const r=Pe(t),o=Object.values(et(e)),n=Object.values(et(a));return`#${o.map((c,m)=>Math.round(c+(n[m]-c)*r)).map(c=>c.toString(16).padStart(2,"0")).join("")}`}function ym(e,a){const t=Pe(e),r=gm[a];return t<=.5?Lt(r.green,r.yellow,t/.5):Lt(r.yellow,r.red,(t-.5)/.5)}function hm(e,a){return a==="dark"?e>=.82?"#fda4af":e>=.5?"#fde68a":"#5eead4":e>=.82?"#c6756f":e>=.5?"#c3a24d":"#5caf82"}function vm(...e){return e.some(a=>{if(!a)return!1;const t=a.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 xm(e,...a){return vm(...a)?Math.min(e,fm):e}function km(e){const{red:a,green:t,blue:r}=et(e);return(.299*a+.587*t+.114*r)/255>.56?"#17231d":"#f8fafc"}function _t(e,a=!1){const t=km(e),r=t==="#17231d";return{color:t,ellipsis:"…",fontSize:12,fontWeight:a?700:600,lineHeight:16,minMargin:4,overflow:"truncate",...a?{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 We(e,a){const t=ym(e,a);return{itemStyle:{color:t,borderColor:hm(e,a)},label:_t(t),upperLabel:_t(t,!0)}}function $m(e,a){return a?e.type==="main"?a.mainBytes:e.type==="subPackage"?a.subPackageBytes:e.type==="independent"?a.independentBytes:a.totalBytes:0}function wm(e,a,t=bm){if(a<=0)return 0;const r=e/a;return r>=1?1:r>=t?.58+(r-t)/Math.max(1-t,.01)*.32:Pe(r/t*.42,0,.42)}function ut(e,a){if(a<=0)return 0;const t=e/a;return t>=.72?.92:t>=.45?.64+(t-.45)/.27*.22:Pe(t/.45*.46,0,.46)}function Re(e,...a){return xm(e,...a)}function Bm(e,a,t,r,o,n,l){const c=Ie(e,t,n.id),m=Math.max(n.bytes??n.originalBytes??1,1),p=o.get(n.id)??1,g=Math.max(ut(m,r),p>1?.62:0,n.sourceType==="node_modules"?.52:0),i=Re(g,n.id,n.source,t);return{id:c,name:n.source,value:m,meta:{kind:"module",nodeId:c,packageId:e,packageLabel:a,fileName:t,source:n.source,sourceType:n.sourceType,bytes:n.bytes,originalBytes:n.originalBytes,packageCount:p},...We(i,l)}}function Sm(e,a,t,r,o,n){const l=uc(e,t),c=Math.max(r.size??1,1),m=Re(ut(c,o),r.file,r.source,e,a);return{id:l,name:r.source??t,value:c,meta:{kind:"asset",nodeId:l,packageId:e,packageLabel:a,fileName:t,source:r.source??t,bytes:r.size},...We(m,n)}}function Cm(e,a,t,r,o,n,l,c,m){const p=Ze(a,r.file),g=Math.max(n,1),i=Re(Math.max(ut(g,l),c*.72),r.file,r.source,a,e);return{id:p,name:r.file,value:g,meta:{kind:"file",nodeId:p,packageId:a,packageLabel:t.get(a)??e,fileName:r.file,from:r.from,childCount:o.length,type:r.type,bytes:r.size},...We(i,m),children:o.length>0?o:void 0}}function Im(e,a,t,r,o){const n=_e(e.id),l=Re(r,e.id,e.label);return{id:n,name:e.label,value:Math.max(a,1),meta:{kind:"package",nodeId:n,packageId:e.id,packageLabel:e.label,packageType:e.type,fileCount:e.files.length,totalBytes:a},...We(l,o),children:t}}function Ge(e){return e.reduce((a,t)=>a+t.value,0)}function Jt(e,a){return`${e}\0${a}`}function Mm(e,a,t){return t.mode==="all"||t.mode==="selected-package"?!!a.source:t.mode==="growth"?t.growthFileKeys.has(Jt(e,a.file)):t.mode==="source"?!!a.source:!1}function Tm(e,a){return e.mode==="all"||e.mode==="selected-package"?a:e.mode==="growth"?a.filter(t=>e.growthModuleIds.has(t.id)):e.mode==="duplicates"?a.filter(t=>e.duplicateModuleIds.has(t.id)):e.mode==="node_modules"?a.filter(t=>t.sourceType==="node_modules"):a.filter(t=>t.sourceType==="src"||t.sourceType==="workspace")}function Fm(){return{mode:"all",selectedPackageId:null,growthFileKeys:new Set,growthModuleIds:new Set,duplicateModuleIds:new Set}}function Lm(e){const a=new Map(e.result.packages.map(r=>{const o=r.files.reduce((l,c)=>l+(c.size??0),0),n=$m(r,e.result.metadata?.budgets);return[r.id,wm(o,n,e.result.metadata?.budgets?.warningRatio)]})),t=new Map(e.result.packages.map(r=>[r.id,r.files.reduce((o,n)=>o+(n.size??0),0)]));return e.result.packages.flatMap(r=>{if(e.filter.mode==="selected-package"&&(!e.filter.selectedPackageId||r.id!==e.filter.selectedPackageId))return[];const o=r.files.flatMap(l=>{const c=t.get(r.id)??0,m=e.filter.mode==="growth"&&e.filter.growthFileKeys.has(Jt(r.id,l.file)),p=Math.max(l.size??1,1),g=l.type==="chunk"?Tm(e.filter,l.modules??[]).map(x=>Bm(r.id,r.label,l.file,p,e.moduleUsageCount,x,e.theme)):Mm(r.id,l,e.filter)?[Sm(r.id,r.label,l.file,l,c,e.theme)]:[];if(e.filter.mode!=="all"&&e.filter.mode!=="selected-package"&&g.length===0&&!m)return[];const i=e.filter.mode==="all"||e.filter.mode==="selected-package"||m?l.size??Ge(g):Ge(g);return[Cm(r.label,r.id,e.packageLabelMap,l,g,i,c,a.get(r.id)??0,e.theme)]});if(o.length===0)return[];const n=e.filter.mode==="all"||e.filter.mode==="selected-package"?r.files.reduce((l,c)=>l+(c.size??0),0):Ge(o);return[Im(r,n,o,a.get(r.id)??0,e.theme)]})}function _m(e,a,t){const r=k(()=>new Map((e.value?.packages??[]).map(c=>[c.id,c.label]))),o=k(()=>new Map((e.value?.modules??[]).map(c=>[c.id,c.packages.length]))),n=k(()=>{const c=e.value;return c?Lm({result:c,packageLabelMap:r.value,moduleUsageCount:o.value,filter:t?.value??Fm(),theme:a.value}):[]});return{treemapOption:k(()=>({backgroundColor:"transparent",tooltip:{formatter:c=>cc(c.data?.meta),borderColor:a.value==="dark"?"rgba(148, 163, 184, 0.16)":"rgba(71, 85, 105, 0.14)",backgroundColor:a.value==="dark"?"rgba(15, 23, 42, 0.92)":"rgba(255, 255, 255, 0.96)",textStyle:{color:a.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:a.value==="dark"?"rgba(15, 23, 42, 0.88)":"rgba(255, 255, 255, 0.92)",borderWidth:2,gapWidth:2},emphasis:{itemStyle:{borderColor:a.value==="dark"?"#f8fafc":"#0f172a"}},levels:ic,data:n.value}]})),treemapNodes:n}}qa([Va,Ja,Ha,Ga,Ya]);function zm(e){const a=Y(null),t=Y(null),r=Y(null),{canUseSelectedPackageFilter:o,duplicateModuleIds:n,growthModuleIds:l,handleUpdateTreemapFilterMode:c,treemapFilterMode:m,treemapFilterState:p}=mm({duplicateModules:e.duplicateModules,incrementAttribution:e.incrementAttribution,selectedBudgetWarning:r,selectedLargestFile:t,selectedTreemapMeta:a}),{treemapOption:g,treemapNodes:i}=_m(e.resultRef,e.resolvedTheme,p),x=k(()=>e.resultRef.value!==null&&i.value.length===0),v=k(()=>{const R=a.value;return R?.kind!=="module"?e.duplicateModules.value:e.duplicateModules.value.filter(ee=>ee.source===R.source)}),S=k(()=>Ft({files:e.largestFiles.value,filterState:p.value,meta:a.value,warning:r.value})),$=k(()=>S.value.slice(0,10)),f=k(()=>t.value?`${t.value.packageId}:${t.value.file}`:null),d=k(()=>t.value?Ze(t.value.packageId,t.value.file):a.value?.nodeId??null),w=k(()=>{if(t.value)return t.value;const R=a.value;return!R||R.kind==="package"?null:e.largestFiles.value.find(ee=>ee.packageId===R.packageId&&ee.file===R.fileName)??null}),T=k(()=>cm({modules:w.value?.modules??[],mode:m.value,growthModuleIds:l.value,duplicateModuleIds:n.value,duplicateModules:e.duplicateModules.value}));function Q(R){a.value=R.data?.meta??null,t.value=null,r.value=null}const{bindChartRef:Z,destroyChart:z,ensureChart:I,focusTreemapNode:A,handleResize:K,resetTreemapFocus:oe}=pm({activeTab:e.activeTab,resolvedTheme:e.resolvedTheme,treemapOption:g,handleChartClick:Q});function V(R){t.value=R,a.value={kind:"file",nodeId:Ze(R.packageId,R.file),packageId:R.packageId,packageLabel:R.packageLabel,fileName:R.file,from:R.from,childCount:R.moduleCount,type:R.type,bytes:R.size}}function q(R){if(r.value=R,t.value=Ft({files:e.largestFiles.value,filterState:p.value,meta:null,warning:R})[0]??null,!t.value||R.scope==="total"){a.value=null;return}const ee=e.packageInsights.value.find(Qe=>Qe.id===R.id);a.value=ee?{kind:"package",nodeId:_e(ee.id),packageId:ee.id,packageLabel:ee.label,packageType:ee.type,fileCount:ee.fileCount,totalBytes:ee.totalBytes}:null}function j(R){e.activeTab.value="packages",a.value={kind:"package",nodeId:_e(R.id),packageId:R.id,packageLabel:R.label,packageType:R.type,fileCount:R.fileCount,totalBytes:R.totalBytes},t.value=null,r.value=null,m.value="selected-package"}function De(){d.value&&A(d.value)}function Ne(){oe()}function je(){a.value=null,t.value=null,r.value=null}return{activeLargestFileKey:f,bindChartRef:Z,canUseSelectedPackageFilter:o,destroyChart:z,ensureChart:I,filteredDuplicateModules:v,filteredLargestFiles:S,handleFocusTreemapSelection:De,handleResetTreemapFocus:Ne,handleResize:K,handleSelectBudgetWarning:q,handleSelectLargestFile:V,handleSelectPackageInsight:j,handleUpdateTreemapFilterMode:c,isTreemapEmpty:x,resetTreemapSelection:je,selectedBudgetWarning:r,selectedFileModules:T,selectedLargestFile:t,selectedTreemapFocusNodeId:d,selectedTreemapMeta:a,treemapFilterMode:m,visibleLargestFiles:$}}function Am(e){return new URL(e,window.location.origin).toString()}function Pm(e){const a=nt(),t=lt(),r=k(()=>a.fullPath!=="/analyze");async function o(){await G(Am(a.fullPath)),e.exportStatus.value="视图链接已复制",e.moreMenuOpen.value=!1}async function n(){e.resetTreemapSelection(),e.resetPageSelection(),e.moreMenuOpen.value=!1,await t.replace({path:"/analyze",query:{}}),e.exportStatus.value="已重置视图"}return{canResetView:r,copyViewLink:o,resetAnalyzeView:n}}const Ht="weapp-vite:dashboard:analyze-work-queue";function Wm(){try{const e=window.localStorage.getItem(Ht);return it(e?JSON.parse(e):null)}catch{return[]}}function Rm(e){try{window.localStorage.setItem(Ht,JSON.stringify(e))}catch{}}function Dm(){const e=Y([]),a=k(()=>e.value.filter(p=>!p.completedAt)),t=k(()=>e.value.filter(p=>p.completedAt)),r=k(()=>e.value.filter(p=>p.targetKind==="action"&&!p.completedAt).map(p=>p.targetKey));function o(p){e.value=it(p),Rm(e.value)}function n(p){const g=e.value.find(x=>x.id===p.id),i=g?{...g,...p,createdAt:g.createdAt,completedAt:void 0}:p;o([i,...e.value.filter(x=>x.id!==p.id)])}function l(p){const g=new Date().toISOString();o(e.value.map(i=>i.id===p?{...i,completedAt:i.completedAt?void 0:g}:i))}function c(p){o(e.value.filter(g=>g.id!==p))}function m(){o(e.value.filter(p=>!p.completedAt))}return ot(()=>{e.value=Wm()}),{completedWorkQueueItems:t,openWorkQueueItems:a,queuedActionKeys:r,workQueueItems:e,addWorkQueueItem:n,clearCompletedWorkQueueItems:m,removeWorkQueueItem:c,toggleWorkQueueItem:l}}function zt(e){return typeof e!="number"||Number.isNaN(e)||e===0?"":`${e>0?"+":"-"}${B(Math.abs(e))}`}function Nm(e){const a=nt(),t=lt(),r=k({get(){const v=a.query.tab;return v==="diagnostics"||v==="review"||v==="treemap"||v==="files"||v==="source"||v==="packages"||v==="modules"?v:"overview"},set(v){const S={...a.query};v==="overview"?delete S.tab:S.tab=v,t.replace({query:S})}}),o=k(()=>e.packageInsights.value.reduce((v,S)=>v+S.chunkCount,0)),n=k(()=>e.packageInsights.value.reduce((v,S)=>v+S.assetCount,0)),l=k(()=>e.duplicateModules.value.reduce((v,S)=>v+S.bytes,0)),c=k(()=>{const v=e.summary.value,S=v.compressedSizeSource==="real"?"Brotli":"估算压缩后",$=zt(v.compressedDeltaBytes);return`${S} ${B(v.compressedBytes)}${$?` · ${$}`:""}`}),m=k(()=>{const v=zt(e.summary.value.sizeDeltaBytes);return v?`较上次 ${v}`:c.value});function p(){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(o.value),iconName:"metric-chunks"},{label:"Asset 数量",value:String(n.value),iconName:"metric-assets"},{label:"总产物体积",value:B(e.summary.value.totalBytes),detail:c.value,wide:!0,iconName:"metric-size-outline"}]}function g(){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:l.value>0?B(l.value):"0 B",iconName:"metric-copy"},{label:"预算告警",value:String(e.summary.value.budgetWarningCount),detail:m.value,wide:!0,iconName:"metric-time"}]}function i(){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:B(e.summary.value.totalBytes),detail:c.value,wide:!0,iconName:"metric-size"}]}const x=k(()=>r.value==="packages"?p():r.value==="modules"?g():i());return{activeTab:r,topCards:x,packageTypeSummary:e.packageTypeSummary}}const jm=[{id:"metrics",label:"关键指标"}],Qm=[{id:"actions",label:"问题中心"},{id:"work-queue",label:"处理清单"},{id:"history",label:"历史基线"}],Om=[{id:"review",label:"PR 风险清单"}],Em=[{id:"treemap",label:"体积地图"}],Um=[{id:"packages",label:"包与产物"}],Km=[{id:"modules",label:"模块复用"}],qm=[{id:"source",label:"源码对比"}];function Vm(){const e=Y(!1),{resolvedTheme:a}=Na(),{baselineSnapshotId:t,comparisonMode:r,comparisonResultRef:o,historySnapshots:n,lastUpdatedAt:l,resultRef:c,setBaselineSnapshot:m,setComparisonMode:p,updateCount:g}=ja(),i=Jc(c,o),{activeTab:x,topCards:v,packageTypeSummary:S}=Nm({summary:i.summary,packageInsights:i.packageInsights,packageTypeSummary:i.packageTypeSummary,duplicateModules:i.duplicateModules,moduleSourceSummary:i.moduleSourceSummary}),$=zm({activeTab:x,resultRef:c,resolvedTheme:a,largestFiles:i.largestFiles,duplicateModules:i.duplicateModules,incrementAttribution:i.incrementAttribution,packageInsights:i.packageInsights}),{actionItems:f}=fc({budgetWarnings:i.budgetWarnings,incrementAttribution:i.incrementAttribution,duplicateModules:i.duplicateModules,largestFiles:i.largestFiles,packageInsights:i.packageInsights}),d=Dm(),w=k(()=>dc({actionItems:f.value,workQueueItems:d.workQueueItems.value})),{commandItems:T}=Bc({actionItems:f,budgetWarnings:i.budgetWarnings,duplicateModules:i.duplicateModules,incrementAttribution:i.incrementAttribution,largestFiles:i.largestFiles,packageInsights:i.packageInsights}),Q=dm({resultRef:c,summary:i.summary,packageInsights:i.packageInsights,largestFiles:i.largestFiles,duplicateModules:i.duplicateModules,budgetWarnings:i.budgetWarnings,incrementAttribution:i.incrementAttribution,incrementSummary:i.incrementSummary,prReviewChecklist:w,workQueueItems:d.workQueueItems,moreMenuOpen:e}),Z=am({activeTab:x,actionItems:f,workQueueItems:d.workQueueItems,addWorkQueueItem:d.addWorkQueueItem,exportStatus:Q.exportStatus,treemapFilterMode:$.treemapFilterMode,selectedTreemapMeta:$.selectedTreemapMeta,selectedLargestFile:$.selectedLargestFile,selectedBudgetWarning:$.selectedBudgetWarning,handleSelectBudgetWarning:$.handleSelectBudgetWarning,handleSelectLargestFile:$.handleSelectLargestFile}),z=Pm({exportStatus:Q.exportStatus,moreMenuOpen:e,resetPageSelection:Z.resetPageSelection,resetTreemapSelection:$.resetTreemapSelection}),I=k(()=>`${g.value} 次数据同步`),A=k(()=>a.value==="dark"?"status-dark":"status-light"),K=k(()=>[{iconName:A.value,label:I.value},{label:l.value}]),oe=k(()=>$.selectedBudgetWarning.value?.id??null);function V(){e.value=!1}function q(j){j.key==="Escape"&&(e.value=!1),(j.metaKey||j.ctrlKey)&&j.key.toLowerCase()==="k"&&(j.preventDefault(),c.value&&(Z.commandPaletteOpen.value=!0))}return ne(c,()=>{$.resetTreemapSelection(),Z.resetPageSelection()}),ot(()=>{window.addEventListener("resize",$.handleResize),window.addEventListener("keydown",q),window.addEventListener("click",V),$.ensureChart()}),fe(()=>{window.removeEventListener("resize",$.handleResize),window.removeEventListener("keydown",q),window.removeEventListener("click",V),$.destroyChart()}),{...i,...Z,...Q,...$,...z,...d,actionItems:f,activeTab:x,activeBudgetWarningId:oe,baselineSnapshotId:t,commandItems:T,comparisonMode:r,diagnosticsLayoutItems:Qm,historySnapshots:n,metricPackageTypeSummary:S,modulesLayoutItems:Km,moreMenuOpen:e,overviewLayoutItems:jm,packagesLayoutItems:Um,prReviewChecklist:w,resolvedTheme:a,reviewLayoutItems:Om,setBaselineSnapshot:m,setComparisonMode:p,sourceLayoutItems:qm,statusPills:K,topCards:v,treemapFilterOptions:Dt,treemapLayoutItems:Em,resultRef:c}}const Jm={class:"grid h-full min-h-0 grid-rows-[auto_minmax(0,1fr)] gap-2 overflow-hidden"},op=N({__name:"analyze",setup(e){const{actionItems:a,activeBudgetWarningId:t,activeLargestFileKey:r,activeTab:o,activeWorkQueueItemId:n,baselineSnapshotId:l,bindChartRef:c,budgetWarnings:m,canUseSelectedPackageFilter:p,canResetView:g,clearCompletedWorkQueueItems:i,commandItems:x,commandPaletteOpen:v,comparisonMode:S,copyMarkdownReport:$,copyPrReport:f,copyPrReviewChecklist:d,copySummary:w,copyViewLink:T,copyWorkQueueReport:Q,diagnosticsLayoutItems:Z,exportCsv:z,exportJson:I,exportMarkdown:A,exportStatus:K,filteredDuplicateModules:oe,filteredLargestFiles:V,handleAddActionToWorkQueue:q,handleFocusTreemapSelection:j,handleResetTreemapFocus:De,handleSelectAction:Ne,handleSelectBudgetWarning:je,handleSelectLargestFile:R,handleSelectPackageInsight:ee,handleSelectReviewChecklistItem:Qe,handleSelectCommand:Gt,handleSelectWorkQueueItem:Yt,handleUpdateTreemapFilterMode:Xt,historySnapshots:Zt,incrementAttribution:ea,incrementSummary:ta,isTreemapEmpty:aa,largestFiles:oa,metricPackageTypeSummary:ra,modulesLayoutItems:sa,moduleSourceSummary:na,moreMenuOpen:Oe,openWorkQueueItems:la,overviewLayoutItems:da,packageInsights:ia,packagesLayoutItems:ua,prReviewChecklist:ca,queuedActionKeys:ma,removeWorkQueueItem:pa,resetAnalyzeView:ba,resolvedTheme:ga,resultRef:Be,reviewLayoutItems:fa,selectedActionKey:ya,selectedFileModules:ha,selectedTreemapFocusNodeId:va,selectedTreemapMeta:xa,setBaselineSnapshot:ka,setComparisonMode:$a,sourceLayoutItems:wa,statusPills:Ba,summary:Sa,toggleWorkQueueItem:Ca,topCards:Ia,treemapFilterMode:Ma,treemapFilterOptions:Ta,treemapLayoutItems:Fa,visibleLargestFiles:La,workQueueItems:_a}=Vm();return(Hm,ve)=>(b(),y("div",Jm,[u(Be)?_("",!0):(b(),W(_o,{key:0})),C(ac,{"more-menu-open":u(Oe),"onUpdate:moreMenuOpen":ve[0]||(ve[0]=Ee=>U(Oe)?Oe.value=Ee:null),"can-reset-view":u(g),"can-search":!!u(Be),"export-status":u(K),"open-work-queue-count":u(la).length,"status-pills":u(Ba),onCopyMarkdown:u($),onCopyPr:u(f),onCopySummary:u(w),onCopyViewLink:u(T),onExportCsv:u(z),onExportJson:u(I),onExportMarkdown:u(A),onOpenSearch:ve[1]||(ve[1]=Ee=>v.value=!0),onResetView:u(ba)},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"]),u(Be)?(b(),W(Qu,{key:1,"action-items":u(a),"active-budget-warning-id":u(t),"active-largest-file-key":u(r),"active-tab":u(o),"active-work-queue-item-id":u(n),"baseline-snapshot-id":u(l),"bind-chart-ref":u(c),"budget-config":u(Be).metadata?.budgets,"budget-warnings":u(m),"can-use-selected-package-filter":u(p),"comparison-mode":u(S),"copy-status":u(K),"diagnostics-layout-items":u(Z),"filtered-duplicate-modules":u(oe),"filtered-largest-files":u(V),"history-snapshots":u(Zt),"increment-attribution":u(ea),"increment-summary":u(ta),"is-treemap-empty":u(aa),"largest-files":u(oa),"metric-package-type-summary":u(ra),"modules-layout-items":u(sa),"module-source-summary":u(na),"overview-layout-items":u(da),"package-insights":u(ia),"packages-layout-items":u(ua),"pr-review-checklist":u(ca),"queued-action-keys":u(ma),"review-layout-items":u(fa),"selected-action-key":u(ya),"selected-file-modules":u(ha),"selected-treemap-focus-node-id":u(va),"selected-treemap-meta":u(xa),"source-layout-items":u(wa),theme:u(ga),"top-cards":u(Ia),"total-bytes":u(Sa).totalBytes,"treemap-filter-mode":u(Ma),"treemap-filter-options":u(Ta),"treemap-layout-items":u(Fa),"visible-largest-files":u(La),"work-queue-items":u(_a),onAddActionToQueue:u(q),onClearCompletedWorkQueue:u(i),onCopyPr:u(f),onCopyReviewChecklist:u(d),onCopyWorkQueue:u(Q),onFocusTreemapSelection:u(j),onRemoveWorkQueueItem:u(pa),onResetTreemapFocus:u(De),onSelectAction:u(Ne),onSelectBudgetWarning:u(je),onSelectFile:u(R),onSelectPackage:u(ee),onSelectReviewChecklistItem:u(Qe),onSelectWorkQueueItem:u(Yt),onSetBaseline:u(ka),onSetComparisonMode:u($a),onToggleWorkQueueItem:u(Ca),onUpdateTreemapFilterMode:u(Xt)},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"])):_("",!0),C(Io,{open:!!(u(Be)&&u(v)),items:u(x),onClose:ve[2]||(ve[2]=Ee=>v.value=!1),onSelect:u(Gt)},null,8,["open","items","onSelect"])]))}});export{op as default};
|
|
16
|
+
`):[]}function Qc(e){return new TextEncoder().encode(e).byteLength}function $c(e){let t=new Map;for(let n of e)t.set(n,(t.get(n)??0)+1);return t}function el(e,t){let n=Zc(e),r=Zc(t),i=$c(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=Qc(e),s=Qc(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 tl(e){return e===0?`无变化`:`${e>0?`+`:`-`}${z(Math.abs(e))}`}function nl(e){return`${Math.round(e*100)}%`}function rl(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:nl(e.unchangedLineRatio),detail:t===`warning`?`源码行在产物中保留较少,建议检查编译注入、运行时包装或转译膨胀。`:t===`success`?`源码结构在产物中较容易追踪,适合继续逐段定位差异。`:`产物保留了部分源码结构,可结合 diff 继续确认主要变化段。`,tone:t},{id:`size`,label:`字节影响`,value:tl(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 il(e){let t=e.insights??rl(e.stats);return[`# dashboard 源码对比摘要`,``,`源码:${e.sourcePath}`,`产物:${e.artifactPath}`,``,`- 源码行数:${e.stats.sourceLines}`,`- 产物行数:${e.stats.artifactLines}`,`- 估算新增行:${e.stats.addedLines}`,`- 估算删除行:${e.stats.removedLines}`,`- 字节变化:${tl(e.stats.byteDelta)}`,`- 未变更行占比:${Math.round(e.stats.unchangedLineRatio*100)}%`,``,`## 洞察`,...t.map(e=>`- ${e.label}(${e.value}):${e.detail}`),``].join(`
|
|
17
|
+
`)}function al(e){let t=o(),n=o(``),r=o(``),i=m(null),a=m(null),s=o(``),c=o(!1),l=m(null),d,p,h,g=0,_=C(()=>e.files.value.map(e=>({key:Kc(e),label:`${e.packageLabel} · ${e.file}`,file:e}))),v=C(()=>_.value.find(e=>e.key===n.value)?.file??e.files.value[0]??null),y=C(()=>Xc(v.value)),b=C(()=>c.value?`加载中`:s.value?s.value:i.value&&a.value?`${i.value.path} ↔ ${a.value.path}`:`等待文件`),x=C(()=>i.value&&a.value?el(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 w(){d?.setModel(null),p?.dispose(),h?.dispose(),p=void 0,h=void 0}function E(){let e=l.value;!e||!d||!i.value||!a.value||(w(),p=e.editor.createModel(i.value.content,i.value.language,e.Uri.parse(`weapp-source://model/${encodeURIComponent(i.value.path)}`)),h=e.editor.createModel(a.value.content,a.value.language,e.Uri.parse(`weapp-artifact://model/${encodeURIComponent(a.value.path)}`)),d.setModel({original:p,modified:h}))}async function D(){if(l.value||!t.value)return;let n=await ae(()=>import(`./monaco.js`).then(e=>e.o),__vite__mapDeps([0]),import.meta.url);l.value=n,Hc(n),n.editor.setTheme(Uc(e.theme.value)),d=n.editor.createDiffEditor(t.value,{automaticLayout:!0,minimap:{enabled:!1},originalEditable:!1,readOnly:!0,renderSideBySide:!0,scrollBeyondLastLine:!1})}async function O(){let t=++g,n=r.value,o=v.value;if(!n||!o){i.value=null,a.value=null,s.value=y.value.length===0?`无源码候选`:``,w();return}c.value=!0,s.value=``,e.onSelectFile(o);try{let[e,r]=await Promise.all([Yc(`source`,n),Yc(`artifact`,o.file)]);if(t!==g)return;i.value=e,a.value=r,await u(),await D(),E()}catch(e){if(t!==g)return;i.value=null,a.value=null,w(),s.value=e instanceof Error?e.message:`文件读取失败`}finally{t===g&&(c.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=>{l.value?.editor.setTheme(Uc(e))}),T(()=>{w(),d?.dispose()}),{artifactContent:a,artifactOptions:_,compareStats:x,editorElement:t,loadComparison:O,loadError:s,loading:c,selectedArtifactKey:n,selectedSourcePath:r,sourceContent:i,sourceOptions:y,statusText:b}}var ol=n({__name:`SourceArtifactComparePanel`,props:{activeFileKey:{},files:{},theme:{}},emits:[`selectFile`],setup(e,{expose:t,emit:n}){t();let r=e,i=n,{activeFileKey:a,files:s,theme:c}=g(r),l=o(``),u=null,{artifactContent:d,artifactOptions:f,compareStats:p,editorElement:m,loadComparison:h,loadError:_,loading:v,selectedArtifactKey:y,selectedSourcePath:b,sourceContent:x,sourceOptions:S,statusText:w}=al({activeFileKey:a,files:s,theme:c,onSelectFile(e){i(`selectFile`,e)}}),E=C(()=>p.value?[{label:`源码行数`,value:String(p.value.sourceLines)},{label:`产物行数`,value:String(p.value.artifactLines)},{label:`新增 / 删除`,value:`${p.value.addedLines} / ${p.value.removedLines}`},{label:`字节变化`,value:tl(p.value.byteDelta)}]:[]),D=C(()=>p.value?`${z(p.value.sourceBytes)} → ${z(p.value.artifactBytes)}`:``),O=C(()=>p.value?rl(p.value):[]);function k(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 A(e){l.value=e,u&&clearTimeout(u),u=setTimeout(()=>{l.value=``,u=null},1800)}async function ee(){if(!(!p.value||!x.value||!d.value))try{await U(il({sourcePath:x.value.path,artifactPath:d.value.path,stats:p.value,insights:O.value})),A(`已复制`)}catch{A(`复制失败`)}}T(()=>{u&&clearTimeout(u)});let j={props:r,emit:i,activeFileKey:a,files:s,theme:c,copyStatus:l,get copyStatusTimer(){return u},set copyStatusTimer(e){u=e},artifactContent:d,artifactOptions:f,compareStats:p,editorElement:m,loadComparison:h,loadError:_,loading:v,selectedArtifactKey:y,selectedSourcePath:b,sourceContent:x,sourceOptions:S,statusText:w,compareMetricItems:E,compareSizeText:D,compareInsights:O,getInsightClassName:k,setCopyStatus:A,copyCompareReport:ee,AppEmptyState:W,AppMetricTile:G};return Object.defineProperty(j,"__isScriptSetup",{enumerable:!1,value:!0}),j}}),sl={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)`},cl={class:`grid gap-3`},ll={class:`flex flex-wrap items-center justify-between gap-3`},ul={class:`mt-1 text-xs text-(--dashboard-text-soft)`},dl={class:`flex items-center gap-2`},fl={key:0,class:`text-xs font-medium text-(--dashboard-accent)`},pl=[`disabled`],ml=[`disabled`],hl={class:`grid gap-2 lg:grid-cols-2`},gl=[`value`],_l=[`value`],vl={key:0,class:`grid gap-2 lg:grid-cols-[minmax(0,1fr)_auto] lg:items-center`},yl={class:`grid grid-cols-2 gap-2 xl:grid-cols-4`},bl={class:`text-xs text-(--dashboard-text-soft)`},xl={key:1,class:`grid gap-2 lg:grid-cols-3`},Sl={class:`flex items-start justify-between gap-3`},Cl={class:`text-xs font-semibold uppercase tracking-[0.14em] opacity-80`},wl={class:`shrink-0 text-sm font-semibold`},Tl={class:`mt-2 line-clamp-2 text-xs leading-5 opacity-80`},El={class:`min-h-0 overflow-hidden rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted)`},Dl={ref:`editorElement`,class:`h-full min-h-96`};function Ol(e,n,i,o,s,u){return w(),F(`section`,sl,[S(`div`,cl,[S(`div`,ll,[S(`div`,null,[n[3]||=S(`h2`,{class:`text-lg font-semibold text-(--dashboard-text)`},` 源码对比 `,-1),S(`p`,ul,c(o.statusText),1)]),S(`div`,dl,[o.copyStatus?(w(),F(`span`,fl,c(o.copyStatus),1)):N(``,!0),S(`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:!o.compareStats,onClick:o.copyCompareReport},` 复制摘要 `,8,pl),S(`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:o.loading||!o.selectedArtifactKey||!o.selectedSourcePath,onClick:n[0]||=(...e)=>o.loadComparison&&o.loadComparison(...e)},` 刷新 `,8,ml)])]),S(`div`,hl,[t(S(`select`,{"onUpdate:modelValue":n[1]||=e=>o.selectedSourcePath=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)`},[n[4]||=S(`option`,{value:``},` 源码文件 `,-1),(w(!0),F(k,null,l(o.sourceOptions,e=>(w(),F(`option`,{key:e,value:e},c(e),9,gl))),128))],512),[[E,o.selectedSourcePath]]),t(S(`select`,{"onUpdate:modelValue":n[2]||=e=>o.selectedArtifactKey=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)`},[(w(!0),F(k,null,l(o.artifactOptions,e=>(w(),F(`option`,{key:e.key,value:e.key},c(e.label),9,_l))),128))],512),[[E,o.selectedArtifactKey]])]),o.compareStats?(w(),F(`div`,vl,[S(`div`,yl,[(w(!0),F(k,null,l(o.compareMetricItems,e=>(w(),_(o.AppMetricTile,r({key:e.label},{ref_for:!0},e),null,16))),128))]),S(`p`,bl,c(o.compareSizeText),1)])):N(``,!0),o.compareInsights.length?(w(),F(`div`,xl,[(w(!0),F(k,null,l(o.compareInsights,e=>(w(),F(`article`,{key:e.id,class:a([`rounded-md border px-3 py-2.5`,o.getInsightClassName(e.tone)])},[S(`div`,Sl,[S(`p`,Cl,c(e.label),1),S(`p`,wl,c(e.value),1)]),S(`p`,Tl,c(e.detail),1)],2))),128))])):N(``,!0)]),S(`div`,El,[t(S(`div`,Dl,null,512),[[b,o.sourceContent&&o.artifactContent]]),!o.sourceContent||!o.artifactContent?(w(),_(o.AppEmptyState,{key:0,class:`m-3 h-[calc(100%-1.5rem)]`},{default:I(()=>[P(c(o.loadError||`暂无可对比文件。`),1)]),_:1})):N(``,!0)])])}var kl=B(ol,[[`render`,Ol]]),Al=`Treemap`,jl=`从包体到文件再到模块,直接定位体积热点。`,Ml=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,{expose:t,emit:n}){t();let r=e,i=n,a=C(()=>r.theme===`dark`?[{label:`健康`,color:`#166853`},{label:`关注`,color:`#75601f`},{label:`急需改进`,color:`#81323a`}]:[{label:`健康`,color:`#8fd3ad`},{label:`关注`,color:`#ead486`},{label:`急需改进`,color:`#eaa39b`}]);function o(){return H({kind:`badge`})}function s(e){return e.value!==`selected-package`||r.canUseSelectedPackageFilter}function c(e){r.bindChartRef(e instanceof Element?e:null)}let l={props:r,emit:i,chartTitle:Al,chartDescription:jl,healthLegend:a,getChartBadgeClassName:o,canUseFilter:s,handleChartRef:c,get pillButtonStyles(){return H},get surfaceStyles(){return L},AppEmptyState:W,AppPanelHeader:X};return Object.defineProperty(l,"__isScriptSetup",{enumerable:!1,value:!0}),l}}),Nl={class:`flex items-center gap-2`},Pl=[`disabled`],Fl={class:`mb-2 flex flex-wrap items-center justify-between gap-2 px-2`},Il={class:`flex flex-wrap gap-1.5`},Ll=[`disabled`,`onClick`],Rl={class:`flex flex-wrap items-center gap-2 text-[11px] text-(--dashboard-text-soft)`},zl={class:`relative min-h-0 flex-1 overflow-hidden rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-2`};function Bl(e,t,n,r,i,o){return w(),F(`div`,{class:a([r.surfaceStyles({padding:`sm`}),`flex h-full min-h-0 flex-col overflow-hidden`])},[p(r.AppPanelHeader,{class:`mb-2 px-2`,"icon-name":`treemap`,title:r.chartTitle,description:r.chartDescription},{meta:I(()=>[S(`div`,Nl,[S(`button`,{class:a([r.getChartBadgeClassName(),n.canFocusSelected?void 0:`cursor-not-allowed opacity-45`]),disabled:!n.canFocusSelected,type:`button`,onClick:t[0]||=e=>r.emit(`focusSelected`)},` 聚焦选中 `,10,Pl),S(`button`,{class:a(r.getChartBadgeClassName()),type:`button`,onClick:t[1]||=e=>r.emit(`resetFocus`)},` 重置 `,2)])]),_:1}),S(`div`,Fl,[S(`div`,Il,[(w(!0),F(k,null,l(n.filterOptions,e=>(w(),F(`button`,{key:e.value,class:a([r.pillButtonStyles({kind:`badge`,active:n.filterMode===e.value}),r.canUseFilter(e)?void 0:`cursor-not-allowed opacity-45`]),disabled:!r.canUseFilter(e),type:`button`,onClick:t=>r.emit(`updateFilterMode`,e.value)},c(e.label),11,Ll))),128))]),S(`div`,Rl,[(w(!0),F(k,null,l(r.healthLegend,e=>(w(),F(`span`,{key:e.label,class:`inline-flex items-center gap-1.5`},[S(`span`,{class:`h-2.5 w-2.5 rounded-full border border-(--dashboard-border)`,style:A({backgroundColor:e.color})},null,4),P(` `+c(e.label),1)]))),128))])]),S(`div`,zl,[S(`div`,{ref:r.handleChartRef,class:`h-full min-h-0 w-full`}),n.isEmpty?(w(),_(r.AppEmptyState,{key:0,class:`absolute inset-3 z-10 grid place-items-center`,compact:``},{default:I(()=>[...t[2]||=[P(` 当前过滤条件下没有可展示节点。 `,-1)]]),_:1})):N(``,!0)])],2)}var Vl=B(Ml,[[`render`,Bl]]),Hl=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,{expose:t,emit:n}){t();let r={emit:n,AnalyzeDetailsPanel:Kn,AnalyzeDiagnosticsSection:Hi,AnalyzeDraggableGrid:bt,AnalyzeOverviewPanel:$a,ModulesPanel:is,PackagesPanel:gc,PrReviewChecklistPanel:zc,SourceArtifactComparePanel:kl,TreemapCard:Vl};return Object.defineProperty(r,"__isScriptSetup",{enumerable:!1,value:!0}),r}}),Ul={key:0,class:`min-h-0 overflow-hidden`},Wl={key:1,class:`min-h-0 overflow-hidden`},Gl={key:2,class:`min-h-0 overflow-hidden`},Kl={key:3,class:`min-h-0 overflow-hidden`},ql={key:4,class:`min-h-0 overflow-hidden`},Jl={key:5,class:`min-h-0 overflow-hidden`},Yl={key:6,class:`min-h-0 overflow-hidden`},Xl={key:7,class:`min-h-0 overflow-hidden`};function Zl(e,t,n,r,i,a){return n.activeTab===`overview`?(w(),F(`section`,Ul,[p(r.AnalyzeDraggableGrid,{"grid-class":`grid h-full min-h-0 gap-2 overflow-hidden`,items:n.overviewLayoutItems,"storage-key":`weapp-vite:dashboard:analyze-layout:overview`},{metrics:I(()=>[p(r.AnalyzeOverviewPanel,{"action-items":n.actionItems,cards:n.topCards,"largest-files":n.largestFiles,"package-insights":n.packageInsights,"package-type-summary":n.metricPackageTypeSummary,onCopyReport:t[0]||=e=>r.emit(`copyPr`),onSelectAction:t[1]||=e=>r.emit(`selectAction`,e),onSelectFile:t[2]||=e=>r.emit(`selectFile`,e),onSelectPackage:t[3]||=e=>r.emit(`selectPackage`,e)},null,8,[`action-items`,`cards`,`largest-files`,`package-insights`,`package-type-summary`])]),_:1},8,[`items`])])):n.activeTab===`diagnostics`?(w(),F(`section`,Wl,[p(r.AnalyzeDiagnosticsSection,{"action-items":n.actionItems,"active-work-queue-item-id":n.activeWorkQueueItemId,"baseline-snapshot-id":n.baselineSnapshotId,"comparison-mode":n.comparisonMode,"history-snapshots":n.historySnapshots,"layout-items":n.diagnosticsLayoutItems,"queued-action-keys":n.queuedActionKeys,"selected-action-key":n.selectedActionKey,"work-queue-items":n.workQueueItems,onAddActionToQueue:t[4]||=e=>r.emit(`addActionToQueue`,e),onClearCompletedWorkQueue:t[5]||=e=>r.emit(`clearCompletedWorkQueue`),onCopyPr:t[6]||=e=>r.emit(`copyPr`),onCopyWorkQueue:t[7]||=e=>r.emit(`copyWorkQueue`),onRemoveWorkQueueItem:t[8]||=e=>r.emit(`removeWorkQueueItem`,e),onSelectAction:t[9]||=e=>r.emit(`selectAction`,e),onSelectWorkQueueItem:t[10]||=e=>r.emit(`selectWorkQueueItem`,e),onSetBaseline:t[11]||=e=>r.emit(`setBaseline`,e),onSetComparisonMode:t[12]||=e=>r.emit(`setComparisonMode`,e),onToggleWorkQueueItem:t[13]||=e=>r.emit(`toggleWorkQueueItem`,e)},null,8,[`action-items`,`active-work-queue-item-id`,`baseline-snapshot-id`,`comparison-mode`,`history-snapshots`,`layout-items`,`queued-action-keys`,`selected-action-key`,`work-queue-items`])])):n.activeTab===`review`?(w(),F(`section`,Gl,[p(r.AnalyzeDraggableGrid,{"grid-class":`grid h-full min-h-0 gap-2 overflow-hidden`,items:n.reviewLayoutItems,"storage-key":`weapp-vite:dashboard:analyze-layout:review`},{review:I(()=>[p(r.PrReviewChecklistPanel,{checklist:n.prReviewChecklist,"copy-status":n.copyStatus,onCopy:t[14]||=e=>r.emit(`copyReviewChecklist`),onSelect:t[15]||=e=>r.emit(`selectReviewChecklistItem`,e)},null,8,[`checklist`,`copy-status`])]),_:1},8,[`items`])])):n.activeTab===`treemap`?(w(),F(`section`,Kl,[p(r.AnalyzeDraggableGrid,{"grid-class":`grid h-full min-h-0 gap-2 overflow-hidden`,items:n.treemapLayoutItems,"storage-key":`weapp-vite:dashboard:analyze-layout:treemap`},{treemap:I(()=>[p(r.TreemapCard,{"bind-chart-ref":n.bindChartRef,"can-focus-selected":!!n.selectedTreemapFocusNodeId,"filter-mode":n.treemapFilterMode,"filter-options":n.treemapFilterOptions,"can-use-selected-package-filter":n.canUseSelectedPackageFilter,"is-empty":n.isTreemapEmpty,theme:n.theme,onFocusSelected:t[16]||=e=>r.emit(`focusTreemapSelection`),onResetFocus:t[17]||=e=>r.emit(`resetTreemapFocus`),onUpdateFilterMode:t[18]||=e=>r.emit(`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`])])):n.activeTab===`files`?(w(),F(`section`,ql,[p(r.AnalyzeDetailsPanel,{"largest-files":n.filteredLargestFiles,"selected-file-modules":n.selectedFileModules,"budget-warnings":n.budgetWarnings,"budget-config":n.budgetConfig,"package-insights":n.packageInsights,"total-bytes":n.totalBytes,"active-budget-warning-id":n.activeBudgetWarningId,"active-largest-file-key":n.activeLargestFileKey,"selected-treemap-meta":n.selectedTreemapMeta,onSelectBudgetWarning:t[19]||=e=>r.emit(`selectBudgetWarning`,e),onSelectFile:t[20]||=e=>r.emit(`selectFile`,e)},null,8,[`largest-files`,`selected-file-modules`,`budget-warnings`,`budget-config`,`package-insights`,`total-bytes`,`active-budget-warning-id`,`active-largest-file-key`,`selected-treemap-meta`])])):n.activeTab===`source`?(w(),F(`section`,Jl,[p(r.AnalyzeDraggableGrid,{"grid-class":`grid h-full min-h-0 gap-2 overflow-hidden`,items:n.sourceLayoutItems,"storage-key":`weapp-vite:dashboard:analyze-layout:source`},{source:I(()=>[p(r.SourceArtifactComparePanel,{"active-file-key":n.activeLargestFileKey,files:n.filteredLargestFiles,theme:n.theme,onSelectFile:t[21]||=e=>r.emit(`selectFile`,e)},null,8,[`active-file-key`,`files`,`theme`])]),_:1},8,[`items`])])):n.activeTab===`packages`?(w(),F(`section`,Yl,[p(r.AnalyzeDraggableGrid,{"grid-class":`grid h-full min-h-0 gap-2 overflow-hidden`,items:n.packagesLayoutItems,"storage-key":`weapp-vite:dashboard:analyze-layout:packages`},{packages:I(()=>[p(r.PackagesPanel,{"package-insights":n.packageInsights,"budget-warnings":n.budgetWarnings,"selected-treemap-meta":n.selectedTreemapMeta},null,8,[`package-insights`,`budget-warnings`,`selected-treemap-meta`])]),_:1},8,[`items`])])):(w(),F(`section`,Xl,[p(r.AnalyzeDraggableGrid,{"grid-class":`grid h-full min-h-0 gap-2 overflow-hidden`,items:n.modulesLayoutItems,"storage-key":`weapp-vite:dashboard:analyze-layout:modules`},{modules:I(()=>[p(r.ModulesPanel,{"duplicate-modules":n.filteredDuplicateModules,"module-source-summary":n.moduleSourceSummary,"increment-attribution":n.incrementAttribution,"increment-summary":n.incrementSummary,"visible-largest-files":n.visibleLargestFiles},null,8,[`duplicate-modules`,`module-source-summary`,`increment-attribution`,`increment-summary`,`visible-largest-files`])]),_:1},8,[`items`])]))}var Ql=B(Hl,[[`render`,Zl]]),$l=n({__name:`AnalyzeExportMenu`,props:{open:{type:Boolean}},emits:[`update:open`,`copySummary`,`copyMarkdown`,`copyPr`,`exportJson`,`exportMarkdown`,`exportCsv`],setup(e,{expose:t,emit:n}){t();let r=n,i={emit:r,exportActions:[{key:`summary`,label:`复制摘要`,description:`关键指标和首要风险,适合 IM 快速同步。`,iconName:`metric-copy`,action:()=>r(`copySummary`)},{key:`markdown-copy`,label:`复制完整报告`,description:`包含预算、包体、Top 文件和重复模块表格。`,iconName:`file-samples`,action:()=>r(`copyMarkdown`)},{key:`pr`,label:`复制 PR 摘要`,description:`面向评审评论的增量、预算和重复模块摘要。`,iconName:`metric-copy`,action:()=>r(`copyPr`)},{key:`json`,label:`导出 JSON`,description:`保留原始 analyze payload,适合离线排查。`,iconName:`metric-size-outline`,action:()=>r(`exportJson`)},{key:`markdown`,label:`导出 MD`,description:`生成完整 Markdown 报告文件。`,iconName:`file-samples`,action:()=>r(`exportMarkdown`)},{key:`csv`,label:`导出 CSV`,description:`导出包、文件、重复模块和增量归因明细。`,iconName:`file-samples`,action:()=>r(`exportCsv`)}],get pillButtonStyles(){return H},DashboardIcon:R};return Object.defineProperty(i,"__isScriptSetup",{enumerable:!1,value:!0}),i}}),eu={class:`h-4.5 w-4.5`},tu={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)`},nu=[`onClick`],ru={class:`mt-0.5 h-4.5 w-4.5 text-(--dashboard-text-soft)`},iu={class:`min-w-0`},au={class:`block font-medium`},ou={class:`mt-0.5 block text-xs leading-5 text-(--dashboard-text-soft)`};function su(e,t,n,r,i,o){return w(),F(`div`,{class:`relative shrink-0`,onClick:t[1]||=x(()=>{},[`stop`])},[S(`button`,{class:a(r.pillButtonStyles({kind:`nav`,active:n.open})),type:`button`,onClick:t[0]||=e=>r.emit(`update:open`,!n.open)},[S(`span`,eu,[p(r.DashboardIcon,{name:`nav-menu`})]),t[2]||=P(` 更多 `,-1)],2),n.open?(w(),F(`div`,tu,[(w(),F(k,null,l(r.exportActions,e=>S(`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},[S(`span`,ru,[p(r.DashboardIcon,{name:e.iconName},null,8,[`name`])]),S(`span`,iu,[S(`span`,au,c(e.label),1),S(`span`,ou,c(e.description),1)])],8,nu)),64))])):N(``,!0)])}var cu=B($l,[[`render`,su]]),lu=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,{expose:t,emit:n}){t();let r={emit:n,get pillButtonStyles(){return H},AnalyzeExportMenu:cu,AppInfoPill:se,DashboardIcon:R};return Object.defineProperty(r,"__isScriptSetup",{enumerable:!1,value:!0}),r}}),uu={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)`},du={class:`flex min-w-0 flex-1 flex-nowrap items-center gap-2 overflow-x-auto pb-0.5`},fu={class:`h-4.5 w-4.5`},pu={class:`h-4.5 w-4.5`},mu=[`disabled`],hu={class:`h-4.5 w-4.5`};function gu(e,t,n,i,o,s){return w(),F(`section`,uu,[S(`div`,du,[n.canSearch?(w(),F(`button`,{key:0,class:a([`shrink-0`,i.pillButtonStyles({kind:`nav`,active:!1})]),onClick:t[0]||=e=>i.emit(`openSearch`)},[S(`span`,fu,[p(i.DashboardIcon,{name:`metric-search`})]),t[10]||=P(` 搜索 `,-1)],2)):N(``,!0),n.canSearch?(w(),F(`button`,{key:1,class:a([`shrink-0`,i.pillButtonStyles({kind:`nav`,active:!1})]),onClick:t[1]||=e=>i.emit(`copyViewLink`)},[S(`span`,pu,[p(i.DashboardIcon,{name:`metric-link`})]),t[11]||=P(` 复制视图 `,-1)],2)):N(``,!0),n.canSearch?(w(),F(`button`,{key:2,class:a([`shrink-0 disabled:cursor-not-allowed disabled:opacity-55`,i.pillButtonStyles({kind:`nav`,active:!1})]),disabled:!n.canResetView,onClick:t[2]||=e=>i.emit(`resetView`)},[S(`span`,hu,[p(i.DashboardIcon,{name:`metric-reset`})]),t[12]||=P(` 重置视图 `,-1)],10,mu)):N(``,!0),n.exportStatus?(w(),_(i.AppInfoPill,{key:3,class:`shrink-0`,label:n.exportStatus,uppercase:``},null,8,[`label`])):N(``,!0),n.openWorkQueueCount>0?(w(),_(i.AppInfoPill,{key:4,class:`shrink-0`,"icon-name":`metric-bookmark`,label:`${n.openWorkQueueCount} 个待处理`,uppercase:``},null,8,[`label`])):N(``,!0),(w(!0),F(k,null,l(n.statusPills,e=>(w(),_(i.AppInfoPill,r({key:e.label,class:`shrink-0`},{ref_for:!0},e,{uppercase:``}),null,16))),128))]),n.canSearch?(w(),_(i.AnalyzeExportMenu,{key:0,open:n.moreMenuOpen,"onUpdate:open":t[3]||=e=>i.emit(`update:moreMenuOpen`,e),onCopyMarkdown:t[4]||=e=>i.emit(`copyMarkdown`),onCopyPr:t[5]||=e=>i.emit(`copyPr`),onCopySummary:t[6]||=e=>i.emit(`copySummary`),onExportCsv:t[7]||=e=>i.emit(`exportCsv`),onExportJson:t[8]||=e=>i.emit(`exportJson`),onExportMarkdown:t[9]||=e=>i.emit(`exportMarkdown`)},null,8,[`open`])):N(``,!0)])}var _u=B(lu,[[`render`,gu]]);function vu(e){return e===`blocked`?`Blocked`:e===`review`?`Review`:`Ready`}function yu(e){return e===`blocked`?`PR 合并前仍有阻断项`:e===`review`?`建议完成复核后再合并`:`当前清单未发现发布风险`}function bu(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 xu(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 Su(e){return e.items.length===0?[`- [x] ${e.emptyText}`]:e.items.map(e=>`- [${e.checked?`x`:` `}] ${e.title}:${e.detail}`)}function Cu(e){return[`## PR 风险清单`,``,`状态:${e.label}`,e.headline,``,...e.metrics.map(e=>`- ${e.label}:${e.value}`),``,...e.lanes.flatMap(e=>[`### ${e.title}`,``,...Su(e),``])].join(`
|
|
18
|
+
`)}function wu(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(bu),emptyText:`没有阻断项。`},{key:`verification`,title:`评审复核`,description:`需要 reviewer 主动确认的高风险变化。`,items:n.slice(0,6).map(bu),emptyText:`没有需要额外复核的风险。`},{key:`followups`,title:`后续跟进`,description:`来自处理清单和剩余建议动作的后续事项。`,items:[...r.slice(0,4).map(xu),...o.map(bu)].slice(0,6),emptyText:i.length>0?`处理清单已完成。`:`没有待跟进事项。`}],l={status:s,label:vu(s),headline:yu(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:Cu(l)}}var Z=`\0`,Tu=[{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 Eu(e){return`package${Z}${e}`}function Du(e,t){return`file${Z}${e}${Z}${t}`}function Ou(e,t,n){return`module${Z}${e}${Z}${t}${Z}${n}`}function ku(e,t){return`asset${Z}${e}${Z}${t}`}function Au(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(`累计体积:${z(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(`体积:${z(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(`模块体积:${z(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(`资源体积:${z(e.bytes)}`)),t.join(`<br/>`)}function ju(e){return`${(e.ratio*100).toFixed(1)}%`}function Mu(e,t,n){if(!(!t||!n))return e.find(e=>e.packageId===t&&e.file===n)}function Nu(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:`可省 ${z(e.estimatedSavingBytes)}`,tone:e.estimatedSavingBytes>1024?`warning`:`info`,tab:`modules`,priority:72+Math.min(e.estimatedSavingBytes/1024,18),moduleMeta:n&&i?{kind:`module`,nodeId:Ou(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 Pu(e,t,n){let r=Mu(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:Ou(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:`+${z(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 Fu(e){return{actionItems:C(()=>{let t=[];for(let n of e.budgetWarnings.value)t.push({key:`budget:${n.id}`,kind:`budget`,title:`处理 ${n.label} 预算`,meta:`${n.status===`critical`?`已超预算`:`接近预算`} · 当前 ${z(n.currentBytes)} / ${z(n.limitBytes)}`,value:ju(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(Pu(n,e.largestFiles.value,e.packageInsights.value));for(let n of e.duplicateModules.value.filter(e=>e.estimatedSavingBytes>0).slice(0,12))t.push(Nu(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} · 压缩后 ${z(n.compressedSize)}`,value:z(n.size),tone:`success`,tab:`files`,priority:45,file:n}),t.sort((e,t)=>t.priority-e.priority||e.title.localeCompare(t.title))})}}function Iu(e){return e.filter(e=>e!==void 0&&e!==``).join(` `).toLowerCase()}function Lu(e,t,n){return e.find(e=>e.id===t||e.label===n)}function Ru(e,t,n){if(!(!t||!n))return e.find(e=>e.packageId===t&&e.file===n)}function zu(e){return{key:`package:${e.id}`,kind:`package`,title:e.label,meta:`${V(e.type)} · ${e.fileCount} 个产物 · ${e.moduleCount} 个模块`,value:z(e.totalBytes),keywords:Iu([e.id,e.label,e.type,e.totalBytes]),tab:`packages`,packageMeta:{kind:`package`,nodeId:Eu(e.id),packageId:e.id,packageLabel:e.label,packageType:e.type,fileCount:e.fileCount,totalBytes:e.totalBytes}}}function Bu(e){return{key:`file:${e.packageId}:${e.file}`,kind:`file`,title:e.file,meta:`${e.packageLabel} · ${e.type} · 压缩后 ${z(e.compressedSize)}`,value:z(e.size),keywords:Iu([e.packageId,e.packageLabel,e.file,e.type,e.source,e.size]),tab:`files`,file:e}}function Vu(e){return{key:`budget:${e.id}`,kind:`budget`,title:`${e.label} 预算`,meta:`${e.status===`critical`?`已超预算`:`接近预算`} · ${z(e.currentBytes)} / ${z(e.limitBytes)}`,value:`${(e.ratio*100).toFixed(1)}%`,keywords:Iu([e.id,e.label,e.scope,e.status,e.currentBytes]),tab:`files`,warning:e}}function Hu(e,t){let n=e.packages[0],r=n?.files[0]??``,i=Lu(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:`可省 ${z(e.estimatedSavingBytes)}`,keywords:Iu([e.id,e.source,e.sourceType,e.packageCount,e.packages.map(e=>e.packageLabel).join(` `)]),tab:`modules`,moduleMeta:n&&i?{kind:`module`,nodeId:Ou(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 Uu(e,t,n){let r=Ru(t,e.packageId,e.file),i=Lu(n,e.packageId,e.packageLabel);return{key:`increment:${e.key}`,kind:`increment`,title:e.label,meta:`${e.category} · ${e.advice}`,value:`+${z(e.deltaBytes)}`,keywords:Iu([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:Ou(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 Wu(e){return{key:`action:${e.key}`,kind:`action`,title:e.title,meta:e.meta,value:e.value,keywords:Iu([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 Gu(e){return{commandItems:C(()=>[...e.actionItems.value.map(Wu),...e.budgetWarnings.value.map(Vu),...e.packageInsights.value.map(zu),...e.largestFiles.value.map(Bu),...e.duplicateModules.value.map(t=>Hu(t,e.packageInsights.value)),...e.incrementAttribution.value.map(t=>Uu(t,e.largestFiles.value,e.packageInsights.value))])}}var Ku=2*1024*1024;function Q(e){return e.size??0}function qu(e){return e.brotliSize??e.gzipSize??fe(Q(e),e.file,e.type)}function Ju(e){return typeof e.brotliSize==`number`||typeof e.gzipSize==`number`?`real`:`estimated`}function Yu(e,t){return`${e}\u0000${t}`}function Xu(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+=qu(t),n.set(Yu(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 Zu(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 Qu(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 $u(e){if(e!==`virtual`)return Ku}function ed(e,t){let n=t.metadata?.budgets;if(!n)return $u(e);if(e===`main`)return n.mainBytes;if(e===`subPackage`)return n.subPackageBytes;if(e===`independent`)return n.independentBytes}function td(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 nd(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 rd(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=td({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=ed(n.type,e);if(!i)continue;let a=td({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 id(e){let t=e?.metadata?.budgets,n=t?.source??`default`;return[{key:`total`,label:`总包预算`,value:`${nd(t?.totalBytes??20971520)}`,source:n},{key:`main`,label:`主包预算`,value:`${nd(t?.mainBytes??2097152)}`,source:n},{key:`subPackage`,label:`分包预算`,value:`${nd(t?.subPackageBytes??2097152)}`,source:n},{key:`independent`,label:`独立分包预算`,value:`${nd(t?.independentBytes??2097152)}`,source:n}]}function ad(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 od(e,t){return e===`第三方依赖`?`检查依赖边界或公共入口。`:e===`WeVu / runtime`?`排查组件和 API 引用边界。`:e===`样式资源`?`检查样式复用和生成范围。`:t?`确认分包归属和懒加载边界。`:`对比新增引用和共享模块。`}function sd(e){if(!e.result||!e.previousResult)return[];let t=[],n=Zu(e.result);for(let n of e.result.packages)for(let r of n.files){let i=Q(r),a=e.previousMaps.fileBytes.get(Yu(n.id,r.file))??0,o=i-a;if(o<=0)continue;let s=ad(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:od(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=ad(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:od(u,a===0)})}return t.sort((e,t)=>t.deltaBytes-e.deltaBytes||e.category.localeCompare(t.category)||e.label.localeCompare(t.label))}function cd(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 ld(e,t){return{packageId:t.packageId,packageLabel:e.get(t.packageId)??t.packageId,files:t.files}}function ud(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 dd(e,t){return{sourceType:e,sourceCategory:t,count:0,bytes:0}}function fd(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 pd(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=>ld(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:fd(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 md(e,t){let n=new Map;for(let r of e?.modules??[]){let e=t.get(r.id),i=ud(r.source,r.sourceType),a=`${r.sourceType}:${i}`,o=n.get(a)??dd(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 hd(e,t){return{label:e,value:t}}function gd(e,t,n){let r=Q(t),i=n.get(Yu(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:qu(t),compressedSizeSource:Ju(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 _d(e,t,n){let r=Q(t),i=n.get(Yu(e,t.file));return{file:t.file,size:r,gzipSize:t.gzipSize,brotliSize:t.brotliSize,compressedSize:qu(t),compressedSizeSource:Ju(t),sizeDeltaBytes:typeof i==`number`?r-i:void 0,type:t.type,from:t.from,isEntry:!!t.isEntry,moduleCount:t.modules?.length??0}}function vd(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+qu(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 yd(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])=>hd(e,t)).sort((e,t)=>t.value-e.value||e.label.localeCompare(t.label))}function bd(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=>_d(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+qu(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 xd(e,t){let n=[];for(let r of e?.packages??[])for(let e of r.files)n.push(gd(r,e,t));return n.sort((e,t)=>t.size-e.size||e.file.localeCompare(t.file)).slice(0,18)}function Sd(e,t){let n=C(()=>Xu(t?.value??null)),r=C(()=>new Map((e.value?.packages??[]).map(e=>[e.id,e.label]))),i=C(()=>new Map((e.value?.packages??[]).map(e=>[e.id,e.type]))),a=C(()=>Qu(e.value)),o=C(()=>rd(e.value)),s=C(()=>id(e.value)),c=C(()=>sd({result:e.value,previousResult:t?.value,previousMaps:n.value,moduleInfoMap:a.value})),l=C(()=>cd(c.value));return{summary:C(()=>vd({result:e.value,previousMaps:n.value,budgetWarnings:o.value})),packageTypeSummary:C(()=>yd(e.value)),packageInsights:C(()=>bd(e.value,n.value)),largestFiles:C(()=>xd(e.value,n.value.fileBytes)),duplicateModules:C(()=>pd({result:e.value,moduleInfoMap:a.value,packageLabelMap:r.value,packageTypeMap:i.value})),moduleSourceSummary:C(()=>md(e.value,a.value)),budgetWarnings:o,budgetLimitItems:s,incrementAttribution:c,incrementSummary:l,subPackages:C(()=>e.value?.subPackages??[])}}var Cd=[`action`,`file`,`budget`],wd=[`critical`,`warning`,`info`,`success`],Td=[`overview`,`diagnostics`,`treemap`,`files`,`source`,`packages`,`modules`];function Ed(){return new Date().toISOString()}function Dd(e,t){return typeof e==`string`&&t.includes(e)}function Od(e){if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.id==`string`&&Dd(t.targetKind,Cd)&&typeof t.targetKey==`string`&&typeof t.title==`string`&&typeof t.meta==`string`&&Dd(t.tone,wd)&&Dd(t.tab,Td)&&typeof t.createdAt==`string`}function kd(e){if(!Array.isArray(e))return[];let t=new Map;for(let n of e)Od(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 Ad(e,t=Ed()){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 jd(e){let t=kd(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
|
+
`)||`| - | 暂无事项 | - | - | - |`,``].join(`
|
|
20
|
+
`)}function Md(e){let t=m(null),n=m(!1),r=m(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(Ad(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 Nd(e){let t=e.packageInsights[0],n=e.duplicateModules[0];return[`总产物体积:${z(e.summary.totalBytes)}`,`Gzip:${z(e.summary.gzipBytes)}`,`Brotli/压缩后:${z(e.summary.compressedBytes)}`,`包体:${e.summary.packageCount} 个,分包配置:${e.summary.subpackageCount} 个`,`模块:${e.summary.moduleCount} 个,跨包复用:${e.summary.duplicateCount} 个`,`预算告警:${e.summary.budgetWarningCount} 个`,t?`最大包:${t.label} ${z(t.totalBytes)}`:``,n?`首要重复模块:${n.source},估算可节省 ${z(n.estimatedSavingBytes)}(${n.advice})`:``].filter(Boolean).join(`
|
|
21
|
+
`)}function Pd(e){let t=e.packageInsights.map(e=>`| ${e.label} | ${e.type} | ${z(e.totalBytes)} | ${z(e.compressedBytes)} | ${typeof e.sizeDeltaBytes==`number`?`${e.sizeDeltaBytes>0?`+`:`-`}${z(Math.abs(e.sizeDeltaBytes))}`:`无变化`} |`).join(`
|
|
22
|
+
`),n=e.largestFiles.slice(0,10).map(e=>`| ${e.file} | ${e.packageLabel} | ${e.type} | ${z(e.size)} | ${z(e.compressedSize)} |`).join(`
|
|
23
|
+
`),r=e.duplicateModules.slice(0,10).map(e=>`| ${e.source} | ${e.sourceType} | ${e.packageCount} | ${z(e.estimatedSavingBytes)} | ${e.advice} |`).join(`
|
|
24
|
+
`),i=e.budgetWarnings.map(e=>`| ${e.label} | ${e.scope} | ${z(e.currentBytes)} | ${z(e.limitBytes)} | ${e.status===`critical`?`超预算`:`接近预算`} ${(e.ratio*100).toFixed(1)}% |`).join(`
|
|
25
|
+
`),a=e.duplicateModules.find(e=>e.estimatedSavingBytes>0);return[`# weapp-vite analyze 报告`,``,`生成时间:${e.generatedAt??new Date().toISOString()}`,``,`## 本次变化摘要`,``,`- 总产物体积:${z(e.summary.totalBytes)}`,`- 压缩后体积:${z(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}:当前 ${z(e.budgetWarnings[0].currentBytes)},预算 ${z(e.budgetWarnings[0].limitBytes)}。`:`- 当前没有预算超限或接近预算的包体。`,a?`- 优先处理重复模块 ${a.source},估算可节省 ${z(a.estimatedSavingBytes)}。`:`- 当前没有可估算收益的重复模块。`,``,`## 包体`,``,`| 包 | 类型 | 体积 | 压缩后 | 较上次 |`,`| --- | --- | ---: | ---: | ---: |`,t||`| - | - | 0 B | 0 B | 无变化 |`,``,`## Top 文件`,``,`| 文件 | 包 | 类型 | 体积 | 压缩后 |`,`| --- | --- | --- | ---: | ---: |`,n||`| - | - | - | 0 B | 0 B |`,``,`## 重复模块`,``,`| 模块 | 来源 | 包数量 | 估算可节省 | 建议 |`,`| --- | --- | ---: | ---: | --- |`,r||`| - | - | 0 | 0 B | - |`,``].join(`
|
|
26
|
+
`)}function Fd(e){let t=e.incrementAttribution.slice(0,8).map(e=>`| ${e.label} | ${e.category} | ${e.packageLabel} | +${z(e.deltaBytes)} | ${e.advice} |`).join(`
|
|
27
|
+
`),n=e.incrementSummary.slice(0,6).map(e=>`| ${e.category} | ${e.count} | +${z(e.deltaBytes)} |`).join(`
|
|
28
|
+
`),r=e.budgetWarnings.slice(0,5).map(e=>`| ${e.label} | ${z(e.currentBytes)} | ${z(e.limitBytes)} | ${e.status===`critical`?`超预算`:`接近预算`} ${(e.ratio*100).toFixed(1)}% |`).join(`
|
|
29
|
+
`),i=e.duplicateModules.slice(0,5).map(e=>`| ${e.source} | ${e.packageCount} | ${z(e.estimatedSavingBytes)} | ${e.advice} |`).join(`
|
|
30
|
+
`);return[`## weapp-vite analyze PR 摘要`,``,`- 总产物体积:${z(e.summary.totalBytes)}${typeof e.summary.sizeDeltaBytes==`number`?`(较上次 ${e.summary.sizeDeltaBytes>=0?`+`:`-`}${z(Math.abs(e.summary.sizeDeltaBytes))})`:``}`,`- 压缩后体积:${z(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 Id(e){let t=String(e??``);return/[",\n\r]/.test(t)?`"${t.replaceAll(`"`,`""`)}"`:t}function Ld(e){return e.map(Id).join(`,`)}function Rd(e){let t=[Ld([`section`,`label`,`package`,`type`,`sizeBytes`,`compressedBytes`,`deltaBytes`,`count`,`detail`])];for(let n of e.packageInsights)t.push(Ld([`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(Ld([`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(Ld([`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(Ld([`increment`,n.label,n.packageLabel,n.category,n.currentBytes,n.deltaBytes,n.deltaBytes,1,n.advice]));return t.join(`
|
|
32
|
+
`)}function zd(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 Bd(e){let t=m(``),n=C(()=>Nd({summary:e.summary.value,packageInsights:e.packageInsights.value,duplicateModules:e.duplicateModules.value})),r=C(()=>Pd({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=C(()=>Fd({summary:e.summary.value,incrementAttribution:e.incrementAttribution.value,incrementSummary:e.incrementSummary.value,budgetWarnings:e.budgetWarnings.value,duplicateModules:e.duplicateModules.value})),a=C(()=>Rd({packageInsights:e.packageInsights.value,largestFiles:e.largestFiles.value,duplicateModules:e.duplicateModules.value,incrementAttribution:e.incrementAttribution.value}));async function o(){await U(n.value),t.value=`已复制`,e.moreMenuOpen.value=!1}async function s(){await U(r.value),t.value=`报告已复制`,e.moreMenuOpen.value=!1}async function c(){await U(i.value),t.value=`PR 摘要已复制`,e.moreMenuOpen.value=!1}async function l(){await U(e.prReviewChecklist.value.report),t.value=`评审清单已复制`}async function u(){await U(jd(e.workQueueItems.value)),t.value=`处理清单已复制`}function d(){e.resultRef.value&&(zd({content:JSON.stringify(e.resultRef.value,null,2),filename:`weapp-vite-analyze.json`,type:`application/json`}),t.value=`已导出`,e.moreMenuOpen.value=!1)}function f(){zd({content:r.value,filename:`weapp-vite-analyze.md`,type:`text/markdown`}),t.value=`已导出 MD`,e.moreMenuOpen.value=!1}function p(){zd({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 Vd(e){return ge.some(t=>t.value===e)?e:`all`}function Hd(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 Ud(e){let t=e.files.filter(t=>Hd(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 Wd(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 Gd(e){let t=v(),n=O(),r=C({get(){return Vd(t.query.filter)},set(e){let r={...t.query};e===`all`?delete r.filter:r.filter=e,n.replace({query:r})}}),i=C(()=>new Set(e.incrementAttribution.value.filter(e=>e.packageId&&e.file).map(e=>`${e.packageId}\u0000${e.file}`))),a=C(()=>new Set(e.incrementAttribution.value.map(e=>e.moduleId).filter(e=>!!e))),o=C(()=>new Set(e.duplicateModules.value.map(e=>e.id))),s=C(()=>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=C(()=>({mode:r.value,selectedPackageId:s.value,growthFileKeys:i.value,growthModuleIds:a.value,duplicateModuleIds:o.value})),l=C(()=>!!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(),Te();function Kd(e){let t=m(),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 qd=.85,Jd={light:{green:`#8fd3ad`,yellow:`#ead486`,red:`#eaa39b`},dark:{green:`#166853`,yellow:`#75601f`,red:`#81323a`}},Yd=.5;function Xd(e,t=0,n=1){return Math.min(n,Math.max(t,e))}function Zd(e){let t=Number.parseInt(e.slice(1),16);return{red:t>>16&255,green:t>>8&255,blue:t&255}}function Qd(e,t,n){let r=Xd(n),i=Object.values(Zd(e)),a=Object.values(Zd(t));return`#${i.map((e,t)=>Math.round(e+(a[t]-e)*r)).map(e=>e.toString(16).padStart(2,`0`)).join(``)}`}function $d(e,t){let n=Xd(e),r=Jd[t];return n<=.5?Qd(r.green,r.yellow,n/.5):Qd(r.yellow,r.red,(n-.5)/.5)}function ef(e,t){return t===`dark`?e>=.82?`#fda4af`:e>=.5?`#fde68a`:`#5eead4`:e>=.82?`#c6756f`:e>=.5?`#c3a24d`:`#5caf82`}function tf(...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 nf(e,...t){return tf(...t)?Math.min(e,Yd):e}function rf(e){let{red:t,green:n,blue:r}=Zd(e);return(.299*t+.587*n+.114*r)/255>.56?`#17231d`:`#f8fafc`}function af(e,t=!1){let n=rf(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 of(e,t){let n=$d(e,t);return{itemStyle:{color:n,borderColor:ef(e,t)},label:af(n),upperLabel:af(n,!0)}}function sf(e,t){return t?e.type===`main`?t.mainBytes:e.type===`subPackage`?t.subPackageBytes:e.type===`independent`?t.independentBytes:t.totalBytes:0}function cf(e,t,n=qd){if(t<=0)return 0;let r=e/t;return r>=1?1:r>=n?.58+(r-n)/Math.max(1-n,.01)*.32:Xd(r/n*.42,0,.42)}function lf(e,t){if(t<=0)return 0;let n=e/t;return n>=.72?.92:n>=.45?.64+(n-.45)/.27*.22:Xd(n/.45*.46,0,.46)}function uf(e,...t){return nf(e,...t)}function df(e,t,n,r,i,a,o){let s=Ou(e,n,a.id),c=Math.max(a.bytes??a.originalBytes??1,1),l=i.get(a.id)??1,u=uf(Math.max(lf(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},...of(u,o)}}function ff(e,t,n,r,i,a){let o=ku(e,n),s=Math.max(r.size??1,1),c=uf(lf(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},...of(c,a)}}function pf(e,t,n,r,i,a,o,s,c){let l=Du(t,r.file),u=Math.max(a,1),d=uf(Math.max(lf(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},...of(d,c),children:i.length>0?i:void 0}}function mf(e,t,n,r,i){let a=Eu(e.id),o=uf(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},...of(o,i),children:n}}function hf(e){return e.reduce((e,t)=>e+t.value,0)}function gf(e,t){return`${e}\u0000${t}`}function _f(e,t,n){return n.mode===`all`||n.mode===`selected-package`?!!t.source:n.mode===`growth`?n.growthFileKeys.has(gf(e,t.file)):n.mode===`source`?!!t.source:!1}function vf(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 yf(){return{mode:`all`,selectedPackageId:null,growthFileKeys:new Set,growthModuleIds:new Set,duplicateModuleIds:new Set}}function bf(e){let t=new Map(e.result.packages.map(t=>{let n=t.files.reduce((e,t)=>e+(t.size??0),0),r=sf(t,e.result.metadata?.budgets);return[t.id,cf(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(gf(r.id,i.file)),s=Math.max(i.size??1,1),c=i.type===`chunk`?vf(e.filter,i.modules??[]).map(t=>df(r.id,r.label,i.file,s,e.moduleUsageCount,t,e.theme)):_f(r.id,i,e.filter)?[ff(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??hf(c):hf(c);return[pf(r.label,r.id,e.packageLabelMap,i,c,l,a,t.get(r.id)??0,e.theme)]});return i.length===0?[]:[mf(r,e.filter.mode===`all`||e.filter.mode===`selected-package`?r.files.reduce((e,t)=>e+(t.size??0),0):hf(i),i,t.get(r.id)??0,e.theme)]})}function xf(e,t,n){let r=C(()=>new Map((e.value?.packages??[]).map(e=>[e.id,e.label]))),i=C(()=>new Map((e.value?.modules??[]).map(e=>[e.id,e.packages.length]))),a=C(()=>{let a=e.value;return a?bf({result:a,packageLabelMap:r.value,moduleUsageCount:i.value,filter:n?.value??yf(),theme:t.value}):[]});return{treemapOption:C(()=>({backgroundColor:`transparent`,tooltip:{formatter:e=>Au(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:Tu,data:a.value}]})),treemapNodes:a}}ye(),Te(),Se(),Ee(),ve([xe,Ce,_e,be,we]);function Sf(e){let t=m(null),n=m(null),r=m(null),{canUseSelectedPackageFilter:i,duplicateModuleIds:a,growthModuleIds:o,handleUpdateTreemapFilterMode:s,treemapFilterMode:c,treemapFilterState:l}=Gd({duplicateModules:e.duplicateModules,incrementAttribution:e.incrementAttribution,selectedBudgetWarning:r,selectedLargestFile:n,selectedTreemapMeta:t}),{treemapOption:u,treemapNodes:d}=xf(e.resultRef,e.resolvedTheme,l),f=C(()=>e.resultRef.value!==null&&d.value.length===0),p=C(()=>{let n=t.value;return n?.kind===`module`?e.duplicateModules.value.filter(e=>e.source===n.source):e.duplicateModules.value}),h=C(()=>Ud({files:e.largestFiles.value,filterState:l.value,meta:t.value,warning:r.value})),g=C(()=>h.value.slice(0,10)),_=C(()=>n.value?`${n.value.packageId}:${n.value.file}`:null),v=C(()=>n.value?Du(n.value.packageId,n.value.file):t.value?.nodeId??null),y=C(()=>{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=C(()=>Wd({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:w,ensureChart:T,focusTreemapNode:E,handleResize:D,resetTreemapFocus:O}=Kd({activeTab:e.activeTab,resolvedTheme:e.resolvedTheme,treemapOption:u,handleChartClick:x});function k(e){n.value=e,t.value={kind:`file`,nodeId:Du(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 A(i){if(r.value=i,n.value=Ud({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:Eu(a.id),packageId:a.id,packageLabel:a.label,packageType:a.type,fileCount:a.fileCount,totalBytes:a.totalBytes}:null}function ee(i){e.activeTab.value=`packages`,t.value={kind:`package`,nodeId:Eu(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:w,ensureChart:T,filteredDuplicateModules:p,filteredLargestFiles:h,handleFocusTreemapSelection:j,handleResetTreemapFocus:M,handleResize:D,handleSelectBudgetWarning:A,handleSelectLargestFile:k,handleSelectPackageInsight:ee,handleUpdateTreemapFilterMode:s,isTreemapEmpty:f,resetTreemapSelection:N,selectedBudgetWarning:r,selectedFileModules:b,selectedLargestFile:n,selectedTreemapFocusNodeId:v,selectedTreemapMeta:t,treemapFilterMode:c,visibleLargestFiles:g}}function Cf(e){return new URL(e,window.location.origin).toString()}function wf(e){let t=v(),n=O(),r=C(()=>t.fullPath!==`/analyze`);async function i(){await U(Cf(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 Tf=`weapp-vite:dashboard:analyze-work-queue`;function Ef(){try{let e=window.localStorage.getItem(Tf);return kd(e?JSON.parse(e):null)}catch{return[]}}function Df(e){try{window.localStorage.setItem(Tf,JSON.stringify(e))}catch{}}function Of(){let t=m([]),n=C(()=>t.value.filter(e=>!e.completedAt)),r=C(()=>t.value.filter(e=>e.completedAt)),i=C(()=>t.value.filter(e=>e.targetKind===`action`&&!e.completedAt).map(e=>e.targetKey));function a(e){t.value=kd(e),Df(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=Ef()}),{completedWorkQueueItems:r,openWorkQueueItems:n,queuedActionKeys:i,workQueueItems:t,addWorkQueueItem:o,clearCompletedWorkQueueItems:l,removeWorkQueueItem:c,toggleWorkQueueItem:s}}function $(e){return e}function kf(e){return typeof e!=`number`||Number.isNaN(e)||e===0?``:`${e>0?`+`:`-`}${z(Math.abs(e))}`}function Af(e){let t=v(),n=O(),r=C({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=C(()=>e.packageInsights.value.reduce((e,t)=>e+t.chunkCount,0)),a=C(()=>e.packageInsights.value.reduce((e,t)=>e+t.assetCount,0)),o=C(()=>e.duplicateModules.value.reduce((e,t)=>e+t.bytes,0)),s=C(()=>{let t=e.summary.value,n=t.compressedSizeSource===`real`?`Brotli`:`估算压缩后`,r=kf(t.compressedDeltaBytes);return`${n} ${z(t.compressedBytes)}${r?` · ${r}`:``}`}),c=C(()=>{let t=kf(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:z(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?z(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:z(e.summary.value.totalBytes),detail:s.value,wide:!0,iconName:`metric-size`})]}return{activeTab:r,topCards:C(()=>r.value===`packages`?l():r.value===`modules`?u():d()),packageTypeSummary:e.packageTypeSummary}}var jf=[{id:`metrics`,label:`关键指标`}],Mf=[{id:`actions`,label:`问题中心`},{id:`work-queue`,label:`处理清单`},{id:`history`,label:`历史基线`}],Nf=[{id:`review`,label:`PR 风险清单`}],Pf=[{id:`treemap`,label:`体积地图`}],Ff=[{id:`packages`,label:`包与产物`}],If=[{id:`modules`,label:`模块复用`}],Lf=[{id:`source`,label:`源码对比`}];function Rf(){let t=m(!1),{resolvedTheme:n}=ue(),{baselineSnapshotId:r,comparisonMode:i,comparisonResultRef:a,historySnapshots:o,lastUpdatedAt:s,resultRef:c,setBaselineSnapshot:l,setComparisonMode:u,updateCount:d}=me(),p=Sd(c,a),{activeTab:h,topCards:g,packageTypeSummary:_}=Af({summary:p.summary,packageInsights:p.packageInsights,packageTypeSummary:p.packageTypeSummary,duplicateModules:p.duplicateModules,moduleSourceSummary:p.moduleSourceSummary,lastUpdatedAt:s}),v=Sf({activeTab:h,resultRef:c,resolvedTheme:n,largestFiles:p.largestFiles,duplicateModules:p.duplicateModules,incrementAttribution:p.incrementAttribution,packageInsights:p.packageInsights}),{actionItems:y}=Fu({budgetWarnings:p.budgetWarnings,incrementAttribution:p.incrementAttribution,duplicateModules:p.duplicateModules,largestFiles:p.largestFiles,packageInsights:p.packageInsights}),b=Of(),x=C(()=>wu({actionItems:y.value,workQueueItems:b.workQueueItems.value})),{commandItems:S}=Gu({actionItems:y,budgetWarnings:p.budgetWarnings,duplicateModules:p.duplicateModules,incrementAttribution:p.incrementAttribution,largestFiles:p.largestFiles,packageInsights:p.packageInsights}),w=Bd({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}),E=Md({activeTab:h,actionItems:y,workQueueItems:b.workQueueItems,addWorkQueueItem:b.addWorkQueueItem,exportStatus:w.exportStatus,treemapFilterMode:v.treemapFilterMode,selectedTreemapMeta:v.selectedTreemapMeta,selectedLargestFile:v.selectedLargestFile,selectedBudgetWarning:v.selectedBudgetWarning,handleSelectBudgetWarning:v.handleSelectBudgetWarning,handleSelectLargestFile:v.handleSelectLargestFile}),D=wf({exportStatus:w.exportStatus,moreMenuOpen:t,resetPageSelection:E.resetPageSelection,resetTreemapSelection:v.resetTreemapSelection}),O=C(()=>`${d.value} 次数据同步`),k=C(()=>n.value===`dark`?`status-dark`:`status-light`),A=C(()=>[{iconName:k.value,label:O.value},{label:s.value}]),ee=C(()=>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&&(E.commandPaletteOpen.value=!0))}return f(c,()=>{v.resetTreemapSelection(),E.resetPageSelection()}),e(()=>{window.addEventListener(`resize`,v.handleResize),window.addEventListener(`keydown`,M),window.addEventListener(`click`,j),v.ensureChart()}),T(()=>{window.removeEventListener(`resize`,v.handleResize),window.removeEventListener(`keydown`,M),window.removeEventListener(`click`,j),v.destroyChart()}),{...p,...E,...w,...v,...D,...b,actionItems:y,activeTab:h,activeBudgetWarningId:ee,baselineSnapshotId:r,commandItems:S,comparisonMode:i,diagnosticsLayoutItems:Mf,historySnapshots:o,metricPackageTypeSummary:_,modulesLayoutItems:If,moreMenuOpen:t,overviewLayoutItems:jf,packagesLayoutItems:Ff,prReviewChecklist:x,resolvedTheme:n,reviewLayoutItems:Nf,setBaselineSnapshot:l,setComparisonMode:u,sourceLayoutItems:Lf,statusPills:A,topCards:g,treemapFilterOptions:ge,treemapLayoutItems:Pf,resultRef:c}}var zf=n({__name:`analyze`,setup(e,{expose:t}){t();let{actionItems:n,activeBudgetWarningId:r,activeLargestFileKey:i,activeTab:a,activeWorkQueueItemId:o,baselineSnapshotId:s,bindChartRef:c,budgetWarnings:l,canUseSelectedPackageFilter:u,canResetView:d,clearCompletedWorkQueueItems:f,commandItems:p,commandPaletteOpen:m,comparisonMode:h,copyMarkdownReport:g,copyPrReport:_,copyPrReviewChecklist:v,copySummary:y,copyViewLink:b,copyWorkQueueReport:x,diagnosticsLayoutItems:S,exportCsv:C,exportJson:w,exportMarkdown:T,exportStatus:E,filteredDuplicateModules:D,filteredLargestFiles:O,handleAddActionToWorkQueue:k,handleFocusTreemapSelection:A,handleResetTreemapFocus:ee,handleSelectAction:j,handleSelectBudgetWarning:M,handleSelectLargestFile:N,handleSelectPackageInsight:P,handleSelectReviewChecklistItem:F,handleSelectCommand:I,handleSelectWorkQueueItem:te,handleUpdateTreemapFilterMode:ne,historySnapshots:re,incrementAttribution:ie,incrementSummary:ae,isTreemapEmpty:oe,largestFiles:se,metricPackageTypeSummary:L,modulesLayoutItems:R,moduleSourceSummary:ce,moreMenuOpen:le,openWorkQueueItems:ue,overviewLayoutItems:z,packageInsights:B,packagesLayoutItems:de,prReviewChecklist:fe,queuedActionKeys:pe,removeWorkQueueItem:me,resetAnalyzeView:V,resolvedTheme:H,resultRef:he,reviewLayoutItems:ge,selectedActionKey:U,selectedFileModules:W,selectedTreemapFocusNodeId:G,selectedTreemapMeta:_e,setBaselineSnapshot:ve,setComparisonMode:ye,sourceLayoutItems:be,statusPills:xe,summary:Se,toggleWorkQueueItem:Ce,topCards:we,treemapFilterMode:Te,treemapFilterOptions:Ee,treemapLayoutItems:De,visibleLargestFiles:Oe,workQueueItems:ke}=Rf(),Ae={actionItems:n,activeBudgetWarningId:r,activeLargestFileKey:i,activeTab:a,activeWorkQueueItemId:o,baselineSnapshotId:s,bindChartRef:c,budgetWarnings:l,canUseSelectedPackageFilter:u,canResetView:d,clearCompletedWorkQueueItems:f,commandItems:p,commandPaletteOpen:m,comparisonMode:h,copyMarkdownReport:g,copyPrReport:_,copyPrReviewChecklist:v,copySummary:y,copyViewLink:b,copyWorkQueueReport:x,diagnosticsLayoutItems:S,exportCsv:C,exportJson:w,exportMarkdown:T,exportStatus:E,filteredDuplicateModules:D,filteredLargestFiles:O,handleAddActionToWorkQueue:k,handleFocusTreemapSelection:A,handleResetTreemapFocus:ee,handleSelectAction:j,handleSelectBudgetWarning:M,handleSelectLargestFile:N,handleSelectPackageInsight:P,handleSelectReviewChecklistItem:F,handleSelectCommand:I,handleSelectWorkQueueItem:te,handleUpdateTreemapFilterMode:ne,historySnapshots:re,incrementAttribution:ie,incrementSummary:ae,isTreemapEmpty:oe,largestFiles:se,metricPackageTypeSummary:L,modulesLayoutItems:R,moduleSourceSummary:ce,moreMenuOpen:le,openWorkQueueItems:ue,overviewLayoutItems:z,packageInsights:B,packagesLayoutItems:de,prReviewChecklist:fe,queuedActionKeys:pe,removeWorkQueueItem:me,resetAnalyzeView:V,resolvedTheme:H,resultRef:he,reviewLayoutItems:ge,selectedActionKey:U,selectedFileModules:W,selectedTreemapFocusNodeId:G,selectedTreemapMeta:_e,setBaselineSnapshot:ve,setComparisonMode:ye,sourceLayoutItems:be,statusPills:xe,summary:Se,toggleWorkQueueItem:Ce,topCards:we,treemapFilterMode:Te,treemapFilterOptions:Ee,treemapLayoutItems:De,visibleLargestFiles:Oe,workQueueItems:ke,AnalyzeCommandPalette:at,AnalyzeEmptyPayloadPanel:ft,AnalyzeResultSections:Ql,AnalyzeToolbar:_u};return Object.defineProperty(Ae,"__isScriptSetup",{enumerable:!1,value:!0}),Ae}}),Bf={class:`grid h-full min-h-0 grid-rows-[auto_minmax(0,1fr)] gap-2 overflow-hidden`};function Vf(e,t,n,r,i,a){return w(),F(`div`,Bf,[r.resultRef?N(``,!0):(w(),_(r.AnalyzeEmptyPayloadPanel,{key:0})),p(r.AnalyzeToolbar,{"more-menu-open":r.moreMenuOpen,"onUpdate:moreMenuOpen":t[0]||=e=>r.moreMenuOpen=e,"can-reset-view":r.canResetView,"can-search":!!r.resultRef,"export-status":r.exportStatus,"open-work-queue-count":r.openWorkQueueItems.length,"status-pills":r.statusPills,onCopyMarkdown:r.copyMarkdownReport,onCopyPr:r.copyPrReport,onCopySummary:r.copySummary,onCopyViewLink:r.copyViewLink,onExportCsv:r.exportCsv,onExportJson:r.exportJson,onExportMarkdown:r.exportMarkdown,onOpenSearch:t[1]||=e=>r.commandPaletteOpen=!0,onResetView:r.resetAnalyzeView},null,8,[`more-menu-open`,`can-reset-view`,`can-search`,`export-status`,`open-work-queue-count`,`status-pills`,`onCopyMarkdown`,`onCopyPr`,`onCopySummary`,`onCopyViewLink`,`onExportCsv`,`onExportJson`,`onExportMarkdown`,`onResetView`]),r.resultRef?(w(),_(r.AnalyzeResultSections,{key:1,"action-items":r.actionItems,"active-budget-warning-id":r.activeBudgetWarningId,"active-largest-file-key":r.activeLargestFileKey,"active-tab":r.activeTab,"active-work-queue-item-id":r.activeWorkQueueItemId,"baseline-snapshot-id":r.baselineSnapshotId,"bind-chart-ref":r.bindChartRef,"budget-config":r.resultRef.metadata?.budgets,"budget-warnings":r.budgetWarnings,"can-use-selected-package-filter":r.canUseSelectedPackageFilter,"comparison-mode":r.comparisonMode,"copy-status":r.exportStatus,"diagnostics-layout-items":r.diagnosticsLayoutItems,"filtered-duplicate-modules":r.filteredDuplicateModules,"filtered-largest-files":r.filteredLargestFiles,"history-snapshots":r.historySnapshots,"increment-attribution":r.incrementAttribution,"increment-summary":r.incrementSummary,"is-treemap-empty":r.isTreemapEmpty,"largest-files":r.largestFiles,"metric-package-type-summary":r.metricPackageTypeSummary,"modules-layout-items":r.modulesLayoutItems,"module-source-summary":r.moduleSourceSummary,"overview-layout-items":r.overviewLayoutItems,"package-insights":r.packageInsights,"packages-layout-items":r.packagesLayoutItems,"pr-review-checklist":r.prReviewChecklist,"queued-action-keys":r.queuedActionKeys,"review-layout-items":r.reviewLayoutItems,"selected-action-key":r.selectedActionKey,"selected-file-modules":r.selectedFileModules,"selected-treemap-focus-node-id":r.selectedTreemapFocusNodeId,"selected-treemap-meta":r.selectedTreemapMeta,"source-layout-items":r.sourceLayoutItems,theme:r.resolvedTheme,"top-cards":r.topCards,"total-bytes":r.summary.totalBytes,"treemap-filter-mode":r.treemapFilterMode,"treemap-filter-options":r.treemapFilterOptions,"treemap-layout-items":r.treemapLayoutItems,"visible-largest-files":r.visibleLargestFiles,"work-queue-items":r.workQueueItems,onAddActionToQueue:r.handleAddActionToWorkQueue,onClearCompletedWorkQueue:r.clearCompletedWorkQueueItems,onCopyPr:r.copyPrReport,onCopyReviewChecklist:r.copyPrReviewChecklist,onCopyWorkQueue:r.copyWorkQueueReport,onFocusTreemapSelection:r.handleFocusTreemapSelection,onRemoveWorkQueueItem:r.removeWorkQueueItem,onResetTreemapFocus:r.handleResetTreemapFocus,onSelectAction:r.handleSelectAction,onSelectBudgetWarning:r.handleSelectBudgetWarning,onSelectFile:r.handleSelectLargestFile,onSelectPackage:r.handleSelectPackageInsight,onSelectReviewChecklistItem:r.handleSelectReviewChecklistItem,onSelectWorkQueueItem:r.handleSelectWorkQueueItem,onSetBaseline:r.setBaselineSnapshot,onSetComparisonMode:r.setComparisonMode,onToggleWorkQueueItem:r.toggleWorkQueueItem,onUpdateTreemapFilterMode:r.handleUpdateTreemapFilterMode},null,8,`action-items.active-budget-warning-id.active-largest-file-key.active-tab.active-work-queue-item-id.baseline-snapshot-id.bind-chart-ref.budget-config.budget-warnings.can-use-selected-package-filter.comparison-mode.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(`.`))):N(``,!0),p(r.AnalyzeCommandPalette,{open:!!(r.resultRef&&r.commandPaletteOpen),items:r.commandItems,onClose:t[2]||=e=>r.commandPaletteOpen=!1,onSelect:r.handleSelectCommand},null,8,[`open`,`items`,`onSelect`])])}var Hf=B(zf,[[`render`,Vf]]);export{Hf as default};
|