@weapp-vite/dashboard 7.2.2 → 7.4.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,2 +1,2 @@
1
1
  const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./monaco.css","./analyze.css"])))=>i.map(i=>d[i]);
2
- import{A as e,B as t,C as n,I as r,K as i,M as a,N as o,O as s,T as c,U as l,W as u,X as d,Y as f,_ as p,a as m,b as h,c as g,f as _,g as v,h as y,i as b,j as x,k as S,m as C,n as w,p as T,q as E,r as D,s as O,t as ee,v as k,x as A,y as j,z as M}from"./vue.js";import{i as N,n as te,r as ne}from"./vendor.js";import{s as P}from"./monaco.js";function re(e,t){if(e){if(Array.isArray(e)){for(let n of e)re(n,t);return}if(typeof e==`object`){for(let[n,r]of Object.entries(e))r&&t.push(n);return}t.push(String(e))}}function ie(...e){let t=[];for(let n of e)re(n,t);return N(t.join(` `))}var F=(e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n},ae=n({__name:`DashboardIcon`,props:{name:{}},setup(e,{expose:t}){t();let n=e,r={"theme-system":`icon-[mdi--theme-light-dark]`,"theme-light":`icon-[mdi--white-balance-sunny]`,"theme-dark":`icon-[mdi--moon-waning-crescent]`,"nav-menu":`icon-[mdi--menu]`,"nav-home":`icon-[mdi--view-grid-outline]`,"nav-analyze":`icon-[mdi--chart-box-outline]`,"nav-activity":`icon-[mdi--timeline-text-outline]`,"nav-tokens":`icon-[mdi--palette-outline]`,"tab-overview":`icon-[mdi--view-dashboard-outline]`,"tab-packages":`icon-[mdi--package-variant-closed]`,"tab-modules":`icon-[mdi--vector-link]`,"tab-source":`icon-[mdi--source-branch]`,"status-dark":`icon-[mdi--circle-slice-8]`,"status-light":`icon-[mdi--checkbox-blank-circle]`,"status-live":`icon-[mdi--motion-play-outline]`,"metric-packages":`icon-[mdi--package-variant]`,"metric-subpackages":`icon-[mdi--layers-triple-outline]`,"metric-chunks":`icon-[mdi--chart-tree]`,"metric-assets":`icon-[mdi--file-document-multiple-outline]`,"metric-size-outline":`icon-[mdi--database-outline]`,"metric-modules":`icon-[mdi--cube-outline]`,"metric-duplicates":`icon-[mdi--vector-link]`,"metric-sources":`icon-[mdi--source-branch]`,"metric-copy":`icon-[mdi--content-copy]`,"metric-time":`icon-[mdi--clock-outline]`,"metric-entries":`icon-[mdi--export-variant]`,"metric-size":`icon-[mdi--database]`,treemap:`icon-[mdi--chart-box-outline]`,"top-files":`icon-[mdi--file-star-outline]`,subpackages:`icon-[mdi--layers-triple-outline]`,"duplicate-modules":`icon-[mdi--vector-link]`,"module-sources":`icon-[mdi--source-branch]`,"file-samples":`icon-[mdi--file-document-outline]`,"hero-workspace":`icon-[mdi--view-quilt-outline]`,"hero-commands":`icon-[mdi--console-line]`,"hero-system":`icon-[mdi--shape-outline]`,"metric-ready":`icon-[mdi--rocket-launch-outline]`,"metric-health":`icon-[mdi--heart-pulse]`,"metric-latency":`icon-[mdi--timer-sand]`,"metric-quality":`icon-[mdi--shield-check-outline]`,"metric-search":`icon-[mdi--magnify]`,"metric-history":`icon-[mdi--history]`,"metric-bookmark":`icon-[mdi--bookmark-check-outline]`,"metric-link":`icon-[mdi--link-variant]`,"metric-reset":`icon-[mdi--restore]`,"metric-drag":`icon-[mdi--drag-horizontal-variant]`,"token-color":`icon-[mdi--palette-outline]`,"token-surface":`icon-[mdi--card-bulleted-outline]`,"token-type":`icon-[mdi--format-letter-spacing]`},i={props:n,ICON_CLASS_MAP:r,iconClassName:y(()=>r[n.name]??`icon-[mdi--file-document-multiple-outline]`)};return Object.defineProperty(i,"__isScriptSetup",{enumerable:!1,value:!0}),i}});function oe(e,t,n,r,i,a){return x(),j(`span`,{class:E([`h-full w-full`,r.iconClassName])},null,2)}var I=F(ae,[[`render`,oe]]),se=n({__name:`AppNavigationList`,props:{currentAnalyzeTab:{},currentPath:{},items:{},mobile:{type:Boolean,default:!1}},emits:[`navigate`],setup(e,{expose:t,emit:n}){t();let r=e,i=n;function a(e){return e===`/`?r.currentPath===`/`:r.currentPath===e||r.currentPath.startsWith(`${e}/`)}function o(e){let t=e.indexOf(`?`);return t===-1?`overview`:new URLSearchParams(e.slice(t+1)).get(`tab`)??`overview`}function s(e){return e.startsWith(`/analyze`)?r.currentPath===`/analyze`&&o(e)===r.currentAnalyzeTab:a(e)}function c(e){return a(e.to)||!!e.children?.some(e=>s(e.to))}let l={props:r,emit:i,isActive:a,getAnalyzeTabFromPath:o,isNavigationItemActive:s,isNavigationSectionActive:c,get RouterLink(){return ee},get cn(){return ie},DashboardIcon:I};return Object.defineProperty(l,"__isScriptSetup",{enumerable:!1,value:!0}),l}}),ce={class:`grid gap-0.5 overflow-y-auto px-2 py-2`,"aria-label":`DevTools modules`},le={key:0,class:`absolute inset-y-1 left-0 w-0.5 rounded-full bg-(--dashboard-accent)`},ue={class:`min-w-0 flex-1 truncate`},de={key:0,class:`px-8 pb-1 text-[10px] leading-4 text-(--dashboard-text-soft)`},fe={key:1,class:`ml-4 grid gap-0.5 border-l border-(--dashboard-border) pl-2`},pe={class:`h-3.5 w-3.5 shrink-0`},me={class:`min-w-0 truncate`};function he(e,n,r,i,a,s){return x(),j(`nav`,ce,[(x(!0),j(T,null,o(r.items,e=>(x(),j(`div`,{key:e.to,class:`grid gap-0.5`},[A(i.RouterLink,{to:e.to,class:E(i.cn(`group relative flex min-h-9 items-center gap-2 rounded px-2.5 py-2 text-[13px] transition-colors`,i.isNavigationSectionActive(e)?`bg-(--dashboard-accent-soft) font-medium text-(--dashboard-text)`:`text-(--dashboard-text-muted) hover:bg-(--dashboard-panel-muted) hover:text-(--dashboard-text)`)),onClick:n[0]||=e=>i.emit(`navigate`)},{default:t(()=>[i.isNavigationSectionActive(e)?(x(),j(`span`,le)):k(``,!0),v(`span`,{class:E(i.cn(`h-4 w-4 shrink-0`,i.isNavigationSectionActive(e)?`text-(--dashboard-accent)`:`text-(--dashboard-text-soft)`))},[A(i.DashboardIcon,{name:e.iconName},null,8,[`name`])],2),v(`span`,ue,d(e.label),1)]),_:2},1032,[`to`,`class`]),r.mobile||i.isNavigationSectionActive(e)?(x(),j(`p`,de,d(e.caption),1)):k(``,!0),e.children?.length&&i.isNavigationSectionActive(e)?(x(),j(`div`,fe,[(x(!0),j(T,null,o(e.children,e=>(x(),p(i.RouterLink,{key:e.to,to:e.to,class:E(i.cn(`flex min-h-8 min-w-0 items-center gap-2 rounded px-2 py-1.5 text-xs transition-colors`,i.isNavigationItemActive(e.to)?`bg-(--dashboard-panel-muted) font-medium text-(--dashboard-accent)`:`text-(--dashboard-text-soft) hover:bg-(--dashboard-panel-muted) hover:text-(--dashboard-text)`)),onClick:n[1]||=e=>i.emit(`navigate`)},{default:t(()=>[v(`span`,pe,[A(i.DashboardIcon,{name:e.iconName},null,8,[`name`])]),v(`span`,me,d(e.label),1)]),_:2},1032,[`to`,`class`]))),128))])):k(``,!0)]))),128))])}var ge=F(se,[[`render`,he]]),_e=[{value:`system`,label:`跟随系统`,iconName:`theme-system`},{value:`light`,label:`亮色`,iconName:`theme-light`},{value:`dark`,label:`暗色`,iconName:`theme-dark`}],ve=[{key:`overview`,label:`总览`,iconName:`tab-overview`},{key:`diagnostics`,label:`诊断`,iconName:`metric-health`},{key:`review`,label:`评审清单`,iconName:`metric-bookmark`},{key:`graph`,label:`依赖图`,iconName:`tab-modules`},{key:`treemap`,label:`体积地图`,iconName:`treemap`},{key:`files`,label:`文件详情`,iconName:`top-files`},{key:`source`,label:`源码对比`,iconName:`tab-source`},{key:`packages`,label:`包与产物`,iconName:`tab-packages`},{key:`modules`,label:`模块与复用`,iconName:`tab-modules`}],ye=[{value:`all`,label:`全部`},{value:`growth`,label:`增长`},{value:`duplicates`,label:`重复`},{value:`node_modules`,label:`依赖`},{value:`source`,label:`业务`},{value:`selected-package`,label:`当前包`}],be=`weapp-vite DevTools`,xe=[{to:`/`,label:`概览`,caption:`当前构建与运行会话`,iconName:`nav-home`},{to:`/analyze`,label:`构建分析`,caption:`包、模块、文件和分包`,iconName:`nav-analyze`,children:ve.map(e=>({to:e.key===`overview`?`/analyze`:`/analyze?tab=${e.key}`,label:e.label,caption:e.key===`overview`?`全局摘要和建议动作`:e.key===`diagnostics`?`预算、增量和历史基线`:e.key===`review`?`PR 风险和评审清单`:e.key===`graph`?`Chunk 静态与动态依赖`:e.key===`treemap`?`产物体积地图`:e.key===`files`?`文件、预算和模块明细`:e.key===`source`?`源码与产物 Diff`:e.key===`packages`?`包体和产物列表`:`模块复用与来源`,iconName:e.iconName}))},{to:`/activity`,label:`运行事件`,caption:`Build、HMR、命令和错误`,iconName:`nav-activity`},{to:`/tokens`,label:`界面令牌`,caption:`主题、表面和组件状态`,iconName:`nav-tokens`}],Se=[{label:`启动开发`,command:`pnpm --filter @weapp-vite/dashboard dev`,note:`本地预览完整 UI 壳子`,category:`dev`},{label:`生产构建`,command:`pnpm --filter @weapp-vite/dashboard build`,note:`验证静态产物可发布`,category:`build`},{label:`主包联调`,command:`weapp-vite build --ui`,note:`从 CLI 注入真实分析数据`,category:`analyze`}],Ce=[{time:`09:12`,title:`analyze payload synced`,summary:`CLI 已把最新构建结果注入 dashboard,全局状态已完成一次同步。`,tone:`live`},{time:`09:26`,title:`workspace shell extended`,summary:`工作台、活动流、设计令牌已经拆成独立页面。`,tone:`default`},{time:`10:03`,title:`theme system unified`,summary:`主题偏好收敛到应用根部,所有页面共享同一套明暗模式。`,tone:`default`}],we=[{label:`Devframe 协议链路`,detail:`Analyze 查询、运行事件和文件读取统一通过 Devframe 传输。`,status:`已落地`},{label:`路由拓展性`,detail:`页面采用文件路由,主路由表保持稳定。`,status:`可扩展`},{label:`组件复用`,detail:`通用卡片与区块标题已独立,避免页面继续拷贝结构。`,status:`已落地`},{label:`视觉令牌`,detail:`颜色、表面、排版预览集中在 tokens 页面统一检查。`,status:`可验证`}],Te=[{title:`Accent`,iconName:`token-color`,tokens:[{name:`--dashboard-accent`,sample:`var(--dashboard-accent)`},{name:`--dashboard-accent-soft`,sample:`var(--dashboard-accent-soft)`},{name:`--dashboard-border-strong`,sample:`var(--dashboard-border-strong)`}]},{title:`Surfaces`,iconName:`token-surface`,tokens:[{name:`--dashboard-panel`,sample:`var(--dashboard-panel)`},{name:`--dashboard-panel-strong`,sample:`var(--dashboard-panel-strong)`},{name:`--dashboard-panel-muted`,sample:`var(--dashboard-panel-muted)`}]},{title:`Typography`,iconName:`token-type`,tokens:[{name:`--dashboard-text`,sample:`var(--dashboard-text)`},{name:`--dashboard-text-muted`,sample:`var(--dashboard-text-muted)`},{name:`--dashboard-text-soft`,sample:`var(--dashboard-text-soft)`}]}];function Ee(e,t,n){let r=null,i=null;for(let a of e)if(!a.disabled){if(r??=a.value,a.value===t)return a.value;a.value===n&&(i=a.value)}return i??r}function L(e){let t=Number.parseFloat(e);return Number.isFinite(t)?t:0}function De(e,t){let n=getComputedStyle(e),r=Array.from(e.children).reduce((e,n)=>n===t?e:e+n.getBoundingClientRect().width,0),i=Math.max(0,e.children.length-1);return r+L(n.paddingLeft)+L(n.paddingRight)+L(n.borderLeftWidth)+L(n.borderRightWidth)+L(n.columnGap)*i}function Oe(e){let t=e.querySelector(`[role="option"]`),n=t?.querySelector(`[data-option-label]`);if(!t||!n)return e.offsetWidth;let r=e.offsetWidth-e.clientWidth,i=e.clientWidth-t.offsetWidth,a=De(t,n),o=0;for(let t of e.querySelectorAll(`[data-option-label]`)){let e=t.style.whiteSpace;t.style.whiteSpace=`nowrap`,o=Math.max(o,t.scrollWidth),t.style.whiteSpace=e}return o+a+i+r}function ke(e,t){let n=e.getBoundingClientRect(),r=window.visualViewport,i=r?.offsetLeft??0,a=r?.offsetTop??0,o=r?.width??window.innerWidth,s=r?.height??window.innerHeight,c=i+o,l=a+s,u=Math.max(0,o-16),d=Math.min(Math.max(n.width,Oe(t)),u);t.style.width=`${Math.round(d)}px`;let f=l-n.bottom-6-8,p=n.top-a-6-8,m=Math.min(t.scrollHeight+t.offsetHeight-t.clientHeight,288),h=f<Math.min(m,160)&&p>f,g=Math.max(0,h?p:f),_=Math.min(m,g),v=Math.min(Math.max(n.left,i+8),c-d-8),y=h?Math.max(a+8,n.top-6-_):Math.min(n.bottom+6,l-_-8);return{placement:h?`top`:`bottom`,style:{left:`${Math.round(v)}px`,maxHeight:`${Math.floor(g)}px`,top:`${Math.round(y)}px`,width:`${Math.round(d)}px`}}}function Ae(e,t){let n=u(null),i=u(null),a=l(!1),o=u(null),c=l(`bottom`),d=l({}),f=`dashboard-select-${r()}`,p=`${f}-label`,m=`${f}-listbox`,h=`${f}-value`,g=y(()=>e.options.findIndex(t=>t.value===e.modelValue)),_=y(()=>e.options[g.value]),v=y(()=>o.value===null?-1:e.options.findIndex(e=>e.value===o.value)),b=y(()=>a.value&&v.value>=0?`${m}-option-${v.value}`:void 0);function x(t,n){if(!e.options.length)return-1;for(let r=0;r<e.options.length;r++){let i=(t+n*r+e.options.length)%e.options.length;if(!e.options[i]?.disabled)return i}return-1}function C(t){o.value=e.options[t]?.value??null}function w(){i.value?.querySelector(`[data-option-index="${v.value}"]`)?.scrollIntoView({block:`nearest`})}function T(){if(!a.value||!n.value||!i.value)return;let e=ke(n.value,i.value);c.value=e.placement,d.value=e.style}async function E(t=1){if(e.disabled||!e.options.length)return;let n=x(g.value>=0?g.value:t===1?0:e.options.length-1,t);n<0||(C(n),a.value=!0,await s(),T(),w())}function D(){a.value=!1}function O(){if(a.value){D();return}E()}function ee(e){e.disabled||(t(e.value),D(),s(()=>n.value?.focus({preventScroll:!0})))}function k(t){C(x(v.value>=0?v.value+t:t===1?0:e.options.length-1,t)),s(w)}function A(t){if(t.key===`ArrowDown`||t.key===`ArrowUp`){t.preventDefault();let e=t.key===`ArrowDown`?1:-1;if(!a.value){E(e);return}k(e);return}if(t.key===`Home`&&a.value){t.preventDefault(),C(x(0,1)),s(w);return}if(t.key===`End`&&a.value){t.preventDefault(),C(x(e.options.length-1,-1)),s(w);return}if((t.key===`Enter`||t.key===` `)&&a.value){t.preventDefault();let n=e.options[v.value];n&&ee(n);return}if(t.key===`Enter`||t.key===` `){t.preventDefault(),E();return}if(t.key===`Escape`&&a.value){t.preventDefault(),D();return}t.key===`Tab`&&D()}function j(e){let t=e.target;t instanceof Node&&(n.value?.contains(t)||i.value?.contains(t)||D())}function N(e){(e?.type!==`scroll`||e.target!==i.value)&&T()}async function te(){if(!a.value)return;if(e.disabled||!e.options.length){D();return}let t=Ee(e.options,o.value,e.modelValue);if(t===null){D();return}o.value=t,await s(),a.value&&(T(),w())}function ne(){document.addEventListener(`pointerdown`,j,!0),document.addEventListener(`scroll`,N,!0),window.addEventListener(`resize`,N),window.visualViewport?.addEventListener(`resize`,N),window.visualViewport?.addEventListener(`scroll`,N)}function P(){document.removeEventListener(`pointerdown`,j,!0),document.removeEventListener(`scroll`,N,!0),window.removeEventListener(`resize`,N),window.visualViewport?.removeEventListener(`resize`,N),window.visualViewport?.removeEventListener(`scroll`,N)}return M(()=>e.modelValue,t=>{if(!a.value)return;let n=Ee(e.options,null,t);if(n===null){D();return}o.value=n,s(w)}),M(()=>e.options,()=>{te()},{deep:!0}),M(()=>e.disabled,e=>{e&&D()}),M(a,e=>{if(e){ne();return}P()}),S(P),{activeDescendant:b,activeValue:o,closeMenu:D,handleTriggerKeydown:A,isOpen:a,labelId:p,listboxId:m,menuRef:i,menuStyle:d,placement:c,selectedOption:_,selectOption:ee,setActiveIndex:C,triggerRef:n,toggleMenu:O,valueId:h}}var je=n({__name:`AppSelect`,props:{label:{},disabled:{type:Boolean,default:!1},modelValue:{},options:{},size:{default:`md`}},emits:[`update:modelValue`],setup(e,{expose:t,emit:n}){t();let r=e,i=n,{activeDescendant:a,activeValue:o,handleTriggerKeydown:s,isOpen:c,labelId:l,listboxId:u,menuRef:d,menuStyle:f,placement:p,selectedOption:m,selectOption:h,setActiveIndex:g,toggleMenu:_,triggerRef:v,valueId:y}=Ae(r,e=>i(`update:modelValue`,e)),b={props:r,emit:i,activeDescendant:a,activeValue:o,handleTriggerKeydown:s,isOpen:c,labelId:l,listboxId:u,menuRef:d,menuStyle:f,placement:p,selectedOption:m,selectOption:h,setActiveIndex:g,toggleMenu:_,triggerRef:v,valueId:y};return Object.defineProperty(b,"__isScriptSetup",{enumerable:!1,value:!0}),b}}),Me={class:`min-w-0`},Ne=[`id`],Pe=[`aria-activedescendant`,`aria-controls`,`aria-labelledby`,`aria-expanded`,`disabled`,`title`],Fe=[`id`],Ie=[`id`,`aria-labelledby`],Le=[`id`,`aria-selected`,`data-option-index`,`disabled`,`title`,`onClick`,`onMouseenter`],Re={class:`flex h-4 w-4 shrink-0 items-center justify-center`,"aria-hidden":`true`},ze={key:0,class:`h-1.5 w-1.5 rounded-full bg-(--dashboard-accent)`},Be={"data-option-label":``,class:`min-w-0 break-all`};function Ve(e,n,r,i,a,s){return x(),j(`div`,Me,[v(`span`,{id:i.labelId,class:`sr-only`},d(r.label),9,Ne),v(`button`,{ref:`triggerRef`,type:`button`,role:`combobox`,class:E([`group flex w-full min-w-0 items-center justify-between gap-2 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) text-left text-(--dashboard-text) outline-none transition-colors hover:border-(--dashboard-border-strong) hover:bg-(--dashboard-panel) focus-visible:border-(--dashboard-accent) focus-visible:ring-2 focus-visible:ring-(--dashboard-accent-soft) disabled:cursor-not-allowed disabled:opacity-55`,r.size===`sm`?`h-8 px-2 text-xs`:`h-9 px-2.5 text-sm`]),"aria-activedescendant":i.activeDescendant,"aria-controls":i.isOpen?i.listboxId:void 0,"aria-labelledby":`${i.labelId} ${i.valueId}`,"aria-expanded":i.isOpen,"aria-haspopup":`listbox`,disabled:r.disabled,title:i.selectedOption?.label,onClick:n[0]||=(...e)=>i.toggleMenu&&i.toggleMenu(...e),onKeydown:n[1]||=(...e)=>i.handleTriggerKeydown&&i.handleTriggerKeydown(...e)},[v(`span`,{id:i.valueId,class:`min-w-0 truncate`},d(i.selectedOption?.label??`请选择`),9,Fe),v(`span`,{"aria-hidden":`true`,class:E([`mr-0.5 h-1.5 w-1.5 shrink-0 rotate-45 border-b border-r border-current text-(--dashboard-text-soft) transition-transform duration-150 group-hover:text-(--dashboard-text)`,i.isOpen?`-translate-y-px rotate-225 text-(--dashboard-accent)`:void 0])},null,2)],42,Pe),(x(),p(C,{to:`body`},[A(O,{"enter-active-class":`transition duration-100 ease-out`,"enter-from-class":`opacity-0 scale-[0.98]`,"enter-to-class":`opacity-100 scale-100`,"leave-active-class":`transition duration-75 ease-in`,"leave-from-class":`opacity-100 scale-100`,"leave-to-class":`opacity-0 scale-[0.98]`},{default:t(()=>[i.isOpen?(x(),j(`div`,{key:0,id:i.listboxId,ref:`menuRef`,role:`listbox`,class:E([`fixed z-[120] overflow-y-auto rounded-lg border border-(--dashboard-border-strong) bg-(--dashboard-panel) p-1 shadow-2xl shadow-black/20 outline-none`,i.placement===`top`?`origin-bottom`:`origin-top`]),style:f(i.menuStyle),"aria-labelledby":i.labelId},[(x(!0),j(T,null,o(r.options,(e,t)=>(x(),j(`button`,{id:`${i.listboxId}-option-${t}`,key:e.value,type:`button`,role:`option`,tabindex:`-1`,class:E([`flex min-h-8 w-full items-center gap-2 rounded-md px-2.5 py-1.5 text-left outline-none transition-colors disabled:cursor-not-allowed disabled:opacity-45`,[r.size===`sm`?`text-xs`:`text-sm`,e.value===r.modelValue?`bg-(--dashboard-accent-soft) text-(--dashboard-accent)`:i.activeValue===e.value?`bg-(--dashboard-panel-muted) text-(--dashboard-text)`:`text-(--dashboard-text-muted)`]]),"aria-selected":e.value===r.modelValue,"data-option-index":t,disabled:e.disabled,title:e.label,onClick:t=>i.selectOption(e),onMouseenter:e=>i.setActiveIndex(t),onMousedown:n[2]||=_(()=>{},[`prevent`])},[v(`span`,Re,[e.value===r.modelValue?(x(),j(`span`,ze)):k(``,!0)]),v(`span`,Be,d(e.label),1)],42,Le))),128))],14,Ie)):k(``,!0)]),_:1})]))])}var He=F(je,[[`render`,Ve]]),Ue=n({__name:`AppShellHeader`,props:{connectionStatus:{},hasPayload:{type:Boolean},packageCount:{},title:{},description:{},themeOptions:{},themePreference:{}},emits:[`menu`,`setTheme`],setup(e,{expose:t,emit:n}){t();let r=e,i={props:r,emit:n,currentThemeIconName:y(()=>r.themeOptions.find(e=>e.value===r.themePreference)?.iconName??`theme-system`),connectionLabel:y(()=>r.connectionStatus===`connected`?`${be} connected`:r.connectionStatus===`unauthorized`?`Authorization required`:r.connectionStatus),get cn(){return ie},AppSelect:He,DashboardIcon:I};return Object.defineProperty(i,"__isScriptSetup",{enumerable:!1,value:!0}),i}}),We={class:`flex min-h-13 items-center justify-between gap-3 border-b border-(--dashboard-border) bg-(--dashboard-panel) px-3 lg:px-4`},Ge={class:`flex min-w-0 items-center gap-2.5`},Ke={class:`h-4 w-4`},qe={class:`min-w-0`},Je={class:`flex min-w-0 items-center gap-2`},Ye={class:`truncate text-sm font-semibold text-(--dashboard-text)`},Xe={key:0,class:`hidden truncate text-[11px] text-(--dashboard-text-soft) md:block`},Ze={class:`flex shrink-0 items-center gap-1.5`},Qe={class:`hidden items-center gap-1.5 rounded border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-2 py-1 text-[11px] text-(--dashboard-text-muted) sm:inline-flex`},$e={class:`hidden rounded border border-(--dashboard-border) px-2 py-1 font-mono text-[10px] text-(--dashboard-text-soft) md:inline-flex`},et={class:`inline-flex items-center gap-1.5 text-[11px] text-(--dashboard-text-muted)`},tt={class:`h-3.5 w-3.5 text-(--dashboard-text-soft)`};function nt(e,t,n,r,i,a){return x(),j(`header`,We,[v(`div`,Ge,[v(`button`,{class:`inline-flex h-8 w-8 shrink-0 items-center justify-center rounded border border-(--dashboard-border) bg-(--dashboard-panel-muted) text-(--dashboard-text) lg:hidden`,type:`button`,"aria-label":`打开 DevTools 导航`,onClick:t[0]||=e=>r.emit(`menu`)},[v(`span`,Ke,[A(r.DashboardIcon,{name:`nav-menu`})])]),v(`div`,qe,[v(`div`,Je,[v(`h1`,Ye,d(n.title),1),n.description?(x(),j(`span`,Xe,d(n.description),1)):k(``,!0)])])]),v(`div`,Ze,[v(`span`,Qe,[v(`span`,{class:E(r.cn(`h-1.5 w-1.5 rounded-full`,n.connectionStatus===`connected`?`bg-emerald-500`:n.connectionStatus===`error`?`bg-red-500`:`bg-amber-500`))},null,2),h(` `+d(r.connectionLabel),1)]),v(`span`,$e,d(n.hasPayload?`${n.packageCount} packages`:`no payload`),1),v(`div`,et,[v(`span`,tt,[A(r.DashboardIcon,{name:r.currentThemeIconName},null,8,[`name`])]),A(r.AppSelect,{class:`w-24`,label:`主题`,"model-value":n.themePreference,options:n.themeOptions,size:`sm`,"onUpdate:modelValue":t[1]||=e=>r.emit(`setTheme`,e)},null,8,[`model-value`,`options`])])])])}var rt=F(Ue,[[`render`,nt]]),it=`weapp-vite-dashboard-theme`;function at(){if(typeof window>`u`)return`system`;let e=window.localStorage.getItem(it);return e===`light`||e===`dark`||e===`system`?e:`system`}function ot(e,t){return e===`light`||e===`dark`?e:t?.matches?`dark`:`light`}function st(){let t=l(at()),n=typeof window<`u`?window.matchMedia(`(prefers-color-scheme: dark)`):null,r=y(()=>ot(t.value,n)),i=e=>{typeof document<`u`&&(document.documentElement.dataset.theme=e,document.documentElement.style.colorScheme=e)},a=e=>{typeof window<`u`&&window.localStorage.setItem(it,e)},o=()=>{i(r.value)};return M(t,e=>{a(e),i(r.value)},{immediate:!0}),e(()=>{n?.addEventListener(`change`,o),i(r.value)}),S(()=>{n?.removeEventListener(`change`,o)}),{themePreference:t,resolvedTheme:r,setThemePreference(e){t.value=e}}}var ct=Symbol(`dashboard-theme`);function lt(e){a(ct,e)}function ut(){return c(ct,null)||st()}var dt=`weapp-vite-dashboard:analyze-result-history`;function ft(e){return e.toLocaleString(`zh-CN`,{month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`,hour12:!1})}function pt(e){return e?JSON.stringify({projectName:e.metadata?.projectName,packages:e.packages,modules:e.modules,subPackages:e.subPackages,budgets:e.metadata?.budgets}):``}function R(e,t){let n=e?.metadata?.projectName,r=t?.metadata?.projectName;return!!(n&&r&&n===r)}function mt(e,t){if(!t)return null;if(R(e,t))return t;let n=e.metadata?.projectName;return!n||t.metadata?.projectName||!t.metadata?null:{...t,metadata:{...t.metadata,projectName:n}}}function z(e,t){return pt(e)===pt(t)}function ht(e){return e.packages.flatMap(e=>e.files).reduce((e,t)=>e+(t.size??0),0)}function gt(e){return e.packages.flatMap(e=>e.files).reduce((e,t)=>e+(t.brotliSize??t.gzipSize??Math.round((t.size??0)*.32)),0)}function _t(e,t){let n=ht(e);return`${Date.parse(t).toString(36)}-${n.toString(36)}-${e.modules.length.toString(36)}`}function B(e,t=new Date().toISOString()){let n=e.modules.filter(e=>e.packages.length>1).length;return{id:_t(e,t),capturedAt:t,label:ft(new Date(t)),result:e,totalBytes:ht(e),compressedBytes:gt(e),packageCount:e.packages.length,moduleCount:e.modules.length,duplicateCount:n}}function vt(e){let t=(e.snapshots??[]).filter(t=>R(e.current,t.result));e.previous&&R(e.current,e.previous)&&t.push(B(e.previous)),t.push(B(e.current));let n=new Map;for(let e of t){let t=pt(e.result);n.has(t)||n.set(t,e)}return[...n.values()].sort((e,t)=>Date.parse(t.capturedAt)-Date.parse(e.capturedAt)).slice(0,12)}function yt(){try{let e=window.localStorage.getItem(dt);if(!e)return null;let t=JSON.parse(e);return!t?.current?.packages||!Array.isArray(t.current.packages)?null:{current:t.current,previous:t.previous?.packages?t.previous:null,snapshots:Array.isArray(t.snapshots)?t.snapshots.filter(e=>e?.result?.packages&&Array.isArray(e.result.packages)):void 0,baselineSnapshotId:typeof t.baselineSnapshotId==`string`?t.baselineSnapshotId:null,comparisonMode:t.comparisonMode===`baseline`?`baseline`:`previous`}}catch{return null}}function bt(e){try{window.localStorage.setItem(dt,JSON.stringify(e))}catch{}}function xt(e,t,n){return e?mt(e,t)||(n?.current&&!R(e,n.current)?null:n?.current&&!z(e,n.current)?n.current:n?.previous&&R(e,n.previous)?n.previous:null):null}function V(e){if(!e||Number.isNaN(e))return`—`;let t=1024,n=[`B`,`KB`,`MB`,`GB`],r=e,i=0;for(;r>=t&&i<n.length-1;)r/=t,i++;return`${r.toFixed(r>=100||i===0?0:2)} ${n[i]}`}function St(e,t=``,n=``){if(!e||Number.isNaN(e)||e<=0)return 0;let r=t.toLowerCase().split(`.`).pop()??``,i=new Set([`cjs`,`css`,`html`,`js`,`json`,`map`,`mjs`,`svg`,`txt`,`wxml`,`wxss`,`xml`]),a=new Set([`avif`,`br`,`gif`,`gz`,`jpeg`,`jpg`,`mp3`,`mp4`,`ogg`,`otf`,`png`,`webp`,`woff`,`woff2`,`zip`]);return i.has(r)?Math.max(1,Math.round(e*.34)):a.has(r)?Math.max(1,Math.round(e*.92)):n===`chunk`?Math.max(1,Math.round(e*.38)):Math.max(1,Math.round(e*.72))}function Ct(e){switch(e){case`main`:return`主包`;case`subPackage`:return`分包`;case`independent`:return`独立分包`;case`virtual`:return`虚拟包`;default:return e}}function wt(e){return e===`independent`?`独立构建`:`主构建`}function Tt(e){let t=e.indexOf(`?`),n=(t===-1?e:e.slice(0,t)).replaceAll(`\\`,`/`).replace(/^\0/,``),r=n.lastIndexOf(`/node_modules/`);if(r>=0)return n.slice(r+14);if(n.startsWith(`node_modules/`))return n.slice(13);let i=n.lastIndexOf(`/packages-runtime/wevu/`);if(i>=0)return`wevu/${n.slice(i+23)}`;let a=n.match(/\/(@[^/]+\/[^/]+)\/(dist\/.*)$/);if(a)return`${a[1]}/${a[2]}`;let o=n.lastIndexOf(`/src/`);return o>=0?n.slice(o+5):n.replace(/^(?:\.\.\/)+/,``)}function Et(e){switch(e){case`src`:return`业务源码`;case`workspace`:return`工作区包`;case`plugin`:return`插件`;case`node_modules`:return`依赖`;default:return e}}function Dt(e){switch(e){case`command`:return`命令`;case`build`:return`构建`;case`diagnostic`:return`诊断`;case`hmr`:return`HMR`;case`system`:return`系统`;default:return e}}function Ot(e){switch(e){case`info`:return`信息`;case`success`:return`成功`;case`warning`:return`警告`;case`error`:return`错误`;default:return e}}function kt(e){return e??`dashboard`}function At(e){return e}function jt(e){return{label:Ot(e.level),tone:At(e.level)}}function Mt(e){return e>0?`error`:`info`}function Nt(e){return{label:e.latestTimestamp?`${e.count} 条`:`错误 ${e.errorCount}`,tone:Mt(e.errorCount)}}function H(e){return typeof e!=`number`||Number.isNaN(e)||e<0?`未记录`:e>=1e3?`${(e/1e3).toFixed(e>=1e4?1:2)} s`:`${e} ms`}function Pt(e){let t=[Dt(e.kind),kt(e.source),e.timestamp];return typeof e.durationMs==`number`&&Number.isFinite(e.durationMs)&&e.durationMs>=0&&t.push(H(e.durationMs)),t.join(` · `)}var Ft=[`command`,`build`,`diagnostic`,`hmr`,`system`],It=[`info`,`success`,`warning`,`error`];function Lt(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function Rt(e){return typeof e==`string`&&Ft.includes(e)?e:`system`}function zt(e){return typeof e==`string`&&It.includes(e)?e:`info`}function U(e,t){return typeof e==`string`&&e.trim()?e:t}function W(e){return typeof e==`number`&&Number.isFinite(e)&&e>=0?e:void 0}function Bt(e){if(!Array.isArray(e))return;let t=e.filter(e=>typeof e==`string`&&e.trim()).map(e=>String(e));return t.length>0?t:void 0}function Vt(e){if(!Array.isArray(e))return;let t=e.filter(e=>typeof e==`string`&&e.trim()).map(e=>String(e));return t.length>0?t:void 0}function Ht(e){if(!Lt(e))return;let t={timestamp:typeof e.timestamp==`string`?e.timestamp:void 0,totalMs:W(e.totalMs),eventId:typeof e.eventId==`string`?e.eventId:void 0,event:typeof e.event==`string`?e.event:void 0,file:typeof e.file==`string`?e.file:void 0,relativeFile:typeof e.relativeFile==`string`?e.relativeFile:void 0,sourceRootFile:typeof e.sourceRootFile==`string`?e.sourceRootFile:void 0,buildCoreMs:W(e.buildCoreMs),transformMs:W(e.transformMs),writeMs:W(e.writeMs),watchToDirtyMs:W(e.watchToDirtyMs),emitMs:W(e.emitMs),sharedChunkResolveMs:W(e.sharedChunkResolveMs),dirtyCount:W(e.dirtyCount),pendingCount:W(e.pendingCount),emittedCount:W(e.emittedCount),dirtyReasonSummary:Vt(e.dirtyReasonSummary),pendingReasonSummary:Vt(e.pendingReasonSummary)};return Object.values(t).some(e=>e!==void 0)?t:void 0}function Ut(e,t){return{id:U(e.id,`dashboard-runtime-event-${t}`),kind:Rt(e.kind),level:zt(e.level),title:U(e.title,`untitled event`),detail:U(e.detail,`no event detail`),timestamp:U(e.timestamp,`—`),source:U(e.source,`dashboard`),durationMs:W(e.durationMs),tags:Bt(e.tags),profile:Ht(e.profile)}}function Wt(e){return{count:1,errorCount:+(e.level===`error`),latestTimestamp:e.timestamp,durationTotal:e.durationMs??0,timedCount:+(typeof e.durationMs==`number`)}}function Gt(e,t){return{count:e.count+1,errorCount:e.errorCount+ +(t.level===`error`),latestTimestamp:e.latestTimestamp,durationTotal:e.durationTotal+(t.durationMs??0),timedCount:e.timedCount+ +(typeof t.durationMs==`number`)}}function Kt(e,t){return{source:e,count:t.count,errorCount:t.errorCount,latestTimestamp:t.latestTimestamp,averageDurationMs:t.timedCount>0?Math.round(t.durationTotal/t.timedCount):void 0}}function qt(e){return{...e,averageDuration:H(e.averageDurationMs)}}function Jt(e,t){return Lt(e)?Ut(e,t):null}function Yt(e){let t=(Array.isArray(e)?e:[e]).map((e,t)=>Jt(e,t)).filter(e=>!!e),n=new Map;for(let e of t)n.set(e.id,e);return[...n.values()]}function Xt(e){let t=new Map;for(let n of e){let e=n.source??`dashboard`,r=t.get(e);if(!r){t.set(e,Wt(n));continue}t.set(e,Gt(r,n))}return Array.from(t,([e,t])=>Kt(e,t)).sort((e,t)=>t.count-e.count||e.source.localeCompare(t.source,`zh-CN`))}function Zt(e){return e.map(e=>qt(e))}var G=new Map,Qt=2;function $t(e,t){return e.characters===t.characters&&e.hash===t.hash&&e.pages===t.pages}function en(e,t){for(G.delete(e.hash),G.set(e.hash,t);G.size>Qt;){let e=G.keys().next().value;if(typeof e!=`string`)break;G.delete(e)}}function tn(e){let t=JSON.parse(e);if(!Array.isArray(t?.packages)||!Array.isArray(t.modules)||!Array.isArray(t.subPackages))throw TypeError(`Devframe 返回了无效的 Analyze 数据。`);return t}async function nn(e,t,n,r){let i=G.get(t.hash);if(i)return en(t,i),i;let a=[],o=0;for(let i=0;i<t.pages;i++){let s=await e.call(`get-analyze-page`,{index:i,revision:r,target:n});if(s.index!==i||s.revision!==r||s.target!==n||!$t(s.descriptor,t))throw Error(`Devframe 返回了不一致的 Analyze 分页。`);a.push(s.content),o+=s.content.length}if(o!==t.characters)throw Error(`Devframe 返回了不完整的 Analyze 分页。`);let s=tn(a.join(``));return en(t,s),s}async function rn(e,t,n){let r=t.previous?await nn(e,t.previous,`previous`,n):null;return{current:await nn(e,t.current,`current`,n),previous:r}}var an=`weapp-vite`,on=`/__weapp-vite/`,sn=[250,500,1e3,2e3,5e3],cn=/Analyze revision|revision.*Dashboard 状态/i,ln=class extends Error{name=`DashboardAuthorizationError`},K=u(null),q=u(null),J=u(null),Y=u(`connecting`),un=u([]),X,Z,dn=0,Q,fn;function pn(e){Y.value=e.status,J.value=e.connectionError}function mn(){Q&&=(clearTimeout(Q),void 0)}function hn(e,t){e.disposed||(e.disposed=!0,e.dispose(),X===e&&(X=void 0),t&&e.client.close?.())}function gn(){if(Q||X)return;let e=sn[Math.min(dn,sn.length-1)];dn+=1,Q=setTimeout(()=>{if(Q=void 0,Y.value=`connecting`,!fn){Y.value=`error`,J.value=Error(`Devframe Dashboard 重连状态机尚未初始化。`);return}fn().catch(()=>{})},e)}function _n(e,t){if(X!==e||e.disposed)return;let n=e.client.status;pn(e.client),t&&(J.value=t instanceof Error?t:Error(String(t))),(n===`disconnected`||n===`error`||n===`unauthorized`)&&(hn(e,!0),n!==`unauthorized`&&gn())}function vn(e,t){X!==e||e.disposed||(Y.value=`error`,J.value=t instanceof Error?t:Error(String(t)),hn(e,!0),gn())}function yn(e){return e instanceof Error&&cn.test(e.message)}async function bn(e,t){if(!e.disposed){if(e.refreshPromise)return e.pendingState=t,await e.refreshPromise;e.pendingState=t,e.refreshPromise=(async()=>{do{let t=e.pendingState;if(e.pendingState=void 0,t??=await e.dashboard.rpc.call(`get-dashboard-state`),un.value=Yt(t.runtimeEvents),t.revision===e.revision&&K.value)continue;let n;try{n=await rn(e.dashboard.rpc,t.analyze,t.revision)}catch(t){if(!yn(t))throw t;e.pendingState=await e.dashboard.rpc.call(`get-dashboard-state`);continue}if(e.disposed)return;if(e.pendingState)continue;e.revision=t.revision;let r=q.value;K.value=n,q.value=t.revision,r===t.revision&&i(q)}while(e.pendingState)})();try{await e.refreshPromise}finally{e.refreshPromise=void 0}}}function xn(e){let t=e.scope(an),n={client:e,dashboard:t,dispose:()=>{},disposed:!1,revision:-1};t.rpc.register({name:`dashboard-state-updated`,type:`event`,handler:e=>{n.disposed||bn(n,e).catch(e=>{vn(n,e)})}});let r=e.events.on(`connection:status`,()=>{if(e.status===`connected`){dn=0,pn(e);return}_n(n,e.connectionError)}),i=e.events.on(`connection:error`,e=>{_n(n,e)});return n.dispose=()=>{r(),i()},n}async function Sn(){let e=await te({baseURL:on,callTimeout:3e4}),t;try{if(!await e.ensureTrusted())throw new ln(`Devframe 未授权当前 Dashboard 连接。`);if(t=xn(e),X=t,pn(e),await bn(t),t.disposed)throw Error(`Devframe Dashboard 连接在初始化期间断开。`);ne(),dn=0}catch(n){let r=e.status===`unauthorized`;throw t?hn(t,!0):e.close?.(),r&&!(n instanceof ln)?new ln(`Devframe 未授权当前 Dashboard 连接。`,{cause:n}):n}}async function Cn(){if(X?.client.status!==`connected`||X.disposed){if(Z)return await Z;mn(),Y.value=`connecting`,Z=Sn();try{await Z}catch(e){let t=e instanceof ln;throw Y.value=t?`unauthorized`:`error`,J.value=e instanceof Error?e:Error(String(e)),t||gn(),J.value}finally{Z=void 0}}}fn=Cn;async function wn(e,t,n){await Cn();let r=X;if(!r||r.disposed||r.client.status!==`connected`)throw Error(`Devframe Dashboard 当前未连接。`);if(r.revision!==n||q.value!==n)throw Error(`Analyze revision 已变化,请刷新当前 Dashboard 状态。`);let i=await r.dashboard.rpc.call(`read-dashboard-file`,{kind:e,path:t,revision:n});if(X!==r||r.disposed||r.client.status!==`connected`)throw Error(`Devframe Dashboard 文件读取期间连接已变化。`);if(r.revision!==n||q.value!==n)throw Error(`Analyze revision 已变化,请刷新当前 Dashboard 状态。`);return i}function $(e,t){return{label:e,value:t}}function Tn(){return new Date().toLocaleTimeString(`zh-CN`,{hour12:!1})}function En(e){if(!e)return{packageCount:0,moduleCount:0,duplicateCount:0,totalBytes:0};let t=e.packages.flatMap(e=>e.files);return{packageCount:e.packages.length,moduleCount:e.modules.length,duplicateCount:e.modules.filter(e=>e.packages.length>1).length,totalBytes:t.reduce((e,t)=>e+(t.size??0),0)}}function Dn(e){let t=e.filter(e=>e.level===`error`).length,n=e.filter(e=>e.level===`warning`).length,r=e.filter(e=>e.kind===`command`).length,i=e.filter(e=>typeof e.durationMs==`number`),a=i.length>0?Math.round(i.reduce((e,t)=>e+(t.durationMs??0),0)/i.length):void 0;return[$(`总事件数`,String(e.length)),$(`命令事件`,String(r)),$(`已记录耗时`,String(i.length)),$(`平均耗时`,H(a)),$(`警告事件`,String(n)),$(`错误事件`,String(t))]}function On(e){return[{label:`页面骨架`,value:`4 个`,iconName:`metric-ready`},{label:`连接状态`,value:e.result?`已接入 payload`:`等待注入`,iconName:e.result?`status-live`:`metric-health`},{label:`数据同步`,value:`${e.updateCount} 次`,iconName:`metric-latency`},{label:`产物体积`,value:e.result?V(e.summary.totalBytes):`未载入`,iconName:`metric-quality`},{label:`运行事件`,value:`${e.runtimeEventCount} 条`,iconName:e.latestRuntimeEvent?.level===`error`?`metric-health`:`metric-time`}]}function kn(e){return e.result?[{label:`重新分析当前工程`,command:`weapp-vite analyze`,note:`最近同步于 ${e.lastUpdatedAt},当前可读取 ${e.summary.packageCount} 个包。`,category:`analyze`},{label:`进入构建联调`,command:`weapp-vite build --ui`,note:`当前产物总体积 ${V(e.summary.totalBytes)},适合继续核对 chunk 结构。`,category:`build`},{label:`观察开发态更新`,command:`weapp-vite dev --ui`,note:`已记录 ${e.updateCount} 次 payload 同步,后续可继续接入更细粒度事件。`,category:`dev`}]:Se}function An(e){let t=[...Ce];for(let n of e.runtimeEvents.slice(0,4))t.unshift({time:n.timestamp,title:n.title,summary:n.detail,tone:n.level===`error`||n.level===`warning`?`default`:`live`});return e.result&&t.unshift({time:e.lastUpdatedAt,title:`workspace payload received`,summary:`已收到一份真实 analyze 结果,包含 ${e.summary.packageCount} 个包和 ${e.summary.moduleCount} 个模块。`,tone:`live`}),t}function jn(e){let t=[...we];return e.latestRuntimeEvent&&t.unshift({label:`最新运行事件`,detail:`${e.latestRuntimeEvent.title} · ${e.latestRuntimeEvent.detail}`,status:e.latestRuntimeEvent.level}),e.result?[{label:`实时分析状态`,detail:`已接入 payload,当前记录 ${e.summary.duplicateCount} 个跨包复用模块。`,status:`在线`},{label:`产物规模`,detail:`总产物体积 ${V(e.summary.totalBytes)},可继续进入分析页查看 treemap 与最大文件。`,status:`可分析`},...t]:[{label:`CLI 注入链路`,detail:`尚未接收到 analyze payload,当前页面以空态方式工作。`,status:`待接入`},...t]}var Mn=Symbol(`dashboard-workspace`);function Nn(){return Yt(un.value)}function Pn(e){let t=y(()=>e.value[0]??null),n=y(()=>Dn(e.value)),r=y(()=>Xt(e.value)),i=M(un,t=>{let n=Yt(t);n.length>0&&(e.value=n.slice(0,24))},{immediate:!0});return S(i),{eventSummary:n,latestRuntimeEvent:t,runtimeSourceSummary:r}}function Fn(){let e=K.value?.current??null,t=K.value?.previous??null,n=yt(),r=u(e),i=u(xt(e,t,n)),a=u(n?vt(n):e?[B(e)]:[]),o=u(n?.baselineSnapshotId&&a.value.some(e=>e.id===n.baselineSnapshotId)?n.baselineSnapshotId:null),s=u(n?.comparisonMode===`baseline`&&o.value?`baseline`:`previous`),c=u(Nn()),l=u(0),d=u(r.value?Tn():`—`);e&&bt({current:e,previous:i.value,snapshots:a.value,baselineSnapshotId:o.value,comparisonMode:s.value});let f=y(()=>En(r.value)),{eventSummary:p,latestRuntimeEvent:m,runtimeSourceSummary:h}=Pn(c),g=y(()=>r.value?`payload ready`:`awaiting payload`),_=y(()=>r.value?`${f.value.packageCount} 个包 · ${f.value.moduleCount} 个模块`:`尚未接收到 CLI analyze 数据`),v=y(()=>a.value.find(e=>e.id===o.value)??null),b=y(()=>s.value===`baseline`?v.value?.result??i.value:i.value),x=y(()=>On({result:r.value,updateCount:l.value,summary:f.value,runtimeEventCount:c.value.length,latestRuntimeEvent:m.value})),C=y(()=>kn({result:r.value,lastUpdatedAt:d.value,summary:f.value,updateCount:l.value})),w=y(()=>An({runtimeEvents:c.value,result:r.value,lastUpdatedAt:d.value,summary:f.value})),T=y(()=>jn({result:r.value,latestRuntimeEvent:m.value,summary:f.value})),E=e=>{let t=e?.current;if(!t)return;let n=mt(t,e.previous),c=!(!r.value||R(t,r.value));c&&(i.value=null,a.value=[],o.value=null,s.value=`previous`);let u=yt(),f=!!(u?.current&&R(t,u.current)),p=f&&u?.previous&&R(t,u.previous)?u.previous:null;f&&u?.current&&!z(t,u.current)&&(p=u.current),!c&&r.value&&R(t,r.value)&&!z(t,r.value)&&(p=r.value),n&&!z(t,n)&&(p=n),i.value=p&&!z(t,p)?p:null,r.value=t;let m=B(t),h=vt({current:t,previous:i.value,snapshots:[m,...a.value.filter(e=>R(t,e.result))]});a.value=h,o.value&&!h.some(e=>e.id===o.value)&&(o.value=null),s.value===`baseline`&&!o.value&&(s.value=`previous`),bt({current:t,previous:i.value,snapshots:a.value,baselineSnapshotId:o.value,comparisonMode:s.value}),l.value+=1,d.value=Tn()},D=()=>{r.value&&bt({current:r.value,previous:i.value,snapshots:a.value,baselineSnapshotId:o.value,comparisonMode:s.value})},O=e=>{a.value.some(t=>t.id===e)&&(o.value=e,s.value=`baseline`,D())},ee=e=>{s.value=e===`baseline`&&!o.value?`previous`:e,D()},k=M(K,E,{immediate:!0});return S(k),{resultRef:r,previousResultRef:i,comparisonResultRef:b,historySnapshots:a,baselineSnapshotId:o,comparisonMode:s,updateCount:l,lastUpdatedAt:d,statusLabel:g,statusSummary:_,commandItems:C,activityItems:w,diagnostics:T,signals:x,runtimeEvents:c,latestRuntimeEvent:m,eventSummary:p,runtimeSourceSummary:h,setBaselineSnapshot:O,setComparisonMode:ee}}function In(e){a(Mn,e)}function Ln(){let e=c(Mn,null);if(!e)throw Error(`[dashboard] workspace context is not available`);return e}var Rn=n({__name:`App`,setup(t,{expose:n}){n();let r=m(),i=l(!1),{themePreference:a,resolvedTheme:o,setThemePreference:s}=st(),c=Fn(),u=y(()=>!!c.resultRef.value),d=y(()=>c.resultRef.value?.metadata?.projectName??`未命名小程序`),f=y(()=>typeof r.query.tab==`string`?r.query.tab:`overview`);lt({themePreference:a,resolvedTheme:o,setThemePreference:s}),In(c);let p=y(()=>r.path.startsWith(`/analyze`)?{title:`构建分析`,description:`包、模块、文件与构建诊断`}:r.path.startsWith(`/activity`)?{title:`运行事件`,description:`Build、HMR、命令和错误`}:r.path.startsWith(`/tokens`)?{title:`设计令牌`,description:`Dashboard 主题与组件状态`}:{title:`概览`,description:`当前构建与运行会话`});M(()=>r.fullPath,()=>{i.value=!1});function h(e){e.key===`Escape`&&(i.value=!1)}e(()=>window.addEventListener(`keydown`,h)),S(()=>window.removeEventListener(`keydown`,h));let g={route:r,mobileNavOpen:i,themePreference:a,resolvedTheme:o,setThemePreference:s,workspace:c,hasPayload:u,projectName:d,currentAnalyzeTab:f,pageMeta:p,closeMobileNavigation:h,get RouterView(){return w},AppNavigationList:ge,AppShellHeader:rt,DashboardIcon:I,get dashboardDevtoolsName(){return be},get workspaceNavigation(){return xe},get themeOptions(){return _e},get dashboardConnectionStatus(){return Y}};return Object.defineProperty(g,"__isScriptSetup",{enumerable:!1,value:!0}),g}}),zn={class:`h-dvh overflow-hidden bg-(--dashboard-bg) text-(--dashboard-text)`},Bn={class:`grid h-full min-w-0 lg:grid-cols-[15rem_minmax(0,1fr)]`},Vn={class:`hidden min-h-0 border-r border-(--dashboard-border) bg-(--dashboard-panel) lg:flex lg:flex-col`},Hn={class:`flex h-13 shrink-0 items-center gap-2.5 border-b border-(--dashboard-border) px-3`},Un={class:`flex h-7 w-7 items-center justify-center rounded bg-(--dashboard-accent-soft) text-(--dashboard-accent)`},Wn={class:`h-4 w-4`},Gn={class:`min-w-0`},Kn={class:`block truncate text-[13px] font-semibold`},qn={class:`block truncate font-mono text-[10px] text-(--dashboard-text-soft)`},Jn={class:`min-h-0 flex-1 overflow-y-auto`},Yn={class:`shrink-0 border-t border-(--dashboard-border) px-3 py-2.5`},Xn={class:`flex items-center gap-2 text-[11px]`},Zn={class:`truncate text-(--dashboard-text-muted)`},Qn={class:`mt-1 truncate font-mono text-[10px] text-(--dashboard-text-soft)`},$n={class:`flex min-h-0 min-w-0 flex-col`},er={class:`min-h-0 min-w-0 flex-1 overflow-y-auto p-3 lg:p-4`},tr={key:0,class:`fixed inset-y-0 left-0 z-50 flex w-[min(17rem,88vw)] flex-col border-r border-(--dashboard-border) bg-(--dashboard-panel) shadow-xl lg:hidden`},nr={class:`flex h-13 items-center justify-between border-b border-(--dashboard-border) px-3`},rr={class:`min-w-0`},ir={class:`block truncate text-sm`},ar={class:`block truncate font-mono text-[10px] text-(--dashboard-text-soft)`};function or(e,n,r,i,a,o){return x(),j(`div`,zn,[v(`div`,Bn,[v(`aside`,Vn,[v(`div`,Hn,[v(`span`,Un,[v(`span`,Wn,[A(i.DashboardIcon,{name:`hero-system`})])]),v(`span`,Gn,[v(`strong`,Kn,d(i.dashboardDevtoolsName),1),v(`span`,qn,d(i.projectName),1)])]),v(`div`,Jn,[A(i.AppNavigationList,{"current-analyze-tab":i.currentAnalyzeTab,"current-path":i.route.path,items:i.workspaceNavigation},null,8,[`current-analyze-tab`,`current-path`,`items`])]),v(`div`,Yn,[v(`div`,Xn,[v(`span`,{class:E([`h-1.5 w-1.5 rounded-full`,i.dashboardConnectionStatus===`connected`?`bg-emerald-500`:i.dashboardConnectionStatus===`error`?`bg-red-500`:`bg-amber-500`])},null,2),v(`span`,Zn,d(i.dashboardConnectionStatus===`connected`?`${i.dashboardDevtoolsName} connected`:i.dashboardConnectionStatus),1)]),v(`p`,Qn,d(i.workspace.statusSummary.value),1)])]),v(`main`,$n,[A(i.AppShellHeader,{"connection-status":i.dashboardConnectionStatus,"has-payload":i.hasPayload,"package-count":i.workspace.resultRef.value?.packages.length??0,title:i.pageMeta.title,description:i.pageMeta.description,"theme-options":i.themeOptions,"theme-preference":i.themePreference,onMenu:n[0]||=e=>i.mobileNavOpen=!0,onSetTheme:i.setThemePreference},null,8,[`connection-status`,`has-payload`,`package-count`,`title`,`description`,`theme-options`,`theme-preference`,`onSetTheme`]),v(`div`,er,[A(i.RouterView)])])]),A(O,{"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(()=>[i.mobileNavOpen?(x(),j(`div`,{key:0,class:`fixed inset-0 z-40 bg-slate-950/45 lg:hidden`,onClick:n[1]||=e=>i.mobileNavOpen=!1})):k(``,!0)]),_:1}),A(O,{"enter-active-class":`transition duration-150 ease-out`,"enter-from-class":`-translate-x-4`,"enter-to-class":`translate-x-0`,"leave-active-class":`transition duration-100 ease-in`,"leave-from-class":`translate-x-0`,"leave-to-class":`-translate-x-4`},{default:t(()=>[i.mobileNavOpen?(x(),j(`aside`,tr,[v(`div`,nr,[v(`span`,rr,[v(`strong`,ir,d(i.dashboardDevtoolsName),1),v(`span`,ar,d(i.projectName),1)]),v(`button`,{class:`h-8 w-8 rounded border border-(--dashboard-border)`,type:`button`,"aria-label":`关闭导航`,onClick:n[2]||=e=>i.mobileNavOpen=!1},` × `)]),A(i.AppNavigationList,{mobile:``,"current-analyze-tab":i.currentAnalyzeTab,"current-path":i.route.path,items:i.workspaceNavigation,onNavigate:n[3]||=e=>i.mobileNavOpen=!1},null,8,[`current-analyze-tab`,`current-path`,`items`])])):k(``,!0)]),_:1})])}var sr=F(Rn,[[`render`,or]]),cr=D({history:b(new URL(`.`,document.baseURI).pathname),routes:[{path:`/`,name:`/`,component:()=>P(()=>import(`./pages.js`),[],import.meta.url)},{path:`/activity`,name:`/activity`,component:()=>P(()=>import(`./activity.js`),__vite__mapDeps([0]),import.meta.url)},{path:`/analyze`,name:`/analyze`,component:()=>P(()=>import(`./analyze.js`),__vite__mapDeps([0,1]),import.meta.url)},{path:`/tokens`,name:`/tokens`,component:()=>P(()=>import(`./tokens.js`),__vite__mapDeps([0]),import.meta.url)}]});async function lr(){let e=g(sr);e.config.errorHandler=(e,t,n)=>{},e.use(cr),await cr.isReady(),e.mount(`#app`);try{await Cn()}catch{}}lr().catch(e=>{});export{_e as C,ie as D,F as E,Te as S,I as T,Ot as _,wn as a,ut as b,jt as c,wt as d,V as f,Dt as g,Ct as h,Y as i,Nt as l,Tt as m,q as n,Zt as o,H as p,J as r,Xt as s,Ln as t,St as u,Pt as v,ye as w,He as x,Et as y};
2
+ import{A as e,B as t,C as n,G as r,I as i,J as a,M as o,N as s,O as c,T as l,V as u,W as d,X as f,Z as p,_ as m,a as h,b as g,c as _,f as v,g as y,h as b,i as ee,j as x,k as S,m as C,n as w,p as T,q as E,r as D,s as O,t as k,v as A,x as j,y as M}from"./vue.js";import{i as N,n as te,r as ne}from"./vendor.js";import{s as P}from"./monaco.js";function re(e,t){if(e){if(Array.isArray(e)){for(let n of e)re(n,t);return}if(typeof e==`object`){for(let[n,r]of Object.entries(e))r&&t.push(n);return}t.push(String(e))}}function ie(...e){let t=[];for(let n of e)re(n,t);return N(t.join(` `))}var F=(e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n},ae=n({__name:`DashboardIcon`,props:{name:{}},setup(e,{expose:t}){t();let n=e,r={"theme-system":`icon-[mdi--theme-light-dark]`,"theme-light":`icon-[mdi--white-balance-sunny]`,"theme-dark":`icon-[mdi--moon-waning-crescent]`,"nav-menu":`icon-[mdi--menu]`,"nav-home":`icon-[mdi--view-grid-outline]`,"nav-analyze":`icon-[mdi--chart-box-outline]`,"nav-activity":`icon-[mdi--timeline-text-outline]`,"nav-tokens":`icon-[mdi--palette-outline]`,"tab-overview":`icon-[mdi--view-dashboard-outline]`,"tab-packages":`icon-[mdi--package-variant-closed]`,"tab-modules":`icon-[mdi--vector-link]`,"tab-source":`icon-[mdi--source-branch]`,"status-dark":`icon-[mdi--circle-slice-8]`,"status-light":`icon-[mdi--checkbox-blank-circle]`,"status-live":`icon-[mdi--motion-play-outline]`,"metric-packages":`icon-[mdi--package-variant]`,"metric-subpackages":`icon-[mdi--layers-triple-outline]`,"metric-chunks":`icon-[mdi--chart-tree]`,"metric-assets":`icon-[mdi--file-document-multiple-outline]`,"metric-size-outline":`icon-[mdi--database-outline]`,"metric-modules":`icon-[mdi--cube-outline]`,"metric-duplicates":`icon-[mdi--vector-link]`,"metric-sources":`icon-[mdi--source-branch]`,"metric-copy":`icon-[mdi--content-copy]`,"metric-time":`icon-[mdi--clock-outline]`,"metric-entries":`icon-[mdi--export-variant]`,"metric-size":`icon-[mdi--database]`,treemap:`icon-[mdi--chart-box-outline]`,"top-files":`icon-[mdi--file-star-outline]`,subpackages:`icon-[mdi--layers-triple-outline]`,"duplicate-modules":`icon-[mdi--vector-link]`,"module-sources":`icon-[mdi--source-branch]`,"file-samples":`icon-[mdi--file-document-outline]`,"hero-workspace":`icon-[mdi--view-quilt-outline]`,"hero-commands":`icon-[mdi--console-line]`,"hero-system":`icon-[mdi--shape-outline]`,"metric-ready":`icon-[mdi--rocket-launch-outline]`,"metric-health":`icon-[mdi--heart-pulse]`,"metric-latency":`icon-[mdi--timer-sand]`,"metric-quality":`icon-[mdi--shield-check-outline]`,"metric-search":`icon-[mdi--magnify]`,"metric-history":`icon-[mdi--history]`,"metric-bookmark":`icon-[mdi--bookmark-check-outline]`,"metric-link":`icon-[mdi--link-variant]`,"metric-reset":`icon-[mdi--restore]`,"metric-drag":`icon-[mdi--drag-horizontal-variant]`,"token-color":`icon-[mdi--palette-outline]`,"token-surface":`icon-[mdi--card-bulleted-outline]`,"token-type":`icon-[mdi--format-letter-spacing]`},i={props:n,ICON_CLASS_MAP:r,iconClassName:b(()=>r[n.name]??`icon-[mdi--file-document-multiple-outline]`)};return Object.defineProperty(i,"__isScriptSetup",{enumerable:!1,value:!0}),i}});function oe(e,t,n,r,i,o){return x(),M(`span`,{class:a([`h-full w-full`,r.iconClassName])},null,2)}var I=F(ae,[[`render`,oe]]),se=n({__name:`AppNavigationList`,props:{currentAnalyzeTab:{},currentPath:{},items:{},mobile:{type:Boolean,default:!1}},emits:[`navigate`],setup(e,{expose:t,emit:n}){t();let r=e,i=n;function a(e){return e===`/`?r.currentPath===`/`:r.currentPath===e||r.currentPath.startsWith(`${e}/`)}function o(e){let t=e.indexOf(`?`);return t===-1?`overview`:new URLSearchParams(e.slice(t+1)).get(`tab`)??`overview`}function s(e){return e.startsWith(`/analyze`)?r.currentPath===`/analyze`&&o(e)===r.currentAnalyzeTab:a(e)}function c(e){return a(e.to)||!!e.children?.some(e=>s(e.to))}let l={props:r,emit:i,isActive:a,getAnalyzeTabFromPath:o,isNavigationItemActive:s,isNavigationSectionActive:c,get RouterLink(){return k},get cn(){return ie},DashboardIcon:I};return Object.defineProperty(l,"__isScriptSetup",{enumerable:!1,value:!0}),l}}),ce={class:`grid gap-0.5 overflow-y-auto px-2 py-2`,"aria-label":`DevTools modules`},le={key:0,class:`absolute inset-y-1 left-0 w-0.5 rounded-full bg-(--dashboard-accent)`},ue={class:`min-w-0 flex-1 truncate`},de={key:0,class:`px-8 pb-1 text-[10px] leading-4 text-(--dashboard-text-soft)`},fe={key:1,class:`ml-4 grid gap-0.5 border-l border-(--dashboard-border) pl-2`},pe={class:`h-3.5 w-3.5 shrink-0`},me={class:`min-w-0 truncate`};function he(e,t,n,r,i,o){return x(),M(`nav`,ce,[(x(!0),M(T,null,s(n.items,e=>(x(),M(`div`,{key:e.to,class:`grid gap-0.5`},[j(r.RouterLink,{to:e.to,class:a(r.cn(`group relative flex min-h-9 items-center gap-2 rounded px-2.5 py-2 text-[13px] transition-colors`,r.isNavigationSectionActive(e)?`bg-(--dashboard-accent-soft) font-medium text-(--dashboard-text)`:`text-(--dashboard-text-muted) hover:bg-(--dashboard-panel-muted) hover:text-(--dashboard-text)`)),onClick:t[0]||=e=>r.emit(`navigate`)},{default:u(()=>[r.isNavigationSectionActive(e)?(x(),M(`span`,le)):A(``,!0),y(`span`,{class:a(r.cn(`h-4 w-4 shrink-0`,r.isNavigationSectionActive(e)?`text-(--dashboard-accent)`:`text-(--dashboard-text-soft)`))},[j(r.DashboardIcon,{name:e.iconName},null,8,[`name`])],2),y(`span`,ue,p(e.label),1)]),_:2},1032,[`to`,`class`]),n.mobile||r.isNavigationSectionActive(e)?(x(),M(`p`,de,p(e.caption),1)):A(``,!0),e.children?.length&&r.isNavigationSectionActive(e)?(x(),M(`div`,fe,[(x(!0),M(T,null,s(e.children,e=>(x(),m(r.RouterLink,{key:e.to,to:e.to,class:a(r.cn(`flex min-h-8 min-w-0 items-center gap-2 rounded px-2 py-1.5 text-xs transition-colors`,r.isNavigationItemActive(e.to)?`bg-(--dashboard-panel-muted) font-medium text-(--dashboard-accent)`:`text-(--dashboard-text-soft) hover:bg-(--dashboard-panel-muted) hover:text-(--dashboard-text)`)),onClick:t[1]||=e=>r.emit(`navigate`)},{default:u(()=>[y(`span`,pe,[j(r.DashboardIcon,{name:e.iconName},null,8,[`name`])]),y(`span`,me,p(e.label),1)]),_:2},1032,[`to`,`class`]))),128))])):A(``,!0)]))),128))])}var ge=F(se,[[`render`,he]]),_e=[{value:`system`,label:`跟随系统`,iconName:`theme-system`},{value:`light`,label:`亮色`,iconName:`theme-light`},{value:`dark`,label:`暗色`,iconName:`theme-dark`}],ve=[{key:`overview`,label:`总览`,iconName:`tab-overview`},{key:`diagnostics`,label:`诊断`,iconName:`metric-health`},{key:`review`,label:`评审清单`,iconName:`metric-bookmark`},{key:`graph`,label:`依赖图`,iconName:`tab-modules`},{key:`treemap`,label:`体积地图`,iconName:`treemap`},{key:`files`,label:`文件详情`,iconName:`top-files`},{key:`source`,label:`源码对比`,iconName:`tab-source`},{key:`packages`,label:`包与产物`,iconName:`tab-packages`},{key:`modules`,label:`模块与复用`,iconName:`tab-modules`}],ye=[{value:`all`,label:`全部`},{value:`growth`,label:`增长`},{value:`duplicates`,label:`重复`},{value:`node_modules`,label:`依赖`},{value:`source`,label:`业务`},{value:`selected-package`,label:`当前包`}],be=`weapp-vite DevTools`,xe=[{to:`/`,label:`概览`,caption:`当前构建与运行会话`,iconName:`nav-home`},{to:`/analyze`,label:`构建分析`,caption:`包、模块、文件和分包`,iconName:`nav-analyze`,children:ve.map(e=>({to:e.key===`overview`?`/analyze`:`/analyze?tab=${e.key}`,label:e.label,caption:e.key===`overview`?`全局摘要和建议动作`:e.key===`diagnostics`?`预算、增量和历史基线`:e.key===`review`?`PR 风险和评审清单`:e.key===`graph`?`Chunk 静态与动态依赖`:e.key===`treemap`?`产物体积地图`:e.key===`files`?`文件、预算和模块明细`:e.key===`source`?`源码与产物 Diff`:e.key===`packages`?`包体和产物列表`:`模块复用与来源`,iconName:e.iconName}))},{to:`/activity`,label:`运行事件`,caption:`Build、HMR、命令和错误`,iconName:`nav-activity`},{to:`/tokens`,label:`界面令牌`,caption:`主题、表面和组件状态`,iconName:`nav-tokens`}],Se=[{label:`启动开发`,command:`pnpm --filter @weapp-vite/dashboard dev`,note:`本地预览完整 UI 壳子`,category:`dev`},{label:`生产构建`,command:`pnpm --filter @weapp-vite/dashboard build`,note:`验证静态产物可发布`,category:`build`},{label:`主包联调`,command:`weapp-vite build --ui`,note:`从 CLI 注入真实分析数据`,category:`analyze`}],Ce=[{time:`09:12`,title:`analyze payload synced`,summary:`CLI 已把最新构建结果注入 dashboard,全局状态已完成一次同步。`,tone:`live`},{time:`09:26`,title:`workspace shell extended`,summary:`工作台、活动流、设计令牌已经拆成独立页面。`,tone:`default`},{time:`10:03`,title:`theme system unified`,summary:`主题偏好收敛到应用根部,所有页面共享同一套明暗模式。`,tone:`default`}],we=[{label:`Devframe 协议链路`,detail:`Analyze 查询、运行事件和文件读取统一通过 Devframe 传输。`,status:`已落地`},{label:`路由拓展性`,detail:`页面采用文件路由,主路由表保持稳定。`,status:`可扩展`},{label:`组件复用`,detail:`通用卡片与区块标题已独立,避免页面继续拷贝结构。`,status:`已落地`},{label:`视觉令牌`,detail:`颜色、表面、排版预览集中在 tokens 页面统一检查。`,status:`可验证`}],Te=[{title:`Accent`,iconName:`token-color`,tokens:[{name:`--dashboard-accent`,sample:`var(--dashboard-accent)`},{name:`--dashboard-accent-soft`,sample:`var(--dashboard-accent-soft)`},{name:`--dashboard-border-strong`,sample:`var(--dashboard-border-strong)`}]},{title:`Surfaces`,iconName:`token-surface`,tokens:[{name:`--dashboard-panel`,sample:`var(--dashboard-panel)`},{name:`--dashboard-panel-strong`,sample:`var(--dashboard-panel-strong)`},{name:`--dashboard-panel-muted`,sample:`var(--dashboard-panel-muted)`}]},{title:`Typography`,iconName:`token-type`,tokens:[{name:`--dashboard-text`,sample:`var(--dashboard-text)`},{name:`--dashboard-text-muted`,sample:`var(--dashboard-text-muted)`},{name:`--dashboard-text-soft`,sample:`var(--dashboard-text-soft)`}]}];function Ee(e,t,n){let r=null,i=null;for(let a of e)if(!a.disabled){if(r??=a.value,a.value===t)return a.value;a.value===n&&(i=a.value)}return i??r}function L(e){let t=Number.parseFloat(e);return Number.isFinite(t)?t:0}function De(e,t){let n=getComputedStyle(e),r=Array.from(e.children).reduce((e,n)=>n===t?e:e+n.getBoundingClientRect().width,0),i=Math.max(0,e.children.length-1);return r+L(n.paddingLeft)+L(n.paddingRight)+L(n.borderLeftWidth)+L(n.borderRightWidth)+L(n.columnGap)*i}function Oe(e){let t=e.querySelector(`[role="option"]`),n=t?.querySelector(`[data-option-label]`);if(!t||!n)return e.offsetWidth;let r=e.offsetWidth-e.clientWidth,i=e.clientWidth-t.offsetWidth,a=De(t,n),o=0;for(let t of e.querySelectorAll(`[data-option-label]`)){let e=t.style.whiteSpace;t.style.whiteSpace=`nowrap`,o=Math.max(o,t.scrollWidth),t.style.whiteSpace=e}return o+a+i+r}function ke(e,t){let n=e.getBoundingClientRect(),r=window.visualViewport,i=r?.offsetLeft??0,a=r?.offsetTop??0,o=r?.width??window.innerWidth,s=r?.height??window.innerHeight,c=i+o,l=a+s,u=Math.max(0,o-16),d=Math.min(Math.max(n.width,Oe(t)),u);t.style.width=`${Math.round(d)}px`;let f=l-n.bottom-6-8,p=n.top-a-6-8,m=Math.min(t.scrollHeight+t.offsetHeight-t.clientHeight,288),h=f<Math.min(m,160)&&p>f,g=Math.max(0,h?p:f),_=Math.min(m,g),v=Math.min(Math.max(n.left,i+8),c-d-8),y=h?Math.max(a+8,n.top-6-_):Math.min(n.bottom+6,l-_-8);return{placement:h?`top`:`bottom`,style:{left:`${Math.round(v)}px`,maxHeight:`${Math.floor(g)}px`,top:`${Math.round(y)}px`,width:`${Math.round(d)}px`}}}function Ae(e,n){let a=r(null),o=r(null),s=d(!1),l=r(null),u=d(`bottom`),f=d({}),p=`dashboard-select-${i()}`,m=`${p}-label`,h=`${p}-listbox`,g=`${p}-value`,_=b(()=>e.options.findIndex(t=>t.value===e.modelValue)),v=b(()=>e.options[_.value]),y=b(()=>l.value===null?-1:e.options.findIndex(e=>e.value===l.value)),ee=b(()=>s.value&&y.value>=0?`${h}-option-${y.value}`:void 0);function x(t,n){if(!e.options.length)return-1;for(let r=0;r<e.options.length;r++){let i=(t+n*r+e.options.length)%e.options.length;if(!e.options[i]?.disabled)return i}return-1}function C(t){l.value=e.options[t]?.value??null}function w(){o.value?.querySelector(`[data-option-index="${y.value}"]`)?.scrollIntoView({block:`nearest`})}function T(){if(!s.value||!a.value||!o.value)return;let e=ke(a.value,o.value);u.value=e.placement,f.value=e.style}async function E(t=1){if(e.disabled||!e.options.length)return;let n=x(_.value>=0?_.value:t===1?0:e.options.length-1,t);n<0||(C(n),s.value=!0,await c(),T(),w())}function D(){s.value=!1}function O(){if(s.value){D();return}E()}function k(e){e.disabled||(n(e.value),D(),c(()=>a.value?.focus({preventScroll:!0})))}function A(t){C(x(y.value>=0?y.value+t:t===1?0:e.options.length-1,t)),c(w)}function j(t){if(t.key===`ArrowDown`||t.key===`ArrowUp`){t.preventDefault();let e=t.key===`ArrowDown`?1:-1;if(!s.value){E(e);return}A(e);return}if(t.key===`Home`&&s.value){t.preventDefault(),C(x(0,1)),c(w);return}if(t.key===`End`&&s.value){t.preventDefault(),C(x(e.options.length-1,-1)),c(w);return}if((t.key===`Enter`||t.key===` `)&&s.value){t.preventDefault();let n=e.options[y.value];n&&k(n);return}if(t.key===`Enter`||t.key===` `){t.preventDefault(),E();return}if(t.key===`Escape`&&s.value){t.preventDefault(),D();return}t.key===`Tab`&&D()}function M(e){let t=e.target;t instanceof Node&&(a.value?.contains(t)||o.value?.contains(t)||D())}function N(e){(e?.type!==`scroll`||e.target!==o.value)&&T()}async function te(){if(!s.value)return;if(e.disabled||!e.options.length){D();return}let t=Ee(e.options,l.value,e.modelValue);if(t===null){D();return}l.value=t,await c(),s.value&&(T(),w())}function ne(){document.addEventListener(`pointerdown`,M,!0),document.addEventListener(`scroll`,N,!0),window.addEventListener(`resize`,N),window.visualViewport?.addEventListener(`resize`,N),window.visualViewport?.addEventListener(`scroll`,N)}function P(){document.removeEventListener(`pointerdown`,M,!0),document.removeEventListener(`scroll`,N,!0),window.removeEventListener(`resize`,N),window.visualViewport?.removeEventListener(`resize`,N),window.visualViewport?.removeEventListener(`scroll`,N)}return t(()=>e.modelValue,t=>{if(!s.value)return;let n=Ee(e.options,null,t);if(n===null){D();return}l.value=n,c(w)}),t(()=>e.options,()=>{te()},{deep:!0}),t(()=>e.disabled,e=>{e&&D()}),t(s,e=>{if(e){ne();return}P()}),S(P),{activeDescendant:ee,activeValue:l,closeMenu:D,handleTriggerKeydown:j,isOpen:s,labelId:m,listboxId:h,menuRef:o,menuStyle:f,placement:u,selectedOption:v,selectOption:k,setActiveIndex:C,triggerRef:a,toggleMenu:O,valueId:g}}var je=n({__name:`AppSelect`,props:{label:{},disabled:{type:Boolean,default:!1},modelValue:{},options:{},size:{default:`md`},variant:{default:`default`}},emits:[`update:modelValue`],setup(e,{expose:t,emit:n}){t();let r=e,i=n,{activeDescendant:a,activeValue:o,handleTriggerKeydown:s,isOpen:c,labelId:l,listboxId:u,menuRef:d,menuStyle:f,placement:p,selectedOption:m,selectOption:h,setActiveIndex:g,toggleMenu:_,triggerRef:v,valueId:y}=Ae(r,e=>i(`update:modelValue`,e)),b={props:r,emit:i,activeDescendant:a,activeValue:o,handleTriggerKeydown:s,isOpen:c,labelId:l,listboxId:u,menuRef:d,menuStyle:f,placement:p,selectedOption:m,selectOption:h,setActiveIndex:g,toggleMenu:_,triggerRef:v,valueId:y};return Object.defineProperty(b,"__isScriptSetup",{enumerable:!1,value:!0}),b}}),Me={class:`min-w-0`},Ne=[`aria-activedescendant`,`aria-controls`,`aria-labelledby`,`aria-expanded`,`disabled`,`title`],Pe=[`id`],Fe=[`id`],Ie=[`id`,`aria-labelledby`],Le=[`id`,`aria-selected`,`data-option-index`,`disabled`,`title`,`onClick`,`onMouseenter`],Re={"data-option-label":``,class:`min-w-0 flex-1 [overflow-wrap:anywhere]`},ze={class:`flex size-4 shrink-0 items-center justify-center`,"aria-hidden":`true`},Be={key:0,class:`icon-[mdi--check] size-3.5`};function Ve(e,t,n,r,i,o){return x(),M(`div`,Me,[y(`button`,{ref:`triggerRef`,type:`button`,role:`combobox`,class:a([`group flex w-full min-w-0 items-center justify-between gap-2 rounded-md border text-left text-(--dashboard-text) outline-none transition-colors focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-(--dashboard-accent) disabled:cursor-not-allowed disabled:opacity-55 motion-reduce:transition-none pointer-coarse:min-h-11`,[n.size===`sm`?`h-8 px-2 text-xs`:`h-9 px-2.5 text-sm`,n.variant===`toolbar`?`border-transparent bg-transparent hover:bg-(--dashboard-panel-muted) aria-expanded:bg-(--dashboard-panel-muted)`:`border-(--dashboard-border) bg-(--dashboard-panel-muted) hover:border-(--dashboard-border-strong) hover:bg-(--dashboard-panel)`]]),"aria-activedescendant":r.activeDescendant,"aria-controls":r.isOpen?r.listboxId:void 0,"aria-labelledby":`${r.labelId} ${r.valueId}`,"aria-expanded":r.isOpen,"aria-haspopup":`listbox`,disabled:n.disabled,title:r.selectedOption?.label,onClick:t[0]||=(...e)=>r.toggleMenu&&r.toggleMenu(...e),onKeydown:t[1]||=(...e)=>r.handleTriggerKeydown&&r.handleTriggerKeydown(...e)},[y(`span`,{id:r.labelId,class:a(n.variant===`toolbar`?`shrink-0 text-(--dashboard-text-muted)`:`sr-only`)},p(n.label),11,Pe),y(`span`,{id:r.valueId,class:a([`min-w-0 flex-1 truncate`,n.variant===`toolbar`?`font-medium`:void 0])},p(r.selectedOption?.label??`请选择`),11,Fe),y(`span`,{"aria-hidden":`true`,class:a([`icon-[mdi--chevron-down] size-3.5 shrink-0 text-(--dashboard-text-soft) transition-transform duration-150 group-hover:text-(--dashboard-text) motion-reduce:transition-none`,r.isOpen?`rotate-180 text-(--dashboard-text)`:void 0])},null,2)],42,Ne),(x(),m(C,{to:`body`},[j(O,{"enter-active-class":`transition duration-100 ease-out motion-reduce:transition-none motion-reduce:duration-0`,"enter-from-class":`opacity-0 scale-[0.98]`,"enter-to-class":`opacity-100 scale-100`,"leave-active-class":`transition duration-75 ease-in motion-reduce:transition-none motion-reduce:duration-0`,"leave-from-class":`opacity-100 scale-100`,"leave-to-class":`opacity-0 scale-[0.98]`},{default:u(()=>[r.isOpen?(x(),M(`div`,{key:0,id:r.listboxId,ref:`menuRef`,role:`listbox`,class:a([`fixed z-[120] overflow-y-auto rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-strong) p-1 shadow-lg shadow-black/15 outline-none motion-reduce:scale-100 motion-reduce:opacity-100`,r.placement===`top`?`origin-bottom`:`origin-top`]),style:f(r.menuStyle),"aria-labelledby":r.labelId},[(x(!0),M(T,null,s(n.options,(e,i)=>(x(),M(`button`,{id:`${r.listboxId}-option-${i}`,key:e.value,type:`button`,role:`option`,tabindex:`-1`,class:a([`flex min-h-8 w-full items-center justify-start gap-3 rounded-sm px-2.5 py-1.5 text-left outline-none transition-colors disabled:cursor-not-allowed disabled:opacity-45 pointer-coarse:min-h-11 motion-reduce:transition-none`,[n.size===`sm`?`text-xs`:`text-sm`,e.value===n.modelValue?`font-medium text-(--dashboard-accent)`:`text-(--dashboard-text)`,r.activeValue===e.value?`bg-(--dashboard-panel-muted)`:void 0]]),"aria-selected":e.value===n.modelValue,"data-option-index":i,disabled:e.disabled,title:e.label,onClick:t=>r.selectOption(e),onMouseenter:e=>r.setActiveIndex(i),onMousedown:t[2]||=v(()=>{},[`prevent`])},[y(`span`,Re,p(e.label),1),y(`span`,ze,[e.value===n.modelValue?(x(),M(`span`,Be)):A(``,!0)])],42,Le))),128))],14,Ie)):A(``,!0)]),_:1})]))])}var He=F(je,[[`render`,Ve]]),Ue=n({__name:`AppShellHeader`,props:{connectionStatus:{},hasPayload:{type:Boolean},packageCount:{},title:{},description:{},themeOptions:{},themePreference:{}},emits:[`menu`,`setTheme`],setup(e,{expose:t,emit:n}){t();let r=e,i={props:r,emit:n,currentThemeIconName:b(()=>r.themeOptions.find(e=>e.value===r.themePreference)?.iconName??`theme-system`),connectionLabel:b(()=>r.connectionStatus===`connected`?`${be} connected`:r.connectionStatus===`unauthorized`?`Authorization required`:r.connectionStatus),get cn(){return ie},AppSelect:He,DashboardIcon:I};return Object.defineProperty(i,"__isScriptSetup",{enumerable:!1,value:!0}),i}}),We={class:`flex min-h-13 items-center justify-between gap-3 border-b border-(--dashboard-border) bg-(--dashboard-panel) px-3 lg:px-4`},Ge={class:`flex min-w-0 items-center gap-2.5`},Ke={class:`h-4 w-4`},qe={class:`min-w-0`},Je={class:`flex min-w-0 items-center gap-2`},Ye={class:`truncate text-sm font-semibold text-(--dashboard-text)`},Xe={key:0,class:`hidden truncate text-[11px] text-(--dashboard-text-soft) md:block`},Ze={class:`flex shrink-0 items-center gap-1.5`},Qe={class:`hidden items-center gap-1.5 rounded border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-2 py-1 text-[11px] text-(--dashboard-text-muted) sm:inline-flex`},$e={class:`hidden rounded border border-(--dashboard-border) px-2 py-1 font-mono text-[10px] text-(--dashboard-text-soft) md:inline-flex`},et={class:`inline-flex items-center gap-1.5 text-[11px] text-(--dashboard-text-muted)`},tt={class:`h-3.5 w-3.5 text-(--dashboard-text-soft)`};function nt(e,t,n,r,i,o){return x(),M(`header`,We,[y(`div`,Ge,[y(`button`,{class:`inline-flex h-8 w-8 shrink-0 items-center justify-center rounded border border-(--dashboard-border) bg-(--dashboard-panel-muted) text-(--dashboard-text) lg:hidden`,type:`button`,"aria-label":`打开 DevTools 导航`,onClick:t[0]||=e=>r.emit(`menu`)},[y(`span`,Ke,[j(r.DashboardIcon,{name:`nav-menu`})])]),y(`div`,qe,[y(`div`,Je,[y(`h1`,Ye,p(n.title),1),n.description?(x(),M(`span`,Xe,p(n.description),1)):A(``,!0)])])]),y(`div`,Ze,[y(`span`,Qe,[y(`span`,{class:a(r.cn(`h-1.5 w-1.5 rounded-full`,n.connectionStatus===`connected`?`bg-emerald-500`:n.connectionStatus===`error`?`bg-red-500`:`bg-amber-500`))},null,2),g(` `+p(r.connectionLabel),1)]),y(`span`,$e,p(n.hasPayload?`${n.packageCount} packages`:`no payload`),1),y(`div`,et,[y(`span`,tt,[j(r.DashboardIcon,{name:r.currentThemeIconName},null,8,[`name`])]),j(r.AppSelect,{class:`w-24`,label:`主题`,"model-value":n.themePreference,options:n.themeOptions,size:`sm`,"onUpdate:modelValue":t[1]||=e=>r.emit(`setTheme`,e)},null,8,[`model-value`,`options`])])])])}var rt=F(Ue,[[`render`,nt]]),it=`weapp-vite-dashboard-theme`;function at(){if(typeof window>`u`)return`system`;let e=window.localStorage.getItem(it);return e===`light`||e===`dark`||e===`system`?e:`system`}function ot(e,t){return e===`light`||e===`dark`?e:t?.matches?`dark`:`light`}function st(){let n=d(at()),r=typeof window<`u`?window.matchMedia(`(prefers-color-scheme: dark)`):null,i=b(()=>ot(n.value,r)),a=e=>{typeof document<`u`&&(document.documentElement.dataset.theme=e,document.documentElement.style.colorScheme=e)},o=e=>{typeof window<`u`&&window.localStorage.setItem(it,e)},s=()=>{a(i.value)};return t(n,e=>{o(e),a(i.value)},{immediate:!0}),e(()=>{r?.addEventListener(`change`,s),a(i.value)}),S(()=>{r?.removeEventListener(`change`,s)}),{themePreference:n,resolvedTheme:i,setThemePreference(e){n.value=e}}}var ct=Symbol(`dashboard-theme`);function lt(e){o(ct,e)}function ut(){return l(ct,null)||st()}var dt=`weapp-vite-dashboard:analyze-result-history`;function ft(e){return e.toLocaleString(`zh-CN`,{month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`,hour12:!1})}function pt(e){return e?JSON.stringify({projectName:e.metadata?.projectName,packages:e.packages,modules:e.modules,subPackages:e.subPackages,budgets:e.metadata?.budgets}):``}function R(e,t){let n=e?.metadata?.projectName,r=t?.metadata?.projectName;return!!(n&&r&&n===r)}function mt(e,t){if(!t)return null;if(R(e,t))return t;let n=e.metadata?.projectName;return!n||t.metadata?.projectName||!t.metadata?null:{...t,metadata:{...t.metadata,projectName:n}}}function z(e,t){return pt(e)===pt(t)}function ht(e){return e.packages.flatMap(e=>e.files).reduce((e,t)=>e+(t.size??0),0)}function gt(e){return e.packages.flatMap(e=>e.files).reduce((e,t)=>e+(t.brotliSize??t.gzipSize??Math.round((t.size??0)*.32)),0)}function _t(e,t){let n=ht(e);return`${Date.parse(t).toString(36)}-${n.toString(36)}-${e.modules.length.toString(36)}`}function B(e,t=new Date().toISOString()){let n=e.modules.filter(e=>e.packages.length>1).length;return{id:_t(e,t),capturedAt:t,label:ft(new Date(t)),result:e,totalBytes:ht(e),compressedBytes:gt(e),packageCount:e.packages.length,moduleCount:e.modules.length,duplicateCount:n}}function vt(e){let t=(e.snapshots??[]).filter(t=>R(e.current,t.result));e.previous&&R(e.current,e.previous)&&t.push(B(e.previous)),t.push(B(e.current));let n=new Map;for(let e of t){let t=pt(e.result);n.has(t)||n.set(t,e)}return[...n.values()].sort((e,t)=>Date.parse(t.capturedAt)-Date.parse(e.capturedAt)).slice(0,12)}function yt(){try{let e=window.localStorage.getItem(dt);if(!e)return null;let t=JSON.parse(e);return!t?.current?.packages||!Array.isArray(t.current.packages)?null:{current:t.current,previous:t.previous?.packages?t.previous:null,snapshots:Array.isArray(t.snapshots)?t.snapshots.filter(e=>e?.result?.packages&&Array.isArray(e.result.packages)):void 0,baselineSnapshotId:typeof t.baselineSnapshotId==`string`?t.baselineSnapshotId:null,comparisonMode:t.comparisonMode===`baseline`?`baseline`:`previous`}}catch{return null}}function bt(e){try{window.localStorage.setItem(dt,JSON.stringify(e))}catch{}}function xt(e,t,n){return e?mt(e,t)||(n?.current&&!R(e,n.current)?null:n?.current&&!z(e,n.current)?n.current:n?.previous&&R(e,n.previous)?n.previous:null):null}function V(e){if(!e||Number.isNaN(e))return`—`;let t=1024,n=[`B`,`KB`,`MB`,`GB`],r=e,i=0;for(;r>=t&&i<n.length-1;)r/=t,i++;return`${r.toFixed(r>=100||i===0?0:2)} ${n[i]}`}function St(e,t=``,n=``){if(!e||Number.isNaN(e)||e<=0)return 0;let r=t.toLowerCase().split(`.`).pop()??``,i=new Set([`cjs`,`css`,`html`,`js`,`json`,`map`,`mjs`,`svg`,`txt`,`wxml`,`wxss`,`xml`]),a=new Set([`avif`,`br`,`gif`,`gz`,`jpeg`,`jpg`,`mp3`,`mp4`,`ogg`,`otf`,`png`,`webp`,`woff`,`woff2`,`zip`]);return i.has(r)?Math.max(1,Math.round(e*.34)):a.has(r)?Math.max(1,Math.round(e*.92)):n===`chunk`?Math.max(1,Math.round(e*.38)):Math.max(1,Math.round(e*.72))}function Ct(e){switch(e){case`main`:return`主包`;case`subPackage`:return`分包`;case`independent`:return`独立分包`;case`virtual`:return`虚拟包`;default:return e}}function wt(e){return e===`independent`?`独立构建`:`主构建`}function Tt(e){let t=e.indexOf(`?`),n=(t===-1?e:e.slice(0,t)).replaceAll(`\\`,`/`).replace(/^\0/,``),r=n.lastIndexOf(`/node_modules/`);if(r>=0)return n.slice(r+14);if(n.startsWith(`node_modules/`))return n.slice(13);let i=n.lastIndexOf(`/packages-runtime/wevu/`);if(i>=0)return`wevu/${n.slice(i+23)}`;let a=n.match(/\/(@[^/]+\/[^/]+)\/(dist\/.*)$/);if(a)return`${a[1]}/${a[2]}`;let o=n.lastIndexOf(`/src/`);return o>=0?n.slice(o+5):n.replace(/^(?:\.\.\/)+/,``)}function Et(e){switch(e){case`src`:return`业务源码`;case`workspace`:return`工作区包`;case`plugin`:return`插件`;case`node_modules`:return`依赖`;default:return e}}function Dt(e){switch(e){case`command`:return`命令`;case`build`:return`构建`;case`diagnostic`:return`诊断`;case`hmr`:return`HMR`;case`system`:return`系统`;default:return e}}function Ot(e){switch(e){case`info`:return`信息`;case`success`:return`成功`;case`warning`:return`警告`;case`error`:return`错误`;default:return e}}function kt(e){return e??`dashboard`}function At(e){return e}function jt(e){return{label:Ot(e.level),tone:At(e.level)}}function Mt(e){return e>0?`error`:`info`}function Nt(e){return{label:e.latestTimestamp?`${e.count} 条`:`错误 ${e.errorCount}`,tone:Mt(e.errorCount)}}function H(e){return typeof e!=`number`||Number.isNaN(e)||e<0?`未记录`:e>=1e3?`${(e/1e3).toFixed(e>=1e4?1:2)} s`:`${e} ms`}function Pt(e){let t=[Dt(e.kind),kt(e.source),e.timestamp];return typeof e.durationMs==`number`&&Number.isFinite(e.durationMs)&&e.durationMs>=0&&t.push(H(e.durationMs)),t.join(` · `)}var Ft=[`command`,`build`,`diagnostic`,`hmr`,`system`],It=[`info`,`success`,`warning`,`error`];function Lt(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function Rt(e){return typeof e==`string`&&Ft.includes(e)?e:`system`}function zt(e){return typeof e==`string`&&It.includes(e)?e:`info`}function U(e,t){return typeof e==`string`&&e.trim()?e:t}function W(e){return typeof e==`number`&&Number.isFinite(e)&&e>=0?e:void 0}function Bt(e){if(!Array.isArray(e))return;let t=e.filter(e=>typeof e==`string`&&e.trim()).map(e=>String(e));return t.length>0?t:void 0}function Vt(e){if(!Array.isArray(e))return;let t=e.filter(e=>typeof e==`string`&&e.trim()).map(e=>String(e));return t.length>0?t:void 0}function Ht(e){if(!Lt(e))return;let t={timestamp:typeof e.timestamp==`string`?e.timestamp:void 0,totalMs:W(e.totalMs),eventId:typeof e.eventId==`string`?e.eventId:void 0,event:typeof e.event==`string`?e.event:void 0,file:typeof e.file==`string`?e.file:void 0,relativeFile:typeof e.relativeFile==`string`?e.relativeFile:void 0,sourceRootFile:typeof e.sourceRootFile==`string`?e.sourceRootFile:void 0,buildCoreMs:W(e.buildCoreMs),transformMs:W(e.transformMs),writeMs:W(e.writeMs),watchToDirtyMs:W(e.watchToDirtyMs),emitMs:W(e.emitMs),sharedChunkResolveMs:W(e.sharedChunkResolveMs),dirtyCount:W(e.dirtyCount),pendingCount:W(e.pendingCount),emittedCount:W(e.emittedCount),dirtyReasonSummary:Vt(e.dirtyReasonSummary),pendingReasonSummary:Vt(e.pendingReasonSummary)};return Object.values(t).some(e=>e!==void 0)?t:void 0}function Ut(e,t){return{id:U(e.id,`dashboard-runtime-event-${t}`),kind:Rt(e.kind),level:zt(e.level),title:U(e.title,`untitled event`),detail:U(e.detail,`no event detail`),timestamp:U(e.timestamp,`—`),source:U(e.source,`dashboard`),durationMs:W(e.durationMs),tags:Bt(e.tags),profile:Ht(e.profile)}}function Wt(e){return{count:1,errorCount:+(e.level===`error`),latestTimestamp:e.timestamp,durationTotal:e.durationMs??0,timedCount:+(typeof e.durationMs==`number`)}}function Gt(e,t){return{count:e.count+1,errorCount:e.errorCount+ +(t.level===`error`),latestTimestamp:e.latestTimestamp,durationTotal:e.durationTotal+(t.durationMs??0),timedCount:e.timedCount+ +(typeof t.durationMs==`number`)}}function Kt(e,t){return{source:e,count:t.count,errorCount:t.errorCount,latestTimestamp:t.latestTimestamp,averageDurationMs:t.timedCount>0?Math.round(t.durationTotal/t.timedCount):void 0}}function qt(e){return{...e,averageDuration:H(e.averageDurationMs)}}function Jt(e,t){return Lt(e)?Ut(e,t):null}function Yt(e){let t=(Array.isArray(e)?e:[e]).map((e,t)=>Jt(e,t)).filter(e=>!!e),n=new Map;for(let e of t)n.set(e.id,e);return[...n.values()]}function Xt(e){let t=new Map;for(let n of e){let e=n.source??`dashboard`,r=t.get(e);if(!r){t.set(e,Wt(n));continue}t.set(e,Gt(r,n))}return Array.from(t,([e,t])=>Kt(e,t)).sort((e,t)=>t.count-e.count||e.source.localeCompare(t.source,`zh-CN`))}function Zt(e){return e.map(e=>qt(e))}var G=new Map,Qt=2;function $t(e,t){return e.characters===t.characters&&e.hash===t.hash&&e.pages===t.pages}function en(e,t){for(G.delete(e.hash),G.set(e.hash,t);G.size>Qt;){let e=G.keys().next().value;if(typeof e!=`string`)break;G.delete(e)}}function tn(e){let t=JSON.parse(e);if(!Array.isArray(t?.packages)||!Array.isArray(t.modules)||!Array.isArray(t.subPackages))throw TypeError(`Devframe 返回了无效的 Analyze 数据。`);return t}async function nn(e,t,n,r){let i=G.get(t.hash);if(i)return en(t,i),i;let a=[],o=0;for(let i=0;i<t.pages;i++){let s=await e.call(`get-analyze-page`,{index:i,revision:r,target:n});if(s.index!==i||s.revision!==r||s.target!==n||!$t(s.descriptor,t))throw Error(`Devframe 返回了不一致的 Analyze 分页。`);a.push(s.content),o+=s.content.length}if(o!==t.characters)throw Error(`Devframe 返回了不完整的 Analyze 分页。`);let s=tn(a.join(``));return en(t,s),s}async function rn(e,t,n){let r=t.previous?await nn(e,t.previous,`previous`,n):null;return{current:await nn(e,t.current,`current`,n),previous:r}}var an=`weapp-vite`,on=[250,500,1e3,2e3,5e3],sn=/Analyze revision|revision.*Dashboard 状态/i,cn=class extends Error{name=`DashboardAuthorizationError`},K=r(null),q=r(null),J=r(null),Y=r(`connecting`),ln=r([]),X,Z,un=0,Q,dn;function fn(e){Y.value=e.status,J.value=e.connectionError}function pn(){Q&&=(clearTimeout(Q),void 0)}function mn(e,t){e.disposed||(e.disposed=!0,e.dispose(),X===e&&(X=void 0),t&&e.client.close?.())}function hn(){if(Q||X)return;let e=on[Math.min(un,on.length-1)];un+=1,Q=setTimeout(()=>{if(Q=void 0,Y.value=`connecting`,!dn){Y.value=`error`,J.value=Error(`Devframe Dashboard 重连状态机尚未初始化。`);return}dn().catch(()=>{})},e)}function gn(e,t){if(X!==e||e.disposed)return;let n=e.client.status;fn(e.client),t&&(J.value=t instanceof Error?t:Error(String(t))),(n===`disconnected`||n===`error`||n===`unauthorized`)&&(mn(e,!0),n!==`unauthorized`&&hn())}function _n(e,t){X!==e||e.disposed||(Y.value=`error`,J.value=t instanceof Error?t:Error(String(t)),mn(e,!0),hn())}function vn(e){return e instanceof Error&&sn.test(e.message)}async function yn(e,t){if(!e.disposed){if(e.refreshPromise)return e.pendingState=t,await e.refreshPromise;e.pendingState=t,e.refreshPromise=(async()=>{do{let t=e.pendingState;if(e.pendingState=void 0,t??=await e.dashboard.rpc.call(`get-dashboard-state`),ln.value=Yt(t.runtimeEvents),t.revision===e.revision&&K.value)continue;let n;try{n=await rn(e.dashboard.rpc,t.analyze,t.revision)}catch(t){if(!vn(t))throw t;e.pendingState=await e.dashboard.rpc.call(`get-dashboard-state`);continue}if(e.disposed)return;if(e.pendingState)continue;e.revision=t.revision;let r=q.value;K.value=n,q.value=t.revision,r===t.revision&&E(q)}while(e.pendingState)})();try{await e.refreshPromise}finally{e.refreshPromise=void 0}}}function bn(e){let t=e.scope(an),n={client:e,dashboard:t,dispose:()=>{},disposed:!1,revision:-1};t.rpc.register({name:`dashboard-state-updated`,type:`event`,handler:e=>{n.disposed||yn(n,e).catch(e=>{_n(n,e)})}});let r=e.events.on(`connection:status`,()=>{if(e.status===`connected`){un=0,fn(e);return}gn(n,e.connectionError)}),i=e.events.on(`connection:error`,e=>{gn(n,e)});return n.dispose=()=>{r(),i()},n}async function xn(){let e=await te({callTimeout:3e4,webmcp:!1}),t;try{if(!await e.ensureTrusted())throw new cn(`Devframe 未授权当前 Dashboard 连接。`);if(t=bn(e),X=t,fn(e),await yn(t),t.disposed)throw Error(`Devframe Dashboard 连接在初始化期间断开。`);ne(),un=0}catch(n){let r=e.status===`unauthorized`;throw t?mn(t,!0):e.close?.(),r&&!(n instanceof cn)?new cn(`Devframe 未授权当前 Dashboard 连接。`,{cause:n}):n}}async function Sn(){if(X?.client.status!==`connected`||X.disposed){if(Z)return await Z;pn(),Y.value=`connecting`,Z=xn();try{await Z}catch(e){let t=e instanceof cn;throw Y.value=t?`unauthorized`:`error`,J.value=e instanceof Error?e:Error(String(e)),t||hn(),J.value}finally{Z=void 0}}}dn=Sn;async function Cn(e,t,n){await Sn();let r=X;if(!r||r.disposed||r.client.status!==`connected`)throw Error(`Devframe Dashboard 当前未连接。`);if(r.revision!==n||q.value!==n)throw Error(`Analyze revision 已变化,请刷新当前 Dashboard 状态。`);let i=await r.dashboard.rpc.call(`read-dashboard-file`,{kind:e,path:t,revision:n});if(X!==r||r.disposed||r.client.status!==`connected`)throw Error(`Devframe Dashboard 文件读取期间连接已变化。`);if(r.revision!==n||q.value!==n)throw Error(`Analyze revision 已变化,请刷新当前 Dashboard 状态。`);return i}function $(e,t){return{label:e,value:t}}function wn(){return new Date().toLocaleTimeString(`zh-CN`,{hour12:!1})}function Tn(e){if(!e)return{packageCount:0,moduleCount:0,duplicateCount:0,totalBytes:0};let t=e.packages.flatMap(e=>e.files);return{packageCount:e.packages.length,moduleCount:e.modules.length,duplicateCount:e.modules.filter(e=>e.packages.length>1).length,totalBytes:t.reduce((e,t)=>e+(t.size??0),0)}}function En(e){let t=e.filter(e=>e.level===`error`).length,n=e.filter(e=>e.level===`warning`).length,r=e.filter(e=>e.kind===`command`).length,i=e.filter(e=>typeof e.durationMs==`number`),a=i.length>0?Math.round(i.reduce((e,t)=>e+(t.durationMs??0),0)/i.length):void 0;return[$(`总事件数`,String(e.length)),$(`命令事件`,String(r)),$(`已记录耗时`,String(i.length)),$(`平均耗时`,H(a)),$(`警告事件`,String(n)),$(`错误事件`,String(t))]}function Dn(e){return[{label:`页面骨架`,value:`4 个`,iconName:`metric-ready`},{label:`连接状态`,value:e.result?`已接入 payload`:`等待注入`,iconName:e.result?`status-live`:`metric-health`},{label:`数据同步`,value:`${e.updateCount} 次`,iconName:`metric-latency`},{label:`产物体积`,value:e.result?V(e.summary.totalBytes):`未载入`,iconName:`metric-quality`},{label:`运行事件`,value:`${e.runtimeEventCount} 条`,iconName:e.latestRuntimeEvent?.level===`error`?`metric-health`:`metric-time`}]}function On(e){return e.result?[{label:`重新分析当前工程`,command:`weapp-vite analyze`,note:`最近同步于 ${e.lastUpdatedAt},当前可读取 ${e.summary.packageCount} 个包。`,category:`analyze`},{label:`进入构建联调`,command:`weapp-vite build --ui`,note:`当前产物总体积 ${V(e.summary.totalBytes)},适合继续核对 chunk 结构。`,category:`build`},{label:`观察开发态更新`,command:`weapp-vite dev --ui`,note:`已记录 ${e.updateCount} 次 payload 同步,后续可继续接入更细粒度事件。`,category:`dev`}]:Se}function kn(e){let t=[...Ce];for(let n of e.runtimeEvents.slice(0,4))t.unshift({time:n.timestamp,title:n.title,summary:n.detail,tone:n.level===`error`||n.level===`warning`?`default`:`live`});return e.result&&t.unshift({time:e.lastUpdatedAt,title:`workspace payload received`,summary:`已收到一份真实 analyze 结果,包含 ${e.summary.packageCount} 个包和 ${e.summary.moduleCount} 个模块。`,tone:`live`}),t}function An(e){let t=[...we];return e.latestRuntimeEvent&&t.unshift({label:`最新运行事件`,detail:`${e.latestRuntimeEvent.title} · ${e.latestRuntimeEvent.detail}`,status:e.latestRuntimeEvent.level}),e.result?[{label:`实时分析状态`,detail:`已接入 payload,当前记录 ${e.summary.duplicateCount} 个跨包复用模块。`,status:`在线`},{label:`产物规模`,detail:`总产物体积 ${V(e.summary.totalBytes)},可继续进入分析页查看 treemap 与最大文件。`,status:`可分析`},...t]:[{label:`CLI 注入链路`,detail:`尚未接收到 analyze payload,当前页面以空态方式工作。`,status:`待接入`},...t]}var jn=Symbol(`dashboard-workspace`);function Mn(){return Yt(ln.value)}function Nn(e){let n=b(()=>e.value[0]??null),r=b(()=>En(e.value)),i=b(()=>Xt(e.value)),a=t(ln,t=>{let n=Yt(t);n.length>0&&(e.value=n.slice(0,24))},{immediate:!0});return S(a),{eventSummary:r,latestRuntimeEvent:n,runtimeSourceSummary:i}}function Pn(){let e=K.value?.current??null,n=K.value?.previous??null,i=yt(),a=r(e),o=r(xt(e,n,i)),s=r(i?vt(i):e?[B(e)]:[]),c=r(i?.baselineSnapshotId&&s.value.some(e=>e.id===i.baselineSnapshotId)?i.baselineSnapshotId:null),l=r(i?.comparisonMode===`baseline`&&c.value?`baseline`:`previous`),u=r(Mn()),d=r(0),f=r(a.value?wn():`—`);e&&bt({current:e,previous:o.value,snapshots:s.value,baselineSnapshotId:c.value,comparisonMode:l.value});let p=b(()=>Tn(a.value)),{eventSummary:m,latestRuntimeEvent:h,runtimeSourceSummary:g}=Nn(u),_=b(()=>a.value?`payload ready`:`awaiting payload`),v=b(()=>a.value?`${p.value.packageCount} 个包 · ${p.value.moduleCount} 个模块`:`尚未接收到 CLI analyze 数据`),y=b(()=>s.value.find(e=>e.id===c.value)??null),ee=b(()=>l.value===`baseline`?y.value?.result??o.value:o.value),x=b(()=>Dn({result:a.value,updateCount:d.value,summary:p.value,runtimeEventCount:u.value.length,latestRuntimeEvent:h.value})),C=b(()=>On({result:a.value,lastUpdatedAt:f.value,summary:p.value,updateCount:d.value})),w=b(()=>kn({runtimeEvents:u.value,result:a.value,lastUpdatedAt:f.value,summary:p.value})),T=b(()=>An({result:a.value,latestRuntimeEvent:h.value,summary:p.value})),E=e=>{let t=e?.current;if(!t)return;let n=mt(t,e.previous),r=!(!a.value||R(t,a.value));r&&(o.value=null,s.value=[],c.value=null,l.value=`previous`);let i=yt(),u=!!(i?.current&&R(t,i.current)),p=u&&i?.previous&&R(t,i.previous)?i.previous:null;u&&i?.current&&!z(t,i.current)&&(p=i.current),!r&&a.value&&R(t,a.value)&&!z(t,a.value)&&(p=a.value),n&&!z(t,n)&&(p=n),o.value=p&&!z(t,p)?p:null,a.value=t;let m=B(t),h=vt({current:t,previous:o.value,snapshots:[m,...s.value.filter(e=>R(t,e.result))]});s.value=h,c.value&&!h.some(e=>e.id===c.value)&&(c.value=null),l.value===`baseline`&&!c.value&&(l.value=`previous`),bt({current:t,previous:o.value,snapshots:s.value,baselineSnapshotId:c.value,comparisonMode:l.value}),d.value+=1,f.value=wn()},D=()=>{a.value&&bt({current:a.value,previous:o.value,snapshots:s.value,baselineSnapshotId:c.value,comparisonMode:l.value})},O=e=>{s.value.some(t=>t.id===e)&&(c.value=e,l.value=`baseline`,D())},k=e=>{l.value=e===`baseline`&&!c.value?`previous`:e,D()},A=t(K,E,{immediate:!0});return S(A),{resultRef:a,previousResultRef:o,comparisonResultRef:ee,historySnapshots:s,baselineSnapshotId:c,comparisonMode:l,updateCount:d,lastUpdatedAt:f,statusLabel:_,statusSummary:v,commandItems:C,activityItems:w,diagnostics:T,signals:x,runtimeEvents:u,latestRuntimeEvent:h,eventSummary:m,runtimeSourceSummary:g,setBaselineSnapshot:O,setComparisonMode:k}}function Fn(e){o(jn,e)}function In(){let e=l(jn,null);if(!e)throw Error(`[dashboard] workspace context is not available`);return e}var Ln=n({__name:`App`,setup(n,{expose:r}){r();let i=h(),a=d(!1),{themePreference:o,resolvedTheme:s,setThemePreference:c}=st(),l=Pn(),u=b(()=>!!l.resultRef.value),f=b(()=>l.resultRef.value?.metadata?.projectName??`未命名小程序`),p=b(()=>typeof i.query.tab==`string`?i.query.tab:`overview`);lt({themePreference:o,resolvedTheme:s,setThemePreference:c}),Fn(l);let m=b(()=>i.path.startsWith(`/analyze`)?{title:`构建分析`,description:`包、模块、文件与构建诊断`}:i.path.startsWith(`/activity`)?{title:`运行事件`,description:`Build、HMR、命令和错误`}:i.path.startsWith(`/tokens`)?{title:`设计令牌`,description:`Dashboard 主题与组件状态`}:{title:`概览`,description:`当前构建与运行会话`});t(()=>i.fullPath,()=>{a.value=!1});function g(e){e.key===`Escape`&&(a.value=!1)}e(()=>window.addEventListener(`keydown`,g)),S(()=>window.removeEventListener(`keydown`,g));let _={route:i,mobileNavOpen:a,themePreference:o,resolvedTheme:s,setThemePreference:c,workspace:l,hasPayload:u,projectName:f,currentAnalyzeTab:p,pageMeta:m,closeMobileNavigation:g,get RouterView(){return w},AppNavigationList:ge,AppShellHeader:rt,DashboardIcon:I,get dashboardDevtoolsName(){return be},get workspaceNavigation(){return xe},get themeOptions(){return _e},get dashboardConnectionStatus(){return Y}};return Object.defineProperty(_,"__isScriptSetup",{enumerable:!1,value:!0}),_}}),Rn={class:`h-dvh overflow-hidden bg-(--dashboard-bg) text-(--dashboard-text)`},zn={class:`grid h-full min-w-0 lg:grid-cols-[15rem_minmax(0,1fr)]`},Bn={class:`hidden min-h-0 border-r border-(--dashboard-border) bg-(--dashboard-panel) lg:flex lg:flex-col`},Vn={class:`flex h-13 shrink-0 items-center gap-2.5 border-b border-(--dashboard-border) px-3`},Hn={class:`flex h-7 w-7 items-center justify-center rounded bg-(--dashboard-accent-soft) text-(--dashboard-accent)`},Un={class:`h-4 w-4`},Wn={class:`min-w-0`},Gn={class:`block truncate text-[13px] font-semibold`},Kn={class:`block truncate font-mono text-[10px] text-(--dashboard-text-soft)`},qn={class:`min-h-0 flex-1 overflow-y-auto`},Jn={class:`shrink-0 border-t border-(--dashboard-border) px-3 py-2.5`},Yn={class:`flex items-center gap-2 text-[11px]`},Xn={class:`truncate text-(--dashboard-text-muted)`},Zn={class:`mt-1 truncate font-mono text-[10px] text-(--dashboard-text-soft)`},Qn={class:`flex min-h-0 min-w-0 flex-col`},$n={class:`min-h-0 min-w-0 flex-1 overflow-y-auto p-3 lg:p-4`},er={key:0,class:`fixed inset-y-0 left-0 z-50 flex w-[min(17rem,88vw)] flex-col border-r border-(--dashboard-border) bg-(--dashboard-panel) shadow-xl lg:hidden`},tr={class:`flex h-13 items-center justify-between border-b border-(--dashboard-border) px-3`},nr={class:`min-w-0`},rr={class:`block truncate text-sm`},ir={class:`block truncate font-mono text-[10px] text-(--dashboard-text-soft)`};function ar(e,t,n,r,i,o){return x(),M(`div`,Rn,[y(`div`,zn,[y(`aside`,Bn,[y(`div`,Vn,[y(`span`,Hn,[y(`span`,Un,[j(r.DashboardIcon,{name:`hero-system`})])]),y(`span`,Wn,[y(`strong`,Gn,p(r.dashboardDevtoolsName),1),y(`span`,Kn,p(r.projectName),1)])]),y(`div`,qn,[j(r.AppNavigationList,{"current-analyze-tab":r.currentAnalyzeTab,"current-path":r.route.path,items:r.workspaceNavigation},null,8,[`current-analyze-tab`,`current-path`,`items`])]),y(`div`,Jn,[y(`div`,Yn,[y(`span`,{class:a([`h-1.5 w-1.5 rounded-full`,r.dashboardConnectionStatus===`connected`?`bg-emerald-500`:r.dashboardConnectionStatus===`error`?`bg-red-500`:`bg-amber-500`])},null,2),y(`span`,Xn,p(r.dashboardConnectionStatus===`connected`?`${r.dashboardDevtoolsName} connected`:r.dashboardConnectionStatus),1)]),y(`p`,Zn,p(r.workspace.statusSummary.value),1)])]),y(`main`,Qn,[j(r.AppShellHeader,{"connection-status":r.dashboardConnectionStatus,"has-payload":r.hasPayload,"package-count":r.workspace.resultRef.value?.packages.length??0,title:r.pageMeta.title,description:r.pageMeta.description,"theme-options":r.themeOptions,"theme-preference":r.themePreference,onMenu:t[0]||=e=>r.mobileNavOpen=!0,onSetTheme:r.setThemePreference},null,8,[`connection-status`,`has-payload`,`package-count`,`title`,`description`,`theme-options`,`theme-preference`,`onSetTheme`]),y(`div`,$n,[j(r.RouterView)])])]),j(O,{"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:u(()=>[r.mobileNavOpen?(x(),M(`div`,{key:0,class:`fixed inset-0 z-40 bg-slate-950/45 lg:hidden`,onClick:t[1]||=e=>r.mobileNavOpen=!1})):A(``,!0)]),_:1}),j(O,{"enter-active-class":`transition duration-150 ease-out`,"enter-from-class":`-translate-x-4`,"enter-to-class":`translate-x-0`,"leave-active-class":`transition duration-100 ease-in`,"leave-from-class":`translate-x-0`,"leave-to-class":`-translate-x-4`},{default:u(()=>[r.mobileNavOpen?(x(),M(`aside`,er,[y(`div`,tr,[y(`span`,nr,[y(`strong`,rr,p(r.dashboardDevtoolsName),1),y(`span`,ir,p(r.projectName),1)]),y(`button`,{class:`h-8 w-8 rounded border border-(--dashboard-border)`,type:`button`,"aria-label":`关闭导航`,onClick:t[2]||=e=>r.mobileNavOpen=!1},` × `)]),j(r.AppNavigationList,{mobile:``,"current-analyze-tab":r.currentAnalyzeTab,"current-path":r.route.path,items:r.workspaceNavigation,onNavigate:t[3]||=e=>r.mobileNavOpen=!1},null,8,[`current-analyze-tab`,`current-path`,`items`])])):A(``,!0)]),_:1})])}var or=F(Ln,[[`render`,ar]]),sr=D({history:ee(new URL(`.`,document.baseURI).pathname),routes:[{path:`/`,name:`/`,component:()=>P(()=>import(`./pages.js`),[],import.meta.url)},{path:`/activity`,name:`/activity`,component:()=>P(()=>import(`./activity.js`),__vite__mapDeps([0]),import.meta.url)},{path:`/analyze`,name:`/analyze`,component:()=>P(()=>import(`./analyze.js`).then(e=>e.t),__vite__mapDeps([0,1]),import.meta.url)},{path:`/tokens`,name:`/tokens`,component:()=>P(()=>import(`./tokens.js`),__vite__mapDeps([0]),import.meta.url)}]});async function cr(){let e=_(or);e.config.errorHandler=(e,t,n)=>{},e.use(sr),await sr.isReady(),e.mount(`#app`);try{await Sn()}catch{}}cr().catch(e=>{});export{_e as C,ie as D,F as E,Te as S,I as T,Ot as _,Cn as a,ut as b,jt as c,wt as d,V as f,Dt as g,Ct as h,Y as i,Nt as l,Tt as m,q as n,Zt as o,H as p,J as r,Xt as s,In as t,St as u,Pt as v,ye as w,He as x,Et as y};