chatlab-cli 0.34.0 → 0.34.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chat-command-XPY3WURC.mjs → chat-command-OWKJJ736.mjs} +8 -8
- package/dist/{chunk-OLE2USEN.mjs → chunk-3RWYALUP.mjs} +4 -2
- package/dist/{chunk-OLE2USEN.mjs.map → chunk-3RWYALUP.mjs.map} +1 -1
- package/dist/{chunk-IGEHMLHM.mjs → chunk-GHZFNAMF.mjs} +2 -2
- package/dist/{chunk-DGF3S3TZ.mjs → chunk-J7HAIT3T.mjs} +15 -9
- package/dist/chunk-J7HAIT3T.mjs.map +1 -0
- package/dist/{chunk-JCSPDTZL.mjs → chunk-MPHFZYB7.mjs} +4 -4
- package/dist/{chunk-ISRLGLUL.mjs → chunk-OHFVX2HH.mjs} +2 -2
- package/dist/{chunk-UO2XVFY6.mjs → chunk-RMW3524R.mjs} +25 -56
- package/dist/{chunk-UO2XVFY6.mjs.map → chunk-RMW3524R.mjs.map} +1 -1
- package/dist/{chunk-AQPDZAWB.mjs → chunk-RRC6U56Y.mjs} +259 -52
- package/dist/chunk-RRC6U56Y.mjs.map +1 -0
- package/dist/{chunk-IGK6UMN2.mjs → chunk-VTCZM2JS.mjs} +11 -11
- package/dist/{chunk-JTOHAMIW.mjs → chunk-XEGEOU2D.mjs} +2 -2
- package/dist/{chunk-BQ3QN4QT.mjs → chunk-YRCFDZ5Q.mjs} +3 -3
- package/dist/{chunk-S5NCEESV.mjs → chunk-ZM5DSHFF.mjs} +95 -5
- package/dist/chunk-ZM5DSHFF.mjs.map +1 -0
- package/dist/cli.mjs +8 -8
- package/dist/contacts-worker.mjs +2 -2
- package/dist/global-insight-worker.mjs +1 -1
- package/dist/{http-HV6XWU6X.mjs → http-X55S6MTO.mjs} +11 -11
- package/dist/{import-DP2XLZ2H.mjs → import-4AX6IX57.mjs} +7 -7
- package/dist/index.mjs +11 -11
- package/dist/{mcp-QDPFBPGW.mjs → mcp-GWC52AWE.mjs} +8 -8
- package/dist/people-relationships-worker.mjs +2 -2
- package/dist/semantic-index-worker.mjs +1 -1
- package/dist/{src-B3A2QHP5.mjs → src-DLLM4SEO.mjs} +8 -6
- package/dist/{stream-import-KEGNP3QK.mjs → stream-import-K24HWAAZ.mjs} +7 -7
- package/dist/{worker-runtime-MDYKX3BW.mjs → worker-runtime-6KKR55TD.mjs} +5 -5
- package/dist-cli-web/assets/{ActionToolsPanel.vue_vue_type_script_setup_true_lang-JxPR2O6b.js → ActionToolsPanel.vue_vue_type_script_setup_true_lang-D1BiZuQL.js} +5 -5
- package/dist-cli-web/assets/{BufferResource--dSbJb0k.js → BufferResource-IPkSmPao.js} +1 -1
- package/dist-cli-web/assets/{CanvasRenderer-Cm_dmJXZ.js → CanvasRenderer-OAQy65em.js} +1 -1
- package/dist-cli-web/assets/{DataDirCleanupNotice-B0s5txX3.js → DataDirCleanupNotice-jEI-YjFp.js} +1 -1
- package/dist-cli-web/assets/{EChartWordcloud-CwMVJLBO.js → EChartWordcloud-Pi48JdN2.js} +1 -1
- package/dist-cli-web/assets/{Filter-BjYScRpK.js → Filter-FQD30cRE.js} +1 -1
- package/dist-cli-web/assets/{LoadingState.vue_vue_type_script_setup_true_lang-BshQybD_.js → LoadingState.vue_vue_type_script_setup_true_lang-CCK5yTju.js} +1 -1
- package/dist-cli-web/assets/{MessageExportModal-DAJW2mFj.js → MessageExportModal-CZn3LbeY.js} +1 -1
- package/dist-cli-web/assets/{PageHeader-BKAjCuqs.js → PageHeader-B9B9K9by.js} +1 -1
- package/dist-cli-web/assets/{RelationshipGalaxyCanvas-mlZs7k4L.js → RelationshipGalaxyCanvas-CbTmpnZ6.js} +3 -3
- package/dist-cli-web/assets/{RelationshipGalaxyThreeCanvas-DgMG3jdU.js → RelationshipGalaxyThreeCanvas-Cu6NmKOq.js} +1 -1
- package/dist-cli-web/assets/{RenderTargetSystem-D00Ex44y.js → RenderTargetSystem-DnptJCQ0.js} +1 -1
- package/dist-cli-web/assets/{ThemeCard.vue_vue_type_script_setup_true_lang-Dsb6lzs-.js → ThemeCard.vue_vue_type_script_setup_true_lang-JXMFY6aD.js} +1 -1
- package/dist-cli-web/assets/{TimeSelect.vue_vue_type_script_setup_true_lang-BfR3tlkz.js → TimeSelect.vue_vue_type_script_setup_true_lang-QAZFwx5S.js} +1 -1
- package/dist-cli-web/assets/{WebGLRenderer-CTTusm2n.js → WebGLRenderer-BmjIF5se.js} +1 -1
- package/dist-cli-web/assets/{WebGPURenderer-pyv3EXor.js → WebGPURenderer-DkNcKkqj.js} +1 -1
- package/dist-cli-web/assets/{annual-summary-time-range-C_d1oZrj.js → annual-summary-time-range-DJ0HWI_t.js} +1 -1
- package/dist-cli-web/assets/{base-D91aVUwM.js → base-CnuE0ss0.js} +1 -1
- package/dist-cli-web/assets/{browserAll-C9fW936Y.js → browserAll-C_NnyNBz.js} +1 -1
- package/dist-cli-web/assets/{cli-web-C7uGKz_E.js → cli-web-t1gabACJ.js} +1 -1
- package/dist-cli-web/assets/{dateFormat-rY43adcv.js → dateFormat-p6nibkgt.js} +1 -1
- package/dist-cli-web/assets/{fetch-CNy9OQ2g.js → fetch-BBUvWvOM.js} +1 -1
- package/dist-cli-web/assets/{fetch-CS3T-v-1.js → fetch-BfYranz7.js} +1 -1
- package/dist-cli-web/assets/{fetch-DG3AeEjW.js → fetch-Bsm5YQ_7.js} +1 -1
- package/dist-cli-web/assets/{fetch-PLrI3V67.js → fetch-C4KJ7tGz.js} +1 -1
- package/dist-cli-web/assets/{fetch-CrSz5KJy.js → fetch-CMhV3TYQ.js} +1 -1
- package/dist-cli-web/assets/{fetch-CbnX5VoM.js → fetch-Ch4IMKin.js} +1 -1
- package/dist-cli-web/assets/{fetch-DYNgtIcU.js → fetch-DajjPQtq.js} +1 -1
- package/dist-cli-web/assets/{fetch-Kk2knkEo.js → fetch-WElo3Vix.js} +1 -1
- package/dist-cli-web/assets/{fetch-DZPC3D8R.js → fetch-WIOgRPd9.js} +1 -1
- package/dist-cli-web/assets/{fetch-C6po4XYB.js → fetch-_Hb-KRSr.js} +3 -3
- package/dist-cli-web/assets/{index-2S80bo1s.js → index-B8I5Pax_.js} +2 -2
- package/dist-cli-web/assets/{index-BKo68Iu5.js → index-BE4nd1aX.js} +1 -1
- package/dist-cli-web/assets/{index-DFHYr_-u.js → index-Bb6EtLMB.js} +1 -1
- package/dist-cli-web/assets/{index-DsdMsKYT.js → index-BcWaPFz7.js} +1 -1
- package/dist-cli-web/assets/{index-ZTgfCZvY.js → index-CKkIHbie.js} +3 -3
- package/dist-cli-web/assets/{index-3YO6RI5e.js → index-CbacXZN3.js} +2 -2
- package/dist-cli-web/assets/{index-JYfjMRb-.js → index-CjoTcSEc.js} +1 -1
- package/dist-cli-web/assets/index-CsX1Wt8l.js +173 -0
- package/dist-cli-web/assets/{index-2-OaYdzt.js → index-CsyURmWU.js} +1 -1
- package/dist-cli-web/assets/{index-CGI3Y8pq.js → index-DLnlRLCx.js} +1 -1
- package/dist-cli-web/assets/index-YzfjPohq.js +53 -0
- package/dist-cli-web/assets/{index-BrkDgcJ6.js → index-dObiAHg6.js} +1 -1
- package/dist-cli-web/assets/{index-DA3Q0TGT.js → index-x74lBtei.js} +1 -1
- package/dist-cli-web/assets/{people-page-header-D-LWaEqn.js → people-page-header-BW5cNPl7.js} +1 -1
- package/dist-cli-web/assets/{webworkerAll-CPOVECup.js → webworkerAll-8AFsQkH1.js} +1 -1
- package/dist-cli-web/index.html +1 -1
- package/package.json +1 -1
- package/dist/chunk-AQPDZAWB.mjs.map +0 -1
- package/dist/chunk-DGF3S3TZ.mjs.map +0 -1
- package/dist/chunk-S5NCEESV.mjs.map +0 -1
- package/dist-cli-web/assets/index-CW9H_fBd.js +0 -53
- package/dist-cli-web/assets/index-DmwA85vG.js +0 -173
- /package/dist/{chat-command-XPY3WURC.mjs.map → chat-command-OWKJJ736.mjs.map} +0 -0
- /package/dist/{chunk-IGEHMLHM.mjs.map → chunk-GHZFNAMF.mjs.map} +0 -0
- /package/dist/{chunk-JCSPDTZL.mjs.map → chunk-MPHFZYB7.mjs.map} +0 -0
- /package/dist/{chunk-ISRLGLUL.mjs.map → chunk-OHFVX2HH.mjs.map} +0 -0
- /package/dist/{chunk-IGK6UMN2.mjs.map → chunk-VTCZM2JS.mjs.map} +0 -0
- /package/dist/{chunk-JTOHAMIW.mjs.map → chunk-XEGEOU2D.mjs.map} +0 -0
- /package/dist/{chunk-BQ3QN4QT.mjs.map → chunk-YRCFDZ5Q.mjs.map} +0 -0
- /package/dist/{http-HV6XWU6X.mjs.map → http-X55S6MTO.mjs.map} +0 -0
- /package/dist/{import-DP2XLZ2H.mjs.map → import-4AX6IX57.mjs.map} +0 -0
- /package/dist/{mcp-QDPFBPGW.mjs.map → mcp-GWC52AWE.mjs.map} +0 -0
- /package/dist/{src-B3A2QHP5.mjs.map → src-DLLM4SEO.mjs.map} +0 -0
- /package/dist/{stream-import-KEGNP3QK.mjs.map → stream-import-K24HWAAZ.mjs.map} +0 -0
- /package/dist/{worker-runtime-MDYKX3BW.mjs.map → worker-runtime-6KKR55TD.mjs.map} +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/RelationshipGalaxyThreeCanvas-
|
|
2
|
-
import{d as xt,A as wt,M as _t,a3 as St,w as ee,C as Tt,aq as Ct,c as b,f as o,E as te,G as d,g as P,R as Rt,F as ue,ar as Nt,t as r,Z as Ne,$ as Ie,h as M,as as Pe,n as Ee,b as g,a as p,an as F,at as It,H as Pt,aj as Et,o as m,I as Me,P as Mt,au as Be,av as He,aw as Lt}from"./index-CW9H_fBd.js";import{_ as Kt}from"./LoadingState.vue_vue_type_script_setup_true_lang-BshQybD_.js";import{u as Vt}from"./people-page-header-D-LWaEqn.js";const At=10,We=80,zt=2880*60*60,Ue=.1;function Ye(a,i,f={}){if(!i)return{items:[],total:0,hasMore:!1};const y=new Map(a.nodes.map(c=>[c.key,c])),t=a.edges.flatMap(c=>{if(c.sourceKey!==i&&c.targetKey!==i)return[];const w=c.sourceKey===i?c.targetKey:c.sourceKey,V=y.get(w);return V?[{node:V,edge:c,connectionScore:0}]:[]}),C=t.reduce((c,w)=>Math.max(c,w.edge.lastInteractionTs??0),0),L=new Map(t.map(c=>[c,Le(c.edge,C)]));for(const c of t)c.connectionScore=Ft(L.get(c)??0);t.sort((c,w)=>$t(c,w,C));const K=f.collapsedLimit??At;return{items:f.expanded?t:t.slice(0,K),total:t.length,hasMore:!f.expanded&&t.length>K}}function Gt(a,i,f={}){const y=new Set;if(!i||!a.nodes.some(C=>C.key===i))return y;y.add(i);const t=Ye(a,i,{collapsedLimit:f.limit??We});for(const C of t.items)y.add(C.node.key);return y}function vo(a,i,f={}){if(!i||!a.nodes.some(t=>t.key===i))return a;const y=Gt(a,i,f);return{nodes:a.nodes.filter(t=>y.has(t.key)),edges:a.edges.filter(t=>y.has(t.sourceKey)&&y.has(t.targetKey)),communities:a.communities}}function Ft(a){return a<=0?0:Math.max(1,Math.round(a))}function $t(a,i,f){const y=Le(i.edge,f),t=Le(a.edge,f);if(y!==t)return y-t;if(i.edge.weight!==a.edge.weight)return i.edge.weight-a.edge.weight;const C=i.edge.lastInteractionTs??0,L=a.edge.lastInteractionTs??0;return C!==L?C-L:a.node.rank!==i.node.rank?a.node.rank-i.node.rank:a.node.key.localeCompare(i.node.key)}function Le(a,i){if(!a.lastInteractionTs||i<=0)return a.weight;const f=Math.max(0,i-a.lastInteractionTs),y=Ue+(1-Ue)*Math.pow(.5,f/zt);return a.weight*y}function qe(a){return a.selectedKey&&a.selectedKey===a.loadingNeighborhoodKey?a.currentCanvasSelectedKey:a.selectedKey}function Ot(a){return a.selectedKey?a.isNeighborhoodMode?a.selectedKey!==a.neighborhoodContactKey:!0:!1}function Dt(a){return a.neighborhoodTask?.status==="running"?a.neighborhoodTask:a.graphTask?.status==="running"?a.graphTask:a.isNeighborhoodMode&&a.neighborhoodTask?a.neighborhoodTask:a.graphTask??a.neighborhoodTask??null}function jt(a){return a.nextTaskStatus==="running"?{type:"continue-polling"}:a.previousTaskStatus==="running"&&a.nextTaskStatus==="succeeded"&&a.neighborhoodContactKey?{type:"refresh-neighborhood",key:a.neighborhoodContactKey}:{type:"stop-polling"}}function Bt(a){return a.loadError?a.loadError:a.isTaskFailed&&a.statusText?a.statusText:a.emptyText}const Ht=new RegExp("\\p{Script=Han}","u");function Qe(a){const i=a?.trim()??"";if(!i)return"*";const f=Array.from(i),y=[...f].reverse().find(t=>Ht.test(t));return y?`**${y}`:f.length===1?"*":f.length===2?`${f[0]}***`:`${f[0]}***${f.at(-1)}`}function Ut(){return"*"}const qt={class:"flex min-h-0 flex-1 overflow-hidden text-gray-900 dark:bg-page-dark dark:text-gray-100"},Qt={class:"relative min-h-0 min-w-0 flex-1 overflow-hidden bg-[#0b0f19] dark:bg-page-dark"},Wt={class:"absolute left-6 top-4 z-20 flex max-w-[calc(100%-3rem)] flex-wrap items-center gap-2"},Yt={class:"relative w-28 max-w-full sm:w-32 lg:w-36"},Zt={key:0,class:"absolute left-0 top-full z-30 mt-2 max-h-80 w-72 overflow-y-auto rounded-2xl border border-gray-200/80 bg-white/95 p-2 shadow-overlay backdrop-blur-xl scrollbar-thin dark:border-white/10 dark:bg-page-dark/95"},Jt={class:"px-2 pb-1.5 pt-0.5 text-[11px] font-semibold uppercase tracking-wider text-gray-500 dark:text-gray-400"},Xt={class:"space-y-1"},ea=["disabled","onClick"],ta={class:"min-w-0 flex-1"},aa={class:"block truncate text-sm font-semibold text-gray-900 transition-colors group-hover:text-sky-600 dark:text-white dark:group-hover:text-sky-400"},oa={class:"block truncate text-[11px] text-gray-500 dark:text-gray-400"},na={key:0,class:"shrink-0 rounded-md bg-sky-100/60 px-1.5 py-0.5 text-[10px] font-semibold text-sky-600 dark:bg-sky-500/15 dark:text-sky-400"},sa={key:2,class:"absolute bottom-6 left-1/2 z-20 flex max-w-[min(560px,calc(100%-2rem))] -translate-x-1/2 items-center gap-2.5 rounded-2xl border border-sky-500/20 bg-[#090d16]/85 px-4 py-2.5 text-center text-xs font-semibold text-sky-200 shadow-overlay backdrop-blur-md animate-fade-in"},ra={key:4,class:"absolute inset-0 flex items-center justify-center text-sm font-medium text-gray-400"},la={key:5,class:"dark absolute inset-x-3 bottom-3 z-20 flex max-h-[70vh] flex-col overflow-hidden rounded-2xl border border-white/5 bg-page-dark/10 text-white shadow-overlay backdrop-blur-md md:inset-x-auto md:bottom-4 md:right-4 md:top-4 md:max-h-none md:w-[360px]"},ia={key:0,class:"flex min-h-0 flex-1 flex-col gap-3 px-4 pb-4 pt-5"},ca={class:"shrink-0 space-y-2.5"},ua={class:"flex items-center gap-3 pr-8"},da={class:"min-w-0 flex-1"},ha={class:"flex min-w-0 items-center gap-1.5"},va={class:"truncate text-base font-bold text-gray-900 dark:text-white"},pa={class:"truncate text-xs text-gray-500 dark:text-gray-400"},ga={class:"grid grid-cols-3 gap-1 text-xs"},fa={class:"min-w-0 rounded-md border border-gray-100/60 bg-gray-50/35 p-1.5 dark:border-white/5 dark:bg-white/3"},ma={class:"mb-0.5 truncate text-[9px] font-semibold uppercase leading-3 tracking-wide text-gray-400 dark:text-gray-500"},ya={class:"flex min-w-0 items-baseline gap-0.5"},ka={class:"font-mono text-sm font-bold leading-4 text-sky-600 dark:text-sky-400"},ba={class:"min-w-0 rounded-md border border-gray-100/60 bg-gray-50/35 p-1.5 dark:border-white/5 dark:bg-white/3"},xa={class:"mb-0.5 truncate text-[9px] font-semibold uppercase leading-3 tracking-wide text-gray-400 dark:text-gray-500"},wa={class:"min-w-0 rounded-md border border-gray-100/60 bg-gray-50/35 p-1.5 dark:border-white/5 dark:bg-white/3"},_a={class:"mb-0.5 truncate text-[9px] font-semibold uppercase leading-3 tracking-wide text-gray-400 dark:text-gray-500"},Sa={class:"block truncate font-mono text-sm font-bold leading-4 text-gray-900 dark:text-white"},Ta={class:"min-w-0 rounded-md border border-gray-100/60 bg-gray-50/35 p-1.5 dark:border-white/5 dark:bg-white/3"},Ca={class:"mb-0.5 truncate text-[9px] font-semibold uppercase leading-3 tracking-wide text-gray-400 dark:text-gray-500"},Ra={class:"block truncate font-mono text-sm font-bold leading-4 text-gray-900 dark:text-white"},Na={class:"min-w-0 rounded-md border border-gray-100/60 bg-gray-50/35 p-1.5 dark:border-white/5 dark:bg-white/3"},Ia={class:"mb-0.5 truncate text-[9px] font-semibold uppercase leading-3 tracking-wide text-gray-400 dark:text-gray-500"},Pa={class:"block truncate font-mono text-sm font-bold leading-4 text-gray-900 dark:text-white"},Ea={class:"min-w-0 rounded-md border border-gray-100/60 bg-gray-50/35 p-1.5 dark:border-white/5 dark:bg-white/3"},Ma={class:"mb-0.5 truncate text-[9px] font-semibold uppercase leading-3 tracking-wide text-gray-400 dark:text-gray-500"},La={class:"block truncate text-[11px] font-semibold leading-4 text-gray-900 dark:text-white"},Ka={class:"flex min-h-0 flex-1 flex-col gap-2"},Va={class:"flex min-h-0 flex-1 flex-col overflow-hidden rounded-xl border border-gray-100/80 bg-gray-50/25 p-2.5 dark:border-white/5 dark:bg-white/2"},Aa={class:"mb-2 flex shrink-0 items-center justify-between gap-3 pl-1 pr-3"},za={class:"flex min-w-0 items-center gap-2"},Ga={class:"truncate text-xs font-semibold uppercase tracking-wider text-gray-500 dark:text-gray-400"},Fa={class:"shrink-0 font-mono text-[10px] font-bold text-gray-400 dark:text-gray-500"},$a={class:"w-14 shrink-0 text-right text-[10px] font-semibold uppercase tracking-wider text-gray-400 dark:text-gray-500"},Oa={key:0,class:"min-h-0 flex-1 space-y-0.5 overflow-y-auto pr-1 scrollbar-thin"},Da=["onClick"],ja={class:"min-w-0 flex-1"},Ba={class:"block truncate text-[13px] font-semibold leading-4 text-gray-900 transition-colors group-hover:text-sky-600 dark:text-white dark:group-hover:text-sky-400"},Ha={class:"flex w-14 shrink-0 justify-end"},Ua={class:"font-mono text-[10px] font-bold text-gray-500 dark:text-gray-400"},qa={key:1,class:"py-4 text-center text-xs text-gray-400 dark:text-gray-500"},Qa={key:0,class:"flex min-h-0 flex-1 flex-col overflow-hidden rounded-xl border border-gray-100/80 bg-gray-50/25 p-2.5 dark:border-white/5 dark:bg-white/2"},Wa={class:"mb-2 flex shrink-0 items-center justify-between gap-3 pl-1 pr-3"},Ya={class:"flex min-w-0 items-center gap-2"},Za={class:"truncate text-xs font-semibold uppercase tracking-wider text-gray-500 dark:text-gray-400"},Ja={class:"shrink-0 font-mono text-[10px] font-bold text-gray-400 dark:text-gray-500"},Xa={class:"w-14 shrink-0 text-right text-[10px] font-semibold uppercase tracking-wider text-gray-400 dark:text-gray-500"},eo={class:"min-h-0 flex-1 space-y-0.5 overflow-y-auto pr-1 scrollbar-thin"},to={class:"flex min-w-0 items-center gap-2"},ao={class:"flex h-6 w-6 shrink-0 items-center justify-center rounded-md bg-white/45 shadow-sm dark:bg-white/5"},oo={class:"truncate font-semibold leading-4 text-gray-700 dark:text-gray-200"},no={class:"flex w-14 shrink-0 justify-end"},so={class:"font-mono text-[10px] font-bold text-gray-500 dark:text-gray-400"},ro=1400,lo=392,io=xt({__name:"index",setup(a){const i={nodes:[],edges:[],communities:[]},f=Be(()=>He(()=>import("./RelationshipGalaxyThreeCanvas-DgMG3jdU.js"),__vite__mapDeps([0,1,2,3,4,5,6,7]))),y=Be(()=>He(()=>import("./RelationshipGalaxyCanvas-mlZs7k4L.js").then(e=>e.as),__vite__mapDeps([8,1,2,3,4]))),{t,locale:C}=wt(),L=_t(),K=St(),z=g("1y"),c=g("panorama"),w=g(""),V=g(""),$=g(!1),ae=g(""),v=g(null),A=g(!1),O=g(null),R=g(null),de=g(!1),he=g(!1),U=g(!1),Ke=g(!1),G=g(null),_=g(null),E=g(!1),oe=g("3d"),q=g(""),Q=g(0),D=g(0),S=g(null),ne=g(null);let se=null,ve=null,W=null,Y=null,re=null,pe=!1;const Ze=p(()=>new Intl.NumberFormat(C.value)),Je=p(()=>Lt.map(e=>({label:t(`relationships.timeRange.${e}`),value:e}))),Xe=p(()=>[{label:t("relationships.graphScope.panorama"),value:"panorama"},{label:t("relationships.graphScope.close"),value:"close"},{label:t("relationships.graphScope.friends"),value:"friends"}]),N=p(()=>R.value?.graph??O.value?.graph??i),ge=p(()=>!!R.value),fe=p(()=>N.value.nodes.length>0),Z=p(()=>Dt({graphTask:O.value?.task??null,neighborhoodTask:R.value?.task??null,isNeighborhoodMode:ge.value})),J=p(()=>Z.value?.status==="running"),Ve=p(()=>Z.value?.status==="failed"),et=p(()=>O.value?.cache.status??R.value?.cache.status),Ae=p(()=>O.value?.searchResults??[]),ze=p(()=>w.value.trim().length>0),tt=p(()=>ze.value&&w.value.trim()===ae.value&&$.value&&Ae.value.length>0),at=p(()=>(de.value||J.value)&&!fe.value),ot=p(()=>J.value&&fe.value),k=p(()=>v.value?N.value.nodes.find(e=>e.key===v.value)??R.value?.contact??null:null),Ge=p(()=>A.value&&!!k.value),me=p(()=>Ge.value&&Ke.value?lo:0),nt=p(()=>Ot({selectedKey:v.value,isNeighborhoodMode:ge.value,neighborhoodContactKey:R.value?.contact?.key??null})),le=p(()=>Ye(N.value,v.value,{collapsedLimit:We})),ye=p(()=>({nodes:N.value.nodes.length,edges:N.value.edges.length,communities:N.value.communities.length})),ke=p(()=>[...N.value.communities].sort((e,n)=>n.size-e.size).slice(0,8)),be=p(()=>et.value==="stale"&&J.value?t("relationships.task.updating"):J.value?ut(Z.value):Ve.value?Z.value?.lastError||t("relationships.task.failed"):""),st=p(()=>Bt({loadError:q.value,isTaskFailed:Ve.value,statusText:be.value,emptyText:t("relationships.empty")}));function x(e){return Ze.value.format(e)}function rt(e){return Math.round(e*100).toString()}function lt(){const e=le.value.items.length,n=le.value.total;return n<=e?x(n):`${x(e)} / ${x(n)}`}function it(e){return e?new Date(e*1e3).toLocaleDateString():t("relationships.detail.emptyValue")}function xe(e){return e.kind==="owner"?t("relationships.owner.avatarText"):E.value?Ut():(e.displayName||e.platformId||"?").slice(0,1)}function we(e){return e.kind==="owner"?e.avatar:E.value?null:e.avatar}function j(e){if(e.kind==="owner")return t("relationships.owner.me");const n=e.displayName||e.platformId||e.key;return E.value?Qe(n):n}function ct(e){const n=e.platformId||e.key;return E.value?Qe(n):n}function Fe(e){return e.kind==="owner"?t("relationships.owner.type"):e.friendSource==="manual"?t("relationships.pool.manualFriend"):e.pool==="friend"?t("relationships.pool.friend"):t("relationships.pool.nonFriend")}function ut(e){return t("relationships.task.running",{current:x(e?.processedSessions??0),total:x(e?.totalSessions??0)})}function $e(e){const n=Oe(e,c.value);se&&se!==n&&ie();const h=O.value;O.value=h&&se===n?{...e,graph:h.graph}:e,se=n}function dt(e){const n=Oe(e,`neighborhood:${e.contact?.key??""}`),h=R.value;R.value=h&&ve===n?{...e,graph:h.graph}:e,ve=n}function B(){R.value=null,ve=null}function Oe(e,n){const h=e.graph;let s=2166136261;s=T(s,n),s=T(s,e.algorithmVersion),s=T(s,e.cache.signature??""),s=I(s,e.timeRange.startTs??0),s=T(s,e.timeRange.preset);for(const u of h.nodes)s=T(s,u.key),s=T(s,u.pool),s=T(s,u.friendSource??""),s=I(s,u.rank),s=I(s,Math.round(u.score*1e6)),s=I(s,u.labelVisibility),s=I(s,Math.round(u.x*100)),s=I(s,Math.round(u.y*100)),s=I(s,Math.round(u.size*100));for(const u of h.edges)s=T(s,u.id),s=T(s,u.sourceKey),s=T(s,u.targetKey),s=I(s,Math.round(u.weight*1e6)),s=I(s,u.visibility);for(const u of h.communities)s=T(s,u.id),s=I(s,u.size),s=T(s,u.color);return`${n}:${h.nodes.length}:${h.edges.length}:${h.communities.length}:${s>>>0}`}function T(e,n){for(let h=0;h<n.length;h+=1)e^=n.charCodeAt(h),e=Math.imul(e,16777619);return e}function I(e,n){return T(e,String(n))}function _e(){W&&(clearInterval(W),W=null)}function H(){D.value+=1,U.value=!1,G.value=null}function De(){v.value||ne.value||(ne.value=S.value?.captureView()??null)}function ie(){ne.value=null}function ht(){const e=ne.value;ie(),F(()=>{e&&S.value?.restoreView(e)===!0||S.value?.fitView(),F(()=>{pe=!1})})}function Se(e){if(e?.status==="running"){W||(W=setInterval(()=>{X({silent:!0,preserveNeighborhood:!0})},ro));return}_e()}async function X(e={}){const n=Q.value+1;Q.value=n;const h=Z.value?.status??null,s=e.preserveNeighborhood?R.value?.contact?.key??null:null;e.silent||(de.value=!0),e.preserveNeighborhood||(H(),B()),q.value="";try{const u=await L.getPeopleRelationships({acceptStale:!0,timeRangePreset:z.value,graphScope:c.value,query:V.value.trim()||void 0});if(n!==Q.value)return;$e(u),ae.value=V.value.trim(),v.value&&!N.value.nodes.some(Re=>Re.key===v.value)&&(v.value=null,_.value=null,A.value=!1);const l=jt({previousTaskStatus:h,nextTaskStatus:u.task?.status??null,neighborhoodContactKey:s});Se(u.task),l.type==="refresh-neighborhood"&&ce(l.key)}catch(u){if(n!==Q.value)return;q.value=String(u),K.fail(t("relationships.toast.loadFailed"),{description:String(u)}),_e()}finally{n===Q.value&&(de.value=!1)}}async function vt(){he.value=!0,q.value="";try{const e=await L.recomputePeopleRelationships({timeRangePreset:z.value,graphScope:c.value,query:V.value.trim()||void 0});$e(e),ae.value=V.value.trim(),H(),B(),v.value=null,_.value=null,A.value=!1,Se(e.task),K.success(t("relationships.toast.recomputeStarted"))}catch(e){K.fail(t("relationships.toast.recomputeFailed"),{description:String(e)})}finally{he.value=!1}}const pt=p(()=>({title:t("layout.relationships"),description:t("relationships.subtitle"),icon:"i-lucide-git-fork",iconClass:"bg-primary-600 text-white dark:bg-primary-500 dark:text-white shadow-sm",action:{label:t("relationships.actions.recompute"),icon:"i-lucide-refresh-cw",loading:he.value,disabled:J.value,class:"border border-sky-100 hover:border-sky-200 dark:border-sky-950/30 dark:hover:border-sky-900/50",onClick:vt},stats:[{id:"nodes",label:t("relationships.stats.nodes"),value:x(ye.value.nodes)},{id:"edges",label:t("relationships.stats.edges"),value:x(ye.value.edges)},{id:"communities",label:t("relationships.stats.communities"),value:x(ye.value.communities),dividerBefore:!0}]}));Vt(pt);async function ce(e){const n=D.value+1;D.value=n,U.value=!0,G.value=e,q.value="";try{const h=await L.getPeopleRelationshipNeighborhood(e,{acceptStale:!0,timeRangePreset:z.value,graphScope:c.value});if(n!==D.value)return;dt(h),v.value=h.contact?.key??e,_.value=v.value,Se(h.task),await F(),S.value?.fitView()}catch(h){if(n!==D.value)return;K.fail(t("relationships.toast.neighborhoodFailed"),{description:String(h)})}finally{n===D.value&&(U.value=!1,G.value=null)}}async function gt(){v.value&&await ce(v.value)}async function ft(e){if(De(),$.value=!1,e.inCoreGraph||(G.value=e.key),v.value=e.key,A.value=!0,_.value=qe({selectedKey:v.value,loadingNeighborhoodKey:G.value,currentCanvasSelectedKey:_.value}),!e.inCoreGraph){await ce(e.key);return}H(),B(),await F(),S.value?.focusNode(e.key)}async function Te(e){De();const n=R.value?.contact?.key!==e.key;if(n&&(G.value=e.key),v.value=e.key,A.value=!0,_.value=qe({selectedKey:v.value,loadingNeighborhoodKey:G.value,currentCanvasSelectedKey:_.value}),await F(),S.value?.focusNode(e.key),n){await ce(e.key);return}_.value=v.value}function mt(){oe.value==="3d"&&(oe.value="2d",K.warn(t("relationships.toast.threeUnavailable")))}function je(){pe=!0,H(),B(),v.value=null,_.value=null,A.value=!1,ht()}function yt(){je()}function kt(){w.value="",ae.value="",$.value=!1}function bt(){S.value?.fitView()}function Ce(){Ke.value=re?.matches??!1}return ee(z,()=>{ie(),v.value=null,_.value=null,A.value=!1,H(),B(),X()}),ee(c,()=>{ie(),v.value=null,_.value=null,A.value=!1,H(),B(),X()}),ee(w,e=>{Y&&clearTimeout(Y),$.value=e.trim().length>0,Y=setTimeout(()=>{V.value=e,X({silent:!0,preserveNeighborhood:!0})},260)}),ee(oe,async()=>{if(await F(),v.value){S.value?.focusNode(v.value);return}S.value?.fitView()}),ee(me,async()=>{if(await F(),!pe){if(v.value){S.value?.focusNode(v.value);return}S.value?.fitView()}}),Tt(()=>{typeof window<"u"&&(re=window.matchMedia("(min-width: 768px)"),Ce(),re.addEventListener("change",Ce)),X()}),Ct(()=>{re?.removeEventListener("change",Ce),_e(),Y&&clearTimeout(Y)}),(e,n)=>{const h=It,s=Pt,u=Et;return m(),b("div",qt,[o("main",Qt,[oe.value==="3d"?(m(),te(d(f),{key:0,ref_key:"canvasRef",ref:S,graph:N.value,"selected-key":_.value,"privacy-mode":E.value,"safe-inset-right":me.value,"emphasize-edges":c.value==="friends",label:d(t)("relationships.canvas.label3d"),"owner-label":d(t)("relationships.owner.me"),onFallback:mt,onSelectNode:Te},null,8,["graph","selected-key","privacy-mode","safe-inset-right","emphasize-edges","label","owner-label"])):(m(),te(d(y),{key:1,ref_key:"canvasRef",ref:S,graph:N.value,"selected-key":_.value,"privacy-mode":E.value,"safe-inset-right":me.value,"emphasize-edges":c.value==="friends",label:d(t)("relationships.canvas.label"),"owner-label":d(t)("relationships.owner.me"),onSelectNode:Te},null,8,["graph","selected-key","privacy-mode","safe-inset-right","emphasize-edges","label","owner-label"])),o("div",Wt,[P(h,{modelValue:z.value,"onUpdate:modelValue":n[0]||(n[0]=l=>z.value=l),items:Je.value,content:!1,size:"xs",class:"min-w-max gap-0"},null,8,["modelValue","items"]),P(h,{modelValue:c.value,"onUpdate:modelValue":n[1]||(n[1]=l=>c.value=l),items:Xe.value,content:!1,size:"xs",class:"min-w-max gap-0"},null,8,["modelValue","items"]),o("div",Yt,[P(u,{modelValue:w.value,"onUpdate:modelValue":n[2]||(n[2]=l=>w.value=l),icon:"i-lucide-search",placeholder:d(t)("relationships.search"),size:"sm",class:"w-full",onFocus:n[3]||(n[3]=l=>$.value=ze.value),onKeydown:n[4]||(n[4]=Nt(l=>$.value=!1,["esc"]))},Rt({_:2},[w.value?{name:"trailing",fn:ue(()=>[P(s,{icon:"i-heroicons-x-mark",variant:"link",color:"neutral",size:"xs","aria-label":d(t)("relationships.actions.clearSearch"),onClick:kt},null,8,["aria-label"])]),key:"0"}:void 0]),1032,["modelValue","placeholder"]),tt.value?(m(),b("div",Zt,[o("div",Jt,r(d(t)("relationships.searchResults.title")),1),o("div",Xt,[(m(!0),b(Ne,null,Ie(Ae.value,l=>(m(),b("button",{key:l.key,type:"button",class:Ee(["group flex w-full items-center gap-2.5 rounded-xl px-2.5 py-2 text-left transition hover:bg-gray-100/70 dark:hover:bg-white/5",v.value===l.key?"bg-sky-50 dark:bg-sky-500/10":""]),disabled:U.value,onClick:Re=>ft(l)},[P(Pe,{src:we(l),alt:j(l),text:xe(l),"root-class":"h-8 w-8 shrink-0 shadow-sm border border-gray-250/20 dark:border-white/10","image-class":"h-8 w-8 rounded-full object-cover","fallback-class":"flex h-8 w-8 items-center justify-center rounded-full bg-sky-100 text-[10px] font-bold text-sky-700 dark:bg-sky-500/15 dark:text-sky-200"},null,8,["src","alt","text"]),o("span",ta,[o("span",aa,r(j(l)),1),o("span",oa,r(Fe(l))+" · #"+r(l.rank),1)]),l.inCoreGraph?M("",!0):(m(),b("span",na,r(d(t)("relationships.searchResults.offCore")),1))],10,ea))),128))])])):M("",!0)]),P(s,{icon:"i-lucide-scan-line",color:"neutral",variant:"soft",size:"xs","aria-label":d(t)("relationships.actions.fitView"),onClick:bt},null,8,["aria-label"]),P(s,{icon:E.value?"i-lucide-eye-off":"i-lucide-eye",color:"neutral",variant:"soft",size:"xs",onClick:n[5]||(n[5]=l=>E.value=!E.value)},{default:ue(()=>[Me(r(d(t)("relationships.privacy")),1)]),_:1},8,["icon"]),ge.value?(m(),te(s,{key:0,icon:"i-lucide-undo-2",color:"neutral",variant:"soft",size:"xs",onClick:je},{default:ue(()=>[Me(r(d(t)("relationships.actions.backToPanorama")),1)]),_:1})):M("",!0)]),ot.value?(m(),b("div",sa,[n[6]||(n[6]=o("span",{class:"i-lucide-refresh-cw h-3.5 w-3.5 animate-spin text-sky-400"},null,-1)),o("span",null,r(be.value),1)])):M("",!0),at.value?(m(),te(d(Kt),{key:3,variant:"overlay",text:be.value||d(t)("relationships.task.updating")},null,8,["text"])):fe.value?M("",!0):(m(),b("div",ra,r(st.value),1)),Ge.value?(m(),b("aside",la,[P(s,{icon:"i-lucide-x",color:"neutral",variant:"ghost",size:"xs",class:"absolute right-2.5 top-2.5 z-10 bg-white/35 backdrop-blur-sm hover:bg-white/55 dark:bg-white/5 dark:hover:bg-white/10","aria-label":d(t)("relationships.actions.closeDetail"),onClick:yt},null,8,["aria-label"]),k.value?(m(),b("div",ia,[o("div",ca,[o("div",ua,[P(Pe,{src:we(k.value),alt:j(k.value),text:xe(k.value),"root-class":"h-11 w-11 shrink-0 overflow-hidden rounded-lg shadow-sm border border-gray-250/20 dark:border-white/10","image-class":"h-11 w-11 rounded-lg object-cover","fallback-class":"flex h-11 w-11 items-center justify-center rounded-lg bg-sky-100 text-sm font-bold text-sky-700 dark:bg-sky-500/15 dark:text-sky-200"},null,8,["src","alt","text"]),o("div",da,[o("div",ha,[o("p",va,r(j(k.value)),1),o("span",{class:Ee(["shrink-0 rounded-full bg-white/45 px-1.5 py-0.5 font-mono text-[10px] font-bold text-gray-600 dark:bg-white/8 dark:text-gray-300",k.value.rank<=3?"text-amber-600 dark:text-amber-300":""])}," #"+r(k.value.rank),3)]),o("p",pa,r(k.value.platform)+" · "+r(ct(k.value)),1)])]),nt.value?(m(),te(s,{key:0,icon:"i-lucide-network",color:"primary",variant:"soft",size:"sm",block:"",class:"rounded-xl font-semibold shadow-sm border border-sky-100 hover:border-sky-200 dark:border-sky-950/30 dark:hover:border-sky-900/50",loading:U.value,onClick:gt},{default:ue(()=>[Me(r(d(t)("relationships.actions.focusConnections")),1)]),_:1},8,["loading"])):M("",!0),o("div",ga,[o("div",fa,[o("p",ma,r(d(t)("relationships.detail.score")),1),o("div",ya,[o("p",ka,r(rt(k.value.score)),1),n[7]||(n[7]=o("span",{class:"text-[9px] leading-3 text-gray-400"},"/100",-1))])]),o("div",ba,[o("p",xa,r(d(t)("relationships.detail.type")),1),o("span",{class:Ee(["inline-flex max-w-full items-center truncate text-[10px] font-semibold leading-4",k.value.pool==="friend"?"text-sky-700 dark:text-sky-300":"text-amber-700 dark:text-amber-300"])},r(Fe(k.value)),3)]),o("div",wa,[o("p",_a,r(d(t)("relationships.detail.privateMessages")),1),o("span",Sa,r(x(k.value.privateMessageCount)),1)]),o("div",Ta,[o("p",Ca,r(d(t)("relationships.detail.groupMessages")),1),o("span",Ra,r(x(k.value.groupMessageCount)),1)]),o("div",Na,[o("p",Ia,r(d(t)("relationships.detail.commonGroups")),1),o("span",Pa,r(x(k.value.commonGroupCount)),1)]),o("div",Ea,[o("p",Ma,r(d(t)("relationships.detail.lastInteraction")),1),o("span",La,r(it(k.value.lastInteractionTs)),1)])])]),o("div",Ka,[o("section",Va,[o("div",Aa,[o("div",za,[o("h3",Ga,r(d(t)("relationships.connections.title")),1),o("span",Fa,r(lt()),1)]),o("span",$a,r(d(t)("relationships.connections.connectionScore")),1)]),le.value.items.length>0?(m(),b("div",Oa,[(m(!0),b(Ne,null,Ie(le.value.items,l=>(m(),b("button",{key:l.node.key,type:"button",class:"group flex h-9 w-full items-center gap-2 rounded-lg px-2 py-0 text-left transition-all duration-250 hover:bg-white dark:hover:bg-white/5",onClick:Re=>Te(l.node)},[P(Pe,{src:we(l.node),alt:j(l.node),text:xe(l.node),"root-class":"h-6 w-6 shrink-0 overflow-hidden rounded-md shadow-sm border border-gray-250/20 dark:border-white/10","image-class":"h-6 w-6 rounded-md object-cover","fallback-class":"flex h-6 w-6 items-center justify-center rounded-md bg-sky-100 text-[9px] font-bold text-sky-700 dark:bg-sky-500/15 dark:text-sky-200"},null,8,["src","alt","text"]),o("div",ja,[o("span",Ba,r(j(l.node)),1)]),o("span",Ha,[o("span",Ua,r(x(l.connectionScore)),1)])],8,Da))),128))])):(m(),b("p",qa,r(d(t)("relationships.connections.empty")),1))]),ke.value.length>0?(m(),b("section",Qa,[o("div",Wa,[o("div",Ya,[o("h2",Za,r(d(t)("relationships.stats.communities")),1),o("span",Ja,r(x(ke.value.length)),1)]),o("span",Xa,r(d(t)("relationships.stats.members")),1)]),o("div",eo,[(m(!0),b(Ne,null,Ie(ke.value,l=>(m(),b("div",{key:l.id,class:"flex h-9 items-center justify-between gap-2 rounded-lg px-2 py-0 text-[13px] leading-4"},[o("div",to,[o("span",ao,[o("span",{class:"h-2 w-2 rounded-full shadow-sm",style:Mt({backgroundColor:l.color})},null,4)]),o("span",oo,r(l.label),1)]),o("span",no,[o("span",so,r(x(l.size)),1)])]))),128))])])):M("",!0)])])):M("",!0)])):M("",!0)])])}}}),po=Object.freeze(Object.defineProperty({__proto__:null,default:io},Symbol.toStringTag,{value:"Module"}));export{Gt as a,vo as b,po as i,Qe as m};
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/RelationshipGalaxyThreeCanvas-Cu6NmKOq.js","assets/index-YzfjPohq.js","assets/vendor-snapdom--nZvo8Sg.js","assets/index-DrjoMv9s.css","assets/relationship-galaxy-viewport-Cwfa51ER.js","assets/LoadingState.vue_vue_type_script_setup_true_lang-CCK5yTju.js","assets/people-page-header-BW5cNPl7.js","assets/RelationshipGalaxyThreeCanvas-CeYJABxI.css","assets/RelationshipGalaxyCanvas-CbTmpnZ6.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{d as xt,A as wt,M as _t,a3 as St,w as ee,C as Tt,aq as Ct,c as b,f as o,E as te,G as d,g as P,R as Rt,F as ue,ar as Nt,t as r,Z as Ne,$ as Ie,h as M,as as Pe,n as Ee,b as g,a as p,an as F,at as It,H as Pt,aj as Et,o as m,I as Me,P as Mt,au as Be,av as He,aw as Lt}from"./index-YzfjPohq.js";import{_ as Kt}from"./LoadingState.vue_vue_type_script_setup_true_lang-CCK5yTju.js";import{u as Vt}from"./people-page-header-BW5cNPl7.js";const At=10,We=80,zt=2880*60*60,Ue=.1;function Ye(a,i,f={}){if(!i)return{items:[],total:0,hasMore:!1};const y=new Map(a.nodes.map(c=>[c.key,c])),t=a.edges.flatMap(c=>{if(c.sourceKey!==i&&c.targetKey!==i)return[];const w=c.sourceKey===i?c.targetKey:c.sourceKey,V=y.get(w);return V?[{node:V,edge:c,connectionScore:0}]:[]}),C=t.reduce((c,w)=>Math.max(c,w.edge.lastInteractionTs??0),0),L=new Map(t.map(c=>[c,Le(c.edge,C)]));for(const c of t)c.connectionScore=Ft(L.get(c)??0);t.sort((c,w)=>$t(c,w,C));const K=f.collapsedLimit??At;return{items:f.expanded?t:t.slice(0,K),total:t.length,hasMore:!f.expanded&&t.length>K}}function Gt(a,i,f={}){const y=new Set;if(!i||!a.nodes.some(C=>C.key===i))return y;y.add(i);const t=Ye(a,i,{collapsedLimit:f.limit??We});for(const C of t.items)y.add(C.node.key);return y}function vo(a,i,f={}){if(!i||!a.nodes.some(t=>t.key===i))return a;const y=Gt(a,i,f);return{nodes:a.nodes.filter(t=>y.has(t.key)),edges:a.edges.filter(t=>y.has(t.sourceKey)&&y.has(t.targetKey)),communities:a.communities}}function Ft(a){return a<=0?0:Math.max(1,Math.round(a))}function $t(a,i,f){const y=Le(i.edge,f),t=Le(a.edge,f);if(y!==t)return y-t;if(i.edge.weight!==a.edge.weight)return i.edge.weight-a.edge.weight;const C=i.edge.lastInteractionTs??0,L=a.edge.lastInteractionTs??0;return C!==L?C-L:a.node.rank!==i.node.rank?a.node.rank-i.node.rank:a.node.key.localeCompare(i.node.key)}function Le(a,i){if(!a.lastInteractionTs||i<=0)return a.weight;const f=Math.max(0,i-a.lastInteractionTs),y=Ue+(1-Ue)*Math.pow(.5,f/zt);return a.weight*y}function qe(a){return a.selectedKey&&a.selectedKey===a.loadingNeighborhoodKey?a.currentCanvasSelectedKey:a.selectedKey}function Ot(a){return a.selectedKey?a.isNeighborhoodMode?a.selectedKey!==a.neighborhoodContactKey:!0:!1}function Dt(a){return a.neighborhoodTask?.status==="running"?a.neighborhoodTask:a.graphTask?.status==="running"?a.graphTask:a.isNeighborhoodMode&&a.neighborhoodTask?a.neighborhoodTask:a.graphTask??a.neighborhoodTask??null}function jt(a){return a.nextTaskStatus==="running"?{type:"continue-polling"}:a.previousTaskStatus==="running"&&a.nextTaskStatus==="succeeded"&&a.neighborhoodContactKey?{type:"refresh-neighborhood",key:a.neighborhoodContactKey}:{type:"stop-polling"}}function Bt(a){return a.loadError?a.loadError:a.isTaskFailed&&a.statusText?a.statusText:a.emptyText}const Ht=new RegExp("\\p{Script=Han}","u");function Qe(a){const i=a?.trim()??"";if(!i)return"*";const f=Array.from(i),y=[...f].reverse().find(t=>Ht.test(t));return y?`**${y}`:f.length===1?"*":f.length===2?`${f[0]}***`:`${f[0]}***${f.at(-1)}`}function Ut(){return"*"}const qt={class:"flex min-h-0 flex-1 overflow-hidden text-gray-900 dark:bg-page-dark dark:text-gray-100"},Qt={class:"relative min-h-0 min-w-0 flex-1 overflow-hidden bg-[#0b0f19] dark:bg-page-dark"},Wt={class:"absolute left-6 top-4 z-20 flex max-w-[calc(100%-3rem)] flex-wrap items-center gap-2"},Yt={class:"relative w-28 max-w-full sm:w-32 lg:w-36"},Zt={key:0,class:"absolute left-0 top-full z-30 mt-2 max-h-80 w-72 overflow-y-auto rounded-2xl border border-gray-200/80 bg-white/95 p-2 shadow-overlay backdrop-blur-xl scrollbar-thin dark:border-white/10 dark:bg-page-dark/95"},Jt={class:"px-2 pb-1.5 pt-0.5 text-[11px] font-semibold uppercase tracking-wider text-gray-500 dark:text-gray-400"},Xt={class:"space-y-1"},ea=["disabled","onClick"],ta={class:"min-w-0 flex-1"},aa={class:"block truncate text-sm font-semibold text-gray-900 transition-colors group-hover:text-sky-600 dark:text-white dark:group-hover:text-sky-400"},oa={class:"block truncate text-[11px] text-gray-500 dark:text-gray-400"},na={key:0,class:"shrink-0 rounded-md bg-sky-100/60 px-1.5 py-0.5 text-[10px] font-semibold text-sky-600 dark:bg-sky-500/15 dark:text-sky-400"},sa={key:2,class:"absolute bottom-6 left-1/2 z-20 flex max-w-[min(560px,calc(100%-2rem))] -translate-x-1/2 items-center gap-2.5 rounded-2xl border border-sky-500/20 bg-[#090d16]/85 px-4 py-2.5 text-center text-xs font-semibold text-sky-200 shadow-overlay backdrop-blur-md animate-fade-in"},ra={key:4,class:"absolute inset-0 flex items-center justify-center text-sm font-medium text-gray-400"},la={key:5,class:"dark absolute inset-x-3 bottom-3 z-20 flex max-h-[70vh] flex-col overflow-hidden rounded-2xl border border-white/5 bg-page-dark/10 text-white shadow-overlay backdrop-blur-md md:inset-x-auto md:bottom-4 md:right-4 md:top-4 md:max-h-none md:w-[360px]"},ia={key:0,class:"flex min-h-0 flex-1 flex-col gap-3 px-4 pb-4 pt-5"},ca={class:"shrink-0 space-y-2.5"},ua={class:"flex items-center gap-3 pr-8"},da={class:"min-w-0 flex-1"},ha={class:"flex min-w-0 items-center gap-1.5"},va={class:"truncate text-base font-bold text-gray-900 dark:text-white"},pa={class:"truncate text-xs text-gray-500 dark:text-gray-400"},ga={class:"grid grid-cols-3 gap-1 text-xs"},fa={class:"min-w-0 rounded-md border border-gray-100/60 bg-gray-50/35 p-1.5 dark:border-white/5 dark:bg-white/3"},ma={class:"mb-0.5 truncate text-[9px] font-semibold uppercase leading-3 tracking-wide text-gray-400 dark:text-gray-500"},ya={class:"flex min-w-0 items-baseline gap-0.5"},ka={class:"font-mono text-sm font-bold leading-4 text-sky-600 dark:text-sky-400"},ba={class:"min-w-0 rounded-md border border-gray-100/60 bg-gray-50/35 p-1.5 dark:border-white/5 dark:bg-white/3"},xa={class:"mb-0.5 truncate text-[9px] font-semibold uppercase leading-3 tracking-wide text-gray-400 dark:text-gray-500"},wa={class:"min-w-0 rounded-md border border-gray-100/60 bg-gray-50/35 p-1.5 dark:border-white/5 dark:bg-white/3"},_a={class:"mb-0.5 truncate text-[9px] font-semibold uppercase leading-3 tracking-wide text-gray-400 dark:text-gray-500"},Sa={class:"block truncate font-mono text-sm font-bold leading-4 text-gray-900 dark:text-white"},Ta={class:"min-w-0 rounded-md border border-gray-100/60 bg-gray-50/35 p-1.5 dark:border-white/5 dark:bg-white/3"},Ca={class:"mb-0.5 truncate text-[9px] font-semibold uppercase leading-3 tracking-wide text-gray-400 dark:text-gray-500"},Ra={class:"block truncate font-mono text-sm font-bold leading-4 text-gray-900 dark:text-white"},Na={class:"min-w-0 rounded-md border border-gray-100/60 bg-gray-50/35 p-1.5 dark:border-white/5 dark:bg-white/3"},Ia={class:"mb-0.5 truncate text-[9px] font-semibold uppercase leading-3 tracking-wide text-gray-400 dark:text-gray-500"},Pa={class:"block truncate font-mono text-sm font-bold leading-4 text-gray-900 dark:text-white"},Ea={class:"min-w-0 rounded-md border border-gray-100/60 bg-gray-50/35 p-1.5 dark:border-white/5 dark:bg-white/3"},Ma={class:"mb-0.5 truncate text-[9px] font-semibold uppercase leading-3 tracking-wide text-gray-400 dark:text-gray-500"},La={class:"block truncate text-[11px] font-semibold leading-4 text-gray-900 dark:text-white"},Ka={class:"flex min-h-0 flex-1 flex-col gap-2"},Va={class:"flex min-h-0 flex-1 flex-col overflow-hidden rounded-xl border border-gray-100/80 bg-gray-50/25 p-2.5 dark:border-white/5 dark:bg-white/2"},Aa={class:"mb-2 flex shrink-0 items-center justify-between gap-3 pl-1 pr-3"},za={class:"flex min-w-0 items-center gap-2"},Ga={class:"truncate text-xs font-semibold uppercase tracking-wider text-gray-500 dark:text-gray-400"},Fa={class:"shrink-0 font-mono text-[10px] font-bold text-gray-400 dark:text-gray-500"},$a={class:"w-14 shrink-0 text-right text-[10px] font-semibold uppercase tracking-wider text-gray-400 dark:text-gray-500"},Oa={key:0,class:"min-h-0 flex-1 space-y-0.5 overflow-y-auto pr-1 scrollbar-thin"},Da=["onClick"],ja={class:"min-w-0 flex-1"},Ba={class:"block truncate text-[13px] font-semibold leading-4 text-gray-900 transition-colors group-hover:text-sky-600 dark:text-white dark:group-hover:text-sky-400"},Ha={class:"flex w-14 shrink-0 justify-end"},Ua={class:"font-mono text-[10px] font-bold text-gray-500 dark:text-gray-400"},qa={key:1,class:"py-4 text-center text-xs text-gray-400 dark:text-gray-500"},Qa={key:0,class:"flex min-h-0 flex-1 flex-col overflow-hidden rounded-xl border border-gray-100/80 bg-gray-50/25 p-2.5 dark:border-white/5 dark:bg-white/2"},Wa={class:"mb-2 flex shrink-0 items-center justify-between gap-3 pl-1 pr-3"},Ya={class:"flex min-w-0 items-center gap-2"},Za={class:"truncate text-xs font-semibold uppercase tracking-wider text-gray-500 dark:text-gray-400"},Ja={class:"shrink-0 font-mono text-[10px] font-bold text-gray-400 dark:text-gray-500"},Xa={class:"w-14 shrink-0 text-right text-[10px] font-semibold uppercase tracking-wider text-gray-400 dark:text-gray-500"},eo={class:"min-h-0 flex-1 space-y-0.5 overflow-y-auto pr-1 scrollbar-thin"},to={class:"flex min-w-0 items-center gap-2"},ao={class:"flex h-6 w-6 shrink-0 items-center justify-center rounded-md bg-white/45 shadow-sm dark:bg-white/5"},oo={class:"truncate font-semibold leading-4 text-gray-700 dark:text-gray-200"},no={class:"flex w-14 shrink-0 justify-end"},so={class:"font-mono text-[10px] font-bold text-gray-500 dark:text-gray-400"},ro=1400,lo=392,io=xt({__name:"index",setup(a){const i={nodes:[],edges:[],communities:[]},f=Be(()=>He(()=>import("./RelationshipGalaxyThreeCanvas-Cu6NmKOq.js"),__vite__mapDeps([0,1,2,3,4,5,6,7]))),y=Be(()=>He(()=>import("./RelationshipGalaxyCanvas-CbTmpnZ6.js").then(e=>e.as),__vite__mapDeps([8,1,2,3,4]))),{t,locale:C}=wt(),L=_t(),K=St(),z=g("1y"),c=g("panorama"),w=g(""),V=g(""),$=g(!1),ae=g(""),v=g(null),A=g(!1),O=g(null),R=g(null),de=g(!1),he=g(!1),U=g(!1),Ke=g(!1),G=g(null),_=g(null),E=g(!1),oe=g("3d"),q=g(""),Q=g(0),D=g(0),S=g(null),ne=g(null);let se=null,ve=null,W=null,Y=null,re=null,pe=!1;const Ze=p(()=>new Intl.NumberFormat(C.value)),Je=p(()=>Lt.map(e=>({label:t(`relationships.timeRange.${e}`),value:e}))),Xe=p(()=>[{label:t("relationships.graphScope.panorama"),value:"panorama"},{label:t("relationships.graphScope.close"),value:"close"},{label:t("relationships.graphScope.friends"),value:"friends"}]),N=p(()=>R.value?.graph??O.value?.graph??i),ge=p(()=>!!R.value),fe=p(()=>N.value.nodes.length>0),Z=p(()=>Dt({graphTask:O.value?.task??null,neighborhoodTask:R.value?.task??null,isNeighborhoodMode:ge.value})),J=p(()=>Z.value?.status==="running"),Ve=p(()=>Z.value?.status==="failed"),et=p(()=>O.value?.cache.status??R.value?.cache.status),Ae=p(()=>O.value?.searchResults??[]),ze=p(()=>w.value.trim().length>0),tt=p(()=>ze.value&&w.value.trim()===ae.value&&$.value&&Ae.value.length>0),at=p(()=>(de.value||J.value)&&!fe.value),ot=p(()=>J.value&&fe.value),k=p(()=>v.value?N.value.nodes.find(e=>e.key===v.value)??R.value?.contact??null:null),Ge=p(()=>A.value&&!!k.value),me=p(()=>Ge.value&&Ke.value?lo:0),nt=p(()=>Ot({selectedKey:v.value,isNeighborhoodMode:ge.value,neighborhoodContactKey:R.value?.contact?.key??null})),le=p(()=>Ye(N.value,v.value,{collapsedLimit:We})),ye=p(()=>({nodes:N.value.nodes.length,edges:N.value.edges.length,communities:N.value.communities.length})),ke=p(()=>[...N.value.communities].sort((e,n)=>n.size-e.size).slice(0,8)),be=p(()=>et.value==="stale"&&J.value?t("relationships.task.updating"):J.value?ut(Z.value):Ve.value?Z.value?.lastError||t("relationships.task.failed"):""),st=p(()=>Bt({loadError:q.value,isTaskFailed:Ve.value,statusText:be.value,emptyText:t("relationships.empty")}));function x(e){return Ze.value.format(e)}function rt(e){return Math.round(e*100).toString()}function lt(){const e=le.value.items.length,n=le.value.total;return n<=e?x(n):`${x(e)} / ${x(n)}`}function it(e){return e?new Date(e*1e3).toLocaleDateString():t("relationships.detail.emptyValue")}function xe(e){return e.kind==="owner"?t("relationships.owner.avatarText"):E.value?Ut():(e.displayName||e.platformId||"?").slice(0,1)}function we(e){return e.kind==="owner"?e.avatar:E.value?null:e.avatar}function j(e){if(e.kind==="owner")return t("relationships.owner.me");const n=e.displayName||e.platformId||e.key;return E.value?Qe(n):n}function ct(e){const n=e.platformId||e.key;return E.value?Qe(n):n}function Fe(e){return e.kind==="owner"?t("relationships.owner.type"):e.friendSource==="manual"?t("relationships.pool.manualFriend"):e.pool==="friend"?t("relationships.pool.friend"):t("relationships.pool.nonFriend")}function ut(e){return t("relationships.task.running",{current:x(e?.processedSessions??0),total:x(e?.totalSessions??0)})}function $e(e){const n=Oe(e,c.value);se&&se!==n&&ie();const h=O.value;O.value=h&&se===n?{...e,graph:h.graph}:e,se=n}function dt(e){const n=Oe(e,`neighborhood:${e.contact?.key??""}`),h=R.value;R.value=h&&ve===n?{...e,graph:h.graph}:e,ve=n}function B(){R.value=null,ve=null}function Oe(e,n){const h=e.graph;let s=2166136261;s=T(s,n),s=T(s,e.algorithmVersion),s=T(s,e.cache.signature??""),s=I(s,e.timeRange.startTs??0),s=T(s,e.timeRange.preset);for(const u of h.nodes)s=T(s,u.key),s=T(s,u.pool),s=T(s,u.friendSource??""),s=I(s,u.rank),s=I(s,Math.round(u.score*1e6)),s=I(s,u.labelVisibility),s=I(s,Math.round(u.x*100)),s=I(s,Math.round(u.y*100)),s=I(s,Math.round(u.size*100));for(const u of h.edges)s=T(s,u.id),s=T(s,u.sourceKey),s=T(s,u.targetKey),s=I(s,Math.round(u.weight*1e6)),s=I(s,u.visibility);for(const u of h.communities)s=T(s,u.id),s=I(s,u.size),s=T(s,u.color);return`${n}:${h.nodes.length}:${h.edges.length}:${h.communities.length}:${s>>>0}`}function T(e,n){for(let h=0;h<n.length;h+=1)e^=n.charCodeAt(h),e=Math.imul(e,16777619);return e}function I(e,n){return T(e,String(n))}function _e(){W&&(clearInterval(W),W=null)}function H(){D.value+=1,U.value=!1,G.value=null}function De(){v.value||ne.value||(ne.value=S.value?.captureView()??null)}function ie(){ne.value=null}function ht(){const e=ne.value;ie(),F(()=>{e&&S.value?.restoreView(e)===!0||S.value?.fitView(),F(()=>{pe=!1})})}function Se(e){if(e?.status==="running"){W||(W=setInterval(()=>{X({silent:!0,preserveNeighborhood:!0})},ro));return}_e()}async function X(e={}){const n=Q.value+1;Q.value=n;const h=Z.value?.status??null,s=e.preserveNeighborhood?R.value?.contact?.key??null:null;e.silent||(de.value=!0),e.preserveNeighborhood||(H(),B()),q.value="";try{const u=await L.getPeopleRelationships({acceptStale:!0,timeRangePreset:z.value,graphScope:c.value,query:V.value.trim()||void 0});if(n!==Q.value)return;$e(u),ae.value=V.value.trim(),v.value&&!N.value.nodes.some(Re=>Re.key===v.value)&&(v.value=null,_.value=null,A.value=!1);const l=jt({previousTaskStatus:h,nextTaskStatus:u.task?.status??null,neighborhoodContactKey:s});Se(u.task),l.type==="refresh-neighborhood"&&ce(l.key)}catch(u){if(n!==Q.value)return;q.value=String(u),K.fail(t("relationships.toast.loadFailed"),{description:String(u)}),_e()}finally{n===Q.value&&(de.value=!1)}}async function vt(){he.value=!0,q.value="";try{const e=await L.recomputePeopleRelationships({timeRangePreset:z.value,graphScope:c.value,query:V.value.trim()||void 0});$e(e),ae.value=V.value.trim(),H(),B(),v.value=null,_.value=null,A.value=!1,Se(e.task),K.success(t("relationships.toast.recomputeStarted"))}catch(e){K.fail(t("relationships.toast.recomputeFailed"),{description:String(e)})}finally{he.value=!1}}const pt=p(()=>({title:t("layout.relationships"),description:t("relationships.subtitle"),icon:"i-lucide-git-fork",iconClass:"bg-primary-600 text-white dark:bg-primary-500 dark:text-white shadow-sm",action:{label:t("relationships.actions.recompute"),icon:"i-lucide-refresh-cw",loading:he.value,disabled:J.value,class:"border border-sky-100 hover:border-sky-200 dark:border-sky-950/30 dark:hover:border-sky-900/50",onClick:vt},stats:[{id:"nodes",label:t("relationships.stats.nodes"),value:x(ye.value.nodes)},{id:"edges",label:t("relationships.stats.edges"),value:x(ye.value.edges)},{id:"communities",label:t("relationships.stats.communities"),value:x(ye.value.communities),dividerBefore:!0}]}));Vt(pt);async function ce(e){const n=D.value+1;D.value=n,U.value=!0,G.value=e,q.value="";try{const h=await L.getPeopleRelationshipNeighborhood(e,{acceptStale:!0,timeRangePreset:z.value,graphScope:c.value});if(n!==D.value)return;dt(h),v.value=h.contact?.key??e,_.value=v.value,Se(h.task),await F(),S.value?.fitView()}catch(h){if(n!==D.value)return;K.fail(t("relationships.toast.neighborhoodFailed"),{description:String(h)})}finally{n===D.value&&(U.value=!1,G.value=null)}}async function gt(){v.value&&await ce(v.value)}async function ft(e){if(De(),$.value=!1,e.inCoreGraph||(G.value=e.key),v.value=e.key,A.value=!0,_.value=qe({selectedKey:v.value,loadingNeighborhoodKey:G.value,currentCanvasSelectedKey:_.value}),!e.inCoreGraph){await ce(e.key);return}H(),B(),await F(),S.value?.focusNode(e.key)}async function Te(e){De();const n=R.value?.contact?.key!==e.key;if(n&&(G.value=e.key),v.value=e.key,A.value=!0,_.value=qe({selectedKey:v.value,loadingNeighborhoodKey:G.value,currentCanvasSelectedKey:_.value}),await F(),S.value?.focusNode(e.key),n){await ce(e.key);return}_.value=v.value}function mt(){oe.value==="3d"&&(oe.value="2d",K.warn(t("relationships.toast.threeUnavailable")))}function je(){pe=!0,H(),B(),v.value=null,_.value=null,A.value=!1,ht()}function yt(){je()}function kt(){w.value="",ae.value="",$.value=!1}function bt(){S.value?.fitView()}function Ce(){Ke.value=re?.matches??!1}return ee(z,()=>{ie(),v.value=null,_.value=null,A.value=!1,H(),B(),X()}),ee(c,()=>{ie(),v.value=null,_.value=null,A.value=!1,H(),B(),X()}),ee(w,e=>{Y&&clearTimeout(Y),$.value=e.trim().length>0,Y=setTimeout(()=>{V.value=e,X({silent:!0,preserveNeighborhood:!0})},260)}),ee(oe,async()=>{if(await F(),v.value){S.value?.focusNode(v.value);return}S.value?.fitView()}),ee(me,async()=>{if(await F(),!pe){if(v.value){S.value?.focusNode(v.value);return}S.value?.fitView()}}),Tt(()=>{typeof window<"u"&&(re=window.matchMedia("(min-width: 768px)"),Ce(),re.addEventListener("change",Ce)),X()}),Ct(()=>{re?.removeEventListener("change",Ce),_e(),Y&&clearTimeout(Y)}),(e,n)=>{const h=It,s=Pt,u=Et;return m(),b("div",qt,[o("main",Qt,[oe.value==="3d"?(m(),te(d(f),{key:0,ref_key:"canvasRef",ref:S,graph:N.value,"selected-key":_.value,"privacy-mode":E.value,"safe-inset-right":me.value,"emphasize-edges":c.value==="friends",label:d(t)("relationships.canvas.label3d"),"owner-label":d(t)("relationships.owner.me"),onFallback:mt,onSelectNode:Te},null,8,["graph","selected-key","privacy-mode","safe-inset-right","emphasize-edges","label","owner-label"])):(m(),te(d(y),{key:1,ref_key:"canvasRef",ref:S,graph:N.value,"selected-key":_.value,"privacy-mode":E.value,"safe-inset-right":me.value,"emphasize-edges":c.value==="friends",label:d(t)("relationships.canvas.label"),"owner-label":d(t)("relationships.owner.me"),onSelectNode:Te},null,8,["graph","selected-key","privacy-mode","safe-inset-right","emphasize-edges","label","owner-label"])),o("div",Wt,[P(h,{modelValue:z.value,"onUpdate:modelValue":n[0]||(n[0]=l=>z.value=l),items:Je.value,content:!1,size:"xs",class:"min-w-max gap-0"},null,8,["modelValue","items"]),P(h,{modelValue:c.value,"onUpdate:modelValue":n[1]||(n[1]=l=>c.value=l),items:Xe.value,content:!1,size:"xs",class:"min-w-max gap-0"},null,8,["modelValue","items"]),o("div",Yt,[P(u,{modelValue:w.value,"onUpdate:modelValue":n[2]||(n[2]=l=>w.value=l),icon:"i-lucide-search",placeholder:d(t)("relationships.search"),size:"sm",class:"w-full",onFocus:n[3]||(n[3]=l=>$.value=ze.value),onKeydown:n[4]||(n[4]=Nt(l=>$.value=!1,["esc"]))},Rt({_:2},[w.value?{name:"trailing",fn:ue(()=>[P(s,{icon:"i-heroicons-x-mark",variant:"link",color:"neutral",size:"xs","aria-label":d(t)("relationships.actions.clearSearch"),onClick:kt},null,8,["aria-label"])]),key:"0"}:void 0]),1032,["modelValue","placeholder"]),tt.value?(m(),b("div",Zt,[o("div",Jt,r(d(t)("relationships.searchResults.title")),1),o("div",Xt,[(m(!0),b(Ne,null,Ie(Ae.value,l=>(m(),b("button",{key:l.key,type:"button",class:Ee(["group flex w-full items-center gap-2.5 rounded-xl px-2.5 py-2 text-left transition hover:bg-gray-100/70 dark:hover:bg-white/5",v.value===l.key?"bg-sky-50 dark:bg-sky-500/10":""]),disabled:U.value,onClick:Re=>ft(l)},[P(Pe,{src:we(l),alt:j(l),text:xe(l),"root-class":"h-8 w-8 shrink-0 shadow-sm border border-gray-250/20 dark:border-white/10","image-class":"h-8 w-8 rounded-full object-cover","fallback-class":"flex h-8 w-8 items-center justify-center rounded-full bg-sky-100 text-[10px] font-bold text-sky-700 dark:bg-sky-500/15 dark:text-sky-200"},null,8,["src","alt","text"]),o("span",ta,[o("span",aa,r(j(l)),1),o("span",oa,r(Fe(l))+" · #"+r(l.rank),1)]),l.inCoreGraph?M("",!0):(m(),b("span",na,r(d(t)("relationships.searchResults.offCore")),1))],10,ea))),128))])])):M("",!0)]),P(s,{icon:"i-lucide-scan-line",color:"neutral",variant:"soft",size:"xs","aria-label":d(t)("relationships.actions.fitView"),onClick:bt},null,8,["aria-label"]),P(s,{icon:E.value?"i-lucide-eye-off":"i-lucide-eye",color:"neutral",variant:"soft",size:"xs",onClick:n[5]||(n[5]=l=>E.value=!E.value)},{default:ue(()=>[Me(r(d(t)("relationships.privacy")),1)]),_:1},8,["icon"]),ge.value?(m(),te(s,{key:0,icon:"i-lucide-undo-2",color:"neutral",variant:"soft",size:"xs",onClick:je},{default:ue(()=>[Me(r(d(t)("relationships.actions.backToPanorama")),1)]),_:1})):M("",!0)]),ot.value?(m(),b("div",sa,[n[6]||(n[6]=o("span",{class:"i-lucide-refresh-cw h-3.5 w-3.5 animate-spin text-sky-400"},null,-1)),o("span",null,r(be.value),1)])):M("",!0),at.value?(m(),te(d(Kt),{key:3,variant:"overlay",text:be.value||d(t)("relationships.task.updating")},null,8,["text"])):fe.value?M("",!0):(m(),b("div",ra,r(st.value),1)),Ge.value?(m(),b("aside",la,[P(s,{icon:"i-lucide-x",color:"neutral",variant:"ghost",size:"xs",class:"absolute right-2.5 top-2.5 z-10 bg-white/35 backdrop-blur-sm hover:bg-white/55 dark:bg-white/5 dark:hover:bg-white/10","aria-label":d(t)("relationships.actions.closeDetail"),onClick:yt},null,8,["aria-label"]),k.value?(m(),b("div",ia,[o("div",ca,[o("div",ua,[P(Pe,{src:we(k.value),alt:j(k.value),text:xe(k.value),"root-class":"h-11 w-11 shrink-0 overflow-hidden rounded-lg shadow-sm border border-gray-250/20 dark:border-white/10","image-class":"h-11 w-11 rounded-lg object-cover","fallback-class":"flex h-11 w-11 items-center justify-center rounded-lg bg-sky-100 text-sm font-bold text-sky-700 dark:bg-sky-500/15 dark:text-sky-200"},null,8,["src","alt","text"]),o("div",da,[o("div",ha,[o("p",va,r(j(k.value)),1),o("span",{class:Ee(["shrink-0 rounded-full bg-white/45 px-1.5 py-0.5 font-mono text-[10px] font-bold text-gray-600 dark:bg-white/8 dark:text-gray-300",k.value.rank<=3?"text-amber-600 dark:text-amber-300":""])}," #"+r(k.value.rank),3)]),o("p",pa,r(k.value.platform)+" · "+r(ct(k.value)),1)])]),nt.value?(m(),te(s,{key:0,icon:"i-lucide-network",color:"primary",variant:"soft",size:"sm",block:"",class:"rounded-xl font-semibold shadow-sm border border-sky-100 hover:border-sky-200 dark:border-sky-950/30 dark:hover:border-sky-900/50",loading:U.value,onClick:gt},{default:ue(()=>[Me(r(d(t)("relationships.actions.focusConnections")),1)]),_:1},8,["loading"])):M("",!0),o("div",ga,[o("div",fa,[o("p",ma,r(d(t)("relationships.detail.score")),1),o("div",ya,[o("p",ka,r(rt(k.value.score)),1),n[7]||(n[7]=o("span",{class:"text-[9px] leading-3 text-gray-400"},"/100",-1))])]),o("div",ba,[o("p",xa,r(d(t)("relationships.detail.type")),1),o("span",{class:Ee(["inline-flex max-w-full items-center truncate text-[10px] font-semibold leading-4",k.value.pool==="friend"?"text-sky-700 dark:text-sky-300":"text-amber-700 dark:text-amber-300"])},r(Fe(k.value)),3)]),o("div",wa,[o("p",_a,r(d(t)("relationships.detail.privateMessages")),1),o("span",Sa,r(x(k.value.privateMessageCount)),1)]),o("div",Ta,[o("p",Ca,r(d(t)("relationships.detail.groupMessages")),1),o("span",Ra,r(x(k.value.groupMessageCount)),1)]),o("div",Na,[o("p",Ia,r(d(t)("relationships.detail.commonGroups")),1),o("span",Pa,r(x(k.value.commonGroupCount)),1)]),o("div",Ea,[o("p",Ma,r(d(t)("relationships.detail.lastInteraction")),1),o("span",La,r(it(k.value.lastInteractionTs)),1)])])]),o("div",Ka,[o("section",Va,[o("div",Aa,[o("div",za,[o("h3",Ga,r(d(t)("relationships.connections.title")),1),o("span",Fa,r(lt()),1)]),o("span",$a,r(d(t)("relationships.connections.connectionScore")),1)]),le.value.items.length>0?(m(),b("div",Oa,[(m(!0),b(Ne,null,Ie(le.value.items,l=>(m(),b("button",{key:l.node.key,type:"button",class:"group flex h-9 w-full items-center gap-2 rounded-lg px-2 py-0 text-left transition-all duration-250 hover:bg-white dark:hover:bg-white/5",onClick:Re=>Te(l.node)},[P(Pe,{src:we(l.node),alt:j(l.node),text:xe(l.node),"root-class":"h-6 w-6 shrink-0 overflow-hidden rounded-md shadow-sm border border-gray-250/20 dark:border-white/10","image-class":"h-6 w-6 rounded-md object-cover","fallback-class":"flex h-6 w-6 items-center justify-center rounded-md bg-sky-100 text-[9px] font-bold text-sky-700 dark:bg-sky-500/15 dark:text-sky-200"},null,8,["src","alt","text"]),o("div",ja,[o("span",Ba,r(j(l.node)),1)]),o("span",Ha,[o("span",Ua,r(x(l.connectionScore)),1)])],8,Da))),128))])):(m(),b("p",qa,r(d(t)("relationships.connections.empty")),1))]),ke.value.length>0?(m(),b("section",Qa,[o("div",Wa,[o("div",Ya,[o("h2",Za,r(d(t)("relationships.stats.communities")),1),o("span",Ja,r(x(ke.value.length)),1)]),o("span",Xa,r(d(t)("relationships.stats.members")),1)]),o("div",eo,[(m(!0),b(Ne,null,Ie(ke.value,l=>(m(),b("div",{key:l.id,class:"flex h-9 items-center justify-between gap-2 rounded-lg px-2 py-0 text-[13px] leading-4"},[o("div",to,[o("span",ao,[o("span",{class:"h-2 w-2 rounded-full shadow-sm",style:Mt({backgroundColor:l.color})},null,4)]),o("span",oo,r(l.label),1)]),o("span",no,[o("span",so,r(x(l.size)),1)])]))),128))])])):M("",!0)])])):M("",!0)])):M("",!0)])])}}}),po=Object.freeze(Object.defineProperty({__proto__:null,default:io},Symbol.toStringTag,{value:"Module"}));export{Gt as a,vo as b,po as i,Qe as m};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{d as V,A as E,o as l,c as u,Z as M,$ as z,f as e,t as o,G as r,n as q,a as d,E as O,g as _,F,_ as H,P as G,b as K,ao as J,B as X,ap as Q,w as ee,aq as te,h as U,I as P,M as Z,z as se,H as ae}from"./index-CW9H_fBd.js";import{_ as ne}from"./LoadingState.vue_vue_type_script_setup_true_lang-BshQybD_.js";import{u as oe,w as ie}from"./annual-summary-time-range-C_d1oZrj.js";import{_ as re,C as le,g as ce}from"./base-D91aVUwM.js";import{f as ue}from"./dateFormat-rY43adcv.js";import{_ as j}from"./ThemeCard.vue_vue_type_script_setup_true_lang-Dsb6lzs-.js";import"./vendor-echarts-wordcloud-Ca8n6qS6.js";import"./vendor-snapdom--nZvo8Sg.js";import"./vendor-echarts-B-i_56Av.js";import"./vendor-zrender-5DcYjSZk.js";const de=1440*60*1e3;function ge(y){const t=new Map;for(const g of y){if(g.messageCount<=0)continue;const m=me(g.date);m!==null&&t.set(m,(t.get(m)??0)+g.messageCount)}const a=[...t.keys()].sort((g,m)=>g-m);if(a.length===0)return{longestActiveStreak:0,topWeekday:null,weekdayMessageRate:null,weekendMessageRate:null};const x=Array.from({length:7},()=>0);let p=1,k=1;a.forEach((g,m)=>{const v=(new Date(g).getUTCDay()+6)%7;x[v]+=t.get(g)??0,m!==0&&(g-a[m-1]===de?(k++,p=Math.max(p,k)):k=1)});const n=x.reduce((g,m)=>g+m,0),C=x[5]+x[6],f=Math.round(C/n*100),h=x.reduce((g,m,v)=>m>x[g]?v:g,0);return{longestActiveStreak:p,topWeekday:h+1,weekdayMessageRate:100-f,weekendMessageRate:f}}function me(y){const t=/^(\d{4})-(\d{2})-(\d{2})$/.exec(y);if(!t)return null;const a=Number(t[1]),x=Number(t[2]),p=Number(t[3]),k=Date.UTC(a,x-1,p),n=new Date(k);return n.getUTCFullYear()!==a||n.getUTCMonth()!==x-1||n.getUTCDate()!==p?null:k}const he={class:"grid grid-cols-2 gap-x-3 gap-y-4 sm:grid-cols-3 lg:grid-cols-4"},ve={class:"mb-1.5 text-[10px] font-semibold text-gray-500 dark:text-zinc-400"},ye={class:"grid grid-cols-7 gap-0.5","aria-hidden":"true"},xe=["title"],pe=V({__name:"AnnualCalendarGrid",props:{range:{},data:{}},setup(y){const t=y,{t:a}=E(),x=d(()=>Math.max(...t.data.map(h=>h.messageCount),1)),p=d(()=>new Map(t.data.map(h=>[h.date,h.messageCount]))),k=d(()=>new Date(t.range.startTs*1e3)),n=d(()=>new Date(t.range.endTs*1e3)),C=d(()=>{const h=k.value,g=n.value,m=[],v=t.range.year??h.getFullYear(),T=t.range.mode==="year"?new Date(v,0,1):new Date(h.getFullYear(),h.getMonth(),1),Y=t.range.mode==="year"?new Date(v,11,1):new Date(g.getFullYear(),g.getMonth(),1);for(;T<=Y;){const w=T.getFullYear(),S=T.getMonth(),L=`${w}-${String(S+1).padStart(2,"0")}`,A=new Date(w,S+1,0).getDate(),R=Array.from({length:A},(W,b)=>{const N=b+1,$=`${L}-${String(N).padStart(2,"0")}`,s=new Date(w,S,N),c=p.value.get($)??0,D=s>=f(h)&&s<=f(g);return{key:$,day:N,count:c,inRange:D,level:D&&c>0?Math.max(1,Math.ceil(c/x.value*4)):0}});m.push({key:L,label:t.range.mode==="year"?a("insight.monthLabel",{month:S+1}):L.replace("-","/"),leadingDays:(new Date(w,S,1).getDay()+6)%7,days:R}),T.setMonth(T.getMonth()+1)}return m});function f(h){return new Date(h.getFullYear(),h.getMonth(),h.getDate())}return(h,g)=>(l(),u("div",he,[(l(!0),u(M,null,z(C.value,m=>(l(),u("div",{key:m.key,class:"min-w-0"},[e("div",ve,o(m.label),1),e("div",ye,[(l(!0),u(M,null,z(m.leadingDays,v=>(l(),u("span",{key:`blank-${v}`,class:"aspect-square"}))),128)),(l(!0),u(M,null,z(m.days,v=>(l(),u("span",{key:v.key,class:q(["aspect-square min-h-[5px] rounded-[2px] bg-gray-100 dark:bg-zinc-800",{"opacity-30":!v.inRange,"bg-pink-200 dark:bg-pink-950":v.level===1,"bg-pink-300 dark:bg-pink-800":v.level===2,"bg-pink-500 dark:bg-pink-600":v.level===3,"bg-pink-700 dark:bg-pink-400":v.level===4}]),title:`${v.key}: ${v.count} ${r(a)("insight.messages")}`},null,10,xe))),128))])]))),128))]))}}),ke=V({__name:"AnnualMonthlyTrend",props:{range:{},data:{},height:{}},setup(y){const t=y,{t:a}=E(),x=d(()=>({labels:t.data.map(p=>t.range.mode==="year"?a("insight.monthLabel",{month:Number(p.month.slice(5))}):p.month.replace("-","/")),values:t.data.map(p=>p.value)}));return(p,k)=>(l(),O(r(re),{data:x.value,height:y.height??260,"border-radius":3},null,8,["data","height"]))}}),_e={class:"grid gap-4 lg:grid-cols-12"},fe={class:"relative z-10 min-w-0 p-5 sm:p-6"},we={class:"flex flex-col gap-5 xl:flex-row xl:items-start xl:justify-between"},be={class:"min-w-0"},De={class:"text-2xl font-bold text-gray-900 dark:text-white sm:text-3xl"},Ce={class:"mt-3 space-y-1.5 text-xs font-medium text-gray-500 dark:text-zinc-400"},Me={class:"flex items-center gap-2"},Te={class:"font-mono"},Se={class:"flex flex-wrap items-center gap-x-2 gap-y-1"},$e={class:"grid grid-cols-2 gap-x-6 gap-y-4 sm:grid-cols-4 xl:shrink-0"},ze={class:"font-mono text-xl font-black tabular-nums text-gray-900 dark:text-white"},Ae={class:"mt-1 truncate text-[10px] font-medium text-gray-500 dark:text-zinc-400"},Re={class:"mt-7 flex flex-wrap items-center justify-between gap-3"},Ye={class:"text-[11px] font-bold uppercase text-pink-600 dark:text-pink-400"},Le={class:"flex rounded-lg bg-gray-100 p-0.5 dark:bg-zinc-800"},Ne=["aria-pressed","onClick"],Be={class:"mt-1 text-[10px] text-gray-400 dark:text-zinc-500"},Fe={class:"mt-2"},Ue={class:"min-w-0 p-5 sm:p-6"},je={class:"flex items-start justify-between gap-4"},We={class:"text-[11px] font-bold uppercase text-pink-600 dark:text-pink-400"},Ie={class:"mt-1 text-[10px] text-gray-400 dark:text-zinc-500"},Ve={class:"shrink-0 text-right"},Ee={class:"font-mono text-lg font-black tabular-nums text-gray-900 dark:text-white"},Pe={class:"text-[9px] text-gray-400 dark:text-zinc-500"},qe={class:"mt-5"},Oe={class:"min-w-0 p-5 sm:p-6"},Ke={class:"text-[11px] font-bold uppercase text-pink-600 dark:text-pink-400"},Ge={class:"mt-1 text-[10px] text-gray-400 dark:text-zinc-500"},Ze={key:0,class:"mt-5 grid grid-cols-2 gap-x-5 gap-y-4 sm:grid-cols-3"},He={class:"flex items-end justify-between gap-2"},Je={class:"truncate text-xs font-medium text-gray-600 dark:text-zinc-300"},Xe={class:"font-mono text-xs font-black tabular-nums text-gray-900 dark:text-white"},Qe={class:"mt-2 h-1 overflow-hidden rounded-full bg-gray-100 dark:bg-zinc-800"},et={class:"mt-1.5 font-mono text-[9px] text-gray-400 dark:text-zinc-500"},tt={key:1,class:"flex h-28 items-center justify-center text-xs text-gray-400 dark:text-zinc-600"},st={class:"min-w-0 p-5 sm:p-6"},at={class:"flex items-start justify-between gap-3"},nt={class:"text-[11px] font-bold uppercase text-pink-600 dark:text-pink-400"},ot={class:"mt-1 text-[10px] text-gray-400 dark:text-zinc-500"},it={class:"flex shrink-0 gap-3 text-right"},rt={class:"font-mono text-sm font-black text-gray-900 dark:text-white"},lt={class:"text-[9px] text-gray-400 dark:text-zinc-500"},ct={class:"font-mono text-sm font-black text-gray-900 dark:text-white"},ut={key:0,class:"mt-5 flex h-24 items-end gap-2"},dt={class:"flex h-16 w-full items-end rounded-sm bg-gray-100 dark:bg-zinc-800"},gt=["title"],mt={class:"w-full truncate text-center font-mono text-[8px] text-gray-400 dark:text-zinc-500"},ht={key:1,class:"flex h-24 items-center justify-center text-xs text-gray-400 dark:text-zinc-600"},vt={class:"min-w-0 p-5 sm:p-6"},yt={class:"text-[11px] font-bold uppercase text-pink-600 dark:text-pink-400"},xt={class:"mt-4 space-y-4"},pt={class:"truncate font-mono text-sm font-black tabular-nums text-gray-900 dark:text-white"},kt={class:"mt-1 text-[9px] leading-tight font-medium text-gray-500 dark:text-zinc-400"},_t={class:"mt-0.5 truncate text-[8px] text-gray-400 dark:text-zinc-500"},ft=V({__name:"AnnualInsightBoard",props:{range:{},metrics:{},coverage:{},monthlyActivity:{},monthlyDirectContacts:{},dailyActivity:{},messageTypes:{},textLength:{}},setup(y){const t=y,{t:a}=E(),x=K("messages"),p=d(()=>t.range.mode==="year"?a("insight.overviewCard.yearTitle",{year:t.range.year}):a("insight.overviewCard.recentTitle")),k=d(()=>ue(t.range.startTs,t.range.endTs,"YYYY/MM/DD")),n=d(()=>[{key:"messages",value:t.metrics.sentMessageCount},{key:"activeDays",value:t.metrics.activeDayCount},{key:"contacts",value:t.metrics.directContactCount},{key:"dailyMessages",value:t.metrics.averageMessagesPerDay}]),C=d(()=>t.monthlyActivity.reduce((s,c)=>!s||c.messageCount>s.messageCount?c:s,null)),f=d(()=>t.dailyActivity.reduce((s,c)=>!s||c.messageCount>s.messageCount?c:s,null)),h=d(()=>[...t.messageTypes].sort((s,c)=>c.count-s.count).slice(0,6)),g=d(()=>t.messageTypes.reduce((s,c)=>s+c.count,0)),m=d(()=>t.messageTypes.find(s=>s.type===J.TEXT)?.count??0),v=d(()=>$(m.value,g.value)),T=d(()=>Math.max(...t.textLength.buckets.map(s=>s.count),1)),Y=d(()=>{const s=Math.max(1,Math.round((t.range.endTs-t.range.startTs)/86400)+1);return $(t.metrics.activeDayCount,s)}),w=d(()=>ge(t.dailyActivity)),S=d(()=>x.value==="messages"?t.monthlyActivity.map(s=>({month:s.month,value:s.messageCount})):t.monthlyDirectContacts.map(s=>({month:s.month,value:s.contactCount}))),L=d(()=>a(x.value==="messages"?"insight.sections.overviewDescription":"insight.sections.directContactsDescription")),A=["mon","tue","wed","thu","fri","sat","sun"],R=d(()=>[[{key:"dailyContacts",value:b(t.metrics.averageDirectContactsPerDay),detail:a("insight.overviewCard.perDay")},{key:"peakMonth",value:N(C.value?.month),detail:a("insight.overviewCard.messagesCount",{count:b(C.value?.messageCount??0)})},{key:"peakDay",value:f.value?.date.slice(5).replace("-","/")??"-",detail:a("insight.overviewCard.messagesCount",{count:b(f.value?.messageCount??0)})}],[{key:"longestActiveStreak",value:b(w.value.longestActiveStreak),detail:a("insight.overviewCard.consecutiveActiveDays")},{key:"topWeekday",value:W(w.value.topWeekday),detail:a("insight.overviewCard.mostMessagesSent")},{key:"weekendMessageRate",value:w.value.weekendMessageRate===null?"-":`${w.value.weekendMessageRate}%`,detail:w.value.weekdayMessageRate===null?a("insight.noData"):a("insight.overviewCard.weekdayMessageRate",{rate:w.value.weekdayMessageRate})}]]);function W(s){return s===null?"-":a(`common.weekday.${A[s-1]}`)}function b(s){return Number.isInteger(s)?s.toLocaleString():s.toLocaleString(void 0,{maximumFractionDigits:1})}function N(s){return s?t.range.mode==="year"?a("insight.monthLabel",{month:Number(s.slice(5))}):s.replace("-","/"):"-"}function $(s,c){return c>0?Math.round(s/c*100):0}return(s,c)=>{const D=H;return l(),u("div",_e,[_(r(j),{class:"relative isolate lg:col-span-8"},{default:F(()=>[_(r(le)),e("section",fe,[e("div",we,[e("div",be,[e("h2",De,o(p.value),1),e("div",Ce,[e("div",Me,[_(D,{name:"i-heroicons-calendar",class:"h-4 w-4 opacity-70"}),e("span",Te,o(k.value),1)]),e("div",Se,[_(D,{name:"i-heroicons-circle-stack",class:"h-4 w-4 opacity-70"}),e("span",null,o(r(a)("insight.status.coverage",{analyzed:y.coverage.analyzedSessions,total:y.coverage.totalSessions})),1)])])]),e("div",$e,[(l(!0),u(M,null,z(n.value,i=>(l(),u("div",{key:i.key,class:"min-w-0"},[e("div",ze,o(b(i.value)),1),e("div",Ae,o(r(a)(`insight.kpis.${i.key}`)),1)]))),128))])]),e("div",Re,[e("h3",Ye,o(r(a)("insight.sections.overview")),1),e("div",Le,[(l(),u(M,null,z(["messages","contacts"],i=>e("button",{key:i,type:"button",class:q(["rounded-md px-2.5 py-1 text-[10px] font-medium transition-colors",x.value===i?"bg-white text-gray-900 shadow-sm dark:bg-zinc-700 dark:text-white":"text-gray-500 hover:text-gray-700 dark:text-zinc-400 dark:hover:text-zinc-200"]),"aria-pressed":x.value===i,onClick:B=>x.value=i},o(r(a)(`insight.overviewCard.monthlyTrend.${i}`)),11,Ne)),64))])]),e("p",Be,o(L.value),1),e("div",Fe,[_(ke,{range:y.range,data:S.value,height:210},null,8,["range","data"])])])]),_:1}),_(r(j),{class:"lg:col-span-4"},{default:F(()=>[e("section",Ue,[e("div",je,[e("div",null,[e("h3",We,o(r(a)("insight.overviewCard.activity")),1),e("p",Ie,o(r(a)("insight.sections.activityDescription")),1)]),e("div",Ve,[e("div",Ee,o(y.metrics.activeDayCount),1),e("div",Pe,o(r(a)("insight.overviewCard.activeRate",{rate:Y.value})),1)])]),e("div",qe,[_(pe,{range:y.range,data:y.dailyActivity},null,8,["range","data"])])])]),_:1}),_(r(j),{class:"lg:col-span-5"},{default:F(()=>[e("section",Oe,[e("h3",Ke,o(r(a)("insight.sections.messageTypes")),1),e("p",Ge,o(r(a)("insight.sections.messageTypesDescription")),1),h.value.length?(l(),u("div",Ze,[(l(!0),u(M,null,z(h.value,i=>(l(),u("div",{key:i.type,class:"min-w-0"},[e("div",He,[e("span",Je,o(r(ce)(i.type,r(a))),1),e("span",Xe,o($(i.count,g.value))+"% ",1)]),e("div",Qe,[e("div",{class:"h-full rounded-full bg-pink-500",style:G({width:`${$(i.count,g.value)}%`})},null,4)]),e("div",et,o(b(i.count)),1)]))),128))])):(l(),u("div",tt,o(r(a)("insight.noData")),1))])]),_:1}),_(r(j),{class:"lg:col-span-3"},{default:F(()=>[e("section",st,[e("div",at,[e("div",null,[e("h3",nt,o(r(a)("insight.sections.textLength")),1),e("p",ot,o(r(a)("insight.overviewCard.textRatio"))+" "+o(v.value)+"% ",1)]),e("div",it,[e("div",null,[e("div",rt,o(y.textLength.median??"-"),1),e("div",lt,o(r(a)("insight.length.median")),1)]),e("div",null,[e("div",ct,o(y.textLength.p90??"-"),1),c[0]||(c[0]=e("div",{class:"text-[9px] text-gray-400 dark:text-zinc-500"},"P90",-1))])])]),y.textLength.textMessageCount?(l(),u("div",ut,[(l(!0),u(M,null,z(y.textLength.buckets,i=>(l(),u("div",{key:i.key,class:"flex min-w-0 flex-1 flex-col items-center gap-2"},[e("div",dt,[e("div",{class:"w-full rounded-sm bg-blue-500/80 dark:bg-blue-400/80",style:G({height:`${Math.max(4,i.count/T.value*100)}%`}),title:`${i.key}: ${i.count}`},null,12,gt)]),e("span",mt,o(i.key),1)]))),128))])):(l(),u("div",ht,o(r(a)("insight.noTextData")),1))])]),_:1}),_(r(j),{class:"lg:col-span-4"},{default:F(()=>[e("section",vt,[e("h3",yt,o(r(a)("insight.overviewCard.keyMetrics")),1),e("div",xt,[(l(!0),u(M,null,z(R.value,(i,B)=>(l(),u("div",{key:B,class:q(["grid grid-cols-3 divide-x divide-gray-200 dark:divide-white/10",{"border-t border-gray-200 pt-4 dark:border-white/10":B>0}])},[(l(!0),u(M,null,z(i,I=>(l(),u("div",{key:I.key,class:"min-w-0 px-3 first:pl-0 last:pr-0"},[e("div",pt,o(I.value),1),e("div",kt,o(r(a)(`insight.overviewCard.${I.key}`)),1),e("div",_t,o(I.detail),1)]))),128))],2))),128))])])]),_:1})])}}}),wt={class:"min-h-0 flex-1 overflow-y-auto"},bt={class:"mx-auto w-full max-w-[1120px] space-y-6 px-4 py-5 sm:px-6 sm:py-6"},Dt={class:"min-w-0"},Ct={key:1,class:"flex items-center gap-2 rounded-xl border border-amber-100 bg-amber-50/50 px-4 py-2.5 text-xs text-amber-800 backdrop-blur-sm dark:border-amber-950/40 dark:bg-amber-950/20 dark:text-amber-300"},Mt={key:2,class:"flex flex-wrap items-center justify-between gap-3 rounded-xl border border-red-200 bg-red-50/50 px-4 py-2.5 text-xs text-red-800 backdrop-blur-sm dark:border-red-950/40 dark:bg-red-950/20 dark:text-red-300"},Tt={key:0,class:"flex flex-wrap items-center justify-between gap-3 rounded-xl border border-gray-200 bg-white p-4 text-xs text-gray-600 dark:border-zinc-800 dark:bg-zinc-900/50 dark:text-zinc-300"},St={key:0},$t={key:1},Wt=V({__name:"index",setup(y){const{t}=E(),a=X(),{showSettings:x}=Q(a),p=new Date().getFullYear(),k=oe(),n=K(null),C=K("");let f=null,h=0;const g=d(()=>{const s=k.modelValue.value?.state;return s?s.mode==="recent"?{mode:"recent",days:365,acceptStale:!0}:{mode:"year",year:s.year??p,acceptStale:!0}:null}),m=d(()=>JSON.stringify(g.value)),v=d(()=>(n.value?.coverage.missingOwnerSessions??0)+(n.value?.coverage.unresolvedOwnerSessions??0)),T=d(()=>n.value?.task.status==="running"),Y=d(()=>n.value?.metrics!==null&&n.value?.metrics!==void 0),w=d(()=>Y.value&&n.value?.metrics?.sentMessageCount===0),S=d(()=>(n.value?.coverage.totalSessions??0)>0&&n.value?.coverage.analyzedSessions===0&&v.value>0),L=d(()=>k.modelValue.value?.state.mode==="year"?k.modelValue.value.state.year:void 0),A=d(()=>{const s=L.value,c=n.value?.latestDataYear;return s===void 0||c===null||c===void 0||s===c?null:{year:s,latestYear:c}});ee(m,()=>{b(),g.value&&(n.value=null,R(!1))},{immediate:!0}),ie(x,()=>{R(!1)}),te(b);async function R(s){const c=g.value;if(!c)return;const D=++h;C.value="";try{const i=s?await Z().recomputeAnnualSummary(c):await Z().getAnnualSummary(c);if(D!==h)return;n.value=i,i.metrics&&k.setAvailableYears(i.availableDataYears),i.task.status==="running"&&W()}catch(i){if(D!==h)return;const B=i instanceof Error?i.message:String(i);C.value=B,se(`Global insight annual summary failed: ${B}`,i instanceof Error?i.stack:void 0)}}function W(){b(),f=setTimeout(()=>{R(!1)},900)}function b(){f&&(clearTimeout(f),f=null)}function N(){const s=n.value?.latestDataYear;s&&k.switchToYear(s)}function $(){a.openSettings("data","missing-owner")}return(s,c)=>{const D=H,i=ae;return l(),u("main",wt,[e("div",bt,[v.value>0?(l(),u("button",{key:0,type:"button",class:"inline-flex w-fit max-w-full items-center gap-2 rounded-lg bg-amber-50 px-3 py-2 text-left text-xs text-amber-800 transition-colors hover:bg-amber-100 dark:bg-amber-950/20 dark:text-amber-300 dark:hover:bg-amber-950/30",onClick:$},[_(D,{name:"i-heroicons-user-circle",class:"h-4 w-4 shrink-0"}),e("span",Dt,o(r(t)("insight.status.ownerIssues",{count:v.value})),1),_(D,{name:"i-heroicons-arrow-right",class:"h-3.5 w-3.5 shrink-0 opacity-70"})])):U("",!0),n.value?.cache.status==="stale"||T.value&&Y.value?(l(),u("div",Ct,[_(D,{name:"i-heroicons-arrow-path",class:"h-4 w-4 shrink-0 animate-spin text-amber-600 dark:text-amber-400"}),P(" "+o(r(t)("insight.status.updating")),1)])):U("",!0),C.value||n.value?.task.status==="failed"?(l(),u("div",Mt,[e("span",null,o(r(t)("insight.status.failed")),1),_(i,{size:"xs",color:"error",variant:"soft",icon:"i-heroicons-arrow-path",onClick:c[0]||(c[0]=B=>R(!0))},{default:F(()=>[P(o(r(t)("insight.actions.retry")),1)]),_:1})])):U("",!0),!Y.value&&!C.value&&n.value?.task.status!=="failed"?(l(),O(ne,{key:3,height:"min(52vh, 420px)",text:n.value?.task.status==="running"?r(t)("insight.status.computingProgress",{processed:n.value.task.processedSessions,total:n.value.task.totalSessions}):r(t)("insight.status.loading")},null,8,["text"])):n.value?.metrics&&n.value.textLength?(l(),u(M,{key:4},[w.value&&!S.value?(l(),u("div",Tt,[A.value?(l(),u("span",St,o(r(t)("insight.status.noDataWithLatest",A.value)),1)):(l(),u("span",$t,o(r(t)("insight.noData")),1)),A.value?(l(),O(i,{key:2,size:"xs",variant:"soft",color:"neutral",icon:"i-heroicons-arrow-right",onClick:N},{default:F(()=>[P(o(r(t)("insight.actions.switchYear",{year:A.value.latestYear})),1)]),_:1})):U("",!0)])):U("",!0),_(ft,{range:n.value.range,metrics:n.value.metrics,coverage:n.value.coverage,"monthly-activity":n.value.monthlyActivity,"monthly-direct-contacts":n.value.monthlyDirectContacts,"daily-activity":n.value.dailyActivity,"message-types":n.value.messageTypes,"text-length":n.value.textLength},null,8,["range","metrics","coverage","monthly-activity","monthly-direct-contacts","daily-activity","message-types","text-length"])],64)):U("",!0)])])}}});export{Wt as default};
|
|
1
|
+
import{d as V,A as E,o as l,c as u,Z as M,$ as z,f as e,t as o,G as r,n as q,a as d,E as O,g as _,F,_ as H,P as G,b as K,ao as J,B as X,ap as Q,w as ee,aq as te,h as U,I as P,M as Z,z as se,H as ae}from"./index-YzfjPohq.js";import{_ as ne}from"./LoadingState.vue_vue_type_script_setup_true_lang-CCK5yTju.js";import{u as oe,w as ie}from"./annual-summary-time-range-DJ0HWI_t.js";import{_ as re,C as le,g as ce}from"./base-CnuE0ss0.js";import{f as ue}from"./dateFormat-p6nibkgt.js";import{_ as j}from"./ThemeCard.vue_vue_type_script_setup_true_lang-JXMFY6aD.js";import"./vendor-echarts-wordcloud-Ca8n6qS6.js";import"./vendor-snapdom--nZvo8Sg.js";import"./vendor-echarts-B-i_56Av.js";import"./vendor-zrender-5DcYjSZk.js";const de=1440*60*1e3;function ge(y){const t=new Map;for(const g of y){if(g.messageCount<=0)continue;const m=me(g.date);m!==null&&t.set(m,(t.get(m)??0)+g.messageCount)}const a=[...t.keys()].sort((g,m)=>g-m);if(a.length===0)return{longestActiveStreak:0,topWeekday:null,weekdayMessageRate:null,weekendMessageRate:null};const x=Array.from({length:7},()=>0);let p=1,k=1;a.forEach((g,m)=>{const v=(new Date(g).getUTCDay()+6)%7;x[v]+=t.get(g)??0,m!==0&&(g-a[m-1]===de?(k++,p=Math.max(p,k)):k=1)});const n=x.reduce((g,m)=>g+m,0),C=x[5]+x[6],f=Math.round(C/n*100),h=x.reduce((g,m,v)=>m>x[g]?v:g,0);return{longestActiveStreak:p,topWeekday:h+1,weekdayMessageRate:100-f,weekendMessageRate:f}}function me(y){const t=/^(\d{4})-(\d{2})-(\d{2})$/.exec(y);if(!t)return null;const a=Number(t[1]),x=Number(t[2]),p=Number(t[3]),k=Date.UTC(a,x-1,p),n=new Date(k);return n.getUTCFullYear()!==a||n.getUTCMonth()!==x-1||n.getUTCDate()!==p?null:k}const he={class:"grid grid-cols-2 gap-x-3 gap-y-4 sm:grid-cols-3 lg:grid-cols-4"},ve={class:"mb-1.5 text-[10px] font-semibold text-gray-500 dark:text-zinc-400"},ye={class:"grid grid-cols-7 gap-0.5","aria-hidden":"true"},xe=["title"],pe=V({__name:"AnnualCalendarGrid",props:{range:{},data:{}},setup(y){const t=y,{t:a}=E(),x=d(()=>Math.max(...t.data.map(h=>h.messageCount),1)),p=d(()=>new Map(t.data.map(h=>[h.date,h.messageCount]))),k=d(()=>new Date(t.range.startTs*1e3)),n=d(()=>new Date(t.range.endTs*1e3)),C=d(()=>{const h=k.value,g=n.value,m=[],v=t.range.year??h.getFullYear(),T=t.range.mode==="year"?new Date(v,0,1):new Date(h.getFullYear(),h.getMonth(),1),Y=t.range.mode==="year"?new Date(v,11,1):new Date(g.getFullYear(),g.getMonth(),1);for(;T<=Y;){const w=T.getFullYear(),S=T.getMonth(),L=`${w}-${String(S+1).padStart(2,"0")}`,A=new Date(w,S+1,0).getDate(),R=Array.from({length:A},(W,b)=>{const N=b+1,$=`${L}-${String(N).padStart(2,"0")}`,s=new Date(w,S,N),c=p.value.get($)??0,D=s>=f(h)&&s<=f(g);return{key:$,day:N,count:c,inRange:D,level:D&&c>0?Math.max(1,Math.ceil(c/x.value*4)):0}});m.push({key:L,label:t.range.mode==="year"?a("insight.monthLabel",{month:S+1}):L.replace("-","/"),leadingDays:(new Date(w,S,1).getDay()+6)%7,days:R}),T.setMonth(T.getMonth()+1)}return m});function f(h){return new Date(h.getFullYear(),h.getMonth(),h.getDate())}return(h,g)=>(l(),u("div",he,[(l(!0),u(M,null,z(C.value,m=>(l(),u("div",{key:m.key,class:"min-w-0"},[e("div",ve,o(m.label),1),e("div",ye,[(l(!0),u(M,null,z(m.leadingDays,v=>(l(),u("span",{key:`blank-${v}`,class:"aspect-square"}))),128)),(l(!0),u(M,null,z(m.days,v=>(l(),u("span",{key:v.key,class:q(["aspect-square min-h-[5px] rounded-[2px] bg-gray-100 dark:bg-zinc-800",{"opacity-30":!v.inRange,"bg-pink-200 dark:bg-pink-950":v.level===1,"bg-pink-300 dark:bg-pink-800":v.level===2,"bg-pink-500 dark:bg-pink-600":v.level===3,"bg-pink-700 dark:bg-pink-400":v.level===4}]),title:`${v.key}: ${v.count} ${r(a)("insight.messages")}`},null,10,xe))),128))])]))),128))]))}}),ke=V({__name:"AnnualMonthlyTrend",props:{range:{},data:{},height:{}},setup(y){const t=y,{t:a}=E(),x=d(()=>({labels:t.data.map(p=>t.range.mode==="year"?a("insight.monthLabel",{month:Number(p.month.slice(5))}):p.month.replace("-","/")),values:t.data.map(p=>p.value)}));return(p,k)=>(l(),O(r(re),{data:x.value,height:y.height??260,"border-radius":3},null,8,["data","height"]))}}),_e={class:"grid gap-4 lg:grid-cols-12"},fe={class:"relative z-10 min-w-0 p-5 sm:p-6"},we={class:"flex flex-col gap-5 xl:flex-row xl:items-start xl:justify-between"},be={class:"min-w-0"},De={class:"text-2xl font-bold text-gray-900 dark:text-white sm:text-3xl"},Ce={class:"mt-3 space-y-1.5 text-xs font-medium text-gray-500 dark:text-zinc-400"},Me={class:"flex items-center gap-2"},Te={class:"font-mono"},Se={class:"flex flex-wrap items-center gap-x-2 gap-y-1"},$e={class:"grid grid-cols-2 gap-x-6 gap-y-4 sm:grid-cols-4 xl:shrink-0"},ze={class:"font-mono text-xl font-black tabular-nums text-gray-900 dark:text-white"},Ae={class:"mt-1 truncate text-[10px] font-medium text-gray-500 dark:text-zinc-400"},Re={class:"mt-7 flex flex-wrap items-center justify-between gap-3"},Ye={class:"text-[11px] font-bold uppercase text-pink-600 dark:text-pink-400"},Le={class:"flex rounded-lg bg-gray-100 p-0.5 dark:bg-zinc-800"},Ne=["aria-pressed","onClick"],Be={class:"mt-1 text-[10px] text-gray-400 dark:text-zinc-500"},Fe={class:"mt-2"},Ue={class:"min-w-0 p-5 sm:p-6"},je={class:"flex items-start justify-between gap-4"},We={class:"text-[11px] font-bold uppercase text-pink-600 dark:text-pink-400"},Ie={class:"mt-1 text-[10px] text-gray-400 dark:text-zinc-500"},Ve={class:"shrink-0 text-right"},Ee={class:"font-mono text-lg font-black tabular-nums text-gray-900 dark:text-white"},Pe={class:"text-[9px] text-gray-400 dark:text-zinc-500"},qe={class:"mt-5"},Oe={class:"min-w-0 p-5 sm:p-6"},Ke={class:"text-[11px] font-bold uppercase text-pink-600 dark:text-pink-400"},Ge={class:"mt-1 text-[10px] text-gray-400 dark:text-zinc-500"},Ze={key:0,class:"mt-5 grid grid-cols-2 gap-x-5 gap-y-4 sm:grid-cols-3"},He={class:"flex items-end justify-between gap-2"},Je={class:"truncate text-xs font-medium text-gray-600 dark:text-zinc-300"},Xe={class:"font-mono text-xs font-black tabular-nums text-gray-900 dark:text-white"},Qe={class:"mt-2 h-1 overflow-hidden rounded-full bg-gray-100 dark:bg-zinc-800"},et={class:"mt-1.5 font-mono text-[9px] text-gray-400 dark:text-zinc-500"},tt={key:1,class:"flex h-28 items-center justify-center text-xs text-gray-400 dark:text-zinc-600"},st={class:"min-w-0 p-5 sm:p-6"},at={class:"flex items-start justify-between gap-3"},nt={class:"text-[11px] font-bold uppercase text-pink-600 dark:text-pink-400"},ot={class:"mt-1 text-[10px] text-gray-400 dark:text-zinc-500"},it={class:"flex shrink-0 gap-3 text-right"},rt={class:"font-mono text-sm font-black text-gray-900 dark:text-white"},lt={class:"text-[9px] text-gray-400 dark:text-zinc-500"},ct={class:"font-mono text-sm font-black text-gray-900 dark:text-white"},ut={key:0,class:"mt-5 flex h-24 items-end gap-2"},dt={class:"flex h-16 w-full items-end rounded-sm bg-gray-100 dark:bg-zinc-800"},gt=["title"],mt={class:"w-full truncate text-center font-mono text-[8px] text-gray-400 dark:text-zinc-500"},ht={key:1,class:"flex h-24 items-center justify-center text-xs text-gray-400 dark:text-zinc-600"},vt={class:"min-w-0 p-5 sm:p-6"},yt={class:"text-[11px] font-bold uppercase text-pink-600 dark:text-pink-400"},xt={class:"mt-4 space-y-4"},pt={class:"truncate font-mono text-sm font-black tabular-nums text-gray-900 dark:text-white"},kt={class:"mt-1 text-[9px] leading-tight font-medium text-gray-500 dark:text-zinc-400"},_t={class:"mt-0.5 truncate text-[8px] text-gray-400 dark:text-zinc-500"},ft=V({__name:"AnnualInsightBoard",props:{range:{},metrics:{},coverage:{},monthlyActivity:{},monthlyDirectContacts:{},dailyActivity:{},messageTypes:{},textLength:{}},setup(y){const t=y,{t:a}=E(),x=K("messages"),p=d(()=>t.range.mode==="year"?a("insight.overviewCard.yearTitle",{year:t.range.year}):a("insight.overviewCard.recentTitle")),k=d(()=>ue(t.range.startTs,t.range.endTs,"YYYY/MM/DD")),n=d(()=>[{key:"messages",value:t.metrics.sentMessageCount},{key:"activeDays",value:t.metrics.activeDayCount},{key:"contacts",value:t.metrics.directContactCount},{key:"dailyMessages",value:t.metrics.averageMessagesPerDay}]),C=d(()=>t.monthlyActivity.reduce((s,c)=>!s||c.messageCount>s.messageCount?c:s,null)),f=d(()=>t.dailyActivity.reduce((s,c)=>!s||c.messageCount>s.messageCount?c:s,null)),h=d(()=>[...t.messageTypes].sort((s,c)=>c.count-s.count).slice(0,6)),g=d(()=>t.messageTypes.reduce((s,c)=>s+c.count,0)),m=d(()=>t.messageTypes.find(s=>s.type===J.TEXT)?.count??0),v=d(()=>$(m.value,g.value)),T=d(()=>Math.max(...t.textLength.buckets.map(s=>s.count),1)),Y=d(()=>{const s=Math.max(1,Math.round((t.range.endTs-t.range.startTs)/86400)+1);return $(t.metrics.activeDayCount,s)}),w=d(()=>ge(t.dailyActivity)),S=d(()=>x.value==="messages"?t.monthlyActivity.map(s=>({month:s.month,value:s.messageCount})):t.monthlyDirectContacts.map(s=>({month:s.month,value:s.contactCount}))),L=d(()=>a(x.value==="messages"?"insight.sections.overviewDescription":"insight.sections.directContactsDescription")),A=["mon","tue","wed","thu","fri","sat","sun"],R=d(()=>[[{key:"dailyContacts",value:b(t.metrics.averageDirectContactsPerDay),detail:a("insight.overviewCard.perDay")},{key:"peakMonth",value:N(C.value?.month),detail:a("insight.overviewCard.messagesCount",{count:b(C.value?.messageCount??0)})},{key:"peakDay",value:f.value?.date.slice(5).replace("-","/")??"-",detail:a("insight.overviewCard.messagesCount",{count:b(f.value?.messageCount??0)})}],[{key:"longestActiveStreak",value:b(w.value.longestActiveStreak),detail:a("insight.overviewCard.consecutiveActiveDays")},{key:"topWeekday",value:W(w.value.topWeekday),detail:a("insight.overviewCard.mostMessagesSent")},{key:"weekendMessageRate",value:w.value.weekendMessageRate===null?"-":`${w.value.weekendMessageRate}%`,detail:w.value.weekdayMessageRate===null?a("insight.noData"):a("insight.overviewCard.weekdayMessageRate",{rate:w.value.weekdayMessageRate})}]]);function W(s){return s===null?"-":a(`common.weekday.${A[s-1]}`)}function b(s){return Number.isInteger(s)?s.toLocaleString():s.toLocaleString(void 0,{maximumFractionDigits:1})}function N(s){return s?t.range.mode==="year"?a("insight.monthLabel",{month:Number(s.slice(5))}):s.replace("-","/"):"-"}function $(s,c){return c>0?Math.round(s/c*100):0}return(s,c)=>{const D=H;return l(),u("div",_e,[_(r(j),{class:"relative isolate lg:col-span-8"},{default:F(()=>[_(r(le)),e("section",fe,[e("div",we,[e("div",be,[e("h2",De,o(p.value),1),e("div",Ce,[e("div",Me,[_(D,{name:"i-heroicons-calendar",class:"h-4 w-4 opacity-70"}),e("span",Te,o(k.value),1)]),e("div",Se,[_(D,{name:"i-heroicons-circle-stack",class:"h-4 w-4 opacity-70"}),e("span",null,o(r(a)("insight.status.coverage",{analyzed:y.coverage.analyzedSessions,total:y.coverage.totalSessions})),1)])])]),e("div",$e,[(l(!0),u(M,null,z(n.value,i=>(l(),u("div",{key:i.key,class:"min-w-0"},[e("div",ze,o(b(i.value)),1),e("div",Ae,o(r(a)(`insight.kpis.${i.key}`)),1)]))),128))])]),e("div",Re,[e("h3",Ye,o(r(a)("insight.sections.overview")),1),e("div",Le,[(l(),u(M,null,z(["messages","contacts"],i=>e("button",{key:i,type:"button",class:q(["rounded-md px-2.5 py-1 text-[10px] font-medium transition-colors",x.value===i?"bg-white text-gray-900 shadow-sm dark:bg-zinc-700 dark:text-white":"text-gray-500 hover:text-gray-700 dark:text-zinc-400 dark:hover:text-zinc-200"]),"aria-pressed":x.value===i,onClick:B=>x.value=i},o(r(a)(`insight.overviewCard.monthlyTrend.${i}`)),11,Ne)),64))])]),e("p",Be,o(L.value),1),e("div",Fe,[_(ke,{range:y.range,data:S.value,height:210},null,8,["range","data"])])])]),_:1}),_(r(j),{class:"lg:col-span-4"},{default:F(()=>[e("section",Ue,[e("div",je,[e("div",null,[e("h3",We,o(r(a)("insight.overviewCard.activity")),1),e("p",Ie,o(r(a)("insight.sections.activityDescription")),1)]),e("div",Ve,[e("div",Ee,o(y.metrics.activeDayCount),1),e("div",Pe,o(r(a)("insight.overviewCard.activeRate",{rate:Y.value})),1)])]),e("div",qe,[_(pe,{range:y.range,data:y.dailyActivity},null,8,["range","data"])])])]),_:1}),_(r(j),{class:"lg:col-span-5"},{default:F(()=>[e("section",Oe,[e("h3",Ke,o(r(a)("insight.sections.messageTypes")),1),e("p",Ge,o(r(a)("insight.sections.messageTypesDescription")),1),h.value.length?(l(),u("div",Ze,[(l(!0),u(M,null,z(h.value,i=>(l(),u("div",{key:i.type,class:"min-w-0"},[e("div",He,[e("span",Je,o(r(ce)(i.type,r(a))),1),e("span",Xe,o($(i.count,g.value))+"% ",1)]),e("div",Qe,[e("div",{class:"h-full rounded-full bg-pink-500",style:G({width:`${$(i.count,g.value)}%`})},null,4)]),e("div",et,o(b(i.count)),1)]))),128))])):(l(),u("div",tt,o(r(a)("insight.noData")),1))])]),_:1}),_(r(j),{class:"lg:col-span-3"},{default:F(()=>[e("section",st,[e("div",at,[e("div",null,[e("h3",nt,o(r(a)("insight.sections.textLength")),1),e("p",ot,o(r(a)("insight.overviewCard.textRatio"))+" "+o(v.value)+"% ",1)]),e("div",it,[e("div",null,[e("div",rt,o(y.textLength.median??"-"),1),e("div",lt,o(r(a)("insight.length.median")),1)]),e("div",null,[e("div",ct,o(y.textLength.p90??"-"),1),c[0]||(c[0]=e("div",{class:"text-[9px] text-gray-400 dark:text-zinc-500"},"P90",-1))])])]),y.textLength.textMessageCount?(l(),u("div",ut,[(l(!0),u(M,null,z(y.textLength.buckets,i=>(l(),u("div",{key:i.key,class:"flex min-w-0 flex-1 flex-col items-center gap-2"},[e("div",dt,[e("div",{class:"w-full rounded-sm bg-blue-500/80 dark:bg-blue-400/80",style:G({height:`${Math.max(4,i.count/T.value*100)}%`}),title:`${i.key}: ${i.count}`},null,12,gt)]),e("span",mt,o(i.key),1)]))),128))])):(l(),u("div",ht,o(r(a)("insight.noTextData")),1))])]),_:1}),_(r(j),{class:"lg:col-span-4"},{default:F(()=>[e("section",vt,[e("h3",yt,o(r(a)("insight.overviewCard.keyMetrics")),1),e("div",xt,[(l(!0),u(M,null,z(R.value,(i,B)=>(l(),u("div",{key:B,class:q(["grid grid-cols-3 divide-x divide-gray-200 dark:divide-white/10",{"border-t border-gray-200 pt-4 dark:border-white/10":B>0}])},[(l(!0),u(M,null,z(i,I=>(l(),u("div",{key:I.key,class:"min-w-0 px-3 first:pl-0 last:pr-0"},[e("div",pt,o(I.value),1),e("div",kt,o(r(a)(`insight.overviewCard.${I.key}`)),1),e("div",_t,o(I.detail),1)]))),128))],2))),128))])])]),_:1})])}}}),wt={class:"min-h-0 flex-1 overflow-y-auto"},bt={class:"mx-auto w-full max-w-[1120px] space-y-6 px-4 py-5 sm:px-6 sm:py-6"},Dt={class:"min-w-0"},Ct={key:1,class:"flex items-center gap-2 rounded-xl border border-amber-100 bg-amber-50/50 px-4 py-2.5 text-xs text-amber-800 backdrop-blur-sm dark:border-amber-950/40 dark:bg-amber-950/20 dark:text-amber-300"},Mt={key:2,class:"flex flex-wrap items-center justify-between gap-3 rounded-xl border border-red-200 bg-red-50/50 px-4 py-2.5 text-xs text-red-800 backdrop-blur-sm dark:border-red-950/40 dark:bg-red-950/20 dark:text-red-300"},Tt={key:0,class:"flex flex-wrap items-center justify-between gap-3 rounded-xl border border-gray-200 bg-white p-4 text-xs text-gray-600 dark:border-zinc-800 dark:bg-zinc-900/50 dark:text-zinc-300"},St={key:0},$t={key:1},Wt=V({__name:"index",setup(y){const{t}=E(),a=X(),{showSettings:x}=Q(a),p=new Date().getFullYear(),k=oe(),n=K(null),C=K("");let f=null,h=0;const g=d(()=>{const s=k.modelValue.value?.state;return s?s.mode==="recent"?{mode:"recent",days:365,acceptStale:!0}:{mode:"year",year:s.year??p,acceptStale:!0}:null}),m=d(()=>JSON.stringify(g.value)),v=d(()=>(n.value?.coverage.missingOwnerSessions??0)+(n.value?.coverage.unresolvedOwnerSessions??0)),T=d(()=>n.value?.task.status==="running"),Y=d(()=>n.value?.metrics!==null&&n.value?.metrics!==void 0),w=d(()=>Y.value&&n.value?.metrics?.sentMessageCount===0),S=d(()=>(n.value?.coverage.totalSessions??0)>0&&n.value?.coverage.analyzedSessions===0&&v.value>0),L=d(()=>k.modelValue.value?.state.mode==="year"?k.modelValue.value.state.year:void 0),A=d(()=>{const s=L.value,c=n.value?.latestDataYear;return s===void 0||c===null||c===void 0||s===c?null:{year:s,latestYear:c}});ee(m,()=>{b(),g.value&&(n.value=null,R(!1))},{immediate:!0}),ie(x,()=>{R(!1)}),te(b);async function R(s){const c=g.value;if(!c)return;const D=++h;C.value="";try{const i=s?await Z().recomputeAnnualSummary(c):await Z().getAnnualSummary(c);if(D!==h)return;n.value=i,i.metrics&&k.setAvailableYears(i.availableDataYears),i.task.status==="running"&&W()}catch(i){if(D!==h)return;const B=i instanceof Error?i.message:String(i);C.value=B,se(`Global insight annual summary failed: ${B}`,i instanceof Error?i.stack:void 0)}}function W(){b(),f=setTimeout(()=>{R(!1)},900)}function b(){f&&(clearTimeout(f),f=null)}function N(){const s=n.value?.latestDataYear;s&&k.switchToYear(s)}function $(){a.openSettings("data","missing-owner")}return(s,c)=>{const D=H,i=ae;return l(),u("main",wt,[e("div",bt,[v.value>0?(l(),u("button",{key:0,type:"button",class:"inline-flex w-fit max-w-full items-center gap-2 rounded-lg bg-amber-50 px-3 py-2 text-left text-xs text-amber-800 transition-colors hover:bg-amber-100 dark:bg-amber-950/20 dark:text-amber-300 dark:hover:bg-amber-950/30",onClick:$},[_(D,{name:"i-heroicons-user-circle",class:"h-4 w-4 shrink-0"}),e("span",Dt,o(r(t)("insight.status.ownerIssues",{count:v.value})),1),_(D,{name:"i-heroicons-arrow-right",class:"h-3.5 w-3.5 shrink-0 opacity-70"})])):U("",!0),n.value?.cache.status==="stale"||T.value&&Y.value?(l(),u("div",Ct,[_(D,{name:"i-heroicons-arrow-path",class:"h-4 w-4 shrink-0 animate-spin text-amber-600 dark:text-amber-400"}),P(" "+o(r(t)("insight.status.updating")),1)])):U("",!0),C.value||n.value?.task.status==="failed"?(l(),u("div",Mt,[e("span",null,o(r(t)("insight.status.failed")),1),_(i,{size:"xs",color:"error",variant:"soft",icon:"i-heroicons-arrow-path",onClick:c[0]||(c[0]=B=>R(!0))},{default:F(()=>[P(o(r(t)("insight.actions.retry")),1)]),_:1})])):U("",!0),!Y.value&&!C.value&&n.value?.task.status!=="failed"?(l(),O(ne,{key:3,height:"min(52vh, 420px)",text:n.value?.task.status==="running"?r(t)("insight.status.computingProgress",{processed:n.value.task.processedSessions,total:n.value.task.totalSessions}):r(t)("insight.status.loading")},null,8,["text"])):n.value?.metrics&&n.value.textLength?(l(),u(M,{key:4},[w.value&&!S.value?(l(),u("div",Tt,[A.value?(l(),u("span",St,o(r(t)("insight.status.noDataWithLatest",A.value)),1)):(l(),u("span",$t,o(r(t)("insight.noData")),1)),A.value?(l(),O(i,{key:2,size:"xs",variant:"soft",color:"neutral",icon:"i-heroicons-arrow-right",onClick:N},{default:F(()=>[P(o(r(t)("insight.actions.switchYear",{year:A.value.latestYear})),1)]),_:1})):U("",!0)])):U("",!0),_(ft,{range:n.value.range,metrics:n.value.metrics,coverage:n.value.coverage,"monthly-activity":n.value.monthlyActivity,"monthly-direct-contacts":n.value.monthlyDirectContacts,"daily-activity":n.value.dailyActivity,"message-types":n.value.messageTypes,"text-length":n.value.textLength},null,8,["range","metrics","coverage","monthly-activity","monthly-direct-contacts","daily-activity","message-types","text-length"])],64)):U("",!0)])])}}});export{Wt as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a7 as F,a8 as W,i as S,a9 as D,b,aa as N,ab as U,w as E,o as d,E as A,F as x,f as u,n as c,G as t,c as m,g as y,ac as K,r as v,I as g,t as l,h as _,ad as L,a as w,ae as z,af as O,p as j,ag as R,ah as M,d as G,A as H,ai as T,aj as X,ak as J,H as Q,al as Y,am as Z,X as ee}from"./index-
|
|
1
|
+
import{a7 as F,a8 as W,i as S,a9 as D,b,aa as N,ab as U,w as E,o as d,E as A,F as x,f as u,n as c,G as t,c as m,g as y,ac as K,r as v,I as g,t as l,h as _,ad as L,a as w,ae as z,af as O,p as j,ag as R,ah as M,d as G,A as H,ai as T,aj as X,ak as J,H as Q,al as Y,am as Z,X as ee}from"./index-YzfjPohq.js";import{_ as te}from"./ThemeCard.vue_vue_type_script_setup_true_lang-JXMFY6aD.js";import"./vendor-snapdom--nZvo8Sg.js";const ae={slots:{root:"",wrapper:"",labelWrapper:"flex content-center items-center justify-between gap-1",label:"block font-medium text-default",container:"relative",description:"text-muted",error:"mt-2 text-error",hint:"text-muted",help:"mt-2 text-muted"},variants:{size:{xs:{root:"text-xs"},sm:{root:"text-xs"},md:{root:"text-sm"},lg:{root:"text-sm"},xl:{root:"text-base"}},required:{true:{label:"after:content-['*'] after:ms-0.5 after:text-error"}},orientation:{vertical:{container:"mt-1"},horizontal:{root:"flex justify-between place-items-baseline gap-2"}}},defaultVariants:{size:"md"}},re=["id"],se=["id"],oe=["id"],le=["id"],ne={__name:"FormField",props:{as:{type:null,required:!1},name:{type:String,required:!1},errorPattern:{type:null,required:!1},label:{type:String,required:!1},description:{type:String,required:!1},help:{type:String,required:!1},error:{type:[Boolean,String],required:!1,default:void 0},hint:{type:String,required:!1},size:{type:null,required:!1},required:{type:Boolean,required:!1},eagerValidation:{type:Boolean,required:!1},validateOnInputDelay:{type:Number,required:!1},orientation:{type:null,required:!1,default:"vertical"},class:{type:null,required:!1},ui:{type:Object,required:!1}},setup(V){const o=V,n=F(),e=W("formField",o),k=O(),r=w(()=>z({extend:z(ae),...k.ui?.formField||{}})({size:e.size,required:e.required,orientation:e.orientation})),h=S(D,null),s=w(()=>e.error||h?.value?.find(a=>a.name===e.name||e.errorPattern&&a.name?.match(e.errorPattern))?.message),i=b(N()),f=i.value,q=S(U,void 0);return E(i,()=>{q&&e.name&&(q.value[e.name]={id:i.value,pattern:e.errorPattern})},{immediate:!0}),j(R,i),j(M,w(()=>({error:s.value,name:e.name,size:e.size,eagerValidation:e.eagerValidation,validateOnInputDelay:e.validateOnInputDelay,errorPattern:e.errorPattern,hint:e.hint,description:e.description,help:e.help,ariaId:f}))),(a,p)=>(d(),A(t(L),{as:t(e).as,"data-orientation":t(e).orientation,"data-slot":"root",class:c(r.value.root({class:[t(e).ui?.root,t(e).class]}))},{default:x(()=>[u("div",{"data-slot":"wrapper",class:c(r.value.wrapper({class:t(e).ui?.wrapper}))},[t(e).label||n.label?(d(),m("div",{key:0,"data-slot":"labelWrapper",class:c(r.value.labelWrapper({class:t(e).ui?.labelWrapper}))},[y(t(K),{for:i.value,"data-slot":"label",class:c(r.value.label({class:t(e).ui?.label}))},{default:x(()=>[v(a.$slots,"label",{label:t(e).label},()=>[g(l(t(e).label),1)])]),_:3},8,["for","class"]),t(e).hint||n.hint?(d(),m("span",{key:0,id:`${t(f)}-hint`,"data-slot":"hint",class:c(r.value.hint({class:t(e).ui?.hint}))},[v(a.$slots,"hint",{hint:t(e).hint},()=>[g(l(t(e).hint),1)])],10,re)):_("",!0)],2)):_("",!0),t(e).description||n.description?(d(),m("p",{key:1,id:`${t(f)}-description`,"data-slot":"description",class:c(r.value.description({class:t(e).ui?.description}))},[v(a.$slots,"description",{description:t(e).description},()=>[g(l(t(e).description),1)])],10,se)):_("",!0)],2),u("div",{class:c([(t(e).label||!!n.label||t(e).description||!!n.description)&&r.value.container({class:t(e).ui?.container})])},[v(a.$slots,"default",{error:s.value}),t(e).error!==!1&&(typeof s.value=="string"&&s.value||n.error)?(d(),m("div",{key:0,id:`${t(f)}-error`,"data-slot":"error",class:c(r.value.error({class:t(e).ui?.error}))},[v(a.$slots,"error",{error:s.value},()=>[g(l(s.value),1)])],10,oe)):t(e).help||n.help?(d(),m("div",{key:1,id:`${t(f)}-help`,"data-slot":"help",class:c(r.value.help({class:t(e).ui?.help}))},[v(a.$slots,"help",{help:t(e).help},()=>[g(l(t(e).help),1)])],10,le)):_("",!0)],2)]),_:3},8,["as","data-orientation","class"]))}},ie={class:"flex min-h-screen items-center justify-center bg-gray-50 dark:bg-page-dark"},ce={class:"text-center"},ue={class:"mt-2 text-sm text-gray-500 dark:text-gray-400"},de={key:0,class:"text-sm text-red-500"},pe={class:"flex items-center gap-2 text-sm text-gray-600 dark:text-gray-400"},me={class:"text-center text-xs text-gray-400 dark:text-gray-500"},fe={key:0,class:"text-center text-xs text-amber-500 dark:text-amber-400"},ge=G({__name:"index",setup(V){const{t:o}=H(),n=Z(),e=ee(),k=T(),r=b(""),h=b(k.rememberDevice),s=b(""),i=b(!1);function f(a){return!a||!a.startsWith("/")||a.startsWith("/login")?"/":a}async function q(){const a=r.value.trim();if(!a){s.value=o("common.login.errorEmpty");return}i.value=!0,s.value="";try{if(!(await fetch("/api/v1/status",{headers:{Authorization:`Bearer ${a}`}})).ok){s.value=o("common.login.errorInvalid");return}k.login(a,h.value);const $=f(e.query.redirect);n.replace($)}catch{s.value=o("common.login.errorNetwork")}finally{i.value=!1}}return(a,p)=>{const $=X,B=ne,C=J,P=Q;return d(),m("div",ie,[y(t(te),{class:"w-full max-w-sm space-y-6 p-8"},{default:x(()=>[u("div",ce,[p[2]||(p[2]=u("h1",{class:"text-2xl font-bold text-gray-900 dark:text-white"},"ChatLab",-1)),u("p",ue,l(t(o)("common.login.description")),1)]),u("form",{class:"space-y-4",onSubmit:Y(q,["prevent"])},[y(B,{label:t(o)("common.login.tokenLabel")},{default:x(()=>[y($,{modelValue:r.value,"onUpdate:modelValue":p[0]||(p[0]=I=>r.value=I),type:"password",placeholder:t(o)("common.login.tokenPlaceholder"),autocomplete:"off",class:"w-full"},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),s.value?(d(),m("p",de,l(s.value),1)):_("",!0),u("label",pe,[y(C,{modelValue:h.value,"onUpdate:modelValue":p[1]||(p[1]=I=>h.value=I)},null,8,["modelValue"]),u("span",null,l(t(o)("common.login.rememberDevice")),1)]),y(P,{type:"submit",block:"",loading:i.value,color:"primary"},{default:x(()=>[g(l(t(o)("common.login.submit")),1)]),_:1},8,["loading"])],32),u("p",me,l(t(o)("common.login.hint")),1),h.value?(d(),m("p",fe,l(t(o)("common.login.rememberWarning")),1)):_("",!0)]),_:1})])}}});export{ge as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{d as v,A as _,c as b,g as t,F as n,G as e,o as l,Q as y,R as k,E as c,S as x,U as w,V as S,W as V,a as u,X as R,Y as C}from"./index-
|
|
1
|
+
import{d as v,A as _,c as b,g as t,F as n,G as e,o as l,Q as y,R as k,E as c,S as x,U as w,V as S,W as V,a as u,X as R,Y as C}from"./index-YzfjPohq.js";import{P as I}from"./PageHeader-B9B9K9by.js";import{_ as B}from"./TimeSelect.vue_vue_type_script_setup_true_lang-QAZFwx5S.js";import{p as A}from"./annual-summary-time-range-DJ0HWI_t.js";import"./vendor-snapdom--nZvo8Sg.js";import"./dateFormat-p6nibkgt.js";const E={class:"flex h-full flex-col text-gray-900 dark:bg-page-dark dark:text-gray-100",style:{"padding-top":"var(--titlebar-area-height)"}},P=v({__name:"index",setup(T){const{t:a}=_(),r=R(),d=A(),{modelValue:i,componentKey:g,initialState:p,rangeSource:h}=d,s=u(()=>r.name==="insight-time-investment"?"time-investment":r.name==="insight-relationship-changes"?"relationship-changes":"annual-summary"),f=u(()=>[{id:"annual-summary",label:a("insight.tabs.annualSummary"),icon:"i-lucide-calendar-range",to:{name:"insight-annual-summary"}},{id:"time-investment",label:a("insight.tabs.timeInvestment"),icon:"i-lucide-clock-3",to:{name:"insight-time-investment"}},{id:"relationship-changes",label:a("insight.tabs.relationshipChanges"),icon:"i-lucide-git-compare-arrows",to:{name:"insight-relationship-changes"}}]);return(U,m)=>(l(),b("div",E,[t(I,{title:e(a)("insight.title"),icon:"i-heroicons-presentation-chart-bar","icon-class":"bg-pink-600 text-white dark:bg-pink-500 dark:text-white",size:"compact"},{default:n(()=>[t(e(y),{class:"mt-3 pb-1.5","model-value":s.value,items:f.value,"aria-label":e(a)("insight.tabs.nav")},k({_:2},[s.value==="annual-summary"?{name:"right",fn:n(()=>[(l(),c(B,{key:e(g),modelValue:e(i),"onUpdate:modelValue":m[0]||(m[0]=o=>x(i)?i.value=o:null),"range-source":e(h),"allowed-modes":["recent","year"],"allowed-recent-days":[365],"initial-state":e(p)},null,8,["modelValue","range-source","initial-state"]))]),key:"0"}:void 0]),1032,["model-value","items","aria-label"])]),_:1},8,["title"]),t(e(V),null,{default:n(({Component:o})=>[t(w,{name:"insight-tab-slide",mode:"out-in"},{default:n(()=>[(l(),c(S(o),{key:s.value}))]),_:2},1024)]),_:1})]))}}),K=C(P,[["__scopeId","data-v-a94720f4"]]);export{K as default};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/MessageExportModal-
|
|
2
|
-
import{b as S,C as Ce,O as Ae,d as A,o,c as I,n as K,f as s,Z as q,$ as Z,t as g,r as oe,a0 as nt,E as C,K as lt,P as pe,a as y,aA as it,w as z,i as rt,G as e,F as T,g as x,A as J,h as N,J as Ie,H as he,I as X,_ as ge,aT as Oe,aU as We,M as Q,T as le,aV as ut,an as De,aI as ct,aj as Ke,ay as Ue,U as Te,Y as Se,B as Fe,aW as dt,aX as mt,aY as je,ar as qe,al as ze,aZ as vt,R as pt,p as ht,a_ as gt,a4 as ft,aB as yt,ap as bt,S as He,aC as xt,X as kt,am as wt,au as _t,av as $t}from"./index-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/MessageExportModal-CZn3LbeY.js","assets/index-YzfjPohq.js","assets/vendor-snapdom--nZvo8Sg.js","assets/index-DrjoMv9s.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{b as S,C as Ce,O as Ae,d as A,o,c as I,n as K,f as s,Z as q,$ as Z,t as g,r as oe,a0 as nt,E as C,K as lt,P as pe,a as y,aA as it,w as z,i as rt,G as e,F as T,g as x,A as J,h as N,J as Ie,H as he,I as X,_ as ge,aT as Oe,aU as We,M as Q,T as le,aV as ut,an as De,aI as ct,aj as Ke,ay as Ue,U as Te,Y as Se,B as Fe,aW as dt,aX as mt,aY as je,ar as qe,al as ze,aZ as vt,R as pt,p as ht,a_ as gt,a4 as ft,aB as yt,ap as bt,S as He,aC as xt,X as kt,am as wt,au as _t,av as $t}from"./index-YzfjPohq.js";import{b as P,a as ne,c as Ct,d as Ee,e as It,u as Tt,f as Ge,g as St,h as Vt,i as Rt,j as Mt,k as Lt,l as Dt,m as Nt,n as At,C as Ut,o as Ft,L as Bt,D as qt,M as zt}from"./ActionToolsPanel.vue_vue_type_script_setup_true_lang-D1BiZuQL.js";import{u as Ye,y as Ht,j as Xe,s as Et,i as Ze,k as Je,p as Pt,t as Ot,v as Wt}from"./vendor-echarts-B-i_56Av.js";import"./vendor-echarts-wordcloud-Ca8n6qS6.js";import{_ as te}from"./LoadingState.vue_vue_type_script_setup_true_lang-CCK5yTju.js";import{a as Kt}from"./index-dObiAHg6.js";import{_ as jt}from"./ThemeCard.vue_vue_type_script_setup_true_lang-JXMFY6aD.js";import{a as ae,g as Gt,_ as Yt}from"./base-CnuE0ss0.js";import{a as Ne,b as Xt,c as Zt}from"./dateFormat-p6nibkgt.js";import"./vendor-snapdom--nZvo8Sg.js";import"./TimeSelect.vue_vue_type_script_setup_true_lang-QAZFwx5S.js";import"./PageHeader-B9B9K9by.js";import"./vendor-zrender-5DcYjSZk.js";function Jt(l,t={}){const{threshold:a=300,containerSelector:n=".overflow-y-auto",scrollLockDuration:r=800}=t,c=S(l[0]?.id||"");let d=!1;const v=S(null);let m=null;function w(){if(d)return;const u=[];l.forEach(p=>{const $=document.getElementById(p.id);if($){const h=$.getBoundingClientRect();u.push({id:p.id,top:Math.round(h.top)})}});let i=0;for(let p=0;p<u.length;p++){if(u[p].top>a){i=Math.max(0,p-1);break}i=p}c.value=l[i]?.id||""}function f(u){const i=document.getElementById(u);i&&(c.value=u,d=!0,i.scrollIntoView({behavior:"smooth",block:"start"}),setTimeout(()=>{d=!1,w()},r))}return Ce(()=>{m=v.value?.closest(n)||null,m&&(m.addEventListener("scroll",w,{passive:!0}),w())}),Ae(()=>{m&&m.removeEventListener("scroll",w)}),{contentRef:v,activeAnchor:c,scrollToAnchor:f,updateActiveAnchor:w}}function ke(l){return l===0?"text-amber-500 dark:text-amber-400":l===1?"text-gray-500 dark:text-gray-300":l===2?"text-orange-600 dark:text-orange-400":"text-gray-400 dark:text-gray-500"}function we(l){return String(l+1).padStart(2,"0")}function Qt(l){return l===0?"from-amber-400 to-orange-500":l===1?"from-gray-300 to-gray-400":l===2?"from-orange-400 to-amber-600":"from-primary-300 to-primary-500"}const ea={class:"sticky top-24 space-y-6"},ta={class:"border-l border-gray-200 dark:border-gray-800"},aa=["onClick"],sa=A({__name:"PageAnchorsNav",props:{anchors:{},activeAnchor:{},width:{default:"w-44"},hideOnMobile:{type:Boolean,default:!0}},emits:["click"],setup(l,{emit:t}){const a=t;function n(r){a("click",r)}return(r,c)=>(o(),I("div",{class:K([l.width,"shrink-0",l.hideOnMobile?"hidden lg:block":""])},[s("div",ea,[s("nav",null,[s("div",ta,[(o(!0),I(q,null,Z(l.anchors,d=>(o(),I("button",{key:d.id,class:K(["-ml-px block border-l-2 py-1.5 pl-4 text-left text-sm transition-colors",[l.activeAnchor===d.id?"border-pink-500 font-medium text-pink-600 dark:text-pink-400":"border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-300"]]),onClick:v=>n(d.id)},g(d.label),11,aa))),128))])]),oe(r.$slots,"default")])],2))}}),ie=A({__name:"TopNSelect",props:{modelValue:{default:10},modelModifiers:{}},emits:["update:modelValue"],setup(l){const t=nt(l,"modelValue"),a=[{label:"Top 5",value:5},{label:"Top 10",value:10},{label:"Top 20",value:20},{label:"Top 30",value:30},{label:"Top 50",value:50},{label:"Top 100",value:100}];return(n,r)=>{const c=lt;return o(),C(c,{modelValue:t.value,"onUpdate:modelValue":r[0]||(r[0]=d=>t.value=d),items:a,"value-key":"value",class:"w-25"},null,8,["modelValue"])}}}),fe=A({__name:"ScrollableChart",props:{contentHeight:{},maxHeightVh:{default:60},paddingClass:{default:"px-3 py-2"}},setup(l){const t=l,a=y(()=>typeof window>"u"?500:Math.round(window.innerHeight*t.maxHeightVh/100)),n=y(()=>t.contentHeight>a.value),r=y(()=>({maxHeight:`${t.maxHeightVh}vh`,overflowY:n.value?"auto":"hidden"}));return(c,d)=>(o(),I("div",{class:K(l.paddingClass),style:pe(r.value)},[oe(c.$slots,"default")],6))}}),oa=A({__name:"EChartGraph",props:{data:{},height:{default:400},layout:{default:"circular"},directed:{type:Boolean,default:!1}},setup(l,{expose:t}){Ye([Ht,Xe,Et,Ze]);const a=l,n=y(()=>typeof a.height=="number"?`${a.height}px`:a.height),r=it(),c=S(null);let d=null;const v=["#ee4567","#5470c6","#91cc75","#fac858","#ee6666","#73c0de","#9a60b4","#fc8452","#3ba272","#ea7ccc","#6e7074","#546570"],m=y(()=>{const b=new Set;return a.data.nodes.filter(k=>b.has(k.name)?!1:(b.add(k.name),!0))}),w=y(()=>{const b=new Map;return m.value.forEach((k,_)=>{b.set(k.name,v[_%v.length])}),b});function f(b,k){return k<=0?1:1+b/k*5}const u=y(()=>{const b=a.data.maxLinkValue||Math.max(...a.data.links.map(k=>k.value||1),1);return{tooltip:{trigger:"item",backgroundColor:r.value?"rgba(30, 30, 30, 0.9)":"rgba(255, 255, 255, 0.95)",borderColor:r.value?"rgba(255, 255, 255, 0.1)":"rgba(0, 0, 0, 0.1)",textStyle:{color:r.value?"#e5e7eb":"#374151"},formatter:k=>k.dataType==="node"?`<b>${k.data.name}</b><br/>消息数: ${k.data.value||0}`:k.dataType==="edge"?`${k.data.source} → ${k.data.target}<br/>艾特次数: ${k.data.value||0}`:""},animationDuration:1e3,animationDurationUpdate:500,animationEasingUpdate:"quinticInOut",series:[{type:"graph",layout:a.layout,circular:a.layout==="circular"?{rotateLabel:!0}:void 0,force:a.layout==="force"?{repulsion:300,gravity:.1,edgeLength:[80,200],friction:.6}:void 0,roam:!0,scaleLimit:{min:.3,max:3},draggable:!0,label:{show:!0,position:"right",formatter:"{b}",color:r.value?"#e5e7eb":"#374151",fontSize:11,fontWeight:500},edgeSymbol:a.directed?["none","arrow"]:["none","none"],edgeSymbolSize:a.directed?[0,10]:[0,0],lineStyle:{curveness:.3,opacity:.5},emphasis:{focus:"adjacency",label:{show:!0,fontSize:13,fontWeight:600},lineStyle:{width:4,opacity:.9},itemStyle:{shadowBlur:15,shadowColor:"rgba(0, 0, 0, 0.3)"}},data:m.value.map(k=>{const _=w.value.get(k.name)||v[0];return{name:k.name,value:k.value,symbolSize:k.symbolSize||30,label:{show:a.layout==="circular"?!0:(k.symbolSize||30)>30},itemStyle:{color:_,borderColor:"#fff",borderWidth:2,shadowBlur:5,shadowColor:`${_}66`}}}),links:a.data.links.filter(k=>w.value.has(k.source)&&w.value.has(k.target)).map(k=>{const _=w.value.get(k.source)||v[0];return{source:k.source,target:k.target,value:k.value,lineStyle:{color:_,width:f(k.value||1,b)}}})}]}});function i(){c.value&&(d=Je(c.value,r.value?"dark":void 0,{renderer:"canvas"}),d.setOption({backgroundColor:"transparent",...u.value}))}function p(){d&&d.setOption({backgroundColor:"transparent",...u.value},{notMerge:!0})}function $(){d?.resize()}function h(){d&&d.dispatchAction({type:"restore"})}return t({resetView:h}),z([()=>a.data,()=>a.layout,()=>a.directed,r],()=>{d?p():i()},{deep:!0}),Ce(()=>{i(),window.addEventListener("resize",$)}),Ae(()=>{window.removeEventListener("resize",$),d?.dispose()}),(b,k)=>(o(),I("div",{ref_key:"chartRef",ref:c,style:pe({height:n.value,width:"100%"})},null,4))}}),Qe=Symbol("ranking-width-mode"),et={standard:{contentClass:"max-w-3xl",gridLeft:110,labelMaxLength:8},wide:{contentClass:"max-w-5xl",gridLeft:180,labelMaxLength:16},full:{contentClass:"max-w-none",gridLeft:260,labelMaxLength:28}};function ye(){const l=rt(Qe,null);return y(()=>et[l?.value??"standard"])}function be(l,t){return l.length<=t?l:`${l.slice(0,t)}…`}const na={class:"px-3 py-2"},Ve=A({__name:"EChartRank",props:{members:{},title:{},description:{},topN:{default:10},unit:{default:"条"},height:{default:"auto"},maxHeightVh:{default:60},bare:{type:Boolean,default:!1}},setup(l){const t=l,a=ye(),n=y(()=>t.members.slice(0,t.topN)),r=y(()=>{if(t.height!=="auto")return t.height;const v=n.value.length*36;return Math.max(v+30,180)}),c={type:"linear",x:0,y:0,x2:1,y2:0,colorStops:[{offset:0,color:"#ee4567"},{offset:1,color:"#f7758c"}]},d=y(()=>{const v=[...n.value].reverse(),m=v.map(i=>be(i.name,a.value.labelMaxLength)),w=v.map(i=>i.value),f=Math.max(...w,1),u=v.map(i=>({value:i.value,itemStyle:{color:c,borderRadius:[0,4,4,0]}}));return{tooltip:{trigger:"axis",axisPointer:{type:"shadow"},backgroundColor:"rgba(0, 0, 0, 0.8)",borderColor:"transparent",textStyle:{color:"#fff"},formatter:i=>{const p=i[0];if(!p)return"";const $=n.value.length-1-p.dataIndex,h=n.value[$];return`
|
|
3
3
|
<div style="padding: 4px 8px;">
|
|
4
4
|
<div style="font-weight: bold; margin-bottom: 4px;">${h.name}</div>
|
|
5
5
|
<div>${h.value} ${t.unit} (${h.percentage}%)</div>
|
|
@@ -61,4 +61,4 @@ import{b as S,C as Ce,O as Ae,d as A,o,c as I,n as K,f as s,Z as q,$ as Z,t as g
|
|
|
61
61
|
<div><span style="color: ${c.h3to4};">●</span> 3-4点: ${$.h3to4} 条</div>
|
|
62
62
|
</div>
|
|
63
63
|
</div>
|
|
64
|
-
`}},legend:{show:!0,bottom:0,itemWidth:12,itemHeight:12,textStyle:{color:"#6b7280",fontSize:10}},grid:{left:a.value.gridLeft,right:70,top:15,bottom:35,containLabel:!1},xAxis:{type:"value",max:w*1.15,axisLine:{show:!1},axisTick:{show:!1},axisLabel:{show:!1},splitLine:{show:!1}},yAxis:{type:"category",data:m,axisLine:{show:!1},axisTick:{show:!1},axisLabel:{fontSize:12,color:"#4b5563",margin:12,formatter:(f,u)=>{const p=n.value.length-1-u+1;return`${p===1?"🥇":p===2?"🥈":p===3?"🥉":`${p}.`} ${f}`}}},series:[{name:"23点",type:"bar",stack:"total",data:v.map(f=>f.hourlyBreakdown.h23),itemStyle:{color:c.h23},barWidth:18},{name:"0点",type:"bar",stack:"total",data:v.map(f=>f.hourlyBreakdown.h0),itemStyle:{color:c.h0},barWidth:18},{name:"1点",type:"bar",stack:"total",data:v.map(f=>f.hourlyBreakdown.h1),itemStyle:{color:c.h1},barWidth:18},{name:"2点",type:"bar",stack:"total",data:v.map(f=>f.hourlyBreakdown.h2),itemStyle:{color:c.h2},barWidth:18},{name:"3-4点",type:"bar",stack:"total",data:v.map(f=>f.hourlyBreakdown.h3to4),itemStyle:{color:c.h3to4,borderRadius:[0,4,4,0]},barWidth:18,label:{show:!0,position:"right",distance:8,formatter:f=>{const u=n.value.length-1-f.dataIndex;return`${n.value[u].totalNightMessages} 条`},fontSize:11,fontWeight:500,color:"#6b7280"}}]}});return(v,m)=>l.bare?(o(),C(e(fe),{key:0,"content-height":r.value,"max-height-vh":l.maxHeightVh},{default:T(()=>[x(e(ae),{option:d.value,height:r.value},null,8,["option","height"])]),_:1},8,["content-height","max-height-vh"])):(o(),C(e(P),{key:1,title:l.title,description:l.description,scrollable:"","max-height-vh":l.maxHeightVh},{default:T(()=>[s("div",In,[x(e(ae),{option:d.value,height:r.value},null,8,["option","height"])])]),_:1},8,["title","description","max-height-vh"]))}}),Sn={id:"streak-rank",class:"scroll-mt-24"},Vn={class:"flex items-center gap-3"},Rn=A({__name:"CheckInRank",props:{sessionId:{},timeFilter:{},showTopNSelect:{type:Boolean,default:!0},globalTopN:{}},setup(l){const t=l,a=S(null),n=S(!1),r=S("max"),c=S(t.globalTopN??10);z(()=>t.globalTopN,f=>{f!==void 0&&(c.value=f)});const d=y(()=>r.value==="max"?"🔥 火花榜 - 最长连续":"🔥 火花榜 - 当前连续"),v=y(()=>r.value==="max"?"历史最长连续发言天数":"正在持续连续发言的成员"),m=y(()=>a.value?a.value.streakRank.some(f=>f.currentStreak>0):!1);async function w(){if(t.sessionId){n.value=!0;try{a.value=await Q().getCheckInAnalysis(t.sessionId,t.timeFilter)}catch(f){console.error("加载打卡分析失败:",f)}finally{n.value=!1}}}return z(()=>[t.sessionId,t.timeFilter],()=>{w()},{immediate:!0,deep:!0}),(f,u)=>(o(),I("div",Sn,[n.value?(o(),C(e(te),{key:0,text:"正在分析数据..."})):a.value&&a.value.streakRank.length>0?(o(),C(e(P),{key:1,title:d.value,description:v.value},{headerRight:T(()=>[s("div",Vn,[l.showTopNSelect?(o(),C(e(ie),{key:0,modelValue:c.value,"onUpdate:modelValue":u[0]||(u[0]=i=>c.value=i)},null,8,["modelValue"])):N("",!0),m.value?(o(),C(e(le),{key:1,modelValue:r.value,"onUpdate:modelValue":u[1]||(u[1]=i=>r.value=i),items:[{label:"最长连续",value:"max"},{label:"当前连续",value:"current"}],size:"sm"},null,8,["modelValue"])):N("",!0)])]),default:T(()=>[x(e(gn),{items:a.value.streakRank,title:d.value,mode:r.value,"top-n":c.value,bare:""},null,8,["items","title","mode","top-n"])]),_:1},8,["title","description"])):(o(),C(e(P),{key:2,title:"🔥 火花榜"},{default:T(()=>[x(e(ne),{text:"暂无连续发言数据"})]),_:1}))]))}}),Mn={class:"flex items-center gap-3"},Ln={key:1,class:"py-8 text-center text-sm text-gray-400"},Dn={key:1,class:"py-8 text-center text-sm text-gray-400"},Nn=A({__name:"MemeBattleRank",props:{sessionId:{},timeFilter:{},showTopNSelect:{type:Boolean,default:!0},globalTopN:{}},setup(l){const t=l,a=S(null),n=S(!1),r=S("count"),c=S(t.globalTopN??10);z(()=>t.globalTopN,p=>{p!==void 0&&(c.value=p)});async function d(){if(t.sessionId){n.value=!0;try{a.value=await Q().getMemeBattleAnalysis(t.sessionId,t.timeFilter)}catch(p){console.error("加载斗图分析失败:",p)}finally{n.value=!1}}}const v=y(()=>a.value?a.value.rankByCount.map(p=>({id:p.memberId.toString(),name:p.name,value:p.count,percentage:p.percentage})):[]),m=y(()=>a.value?a.value.rankByImageCount.map(p=>({id:p.memberId.toString(),name:p.name,value:p.count,percentage:p.percentage})):[]),w=y(()=>r.value==="count"?v.value:m.value),f=y(()=>r.value==="count"?"场":"张"),u=y(()=>{switch(r.value){case"battle":return"⚔️ 斗图榜 - 史诗级战役";case"count":return"⚔️ 斗图榜 - 按场次";case"image":return"⚔️ 斗图榜 - 按图量";default:return"⚔️ 斗图榜"}}),i=y(()=>{switch(r.value){case"battle":return"记录最激烈的斗图大战";case"count":return"参与斗图次数最多的人";case"image":return"在斗图中发送图片最多的人";default:return""}});return z(()=>[t.sessionId,t.timeFilter],()=>d(),{immediate:!0,deep:!0}),(p,$)=>n.value?(o(),C(e(te),{key:0,text:"正在统计斗图数据..."})):a.value?(o(),C(e(P),{key:1,title:u.value,description:i.value},{headerRight:T(()=>[s("div",Mn,[l.showTopNSelect?(o(),C(e(ie),{key:0,modelValue:c.value,"onUpdate:modelValue":$[0]||($[0]=h=>c.value=h)},null,8,["modelValue"])):N("",!0),x(e(le),{modelValue:r.value,"onUpdate:modelValue":$[1]||($[1]=h=>r.value=h),items:[{label:"按场次",value:"count"},{label:"按图量",value:"image"},{label:"史诗级战役",value:"battle"}],size:"sm"},null,8,["modelValue"])])]),default:T(()=>[r.value==="battle"?(o(),I(q,{key:0},[a.value.topBattles.length>0?(o(),C(e(yn),{key:0,battles:a.value.topBattles,title:"","top-n":c.value,bare:""},null,8,["battles","top-n"])):(o(),I("div",Ln,"暂无史诗级战役数据"))],64)):(o(),I(q,{key:1},[w.value.length>0?(o(),C(e(Ve),{key:0,members:w.value,title:u.value,unit:f.value,"top-n":c.value,bare:""},null,8,["members","title","unit","top-n"])):(o(),I("div",Dn,"暂无斗图数据"))],64))]),_:1},8,["title","description"])):N("",!0)}}),An={class:"space-y-6"},Un={class:"flex items-center gap-3"},Fn={class:"flex items-center gap-3"},Bn={key:1,class:"px-3 py-2"},qn=A({__name:"RepeatSection",props:{sessionId:{},timeFilter:{},showTopNSelect:{type:Boolean,default:!0},globalTopN:{}},setup(l){const t=l,a=S(null),n=S(!1),r=S("originator"),c=S("fastest"),d=S(t.globalTopN??10),v=S(t.globalTopN??10);z(()=>t.globalTopN,_=>{_!==void 0&&(d.value=_,v.value=_)});async function m(){if(t.sessionId){n.value=!0;try{a.value=await Q().getRepeatAnalysis(t.sessionId,t.timeFilter)}catch(_){console.error("加载复读分析失败:",_)}finally{n.value=!1}}}const w=y(()=>a.value?a.value.originators.map(_=>({id:_.memberId.toString(),name:_.name,value:_.count,percentage:_.percentage})):[]),f=y(()=>a.value?a.value.initiators.map(_=>({id:_.memberId.toString(),name:_.name,value:_.count,percentage:_.percentage})):[]),u=y(()=>a.value?a.value.breakers.map(_=>({id:_.memberId.toString(),name:_.name,value:_.count,percentage:_.percentage})):[]),i=y(()=>{switch(r.value){case"originator":return w.value;case"initiator":return f.value;case"breaker":return u.value;default:return w.value}}),p=y(()=>{switch(r.value){case"originator":return"🔁 复读榜 - 被复读";case"initiator":return"🔁 复读榜 - 挑起";case"breaker":return"🔁 复读榜 - 打断";default:return"🔁 复读榜"}}),$=y(()=>{switch(r.value){case"originator":return"发出的消息被别人复读的次数";case"initiator":return"第二个发送相同消息、带起节奏的人";case"breaker":return"终结复读链的人";default:return""}}),h=y(()=>{if(!a.value)return{labels:[],values:[]};const _=a.value.chainLengthDistribution;return{labels:_.map(V=>`${V.length}人`),values:_.map(V=>V.count)}}),b=y(()=>c.value==="fastest"?"📊 复读统计 - 最快反应":"📊 复读统计 - 链长分布"),k=y(()=>{if(c.value==="fastest")return"平均复读反应时间(至少参与5次复读)";const _=a.value?.totalRepeatChains??0,V=a.value?.avgChainLength??0;return`共 ${_} 次复读,平均 ${V} 人参与`});return z(()=>[t.sessionId,t.timeFilter],()=>m(),{immediate:!0,deep:!0}),(_,V)=>(o(),I("div",An,[n.value?(o(),C(e(te),{key:0,text:"正在分析复读数据..."})):a.value&&a.value.totalRepeatChains>0?(o(),I(q,{key:1},[x(e(P),{title:p.value,description:$.value},{headerRight:T(()=>[s("div",Un,[l.showTopNSelect?(o(),C(e(ie),{key:0,modelValue:d.value,"onUpdate:modelValue":V[0]||(V[0]=O=>d.value=O)},null,8,["modelValue"])):N("",!0),x(e(le),{modelValue:r.value,"onUpdate:modelValue":V[1]||(V[1]=O=>r.value=O),items:[{label:"被复读",value:"originator"},{label:"挑起",value:"initiator"},{label:"打断",value:"breaker"}],size:"sm"},null,8,["modelValue"])])]),default:T(()=>[i.value.length>0?(o(),C(e(Ve),{key:0,members:i.value,title:p.value,unit:"次","top-n":d.value,bare:""},null,8,["members","title","top-n"])):(o(),C(e(ne),{key:1,text:"暂无数据"}))]),_:1},8,["title","description"]),x(e(P),{title:b.value,description:k.value},{headerRight:T(()=>[s("div",Fn,[l.showTopNSelect&&c.value==="fastest"?(o(),C(e(ie),{key:0,modelValue:v.value,"onUpdate:modelValue":V[2]||(V[2]=O=>v.value=O)},null,8,["modelValue"])):N("",!0),x(e(le),{modelValue:c.value,"onUpdate:modelValue":V[3]||(V[3]=O=>c.value=O),items:[{label:"最快反应",value:"fastest"},{label:"链长分布",value:"distribution"}],size:"sm"},null,8,["modelValue"])])]),default:T(()=>[c.value==="fastest"?(o(),I(q,{key:0},[a.value.fastestRepeaters&&a.value.fastestRepeaters.length>0?(o(),C(e(xn),{key:0,items:a.value.fastestRepeaters,"top-n":v.value,title:"",bare:""},null,8,["items","top-n"])):(o(),C(e(ne),{key:1,text:"暂无最快复读数据"}))],64)):(o(),I("div",Bn,[h.value.labels.length>0?(o(),C(e(Yt),{key:0,data:h.value,height:200},null,8,["data"])):(o(),C(e(ne),{key:1,text:"暂无分布数据"}))]))]),_:1},8,["title","description"])],64)):(o(),C(e(P),{key:2,title:"🔁 复读榜"},{default:T(()=>[x(e(ne),{text:"该群组暂无复读记录"})]),_:1}))]))}}),zn=A({__name:"DivingRank",props:{sessionId:{},timeFilter:{},globalTopN:{}},setup(l){const t=l,a=S(null),n=S(!1);async function r(){if(t.sessionId){n.value=!0;try{a.value=await Q().getDivingAnalysis(t.sessionId,t.timeFilter)}catch(c){console.error("加载潜水分析失败:",c)}finally{n.value=!1}}}return z(()=>[t.sessionId,t.timeFilter],()=>r(),{immediate:!0,deep:!0}),(c,d)=>n.value?(o(),C(e(te),{key:0,text:"正在统计潜水数据..."})):a.value&&a.value.rank.length>0?(o(),C(e(_n),{key:1,items:a.value.rank,"global-top-n":l.globalTopN},null,8,["items","global-top-n"])):N("",!0)}}),Hn={class:"space-y-6"},En={class:"flex items-center gap-3"},Pn={key:1,class:"py-8 text-center text-sm text-gray-400"},On={key:1,class:"py-8 text-center text-sm text-gray-400"},Wn={class:"flex items-center gap-3"},Kn={key:1,class:"py-8 text-center text-sm text-gray-400"},jn=A({__name:"NightOwlRank",props:{sessionId:{},timeFilter:{},showTopNSelect:{type:Boolean,default:!0},globalTopN:{}},setup(l){const t=l,a=S(null),n=S(!1),r=S("first"),c=S("distribution"),d=S(t.globalTopN??10),v=S(t.globalTopN??10);z(()=>t.globalTopN,b=>{b!==void 0&&(d.value=b,v.value=b)});async function m(){if(t.sessionId){n.value=!0;try{a.value=await Q().getNightOwlAnalysis(t.sessionId,t.timeFilter)}catch(b){console.error("加载出勤分析失败:",b)}finally{n.value=!1}}}const w=y(()=>a.value?a.value.lastSpeakerRank.map(b=>({id:String(b.memberId),name:b.name,value:b.count,percentage:b.percentage})):[]),f=y(()=>a.value?a.value.firstSpeakerRank.map(b=>({id:String(b.memberId),name:b.name,value:b.count,percentage:b.percentage})):[]),u=y(()=>r.value==="last"?w.value:f.value),i=y(()=>r.value==="last"?"⏰ 出勤排行 - 最晚下班":"⏰ 出勤排行 - 最早上班"),p=y(()=>{const b=a.value?.totalDays??0;return r.value==="last"?`每天最后一个发言的人(共 ${b} 天)`:`每天第一个发言的人(共 ${b} 天)`}),$=y(()=>c.value==="distribution"?"🦉 修仙统计 - 发言分布":"🦉 修仙统计 - 连续记录"),h=y(()=>c.value==="distribution"?"深夜时段(23:00-05:00)各时段发言分布":"连续在深夜时段发言的天数");return z(()=>[t.sessionId,t.timeFilter],()=>m(),{immediate:!0,deep:!0}),(b,k)=>(o(),I("div",Hn,[n.value?(o(),C(e(te),{key:0,text:"正在加载出勤分析..."})):a.value?(o(),I(q,{key:1},[x(e(P),{title:$.value,description:h.value},{headerRight:T(()=>[s("div",En,[l.showTopNSelect?(o(),C(e(ie),{key:0,modelValue:d.value,"onUpdate:modelValue":k[0]||(k[0]=_=>d.value=_)},null,8,["modelValue"])):N("",!0),x(e(le),{modelValue:c.value,"onUpdate:modelValue":k[1]||(k[1]=_=>c.value=_),items:[{label:"发言分布",value:"distribution"},{label:"连续记录",value:"consecutive"}],size:"sm"},null,8,["modelValue"])])]),default:T(()=>[c.value==="distribution"?(o(),I(q,{key:0},[a.value.nightOwlRank.length>0?(o(),C(e(Tn),{key:0,items:a.value.nightOwlRank,"top-n":d.value,title:"",bare:""},null,8,["items","top-n"])):(o(),I("div",Pn,"暂无深夜发言数据"))],64)):(o(),I(q,{key:1},[a.value.consecutiveRecords.length>0?(o(),C(e(Cn),{key:0,items:a.value.consecutiveRecords,"top-n":d.value,title:"",bare:""},null,8,["items","top-n"])):(o(),I("div",On,"暂无连续记录"))],64))]),_:1},8,["title","description"]),x(e(P),{title:i.value,description:p.value},{headerRight:T(()=>[s("div",Wn,[l.showTopNSelect?(o(),C(e(ie),{key:0,modelValue:v.value,"onUpdate:modelValue":k[2]||(k[2]=_=>v.value=_)},null,8,["modelValue"])):N("",!0),x(e(le),{modelValue:r.value,"onUpdate:modelValue":k[3]||(k[3]=_=>r.value=_),items:[{label:"最早上班",value:"first"},{label:"最晚下班",value:"last"}],size:"sm"},null,8,["modelValue"])])]),default:T(()=>[u.value.length>0?(o(),C(e(Ve),{key:0,members:u.value,title:i.value,"top-n":v.value,unit:"次",bare:""},null,8,["members","title","top-n"])):(o(),I("div",Kn,"暂无数据"))]),_:1},8,["title","description"])],64)):N("",!0)]))}}),Gn={class:"mb-8 mt-4"},Yn={class:"text-5xl tracking-wider",style:{"font-weight":"800",background:"linear-gradient(to right, #f59e0b, #ec4899, #9333ea)","-webkit-background-clip":"text","-webkit-text-fill-color":"transparent"}},Xn={id:"activity-rank",class:"scroll-mt-24"},Zn={id:"meme-battle",class:"scroll-mt-24"},Jn={id:"repeat",class:"scroll-mt-24"},Qn={id:"night-owl",class:"scroll-mt-24"},el={id:"diving",class:"scroll-mt-24"},tl={class:"border-l border-gray-200 pl-4 dark:border-gray-800"},al={class:"mt-4 border-l border-gray-200 pl-4 dark:border-gray-800"},sl={class:"flex rounded-lg border border-gray-200 bg-white p-0.5 text-xs dark:border-gray-700 dark:bg-page-dark"},ol=["onClick"],nl=A({__name:"OverallRankingTab",props:{sessionId:{},timeFilter:{}},setup(l){const t=l,a=S([]),n=S([]);async function r(){if(!t.sessionId)return;const h=Q(),[b,k]=await Promise.all([h.getMemberActivity(t.sessionId,t.timeFilter),h.getAvailableYears(t.sessionId)]);a.value=b,n.value=k}z(()=>[t.sessionId,t.timeFilter],()=>r(),{immediate:!0,deep:!0});const c=y(()=>{if(t.timeFilter?.startTs&&t.timeFilter?.endTs){const h=new Date(t.timeFilter.startTs*1e3).getFullYear(),b=new Date(t.timeFilter.endTs*1e3).getFullYear();return h===b?`${h} 赛季`:`${h}-${b} 赛季`}if(n.value.length>0){const h=[...n.value].sort((_,V)=>_-V),b=h[0],k=h[h.length-1];return b===k?`${b} 赛季`:`${b}-${k} 赛季`}return"全部赛季"}),d=y(()=>({startTs:t.timeFilter?.startTs,endTs:t.timeFilter?.endTs})),v=[{id:"activity-rank",label:"🏆 活跃榜"},{id:"streak-rank",label:"🔥 火花榜"},{id:"meme-battle",label:"⚔️ 斗图榜"},{id:"repeat",label:"🔁 复读榜"},{id:"night-owl",label:"⏰ 出勤榜"},{id:"diving",label:"🤿 潜水榜"}],{contentRef:m,activeAnchor:w,scrollToAnchor:f}=Jt(v,{threshold:350}),u=S(10),i=S("standard");ht(Qe,i);const p=[{value:"standard",label:"标准"},{value:"wide",label:"宽屏"},{value:"full",label:"全宽"}],$=y(()=>et[i.value].contentClass);return(h,b)=>(o(),I("div",{ref_key:"contentRef",ref:m,class:"flex gap-6 p-6"},[s("div",{class:K(["main-content mx-auto min-w-0 flex-1 space-y-6 px-8",$.value])},[s("div",Gn,[s("h1",Yn," 🏆 "+g(c.value),1),b[1]||(b[1]=s("p",{class:"mt-4 text-sm text-gray-500 dark:text-gray-400"},"各榜单前三名请找群主领取奖励 🎁",-1))]),s("div",Xn,[x(e(mn),{"session-id":t.sessionId,"member-activity":a.value,"time-filter":d.value,"global-top-n":u.value},null,8,["session-id","member-activity","time-filter","global-top-n"])]),x(e(Rn),{"session-id":t.sessionId,"time-filter":d.value,"global-top-n":u.value},null,8,["session-id","time-filter","global-top-n"]),s("div",Zn,[x(e(Nn),{"session-id":t.sessionId,"time-filter":d.value,"global-top-n":u.value},null,8,["session-id","time-filter","global-top-n"])]),s("div",Jn,[x(e(qn),{"session-id":t.sessionId,"time-filter":d.value,"global-top-n":u.value},null,8,["session-id","time-filter","global-top-n"])]),s("div",Qn,[x(e(jn),{"session-id":t.sessionId,"time-filter":d.value,"global-top-n":u.value},null,8,["session-id","time-filter","global-top-n"])]),s("div",el,[x(e(zn),{"session-id":t.sessionId,"time-filter":d.value,"global-top-n":u.value},null,8,["session-id","time-filter","global-top-n"])]),b[2]||(b[2]=s("div",{class:"h-48 no-capture"},null,-1))],2),x(e(sa),{anchors:v,"active-anchor":e(w),onClick:e(f)},{default:T(()=>[s("div",tl,[b[3]||(b[3]=s("div",{class:"mb-2 text-xs text-gray-400"},"显示数量",-1)),x(e(ie),{modelValue:u.value,"onUpdate:modelValue":b[0]||(b[0]=k=>u.value=k)},null,8,["modelValue"])]),s("div",al,[b[4]||(b[4]=s("div",{class:"mb-2 text-xs text-gray-400"},"榜单宽度",-1)),s("div",sl,[(o(),I(q,null,Z(p,k=>s("button",{key:k.value,type:"button",class:K(["rounded-md px-2 py-1 transition",i.value===k.value?"bg-pink-500 text-white shadow-sm":"text-gray-500 hover:bg-gray-100 dark:text-gray-400 dark:hover:bg-gray-800"]),onClick:_=>i.value=k.value},g(k.label),11,ol)),64))])])]),_:1},8,["active-anchor","onClick"])],512))}}),ll={class:"flex h-full flex-col"},il={class:"min-h-0 flex-1 overflow-y-auto"},rl={key:1,class:"main-content mx-auto w-full max-w-3xl p-6"},ul=A({__name:"RankingView",props:{sessionId:{},timeFilter:{}},setup(l){const t=l,{t:a,locale:n}=J(),r=S("overall"),c=S(null),d=y(()=>gt("groupRanking",n.value)),v=y(()=>[...d.value?[{id:"overall",label:a("analysis.subTabs.ranking.overall"),icon:"i-heroicons-trophy"}]:[],{id:"hot-repeat",label:a("analysis.subTabs.quotes.hotRepeat"),icon:"i-heroicons-sparkles"},{id:"catchphrase",label:a("analysis.subTabs.quotes.catchphrase"),icon:"i-heroicons-chat-bubble-bottom-center-text"},{id:"keyword",label:a("analysis.subTabs.ranking.keyword"),icon:"i-heroicons-magnifying-glass"}]),m=y(()=>({startTs:t.timeFilter?.startTs,endTs:t.timeFilter?.endTs})),w=y(()=>({...m.value,memberId:c.value}));return z(v,f=>{f.some(u=>u.id===r.value)||(r.value=f[0]?.id??"hot-repeat")},{immediate:!0}),(f,u)=>(o(),I("div",ll,[x(e(Ue),{modelValue:r.value,"onUpdate:modelValue":u[1]||(u[1]=i=>r.value=i),items:v.value,"persist-key":"groupRankingTab"},{right:T(()=>[r.value==="catchphrase"?(o(),C(Ge,{key:0,modelValue:c.value,"onUpdate:modelValue":u[0]||(u[0]=i=>c.value=i),"session-id":t.sessionId},null,8,["modelValue","session-id"])):N("",!0)]),_:1},8,["modelValue","items"]),s("div",il,[x(Te,{name:"fade",mode:"out-in"},{default:T(()=>[r.value==="overall"?(o(),C(nl,{key:0,"session-id":t.sessionId,"time-filter":m.value},null,8,["session-id","time-filter"])):r.value==="keyword"?(o(),I("div",rl,[x(un,{"session-id":t.sessionId,"time-filter":m.value},null,8,["session-id","time-filter"])])):r.value==="hot-repeat"?(o(),C(e(ko),{key:2,"session-id":t.sessionId,"time-filter":m.value},null,8,["session-id","time-filter"])):r.value==="catchphrase"?(o(),C(e(ro),{key:3,"session-id":t.sessionId,"time-filter":w.value},null,8,["session-id","time-filter"])):N("",!0)]),_:1})])]))}}),cl=Se(ul,[["__scopeId","data-v-d8d145dc"]]),dl={class:"main-content max-w-5xl p-6"},ml={class:"mb-4 text-sm text-gray-500 dark:text-gray-400 no-capture"},vl={key:0,class:"divide-y divide-gray-100 dark:divide-gray-800"},pl={class:"w-32 shrink-0 pt-0.5 font-medium text-gray-900 dark:text-white"},hl={class:"flex flex-1 flex-wrap items-center gap-2"},gl={class:"flex items-center gap-1.5 rounded-lg bg-gray-50 px-3 py-1.5 dark:bg-gray-800"},fl={class:"text-xs text-gray-400"},yl={key:0,class:"text-gray-300 dark:text-gray-600"},bl=A({__name:"NicknameHistory",props:{sessionId:{}},setup(l){const{t}=J(),a=l,n=S([]),r=S([]),c=S(!1);function d(w){return w.groupNickname||w.accountName||w.platformId}async function v(){if(a.sessionId)try{n.value=await Q().getMembers(a.sessionId)}catch(w){console.error("加载成员列表失败:",w)}}async function m(){if(!a.sessionId||n.value.length===0)return;c.value=!0;const w=[];try{const f=n.value.map(i=>Q().getMemberNameHistory(a.sessionId,i.id)),u=await Promise.all(f);n.value.forEach((i,p)=>{const $=u[p];$.length>2&&w.push({memberId:i.id,name:d(i),history:$})}),r.value=w}catch(f){console.error("加载昵称变更记录失败:",f)}finally{c.value=!1}}return z(()=>a.sessionId,async()=>{await v()},{immediate:!0}),z(()=>n.value.length,()=>{n.value.length>0&&m()}),Ce(async()=>{n.value.length===0&&await v()}),(w,f)=>{const u=je;return o(),I("div",dl,[s("p",ml,g(e(t)("members.nicknameHistory.note")),1),x(e(P),{title:e(t)("members.nicknameHistory.title"),description:c.value?e(t)("members.nicknameHistory.loading"):r.value.length>0?e(t)("members.nicknameHistory.hasChanges",{count:r.value.length}):e(t)("members.nicknameHistory.noChanges")},{default:T(()=>[!c.value&&r.value.length>0?(o(),I("div",vl,[(o(!0),I(q,null,Z(r.value,i=>(o(),I("div",{key:i.memberId,class:"flex items-start gap-3 px-5 py-3"},[s("div",pl,g(i.name),1),s("div",hl,[(o(!0),I(q,null,Z(i.history,(p,$)=>(o(),I(q,{key:$},[s("div",gl,[s("span",{class:K(["text-sm",p.endTs===null?"font-semibold text-pink-600":"text-gray-700 dark:text-gray-300"])},g(p.name),3),p.endTs===null?(o(),C(u,{key:0,color:"primary",variant:"soft",size:"xs"},{default:T(()=>[X(g(e(t)("members.nicknameHistory.current")),1)]),_:1})):N("",!0),s("span",fl,"("+g(e(Zt)(p.startTs,p.endTs))+")",1)]),$<i.history.length-1?(o(),I("span",yl,"→")):N("",!0)],64))),128))])]))),128))])):c.value?(o(),C(e(te),{key:2,text:e(t)("members.nicknameHistory.loadingText")},null,8,["text"])):(o(),C(e(ne),{key:1,text:e(t)("members.nicknameHistory.empty")},null,8,["text"]))]),_:1},8,["title","description"])])}}}),xl={class:"flex h-full flex-col overflow-hidden bg-white dark:bg-page-dark"},kl={class:"flex flex-none items-center justify-between border-b border-gray-200 px-5 py-3 dark:border-gray-700"},wl={class:"text-lg font-semibold text-gray-900 dark:text-white"},_l={class:"flex-1 overflow-auto"},$l=A({__name:"NicknameHistoryEntry",props:{sessionId:{}},setup(l){const{t}=J(),a=l,n=S(!1);return(r,c)=>{const d=he,v=Ie;return o(),I(q,null,[x(d,{variant:"ghost",icon:"i-heroicons-clock",size:"sm",onClick:c[0]||(c[0]=m=>n.value=!0)},{default:T(()=>[X(g(e(t)("analysis.subTabs.member.nicknameHistory")),1)]),_:1}),a.sessionId?(o(),C(v,{key:0,open:n.value,"onUpdate:open":c[2]||(c[2]=m=>n.value=m),ui:{content:"max-w-6xl h-[85vh]"}},{content:T(()=>[s("div",xl,[s("div",kl,[s("h2",wl,g(e(t)("analysis.subTabs.member.nicknameHistory")),1),x(d,{variant:"ghost",icon:"i-heroicons-x-mark",size:"sm",onClick:c[1]||(c[1]=m=>n.value=!1)})]),s("div",_l,[x(bl,{"session-id":a.sessionId},null,8,["session-id"])])])]),_:1},8,["open"])):N("",!0)],64)}}}),Cl={class:"flex h-full flex-col dark:bg-page-dark",style:{"padding-top":"var(--titlebar-area-height)"}},Il={class:"relative flex-1 overflow-y-auto"},Tl={class:"h-full"},Sl={key:2,class:"flex h-full items-center justify-center"},Vl={class:"text-gray-500"},Rl={class:"flex h-full flex-col overflow-hidden bg-white dark:bg-page-dark"},Ml={class:"flex flex-none items-center justify-between border-b border-gray-200 px-5 py-3 dark:border-gray-700"},Ll={class:"text-lg font-semibold text-gray-900 dark:text-white"},Dl={class:"text-sm text-gray-500 dark:text-gray-400"},Nl={class:"flex items-center gap-2"},Al={class:"flex-1 overflow-hidden"},Ul=A({__name:"index",setup(l){const t=_t(()=>$t(()=>import("./MessageExportModal-DAJW2mFj.js"),__vite__mapDeps([0,1,2,3]))),{t:a}=J(),n=kt(),r=wt(),c=ft(),d=Fe(),v=yt(),{currentSessionId:m}=bt(c),w=S(!1),f=S(!1),u=S(!1),i=S(!1),p=S(!1);function $(){d.openChatRecordDrawer({})}const h=[{id:"insights",labelKey:"analysis.tabs.insights",icon:"i-heroicons-presentation-chart-bar"},{id:"ranking",labelKey:"analysis.tabs.ranking",icon:"i-heroicons-trophy"},{id:"ai-chat",labelKey:"analysis.tabs.aiChat",icon:"i-heroicons-chat-bubble-left-ellipsis"},{id:"lab",labelKey:"analysis.tabs.lab",icon:"i-heroicons-beaker"}],b=y(()=>v.debugMode?[...h,{id:"debug",labelKey:"analysis.tabs.debug",icon:"i-heroicons-bug-ant"}]:h),k=y(()=>b.value.map(re=>re.id)),{activeTab:_,isLoading:V,isInitialLoad:O,session:j,memberActivity:B,hourlyActivity:U,dailyActivity:E,messageTypes:se,timeRangeValue:Y,fullTimeRange:ee,availableYears:G,timeFilter:M,initialTimeState:W,loadData:me}=Mt({route:n,router:r,currentSessionId:m,selectSession:c.selectSession,defaultTab:v.defaultSessionTab,validTabIds:k.value}),_e=y(()=>B.value.reduce((re,L)=>re+L.messageCount,0)),Re=y(()=>B.value.filter(re=>re.messageCount>0).length);return(re,L)=>{const ue=he,Me=Ie;return o(),I("div",Cl,[e(O)?(o(),C(te,{key:0,variant:"page",text:e(a)("analysis.groupChat.loading")},null,8,["text"])):e(j)?(o(),I(q,{key:1},[x(Lt,{"active-tab":e(_),"onUpdate:activeTab":L[0]||(L[0]=H=>He(_)?_.value=H:null),"time-range-value":e(Y),"onUpdate:timeRangeValue":L[1]||(L[1]=H=>He(Y)?Y.value=H:null),title:e(j).name,avatar:e(j).groupAvatar,icon:"i-heroicons-chat-bubble-left-right","icon-class":"bg-primary-600 text-white dark:bg-primary-500 dark:text-white",tabs:b.value,"current-session-id":e(m),"initial-time-state":e(W),onOpenIncrementalImport:L[2]||(L[2]=H=>u.value=!0),onOpenMemberManagement:L[3]||(L[3]=H=>p.value=!0),onOpenChatRecord:$,"onUpdate:fullRange":L[4]||(L[4]=H=>ee.value=H),"onUpdate:availableYears":L[5]||(L[5]=H=>G.value=H)},null,8,["active-tab","time-range-value","title","avatar","tabs","current-session-id","initial-time-state"]),s("div",Il,[e(V)?(o(),C(te,{key:0,variant:"overlay"})):N("",!0),s("div",Tl,[x(Te,{name:"tab-slide",mode:"out-in"},{default:T(()=>[e(_)==="insights"?(o(),C(Ro,{key:"insights-"+e(m),"session-id":e(m),session:e(j),"member-activity":e(B),"message-types":e(se),"hourly-activity":e(U),"daily-activity":e(E),"time-range":e(ee),"filtered-message-count":_e.value,"filtered-member-count":Re.value,"time-filter":e(M)},null,8,["session-id","session","member-activity","message-types","hourly-activity","daily-activity","time-range","filtered-message-count","filtered-member-count","time-filter"])):e(_)==="ranking"?(o(),C(cl,{key:"ranking-"+e(m),"session-id":e(m),"time-filter":e(M)},null,8,["session-id","time-filter"])):e(_)==="ai-chat"?(o(),C(e(Ut),{key:"ai-chat-"+e(m),"session-id":e(m),"session-name":e(j).name,"chat-type":"group"},null,8,["session-id","session-name"])):e(_)==="memory"?(o(),C(Ft,{key:"memory-"+e(m),"session-id":e(m),"session-name":e(j).name},null,8,["session-id","session-name"])):e(_)==="lab"?(o(),C(Bt,{key:"lab-"+e(m),"session-id":e(m),"chat-type":"group"},null,8,["session-id"])):e(_)==="debug"?(o(),C(e(qt),{key:"debug-"+e(m),"session-id":e(m)},null,8,["session-id"])):N("",!0)]),_:1})])]),x(Dt,{onOpenIncrementalImport:L[6]||(L[6]=H=>u.value=!0),onOpenSemanticIndex:L[7]||(L[7]=H=>w.value=!0),onOpenMemberManagement:L[8]||(L[8]=H=>p.value=!0),onOpenChatRecord:$,onOpenMessageExport:L[9]||(L[9]=H=>i.value=!0)})],64)):(o(),I("div",Sl,[s("p",Vl,g(e(a)("analysis.groupChat.loadError")),1)])),e(m)&&e(j)?(o(),C(Nt,{key:3,modelValue:w.value,"onUpdate:modelValue":L[10]||(L[10]=H=>w.value=H),"session-id":e(m),"message-count":e(j).messageCount},null,8,["modelValue","session-id","message-count"])):N("",!0),e(m)&&e(j)?(o(),C(xt,{key:4,modelValue:f.value,"onUpdate:modelValue":L[11]||(L[11]=H=>f.value=H),"session-id":e(m),"chat-type":"group","auto-check":""},null,8,["modelValue","session-id"])):N("",!0),e(m)&&e(j)?(o(),C(At,{key:5,modelValue:u.value,"onUpdate:modelValue":L[12]||(L[12]=H=>u.value=H),"session-id":e(m),"session-name":e(j).name,onImported:L[13]||(L[13]=()=>{e(me)(),e(c).loadSessions()})},null,8,["modelValue","session-id","session-name"])):N("",!0),e(m)?(o(),C(e(t),{key:6,modelValue:i.value,"onUpdate:modelValue":L[14]||(L[14]=H=>i.value=H)},null,8,["modelValue"])):N("",!0),e(m)?(o(),C(Me,{key:7,open:p.value,"onUpdate:open":L[16]||(L[16]=H=>p.value=H),ui:{content:"max-w-6xl h-[85vh]"}},{content:T(()=>[s("div",Rl,[s("div",Ml,[s("div",null,[s("h2",Ll,g(e(a)("analysis.tooltip.memberManagement")),1),s("p",Dl,g(e(a)("members.list.description",{count:e(j)?.memberCount??0})),1)]),s("div",Nl,[x($l,{"session-id":e(m)},null,8,["session-id"]),x(ue,{variant:"ghost",icon:"i-heroicons-x-mark",size:"sm",onClick:L[15]||(L[15]=H=>p.value=!1)})])]),s("div",Al,[x(zt,{"session-id":e(m),"show-header":!1,"chat-type":"group",onDataChanged:e(me)},null,8,["session-id","onDataChanged"])])])]),_:1},8,["open"])):N("",!0)])}}}),Xl=Se(Ul,[["__scopeId","data-v-a60937b1"]]);export{Xl as default};
|
|
64
|
+
`}},legend:{show:!0,bottom:0,itemWidth:12,itemHeight:12,textStyle:{color:"#6b7280",fontSize:10}},grid:{left:a.value.gridLeft,right:70,top:15,bottom:35,containLabel:!1},xAxis:{type:"value",max:w*1.15,axisLine:{show:!1},axisTick:{show:!1},axisLabel:{show:!1},splitLine:{show:!1}},yAxis:{type:"category",data:m,axisLine:{show:!1},axisTick:{show:!1},axisLabel:{fontSize:12,color:"#4b5563",margin:12,formatter:(f,u)=>{const p=n.value.length-1-u+1;return`${p===1?"🥇":p===2?"🥈":p===3?"🥉":`${p}.`} ${f}`}}},series:[{name:"23点",type:"bar",stack:"total",data:v.map(f=>f.hourlyBreakdown.h23),itemStyle:{color:c.h23},barWidth:18},{name:"0点",type:"bar",stack:"total",data:v.map(f=>f.hourlyBreakdown.h0),itemStyle:{color:c.h0},barWidth:18},{name:"1点",type:"bar",stack:"total",data:v.map(f=>f.hourlyBreakdown.h1),itemStyle:{color:c.h1},barWidth:18},{name:"2点",type:"bar",stack:"total",data:v.map(f=>f.hourlyBreakdown.h2),itemStyle:{color:c.h2},barWidth:18},{name:"3-4点",type:"bar",stack:"total",data:v.map(f=>f.hourlyBreakdown.h3to4),itemStyle:{color:c.h3to4,borderRadius:[0,4,4,0]},barWidth:18,label:{show:!0,position:"right",distance:8,formatter:f=>{const u=n.value.length-1-f.dataIndex;return`${n.value[u].totalNightMessages} 条`},fontSize:11,fontWeight:500,color:"#6b7280"}}]}});return(v,m)=>l.bare?(o(),C(e(fe),{key:0,"content-height":r.value,"max-height-vh":l.maxHeightVh},{default:T(()=>[x(e(ae),{option:d.value,height:r.value},null,8,["option","height"])]),_:1},8,["content-height","max-height-vh"])):(o(),C(e(P),{key:1,title:l.title,description:l.description,scrollable:"","max-height-vh":l.maxHeightVh},{default:T(()=>[s("div",In,[x(e(ae),{option:d.value,height:r.value},null,8,["option","height"])])]),_:1},8,["title","description","max-height-vh"]))}}),Sn={id:"streak-rank",class:"scroll-mt-24"},Vn={class:"flex items-center gap-3"},Rn=A({__name:"CheckInRank",props:{sessionId:{},timeFilter:{},showTopNSelect:{type:Boolean,default:!0},globalTopN:{}},setup(l){const t=l,a=S(null),n=S(!1),r=S("max"),c=S(t.globalTopN??10);z(()=>t.globalTopN,f=>{f!==void 0&&(c.value=f)});const d=y(()=>r.value==="max"?"🔥 火花榜 - 最长连续":"🔥 火花榜 - 当前连续"),v=y(()=>r.value==="max"?"历史最长连续发言天数":"正在持续连续发言的成员"),m=y(()=>a.value?a.value.streakRank.some(f=>f.currentStreak>0):!1);async function w(){if(t.sessionId){n.value=!0;try{a.value=await Q().getCheckInAnalysis(t.sessionId,t.timeFilter)}catch(f){console.error("加载打卡分析失败:",f)}finally{n.value=!1}}}return z(()=>[t.sessionId,t.timeFilter],()=>{w()},{immediate:!0,deep:!0}),(f,u)=>(o(),I("div",Sn,[n.value?(o(),C(e(te),{key:0,text:"正在分析数据..."})):a.value&&a.value.streakRank.length>0?(o(),C(e(P),{key:1,title:d.value,description:v.value},{headerRight:T(()=>[s("div",Vn,[l.showTopNSelect?(o(),C(e(ie),{key:0,modelValue:c.value,"onUpdate:modelValue":u[0]||(u[0]=i=>c.value=i)},null,8,["modelValue"])):N("",!0),m.value?(o(),C(e(le),{key:1,modelValue:r.value,"onUpdate:modelValue":u[1]||(u[1]=i=>r.value=i),items:[{label:"最长连续",value:"max"},{label:"当前连续",value:"current"}],size:"sm"},null,8,["modelValue"])):N("",!0)])]),default:T(()=>[x(e(gn),{items:a.value.streakRank,title:d.value,mode:r.value,"top-n":c.value,bare:""},null,8,["items","title","mode","top-n"])]),_:1},8,["title","description"])):(o(),C(e(P),{key:2,title:"🔥 火花榜"},{default:T(()=>[x(e(ne),{text:"暂无连续发言数据"})]),_:1}))]))}}),Mn={class:"flex items-center gap-3"},Ln={key:1,class:"py-8 text-center text-sm text-gray-400"},Dn={key:1,class:"py-8 text-center text-sm text-gray-400"},Nn=A({__name:"MemeBattleRank",props:{sessionId:{},timeFilter:{},showTopNSelect:{type:Boolean,default:!0},globalTopN:{}},setup(l){const t=l,a=S(null),n=S(!1),r=S("count"),c=S(t.globalTopN??10);z(()=>t.globalTopN,p=>{p!==void 0&&(c.value=p)});async function d(){if(t.sessionId){n.value=!0;try{a.value=await Q().getMemeBattleAnalysis(t.sessionId,t.timeFilter)}catch(p){console.error("加载斗图分析失败:",p)}finally{n.value=!1}}}const v=y(()=>a.value?a.value.rankByCount.map(p=>({id:p.memberId.toString(),name:p.name,value:p.count,percentage:p.percentage})):[]),m=y(()=>a.value?a.value.rankByImageCount.map(p=>({id:p.memberId.toString(),name:p.name,value:p.count,percentage:p.percentage})):[]),w=y(()=>r.value==="count"?v.value:m.value),f=y(()=>r.value==="count"?"场":"张"),u=y(()=>{switch(r.value){case"battle":return"⚔️ 斗图榜 - 史诗级战役";case"count":return"⚔️ 斗图榜 - 按场次";case"image":return"⚔️ 斗图榜 - 按图量";default:return"⚔️ 斗图榜"}}),i=y(()=>{switch(r.value){case"battle":return"记录最激烈的斗图大战";case"count":return"参与斗图次数最多的人";case"image":return"在斗图中发送图片最多的人";default:return""}});return z(()=>[t.sessionId,t.timeFilter],()=>d(),{immediate:!0,deep:!0}),(p,$)=>n.value?(o(),C(e(te),{key:0,text:"正在统计斗图数据..."})):a.value?(o(),C(e(P),{key:1,title:u.value,description:i.value},{headerRight:T(()=>[s("div",Mn,[l.showTopNSelect?(o(),C(e(ie),{key:0,modelValue:c.value,"onUpdate:modelValue":$[0]||($[0]=h=>c.value=h)},null,8,["modelValue"])):N("",!0),x(e(le),{modelValue:r.value,"onUpdate:modelValue":$[1]||($[1]=h=>r.value=h),items:[{label:"按场次",value:"count"},{label:"按图量",value:"image"},{label:"史诗级战役",value:"battle"}],size:"sm"},null,8,["modelValue"])])]),default:T(()=>[r.value==="battle"?(o(),I(q,{key:0},[a.value.topBattles.length>0?(o(),C(e(yn),{key:0,battles:a.value.topBattles,title:"","top-n":c.value,bare:""},null,8,["battles","top-n"])):(o(),I("div",Ln,"暂无史诗级战役数据"))],64)):(o(),I(q,{key:1},[w.value.length>0?(o(),C(e(Ve),{key:0,members:w.value,title:u.value,unit:f.value,"top-n":c.value,bare:""},null,8,["members","title","unit","top-n"])):(o(),I("div",Dn,"暂无斗图数据"))],64))]),_:1},8,["title","description"])):N("",!0)}}),An={class:"space-y-6"},Un={class:"flex items-center gap-3"},Fn={class:"flex items-center gap-3"},Bn={key:1,class:"px-3 py-2"},qn=A({__name:"RepeatSection",props:{sessionId:{},timeFilter:{},showTopNSelect:{type:Boolean,default:!0},globalTopN:{}},setup(l){const t=l,a=S(null),n=S(!1),r=S("originator"),c=S("fastest"),d=S(t.globalTopN??10),v=S(t.globalTopN??10);z(()=>t.globalTopN,_=>{_!==void 0&&(d.value=_,v.value=_)});async function m(){if(t.sessionId){n.value=!0;try{a.value=await Q().getRepeatAnalysis(t.sessionId,t.timeFilter)}catch(_){console.error("加载复读分析失败:",_)}finally{n.value=!1}}}const w=y(()=>a.value?a.value.originators.map(_=>({id:_.memberId.toString(),name:_.name,value:_.count,percentage:_.percentage})):[]),f=y(()=>a.value?a.value.initiators.map(_=>({id:_.memberId.toString(),name:_.name,value:_.count,percentage:_.percentage})):[]),u=y(()=>a.value?a.value.breakers.map(_=>({id:_.memberId.toString(),name:_.name,value:_.count,percentage:_.percentage})):[]),i=y(()=>{switch(r.value){case"originator":return w.value;case"initiator":return f.value;case"breaker":return u.value;default:return w.value}}),p=y(()=>{switch(r.value){case"originator":return"🔁 复读榜 - 被复读";case"initiator":return"🔁 复读榜 - 挑起";case"breaker":return"🔁 复读榜 - 打断";default:return"🔁 复读榜"}}),$=y(()=>{switch(r.value){case"originator":return"发出的消息被别人复读的次数";case"initiator":return"第二个发送相同消息、带起节奏的人";case"breaker":return"终结复读链的人";default:return""}}),h=y(()=>{if(!a.value)return{labels:[],values:[]};const _=a.value.chainLengthDistribution;return{labels:_.map(V=>`${V.length}人`),values:_.map(V=>V.count)}}),b=y(()=>c.value==="fastest"?"📊 复读统计 - 最快反应":"📊 复读统计 - 链长分布"),k=y(()=>{if(c.value==="fastest")return"平均复读反应时间(至少参与5次复读)";const _=a.value?.totalRepeatChains??0,V=a.value?.avgChainLength??0;return`共 ${_} 次复读,平均 ${V} 人参与`});return z(()=>[t.sessionId,t.timeFilter],()=>m(),{immediate:!0,deep:!0}),(_,V)=>(o(),I("div",An,[n.value?(o(),C(e(te),{key:0,text:"正在分析复读数据..."})):a.value&&a.value.totalRepeatChains>0?(o(),I(q,{key:1},[x(e(P),{title:p.value,description:$.value},{headerRight:T(()=>[s("div",Un,[l.showTopNSelect?(o(),C(e(ie),{key:0,modelValue:d.value,"onUpdate:modelValue":V[0]||(V[0]=O=>d.value=O)},null,8,["modelValue"])):N("",!0),x(e(le),{modelValue:r.value,"onUpdate:modelValue":V[1]||(V[1]=O=>r.value=O),items:[{label:"被复读",value:"originator"},{label:"挑起",value:"initiator"},{label:"打断",value:"breaker"}],size:"sm"},null,8,["modelValue"])])]),default:T(()=>[i.value.length>0?(o(),C(e(Ve),{key:0,members:i.value,title:p.value,unit:"次","top-n":d.value,bare:""},null,8,["members","title","top-n"])):(o(),C(e(ne),{key:1,text:"暂无数据"}))]),_:1},8,["title","description"]),x(e(P),{title:b.value,description:k.value},{headerRight:T(()=>[s("div",Fn,[l.showTopNSelect&&c.value==="fastest"?(o(),C(e(ie),{key:0,modelValue:v.value,"onUpdate:modelValue":V[2]||(V[2]=O=>v.value=O)},null,8,["modelValue"])):N("",!0),x(e(le),{modelValue:c.value,"onUpdate:modelValue":V[3]||(V[3]=O=>c.value=O),items:[{label:"最快反应",value:"fastest"},{label:"链长分布",value:"distribution"}],size:"sm"},null,8,["modelValue"])])]),default:T(()=>[c.value==="fastest"?(o(),I(q,{key:0},[a.value.fastestRepeaters&&a.value.fastestRepeaters.length>0?(o(),C(e(xn),{key:0,items:a.value.fastestRepeaters,"top-n":v.value,title:"",bare:""},null,8,["items","top-n"])):(o(),C(e(ne),{key:1,text:"暂无最快复读数据"}))],64)):(o(),I("div",Bn,[h.value.labels.length>0?(o(),C(e(Yt),{key:0,data:h.value,height:200},null,8,["data"])):(o(),C(e(ne),{key:1,text:"暂无分布数据"}))]))]),_:1},8,["title","description"])],64)):(o(),C(e(P),{key:2,title:"🔁 复读榜"},{default:T(()=>[x(e(ne),{text:"该群组暂无复读记录"})]),_:1}))]))}}),zn=A({__name:"DivingRank",props:{sessionId:{},timeFilter:{},globalTopN:{}},setup(l){const t=l,a=S(null),n=S(!1);async function r(){if(t.sessionId){n.value=!0;try{a.value=await Q().getDivingAnalysis(t.sessionId,t.timeFilter)}catch(c){console.error("加载潜水分析失败:",c)}finally{n.value=!1}}}return z(()=>[t.sessionId,t.timeFilter],()=>r(),{immediate:!0,deep:!0}),(c,d)=>n.value?(o(),C(e(te),{key:0,text:"正在统计潜水数据..."})):a.value&&a.value.rank.length>0?(o(),C(e(_n),{key:1,items:a.value.rank,"global-top-n":l.globalTopN},null,8,["items","global-top-n"])):N("",!0)}}),Hn={class:"space-y-6"},En={class:"flex items-center gap-3"},Pn={key:1,class:"py-8 text-center text-sm text-gray-400"},On={key:1,class:"py-8 text-center text-sm text-gray-400"},Wn={class:"flex items-center gap-3"},Kn={key:1,class:"py-8 text-center text-sm text-gray-400"},jn=A({__name:"NightOwlRank",props:{sessionId:{},timeFilter:{},showTopNSelect:{type:Boolean,default:!0},globalTopN:{}},setup(l){const t=l,a=S(null),n=S(!1),r=S("first"),c=S("distribution"),d=S(t.globalTopN??10),v=S(t.globalTopN??10);z(()=>t.globalTopN,b=>{b!==void 0&&(d.value=b,v.value=b)});async function m(){if(t.sessionId){n.value=!0;try{a.value=await Q().getNightOwlAnalysis(t.sessionId,t.timeFilter)}catch(b){console.error("加载出勤分析失败:",b)}finally{n.value=!1}}}const w=y(()=>a.value?a.value.lastSpeakerRank.map(b=>({id:String(b.memberId),name:b.name,value:b.count,percentage:b.percentage})):[]),f=y(()=>a.value?a.value.firstSpeakerRank.map(b=>({id:String(b.memberId),name:b.name,value:b.count,percentage:b.percentage})):[]),u=y(()=>r.value==="last"?w.value:f.value),i=y(()=>r.value==="last"?"⏰ 出勤排行 - 最晚下班":"⏰ 出勤排行 - 最早上班"),p=y(()=>{const b=a.value?.totalDays??0;return r.value==="last"?`每天最后一个发言的人(共 ${b} 天)`:`每天第一个发言的人(共 ${b} 天)`}),$=y(()=>c.value==="distribution"?"🦉 修仙统计 - 发言分布":"🦉 修仙统计 - 连续记录"),h=y(()=>c.value==="distribution"?"深夜时段(23:00-05:00)各时段发言分布":"连续在深夜时段发言的天数");return z(()=>[t.sessionId,t.timeFilter],()=>m(),{immediate:!0,deep:!0}),(b,k)=>(o(),I("div",Hn,[n.value?(o(),C(e(te),{key:0,text:"正在加载出勤分析..."})):a.value?(o(),I(q,{key:1},[x(e(P),{title:$.value,description:h.value},{headerRight:T(()=>[s("div",En,[l.showTopNSelect?(o(),C(e(ie),{key:0,modelValue:d.value,"onUpdate:modelValue":k[0]||(k[0]=_=>d.value=_)},null,8,["modelValue"])):N("",!0),x(e(le),{modelValue:c.value,"onUpdate:modelValue":k[1]||(k[1]=_=>c.value=_),items:[{label:"发言分布",value:"distribution"},{label:"连续记录",value:"consecutive"}],size:"sm"},null,8,["modelValue"])])]),default:T(()=>[c.value==="distribution"?(o(),I(q,{key:0},[a.value.nightOwlRank.length>0?(o(),C(e(Tn),{key:0,items:a.value.nightOwlRank,"top-n":d.value,title:"",bare:""},null,8,["items","top-n"])):(o(),I("div",Pn,"暂无深夜发言数据"))],64)):(o(),I(q,{key:1},[a.value.consecutiveRecords.length>0?(o(),C(e(Cn),{key:0,items:a.value.consecutiveRecords,"top-n":d.value,title:"",bare:""},null,8,["items","top-n"])):(o(),I("div",On,"暂无连续记录"))],64))]),_:1},8,["title","description"]),x(e(P),{title:i.value,description:p.value},{headerRight:T(()=>[s("div",Wn,[l.showTopNSelect?(o(),C(e(ie),{key:0,modelValue:v.value,"onUpdate:modelValue":k[2]||(k[2]=_=>v.value=_)},null,8,["modelValue"])):N("",!0),x(e(le),{modelValue:r.value,"onUpdate:modelValue":k[3]||(k[3]=_=>r.value=_),items:[{label:"最早上班",value:"first"},{label:"最晚下班",value:"last"}],size:"sm"},null,8,["modelValue"])])]),default:T(()=>[u.value.length>0?(o(),C(e(Ve),{key:0,members:u.value,title:i.value,"top-n":v.value,unit:"次",bare:""},null,8,["members","title","top-n"])):(o(),I("div",Kn,"暂无数据"))]),_:1},8,["title","description"])],64)):N("",!0)]))}}),Gn={class:"mb-8 mt-4"},Yn={class:"text-5xl tracking-wider",style:{"font-weight":"800",background:"linear-gradient(to right, #f59e0b, #ec4899, #9333ea)","-webkit-background-clip":"text","-webkit-text-fill-color":"transparent"}},Xn={id:"activity-rank",class:"scroll-mt-24"},Zn={id:"meme-battle",class:"scroll-mt-24"},Jn={id:"repeat",class:"scroll-mt-24"},Qn={id:"night-owl",class:"scroll-mt-24"},el={id:"diving",class:"scroll-mt-24"},tl={class:"border-l border-gray-200 pl-4 dark:border-gray-800"},al={class:"mt-4 border-l border-gray-200 pl-4 dark:border-gray-800"},sl={class:"flex rounded-lg border border-gray-200 bg-white p-0.5 text-xs dark:border-gray-700 dark:bg-page-dark"},ol=["onClick"],nl=A({__name:"OverallRankingTab",props:{sessionId:{},timeFilter:{}},setup(l){const t=l,a=S([]),n=S([]);async function r(){if(!t.sessionId)return;const h=Q(),[b,k]=await Promise.all([h.getMemberActivity(t.sessionId,t.timeFilter),h.getAvailableYears(t.sessionId)]);a.value=b,n.value=k}z(()=>[t.sessionId,t.timeFilter],()=>r(),{immediate:!0,deep:!0});const c=y(()=>{if(t.timeFilter?.startTs&&t.timeFilter?.endTs){const h=new Date(t.timeFilter.startTs*1e3).getFullYear(),b=new Date(t.timeFilter.endTs*1e3).getFullYear();return h===b?`${h} 赛季`:`${h}-${b} 赛季`}if(n.value.length>0){const h=[...n.value].sort((_,V)=>_-V),b=h[0],k=h[h.length-1];return b===k?`${b} 赛季`:`${b}-${k} 赛季`}return"全部赛季"}),d=y(()=>({startTs:t.timeFilter?.startTs,endTs:t.timeFilter?.endTs})),v=[{id:"activity-rank",label:"🏆 活跃榜"},{id:"streak-rank",label:"🔥 火花榜"},{id:"meme-battle",label:"⚔️ 斗图榜"},{id:"repeat",label:"🔁 复读榜"},{id:"night-owl",label:"⏰ 出勤榜"},{id:"diving",label:"🤿 潜水榜"}],{contentRef:m,activeAnchor:w,scrollToAnchor:f}=Jt(v,{threshold:350}),u=S(10),i=S("standard");ht(Qe,i);const p=[{value:"standard",label:"标准"},{value:"wide",label:"宽屏"},{value:"full",label:"全宽"}],$=y(()=>et[i.value].contentClass);return(h,b)=>(o(),I("div",{ref_key:"contentRef",ref:m,class:"flex gap-6 p-6"},[s("div",{class:K(["main-content mx-auto min-w-0 flex-1 space-y-6 px-8",$.value])},[s("div",Gn,[s("h1",Yn," 🏆 "+g(c.value),1),b[1]||(b[1]=s("p",{class:"mt-4 text-sm text-gray-500 dark:text-gray-400"},"各榜单前三名请找群主领取奖励 🎁",-1))]),s("div",Xn,[x(e(mn),{"session-id":t.sessionId,"member-activity":a.value,"time-filter":d.value,"global-top-n":u.value},null,8,["session-id","member-activity","time-filter","global-top-n"])]),x(e(Rn),{"session-id":t.sessionId,"time-filter":d.value,"global-top-n":u.value},null,8,["session-id","time-filter","global-top-n"]),s("div",Zn,[x(e(Nn),{"session-id":t.sessionId,"time-filter":d.value,"global-top-n":u.value},null,8,["session-id","time-filter","global-top-n"])]),s("div",Jn,[x(e(qn),{"session-id":t.sessionId,"time-filter":d.value,"global-top-n":u.value},null,8,["session-id","time-filter","global-top-n"])]),s("div",Qn,[x(e(jn),{"session-id":t.sessionId,"time-filter":d.value,"global-top-n":u.value},null,8,["session-id","time-filter","global-top-n"])]),s("div",el,[x(e(zn),{"session-id":t.sessionId,"time-filter":d.value,"global-top-n":u.value},null,8,["session-id","time-filter","global-top-n"])]),b[2]||(b[2]=s("div",{class:"h-48 no-capture"},null,-1))],2),x(e(sa),{anchors:v,"active-anchor":e(w),onClick:e(f)},{default:T(()=>[s("div",tl,[b[3]||(b[3]=s("div",{class:"mb-2 text-xs text-gray-400"},"显示数量",-1)),x(e(ie),{modelValue:u.value,"onUpdate:modelValue":b[0]||(b[0]=k=>u.value=k)},null,8,["modelValue"])]),s("div",al,[b[4]||(b[4]=s("div",{class:"mb-2 text-xs text-gray-400"},"榜单宽度",-1)),s("div",sl,[(o(),I(q,null,Z(p,k=>s("button",{key:k.value,type:"button",class:K(["rounded-md px-2 py-1 transition",i.value===k.value?"bg-pink-500 text-white shadow-sm":"text-gray-500 hover:bg-gray-100 dark:text-gray-400 dark:hover:bg-gray-800"]),onClick:_=>i.value=k.value},g(k.label),11,ol)),64))])])]),_:1},8,["active-anchor","onClick"])],512))}}),ll={class:"flex h-full flex-col"},il={class:"min-h-0 flex-1 overflow-y-auto"},rl={key:1,class:"main-content mx-auto w-full max-w-3xl p-6"},ul=A({__name:"RankingView",props:{sessionId:{},timeFilter:{}},setup(l){const t=l,{t:a,locale:n}=J(),r=S("overall"),c=S(null),d=y(()=>gt("groupRanking",n.value)),v=y(()=>[...d.value?[{id:"overall",label:a("analysis.subTabs.ranking.overall"),icon:"i-heroicons-trophy"}]:[],{id:"hot-repeat",label:a("analysis.subTabs.quotes.hotRepeat"),icon:"i-heroicons-sparkles"},{id:"catchphrase",label:a("analysis.subTabs.quotes.catchphrase"),icon:"i-heroicons-chat-bubble-bottom-center-text"},{id:"keyword",label:a("analysis.subTabs.ranking.keyword"),icon:"i-heroicons-magnifying-glass"}]),m=y(()=>({startTs:t.timeFilter?.startTs,endTs:t.timeFilter?.endTs})),w=y(()=>({...m.value,memberId:c.value}));return z(v,f=>{f.some(u=>u.id===r.value)||(r.value=f[0]?.id??"hot-repeat")},{immediate:!0}),(f,u)=>(o(),I("div",ll,[x(e(Ue),{modelValue:r.value,"onUpdate:modelValue":u[1]||(u[1]=i=>r.value=i),items:v.value,"persist-key":"groupRankingTab"},{right:T(()=>[r.value==="catchphrase"?(o(),C(Ge,{key:0,modelValue:c.value,"onUpdate:modelValue":u[0]||(u[0]=i=>c.value=i),"session-id":t.sessionId},null,8,["modelValue","session-id"])):N("",!0)]),_:1},8,["modelValue","items"]),s("div",il,[x(Te,{name:"fade",mode:"out-in"},{default:T(()=>[r.value==="overall"?(o(),C(nl,{key:0,"session-id":t.sessionId,"time-filter":m.value},null,8,["session-id","time-filter"])):r.value==="keyword"?(o(),I("div",rl,[x(un,{"session-id":t.sessionId,"time-filter":m.value},null,8,["session-id","time-filter"])])):r.value==="hot-repeat"?(o(),C(e(ko),{key:2,"session-id":t.sessionId,"time-filter":m.value},null,8,["session-id","time-filter"])):r.value==="catchphrase"?(o(),C(e(ro),{key:3,"session-id":t.sessionId,"time-filter":w.value},null,8,["session-id","time-filter"])):N("",!0)]),_:1})])]))}}),cl=Se(ul,[["__scopeId","data-v-d8d145dc"]]),dl={class:"main-content max-w-5xl p-6"},ml={class:"mb-4 text-sm text-gray-500 dark:text-gray-400 no-capture"},vl={key:0,class:"divide-y divide-gray-100 dark:divide-gray-800"},pl={class:"w-32 shrink-0 pt-0.5 font-medium text-gray-900 dark:text-white"},hl={class:"flex flex-1 flex-wrap items-center gap-2"},gl={class:"flex items-center gap-1.5 rounded-lg bg-gray-50 px-3 py-1.5 dark:bg-gray-800"},fl={class:"text-xs text-gray-400"},yl={key:0,class:"text-gray-300 dark:text-gray-600"},bl=A({__name:"NicknameHistory",props:{sessionId:{}},setup(l){const{t}=J(),a=l,n=S([]),r=S([]),c=S(!1);function d(w){return w.groupNickname||w.accountName||w.platformId}async function v(){if(a.sessionId)try{n.value=await Q().getMembers(a.sessionId)}catch(w){console.error("加载成员列表失败:",w)}}async function m(){if(!a.sessionId||n.value.length===0)return;c.value=!0;const w=[];try{const f=n.value.map(i=>Q().getMemberNameHistory(a.sessionId,i.id)),u=await Promise.all(f);n.value.forEach((i,p)=>{const $=u[p];$.length>2&&w.push({memberId:i.id,name:d(i),history:$})}),r.value=w}catch(f){console.error("加载昵称变更记录失败:",f)}finally{c.value=!1}}return z(()=>a.sessionId,async()=>{await v()},{immediate:!0}),z(()=>n.value.length,()=>{n.value.length>0&&m()}),Ce(async()=>{n.value.length===0&&await v()}),(w,f)=>{const u=je;return o(),I("div",dl,[s("p",ml,g(e(t)("members.nicknameHistory.note")),1),x(e(P),{title:e(t)("members.nicknameHistory.title"),description:c.value?e(t)("members.nicknameHistory.loading"):r.value.length>0?e(t)("members.nicknameHistory.hasChanges",{count:r.value.length}):e(t)("members.nicknameHistory.noChanges")},{default:T(()=>[!c.value&&r.value.length>0?(o(),I("div",vl,[(o(!0),I(q,null,Z(r.value,i=>(o(),I("div",{key:i.memberId,class:"flex items-start gap-3 px-5 py-3"},[s("div",pl,g(i.name),1),s("div",hl,[(o(!0),I(q,null,Z(i.history,(p,$)=>(o(),I(q,{key:$},[s("div",gl,[s("span",{class:K(["text-sm",p.endTs===null?"font-semibold text-pink-600":"text-gray-700 dark:text-gray-300"])},g(p.name),3),p.endTs===null?(o(),C(u,{key:0,color:"primary",variant:"soft",size:"xs"},{default:T(()=>[X(g(e(t)("members.nicknameHistory.current")),1)]),_:1})):N("",!0),s("span",fl,"("+g(e(Zt)(p.startTs,p.endTs))+")",1)]),$<i.history.length-1?(o(),I("span",yl,"→")):N("",!0)],64))),128))])]))),128))])):c.value?(o(),C(e(te),{key:2,text:e(t)("members.nicknameHistory.loadingText")},null,8,["text"])):(o(),C(e(ne),{key:1,text:e(t)("members.nicknameHistory.empty")},null,8,["text"]))]),_:1},8,["title","description"])])}}}),xl={class:"flex h-full flex-col overflow-hidden bg-white dark:bg-page-dark"},kl={class:"flex flex-none items-center justify-between border-b border-gray-200 px-5 py-3 dark:border-gray-700"},wl={class:"text-lg font-semibold text-gray-900 dark:text-white"},_l={class:"flex-1 overflow-auto"},$l=A({__name:"NicknameHistoryEntry",props:{sessionId:{}},setup(l){const{t}=J(),a=l,n=S(!1);return(r,c)=>{const d=he,v=Ie;return o(),I(q,null,[x(d,{variant:"ghost",icon:"i-heroicons-clock",size:"sm",onClick:c[0]||(c[0]=m=>n.value=!0)},{default:T(()=>[X(g(e(t)("analysis.subTabs.member.nicknameHistory")),1)]),_:1}),a.sessionId?(o(),C(v,{key:0,open:n.value,"onUpdate:open":c[2]||(c[2]=m=>n.value=m),ui:{content:"max-w-6xl h-[85vh]"}},{content:T(()=>[s("div",xl,[s("div",kl,[s("h2",wl,g(e(t)("analysis.subTabs.member.nicknameHistory")),1),x(d,{variant:"ghost",icon:"i-heroicons-x-mark",size:"sm",onClick:c[1]||(c[1]=m=>n.value=!1)})]),s("div",_l,[x(bl,{"session-id":a.sessionId},null,8,["session-id"])])])]),_:1},8,["open"])):N("",!0)],64)}}}),Cl={class:"flex h-full flex-col dark:bg-page-dark",style:{"padding-top":"var(--titlebar-area-height)"}},Il={class:"relative flex-1 overflow-y-auto"},Tl={class:"h-full"},Sl={key:2,class:"flex h-full items-center justify-center"},Vl={class:"text-gray-500"},Rl={class:"flex h-full flex-col overflow-hidden bg-white dark:bg-page-dark"},Ml={class:"flex flex-none items-center justify-between border-b border-gray-200 px-5 py-3 dark:border-gray-700"},Ll={class:"text-lg font-semibold text-gray-900 dark:text-white"},Dl={class:"text-sm text-gray-500 dark:text-gray-400"},Nl={class:"flex items-center gap-2"},Al={class:"flex-1 overflow-hidden"},Ul=A({__name:"index",setup(l){const t=_t(()=>$t(()=>import("./MessageExportModal-CZn3LbeY.js"),__vite__mapDeps([0,1,2,3]))),{t:a}=J(),n=kt(),r=wt(),c=ft(),d=Fe(),v=yt(),{currentSessionId:m}=bt(c),w=S(!1),f=S(!1),u=S(!1),i=S(!1),p=S(!1);function $(){d.openChatRecordDrawer({})}const h=[{id:"insights",labelKey:"analysis.tabs.insights",icon:"i-heroicons-presentation-chart-bar"},{id:"ranking",labelKey:"analysis.tabs.ranking",icon:"i-heroicons-trophy"},{id:"ai-chat",labelKey:"analysis.tabs.aiChat",icon:"i-heroicons-chat-bubble-left-ellipsis"},{id:"lab",labelKey:"analysis.tabs.lab",icon:"i-heroicons-beaker"}],b=y(()=>v.debugMode?[...h,{id:"debug",labelKey:"analysis.tabs.debug",icon:"i-heroicons-bug-ant"}]:h),k=y(()=>b.value.map(re=>re.id)),{activeTab:_,isLoading:V,isInitialLoad:O,session:j,memberActivity:B,hourlyActivity:U,dailyActivity:E,messageTypes:se,timeRangeValue:Y,fullTimeRange:ee,availableYears:G,timeFilter:M,initialTimeState:W,loadData:me}=Mt({route:n,router:r,currentSessionId:m,selectSession:c.selectSession,defaultTab:v.defaultSessionTab,validTabIds:k.value}),_e=y(()=>B.value.reduce((re,L)=>re+L.messageCount,0)),Re=y(()=>B.value.filter(re=>re.messageCount>0).length);return(re,L)=>{const ue=he,Me=Ie;return o(),I("div",Cl,[e(O)?(o(),C(te,{key:0,variant:"page",text:e(a)("analysis.groupChat.loading")},null,8,["text"])):e(j)?(o(),I(q,{key:1},[x(Lt,{"active-tab":e(_),"onUpdate:activeTab":L[0]||(L[0]=H=>He(_)?_.value=H:null),"time-range-value":e(Y),"onUpdate:timeRangeValue":L[1]||(L[1]=H=>He(Y)?Y.value=H:null),title:e(j).name,avatar:e(j).groupAvatar,icon:"i-heroicons-chat-bubble-left-right","icon-class":"bg-primary-600 text-white dark:bg-primary-500 dark:text-white",tabs:b.value,"current-session-id":e(m),"initial-time-state":e(W),onOpenIncrementalImport:L[2]||(L[2]=H=>u.value=!0),onOpenMemberManagement:L[3]||(L[3]=H=>p.value=!0),onOpenChatRecord:$,"onUpdate:fullRange":L[4]||(L[4]=H=>ee.value=H),"onUpdate:availableYears":L[5]||(L[5]=H=>G.value=H)},null,8,["active-tab","time-range-value","title","avatar","tabs","current-session-id","initial-time-state"]),s("div",Il,[e(V)?(o(),C(te,{key:0,variant:"overlay"})):N("",!0),s("div",Tl,[x(Te,{name:"tab-slide",mode:"out-in"},{default:T(()=>[e(_)==="insights"?(o(),C(Ro,{key:"insights-"+e(m),"session-id":e(m),session:e(j),"member-activity":e(B),"message-types":e(se),"hourly-activity":e(U),"daily-activity":e(E),"time-range":e(ee),"filtered-message-count":_e.value,"filtered-member-count":Re.value,"time-filter":e(M)},null,8,["session-id","session","member-activity","message-types","hourly-activity","daily-activity","time-range","filtered-message-count","filtered-member-count","time-filter"])):e(_)==="ranking"?(o(),C(cl,{key:"ranking-"+e(m),"session-id":e(m),"time-filter":e(M)},null,8,["session-id","time-filter"])):e(_)==="ai-chat"?(o(),C(e(Ut),{key:"ai-chat-"+e(m),"session-id":e(m),"session-name":e(j).name,"chat-type":"group"},null,8,["session-id","session-name"])):e(_)==="memory"?(o(),C(Ft,{key:"memory-"+e(m),"session-id":e(m),"session-name":e(j).name},null,8,["session-id","session-name"])):e(_)==="lab"?(o(),C(Bt,{key:"lab-"+e(m),"session-id":e(m),"chat-type":"group"},null,8,["session-id"])):e(_)==="debug"?(o(),C(e(qt),{key:"debug-"+e(m),"session-id":e(m)},null,8,["session-id"])):N("",!0)]),_:1})])]),x(Dt,{onOpenIncrementalImport:L[6]||(L[6]=H=>u.value=!0),onOpenSemanticIndex:L[7]||(L[7]=H=>w.value=!0),onOpenMemberManagement:L[8]||(L[8]=H=>p.value=!0),onOpenChatRecord:$,onOpenMessageExport:L[9]||(L[9]=H=>i.value=!0)})],64)):(o(),I("div",Sl,[s("p",Vl,g(e(a)("analysis.groupChat.loadError")),1)])),e(m)&&e(j)?(o(),C(Nt,{key:3,modelValue:w.value,"onUpdate:modelValue":L[10]||(L[10]=H=>w.value=H),"session-id":e(m),"message-count":e(j).messageCount},null,8,["modelValue","session-id","message-count"])):N("",!0),e(m)&&e(j)?(o(),C(xt,{key:4,modelValue:f.value,"onUpdate:modelValue":L[11]||(L[11]=H=>f.value=H),"session-id":e(m),"chat-type":"group","auto-check":""},null,8,["modelValue","session-id"])):N("",!0),e(m)&&e(j)?(o(),C(At,{key:5,modelValue:u.value,"onUpdate:modelValue":L[12]||(L[12]=H=>u.value=H),"session-id":e(m),"session-name":e(j).name,onImported:L[13]||(L[13]=()=>{e(me)(),e(c).loadSessions()})},null,8,["modelValue","session-id","session-name"])):N("",!0),e(m)?(o(),C(e(t),{key:6,modelValue:i.value,"onUpdate:modelValue":L[14]||(L[14]=H=>i.value=H)},null,8,["modelValue"])):N("",!0),e(m)?(o(),C(Me,{key:7,open:p.value,"onUpdate:open":L[16]||(L[16]=H=>p.value=H),ui:{content:"max-w-6xl h-[85vh]"}},{content:T(()=>[s("div",Rl,[s("div",Ml,[s("div",null,[s("h2",Ll,g(e(a)("analysis.tooltip.memberManagement")),1),s("p",Dl,g(e(a)("members.list.description",{count:e(j)?.memberCount??0})),1)]),s("div",Nl,[x($l,{"session-id":e(m)},null,8,["session-id"]),x(ue,{variant:"ghost",icon:"i-heroicons-x-mark",size:"sm",onClick:L[15]||(L[15]=H=>p.value=!1)})])]),s("div",Al,[x(zt,{"session-id":e(m),"show-header":!1,"chat-type":"group",onDataChanged:e(me)},null,8,["session-id","onDataChanged"])])])]),_:1},8,["open"])):N("",!0)])}}}),Xl=Se(Ul,[["__scopeId","data-v-a60937b1"]]);export{Xl as default};
|