chatlab-cli 0.36.2 → 0.37.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-SEV6N3AR.mjs → chat-command-YAFRLHMQ.mjs} +15 -16
- package/dist/{chat-command-SEV6N3AR.mjs.map → chat-command-YAFRLHMQ.mjs.map} +1 -1
- package/dist/{chunk-6EZPD3XJ.mjs → chunk-2PY4XCH3.mjs} +6 -3
- package/dist/chunk-2PY4XCH3.mjs.map +1 -0
- package/dist/{chunk-HWIXK7SU.mjs → chunk-73TJ2S7W.mjs} +1643 -3
- package/dist/chunk-73TJ2S7W.mjs.map +1 -0
- package/dist/{chunk-YUH3H3QW.mjs → chunk-ARIBCH47.mjs} +96 -5
- package/dist/chunk-ARIBCH47.mjs.map +1 -0
- package/dist/{chunk-WRBFV2GX.mjs → chunk-FPVRSXQ4.mjs} +49 -55
- package/dist/chunk-FPVRSXQ4.mjs.map +1 -0
- package/dist/{chunk-VREVDZ4Q.mjs → chunk-GKCIRKOH.mjs} +1934 -35
- package/dist/chunk-GKCIRKOH.mjs.map +1 -0
- package/dist/{chunk-TJ3NOBVI.mjs → chunk-JWJREWVN.mjs} +119 -288
- package/dist/chunk-JWJREWVN.mjs.map +1 -0
- package/dist/{chunk-TWH422HC.mjs → chunk-MMTEGUQA.mjs} +3 -3
- package/dist/{chunk-VUYWUHWW.mjs → chunk-N4SB6QZV.mjs} +3 -3
- package/dist/chunk-N4SB6QZV.mjs.map +1 -0
- package/dist/{chunk-TRGR3KKJ.mjs → chunk-OTYNMDDL.mjs} +2643 -682
- package/dist/chunk-OTYNMDDL.mjs.map +1 -0
- package/dist/{chunk-CH5YAZ4Q.mjs → chunk-PDQV4RUA.mjs} +2 -2
- package/dist/{chunk-WJQOXOMR.mjs → chunk-UP6JIV3S.mjs} +285 -41
- package/dist/chunk-UP6JIV3S.mjs.map +1 -0
- package/dist/chunk-WDLO7OLX.mjs +101 -0
- package/dist/chunk-WDLO7OLX.mjs.map +1 -0
- package/dist/cli.mjs +9 -9
- package/dist/contacts-worker.mjs +2 -2
- package/dist/global-insight-worker.mjs +1 -1
- package/dist/{http-237XYNRT.mjs → http-LPFPVTBC.mjs} +12 -12
- package/dist/{import-R2E2TFAK.mjs → import-T4WX2ZJL.mjs} +7 -7
- package/dist/index.mjs +12 -12
- package/dist/{mcp-BED4AARV.mjs → mcp-SMF3NWIN.mjs} +8 -8
- package/dist/people-relationships-worker.mjs +2 -2
- package/dist/semantic-index-worker.mjs +1 -1
- package/dist/{src-AYMALWU5.mjs → src-EGLLMTAU.mjs} +44 -14
- package/dist/{stream-import-RXNSOOYH.mjs → stream-import-2BXJTTCE.mjs} +7 -7
- package/dist/{worker-runtime-JGAZU7MC.mjs → worker-runtime-RDLSPXFT.mjs} +5 -5
- package/dist-cli-web/assets/AISettingsTab-CEhrXlYR.js +1 -0
- package/dist-cli-web/assets/{AboutTab-DCM1-glA.js → AboutTab-Bbu0SsMM.js} +1 -1
- package/dist-cli-web/assets/ActionToolsPanel-DDNXXH8v.css +1 -0
- package/dist-cli-web/assets/ActionToolsPanel.vue_vue_type_script_setup_true_lang-IB1yZxCE.js +75 -0
- package/dist-cli-web/assets/{Alert-D-egBWcb.js → Alert-510jTN3l.js} +1 -1
- package/dist-cli-web/assets/ApiSettingsTab-Bi1GRMN4.js +2 -0
- package/dist-cli-web/assets/BatchManageTab-DhnqMCSM.js +1 -0
- package/dist-cli-web/assets/{BufferResource-BE2_2bZK.js → BufferResource-CKZxnACp.js} +1 -1
- package/dist-cli-web/assets/{CanvasRenderer-DDKdvEYQ.js → CanvasRenderer-BeK5POBy.js} +1 -1
- package/dist-cli-web/assets/CardDecoration-RuBA3N2j.js +1 -0
- package/dist-cli-web/assets/ChatRecordDrawer-BY_-lIEj.js +1 -0
- package/dist-cli-web/assets/{ChatRecordWorkspace-DqUI4QiU.js → ChatRecordWorkspace-7prKd-Tq.js} +1 -1
- package/dist-cli-web/assets/Checkbox-_eH64bb0.js +1 -0
- package/dist-cli-web/assets/DataDirCleanupNotice-BHaXwlfr.js +1 -0
- package/dist-cli-web/assets/{DatePicker.vue_vue_type_script_setup_true_lang-sPDoPzZ9.js → DatePicker.vue_vue_type_script_setup_true_lang-D9Ul_GYz.js} +1 -1
- package/dist-cli-web/assets/{DebugToolsPanel-BIHA6jw4.js → DebugToolsPanel-ByKItGrS.js} +1 -1
- package/dist-cli-web/assets/EChart.vue_vue_type_script_setup_true_lang-DubnuUXI.js +1 -0
- package/dist-cli-web/assets/EChartBar.vue_vue_type_script_setup_true_lang-DKNCZuFm.js +1 -0
- package/dist-cli-web/assets/EChartLine.vue_vue_type_script_setup_true_lang-Fl7xAOSR.js +1 -0
- package/dist-cli-web/assets/EChartWordcloud-C6XM4KOX.js +1 -0
- package/dist-cli-web/assets/FileDropZone.vue_vue_type_script_setup_true_lang-DYDdRSNE.js +1 -0
- package/dist-cli-web/assets/{Filter-kO4dIDJ2.js → Filter-CByj_rCR.js} +1 -1
- package/dist-cli-web/assets/GlobalTaskBar-BdELjzrs.js +1 -0
- package/dist-cli-web/assets/GlobalTaskBar-haLzezqY.css +1 -0
- package/dist-cli-web/assets/GroupRelationshipGalaxyView-CnzPEgUS.js +1 -0
- package/dist-cli-web/assets/Label-DCIcxkhU.js +1 -0
- package/dist-cli-web/assets/LoadingState.vue_vue_type_script_setup_true_lang-BBcCt_Qm.js +1 -0
- package/dist-cli-web/assets/MessageExportModal-DNU16Bs8.js +1 -0
- package/dist-cli-web/assets/PageHeader-CKeZjNNR.js +1 -0
- package/dist-cli-web/assets/PageHeader-CPLgiKT8.css +1 -0
- package/dist-cli-web/assets/{PageTabs.vue_vue_type_script_setup_true_lang-Cgungbjl.js → PageTabs.vue_vue_type_script_setup_true_lang-C8M3wNNH.js} +1 -1
- package/dist-cli-web/assets/{RelationshipGalaxyCanvas-Cod1JX9m.js → RelationshipGalaxyCanvas-CDhljGyJ.js} +3 -3
- package/dist-cli-web/assets/{RelationshipGalaxyThreeCanvas-CkefzeFJ.js → RelationshipGalaxyThreeCanvas-BP8fsvvf.js} +1 -1
- package/dist-cli-web/assets/{RenderTargetSystem-SuQ7cbze.js → RenderTargetSystem-D76QrDT_.js} +1 -1
- package/dist-cli-web/assets/{RovingFocusItem-psoFYxrC.js → RovingFocusItem-BJMUQ5DJ.js} +1 -1
- package/dist-cli-web/assets/{ScreenCaptureModal-D4r9ixKh.js → ScreenCaptureModal-DkX4z-M1.js} +1 -1
- package/dist-cli-web/assets/SectionTabs.vue_vue_type_script_setup_true_lang-qFhJO5B0.js +1 -0
- package/dist-cli-web/assets/Select-B5oJc5y1.js +1 -0
- package/dist-cli-web/assets/SettingsModal-BO-QKQ2h.js +2 -0
- package/dist-cli-web/assets/{StorageTab-DhSJ-0Ir.js → StorageTab-CPPXXaRm.js} +1 -1
- package/dist-cli-web/assets/Switch-CDk3LZ4_.js +1 -0
- package/dist-cli-web/assets/Tabs-BMq9wODW.js +1 -0
- package/dist-cli-web/assets/{Tabs-Bnm_Q7yW.js → Tabs-DqWTBV8x.js} +1 -1
- package/dist-cli-web/assets/ThemeCard.vue_vue_type_script_setup_true_lang-D2outEOV.js +1 -0
- package/dist-cli-web/assets/{TimeSelect.vue_vue_type_script_setup_true_lang-Cjz8Wpg-.js → TimeSelect.vue_vue_type_script_setup_true_lang-BcflxP_U.js} +1 -1
- package/dist-cli-web/assets/{VisuallyHiddenInput-Bo_XwaLu.js → VisuallyHiddenInput-BAFpkxMI.js} +1 -1
- package/dist-cli-web/assets/{WebGLRenderer-D1x9WZRj.js → WebGLRenderer-DjCPvR_O.js} +1 -1
- package/dist-cli-web/assets/{WebGPURenderer-37Nw-tLm.js → WebGPURenderer-C2B_u03z.js} +1 -1
- package/dist-cli-web/assets/aiChat--CR4g2M7.js +8 -0
- package/dist-cli-web/assets/base-F6s0vTrr.js +1 -0
- package/dist-cli-web/assets/{browserAll-CWrz_-4U.js → browserAll-DiUAZg4L.js} +1 -1
- package/dist-cli-web/assets/chatMessages-BGRbSlvD.css +1 -0
- package/dist-cli-web/assets/chatMessages-Bd33SSXI.js +147 -0
- package/dist-cli-web/assets/cli-web-DoibEdj2.js +1 -0
- package/dist-cli-web/assets/{fetch-CkXgOxcu.js → fetch-4nh1LaVF.js} +3 -3
- package/dist-cli-web/assets/fetch-7lUvXbhU.js +1 -0
- package/dist-cli-web/assets/{fetch-CFpLXWTe.js → fetch-BEaW1j5H.js} +1 -1
- package/dist-cli-web/assets/{fetch-CgA1peJD.js → fetch-B_YFABxI.js} +1 -1
- package/dist-cli-web/assets/{fetch-BGmCCyzz.js → fetch-BeX69kpS.js} +1 -1
- package/dist-cli-web/assets/{fetch-Du-wU0OO.js → fetch-CRocA-4C.js} +1 -1
- package/dist-cli-web/assets/{fetch-DPSWt6yX.js → fetch-CXM-cjDS.js} +1 -1
- package/dist-cli-web/assets/{fetch-qd2FgBWQ.js → fetch-CXqeAbnY.js} +1 -1
- package/dist-cli-web/assets/{fetch-6pcVxB9h.js → fetch-CxVcHNid.js} +1 -1
- package/dist-cli-web/assets/fetch-DBpDMy29.js +1 -0
- package/dist-cli-web/assets/{fetch-Gu4qQjUB.js → fetch-DKBBS9Op.js} +1 -1
- package/dist-cli-web/assets/{fetch-DZ6OF-xW.js → fetch-epFXmPIQ.js} +1 -1
- package/dist-cli-web/assets/{host-D8zlA62K.js → host-C4rU8pKA.js} +1 -1
- package/dist-cli-web/assets/{host-CWsAWKgy.js → host-CtSqR_Zm.js} +1 -1
- package/dist-cli-web/assets/{index-Dy0fRMDf.js → index-4DVZ2g0M.js} +10 -10
- package/dist-cli-web/assets/index-B1oj9KDv.js +135 -0
- package/dist-cli-web/assets/index-BFH1j_R9.js +1 -0
- package/dist-cli-web/assets/index-BZpR015e.css +1 -0
- package/dist-cli-web/assets/index-BgelKQTW.css +1 -0
- package/dist-cli-web/assets/{index-v6DlL4ue.js → index-BvMAw3Zd.js} +1 -1
- package/dist-cli-web/assets/index-C1A1FwpO.css +1 -0
- package/dist-cli-web/assets/index-CIIyg_o9.css +1 -0
- package/dist-cli-web/assets/index-CaYtkONV.js +64 -0
- package/dist-cli-web/assets/index-CuCQ1d9f.js +1 -0
- package/dist-cli-web/assets/index-D3Hyjv4e.js +137 -0
- package/dist-cli-web/assets/index-D8cHMqV-.js +2 -0
- package/dist-cli-web/assets/index-DlHuILT_.js +1 -0
- package/dist-cli-web/assets/index-R4LqAnx9.js +2 -0
- package/dist-cli-web/assets/index-_m1mf1jm.js +1 -0
- package/dist-cli-web/assets/{index-a7CT8DQm.js → index-ekvsNmfe.js} +1 -1
- package/dist-cli-web/assets/index-mXe1LssU.js +1 -0
- package/dist-cli-web/assets/index-mbLXPIyC.js +1 -0
- package/dist-cli-web/assets/{people-page-header-Czt9e1jv.js → people-page-header-BbYSSpsO.js} +1 -1
- package/dist-cli-web/assets/{prompt-DGazz143.js → prompt-C-ofJ7t_.js} +1 -1
- package/dist-cli-web/assets/{semantic-index-config-builder-BkFHzIUy.js → semantic-index-config-builder-D3TYVYC-.js} +1 -1
- package/dist-cli-web/assets/service-BYOUkk7V.js +1 -0
- package/dist-cli-web/assets/{service-CAp0YJoS.js → service-CppETV4a.js} +1 -1
- package/dist-cli-web/assets/service-tEx-5LUL.js +1 -0
- package/dist-cli-web/assets/useFormControl-CrWi_6Hn.js +1 -0
- package/dist-cli-web/assets/useTable-Clk7ecq-.js +1 -0
- package/dist-cli-web/assets/{useToast-YAHDkKDN.js → useToast-B5LaA6c-.js} +1 -1
- package/dist-cli-web/assets/{vendor-echarts-hTLhTs52.js → vendor-echarts-C9ugTmum.js} +1 -1
- package/dist-cli-web/assets/{vendor-echarts-wordcloud-B8CF_NgP.js → vendor-echarts-wordcloud-DNiU8Psq.js} +1 -1
- package/dist-cli-web/assets/{webworkerAll-CvSp2Y8j.js → webworkerAll-CyA4b4LT.js} +1 -1
- package/dist-cli-web/index.html +2 -2
- package/package.json +3 -3
- package/dist/chunk-6E46U4H2.mjs +0 -41
- package/dist/chunk-6E46U4H2.mjs.map +0 -1
- package/dist/chunk-6EZPD3XJ.mjs.map +0 -1
- package/dist/chunk-HWIXK7SU.mjs.map +0 -1
- package/dist/chunk-TJ3NOBVI.mjs.map +0 -1
- package/dist/chunk-TRGR3KKJ.mjs.map +0 -1
- package/dist/chunk-VREVDZ4Q.mjs.map +0 -1
- package/dist/chunk-VUYWUHWW.mjs.map +0 -1
- package/dist/chunk-WJQOXOMR.mjs.map +0 -1
- package/dist/chunk-WRBFV2GX.mjs.map +0 -1
- package/dist/chunk-YUH3H3QW.mjs.map +0 -1
- package/dist-cli-web/assets/AISettingsTab-VgI7PiJd.js +0 -1
- package/dist-cli-web/assets/ActionToolsPanel-BTGgwXVD.css +0 -1
- package/dist-cli-web/assets/ActionToolsPanel.vue_vue_type_script_setup_true_lang-a7RMjjve.js +0 -112
- package/dist-cli-web/assets/ApiSettingsTab-Co3LWf1f.js +0 -2
- package/dist-cli-web/assets/BatchManageTab-2LrckmQm.js +0 -1
- package/dist-cli-web/assets/ChatRecordDrawer-DRhztqLG.js +0 -1
- package/dist-cli-web/assets/Checkbox-EfpQmv4A.js +0 -1
- package/dist-cli-web/assets/DataDirCleanupNotice-BYIiR58J.js +0 -1
- package/dist-cli-web/assets/EChart.vue_vue_type_script_setup_true_lang-DryMSoCz.js +0 -1
- package/dist-cli-web/assets/EChartBar.vue_vue_type_script_setup_true_lang-BdFW-hvt.js +0 -1
- package/dist-cli-web/assets/EChartLine.vue_vue_type_script_setup_true_lang-C69Kdw9X.js +0 -1
- package/dist-cli-web/assets/EChartWordcloud-DM7UEHdK.js +0 -1
- package/dist-cli-web/assets/GlobalTaskBar-BZS_h0zC.js +0 -1
- package/dist-cli-web/assets/GlobalTaskBar-COW_uBX6.css +0 -1
- package/dist-cli-web/assets/GroupRelationshipGalaxyView--WIaHx_F.js +0 -1
- package/dist-cli-web/assets/Label-CIuDXyeM.js +0 -1
- package/dist-cli-web/assets/LoadingState.vue_vue_type_script_setup_true_lang-B_7VHxTx.js +0 -1
- package/dist-cli-web/assets/MessageExportModal-BQsIpyxv.js +0 -1
- package/dist-cli-web/assets/PageHeader-DxhQHF_0.js +0 -1
- package/dist-cli-web/assets/PageHeader-XIXMTomn.css +0 -1
- package/dist-cli-web/assets/SectionTabs.vue_vue_type_script_setup_true_lang-v_7aRBgM.js +0 -1
- package/dist-cli-web/assets/Select-CxurgslB.js +0 -1
- package/dist-cli-web/assets/SettingsModal-DBZucuf6.js +0 -2
- package/dist-cli-web/assets/Switch-3D81G6uV.js +0 -1
- package/dist-cli-web/assets/Tabs-DB603EEu.js +0 -1
- package/dist-cli-web/assets/ThemeCard.vue_vue_type_script_setup_true_lang-BDTdkH5i.js +0 -1
- package/dist-cli-web/assets/aiChat-BCzYQeZq.js +0 -8
- package/dist-cli-web/assets/cli-web-C-8N0CJh.js +0 -1
- package/dist-cli-web/assets/fetch-B69OkB6B.js +0 -1
- package/dist-cli-web/assets/fetch-z9M9FcIC.js +0 -1
- package/dist-cli-web/assets/index-BGd4ZfhO.js +0 -2
- package/dist-cli-web/assets/index-BYZF1ngN.js +0 -1
- package/dist-cli-web/assets/index-BcuwlCin.css +0 -1
- package/dist-cli-web/assets/index-BnaLj2dx.css +0 -1
- package/dist-cli-web/assets/index-Bq5q3kSU.js +0 -36
- package/dist-cli-web/assets/index-CPR3jdC2.js +0 -137
- package/dist-cli-web/assets/index-D3AjvaOX.js +0 -1
- package/dist-cli-web/assets/index-DAitScUA.js +0 -1
- package/dist-cli-web/assets/index-DBSMWAJ0.js +0 -1
- package/dist-cli-web/assets/index-DTn9htw-.js +0 -64
- package/dist-cli-web/assets/index-DV_rWxcH.js +0 -1
- package/dist-cli-web/assets/index-DxhAGqYM.css +0 -1
- package/dist-cli-web/assets/index-I0mIcDpE.css +0 -1
- package/dist-cli-web/assets/index-onwNShRw.js +0 -2
- package/dist-cli-web/assets/service-BMqwB74f.js +0 -1
- package/dist-cli-web/assets/service-CUQ8iHdS.js +0 -1
- package/dist-cli-web/assets/useFormControl-DcSMUc2d.js +0 -1
- package/dist-cli-web/assets/useTable-Clmq3sge.js +0 -1
- /package/dist/{chunk-TWH422HC.mjs.map → chunk-MMTEGUQA.mjs.map} +0 -0
- /package/dist/{chunk-CH5YAZ4Q.mjs.map → chunk-PDQV4RUA.mjs.map} +0 -0
- /package/dist/{http-237XYNRT.mjs.map → http-LPFPVTBC.mjs.map} +0 -0
- /package/dist/{import-R2E2TFAK.mjs.map → import-T4WX2ZJL.mjs.map} +0 -0
- /package/dist/{mcp-BED4AARV.mjs.map → mcp-SMF3NWIN.mjs.map} +0 -0
- /package/dist/{src-AYMALWU5.mjs.map → src-EGLLMTAU.mjs.map} +0 -0
- /package/dist/{stream-import-RXNSOOYH.mjs.map → stream-import-2BXJTTCE.mjs.map} +0 -0
- /package/dist/{worker-runtime-JGAZU7MC.mjs.map → worker-runtime-RDLSPXFT.mjs.map} +0 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/RelationshipGalaxyThreeCanvas-BP8fsvvf.js","assets/index-B1oj9KDv.js","assets/vendor-snapdom--nZvo8Sg.js","assets/index-BZpR015e.css","assets/relationship-galaxy-connections-Cg4G5yYE.js","assets/relationship-galaxy-viewport-Cwfa51ER.js","assets/RelationshipGalaxyThreeCanvas-CCasBcBQ.css","assets/RelationshipGalaxyCanvas-CDhljGyJ.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{d as Rt,a6 as Tt,L as Nt,K as de,x as Mt,al as It,o as y,c as k,a as n,f as te,g,z as M,a1 as Pt,w as he,a8 as Lt,aQ as Et,aq as Gt,p as i,F as Ne,j as Me,n as Ie,aN as Pe,l as L,a9 as Le,O as Kt,bs as Ue,b as m,e as h,C as ae,bt as qe,bv as Vt}from"./index-B1oj9KDv.js";import{_ as At}from"./Tabs-BMq9wODW.js";import{u as Ft}from"./useToast-B5LaA6c-.js";import{_ as $t}from"./LoadingState.vue_vue_type_script_setup_true_lang-BBcCt_Qm.js";import{u as zt}from"./people-page-header-BbYSSpsO.js";import{b as Ot,a as Dt}from"./relationship-galaxy-connections-Cg4G5yYE.js";const jt=10,Ye=80,Bt=2880*60*60,Qe=.1;function Ht(e,l,r={}){if(!l)return{items:[],total:0,hasMore:!1};const b=new Map(e.nodes.map(v=>[v.key,v])),a=e.edges.flatMap(v=>{if(v.sourceKey!==l&&v.targetKey!==l)return[];const _=v.sourceKey===l?v.targetKey:v.sourceKey,K=b.get(_);return K?[{node:K,edge:v,connectionScore:0}]:[]}),u=a.reduce((v,_)=>Math.max(v,_.edge.lastInteractionTs??0),0),E=new Map(a.map(v=>[v,Ee(v.edge,u)]));for(const v of a)v.connectionScore=Ut(E.get(v)??0);a.sort((v,_)=>qt(v,_,u));const G=r.collapsedLimit??jt;return{items:r.expanded?a:a.slice(0,G),total:a.length,hasMore:!r.expanded&&a.length>G}}function Eo(e,l,r={}){return Dt(e,l,{limit:r.limit??Ye})}function Go(e,l,r={}){return Ot(e,l,r)}function Ut(e){return e<=0?0:Math.max(1,Math.round(e))}function qt(e,l,r){const b=Ee(l.edge,r),a=Ee(e.edge,r);if(b!==a)return b-a;if(l.edge.weight!==e.edge.weight)return l.edge.weight-e.edge.weight;const u=l.edge.lastInteractionTs??0,E=e.edge.lastInteractionTs??0;return u!==E?u-E:e.node.rank!==l.node.rank?e.node.rank-l.node.rank:e.node.key.localeCompare(l.node.key)}function Ee(e,l){if(!e.lastInteractionTs||l<=0)return e.weight;const r=Math.max(0,l-e.lastInteractionTs),b=Qe+(1-Qe)*Math.pow(.5,r/Bt);return e.weight*b}function We(e){return e.selectedKey&&e.selectedKey===e.loadingNeighborhoodKey?e.currentCanvasSelectedKey:e.selectedKey}function Qt(e){return e.selectedKey?e.isNeighborhoodMode?e.selectedKey!==e.neighborhoodContactKey:!0:!1}function Wt(e){return e.neighborhoodTask?.status==="running"?e.neighborhoodTask:e.graphTask?.status==="running"?e.graphTask:e.isNeighborhoodMode&&e.neighborhoodTask?e.neighborhoodTask:e.graphTask??e.neighborhoodTask??null}function Yt(e){return e.nextTaskStatus==="running"?{type:"continue-polling"}:e.previousTaskStatus==="running"&&e.nextTaskStatus==="succeeded"&&e.neighborhoodContactKey?{type:"refresh-neighborhood",key:e.neighborhoodContactKey}:{type:"stop-polling"}}function Xt(e){return e.loadError?e.loadError:e.isTaskFailed&&e.statusText?e.statusText:e.emptyText}const Jt=new RegExp("\\p{Script=Han}","u");function Xe(e){const l=e?.trim()??"";if(!l)return"*";const r=Array.from(l),b=[...r].reverse().find(a=>Jt.test(a));return b?`**${b}`:r.length===1?"*":r.length===2?`${r[0]}***`:`${r[0]}***${r.at(-1)}`}function Je(e,l){if(e.kind==="owner")return l.ownerLabel;const r=e.displayName||e.platformId||e.key;return l.privacyMode?Xe(r):r}function Zt(e,l){return e.kind==="owner"?l.ownerLabel:l.privacyMode?"*":(e.displayName||e.platformId||"?").slice(0,1)}function ea(e,l){return e.kind==="owner"?e.avatar:l?null:e.avatar}function ta(e,l){const r=e.platformId||e.key;return l?Xe(r):r}const aa="3d";function oa(e){return e==="3d"?"2d":e}function na(e,l,r){return l||r?r:e?.captureView()??null}function sa(e,l){return l&&e?.restoreView(l)===!0?!0:(e?.fitView(),!1)}function la(e,l){return{nodes:e.nodes.map(r=>({...r,displayName:Je(r,l),visualRole:r.kind==="owner"?"anchor":r.pool==="friend"?"close":"standard",importance:ca(r)})),edges:e.edges.map(r=>({...r})),communities:e.communities.map(r=>({...r}))}}function ra(e,l){const r=new Map(e.nodes.map(u=>[u.key,u])),b=new Map(e.edges.map(u=>[u.id,u])),a=new Map(e.communities.map(u=>[u.id,u]));for(const u of l.nodes)r.has(u.key)||r.set(u.key,u);for(const u of l.edges)b.set(u.id,u);for(const u of l.communities)a.has(u.id)||a.set(u.id,u);return{nodes:[...r.values()],edges:[...b.values()],communities:[...a.values()]}}function ia(e){const l=e.selectedKey;return!l||!e.neighborhood||!e.neighborhood.nodes.some(r=>r.key===l)?e.panorama:ra(e.panorama,e.neighborhood)}function ca(e){if(e.kind==="owner")return 1;const l=oe(e.score,0,1),r=oe(1-(e.rank-1)/120,0,1),b=oe(Math.log10(e.privateMessageCount+1)/4,0,1),a=oe(Math.log10(e.groupMessageCount+1)/4.5,0,1),u=e.pool==="friend"?.12:0;return oe(l*.36+r*.36+b*.18+a*.08+u,0,1)}function oe(e,l,r){return Math.min(r,Math.max(l,e))}const ua={class:"flex min-h-0 flex-1 overflow-hidden text-gray-900 dark:bg-page-dark dark:text-gray-100"},da={class:"dark relative min-h-0 min-w-0 flex-1 overflow-hidden bg-[#03050c] text-gray-100"},ha={class:"absolute left-4 top-4 z-20 flex max-w-[calc(100%-2rem)] flex-wrap items-center gap-1.5 rounded-2xl border border-white/8 bg-[#070a12]/78 p-1.5 shadow-overlay backdrop-blur-xl sm:left-6 sm:max-w-[calc(100%-3rem)]"},pa={class:"relative w-28 max-w-full sm:w-32 lg:w-36"},va={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"},fa={class:"px-2 pb-1.5 pt-0.5 text-[11px] font-semibold uppercase tracking-wider text-gray-500 dark:text-gray-400"},ga={class:"space-y-1"},ma=["disabled","onClick"],ya={class:"min-w-0 flex-1"},xa={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"},ba={class:"block truncate text-[11px] text-gray-500 dark:text-gray-400"},ka={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"},wa={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"},_a={key:4,class:"absolute inset-0 flex items-center justify-center text-sm font-medium text-gray-400"},Sa={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/8 bg-[#070a12]/84 text-white shadow-overlay backdrop-blur-2xl md:inset-x-auto md:bottom-4 md:right-4 md:top-4 md:max-h-none md:w-[360px]"},Ca={key:0,class:"flex min-h-0 flex-1 flex-col gap-3 px-4 pb-4 pt-5"},Ra={class:"shrink-0 space-y-2.5"},Ta={class:"flex items-center gap-3 pr-8"},Na={class:"min-w-0 flex-1"},Ma={class:"flex min-w-0 items-center gap-1.5"},Ia={class:"truncate text-base font-bold text-gray-900 dark:text-white"},Pa={class:"truncate text-xs text-gray-500 dark:text-gray-400"},La={class:"grid grid-cols-3 gap-y-1 rounded-xl border border-white/8 bg-white/3 p-1 text-xs"},Ea={class:"min-w-0 px-2 py-1.5"},Ga={class:"mb-0.5 truncate text-[9px] font-semibold uppercase leading-3 tracking-wide text-gray-400 dark:text-gray-500"},Ka={class:"flex min-w-0 items-baseline gap-0.5"},Va={class:"font-mono text-sm font-bold leading-4 text-sky-600 dark:text-sky-400"},Aa={class:"min-w-0 border-l border-white/6 px-2 py-1.5"},Fa={class:"mb-0.5 truncate text-[9px] font-semibold uppercase leading-3 tracking-wide text-gray-400 dark:text-gray-500"},$a={class:"min-w-0 border-l border-white/6 px-2 py-1.5"},za={class:"mb-0.5 truncate text-[9px] font-semibold uppercase leading-3 tracking-wide text-gray-400 dark:text-gray-500"},Oa={class:"block truncate font-mono text-sm font-bold leading-4 text-gray-900 dark:text-white"},Da={class:"min-w-0 border-t border-white/6 px-2 py-1.5"},ja={class:"mb-0.5 truncate text-[9px] font-semibold uppercase leading-3 tracking-wide text-gray-400 dark:text-gray-500"},Ba={class:"block truncate font-mono text-sm font-bold leading-4 text-gray-900 dark:text-white"},Ha={class:"min-w-0 border-l border-t border-white/6 px-2 py-1.5"},Ua={class:"mb-0.5 truncate text-[9px] font-semibold uppercase leading-3 tracking-wide text-gray-400 dark:text-gray-500"},qa={class:"block truncate font-mono text-sm font-bold leading-4 text-gray-900 dark:text-white"},Qa={class:"min-w-0 border-l border-t border-white/6 px-2 py-1.5"},Wa={class:"mb-0.5 truncate text-[9px] font-semibold uppercase leading-3 tracking-wide text-gray-400 dark:text-gray-500"},Ya={class:"block truncate text-[11px] font-semibold leading-4 text-gray-900 dark:text-white"},Xa={class:"flex min-h-0 flex-1 flex-col gap-2"},Ja={class:"flex min-h-0 flex-1 flex-col overflow-hidden border-t border-white/7 pt-3"},Za={class:"mb-2 flex shrink-0 items-center justify-between gap-3 pl-1 pr-3"},eo={class:"flex min-w-0 items-center gap-2"},to={class:"truncate text-xs font-semibold uppercase tracking-wider text-gray-500 dark:text-gray-400"},ao={class:"shrink-0 font-mono text-[10px] font-bold text-gray-400 dark:text-gray-500"},oo={class:"w-14 shrink-0 text-right text-[10px] font-semibold uppercase tracking-wider text-gray-400 dark:text-gray-500"},no={key:0,class:"min-h-0 flex-1 space-y-0.5 overflow-y-auto pr-1 scrollbar-thin"},so=["onClick"],lo={class:"min-w-0 flex-1"},ro={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"},io={class:"flex w-14 shrink-0 justify-end"},co={class:"font-mono text-[10px] font-bold text-gray-500 dark:text-gray-400"},uo={key:1,class:"py-4 text-center text-xs text-gray-400 dark:text-gray-500"},ho={key:0,class:"flex min-h-0 flex-1 flex-col overflow-hidden border-t border-white/7 pt-3"},po={class:"mb-2 flex shrink-0 items-center justify-between gap-3 pl-1 pr-3"},vo={class:"flex min-w-0 items-center gap-2"},fo={class:"truncate text-xs font-semibold uppercase tracking-wider text-gray-500 dark:text-gray-400"},go={class:"shrink-0 font-mono text-[10px] font-bold text-gray-400 dark:text-gray-500"},mo={class:"w-14 shrink-0 text-right text-[10px] font-semibold uppercase tracking-wider text-gray-400 dark:text-gray-500"},yo={class:"min-h-0 flex-1 space-y-0.5 overflow-y-auto pr-1 scrollbar-thin"},xo={class:"flex min-w-0 items-center gap-2"},bo={class:"flex h-6 w-6 shrink-0 items-center justify-center rounded-md bg-white/45 shadow-sm dark:bg-white/5"},ko={class:"truncate font-semibold leading-4 text-gray-700 dark:text-gray-200"},wo={class:"flex w-14 shrink-0 justify-end"},_o={class:"font-mono text-[10px] font-bold text-gray-500 dark:text-gray-400"},So=1400,Co=392,Ro=Rt({__name:"index",setup(e){const l={nodes:[],edges:[],communities:[]},r=Ue(()=>qe(()=>import("./RelationshipGalaxyThreeCanvas-BP8fsvvf.js"),__vite__mapDeps([0,1,2,3,4,5,6]))),b=Ue(()=>qe(()=>import("./RelationshipGalaxyCanvas-CDhljGyJ.js").then(t=>t.as),__vite__mapDeps([7,1,2,3,5]))),{t:a,locale:u}=Tt(),E=Nt(),G=Ft(),A=m("1y"),v=m("panorama"),_=m(""),K=m(""),z=m(!1),ne=m(""),d=m(null),V=m(!1),O=m(null),C=m(null),pe=m(!1),ve=m(!1),q=m(!1),Ge=m(!1),F=m(null),R=m(null),I=m(!1),D=m(aa),Q=m(""),W=m(0),j=m(0),T=m(null),se=m(null);let le=null,fe=null,Y=null,X=null,re=null;const Ze=h(()=>new Intl.NumberFormat(u.value)),et=h(()=>Vt.map(t=>({label:a(`relationships.timeRange.${t}`),value:t}))),tt=h(()=>[{label:a("relationships.graphScope.panorama"),value:"panorama"},{label:a("relationships.graphScope.close"),value:"close"},{label:a("relationships.graphScope.friends"),value:"friends"}]),P=h(()=>O.value?.graph??l),$=h(()=>C.value?.graph??P.value),Ke=h(()=>ia({panorama:P.value,neighborhood:C.value?.graph??null,selectedKey:d.value})),at=h(()=>la(Ke.value,{privacyMode:I.value,ownerLabel:a("relationships.owner.me")})),ot=h(()=>{const t=d.value;return t&&Ke.value.nodes.some(s=>s.key===t)?t:null}),ge=h(()=>!!C.value),me=h(()=>P.value.nodes.length>0||$.value.nodes.length>0),J=h(()=>Wt({graphTask:O.value?.task??null,neighborhoodTask:C.value?.task??null,isNeighborhoodMode:ge.value})),Z=h(()=>J.value?.status==="running"),Ve=h(()=>J.value?.status==="failed"),nt=h(()=>O.value?.cache.status??C.value?.cache.status),Ae=h(()=>O.value?.searchResults??[]),Fe=h(()=>_.value.trim().length>0),st=h(()=>Fe.value&&_.value.trim()===ne.value&&z.value&&Ae.value.length>0),lt=h(()=>(pe.value||Z.value)&&!me.value),rt=h(()=>Z.value&&me.value),x=h(()=>d.value?$.value.nodes.find(t=>t.key===d.value)??P.value.nodes.find(t=>t.key===d.value)??C.value?.contact??null:null),$e=h(()=>V.value&&!!x.value),ze=h(()=>$e.value&&Ge.value?Co:0),it=h(()=>Qt({selectedKey:d.value,isNeighborhoodMode:ge.value,neighborhoodContactKey:C.value?.contact?.key??null})),ie=h(()=>Ht($.value,d.value,{collapsedLimit:Ye})),ye=h(()=>({nodes:P.value.nodes.length,edges:P.value.edges.length,communities:P.value.communities.length})),xe=h(()=>[...$.value.communities].sort((t,s)=>s.size-t.size).slice(0,8)),be=h(()=>nt.value==="stale"&&Z.value?a("relationships.task.updating"):Z.value?vt(J.value):Ve.value?J.value?.lastError||a("relationships.task.failed"):""),ct=h(()=>Xt({loadError:Q.value,isTaskFailed:Ve.value,statusText:be.value,emptyText:a("relationships.empty")}));function w(t){return Ze.value.format(t)}function ut(t){return Math.round(t*100).toString()}function dt(){const t=ie.value.items.length,s=ie.value.total;return s<=t?w(s):`${w(t)} / ${w(s)}`}function ht(t){return t?new Date(t*1e3).toLocaleDateString():a("relationships.detail.emptyValue")}function ke(t){return Zt(t,{privacyMode:I.value,ownerLabel:a("relationships.owner.avatarText")})}function we(t){return ea(t,I.value)}function B(t){return Je(t,{privacyMode:I.value,ownerLabel:a("relationships.owner.me")})}function pt(t){return ta(t,I.value)}function Oe(t){return t.kind==="owner"?a("relationships.owner.type"):t.friendSource==="manual"?a("relationships.pool.manualFriend"):t.pool==="friend"?a("relationships.pool.friend"):a("relationships.pool.nonFriend")}function vt(t){return a("relationships.task.running",{current:w(t?.processedSessions??0),total:w(t?.totalSessions??0)})}function De(t){const s=je(t,v.value);le&&le!==s&&ce();const f=O.value;O.value=f&&le===s?{...t,graph:f.graph}:t,le=s}function ft(t){const s=je(t,`neighborhood:${t.contact?.key??""}`),f=C.value;C.value=f&&fe===s?{...t,graph:f.graph}:t,fe=s}function H(){C.value=null,fe=null}function je(t,s){const f=t.graph;let o=2166136261;o=S(o,s),o=S(o,t.algorithmVersion),o=S(o,t.cache.signature??""),o=N(o,t.timeRange.startTs??0),o=S(o,t.timeRange.preset);for(const p of f.nodes)o=S(o,p.key),o=S(o,p.pool),o=S(o,p.friendSource??""),o=N(o,p.rank),o=N(o,Math.round(p.score*1e6)),o=N(o,p.labelVisibility),o=N(o,Math.round(p.x*100)),o=N(o,Math.round(p.y*100)),o=N(o,Math.round(p.size*100));for(const p of f.edges)o=S(o,p.id),o=S(o,p.sourceKey),o=S(o,p.targetKey),o=N(o,Math.round(p.weight*1e6)),o=N(o,p.visibility);for(const p of f.communities)o=S(o,p.id),o=N(o,p.size),o=S(o,p.color);return`${s}:${f.nodes.length}:${f.edges.length}:${f.communities.length}:${o>>>0}`}function S(t,s){for(let f=0;f<s.length;f+=1)t^=s.charCodeAt(f),t=Math.imul(t,16777619);return t}function N(t,s){return S(t,String(s))}function _e(){Y&&(clearInterval(Y),Y=null)}function U(){j.value+=1,q.value=!1,F.value=null}function Be(){se.value=na(T.value,d.value,se.value)}function ce(){se.value=null}function gt(){const t=se.value;ce(),ae(()=>{sa(T.value,t)})}function Se(t){if(t?.status==="running"){Y||(Y=setInterval(()=>{ee({silent:!0,preserveNeighborhood:!0})},So));return}_e()}async function ee(t={}){const s=W.value+1;W.value=s;const f=J.value?.status??null,o=t.preserveNeighborhood?C.value?.contact?.key??null:null;t.silent||(pe.value=!0),t.preserveNeighborhood||(U(),H()),Q.value="";try{const p=await E.getPeopleRelationships({acceptStale:!0,timeRangePreset:A.value,graphScope:v.value,query:K.value.trim()||void 0});if(s!==W.value)return;De(p),ne.value=K.value.trim(),d.value&&!$.value.nodes.some(Te=>Te.key===d.value)&&(d.value=null,R.value=null,V.value=!1);const c=Yt({previousTaskStatus:f,nextTaskStatus:p.task?.status??null,neighborhoodContactKey:o});Se(p.task),c.type==="refresh-neighborhood"&&ue(c.key)}catch(p){if(s!==W.value)return;Q.value=String(p),G.fail(a("relationships.toast.loadFailed"),{description:String(p)}),_e()}finally{s===W.value&&(pe.value=!1)}}async function mt(){ve.value=!0,Q.value="";try{const t=await E.recomputePeopleRelationships({timeRangePreset:A.value,graphScope:v.value,query:K.value.trim()||void 0});De(t),ne.value=K.value.trim(),U(),H(),d.value=null,R.value=null,V.value=!1,Se(t.task),G.success(a("relationships.toast.recomputeStarted"))}catch(t){G.fail(a("relationships.toast.recomputeFailed"),{description:String(t)})}finally{ve.value=!1}}const yt=h(()=>({title:a("layout.relationships"),description:a("relationships.subtitle"),icon:"i-lucide-git-fork",iconClass:"bg-primary-600 text-white dark:bg-primary-500 dark:text-white shadow-sm",action:{label:a("relationships.actions.recompute"),icon:"i-lucide-refresh-cw",loading:ve.value,disabled:Z.value,class:"border border-sky-100 hover:border-sky-200 dark:border-sky-950/30 dark:hover:border-sky-900/50",onClick:mt},stats:[{id:"nodes",label:a("relationships.stats.nodes"),value:w(ye.value.nodes)},{id:"edges",label:a("relationships.stats.edges"),value:w(ye.value.edges)},{id:"communities",label:a("relationships.stats.communities"),value:w(ye.value.communities),dividerBefore:!0}]}));zt(yt);async function ue(t){const s=j.value+1;j.value=s,q.value=!0,F.value=t,Q.value="";const f=!P.value.nodes.some(o=>o.key===t);try{const o=await E.getPeopleRelationshipNeighborhood(t,{acceptStale:!0,timeRangePreset:A.value,graphScope:v.value});if(s!==j.value)return;ft(o),d.value=o.contact?.key??t,R.value=d.value,Se(o.task),await ae(),D.value==="2d"?T.value?.fitView():f&&d.value&&T.value?.focusNode(d.value)}catch(o){if(s!==j.value)return;G.fail(a("relationships.toast.neighborhoodFailed"),{description:String(o)})}finally{s===j.value&&(q.value=!1,F.value=null)}}async function xt(){d.value&&await ue(d.value)}async function bt(t){if(Be(),z.value=!1,t.inCoreGraph||(F.value=t.key),d.value=t.key,V.value=!0,R.value=We({selectedKey:d.value,loadingNeighborhoodKey:F.value,currentCanvasSelectedKey:R.value}),!t.inCoreGraph){await ue(t.key);return}U(),H(),await ae(),T.value?.focusNode(t.key)}async function Ce(t){Be();const s=C.value?.contact?.key!==t.key;if(s&&(F.value=t.key),d.value=t.key,V.value=!0,R.value=We({selectedKey:d.value,loadingNeighborhoodKey:F.value,currentCanvasSelectedKey:R.value}),await ae(),T.value?.focusNode(t.key),s){await ue(t.key);return}R.value=d.value}async function kt(t){const s=P.value.nodes.find(f=>f.key===t.key)??$.value.nodes.find(f=>f.key===t.key);s&&await Ce(s)}function wt(){const t=oa(D.value);t!==D.value&&(D.value=t,G.warn(a("relationships.toast.threeUnavailable")))}function He(){U(),H(),d.value=null,R.value=null,V.value=!1,gt()}function _t(){He()}function St(){_.value="",ne.value="",z.value=!1}function Ct(){T.value?.fitView()}function Re(){Ge.value=re?.matches??!1}return de(A,()=>{ce(),d.value=null,R.value=null,V.value=!1,U(),H(),ee()}),de(v,()=>{ce(),d.value=null,R.value=null,V.value=!1,U(),H(),ee()}),de(_,t=>{X&&clearTimeout(X),z.value=t.trim().length>0,X=setTimeout(()=>{K.value=t,ee({silent:!0,preserveNeighborhood:!0})},260)}),de(D,async()=>{if(await ae(),d.value){T.value?.focusNode(d.value);return}T.value?.fitView()}),Mt(()=>{typeof window<"u"&&(re=window.matchMedia("(min-width: 768px)"),Re(),re.addEventListener("change",Re)),ee()}),It(()=>{re?.removeEventListener("change",Re),_e(),X&&clearTimeout(X)}),(t,s)=>{const f=At,o=Lt,p=Gt;return y(),k("div",ua,[n("main",da,[D.value==="3d"?(y(),te(g(r),{key:0,ref_key:"canvasRef",ref:T,graph:at.value,"selected-key":ot.value,"safe-inset-right":ze.value,label:g(a)("relationships.canvas.label3d"),onFallback:wt,onSelectNode:kt},null,8,["graph","selected-key","safe-inset-right","label"])):(y(),te(g(b),{key:1,ref_key:"canvasRef",ref:T,graph:$.value,"selected-key":R.value,"privacy-mode":I.value,"safe-inset-right":ze.value,label:g(a)("relationships.canvas.label"),"owner-label":g(a)("relationships.owner.me"),onSelectNode:Ce},null,8,["graph","selected-key","privacy-mode","safe-inset-right","label","owner-label"])),n("div",ha,[M(f,{modelValue:A.value,"onUpdate:modelValue":s[0]||(s[0]=c=>A.value=c),items:et.value,content:!1,size:"xs",class:"min-w-max gap-0"},null,8,["modelValue","items"]),M(f,{modelValue:v.value,"onUpdate:modelValue":s[1]||(s[1]=c=>v.value=c),items:tt.value,content:!1,size:"xs",class:"min-w-max gap-0"},null,8,["modelValue","items"]),n("div",pa,[M(p,{modelValue:_.value,"onUpdate:modelValue":s[2]||(s[2]=c=>_.value=c),icon:"i-lucide-search",placeholder:g(a)("relationships.search"),size:"sm",class:"w-full",onFocus:s[3]||(s[3]=c=>z.value=Fe.value),onKeydown:s[4]||(s[4]=Et(c=>z.value=!1,["esc"]))},Pt({_:2},[_.value?{name:"trailing",fn:he(()=>[M(o,{icon:"i-heroicons-x-mark",variant:"link",color:"neutral",size:"xs","aria-label":g(a)("relationships.actions.clearSearch"),onClick:St},null,8,["aria-label"])]),key:"0"}:void 0]),1032,["modelValue","placeholder"]),st.value?(y(),k("div",va,[n("div",fa,i(g(a)("relationships.searchResults.title")),1),n("div",ga,[(y(!0),k(Ne,null,Me(Ae.value,c=>(y(),k("button",{key:c.key,type:"button",class:Ie(["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",d.value===c.key?"bg-sky-50 dark:bg-sky-500/10":""]),disabled:q.value,onClick:Te=>bt(c)},[M(Pe,{src:we(c),alt:B(c),text:ke(c),"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"]),n("span",ya,[n("span",xa,i(B(c)),1),n("span",ba,i(Oe(c))+" · #"+i(c.rank),1)]),c.inCoreGraph?L("",!0):(y(),k("span",ka,i(g(a)("relationships.searchResults.offCore")),1))],10,ma))),128))])])):L("",!0)]),M(o,{icon:"i-lucide-scan-line",color:"neutral",variant:"soft",size:"xs","aria-label":g(a)("relationships.actions.fitView"),onClick:Ct},null,8,["aria-label"]),M(o,{icon:I.value?"i-lucide-eye-off":"i-lucide-eye",color:"neutral",variant:"soft",size:"xs",onClick:s[5]||(s[5]=c=>I.value=!I.value)},{default:he(()=>[Le(i(g(a)("relationships.privacy")),1)]),_:1},8,["icon"]),ge.value?(y(),te(o,{key:0,icon:"i-lucide-undo-2",color:"neutral",variant:"soft",size:"xs",onClick:He},{default:he(()=>[Le(i(g(a)("relationships.actions.backToPanorama")),1)]),_:1})):L("",!0)]),rt.value?(y(),k("div",wa,[s[6]||(s[6]=n("span",{class:"i-lucide-refresh-cw h-3.5 w-3.5 animate-spin text-sky-400"},null,-1)),n("span",null,i(be.value),1)])):L("",!0),lt.value?(y(),te(g($t),{key:3,variant:"overlay",class:"!bg-[#03050c] [&_p]:!text-gray-300",text:be.value||g(a)("relationships.task.updating")},null,8,["text"])):me.value?L("",!0):(y(),k("div",_a,i(ct.value),1)),$e.value?(y(),k("aside",Sa,[M(o,{icon:"i-lucide-x",color:"neutral",variant:"ghost",size:"xs",class:"absolute right-2.5 top-2.5 z-10 text-white/60 hover:bg-white/8 hover:text-white","aria-label":g(a)("relationships.actions.closeDetail"),onClick:_t},null,8,["aria-label"]),x.value?(y(),k("div",Ca,[n("div",Ra,[n("div",Ta,[M(Pe,{src:we(x.value),alt:B(x.value),text:ke(x.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"]),n("div",Na,[n("div",Ma,[n("p",Ia,i(B(x.value)),1),n("span",{class:Ie(["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",x.value.rank<=3?"text-amber-600 dark:text-amber-300":""])}," #"+i(x.value.rank),3)]),n("p",Pa,i(x.value.platform)+" · "+i(pt(x.value)),1)])]),it.value?(y(),te(o,{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:q.value,onClick:xt},{default:he(()=>[Le(i(g(a)("relationships.actions.focusConnections")),1)]),_:1},8,["loading"])):L("",!0),n("div",La,[n("div",Ea,[n("p",Ga,i(g(a)("relationships.detail.score")),1),n("div",Ka,[n("p",Va,i(ut(x.value.score)),1),s[7]||(s[7]=n("span",{class:"text-[9px] leading-3 text-gray-400"},"/100",-1))])]),n("div",Aa,[n("p",Fa,i(g(a)("relationships.detail.type")),1),n("span",{class:Ie(["inline-flex max-w-full items-center truncate text-[10px] font-semibold leading-4",x.value.pool==="friend"?"text-sky-700 dark:text-sky-300":"text-amber-700 dark:text-amber-300"])},i(Oe(x.value)),3)]),n("div",$a,[n("p",za,i(g(a)("relationships.detail.privateMessages")),1),n("span",Oa,i(w(x.value.privateMessageCount)),1)]),n("div",Da,[n("p",ja,i(g(a)("relationships.detail.groupMessages")),1),n("span",Ba,i(w(x.value.groupMessageCount)),1)]),n("div",Ha,[n("p",Ua,i(g(a)("relationships.detail.commonGroups")),1),n("span",qa,i(w(x.value.commonGroupCount)),1)]),n("div",Qa,[n("p",Wa,i(g(a)("relationships.detail.lastInteraction")),1),n("span",Ya,i(ht(x.value.lastInteractionTs)),1)])])]),n("div",Xa,[n("section",Ja,[n("div",Za,[n("div",eo,[n("h3",to,i(g(a)("relationships.connections.title")),1),n("span",ao,i(dt()),1)]),n("span",oo,i(g(a)("relationships.connections.connectionScore")),1)]),ie.value.items.length>0?(y(),k("div",no,[(y(!0),k(Ne,null,Me(ie.value.items,c=>(y(),k("button",{key:c.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:Te=>Ce(c.node)},[M(Pe,{src:we(c.node),alt:B(c.node),text:ke(c.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"]),n("div",lo,[n("span",ro,i(B(c.node)),1)]),n("span",io,[n("span",co,i(w(c.connectionScore)),1)])],8,so))),128))])):(y(),k("p",uo,i(g(a)("relationships.connections.empty")),1))]),xe.value.length>0?(y(),k("section",ho,[n("div",po,[n("div",vo,[n("h2",fo,i(g(a)("relationships.stats.communities")),1),n("span",go,i(w(xe.value.length)),1)]),n("span",mo,i(g(a)("relationships.stats.members")),1)]),n("div",yo,[(y(!0),k(Ne,null,Me(xe.value,c=>(y(),k("div",{key:c.id,class:"flex h-9 items-center justify-between gap-2 rounded-lg px-2 py-0 text-[13px] leading-4"},[n("div",xo,[n("span",bo,[n("span",{class:"h-2 w-2 rounded-full shadow-sm",style:Kt({backgroundColor:c.color})},null,4)]),n("span",ko,i(c.label),1)]),n("span",wo,[n("span",_o,i(w(c.size)),1)])]))),128))])])):L("",!0)])])):L("",!0)])):L("",!0)])])}}}),Ko=Object.freeze(Object.defineProperty({__proto__:null,default:Ro},Symbol.toStringTag,{value:"Module"}));export{Eo as a,Go as b,Je as g,Ko as i};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{e as o,b as S,d as L,a6 as q,ak as B,aD as A,ba as K,bb as U,bc as z,bd as H,K as G,al as J,o as p,c as j,z as R,w as _,f as k,g as t,a1 as O,be as E,l as Q,aE as W,k as X,aJ as Z,ah as ee}from"./index-B1oj9KDv.js";import{P as ae}from"./PageHeader-CKeZjNNR.js";import{_ as F}from"./TimeSelect.vue_vue_type_script_setup_true_lang-BcflxP_U.js";import{_ as te}from"./PageTabs.vue_vue_type_script_setup_true_lang-C8M3wNNH.js";import"./vendor-snapdom--nZvo8Sg.js";import"./Select-B5oJc5y1.js";import"./useFormControl-CrWi_6Hn.js";import"./clamp-jFYhBC76.js";import"./Tabs-DqWTBV8x.js";import"./Tabs-BMq9wODW.js";import"./RovingFocusItem-BJMUQ5DJ.js";import"./DatePicker.vue_vue_type_script_setup_true_lang-D9Ul_GYz.js";function oe(u,m,l,f){const s=u?.state;return s&&(!l||l.includes(s.mode))?{...s}:{mode:m,year:f}}function ne(u){return[u.defaultMode,u.allowedModes.join(","),u.allowedRecentDays?.join(",")].join(":")}function se(u,m){const l=new Date().getFullYear(),f=Math.floor(Date.now()/1e3),s=S(null),h=S(l),y=S(0),d=S([l]),v=o(()=>oe(s.value,u?.value??"year",m?.value,h.value)),T=o(()=>{const i=d.value.at(-1)??l;return{availableYears:d.value,fullRange:{start:Math.floor(new Date(i,0,1).getTime()/1e3),end:f}}});function n(i){const g=[...new Set([l,...i])].sort((r,w)=>w-r);g.join(",")!==d.value.join(",")&&(d.value=g)}function x(i){h.value=i,s.value=null,y.value++}return{modelValue:s,componentKey:y,initialState:v,rangeSource:T,setAvailableYears:n,switchToYear:x}}const le={class:"flex h-full flex-col text-gray-900 dark:bg-page-dark dark:text-gray-100",style:{"padding-top":"var(--titlebar-area-height)"}},ie={key:1,class:"mt-3 flex justify-end pb-1.5"},re=L({__name:"index",setup(u){const{t:m}=q(),{translate:l}=B(),f=A(),s=K(),{controller:h,snapshot:y}=U(),d=z(s),v=o(()=>String(f.meta.insightPageId??d[0]?.id??"")),T=o(()=>d.find(e=>e.id===v.value)),n=o(()=>T.value?.filters?.time),x=o(()=>n.value?.defaultMode??"year"),i=o(()=>n.value?[...n.value.allowedModes]:void 0),g=se(x,i),{modelValue:r,componentKey:w,initialState:Y,rangeSource:I}=g,b=s.ui.insightScope;if(!(b instanceof H))throw new Error("Insight scope host controller is unavailable");const N=b.attachTimeCommands({setAvailableYears:g.setAvailableYears,switchToYear:g.switchToYear}),P=G([r,n],([e,c])=>{const a=e?.state;b.updateSnapshot({time:e&&a&&c?.allowedModes.includes(a.mode)?{mode:a.mode,startTs:e.startTs,endTs:e.endTs,isFullRange:e.isFullRange,recentDays:a.recentDays,year:a.year,quarterYear:a.quarterYear,quarter:a.quarter,customStart:a.customStart,customEnd:a.customEnd}:void 0})},{immediate:!0}),$=o(()=>(y.value.revision,h.getResolvedLayout())),D=o(()=>$.value.primary.find(e=>e.kind==="group"&&e.entries.some(({page:c})=>c.id===v.value))),V=o(()=>(D.value?.kind==="group"?D.value.entries:[]).map(({page:e})=>({id:e.id,label:l(e.title),icon:e.icon,to:{name:e.routeName}}))),C=o(()=>n.value?.allowedRecentDays?[...n.value.allowedRecentDays]:void 0),M=o(()=>{const e=n.value;return e?ne(e):"none"});return J(()=>{P(),N(),b.updateSnapshot({})}),(e,c)=>(p(),j("div",le,[R(ae,{title:t(m)("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:_(()=>[V.value.length>0?(p(),k(t(te),{key:0,class:"mt-3 min-h-[38px] pb-1.5","model-value":v.value,items:V.value,"aria-label":t(m)("insight.tabs.nav")},O({_:2},[n.value?{name:"right",fn:_(()=>[(p(),k(F,{key:`${t(w)}:${M.value}`,modelValue:t(r),"onUpdate:modelValue":c[0]||(c[0]=a=>E(r)?r.value=a:null),"range-source":t(I),"allowed-modes":i.value,"allowed-recent-days":C.value,"initial-state":t(Y)},null,8,["modelValue","range-source","allowed-modes","allowed-recent-days","initial-state"]))]),key:"0"}:void 0]),1032,["model-value","items","aria-label"])):n.value?(p(),j("div",ie,[(p(),k(F,{key:`${t(w)}:${M.value}`,modelValue:t(r),"onUpdate:modelValue":c[1]||(c[1]=a=>E(r)?r.value=a:null),"range-source":t(I),"allowed-modes":i.value,"allowed-recent-days":C.value,"initial-state":t(Y)},null,8,["modelValue","range-source","allowed-modes","allowed-recent-days","initial-state"]))])):Q("",!0)]),_:1},8,["title"]),R(t(Z),null,{default:_(({Component:a})=>[R(W,{name:"insight-tab-slide",mode:"out-in"},{default:_(()=>[(p(),k(X(a),{key:v.value}))]),_:2},1024)]),_:1})]))}}),Se=ee(re,[["__scopeId","data-v-7e7305c7"]]);export{Se as default};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/MessageExportModal-DNU16Bs8.js","assets/index-B1oj9KDv.js","assets/vendor-snapdom--nZvo8Sg.js","assets/index-BZpR015e.css","assets/useToast-B5LaA6c-.js","assets/Tabs-DqWTBV8x.js","assets/Tabs-BMq9wODW.js","assets/RovingFocusItem-BJMUQ5DJ.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{d as Y,a6 as Q,ac as ge,K as X,x as ve,y as xe,o as n,f as V,g as t,w as H,c as u,a as e,p as o,F as O,j as G,n as F,l as L,z as j,a7 as ee,O as pe,e as _,b as U,J as Ie,L as $e,ar as Le,r as Be,a8 as Re,a9 as we,a5 as Ne,aD as Ve,ay as Fe,ap as Oe,ab as Ue,aA as Ee,be as je,aE as We,bs as He,aa as Je,bt as Ge,H as Ke,ah as Ye}from"./index-B1oj9KDv.js";import{_ as Ce,a as Se,b as re,c as Qe,d as Xe,u as Ze,e as et,I as tt,f as at,g as st,h as nt,i as it,j as ot,C as rt,k as lt,M as ct,l as ut,m as dt,n as mt,o as pt}from"./ActionToolsPanel.vue_vue_type_script_setup_true_lang-IB1yZxCE.js";import{_ as gt}from"./SectionTabs.vue_vue_type_script_setup_true_lang-qFhJO5B0.js";import{_ as vt}from"./Select-B5oJc5y1.js";import{_ as he,L as xt}from"./LoadingState.vue_vue_type_script_setup_true_lang-BBcCt_Qm.js";import{T as De}from"./Tabs-DqWTBV8x.js";import{_ as Pe}from"./EChart.vue_vue_type_script_setup_true_lang-DubnuUXI.js";import"./vendor-echarts-wordcloud-DNiU8Psq.js";import{u as fe,x as ht,q as ye,j as be,i as ne,m as qe,t as Ae,s as ft,k as yt}from"./vendor-echarts-C9ugTmum.js";import{_ as ke}from"./ThemeCard.vue_vue_type_script_setup_true_lang-D2outEOV.js";import{g as bt}from"./base-F6s0vTrr.js";import{i as Te}from"./chatMessages-Bd33SSXI.js";import{_ as kt}from"./useTable-Clk7ecq-.js";import"./vendor-snapdom--nZvo8Sg.js";import"./index-4DVZ2g0M.js";import"./useToast-B5LaA6c-.js";import"./service-CppETV4a.js";import"./Checkbox-_eH64bb0.js";import"./useFormControl-CrWi_6Hn.js";import"./VisuallyHiddenInput-BAFpkxMI.js";import"./RovingFocusItem-BJMUQ5DJ.js";import"./Label-DCIcxkhU.js";import"./prompt-C-ofJ7t_.js";import"./aiChat--CR4g2M7.js";import"./chatlabSiteLocale-CrCNb8QP.js";import"./ChatRecordWorkspace-7prKd-Tq.js";import"./DatePicker.vue_vue_type_script_setup_true_lang-D9Ul_GYz.js";import"./clamp-jFYhBC76.js";import"./EChartBar.vue_vue_type_script_setup_true_lang-DKNCZuFm.js";import"./Tabs-BMq9wODW.js";import"./semantic-index-config-builder-D3TYVYC-.js";import"./TimeSelect.vue_vue_type_script_setup_true_lang-BcflxP_U.js";import"./CardDecoration-RuBA3N2j.js";import"./EChartLine.vue_vue_type_script_setup_true_lang-Fl7xAOSR.js";import"./PageHeader-CKeZjNNR.js";import"./PageTabs.vue_vue_type_script_setup_true_lang-C8M3wNNH.js";import"./Alert-510jTN3l.js";import"./FileDropZone.vue_vue_type_script_setup_true_lang-DYDdRSNE.js";import"./vendor-zrender-D8psf1AA.js";const _t={key:0,class:"relative z-10 flex flex-col h-full"},wt={class:"flex flex-col sm:flex-row items-center sm:items-start gap-6 px-6 pt-8 pb-4 sm:px-8"},$t={class:"w-full flex-1 min-w-0"},Ct={class:"flex items-center gap-x-2 sm:gap-x-3 mb-6 sm:mb-8"},St={class:"text-2xl sm:text-4xl font-black tracking-tight text-blue-600 dark:text-blue-400 truncate"},Mt={class:"text-2xl sm:text-4xl font-black tracking-tight text-pink-600 dark:text-pink-400 truncate"},jt={class:"grid grid-cols-2 gap-4 sm:gap-10"},Pt={class:"text-[10px] font-bold uppercase tracking-widest text-gray-400 dark:text-gray-500"},Tt={class:"flex flex-col gap-2.5"},It=["title","onClick"],Rt={class:"shrink-0 text-[10px] sm:text-xs font-semibold tabular-nums text-gray-400/80"},Dt={key:0,class:"text-xs sm:text-sm font-medium text-gray-400"},qt={class:"hidden shrink-0 sm:block"},At={class:"px-6 pb-6 pt-2 sm:px-8 mt-auto"},zt={class:"mb-3 flex items-center justify-between"},Lt={class:"text-[10px] font-bold uppercase tracking-widest text-gray-400 dark:text-gray-500"},Bt={class:"grid grid-cols-1 sm:grid-cols-3 gap-4"},Nt={class:"mb-4 flex items-center gap-2.5"},Vt={class:"text-sm font-bold tracking-wide text-gray-900 dark:text-white"},Ft={class:"flex items-center justify-between mb-4 w-full"},Ot={class:"flex flex-col flex-1 min-w-0"},Ut={class:"truncate text-[10px] font-bold uppercase tracking-wider text-gray-400 mb-1"},Et={class:"flex flex-col flex-1 min-w-0 items-end text-right"},Wt={class:"truncate text-[10px] font-bold uppercase tracking-wider text-gray-400 mb-1"},Ht={class:"mt-auto pt-3 border-t border-gray-100 dark:border-white/5 flex flex-col"},Jt={key:0,class:"flex items-start justify-between gap-2 mb-2 min-h-[24px]"},Gt={class:"flex flex-1 flex-nowrap overflow-hidden gap-1"},Kt={key:0,class:"text-[11px] text-gray-400"},Yt={class:"flex flex-1 flex-nowrap overflow-hidden gap-1 justify-end"},Qt={key:0,class:"text-[11px] text-gray-400"},Xt={key:1,class:"flex flex-nowrap overflow-hidden items-center gap-x-1.5 mb-2 min-h-[24px]"},Zt=["onClick"],ea={key:0,class:"shrink-0 text-gray-300 dark:text-gray-600 font-normal"},ta={key:0,class:"text-[11px] text-gray-400"},aa={class:"text-[10px] leading-relaxed text-gray-500 dark:text-gray-400"},sa={class:"flex items-center justify-between px-6 pb-4 opacity-40 mix-blend-luminosity dark:opacity-30 sm:px-8 sm:pb-5"},na={class:"flex items-center gap-1.5"},ia={class:"text-[9px] font-medium uppercase tracking-widest"},oa=Y({__name:"LanguagePreferenceCard",props:{data:{},enableRecordNavigation:{type:Boolean,default:!0}},emits:["wordClick"],setup(w,{emit:s}){fe([ht,ye,be]);const{t:a}=Q(),C=ge(),i=w,v=s,I=_(()=>i.data.members[0]),b=_(()=>i.data.members[1]);function p(l,r){return l.length<=r?l:l.slice(0,r)+"…"}function S(l){const r=l.posDistribution,c=r.noun+r.verb+r.adjective+r.adverb+r.modalParticle+r.interjection+r.other;return c===0?a("quotes.languagePreference.pos.styleBalanced"):r.noun/c>.5?a("quotes.languagePreference.pos.styleEncyclopedia"):r.verb/c>.45?a("quotes.languagePreference.pos.styleAction"):r.adjective/c>.3?a("quotes.languagePreference.pos.styleExpressive"):a("quotes.languagePreference.pos.styleBalanced")}function N(l){const c=[["ellipsis",l.ellipsis],["exclamation",l.exclamation],["question",l.question],["tilde",l.tilde],["noPunct",l.noPunct],["period",l.period]].reduce((y,P)=>y[1]>=P[1]?y:P);return{ellipsis:a("quotes.languagePreference.punctuation.personalityDeep"),exclamation:a("quotes.languagePreference.punctuation.personalityPassionate"),question:a("quotes.languagePreference.punctuation.personalityCurious"),tilde:a("quotes.languagePreference.punctuation.personalityCheerful"),noPunct:a("quotes.languagePreference.punctuation.personalityFreeflow"),period:a("quotes.languagePreference.punctuation.personalityPrecise")}[c[0]]||"-"}function A(l,r=5){return[["...",l.ellipsis],["!",l.exclamation],["?",l.question],["~",l.tilde],["。",l.period]].filter(([,m])=>m>0).sort((m,y)=>y[1]-m[1]).slice(0,r).map(([m])=>m)}const M=["#6366f1","#ec4899","#f97316","#22c55e","#3b82f6","#8b5cf6","#14b8a6","#f43f5e","#eab308","#06b6d4"],f=_(()=>{const l=I.value,r=b.value;if(!l||!r)return[];const c=i.data.sharedWords.slice(0,6).map((m,y)=>({word:m.word,color:M[y%M.length]}));return[{icon:"i-heroicons-book-open",iconBgClass:"bg-blue-100 dark:bg-blue-500/20",iconColorClass:"text-blue-600 dark:text-blue-400",title:a("quotes.languagePreference.card.diversityTitle"),leftName:l.name,leftValue:`${l.lexicalDiversity}%`,rightName:r.name,rightValue:`${r.lexicalDiversity}%`,valueClass:"text-lg text-blue-600 dark:text-blue-400",detail:{kind:"tags-single",tags:c},desc:a("quotes.languagePreference.card.diversityDesc")},{icon:"i-heroicons-sparkles",iconBgClass:"bg-violet-100 dark:bg-violet-500/20",iconColorClass:"text-violet-600 dark:text-violet-400",title:a("quotes.languagePreference.card.styleTitle"),leftName:l.name,leftValue:S(l),rightName:r.name,rightValue:S(r),valueClass:"text-xs text-violet-600 dark:text-violet-400",detail:{kind:"tags-vs",leftTags:l.modalParticles.slice(0,4).map(m=>m.word),rightTags:r.modalParticles.slice(0,4).map(m=>m.word)},desc:a("quotes.languagePreference.card.styleDesc")},{icon:"i-heroicons-finger-print",iconBgClass:"bg-orange-100 dark:bg-orange-500/20",iconColorClass:"text-orange-600 dark:text-orange-400",title:a("quotes.languagePreference.card.punctTitle"),leftName:l.name,leftValue:N(l.punctuation),rightName:r.name,rightValue:N(r.punctuation),valueClass:"text-xs text-orange-600 dark:text-orange-400",detail:{kind:"tags-vs",leftTags:A(l.punctuation,4),rightTags:A(r.punctuation,4)},desc:a("quotes.languagePreference.card.punctDesc")}]}),q=U(null);let $=null;function k(){q.value&&($=ne(q.value,void 0,{renderer:"canvas"}),h())}function h(){if(!$||!I.value||!b.value)return;const l=I.value.posDistribution,r=b.value.posDistribution,c=[{name:a("quotes.languagePreference.card.radarFactual"),max:0},{name:a("quotes.languagePreference.card.radarActive"),max:0},{name:a("quotes.languagePreference.card.radarDescriptive"),max:0},{name:a("quotes.languagePreference.card.radarAffable"),max:0},{name:a("quotes.languagePreference.card.radarIntense"),max:0}],m=[l.noun,l.verb,l.adjective,l.modalParticle+l.interjection,l.adverb],y=[r.noun,r.verb,r.adjective,r.modalParticle+r.interjection,r.adverb];for(let E=0;E<c.length;E++)c[E].max=Math.max(m[E],y[E],1)*1.3;const P=C.value?"#9ca3af":"#6b7280";$.setOption({backgroundColor:"transparent",tooltip:{trigger:"item"},legend:{bottom:0,itemWidth:10,itemHeight:10,textStyle:{fontSize:10,color:P},data:[I.value.name,b.value.name]},radar:{indicator:c,radius:"60%",center:["50%","50%"],splitArea:{areaStyle:{color:C.value?["rgba(255,255,255,0.02)","rgba(255,255,255,0.04)"]:["rgba(0,0,0,0.01)","rgba(0,0,0,0.03)"]}},axisName:{color:P,fontSize:10},splitLine:{lineStyle:{color:C.value?"rgba(255,255,255,0.08)":"rgba(0,0,0,0.06)"}},axisLine:{lineStyle:{color:C.value?"rgba(255,255,255,0.1)":"rgba(0,0,0,0.08)"}}},series:[{type:"radar",data:[{value:m,name:I.value.name,lineStyle:{color:"#3b82f6",width:2},areaStyle:{color:"rgba(59,130,246,0.15)"},itemStyle:{color:"#3b82f6"},symbol:"circle",symbolSize:4},{value:y,name:b.value.name,lineStyle:{color:"#ec4899",width:2},areaStyle:{color:"rgba(236,72,153,0.15)"},itemStyle:{color:"#ec4899"},symbol:"circle",symbolSize:4}]}]},{notMerge:!0})}function d(){$?.resize()}return X(()=>i.data,()=>h(),{deep:!0}),X(C,()=>{$?.dispose(),k()}),ve(()=>{k(),window.addEventListener("resize",d)}),xe(()=>{window.removeEventListener("resize",d),$?.dispose()}),(l,r)=>{const c=ee;return n(),V(t(Ce),null,{default:H(()=>[I.value&&b.value?(n(),u("div",_t,[e("div",wt,[e("div",$t,[e("div",Ct,[e("span",St,o(I.value.name),1),r[0]||(r[0]=e("span",{class:"text-sm sm:text-lg font-black text-gray-300 dark:text-gray-600 italic px-1 sm:px-2 shrink-0"}," VS ",-1)),e("span",Mt,o(b.value.name),1)]),e("div",jt,[(n(!0),u(O,null,G([I.value,b.value],(m,y)=>(n(),u("div",{key:m.memberId,class:"flex flex-col gap-3"},[e("div",Pt,o(t(a)("quotes.languagePreference.card.topCatchphrases")),1),e("div",Tt,[(n(!0),u(O,null,G(m.catchphrases.slice(0,3),(P,E)=>(n(),u("div",{key:E,class:"flex items-center gap-2 group"},[e("span",{class:F(["text-xs sm:text-sm font-black font-mono opacity-40 transition-opacity group-hover:opacity-100",y===0?"text-blue-600 dark:text-blue-400":"text-pink-600 dark:text-pink-400"])}," #"+o(E+1),3),e("span",{class:F(["truncate text-sm font-bold text-gray-700 transition-opacity dark:text-gray-200 sm:text-base",i.enableRecordNavigation?"cursor-pointer hover:opacity-70":""]),title:P.content,onClick:J=>i.enableRecordNavigation&&v("wordClick",P.content)}," 「"+o(p(P.content,12))+"」 ",11,It),e("span",Rt," ×"+o(P.count),1)]))),128)),m.catchphrases.length===0?(n(),u("div",Dt,"-")):L("",!0)])]))),128))])]),e("div",qt,[e("div",{ref_key:"radarRef",ref:q,style:{width:"250px",height:"230px"},class:"-mt-4 sm:-mr-4"},null,512)])]),e("div",At,[e("div",zt,[e("span",Lt,o(t(a)("quotes.languagePreference.card.languageProfiles")),1)]),e("div",Bt,[(n(!0),u(O,null,G(f.value,m=>(n(),u("div",{key:m.title,class:"flex min-w-0 flex-col p-4"},[e("div",Nt,[e("div",{class:F(["flex h-8 w-8 shrink-0 items-center justify-center rounded-lg",m.iconBgClass])},[j(c,{name:m.icon,class:F(["h-4 w-4",m.iconColorClass])},null,8,["name","class"])],2),e("span",Vt,o(m.title),1)]),e("div",Ft,[e("div",Ot,[e("span",Ut,o(m.leftName),1),e("span",{class:F(["truncate text-xl font-black font-mono leading-none",m.valueClass])},o(m.leftValue),3)]),r[1]||(r[1]=e("div",{class:"px-2 shrink-0"},[e("span",{class:"text-[10px] font-black text-gray-300 dark:text-gray-600 italic"},"VS")],-1)),e("div",Et,[e("span",Wt,o(m.rightName),1),e("span",{class:F(["truncate text-xl font-black font-mono leading-none",m.valueClass])},o(m.rightValue),3)])]),e("div",Ht,[m.detail.kind==="tags-vs"?(n(),u("div",Jt,[e("div",Gt,[(n(!0),u(O,null,G(m.detail.leftTags,y=>(n(),u("span",{key:y,class:"shrink-0 px-1.5 py-0.5 rounded-md text-[10px] font-semibold font-mono bg-blue-50 text-blue-600 dark:bg-blue-500/10 dark:text-blue-400"},o(y),1))),128)),m.detail.leftTags.length===0?(n(),u("span",Kt,"-")):L("",!0)]),e("div",Yt,[(n(!0),u(O,null,G(m.detail.rightTags,y=>(n(),u("span",{key:y,class:"shrink-0 px-1.5 py-0.5 rounded-md text-[10px] font-semibold font-mono bg-pink-50 text-pink-600 dark:bg-pink-500/10 dark:text-pink-400"},o(y),1))),128)),m.detail.rightTags.length===0?(n(),u("span",Qt,"-")):L("",!0)])])):m.detail.kind==="tags-single"?(n(),u("div",Xt,[(n(!0),u(O,null,G(m.detail.tags.slice(0,6),(y,P)=>(n(),u(O,{key:y.word},[e("span",{class:F(["shrink-0 text-[11px] font-bold transition-opacity",i.enableRecordNavigation?"cursor-pointer hover:opacity-80":""]),style:pe({color:y.color}),onClick:E=>i.enableRecordNavigation&&v("wordClick",y.word)},o(y.word),15,Zt),P<m.detail.tags.slice(0,6).length-1?(n(),u("span",ea," · ")):L("",!0)],64))),128)),m.detail.tags.length===0?(n(),u("span",ta,"-")):L("",!0)])):L("",!0),e("p",aa,o(m.desc),1)])]))),128))])]),e("div",sa,[e("div",na,[j(c,{name:"i-heroicons-chat-bubble-left-right-solid",class:"h-3.5 w-3.5"}),r[2]||(r[2]=e("span",{class:"text-[10px] font-bold uppercase tracking-wider"},"ChatLab",-1))]),e("span",ia,o(t(a)("quotes.languagePreference.card.watermark")),1)])])):L("",!0)]),_:1})}}}),ra={class:"px-5 py-4 sm:px-6"},la={class:"mb-4 flex items-center justify-between"},ca={class:"flex items-center gap-2"},ua={class:"text-[15px] font-black tracking-tight text-gray-900 dark:text-white"},da={key:0,class:"rounded-full bg-pink-100 px-2 py-0.5 text-[10px] font-bold text-pink-600 dark:bg-pink-900/30 dark:text-pink-400"},ma={key:0,class:"grid grid-cols-2 gap-6"},pa={class:"mb-3 text-center"},ga={class:"text-sm font-semibold text-blue-600 dark:text-blue-400"},va={class:"flex flex-wrap gap-2"},xa=["title","onClick"],ha={class:"text-[10px] font-semibold opacity-60"},fa={class:"mb-3 text-center"},ya={class:"text-sm font-semibold text-pink-600 dark:text-pink-400"},ba={class:"flex flex-wrap gap-2"},ka=["title","onClick"],_a={class:"text-[10px] font-semibold opacity-60"},wa={key:1,class:"mt-4 text-center text-xs text-gray-500 dark:text-gray-400"},$a=Y({__name:"CatchphrasePKSection",props:{members:{},enableRecordNavigation:{type:Boolean,default:!0}},emits:["wordClick"],setup(w,{emit:s}){const{t:a}=Q(),C=w,i=s,v=U(20),I=[{label:"10",value:10},{label:"20",value:20},{label:"30",value:30}],b=_(()=>C.members[0]),p=_(()=>C.members[1]),S=_(()=>b.value?.catchphrases.slice(0,v.value)??[]),N=_(()=>p.value?.catchphrases.slice(0,v.value)??[]),A=_(()=>{if(!b.value||!p.value)return new Set;const $=new Set(b.value.catchphrases.map(h=>h.content)),k=new Set(p.value.catchphrases.map(h=>h.content));return new Set([...$].filter(h=>k.has(h)))}),M=[{bg:"bg-amber-50 text-amber-600 ring-1 ring-amber-500/20 dark:bg-amber-500/10 dark:text-amber-400 dark:ring-amber-500/30",text:"text-amber-700 dark:text-amber-400 font-bold",badge:"bg-amber-500 text-white dark:bg-amber-600"},{bg:"bg-slate-50 text-slate-600 ring-1 ring-slate-500/20 dark:bg-slate-500/10 dark:text-slate-400 dark:ring-slate-500/30",text:"text-slate-700 dark:text-slate-300 font-bold",badge:"bg-slate-400 text-white dark:bg-slate-500"},{bg:"bg-orange-50 text-orange-600 ring-1 ring-orange-500/20 dark:bg-orange-500/10 dark:text-orange-400 dark:ring-orange-500/30",text:"text-orange-700 dark:text-orange-400 font-bold",badge:"bg-orange-400 text-white dark:bg-orange-500"}];function f($){return $<M.length?M[$]:{bg:"bg-gray-50/50 text-gray-600 ring-1 ring-gray-900/5 dark:bg-gray-800/30 dark:text-gray-400 dark:ring-white/10",text:"text-gray-600 dark:text-gray-400",badge:"bg-transparent text-gray-400"}}function q($,k=20){return $.length<=k?$:$.slice(0,k)+"..."}return($,k)=>{const h=ee;return n(),V(t(ke),null,{default:H(()=>[e("div",ra,[e("div",la,[e("div",ca,[j(h,{name:"i-heroicons-chat-bubble-bottom-center-text",class:"h-4 w-4 text-indigo-500"}),e("span",ua,o(t(a)("quotes.languagePreference.catchphrasePK.title")),1),A.value.size>0?(n(),u("span",da,o(t(a)("quotes.languagePreference.catchphrasePK.sharedCount",{count:A.value.size})),1)):L("",!0)]),j(t(De),{modelValue:v.value,"onUpdate:modelValue":k[0]||(k[0]=d=>v.value=d),size:"xs",items:I},null,8,["modelValue"])]),b.value&&p.value?(n(),u("div",ma,[e("div",null,[e("div",pa,[e("span",ga,o(b.value.name),1)]),e("div",va,[(n(!0),u(O,null,G(S.value,(d,l)=>(n(),u("div",{key:d.content,class:F(["inline-flex items-center gap-1.5 rounded-full px-3 py-1 transition-opacity",[C.enableRecordNavigation?"cursor-pointer hover:opacity-75":"",A.value.has(d.content)?"bg-pink-50 text-pink-600 ring-1 ring-pink-500/20 dark:bg-pink-500/10 dark:text-pink-400 dark:ring-pink-500/30 shadow-sm":f(l).bg]]),title:d.content,onClick:r=>C.enableRecordNavigation&&i("wordClick",d.content)},[l<3?(n(),u("span",{key:0,class:F(["flex h-4 w-4 shrink-0 items-center justify-center rounded-full text-[10px] font-bold",f(l).badge])},o(l+1),3)):L("",!0),e("span",{class:F(["text-[13px] font-medium",A.value.has(d.content)?"font-bold":f(l).text])},o(q(d.content)),3),e("span",ha,"×"+o(d.count),1)],10,xa))),128))])]),e("div",null,[e("div",fa,[e("span",ya,o(p.value.name),1)]),e("div",ba,[(n(!0),u(O,null,G(N.value,(d,l)=>(n(),u("div",{key:d.content,class:F(["inline-flex items-center gap-1.5 rounded-full px-3 py-1 transition-opacity",[C.enableRecordNavigation?"cursor-pointer hover:opacity-75":"",A.value.has(d.content)?"bg-pink-50 text-pink-600 ring-1 ring-pink-500/20 dark:bg-pink-500/10 dark:text-pink-400 dark:ring-pink-500/30 shadow-sm":f(l).bg]]),title:d.content,onClick:r=>C.enableRecordNavigation&&i("wordClick",d.content)},[l<3?(n(),u("span",{key:0,class:F(["flex h-4 w-4 shrink-0 items-center justify-center rounded-full text-[10px] font-bold",f(l).badge])},o(l+1),3)):L("",!0),e("span",{class:F(["text-[13px] font-medium",A.value.has(d.content)?"font-bold":f(l).text])},o(q(d.content)),3),e("span",_a,"×"+o(d.count),1)],10,ka))),128))])])])):L("",!0),C.enableRecordNavigation?(n(),u("p",wa,o(t(a)("quotes.languagePreference.catchphrasePK.hint")),1)):L("",!0)])]),_:1})}}}),Ca={class:"px-5 py-4 sm:px-6"},Sa={class:"mb-4 flex items-center gap-2"},Ma={class:"text-[15px] font-black tracking-tight text-gray-900 dark:text-white"},ja={class:"flex flex-col gap-4 lg:flex-row lg:gap-6"},Pa={class:"flex-1"},Ta={key:0,class:"flex shrink-0 flex-col gap-3 lg:w-48"},Ia={class:"min-w-0"},Ra={class:"truncate text-xs font-semibold text-gray-500 dark:text-gray-400"},Da=Y({__name:"PosPortraitSection",props:{members:{}},setup(w){fe([qe,Ae,ye,ft,be]);const{t:s}=Q(),a=ge(),C=w,i=_(()=>C.members[0]),v=_(()=>C.members[1]);function I(M){const f=M.posDistribution,q=f.noun+f.verb+f.adjective+f.adverb+f.modalParticle+f.interjection+f.other;if(q===0)return{label:s("quotes.languagePreference.pos.styleBalanced"),icon:"i-heroicons-scale-solid",colorClass:"text-cyan-600 dark:text-cyan-400"};const $=f.noun/q,k=f.verb/q,h=f.adjective/q;return $>.5?{label:s("quotes.languagePreference.pos.styleEncyclopedia"),icon:"i-heroicons-book-open-solid",colorClass:"text-indigo-600 dark:text-indigo-400"}:k>.45?{label:s("quotes.languagePreference.pos.styleAction"),icon:"i-heroicons-rocket-launch-solid",colorClass:"text-orange-600 dark:text-orange-400"}:h>.3?{label:s("quotes.languagePreference.pos.styleExpressive"),icon:"i-heroicons-paint-brush-solid",colorClass:"text-pink-600 dark:text-pink-400"}:{label:s("quotes.languagePreference.pos.styleBalanced"),icon:"i-heroicons-scale-solid",colorClass:"text-cyan-600 dark:text-cyan-400"}}const b=U(null);let p=null;function S(){b.value&&(p=ne(b.value,void 0,{renderer:"canvas"}),N())}function N(){if(!p||!i.value||!v.value)return;const M=i.value.posDistribution,f=v.value.posDistribution,q=[s("quotes.languagePreference.card.radarNoun"),s("quotes.languagePreference.card.radarVerb"),s("quotes.languagePreference.card.radarAdj"),s("quotes.languagePreference.card.radarModal"),s("quotes.languagePreference.card.radarAdv")],$=[M.noun,M.verb,M.adjective,M.modalParticle+M.interjection,M.adverb],k=[f.noun,f.verb,f.adjective,f.modalParticle+f.interjection,f.adverb],h=a.value?"#9ca3af":"#6b7280";p.setOption({backgroundColor:"transparent",tooltip:{trigger:"axis",axisPointer:{type:"shadow"}},legend:{data:[i.value.name,v.value.name],top:0,textStyle:{fontSize:11,color:h}},grid:{left:80,right:20,top:36,bottom:10},xAxis:{type:"value",show:!1},yAxis:{type:"category",data:q,axisLine:{show:!1},axisTick:{show:!1},axisLabel:{fontSize:11,color:h}},series:[{name:i.value.name,type:"bar",data:$,itemStyle:{color:"#3b82f6",borderRadius:[0,4,4,0]},barGap:"20%",barCategoryGap:"40%"},{name:v.value.name,type:"bar",data:k,itemStyle:{color:"#ec4899",borderRadius:[0,4,4,0]}}]},{notMerge:!0})}function A(){p?.resize()}return X(()=>C.members,()=>N(),{deep:!0}),X(a,()=>{p?.dispose(),S()}),ve(()=>{S(),window.addEventListener("resize",A)}),xe(()=>{window.removeEventListener("resize",A),p?.dispose()}),(M,f)=>{const q=ee;return n(),V(t(ke),null,{default:H(()=>[e("div",Ca,[e("div",Sa,[j(q,{name:"i-heroicons-chart-bar",class:"h-4 w-4 text-violet-500"}),e("span",Ma,o(t(s)("quotes.languagePreference.pos.title")),1)]),e("div",ja,[e("div",Pa,[e("div",{ref_key:"chartRef",ref:b,style:{width:"100%",height:"220px"}},null,512)]),i.value&&v.value?(n(),u("div",Ta,[(n(!0),u(O,null,G([i.value,v.value],$=>(n(),u("div",{key:$.memberId,class:"flex min-w-0 items-center gap-3 px-1 py-3"},[j(q,{name:I($).icon,class:F(["h-5 w-5 shrink-0",I($).colorClass])},null,8,["name","class"]),e("div",Ia,[e("div",Ra,o($.name),1),e("div",{class:F(["truncate text-sm font-bold",I($).colorClass])},o(I($).label),3)])]))),128))])):L("",!0)])])]),_:1})}}}),qa={class:"px-5 py-4 sm:px-6"},Aa={class:"mb-4 flex items-center gap-2"},za={class:"text-[15px] font-black tracking-tight text-gray-900 dark:text-white"},La={key:0,class:"grid grid-cols-1 gap-6 md:grid-cols-2"},Ba={class:"mb-2 flex items-center justify-between"},Na={key:1,class:"flex h-[200px] items-center justify-center text-sm text-gray-400"},Va=Y({__name:"ModalParticleSection",props:{members:{}},setup(w){fe([qe,Ae,ye,be]);const{t:s}=Q(),a=ge(),C=w,i=_(()=>C.members[0]),v=_(()=>C.members[1]),I=new Set(["呀","哒","滴","啦","哇","耶"]),b=new Set(["呢","吗","嘛"]),p=new Set(["吧","喔","噢","嘛"]),S=new Set(["嗯","哦","额","呃"]);function N(d){const l={label:s("quotes.languagePreference.modal.toneMixed"),colorClass:"bg-gray-50 text-gray-600 ring-1 ring-gray-900/5 dark:bg-gray-800/50 dark:text-gray-400 dark:ring-white/10"};if(d.modalParticles.length===0)return l;let r=0,c=0,m=0,y=0,P=0;for(const J of d.modalParticles)P+=J.count,I.has(J.word)&&(r+=J.count),b.has(J.word)&&(c+=J.count),p.has(J.word)&&(m+=J.count),S.has(J.word)&&(y+=J.count);if(P===0)return l;const E=Math.max(r,c,m,y);return E===r&&r/P>.3?{label:s("quotes.languagePreference.modal.toneSoft"),colorClass:"bg-pink-50 text-pink-600 ring-1 ring-pink-500/20 dark:bg-pink-500/10 dark:text-pink-400 dark:ring-pink-500/30"}:E===c&&c/P>.3?{label:s("quotes.languagePreference.modal.toneCurious"),colorClass:"bg-violet-50 text-violet-600 ring-1 ring-violet-500/20 dark:bg-violet-500/10 dark:text-violet-400 dark:ring-violet-500/30"}:E===m&&m/P>.3?{label:s("quotes.languagePreference.modal.toneCasual"),colorClass:"bg-emerald-50 text-emerald-600 ring-1 ring-emerald-500/20 dark:bg-emerald-500/10 dark:text-emerald-400 dark:ring-emerald-500/30"}:E===y&&y/P>.3?{label:s("quotes.languagePreference.modal.toneCalm"),colorClass:"bg-blue-50 text-blue-600 ring-1 ring-blue-500/20 dark:bg-blue-500/10 dark:text-blue-400 dark:ring-blue-500/30"}:l}const A=U(null),M=U(null);let f=null,q=null;function $(d,l){const r=d.modalParticles.slice(0,8),c=a.value?"#9ca3af":"#6b7280";return{backgroundColor:"transparent",tooltip:{trigger:"axis",axisPointer:{type:"shadow"}},grid:{left:40,right:20,top:4,bottom:4},xAxis:{type:"value",show:!1},yAxis:{type:"category",data:r.map(m=>m.word).reverse(),axisLine:{show:!1},axisTick:{show:!1},axisLabel:{fontSize:12,color:c},inverse:!1},series:[{type:"bar",data:r.map(m=>m.count).reverse(),itemStyle:{color:l,borderRadius:[0,4,4,0]},barWidth:"50%",label:{show:!0,position:"right",fontSize:10,color:c,formatter:"{c}"}}]}}function k(){A.value&&i.value&&(f=ne(A.value,void 0,{renderer:"canvas"}),f.setOption($(i.value,"#3b82f6"),{notMerge:!0})),M.value&&v.value&&(q=ne(M.value,void 0,{renderer:"canvas"}),q.setOption($(v.value,"#ec4899"),{notMerge:!0}))}function h(){f?.resize(),q?.resize()}return X(()=>C.members,()=>{f&&i.value&&f.setOption($(i.value,"#3b82f6"),{notMerge:!0}),q&&v.value&&q.setOption($(v.value,"#ec4899"),{notMerge:!0})},{deep:!0}),X(a,()=>{f?.dispose(),q?.dispose(),k()}),ve(()=>{k(),window.addEventListener("resize",h)}),xe(()=>{window.removeEventListener("resize",h),f?.dispose(),q?.dispose()}),(d,l)=>{const r=ee;return n(),V(t(ke),null,{default:H(()=>[e("div",qa,[e("div",Aa,[j(r,{name:"i-heroicons-chat-bubble-oval-left-ellipsis",class:"h-4 w-4 text-pink-500"}),e("span",za,o(t(s)("quotes.languagePreference.modal.title")),1)]),i.value&&v.value?(n(),u("div",La,[(n(!0),u(O,null,G([i.value,v.value],(c,m)=>(n(),u("div",{key:c.memberId},[e("div",Ba,[e("span",{class:F(["text-sm font-semibold",m===0?"text-blue-600 dark:text-blue-400":"text-pink-600 dark:text-pink-400"])},o(c.name),3),e("span",{class:F(["rounded-full px-2 py-0.5 text-[10px] font-bold",N(c).colorClass])},o(N(c).label),3)]),c.modalParticles.length>0?(n(),u("div",{key:0,ref_for:!0,ref:y=>{m===0?A.value=y:M.value=y},style:{width:"100%",height:"200px"}},null,512)):(n(),u("div",Na,o(t(s)("quotes.languagePreference.modal.empty")),1))]))),128))])):L("",!0)])]),_:1})}}}),Fa={class:"px-5 py-4 sm:px-6"},Oa={class:"mb-4 flex items-center gap-2"},Ua={class:"text-[15px] font-black tracking-tight text-gray-900 dark:text-white"},Ea={key:0,class:"grid grid-cols-1 gap-6 md:grid-cols-2"},Wa={class:"mb-2 flex items-center gap-2"},Ha={key:1,class:"flex h-[200px] items-center justify-center text-sm text-gray-400"},Ja=Y({__name:"PunctuationSection",props:{members:{}},setup(w){fe([yt,ye,be]);const{t:s}=Q(),a=ge(),C=w,i=_(()=>C.members[0]),v=_(()=>C.members[1]),I=["#6366f1","#ec4899","#f97316","#22c55e","#06b6d4","#8b5cf6"];function b(k){const d=[["ellipsis",k.ellipsis],["exclamation",k.exclamation],["question",k.question],["tilde",k.tilde],["noPunct",k.noPunct],["period",k.period]].reduce((r,c)=>r[1]>=c[1]?r:c);return{ellipsis:{label:s("quotes.languagePreference.punctuation.personalityDeep"),colorClass:"bg-indigo-50 text-indigo-600 ring-1 ring-indigo-500/20 dark:bg-indigo-500/10 dark:text-indigo-400 dark:ring-indigo-500/30"},exclamation:{label:s("quotes.languagePreference.punctuation.personalityPassionate"),colorClass:"bg-rose-50 text-rose-600 ring-1 ring-rose-500/20 dark:bg-rose-500/10 dark:text-rose-400 dark:ring-rose-500/30"},question:{label:s("quotes.languagePreference.punctuation.personalityCurious"),colorClass:"bg-amber-50 text-amber-600 ring-1 ring-amber-500/20 dark:bg-amber-500/10 dark:text-amber-400 dark:ring-amber-500/30"},tilde:{label:s("quotes.languagePreference.punctuation.personalityCheerful"),colorClass:"bg-pink-50 text-pink-600 ring-1 ring-pink-500/20 dark:bg-pink-500/10 dark:text-pink-400 dark:ring-pink-500/30"},noPunct:{label:s("quotes.languagePreference.punctuation.personalityFreeflow"),colorClass:"bg-emerald-50 text-emerald-600 ring-1 ring-emerald-500/20 dark:bg-emerald-500/10 dark:text-emerald-400 dark:ring-emerald-500/30"},period:{label:s("quotes.languagePreference.punctuation.personalityPrecise"),colorClass:"bg-blue-50 text-blue-600 ring-1 ring-blue-500/20 dark:bg-blue-500/10 dark:text-blue-400 dark:ring-blue-500/30"}}[d[0]]||{label:"-",colorClass:"bg-gray-50 text-gray-600 ring-1 ring-gray-900/5 dark:bg-gray-800/50 dark:text-gray-400 dark:ring-white/10"}}function p(k){return[{name:"...",value:k.ellipsis},{name:"!",value:k.exclamation},{name:"?",value:k.question},{name:"~",value:k.tilde},{name:"。",value:k.period},{name:s("quotes.languagePreference.punctuation.none"),value:k.noPunct}].filter(h=>h.value>0)}const S=U(null),N=U(null);let A=null,M=null;function f(k){return{backgroundColor:"transparent",tooltip:{trigger:"item",formatter:"{b}: {c} ({d}%)"},series:[{type:"pie",radius:["45%","75%"],center:["50%","50%"],avoidLabelOverlap:!1,padAngle:2,itemStyle:{borderRadius:4},label:{show:!0,fontSize:10,color:a.value?"#9ca3af":"#6b7280",formatter:"{b}"},emphasis:{label:{show:!0,fontWeight:"bold"},scaleSize:4},data:k.map((h,d)=>({...h,itemStyle:{color:I[d%I.length]}}))}]}}function q(){S.value&&i.value&&(A=ne(S.value,void 0,{renderer:"canvas"}),A.setOption(f(p(i.value.punctuation)),{notMerge:!0})),N.value&&v.value&&(M=ne(N.value,void 0,{renderer:"canvas"}),M.setOption(f(p(v.value.punctuation)),{notMerge:!0}))}function $(){A?.resize(),M?.resize()}return X(()=>C.members,()=>{A&&i.value&&A.setOption(f(p(i.value.punctuation)),{notMerge:!0}),M&&v.value&&M.setOption(f(p(v.value.punctuation)),{notMerge:!0})},{deep:!0}),X(a,()=>{A?.dispose(),M?.dispose(),q()}),ve(()=>{q(),window.addEventListener("resize",$)}),xe(()=>{window.removeEventListener("resize",$),A?.dispose(),M?.dispose()}),(k,h)=>{const d=ee;return n(),V(t(ke),null,{default:H(()=>[e("div",Fa,[e("div",Oa,[j(d,{name:"i-heroicons-ellipsis-horizontal",class:"h-4 w-4 text-orange-500"}),e("span",Ua,o(t(s)("quotes.languagePreference.punctuation.title")),1)]),i.value&&v.value?(n(),u("div",Ea,[(n(!0),u(O,null,G([i.value,v.value],(l,r)=>(n(),u("div",{key:l.memberId,class:"flex flex-col items-center"},[e("div",Wa,[e("span",{class:F(["text-sm font-semibold",r===0?"text-blue-600 dark:text-blue-400":"text-pink-600 dark:text-pink-400"])},o(l.name),3),e("span",{class:F(["rounded-full px-2 py-0.5 text-[10px] font-bold",b(l.punctuation).colorClass])},o(b(l.punctuation).label),3)]),l.punctuation.total>0?(n(),u("div",{key:0,ref_for:!0,ref:c=>{r===0?S.value=c:N.value=c},style:{width:"100%",height:"200px"}},null,512)):(n(),u("div",Ha,o(t(s)("quotes.languagePreference.punctuation.empty")),1))]))),128))])):L("",!0)])]),_:1})}}}),Ga={class:"main-content mx-auto max-w-[920px] space-y-6 p-4 sm:p-6"},Ka=Y({__name:"LanguagePreferenceTab",props:{sessionId:{},timeFilter:{},enableRecordNavigation:{type:Boolean,default:!0}},setup(w){const{t:s,locale:a}=Q(),C=Ie(),i=w,v=U(null),I=U(!1),b=_(()=>v.value&&v.value.members.length>=2);async function p(){if(i.sessionId){I.value=!0;try{v.value=await $e().getLanguagePreferenceAnalysis(i.sessionId,a.value,i.timeFilter)}catch(N){console.error("[LanguagePreferenceTab] Failed to load:",N)}finally{I.value=!1}}}function S(N){i.enableRecordNavigation&&C.openChatRecordDrawer({keywords:[N]})}return X(()=>[i.sessionId,i.timeFilter],()=>p(),{immediate:!0,deep:!0}),(N,A)=>(n(),u("div",Ga,[I.value?(n(),V(t(he),{key:0,text:t(s)("quotes.languagePreference.loading")},null,8,["text"])):b.value?v.value?(n(),u(O,{key:2},[j(oa,{data:v.value,"enable-record-navigation":i.enableRecordNavigation,onWordClick:S},null,8,["data","enable-record-navigation"]),j($a,{members:v.value.members,"enable-record-navigation":i.enableRecordNavigation,onWordClick:S},null,8,["members","enable-record-navigation"]),j(Da,{members:v.value.members},null,8,["members"]),j(Va,{members:v.value.members},null,8,["members"]),j(Ja,{members:v.value.members},null,8,["members"])],64)):L("",!0):(n(),V(t(Se),{key:1,text:t(s)("quotes.languagePreference.empty")},null,8,["text"]))]))}}),Ya={class:"flex min-w-0 flex-col p-4"},Qa={class:"mb-2 min-h-8"},Xa={class:"flex items-center justify-between gap-2"},Za={class:"flex min-w-0 items-center gap-2"},es={class:"truncate text-xs font-bold tracking-wide text-gray-900 dark:text-white"},ts={key:0,class:"shrink-0"},as={class:"flex h-full flex-col"},ss={class:"grid grid-cols-2 gap-2"},ns={class:"flex min-w-0 flex-col items-center px-1 py-1.5 text-center"},is=["title"],os={class:"flex min-w-0 flex-col items-center px-1 py-1.5 text-center"},rs=["title"],ls={class:"mt-auto pt-3 min-h-8 text-[10px] leading-relaxed text-gray-500 dark:text-gray-400 sm:min-h-6"},me=Y({__name:"RelationshipMetricCard",props:{title:{},iconName:{},iconBgClass:{},iconColorClass:{},leftName:{default:"—"},leftValue:{default:"--"},rightName:{default:"—"},rightValue:{default:"--"},valueClass:{default:"text-gray-700 dark:text-gray-200"},description:{default:""}},setup(w){const s=Le(),a=_(()=>!!s["header-extra"]);return(C,i)=>{const v=ee;return n(),u("div",Ya,[e("div",Qa,[e("div",Xa,[e("div",Za,[e("div",{class:F(["flex h-6 w-6 shrink-0 items-center justify-center rounded-full",w.iconBgClass])},[j(v,{name:w.iconName,class:F(["h-3.5 w-3.5",w.iconColorClass])},null,8,["name","class"])],2),e("span",es,o(w.title),1)]),a.value?(n(),u("div",ts,[Be(C.$slots,"header-extra")])):L("",!0)])]),e("div",as,[e("div",ss,[e("div",ns,[e("div",{class:"w-full truncate text-[10px] font-semibold tracking-wide text-gray-500 dark:text-gray-400",title:w.leftName},o(w.leftName),9,is),e("div",{class:F(["mt-2 font-black font-mono leading-none tabular-nums",w.valueClass])},o(w.leftValue),3)]),e("div",os,[e("div",{class:"w-full truncate text-[10px] font-semibold tracking-wide text-gray-500 dark:text-gray-400",title:w.rightName},o(w.rightName),9,rs),e("div",{class:F(["mt-2 font-black font-mono leading-none tabular-nums",w.valueClass])},o(w.rightValue),3)])]),e("p",ls,o(w.description),1)])])}}}),cs={key:1,class:"main-content mx-auto max-w-[920px] space-y-6 p-4 sm:p-6"},us={class:"space-y-6"},ds={class:"relative z-10 flex flex-col items-center justify-center gap-10 px-6 pt-10 pb-6 sm:px-8 lg:flex-row lg:items-start lg:justify-between lg:gap-8 xl:gap-12"},ms={class:"flex min-w-0 max-w-full flex-1 flex-col items-center justify-center lg:items-start"},ps={class:"flex flex-col text-[15px] leading-relaxed text-gray-600 dark:text-gray-300"},gs={class:"mb-2 text-sm font-medium tracking-wide text-gray-500 dark:text-gray-400"},vs={class:"mb-4 flex min-w-0 flex-wrap items-baseline gap-2"},xs={class:"text-xl font-medium text-gray-700 dark:text-gray-300"},hs={class:"font-black text-5xl tracking-tight text-gray-900 dark:text-white"},fs={class:"text-xl font-medium text-gray-700 dark:text-gray-300"},ys={class:"flex min-w-0 max-w-full flex-wrap items-baseline gap-x-1.5 gap-y-1"},bs={class:"text-base font-medium text-gray-600 dark:text-gray-300"},ks={class:"font-black text-3xl text-pink-500 dark:text-pink-400"},_s={class:"text-base font-medium text-gray-600 dark:text-gray-300"},ws={class:"max-w-full break-all text-xl font-bold leading-snug text-gray-900 dark:text-white"},$s={class:"text-base font-medium text-gray-600 dark:text-gray-300"},Cs={class:"mt-8 flex w-full max-w-[320px] items-center justify-between gap-4"},Ss={class:"flex flex-1 flex-col items-center overflow-hidden"},Ms=["title"],js={class:"mt-1 text-2xl font-black text-blue-500 dark:text-blue-400"},Ps={class:"mt-0.5 text-[10px] font-medium text-gray-400"},Ts={class:"flex flex-1 flex-col items-center overflow-hidden"},Is=["title"],Rs={class:"mt-1 text-2xl font-black text-pink-500 dark:text-pink-400"},Ds={class:"mt-0.5 text-[10px] font-medium text-gray-400"},qs={key:0,class:"flex min-w-0 w-full max-w-[400px] flex-1 flex-col justify-center lg:max-w-[460px]"},As={class:"mb-2 flex items-center justify-between px-1"},zs={class:"text-sm font-bold text-gray-900 dark:text-white"},Ls={class:"text-[10px] font-medium text-gray-500 dark:text-gray-400"},Bs={class:"w-full"},Ns={class:"h-[200px] w-full"},Vs={class:"relative z-10 grid grid-cols-2 gap-3 p-4 pt-2 sm:p-6 sm:pt-2 lg:grid-cols-4"},Fs={class:"relative z-10 flex items-center justify-between px-6 pb-4 opacity-40 mix-blend-luminosity dark:opacity-30 sm:px-8 sm:pb-5"},Os={class:"flex items-center gap-1.5"},Us={class:"text-[9px] font-medium uppercase tracking-widest"},Es={class:"px-4 pb-5 sm:px-6 sm:pb-6"},Ws={key:0,class:"mt-6"},Hs={class:"mb-3 text-xs font-semibold tracking-wide text-gray-400 uppercase dark:text-gray-500"},Js={class:"grid gap-x-8 gap-y-4 sm:grid-cols-3"},Gs={class:"min-w-0"},Ks={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},Ys=["title"],Qs={class:"mt-0.5 text-xs text-gray-500 dark:text-gray-400"},Xs={class:"mt-5 flex justify-center"},Zs={key:1,class:"mt-3 overflow-x-auto rounded-lg border border-gray-200/80 dark:border-white/10"},en={class:"min-w-full text-left text-sm"},tn={class:"bg-gray-50/80 text-xs text-gray-500 dark:bg-white/[0.03] dark:text-gray-400"},an={scope:"col",class:"px-4 py-2.5 font-medium"},sn={scope:"col",class:"px-4 py-2.5 text-right font-medium"},nn={scope:"col",class:"px-4 py-2.5 text-right font-medium"},on={scope:"col",class:"max-w-[180px] truncate px-4 py-2.5 text-right font-medium"},rn={scope:"col",class:"max-w-[180px] truncate px-4 py-2.5 text-right font-medium"},ln={class:"divide-y divide-gray-100 dark:divide-white/5"},cn={class:"whitespace-nowrap px-4 py-2.5 font-medium text-gray-700 dark:text-gray-300"},un={class:"px-4 py-2.5 text-right tabular-nums text-gray-600 dark:text-gray-400"},dn={class:"px-4 py-2.5 text-right tabular-nums text-gray-600 dark:text-gray-400"},mn={class:"whitespace-nowrap px-4 py-2.5 text-right tabular-nums text-gray-600 dark:text-gray-400"},pn={class:"whitespace-nowrap px-4 py-2.5 text-right tabular-nums text-gray-600 dark:text-gray-400"},gn={class:"px-4 py-2.5 text-right tabular-nums text-gray-600 dark:text-gray-400"},vn={class:"px-4 py-2.5 text-right tabular-nums text-gray-600 dark:text-gray-400"},xn=Y({__name:"PrivateRelationshipView",props:{sessionId:{},timeFilter:{}},setup(w){const{t:s,locale:a}=Q(),C=w,i=U(null),v=U(!1),I=U(!1),b=U("activity"),p=U(!1),S=U(300);async function N(x){if(!C.sessionId)return;const g=x?.localOnly==="perseverance";g?I.value=!0:v.value=!0;try{i.value=await $e().getRelationshipStats(C.sessionId,C.timeFilter,{perseveranceThreshold:S.value})}catch(z){console.error("Failed to load relationship stats:",z)}finally{g?I.value=!1:v.value=!1}}X(()=>[C.sessionId,C.timeFilter],()=>N(),{immediate:!0,deep:!0});const A=[{label:"1m",value:60},{label:"3m",value:180},{label:"5m",value:300},{label:"10m",value:600},{label:"30m",value:1800}];function M(x){S.value!==x&&(S.value=x,N({localOnly:"perseverance"}))}const f=_({get:()=>S.value,set:x=>M(x)});function q(x){return s("views.relationship.perseverance.thresholdMinutes",{n:Math.round(x/60)})}const $=_(()=>s("views.relationship.perseverance.hintWithThreshold",{threshold:q(S.value)})),k=_(()=>i.value?.hasSessionIndex&&i.value.totalSessions>0),h=_(()=>i.value?.members[0]),d=_(()=>i.value?.members[1]),l=_(()=>{if(!h.value||!i.value)return 50;const x=(h.value.totalInitiateCount??0)+(d.value?.totalInitiateCount??0);return x===0?50:Math.round(h.value.totalInitiateCount/x*100)}),r=_(()=>{if(!i.value||i.value.months.length===0)return"";const x=[...i.value.months].sort((D,T)=>D.month.localeCompare(T.month)),g=x[0].month.replace("-","/"),z=x[x.length-1].month.replace("-","/");return g===z?g:`${g} – ${z}`}),c=_(()=>a.value.startsWith("en")?"max-w-[420px]":"max-w-[320px]"),m=_(()=>{if(!i.value||i.value.months.length===0||!h.value)return{};const x=[...i.value.months].sort((B,ae)=>B.month.localeCompare(ae.month)),g=x.map(B=>P(B.month)),z=h.value.name,D=d.value?.name??"—",T=x.map(B=>{const ae=B.members.find(de=>de.memberId===h.value.memberId);return!ae||B.totalSessions===0?50:Math.round(ae.initiateCount/B.totalSessions*100)});return{tooltip:{trigger:"axis",formatter(B){const ae=B[0],de=ae.value;return`${ae.axisValue}<br/>${z}: ${de}%<br/>${D}: ${100-de}%`}},grid:{left:40,right:20,top:20,bottom:30},xAxis:{type:"category",data:g,axisLabel:{fontSize:11}},yAxis:{type:"value",min:0,max:100,axisLabel:{formatter:"{value}%",fontSize:11},splitLine:{lineStyle:{type:"dashed"}}},series:[{type:"line",data:T,smooth:!0,symbol:"circle",symbolSize:6,lineStyle:{width:2,color:"#3b82f6"},itemStyle:{color:"#3b82f6"},areaStyle:{color:{type:"linear",x:0,y:0,x2:0,y2:1,colorStops:[{offset:0,color:"rgba(59, 130, 246, 0.15)"},{offset:1,color:"rgba(59, 130, 246, 0)"}]}},markLine:{silent:!0,data:[{yAxis:50,lineStyle:{type:"dashed",color:"#9ca3af"}}],label:{show:!1},symbol:"none"}}]}});function y(x){const[g,z]=x.split("-");return s("views.relationship.monthFormat",{year:g,month:Number.parseInt(z,10)})}function P(x){const g=x.split("-");return s("views.relationship.monthShortFormat",{month:Number.parseInt(g[1],10)})}function E(x){return!x||!i.value?.iceBreakers?.length?0:i.value.iceBreakers.filter(g=>g.memberId===x).reduce((g,z)=>g+z.count,0)}function J(x){if(!x||!i.value?.responseLatency?.length)return null;const g=i.value.responseLatency.find(z=>z.memberId===x);return g?g.avgResponseTime:null}function le(x){return!x||!i.value?.perseverance?.length?0:i.value.perseverance.find(z=>z.memberId===x)?.totalDoubleTexts??0}function ce(x){const g=J(x);return g!=null?Z(g):"--"}function ie(x){return i.value?.monthlyResponseLatency?.find(g=>g.month===x)?.members??[]}function _e(x){return i.value?.monthlyPerseverance?.find(g=>g.month===x)?.members??[]}function oe(x,g){return g?ie(x).find(D=>D.memberId===g)?.avgResponseTime??null:null}function ue(x,g){const z=oe(x,g);return z==null?"—":Z(z)}function se(x,g){return g?_e(x).find(D=>D.memberId===g)?.doubleTextCount??0:0}function K(x){return i.value?.iceBreakers?.filter(g=>g.month===x).reduce((g,z)=>g+z.count,0)??0}function R(x){const g=ie(x),z=g.reduce((D,T)=>D+T.responseCount,0);return z===0?null:g.reduce((D,T)=>D+T.avgResponseTime*T.responseCount,0)/z}function Z(x){const g=Math.max(0,Math.round(x));if(g<60)return s("views.relationship.responseLatency.seconds",{n:g});if(g<3600){const T=Math.floor(g/60),B=g%60;return s("views.relationship.responseLatency.minutesSeconds",{m:T,s:B})}const z=Math.floor(g/3600),D=Math.floor(g%3600/60);return D===0?s("views.relationship.responseLatency.hours",{n:z}):s("views.relationship.responseLatency.hoursMinutes",{h:z,m:D})}const te=_(()=>[...i.value?.months??[]].sort((x,g)=>x.month.localeCompare(g.month))),W=_(()=>[{label:s("views.relationship.trajectory.metrics.activity"),value:"activity"},{label:s("views.relationship.trajectory.metrics.response"),value:"response"},{label:s("views.relationship.trajectory.metrics.perseverance"),value:"perseverance"}]),ze=_(()=>{const x=te.value,g=new Set(x.map(T=>T.month.slice(0,4))).size>1,z=x.map(T=>g?T.month.replace("-","/"):P(T.month)),D={color:["#3b82f6","#ec4899"],tooltip:{trigger:"axis"},legend:{top:4,textStyle:{fontSize:11}},grid:{left:52,right:24,top:44,bottom:34},xAxis:{type:"category",data:z,axisTick:{show:!1},axisLabel:{fontSize:11}},yAxis:{type:"value",min:0,minInterval:1,axisLabel:{fontSize:11},splitLine:{lineStyle:{type:"dashed"}}}};return b.value==="activity"?{...D,series:[{name:s("views.relationship.trajectory.conversations"),type:"bar",data:x.map(T=>T.totalSessions),barMaxWidth:32,itemStyle:{borderRadius:[4,4,0,0]}},{name:s("views.relationship.trajectory.iceBreaks"),type:"line",data:x.map(T=>K(T.month)),smooth:!0,symbolSize:7,lineStyle:{width:2}}]}:b.value==="response"?{...D,tooltip:{trigger:"axis",valueFormatter(T){return typeof T=="number"?Z(T):String(T??"—")}},yAxis:{type:"value",min:0,axisLabel:{fontSize:11,formatter(T){return Z(T)}},splitLine:{lineStyle:{type:"dashed"}}},series:[{name:h.value?.name??"—",type:"line",data:x.map(T=>oe(T.month,h.value?.memberId)),connectNulls:!1,smooth:!0,symbolSize:7,lineStyle:{width:2}},{name:d.value?.name??"—",type:"line",data:x.map(T=>oe(T.month,d.value?.memberId)),connectNulls:!1,smooth:!0,symbolSize:7,lineStyle:{width:2}}]}:{...D,series:[{name:h.value?.name??"—",type:"bar",data:x.map(T=>se(T.month,h.value?.memberId)),barMaxWidth:24,itemStyle:{borderRadius:[4,4,0,0]}},{name:d.value?.name??"—",type:"bar",data:x.map(T=>se(T.month,d.value?.memberId)),barMaxWidth:24,itemStyle:{borderRadius:[4,4,0,0]}}]}}),Me=_(()=>{const x=te.value.reduce((D,T)=>!D||T.totalSessions>D.totalSessions?T:D,null),g=te.value.map(D=>({month:D.month,count:K(D.month)})).filter(D=>D.count>0).sort((D,T)=>T.count-D.count)[0],z=te.value.map(D=>({month:D.month,value:R(D.month)})).filter(D=>D.value!=null).sort((D,T)=>D.value-T.value)[0];return[x&&x.totalSessions>0?{icon:"i-heroicons-chart-bar-square-solid",iconClass:"bg-blue-50 text-blue-500 dark:bg-blue-500/10 dark:text-blue-400",title:s("views.relationship.trajectory.activityPeak"),month:y(x.month),detail:s("views.relationship.trajectory.activityPeakDetail",{count:x.totalSessions})}:null,g?{icon:"i-heroicons-fire-solid",iconClass:"bg-pink-50 text-pink-500 dark:bg-pink-500/10 dark:text-pink-400",title:s("views.relationship.trajectory.iceBreakPeak"),month:y(g.month),detail:s("views.relationship.trajectory.iceBreakPeakDetail",{count:g.count})}:null,z?{icon:"i-heroicons-clock-solid",iconClass:"bg-blue-50 text-blue-500 dark:bg-blue-500/10 dark:text-blue-400",title:s("views.relationship.trajectory.fastestResponse"),month:y(z.month),detail:s("views.relationship.trajectory.fastestResponseDetail",{duration:Z(z.value)})}:null].filter(D=>D!=null)});return(x,g)=>{const z=vt,D=ee,T=Re;return n(),u("div",{class:F(v.value?"h-full":"")},[v.value?(n(),V(t(he),{key:0,variant:"page",text:t(s)("common.loading")},null,8,["text"])):(n(),u("div",cs,[i.value&&!k.value?(n(),V(t(Se),{key:0,icon:"i-heroicons-heart",title:t(s)("views.relationship.empty.title"),description:t(s)("views.relationship.empty.description")},null,8,["title","description"])):i.value&&k.value?(n(),u(O,{key:1},[e("div",us,[j(t(Ce),{id:"shareable-poster"},{default:H(()=>[e("div",ds,[e("div",ms,[e("div",{class:F(["flex w-fit min-w-0 flex-col items-start text-left",c.value])},[e("div",ps,[e("p",gs,o(r.value),1),e("div",vs,[e("span",xs,o(t(s)("views.relationship.hero.totalSessionsPrefix")),1),e("span",hs,o(i.value.totalSessions),1),e("span",fs,o(t(s)("views.relationship.hero.totalSessionsSuffix")),1)]),e("div",ys,[e("span",bs,o(t(s)("views.relationship.hero.initiativePrefix")),1),e("span",ks,o(l.value>=50?l.value:100-l.value)+"% ",1),e("span",_s,o(t(s)("views.relationship.hero.initiativeByPrefix")),1),e("span",ws,o(l.value>=50?h.value?.name:d.value?.name),1),e("span",$s,o(t(s)("views.relationship.hero.initiativeBySuffix")),1)])]),e("div",Cs,[e("div",Ss,[e("div",{class:"w-full truncate text-center text-xs font-bold text-gray-500 dark:text-gray-400",title:h.value?.name},o(h.value?.name),9,Ms),e("div",js,o(h.value?.totalInitiateCount),1),e("div",Ps,o(t(s)("views.relationship.hero.initiateTimes")),1)]),g[3]||(g[3]=e("div",{class:"flex h-6 w-6 shrink-0 items-center justify-center rounded-full bg-gray-100 font-black text-[10px] italic text-gray-400 shadow-inner dark:bg-page-dark/80 dark:text-gray-500"}," VS ",-1)),e("div",Ts,[e("div",{class:"w-full truncate text-center text-xs font-bold text-gray-500 dark:text-gray-400",title:d.value?.name},o(d.value?.name),9,Is),e("div",Rs,o(d.value?.totalInitiateCount),1),e("div",Ds,o(t(s)("views.relationship.hero.initiateTimes")),1)])])],2)]),i.value.months.length>=2?(n(),u("div",qs,[e("div",As,[e("span",zs,o(t(s)("views.relationship.trend.title")),1),e("span",Ls,o(t(s)("views.relationship.trend.hint",{name:h.value?.name??""})),1)]),e("div",Bs,[e("div",Ns,[j(t(Pe),{option:m.value,height:200},null,8,["option"])])])])):L("",!0)]),e("div",Vs,[j(me,{title:t(s)("views.relationship.closerTitle"),"icon-name":"i-heroicons-hand-raised-solid","icon-bg-class":"bg-blue-100 dark:bg-blue-500/20","icon-color-class":"text-blue-600 dark:text-blue-400","left-name":h.value?.name,"left-value":h.value?.totalCloseCount??0,"right-name":d.value?.name,"right-value":d.value?.totalCloseCount??0,"value-class":"text-lg text-blue-600 dark:text-blue-400",description:t(s)("views.relationship.closerHint")},null,8,["title","left-name","left-value","right-name","right-value","description"]),j(me,{title:t(s)("views.relationship.iceBreaker.title"),"icon-name":"i-heroicons-fire-solid","icon-bg-class":"bg-pink-100 dark:bg-pink-500/20","icon-color-class":"text-pink-600 dark:text-pink-400","left-name":h.value?.name,"left-value":E(h.value?.memberId),"right-name":d.value?.name,"right-value":E(d.value?.memberId),"value-class":"text-lg text-pink-600 dark:text-pink-400",description:t(s)("views.relationship.iceBreaker.hint")},null,8,["title","left-name","left-value","right-name","right-value","description"]),j(me,{title:t(s)("views.relationship.responseLatency.title"),"icon-name":"i-heroicons-clock-solid","icon-bg-class":"bg-amber-100 dark:bg-amber-500/20","icon-color-class":"text-amber-600 dark:text-amber-400","left-name":h.value?.name,"left-value":ce(h.value?.memberId),"right-name":d.value?.name,"right-value":ce(d.value?.memberId),"value-class":"text-base text-amber-600 dark:text-amber-400",description:t(s)("views.relationship.responseLatency.hint")},null,8,["title","left-name","left-value","right-name","right-value","description"]),j(me,{title:t(s)("views.relationship.perseverance.title"),"icon-name":"i-heroicons-arrow-path-solid","icon-bg-class":"bg-purple-100 dark:bg-purple-500/20","icon-color-class":"text-purple-600 dark:text-purple-400","left-name":h.value?.name,"left-value":le(h.value?.memberId),"right-name":d.value?.name,"right-value":le(d.value?.memberId),"value-class":"text-lg text-purple-600 dark:text-purple-400",description:$.value},{"header-extra":H(()=>[j(z,{modelValue:f.value,"onUpdate:modelValue":g[0]||(g[0]=B=>f.value=B),items:A,"value-key":"value",size:"xs",class:"relative z-[120] w-16",ui:{content:"z-[121]"},disabled:I.value},null,8,["modelValue","disabled"])]),_:1},8,["title","left-name","left-value","right-name","right-value","description"])]),e("div",Fs,[e("div",Os,[j(D,{name:"i-heroicons-chat-bubble-left-right-solid",class:"h-3.5 w-3.5"}),g[4]||(g[4]=e("span",{class:"text-[10px] font-bold uppercase tracking-wider"},"ChatLab",-1))]),e("span",Us,o(t(s)("views.relationship.watermarkReport")),1)])]),_:1})]),j(t(re),{title:t(s)("views.relationship.trajectory.title"),description:t(s)("views.relationship.trajectory.description"),"show-divider":!1},{headerRight:H(()=>[j(t(De),{modelValue:b.value,"onUpdate:modelValue":g[1]||(g[1]=B=>b.value=B),items:W.value,size:"sm",class:"max-w-[58vw] sm:max-w-none"},null,8,["modelValue","items"])]),default:H(()=>[e("div",Es,[j(t(Pe),{option:ze.value,height:280},null,8,["option"]),Me.value.length>0?(n(),u("div",Ws,[e("p",Hs,o(t(s)("views.relationship.trajectory.keyMoments")),1),e("div",Js,[(n(!0),u(O,null,G(Me.value,B=>(n(),u("div",{key:B.title,class:"flex min-w-0 items-start gap-3 py-1"},[e("div",{class:F(["flex h-8 w-8 shrink-0 items-center justify-center rounded-lg",B.iconClass])},[j(D,{name:B.icon,class:"h-4 w-4"},null,8,["name"])],2),e("div",Gs,[e("p",Ks,o(B.title),1),e("p",{class:"mt-0.5 truncate text-sm font-semibold text-gray-900 dark:text-white",title:B.month},o(B.month),9,Ys),e("p",Qs,o(B.detail),1)])]))),128))])])):L("",!0),e("div",Xs,[j(T,{color:"neutral",variant:"ghost",size:"sm",icon:p.value?"i-heroicons-chevron-up":"i-heroicons-chevron-down",onClick:g[2]||(g[2]=B=>p.value=!p.value)},{default:H(()=>[we(o(p.value?t(s)("views.relationship.trajectory.hideAll"):t(s)("views.relationship.trajectory.showAll")),1)]),_:1},8,["icon"])]),p.value?(n(),u("div",Zs,[e("table",en,[e("thead",tn,[e("tr",null,[e("th",an,o(t(s)("views.relationship.trajectory.month")),1),b.value==="activity"?(n(),u(O,{key:0},[e("th",sn,o(t(s)("views.relationship.trajectory.conversations")),1),e("th",nn,o(t(s)("views.relationship.trajectory.iceBreaks")),1)],64)):(n(),u(O,{key:1},[e("th",on,o(h.value?.name),1),e("th",rn,o(d.value?.name),1)],64))])]),e("tbody",ln,[(n(!0),u(O,null,G([...te.value].reverse(),B=>(n(),u("tr",{key:B.month},[e("td",cn,o(y(B.month)),1),b.value==="activity"?(n(),u(O,{key:0},[e("td",un,o(B.totalSessions),1),e("td",dn,o(K(B.month)),1)],64)):b.value==="response"?(n(),u(O,{key:1},[e("td",mn,o(ue(B.month,h.value?.memberId)),1),e("td",pn,o(ue(B.month,d.value?.memberId)),1)],64)):(n(),u(O,{key:2},[e("td",gn,o(se(B.month,h.value?.memberId)),1),e("td",vn,o(se(B.month,d.value?.memberId)),1)],64))]))),128))])])])):L("",!0)])]),_:1},8,["title","description"])],64)):L("",!0)]))],2)}}}),hn={class:"relative z-10 px-6 pt-8 pb-5 sm:px-8 sm:pt-10"},fn={class:"flex flex-col gap-8 lg:flex-row lg:items-center lg:justify-between lg:gap-12"},yn={class:"min-w-0 flex-1"},bn={class:"text-sm font-medium tracking-wide text-gray-500 dark:text-gray-400"},kn={class:"mt-3 flex flex-wrap items-baseline gap-x-2 gap-y-1"},_n={class:"text-xl font-medium text-gray-700 dark:text-gray-300"},wn={class:"text-4xl font-black tracking-tight text-gray-900 dark:text-white sm:text-5xl"},$n={class:"mt-3 max-w-xl text-sm leading-6 text-gray-500 dark:text-gray-400"},Cn={class:"w-full min-w-0 lg:max-w-[380px]"},Sn={class:"mb-3 flex items-center justify-between gap-4"},Mn={class:"text-xs font-bold tracking-wide text-gray-700 dark:text-gray-300"},jn={class:"text-[10px] font-medium text-gray-400 dark:text-gray-500"},Pn=["title"],Tn={class:"mt-2 flex justify-between text-[10px] font-medium text-gray-400 dark:text-gray-500"},In={class:"relative z-10 grid grid-cols-2 gap-x-3 gap-y-4 px-4 pt-2 pb-6 sm:px-6 lg:grid-cols-4"},Rn={class:"min-w-0"},Dn={class:"mt-1 truncate text-[10px] font-semibold text-gray-600 dark:text-gray-300"},qn={class:"mt-0.5 line-clamp-2 text-[9px] leading-4 text-gray-400 dark:text-gray-500"},An={class:"relative z-10 flex items-center justify-between px-6 pb-4 opacity-40 mix-blend-luminosity dark:opacity-30 sm:px-8 sm:pb-5"},zn={class:"flex items-center gap-1.5"},Ln={class:"text-[9px] font-medium uppercase tracking-widest"},Bn=Y({__name:"JourneyReportCard",props:{stats:{},filtered:{type:Boolean}},setup(w){const s=w,{t:a,locale:C}=Q(),i=_(()=>new Intl.NumberFormat(C.value)),v=_(()=>new Intl.DateTimeFormat(C.value,{year:"numeric",month:"short",day:"numeric"})),I=_(()=>new Intl.DateTimeFormat(C.value,{year:"numeric",month:"short"})),b=_(()=>s.stats.range),p=_(()=>Math.max(...s.stats.months.map(d=>d.messageCount),1)),S=_(()=>({gridTemplateColumns:`repeat(${s.stats.months.length}, minmax(2px, 1fr))`,gap:s.stats.months.length>96?"1px":"2px"})),N=_(()=>{const d=b.value.spanDays;if(d<30)return a("views.journey.duration.days",{count:d});const l=Math.floor(d/365),r=Math.floor(d%365/30);return l>0?r>0?a("views.journey.duration.yearsMonths",{years:l,months:r}):a("views.journey.duration.years",{count:l}):a("views.journey.duration.months",{count:Math.max(1,r)})}),A=_(()=>[{icon:"i-heroicons-sparkles-solid",colorClass:"text-pink-500 dark:text-pink-400",label:a("views.journey.metrics.peakMonth"),value:s.stats.peakMonth?q(s.stats.peakMonth.month):"—",subtext:s.stats.peakMonth?a("views.journey.metrics.messagesAndDays",{messages:M(s.stats.peakMonth.messageCount),days:M(s.stats.peakMonth.activeDays)}):"—"},{icon:"i-heroicons-calendar-days-solid",colorClass:"text-indigo-500 dark:text-indigo-400",label:a("views.journey.metrics.activeMonths"),value:a("views.journey.metrics.monthsRatio",{active:M(b.value.activeMonths),total:M(b.value.spanMonths)}),subtext:a("views.journey.metrics.activeDays",{count:M(b.value.activeDays)})},{icon:"i-heroicons-chat-bubble-left-right-solid",colorClass:"text-blue-500 dark:text-blue-400",label:a("views.journey.metrics.longestConversation"),value:s.stats.longestSegment?$(s.stats.longestSegment.durationSeconds):"—",subtext:s.stats.longestSegment?a("views.journey.metrics.conversationDetail",{date:f(s.stats.longestSegment.startTs),count:M(s.stats.longestSegment.messageCount)}):a("views.journey.metrics.noIndex")},{icon:"i-heroicons-moon-solid",colorClass:"text-violet-500 dark:text-violet-400",label:a("views.journey.metrics.longestSilence"),value:s.stats.longestSilence?$(s.stats.longestSilence.durationSeconds):"—",subtext:s.stats.longestSilence?s.stats.longestSilence.reopenedBy?a("views.journey.metrics.reopenedBy",{name:s.stats.longestSilence.reopenedBy.name}):a("views.journey.metrics.reopened"):s.stats.hasSessionIndex?a("views.journey.metrics.noSilence"):a("views.journey.metrics.noIndex")}]);function M(d){return i.value.format(d)}function f(d){return v.value.format(d*1e3)}function q(d){const[l,r]=d.split("-").map(Number);return I.value.format(new Date(l,r-1,1))}function $(d){const l=Math.max(0,Math.round(d/60));if(l<1)return a("views.journey.duration.lessThanMinute");if(l<60)return a("views.journey.duration.minutes",{count:l});const r=Math.floor(l/60);if(r<24){const y=l%60;return y>0?a("views.journey.duration.hoursMinutes",{hours:r,minutes:y}):a("views.journey.duration.hours",{count:r})}const c=Math.floor(r/24),m=r%24;return m>0?a("views.journey.duration.daysHours",{days:c,hours:m}):a("views.journey.duration.days",{count:c})}function k(d){if(d===0)return"4px";const l=Math.sqrt(d/p.value);return`${Math.round(10+l*50)}px`}function h(d,l){return a("views.journey.hero.monthTooltip",{month:q(d),count:M(l)})}return(d,l)=>{const r=ee;return n(),V(t(Ce),null,{default:H(()=>[e("div",hn,[e("div",fn,[e("div",yn,[e("p",bn,o(f(b.value.firstMessageTs))+" – "+o(f(b.value.lastMessageTs)),1),e("div",kn,[e("span",_n,o(t(a)("views.journey.hero.prefix")),1),e("span",wn,o(N.value),1)]),e("p",$n,o(t(a)(w.filtered?"views.journey.hero.filteredSummary":"views.journey.hero.summary",{activeMonths:M(b.value.activeMonths),activeDays:M(b.value.activeDays)})),1)]),e("div",Cn,[e("div",Sn,[e("p",Mn,o(t(a)("views.journey.hero.footprint")),1),e("p",jn,o(t(a)("views.journey.hero.monthCount",{count:M(b.value.spanMonths)})),1)]),e("div",{class:"grid h-16 items-end overflow-hidden rounded-xl bg-gray-50/80 px-3 py-2 dark:bg-white/[0.035]",style:pe(S.value)},[(n(!0),u(O,null,G(w.stats.months,c=>(n(),u("div",{key:c.month,class:F(["min-w-0 rounded-t-sm",c.messageCount>0?"bg-pink-400/80 dark:bg-pink-400/75":"bg-gray-200 dark:bg-white/10"]),style:pe({height:k(c.messageCount)}),title:h(c.month,c.messageCount)},null,14,Pn))),128))],4),e("div",Tn,[e("span",null,o(q(w.stats.months[0].month)),1),e("span",null,o(q(w.stats.months[w.stats.months.length-1].month)),1)])])])]),e("div",In,[(n(!0),u(O,null,G(A.value,c=>(n(),u("div",{key:c.label,class:"flex min-w-0 items-start gap-2.5 px-2 py-1"},[j(r,{name:c.icon,class:F(["mt-0.5 h-4 w-4 shrink-0",c.colorClass])},null,8,["name","class"]),e("div",Rn,[e("p",{class:F(["truncate text-sm font-black leading-tight tabular-nums",c.colorClass])},o(c.value),3),e("p",Dn,o(c.label),1),e("p",qn,o(c.subtext),1)])]))),128))]),e("div",An,[e("div",zn,[j(r,{name:"i-heroicons-chat-bubble-left-right-solid",class:"h-3.5 w-3.5"}),l[0]||(l[0]=e("span",{class:"text-[10px] font-bold uppercase tracking-wider"},"ChatLab",-1))]),e("span",Ln,o(t(a)("views.journey.watermark")),1)])]),_:1})}}}),Nn={key:1,class:"main-content mx-auto max-w-[920px] space-y-6 p-4 sm:p-6"},Vn={class:"grid gap-4 px-5 pb-6 sm:grid-cols-2 sm:px-6 lg:grid-cols-3"},Fn={class:"min-w-0"},On={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},Un={class:"mt-0.5 text-sm font-semibold text-gray-900 dark:text-white"},En={class:"mt-1 text-xs leading-5 text-gray-500 dark:text-gray-400"},Wn={class:"space-y-3 px-5 pb-5 sm:px-6 sm:pb-6"},Hn={class:"font-mono text-xl font-black tabular-nums text-gray-900 dark:text-white"},Jn={class:"min-w-0"},Gn={class:"h-1.5 overflow-hidden rounded-full bg-gray-200/80 dark:bg-white/10"},Kn={class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},Yn={key:0,class:"text-left sm:min-w-28 sm:text-right"},Qn={class:"text-xs font-semibold text-gray-700 dark:text-gray-300"},Xn={class:"mt-0.5 text-[10px] text-gray-400 dark:text-gray-500"},Zn=Y({__name:"JourneyView",props:{sessionId:{},timeFilter:{},timeRange:{}},setup(w){const s=w,{t:a,locale:C}=Q(),i=U(null),v=U(!1),I=U(!1),b=_(()=>new Intl.NumberFormat(C.value)),p=_(()=>new Intl.DateTimeFormat(C.value,{year:"numeric",month:"short",day:"numeric"})),S=_(()=>new Intl.DateTimeFormat(C.value,{year:"numeric",month:"short"})),N=_(()=>s.timeRange?s.timeFilter?.startTs!=null&&s.timeFilter.startTs>s.timeRange.start||s.timeFilter?.endTs!=null&&s.timeFilter.endTs<s.timeRange.end:!1),A=_(()=>i.value?.range!=null),M=_(()=>Math.max(...i.value?.years.map(c=>c.messageCount)??[],1)),f=_(()=>{if(!i.value?.range)return[];const c=[{id:"start",order:0,timestamp:i.value.range.firstMessageTs,icon:"i-heroicons-play-solid",iconClass:"bg-emerald-50 text-emerald-600 dark:bg-emerald-500/10 dark:text-emerald-400",title:a("views.journey.milestones.start"),date:k(i.value.range.firstMessageTs),detail:a("views.journey.milestones.startDetail")}];return i.value.peakMonth&&c.push({id:"peak",order:1,timestamp:d(i.value.peakMonth.month),icon:"i-heroicons-sparkles-solid",iconClass:"bg-pink-50 text-pink-600 dark:bg-pink-500/10 dark:text-pink-400",title:a("views.journey.milestones.peak"),date:h(i.value.peakMonth.month),detail:a("views.journey.milestones.peakDetail",{count:$(i.value.peakMonth.messageCount)})}),i.value.longestSegment&&c.push({id:"conversation",order:2,timestamp:i.value.longestSegment.startTs,icon:"i-heroicons-chat-bubble-left-right-solid",iconClass:"bg-blue-50 text-blue-600 dark:bg-blue-500/10 dark:text-blue-400",title:a("views.journey.milestones.longestConversation"),date:k(i.value.longestSegment.startTs),detail:a("views.journey.milestones.conversationDetail",{duration:l(i.value.longestSegment.durationSeconds),count:$(i.value.longestSegment.messageCount)})}),i.value.longestSilence&&c.push({id:"silence",order:3,timestamp:i.value.longestSilence.endTs,icon:"i-heroicons-moon-solid",iconClass:"bg-violet-50 text-violet-600 dark:bg-violet-500/10 dark:text-violet-400",title:a("views.journey.milestones.longestSilence"),date:a("views.journey.milestones.silenceRange",{start:k(i.value.longestSilence.startTs),end:k(i.value.longestSilence.endTs)}),detail:i.value.longestSilence.reopenedBy?a("views.journey.milestones.silenceDetailWithMember",{duration:l(i.value.longestSilence.durationSeconds),name:i.value.longestSilence.reopenedBy.name}):a("views.journey.milestones.silenceDetail",{duration:l(i.value.longestSilence.durationSeconds)})}),c.push({id:"end",order:4,timestamp:i.value.range.lastMessageTs,icon:"i-heroicons-flag-solid",iconClass:"bg-amber-50 text-amber-600 dark:bg-amber-500/10 dark:text-amber-400",title:a("views.journey.milestones.end"),date:k(i.value.range.lastMessageTs),detail:a(N.value?"views.journey.milestones.filteredEndDetail":"views.journey.milestones.endDetail")}),c.sort((m,y)=>m.timestamp-y.timestamp||m.order-y.order)});X(()=>[s.sessionId,s.timeFilter],()=>q(),{immediate:!0,deep:!0});async function q(){if(s.sessionId){v.value=!0,I.value=!1;try{i.value=await $e().getJourneyStats(s.sessionId,s.timeFilter)}catch(c){i.value=null,I.value=!0;const m=c instanceof Error?c.message:String(c);console.error("Failed to load journey stats:",c),Ne(`Journey stats load failed: ${m}`,c instanceof Error?c.stack:void 0)}finally{v.value=!1}}}function $(c){return b.value.format(c)}function k(c){return p.value.format(c*1e3)}function h(c){const[m,y]=c.split("-").map(Number);return S.value.format(new Date(m,y-1,1))}function d(c){const[m,y]=c.split("-").map(Number);return Math.floor(new Date(m,y-1,1).getTime()/1e3)}function l(c){const m=Math.max(0,Math.round(c/60));if(m<1)return a("views.journey.duration.lessThanMinute");if(m<60)return a("views.journey.duration.minutes",{count:m});const y=Math.floor(m/60);if(y<24){const J=m%60;return J>0?a("views.journey.duration.hoursMinutes",{hours:y,minutes:J}):a("views.journey.duration.hours",{count:y})}const P=Math.floor(y/24),E=y%24;return E>0?a("views.journey.duration.daysHours",{days:P,hours:E}):a("views.journey.duration.days",{count:P})}function r(c){return c===0?"0%":`${Math.max(4,Math.round(c/M.value*100))}%`}return(c,m)=>{const y=ee;return n(),u("div",{class:F(v.value?"h-full":"")},[v.value?(n(),V(t(he),{key:0,variant:"page",text:t(a)("common.loading")},null,8,["text"])):(n(),u("div",Nn,[A.value?i.value?(n(),u(O,{key:1},[j(Bn,{stats:i.value,filtered:N.value},null,8,["stats","filtered"]),j(t(re),{title:t(a)("views.journey.milestones.title"),description:t(a)("views.journey.milestones.description"),"show-divider":!1},{default:H(()=>[e("div",Vn,[(n(!0),u(O,null,G(f.value,P=>(n(),u("div",{key:P.id,class:"flex min-w-0 items-start gap-3 py-1"},[e("div",{class:F(["flex h-9 w-9 shrink-0 items-center justify-center rounded-xl",P.iconClass])},[j(y,{name:P.icon,class:"h-4 w-4"},null,8,["name"])],2),e("div",Fn,[e("p",On,o(P.title),1),e("p",Un,o(P.date),1),e("p",En,o(P.detail),1)])]))),128))])]),_:1},8,["title","description"]),j(t(re),{title:t(a)("views.journey.years.title"),description:t(a)("views.journey.years.description"),"show-divider":!1},{default:H(()=>[e("div",Wn,[(n(!0),u(O,null,G(i.value.years,P=>(n(),u("div",{key:P.year,class:"grid gap-3 rounded-xl bg-gray-50/70 px-4 py-3 dark:bg-white/[0.025] sm:grid-cols-[72px_minmax(0,1fr)_auto] sm:items-center"},[e("div",Hn,o(P.year),1),e("div",Jn,[e("div",Gn,[e("div",{class:"h-full rounded-full bg-pink-400 dark:bg-pink-400/80",style:pe({width:r(P.messageCount)})},null,4)]),e("p",Kn,[P.messageCount>0?(n(),u(O,{key:0},[we(o(t(a)("views.journey.years.summary",{messages:$(P.messageCount),days:$(P.activeDays),months:$(P.activeMonths)})),1)],64)):(n(),u(O,{key:1},[we(o(t(a)("views.journey.years.quiet")),1)],64))])]),P.messageCount>0?(n(),u("div",Yn,[e("p",Qn,o(h(P.peakMonth)),1),e("p",Xn,o(t(a)("views.journey.years.peak",{count:$(P.peakMonthMessageCount)})),1)])):L("",!0)]))),128))])]),_:1},8,["title","description"])],64)):L("",!0):(n(),V(t(Se),{key:0,icon:"🗓️",text:t(a)(I.value?"views.journey.loadError":"views.journey.empty"),padding:"lg"},null,8,["text"]))]))],2)}}}),ei={class:"main-content mx-auto max-w-[920px] space-y-4 p-4 sm:space-y-6 sm:p-6"},ti={class:"grid grid-cols-1 gap-6 lg:grid-cols-2"},ai={class:"p-3 sm:p-5"},si={class:"p-3 sm:p-5"},ni=Y({__name:"PrivateChatOverview",props:{session:{},memberActivity:{},messageTypes:{},hourlyActivity:{},dailyActivity:{},timeRange:{},filteredMessageCount:{},filteredMemberCount:{},timeFilter:{}},setup(w){const{t:s}=Q(),a=w,{dailyChartData:C}=Ze(()=>a.dailyActivity),i=_(()=>({labels:a.messageTypes.map(b=>bt(b.type,s)),values:a.messageTypes.map(b=>b.count)})),v=_(()=>{if(a.memberActivity.length<2)return null;const p=[...a.memberActivity].sort((N,A)=>A.messageCount-N.messageCount).slice(0,2),S=p[0].messageCount+p[1].messageCount;return{member1:{name:p[0].name,avatar:p[0].avatar,count:p[0].messageCount,percentage:S>0?Math.round(p[0].messageCount/S*100):0},member2:{name:p[1].name,avatar:p[1].avatar,count:p[1].messageCount,percentage:S>0?Math.round(p[1].messageCount/S*100):0},total:S}}),I=_(()=>v.value?{labels:[v.value.member1.name,v.value.member2.name],values:[v.value.member1.count,v.value.member2.count]}:{labels:[],values:[]});return(b,p)=>(n(),u("div",ei,[j(Qe,{session:w.session,"daily-activity":w.dailyActivity,"message-types":w.messageTypes,"hourly-activity":w.hourlyActivity,"time-range":w.timeRange,"filtered-message-count":w.filteredMessageCount,"filtered-member-count":w.filteredMemberCount,"time-filter":w.timeFilter},null,8,["session","daily-activity","message-types","hourly-activity","time-range","filtered-message-count","filtered-member-count","time-filter"]),e("div",ti,[j(t(re),{title:t(s)("analysis.overview.messageTypeDistribution"),"show-divider":!1},{default:H(()=>[e("div",ai,[j(t(Te),{data:i.value,height:280},null,8,["data"])])]),_:1},8,["title"]),v.value?(n(),V(t(re),{key:0,title:t(s)("analysis.overview.memberComparison"),"show-divider":!1},{default:H(()=>[e("div",si,[j(t(Te),{data:I.value,height:280},null,8,["data"])])]),_:1},8,["title"])):L("",!0)]),j(Xe,{"daily-activity":w.dailyActivity,"daily-chart-data":t(C)},null,8,["daily-activity","daily-chart-data"])]))}}),ii={class:"flex h-full flex-col"},oi={class:"min-h-0 flex-1 overflow-auto"},ri=Y({__name:"PrivateChatInsights",props:{sessionId:{},session:{},memberActivity:{},messageTypes:{},hourlyActivity:{},dailyActivity:{},timeRange:{},filteredMessageCount:{},filteredMemberCount:{},timeFilter:{}},setup(w){const{t:s}=Q(),a=w,C=_(()=>[{id:"overview",label:s("analysis.tabs.overview"),icon:"i-heroicons-squares-2x2"},{id:"relationship",label:s("analysis.subTabs.insights.relationship"),icon:"i-heroicons-heart"},{id:"journey",label:s("analysis.subTabs.insights.journey"),icon:"i-heroicons-map"},{id:"type-analysis",label:s("analysis.subTabs.insights.typeAnalysis"),icon:"i-heroicons-chart-pie"},{id:"time-analysis",label:s("analysis.subTabs.insights.timeAnalysis"),icon:"i-heroicons-clock"},{id:"topic",label:s("analysis.subTabs.insights.topic"),icon:"i-heroicons-cloud"},{id:"language-preference",label:s("analysis.subTabs.insights.languagePreference"),icon:"i-heroicons-language"}]),i=U("overview"),v=U(null),I=_(()=>({...a.timeFilter,memberId:v.value}));return(b,p)=>(n(),u("div",ii,[j(t(gt),{modelValue:i.value,"onUpdate:modelValue":p[1]||(p[1]=S=>i.value=S),items:C.value,"persist-key":"privateInsightsTab"},{right:H(()=>[i.value==="type-analysis"||i.value==="time-analysis"?(n(),V(et,{key:0,modelValue:v.value,"onUpdate:modelValue":p[0]||(p[0]=S=>v.value=S),"session-id":a.sessionId},null,8,["modelValue","session-id"])):L("",!0)]),_:1},8,["modelValue","items"]),e("div",oi,[j(t(tt),{"active-key":i.value},{default:H(({viewKey:S})=>[S==="overview"?(n(),V(ni,{key:0,session:a.session,"member-activity":a.memberActivity,"message-types":a.messageTypes,"hourly-activity":a.hourlyActivity,"daily-activity":a.dailyActivity,"time-range":a.timeRange,"filtered-message-count":a.filteredMessageCount,"filtered-member-count":a.filteredMemberCount,"time-filter":a.timeFilter},null,8,["session","member-activity","message-types","hourly-activity","daily-activity","time-range","filtered-message-count","filtered-member-count","time-filter"])):S==="type-analysis"?(n(),V(at,{key:1,"session-id":a.sessionId,"session-name":a.session.name,"time-filter":I.value},null,8,["session-id","session-name","time-filter"])):S==="time-analysis"?(n(),V(st,{key:2,"session-id":a.sessionId,"session-name":a.session.name,"time-filter":I.value},null,8,["session-id","session-name","time-filter"])):S==="relationship"?(n(),V(xn,{key:3,"session-id":a.sessionId,"time-filter":a.timeFilter},null,8,["session-id","time-filter"])):S==="journey"?(n(),V(Zn,{key:4,"session-id":a.sessionId,"time-filter":a.timeFilter,"time-range":a.timeRange},null,8,["session-id","time-filter","time-range"])):S==="topic"?(n(),V(t(nt),{key:5,"session-id":a.sessionId,"time-filter":a.timeFilter,"show-shared-topics":!0},null,8,["session-id","time-filter"])):S==="language-preference"?(n(),V(t(Ka),{key:6,"session-id":a.sessionId,"time-filter":a.timeFilter},null,8,["session-id","time-filter"])):L("",!0)]),_:1},8,["active-key"])])]))}}),li={class:"relative flex h-full flex-col dark:bg-page-dark",style:{"padding-top":"var(--titlebar-area-height)"}},ci=["aria-label"],ui={class:"relative flex-1 overflow-y-auto"},di={class:"h-full"},mi={key:2,class:"flex h-full items-center justify-center"},pi={class:"text-gray-500"},gi={class:"flex h-full flex-col overflow-hidden bg-white dark:bg-page-dark"},vi={class:"flex flex-none items-center justify-between border-b border-gray-200 px-5 py-3 dark:border-gray-700"},xi={class:"text-lg font-semibold text-gray-900 dark:text-white"},hi={class:"text-sm text-gray-500 dark:text-gray-400"},fi={class:"flex-1 overflow-hidden"},yi=Y({__name:"index",setup(w){const s=He(()=>Ge(()=>import("./MessageExportModal-DNU16Bs8.js"),__vite__mapDeps([0,1,2,3,4,5,6,7]))),{t:a}=Q(),C=Ve(),i=Fe(),v=Oe(),I=Ie(),b=Ue(),{currentSessionId:p}=Ee(v),S=U(!1),N=U(!1),A=U(!1),M=U(!1),f=U(!1);function q(){I.openChatRecordDrawer({})}const $=[{id:"insights",labelKey:"analysis.tabs.insights",icon:"i-heroicons-presentation-chart-bar"},{id:"ai-chat",labelKey:"analysis.tabs.aiChat",icon:"i-heroicons-chat-bubble-left-ellipsis"},{id:"memory",labelKey:"analysis.tabs.memory",icon:"i-heroicons-light-bulb"},{id:"more",labelKey:"analysis.tabs.more",icon:"i-heroicons-squares-2x2"}],{activeTab:k,isLoading:h,isInitialLoad:d,isSessionSwitching:l,session:r,memberActivity:c,hourlyActivity:m,dailyActivity:y,messageTypes:P,timeRangeValue:E,fullTimeRange:J,timeFilter:le,initialTimeState:ce,invalidateAnalysisData:ie,handleTimeRangeInitialized:_e}=it({route:C,router:i,currentSessionId:p,selectSession:v.selectSession,defaultTab:b.defaultSessionTab,validTabIds:$.map(K=>K.id)});Ke("session-switch-loading",l);const oe=_(()=>c.value.reduce((K,R)=>K+R.messageCount,0)),ue=_(()=>c.value.filter(K=>K.messageCount>0).length),se=_(()=>{if(!r.value)return null;if(r.value.memberAvatar)return r.value.memberAvatar;if(c.value.length===0)return null;if(r.value.ownerId){const R=c.value.find(Z=>Z.platformId!==r.value?.ownerId);if(R?.avatar)return R.avatar}const K=c.value.find(R=>R.name===r.value?.name);return K?.avatar?K.avatar:(c.value.length,null)});return(K,R)=>{const Z=Re,te=Je;return n(),u("div",li,[t(l)?(n(),u("div",{key:0,"data-testid":"private-chat-switch-loading",class:"absolute inset-0 z-20 flex cursor-wait items-center justify-center bg-page-bg dark:bg-page-dark",style:{paddingTop:"var(--titlebar-area-height)"},role:"status","aria-live":"polite","aria-label":t(a)("common.loading")},[j(t(xt))],8,ci)):L("",!0),t(r)?(n(),u(O,{key:1},[j(ot,{"active-tab":t(k),"onUpdate:activeTab":R[0]||(R[0]=W=>je(k)?k.value=W:null),"time-range-value":t(E),"onUpdate:timeRangeValue":R[1]||(R[1]=W=>je(E)?E.value=W:null),title:t(r).name,avatar:se.value,icon:"i-heroicons-user","icon-class":"bg-pink-600 text-white dark:bg-pink-500 dark:text-white",tabs:$,"current-session-id":t(p),"initial-time-state":t(ce),onOpenIncrementalImport:R[2]||(R[2]=W=>A.value=!0),onOpenMemberManagement:R[3]||(R[3]=W=>f.value=!0),onOpenChatRecord:q,"onUpdate:fullRange":R[4]||(R[4]=W=>J.value=W),onTimeRangeInitialized:t(_e)},null,8,["active-tab","time-range-value","title","avatar","current-session-id","initial-time-state","onTimeRangeInitialized"]),e("div",ui,[t(h)&&!t(l)?(n(),V(t(he),{key:0,variant:"overlay",text:t(a)("common.loading")},null,8,["text"])):L("",!0),e("div",di,[j(We,{name:"tab-slide",mode:"out-in"},{default:H(()=>[t(k)==="insights"?(n(),V(ri,{key:"insights-"+t(p),"session-id":t(p),session:t(r),"member-activity":t(c),"message-types":t(P),"hourly-activity":t(m),"daily-activity":t(y),"time-range":t(J),"filtered-message-count":oe.value,"filtered-member-count":ue.value,"time-filter":t(le)},null,8,["session-id","session","member-activity","message-types","hourly-activity","daily-activity","time-range","filtered-message-count","filtered-member-count","time-filter"])):t(k)==="ai-chat"?(n(),V(t(rt),{key:"ai-chat-"+t(p),"session-id":t(p),"session-name":t(r).name,"chat-type":"private"},null,8,["session-id","session-name"])):t(k)==="memory"?(n(),V(lt,{key:"memory-"+t(p),"session-id":t(p),"session-name":t(r).name},null,8,["session-id","session-name"])):t(k)==="more"?(n(),V(ct,{key:"more-"+t(p),"session-id":t(p),"chat-type":"private"},null,8,["session-id"])):L("",!0)]),_:1})])]),j(ut,{onOpenIncrementalImport:R[5]||(R[5]=W=>A.value=!0),onOpenSemanticIndex:R[6]||(R[6]=W=>S.value=!0),onOpenMemberManagement:R[7]||(R[7]=W=>f.value=!0),onOpenChatRecord:q,onOpenMessageExport:R[8]||(R[8]=W=>M.value=!0)})],64)):t(d)?L("",!0):(n(),u("div",mi,[e("p",pi,o(t(a)("analysis.privateChat.loadError")),1)])),t(p)&&t(r)?(n(),V(dt,{key:3,modelValue:S.value,"onUpdate:modelValue":R[9]||(R[9]=W=>S.value=W),"session-id":t(p),"message-count":t(r).messageCount},null,8,["modelValue","session-id","message-count"])):L("",!0),t(p)&&t(r)?(n(),V(kt,{key:4,modelValue:N.value,"onUpdate:modelValue":R[10]||(R[10]=W=>N.value=W),"session-id":t(p),"chat-type":"private","auto-check":""},null,8,["modelValue","session-id"])):L("",!0),t(p)&&t(r)?(n(),V(mt,{key:5,modelValue:A.value,"onUpdate:modelValue":R[11]||(R[11]=W=>A.value=W),"session-id":t(p),"session-name":t(r).name,onImported:R[12]||(R[12]=()=>{t(ie)(),t(v).loadSessions()})},null,8,["modelValue","session-id","session-name"])):L("",!0),t(p)?(n(),V(t(s),{key:6,modelValue:M.value,"onUpdate:modelValue":R[13]||(R[13]=W=>M.value=W)},null,8,["modelValue"])):L("",!0),t(p)?(n(),V(te,{key:7,open:f.value,"onUpdate:open":R[15]||(R[15]=W=>f.value=W),ui:{content:"max-w-6xl h-[85vh]"}},{content:H(()=>[e("div",gi,[e("div",vi,[e("div",null,[e("h2",xi,o(t(a)("analysis.tooltip.memberManagement")),1),e("p",hi,o(t(a)("members.private.description",{count:t(r)?.memberCount??0})),1)]),j(Z,{variant:"ghost",icon:"i-heroicons-x-mark",size:"sm",onClick:R[14]||(R[14]=W=>f.value=!1)})]),e("div",fi,[j(pt,{"session-id":t(p),"show-header":!1,"chat-type":"private",onDataChanged:t(ie)},null,8,["session-id","onDataChanged"])])])]),_:1},8,["open"])):L("",!0)])}}}),io=Ye(yi,[["__scopeId","data-v-6b7cb7f9"]]);export{io as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{d as ve,ai as ke,aj as _e,ak as fe,b as $,K as be,al as we,a5 as Se,c as u,a as e,g as r,z as g,p as s,l as v,a9 as P,w as S,f as H,F as k,e as p,a8 as Te,am as ze,o as d,j as T,a7 as De,n as z,O as q,an as h}from"./index-B1oj9KDv.js";import{_ as Ce}from"./LoadingState.vue_vue_type_script_setup_true_lang-BBcCt_Qm.js";import{_ as j}from"./ThemeCard.vue_vue_type_script_setup_true_lang-D2outEOV.js";import{C as Ie}from"./CardDecoration-RuBA3N2j.js";import{_ as Ee}from"./EChartLine.vue_vue_type_script_setup_true_lang-Fl7xAOSR.js";import"./vendor-echarts-wordcloud-DNiU8Psq.js";import{T as Me}from"./service-BYOUkk7V.js";import"./vendor-snapdom--nZvo8Sg.js";import"./EChart.vue_vue_type_script_setup_true_lang-DubnuUXI.js";import"./vendor-echarts-C9ugTmum.js";import"./vendor-zrender-D8psf1AA.js";const Ae={class:"min-h-0 flex-1 overflow-y-auto"},Pe={class:"mx-auto w-full max-w-[920px] space-y-6 px-4 py-5 sm:px-6 sm:py-6"},Le={class:"min-w-0"},Oe={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 dark:border-amber-950/40 dark:bg-amber-950/20 dark:text-amber-300"},Ne={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 dark:border-red-950/40 dark:bg-red-950/20 dark:text-red-300"},Re={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"},Ye={key:0},Ve={key:1},$e={key:2},je={class:"space-y-4"},Ue={class:"relative z-10 min-w-0 px-5 pt-6 pb-5 sm:px-8 sm:pt-8 sm:pb-6"},Be={class:"text-2xl font-bold tracking-tight text-gray-900 dark:text-white sm:text-3xl"},Fe={class:"mt-6 max-w-3xl space-y-3 text-gray-600 dark:text-zinc-300"},We={class:"flex flex-wrap items-baseline gap-x-2 gap-y-1 text-lg leading-relaxed sm:text-xl"},Ge={class:"font-black text-2xl tracking-tight tabular-nums text-pink-600 sm:text-3xl dark:text-pink-400"},He={class:"flex flex-wrap items-baseline gap-x-2 gap-y-1 text-base leading-relaxed sm:text-lg"},qe={class:"font-black text-2xl tabular-nums text-indigo-600 dark:text-indigo-400"},Ke={class:"font-black text-2xl tabular-nums text-blue-600 dark:text-blue-400"},Je={class:"mt-7"},Ze={class:"mb-2 text-[10px] font-bold uppercase tracking-widest text-gray-400 dark:text-zinc-500"},Qe={class:"grid grid-cols-2 gap-2 lg:grid-cols-4"},Xe={class:"min-w-0"},et={class:"mt-0.5 truncate text-[10px] font-medium text-gray-500 dark:text-zinc-400"},tt={class:"mt-0.5 truncate text-[9px] text-gray-400 dark:text-zinc-500"},st={class:"mt-6"},at={class:"text-xs font-bold tracking-wide text-gray-700 dark:text-zinc-300"},nt={class:"mt-1 text-[10px] text-gray-400 dark:text-zinc-500"},ot={class:"mt-2"},rt={class:"mt-2 text-[10px] leading-5 text-gray-400 dark:text-zinc-500"},it={class:"mt-4 flex flex-wrap items-center justify-between gap-x-6 gap-y-1 border-t border-gray-200/60 pt-4 font-mono text-[10px] text-gray-400 dark:border-white/5 dark:text-zinc-500"},lt={class:"min-w-0 p-5 sm:p-6"},ct={class:"flex items-center gap-2 text-xs font-bold uppercase tracking-wider text-gray-700 dark:text-zinc-300"},dt={class:"mt-1 text-[11px] text-gray-400 dark:text-zinc-500"},ut={class:"mt-5 grid gap-6 lg:grid-cols-7 lg:gap-0"},pt={class:"min-w-0 lg:col-span-4 lg:pr-8"},mt={key:0,class:"space-y-3.5"},xt={class:"text-xs font-medium text-gray-500 dark:text-zinc-400"},gt={class:"h-1.5 overflow-hidden rounded-full bg-gray-100 dark:bg-zinc-800"},ht={class:"min-w-[4.75rem] whitespace-nowrap text-right font-mono text-[10px] font-semibold tabular-nums text-gray-600 dark:text-zinc-300"},yt={key:1,class:"text-xs text-gray-400"},vt={class:"min-w-0 border-t border-gray-200/60 pt-5 lg:col-span-3 lg:border-t-0 lg:border-l lg:pt-0 lg:pl-8 dark:border-white/5"},kt={class:"text-xs font-semibold text-gray-700 dark:text-zinc-300"},_t={key:0,class:"mt-3 divide-y divide-gray-200/60 dark:divide-white/5"},ft={class:"flex h-5 w-5 items-center justify-center rounded-full bg-pink-50 font-mono text-[9px] font-bold text-pink-600 dark:bg-pink-950/30 dark:text-pink-400"},bt={class:"flex min-w-0 items-baseline gap-2"},wt={class:"font-mono text-xs font-semibold tabular-nums text-gray-700 dark:text-zinc-200"},St={class:"truncate text-[10px] text-gray-400 dark:text-zinc-500"},Tt={class:"whitespace-nowrap font-mono text-[10px] font-semibold tabular-nums text-gray-600 dark:text-zinc-300"},zt={key:1,class:"mt-3 text-xs text-gray-400"},Dt={class:"min-w-0 p-5 sm:p-6"},Ct={class:"flex flex-wrap items-end justify-between gap-x-6 gap-y-2"},It={class:"text-base font-semibold text-gray-800 dark:text-zinc-200"},Et={class:"mt-1 text-[11px] text-gray-400 dark:text-zinc-500"},Mt={key:0,class:"mt-5 grid gap-8 lg:grid-cols-2 lg:gap-0 lg:divide-x lg:divide-gray-200/60 dark:lg:divide-white/5"},At={class:"flex items-center justify-between gap-4 border-b border-gray-200/60 pb-3 dark:border-white/5"},Pt={class:"flex min-w-0 items-center gap-2"},Lt={class:"truncate text-sm font-semibold text-gray-700 dark:text-zinc-200"},Ot={class:"shrink-0 text-[10px] text-gray-400 dark:text-zinc-500"},Nt={key:0,class:"divide-y divide-gray-200/60 dark:divide-white/5"},Rt={class:"grid grid-cols-[28px_minmax(0,1fr)_auto] items-center gap-3"},Yt={class:"min-w-0"},Vt={class:"block truncate text-sm font-semibold text-gray-700 dark:text-zinc-200"},$t={class:"mt-1 block truncate text-[10px] text-gray-400 dark:text-zinc-500"},jt={class:"shrink-0 text-right"},Ut={class:"whitespace-nowrap font-mono text-xs font-black tabular-nums text-gray-900 dark:text-white"},Bt={class:"mt-1 font-mono text-[10px] tabular-nums text-gray-400 dark:text-zinc-500"},Ft={class:"mt-2 ml-10 h-1 overflow-hidden rounded-full bg-gray-100 dark:bg-zinc-800"},Wt={key:1,class:"pt-4 text-xs text-gray-400"},Gt={key:1,class:"mt-5 text-xs text-gray-400"},os=ve({__name:"index",setup(Ht){const U=ke(),n=_e(ze),{formatDate:_,formatNumber:K}=fe(),f=U.insightScope,b=U.services.get(Me),J=new Date().getFullYear(),D=$(f.getSnapshot()),l=$(null),C=$("");let I=null,E=0;const L=p(()=>{const t=D.value.time;return t?t.mode==="recent"?{mode:"recent",days:365,acceptStale:!0}:{mode:"year",year:t.year??J,acceptStale:!0}:null}),Z=p(()=>JSON.stringify(L.value)),O=p(()=>(l.value?.coverage.missingOwnerSessions??0)+(l.value?.coverage.unresolvedOwnerSessions??0)),N=p(()=>l.value?.metrics!==null&&l.value?.metrics!==void 0),Q=p(()=>l.value?.task.status==="running"),X=p(()=>N.value&&l.value?.metrics?.estimatedSeconds===0),ee=p(()=>(l.value?.coverage.totalSessions??0)>0&&l.value?.coverage.analyzedSessions===0&&O.value>0),te=p(()=>D.value.time?.mode==="year"?D.value.time.year:void 0),M=p(()=>{const t=te.value,a=l.value?.latestDataYear;return t===void 0||a===null||a===void 0||t===a?null:{year:t,latestYear:a}}),se=p(()=>l.value?.range.mode==="year"?n("yearTitle",{year:l.value.range.year}):n("recentTitle")),ae=p(()=>{const t=l.value?.range;if(!t)return"";const a={day:"2-digit",month:"2-digit",year:"numeric"},i=_(t.startTs*1e3,a),c=_(t.endTs*1e3,a);return i===c?i:`${i} – ${c}`}),ne=p(()=>{const t=l.value?.range,a=l.value?.monthlyActivity??[];return{labels:a.map(i=>t?.mode==="year"?n("monthLabel",{month:Number(i.key.slice(5))}):i.key.replace("-","/")),values:a.map(i=>me(i.estimatedSeconds))}}),R=p(()=>{const t=l.value?.range;if(!t)return[];const a=Array(7).fill(0),i=Array(7).fill(0),c=new Map((l.value?.dailyActivity??[]).map(x=>[x.key,x.estimatedSeconds])),o=W(new Date(t.startTs*1e3)),m=W(new Date(t.endTs*1e3));for(;o<=m;){const x=(o.getDay()+6)%7;a[x]+=c.get(xe(o))??0,i[x]++,o.setDate(o.getDate()+1)}const G=a.map((x,w)=>i[w]?Math.round(x/i[w]):0),ye=Math.max(...G,1);return G.map((x,w)=>({key:w,label:_(new Date(2024,0,1+w),{weekday:"short"}),seconds:x,width:x>0?Math.max(x/ye*100,3):0}))}),oe=p(()=>R.value.some(t=>t.seconds>0)),Y=p(()=>[...l.value?.dailyActivity??[]].filter(t=>t.estimatedSeconds>0).sort((t,a)=>a.estimatedSeconds-t.estimatedSeconds||t.key.localeCompare(a.key)).slice(0,3).map(t=>{const a=ge(t.key);return{...t,dateLabel:_(a,{month:"2-digit",day:"2-digit"}),weekdayLabel:_(a,{weekday:"short"})}})),B=p(()=>[h.GROUP,h.PRIVATE].map(t=>l.value?.chatTypes.find(a=>a.type===t)).filter(t=>t!==void 0)),re=p(()=>{const t=B.value.find(o=>o.type===h.PRIVATE),a=B.value.find(o=>o.type===h.GROUP),i=Y.value[0],c=[...R.value].sort((o,m)=>m.seconds-o.seconds)[0];return[{key:"private",icon:"i-heroicons-user",colorClass:"text-pink-600 dark:text-pink-400",label:n("privateChat"),value:t?y(t.seconds):"—",subtext:n("shareOfTotal",{share:t?.share??0})},{key:"group",icon:"i-heroicons-user-group",colorClass:"text-blue-600 dark:text-blue-400",label:n("groupChat"),value:a?y(a.seconds):"—",subtext:n("shareOfTotal",{share:a?.share??0})},{key:"peakDay",icon:"i-heroicons-fire",colorClass:"text-red-600 dark:text-red-400",label:n("peakDay"),value:i?.dateLabel??"—",subtext:i?y(i.estimatedSeconds):"—"},{key:"peakWeekday",icon:"i-heroicons-calendar-days",colorClass:"text-amber-600 dark:text-amber-400",label:n("peakWeekday"),value:c?.seconds?c.label:"—",subtext:c?.seconds?y(c.seconds):"—"}]}),F=p(()=>[h.PRIVATE,h.GROUP].map(t=>{const a=(l.value?.sessionRanking??[]).filter(i=>i.type===t).slice(0,10).map((i,c)=>({...i,rank:c+1}));return{type:t,items:a,maxSeconds:Math.max(...a.map(i=>i.seconds),1)}})),ie=p(()=>F.value.some(t=>t.items.length>0)),le=f.subscribe(()=>{D.value=f.getSnapshot()}),ce=b.subscribeOwnerSettingsClosed(()=>{A(!1)});be(Z,()=>{V(),L.value&&(l.value=null,A(!1))},{immediate:!0}),we(()=>{E++,V(),le(),ce()});async function A(t){const a=L.value;if(!a)return;const i=++E;C.value="";try{const c=t?await b.recompute(a):await b.get(a);if(i!==E)return;l.value=c,c.metrics&&f.setAvailableTimeYears(c.availableDataYears),c.task.status==="running"&&de()}catch(c){if(i!==E)return;const o=c instanceof Error?c.message:String(c);C.value=o,Se(`Global insight time investment failed: ${o}`,c instanceof Error?c.stack:void 0)}}function de(){V(),I=setTimeout(()=>{A(!1)},900)}function V(){I&&(clearTimeout(I),I=null)}function ue(){const t=l.value?.latestDataYear;t&&f.switchTimeToYear(t)}function pe(){b.openOwnerSettings()}function y(t){const a=Math.round(t/60);if(t>0&&a<1)return n("duration.lessThanMinute");if(a<60)return n("duration.minutes",{count:a});const i=Math.floor(a/60),c=a%60;return c?n("duration.hoursMinutes",{hours:i,minutes:c}):n("duration.hours",{count:i})}function me(t){return Math.round(t/3600*10)/10}function W(t){return new Date(t.getFullYear(),t.getMonth(),t.getDate())}function xe(t){return`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}-${String(t.getDate()).padStart(2,"0")}`}function ge(t){const[a,i,c]=t.split("-").map(Number);return new Date(a,i-1,c)}function he(t){return n(t===h.PRIVATE?"privateChat":"groupChat")}return(t,a)=>{const i=De,c=Te;return d(),u("main",Ae,[e("div",Pe,[O.value>0&&r(b).canConfigureOwner?(d(),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:pe},[g(i,{name:"i-heroicons-user-circle",class:"h-4 w-4 shrink-0"}),e("span",Le,s(r(n)("status.ownerIssues",{count:O.value})),1),g(i,{name:"i-heroicons-arrow-right",class:"h-3.5 w-3.5 shrink-0 opacity-70"})])):v("",!0),l.value?.cache.status==="stale"||Q.value&&N.value?(d(),u("div",Oe,[g(i,{name:"i-heroicons-arrow-path",class:"h-4 w-4 shrink-0 animate-spin"}),P(" "+s(r(n)("status.updating")),1)])):v("",!0),C.value||l.value?.task.status==="failed"?(d(),u("div",Ne,[e("span",null,s(r(n)("failed")),1),g(c,{size:"xs",color:"error",variant:"soft",icon:"i-heroicons-arrow-path",onClick:a[0]||(a[0]=o=>A(!0))},{default:S(()=>[P(s(r(n)("actions.retry")),1)]),_:1})])):v("",!0),!N.value&&!C.value&&l.value?.task.status!=="failed"?(d(),H(Ce,{key:3,height:"min(52vh, 420px)",text:l.value?.task.status==="running"?r(n)("status.computingProgress",{processed:l.value.task.processedSessions,total:l.value.task.totalSessions}):r(n)("loading")},null,8,["text"])):l.value?.metrics?(d(),u(k,{key:4},[X.value?(d(),u("div",Re,[ee.value?(d(),u("span",Ye,s(r(n)("status.noAnalyzableOwner")),1)):M.value?(d(),u("span",Ve,s(r(n)("status.noDataWithLatest",M.value)),1)):(d(),u("span",$e,s(r(n)("noData")),1)),M.value?(d(),H(c,{key:3,size:"xs",variant:"soft",color:"neutral",icon:"i-heroicons-arrow-right",onClick:ue},{default:S(()=>[P(s(r(n)("actions.switchYear",{year:M.value.latestYear})),1)]),_:1})):v("",!0)])):v("",!0),e("div",je,[g(r(j),{class:"relative isolate overflow-hidden"},{default:S(()=>[g(r(Ie)),e("section",Ue,[e("h2",Be,s(se.value),1),e("div",Fe,[e("p",We,[e("span",null,s(r(n)("narrative.totalPrefix")),1),e("span",Ge,s(y(l.value.metrics.estimatedSeconds)),1),e("span",null,s(r(n)("narrative.totalSuffix")),1)]),e("p",He,[e("span",null,s(r(n)("narrative.daysPrefix")),1),e("span",qe,s(r(K)(l.value.metrics.activeDayCount)),1),e("span",null,s(r(n)("narrative.daysMiddle")),1),e("span",Ke,s(y(l.value.metrics.averagePerActiveDaySeconds)),1),e("span",null,s(r(n)("narrative.daysSuffix")),1)])]),e("div",Je,[e("div",Ze,s(r(n)("keyMetrics")),1),e("div",Qe,[(d(!0),u(k,null,T(re.value,o=>(d(),u("div",{key:o.key,class:"flex min-w-0 items-start gap-2 px-2.5 py-2"},[g(i,{name:o.icon,class:z(["mt-0.5 h-3.5 w-3.5 shrink-0",o.colorClass])},null,8,["name","class"]),e("div",Xe,[e("div",{class:z(["truncate font-mono text-sm leading-tight font-black tabular-nums",o.colorClass])},s(o.value),3),e("div",et,s(o.label),1),e("div",tt,s(o.subtext),1)])]))),128))])]),e("div",st,[e("div",null,[e("h3",at,s(r(n)("monthlyTitle")),1),e("p",nt,s(r(n)("monthlyDescription")),1)]),e("div",ot,[g(r(Ee),{data:ne.value,height:240,mode:"compact",smooth:!1,"show-area":!1},null,8,["data"])]),e("p",rt,s(r(n)("estimateNote")),1)]),e("div",it,[e("span",null,s(ae.value),1),e("span",null,s(r(n)("status.coverage",{analyzed:l.value.coverage.analyzedSessions,total:l.value.coverage.totalSessions})),1)])])]),_:1}),g(r(j),null,{default:S(()=>[e("section",lt,[e("h3",ct,[a[1]||(a[1]=e("span",{class:"inline-block h-2 w-2 rounded-full bg-pink-500 dark:bg-pink-400"},null,-1)),P(" "+s(r(n)("rhythmTitle")),1)]),e("p",dt,s(r(n)("rhythmDescription")),1),e("div",ut,[e("div",pt,[oe.value?(d(),u("div",mt,[(d(!0),u(k,null,T(R.value,o=>(d(),u("div",{key:o.key,class:"grid grid-cols-[2.25rem_minmax(0,1fr)_auto] items-center gap-3"},[e("span",xt,s(o.label),1),e("div",gt,[e("div",{class:"h-full rounded-full bg-pink-500 transition-[width] duration-500 dark:bg-pink-400",style:q({width:`${o.width}%`})},null,4)]),e("span",ht,s(y(o.seconds)),1)]))),128))])):(d(),u("p",yt,s(r(n)("noData")),1))]),e("div",vt,[e("h4",kt,s(r(n)("topDaysTitle")),1),Y.value.length?(d(),u("div",_t,[(d(!0),u(k,null,T(Y.value,(o,m)=>(d(),u("div",{key:o.key,class:"grid grid-cols-[1.5rem_minmax(0,1fr)_auto] items-center gap-3 py-2.5 first:pt-0 last:pb-0"},[e("span",ft,s(m+1),1),e("div",bt,[e("span",wt,s(o.dateLabel),1),e("span",St,s(o.weekdayLabel),1)]),e("span",Tt,s(y(o.estimatedSeconds)),1)]))),128))])):(d(),u("p",zt,s(r(n)("noData")),1))])])])]),_:1}),g(r(j),null,{default:S(()=>[e("section",Dt,[e("div",Ct,[e("div",null,[e("h3",It,s(r(n)("rankingTitle")),1),e("p",Et,s(r(n)("rankingDescription")),1)])]),ie.value?(d(),u("div",Mt,[(d(!0),u(k,null,T(F.value,o=>(d(),u("div",{key:o.type,class:"min-w-0 lg:px-10 lg:first:pl-0 lg:last:pr-0"},[e("div",At,[e("div",Pt,[e("span",{class:z(["h-2.5 w-2.5 shrink-0 rounded-full",o.type===r(h).PRIVATE?"bg-pink-500 dark:bg-pink-400":"bg-blue-500 dark:bg-blue-400"])},null,2),e("h4",Lt,s(he(o.type)),1)]),e("span",Ot,s(r(n)("rankingCount",{count:o.items.length})),1)]),o.items.length?(d(),u("div",Nt,[(d(!0),u(k,null,T(o.items,m=>(d(),u("div",{key:m.sessionId,class:"min-w-0 py-3 last:pb-0"},[e("div",Rt,[e("span",{class:z(["flex h-6 w-6 items-center justify-center rounded-full font-mono text-[10px] font-bold",m.rank<=3?o.type===r(h).PRIVATE?"bg-pink-50 text-pink-600 dark:bg-pink-950/30 dark:text-pink-400":"bg-blue-50 text-blue-600 dark:bg-blue-950/30 dark:text-blue-400":"bg-gray-100 text-gray-500 dark:bg-zinc-800 dark:text-zinc-400"])},s(m.rank),3),e("div",Yt,[e("span",Vt,s(m.name),1),e("span",$t,s(m.platform),1)]),e("div",jt,[e("div",Ut,s(y(m.seconds)),1),e("div",Bt,s(m.share)+"% ",1)])]),e("div",Ft,[e("div",{class:z(["h-full rounded-full",o.type===r(h).PRIVATE?"bg-pink-500 dark:bg-pink-400":"bg-blue-500 dark:bg-blue-400"]),style:q({width:`${m.seconds/o.maxSeconds*100}%`})},null,6)])]))),128))])):(d(),u("p",Wt,s(r(n)("noData")),1))]))),128))])):(d(),u("p",Gt,s(r(n)("noData")),1))])]),_:1})])],64)):v("",!0)])])}}});export{os as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{ar as W,as as D,E as z,b6 as F,b as g,aW as N,b7 as U,K as E,o as d,f as K,w as x,a as c,n as u,g as t,c as m,z as y,r as h,a9 as b,p as l,l as _,P as L,e as w,aw as S,av as O,H as P,b8 as R,b9 as A,d as M,a6 as H,ay as T,aD as G,az as J,aR as Q,aq as X,a8 as Y}from"./index-B1oj9KDv.js";import{_ as Z}from"./Checkbox-_eH64bb0.js";import{L as ee}from"./Label-DCIcxkhU.js";import{_ as te}from"./ThemeCard.vue_vue_type_script_setup_true_lang-D2outEOV.js";import"./vendor-snapdom--nZvo8Sg.js";import"./useFormControl-CrWi_6Hn.js";import"./VisuallyHiddenInput-BAFpkxMI.js";import"./RovingFocusItem-BJMUQ5DJ.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"],oe=["id"],se=["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 s=V,n=W(),e=D("formField",s),k=O(),r=w(()=>S({extend:S(ae),...k.ui?.formField||{}})({size:e.size,required:e.required,orientation:e.orientation})),v=z(F,null),o=w(()=>e.error||v?.value?.find(a=>a.name===e.name||e.errorPattern&&a.name?.match(e.errorPattern))?.message),i=g(N()),f=i.value,q=z(U,void 0);return E(i,()=>{q&&e.name&&(q.value[e.name]={id:i.value,pattern:e.errorPattern})},{immediate:!0}),P(R,i),P(A,w(()=>({error:o.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(),K(t(L),{as:t(e).as,"data-orientation":t(e).orientation,"data-slot":"root",class:u(r.value.root({class:[t(e).ui?.root,t(e).class]}))},{default:x(()=>[c("div",{"data-slot":"wrapper",class:u(r.value.wrapper({class:t(e).ui?.wrapper}))},[t(e).label||n.label?(d(),m("div",{key:0,"data-slot":"labelWrapper",class:u(r.value.labelWrapper({class:t(e).ui?.labelWrapper}))},[y(t(ee),{for:i.value,"data-slot":"label",class:u(r.value.label({class:t(e).ui?.label}))},{default:x(()=>[h(a.$slots,"label",{label:t(e).label},()=>[b(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:u(r.value.hint({class:t(e).ui?.hint}))},[h(a.$slots,"hint",{hint:t(e).hint},()=>[b(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:u(r.value.description({class:t(e).ui?.description}))},[h(a.$slots,"description",{description:t(e).description},()=>[b(l(t(e).description),1)])],10,oe)):_("",!0)],2),c("div",{class:u([(t(e).label||!!n.label||t(e).description||!!n.description)&&r.value.container({class:t(e).ui?.container})])},[h(a.$slots,"default",{error:o.value}),t(e).error!==!1&&(typeof o.value=="string"&&o.value||n.error)?(d(),m("div",{key:0,id:`${t(f)}-error`,"data-slot":"error",class:u(r.value.error({class:t(e).ui?.error}))},[h(a.$slots,"error",{error:o.value},()=>[b(l(o.value),1)])],10,se)):t(e).help||n.help?(d(),m("div",{key:1,id:`${t(f)}-help`,"data-slot":"help",class:u(r.value.help({class:t(e).ui?.help}))},[h(a.$slots,"help",{help:t(e).help},()=>[b(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"},ue={class:"text-center"},ce={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"},qe=M({__name:"index",setup(V){const{t:s}=H(),n=T(),e=G(),k=J(),r=g(""),v=g(k.rememberDevice),o=g(""),i=g(!1);function f(a){return!a||!a.startsWith("/")||a.startsWith("/login")?"/":a}async function q(){const a=r.value.trim();if(!a){o.value=s("common.login.errorEmpty");return}i.value=!0,o.value="";try{if(!(await fetch("/api/v1/status",{headers:{Authorization:`Bearer ${a}`}})).ok){o.value=s("common.login.errorInvalid");return}k.login(a,v.value);const $=f(e.query.redirect);n.replace($)}catch{o.value=s("common.login.errorNetwork")}finally{i.value=!1}}return(a,p)=>{const $=X,j=ne,B=Z,C=Y;return d(),m("div",ie,[y(t(te),{class:"w-full max-w-sm space-y-6 p-8"},{default:x(()=>[c("div",ue,[p[2]||(p[2]=c("h1",{class:"text-2xl font-bold text-gray-900 dark:text-white"},"ChatLab",-1)),c("p",ce,l(t(s)("common.login.description")),1)]),c("form",{class:"space-y-4",onSubmit:Q(q,["prevent"])},[y(j,{label:t(s)("common.login.tokenLabel")},{default:x(()=>[y($,{modelValue:r.value,"onUpdate:modelValue":p[0]||(p[0]=I=>r.value=I),type:"password",placeholder:t(s)("common.login.tokenPlaceholder"),autocomplete:"off",class:"w-full"},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),o.value?(d(),m("p",de,l(o.value),1)):_("",!0),c("label",pe,[y(B,{modelValue:v.value,"onUpdate:modelValue":p[1]||(p[1]=I=>v.value=I)},null,8,["modelValue"]),c("span",null,l(t(s)("common.login.rememberDevice")),1)]),y(C,{type:"submit",block:"",loading:i.value,color:"primary"},{default:x(()=>[b(l(t(s)("common.login.submit")),1)]),_:1},8,["loading"])],32),c("p",me,l(t(s)("common.login.hint")),1),v.value?(d(),m("p",fe,l(t(s)("common.login.rememberWarning")),1)):_("",!0)]),_:1})])}}});export{qe as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{d as ke,a6 as be,o as c,f as re,w as T,c as f,a,p as o,g as r,z as y,a8 as _e,a7 as Se,F as q,j as he,l as N,a9 as Z,aE as Tt,e as u,ah as De,L as Lt,J as $t,ay as It,bg as Ft,K as O,x as Pt,y as Mt,aq as zt,a1 as At,O as X,n as U,bh as Et,b,C as Be,bv as Nt}from"./index-B1oj9KDv.js";import{_ as Bt}from"./Tabs-BMq9wODW.js";import{u as jt}from"./useToast-B5LaA6c-.js";import{_ as Vt}from"./ThemeCard.vue_vue_type_script_setup_true_lang-D2outEOV.js";import{_ as Dt}from"./LoadingState.vue_vue_type_script_setup_true_lang-BBcCt_Qm.js";import{_ as Gt}from"./SectionTabs.vue_vue_type_script_setup_true_lang-qFhJO5B0.js";import{u as Ot}from"./people-page-header-BbYSSpsO.js";import"./vendor-snapdom--nZvo8Sg.js";import"./RovingFocusItem-BJMUQ5DJ.js";const Ut={key:0,class:"flex h-full w-[420px] max-w-[80vw] shrink-0 flex-col border-l border-gray-200 bg-white dark:border-gray-800 dark:bg-page-dark",style:{"-webkit-app-region":"no-drag"}},qt={class:"flex items-center justify-between border-b border-gray-200 px-4 py-3 dark:border-gray-800"},Rt={class:"text-base font-semibold text-gray-900 dark:text-white"},Ht={key:0,class:"flex min-h-0 flex-1 items-center justify-center gap-2 text-sm text-gray-400 dark:text-gray-500"},Kt={key:1,class:"min-h-0 flex-1 overflow-y-auto"},Yt={class:"px-5 py-5"},Qt={class:"flex items-start gap-4"},Wt={class:"relative shrink-0"},Jt=["src","alt"],Xt={key:1,class:"flex h-16 w-16 items-center justify-center rounded-2xl bg-gradient-to-br from-gray-155 to-gray-200 text-lg font-bold text-gray-700 dark:from-gray-800 dark:to-page-dark dark:text-gray-200"},Zt={class:"min-w-0 flex-1 pt-1"},ea={class:"truncate text-lg font-bold tracking-tight text-gray-900 dark:text-white"},ta={class:"mt-1 truncate font-mono text-xs text-gray-400 dark:text-gray-500"},aa={key:0,class:"mt-2 flex flex-wrap gap-1.5"},na={key:1,class:"mt-3 flex flex-wrap items-center gap-2"},sa={class:"border-t border-gray-100 px-5 py-4 dark:border-white/5"},oa={class:"mb-3 text-[10px] font-bold uppercase tracking-wider text-gray-400 dark:text-gray-500"},ra={class:"space-y-2.5"},ia={class:"flex items-center justify-between gap-2"},la={class:"truncate text-xs font-semibold text-gray-700 dark:text-gray-300"},ca={class:"flex items-center gap-1 text-[10px] font-bold text-gray-400 transition group-hover/item:text-pink-500 dark:text-gray-500"},da={class:"mt-1.5 truncate text-[11px] font-medium text-gray-400 dark:text-gray-500"},ua={class:"mt-2 flex flex-wrap gap-1.5"},fa=ke({__name:"ContactDetailPanel",props:{selectedKey:{},contact:{},isLoading:{type:Boolean},isFriendActionLoading:{type:Boolean}},emits:["clear","openSource","viewSourceRecords","markFriend","unmarkFriend"],setup(n,{emit:s}){const h=n,S=s,{t:C}=be(),A=u(()=>{const p=h.contact;if(!p)return[];const v=new Set([p.displayName.trim().toLowerCase(),p.platformId.trim().toLowerCase()]);return p.aliases.filter(w=>!v.has(w.trim().toLowerCase()))}),I=u(()=>h.contact?.pool==="non_friend"),F=u(()=>h.contact?.friendSource==="manual"),B=u(()=>I.value||F.value);function P(p){return p.displayName.trim().slice(0,1).toUpperCase()||"?"}return(p,v)=>{const w=_e,R=Se;return c(),re(Tt,{name:"contact-detail-panel"},{default:T(()=>[n.selectedKey?(c(),f("aside",Ut,[a("div",qt,[a("h3",Rt,o(r(C)("contacts.detail.title")),1),y(w,{"aria-label":r(C)("contacts.actions.clearSelection"),icon:"i-heroicons-x-mark",color:"neutral",variant:"ghost",size:"sm",onClick:v[0]||(v[0]=x=>S("clear"))},null,8,["aria-label"])]),n.isLoading?(c(),f("div",Ht,[y(R,{name:"i-lucide-loader-2",class:"h-4 w-4 animate-spin"}),a("span",null,o(r(C)("common.loading")),1)])):n.contact?(c(),f("div",Kt,[a("section",Yt,[a("div",Qt,[a("div",Wt,[n.contact.avatar?(c(),f("img",{key:0,src:n.contact.avatar,alt:n.contact.displayName,loading:"lazy",decoding:"async",class:"h-16 w-16 rounded-2xl object-cover shadow-sm ring-2 ring-white dark:ring-page-dark"},null,8,Jt)):(c(),f("div",Xt,o(P(n.contact)),1))]),a("div",Zt,[a("h2",ea,o(n.contact.displayName),1),a("p",ta,o(n.contact.platform)+" · "+o(n.contact.platformId),1),A.value.length>0?(c(),f("div",aa,[(c(!0),f(q,null,he(A.value.slice(0,4),x=>(c(),f("span",{key:x,class:"max-w-full truncate rounded-md bg-gray-100 px-2 py-0.5 text-[11px] font-medium text-gray-500 dark:bg-white/5 dark:text-gray-400"},o(x),1))),128))])):N("",!0),B.value?(c(),f("div",na,[I.value?(c(),re(w,{key:0,icon:"i-lucide-user-plus",color:"primary",variant:"soft",size:"xs",loading:n.isFriendActionLoading,onClick:v[1]||(v[1]=x=>S("markFriend"))},{default:T(()=>[Z(o(r(C)("contacts.actions.markFriend")),1)]),_:1},8,["loading"])):F.value?(c(),re(w,{key:1,icon:"i-lucide-user-minus",color:"neutral",variant:"soft",size:"xs",loading:n.isFriendActionLoading,onClick:v[2]||(v[2]=x=>S("unmarkFriend"))},{default:T(()=>[Z(o(r(C)("contacts.actions.unmarkFriend")),1)]),_:1},8,["loading"])):N("",!0)])):N("",!0)])])]),a("section",sa,[a("h3",oa,o(r(C)("contacts.detail.sources")),1),a("div",ra,[(c(!0),f(q,null,he(n.contact.sourceSessions,x=>(c(),f("div",{key:x.id,class:"w-full rounded-2xl border border-gray-100 bg-white/40 px-3.5 py-3 text-left transition duration-300 hover:border-gray-200 dark:border-white/5 dark:bg-page-dark/10 dark:hover:border-white/10"},[a("div",ia,[a("span",la,o(x.name),1),a("span",ca,o(x.type==="private"?r(C)("contacts.detail.sourceType.private"):r(C)("contacts.detail.sourceType.group")),1)]),a("div",da,o(x.privateMessageCount!=null?r(C)("contacts.metrics.privateMessages",{count:x.privateMessageCount}):r(C)("contacts.metrics.groupSignals",{count:x.coOccurrenceCount??0})),1),a("div",ua,[y(w,{icon:"i-lucide-arrow-up-right",color:"primary",variant:"soft",size:"xs",onClick:j=>S("openSource",x)},{default:T(()=>[Z(o(r(C)("contacts.actions.openSourceSession")),1)]),_:1},8,["onClick"]),y(w,{icon:"i-lucide-messages-square",color:"primary",variant:"soft",size:"xs",onClick:j=>S("viewSourceRecords",x)},{default:T(()=>[Z(o(r(C)("contacts.actions.viewSourceRecords")),1)]),_:1},8,["onClick"])])]))),128))])])])):N("",!0)])):N("",!0)]),_:1})}}}),ma=De(fa,[["__scopeId","data-v-4df1b50a"]]),pa={key:0,class:"flex items-center gap-3.5 rounded-2xl border border-amber-200/60 bg-amber-50/40 p-4 text-sm text-amber-800 backdrop-blur-sm dark:border-amber-900/40 dark:bg-amber-950/10 dark:text-amber-200"},ga={class:"flex h-9 w-9 shrink-0 items-center justify-center rounded-xl bg-amber-100/80 dark:bg-amber-950/50"},va={class:"font-medium"},xa={key:1,class:"flex flex-col gap-4 rounded-2xl border border-zinc-200/80 bg-zinc-50/60 p-4 text-sm text-zinc-700 backdrop-blur-sm dark:border-zinc-800/80 dark:bg-page-dark/40 dark:text-zinc-300 sm:flex-row sm:items-center sm:justify-between"},ya={class:"flex items-center gap-3.5"},ha={class:"flex h-9 w-9 shrink-0 items-center justify-center rounded-xl bg-zinc-100 dark:bg-zinc-800/80"},ka={class:"font-medium"},ba={class:"flex items-center shrink-0 self-end sm:self-center"},_a={key:2,class:"flex flex-col gap-4 rounded-2xl border border-red-200/60 bg-red-50/40 p-4 text-sm text-red-700 backdrop-blur-sm dark:border-red-900/40 dark:bg-red-950/10 dark:text-red-300 sm:flex-row sm:items-center sm:justify-between"},Sa={class:"flex min-w-0 items-center gap-3.5"},wa={class:"flex h-9 w-9 shrink-0 items-center justify-center rounded-xl bg-red-100/80 dark:bg-red-950/50"},Ca={class:"truncate font-medium"},Ta={class:"flex items-center shrink-0 self-end sm:self-center"},La=ke({__name:"ContactsStatusBlocks",props:{showDisabledNotice:{type:Boolean},activePrivateSessionCount:{},cacheStatus:{},taskFailed:{type:Boolean},taskLastError:{},isTaskRunning:{type:Boolean},isRecomputing:{type:Boolean}},emits:["recompute"],setup(n,{emit:s}){const h=s,{t:S}=be();return(C,A)=>{const I=Se,F=_e;return c(),f(q,null,[n.showDisabledNotice?(c(),f("div",pa,[a("div",ga,[y(I,{name:"i-lucide-alert-triangle",class:"h-5 w-5 text-amber-500"})]),a("span",va,o(r(S)("contacts.disabled",{count:n.activePrivateSessionCount})),1)])):N("",!0),n.cacheStatus==="stale"&&!n.isTaskRunning?(c(),f("div",xa,[a("div",ya,[a("div",ha,[y(I,{name:"i-lucide-history",class:"h-5 w-5 text-zinc-500 dark:text-zinc-400"})]),a("span",ka,o(r(S)("contacts.stale.inline")),1)]),a("div",ba,[y(F,{size:"sm",color:"primary",variant:"soft",class:"rounded-xl px-4 font-medium",loading:n.isRecomputing||n.isTaskRunning,disabled:n.isTaskRunning,onClick:A[0]||(A[0]=B=>h("recompute"))},{default:T(()=>[Z(o(r(S)("contacts.actions.recompute")),1)]),_:1},8,["loading","disabled"])])])):N("",!0),n.taskFailed?(c(),f("div",_a,[a("div",Sa,[a("div",wa,[y(I,{name:"i-lucide-alert-circle",class:"h-5 w-5 text-red-500"})]),a("span",Ca,o(n.taskLastError||r(S)("contacts.task.failed")),1)]),a("div",Ta,[y(F,{size:"sm",color:"error",variant:"soft",class:"rounded-xl px-4 font-medium",onClick:A[1]||(A[1]=B=>h("recompute"))},{default:T(()=>[Z(o(r(S)("contacts.task.retry")),1)]),_:1})])])):N("",!0)],64)}}});function $a(n){return!!n.diagnostics&&!n.showLoadingState&&!n.diagnostics.contactsEnabled}function Ia(n){return n.previousScrollTop}function je(n){return n!=="friend"}function Fa(n){return n.friendInitialLoading||n.groupmateInitialLoading}function Pa(n){return n.activeSection==="non_friend"||n.friendSectionReady}function Ma(n){return n.friendInitialLoading||n.groupmateInitialLoading||n.completionProgressVisible===!0||n.activeTaskStatus==="running"||n.friendTaskStatus==="running"||n.groupmateTaskStatus==="running"}function za(n){return n.previousStatus==="running"&&n.nextStatus==="succeeded"&&n.nextTotalSessions>0&&n.nextProcessedSessions>=n.nextTotalSessions&&n.previousProcessedSessions<n.nextTotalSessions}function Aa(n){return n.friendTaskStatus==="running"||n.groupmateTaskStatus==="running"?["friend","non_friend"]:[n.activePool]}function Ea(n){const s=[{type:"section",key:"section:friend",pool:"friend"}];return s.push(...n.friends.map(h=>({type:"contact",key:h.key,pool:"friend",contact:h}))),n.friendLoadingMore&&s.push({type:"loading",key:"loading:friend",pool:"friend"}),n.showGroupSection&&(s.push({type:"section",key:"section:non_friend",pool:"non_friend"}),s.push(...n.groupmates.map(h=>({type:"contact",key:h.key,pool:"non_friend",contact:h}))),n.groupmateLoadingMore&&s.push({type:"loading",key:"loading:non_friend",pool:"non_friend"})),s}const Na={class:"flex min-h-0 flex-1 flex-col text-gray-900 dark:bg-page-dark dark:text-gray-100"},Ba={class:"flex min-w-0 flex-1 flex-wrap items-center justify-end gap-2 py-1.5 xl:py-0"},ja={class:"flex min-h-0 flex-1 overflow-hidden"},Va={class:"min-h-0 min-w-0 flex-1 overflow-hidden"},Da={class:"flex h-full min-h-0 w-full flex-col gap-6 px-6 pb-3 pt-4"},Ga={class:"flex min-h-0 flex-1 flex-col gap-4"},Oa={key:1,class:"rounded-2xl border border-red-200 bg-red-50/50 p-4 text-sm text-red-700 dark:border-red-900/30 dark:bg-red-950/20 dark:text-red-300"},Ua={key:2,class:"min-h-0 flex-1"},qa={key:0,class:"flex flex-col items-center justify-center rounded-3xl border border-dashed border-gray-250 p-16 text-center dark:border-white/5"},Ra={class:"flex h-12 w-12 items-center justify-center rounded-2xl bg-gray-50 text-gray-400 dark:bg-white/5 dark:text-gray-500"},Ha={class:"mt-4 text-sm font-medium text-gray-400 dark:text-gray-500"},Ka={class:"shrink-0 overflow-hidden border-b border-gray-100 bg-white dark:border-white/5 dark:bg-[#202024]"},Ya={class:"flex min-w-0 items-center justify-end gap-1 text-right"},Qa={class:"truncate"},Wa={class:"max-w-[280px] whitespace-normal break-words text-left text-xs leading-5"},Ja={class:"flex min-w-0 items-center justify-end gap-1 text-right"},Xa={class:"truncate"},Za={class:"max-w-[280px] whitespace-normal break-words text-left text-xs leading-5"},en=["aria-label","onClick"],tn={class:"group flex min-w-0 w-full items-center gap-3"},an={class:"relative shrink-0 overflow-hidden rounded-lg"},nn=["src","alt"],sn={key:1,class:"flex h-10 w-10 items-center justify-center bg-gradient-to-br from-gray-50 to-gray-100 text-sm font-bold text-gray-500 transition-transform duration-300 group-hover:scale-105 dark:from-gray-800 dark:to-gray-800/60 dark:text-gray-400"},on={class:"min-w-0 flex-1"},rn={class:"flex min-w-0 items-center gap-1"},ln={class:"mt-1 inline-flex items-center rounded bg-gray-50 px-1.5 py-0.5 font-mono text-[9px] font-semibold uppercase tracking-wider text-gray-400 dark:bg-white/5 dark:text-gray-500"},cn={class:"contact-table-value"},dn={class:"contact-table-value"},un={class:"contact-table-value"},fn={class:"contact-table-value"},mn=100,Ve=69,pn=20,gn=ke({__name:"index",setup(n){const{t:s}=be(),h=jt(),S=Lt(),C=$t(),A=It(),I=b(!1),F=b(""),B=b(""),P=b("1y"),p=b("friend"),v=b(null),w=b(null),R=b(!1),x=b(!1),j=b(null),fe=b(!1),H=b(null),ee=b(null),te=b(null),M=b(null),ae={friend:null,non_friend:null},K=b(!1),Y=b(null),we=b(0),ne=b({});function me(){return{items:[],response:null,page:0,total:0,hasMore:!1,isLoadingInitial:!1,isLoadingMore:!1,error:"",requestId:0,scrollOffset:0}}const V=b({friend:me(),non_friend:me()}),ie=u(()=>V.value[p.value]),k=u(()=>V.value.friend),m=u(()=>V.value.non_friend),Ce=u(()=>!!k.value.response&&!k.value.hasMore&&!k.value.isLoadingInitial),pe=u(()=>Pa({activeSection:p.value,friendSectionReady:Ce.value,groupmateHasItems:m.value.items.length>0,groupmateLoading:m.value.isLoadingInitial||m.value.isLoadingMore})),E=u(()=>Ea({friends:k.value.items,groupmates:m.value.items,showGroupSection:pe.value,friendLoadingMore:k.value.isLoadingMore,groupmateLoadingMore:m.value.isLoadingInitial||m.value.isLoadingMore})),le=u(()=>ie.value.response??k.value.response??m.value.response),ge=u(()=>[ie.value.response,k.value.response,m.value.response].find(e=>e?.task?.status==="running")??le.value),Ge=u(()=>k.value.items.length+m.value.items.length>0),Oe=u(()=>!Ge.value&&!!k.value.response&&!!m.value.response&&!k.value.hasMore&&!m.value.hasMore&&!k.value.isLoadingInitial&&!m.value.isLoadingInitial),Te=u(()=>k.value.error||m.value.error),ve=u(()=>le.value?.diagnostics),z=u(()=>ge.value?.task),ce=u(()=>H.value??z.value),Q=u(()=>z.value?.status==="running"),Ue=u(()=>z.value?.status==="failed"),Le=u(()=>Ma({activeTaskStatus:ie.value.response?.task?.status,friendTaskStatus:k.value.response?.task?.status,groupmateTaskStatus:m.value.response?.task?.status,friendInitialLoading:k.value.isLoadingInitial,groupmateInitialLoading:m.value.isLoadingInitial,completionProgressVisible:H.value!==null})),qe=u(()=>H.value?s("contacts.task.running",{current:ce.value?.processedSessions??0,total:ce.value?.totalSessions??0}):ge.value?.cache.status==="stale"&&Q.value?s("contacts.task.updating"):ge.value?.cache.status==="missing"&&Q.value?s("contacts.task.running",{current:ce.value?.processedSessions??0,total:ce.value?.totalSessions??0}):s("common.loading")),Re=u(()=>$a({diagnostics:ve.value,showLoadingState:Le.value})),se=u(()=>{const e=le.value?.stats,t=e?.friendsTotal??0,i=e?.nonFriendsTotal??0;return{total:t+i,friends:t,nonFriends:i}}),He=u(()=>[{id:"friend",label:`${s("contacts.tabs.friends")} ${se.value.friends.toLocaleString()}`,icon:"i-heroicons-user"},{id:"non_friend",label:`${s("contacts.tabs.groupContacts")} ${se.value.nonFriends.toLocaleString()}`,icon:"i-heroicons-user-group"}]),Ke=u(()=>Nt.map(e=>({label:s(`contacts.timeRange.${e}`),value:e}))),de=Ft(u(()=>({count:E.value.length,getScrollElement:()=>Y.value,estimateSize:e=>Ze(E.value[e]),overscan:10,getItemKey:e=>E.value[e]?.key??e}))),xe=u(()=>de.value.getVirtualItems()),Ye=u(()=>de.value.getTotalSize());O(F,e=>{te.value&&clearTimeout(te.value),te.value=setTimeout(()=>{B.value=e.trim()},300)}),O(()=>z.value?.status,()=>Pe()),O(()=>({status:z.value?.status,processedSessions:z.value?.processedSessions??0,totalSessions:z.value?.totalSessions??0}),(e,t)=>{e.status==="running"&&ue(),z.value&&za({previousStatus:t?.status,nextStatus:e.status,previousProcessedSessions:t?.processedSessions??0,nextProcessedSessions:e.processedSessions,nextTotalSessions:e.totalSessions})&&rt(z.value)}),O([B,P],()=>{nt(),$e()}),O(()=>E.value.length,()=>{de.value.measure()}),O(xe,()=>{Xe()},{flush:"post"}),O(E,()=>{v.value&&(k.value.items.some(e=>e.key===v.value)||m.value.items.some(e=>e.key===v.value)||oe())}),Pt(()=>{$e()}),Mt(()=>{Me(),ue(),te.value&&clearTimeout(te.value),M.value&&clearTimeout(M.value)});async function D(e,t){const i=W(e,1,{...t,replace:!0});ae[e]=i;try{await i}finally{ae[e]===i&&(ae[e]=null)}}async function $e(){await Promise.all([D("friend"),D("non_friend")])}async function Ie(e){const t=V.value[e];!t.hasMore||t.isLoadingInitial||t.isLoadingMore||await W(e,t.page+1,{acceptStale:!0,replace:!1})}async function W(e,t,i){const d=V.value[e],_=i?.replace!==!1,L=d.requestId+1;d.requestId=L,d.error="",i?.silent||(_?d.isLoadingInitial=d.items.length===0:d.isLoadingMore=!0);try{const $={acceptStale:i?.acceptStale,timeRangePreset:P.value,pool:e,page:t,pageSize:mn,query:B.value||void 0},l=i?.force?await S.recomputeContacts($):await S.getContacts($);if(d.requestId!==L)return;We(d,l,_,{preserveExisting:i?.preserveExisting}),Pe()}catch($){if(d.requestId===L&&(d.error=String($)),i?.throwOnError)throw $}finally{d.requestId===L&&(d.isLoadingInitial=!1,d.isLoadingMore=!1)}}async function Fe(){I.value=!0;try{await W(p.value,1,{acceptStale:!0,force:!0,replace:!0,throwOnError:!0}),h.success(s("contacts.toast.recomputeStarted"))}catch(e){h.fail(s("contacts.toast.recomputeFailed"),{description:String(e)})}finally{I.value=!1}}const Qe=u(()=>({title:s("layout.relationships"),description:s("contacts.subtitle",{count:ve.value?.privateSessionCount??0}),icon:"i-lucide-users",iconClass:"bg-primary-600 text-white dark:bg-primary-500 dark:text-white shadow-sm",action:{label:s("contacts.actions.recompute"),icon:"i-lucide-refresh-cw",loading:I.value,disabled:Q.value,class:"border border-pink-100 hover:border-pink-200 dark:border-pink-950/30 dark:hover:border-pink-900/50",onClick:Fe},stats:[{id:"total",label:s("contacts.stats.total"),value:se.value.total.toLocaleString()},{id:"friends",label:s("contacts.stats.friends"),value:se.value.friends.toLocaleString()},{id:"nonFriends",label:s("contacts.stats.nonFriends"),value:se.value.nonFriends.toLocaleString(),dividerBefore:!0}]}));Ot(Qe);function We(e,t,i,d){const _=e.response?.cache.signature,L=t.cache.signature,$=!!_&&!!L&&_!==L;if(e.response=t,e.total=t.pagination.total,d?.preserveExisting&&!$&&e.items.length>0){e.hasMore=e.items.length<t.pagination.total;return}e.page=t.pagination.page,e.hasMore=t.pagination.hasMore,e.items=i||$?t.contacts:Je(e.items,t.contacts),$&&oe()}function Je(e,t){const i=new Set(e.map(_=>_.key)),d=[...e];for(const _ of t)i.has(_.key)||(i.add(_.key),d.push(_));return d}function Xe(){const t=xe.value.at(-1);if(!t||t.index<E.value.length-pn)return;if(G(t.index).pool==="friend"){if(k.value.hasMore){Ie("friend");return}Ce.value&&!m.value.response&&!m.value.isLoadingInitial&&D("non_friend");return}if(!m.value.response&&!m.value.isLoadingInitial){D("non_friend");return}m.value.hasMore&&Ie("non_friend")}function G(e){return E.value[e]}function g(e){return G(e)}function Ze(e){return e?.type==="section"?e.pool==="non_friend"?42:1:e?.type==="loading"?44:Ve}async function et(e){const t=e==="non_friend"?"non_friend":"friend";p.value=t,K.value=!0,M.value&&clearTimeout(M.value),t==="non_friend"&&await tt(),await Be();const i=E.value.findIndex(d=>d.type==="section"&&d.pool===t);if(i>=0){const d=t==="non_friend"?Math.min(i+1,E.value.length-1):i;de.value.scrollToIndex(d,{align:"start"})}M.value=setTimeout(()=>{K.value=!1,p.value=t},350)}async function tt(){!m.value.response&&!m.value.isLoadingInitial&&await D("non_friend",{acceptStale:!0}),await at()}async function at(e){if(!Fa({friendInitialLoading:k.value.isLoadingInitial,groupmateInitialLoading:m.value.isLoadingInitial}))return;const t=[ae.friend,ae.non_friend].filter(i=>!!i);t.length!==0&&await Promise.allSettled(t)}function nt(){K.value=!1,M.value&&clearTimeout(M.value),ue();for(const e of["friend","non_friend"])V.value[e].requestId++,V.value[e]=me();oe(),ne.value={},Y.value&&(Y.value.scrollTop=0)}function Pe(){Q.value?st():Me()}function st(){j.value||(j.value=setInterval(()=>{ot()},1500))}async function ot(){if(!fe.value){fe.value=!0;try{const e=Aa({activePool:p.value,friendTaskStatus:k.value.response?.task?.status,groupmateTaskStatus:m.value.response?.task?.status});await Promise.all(e.map(t=>W(t,1,{acceptStale:!0,replace:!0,preserveExisting:!0,silent:!0})))}finally{fe.value=!1}}}function Me(){j.value&&(clearInterval(j.value),j.value=null)}function rt(e){ue(),H.value={...e,processedSessions:e.totalSessions},ee.value=setTimeout(()=>{H.value=null,ee.value=null},450)}function ue(){ee.value&&(clearTimeout(ee.value),ee.value=null),H.value=null}async function it(e){v.value=e.key,await ze(e.key)}async function ze(e,t){const i=`${P.value}:${e}`,d=ne.value[i];if(d&&!t?.skipCache){w.value=d;return}w.value=null,R.value=!0;try{const _=await S.getContactDetail(e,{acceptStale:!0,timeRangePreset:P.value});if(v.value!==e)return;w.value=_.contact,_.contact&&(ne.value={...ne.value,[i]:_.contact})}catch(_){h.fail(s("contacts.toast.recomputeFailed"),{description:String(_)})}finally{v.value===e&&(R.value=!1)}}async function lt(){const e=w.value?.key;if(!(!e||x.value)){x.value=!0;try{await S.markContactAsFriend(e,{timeRangePreset:P.value}),h.success(s("contacts.toast.markFriendSucceeded")),await Ae(e)}catch(t){h.fail(s("contacts.toast.markFriendFailed"),{description:String(t)})}finally{x.value=!1}}}async function ct(){const e=w.value?.key;if(!(!e||x.value)){x.value=!0;try{await S.unmarkContactAsFriend(e,{timeRangePreset:P.value}),h.success(s("contacts.toast.unmarkFriendSucceeded")),await Ae(e)}catch(t){h.fail(s("contacts.toast.unmarkFriendFailed"),{description:String(t)})}finally{x.value=!1}}}async function Ae(e){const t=p.value,i=Y.value?.scrollTop??0,d=w.value?.pool??t;if(ne.value={},d==="non_friend"){dt(e),oe(),await Ne(t,i),await ut();return}await Promise.all([D("friend",{acceptStale:!0}),D("non_friend",{acceptStale:!0})]),v.value=e,await ze(e,{skipCache:!0}),await Ne(t,i)}function dt(e){const t=m.value,i=t.items.filter(d=>d.key!==e);i.length!==t.items.length&&(t.items=i,t.total=Math.max(0,t.total-1),t.hasMore=t.items.length<t.total)}async function ut(){await Promise.all([W("friend",1,{acceptStale:!0,replace:!0,preserveExisting:je("friend"),silent:!0}),W("non_friend",1,{acceptStale:!0,replace:!0,preserveExisting:je("non_friend"),silent:!0})])}function oe(){v.value=null,w.value=null,R.value=!1}function ft(e){return e.friendSource==="manual"?s("contacts.pool.manualFriend"):e.pool==="friend"?s("contacts.pool.friend"):s("contacts.pool.nonFriend")}function mt(e){return e.friendSource==="manual"?"bg-indigo-50 text-indigo-600 dark:bg-indigo-500/10 dark:text-indigo-400 border border-indigo-100/50 dark:border-indigo-500/20":e.pool==="friend"?"bg-sky-50 text-sky-600 dark:bg-sky-500/10 dark:text-sky-400 border border-sky-100/50 dark:border-sky-500/20":"bg-emerald-50 text-emerald-600 dark:bg-emerald-500/10 dark:text-emerald-400 border border-emerald-100/50 dark:border-emerald-500/20"}function ye(e){return e==="friend"?"contact-table-grid--friends":"contact-table-grid--group-contacts"}function pt(e,t){return J(e==="friend"?t.scoreBreakdown.privateMessageCount:t.scoreBreakdown.commonGroupCount)}function gt(e,t){return J(e==="friend"?t.scoreBreakdown.activePrivateMonths:t.scoreBreakdown.coOccurrenceCount)}function vt(e,t){return J(e==="friend"?t.scoreBreakdown.commonGroupCount:t.scoreBreakdown.replyInteractionCount)}function xt(e){return(e.displayName||e.platformId||"?").slice(0,1)}function yt(e){return Math.round(e*100).toString()}function ht(e){return e.friendSource==="manual"?"-":yt(e.score)}function J(e){return String(e??0)}function kt(e){return e?new Date(e*1e3).toLocaleDateString():s("contacts.emptyValue")}function bt(e){A.push({name:e.type==="private"?"private-chat":"group-chat",params:{id:e.id}})}function _t(e){C.openChatRecordDrawer({sessionId:e.id})}function St(e){const t=e.target;if(ie.value.scrollOffset=t.scrollTop,we.value=t.scrollLeft,K.value)return;const i=wt(t);p.value!==i&&(p.value=i)}function wt(e){return pe.value&&e.scrollTop>=Ee()?"non_friend":"friend"}function Ee(){return 1+k.value.items.length*Ve+(k.value.isLoadingMore?44:0)}async function Ne(e,t){p.value=e,await Be();const i=Y.value;i&&(K.value=!0,M.value&&clearTimeout(M.value),i.scrollTop=Ia({previousScrollTop:t,groupSectionScrollTop:Ct()}),M.value=setTimeout(()=>{K.value=!1,p.value=e},150))}function Ct(){return pe.value?Ee():null}return(e,t)=>{const i=Bt,d=_e,_=zt,L=Se,$=Et;return c(),f("div",Na,[y(r(Gt),{modelValue:p.value,"onUpdate:modelValue":t[3]||(t[3]=l=>p.value=l),items:He.value,"persist-key":"contactsTab",onChange:et},{right:T(()=>[a("div",Ba,[y(i,{modelValue:P.value,"onUpdate:modelValue":t[0]||(t[0]=l=>P.value=l),items:Ke.value,content:!1,size:"xs",class:"min-w-max gap-0 bg-transparent dark:bg-transparent shadow-none",disabled:Q.value},null,8,["modelValue","items","disabled"]),y(_,{modelValue:F.value,"onUpdate:modelValue":t[2]||(t[2]=l=>F.value=l),icon:"i-lucide-search",placeholder:r(s)("contacts.search"),size:"sm",class:"w-full sm:w-36"},At({_:2},[F.value?{name:"trailing",fn:T(()=>[y(d,{icon:"i-heroicons-x-mark",variant:"link",color:"neutral",size:"xs","aria-label":r(s)("contacts.actions.clearSearch"),onClick:t[1]||(t[1]=l=>F.value="")},null,8,["aria-label"])]),key:"0"}:void 0]),1032,["modelValue","placeholder"])])]),_:1},8,["modelValue","items"]),a("div",ja,[a("main",Va,[a("div",Da,[y(La,{"show-disabled-notice":Re.value,"active-private-session-count":ve.value?.activePrivateSessionCount??0,"cache-status":le.value?.cache.status,"task-failed":Ue.value,"task-last-error":z.value?.lastError,"is-task-running":Q.value,"is-recomputing":I.value,onRecompute:Fe},null,8,["show-disabled-notice","active-private-session-count","cache-status","task-failed","task-last-error","is-task-running","is-recomputing"]),a("section",Ga,[Le.value?(c(),re(r(Dt),{key:0,text:qe.value,height:"py-16"},null,8,["text"])):Te.value?(c(),f("div",Oa,o(Te.value),1)):(c(),f("div",Ua,[Oe.value?(c(),f("div",qa,[a("div",Ra,[y(L,{name:"i-lucide-users-2",class:"h-6 w-6"})]),a("p",Ha,o(r(s)("contacts.empty")),1)])):(c(),re(r(Vt),{key:1,shadow:!1,class:"flex h-full min-w-0 flex-col"},{default:T(()=>[a("div",Ka,[a("div",{class:U(["contact-table-grid min-w-[720px] px-4 py-3 text-[11px] font-bold uppercase tracking-wider text-gray-400 dark:text-gray-500",ye(p.value)]),style:X({transform:`translateX(-${we.value}px)`})},[a("span",null,o(r(s)("contacts.table.contact")),1),a("span",null,o(r(s)("contacts.table.status")),1),p.value==="friend"?(c(),f(q,{key:0},[a("span",null,o(r(s)("contacts.metrics.privateMessagesLabel")),1),a("span",null,o(r(s)("contacts.metrics.activeMonths")),1),a("span",null,o(r(s)("contacts.metrics.commonGroups")),1)],64)):(c(),f(q,{key:1},[a("span",null,o(r(s)("contacts.metrics.commonGroups")),1),a("span",null,o(r(s)("contacts.metrics.coOccurrence")),1),a("span",null,o(r(s)("contacts.metrics.replies")),1)],64)),a("span",null,o(r(s)("contacts.metrics.lastInteractionShort")),1),a("span",Ya,[a("span",Qa,o(r(s)("contacts.detail.score")),1),y($,{content:{side:"top"},ui:{content:"h-auto"}},{content:T(()=>[a("div",Wa,o(r(s)("contacts.detail.scoreHelp")),1)]),default:T(()=>[y(L,{name:"i-lucide-circle-help",class:"h-3.5 w-3.5 shrink-0 text-gray-350 transition-colors hover:text-primary-500 dark:text-gray-600 dark:hover:text-primary-400"})]),_:1})])],6)]),a("div",{ref_key:"scrollContainerRef",ref:Y,class:"min-h-0 flex-1 overflow-auto scrollbar-hide",onScroll:St},[a("div",{class:"relative min-w-[720px]",style:X({height:`${Ye.value}px`})},[(c(!0),f(q,null,he(xe.value,l=>(c(),f(q,{key:String(l.key)},[G(l.index).type==="section"&&G(l.index).pool==="friend"?(c(),f("div",{key:0,class:"absolute left-0 top-0 h-px w-full",style:X({transform:`translateY(${l.start}px)`}),"aria-hidden":"true"},null,4)):G(l.index).type==="section"?(c(),f("div",{key:1,class:U(["contact-table-grid absolute left-0 top-0 w-full border-b border-gray-100 bg-white px-4 py-3 text-[11px] font-bold uppercase tracking-wider text-gray-400 dark:border-white/5 dark:bg-[#202024] dark:text-gray-500",ye(G(l.index).pool)]),style:X({transform:`translateY(${l.start}px)`})},[a("span",null,o(r(s)("contacts.table.contact")),1),a("span",null,o(r(s)("contacts.table.status")),1),a("span",null,o(r(s)("contacts.metrics.commonGroups")),1),a("span",null,o(r(s)("contacts.metrics.coOccurrence")),1),a("span",null,o(r(s)("contacts.metrics.replies")),1),a("span",null,o(r(s)("contacts.metrics.lastInteractionShort")),1),a("span",Ja,[a("span",Xa,o(r(s)("contacts.detail.score")),1),y($,{content:{side:"top"},ui:{content:"h-auto"}},{content:T(()=>[a("div",Za,o(r(s)("contacts.detail.scoreHelp")),1)]),default:T(()=>[y(L,{name:"i-lucide-circle-help",class:"h-3.5 w-3.5 shrink-0 text-gray-350 transition-colors hover:text-primary-500 dark:text-gray-600 dark:hover:text-primary-400"})]),_:1})])],6)):G(l.index).type==="contact"?(c(),f("button",{key:2,type:"button",class:U(["contact-table-grid absolute left-0 top-0 w-full px-4 py-3.5 text-left outline-none transition-colors duration-200 focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2 focus-visible:ring-offset-white dark:focus-visible:ring-offset-gray-900",[ye(g(l.index).pool),v.value===g(l.index).contact.key?"border-b border-primary-500/20 bg-primary-500/[0.03] dark:bg-primary-500/[0.04]":"border-b border-gray-100/50 bg-transparent hover:bg-gray-50/50 dark:border-white/5 dark:hover:bg-gray-800/20"]]),style:X({transform:`translateY(${l.start}px)`}),"aria-label":r(s)("contacts.actions.viewDetail",{name:g(l.index).contact.displayName}),onClick:vn=>it(g(l.index).contact)},[a("div",{class:U(["absolute left-0 top-1/4 h-1/2 w-1 rounded-r-full bg-primary-500 transition-all duration-300",v.value===g(l.index).contact.key?"scale-100 opacity-100":"scale-75 opacity-0"])},null,2),a("div",tn,[a("div",an,[g(l.index).contact.avatar?(c(),f("img",{key:0,src:g(l.index).contact.avatar??"",alt:g(l.index).contact.displayName,loading:"lazy",decoding:"async",class:"h-10 w-10 object-cover transition-transform duration-300 group-hover:scale-105"},null,8,nn)):(c(),f("div",sn,o(xt(g(l.index).contact)),1))]),a("div",on,[a("div",rn,[a("span",{class:U(["truncate text-sm font-semibold leading-tight tracking-tight text-gray-800 transition-colors group-hover:text-primary-600 group-focus-visible:text-primary-600 dark:text-gray-200 dark:group-hover:text-primary-400 dark:group-focus-visible:text-primary-400",v.value===g(l.index).contact.key?"text-primary-600 dark:text-primary-400":""])},o(g(l.index).contact.displayName),3)]),a("span",ln,o(g(l.index).contact.platform),1)])]),a("span",{class:U(["inline-flex w-fit justify-self-start rounded-lg px-2.5 py-1 text-xs font-semibold",mt(g(l.index).contact)])},o(ft(g(l.index).contact)),3),a("span",cn,o(pt(g(l.index).pool,g(l.index).contact)),1),a("span",dn,o(gt(g(l.index).pool,g(l.index).contact)),1),a("span",un,o(vt(g(l.index).pool,g(l.index).contact)),1),a("span",fn,o(kt(g(l.index).contact.lastInteractionTs)),1),a("span",{class:U(["inline-flex h-7 w-12 items-center justify-center justify-self-end rounded-lg font-mono text-xs font-bold tabular-nums transition-colors duration-200",v.value===g(l.index).contact.key?"bg-primary-500 text-white":"bg-primary-50 text-primary-600 dark:bg-primary-500/10 dark:text-primary-400"])},o(ht(g(l.index).contact)),3)],14,en)):(c(),f("div",{key:3,class:"absolute left-0 top-0 flex h-11 w-full items-center justify-center gap-2 border-b border-gray-100/50 text-xs font-semibold text-gray-500 dark:border-white/5 dark:text-gray-400",style:X({transform:`translateY(${l.start}px)`})},[y(L,{name:"i-lucide-loader-2",class:"h-4 w-4 animate-spin"}),a("span",null,o(r(s)("common.loading")),1)],4))],64))),128))],4)],544)]),_:1}))]))])])]),y(ma,{"selected-key":v.value,contact:w.value,"is-loading":R.value,"is-friend-action-loading":x.value,onClear:oe,onOpenSource:bt,onViewSourceRecords:_t,onMarkFriend:lt,onUnmarkFriend:ct},null,8,["selected-key","contact","is-loading","is-friend-action-loading"])])])}}}),Tn=De(gn,[["__scopeId","data-v-30c675a1"]]);export{Tn as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{d as _e,a6 as ke,aF as we,L as ze,ap as Pe,K,al as Ee,o as c,f as ee,w as E,a as i,p as d,g as n,z as u,a8 as Ue,a9 as B,c as m,aq as je,a7 as Ce,F as te,j as be,n as qe,l as U,b as g,e as H,aa as Re,aD as Fe,ay as Be,J as Le,x as Ne,aG as De,C as ge,y as Oe,aE as Ge,aH as ye}from"./index-B1oj9KDv.js";import{_ as He,u as Ke,a as Je,b as Qe,c as We,d as he,e as Xe,f as Ye,g as Ze,h as et}from"./chatMessages-Bd33SSXI.js";import{_ as tt}from"./Tabs-BMq9wODW.js";import{u as Se}from"./useToast-B5LaA6c-.js";import{P as at}from"./PageHeader-CKeZjNNR.js";import{u as st}from"./aiChat--CR4g2M7.js";import"./vendor-snapdom--nZvo8Sg.js";import"./index-4DVZ2g0M.js";import"./service-CppETV4a.js";import"./EChartBar.vue_vue_type_script_setup_true_lang-DKNCZuFm.js";import"./EChart.vue_vue_type_script_setup_true_lang-DubnuUXI.js";import"./vendor-echarts-C9ugTmum.js";import"./vendor-zrender-D8psf1AA.js";import"./EChartLine.vue_vue_type_script_setup_true_lang-Fl7xAOSR.js";import"./prompt-C-ofJ7t_.js";import"./RovingFocusItem-BJMUQ5DJ.js";import"./chatlabSiteLocale-CrCNb8QP.js";const lt={class:"flex max-h-[78vh] min-h-[520px] flex-col overflow-hidden"},ot={class:"flex items-start justify-between border-b border-gray-200 px-5 py-4 dark:border-gray-800"},nt={class:"text-base font-semibold text-gray-900 dark:text-white"},it={class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},rt={class:"flex min-h-0 flex-1 flex-col px-5 py-4"},ct={class:"mb-3 flex items-center justify-between gap-3"},ut={class:"flex items-center gap-2"},dt={class:"text-xs text-gray-400"},mt={key:0,class:"mb-3 rounded-xl border border-primary-200 bg-primary-50/40 p-3 dark:border-primary-900/70 dark:bg-primary-950/20"},ft={class:"mb-2 flex items-center justify-between gap-3"},pt={class:"text-xs font-medium text-gray-700 dark:text-gray-200"},vt={class:"truncate text-[11px] text-gray-400"},gt={key:0,class:"mb-3 space-y-2"},yt={class:"max-h-36 space-y-1 overflow-y-auto rounded-lg border border-gray-200 p-1 dark:border-gray-800"},ht={key:0,class:"flex h-20 items-center justify-center"},bt=["onClick"],xt={class:"truncate"},_t={class:"shrink-0 text-[10px] text-gray-400"},kt={key:2,class:"flex h-20 items-center justify-center text-xs text-gray-400"},wt={class:"mt-2 flex items-center justify-between gap-3"},Ct={class:"text-[11px] text-gray-400"},St={class:"flex items-center gap-2"},It={class:"min-h-0 flex-1 overflow-y-auto pr-1"},Tt={key:0,class:"flex h-full min-h-56 items-center justify-center"},At={key:1,class:"flex min-h-56 flex-col items-center justify-center text-center"},$t={class:"text-sm text-gray-500 dark:text-gray-400"},Mt={key:2,class:"space-y-2"},Vt={key:0,class:"mb-2 flex items-center gap-1.5 text-xs text-gray-500"},zt={class:"truncate"},Pt={key:1},Et={class:"mt-2 flex justify-end gap-2"},Ut={class:"whitespace-pre-wrap break-words text-sm leading-6 text-gray-800 dark:text-gray-200"},jt={class:"mt-2 flex items-center justify-between gap-3"},qt={class:"flex min-w-0 flex-wrap items-center gap-x-2 gap-y-1 text-[11px] text-gray-400"},Rt={class:"flex shrink-0 items-center gap-0.5"},Ft={key:0,class:"mt-2 flex flex-wrap items-center justify-between gap-2 border-t border-gray-100 pt-2 text-[11px] dark:border-gray-800"},Bt={key:0,class:"text-amber-600 dark:text-amber-400"},Lt={key:1,class:"ml-auto text-gray-400 dark:text-gray-500"},Nt={class:"flex items-center justify-between border-t border-gray-200 px-5 py-3 dark:border-gray-800"},Dt={class:"flex items-center gap-2"},Ot=1500,Gt=_e({__name:"AIMemoryManagerModal",props:{open:{type:Boolean}},emits:["update:open","view-source"],setup(ue,{emit:_}){const ae=ue,z=_,{t:s,locale:D}=ke(),S=Se(),h=we(),O=ze(),A=Pe(),f=g("preferences"),k=g([]),j=g(new Map),v=g(!1),w=g(null),G=g(null),I=g(""),L=g(!1),q=g(""),C=g("contact"),b=g(null),$=g(""),M=g([]),R=g(!1);let T=null,P=null,F=0;const se=H(()=>[{label:s("ai.global.memory.preferences"),value:"preferences"},{label:s("ai.global.memory.self"),value:"self"},{label:s("ai.global.memory.entities"),value:"entities"}]),J=H(()=>k.value.filter(e=>f.value==="preferences"?e.scopeType==="global":f.value==="self"?e.scopeType==="self":e.scopeType==="contact"||e.scopeType==="group")),re=H(()=>[{label:s("ai.global.entityPicker.contacts"),value:"contact"},{label:s("ai.global.entityPicker.groups"),value:"group"}]),le=H(()=>{const e=$.value.trim().toLocaleLowerCase();return A.sessions.filter(a=>a.type==="group").filter(a=>!e||`${a.name} ${a.platform}`.toLocaleLowerCase().includes(e)).map(a=>({scopeType:"group",scopeId:a.id,label:a.name,detail:a.platform}))}),oe=H(()=>C.value==="contact"?M.value:le.value),ce=H(()=>f.value==="preferences"?s("ai.global.memory.preferences"):f.value==="self"?s("ai.global.memory.self"):b.value?.label??s("ai.global.memory.selectEntity")),Y=H(()=>q.value.trim().length>0&&q.value.trim().length<=2e3&&(f.value!=="entities"||b.value!==null));function Q(){z("update:open",!1)}function ne(e){G.value=e.id,I.value=e.content}function N(){G.value=null,I.value=""}function de(){N(),L.value=!0,q.value="",b.value=null,$.value="",f.value==="entities"&&C.value==="contact"&&t("")}function W(){L.value=!1,q.value="",b.value=null,$.value="",F++,R.value=!1,T&&(clearTimeout(T),T=null),o()}function ie(e){return new Intl.DateTimeFormat(D.value,{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"}).format(e)}function me(e){!e.sourceAIChatId||e.sourceStatus!=="conversation"&&e.sourceStatus!=="message"||(z("update:open",!1),z("view-source",{aiChatId:e.sourceAIChatId,messageId:e.sourceStatus==="message"?e.sourceMessageId:null}))}function fe(e){return e.scopeId?e.scopeType==="contact"?j.value.get(e.scopeId)??e.scopeId:A.sessions.find(a=>a.id===e.scopeId)?.name??e.scopeId:""}async function pe(e){const a=[...new Set(e.filter(x=>x.scopeType==="contact").map(x=>x.scopeId))].filter(x=>!!x),p=new Map,X=await Promise.allSettled(a.map(async x=>({key:x,detail:await O.getContactDetail(x,{acceptStale:!0})})));for(const x of X)x.status==="fulfilled"&&x.value.detail.contact&&p.set(x.value.key,x.value.detail.contact.displayName);j.value=p}async function t(e){const a=++F;R.value=!0;try{const p={acceptStale:!0,timeRangePreset:"all",page:1,pageSize:100,query:e.trim()||void 0},X=await Promise.all([O.getContacts({...p,pool:"friend"}),O.getContacts({...p,pool:"non_friend"})]);if(a!==F)return;const x=new Map;X.flatMap(V=>V.contacts).forEach(V=>x.set(V.key,V)),M.value=[...x.values()].map(V=>({scopeType:"contact",scopeId:V.key,label:V.displayName,detail:V.platformId})),y(X,e)}catch(p){if(a!==F)return;o(),M.value=[],S.fail(s("ai.global.entityPicker.loadFailed"),{description:String(p)})}finally{a===F&&(R.value=!1)}}function o(){P&&(clearTimeout(P),P=null)}function y(e,a){o(),!(!L.value||f.value!=="entities"||C.value!=="contact")&&e.some(p=>p.task?.status==="running")&&(P=setTimeout(()=>{P=null,t(a)},Ot))}function l(e){T&&clearTimeout(T),o(),F++,T=setTimeout(()=>{T=null,t(e)},200)}async function ve(){v.value=!0;try{const e=await h.getAIMemories();k.value=e,await Promise.all([A.loadSessions(),pe(e)])}catch(e){S.fail(s("ai.global.memory.toast.loadFailed"),{description:String(e)})}finally{v.value=!1}}async function Ie(e){if(I.value.trim()){w.value=e.id;try{const a=await h.updateAIMemory(e.id,I.value);k.value=k.value.map(p=>p.id===a.id?a:p),N(),S.success(s("ai.global.memory.toast.saved"))}catch(a){S.fail(s("ai.global.memory.toast.saveFailed"),{description:String(a)})}finally{w.value=null}}}async function Te(){if(Y.value){w.value="new";try{const e=f.value==="preferences"?{scopeType:"global",scopeId:null}:f.value==="self"?{scopeType:"self",scopeId:null}:{scopeType:b.value.scopeType,scopeId:b.value.scopeId},a=await h.createAIMemory({...e,content:q.value});k.value=[a,...k.value],a.scopeType==="contact"&&a.scopeId&&b.value&&(j.value=new Map(j.value).set(a.scopeId,b.value.label)),W(),S.success(s("ai.global.memory.toast.created"))}catch(e){S.fail(s("ai.global.memory.toast.createFailed"),{description:String(e)})}finally{w.value=null}}}async function Ae(e){if(confirm(s("ai.global.memory.confirmDelete"))){w.value=e.id;try{await h.deleteAIMemory(e.id),k.value=k.value.filter(a=>a.id!==e.id),G.value===e.id&&N(),S.success(s("ai.global.memory.toast.deleted"))}catch(a){S.fail(s("ai.global.memory.toast.deleteFailed"),{description:String(a)})}finally{w.value=null}}}async function $e(){const e=J.value;if(!(e.length===0||!confirm(s("ai.global.memory.confirmClearView")))){v.value=!0;try{f.value==="entities"?await Promise.all(e.map(a=>h.deleteAIMemory(a.id))):await h.clearAIMemories({scopeType:f.value==="preferences"?"global":"self",scopeId:null}),await ve(),S.success(s("ai.global.memory.toast.cleared"))}catch(a){await ve(),S.fail(s("ai.global.memory.toast.clearFailed"),{description:String(a)})}finally{v.value=!1}}}async function Me(){if(!(k.value.length===0||!confirm(s("ai.global.memory.confirmClearAll")))){v.value=!0;try{await h.clearAIMemories({all:!0}),k.value=[],j.value=new Map,N(),S.success(s("ai.global.memory.toast.cleared"))}catch(e){S.fail(s("ai.global.memory.toast.clearFailed"),{description:String(e)})}finally{v.value=!1}}}return K(()=>ae.open,e=>{e?ve():(N(),W())},{immediate:!0}),K(f,()=>W()),K(C,e=>{o(),F++,R.value=!1,b.value=null,$.value="",L.value&&f.value==="entities"&&e==="contact"&&t("")}),K($,e=>{b.value=null,L.value&&f.value==="entities"&&C.value==="contact"&&l(e)}),Ee(()=>{F++,T&&clearTimeout(T),o()}),(e,a)=>{const p=Ue,X=tt,x=je,V=Ce,xe=He,Ve=Re;return c(),ee(Ve,{open:ue.open,ui:{content:"sm:max-w-2xl"},"onUpdate:open":a[6]||(a[6]=r=>z("update:open",r))},{content:E(()=>[i("div",lt,[i("header",ot,[i("div",null,[i("h2",nt,d(n(s)("ai.global.memory.title")),1),i("p",it,d(n(s)("ai.global.memory.description")),1)]),u(p,{icon:"i-lucide-x",color:"neutral",variant:"ghost",size:"sm","aria-label":n(s)("common.close"),onClick:Q},null,8,["aria-label"])]),i("div",rt,[i("div",ct,[u(X,{modelValue:f.value,"onUpdate:modelValue":a[0]||(a[0]=r=>f.value=r),items:se.value,content:!1,size:"sm",class:"min-w-max"},null,8,["modelValue","items"]),i("div",ut,[i("span",dt,d(n(s)("ai.global.memory.count",{count:J.value.length})),1),u(p,{icon:"i-lucide-plus",color:"primary",variant:"soft",size:"xs",disabled:v.value,onClick:a[1]||(a[1]=r=>L.value?W():de())},{default:E(()=>[B(d(n(s)("ai.global.memory.add")),1)]),_:1},8,["disabled"])])]),L.value?(c(),m("div",mt,[i("div",ft,[i("span",pt,d(n(s)("ai.global.memory.createTitle")),1),i("span",vt,d(n(s)("ai.global.memory.scopeLabel",{scope:ce.value})),1)]),f.value==="entities"?(c(),m("div",gt,[u(X,{modelValue:C.value,"onUpdate:modelValue":a[2]||(a[2]=r=>C.value=r),items:re.value,content:!1,size:"xs"},null,8,["modelValue","items"]),u(x,{modelValue:$.value,"onUpdate:modelValue":a[3]||(a[3]=r=>$.value=r),icon:"i-lucide-search",size:"sm",placeholder:n(s)("ai.global.entityPicker.search")},null,8,["modelValue","placeholder"]),i("div",yt,[R.value?(c(),m("div",ht,[u(V,{name:"i-lucide-loader-2",class:"h-4 w-4 animate-spin text-gray-400"})])):(c(!0),m(te,{key:1},be(oe.value,r=>(c(),m("button",{key:`${r.scopeType}:${r.scopeId}`,type:"button",class:qe(["flex w-full items-center justify-between gap-3 rounded-md px-2.5 py-2 text-left text-xs transition-colors",b.value?.scopeId===r.scopeId&&b.value.scopeType===r.scopeType?"bg-primary-100 text-primary-700 dark:bg-primary-900/50 dark:text-primary-200":"hover:bg-gray-100 dark:hover:bg-gray-800"]),onClick:Z=>b.value=r},[i("span",xt,d(r.label),1),i("span",_t,d(r.detail),1)],10,bt))),128)),!R.value&&oe.value.length===0?(c(),m("p",kt,d(n(s)("ai.global.entityPicker.empty")),1)):U("",!0)])])):U("",!0),u(xe,{modelValue:q.value,"onUpdate:modelValue":a[4]||(a[4]=r=>q.value=r),rows:3,maxlength:2e3,autoresize:"",class:"w-full",placeholder:n(s)("ai.global.memory.contentPlaceholder")},null,8,["modelValue","placeholder"]),i("div",wt,[i("span",Ct,d(q.value.trim().length)+" / 2000",1),i("div",St,[u(p,{color:"neutral",variant:"ghost",size:"xs",onClick:W},{default:E(()=>[B(d(n(s)("common.cancel")),1)]),_:1}),u(p,{size:"xs",loading:w.value==="new",disabled:!Y.value,onClick:Te},{default:E(()=>[B(d(n(s)("common.save")),1)]),_:1},8,["loading","disabled"])])])])):U("",!0),i("div",It,[v.value?(c(),m("div",Tt,[u(V,{name:"i-lucide-loader-2",class:"h-5 w-5 animate-spin text-gray-400"})])):J.value.length===0?(c(),m("div",At,[u(V,{name:"i-lucide-brain",class:"mb-3 h-8 w-8 text-gray-300 dark:text-gray-600"}),i("p",$t,d(n(s)("ai.global.memory.empty")),1)])):(c(),m("div",Mt,[(c(!0),m(te,null,be(J.value,r=>(c(),m("article",{key:r.id,class:"rounded-xl border border-gray-200 px-4 py-3 dark:border-gray-800"},[r.scopeType==="contact"||r.scopeType==="group"?(c(),m("div",Vt,[u(V,{name:r.scopeType==="contact"?"i-lucide-user-round":"i-lucide-users-round",class:"h-3.5 w-3.5"},null,8,["name"]),i("span",zt,d(fe(r)),1)])):U("",!0),G.value===r.id?(c(),m("div",Pt,[u(xe,{modelValue:I.value,"onUpdate:modelValue":a[5]||(a[5]=Z=>I.value=Z),rows:3,autoresize:"",class:"w-full"},null,8,["modelValue"]),i("div",Et,[u(p,{color:"neutral",variant:"ghost",size:"xs",onClick:N},{default:E(()=>[B(d(n(s)("common.cancel")),1)]),_:1}),u(p,{size:"xs",loading:w.value===r.id,disabled:!I.value.trim(),onClick:Z=>Ie(r)},{default:E(()=>[B(d(n(s)("common.save")),1)]),_:1},8,["loading","disabled","onClick"])])])):(c(),m(te,{key:2},[i("p",Ut,d(r.content),1),i("div",jt,[i("div",qt,[i("span",null,d(n(s)(`ai.global.memory.source.${r.sourceType}`)),1),a[8]||(a[8]=i("span",{"aria-hidden":"true"},"·",-1)),i("span",null,d(n(s)("ai.global.memory.createdAt",{time:ie(r.createdAt)})),1),r.updatedAt!==r.createdAt?(c(),m(te,{key:0},[a[7]||(a[7]=i("span",{"aria-hidden":"true"},"·",-1)),i("span",null,d(n(s)("ai.global.memory.updatedAt",{time:ie(r.updatedAt)})),1)],64)):U("",!0)]),i("div",Rt,[u(p,{icon:"i-lucide-pencil",color:"neutral",variant:"ghost",size:"xs","aria-label":n(s)("common.edit"),onClick:Z=>ne(r)},null,8,["aria-label","onClick"]),u(p,{icon:"i-lucide-trash-2",color:"error",variant:"ghost",size:"xs",loading:w.value===r.id,"aria-label":n(s)("common.delete"),onClick:Z=>Ae(r)},null,8,["loading","aria-label","onClick"])])]),r.sourceType==="ai"||r.sourceStatus!=="none"?(c(),m("div",Ft,[r.sourceType==="ai"?(c(),m("span",Bt,d(n(s)("ai.global.memory.aiSourceWarning")),1)):U("",!0),r.sourceStatus==="unavailable"?(c(),m("span",Lt,d(n(s)("ai.global.memory.sourceUnavailable")),1)):r.sourceStatus==="conversation"||r.sourceStatus==="message"?(c(),ee(p,{key:2,class:"ml-auto",icon:"i-lucide-external-link",color:"neutral",variant:"ghost",size:"xs",onClick:Z=>me(r)},{default:E(()=>[B(d(n(s)("ai.global.memory.viewSource")),1)]),_:1},8,["onClick"])):U("",!0)])):U("",!0)],64))]))),128))]))])]),i("footer",Nt,[u(p,{color:"error",variant:"ghost",size:"sm",disabled:J.value.length===0||v.value,onClick:$e},{default:E(()=>[B(d(n(s)("ai.global.memory.clearCurrent")),1)]),_:1},8,["disabled"]),i("div",Dt,[u(p,{color:"error",variant:"soft",size:"sm",disabled:k.value.length===0||v.value,onClick:Me},{default:E(()=>[B(d(n(s)("ai.global.memory.clearAll")),1)]),_:1},8,["disabled"]),u(p,{color:"neutral",variant:"outline",size:"sm",onClick:Q},{default:E(()=>[B(d(n(s)("common.close")),1)]),_:1})])])])]),_:1},8,["open"])}}}),Ht={class:"flex h-full min-w-0 flex-col dark:bg-page-dark",style:{"padding-top":"var(--titlebar-area-height)"}},Kt=["aria-expanded"],Jt={class:"main-content flex min-h-0 flex-1 overflow-hidden"},Qt={class:"flex h-full min-w-0 flex-1 flex-col overflow-hidden"},Wt={class:"relative min-h-0 flex-1"},Xt={key:0,class:"flex h-full items-center justify-center"},Yt={key:1,class:"mx-auto flex h-full max-w-lg flex-col items-center justify-center pb-16 text-center"},Zt={class:"mb-4 flex h-12 w-12 items-center justify-center rounded-2xl bg-primary-50 text-primary-500 dark:bg-primary-500/10 dark:text-primary-300"},ea={class:"text-base text-gray-800 dark:text-gray-100"},ta={class:"mt-2 text-sm leading-6 text-gray-500 dark:text-gray-400"},aa={key:2,class:"mx-auto max-w-3xl space-y-4"},sa={key:0,class:"flex justify-center pb-2"},la={key:1,class:"qa-pair space-y-6 pb-4"},oa={class:"shrink-0 px-4 pb-4"},na={class:"relative mx-auto max-w-3xl overflow-visible rounded-2xl bg-white shadow-[0_2px_14px_rgba(0,0,0,0.04)] ring-1 ring-gray-200/60 transition-all focus-within:ring-primary-500/40 focus-within:shadow-[0_4px_20px_rgba(0,0,0,0.08)] dark:bg-page-dark dark:ring-white/5"},Ca=_e({__name:"index",setup(ue){const{t:_,locale:ae}=ke(),z=Fe(),s=Be(),D=Se(),S=Le(),h=st(),O=we(),{chatKey:A,state:f}=h.ensureGlobalState(ae.value),k=ye(f,"messages"),j=ye(f,"isAIThinking"),v=ye(f,"currentAIChatId"),w=g([]),G=g(!1),I=g(!0),L=g(null);let q=!1,C=0,b=0,$=null;function M(){return!q&&z.name==="global-ai"}const R=g(0),T=g(!1),P=g(null),F=H(()=>et(k.value)),{messagesContainer:se,showScrollToBottom:J,handleScrollToBottom:re,scrollToBottom:le}=Ke(k,j),{visiblePairs:oe,hasOlderPairs:ce,loadOlderPairs:Y}=Je(F,v,se);async function Q(t){!M()||(typeof z.query.aiChatId=="string"?z.query.aiChatId:null)===t||await s.replace({query:{...z.query,aiChatId:t||void 0}})}async function ne(){G.value=!0;try{w.value=await O.getGlobalAIChats()}catch(t){D.fail(_("ai.global.toast.loadFailed"),{description:String(t)})}finally{G.value=!1}}async function N(t,o=null){const y=++C,l=await h.loadAIChat(A,t);if(!(y!==C||!M())){if(!l){D.fail(_("ai.global.toast.loadFailed"));return}I.value=!1,await Q(t),!(y!==C||!M())&&(await ge(),o?await de(o):(P.value=null,le(!0)))}}async function de(t){if(!F.value.some(l=>l.user?.id===t||l.assistant?.id===t||l.standalone?.id===t)){D.warn(_("ai.global.memory.sourceUnavailable"));return}for(;ce.value&&!oe.value.some(l=>l.user?.id===t||l.assistant?.id===t||l.standalone?.id===t);)await Y();P.value=t,await ge(),se.value?.querySelector(`[data-ai-message-id="${CSS.escape(t)}"]`)?.scrollIntoView({behavior:"smooth",block:"center"}),$&&clearTimeout($),$=setTimeout(()=>{P.value===t&&(P.value=null)},4e3)}async function W(t){await N(t.aiChatId,t.messageId)}function ie(){C++,h.startNewAIChat(A)&&(L.value?.clearDraft(),I.value=!1,Q(null))}async function me(t){try{await O.updateAIChatTitle(t.id,t.title);const o=w.value.find(y=>y.id===t.id);o&&(o.title=t.title)}catch(o){D.fail(_("ai.global.toast.renameFailed"),{description:String(o)})}}async function fe(t){try{await O.deleteAIChat(t),w.value=w.value.filter(o=>o.id!==t),v.value===t&&ie()}catch(o){D.fail(_("ai.global.toast.deleteFailed"),{description:String(o)})}}async function pe(t){const o=await h.sendMessage(A,t.content,{entityRefs:t.entityRefs,onAccepted:t.onAccepted});if(o.success){le(!0),await ne();return}if(o.reason!=="aborted"){if(o.reason==="no_config"){S.openSettings("ai","defaultModel");return}o.reason==="busy"&&D.warn(_("ai.global.toast.busy"))}}return K(ae,t=>{h.ensureGlobalState(t)}),K(v,(t,o)=>{t!==o&&(I.value||Q(t),t&&ne())}),K(v,async t=>{const o=++b;if(!t){R.value=0;return}try{const y=await O.estimateContextTokens(t);if(o!==b||v.value!==t)return;R.value=y.success?y.tokens:0}catch{if(o!==b||v.value!==t)return;R.value=0}},{immediate:!0}),K(()=>z.query.aiChatId,t=>{const o=typeof t=="string"?t:null;if(!(I.value||j.value)){if(!o){v.value&&h.startNewAIChat(A);return}o!==v.value&&N(o)}}),Ne(async()=>{if(h.selectAssistantForSession(A,De(ae.value)),await ne(),!M())return;const t=++C,o=typeof z.query.aiChatId=="string"?z.query.aiChatId:null;let y=o?await h.loadAIChat(A,o):!1;if(t!==C||!M())return;const l=w.value[0]?.id;!y&&l&&l!==o&&(y=await h.loadAIChat(A,l),t!==C||!M())||(y||h.startNewAIChat(A),M()&&(I.value=!1,await Q(v.value),M()&&(await ge(),M()&&le(!0))))}),Oe(()=>{q=!0,C++,b++,$&&clearTimeout($)}),(t,o)=>{const y=Ce;return c(),m("div",Ht,[u(at,{title:n(_)("ai.global.title"),description:n(_)("ai.global.subtitle"),icon:"i-heroicons-sparkles","icon-class":"bg-primary-600 text-white dark:bg-primary-500 dark:text-white",size:"compact"},{actions:E(()=>[i("button",{type:"button",class:"flex items-center gap-1 rounded-md px-1.5 py-1 text-xs text-gray-500 transition-colors hover:bg-gray-100 hover:text-gray-700 dark:text-gray-400 dark:hover:bg-gray-800 dark:hover:text-gray-200","aria-expanded":T.value,onClick:o[0]||(o[0]=l=>T.value=!0)},[u(y,{name:"i-lucide-brain",class:"h-3.5 w-3.5"}),i("span",null,d(n(_)("ai.global.memory.button")),1)],8,Kt),u(Qe,{"current-ai-chat-id":v.value,"current-messages":k.value,"fallback-title":n(_)("ai.global.title")},null,8,["current-ai-chat-id","current-messages","fallback-title"])]),_:1},8,["title","description"]),i("div",Jt,[u(We,{"session-id":"","active-id":v.value,conversations:w.value,loading:G.value,disabled:j.value,onSelect:N,onCreate:ie,onRename:me,onDelete:fe},null,8,["active-id","conversations","loading","disabled"]),i("section",Qt,[i("div",Wt,[i("div",{ref_key:"messagesContainer",ref:se,class:"absolute inset-0 overflow-y-auto px-5 py-6"},[I.value?(c(),m("div",Xt,[u(y,{name:"i-lucide-loader-2",class:"h-5 w-5 animate-spin text-gray-400"})])):k.value.length===0?(c(),m("div",Yt,[i("div",Zt,[u(y,{name:"i-heroicons-chat-bubble-left-right",class:"h-6 w-6"})]),i("h2",ea,d(n(_)("ai.global.empty.title")),1),i("p",ta,d(n(_)("ai.global.empty.description")),1)])):(c(),m("div",aa,[n(ce)?(c(),m("div",sa,[i("button",{type:"button",class:"flex h-8 items-center gap-1.5 rounded-full px-3 text-xs text-gray-500 transition-colors hover:bg-gray-100 hover:text-gray-700 dark:text-gray-400 dark:hover:bg-gray-800 dark:hover:text-gray-200",onClick:o[1]||(o[1]=(...l)=>n(Y)&&n(Y)(...l))},[u(y,{name:"i-heroicons-arrow-up",class:"h-3.5 w-3.5"}),B(" "+d(n(_)("ai.chat.history.loadEarlier")),1)])])):U("",!0),(c(!0),m(te,null,be(n(oe),l=>(c(),m(te,{key:l.id},[l.standalone?(c(),ee(he,{key:0,role:l.standalone.role,content:l.standalone.content,timestamp:l.standalone.timestamp},null,8,["role","content","timestamp"])):(c(),m("div",la,[l.user?(c(),ee(he,{key:0,role:l.user.role,"message-id":l.user.id,content:l.user.content,timestamp:l.user.timestamp,"entity-refs":l.user.entityRefs,highlighted:P.value===l.user.id},null,8,["role","message-id","content","timestamp","entity-refs","highlighted"])):U("",!0),l.assistant&&(l.assistant.content||l.assistant.contentBlocks?.length||!l.assistant.isStreaming)?(c(),ee(he,{key:1,role:l.assistant.role,"message-id":l.assistant.id,content:l.assistant.content,timestamp:l.assistant.timestamp,"is-streaming":l.assistant.isStreaming,"process-duration-ms":l.assistant.processDurationMs,"content-blocks":l.assistant.contentBlocks,"show-capture-button":!l.assistant.isStreaming,"active-tool":l.assistant.isStreaming?n(f).currentToolStatus:null,highlighted:P.value===l.assistant.id},null,8,["role","message-id","content","timestamp","is-streaming","process-duration-ms","content-blocks","show-capture-button","active-tool","highlighted"])):l.assistant?.isStreaming?(c(),ee(Xe,{key:2,"current-tool-status":n(f).currentToolStatus,"agent-status":n(f).agentStatus},null,8,["current-tool-status","agent-status"])):U("",!0)]))],64))),128))]))],512),u(Ge,{name:"fade-up"},{default:E(()=>[n(J)?(c(),m("button",{key:0,type:"button",class:"absolute bottom-4 left-1/2 z-10 flex -translate-x-1/2 items-center gap-1.5 rounded-full bg-gray-800/90 px-3 py-1.5 text-xs text-white shadow-lg backdrop-blur-sm hover:bg-gray-700 dark:bg-gray-700/90",onClick:o[2]||(o[2]=(...l)=>n(re)&&n(re)(...l))},[u(y,{name:"i-heroicons-arrow-down",class:"h-3.5 w-3.5"}),B(" "+d(n(_)("ai.chat.scrollToBottom")),1)])):U("",!0)]),_:1})]),i("div",oa,[i("div",na,[u(Ye,{ref_key:"chatInputRef",ref:L,embedded:"",disabled:j.value,status:j.value?"streaming":"ready","mention-scope":"global","skills-enabled":!1,placeholder:n(_)("ai.global.input.placeholder"),onSend:pe,onStop:o[3]||(o[3]=l=>n(h).stopGeneration(n(A)))},null,8,["disabled","status","placeholder"]),u(Ze,{class:"pb-1.5 pl-2 pr-[52px] pt-0.5","session-token-usage":n(f).sessionTokenUsage,"agent-status":n(f).agentStatus,"estimated-context-tokens":R.value},null,8,["session-token-usage","agent-status","estimated-context-tokens"])])])])]),u(Gt,{open:T.value,"onUpdate:open":o[4]||(o[4]=l=>T.value=l),onViewSource:W},null,8,["open"])])}}});export{Ca as default};
|
package/dist-cli-web/assets/{people-page-header-Czt9e1jv.js → people-page-header-BbYSSpsO.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{E as l,
|
|
1
|
+
import{E as l,e as n,G as u,H as d}from"./index-B1oj9KDv.js";const o=Symbol("PeoplePageHeader");function P(e){const a=u(null),r=n(()=>a.value?.value??e.value);function s(t){a.value=t}return d(o,{setHeader:s}),{header:r}}function c(e){l(o)?.setHeader(e)}export{P as p,c as u};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{h as x,b as s}from"./index-B1oj9KDv.js";const k=x("prompt",()=>{const u=s(0),i=s({maxMessagesPerRequest:1e3,exportFormat:"markdown",sqlExportFormat:"csv",enableAutoSkill:!0,chartAutoMode:"suggest",searchContextBefore:2,searchContextAfter:2}),n=s([]),l=s([]),a=s({});function r(){u.value++}function d(e){i.value={...i.value,...e},r()}function c(e){n.value.push(e)}function f(e,t){const o=n.value.findIndex(h=>h.id===e);o!==-1&&(n.value[o]={...n.value[o],...t})}function m(e){const t=n.value.findIndex(o=>o.id===e);t!==-1&&n.value.splice(t,1)}function p(e){l.value.includes(e)||l.value.push(e)}function v(e,t){return a.value[`${e}:${t}`]}function g(e,t,o){a.value={...a.value,[`${e}:${t}`]:o}}return{aiConfigVersion:u,aiGlobalSettings:i,customKeywordTemplates:n,deletedPresetTemplateIds:l,thinkingLevels:a,notifyAIConfigChanged:r,updateAIGlobalSettings:d,addCustomKeywordTemplate:c,updateCustomKeywordTemplate:f,removeCustomKeywordTemplate:m,addDeletedPresetTemplateId:p,getThinkingLevel:v,setThinkingLevel:g}},{persist:!1,backendPersist:{pick:["aiGlobalSettings","customKeywordTemplates","deletedPresetTemplateIds","thinkingLevels"]}});export{k as u};
|