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.
Files changed (203) hide show
  1. package/dist/{chat-command-SEV6N3AR.mjs → chat-command-YAFRLHMQ.mjs} +15 -16
  2. package/dist/{chat-command-SEV6N3AR.mjs.map → chat-command-YAFRLHMQ.mjs.map} +1 -1
  3. package/dist/{chunk-6EZPD3XJ.mjs → chunk-2PY4XCH3.mjs} +6 -3
  4. package/dist/chunk-2PY4XCH3.mjs.map +1 -0
  5. package/dist/{chunk-HWIXK7SU.mjs → chunk-73TJ2S7W.mjs} +1643 -3
  6. package/dist/chunk-73TJ2S7W.mjs.map +1 -0
  7. package/dist/{chunk-YUH3H3QW.mjs → chunk-ARIBCH47.mjs} +96 -5
  8. package/dist/chunk-ARIBCH47.mjs.map +1 -0
  9. package/dist/{chunk-WRBFV2GX.mjs → chunk-FPVRSXQ4.mjs} +49 -55
  10. package/dist/chunk-FPVRSXQ4.mjs.map +1 -0
  11. package/dist/{chunk-VREVDZ4Q.mjs → chunk-GKCIRKOH.mjs} +1934 -35
  12. package/dist/chunk-GKCIRKOH.mjs.map +1 -0
  13. package/dist/{chunk-TJ3NOBVI.mjs → chunk-JWJREWVN.mjs} +119 -288
  14. package/dist/chunk-JWJREWVN.mjs.map +1 -0
  15. package/dist/{chunk-TWH422HC.mjs → chunk-MMTEGUQA.mjs} +3 -3
  16. package/dist/{chunk-VUYWUHWW.mjs → chunk-N4SB6QZV.mjs} +3 -3
  17. package/dist/chunk-N4SB6QZV.mjs.map +1 -0
  18. package/dist/{chunk-TRGR3KKJ.mjs → chunk-OTYNMDDL.mjs} +2643 -682
  19. package/dist/chunk-OTYNMDDL.mjs.map +1 -0
  20. package/dist/{chunk-CH5YAZ4Q.mjs → chunk-PDQV4RUA.mjs} +2 -2
  21. package/dist/{chunk-WJQOXOMR.mjs → chunk-UP6JIV3S.mjs} +285 -41
  22. package/dist/chunk-UP6JIV3S.mjs.map +1 -0
  23. package/dist/chunk-WDLO7OLX.mjs +101 -0
  24. package/dist/chunk-WDLO7OLX.mjs.map +1 -0
  25. package/dist/cli.mjs +9 -9
  26. package/dist/contacts-worker.mjs +2 -2
  27. package/dist/global-insight-worker.mjs +1 -1
  28. package/dist/{http-237XYNRT.mjs → http-LPFPVTBC.mjs} +12 -12
  29. package/dist/{import-R2E2TFAK.mjs → import-T4WX2ZJL.mjs} +7 -7
  30. package/dist/index.mjs +12 -12
  31. package/dist/{mcp-BED4AARV.mjs → mcp-SMF3NWIN.mjs} +8 -8
  32. package/dist/people-relationships-worker.mjs +2 -2
  33. package/dist/semantic-index-worker.mjs +1 -1
  34. package/dist/{src-AYMALWU5.mjs → src-EGLLMTAU.mjs} +44 -14
  35. package/dist/{stream-import-RXNSOOYH.mjs → stream-import-2BXJTTCE.mjs} +7 -7
  36. package/dist/{worker-runtime-JGAZU7MC.mjs → worker-runtime-RDLSPXFT.mjs} +5 -5
  37. package/dist-cli-web/assets/AISettingsTab-CEhrXlYR.js +1 -0
  38. package/dist-cli-web/assets/{AboutTab-DCM1-glA.js → AboutTab-Bbu0SsMM.js} +1 -1
  39. package/dist-cli-web/assets/ActionToolsPanel-DDNXXH8v.css +1 -0
  40. package/dist-cli-web/assets/ActionToolsPanel.vue_vue_type_script_setup_true_lang-IB1yZxCE.js +75 -0
  41. package/dist-cli-web/assets/{Alert-D-egBWcb.js → Alert-510jTN3l.js} +1 -1
  42. package/dist-cli-web/assets/ApiSettingsTab-Bi1GRMN4.js +2 -0
  43. package/dist-cli-web/assets/BatchManageTab-DhnqMCSM.js +1 -0
  44. package/dist-cli-web/assets/{BufferResource-BE2_2bZK.js → BufferResource-CKZxnACp.js} +1 -1
  45. package/dist-cli-web/assets/{CanvasRenderer-DDKdvEYQ.js → CanvasRenderer-BeK5POBy.js} +1 -1
  46. package/dist-cli-web/assets/CardDecoration-RuBA3N2j.js +1 -0
  47. package/dist-cli-web/assets/ChatRecordDrawer-BY_-lIEj.js +1 -0
  48. package/dist-cli-web/assets/{ChatRecordWorkspace-DqUI4QiU.js → ChatRecordWorkspace-7prKd-Tq.js} +1 -1
  49. package/dist-cli-web/assets/Checkbox-_eH64bb0.js +1 -0
  50. package/dist-cli-web/assets/DataDirCleanupNotice-BHaXwlfr.js +1 -0
  51. 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
  52. package/dist-cli-web/assets/{DebugToolsPanel-BIHA6jw4.js → DebugToolsPanel-ByKItGrS.js} +1 -1
  53. package/dist-cli-web/assets/EChart.vue_vue_type_script_setup_true_lang-DubnuUXI.js +1 -0
  54. package/dist-cli-web/assets/EChartBar.vue_vue_type_script_setup_true_lang-DKNCZuFm.js +1 -0
  55. package/dist-cli-web/assets/EChartLine.vue_vue_type_script_setup_true_lang-Fl7xAOSR.js +1 -0
  56. package/dist-cli-web/assets/EChartWordcloud-C6XM4KOX.js +1 -0
  57. package/dist-cli-web/assets/FileDropZone.vue_vue_type_script_setup_true_lang-DYDdRSNE.js +1 -0
  58. package/dist-cli-web/assets/{Filter-kO4dIDJ2.js → Filter-CByj_rCR.js} +1 -1
  59. package/dist-cli-web/assets/GlobalTaskBar-BdELjzrs.js +1 -0
  60. package/dist-cli-web/assets/GlobalTaskBar-haLzezqY.css +1 -0
  61. package/dist-cli-web/assets/GroupRelationshipGalaxyView-CnzPEgUS.js +1 -0
  62. package/dist-cli-web/assets/Label-DCIcxkhU.js +1 -0
  63. package/dist-cli-web/assets/LoadingState.vue_vue_type_script_setup_true_lang-BBcCt_Qm.js +1 -0
  64. package/dist-cli-web/assets/MessageExportModal-DNU16Bs8.js +1 -0
  65. package/dist-cli-web/assets/PageHeader-CKeZjNNR.js +1 -0
  66. package/dist-cli-web/assets/PageHeader-CPLgiKT8.css +1 -0
  67. 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
  68. package/dist-cli-web/assets/{RelationshipGalaxyCanvas-Cod1JX9m.js → RelationshipGalaxyCanvas-CDhljGyJ.js} +3 -3
  69. package/dist-cli-web/assets/{RelationshipGalaxyThreeCanvas-CkefzeFJ.js → RelationshipGalaxyThreeCanvas-BP8fsvvf.js} +1 -1
  70. package/dist-cli-web/assets/{RenderTargetSystem-SuQ7cbze.js → RenderTargetSystem-D76QrDT_.js} +1 -1
  71. package/dist-cli-web/assets/{RovingFocusItem-psoFYxrC.js → RovingFocusItem-BJMUQ5DJ.js} +1 -1
  72. package/dist-cli-web/assets/{ScreenCaptureModal-D4r9ixKh.js → ScreenCaptureModal-DkX4z-M1.js} +1 -1
  73. package/dist-cli-web/assets/SectionTabs.vue_vue_type_script_setup_true_lang-qFhJO5B0.js +1 -0
  74. package/dist-cli-web/assets/Select-B5oJc5y1.js +1 -0
  75. package/dist-cli-web/assets/SettingsModal-BO-QKQ2h.js +2 -0
  76. package/dist-cli-web/assets/{StorageTab-DhSJ-0Ir.js → StorageTab-CPPXXaRm.js} +1 -1
  77. package/dist-cli-web/assets/Switch-CDk3LZ4_.js +1 -0
  78. package/dist-cli-web/assets/Tabs-BMq9wODW.js +1 -0
  79. package/dist-cli-web/assets/{Tabs-Bnm_Q7yW.js → Tabs-DqWTBV8x.js} +1 -1
  80. package/dist-cli-web/assets/ThemeCard.vue_vue_type_script_setup_true_lang-D2outEOV.js +1 -0
  81. 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
  82. package/dist-cli-web/assets/{VisuallyHiddenInput-Bo_XwaLu.js → VisuallyHiddenInput-BAFpkxMI.js} +1 -1
  83. package/dist-cli-web/assets/{WebGLRenderer-D1x9WZRj.js → WebGLRenderer-DjCPvR_O.js} +1 -1
  84. package/dist-cli-web/assets/{WebGPURenderer-37Nw-tLm.js → WebGPURenderer-C2B_u03z.js} +1 -1
  85. package/dist-cli-web/assets/aiChat--CR4g2M7.js +8 -0
  86. package/dist-cli-web/assets/base-F6s0vTrr.js +1 -0
  87. package/dist-cli-web/assets/{browserAll-CWrz_-4U.js → browserAll-DiUAZg4L.js} +1 -1
  88. package/dist-cli-web/assets/chatMessages-BGRbSlvD.css +1 -0
  89. package/dist-cli-web/assets/chatMessages-Bd33SSXI.js +147 -0
  90. package/dist-cli-web/assets/cli-web-DoibEdj2.js +1 -0
  91. package/dist-cli-web/assets/{fetch-CkXgOxcu.js → fetch-4nh1LaVF.js} +3 -3
  92. package/dist-cli-web/assets/fetch-7lUvXbhU.js +1 -0
  93. package/dist-cli-web/assets/{fetch-CFpLXWTe.js → fetch-BEaW1j5H.js} +1 -1
  94. package/dist-cli-web/assets/{fetch-CgA1peJD.js → fetch-B_YFABxI.js} +1 -1
  95. package/dist-cli-web/assets/{fetch-BGmCCyzz.js → fetch-BeX69kpS.js} +1 -1
  96. package/dist-cli-web/assets/{fetch-Du-wU0OO.js → fetch-CRocA-4C.js} +1 -1
  97. package/dist-cli-web/assets/{fetch-DPSWt6yX.js → fetch-CXM-cjDS.js} +1 -1
  98. package/dist-cli-web/assets/{fetch-qd2FgBWQ.js → fetch-CXqeAbnY.js} +1 -1
  99. package/dist-cli-web/assets/{fetch-6pcVxB9h.js → fetch-CxVcHNid.js} +1 -1
  100. package/dist-cli-web/assets/fetch-DBpDMy29.js +1 -0
  101. package/dist-cli-web/assets/{fetch-Gu4qQjUB.js → fetch-DKBBS9Op.js} +1 -1
  102. package/dist-cli-web/assets/{fetch-DZ6OF-xW.js → fetch-epFXmPIQ.js} +1 -1
  103. package/dist-cli-web/assets/{host-D8zlA62K.js → host-C4rU8pKA.js} +1 -1
  104. package/dist-cli-web/assets/{host-CWsAWKgy.js → host-CtSqR_Zm.js} +1 -1
  105. package/dist-cli-web/assets/{index-Dy0fRMDf.js → index-4DVZ2g0M.js} +10 -10
  106. package/dist-cli-web/assets/index-B1oj9KDv.js +135 -0
  107. package/dist-cli-web/assets/index-BFH1j_R9.js +1 -0
  108. package/dist-cli-web/assets/index-BZpR015e.css +1 -0
  109. package/dist-cli-web/assets/index-BgelKQTW.css +1 -0
  110. package/dist-cli-web/assets/{index-v6DlL4ue.js → index-BvMAw3Zd.js} +1 -1
  111. package/dist-cli-web/assets/index-C1A1FwpO.css +1 -0
  112. package/dist-cli-web/assets/index-CIIyg_o9.css +1 -0
  113. package/dist-cli-web/assets/index-CaYtkONV.js +64 -0
  114. package/dist-cli-web/assets/index-CuCQ1d9f.js +1 -0
  115. package/dist-cli-web/assets/index-D3Hyjv4e.js +137 -0
  116. package/dist-cli-web/assets/index-D8cHMqV-.js +2 -0
  117. package/dist-cli-web/assets/index-DlHuILT_.js +1 -0
  118. package/dist-cli-web/assets/index-R4LqAnx9.js +2 -0
  119. package/dist-cli-web/assets/index-_m1mf1jm.js +1 -0
  120. package/dist-cli-web/assets/{index-a7CT8DQm.js → index-ekvsNmfe.js} +1 -1
  121. package/dist-cli-web/assets/index-mXe1LssU.js +1 -0
  122. package/dist-cli-web/assets/index-mbLXPIyC.js +1 -0
  123. package/dist-cli-web/assets/{people-page-header-Czt9e1jv.js → people-page-header-BbYSSpsO.js} +1 -1
  124. package/dist-cli-web/assets/{prompt-DGazz143.js → prompt-C-ofJ7t_.js} +1 -1
  125. package/dist-cli-web/assets/{semantic-index-config-builder-BkFHzIUy.js → semantic-index-config-builder-D3TYVYC-.js} +1 -1
  126. package/dist-cli-web/assets/service-BYOUkk7V.js +1 -0
  127. package/dist-cli-web/assets/{service-CAp0YJoS.js → service-CppETV4a.js} +1 -1
  128. package/dist-cli-web/assets/service-tEx-5LUL.js +1 -0
  129. package/dist-cli-web/assets/useFormControl-CrWi_6Hn.js +1 -0
  130. package/dist-cli-web/assets/useTable-Clk7ecq-.js +1 -0
  131. package/dist-cli-web/assets/{useToast-YAHDkKDN.js → useToast-B5LaA6c-.js} +1 -1
  132. package/dist-cli-web/assets/{vendor-echarts-hTLhTs52.js → vendor-echarts-C9ugTmum.js} +1 -1
  133. package/dist-cli-web/assets/{vendor-echarts-wordcloud-B8CF_NgP.js → vendor-echarts-wordcloud-DNiU8Psq.js} +1 -1
  134. package/dist-cli-web/assets/{webworkerAll-CvSp2Y8j.js → webworkerAll-CyA4b4LT.js} +1 -1
  135. package/dist-cli-web/index.html +2 -2
  136. package/package.json +3 -3
  137. package/dist/chunk-6E46U4H2.mjs +0 -41
  138. package/dist/chunk-6E46U4H2.mjs.map +0 -1
  139. package/dist/chunk-6EZPD3XJ.mjs.map +0 -1
  140. package/dist/chunk-HWIXK7SU.mjs.map +0 -1
  141. package/dist/chunk-TJ3NOBVI.mjs.map +0 -1
  142. package/dist/chunk-TRGR3KKJ.mjs.map +0 -1
  143. package/dist/chunk-VREVDZ4Q.mjs.map +0 -1
  144. package/dist/chunk-VUYWUHWW.mjs.map +0 -1
  145. package/dist/chunk-WJQOXOMR.mjs.map +0 -1
  146. package/dist/chunk-WRBFV2GX.mjs.map +0 -1
  147. package/dist/chunk-YUH3H3QW.mjs.map +0 -1
  148. package/dist-cli-web/assets/AISettingsTab-VgI7PiJd.js +0 -1
  149. package/dist-cli-web/assets/ActionToolsPanel-BTGgwXVD.css +0 -1
  150. package/dist-cli-web/assets/ActionToolsPanel.vue_vue_type_script_setup_true_lang-a7RMjjve.js +0 -112
  151. package/dist-cli-web/assets/ApiSettingsTab-Co3LWf1f.js +0 -2
  152. package/dist-cli-web/assets/BatchManageTab-2LrckmQm.js +0 -1
  153. package/dist-cli-web/assets/ChatRecordDrawer-DRhztqLG.js +0 -1
  154. package/dist-cli-web/assets/Checkbox-EfpQmv4A.js +0 -1
  155. package/dist-cli-web/assets/DataDirCleanupNotice-BYIiR58J.js +0 -1
  156. package/dist-cli-web/assets/EChart.vue_vue_type_script_setup_true_lang-DryMSoCz.js +0 -1
  157. package/dist-cli-web/assets/EChartBar.vue_vue_type_script_setup_true_lang-BdFW-hvt.js +0 -1
  158. package/dist-cli-web/assets/EChartLine.vue_vue_type_script_setup_true_lang-C69Kdw9X.js +0 -1
  159. package/dist-cli-web/assets/EChartWordcloud-DM7UEHdK.js +0 -1
  160. package/dist-cli-web/assets/GlobalTaskBar-BZS_h0zC.js +0 -1
  161. package/dist-cli-web/assets/GlobalTaskBar-COW_uBX6.css +0 -1
  162. package/dist-cli-web/assets/GroupRelationshipGalaxyView--WIaHx_F.js +0 -1
  163. package/dist-cli-web/assets/Label-CIuDXyeM.js +0 -1
  164. package/dist-cli-web/assets/LoadingState.vue_vue_type_script_setup_true_lang-B_7VHxTx.js +0 -1
  165. package/dist-cli-web/assets/MessageExportModal-BQsIpyxv.js +0 -1
  166. package/dist-cli-web/assets/PageHeader-DxhQHF_0.js +0 -1
  167. package/dist-cli-web/assets/PageHeader-XIXMTomn.css +0 -1
  168. package/dist-cli-web/assets/SectionTabs.vue_vue_type_script_setup_true_lang-v_7aRBgM.js +0 -1
  169. package/dist-cli-web/assets/Select-CxurgslB.js +0 -1
  170. package/dist-cli-web/assets/SettingsModal-DBZucuf6.js +0 -2
  171. package/dist-cli-web/assets/Switch-3D81G6uV.js +0 -1
  172. package/dist-cli-web/assets/Tabs-DB603EEu.js +0 -1
  173. package/dist-cli-web/assets/ThemeCard.vue_vue_type_script_setup_true_lang-BDTdkH5i.js +0 -1
  174. package/dist-cli-web/assets/aiChat-BCzYQeZq.js +0 -8
  175. package/dist-cli-web/assets/cli-web-C-8N0CJh.js +0 -1
  176. package/dist-cli-web/assets/fetch-B69OkB6B.js +0 -1
  177. package/dist-cli-web/assets/fetch-z9M9FcIC.js +0 -1
  178. package/dist-cli-web/assets/index-BGd4ZfhO.js +0 -2
  179. package/dist-cli-web/assets/index-BYZF1ngN.js +0 -1
  180. package/dist-cli-web/assets/index-BcuwlCin.css +0 -1
  181. package/dist-cli-web/assets/index-BnaLj2dx.css +0 -1
  182. package/dist-cli-web/assets/index-Bq5q3kSU.js +0 -36
  183. package/dist-cli-web/assets/index-CPR3jdC2.js +0 -137
  184. package/dist-cli-web/assets/index-D3AjvaOX.js +0 -1
  185. package/dist-cli-web/assets/index-DAitScUA.js +0 -1
  186. package/dist-cli-web/assets/index-DBSMWAJ0.js +0 -1
  187. package/dist-cli-web/assets/index-DTn9htw-.js +0 -64
  188. package/dist-cli-web/assets/index-DV_rWxcH.js +0 -1
  189. package/dist-cli-web/assets/index-DxhAGqYM.css +0 -1
  190. package/dist-cli-web/assets/index-I0mIcDpE.css +0 -1
  191. package/dist-cli-web/assets/index-onwNShRw.js +0 -2
  192. package/dist-cli-web/assets/service-BMqwB74f.js +0 -1
  193. package/dist-cli-web/assets/service-CUQ8iHdS.js +0 -1
  194. package/dist-cli-web/assets/useFormControl-DcSMUc2d.js +0 -1
  195. package/dist-cli-web/assets/useTable-Clmq3sge.js +0 -1
  196. /package/dist/{chunk-TWH422HC.mjs.map → chunk-MMTEGUQA.mjs.map} +0 -0
  197. /package/dist/{chunk-CH5YAZ4Q.mjs.map → chunk-PDQV4RUA.mjs.map} +0 -0
  198. /package/dist/{http-237XYNRT.mjs.map → http-LPFPVTBC.mjs.map} +0 -0
  199. /package/dist/{import-R2E2TFAK.mjs.map → import-T4WX2ZJL.mjs.map} +0 -0
  200. /package/dist/{mcp-BED4AARV.mjs.map → mcp-SMF3NWIN.mjs.map} +0 -0
  201. /package/dist/{src-AYMALWU5.mjs.map → src-EGLLMTAU.mjs.map} +0 -0
  202. /package/dist/{stream-import-RXNSOOYH.mjs.map → stream-import-2BXJTTCE.mjs.map} +0 -0
  203. /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{aq as F,ar as U,E as z,b5 as W,r as g,aU as D,b6 as N,J as E,o as d,c as L,w as x,i as c,n as u,e as t,h as m,z as y,b as h,a6 as b,p as l,l as _,P as K,f as w,av as S,au as O,H as P,b7 as A,b8 as R,a as M,a3 as H,ax as J,aC as T,ay as G,aP as Q,ap as X,a5 as Y}from"./index-Bq5q3kSU.js";import{_ as Z}from"./Checkbox-EfpQmv4A.js";import{L as ee}from"./Label-CIuDXyeM.js";import{_ as te}from"./ThemeCard.vue_vue_type_script_setup_true_lang-BDTdkH5i.js";import"./vendor-snapdom--nZvo8Sg.js";import"./useFormControl-DcSMUc2d.js";import"./VisuallyHiddenInput-Bo_XwaLu.js";import"./RovingFocusItem-psoFYxrC.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=F(),e=U("formField",s),k=O(),r=w(()=>S({extend:S(ae),...k.ui?.formField||{}})({size:e.size,required:e.required,orientation:e.orientation})),v=z(W,null),o=w(()=>e.error||v?.value?.find(a=>a.name===e.name||e.errorPattern&&a.name?.match(e.errorPattern))?.message),i=g(D()),f=i.value,q=z(N,void 0);return E(i,()=>{q&&e.name&&(q.value[e.name]={id:i.value,pattern:e.errorPattern})},{immediate:!0}),P(A,i),P(R,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(),L(t(K),{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=J(),e=T(),k=G(),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,C=ne,j=Z,B=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(C,{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(j,{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(B,{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};
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};
@@ -1 +1 @@
1
- import{E as l,f as n,G as u,H as d}from"./index-Bq5q3kSU.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
+ 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{d as x,r as s}from"./index-Bq5q3kSU.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};
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};