@weapp-vite/dashboard 7.1.3 → 7.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,32 +1,32 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./monaco.css"])))=>i.map(i=>d[i]);
2
- import{A as e,B as t,C as n,D as r,E as i,G as a,H as o,I as s,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)).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,DashboardIcon:R};return Object.defineProperty(h,"__isScriptSetup",{enumerable:!1,value:!0}),h}}),mt=[`onDrop`],ht={class:`absolute inset-x-0 top-0 z-10 flex -translate-y-1/2 items-center justify-center gap-2 px-2`},gt=[`aria-label`,`title`,`onDragstart`],_t={class:`h-4 w-4`,"aria-hidden":`true`},vt={class:`h-4 w-4`,"aria-hidden":`true`},yt={class:`min-h-0`};function bt(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([`relative min-h-0 rounded-lg border border-dashed border-transparent pt-2 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 h-7 w-7 shrink-0 cursor-grab items-center justify-center rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-strong) text-(--dashboard-text-soft) shadow-(--dashboard-shadow) transition hover:border-(--dashboard-border-strong) hover:text-(--dashboard-text)`,draggable:`true`,type:`button`,"aria-label":`拖动调整${n.label}模块位置`,title:`拖动调整${n.label}模块位置`,onDragend:t[0]||=e=>r.draggingId=null,onDragstart:e=>r.handleDragStart(n,e)},[S(`span`,_t,[p(r.DashboardIcon,{name:`metric-drag`})])],40,gt),r.orderedItems.length>1&&n.id===r.orderedItems[0]?.id?(w(),F(`button`,{key:0,class:`absolute right-2 inline-flex h-7 w-7 shrink-0 items-center justify-center rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-strong) text-(--dashboard-text-soft) shadow-(--dashboard-shadow) transition hover:border-(--dashboard-border-strong) hover:text-(--dashboard-text)`,type:`button`,"aria-label":`重置模块布局`,title:`重置模块布局`,onClick:r.resetOrder},[S(`span`,vt,[p(r.DashboardIcon,{name:`metric-reset`})])])):N(``,!0)]),S(`div`,yt,[d(e.$slots,n.id,{item:n})])],42,mt))),128))],2)}var xt=B(pt,[[`render`,bt]]);function St(e){return typeof e!=`number`||Number.isNaN(e)||e===0?``:`${e>0?`+`:`-`}${z(Math.abs(e))}`}function Ct(e){let t=St(e.sizeDeltaBytes);return{title:e.file,meta:`${e.packageLabel} · ${V(e.packageType)} · ${e.type}${t?` · ${t}`:``}`,value:`${z(e.size)} / ${z(e.compressedSize)}`}}function wt(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 Tt(e){return e.replaceAll(`|`,`\\|`).replaceAll(`
3
- `,` `)}function Et(e){return[`# dashboard 文件详情`,``,`文件数量:${e.files.length} / ${e.totalCount}`,``,`| 文件 | 包 | 类型 | 总体积 | 压缩后 | 较上次 | 模块 | 来源 |`,`| --- | --- | --- | ---: | ---: | ---: | ---: | --- |`,...e.files.map(e=>[e.file,e.packageLabel,e.type,z(e.size),z(e.compressedSize),St(e.sizeDeltaBytes)||`-`,String(e.moduleCount),e.source??`-`].map(Tt).join(` | `)).map(e=>`| ${e} |`),``].join(`
4
- `)}var Dt=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}}),Ot={class:`flex items-start justify-between gap-3`},kt={class:`min-w-0`},At={class:`mt-1 text-xs text-(--dashboard-text-soft)`},jt={key:0,class:`whitespace-nowrap font-medium text-(--dashboard-accent)`},Mt={key:1,class:`list-none`},Nt={class:`flex items-start justify-between gap-3`},Pt={class:`min-w-0`},Ft={class:`mt-1 text-xs text-(--dashboard-text-soft)`},It={key:0,class:`whitespace-nowrap font-medium text-(--dashboard-accent)`};function Lt(e,t,n,r,i,o){return n.clickable?(w(),F(`li`,Mt,[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`,Nt,[S(`div`,Pt,[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`,Ft,c(n.meta),1)]),n.value?(w(),F(`span`,It,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`,Ot,[S(`div`,kt,[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`,At,c(n.meta),1)]),n.value?(w(),F(`span`,jt,c(n.value),1)):N(``,!0)])],2))}var Rt=B(Dt,[[`render`,Lt]]),zt=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))).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,...Ct(e)}))}),p=C(()=>r.selectedTreemapMeta?wt(r.selectedTreemapMeta):null),m=C(()=>Et({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:Rt,AppEmptyState:W};return Object.defineProperty(v,"__isScriptSetup",{enumerable:!1,value:!0}),v}}),Bt={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)`},Vt={class:`mb-2 flex items-center justify-between gap-3`},Ht={class:`mt-1 text-xs text-(--dashboard-text-soft)`},Ut={class:`mb-3 grid gap-2`},Wt={class:`flex flex-wrap items-center gap-2`},Gt={key:0,class:`text-xs font-medium text-(--dashboard-accent)`},Kt=[`disabled`],qt=[`disabled`],Jt={class:`grid grid-cols-2 gap-2`},Yt=[`value`],Xt={class:`min-h-0 overflow-y-auto pr-1`},Zt={class:`grid gap-2 text-sm`};function Qt(e,n,i,a,o,s){return w(),F(`section`,Bt,[S(`div`,Vt,[S(`div`,null,[n[3]||=S(`h3`,{class:`text-sm font-semibold text-(--dashboard-text)`},` Top Files `,-1),S(`p`,Ht,` 匹配 `+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`,Ut,[S(`div`,Wt,[a.actionStatus?(w(),F(`span`,Gt,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,Kt),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,qt)]),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`,Jt,[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,Yt))),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`,Xt,[a.selectedItem?(w(),_(a.AppCompactListItem,r({key:0,class:`mb-2`},a.selectedItem),null,16)):N(``,!0),S(`ol`,Zt,[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 $t=B(zt,[[`render`,Qt]]),en=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))).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:Rt,AppEmptyState:W};return Object.defineProperty(_,"__isScriptSetup",{enumerable:!1,value:!0}),_}}),tn={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)`},nn={class:`mb-2 flex items-center justify-between gap-3`},rn={class:`mt-1 text-xs text-(--dashboard-text-soft)`},an={class:`mb-3 grid gap-2`},on={class:`flex flex-wrap items-center gap-2`},sn={key:0,class:`text-xs font-medium text-(--dashboard-accent)`},cn=[`disabled`],ln=[`disabled`],un={class:`grid grid-cols-2 gap-2`},dn=[`value`],fn={class:`grid min-h-0 gap-2 overflow-y-auto pr-1 text-sm text-(--dashboard-text-muted)`};function pn(e,n,r,i,a,o){return w(),F(`section`,tn,[S(`div`,nn,[S(`div`,null,[n[3]||=S(`h3`,{class:`text-sm font-semibold text-(--dashboard-text)`},` 文件详情 `,-1),S(`p`,rn,` 匹配 `+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`,an,[S(`div`,on,[i.actionStatus?(w(),F(`span`,sn,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,cn),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,ln)]),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`,un,[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,dn))),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`,fn,[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 mn=B(en,[[`render`,pn]]),K={totalBytes:20971520,mainBytes:2097152,subPackageBytes:2097152,independentBytes:2097152,warningRatio:.85,source:`default`},q=1048576,hn=[{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 gn(e,t){return Number.isFinite(e)&&e>0?Math.round(e):t}function _n(e){return Number.isFinite(e)?Math.min(.99,Math.max(.01,e)):K.warningRatio}function vn(e,t){return e===`main`?t.mainBytes:e===`subPackage`?t.subPackageBytes:e===`independent`?t.independentBytes:0}function yn(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:gn(e?.totalBytes??K.totalBytes,K.totalBytes),mainBytes:gn(e?.mainBytes??K.mainBytes,K.mainBytes),subPackageBytes:gn(e?.subPackageBytes??K.subPackageBytes,K.subPackageBytes),independentBytes:gn(e?.independentBytes??K.independentBytes,K.independentBytes),warningRatio:_n(e?.warningRatio??K.warningRatio)}}function bn(e,t){return e.totalBytes===t.totalBytes&&e.mainBytes===t.mainBytes&&e.subPackageBytes===t.subPackageBytes&&e.independentBytes===t.independentBytes&&e.warningRatio===t.warningRatio}function xn(e){let t=J(e);return hn.find(e=>bn(J(e.config),t))}function Sn(e){let t=J(e.config),n=[],r=yn({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=vn(r.type,t);if(!e)continue;let i=yn({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 Cn(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 wn=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(()=>Sn({totalBytes:r.totalBytes,packages:r.packageInsights,config:d.value})),m=C(()=>xn(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(()=>Cn(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=hn.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 hn},AppCompactListItem:Rt,AppEmptyState:W};return Object.defineProperty(D,"__isScriptSetup",{enumerable:!1,value:!0}),D}}),Tn={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)`},En={class:`mb-2 flex items-center justify-between gap-3`},Dn={class:`mt-1 text-xs text-(--dashboard-text-soft)`},On={key:0,class:`text-xs font-medium text-(--dashboard-accent)`},kn={class:`grid min-h-0 grid-rows-[auto_auto_auto_minmax(0,1fr)] gap-3 overflow-hidden`},An={class:`grid grid-cols-3 gap-2`},jn=[`onClick`],Mn={class:`block truncate text-xs font-semibold`},Nn={class:`mt-1 line-clamp-2 block text-[11px] leading-4 opacity-80`},Pn={class:`grid grid-cols-2 gap-2`},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-1 text-[11px] text-(--dashboard-text-soft)`},zn={class:`grid gap-2`},Bn={class:`grid gap-1 text-[11px] text-(--dashboard-text-soft)`},Vn={class:`min-h-0 overflow-y-auto pr-1`},Hn={key:1,class:`grid content-start gap-2 text-sm text-(--dashboard-text-muted)`};function Un(e,n,r,i,o,s){return w(),F(`section`,Tn,[S(`div`,En,[S(`div`,null,[n[5]||=S(`h3`,{class:`text-sm font-semibold text-(--dashboard-text)`},` 预算沙盘 `,-1),S(`p`,Dn,` 预测 `+c(i.projectedWarnings.length)+` 个告警 · 新增 `+c(i.newWarningCount)+` · 解除 `+c(i.resolvedWarningCount),1)]),i.actionStatus.text?(w(),F(`span`,On,c(i.actionStatus.text),1)):N(``,!0)]),S(`div`,kn,[S(`div`,An,[(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`,Mn,c(e.label),1),S(`span`,Nn,c(e.detail),1)],10,jn))),128))]),S(`div`,Pn,[S(`label`,Fn,[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`,In,[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`,Ln,[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`,Rn,[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`,zn,[S(`label`,Bn,[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`,Vn,[i.projectedWarningItems.length===0?(w(),_(i.AppEmptyState,{key:0,compact:``},{default:I(()=>[...n[10]||=[P(` 当前沙盘预算下没有预计告警。 `,-1)]]),_:1})):(w(),F(`ul`,Hn,[(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 Wn=B(wn,[[`render`,Un]]),Gn=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:xt,AnalyzeFileExplorerPanel:$t,AnalyzeFileModulesPanel:mn,BudgetSandboxPanel:Wn};return Object.defineProperty(r,"__isScriptSetup",{enumerable:!1,value:!0}),r}});function Kn(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 qn=B(Gn,[[`render`,Kn]]),Y={critical:4,warning:3,info:2,success:1};function Jn(e){return e===`budget`?`预算`:e===`increment`?`增量`:e===`duplicate`?`重复`:`文件`}function Yn(e){return le(e===`critical`?{tone:`error`}:e===`warning`?{tone:`warning`}:e===`success`?{tone:`success`}:{tone:`info`})}function Xn(e){return e===`critical`?`必须处理`:e===`warning`?`建议处理`:e===`success`?`可查看`:`定位`}function Zn(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 Qn(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)=>Jn(e).localeCompare(Jn(t)))}),c=C(()=>{let a=t.value.trim().toLowerCase();return Zn(e.actions.filter(e=>n.value!==`all`&&e.tone!==n.value||r.value!==`all`&&e.kind!==r.value?!1:!a||[e.key,e.kind,e.tone,e.title,e.meta,e.value,e.tab].some(e=>String(e??``).toLowerCase().includes(a))),i.value)});function l(t){return e.queuedActionKeys.includes(t.key)}return{actionKindFilter:r,actionQuery:t,actionSortMode:i,actionToneFilter:n,filteredActions:c,getKindLabel:Jn,getToneClassName:Yn,getToneLabel:Xn,isQueued:l,kindOptions:s,toneOptions:a}}var $n=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}}),er={class:`flex items-center justify-between gap-3`},tr={class:`flex items-center gap-2`},nr={class:`h-5 w-5`},rr={class:`min-w-0 md:flex md:flex-wrap md:items-baseline md:gap-x-2`},ir={class:`text-lg font-semibold text-(--dashboard-text)`},ar={key:0,class:`text-xs text-(--dashboard-text-soft) md:text-sm`};function or(e,t,n,r,i,o){return w(),F(`div`,er,[S(`div`,tr,[S(`span`,{class:a(r.iconClassName)},[S(`span`,nr,[p(r.DashboardIcon,{name:n.iconName},null,8,[`name`])])],2),S(`div`,rr,[S(`h2`,ir,c(n.title),1),n.description?(w(),F(`p`,ar,c(n.description),1)):N(``,!0)])]),d(e.$slots,`meta`)])}var X=B($n,[[`render`,or]]),sr=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}=Qn(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}}),cr={class:`h-3.5 w-3.5`},lr={class:`mt-3 grid gap-2`},ur={class:`flex flex-wrap items-center justify-between gap-2`},dr={class:`text-xs text-(--dashboard-text-soft)`},fr={class:`grid gap-2 sm:grid-cols-2 2xl:grid-cols-3`},pr=[`value`],mr=[`value`],hr={class:`mt-3 min-h-0 overflow-hidden`},gr={key:1,class:`grid h-full min-h-0 content-start gap-2 overflow-y-auto pr-1`},_r={class:`flex items-start justify-between gap-3`},vr=[`onClick`],yr={class:`flex min-w-0 items-center gap-2`},br={class:`rounded-full bg-(--dashboard-accent-soft) px-2 py-0.5 text-[11px] text-(--dashboard-text-muted)`},xr={class:`truncate text-sm font-medium text-(--dashboard-text)`},Sr={class:`mt-1 truncate text-xs text-(--dashboard-text-soft)`},Cr={key:0,class:`whitespace-nowrap text-sm font-medium text-(--dashboard-accent)`},wr={class:`mt-2 flex items-center justify-end border-t border-(--dashboard-border) pt-2`},Tr=[`disabled`,`onClick`];function Er(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`,cr,[p(i.DashboardIcon,{name:`metric-copy`})]),n[5]||=P(` 复制 PR `,-1)])]),_:1}),S(`div`,lr,[S(`div`,ur,[S(`p`,dr,` 匹配 `+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`,fr,[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,pr))),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,mr))),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`,hr,[i.filteredActions.length===0?(w(),_(i.AppEmptyState,{key:0,compact:``},{default:I(()=>[...n[9]||=[P(` 暂无匹配当前筛选条件的事项。 `,-1)]]),_:1})):(w(),F(`ol`,gr,[(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`,_r,[S(`button`,{type:`button`,class:`min-w-0 text-left`,onClick:t=>i.emit(`select`,e)},[S(`div`,yr,[S(`span`,{class:a(i.getToneClassName(e.tone))},c(i.getToneLabel(e.tone)),3),S(`span`,br,c(i.getKindLabel(e.kind)),1),S(`p`,xr,c(e.title),1)]),S(`p`,Sr,c(e.meta),1)],8,vr),e.value?(w(),F(`span`,Cr,c(e.value),1)):N(``,!0)]),S(`div`,wr,[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,Tr)])],2)]))),128))]))])],2)}var Dr=B(sr,[[`render`,Er]]),Or=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));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}}),kr=[`disabled`],Ar={class:`h-3.5 w-3.5`},jr={class:`mt-3 grid gap-2`},Mr={class:`grid grid-cols-3 gap-2 text-center`},Nr={class:`mt-3 min-h-0 overflow-hidden`},Pr={key:1,class:`grid h-full min-h-0 content-start gap-2 overflow-y-auto pr-1`},Fr={class:`flex items-start justify-between gap-2`},Ir=[`onClick`],Lr={class:`mt-2 truncate text-sm font-medium text-(--dashboard-text)`},Rr={class:`mt-1 line-clamp-2 text-xs leading-5 text-(--dashboard-text-soft)`},zr={key:0,class:`shrink-0 text-xs font-medium text-(--dashboard-accent)`},Br={class:`flex items-center justify-between gap-2 border-t border-(--dashboard-border) pt-2`},Vr=[`onClick`],Hr=[`onClick`];function Ur(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`,Ar,[p(r.DashboardIcon,{name:`metric-copy`})]),t[5]||=P(` 复制 `,-1)],8,kr)]),_:1}),S(`div`,jr,[S(`div`,Mr,[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`,Nr,[r.visibleItems.length===0?(w(),_(r.AppEmptyState,{key:0,compact:``},{default:I(()=>[...t[6]||=[P(` 当前没有处理事项。 `,-1)]]),_:1})):(w(),F(`ol`,Pr,[(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`,Fr,[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`,Lr,c(e.title),1),S(`p`,Rr,c(e.meta),1)],8,Ir),e.value?(w(),F(`span`,zr,c(e.value),1)):N(``,!0)]),S(`div`,Br,[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,Vr),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,Hr)])],2))),128))]))])],2)}var Wr=B(Or,[[`render`,Ur]]);function Gr(e){return e===0?`0 B`:`${e>0?`+`:`-`}${z(Math.abs(e))}`}function Kr(e,t){return e===0&&t===0?`stable`:t>0?`growing`:t<0?`shrinking`:`stable`}function qr(e){return e===`growing`?`增长`:e===`shrinking`?`下降`:e===`stable`?`稳定`:`样本不足`}function Jr(e){return e===`growing`?`历史快照显示体积正在上升`:e===`shrinking`?`历史快照显示体积正在下降`:e===`stable`?`历史快照整体保持稳定`:`需要更多历史快照判断趋势`}function Yr(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:qr(`insufficient`),headline:Jr(`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=Kr(a,o);return{status:c,label:qr(c),headline:Jr(c),description:`${t.length} 个历史样本 · ${n.label} 至 ${r.label}`,totalDeltaBytes:a,averageDeltaBytes:o,projectedNextBytes:s,metrics:[{label:`样本数`,value:t.length},{label:`累计变化`,value:Gr(a)},{label:`平均变化`,value:Gr(o)},{label:`预测下次`,value:z(s)}]}}function Xr(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 Zr(e){return e===0?`无变化`:`${e>0?`+`:`-`}${z(Math.abs(e))}`}function Qr(e){return new Date(e.capturedAt).toLocaleString(`zh-CN`,{month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`,hour12:!1})}function $r(e){return[e.id,e.label,e.capturedAt,e.packageCount,e.moduleCount,e.duplicateCount,e.totalBytes,e.compressedBytes].join(` `).toLowerCase()}function ei(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 ti(e){let t=o(``),n=o(`capturedAt`),{actionStatus:r,setActionStatus:i}=Xr(),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(()=>Yr(e.snapshots)),u=C(()=>!s.value||!a.value?``:Zr(s.value.totalBytes-a.value.totalBytes)),d=C(()=>!s.value||!c.value?``:Zr(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 ei(e.snapshots.filter(e=>!r||$r(e).includes(r)),n.value)}),h=C(()=>{let e=s.value,t=a.value,n=c.value;return[`# dashboard 历史基线`,``,e?`当前快照:${Qr(e)} · ${z(e.totalBytes)} · 压缩后 ${z(e.compressedBytes)}`:`当前快照:暂无`,t?`基线快照:${Qr(t)} · ${z(t.totalBytes)} · 压缩后 ${z(t.compressedBytes)}`:`基线快照:未设置`,n?`上次快照:${Qr(n)} · ${z(n.totalBytes)} · 压缩后 ${z(n.compressedBytes)}`:`上次快照:暂无`,`当前对比:${f.value}`,``,`| 时间 | 总体积 | 压缩后 | 包 | 模块 | 复用模块 |`,`| --- | ---: | ---: | ---: | ---: | ---: |`,...m.value.map(e=>`| ${Qr(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:Qr,historyTrend:l,snapshotQuery:t,snapshotSortMode:n}}var ni=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}}),ri={class:`flex flex-wrap items-center justify-between gap-2`},ii={class:`text-xs text-(--dashboard-text-soft)`},ai={class:`flex flex-wrap items-center gap-2`},oi={key:0,class:`text-xs font-medium text-(--dashboard-accent)`},si=[`disabled`],ci=[`disabled`];function li(e,n,r,i,a,o){return w(),F(`div`,ri,[S(`p`,ii,` 匹配 `+c(r.filteredCount)+` / `+c(r.totalCount)+` 个快照 `,1),S(`div`,ai,[r.actionStatus?(w(),F(`span`,oi,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,si),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,ci),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 ui=B(ni,[[`render`,li]]),di=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}}),fi={class:`rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-3`},pi={class:`flex items-start justify-between gap-3`},mi={class:`min-w-0`},hi={class:`mt-2 text-sm font-semibold text-(--dashboard-text)`},gi={class:`mt-1 text-xs leading-5 text-(--dashboard-text-soft)`},_i={class:`mt-3 grid grid-cols-2 gap-2`};function vi(e,t,n,i,o,s){return w(),F(`section`,fi,[S(`div`,pi,[S(`div`,mi,[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`,hi,c(n.trend.headline),1),S(`p`,gi,c(n.trend.description),1)])]),S(`div`,_i,[(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 yi=B(di,[[`render`,vi]]),bi=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}=ti(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:ui,HistoryTrendPanel:yi};return Object.defineProperty(h,"__isScriptSetup",{enumerable:!1,value:!0}),h}}),xi={class:`flex gap-1.5`},Si=[`disabled`],Ci={class:`mt-3 grid min-h-0 grid-rows-[auto_auto_auto_minmax(0,1fr)] gap-2 overflow-hidden`},wi={class:`rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 py-2`},Ti={class:`flex items-center justify-between gap-3`},Ei={class:`text-sm font-medium text-(--dashboard-accent)`},Di={key:0,class:`mt-3 grid grid-cols-2 gap-2`},Oi={class:`text-[11px] text-(--dashboard-text-soft)`},ki={class:`mt-1 text-sm font-semibold text-(--dashboard-text)`},Ai={class:`grid gap-2`},ji={key:1,class:`grid min-h-0 gap-1.5 overflow-y-auto pr-1`},Mi=[`onClick`],Ni={class:`flex items-start justify-between gap-3`},Pi={class:`min-w-0`},Fi={class:`truncate text-sm font-medium text-(--dashboard-text)`},Ii={class:`mt-0.5 truncate text-xs text-(--dashboard-text-soft)`},Li={class:`text-right`},Ri={class:`whitespace-nowrap text-sm font-medium text-(--dashboard-accent)`},zi={class:`mt-0.5 whitespace-nowrap text-xs text-(--dashboard-text-soft)`};function Bi(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`,xi,[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,Si)])]),_:1}),S(`div`,Ci,[S(`div`,wi,[S(`div`,Ti,[n[4]||=S(`p`,{class:`text-xs text-(--dashboard-text-soft)`},` 当前对比 `,-1),S(`p`,Ei,c(i.activeComparisonLabel),1)]),i.baselineSummaryItems.length?(w(),F(`div`,Di,[(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`,Oi,c(e.label),1),S(`p`,ki,c(e.value),1)]))),128))])):N(``,!0)]),p(i.HistoryTrendPanel,{trend:i.historyTrend},null,8,[`trend`]),S(`div`,Ai,[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`,ji,[(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`,Ni,[S(`div`,Pi,[S(`p`,Fi,c(i.formatSnapshotDate(e)),1),S(`p`,Ii,c(e.packageCount)+` 包 · `+c(e.moduleCount)+` 模块 · 复用 `+c(e.duplicateCount),1)]),S(`div`,Li,[S(`p`,Ri,c(i.formatBytes(e.totalBytes)),1),S(`p`,zi,c(e.id===r.baselineSnapshotId?`baseline`:i.formatBytes(e.compressedBytes)),1)])])],10,Mi)]))),128))]))])],2)}var Vi=B(bi,[[`render`,Bi]]),Hi=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:Dr,AnalyzeDraggableGrid:xt,AnalyzeWorkQueuePanel:Wr,HistoryBaselinePanel:Vi};return Object.defineProperty(r,"__isScriptSetup",{enumerable:!1,value:!0}),r}});function Ui(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 Wi=B(Hi,[[`render`,Ui]]);function Gi(e){return Math.max(0,Math.min(100,Math.round(e)))}function Ki(e){return e===`blocked`?`Blocked`:e===`review`?`Review`:`Ready`}function qi(e){return e===`blocked`?`发布前需要先处理阻断项`:e===`review`?`建议评审后再发布`:`当前分析未发现阻断项`}function Ji(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 Yi(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 Xi(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=Gi(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:Ki(a),score:o,headline:qi(a),description:`${e.actionItems.length} 个候选事项 · ${e.packageInsights.length} 个包 · ${e.largestFiles.length} 个文件样本`,metrics:s,recommendations:Ji({criticalActions:t,warningActions:n,largestFile:r,largestPackage:i})};return{...c,report:Yi(c)}}function Zi(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(()=>Xi({actionItems:e.actionItems,largestFiles:e.largestFiles,packageInsights:e.packageInsights})),{actionStatus:a,setActionStatus:o}=Xr(),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:Yn,getToneLabel:Xn,packageOverviewItems:s,releaseGate:i,visibleActions:t,visibleLargestFiles:n}}var Qi=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}}),$i={class:`min-w-0`},ea={key:0,class:`mt-1 text-xs font-medium text-(--dashboard-accent)`},ta={key:0,class:`mt-3 flex flex-wrap gap-1.5`};function na(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`,$i,[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`,ea,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`,ta,[(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 ra=B(Qi,[[`render`,na]]),ia=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}}),aa={class:`rounded-lg border border-(--dashboard-border) bg-(--dashboard-panel) p-4 shadow-(--dashboard-shadow)`},oa={class:`flex items-center gap-2`},sa={key:0,class:`text-xs font-medium text-(--dashboard-accent)`},ca={class:`h-3.5 w-3.5`},la={class:`mt-3 grid gap-3 xl:grid-cols-[minmax(0,0.7fr)_minmax(0,1fr)]`},ua={class:`rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-3`},da={class:`flex items-start justify-between gap-3`},fa={class:`mt-3 text-lg font-semibold text-(--dashboard-text)`},pa={class:`mt-1 text-xs leading-5 text-(--dashboard-text-soft)`},ma={class:`shrink-0 text-right`},ha={class:`mt-1 text-3xl font-semibold text-(--dashboard-accent)`},ga={class:`grid gap-3 md:grid-cols-[minmax(0,0.9fr)_minmax(0,1fr)]`},_a={class:`grid grid-cols-2 gap-2`},va={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)`},ya={key:0};function ba(e,t,n,i,o,s){return w(),F(`section`,aa,[p(i.AppPanelHeader,{"icon-name":`metric-quality`,title:`发布门禁`},{meta:I(()=>[S(`div`,oa,[n.copyStatus?(w(),F(`span`,sa,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`,ca,[p(i.DashboardIcon,{name:`metric-copy`})]),t[1]||=P(` 复制门禁 `,-1)])])]),_:1}),S(`div`,la,[S(`div`,ua,[S(`div`,da,[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`,fa,c(n.gate.headline),1),S(`p`,pa,c(n.gate.description),1)]),S(`div`,ma,[t[2]||=S(`p`,{class:`text-[11px] uppercase tracking-[0.18em] text-(--dashboard-text-soft)`},` score `,-1),S(`p`,ha,c(n.gate.score),1)])])]),S(`div`,ga,[S(`div`,_a,[(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`,va,[(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`,ya,` 当前没有需要立即处理的事项。 `)):N(``,!0)])])])])}var xa=B(ia,[[`render`,ba]]),Sa=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}=Zi(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:ra,ReleaseGatePanel:xa};return Object.defineProperty(p,"__isScriptSetup",{enumerable:!1,value:!0}),p}}),Ca={class:`grid h-full min-h-0 grid-rows-[auto_auto_minmax(0,1fr)] gap-2 overflow-hidden`},wa={class:`grid min-h-0 gap-2 overflow-hidden xl:grid-cols-[minmax(0,0.95fr)_minmax(0,0.85fr)_minmax(0,0.9fr)]`},Ta={class:`h-3.5 w-3.5`},Ea={class:`mt-3 min-h-0 flex-1 overflow-hidden`},Da={key:1,class:`grid h-full min-h-0 gap-2 overflow-y-auto pr-1`},Oa=[`onClick`],ka={class:`flex min-w-0 items-start justify-between gap-3`},Aa={class:`min-w-0`},ja={class:`flex min-w-0 items-center gap-2`},Ma={class:`truncate text-sm font-medium text-(--dashboard-text)`},Na={class:`mt-1 truncate text-xs text-(--dashboard-text-soft)`},Pa={key:0,class:`shrink-0 whitespace-nowrap text-sm font-semibold text-(--dashboard-accent)`},Fa={class:`mt-3 grid min-h-0 gap-2 overflow-y-auto pr-1`},Ia=[`onClick`],La={class:`grid min-w-0 grid-cols-[minmax(0,1fr)_auto] items-start gap-3`},Ra={class:`min-w-0`},za={class:`truncate font-mono text-xs font-semibold text-(--dashboard-text)`},Ba={class:`mt-1 truncate text-xs text-(--dashboard-text-soft)`},Va={class:`shrink-0 text-right`},Ha={class:`text-sm font-semibold leading-5 text-(--dashboard-accent)`},Ua={class:`text-[11px] leading-4 text-(--dashboard-text-soft)`},Wa={class:`mt-3 grid min-h-0 gap-2 overflow-y-auto pr-1`},Ga=[`onClick`],Ka={class:`flex items-start justify-between gap-3`},qa={class:`min-w-0`},Ja={class:`truncate text-sm font-medium text-(--dashboard-text)`},Ya={class:`mt-1 text-xs text-(--dashboard-text-soft)`},Xa={class:`shrink-0 text-right`},Za={class:`text-sm font-semibold text-(--dashboard-text)`},Qa={class:`text-[11px] text-(--dashboard-text-soft)`},$a={class:`mt-2 h-1.5 overflow-hidden rounded-full bg-(--dashboard-accent-soft)`};function eo(e,t,n,r,i,o){return w(),F(`section`,Ca,[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`,wa,[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`,Ta,[p(r.DashboardIcon,{name:`metric-copy`})]),t[1]||=P(` 复制 PR `,-1)])]),_:1}),S(`div`,Ea,[r.visibleActions.length===0?(w(),_(r.AppEmptyState,{key:0,compact:``},{default:I(()=>[...t[2]||=[P(` 当前没有需要立即处理的事项。 `,-1)]]),_:1})):(w(),F(`ol`,Da,[(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`,ka,[S(`div`,Aa,[S(`div`,ja,[S(`span`,{class:a(r.getToneClassName(e.tone))},c(r.getToneLabel(e.tone)),3),S(`p`,Ma,c(e.title),1)]),S(`p`,Na,c(e.meta),1)]),e.value?(w(),F(`span`,Pa,c(e.value),1)):N(``,!0)])],8,Oa)]))),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`,Fa,[(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`,La,[S(`div`,Ra,[S(`p`,za,c(e.file),1),S(`p`,Ba,c(e.packageLabel)+` · `+c(r.formatPackageType(e.packageType))+` · `+c(e.type)+` · `+c(e.moduleCount)+` 模块 `,1)]),S(`div`,Va,[S(`p`,Ha,c(r.formatBytes(e.size)),1),S(`p`,Ua,c(r.formatBytes(e.compressedSize)),1)])])],8,Ia)]))),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`,Wa,[(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`,Ka,[S(`div`,qa,[S(`p`,Ja,c(e.label),1),S(`p`,Ya,c(e.typeLabel)+` · `+c(e.fileCount)+` 产物 · `+c(e.moduleCount)+` 模块 `,1)]),S(`div`,Xa,[S(`p`,Za,c(e.sizeLabel),1),S(`p`,Qa,c(e.compressedLabel),1)])]),S(`div`,$a,[S(`div`,{class:`h-full rounded-full bg-(--dashboard-accent)`,style:A(e.shareStyle)},null,4)])],8,Ga)]))),128))])],2)])])}var to=B(Sa,[[`render`,eo]]);function no(e){return e===`high`?`高`:e===`medium`?`中`:`低`}function ro(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 io(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 ao(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 oo(e){return[`# dashboard 模块优化计划`,``,`计划项:${e.items.length}`,`估算影响:${z(e.totalImpactBytes)}`,`低成本项:${e.quickWinCount}`,``,`| 优先级 | 事项 | 影响 | 成本 | 建议 |`,`| ---: | --- | ---: | --- | --- |`,...e.items.map(e=>`| ${e.priority} | ${e.title.replaceAll(`|`,`\\|`)} | ${z(e.impactBytes)} | ${no(e.effort)} | ${e.action.replaceAll(`|`,`\\|`)} |`),``].join(`
10
- `)}function so(e){let t=e.duplicateModules.filter(e=>e.estimatedSavingBytes>0).slice(0,8).map(ro),n=e.incrementAttribution.filter(e=>e.deltaBytes>0).slice(0,6).map(io),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(ao),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:oo(o)}}function co(e){return{title:e.source,meta:`${e.packageCount} 个包 · 单份 ${z(e.bytes)} · 可节省 ${z(e.estimatedSavingBytes)} · ${e.advice}`}}function lo(e){return{title:e.sourceCategory,meta:`${e.count} 个模块`,value:z(e.bytes)}}function uo(e){return{title:e.label,meta:`${e.category} · ${e.packageLabel} · ${e.advice}`,value:`+${z(e.deltaBytes)}`}}function fo(e){return{title:e.category,meta:`${e.count} 项增长`,value:`+${z(e.deltaBytes)}`}}function po(e){return{title:e.file,meta:`${e.packageLabel} · ${pe(e.from)} · ${e.moduleCount} 模块`}}function mo(e){return e.replaceAll(`|`,`\\|`).replaceAll(`
11
- `,` `)}function ho(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 go(e){let t=o(``),n=o(`all`),r=o(`saving`),{actionStatus:i,setActionStatus:a}=Xr(),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 ho(e.duplicateModules.filter(e=>n.value!==`all`&&e.sourceType!==n.value?!1:!i||[e.id,e.source,e.sourceType,e.advice,e.packages.map(e=>e.packageLabel).join(` `),e.packages.flatMap(e=>e.files).join(` `)].some(e=>e.toLowerCase().includes(i))),r.value)}),l=C(()=>c.value.map(e=>({key:e.id,packages:e.packages,...co(e)}))),u=C(()=>e.moduleSourceSummary.map(e=>({key:`${e.sourceType}:${e.sourceCategory}`,...lo(e)}))),d=C(()=>e.incrementAttribution.slice(0,8).map(e=>({key:e.key,...uo(e)}))),f=C(()=>e.incrementSummary.slice(0,6).map(e=>({key:e.category,...fo(e)}))),p=C(()=>e.visibleLargestFiles.slice(0,6).map(e=>({key:`${e.packageId}:${e.file}`,...po(e)}))),m=C(()=>so({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(mo).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 _o=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}}),vo={class:`rounded-xl border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-3.5`},yo={class:`flex flex-wrap items-start justify-between gap-3`},bo={class:`min-w-0`},xo={class:`mt-1 text-xs text-(--dashboard-text-soft)`},So={key:0,class:`font-medium text-(--dashboard-accent)`};function Co(e,t,n,r,i,o){return w(),F(`article`,vo,[S(`div`,yo,[S(`div`,bo,[S(`p`,{class:a([`font-medium text-(--dashboard-text)`,n.breakTitle?`break-all`:void 0])},c(n.title),3),S(`p`,xo,c(n.meta),1)]),n.value?(w(),F(`p`,So,c(n.value),1)):N(``,!0)]),d(e.$slots,`default`)])}var wo=B(_o,[[`render`,Co]]),To=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}}),Eo={class:`flex flex-wrap items-center gap-2`},Do={class:`text-xs font-medium text-(--dashboard-text-soft)`},Oo={key:0,class:`text-xs font-medium text-(--dashboard-accent)`},ko=[`disabled`],Ao=[`disabled`],jo=[`value`];function Mo(e,n,r,i,a,o){return w(),F(`div`,Eo,[S(`span`,Do,` 匹配 `+c(r.filteredCount)+` / `+c(r.totalCount),1),r.actionStatus?(w(),F(`span`,Oo,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,ko),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,Ao),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,jo))),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 No=B(To,[[`render`,Mo]]),Po=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:Rt,AppEmptyState:W,AppMetricTile:G,AppPanelHeader:X,AppSummaryValueCard:wo};return Object.defineProperty(u,"__isScriptSetup",{enumerable:!1,value:!0}),u}}),Fo={class:`grid min-h-0 gap-3 overflow-hidden xl:grid-rows-[auto_minmax(0,1fr)_minmax(0,0.8fr)]`},Io={class:`flex items-center gap-2`},Lo={key:0,class:`text-xs font-medium text-(--dashboard-accent)`},Ro=[`disabled`],zo={class:`mt-3 grid grid-cols-3 gap-2`},Bo={key:0,class:`mt-3 grid max-h-54 gap-2 overflow-y-auto pr-1`},Vo={class:`flex items-start justify-between gap-3`},Ho={class:`min-w-0 text-sm font-medium text-(--dashboard-text)`},Uo={class:`mt-1 line-clamp-2 text-xs leading-5 text-(--dashboard-text-muted)`},Wo={class:`mt-2 text-xs text-(--dashboard-text-soft)`},Go={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)]`},Ko={class:`space-y-2 overflow-y-auto pr-1`},qo={class:`space-y-2 overflow-y-auto pr-1 text-sm text-(--dashboard-text-muted)`},Jo={class:`mt-4 grid h-[calc(100%-3.5rem)] min-h-0 gap-3 overflow-hidden lg:grid-cols-2`},Yo={class:`space-y-2.5 overflow-y-auto pr-1`},Xo={class:`space-y-2.5 overflow-y-auto pr-1 text-sm text-(--dashboard-text-muted)`};function Zo(e,t,n,r,i,o){return w(),F(`div`,Fo,[S(`section`,{class:a([r.surfaceStyles({padding:`md`}),`overflow-hidden`])},[p(r.AppPanelHeader,{"icon-name":`metric-quality`,title:`优化计划`},{meta:I(()=>[S(`div`,Io,[r.optimizationPlanStatus?(w(),F(`span`,Lo,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,Ro)])]),_:1}),S(`div`,zo,[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`,Bo,[(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`,Vo,[S(`p`,Ho,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`,Uo,c(e.detail),1),S(`p`,Wo,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`,Go,[S(`div`,Ko,[(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`,qo,[(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`,Jo,[S(`div`,Yo,[(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`,Xo,[(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 Qo=B(Po,[[`render`,Zo]]),$o=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}=go(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:wo,DuplicateModulesToolbar:No,ModuleInsightsSidebar:Qo};return Object.defineProperty(g,"__isScriptSetup",{enumerable:!1,value:!0}),g}}),es={class:`grid h-full min-h-0 gap-3 overflow-hidden xl:grid-cols-[minmax(0,1.24fr)_minmax(0,0.76fr)]`},ts={class:`flex flex-wrap items-start justify-between gap-3`},ns={key:0,class:`mt-4 max-h-[calc(100%-5.75rem)] space-y-2.5 overflow-y-auto pr-1`},rs={class:`mt-3 space-y-1.5 text-xs text-(--dashboard-text-muted)`},is={class:`font-medium text-(--dashboard-text)`};function as(e,t,n,r,i,o){return w(),F(`section`,es,[S(`div`,{class:a([r.surfaceStyles({padding:`md`}),`min-h-0 overflow-hidden`])},[S(`div`,ts,[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`,ns,[(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`,rs,[(w(!0),F(k,null,l(e.packages,n=>(w(),F(`li`,{key:`${e.key}:${n.packageId}`},[S(`span`,is,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 os=B($o,[[`render`,as]]);function ss(e){return Math.max(0,Math.min(100,Math.round(e)))}function cs(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 ls(e){return e?e.status===`critical`?32:18:0}function us(e){return e.moduleCount<=0||e.duplicateModuleCount<=0?0:Math.min(18,e.duplicateModuleCount/e.moduleCount*60)}function ds(e){return Math.min(10,Math.max(0,e.entryFileCount-1)*3)}function fs(e){return e<70?`risk`:e<86?`watch`:`good`}function ps(e){return e===`risk`?`高风险`:e===`watch`?`需关注`:`健康`}function ms(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 hs(e,t){let n=ss(100-ls(t)-cs(e)-us(e)-ds(e)),r=fs(n);return{id:e.id,label:e.label,score:n,status:r,statusLabel:ps(r),detail:`${e.fileCount} 个产物 · ${e.moduleCount} 个模块 · ${z(e.totalBytes)}`,primaryRisk:ms(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 gs(e){let t=new Map(e.budgetWarnings.map(e=>[e.id,e])),n=e.packageInsights.map(e=>hs(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?ss(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 _s(e){return typeof e!=`number`||Number.isNaN(e)||e===0?`—`:`${e>0?`+`:`-`}${z(Math.abs(e))}`}function vs(e){return[{label:`Chunks`,value:e.chunkCount},{label:`Assets`,value:e.assetCount},{label:`压缩后`,value:z(e.compressedBytes)},{label:`较上次`,value:_s(e.sizeDeltaBytes)}]}function ys(e){return e.replaceAll(`|`,`\\|`).replaceAll(`
13
- `,` `)}function bs(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(ys).join(` | `)).map(e=>`| ${e} |`),``].join(`
14
- `)}function xs(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 Ss(e){let t=o(``),n=o(`all`),r=o(`all`),i=o(`size`),{actionStatus:a,setActionStatus:s}=Xr(),c=C(()=>new Map(e.budgetWarnings.map(e=>[e.id,e]))),l=C(()=>gs({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:_s(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:vs(t)}})),p=C(()=>{let e=t.value.trim().toLowerCase();return xs(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))}),i.value)}),m=C(()=>bs(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 Cs=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}}),ws={class:`overflow-hidden rounded-xl border border-(--dashboard-border)`},Ts={class:`min-w-full divide-y divide-(--dashboard-border) text-left text-sm`},Es={class:`divide-y divide-(--dashboard-border) text-(--dashboard-text-muted)`},Ds={class:`px-3 py-2 font-mono text-xs text-(--dashboard-text)`},Os={class:`px-3 py-2`},ks={class:`px-3 py-2`},As={class:`px-3 py-2 font-medium text-(--dashboard-text)`},js={class:`px-3 py-2 font-medium text-(--dashboard-text)`};function Ms(e,t,n,r,i,a){return w(),F(`div`,ws,[S(`table`,Ts,[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`,Es,[(w(!0),F(k,null,l(r.fileRows,e=>(w(),F(`tr`,{key:e.file},[S(`td`,Ds,c(e.file),1),S(`td`,Os,c(e.type),1),S(`td`,ks,c(e.fromLabel),1),S(`td`,As,c(e.sizeLabel)+` / `+c(e.compressedLabel),1),S(`td`,js,c(e.deltaLabel),1)]))),128))])])])}var Ns=B(Cs,[[`render`,Ms]]),Ps=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}}),Fs={class:`flex flex-wrap items-center justify-between gap-3`},Is={class:`text-xs font-medium text-(--dashboard-text-soft)`},Ls={key:0,class:`mt-1 text-xs font-medium text-(--dashboard-accent)`},Rs={class:`flex flex-wrap items-center gap-2`},zs=[`disabled`],Bs=[`disabled`],Vs=[`value`];function Hs(e,n,r,i,a,o){return w(),F(`div`,Fs,[S(`div`,null,[S(`p`,Is,` 匹配 `+c(r.filteredCount)+` / `+c(r.totalCount)+` 个包 `,1),r.actionStatus?(w(),F(`p`,Ls,c(r.actionStatus),1)):N(``,!0)]),S(`div`,Rs,[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,zs),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,Bs),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,Vs))),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 Us=B(Ps,[[`render`,Hs]]),Ws=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}}),Gs={class:`rounded-lg border border-(--dashboard-border) bg-(--dashboard-panel) p-4 shadow-(--dashboard-shadow)`},Ks={class:`mt-3 grid gap-3 xl:grid-cols-[minmax(0,0.45fr)_minmax(0,1fr)]`},qs={class:`grid grid-cols-3 gap-2`},Js={class:`grid gap-2 md:grid-cols-2 xl:grid-cols-3`},Ys={class:`flex items-start justify-between gap-3`},Xs={class:`min-w-0`},Zs={class:`truncate text-sm font-semibold text-(--dashboard-text)`},Qs={class:`mt-1 text-xs leading-5 text-(--dashboard-text-soft)`},$s={class:`mt-3 flex items-end justify-between gap-3`},ec={class:`text-3xl font-semibold text-(--dashboard-accent)`},tc={class:`line-clamp-2 text-right text-xs leading-5 text-(--dashboard-text-muted)`};function nc(e,t,n,r,i,o){return w(),F(`section`,Gs,[p(r.AppPanelHeader,{"icon-name":`metric-health`,title:`包体健康`,description:n.health.weakestPackage?`优先关注 ${n.health.weakestPackage.label}`:`当前没有包体样本`},null,8,[`description`]),S(`div`,Ks,[S(`div`,qs,[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`,Js,[(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`,Ys,[S(`div`,Xs,[S(`p`,Zs,c(e.label),1),S(`p`,Qs,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`,$s,[S(`p`,ec,c(e.score),1),S(`p`,tc,c(e.primaryRisk),1)])]))),128))])])])}var rc=B(Ws,[[`render`,nc]]),ic=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}=Ss(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:Ns,AppPanelHeader:X,PackageExplorerToolbar:Us,PackageHealthPanel:rc};return Object.defineProperty(m,"__isScriptSetup",{enumerable:!1,value:!0}),m}}),ac={class:`grid h-full min-h-0 grid-rows-[auto_minmax(0,1fr)] gap-3 overflow-hidden`},oc={class:`grid gap-3`},sc={class:`grid min-h-0 auto-rows-max gap-3 overflow-y-auto pr-1 xl:grid-cols-2`},cc={class:`flex flex-wrap items-start justify-between gap-4`},lc={class:`min-w-0`},uc={class:`mt-2 text-sm text-(--dashboard-text-soft)`},dc={class:`text-right`},fc={class:`text-xl font-semibold text-(--dashboard-text)`},pc={class:`text-xs text-(--dashboard-text-soft)`},mc={class:`mt-1 text-xs text-(--dashboard-accent)`},hc={class:`mt-4 grid grid-cols-2 gap-2 text-sm md:grid-cols-4`},gc={class:`mt-4`};function _c(e,t,n,i,o,s){return w(),F(`section`,ac,[S(`div`,oc,[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`,sc,[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`,cc,[S(`div`,lc,[p(i.AppPanelHeader,{"icon-name":`tab-packages`,title:e.label,description:e.typeLabel},null,8,[`title`,`description`]),S(`p`,uc,c(e.summaryText),1)]),S(`div`,dc,[S(`p`,fc,c(e.totalBytesLabel),1),S(`p`,pc,c(e.compressedBytesLabel),1),S(`p`,mc,c(e.budgetText),1)])]),S(`div`,hc,[(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`,gc,[p(i.AppPackageFileTable,{files:e.topFiles},null,8,[`files`])])],2))),128))])])}var vc=B(ic,[[`render`,_c]]),yc=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}}),bc={class:`grid h-full min-h-0 grid-rows-[auto_minmax(0,1fr)] gap-2 overflow-hidden`},xc={class:`rounded-lg border border-(--dashboard-border) bg-(--dashboard-panel) p-4 shadow-(--dashboard-shadow)`},Sc={class:`flex items-center gap-2`},Cc={key:0,class:`text-xs font-medium text-(--dashboard-accent)`},wc={class:`h-3.5 w-3.5`},Tc={class:`mt-3 grid gap-3 lg:grid-cols-[minmax(0,0.82fr)_minmax(0,1fr)]`},Ec={class:`rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-3`},Dc={class:`mt-3 text-lg font-semibold text-(--dashboard-text)`},Oc={class:`mt-1 text-xs leading-5 text-(--dashboard-text-soft)`},kc={class:`grid grid-cols-2 gap-2 md:grid-cols-4`},Ac={class:`grid min-h-0 gap-2 overflow-y-auto pr-1 xl:grid-cols-3 xl:overflow-hidden xl:pr-0`},jc={class:`text-sm font-semibold text-(--dashboard-text)`},Mc={class:`mt-1 text-xs leading-5 text-(--dashboard-text-soft)`},Nc={class:`mt-3 min-h-0 overflow-y-auto pr-1`},Pc={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)`},Fc=[`onClick`],Ic={class:`mt-0.5 flex h-4 w-4 items-center justify-center rounded border border-current text-[10px] leading-none`},Lc={class:`min-w-0`},Rc={class:`block text-sm font-medium text-(--dashboard-text)`},zc={class:`mt-1 line-clamp-2 block text-xs leading-5 text-(--dashboard-text-muted)`};function Bc(e,t,n,i,o,s){return w(),F(`section`,bc,[S(`div`,xc,[p(i.AppPanelHeader,{"icon-name":`metric-bookmark`,title:`PR 风险清单`},{meta:I(()=>[S(`div`,Sc,[n.copyStatus?(w(),F(`span`,Cc,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`,wc,[p(i.DashboardIcon,{name:`metric-copy`})]),t[1]||=P(` 复制清单 `,-1)])])]),_:1}),S(`div`,Tc,[S(`div`,Ec,[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`,Dc,c(n.checklist.headline),1),S(`p`,Oc,c(n.checklist.description),1)]),S(`div`,kc,[(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`,Ac,[(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`,jc,c(e.title),1),S(`p`,Mc,c(e.description),1)]),S(`div`,Nc,[e.items.length===0?(w(),F(`div`,Pc,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`,Ic,c(e.checked?`✓`:``),1),S(`span`,Lc,[S(`span`,Rc,c(e.title),1),S(`span`,zc,c(e.detail),1)])],10,Fc))),128))])]))),128))])])}var Vc=B(yc,[[`render`,Bc]]),Hc={noSemanticValidation:!0,noSuggestionDiagnostics:!0,noSyntaxValidation:!0},Uc={diagnostics:!1};function Wc(e){e.typescript.javascriptDefaults.setDiagnosticsOptions(Hc),e.typescript.javascriptDefaults.setModeConfiguration(Uc),e.typescript.typescriptDefaults.setDiagnosticsOptions(Hc),e.typescript.typescriptDefaults.setModeConfiguration(Uc),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 Gc(e){return e===`dark`?`weapp-dashboard-dark`:`weapp-dashboard-light`}var Kc={css:ne,html:ie,javascript:oe,json:re,less:ne,scss:ne,typescript:oe},qc=globalThis;qc.MonacoEnvironment={getWorker:(e,t)=>new(Kc[t]??te)};function Jc(e){return`${e.packageId}:${e.file}`}function Yc(e,t){return t.endsWith(`.wxml`)||t.endsWith(`.vue`)?`html`:t.endsWith(`.wxss`)?`css`:e===`plaintext`&&t.endsWith(`.json`)?`json`:e}function Xc(e){let t=e.indexOf(`?`);return t===-1?e:e.slice(0,t)}async function Zc(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:Yc(i.language,i.path)}}function Qc(e){let t=new Set;if(!e)return[];e.source&&t.add(Xc(e.source));for(let n of e.modules??[])(n.sourceType===`src`||n.sourceType===`workspace`||n.sourceType===`plugin`)&&t.add(Xc(n.source));return[...t].sort((e,t)=>e.localeCompare(t))}function $c(e){return e?e.replace(/\r\n?/g,`
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./monaco.css","./index.css"])))=>i.map(i=>d[i]);
2
+ import{A as e,B as t,C as n,D as r,E as i,G as a,H as o,L as s,N as c,O as l,P as u,S as d,U as f,V as p,W as m,X as h,Y 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,m as E,o as D,p as O,q as k,s as ee,t as A,u as j,v as M,x as N,y as P,z as F}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{E as I,T as L,a as se,b as ce,d as le,f as R,h as z,m as ue,n as de,t as fe,u as pe,w as me,x as B,y as he}from"./index.js";import{a as ge,c as V,n as _e,o as ve,r as ye,s as H,t as U}from"./AppEmptyState.js";import{t as W}from"./AppMetricTile.js";import{a as be,c as xe,d as Se,i as Ce,l as we,n as Te,o as Ee,r as De,s as Oe,t as ke,u as Ae}from"./echarts.js";var je={action:`动作`,budget:`预算`,package:`包`,file:`文件`,increment:`增量`,module:`模块`},Me={action:`warning`,budget:`warning`,package:`neutral`,file:`neutral`,module:`neutral`,increment:`info`},Ne=[{value:`all`,label:`全部`},{value:`action`,label:`动作`},{value:`budget`,label:`预算`},{value:`package`,label:`包`},{value:`file`,label:`文件`},{value:`module`,label:`模块`},{value:`increment`,label:`增量`}];function Pe(e,t){let n=f(),r=f(``),i=f(0),a=f(`all`),o=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)).slice(0,40)}),s=C(()=>o.value[i.value]??null),c=C(()=>{let t=a.value===`all`?`全部类型`:je[a.value];return`匹配 ${o.value.length} / ${e.items.length} 项 · ${t}`});F(()=>e.open,async e=>{if(!e){r.value=``,a.value=`all`,i.value=0;return}await l(),n.value?.focus()}),F(o,()=>{i.value=0});function u(e){return je[e]}function d(e){return ve({tone:Me[e]})}function p(e){t(`select`,e),t(`close`)}function m(e){if(e.key===`Escape`){e.preventDefault(),t(`close`);return}if(e.key===`ArrowDown`){e.preventDefault(),i.value=Math.min(i.value+1,Math.max(o.value.length-1,0));return}if(e.key===`ArrowUp`){e.preventDefault(),i.value=Math.max(i.value-1,0);return}if(e.key===`Enter`){e.preventDefault();let t=o.value[i.value];t&&p(t)}}return{activeIndex:i,filteredItems:o,getKindLabel:u,getKindTone:d,handleKeydown:m,kindFilter:a,kindOptions:Ne,query:r,resultSummary:c,searchInputRef:n,selectedItem:s,selectItem:p}}var Fe=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}=Pe(r,i),_={props:r,emit:i,activeIndex:a,filteredItems:o,getKindLabel:s,getKindTone:c,handleKeydown:l,kindFilter:u,kindOptions:d,query:f,resultSummary:p,searchInputRef:m,selectedItem:h,selectItem:g,AppEmptyState:U,AppSelect:B,DashboardIcon:L};return Object.defineProperty(_,"__isScriptSetup",{enumerable:!1,value:!0}),_}}),Ie={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`},Le={class:`grid gap-3 border-b border-(--dashboard-border) px-4 py-3`},Re={class:`flex items-center gap-3`},ze={class:`h-5 w-5 shrink-0 text-(--dashboard-accent)`},Be={class:`flex flex-wrap items-center justify-between gap-2`},Ve={class:`text-xs text-(--dashboard-text-soft)`},He={class:`grid min-h-0 gap-2 overflow-hidden p-2 lg:grid-cols-[minmax(0,1fr)_minmax(16rem,0.52fr)]`},Ue={key:1,class:`grid max-h-full min-h-0 gap-1 overflow-y-auto pr-1`},We=[`onMouseenter`,`onClick`],Ge={class:`flex items-start justify-between gap-3`},Ke={class:`min-w-0`},qe={class:`flex min-w-0 items-center gap-2`},Je={class:`truncate font-medium text-(--dashboard-text)`},Ye={class:`mt-1 truncate text-xs text-(--dashboard-text-soft)`},Xe={key:0,class:`max-w-36 shrink-0 truncate text-sm font-medium text-(--dashboard-accent)`},Ze={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`},Qe={class:`flex items-start justify-between gap-3`},$e={key:1,class:`grid min-h-0 content-start gap-3 overflow-y-auto`},et={class:`font-medium`},tt={class:`mt-1 text-sm leading-6 text-(--dashboard-text-muted)`},nt={class:`grid gap-2 text-sm`},rt={class:`flex items-center justify-between gap-3 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel) px-3 py-2`},it={key:0,class:`flex items-center justify-between gap-3 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel) px-3 py-2`},at={class:`text-(--dashboard-accent)`};function ot(e,n,r,i,a,o){return w(),_(E,{to:`body`},[N(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:t(()=>[r.open?(w(),P(`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`,Ie,[S(`div`,Le,[S(`div`,Re,[S(`span`,ze,[N(i.DashboardIcon,{name:`metric-search`})]),p(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),[[j,i.query]])]),S(`div`,Be,[S(`p`,Ve,h(i.resultSummary),1),N(i.AppSelect,{modelValue:i.kindFilter,"onUpdate:modelValue":n[2]||=e=>i.kindFilter=e,class:`w-40`,label:`筛选搜索结果类型`,options:i.kindOptions,size:`sm`},null,8,[`modelValue`,`options`])])]),S(`div`,He,[i.filteredItems.length===0?(w(),_(i.AppEmptyState,{key:0,compact:``},{default:t(()=>[...n[5]||=[y(` 没有匹配结果。 `,-1)]]),_:1})):(w(),P(`ul`,Ue,[(w(!0),P(O,null,c(i.filteredItems,(e,t)=>(w(),P(`li`,{key:e.key,class:`list-none`},[S(`button`,{type:`button`,class:k([`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`,Ge,[S(`div`,Ke,[S(`div`,qe,[S(`span`,{class:k(i.getKindTone(e.kind))},h(i.getKindLabel(e.kind)),3),S(`p`,Je,h(e.title),1)]),S(`p`,Ye,h(e.meta),1)]),e.value?(w(),P(`span`,Xe,h(e.value),1)):M(``,!0)])],42,We)]))),128))])),S(`aside`,Ze,[S(`div`,Qe,[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(),P(`span`,{key:0,class:k(i.getKindTone(i.selectedItem.kind))},h(i.getKindLabel(i.selectedItem.kind)),3)):M(``,!0)]),i.selectedItem?(w(),P(`div`,$e,[S(`div`,null,[S(`h4`,et,h(i.selectedItem.title),1),S(`p`,tt,h(i.selectedItem.meta),1)]),S(`div`,nt,[S(`div`,rt,[n[8]||=S(`span`,{class:`text-xs uppercase tracking-[0.16em] text-(--dashboard-text-soft)`},`Tab`,-1),S(`strong`,null,h(i.selectedItem.tab),1)]),i.selectedItem.value?(w(),P(`div`,it,[n[9]||=S(`span`,{class:`text-xs uppercase tracking-[0.16em] text-(--dashboard-text-soft)`},`Value`,-1),S(`strong`,at,h(i.selectedItem.value),1)])):M(``,!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:t(()=>[...n[7]||=[y(` 选择左侧结果后查看目标和跳转位置。 `,-1)]]),_:1}))])])])])):M(``,!0)]),_:1})])}var st=I(Fe,[[`render`,ot]]),ct=n({__name:`AnalyzeEmptyPayloadPanel`,setup(e,{expose:t}){t();let n={get RouterLink(){return A},AppSurfaceCard:_e};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}}),lt={class:`grid gap-3 xl:grid-cols-[minmax(0,1fr)_minmax(18rem,0.92fr)]`},ut={class:`rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-4`},dt={class:`mt-4 grid gap-2`},ft={class:`grid gap-2`};function pt(e,n,r,i,a,o){return w(),_(i.AppSurfaceCard,{eyebrow:`Analyze`,title:`等待分析数据注入`,"icon-name":`hero-commands`,tone:`strong`,padding:`header`},{default:t(()=>[S(`div`,lt,[S(`div`,ut,[n[0]||=S(`p`,{class:`text-[11px] uppercase tracking-[0.24em] text-(--dashboard-text-soft)`},` recommended commands `,-1),S(`div`,dt,[(w(),P(O,null,c([`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`},h(e),1)),64))])]),S(`div`,ft,[N(i.RouterLink,{class:`rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-4 py-4 transition hover:border-(--dashboard-border-strong) hover:bg-(--dashboard-panel)`,to:`/`},{default:t(()=>[...n[1]||=[S(`p`,{class:`font-medium`},` 返回工作台 `,-1),S(`p`,{class:`mt-1 text-sm leading-6 text-(--dashboard-text-muted)`},` 查看当前状态和命令。 `,-1)]]),_:1}),N(i.RouterLink,{class:`rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-4 py-4 transition hover:border-(--dashboard-border-strong) hover:bg-(--dashboard-panel)`,to:`/activity`},{default:t(()=>[...n[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 mt=I(ct,[[`render`,pt]]),ht=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 f(){l(r.items.map(e=>e.id))}e(c),F(()=>r.items.map(e=>e.id).join(`\0`),c);let p={props:r,order:i,draggingId:a,itemMap:o,orderedItems:s,readOrder:c,writeOrder:l,handleDragStart:u,handleDrop:d,resetOrder:f,DashboardIcon:L};return Object.defineProperty(p,"__isScriptSetup",{enumerable:!1,value:!0}),p}}),gt=[`onDrop`],_t={class:`absolute inset-x-0 top-0 z-10 flex -translate-y-1/2 items-center justify-center gap-2 px-2`},vt=[`aria-label`,`title`,`onDragstart`],yt={class:`h-4 w-4`,"aria-hidden":`true`},bt={class:`h-4 w-4`,"aria-hidden":`true`},xt={class:`min-h-0 min-w-0 max-w-full`};function St(e,t,n,r,i,a){return w(),P(`section`,{class:k(n.gridClass)},[(w(!0),P(O,null,c(r.orderedItems,n=>(w(),P(`article`,{key:n.id,class:k([`relative grid min-h-0 min-w-0 max-w-full rounded-lg border border-dashed border-transparent pt-2 transition`,[n.className,r.draggingId===n.id?`border-(--dashboard-accent) opacity-70`:``]]),onDragover:t[1]||=x(()=>{},[`prevent`]),onDrop:e=>r.handleDrop(n)},[S(`div`,_t,[S(`button`,{class:`inline-flex h-7 w-7 shrink-0 cursor-grab items-center justify-center rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-strong) text-(--dashboard-text-soft) shadow-(--dashboard-shadow) transition hover:border-(--dashboard-border-strong) hover:text-(--dashboard-text)`,draggable:`true`,type:`button`,"aria-label":`拖动调整${n.label}模块位置`,title:`拖动调整${n.label}模块位置`,onDragend:t[0]||=e=>r.draggingId=null,onDragstart:e=>r.handleDragStart(n,e)},[S(`span`,yt,[N(r.DashboardIcon,{name:`metric-drag`})])],40,vt),r.orderedItems.length>1&&n.id===r.orderedItems[0]?.id?(w(),P(`button`,{key:0,class:`absolute right-2 inline-flex h-7 w-7 shrink-0 items-center justify-center rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-strong) text-(--dashboard-text-soft) shadow-(--dashboard-shadow) transition hover:border-(--dashboard-border-strong) hover:text-(--dashboard-text)`,type:`button`,"aria-label":`重置模块布局`,title:`重置模块布局`,onClick:r.resetOrder},[S(`span`,bt,[N(r.DashboardIcon,{name:`metric-reset`})])])):M(``,!0)]),S(`div`,xt,[u(e.$slots,n.id,{item:n})])],42,gt))),128))],2)}var Ct=I(ht,[[`render`,St]]);function wt(e){return typeof e!=`number`||Number.isNaN(e)||e===0?``:`${e>0?`+`:`-`}${R(Math.abs(e))}`}function Tt(e){let t=wt(e.sizeDeltaBytes);return{title:e.file,meta:`${e.packageLabel} · ${z(e.packageType)} · ${e.type}${t?` · ${t}`:``}`,value:`${R(e.size)} / ${R(e.compressedSize)}`}}function Et(e){return e.kind===`package`?{title:e.packageLabel,meta:`${z(e.packageType)} · ${e.fileCount} 个产物`,value:R(e.totalBytes)}:e.kind===`file`?{title:e.fileName,meta:`${e.packageLabel} · ${e.type} · ${e.childCount} 项`,value:R(e.bytes)}:e.kind===`module`?{title:e.source,meta:`${e.packageLabel} · ${e.packageCount} 个包复用`,value:R(e.bytes??e.originalBytes)}:{title:e.source,meta:`${e.packageLabel} · ${e.fileName}`,value:R(e.bytes)}}function Dt(e){return e.replaceAll(`|`,`\\|`).replaceAll(`
3
+ `,` `)}function Ot(e){return[`# dashboard 文件详情`,``,`文件数量:${e.files.length} / ${e.totalCount}`,``,`| 文件 | 包 | 类型 | 总体积 | 压缩后 | 较上次 | 模块 | 来源 |`,`| --- | --- | --- | ---: | ---: | ---: | ---: | --- |`,...e.files.map(e=>[e.file,e.packageLabel,e.type,R(e.size),R(e.compressedSize),wt(e.sizeDeltaBytes)||`-`,String(e.moduleCount),e.source??`-`].map(Dt).join(` | `)).map(e=>`| ${e} |`),``].join(`
4
+ `)}var kt=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}}),At={class:`flex items-start justify-between gap-3`},jt={class:`min-w-0`},Mt={class:`mt-1 line-clamp-2 break-words text-xs leading-5 text-(--dashboard-text-soft)`},Nt={key:0,class:`max-w-[40%] shrink-0 truncate font-medium text-(--dashboard-accent)`},Pt={key:1,class:`list-none`},Ft={class:`flex items-start justify-between gap-3`},It={class:`min-w-0`},Lt={class:`mt-1 line-clamp-2 break-words text-xs leading-5 text-(--dashboard-text-soft)`},Rt={key:0,class:`max-w-[40%] shrink-0 truncate font-medium text-(--dashboard-accent)`};function zt(e,t,n,r,i,a){return n.clickable?(w(),P(`li`,Pt,[S(`button`,{type:`button`,class:k([`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`,Ft,[S(`div`,It,[S(`p`,{class:k([`font-medium`,n.monoTitle?`line-clamp-2 break-all font-mono text-xs leading-5 text-(--dashboard-text)`:`line-clamp-2 break-words leading-5 text-(--dashboard-text)`])},h(n.title),3),S(`p`,Lt,h(n.meta),1)]),n.value?(w(),P(`span`,Rt,h(n.value),1)):M(``,!0)])],2)])):(w(),P(`li`,{key:0,class:k([`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`,At,[S(`div`,jt,[S(`p`,{class:k([`font-medium`,n.monoTitle?`line-clamp-2 break-all font-mono text-xs leading-5 text-(--dashboard-text)`:`line-clamp-2 break-words leading-5 text-(--dashboard-text)`])},h(n.title),3),S(`p`,Mt,h(n.meta),1)]),n.value?(w(),P(`span`,Nt,h(n.value),1)):M(``,!0)])],2))}var Bt=I(kt,[[`render`,zt]]),Vt=n({__name:`AnalyzeFileExplorerPanel`,props:{largestFiles:{},activeLargestFileKey:{},selectedTreemapMeta:{}},emits:[`selectFile`],setup(e,{expose:t,emit:n}){t();let r=e,i=n,a=f(``),o=f(`all`),s=f(`size`),c=f(``),l=null,u=C(()=>{let e=new Set;for(let t of r.largestFiles)e.add(t.type);return[...e].sort((e,t)=>e.localeCompare(t))}),d=C(()=>[{label:`全部类型`,value:`all`},...u.value.map(e=>({label:e,value:e}))]),p=[{label:`按体积`,value:`size`},{label:`按压缩后`,value:`compressed`},{label:`按增量`,value:`delta`},{label:`按模块数`,value:`modules`},{label:`按名称`,value:`name`}],m=C(()=>{let e=a.value.trim().toLowerCase();return r.largestFiles.filter(t=>o.value!==`all`&&t.type!==o.value?!1:!e||[t.file,t.packageId,t.packageLabel,t.packageType,t.type,t.source].some(t=>t?.toLowerCase().includes(e))).sort((e,t)=>s.value===`compressed`?t.compressedSize-e.compressedSize||e.file.localeCompare(t.file):s.value===`delta`?(t.sizeDeltaBytes??-1/0)-(e.sizeDeltaBytes??-1/0)||e.file.localeCompare(t.file):s.value===`modules`?t.moduleCount-e.moduleCount||t.size-e.size||e.file.localeCompare(t.file):s.value===`name`?e.file.localeCompare(t.file):t.size-e.size||e.file.localeCompare(t.file)).map(e=>({key:`${e.packageId}:${e.file}`,file:e,active:r.activeLargestFileKey===`${e.packageId}:${e.file}`||r.selectedTreemapMeta?.kind!==`package`&&r.selectedTreemapMeta?.packageLabel===e.packageLabel&&r.selectedTreemapMeta?.fileName===e.file,...Tt(e)}))}),h=C(()=>r.selectedTreemapMeta?Et(r.selectedTreemapMeta):null),g=C(()=>Ot({files:m.value.map(e=>e.file),totalCount:r.largestFiles.length}));function _(e){c.value=e,l&&clearTimeout(l),l=setTimeout(()=>{c.value=``,l=null},1800)}async function v(){try{await V(g.value),_(`已复制`)}catch{_(`复制失败`)}}function y(){let e=new Blob([`${JSON.stringify(m.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),_(`已导出`)}T(()=>{l&&clearTimeout(l)});let b={props:r,emit:i,fileQuery:a,fileTypeFilter:o,fileSortMode:s,actionStatus:c,get actionStatusTimer(){return l},set actionStatusTimer(e){l=e},fileTypeOptions:u,fileTypeFilterOptions:d,fileSortOptions:p,largestFileItems:m,selectedItem:h,fileReportText:g,setActionStatus:_,copyFileReport:v,exportFileJson:y,AppCompactListItem:Bt,AppEmptyState:U,AppSelect:B};return Object.defineProperty(b,"__isScriptSetup",{enumerable:!1,value:!0}),b}}),Ht={class:`grid h-full min-h-0 grid-rows-[auto_auto_minmax(0,1fr)] overflow-hidden rounded-lg border border-(--dashboard-border) bg-(--dashboard-panel) p-3 shadow-(--dashboard-shadow)`},Ut={class:`mb-2 flex items-center justify-between gap-3`},Wt={class:`mt-1 text-xs text-(--dashboard-text-soft)`},Gt={class:`mb-3 grid gap-2`},Kt={class:`flex flex-wrap items-center gap-2`},qt={key:0,class:`text-xs font-medium text-(--dashboard-accent)`},Jt=[`disabled`],Yt=[`disabled`],Xt={class:`grid grid-cols-2 gap-2`},Zt={class:`min-h-0 overflow-y-auto pr-1`},Qt={class:`grid gap-2 text-sm`};function $t(e,n,i,a,o,s){return w(),P(`section`,Ht,[S(`div`,Ut,[S(`div`,null,[n[3]||=S(`h3`,{class:`text-sm font-semibold text-(--dashboard-text)`},` Top Files `,-1),S(`p`,Wt,` 匹配 `+h(a.largestFileItems.length)+` / `+h(i.largestFiles.length)+` 个文件 `,1)]),n[4]||=S(`span`,{class:`text-[11px] uppercase tracking-[0.16em] text-(--dashboard-text-soft)`},`size`,-1)]),S(`div`,Gt,[S(`div`,Kt,[a.actionStatus?(w(),P(`span`,qt,h(a.actionStatus),1)):M(``,!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,Jt),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,Yt)]),p(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),[[j,a.fileQuery]]),S(`div`,Xt,[N(a.AppSelect,{modelValue:a.fileTypeFilter,"onUpdate:modelValue":n[1]||=e=>a.fileTypeFilter=e,label:`筛选文件类型`,options:a.fileTypeFilterOptions},null,8,[`modelValue`,`options`]),N(a.AppSelect,{modelValue:a.fileSortMode,"onUpdate:modelValue":n[2]||=e=>a.fileSortMode=e,label:`排序文件`,options:a.fileSortOptions},null,8,[`modelValue`])])]),S(`div`,Zt,[a.selectedItem?(w(),_(a.AppCompactListItem,r({key:0,class:`mb-2`},a.selectedItem),null,16)):M(``,!0),S(`ol`,Qt,[a.largestFileItems.length===0?(w(),_(a.AppEmptyState,{key:0,as:`li`,compact:``},{default:t(()=>[...n[5]||=[y(` 没有匹配当前筛选条件的文件。 `,-1)]]),_:1})):M(``,!0),(w(!0),P(O,null,c(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 en=I(Vt,[[`render`,$t]]),tn=n({__name:`AnalyzeFileModulesPanel`,props:{selectedFileModules:{}},setup(e,{expose:t}){t();let n=e,r=f(``),i=f(`all`),a=f(`saving`),o=f(``),s=null;function c(e){return e.replaceAll(`|`,`\\|`).replaceAll(`
5
+ `,` `)}let l=C(()=>{let e=new Set;for(let t of n.selectedFileModules)e.add(t.sourceType);return[...e].sort((e,t)=>e.localeCompare(t))}),u=C(()=>[{label:`全部来源`,value:`all`},...l.value.map(e=>({label:e,value:e}))]),d=[{label:`按可节省`,value:`saving`},{label:`按体积`,value:`size`},{label:`按复用包`,value:`duplicates`},{label:`按路径`,value:`source`}],p=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))).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))}),m=C(()=>p.value.map(e=>({key:e.key,title:e.source,meta:`${e.sourceType} · ${e.duplicatePackageCount>1?`${e.duplicatePackageCount} 个包复用`:`单包模块`} · 可节省 ${R(e.estimatedSavingBytes)}`,value:e.originalBytes&&e.originalBytes!==e.bytes?`${R(e.bytes)} / ${R(e.originalBytes)}`:R(e.bytes)}))),h=C(()=>[`# dashboard 文件模块明细`,``,`模块数量:${p.value.length} / ${n.selectedFileModules.length}`,``,`| 模块 | 来源 | 体积 | 原始体积 | 复用包 | 可节省 |`,`| --- | --- | ---: | ---: | ---: | ---: |`,...p.value.map(e=>[e.source,e.sourceType,R(e.bytes),e.originalBytes?R(e.originalBytes):`-`,String(e.duplicatePackageCount),R(e.estimatedSavingBytes)].map(c).join(` | `)).map(e=>`| ${e} |`),``].join(`
6
+ `));function g(e){o.value=e,s&&clearTimeout(s),s=setTimeout(()=>{o.value=``,s=null},1800)}async function _(){try{await V(h.value),g(`已复制`)}catch{g(`复制失败`)}}function v(){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-file-modules.json`,n.click(),URL.revokeObjectURL(t),g(`已导出`)}T(()=>{s&&clearTimeout(s)});let y={props:n,moduleQuery:r,moduleSourceFilter:i,moduleSortMode:a,actionStatus:o,get actionStatusTimer(){return s},set actionStatusTimer(e){s=e},escapeMarkdownCell:c,moduleSourceOptions:l,moduleSourceFilterOptions:u,moduleSortOptions:d,filteredSelectedFileModules:p,selectedFileModuleItems:m,moduleReportText:h,setActionStatus:g,copyModuleReport:_,exportModuleJson:v,AppCompactListItem:Bt,AppEmptyState:U,AppSelect:B};return Object.defineProperty(y,"__isScriptSetup",{enumerable:!1,value:!0}),y}}),nn={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)`},rn={class:`mb-2 flex items-center justify-between gap-3`},an={class:`mt-1 text-xs text-(--dashboard-text-soft)`},on={class:`mb-3 grid gap-2`},sn={class:`flex flex-wrap items-center gap-2`},cn={key:0,class:`text-xs font-medium text-(--dashboard-accent)`},ln=[`disabled`],un=[`disabled`],dn={class:`grid grid-cols-2 gap-2`},fn={class:`grid min-h-0 gap-2 overflow-y-auto pr-1 text-sm text-(--dashboard-text-muted)`};function pn(e,n,r,i,a,o){return w(),P(`section`,nn,[S(`div`,rn,[S(`div`,null,[n[3]||=S(`h3`,{class:`text-sm font-semibold text-(--dashboard-text)`},` 文件详情 `,-1),S(`p`,an,` 匹配 `+h(i.selectedFileModuleItems.length)+` / `+h(r.selectedFileModules.length)+` 个模块 `,1)]),n[4]||=S(`span`,{class:`text-[11px] uppercase tracking-[0.16em] text-(--dashboard-text-soft)`},`modules`,-1)]),S(`div`,on,[S(`div`,sn,[i.actionStatus?(w(),P(`span`,cn,h(i.actionStatus),1)):M(``,!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,ln),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,un)]),p(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),[[j,i.moduleQuery]]),S(`div`,dn,[N(i.AppSelect,{modelValue:i.moduleSourceFilter,"onUpdate:modelValue":n[1]||=e=>i.moduleSourceFilter=e,label:`筛选模块来源`,options:i.moduleSourceFilterOptions},null,8,[`modelValue`,`options`]),N(i.AppSelect,{modelValue:i.moduleSortMode,"onUpdate:modelValue":n[2]||=e=>i.moduleSortMode=e,label:`排序文件模块`,options:i.moduleSortOptions},null,8,[`modelValue`])])]),S(`ul`,fn,[i.selectedFileModuleItems.length===0?(w(),_(i.AppEmptyState,{key:0,as:`li`,compact:``},{default:t(()=>[...n[5]||=[y(` 选择一个 chunk 文件或调整筛选条件查看模块明细。 `,-1)]]),_:1})):M(``,!0),(w(!0),P(O,null,c(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 mn=I(tn,[[`render`,pn]]),G={totalBytes:20971520,mainBytes:2097152,subPackageBytes:2097152,independentBytes:2097152,warningRatio:.85,source:`default`},K=1048576,hn=[{id:`wechat-default`,label:`平台上限`,detail:`按小程序常见包体限制和 85% 预警线评估。`,config:{totalBytes:20*K,mainBytes:2*K,subPackageBytes:2*K,independentBytes:2*K,warningRatio:.85}},{id:`release-buffer`,label:`发布缓冲`,detail:`保留更早预警空间,适合发版前巡检。`,config:{totalBytes:20*K,mainBytes:2*K,subPackageBytes:2*K,independentBytes:2*K,warningRatio:.75}},{id:`near-limit`,label:`临界排查`,detail:`只标记接近上限的包,适合聚焦最紧急项。`,config:{totalBytes:20*K,mainBytes:2*K,subPackageBytes:2*K,independentBytes:2*K,warningRatio:.95}}];function gn(e,t){return Number.isFinite(e)&&e>0?Math.round(e):t}function _n(e){return Number.isFinite(e)?Math.min(.99,Math.max(.01,e)):G.warningRatio}function vn(e,t){return e===`main`?t.mainBytes:e===`subPackage`?t.subPackageBytes:e===`independent`?t.independentBytes:0}function yn(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 q(e){return{totalBytes:gn(e?.totalBytes??G.totalBytes,G.totalBytes),mainBytes:gn(e?.mainBytes??G.mainBytes,G.mainBytes),subPackageBytes:gn(e?.subPackageBytes??G.subPackageBytes,G.subPackageBytes),independentBytes:gn(e?.independentBytes??G.independentBytes,G.independentBytes),warningRatio:_n(e?.warningRatio??G.warningRatio)}}function bn(e,t){return e.totalBytes===t.totalBytes&&e.mainBytes===t.mainBytes&&e.subPackageBytes===t.subPackageBytes&&e.independentBytes===t.independentBytes&&e.warningRatio===t.warningRatio}function xn(e){let t=q(e);return hn.find(e=>bn(q(e.config),t))}function Sn(e){let t=q(e.config),n=[],r=yn({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=vn(r.type,t);if(!e)continue;let i=yn({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 Cn(e){let t=q(e);return[`analyze: {`,` budgets: {`,` totalBytes: ${t.totalBytes},`,` mainBytes: ${t.mainBytes},`,` subPackageBytes: ${t.subPackageBytes},`,` independentBytes: ${t.independentBytes},`,` warningRatio: ${t.warningRatio},`,` },`,`},`].join(`
7
+ `)}var wn=n({__name:`BudgetSandboxPanel`,props:{activeBudgetWarningId:{},budgetConfig:{},currentWarnings:{},packageInsights:{},totalBytes:{}},emits:[`selectBudgetWarning`],setup(e,{expose:t,emit:n}){t();let r=e,i=n,a=o({totalMiB:0,mainMiB:0,subPackageMiB:0,independentMiB:0,warningPercent:85}),s=o({text:``,timer:null});function c(e){return Number((e/1024/1024).toFixed(2))}function l(e){return Math.max(1,Math.round((Number.isFinite(e)?e:0)*1024*1024))}function u(){return q(r.budgetConfig??G)}function d(){let e=u();a.totalMiB=c(e.totalBytes),a.mainMiB=c(e.mainBytes),a.subPackageMiB=c(e.subPackageBytes),a.independentMiB=c(e.independentBytes),a.warningPercent=Math.round(e.warningRatio*100)}let f=C(()=>q({totalBytes:l(a.totalMiB),mainBytes:l(a.mainMiB),subPackageBytes:l(a.subPackageMiB),independentBytes:l(a.independentMiB),warningRatio:a.warningPercent/100})),p=C(()=>Sn({totalBytes:r.totalBytes,packages:r.packageInsights,config:f.value})),m=C(()=>xn(f.value)?.id??null),h=C(()=>new Set(r.currentWarnings.map(e=>e.id))),g=C(()=>new Set(p.value.map(e=>e.id))),_=C(()=>p.value.filter(e=>!h.value.has(e.id)).length),v=C(()=>r.currentWarnings.filter(e=>!g.value.has(e.id)).length),y=C(()=>Cn(f.value)),b=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:`${R(e.currentBytes)} / ${R(e.limitBytes)}`})));function x(e){s.text=e,s.timer&&clearTimeout(s.timer),s.timer=setTimeout(()=>{s.text=``,s.timer=null},1800)}function S(e){let t=hn.find(t=>t.id===e);if(!t)return;let n=q(t.config);a.totalMiB=c(n.totalBytes),a.mainMiB=c(n.mainBytes),a.subPackageMiB=c(n.subPackageBytes),a.independentMiB=c(n.independentBytes),a.warningPercent=Math.round(n.warningRatio*100),x(`已应用 ${t.label}`)}async function w(){try{await V(y.value),x(`已复制`)}catch{x(`复制失败`)}}F(()=>r.budgetConfig,d,{immediate:!0}),T(()=>{s.timer&&clearTimeout(s.timer)});let E={props:r,emit:i,draft:a,actionStatus:s,bytesToMiB:c,mibToBytes:l,getInitialConfig:u,resetDraft:d,sandboxConfig:f,projectedWarnings:p,activePresetId:m,currentWarningIds:h,projectedWarningIds:g,newWarningCount:_,resolvedWarningCount:v,snippetText:y,projectedWarningItems:b,setActionStatus:x,applyPreset:S,copyBudgetSnippet:w,get budgetSandboxPresets(){return hn},AppCompactListItem:Bt,AppEmptyState:U};return Object.defineProperty(E,"__isScriptSetup",{enumerable:!1,value:!0}),E}}),Tn={class:`grid min-h-0 min-w-0 gap-3 overflow-visible rounded-lg border border-(--dashboard-border) bg-(--dashboard-panel) p-3 shadow-(--dashboard-shadow) xl:h-full xl:grid-rows-[auto_minmax(0,1fr)] xl:overflow-hidden`},En={class:`mb-2 flex items-center justify-between gap-3`},Dn={class:`mt-1 text-xs text-(--dashboard-text-soft)`},On={key:0,class:`text-xs font-medium text-(--dashboard-accent)`},kn={class:`grid min-h-0 min-w-0 gap-3 overflow-visible xl:grid-rows-[auto_auto_auto_minmax(0,1fr)] xl:overflow-hidden`},An={class:`grid gap-2 sm:grid-cols-3`},jn=[`onClick`],Mn={class:`block truncate text-xs font-semibold`},Nn={class:`mt-1 line-clamp-2 block text-[11px] leading-4 opacity-80`},Pn={class:`grid gap-2 sm:grid-cols-2`},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-1 text-[11px] text-(--dashboard-text-soft)`},zn={class:`grid gap-2`},Bn={class:`grid gap-1 text-[11px] text-(--dashboard-text-soft)`},Vn={class:`max-h-80 min-h-0 overflow-y-auto pr-1 xl:max-h-none`},Hn={key:1,class:`grid content-start gap-2 text-sm text-(--dashboard-text-muted)`};function Un(e,n,r,i,a,o){return w(),P(`section`,Tn,[S(`div`,En,[S(`div`,null,[n[5]||=S(`h3`,{class:`text-sm font-semibold text-(--dashboard-text)`},` 预算沙盘 `,-1),S(`p`,Dn,` 预测 `+h(i.projectedWarnings.length)+` 个告警 · 新增 `+h(i.newWarningCount)+` · 解除 `+h(i.resolvedWarningCount),1)]),i.actionStatus.text?(w(),P(`span`,On,h(i.actionStatus.text),1)):M(``,!0)]),S(`div`,kn,[S(`div`,An,[(w(!0),P(O,null,c(i.budgetSandboxPresets,e=>(w(),P(`button`,{key:e.id,class:k([`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`,Mn,h(e.label),1),S(`span`,Nn,h(e.detail),1)],10,jn))),128))]),S(`div`,Pn,[S(`label`,Fn,[n[6]||=y(` 总包 MB `,-1),p(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),[[j,i.draft.totalMiB,void 0,{number:!0}]])]),S(`label`,In,[n[7]||=y(` 主包 MB `,-1),p(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),[[j,i.draft.mainMiB,void 0,{number:!0}]])]),S(`label`,Ln,[n[8]||=y(` 分包 MB `,-1),p(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),[[j,i.draft.subPackageMiB,void 0,{number:!0}]])]),S(`label`,Rn,[n[9]||=y(` 独立分包 MB `,-1),p(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),[[j,i.draft.independentMiB,void 0,{number:!0}]])])]),S(`div`,zn,[S(`label`,Bn,[y(` 预警线 `+h(i.draft.warningPercent)+`% `,1),p(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),[[j,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`,Vn,[i.projectedWarningItems.length===0?(w(),_(i.AppEmptyState,{key:0,compact:``},{default:t(()=>[...n[10]||=[y(` 当前沙盘预算下没有预计告警。 `,-1)]]),_:1})):(w(),P(`ul`,Hn,[(w(!0),P(O,null,c(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 Wn=I(wn,[[`render`,Un]]),Gn=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:Ct,AnalyzeFileExplorerPanel:en,AnalyzeFileModulesPanel:mn,BudgetSandboxPanel:Wn};return Object.defineProperty(r,"__isScriptSetup",{enumerable:!1,value:!0}),r}});function Kn(e,n,r,i,a,o){return w(),_(i.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:i.detailLayoutItems,"storage-key":`weapp-vite:dashboard:analyze-layout:files`},{"top-files":t(()=>[N(i.AnalyzeFileExplorerPanel,{"largest-files":r.largestFiles,"active-largest-file-key":r.activeLargestFileKey,"selected-treemap-meta":r.selectedTreemapMeta,onSelectFile:n[0]||=e=>i.emit(`selectFile`,e)},null,8,[`largest-files`,`active-largest-file-key`,`selected-treemap-meta`])]),"file-modules":t(()=>[N(i.AnalyzeFileModulesPanel,{"selected-file-modules":r.selectedFileModules},null,8,[`selected-file-modules`])]),budget:t(()=>[N(i.BudgetSandboxPanel,{"active-budget-warning-id":r.activeBudgetWarningId,"budget-config":r.budgetConfig,"current-warnings":r.budgetWarnings,"package-insights":r.packageInsights,"total-bytes":r.totalBytes,onSelectBudgetWarning:n[1]||=e=>i.emit(`selectBudgetWarning`,e)},null,8,[`active-budget-warning-id`,`budget-config`,`current-warnings`,`package-insights`,`total-bytes`])]),_:1})}var qn=I(Gn,[[`render`,Kn]]),J={critical:4,warning:3,info:2,success:1},Jn=[{label:`按优先级`,value:`priority`},{label:`按严重度`,value:`severity`},{label:`按标题`,value:`title`},{label:`按数值`,value:`value`}];function Yn(e){return e===`budget`?`预算`:e===`increment`?`增量`:e===`duplicate`?`重复`:`文件`}function Xn(e){return ve(e===`critical`?{tone:`error`}:e===`warning`?{tone:`warning`}:e===`success`?{tone:`success`}:{tone:`info`})}function Zn(e){return e===`critical`?`必须处理`:e===`warning`?`建议处理`:e===`success`?`可查看`:`定位`}function Qn(e,t){return[...e].sort((e,n)=>t===`severity`?J[n.tone]-J[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||J[n.tone]-J[e.tone]||e.title.localeCompare(n.title))}function $n(e){let t=f(``),n=f(`all`),r=f(`all`),i=f(`priority`),a=C(()=>{let t=new Set;for(let n of e.actions)t.add(n.tone);return[...t].sort((e,t)=>J[t]-J[e])}),o=C(()=>{let t=new Set;for(let n of e.actions)t.add(n.kind);return[...t].sort((e,t)=>Yn(e).localeCompare(Yn(t)))}),s=C(()=>[{label:`全部严重度`,value:`all`},...a.value.map(e=>({label:Zn(e),value:e}))]),c=C(()=>[{label:`全部类型`,value:`all`},...o.value.map(e=>({label:Yn(e),value:e}))]),l=C(()=>{let a=t.value.trim().toLowerCase();return Qn(e.actions.filter(e=>n.value!==`all`&&e.tone!==n.value||r.value!==`all`&&e.kind!==r.value?!1:!a||[e.key,e.kind,e.tone,e.title,e.meta,e.value,e.tab].some(e=>String(e??``).toLowerCase().includes(a))),i.value)});function u(t){return e.queuedActionKeys.includes(t.key)}return{actionKindFilter:r,actionSortOptions:Jn,actionQuery:t,actionSortMode:i,actionToneFilter:n,filteredActions:l,kindFilterOptions:c,getKindLabel:Yn,getToneClassName:Xn,getToneLabel:Zn,isQueued:u,toneFilterOptions:s}}var er=n({__name:`AppPanelHeader`,props:{iconName:{},title:{},description:{}},setup(e,{expose:t}){t();let n={iconClassName:ye(),DashboardIcon:L};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}}),tr={class:`flex items-center justify-between gap-3`},nr={class:`flex items-center gap-2`},rr={class:`h-5 w-5`},ir={class:`min-w-0 md:flex md:flex-wrap md:items-baseline md:gap-x-2`},ar={class:`text-lg font-semibold text-(--dashboard-text)`},or={key:0,class:`text-xs text-(--dashboard-text-soft) md:text-sm`};function sr(e,t,n,r,i,a){return w(),P(`div`,tr,[S(`div`,nr,[S(`span`,{class:k(r.iconClassName)},[S(`span`,rr,[N(r.DashboardIcon,{name:n.iconName},null,8,[`name`])])],2),S(`div`,ir,[S(`h2`,ar,h(n.title),1),n.description?(w(),P(`p`,or,h(n.description),1)):M(``,!0)])]),u(e.$slots,`meta`)])}var Y=I(er,[[`render`,sr]]),cr=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,actionSortOptions:c,actionToneFilter:l,filteredActions:u,getKindLabel:d,getToneClassName:f,getToneLabel:p,isQueued:m,kindFilterOptions:h,toneFilterOptions:g}=$n(r),_={props:r,emit:i,actionKindFilter:a,actionQuery:o,actionSortMode:s,actionSortOptions:c,actionToneFilter:l,filteredActions:u,getKindLabel:d,getToneClassName:f,getToneLabel:p,isQueued:m,kindFilterOptions:h,toneFilterOptions:g,get surfaceStyles(){return H},AppEmptyState:U,AppPanelHeader:Y,AppSelect:B,DashboardIcon:L};return Object.defineProperty(_,"__isScriptSetup",{enumerable:!1,value:!0}),_}}),lr={class:`h-3.5 w-3.5`},ur={class:`mt-3 grid gap-2`},dr={class:`flex flex-wrap items-center justify-between gap-2`},fr={class:`text-xs text-(--dashboard-text-soft)`},pr={class:`grid gap-2 md:grid-cols-3`},mr={class:`mt-3 max-h-[36rem] min-h-0 overflow-y-auto xl:max-h-none xl:overflow-hidden`},hr={key:1,class:`grid h-full min-h-0 content-start gap-2 overflow-y-auto pr-1`},gr={class:`grid min-w-0 grid-cols-[minmax(0,1fr)_auto] items-start gap-3`},_r=[`onClick`],vr={class:`flex min-w-0 flex-wrap items-center gap-2`},yr={class:`shrink-0 whitespace-nowrap rounded-full bg-(--dashboard-accent-soft) px-2 py-0.5 text-[11px] text-(--dashboard-text-muted)`},br={class:`mt-2 line-clamp-2 break-words text-sm font-medium leading-5 text-(--dashboard-text)`},xr={class:`mt-1 line-clamp-2 break-words text-xs leading-5 text-(--dashboard-text-soft)`},Sr={key:0,class:`max-w-28 shrink-0 truncate text-sm font-medium text-(--dashboard-accent)`},Cr={class:`mt-2 flex items-center justify-end border-t border-(--dashboard-border) pt-2`},wr=[`disabled`,`onClick`];function Tr(e,n,r,i,a,o){return w(),P(`section`,{class:k([i.surfaceStyles({padding:`md`}),`grid min-h-0 min-w-0 gap-3 overflow-visible xl:h-full xl:grid-rows-[auto_auto_minmax(0,1fr)] xl:overflow-hidden`])},[N(i.AppPanelHeader,{"icon-name":`metric-health`,title:`问题中心`},{meta:t(()=>[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`,lr,[N(i.DashboardIcon,{name:`metric-copy`})]),n[5]||=y(` 复制 PR `,-1)])]),_:1}),S(`div`,ur,[S(`div`,dr,[S(`p`,fr,` 匹配 `+h(i.filteredActions.length)+` / `+h(r.actions.length)+` 个处理项 `,1),p(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),[[j,i.actionQuery]])]),S(`div`,pr,[N(i.AppSelect,{modelValue:i.actionToneFilter,"onUpdate:modelValue":n[2]||=e=>i.actionToneFilter=e,label:`按严重度筛选`,options:i.toneFilterOptions},null,8,[`modelValue`,`options`]),N(i.AppSelect,{modelValue:i.actionKindFilter,"onUpdate:modelValue":n[3]||=e=>i.actionKindFilter=e,label:`按问题类型筛选`,options:i.kindFilterOptions},null,8,[`modelValue`,`options`]),N(i.AppSelect,{modelValue:i.actionSortMode,"onUpdate:modelValue":n[4]||=e=>i.actionSortMode=e,label:`排序处理项`,options:i.actionSortOptions},null,8,[`modelValue`,`options`])])]),S(`div`,mr,[i.filteredActions.length===0?(w(),_(i.AppEmptyState,{key:0,compact:``},{default:t(()=>[...n[6]||=[y(` 暂无匹配当前筛选条件的事项。 `,-1)]]),_:1})):(w(),P(`ol`,hr,[(w(!0),P(O,null,c(i.filteredActions,e=>(w(),P(`li`,{key:e.key,class:`list-none`},[S(`article`,{class:k([`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`,gr,[S(`button`,{type:`button`,class:`min-w-0 text-left`,onClick:t=>i.emit(`select`,e)},[S(`div`,vr,[S(`span`,{class:k(i.getToneClassName(e.tone))},h(i.getToneLabel(e.tone)),3),S(`span`,yr,h(i.getKindLabel(e.kind)),1)]),S(`p`,br,h(e.title),1),S(`p`,xr,h(e.meta),1)],8,_r),e.value?(w(),P(`span`,Sr,h(e.value),1)):M(``,!0)]),S(`div`,Cr,[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)},h(i.isQueued(e)?`已在清单`:`加入清单`),9,wr)])],2)]))),128))]))])],2)}var Er=I(cr,[[`render`,Tr]]),Dr=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=f(`open`),o=C(()=>r.items.filter(e=>!e.completedAt).length),s=C(()=>r.items.length-o.value),c=C(()=>r.items.filter(e=>a.value===`open`?!e.completedAt:a.value!==`done`||!!e.completedAt));function l(e){return ve(e===`critical`?{tone:`error`}:e===`warning`?{tone:`warning`}:e===`success`?{tone:`success`}:{tone:`info`})}let u={props:r,emit:i,queueFilter:a,openCount:o,doneCount:s,visibleItems:c,getToneClassName:l,get surfaceStyles(){return H},AppEmptyState:U,AppPanelHeader:Y,DashboardIcon:L};return Object.defineProperty(u,"__isScriptSetup",{enumerable:!1,value:!0}),u}}),Or=[`disabled`],kr={class:`h-3.5 w-3.5`},Ar={class:`mt-3 grid gap-2`},jr={class:`grid grid-cols-3 gap-2 text-center`},Mr={class:`mt-3 max-h-[32rem] min-h-0 overflow-y-auto xl:max-h-none xl:overflow-hidden`},Nr={key:1,class:`grid h-full min-h-0 content-start gap-2 overflow-y-auto pr-1`},Pr={class:`flex items-start justify-between gap-2`},Fr=[`onClick`],Ir={class:`mt-2 truncate text-sm font-medium text-(--dashboard-text)`},Lr={class:`mt-1 line-clamp-2 text-xs leading-5 text-(--dashboard-text-soft)`},Rr={key:0,class:`shrink-0 text-xs font-medium text-(--dashboard-accent)`},zr={class:`flex items-center justify-between gap-2 border-t border-(--dashboard-border) pt-2`},Br=[`onClick`],Vr=[`onClick`];function Hr(e,n,r,i,a,o){return w(),P(`section`,{class:k([i.surfaceStyles({padding:`md`}),`grid min-h-0 min-w-0 gap-3 overflow-visible xl:h-full xl:grid-rows-[auto_auto_minmax(0,1fr)] xl:overflow-hidden`])},[N(i.AppPanelHeader,{"icon-name":`metric-bookmark`,title:`处理清单`},{meta:t(()=>[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:r.items.length===0,onClick:n[0]||=e=>i.emit(`copy`)},[S(`span`,kr,[N(i.DashboardIcon,{name:`metric-copy`})]),n[5]||=y(` 复制 `,-1)],8,Or)]),_:1}),S(`div`,Ar,[S(`div`,jr,[S(`button`,{type:`button`,class:k([`rounded-md border px-2 py-2 text-xs transition`,i.queueFilter===`open`?`border-(--dashboard-accent) bg-(--dashboard-accent-soft) text-(--dashboard-text)`:`border-(--dashboard-border) bg-(--dashboard-panel-muted) text-(--dashboard-text-soft) hover:border-(--dashboard-border-strong)`]),onClick:n[1]||=e=>i.queueFilter=`open`},` 待处理 `+h(i.openCount),3),S(`button`,{type:`button`,class:k([`rounded-md border px-2 py-2 text-xs transition`,i.queueFilter===`done`?`border-(--dashboard-accent) bg-(--dashboard-accent-soft) text-(--dashboard-text)`:`border-(--dashboard-border) bg-(--dashboard-panel-muted) text-(--dashboard-text-soft) hover:border-(--dashboard-border-strong)`]),onClick:n[2]||=e=>i.queueFilter=`done`},` 已完成 `+h(i.doneCount),3),S(`button`,{type:`button`,class:k([`rounded-md border px-2 py-2 text-xs transition`,i.queueFilter===`all`?`border-(--dashboard-accent) bg-(--dashboard-accent-soft) text-(--dashboard-text)`:`border-(--dashboard-border) bg-(--dashboard-panel-muted) text-(--dashboard-text-soft) hover:border-(--dashboard-border-strong)`]),onClick:n[3]||=e=>i.queueFilter=`all`},` 全部 `+h(r.items.length),3)]),i.doneCount>0?(w(),P(`button`,{key:0,type:`button`,class:`h-8 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 text-xs text-(--dashboard-text-soft) transition hover:border-(--dashboard-border-strong) hover:text-(--dashboard-text)`,onClick:n[4]||=e=>i.emit(`clearCompleted`)},` 清空已完成 `)):M(``,!0)]),S(`div`,Mr,[i.visibleItems.length===0?(w(),_(i.AppEmptyState,{key:0,compact:``},{default:t(()=>[...n[6]||=[y(` 当前没有处理事项。 `,-1)]]),_:1})):(w(),P(`ol`,Nr,[(w(!0),P(O,null,c(i.visibleItems,e=>(w(),P(`li`,{key:e.id,class:k([`grid gap-2 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-2.5 transition`,r.activeId===e.id?`border-(--dashboard-accent) bg-(--dashboard-accent-soft)`:void 0])},[S(`div`,Pr,[S(`button`,{type:`button`,class:`min-w-0 text-left`,onClick:t=>i.emit(`select`,e)},[S(`span`,{class:k(i.getToneClassName(e.tone))},h(e.completedAt?`完成`:`待处理`),3),S(`p`,Ir,h(e.title),1),S(`p`,Lr,h(e.meta),1)],8,Fr),e.value?(w(),P(`span`,Rr,h(e.value),1)):M(``,!0)]),S(`div`,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-(--dashboard-border-strong) hover:text-(--dashboard-text)`,onClick:t=>i.emit(`toggle`,e.id)},h(e.completedAt?`重新打开`:`标记完成`),9,Br),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=>i.emit(`remove`,e.id)},` 移除 `,8,Vr)])],2))),128))]))])],2)}var Ur=I(Dr,[[`render`,Hr]]);function Wr(e){return e===0?`0 B`:`${e>0?`+`:`-`}${R(Math.abs(e))}`}function Gr(e,t){return e===0&&t===0?`stable`:t>0?`growing`:t<0?`shrinking`:`stable`}function Kr(e){return e===`growing`?`增长`:e===`shrinking`?`下降`:e===`stable`?`稳定`:`样本不足`}function qr(e){return e===`growing`?`历史快照显示体积正在上升`:e===`shrinking`?`历史快照显示体积正在下降`:e===`stable`?`历史快照整体保持稳定`:`需要更多历史快照判断趋势`}function Jr(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:Kr(`insufficient`),headline:qr(`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=Gr(a,o);return{status:c,label:Kr(c),headline:qr(c),description:`${t.length} 个历史样本 · ${n.label} 至 ${r.label}`,totalDeltaBytes:a,averageDeltaBytes:o,projectedNextBytes:s,metrics:[{label:`样本数`,value:t.length},{label:`累计变化`,value:Wr(a)},{label:`平均变化`,value:Wr(o)},{label:`预测下次`,value:R(s)}]}}function Yr(e=1800){let t=f(``),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 Xr(e){return e===0?`无变化`:`${e>0?`+`:`-`}${R(Math.abs(e))}`}function Zr(e){return new Date(e.capturedAt).toLocaleString(`zh-CN`,{month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`,hour12:!1})}function Qr(e){return[e.id,e.label,e.capturedAt,e.packageCount,e.moduleCount,e.duplicateCount,e.totalBytes,e.compressedBytes].join(` `).toLowerCase()}function $r(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 ei(e){let t=f(``),n=f(`capturedAt`),{actionStatus:r,setActionStatus:i}=Yr(),a=C(()=>e.snapshots.find(t=>t.id===e.baselineSnapshotId)??null),o=C(()=>e.snapshots[0]??null),s=C(()=>e.snapshots[1]??null),c=C(()=>Jr(e.snapshots)),l=C(()=>!o.value||!a.value?``:Xr(o.value.totalBytes-a.value.totalBytes)),u=C(()=>!o.value||!s.value?``:Xr(o.value.totalBytes-s.value.totalBytes)),d=C(()=>e.comparisonMode===`baseline`?l.value||`未设置`:u.value||`上次快照`),p=C(()=>{let e=a.value;return e?[{label:`基线体积`,value:R(e.totalBytes)},{label:`压缩后`,value:R(e.compressedBytes)},{label:`模块数`,value:String(e.moduleCount)},{label:`复用模块`,value:String(e.duplicateCount)}]:[]}),m=C(()=>{let r=t.value.trim().toLowerCase();return $r(e.snapshots.filter(e=>!r||Qr(e).includes(r)),n.value)}),h=C(()=>{let e=o.value,t=a.value,n=s.value;return[`# dashboard 历史基线`,``,e?`当前快照:${Zr(e)} · ${R(e.totalBytes)} · 压缩后 ${R(e.compressedBytes)}`:`当前快照:暂无`,t?`基线快照:${Zr(t)} · ${R(t.totalBytes)} · 压缩后 ${R(t.compressedBytes)}`:`基线快照:未设置`,n?`上次快照:${Zr(n)} · ${R(n.totalBytes)} · 压缩后 ${R(n.compressedBytes)}`:`上次快照:暂无`,`当前对比:${d.value}`,``,`| 时间 | 总体积 | 压缩后 | 包 | 模块 | 复用模块 |`,`| --- | ---: | ---: | ---: | ---: | ---: |`,...m.value.map(e=>`| ${Zr(e)} | ${R(e.totalBytes)} | ${R(e.compressedBytes)} | ${e.packageCount} | ${e.moduleCount} | ${e.duplicateCount} |`),``].join(`
8
+ `)});async function g(){try{await V(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:d,baselineSnapshot:a,baselineSummaryItems:p,copyBaselineReport:g,exportFilteredSnapshots:_,filteredSnapshots:m,formatSnapshotDate:Zr,historyTrend:c,snapshotQuery:t,snapshotSortMode:n}}var ti=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`),sortOptions:[{label:`按时间`,value:`capturedAt`},{label:`按体积`,value:`total`},{label:`按压缩后`,value:`compressed`},{label:`按模块数`,value:`modules`},{label:`按复用模块`,value:`duplicates`}],AppSelect:B};return Object.defineProperty(r,"__isScriptSetup",{enumerable:!1,value:!0}),r}}),ni={class:`flex flex-wrap items-center justify-between gap-2`},ri={class:`text-xs text-(--dashboard-text-soft)`},ii={class:`flex flex-wrap items-center gap-2`},ai={key:0,class:`text-xs font-medium text-(--dashboard-accent)`},oi=[`disabled`],si=[`disabled`];function ci(e,t,n,r,i,a){return w(),P(`div`,ni,[S(`p`,ri,` 匹配 `+h(n.filteredCount)+` / `+h(n.totalCount)+` 个快照 `,1),S(`div`,ii,[n.actionStatus?(w(),P(`span`,ai,h(n.actionStatus),1)):M(``,!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:n.disabled,onClick:t[0]||=e=>r.emit(`copy`)},` 复制基线 `,8,oi),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:n.disabled,onClick:t[1]||=e=>r.emit(`exportJson`)},` 导出 JSON `,8,si),N(r.AppSelect,{modelValue:r.sortMode,"onUpdate:modelValue":t[2]||=e=>r.sortMode=e,class:`w-30`,label:`排序历史基线`,options:r.sortOptions},null,8,[`modelValue`])])])}var li=I(ti,[[`render`,ci]]),ui=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:W};return Object.defineProperty(r,"__isScriptSetup",{enumerable:!1,value:!0}),r}}),di={class:`rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-3`},fi={class:`flex items-start justify-between gap-3`},pi={class:`min-w-0`},mi={class:`mt-2 text-sm font-semibold text-(--dashboard-text)`},hi={class:`mt-1 text-xs leading-5 text-(--dashboard-text-soft)`},gi={class:`mt-3 grid grid-cols-2 gap-2`};function _i(e,t,n,i,a,o){return w(),P(`section`,di,[S(`div`,fi,[S(`div`,pi,[S(`span`,{class:k([`inline-flex rounded-full border px-2 py-0.5 text-[11px] font-medium`,i.getStatusClassName(n.trend.status)])},h(n.trend.label),3),S(`p`,mi,h(n.trend.headline),1),S(`p`,hi,h(n.trend.description),1)])]),S(`div`,gi,[(w(!0),P(O,null,c(n.trend.metrics,e=>(w(),_(i.AppMetricTile,r({key:e.label},{ref_for:!0},e),null,16))),128))])])}var vi=I(ui,[[`render`,_i]]),yi=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}=ei(r),h={props:r,emit:i,actionStatus:a,activeComparisonLabel:o,baselineSummaryItems:s,copyBaselineReport:c,exportFilteredSnapshots:l,filteredSnapshots:u,formatSnapshotDate:d,historyTrend:f,snapshotQuery:p,snapshotSortMode:m,get formatBytes(){return R},get pillButtonStyles(){return ge},get surfaceStyles(){return H},AppEmptyState:U,AppPanelHeader:Y,HistoryBaselineToolbar:li,HistoryTrendPanel:vi};return Object.defineProperty(h,"__isScriptSetup",{enumerable:!1,value:!0}),h}}),bi={class:`flex gap-1.5`},xi=[`disabled`],Si={class:`mt-3 grid min-h-0 min-w-0 gap-2 overflow-visible xl:grid-rows-[auto_auto_auto_minmax(0,1fr)] xl:overflow-hidden`},Ci={class:`rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 py-2`},wi={class:`flex items-center justify-between gap-3`},Ti={class:`text-sm font-medium text-(--dashboard-accent)`},Ei={key:0,class:`mt-3 grid grid-cols-2 gap-2`},Di={class:`text-[11px] text-(--dashboard-text-soft)`},Oi={class:`mt-1 text-sm font-semibold text-(--dashboard-text)`},ki={class:`grid gap-2`},Ai={key:1,class:`grid max-h-80 min-h-0 gap-1.5 overflow-y-auto pr-1 xl:max-h-none`},ji=[`onClick`],Mi={class:`flex items-start justify-between gap-3`},Ni={class:`min-w-0`},Pi={class:`truncate text-sm font-medium text-(--dashboard-text)`},Fi={class:`mt-0.5 truncate text-xs text-(--dashboard-text-soft)`},Ii={class:`text-right`},Li={class:`whitespace-nowrap text-sm font-medium text-(--dashboard-accent)`},Ri={class:`mt-0.5 whitespace-nowrap text-xs text-(--dashboard-text-soft)`};function zi(e,n,r,i,a,o){return w(),P(`section`,{class:k([i.surfaceStyles({padding:`md`}),`grid min-h-0 min-w-0 gap-3 overflow-visible xl:h-full xl:grid-rows-[auto_minmax(0,1fr)] xl:overflow-hidden`])},[N(i.AppPanelHeader,{"icon-name":`metric-history`,title:`历史基线`},{meta:t(()=>[S(`div`,bi,[S(`button`,{type:`button`,class:k(i.pillButtonStyles({kind:`badge`,active:r.comparisonMode===`previous`})),onClick:n[0]||=e=>i.emit(`setComparisonMode`,`previous`)},` 上次 `,2),S(`button`,{type:`button`,class:k(i.pillButtonStyles({kind:`badge`,active:r.comparisonMode===`baseline`})),disabled:!r.baselineSnapshotId,onClick:n[1]||=e=>i.emit(`setComparisonMode`,`baseline`)},` Baseline `,10,xi)])]),_:1}),S(`div`,Si,[S(`div`,Ci,[S(`div`,wi,[n[4]||=S(`p`,{class:`text-xs text-(--dashboard-text-soft)`},` 当前对比 `,-1),S(`p`,Ti,h(i.activeComparisonLabel),1)]),i.baselineSummaryItems.length?(w(),P(`div`,Ei,[(w(!0),P(O,null,c(i.baselineSummaryItems,e=>(w(),P(`div`,{key:e.label,class:`rounded-md border border-(--dashboard-border) bg-(--dashboard-panel) px-2.5 py-2`},[S(`p`,Di,h(e.label),1),S(`p`,Oi,h(e.value),1)]))),128))])):M(``,!0)]),N(i.HistoryTrendPanel,{trend:i.historyTrend},null,8,[`trend`]),S(`div`,ki,[N(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`]),p(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),[[j,i.snapshotQuery]])]),i.filteredSnapshots.length===0?(w(),_(i.AppEmptyState,{key:0,compact:``},{default:t(()=>[...n[5]||=[y(` 暂无历史快照。 `,-1)]]),_:1})):(w(),P(`ol`,Ai,[(w(!0),P(O,null,c(i.filteredSnapshots,e=>(w(),P(`li`,{key:e.id,class:`list-none`},[S(`button`,{type:`button`,class:k([`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`,Mi,[S(`div`,Ni,[S(`p`,Pi,h(i.formatSnapshotDate(e)),1),S(`p`,Fi,h(e.packageCount)+` 包 · `+h(e.moduleCount)+` 模块 · 复用 `+h(e.duplicateCount),1)]),S(`div`,Ii,[S(`p`,Li,h(i.formatBytes(e.totalBytes)),1),S(`p`,Ri,h(e.id===r.baselineSnapshotId?`baseline`:i.formatBytes(e.compressedBytes)),1)])])],10,ji)]))),128))]))])],2)}var Bi=I(yi,[[`render`,zi]]),Vi=n({__name:`AnalyzeDiagnosticsSection`,props:{actionItems:{},activeWorkQueueItemId:{},baselineSnapshotId:{},comparisonMode:{},historySnapshots:{},queuedActionKeys:{},selectedActionKey:{},workQueueItems:{}},emits:[`addActionToQueue`,`clearCompletedWorkQueue`,`copyPr`,`copyWorkQueue`,`removeWorkQueueItem`,`selectAction`,`selectWorkQueueItem`,`setBaseline`,`setComparisonMode`,`toggleWorkQueueItem`],setup(t,{expose:n,emit:r}){n();let i=r,a=f(null),o=f(66),s=f(76),c=f(`work-queue`),l=C(()=>({"--diagnostics-primary":`${o.value}%`})),u=null,d=null;function p(e){o.value=Math.min(s.value,Math.max(52,Math.round(e)))}function m(e){if(e.button!==0||!a.value)return;e.preventDefault();let t=a.value,n=e=>{let n=t.getBoundingClientRect();p((e-n.left)/n.width*100)},r=e=>n(e.clientX),i=()=>u?.();u?.(),u=()=>{window.removeEventListener(`pointermove`,r),window.removeEventListener(`pointerup`,i),window.removeEventListener(`pointercancel`,i),u=null},window.addEventListener(`pointermove`,r),window.addEventListener(`pointerup`,i),window.addEventListener(`pointercancel`,i),n(e.clientX)}function h(e){e.key===`ArrowLeft`?(e.preventDefault(),p(o.value-4)):e.key===`ArrowRight`?(e.preventDefault(),p(o.value+4)):e.key===`Home`?(e.preventDefault(),p(52)):e.key===`End`&&(e.preventDefault(),p(s.value))}function g(){let e=a.value?.clientWidth??0;e!==0&&(s.value=Math.min(76,Math.max(52,Math.floor((e-320-28)/e*100))),p(o.value))}function _(e,t=!1){c.value=e,t&&document.getElementById(`diagnostics-${e}-tab`)?.focus()}function v(e){e.key===`ArrowLeft`||e.key===`Home`?(e.preventDefault(),_(`work-queue`,!0)):(e.key===`ArrowRight`||e.key===`End`)&&(e.preventDefault(),_(`history`,!0))}e(()=>{d=new ResizeObserver(g),a.value&&d.observe(a.value),g()}),T(()=>{u?.(),d?.disconnect()});let y={emit:i,splitRoot:a,splitPercent:o,splitMaxPercent:s,activeSideTab:c,splitStyle:l,get stopResize(){return u},set stopResize(e){u=e},get splitResizeObserver(){return d},set splitResizeObserver(e){d=e},setSplitPercent:p,handleResizePointerDown:m,handleResizeKeydown:h,updateSplitBounds:g,setActiveSideTab:_,handleSideTabKeydown:v,ActionCenterPanel:Er,AnalyzeWorkQueuePanel:Ur,HistoryBaselinePanel:Bi};return Object.defineProperty(y,"__isScriptSetup",{enumerable:!1,value:!0}),y}}),Hi={class:`min-h-0 min-w-0 xl:h-full xl:overflow-hidden`},Ui=[`aria-valuemax`,`aria-valuenow`],Wi={class:`grid min-h-0 min-w-0 gap-2 overflow-visible xl:h-full xl:grid-rows-[auto_minmax(0,1fr)] xl:overflow-hidden`},Gi={class:`grid grid-cols-2 rounded-lg border border-(--dashboard-border) bg-(--dashboard-panel) p-1`,role:`tablist`,"aria-label":`诊断侧栏`},Ki=[`aria-selected`,`tabindex`],qi=[`aria-selected`,`tabindex`],Ji={class:`min-h-0 min-w-0 overflow-visible xl:overflow-hidden`},Yi={id:`diagnostics-work-queue-panel`,class:`h-full min-h-0`,role:`tabpanel`,"aria-labelledby":`diagnostics-work-queue-tab`},Xi={id:`diagnostics-history-panel`,class:`h-full min-h-0`,role:`tabpanel`,"aria-labelledby":`diagnostics-history-tab`};function Zi(e,t,n,r,i,a){return w(),P(`section`,{ref:`splitRoot`,class:`diagnostics-split`,style:g(r.splitStyle)},[S(`div`,Hi,[N(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`])]),S(`button`,{class:`group hidden min-h-0 cursor-col-resize items-center justify-center rounded-md outline-none xl:flex focus-visible:ring-2 focus-visible:ring-(--dashboard-accent)`,type:`button`,role:`separator`,"aria-label":`调整问题中心和诊断侧栏宽度`,"aria-orientation":`vertical`,"aria-valuemin":`52`,"aria-valuemax":r.splitMaxPercent,"aria-valuenow":r.splitPercent,onKeydown:r.handleResizeKeydown,onPointerdown:r.handleResizePointerDown},[...t[12]||=[S(`span`,{class:`h-12 w-0.5 rounded-full bg-(--dashboard-border-strong) transition group-hover:bg-(--dashboard-accent)`},null,-1)]],40,Ui),S(`div`,Wi,[S(`div`,Gi,[S(`button`,{id:`diagnostics-work-queue-tab`,type:`button`,role:`tab`,class:k([`rounded-md px-3 py-2 text-sm font-medium transition`,r.activeSideTab===`work-queue`?`bg-(--dashboard-accent-soft) text-(--dashboard-accent)`:`text-(--dashboard-text-soft) hover:bg-(--dashboard-panel-muted) hover:text-(--dashboard-text)`]),"aria-selected":r.activeSideTab===`work-queue`,tabindex:r.activeSideTab===`work-queue`?0:-1,"aria-controls":`diagnostics-work-queue-panel`,onClick:t[3]||=e=>r.setActiveSideTab(`work-queue`),onKeydown:r.handleSideTabKeydown},` 处理清单 `,42,Ki),S(`button`,{id:`diagnostics-history-tab`,type:`button`,role:`tab`,class:k([`rounded-md px-3 py-2 text-sm font-medium transition`,r.activeSideTab===`history`?`bg-(--dashboard-accent-soft) text-(--dashboard-accent)`:`text-(--dashboard-text-soft) hover:bg-(--dashboard-panel-muted) hover:text-(--dashboard-text)`]),"aria-selected":r.activeSideTab===`history`,tabindex:r.activeSideTab===`history`?0:-1,"aria-controls":`diagnostics-history-panel`,onClick:t[4]||=e=>r.setActiveSideTab(`history`),onKeydown:r.handleSideTabKeydown},` 历史基线 `,42,qi)]),S(`div`,Ji,[p(S(`div`,Yi,[N(r.AnalyzeWorkQueuePanel,{items:n.workQueueItems,"active-id":n.activeWorkQueueItemId,onClearCompleted:t[5]||=e=>r.emit(`clearCompletedWorkQueue`),onCopy:t[6]||=e=>r.emit(`copyWorkQueue`),onRemove:t[7]||=e=>r.emit(`removeWorkQueueItem`,e),onSelect:t[8]||=e=>r.emit(`selectWorkQueueItem`,e),onToggle:t[9]||=e=>r.emit(`toggleWorkQueueItem`,e)},null,8,[`items`,`active-id`])],512),[[b,r.activeSideTab===`work-queue`]]),p(S(`div`,Xi,[N(r.HistoryBaselinePanel,{snapshots:n.historySnapshots,"baseline-snapshot-id":n.baselineSnapshotId,"comparison-mode":n.comparisonMode,onSetBaseline:t[10]||=e=>r.emit(`setBaseline`,e),onSetComparisonMode:t[11]||=e=>r.emit(`setComparisonMode`,e)},null,8,[`snapshots`,`baseline-snapshot-id`,`comparison-mode`])],512),[[b,r.activeSideTab===`history`]])])])],4)}var Qi=I(Vi,[[`render`,Zi],[`__scopeId`,`data-v-a5f11dba`]]);function $i(e){return Math.max(0,Math.min(100,Math.round(e)))}function ea(e){return e===`blocked`?`Blocked`:e===`review`?`Review`:`Ready`}function ta(e){return e===`blocked`?`发布前需要先处理阻断项`:e===`review`?`建议评审后再发布`:`当前分析未发现阻断项`}function na(e){let t=[];for(let n of[...e.criticalActions,...e.warningActions].slice(0,3))t.push(`${n.title}:${n.meta}`);return t.length===0&&e.largestPackage&&t.push(`持续关注最大包 ${e.largestPackage.label},当前 ${R(e.largestPackage.totalBytes)}。`),t.length===0&&e.largestFile&&t.push(`持续关注最大文件 ${e.largestFile.file},当前 ${R(e.largestFile.size)}。`),t}function ra(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 ia(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=$i(100-t.length*28-n.length*12),s=[{label:`阻断项`,value:t.length},{label:`建议项`,value:n.length},{label:`最大包`,value:i?R(i.totalBytes):`—`},{label:`最大文件`,value:r?R(r.size):`—`}],c={status:a,label:ea(a),score:o,headline:ta(a),description:`${e.actionItems.length} 个候选事项 · ${e.packageInsights.length} 个包 · ${e.largestFiles.length} 个文件样本`,metrics:s,recommendations:na({criticalActions:t,warningActions:n,largestFile:r,largestPackage:i})};return{...c,report:ra(c)}}function aa(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(()=>ia({actionItems:e.actionItems,largestFiles:e.largestFiles,packageInsights:e.packageInsights})),{actionStatus:a,setActionStatus:o}=Yr(),s=C(()=>e.packageInsights.slice(0,5).map(e=>{let t=r.value>0?e.totalBytes/r.value*100:0;return{...e,typeLabel:z(e.type),sizeLabel:R(e.totalBytes),compressedLabel:`${e.compressedSizeSource===`real`?`Brotli`:`估算`} ${R(e.compressedBytes)}`,sharePercent:t,shareStyle:{width:`${Math.max(t,2).toFixed(1)}%`}}}));async function c(){try{await V(i.value.report),o(`已复制`)}catch{o(`复制失败`)}}return{copyReleaseGateReport:c,gateCopyStatus:a,getToneClassName:Xn,getToneLabel:Zn,packageOverviewItems:s,releaseGate:i,visibleActions:t,visibleLargestFiles:n}}var oa=n({__name:`DashboardMetricGrid`,props:{cards:{},packageTypeSummary:{},compact:{type:Boolean}},setup(e,{expose:t}){t();let n=e;function r(e){return[H({padding:n.compact?`sm`:`md`}),`h-full min-w-0`,e.wide?`xl:col-span-2`:`xl:col-span-1`]}let i={props:n,getMetricCardClassName:r,metricCardRows:C(()=>n.cards.map(e=>({...e,packageTypeTags:e.label===`总产物体积`?n.packageTypeSummary.map(e=>({label:z(e.label),value:String(e.value)})):[]}))),get iconFrameStyles(){return ye},DashboardIcon:L};return Object.defineProperty(i,"__isScriptSetup",{enumerable:!1,value:!0}),i}}),sa={class:`min-w-0`},ca={key:0,class:`mt-1 text-xs font-medium text-(--dashboard-accent)`},la={key:0,class:`mt-3 flex flex-wrap gap-1.5`};function ua(e,t,n,r,i,a){return w(),P(`section`,{class:k(n.compact?`grid min-h-0 items-stretch gap-2 md:grid-cols-3 xl:grid-cols-6`:`grid items-stretch gap-2.5 md:grid-cols-2 xl:grid-cols-6`)},[(w(!0),P(O,null,c(r.metricCardRows,e=>(w(),P(`article`,{key:e.label,class:k(r.getMetricCardClassName(e))},[S(`div`,{class:k(n.compact?`relative h-full min-w-0 pr-8`:`flex h-full min-w-0 items-start justify-between gap-2`)},[S(`div`,sa,[S(`p`,{class:k(n.compact?`truncate text-[11px] leading-4 text-(--dashboard-text-soft)`:`text-[11px] uppercase tracking-[0.22em] text-(--dashboard-text-soft)`)},h(e.label),3),S(`p`,{class:k(n.compact?`mt-1 text-xl font-semibold leading-6`:`mt-2 text-2xl font-semibold md:text-[1.65rem]`)},h(e.value),3),e.detail?(w(),P(`p`,ca,h(e.detail),1)):M(``,!0)]),S(`span`,{class:k([r.iconFrameStyles({size:n.compact?`sm`:`lg`}),n.compact?`absolute right-0 top-0`:void 0])},[S(`span`,{class:k(n.compact?`h-4.5 w-4.5`:`h-5 w-5`)},[N(r.DashboardIcon,{name:e.iconName},null,8,[`name`])],2)],2)],2),e.packageTypeTags.length>0&&!n.compact?(w(),P(`div`,la,[(w(!0),P(O,null,c(e.packageTypeTags,e=>(w(),P(`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)`},h(e.label)+` `+h(e.value),1))),128))])):M(``,!0)],2))),128))],2)}var da=I(oa,[[`render`,ua]]),fa=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:W,AppPanelHeader:Y,DashboardIcon:L};return Object.defineProperty(a,"__isScriptSetup",{enumerable:!1,value:!0}),a}}),pa={class:`rounded-lg border border-(--dashboard-border) bg-(--dashboard-panel) p-4 shadow-(--dashboard-shadow)`},ma={class:`flex items-center gap-2`},ha={key:0,class:`text-xs font-medium text-(--dashboard-accent)`},ga={class:`h-3.5 w-3.5`},_a={class:`mt-3 grid gap-3 xl:grid-cols-[minmax(0,0.7fr)_minmax(0,1fr)]`},va={class:`rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-3`},ya={class:`flex items-start justify-between gap-3`},ba={class:`mt-3 text-lg font-semibold text-(--dashboard-text)`},xa={class:`mt-1 text-xs leading-5 text-(--dashboard-text-soft)`},Sa={class:`shrink-0 text-right`},Ca={class:`mt-1 text-3xl font-semibold text-(--dashboard-accent)`},wa={class:`grid gap-3 md:grid-cols-[minmax(0,0.9fr)_minmax(0,1fr)]`},Ta={class:`grid grid-cols-2 gap-2`},Ea={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)`},Da={key:0};function Oa(e,n,i,a,o,s){return w(),P(`section`,pa,[N(a.AppPanelHeader,{"icon-name":`metric-quality`,title:`发布门禁`},{meta:t(()=>[S(`div`,ma,[i.copyStatus?(w(),P(`span`,ha,h(i.copyStatus),1)):M(``,!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]||=e=>a.emit(`copy`)},[S(`span`,ga,[N(a.DashboardIcon,{name:`metric-copy`})]),n[1]||=y(` 复制门禁 `,-1)])])]),_:1}),S(`div`,_a,[S(`div`,va,[S(`div`,ya,[S(`div`,null,[S(`span`,{class:k([`inline-flex rounded-full border px-2.5 py-1 text-[11px] font-medium uppercase tracking-[0.16em]`,a.getStatusClassName(i.gate.status)])},h(i.gate.label),3),S(`p`,ba,h(i.gate.headline),1),S(`p`,xa,h(i.gate.description),1)]),S(`div`,Sa,[n[2]||=S(`p`,{class:`text-[11px] uppercase tracking-[0.18em] text-(--dashboard-text-soft)`},` score `,-1),S(`p`,Ca,h(i.gate.score),1)])])]),S(`div`,wa,[S(`div`,Ta,[(w(!0),P(O,null,c(i.gate.metrics,e=>(w(),_(a.AppMetricTile,r({key:e.label},{ref_for:!0},e),null,16))),128))]),S(`ol`,Ea,[(w(!0),P(O,null,c(i.gate.recommendations,e=>(w(),P(`li`,{key:e,class:`line-clamp-2`},h(e),1))),128)),i.gate.recommendations.length===0?(w(),P(`li`,Da,` 当前没有需要立即处理的事项。 `)):M(``,!0)])])])])}var ka=I(fa,[[`render`,Oa]]),Aa=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}=aa(r),p={props:r,emit:i,copyReleaseGateReport:a,gateCopyStatus:o,getToneClassName:s,getToneLabel:c,packageOverviewItems:l,releaseGate:u,visibleActions:d,visibleLargestFiles:f,get formatBytes(){return R},get formatPackageType(){return z},get surfaceStyles(){return H},AppEmptyState:U,AppPanelHeader:Y,DashboardIcon:L,DashboardMetricGrid:da,ReleaseGatePanel:ka};return Object.defineProperty(p,"__isScriptSetup",{enumerable:!1,value:!0}),p}}),ja={class:`grid min-h-0 min-w-0 gap-2 overflow-visible xl:h-full xl:grid-rows-[auto_auto_minmax(0,1fr)] xl:overflow-hidden`},Ma={class:`grid min-h-0 min-w-0 gap-2 overflow-visible xl:grid-cols-[minmax(0,0.95fr)_minmax(0,0.85fr)_minmax(0,0.9fr)] xl:overflow-hidden`},Na={class:`h-3.5 w-3.5`},Pa={class:`mt-3 min-h-0 flex-1 overflow-hidden`},Fa={key:1,class:`grid h-full min-h-0 gap-2 overflow-y-auto pr-1`},Ia=[`onClick`],La={class:`grid min-w-0 grid-cols-[minmax(0,1fr)_auto] items-start gap-3`},Ra={class:`min-w-0`},za={class:`mt-2 line-clamp-2 break-words text-sm font-medium leading-5 text-(--dashboard-text)`},Ba={class:`mt-1 line-clamp-2 break-words text-xs leading-5 text-(--dashboard-text-soft)`},Va={key:0,class:`max-w-28 shrink-0 truncate text-sm font-semibold text-(--dashboard-accent)`},Ha={class:`mt-3 grid min-h-0 gap-2 overflow-y-auto pr-1`},Ua=[`onClick`],Wa={class:`grid min-w-0 grid-cols-[minmax(0,1fr)_auto] items-start gap-3`},Ga={class:`min-w-0`},Ka={class:`truncate font-mono text-xs font-semibold text-(--dashboard-text)`},qa={class:`mt-1 truncate text-xs text-(--dashboard-text-soft)`},Ja={class:`shrink-0 text-right`},Ya={class:`text-sm font-semibold leading-5 text-(--dashboard-accent)`},Xa={class:`text-[11px] leading-4 text-(--dashboard-text-soft)`},Za={class:`mt-3 grid min-h-0 gap-2 overflow-y-auto pr-1`},Qa=[`onClick`],$a={class:`flex items-start justify-between gap-3`},eo={class:`min-w-0`},to={class:`truncate text-sm font-medium text-(--dashboard-text)`},no={class:`mt-1 text-xs text-(--dashboard-text-soft)`},ro={class:`shrink-0 text-right`},io={class:`text-sm font-semibold text-(--dashboard-text)`},ao={class:`text-[11px] text-(--dashboard-text-soft)`},oo={class:`mt-2 h-1.5 overflow-hidden rounded-full bg-(--dashboard-accent-soft)`};function so(e,n,r,i,a,o){return w(),P(`section`,ja,[N(i.DashboardMetricGrid,{compact:``,cards:r.cards,"package-type-summary":r.packageTypeSummary},null,8,[`cards`,`package-type-summary`]),N(i.ReleaseGatePanel,{gate:i.releaseGate,"copy-status":i.gateCopyStatus,onCopy:i.copyReleaseGateReport},null,8,[`gate`,`copy-status`,`onCopy`]),S(`div`,Ma,[S(`section`,{class:k([i.surfaceStyles({padding:`md`}),`min-h-0 overflow-hidden`])},[N(i.AppPanelHeader,{"icon-name":`metric-health`,title:`处理队列`},{meta:t(()=>[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`,Na,[N(i.DashboardIcon,{name:`metric-copy`})]),n[1]||=y(` 复制 PR `,-1)])]),_:1}),S(`div`,Pa,[i.visibleActions.length===0?(w(),_(i.AppEmptyState,{key:0,compact:``},{default:t(()=>[...n[2]||=[y(` 当前没有需要立即处理的事项。 `,-1)]]),_:1})):(w(),P(`ol`,Fa,[(w(!0),P(O,null,c(i.visibleActions,e=>(w(),P(`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=>i.emit(`selectAction`,e)},[S(`div`,La,[S(`div`,Ra,[S(`span`,{class:k(i.getToneClassName(e.tone))},h(i.getToneLabel(e.tone)),3),S(`p`,za,h(e.title),1),S(`p`,Ba,h(e.meta),1)]),e.value?(w(),P(`span`,Va,h(e.value),1)):M(``,!0)])],8,Ia)]))),128))]))])],2),S(`section`,{class:k([i.surfaceStyles({padding:`md`}),`min-h-0 overflow-hidden`])},[N(i.AppPanelHeader,{"icon-name":`top-files`,title:`Top Files`}),S(`ol`,Ha,[(w(!0),P(O,null,c(i.visibleLargestFiles,e=>(w(),P(`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=>i.emit(`selectFile`,e)},[S(`div`,Wa,[S(`div`,Ga,[S(`p`,Ka,h(e.file),1),S(`p`,qa,h(e.packageLabel)+` · `+h(i.formatPackageType(e.packageType))+` · `+h(e.type)+` · `+h(e.moduleCount)+` 模块 `,1)]),S(`div`,Ja,[S(`p`,Ya,h(i.formatBytes(e.size)),1),S(`p`,Xa,h(i.formatBytes(e.compressedSize)),1)])])],8,Ua)]))),128))])],2),S(`section`,{class:k([i.surfaceStyles({padding:`md`}),`min-h-0 overflow-hidden`])},[N(i.AppPanelHeader,{"icon-name":`tab-packages`,title:`包体分布`}),S(`ol`,Za,[(w(!0),P(O,null,c(i.packageOverviewItems,e=>(w(),P(`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=>i.emit(`selectPackage`,e)},[S(`div`,$a,[S(`div`,eo,[S(`p`,to,h(e.label),1),S(`p`,no,h(e.typeLabel)+` · `+h(e.fileCount)+` 产物 · `+h(e.moduleCount)+` 模块 `,1)]),S(`div`,ro,[S(`p`,io,h(e.sizeLabel),1),S(`p`,ao,h(e.compressedLabel),1)])]),S(`div`,oo,[S(`div`,{class:`h-full rounded-full bg-(--dashboard-accent)`,style:g(e.shareStyle)},null,4)])],8,Qa)]))),128))])],2)])])}var co=I(Aa,[[`render`,so]]);function lo(e){return e===`high`?`高`:e===`medium`?`中`:`低`}function uo(e){let t=e.packages.some(e=>e.packageLabel.includes(`independent`)||e.packageId.includes(`independent`))?`high`:e.packageCount>2?`medium`:`low`,n=t===`high`?.72:t===`medium`?.86:1;return{id:`duplicate:${e.id}`,title:`收敛重复模块 ${e.source}`,detail:`${e.packageCount} 个包复用 · 单份 ${R(e.bytes)} · ${e.advice}`,impactBytes:e.estimatedSavingBytes,effort:t,priority:Math.round(e.estimatedSavingBytes*n+e.packageCount*128),action:t===`high`?`先确认独立分包隔离要求,再评估公共入口。`:`优先抽到共享入口或调整引用边界。`}}function fo(e){let t=e.category===`第三方依赖`?`medium`:`low`,n=t===`medium`?.82:.92;return{id:`increment:${e.key}`,title:`复核增长来源 ${e.label}`,detail:`${e.category} · ${e.packageLabel} · +${R(e.deltaBytes)}`,impactBytes:e.deltaBytes,effort:t,priority:Math.round(e.deltaBytes*n),action:e.advice}}function po(e){let t=e.moduleCount>12?`medium`:`low`;return{id:`file:${e.packageId}:${e.file}`,title:`检查大文件边界 ${e.file}`,detail:`${e.packageLabel} · ${R(e.size)} · ${e.moduleCount} 个模块`,impactBytes:e.size,effort:t,priority:Math.round(e.size*.42+e.moduleCount*96),action:e.isEntry?`确认入口依赖是否可懒加载或拆到分包。`:`检查静态资源和模块聚合边界。`}}function mo(e){return[`# dashboard 模块优化计划`,``,`计划项:${e.items.length}`,`估算影响:${R(e.totalImpactBytes)}`,`低成本项:${e.quickWinCount}`,``,`| 优先级 | 事项 | 影响 | 成本 | 建议 |`,`| ---: | --- | ---: | --- | --- |`,...e.items.map(e=>`| ${e.priority} | ${e.title.replaceAll(`|`,`\\|`)} | ${R(e.impactBytes)} | ${lo(e.effort)} | ${e.action.replaceAll(`|`,`\\|`)} |`),``].join(`
10
+ `)}function ho(e){let t=e.duplicateModules.filter(e=>e.estimatedSavingBytes>0).slice(0,8).map(uo),n=e.incrementAttribution.filter(e=>e.deltaBytes>0).slice(0,6).map(fo),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(po),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:mo(o)}}function go(e){return{title:e.source,meta:`${e.packageCount} 个包 · 单份 ${R(e.bytes)} · 可节省 ${R(e.estimatedSavingBytes)} · ${e.advice}`}}function _o(e){return{title:e.sourceCategory,meta:`${e.count} 个模块`,value:R(e.bytes)}}function vo(e){return{title:e.label,meta:`${e.category} · ${e.packageLabel} · ${e.advice}`,value:`+${R(e.deltaBytes)}`}}function yo(e){return{title:e.category,meta:`${e.count} 项增长`,value:`+${R(e.deltaBytes)}`}}function bo(e){return{title:e.file,meta:`${e.packageLabel} · ${le(e.from)} · ${e.moduleCount} 模块`}}function xo(e){return e.replaceAll(`|`,`\\|`).replaceAll(`
11
+ `,` `)}function So(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 Co(e){let t=f(``),n=f(`all`),r=f(`saving`),{actionStatus:i,setActionStatus:a}=Yr(),o=C(()=>{let t=new Set;for(let n of e.duplicateModules)t.add(n.sourceType);return[...t].sort((e,t)=>e.localeCompare(t))}),s=C(()=>{let i=t.value.trim().toLowerCase();return So(e.duplicateModules.filter(e=>n.value!==`all`&&e.sourceType!==n.value?!1:!i||[e.id,e.source,e.sourceType,e.advice,e.packages.map(e=>e.packageLabel).join(` `),e.packages.flatMap(e=>e.files).join(` `)].some(e=>e.toLowerCase().includes(i))),r.value)}),c=C(()=>s.value.map(e=>({key:e.id,packages:e.packages,...go(e)}))),l=C(()=>e.moduleSourceSummary.map(e=>({key:`${e.sourceType}:${e.sourceCategory}`,..._o(e)}))),u=C(()=>e.incrementAttribution.slice(0,8).map(e=>({key:e.key,...vo(e)}))),d=C(()=>e.incrementSummary.slice(0,6).map(e=>({key:e.category,...yo(e)}))),p=C(()=>e.visibleLargestFiles.slice(0,6).map(e=>({key:`${e.packageId}:${e.file}`,...bo(e)}))),m=C(()=>ho({duplicateModules:e.duplicateModules,incrementAttribution:e.incrementAttribution,largestFiles:e.visibleLargestFiles})),h=C(()=>[`# dashboard 重复模块`,``,`模块数量:${s.value.length} / ${e.duplicateModules.length}`,``,`| 模块 | 来源 | 包数量 | 单份体积 | 可节省 | 建议 | 涉及包 |`,`| --- | --- | ---: | ---: | ---: | --- | --- |`,...s.value.map(e=>[e.source,e.sourceType,String(e.packageCount),R(e.bytes),R(e.estimatedSavingBytes),e.advice,e.packages.map(e=>e.packageLabel).join(`, `)].map(xo).join(` | `)).map(e=>`| ${e} |`),``].join(`
12
+ `));async function g(){try{await V(h.value),a(`已复制`)}catch{a(`复制失败`)}}function _(){let e=new Blob([`${JSON.stringify(s.value,null,2)}\n`],{type:`application/json`}),t=URL.createObjectURL(e),n=document.createElement(`a`);n.href=t,n.download=`weapp-vite-dashboard-duplicate-modules.json`,n.click(),URL.revokeObjectURL(t),a(`已导出`)}return{actionStatus:i,copyDuplicateModulesReport:g,duplicateModuleItems:c,duplicateQuery:t,duplicateSortMode:r,duplicateSourceFilter:n,duplicateSourceOptions:o,exportDuplicateModulesJson:_,incrementItems:u,incrementSummaryItems:d,largestFileSampleItems:p,moduleOptimizationPlan:m,moduleSourceItems:l}}var wo=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}}),To={class:`rounded-xl border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-3.5`},Eo={class:`flex flex-wrap items-start justify-between gap-3`},Do={class:`min-w-0`},Oo={class:`mt-1 text-xs text-(--dashboard-text-soft)`},ko={key:0,class:`font-medium text-(--dashboard-accent)`};function Ao(e,t,n,r,i,a){return w(),P(`article`,To,[S(`div`,Eo,[S(`div`,Do,[S(`p`,{class:k([`font-medium text-(--dashboard-text)`,n.breakTitle?`break-all`:void 0])},h(n.title),3),S(`p`,Oo,h(n.meta),1)]),n.value?(w(),P(`p`,ko,h(n.value),1)):M(``,!0)]),u(e.$slots,`default`)])}var jo=I(wo,[[`render`,Ao]]),Mo=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=e,i={props:r,emit:n,query:s(e,`query`),sourceFilter:s(e,`sourceFilter`),sortMode:s(e,`sortMode`),sourceFilterOptions:C(()=>[{label:`全部来源`,value:`all`},...r.sourceOptions.map(e=>({label:e,value:e}))]),sortOptions:[{label:`按可节省`,value:`saving`},{label:`按包数量`,value:`packages`},{label:`按单份体积`,value:`size`},{label:`按路径`,value:`source`}],AppSelect:B};return Object.defineProperty(i,"__isScriptSetup",{enumerable:!1,value:!0}),i}}),No={class:`flex flex-wrap items-center gap-2`},Po={class:`text-xs font-medium text-(--dashboard-text-soft)`},Fo={key:0,class:`text-xs font-medium text-(--dashboard-accent)`},Io=[`disabled`],Lo=[`disabled`];function Ro(e,t,n,r,i,a){return w(),P(`div`,No,[S(`span`,Po,` 匹配 `+h(n.filteredCount)+` / `+h(n.totalCount),1),n.actionStatus?(w(),P(`span`,Fo,h(n.actionStatus),1)):M(``,!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:n.disabled,onClick:t[0]||=e=>r.emit(`copy`)},` 复制重复模块 `,8,Io),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:n.disabled,onClick:t[1]||=e=>r.emit(`exportJson`)},` 导出 JSON `,8,Lo),p(S(`input`,{"onUpdate:modelValue":t[2]||=e=>r.query=e,class:`h-9 w-56 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 text-sm text-(--dashboard-text) outline-none transition placeholder:text-(--dashboard-text-soft) focus:border-(--dashboard-accent)`,placeholder:`搜索模块、包或文件`,type:`search`},null,512),[[j,r.query]]),N(r.AppSelect,{modelValue:r.sourceFilter,"onUpdate:modelValue":t[3]||=e=>r.sourceFilter=e,class:`w-28`,label:`筛选重复模块来源`,options:r.sourceFilterOptions},null,8,[`modelValue`,`options`]),N(r.AppSelect,{modelValue:r.sortMode,"onUpdate:modelValue":t[4]||=e=>r.sortMode=e,class:`w-30`,label:`排序重复模块`,options:r.sortOptions},null,8,[`modelValue`])])}var zo=I(Mo,[[`render`,Ro]]),Bo=n({__name:`ModuleInsightsSidebar`,props:{incrementItems:{},incrementSummaryItems:{},moduleSourceItems:{},largestFileSampleItems:{},optimizationPlan:{}},setup(e,{expose:t}){t();let n=e,r=f(``),i=null;function a(e){return e===`high`?`高成本`:e===`medium`?`中成本`:`低成本`}function o(e){return e===`high`?`border-rose-200 bg-rose-50 text-rose-700 dark:border-rose-500/25 dark:bg-rose-500/10 dark:text-rose-300`:e===`medium`?`border-amber-200 bg-amber-50 text-amber-700 dark:border-amber-500/25 dark:bg-amber-500/10 dark:text-amber-300`:`border-emerald-200 bg-emerald-50 text-emerald-700 dark:border-emerald-500/25 dark:bg-emerald-500/10 dark:text-emerald-300`}function s(e){r.value=e,i&&clearTimeout(i),i=setTimeout(()=>{r.value=``,i=null},1800)}async function c(){try{await V(n.optimizationPlan.report),s(`计划已复制`)}catch{s(`复制失败`)}}T(()=>{i&&clearTimeout(i)});let l={props:n,optimizationPlanStatus:r,get optimizationPlanStatusTimer(){return i},set optimizationPlanStatusTimer(e){i=e},getEffortLabel:a,getEffortClassName:o,setOptimizationPlanStatus:s,copyOptimizationPlan:c,get formatBytes(){return R},get surfaceStyles(){return H},AppCompactListItem:Bt,AppEmptyState:U,AppMetricTile:W,AppPanelHeader:Y,AppSummaryValueCard:jo};return Object.defineProperty(l,"__isScriptSetup",{enumerable:!1,value:!0}),l}}),Vo={class:`grid min-h-0 min-w-0 content-start gap-3 overflow-visible`},Ho={class:`flex items-center gap-2`},Uo={key:0,class:`text-xs font-medium text-(--dashboard-accent)`},Wo=[`disabled`],Go={class:`mt-3 grid gap-2 sm:grid-cols-3`},Ko={key:0,class:`mt-3 grid max-h-54 gap-2 overflow-y-auto pr-1`},qo={class:`flex items-start justify-between gap-3`},Jo={class:`min-w-0 text-sm font-medium text-(--dashboard-text)`},Yo={class:`mt-1 line-clamp-2 text-xs leading-5 text-(--dashboard-text-muted)`},Xo={class:`mt-2 text-xs text-(--dashboard-text-soft)`},Zo={key:0,class:`mt-4 grid min-h-0 min-w-0 gap-3 overflow-visible`},Qo={class:`grid max-h-80 gap-2 overflow-y-auto pr-1 sm:grid-cols-2`},$o={class:`max-h-80 space-y-2 overflow-y-auto pr-1 text-sm text-(--dashboard-text-muted)`},es={class:`mt-4 grid min-h-0 min-w-0 gap-3 overflow-visible`},ts={class:`grid max-h-80 gap-2.5 overflow-y-auto pr-1 sm:grid-cols-2`},ns={class:`max-h-80 space-y-2.5 overflow-y-auto pr-1 text-sm text-(--dashboard-text-muted)`};function rs(e,n,r,i,a,o){return w(),P(`div`,Vo,[S(`section`,{class:k([i.surfaceStyles({padding:`md`}),`min-w-0 overflow-hidden`])},[N(i.AppPanelHeader,{"icon-name":`metric-quality`,title:`优化计划`},{meta:t(()=>[S(`div`,Ho,[i.optimizationPlanStatus?(w(),P(`span`,Uo,h(i.optimizationPlanStatus),1)):M(``,!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:r.optimizationPlan.items.length===0,onClick:i.copyOptimizationPlan},` 复制计划 `,8,Wo)])]),_:1}),S(`div`,Go,[N(i.AppMetricTile,{label:`计划项`,value:r.optimizationPlan.items.length},null,8,[`value`]),N(i.AppMetricTile,{label:`估算影响`,value:i.formatBytes(r.optimizationPlan.totalImpactBytes)},null,8,[`value`]),N(i.AppMetricTile,{label:`低成本项`,value:r.optimizationPlan.quickWinCount},null,8,[`value`])]),r.optimizationPlan.items.length?(w(),P(`div`,Ko,[(w(!0),P(O,null,c(r.optimizationPlan.items,e=>(w(),P(`article`,{key:e.id,class:`rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-3`},[S(`div`,qo,[S(`p`,Jo,h(e.title),1),S(`span`,{class:k([`shrink-0 rounded-full border px-2 py-0.5 text-[11px]`,i.getEffortClassName(e.effort)])},h(i.getEffortLabel(e.effort)),3)]),S(`p`,Yo,h(e.detail),1),S(`p`,Xo,h(e.action)+` · 影响 `+h(i.formatBytes(e.impactBytes)),1)]))),128))])):(w(),_(i.AppEmptyState,{key:1,class:`mt-3`},{default:t(()=>[...n[0]||=[y(` 当前没有需要生成的模块优化计划。 `,-1)]]),_:1}))],2),S(`section`,{class:k([i.surfaceStyles({padding:`md`}),`min-h-0 min-w-0 overflow-hidden`])},[N(i.AppPanelHeader,{"icon-name":`metric-time`,title:`增量归因`}),r.incrementItems.length?(w(),P(`div`,Zo,[S(`div`,Qo,[(w(!0),P(O,null,c(r.incrementSummaryItems,e=>(w(),_(i.AppSummaryValueCard,{key:e.key,meta:e.meta,title:e.title,value:e.value},null,8,[`meta`,`title`,`value`]))),128))]),S(`ul`,$o,[(w(!0),P(O,null,c(r.incrementItems,e=>(w(),_(i.AppCompactListItem,{key:e.key,meta:e.meta,"mono-title":``,title:e.title,value:e.value},null,8,[`meta`,`title`,`value`]))),128))])])):(w(),_(i.AppEmptyState,{key:1,class:`mt-4`},{default:t(()=>[...n[1]||=[y(` 暂无可对比的正向增量。 `,-1)]]),_:1}))],2),S(`section`,{class:k([i.surfaceStyles({padding:`md`}),`min-h-0 min-w-0 overflow-hidden`])},[N(i.AppPanelHeader,{"icon-name":`module-sources`,title:`模块来源`}),S(`div`,es,[S(`div`,ts,[(w(!0),P(O,null,c(r.moduleSourceItems,e=>(w(),_(i.AppSummaryValueCard,{key:e.key,meta:e.meta,title:e.title,value:e.value},null,8,[`meta`,`title`,`value`]))),128))]),S(`ul`,ns,[(w(!0),P(O,null,c(r.largestFileSampleItems,e=>(w(),_(i.AppCompactListItem,{key:e.key,meta:e.meta,"mono-title":``,title:e.title,value:e.value},null,8,[`meta`,`title`,`value`]))),128))])])],2)])}var is=I(Bo,[[`render`,rs]]),as=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}=Co(n),g={props:n,actionStatus:r,copyDuplicateModulesReport:i,duplicateModuleItems:a,duplicateQuery:o,duplicateSortMode:s,duplicateSourceFilter:c,duplicateSourceOptions:l,exportDuplicateModulesJson:u,incrementItems:d,incrementSummaryItems:f,largestFileSampleItems:p,moduleOptimizationPlan:m,moduleSourceItems:h,get surfaceStyles(){return H},AppEmptyState:U,AppPanelHeader:Y,AppSummaryValueCard:jo,DuplicateModulesToolbar:zo,ModuleInsightsSidebar:is};return Object.defineProperty(g,"__isScriptSetup",{enumerable:!1,value:!0}),g}}),os={class:`flex flex-wrap items-start justify-between gap-3`},ss={key:0,class:`mt-4 max-h-96 space-y-2.5 overflow-y-auto pr-1 xl:max-h-[calc(100%-5.75rem)]`},cs={class:`mt-3 space-y-1.5 text-xs text-(--dashboard-text-muted)`},ls={class:`font-medium text-(--dashboard-text)`};function us(e,n,r,i,a,o){return w(),P(`section`,{class:k([`grid min-h-0 min-w-0 items-start gap-3 overflow-visible`,r.duplicateModules.length?`xl:grid-cols-[minmax(0,1.24fr)_minmax(0,0.76fr)]`:`xl:grid-cols-[minmax(20rem,0.72fr)_minmax(0,1.28fr)]`])},[S(`div`,{class:k([i.surfaceStyles({padding:`md`}),`min-h-0 min-w-0 overflow-hidden`])},[S(`div`,os,[N(i.AppPanelHeader,{"icon-name":`duplicate-modules`,title:`重复模块`,description:`${r.duplicateModules.length} 个重复模块样本`},null,8,[`description`]),N(i.DuplicateModulesToolbar,{query:i.duplicateQuery,"onUpdate:query":n[0]||=e=>i.duplicateQuery=e,"sort-mode":i.duplicateSortMode,"onUpdate:sortMode":n[1]||=e=>i.duplicateSortMode=e,"source-filter":i.duplicateSourceFilter,"onUpdate:sourceFilter":n[2]||=e=>i.duplicateSourceFilter=e,"action-status":i.actionStatus,disabled:i.duplicateModuleItems.length===0,"filtered-count":i.duplicateModuleItems.length,"source-options":i.duplicateSourceOptions,"total-count":r.duplicateModules.length,onCopy:i.copyDuplicateModulesReport,onExportJson:i.exportDuplicateModulesJson},null,8,[`query`,`sort-mode`,`source-filter`,`action-status`,`disabled`,`filtered-count`,`source-options`,`total-count`,`onCopy`,`onExportJson`])]),i.duplicateModuleItems.length?(w(),P(`div`,ss,[(w(!0),P(O,null,c(i.duplicateModuleItems,e=>(w(),_(i.AppSummaryValueCard,{key:e.key,"break-title":``,meta:e.meta,title:e.title,value:e.value},{default:t(()=>[S(`ul`,cs,[(w(!0),P(O,null,c(e.packages,t=>(w(),P(`li`,{key:`${e.key}:${t.packageId}`},[S(`span`,ls,h(t.packageLabel),1),n[3]||=S(`span`,{class:`text-(--dashboard-text-soft)`},` · `,-1),S(`span`,null,h(t.files.join(`、`)),1)]))),128))])]),_:2},1032,[`meta`,`title`,`value`]))),128))])):(w(),_(i.AppEmptyState,{key:1,class:`mt-4`},{default:t(()=>[...n[4]||=[y(` 当前构建未检测到跨包重复模块。 `,-1)]]),_:1}))],2),N(i.ModuleInsightsSidebar,{"increment-items":i.incrementItems,"increment-summary-items":i.incrementSummaryItems,"largest-file-sample-items":i.largestFileSampleItems,"module-source-items":i.moduleSourceItems,"optimization-plan":i.moduleOptimizationPlan},null,8,[`increment-items`,`increment-summary-items`,`largest-file-sample-items`,`module-source-items`,`optimization-plan`])],2)}var ds=I(as,[[`render`,us]]);function fs(e){return Math.max(0,Math.min(100,Math.round(e)))}function ps(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 ms(e){return e?e.status===`critical`?32:18:0}function hs(e){return e.moduleCount<=0||e.duplicateModuleCount<=0?0:Math.min(18,e.duplicateModuleCount/e.moduleCount*60)}function gs(e){return Math.min(10,Math.max(0,e.entryFileCount-1)*3)}function _s(e){return e<70?`risk`:e<86?`watch`:`good`}function vs(e){return e===`risk`?`高风险`:e===`watch`?`需关注`:`健康`}function ys(e,t){return t?.status===`critical`?`预算超限 ${(t.ratio*100).toFixed(1)}%`:t?.status===`warning`?`接近预算 ${(t.ratio*100).toFixed(1)}%`:typeof e.sizeDeltaBytes==`number`&&e.sizeDeltaBytes>0?`较上次增长 ${R(e.sizeDeltaBytes)}`:e.duplicateModuleCount>0?`${e.duplicateModuleCount} 个重复模块`:`未发现主要风险`}function bs(e,t){let n=fs(100-ms(t)-ps(e)-hs(e)-gs(e)),r=_s(n);return{id:e.id,label:e.label,score:n,status:r,statusLabel:vs(r),detail:`${e.fileCount} 个产物 · ${e.moduleCount} 个模块 · ${R(e.totalBytes)}`,primaryRisk:ys(e,t),metrics:[{label:`体积`,value:R(e.totalBytes)},{label:`重复模块`,value:e.duplicateModuleCount},{label:`Entry`,value:e.entryFileCount},{label:`较上次`,value:typeof e.sizeDeltaBytes==`number`?`${e.sizeDeltaBytes>=0?`+`:`-`}${R(Math.abs(e.sizeDeltaBytes))}`:`—`}]}}function xs(e){let t=new Map(e.budgetWarnings.map(e=>[e.id,e])),n=e.packageInsights.map(e=>bs(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?fs(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 Ss(e){return typeof e!=`number`||Number.isNaN(e)||e===0?`—`:`${e>0?`+`:`-`}${R(Math.abs(e))}`}function Cs(e){return[{label:`Chunks`,value:e.chunkCount},{label:`Assets`,value:e.assetCount},{label:`压缩后`,value:R(e.compressedBytes)},{label:`较上次`,value:Ss(e.sizeDeltaBytes)}]}function ws(e){return e.replaceAll(`|`,`\\|`).replaceAll(`
13
+ `,` `)}function Ts(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(ws).join(` | `)).map(e=>`| ${e} |`),``].join(`
14
+ `)}function Es(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 Ds(e){let t=f(``),n=f(`all`),r=f(`all`),i=f(`size`),{actionStatus:a,setActionStatus:o}=Yr(),s=C(()=>new Map(e.budgetWarnings.map(e=>[e.id,e]))),c=C(()=>xs({packageInsights:e.packageInsights,budgetWarnings:e.budgetWarnings})),l=C(()=>new Map(c.value.items.map(e=>[e.id,e.score]))),u=C(()=>{let t=new Set;for(let n of e.packageInsights)t.add(n.type);return[...t].sort((e,t)=>z(e).localeCompare(z(t)))}),d=C(()=>e.packageInsights.map(t=>{let n=z(t.type),r=s.value.get(t.id),i=e.selectedTreemapMeta?.packageLabel===t.label;return{...t,typeLabel:n,summaryText:`${n} · ${t.fileCount} 个产物 · ${t.moduleCount} 个模块 · 跨包 ${t.duplicateModuleCount}`,totalBytesLabel:R(t.totalBytes),compressedBytesLabel:`${t.compressedSizeSource===`real`?`Brotli`:`估算`} ${R(t.compressedBytes)}`,deltaText:Ss(t.sizeDeltaBytes),budgetText:r?`${r.status===`critical`?`超预算`:`接近预算`} ${(r.ratio*100).toFixed(1)}%`:`预算正常`,selected:i,entryCountText:`${t.entryFileCount} 个 entry`,healthScore:l.value.get(t.id)??100,metrics:Cs(t)}})),p=C(()=>{let e=t.value.trim().toLowerCase();return Es(d.value.filter(t=>{if(n.value!==`all`&&t.type!==n.value)return!1;let i=s.value.has(t.id);return r.value===`warning`&&!i||r.value===`normal`&&i?!1:!e||[t.id,t.label,t.type,t.typeLabel,t.summaryText].some(t=>t.toLowerCase().includes(e))}),i.value)}),m=C(()=>Ts(p.value,d.value.length));async function h(){try{await V(m.value),o(`已复制`)}catch{o(`复制失败`)}}function g(){let e=new Blob([`${JSON.stringify(p.value,null,2)}\n`],{type:`application/json`}),t=URL.createObjectURL(e),n=document.createElement(`a`);n.href=t,n.download=`weapp-vite-dashboard-packages.json`,n.click(),URL.revokeObjectURL(t),o(`已导出`)}return{actionStatus:a,copyPackageReport:h,exportPackageJson:g,filteredPackageInsightCards:p,packageBudgetFilter:r,packageHealth:c,packageInsightCards:d,packageQuery:t,packageSortMode:i,packageTypeFilter:n,packageTypeOptions:u}}var Os=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?`+`:`-`}${R(Math.abs(e.sizeDeltaBytes))}`:`—`;return{file:e.file,type:e.type,fromLabel:le(e.from),sizeLabel:R(e.size),compressedLabel:R(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}}),ks={class:`max-w-full overflow-x-auto rounded-xl border border-(--dashboard-border)`},As={class:`min-w-[48rem] divide-y divide-(--dashboard-border) text-left text-sm`},js={class:`divide-y divide-(--dashboard-border) text-(--dashboard-text-muted)`},Ms={class:`px-3 py-2 font-mono text-xs text-(--dashboard-text)`},Ns={class:`px-3 py-2`},Ps={class:`px-3 py-2`},Fs={class:`px-3 py-2 font-medium text-(--dashboard-text)`},Is={class:`px-3 py-2 font-medium text-(--dashboard-text)`};function Ls(e,t,n,r,i,a){return w(),P(`div`,ks,[S(`table`,As,[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`,js,[(w(!0),P(O,null,c(r.fileRows,e=>(w(),P(`tr`,{key:e.file},[S(`td`,Ms,h(e.file),1),S(`td`,Ns,h(e.type),1),S(`td`,Ps,h(e.fromLabel),1),S(`td`,Fs,h(e.sizeLabel)+` / `+h(e.compressedLabel),1),S(`td`,Is,h(e.deltaLabel),1)]))),128))])])])}var Rs=I(Os,[[`render`,Ls]]),zs=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=e,i={props:r,emit:n,query:s(e,`query`),typeFilter:s(e,`typeFilter`),budgetFilter:s(e,`budgetFilter`),sortMode:s(e,`sortMode`),typeFilterOptions:C(()=>[{label:`全部类型`,value:`all`},...r.typeOptions.map(e=>({label:z(e),value:e}))]),budgetFilterOptions:[{label:`全部预算`,value:`all`},{label:`仅告警`,value:`warning`},{label:`预算正常`,value:`normal`}],sortOptions:[{label:`按健康分`,value:`health`},{label:`按体积`,value:`size`},{label:`按压缩后`,value:`compressed`},{label:`按增量`,value:`delta`},{label:`按重复模块`,value:`duplicates`},{label:`按产物数`,value:`files`},{label:`按名称`,value:`name`}],AppSelect:B};return Object.defineProperty(i,"__isScriptSetup",{enumerable:!1,value:!0}),i}}),Bs={class:`flex flex-wrap items-center justify-between gap-3`},Vs={class:`text-xs font-medium text-(--dashboard-text-soft)`},Hs={key:0,class:`mt-1 text-xs font-medium text-(--dashboard-accent)`},Us={class:`flex flex-wrap items-center gap-2`},Ws=[`disabled`],Gs=[`disabled`];function Ks(e,t,n,r,i,a){return w(),P(`div`,Bs,[S(`div`,null,[S(`p`,Vs,` 匹配 `+h(n.filteredCount)+` / `+h(n.totalCount)+` 个包 `,1),n.actionStatus?(w(),P(`p`,Hs,h(n.actionStatus),1)):M(``,!0)]),S(`div`,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:n.disabled,onClick:t[0]||=e=>r.emit(`copy`)},` 复制包体 `,8,Ws),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:n.disabled,onClick:t[1]||=e=>r.emit(`exportJson`)},` 导出 JSON `,8,Gs),p(S(`input`,{"onUpdate:modelValue":t[2]||=e=>r.query=e,class:`h-9 w-56 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 text-sm text-(--dashboard-text) outline-none transition placeholder:text-(--dashboard-text-soft) focus:border-(--dashboard-accent)`,placeholder:`搜索包名或类型`,type:`search`},null,512),[[j,r.query]]),N(r.AppSelect,{modelValue:r.typeFilter,"onUpdate:modelValue":t[3]||=e=>r.typeFilter=e,class:`w-28`,label:`筛选包类型`,options:r.typeFilterOptions},null,8,[`modelValue`,`options`]),N(r.AppSelect,{modelValue:r.budgetFilter,"onUpdate:modelValue":t[4]||=e=>r.budgetFilter=e,class:`w-28`,label:`筛选包预算状态`,options:r.budgetFilterOptions},null,8,[`modelValue`]),N(r.AppSelect,{modelValue:r.sortMode,"onUpdate:modelValue":t[5]||=e=>r.sortMode=e,class:`w-32`,label:`排序包`,options:r.sortOptions},null,8,[`modelValue`])])])}var qs=I(zs,[[`render`,Ks]]),Js=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:W,AppPanelHeader:Y};return Object.defineProperty(r,"__isScriptSetup",{enumerable:!1,value:!0}),r}}),Ys={class:`rounded-lg border border-(--dashboard-border) bg-(--dashboard-panel) p-4 shadow-(--dashboard-shadow)`},Xs={class:`mt-3 grid gap-3 xl:grid-cols-[minmax(0,0.45fr)_minmax(0,1fr)]`},Zs={class:`grid gap-2 sm:grid-cols-3`},Qs={class:`grid gap-2 md:grid-cols-2 xl:grid-cols-3`},$s={class:`flex items-start justify-between gap-3`},ec={class:`min-w-0`},tc={class:`truncate text-sm font-semibold text-(--dashboard-text)`},nc={class:`mt-1 text-xs leading-5 text-(--dashboard-text-soft)`},rc={class:`mt-3 flex items-end justify-between gap-3`},ic={class:`text-3xl font-semibold text-(--dashboard-accent)`},ac={class:`line-clamp-2 text-right text-xs leading-5 text-(--dashboard-text-muted)`};function oc(e,t,n,r,i,a){return w(),P(`section`,Ys,[N(r.AppPanelHeader,{"icon-name":`metric-health`,title:`包体健康`,description:n.health.weakestPackage?`优先关注 ${n.health.weakestPackage.label}`:`当前没有包体样本`},null,8,[`description`]),S(`div`,Xs,[S(`div`,Zs,[N(r.AppMetricTile,{label:`平均分`,value:n.health.averageScore},null,8,[`value`]),N(r.AppMetricTile,{label:`高风险`,value:n.health.riskCount},null,8,[`value`]),N(r.AppMetricTile,{label:`需关注`,value:n.health.watchCount},null,8,[`value`])]),S(`div`,Qs,[(w(!0),P(O,null,c(n.health.items.slice(0,3),e=>(w(),P(`article`,{key:e.id,class:`rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-3`},[S(`div`,$s,[S(`div`,ec,[S(`p`,tc,h(e.label),1),S(`p`,nc,h(e.detail),1)]),S(`span`,{class:k([`shrink-0 rounded-full border px-2 py-0.5 text-[11px]`,r.getStatusClassName(e.status)])},h(e.statusLabel),3)]),S(`div`,rc,[S(`p`,ic,h(e.score),1),S(`p`,ac,h(e.primaryRisk),1)])]))),128))])])])}var sc=I(Js,[[`render`,oc]]),cc=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}=Ds(n),m={props:n,actionStatus:r,copyPackageReport:i,exportPackageJson:a,filteredPackageInsightCards:o,packageBudgetFilter:s,packageHealth:c,packageInsightCards:l,packageQuery:u,packageSortMode:d,packageTypeFilter:f,packageTypeOptions:p,get surfaceStyles(){return H},AppEmptyState:U,AppMetricTile:W,AppPackageFileTable:Rs,AppPanelHeader:Y,PackageExplorerToolbar:qs,PackageHealthPanel:sc};return Object.defineProperty(m,"__isScriptSetup",{enumerable:!1,value:!0}),m}}),lc={class:`grid min-h-0 min-w-0 gap-3 overflow-visible xl:h-full xl:grid-rows-[auto_minmax(0,1fr)] xl:overflow-hidden`},uc={class:`grid min-w-0 gap-3`},dc={class:`grid max-h-[48rem] min-h-0 min-w-0 auto-rows-max gap-3 overflow-y-auto pr-1 xl:max-h-none xl:grid-cols-2`},fc={class:`flex flex-wrap items-start justify-between gap-4`},pc={class:`min-w-0`},mc={class:`mt-2 text-sm text-(--dashboard-text-soft)`},hc={class:`max-w-[45%] shrink-0 text-right`},gc={class:`text-xl font-semibold text-(--dashboard-text)`},_c={class:`text-xs text-(--dashboard-text-soft)`},vc={class:`mt-1 text-xs text-(--dashboard-accent)`},yc={class:`mt-4 grid grid-cols-2 gap-2 text-sm md:grid-cols-4`},bc={class:`mt-4`};function xc(e,n,i,a,o,s){return w(),P(`section`,lc,[S(`div`,uc,[N(a.PackageHealthPanel,{health:a.packageHealth},null,8,[`health`]),S(`div`,{class:k([a.surfaceStyles({padding:`md`}),`grid gap-3`])},[N(a.AppPanelHeader,{"icon-name":`tab-packages`,title:`包体探索`,description:`${a.packageInsightCards.length} 个包体样本`},null,8,[`description`]),N(a.PackageExplorerToolbar,{"budget-filter":a.packageBudgetFilter,"onUpdate:budgetFilter":n[0]||=e=>a.packageBudgetFilter=e,query:a.packageQuery,"onUpdate:query":n[1]||=e=>a.packageQuery=e,"sort-mode":a.packageSortMode,"onUpdate:sortMode":n[2]||=e=>a.packageSortMode=e,"type-filter":a.packageTypeFilter,"onUpdate:typeFilter":n[3]||=e=>a.packageTypeFilter=e,"action-status":a.actionStatus,disabled:a.filteredPackageInsightCards.length===0,"filtered-count":a.filteredPackageInsightCards.length,"total-count":a.packageInsightCards.length,"type-options":a.packageTypeOptions,onCopy:a.copyPackageReport,onExportJson:a.exportPackageJson},null,8,[`budget-filter`,`query`,`sort-mode`,`type-filter`,`action-status`,`disabled`,`filtered-count`,`total-count`,`type-options`,`onCopy`,`onExportJson`])],2)]),S(`div`,dc,[a.filteredPackageInsightCards.length===0?(w(),_(a.AppEmptyState,{key:0,class:`xl:col-span-2`},{default:t(()=>[...n[4]||=[y(` 没有匹配当前筛选条件的包。 `,-1)]]),_:1})):M(``,!0),(w(!0),P(O,null,c(a.filteredPackageInsightCards,e=>(w(),P(`article`,{key:e.id,class:k([[a.surfaceStyles({padding:`md`}),e.selected?`border-(--dashboard-accent)`:``],`min-w-0 max-w-full border transition`])},[S(`div`,fc,[S(`div`,pc,[N(a.AppPanelHeader,{"icon-name":`tab-packages`,title:e.label,description:e.typeLabel},null,8,[`title`,`description`]),S(`p`,mc,h(e.summaryText),1)]),S(`div`,hc,[S(`p`,gc,h(e.totalBytesLabel),1),S(`p`,_c,h(e.compressedBytesLabel),1),S(`p`,vc,h(e.budgetText),1)])]),S(`div`,yc,[(w(!0),P(O,null,c(e.metrics,e=>(w(),_(a.AppMetricTile,r({key:e.label},{ref_for:!0},e),null,16))),128))]),S(`div`,bc,[N(a.AppPackageFileTable,{files:e.topFiles},null,8,[`files`])])],2))),128))])])}var Sc=I(cc,[[`render`,xc]]),Cc=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:W,AppPanelHeader:Y,DashboardIcon:L};return Object.defineProperty(o,"__isScriptSetup",{enumerable:!1,value:!0}),o}}),wc={class:`grid min-h-0 min-w-0 gap-2 overflow-visible xl:h-full xl:grid-rows-[auto_minmax(0,1fr)] xl:overflow-hidden`},Tc={class:`rounded-lg border border-(--dashboard-border) bg-(--dashboard-panel) p-4 shadow-(--dashboard-shadow)`},Ec={class:`flex items-center gap-2`},Dc={key:0,class:`text-xs font-medium text-(--dashboard-accent)`},Oc={class:`h-3.5 w-3.5`},kc={class:`mt-3 grid gap-3 lg:grid-cols-[minmax(0,0.82fr)_minmax(0,1fr)]`},Ac={class:`rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-3`},jc={class:`mt-3 text-lg font-semibold text-(--dashboard-text)`},Mc={class:`mt-1 text-xs leading-5 text-(--dashboard-text-soft)`},Nc={class:`grid grid-cols-2 gap-2 md:grid-cols-4`},Pc={class:`grid max-h-[40rem] min-h-0 min-w-0 gap-2 overflow-y-auto pr-1 xl:max-h-none xl:grid-cols-3 xl:overflow-hidden xl:pr-0`},Fc={class:`text-sm font-semibold text-(--dashboard-text)`},Ic={class:`mt-1 text-xs leading-5 text-(--dashboard-text-soft)`},Lc={class:`mt-3 min-h-0 overflow-y-auto pr-1`},Rc={key:0,class:`rounded-md border border-dashed border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 py-4 text-sm text-(--dashboard-text-muted)`},zc=[`onClick`],Bc={class:`mt-0.5 flex h-4 w-4 items-center justify-center rounded border border-current text-[10px] leading-none`},Vc={class:`min-w-0`},Hc={class:`block text-sm font-medium text-(--dashboard-text)`},Uc={class:`mt-1 line-clamp-2 block text-xs leading-5 text-(--dashboard-text-muted)`};function Wc(e,n,i,a,o,s){return w(),P(`section`,wc,[S(`div`,Tc,[N(a.AppPanelHeader,{"icon-name":`metric-bookmark`,title:`PR 风险清单`},{meta:t(()=>[S(`div`,Ec,[i.copyStatus?(w(),P(`span`,Dc,h(i.copyStatus),1)):M(``,!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]||=e=>a.emit(`copy`)},[S(`span`,Oc,[N(a.DashboardIcon,{name:`metric-copy`})]),n[1]||=y(` 复制清单 `,-1)])])]),_:1}),S(`div`,kc,[S(`div`,Ac,[S(`span`,{class:k([`inline-flex rounded-full border px-2.5 py-1 text-[11px] font-medium uppercase tracking-[0.16em]`,a.getStatusClassName(i.checklist.status)])},h(i.checklist.label),3),S(`p`,jc,h(i.checklist.headline),1),S(`p`,Mc,h(i.checklist.description),1)]),S(`div`,Nc,[(w(!0),P(O,null,c(i.checklist.metrics,e=>(w(),_(a.AppMetricTile,r({key:e.label},{ref_for:!0},e),null,16))),128))])])]),S(`div`,Pc,[(w(!0),P(O,null,c(i.checklist.lanes,e=>(w(),P(`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`,Fc,h(e.title),1),S(`p`,Ic,h(e.description),1)]),S(`div`,Lc,[e.items.length===0?(w(),P(`div`,Rc,h(e.emptyText),1)):M(``,!0),(w(!0),P(O,null,c(e.items,e=>(w(),P(`button`,{key:e.id,type:`button`,class:k([`mb-2 grid w-full grid-cols-[1rem_minmax(0,1fr)] gap-2 rounded-md border px-3 py-2.5 text-left transition hover:border-(--dashboard-border-strong)`,a.getToneClassName(e.tone)]),onClick:t=>a.emit(`select`,e)},[S(`span`,Bc,h(e.checked?`✓`:``),1),S(`span`,Vc,[S(`span`,Hc,h(e.title),1),S(`span`,Uc,h(e.detail),1)])],10,zc))),128))])]))),128))])])}var Gc=I(Cc,[[`render`,Wc]]),Kc={noSemanticValidation:!0,noSuggestionDiagnostics:!0,noSyntaxValidation:!0},qc={diagnostics:!1};function Jc(e){e.typescript.javascriptDefaults.setDiagnosticsOptions(Kc),e.typescript.javascriptDefaults.setModeConfiguration(qc),e.typescript.typescriptDefaults.setDiagnosticsOptions(Kc),e.typescript.typescriptDefaults.setModeConfiguration(qc),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 Yc(e){return e===`dark`?`weapp-dashboard-dark`:`weapp-dashboard-light`}var Xc={css:ne,html:ie,javascript:oe,json:re,less:ne,scss:ne,typescript:oe},Zc=globalThis;Zc.MonacoEnvironment={getWorker:(e,t)=>new(Xc[t]??te)};function Qc(e){return`${e.packageId}:${e.file}`}function $c(e,t){return t.endsWith(`.wxml`)||t.endsWith(`.vue`)?`html`:t.endsWith(`.wxss`)?`css`:e===`plaintext`&&t.endsWith(`.json`)?`json`:e}function el(e){let t=e.indexOf(`?`);return t===-1?e:e.slice(0,t)}async function tl(e,t,n){let r=await se(e,t,n);return{...r,language:$c(r.language,r.path)}}function nl(e){let t=new Set;if(!e)return[];e.source&&t.add(el(e.source));for(let n of e.modules??[])(n.sourceType===`src`||n.sourceType===`workspace`||n.sourceType===`plugin`)&&t.add(el(n.source));return[...t].sort((e,t)=>e.localeCompare(t))}function rl(e){return e?e.replace(/\r\n?/g,`
15
15
  `).split(`
16
- `):[]}function el(e){return new TextEncoder().encode(e).byteLength}function tl(e){let t=new Map;for(let n of e)t.set(n,(t.get(n)??0)+1);return t}function nl(e,t){let n=$c(e),r=$c(t),i=tl(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=el(e),s=el(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 rl(e){return e===0?`无变化`:`${e>0?`+`:`-`}${z(Math.abs(e))}`}function il(e){return`${Math.round(e*100)}%`}function al(e){let t=e.unchangedLineRatio>=.7?`success`:e.unchangedLineRatio>=.35?`info`:`warning`,n=e.byteDelta>10240?`warning`:e.byteDelta<-1024?`success`:`info`,r=e.addedLines>e.removedLines*2&&e.addedLines>20?`warning`:e.removedLines>e.addedLines*2&&e.removedLines>20?`success`:`info`;return[{id:`retention`,label:`源码保留`,value:il(e.unchangedLineRatio),detail:t===`warning`?`源码行在产物中保留较少,建议检查编译注入、运行时包装或转译膨胀。`:t===`success`?`源码结构在产物中较容易追踪,适合继续逐段定位差异。`:`产物保留了部分源码结构,可结合 diff 继续确认主要变化段。`,tone:t},{id:`size`,label:`字节影响`,value:rl(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 ol(e){let t=e.insights??al(e.stats);return[`# dashboard 源码对比摘要`,``,`源码:${e.sourcePath}`,`产物:${e.artifactPath}`,``,`- 源码行数:${e.stats.sourceLines}`,`- 产物行数:${e.stats.artifactLines}`,`- 估算新增行:${e.stats.addedLines}`,`- 估算删除行:${e.stats.removedLines}`,`- 字节变化:${rl(e.stats.byteDelta)}`,`- 未变更行占比:${Math.round(e.stats.unchangedLineRatio*100)}%`,``,`## 洞察`,...t.map(e=>`- ${e.label}(${e.value}):${e.detail}`),``].join(`
17
- `)}function sl(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:Jc(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(()=>Qc(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?nl(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,Wc(n),n.editor.setTheme(Gc(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([Zc(`source`,n),Zc(`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(Gc(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 cl=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}=sl({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:rl(p.value.byteDelta)}]:[]),D=C(()=>p.value?`${z(p.value.sourceBytes)} → ${z(p.value.artifactBytes)}`:``),O=C(()=>p.value?al(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(ol({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}}),ll={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)`},ul={class:`grid gap-3`},dl={class:`flex flex-wrap items-center justify-between gap-3`},fl={class:`mt-1 text-xs text-(--dashboard-text-soft)`},pl={class:`flex items-center gap-2`},ml={key:0,class:`text-xs font-medium text-(--dashboard-accent)`},hl=[`disabled`],gl=[`disabled`],_l={class:`grid gap-2 lg:grid-cols-2`},vl=[`value`],yl=[`value`],bl={key:0,class:`grid gap-2 lg:grid-cols-[minmax(0,1fr)_auto] lg:items-center`},xl={class:`grid grid-cols-2 gap-2 xl:grid-cols-4`},Sl={class:`text-xs text-(--dashboard-text-soft)`},Cl={key:1,class:`grid gap-2 lg:grid-cols-3`},wl={class:`flex items-start justify-between gap-3`},Tl={class:`text-xs font-semibold uppercase tracking-[0.14em] opacity-80`},El={class:`shrink-0 text-sm font-semibold`},Dl={class:`mt-2 line-clamp-2 text-xs leading-5 opacity-80`},Ol={class:`min-h-0 overflow-hidden rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted)`},kl={ref:`editorElement`,class:`h-full min-h-96`};function Al(e,n,i,o,s,u){return w(),F(`section`,ll,[S(`div`,ul,[S(`div`,dl,[S(`div`,null,[n[3]||=S(`h2`,{class:`text-lg font-semibold text-(--dashboard-text)`},` 源码对比 `,-1),S(`p`,fl,c(o.statusText),1)]),S(`div`,pl,[o.copyStatus?(w(),F(`span`,ml,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,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:o.loading||!o.selectedArtifactKey||!o.selectedSourcePath,onClick:n[0]||=(...e)=>o.loadComparison&&o.loadComparison(...e)},` 刷新 `,8,gl)])]),S(`div`,_l,[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,vl))),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,yl))),128))],512),[[E,o.selectedArtifactKey]])]),o.compareStats?(w(),F(`div`,bl,[S(`div`,xl,[(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`,Sl,c(o.compareSizeText),1)])):N(``,!0),o.compareInsights.length?(w(),F(`div`,Cl,[(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`,wl,[S(`p`,Tl,c(e.label),1),S(`p`,El,c(e.value),1)]),S(`p`,Dl,c(e.detail),1)],2))),128))])):N(``,!0)]),S(`div`,Ol,[t(S(`div`,kl,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 jl=B(cl,[[`render`,Al]]),Ml=`Treemap`,Nl=`从包体到文件再到模块,直接定位体积热点。`,Pl=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:Ml,chartDescription:Nl,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}}),Fl={class:`flex items-center gap-2`},Il=[`disabled`],Ll={class:`mb-2 flex flex-wrap items-center justify-between gap-2 px-2`},Rl={class:`flex flex-wrap gap-1.5`},zl=[`disabled`,`onClick`],Bl={class:`flex flex-wrap items-center gap-2 text-[11px] text-(--dashboard-text-soft)`},Vl={class:`relative min-h-0 flex-1 overflow-hidden rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-2`};function Hl(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`,Fl,[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,Il),S(`button`,{class:a(r.getChartBadgeClassName()),type:`button`,onClick:t[1]||=e=>r.emit(`resetFocus`)},` 重置 `,2)])]),_:1}),S(`div`,Ll,[S(`div`,Rl,[(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,zl))),128))]),S(`div`,Bl,[(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`,Vl,[S(`div`,{ref:r.handleChartRef,class:`h-full min-h-0 w-full`},null,512),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 Ul=B(Pl,[[`render`,Hl]]),Wl=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:qn,AnalyzeDiagnosticsSection:Wi,AnalyzeDraggableGrid:xt,AnalyzeOverviewPanel:to,ModulesPanel:os,PackagesPanel:vc,PrReviewChecklistPanel:Vc,SourceArtifactComparePanel:jl,TreemapCard:Ul};return Object.defineProperty(r,"__isScriptSetup",{enumerable:!1,value:!0}),r}}),Gl={key:0,class:`min-h-0`},Kl={key:1,class:`min-h-0`},ql={key:2,class:`min-h-0`},Jl={key:3,class:`min-h-0`},Yl={key:4,class:`min-h-0`},Xl={key:5,class:`min-h-0`},Zl={key:6,class:`min-h-0`},Ql={key:7,class:`min-h-0`};function $l(e,t,n,r,i,a){return n.activeTab===`overview`?(w(),F(`section`,Gl,[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`,Kl,[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`,ql,[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`,Jl,[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`,Yl,[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`,Xl,[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`,Zl,[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`,Ql,[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 eu=B(Wl,[[`render`,$l]]),tu=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}}),nu={class:`h-4.5 w-4.5`},ru={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)`},iu=[`onClick`],au={class:`mt-0.5 h-4.5 w-4.5 text-(--dashboard-text-soft)`},ou={class:`min-w-0`},su={class:`block font-medium`},cu={class:`mt-0.5 block text-xs leading-5 text-(--dashboard-text-soft)`};function lu(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`,nu,[p(r.DashboardIcon,{name:`nav-menu`})]),t[2]||=P(` 更多 `,-1)],2),n.open?(w(),F(`div`,ru,[(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`,au,[p(r.DashboardIcon,{name:e.iconName},null,8,[`name`])]),S(`span`,ou,[S(`span`,su,c(e.label),1),S(`span`,cu,c(e.description),1)])],8,iu)),64))])):N(``,!0)])}var uu=B(tu,[[`render`,lu]]),du=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:uu,AppInfoPill:se,DashboardIcon:R};return Object.defineProperty(r,"__isScriptSetup",{enumerable:!1,value:!0}),r}}),fu={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)`},pu={class:`flex min-w-0 flex-1 flex-nowrap items-center gap-2 overflow-x-auto pb-0.5`},mu={class:`h-4.5 w-4.5`},hu={class:`h-4.5 w-4.5`},gu=[`disabled`],_u={class:`h-4.5 w-4.5`};function vu(e,t,n,i,o,s){return w(),F(`section`,fu,[S(`div`,pu,[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`,mu,[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`,hu,[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`,_u,[p(i.DashboardIcon,{name:`metric-reset`})]),t[12]||=P(` 重置视图 `,-1)],10,gu)):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 yu=B(du,[[`render`,vu]]);function bu(e){return e===`blocked`?`Blocked`:e===`review`?`Review`:`Ready`}function xu(e){return e===`blocked`?`PR 合并前仍有阻断项`:e===`review`?`建议完成复核后再合并`:`当前清单未发现发布风险`}function Su(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 Cu(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 wu(e){return e.items.length===0?[`- [x] ${e.emptyText}`]:e.items.map(e=>`- [${e.checked?`x`:` `}] ${e.title}:${e.detail}`)}function Tu(e){return[`## PR 风险清单`,``,`状态:${e.label}`,e.headline,``,...e.metrics.map(e=>`- ${e.label}:${e.value}`),``,...e.lanes.flatMap(e=>[`### ${e.title}`,``,...wu(e),``])].join(`
18
- `)}function Eu(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(Su),emptyText:`没有阻断项。`},{key:`verification`,title:`评审复核`,description:`需要 reviewer 主动确认的高风险变化。`,items:n.slice(0,6).map(Su),emptyText:`没有需要额外复核的风险。`},{key:`followups`,title:`后续跟进`,description:`来自处理清单和剩余建议动作的后续事项。`,items:[...r.slice(0,4).map(Cu),...o.map(Su)].slice(0,6),emptyText:i.length>0?`处理清单已完成。`:`没有待跟进事项。`}],l={status:s,label:bu(s),headline:xu(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:Tu(l)}}var Z=`\0`,Du=[{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 Ou(e){return`package${Z}${e}`}function ku(e,t){return`file${Z}${e}${Z}${t}`}function Au(e,t,n){return`module${Z}${e}${Z}${t}${Z}${n}`}function ju(e,t){return`asset${Z}${e}${Z}${t}`}function Mu(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 Nu(e){return`${(e.ratio*100).toFixed(1)}%`}function Pu(e,t,n){if(t&&n)return e.find(e=>e.packageId===t&&e.file===n)}function Fu(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:Au(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 Iu(e,t,n){let r=Pu(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:Au(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 Lu(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:Nu(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(Iu(n,e.largestFiles.value,e.packageInsights.value));for(let n of e.duplicateModules.value.filter(e=>e.estimatedSavingBytes>0).slice(0,12))t.push(Fu(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 Ru(e){return e.filter(e=>e!==void 0&&e!==``).join(` `).toLowerCase()}function zu(e,t,n){return e.find(e=>e.id===t||e.label===n)}function Bu(e,t,n){if(t&&n)return e.find(e=>e.packageId===t&&e.file===n)}function Vu(e){return{key:`package:${e.id}`,kind:`package`,title:e.label,meta:`${V(e.type)} · ${e.fileCount} 个产物 · ${e.moduleCount} 个模块`,value:z(e.totalBytes),keywords:Ru([e.id,e.label,e.type,e.totalBytes]),tab:`packages`,packageMeta:{kind:`package`,nodeId:Ou(e.id),packageId:e.id,packageLabel:e.label,packageType:e.type,fileCount:e.fileCount,totalBytes:e.totalBytes}}}function Hu(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:Ru([e.packageId,e.packageLabel,e.file,e.type,e.source,e.size]),tab:`files`,file:e}}function Uu(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:Ru([e.id,e.label,e.scope,e.status,e.currentBytes]),tab:`files`,warning:e}}function Wu(e,t){let n=e.packages[0],r=n?.files[0]??``,i=zu(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:Ru([e.id,e.source,e.sourceType,e.packageCount,e.packages.map(e=>e.packageLabel).join(` `)]),tab:`modules`,moduleMeta:n&&i?{kind:`module`,nodeId:Au(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 Gu(e,t,n){let r=Bu(t,e.packageId,e.file),i=zu(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:Ru([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:Au(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 Ku(e){return{key:`action:${e.key}`,kind:`action`,title:e.title,meta:e.meta,value:e.value,keywords:Ru([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 qu(e){return{commandItems:C(()=>[...e.actionItems.value.map(Ku),...e.budgetWarnings.value.map(Uu),...e.packageInsights.value.map(Vu),...e.largestFiles.value.map(Hu),...e.duplicateModules.value.map(t=>Wu(t,e.packageInsights.value)),...e.incrementAttribution.value.map(t=>Gu(t,e.largestFiles.value,e.packageInsights.value))])}}var Ju=2097152;function Q(e){return e.size??0}function Yu(e){return e.brotliSize??e.gzipSize??fe(Q(e),e.file,e.type)}function Xu(e){return typeof e.brotliSize==`number`||typeof e.gzipSize==`number`?`real`:`estimated`}function Zu(e,t){return`${e}\u0000${t}`}function Qu(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+=Yu(t),n.set(Zu(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 $u(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 ed(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 td(e){if(e!==`virtual`)return Ju}function nd(e,t){let n=t.metadata?.budgets;if(!n)return td(e);if(e===`main`)return n.mainBytes;if(e===`subPackage`)return n.subPackageBytes;if(e===`independent`)return n.independentBytes}function rd(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 id(e){return e>=1048576?`${(e/1024/1024).toFixed(e%1048576==0?0:2)} MB`:e>=1024?`${(e/1024).toFixed(e%1024==0?0:2)} KB`:`${e} B`}function ad(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=rd({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=nd(n.type,e);if(!i)continue;let a=rd({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 od(e){let t=e?.metadata?.budgets,n=t?.source??`default`;return[{key:`total`,label:`总包预算`,value:`${id(t?.totalBytes??20971520)}`,source:n},{key:`main`,label:`主包预算`,value:`${id(t?.mainBytes??2097152)}`,source:n},{key:`subPackage`,label:`分包预算`,value:`${id(t?.subPackageBytes??2097152)}`,source:n},{key:`independent`,label:`独立分包预算`,value:`${id(t?.independentBytes??2097152)}`,source:n}]}function sd(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 cd(e,t){return e===`第三方依赖`?`检查依赖边界或公共入口。`:e===`WeVu / runtime`?`排查组件和 API 引用边界。`:e===`样式资源`?`检查样式复用和生成范围。`:t?`确认分包归属和懒加载边界。`:`对比新增引用和共享模块。`}function ld(e){if(!e.result||!e.previousResult)return[];let t=[],n=$u(e.result);for(let n of e.result.packages)for(let r of n.files){let i=Q(r),a=e.previousMaps.fileBytes.get(Zu(n.id,r.file))??0,o=i-a;if(o<=0)continue;let s=sd(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:cd(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=sd(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:cd(u,a===0)})}return t.sort((e,t)=>t.deltaBytes-e.deltaBytes||e.category.localeCompare(t.category)||e.label.localeCompare(t.label))}function ud(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 dd(e,t){return{packageId:t.packageId,packageLabel:e.get(t.packageId)??t.packageId,files:t.files}}function fd(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 pd(e,t){return{sourceType:e,sourceCategory:t,count:0,bytes:0}}function md(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 hd(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=>dd(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:md(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 gd(e,t){let n=new Map;for(let r of e?.modules??[]){let e=t.get(r.id),i=fd(r.source,r.sourceType),a=`${r.sourceType}:${i}`,o=n.get(a)??pd(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 _d(e,t){return{label:e,value:t}}function vd(e,t,n){let r=Q(t),i=n.get(Zu(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:Yu(t),compressedSizeSource:Xu(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 yd(e,t,n){let r=Q(t),i=n.get(Zu(e,t.file));return{file:t.file,size:r,gzipSize:t.gzipSize,brotliSize:t.brotliSize,compressedSize:Yu(t),compressedSizeSource:Xu(t),sizeDeltaBytes:typeof i==`number`?r-i:void 0,type:t.type,from:t.from,isEntry:!!t.isEntry,moduleCount:t.modules?.length??0}}function bd(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+Yu(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 xd(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])=>_d(e,t)).sort((e,t)=>t.value-e.value||e.label.localeCompare(t.label))}function Sd(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=>yd(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+Yu(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 Cd(e,t){let n=[];for(let r of e?.packages??[])for(let e of r.files)n.push(vd(r,e,t));return n.sort((e,t)=>t.size-e.size||e.file.localeCompare(t.file)).slice(0,18)}function wd(e,t){let n=C(()=>Qu(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(()=>ed(e.value)),o=C(()=>ad(e.value)),s=C(()=>od(e.value)),c=C(()=>ld({result:e.value,previousResult:t?.value,previousMaps:n.value,moduleInfoMap:a.value})),l=C(()=>ud(c.value));return{summary:C(()=>bd({result:e.value,previousMaps:n.value,budgetWarnings:o.value})),packageTypeSummary:C(()=>xd(e.value)),packageInsights:C(()=>Sd(e.value,n.value)),largestFiles:C(()=>Cd(e.value,n.value.fileBytes)),duplicateModules:C(()=>hd({result:e.value,moduleInfoMap:a.value,packageLabelMap:r.value,packageTypeMap:i.value})),moduleSourceSummary:C(()=>gd(e.value,a.value)),budgetWarnings:o,budgetLimitItems:s,incrementAttribution:c,incrementSummary:l,subPackages:C(()=>e.value?.subPackages??[])}}var Td=[`action`,`file`,`budget`],Ed=[`critical`,`warning`,`info`,`success`],Dd=[`overview`,`diagnostics`,`treemap`,`files`,`source`,`packages`,`modules`];function Od(){return new Date().toISOString()}function kd(e,t){return typeof e==`string`&&t.includes(e)}function Ad(e){if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.id==`string`&&kd(t.targetKind,Td)&&typeof t.targetKey==`string`&&typeof t.title==`string`&&typeof t.meta==`string`&&kd(t.tone,Ed)&&kd(t.tab,Dd)&&typeof t.createdAt==`string`}function jd(e){if(!Array.isArray(e))return[];let t=new Map;for(let n of e)Ad(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 Md(e,t=Od()){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 Nd(e){let t=jd(e).map(e=>`| ${e.completedAt?`完成`:`待处理`} | ${e.title.replaceAll(`|`,`\\|`)} | ${e.meta.replaceAll(`|`,`\\|`)} | ${e.value??`-`} | ${e.tab} |`);return[`# dashboard 处理清单`,``,`待处理:${e.filter(e=>!e.completedAt).length}`,`已完成:${e.filter(e=>e.completedAt).length}`,``,`| 状态 | 事项 | 说明 | 数值 | 视图 |`,`| --- | --- | --- | ---: | --- |`,t.join(`
16
+ `):[]}function il(e){return new TextEncoder().encode(e).byteLength}function al(e){let t=new Map;for(let n of e)t.set(n,(t.get(n)??0)+1);return t}function ol(e,t){let n=rl(e),r=rl(t),i=al(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=il(e),s=il(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 sl(e){return e===0?`无变化`:`${e>0?`+`:`-`}${R(Math.abs(e))}`}function cl(e){return`${Math.round(e*100)}%`}function ll(e){let t=e.unchangedLineRatio>=.7?`success`:e.unchangedLineRatio>=.35?`info`:`warning`,n=e.byteDelta>10240?`warning`:e.byteDelta<-1024?`success`:`info`,r=e.addedLines>e.removedLines*2&&e.addedLines>20?`warning`:e.removedLines>e.addedLines*2&&e.removedLines>20?`success`:`info`;return[{id:`retention`,label:`源码保留`,value:cl(e.unchangedLineRatio),detail:t===`warning`?`源码行在产物中保留较少,建议检查编译注入、运行时包装或转译膨胀。`:t===`success`?`源码结构在产物中较容易追踪,适合继续逐段定位差异。`:`产物保留了部分源码结构,可结合 diff 继续确认主要变化段。`,tone:t},{id:`size`,label:`字节影响`,value:sl(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 ul(e){let t=e.insights??ll(e.stats);return[`# dashboard 源码对比摘要`,``,`源码:${e.sourcePath}`,`产物:${e.artifactPath}`,``,`- 源码行数:${e.stats.sourceLines}`,`- 产物行数:${e.stats.artifactLines}`,`- 估算新增行:${e.stats.addedLines}`,`- 估算删除行:${e.stats.removedLines}`,`- 字节变化:${sl(e.stats.byteDelta)}`,`- 未变更行占比:${Math.round(e.stats.unchangedLineRatio*100)}%`,``,`## 洞察`,...t.map(e=>`- ${e.label}(${e.value}):${e.detail}`),``].join(`
17
+ `)}function dl(e){let t=f(),n=f(``),r=f(``),i=m(null),a=m(null),o=f(``),s=f(!1),c=m(null),u,d,p,h=0,g=!1,_=C(()=>e.files.value.map(e=>({key:Qc(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(()=>nl(v.value)),b=C(()=>s.value?`加载中`:o.value?o.value:i.value&&a.value?`${i.value.path} ↔ ${a.value.path}`:`等待文件`),x=C(()=>i.value&&a.value?ol(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(){u?.setModel(null),d?.dispose(),p?.dispose(),d=void 0,p=void 0}function E(e,t,i,a){return!g&&e===h&&de.value===t&&r.value===i&&n.value===a}function D(){let e=c.value;e&&u&&i.value&&a.value&&(w(),d=e.editor.createModel(i.value.content,i.value.language,e.Uri.parse(`weapp-source://model/${encodeURIComponent(i.value.path)}`)),p=e.editor.createModel(a.value.content,a.value.language,e.Uri.parse(`weapp-artifact://model/${encodeURIComponent(a.value.path)}`)),u.setModel({original:d,modified:p}))}async function O(){let n=t.value;if(g||c.value||!n)return;let r=await ae(()=>import(`./monaco.js`).then(e=>e.o),__vite__mapDeps([0]),import.meta.url);g||t.value!==n||c.value||(c.value=r,Jc(r),r.editor.setTheme(Yc(e.theme.value)),u=r.editor.createDiffEditor(n,{automaticLayout:!0,minimap:{enabled:!1},originalEditable:!1,readOnly:!0,renderSideBySide:!0,scrollBeyondLastLine:!1}))}async function k(){if(g)return;let t=++h,c=r.value,u=v.value,d=de.value,f=n.value;if(d===null||!c||!u){i.value=null,a.value=null,o.value=y.value.length===0?`无源码候选`:``,s.value=!1,w();return}s.value=!0,o.value=``,i.value=null,a.value=null,w(),e.onSelectFile(u);try{let[e,n]=await Promise.all([tl(`source`,c,d),tl(`artifact`,u.file,d)]);if(!E(t,d,c,f)||(i.value=e,a.value=n,await l(),!E(t,d,c,f))||(await O(),!E(t,d,c,f)))return;D()}catch(e){if(!E(t,d,c,f))return;i.value=null,a.value=null,w(),o.value=e instanceof Error?e.message:`文件读取失败`}finally{E(t,d,c,f)&&(s.value=!1)}}return F(()=>[e.activeFileKey.value,_.value.map(e=>e.key).join(`\0`)],()=>{n.value=S()},{immediate:!0}),F(y,e=>{r.value=e[0]??``},{immediate:!0}),F([n,r,de],()=>{k()},{immediate:!0}),F(e.theme,e=>{c.value?.editor.setTheme(Yc(e))}),T(()=>{g=!0,h+=1,w(),u?.dispose()}),{artifactContent:a,artifactOptions:_,compareStats:x,editorElement:t,loadComparison:k,loadError:o,loading:s,selectedArtifactKey:n,selectedSourcePath:r,sourceContent:i,sourceOptions:y,statusText:b}}var fl=n({__name:`SourceArtifactComparePanel`,props:{activeFileKey:{},files:{},theme:{}},emits:[`selectFile`],setup(e,{expose:t,emit:n}){t();let r=e,i=n,{activeFileKey:o,files:s,theme:c}=a(r),l=f(``),u=null,{artifactContent:d,artifactOptions:p,compareStats:m,editorElement:h,loadComparison:g,loadError:_,loading:v,selectedArtifactKey:y,selectedSourcePath:b,sourceContent:x,sourceOptions:S,statusText:w}=dl({activeFileKey:o,files:s,theme:c,onSelectFile(e){i(`selectFile`,e)}}),E=C(()=>[{label:`源码文件`,value:``},...S.value.map(e=>({label:e,value:e}))]),D=C(()=>p.value.map(e=>({label:e.label,value:e.key}))),O=C(()=>m.value?[{label:`源码行数`,value:String(m.value.sourceLines)},{label:`产物行数`,value:String(m.value.artifactLines)},{label:`新增 / 删除`,value:`${m.value.addedLines} / ${m.value.removedLines}`},{label:`字节变化`,value:sl(m.value.byteDelta)}]:[]),k=C(()=>m.value?`${R(m.value.sourceBytes)} → ${R(m.value.artifactBytes)}`:``),ee=C(()=>m.value?ll(m.value):[]);function A(e){return e===`warning`?`border-amber-300/60 bg-amber-50 text-amber-800 dark:border-amber-500/25 dark:bg-amber-500/10 dark:text-amber-200`:e===`success`?`border-emerald-300/60 bg-emerald-50 text-emerald-800 dark:border-emerald-500/25 dark:bg-emerald-500/10 dark:text-emerald-200`:`border-(--dashboard-border) bg-(--dashboard-panel-muted) text-(--dashboard-text)`}function j(e){l.value=e,u&&clearTimeout(u),u=setTimeout(()=>{l.value=``,u=null},1800)}async function M(){if(m.value&&x.value&&d.value)try{await V(ul({sourcePath:x.value.path,artifactPath:d.value.path,stats:m.value,insights:ee.value})),j(`已复制`)}catch{j(`复制失败`)}}T(()=>{u&&clearTimeout(u)});let N={props:r,emit:i,activeFileKey:o,files:s,theme:c,copyStatus:l,get copyStatusTimer(){return u},set copyStatusTimer(e){u=e},artifactContent:d,artifactOptions:p,compareStats:m,editorElement:h,loadComparison:g,loadError:_,loading:v,selectedArtifactKey:y,selectedSourcePath:b,sourceContent:x,sourceOptions:S,statusText:w,sourceSelectOptions:E,artifactSelectOptions:D,compareMetricItems:O,compareSizeText:k,compareInsights:ee,getInsightClassName:A,setCopyStatus:j,copyCompareReport:M,AppEmptyState:U,AppMetricTile:W,AppSelect:B};return Object.defineProperty(N,"__isScriptSetup",{enumerable:!1,value:!0}),N}}),pl={class:`grid min-h-0 min-w-0 gap-3 overflow-visible rounded-lg border border-(--dashboard-border) bg-(--dashboard-panel) p-3 shadow-(--dashboard-shadow) xl:h-full xl:grid-rows-[auto_minmax(0,1fr)] xl:overflow-hidden`},ml={class:`grid gap-3`},hl={class:`flex flex-wrap items-center justify-between gap-3`},gl={class:`mt-1 text-xs text-(--dashboard-text-soft)`},_l={class:`flex items-center gap-2`},vl={key:0,class:`text-xs font-medium text-(--dashboard-accent)`},yl=[`disabled`],bl=[`disabled`],xl={class:`grid gap-2 lg:grid-cols-2`},Sl={key:0,class:`grid gap-2 lg:grid-cols-[minmax(0,1fr)_auto] lg:items-center`},Cl={class:`grid grid-cols-2 gap-2 xl:grid-cols-4`},wl={class:`text-xs text-(--dashboard-text-soft)`},Tl={key:1,class:`grid gap-2 lg:grid-cols-3`},El={class:`flex items-start justify-between gap-3`},Dl={class:`text-xs font-semibold uppercase tracking-[0.14em] opacity-80`},Ol={class:`shrink-0 text-sm font-semibold`},kl={class:`mt-2 line-clamp-2 text-xs leading-5 opacity-80`},Al={class:`relative min-h-96 min-w-0 overflow-hidden rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) xl:min-h-0`},jl={ref:`editorElement`,class:`absolute inset-0`};function Ml(e,n,i,a,o,s){return w(),P(`section`,pl,[S(`div`,ml,[S(`div`,hl,[S(`div`,null,[n[3]||=S(`h2`,{class:`text-lg font-semibold text-(--dashboard-text)`},` 源码对比 `,-1),S(`p`,gl,h(a.statusText),1)]),S(`div`,_l,[a.copyStatus?(w(),P(`span`,vl,h(a.copyStatus),1)):M(``,!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.compareStats,onClick:a.copyCompareReport},` 复制摘要 `,8,yl),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.loading||!a.selectedArtifactKey||!a.selectedSourcePath,onClick:n[0]||=(...e)=>a.loadComparison&&a.loadComparison(...e)},` 刷新 `,8,bl)])]),S(`div`,xl,[N(a.AppSelect,{modelValue:a.selectedSourcePath,"onUpdate:modelValue":n[1]||=e=>a.selectedSourcePath=e,label:`选择源码文件`,options:a.sourceSelectOptions},null,8,[`modelValue`,`options`]),N(a.AppSelect,{modelValue:a.selectedArtifactKey,"onUpdate:modelValue":n[2]||=e=>a.selectedArtifactKey=e,label:`选择构建产物`,options:a.artifactSelectOptions},null,8,[`modelValue`,`options`])]),a.compareStats?(w(),P(`div`,Sl,[S(`div`,Cl,[(w(!0),P(O,null,c(a.compareMetricItems,e=>(w(),_(a.AppMetricTile,r({key:e.label},{ref_for:!0},e),null,16))),128))]),S(`p`,wl,h(a.compareSizeText),1)])):M(``,!0),a.compareInsights.length?(w(),P(`div`,Tl,[(w(!0),P(O,null,c(a.compareInsights,e=>(w(),P(`article`,{key:e.id,class:k([`rounded-md border px-3 py-2.5`,a.getInsightClassName(e.tone)])},[S(`div`,El,[S(`p`,Dl,h(e.label),1),S(`p`,Ol,h(e.value),1)]),S(`p`,kl,h(e.detail),1)],2))),128))])):M(``,!0)]),S(`div`,Al,[p(S(`div`,jl,null,512),[[b,a.sourceContent&&a.artifactContent]]),!a.sourceContent||!a.artifactContent?(w(),_(a.AppEmptyState,{key:0,class:`m-3 h-[calc(100%-1.5rem)]`},{default:t(()=>[y(h(a.loadError||`暂无可对比文件。`),1)]),_:1})):M(``,!0)])])}var Nl=I(fl,[[`render`,Ml]]),Pl=`Treemap`,Fl=`面积代表体积,颜色区分分包,风险仅由边框标记;点击节点可下钻。`,Il=n({__name:`TreemapCard`,props:{bindChartRef:{type:Function},canFocusSelected:{type:Boolean},filterMode:{},filterOptions:{},canUseSelectedPackageFilter:{type:Boolean},isEmpty:{type:Boolean}},emits:[`focusSelected`,`resetFocus`,`updateFilterMode`],setup(e,{expose:t,emit:n}){t();let r=e,i=n,a=[{label:`普通`,color:`#475569`},{label:`关注`,color:`#fbbf24`},{label:`高风险`,color:`#fb7185`}];function o(){return ge({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:Pl,chartDescription:Fl,riskLegend:a,getChartBadgeClassName:o,canUseFilter:s,handleChartRef:c,get pillButtonStyles(){return ge},get surfaceStyles(){return H},AppEmptyState:U,AppPanelHeader:Y};return Object.defineProperty(l,"__isScriptSetup",{enumerable:!1,value:!0}),l}}),Ll={class:`flex items-center gap-2`},Rl=[`disabled`],zl={class:`mb-2 flex flex-wrap items-center justify-between gap-2 px-2`},Bl={class:`flex flex-wrap gap-1.5`},Vl=[`disabled`,`onClick`],Hl={class:`flex flex-wrap items-center gap-2 text-[11px] text-(--dashboard-text-soft)`},Ul={class:`relative min-h-0 flex-1 overflow-hidden rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-2`};function Wl(e,n,r,i,a,o){return w(),P(`div`,{class:k([i.surfaceStyles({padding:`sm`}),`flex h-full min-h-[36rem] min-w-0 flex-col overflow-hidden`])},[N(i.AppPanelHeader,{class:`mb-2 px-2`,"icon-name":`treemap`,title:i.chartTitle,description:i.chartDescription},{meta:t(()=>[S(`div`,Ll,[S(`button`,{class:k([i.getChartBadgeClassName(),r.canFocusSelected?void 0:`cursor-not-allowed opacity-45`]),disabled:!r.canFocusSelected,type:`button`,onClick:n[0]||=e=>i.emit(`focusSelected`)},` 聚焦选中 `,10,Rl),S(`button`,{class:k(i.getChartBadgeClassName()),type:`button`,onClick:n[1]||=e=>i.emit(`resetFocus`)},` 重置 `,2)])]),_:1}),S(`div`,zl,[S(`div`,Bl,[(w(!0),P(O,null,c(r.filterOptions,e=>(w(),P(`button`,{key:e.value,class:k([i.pillButtonStyles({kind:`badge`,active:r.filterMode===e.value}),i.canUseFilter(e)?void 0:`cursor-not-allowed opacity-45`]),disabled:!i.canUseFilter(e),type:`button`,onClick:t=>i.emit(`updateFilterMode`,e.value)},h(e.label),11,Vl))),128))]),S(`div`,Hl,[n[2]||=S(`span`,{class:`font-medium text-(--dashboard-text-muted)`},`风险边框`,-1),(w(),P(O,null,c(i.riskLegend,e=>S(`span`,{key:e.label,class:`inline-flex items-center gap-1.5`},[S(`span`,{class:`h-2.5 w-2.5 rounded-full border-2 bg-transparent`,style:g({borderColor:e.color})},null,4),y(` `+h(e.label),1)])),64))])]),S(`div`,Ul,[S(`div`,{ref:i.handleChartRef,class:`absolute inset-2`},null,512),r.isEmpty?(w(),_(i.AppEmptyState,{key:0,class:`absolute inset-3 z-10 grid place-items-center`,compact:``},{default:t(()=>[...n[3]||=[y(` 当前过滤条件下没有可展示节点。 `,-1)]]),_:1})):M(``,!0)])],2)}var Gl=I(Il,[[`render`,Wl]]),Kl=n({__name:`AnalyzeResultSections`,props:{actionItems:{},activeBudgetWarningId:{},activeLargestFileKey:{},activeTab:{},activeWorkQueueItemId:{},baselineSnapshotId:{},budgetConfig:{},budgetWarnings:{},canUseSelectedPackageFilter:{type:Boolean},comparisonMode:{},copyStatus:{},filteredDuplicateModules:{},filteredLargestFiles:{},historySnapshots:{},incrementAttribution:{},incrementSummary:{},isTreemapEmpty:{type:Boolean},largestFiles:{},metricPackageTypeSummary:{},moduleSourceSummary:{},modulesLayoutItems:{},overviewLayoutItems:{},packageInsights:{},packagesLayoutItems:{},prReviewChecklist:{},queuedActionKeys:{},reviewLayoutItems:{},result:{},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,ChunkGraphPanel:d(()=>ae(()=>import(`./ChunkGraphPanel.js`),__vite__mapDeps([0,1]),import.meta.url)),AnalyzeDetailsPanel:qn,AnalyzeDiagnosticsSection:Qi,AnalyzeDraggableGrid:Ct,AnalyzeOverviewPanel:co,ModulesPanel:ds,PackagesPanel:Sc,PrReviewChecklistPanel:Gc,SourceArtifactComparePanel:Nl,TreemapCard:Gl};return Object.defineProperty(r,"__isScriptSetup",{enumerable:!1,value:!0}),r}}),ql={key:0,class:`min-h-0`},Jl={key:1,class:`min-h-0`},Yl={key:2,class:`min-h-0`},Xl={key:3,class:`min-h-0`},Zl={key:4,class:`min-h-0`},Ql={key:5,class:`min-h-0`},$l={key:6,class:`min-h-0`},eu={key:7,class:`min-h-0`},tu={key:8,class:`min-h-0`};function nu(e,n,r,i,a,o){return r.activeTab===`overview`?(w(),P(`section`,ql,[N(i.AnalyzeDraggableGrid,{"grid-class":`grid h-full min-h-0 min-w-0 gap-2 overflow-x-hidden overflow-y-auto xl:overflow-hidden`,items:r.overviewLayoutItems,"storage-key":`weapp-vite:dashboard:analyze-layout:overview`},{metrics:t(()=>[N(i.AnalyzeOverviewPanel,{"action-items":r.actionItems,cards:r.topCards,"largest-files":r.largestFiles,"package-insights":r.packageInsights,"package-type-summary":r.metricPackageTypeSummary,onCopyReport:n[0]||=e=>i.emit(`copyPr`),onSelectAction:n[1]||=e=>i.emit(`selectAction`,e),onSelectFile:n[2]||=e=>i.emit(`selectFile`,e),onSelectPackage:n[3]||=e=>i.emit(`selectPackage`,e)},null,8,[`action-items`,`cards`,`largest-files`,`package-insights`,`package-type-summary`])]),_:1},8,[`items`])])):r.activeTab===`diagnostics`?(w(),P(`section`,Jl,[N(i.AnalyzeDiagnosticsSection,{"action-items":r.actionItems,"active-work-queue-item-id":r.activeWorkQueueItemId,"baseline-snapshot-id":r.baselineSnapshotId,"comparison-mode":r.comparisonMode,"history-snapshots":r.historySnapshots,"queued-action-keys":r.queuedActionKeys,"selected-action-key":r.selectedActionKey,"work-queue-items":r.workQueueItems,onAddActionToQueue:n[4]||=e=>i.emit(`addActionToQueue`,e),onClearCompletedWorkQueue:n[5]||=e=>i.emit(`clearCompletedWorkQueue`),onCopyPr:n[6]||=e=>i.emit(`copyPr`),onCopyWorkQueue:n[7]||=e=>i.emit(`copyWorkQueue`),onRemoveWorkQueueItem:n[8]||=e=>i.emit(`removeWorkQueueItem`,e),onSelectAction:n[9]||=e=>i.emit(`selectAction`,e),onSelectWorkQueueItem:n[10]||=e=>i.emit(`selectWorkQueueItem`,e),onSetBaseline:n[11]||=e=>i.emit(`setBaseline`,e),onSetComparisonMode:n[12]||=e=>i.emit(`setComparisonMode`,e),onToggleWorkQueueItem:n[13]||=e=>i.emit(`toggleWorkQueueItem`,e)},null,8,[`action-items`,`active-work-queue-item-id`,`baseline-snapshot-id`,`comparison-mode`,`history-snapshots`,`queued-action-keys`,`selected-action-key`,`work-queue-items`])])):r.activeTab===`review`?(w(),P(`section`,Yl,[N(i.AnalyzeDraggableGrid,{"grid-class":`grid h-full min-h-0 min-w-0 gap-2 overflow-x-hidden overflow-y-auto xl:overflow-hidden`,items:r.reviewLayoutItems,"storage-key":`weapp-vite:dashboard:analyze-layout:review`},{review:t(()=>[N(i.PrReviewChecklistPanel,{checklist:r.prReviewChecklist,"copy-status":r.copyStatus,onCopy:n[14]||=e=>i.emit(`copyReviewChecklist`),onSelect:n[15]||=e=>i.emit(`selectReviewChecklistItem`,e)},null,8,[`checklist`,`copy-status`])]),_:1},8,[`items`])])):r.activeTab===`graph`?(w(),P(`section`,Xl,[N(i.ChunkGraphPanel,{result:r.result,theme:r.theme},null,8,[`result`,`theme`])])):r.activeTab===`treemap`?(w(),P(`section`,Zl,[N(i.AnalyzeDraggableGrid,{"grid-class":`grid h-full min-h-0 min-w-0 gap-2 overflow-x-hidden overflow-y-auto xl:overflow-hidden`,items:r.treemapLayoutItems,"storage-key":`weapp-vite:dashboard:analyze-layout:treemap`},{treemap:t(()=>[N(i.TreemapCard,{"bind-chart-ref":r.bindChartRef,"can-focus-selected":!!r.selectedTreemapFocusNodeId,"filter-mode":r.treemapFilterMode,"filter-options":r.treemapFilterOptions,"can-use-selected-package-filter":r.canUseSelectedPackageFilter,"is-empty":r.isTreemapEmpty,onFocusSelected:n[16]||=e=>i.emit(`focusTreemapSelection`),onResetFocus:n[17]||=e=>i.emit(`resetTreemapFocus`),onUpdateFilterMode:n[18]||=e=>i.emit(`updateTreemapFilterMode`,e)},null,8,[`bind-chart-ref`,`can-focus-selected`,`filter-mode`,`filter-options`,`can-use-selected-package-filter`,`is-empty`])]),_:1},8,[`items`])])):r.activeTab===`files`?(w(),P(`section`,Ql,[N(i.AnalyzeDetailsPanel,{"largest-files":r.filteredLargestFiles,"selected-file-modules":r.selectedFileModules,"budget-warnings":r.budgetWarnings,"budget-config":r.budgetConfig,"package-insights":r.packageInsights,"total-bytes":r.totalBytes,"active-budget-warning-id":r.activeBudgetWarningId,"active-largest-file-key":r.activeLargestFileKey,"selected-treemap-meta":r.selectedTreemapMeta,onSelectBudgetWarning:n[19]||=e=>i.emit(`selectBudgetWarning`,e),onSelectFile:n[20]||=e=>i.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`])])):r.activeTab===`source`?(w(),P(`section`,$l,[N(i.AnalyzeDraggableGrid,{"grid-class":`grid h-full min-h-0 min-w-0 gap-2 overflow-x-hidden overflow-y-auto xl:overflow-hidden`,items:r.sourceLayoutItems,"storage-key":`weapp-vite:dashboard:analyze-layout:source`},{source:t(()=>[N(i.SourceArtifactComparePanel,{"active-file-key":r.activeLargestFileKey,files:r.filteredLargestFiles,theme:r.theme,onSelectFile:n[21]||=e=>i.emit(`selectFile`,e)},null,8,[`active-file-key`,`files`,`theme`])]),_:1},8,[`items`])])):r.activeTab===`packages`?(w(),P(`section`,eu,[N(i.AnalyzeDraggableGrid,{"grid-class":`grid h-full min-h-0 min-w-0 gap-2 overflow-x-hidden overflow-y-auto xl:overflow-hidden`,items:r.packagesLayoutItems,"storage-key":`weapp-vite:dashboard:analyze-layout:packages`},{packages:t(()=>[N(i.PackagesPanel,{"package-insights":r.packageInsights,"budget-warnings":r.budgetWarnings,"selected-treemap-meta":r.selectedTreemapMeta},null,8,[`package-insights`,`budget-warnings`,`selected-treemap-meta`])]),_:1},8,[`items`])])):(w(),P(`section`,tu,[N(i.AnalyzeDraggableGrid,{"grid-class":`grid h-full min-h-0 min-w-0 items-start gap-2 overflow-x-hidden overflow-y-auto`,items:r.modulesLayoutItems,"storage-key":`weapp-vite:dashboard:analyze-layout:modules`},{modules:t(()=>[N(i.ModulesPanel,{"duplicate-modules":r.filteredDuplicateModules,"module-source-summary":r.moduleSourceSummary,"increment-attribution":r.incrementAttribution,"increment-summary":r.incrementSummary,"visible-largest-files":r.visibleLargestFiles},null,8,[`duplicate-modules`,`module-source-summary`,`increment-attribution`,`increment-summary`,`visible-largest-files`])]),_:1},8,[`items`])]))}var ru=I(Kl,[[`render`,nu]]),iu=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 ge},DashboardIcon:L};return Object.defineProperty(i,"__isScriptSetup",{enumerable:!1,value:!0}),i}}),au={class:`h-4.5 w-4.5`},ou={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)`},su=[`onClick`],cu={class:`mt-0.5 h-4.5 w-4.5 text-(--dashboard-text-soft)`},lu={class:`min-w-0`},uu={class:`block font-medium`},du={class:`mt-0.5 block text-xs leading-5 text-(--dashboard-text-soft)`};function fu(e,t,n,r,i,a){return w(),P(`div`,{class:`relative shrink-0`,onClick:t[1]||=x(()=>{},[`stop`])},[S(`button`,{class:k(r.pillButtonStyles({kind:`nav`,active:n.open})),type:`button`,onClick:t[0]||=e=>r.emit(`update:open`,!n.open)},[S(`span`,au,[N(r.DashboardIcon,{name:`nav-menu`})]),t[2]||=y(` 更多 `,-1)],2),n.open?(w(),P(`div`,ou,[(w(),P(O,null,c(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`,cu,[N(r.DashboardIcon,{name:e.iconName},null,8,[`name`])]),S(`span`,lu,[S(`span`,uu,h(e.label),1),S(`span`,du,h(e.description),1)])],8,su)),64))])):M(``,!0)])}var pu=I(iu,[[`render`,fu]]),mu=n({__name:`AppInfoPill`,props:{label:{},iconName:{},uppercase:{type:Boolean}},setup(e,{expose:t}){t();let n={DashboardIcon:L};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}}),hu={key:0,class:`mr-1.5 h-4 w-4 text-(--dashboard-accent)`};function gu(e,t,n,r,i,a){return w(),P(`span`,{class:k([`inline-flex items-center rounded-full border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-2.5 py-1 text-xs font-medium text-(--dashboard-text-soft)`,n.uppercase?`tracking-[0.18em] uppercase`:void 0])},[n.iconName?(w(),P(`span`,hu,[N(r.DashboardIcon,{name:n.iconName},null,8,[`name`])])):M(``,!0),y(` `+h(n.label),1)],2)}var _u=I(mu,[[`render`,gu]]),vu=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 ge},AnalyzeExportMenu:pu,AppInfoPill:_u,DashboardIcon:L};return Object.defineProperty(r,"__isScriptSetup",{enumerable:!1,value:!0}),r}}),yu={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)`},bu={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`},Su={class:`h-4.5 w-4.5`},Cu=[`disabled`],wu={class:`h-4.5 w-4.5`};function Tu(e,t,n,i,a,o){return w(),P(`section`,yu,[S(`div`,bu,[n.canSearch?(w(),P(`button`,{key:0,class:k([`shrink-0`,i.pillButtonStyles({kind:`nav`,active:!1})]),onClick:t[0]||=e=>i.emit(`openSearch`)},[S(`span`,xu,[N(i.DashboardIcon,{name:`metric-search`})]),t[10]||=y(` 搜索 `,-1)],2)):M(``,!0),n.canSearch?(w(),P(`button`,{key:1,class:k([`shrink-0`,i.pillButtonStyles({kind:`nav`,active:!1})]),onClick:t[1]||=e=>i.emit(`copyViewLink`)},[S(`span`,Su,[N(i.DashboardIcon,{name:`metric-link`})]),t[11]||=y(` 复制视图 `,-1)],2)):M(``,!0),n.canSearch?(w(),P(`button`,{key:2,class:k([`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`,wu,[N(i.DashboardIcon,{name:`metric-reset`})]),t[12]||=y(` 重置视图 `,-1)],10,Cu)):M(``,!0),n.exportStatus?(w(),_(i.AppInfoPill,{key:3,class:`shrink-0`,label:n.exportStatus,uppercase:``},null,8,[`label`])):M(``,!0),n.openWorkQueueCount>0?(w(),_(i.AppInfoPill,{key:4,class:`shrink-0`,"icon-name":`metric-bookmark`,label:`${n.openWorkQueueCount} 个待处理`,uppercase:``},null,8,[`label`])):M(``,!0),(w(!0),P(O,null,c(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`])):M(``,!0)])}var Eu=I(vu,[[`render`,Tu]]);function Du(e){return e===`blocked`?`Blocked`:e===`review`?`Review`:`Ready`}function Ou(e){return e===`blocked`?`PR 合并前仍有阻断项`:e===`review`?`建议完成复核后再合并`:`当前清单未发现发布风险`}function ku(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 Au(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 ju(e){return e.items.length===0?[`- [x] ${e.emptyText}`]:e.items.map(e=>`- [${e.checked?`x`:` `}] ${e.title}:${e.detail}`)}function Mu(e){return[`## PR 风险清单`,``,`状态:${e.label}`,e.headline,``,...e.metrics.map(e=>`- ${e.label}:${e.value}`),``,...e.lanes.flatMap(e=>[`### ${e.title}`,``,...ju(e),``])].join(`
18
+ `)}function Nu(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(ku),emptyText:`没有阻断项。`},{key:`verification`,title:`评审复核`,description:`需要 reviewer 主动确认的高风险变化。`,items:n.slice(0,6).map(ku),emptyText:`没有需要额外复核的风险。`},{key:`followups`,title:`后续跟进`,description:`来自处理清单和剩余建议动作的后续事项。`,items:[...r.slice(0,4).map(Au),...o.map(ku)].slice(0,6),emptyText:i.length>0?`处理清单已完成。`:`没有待跟进事项。`}],l={status:s,label:Du(s),headline:Ou(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:Mu(l)}}var X=`\0`,Pu=[{itemStyle:{borderWidth:3,gapWidth:3},upperLabel:{show:!0,height:28,fontSize:12,fontWeight:650,lineHeight:17,overflow:`truncate`,textBorderWidth:0}},{itemStyle:{borderWidth:1.5,gapWidth:1.5},upperLabel:{show:!0,height:24,fontSize:11,fontWeight:600,lineHeight:15,overflow:`truncate`,textBorderWidth:0}},{itemStyle:{borderWidth:.75,gapWidth:.75}}];function Fu(e){return`package${X}${e}`}function Iu(e,t){return`file${X}${e}${X}${t}`}function Lu(e,t,n){return`module${X}${e}${X}${t}${X}${n}`}function Ru(e,t){return`asset${X}${e}${X}${t}`}function zu(e){let t=e.replaceAll(`\\`,`/`),n=ue(e).replace(/^(?:\.\.\/)+/,``),r=n.split(`/`).filter(Boolean);if(r.length===0)return n;if(t.includes(`/node_modules/`)){let e=r[0];return e.startsWith(`@`)&&r[1]?`${e}/${r[1]}`:e}return r.length>2?`${r[r.length-2]}/${r[r.length-1]}`:r.join(`/`)}function Z(e){return String(e).replace(/[&<>"']/g,e=>({"&":`&amp;`,"<":`&lt;`,">":`&gt;`,'"':`&quot;`,"'":`&#39;`})[e])}function Bu(e){let t=zu(e),n=[`<strong>${Z(t)}</strong>`];return t!==e&&(n.push(`<span style="color:#94a3b8">完整路径</span>`),n.push(`<span style="font-family:monospace;word-break:break-all">${Z(e)}</span>`)),n}function Vu(e){if(!e)return``;let t=[];return e.kind===`package`?(t.push(`<strong>${Z(e.packageLabel)}</strong>`),t.push(`类型:${Z(e.packageType)}`),t.push(`产物数量:${Z(e.fileCount)}`),e.totalBytes&&t.push(`累计体积:${R(e.totalBytes)}`)):e.kind===`file`?(t.push(...Bu(e.fileName)),t.push(`所属:${Z(e.packageLabel)}`),t.push(`类型:${e.type===`chunk`?`代码 chunk`:`资源`} · 来源:${Z(e.from)}`),t.push(`体积:${R(e.bytes)}`),e.childCount>0&&t.push(`模块数量:${Z(e.childCount)}`)):e.kind===`module`?(t.push(...Bu(e.source)),t.push(`所属:${Z(e.packageLabel)} → ${Z(e.fileName)}`),t.push(`源码类型:${Z(he(e.sourceType))}`),t.push(`模块体积:${R(e.bytes??e.originalBytes)}`),e.packageCount>1&&t.push(`跨包复用:${Z(e.packageCount)} 次`)):e.kind===`asset`&&(t.push(...Bu(e.source)),t.push(`所属:${Z(e.packageLabel)} → ${Z(e.fileName)}`),t.push(`资源体积:${R(e.bytes)}`)),t.join(`<br/>`)}function Hu(e){return`${(e.ratio*100).toFixed(1)}%`}function Uu(e,t,n){if(t&&n)return e.find(e=>e.packageId===t&&e.file===n)}function Wu(e,t){let n=e.packages[0],r=n?.files[0]??``,i=t.find(e=>e.id===n?.packageId),a=i?.label??n?.packageLabel??``;return{key:`duplicate:${e.id}`,kind:`duplicate`,title:`减少重复模块 ${e.source}`,meta:`${e.packageCount} 个包复用 · ${e.advice}`,value:`可省 ${R(e.estimatedSavingBytes)}`,tone:e.estimatedSavingBytes>1024?`warning`:`info`,tab:`modules`,priority:72+Math.min(e.estimatedSavingBytes/1024,18),moduleMeta:n&&i?{kind:`module`,nodeId:Lu(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 Gu(e,t,n){let r=Uu(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:Lu(e.packageId,e.file,e.moduleId),packageId:e.packageId,packageLabel:e.packageLabel,fileName:e.file,source:e.label,sourceType:e.sourceType??`src`,bytes:e.currentBytes,packageCount:1}:void 0;return{key:`increment:${e.key}`,kind:`increment`,title:`定位增长 ${e.label}`,meta:`${e.category} · ${e.advice}`,value:`+${R(e.deltaBytes)}`,tone:`info`,tab:r?`files`:`modules`,priority:80+Math.min(e.deltaBytes/1024,15),file:r,moduleMeta:a}}function Ku(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`?`已超预算`:`接近预算`} · 当前 ${R(n.currentBytes)} / ${R(n.limitBytes)}`,value:Hu(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(Gu(n,e.largestFiles.value,e.packageInsights.value));for(let n of e.duplicateModules.value.filter(e=>e.estimatedSavingBytes>0).slice(0,12))t.push(Wu(n,e.packageInsights.value));let n=e.largestFiles.value[0];return n&&t.push({key:`file:${n.packageId}:${n.file}`,kind:`file`,title:`查看最大文件 ${n.file}`,meta:`${n.packageLabel} · ${n.type} · 压缩后 ${R(n.compressedSize)}`,value:R(n.size),tone:`success`,tab:`files`,priority:45,file:n}),t.sort((e,t)=>t.priority-e.priority||e.title.localeCompare(t.title))})}}function qu(e){return e.filter(e=>e!==void 0&&e!==``).join(` `).toLowerCase()}function Ju(e,t,n){return e.find(e=>e.id===t||e.label===n)}function Yu(e,t,n){if(t&&n)return e.find(e=>e.packageId===t&&e.file===n)}function Xu(e){return{key:`package:${e.id}`,kind:`package`,title:e.label,meta:`${z(e.type)} · ${e.fileCount} 个产物 · ${e.moduleCount} 个模块`,value:R(e.totalBytes),keywords:qu([e.id,e.label,e.type,e.totalBytes]),tab:`packages`,packageMeta:{kind:`package`,nodeId:Fu(e.id),packageId:e.id,packageLabel:e.label,packageType:e.type,fileCount:e.fileCount,totalBytes:e.totalBytes}}}function Zu(e){return{key:`file:${e.packageId}:${e.file}`,kind:`file`,title:e.file,meta:`${e.packageLabel} · ${e.type} · 压缩后 ${R(e.compressedSize)}`,value:R(e.size),keywords:qu([e.packageId,e.packageLabel,e.file,e.type,e.source,e.size]),tab:`files`,file:e}}function Qu(e){return{key:`budget:${e.id}`,kind:`budget`,title:`${e.label} 预算`,meta:`${e.status===`critical`?`已超预算`:`接近预算`} · ${R(e.currentBytes)} / ${R(e.limitBytes)}`,value:`${(e.ratio*100).toFixed(1)}%`,keywords:qu([e.id,e.label,e.scope,e.status,e.currentBytes]),tab:`files`,warning:e}}function $u(e,t){let n=e.packages[0],r=n?.files[0]??``,i=Ju(t,n?.packageId,n?.packageLabel),a=i?.label??n?.packageLabel??``;return{key:`module:${e.id}`,kind:`module`,title:e.source,meta:`${e.sourceType} · ${e.packageCount} 个包复用 · ${e.advice}`,value:`可省 ${R(e.estimatedSavingBytes)}`,keywords:qu([e.id,e.source,e.sourceType,e.packageCount,e.packages.map(e=>e.packageLabel).join(` `)]),tab:`modules`,moduleMeta:n&&i?{kind:`module`,nodeId:Lu(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 ed(e,t,n){let r=Yu(t,e.packageId,e.file),i=Ju(n,e.packageId,e.packageLabel);return{key:`increment:${e.key}`,kind:`increment`,title:e.label,meta:`${e.category} · ${e.advice}`,value:`+${R(e.deltaBytes)}`,keywords:qu([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:Lu(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 td(e){return{key:`action:${e.key}`,kind:`action`,title:e.title,meta:e.meta,value:e.value,keywords:qu([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 nd(e){return{commandItems:C(()=>[...e.actionItems.value.map(td),...e.budgetWarnings.value.map(Qu),...e.packageInsights.value.map(Xu),...e.largestFiles.value.map(Zu),...e.duplicateModules.value.map(t=>$u(t,e.packageInsights.value)),...e.incrementAttribution.value.map(t=>ed(t,e.largestFiles.value,e.packageInsights.value))])}}var rd=2097152;function Q(e){return e.size??0}function id(e){return e.brotliSize??e.gzipSize??pe(Q(e),e.file,e.type)}function ad(e){return typeof e.brotliSize==`number`||typeof e.gzipSize==`number`?`real`:`estimated`}function od(e,t){return`${e}\u0000${t}`}function sd(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+=id(t),n.set(od(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 cd(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 ld(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 ud(e){if(e!==`virtual`)return rd}function dd(e,t){let n=t.metadata?.budgets;if(!n)return ud(e);if(e===`main`)return n.mainBytes;if(e===`subPackage`)return n.subPackageBytes;if(e===`independent`)return n.independentBytes}function fd(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 pd(e){return e>=1048576?`${(e/1024/1024).toFixed(e%1048576==0?0:2)} MB`:e>=1024?`${(e/1024).toFixed(e%1024==0?0:2)} KB`:`${e} B`}function md(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=fd({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=dd(n.type,e);if(!i)continue;let a=fd({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 hd(e){let t=e?.metadata?.budgets,n=t?.source??`default`;return[{key:`total`,label:`总包预算`,value:`${pd(t?.totalBytes??20971520)}`,source:n},{key:`main`,label:`主包预算`,value:`${pd(t?.mainBytes??2097152)}`,source:n},{key:`subPackage`,label:`分包预算`,value:`${pd(t?.subPackageBytes??2097152)}`,source:n},{key:`independent`,label:`独立分包预算`,value:`${pd(t?.independentBytes??2097152)}`,source:n}]}function gd(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 _d(e,t){return e===`第三方依赖`?`检查依赖边界或公共入口。`:e===`WeVu / runtime`?`排查组件和 API 引用边界。`:e===`样式资源`?`检查样式复用和生成范围。`:t?`确认分包归属和懒加载边界。`:`对比新增引用和共享模块。`}function vd(e,t){let n=t===`node_modules`||t===`workspace`?`dependency`:t,r=e.indexOf(`?`),i=(r===-1?e:e.slice(0,r)).replaceAll(`\\`,`/`).replace(/^\0/,``);if(n===`dependency`){let e=i.lastIndexOf(`/node_modules/`);e>=0?i=i.slice(e+14):i.startsWith(`node_modules/`)?i=i.slice(13):t===`workspace`&&(i=(i.match(/(?:^|\/)packages-runtime\/(wevu\/.*)$/)??i.match(/(?:^|\/)(@[^/]+\/[^/]+\/dist\/.*)$/))?.[1]??i)}return`${n}\0${i}`}function yd(e){if(!e.result||!e.previousResult)return[];let t=[],n=cd(e.result);for(let n of e.result.packages)for(let r of n.files){let i=Q(r),a=e.previousMaps.fileBytes.get(od(n.id,r.file))??0,o=i-a;if(o<=0)continue;let s=gd(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:_d(s,a===0)})}let r=new Map;for(let[t,n]of e.previousMaps.moduleBytes){let e=vd(n.source??t,n.sourceType);r.set(e,Math.max(r.get(e)??0,n.bytes))}let i=new Map;for(let[t,r]of e.moduleInfoMap){let e=n.get(t),a=e?.sourceType??r.sourceType,o=ue(e?.source??t),s=vd(e?.source??t,a),c=i.get(s);c&&c.currentBytes>=r.bytes||i.set(s,{id:t,label:o,sourceType:a,currentBytes:r.bytes,packageId:e?.packageId,packageLabel:e?.packageLabel??``,file:e?.file})}for(let[e,n]of i){let i=r.get(e)??0,a=n.currentBytes-i;if(a<=0)continue;let o=gd(n.label,n.sourceType);t.push({key:`module:${n.id}`,label:n.label,category:o,packageId:n.packageId,packageLabel:n.packageLabel,file:n.file,moduleId:n.id,sourceType:n.sourceType,currentBytes:n.currentBytes,previousBytes:i,deltaBytes:a,advice:_d(o,i===0)})}return t.sort((e,t)=>t.deltaBytes-e.deltaBytes||e.category.localeCompare(t.category)||e.label.localeCompare(t.label))}function bd(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 xd(e,t){return{packageId:t.packageId,packageLabel:e.get(t.packageId)??t.packageId,files:t.files}}function Sd(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 Cd(e,t){return{sourceType:e,sourceCategory:t,count:0,bytes:0}}function wd(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 Td(e){return e.result?e.result.modules.filter(e=>e.packages.length>1).map(t=>{let n=e.moduleInfoMap.get(t.id),r=ue(t.source),i=t.packages.map(t=>xd(e.packageLabelMap,t)),a=n?.bytes??n?.originalBytes??0,o=a*Math.max(t.packages.length-1,0);return{id:t.id,source:r,sourceType:t.sourceType,packageCount:t.packages.length,bytes:a,estimatedSavingBytes:o,advice:wd(t.sourceType,i,e.packageTypeMap,o),packages:i}}).sort((e,t)=>t.estimatedSavingBytes-e.estimatedSavingBytes||t.packageCount-e.packageCount||t.bytes-e.bytes||e.source.localeCompare(t.source)):[]}function Ed(e,t){let n=new Map;for(let r of e?.modules??[]){let e=t.get(r.id),i=Sd(r.source,r.sourceType),a=`${r.sourceType}:${i}`,o=n.get(a)??Cd(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 Dd(e,t){return{label:e,value:t}}function Od(e,t,n){let r=Q(t),i=n.get(od(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:id(t),compressedSizeSource:ad(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 kd(e,t,n){let r=Q(t),i=n.get(od(e,t.file));return{file:t.file,size:r,gzipSize:t.gzipSize,brotliSize:t.brotliSize,compressedSize:id(t),compressedSizeSource:ad(t),sizeDeltaBytes:typeof i==`number`?r-i:void 0,type:t.type,from:t.from,isEntry:!!t.isEntry,moduleCount:t.modules?.length??0}}function Ad(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+pe(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+id(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 jd(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])=>Dd(e,t)).sort((e,t)=>t.value-e.value||e.label.localeCompare(t.label))}function Md(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=>kd(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+id(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 Nd(e,t){let n=[];for(let r of e?.packages??[])for(let e of r.files)n.push(Od(r,e,t));return n.sort((e,t)=>t.size-e.size||e.file.localeCompare(t.file)).slice(0,18)}function Pd(e,t){let n=C(()=>sd(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(()=>ld(e.value)),o=C(()=>md(e.value)),s=C(()=>hd(e.value)),c=C(()=>yd({result:e.value,previousResult:t?.value,previousMaps:n.value,moduleInfoMap:a.value})),l=C(()=>bd(c.value));return{summary:C(()=>Ad({result:e.value,previousMaps:n.value,budgetWarnings:o.value})),packageTypeSummary:C(()=>jd(e.value)),packageInsights:C(()=>Md(e.value,n.value)),largestFiles:C(()=>Nd(e.value,n.value.fileBytes)),duplicateModules:C(()=>Td({result:e.value,moduleInfoMap:a.value,packageLabelMap:r.value,packageTypeMap:i.value})),moduleSourceSummary:C(()=>Ed(e.value,a.value)),budgetWarnings:o,budgetLimitItems:s,incrementAttribution:c,incrementSummary:l,subPackages:C(()=>e.value?.subPackages??[])}}var Fd=[`action`,`file`,`budget`],Id=[`critical`,`warning`,`info`,`success`],Ld=[`overview`,`diagnostics`,`graph`,`treemap`,`files`,`source`,`packages`,`modules`];function Rd(){return new Date().toISOString()}function zd(e,t){return typeof e==`string`&&t.includes(e)}function Bd(e){if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.id==`string`&&zd(t.targetKind,Fd)&&typeof t.targetKey==`string`&&typeof t.title==`string`&&typeof t.meta==`string`&&zd(t.tone,Id)&&zd(t.tab,Ld)&&typeof t.createdAt==`string`}function Vd(e){if(!Array.isArray(e))return[];let t=new Map;for(let n of e)Bd(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 Hd(e,t=Rd()){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 Ud(e){let t=Vd(e).map(e=>`| ${e.completedAt?`完成`:`待处理`} | ${e.title.replaceAll(`|`,`\\|`)} | ${e.meta.replaceAll(`|`,`\\|`)} | ${e.value??`-`} | ${e.tab} |`);return[`# dashboard 处理清单`,``,`待处理:${e.filter(e=>!e.completedAt).length}`,`已完成:${e.filter(e=>e.completedAt).length}`,``,`| 状态 | 事项 | 说明 | 数值 | 视图 |`,`| --- | --- | --- | ---: | --- |`,t.join(`
19
19
  `)||`| - | 暂无事项 | - | - | - |`,``].join(`
20
- `)}function Pd(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(Md(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 Fd(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 Id(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 Ld(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 Rd(e){let t=String(e??``);return/[",\n\r]/.test(t)?`"${t.replaceAll(`"`,`""`)}"`:t}function zd(e){return e.map(Rd).join(`,`)}function Bd(e){let t=[zd([`section`,`label`,`package`,`type`,`sizeBytes`,`compressedBytes`,`deltaBytes`,`count`,`detail`])];for(let n of e.packageInsights)t.push(zd([`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(zd([`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(zd([`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(zd([`increment`,n.label,n.packageLabel,n.category,n.currentBytes,n.deltaBytes,n.deltaBytes,1,n.advice]));return t.join(`
32
- `)}function Vd(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 Hd(e){let t=m(``),n=C(()=>Fd({summary:e.summary.value,packageInsights:e.packageInsights.value,duplicateModules:e.duplicateModules.value})),r=C(()=>Id({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(()=>Ld({summary:e.summary.value,incrementAttribution:e.incrementAttribution.value,incrementSummary:e.incrementSummary.value,budgetWarnings:e.budgetWarnings.value,duplicateModules:e.duplicateModules.value})),a=C(()=>Bd({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(Nd(e.workQueueItems.value)),t.value=`处理清单已复制`}function d(){e.resultRef.value&&(Vd({content:JSON.stringify(e.resultRef.value,null,2),filename:`weapp-vite-analyze.json`,type:`application/json`}),t.value=`已导出`,e.moreMenuOpen.value=!1)}function f(){Vd({content:r.value,filename:`weapp-vite-analyze.md`,type:`text/markdown`}),t.value=`已导出 MD`,e.moreMenuOpen.value=!1}function p(){Vd({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 Ud(e){return ge.some(t=>t.value===e)?e:`all`}function Wd(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 Gd(e){let t=e.files.filter(t=>Wd(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 Kd(e){let t=new Map(e.duplicateModules.map(e=>[e.id,e]));return e.modules.filter(t=>e.mode===`growth`?e.growthModuleIds.has(t.id):e.mode===`duplicates`?e.duplicateModuleIds.has(t.id):e.mode===`node_modules`?t.sourceType===`node_modules`:e.mode!==`source`||t.sourceType===`src`||t.sourceType===`workspace`).map(e=>{let n=t.get(e.id),r=e.bytes??e.originalBytes??0;return{key:e.id,source:e.source,sourceType:e.sourceType,bytes:r,originalBytes:e.originalBytes,duplicatePackageCount:n?.packageCount??1,estimatedSavingBytes:n?.estimatedSavingBytes??0}}).sort((e,t)=>t.estimatedSavingBytes-e.estimatedSavingBytes||t.bytes-e.bytes||e.source.localeCompare(t.source))}function qd(e){let t=v(),n=O(),r=C({get(){return Ud(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();function Jd(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 Yd=.85,Xd={light:{green:`#8fd3ad`,yellow:`#ead486`,red:`#eaa39b`},dark:{green:`#166853`,yellow:`#75601f`,red:`#81323a`}},Zd=.5;function Qd(e,t=0,n=1){return Math.min(n,Math.max(t,e))}function $d(e){let t=Number.parseInt(e.slice(1),16);return{red:t>>16&255,green:t>>8&255,blue:t&255}}function ef(e,t,n){let r=Qd(n),i=Object.values($d(e)),a=Object.values($d(t));return`#${i.map((e,t)=>Math.round(e+(a[t]-e)*r)).map(e=>e.toString(16).padStart(2,`0`)).join(``)}`}function tf(e,t){let n=Qd(e),r=Xd[t];return n<=.5?ef(r.green,r.yellow,n/.5):ef(r.yellow,r.red,(n-.5)/.5)}function nf(e,t){return t===`dark`?e>=.82?`#fda4af`:e>=.5?`#fde68a`:`#5eead4`:e>=.82?`#c6756f`:e>=.5?`#c3a24d`:`#5caf82`}function rf(...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 af(e,...t){return rf(...t)?Math.min(e,Zd):e}function of(e){let{red:t,green:n,blue:r}=$d(e);return(.299*t+.587*n+.114*r)/255>.56?`#17231d`:`#f8fafc`}function sf(e,t=!1){let n=of(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 cf(e,t){let n=tf(e,t);return{itemStyle:{color:n,borderColor:nf(e,t)},label:sf(n),upperLabel:sf(n,!0)}}function lf(e,t){return t?e.type===`main`?t.mainBytes:e.type===`subPackage`?t.subPackageBytes:e.type===`independent`?t.independentBytes:t.totalBytes:0}function uf(e,t,n=Yd){if(t<=0)return 0;let r=e/t;return r>=1?1:r>=n?.58+(r-n)/Math.max(1-n,.01)*.32:Qd(r/n*.42,0,.42)}function df(e,t){if(t<=0)return 0;let n=e/t;return n>=.72?.92:n>=.45?.64+(n-.45)/.27*.22:Qd(n/.45*.46,0,.46)}function ff(e,...t){return af(e,...t)}function pf(e,t,n,r,i,a,o){let s=Au(e,n,a.id),c=Math.max(a.bytes??a.originalBytes??1,1),l=i.get(a.id)??1,u=ff(Math.max(df(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},...cf(u,o)}}function mf(e,t,n,r,i,a){let o=ju(e,n),s=Math.max(r.size??1,1),c=ff(df(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},...cf(c,a)}}function hf(e,t,n,r,i,a,o,s,c){let l=ku(t,r.file),u=Math.max(a,1),d=ff(Math.max(df(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},...cf(d,c),children:i.length>0?i:void 0}}function gf(e,t,n,r,i){let a=Ou(e.id),o=ff(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},...cf(o,i),children:n}}function _f(e){return e.reduce((e,t)=>e+t.value,0)}function vf(e,t){return`${e}\u0000${t}`}function yf(e,t,n){return n.mode===`all`||n.mode===`selected-package`?!!t.source:n.mode===`growth`?n.growthFileKeys.has(vf(e,t.file)):n.mode===`source`&&!!t.source}function bf(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 xf(){return{mode:`all`,selectedPackageId:null,growthFileKeys:new Set,growthModuleIds:new Set,duplicateModuleIds:new Set}}function Sf(e){let t=new Map(e.result.packages.map(t=>{let n=t.files.reduce((e,t)=>e+(t.size??0),0),r=lf(t,e.result.metadata?.budgets);return[t.id,uf(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(vf(r.id,i.file)),s=Math.max(i.size??1,1),c=i.type===`chunk`?bf(e.filter,i.modules??[]).map(t=>pf(r.id,r.label,i.file,s,e.moduleUsageCount,t,e.theme)):yf(r.id,i,e.filter)?[mf(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??_f(c):_f(c);return[hf(r.label,r.id,e.packageLabelMap,i,c,l,a,t.get(r.id)??0,e.theme)]});return i.length===0?[]:[gf(r,e.filter.mode===`all`||e.filter.mode===`selected-package`?r.files.reduce((e,t)=>e+(t.size??0),0):_f(i),i,t.get(r.id)??0,e.theme)]})}function Cf(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?Sf({result:a,packageLabelMap:r.value,moduleUsageCount:i.value,filter:n?.value??xf(),theme:t.value}):[]});return{treemapOption:C(()=>({backgroundColor:`transparent`,tooltip:{formatter:e=>Mu(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:Du,data:a.value}]})),treemapNodes:a}}ve(),Se(),Ee(),xe([Te,Ce,_e,be,we]);function wf(e){let t=m(null),n=m(null),r=m(null),{canUseSelectedPackageFilter:i,duplicateModuleIds:a,growthModuleIds:o,handleUpdateTreemapFilterMode:s,treemapFilterMode:c,treemapFilterState:l}=qd({duplicateModules:e.duplicateModules,incrementAttribution:e.incrementAttribution,selectedBudgetWarning:r,selectedLargestFile:n,selectedTreemapMeta:t}),{treemapOption:u,treemapNodes:d}=Cf(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(()=>Gd({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?ku(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(()=>Kd({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}=Jd({activeTab:e.activeTab,resolvedTheme:e.resolvedTheme,treemapOption:u,handleChartClick:x});function k(e){n.value=e,t.value={kind:`file`,nodeId:ku(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=Gd({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:Ou(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:Ou(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 Tf(e){return new URL(e,window.location.origin).toString()}function Ef(e){let t=v(),n=O(),r=C(()=>t.fullPath!==`/analyze`);async function i(){await U(Tf(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 Df=`weapp-vite:dashboard:analyze-work-queue`;function Of(){try{let e=window.localStorage.getItem(Df);return jd(e?JSON.parse(e):null)}catch{return[]}}function kf(e){try{window.localStorage.setItem(Df,JSON.stringify(e))}catch{}}function Af(){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=jd(e),kf(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=Of()}),{completedWorkQueueItems:r,openWorkQueueItems:n,queuedActionKeys:i,workQueueItems:t,addWorkQueueItem:o,clearCompletedWorkQueueItems:l,removeWorkQueueItem:c,toggleWorkQueueItem:s}}function $(e){return e}function jf(e){return typeof e!=`number`||Number.isNaN(e)||e===0?``:`${e>0?`+`:`-`}${z(Math.abs(e))}`}function Mf(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=jf(t.compressedDeltaBytes);return`${n} ${z(t.compressedBytes)}${r?` · ${r}`:``}`}),c=C(()=>{let t=jf(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 Nf=[{id:`metrics`,label:`关键指标`}],Pf=[{id:`actions`,label:`问题中心`},{id:`work-queue`,label:`处理清单`},{id:`history`,label:`历史基线`}],Ff=[{id:`review`,label:`PR 风险清单`}],If=[{id:`treemap`,label:`体积地图`}],Lf=[{id:`packages`,label:`包与产物`}],Rf=[{id:`modules`,label:`模块复用`}],zf=[{id:`source`,label:`源码对比`}];function Bf(){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=wd(c,a),{activeTab:h,topCards:g,packageTypeSummary:_}=Mf({summary:p.summary,packageInsights:p.packageInsights,packageTypeSummary:p.packageTypeSummary,duplicateModules:p.duplicateModules,moduleSourceSummary:p.moduleSourceSummary,lastUpdatedAt:s}),v=wf({activeTab:h,resultRef:c,resolvedTheme:n,largestFiles:p.largestFiles,duplicateModules:p.duplicateModules,incrementAttribution:p.incrementAttribution,packageInsights:p.packageInsights}),{actionItems:y}=Lu({budgetWarnings:p.budgetWarnings,incrementAttribution:p.incrementAttribution,duplicateModules:p.duplicateModules,largestFiles:p.largestFiles,packageInsights:p.packageInsights}),b=Af(),x=C(()=>Eu({actionItems:y.value,workQueueItems:b.workQueueItems.value})),{commandItems:S}=qu({actionItems:y,budgetWarnings:p.budgetWarnings,duplicateModules:p.duplicateModules,incrementAttribution:p.incrementAttribution,largestFiles:p.largestFiles,packageInsights:p.packageInsights}),w=Hd({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=Pd({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=Ef({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:Pf,historySnapshots:o,metricPackageTypeSummary:_,modulesLayoutItems:Rf,moreMenuOpen:t,overviewLayoutItems:Nf,packagesLayoutItems:Lf,prReviewChecklist:x,resolvedTheme:n,reviewLayoutItems:Ff,setBaselineSnapshot:l,setComparisonMode:u,sourceLayoutItems:zf,statusPills:A,topCards:g,treemapFilterOptions:ge,treemapLayoutItems:If,resultRef:c}}var Vf=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}=Bf(),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:eu,AnalyzeToolbar:yu};return Object.defineProperty(Ae,"__isScriptSetup",{enumerable:!1,value:!0}),Ae}}),Hf={class:`grid min-h-[calc(100dvh-8rem)] grid-rows-[auto_minmax(44rem,1fr)] gap-4`};function Uf(e,t,n,r,i,a){return w(),F(`div`,Hf,[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 Wf=B(Vf,[[`render`,Uf]]);export{Wf as default};
20
+ `)}function Wd(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(Hd(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 Gd(e){let t=e.packageInsights[0],n=e.duplicateModules[0];return[`总产物体积:${R(e.summary.totalBytes)}`,`Gzip:${R(e.summary.gzipBytes)}`,`Brotli/压缩后:${R(e.summary.compressedBytes)}`,`包体:${e.summary.packageCount} 个,分包配置:${e.summary.subpackageCount} 个`,`模块:${e.summary.moduleCount} 个,跨包复用:${e.summary.duplicateCount} 个`,`预算告警:${e.summary.budgetWarningCount} 个`,t?`最大包:${t.label} ${R(t.totalBytes)}`:``,n?`首要重复模块:${n.source},估算可节省 ${R(n.estimatedSavingBytes)}(${n.advice})`:``].filter(Boolean).join(`
21
+ `)}function Kd(e){let t=e.packageInsights.map(e=>`| ${e.label} | ${e.type} | ${R(e.totalBytes)} | ${R(e.compressedBytes)} | ${typeof e.sizeDeltaBytes==`number`?`${e.sizeDeltaBytes>0?`+`:`-`}${R(Math.abs(e.sizeDeltaBytes))}`:`无变化`} |`).join(`
22
+ `),n=e.largestFiles.slice(0,10).map(e=>`| ${e.file} | ${e.packageLabel} | ${e.type} | ${R(e.size)} | ${R(e.compressedSize)} |`).join(`
23
+ `),r=e.duplicateModules.slice(0,10).map(e=>`| ${e.source} | ${e.sourceType} | ${e.packageCount} | ${R(e.estimatedSavingBytes)} | ${e.advice} |`).join(`
24
+ `),i=e.budgetWarnings.map(e=>`| ${e.label} | ${e.scope} | ${R(e.currentBytes)} | ${R(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()}`,``,`## 本次变化摘要`,``,`- 总产物体积:${R(e.summary.totalBytes)}`,`- 压缩后体积:${R(e.summary.compressedBytes)}`,`- 包体数量:${e.summary.packageCount}`,`- 源码模块:${e.summary.moduleCount}`,`- 跨包复用:${e.summary.duplicateCount}`,`- 预算告警:${e.summary.budgetWarningCount}`,``,`## 预算告警`,``,`| 对象 | 范围 | 当前体积 | 预算 | 状态 |`,`| --- | --- | ---: | ---: | --- |`,i||`| - | - | 0 B | 0 B | 正常 |`,``,`## 建议动作`,``,e.budgetWarnings[0]?`- 优先处理 ${e.budgetWarnings[0].label}:当前 ${R(e.budgetWarnings[0].currentBytes)},预算 ${R(e.budgetWarnings[0].limitBytes)}。`:`- 当前没有预算超限或接近预算的包体。`,a?`- 优先处理重复模块 ${a.source},估算可节省 ${R(a.estimatedSavingBytes)}。`:`- 当前没有可估算收益的重复模块。`,``,`## 包体`,``,`| 包 | 类型 | 体积 | 压缩后 | 较上次 |`,`| --- | --- | ---: | ---: | ---: |`,t||`| - | - | 0 B | 0 B | 无变化 |`,``,`## Top 文件`,``,`| 文件 | 包 | 类型 | 体积 | 压缩后 |`,`| --- | --- | --- | ---: | ---: |`,n||`| - | - | - | 0 B | 0 B |`,``,`## 重复模块`,``,`| 模块 | 来源 | 包数量 | 估算可节省 | 建议 |`,`| --- | --- | ---: | ---: | --- |`,r||`| - | - | 0 | 0 B | - |`,``].join(`
26
+ `)}function qd(e){let t=e.incrementAttribution.slice(0,8).map(e=>`| ${e.label} | ${e.category} | ${e.packageLabel} | +${R(e.deltaBytes)} | ${e.advice} |`).join(`
27
+ `),n=e.incrementSummary.slice(0,6).map(e=>`| ${e.category} | ${e.count} | +${R(e.deltaBytes)} |`).join(`
28
+ `),r=e.budgetWarnings.slice(0,5).map(e=>`| ${e.label} | ${R(e.currentBytes)} | ${R(e.limitBytes)} | ${e.status===`critical`?`超预算`:`接近预算`} ${(e.ratio*100).toFixed(1)}% |`).join(`
29
+ `),i=e.duplicateModules.slice(0,5).map(e=>`| ${e.source} | ${e.packageCount} | ${R(e.estimatedSavingBytes)} | ${e.advice} |`).join(`
30
+ `);return[`## weapp-vite analyze PR 摘要`,``,`- 总产物体积:${R(e.summary.totalBytes)}${typeof e.summary.sizeDeltaBytes==`number`?`(较上次 ${e.summary.sizeDeltaBytes>=0?`+`:`-`}${R(Math.abs(e.summary.sizeDeltaBytes))})`:``}`,`- 压缩后体积:${R(e.summary.compressedBytes)}`,`- 预算告警:${e.budgetWarnings.length}`,`- 增量归因:${e.incrementAttribution.length>0?`${e.incrementAttribution.length} 项正向增长`:`无正向增长`}`,`- 跨包复用:${e.duplicateModules.length}`,``,`### 增量来源`,``,`| 来源 | 项数 | 增量 |`,`| --- | ---: | ---: |`,n||`| - | 0 | 0 B |`,``,`### Top 增量`,``,`| 文件/模块 | 来源 | 包 | 增量 | 建议 |`,`| --- | --- | --- | ---: | --- |`,t||`| - | - | - | 0 B | - |`,``,`### 预算状态`,``,`| 对象 | 当前体积 | 预算 | 状态 |`,`| --- | ---: | ---: | --- |`,r||`| - | 0 B | 0 B | 正常 |`,``,`### 重复模块`,``,`| 模块 | 包数量 | 估算可节省 | 建议 |`,`| --- | ---: | ---: | --- |`,i||`| - | 0 | 0 B | - |`,``].join(`
31
+ `)}function Jd(e){let t=String(e??``);return/[",\n\r]/.test(t)?`"${t.replaceAll(`"`,`""`)}"`:t}function Yd(e){return e.map(Jd).join(`,`)}function Xd(e){let t=[Yd([`section`,`label`,`package`,`type`,`sizeBytes`,`compressedBytes`,`deltaBytes`,`count`,`detail`])];for(let n of e.packageInsights)t.push(Yd([`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(Yd([`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(Yd([`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(Yd([`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 Qd(e){let t=m(``),n=C(()=>Gd({summary:e.summary.value,packageInsights:e.packageInsights.value,duplicateModules:e.duplicateModules.value})),r=C(()=>Kd({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(()=>qd({summary:e.summary.value,incrementAttribution:e.incrementAttribution.value,incrementSummary:e.incrementSummary.value,budgetWarnings:e.budgetWarnings.value,duplicateModules:e.duplicateModules.value})),a=C(()=>Xd({packageInsights:e.packageInsights.value,largestFiles:e.largestFiles.value,duplicateModules:e.duplicateModules.value,incrementAttribution:e.incrementAttribution.value}));async function o(){await V(n.value),t.value=`已复制`,e.moreMenuOpen.value=!1}async function s(){await V(r.value),t.value=`报告已复制`,e.moreMenuOpen.value=!1}async function c(){await V(i.value),t.value=`PR 摘要已复制`,e.moreMenuOpen.value=!1}async function l(){await V(e.prReviewChecklist.value.report),t.value=`评审清单已复制`}async function u(){await V(Ud(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 $d(e){return me.some(t=>t.value===e)?e:`all`}function ef(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 tf(e){let t=e.files.filter(t=>ef(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 nf(e){let t=new Map(e.duplicateModules.map(e=>[e.id,e]));return e.modules.filter(t=>e.mode===`growth`?e.growthModuleIds.has(t.id):e.mode===`duplicates`?e.duplicateModuleIds.has(t.id):e.mode===`node_modules`?t.sourceType===`node_modules`:e.mode!==`source`||t.sourceType===`src`||t.sourceType===`workspace`).map(e=>{let n=t.get(e.id),r=e.bytes??e.originalBytes??0;return{key:e.id,source:e.source,sourceType:e.sourceType,bytes:r,originalBytes:e.originalBytes,duplicatePackageCount:n?.packageCount??1,estimatedSavingBytes:n?.estimatedSavingBytes??0}}).sort((e,t)=>t.estimatedSavingBytes-e.estimatedSavingBytes||t.bytes-e.bytes||e.source.localeCompare(t.source))}function rf(e){let t=v(),n=D(),r=C({get(){return $d(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}}Se();function af(e){let t=m(),n;function r(){n?.resize()}function i(){n?.dispose(),n=void 0}function a(e){n?.dispatchAction({type:`treemapRootToNode`,seriesIndex:0,targetNodeId:e})}function o(){n?.setOption(e.treemapOption.value,!0),n?.resize()}async function s(){if(e.activeTab.value!==`treemap`){i();return}if(await l(),t.value){if(t.value.clientWidth===0||t.value.clientHeight===0){window.requestAnimationFrame(()=>{s()});return}n||(n=Ae(t.value,e.resolvedTheme.value===`dark`?`dark`:void 0,{renderer:`canvas`}),n.on(`click`,e.handleChartClick)),n.setOption(e.treemapOption.value,!0),n.resize()}}function c(e){t.value=e instanceof HTMLDivElement?e:void 0,t.value&&s()}return F(e.treemapOption,e=>{n&&n.setOption(e,!0)},{deep:!0}),F(e.activeTab,()=>{s()}),F(e.resolvedTheme,async()=>{n&&t.value&&i(),await s()}),{bindChartRef:c,destroyChart:i,ensureChart:s,focusTreemapNode:a,handleResize:r,resetTreemapFocus:o}}var of=.85,sf={package:{saturation:50,lightness:34},file:{saturation:46,lightness:40},leaf:{saturation:42,lightness:46}},cf=.5,lf=new Map;function uf(e,t=0,n=1){return Math.min(n,Math.max(t,e))}function df(e){let t=2166136261;for(let n=0;n<e.length;n++)t^=e.charCodeAt(n),t=Math.imul(t,16777619);let n=Math.imul((t^t>>>4)>>>0,3266489909)>>>0;return Math.round((n/4294967296*360+247)%360)}function ff(e,t,n){let r=t/100,i=n/100,a=(1-Math.abs(2*i-1))*r,o=e/60,s=a*(1-Math.abs(o%2-1)),c=i-a/2,[l,u,d]=o<1?[a,s,0]:o<2?[s,a,0]:o<3?[0,a,s]:o<4?[0,s,a]:o<5?[s,0,a]:[a,0,s];return[l+c,u+c,d+c].map(e=>Math.round(e*255)/255)}function pf(e){return e<=.04045?e/12.92:((e+.055)/1.055)**2.4}function mf([e,t,n]){return .2126*pf(e)+.7152*pf(t)+.0722*pf(n)}function hf(e,t){let n=Math.max(e,t),r=Math.min(e,t);return(n+.05)/(r+.05)}function gf(e){let t=mf(e),n=mf([248/255,250/255,252/255]),r=mf([15/255,23/255,42/255]),i=hf(t,n),a=hf(t,r);return Math.max(i,a)>=4.5?i>=a?`#f8fafc`:`#0f172a`:hf(t,1)>=hf(t,0)?`#ffffff`:`#000000`}function _f(e,t){let n=`${e}\u0000${t}`,r=lf.get(n);if(r)return r;let i=sf[t],a=df(e),o={color:`hsl(${a}, ${i.saturation}%, ${i.lightness}%)`,textColor:gf(ff(a,i.saturation,i.lightness))};return lf.set(n,o),o}function vf(e){return e>=.82?`#fb7185`:e>=.58?`#fbbf24`:`#475569`}function yf(...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 bf(e,...t){return yf(...t)?Math.min(e,cf):e}function xf(e,t=!1){let n=e===`#f8fafc`||e===`#ffffff`;return{color:e,ellipsis:`…`,fontSize:t?12:11,fontWeight:t?650:500,lineHeight:t?17:15,minMargin:5,overflow:`truncate`,textBorderWidth:0,textShadowBlur:n?2:0,textShadowColor:n?`rgba(0, 0, 0, 0.48)`:`transparent`}}function Sf(e,t,n,r=!0,i=!0){let{color:a,textColor:o}=_f(t,n),s=vf(e);return{itemStyle:{color:a,borderColor:s},label:{...xf(o),show:r},upperLabel:{...xf(o,!0),backgroundColor:a,padding:[0,4],show:i},emphasis:{itemStyle:{color:a,borderColor:s}}}}function Cf(e,t){return t?e.type===`main`?t.mainBytes:e.type===`subPackage`?t.subPackageBytes:e.type===`independent`?t.independentBytes:t.totalBytes:0}function wf(e,t,n=of){if(t<=0)return 0;let r=e/t;return r>=1?1:r>=n?.58+(r-n)/Math.max(1-n,.01)*.32:uf(r/n*.42,0,.42)}function Tf(e,t){if(t<=0)return 0;let n=e/t;return n>=.72?.92:n>=.45?.64+(n-.45)/.27*.22:uf(n/.45*.46,0,.46)}function Ef(e,...t){return bf(e,...t)}function Df(e,t,n,r,i,a){let o=Lu(e,n,a.id),s=Math.max(a.bytes??a.originalBytes??1,1),c=i.get(a.id)??1,l=Ef(Math.max(Tf(s,r),c>1?.62:0,a.sourceType===`node_modules`?.52:0),a.id,a.source,n);return{id:o,name:zu(a.source),value:s,meta:{kind:`module`,nodeId:o,packageId:e,packageLabel:t,fileName:n,source:ue(a.source),sourceType:a.sourceType,bytes:a.bytes,originalBytes:a.originalBytes,packageCount:c},...Sf(l,e,`leaf`,s>=2048)}}function Of(e,t,n,r,i){let a=Ru(e,n),o=Math.max(r.size??1,1),s=Ef(Tf(o,i),r.file,r.source,e,t);return{id:a,name:zu(r.source??n),value:o,meta:{kind:`asset`,nodeId:a,packageId:e,packageLabel:t,fileName:n,source:r.source??n,bytes:r.size},...Sf(s,e,`leaf`,o>=2048)}}function kf(e,t,n,r,i,a,o,s){let c=Iu(t,r.file),l=Math.max(a,1),u=Ef(Math.max(Tf(l,o),s*.72),r.file,r.source,t,e);return{id:c,name:zu(r.file),value:l,meta:{kind:`file`,nodeId:c,packageId:t,packageLabel:n.get(t)??e,fileName:r.file,from:r.from,childCount:i.length,type:r.type,bytes:r.size},...Sf(u,t,`file`,!0,l>=4096),children:i.length>0?i:void 0}}function Af(e,t,n,r){let i=Fu(e.id),a=Ef(r,e.id,e.label);return{id:i,name:e.label,value:Math.max(t,1),meta:{kind:`package`,nodeId:i,packageId:e.id,packageLabel:e.label,packageType:e.type,fileCount:e.files.length,totalBytes:t},...Sf(a,e.id,`package`),children:n}}function jf(e){return e.reduce((e,t)=>e+t.value,0)}function Mf(e,t){return`${e}\u0000${t}`}function Nf(e,t,n){return n.mode===`all`||n.mode===`selected-package`?!!t.source:n.mode===`growth`?n.growthFileKeys.has(Mf(e,t.file)):n.mode===`source`&&!!t.source}function Pf(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 Ff(){return{mode:`all`,selectedPackageId:null,growthFileKeys:new Set,growthModuleIds:new Set,duplicateModuleIds:new Set}}function If(e){let t=new Map(e.result.packages.map(t=>{let n=t.files.reduce((e,t)=>e+(t.size??0),0),r=Cf(t,e.result.metadata?.budgets);return[t.id,wf(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(Mf(r.id,i.file)),s=Math.max(i.size??1,1),c=i.type===`chunk`?Pf(e.filter,i.modules??[]).map(t=>Df(r.id,r.label,i.file,s,e.moduleUsageCount,t)):Nf(r.id,i,e.filter)?[Of(r.id,r.label,i.file,i,a)]:[];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??jf(c):jf(c);return[kf(r.label,r.id,e.packageLabelMap,i,c,l,a,t.get(r.id)??0)]});return i.length===0?[]:[Af(r,e.filter.mode===`all`||e.filter.mode===`selected-package`?r.files.reduce((e,t)=>e+(t.size??0),0):jf(i),i,t.get(r.id)??0)]})}function Lf(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 t=e.value;return t?If({result:t,packageLabelMap:r.value,moduleUsageCount:i.value,filter:n?.value??Ff()}):[]});return{treemapOption:C(()=>{let e=t.value===`dark`,n=e?`#f8fafc`:`#0f172a`,r=e?`#94a3b8`:`#64748b`,i=e?`#141820`:`#ffffff`,o=e?`rgba(148, 163, 184, 0.2)`:`rgba(71, 85, 105, 0.18)`;return{backgroundColor:`transparent`,tooltip:{formatter:e=>Vu(e.data?.meta),confine:!0,borderColor:o,borderWidth:1,backgroundColor:e?`rgba(15, 18, 24, 0.96)`:`rgba(255, 255, 255, 0.98)`,extraCssText:`max-width: 26rem; white-space: normal; overflow-wrap: anywhere; border-radius: 8px; box-shadow: 0 12px 32px rgba(0, 0, 0, 0.24);`,padding:[10,12],textStyle:{color:n,fontSize:12,lineHeight:19}},series:[{type:`treemap`,top:8,right:8,bottom:38,left:8,sort:`desc`,squareRatio:(1+Math.sqrt(5))/2,nodeClick:`zoomToNode`,roam:!0,roamTrigger:`global`,zoomToNodeRatio:.82,breadcrumb:{show:!0,left:8,right:8,bottom:6,height:24,emptyItemWidth:24,itemStyle:{color:i,borderColor:o,borderWidth:1,textStyle:{color:r,fontSize:11}},emphasis:{itemStyle:{color:e?`#1d2530`:`#f1f5f9`}}},visibleMin:14,label:{show:!0,color:n,formatter:`{b}`,fontSize:11,fontWeight:500,lineHeight:15,minMargin:5,overflow:`truncate`,textBorderWidth:0},upperLabel:{show:!0,color:n,fontSize:12,fontWeight:650,lineHeight:17,overflow:`truncate`,textBorderWidth:0},itemStyle:{borderColor:`#475569`,borderWidth:1,gapWidth:1},emphasis:{itemStyle:{borderWidth:2}},levels:Pu,data:a.value}]}}),treemapNodes:a}}xe(),Te(),ke(),we([Oe,Ee,be,Ce,De]);function Rf(e){let t=m(null),n=m(null),r=m(null),{canUseSelectedPackageFilter:i,duplicateModuleIds:a,growthModuleIds:o,handleUpdateTreemapFilterMode:s,treemapFilterMode:c,treemapFilterState:l}=rf({duplicateModules:e.duplicateModules,incrementAttribution:e.incrementAttribution,selectedBudgetWarning:r,selectedLargestFile:n,selectedTreemapMeta:t}),{treemapOption:u,treemapNodes:d}=Lf(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(()=>tf({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?Iu(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(()=>nf({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}=af({activeTab:e.activeTab,resolvedTheme:e.resolvedTheme,treemapOption:u,handleChartClick:x});function k(e){n.value=e,t.value={kind:`file`,nodeId:Iu(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 ee(i){if(r.value=i,n.value=tf({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:Fu(a.id),packageId:a.id,packageLabel:a.label,packageType:a.type,fileCount:a.fileCount,totalBytes:a.totalBytes}:null}function A(i){e.activeTab.value=`packages`,t.value={kind:`package`,nodeId:Fu(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:ee,handleSelectLargestFile:k,handleSelectPackageInsight:A,handleUpdateTreemapFilterMode:s,isTreemapEmpty:f,resetTreemapSelection:N,selectedBudgetWarning:r,selectedFileModules:b,selectedLargestFile:n,selectedTreemapFocusNodeId:v,selectedTreemapMeta:t,treemapFilterMode:c,visibleLargestFiles:g}}function zf(e){return new URL(e,window.location.origin).toString()}function Bf(e){let t=v(),n=D(),r=C(()=>t.fullPath!==`/analyze`);async function i(){await V(zf(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 Vf=`weapp-vite:dashboard:analyze-work-queue`;function Hf(){try{let e=window.localStorage.getItem(Vf);return Vd(e?JSON.parse(e):null)}catch{return[]}}function Uf(e){try{window.localStorage.setItem(Vf,JSON.stringify(e))}catch{}}function Wf(){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=Vd(e),Uf(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=Hf()}),{completedWorkQueueItems:r,openWorkQueueItems:n,queuedActionKeys:i,workQueueItems:t,addWorkQueueItem:o,clearCompletedWorkQueueItems:l,removeWorkQueueItem:c,toggleWorkQueueItem:s}}function $(e){return e}function Gf(e){return typeof e!=`number`||Number.isNaN(e)||e===0?``:`${e>0?`+`:`-`}${R(Math.abs(e))}`}function Kf(e){let t=v(),n=D(),r=C({get(){let e=t.query.tab;return e===`diagnostics`||e===`review`||e===`graph`||e===`treemap`||e===`files`||e===`source`||e===`packages`||e===`modules`?e:`overview`},set(e){let r={...t.query};e===`overview`?delete r.tab:r.tab=e,n.replace({query:r})}}),i=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=Gf(t.compressedDeltaBytes);return`${n} ${R(t.compressedBytes)}${r?` · ${r}`:``}`}),c=C(()=>{let t=Gf(e.summary.value.sizeDeltaBytes);return t?`较上次 ${t}`:s.value});function l(){return[$({label:`包体数量`,value:String(e.summary.value.packageCount),iconName:`metric-packages`}),$({label:`分包配置`,value:String(e.summary.value.subpackageCount),iconName:`metric-subpackages`}),$({label:`Chunk 数量`,value:String(i.value),iconName:`metric-chunks`}),$({label:`Asset 数量`,value:String(a.value),iconName:`metric-assets`}),$({label:`总产物体积`,value:R(e.summary.value.totalBytes),detail:s.value,wide:!0,iconName:`metric-size-outline`})]}function u(){return[$({label:`源码模块`,value:String(e.summary.value.moduleCount),iconName:`metric-modules`}),$({label:`跨包复用`,value:String(e.summary.value.duplicateCount),iconName:`metric-duplicates`}),$({label:`来源类型`,value:String(e.moduleSourceSummary.value.length),iconName:`metric-sources`}),$({label:`复用体积`,value:o.value>0?R(o.value):`0 B`,iconName:`metric-copy`}),$({label:`预算告警`,value:String(e.summary.value.budgetWarningCount),detail:c.value,wide:!0,iconName:`metric-time`})]}function d(){return[$({label:`包体数量`,value:String(e.summary.value.packageCount),iconName:`tab-packages`}),$({label:`源码模块`,value:String(e.summary.value.moduleCount),iconName:`metric-modules`}),$({label:`跨包复用`,value:String(e.summary.value.duplicateCount),iconName:`metric-duplicates`}),$({label:`预算告警`,value:String(e.summary.value.budgetWarningCount),iconName:`metric-entries`}),$({label:`总产物体积`,value:R(e.summary.value.totalBytes),detail:s.value,wide:!0,iconName:`metric-size`})]}return{activeTab:r,topCards:C(()=>r.value===`packages`?l():r.value===`modules`?u():d()),packageTypeSummary:e.packageTypeSummary}}var qf=[{id:`metrics`,label:`关键指标`}],Jf=[{id:`review`,label:`PR 风险清单`}],Yf=[{id:`treemap`,label:`体积地图`}],Xf=[{id:`packages`,label:`包与产物`}],Zf=[{id:`modules`,label:`模块复用`}],Qf=[{id:`source`,label:`源码对比`}];function $f(){let t=m(!1),{resolvedTheme:n}=ce(),{baselineSnapshotId:r,comparisonMode:i,comparisonResultRef:a,historySnapshots:o,lastUpdatedAt:s,resultRef:c,setBaselineSnapshot:l,setComparisonMode:u,updateCount:d}=fe(),f=Pd(c,a),{activeTab:p,topCards:h,packageTypeSummary:g}=Kf({summary:f.summary,packageInsights:f.packageInsights,packageTypeSummary:f.packageTypeSummary,duplicateModules:f.duplicateModules,moduleSourceSummary:f.moduleSourceSummary,lastUpdatedAt:s}),_=Rf({activeTab:p,resultRef:c,resolvedTheme:n,largestFiles:f.largestFiles,duplicateModules:f.duplicateModules,incrementAttribution:f.incrementAttribution,packageInsights:f.packageInsights}),{actionItems:v}=Ku({budgetWarnings:f.budgetWarnings,incrementAttribution:f.incrementAttribution,duplicateModules:f.duplicateModules,largestFiles:f.largestFiles,packageInsights:f.packageInsights}),y=Wf(),b=C(()=>Nu({actionItems:v.value,workQueueItems:y.workQueueItems.value})),{commandItems:x}=nd({actionItems:v,budgetWarnings:f.budgetWarnings,duplicateModules:f.duplicateModules,incrementAttribution:f.incrementAttribution,largestFiles:f.largestFiles,packageInsights:f.packageInsights}),S=Qd({resultRef:c,summary:f.summary,packageInsights:f.packageInsights,largestFiles:f.largestFiles,duplicateModules:f.duplicateModules,budgetWarnings:f.budgetWarnings,incrementAttribution:f.incrementAttribution,incrementSummary:f.incrementSummary,prReviewChecklist:b,workQueueItems:y.workQueueItems,moreMenuOpen:t}),w=Wd({activeTab:p,actionItems:v,workQueueItems:y.workQueueItems,addWorkQueueItem:y.addWorkQueueItem,exportStatus:S.exportStatus,treemapFilterMode:_.treemapFilterMode,selectedTreemapMeta:_.selectedTreemapMeta,selectedLargestFile:_.selectedLargestFile,selectedBudgetWarning:_.selectedBudgetWarning,handleSelectBudgetWarning:_.handleSelectBudgetWarning,handleSelectLargestFile:_.handleSelectLargestFile}),E=Bf({exportStatus:S.exportStatus,moreMenuOpen:t,resetPageSelection:w.resetPageSelection,resetTreemapSelection:_.resetTreemapSelection}),D=C(()=>`${d.value} 次数据同步`),O=C(()=>n.value===`dark`?`status-dark`:`status-light`),k=C(()=>[{iconName:O.value,label:D.value},{label:s.value}]),ee=C(()=>_.selectedBudgetWarning.value?.id??null);function A(){t.value=!1}function j(e){e.key===`Escape`&&(t.value=!1),(e.metaKey||e.ctrlKey)&&e.key.toLowerCase()===`k`&&(e.preventDefault(),c.value&&(w.commandPaletteOpen.value=!0))}return F(c,()=>{_.resetTreemapSelection(),w.resetPageSelection()}),e(()=>{window.addEventListener(`resize`,_.handleResize),window.addEventListener(`keydown`,j),window.addEventListener(`click`,A),_.ensureChart()}),T(()=>{window.removeEventListener(`resize`,_.handleResize),window.removeEventListener(`keydown`,j),window.removeEventListener(`click`,A),_.destroyChart()}),{...f,...w,...S,..._,...E,...y,actionItems:v,activeTab:p,activeBudgetWarningId:ee,baselineSnapshotId:r,commandItems:x,comparisonMode:i,historySnapshots:o,metricPackageTypeSummary:g,modulesLayoutItems:Zf,moreMenuOpen:t,overviewLayoutItems:qf,packagesLayoutItems:Xf,prReviewChecklist:b,resolvedTheme:n,reviewLayoutItems:Jf,setBaselineSnapshot:l,setComparisonMode:u,sourceLayoutItems:Qf,statusPills:k,topCards:h,treemapFilterOptions:me,treemapLayoutItems:Yf,resultRef:c}}var ep=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,exportCsv:S,exportJson:C,exportMarkdown:w,exportStatus:T,filteredDuplicateModules:E,filteredLargestFiles:D,handleAddActionToWorkQueue:O,handleFocusTreemapSelection:k,handleResetTreemapFocus:ee,handleSelectAction:A,handleSelectBudgetWarning:j,handleSelectLargestFile:M,handleSelectPackageInsight:N,handleSelectReviewChecklistItem:P,handleSelectCommand:F,handleSelectWorkQueueItem:te,handleUpdateTreemapFilterMode:ne,historySnapshots:re,incrementAttribution:ie,incrementSummary:ae,isTreemapEmpty:oe,largestFiles:I,metricPackageTypeSummary:L,modulesLayoutItems:se,moduleSourceSummary:ce,moreMenuOpen:le,openWorkQueueItems:R,overviewLayoutItems:z,packageInsights:ue,packagesLayoutItems:de,prReviewChecklist:fe,queuedActionKeys:pe,removeWorkQueueItem:me,resetAnalyzeView:B,resolvedTheme:he,resultRef:ge,reviewLayoutItems:V,selectedActionKey:_e,selectedFileModules:ve,selectedTreemapFocusNodeId:ye,selectedTreemapMeta:H,setBaselineSnapshot:U,setComparisonMode:W,sourceLayoutItems:be,statusPills:xe,summary:Se,toggleWorkQueueItem:Ce,topCards:we,treemapFilterMode:Te,treemapFilterOptions:Ee,treemapLayoutItems:De,visibleLargestFiles:Oe,workQueueItems:ke}=$f(),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,exportCsv:S,exportJson:C,exportMarkdown:w,exportStatus:T,filteredDuplicateModules:E,filteredLargestFiles:D,handleAddActionToWorkQueue:O,handleFocusTreemapSelection:k,handleResetTreemapFocus:ee,handleSelectAction:A,handleSelectBudgetWarning:j,handleSelectLargestFile:M,handleSelectPackageInsight:N,handleSelectReviewChecklistItem:P,handleSelectCommand:F,handleSelectWorkQueueItem:te,handleUpdateTreemapFilterMode:ne,historySnapshots:re,incrementAttribution:ie,incrementSummary:ae,isTreemapEmpty:oe,largestFiles:I,metricPackageTypeSummary:L,modulesLayoutItems:se,moduleSourceSummary:ce,moreMenuOpen:le,openWorkQueueItems:R,overviewLayoutItems:z,packageInsights:ue,packagesLayoutItems:de,prReviewChecklist:fe,queuedActionKeys:pe,removeWorkQueueItem:me,resetAnalyzeView:B,resolvedTheme:he,resultRef:ge,reviewLayoutItems:V,selectedActionKey:_e,selectedFileModules:ve,selectedTreemapFocusNodeId:ye,selectedTreemapMeta:H,setBaselineSnapshot:U,setComparisonMode:W,sourceLayoutItems:be,statusPills:xe,summary:Se,toggleWorkQueueItem:Ce,topCards:we,treemapFilterMode:Te,treemapFilterOptions:Ee,treemapLayoutItems:De,visibleLargestFiles:Oe,workQueueItems:ke,AnalyzeCommandPalette:st,AnalyzeEmptyPayloadPanel:mt,AnalyzeResultSections:ru,AnalyzeToolbar:Eu};return Object.defineProperty(Ae,"__isScriptSetup",{enumerable:!1,value:!0}),Ae}}),tp={class:`grid min-h-[calc(100dvh-8rem)] grid-rows-[auto_minmax(44rem,1fr)] gap-4`};function np(e,t,n,r,i,a){return w(),P(`div`,tp,[r.resultRef?M(``,!0):(w(),_(r.AnalyzeEmptyPayloadPanel,{key:0})),N(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,"filtered-duplicate-modules":r.filteredDuplicateModules,"filtered-largest-files":r.filteredLargestFiles,"history-snapshots":r.historySnapshots,"increment-attribution":r.incrementAttribution,"increment-summary":r.incrementSummary,"is-treemap-empty":r.isTreemapEmpty,"largest-files":r.largestFiles,"metric-package-type-summary":r.metricPackageTypeSummary,"modules-layout-items":r.modulesLayoutItems,"module-source-summary":r.moduleSourceSummary,"overview-layout-items":r.overviewLayoutItems,"package-insights":r.packageInsights,"packages-layout-items":r.packagesLayoutItems,"pr-review-checklist":r.prReviewChecklist,"queued-action-keys":r.queuedActionKeys,"review-layout-items":r.reviewLayoutItems,result:r.resultRef,"selected-action-key":r.selectedActionKey,"selected-file-modules":r.selectedFileModules,"selected-treemap-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.filtered-duplicate-modules.filtered-largest-files.history-snapshots.increment-attribution.increment-summary.is-treemap-empty.largest-files.metric-package-type-summary.modules-layout-items.module-source-summary.overview-layout-items.package-insights.packages-layout-items.pr-review-checklist.queued-action-keys.review-layout-items.result.selected-action-key.selected-file-modules.selected-treemap-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(`.`))):M(``,!0),N(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 rp=I(ep,[[`render`,np]]);export{rp as default};