@weapp-vite/dashboard 6.17.3 → 6.17.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/dist/assets/AppEmptyState.js +1 -0
  2. package/dist/assets/AppInsetPanel.js +1 -0
  3. package/dist/assets/AppMetricTile.js +1 -0
  4. package/dist/assets/AppRuntimeBadge.js +1 -0
  5. package/dist/assets/AppSectionHeading.js +1 -0
  6. package/dist/assets/activity.js +5 -6
  7. package/dist/assets/analyze.js +30 -36
  8. package/dist/assets/css.worker-C078mPpn.js +89 -0
  9. package/dist/assets/echarts.js +11 -4
  10. package/dist/assets/editor.worker-Cn2oRESe.js +26 -0
  11. package/dist/assets/html.worker-BO6WuOEO.js +502 -0
  12. package/dist/assets/index.css +2 -1
  13. package/dist/assets/index.js +1 -1
  14. package/dist/assets/json.worker-C4lWBgVJ.js +58 -0
  15. package/dist/assets/monaco.css +1 -1
  16. package/dist/assets/monaco.js +288 -319
  17. package/dist/assets/pages.js +2 -0
  18. package/dist/assets/rolldown-runtime.js +1 -0
  19. package/dist/assets/tokens.js +1 -1
  20. package/dist/assets/{ts.worker-BH9nVgjN.js → ts.worker-CDlTriQ3.js} +253 -237
  21. package/dist/assets/vendor.js +1 -8
  22. package/dist/assets/vue.js +1 -1
  23. package/package.json +4 -4
  24. package/dist/assets/AppInsetPanel.vue_vue_type_script_setup_true_lang.js +0 -1
  25. package/dist/assets/AppMetricTile.vue_vue_type_script_setup_true_lang.js +0 -1
  26. package/dist/assets/AppRuntimeBadge.vue_vue_type_script_setup_true_lang.js +0 -1
  27. package/dist/assets/AppSectionHeading.vue_vue_type_script_setup_true_lang.js +0 -1
  28. package/dist/assets/clipboard.js +0 -1
  29. package/dist/assets/css.worker-DBVD8oXr.js +0 -93
  30. package/dist/assets/editor.worker-CdQrwHl8.js +0 -26
  31. package/dist/assets/html.worker-CwpTb9lJ.js +0 -470
  32. package/dist/assets/index2.js +0 -2
  33. package/dist/assets/json.worker-BoL8UZqY.js +0 -58
@@ -0,0 +1 @@
1
+ import{C as e,F as t,G as n,P as r,_ as i,j as a,z as o}from"./vue.js";import{k as s}from"./index.js";function c(e){let t=document.createElement(`textarea`);t.value=e,t.setAttribute(`readonly`,`true`),t.style.position=`fixed`,t.style.opacity=`0`,document.body.appendChild(t),t.select();let n=document.execCommand(`copy`);if(document.body.removeChild(t),!n)throw Error(`copy text failed`)}async function l(e){let t=null;try{await Promise.race([navigator.clipboard.writeText(e),new Promise((e,n)=>{t=setTimeout(()=>{n(Error(`clipboard write timeout`))},800)})])}finally{t&&clearTimeout(t)}}async function u(e){try{c(e);return}catch{if(navigator.clipboard&&window.isSecureContext){await l(e);return}}throw Error(`copy text failed`)}var d=e({__name:`AppEmptyState`,props:{as:{},compact:{type:Boolean}},setup(e,{expose:t}){t();let n={};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}});function f(e,s,c,l,u,d){return a(),i(t(c.as??`div`),{class:n([`rounded-xl border border-dashed border-(--dashboard-border) bg-(--dashboard-panel-muted) text-sm text-(--dashboard-text-soft)`,c.compact?`px-3 py-4`:`p-5`])},{default:o(()=>[r(e.$slots,`default`)]),_:3},8,[`class`])}var p=s(d,[[`render`,f]]);export{u as n,p as t};
@@ -0,0 +1 @@
1
+ import{C as e,G as t,J as n,P as r,g as i,j as a,v as o,y as s}from"./vue.js";import{C as c,k as l}from"./index.js";var u=e({__name:`AppInsetPanel`,props:{eyebrow:{}},setup(e,{expose:t}){t();let n={get mutedPanelStyles(){return c}};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}}),d={key:0,class:`text-[11px] uppercase tracking-[0.18em] text-(--dashboard-text-soft)`};function f(e,c,l,u,f,p){return a(),s(`div`,{class:t(u.mutedPanelStyles())},[l.eyebrow?(a(),s(`p`,d,n(l.eyebrow),1)):o(``,!0),i(`div`,{class:t(l.eyebrow?`mt-3`:void 0)},[r(e.$slots,`default`)],2)],2)}var p=l(u,[[`render`,f]]);export{p as t};
@@ -0,0 +1 @@
1
+ import{C as e,G as t,J as n,P as r,S as i,g as a,j as o,x as s,y as c,z as l}from"./vue.js";import{k as u}from"./index.js";var d=e({__name:`AppMetaLabel`,props:{accent:{type:Boolean}},setup(e,{expose:t}){t();let n={};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}});function f(e,n,i,a,s,l){return o(),c(`p`,{class:t([`text-[11px] uppercase tracking-[0.18em]`,i.accent?`text-(--dashboard-accent)`:`text-(--dashboard-text-soft)`])},[r(e.$slots,`default`)],2)}var p=u(d,[[`render`,f]]),m=`rounded-xl border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-3`,h=e({__name:`AppMetricTile`,props:{label:{},value:{}},setup(e,{expose:t}){t();let n={panelClassName:m,AppMetaLabel:p};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}}),g={class:`mt-1.5 text-base font-semibold text-(--dashboard-text)`};function _(e,r,u,d,f,p){return o(),c(`div`,{class:t(d.panelClassName)},[i(d.AppMetaLabel,null,{default:l(()=>[s(n(u.label),1)]),_:1}),a(`p`,g,n(u.value),1)])}var v=u(h,[[`render`,_]]);export{p as n,v as t};
@@ -0,0 +1 @@
1
+ import{C as e,G as t,J as n,j as r,y as i}from"./vue.js";import{T as a,k as o}from"./index.js";var s=e({__name:`AppRuntimeBadge`,props:{label:{},tone:{default:`neutral`}},setup(e,{expose:t}){t();let n={get runtimeBadgeStyles(){return a}};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}});function c(e,a,o,s,c,l){return r(),i(`span`,{class:t(s.runtimeBadgeStyles({tone:o.tone}))},n(o.label),3)}var l=o(s,[[`render`,c]]);export{l as t};
@@ -0,0 +1 @@
1
+ import{C as e,G as t,J as n,P as r,S as i,g as a,j as o,v as s,y as c}from"./vue.js";import{C as l,O as u,k as d}from"./index.js";var f=e({__name:`AppIconFeatureCard`,props:{iconName:{},title:{},description:{},eyebrow:{},interactive:{type:Boolean},meta:{}},setup(e,{expose:t}){t();let n={get mutedPanelStyles(){return l},DashboardIcon:u};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}}),p={key:0,class:`text-[11px] uppercase tracking-[0.22em] text-(--dashboard-accent)`},m={class:`flex h-10 w-10 shrink-0 items-center justify-center rounded-md bg-(--dashboard-accent-soft) text-(--dashboard-accent)`},h={class:`h-5 w-5`},g={class:`min-w-0`},_={class:`font-semibold tracking-tight`},v={key:0,class:`mt-1 text-xs uppercase tracking-[0.16em] text-(--dashboard-text-soft)`},y={key:1,class:`mt-2 text-sm leading-6 text-(--dashboard-text-muted)`};function b(e,r,l,u,d,f){return o(),c(`div`,{class:t(u.mutedPanelStyles({interactive:l.interactive}))},[l.eyebrow?(o(),c(`p`,p,n(l.eyebrow),1)):s(``,!0),a(`div`,{class:t(l.eyebrow?`mt-3 flex items-start gap-3`:`flex items-start gap-3`)},[a(`span`,m,[a(`span`,h,[i(u.DashboardIcon,{name:l.iconName},null,8,[`name`])])]),a(`div`,g,[a(`h3`,_,n(l.title),1),l.meta?(o(),c(`p`,v,n(l.meta),1)):s(``,!0),l.description?(o(),c(`p`,y,n(l.description),1)):s(``,!0)])],2)],2)}var x=d(f,[[`render`,b]]),S=e({__name:`AppSectionHeading`,props:{eyebrow:{default:void 0},title:{},description:{default:void 0}},setup(e,{expose:t}){t();let n={};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}}),C={class:`space-y-1.5`},w={key:0,class:`text-[11px] uppercase tracking-[0.28em] text-(--dashboard-accent)`},T={class:`flex flex-col gap-2 md:flex-row md:items-end md:justify-between`},E={class:`text-xl font-semibold tracking-tight md:text-2xl`},D={key:0,class:`mt-1 text-sm leading-6 text-(--dashboard-text-muted)`};function O(e,t,i,l,u,d){return o(),c(`div`,C,[i.eyebrow?(o(),c(`p`,w,n(i.eyebrow),1)):s(``,!0),a(`div`,T,[a(`div`,null,[a(`h2`,E,n(i.title),1),i.description?(o(),c(`p`,D,n(i.description),1)):s(``,!0)]),r(e.$slots,`aside`)])])}var k=d(S,[[`render`,O]]);export{x as n,k as t};
@@ -1,6 +1,5 @@
1
- import{d as F,H as ne,p as Y,o as n,c as o,e as s,t as d,g as _,C as re,E as oe,I as ie,k as j,a as h,n as T,u as f,f as M,J as U,K,j as de,w as $,b as g,F as C,r as R,L as Z,h as L,l as ue,G as ce}from"./vue.js";import{c as ee,_ as te}from"./clipboard.js";import{b as V,c as Q,d as D,m as H,e as ae,g as le,a as B,h as ve,_ as me,p as J,i as pe,s as be,u as fe}from"./index.js";import{_ as O}from"./AppRuntimeBadge.vue_vue_type_script_setup_true_lang.js";import{a as N,_ as he}from"./AppMetricTile.vue_vue_type_script_setup_true_lang.js";import{_ as ge}from"./AppInsetPanel.vue_vue_type_script_setup_true_lang.js";import"./vendor.js";import"./monaco.js";const xe={class:"flex flex-wrap items-center justify-between gap-2 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 py-2"},ye={class:"text-xs text-(--dashboard-text-soft)"},_e={class:"flex flex-wrap items-center gap-2"},$e={key:0,class:"text-xs font-medium text-(--dashboard-accent)"},ke=["disabled"],we=["disabled"],Se=F({__name:"ActivityEventSortBar",props:ie({events:{},filteredCount:{},totalCount:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(e){const t=e,a=ne(e,"modelValue"),l=j("");let m=null;function v(b){return b.replaceAll("|","\\|").replaceAll(`
2
- `," ")}const c=h(()=>["# dashboard 事件流","",`事件数量:${t.events.length}`,"","| 时间 | 等级 | 类型 | 来源 | 标题 | 耗时 | 标签 |","| --- | --- | --- | --- | --- | ---: | --- |",...t.events.map(b=>[b.timestamp,V(b.level),Q(b.kind),b.source??"dashboard",b.title,D(b.durationMs),b.tags?.join(", ")||"-"].map(v).join(" | ")).map(b=>`| ${b} |`),""].join(`
3
- `));function u(b){l.value=b,m&&clearTimeout(m),m=setTimeout(()=>{l.value="",m=null},1800)}async function r(){try{await ee(c.value),u("已复制")}catch{u("复制失败")}}function p(){const b=new Blob([`${JSON.stringify(t.events,null,2)}
4
- `],{type:"application/json"}),i=URL.createObjectURL(b),y=document.createElement("a");y.href=i,y.download="weapp-vite-dashboard-events.json",y.click(),URL.revokeObjectURL(i),u("已导出")}return Y(()=>{m&&clearTimeout(m)}),(b,i)=>(n(),o("div",xe,[s("p",ye," 匹配 "+d(e.filteredCount)+" / "+d(e.totalCount)+" 条事件 ",1),s("div",_e,[l.value?(n(),o("span",$e,d(l.value),1)):_("",!0),s("button",{type:"button",class:"h-9 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel) px-3 text-sm text-(--dashboard-text-soft) transition hover:border-(--dashboard-border-strong) hover:text-(--dashboard-accent) focus:border-(--dashboard-border-strong) focus:outline-none disabled:opacity-50",disabled:e.events.length===0,onClick:r}," 复制事件 ",8,ke),s("button",{type:"button",class:"h-9 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel) px-3 text-sm text-(--dashboard-text-soft) transition hover:border-(--dashboard-border-strong) hover:text-(--dashboard-accent) focus:border-(--dashboard-border-strong) focus:outline-none disabled:opacity-50",disabled:e.events.length===0,onClick:p}," 导出 JSON ",8,we),re(s("select",{"onUpdate:modelValue":i[0]||(i[0]=y=>a.value=y),class:"h-9 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel) px-2.5 text-sm text-(--dashboard-text) outline-none transition focus:border-(--dashboard-accent)"},[...i[1]||(i[1]=[s("option",{value:"time"}," 按时间 ",-1),s("option",{value:"duration"}," 按耗时 ",-1),s("option",{value:"severity"}," 按等级 ",-1),s("option",{value:"source"}," 按来源 ",-1)])],512),[[oe,a.value]])])]))}}),Ce={class:"flex items-start justify-between gap-3"},Re={key:0,class:"text-[11px] uppercase tracking-[0.18em] text-(--dashboard-accent)"},Ee={class:"mt-1 text-lg font-semibold tracking-tight"},Me={class:"mt-3 text-sm leading-6 text-(--dashboard-text-muted)"},De={key:0,class:"mt-3 text-[11px] uppercase tracking-[0.18em] text-(--dashboard-text-soft)"},Le={key:1,class:"mt-2 text-sm font-medium text-(--dashboard-text)"},Te=F({__name:"AppRuntimeFocusCard",props:{event:{},eyebrow:{},emptyTitle:{},emptyDetail:{},durationText:{}},setup(e){const t=e,a=h(()=>t.event?ae(t.event):null),l=h(()=>t.event?.title??t.emptyTitle??"尚无运行事件"),m=h(()=>t.event?.detail??t.emptyDetail??"当前工作区还没有推入结构化运行事件。"),v=h(()=>t.event?le(t.event):null);return(c,u)=>(n(),o("div",{class:T(f(H)())},[s("div",Ce,[s("div",null,[t.eyebrow?(n(),o("p",Re,d(t.eyebrow),1)):_("",!0),s("h3",Ee,d(l.value),1)]),a.value?(n(),M(O,U(K({key:0},a.value)),null,16)):_("",!0)]),s("p",Me,d(m.value),1),t.event?(n(),o("p",De,d(v.value),1)):_("",!0),t.durationText?(n(),o("p",Le,d(t.durationText),1)):_("",!0),de(c.$slots,"default")],2))}}),Fe={key:0,class:"mt-3 flex flex-wrap gap-1.5"},je={key:1,class:"mt-4 grid gap-3 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-3"},Oe={class:"flex min-w-0 items-start justify-between gap-3"},Ne={class:"min-w-0"},Be={key:0,class:"mt-1 truncate font-mono text-xs text-(--dashboard-text-soft)"},Ie={key:0,class:"grid gap-2 sm:grid-cols-2"},Pe={class:"text-[11px] text-(--dashboard-text-soft)"},Ae={class:"mt-1 text-sm font-semibold text-(--dashboard-text)"},Ke={key:1,class:"flex flex-wrap gap-1.5"},Ue={key:2,class:"grid gap-2 text-xs leading-5 text-(--dashboard-text-muted)"},Ve={key:0},Qe={key:1},He=F({__name:"ActivitySelectedEventPanel",props:{event:{}},setup(e){const t=e,a=h(()=>t.event?.durationMs!==void 0?`耗时 ${D(t.event.durationMs)}`:void 0),l=h(()=>{const c=t.event?.profile;return c?[{label:"总耗时",value:D(c.totalMs)},{label:"构建核心",value:D(c.buildCoreMs)},{label:"转换",value:D(c.transformMs)},{label:"写入",value:D(c.writeMs)},{label:"监听到脏标记",value:D(c.watchToDirtyMs)},{label:"产物发射",value:D(c.emitMs)},{label:"共享 chunk",value:D(c.sharedChunkResolveMs)}].filter(u=>u.value!=="未记录"):[]}),m=h(()=>{const c=t.event?.profile;return c?[{label:"脏入口",value:c.dirtyCount},{label:"待处理",value:c.pendingCount},{label:"已发射",value:c.emittedCount}].filter(u=>typeof u.value=="number"):[]}),v=h(()=>t.event?.profile?.sourceRootFile??t.event?.profile?.relativeFile??t.event?.profile?.file);return(c,u)=>(n(),M(B,{eyebrow:"Selected",title:"当前事件","icon-name":"metric-search"},{default:$(()=>[g(Te,{event:e.event,eyebrow:"focus","empty-title":"未选择事件","empty-detail":"选择左侧事件后查看详情。","duration-text":a.value},{default:$(()=>[e.event?.tags?.length?(n(),o("div",Fe,[(n(!0),o(C,null,R(e.event.tags,r=>(n(),M(O,{key:r,label:r,tone:"neutral"},null,8,["label"]))),128))])):_("",!0),e.event?.profile?(n(),o("div",je,[s("div",Oe,[s("div",Ne,[u[0]||(u[0]=s("p",{class:"text-sm font-semibold text-(--dashboard-text)"}," HMR 阶段明细 ",-1)),v.value?(n(),o("p",Be,d(v.value),1)):_("",!0)]),e.event.profile.event?(n(),M(O,{key:0,label:e.event.profile.event,tone:"info"},null,8,["label"])):_("",!0)]),l.value.length>0?(n(),o("dl",Ie,[(n(!0),o(C,null,R(l.value,r=>(n(),o("div",{key:r.label,class:"rounded-md border border-(--dashboard-border) bg-(--dashboard-panel) px-3 py-2"},[s("dt",Pe,d(r.label),1),s("dd",Ae,d(r.value),1)]))),128))])):_("",!0),m.value.length>0?(n(),o("div",Ke,[(n(!0),o(C,null,R(m.value,r=>(n(),M(O,{key:r.label,label:`${r.label} ${r.value}`,tone:"neutral"},null,8,["label"]))),128))])):_("",!0),e.event.profile.dirtyReasonSummary?.length||e.event.profile.pendingReasonSummary?.length?(n(),o("div",Ue,[e.event.profile.dirtyReasonSummary?.length?(n(),o("p",Ve," 脏标记:"+d(e.event.profile.dirtyReasonSummary.join("、")),1)):_("",!0),e.event.profile.pendingReasonSummary?.length?(n(),o("p",Qe," 待处理:"+d(e.event.profile.pendingReasonSummary.join("、")),1)):_("",!0)])):_("",!0)])):_("",!0)]),_:1},8,["event","duration-text"])]),_:1}))}}),ze={class:"flex items-start justify-between gap-3"},qe={class:"min-w-0"},Je={class:"truncate font-medium text-(--dashboard-text)"},We={class:"mt-1 text-[11px] uppercase tracking-[0.16em] text-(--dashboard-text-soft)"},Ge={key:0,class:"mt-3 flex flex-wrap gap-2 text-[11px] uppercase tracking-[0.14em] text-(--dashboard-text-soft)"},Xe={key:1,class:"mt-3 text-sm text-(--dashboard-text-muted)"},Ye=F({__name:"AppRuntimeSourceCard",props:{source:{},count:{},errorCount:{},averageDuration:{},latestTimestamp:{},countLabel:{}},setup(e){const t=e,a=h(()=>ve(t)),l=h(()=>t.latestTimestamp?`最近事件 ${t.latestTimestamp}`:`${t.count} ${t.countLabel??"条事件"}`),m=h(()=>[{key:"error-count",label:`错误 ${t.errorCount}`},{key:"average-duration",label:`平均耗时 ${t.averageDuration}`}]),v=h(()=>`平均耗时 ${t.averageDuration}`);return(c,u)=>(n(),o("div",{class:T(f(H)({padding:"sm"}))},[s("div",ze,[s("div",qe,[s("p",Je,d(t.source),1),s("p",We,d(l.value),1)]),g(O,U(Z(a.value)),null,16)]),t.latestTimestamp?(n(),o("div",Ge,[(n(!0),o(C,null,R(m.value,r=>(n(),o("span",{key:r.key,class:"rounded-full border border-(--dashboard-border) px-2 py-0.5"},d(r.label),1))),128))])):(n(),o("p",Xe,d(v.value),1))],2))}}),Ze={class:"mt-1 text-lg font-semibold"},et=F({__name:"AppStatCard",props:{label:{},value:{}},setup(e){const t=H({padding:"sm"});return(a,l)=>(n(),o("div",{class:T(f(t))},[g(N,null,{default:$(()=>[L(d(e.label),1)]),_:1}),s("p",Ze,d(e.value),1)],2))}}),tt={class:"flex shrink-0 items-center gap-2"},at={key:0,class:"text-xs font-medium text-(--dashboard-accent)"},lt={class:"h-3.5 w-3.5"},st={class:"grid gap-3"},nt={class:"flex items-start justify-between gap-3"},rt={class:"min-w-0"},ot={class:"text-sm font-semibold text-(--dashboard-text)"},it={class:"mt-1 text-xs leading-5 text-(--dashboard-text-muted)"},dt={class:"grid grid-cols-2 gap-2 sm:grid-cols-5 xl:grid-cols-2 2xl:grid-cols-5"},ut={key:0,class:"grid max-h-52 gap-2 overflow-y-auto pr-1"},ct={class:"flex items-start justify-between gap-3"},vt={class:"min-w-0"},mt={class:"truncate text-sm font-medium text-(--dashboard-text)"},pt={class:"mt-1 truncate text-xs text-(--dashboard-text-soft)"},bt={class:"mt-2 line-clamp-2 text-xs leading-5 text-(--dashboard-text-muted)"},ft=F({__name:"RuntimeIncidentDigestPanel",props:{digest:{}},setup(e){const t=e,a=j("");let l=null;const m=h(()=>t.digest.status==="critical"?"error":t.digest.status==="warning"?"warning":"success");function v(p){return p==="error"?"text-rose-600 dark:text-rose-300":p==="warning"?"text-amber-600 dark:text-amber-300":"text-(--dashboard-accent)"}function c(p){return p==="critical"?"border-rose-400/60 bg-(--dashboard-panel-muted)":p==="warning"?"border-amber-400/60 bg-(--dashboard-panel-muted)":"border-emerald-400/60 bg-(--dashboard-panel-muted)"}function u(p){a.value=p,l&&clearTimeout(l),l=setTimeout(()=>{a.value="",l=null},1800)}async function r(){try{await ee(t.digest.report),u("摘要已复制")}catch{u("复制失败")}}return Y(()=>{l&&clearTimeout(l)}),(p,b)=>(n(),M(B,{eyebrow:"Incident",title:"事故摘要","icon-name":"metric-quality"},{header:$(()=>[s("div",tt,[a.value?(n(),o("span",at,d(a.value),1)):_("",!0),s("button",{type:"button",class:"inline-flex h-8 items-center gap-1.5 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) focus:border-(--dashboard-border-strong) focus:outline-none",onClick:r},[s("span",lt,[g(me,{name:"metric-copy"})]),b[0]||(b[0]=L(" 复制 ",-1))])])]),default:$(()=>[s("div",st,[s("div",{class:T(["rounded-md border px-3 py-2.5",c(e.digest.status)])},[s("div",nt,[s("div",rt,[s("p",ot,d(e.digest.statusLabel),1),s("p",it,d(e.digest.statusDetail),1)]),g(O,{label:e.digest.statusLabel,tone:m.value},null,8,["label","tone"])])],2),s("div",dt,[(n(!0),o(C,null,R(e.digest.metrics,i=>(n(),M(he,{key:i.label,label:i.label,value:i.value},null,8,["label","value"]))),128))]),e.digest.incidents.length>0?(n(),o("div",ut,[(n(!0),o(C,null,R(e.digest.incidents,i=>(n(),o("article",{key:i.id,class:"rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 py-2.5"},[s("div",ct,[s("div",vt,[s("p",mt,d(i.title),1),s("p",pt,d(i.source)+" · "+d(i.kindLabel)+" · "+d(i.timestamp)+" · "+d(i.duration),1)]),s("span",{class:T(["shrink-0 text-xs font-semibold",v(i.level)])},d(i.levelLabel),3)]),s("p",bt,d(i.reason)+" · "+d(i.detail),1)]))),128))])):(n(),M(te,{key:1,compact:""},{default:$(()=>[...b[1]||(b[1]=[L(" 当前筛选范围内没有需要处理的运行时事件。 ",-1)])]),_:1}))])]),_:1}))}}),ht={class:"grid min-h-0 content-start gap-3 overflow-y-auto pr-1"},gt={class:"grid gap-2 sm:grid-cols-2"},xt={class:"grid max-h-44 gap-2 overflow-y-auto pr-1"},yt={class:"flex items-start justify-between gap-3"},_t={class:"font-medium"},$t={class:"mt-1 text-sm leading-6 text-(--dashboard-text-muted)"},kt={key:0,class:"grid max-h-full gap-2 overflow-y-auto pr-1"},wt=F({__name:"ActivityInsightPanel",props:{selectedEvent:{},incidentDigest:{},eventSummary:{},filteredEventSummary:{},diagnostics:{},sourceBreakdown:{}},setup(e){return(t,a)=>(n(),o("div",ht,[g(He,{event:e.selectedEvent},null,8,["event"]),g(ft,{digest:e.incidentDigest},null,8,["digest"]),g(B,{eyebrow:"Runtime",title:"事件摘要","icon-name":"metric-time"},{default:$(()=>[s("div",gt,[(n(!0),o(C,null,R([...e.eventSummary,...e.filteredEventSummary],l=>(n(),M(et,K({key:l.label},{ref_for:!0},l),null,16))),128))])]),_:1}),g(B,{eyebrow:"Diagnostics",title:"当前诊断队列","icon-name":"metric-health","content-class":"min-h-0 overflow-hidden"},{default:$(()=>[s("ul",xt,[(n(!0),o(C,null,R(e.diagnostics,l=>(n(),o("li",{key:l.label,class:"rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-4 py-3"},[s("div",yt,[s("div",null,[s("p",_t,d(l.label),1),s("p",$t,d(l.detail),1)]),g(O,{label:l.status,tone:"info"},null,8,["label"])])]))),128))])]),_:1}),g(B,{eyebrow:"Sources",title:"事件来源","icon-name":"hero-system","content-class":"min-h-0 overflow-hidden"},{default:$(()=>[e.sourceBreakdown.length>0?(n(),o("div",kt,[(n(!0),o(C,null,R(e.sourceBreakdown,l=>(n(),M(Ye,K({key:l.source},{ref_for:!0},l),null,16))),128))])):_("",!0)]),_:1})]))}}),St={class:"grid gap-3 xl:grid-cols-[minmax(14rem,0.85fr)_minmax(0,1.15fr)]"},Ct={for:"dashboard-event-search"},Rt=["value"],Et={class:"grid gap-3"},Mt={class:"mt-2 flex flex-wrap gap-2"},Dt=["onClick"],Lt={key:0,class:"mt-2 text-xs leading-5 text-(--dashboard-text-soft)"},Tt={class:"grid gap-3 md:grid-cols-3"},Ft={class:"mt-2 flex flex-wrap gap-2"},jt=["onClick"],Ot={class:"mt-2 flex flex-wrap gap-2"},Nt=["onClick"],Bt={class:"mt-2 flex flex-wrap gap-2"},It=["onClick"],Pt=F({__name:"AppEventFilterPanel",props:{searchQuery:{},presetDescription:{},filterPresets:{},eventKindOptions:{},eventLevelOptions:{},eventSourceOptions:{},eventKindFilter:{},eventLevelFilter:{},eventSourceFilter:{}},emits:["update:searchQuery","update:eventKindFilter","update:eventLevelFilter","update:eventSourceFilter","applyPreset"],setup(e,{emit:t}){const a=e,l=t;function m(){return J({kind:"theme",active:!1})}function v(c,u){return J({kind:"theme",active:c===u})}return(c,u)=>(n(),M(ge,null,{default:$(()=>[s("div",St,[s("div",null,[s("label",Ct,[g(N,null,{default:$(()=>[...u[1]||(u[1]=[L(" 搜索事件 ",-1)])]),_:1})]),s("input",{id:"dashboard-event-search",value:e.searchQuery,type:"text",placeholder:"搜索标题、详情、来源或标签",class:"mt-2 w-full rounded-md border border-(--dashboard-border) bg-(--dashboard-panel) px-3 py-2 text-sm text-(--dashboard-text) outline-none transition focus:border-(--dashboard-border-strong)",onInput:u[0]||(u[0]=r=>l("update:searchQuery",r.target.value))},null,40,Rt)]),s("div",Et,[s("div",null,[g(N,null,{default:$(()=>[...u[2]||(u[2]=[L(" 快速预设 ",-1)])]),_:1}),s("div",Mt,[(n(!0),o(C,null,R(e.filterPresets,r=>(n(),o("button",{key:r.key,class:T(m()),onClick:p=>l("applyPreset",r.key)},d(r.label),11,Dt))),128))]),e.presetDescription?(n(),o("p",Lt,d(e.presetDescription),1)):_("",!0)]),s("div",Tt,[s("div",null,[g(N,null,{default:$(()=>[...u[3]||(u[3]=[L(" 类型过滤 ",-1)])]),_:1}),s("div",Ft,[(n(!0),o(C,null,R(e.eventKindOptions,r=>(n(),o("button",{key:r.value,class:T(v(a.eventKindFilter,r.value)),onClick:p=>l("update:eventKindFilter",r.value)},d(r.label),11,jt))),128))])]),s("div",null,[g(N,null,{default:$(()=>[...u[4]||(u[4]=[L(" 等级过滤 ",-1)])]),_:1}),s("div",Ot,[(n(!0),o(C,null,R(e.eventLevelOptions,r=>(n(),o("button",{key:r.value,class:T(v(a.eventLevelFilter,r.value)),onClick:p=>l("update:eventLevelFilter",r.value)},d(r.label),11,Nt))),128))])]),s("div",null,[g(N,null,{default:$(()=>[...u[5]||(u[5]=[L(" 来源过滤 ",-1)])]),_:1}),s("div",Bt,[(n(!0),o(C,null,R(e.eventSourceOptions,r=>(n(),o("button",{key:r.value,class:T(v(a.eventSourceFilter,r.value)),onClick:p=>l("update:eventSourceFilter",r.value)},d(r.label),11,It))),128))])])])])])]),_:1}))}}),At={class:"flex items-start justify-between gap-3"},Kt={class:"font-medium text-(--dashboard-text)"},Ut=F({__name:"AppRuntimeEventListItem",props:{event:{},selected:{type:Boolean}},setup(e){const t=e,a=h(()=>ae(t.event)),l=h(()=>le(t.event)),m=h(()=>t.selected?"border-(--dashboard-border-strong) bg-(--dashboard-panel)":"border-(--dashboard-border)");return(v,c)=>(n(),o("li",{class:T(["rounded-md border bg-(--dashboard-panel-muted) px-4 py-3 transition",m.value])},[s("div",At,[s("div",null,[s("p",Kt,d(t.event.title),1),g(N,{class:"mt-1"},{default:$(()=>[L(d(l.value),1)]),_:1})]),g(O,U(Z(a.value)),null,16)])],2))}}),Vt=1e3,Qt=5,W={error:4,warning:3,success:2,info:1};function G(e){const t=Date.parse(e.timestamp);return Number.isFinite(t)?t:0}function z(e,t){return typeof e.durationMs=="number"&&e.durationMs>=t}function Ht(e,t){return e.level==="error"||e.level==="warning"||z(e,t)}function zt(e,t){const a=[];return e.level==="error"?a.push("错误事件"):e.level==="warning"&&a.push("警告事件"),z(e,t)&&a.push(`耗时 ${D(e.durationMs)}`),a.join(" · ")||"需要关注"}function qt(e,t){return{id:e.id,title:e.title,detail:e.detail,level:e.level,levelLabel:V(e.level),kindLabel:Q(e.kind),source:e.source??"dashboard",timestamp:e.timestamp,duration:D(e.durationMs),reason:zt(e,t)}}function Jt(e,t,a){return e>0?"critical":t>0||a>0?"warning":"healthy"}function Wt(e){return e==="critical"?"需要立即处理":e==="warning"?"需要关注":"运行平稳"}function Gt(e,t,a,l){return e==="critical"?`检测到 ${t} 个错误事件,优先排查失败来源。`:e==="warning"?`检测到 ${a} 个警告和 ${l} 个慢事件,建议跟进。`:"当前筛选范围内没有错误、警告或慢事件。"}function Xt(e){const t=e.incidents.length>0?e.incidents.map(a=>`- [${a.levelLabel}] ${a.title}(${a.source} · ${a.kindLabel} · ${a.timestamp} · ${a.duration}):${a.detail}`):["- 当前筛选范围内没有需要处理的事件。"];return["# dashboard 运行时事故摘要","",`状态:${e.statusLabel}`,`说明:${e.statusDetail}`,"","## 指标",...e.metrics.map(a=>`- ${a.label}:${a.value}`),"","## 影响来源",e.affectedSources.length>0?e.affectedSources.map(a=>`- ${a}`).join(`
5
- `):"- 无","","## 优先处理",...t,""].join(`
6
- `)}function Yt(e,t={}){const a=t.slowEventThresholdMs??Vt,l=e.filter(i=>i.level==="error").length,m=e.filter(i=>i.level==="warning").length,v=e.filter(i=>z(i,a)).length,c=e.filter(i=>Ht(i,a)),u=[...new Set(c.map(i=>i.source??"dashboard"))].sort((i,y)=>i.localeCompare(y,"zh-CN")),r=Jt(l,m,v),p=c.toSorted((i,y)=>W[y.level]-W[i.level]||(y.durationMs??-1)-(i.durationMs??-1)||G(y)-G(i)).slice(0,Qt).map(i=>qt(i,a)),b={status:r,statusLabel:Wt(r),statusDetail:Gt(r,l,m,v),metrics:[{label:"事件总数",value:e.length},{label:"错误",value:l},{label:"警告",value:m},{label:"慢事件",value:v},{label:"影响来源",value:u.length}],affectedSources:u,incidents:p};return{...b,report:Xt(b)}}const X={error:4,warning:3,success:2,info:1},Zt=[{value:"all",label:"全部类型"},{value:"command",label:"命令"},{value:"build",label:"构建"},{value:"diagnostic",label:"诊断"},{value:"hmr",label:"HMR"},{value:"system",label:"系统"}],ea=[{value:"all",label:"全部等级"},{value:"info",label:"信息"},{value:"success",label:"成功"},{value:"warning",label:"警告"},{value:"error",label:"错误"}];function ta(e,t){return[e.title,e.detail,e.kind,e.level,e.source??"",...e.tags??[]].join(" ").toLowerCase().includes(t)}function aa(e,t){return[...e].sort((a,l)=>t==="duration"?(l.durationMs??-1)-(a.durationMs??-1)||Date.parse(l.timestamp)-Date.parse(a.timestamp):t==="severity"?X[l.level]-X[a.level]||Date.parse(l.timestamp)-Date.parse(a.timestamp):t==="source"&&(a.source??"dashboard").localeCompare(l.source??"dashboard")||Date.parse(l.timestamp)-Date.parse(a.timestamp))}function la(e){const t=j("all"),a=j("all"),l=j("all"),m=j("time"),v=j(""),c=j(null),u=[{key:"all",label:"查看全部",description:"回到完整事件流",apply(){t.value="all",a.value="all",l.value="all",v.value=""}},{key:"issues",label:"异常优先",description:"只看警告和错误",apply(){t.value="all",a.value="warning",l.value="all",v.value=""}},{key:"commands",label:"命令流",description:"聚焦命令执行事件",apply(){t.value="command",a.value="all",l.value="all",v.value=""}},{key:"hmr",label:"HMR",description:"观察热更新相关事件",apply(){t.value="hmr",a.value="all",l.value="all",v.value=""}}],r=h(()=>{const k=new Set(e.value.map(x=>x.source??"dashboard").filter(Boolean));return[{value:"all",label:"全部来源"},...[...k].sort((x,E)=>x.localeCompare(E,"zh-CN")).map(x=>({value:x,label:x}))]}),p=h(()=>{const k=v.value.trim().toLowerCase(),x=e.value.filter(E=>t.value!=="all"&&E.kind!==t.value||a.value!=="all"&&E.level!==a.value||l.value!=="all"&&(E.source??"dashboard")!==l.value?!1:!k||ta(E,k));return aa(x,m.value)}),b=h(()=>{const k=p.value.filter(E=>typeof E.durationMs=="number"),x=k.length>0?Math.round(k.reduce((E,A)=>E+(A.durationMs??0),0)/k.length):void 0;return[{label:"筛选后事件",value:String(p.value.length)},{label:"当前类型",value:t.value==="all"?"全部":Q(t.value)},{label:"当前等级",value:a.value==="all"?"全部":V(a.value)},{label:"当前来源",value:l.value==="all"?"全部":l.value},{label:"搜索关键字",value:v.value.trim()||"未设置"},{label:"筛选平均耗时",value:D(x)}]}),i=h(()=>pe(be(p.value))),y=h(()=>Yt(p.value)),I=h(()=>p.value.find(k=>k.id===c.value)??p.value[0]??null),P=h(()=>u.find(x=>x.key==="issues"?t.value==="all"&&a.value==="warning"&&l.value==="all"&&v.value==="":x.key==="commands"?t.value==="command"&&a.value==="all"&&l.value==="all"&&v.value==="":x.key==="hmr"?t.value==="hmr"&&a.value==="all"&&l.value==="all"&&v.value==="":t.value==="all"&&a.value==="all"&&l.value==="all"&&v.value==="")?.description??"");return ue(p,k=>{if(k.length===0){c.value=null;return}k.some(x=>x.id===c.value)||(c.value=k[0]?.id??null)},{immediate:!0}),{eventKindFilter:t,eventKindOptions:Zt,eventLevelFilter:a,eventLevelOptions:ea,eventSortMode:m,eventSourceFilter:l,eventSourceOptions:r,filteredEventSummary:b,filteredRuntimeEvents:p,filterPresets:u,incidentDigest:y,presetDescription:P,searchQuery:v,selectedEvent:I,selectedEventId:c,sourceBreakdown:i}}const sa={class:"grid h-full min-h-0 gap-3 overflow-hidden xl:grid-cols-[minmax(0,1.25fr)_minmax(22rem,0.75fr)]"},na={class:"grid h-full min-h-0 grid-rows-[minmax(0,9rem)_auto_minmax(6rem,1fr)] gap-3 overflow-hidden"},ra={class:"grid min-h-0 gap-2 overflow-y-auto pr-1 text-sm leading-6 text-(--dashboard-text-muted)"},fa=F({__name:"activity",setup(e){const{diagnostics:t,eventSummary:a,runtimeEvents:l}=fe(),{eventKindFilter:m,eventKindOptions:v,eventLevelFilter:c,eventLevelOptions:u,eventSortMode:r,eventSourceFilter:p,eventSourceOptions:b,filteredEventSummary:i,filteredRuntimeEvents:y,filterPresets:I,incidentDigest:P,presetDescription:k,searchQuery:x,selectedEvent:E,selectedEventId:A,sourceBreakdown:se}=la(l);return(oa,S)=>(n(),o("div",sa,[g(B,{eyebrow:"Event Feed",title:"事件控制台","icon-name":"hero-commands","content-class":"min-h-0 overflow-hidden"},{default:$(()=>[s("div",na,[g(Pt,{class:"min-h-0 overflow-y-auto","search-query":f(x),"preset-description":f(k),"filter-presets":f(I),"event-kind-options":f(v),"event-level-options":f(u),"event-source-options":f(b),"event-kind-filter":f(m),"event-level-filter":f(c),"event-source-filter":f(p),"onUpdate:searchQuery":S[0]||(S[0]=w=>x.value=w),"onUpdate:eventKindFilter":S[1]||(S[1]=w=>m.value=w),"onUpdate:eventLevelFilter":S[2]||(S[2]=w=>c.value=w),"onUpdate:eventSourceFilter":S[3]||(S[3]=w=>p.value=w),onApplyPreset:S[4]||(S[4]=w=>f(I).find(q=>q.key===w)?.apply())},null,8,["search-query","preset-description","filter-presets","event-kind-options","event-level-options","event-source-options","event-kind-filter","event-level-filter","event-source-filter"]),g(Se,{modelValue:f(r),"onUpdate:modelValue":S[5]||(S[5]=w=>ce(r)?r.value=w:null),events:f(y),"filtered-count":f(y).length,"total-count":f(l).length},null,8,["modelValue","events","filtered-count","total-count"]),f(y).length===0?(n(),M(te,{key:0,as:"p"},{default:$(()=>[...S[6]||(S[6]=[L(" 当前过滤条件下没有匹配事件。 ",-1)])]),_:1})):_("",!0),s("ul",ra,[(n(!0),o(C,null,R(f(y),w=>(n(),M(Ut,{key:w.id,event:w,selected:f(E)?.id===w.id,onClick:q=>A.value=w.id},null,8,["event","selected","onClick"]))),128))])])]),_:1}),g(wt,{"selected-event":f(E),"incident-digest":f(P),"event-summary":f(a),"filtered-event-summary":f(i),diagnostics:f(t),"source-breakdown":f(se)},null,8,["selected-event","incident-digest","event-summary","filtered-event-summary","diagnostics","source-breakdown"])]))}});export{fa as default};
1
+ import{B as e,C as t,D as n,E as r,G as i,H as a,I as o,J as s,K as c,N as l,P as u,R as d,S as f,_ as p,g as m,h,j as g,k as _,l as v,p as y,v as b,w as x,x as S,y as C,z as w}from"./vue.js";import{C as T,O as ee,a as te,d as E,f as D,i as O,k,l as A,n as ne,p as j,r as re,t as ie,w as M,x as N}from"./index.js";import{n as P,t as F}from"./AppEmptyState.js";import{t as I}from"./AppRuntimeBadge.js";import{n as L,t as ae}from"./AppMetricTile.js";import{t as R}from"./AppInsetPanel.js";var z=t({__name:`ActivityEventSortBar`,props:r({events:{},filteredCount:{},totalCount:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:[`update:modelValue`],setup(e,{expose:t}){t();let n=e,r=o(e,`modelValue`),i=a(``),s=null;function c(e){return e.replaceAll(`|`,`\\|`).replaceAll(`
2
+ `,` `)}let l=h(()=>[`# dashboard 事件流`,``,`事件数量:${n.events.length}`,``,`| 时间 | 等级 | 类型 | 来源 | 标题 | 耗时 | 标签 |`,`| --- | --- | --- | --- | --- | ---: | --- |`,...n.events.map(e=>[e.timestamp,D(e.level),E(e.kind),e.source??`dashboard`,e.title,A(e.durationMs),e.tags?.join(`, `)||`-`].map(c).join(` | `)).map(e=>`| ${e} |`),``].join(`
3
+ `));function u(e){i.value=e,s&&clearTimeout(s),s=setTimeout(()=>{i.value=``,s=null},1800)}async function d(){try{await P(l.value),u(`已复制`)}catch{u(`复制失败`)}}function f(){let e=new Blob([`${JSON.stringify(n.events,null,2)}\n`],{type:`application/json`}),t=URL.createObjectURL(e),r=document.createElement(`a`);r.href=t,r.download=`weapp-vite-dashboard-events.json`,r.click(),URL.revokeObjectURL(t),u(`已导出`)}_(()=>{s&&clearTimeout(s)});let p={props:n,sortMode:r,actionStatus:i,get actionStatusTimer(){return s},set actionStatusTimer(e){s=e},escapeMarkdownCell:c,reportText:l,setActionStatus:u,copyEventReport:d,exportEventJson:f};return Object.defineProperty(p,"__isScriptSetup",{enumerable:!1,value:!0}),p}}),B={class:`flex flex-wrap items-center justify-between gap-2 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 py-2`},V={class:`text-xs text-(--dashboard-text-soft)`},H={class:`flex flex-wrap items-center gap-2`},U={key:0,class:`text-xs font-medium text-(--dashboard-accent)`},W=[`disabled`],G=[`disabled`];function K(t,n,r,i,a,o){return g(),C(`div`,B,[m(`p`,V,` 匹配 `+s(r.filteredCount)+` / `+s(r.totalCount)+` 条事件 `,1),m(`div`,H,[i.actionStatus?(g(),C(`span`,U,s(i.actionStatus),1)):b(``,!0),m(`button`,{type:`button`,class:`h-9 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel) 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.events.length===0,onClick:i.copyEventReport},` 复制事件 `,8,W),m(`button`,{type:`button`,class:`h-9 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel) 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.events.length===0,onClick:i.exportEventJson},` 导出 JSON `,8,G),e(m(`select`,{"onUpdate:modelValue":n[0]||=e=>i.sortMode=e,class:`h-9 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel) px-2.5 text-sm text-(--dashboard-text) outline-none transition focus:border-(--dashboard-accent)`},[...n[1]||=[m(`option`,{value:`time`},` 按时间 `,-1),m(`option`,{value:`duration`},` 按耗时 `,-1),m(`option`,{value:`severity`},` 按等级 `,-1),m(`option`,{value:`source`},` 按来源 `,-1)]],512),[[v,i.sortMode]])])])}var q=k(z,[[`render`,K]]),J=t({__name:`AppRuntimeFocusCard`,props:{event:{},eyebrow:{},emptyTitle:{},emptyDetail:{},durationText:{}},setup(e,{expose:t}){t();let n=e,r={props:n,badge:h(()=>n.event?O(n.event):null),titleText:h(()=>n.event?.title??n.emptyTitle??`尚无运行事件`),detailText:h(()=>n.event?.detail??n.emptyDetail??`当前工作区还没有推入结构化运行事件。`),eventMeta:h(()=>n.event?j(n.event):null),get mutedPanelStyles(){return T},AppRuntimeBadge:I};return Object.defineProperty(r,"__isScriptSetup",{enumerable:!1,value:!0}),r}}),oe={class:`flex items-start justify-between gap-3`},se={key:0,class:`text-[11px] uppercase tracking-[0.18em] text-(--dashboard-accent)`},ce={class:`mt-1 text-lg font-semibold tracking-tight`},le={class:`mt-3 text-sm leading-6 text-(--dashboard-text-muted)`},ue={key:0,class:`mt-3 text-[11px] uppercase tracking-[0.18em] text-(--dashboard-text-soft)`},de={key:1,class:`mt-2 text-sm font-medium text-(--dashboard-text)`};function fe(e,t,r,a,o,l){return g(),C(`div`,{class:i(a.mutedPanelStyles())},[m(`div`,oe,[m(`div`,null,[a.props.eyebrow?(g(),C(`p`,se,s(a.props.eyebrow),1)):b(``,!0),m(`h3`,ce,s(a.titleText),1)]),a.badge?(g(),p(a.AppRuntimeBadge,c(n({key:0},a.badge)),null,16)):b(``,!0)]),m(`p`,le,s(a.detailText),1),a.props.event?(g(),C(`p`,ue,s(a.eventMeta),1)):b(``,!0),a.props.durationText?(g(),C(`p`,de,s(a.props.durationText),1)):b(``,!0),u(e.$slots,`default`)],2)}var pe=k(J,[[`render`,fe]]),me=t({__name:`ActivitySelectedEventPanel`,props:{event:{}},setup(e,{expose:t}){t();let n=e,r={props:n,durationText:h(()=>n.event?.durationMs===void 0?void 0:`耗时 ${A(n.event.durationMs)}`),profileMetrics:h(()=>{let e=n.event?.profile;return e?[{label:`总耗时`,value:A(e.totalMs)},{label:`构建核心`,value:A(e.buildCoreMs)},{label:`转换`,value:A(e.transformMs)},{label:`写入`,value:A(e.writeMs)},{label:`监听到脏标记`,value:A(e.watchToDirtyMs)},{label:`产物发射`,value:A(e.emitMs)},{label:`共享 chunk`,value:A(e.sharedChunkResolveMs)}].filter(e=>e.value!==`未记录`):[]}),profileCounts:h(()=>{let e=n.event?.profile;return e?[{label:`脏入口`,value:e.dirtyCount},{label:`待处理`,value:e.pendingCount},{label:`已发射`,value:e.emittedCount}].filter(e=>typeof e.value==`number`):[]}),profileFile:h(()=>n.event?.profile?.sourceRootFile??n.event?.profile?.relativeFile??n.event?.profile?.file),AppRuntimeBadge:I,AppRuntimeFocusCard:pe,AppSurfaceCard:N};return Object.defineProperty(r,"__isScriptSetup",{enumerable:!1,value:!0}),r}}),he={key:0,class:`mt-3 flex flex-wrap gap-1.5`},ge={key:1,class:`mt-4 grid gap-3 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-3`},_e={class:`flex min-w-0 items-start justify-between gap-3`},ve={class:`min-w-0`},ye={key:0,class:`mt-1 truncate font-mono text-xs text-(--dashboard-text-soft)`},be={key:0,class:`grid gap-2 sm:grid-cols-2`},xe={class:`text-[11px] text-(--dashboard-text-soft)`},Se={class:`mt-1 text-sm font-semibold text-(--dashboard-text)`},Ce={key:1,class:`flex flex-wrap gap-1.5`},we={key:2,class:`grid gap-2 text-xs leading-5 text-(--dashboard-text-muted)`},Te={key:0},Ee={key:1};function De(e,t,n,r,i,a){return g(),p(r.AppSurfaceCard,{eyebrow:`Selected`,title:`当前事件`,"icon-name":`metric-search`},{default:w(()=>[f(r.AppRuntimeFocusCard,{event:n.event,eyebrow:`focus`,"empty-title":`未选择事件`,"empty-detail":`选择左侧事件后查看详情。`,"duration-text":r.durationText},{default:w(()=>[n.event?.tags?.length?(g(),C(`div`,he,[(g(!0),C(y,null,l(n.event.tags,e=>(g(),p(r.AppRuntimeBadge,{key:e,label:e,tone:`neutral`},null,8,[`label`]))),128))])):b(``,!0),n.event?.profile?(g(),C(`div`,ge,[m(`div`,_e,[m(`div`,ve,[t[0]||=m(`p`,{class:`text-sm font-semibold text-(--dashboard-text)`},` HMR 阶段明细 `,-1),r.profileFile?(g(),C(`p`,ye,s(r.profileFile),1)):b(``,!0)]),n.event.profile.event?(g(),p(r.AppRuntimeBadge,{key:0,label:n.event.profile.event,tone:`info`},null,8,[`label`])):b(``,!0)]),r.profileMetrics.length>0?(g(),C(`dl`,be,[(g(!0),C(y,null,l(r.profileMetrics,e=>(g(),C(`div`,{key:e.label,class:`rounded-md border border-(--dashboard-border) bg-(--dashboard-panel) px-3 py-2`},[m(`dt`,xe,s(e.label),1),m(`dd`,Se,s(e.value),1)]))),128))])):b(``,!0),r.profileCounts.length>0?(g(),C(`div`,Ce,[(g(!0),C(y,null,l(r.profileCounts,e=>(g(),p(r.AppRuntimeBadge,{key:e.label,label:`${e.label} ${e.value}`,tone:`neutral`},null,8,[`label`]))),128))])):b(``,!0),n.event.profile.dirtyReasonSummary?.length||n.event.profile.pendingReasonSummary?.length?(g(),C(`div`,we,[n.event.profile.dirtyReasonSummary?.length?(g(),C(`p`,Te,` 脏标记:`+s(n.event.profile.dirtyReasonSummary.join(`、`)),1)):b(``,!0),n.event.profile.pendingReasonSummary?.length?(g(),C(`p`,Ee,` 待处理:`+s(n.event.profile.pendingReasonSummary.join(`、`)),1)):b(``,!0)])):b(``,!0)])):b(``,!0)]),_:1},8,[`event`,`duration-text`])]),_:1})}var Oe=k(me,[[`render`,De]]),ke=t({__name:`AppRuntimeSourceCard`,props:{source:{},count:{},errorCount:{},averageDuration:{},latestTimestamp:{},countLabel:{}},setup(e,{expose:t}){t();let n=e,r={props:n,badge:h(()=>te(n)),subtitle:h(()=>n.latestTimestamp?`最近事件 ${n.latestTimestamp}`:`${n.count} ${n.countLabel??`条事件`}`),detailItems:h(()=>[{key:`error-count`,label:`错误 ${n.errorCount}`},{key:`average-duration`,label:`平均耗时 ${n.averageDuration}`}]),summaryText:h(()=>`平均耗时 ${n.averageDuration}`),get mutedPanelStyles(){return T},AppRuntimeBadge:I};return Object.defineProperty(r,"__isScriptSetup",{enumerable:!1,value:!0}),r}}),Ae={class:`flex items-start justify-between gap-3`},je={class:`min-w-0`},Me={class:`truncate font-medium text-(--dashboard-text)`},Ne={class:`mt-1 text-[11px] uppercase tracking-[0.16em] text-(--dashboard-text-soft)`},Pe={key:0,class:`mt-3 flex flex-wrap gap-2 text-[11px] uppercase tracking-[0.14em] text-(--dashboard-text-soft)`},Fe={key:1,class:`mt-3 text-sm text-(--dashboard-text-muted)`};function Ie(e,t,n,r,a,o){return g(),C(`div`,{class:i(r.mutedPanelStyles({padding:`sm`}))},[m(`div`,Ae,[m(`div`,je,[m(`p`,Me,s(r.props.source),1),m(`p`,Ne,s(r.subtitle),1)]),f(r.AppRuntimeBadge,c(x(r.badge)),null,16)]),r.props.latestTimestamp?(g(),C(`div`,Pe,[(g(!0),C(y,null,l(r.detailItems,e=>(g(),C(`span`,{key:e.key,class:`rounded-full border border-(--dashboard-border) px-2 py-0.5`},s(e.label),1))),128))])):(g(),C(`p`,Fe,s(r.summaryText),1))],2)}var Le=k(ke,[[`render`,Ie]]),Re=t({__name:`AppStatCard`,props:{label:{},value:{}},setup(e,{expose:t}){t();let n={panelClassName:T({padding:`sm`}),AppMetaLabel:L};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}}),ze={class:`mt-1 text-lg font-semibold`};function Be(e,t,n,r,a,o){return g(),C(`div`,{class:i(r.panelClassName)},[f(r.AppMetaLabel,null,{default:w(()=>[S(s(n.label),1)]),_:1}),m(`p`,ze,s(n.value),1)],2)}var Ve=k(Re,[[`render`,Be]]),He=t({__name:`RuntimeIncidentDigestPanel`,props:{digest:{}},setup(e,{expose:t}){t();let n=e,r=a(``),i=null,o=h(()=>n.digest.status===`critical`?`error`:n.digest.status===`warning`?`warning`:`success`);function s(e){return e===`error`?`text-rose-600 dark:text-rose-300`:e===`warning`?`text-amber-600 dark:text-amber-300`:`text-(--dashboard-accent)`}function c(e){return e===`critical`?`border-rose-400/60 bg-(--dashboard-panel-muted)`:e===`warning`?`border-amber-400/60 bg-(--dashboard-panel-muted)`:`border-emerald-400/60 bg-(--dashboard-panel-muted)`}function l(e){r.value=e,i&&clearTimeout(i),i=setTimeout(()=>{r.value=``,i=null},1800)}async function u(){try{await P(n.digest.report),l(`摘要已复制`)}catch{l(`复制失败`)}}_(()=>{i&&clearTimeout(i)});let d={props:n,copyStatus:r,get copyStatusTimer(){return i},set copyStatusTimer(e){i=e},badgeTone:o,getLevelClassName:s,getStatusAccentClassName:c,setCopyStatus:l,copyDigestReport:u,AppEmptyState:F,AppMetricTile:ae,AppRuntimeBadge:I,AppSurfaceCard:N,DashboardIcon:ee};return Object.defineProperty(d,"__isScriptSetup",{enumerable:!1,value:!0}),d}}),Ue={class:`flex shrink-0 items-center gap-2`},We={key:0,class:`text-xs font-medium text-(--dashboard-accent)`},Ge={class:`h-3.5 w-3.5`},Ke={class:`grid gap-3`},qe={class:`flex items-start justify-between gap-3`},Je={class:`min-w-0`},Ye={class:`text-sm font-semibold text-(--dashboard-text)`},Xe={class:`mt-1 text-xs leading-5 text-(--dashboard-text-muted)`},Ze={class:`grid grid-cols-2 gap-2 sm:grid-cols-5 xl:grid-cols-2 2xl:grid-cols-5`},Qe={key:0,class:`grid max-h-52 gap-2 overflow-y-auto pr-1`},$e={class:`flex items-start justify-between gap-3`},et={class:`min-w-0`},tt={class:`truncate text-sm font-medium text-(--dashboard-text)`},nt={class:`mt-1 truncate text-xs text-(--dashboard-text-soft)`},rt={class:`mt-2 line-clamp-2 text-xs leading-5 text-(--dashboard-text-muted)`};function it(e,t,n,r,a,o){return g(),p(r.AppSurfaceCard,{eyebrow:`Incident`,title:`事故摘要`,"icon-name":`metric-quality`},{header:w(()=>[m(`div`,Ue,[r.copyStatus?(g(),C(`span`,We,s(r.copyStatus),1)):b(``,!0),m(`button`,{type:`button`,class:`inline-flex h-8 items-center gap-1.5 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) focus:border-(--dashboard-border-strong) focus:outline-none`,onClick:r.copyDigestReport},[m(`span`,Ge,[f(r.DashboardIcon,{name:`metric-copy`})]),t[0]||=S(` 复制 `,-1)])])]),default:w(()=>[m(`div`,Ke,[m(`div`,{class:i([`rounded-md border px-3 py-2.5`,r.getStatusAccentClassName(n.digest.status)])},[m(`div`,qe,[m(`div`,Je,[m(`p`,Ye,s(n.digest.statusLabel),1),m(`p`,Xe,s(n.digest.statusDetail),1)]),f(r.AppRuntimeBadge,{label:n.digest.statusLabel,tone:r.badgeTone},null,8,[`label`,`tone`])])],2),m(`div`,Ze,[(g(!0),C(y,null,l(n.digest.metrics,e=>(g(),p(r.AppMetricTile,{key:e.label,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),n.digest.incidents.length>0?(g(),C(`div`,Qe,[(g(!0),C(y,null,l(n.digest.incidents,e=>(g(),C(`article`,{key:e.id,class:`rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 py-2.5`},[m(`div`,$e,[m(`div`,et,[m(`p`,tt,s(e.title),1),m(`p`,nt,s(e.source)+` · `+s(e.kindLabel)+` · `+s(e.timestamp)+` · `+s(e.duration),1)]),m(`span`,{class:i([`shrink-0 text-xs font-semibold`,r.getLevelClassName(e.level)])},s(e.levelLabel),3)]),m(`p`,rt,s(e.reason)+` · `+s(e.detail),1)]))),128))])):(g(),p(r.AppEmptyState,{key:1,compact:``},{default:w(()=>[...t[1]||=[S(` 当前筛选范围内没有需要处理的运行时事件。 `,-1)]]),_:1}))])]),_:1})}var at=k(He,[[`render`,it]]),ot=t({__name:`ActivityInsightPanel`,props:{selectedEvent:{},incidentDigest:{},eventSummary:{},filteredEventSummary:{},diagnostics:{},sourceBreakdown:{}},setup(e,{expose:t}){t();let n={ActivitySelectedEventPanel:Oe,AppRuntimeBadge:I,AppRuntimeSourceCard:Le,AppStatCard:Ve,AppSurfaceCard:N,RuntimeIncidentDigestPanel:at};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}}),st={class:`grid min-h-0 content-start gap-3 overflow-y-auto pr-1`},ct={class:`grid gap-2 sm:grid-cols-2`},lt={class:`grid max-h-44 gap-2 overflow-y-auto pr-1`},ut={class:`flex items-start justify-between gap-3`},dt={class:`font-medium`},ft={class:`mt-1 text-sm leading-6 text-(--dashboard-text-muted)`},pt={key:0,class:`grid max-h-full gap-2 overflow-y-auto pr-1`};function mt(e,t,r,i,a,o){return g(),C(`div`,st,[f(i.ActivitySelectedEventPanel,{event:r.selectedEvent},null,8,[`event`]),f(i.RuntimeIncidentDigestPanel,{digest:r.incidentDigest},null,8,[`digest`]),f(i.AppSurfaceCard,{eyebrow:`Runtime`,title:`事件摘要`,"icon-name":`metric-time`},{default:w(()=>[m(`div`,ct,[(g(!0),C(y,null,l([...r.eventSummary,...r.filteredEventSummary],e=>(g(),p(i.AppStatCard,n({key:e.label},{ref_for:!0},e),null,16))),128))])]),_:1}),f(i.AppSurfaceCard,{eyebrow:`Diagnostics`,title:`当前诊断队列`,"icon-name":`metric-health`,"content-class":`min-h-0 overflow-hidden`},{default:w(()=>[m(`ul`,lt,[(g(!0),C(y,null,l(r.diagnostics,e=>(g(),C(`li`,{key:e.label,class:`rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-4 py-3`},[m(`div`,ut,[m(`div`,null,[m(`p`,dt,s(e.label),1),m(`p`,ft,s(e.detail),1)]),f(i.AppRuntimeBadge,{label:e.status,tone:`info`},null,8,[`label`])])]))),128))])]),_:1}),f(i.AppSurfaceCard,{eyebrow:`Sources`,title:`事件来源`,"icon-name":`hero-system`,"content-class":`min-h-0 overflow-hidden`},{default:w(()=>[r.sourceBreakdown.length>0?(g(),C(`div`,pt,[(g(!0),C(y,null,l(r.sourceBreakdown,e=>(g(),p(i.AppRuntimeSourceCard,n({key:e.source},{ref_for:!0},e),null,16))),128))])):b(``,!0)]),_:1})])}var ht=k(ot,[[`render`,mt]]),gt=t({__name:`AppEventFilterPanel`,props:{searchQuery:{},presetDescription:{},filterPresets:{},eventKindOptions:{},eventLevelOptions:{},eventSourceOptions:{},eventKindFilter:{},eventLevelFilter:{},eventSourceFilter:{}},emits:[`update:searchQuery`,`update:eventKindFilter`,`update:eventLevelFilter`,`update:eventSourceFilter`,`applyPreset`],setup(e,{expose:t,emit:n}){t();let r=e,i=n;function a(){return M({kind:`theme`,active:!1})}function o(e,t){return M({kind:`theme`,active:e===t})}let s={props:r,emit:i,getPresetClassName:a,getOptionClassName:o,AppInsetPanel:R,AppMetaLabel:L};return Object.defineProperty(s,"__isScriptSetup",{enumerable:!1,value:!0}),s}}),_t={class:`grid gap-3 xl:grid-cols-[minmax(14rem,0.85fr)_minmax(0,1.15fr)]`},vt={for:`dashboard-event-search`},yt=[`value`],bt={class:`grid gap-3`},xt={class:`mt-2 flex flex-wrap gap-2`},St=[`onClick`],Ct={key:0,class:`mt-2 text-xs leading-5 text-(--dashboard-text-soft)`},wt={class:`grid gap-3 md:grid-cols-3`},Tt={class:`mt-2 flex flex-wrap gap-2`},Et=[`onClick`],Dt={class:`mt-2 flex flex-wrap gap-2`},Ot=[`onClick`],kt={class:`mt-2 flex flex-wrap gap-2`},At=[`onClick`];function jt(e,t,n,r,a,o){return g(),p(r.AppInsetPanel,null,{default:w(()=>[m(`div`,_t,[m(`div`,null,[m(`label`,vt,[f(r.AppMetaLabel,null,{default:w(()=>[...t[1]||=[S(` 搜索事件 `,-1)]]),_:1})]),m(`input`,{id:`dashboard-event-search`,value:n.searchQuery,type:`text`,placeholder:`搜索标题、详情、来源或标签`,class:`mt-2 w-full rounded-md border border-(--dashboard-border) bg-(--dashboard-panel) px-3 py-2 text-sm text-(--dashboard-text) outline-none transition focus:border-(--dashboard-border-strong)`,onInput:t[0]||=e=>r.emit(`update:searchQuery`,e.target.value)},null,40,yt)]),m(`div`,bt,[m(`div`,null,[f(r.AppMetaLabel,null,{default:w(()=>[...t[2]||=[S(` 快速预设 `,-1)]]),_:1}),m(`div`,xt,[(g(!0),C(y,null,l(n.filterPresets,e=>(g(),C(`button`,{key:e.key,class:i(r.getPresetClassName()),onClick:t=>r.emit(`applyPreset`,e.key)},s(e.label),11,St))),128))]),n.presetDescription?(g(),C(`p`,Ct,s(n.presetDescription),1)):b(``,!0)]),m(`div`,wt,[m(`div`,null,[f(r.AppMetaLabel,null,{default:w(()=>[...t[3]||=[S(` 类型过滤 `,-1)]]),_:1}),m(`div`,Tt,[(g(!0),C(y,null,l(n.eventKindOptions,e=>(g(),C(`button`,{key:e.value,class:i(r.getOptionClassName(r.props.eventKindFilter,e.value)),onClick:t=>r.emit(`update:eventKindFilter`,e.value)},s(e.label),11,Et))),128))])]),m(`div`,null,[f(r.AppMetaLabel,null,{default:w(()=>[...t[4]||=[S(` 等级过滤 `,-1)]]),_:1}),m(`div`,Dt,[(g(!0),C(y,null,l(n.eventLevelOptions,e=>(g(),C(`button`,{key:e.value,class:i(r.getOptionClassName(r.props.eventLevelFilter,e.value)),onClick:t=>r.emit(`update:eventLevelFilter`,e.value)},s(e.label),11,Ot))),128))])]),m(`div`,null,[f(r.AppMetaLabel,null,{default:w(()=>[...t[5]||=[S(` 来源过滤 `,-1)]]),_:1}),m(`div`,kt,[(g(!0),C(y,null,l(n.eventSourceOptions,e=>(g(),C(`button`,{key:e.value,class:i(r.getOptionClassName(r.props.eventSourceFilter,e.value)),onClick:t=>r.emit(`update:eventSourceFilter`,e.value)},s(e.label),11,At))),128))])])])])])]),_:1})}var Mt=k(gt,[[`render`,jt]]),Nt=t({__name:`AppRuntimeEventListItem`,props:{event:{},selected:{type:Boolean}},setup(e,{expose:t}){t();let n=e,r={props:n,badge:h(()=>O(n.event)),eventMeta:h(()=>j(n.event)),panelClassName:h(()=>n.selected?`border-(--dashboard-border-strong) bg-(--dashboard-panel)`:`border-(--dashboard-border)`),AppMetaLabel:L,AppRuntimeBadge:I};return Object.defineProperty(r,"__isScriptSetup",{enumerable:!1,value:!0}),r}}),Pt={class:`flex items-start justify-between gap-3`},Ft={class:`font-medium text-(--dashboard-text)`};function It(e,t,n,r,a,o){return g(),C(`li`,{class:i([`rounded-md border bg-(--dashboard-panel-muted) px-4 py-3 transition`,r.panelClassName])},[m(`div`,Pt,[m(`div`,null,[m(`p`,Ft,s(r.props.event.title),1),f(r.AppMetaLabel,{class:`mt-1`},{default:w(()=>[S(s(r.eventMeta),1)]),_:1})]),f(r.AppRuntimeBadge,c(x(r.badge)),null,16)])],2)}var Lt=k(Nt,[[`render`,It]]),Rt=1e3,zt=5,Y={error:4,warning:3,success:2,info:1};function X(e){let t=Date.parse(e.timestamp);return Number.isFinite(t)?t:0}function Z(e,t){return typeof e.durationMs==`number`&&e.durationMs>=t}function Bt(e,t){return e.level===`error`||e.level===`warning`||Z(e,t)}function Vt(e,t){let n=[];return e.level===`error`?n.push(`错误事件`):e.level===`warning`&&n.push(`警告事件`),Z(e,t)&&n.push(`耗时 ${A(e.durationMs)}`),n.join(` · `)||`需要关注`}function Q(e,t){return{id:e.id,title:e.title,detail:e.detail,level:e.level,levelLabel:D(e.level),kindLabel:E(e.kind),source:e.source??`dashboard`,timestamp:e.timestamp,duration:A(e.durationMs),reason:Vt(e,t)}}function Ht(e,t,n){return e>0?`critical`:t>0||n>0?`warning`:`healthy`}function Ut(e){return e===`critical`?`需要立即处理`:e===`warning`?`需要关注`:`运行平稳`}function Wt(e,t,n,r){return e===`critical`?`检测到 ${t} 个错误事件,优先排查失败来源。`:e===`warning`?`检测到 ${n} 个警告和 ${r} 个慢事件,建议跟进。`:`当前筛选范围内没有错误、警告或慢事件。`}function Gt(e){let t=e.incidents.length>0?e.incidents.map(e=>`- [${e.levelLabel}] ${e.title}(${e.source} · ${e.kindLabel} · ${e.timestamp} · ${e.duration}):${e.detail}`):[`- 当前筛选范围内没有需要处理的事件。`];return[`# dashboard 运行时事故摘要`,``,`状态:${e.statusLabel}`,`说明:${e.statusDetail}`,``,`## 指标`,...e.metrics.map(e=>`- ${e.label}:${e.value}`),``,`## 影响来源`,e.affectedSources.length>0?e.affectedSources.map(e=>`- ${e}`).join(`
4
+ `):`- 无`,``,`## 优先处理`,...t,``].join(`
5
+ `)}function Kt(e,t={}){let n=t.slowEventThresholdMs??Rt,r=e.filter(e=>e.level===`error`).length,i=e.filter(e=>e.level===`warning`).length,a=e.filter(e=>Z(e,n)).length,o=e.filter(e=>Bt(e,n)),s=[...new Set(o.map(e=>e.source??`dashboard`))].sort((e,t)=>e.localeCompare(t,`zh-CN`)),c=Ht(r,i,a),l=o.toSorted((e,t)=>Y[t.level]-Y[e.level]||(t.durationMs??-1)-(e.durationMs??-1)||X(t)-X(e)).slice(0,zt).map(e=>Q(e,n)),u={status:c,statusLabel:Ut(c),statusDetail:Wt(c,r,i,a),metrics:[{label:`事件总数`,value:e.length},{label:`错误`,value:r},{label:`警告`,value:i},{label:`慢事件`,value:a},{label:`影响来源`,value:s.length}],affectedSources:s,incidents:l};return{...u,report:Gt(u)}}var $={error:4,warning:3,success:2,info:1},qt=[{value:`all`,label:`全部类型`},{value:`command`,label:`命令`},{value:`build`,label:`构建`},{value:`diagnostic`,label:`诊断`},{value:`hmr`,label:`HMR`},{value:`system`,label:`系统`}],Jt=[{value:`all`,label:`全部等级`},{value:`info`,label:`信息`},{value:`success`,label:`成功`},{value:`warning`,label:`警告`},{value:`error`,label:`错误`}];function Yt(e,t){return[e.title,e.detail,e.kind,e.level,e.source??``,...e.tags??[]].join(` `).toLowerCase().includes(t)}function Xt(e,t){return[...e].sort((e,n)=>t===`duration`?(n.durationMs??-1)-(e.durationMs??-1)||Date.parse(n.timestamp)-Date.parse(e.timestamp):t===`severity`?$[n.level]-$[e.level]||Date.parse(n.timestamp)-Date.parse(e.timestamp):t===`source`&&(e.source??`dashboard`).localeCompare(n.source??`dashboard`)||Date.parse(n.timestamp)-Date.parse(e.timestamp))}function Zt(e){let t=a(`all`),n=a(`all`),r=a(`all`),i=a(`time`),o=a(``),s=a(null),c=[{key:`all`,label:`查看全部`,description:`回到完整事件流`,apply(){t.value=`all`,n.value=`all`,r.value=`all`,o.value=``}},{key:`issues`,label:`异常优先`,description:`只看警告和错误`,apply(){t.value=`all`,n.value=`warning`,r.value=`all`,o.value=``}},{key:`commands`,label:`命令流`,description:`聚焦命令执行事件`,apply(){t.value=`command`,n.value=`all`,r.value=`all`,o.value=``}},{key:`hmr`,label:`HMR`,description:`观察热更新相关事件`,apply(){t.value=`hmr`,n.value=`all`,r.value=`all`,o.value=``}}],l=h(()=>[{value:`all`,label:`全部来源`},...[...new Set(e.value.map(e=>e.source??`dashboard`).filter(Boolean))].sort((e,t)=>e.localeCompare(t,`zh-CN`)).map(e=>({value:e,label:e}))]),u=h(()=>{let a=o.value.trim().toLowerCase();return Xt(e.value.filter(e=>t.value!==`all`&&e.kind!==t.value||n.value!==`all`&&e.level!==n.value||r.value!==`all`&&(e.source??`dashboard`)!==r.value?!1:!a||Yt(e,a)),i.value)}),f=h(()=>{let e=u.value.filter(e=>typeof e.durationMs==`number`),i=e.length>0?Math.round(e.reduce((e,t)=>e+(t.durationMs??0),0)/e.length):void 0;return[{label:`筛选后事件`,value:String(u.value.length)},{label:`当前类型`,value:t.value===`all`?`全部`:E(t.value)},{label:`当前等级`,value:n.value===`all`?`全部`:D(n.value)},{label:`当前来源`,value:r.value===`all`?`全部`:r.value},{label:`搜索关键字`,value:o.value.trim()||`未设置`},{label:`筛选平均耗时`,value:A(i)}]}),p=h(()=>ne(re(u.value))),m=h(()=>Kt(u.value)),g=h(()=>u.value.find(e=>e.id===s.value)??u.value[0]??null),_=h(()=>c.find(e=>e.key===`issues`?t.value===`all`&&n.value===`warning`&&r.value===`all`&&o.value===``:e.key===`commands`?t.value===`command`&&n.value===`all`&&r.value===`all`&&o.value===``:e.key===`hmr`?t.value===`hmr`&&n.value===`all`&&r.value===`all`&&o.value===``:t.value===`all`&&n.value===`all`&&r.value===`all`&&o.value===``)?.description??``);return d(u,e=>{if(e.length===0){s.value=null;return}e.some(e=>e.id===s.value)||(s.value=e[0]?.id??null)},{immediate:!0}),{eventKindFilter:t,eventKindOptions:qt,eventLevelFilter:n,eventLevelOptions:Jt,eventSortMode:i,eventSourceFilter:r,eventSourceOptions:l,filteredEventSummary:f,filteredRuntimeEvents:u,filterPresets:c,incidentDigest:m,presetDescription:_,searchQuery:o,selectedEvent:g,selectedEventId:s,sourceBreakdown:p}}var Qt=t({__name:`activity`,setup(e,{expose:t}){t();let{diagnostics:n,eventSummary:r,runtimeEvents:i}=ie(),{eventKindFilter:a,eventKindOptions:o,eventLevelFilter:s,eventLevelOptions:c,eventSortMode:l,eventSourceFilter:u,eventSourceOptions:d,filteredEventSummary:f,filteredRuntimeEvents:p,filterPresets:m,incidentDigest:h,presetDescription:g,searchQuery:_,selectedEvent:v,selectedEventId:y,sourceBreakdown:b}=Zt(i),x={diagnostics:n,eventSummary:r,runtimeEvents:i,eventKindFilter:a,eventKindOptions:o,eventLevelFilter:s,eventLevelOptions:c,eventSortMode:l,eventSourceFilter:u,eventSourceOptions:d,filteredEventSummary:f,filteredRuntimeEvents:p,filterPresets:m,incidentDigest:h,presetDescription:g,searchQuery:_,selectedEvent:v,selectedEventId:y,sourceBreakdown:b,ActivityEventSortBar:q,ActivityInsightPanel:ht,AppEmptyState:F,AppEventFilterPanel:Mt,AppRuntimeEventListItem:Lt,AppSurfaceCard:N};return Object.defineProperty(x,"__isScriptSetup",{enumerable:!1,value:!0}),x}}),$t={class:`grid h-full min-h-0 gap-3 overflow-hidden xl:grid-cols-[minmax(0,1.25fr)_minmax(22rem,0.75fr)]`},en={class:`grid h-full min-h-0 grid-rows-[minmax(0,9rem)_auto_minmax(6rem,1fr)] gap-3 overflow-hidden`},tn={class:`grid min-h-0 gap-2 overflow-y-auto pr-1 text-sm leading-6 text-(--dashboard-text-muted)`};function nn(e,t,n,r,i,a){return g(),C(`div`,$t,[f(r.AppSurfaceCard,{eyebrow:`Event Feed`,title:`事件控制台`,"icon-name":`hero-commands`,"content-class":`min-h-0 overflow-hidden`},{default:w(()=>[m(`div`,en,[f(r.AppEventFilterPanel,{class:`min-h-0 overflow-y-auto`,"search-query":r.searchQuery,"preset-description":r.presetDescription,"filter-presets":r.filterPresets,"event-kind-options":r.eventKindOptions,"event-level-options":r.eventLevelOptions,"event-source-options":r.eventSourceOptions,"event-kind-filter":r.eventKindFilter,"event-level-filter":r.eventLevelFilter,"event-source-filter":r.eventSourceFilter,"onUpdate:searchQuery":t[0]||=e=>r.searchQuery=e,"onUpdate:eventKindFilter":t[1]||=e=>r.eventKindFilter=e,"onUpdate:eventLevelFilter":t[2]||=e=>r.eventLevelFilter=e,"onUpdate:eventSourceFilter":t[3]||=e=>r.eventSourceFilter=e,onApplyPreset:t[4]||=e=>r.filterPresets.find(t=>t.key===e)?.apply()},null,8,[`search-query`,`preset-description`,`filter-presets`,`event-kind-options`,`event-level-options`,`event-source-options`,`event-kind-filter`,`event-level-filter`,`event-source-filter`]),f(r.ActivityEventSortBar,{modelValue:r.eventSortMode,"onUpdate:modelValue":t[5]||=e=>r.eventSortMode=e,events:r.filteredRuntimeEvents,"filtered-count":r.filteredRuntimeEvents.length,"total-count":r.runtimeEvents.length},null,8,[`modelValue`,`events`,`filtered-count`,`total-count`]),r.filteredRuntimeEvents.length===0?(g(),p(r.AppEmptyState,{key:0,as:`p`},{default:w(()=>[...t[6]||=[S(` 当前过滤条件下没有匹配事件。 `,-1)]]),_:1})):b(``,!0),m(`ul`,tn,[(g(!0),C(y,null,l(r.filteredRuntimeEvents,e=>(g(),p(r.AppRuntimeEventListItem,{key:e.id,event:e,selected:r.selectedEvent?.id===e.id,onClick:t=>r.selectedEventId=e.id},null,8,[`event`,`selected`,`onClick`]))),128))])])]),_:1}),f(r.ActivityInsightPanel,{"selected-event":r.selectedEvent,"incident-digest":r.incidentDigest,"event-summary":r.eventSummary,"filtered-event-summary":r.filteredEventSummary,diagnostics:r.diagnostics,"source-breakdown":r.sourceBreakdown},null,8,[`selected-event`,`incident-digest`,`event-summary`,`filtered-event-summary`,`diagnostics`,`source-breakdown`])])}var rn=k(Qt,[[`render`,nn]]);export{rn as default};