chatlab-cli 0.37.1 → 0.37.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chat-command-YAFRLHMQ.mjs → chat-command-RQC44FPF.mjs} +53 -13
- package/dist/chat-command-RQC44FPF.mjs.map +1 -0
- package/dist/{chunk-FPVRSXQ4.mjs → chunk-4FAEB4C2.mjs} +12 -12
- package/dist/{chunk-MMTEGUQA.mjs → chunk-5OA4QI3Q.mjs} +3 -3
- package/dist/{chunk-UP6JIV3S.mjs → chunk-E2ZFGNZQ.mjs} +16 -12
- package/dist/chunk-E2ZFGNZQ.mjs.map +1 -0
- package/dist/{chunk-JWJREWVN.mjs → chunk-E6IRRNBQ.mjs} +27 -3
- package/dist/chunk-E6IRRNBQ.mjs.map +1 -0
- package/dist/{chunk-PDQV4RUA.mjs → chunk-GDKQKHJT.mjs} +2 -2
- package/dist/{chunk-GKCIRKOH.mjs → chunk-HJWBFHNR.mjs} +4 -4
- package/dist/{chunk-73TJ2S7W.mjs → chunk-IDDTW5JN.mjs} +313 -24
- package/dist/chunk-IDDTW5JN.mjs.map +1 -0
- package/dist/{chunk-2PY4XCH3.mjs → chunk-IMJVOODY.mjs} +2 -2
- package/dist/{chunk-ARIBCH47.mjs → chunk-LUENE6L7.mjs} +25 -15
- package/dist/chunk-LUENE6L7.mjs.map +1 -0
- package/dist/{chunk-WDLO7OLX.mjs → chunk-O57SQSCO.mjs} +2 -2
- package/dist/{chunk-N4SB6QZV.mjs → chunk-ZGXXAPLX.mjs} +2 -2
- package/dist/{chunk-OTYNMDDL.mjs → chunk-ZOHSWBD2.mjs} +2237 -1977
- package/dist/chunk-ZOHSWBD2.mjs.map +1 -0
- package/dist/cli.mjs +9 -9
- package/dist/contacts-worker.mjs +2 -2
- package/dist/global-insight-worker.mjs +1 -1
- package/dist/{http-LPFPVTBC.mjs → http-QJDZKDNJ.mjs} +12 -12
- package/dist/{import-T4WX2ZJL.mjs → import-XK6YM26A.mjs} +7 -7
- package/dist/index.mjs +12 -12
- package/dist/{mcp-SMF3NWIN.mjs → mcp-DMGZFSYN.mjs} +24 -17
- package/dist/mcp-DMGZFSYN.mjs.map +1 -0
- package/dist/people-relationships-worker.mjs +2 -2
- package/dist/semantic-index-worker.mjs +1 -1
- package/dist/{src-EGLLMTAU.mjs → src-4AHJUFCW.mjs} +6 -6
- package/dist/{stream-import-2BXJTTCE.mjs → stream-import-7VQVT5ST.mjs} +7 -7
- package/dist/{worker-runtime-RDLSPXFT.mjs → worker-runtime-PQBAV75N.mjs} +5 -5
- package/dist-cli-web/assets/{AISettingsTab-CEhrXlYR.js → AISettingsTab-qS3XKnvh.js} +1 -1
- package/dist-cli-web/assets/{AboutTab-Bbu0SsMM.js → AboutTab-K-i40dPv.js} +1 -1
- package/dist-cli-web/assets/{Alert-510jTN3l.js → Alert-GSvA5B7J.js} +1 -1
- package/dist-cli-web/assets/{ApiSettingsTab-Bi1GRMN4.js → ApiSettingsTab-DIVGTR3g.js} +1 -1
- package/dist-cli-web/assets/{BatchManageTab-DhnqMCSM.js → BatchManageTab-CJhwvYWV.js} +1 -1
- package/dist-cli-web/assets/{BufferResource-CKZxnACp.js → BufferResource-Cjm0m7sF.js} +1 -1
- package/dist-cli-web/assets/{CanvasRenderer-BeK5POBy.js → CanvasRenderer-C-fmrahh.js} +1 -1
- package/dist-cli-web/assets/{CardDecoration-RuBA3N2j.js → CardDecoration-Cz54ZPyh.js} +1 -1
- package/dist-cli-web/assets/{ChatRecordDrawer-BY_-lIEj.js → ChatRecordDrawer-Cst8zTUv.js} +1 -1
- package/dist-cli-web/assets/{ChatRecordWorkspace-7prKd-Tq.js → ChatRecordWorkspace-DKVKaimw.js} +1 -1
- package/dist-cli-web/assets/{Checkbox-_eH64bb0.js → Checkbox-CrlY3jiJ.js} +1 -1
- package/dist-cli-web/assets/{DataDirCleanupNotice-BHaXwlfr.js → DataDirCleanupNotice-Cjqiub4e.js} +1 -1
- package/dist-cli-web/assets/{DatePicker.vue_vue_type_script_setup_true_lang-D9Ul_GYz.js → DatePicker.vue_vue_type_script_setup_true_lang-BYY2UmPA.js} +1 -1
- package/dist-cli-web/assets/{DebugToolsPanel-ByKItGrS.js → DebugToolsPanel-I00RV_Lr.js} +1 -1
- package/dist-cli-web/assets/{EChart.vue_vue_type_script_setup_true_lang-DubnuUXI.js → EChart.vue_vue_type_script_setup_true_lang-CRTZh9kh.js} +1 -1
- package/dist-cli-web/assets/{EChartBar.vue_vue_type_script_setup_true_lang-DKNCZuFm.js → EChartBar.vue_vue_type_script_setup_true_lang-DjDFhnN9.js} +1 -1
- package/dist-cli-web/assets/{EChartLine.vue_vue_type_script_setup_true_lang-Fl7xAOSR.js → EChartLine.vue_vue_type_script_setup_true_lang-BLqlW9E4.js} +1 -1
- package/dist-cli-web/assets/{EChartWordcloud-C6XM4KOX.js → EChartWordcloud-ChKJM8bU.js} +1 -1
- package/dist-cli-web/assets/{FileDropZone.vue_vue_type_script_setup_true_lang-DYDdRSNE.js → FileDropZone.vue_vue_type_script_setup_true_lang-CsRmQhVQ.js} +1 -1
- package/dist-cli-web/assets/{Filter-CByj_rCR.js → Filter-Duzxgudo.js} +1 -1
- package/dist-cli-web/assets/{GlobalTaskBar-BdELjzrs.js → GlobalTaskBar-DL0IJxlt.js} +1 -1
- package/dist-cli-web/assets/{GroupRelationshipGalaxyView-CnzPEgUS.js → GroupRelationshipGalaxyView-BZrB2o2g.js} +1 -1
- package/dist-cli-web/assets/{Label-DCIcxkhU.js → Label-CaVKlQnJ.js} +1 -1
- package/dist-cli-web/assets/{LoadingState.vue_vue_type_script_setup_true_lang-BBcCt_Qm.js → LoadingState.vue_vue_type_script_setup_true_lang-uF54r-dT.js} +1 -1
- package/dist-cli-web/assets/{MessageExportModal-DNU16Bs8.js → MessageExportModal-JpurBsUW.js} +1 -1
- package/dist-cli-web/assets/{PageHeader-CKeZjNNR.js → PageHeader-BciykZ_-.js} +1 -1
- package/dist-cli-web/assets/{PageTabs.vue_vue_type_script_setup_true_lang-C8M3wNNH.js → PageTabs.vue_vue_type_script_setup_true_lang-2Xe2iUFO.js} +1 -1
- package/dist-cli-web/assets/{RelationshipGalaxyCanvas-CDhljGyJ.js → RelationshipGalaxyCanvas-BO5-MowG.js} +3 -3
- package/dist-cli-web/assets/{RelationshipGalaxyThreeCanvas-BP8fsvvf.js → RelationshipGalaxyThreeCanvas-Dp4CcWU5.js} +1 -1
- package/dist-cli-web/assets/{RenderTargetSystem-D76QrDT_.js → RenderTargetSystem-CfuoUG_y.js} +1 -1
- package/dist-cli-web/assets/{RovingFocusItem-BJMUQ5DJ.js → RovingFocusItem-FpYwYEP_.js} +1 -1
- package/dist-cli-web/assets/{ScreenCaptureModal-DkX4z-M1.js → ScreenCaptureModal-cElYPaSj.js} +1 -1
- package/dist-cli-web/assets/SectionTabs.vue_vue_type_script_setup_true_lang-pVQMbTsj.js +1 -0
- package/dist-cli-web/assets/{Select-B5oJc5y1.js → Select-H8Fz6RkU.js} +1 -1
- package/dist-cli-web/assets/{SettingsModal-BO-QKQ2h.js → SettingsModal-52Fw4fVW.js} +2 -2
- package/dist-cli-web/assets/{StorageTab-CPPXXaRm.js → StorageTab-BnugE5BO.js} +1 -1
- package/dist-cli-web/assets/{Switch-CDk3LZ4_.js → Switch-K4aqYC4Y.js} +1 -1
- package/dist-cli-web/assets/{Tabs-DqWTBV8x.js → Tabs-BXjD45rO.js} +1 -1
- package/dist-cli-web/assets/{Tabs-BMq9wODW.js → Tabs-DJ5p8gb6.js} +1 -1
- package/dist-cli-web/assets/{ThemeCard.vue_vue_type_script_setup_true_lang-D2outEOV.js → ThemeCard.vue_vue_type_script_setup_true_lang-BLmTpx4f.js} +1 -1
- package/dist-cli-web/assets/{TimeSelect.vue_vue_type_script_setup_true_lang-BcflxP_U.js → TimeSelect.vue_vue_type_script_setup_true_lang-geQAlopO.js} +1 -1
- package/dist-cli-web/assets/{VisuallyHiddenInput-BAFpkxMI.js → VisuallyHiddenInput-J2KEIQBX.js} +1 -1
- package/dist-cli-web/assets/{WebGLRenderer-DjCPvR_O.js → WebGLRenderer-BDFzRniS.js} +1 -1
- package/dist-cli-web/assets/{WebGPURenderer-C2B_u03z.js → WebGPURenderer-BKYZyUCZ.js} +1 -1
- package/dist-cli-web/assets/aiChat-CdJzpNYW.js +8 -0
- package/dist-cli-web/assets/{base-F6s0vTrr.js → base-129JztT1.js} +1 -1
- package/dist-cli-web/assets/{browserAll-DiUAZg4L.js → browserAll-CZNZDK1i.js} +1 -1
- package/dist-cli-web/assets/{chatMessages-Bd33SSXI.js → chatMessages-zmzHCUCy.js} +3 -3
- package/dist-cli-web/assets/{cli-web-DoibEdj2.js → cli-web-_WGCg-ZY.js} +1 -1
- package/dist-cli-web/assets/{fetch-CXM-cjDS.js → fetch-B7Tdp7Uo.js} +1 -1
- package/dist-cli-web/assets/{fetch-DBpDMy29.js → fetch-BBdyPNj3.js} +1 -1
- package/dist-cli-web/assets/{fetch-B_YFABxI.js → fetch-Bafz8jLM.js} +1 -1
- package/dist-cli-web/assets/{fetch-CxVcHNid.js → fetch-C4W6tD-D.js} +1 -1
- package/dist-cli-web/assets/{fetch-BeX69kpS.js → fetch-DOsmgros.js} +1 -1
- package/dist-cli-web/assets/{fetch-CRocA-4C.js → fetch-DTPDtL38.js} +1 -1
- package/dist-cli-web/assets/{fetch-CXqeAbnY.js → fetch-DaeoNUip.js} +1 -1
- package/dist-cli-web/assets/{fetch-7lUvXbhU.js → fetch-DgHdAlO7.js} +1 -1
- package/dist-cli-web/assets/{fetch-DKBBS9Op.js → fetch-Di4QpfqL.js} +1 -1
- package/dist-cli-web/assets/{fetch-4nh1LaVF.js → fetch-Dw33HaVP.js} +11 -13
- package/dist-cli-web/assets/{fetch-BEaW1j5H.js → fetch-IP6i-mtr.js} +1 -1
- package/dist-cli-web/assets/{fetch-epFXmPIQ.js → fetch-sbr95ipd.js} +1 -1
- package/dist-cli-web/assets/{host-CtSqR_Zm.js → host-CMnAiJSx.js} +1 -1
- package/dist-cli-web/assets/{host-C4rU8pKA.js → host-CuuNLUWx.js} +1 -1
- package/dist-cli-web/assets/{index-ekvsNmfe.js → index-BBYtZa7g.js} +1 -1
- package/dist-cli-web/assets/{index-mXe1LssU.js → index-BOXh7X5Y.js} +1 -1
- package/dist-cli-web/assets/index-BepItDCQ.js +64 -0
- package/dist-cli-web/assets/{index-4DVZ2g0M.js → index-BmGA3geF.js} +1 -1
- package/dist-cli-web/assets/{index-BvMAw3Zd.js → index-C-u3l4Uh.js} +1 -1
- package/dist-cli-web/assets/{index-D8cHMqV-.js → index-CN9WMxb3.js} +2 -2
- package/dist-cli-web/assets/{index-BFH1j_R9.js → index-Chh0gCp7.js} +1 -1
- package/dist-cli-web/assets/index-DRFMz0cs.css +1 -0
- package/dist-cli-web/assets/{index-BgelKQTW.css → index-DbP9vQhR.css} +1 -1
- package/dist-cli-web/assets/index-DgCXdbsG.js +2 -0
- package/dist-cli-web/assets/{index-CuCQ1d9f.js → index-DhRaZS6z.js} +1 -1
- package/dist-cli-web/assets/{index-_m1mf1jm.js → index-Dz4yfeg6.js} +1 -1
- package/dist-cli-web/assets/{index-mbLXPIyC.js → index-EtteazuD.js} +1 -1
- package/dist-cli-web/assets/index-GNMlsoVH.js +137 -0
- package/dist-cli-web/assets/{index-B1oj9KDv.js → index-bQ9oj54q.js} +4 -4
- package/dist-cli-web/assets/{index-DlHuILT_.js → index-fsLAooCi.js} +1 -1
- package/dist-cli-web/assets/{people-page-header-BbYSSpsO.js → people-page-header-CKXRSnpl.js} +1 -1
- package/dist-cli-web/assets/{prompt-C-ofJ7t_.js → prompt-DNxAd1Bj.js} +1 -1
- package/dist-cli-web/assets/{semantic-index-config-builder-D3TYVYC-.js → semantic-index-config-builder-CQ27G4TK.js} +1 -1
- package/dist-cli-web/assets/{service-CppETV4a.js → service-BwbGKwDn.js} +1 -1
- package/dist-cli-web/assets/service-DQjyjQZx.js +1 -0
- package/dist-cli-web/assets/service-Dtve_40X.js +1 -0
- package/dist-cli-web/assets/useFormControl-CNmp_2bd.js +1 -0
- package/dist-cli-web/assets/{ActionToolsPanel.vue_vue_type_script_setup_true_lang-IB1yZxCE.js → useInsightTabAnalytics-DaU_ADbQ.js} +8 -8
- package/dist-cli-web/assets/{useTable-Clk7ecq-.js → useTable-BYXxnZMd.js} +1 -1
- package/dist-cli-web/assets/{useToast-B5LaA6c-.js → useToast-DPkgv34s.js} +1 -1
- package/dist-cli-web/assets/{webworkerAll-CyA4b4LT.js → webworkerAll-Um4PrCaA.js} +1 -1
- package/dist-cli-web/index.html +1 -1
- package/package.json +1 -1
- package/dist/chat-command-YAFRLHMQ.mjs.map +0 -1
- package/dist/chunk-73TJ2S7W.mjs.map +0 -1
- package/dist/chunk-ARIBCH47.mjs.map +0 -1
- package/dist/chunk-JWJREWVN.mjs.map +0 -1
- package/dist/chunk-OTYNMDDL.mjs.map +0 -1
- package/dist/chunk-UP6JIV3S.mjs.map +0 -1
- package/dist/mcp-SMF3NWIN.mjs.map +0 -1
- package/dist-cli-web/assets/SectionTabs.vue_vue_type_script_setup_true_lang-qFhJO5B0.js +0 -1
- package/dist-cli-web/assets/aiChat--CR4g2M7.js +0 -8
- package/dist-cli-web/assets/index-CIIyg_o9.css +0 -1
- package/dist-cli-web/assets/index-CaYtkONV.js +0 -64
- package/dist-cli-web/assets/index-D3Hyjv4e.js +0 -137
- package/dist-cli-web/assets/index-R4LqAnx9.js +0 -2
- package/dist-cli-web/assets/service-BYOUkk7V.js +0 -1
- package/dist-cli-web/assets/service-tEx-5LUL.js +0 -1
- package/dist-cli-web/assets/useFormControl-CrWi_6Hn.js +0 -1
- /package/dist/{chunk-FPVRSXQ4.mjs.map → chunk-4FAEB4C2.mjs.map} +0 -0
- /package/dist/{chunk-MMTEGUQA.mjs.map → chunk-5OA4QI3Q.mjs.map} +0 -0
- /package/dist/{chunk-PDQV4RUA.mjs.map → chunk-GDKQKHJT.mjs.map} +0 -0
- /package/dist/{chunk-GKCIRKOH.mjs.map → chunk-HJWBFHNR.mjs.map} +0 -0
- /package/dist/{chunk-2PY4XCH3.mjs.map → chunk-IMJVOODY.mjs.map} +0 -0
- /package/dist/{chunk-WDLO7OLX.mjs.map → chunk-O57SQSCO.mjs.map} +0 -0
- /package/dist/{chunk-N4SB6QZV.mjs.map → chunk-ZGXXAPLX.mjs.map} +0 -0
- /package/dist/{http-LPFPVTBC.mjs.map → http-QJDZKDNJ.mjs.map} +0 -0
- /package/dist/{import-T4WX2ZJL.mjs.map → import-XK6YM26A.mjs.map} +0 -0
- /package/dist/{src-EGLLMTAU.mjs.map → src-4AHJUFCW.mjs.map} +0 -0
- /package/dist/{stream-import-2BXJTTCE.mjs.map → stream-import-7VQVT5ST.mjs.map} +0 -0
- /package/dist/{worker-runtime-RDLSPXFT.mjs.map → worker-runtime-PQBAV75N.mjs.map} +0 -0
- /package/dist-cli-web/assets/{ActionToolsPanel-DDNXXH8v.css → useInsightTabAnalytics-DDNXXH8v.css} +0 -0
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/service-
|
|
2
|
-
import{bm as Nt,aS as it,d as le,aO as Mt,v as xt,b$ as Ks,bw as va,aP as ht,K as pe,o as d,f as B,w as D,r as ve,g as e,l as V,C as Re,P as Be,ag as At,b as A,ck as Ot,A as Hs,ch as Ys,cm as Qs,dH as Ha,z as f,aQ as Ze,aR as Oe,dI as Gs,x as De,y as Je,e as q,s as pt,m as Ae,u as Ke,dJ as Js,c7 as Xs,dK as Zs,G as eo,dL as Ea,ar as ha,dM as to,dN as ao,c8 as Ya,dO as so,c as p,F as ne,j as he,k as Qa,O as et,dP as oo,be as Ga,bV as no,cB as lo,ca as io,bZ as ro,bY as uo,b_ as co,bW as mo,c1 as Ja,c2 as po,bX as go,a$ as mt,c4 as fo,c5 as vo,bn as ho,a9 as ee,p as c,b0 as St,c9 as yo,dQ as xo,dR as bo,aH as Fe,dS as da,aI as Ve,bt as ya,L as Pe,bR as Xa,a,n as Z,_ as _o,E as ko,al as xa,H as wo,ah as gt,a6 as Ce,ac as Qt,bD as dt,as as Za,a0 as ca,at as Co,aT as es,aU as ts,aY as $o,aV as as,bB as ss,dT as Va,cb as Bt,a7 as Se,au as ma,cc as So,a8 as Ne,b1 as Io,aq as qt,a3 as jt,av as os,bC as ns,cd as Fa,ce as Ct,aM as ls,cf as To,aw as Ut,dU as Mo,cg as Ao,aa as Xe,J as zt,aA as bt,bT as ba,aK as tt,aL as Wt,cE as qo,aF as ot,aE as It,aD as is,ab as Gt,cr as zo,aG as Do,cu as yt,dV as Vt,ay as Lo,bh as Jt,M as ut,bs as rs,h as Eo,S as Ra,V as Vo,t as Fo,ap as Ro,bg as Oo,a1 as Bo,aN as Po,a5 as No,co as jo,ct as Oa}from"./index-B1oj9KDv.js";import{L as Uo,i as Wo,_ as Tt,u as Ko}from"./LoadingState.vue_vue_type_script_setup_true_lang-BBcCt_Qm.js";import{_ as _a}from"./SectionTabs.vue_vue_type_script_setup_true_lang-qFhJO5B0.js";import{_ as Kt,M as Ho}from"./index-4DVZ2g0M.js";import{_ as rt}from"./ThemeCard.vue_vue_type_script_setup_true_lang-D2outEOV.js";import{T as ct}from"./Tabs-DqWTBV8x.js";import{_ as ka}from"./Select-B5oJc5y1.js";import{_ as wa}from"./Checkbox-_eH64bb0.js";import{u as _t}from"./useToast-B5LaA6c-.js";import{u as us}from"./prompt-C-ofJ7t_.js";import{useCacheService as Yo}from"./service-CppETV4a.js";import{u as Qo,b as ds,c as Dt,a as Xt}from"./aiChat--CR4g2M7.js";import{a as Go,s as Jo,f as Xo}from"./ChatRecordWorkspace-7prKd-Tq.js";import{j as Zo,k as en,_ as tn,u as an,a as sn,c as on,b as nn,d as oa,e as ln,f as rn,g as un,h as dn,i as cn,l as mn}from"./chatMessages-Bd33SSXI.js";import{_ as vt}from"./EChartBar.vue_vue_type_script_setup_true_lang-DKNCZuFm.js";import"./vendor-echarts-wordcloud-DNiU8Psq.js";import{g as pa}from"./base-F6s0vTrr.js";import{u as Zt,o as cs,y as ms,q as Ca,v as ps,j as ea,i as ta,k as pn,m as gn,t as fn,z as vn}from"./vendor-echarts-C9ugTmum.js";import{_ as hn}from"./EChart.vue_vue_type_script_setup_true_lang-DubnuUXI.js";import{a as gs}from"./Tabs-BMq9wODW.js";import{u as fs}from"./useFormControl-CrWi_6Hn.js";import{V as vs}from"./VisuallyHiddenInput-BAFpkxMI.js";import{u as $a,a as yn,i as xn}from"./semantic-index-config-builder-D3TYVYC-.js";import{c as bn,d as Ba,_ as _n}from"./TimeSelect.vue_vue_type_script_setup_true_lang-BcflxP_U.js";import{C as kn}from"./CardDecoration-RuBA3N2j.js";import{_ as wn}from"./EChartLine.vue_vue_type_script_setup_true_lang-Fl7xAOSR.js";import{_ as Cn,u as $n,a as Sn}from"./useTable-Clk7ecq-.js";import{P as In}from"./PageHeader-CKeZjNNR.js";import{_ as Tn}from"./PageTabs.vue_vue_type_script_setup_true_lang-C8M3wNNH.js";import{_ as Mn}from"./Alert-510jTN3l.js";import{_ as An}from"./FileDropZone.vue_vue_type_script_setup_true_lang-DYDdRSNE.js";function Pt(u,n,t){const o=u.findIndex(r=>Nt(r,n)),s=u.findIndex(r=>Nt(r,t));if(o===-1||s===-1)return[];const[i,l]=[o,s].sort((r,m)=>r-m);return u.slice(i,l+1)}function Pa(u){return u?.querySelector("[data-state=checked]")}function qn(u,n,t){return u===void 0?!1:Array.isArray(u)?u.some(o=>lt(o,n,t)):lt(u,n,t)}function lt(u,n,t){return u===void 0||n===void 0?!1:typeof u=="string"?u===n:typeof t=="function"?t(u,n):typeof t=="string"?u?.[t]===n?.[t]:Nt(u,n)}const[Lt,zn]=it("ListboxRoot");var Dn=le({__name:"ListboxRoot",props:{modelValue:{type:null,required:!1},defaultValue:{type:null,required:!1},multiple:{type:Boolean,required:!1},orientation:{type:String,required:!1,default:"vertical"},dir:{type:String,required:!1},disabled:{type:Boolean,required:!1},selectionBehavior:{type:String,required:!1,default:"toggle"},highlightOnHover:{type:Boolean,required:!1},by:{type:[String,Function],required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},name:{type:String,required:!1},required:{type:Boolean,required:!1}},emits:["update:modelValue","highlight","entryFocus","leave"],setup(u,{expose:n,emit:t}){const o=u,s=t,{multiple:i,highlightOnHover:l,orientation:r,disabled:m,selectionBehavior:x,dir:h}=Mt(o),{getItems:S}=xt({isProvider:!0}),{handleTypeaheadSearch:y}=Ks(),{primitiveElement:I,currentElement:w}=At(),v=Qs(),_=va(h),k=fs(w),C=A(),$=A(!1),g=A(!0),b=ht(o,"modelValue",s,{defaultValue:o.defaultValue??(i.value?[]:void 0),passive:o.modelValue===void 0,deep:!0});function F(te){if($.value=!0,o.multiple){const K=Array.isArray(b.value)?[...b.value]:[],j=K.findIndex(de=>lt(de,te,o.by));o.selectionBehavior==="toggle"?(j===-1?K.push(te):K.splice(j,1),b.value=K):(b.value=[te],C.value=te)}else o.selectionBehavior==="toggle"&<(b.value,te,o.by)?b.value=void 0:b.value=te;setTimeout(()=>{$.value=!1},1)}const E=A(null),z=A(null),T=A(!1),M=A(!1),L=Ot(),N=Ot(),U=Ot();function H(){return S().map(te=>te.ref).filter(te=>te.dataset.disabled!=="")}function ie(te,K=!0,j){if(!te)return;E.value=te,(j??g.value)&&E.value.focus(),K&&E.value.scrollIntoView({block:"nearest"});const de=S().find(be=>be.ref===te);s("highlight",de)}function se(te){if(T.value)U.trigger(te);else{const K=S().find(j=>lt(j.value,te,o.by));K&&(E.value=K.ref,ie(K.ref))}}function P(te){E.value&&E.value.isConnected&&(te.preventDefault(),te.stopPropagation(),M.value||E.value.click())}function R(te){if(g.value){if($.value=!0,T.value)N.trigger(te);else{const K=te.altKey||te.ctrlKey||te.metaKey;if(K&&te.key==="a"&&i.value){const j=S(),de=j.map(ke=>ke.value);b.value=[...de],te.preventDefault();const be=j.at(-1);be&&ie(be.ref)}else if(!K){const j=y(te.key,S());j&&ie(j)}}setTimeout(()=>{$.value=!1},1)}}function J(){M.value=!0}function fe(){Re(()=>{M.value=!1})}function X(){Re(()=>{const te=new KeyboardEvent("keydown",{key:"PageUp"});O(te)})}function W(te){const K=E.value;K?.isConnected&&(z.value=K),E.value=null,s("leave",te)}function ae(te){const K=new CustomEvent("listbox.entryFocus",{bubbles:!1,cancelable:!0});if(te.currentTarget?.dispatchEvent(K),s("entryFocus",K),!K.defaultPrevented)if(z.value)ie(z.value);else{const j=H()?.[0];ie(j)}}function O(te){const K=Hs(te,r.value,_.value);if(!K)return;let j=H();if(E.value){if(K==="last")j.reverse();else if(K==="prev"||K==="next"){K==="prev"&&j.reverse();const de=j.indexOf(E.value);j=j.slice(de+1)}ue(te,j[0])}if(j.length){const de=!E.value&&K==="prev"?j.length-1:0;ie(j[de])}if(T.value)return N.trigger(te)}function ue(te,K){if(!(T.value||o.selectionBehavior!=="replace"||!i.value||!Array.isArray(b.value)||(te.altKey||te.ctrlKey||te.metaKey)&&!te.shiftKey)&&te.shiftKey){const de=S().filter(ze=>ze.ref.dataset.disabled!=="");let be=de.find(ze=>ze.ref===K)?.value;if(te.key===v.END?be=de.at(-1)?.value:te.key===v.HOME&&(be=de[0]?.value),!be||!C.value)return;const ke=Pt(de.map(ze=>ze.value),C.value,be);b.value=ke}}async function we(te,K=!0){if(Ys)if(await Re(),T.value)L.trigger({event:te,scroll:K});else{const j=H(),de=j.find(ke=>ke.dataset.state==="checked"),be=K?void 0:!1;de?ie(de,K,be):j.length&&ie(j[0],K,be)}}let xe=!1;return pe(b,()=>{if(!$.value){const te=xe;xe=!0,Re(()=>{we(void 0,te)})}},{immediate:!0,deep:!0}),n({highlightedElement:E,highlightItem:se,highlightFirstItem:X,highlightSelected:we,getItems:S}),zn({modelValue:b,onValueChange:F,multiple:i,orientation:r,dir:_,disabled:m,highlightOnHover:l,highlightedElement:E,isVirtual:T,virtualFocusHook:L,virtualKeydownHook:N,virtualHighlightHook:U,by:o.by,firstValue:C,selectionBehavior:x,focusable:g,onLeave:W,onEnter:ae,changeHighlight:ie,onKeydownEnter:P,onKeydownNavigation:O,onKeydownTypeAhead:R,onCompositionStart:J,onCompositionEnd:fe,highlightFirstItem:X}),(te,K)=>(d(),B(e(Be),{ref_key:"primitiveElement",ref:I,as:te.as,"as-child":te.asChild,dir:e(_),"data-disabled":e(m)?"":void 0,onPointerleave:W,onFocusout:K[0]||(K[0]=async j=>{const de=j.relatedTarget||j.target;await Re(),E.value&&e(w)&&!e(w).contains(de)&&W(j)})},{default:D(()=>[ve(te.$slots,"default",{modelValue:e(b)}),e(k)&&te.name?(d(),B(e(vs),{key:0,name:te.name,value:e(b),disabled:e(m),required:te.required},null,8,["name","value","disabled","required"])):V("v-if",!0)]),_:3},8,["as","as-child","dir","data-disabled"]))}}),Ln=Dn,En=le({__name:"ListboxContent",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(u){const{CollectionSlot:n}=xt(),t=Lt(),o=Ha(!1,10);return(s,i)=>(d(),B(e(n),null,{default:D(()=>[f(e(Be),{role:"listbox",as:s.as,"as-child":s.asChild,tabindex:e(t).focusable.value?e(t).highlightedElement.value?"-1":"0":"-1","aria-orientation":e(t).orientation.value,"aria-multiselectable":!!e(t).multiple.value,"data-orientation":e(t).orientation.value,onMousedown:i[0]||(i[0]=Oe(l=>o.value=!0,["left"])),onFocus:i[1]||(i[1]=l=>{e(o)||e(t).onEnter(l)}),onKeydown:[i[2]||(i[2]=Ze(l=>{e(t).orientation.value==="vertical"&&(l.key==="ArrowLeft"||l.key==="ArrowRight")||e(t).orientation.value==="horizontal"&&(l.key==="ArrowUp"||l.key==="ArrowDown")||(l.preventDefault(),e(t).focusable.value&&e(t).onKeydownNavigation(l))},["down","up","left","right","home","end"])),Ze(e(t).onKeydownEnter,["enter"]),e(t).onKeydownTypeAhead]},{default:D(()=>[ve(s.$slots,"default")]),_:3},8,["as","as-child","tabindex","aria-orientation","aria-multiselectable","data-orientation","onKeydown"])]),_:3}))}}),Vn=En,Fn=le({__name:"ListboxFilter",props:{modelValue:{type:String,required:!1},autoFocus:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"input"}},emits:["update:modelValue"],setup(u,{emit:n}){const t=u,s=ht(t,"modelValue",n,{defaultValue:"",passive:t.modelValue===void 0}),i=Lt(),{primitiveElement:l,currentElement:r}=At(),m=q(()=>t.disabled||i.disabled.value||!1),x=A();Gs(()=>x.value=i.highlightedElement.value?.id),De(()=>{i.focusable.value=!1,setTimeout(()=>{t.autoFocus&&r.value?.focus()},1)}),Je(()=>{i.focusable.value=!0});const{isComposing:h,handleCompositionStart:S,handleCompositionEnd:y}=$a(k=>{s.value=k.target.value,i.onCompositionEnd(),i.highlightFirstItem()});function I(){i.onCompositionStart(),S()}function w(k){h.value||(s.value=k.target.value,i.highlightFirstItem())}function v(k){h.value||(k.preventDefault(),i.onKeydownNavigation(k))}function _(k){h.value||i.onKeydownEnter(k)}return(k,C)=>(d(),B(e(Be),{ref_key:"primitiveElement",ref:l,as:k.as,"as-child":k.asChild,value:e(s),disabled:m.value?"":void 0,"data-disabled":m.value?"":void 0,"aria-disabled":m.value??void 0,"aria-activedescendant":x.value,type:"text",onKeydown:[Ze(v,["down","up","home","end"]),Ze(_,["enter"])],onInput:w,onCompositionstart:I,onCompositionend:e(y)},{default:D(()=>[ve(k.$slots,"default",{modelValue:e(s)})]),_:3},8,["as","as-child","value","disabled","data-disabled","aria-disabled","aria-activedescendant","onCompositionend"]))}}),Rn=Fn;const[Ob,On]=it("ListboxGroup");var Bn=le({__name:"ListboxGroup",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(u){const n=u,t=pt(void 0,"reka-listbox-group");return On({id:t}),(o,s)=>(d(),B(e(Be),Ae({role:"group"},n,{"aria-labelledby":e(t)}),{default:D(()=>[ve(o.$slots,"default")]),_:3},16,["aria-labelledby"]))}}),Pn=Bn;const Nn="listbox.select",[jn,Un]=it("ListboxItem");var Wn=le({__name:"ListboxItem",props:{value:{type:null,required:!0},disabled:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"div"}},emits:["select"],setup(u,{emit:n}){const t=u,o=n,s=pt(void 0,"reka-listbox-item"),{CollectionItem:i}=xt(),{forwardRef:l,currentElement:r}=Ke(),m=Lt(),x=q(()=>r.value!=null&&r.value===m.highlightedElement.value),h=q(()=>qn(m.modelValue.value,t.value,m.by)),S=q(()=>m.disabled.value||t.disabled);async function y(w){o("select",w),!w?.defaultPrevented&&!S.value&&w&&(m.onValueChange(t.value),m.changeHighlight(r.value))}function I(w){const v={originalEvent:w,value:t.value};Xs(Nn,y,v)}return Un({isSelected:h}),(w,v)=>(d(),B(e(i),{value:w.value},{default:D(()=>[Js([x.value,h.value,S.value,e(m).focusable.value],()=>f(e(Be),Ae({id:e(s)},w.$attrs,{ref:e(l),role:"option",tabindex:e(m).focusable.value?x.value?"0":"-1":-1,"aria-selected":h.value,as:w.as,"as-child":w.asChild,disabled:S.value?"":void 0,"data-disabled":S.value?"":void 0,"data-highlighted":x.value?"":void 0,"data-state":h.value?"checked":"unchecked",onClick:I,onKeydown:Ze(Oe(I,["prevent"]),["space"]),onPointermove:v[0]||(v[0]=()=>{e(m).highlightedElement.value!==e(r)&&e(m).highlightOnHover.value&&e(m).changeHighlight(e(r),!1,!1)})}),{default:D(()=>[ve(w.$slots,"default")]),_:3},16,["id","tabindex","aria-selected","as","as-child","disabled","data-disabled","data-highlighted","data-state","onKeydown"]),v,1)]),_:3},8,["value"]))}}),Kn=Wn,Hn=le({__name:"ListboxItemIndicator",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"span"}},setup(u){const n=u;Ke();const t=jn();return(o,s)=>e(t).isSelected.value?(d(),B(e(Be),Ae({key:0,"aria-hidden":"true"},n),{default:D(()=>[ve(o.$slots,"default")]),_:3},16)):V("v-if",!0)}}),Yn=Hn;function Qn(u,n,t){const o=new Array(u);return new Proxy(o,{get(s,i,l){if(typeof i=="string"){const r=i.charCodeAt(0);if(r>=48&&r<=57){const m=+i;if(Number.isInteger(m)&&m>=0&&m<u){let x=s[m];if(!x){const h=n[m*2];x=s[m]={index:m,key:t(m),start:h,size:n[m*2+1],end:h+n[m*2+1],lane:0}}return x}}if(i==="length")return u}return Reflect.get(s,i,l)}})}function ft(u,n,t){let o=t.initialDeps??[],s,i=!0;function l(){const r=u();return(r.length!==o.length||r.some((x,h)=>o[h]!==x))&&(o=r,s=n(...r),t?.onChange&&!(i&&t.skipInitialOnChange)&&t.onChange(s),i=!1),s}return l.updateDeps=r=>{o=r},l}function Na(u,n){if(u===void 0)throw new Error("Unexpected undefined");return u}const Gn=(u,n)=>Math.abs(u-n)<1.01,Jn=(u,n,t)=>{let o;return function(...s){u.clearTimeout(o),o=u.setTimeout(()=>n.apply(this,s),t)}};let $t;const na=()=>{if($t!==void 0)return $t;if(typeof navigator>"u")return $t=!1;if(/iP(hone|od|ad)/.test(navigator.userAgent))return $t=!0;const u=navigator.maxTouchPoints;return $t=navigator.platform==="MacIntel"&&u!==void 0&&u>0},ja=u=>{const{offsetWidth:n,offsetHeight:t}=u;return{width:n,height:t}},Xn=u=>u,Zn=u=>{const n=Math.max(u.startIndex-u.overscan,0),o=Math.min(u.endIndex+u.overscan,u.count-1)-n+1,s=new Array(o);for(let i=0;i<o;i++)s[i]=n+i;return s},el=(u,n)=>{const t=u.scrollElement;if(!t)return;const o=u.targetWindow;if(!o)return;const s=l=>{const{width:r,height:m}=l;n({width:Math.round(r),height:Math.round(m)})};if(s(ja(t)),!o.ResizeObserver)return()=>{};const i=new o.ResizeObserver(l=>{const r=()=>{const m=l[0];if(m?.borderBoxSize){const x=m.borderBoxSize[0];if(x){s({width:x.inlineSize,height:x.blockSize});return}}s(ja(t))};u.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(r):r()});return i.observe(t,{box:"border-box"}),()=>{i.unobserve(t)}},Ht={passive:!0},tl=typeof window>"u"?!0:"onscrollend"in window,al=(u,n,t)=>{const o=u.scrollElement;if(!o)return;const s=u.targetWindow;if(!s)return;const i=u.options.useScrollendEvent&&tl;let l=0;const r=i?null:Jn(s,()=>n(l,!1),u.options.isScrollingResetDelay),m=S=>()=>{l=t(o),r?.(),n(l,S)},x=m(!0),h=m(!1);return o.addEventListener("scroll",x,Ht),i&&o.addEventListener("scrollend",h,Ht),()=>{o.removeEventListener("scroll",x),i&&o.removeEventListener("scrollend",h)}},sl=(u,n)=>al(u,n,t=>{const{horizontal:o,isRtl:s}=u.options;return o?t.scrollLeft*(s&&-1||1):t.scrollTop}),ol=(u,n,t)=>{if(t.options.useCachedMeasurements){const o=t.indexFromElement(u),s=t.options.getItemKey(o);return t.itemSizeCache.get(s)??t.options.estimateSize(o)}if(n?.borderBoxSize){const o=n.borderBoxSize[0];if(o)return Math.round(o[t.options.horizontal?"inlineSize":"blockSize"])}if(!n){const o=t.indexFromElement(u),s=t.options.getItemKey(o),i=t.itemSizeCache.get(s);if(i!==void 0)return i}return u[t.options.horizontal?"offsetWidth":"offsetHeight"]},nl=(u,{adjustments:n=0,behavior:t},o)=>{var s,i;(i=(s=o.scrollElement)==null?void 0:s.scrollTo)==null||i.call(s,{[o.options.horizontal?"left":"top"]:u+n,behavior:t})},ll=nl;class il{constructor(n){this.unsubs=[],this.scrollElement=null,this.targetWindow=null,this.isScrolling=!1,this.scrollState=null,this.measurementsCache=[],this._flatMeasurements=null,this.itemSizeCache=new Map,this.itemSizeCacheVersion=0,this.laneAssignments=new Map,this.pendingMin=null,this.prevLanes=void 0,this.lanesChangedFlag=!1,this.lanesSettling=!1,this.pendingScrollAnchor=null,this.scrollRect=null,this.scrollOffset=null,this.scrollDirection=null,this.scrollAdjustments=0,this._iosDeferredAdjustment=0,this._iosTouching=!1,this._iosJustTouchEnded=!1,this._iosTouchEndTimerId=null,this._intendedScrollOffset=null,this.elementsCache=new Map,this.now=()=>{var t,o,s;return((s=(o=(t=this.targetWindow)==null?void 0:t.performance)==null?void 0:o.now)==null?void 0:s.call(o))??Date.now()},this.observer=(()=>{let t=null;const o=()=>t||(!this.targetWindow||!this.targetWindow.ResizeObserver?null:t=new this.targetWindow.ResizeObserver(s=>{s.forEach(i=>{const l=()=>{const r=i.target,m=this.indexFromElement(r);if(!r.isConnected){this.observer.unobserve(r);for(const[x,h]of this.elementsCache)if(h===r){this.elementsCache.delete(x);break}return}this.shouldMeasureDuringScroll(m)&&this.resizeItem(m,this.options.measureElement(r,i,this))};this.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(l):l()})}));return{disconnect:()=>{var s;(s=o())==null||s.disconnect(),t=null},observe:s=>{var i;return(i=o())==null?void 0:i.observe(s,{box:"border-box"})},unobserve:s=>{var i;return(i=o())==null?void 0:i.unobserve(s)}}})(),this.range=null,this.setOptions=t=>{var o,s;const i={debug:!1,initialOffset:0,overscan:1,paddingStart:0,paddingEnd:0,scrollPaddingStart:0,scrollPaddingEnd:0,horizontal:!1,getItemKey:Xn,rangeExtractor:Zn,onChange:()=>{},measureElement:ol,initialRect:{width:0,height:0},scrollMargin:0,gap:0,indexAttribute:"data-index",initialMeasurementsCache:[],lanes:1,anchorTo:"start",followOnAppend:!1,scrollEndThreshold:1,isScrollingResetDelay:150,enabled:!0,isRtl:!1,useScrollendEvent:!1,useAnimationFrameWithResizeObserver:!1,laneAssignmentMode:"estimate",useCachedMeasurements:!1};for(const y in t){const I=t[y];I!==void 0&&(i[y]=I)}const l=this.options;let r=null,m=null,x=!1;if(l!==void 0&&l.enabled&&i.enabled&&i.anchorTo==="end"&&this.scrollElement!==null){const y=l.count,I=i.count,w=this.getMeasurements(),v=y>0?((o=w[0])==null?void 0:o.key)??l.getItemKey(0):null,_=y>0?((s=w[y-1])==null?void 0:s.key)??l.getItemKey(y-1):null;if(I!==y||y>0&&I>0&&(i.getItemKey(0)!==v||i.getItemKey(I-1)!==_)){x=!0;const $=y>0?this.getVirtualItemForOffset(this.getScrollOffset())??w[0]:null;$&&(r=[$.key,this.getScrollOffset()-$.start]);const g=i.followOnAppend===!0?"auto":i.followOnAppend||null;g&&I>y&&this.isAtEnd(l.scrollEndThreshold)&&(y===0||i.getItemKey(I-1)!==_)&&(m=g)}}this.options=i,x&&(this.pendingMin=0,this.itemSizeCacheVersion++);let h=!1,S=0;if(r&&this.scrollOffset!==null){const[y,I]=r,w=this.getMeasurements(),{count:v,getItemKey:_}=this.options;let k=0;for(;k<v&&_(k)!==y;)k++;if(k<v){const C=w[k];if(C){const $=C.start+I;$!==this.scrollOffset&&(S=$-this.scrollOffset,this.scrollOffset=$,h=!0)}}}(h||m)&&(this.pendingScrollAnchor=[h?r[0]:null,h?r[1]:0,m,S])},this.notify=t=>{var o,s;(s=(o=this.options).onChange)==null||s.call(o,this,t)},this.maybeNotify=ft(()=>(this.calculateRange(),[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]),t=>{this.notify(t)},{key:!1,debug:()=>this.options.debug,initialDeps:[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]}),this.cleanup=()=>{this.unsubs.filter(Boolean).forEach(t=>t()),this.unsubs=[],this.observer.disconnect(),this.rafId!=null&&this.targetWindow&&(this.targetWindow.cancelAnimationFrame(this.rafId),this.rafId=null),this.scrollState=null,this._iosDeferredAdjustment=0,this._iosTouching=!1,this._iosJustTouchEnded=!1,this.scrollElement=null,this.targetWindow=null},this._didMount=()=>()=>{this.cleanup()},this._willUpdate=()=>{var t;const o=this.options.enabled?this.options.getScrollElement():null;if(this.scrollElement!==o){if(this.cleanup(),!o){this.maybeNotify();return}if(this.scrollElement=o,this.scrollElement&&"ownerDocument"in this.scrollElement?this.targetWindow=this.scrollElement.ownerDocument.defaultView:this.targetWindow=((t=this.scrollElement)==null?void 0:t.window)??null,this.elementsCache.forEach(i=>{this.observer.observe(i)}),this.unsubs.push(this.options.observeElementRect(this,i=>{this.scrollRect=i,this.maybeNotify()})),this.unsubs.push(this.options.observeElementOffset(this,(i,l)=>{if(l&&this._intendedScrollOffset===null&&i===this.scrollOffset)return;this._intendedScrollOffset!==null&&Math.abs(i-this._intendedScrollOffset)<1.5&&(i=this._intendedScrollOffset),this._intendedScrollOffset=null,this.scrollAdjustments=0;const r=this.getScrollOffset();this.scrollDirection=l?r===i?this.scrollDirection:r<i?"forward":"backward":null,this.scrollOffset=i,this.isScrolling=l,this._flushIosDeferredIfReady(),this.scrollState&&this.scheduleScrollReconcile(),this.maybeNotify()})),"addEventListener"in this.scrollElement){const i=this.scrollElement,l=()=>{this._iosTouching=!0,this._iosJustTouchEnded=!1,this._iosTouchEndTimerId!==null&&this.targetWindow!=null&&(this.targetWindow.clearTimeout(this._iosTouchEndTimerId),this._iosTouchEndTimerId=null)},r=()=>{this._iosTouching=!1,!(!na()||this.targetWindow==null)&&(this._iosJustTouchEnded=!0,this._iosTouchEndTimerId=this.targetWindow.setTimeout(()=>{this._iosJustTouchEnded=!1,this._iosTouchEndTimerId=null,this._flushIosDeferredIfReady()},150))};i.addEventListener("touchstart",l,Ht),i.addEventListener("touchend",r,Ht),this.unsubs.push(()=>{i.removeEventListener("touchstart",l),i.removeEventListener("touchend",r),this._iosTouchEndTimerId!==null&&this.targetWindow!=null&&(this.targetWindow.clearTimeout(this._iosTouchEndTimerId),this._iosTouchEndTimerId=null)})}this._scrollToOffset(this.getScrollOffset(),{adjustments:void 0,behavior:void 0})}const s=this.pendingScrollAnchor;if(this.pendingScrollAnchor=null,s&&this.scrollElement&&this.options.enabled){const[i,l,r,m]=s;i!==null&&!r&&(na()&&(this.isScrolling||this._iosTouching||this._iosJustTouchEnded)?m!==0&&(this._iosDeferredAdjustment+=m):this._scrollToOffset(this.getScrollOffset(),{adjustments:void 0,behavior:void 0})),r&&this.scrollToEnd({behavior:r})}},this._flushIosDeferredIfReady=()=>{if(this._iosDeferredAdjustment===0||this.isScrolling||this._iosTouching||this._iosJustTouchEnded)return;const t=this.getScrollOffset(),o=this.getMaxScrollOffset();if(t<0||t>o)return;const s=this._iosDeferredAdjustment;this._iosDeferredAdjustment=0,this._scrollToOffset(t,{adjustments:this.scrollAdjustments+=s,behavior:void 0})},this.rafId=null,this.getSize=()=>this.options.enabled?(this.scrollRect=this.scrollRect??this.options.initialRect,this.scrollRect[this.options.horizontal?"width":"height"]):(this.scrollRect=null,0),this.getScrollOffset=()=>this.options.enabled?(this.scrollOffset=this.scrollOffset??(typeof this.options.initialOffset=="function"?this.options.initialOffset():this.options.initialOffset),this.scrollOffset):(this.scrollOffset=null,0),this.getMeasurementOptions=ft(()=>[this.options.count,this.options.paddingStart,this.options.scrollMargin,this.options.getItemKey,this.options.enabled,this.options.lanes,this.options.laneAssignmentMode,this.options.gap],(t,o,s,i,l,r,m,x)=>(this.prevLanes!==void 0&&this.prevLanes!==r&&(this.lanesChangedFlag=!0),this.prevLanes=r,this.pendingMin=null,{count:t,paddingStart:o,scrollMargin:s,getItemKey:i,enabled:l,lanes:r,laneAssignmentMode:m,gap:x}),{key:!1}),this.getMeasurements=ft(()=>[this.getMeasurementOptions(),this.itemSizeCacheVersion],({count:t,paddingStart:o,scrollMargin:s,getItemKey:i,enabled:l,lanes:r,laneAssignmentMode:m,gap:x},h)=>{const S=this.itemSizeCache;if(!l)return this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),[];if(this.laneAssignments.size>t)for(const k of this.laneAssignments.keys())k>=t&&this.laneAssignments.delete(k);this.lanesChangedFlag&&(this.lanesChangedFlag=!1,this.lanesSettling=!0,this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),this.pendingMin=null),this.measurementsCache.length===0&&!this.lanesSettling&&(this.measurementsCache=this.options.initialMeasurementsCache,this.measurementsCache.forEach(k=>{this.itemSizeCache.set(k.key,k.size)}));const y=this.lanesSettling?0:this.pendingMin??0;if(this.pendingMin=null,this.lanesSettling&&this.measurementsCache.length===t&&(this.lanesSettling=!1),r===1){const k=t*2;let C=this._flatMeasurements;if(!C||C.length<k){const b=new Float64Array(k);C&&y>0&&b.set(C.subarray(0,y*2)),C=b,this._flatMeasurements=C}let $;if(y===0)$=o+s;else{const b=y-1;$=C[b*2]+C[b*2+1]+x}for(let b=y;b<t;b++){const F=i(b),E=S.get(F),z=typeof E=="number"?E:this.options.estimateSize(b);C[b*2]=$,C[b*2+1]=z,$+=z+x}const g=Qn(t,C,i);return this.measurementsCache=g,g}const I=this.measurementsCache.slice(0,y),w=new Array(r).fill(void 0),v=new Float64Array(r);let _=0;for(let k=0;k<y;k++){const C=I[k];C&&(w[C.lane]===void 0&&_++,w[C.lane]=k,v[C.lane]=C.end)}for(let k=y;k<t;k++){const C=i(k),$=this.laneAssignments.get(k);let g,b;const F=m==="estimate"||S.has(C);if($!==void 0&&this.options.lanes>1){g=$;const M=w[g],L=M!==void 0?I[M]:void 0;b=L?L.end+x:o+s}else if(_===r){let M=0,L=v[0],N=w[0];for(let U=1;U<r;U++){const H=v[U];(H<L||H===L&&w[U]<N)&&(M=U,L=H,N=w[U])}g=M,b=L+x,F&&this.laneAssignments.set(k,g)}else g=k%this.options.lanes,b=o+s,F&&this.laneAssignments.set(k,g);const E=S.get(C),z=typeof E=="number"?E:this.options.estimateSize(k),T=b+z;I[k]={index:k,start:b,size:z,end:T,key:C,lane:g},w[g]===void 0&&_++,w[g]=k,v[g]=T}return this.measurementsCache=I,I},{key:!1,debug:()=>this.options.debug}),this.calculateRange=ft(()=>[this.getMeasurements(),this.getSize(),this.getScrollOffset(),this.options.lanes],(t,o,s,i)=>t.length===0||o===0?(this.range=null,null):(this.range=ul(t,o,s,i,i===1&&this._flatMeasurements!=null?this._flatMeasurements:null),this.range),{key:!1,debug:()=>this.options.debug}),this.getVirtualIndexes=ft(()=>{let t=null,o=null;const s=this.calculateRange();return s&&(t=s.startIndex,o=s.endIndex),this.maybeNotify.updateDeps([this.isScrolling,t,o]),[this.options.rangeExtractor,this.options.overscan,this.options.count,t,o]},(t,o,s,i,l)=>i===null||l===null?[]:t({startIndex:i,endIndex:l,overscan:o,count:s}),{key:!1,debug:()=>this.options.debug}),this.indexFromElement=t=>{const o=this.options.indexAttribute,s=t.getAttribute(o);return s?parseInt(s,10):(console.warn(`Missing attribute name '${o}={index}' on measured element.`),-1)},this.shouldMeasureDuringScroll=t=>{var o;if(!this.scrollState||this.scrollState.behavior!=="smooth")return!0;const s=this.scrollState.index??((o=this.getVirtualItemForOffset(this.scrollState.lastTargetOffset))==null?void 0:o.index);if(s!==void 0&&this.range){const i=Math.max(this.options.overscan,Math.ceil((this.range.endIndex-this.range.startIndex)/2)),l=Math.max(0,s-i),r=Math.min(this.options.count-1,s+i);return t>=l&&t<=r}return!0},this.measureElement=t=>{if(!t){this.elementsCache.forEach((l,r)=>{l.isConnected||(this.observer.unobserve(l),this.elementsCache.delete(r))});return}const o=this.indexFromElement(t),s=this.options.getItemKey(o),i=this.elementsCache.get(s);i!==t&&(i&&this.observer.unobserve(i),this.observer.observe(t),this.elementsCache.set(s,t)),(!this.isScrolling||this.scrollState)&&this.shouldMeasureDuringScroll(o)&&this.resizeItem(o,this.options.measureElement(t,void 0,this))},this.resizeItem=(t,o)=>{var s,i;if(t<0||t>=this.options.count)return;let l,r,m;const x=this._flatMeasurements;if(this.options.lanes===1&&x!==null)m=this.options.getItemKey(t),r=x[t*2],l=x[t*2+1];else{const y=this.measurementsCache[t];if(!y)return;m=y.key,r=y.start,l=y.size}const h=this.itemSizeCache.get(m)??l,S=o-h;if(S!==0){const y=this.options.anchorTo==="end"&&((s=this.scrollState)==null?void 0:s.behavior)!=="smooth"&&this.getVirtualDistanceFromEnd()<=this.options.scrollEndThreshold,I=y?this.getTotalSize():0,w=((i=this.scrollState)==null?void 0:i.behavior)!=="smooth"&&(this.shouldAdjustScrollPositionOnItemSizeChange!==void 0?this.shouldAdjustScrollPositionOnItemSizeChange(this.measurementsCache[t]??{index:t,key:m,start:r,size:l,end:r+l,lane:0},S,this):r<this.getScrollOffset()+this.scrollAdjustments&&(!this.itemSizeCache.has(m)||this.scrollDirection!=="backward"));(this.pendingMin===null||t<this.pendingMin)&&(this.pendingMin=t),this.itemSizeCache.set(m,o),this.itemSizeCacheVersion++,y?this.applyScrollAdjustment(this.getTotalSize()-I):w&&this.applyScrollAdjustment(S),this.notify(!1)}},this.getVirtualItems=ft(()=>[this.getVirtualIndexes(),this.getMeasurements()],(t,o)=>{const s=[];for(let i=0,l=t.length;i<l;i++){const r=t[i],m=o[r];s.push(m)}return s},{key:!1,debug:()=>this.options.debug}),this.getVirtualItemForOffset=t=>{const o=this.getMeasurements();if(o.length===0)return;const s=this._flatMeasurements,i=this.options.lanes===1&&s!=null,l=hs(0,o.length-1,i?r=>s[r*2]:r=>Na(o[r]).start,t);return Na(o[l])},this.getMaxScrollOffset=()=>{if(!this.scrollElement)return 0;if("scrollHeight"in this.scrollElement)return this.options.horizontal?this.scrollElement.scrollWidth-this.scrollElement.clientWidth:this.scrollElement.scrollHeight-this.scrollElement.clientHeight;{const t=this.scrollElement.document.documentElement;return this.options.horizontal?t.scrollWidth-this.scrollElement.innerWidth:t.scrollHeight-this.scrollElement.innerHeight}},this.getVirtualDistanceFromEnd=()=>Math.max(this.getTotalSize()-this.getSize()-this.getScrollOffset(),0),this.getDistanceFromEnd=()=>Math.max(this.getMaxScrollOffset()-this.getScrollOffset(),0),this.isAtEnd=(t=this.options.scrollEndThreshold)=>this.getDistanceFromEnd()<=t,this.getOffsetForAlignment=(t,o,s=0)=>{if(!this.scrollElement)return 0;const i=this.getSize(),l=this.getScrollOffset();o==="auto"&&(o=t>=l+i?"end":"start"),o==="center"?t+=(s-i)/2:o==="end"&&(t-=i);const r=this.getMaxScrollOffset();return Math.max(Math.min(r,t),0)},this.getOffsetForIndex=(t,o="auto")=>{t=Math.max(0,Math.min(t,this.options.count-1));const s=this.getSize(),i=this.getScrollOffset(),l=this.measurementsCache[t];if(!l)return;if(o==="auto")if(l.end>=i+s-this.options.scrollPaddingEnd)o="end";else if(l.start<=i+this.options.scrollPaddingStart)o="start";else return[i,o];if(o==="end"&&t===this.options.count-1)return[this.getMaxScrollOffset(),o];const r=o==="end"?l.end+this.options.scrollPaddingEnd:l.start-this.options.scrollPaddingStart;return[this.getOffsetForAlignment(r,o,l.size),o]},this.scrollToOffset=(t,{align:o="start",behavior:s="auto"}={})=>{const i=this.getOffsetForAlignment(t,o),l=this.now();this.scrollState={index:null,align:o,behavior:s,startedAt:l,lastTargetOffset:i,stableFrames:0},this._scrollToOffset(i,{adjustments:void 0,behavior:s}),this.scheduleScrollReconcile()},this.scrollToIndex=(t,{align:o="auto",behavior:s="auto"}={})=>{t=Math.max(0,Math.min(t,this.options.count-1));const i=this.getOffsetForIndex(t,o);if(!i)return;const[l,r]=i,m=this.now();this.scrollState={index:t,align:r,behavior:s,startedAt:m,lastTargetOffset:l,stableFrames:0},this._scrollToOffset(l,{adjustments:void 0,behavior:s}),this.scheduleScrollReconcile()},this.scrollBy=(t,{behavior:o="auto"}={})=>{const s=this.getScrollOffset()+t,i=this.now();this.scrollState={index:null,align:"start",behavior:o,startedAt:i,lastTargetOffset:s,stableFrames:0},this._scrollToOffset(s,{adjustments:void 0,behavior:o}),this.scheduleScrollReconcile()},this.scrollToEnd=({behavior:t="auto"}={})=>{if(this.options.count>0){this.scrollToIndex(this.options.count-1,{align:"end",behavior:t});return}this.scrollToOffset(Math.max(this.getTotalSize()-this.getSize(),0),{behavior:t})},this.getTotalSize=()=>{var t;const o=this.getMeasurements();let s;if(o.length===0)s=this.options.paddingStart;else if(this.options.lanes===1){const i=o.length-1,l=this._flatMeasurements;l!=null?s=l[i*2]+l[i*2+1]:s=((t=o[i])==null?void 0:t.end)??0}else{const i=Array(this.options.lanes).fill(null);let l=o.length-1;for(;l>=0&&i.some(r=>r===null);){const r=o[l];i[r.lane]===null&&(i[r.lane]=r.end),l--}s=Math.max(...i.filter(r=>r!==null))}return Math.max(s-this.options.scrollMargin+this.options.paddingEnd,0)},this.takeSnapshot=()=>{const t=[];if(this.itemSizeCache.size===0)return t;const o=this.getMeasurements();for(const s of o)s&&this.itemSizeCache.has(s.key)&&t.push({index:s.index,key:s.key,start:s.start,size:s.size,end:s.end,lane:s.lane});return t},this._scrollToOffset=(t,{adjustments:o,behavior:s})=>{this._intendedScrollOffset=t+(o??0),this.options.scrollToFn(t,{behavior:s,adjustments:o},this)},this.measure=()=>{this.pendingMin=null,this.itemSizeCache.clear(),this.laneAssignments.clear(),this.itemSizeCacheVersion++,this.notify(!1)},this.setOptions(n)}applyScrollAdjustment(n,t){n!==0&&(na()&&(this.isScrolling||this._iosTouching||this._iosJustTouchEnded)?this._iosDeferredAdjustment+=n:(this._scrollToOffset(this.getScrollOffset(),{adjustments:this.scrollAdjustments+=n,behavior:t}),this.scrollOffset!==null&&(this.scrollOffset+=this.scrollAdjustments,this.scrollAdjustments=0)))}scheduleScrollReconcile(){if(!this.targetWindow){this.scrollState=null;return}this.rafId==null&&(this.rafId=this.targetWindow.requestAnimationFrame(()=>{this.rafId=null,this.reconcileScroll()}))}reconcileScroll(){if(!this.scrollState||!this.scrollElement)return;if(this.now()-this.scrollState.startedAt>5e3){this.scrollState=null;return}const o=this.scrollState.index!=null?this.getOffsetForIndex(this.scrollState.index,this.scrollState.align):void 0,s=o?o[0]:this.scrollState.lastTargetOffset,i=1,l=s!==this.scrollState.lastTargetOffset;if(!l&&Gn(s,this.getScrollOffset())){if(this.scrollState.stableFrames++,this.scrollState.stableFrames>=i){this.getScrollOffset()!==s&&this._scrollToOffset(s,{adjustments:void 0,behavior:"auto"}),this.scrollState=null;return}}else if(this.scrollState.stableFrames=0,l){const r=this.getSize()||600,m=Math.abs(s-this.getScrollOffset()),x=this.scrollState.behavior==="smooth"&&m>r;this.scrollState.lastTargetOffset=s,x||(this.scrollState.behavior="auto"),this._scrollToOffset(s,{adjustments:void 0,behavior:x?"smooth":"auto"})}this.scheduleScrollReconcile()}}const hs=(u,n,t,o)=>{for(;u<=n;){const s=(u+n)/2|0,i=t(s);if(i<o)u=s+1;else if(i>o)n=s-1;else return s}return u>0?u-1:0};function rl(u,n,t){let o=0;for(;o<=n;){const s=(o+n)/2|0,i=u[s*2];if(i<t)o=s+1;else if(i>t)n=s-1;else return s}return o>0?o-1:0}function ul(u,n,t,o,s){const i=u.length-1;if(u.length<=o)return{startIndex:0,endIndex:i};if(o===1&&s!==null){const x=rl(s,i,t);let h=x;const S=t+n;for(;h<i&&s[h*2]+s[h*2+1]<S;)h++;return{startIndex:x,endIndex:h}}let r=hs(0,i,x=>u[x].start,t),m=r;if(o===1)for(;m<i&&u[m].end<t+n;)m++;else if(o>1){const x=Array(o).fill(0);for(;m<i&&x.some(S=>S<t+n);){const S=u[m];x[S.lane]=S.end,m++}const h=Array(o).fill(t+n);for(;r>=0&&h.some(S=>S>=t);){const S=u[r];h[S.lane]=S.start,r--}r=Math.max(0,r-r%o),m=Math.min(i,m+(o-1-m%o))}return{startIndex:r,endIndex:m}}function dl(u){const n=new il(e(u)),t=eo(n),o=n._didMount();return pe(()=>e(u).getScrollElement(),s=>{s&&n._willUpdate()},{immediate:!0}),pe(()=>e(u),s=>{n.setOptions({...s,onChange:(i,l)=>{var r;Ea(t),(r=s.onChange)==null||r.call(s,i,l)}}),n._willUpdate(),Ea(t)},{immediate:!0}),Zs(o),t}function cl(u){return dl(q(()=>({observeElementRect:el,observeElementOffset:sl,scrollToFn:ll,...e(u)})))}var ml=le({__name:"ListboxVirtualizer",props:{options:{type:Array,required:!0},overscan:{type:Number,required:!1},estimateSize:{type:[Number,Function],required:!1},textContent:{type:Function,required:!1}},setup(u){const n=u,t=ha(),o=Lt(),s=to(),{getItems:i}=xt();o.isVirtual.value=!0;const l=q(()=>{const y=s.value;if(y){const I=window.getComputedStyle(y);return{start:Number.parseFloat(I.paddingBlockStart||I.paddingTop),end:Number.parseFloat(I.paddingBlockEnd||I.paddingBottom)}}else return{start:0,end:0}}),r=cl({get scrollPaddingStart(){return l.value.start},get scrollPaddingEnd(){return l.value.end},get count(){return n.options.length},get horizontal(){return o.orientation.value==="horizontal"},estimateSize(y){return typeof n.estimateSize=="function"?n.estimateSize(y):n.estimateSize??28},getScrollElement(){return s.value},overscan:n.overscan??12}),m=q(()=>r.value.getVirtualItems().map(y=>{const I=t.default({option:n.options[y.index],virtualizer:r.value,virtualItem:y})[0],w=I.type===ne&&Array.isArray(I.children)?I.children.find(v=>typeof v.type!="symbol"):I;return{item:y,is:oo(w,{key:`${y.key}`,"data-index":y.index,"aria-setsize":n.options.length,"aria-posinset":y.index+1,style:{position:"absolute",top:0,left:0,transform:`translateY(${y.start}px)`,overflowAnchor:"none"}})}}));o.virtualFocusHook.on(({event:y,scroll:I})=>{const w=n.options.findIndex(v=>Array.isArray(o.modelValue.value)?lt(v,o.modelValue.value[0],o.by):lt(v,o.modelValue.value,o.by));w!==-1?(y?.preventDefault(),r.value.scrollToIndex(w,{align:"start"}),requestAnimationFrame(()=>{const v=Pa(s.value);v&&(o.changeHighlight(v,I,I?void 0:!1),y&&v?.focus())})):I?o.highlightFirstItem():requestAnimationFrame(()=>{const v=i().find(_=>_.ref.dataset.disabled!=="")?.ref;v&&o.changeHighlight(v,!1,!1)})}),o.virtualHighlightHook.on(y=>{const I=n.options.findIndex(w=>lt(w,y,o.by));r.value.scrollToIndex(I,{align:"start"}),requestAnimationFrame(()=>{const w=Pa(s.value);w&&o.changeHighlight(w)})});const x=Ha("",1e3),h=q(()=>{const y=I=>n.textContent?n.textContent(I):I?.toString().toLowerCase();return n.options.map((I,w)=>({index:w,textContent:y(I)}))});function S(y,I){if(!o.firstValue?.value||!o.multiple.value||!Array.isArray(o.modelValue.value))return;const v=i().filter(k=>k.ref.dataset.disabled!=="").find(k=>k.ref===o.highlightedElement.value)?.value;if(!v)return;let _=null;switch(I){case"prev":case"next":{_=Pt(n.options,o.firstValue.value,v);break}case"first":{_=Pt(n.options,o.firstValue.value,n.options?.[0]);break}case"last":{_=Pt(n.options,o.firstValue.value,n.options.at(-1));break}}o.modelValue.value=_}return o.virtualKeydownHook.on(y=>{const I=y.altKey||y.ctrlKey||y.metaKey;if(y.key==="Tab"&&!I)return;let v=ao[y.key];if(I&&y.key==="a"&&o.multiple.value?(y.preventDefault(),o.modelValue.value=[...n.options],v="last"):y.shiftKey&&v&&S(y,v),["first","last"].includes(v)){y.preventDefault();const _=v==="first"?0:n.options.length-1;r.value.scrollToIndex(_),requestAnimationFrame(()=>{const k=i(),C=v==="first"?k[0]:k.at(-1);C&&o.changeHighlight(C.ref)})}else if(!v&&!I){x.value+=y.key;const _=Number(Ya()?.getAttribute("data-index")),k=h.value[_].textContent,C=h.value.map(b=>b.textContent??""),$=so(C,x.value,k),g=h.value.find(b=>b.textContent===$);g&&(r.value.scrollToIndex(g.index,{align:"start"}),requestAnimationFrame(()=>{const b=s.value.querySelector(`[data-index="${g.index}"]`);b instanceof HTMLElement&&o.changeHighlight(b)}))}}),(y,I)=>(d(),p("div",{"data-reka-virtualizer":"",style:et({position:"relative",width:"100%",height:`${e(r).getTotalSize()}px`})},[(d(!0),p(ne,null,he(m.value,({is:w,item:v})=>(d(),B(Qa(w),{key:v.index}))),128))],4))}}),pl=ml;const[at,gl]=it("ComboboxRoot");var fl=le({__name:"ComboboxRoot",props:{open:{type:Boolean,required:!1,default:void 0},defaultOpen:{type:Boolean,required:!1},resetSearchTermOnBlur:{type:Boolean,required:!1,default:!0},resetSearchTermOnSelect:{type:Boolean,required:!1,default:!0},openOnFocus:{type:Boolean,required:!1,default:!1},openOnClick:{type:Boolean,required:!1,default:!1},ignoreFilter:{type:Boolean,required:!1},resetModelValueOnClear:{type:Boolean,required:!1,default:!1},modelValue:{type:null,required:!1},defaultValue:{type:null,required:!1},multiple:{type:Boolean,required:!1},dir:{type:String,required:!1},disabled:{type:Boolean,required:!1},highlightOnHover:{type:Boolean,required:!1,default:!0},by:{type:[String,Function],required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},name:{type:String,required:!1},required:{type:Boolean,required:!1}},emits:["update:modelValue","highlight","update:open"],setup(u,{expose:n,emit:t}){const o=u,s=t,{primitiveElement:i,currentElement:l}=At(),{multiple:r,disabled:m,ignoreFilter:x,resetSearchTermOnSelect:h,openOnFocus:S,openOnClick:y,dir:I,resetModelValueOnClear:w,highlightOnHover:v}=Mt(o),_=va(I),k=ht(o,"modelValue",s,{defaultValue:o.defaultValue??(r.value?[]:void 0),passive:o.modelValue===void 0,deep:!0}),C=ht(o,"open",s,{defaultValue:o.defaultOpen,passive:o.open===void 0});async function $(se){C.value=se,U.value="",se?(await Re(),i.value?.highlightSelected(),b.value=!0,E.value?.focus()):(b.value=!1,setTimeout(()=>{!se&&o.resetSearchTermOnBlur&&g.trigger()},1))}const g=Ot(),b=A(!1),F=A(!1),E=A(),z=A(),T=q(()=>i.value?.highlightedElement??void 0),M=A(new Map),L=A(new Map),{contains:N}=Zo({sensitivity:"base"}),U=A(""),H=q(se=>{if(!U.value||o.ignoreFilter||F.value)return{count:M.value.size,items:se?.items??new Map,groups:se?.groups??new Set(L.value.keys())};let P=0;const R=new Map,J=new Set;for(const[fe,X]of M.value){const W=N(X,U.value);R.set(fe,W?1:0),W&&P++}for(const[fe,X]of L.value)for(const W of X)if(R.get(W)>0){J.add(fe);break}return{count:P,items:R,groups:J}}),ie=lo();return De(()=>{ie?.exposed&&(ie.exposed.highlightItem=i.value?.highlightItem,ie.exposed.highlightFirstItem=i.value?.highlightFirstItem,ie.exposed.highlightSelected=i.value?.highlightSelected)}),n({filtered:H,highlightedElement:T,highlightItem:i.value?.highlightItem,highlightFirstItem:i.value?.highlightFirstItem,highlightSelected:i.value?.highlightSelected}),gl({modelValue:k,multiple:r,disabled:m,open:C,onOpenChange:$,contentId:"",isUserInputted:b,isVirtual:F,inputElement:E,highlightedElement:T,onInputElementChange:se=>E.value=se,triggerElement:z,onTriggerElementChange:se=>z.value=se,parentElement:l,resetSearchTermOnSelect:h,onResetSearchTerm:g.on,allItems:M,allGroups:L,filterSearch:U,filterState:H,ignoreFilter:x,openOnFocus:S,openOnClick:y,resetModelValueOnClear:w}),(se,P)=>(d(),B(e(no),null,{default:D(()=>[f(e(Ln),Ae({ref_key:"primitiveElement",ref:i},se.$attrs,{modelValue:e(k),"onUpdate:modelValue":P[0]||(P[0]=R=>Ga(k)?k.value=R:null),style:{pointerEvents:e(C)?"auto":void 0},as:se.as,"as-child":se.asChild,dir:e(_),multiple:e(r),name:se.name,required:se.required,disabled:e(m),"highlight-on-hover":e(v),by:o.by,onHighlight:P[1]||(P[1]=R=>s("highlight",R))}),{default:D(()=>[ve(se.$slots,"default",{open:e(C),modelValue:e(k)})]),_:3},16,["modelValue","style","as","as-child","dir","multiple","name","required","disabled","highlight-on-hover","by"])]),_:3}))}}),vl=fl,hl=le({__name:"ComboboxAnchor",props:{reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(u){const{forwardRef:n}=Ke();return(t,o)=>(d(),B(e(io),{"as-child":"",reference:t.reference},{default:D(()=>[f(e(Be),Ae({ref:e(n),"as-child":t.asChild,as:t.as},t.$attrs),{default:D(()=>[ve(t.$slots,"default")]),_:3},16,["as-child","as"])]),_:3},8,["reference"]))}}),yl=hl;const[xl,bl]=it("ComboboxContent");var _l=le({__name:"ComboboxContentImpl",props:{position:{type:String,required:!1,default:"inline"},bodyLock:{type:Boolean,required:!1},hideWhenEmpty:{type:Boolean,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},hideShiftedArrow:{type:Boolean,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1}},emits:["escapeKeyDown","pointerDownOutside","focusOutside","interactOutside"],setup(u,{emit:n}){const t=u,o=n,{position:s}=Mt(t),i=at(),l=q(()=>i.ignoreFilter.value?i.allItems.value.size===0:i.filterState.value.count===0),{forwardRef:r,currentElement:m}=Ke();ro(t.bodyLock),uo(),co(i.parentElement);const x=q(()=>t.position==="popper"?t:{}),h=mo(x.value),S={boxSizing:"border-box","--reka-combobox-content-transform-origin":"var(--reka-popper-transform-origin)","--reka-combobox-content-available-width":"var(--reka-popper-available-width)","--reka-combobox-content-available-height":"var(--reka-popper-available-height)","--reka-combobox-trigger-width":"var(--reka-popper-anchor-width)","--reka-combobox-trigger-height":"var(--reka-popper-anchor-height)"};bl({position:s});const y=A(!1);De(()=>{i.inputElement.value&&(y.value=m.value.contains(i.inputElement.value),y.value&&i.inputElement.value.focus())}),Je(()=>{const w=Ya();y.value&&(!w||w===document.body)&&i.triggerElement.value?.focus()});function I(w){if(i.parentElement.value?.contains(w))return!0;const _=(w instanceof Element?w.closest("label"):null)?.control;return!!_&&!!i.parentElement.value?.contains(_)}return(w,v)=>(d(),B(e(Vn),{"as-child":""},{default:D(()=>[f(e(Ja),{"as-child":"",onMountAutoFocus:v[5]||(v[5]=Oe(()=>{},["prevent"])),onUnmountAutoFocus:v[6]||(v[6]=Oe(()=>{},["prevent"]))},{default:D(()=>[f(e(po),{"as-child":"","disable-outside-pointer-events":w.disableOutsidePointerEvents,onDismiss:v[0]||(v[0]=_=>e(i).onOpenChange(!1)),onFocusOutside:v[1]||(v[1]=_=>{I(_.target)&&_.preventDefault(),o("focusOutside",_)}),onInteractOutside:v[2]||(v[2]=_=>o("interactOutside",_)),onEscapeKeyDown:v[3]||(v[3]=_=>o("escapeKeyDown",_)),onPointerDownOutside:v[4]||(v[4]=_=>{I(_.target)&&_.preventDefault(),o("pointerDownOutside",_)})},{default:D(()=>[(d(),B(Qa(e(s)==="popper"?e(go):e(Be)),Ae({...w.$attrs,...e(h)},{id:e(i).contentId,ref:e(r),"data-state":e(i).open.value?"open":"closed","data-empty":l.value?"":void 0,style:{display:t.hideWhenEmpty&&l.value?"none":"flex",flexDirection:"column",outline:"none",...e(s)==="popper"?S:{}}}),{default:D(()=>[ve(w.$slots,"default")]),_:3},16,["id","data-state","data-empty","style"]))]),_:3},8,["disable-outside-pointer-events"])]),_:3})]),_:3}))}}),kl=_l,wl=le({__name:"ComboboxArrow",props:{width:{type:Number,required:!1,default:10},height:{type:Number,required:!1,default:5},rounded:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"svg"}},setup(u){const n=u,t=at(),o=xl();return Ke(),(s,i)=>e(t).open.value&&e(o).position.value==="popper"?(d(),B(e(fo),mt(Ae({key:0},n)),{default:D(()=>[ve(s.$slots,"default")]),_:3},16)):V("v-if",!0)}}),Cl=wl,$l=le({__name:"ComboboxCancel",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(u){const n=u;Ke();const t=at();function o(){t.filterSearch.value="",t.inputElement.value&&(t.inputElement.value.value="",t.inputElement.value.focus()),t.resetModelValueOnClear?.value&&(t.modelValue.value=t.multiple.value?[]:null)}return(s,i)=>(d(),B(e(Be),Ae({type:s.as==="button"?"button":void 0},n,{tabindex:"-1",onClick:o}),{default:D(()=>[ve(s.$slots,"default")]),_:3},16,["type"]))}}),Sl=$l,Il=le({__name:"ComboboxContent",props:{forceMount:{type:Boolean,required:!1},position:{type:String,required:!1},bodyLock:{type:Boolean,required:!1},hideWhenEmpty:{type:Boolean,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},hideShiftedArrow:{type:Boolean,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1}},emits:["escapeKeyDown","pointerDownOutside","focusOutside","interactOutside"],setup(u,{emit:n}){const s=vo(u,n),{forwardRef:i}=Ke(),l=at();return l.contentId||=pt(void 0,"reka-combobox-content"),(r,m)=>(d(),B(e(ho),{present:r.forceMount||e(l).open.value},{default:D(()=>[f(kl,Ae({...e(s),...r.$attrs},{ref:e(i)}),{default:D(()=>[ve(r.$slots,"default")]),_:3},16)]),_:3},8,["present"]))}}),Tl=Il,Ml=le({__name:"ComboboxEmpty",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(u){const n=u,t=at(),o=q(()=>t.ignoreFilter.value?t.allItems.value.size===0:t.filterState.value.count===0);return(s,i)=>o.value?(d(),B(e(Be),mt(Ae({key:0},n)),{default:D(()=>[ve(s.$slots,"default",{},()=>[i[0]||(i[0]=ee("No options"))])]),_:3},16)):V("v-if",!0)}}),Al=Ml;const[ys,ql]=it("ComboboxGroup");var zl=le({__name:"ComboboxGroup",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(u){const n=u,t=pt(void 0,"reka-combobox-group"),o=at(),s=q(()=>o.ignoreFilter.value?!0:o.filterSearch.value?o.filterState.value.groups.has(t):!0),i=ql({id:t,labelId:""});return De(()=>{o.allGroups.value.has(t)||o.allGroups.value.set(t,new Set)}),Je(()=>{o.allGroups.value.delete(t)}),(l,r)=>(d(),B(e(Pn),Ae({id:e(t),"aria-labelledby":e(i).labelId},n,{hidden:s.value?void 0:!0}),{default:D(()=>[ve(l.$slots,"default")]),_:3},16,["id","aria-labelledby","hidden"]))}}),la=zl,Dl=le({__name:"ComboboxInput",props:{displayValue:{type:Function,required:!1},modelValue:{type:String,required:!1},autoFocus:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"input"}},emits:["update:modelValue"],setup(u,{emit:n}){const t=u,o=n,s=at(),i=Lt(),{primitiveElement:l,currentElement:r}=At(),m=ht(t,"modelValue",o,{passive:t.modelValue===void 0});De(()=>{r.value&&s.onInputElementChange(r.value)});const{isComposing:x,handleCompositionStart:h,handleCompositionEnd:S}=$a($=>{const g=$.target;g&&I(g.value)});function y($){x.value||($.preventDefault(),s.open.value||s.onOpenChange(!0))}function I($){s.open.value?s.filterSearch.value=$:(s.onOpenChange(!0),Re(()=>{$&&(s.filterSearch.value=$,i.highlightFirstItem())}))}function w($){x.value||I($.target.value)}function v(){s.openOnFocus.value&&!s.open.value&&s.onOpenChange(!0)}function _($){if(!s.open.value)return;const g=$.relatedTarget;if(!g)return;const b=s.parentElement.value?.contains(g),F=document.getElementById(s.contentId)?.contains(g);!b&&!F&&requestAnimationFrame(()=>{if(!s.open.value)return;const E=document.activeElement;!s.parentElement.value?.contains(E)&&!document.getElementById(s.contentId)?.contains(E)&&s.onOpenChange(!1)})}function k(){s.openOnClick.value&&!s.open.value&&s.onOpenChange(!0)}function C(){const $=s.modelValue.value;t.displayValue?m.value=t.displayValue($):!s.multiple.value&&$&&!Array.isArray($)&&typeof $!="object"?m.value=$.toString():m.value="",Re(()=>{m.value=m.value})}return s.onResetSearchTerm(()=>{C()}),pe(s.modelValue,async()=>{!s.isUserInputted.value&&s.resetSearchTermOnSelect.value&&C()},{immediate:!0,deep:!0}),pe(s.filterState,($,g)=>{!s.isVirtual.value&&g.count===0&&i.highlightFirstItem()}),($,g)=>(d(),B(e(Rn),{ref_key:"primitiveElement",ref:l,modelValue:e(m),"onUpdate:modelValue":g[0]||(g[0]=b=>Ga(m)?m.value=b:null),as:$.as,"as-child":$.asChild,"auto-focus":$.autoFocus,disabled:$.disabled,"aria-expanded":e(s).open.value,"aria-controls":e(s).contentId,"aria-autocomplete":"list",role:"combobox",autocomplete:"off",onClick:k,onInput:w,onKeydown:Ze(y,["down","up"]),onFocus:v,onBlur:_,onCompositionstart:e(h),onCompositionend:e(S)},{default:D(()=>[ve($.$slots,"default")]),_:3},8,["modelValue","as","as-child","auto-focus","disabled","aria-expanded","aria-controls","onCompositionstart","onCompositionend"]))}}),Ll=Dl,El=le({__name:"ComboboxItem",props:{textValue:{type:String,required:!1},value:{type:null,required:!0},disabled:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:["select"],setup(u,{emit:n}){const t=u,o=n,s=pt(void 0,"reka-combobox-item"),i=at(),l=ys(null),{primitiveElement:r,currentElement:m}=At();if(t.value==="")throw new Error("A <ComboboxItem /> must have a value prop that is not an empty string. This is because the Combobox value can be set to an empty string to clear the selection and show the placeholder.");const x=q(()=>{if(i.isVirtual.value||i.ignoreFilter.value||!i.filterSearch.value)return!0;{const h=i.filterState.value.items.get(s);return h===void 0?!0:h>0}});return De(()=>{i.allItems.value.set(s,t.textValue||m.value.textContent||m.value.innerText);const h=l?.id;h&&(i.allGroups.value.has(h)?i.allGroups.value.get(h)?.add(s):i.allGroups.value.set(h,new Set([s])))}),Je(()=>{i.allItems.value.delete(s)}),(h,S)=>x.value?(d(),B(e(Kn),Ae({key:0},t,{id:e(s),ref_key:"primitiveElement",ref:r,disabled:e(i).disabled.value||h.disabled,onSelect:S[0]||(S[0]=y=>{o("select",y),!y.defaultPrevented&&(!e(i).multiple.value&&!h.disabled&&!e(i).disabled.value?(y.preventDefault(),e(i).onOpenChange(!1),e(i).modelValue.value=t.value):e(i).multiple.value&&e(i).inputElement.value?.focus())})}),{default:D(()=>[ve(h.$slots,"default",{},()=>[ee(c(h.value),1)])]),_:3},16,["id","disabled"])):V("v-if",!0)}}),Ua=El,Vl=le({__name:"ComboboxItemIndicator",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"span"}},setup(u){const n=u;return(t,o)=>(d(),B(e(Yn),mt(St(n)),{default:D(()=>[ve(t.$slots,"default")]),_:3},16))}}),Fl=Vl,Rl=le({__name:"ComboboxLabel",props:{for:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"div"}},setup(u){const n=u;Ke();const t=ys({id:"",labelId:""});return t.labelId||=pt(void 0,"reka-combobox-group-label"),(o,s)=>(d(),B(e(Be),Ae(n,{id:e(t).labelId}),{default:D(()=>[ve(o.$slots,"default")]),_:3},16,["id"]))}}),Ol=Rl,Bl=le({__name:"ComboboxPortal",props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(u){const n=u;return(t,o)=>(d(),B(e(yo),mt(St(n)),{default:D(()=>[ve(t.$slots,"default")]),_:3},16))}}),Pl=Bl,Nl=le({__name:"ComboboxSeparator",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(u){const n=u;return Ke(),(t,o)=>(d(),B(e(Be),Ae(n,{"aria-hidden":"true"}),{default:D(()=>[ve(t.$slots,"default")]),_:3},16))}}),jl=Nl,Ul=le({__name:"ComboboxTrigger",props:{disabled:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(u){const n=u,{forwardRef:t,currentElement:o}=Ke(),s=at(),i=q(()=>n.disabled||s.disabled.value||!1);return De(()=>{o.value&&s.onTriggerElementChange(o.value)}),(l,r)=>(d(),B(e(Be),Ae(n,{ref:e(t),type:l.as==="button"?"button":void 0,tabindex:"-1","aria-label":"Show popup","aria-haspopup":"listbox","aria-expanded":e(s).open.value,"aria-controls":e(s).contentId,"data-state":e(s).open.value?"open":"closed",disabled:i.value,"data-disabled":i.value?"":void 0,"aria-disabled":i.value??void 0,onClick:r[0]||(r[0]=m=>e(s).onOpenChange(!e(s).open.value))}),{default:D(()=>[ve(l.$slots,"default")]),_:3},16,["type","aria-expanded","aria-controls","data-state","disabled","data-disabled","aria-disabled"]))}}),Wl=Ul,Kl=le({__name:"ComboboxVirtualizer",props:{options:{type:Array,required:!0},overscan:{type:Number,required:!1},estimateSize:{type:[Number,Function],required:!1},textContent:{type:Function,required:!1}},setup(u){const n=u,t=at();return t.isVirtual.value=!0,(o,s)=>(d(),B(pl,mt(St(n)),{default:D(i=>[ve(o.$slots,"default",mt(St(i)))]),_:3},16))}}),Hl=Kl;const[Sa,Yl]=it("TagsInputRoot");var Ql=le({__name:"TagsInputRoot",props:{modelValue:{type:[Array,null],required:!1},defaultValue:{type:Array,required:!1,default:()=>[]},addOnPaste:{type:Boolean,required:!1},addOnTab:{type:Boolean,required:!1},addOnBlur:{type:Boolean,required:!1},duplicate:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},delimiter:{type:null,required:!1,default:","},dir:{type:String,required:!1},max:{type:Number,required:!1,default:0},id:{type:String,required:!1},convertValue:{type:Function,required:!1},displayValue:{type:Function,required:!1,default:u=>u.toString()},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},name:{type:String,required:!1},required:{type:Boolean,required:!1}},emits:["update:modelValue","invalid","addTag","removeTag"],setup(u,{emit:n}){const t=u,o=n,{addOnPaste:s,disabled:i,delimiter:l,max:r,id:m,dir:x,addOnBlur:h,addOnTab:S}=Mt(t),y=va(x),I=ht(t,"modelValue",o,{defaultValue:t.defaultValue,passive:!0,deep:!0}),{forwardRef:w,currentElement:v}=Ke(),{focused:_}=xo(v),k=fs(v),{getItems:C,CollectionSlot:$}=xt({isProvider:!0}),g=A(),b=A(!1),F=q(()=>Array.isArray(I.value)?[...I.value]:[]);function E(z){if(z!==-1){const T=C().filter(M=>M.ref.dataset.disabled!=="");I.value=I.value.filter((M,L)=>L!==z),o("removeTag",T[z].value)}}return Yl({modelValue:I,onAddValue:z=>{const T=[...F.value],M=T.length>0&&typeof T[0]=="object",L=T.length>0&&typeof t.defaultValue[0]=="object";if((M||L)&&typeof t.convertValue!="function")throw new Error("You must provide a `convertValue` function when using objects as values.");const N=t.convertValue?t.convertValue(z):z;if(T.length>=r.value&&r.value)return o("invalid",N),!1;if(t.duplicate)return I.value=[...T,N],o("addTag",N),!0;if(T.includes(N))b.value=!0;else return I.value=[...T,N],o("addTag",N),!0;return o("invalid",N),!1},onRemoveValue:E,onInputKeydown:z=>{if(z.isComposing)return;const T=z.target,M=C().map(N=>N.ref).filter(N=>N.dataset.disabled!=="");if(!M.length)return;const L=M.at(-1);switch(z.key){case"Delete":case"Backspace":{if(T.selectionStart!==0||T.selectionEnd!==0)break;if(g.value){const N=M.findIndex(U=>U===g.value);E(N),g.value=g.value===L?M.at(N-1):M.at(N+1),z.preventDefault()}else z.key==="Backspace"&&(g.value=L,z.preventDefault());break}case"Home":case"End":case"ArrowRight":case"ArrowLeft":{const N=z.key==="ArrowRight"&&y.value==="ltr"||z.key==="ArrowLeft"&&y.value==="rtl",U=!N;if(T.selectionStart!==0||T.selectionEnd!==0)break;if(U&&!g.value)g.value=L,z.preventDefault();else if(N&&L&&g.value===L)g.value=void 0,z.preventDefault();else if(g.value){const H=bo(z,g.value,void 0,{itemsArray:M,loop:!1,dir:y.value});H&&(g.value=H),z.preventDefault()}break}case"ArrowUp":case"ArrowDown":{g.value&&z.preventDefault();break}default:g.value=void 0}},selectedElement:g,isInvalidInput:b,addOnPaste:s,addOnBlur:h,addOnTab:S,dir:y,disabled:i,delimiter:l,max:r,id:m,displayValue:t.displayValue}),(z,T)=>(d(),B(e($),null,{default:D(()=>[f(e(Be),{ref:e(w),dir:e(y),as:z.as,"as-child":z.asChild,"data-invalid":b.value?"":void 0,"data-disabled":e(i)?"":void 0,"data-focused":e(_)?"":void 0},{default:D(()=>[ve(z.$slots,"default",{modelValue:e(I)}),e(k)&&z.name?(d(),B(e(vs),{key:0,name:z.name,value:e(I),required:z.required,disabled:e(i)},null,8,["name","value","required","disabled"])):V("v-if",!0)]),_:3},8,["dir","as","as-child","data-invalid","data-disabled","data-focused"])]),_:3}))}}),Gl=Ql,Jl=le({__name:"TagsInputInput",props:{placeholder:{type:String,required:!1},autoFocus:{type:Boolean,required:!1},maxLength:{type:Number,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"input"}},setup(u){const n=u,t=Sa(),{forwardRef:o,currentElement:s}=Ke();function i(w){if(t.selectedElement.value=void 0,!t.addOnBlur.value)return;const v=w.target,_=w.relatedTarget,k=v.getAttribute("aria-controls");if(k&&_?.closest(`#${CSS.escape(k)}`)||!v.value)return;t.onAddValue(v.value)&&(v.value="")}function l(w){t.addOnTab.value&&h(w)}const{isComposing:r,handleCompositionStart:m,handleCompositionEnd:x}=$a();async function h(w){if(r.value||(await Re(),w.defaultPrevented))return;const v=w.target;if(!v.value)return;t.onAddValue(v.value)&&(v.value=""),w.preventDefault()}function S(w){if(r.value||(t.isInvalidInput.value=!1,w.data===null))return;const v=t.delimiter.value;if(v===w.data||v instanceof RegExp&&v.test(w.data)){const k=w.target;if(k.value=k.value.replace(v,""),k.value.trim()===""){k.value="";return}t.onAddValue(k.value)&&(k.value="")}}function y(w){r.value||t.onInputKeydown(w)}function I(w){if(t.addOnPaste.value){w.preventDefault();const v=w.clipboardData;if(!v)return;const _=v.getData("text");t.delimiter.value?_.split(t.delimiter.value).forEach(C=>{t.onAddValue(C)}):t.onAddValue(_)}}return De(()=>{const w=s.value.nodeName==="INPUT"?s.value:s.value.querySelector("input");w&&setTimeout(()=>{n.autoFocus&&w?.focus()},1)}),(w,v)=>(d(),B(e(Be),{id:e(t).id?.value,ref:e(o),type:"text",autocomplete:"off",autocorrect:"off",autocapitalize:"off",as:w.as,"as-child":w.asChild,maxlength:w.maxLength,placeholder:w.placeholder,disabled:e(t).disabled.value,"data-invalid":e(t).isInvalidInput.value?"":void 0,onInput:S,onKeydown:[Ze(h,["enter"]),Ze(l,["tab"]),y],onBlur:i,onCompositionstart:e(m),onCompositionend:e(x),onPaste:I},{default:D(()=>[ve(w.$slots,"default")]),_:3},8,["id","as","as-child","maxlength","placeholder","disabled","data-invalid","onCompositionstart","onCompositionend"]))}}),Xl=Jl;const[xs,Zl]=it("TagsInputItem");var ei=le({__name:"TagsInputItem",props:{value:{type:null,required:!0},disabled:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(u){const n=u,{value:t}=Mt(n),o=Sa(),{forwardRef:s,currentElement:i}=Ke(),{CollectionItem:l}=xt(),r=q(()=>o.selectedElement.value===i.value),m=q(()=>n.disabled||o.disabled.value),x=Zl({value:t,isSelected:r,disabled:m,textId:"",displayValue:q(()=>o.displayValue(t.value))});return(h,S)=>(d(),B(e(l),{value:e(t)},{default:D(()=>[f(e(Be),{ref:e(s),as:h.as,"as-child":h.asChild,"aria-labelledby":e(x).textId,"aria-current":r.value,"data-disabled":m.value?"":void 0,"data-state":r.value?"active":"inactive"},{default:D(()=>[ve(h.$slots,"default")]),_:3},8,["as","as-child","aria-labelledby","aria-current","data-disabled","data-state"])]),_:3},8,["value"]))}}),ti=ei,ai=le({__name:"TagsInputItemDelete",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(u){const n=u;Ke();const t=Sa(),o=xs(),s=q(()=>o.disabled?.value||t.disabled.value);function i(){if(s.value)return;const l=t.modelValue.value.findIndex(r=>Nt(r,o.value.value));t.onRemoveValue(l)}return(l,r)=>(d(),B(e(Be),Ae({tabindex:"-1"},n,{"aria-labelledby":e(o).textId,"aria-current":e(o).isSelected.value,"data-state":e(o).isSelected.value?"active":"inactive","data-disabled":s.value?"":void 0,type:l.as==="button"?"button":void 0,onClick:i}),{default:D(()=>[ve(l.$slots,"default")]),_:3},16,["aria-labelledby","aria-current","data-state","data-disabled","type"]))}}),si=ai,oi=le({__name:"TagsInputItemText",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"span"}},setup(u){const n=u,t=xs();return Ke(),t.textId||=pt(void 0,"reka-tags-input-item-text"),(o,s)=>(d(),B(e(Be),Ae(n,{id:e(t).textId}),{default:D(()=>[ve(o.$slots,"default",{},()=>[ee(c(e(t).displayValue.value),1)])]),_:3},16,["id"]))}}),ni=oi;function li(u,n,t,o="group",s="zh-CN",i){const l=Qo(),{chatKey:r,state:m}=l.ensureSessionState({sessionId:u,sessionName:n,timeFilter:t,chatType:o,locale:s}),x=l.resetToSelectorOnEnter(r,i);return l.applySessionAssistantSelection(r),{initialization:x,messages:Fe(m,"messages"),sourceMessages:Fe(m,"sourceMessages"),currentKeywords:Fe(m,"currentKeywords"),isLoadingSource:Fe(m,"isLoadingSource"),isAIThinking:Fe(m,"isAIThinking"),currentAIChatId:Fe(m,"currentAIChatId"),currentToolStatus:Fe(m,"currentToolStatus"),toolsUsedInCurrentRound:Fe(m,"toolsUsedInCurrentRound"),sessionTokenUsage:Fe(m,"sessionTokenUsage"),agentStatus:Fe(m,"agentStatus"),selectedAssistantId:Fe(m,"selectedAssistantId"),sendMessage:(h,S)=>l.sendMessage(r,h,S),editMessageAndRegenerate:(h,S)=>l.editMessageAndRegenerate(r,h,S),loadAIChat:h=>l.loadAIChat(r,h),startNewAIChat:h=>l.startNewAIChat(r,h),stopGeneration:()=>l.stopGeneration(r),selectAssistantForSession:h=>l.selectAssistantForSession(r,h)}}const ia=new Map;function ii(u,n,t){const{activeTab:o,isInitialLoad:s,currentSessionId:i,onTimeRangeChange:l}=t,r=A(null),m=A(null),x=A([]);let h=null;const S=q(()=>{const v=r.value;if(v)return{startTs:v.startTs,endTs:v.endTs}}),y=q(()=>{const v=r.value;return v?`${v.startTs}-${v.endTs}`:"init"}),I=q(()=>{const v=u.query,_=v.timeMode;return _?{mode:_,recentDays:v.timeDays?Number(v.timeDays):void 0,year:v.timeYear?Number(v.timeYear):void 0,quarterYear:v.timeYear?Number(v.timeYear):void 0,quarter:v.timeQuarter?Number(v.timeQuarter):void 0,customStart:v.timeStart||void 0,customEnd:v.timeEnd||void 0}:i.value&&ia.has(i.value)?ia.get(i.value):{mode:"recent",recentDays:365}});pe([o,r],([v,_])=>{if(s.value||!_)return;const k=_.state,C={tab:v,timeMode:k.mode,timeDays:void 0,timeYear:void 0,timeQuarter:void 0,timeStart:void 0,timeEnd:void 0};k.mode==="recent"&&(C.timeDays=k.recentDays),k.mode==="year"&&(C.timeYear=k.year),k.mode==="quarter"&&(C.timeYear=k.quarterYear,C.timeQuarter=k.quarter),k.mode==="custom"&&(C.timeStart=k.customStart,C.timeEnd=k.customEnd),n.replace({query:{...u.query,...C}})}),pe(r,v=>{if(!v||!i.value)return;const _=`${i.value}:${v.startTs}:${v.endTs}`;ia.set(i.value,v.state),_!==h&&(h=_,da(),l?.())},{immediate:!0});function w(){h=null,r.value=null,m.value=null,x.value=[]}return{timeRangeValue:r,fullTimeRange:m,availableYears:x,timeFilter:S,timeFilterKey:y,initialTimeState:I,resetTimeRange:w}}function ri(u){const n=u.columns.join(","),t=u.rows.map(o=>o.map(s=>s===null?"":`"${String(s).replace(/"/g,'""')}"`).join(","));return[n,...t].join(`
|
|
3
|
-
`)}function ui(u){const n=u.rows.map(t=>{const o={};return u.columns.forEach((s,i)=>{o[s]=t[i]}),o});return JSON.stringify(n,null,2)}async function di(u,n){if(u.rows.length===0)return{success:!1,error:"No data to export"};const o=`sql_result_${Ve().format("YYYYMMDD_HHmmss")}.${n}`;let s,i;n==="json"?(s=ui(u),i="application/json"):(s=ri(u),i="text/csv");const l=`data:${i};charset=utf-8,${encodeURIComponent(s)}`,{useCacheService:r}=await ya(async()=>{const{useCacheService:x}=await import("./service-CppETV4a.js");return{useCacheService:x}},__vite__mapDeps([0,1,2,3]));return await r().saveToDownloads(o,l)}function Bb(u){const{route:n,router:t,currentSessionId:o,selectSession:s,defaultTab:i,validTabIds:l}=u,r=A(!0),m=A(!0),x=A(!0),h=A(null),S=A([]),y=A([]),I=A([]),w=A([]);let v=0,_=0,k=!1,C=!1,$=null;function g(){const X=o.value;if(!X)return null;const W=U.value;return W?`${X}:${W.startTs}:${W.endTs}`:`${X}:all`}function b(){!x.value||!k||(!h.value||C)&&(x.value=!1)}function F(){const X=n.query.tab;return X&&l.includes(X)?X:i}const E=A(F()),z=q(()=>E.value==="insights"),T=q(()=>["insights","ranking"].includes(E.value));pe(E,X=>{const W={insights:"insights",ranking:"ranking","ai-chat":"ai_chat"}[X];W&&Xa("feature_used",{feature_id:W})},{immediate:!0});const{timeRangeValue:M,fullTimeRange:L,availableYears:N,timeFilter:U,initialTimeState:H,resetTimeRange:ie}=ii(n,t,{activeTab:E,isInitialLoad:m,currentSessionId:o,onTimeRangeChange:()=>P()});function se(){const X=n.params.id;X&&(s(X),o.value!==X&&t.replace("/"))}async function P(){const X=o.value;if(!X)return;const W=++_,ae=g();if(!z.value){r.value=!1,C=!0,b();return}x.value&&(C=!1),r.value=!0;try{const O=U.value,ue=Pe(),[we,xe,te,K]=await Promise.all([ue.getMemberActivity(X,O),ue.getHourlyActivity(X,O),ue.getDailyActivity(X,O),ue.getMessageTypeDistribution(X,O)]);if(W!==_)return;S.value=we,y.value=xe,I.value=te,w.value=K,$=ae}catch(O){W===_&&console.error("加载分析数据失败:",O)}finally{W===_&&(r.value=!1,C=!0,b())}}function R(){$=null,z.value&&P()}function J(X){X||(M.value=null,P())}async function fe(){const X=o.value;if(!X)return;const W=++v;m.value=!0;try{const ae=await Pe().getSession(X);if(W!==v||o.value!==X)return;h.value=ae}catch(ae){W===v&&o.value===X&&(h.value=null,console.error("加载基础数据失败:",ae))}finally{W===v&&o.value===X&&(m.value=!1,k=!0,b())}}return pe(E,()=>{if(!z.value){_++,da(),r.value=!1,T.value||(C=!0,b());return}const X=g();if(X&&X===$){r.value=!1,C=!0,b();return}r.value=!0,o.value&&M.value&&P()}),pe(()=>n.params.id,()=>{E.value=F(),se()}),pe(()=>n.query.tab,()=>{E.value=F()}),pe(o,()=>{_++,$=null,ie(),k=!1,C=!T.value,r.value=z.value,x.value=!0,da(),fe()},{immediate:!0}),De(()=>{se()}),{activeTab:E,isLoading:r,isInitialLoad:m,isSessionSwitching:x,session:h,memberActivity:S,hourlyActivity:y,dailyActivity:I,messageTypes:w,timeRangeValue:M,fullTimeRange:L,availableYears:N,timeFilter:U,initialTimeState:H,syncSession:se,loadData:fe,loadAnalysisData:P,invalidateAnalysisData:R,handleTimeRangeInitialized:J}}const ci={class:"pointer-events-none absolute right-3 top-3 z-50 opacity-0 transition-opacity duration-200 group-hover/card:pointer-events-auto group-hover/card:opacity-100"},mi=le({__name:"CardCaptureOverlay",setup(u){return(n,t)=>(d(),p("div",ci,[f(Kt,{type:"element","target-selector":"[data-capturable-card]",size:"xs"})]))}}),aa=le({__name:"ReportCard",props:{capturable:{type:Boolean,default:!0}},setup(u){return(n,t)=>(d(),B(rt,{"data-capturable-card":"",class:"group/card relative isolate flex flex-col"},{default:D(()=>[f(kn),u.capturable?(d(),B(mi,{key:0})):V("",!0),ve(n.$slots,"default")]),_:3}))}}),pi={class:"flex items-center justify-between"},gi={class:"font-semibold text-gray-900 dark:text-white whitespace-nowrap"},fi={key:0,class:"mt-1 text-sm text-gray-500 dark:text-gray-400"},vi={class:"flex items-center gap-2"},hi={key:0,class:"pointer-events-none opacity-0 transition-opacity duration-200 group-hover/card:pointer-events-auto group-hover/card:opacity-100"},Qe=le({__name:"SectionCard",props:{title:{},description:{},capturable:{type:Boolean,default:!0},showDivider:{type:Boolean,default:!0},scrollable:{type:Boolean,default:!1},maxHeightVh:{default:60}},setup(u){const n=u,t=q(()=>{if(n.scrollable)return{maxHeight:`${n.maxHeightVh}vh`,overflowY:"auto"}});return(o,s)=>(d(),B(rt,{class:"group/card","data-section-card":""},{default:D(()=>[a("div",{class:Z(["px-5 py-3",{"border-b border-gray-200 dark:border-white/5":u.showDivider&&o.$slots.default}])},[a("div",pi,[a("div",null,[a("p",gi,c(u.title),1),u.description?(d(),p("p",fi,c(u.description),1)):V("",!0)]),a("div",vi,[ve(o.$slots,"headerRight"),u.capturable?(d(),p("div",hi,[f(Kt,{type:"element","target-selector":"[data-section-card]",size:"xs"})])):V("",!0)])])],2),u.scrollable?(d(),p("div",{key:0,style:et(t.value)},[ve(o.$slots,"default")],4)):ve(o.$slots,"default",{key:1}),ve(o.$slots,"footer")]),_:3}))}}),yi={class:"flex items-start justify-between"},xi={class:"min-w-0 flex-1"},bi={class:"text-sm font-medium text-gray-500 dark:text-gray-400"},_i={key:1,class:"text-xl"},ki={key:0,class:"mt-4 flex items-center text-sm"},wi={class:"text-gray-500 dark:text-gray-400"},nt=le({__name:"StatCard",props:{label:{},value:{},valueColor:{},subtext:{},icon:{},iconBg:{}},setup(u){const n={pink:"text-pink-600 dark:text-pink-400",amber:"text-amber-600 dark:text-amber-400",blue:"text-blue-600 dark:text-blue-400",green:"text-green-600 dark:text-green-400",red:"text-red-600 dark:text-red-400",gray:"text-gray-900 dark:text-white"},t={pink:"bg-pink-100 dark:bg-pink-500/10",amber:"bg-amber-100 dark:bg-amber-500/10",blue:"bg-blue-100 dark:bg-blue-500/10",green:"bg-green-100 dark:bg-green-500/10",red:"bg-red-100 dark:bg-red-500/10",gray:"bg-gray-100 dark:bg-white/5"};return(o,s)=>(d(),B(rt,{class:"p-5"},{default:D(()=>[a("div",yi,[a("div",xi,[a("p",bi,c(u.label),1),a("p",{class:Z(["mt-2 truncate text-2xl font-bold tracking-tight",u.valueColor?n[u.valueColor]:"text-gray-900 dark:text-white"])},c(u.value),3)]),u.icon?(d(),p("div",{key:0,class:Z(["ml-4 flex h-10 w-10 shrink-0 items-center justify-center rounded-xl",t[u.iconBg||"gray"]])},[u.icon.startsWith("i-")?(d(),B(_o,{key:0,name:u.icon,size:"lg"},null,8,["name"])):(d(),p("span",_i,c(u.icon),1))],2)):V("",!0)]),u.subtext||o.$slots.subtext?(d(),p("div",ki,[ve(o.$slots,"subtext",{},()=>[a("span",wi,c(u.subtext),1)])])):V("",!0)]),_:3}))}}),Ci={key:0,class:"mb-2 block text-2xl"},Pb=le({__name:"EmptyState",props:{text:{},icon:{},padding:{}},setup(u){const n={sm:"px-4 py-4",md:"px-5 py-8",lg:"px-6 py-12"};return(t,o)=>(d(),p("div",{class:Z(["text-center text-sm text-gray-400",n[u.padding||"md"]])},[u.icon?(d(),p("span",Ci,c(u.icon),1)):V("",!0),ee(" "+c(u.text||"暂无数据"),1)],2))}}),$i=["aria-busy"],Si={key:0,class:"insight-view-transition__indicator","aria-hidden":"true"},Ii=["inert","aria-hidden"],Ti=["inert","aria-hidden"],Mi=le({__name:"InsightViewTransition",props:{activeKey:{}},setup(u){const n=u,t=A(n.activeKey),o=A(null),s=A("primary"),i=A("idle"),l=A(0),r=ko("session-switch-loading",null),m=q(()=>s.value==="primary"?t.value:o.value),x=q(()=>s.value==="primary"?"secondary":"primary"),h=q(()=>i.value!=="idle"),S=q(()=>i.value==="waiting"&&!r?.value);wo(Wo,{register:v,suppress:h});let y=0,I=null;function w(){I&&clearTimeout(I),I=null}function v(){const g=y;let b=!0;return l.value++,()=>{b&&(b=!1,g===y&&(l.value=Math.max(0,l.value-1)))}}function _(g,b){g==="primary"?t.value=b:o.value=b}function k(g){const b=g===s.value;return{"insight-view-transition__pane--active":b&&i.value==="idle","insight-view-transition__pane--waiting":b&&i.value==="waiting","insight-view-transition__pane--outgoing":b&&i.value==="revealing","insight-view-transition__pane--pending":!b&&i.value==="waiting","insight-view-transition__pane--incoming":!b&&i.value==="revealing"}}async function C(g){await Re(),await Re(),!(g!==y||i.value!=="waiting"||l.value>0)&&(i.value="revealing",I=setTimeout(()=>{if(g!==y)return;const b=s.value;s.value=x.value,_(b,null),i.value="idle",I=null},180))}function $(g){const b=++y;if(w(),l.value=0,g===m.value){_(x.value,null),i.value="idle";return}_(x.value,g),i.value="waiting",C(b)}return pe(()=>n.activeKey,g=>$(g)),pe(l,g=>{g===0&&i.value==="waiting"&&C(y)}),xa(()=>{y++,w()}),(g,b)=>(d(),p("div",{class:"insight-view-transition","aria-busy":h.value},[S.value?(d(),p("div",Si,[f(Uo)])):V("",!0),t.value?(d(),p("div",{key:1,class:Z(["insight-view-transition__pane",k("primary")]),inert:s.value!=="primary"||h.value,"aria-hidden":s.value!=="primary"},[ve(g.$slots,"default",{viewKey:t.value},void 0,!0)],10,Ii)):V("",!0),o.value?(d(),p("div",{key:2,class:Z(["insight-view-transition__pane",k("secondary")]),inert:s.value!=="secondary"||h.value,"aria-hidden":s.value!=="secondary"},[ve(g.$slots,"default",{viewKey:o.value},void 0,!0)],10,Ti)):V("",!0)],8,$i))}}),Nb=gt(Mi,[["__scopeId","data-v-be8a2c26"]]),Ai=le({__name:"EChartCalendar",props:{data:{},height:{default:180},year:{}},setup(u){Zt([cs,ms,Ca,ps,ea]);const n=u,{t,locale:o}=Ce(),s=Qt(),i=A(null);let l=null;const r=q(()=>{if(n.year)return n.year;if(n.data.length===0)return new Date().getFullYear();const v=n.data.map(_=>parseInt(_.date.split("-")[0]));return Math.max(...v)}),m=q(()=>n.data.length===0?10:Math.max(...n.data.map(v=>v.value),1)),x=q(()=>n.data.map(v=>[v.date,v.value])),h={light:["#fee5e8","#fbb5c2","#f7758c","#ee4567"],dark:["#3d1f24","#6b2f3a","#a34557","#ee4567"]},S=q(()=>({tooltip:{trigger:"item",formatter:v=>{const _=v.data[0],k=v.data[1];return`${_}<br/>${t("views.message.calendarTooltipMessages")}: ${k}`}},visualMap:{min:0,max:m.value,calculable:!1,orient:"horizontal",left:"center",bottom:0,itemWidth:10,itemHeight:100,text:[`${m.value}`,"0"],inRange:{color:s.value?h.dark:h.light},textStyle:{color:s.value?"#9ca3af":"#6b7280",fontSize:10},show:!0},calendar:{top:30,left:40,cellSize:[13,13],range:String(r.value),itemStyle:{borderWidth:2,borderColor:s.value?"#1f2937":"#ffffff"},yearLabel:{show:!0,position:"top",color:s.value?"#9ca3af":"#6b7280",fontSize:12},monthLabel:{show:!0,color:s.value?"#9ca3af":"#6b7280",fontSize:10,nameMap:[t("common.month.jan"),t("common.month.feb"),t("common.month.mar"),t("common.month.apr"),t("common.month.may"),t("common.month.jun"),t("common.month.jul"),t("common.month.aug"),t("common.month.sep"),t("common.month.oct"),t("common.month.nov"),t("common.month.dec")]},dayLabel:{show:!0,firstDay:1,color:s.value?"#6b7280":"#9ca3af",fontSize:10,nameMap:[t("common.weekday.sun"),t("common.weekday.mon"),t("common.weekday.tue"),t("common.weekday.wed"),t("common.weekday.thu"),t("common.weekday.fri"),t("common.weekday.sat")]},splitLine:{show:!1}},series:[{type:"heatmap",coordinateSystem:"calendar",data:x.value}]}));function y(){i.value&&(l=ta(i.value,s.value?"dark":void 0,{renderer:"canvas"}),l.setOption({backgroundColor:"transparent",...S.value}))}function I(){l&&l.setOption({backgroundColor:"transparent",...S.value},{notMerge:!0})}function w(){l?.resize()}return pe([()=>n.data,s,o],()=>{I()}),pe(()=>n.year,()=>{I()}),De(()=>{y(),window.addEventListener("resize",w)}),Je(()=>{window.removeEventListener("resize",w),l?.dispose()}),(v,_)=>(d(),p("div",{ref_key:"chartRef",ref:i,style:et({height:`${u.height}px`,width:"100%"})},null,4))}});function qi(u,n){if(typeof u!="object"||u===null)return!1;const t=dt(u,n);return t!=null&&t!==""}function Wa(u,n){return n?{xs:44,sm:48,md:52,lg:56,xl:60}[u]:{xs:24,sm:28,md:32,lg:36,xl:40}[u]}function zi(u,n,t,o){const s=Wa(n,!0),i=Wa(n,!1);return o?()=>s:t?l=>qi(u[l],t)?s:i:()=>i}const Di={slots:{base:["relative group rounded-md inline-flex items-center disabled:cursor-not-allowed disabled:opacity-75","transition-colors"],leading:"absolute inset-y-0 start-0 flex items-center",leadingIcon:"shrink-0 text-dimmed",leadingAvatar:"shrink-0",leadingAvatarSize:"",trailing:"absolute inset-y-0 end-0 flex items-center",trailingIcon:"shrink-0 text-dimmed",value:"truncate pointer-events-none",placeholder:"truncate text-dimmed",arrow:"fill-bg stroke-default",content:["max-h-[min(15rem,var(--reka-select-content-available-height,15rem))] w-(--reka-select-trigger-width) bg-default shadow-lg rounded-md ring ring-default overflow-hidden origin-(--reka-select-content-transform-origin) pointer-events-auto flex flex-col","max-h-[min(15rem,var(--reka-combobox-content-available-height,15rem))] origin-(--reka-combobox-content-transform-origin) w-(--reka-combobox-trigger-width)"],viewport:"relative scroll-py-1 overflow-y-auto flex-1",group:"p-1 isolate",empty:"text-center text-muted",label:"font-semibold text-highlighted",separator:"-mx-1 my-1 h-px bg-border",item:["group relative w-full flex items-start select-none outline-none before:absolute before:z-[-1] before:inset-px before:rounded-md data-disabled:cursor-not-allowed data-disabled:opacity-75 text-default data-highlighted:not-data-disabled:text-highlighted data-highlighted:not-data-disabled:before:bg-elevated/50","transition-colors before:transition-colors"],itemLeadingIcon:["shrink-0 text-dimmed group-data-highlighted:not-group-data-disabled:text-default","transition-colors"],itemLeadingAvatar:"shrink-0",itemLeadingAvatarSize:"",itemLeadingChip:"shrink-0",itemLeadingChipSize:"",itemTrailing:"ms-auto inline-flex gap-1.5 items-center",itemTrailingIcon:"shrink-0",itemWrapper:"flex-1 flex flex-col min-w-0",itemLabel:"truncate",itemDescription:"truncate text-muted",input:"border-b border-default",focusScope:"flex flex-col min-h-0",trailingClear:"p-0"},variants:{fieldGroup:{horizontal:"not-only:first:rounded-e-none not-only:last:rounded-s-none not-last:not-first:rounded-none focus-visible:z-[1]",vertical:"not-only:first:rounded-b-none not-only:last:rounded-t-none not-last:not-first:rounded-none focus-visible:z-[1]"},size:{xs:{base:"px-2 py-1 text-xs gap-1",leading:"ps-2",trailing:"pe-2",leadingIcon:"size-4",leadingAvatarSize:"3xs",trailingIcon:"size-4",label:"p-1 text-[10px]/3 gap-1",item:"p-1 text-xs gap-1",itemLeadingIcon:"size-4",itemLeadingAvatarSize:"3xs",itemLeadingChip:"size-4",itemLeadingChipSize:"sm",itemTrailingIcon:"size-4",empty:"p-2 text-xs"},sm:{base:"px-2.5 py-1.5 text-xs gap-1.5",leading:"ps-2.5",trailing:"pe-2.5",leadingIcon:"size-4",leadingAvatarSize:"3xs",trailingIcon:"size-4",label:"p-1.5 text-[10px]/3 gap-1.5",item:"p-1.5 text-xs gap-1.5",itemLeadingIcon:"size-4",itemLeadingAvatarSize:"3xs",itemLeadingChip:"size-4",itemLeadingChipSize:"sm",itemTrailingIcon:"size-4",empty:"p-2.5 text-xs"},md:{base:"px-2.5 py-1.5 text-sm gap-1.5",leading:"ps-2.5",trailing:"pe-2.5",leadingIcon:"size-5",leadingAvatarSize:"2xs",trailingIcon:"size-5",label:"p-1.5 text-xs gap-1.5",item:"p-1.5 text-sm gap-1.5",itemLeadingIcon:"size-5",itemLeadingAvatarSize:"2xs",itemLeadingChip:"size-5",itemLeadingChipSize:"md",itemTrailingIcon:"size-5",empty:"p-2.5 text-sm"},lg:{base:"px-3 py-2 text-sm gap-2",leading:"ps-3",trailing:"pe-3",leadingIcon:"size-5",leadingAvatarSize:"2xs",trailingIcon:"size-5",label:"p-2 text-xs gap-2",item:"p-2 text-sm gap-2",itemLeadingIcon:"size-5",itemLeadingAvatarSize:"2xs",itemLeadingChip:"size-5",itemLeadingChipSize:"md",itemTrailingIcon:"size-5",empty:"p-3 text-sm"},xl:{base:"px-3 py-2 text-base gap-2",leading:"ps-3",trailing:"pe-3",leadingIcon:"size-6",leadingAvatarSize:"xs",trailingIcon:"size-6",label:"p-2 text-sm gap-2",item:"p-2 text-base gap-2",itemLeadingIcon:"size-6",itemLeadingAvatarSize:"xs",itemLeadingChip:"size-6",itemLeadingChipSize:"lg",itemTrailingIcon:"size-6",empty:"p-3 text-base"}},variant:{outline:"text-highlighted bg-default ring ring-inset ring-accented hover:bg-elevated disabled:bg-default",soft:"text-highlighted bg-elevated/50 hover:bg-elevated focus:bg-elevated disabled:bg-elevated/50",subtle:"text-highlighted bg-elevated ring ring-inset ring-accented hover:bg-accented/75 disabled:bg-elevated",ghost:"text-highlighted bg-transparent hover:bg-elevated focus:bg-elevated disabled:bg-transparent dark:disabled:bg-transparent",none:"text-highlighted bg-transparent focus:outline-none"},color:{primary:"",secondary:"",success:"",info:"",warning:"",error:"",neutral:""},leading:{true:""},trailing:{true:""},loading:{true:""},highlight:{true:""},fixed:{false:""},type:{file:"file:me-1.5 file:font-medium file:text-muted file:outline-none"},position:{popper:{content:"data-[state=open]:animate-[scale-in_100ms_ease-out] data-[state=closed]:animate-[scale-out_100ms_ease-in]"},"item-aligned":{content:""}},multiple:{true:""},virtualize:{true:{viewport:"p-1 isolate"},false:{viewport:"divide-y divide-default"}}},compoundVariants:[{color:"primary",variant:["outline","subtle"],class:"outline-primary/25 focus-visible:outline-3 focus-visible:ring-primary"},{color:"secondary",variant:["outline","subtle"],class:"outline-secondary/25 focus-visible:outline-3 focus-visible:ring-secondary"},{color:"success",variant:["outline","subtle"],class:"outline-success/25 focus-visible:outline-3 focus-visible:ring-success"},{color:"info",variant:["outline","subtle"],class:"outline-info/25 focus-visible:outline-3 focus-visible:ring-info"},{color:"warning",variant:["outline","subtle"],class:"outline-warning/25 focus-visible:outline-3 focus-visible:ring-warning"},{color:"error",variant:["outline","subtle"],class:"outline-error/25 focus-visible:outline-3 focus-visible:ring-error"},{color:"primary",variant:["soft","ghost"],class:"outline-primary/25 focus-visible:outline-3"},{color:"secondary",variant:["soft","ghost"],class:"outline-secondary/25 focus-visible:outline-3"},{color:"success",variant:["soft","ghost"],class:"outline-success/25 focus-visible:outline-3"},{color:"info",variant:["soft","ghost"],class:"outline-info/25 focus-visible:outline-3"},{color:"warning",variant:["soft","ghost"],class:"outline-warning/25 focus-visible:outline-3"},{color:"error",variant:["soft","ghost"],class:"outline-error/25 focus-visible:outline-3"},{color:"primary",highlight:!0,class:"ring ring-inset ring-primary"},{color:"secondary",highlight:!0,class:"ring ring-inset ring-secondary"},{color:"success",highlight:!0,class:"ring ring-inset ring-success"},{color:"info",highlight:!0,class:"ring ring-inset ring-info"},{color:"warning",highlight:!0,class:"ring ring-inset ring-warning"},{color:"error",highlight:!0,class:"ring ring-inset ring-error"},{color:"neutral",variant:["outline","subtle"],class:"outline-inverted/25 focus-visible:outline-3 focus-visible:ring-inverted"},{color:"neutral",variant:["soft","ghost"],class:"outline-inverted/25 focus-visible:outline-3"},{color:"neutral",highlight:!0,class:"ring ring-inset ring-inverted"},{leading:!0,size:"xs",class:"ps-7"},{leading:!0,size:"sm",class:"ps-8"},{leading:!0,size:"md",class:"ps-9"},{leading:!0,size:"lg",class:"ps-10"},{leading:!0,size:"xl",class:"ps-11"},{trailing:!0,size:"xs",class:"pe-7"},{trailing:!0,size:"sm",class:"pe-8"},{trailing:!0,size:"md",class:"pe-9"},{trailing:!0,size:"lg",class:"pe-10"},{trailing:!0,size:"xl",class:"pe-11"},{loading:!0,leading:!0,class:{leadingIcon:"animate-spin"}},{loading:!0,leading:!1,trailing:!0,class:{trailingIcon:"animate-spin"}},{fixed:!1,size:"xs",class:"md:text-xs"},{fixed:!1,size:"sm",class:"md:text-xs"},{fixed:!1,size:"md",class:"md:text-sm"},{fixed:!1,size:"lg",class:"md:text-sm"}],defaultVariants:{size:"md",color:"primary",variant:"outline",position:"popper"}},Ia=Object.assign({inheritAttrs:!1},{__name:"SelectMenu",props:jt({id:{type:String,required:!1},placeholder:{type:String,required:!1},searchInput:{type:[Boolean,Object],required:!1,default:!0},color:{type:null,required:!1},variant:{type:null,required:!1},size:{type:null,required:!1},required:{type:Boolean,required:!1},trailingIcon:{type:null,required:!1},selectedIcon:{type:null,required:!1},clear:{type:[Boolean,Object],required:!1},clearIcon:{type:null,required:!1},content:{type:Object,required:!1},arrow:{type:[Boolean,Object],required:!1},portal:{type:[Boolean,String],required:!1,skipCheck:!0,default:!0},virtualize:{type:[Boolean,Object],required:!1,default:!1},valueKey:{type:null,required:!1},labelKey:{type:null,required:!1,default:"label"},descriptionKey:{type:null,required:!1,default:"description"},items:{type:null,required:!1},defaultValue:{type:null,required:!1},modelValue:{type:null,required:!1},modelModifiers:{type:null,required:!1},multiple:{type:Boolean,required:!1},highlight:{type:Boolean,required:!1},createItem:{type:[Boolean,String,Object],required:!1},filterFields:{type:Array,required:!1},ignoreFilter:{type:Boolean,required:!1},autofocus:{type:Boolean,required:!1},autofocusDelay:{type:Number,required:!1,default:0},class:{type:null,required:!1},ui:{type:Object,required:!1},open:{type:Boolean,required:!1},defaultOpen:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},name:{type:String,required:!1},resetSearchTermOnBlur:{type:Boolean,required:!1,default:!0},resetSearchTermOnSelect:{type:Boolean,required:!1,default:!0},resetModelValueOnClear:{type:Boolean,required:!1,default:!0},highlightOnHover:{type:Boolean,required:!1},by:{type:[String,Function],required:!1},icon:{type:null,required:!1},avatar:{type:Object,required:!1},leading:{type:Boolean,required:!1},leadingIcon:{type:null,required:!1},trailing:{type:Boolean,required:!1},loading:{type:Boolean,required:!1},loadingIcon:{type:null,required:!1}},{searchTerm:{type:String,default:""},searchTermModifiers:{}}),emits:jt(["change","blur","focus","create","clear","highlight","update:modelValue","update:open"],["update:searchTerm"]),setup(u,{expose:n,emit:t}){const o=u,s=t,i=ha(),l=Za("selectMenu",o),r=ca(u,"searchTerm",{type:String,default:""}),{t:m}=Co(),x=os(),{filterGroups:h}=en(),S=es(ts(l,"modelValue","defaultValue","open","defaultOpen","required","multiple","resetSearchTermOnBlur","resetSearchTermOnSelect","resetModelValueOnClear","highlightOnHover","by"),s),y=$o(Fe(()=>l.portal)),I=Fe(()=>Ct(l.content,{side:"bottom",sideOffset:8,collisionPadding:8,position:"popper"})),w=Fe(()=>Ct(l.arrow,{rounded:!0})),v=q(()=>typeof l.clear=="object"?l.clear:{}),_=Fe(()=>l.virtualize?Ct(typeof l.virtualize=="boolean"?{}:l.virtualize,{estimateSize:zi(K.value,J.value||"md",l.descriptionKey,!!i["item-description"])}):!1),k=Fe(()=>Ct(l.searchInput,{placeholder:m("selectMenu.search"),variant:"none"})),{emitFormBlur:C,emitFormFocus:$,emitFormInput:g,emitFormChange:b,size:F,color:E,id:z,name:T,highlight:M,disabled:L,ariaAttrs:N}=as(o),{orientation:U,size:H}=ss(o),{isLeading:ie,isTrailing:se,leadingIconName:P,trailingIconName:R}=ns(Fe(()=>Ct(l,{trailingIcon:x.ui.icons.chevronDown}))),J=q(()=>H.value||F.value),[fe,X]=Va(),[W,ae]=Va({props:{item:{type:[Object,String,Number,Boolean],required:!0},index:{type:Number,required:!1}}}),O=q(()=>Ut({extend:Ut(Di),...x.ui?.selectMenu||{}})({color:E.value??l.color,variant:l.variant,size:J?.value??l.size,loading:l.loading,highlight:M.value??l.highlight,leading:ie.value||!!l.avatar||!!i.leading,trailing:se.value||!!i.trailing,fieldGroup:U.value,virtualize:!!l.virtualize,multiple:l.multiple}));function ue(Y){if(l.multiple&&Array.isArray(Y)){const Ie=Y.map(G=>Fa(xe.value,G,{labelKey:l.labelKey,valueKey:l.valueKey,by:l.by})).filter(G=>G!=null&&G!=="");return Ie.length>0?Ie.join(", "):void 0}return Fa(xe.value,Y,{labelKey:l.labelKey,valueKey:l.valueKey,by:l.by})}const we=q(()=>l.items?.length?Ao(l.items)?l.items:[l.items]:[]),xe=q(()=>we.value.flatMap(Y=>Y)),te=q(()=>{if(l.ignoreFilter||!r.value)return we.value;const Y=Array.isArray(l.filterFields)?l.filterFields:[l.labelKey];return h(we.value,r.value,{fields:Y,isStructural:Ie=>Te(Ie)&&!!Ie.type&&["label","separator"].includes(Ie.type)})}),K=q(()=>te.value.flatMap(Y=>Y)),j=q(()=>{if(!l.createItem||!r.value)return!1;const Y=l.valueKey?{[l.valueKey]:r.value}:r.value;return typeof l.createItem=="object"&&l.createItem.when==="always"||l.createItem==="always"?!K.value.find(Ie=>Mo(Ie,Y,l.by??l.valueKey)):!K.value.length}),de=q(()=>typeof l.createItem=="object"?l.createItem.position:"bottom"),be=Bt("triggerRef");function ke(){l.autofocus&&be.value?.$el?.focus({focusVisible:!0})}De(()=>{setTimeout(()=>{ke()},l.autofocusDelay)});function ze(Y){if(ls(l.modelValue)===Y)return;l.modelModifiers?.trim&&(typeof Y=="string"||Y===null||Y===void 0)&&(Y=Y?.trim()??null),l.modelModifiers?.number&&(Y=To(Y)),l.modelModifiers?.nullable&&(Y??=null),l.modelModifiers?.optional&&!l.modelModifiers?.nullable&&Y!==null&&(Y??=void 0);const Ie=new Event("change",{target:{value:Y}});s("change",Ie),b(),g(),l.resetSearchTermOnSelect&&(r.value="")}const je=A(!1);function qe(Y){je.value=Y;let Ie;if(Y){const G=new FocusEvent("focus");s("focus",G),$(),clearTimeout(Ie)}else{const G=new FocusEvent("blur");s("blur",G),C(),l.resetSearchTermOnBlur&&(Ie=setTimeout(()=>{r.value=""},100))}}function He(Y){Y.preventDefault(),Y.stopPropagation(),s("create",r.value)}function Ue(Y,Ie){if(Te(Ie)){if(Ie.disabled){Y.preventDefault();return}Ie.onSelect?.(Y)}}function Te(Y){return typeof Y=="object"&&Y!==null}function re(Y){return l.multiple&&Array.isArray(Y)?Y.length===0:Y==null||Y===""}function ce(){s("clear")}const Q=Bt("viewportRef"),oe=Bt("comboboxRootRef");return pe(()=>l.items,async()=>{je.value&&(await Re(),oe.value?.highlightFirstItem?.())},{flush:"post"}),n({triggerRef:Fe(()=>be.value?.$el),viewportRef:Fe(()=>Q.value)}),(Y,Ie)=>(d(),p(ne,null,[f(e(fe),null,{default:D(()=>[f(e(Ua),{"data-slot":"item",class:Z(O.value.item({class:e(l).ui?.item})),value:r.value,onSelect:He},{default:D(()=>[a("span",{"data-slot":"itemLabel",class:Z(O.value.itemLabel({class:e(l).ui?.itemLabel}))},[ve(Y.$slots,"create-item-label",{item:r.value},()=>[ee(c(e(m)("selectMenu.create",{label:r.value})),1)])],2)]),_:3},8,["class","value"])]),_:3}),f(e(W),null,{default:D(({item:G,index:me})=>[Te(G)&&G.type==="label"?(d(),B(e(Ol),{key:0,"data-slot":"label",class:Z(O.value.label({class:[e(l).ui?.label,G.ui?.label,G.class]}))},{default:D(()=>[ee(c(e(dt)(G,e(l).labelKey)),1)]),_:2},1032,["class"])):Te(G)&&G.type==="separator"?(d(),B(e(jl),{key:1,"data-slot":"separator",class:Z(O.value.separator({class:[e(l).ui?.separator,G.ui?.separator,G.class]}))},null,8,["class"])):(d(),B(e(Ua),{key:2,"data-slot":"item",class:Z(O.value.item({class:[e(l).ui?.item,Te(G)&&G.ui?.item,Te(G)&&G.class]})),disabled:Te(G)&&G.disabled,value:e(l).valueKey&&Te(G)?e(dt)(G,e(l).valueKey):G,onSelect:$e=>Ue($e,G)},{default:D(()=>[ve(Y.$slots,"item",{item:G,index:me,ui:O.value},()=>[ve(Y.$slots,"item-leading",{item:G,index:me,ui:O.value},()=>[Te(G)&&G.icon?(d(),B(Se,{key:0,name:G.icon,"data-slot":"itemLeadingIcon",class:Z(O.value.itemLeadingIcon({class:[e(l).ui?.itemLeadingIcon,G.ui?.itemLeadingIcon]}))},null,8,["name","class"])):Te(G)&&G.avatar?(d(),B(ma,Ae({key:1,size:G.ui?.itemLeadingAvatarSize||e(l).ui?.itemLeadingAvatarSize||O.value.itemLeadingAvatarSize()},G.avatar,{"data-slot":"itemLeadingAvatar",class:O.value.itemLeadingAvatar({class:[e(l).ui?.itemLeadingAvatar,G.ui?.itemLeadingAvatar]})}),null,16,["size","class"])):Te(G)&&G.chip?(d(),B(So,Ae({key:2,size:G.ui?.itemLeadingChipSize||e(l).ui?.itemLeadingChipSize||O.value.itemLeadingChipSize(),inset:"",standalone:""},G.chip,{"data-slot":"itemLeadingChip",class:O.value.itemLeadingChip({class:[e(l).ui?.itemLeadingChip,G.ui?.itemLeadingChip]})}),null,16,["size","class"])):V("",!0)]),a("span",{"data-slot":"itemWrapper",class:Z(O.value.itemWrapper({class:[e(l).ui?.itemWrapper,Te(G)&&G.ui?.itemWrapper]}))},[a("span",{"data-slot":"itemLabel",class:Z(O.value.itemLabel({class:[e(l).ui?.itemLabel,Te(G)&&G.ui?.itemLabel]}))},[ve(Y.$slots,"item-label",{item:G,index:me},()=>[ee(c(Te(G)?e(dt)(G,e(l).labelKey):G),1)])],2),Te(G)&&(e(dt)(G,e(l).descriptionKey)||i["item-description"])?(d(),p("span",{key:0,"data-slot":"itemDescription",class:Z(O.value.itemDescription({class:[e(l).ui?.itemDescription,Te(G)&&G.ui?.itemDescription]}))},[ve(Y.$slots,"item-description",{item:G,index:me},()=>[ee(c(e(dt)(G,e(l).descriptionKey)),1)])],2)):V("",!0)],2),a("span",{"data-slot":"itemTrailing",class:Z(O.value.itemTrailing({class:[e(l).ui?.itemTrailing,Te(G)&&G.ui?.itemTrailing]}))},[ve(Y.$slots,"item-trailing",{item:G,index:me,ui:O.value}),f(e(Fl),{"as-child":""},{default:D(()=>[f(Se,{name:e(l).selectedIcon||e(x).ui.icons.check,"data-slot":"itemTrailingIcon",class:Z(O.value.itemTrailingIcon({class:[e(l).ui?.itemTrailingIcon,Te(G)&&G.ui?.itemTrailingIcon]}))},null,8,["name","class"])]),_:2},1024)],2)])]),_:2},1032,["class","disabled","value","onSelect"]))]),_:3}),f(e(vl),Ae({ref_key:"comboboxRootRef",ref:oe},e(S),{"ignore-filter":"","as-child":"",name:e(T),disabled:e(L),"onUpdate:modelValue":ze,"onUpdate:open":qe}),{default:D(({modelValue:G,open:me})=>[f(e(yl),{"as-child":""},{default:D(()=>[f(e(Wl),Ae({id:e(z),ref_key:"triggerRef",ref:be,"data-slot":"base",class:O.value.base({class:[e(l).ui?.base,e(l).class]}),tabindex:"0"},{...Y.$attrs,...e(N)}),{default:D(()=>[e(ie)||e(l).avatar||i.leading?(d(),p("span",{key:0,"data-slot":"leading",class:Z(O.value.leading({class:e(l).ui?.leading}))},[ve(Y.$slots,"leading",{modelValue:G,open:me,ui:O.value},()=>[e(ie)&&e(P)?(d(),B(Se,{key:0,name:e(P),"data-slot":"leadingIcon",class:Z(O.value.leadingIcon({class:e(l).ui?.leadingIcon}))},null,8,["name","class"])):e(l).avatar?(d(),B(ma,Ae({key:1,size:e(l).ui?.itemLeadingAvatarSize||O.value.itemLeadingAvatarSize()},e(l).avatar,{"data-slot":"itemLeadingAvatar",class:O.value.itemLeadingAvatar({class:e(l).ui?.itemLeadingAvatar})}),null,16,["size","class"])):V("",!0)])],2)):V("",!0),ve(Y.$slots,"default",{modelValue:G,open:me,ui:O.value},()=>[(d(!0),p(ne,null,he([ue(G)],$e=>(d(),p(ne,{key:$e},[$e!=null?(d(),p("span",{key:0,"data-slot":"value",class:Z(O.value.value({class:e(l).ui?.value}))},c($e),3)):(d(),p("span",{key:1,"data-slot":"placeholder",class:Z(O.value.placeholder({class:e(l).ui?.placeholder}))},c(e(l).placeholder??" "),3))],64))),128))]),e(se)||i.trailing||e(l).clear?(d(),p("span",{key:1,"data-slot":"trailing",class:Z(O.value.trailing({class:e(l).ui?.trailing}))},[ve(Y.$slots,"trailing",{modelValue:G,open:me,ui:O.value},()=>[e(l).clear&&!re(G)?(d(),B(e(Sl),{key:0,"as-child":""},{default:D(()=>[f(Ne,Ae({as:"span",icon:e(l).clearIcon||e(x).ui.icons.close,size:J.value,variant:"link",color:"neutral",tabindex:"-1"},v.value,{"data-slot":"trailingClear",class:O.value.trailingClear({class:e(l).ui?.trailingClear}),onClick:Oe(ce,["stop"])}),null,16,["icon","size","class"])]),_:1})):e(R)?(d(),B(Se,{key:1,name:e(R),"data-slot":"trailingIcon",class:Z(O.value.trailingIcon({class:e(l).ui?.trailingIcon}))},null,8,["name","class"])):V("",!0)])],2)):V("",!0)]),_:2},1040,["id","class"])]),_:2},1024),f(e(Pl),mt(St(e(y))),{default:D(()=>[f(e(Io),null,{default:D(()=>[f(e(Tl),Ae({"data-slot":"content",class:O.value.content({class:e(l).ui?.content})},I.value),{default:D(()=>[f(e(Ja),{trapped:"","data-slot":"focusScope",class:Z(O.value.focusScope({class:e(l).ui?.focusScope}))},{default:D(()=>[ve(Y.$slots,"content-top"),e(l).searchInput?(d(),B(e(Ll),{key:0,modelValue:r.value,"onUpdate:modelValue":Ie[1]||(Ie[1]=$e=>r.value=$e),"display-value":()=>r.value,"as-child":""},{default:D(()=>[f(qt,Ae({autofocus:"",autocomplete:"off",size:J.value},k.value,{"model-modifiers":{trim:e(l).modelModifiers?.trim},"data-slot":"input",class:O.value.input({class:e(l).ui?.input}),onChange:Ie[0]||(Ie[0]=Oe(()=>{},["stop"]))}),null,16,["size","model-modifiers","class"])]),_:1},8,["modelValue","display-value"])):V("",!0),f(e(Al),{"data-slot":"empty",class:Z(O.value.empty({class:e(l).ui?.empty}))},{default:D(()=>[ve(Y.$slots,"empty",{searchTerm:r.value},()=>[ee(c(r.value?e(m)("selectMenu.noMatch",{searchTerm:r.value}):e(m)("selectMenu.noData")),1)])]),_:3},8,["class"]),a("div",{ref_key:"viewportRef",ref:Q,role:"presentation","data-slot":"viewport",class:Z(O.value.viewport({class:e(l).ui?.viewport}))},[e(l).virtualize?(d(),p(ne,{key:0},[j.value&&de.value==="top"?(d(),B(e(X),{key:0})):V("",!0),f(e(Hl),Ae({options:K.value,"text-content":$e=>Te($e)?e(dt)($e,e(l).labelKey):String($e)},_.value),{default:D(({option:$e,virtualItem:Ye})=>[f(e(ae),{item:$e,index:Ye.index},null,8,["item","index"])]),_:1},16,["options","text-content"]),j.value&&de.value==="bottom"?(d(),B(e(X),{key:1})):V("",!0)],64)):(d(),p(ne,{key:1},[j.value&&de.value==="top"?(d(),B(e(la),{key:0,"data-slot":"group",class:Z(O.value.group({class:e(l).ui?.group}))},{default:D(()=>[f(e(X))]),_:1},8,["class"])):V("",!0),(d(!0),p(ne,null,he(te.value,($e,Ye)=>(d(),B(e(la),{key:`group-${Ye}`,"data-slot":"group",class:Z(O.value.group({class:e(l).ui?.group}))},{default:D(()=>[(d(!0),p(ne,null,he($e,(We,Le)=>(d(),B(e(ae),{key:`group-${Ye}-${Le}`,item:We,index:Le},null,8,["item","index"]))),128))]),_:2},1032,["class"]))),128)),j.value&&de.value==="bottom"?(d(),B(e(la),{key:1,"data-slot":"group",class:Z(O.value.group({class:e(l).ui?.group}))},{default:D(()=>[f(e(X))]),_:1},8,["class"])):V("",!0)],64))],2),ve(Y.$slots,"content-bottom")]),_:3},8,["class"]),e(l).arrow?(d(),B(e(Cl),Ae({key:0},w.value,{"data-slot":"arrow",class:O.value.arrow({class:e(l).ui?.arrow})}),null,16,["class"])):V("",!0)]),_:3},16,["class"])]),_:3})]),_:3},16)]),_:3},16,["name","disabled"])],64))}}),Li={"zh-CN":{message:"消息记录",member:"成员",meta:"群信息",member_name_history:"昵称历史"},"en-US":{message:"Messages",member:"Members",meta:"Chat Info",member_name_history:"Nickname History"}},ga={"zh-CN":{message:{id:"消息ID",sender_id:"发送者ID",sender_account_name:"发送时账号名",sender_group_nickname:"发送时群昵称",ts:"时间戳(秒)",type:"消息类型",content:"消息内容"},member:{id:"成员ID",platform_id:"平台ID",account_name:"账号名称",group_nickname:"群昵称",aliases:"自定义别名"},meta:{name:"群名称",platform:"平台",type:"聊天类型",imported_at:"导入时间"},member_name_history:{id:"记录ID",member_id:"成员ID",name_type:"名称类型",name:"昵称值",start_ts:"开始时间",end_ts:"结束时间"}},"en-US":{message:{id:"Message ID",sender_id:"Sender ID",sender_account_name:"Sender Account",sender_group_nickname:"Sender Nickname",ts:"Timestamp (sec)",type:"Message Type",content:"Content"},member:{id:"Member ID",platform_id:"Platform ID",account_name:"Account Name",group_nickname:"Group Nickname",aliases:"Custom Aliases"},meta:{name:"Chat Name",platform:"Platform",type:"Chat Type",imported_at:"Imported At"},member_name_history:{id:"Record ID",member_id:"Member ID",name_type:"Name Type",name:"Nickname",start_ts:"Start Time",end_ts:"End Time"}}};function fa(u,n="zh-CN"){return Li[bs(n)]?.[u]||u}function Ta(u,n,t="zh-CN"){return ga[bs(t)]?.[u]?.[n]||n}function bs(u){return u.startsWith("zh")?"zh-CN":"en-US"}const Ei={key:0,class:"text-xs font-medium text-gray-500 dark:text-gray-400"},Vi={key:0,class:"flex-1 overflow-y-auto p-2"},Fi=["onClick"],Ri={class:"text-sm font-medium text-gray-700 dark:text-gray-300"},Oi={class:"flex-1 truncate text-right text-xs text-gray-400"},Bi={key:0,class:"ml-4 mt-1 space-y-0.5"},Pi=["title","onDblclick"],Ni={class:"font-mono text-gray-700 dark:text-gray-300"},ji={class:"flex-1 truncate text-right text-[10px] text-gray-400"},Ui={key:1,class:"flex flex-1 flex-col items-center gap-1 overflow-y-auto px-2 pb-2"},Wi=["title","onClick"],Ki=le({__name:"SchemaPanel",props:{sessionId:{}},emits:["insertColumn"],setup(u,{expose:n,emit:t}){const{t:o,locale:s}=Ce(),i=u,l=t,r=A(!1),m=A([]),x=A(new Set);async function h(){try{m.value=await Pe().getSchema(i.sessionId),m.value.forEach(w=>x.value.add(w.name))}catch(w){console.error("加载 Schema 失败:",w)}}function S(w){x.value.has(w)?x.value.delete(w):x.value.add(w)}function y(w){r.value=!1,x.value.add(w)}function I(w,v){l("insertColumn",w,v)}return n({loadSchema:h,schema:m}),De(()=>{h()}),(w,v)=>{const _=Se,k=Ne;return d(),p("div",{class:Z(["m-3 flex h-[calc(100%-1.5rem)] shrink-0 flex-col overflow-hidden rounded-lg bg-white transition-all duration-300 ease-in-out dark:bg-sidebar-dark",r.value?"w-14":"w-56"])},[a("div",{class:Z(["flex items-center",r.value?"justify-center px-2 pb-2 pt-5":"justify-between border-b border-gray-200 py-2 pl-3 pr-2 dark:border-gray-800"])},[r.value?V("",!0):(d(),p("span",Ei,c(e(o)("ai.sqlLab.schema.tables")),1)),r.value?(d(),p("button",{key:2,type:"button",class:"group relative flex h-9 w-9 cursor-pointer items-center justify-center rounded-full hover:bg-gray-200/60 dark:hover:bg-white/[0.06]",onClick:v[1]||(v[1]=C=>r.value=!r.value)},[f(_,{name:"i-lucide-panel-right-open",class:"size-4 scale-x-[-1]"})])):(d(),B(k,{key:1,color:"neutral",variant:"ghost",size:"sm",class:"group flex h-9 w-9 cursor-pointer items-center justify-center rounded-full hover:bg-gray-200/60 dark:hover:bg-white/[0.06]",onClick:v[0]||(v[0]=C=>r.value=!r.value)},{default:D(()=>[f(_,{name:"i-lucide-panel-right",class:"size-4 scale-x-[-1] group-hover:hidden"}),f(_,{name:"i-lucide-panel-right-close",class:"size-4 hidden scale-x-[-1] group-hover:block"})]),_:1}))],2),r.value?(d(),p("div",Ui,[(d(!0),p(ne,null,he(m.value,C=>(d(),p("button",{key:C.name,class:"flex h-10 w-10 items-center justify-center rounded-lg text-gray-600 transition-colors hover:bg-gray-200/40 hover:text-primary-600 dark:text-gray-300 dark:hover:bg-white/[0.06] dark:hover:text-primary-400",title:`${e(fa)(C.name,e(s))} (${C.name})`,onClick:$=>y(C.name)},[f(_,{name:"i-heroicons-table-cells",class:"h-5 w-5"})],8,Wi))),128))])):(d(),p("div",Vi,[(d(!0),p(ne,null,he(m.value,C=>(d(),p("div",{key:C.name,class:"mb-2"},[a("button",{class:"flex w-full items-center gap-1 rounded px-2 py-1.5 text-left transition-colors hover:bg-gray-100 dark:hover:bg-gray-800",onClick:$=>S(C.name)},[f(_,{name:x.value.has(C.name)?"i-heroicons-chevron-down":"i-heroicons-chevron-right",class:"h-3 w-3 shrink-0 text-gray-400"},null,8,["name"]),f(_,{name:"i-heroicons-table-cells",class:"h-4 w-4 shrink-0 text-pink-500"}),a("span",Ri,c(C.name),1),a("span",Oi,c(e(fa)(C.name,e(s))),1)],8,Fi),x.value.has(C.name)?(d(),p("div",Bi,[(d(!0),p(ne,null,he(C.columns,$=>(d(),p("button",{key:$.name,class:"flex w-full items-center gap-2 rounded px-2 py-1 text-left text-xs transition-colors hover:bg-gray-100 dark:hover:bg-gray-800",title:e(o)("ai.sqlLab.schema.doubleClickToInsert"),onDblclick:g=>I(C.name,$.name)},[$.pk?(d(),B(_,{key:0,name:"i-heroicons-key",class:"h-3 w-3 shrink-0 text-yellow-500",title:e(o)("ai.sqlLab.schema.primaryKey")},null,8,["title"])):V("",!0),a("span",Ni,c($.name),1),a("span",ji,c(e(Ta)(C.name,$.name,e(s))),1)],40,Pi))),128))])):V("",!0)]))),128))]))],2)}}}),Hi={class:"max-h-[70vh] overflow-hidden p-6"},Yi={class:"mb-4 flex items-center gap-2"},Qi={class:"text-lg font-semibold text-gray-900 dark:text-white"},Gi={key:0,class:"max-h-[50vh] space-y-3 overflow-y-auto pr-2"},Ji={class:"mb-2 flex items-start justify-between gap-2"},Xi={class:"flex-1 text-sm font-medium text-gray-700 dark:text-gray-300"},Zi={class:"shrink-0 text-xs text-gray-400"},er={class:"mb-2 rounded bg-white p-2 dark:bg-gray-800"},tr={class:"whitespace-pre-wrap break-all font-mono text-xs text-gray-600 dark:text-gray-400"},ar={key:0,class:"mb-2 text-xs text-gray-500 dark:text-gray-400"},sr={class:"flex justify-end gap-2"},or={key:1,class:"py-8 text-center text-gray-500 dark:text-gray-400"},nr={class:"text-sm"},lr={class:"mt-4 flex justify-end"},ir=le({__name:"AIHistoryModal",props:{open:{type:Boolean},history:{}},emits:["update:open","execute","delete"],setup(u,{emit:n}){const{t}=Ce(),o=n;function s(i){const l=new Date(i),r=new Date,m=r.getTime()-i;return m<6e4?t("ai.sqlLab.history.justNow"):m<36e5?t("ai.sqlLab.history.minutesAgo",{count:Math.floor(m/6e4)}):m<864e5?t("ai.sqlLab.history.hoursAgo",{count:Math.floor(m/36e5)}):l.toDateString()===r.toDateString()?t("ai.sqlLab.history.today"):`${l.getMonth()+1}/${l.getDate()}`}return(i,l)=>{const r=Se,m=Ne,x=Xe;return d(),B(x,{open:u.open,ui:{content:"max-w-5xl"},"onUpdate:open":l[1]||(l[1]=h=>o("update:open",h))},{content:D(()=>[a("div",Hi,[a("div",Yi,[f(r,{name:"i-heroicons-clock",class:"h-5 w-5 text-pink-500"}),a("h3",Qi,c(e(t)("ai.sqlLab.history.title")),1)]),u.history.length>0?(d(),p("div",Gi,[(d(!0),p(ne,null,he(u.history,h=>(d(),p("div",{key:h.id,class:"rounded-lg border border-gray-200 bg-gray-50 p-3 dark:border-gray-700 dark:bg-page-dark"},[a("div",Ji,[a("p",Xi,c(h.prompt),1),a("span",Zi,c(s(h.timestamp)),1)]),a("div",er,[a("pre",tr,c(h.sql),1)]),h.explanation?(d(),p("p",ar,c(h.explanation),1)):V("",!0),a("div",sr,[f(m,{variant:"ghost",size:"xs",color:"error",onClick:S=>o("delete",h.id)},{default:D(()=>[f(r,{name:"i-heroicons-trash",class:"h-3.5 w-3.5"})]),_:1},8,["onClick"]),f(m,{size:"xs",onClick:S=>o("execute",h)},{default:D(()=>[f(r,{name:"i-heroicons-play",class:"mr-1 h-3.5 w-3.5"}),ee(" "+c(e(t)("ai.sqlLab.history.execute")),1)]),_:1},8,["onClick"])])]))),128))])):(d(),p("div",or,[f(r,{name:"i-heroicons-clock",class:"mx-auto mb-2 h-8 w-8 text-gray-300 dark:text-gray-600"}),a("p",nr,c(e(t)("ai.sqlLab.history.empty")),1)])),a("div",lr,[f(m,{variant:"ghost",onClick:l[0]||(l[0]=h=>o("update:open",!1))},{default:D(()=>[ee(c(e(t)("common.close")),1)]),_:1})])])]),_:1},8,["open"])}}}),rr={class:"flex flex-1 flex-col overflow-hidden"},ur={key:0,class:"border-b border-red-200 bg-red-50 p-4 dark:border-red-900 dark:bg-red-950"},dr={class:"flex items-start gap-2"},cr={class:"min-w-0 flex-1"},mr={class:"text-sm font-medium text-red-800 dark:text-red-200"},pr={class:"mt-1 break-all font-mono text-xs text-red-600 dark:text-red-400"},gr={key:1,class:"flex items-center justify-between border-b border-gray-200 bg-gray-50 px-4 py-2 dark:border-gray-800 dark:bg-page-dark"},fr={class:"flex items-center gap-4 text-sm text-gray-600 dark:text-gray-400"},vr={class:"flex cursor-pointer items-center gap-1.5"},hr={class:"text-xs"},yr={class:"flex items-center gap-2"},xr={key:2,class:"flex-1 overflow-auto"},br={class:"min-w-full divide-y divide-gray-200 dark:divide-gray-700"},_r={class:"sticky top-0 bg-gray-100 dark:bg-page-dark"},kr=["onClick"],wr={class:"flex items-center gap-1"},Cr={class:"flex flex-col"},$r={class:"text-gray-700 dark:text-gray-300"},Sr={key:0,class:"font-mono text-[10px] text-gray-400"},Ir={key:0,class:"sticky right-0 w-12 bg-gray-100 px-2 py-2 dark:bg-page-dark"},Tr={class:"divide-y divide-gray-200 bg-white dark:divide-gray-700 dark:bg-page-dark"},Mr=["title"],Ar={key:0,class:"sticky right-0 w-12 bg-white px-2 py-2 dark:bg-page-dark"},qr={key:3,class:"flex shrink-0 items-center gap-4 border-t border-gray-200 bg-gray-50 px-4 py-2 dark:border-gray-800 dark:bg-page-dark"},zr={class:"flex items-center gap-1"},Dr={class:"mx-2 text-xs text-gray-600 dark:text-gray-400"},Lr={class:"flex items-center gap-2 text-xs text-gray-500 dark:text-gray-400"},Er={key:4,class:"flex flex-1 items-center justify-center text-gray-500 dark:text-gray-400"},Vr={class:"text-center"},Fr={class:"mt-2 text-sm"},Rr={key:5,class:"flex flex-1 items-center justify-center text-gray-500 dark:text-gray-400"},Or={class:"text-center"},Br={class:"mt-2 text-sm"},Pr={class:"mt-1 text-xs text-gray-400"},Nr={class:"max-h-[70vh] overflow-hidden p-6"},jr={class:"mb-4 flex items-center gap-2"},Ur={class:"text-lg font-semibold text-gray-900 dark:text-white"},Wr={key:0,class:"flex items-center justify-center py-8"},Kr={class:"ml-2 text-sm text-gray-500"},Hr={key:1,class:"max-h-[50vh] overflow-y-auto"},Yr=["innerHTML"],Qr={key:0,class:"mt-2 flex items-center text-xs text-gray-400"},Gr={key:2,class:"rounded-lg bg-red-50 p-4 dark:bg-red-950"},Jr={class:"text-sm text-red-600 dark:text-red-400"},Xr={class:"mt-4 flex justify-end gap-2"},Zr=le({__name:"ResultTable",props:{result:{},error:{},sql:{},prompt:{}},setup(u,{expose:n}){const{t,locale:o}=Ce(),s=_t(),i=us(),l=zt(),{aiGlobalSettings:r}=bt(i),m=[/^ts$/i,/^timestamp$/i,/^time$/i,/_at$/i,/_ts$/i,/_time$/i,/^date$/i];function x(K){return m.some(j=>j.test(K))}function h(K){if(typeof K!="number"||!Number.isFinite(K))return!1;const j=946684800,de=4102444800,be=j*1e3,ke=de*1e3;return K>=j&&K<=de||K>=be&&K<=ke}function S(K){const de=K>1e10?K:K*1e3;return Ve(de).format("YYYY-MM-DD HH:mm:ss")}const y=[/^id$/i,/^message_id$/i,/^msg_id$/i,/^msgid$/i];function I(K){return K.findIndex(j=>y.some(de=>de.test(j)))}function w(K){l.openChatRecordDrawer({scrollToMessageId:K})}const v=new Ho({html:!1,breaks:!0,linkify:!0,typographer:!0}),_=u,k=A(null),C=A("asc"),$=A(1),g=A(100),b=[50,100,200,500],F=A(localStorage.getItem("sql-lab-readable-time")!=="false");function E(){F.value=!F.value,localStorage.setItem("sql-lab-readable-time",String(F.value))}const z=A(!1),T=A(!1),M=A(""),L=A(null),N=A(""),U=A(!1);function H(K){const j=K.split("."),de=j.length>1?j[j.length-1]:K,be=ga[o.value]||ga["zh-CN"];for(const ke of Object.values(be))if(ke[de])return ke[de];return null}const ie=q(()=>{if(!_.result||!k.value)return _.result?.rows||[];const K=_.result.columns.indexOf(k.value);return K===-1?_.result.rows:[..._.result.rows].sort((j,de)=>{const be=j[K],ke=de[K];if(be===null)return 1;if(ke===null)return-1;if(typeof be=="number"&&typeof ke=="number")return C.value==="asc"?be-ke:ke-be;const ze=String(be).localeCompare(String(ke));return C.value==="asc"?ze:-ze})}),se=q(()=>_.result?Math.ceil(ie.value.length/g.value):0),P=q(()=>{const K=($.value-1)*g.value,j=K+g.value;return ie.value.slice(K,j)}),R=q(()=>_.result?I(_.result.columns):-1),J=q(()=>R.value!==-1);function fe(K){k.value===K?C.value=C.value==="asc"?"desc":"asc":(k.value=K,C.value="asc"),$.value=1}function X(K){g.value=K,$.value=1}function W(K,j){return K===null?"NULL":typeof K=="object"?JSON.stringify(K):F.value&&j&&x(j)&&h(K)?S(K):String(K)}async function ae(){if(!(!_.result||U.value)){U.value=!0;try{const K=r.value.sqlExportFormat??"csv",j=await di({columns:_.result.columns,rows:_.result.rows},K);if(j.success&&j.filePath){const de=j.filePath.split("/").pop()||j.filePath;s.add({title:t("common.exportSuccess"),description:de,color:"primary",actions:[{label:t("common.openFolder"),onClick:()=>{Yo().showInFolder(j.filePath)}}]})}else s.fail(t("common.exportFailed"),{description:j.error})}catch(K){console.error("导出失败:",K),s.fail(t("common.exportFailed"),{description:String(K)})}finally{U.value=!1}}}function O(){k.value=null,C.value="asc",$.value=1}function ue(){if(!_.result)return"";const K=50,j=_.result.rows.slice(0,K),de=_.result.columns.join(" | "),be=_.result.columns.map(()=>"---").join(" | "),ke=j.map(je=>je.map(qe=>qe===null?"NULL":String(qe).slice(0,50)).join(" | "));let ze=`| ${de} |
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/service-BwbGKwDn.js","assets/index-bQ9oj54q.js","assets/vendor-snapdom--nZvo8Sg.js","assets/index-BZpR015e.css","assets/EChartWordcloud-ChKJM8bU.js","assets/vendor-echarts-wordcloud-DNiU8Psq.js","assets/vendor-echarts-C9ugTmum.js","assets/vendor-zrender-D8psf1AA.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{bm as jt,aS as it,d as le,aO as At,v as xt,b$ as Hs,bw as ha,aP as ht,K as me,o as d,f as B,w as D,r as ve,g as e,l as V,C as Re,P as Be,ag as qt,b as A,ck as Bt,A as Ys,ch as Qs,cm as Gs,dH as Ya,z as f,aQ as Ze,aR as Oe,dI as Js,x as De,y as Je,e as q,s as pt,m as Ae,u as Ke,dJ as Xs,c7 as Zs,dK as Qa,G as eo,dL as Va,ar as ya,dM as to,dN as ao,c8 as Ga,dO as so,c as p,F as ne,j as he,k as Ja,O as et,dP as oo,be as Xa,bV as no,cB as lo,ca as io,bZ as ro,bY as uo,b_ as co,bW as mo,c1 as Za,c2 as po,bX as go,a$ as mt,c4 as fo,c5 as vo,bn as ho,a9 as ee,p as c,b0 as It,c9 as yo,dQ as xo,dR as bo,aH as Fe,dS as ca,aI as Ve,bt as xa,L as Pe,bR as St,a,n as Z,_ as _o,E as ko,al as ba,H as wo,ah as gt,a6 as Ce,ac as Gt,bD as dt,as as es,a0 as ma,at as Co,aT as ts,aU as as,aY as $o,aV as ss,bB as os,dT as Fa,cb as Pt,a7 as Se,au as pa,cc as So,a8 as Ne,b1 as Io,aq as zt,a3 as Ut,av as ns,bC as ls,cd as Ra,ce as Ct,aM as is,cf as To,aw as Wt,dU as Mo,cg as Ao,aa as Xe,J as Dt,aA as bt,bT as _a,aK as tt,aL as Kt,cE as qo,aF as ot,aE as Tt,aD as rs,ab as Jt,cr as zo,aG as Do,cu as yt,dV as Ft,ay as Lo,bh as Xt,M as ut,bs as us,h as Eo,S as Oa,V as Vo,t as Fo,ap as Ro,bg as Oo,a1 as Bo,aN as Po,a5 as No,co as jo,ct as Ba}from"./index-bQ9oj54q.js";import{L as Uo,i as Wo,_ as Mt,u as Ko}from"./LoadingState.vue_vue_type_script_setup_true_lang-uF54r-dT.js";import{_ as ka}from"./SectionTabs.vue_vue_type_script_setup_true_lang-pVQMbTsj.js";import{_ as Ht,M as Ho}from"./index-BmGA3geF.js";import{_ as rt}from"./ThemeCard.vue_vue_type_script_setup_true_lang-BLmTpx4f.js";import{T as ct}from"./Tabs-BXjD45rO.js";import{_ as wa}from"./Select-H8Fz6RkU.js";import{_ as Ca}from"./Checkbox-CrlY3jiJ.js";import{u as _t}from"./useToast-DPkgv34s.js";import{u as ds}from"./prompt-DNxAd1Bj.js";import{useCacheService as Yo}from"./service-BwbGKwDn.js";import{u as Qo,b as cs,c as Lt,a as Zt}from"./aiChat-CdJzpNYW.js";import{a as Go,s as Jo,f as Xo}from"./ChatRecordWorkspace-DKVKaimw.js";import{j as Zo,k as en,_ as tn,u as an,a as sn,c as on,b as nn,d as na,e as ln,f as rn,g as un,h as dn,i as cn,l as mn}from"./chatMessages-zmzHCUCy.js";import{_ as vt}from"./EChartBar.vue_vue_type_script_setup_true_lang-DjDFhnN9.js";import"./vendor-echarts-wordcloud-DNiU8Psq.js";import{g as ga}from"./base-129JztT1.js";import{u as ea,o as ms,y as ps,q as $a,v as gs,j as ta,i as aa,k as pn,m as gn,t as fn,z as vn}from"./vendor-echarts-C9ugTmum.js";import{_ as hn}from"./EChart.vue_vue_type_script_setup_true_lang-CRTZh9kh.js";import{a as fs}from"./Tabs-DJ5p8gb6.js";import{u as vs}from"./useFormControl-CNmp_2bd.js";import{V as hs}from"./VisuallyHiddenInput-J2KEIQBX.js";import{u as Sa,a as yn,i as xn}from"./semantic-index-config-builder-CQ27G4TK.js";import{c as bn,d as Pa,_ as _n}from"./TimeSelect.vue_vue_type_script_setup_true_lang-geQAlopO.js";import{C as kn}from"./CardDecoration-Cz54ZPyh.js";import{_ as wn}from"./EChartLine.vue_vue_type_script_setup_true_lang-BLqlW9E4.js";import{_ as Cn,u as $n,a as Sn}from"./useTable-BYXxnZMd.js";import{P as In}from"./PageHeader-BciykZ_-.js";import{_ as Tn}from"./PageTabs.vue_vue_type_script_setup_true_lang-2Xe2iUFO.js";import{_ as Mn}from"./Alert-GSvA5B7J.js";import{_ as An}from"./FileDropZone.vue_vue_type_script_setup_true_lang-CsRmQhVQ.js";function Nt(u,n,t){const s=u.findIndex(r=>jt(r,n)),o=u.findIndex(r=>jt(r,t));if(s===-1||o===-1)return[];const[i,l]=[s,o].sort((r,m)=>r-m);return u.slice(i,l+1)}function Na(u){return u?.querySelector("[data-state=checked]")}function qn(u,n,t){return u===void 0?!1:Array.isArray(u)?u.some(s=>lt(s,n,t)):lt(u,n,t)}function lt(u,n,t){return u===void 0||n===void 0?!1:typeof u=="string"?u===n:typeof t=="function"?t(u,n):typeof t=="string"?u?.[t]===n?.[t]:jt(u,n)}const[Et,zn]=it("ListboxRoot");var Dn=le({__name:"ListboxRoot",props:{modelValue:{type:null,required:!1},defaultValue:{type:null,required:!1},multiple:{type:Boolean,required:!1},orientation:{type:String,required:!1,default:"vertical"},dir:{type:String,required:!1},disabled:{type:Boolean,required:!1},selectionBehavior:{type:String,required:!1,default:"toggle"},highlightOnHover:{type:Boolean,required:!1},by:{type:[String,Function],required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},name:{type:String,required:!1},required:{type:Boolean,required:!1}},emits:["update:modelValue","highlight","entryFocus","leave"],setup(u,{expose:n,emit:t}){const s=u,o=t,{multiple:i,highlightOnHover:l,orientation:r,disabled:m,selectionBehavior:y,dir:h}=At(s),{getItems:S}=xt({isProvider:!0}),{handleTypeaheadSearch:x}=Hs(),{primitiveElement:I,currentElement:w}=qt(),v=Gs(),_=ha(h),k=vs(w),C=A(),$=A(!1),g=A(!0),b=ht(s,"modelValue",o,{defaultValue:s.defaultValue??(i.value?[]:void 0),passive:s.modelValue===void 0,deep:!0});function F(te){if($.value=!0,s.multiple){const K=Array.isArray(b.value)?[...b.value]:[],j=K.findIndex(de=>lt(de,te,s.by));s.selectionBehavior==="toggle"?(j===-1?K.push(te):K.splice(j,1),b.value=K):(b.value=[te],C.value=te)}else s.selectionBehavior==="toggle"&<(b.value,te,s.by)?b.value=void 0:b.value=te;setTimeout(()=>{$.value=!1},1)}const E=A(null),z=A(null),T=A(!1),M=A(!1),L=Bt(),N=Bt(),U=Bt();function H(){return S().map(te=>te.ref).filter(te=>te.dataset.disabled!=="")}function ie(te,K=!0,j){if(!te)return;E.value=te,(j??g.value)&&E.value.focus(),K&&E.value.scrollIntoView({block:"nearest"});const de=S().find(be=>be.ref===te);o("highlight",de)}function se(te){if(T.value)U.trigger(te);else{const K=S().find(j=>lt(j.value,te,s.by));K&&(E.value=K.ref,ie(K.ref))}}function P(te){E.value&&E.value.isConnected&&(te.preventDefault(),te.stopPropagation(),M.value||E.value.click())}function R(te){if(g.value){if($.value=!0,T.value)N.trigger(te);else{const K=te.altKey||te.ctrlKey||te.metaKey;if(K&&te.key==="a"&&i.value){const j=S(),de=j.map(ke=>ke.value);b.value=[...de],te.preventDefault();const be=j.at(-1);be&&ie(be.ref)}else if(!K){const j=x(te.key,S());j&&ie(j)}}setTimeout(()=>{$.value=!1},1)}}function J(){M.value=!0}function fe(){Re(()=>{M.value=!1})}function X(){Re(()=>{const te=new KeyboardEvent("keydown",{key:"PageUp"});O(te)})}function W(te){const K=E.value;K?.isConnected&&(z.value=K),E.value=null,o("leave",te)}function ae(te){const K=new CustomEvent("listbox.entryFocus",{bubbles:!1,cancelable:!0});if(te.currentTarget?.dispatchEvent(K),o("entryFocus",K),!K.defaultPrevented)if(z.value)ie(z.value);else{const j=H()?.[0];ie(j)}}function O(te){const K=Ys(te,r.value,_.value);if(!K)return;let j=H();if(E.value){if(K==="last")j.reverse();else if(K==="prev"||K==="next"){K==="prev"&&j.reverse();const de=j.indexOf(E.value);j=j.slice(de+1)}ue(te,j[0])}if(j.length){const de=!E.value&&K==="prev"?j.length-1:0;ie(j[de])}if(T.value)return N.trigger(te)}function ue(te,K){if(!(T.value||s.selectionBehavior!=="replace"||!i.value||!Array.isArray(b.value)||(te.altKey||te.ctrlKey||te.metaKey)&&!te.shiftKey)&&te.shiftKey){const de=S().filter(ze=>ze.ref.dataset.disabled!=="");let be=de.find(ze=>ze.ref===K)?.value;if(te.key===v.END?be=de.at(-1)?.value:te.key===v.HOME&&(be=de[0]?.value),!be||!C.value)return;const ke=Nt(de.map(ze=>ze.value),C.value,be);b.value=ke}}async function we(te,K=!0){if(Qs)if(await Re(),T.value)L.trigger({event:te,scroll:K});else{const j=H(),de=j.find(ke=>ke.dataset.state==="checked"),be=K?void 0:!1;de?ie(de,K,be):j.length&&ie(j[0],K,be)}}let xe=!1;return me(b,()=>{if(!$.value){const te=xe;xe=!0,Re(()=>{we(void 0,te)})}},{immediate:!0,deep:!0}),n({highlightedElement:E,highlightItem:se,highlightFirstItem:X,highlightSelected:we,getItems:S}),zn({modelValue:b,onValueChange:F,multiple:i,orientation:r,dir:_,disabled:m,highlightOnHover:l,highlightedElement:E,isVirtual:T,virtualFocusHook:L,virtualKeydownHook:N,virtualHighlightHook:U,by:s.by,firstValue:C,selectionBehavior:y,focusable:g,onLeave:W,onEnter:ae,changeHighlight:ie,onKeydownEnter:P,onKeydownNavigation:O,onKeydownTypeAhead:R,onCompositionStart:J,onCompositionEnd:fe,highlightFirstItem:X}),(te,K)=>(d(),B(e(Be),{ref_key:"primitiveElement",ref:I,as:te.as,"as-child":te.asChild,dir:e(_),"data-disabled":e(m)?"":void 0,onPointerleave:W,onFocusout:K[0]||(K[0]=async j=>{const de=j.relatedTarget||j.target;await Re(),E.value&&e(w)&&!e(w).contains(de)&&W(j)})},{default:D(()=>[ve(te.$slots,"default",{modelValue:e(b)}),e(k)&&te.name?(d(),B(e(hs),{key:0,name:te.name,value:e(b),disabled:e(m),required:te.required},null,8,["name","value","disabled","required"])):V("v-if",!0)]),_:3},8,["as","as-child","dir","data-disabled"]))}}),Ln=Dn,En=le({__name:"ListboxContent",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(u){const{CollectionSlot:n}=xt(),t=Et(),s=Ya(!1,10);return(o,i)=>(d(),B(e(n),null,{default:D(()=>[f(e(Be),{role:"listbox",as:o.as,"as-child":o.asChild,tabindex:e(t).focusable.value?e(t).highlightedElement.value?"-1":"0":"-1","aria-orientation":e(t).orientation.value,"aria-multiselectable":!!e(t).multiple.value,"data-orientation":e(t).orientation.value,onMousedown:i[0]||(i[0]=Oe(l=>s.value=!0,["left"])),onFocus:i[1]||(i[1]=l=>{e(s)||e(t).onEnter(l)}),onKeydown:[i[2]||(i[2]=Ze(l=>{e(t).orientation.value==="vertical"&&(l.key==="ArrowLeft"||l.key==="ArrowRight")||e(t).orientation.value==="horizontal"&&(l.key==="ArrowUp"||l.key==="ArrowDown")||(l.preventDefault(),e(t).focusable.value&&e(t).onKeydownNavigation(l))},["down","up","left","right","home","end"])),Ze(e(t).onKeydownEnter,["enter"]),e(t).onKeydownTypeAhead]},{default:D(()=>[ve(o.$slots,"default")]),_:3},8,["as","as-child","tabindex","aria-orientation","aria-multiselectable","data-orientation","onKeydown"])]),_:3}))}}),Vn=En,Fn=le({__name:"ListboxFilter",props:{modelValue:{type:String,required:!1},autoFocus:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"input"}},emits:["update:modelValue"],setup(u,{emit:n}){const t=u,o=ht(t,"modelValue",n,{defaultValue:"",passive:t.modelValue===void 0}),i=Et(),{primitiveElement:l,currentElement:r}=qt(),m=q(()=>t.disabled||i.disabled.value||!1),y=A();Js(()=>y.value=i.highlightedElement.value?.id),De(()=>{i.focusable.value=!1,setTimeout(()=>{t.autoFocus&&r.value?.focus()},1)}),Je(()=>{i.focusable.value=!0});const{isComposing:h,handleCompositionStart:S,handleCompositionEnd:x}=Sa(k=>{o.value=k.target.value,i.onCompositionEnd(),i.highlightFirstItem()});function I(){i.onCompositionStart(),S()}function w(k){h.value||(o.value=k.target.value,i.highlightFirstItem())}function v(k){h.value||(k.preventDefault(),i.onKeydownNavigation(k))}function _(k){h.value||i.onKeydownEnter(k)}return(k,C)=>(d(),B(e(Be),{ref_key:"primitiveElement",ref:l,as:k.as,"as-child":k.asChild,value:e(o),disabled:m.value?"":void 0,"data-disabled":m.value?"":void 0,"aria-disabled":m.value??void 0,"aria-activedescendant":y.value,type:"text",onKeydown:[Ze(v,["down","up","home","end"]),Ze(_,["enter"])],onInput:w,onCompositionstart:I,onCompositionend:e(x)},{default:D(()=>[ve(k.$slots,"default",{modelValue:e(o)})]),_:3},8,["as","as-child","value","disabled","data-disabled","aria-disabled","aria-activedescendant","onCompositionend"]))}}),Rn=Fn;const[Ob,On]=it("ListboxGroup");var Bn=le({__name:"ListboxGroup",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(u){const n=u,t=pt(void 0,"reka-listbox-group");return On({id:t}),(s,o)=>(d(),B(e(Be),Ae({role:"group"},n,{"aria-labelledby":e(t)}),{default:D(()=>[ve(s.$slots,"default")]),_:3},16,["aria-labelledby"]))}}),Pn=Bn;const Nn="listbox.select",[jn,Un]=it("ListboxItem");var Wn=le({__name:"ListboxItem",props:{value:{type:null,required:!0},disabled:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"div"}},emits:["select"],setup(u,{emit:n}){const t=u,s=n,o=pt(void 0,"reka-listbox-item"),{CollectionItem:i}=xt(),{forwardRef:l,currentElement:r}=Ke(),m=Et(),y=q(()=>r.value!=null&&r.value===m.highlightedElement.value),h=q(()=>qn(m.modelValue.value,t.value,m.by)),S=q(()=>m.disabled.value||t.disabled);async function x(w){s("select",w),!w?.defaultPrevented&&!S.value&&w&&(m.onValueChange(t.value),m.changeHighlight(r.value))}function I(w){const v={originalEvent:w,value:t.value};Zs(Nn,x,v)}return Un({isSelected:h}),(w,v)=>(d(),B(e(i),{value:w.value},{default:D(()=>[Xs([y.value,h.value,S.value,e(m).focusable.value],()=>f(e(Be),Ae({id:e(o)},w.$attrs,{ref:e(l),role:"option",tabindex:e(m).focusable.value?y.value?"0":"-1":-1,"aria-selected":h.value,as:w.as,"as-child":w.asChild,disabled:S.value?"":void 0,"data-disabled":S.value?"":void 0,"data-highlighted":y.value?"":void 0,"data-state":h.value?"checked":"unchecked",onClick:I,onKeydown:Ze(Oe(I,["prevent"]),["space"]),onPointermove:v[0]||(v[0]=()=>{e(m).highlightedElement.value!==e(r)&&e(m).highlightOnHover.value&&e(m).changeHighlight(e(r),!1,!1)})}),{default:D(()=>[ve(w.$slots,"default")]),_:3},16,["id","tabindex","aria-selected","as","as-child","disabled","data-disabled","data-highlighted","data-state","onKeydown"]),v,1)]),_:3},8,["value"]))}}),Kn=Wn,Hn=le({__name:"ListboxItemIndicator",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"span"}},setup(u){const n=u;Ke();const t=jn();return(s,o)=>e(t).isSelected.value?(d(),B(e(Be),Ae({key:0,"aria-hidden":"true"},n),{default:D(()=>[ve(s.$slots,"default")]),_:3},16)):V("v-if",!0)}}),Yn=Hn;function Qn(u,n,t){const s=new Array(u);return new Proxy(s,{get(o,i,l){if(typeof i=="string"){const r=i.charCodeAt(0);if(r>=48&&r<=57){const m=+i;if(Number.isInteger(m)&&m>=0&&m<u){let y=o[m];if(!y){const h=n[m*2];y=o[m]={index:m,key:t(m),start:h,size:n[m*2+1],end:h+n[m*2+1],lane:0}}return y}}if(i==="length")return u}return Reflect.get(o,i,l)}})}function ft(u,n,t){let s=t.initialDeps??[],o,i=!0;function l(){const r=u();return(r.length!==s.length||r.some((y,h)=>s[h]!==y))&&(s=r,o=n(...r),t?.onChange&&!(i&&t.skipInitialOnChange)&&t.onChange(o),i=!1),o}return l.updateDeps=r=>{s=r},l}function ja(u,n){if(u===void 0)throw new Error("Unexpected undefined");return u}const Gn=(u,n)=>Math.abs(u-n)<1.01,Jn=(u,n,t)=>{let s;return function(...o){u.clearTimeout(s),s=u.setTimeout(()=>n.apply(this,o),t)}};let $t;const la=()=>{if($t!==void 0)return $t;if(typeof navigator>"u")return $t=!1;if(/iP(hone|od|ad)/.test(navigator.userAgent))return $t=!0;const u=navigator.maxTouchPoints;return $t=navigator.platform==="MacIntel"&&u!==void 0&&u>0},Ua=u=>{const{offsetWidth:n,offsetHeight:t}=u;return{width:n,height:t}},Xn=u=>u,Zn=u=>{const n=Math.max(u.startIndex-u.overscan,0),s=Math.min(u.endIndex+u.overscan,u.count-1)-n+1,o=new Array(s);for(let i=0;i<s;i++)o[i]=n+i;return o},el=(u,n)=>{const t=u.scrollElement;if(!t)return;const s=u.targetWindow;if(!s)return;const o=l=>{const{width:r,height:m}=l;n({width:Math.round(r),height:Math.round(m)})};if(o(Ua(t)),!s.ResizeObserver)return()=>{};const i=new s.ResizeObserver(l=>{const r=()=>{const m=l[0];if(m?.borderBoxSize){const y=m.borderBoxSize[0];if(y){o({width:y.inlineSize,height:y.blockSize});return}}o(Ua(t))};u.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(r):r()});return i.observe(t,{box:"border-box"}),()=>{i.unobserve(t)}},Yt={passive:!0},tl=typeof window>"u"?!0:"onscrollend"in window,al=(u,n,t)=>{const s=u.scrollElement;if(!s)return;const o=u.targetWindow;if(!o)return;const i=u.options.useScrollendEvent&&tl;let l=0;const r=i?null:Jn(o,()=>n(l,!1),u.options.isScrollingResetDelay),m=S=>()=>{l=t(s),r?.(),n(l,S)},y=m(!0),h=m(!1);return s.addEventListener("scroll",y,Yt),i&&s.addEventListener("scrollend",h,Yt),()=>{s.removeEventListener("scroll",y),i&&s.removeEventListener("scrollend",h)}},sl=(u,n)=>al(u,n,t=>{const{horizontal:s,isRtl:o}=u.options;return s?t.scrollLeft*(o&&-1||1):t.scrollTop}),ol=(u,n,t)=>{if(t.options.useCachedMeasurements){const s=t.indexFromElement(u),o=t.options.getItemKey(s);return t.itemSizeCache.get(o)??t.options.estimateSize(s)}if(n?.borderBoxSize){const s=n.borderBoxSize[0];if(s)return Math.round(s[t.options.horizontal?"inlineSize":"blockSize"])}if(!n){const s=t.indexFromElement(u),o=t.options.getItemKey(s),i=t.itemSizeCache.get(o);if(i!==void 0)return i}return u[t.options.horizontal?"offsetWidth":"offsetHeight"]},nl=(u,{adjustments:n=0,behavior:t},s)=>{var o,i;(i=(o=s.scrollElement)==null?void 0:o.scrollTo)==null||i.call(o,{[s.options.horizontal?"left":"top"]:u+n,behavior:t})},ll=nl;class il{constructor(n){this.unsubs=[],this.scrollElement=null,this.targetWindow=null,this.isScrolling=!1,this.scrollState=null,this.measurementsCache=[],this._flatMeasurements=null,this.itemSizeCache=new Map,this.itemSizeCacheVersion=0,this.laneAssignments=new Map,this.pendingMin=null,this.prevLanes=void 0,this.lanesChangedFlag=!1,this.lanesSettling=!1,this.pendingScrollAnchor=null,this.scrollRect=null,this.scrollOffset=null,this.scrollDirection=null,this.scrollAdjustments=0,this._iosDeferredAdjustment=0,this._iosTouching=!1,this._iosJustTouchEnded=!1,this._iosTouchEndTimerId=null,this._intendedScrollOffset=null,this.elementsCache=new Map,this.now=()=>{var t,s,o;return((o=(s=(t=this.targetWindow)==null?void 0:t.performance)==null?void 0:s.now)==null?void 0:o.call(s))??Date.now()},this.observer=(()=>{let t=null;const s=()=>t||(!this.targetWindow||!this.targetWindow.ResizeObserver?null:t=new this.targetWindow.ResizeObserver(o=>{o.forEach(i=>{const l=()=>{const r=i.target,m=this.indexFromElement(r);if(!r.isConnected){this.observer.unobserve(r);for(const[y,h]of this.elementsCache)if(h===r){this.elementsCache.delete(y);break}return}this.shouldMeasureDuringScroll(m)&&this.resizeItem(m,this.options.measureElement(r,i,this))};this.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(l):l()})}));return{disconnect:()=>{var o;(o=s())==null||o.disconnect(),t=null},observe:o=>{var i;return(i=s())==null?void 0:i.observe(o,{box:"border-box"})},unobserve:o=>{var i;return(i=s())==null?void 0:i.unobserve(o)}}})(),this.range=null,this.setOptions=t=>{var s,o;const i={debug:!1,initialOffset:0,overscan:1,paddingStart:0,paddingEnd:0,scrollPaddingStart:0,scrollPaddingEnd:0,horizontal:!1,getItemKey:Xn,rangeExtractor:Zn,onChange:()=>{},measureElement:ol,initialRect:{width:0,height:0},scrollMargin:0,gap:0,indexAttribute:"data-index",initialMeasurementsCache:[],lanes:1,anchorTo:"start",followOnAppend:!1,scrollEndThreshold:1,isScrollingResetDelay:150,enabled:!0,isRtl:!1,useScrollendEvent:!1,useAnimationFrameWithResizeObserver:!1,laneAssignmentMode:"estimate",useCachedMeasurements:!1};for(const x in t){const I=t[x];I!==void 0&&(i[x]=I)}const l=this.options;let r=null,m=null,y=!1;if(l!==void 0&&l.enabled&&i.enabled&&i.anchorTo==="end"&&this.scrollElement!==null){const x=l.count,I=i.count,w=this.getMeasurements(),v=x>0?((s=w[0])==null?void 0:s.key)??l.getItemKey(0):null,_=x>0?((o=w[x-1])==null?void 0:o.key)??l.getItemKey(x-1):null;if(I!==x||x>0&&I>0&&(i.getItemKey(0)!==v||i.getItemKey(I-1)!==_)){y=!0;const $=x>0?this.getVirtualItemForOffset(this.getScrollOffset())??w[0]:null;$&&(r=[$.key,this.getScrollOffset()-$.start]);const g=i.followOnAppend===!0?"auto":i.followOnAppend||null;g&&I>x&&this.isAtEnd(l.scrollEndThreshold)&&(x===0||i.getItemKey(I-1)!==_)&&(m=g)}}this.options=i,y&&(this.pendingMin=0,this.itemSizeCacheVersion++);let h=!1,S=0;if(r&&this.scrollOffset!==null){const[x,I]=r,w=this.getMeasurements(),{count:v,getItemKey:_}=this.options;let k=0;for(;k<v&&_(k)!==x;)k++;if(k<v){const C=w[k];if(C){const $=C.start+I;$!==this.scrollOffset&&(S=$-this.scrollOffset,this.scrollOffset=$,h=!0)}}}(h||m)&&(this.pendingScrollAnchor=[h?r[0]:null,h?r[1]:0,m,S])},this.notify=t=>{var s,o;(o=(s=this.options).onChange)==null||o.call(s,this,t)},this.maybeNotify=ft(()=>(this.calculateRange(),[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]),t=>{this.notify(t)},{key:!1,debug:()=>this.options.debug,initialDeps:[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]}),this.cleanup=()=>{this.unsubs.filter(Boolean).forEach(t=>t()),this.unsubs=[],this.observer.disconnect(),this.rafId!=null&&this.targetWindow&&(this.targetWindow.cancelAnimationFrame(this.rafId),this.rafId=null),this.scrollState=null,this._iosDeferredAdjustment=0,this._iosTouching=!1,this._iosJustTouchEnded=!1,this.scrollElement=null,this.targetWindow=null},this._didMount=()=>()=>{this.cleanup()},this._willUpdate=()=>{var t;const s=this.options.enabled?this.options.getScrollElement():null;if(this.scrollElement!==s){if(this.cleanup(),!s){this.maybeNotify();return}if(this.scrollElement=s,this.scrollElement&&"ownerDocument"in this.scrollElement?this.targetWindow=this.scrollElement.ownerDocument.defaultView:this.targetWindow=((t=this.scrollElement)==null?void 0:t.window)??null,this.elementsCache.forEach(i=>{this.observer.observe(i)}),this.unsubs.push(this.options.observeElementRect(this,i=>{this.scrollRect=i,this.maybeNotify()})),this.unsubs.push(this.options.observeElementOffset(this,(i,l)=>{if(l&&this._intendedScrollOffset===null&&i===this.scrollOffset)return;this._intendedScrollOffset!==null&&Math.abs(i-this._intendedScrollOffset)<1.5&&(i=this._intendedScrollOffset),this._intendedScrollOffset=null,this.scrollAdjustments=0;const r=this.getScrollOffset();this.scrollDirection=l?r===i?this.scrollDirection:r<i?"forward":"backward":null,this.scrollOffset=i,this.isScrolling=l,this._flushIosDeferredIfReady(),this.scrollState&&this.scheduleScrollReconcile(),this.maybeNotify()})),"addEventListener"in this.scrollElement){const i=this.scrollElement,l=()=>{this._iosTouching=!0,this._iosJustTouchEnded=!1,this._iosTouchEndTimerId!==null&&this.targetWindow!=null&&(this.targetWindow.clearTimeout(this._iosTouchEndTimerId),this._iosTouchEndTimerId=null)},r=()=>{this._iosTouching=!1,!(!la()||this.targetWindow==null)&&(this._iosJustTouchEnded=!0,this._iosTouchEndTimerId=this.targetWindow.setTimeout(()=>{this._iosJustTouchEnded=!1,this._iosTouchEndTimerId=null,this._flushIosDeferredIfReady()},150))};i.addEventListener("touchstart",l,Yt),i.addEventListener("touchend",r,Yt),this.unsubs.push(()=>{i.removeEventListener("touchstart",l),i.removeEventListener("touchend",r),this._iosTouchEndTimerId!==null&&this.targetWindow!=null&&(this.targetWindow.clearTimeout(this._iosTouchEndTimerId),this._iosTouchEndTimerId=null)})}this._scrollToOffset(this.getScrollOffset(),{adjustments:void 0,behavior:void 0})}const o=this.pendingScrollAnchor;if(this.pendingScrollAnchor=null,o&&this.scrollElement&&this.options.enabled){const[i,l,r,m]=o;i!==null&&!r&&(la()&&(this.isScrolling||this._iosTouching||this._iosJustTouchEnded)?m!==0&&(this._iosDeferredAdjustment+=m):this._scrollToOffset(this.getScrollOffset(),{adjustments:void 0,behavior:void 0})),r&&this.scrollToEnd({behavior:r})}},this._flushIosDeferredIfReady=()=>{if(this._iosDeferredAdjustment===0||this.isScrolling||this._iosTouching||this._iosJustTouchEnded)return;const t=this.getScrollOffset(),s=this.getMaxScrollOffset();if(t<0||t>s)return;const o=this._iosDeferredAdjustment;this._iosDeferredAdjustment=0,this._scrollToOffset(t,{adjustments:this.scrollAdjustments+=o,behavior:void 0})},this.rafId=null,this.getSize=()=>this.options.enabled?(this.scrollRect=this.scrollRect??this.options.initialRect,this.scrollRect[this.options.horizontal?"width":"height"]):(this.scrollRect=null,0),this.getScrollOffset=()=>this.options.enabled?(this.scrollOffset=this.scrollOffset??(typeof this.options.initialOffset=="function"?this.options.initialOffset():this.options.initialOffset),this.scrollOffset):(this.scrollOffset=null,0),this.getMeasurementOptions=ft(()=>[this.options.count,this.options.paddingStart,this.options.scrollMargin,this.options.getItemKey,this.options.enabled,this.options.lanes,this.options.laneAssignmentMode,this.options.gap],(t,s,o,i,l,r,m,y)=>(this.prevLanes!==void 0&&this.prevLanes!==r&&(this.lanesChangedFlag=!0),this.prevLanes=r,this.pendingMin=null,{count:t,paddingStart:s,scrollMargin:o,getItemKey:i,enabled:l,lanes:r,laneAssignmentMode:m,gap:y}),{key:!1}),this.getMeasurements=ft(()=>[this.getMeasurementOptions(),this.itemSizeCacheVersion],({count:t,paddingStart:s,scrollMargin:o,getItemKey:i,enabled:l,lanes:r,laneAssignmentMode:m,gap:y},h)=>{const S=this.itemSizeCache;if(!l)return this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),[];if(this.laneAssignments.size>t)for(const k of this.laneAssignments.keys())k>=t&&this.laneAssignments.delete(k);this.lanesChangedFlag&&(this.lanesChangedFlag=!1,this.lanesSettling=!0,this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),this.pendingMin=null),this.measurementsCache.length===0&&!this.lanesSettling&&(this.measurementsCache=this.options.initialMeasurementsCache,this.measurementsCache.forEach(k=>{this.itemSizeCache.set(k.key,k.size)}));const x=this.lanesSettling?0:this.pendingMin??0;if(this.pendingMin=null,this.lanesSettling&&this.measurementsCache.length===t&&(this.lanesSettling=!1),r===1){const k=t*2;let C=this._flatMeasurements;if(!C||C.length<k){const b=new Float64Array(k);C&&x>0&&b.set(C.subarray(0,x*2)),C=b,this._flatMeasurements=C}let $;if(x===0)$=s+o;else{const b=x-1;$=C[b*2]+C[b*2+1]+y}for(let b=x;b<t;b++){const F=i(b),E=S.get(F),z=typeof E=="number"?E:this.options.estimateSize(b);C[b*2]=$,C[b*2+1]=z,$+=z+y}const g=Qn(t,C,i);return this.measurementsCache=g,g}const I=this.measurementsCache.slice(0,x),w=new Array(r).fill(void 0),v=new Float64Array(r);let _=0;for(let k=0;k<x;k++){const C=I[k];C&&(w[C.lane]===void 0&&_++,w[C.lane]=k,v[C.lane]=C.end)}for(let k=x;k<t;k++){const C=i(k),$=this.laneAssignments.get(k);let g,b;const F=m==="estimate"||S.has(C);if($!==void 0&&this.options.lanes>1){g=$;const M=w[g],L=M!==void 0?I[M]:void 0;b=L?L.end+y:s+o}else if(_===r){let M=0,L=v[0],N=w[0];for(let U=1;U<r;U++){const H=v[U];(H<L||H===L&&w[U]<N)&&(M=U,L=H,N=w[U])}g=M,b=L+y,F&&this.laneAssignments.set(k,g)}else g=k%this.options.lanes,b=s+o,F&&this.laneAssignments.set(k,g);const E=S.get(C),z=typeof E=="number"?E:this.options.estimateSize(k),T=b+z;I[k]={index:k,start:b,size:z,end:T,key:C,lane:g},w[g]===void 0&&_++,w[g]=k,v[g]=T}return this.measurementsCache=I,I},{key:!1,debug:()=>this.options.debug}),this.calculateRange=ft(()=>[this.getMeasurements(),this.getSize(),this.getScrollOffset(),this.options.lanes],(t,s,o,i)=>t.length===0||s===0?(this.range=null,null):(this.range=ul(t,s,o,i,i===1&&this._flatMeasurements!=null?this._flatMeasurements:null),this.range),{key:!1,debug:()=>this.options.debug}),this.getVirtualIndexes=ft(()=>{let t=null,s=null;const o=this.calculateRange();return o&&(t=o.startIndex,s=o.endIndex),this.maybeNotify.updateDeps([this.isScrolling,t,s]),[this.options.rangeExtractor,this.options.overscan,this.options.count,t,s]},(t,s,o,i,l)=>i===null||l===null?[]:t({startIndex:i,endIndex:l,overscan:s,count:o}),{key:!1,debug:()=>this.options.debug}),this.indexFromElement=t=>{const s=this.options.indexAttribute,o=t.getAttribute(s);return o?parseInt(o,10):(console.warn(`Missing attribute name '${s}={index}' on measured element.`),-1)},this.shouldMeasureDuringScroll=t=>{var s;if(!this.scrollState||this.scrollState.behavior!=="smooth")return!0;const o=this.scrollState.index??((s=this.getVirtualItemForOffset(this.scrollState.lastTargetOffset))==null?void 0:s.index);if(o!==void 0&&this.range){const i=Math.max(this.options.overscan,Math.ceil((this.range.endIndex-this.range.startIndex)/2)),l=Math.max(0,o-i),r=Math.min(this.options.count-1,o+i);return t>=l&&t<=r}return!0},this.measureElement=t=>{if(!t){this.elementsCache.forEach((l,r)=>{l.isConnected||(this.observer.unobserve(l),this.elementsCache.delete(r))});return}const s=this.indexFromElement(t),o=this.options.getItemKey(s),i=this.elementsCache.get(o);i!==t&&(i&&this.observer.unobserve(i),this.observer.observe(t),this.elementsCache.set(o,t)),(!this.isScrolling||this.scrollState)&&this.shouldMeasureDuringScroll(s)&&this.resizeItem(s,this.options.measureElement(t,void 0,this))},this.resizeItem=(t,s)=>{var o,i;if(t<0||t>=this.options.count)return;let l,r,m;const y=this._flatMeasurements;if(this.options.lanes===1&&y!==null)m=this.options.getItemKey(t),r=y[t*2],l=y[t*2+1];else{const x=this.measurementsCache[t];if(!x)return;m=x.key,r=x.start,l=x.size}const h=this.itemSizeCache.get(m)??l,S=s-h;if(S!==0){const x=this.options.anchorTo==="end"&&((o=this.scrollState)==null?void 0:o.behavior)!=="smooth"&&this.getVirtualDistanceFromEnd()<=this.options.scrollEndThreshold,I=x?this.getTotalSize():0,w=((i=this.scrollState)==null?void 0:i.behavior)!=="smooth"&&(this.shouldAdjustScrollPositionOnItemSizeChange!==void 0?this.shouldAdjustScrollPositionOnItemSizeChange(this.measurementsCache[t]??{index:t,key:m,start:r,size:l,end:r+l,lane:0},S,this):r<this.getScrollOffset()+this.scrollAdjustments&&(!this.itemSizeCache.has(m)||this.scrollDirection!=="backward"));(this.pendingMin===null||t<this.pendingMin)&&(this.pendingMin=t),this.itemSizeCache.set(m,s),this.itemSizeCacheVersion++,x?this.applyScrollAdjustment(this.getTotalSize()-I):w&&this.applyScrollAdjustment(S),this.notify(!1)}},this.getVirtualItems=ft(()=>[this.getVirtualIndexes(),this.getMeasurements()],(t,s)=>{const o=[];for(let i=0,l=t.length;i<l;i++){const r=t[i],m=s[r];o.push(m)}return o},{key:!1,debug:()=>this.options.debug}),this.getVirtualItemForOffset=t=>{const s=this.getMeasurements();if(s.length===0)return;const o=this._flatMeasurements,i=this.options.lanes===1&&o!=null,l=ys(0,s.length-1,i?r=>o[r*2]:r=>ja(s[r]).start,t);return ja(s[l])},this.getMaxScrollOffset=()=>{if(!this.scrollElement)return 0;if("scrollHeight"in this.scrollElement)return this.options.horizontal?this.scrollElement.scrollWidth-this.scrollElement.clientWidth:this.scrollElement.scrollHeight-this.scrollElement.clientHeight;{const t=this.scrollElement.document.documentElement;return this.options.horizontal?t.scrollWidth-this.scrollElement.innerWidth:t.scrollHeight-this.scrollElement.innerHeight}},this.getVirtualDistanceFromEnd=()=>Math.max(this.getTotalSize()-this.getSize()-this.getScrollOffset(),0),this.getDistanceFromEnd=()=>Math.max(this.getMaxScrollOffset()-this.getScrollOffset(),0),this.isAtEnd=(t=this.options.scrollEndThreshold)=>this.getDistanceFromEnd()<=t,this.getOffsetForAlignment=(t,s,o=0)=>{if(!this.scrollElement)return 0;const i=this.getSize(),l=this.getScrollOffset();s==="auto"&&(s=t>=l+i?"end":"start"),s==="center"?t+=(o-i)/2:s==="end"&&(t-=i);const r=this.getMaxScrollOffset();return Math.max(Math.min(r,t),0)},this.getOffsetForIndex=(t,s="auto")=>{t=Math.max(0,Math.min(t,this.options.count-1));const o=this.getSize(),i=this.getScrollOffset(),l=this.measurementsCache[t];if(!l)return;if(s==="auto")if(l.end>=i+o-this.options.scrollPaddingEnd)s="end";else if(l.start<=i+this.options.scrollPaddingStart)s="start";else return[i,s];if(s==="end"&&t===this.options.count-1)return[this.getMaxScrollOffset(),s];const r=s==="end"?l.end+this.options.scrollPaddingEnd:l.start-this.options.scrollPaddingStart;return[this.getOffsetForAlignment(r,s,l.size),s]},this.scrollToOffset=(t,{align:s="start",behavior:o="auto"}={})=>{const i=this.getOffsetForAlignment(t,s),l=this.now();this.scrollState={index:null,align:s,behavior:o,startedAt:l,lastTargetOffset:i,stableFrames:0},this._scrollToOffset(i,{adjustments:void 0,behavior:o}),this.scheduleScrollReconcile()},this.scrollToIndex=(t,{align:s="auto",behavior:o="auto"}={})=>{t=Math.max(0,Math.min(t,this.options.count-1));const i=this.getOffsetForIndex(t,s);if(!i)return;const[l,r]=i,m=this.now();this.scrollState={index:t,align:r,behavior:o,startedAt:m,lastTargetOffset:l,stableFrames:0},this._scrollToOffset(l,{adjustments:void 0,behavior:o}),this.scheduleScrollReconcile()},this.scrollBy=(t,{behavior:s="auto"}={})=>{const o=this.getScrollOffset()+t,i=this.now();this.scrollState={index:null,align:"start",behavior:s,startedAt:i,lastTargetOffset:o,stableFrames:0},this._scrollToOffset(o,{adjustments:void 0,behavior:s}),this.scheduleScrollReconcile()},this.scrollToEnd=({behavior:t="auto"}={})=>{if(this.options.count>0){this.scrollToIndex(this.options.count-1,{align:"end",behavior:t});return}this.scrollToOffset(Math.max(this.getTotalSize()-this.getSize(),0),{behavior:t})},this.getTotalSize=()=>{var t;const s=this.getMeasurements();let o;if(s.length===0)o=this.options.paddingStart;else if(this.options.lanes===1){const i=s.length-1,l=this._flatMeasurements;l!=null?o=l[i*2]+l[i*2+1]:o=((t=s[i])==null?void 0:t.end)??0}else{const i=Array(this.options.lanes).fill(null);let l=s.length-1;for(;l>=0&&i.some(r=>r===null);){const r=s[l];i[r.lane]===null&&(i[r.lane]=r.end),l--}o=Math.max(...i.filter(r=>r!==null))}return Math.max(o-this.options.scrollMargin+this.options.paddingEnd,0)},this.takeSnapshot=()=>{const t=[];if(this.itemSizeCache.size===0)return t;const s=this.getMeasurements();for(const o of s)o&&this.itemSizeCache.has(o.key)&&t.push({index:o.index,key:o.key,start:o.start,size:o.size,end:o.end,lane:o.lane});return t},this._scrollToOffset=(t,{adjustments:s,behavior:o})=>{this._intendedScrollOffset=t+(s??0),this.options.scrollToFn(t,{behavior:o,adjustments:s},this)},this.measure=()=>{this.pendingMin=null,this.itemSizeCache.clear(),this.laneAssignments.clear(),this.itemSizeCacheVersion++,this.notify(!1)},this.setOptions(n)}applyScrollAdjustment(n,t){n!==0&&(la()&&(this.isScrolling||this._iosTouching||this._iosJustTouchEnded)?this._iosDeferredAdjustment+=n:(this._scrollToOffset(this.getScrollOffset(),{adjustments:this.scrollAdjustments+=n,behavior:t}),this.scrollOffset!==null&&(this.scrollOffset+=this.scrollAdjustments,this.scrollAdjustments=0)))}scheduleScrollReconcile(){if(!this.targetWindow){this.scrollState=null;return}this.rafId==null&&(this.rafId=this.targetWindow.requestAnimationFrame(()=>{this.rafId=null,this.reconcileScroll()}))}reconcileScroll(){if(!this.scrollState||!this.scrollElement)return;if(this.now()-this.scrollState.startedAt>5e3){this.scrollState=null;return}const s=this.scrollState.index!=null?this.getOffsetForIndex(this.scrollState.index,this.scrollState.align):void 0,o=s?s[0]:this.scrollState.lastTargetOffset,i=1,l=o!==this.scrollState.lastTargetOffset;if(!l&&Gn(o,this.getScrollOffset())){if(this.scrollState.stableFrames++,this.scrollState.stableFrames>=i){this.getScrollOffset()!==o&&this._scrollToOffset(o,{adjustments:void 0,behavior:"auto"}),this.scrollState=null;return}}else if(this.scrollState.stableFrames=0,l){const r=this.getSize()||600,m=Math.abs(o-this.getScrollOffset()),y=this.scrollState.behavior==="smooth"&&m>r;this.scrollState.lastTargetOffset=o,y||(this.scrollState.behavior="auto"),this._scrollToOffset(o,{adjustments:void 0,behavior:y?"smooth":"auto"})}this.scheduleScrollReconcile()}}const ys=(u,n,t,s)=>{for(;u<=n;){const o=(u+n)/2|0,i=t(o);if(i<s)u=o+1;else if(i>s)n=o-1;else return o}return u>0?u-1:0};function rl(u,n,t){let s=0;for(;s<=n;){const o=(s+n)/2|0,i=u[o*2];if(i<t)s=o+1;else if(i>t)n=o-1;else return o}return s>0?s-1:0}function ul(u,n,t,s,o){const i=u.length-1;if(u.length<=s)return{startIndex:0,endIndex:i};if(s===1&&o!==null){const y=rl(o,i,t);let h=y;const S=t+n;for(;h<i&&o[h*2]+o[h*2+1]<S;)h++;return{startIndex:y,endIndex:h}}let r=ys(0,i,y=>u[y].start,t),m=r;if(s===1)for(;m<i&&u[m].end<t+n;)m++;else if(s>1){const y=Array(s).fill(0);for(;m<i&&y.some(S=>S<t+n);){const S=u[m];y[S.lane]=S.end,m++}const h=Array(s).fill(t+n);for(;r>=0&&h.some(S=>S>=t);){const S=u[r];h[S.lane]=S.start,r--}r=Math.max(0,r-r%s),m=Math.min(i,m+(s-1-m%s))}return{startIndex:r,endIndex:m}}function dl(u){const n=new il(e(u)),t=eo(n),s=n._didMount();return me(()=>e(u).getScrollElement(),o=>{o&&n._willUpdate()},{immediate:!0}),me(()=>e(u),o=>{n.setOptions({...o,onChange:(i,l)=>{var r;Va(t),(r=o.onChange)==null||r.call(o,i,l)}}),n._willUpdate(),Va(t)},{immediate:!0}),Qa(s),t}function cl(u){return dl(q(()=>({observeElementRect:el,observeElementOffset:sl,scrollToFn:ll,...e(u)})))}var ml=le({__name:"ListboxVirtualizer",props:{options:{type:Array,required:!0},overscan:{type:Number,required:!1},estimateSize:{type:[Number,Function],required:!1},textContent:{type:Function,required:!1}},setup(u){const n=u,t=ya(),s=Et(),o=to(),{getItems:i}=xt();s.isVirtual.value=!0;const l=q(()=>{const x=o.value;if(x){const I=window.getComputedStyle(x);return{start:Number.parseFloat(I.paddingBlockStart||I.paddingTop),end:Number.parseFloat(I.paddingBlockEnd||I.paddingBottom)}}else return{start:0,end:0}}),r=cl({get scrollPaddingStart(){return l.value.start},get scrollPaddingEnd(){return l.value.end},get count(){return n.options.length},get horizontal(){return s.orientation.value==="horizontal"},estimateSize(x){return typeof n.estimateSize=="function"?n.estimateSize(x):n.estimateSize??28},getScrollElement(){return o.value},overscan:n.overscan??12}),m=q(()=>r.value.getVirtualItems().map(x=>{const I=t.default({option:n.options[x.index],virtualizer:r.value,virtualItem:x})[0],w=I.type===ne&&Array.isArray(I.children)?I.children.find(v=>typeof v.type!="symbol"):I;return{item:x,is:oo(w,{key:`${x.key}`,"data-index":x.index,"aria-setsize":n.options.length,"aria-posinset":x.index+1,style:{position:"absolute",top:0,left:0,transform:`translateY(${x.start}px)`,overflowAnchor:"none"}})}}));s.virtualFocusHook.on(({event:x,scroll:I})=>{const w=n.options.findIndex(v=>Array.isArray(s.modelValue.value)?lt(v,s.modelValue.value[0],s.by):lt(v,s.modelValue.value,s.by));w!==-1?(x?.preventDefault(),r.value.scrollToIndex(w,{align:"start"}),requestAnimationFrame(()=>{const v=Na(o.value);v&&(s.changeHighlight(v,I,I?void 0:!1),x&&v?.focus())})):I?s.highlightFirstItem():requestAnimationFrame(()=>{const v=i().find(_=>_.ref.dataset.disabled!=="")?.ref;v&&s.changeHighlight(v,!1,!1)})}),s.virtualHighlightHook.on(x=>{const I=n.options.findIndex(w=>lt(w,x,s.by));r.value.scrollToIndex(I,{align:"start"}),requestAnimationFrame(()=>{const w=Na(o.value);w&&s.changeHighlight(w)})});const y=Ya("",1e3),h=q(()=>{const x=I=>n.textContent?n.textContent(I):I?.toString().toLowerCase();return n.options.map((I,w)=>({index:w,textContent:x(I)}))});function S(x,I){if(!s.firstValue?.value||!s.multiple.value||!Array.isArray(s.modelValue.value))return;const v=i().filter(k=>k.ref.dataset.disabled!=="").find(k=>k.ref===s.highlightedElement.value)?.value;if(!v)return;let _=null;switch(I){case"prev":case"next":{_=Nt(n.options,s.firstValue.value,v);break}case"first":{_=Nt(n.options,s.firstValue.value,n.options?.[0]);break}case"last":{_=Nt(n.options,s.firstValue.value,n.options.at(-1));break}}s.modelValue.value=_}return s.virtualKeydownHook.on(x=>{const I=x.altKey||x.ctrlKey||x.metaKey;if(x.key==="Tab"&&!I)return;let v=ao[x.key];if(I&&x.key==="a"&&s.multiple.value?(x.preventDefault(),s.modelValue.value=[...n.options],v="last"):x.shiftKey&&v&&S(x,v),["first","last"].includes(v)){x.preventDefault();const _=v==="first"?0:n.options.length-1;r.value.scrollToIndex(_),requestAnimationFrame(()=>{const k=i(),C=v==="first"?k[0]:k.at(-1);C&&s.changeHighlight(C.ref)})}else if(!v&&!I){y.value+=x.key;const _=Number(Ga()?.getAttribute("data-index")),k=h.value[_].textContent,C=h.value.map(b=>b.textContent??""),$=so(C,y.value,k),g=h.value.find(b=>b.textContent===$);g&&(r.value.scrollToIndex(g.index,{align:"start"}),requestAnimationFrame(()=>{const b=o.value.querySelector(`[data-index="${g.index}"]`);b instanceof HTMLElement&&s.changeHighlight(b)}))}}),(x,I)=>(d(),p("div",{"data-reka-virtualizer":"",style:et({position:"relative",width:"100%",height:`${e(r).getTotalSize()}px`})},[(d(!0),p(ne,null,he(m.value,({is:w,item:v})=>(d(),B(Ja(w),{key:v.index}))),128))],4))}}),pl=ml;const[at,gl]=it("ComboboxRoot");var fl=le({__name:"ComboboxRoot",props:{open:{type:Boolean,required:!1,default:void 0},defaultOpen:{type:Boolean,required:!1},resetSearchTermOnBlur:{type:Boolean,required:!1,default:!0},resetSearchTermOnSelect:{type:Boolean,required:!1,default:!0},openOnFocus:{type:Boolean,required:!1,default:!1},openOnClick:{type:Boolean,required:!1,default:!1},ignoreFilter:{type:Boolean,required:!1},resetModelValueOnClear:{type:Boolean,required:!1,default:!1},modelValue:{type:null,required:!1},defaultValue:{type:null,required:!1},multiple:{type:Boolean,required:!1},dir:{type:String,required:!1},disabled:{type:Boolean,required:!1},highlightOnHover:{type:Boolean,required:!1,default:!0},by:{type:[String,Function],required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},name:{type:String,required:!1},required:{type:Boolean,required:!1}},emits:["update:modelValue","highlight","update:open"],setup(u,{expose:n,emit:t}){const s=u,o=t,{primitiveElement:i,currentElement:l}=qt(),{multiple:r,disabled:m,ignoreFilter:y,resetSearchTermOnSelect:h,openOnFocus:S,openOnClick:x,dir:I,resetModelValueOnClear:w,highlightOnHover:v}=At(s),_=ha(I),k=ht(s,"modelValue",o,{defaultValue:s.defaultValue??(r.value?[]:void 0),passive:s.modelValue===void 0,deep:!0}),C=ht(s,"open",o,{defaultValue:s.defaultOpen,passive:s.open===void 0});async function $(se){C.value=se,U.value="",se?(await Re(),i.value?.highlightSelected(),b.value=!0,E.value?.focus()):(b.value=!1,setTimeout(()=>{!se&&s.resetSearchTermOnBlur&&g.trigger()},1))}const g=Bt(),b=A(!1),F=A(!1),E=A(),z=A(),T=q(()=>i.value?.highlightedElement??void 0),M=A(new Map),L=A(new Map),{contains:N}=Zo({sensitivity:"base"}),U=A(""),H=q(se=>{if(!U.value||s.ignoreFilter||F.value)return{count:M.value.size,items:se?.items??new Map,groups:se?.groups??new Set(L.value.keys())};let P=0;const R=new Map,J=new Set;for(const[fe,X]of M.value){const W=N(X,U.value);R.set(fe,W?1:0),W&&P++}for(const[fe,X]of L.value)for(const W of X)if(R.get(W)>0){J.add(fe);break}return{count:P,items:R,groups:J}}),ie=lo();return De(()=>{ie?.exposed&&(ie.exposed.highlightItem=i.value?.highlightItem,ie.exposed.highlightFirstItem=i.value?.highlightFirstItem,ie.exposed.highlightSelected=i.value?.highlightSelected)}),n({filtered:H,highlightedElement:T,highlightItem:i.value?.highlightItem,highlightFirstItem:i.value?.highlightFirstItem,highlightSelected:i.value?.highlightSelected}),gl({modelValue:k,multiple:r,disabled:m,open:C,onOpenChange:$,contentId:"",isUserInputted:b,isVirtual:F,inputElement:E,highlightedElement:T,onInputElementChange:se=>E.value=se,triggerElement:z,onTriggerElementChange:se=>z.value=se,parentElement:l,resetSearchTermOnSelect:h,onResetSearchTerm:g.on,allItems:M,allGroups:L,filterSearch:U,filterState:H,ignoreFilter:y,openOnFocus:S,openOnClick:x,resetModelValueOnClear:w}),(se,P)=>(d(),B(e(no),null,{default:D(()=>[f(e(Ln),Ae({ref_key:"primitiveElement",ref:i},se.$attrs,{modelValue:e(k),"onUpdate:modelValue":P[0]||(P[0]=R=>Xa(k)?k.value=R:null),style:{pointerEvents:e(C)?"auto":void 0},as:se.as,"as-child":se.asChild,dir:e(_),multiple:e(r),name:se.name,required:se.required,disabled:e(m),"highlight-on-hover":e(v),by:s.by,onHighlight:P[1]||(P[1]=R=>o("highlight",R))}),{default:D(()=>[ve(se.$slots,"default",{open:e(C),modelValue:e(k)})]),_:3},16,["modelValue","style","as","as-child","dir","multiple","name","required","disabled","highlight-on-hover","by"])]),_:3}))}}),vl=fl,hl=le({__name:"ComboboxAnchor",props:{reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(u){const{forwardRef:n}=Ke();return(t,s)=>(d(),B(e(io),{"as-child":"",reference:t.reference},{default:D(()=>[f(e(Be),Ae({ref:e(n),"as-child":t.asChild,as:t.as},t.$attrs),{default:D(()=>[ve(t.$slots,"default")]),_:3},16,["as-child","as"])]),_:3},8,["reference"]))}}),yl=hl;const[xl,bl]=it("ComboboxContent");var _l=le({__name:"ComboboxContentImpl",props:{position:{type:String,required:!1,default:"inline"},bodyLock:{type:Boolean,required:!1},hideWhenEmpty:{type:Boolean,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},hideShiftedArrow:{type:Boolean,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1}},emits:["escapeKeyDown","pointerDownOutside","focusOutside","interactOutside"],setup(u,{emit:n}){const t=u,s=n,{position:o}=At(t),i=at(),l=q(()=>i.ignoreFilter.value?i.allItems.value.size===0:i.filterState.value.count===0),{forwardRef:r,currentElement:m}=Ke();ro(t.bodyLock),uo(),co(i.parentElement);const y=q(()=>t.position==="popper"?t:{}),h=mo(y.value),S={boxSizing:"border-box","--reka-combobox-content-transform-origin":"var(--reka-popper-transform-origin)","--reka-combobox-content-available-width":"var(--reka-popper-available-width)","--reka-combobox-content-available-height":"var(--reka-popper-available-height)","--reka-combobox-trigger-width":"var(--reka-popper-anchor-width)","--reka-combobox-trigger-height":"var(--reka-popper-anchor-height)"};bl({position:o});const x=A(!1);De(()=>{i.inputElement.value&&(x.value=m.value.contains(i.inputElement.value),x.value&&i.inputElement.value.focus())}),Je(()=>{const w=Ga();x.value&&(!w||w===document.body)&&i.triggerElement.value?.focus()});function I(w){if(i.parentElement.value?.contains(w))return!0;const _=(w instanceof Element?w.closest("label"):null)?.control;return!!_&&!!i.parentElement.value?.contains(_)}return(w,v)=>(d(),B(e(Vn),{"as-child":""},{default:D(()=>[f(e(Za),{"as-child":"",onMountAutoFocus:v[5]||(v[5]=Oe(()=>{},["prevent"])),onUnmountAutoFocus:v[6]||(v[6]=Oe(()=>{},["prevent"]))},{default:D(()=>[f(e(po),{"as-child":"","disable-outside-pointer-events":w.disableOutsidePointerEvents,onDismiss:v[0]||(v[0]=_=>e(i).onOpenChange(!1)),onFocusOutside:v[1]||(v[1]=_=>{I(_.target)&&_.preventDefault(),s("focusOutside",_)}),onInteractOutside:v[2]||(v[2]=_=>s("interactOutside",_)),onEscapeKeyDown:v[3]||(v[3]=_=>s("escapeKeyDown",_)),onPointerDownOutside:v[4]||(v[4]=_=>{I(_.target)&&_.preventDefault(),s("pointerDownOutside",_)})},{default:D(()=>[(d(),B(Ja(e(o)==="popper"?e(go):e(Be)),Ae({...w.$attrs,...e(h)},{id:e(i).contentId,ref:e(r),"data-state":e(i).open.value?"open":"closed","data-empty":l.value?"":void 0,style:{display:t.hideWhenEmpty&&l.value?"none":"flex",flexDirection:"column",outline:"none",...e(o)==="popper"?S:{}}}),{default:D(()=>[ve(w.$slots,"default")]),_:3},16,["id","data-state","data-empty","style"]))]),_:3},8,["disable-outside-pointer-events"])]),_:3})]),_:3}))}}),kl=_l,wl=le({__name:"ComboboxArrow",props:{width:{type:Number,required:!1,default:10},height:{type:Number,required:!1,default:5},rounded:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"svg"}},setup(u){const n=u,t=at(),s=xl();return Ke(),(o,i)=>e(t).open.value&&e(s).position.value==="popper"?(d(),B(e(fo),mt(Ae({key:0},n)),{default:D(()=>[ve(o.$slots,"default")]),_:3},16)):V("v-if",!0)}}),Cl=wl,$l=le({__name:"ComboboxCancel",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(u){const n=u;Ke();const t=at();function s(){t.filterSearch.value="",t.inputElement.value&&(t.inputElement.value.value="",t.inputElement.value.focus()),t.resetModelValueOnClear?.value&&(t.modelValue.value=t.multiple.value?[]:null)}return(o,i)=>(d(),B(e(Be),Ae({type:o.as==="button"?"button":void 0},n,{tabindex:"-1",onClick:s}),{default:D(()=>[ve(o.$slots,"default")]),_:3},16,["type"]))}}),Sl=$l,Il=le({__name:"ComboboxContent",props:{forceMount:{type:Boolean,required:!1},position:{type:String,required:!1},bodyLock:{type:Boolean,required:!1},hideWhenEmpty:{type:Boolean,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},hideShiftedArrow:{type:Boolean,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1}},emits:["escapeKeyDown","pointerDownOutside","focusOutside","interactOutside"],setup(u,{emit:n}){const o=vo(u,n),{forwardRef:i}=Ke(),l=at();return l.contentId||=pt(void 0,"reka-combobox-content"),(r,m)=>(d(),B(e(ho),{present:r.forceMount||e(l).open.value},{default:D(()=>[f(kl,Ae({...e(o),...r.$attrs},{ref:e(i)}),{default:D(()=>[ve(r.$slots,"default")]),_:3},16)]),_:3},8,["present"]))}}),Tl=Il,Ml=le({__name:"ComboboxEmpty",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(u){const n=u,t=at(),s=q(()=>t.ignoreFilter.value?t.allItems.value.size===0:t.filterState.value.count===0);return(o,i)=>s.value?(d(),B(e(Be),mt(Ae({key:0},n)),{default:D(()=>[ve(o.$slots,"default",{},()=>[i[0]||(i[0]=ee("No options"))])]),_:3},16)):V("v-if",!0)}}),Al=Ml;const[xs,ql]=it("ComboboxGroup");var zl=le({__name:"ComboboxGroup",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(u){const n=u,t=pt(void 0,"reka-combobox-group"),s=at(),o=q(()=>s.ignoreFilter.value?!0:s.filterSearch.value?s.filterState.value.groups.has(t):!0),i=ql({id:t,labelId:""});return De(()=>{s.allGroups.value.has(t)||s.allGroups.value.set(t,new Set)}),Je(()=>{s.allGroups.value.delete(t)}),(l,r)=>(d(),B(e(Pn),Ae({id:e(t),"aria-labelledby":e(i).labelId},n,{hidden:o.value?void 0:!0}),{default:D(()=>[ve(l.$slots,"default")]),_:3},16,["id","aria-labelledby","hidden"]))}}),ia=zl,Dl=le({__name:"ComboboxInput",props:{displayValue:{type:Function,required:!1},modelValue:{type:String,required:!1},autoFocus:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"input"}},emits:["update:modelValue"],setup(u,{emit:n}){const t=u,s=n,o=at(),i=Et(),{primitiveElement:l,currentElement:r}=qt(),m=ht(t,"modelValue",s,{passive:t.modelValue===void 0});De(()=>{r.value&&o.onInputElementChange(r.value)});const{isComposing:y,handleCompositionStart:h,handleCompositionEnd:S}=Sa($=>{const g=$.target;g&&I(g.value)});function x($){y.value||($.preventDefault(),o.open.value||o.onOpenChange(!0))}function I($){o.open.value?o.filterSearch.value=$:(o.onOpenChange(!0),Re(()=>{$&&(o.filterSearch.value=$,i.highlightFirstItem())}))}function w($){y.value||I($.target.value)}function v(){o.openOnFocus.value&&!o.open.value&&o.onOpenChange(!0)}function _($){if(!o.open.value)return;const g=$.relatedTarget;if(!g)return;const b=o.parentElement.value?.contains(g),F=document.getElementById(o.contentId)?.contains(g);!b&&!F&&requestAnimationFrame(()=>{if(!o.open.value)return;const E=document.activeElement;!o.parentElement.value?.contains(E)&&!document.getElementById(o.contentId)?.contains(E)&&o.onOpenChange(!1)})}function k(){o.openOnClick.value&&!o.open.value&&o.onOpenChange(!0)}function C(){const $=o.modelValue.value;t.displayValue?m.value=t.displayValue($):!o.multiple.value&&$&&!Array.isArray($)&&typeof $!="object"?m.value=$.toString():m.value="",Re(()=>{m.value=m.value})}return o.onResetSearchTerm(()=>{C()}),me(o.modelValue,async()=>{!o.isUserInputted.value&&o.resetSearchTermOnSelect.value&&C()},{immediate:!0,deep:!0}),me(o.filterState,($,g)=>{!o.isVirtual.value&&g.count===0&&i.highlightFirstItem()}),($,g)=>(d(),B(e(Rn),{ref_key:"primitiveElement",ref:l,modelValue:e(m),"onUpdate:modelValue":g[0]||(g[0]=b=>Xa(m)?m.value=b:null),as:$.as,"as-child":$.asChild,"auto-focus":$.autoFocus,disabled:$.disabled,"aria-expanded":e(o).open.value,"aria-controls":e(o).contentId,"aria-autocomplete":"list",role:"combobox",autocomplete:"off",onClick:k,onInput:w,onKeydown:Ze(x,["down","up"]),onFocus:v,onBlur:_,onCompositionstart:e(h),onCompositionend:e(S)},{default:D(()=>[ve($.$slots,"default")]),_:3},8,["modelValue","as","as-child","auto-focus","disabled","aria-expanded","aria-controls","onCompositionstart","onCompositionend"]))}}),Ll=Dl,El=le({__name:"ComboboxItem",props:{textValue:{type:String,required:!1},value:{type:null,required:!0},disabled:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:["select"],setup(u,{emit:n}){const t=u,s=n,o=pt(void 0,"reka-combobox-item"),i=at(),l=xs(null),{primitiveElement:r,currentElement:m}=qt();if(t.value==="")throw new Error("A <ComboboxItem /> must have a value prop that is not an empty string. This is because the Combobox value can be set to an empty string to clear the selection and show the placeholder.");const y=q(()=>{if(i.isVirtual.value||i.ignoreFilter.value||!i.filterSearch.value)return!0;{const h=i.filterState.value.items.get(o);return h===void 0?!0:h>0}});return De(()=>{i.allItems.value.set(o,t.textValue||m.value.textContent||m.value.innerText);const h=l?.id;h&&(i.allGroups.value.has(h)?i.allGroups.value.get(h)?.add(o):i.allGroups.value.set(h,new Set([o])))}),Je(()=>{i.allItems.value.delete(o)}),(h,S)=>y.value?(d(),B(e(Kn),Ae({key:0},t,{id:e(o),ref_key:"primitiveElement",ref:r,disabled:e(i).disabled.value||h.disabled,onSelect:S[0]||(S[0]=x=>{s("select",x),!x.defaultPrevented&&(!e(i).multiple.value&&!h.disabled&&!e(i).disabled.value?(x.preventDefault(),e(i).onOpenChange(!1),e(i).modelValue.value=t.value):e(i).multiple.value&&e(i).inputElement.value?.focus())})}),{default:D(()=>[ve(h.$slots,"default",{},()=>[ee(c(h.value),1)])]),_:3},16,["id","disabled"])):V("v-if",!0)}}),Wa=El,Vl=le({__name:"ComboboxItemIndicator",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"span"}},setup(u){const n=u;return(t,s)=>(d(),B(e(Yn),mt(It(n)),{default:D(()=>[ve(t.$slots,"default")]),_:3},16))}}),Fl=Vl,Rl=le({__name:"ComboboxLabel",props:{for:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"div"}},setup(u){const n=u;Ke();const t=xs({id:"",labelId:""});return t.labelId||=pt(void 0,"reka-combobox-group-label"),(s,o)=>(d(),B(e(Be),Ae(n,{id:e(t).labelId}),{default:D(()=>[ve(s.$slots,"default")]),_:3},16,["id"]))}}),Ol=Rl,Bl=le({__name:"ComboboxPortal",props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(u){const n=u;return(t,s)=>(d(),B(e(yo),mt(It(n)),{default:D(()=>[ve(t.$slots,"default")]),_:3},16))}}),Pl=Bl,Nl=le({__name:"ComboboxSeparator",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(u){const n=u;return Ke(),(t,s)=>(d(),B(e(Be),Ae(n,{"aria-hidden":"true"}),{default:D(()=>[ve(t.$slots,"default")]),_:3},16))}}),jl=Nl,Ul=le({__name:"ComboboxTrigger",props:{disabled:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(u){const n=u,{forwardRef:t,currentElement:s}=Ke(),o=at(),i=q(()=>n.disabled||o.disabled.value||!1);return De(()=>{s.value&&o.onTriggerElementChange(s.value)}),(l,r)=>(d(),B(e(Be),Ae(n,{ref:e(t),type:l.as==="button"?"button":void 0,tabindex:"-1","aria-label":"Show popup","aria-haspopup":"listbox","aria-expanded":e(o).open.value,"aria-controls":e(o).contentId,"data-state":e(o).open.value?"open":"closed",disabled:i.value,"data-disabled":i.value?"":void 0,"aria-disabled":i.value??void 0,onClick:r[0]||(r[0]=m=>e(o).onOpenChange(!e(o).open.value))}),{default:D(()=>[ve(l.$slots,"default")]),_:3},16,["type","aria-expanded","aria-controls","data-state","disabled","data-disabled","aria-disabled"]))}}),Wl=Ul,Kl=le({__name:"ComboboxVirtualizer",props:{options:{type:Array,required:!0},overscan:{type:Number,required:!1},estimateSize:{type:[Number,Function],required:!1},textContent:{type:Function,required:!1}},setup(u){const n=u,t=at();return t.isVirtual.value=!0,(s,o)=>(d(),B(pl,mt(It(n)),{default:D(i=>[ve(s.$slots,"default",mt(It(i)))]),_:3},16))}}),Hl=Kl;const[Ia,Yl]=it("TagsInputRoot");var Ql=le({__name:"TagsInputRoot",props:{modelValue:{type:[Array,null],required:!1},defaultValue:{type:Array,required:!1,default:()=>[]},addOnPaste:{type:Boolean,required:!1},addOnTab:{type:Boolean,required:!1},addOnBlur:{type:Boolean,required:!1},duplicate:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},delimiter:{type:null,required:!1,default:","},dir:{type:String,required:!1},max:{type:Number,required:!1,default:0},id:{type:String,required:!1},convertValue:{type:Function,required:!1},displayValue:{type:Function,required:!1,default:u=>u.toString()},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},name:{type:String,required:!1},required:{type:Boolean,required:!1}},emits:["update:modelValue","invalid","addTag","removeTag"],setup(u,{emit:n}){const t=u,s=n,{addOnPaste:o,disabled:i,delimiter:l,max:r,id:m,dir:y,addOnBlur:h,addOnTab:S}=At(t),x=ha(y),I=ht(t,"modelValue",s,{defaultValue:t.defaultValue,passive:!0,deep:!0}),{forwardRef:w,currentElement:v}=Ke(),{focused:_}=xo(v),k=vs(v),{getItems:C,CollectionSlot:$}=xt({isProvider:!0}),g=A(),b=A(!1),F=q(()=>Array.isArray(I.value)?[...I.value]:[]);function E(z){if(z!==-1){const T=C().filter(M=>M.ref.dataset.disabled!=="");I.value=I.value.filter((M,L)=>L!==z),s("removeTag",T[z].value)}}return Yl({modelValue:I,onAddValue:z=>{const T=[...F.value],M=T.length>0&&typeof T[0]=="object",L=T.length>0&&typeof t.defaultValue[0]=="object";if((M||L)&&typeof t.convertValue!="function")throw new Error("You must provide a `convertValue` function when using objects as values.");const N=t.convertValue?t.convertValue(z):z;if(T.length>=r.value&&r.value)return s("invalid",N),!1;if(t.duplicate)return I.value=[...T,N],s("addTag",N),!0;if(T.includes(N))b.value=!0;else return I.value=[...T,N],s("addTag",N),!0;return s("invalid",N),!1},onRemoveValue:E,onInputKeydown:z=>{if(z.isComposing)return;const T=z.target,M=C().map(N=>N.ref).filter(N=>N.dataset.disabled!=="");if(!M.length)return;const L=M.at(-1);switch(z.key){case"Delete":case"Backspace":{if(T.selectionStart!==0||T.selectionEnd!==0)break;if(g.value){const N=M.findIndex(U=>U===g.value);E(N),g.value=g.value===L?M.at(N-1):M.at(N+1),z.preventDefault()}else z.key==="Backspace"&&(g.value=L,z.preventDefault());break}case"Home":case"End":case"ArrowRight":case"ArrowLeft":{const N=z.key==="ArrowRight"&&x.value==="ltr"||z.key==="ArrowLeft"&&x.value==="rtl",U=!N;if(T.selectionStart!==0||T.selectionEnd!==0)break;if(U&&!g.value)g.value=L,z.preventDefault();else if(N&&L&&g.value===L)g.value=void 0,z.preventDefault();else if(g.value){const H=bo(z,g.value,void 0,{itemsArray:M,loop:!1,dir:x.value});H&&(g.value=H),z.preventDefault()}break}case"ArrowUp":case"ArrowDown":{g.value&&z.preventDefault();break}default:g.value=void 0}},selectedElement:g,isInvalidInput:b,addOnPaste:o,addOnBlur:h,addOnTab:S,dir:x,disabled:i,delimiter:l,max:r,id:m,displayValue:t.displayValue}),(z,T)=>(d(),B(e($),null,{default:D(()=>[f(e(Be),{ref:e(w),dir:e(x),as:z.as,"as-child":z.asChild,"data-invalid":b.value?"":void 0,"data-disabled":e(i)?"":void 0,"data-focused":e(_)?"":void 0},{default:D(()=>[ve(z.$slots,"default",{modelValue:e(I)}),e(k)&&z.name?(d(),B(e(hs),{key:0,name:z.name,value:e(I),required:z.required,disabled:e(i)},null,8,["name","value","required","disabled"])):V("v-if",!0)]),_:3},8,["dir","as","as-child","data-invalid","data-disabled","data-focused"])]),_:3}))}}),Gl=Ql,Jl=le({__name:"TagsInputInput",props:{placeholder:{type:String,required:!1},autoFocus:{type:Boolean,required:!1},maxLength:{type:Number,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"input"}},setup(u){const n=u,t=Ia(),{forwardRef:s,currentElement:o}=Ke();function i(w){if(t.selectedElement.value=void 0,!t.addOnBlur.value)return;const v=w.target,_=w.relatedTarget,k=v.getAttribute("aria-controls");if(k&&_?.closest(`#${CSS.escape(k)}`)||!v.value)return;t.onAddValue(v.value)&&(v.value="")}function l(w){t.addOnTab.value&&h(w)}const{isComposing:r,handleCompositionStart:m,handleCompositionEnd:y}=Sa();async function h(w){if(r.value||(await Re(),w.defaultPrevented))return;const v=w.target;if(!v.value)return;t.onAddValue(v.value)&&(v.value=""),w.preventDefault()}function S(w){if(r.value||(t.isInvalidInput.value=!1,w.data===null))return;const v=t.delimiter.value;if(v===w.data||v instanceof RegExp&&v.test(w.data)){const k=w.target;if(k.value=k.value.replace(v,""),k.value.trim()===""){k.value="";return}t.onAddValue(k.value)&&(k.value="")}}function x(w){r.value||t.onInputKeydown(w)}function I(w){if(t.addOnPaste.value){w.preventDefault();const v=w.clipboardData;if(!v)return;const _=v.getData("text");t.delimiter.value?_.split(t.delimiter.value).forEach(C=>{t.onAddValue(C)}):t.onAddValue(_)}}return De(()=>{const w=o.value.nodeName==="INPUT"?o.value:o.value.querySelector("input");w&&setTimeout(()=>{n.autoFocus&&w?.focus()},1)}),(w,v)=>(d(),B(e(Be),{id:e(t).id?.value,ref:e(s),type:"text",autocomplete:"off",autocorrect:"off",autocapitalize:"off",as:w.as,"as-child":w.asChild,maxlength:w.maxLength,placeholder:w.placeholder,disabled:e(t).disabled.value,"data-invalid":e(t).isInvalidInput.value?"":void 0,onInput:S,onKeydown:[Ze(h,["enter"]),Ze(l,["tab"]),x],onBlur:i,onCompositionstart:e(m),onCompositionend:e(y),onPaste:I},{default:D(()=>[ve(w.$slots,"default")]),_:3},8,["id","as","as-child","maxlength","placeholder","disabled","data-invalid","onCompositionstart","onCompositionend"]))}}),Xl=Jl;const[bs,Zl]=it("TagsInputItem");var ei=le({__name:"TagsInputItem",props:{value:{type:null,required:!0},disabled:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(u){const n=u,{value:t}=At(n),s=Ia(),{forwardRef:o,currentElement:i}=Ke(),{CollectionItem:l}=xt(),r=q(()=>s.selectedElement.value===i.value),m=q(()=>n.disabled||s.disabled.value),y=Zl({value:t,isSelected:r,disabled:m,textId:"",displayValue:q(()=>s.displayValue(t.value))});return(h,S)=>(d(),B(e(l),{value:e(t)},{default:D(()=>[f(e(Be),{ref:e(o),as:h.as,"as-child":h.asChild,"aria-labelledby":e(y).textId,"aria-current":r.value,"data-disabled":m.value?"":void 0,"data-state":r.value?"active":"inactive"},{default:D(()=>[ve(h.$slots,"default")]),_:3},8,["as","as-child","aria-labelledby","aria-current","data-disabled","data-state"])]),_:3},8,["value"]))}}),ti=ei,ai=le({__name:"TagsInputItemDelete",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(u){const n=u;Ke();const t=Ia(),s=bs(),o=q(()=>s.disabled?.value||t.disabled.value);function i(){if(o.value)return;const l=t.modelValue.value.findIndex(r=>jt(r,s.value.value));t.onRemoveValue(l)}return(l,r)=>(d(),B(e(Be),Ae({tabindex:"-1"},n,{"aria-labelledby":e(s).textId,"aria-current":e(s).isSelected.value,"data-state":e(s).isSelected.value?"active":"inactive","data-disabled":o.value?"":void 0,type:l.as==="button"?"button":void 0,onClick:i}),{default:D(()=>[ve(l.$slots,"default")]),_:3},16,["aria-labelledby","aria-current","data-state","data-disabled","type"]))}}),si=ai,oi=le({__name:"TagsInputItemText",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"span"}},setup(u){const n=u,t=bs();return Ke(),t.textId||=pt(void 0,"reka-tags-input-item-text"),(s,o)=>(d(),B(e(Be),Ae(n,{id:e(t).textId}),{default:D(()=>[ve(s.$slots,"default",{},()=>[ee(c(e(t).displayValue.value),1)])]),_:3},16,["id"]))}}),ni=oi;function li(u,n,t,s="group",o="zh-CN",i){const l=Qo(),{chatKey:r,state:m}=l.ensureSessionState({sessionId:u,sessionName:n,timeFilter:t,chatType:s,locale:o}),y=l.resetToSelectorOnEnter(r,i);return l.applySessionAssistantSelection(r),{initialization:y,messages:Fe(m,"messages"),sourceMessages:Fe(m,"sourceMessages"),currentKeywords:Fe(m,"currentKeywords"),isLoadingSource:Fe(m,"isLoadingSource"),isAIThinking:Fe(m,"isAIThinking"),currentAIChatId:Fe(m,"currentAIChatId"),currentToolStatus:Fe(m,"currentToolStatus"),toolsUsedInCurrentRound:Fe(m,"toolsUsedInCurrentRound"),sessionTokenUsage:Fe(m,"sessionTokenUsage"),agentStatus:Fe(m,"agentStatus"),selectedAssistantId:Fe(m,"selectedAssistantId"),sendMessage:(h,S)=>l.sendMessage(r,h,S),editMessageAndRegenerate:(h,S)=>l.editMessageAndRegenerate(r,h,S),loadAIChat:h=>l.loadAIChat(r,h),startNewAIChat:h=>l.startNewAIChat(r,h),stopGeneration:()=>l.stopGeneration(r),selectAssistantForSession:h=>l.selectAssistantForSession(r,h)}}const ra=new Map;function ii(u,n,t){const{activeTab:s,isInitialLoad:o,currentSessionId:i,onTimeRangeChange:l}=t,r=A(null),m=A(null),y=A([]);let h=null;const S=q(()=>{const v=r.value;if(v)return{startTs:v.startTs,endTs:v.endTs}}),x=q(()=>{const v=r.value;return v?`${v.startTs}-${v.endTs}`:"init"}),I=q(()=>{const v=u.query,_=v.timeMode;return _?{mode:_,recentDays:v.timeDays?Number(v.timeDays):void 0,year:v.timeYear?Number(v.timeYear):void 0,quarterYear:v.timeYear?Number(v.timeYear):void 0,quarter:v.timeQuarter?Number(v.timeQuarter):void 0,customStart:v.timeStart||void 0,customEnd:v.timeEnd||void 0}:i.value&&ra.has(i.value)?ra.get(i.value):{mode:"recent",recentDays:365}});me([s,r],([v,_])=>{if(o.value||!_)return;const k=_.state,C={tab:v,timeMode:k.mode,timeDays:void 0,timeYear:void 0,timeQuarter:void 0,timeStart:void 0,timeEnd:void 0};k.mode==="recent"&&(C.timeDays=k.recentDays),k.mode==="year"&&(C.timeYear=k.year),k.mode==="quarter"&&(C.timeYear=k.quarterYear,C.timeQuarter=k.quarter),k.mode==="custom"&&(C.timeStart=k.customStart,C.timeEnd=k.customEnd),n.replace({query:{...u.query,...C}})}),me(r,v=>{if(!v||!i.value)return;const _=`${i.value}:${v.startTs}:${v.endTs}`;ra.set(i.value,v.state),_!==h&&(h=_,ca(),l?.())},{immediate:!0});function w(){h=null,r.value=null,m.value=null,y.value=[]}return{timeRangeValue:r,fullTimeRange:m,availableYears:y,timeFilter:S,timeFilterKey:x,initialTimeState:I,resetTimeRange:w}}function ri(u){const n=u.columns.join(","),t=u.rows.map(s=>s.map(o=>o===null?"":`"${String(o).replace(/"/g,'""')}"`).join(","));return[n,...t].join(`
|
|
3
|
+
`)}function ui(u){const n=u.rows.map(t=>{const s={};return u.columns.forEach((o,i)=>{s[o]=t[i]}),s});return JSON.stringify(n,null,2)}async function di(u,n){if(u.rows.length===0)return{success:!1,error:"No data to export"};const s=`sql_result_${Ve().format("YYYYMMDD_HHmmss")}.${n}`;let o,i;n==="json"?(o=ui(u),i="application/json"):(o=ri(u),i="text/csv");const l=`data:${i};charset=utf-8,${encodeURIComponent(o)}`,{useCacheService:r}=await xa(async()=>{const{useCacheService:y}=await import("./service-BwbGKwDn.js");return{useCacheService:y}},__vite__mapDeps([0,1,2,3]));return await r().saveToDownloads(s,l)}function Bb(u){const{route:n,router:t,currentSessionId:s,selectSession:o,defaultTab:i,validTabIds:l}=u,r=A(!0),m=A(!0),y=A(!0),h=A(null),S=A([]),x=A([]),I=A([]),w=A([]);let v=0,_=0,k=!1,C=!1,$=null;function g(){const X=s.value;if(!X)return null;const W=U.value;return W?`${X}:${W.startTs}:${W.endTs}`:`${X}:all`}function b(){!y.value||!k||(!h.value||C)&&(y.value=!1)}function F(){const X=n.query.tab;return X&&l.includes(X)?X:i}const E=A(F()),z=q(()=>E.value==="insights"),T=q(()=>["insights","ranking"].includes(E.value));me(E,X=>{const W={insights:"insights",ranking:"ranking","ai-chat":"ai_chat"}[X];W&&St("feature_used",{feature_id:W})},{immediate:!0});const{timeRangeValue:M,fullTimeRange:L,availableYears:N,timeFilter:U,initialTimeState:H,resetTimeRange:ie}=ii(n,t,{activeTab:E,isInitialLoad:m,currentSessionId:s,onTimeRangeChange:()=>P()});function se(){const X=n.params.id;X&&(o(X),s.value!==X&&t.replace("/"))}async function P(){const X=s.value;if(!X)return;const W=++_,ae=g();if(!z.value){r.value=!1,C=!0,b();return}y.value&&(C=!1),r.value=!0;try{const O=U.value,ue=Pe(),[we,xe,te,K]=await Promise.all([ue.getMemberActivity(X,O),ue.getHourlyActivity(X,O),ue.getDailyActivity(X,O),ue.getMessageTypeDistribution(X,O)]);if(W!==_)return;S.value=we,x.value=xe,I.value=te,w.value=K,$=ae}catch(O){W===_&&console.error("加载分析数据失败:",O)}finally{W===_&&(r.value=!1,C=!0,b())}}function R(){$=null,z.value&&P()}function J(X){X||(M.value=null,P())}async function fe(){const X=s.value;if(!X)return;const W=++v;m.value=!0;try{const ae=await Pe().getSession(X);if(W!==v||s.value!==X)return;h.value=ae}catch(ae){W===v&&s.value===X&&(h.value=null,console.error("加载基础数据失败:",ae))}finally{W===v&&s.value===X&&(m.value=!1,k=!0,b())}}return me(E,()=>{if(!z.value){_++,ca(),r.value=!1,T.value||(C=!0,b());return}const X=g();if(X&&X===$){r.value=!1,C=!0,b();return}r.value=!0,s.value&&M.value&&P()}),me(()=>n.params.id,()=>{E.value=F(),se()}),me(()=>n.query.tab,()=>{E.value=F()}),me(s,()=>{_++,$=null,ie(),k=!1,C=!T.value,r.value=z.value,y.value=!0,ca(),fe()},{immediate:!0}),De(()=>{se()}),{activeTab:E,isLoading:r,isInitialLoad:m,isSessionSwitching:y,session:h,memberActivity:S,hourlyActivity:x,dailyActivity:I,messageTypes:w,timeRangeValue:M,fullTimeRange:L,availableYears:N,timeFilter:U,initialTimeState:H,syncSession:se,loadData:fe,loadAnalysisData:P,invalidateAnalysisData:R,handleTimeRangeInitialized:J}}const ci={class:"pointer-events-none absolute right-3 top-3 z-50 opacity-0 transition-opacity duration-200 group-hover/card:pointer-events-auto group-hover/card:opacity-100"},mi=le({__name:"CardCaptureOverlay",setup(u){return(n,t)=>(d(),p("div",ci,[f(Ht,{type:"element","target-selector":"[data-capturable-card]",size:"xs"})]))}}),sa=le({__name:"ReportCard",props:{capturable:{type:Boolean,default:!0}},setup(u){return(n,t)=>(d(),B(rt,{"data-capturable-card":"",class:"group/card relative isolate flex flex-col"},{default:D(()=>[f(kn),u.capturable?(d(),B(mi,{key:0})):V("",!0),ve(n.$slots,"default")]),_:3}))}}),pi={class:"flex items-center justify-between"},gi={class:"font-semibold text-gray-900 dark:text-white whitespace-nowrap"},fi={key:0,class:"mt-1 text-sm text-gray-500 dark:text-gray-400"},vi={class:"flex items-center gap-2"},hi={key:0,class:"pointer-events-none opacity-0 transition-opacity duration-200 group-hover/card:pointer-events-auto group-hover/card:opacity-100"},Qe=le({__name:"SectionCard",props:{title:{},description:{},capturable:{type:Boolean,default:!0},showDivider:{type:Boolean,default:!0},scrollable:{type:Boolean,default:!1},maxHeightVh:{default:60}},setup(u){const n=u,t=q(()=>{if(n.scrollable)return{maxHeight:`${n.maxHeightVh}vh`,overflowY:"auto"}});return(s,o)=>(d(),B(rt,{class:"group/card","data-section-card":""},{default:D(()=>[a("div",{class:Z(["px-5 py-3",{"border-b border-gray-200 dark:border-white/5":u.showDivider&&s.$slots.default}])},[a("div",pi,[a("div",null,[a("p",gi,c(u.title),1),u.description?(d(),p("p",fi,c(u.description),1)):V("",!0)]),a("div",vi,[ve(s.$slots,"headerRight"),u.capturable?(d(),p("div",hi,[f(Ht,{type:"element","target-selector":"[data-section-card]",size:"xs"})])):V("",!0)])])],2),u.scrollable?(d(),p("div",{key:0,style:et(t.value)},[ve(s.$slots,"default")],4)):ve(s.$slots,"default",{key:1}),ve(s.$slots,"footer")]),_:3}))}}),yi={class:"flex items-start justify-between"},xi={class:"min-w-0 flex-1"},bi={class:"text-sm font-medium text-gray-500 dark:text-gray-400"},_i={key:1,class:"text-xl"},ki={key:0,class:"mt-4 flex items-center text-sm"},wi={class:"text-gray-500 dark:text-gray-400"},nt=le({__name:"StatCard",props:{label:{},value:{},valueColor:{},subtext:{},icon:{},iconBg:{}},setup(u){const n={pink:"text-pink-600 dark:text-pink-400",amber:"text-amber-600 dark:text-amber-400",blue:"text-blue-600 dark:text-blue-400",green:"text-green-600 dark:text-green-400",red:"text-red-600 dark:text-red-400",gray:"text-gray-900 dark:text-white"},t={pink:"bg-pink-100 dark:bg-pink-500/10",amber:"bg-amber-100 dark:bg-amber-500/10",blue:"bg-blue-100 dark:bg-blue-500/10",green:"bg-green-100 dark:bg-green-500/10",red:"bg-red-100 dark:bg-red-500/10",gray:"bg-gray-100 dark:bg-white/5"};return(s,o)=>(d(),B(rt,{class:"p-5"},{default:D(()=>[a("div",yi,[a("div",xi,[a("p",bi,c(u.label),1),a("p",{class:Z(["mt-2 truncate text-2xl font-bold tracking-tight",u.valueColor?n[u.valueColor]:"text-gray-900 dark:text-white"])},c(u.value),3)]),u.icon?(d(),p("div",{key:0,class:Z(["ml-4 flex h-10 w-10 shrink-0 items-center justify-center rounded-xl",t[u.iconBg||"gray"]])},[u.icon.startsWith("i-")?(d(),B(_o,{key:0,name:u.icon,size:"lg"},null,8,["name"])):(d(),p("span",_i,c(u.icon),1))],2)):V("",!0)]),u.subtext||s.$slots.subtext?(d(),p("div",ki,[ve(s.$slots,"subtext",{},()=>[a("span",wi,c(u.subtext),1)])])):V("",!0)]),_:3}))}}),Ci={key:0,class:"mb-2 block text-2xl"},Pb=le({__name:"EmptyState",props:{text:{},icon:{},padding:{}},setup(u){const n={sm:"px-4 py-4",md:"px-5 py-8",lg:"px-6 py-12"};return(t,s)=>(d(),p("div",{class:Z(["text-center text-sm text-gray-400",n[u.padding||"md"]])},[u.icon?(d(),p("span",Ci,c(u.icon),1)):V("",!0),ee(" "+c(u.text||"暂无数据"),1)],2))}}),$i=["aria-busy"],Si={key:0,class:"insight-view-transition__indicator","aria-hidden":"true"},Ii=["inert","aria-hidden"],Ti=["inert","aria-hidden"],Mi=le({__name:"InsightViewTransition",props:{activeKey:{}},setup(u){const n=u,t=A(n.activeKey),s=A(null),o=A("primary"),i=A("idle"),l=A(0),r=ko("session-switch-loading",null),m=q(()=>o.value==="primary"?t.value:s.value),y=q(()=>o.value==="primary"?"secondary":"primary"),h=q(()=>i.value!=="idle"),S=q(()=>i.value==="waiting"&&!r?.value);wo(Wo,{register:v,suppress:h});let x=0,I=null;function w(){I&&clearTimeout(I),I=null}function v(){const g=x;let b=!0;return l.value++,()=>{b&&(b=!1,g===x&&(l.value=Math.max(0,l.value-1)))}}function _(g,b){g==="primary"?t.value=b:s.value=b}function k(g){const b=g===o.value;return{"insight-view-transition__pane--active":b&&i.value==="idle","insight-view-transition__pane--waiting":b&&i.value==="waiting","insight-view-transition__pane--outgoing":b&&i.value==="revealing","insight-view-transition__pane--pending":!b&&i.value==="waiting","insight-view-transition__pane--incoming":!b&&i.value==="revealing"}}async function C(g){await Re(),await Re(),!(g!==x||i.value!=="waiting"||l.value>0)&&(i.value="revealing",I=setTimeout(()=>{if(g!==x)return;const b=o.value;o.value=y.value,_(b,null),i.value="idle",I=null},180))}function $(g){const b=++x;if(w(),l.value=0,g===m.value){_(y.value,null),i.value="idle";return}_(y.value,g),i.value="waiting",C(b)}return me(()=>n.activeKey,g=>$(g)),me(l,g=>{g===0&&i.value==="waiting"&&C(x)}),ba(()=>{x++,w()}),(g,b)=>(d(),p("div",{class:"insight-view-transition","aria-busy":h.value},[S.value?(d(),p("div",Si,[f(Uo)])):V("",!0),t.value?(d(),p("div",{key:1,class:Z(["insight-view-transition__pane",k("primary")]),inert:o.value!=="primary"||h.value,"aria-hidden":o.value!=="primary"},[ve(g.$slots,"default",{viewKey:t.value},void 0,!0)],10,Ii)):V("",!0),s.value?(d(),p("div",{key:2,class:Z(["insight-view-transition__pane",k("secondary")]),inert:o.value!=="secondary"||h.value,"aria-hidden":o.value!=="secondary"},[ve(g.$slots,"default",{viewKey:s.value},void 0,!0)],10,Ti)):V("",!0)],8,$i))}}),Nb=gt(Mi,[["__scopeId","data-v-be8a2c26"]]),Ai=le({__name:"EChartCalendar",props:{data:{},height:{default:180},year:{}},setup(u){ea([ms,ps,$a,gs,ta]);const n=u,{t,locale:s}=Ce(),o=Gt(),i=A(null);let l=null;const r=q(()=>{if(n.year)return n.year;if(n.data.length===0)return new Date().getFullYear();const v=n.data.map(_=>parseInt(_.date.split("-")[0]));return Math.max(...v)}),m=q(()=>n.data.length===0?10:Math.max(...n.data.map(v=>v.value),1)),y=q(()=>n.data.map(v=>[v.date,v.value])),h={light:["#fee5e8","#fbb5c2","#f7758c","#ee4567"],dark:["#3d1f24","#6b2f3a","#a34557","#ee4567"]},S=q(()=>({tooltip:{trigger:"item",formatter:v=>{const _=v.data[0],k=v.data[1];return`${_}<br/>${t("views.message.calendarTooltipMessages")}: ${k}`}},visualMap:{min:0,max:m.value,calculable:!1,orient:"horizontal",left:"center",bottom:0,itemWidth:10,itemHeight:100,text:[`${m.value}`,"0"],inRange:{color:o.value?h.dark:h.light},textStyle:{color:o.value?"#9ca3af":"#6b7280",fontSize:10},show:!0},calendar:{top:30,left:40,cellSize:[13,13],range:String(r.value),itemStyle:{borderWidth:2,borderColor:o.value?"#1f2937":"#ffffff"},yearLabel:{show:!0,position:"top",color:o.value?"#9ca3af":"#6b7280",fontSize:12},monthLabel:{show:!0,color:o.value?"#9ca3af":"#6b7280",fontSize:10,nameMap:[t("common.month.jan"),t("common.month.feb"),t("common.month.mar"),t("common.month.apr"),t("common.month.may"),t("common.month.jun"),t("common.month.jul"),t("common.month.aug"),t("common.month.sep"),t("common.month.oct"),t("common.month.nov"),t("common.month.dec")]},dayLabel:{show:!0,firstDay:1,color:o.value?"#6b7280":"#9ca3af",fontSize:10,nameMap:[t("common.weekday.sun"),t("common.weekday.mon"),t("common.weekday.tue"),t("common.weekday.wed"),t("common.weekday.thu"),t("common.weekday.fri"),t("common.weekday.sat")]},splitLine:{show:!1}},series:[{type:"heatmap",coordinateSystem:"calendar",data:y.value}]}));function x(){i.value&&(l=aa(i.value,o.value?"dark":void 0,{renderer:"canvas"}),l.setOption({backgroundColor:"transparent",...S.value}))}function I(){l&&l.setOption({backgroundColor:"transparent",...S.value},{notMerge:!0})}function w(){l?.resize()}return me([()=>n.data,o,s],()=>{I()}),me(()=>n.year,()=>{I()}),De(()=>{x(),window.addEventListener("resize",w)}),Je(()=>{window.removeEventListener("resize",w),l?.dispose()}),(v,_)=>(d(),p("div",{ref_key:"chartRef",ref:i,style:et({height:`${u.height}px`,width:"100%"})},null,4))}});function qi(u,n){if(typeof u!="object"||u===null)return!1;const t=dt(u,n);return t!=null&&t!==""}function Ka(u,n){return n?{xs:44,sm:48,md:52,lg:56,xl:60}[u]:{xs:24,sm:28,md:32,lg:36,xl:40}[u]}function zi(u,n,t,s){const o=Ka(n,!0),i=Ka(n,!1);return s?()=>o:t?l=>qi(u[l],t)?o:i:()=>i}const Di={slots:{base:["relative group rounded-md inline-flex items-center disabled:cursor-not-allowed disabled:opacity-75","transition-colors"],leading:"absolute inset-y-0 start-0 flex items-center",leadingIcon:"shrink-0 text-dimmed",leadingAvatar:"shrink-0",leadingAvatarSize:"",trailing:"absolute inset-y-0 end-0 flex items-center",trailingIcon:"shrink-0 text-dimmed",value:"truncate pointer-events-none",placeholder:"truncate text-dimmed",arrow:"fill-bg stroke-default",content:["max-h-[min(15rem,var(--reka-select-content-available-height,15rem))] w-(--reka-select-trigger-width) bg-default shadow-lg rounded-md ring ring-default overflow-hidden origin-(--reka-select-content-transform-origin) pointer-events-auto flex flex-col","max-h-[min(15rem,var(--reka-combobox-content-available-height,15rem))] origin-(--reka-combobox-content-transform-origin) w-(--reka-combobox-trigger-width)"],viewport:"relative scroll-py-1 overflow-y-auto flex-1",group:"p-1 isolate",empty:"text-center text-muted",label:"font-semibold text-highlighted",separator:"-mx-1 my-1 h-px bg-border",item:["group relative w-full flex items-start select-none outline-none before:absolute before:z-[-1] before:inset-px before:rounded-md data-disabled:cursor-not-allowed data-disabled:opacity-75 text-default data-highlighted:not-data-disabled:text-highlighted data-highlighted:not-data-disabled:before:bg-elevated/50","transition-colors before:transition-colors"],itemLeadingIcon:["shrink-0 text-dimmed group-data-highlighted:not-group-data-disabled:text-default","transition-colors"],itemLeadingAvatar:"shrink-0",itemLeadingAvatarSize:"",itemLeadingChip:"shrink-0",itemLeadingChipSize:"",itemTrailing:"ms-auto inline-flex gap-1.5 items-center",itemTrailingIcon:"shrink-0",itemWrapper:"flex-1 flex flex-col min-w-0",itemLabel:"truncate",itemDescription:"truncate text-muted",input:"border-b border-default",focusScope:"flex flex-col min-h-0",trailingClear:"p-0"},variants:{fieldGroup:{horizontal:"not-only:first:rounded-e-none not-only:last:rounded-s-none not-last:not-first:rounded-none focus-visible:z-[1]",vertical:"not-only:first:rounded-b-none not-only:last:rounded-t-none not-last:not-first:rounded-none focus-visible:z-[1]"},size:{xs:{base:"px-2 py-1 text-xs gap-1",leading:"ps-2",trailing:"pe-2",leadingIcon:"size-4",leadingAvatarSize:"3xs",trailingIcon:"size-4",label:"p-1 text-[10px]/3 gap-1",item:"p-1 text-xs gap-1",itemLeadingIcon:"size-4",itemLeadingAvatarSize:"3xs",itemLeadingChip:"size-4",itemLeadingChipSize:"sm",itemTrailingIcon:"size-4",empty:"p-2 text-xs"},sm:{base:"px-2.5 py-1.5 text-xs gap-1.5",leading:"ps-2.5",trailing:"pe-2.5",leadingIcon:"size-4",leadingAvatarSize:"3xs",trailingIcon:"size-4",label:"p-1.5 text-[10px]/3 gap-1.5",item:"p-1.5 text-xs gap-1.5",itemLeadingIcon:"size-4",itemLeadingAvatarSize:"3xs",itemLeadingChip:"size-4",itemLeadingChipSize:"sm",itemTrailingIcon:"size-4",empty:"p-2.5 text-xs"},md:{base:"px-2.5 py-1.5 text-sm gap-1.5",leading:"ps-2.5",trailing:"pe-2.5",leadingIcon:"size-5",leadingAvatarSize:"2xs",trailingIcon:"size-5",label:"p-1.5 text-xs gap-1.5",item:"p-1.5 text-sm gap-1.5",itemLeadingIcon:"size-5",itemLeadingAvatarSize:"2xs",itemLeadingChip:"size-5",itemLeadingChipSize:"md",itemTrailingIcon:"size-5",empty:"p-2.5 text-sm"},lg:{base:"px-3 py-2 text-sm gap-2",leading:"ps-3",trailing:"pe-3",leadingIcon:"size-5",leadingAvatarSize:"2xs",trailingIcon:"size-5",label:"p-2 text-xs gap-2",item:"p-2 text-sm gap-2",itemLeadingIcon:"size-5",itemLeadingAvatarSize:"2xs",itemLeadingChip:"size-5",itemLeadingChipSize:"md",itemTrailingIcon:"size-5",empty:"p-3 text-sm"},xl:{base:"px-3 py-2 text-base gap-2",leading:"ps-3",trailing:"pe-3",leadingIcon:"size-6",leadingAvatarSize:"xs",trailingIcon:"size-6",label:"p-2 text-sm gap-2",item:"p-2 text-base gap-2",itemLeadingIcon:"size-6",itemLeadingAvatarSize:"xs",itemLeadingChip:"size-6",itemLeadingChipSize:"lg",itemTrailingIcon:"size-6",empty:"p-3 text-base"}},variant:{outline:"text-highlighted bg-default ring ring-inset ring-accented hover:bg-elevated disabled:bg-default",soft:"text-highlighted bg-elevated/50 hover:bg-elevated focus:bg-elevated disabled:bg-elevated/50",subtle:"text-highlighted bg-elevated ring ring-inset ring-accented hover:bg-accented/75 disabled:bg-elevated",ghost:"text-highlighted bg-transparent hover:bg-elevated focus:bg-elevated disabled:bg-transparent dark:disabled:bg-transparent",none:"text-highlighted bg-transparent focus:outline-none"},color:{primary:"",secondary:"",success:"",info:"",warning:"",error:"",neutral:""},leading:{true:""},trailing:{true:""},loading:{true:""},highlight:{true:""},fixed:{false:""},type:{file:"file:me-1.5 file:font-medium file:text-muted file:outline-none"},position:{popper:{content:"data-[state=open]:animate-[scale-in_100ms_ease-out] data-[state=closed]:animate-[scale-out_100ms_ease-in]"},"item-aligned":{content:""}},multiple:{true:""},virtualize:{true:{viewport:"p-1 isolate"},false:{viewport:"divide-y divide-default"}}},compoundVariants:[{color:"primary",variant:["outline","subtle"],class:"outline-primary/25 focus-visible:outline-3 focus-visible:ring-primary"},{color:"secondary",variant:["outline","subtle"],class:"outline-secondary/25 focus-visible:outline-3 focus-visible:ring-secondary"},{color:"success",variant:["outline","subtle"],class:"outline-success/25 focus-visible:outline-3 focus-visible:ring-success"},{color:"info",variant:["outline","subtle"],class:"outline-info/25 focus-visible:outline-3 focus-visible:ring-info"},{color:"warning",variant:["outline","subtle"],class:"outline-warning/25 focus-visible:outline-3 focus-visible:ring-warning"},{color:"error",variant:["outline","subtle"],class:"outline-error/25 focus-visible:outline-3 focus-visible:ring-error"},{color:"primary",variant:["soft","ghost"],class:"outline-primary/25 focus-visible:outline-3"},{color:"secondary",variant:["soft","ghost"],class:"outline-secondary/25 focus-visible:outline-3"},{color:"success",variant:["soft","ghost"],class:"outline-success/25 focus-visible:outline-3"},{color:"info",variant:["soft","ghost"],class:"outline-info/25 focus-visible:outline-3"},{color:"warning",variant:["soft","ghost"],class:"outline-warning/25 focus-visible:outline-3"},{color:"error",variant:["soft","ghost"],class:"outline-error/25 focus-visible:outline-3"},{color:"primary",highlight:!0,class:"ring ring-inset ring-primary"},{color:"secondary",highlight:!0,class:"ring ring-inset ring-secondary"},{color:"success",highlight:!0,class:"ring ring-inset ring-success"},{color:"info",highlight:!0,class:"ring ring-inset ring-info"},{color:"warning",highlight:!0,class:"ring ring-inset ring-warning"},{color:"error",highlight:!0,class:"ring ring-inset ring-error"},{color:"neutral",variant:["outline","subtle"],class:"outline-inverted/25 focus-visible:outline-3 focus-visible:ring-inverted"},{color:"neutral",variant:["soft","ghost"],class:"outline-inverted/25 focus-visible:outline-3"},{color:"neutral",highlight:!0,class:"ring ring-inset ring-inverted"},{leading:!0,size:"xs",class:"ps-7"},{leading:!0,size:"sm",class:"ps-8"},{leading:!0,size:"md",class:"ps-9"},{leading:!0,size:"lg",class:"ps-10"},{leading:!0,size:"xl",class:"ps-11"},{trailing:!0,size:"xs",class:"pe-7"},{trailing:!0,size:"sm",class:"pe-8"},{trailing:!0,size:"md",class:"pe-9"},{trailing:!0,size:"lg",class:"pe-10"},{trailing:!0,size:"xl",class:"pe-11"},{loading:!0,leading:!0,class:{leadingIcon:"animate-spin"}},{loading:!0,leading:!1,trailing:!0,class:{trailingIcon:"animate-spin"}},{fixed:!1,size:"xs",class:"md:text-xs"},{fixed:!1,size:"sm",class:"md:text-xs"},{fixed:!1,size:"md",class:"md:text-sm"},{fixed:!1,size:"lg",class:"md:text-sm"}],defaultVariants:{size:"md",color:"primary",variant:"outline",position:"popper"}},Ta=Object.assign({inheritAttrs:!1},{__name:"SelectMenu",props:Ut({id:{type:String,required:!1},placeholder:{type:String,required:!1},searchInput:{type:[Boolean,Object],required:!1,default:!0},color:{type:null,required:!1},variant:{type:null,required:!1},size:{type:null,required:!1},required:{type:Boolean,required:!1},trailingIcon:{type:null,required:!1},selectedIcon:{type:null,required:!1},clear:{type:[Boolean,Object],required:!1},clearIcon:{type:null,required:!1},content:{type:Object,required:!1},arrow:{type:[Boolean,Object],required:!1},portal:{type:[Boolean,String],required:!1,skipCheck:!0,default:!0},virtualize:{type:[Boolean,Object],required:!1,default:!1},valueKey:{type:null,required:!1},labelKey:{type:null,required:!1,default:"label"},descriptionKey:{type:null,required:!1,default:"description"},items:{type:null,required:!1},defaultValue:{type:null,required:!1},modelValue:{type:null,required:!1},modelModifiers:{type:null,required:!1},multiple:{type:Boolean,required:!1},highlight:{type:Boolean,required:!1},createItem:{type:[Boolean,String,Object],required:!1},filterFields:{type:Array,required:!1},ignoreFilter:{type:Boolean,required:!1},autofocus:{type:Boolean,required:!1},autofocusDelay:{type:Number,required:!1,default:0},class:{type:null,required:!1},ui:{type:Object,required:!1},open:{type:Boolean,required:!1},defaultOpen:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},name:{type:String,required:!1},resetSearchTermOnBlur:{type:Boolean,required:!1,default:!0},resetSearchTermOnSelect:{type:Boolean,required:!1,default:!0},resetModelValueOnClear:{type:Boolean,required:!1,default:!0},highlightOnHover:{type:Boolean,required:!1},by:{type:[String,Function],required:!1},icon:{type:null,required:!1},avatar:{type:Object,required:!1},leading:{type:Boolean,required:!1},leadingIcon:{type:null,required:!1},trailing:{type:Boolean,required:!1},loading:{type:Boolean,required:!1},loadingIcon:{type:null,required:!1}},{searchTerm:{type:String,default:""},searchTermModifiers:{}}),emits:Ut(["change","blur","focus","create","clear","highlight","update:modelValue","update:open"],["update:searchTerm"]),setup(u,{expose:n,emit:t}){const s=u,o=t,i=ya(),l=es("selectMenu",s),r=ma(u,"searchTerm",{type:String,default:""}),{t:m}=Co(),y=ns(),{filterGroups:h}=en(),S=ts(as(l,"modelValue","defaultValue","open","defaultOpen","required","multiple","resetSearchTermOnBlur","resetSearchTermOnSelect","resetModelValueOnClear","highlightOnHover","by"),o),x=$o(Fe(()=>l.portal)),I=Fe(()=>Ct(l.content,{side:"bottom",sideOffset:8,collisionPadding:8,position:"popper"})),w=Fe(()=>Ct(l.arrow,{rounded:!0})),v=q(()=>typeof l.clear=="object"?l.clear:{}),_=Fe(()=>l.virtualize?Ct(typeof l.virtualize=="boolean"?{}:l.virtualize,{estimateSize:zi(K.value,J.value||"md",l.descriptionKey,!!i["item-description"])}):!1),k=Fe(()=>Ct(l.searchInput,{placeholder:m("selectMenu.search"),variant:"none"})),{emitFormBlur:C,emitFormFocus:$,emitFormInput:g,emitFormChange:b,size:F,color:E,id:z,name:T,highlight:M,disabled:L,ariaAttrs:N}=ss(s),{orientation:U,size:H}=os(s),{isLeading:ie,isTrailing:se,leadingIconName:P,trailingIconName:R}=ls(Fe(()=>Ct(l,{trailingIcon:y.ui.icons.chevronDown}))),J=q(()=>H.value||F.value),[fe,X]=Fa(),[W,ae]=Fa({props:{item:{type:[Object,String,Number,Boolean],required:!0},index:{type:Number,required:!1}}}),O=q(()=>Wt({extend:Wt(Di),...y.ui?.selectMenu||{}})({color:E.value??l.color,variant:l.variant,size:J?.value??l.size,loading:l.loading,highlight:M.value??l.highlight,leading:ie.value||!!l.avatar||!!i.leading,trailing:se.value||!!i.trailing,fieldGroup:U.value,virtualize:!!l.virtualize,multiple:l.multiple}));function ue(Y){if(l.multiple&&Array.isArray(Y)){const Ie=Y.map(G=>Ra(xe.value,G,{labelKey:l.labelKey,valueKey:l.valueKey,by:l.by})).filter(G=>G!=null&&G!=="");return Ie.length>0?Ie.join(", "):void 0}return Ra(xe.value,Y,{labelKey:l.labelKey,valueKey:l.valueKey,by:l.by})}const we=q(()=>l.items?.length?Ao(l.items)?l.items:[l.items]:[]),xe=q(()=>we.value.flatMap(Y=>Y)),te=q(()=>{if(l.ignoreFilter||!r.value)return we.value;const Y=Array.isArray(l.filterFields)?l.filterFields:[l.labelKey];return h(we.value,r.value,{fields:Y,isStructural:Ie=>Te(Ie)&&!!Ie.type&&["label","separator"].includes(Ie.type)})}),K=q(()=>te.value.flatMap(Y=>Y)),j=q(()=>{if(!l.createItem||!r.value)return!1;const Y=l.valueKey?{[l.valueKey]:r.value}:r.value;return typeof l.createItem=="object"&&l.createItem.when==="always"||l.createItem==="always"?!K.value.find(Ie=>Mo(Ie,Y,l.by??l.valueKey)):!K.value.length}),de=q(()=>typeof l.createItem=="object"?l.createItem.position:"bottom"),be=Pt("triggerRef");function ke(){l.autofocus&&be.value?.$el?.focus({focusVisible:!0})}De(()=>{setTimeout(()=>{ke()},l.autofocusDelay)});function ze(Y){if(is(l.modelValue)===Y)return;l.modelModifiers?.trim&&(typeof Y=="string"||Y===null||Y===void 0)&&(Y=Y?.trim()??null),l.modelModifiers?.number&&(Y=To(Y)),l.modelModifiers?.nullable&&(Y??=null),l.modelModifiers?.optional&&!l.modelModifiers?.nullable&&Y!==null&&(Y??=void 0);const Ie=new Event("change",{target:{value:Y}});o("change",Ie),b(),g(),l.resetSearchTermOnSelect&&(r.value="")}const je=A(!1);function qe(Y){je.value=Y;let Ie;if(Y){const G=new FocusEvent("focus");o("focus",G),$(),clearTimeout(Ie)}else{const G=new FocusEvent("blur");o("blur",G),C(),l.resetSearchTermOnBlur&&(Ie=setTimeout(()=>{r.value=""},100))}}function He(Y){Y.preventDefault(),Y.stopPropagation(),o("create",r.value)}function Ue(Y,Ie){if(Te(Ie)){if(Ie.disabled){Y.preventDefault();return}Ie.onSelect?.(Y)}}function Te(Y){return typeof Y=="object"&&Y!==null}function re(Y){return l.multiple&&Array.isArray(Y)?Y.length===0:Y==null||Y===""}function ce(){o("clear")}const Q=Pt("viewportRef"),oe=Pt("comboboxRootRef");return me(()=>l.items,async()=>{je.value&&(await Re(),oe.value?.highlightFirstItem?.())},{flush:"post"}),n({triggerRef:Fe(()=>be.value?.$el),viewportRef:Fe(()=>Q.value)}),(Y,Ie)=>(d(),p(ne,null,[f(e(fe),null,{default:D(()=>[f(e(Wa),{"data-slot":"item",class:Z(O.value.item({class:e(l).ui?.item})),value:r.value,onSelect:He},{default:D(()=>[a("span",{"data-slot":"itemLabel",class:Z(O.value.itemLabel({class:e(l).ui?.itemLabel}))},[ve(Y.$slots,"create-item-label",{item:r.value},()=>[ee(c(e(m)("selectMenu.create",{label:r.value})),1)])],2)]),_:3},8,["class","value"])]),_:3}),f(e(W),null,{default:D(({item:G,index:pe})=>[Te(G)&&G.type==="label"?(d(),B(e(Ol),{key:0,"data-slot":"label",class:Z(O.value.label({class:[e(l).ui?.label,G.ui?.label,G.class]}))},{default:D(()=>[ee(c(e(dt)(G,e(l).labelKey)),1)]),_:2},1032,["class"])):Te(G)&&G.type==="separator"?(d(),B(e(jl),{key:1,"data-slot":"separator",class:Z(O.value.separator({class:[e(l).ui?.separator,G.ui?.separator,G.class]}))},null,8,["class"])):(d(),B(e(Wa),{key:2,"data-slot":"item",class:Z(O.value.item({class:[e(l).ui?.item,Te(G)&&G.ui?.item,Te(G)&&G.class]})),disabled:Te(G)&&G.disabled,value:e(l).valueKey&&Te(G)?e(dt)(G,e(l).valueKey):G,onSelect:$e=>Ue($e,G)},{default:D(()=>[ve(Y.$slots,"item",{item:G,index:pe,ui:O.value},()=>[ve(Y.$slots,"item-leading",{item:G,index:pe,ui:O.value},()=>[Te(G)&&G.icon?(d(),B(Se,{key:0,name:G.icon,"data-slot":"itemLeadingIcon",class:Z(O.value.itemLeadingIcon({class:[e(l).ui?.itemLeadingIcon,G.ui?.itemLeadingIcon]}))},null,8,["name","class"])):Te(G)&&G.avatar?(d(),B(pa,Ae({key:1,size:G.ui?.itemLeadingAvatarSize||e(l).ui?.itemLeadingAvatarSize||O.value.itemLeadingAvatarSize()},G.avatar,{"data-slot":"itemLeadingAvatar",class:O.value.itemLeadingAvatar({class:[e(l).ui?.itemLeadingAvatar,G.ui?.itemLeadingAvatar]})}),null,16,["size","class"])):Te(G)&&G.chip?(d(),B(So,Ae({key:2,size:G.ui?.itemLeadingChipSize||e(l).ui?.itemLeadingChipSize||O.value.itemLeadingChipSize(),inset:"",standalone:""},G.chip,{"data-slot":"itemLeadingChip",class:O.value.itemLeadingChip({class:[e(l).ui?.itemLeadingChip,G.ui?.itemLeadingChip]})}),null,16,["size","class"])):V("",!0)]),a("span",{"data-slot":"itemWrapper",class:Z(O.value.itemWrapper({class:[e(l).ui?.itemWrapper,Te(G)&&G.ui?.itemWrapper]}))},[a("span",{"data-slot":"itemLabel",class:Z(O.value.itemLabel({class:[e(l).ui?.itemLabel,Te(G)&&G.ui?.itemLabel]}))},[ve(Y.$slots,"item-label",{item:G,index:pe},()=>[ee(c(Te(G)?e(dt)(G,e(l).labelKey):G),1)])],2),Te(G)&&(e(dt)(G,e(l).descriptionKey)||i["item-description"])?(d(),p("span",{key:0,"data-slot":"itemDescription",class:Z(O.value.itemDescription({class:[e(l).ui?.itemDescription,Te(G)&&G.ui?.itemDescription]}))},[ve(Y.$slots,"item-description",{item:G,index:pe},()=>[ee(c(e(dt)(G,e(l).descriptionKey)),1)])],2)):V("",!0)],2),a("span",{"data-slot":"itemTrailing",class:Z(O.value.itemTrailing({class:[e(l).ui?.itemTrailing,Te(G)&&G.ui?.itemTrailing]}))},[ve(Y.$slots,"item-trailing",{item:G,index:pe,ui:O.value}),f(e(Fl),{"as-child":""},{default:D(()=>[f(Se,{name:e(l).selectedIcon||e(y).ui.icons.check,"data-slot":"itemTrailingIcon",class:Z(O.value.itemTrailingIcon({class:[e(l).ui?.itemTrailingIcon,Te(G)&&G.ui?.itemTrailingIcon]}))},null,8,["name","class"])]),_:2},1024)],2)])]),_:2},1032,["class","disabled","value","onSelect"]))]),_:3}),f(e(vl),Ae({ref_key:"comboboxRootRef",ref:oe},e(S),{"ignore-filter":"","as-child":"",name:e(T),disabled:e(L),"onUpdate:modelValue":ze,"onUpdate:open":qe}),{default:D(({modelValue:G,open:pe})=>[f(e(yl),{"as-child":""},{default:D(()=>[f(e(Wl),Ae({id:e(z),ref_key:"triggerRef",ref:be,"data-slot":"base",class:O.value.base({class:[e(l).ui?.base,e(l).class]}),tabindex:"0"},{...Y.$attrs,...e(N)}),{default:D(()=>[e(ie)||e(l).avatar||i.leading?(d(),p("span",{key:0,"data-slot":"leading",class:Z(O.value.leading({class:e(l).ui?.leading}))},[ve(Y.$slots,"leading",{modelValue:G,open:pe,ui:O.value},()=>[e(ie)&&e(P)?(d(),B(Se,{key:0,name:e(P),"data-slot":"leadingIcon",class:Z(O.value.leadingIcon({class:e(l).ui?.leadingIcon}))},null,8,["name","class"])):e(l).avatar?(d(),B(pa,Ae({key:1,size:e(l).ui?.itemLeadingAvatarSize||O.value.itemLeadingAvatarSize()},e(l).avatar,{"data-slot":"itemLeadingAvatar",class:O.value.itemLeadingAvatar({class:e(l).ui?.itemLeadingAvatar})}),null,16,["size","class"])):V("",!0)])],2)):V("",!0),ve(Y.$slots,"default",{modelValue:G,open:pe,ui:O.value},()=>[(d(!0),p(ne,null,he([ue(G)],$e=>(d(),p(ne,{key:$e},[$e!=null?(d(),p("span",{key:0,"data-slot":"value",class:Z(O.value.value({class:e(l).ui?.value}))},c($e),3)):(d(),p("span",{key:1,"data-slot":"placeholder",class:Z(O.value.placeholder({class:e(l).ui?.placeholder}))},c(e(l).placeholder??" "),3))],64))),128))]),e(se)||i.trailing||e(l).clear?(d(),p("span",{key:1,"data-slot":"trailing",class:Z(O.value.trailing({class:e(l).ui?.trailing}))},[ve(Y.$slots,"trailing",{modelValue:G,open:pe,ui:O.value},()=>[e(l).clear&&!re(G)?(d(),B(e(Sl),{key:0,"as-child":""},{default:D(()=>[f(Ne,Ae({as:"span",icon:e(l).clearIcon||e(y).ui.icons.close,size:J.value,variant:"link",color:"neutral",tabindex:"-1"},v.value,{"data-slot":"trailingClear",class:O.value.trailingClear({class:e(l).ui?.trailingClear}),onClick:Oe(ce,["stop"])}),null,16,["icon","size","class"])]),_:1})):e(R)?(d(),B(Se,{key:1,name:e(R),"data-slot":"trailingIcon",class:Z(O.value.trailingIcon({class:e(l).ui?.trailingIcon}))},null,8,["name","class"])):V("",!0)])],2)):V("",!0)]),_:2},1040,["id","class"])]),_:2},1024),f(e(Pl),mt(It(e(x))),{default:D(()=>[f(e(Io),null,{default:D(()=>[f(e(Tl),Ae({"data-slot":"content",class:O.value.content({class:e(l).ui?.content})},I.value),{default:D(()=>[f(e(Za),{trapped:"","data-slot":"focusScope",class:Z(O.value.focusScope({class:e(l).ui?.focusScope}))},{default:D(()=>[ve(Y.$slots,"content-top"),e(l).searchInput?(d(),B(e(Ll),{key:0,modelValue:r.value,"onUpdate:modelValue":Ie[1]||(Ie[1]=$e=>r.value=$e),"display-value":()=>r.value,"as-child":""},{default:D(()=>[f(zt,Ae({autofocus:"",autocomplete:"off",size:J.value},k.value,{"model-modifiers":{trim:e(l).modelModifiers?.trim},"data-slot":"input",class:O.value.input({class:e(l).ui?.input}),onChange:Ie[0]||(Ie[0]=Oe(()=>{},["stop"]))}),null,16,["size","model-modifiers","class"])]),_:1},8,["modelValue","display-value"])):V("",!0),f(e(Al),{"data-slot":"empty",class:Z(O.value.empty({class:e(l).ui?.empty}))},{default:D(()=>[ve(Y.$slots,"empty",{searchTerm:r.value},()=>[ee(c(r.value?e(m)("selectMenu.noMatch",{searchTerm:r.value}):e(m)("selectMenu.noData")),1)])]),_:3},8,["class"]),a("div",{ref_key:"viewportRef",ref:Q,role:"presentation","data-slot":"viewport",class:Z(O.value.viewport({class:e(l).ui?.viewport}))},[e(l).virtualize?(d(),p(ne,{key:0},[j.value&&de.value==="top"?(d(),B(e(X),{key:0})):V("",!0),f(e(Hl),Ae({options:K.value,"text-content":$e=>Te($e)?e(dt)($e,e(l).labelKey):String($e)},_.value),{default:D(({option:$e,virtualItem:Ye})=>[f(e(ae),{item:$e,index:Ye.index},null,8,["item","index"])]),_:1},16,["options","text-content"]),j.value&&de.value==="bottom"?(d(),B(e(X),{key:1})):V("",!0)],64)):(d(),p(ne,{key:1},[j.value&&de.value==="top"?(d(),B(e(ia),{key:0,"data-slot":"group",class:Z(O.value.group({class:e(l).ui?.group}))},{default:D(()=>[f(e(X))]),_:1},8,["class"])):V("",!0),(d(!0),p(ne,null,he(te.value,($e,Ye)=>(d(),B(e(ia),{key:`group-${Ye}`,"data-slot":"group",class:Z(O.value.group({class:e(l).ui?.group}))},{default:D(()=>[(d(!0),p(ne,null,he($e,(We,Le)=>(d(),B(e(ae),{key:`group-${Ye}-${Le}`,item:We,index:Le},null,8,["item","index"]))),128))]),_:2},1032,["class"]))),128)),j.value&&de.value==="bottom"?(d(),B(e(ia),{key:1,"data-slot":"group",class:Z(O.value.group({class:e(l).ui?.group}))},{default:D(()=>[f(e(X))]),_:1},8,["class"])):V("",!0)],64))],2),ve(Y.$slots,"content-bottom")]),_:3},8,["class"]),e(l).arrow?(d(),B(e(Cl),Ae({key:0},w.value,{"data-slot":"arrow",class:O.value.arrow({class:e(l).ui?.arrow})}),null,16,["class"])):V("",!0)]),_:3},16,["class"])]),_:3})]),_:3},16)]),_:3},16,["name","disabled"])],64))}}),Li={"zh-CN":{message:"消息记录",member:"成员",meta:"群信息",member_name_history:"昵称历史"},"en-US":{message:"Messages",member:"Members",meta:"Chat Info",member_name_history:"Nickname History"}},fa={"zh-CN":{message:{id:"消息ID",sender_id:"发送者ID",sender_account_name:"发送时账号名",sender_group_nickname:"发送时群昵称",ts:"时间戳(秒)",type:"消息类型",content:"消息内容"},member:{id:"成员ID",platform_id:"平台ID",account_name:"账号名称",group_nickname:"群昵称",aliases:"自定义别名"},meta:{name:"群名称",platform:"平台",type:"聊天类型",imported_at:"导入时间"},member_name_history:{id:"记录ID",member_id:"成员ID",name_type:"名称类型",name:"昵称值",start_ts:"开始时间",end_ts:"结束时间"}},"en-US":{message:{id:"Message ID",sender_id:"Sender ID",sender_account_name:"Sender Account",sender_group_nickname:"Sender Nickname",ts:"Timestamp (sec)",type:"Message Type",content:"Content"},member:{id:"Member ID",platform_id:"Platform ID",account_name:"Account Name",group_nickname:"Group Nickname",aliases:"Custom Aliases"},meta:{name:"Chat Name",platform:"Platform",type:"Chat Type",imported_at:"Imported At"},member_name_history:{id:"Record ID",member_id:"Member ID",name_type:"Name Type",name:"Nickname",start_ts:"Start Time",end_ts:"End Time"}}};function va(u,n="zh-CN"){return Li[_s(n)]?.[u]||u}function Ma(u,n,t="zh-CN"){return fa[_s(t)]?.[u]?.[n]||n}function _s(u){return u.startsWith("zh")?"zh-CN":"en-US"}const Ei={key:0,class:"text-xs font-medium text-gray-500 dark:text-gray-400"},Vi={key:0,class:"flex-1 overflow-y-auto p-2"},Fi=["onClick"],Ri={class:"text-sm font-medium text-gray-700 dark:text-gray-300"},Oi={class:"flex-1 truncate text-right text-xs text-gray-400"},Bi={key:0,class:"ml-4 mt-1 space-y-0.5"},Pi=["title","onDblclick"],Ni={class:"font-mono text-gray-700 dark:text-gray-300"},ji={class:"flex-1 truncate text-right text-[10px] text-gray-400"},Ui={key:1,class:"flex flex-1 flex-col items-center gap-1 overflow-y-auto px-2 pb-2"},Wi=["title","onClick"],Ki=le({__name:"SchemaPanel",props:{sessionId:{}},emits:["insertColumn"],setup(u,{expose:n,emit:t}){const{t:s,locale:o}=Ce(),i=u,l=t,r=A(!1),m=A([]),y=A(new Set);async function h(){try{m.value=await Pe().getSchema(i.sessionId),m.value.forEach(w=>y.value.add(w.name))}catch(w){console.error("加载 Schema 失败:",w)}}function S(w){y.value.has(w)?y.value.delete(w):y.value.add(w)}function x(w){r.value=!1,y.value.add(w)}function I(w,v){l("insertColumn",w,v)}return n({loadSchema:h,schema:m}),De(()=>{h()}),(w,v)=>{const _=Se,k=Ne;return d(),p("div",{class:Z(["m-3 flex h-[calc(100%-1.5rem)] shrink-0 flex-col overflow-hidden rounded-lg bg-white transition-all duration-300 ease-in-out dark:bg-sidebar-dark",r.value?"w-14":"w-56"])},[a("div",{class:Z(["flex items-center",r.value?"justify-center px-2 pb-2 pt-5":"justify-between border-b border-gray-200 py-2 pl-3 pr-2 dark:border-gray-800"])},[r.value?V("",!0):(d(),p("span",Ei,c(e(s)("ai.sqlLab.schema.tables")),1)),r.value?(d(),p("button",{key:2,type:"button",class:"group relative flex h-9 w-9 cursor-pointer items-center justify-center rounded-full hover:bg-gray-200/60 dark:hover:bg-white/[0.06]",onClick:v[1]||(v[1]=C=>r.value=!r.value)},[f(_,{name:"i-lucide-panel-right-open",class:"size-4 scale-x-[-1]"})])):(d(),B(k,{key:1,color:"neutral",variant:"ghost",size:"sm",class:"group flex h-9 w-9 cursor-pointer items-center justify-center rounded-full hover:bg-gray-200/60 dark:hover:bg-white/[0.06]",onClick:v[0]||(v[0]=C=>r.value=!r.value)},{default:D(()=>[f(_,{name:"i-lucide-panel-right",class:"size-4 scale-x-[-1] group-hover:hidden"}),f(_,{name:"i-lucide-panel-right-close",class:"size-4 hidden scale-x-[-1] group-hover:block"})]),_:1}))],2),r.value?(d(),p("div",Ui,[(d(!0),p(ne,null,he(m.value,C=>(d(),p("button",{key:C.name,class:"flex h-10 w-10 items-center justify-center rounded-lg text-gray-600 transition-colors hover:bg-gray-200/40 hover:text-primary-600 dark:text-gray-300 dark:hover:bg-white/[0.06] dark:hover:text-primary-400",title:`${e(va)(C.name,e(o))} (${C.name})`,onClick:$=>x(C.name)},[f(_,{name:"i-heroicons-table-cells",class:"h-5 w-5"})],8,Wi))),128))])):(d(),p("div",Vi,[(d(!0),p(ne,null,he(m.value,C=>(d(),p("div",{key:C.name,class:"mb-2"},[a("button",{class:"flex w-full items-center gap-1 rounded px-2 py-1.5 text-left transition-colors hover:bg-gray-100 dark:hover:bg-gray-800",onClick:$=>S(C.name)},[f(_,{name:y.value.has(C.name)?"i-heroicons-chevron-down":"i-heroicons-chevron-right",class:"h-3 w-3 shrink-0 text-gray-400"},null,8,["name"]),f(_,{name:"i-heroicons-table-cells",class:"h-4 w-4 shrink-0 text-pink-500"}),a("span",Ri,c(C.name),1),a("span",Oi,c(e(va)(C.name,e(o))),1)],8,Fi),y.value.has(C.name)?(d(),p("div",Bi,[(d(!0),p(ne,null,he(C.columns,$=>(d(),p("button",{key:$.name,class:"flex w-full items-center gap-2 rounded px-2 py-1 text-left text-xs transition-colors hover:bg-gray-100 dark:hover:bg-gray-800",title:e(s)("ai.sqlLab.schema.doubleClickToInsert"),onDblclick:g=>I(C.name,$.name)},[$.pk?(d(),B(_,{key:0,name:"i-heroicons-key",class:"h-3 w-3 shrink-0 text-yellow-500",title:e(s)("ai.sqlLab.schema.primaryKey")},null,8,["title"])):V("",!0),a("span",Ni,c($.name),1),a("span",ji,c(e(Ma)(C.name,$.name,e(o))),1)],40,Pi))),128))])):V("",!0)]))),128))]))],2)}}}),Hi={class:"max-h-[70vh] overflow-hidden p-6"},Yi={class:"mb-4 flex items-center gap-2"},Qi={class:"text-lg font-semibold text-gray-900 dark:text-white"},Gi={key:0,class:"max-h-[50vh] space-y-3 overflow-y-auto pr-2"},Ji={class:"mb-2 flex items-start justify-between gap-2"},Xi={class:"flex-1 text-sm font-medium text-gray-700 dark:text-gray-300"},Zi={class:"shrink-0 text-xs text-gray-400"},er={class:"mb-2 rounded bg-white p-2 dark:bg-gray-800"},tr={class:"whitespace-pre-wrap break-all font-mono text-xs text-gray-600 dark:text-gray-400"},ar={key:0,class:"mb-2 text-xs text-gray-500 dark:text-gray-400"},sr={class:"flex justify-end gap-2"},or={key:1,class:"py-8 text-center text-gray-500 dark:text-gray-400"},nr={class:"text-sm"},lr={class:"mt-4 flex justify-end"},ir=le({__name:"AIHistoryModal",props:{open:{type:Boolean},history:{}},emits:["update:open","execute","delete"],setup(u,{emit:n}){const{t}=Ce(),s=n;function o(i){const l=new Date(i),r=new Date,m=r.getTime()-i;return m<6e4?t("ai.sqlLab.history.justNow"):m<36e5?t("ai.sqlLab.history.minutesAgo",{count:Math.floor(m/6e4)}):m<864e5?t("ai.sqlLab.history.hoursAgo",{count:Math.floor(m/36e5)}):l.toDateString()===r.toDateString()?t("ai.sqlLab.history.today"):`${l.getMonth()+1}/${l.getDate()}`}return(i,l)=>{const r=Se,m=Ne,y=Xe;return d(),B(y,{open:u.open,ui:{content:"max-w-5xl"},"onUpdate:open":l[1]||(l[1]=h=>s("update:open",h))},{content:D(()=>[a("div",Hi,[a("div",Yi,[f(r,{name:"i-heroicons-clock",class:"h-5 w-5 text-pink-500"}),a("h3",Qi,c(e(t)("ai.sqlLab.history.title")),1)]),u.history.length>0?(d(),p("div",Gi,[(d(!0),p(ne,null,he(u.history,h=>(d(),p("div",{key:h.id,class:"rounded-lg border border-gray-200 bg-gray-50 p-3 dark:border-gray-700 dark:bg-page-dark"},[a("div",Ji,[a("p",Xi,c(h.prompt),1),a("span",Zi,c(o(h.timestamp)),1)]),a("div",er,[a("pre",tr,c(h.sql),1)]),h.explanation?(d(),p("p",ar,c(h.explanation),1)):V("",!0),a("div",sr,[f(m,{variant:"ghost",size:"xs",color:"error",onClick:S=>s("delete",h.id)},{default:D(()=>[f(r,{name:"i-heroicons-trash",class:"h-3.5 w-3.5"})]),_:1},8,["onClick"]),f(m,{size:"xs",onClick:S=>s("execute",h)},{default:D(()=>[f(r,{name:"i-heroicons-play",class:"mr-1 h-3.5 w-3.5"}),ee(" "+c(e(t)("ai.sqlLab.history.execute")),1)]),_:1},8,["onClick"])])]))),128))])):(d(),p("div",or,[f(r,{name:"i-heroicons-clock",class:"mx-auto mb-2 h-8 w-8 text-gray-300 dark:text-gray-600"}),a("p",nr,c(e(t)("ai.sqlLab.history.empty")),1)])),a("div",lr,[f(m,{variant:"ghost",onClick:l[0]||(l[0]=h=>s("update:open",!1))},{default:D(()=>[ee(c(e(t)("common.close")),1)]),_:1})])])]),_:1},8,["open"])}}}),rr={class:"flex flex-1 flex-col overflow-hidden"},ur={key:0,class:"border-b border-red-200 bg-red-50 p-4 dark:border-red-900 dark:bg-red-950"},dr={class:"flex items-start gap-2"},cr={class:"min-w-0 flex-1"},mr={class:"text-sm font-medium text-red-800 dark:text-red-200"},pr={class:"mt-1 break-all font-mono text-xs text-red-600 dark:text-red-400"},gr={key:1,class:"flex items-center justify-between border-b border-gray-200 bg-gray-50 px-4 py-2 dark:border-gray-800 dark:bg-page-dark"},fr={class:"flex items-center gap-4 text-sm text-gray-600 dark:text-gray-400"},vr={class:"flex cursor-pointer items-center gap-1.5"},hr={class:"text-xs"},yr={class:"flex items-center gap-2"},xr={key:2,class:"flex-1 overflow-auto"},br={class:"min-w-full divide-y divide-gray-200 dark:divide-gray-700"},_r={class:"sticky top-0 bg-gray-100 dark:bg-page-dark"},kr=["onClick"],wr={class:"flex items-center gap-1"},Cr={class:"flex flex-col"},$r={class:"text-gray-700 dark:text-gray-300"},Sr={key:0,class:"font-mono text-[10px] text-gray-400"},Ir={key:0,class:"sticky right-0 w-12 bg-gray-100 px-2 py-2 dark:bg-page-dark"},Tr={class:"divide-y divide-gray-200 bg-white dark:divide-gray-700 dark:bg-page-dark"},Mr=["title"],Ar={key:0,class:"sticky right-0 w-12 bg-white px-2 py-2 dark:bg-page-dark"},qr={key:3,class:"flex shrink-0 items-center gap-4 border-t border-gray-200 bg-gray-50 px-4 py-2 dark:border-gray-800 dark:bg-page-dark"},zr={class:"flex items-center gap-1"},Dr={class:"mx-2 text-xs text-gray-600 dark:text-gray-400"},Lr={class:"flex items-center gap-2 text-xs text-gray-500 dark:text-gray-400"},Er={key:4,class:"flex flex-1 items-center justify-center text-gray-500 dark:text-gray-400"},Vr={class:"text-center"},Fr={class:"mt-2 text-sm"},Rr={key:5,class:"flex flex-1 items-center justify-center text-gray-500 dark:text-gray-400"},Or={class:"text-center"},Br={class:"mt-2 text-sm"},Pr={class:"mt-1 text-xs text-gray-400"},Nr={class:"max-h-[70vh] overflow-hidden p-6"},jr={class:"mb-4 flex items-center gap-2"},Ur={class:"text-lg font-semibold text-gray-900 dark:text-white"},Wr={key:0,class:"flex items-center justify-center py-8"},Kr={class:"ml-2 text-sm text-gray-500"},Hr={key:1,class:"max-h-[50vh] overflow-y-auto"},Yr=["innerHTML"],Qr={key:0,class:"mt-2 flex items-center text-xs text-gray-400"},Gr={key:2,class:"rounded-lg bg-red-50 p-4 dark:bg-red-950"},Jr={class:"text-sm text-red-600 dark:text-red-400"},Xr={class:"mt-4 flex justify-end gap-2"},Zr=le({__name:"ResultTable",props:{result:{},error:{},sql:{},prompt:{}},setup(u,{expose:n}){const{t,locale:s}=Ce(),o=_t(),i=ds(),l=Dt(),{aiGlobalSettings:r}=bt(i),m=[/^ts$/i,/^timestamp$/i,/^time$/i,/_at$/i,/_ts$/i,/_time$/i,/^date$/i];function y(K){return m.some(j=>j.test(K))}function h(K){if(typeof K!="number"||!Number.isFinite(K))return!1;const j=946684800,de=4102444800,be=j*1e3,ke=de*1e3;return K>=j&&K<=de||K>=be&&K<=ke}function S(K){const de=K>1e10?K:K*1e3;return Ve(de).format("YYYY-MM-DD HH:mm:ss")}const x=[/^id$/i,/^message_id$/i,/^msg_id$/i,/^msgid$/i];function I(K){return K.findIndex(j=>x.some(de=>de.test(j)))}function w(K){l.openChatRecordDrawer({scrollToMessageId:K})}const v=new Ho({html:!1,breaks:!0,linkify:!0,typographer:!0}),_=u,k=A(null),C=A("asc"),$=A(1),g=A(100),b=[50,100,200,500],F=A(localStorage.getItem("sql-lab-readable-time")!=="false");function E(){F.value=!F.value,localStorage.setItem("sql-lab-readable-time",String(F.value))}const z=A(!1),T=A(!1),M=A(""),L=A(null),N=A(""),U=A(!1);function H(K){const j=K.split("."),de=j.length>1?j[j.length-1]:K,be=fa[s.value]||fa["zh-CN"];for(const ke of Object.values(be))if(ke[de])return ke[de];return null}const ie=q(()=>{if(!_.result||!k.value)return _.result?.rows||[];const K=_.result.columns.indexOf(k.value);return K===-1?_.result.rows:[..._.result.rows].sort((j,de)=>{const be=j[K],ke=de[K];if(be===null)return 1;if(ke===null)return-1;if(typeof be=="number"&&typeof ke=="number")return C.value==="asc"?be-ke:ke-be;const ze=String(be).localeCompare(String(ke));return C.value==="asc"?ze:-ze})}),se=q(()=>_.result?Math.ceil(ie.value.length/g.value):0),P=q(()=>{const K=($.value-1)*g.value,j=K+g.value;return ie.value.slice(K,j)}),R=q(()=>_.result?I(_.result.columns):-1),J=q(()=>R.value!==-1);function fe(K){k.value===K?C.value=C.value==="asc"?"desc":"asc":(k.value=K,C.value="asc"),$.value=1}function X(K){g.value=K,$.value=1}function W(K,j){return K===null?"NULL":typeof K=="object"?JSON.stringify(K):F.value&&j&&y(j)&&h(K)?S(K):String(K)}async function ae(){if(!(!_.result||U.value)){U.value=!0;try{const K=r.value.sqlExportFormat??"csv",j=await di({columns:_.result.columns,rows:_.result.rows},K);if(j.success&&j.filePath){const de=j.filePath.split("/").pop()||j.filePath;o.add({title:t("common.exportSuccess"),description:de,color:"primary",actions:[{label:t("common.openFolder"),onClick:()=>{Yo().showInFolder(j.filePath)}}]})}else o.fail(t("common.exportFailed"),{description:j.error})}catch(K){console.error("导出失败:",K),o.fail(t("common.exportFailed"),{description:String(K)})}finally{U.value=!1}}}function O(){k.value=null,C.value="asc",$.value=1}function ue(){if(!_.result)return"";const K=50,j=_.result.rows.slice(0,K),de=_.result.columns.join(" | "),be=_.result.columns.map(()=>"---").join(" | "),ke=j.map(je=>je.map(qe=>qe===null?"NULL":String(qe).slice(0,50)).join(" | "));let ze=`| ${de} |
|
|
4
4
|
| ${be} |
|
|
5
5
|
`;return ze+=ke.map(je=>`| ${je} |`).join(`
|
|
6
6
|
`),_.result.rows.length>K&&(ze+=`
|
|
7
7
|
|
|
8
|
-
(仅展示前 ${K} 行,共 ${_.result.rowCount} 行)`),ze}async function we(){z.value=!0,M.value="",L.value=null,N.value="",await xe()}async function xe(){if(!await
|
|
8
|
+
(仅展示前 ${K} 行,共 ${_.result.rowCount} 行)`),ze}async function we(){z.value=!0,M.value="",L.value=null,N.value="",await xe()}async function xe(){if(!await _a().hasConfig()){L.value=t("common.errorNoAIConfig");return}T.value=!0,L.value=null,N.value="";try{const j=ue();let de="";_.prompt&&(de=`用户的查询意图:${_.prompt}
|
|
9
9
|
|
|
10
10
|
`),_.sql&&(de+=`执行的 SQL 语句:
|
|
11
11
|
\`\`\`sql
|
|
@@ -21,7 +21,7 @@ ${j}
|
|
|
21
21
|
请提供:
|
|
22
22
|
1. 结果概述(一句话总结)
|
|
23
23
|
2. 关键发现(2-4 个要点)
|
|
24
|
-
3. 如有明显的趋势或异常,请指出`,ke=await ds().chatStream([{role:"system",content:"你是一个数据分析专家,擅长从查询结果中提取关键信息和洞察。请用简洁清晰的中文回答。"},{role:"user",content:be}],{temperature:.3,maxTokens:1e3},ze=>{ze.content&&(N.value+=ze.content)});ke.success?M.value=N.value:L.value=ke.error||t("ai.sqlLab.result.errorSummary")}catch(j){L.value=j.message||String(j)}finally{T.value=!1}}function te(){z.value=!1,M.value="",L.value=null,N.value=""}return n({resetSort:O}),(K,j)=>{const de=Se,be=wa,ke=Ne,ze=ka,je=Xe;return d(),p("div",rr,[u.error?(d(),p("div",ur,[a("div",dr,[f(de,{name:"i-heroicons-exclamation-circle",class:"mt-0.5 h-5 w-5 shrink-0 text-red-500"}),a("div",cr,[a("p",mr,c(e(t)("ai.sqlLab.result.queryError")),1),a("p",pr,c(u.error),1)])])])):V("",!0),u.result?(d(),p("div",gr,[a("div",fr,[a("label",vr,[f(be,{"model-value":F.value,size:"xs","onUpdate:modelValue":E},null,8,["model-value"]),a("span",hr,c(e(t)("ai.sqlLab.result.readableTime")),1)]),j[5]||(j[5]=a("span",{class:"text-gray-300 dark:text-gray-600"},"|",-1)),a("span",null,[f(de,{name:"i-heroicons-table-cells",class:"mr-1 inline h-4 w-4"}),ee(" "+c(e(t)("ai.sqlLab.result.rows",{count:u.result.rowCount})),1)]),a("span",null,[f(de,{name:"i-heroicons-clock",class:"mr-1 inline h-4 w-4"}),ee(" "+c(u.result.duration)+" ms ",1)])]),a("div",yr,[f(ke,{variant:"ghost",size:"xs",onClick:we},{default:D(()=>[f(de,{name:"i-heroicons-sparkles",class:"mr-1 h-4 w-4"}),ee(" "+c(e(t)("ai.sqlLab.result.summarize")),1)]),_:1}),f(ke,{variant:"ghost",size:"xs",loading:U.value,onClick:ae},{default:D(()=>[f(de,{name:"i-heroicons-arrow-down-tray",class:"mr-1 h-4 w-4"}),ee(" "+c(e(t)("common.export")),1)]),_:1},8,["loading"])])])):V("",!0),u.result&&u.result.rows.length>0?(d(),p("div",xr,[a("table",br,[a("thead",_r,[a("tr",null,[(d(!0),p(ne,null,he(u.result.columns,(qe,He)=>(d(),p("th",{key:He,class:"cursor-pointer whitespace-nowrap px-4 py-2 text-left text-xs font-medium transition-colors hover:bg-gray-200 dark:hover:bg-gray-700",onClick:Ue=>fe(qe)},[a("div",wr,[a("div",Cr,[a("span",$r,c(H(qe)||qe),1),H(qe)?(d(),p("span",Sr,c(qe),1)):V("",!0)]),k.value===qe?(d(),B(de,{key:0,name:C.value==="asc"?"i-heroicons-chevron-up":"i-heroicons-chevron-down",class:"h-3 w-3 text-gray-500"},null,8,["name"])):V("",!0)])],8,kr))),128)),J.value?(d(),p("th",Ir)):V("",!0)])]),a("tbody",Tr,[(d(!0),p(ne,null,he(P.value,(qe,He)=>(d(),p("tr",{key:He,class:"hover:bg-gray-50 dark:hover:bg-gray-800"},[(d(!0),p(ne,null,he(qe,(Ue,Te)=>(d(),p("td",{key:Te,class:Z(["max-w-xs truncate whitespace-nowrap px-4 py-2 font-mono text-sm text-gray-700 dark:text-gray-300",{"text-gray-400 italic":Ue===null}]),title:W(Ue,u.result.columns[Te])},c(W(Ue,u.result.columns[Te])),11,Mr))),128)),J.value?(d(),p("td",Ar,[f(ke,{icon:"i-heroicons-chat-bubble-left-right",color:"neutral",variant:"ghost",size:"xs",title:e(t)("ai.sqlLab.result.viewChat"),onClick:Ue=>w(qe[R.value])},null,8,["title","onClick"])])):V("",!0)]))),128))])])])):V("",!0),u.result&&u.result.rows.length>0&&se.value>1?(d(),p("div",qr,[a("div",zr,[f(ke,{icon:"i-heroicons-chevron-double-left",variant:"ghost",size:"xs",disabled:$.value===1,onClick:j[0]||(j[0]=qe=>$.value=1)},null,8,["disabled"]),f(ke,{icon:"i-heroicons-chevron-left",variant:"ghost",size:"xs",disabled:$.value===1,onClick:j[1]||(j[1]=qe=>$.value--)},null,8,["disabled"]),a("span",Dr,c($.value)+" / "+c(se.value),1),f(ke,{icon:"i-heroicons-chevron-right",variant:"ghost",size:"xs",disabled:$.value>=se.value,onClick:j[2]||(j[2]=qe=>$.value++)},null,8,["disabled"]),f(ke,{icon:"i-heroicons-chevron-double-right",variant:"ghost",size:"xs",disabled:$.value>=se.value,onClick:j[3]||(j[3]=qe=>$.value=se.value)},null,8,["disabled"])]),a("div",Lr,[a("span",null,c(e(t)("ai.sqlLab.result.pageSize")),1),f(ze,{"model-value":g.value,items:b.map(qe=>({label:String(qe),value:qe})),size:"xs",class:"w-20","onUpdate:modelValue":X},null,8,["model-value","items"])])])):V("",!0),u.result&&u.result.rows.length===0?(d(),p("div",Er,[a("div",Vr,[f(de,{name:"i-heroicons-inbox",class:"mx-auto h-12 w-12 text-gray-300 dark:text-gray-600"}),a("p",Fr,c(e(t)("ai.sqlLab.result.emptyResult")),1)])])):V("",!0),!u.result&&!u.error?(d(),p("div",Rr,[a("div",Or,[f(de,{name:"i-heroicons-command-line",class:"mx-auto h-12 w-12 text-gray-300 dark:text-gray-600"}),a("p",Br,c(e(t)("ai.sqlLab.result.initialState")),1),a("p",Pr,c(e(t)("ai.sqlLab.result.initialHint")),1)])])):V("",!0),f(je,{open:z.value,"onUpdate:open":j[4]||(j[4]=qe=>z.value=qe)},{content:D(()=>[a("div",Nr,[a("div",jr,[f(de,{name:"i-heroicons-sparkles",class:"h-5 w-5 text-pink-500"}),a("h3",Ur,c(e(t)("ai.sqlLab.result.summaryTitle")),1)]),T.value&&!N.value?(d(),p("div",Wr,[f(de,{name:"i-heroicons-arrow-path",class:"h-6 w-6 animate-spin text-pink-500"}),a("span",Kr,c(e(t)("ai.sqlLab.result.analyzing")),1)])):N.value||M.value?(d(),p("div",Hr,[a("div",{class:"prose prose-sm max-w-none rounded-lg bg-gray-50 p-4 dark:prose-invert dark:bg-page-dark",innerHTML:e(v).render(N.value||M.value)},null,8,Yr),T.value?(d(),p("div",Qr,[f(de,{name:"i-heroicons-arrow-path",class:"mr-1 h-3 w-3 animate-spin"}),ee(" "+c(e(t)("common.generating")),1)])):V("",!0)])):V("",!0),L.value?(d(),p("div",Gr,[a("p",Jr,c(L.value),1)])):V("",!0),a("div",Xr,[!T.value&&M.value?(d(),B(ke,{key:0,variant:"outline",onClick:xe},{default:D(()=>[f(de,{name:"i-heroicons-arrow-path",class:"mr-1 h-4 w-4"}),ee(" "+c(e(t)("common.regenerate")),1)]),_:1})):V("",!0),f(ke,{variant:"ghost",onClick:te},{default:D(()=>[ee(c(e(t)("common.close")),1)]),_:1})])])]),_:1},8,["open"])])}}}),eu={class:"h-full p-3"},tu={class:"relative z-20 flex items-center gap-2 border-b border-gray-200 px-4 py-2 dark:border-gray-700"},au={key:0,class:"mx-4 mt-2 rounded-lg border border-red-200 bg-red-50 p-3 text-sm text-red-700 dark:border-red-800 dark:bg-red-900/20 dark:text-red-400"},su={class:"flex-1 overflow-auto"},ou={key:0,class:"flex h-full items-center justify-center"},nu={class:"text-sm text-gray-400"},lu={key:1,class:"w-full border-collapse text-xs"},iu={class:"sticky top-0 bg-gray-50 dark:bg-page-dark"},ru={class:"font-mono text-xs font-medium text-gray-700 dark:text-gray-300"},uu={class:"text-[10px] leading-tight text-gray-400"},du={class:"border-b border-r border-gray-100 px-2 py-1.5 text-gray-400 dark:border-gray-800"},cu=["title"],mu=["onUpdate:modelValue"],pu={class:"w-full truncate px-2 py-1.5"},gu={key:0,class:"italic text-gray-400"},fu={key:1},vu={class:"border-b border-gray-100 px-2 py-1.5 text-center dark:border-gray-800"},hu={key:0,class:"flex items-center justify-center gap-1"},yu={key:1,class:"flex items-center justify-center gap-1"},xu={class:"flex items-center justify-between border-t border-gray-200 px-4 py-2 dark:border-gray-700"},bu={class:"text-xs text-gray-500 dark:text-gray-400"},_u={key:0,class:"flex items-center gap-3"},ku={class:"text-xs text-gray-500 dark:text-gray-400"},Ft=100,wu=le({__name:"TableBrowser",props:{sessionId:{}},setup(u){const n=["member","meta","message","message_context","member_name_history"],{t,locale:o}=Ce(),s=u,i=A(localStorage.getItem("debug_dbSource")||"chat"),l=A([]),r=A(""),m=A(null),x=A(!1),h=A(null),S=A(1),y=A(0),I=q(()=>Math.max(1,Math.ceil(y.value/Ft))),w=A(null),v=A({}),_=A(!1),k=q(()=>i.value==="ai"),C=A([]),$=A(""),g=q(()=>k.value&&r.value==="ai_message"&&C.value.length>0),b=q(()=>{const W={label:t("analysis.debug.tableBrowser.allConversations"),value:"__all__"},ae=C.value.map(O=>({label:O.title||O.id.slice(0,16),value:O.id}));return[W,...ae]});async function F(){if(!k.value){C.value=[];return}try{const W=s.sessionId.replace(/'/g,"''"),ae=await ot().executeAiSQL(`SELECT id, title FROM ai_chat WHERE session_id = '${W}' ORDER BY updated_at DESC`);C.value=ae.rows.map(O=>({id:String(O[0]),title:O[1]?String(O[1]):null})),$.value="__all__"}catch{C.value=[]}}const E=q(()=>[{label:t("analysis.debug.tableBrowser.chatDb"),value:"chat"},{label:t("analysis.debug.tableBrowser.aiDb"),value:"ai"}]),z=q(()=>{const W=[...l.value];return W.sort((ae,O)=>{const ue=n.indexOf(ae.name),we=n.indexOf(O.name);return ue!==-1&&we!==-1?ue-we:ue!==-1?-1:we!==-1?1:0}),W}),T=q(()=>z.value.map(W=>({label:W.name,value:W.name})));async function M(W){return i.value==="ai"?await ot().executeAiSQL(W):await Pe().executeSQL(s.sessionId,W)}async function L(){try{if(i.value==="ai"?l.value=await ot().getAiSchema():l.value=await Pe().getSchema(s.sessionId),z.value.length>0){const W=k.value?"ai_message":z.value[0].name;r.value=z.value.some(ae=>ae.name===W)?W:z.value[0].name}else r.value="",m.value=null}catch(W){console.error("Failed to load schema:",W)}}function N(){if(!k.value)return"";const W=s.sessionId.replace(/'/g,"''"),ae=r.value;return ae==="ai_chat"?` WHERE "session_id" = '${W}'`:ae==="ai_message"?$.value&&$.value!=="__all__"?` WHERE "ai_chat_id" = '${$.value.replace(/'/g,"''")}'`:` WHERE "ai_chat_id" IN (SELECT "id" FROM "ai_chat" WHERE "session_id" = '${W}')`:""}async function U(){if(r.value){x.value=!0,h.value=null,w.value=null;try{const W=N(),ae=await M(`SELECT COUNT(*) as cnt FROM "${r.value}"${W}`);y.value=ae?.rows?.[0]?.[0]??0;const O=(S.value-1)*Ft;m.value=await M(`SELECT * FROM "${r.value}"${W} ORDER BY rowid DESC LIMIT ${Ft} OFFSET ${O}`)}catch(W){h.value=W.message||String(W),m.value=null}finally{x.value=!1}}}function H(W){if(!m.value)return;w.value=W;const ae=m.value.rows[W],O={};m.value.columns.forEach((ue,we)=>{O[ue]=ae[we]==null?"":String(ae[we])}),v.value=O}function ie(){w.value=null,v.value={}}async function se(){if(w.value===null||!m.value)return;const W=r.value,ae=l.value.find(j=>j.name===W);if(!ae)return;const O=ae.columns.find(j=>j.pk);if(!O){h.value="No primary key found for this table";return}const ue=m.value.rows[w.value],we=m.value.columns.indexOf(O.name),xe=ue[we],te=m.value.columns.filter(j=>j!==O.name).map(j=>`"${j}" = '${v.value[j].replace(/'/g,"''")}'`).join(", "),K=`UPDATE "${W}" SET ${te} WHERE "${O.name}" = '${String(xe).replace(/'/g,"''")}'`;try{await M(K),ie(),await U()}catch(j){h.value=j.message||String(j)}}async function P(W){if(!m.value)return;const ae=r.value,O=l.value.find(j=>j.name===ae);if(!O)return;const ue=O.columns.find(j=>j.pk);if(!ue){h.value="No primary key found for this table";return}const we=m.value.rows[W],xe=m.value.columns.indexOf(ue.name),te=we[xe],K=`DELETE FROM "${ae}" WHERE "${ue.name}" = '${String(te).replace(/'/g,"''")}'`;try{await M(K),await U()}catch(j){h.value=j.message||String(j)}}function R(W){confirm(t("analysis.debug.tableBrowser.confirmDelete"))&&P(W)}async function J(){if(confirm(t("analysis.debug.tableBrowser.confirmClearDebug"))){_.value=!0;try{(await ot().clearDebugContext()).success&&await U()}catch(W){h.value=W.message||String(W)}finally{_.value=!1}}}function fe(W){navigator.clipboard.writeText(W)}function X(W,ae,O){if(!m.value)return[];const ue=W==null?"NULL":String(W),we=m.value.rows[O],xe={};return m.value.columns.forEach((te,K)=>{xe[te]=we[K]}),[[{label:t("analysis.debug.tableBrowser.copyCell"),class:"p-2",onSelect:()=>fe(ue)},{label:t("analysis.debug.tableBrowser.editRow"),class:"p-2",onSelect:()=>H(O)},{label:t("analysis.debug.tableBrowser.copyRow"),class:"p-2",onSelect:()=>fe(JSON.stringify(xe,null,2))},{label:t("analysis.debug.tableBrowser.deleteRow"),class:"p-2 text-red-600 dark:text-red-400",onSelect:()=>P(O)}]]}return pe(i,W=>{localStorage.setItem("debug_dbSource",W),r.value="",m.value=null,y.value=0,S.value=1,$.value="",L(),F()}),pe(r,W=>{W&&(S.value=1,U())}),pe($,()=>{r.value==="ai_message"&&(S.value=1,U())}),pe(S,()=>{U()}),De(async()=>{await Promise.all([L(),F()]),r.value&&await U()}),(W,ae)=>{const O=Ia,ue=Ne,we=qo;return d(),p("div",eu,[f(e(rt),{shadow:!1,class:"flex h-full min-w-0 flex-col"},{default:D(()=>[a("div",tu,[f(e(ct),{modelValue:i.value,"onUpdate:modelValue":ae[0]||(ae[0]=xe=>i.value=xe),items:E.value,size:"xs"},null,8,["modelValue","items"]),ae[5]||(ae[5]=a("div",{class:"mx-1 h-4 w-px bg-gray-200 dark:bg-gray-700"},null,-1)),a("div",{class:Z([k.value?"max-w-[50%]":"flex-1","min-w-0"])},[f(e(ct),{modelValue:r.value,"onUpdate:modelValue":ae[1]||(ae[1]=xe=>r.value=xe),items:T.value,size:"xs"},null,8,["modelValue","items"])],2),g.value?(d(),B(O,{key:0,modelValue:$.value,"onUpdate:modelValue":ae[2]||(ae[2]=xe=>$.value=xe),items:b.value,"value-key":"value",class:"w-48",size:"xs",ui:{content:"z-50"}},null,8,["modelValue","items"])):V("",!0),ae[6]||(ae[6]=a("div",{class:"flex-1"},null,-1)),k.value&&r.value==="ai_message"?(d(),B(ue,{key:1,variant:"ghost",size:"xs",color:"error",icon:"i-heroicons-trash",loading:_.value,onClick:J},{default:D(()=>[ee(c(e(t)("analysis.debug.tableBrowser.clearDebugContext")),1)]),_:1},8,["loading"])):V("",!0),f(ue,{variant:"ghost",size:"xs",icon:"i-heroicons-arrow-path",loading:x.value,onClick:U},{default:D(()=>[ee(c(e(t)("analysis.debug.tableBrowser.refresh")),1)]),_:1},8,["loading"])]),h.value?(d(),p("div",au,c(h.value),1)):V("",!0),a("div",su,[!m.value&&!x.value?(d(),p("div",ou,[a("p",nu,c(e(t)("analysis.debug.tableBrowser.noData")),1)])):m.value?(d(),p("table",lu,[a("thead",iu,[a("tr",null,[ae[7]||(ae[7]=a("th",{class:"whitespace-nowrap border-b border-r border-gray-200 px-2 py-1.5 text-left font-medium text-gray-500 dark:border-gray-700 dark:text-gray-400"}," # ",-1)),(d(!0),p(ne,null,he(m.value.columns,xe=>(d(),p("th",{key:xe,class:"border-b border-r border-gray-200 px-2 py-1.5 text-left dark:border-gray-700"},[a("div",ru,c(xe),1),a("div",uu,c(e(Ta)(r.value,xe,e(o))),1)]))),128)),ae[8]||(ae[8]=a("th",{class:"whitespace-nowrap border-b border-gray-200 px-2 py-1.5 text-center font-medium text-gray-500 dark:border-gray-700 dark:text-gray-400"}," 操作 ",-1))])]),a("tbody",null,[(d(!0),p(ne,null,he(m.value.rows,(xe,te)=>(d(),p("tr",{key:te,class:"transition-colors hover:bg-gray-50 dark:hover:bg-gray-800/50"},[a("td",du,c((S.value-1)*Ft+te+1),1),(d(!0),p(ne,null,he(xe,(K,j)=>(d(),p("td",{key:j,class:"max-w-[300px] border-b border-r border-gray-100 p-0 text-gray-700 dark:border-gray-800 dark:text-gray-300",title:K==null?"NULL":String(K)},[w.value===te?tt((d(),p("input",{key:0,"onUpdate:modelValue":de=>v.value[m.value.columns[j]]=de,class:"w-full px-2 py-1.5 rounded border border-gray-300 bg-white text-xs dark:border-gray-600 dark:bg-gray-800"},null,8,mu)),[[Wt,v.value[m.value.columns[j]]]]):(d(),B(we,{key:1,items:X(K,j,te)},{default:D(()=>[a("div",pu,[K==null?(d(),p("span",gu,"NULL")):(d(),p("span",fu,c(String(K).slice(0,200)),1))])]),_:2},1032,["items"]))],8,cu))),128)),a("td",vu,[w.value===te?(d(),p("div",hu,[f(ue,{size:"xs",color:"primary",variant:"ghost",icon:"i-heroicons-check",onClick:se}),f(ue,{size:"xs",color:"neutral",variant:"ghost",icon:"i-heroicons-x-mark",onClick:ie})])):(d(),p("div",yu,[f(ue,{size:"xs",variant:"ghost",icon:"i-heroicons-pencil-square",onClick:K=>H(te)},null,8,["onClick"]),f(ue,{size:"xs",variant:"ghost",color:"error",icon:"i-heroicons-trash",onClick:K=>R(te)},null,8,["onClick"])]))])]))),128))])])):V("",!0)]),a("div",xu,[a("span",bu,c(y.value>0?e(t)("analysis.debug.tableBrowser.rowCount",{count:y.value}):""),1),I.value>1?(d(),p("div",_u,[f(ue,{size:"xs",variant:"ghost",disabled:S.value<=1,icon:"i-heroicons-chevron-left",onClick:ae[3]||(ae[3]=xe=>S.value--)},null,8,["disabled"]),a("span",ku,c(e(t)("analysis.debug.tableBrowser.page",{current:S.value,total:I.value})),1),f(ue,{size:"xs",variant:"ghost",disabled:S.value>=I.value,icon:"i-heroicons-chevron-right",onClick:ae[4]||(ae[4]=xe=>S.value++)},null,8,["disabled"])])):V("",!0)])]),_:1})])}}}),Cu={class:"flex h-full"},$u={class:"m-3 h-[calc(100%-1.5rem)] w-56 shrink-0 overflow-y-auto rounded-lg bg-white shadow-elevated dark:bg-sidebar-dark"},Su={key:0,class:"py-2"},Iu={class:"px-3 py-1.5 text-[11px] font-semibold tracking-wide text-gray-400 uppercase dark:text-gray-500"},Tu=["title","onClick"],Mu={class:"truncate text-xs font-medium"},Au={class:"truncate text-[10px] opacity-50"},qu={key:1,class:"border-t border-gray-200 py-2 dark:border-gray-700"},zu={class:"px-3 py-1.5 text-[11px] font-semibold tracking-wide text-gray-400 uppercase dark:text-gray-500"},Du=["title","onClick"],Lu={class:"truncate text-xs font-medium"},Eu={class:"truncate text-[10px] opacity-50"},Vu={class:"flex min-h-0 flex-1 flex-col gap-4 overflow-y-auto p-4"},Fu={key:0,class:"rounded-lg border border-primary-200 bg-primary-50/50 px-4 py-3 dark:border-primary-800 dark:bg-primary-900/20"},Ru={class:"text-sm font-medium text-primary-700 dark:text-primary-300"},Ou={class:"mt-1 text-xs text-primary-600/70 dark:text-primary-400/70"},Bu={key:1,class:"flex flex-col gap-3"},Pu={class:"text-sm font-medium text-gray-700 dark:text-gray-300"},Nu={class:"grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-3"},ju={class:"text-xs font-medium text-gray-600 dark:text-gray-400"},Uu={key:0,class:"text-red-500"},Wu={key:1,class:"ml-1 text-gray-400"},Ku={key:2,class:"ml-1 text-gray-400"},Hu={class:"flex items-center gap-3"},Yu={key:3,class:"text-xs text-gray-500 dark:text-gray-400"},Qu={key:2,class:"flex-1 min-h-0"},Gu={class:"mb-2 text-sm font-medium text-gray-700 dark:text-gray-300"},Ju={key:0,class:"rounded-lg border border-red-200 bg-red-50 p-3 text-sm text-red-700 dark:border-red-800 dark:bg-red-900/20 dark:text-red-400"},Xu={key:0,class:"mb-2 rounded-lg border border-amber-200 bg-amber-50 px-3 py-2 text-xs text-amber-700 dark:border-amber-800 dark:bg-amber-900/20 dark:text-amber-400"},Zu={class:"max-h-[60vh] overflow-auto rounded-lg border border-gray-200 bg-gray-50 p-3 text-xs leading-relaxed text-gray-800 dark:border-gray-700 dark:bg-gray-800 dark:text-gray-200"},ed=le({__name:"ToolTestTab",props:{sessionId:{}},setup(u){const{t:n}=Ce(),t=u,o=A([]),s=A(""),i=A({}),l=A(!1),r=A(null),m=A(null),x=A(null),h=A(!1),S=A(null);function y(g){const b=`ai.assistant.builtinToolDesc.${g}`,F=n(b);return F!==b?F:g}const I=q(()=>o.value.filter(g=>g.category==="core")),w=q(()=>o.value.filter(g=>g.category==="analysis")),v=q(()=>o.value.find(g=>g.name===s.value)),_=q(()=>{const g=v.value;if(!g?.parameters)return[];const b=g.parameters;if(!b.properties)return[];const F=new Set(b.required??[]);return Object.entries(b.properties).map(([E,z])=>{const T={name:E,type:z.type??"string",description:z.description??"",required:F.has(E),defaultValue:z.default};if(z.enum&&(T.enumValues=z.enum),z.type==="array"){T.isArray=!0;const M=z.items;T.arrayItemType=M?.type??"string"}return T})});pe(s,()=>{i.value={},m.value=null,x.value=null,S.value=null}),De(async()=>{try{o.value=await ot().getToolCatalog(),o.value.length>0&&(s.value=o.value[0].name)}catch(g){console.error("Failed to load tool catalog:",g)}});function k(){const g={};for(const b of _.value){const F=i.value[b.name];if(!(F===void 0||F===""))if(b.type==="number"){const E=Number(F);isNaN(E)||(g[b.name]=E)}else b.isArray?g[b.name]=F.split(",").map(E=>E.trim()).filter(Boolean):g[b.name]=F}return g}async function C(){if(!s.value||l.value)return;l.value=!0,m.value=null,x.value=null,h.value=!1,S.value=null;const g=`tool_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;r.value=g;try{const b=k(),F=await ot().executeTool(g,s.value,b,t.sessionId);if(F.error==="cancelled")return;F.success?(S.value=F.elapsed??null,h.value=!!F.truncated,m.value=F.truncated?F.details?._preview??"":JSON.stringify(F.details??F.content,null,2)):x.value=F.error??"Unknown error"}catch(b){x.value=String(b)}finally{l.value=!1,r.value=null}}async function $(){r.value&&(await ot().cancelToolTest(r.value),l.value=!1,r.value=null)}return(g,b)=>{const F=Ia,E=qt,z=Ne,T=Se;return d(),p("div",Cu,[a("div",$u,[I.value.length>0?(d(),p("div",Su,[a("div",Iu,c(e(n)("ai.lab.toolTest.coreTools")),1),(d(!0),p(ne,null,he(I.value,M=>(d(),p("button",{key:M.name,class:Z(["flex w-full flex-col px-3 py-1.5 text-left transition-colors",[s.value===M.name?"bg-primary-50 text-primary-700 dark:bg-primary-900/30 dark:text-primary-300":"text-gray-600 hover:bg-gray-100 dark:text-gray-400 dark:hover:bg-gray-700/50"]]),title:M.description,onClick:L=>s.value=M.name},[a("span",Mu,c(y(M.name)),1),a("span",Au,c(M.name),1)],10,Tu))),128))])):V("",!0),w.value.length>0?(d(),p("div",qu,[a("div",zu,c(e(n)("ai.lab.toolTest.analysisTools")),1),(d(!0),p(ne,null,he(w.value,M=>(d(),p("button",{key:M.name,class:Z(["flex w-full flex-col px-3 py-1.5 text-left transition-colors",[s.value===M.name?"bg-primary-50 text-primary-700 dark:bg-primary-900/30 dark:text-primary-300":"text-gray-600 hover:bg-gray-100 dark:text-gray-400 dark:hover:bg-gray-700/50"]]),title:M.description,onClick:L=>s.value=M.name},[a("span",Lu,c(y(M.name)),1),a("span",Eu,c(M.name),1)],10,Du))),128))])):V("",!0)]),f(e(rt),{class:"my-3 mr-3 flex min-w-0 flex-1 flex-col"},{default:D(()=>[a("div",Vu,[v.value?(d(),p("div",Fu,[a("div",Ru,c(y(v.value.name)),1),a("div",Ou,c(v.value.description),1)])):V("",!0),_.value.length>0?(d(),p("div",Bu,[a("h3",Pu,c(e(n)("ai.lab.toolTest.parameters")),1),a("div",Nu,[(d(!0),p(ne,null,he(_.value,M=>(d(),p("div",{key:M.name,class:"flex flex-col gap-1"},[a("label",ju,[ee(c(M.name)+" ",1),M.required?(d(),p("span",Uu,"*")):V("",!0),M.type==="number"?(d(),p("span",Wu,"(number)")):V("",!0),M.isArray?(d(),p("span",Ku,"("+c(M.arrayItemType)+"[])",1)):V("",!0)]),M.enumValues?(d(),B(F,{key:0,modelValue:i.value[M.name],"onUpdate:modelValue":L=>i.value[M.name]=L,items:M.enumValues,placeholder:M.description,size:"sm"},null,8,["modelValue","onUpdate:modelValue","items","placeholder"])):(d(),B(E,{key:1,modelValue:i.value[M.name],"onUpdate:modelValue":L=>i.value[M.name]=L,placeholder:M.isArray?e(n)("ai.lab.toolTest.arrayPlaceholder"):M.defaultValue!==void 0?String(M.defaultValue):M.description,type:M.type==="number"?"number":"text",size:"sm"},null,8,["modelValue","onUpdate:modelValue","placeholder","type"]))]))),128))])])):V("",!0),a("div",Hu,[l.value?(d(),B(z,{key:1,color:"error",icon:"i-heroicons-stop",onClick:$},{default:D(()=>[ee(c(e(n)("ai.lab.toolTest.cancel")),1)]),_:1})):(d(),B(z,{key:0,color:"primary",disabled:!s.value,icon:"i-heroicons-play",onClick:C},{default:D(()=>[ee(c(e(n)("ai.lab.toolTest.execute")),1)]),_:1},8,["disabled"])),l.value?(d(),B(T,{key:2,name:"i-heroicons-arrow-path",class:"h-4 w-4 animate-spin text-gray-400"})):V("",!0),S.value!==null?(d(),p("span",Yu,c(e(n)("ai.lab.toolTest.elapsed",{ms:S.value})),1)):V("",!0)]),m.value||x.value?(d(),p("div",Qu,[a("h3",Gu,c(e(n)("ai.lab.toolTest.result")),1),x.value?(d(),p("div",Ju,c(x.value),1)):(d(),p(ne,{key:1},[h.value?(d(),p("div",Xu,c(e(n)("ai.lab.toolTest.truncated")),1)):V("",!0),a("pre",Zu,c(m.value),1)],64))])):V("",!0)])]),_:1})])}}}),td={class:"flex h-full flex-col"},ad={class:"min-h-0 flex-1 overflow-hidden"},sd=le({__name:"DebugTab",props:{sessionId:{}},setup(u){const{t:n}=Ce(),t=u,o=[{id:"sql-tables",label:n("analysis.debug.sqlTables"),icon:"i-heroicons-table-cells"},{id:"basic-tools",label:n("analysis.debug.basicTools"),icon:"i-heroicons-wrench-screwdriver"}],s=A("sql-tables");return(i,l)=>(d(),p("div",td,[f(e(_a),{modelValue:s.value,"onUpdate:modelValue":l[0]||(l[0]=r=>s.value=r),items:o,"persist-key":"debugTab"},null,8,["modelValue"]),a("div",ad,[f(It,{name:"fade",mode:"out-in"},{default:D(()=>[s.value==="sql-tables"?(d(),B(wu,{key:0,class:"h-full","session-id":t.sessionId},null,8,["session-id"])):s.value==="basic-tools"?(d(),B(ed,{key:1,class:"h-full","session-id":t.sessionId},null,8,["session-id"])):V("",!0)]),_:1})])]))}}),od=gt(sd,[["__scopeId","data-v-b3b3d1a4"]]),nd={class:"main-content flex h-full"},ld={class:"flex flex-1 flex-col overflow-hidden"},id={class:"flex flex-col border-b border-gray-200 bg-gray-50 p-4 dark:border-gray-800 dark:bg-page-dark"},rd={class:"mx-auto w-full max-w-3xl"},ud=["placeholder"],dd=["placeholder"],cd={class:"mt-1 flex items-center justify-between"},md={class:"flex items-center gap-2"},pd={key:0,class:"text-xs text-gray-400"},gd={class:"flex items-center gap-2"},fd={key:0,class:"ml-1 text-xs text-gray-400"},vd={key:0,class:"flex-1 overflow-auto p-4"},hd={class:"mb-2 flex items-center gap-1.5 text-sm font-medium text-gray-600 dark:text-gray-300"},yd={key:0,class:"text-gray-500"},xd={key:1,class:"text-pink-500"},bd=["open"],_d={class:"cursor-pointer select-none text-xs font-medium text-gray-500 dark:text-gray-400"},kd={key:1,class:"whitespace-pre-wrap break-all font-mono text-xs leading-5 text-gray-600 dark:text-gray-400"},wd={key:2,class:"font-mono text-xs text-gray-400"},Cd=le({__name:"SQLLabTab",props:{sessionId:{},chatType:{}},setup(u){const{t:n,locale:t}=Ce(),o=u,s=A(null),i=A(null);function l(R){return n(R==="group"?"ai.sqlLab.generate.defaultPromptGroup":"ai.sqlLab.generate.defaultPromptPrivate")}const r=A("SELECT * FROM message LIMIT 10"),m=A(l(o.chatType)),x=A("prompt"),h=A(!1),S=A(!1),y=A(null),I=A(null),w=A(""),v=A(""),_=A(""),k=A(!1),C=A(null),$=A(!1),g=A([]);function b(){try{const R=`sql-lab-history-${o.sessionId}`,J=localStorage.getItem(R);J&&(g.value=JSON.parse(J))}catch(R){console.error("加载历史记录失败:",R)}}function F(){try{const R=`sql-lab-history-${o.sessionId}`;localStorage.setItem(R,JSON.stringify(g.value))}catch(R){console.error("保存历史记录失败:",R)}}function E(R,J,fe){const X={id:`${Date.now()}-${Math.random().toString(36).slice(2,8)}`,prompt:R,sql:J,explanation:fe,timestamp:Date.now()};g.value.unshift(X),g.value.length>50&&(g.value=g.value.slice(0,50)),F()}function z(R){g.value=g.value.filter(J=>J.id!==R),F()}async function T(){if(!r.value.trim()){y.value=n("ai.sqlLab.editor.errorEmptySQL");return}h.value=!0,y.value=null,I.value=null,i.value?.resetSort();try{I.value=await Pe().executeSQL(o.sessionId,r.value)}catch(R){y.value=R.message||String(R)}finally{h.value=!1}}function M(R,J){(R.ctrlKey||R.metaKey)&&R.key==="Enter"&&(R.preventDefault(),J==="prompt"?se():T())}function L(R,J){r.value+=`${R}.${J}`}function N(){x.value=x.value==="prompt"?"sql":"prompt"}function U(R){const J=[];for(const fe of R){J.push(`### ${fe.name} (${fa(fe.name,t.value)})`),J.push("| 列名 | 说明 | 类型 |"),J.push("|------|------|------|");for(const X of fe.columns){const W=X.pk?" (主键)":"";J.push(`| ${X.name} | ${Ta(fe.name,X.name,t.value)}${W} | ${X.type} |`)}J.push("")}return J.join(`
|
|
24
|
+
3. 如有明显的趋势或异常,请指出`,ke=await cs().chatStream([{role:"system",content:"你是一个数据分析专家,擅长从查询结果中提取关键信息和洞察。请用简洁清晰的中文回答。"},{role:"user",content:be}],{temperature:.3,maxTokens:1e3},ze=>{ze.content&&(N.value+=ze.content)});ke.success?M.value=N.value:L.value=ke.error||t("ai.sqlLab.result.errorSummary")}catch(j){L.value=j.message||String(j)}finally{T.value=!1}}function te(){z.value=!1,M.value="",L.value=null,N.value=""}return n({resetSort:O}),(K,j)=>{const de=Se,be=Ca,ke=Ne,ze=wa,je=Xe;return d(),p("div",rr,[u.error?(d(),p("div",ur,[a("div",dr,[f(de,{name:"i-heroicons-exclamation-circle",class:"mt-0.5 h-5 w-5 shrink-0 text-red-500"}),a("div",cr,[a("p",mr,c(e(t)("ai.sqlLab.result.queryError")),1),a("p",pr,c(u.error),1)])])])):V("",!0),u.result?(d(),p("div",gr,[a("div",fr,[a("label",vr,[f(be,{"model-value":F.value,size:"xs","onUpdate:modelValue":E},null,8,["model-value"]),a("span",hr,c(e(t)("ai.sqlLab.result.readableTime")),1)]),j[5]||(j[5]=a("span",{class:"text-gray-300 dark:text-gray-600"},"|",-1)),a("span",null,[f(de,{name:"i-heroicons-table-cells",class:"mr-1 inline h-4 w-4"}),ee(" "+c(e(t)("ai.sqlLab.result.rows",{count:u.result.rowCount})),1)]),a("span",null,[f(de,{name:"i-heroicons-clock",class:"mr-1 inline h-4 w-4"}),ee(" "+c(u.result.duration)+" ms ",1)])]),a("div",yr,[f(ke,{variant:"ghost",size:"xs",onClick:we},{default:D(()=>[f(de,{name:"i-heroicons-sparkles",class:"mr-1 h-4 w-4"}),ee(" "+c(e(t)("ai.sqlLab.result.summarize")),1)]),_:1}),f(ke,{variant:"ghost",size:"xs",loading:U.value,onClick:ae},{default:D(()=>[f(de,{name:"i-heroicons-arrow-down-tray",class:"mr-1 h-4 w-4"}),ee(" "+c(e(t)("common.export")),1)]),_:1},8,["loading"])])])):V("",!0),u.result&&u.result.rows.length>0?(d(),p("div",xr,[a("table",br,[a("thead",_r,[a("tr",null,[(d(!0),p(ne,null,he(u.result.columns,(qe,He)=>(d(),p("th",{key:He,class:"cursor-pointer whitespace-nowrap px-4 py-2 text-left text-xs font-medium transition-colors hover:bg-gray-200 dark:hover:bg-gray-700",onClick:Ue=>fe(qe)},[a("div",wr,[a("div",Cr,[a("span",$r,c(H(qe)||qe),1),H(qe)?(d(),p("span",Sr,c(qe),1)):V("",!0)]),k.value===qe?(d(),B(de,{key:0,name:C.value==="asc"?"i-heroicons-chevron-up":"i-heroicons-chevron-down",class:"h-3 w-3 text-gray-500"},null,8,["name"])):V("",!0)])],8,kr))),128)),J.value?(d(),p("th",Ir)):V("",!0)])]),a("tbody",Tr,[(d(!0),p(ne,null,he(P.value,(qe,He)=>(d(),p("tr",{key:He,class:"hover:bg-gray-50 dark:hover:bg-gray-800"},[(d(!0),p(ne,null,he(qe,(Ue,Te)=>(d(),p("td",{key:Te,class:Z(["max-w-xs truncate whitespace-nowrap px-4 py-2 font-mono text-sm text-gray-700 dark:text-gray-300",{"text-gray-400 italic":Ue===null}]),title:W(Ue,u.result.columns[Te])},c(W(Ue,u.result.columns[Te])),11,Mr))),128)),J.value?(d(),p("td",Ar,[f(ke,{icon:"i-heroicons-chat-bubble-left-right",color:"neutral",variant:"ghost",size:"xs",title:e(t)("ai.sqlLab.result.viewChat"),onClick:Ue=>w(qe[R.value])},null,8,["title","onClick"])])):V("",!0)]))),128))])])])):V("",!0),u.result&&u.result.rows.length>0&&se.value>1?(d(),p("div",qr,[a("div",zr,[f(ke,{icon:"i-heroicons-chevron-double-left",variant:"ghost",size:"xs",disabled:$.value===1,onClick:j[0]||(j[0]=qe=>$.value=1)},null,8,["disabled"]),f(ke,{icon:"i-heroicons-chevron-left",variant:"ghost",size:"xs",disabled:$.value===1,onClick:j[1]||(j[1]=qe=>$.value--)},null,8,["disabled"]),a("span",Dr,c($.value)+" / "+c(se.value),1),f(ke,{icon:"i-heroicons-chevron-right",variant:"ghost",size:"xs",disabled:$.value>=se.value,onClick:j[2]||(j[2]=qe=>$.value++)},null,8,["disabled"]),f(ke,{icon:"i-heroicons-chevron-double-right",variant:"ghost",size:"xs",disabled:$.value>=se.value,onClick:j[3]||(j[3]=qe=>$.value=se.value)},null,8,["disabled"])]),a("div",Lr,[a("span",null,c(e(t)("ai.sqlLab.result.pageSize")),1),f(ze,{"model-value":g.value,items:b.map(qe=>({label:String(qe),value:qe})),size:"xs",class:"w-20","onUpdate:modelValue":X},null,8,["model-value","items"])])])):V("",!0),u.result&&u.result.rows.length===0?(d(),p("div",Er,[a("div",Vr,[f(de,{name:"i-heroicons-inbox",class:"mx-auto h-12 w-12 text-gray-300 dark:text-gray-600"}),a("p",Fr,c(e(t)("ai.sqlLab.result.emptyResult")),1)])])):V("",!0),!u.result&&!u.error?(d(),p("div",Rr,[a("div",Or,[f(de,{name:"i-heroicons-command-line",class:"mx-auto h-12 w-12 text-gray-300 dark:text-gray-600"}),a("p",Br,c(e(t)("ai.sqlLab.result.initialState")),1),a("p",Pr,c(e(t)("ai.sqlLab.result.initialHint")),1)])])):V("",!0),f(je,{open:z.value,"onUpdate:open":j[4]||(j[4]=qe=>z.value=qe)},{content:D(()=>[a("div",Nr,[a("div",jr,[f(de,{name:"i-heroicons-sparkles",class:"h-5 w-5 text-pink-500"}),a("h3",Ur,c(e(t)("ai.sqlLab.result.summaryTitle")),1)]),T.value&&!N.value?(d(),p("div",Wr,[f(de,{name:"i-heroicons-arrow-path",class:"h-6 w-6 animate-spin text-pink-500"}),a("span",Kr,c(e(t)("ai.sqlLab.result.analyzing")),1)])):N.value||M.value?(d(),p("div",Hr,[a("div",{class:"prose prose-sm max-w-none rounded-lg bg-gray-50 p-4 dark:prose-invert dark:bg-page-dark",innerHTML:e(v).render(N.value||M.value)},null,8,Yr),T.value?(d(),p("div",Qr,[f(de,{name:"i-heroicons-arrow-path",class:"mr-1 h-3 w-3 animate-spin"}),ee(" "+c(e(t)("common.generating")),1)])):V("",!0)])):V("",!0),L.value?(d(),p("div",Gr,[a("p",Jr,c(L.value),1)])):V("",!0),a("div",Xr,[!T.value&&M.value?(d(),B(ke,{key:0,variant:"outline",onClick:xe},{default:D(()=>[f(de,{name:"i-heroicons-arrow-path",class:"mr-1 h-4 w-4"}),ee(" "+c(e(t)("common.regenerate")),1)]),_:1})):V("",!0),f(ke,{variant:"ghost",onClick:te},{default:D(()=>[ee(c(e(t)("common.close")),1)]),_:1})])])]),_:1},8,["open"])])}}}),eu={class:"h-full p-3"},tu={class:"relative z-20 flex items-center gap-2 border-b border-gray-200 px-4 py-2 dark:border-gray-700"},au={key:0,class:"mx-4 mt-2 rounded-lg border border-red-200 bg-red-50 p-3 text-sm text-red-700 dark:border-red-800 dark:bg-red-900/20 dark:text-red-400"},su={class:"flex-1 overflow-auto"},ou={key:0,class:"flex h-full items-center justify-center"},nu={class:"text-sm text-gray-400"},lu={key:1,class:"w-full border-collapse text-xs"},iu={class:"sticky top-0 bg-gray-50 dark:bg-page-dark"},ru={class:"font-mono text-xs font-medium text-gray-700 dark:text-gray-300"},uu={class:"text-[10px] leading-tight text-gray-400"},du={class:"border-b border-r border-gray-100 px-2 py-1.5 text-gray-400 dark:border-gray-800"},cu=["title"],mu=["onUpdate:modelValue"],pu={class:"w-full truncate px-2 py-1.5"},gu={key:0,class:"italic text-gray-400"},fu={key:1},vu={class:"border-b border-gray-100 px-2 py-1.5 text-center dark:border-gray-800"},hu={key:0,class:"flex items-center justify-center gap-1"},yu={key:1,class:"flex items-center justify-center gap-1"},xu={class:"flex items-center justify-between border-t border-gray-200 px-4 py-2 dark:border-gray-700"},bu={class:"text-xs text-gray-500 dark:text-gray-400"},_u={key:0,class:"flex items-center gap-3"},ku={class:"text-xs text-gray-500 dark:text-gray-400"},Rt=100,wu=le({__name:"TableBrowser",props:{sessionId:{}},setup(u){const n=["member","meta","message","message_context","member_name_history"],{t,locale:s}=Ce(),o=u,i=A(localStorage.getItem("debug_dbSource")||"chat"),l=A([]),r=A(""),m=A(null),y=A(!1),h=A(null),S=A(1),x=A(0),I=q(()=>Math.max(1,Math.ceil(x.value/Rt))),w=A(null),v=A({}),_=A(!1),k=q(()=>i.value==="ai"),C=A([]),$=A(""),g=q(()=>k.value&&r.value==="ai_message"&&C.value.length>0),b=q(()=>{const W={label:t("analysis.debug.tableBrowser.allConversations"),value:"__all__"},ae=C.value.map(O=>({label:O.title||O.id.slice(0,16),value:O.id}));return[W,...ae]});async function F(){if(!k.value){C.value=[];return}try{const W=o.sessionId.replace(/'/g,"''"),ae=await ot().executeAiSQL(`SELECT id, title FROM ai_chat WHERE session_id = '${W}' ORDER BY updated_at DESC`);C.value=ae.rows.map(O=>({id:String(O[0]),title:O[1]?String(O[1]):null})),$.value="__all__"}catch{C.value=[]}}const E=q(()=>[{label:t("analysis.debug.tableBrowser.chatDb"),value:"chat"},{label:t("analysis.debug.tableBrowser.aiDb"),value:"ai"}]),z=q(()=>{const W=[...l.value];return W.sort((ae,O)=>{const ue=n.indexOf(ae.name),we=n.indexOf(O.name);return ue!==-1&&we!==-1?ue-we:ue!==-1?-1:we!==-1?1:0}),W}),T=q(()=>z.value.map(W=>({label:W.name,value:W.name})));async function M(W){return i.value==="ai"?await ot().executeAiSQL(W):await Pe().executeSQL(o.sessionId,W)}async function L(){try{if(i.value==="ai"?l.value=await ot().getAiSchema():l.value=await Pe().getSchema(o.sessionId),z.value.length>0){const W=k.value?"ai_message":z.value[0].name;r.value=z.value.some(ae=>ae.name===W)?W:z.value[0].name}else r.value="",m.value=null}catch(W){console.error("Failed to load schema:",W)}}function N(){if(!k.value)return"";const W=o.sessionId.replace(/'/g,"''"),ae=r.value;return ae==="ai_chat"?` WHERE "session_id" = '${W}'`:ae==="ai_message"?$.value&&$.value!=="__all__"?` WHERE "ai_chat_id" = '${$.value.replace(/'/g,"''")}'`:` WHERE "ai_chat_id" IN (SELECT "id" FROM "ai_chat" WHERE "session_id" = '${W}')`:""}async function U(){if(r.value){y.value=!0,h.value=null,w.value=null;try{const W=N(),ae=await M(`SELECT COUNT(*) as cnt FROM "${r.value}"${W}`);x.value=ae?.rows?.[0]?.[0]??0;const O=(S.value-1)*Rt;m.value=await M(`SELECT * FROM "${r.value}"${W} ORDER BY rowid DESC LIMIT ${Rt} OFFSET ${O}`)}catch(W){h.value=W.message||String(W),m.value=null}finally{y.value=!1}}}function H(W){if(!m.value)return;w.value=W;const ae=m.value.rows[W],O={};m.value.columns.forEach((ue,we)=>{O[ue]=ae[we]==null?"":String(ae[we])}),v.value=O}function ie(){w.value=null,v.value={}}async function se(){if(w.value===null||!m.value)return;const W=r.value,ae=l.value.find(j=>j.name===W);if(!ae)return;const O=ae.columns.find(j=>j.pk);if(!O){h.value="No primary key found for this table";return}const ue=m.value.rows[w.value],we=m.value.columns.indexOf(O.name),xe=ue[we],te=m.value.columns.filter(j=>j!==O.name).map(j=>`"${j}" = '${v.value[j].replace(/'/g,"''")}'`).join(", "),K=`UPDATE "${W}" SET ${te} WHERE "${O.name}" = '${String(xe).replace(/'/g,"''")}'`;try{await M(K),ie(),await U()}catch(j){h.value=j.message||String(j)}}async function P(W){if(!m.value)return;const ae=r.value,O=l.value.find(j=>j.name===ae);if(!O)return;const ue=O.columns.find(j=>j.pk);if(!ue){h.value="No primary key found for this table";return}const we=m.value.rows[W],xe=m.value.columns.indexOf(ue.name),te=we[xe],K=`DELETE FROM "${ae}" WHERE "${ue.name}" = '${String(te).replace(/'/g,"''")}'`;try{await M(K),await U()}catch(j){h.value=j.message||String(j)}}function R(W){confirm(t("analysis.debug.tableBrowser.confirmDelete"))&&P(W)}async function J(){if(confirm(t("analysis.debug.tableBrowser.confirmClearDebug"))){_.value=!0;try{(await ot().clearDebugContext()).success&&await U()}catch(W){h.value=W.message||String(W)}finally{_.value=!1}}}function fe(W){navigator.clipboard.writeText(W)}function X(W,ae,O){if(!m.value)return[];const ue=W==null?"NULL":String(W),we=m.value.rows[O],xe={};return m.value.columns.forEach((te,K)=>{xe[te]=we[K]}),[[{label:t("analysis.debug.tableBrowser.copyCell"),class:"p-2",onSelect:()=>fe(ue)},{label:t("analysis.debug.tableBrowser.editRow"),class:"p-2",onSelect:()=>H(O)},{label:t("analysis.debug.tableBrowser.copyRow"),class:"p-2",onSelect:()=>fe(JSON.stringify(xe,null,2))},{label:t("analysis.debug.tableBrowser.deleteRow"),class:"p-2 text-red-600 dark:text-red-400",onSelect:()=>P(O)}]]}return me(i,W=>{localStorage.setItem("debug_dbSource",W),r.value="",m.value=null,x.value=0,S.value=1,$.value="",L(),F()}),me(r,W=>{W&&(S.value=1,U())}),me($,()=>{r.value==="ai_message"&&(S.value=1,U())}),me(S,()=>{U()}),De(async()=>{await Promise.all([L(),F()]),r.value&&await U()}),(W,ae)=>{const O=Ta,ue=Ne,we=qo;return d(),p("div",eu,[f(e(rt),{shadow:!1,class:"flex h-full min-w-0 flex-col"},{default:D(()=>[a("div",tu,[f(e(ct),{modelValue:i.value,"onUpdate:modelValue":ae[0]||(ae[0]=xe=>i.value=xe),items:E.value,size:"xs"},null,8,["modelValue","items"]),ae[5]||(ae[5]=a("div",{class:"mx-1 h-4 w-px bg-gray-200 dark:bg-gray-700"},null,-1)),a("div",{class:Z([k.value?"max-w-[50%]":"flex-1","min-w-0"])},[f(e(ct),{modelValue:r.value,"onUpdate:modelValue":ae[1]||(ae[1]=xe=>r.value=xe),items:T.value,size:"xs"},null,8,["modelValue","items"])],2),g.value?(d(),B(O,{key:0,modelValue:$.value,"onUpdate:modelValue":ae[2]||(ae[2]=xe=>$.value=xe),items:b.value,"value-key":"value",class:"w-48",size:"xs",ui:{content:"z-50"}},null,8,["modelValue","items"])):V("",!0),ae[6]||(ae[6]=a("div",{class:"flex-1"},null,-1)),k.value&&r.value==="ai_message"?(d(),B(ue,{key:1,variant:"ghost",size:"xs",color:"error",icon:"i-heroicons-trash",loading:_.value,onClick:J},{default:D(()=>[ee(c(e(t)("analysis.debug.tableBrowser.clearDebugContext")),1)]),_:1},8,["loading"])):V("",!0),f(ue,{variant:"ghost",size:"xs",icon:"i-heroicons-arrow-path",loading:y.value,onClick:U},{default:D(()=>[ee(c(e(t)("analysis.debug.tableBrowser.refresh")),1)]),_:1},8,["loading"])]),h.value?(d(),p("div",au,c(h.value),1)):V("",!0),a("div",su,[!m.value&&!y.value?(d(),p("div",ou,[a("p",nu,c(e(t)("analysis.debug.tableBrowser.noData")),1)])):m.value?(d(),p("table",lu,[a("thead",iu,[a("tr",null,[ae[7]||(ae[7]=a("th",{class:"whitespace-nowrap border-b border-r border-gray-200 px-2 py-1.5 text-left font-medium text-gray-500 dark:border-gray-700 dark:text-gray-400"}," # ",-1)),(d(!0),p(ne,null,he(m.value.columns,xe=>(d(),p("th",{key:xe,class:"border-b border-r border-gray-200 px-2 py-1.5 text-left dark:border-gray-700"},[a("div",ru,c(xe),1),a("div",uu,c(e(Ma)(r.value,xe,e(s))),1)]))),128)),ae[8]||(ae[8]=a("th",{class:"whitespace-nowrap border-b border-gray-200 px-2 py-1.5 text-center font-medium text-gray-500 dark:border-gray-700 dark:text-gray-400"}," 操作 ",-1))])]),a("tbody",null,[(d(!0),p(ne,null,he(m.value.rows,(xe,te)=>(d(),p("tr",{key:te,class:"transition-colors hover:bg-gray-50 dark:hover:bg-gray-800/50"},[a("td",du,c((S.value-1)*Rt+te+1),1),(d(!0),p(ne,null,he(xe,(K,j)=>(d(),p("td",{key:j,class:"max-w-[300px] border-b border-r border-gray-100 p-0 text-gray-700 dark:border-gray-800 dark:text-gray-300",title:K==null?"NULL":String(K)},[w.value===te?tt((d(),p("input",{key:0,"onUpdate:modelValue":de=>v.value[m.value.columns[j]]=de,class:"w-full px-2 py-1.5 rounded border border-gray-300 bg-white text-xs dark:border-gray-600 dark:bg-gray-800"},null,8,mu)),[[Kt,v.value[m.value.columns[j]]]]):(d(),B(we,{key:1,items:X(K,j,te)},{default:D(()=>[a("div",pu,[K==null?(d(),p("span",gu,"NULL")):(d(),p("span",fu,c(String(K).slice(0,200)),1))])]),_:2},1032,["items"]))],8,cu))),128)),a("td",vu,[w.value===te?(d(),p("div",hu,[f(ue,{size:"xs",color:"primary",variant:"ghost",icon:"i-heroicons-check",onClick:se}),f(ue,{size:"xs",color:"neutral",variant:"ghost",icon:"i-heroicons-x-mark",onClick:ie})])):(d(),p("div",yu,[f(ue,{size:"xs",variant:"ghost",icon:"i-heroicons-pencil-square",onClick:K=>H(te)},null,8,["onClick"]),f(ue,{size:"xs",variant:"ghost",color:"error",icon:"i-heroicons-trash",onClick:K=>R(te)},null,8,["onClick"])]))])]))),128))])])):V("",!0)]),a("div",xu,[a("span",bu,c(x.value>0?e(t)("analysis.debug.tableBrowser.rowCount",{count:x.value}):""),1),I.value>1?(d(),p("div",_u,[f(ue,{size:"xs",variant:"ghost",disabled:S.value<=1,icon:"i-heroicons-chevron-left",onClick:ae[3]||(ae[3]=xe=>S.value--)},null,8,["disabled"]),a("span",ku,c(e(t)("analysis.debug.tableBrowser.page",{current:S.value,total:I.value})),1),f(ue,{size:"xs",variant:"ghost",disabled:S.value>=I.value,icon:"i-heroicons-chevron-right",onClick:ae[4]||(ae[4]=xe=>S.value++)},null,8,["disabled"])])):V("",!0)])]),_:1})])}}}),Cu={class:"flex h-full"},$u={class:"m-3 h-[calc(100%-1.5rem)] w-56 shrink-0 overflow-y-auto rounded-lg bg-white shadow-elevated dark:bg-sidebar-dark"},Su={key:0,class:"py-2"},Iu={class:"px-3 py-1.5 text-[11px] font-semibold tracking-wide text-gray-400 uppercase dark:text-gray-500"},Tu=["title","onClick"],Mu={class:"truncate text-xs font-medium"},Au={class:"truncate text-[10px] opacity-50"},qu={key:1,class:"border-t border-gray-200 py-2 dark:border-gray-700"},zu={class:"px-3 py-1.5 text-[11px] font-semibold tracking-wide text-gray-400 uppercase dark:text-gray-500"},Du=["title","onClick"],Lu={class:"truncate text-xs font-medium"},Eu={class:"truncate text-[10px] opacity-50"},Vu={class:"flex min-h-0 flex-1 flex-col gap-4 overflow-y-auto p-4"},Fu={key:0,class:"rounded-lg border border-primary-200 bg-primary-50/50 px-4 py-3 dark:border-primary-800 dark:bg-primary-900/20"},Ru={class:"text-sm font-medium text-primary-700 dark:text-primary-300"},Ou={class:"mt-1 text-xs text-primary-600/70 dark:text-primary-400/70"},Bu={key:1,class:"flex flex-col gap-3"},Pu={class:"text-sm font-medium text-gray-700 dark:text-gray-300"},Nu={class:"grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-3"},ju={class:"text-xs font-medium text-gray-600 dark:text-gray-400"},Uu={key:0,class:"text-red-500"},Wu={key:1,class:"ml-1 text-gray-400"},Ku={key:2,class:"ml-1 text-gray-400"},Hu={class:"flex items-center gap-3"},Yu={key:3,class:"text-xs text-gray-500 dark:text-gray-400"},Qu={key:2,class:"flex-1 min-h-0"},Gu={class:"mb-2 text-sm font-medium text-gray-700 dark:text-gray-300"},Ju={key:0,class:"rounded-lg border border-red-200 bg-red-50 p-3 text-sm text-red-700 dark:border-red-800 dark:bg-red-900/20 dark:text-red-400"},Xu={key:0,class:"mb-2 rounded-lg border border-amber-200 bg-amber-50 px-3 py-2 text-xs text-amber-700 dark:border-amber-800 dark:bg-amber-900/20 dark:text-amber-400"},Zu={class:"max-h-[60vh] overflow-auto rounded-lg border border-gray-200 bg-gray-50 p-3 text-xs leading-relaxed text-gray-800 dark:border-gray-700 dark:bg-gray-800 dark:text-gray-200"},ed=le({__name:"ToolTestTab",props:{sessionId:{}},setup(u){const{t:n}=Ce(),t=u,s=A([]),o=A(""),i=A({}),l=A(!1),r=A(null),m=A(null),y=A(null),h=A(!1),S=A(null);function x(g){const b=`ai.assistant.builtinToolDesc.${g}`,F=n(b);return F!==b?F:g}const I=q(()=>s.value.filter(g=>g.category==="core")),w=q(()=>s.value.filter(g=>g.category==="analysis")),v=q(()=>s.value.find(g=>g.name===o.value)),_=q(()=>{const g=v.value;if(!g?.parameters)return[];const b=g.parameters;if(!b.properties)return[];const F=new Set(b.required??[]);return Object.entries(b.properties).map(([E,z])=>{const T={name:E,type:z.type??"string",description:z.description??"",required:F.has(E),defaultValue:z.default};if(z.enum&&(T.enumValues=z.enum),z.type==="array"){T.isArray=!0;const M=z.items;T.arrayItemType=M?.type??"string"}return T})});me(o,()=>{i.value={},m.value=null,y.value=null,S.value=null}),De(async()=>{try{s.value=await ot().getToolCatalog(),s.value.length>0&&(o.value=s.value[0].name)}catch(g){console.error("Failed to load tool catalog:",g)}});function k(){const g={};for(const b of _.value){const F=i.value[b.name];if(!(F===void 0||F===""))if(b.type==="number"){const E=Number(F);isNaN(E)||(g[b.name]=E)}else b.isArray?g[b.name]=F.split(",").map(E=>E.trim()).filter(Boolean):g[b.name]=F}return g}async function C(){if(!o.value||l.value)return;l.value=!0,m.value=null,y.value=null,h.value=!1,S.value=null;const g=`tool_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;r.value=g;try{const b=k(),F=await ot().executeTool(g,o.value,b,t.sessionId);if(F.error==="cancelled")return;F.success?(S.value=F.elapsed??null,h.value=!!F.truncated,m.value=F.truncated?F.details?._preview??"":JSON.stringify(F.details??F.content,null,2)):y.value=F.error??"Unknown error"}catch(b){y.value=String(b)}finally{l.value=!1,r.value=null}}async function $(){r.value&&(await ot().cancelToolTest(r.value),l.value=!1,r.value=null)}return(g,b)=>{const F=Ta,E=zt,z=Ne,T=Se;return d(),p("div",Cu,[a("div",$u,[I.value.length>0?(d(),p("div",Su,[a("div",Iu,c(e(n)("ai.lab.toolTest.coreTools")),1),(d(!0),p(ne,null,he(I.value,M=>(d(),p("button",{key:M.name,class:Z(["flex w-full flex-col px-3 py-1.5 text-left transition-colors",[o.value===M.name?"bg-primary-50 text-primary-700 dark:bg-primary-900/30 dark:text-primary-300":"text-gray-600 hover:bg-gray-100 dark:text-gray-400 dark:hover:bg-gray-700/50"]]),title:M.description,onClick:L=>o.value=M.name},[a("span",Mu,c(x(M.name)),1),a("span",Au,c(M.name),1)],10,Tu))),128))])):V("",!0),w.value.length>0?(d(),p("div",qu,[a("div",zu,c(e(n)("ai.lab.toolTest.analysisTools")),1),(d(!0),p(ne,null,he(w.value,M=>(d(),p("button",{key:M.name,class:Z(["flex w-full flex-col px-3 py-1.5 text-left transition-colors",[o.value===M.name?"bg-primary-50 text-primary-700 dark:bg-primary-900/30 dark:text-primary-300":"text-gray-600 hover:bg-gray-100 dark:text-gray-400 dark:hover:bg-gray-700/50"]]),title:M.description,onClick:L=>o.value=M.name},[a("span",Lu,c(x(M.name)),1),a("span",Eu,c(M.name),1)],10,Du))),128))])):V("",!0)]),f(e(rt),{class:"my-3 mr-3 flex min-w-0 flex-1 flex-col"},{default:D(()=>[a("div",Vu,[v.value?(d(),p("div",Fu,[a("div",Ru,c(x(v.value.name)),1),a("div",Ou,c(v.value.description),1)])):V("",!0),_.value.length>0?(d(),p("div",Bu,[a("h3",Pu,c(e(n)("ai.lab.toolTest.parameters")),1),a("div",Nu,[(d(!0),p(ne,null,he(_.value,M=>(d(),p("div",{key:M.name,class:"flex flex-col gap-1"},[a("label",ju,[ee(c(M.name)+" ",1),M.required?(d(),p("span",Uu,"*")):V("",!0),M.type==="number"?(d(),p("span",Wu,"(number)")):V("",!0),M.isArray?(d(),p("span",Ku,"("+c(M.arrayItemType)+"[])",1)):V("",!0)]),M.enumValues?(d(),B(F,{key:0,modelValue:i.value[M.name],"onUpdate:modelValue":L=>i.value[M.name]=L,items:M.enumValues,placeholder:M.description,size:"sm"},null,8,["modelValue","onUpdate:modelValue","items","placeholder"])):(d(),B(E,{key:1,modelValue:i.value[M.name],"onUpdate:modelValue":L=>i.value[M.name]=L,placeholder:M.isArray?e(n)("ai.lab.toolTest.arrayPlaceholder"):M.defaultValue!==void 0?String(M.defaultValue):M.description,type:M.type==="number"?"number":"text",size:"sm"},null,8,["modelValue","onUpdate:modelValue","placeholder","type"]))]))),128))])])):V("",!0),a("div",Hu,[l.value?(d(),B(z,{key:1,color:"error",icon:"i-heroicons-stop",onClick:$},{default:D(()=>[ee(c(e(n)("ai.lab.toolTest.cancel")),1)]),_:1})):(d(),B(z,{key:0,color:"primary",disabled:!o.value,icon:"i-heroicons-play",onClick:C},{default:D(()=>[ee(c(e(n)("ai.lab.toolTest.execute")),1)]),_:1},8,["disabled"])),l.value?(d(),B(T,{key:2,name:"i-heroicons-arrow-path",class:"h-4 w-4 animate-spin text-gray-400"})):V("",!0),S.value!==null?(d(),p("span",Yu,c(e(n)("ai.lab.toolTest.elapsed",{ms:S.value})),1)):V("",!0)]),m.value||y.value?(d(),p("div",Qu,[a("h3",Gu,c(e(n)("ai.lab.toolTest.result")),1),y.value?(d(),p("div",Ju,c(y.value),1)):(d(),p(ne,{key:1},[h.value?(d(),p("div",Xu,c(e(n)("ai.lab.toolTest.truncated")),1)):V("",!0),a("pre",Zu,c(m.value),1)],64))])):V("",!0)])]),_:1})])}}}),td={class:"flex h-full flex-col"},ad={class:"min-h-0 flex-1 overflow-hidden"},sd=le({__name:"DebugTab",props:{sessionId:{}},setup(u){const{t:n}=Ce(),t=u,s=[{id:"sql-tables",label:n("analysis.debug.sqlTables"),icon:"i-heroicons-table-cells"},{id:"basic-tools",label:n("analysis.debug.basicTools"),icon:"i-heroicons-wrench-screwdriver"}],o=A("sql-tables");return(i,l)=>(d(),p("div",td,[f(e(ka),{modelValue:o.value,"onUpdate:modelValue":l[0]||(l[0]=r=>o.value=r),items:s,"persist-key":"debugTab"},null,8,["modelValue"]),a("div",ad,[f(Tt,{name:"fade",mode:"out-in"},{default:D(()=>[o.value==="sql-tables"?(d(),B(wu,{key:0,class:"h-full","session-id":t.sessionId},null,8,["session-id"])):o.value==="basic-tools"?(d(),B(ed,{key:1,class:"h-full","session-id":t.sessionId},null,8,["session-id"])):V("",!0)]),_:1})])]))}}),od=gt(sd,[["__scopeId","data-v-b3b3d1a4"]]),nd={class:"main-content flex h-full"},ld={class:"flex flex-1 flex-col overflow-hidden"},id={class:"flex flex-col border-b border-gray-200 bg-gray-50 p-4 dark:border-gray-800 dark:bg-page-dark"},rd={class:"mx-auto w-full max-w-3xl"},ud=["placeholder"],dd=["placeholder"],cd={class:"mt-1 flex items-center justify-between"},md={class:"flex items-center gap-2"},pd={key:0,class:"text-xs text-gray-400"},gd={class:"flex items-center gap-2"},fd={key:0,class:"ml-1 text-xs text-gray-400"},vd={key:0,class:"flex-1 overflow-auto p-4"},hd={class:"mb-2 flex items-center gap-1.5 text-sm font-medium text-gray-600 dark:text-gray-300"},yd={key:0,class:"text-gray-500"},xd={key:1,class:"text-pink-500"},bd=["open"],_d={class:"cursor-pointer select-none text-xs font-medium text-gray-500 dark:text-gray-400"},kd={key:1,class:"whitespace-pre-wrap break-all font-mono text-xs leading-5 text-gray-600 dark:text-gray-400"},wd={key:2,class:"font-mono text-xs text-gray-400"},Cd=le({__name:"SQLLabTab",props:{sessionId:{},chatType:{}},setup(u){const{t:n,locale:t}=Ce(),s=u,o=A(null),i=A(null);function l(R){return n(R==="group"?"ai.sqlLab.generate.defaultPromptGroup":"ai.sqlLab.generate.defaultPromptPrivate")}const r=A("SELECT * FROM message LIMIT 10"),m=A(l(s.chatType)),y=A("prompt"),h=A(!1),S=A(!1),x=A(null),I=A(null),w=A(""),v=A(""),_=A(""),k=A(!1),C=A(null),$=A(!1),g=A([]);function b(){try{const R=`sql-lab-history-${s.sessionId}`,J=localStorage.getItem(R);J&&(g.value=JSON.parse(J))}catch(R){console.error("加载历史记录失败:",R)}}function F(){try{const R=`sql-lab-history-${s.sessionId}`;localStorage.setItem(R,JSON.stringify(g.value))}catch(R){console.error("保存历史记录失败:",R)}}function E(R,J,fe){const X={id:`${Date.now()}-${Math.random().toString(36).slice(2,8)}`,prompt:R,sql:J,explanation:fe,timestamp:Date.now()};g.value.unshift(X),g.value.length>50&&(g.value=g.value.slice(0,50)),F()}function z(R){g.value=g.value.filter(J=>J.id!==R),F()}async function T(){if(!r.value.trim()){x.value=n("ai.sqlLab.editor.errorEmptySQL");return}h.value=!0,x.value=null,I.value=null,i.value?.resetSort();try{I.value=await Pe().executeSQL(s.sessionId,r.value)}catch(R){x.value=R.message||String(R)}finally{h.value=!1}}function M(R,J){(R.ctrlKey||R.metaKey)&&R.key==="Enter"&&(R.preventDefault(),J==="prompt"?se():T())}function L(R,J){r.value+=`${R}.${J}`}function N(){y.value=y.value==="prompt"?"sql":"prompt"}function U(R){const J=[];for(const fe of R){J.push(`### ${fe.name} (${va(fe.name,t.value)})`),J.push("| 列名 | 说明 | 类型 |"),J.push("|------|------|------|");for(const X of fe.columns){const W=X.pk?" (主键)":"";J.push(`| ${X.name} | ${Ma(fe.name,X.name,t.value)}${W} | ${X.type} |`)}J.push("")}return J.join(`
|
|
25
25
|
`)}function H(R,J){return`你是一个 SQLite 数据库专家。用户需要查询聊天记录数据库。
|
|
26
26
|
|
|
27
27
|
## 数据库结构
|
|
@@ -63,7 +63,7 @@ ${R}
|
|
|
63
63
|
1. 仅输出 JSON,不要有任何其他文字
|
|
64
64
|
2. SQL 中的查询结果限制在合理范围内(建议 LIMIT 100)
|
|
65
65
|
3. 确保 SQL 语法正确
|
|
66
|
-
4. 若用户需求包含多个分析目标,仅选择第一个目标生成 SQL`}function ie(R){let J=R.trim();J=J.replace(/^```json?\n?/i,"").replace(/\n?```$/i,"");try{const fe=JSON.parse(J);return{sql:(fe.sql||"").trim(),explanation:(fe.explanation||"").trim()}}catch{return J=J.replace(/^```sql?\n?/i,"").replace(/\n?```$/i,""),{sql:J.trim(),explanation:""}}}async function se(){const R=m.value.trim();if(!R){y.value=n("ai.sqlLab.generate.errorEmptyPrompt");return}if(!await ba().hasConfig()){y.value=n("common.errorNoAIConfig");return}const fe=s.value?.schema||[];if(fe.length===0){y.value=n("common.error.unknown");return}S.value=!0,I.value=null,y.value=null,v.value="",_.value="",k.value=!1;let X="";try{const W=H(R,fe),ae=await ds().chatStream([{role:"system",content:"你是一个 SQLite 专家,请以 JSON 格式输出 sql 和 explanation 字段。"},{role:"user",content:W}],{temperature:.1,maxTokens:4096},ue=>{if(ue.thinking!==void 0){ue.thinkingDone?k.value=!1:(k.value=!0,ue.thinking&&(_.value+=ue.thinking,Re(()=>{C.value&&(C.value.scrollTop=C.value.scrollHeight)})));return}ue.error&&(X=ue.error),ue.isFinished&&ue.finishReason==="length"&&(X=n("ai.sqlLab.generate.errorTokenLimit")),ue.content&&(v.value+=ue.content)});if(!ae.success){y.value=ae.error||X||n("ai.sqlLab.generate.errorGenerate");return}if(X){y.value=X;return}const O=ie(v.value);if(!O.sql){y.value=v.value?`${n("ai.sqlLab.generate.errorGenerate")}: ${v.value.slice(0,200)}`:n("ai.sqlLab.generate.errorGenerate");return}r.value=O.sql,w.value=R,E(R,O.sql,O.explanation),await T()}catch(W){y.value=W.message||String(W)}finally{S.value=!1}}async function P(R){r.value=R.sql,w.value=R.prompt,$.value=!1,await T()}return De(()=>{b()}),pe(()=>o.chatType,R=>{m.value=l(R)}),(R,J)=>{const fe=Se,X=Ne;return d(),p("div",nd,[f(e(Ki),{ref_key:"schemaPanelRef",ref:s,"session-id":u.sessionId,onInsertColumn:L},null,8,["session-id"]),a("div",ld,[a("div",id,[a("div",rd,[x.value==="prompt"?tt((d(),p("textarea",{key:0,"onUpdate:modelValue":J[0]||(J[0]=W=>m.value=W),class:"h-32 w-full resize-none rounded-2xl border-0 bg-white p-3 text-sm text-gray-800 shadow-[0_2px_14px_rgba(0,0,0,0.04)] outline-none ring-1 ring-gray-200/60 transition-all placeholder:text-gray-400 focus:ring-primary-500/40 focus:shadow-[0_4px_20px_rgba(0,0,0,0.08)] dark:bg-page-dark dark:text-gray-200 dark:ring-white/5 dark:placeholder:text-gray-500 dark:focus:ring-primary-500/40",placeholder:e(n)("ai.sqlLab.generate.placeholder"),spellcheck:"false",onKeydown:J[1]||(J[1]=W=>M(W,"prompt"))},null,40,ud)),[[Wt,m.value]]):tt((d(),p("textarea",{key:1,"onUpdate:modelValue":J[2]||(J[2]=W=>r.value=W),class:"h-32 w-full resize-none rounded-2xl border-0 bg-white p-3 font-mono text-sm text-gray-800 shadow-[0_2px_14px_rgba(0,0,0,0.04)] outline-none ring-1 ring-gray-200/60 transition-all placeholder:text-gray-400 focus:ring-primary-500/40 focus:shadow-[0_4px_20px_rgba(0,0,0,0.08)] dark:bg-page-dark dark:text-gray-200 dark:ring-white/5 dark:placeholder:text-gray-500 dark:focus:ring-primary-500/40",placeholder:e(n)("ai.sqlLab.editor.placeholder"),spellcheck:"false",onKeydown:J[3]||(J[3]=W=>M(W,"sql"))},null,40,dd)),[[Wt,r.value]]),a("div",cd,[a("div",md,[f(X,{variant:"ghost",size:"xs",onClick:N},{default:D(()=>[f(fe,{name:"i-heroicons-arrows-right-left",class:"mr-1 h-3.5 w-3.5"}),ee(" "+c(x.value==="prompt"?e(n)("ai.sqlLab.editor.switchToSQLMode"):e(n)("ai.sqlLab.editor.switchToPromptMode")),1)]),_:1}),x.value==="sql"?(d(),p("span",pd,c(e(n)("ai.sqlLab.editor.tip")),1)):V("",!0)]),a("div",gd,[f(X,{variant:"ghost",size:"sm",disabled:g.value.length===0,onClick:J[4]||(J[4]=W=>$.value=!0)},{default:D(()=>[f(fe,{name:"i-heroicons-clock",class:"mr-1 h-4 w-4"}),ee(" "+c(e(n)("ai.sqlLab.editor.history"))+" ",1),g.value.length>0?(d(),p("span",fd,"("+c(g.value.length)+")",1)):V("",!0)]),_:1},8,["disabled"]),x.value==="prompt"?(d(),B(X,{key:0,color:"primary",size:"sm",loading:S.value||h.value,disabled:!m.value.trim(),onClick:se},{default:D(()=>[f(fe,{name:"i-heroicons-sparkles",class:"mr-1 h-4 w-4"}),ee(" "+c(e(n)("ai.sqlLab.editor.generateAndRun")),1)]),_:1},8,["loading","disabled"])):(d(),B(X,{key:1,color:"primary",size:"sm",loading:h.value,onClick:T},{default:D(()=>[f(fe,{name:"i-heroicons-play",class:"mr-1 h-4 w-4"}),ee(" "+c(e(n)("ai.sqlLab.editor.run")),1)]),_:1},8,["loading"]))])])])]),x.value==="prompt"&&!I.value&&!y.value&&(v.value||_.value||S.value)?(d(),p("div",vd,[f(e(rt),{class:"mx-auto w-full max-w-3xl p-4"},{default:D(()=>[a("p",hd,[f(fe,{name:"i-heroicons-cpu-chip",class:"h-4 w-4"}),ee(" "+c(e(n)("ai.sqlLab.generate.aiOutput"))+" ",1),k.value?(d(),p("span",yd,c(e(n)("ai.sqlLab.generate.thinking")),1)):S.value?(d(),p("span",xd,c(e(n)("common.generating")),1)):V("",!0)]),_.value?(d(),p("details",{key:0,class:"mb-3",open:k.value},[a("summary",_d,c(e(n)("ai.sqlLab.generate.thinkingProcess")),1),a("pre",{ref_key:"thinkingPreRef",ref:C,class:"mt-1 max-h-48 overflow-auto whitespace-pre-wrap break-all rounded border border-gray-200 bg-gray-50 p-2 font-mono text-xs leading-5 text-gray-500 dark:border-gray-700 dark:bg-gray-800 dark:text-gray-400"},c(_.value),513)],8,bd)):V("",!0),v.value?(d(),p("pre",kd,c(v.value),1)):_.value?V("",!0):(d(),p("p",wd,c(e(n)("ai.sqlLab.generate.waitingAI")),1))]),_:1})])):(d(),B(e(Zr),{key:1,ref_key:"resultTableRef",ref:i,result:I.value,error:y.value,sql:r.value,prompt:w.value},null,8,["result","error","sql","prompt"]))]),f(e(ir),{open:$.value,"onUpdate:open":J[5]||(J[5]=W=>$.value=W),history:g.value,onExecute:P,onDelete:z},null,8,["open","history"])])}}}),$d={class:"flex h-full flex-col"},Sd={class:"min-h-0 flex-1 overflow-hidden"},Id=le({__name:"MoreTab",props:{sessionId:{},chatType:{}},setup(u){const n=u,{t}=Ce(),o=is(),s=Gt(),{debugMode:i}=bt(s),l=q(()=>{const x=[{id:"sql-lab",label:t("ai.tab.sqlLab"),icon:"i-heroicons-command-line"}];return i.value&&x.push({id:"debug",label:t("analysis.tabs.debug"),icon:"i-heroicons-bug-ant"}),x}),r=o.query.moreTab,m=A(typeof r=="string"&&l.value.some(x=>x.id===r)?r:"sql-lab");return pe(m,x=>{x==="sql-lab"&&Xa("feature_used",{feature_id:"sql_lab"})},{immediate:!0}),pe(i,x=>{!x&&m.value==="debug"&&(m.value="sql-lab")}),(x,h)=>(d(),p("div",$d,[f(e(_a),{modelValue:m.value,"onUpdate:modelValue":h[0]||(h[0]=S=>m.value=S),items:l.value,"persist-key":"moreTab"},null,8,["modelValue","items"]),a("div",Sd,[f(It,{name:"fade",mode:"out-in"},{default:D(()=>[m.value==="sql-lab"?(d(),B(Cd,{key:0,class:"h-full","session-id":n.sessionId,"chat-type":n.chatType},null,8,["session-id","chat-type"])):m.value==="debug"?(d(),B(e(od),{key:1,class:"h-full","session-id":n.sessionId},null,8,["session-id"])):V("",!0)]),_:1})])]))}}),jb=gt(Id,[["__scopeId","data-v-18ccef00"]]),Td={class:"flex h-full min-h-0 flex-col"},Md={class:"min-h-0 flex-1 overflow-hidden"},Ub=le({__name:"MemoryTab",props:{sessionId:{},sessionName:{}},setup(u){const{t:n}=Ce(),t=A("records"),o=q(()=>[{id:"records",label:n("analysis.memory.tabs.records"),icon:"i-heroicons-chat-bubble-left-right"}]);return(s,i)=>(d(),p("div",Td,[f(e(_a),{modelValue:t.value,"onUpdate:modelValue":i[0]||(i[0]=l=>t.value=l),items:o.value,"persist-key":"memoryTab"},null,8,["modelValue","items"]),a("div",Md,[t.value==="records"?(d(),B(e(Go),{key:u.sessionId,"session-id":u.sessionId,mode:"page","show-topics":!e(zo)},null,8,["session-id","show-topics"])):V("",!0)])]))}}),Ad={class:"writing-vertical text-xs"},qd={class:"flex items-center justify-between border-b border-gray-200 px-4 py-3 dark:border-gray-800"},zd={class:"flex items-center gap-2"},Dd={class:"font-medium text-gray-900 dark:text-white"},Ld={key:0,class:"border-b border-gray-200 px-4 py-2 dark:border-gray-800"},Ed={class:"flex flex-wrap items-center gap-2"},Vd={class:"text-xs text-gray-500"},Fd={class:"flex-1 overflow-y-auto"},Rd={key:0,class:"flex items-center justify-center py-8"},Od={key:1,class:"flex flex-col items-center justify-center py-8 text-center"},Bd={class:"mt-2 text-sm text-gray-500"},Pd={class:"text-xs text-gray-400"},Nd={key:2,class:"divide-y divide-gray-100 dark:divide-gray-800"},jd={class:"mb-1 flex items-center justify-between"},Ud={class:"text-sm font-medium text-gray-900 dark:text-white"},Wd={class:"text-xs text-gray-400"},Kd=["innerHTML"],Hd={key:1,class:"border-t border-gray-200 px-4 py-2 dark:border-gray-800"},Yd={class:"text-xs text-gray-500"},Qd={key:2,class:"pointer-events-none absolute inset-0 overflow-hidden rounded-xl opacity-[0.03]"},Gd=le({__name:"DataSourcePanel",props:{messages:{},keywords:{},isLoading:{type:Boolean},isCollapsed:{type:Boolean}},emits:["toggle"],setup(u,{emit:n}){const{t}=Ce(),o=u,s=n;function i(r){return Ve(r).format("MM-DD HH:mm")}function l(r){if(!o.keywords.length)return r;const m=o.keywords.join("|"),x=new RegExp(`(${m})`,"gi");return r.replace(x,'<mark class="bg-yellow-200 dark:bg-yellow-800/50 px-0.5 rounded">$1</mark>')}return(r,m)=>{const x=Se,h=Ne;return d(),p("div",{class:Z(["relative flex flex-col rounded-xl bg-white transition-all duration-300 dark:bg-page-dark",[u.isCollapsed?"w-12":"w-full"]])},[u.isCollapsed?(d(),p("button",{key:0,class:"flex h-full flex-col items-center justify-center gap-2 text-gray-500 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-200",onClick:m[0]||(m[0]=S=>s("toggle"))},[f(x,{name:"i-heroicons-chevron-left",class:"h-5 w-5"}),a("span",Ad,c(e(t)("ai.chat.dataSource.title")),1)])):(d(),p(ne,{key:1},[a("div",qd,[a("div",zd,[f(x,{name:"i-heroicons-document-magnifying-glass",class:"h-5 w-5 text-gray-500"}),a("span",Dd,c(e(t)("ai.chat.dataSource.title")),1)]),f(h,{icon:"i-heroicons-chevron-right",color:"gray",variant:"ghost",size:"xs",onClick:m[1]||(m[1]=S=>s("toggle"))})]),u.keywords.length>0?(d(),p("div",Ld,[a("div",Ed,[a("span",Vd,c(e(t)("ai.chat.dataSource.keywords")),1),(d(!0),p(ne,null,he(u.keywords,S=>(d(),p("span",{key:S,class:"rounded-full bg-violet-100 px-2 py-0.5 text-xs text-violet-700 dark:bg-violet-900/30 dark:text-violet-400"},c(S),1))),128))])])):V("",!0),a("div",Fd,[u.isLoading?(d(),p("div",Rd,[f(x,{name:"i-heroicons-arrow-path",class:"h-6 w-6 animate-spin text-gray-400"})])):u.messages.length===0?(d(),p("div",Od,[f(x,{name:"i-heroicons-inbox",class:"h-10 w-10 text-gray-300 dark:text-gray-600"}),a("p",Bd,c(e(t)("ai.chat.dataSource.empty")),1),a("p",Pd,c(e(t)("ai.chat.dataSource.emptyHint")),1)])):(d(),p("div",Nd,[(d(!0),p(ne,null,he(u.messages,S=>(d(),p("div",{key:S.id,class:"px-4 py-3 transition-colors hover:bg-gray-50 dark:hover:bg-gray-800/50"},[a("div",jd,[a("span",Ud,c(S.senderName),1),a("span",Wd,c(i(S.timestamp)),1)]),a("p",{class:"line-clamp-3 text-sm text-gray-600 dark:text-gray-400",innerHTML:l(S.content)},null,8,Kd)]))),128))]))]),u.messages.length>0?(d(),p("div",Hd,[a("span",Yd,c(e(t)("ai.chat.dataSource.totalRecords",{count:u.messages.length})),1)])):V("",!0)],64)),u.isCollapsed?V("",!0):(d(),p("div",Qd,[...m[2]||(m[2]=[a("div",{class:"data-flow-bg absolute inset-0"},null,-1)])]))],2)}}}),Jd=gt(Gd,[["__scopeId","data-v-44b91893"]]),Xd={class:"assistant-bar-wrapper flex justify-center"},Zd=["onClick"],ec={key:0,class:"absolute right-0 top-full z-30 mt-2 w-56 overflow-hidden rounded-xl border border-gray-200/80 bg-white/95 p-1 shadow-overlay backdrop-blur-md dark:border-gray-700 dark:bg-page-dark/95"},tc={class:"custom-scrollbar max-h-60 space-y-0.5 overflow-y-auto"},ac=["onClick"],sc={class:"truncate font-medium"},Rt=4,oc=le({__name:"AssistantInlineBar",props:{chatType:{},locale:{},selectedId:{}},emits:["select","market"],setup(u,{emit:n}){const t=u,o=n,s=A(!1),i=A(null);function l(g){o("select",g),s.value=!1}function r(){w.value.length!==0&&(s.value=!s.value)}function m(g){if(!s.value||!i.value)return;const b=g.target;b instanceof Node&&!i.value.contains(b)&&(s.value=!1)}const x=Dt(),{filteredAssistants:h,isLoaded:S}=bt(x),y=q(()=>{const g=Do(t.locale);return[...h.value].sort((b,F)=>b.id===g?-1:F.id===g?1:0)}),I=q(()=>{const g=y.value;if(g.length<=Rt)return g;const b=g.findIndex(F=>F.id===t.selectedId);if(b!==-1&&b>=Rt-1){const F=g.slice(0,Rt-1),E=g[b];return[...F,E]}return g.slice(0,Rt)}),w=q(()=>{const g=new Set(I.value.map(b=>b.id));return y.value.filter(b=>!g.has(b.id))});pe(()=>[t.chatType,t.locale],([g,b])=>{x.setFilterContext(g,b)},{immediate:!0});const v=A([]),_=A(null);let k=null;const C=A({width:"0px",transform:"translateX(0px)",opacity:0}),$=async()=>{await Re();const g=I.value.findIndex(b=>b.id===t.selectedId);if(g!==-1&&v.value[g]){const b=v.value[g];C.value={width:`${b.offsetWidth+6}px`,transform:`translateX(${b.offsetLeft-3}px)`,opacity:1}}else C.value.opacity=0};return pe(()=>[t.selectedId,I.value],()=>{$()},{deep:!0}),De(async()=>{S.value||await x.loadAssistants(),$(),document.addEventListener("mousedown",m),typeof ResizeObserver<"u"&&_.value&&(k=new ResizeObserver(()=>{$()}),k.observe(_.value))}),Je(()=>{document.removeEventListener("mousedown",m),k&&k.disconnect()}),(g,b)=>{const F=Se;return d(),p("div",Xd,[a("div",{ref_key:"containerRef",ref:_,class:"assistant-bar-grid relative flex items-center justify-center gap-1.5 rounded-full bg-gray-50/60 p-[3px] shadow-inner ring-1 ring-inset ring-gray-900/5 backdrop-blur-md dark:bg-gray-800/40 dark:ring-white/10 z-0 overflow-hidden sm:overflow-visible"},[a("div",{class:"absolute left-0 inset-y-0 -z-10 rounded-full bg-white ring-[1.5px] ring-primary-500 shadow-sm transition-all duration-350 ease-out dark:bg-primary-700/15 dark:ring-primary-500",style:et(C.value)},null,4),(d(!0),p(ne,null,he(I.value,(E,z)=>(d(),p("button",{key:E.id,ref_for:!0,ref:T=>{T&&(v.value[z]=T)},class:Z(["relative z-10 flex h-[32px] items-center justify-center whitespace-nowrap rounded-full px-4 text-[13px] font-medium transition-colors duration-200",[u.selectedId===E.id?"text-primary-600 dark:text-primary-400":"text-gray-500 hover:bg-gray-200/50 hover:text-gray-800 dark:text-gray-400 dark:hover:bg-gray-700/50 dark:hover:text-gray-200"]]),onClick:T=>o("select",E.id)},c(E.name),11,Zd))),128)),w.value.length>0?(d(),p("div",{key:0,ref_key:"overflowMenuRef",ref:i,class:"relative z-20"},[a("button",{type:"button",class:"relative z-10 flex h-[32px] w-[32px] ml-0.5 items-center justify-center rounded-full text-gray-500 transition-colors duration-200 hover:bg-gray-200/50 hover:text-gray-800 dark:text-gray-400 dark:hover:bg-gray-700/50 dark:hover:text-gray-200",onClick:r},[f(F,{name:"i-heroicons-ellipsis-horizontal",class:"h-5 w-5"})]),s.value?(d(),p("div",ec,[a("div",tc,[b[1]||(b[1]=a("p",{class:"px-2 py-1.5 text-[11px] font-semibold uppercase tracking-wider text-gray-400 dark:text-gray-500"}," 更多助手 ",-1)),(d(!0),p(ne,null,he(w.value,E=>(d(),p("button",{key:E.id,type:"button",class:Z(["flex w-full items-center justify-between rounded-md px-2.5 py-1.5 text-left text-sm transition-colors",[u.selectedId===E.id?"bg-primary-50 text-primary-600 dark:bg-primary-500/10 dark:text-primary-400":"text-gray-700 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-gray-800"]]),onClick:z=>l(E.id)},[a("span",sc,c(E.name),1),u.selectedId===E.id?(d(),B(F,{key:0,name:"i-heroicons-check",class:"h-4 w-4 shrink-0"})):V("",!0)],10,ac))),128))])])):V("",!0)],512)):V("",!0),a("button",{type:"button",class:"relative z-10 flex h-[32px] w-[32px] items-center justify-center rounded-full text-gray-500 transition-colors duration-200 hover:bg-gray-200/50 hover:text-gray-800 dark:text-gray-400 dark:hover:bg-gray-700/50 dark:hover:text-gray-200",onClick:b[0]||(b[0]=E=>o("market"))},[f(F,{name:"i-heroicons-plus",class:"h-[18px] w-[18px]"})])],512)])}}}),nc=gt(oc,[["__scopeId","data-v-169115ce"]]),lc={class:"p-6"},ic={class:"mb-4 flex items-start justify-between gap-3"},rc={class:"min-w-0"},uc={class:"text-lg font-semibold text-gray-900 dark:text-white"},dc={key:0,class:"mt-1 text-xs text-amber-600 dark:text-amber-400"},cc={key:0,class:"flex items-center justify-center py-12"},mc={class:"mb-4 flex gap-1 rounded-lg bg-gray-100 p-1 dark:bg-gray-800"},pc={key:0,class:"ml-1 inline-flex h-4 min-w-4 items-center justify-center rounded-full bg-primary-100 px-1 text-[10px] text-primary-600 dark:bg-primary-900/30 dark:text-primary-400"},gc={class:"max-h-[500px] overflow-y-auto pr-1"},fc={class:"space-y-5"},vc={class:"mb-1.5 block text-sm font-medium text-gray-700 dark:text-gray-300"},hc={class:"mb-1.5 block text-sm font-medium text-gray-700 dark:text-gray-300"},yc={class:"mb-1.5 block text-sm font-medium text-gray-700 dark:text-gray-300"},xc={class:"flex flex-wrap gap-2"},bc=["disabled","onClick"],_c={class:"mb-1.5 block text-sm font-medium text-gray-700 dark:text-gray-300"},kc={class:"flex flex-wrap gap-2"},wc=["disabled","onClick"],Cc={class:"mt-1 text-[10px] text-gray-400"},$c={class:"mb-1.5 block text-sm font-medium text-gray-700 dark:text-gray-300"},Sc={class:"space-y-2"},Ic={key:0,class:"flex items-center gap-2"},Tc={class:"space-y-5"},Mc={class:"mb-1 text-sm font-medium text-gray-700 dark:text-gray-300"},Ac={class:"mb-2.5 text-[10px] text-gray-400"},qc={class:"grid grid-cols-2 gap-1.5"},zc={class:"min-w-0"},Dc={class:"truncate text-xs font-medium text-gray-600 dark:text-gray-400"},Lc={class:"truncate text-[10px] text-gray-400 dark:text-gray-500"},Ec={class:"mb-1 flex items-center justify-between"},Vc={class:"text-sm font-medium text-gray-700 dark:text-gray-300"},Fc={key:0,class:"flex gap-2"},Rc={class:"mb-2.5 text-[10px] text-gray-400"},Oc={class:"grid grid-cols-2 gap-1.5"},Bc=["checked","disabled","onChange"],Pc={class:"min-w-0"},Nc={class:"truncate text-xs font-medium text-gray-800 dark:text-gray-200"},jc={class:"truncate text-[10px] text-gray-500 dark:text-gray-400"},Uc={class:"mt-6 flex items-center justify-between"},Wc={class:"flex gap-2"},Kc=le({__name:"AssistantConfigModal",props:{open:{type:Boolean},assistantId:{},readonly:{type:Boolean},scrollToSection:{}},emits:["update:open","saved","created"],setup(u,{emit:n}){const{t}=Ce(),o=u,s=n,i=_t(),l=Dt(),r=A(!1),m=A(!1),x=A(null),h=A(!1),S=A("basic"),y=q(()=>[{value:"",label:t("ai.assistant.config.chatTypeAll")},{value:"group",label:t("ai.assistant.config.chatTypeGroup")},{value:"private",label:t("ai.assistant.config.chatTypePrivate")}]),I=[{value:"zh",label:"简体中文"},{value:"en",label:"English"},{value:"ja",label:"日本語"}],w=q(()=>l.builtinToolCatalog.filter(P=>P.category==="core").map(P=>({name:P.name,description:t(`ai.assistant.builtinToolDesc.${P.name}`)}))),v=q(()=>l.builtinToolCatalog.filter(P=>P.category==="analysis").map(P=>({name:P.name,description:t(`ai.assistant.builtinToolDesc.${P.name}`)}))),_=A({name:"",systemPrompt:"",presetQuestions:[],applicableChatType:"",supportedLocales:[],allowedBuiltinTools:[]}),k=A(""),C=A(null),$=q(()=>_.value.allowedBuiltinTools.length);De(async()=>{l.builtinToolCatalog.length===0&&await l.loadBuiltinToolCatalog()}),pe(()=>[o.open,o.assistantId],async([P,R])=>{P&&(S.value="basic",R?(h.value=!1,await b(R)):o.readonly||(h.value=!0,g()),o.scrollToSection==="presetQuestions"&&(await Re(),setTimeout(()=>{C.value?.scrollIntoView({behavior:"smooth",block:"center"})},100)))},{immediate:!0});function g(){x.value={id:"",name:"",systemPrompt:"",presetQuestions:[],allowedBuiltinTools:[],applicableChatTypes:[],supportedLocales:[]},_.value={name:"",systemPrompt:"",presetQuestions:[],applicableChatType:"",supportedLocales:[],allowedBuiltinTools:[]},r.value=!1}async function b(P){r.value=!0;try{x.value=await l.getAssistantConfig(P),x.value&&(_.value={name:x.value.name,systemPrompt:x.value.systemPrompt,presetQuestions:[...x.value.presetQuestions],applicableChatType:x.value.applicableChatTypes?.[0]||"",supportedLocales:[...x.value.supportedLocales||[]],allowedBuiltinTools:[...x.value.allowedBuiltinTools||[]]})}catch(R){console.error("[AssistantConfigModal] Failed to load config:",R),i.fail(t("ai.assistant.toast.loadFailed"),{description:String(R)})}finally{r.value=!1}}async function F(){m.value=!0;try{const P={name:_.value.name,systemPrompt:_.value.systemPrompt,presetQuestions:[..._.value.presetQuestions],applicableChatTypes:_.value.applicableChatType?[_.value.applicableChatType]:[],supportedLocales:[..._.value.supportedLocales],allowedBuiltinTools:[..._.value.allowedBuiltinTools]};if(h.value){const R=await l.createAssistant(P);R.success?(i.success(t("ai.assistant.toast.createSuccess")),s("created",R.id),se()):i.fail(t("ai.assistant.toast.createFailed"),{description:R.error||t("ai.assistant.toast.unknownError")})}else{if(!o.assistantId)return;const R=await l.updateAssistant(o.assistantId,P);R.success?(i.success(t("ai.assistant.toast.saveSuccess")),s("saved"),se()):i.fail(t("ai.assistant.toast.saveFailed"),{description:R.error||t("ai.assistant.toast.unknownError")})}}catch(P){console.error("[AssistantConfigModal] Save failed:",P),i.fail(t("ai.assistant.toast.saveFailed"),{description:String(P)})}finally{m.value=!1}}async function E(){if(!(!o.assistantId||!x.value?.builtinId)){m.value=!0;try{const P=await l.resetAssistant(o.assistantId);P.success?(i.success(t("ai.assistant.toast.resetSuccess")),await b(o.assistantId),s("saved")):i.fail(t("ai.assistant.toast.resetFailed"),{description:P.error||t("ai.assistant.toast.unknownError")})}catch(P){i.fail(t("ai.assistant.toast.resetFailed"),{description:String(P)})}finally{m.value=!1}}}function z(){const P=k.value.trim();P&&!_.value.presetQuestions.includes(P)&&(_.value.presetQuestions.push(P),k.value="")}function T(P){_.value.presetQuestions.splice(P,1)}function M(P){const R=_.value.allowedBuiltinTools.indexOf(P);R>=0?_.value.allowedBuiltinTools.splice(R,1):_.value.allowedBuiltinTools.push(P)}function L(P){return _.value.allowedBuiltinTools.includes(P)}function N(){_.value.allowedBuiltinTools=v.value.map(P=>P.name)}function U(){_.value.allowedBuiltinTools=[]}function H(P){_.value.applicableChatType=P}function ie(P){const R=_.value.supportedLocales.indexOf(P);R>=0?_.value.supportedLocales.splice(R,1):_.value.supportedLocales.push(P)}function se(){s("update:open",!1)}return(P,R)=>{const J=Ne,fe=Se,X=qt,W=tn,ae=Xe;return d(),B(ae,{open:u.open,ui:{content:"sm:max-w-2xl z-100"},"onUpdate:open":R[5]||(R[5]=O=>s("update:open",O))},{content:D(()=>[a("div",lc,[a("div",ic,[a("div",rc,[a("h2",uc,c(u.readonly?e(t)("ai.assistant.config.viewTitle"):h.value?e(t)("ai.assistant.config.createTitle"):e(t)("ai.assistant.config.editTitle")),1),u.readonly?V("",!0):(d(),p("p",dc,c(e(t)("ai.assistant.config.betaWarning")),1))]),f(J,{icon:"i-heroicons-x-mark",variant:"ghost",size:"sm",class:"shrink-0",onClick:se})]),r.value?(d(),p("div",cc,[f(fe,{name:"i-heroicons-arrow-path",class:"h-6 w-6 animate-spin text-gray-400"})])):x.value?(d(),p(ne,{key:1},[a("div",mc,[a("button",{class:Z(["flex-1 rounded-md px-3 py-1.5 text-xs font-medium transition-colors",S.value==="basic"?"bg-white text-gray-900 shadow-sm dark:bg-gray-700 dark:text-white":"text-gray-500 hover:text-gray-700 dark:text-gray-400"]),onClick:R[0]||(R[0]=O=>S.value="basic")},c(e(t)("ai.assistant.config.tabs.basic")),3),a("button",{class:Z(["flex-1 rounded-md px-3 py-1.5 text-xs font-medium transition-colors",S.value==="tools"?"bg-white text-gray-900 shadow-sm dark:bg-gray-700 dark:text-white":"text-gray-500 hover:text-gray-700 dark:text-gray-400"]),onClick:R[1]||(R[1]=O=>S.value="tools")},[ee(c(e(t)("ai.assistant.config.tabs.tools"))+" ",1),$.value>0?(d(),p("span",pc,c($.value),1)):V("",!0)],2)]),a("div",gc,[tt(a("div",fc,[a("div",null,[a("label",vc,c(e(t)("ai.assistant.config.name")),1),f(X,{modelValue:_.value.name,"onUpdate:modelValue":R[2]||(R[2]=O=>_.value.name=O),class:"w-full",disabled:u.readonly},null,8,["modelValue","disabled"])]),a("div",null,[a("label",hc,c(e(t)("ai.assistant.config.systemPrompt")),1),f(W,{modelValue:_.value.systemPrompt,"onUpdate:modelValue":R[3]||(R[3]=O=>_.value.systemPrompt=O),rows:5,autoresize:"",class:"w-full font-mono text-sm",disabled:u.readonly},null,8,["modelValue","disabled"])]),a("div",null,[a("label",yc,c(e(t)("ai.assistant.config.chatType")),1),a("div",xc,[(d(!0),p(ne,null,he(y.value,O=>(d(),p("button",{key:O.value,type:"button",class:Z(["rounded-lg border px-3 py-1.5 text-xs transition-colors",_.value.applicableChatType===O.value?"border-primary-500 bg-primary-50 text-primary-700 dark:border-primary-400 dark:bg-primary-950/30 dark:text-primary-300":"border-gray-200 text-gray-600 hover:border-gray-300 dark:border-gray-700 dark:text-gray-400"]),disabled:u.readonly,onClick:ue=>H(O.value)},c(O.label),11,bc))),128))])]),a("div",null,[a("label",_c,c(e(t)("ai.assistant.config.locale")),1),a("div",kc,[(d(),p(ne,null,he(I,O=>a("button",{key:O.value,type:"button",class:Z(["rounded-lg border px-3 py-1.5 text-xs transition-colors",_.value.supportedLocales.includes(O.value)?"border-primary-500 bg-primary-50 text-primary-700 dark:border-primary-400 dark:bg-primary-950/30 dark:text-primary-300":"border-gray-200 text-gray-600 hover:border-gray-300 dark:border-gray-700 dark:text-gray-400"]),disabled:u.readonly,onClick:ue=>ie(O.value)},c(O.label),11,wc)),64))]),a("p",Cc,c(e(t)("ai.assistant.config.localeHint")),1)]),a("div",{ref_key:"presetQuestionsRef",ref:C},[a("label",$c,c(e(t)("ai.assistant.config.presetQuestions")),1),a("div",Sc,[(d(!0),p(ne,null,he(_.value.presetQuestions,(O,ue)=>(d(),p("div",{key:ue,class:"flex items-center gap-2"},[f(X,{modelValue:_.value.presetQuestions[ue],"onUpdate:modelValue":we=>_.value.presetQuestions[ue]=we,class:"min-w-0 flex-1",size:"sm",disabled:u.readonly},null,8,["modelValue","onUpdate:modelValue","disabled"]),u.readonly?V("",!0):(d(),B(J,{key:0,color:"error",variant:"ghost",icon:"i-heroicons-trash",size:"xs",class:"shrink-0",onClick:we=>T(ue)},null,8,["onClick"]))]))),128)),u.readonly?V("",!0):(d(),p("div",Ic,[f(X,{modelValue:k.value,"onUpdate:modelValue":R[4]||(R[4]=O=>k.value=O),placeholder:e(t)("ai.assistant.config.addQuestion"),class:"min-w-0 flex-1",size:"sm",onKeyup:Ze(z,["enter"])},null,8,["modelValue","placeholder"]),f(J,{color:"primary",variant:"soft",icon:"i-heroicons-plus",size:"xs",class:"shrink-0",onClick:z})]))])],512)],512),[[yt,S.value==="basic"]]),tt(a("div",Tc,[a("div",null,[a("h3",Mc,c(e(t)("ai.assistant.config.coreTools")),1),a("p",Ac,c(e(t)("ai.assistant.config.coreToolsHint")),1),a("div",qc,[(d(!0),p(ne,null,he(w.value,O=>(d(),p("label",{key:O.name,class:"flex items-start gap-2 rounded-md border border-gray-200 bg-gray-50/50 px-2.5 py-2 opacity-70 dark:border-gray-700 dark:bg-gray-800/30"},[R[6]||(R[6]=a("input",{type:"checkbox",checked:"",disabled:"",class:"mt-0.5 h-3.5 w-3.5 shrink-0 rounded border-gray-300 text-gray-400"},null,-1)),a("div",zc,[a("div",Dc,c(O.name),1),a("div",Lc,c(O.description),1)])]))),128))])]),a("div",null,[a("div",Ec,[a("h3",Vc,c(e(t)("ai.assistant.config.analysisTools")),1),u.readonly?V("",!0):(d(),p("div",Fc,[a("button",{class:"text-[10px] text-primary-500 hover:text-primary-600",onClick:N},c(e(t)("ai.assistant.config.selectAll")),1),R[7]||(R[7]=a("span",{class:"text-[10px] text-gray-300 dark:text-gray-600"},"|",-1)),a("button",{class:"text-[10px] text-primary-500 hover:text-primary-600",onClick:U},c(e(t)("ai.assistant.config.deselectAll")),1)]))]),a("p",Rc,c(e(t)("ai.assistant.config.analysisToolsHint")),1),a("div",Oc,[(d(!0),p(ne,null,he(v.value,O=>(d(),p("label",{key:O.name,class:Z(["flex cursor-pointer items-start gap-2 rounded-md border px-2.5 py-2 transition-colors",L(O.name)?"border-primary-200 bg-primary-50/50 dark:border-primary-800 dark:bg-primary-950/20":"border-gray-200 dark:border-gray-700"])},[a("input",{type:"checkbox",checked:L(O.name),disabled:u.readonly,class:"mt-0.5 h-3.5 w-3.5 shrink-0 rounded border-gray-300 text-primary-600 focus:ring-primary-500",onChange:ue=>M(O.name)},null,40,Bc),a("div",Pc,[a("div",Nc,c(O.name),1),a("div",jc,c(O.description),1)])],2))),128))])])],512),[[yt,S.value==="tools"]])]),a("div",Uc,[a("div",null,[!u.readonly&&!h.value&&x.value?.builtinId?(d(),B(J,{key:0,variant:"outline",color:"warning",loading:m.value,onClick:E},{default:D(()=>[ee(c(e(t)("ai.assistant.config.resetDefault")),1)]),_:1},8,["loading"])):V("",!0)]),a("div",Wc,[f(J,{variant:"ghost",onClick:se},{default:D(()=>[ee(c(u.readonly?e(t)("common.close"):e(t)("common.cancel")),1)]),_:1}),u.readonly?V("",!0):(d(),B(J,{key:0,color:"primary",loading:m.value,onClick:F},{default:D(()=>[ee(c(h.value?e(t)("ai.assistant.config.create"):e(t)("common.save")),1)]),_:1},8,["loading"]))])])],64)):V("",!0)])]),_:1},8,["open"])}}}),Hc={class:"p-6"},Yc={class:"mb-4 flex items-center justify-between"},Qc={class:"text-lg font-bold text-gray-900 dark:text-gray-100"},Gc={class:"mb-4 flex gap-1 rounded-lg bg-gray-100 p-1 dark:bg-gray-800"},Jc={key:0,class:"ml-1 inline-flex h-4 min-w-4 items-center justify-center rounded-full bg-primary-100 px-1 text-[10px] text-primary-600 dark:bg-primary-900/30 dark:text-primary-400"},Xc={class:"mb-3 text-xs text-gray-500 dark:text-gray-400"},Zc={class:"max-h-[400px] space-y-3 overflow-y-auto pr-1"},em={class:"min-w-0 flex-1"},tm={class:"flex items-center gap-2"},am={class:"text-sm font-semibold text-gray-900 dark:text-gray-100"},sm={key:0,class:"inline-flex shrink-0 items-center rounded-full bg-blue-100 px-2 py-0.5 text-[10px] font-medium text-blue-700 dark:bg-blue-900/30 dark:text-blue-400"},om={key:1,class:"inline-flex shrink-0 items-center rounded-full bg-green-100 px-2 py-0.5 text-[10px] font-medium text-green-700 dark:bg-green-900/30 dark:text-green-400"},nm={class:"mt-1 line-clamp-1 text-xs text-gray-500 dark:text-gray-400"},lm={class:"flex shrink-0 items-center gap-1.5"},im=["title","onClick"],rm=["title","onClick"],um=["title","onClick"],dm={key:0,class:"py-12 text-center text-sm text-gray-400"},cm={class:"mb-3 text-xs text-gray-500 dark:text-gray-400"},mm={key:0,class:"py-12 text-center text-sm text-gray-400"},pm={key:1,class:"py-12 text-center"},gm={class:"text-sm text-gray-500 dark:text-gray-400"},fm={key:2,class:"max-h-[400px] space-y-3 overflow-y-auto pr-1"},vm={class:"min-w-0 flex-1"},hm={class:"flex items-center gap-2"},ym={class:"text-sm font-semibold text-gray-900 dark:text-gray-100"},xm={key:0,class:"inline-flex shrink-0 items-center rounded-full bg-blue-100 px-2 py-0.5 text-[10px] font-medium text-blue-700 dark:bg-blue-900/30 dark:text-blue-400"},bm={key:1,class:"inline-flex shrink-0 items-center rounded-full bg-green-100 px-2 py-0.5 text-[10px] font-medium text-green-700 dark:bg-green-900/30 dark:text-green-400"},_m={class:"mt-1 line-clamp-1 text-xs text-gray-500 dark:text-gray-400"},km={class:"flex shrink-0 items-center gap-2"},wm=["disabled","onClick"],Cm={class:"px-3 py-1.5 text-xs font-medium text-gray-400 dark:text-gray-500"},$m=["disabled","onClick"],Sm=["title","onClick"],Im={key:3,class:"py-12 text-center text-sm text-gray-400"},Tm=le({__name:"AssistantMarketModal",props:{open:{type:Boolean}},emits:["update:open","configure","view-config","create"],setup(u,{emit:n}){const{t,locale:o}=Ce(),s=_t(),i=u,l=n,r=Dt(),{assistants:m,cloudCatalogWithStatus:x,cloudLoading:h,cloudError:S}=bt(r),y=A("local"),I=q(()=>{const T=o.value;return[...m.value].filter(M=>!M.supportedLocales?.length||M.supportedLocales.some(L=>T.startsWith(L))).sort((M,L)=>M.name.localeCompare(L.name))}),w=q(()=>[...x.value].sort((T,M)=>T.name.localeCompare(M.name))),v=A(new Set);pe(()=>[i.open,y.value],([T,M])=>{T&&M==="market"&&r.fetchCloudCatalog(o.value)},{immediate:!0});function _(T){l("configure",T)}async function k(T){Vt(T)||await r.deleteAssistant(T)}async function C(T){await r.duplicateAssistant(T)}function $(){l("create")}async function g(T){if(!v.value.has(T.id)){v.value=new Set([...v.value,T.id]);try{const M=await r.importFromCloud(T);M.success?s.success(t("ai.assistant.market.importSuccess")):s.fail(t("ai.assistant.market.importFailed"),{description:M.error})}finally{const M=new Set(v.value);M.delete(T.id),v.value=M}}}async function b(T){if(!v.value.has(T.id)){v.value=new Set([...v.value,T.id]);try{const M=await r.deleteAssistant(T.id);if(!M.success){s.fail(t("ai.assistant.market.importFailed"),{description:M.error});return}const L=await r.importFromCloud(T);L.success?s.success(t("ai.assistant.market.importSuccess")):s.fail(t("ai.assistant.market.importFailed"),{description:L.error})}finally{const M=new Set(v.value);M.delete(T.id),v.value=M}}}function F(T){l("view-config",T)}function E(){r.fetchCloudCatalog(o.value)}function z(T){return T?.length?T.map(L=>t(L==="group"?"ai.assistant.config.chatTypeGroup":"ai.assistant.config.chatTypePrivate")).join(" / "):null}return(T,M)=>{const L=Se,N=Xe;return d(),B(N,{open:u.open,ui:{content:"sm:max-w-xl z-50"},"onUpdate:open":M[3]||(M[3]=U=>l("update:open",U))},{content:D(()=>[a("div",Hc,[a("div",Yc,[a("h2",Qc,c(e(t)("ai.assistant.market.title")),1),a("button",{class:"rounded-lg p-1.5 text-gray-400 transition-colors hover:bg-gray-100 hover:text-gray-600 dark:hover:bg-gray-800 dark:hover:text-gray-300",onClick:M[0]||(M[0]=U=>l("update:open",!1))},[f(L,{name:"i-heroicons-x-mark",class:"h-5 w-5"})])]),a("div",Gc,[a("button",{class:Z(["flex-1 rounded-md px-3 py-1.5 text-xs font-medium transition-colors",y.value==="local"?"bg-white text-gray-900 shadow-sm dark:bg-gray-700 dark:text-white":"text-gray-500 hover:text-gray-700 dark:text-gray-400"]),onClick:M[1]||(M[1]=U=>y.value="local")},[ee(c(e(t)("ai.assistant.market.tabs.local"))+" ",1),I.value.length?(d(),p("span",Jc,c(I.value.length),1)):V("",!0)],2),a("button",{class:Z(["flex-1 rounded-md px-3 py-1.5 text-xs font-medium transition-colors",y.value==="market"?"bg-white text-gray-900 shadow-sm dark:bg-gray-700 dark:text-white":"text-gray-500 hover:text-gray-700 dark:text-gray-400"]),onClick:M[2]||(M[2]=U=>y.value="market")},c(e(t)("ai.assistant.market.tabs.market")),3)]),tt(a("div",null,[a("p",Xc,c(e(t)("ai.assistant.market.localHint")),1),a("div",Zc,[(d(!0),p(ne,null,he(I.value,U=>(d(),p("div",{key:U.id,class:"flex items-center gap-4 rounded-xl border border-gray-200 bg-white p-4 transition-colors dark:border-gray-700 dark:bg-gray-800"},[a("div",em,[a("div",tm,[a("h3",am,c(U.name),1),z(U.applicableChatTypes)?(d(),p("span",sm,c(z(U.applicableChatTypes)),1)):V("",!0),e(Vt)(U.id)?(d(),p("span",om,c(e(t)("ai.assistant.market.default")),1)):V("",!0)]),a("p",nm,c(U.systemPrompt),1)]),a("div",lm,[a("button",{class:"rounded-lg p-1.5 text-gray-400 transition-colors hover:bg-gray-100 hover:text-gray-600 dark:hover:bg-gray-700 dark:hover:text-gray-300",title:e(t)("common.edit"),onClick:Oe(H=>_(U.id),["stop"])},[f(L,{name:"i-heroicons-pencil-square",class:"h-4 w-4"})],8,im),a("button",{class:"rounded-lg p-1.5 text-gray-400 transition-colors hover:bg-gray-100 hover:text-gray-600 dark:hover:bg-gray-700 dark:hover:text-gray-300",title:e(t)("ai.assistant.market.duplicate"),onClick:Oe(H=>C(U.id),["stop"])},[f(L,{name:"i-heroicons-document-duplicate",class:"h-4 w-4"})],8,rm),e(Vt)(U.id)?V("",!0):(d(),p("button",{key:0,class:"rounded-lg p-1.5 text-gray-400 transition-colors hover:bg-red-50 hover:text-red-500 dark:hover:bg-red-900/20 dark:hover:text-red-400",title:e(t)("common.delete"),onClick:Oe(H=>k(U.id),["stop"])},[f(L,{name:"i-heroicons-trash",class:"h-4 w-4"})],8,um))])]))),128))]),a("button",{type:"button",class:"mt-3 flex w-full items-center justify-center gap-1.5 rounded-xl border-2 border-dashed border-gray-300 py-4 text-sm text-gray-500 transition-colors hover:border-primary-400 hover:text-primary-600 dark:border-gray-600 dark:text-gray-400 dark:hover:border-primary-500 dark:hover:text-primary-400",onClick:$},[f(L,{name:"i-heroicons-plus",class:"h-4 w-4"}),ee(" "+c(e(t)("ai.assistant.market.addAssistant")),1)]),I.value.length===0?(d(),p("div",dm,c(e(t)("ai.assistant.market.noLocal")),1)):V("",!0)],512),[[yt,y.value==="local"]]),tt(a("div",null,[a("p",cm,c(e(t)("ai.assistant.market.marketHint")),1),e(h)?(d(),p("div",mm,c(e(t)("ai.assistant.market.loading")),1)):e(S)?(d(),p("div",pm,[a("p",gm,c(e(t)("ai.assistant.market.loadFailed")),1),a("button",{type:"button",class:"mt-3 rounded-lg bg-primary-500 px-4 py-2 text-sm font-medium text-white transition-colors hover:bg-primary-600",onClick:E},c(e(t)("ai.assistant.market.retry")),1)])):(d(),p("div",fm,[(d(!0),p(ne,null,he(w.value,U=>(d(),p("div",{key:U.id,class:"flex items-center gap-4 rounded-xl border border-gray-200 bg-white p-4 transition-colors dark:border-gray-700 dark:bg-gray-800"},[a("div",vm,[a("div",hm,[a("h3",ym,c(U.name),1),z(U.applicableChatTypes)?(d(),p("span",xm,c(z(U.applicableChatTypes)),1)):V("",!0),e(Vt)(U.id)?(d(),p("span",bm,c(e(t)("ai.assistant.market.default")),1)):V("",!0)]),a("p",_m,c(U.description),1)]),a("div",km,[U.imported?(d(),p(ne,{key:1},[a("span",Cm,c(e(t)("ai.assistant.market.imported")),1),a("button",{class:"rounded-lg px-3 py-1.5 text-xs font-medium text-gray-500 transition-colors hover:bg-gray-100 hover:text-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-gray-300 disabled:opacity-50",disabled:v.value.has(U.id),onClick:H=>b(U)},c(v.value.has(U.id)?e(t)("ai.assistant.market.importing"):e(t)("ai.assistant.market.reimport")),9,$m)],64)):(d(),p("button",{key:0,class:"rounded-lg bg-primary-500 px-3 py-1.5 text-xs font-medium text-white transition-colors hover:bg-primary-600 disabled:opacity-50",disabled:v.value.has(U.id),onClick:H=>g(U)},c(v.value.has(U.id)?e(t)("ai.assistant.market.importing"):e(t)("ai.assistant.market.import")),9,wm)),U.imported?(d(),p("button",{key:2,class:"rounded-lg p-1.5 text-gray-400 transition-colors hover:bg-gray-100 hover:text-gray-600 dark:hover:bg-gray-700 dark:hover:text-gray-300",title:e(t)("ai.assistant.market.viewConfig"),onClick:Oe(H=>F(U.id),["stop"])},[f(L,{name:"i-heroicons-eye",class:"h-4 w-4"})],8,Sm)):V("",!0)])]))),128))])),!e(h)&&!e(S)&&w.value.length===0?(d(),p("div",Im,c(e(t)("ai.assistant.market.noCatalog")),1)):V("",!0)],512),[[yt,y.value==="market"]])])]),_:1},8,["open"])}}}),Mm={class:"p-5"},Am={class:"flex items-start gap-3"},qm={class:"flex h-10 w-10 shrink-0 items-center justify-center rounded-xl bg-primary-50 text-primary-600 dark:bg-primary-950/40 dark:text-primary-400"},zm={class:"min-w-0"},Dm={class:"font-semibold text-gray-900 dark:text-white"},Lm={class:"mt-1.5 text-sm leading-6 text-gray-600 dark:text-gray-400"},Em={class:"mt-4 rounded-lg bg-gray-50 px-3 py-2.5 dark:bg-gray-800/70"},Vm={class:"flex items-center gap-2 text-sm text-gray-700 dark:text-gray-300"},Fm={class:"truncate"},Rm={class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},Om={class:"mt-5 flex justify-end gap-2"},Bm=le({__name:"AssistantUpgradeModal",props:{open:{type:Boolean},backupName:{},upgrading:{type:Boolean},skipping:{type:Boolean}},emits:["skip","confirm"],setup(u,{emit:n}){const t=n,{t:o}=Ce();return(s,i)=>{const l=Se,r=Ne,m=Xe;return d(),B(m,{open:u.open,dismissible:!1,ui:{content:"sm:max-w-md z-50",overlay:"z-40"}},{content:D(()=>[a("div",Mm,[a("div",Am,[a("div",qm,[f(l,{name:"i-lucide-sparkles",class:"h-5 w-5"})]),a("div",zm,[a("h3",Dm,c(e(o)("ai.assistant.upgrade.title")),1),a("p",Lm,c(e(o)("ai.assistant.upgrade.message",{backupName:u.backupName})),1)])]),a("div",Em,[a("div",Vm,[f(l,{name:"i-lucide-copy-check",class:"h-4 w-4 shrink-0 text-gray-400"}),a("span",Fm,c(u.backupName),1)])]),a("p",Rm,c(e(o)("ai.assistant.upgrade.skipHint")),1),a("div",Om,[f(r,{variant:"soft",loading:u.skipping,disabled:u.upgrading,onClick:i[0]||(i[0]=x=>t("skip"))},{default:D(()=>[ee(c(e(o)("ai.assistant.upgrade.skip")),1)]),_:1},8,["loading","disabled"]),f(r,{color:"primary",loading:u.upgrading,disabled:u.skipping,onClick:i[1]||(i[1]=x=>t("confirm"))},{default:D(()=>[ee(c(e(o)("ai.assistant.upgrade.confirm")),1)]),_:1},8,["loading","disabled"])])])]),_:1},8,["open"])}}}),Pm={class:"p-6"},Nm={class:"mb-4 flex items-center justify-between"},jm={class:"text-lg font-bold text-gray-900 dark:text-gray-100"},Um={class:"mb-4 flex gap-1 rounded-lg bg-gray-100 p-1 dark:bg-gray-800"},Wm={key:0,class:"ml-1 inline-flex h-4 min-w-4 items-center justify-center rounded-full bg-primary-100 px-1 text-[10px] text-primary-600 dark:bg-primary-900/30 dark:text-primary-400"},Km={class:"mb-3 text-xs text-gray-500 dark:text-gray-400"},Hm={class:"max-h-[400px] space-y-3 overflow-y-auto pr-1"},Ym={class:"min-w-0 flex-1"},Qm={class:"flex items-center gap-2"},Gm={class:"text-sm font-semibold text-gray-900 dark:text-gray-100"},Jm={class:"inline-flex shrink-0 items-center rounded-full bg-blue-100 px-2 py-0.5 text-[10px] font-medium text-blue-700 dark:bg-blue-900/30 dark:text-blue-400"},Xm={class:"mt-1 line-clamp-1 text-xs text-gray-500 dark:text-gray-400"},Zm={key:0,class:"mt-1.5 flex flex-wrap gap-1"},ep={class:"flex shrink-0 items-center gap-1.5"},tp=["title","onClick"],ap=["title","onClick"],sp={key:0,class:"py-12 text-center text-sm text-gray-400"},op={class:"mb-3 text-xs text-gray-500 dark:text-gray-400"},np={key:0,class:"py-12 text-center text-sm text-gray-400"},lp={key:1,class:"py-12 text-center"},ip={class:"text-sm text-gray-500 dark:text-gray-400"},rp={key:2,class:"max-h-[400px] space-y-3 overflow-y-auto pr-1"},up={class:"min-w-0 flex-1"},dp={class:"flex items-center gap-2"},cp={class:"text-sm font-semibold text-gray-900 dark:text-gray-100"},mp={class:"inline-flex shrink-0 items-center rounded-full bg-blue-100 px-2 py-0.5 text-[10px] font-medium text-blue-700 dark:bg-blue-900/30 dark:text-blue-400"},pp={class:"mt-1 line-clamp-1 text-xs text-gray-500 dark:text-gray-400"},gp={key:0,class:"mt-1.5 flex flex-wrap gap-1"},fp={class:"flex shrink-0 items-center gap-2"},vp=["disabled","onClick"],hp={class:"px-3 py-1.5 text-xs font-medium text-gray-400 dark:text-gray-500"},yp=["disabled","onClick"],xp={key:3,class:"py-12 text-center text-sm text-gray-400"},bp=le({__name:"SkillMarketModal",props:{open:{type:Boolean}},emits:["update:open","configure","create"],setup(u,{emit:n}){const{t,locale:o}=Ce(),s=_t(),i=u,l=n,r=Xt(),{skills:m,cloudCatalogWithStatus:x,cloudLoading:h,cloudError:S}=bt(r),y=A("local"),I=A(new Set);De(()=>{r.setFilterContext("group",o.value)}),pe(()=>[i.open,y.value],([E,z])=>{E&&z==="market"&&(r.setFilterContext("group",o.value),r.fetchCloudCatalog())},{immediate:!0});const w=q(()=>[...m.value].sort((E,z)=>E.name.localeCompare(z.name))),v=q(()=>[...x.value].sort((E,z)=>E.name.localeCompare(z.name)));function _(E){return t(E==="group"?"ai.skill.config.chatScopeGroup":E==="private"?"ai.skill.config.chatScopePrivate":"ai.skill.config.chatScopeAll")}function k(E){l("configure",E)}async function C(E){await r.deleteSkill(E)}function $(){l("create")}async function g(E){if(!I.value.has(E.id)){I.value=new Set([...I.value,E.id]);try{const z=await r.importFromCloud(E);z.success?s.success(t("ai.skill.market.importSuccess")):s.fail(t("ai.skill.market.importFailed"),{description:z.error})}finally{const z=new Set(I.value);z.delete(E.id),I.value=z}}}async function b(E){if(!I.value.has(E.id)){I.value=new Set([...I.value,E.id]);try{const z=await r.deleteSkill(E.id);if(!z.success){s.fail(t("ai.skill.market.importFailed"),{description:z.error});return}const T=await r.importFromCloud(E);T.success?s.success(t("ai.skill.market.importSuccess")):s.fail(t("ai.skill.market.importFailed"),{description:T.error})}finally{const z=new Set(I.value);z.delete(E.id),I.value=z}}}function F(){r.fetchCloudCatalog()}return(E,z)=>{const T=Se,M=Xe;return d(),B(M,{open:u.open,ui:{content:"sm:max-w-xl z-50"},"onUpdate:open":z[3]||(z[3]=L=>l("update:open",L))},{content:D(()=>[a("div",Pm,[a("div",Nm,[a("h2",jm,c(e(t)("ai.skill.market.title")),1),a("button",{class:"rounded-lg p-1.5 text-gray-400 transition-colors hover:bg-gray-100 hover:text-gray-600 dark:hover:bg-gray-800 dark:hover:text-gray-300",onClick:z[0]||(z[0]=L=>l("update:open",!1))},[f(T,{name:"i-heroicons-x-mark",class:"h-5 w-5"})])]),a("div",Um,[a("button",{class:Z(["flex-1 rounded-md px-3 py-1.5 text-xs font-medium transition-colors",y.value==="local"?"bg-white text-gray-900 shadow-sm dark:bg-gray-700 dark:text-white":"text-gray-500 hover:text-gray-700 dark:text-gray-400"]),onClick:z[1]||(z[1]=L=>y.value="local")},[ee(c(e(t)("ai.skill.market.tabs.local"))+" ",1),e(m).length?(d(),p("span",Wm,c(e(m).length),1)):V("",!0)],2),a("button",{class:Z(["flex-1 rounded-md px-3 py-1.5 text-xs font-medium transition-colors",y.value==="market"?"bg-white text-gray-900 shadow-sm dark:bg-gray-700 dark:text-white":"text-gray-500 hover:text-gray-700 dark:text-gray-400"]),onClick:z[2]||(z[2]=L=>y.value="market")},c(e(t)("ai.skill.market.tabs.market")),3)]),tt(a("div",null,[a("p",Km,c(e(t)("ai.skill.market.localHint")),1),a("div",Hm,[(d(!0),p(ne,null,he(w.value,L=>(d(),p("div",{key:L.id,class:"flex items-center gap-4 rounded-xl border border-gray-200 bg-white p-4 transition-colors dark:border-gray-700 dark:bg-gray-800"},[a("div",Ym,[a("div",Qm,[a("h3",Gm,c(L.name),1),a("span",Jm,c(_(L.chatScope)),1)]),a("p",Xm,c(L.description),1),L.tags.length?(d(),p("div",Zm,[(d(!0),p(ne,null,he(L.tags,N=>(d(),p("span",{key:N,class:"rounded-full bg-gray-100 px-1.5 py-0.5 text-[10px] text-gray-500 dark:bg-gray-700 dark:text-gray-400"},c(N),1))),128))])):V("",!0)]),a("div",ep,[a("button",{class:"rounded-lg p-1.5 text-gray-400 transition-colors hover:bg-gray-100 hover:text-gray-600 dark:hover:bg-gray-700 dark:hover:text-gray-300",title:e(t)("common.edit"),onClick:Oe(N=>k(L.id),["stop"])},[f(T,{name:"i-heroicons-pencil-square",class:"h-4 w-4"})],8,tp),a("button",{class:"rounded-lg p-1.5 text-gray-400 transition-colors hover:bg-red-50 hover:text-red-500 dark:hover:bg-red-900/20 dark:hover:text-red-400",title:e(t)("common.delete"),onClick:Oe(N=>C(L.id),["stop"])},[f(T,{name:"i-heroicons-trash",class:"h-4 w-4"})],8,ap)])]))),128))]),a("button",{type:"button",class:"mt-3 flex w-full items-center justify-center gap-1.5 rounded-xl border-2 border-dashed border-gray-300 py-4 text-sm text-gray-500 transition-colors hover:border-primary-400 hover:text-primary-600 dark:border-gray-600 dark:text-gray-400 dark:hover:border-primary-500 dark:hover:text-primary-400",onClick:$},[f(T,{name:"i-heroicons-plus",class:"h-4 w-4"}),ee(" "+c(e(t)("ai.skill.market.addSkill")),1)]),w.value.length===0?(d(),p("div",sp,c(e(t)("ai.skill.market.noLocal")),1)):V("",!0)],512),[[yt,y.value==="local"]]),tt(a("div",null,[a("p",op,c(e(t)("ai.skill.market.marketHint")),1),e(h)?(d(),p("div",np,c(e(t)("ai.skill.market.loading")),1)):e(S)?(d(),p("div",lp,[a("p",ip,c(e(t)("ai.skill.market.loadFailed")),1),a("button",{type:"button",class:"mt-3 rounded-lg bg-primary-500 px-4 py-2 text-sm font-medium text-white transition-colors hover:bg-primary-600",onClick:F},c(e(t)("ai.skill.market.retry")),1)])):(d(),p("div",rp,[(d(!0),p(ne,null,he(v.value,L=>(d(),p("div",{key:L.id,class:"flex items-center gap-4 rounded-xl border border-gray-200 bg-white p-4 transition-colors dark:border-gray-700 dark:bg-gray-800"},[a("div",up,[a("div",dp,[a("h3",cp,c(L.name),1),a("span",mp,c(_(L.chatScope)),1)]),a("p",pp,c(L.description),1),L.tags?.length?(d(),p("div",gp,[(d(!0),p(ne,null,he(L.tags,N=>(d(),p("span",{key:N,class:"rounded-full bg-gray-100 px-1.5 py-0.5 text-[10px] text-gray-500 dark:bg-gray-700 dark:text-gray-400"},c(N),1))),128))])):V("",!0)]),a("div",fp,[L.imported?(d(),p(ne,{key:1},[a("span",hp,c(e(t)("ai.skill.market.imported")),1),a("button",{class:"rounded-lg px-3 py-1.5 text-xs font-medium text-gray-500 transition-colors hover:bg-gray-100 hover:text-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-gray-300 disabled:opacity-50",disabled:I.value.has(L.id),onClick:N=>b(L)},c(I.value.has(L.id)?e(t)("ai.skill.market.importing"):e(t)("ai.skill.market.reimport")),9,yp)],64)):(d(),p("button",{key:0,class:"rounded-lg bg-primary-500 px-3 py-1.5 text-xs font-medium text-white transition-colors hover:bg-primary-600 disabled:opacity-50",disabled:I.value.has(L.id),onClick:N=>g(L)},c(I.value.has(L.id)?e(t)("ai.skill.market.importing"):e(t)("ai.skill.market.import")),9,vp))])]))),128))])),!e(h)&&!e(S)&&v.value.length===0?(d(),p("div",xp,c(e(t)("ai.skill.market.noCatalog")),1)):V("",!0)],512),[[yt,y.value==="market"]])])]),_:1},8,["open"])}}}),_p={class:"p-6"},kp={class:"mb-4 flex items-center justify-between"},wp={class:"text-lg font-bold text-gray-900 dark:text-gray-100"},Cp={class:"mb-3 text-xs text-gray-500 dark:text-gray-400"},$p={key:0,class:"flex h-64 items-center justify-center text-gray-400"},Sp={class:"mt-4 flex justify-end gap-2"},Ip=["disabled"],Tp=`---
|
|
66
|
+
4. 若用户需求包含多个分析目标,仅选择第一个目标生成 SQL`}function ie(R){let J=R.trim();J=J.replace(/^```json?\n?/i,"").replace(/\n?```$/i,"");try{const fe=JSON.parse(J);return{sql:(fe.sql||"").trim(),explanation:(fe.explanation||"").trim()}}catch{return J=J.replace(/^```sql?\n?/i,"").replace(/\n?```$/i,""),{sql:J.trim(),explanation:""}}}async function se(){const R=m.value.trim();if(!R){x.value=n("ai.sqlLab.generate.errorEmptyPrompt");return}if(!await _a().hasConfig()){x.value=n("common.errorNoAIConfig");return}const fe=o.value?.schema||[];if(fe.length===0){x.value=n("common.error.unknown");return}S.value=!0,I.value=null,x.value=null,v.value="",_.value="",k.value=!1;let X="";try{const W=H(R,fe),ae=await cs().chatStream([{role:"system",content:"你是一个 SQLite 专家,请以 JSON 格式输出 sql 和 explanation 字段。"},{role:"user",content:W}],{temperature:.1,maxTokens:4096},ue=>{if(ue.thinking!==void 0){ue.thinkingDone?k.value=!1:(k.value=!0,ue.thinking&&(_.value+=ue.thinking,Re(()=>{C.value&&(C.value.scrollTop=C.value.scrollHeight)})));return}ue.error&&(X=ue.error),ue.isFinished&&ue.finishReason==="length"&&(X=n("ai.sqlLab.generate.errorTokenLimit")),ue.content&&(v.value+=ue.content)});if(!ae.success){x.value=ae.error||X||n("ai.sqlLab.generate.errorGenerate");return}if(X){x.value=X;return}const O=ie(v.value);if(!O.sql){x.value=v.value?`${n("ai.sqlLab.generate.errorGenerate")}: ${v.value.slice(0,200)}`:n("ai.sqlLab.generate.errorGenerate");return}r.value=O.sql,w.value=R,E(R,O.sql,O.explanation),await T()}catch(W){x.value=W.message||String(W)}finally{S.value=!1}}async function P(R){r.value=R.sql,w.value=R.prompt,$.value=!1,await T()}return De(()=>{b()}),me(()=>s.chatType,R=>{m.value=l(R)}),(R,J)=>{const fe=Se,X=Ne;return d(),p("div",nd,[f(e(Ki),{ref_key:"schemaPanelRef",ref:o,"session-id":u.sessionId,onInsertColumn:L},null,8,["session-id"]),a("div",ld,[a("div",id,[a("div",rd,[y.value==="prompt"?tt((d(),p("textarea",{key:0,"onUpdate:modelValue":J[0]||(J[0]=W=>m.value=W),class:"h-32 w-full resize-none rounded-2xl border-0 bg-white p-3 text-sm text-gray-800 shadow-[0_2px_14px_rgba(0,0,0,0.04)] outline-none ring-1 ring-gray-200/60 transition-all placeholder:text-gray-400 focus:ring-primary-500/40 focus:shadow-[0_4px_20px_rgba(0,0,0,0.08)] dark:bg-page-dark dark:text-gray-200 dark:ring-white/5 dark:placeholder:text-gray-500 dark:focus:ring-primary-500/40",placeholder:e(n)("ai.sqlLab.generate.placeholder"),spellcheck:"false",onKeydown:J[1]||(J[1]=W=>M(W,"prompt"))},null,40,ud)),[[Kt,m.value]]):tt((d(),p("textarea",{key:1,"onUpdate:modelValue":J[2]||(J[2]=W=>r.value=W),class:"h-32 w-full resize-none rounded-2xl border-0 bg-white p-3 font-mono text-sm text-gray-800 shadow-[0_2px_14px_rgba(0,0,0,0.04)] outline-none ring-1 ring-gray-200/60 transition-all placeholder:text-gray-400 focus:ring-primary-500/40 focus:shadow-[0_4px_20px_rgba(0,0,0,0.08)] dark:bg-page-dark dark:text-gray-200 dark:ring-white/5 dark:placeholder:text-gray-500 dark:focus:ring-primary-500/40",placeholder:e(n)("ai.sqlLab.editor.placeholder"),spellcheck:"false",onKeydown:J[3]||(J[3]=W=>M(W,"sql"))},null,40,dd)),[[Kt,r.value]]),a("div",cd,[a("div",md,[f(X,{variant:"ghost",size:"xs",onClick:N},{default:D(()=>[f(fe,{name:"i-heroicons-arrows-right-left",class:"mr-1 h-3.5 w-3.5"}),ee(" "+c(y.value==="prompt"?e(n)("ai.sqlLab.editor.switchToSQLMode"):e(n)("ai.sqlLab.editor.switchToPromptMode")),1)]),_:1}),y.value==="sql"?(d(),p("span",pd,c(e(n)("ai.sqlLab.editor.tip")),1)):V("",!0)]),a("div",gd,[f(X,{variant:"ghost",size:"sm",disabled:g.value.length===0,onClick:J[4]||(J[4]=W=>$.value=!0)},{default:D(()=>[f(fe,{name:"i-heroicons-clock",class:"mr-1 h-4 w-4"}),ee(" "+c(e(n)("ai.sqlLab.editor.history"))+" ",1),g.value.length>0?(d(),p("span",fd,"("+c(g.value.length)+")",1)):V("",!0)]),_:1},8,["disabled"]),y.value==="prompt"?(d(),B(X,{key:0,color:"primary",size:"sm",loading:S.value||h.value,disabled:!m.value.trim(),onClick:se},{default:D(()=>[f(fe,{name:"i-heroicons-sparkles",class:"mr-1 h-4 w-4"}),ee(" "+c(e(n)("ai.sqlLab.editor.generateAndRun")),1)]),_:1},8,["loading","disabled"])):(d(),B(X,{key:1,color:"primary",size:"sm",loading:h.value,onClick:T},{default:D(()=>[f(fe,{name:"i-heroicons-play",class:"mr-1 h-4 w-4"}),ee(" "+c(e(n)("ai.sqlLab.editor.run")),1)]),_:1},8,["loading"]))])])])]),y.value==="prompt"&&!I.value&&!x.value&&(v.value||_.value||S.value)?(d(),p("div",vd,[f(e(rt),{class:"mx-auto w-full max-w-3xl p-4"},{default:D(()=>[a("p",hd,[f(fe,{name:"i-heroicons-cpu-chip",class:"h-4 w-4"}),ee(" "+c(e(n)("ai.sqlLab.generate.aiOutput"))+" ",1),k.value?(d(),p("span",yd,c(e(n)("ai.sqlLab.generate.thinking")),1)):S.value?(d(),p("span",xd,c(e(n)("common.generating")),1)):V("",!0)]),_.value?(d(),p("details",{key:0,class:"mb-3",open:k.value},[a("summary",_d,c(e(n)("ai.sqlLab.generate.thinkingProcess")),1),a("pre",{ref_key:"thinkingPreRef",ref:C,class:"mt-1 max-h-48 overflow-auto whitespace-pre-wrap break-all rounded border border-gray-200 bg-gray-50 p-2 font-mono text-xs leading-5 text-gray-500 dark:border-gray-700 dark:bg-gray-800 dark:text-gray-400"},c(_.value),513)],8,bd)):V("",!0),v.value?(d(),p("pre",kd,c(v.value),1)):_.value?V("",!0):(d(),p("p",wd,c(e(n)("ai.sqlLab.generate.waitingAI")),1))]),_:1})])):(d(),B(e(Zr),{key:1,ref_key:"resultTableRef",ref:i,result:I.value,error:x.value,sql:r.value,prompt:w.value},null,8,["result","error","sql","prompt"]))]),f(e(ir),{open:$.value,"onUpdate:open":J[5]||(J[5]=W=>$.value=W),history:g.value,onExecute:P,onDelete:z},null,8,["open","history"])])}}}),$d={class:"flex h-full flex-col"},Sd={class:"min-h-0 flex-1 overflow-hidden"},Id=le({__name:"MoreTab",props:{sessionId:{},chatType:{}},setup(u){const n=u,{t}=Ce(),s=rs(),o=Jt(),{debugMode:i}=bt(o),l=q(()=>{const y=[{id:"sql-lab",label:t("ai.tab.sqlLab"),icon:"i-heroicons-command-line"}];return i.value&&y.push({id:"debug",label:t("analysis.tabs.debug"),icon:"i-heroicons-bug-ant"}),y}),r=s.query.moreTab,m=A(typeof r=="string"&&l.value.some(y=>y.id===r)?r:"sql-lab");return me(m,y=>{y==="sql-lab"&&St("feature_used",{feature_id:"sql_lab"})},{immediate:!0}),me(i,y=>{!y&&m.value==="debug"&&(m.value="sql-lab")}),(y,h)=>(d(),p("div",$d,[f(e(ka),{modelValue:m.value,"onUpdate:modelValue":h[0]||(h[0]=S=>m.value=S),items:l.value,"persist-key":"moreTab"},null,8,["modelValue","items"]),a("div",Sd,[f(Tt,{name:"fade",mode:"out-in"},{default:D(()=>[m.value==="sql-lab"?(d(),B(Cd,{key:0,class:"h-full","session-id":n.sessionId,"chat-type":n.chatType},null,8,["session-id","chat-type"])):m.value==="debug"?(d(),B(e(od),{key:1,class:"h-full","session-id":n.sessionId},null,8,["session-id"])):V("",!0)]),_:1})])]))}}),jb=gt(Id,[["__scopeId","data-v-18ccef00"]]),Td={class:"flex h-full min-h-0 flex-col"},Md={class:"min-h-0 flex-1 overflow-hidden"},Ub=le({__name:"MemoryTab",props:{sessionId:{},sessionName:{}},setup(u){const{t:n}=Ce(),t=A("records"),s=q(()=>[{id:"records",label:n("analysis.memory.tabs.records"),icon:"i-heroicons-chat-bubble-left-right"}]);return(o,i)=>(d(),p("div",Td,[f(e(ka),{modelValue:t.value,"onUpdate:modelValue":i[0]||(i[0]=l=>t.value=l),items:s.value,"persist-key":"memoryTab"},null,8,["modelValue","items"]),a("div",Md,[t.value==="records"?(d(),B(e(Go),{key:u.sessionId,"session-id":u.sessionId,mode:"page","show-topics":!e(zo)},null,8,["session-id","show-topics"])):V("",!0)])]))}}),Ad={class:"writing-vertical text-xs"},qd={class:"flex items-center justify-between border-b border-gray-200 px-4 py-3 dark:border-gray-800"},zd={class:"flex items-center gap-2"},Dd={class:"font-medium text-gray-900 dark:text-white"},Ld={key:0,class:"border-b border-gray-200 px-4 py-2 dark:border-gray-800"},Ed={class:"flex flex-wrap items-center gap-2"},Vd={class:"text-xs text-gray-500"},Fd={class:"flex-1 overflow-y-auto"},Rd={key:0,class:"flex items-center justify-center py-8"},Od={key:1,class:"flex flex-col items-center justify-center py-8 text-center"},Bd={class:"mt-2 text-sm text-gray-500"},Pd={class:"text-xs text-gray-400"},Nd={key:2,class:"divide-y divide-gray-100 dark:divide-gray-800"},jd={class:"mb-1 flex items-center justify-between"},Ud={class:"text-sm font-medium text-gray-900 dark:text-white"},Wd={class:"text-xs text-gray-400"},Kd=["innerHTML"],Hd={key:1,class:"border-t border-gray-200 px-4 py-2 dark:border-gray-800"},Yd={class:"text-xs text-gray-500"},Qd={key:2,class:"pointer-events-none absolute inset-0 overflow-hidden rounded-xl opacity-[0.03]"},Gd=le({__name:"DataSourcePanel",props:{messages:{},keywords:{},isLoading:{type:Boolean},isCollapsed:{type:Boolean}},emits:["toggle"],setup(u,{emit:n}){const{t}=Ce(),s=u,o=n;function i(r){return Ve(r).format("MM-DD HH:mm")}function l(r){if(!s.keywords.length)return r;const m=s.keywords.join("|"),y=new RegExp(`(${m})`,"gi");return r.replace(y,'<mark class="bg-yellow-200 dark:bg-yellow-800/50 px-0.5 rounded">$1</mark>')}return(r,m)=>{const y=Se,h=Ne;return d(),p("div",{class:Z(["relative flex flex-col rounded-xl bg-white transition-all duration-300 dark:bg-page-dark",[u.isCollapsed?"w-12":"w-full"]])},[u.isCollapsed?(d(),p("button",{key:0,class:"flex h-full flex-col items-center justify-center gap-2 text-gray-500 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-200",onClick:m[0]||(m[0]=S=>o("toggle"))},[f(y,{name:"i-heroicons-chevron-left",class:"h-5 w-5"}),a("span",Ad,c(e(t)("ai.chat.dataSource.title")),1)])):(d(),p(ne,{key:1},[a("div",qd,[a("div",zd,[f(y,{name:"i-heroicons-document-magnifying-glass",class:"h-5 w-5 text-gray-500"}),a("span",Dd,c(e(t)("ai.chat.dataSource.title")),1)]),f(h,{icon:"i-heroicons-chevron-right",color:"gray",variant:"ghost",size:"xs",onClick:m[1]||(m[1]=S=>o("toggle"))})]),u.keywords.length>0?(d(),p("div",Ld,[a("div",Ed,[a("span",Vd,c(e(t)("ai.chat.dataSource.keywords")),1),(d(!0),p(ne,null,he(u.keywords,S=>(d(),p("span",{key:S,class:"rounded-full bg-violet-100 px-2 py-0.5 text-xs text-violet-700 dark:bg-violet-900/30 dark:text-violet-400"},c(S),1))),128))])])):V("",!0),a("div",Fd,[u.isLoading?(d(),p("div",Rd,[f(y,{name:"i-heroicons-arrow-path",class:"h-6 w-6 animate-spin text-gray-400"})])):u.messages.length===0?(d(),p("div",Od,[f(y,{name:"i-heroicons-inbox",class:"h-10 w-10 text-gray-300 dark:text-gray-600"}),a("p",Bd,c(e(t)("ai.chat.dataSource.empty")),1),a("p",Pd,c(e(t)("ai.chat.dataSource.emptyHint")),1)])):(d(),p("div",Nd,[(d(!0),p(ne,null,he(u.messages,S=>(d(),p("div",{key:S.id,class:"px-4 py-3 transition-colors hover:bg-gray-50 dark:hover:bg-gray-800/50"},[a("div",jd,[a("span",Ud,c(S.senderName),1),a("span",Wd,c(i(S.timestamp)),1)]),a("p",{class:"line-clamp-3 text-sm text-gray-600 dark:text-gray-400",innerHTML:l(S.content)},null,8,Kd)]))),128))]))]),u.messages.length>0?(d(),p("div",Hd,[a("span",Yd,c(e(t)("ai.chat.dataSource.totalRecords",{count:u.messages.length})),1)])):V("",!0)],64)),u.isCollapsed?V("",!0):(d(),p("div",Qd,[...m[2]||(m[2]=[a("div",{class:"data-flow-bg absolute inset-0"},null,-1)])]))],2)}}}),Jd=gt(Gd,[["__scopeId","data-v-44b91893"]]),Xd={class:"assistant-bar-wrapper flex justify-center"},Zd=["onClick"],ec={key:0,class:"absolute right-0 top-full z-30 mt-2 w-56 overflow-hidden rounded-xl border border-gray-200/80 bg-white/95 p-1 shadow-overlay backdrop-blur-md dark:border-gray-700 dark:bg-page-dark/95"},tc={class:"custom-scrollbar max-h-60 space-y-0.5 overflow-y-auto"},ac=["onClick"],sc={class:"truncate font-medium"},Ot=4,oc=le({__name:"AssistantInlineBar",props:{chatType:{},locale:{},selectedId:{}},emits:["select","market"],setup(u,{emit:n}){const t=u,s=n,o=A(!1),i=A(null);function l(g){s("select",g),o.value=!1}function r(){w.value.length!==0&&(o.value=!o.value)}function m(g){if(!o.value||!i.value)return;const b=g.target;b instanceof Node&&!i.value.contains(b)&&(o.value=!1)}const y=Lt(),{filteredAssistants:h,isLoaded:S}=bt(y),x=q(()=>{const g=Do(t.locale);return[...h.value].sort((b,F)=>b.id===g?-1:F.id===g?1:0)}),I=q(()=>{const g=x.value;if(g.length<=Ot)return g;const b=g.findIndex(F=>F.id===t.selectedId);if(b!==-1&&b>=Ot-1){const F=g.slice(0,Ot-1),E=g[b];return[...F,E]}return g.slice(0,Ot)}),w=q(()=>{const g=new Set(I.value.map(b=>b.id));return x.value.filter(b=>!g.has(b.id))});me(()=>[t.chatType,t.locale],([g,b])=>{y.setFilterContext(g,b)},{immediate:!0});const v=A([]),_=A(null);let k=null;const C=A({width:"0px",transform:"translateX(0px)",opacity:0}),$=async()=>{await Re();const g=I.value.findIndex(b=>b.id===t.selectedId);if(g!==-1&&v.value[g]){const b=v.value[g];C.value={width:`${b.offsetWidth+6}px`,transform:`translateX(${b.offsetLeft-3}px)`,opacity:1}}else C.value.opacity=0};return me(()=>[t.selectedId,I.value],()=>{$()},{deep:!0}),De(async()=>{S.value||await y.loadAssistants(),$(),document.addEventListener("mousedown",m),typeof ResizeObserver<"u"&&_.value&&(k=new ResizeObserver(()=>{$()}),k.observe(_.value))}),Je(()=>{document.removeEventListener("mousedown",m),k&&k.disconnect()}),(g,b)=>{const F=Se;return d(),p("div",Xd,[a("div",{ref_key:"containerRef",ref:_,class:"assistant-bar-grid relative flex items-center justify-center gap-1.5 rounded-full bg-gray-50/60 p-[3px] shadow-inner ring-1 ring-inset ring-gray-900/5 backdrop-blur-md dark:bg-gray-800/40 dark:ring-white/10 z-0 overflow-hidden sm:overflow-visible"},[a("div",{class:"absolute left-0 inset-y-0 -z-10 rounded-full bg-white ring-[1.5px] ring-primary-500 shadow-sm transition-all duration-350 ease-out dark:bg-primary-700/15 dark:ring-primary-500",style:et(C.value)},null,4),(d(!0),p(ne,null,he(I.value,(E,z)=>(d(),p("button",{key:E.id,ref_for:!0,ref:T=>{T&&(v.value[z]=T)},class:Z(["relative z-10 flex h-[32px] items-center justify-center whitespace-nowrap rounded-full px-4 text-[13px] font-medium transition-colors duration-200",[u.selectedId===E.id?"text-primary-600 dark:text-primary-400":"text-gray-500 hover:bg-gray-200/50 hover:text-gray-800 dark:text-gray-400 dark:hover:bg-gray-700/50 dark:hover:text-gray-200"]]),onClick:T=>s("select",E.id)},c(E.name),11,Zd))),128)),w.value.length>0?(d(),p("div",{key:0,ref_key:"overflowMenuRef",ref:i,class:"relative z-20"},[a("button",{type:"button",class:"relative z-10 flex h-[32px] w-[32px] ml-0.5 items-center justify-center rounded-full text-gray-500 transition-colors duration-200 hover:bg-gray-200/50 hover:text-gray-800 dark:text-gray-400 dark:hover:bg-gray-700/50 dark:hover:text-gray-200",onClick:r},[f(F,{name:"i-heroicons-ellipsis-horizontal",class:"h-5 w-5"})]),o.value?(d(),p("div",ec,[a("div",tc,[b[1]||(b[1]=a("p",{class:"px-2 py-1.5 text-[11px] font-semibold uppercase tracking-wider text-gray-400 dark:text-gray-500"}," 更多助手 ",-1)),(d(!0),p(ne,null,he(w.value,E=>(d(),p("button",{key:E.id,type:"button",class:Z(["flex w-full items-center justify-between rounded-md px-2.5 py-1.5 text-left text-sm transition-colors",[u.selectedId===E.id?"bg-primary-50 text-primary-600 dark:bg-primary-500/10 dark:text-primary-400":"text-gray-700 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-gray-800"]]),onClick:z=>l(E.id)},[a("span",sc,c(E.name),1),u.selectedId===E.id?(d(),B(F,{key:0,name:"i-heroicons-check",class:"h-4 w-4 shrink-0"})):V("",!0)],10,ac))),128))])])):V("",!0)],512)):V("",!0),a("button",{type:"button",class:"relative z-10 flex h-[32px] w-[32px] items-center justify-center rounded-full text-gray-500 transition-colors duration-200 hover:bg-gray-200/50 hover:text-gray-800 dark:text-gray-400 dark:hover:bg-gray-700/50 dark:hover:text-gray-200",onClick:b[0]||(b[0]=E=>s("market"))},[f(F,{name:"i-heroicons-plus",class:"h-[18px] w-[18px]"})])],512)])}}}),nc=gt(oc,[["__scopeId","data-v-169115ce"]]),lc={class:"p-6"},ic={class:"mb-4 flex items-start justify-between gap-3"},rc={class:"min-w-0"},uc={class:"text-lg font-semibold text-gray-900 dark:text-white"},dc={key:0,class:"mt-1 text-xs text-amber-600 dark:text-amber-400"},cc={key:0,class:"flex items-center justify-center py-12"},mc={class:"mb-4 flex gap-1 rounded-lg bg-gray-100 p-1 dark:bg-gray-800"},pc={key:0,class:"ml-1 inline-flex h-4 min-w-4 items-center justify-center rounded-full bg-primary-100 px-1 text-[10px] text-primary-600 dark:bg-primary-900/30 dark:text-primary-400"},gc={class:"max-h-[500px] overflow-y-auto pr-1"},fc={class:"space-y-5"},vc={class:"mb-1.5 block text-sm font-medium text-gray-700 dark:text-gray-300"},hc={class:"mb-1.5 block text-sm font-medium text-gray-700 dark:text-gray-300"},yc={class:"mb-1.5 block text-sm font-medium text-gray-700 dark:text-gray-300"},xc={class:"flex flex-wrap gap-2"},bc=["disabled","onClick"],_c={class:"mb-1.5 block text-sm font-medium text-gray-700 dark:text-gray-300"},kc={class:"flex flex-wrap gap-2"},wc=["disabled","onClick"],Cc={class:"mt-1 text-[10px] text-gray-400"},$c={class:"mb-1.5 block text-sm font-medium text-gray-700 dark:text-gray-300"},Sc={class:"space-y-2"},Ic={key:0,class:"flex items-center gap-2"},Tc={class:"space-y-5"},Mc={class:"mb-1 text-sm font-medium text-gray-700 dark:text-gray-300"},Ac={class:"mb-2.5 text-[10px] text-gray-400"},qc={class:"grid grid-cols-2 gap-1.5"},zc={class:"min-w-0"},Dc={class:"truncate text-xs font-medium text-gray-600 dark:text-gray-400"},Lc={class:"truncate text-[10px] text-gray-400 dark:text-gray-500"},Ec={class:"mb-1 flex items-center justify-between"},Vc={class:"text-sm font-medium text-gray-700 dark:text-gray-300"},Fc={key:0,class:"flex gap-2"},Rc={class:"mb-2.5 text-[10px] text-gray-400"},Oc={class:"grid grid-cols-2 gap-1.5"},Bc=["checked","disabled","onChange"],Pc={class:"min-w-0"},Nc={class:"truncate text-xs font-medium text-gray-800 dark:text-gray-200"},jc={class:"truncate text-[10px] text-gray-500 dark:text-gray-400"},Uc={class:"mt-6 flex items-center justify-between"},Wc={class:"flex gap-2"},Kc=le({__name:"AssistantConfigModal",props:{open:{type:Boolean},assistantId:{},readonly:{type:Boolean},scrollToSection:{}},emits:["update:open","saved","created"],setup(u,{emit:n}){const{t}=Ce(),s=u,o=n,i=_t(),l=Lt(),r=A(!1),m=A(!1),y=A(null),h=A(!1),S=A("basic"),x=q(()=>[{value:"",label:t("ai.assistant.config.chatTypeAll")},{value:"group",label:t("ai.assistant.config.chatTypeGroup")},{value:"private",label:t("ai.assistant.config.chatTypePrivate")}]),I=[{value:"zh",label:"简体中文"},{value:"en",label:"English"},{value:"ja",label:"日本語"}],w=q(()=>l.builtinToolCatalog.filter(P=>P.category==="core").map(P=>({name:P.name,description:t(`ai.assistant.builtinToolDesc.${P.name}`)}))),v=q(()=>l.builtinToolCatalog.filter(P=>P.category==="analysis").map(P=>({name:P.name,description:t(`ai.assistant.builtinToolDesc.${P.name}`)}))),_=A({name:"",systemPrompt:"",presetQuestions:[],applicableChatType:"",supportedLocales:[],allowedBuiltinTools:[]}),k=A(""),C=A(null),$=q(()=>_.value.allowedBuiltinTools.length);De(async()=>{l.builtinToolCatalog.length===0&&await l.loadBuiltinToolCatalog()}),me(()=>[s.open,s.assistantId],async([P,R])=>{P&&(S.value="basic",R?(h.value=!1,await b(R)):s.readonly||(h.value=!0,g()),s.scrollToSection==="presetQuestions"&&(await Re(),setTimeout(()=>{C.value?.scrollIntoView({behavior:"smooth",block:"center"})},100)))},{immediate:!0});function g(){y.value={id:"",name:"",systemPrompt:"",presetQuestions:[],allowedBuiltinTools:[],applicableChatTypes:[],supportedLocales:[]},_.value={name:"",systemPrompt:"",presetQuestions:[],applicableChatType:"",supportedLocales:[],allowedBuiltinTools:[]},r.value=!1}async function b(P){r.value=!0;try{y.value=await l.getAssistantConfig(P),y.value&&(_.value={name:y.value.name,systemPrompt:y.value.systemPrompt,presetQuestions:[...y.value.presetQuestions],applicableChatType:y.value.applicableChatTypes?.[0]||"",supportedLocales:[...y.value.supportedLocales||[]],allowedBuiltinTools:[...y.value.allowedBuiltinTools||[]]})}catch(R){console.error("[AssistantConfigModal] Failed to load config:",R),i.fail(t("ai.assistant.toast.loadFailed"),{description:String(R)})}finally{r.value=!1}}async function F(){m.value=!0;try{const P={name:_.value.name,systemPrompt:_.value.systemPrompt,presetQuestions:[..._.value.presetQuestions],applicableChatTypes:_.value.applicableChatType?[_.value.applicableChatType]:[],supportedLocales:[..._.value.supportedLocales],allowedBuiltinTools:[..._.value.allowedBuiltinTools]};if(h.value){const R=await l.createAssistant(P);R.success?(i.success(t("ai.assistant.toast.createSuccess")),o("created",R.id),se()):i.fail(t("ai.assistant.toast.createFailed"),{description:R.error||t("ai.assistant.toast.unknownError")})}else{if(!s.assistantId)return;const R=await l.updateAssistant(s.assistantId,P);R.success?(i.success(t("ai.assistant.toast.saveSuccess")),o("saved"),se()):i.fail(t("ai.assistant.toast.saveFailed"),{description:R.error||t("ai.assistant.toast.unknownError")})}}catch(P){console.error("[AssistantConfigModal] Save failed:",P),i.fail(t("ai.assistant.toast.saveFailed"),{description:String(P)})}finally{m.value=!1}}async function E(){if(!(!s.assistantId||!y.value?.builtinId)){m.value=!0;try{const P=await l.resetAssistant(s.assistantId);P.success?(i.success(t("ai.assistant.toast.resetSuccess")),await b(s.assistantId),o("saved")):i.fail(t("ai.assistant.toast.resetFailed"),{description:P.error||t("ai.assistant.toast.unknownError")})}catch(P){i.fail(t("ai.assistant.toast.resetFailed"),{description:String(P)})}finally{m.value=!1}}}function z(){const P=k.value.trim();P&&!_.value.presetQuestions.includes(P)&&(_.value.presetQuestions.push(P),k.value="")}function T(P){_.value.presetQuestions.splice(P,1)}function M(P){const R=_.value.allowedBuiltinTools.indexOf(P);R>=0?_.value.allowedBuiltinTools.splice(R,1):_.value.allowedBuiltinTools.push(P)}function L(P){return _.value.allowedBuiltinTools.includes(P)}function N(){_.value.allowedBuiltinTools=v.value.map(P=>P.name)}function U(){_.value.allowedBuiltinTools=[]}function H(P){_.value.applicableChatType=P}function ie(P){const R=_.value.supportedLocales.indexOf(P);R>=0?_.value.supportedLocales.splice(R,1):_.value.supportedLocales.push(P)}function se(){o("update:open",!1)}return(P,R)=>{const J=Ne,fe=Se,X=zt,W=tn,ae=Xe;return d(),B(ae,{open:u.open,ui:{content:"sm:max-w-2xl z-100"},"onUpdate:open":R[5]||(R[5]=O=>o("update:open",O))},{content:D(()=>[a("div",lc,[a("div",ic,[a("div",rc,[a("h2",uc,c(u.readonly?e(t)("ai.assistant.config.viewTitle"):h.value?e(t)("ai.assistant.config.createTitle"):e(t)("ai.assistant.config.editTitle")),1),u.readonly?V("",!0):(d(),p("p",dc,c(e(t)("ai.assistant.config.betaWarning")),1))]),f(J,{icon:"i-heroicons-x-mark",variant:"ghost",size:"sm",class:"shrink-0",onClick:se})]),r.value?(d(),p("div",cc,[f(fe,{name:"i-heroicons-arrow-path",class:"h-6 w-6 animate-spin text-gray-400"})])):y.value?(d(),p(ne,{key:1},[a("div",mc,[a("button",{class:Z(["flex-1 rounded-md px-3 py-1.5 text-xs font-medium transition-colors",S.value==="basic"?"bg-white text-gray-900 shadow-sm dark:bg-gray-700 dark:text-white":"text-gray-500 hover:text-gray-700 dark:text-gray-400"]),onClick:R[0]||(R[0]=O=>S.value="basic")},c(e(t)("ai.assistant.config.tabs.basic")),3),a("button",{class:Z(["flex-1 rounded-md px-3 py-1.5 text-xs font-medium transition-colors",S.value==="tools"?"bg-white text-gray-900 shadow-sm dark:bg-gray-700 dark:text-white":"text-gray-500 hover:text-gray-700 dark:text-gray-400"]),onClick:R[1]||(R[1]=O=>S.value="tools")},[ee(c(e(t)("ai.assistant.config.tabs.tools"))+" ",1),$.value>0?(d(),p("span",pc,c($.value),1)):V("",!0)],2)]),a("div",gc,[tt(a("div",fc,[a("div",null,[a("label",vc,c(e(t)("ai.assistant.config.name")),1),f(X,{modelValue:_.value.name,"onUpdate:modelValue":R[2]||(R[2]=O=>_.value.name=O),class:"w-full",disabled:u.readonly},null,8,["modelValue","disabled"])]),a("div",null,[a("label",hc,c(e(t)("ai.assistant.config.systemPrompt")),1),f(W,{modelValue:_.value.systemPrompt,"onUpdate:modelValue":R[3]||(R[3]=O=>_.value.systemPrompt=O),rows:5,autoresize:"",class:"w-full font-mono text-sm",disabled:u.readonly},null,8,["modelValue","disabled"])]),a("div",null,[a("label",yc,c(e(t)("ai.assistant.config.chatType")),1),a("div",xc,[(d(!0),p(ne,null,he(x.value,O=>(d(),p("button",{key:O.value,type:"button",class:Z(["rounded-lg border px-3 py-1.5 text-xs transition-colors",_.value.applicableChatType===O.value?"border-primary-500 bg-primary-50 text-primary-700 dark:border-primary-400 dark:bg-primary-950/30 dark:text-primary-300":"border-gray-200 text-gray-600 hover:border-gray-300 dark:border-gray-700 dark:text-gray-400"]),disabled:u.readonly,onClick:ue=>H(O.value)},c(O.label),11,bc))),128))])]),a("div",null,[a("label",_c,c(e(t)("ai.assistant.config.locale")),1),a("div",kc,[(d(),p(ne,null,he(I,O=>a("button",{key:O.value,type:"button",class:Z(["rounded-lg border px-3 py-1.5 text-xs transition-colors",_.value.supportedLocales.includes(O.value)?"border-primary-500 bg-primary-50 text-primary-700 dark:border-primary-400 dark:bg-primary-950/30 dark:text-primary-300":"border-gray-200 text-gray-600 hover:border-gray-300 dark:border-gray-700 dark:text-gray-400"]),disabled:u.readonly,onClick:ue=>ie(O.value)},c(O.label),11,wc)),64))]),a("p",Cc,c(e(t)("ai.assistant.config.localeHint")),1)]),a("div",{ref_key:"presetQuestionsRef",ref:C},[a("label",$c,c(e(t)("ai.assistant.config.presetQuestions")),1),a("div",Sc,[(d(!0),p(ne,null,he(_.value.presetQuestions,(O,ue)=>(d(),p("div",{key:ue,class:"flex items-center gap-2"},[f(X,{modelValue:_.value.presetQuestions[ue],"onUpdate:modelValue":we=>_.value.presetQuestions[ue]=we,class:"min-w-0 flex-1",size:"sm",disabled:u.readonly},null,8,["modelValue","onUpdate:modelValue","disabled"]),u.readonly?V("",!0):(d(),B(J,{key:0,color:"error",variant:"ghost",icon:"i-heroicons-trash",size:"xs",class:"shrink-0",onClick:we=>T(ue)},null,8,["onClick"]))]))),128)),u.readonly?V("",!0):(d(),p("div",Ic,[f(X,{modelValue:k.value,"onUpdate:modelValue":R[4]||(R[4]=O=>k.value=O),placeholder:e(t)("ai.assistant.config.addQuestion"),class:"min-w-0 flex-1",size:"sm",onKeyup:Ze(z,["enter"])},null,8,["modelValue","placeholder"]),f(J,{color:"primary",variant:"soft",icon:"i-heroicons-plus",size:"xs",class:"shrink-0",onClick:z})]))])],512)],512),[[yt,S.value==="basic"]]),tt(a("div",Tc,[a("div",null,[a("h3",Mc,c(e(t)("ai.assistant.config.coreTools")),1),a("p",Ac,c(e(t)("ai.assistant.config.coreToolsHint")),1),a("div",qc,[(d(!0),p(ne,null,he(w.value,O=>(d(),p("label",{key:O.name,class:"flex items-start gap-2 rounded-md border border-gray-200 bg-gray-50/50 px-2.5 py-2 opacity-70 dark:border-gray-700 dark:bg-gray-800/30"},[R[6]||(R[6]=a("input",{type:"checkbox",checked:"",disabled:"",class:"mt-0.5 h-3.5 w-3.5 shrink-0 rounded border-gray-300 text-gray-400"},null,-1)),a("div",zc,[a("div",Dc,c(O.name),1),a("div",Lc,c(O.description),1)])]))),128))])]),a("div",null,[a("div",Ec,[a("h3",Vc,c(e(t)("ai.assistant.config.analysisTools")),1),u.readonly?V("",!0):(d(),p("div",Fc,[a("button",{class:"text-[10px] text-primary-500 hover:text-primary-600",onClick:N},c(e(t)("ai.assistant.config.selectAll")),1),R[7]||(R[7]=a("span",{class:"text-[10px] text-gray-300 dark:text-gray-600"},"|",-1)),a("button",{class:"text-[10px] text-primary-500 hover:text-primary-600",onClick:U},c(e(t)("ai.assistant.config.deselectAll")),1)]))]),a("p",Rc,c(e(t)("ai.assistant.config.analysisToolsHint")),1),a("div",Oc,[(d(!0),p(ne,null,he(v.value,O=>(d(),p("label",{key:O.name,class:Z(["flex cursor-pointer items-start gap-2 rounded-md border px-2.5 py-2 transition-colors",L(O.name)?"border-primary-200 bg-primary-50/50 dark:border-primary-800 dark:bg-primary-950/20":"border-gray-200 dark:border-gray-700"])},[a("input",{type:"checkbox",checked:L(O.name),disabled:u.readonly,class:"mt-0.5 h-3.5 w-3.5 shrink-0 rounded border-gray-300 text-primary-600 focus:ring-primary-500",onChange:ue=>M(O.name)},null,40,Bc),a("div",Pc,[a("div",Nc,c(O.name),1),a("div",jc,c(O.description),1)])],2))),128))])])],512),[[yt,S.value==="tools"]])]),a("div",Uc,[a("div",null,[!u.readonly&&!h.value&&y.value?.builtinId?(d(),B(J,{key:0,variant:"outline",color:"warning",loading:m.value,onClick:E},{default:D(()=>[ee(c(e(t)("ai.assistant.config.resetDefault")),1)]),_:1},8,["loading"])):V("",!0)]),a("div",Wc,[f(J,{variant:"ghost",onClick:se},{default:D(()=>[ee(c(u.readonly?e(t)("common.close"):e(t)("common.cancel")),1)]),_:1}),u.readonly?V("",!0):(d(),B(J,{key:0,color:"primary",loading:m.value,onClick:F},{default:D(()=>[ee(c(h.value?e(t)("ai.assistant.config.create"):e(t)("common.save")),1)]),_:1},8,["loading"]))])])],64)):V("",!0)])]),_:1},8,["open"])}}}),Hc={class:"p-6"},Yc={class:"mb-4 flex items-center justify-between"},Qc={class:"text-lg font-bold text-gray-900 dark:text-gray-100"},Gc={class:"mb-4 flex gap-1 rounded-lg bg-gray-100 p-1 dark:bg-gray-800"},Jc={key:0,class:"ml-1 inline-flex h-4 min-w-4 items-center justify-center rounded-full bg-primary-100 px-1 text-[10px] text-primary-600 dark:bg-primary-900/30 dark:text-primary-400"},Xc={class:"mb-3 text-xs text-gray-500 dark:text-gray-400"},Zc={class:"max-h-[400px] space-y-3 overflow-y-auto pr-1"},em={class:"min-w-0 flex-1"},tm={class:"flex items-center gap-2"},am={class:"text-sm font-semibold text-gray-900 dark:text-gray-100"},sm={key:0,class:"inline-flex shrink-0 items-center rounded-full bg-blue-100 px-2 py-0.5 text-[10px] font-medium text-blue-700 dark:bg-blue-900/30 dark:text-blue-400"},om={key:1,class:"inline-flex shrink-0 items-center rounded-full bg-green-100 px-2 py-0.5 text-[10px] font-medium text-green-700 dark:bg-green-900/30 dark:text-green-400"},nm={class:"mt-1 line-clamp-1 text-xs text-gray-500 dark:text-gray-400"},lm={class:"flex shrink-0 items-center gap-1.5"},im=["title","onClick"],rm=["title","onClick"],um=["title","onClick"],dm={key:0,class:"py-12 text-center text-sm text-gray-400"},cm={class:"mb-3 text-xs text-gray-500 dark:text-gray-400"},mm={key:0,class:"py-12 text-center text-sm text-gray-400"},pm={key:1,class:"py-12 text-center"},gm={class:"text-sm text-gray-500 dark:text-gray-400"},fm={key:2,class:"max-h-[400px] space-y-3 overflow-y-auto pr-1"},vm={class:"min-w-0 flex-1"},hm={class:"flex items-center gap-2"},ym={class:"text-sm font-semibold text-gray-900 dark:text-gray-100"},xm={key:0,class:"inline-flex shrink-0 items-center rounded-full bg-blue-100 px-2 py-0.5 text-[10px] font-medium text-blue-700 dark:bg-blue-900/30 dark:text-blue-400"},bm={key:1,class:"inline-flex shrink-0 items-center rounded-full bg-green-100 px-2 py-0.5 text-[10px] font-medium text-green-700 dark:bg-green-900/30 dark:text-green-400"},_m={class:"mt-1 line-clamp-1 text-xs text-gray-500 dark:text-gray-400"},km={class:"flex shrink-0 items-center gap-2"},wm=["disabled","onClick"],Cm={class:"px-3 py-1.5 text-xs font-medium text-gray-400 dark:text-gray-500"},$m=["disabled","onClick"],Sm=["title","onClick"],Im={key:3,class:"py-12 text-center text-sm text-gray-400"},Tm=le({__name:"AssistantMarketModal",props:{open:{type:Boolean}},emits:["update:open","configure","view-config","create"],setup(u,{emit:n}){const{t,locale:s}=Ce(),o=_t(),i=u,l=n,r=Lt(),{assistants:m,cloudCatalogWithStatus:y,cloudLoading:h,cloudError:S}=bt(r),x=A("local"),I=q(()=>{const T=s.value;return[...m.value].filter(M=>!M.supportedLocales?.length||M.supportedLocales.some(L=>T.startsWith(L))).sort((M,L)=>M.name.localeCompare(L.name))}),w=q(()=>[...y.value].sort((T,M)=>T.name.localeCompare(M.name))),v=A(new Set);me(()=>[i.open,x.value],([T,M])=>{T&&M==="market"&&r.fetchCloudCatalog(s.value)},{immediate:!0});function _(T){l("configure",T)}async function k(T){Ft(T)||await r.deleteAssistant(T)}async function C(T){await r.duplicateAssistant(T)}function $(){l("create")}async function g(T){if(!v.value.has(T.id)){v.value=new Set([...v.value,T.id]);try{const M=await r.importFromCloud(T);M.success?o.success(t("ai.assistant.market.importSuccess")):o.fail(t("ai.assistant.market.importFailed"),{description:M.error})}finally{const M=new Set(v.value);M.delete(T.id),v.value=M}}}async function b(T){if(!v.value.has(T.id)){v.value=new Set([...v.value,T.id]);try{const M=await r.deleteAssistant(T.id);if(!M.success){o.fail(t("ai.assistant.market.importFailed"),{description:M.error});return}const L=await r.importFromCloud(T);L.success?o.success(t("ai.assistant.market.importSuccess")):o.fail(t("ai.assistant.market.importFailed"),{description:L.error})}finally{const M=new Set(v.value);M.delete(T.id),v.value=M}}}function F(T){l("view-config",T)}function E(){r.fetchCloudCatalog(s.value)}function z(T){return T?.length?T.map(L=>t(L==="group"?"ai.assistant.config.chatTypeGroup":"ai.assistant.config.chatTypePrivate")).join(" / "):null}return(T,M)=>{const L=Se,N=Xe;return d(),B(N,{open:u.open,ui:{content:"sm:max-w-xl z-50"},"onUpdate:open":M[3]||(M[3]=U=>l("update:open",U))},{content:D(()=>[a("div",Hc,[a("div",Yc,[a("h2",Qc,c(e(t)("ai.assistant.market.title")),1),a("button",{class:"rounded-lg p-1.5 text-gray-400 transition-colors hover:bg-gray-100 hover:text-gray-600 dark:hover:bg-gray-800 dark:hover:text-gray-300",onClick:M[0]||(M[0]=U=>l("update:open",!1))},[f(L,{name:"i-heroicons-x-mark",class:"h-5 w-5"})])]),a("div",Gc,[a("button",{class:Z(["flex-1 rounded-md px-3 py-1.5 text-xs font-medium transition-colors",x.value==="local"?"bg-white text-gray-900 shadow-sm dark:bg-gray-700 dark:text-white":"text-gray-500 hover:text-gray-700 dark:text-gray-400"]),onClick:M[1]||(M[1]=U=>x.value="local")},[ee(c(e(t)("ai.assistant.market.tabs.local"))+" ",1),I.value.length?(d(),p("span",Jc,c(I.value.length),1)):V("",!0)],2),a("button",{class:Z(["flex-1 rounded-md px-3 py-1.5 text-xs font-medium transition-colors",x.value==="market"?"bg-white text-gray-900 shadow-sm dark:bg-gray-700 dark:text-white":"text-gray-500 hover:text-gray-700 dark:text-gray-400"]),onClick:M[2]||(M[2]=U=>x.value="market")},c(e(t)("ai.assistant.market.tabs.market")),3)]),tt(a("div",null,[a("p",Xc,c(e(t)("ai.assistant.market.localHint")),1),a("div",Zc,[(d(!0),p(ne,null,he(I.value,U=>(d(),p("div",{key:U.id,class:"flex items-center gap-4 rounded-xl border border-gray-200 bg-white p-4 transition-colors dark:border-gray-700 dark:bg-gray-800"},[a("div",em,[a("div",tm,[a("h3",am,c(U.name),1),z(U.applicableChatTypes)?(d(),p("span",sm,c(z(U.applicableChatTypes)),1)):V("",!0),e(Ft)(U.id)?(d(),p("span",om,c(e(t)("ai.assistant.market.default")),1)):V("",!0)]),a("p",nm,c(U.systemPrompt),1)]),a("div",lm,[a("button",{class:"rounded-lg p-1.5 text-gray-400 transition-colors hover:bg-gray-100 hover:text-gray-600 dark:hover:bg-gray-700 dark:hover:text-gray-300",title:e(t)("common.edit"),onClick:Oe(H=>_(U.id),["stop"])},[f(L,{name:"i-heroicons-pencil-square",class:"h-4 w-4"})],8,im),a("button",{class:"rounded-lg p-1.5 text-gray-400 transition-colors hover:bg-gray-100 hover:text-gray-600 dark:hover:bg-gray-700 dark:hover:text-gray-300",title:e(t)("ai.assistant.market.duplicate"),onClick:Oe(H=>C(U.id),["stop"])},[f(L,{name:"i-heroicons-document-duplicate",class:"h-4 w-4"})],8,rm),e(Ft)(U.id)?V("",!0):(d(),p("button",{key:0,class:"rounded-lg p-1.5 text-gray-400 transition-colors hover:bg-red-50 hover:text-red-500 dark:hover:bg-red-900/20 dark:hover:text-red-400",title:e(t)("common.delete"),onClick:Oe(H=>k(U.id),["stop"])},[f(L,{name:"i-heroicons-trash",class:"h-4 w-4"})],8,um))])]))),128))]),a("button",{type:"button",class:"mt-3 flex w-full items-center justify-center gap-1.5 rounded-xl border-2 border-dashed border-gray-300 py-4 text-sm text-gray-500 transition-colors hover:border-primary-400 hover:text-primary-600 dark:border-gray-600 dark:text-gray-400 dark:hover:border-primary-500 dark:hover:text-primary-400",onClick:$},[f(L,{name:"i-heroicons-plus",class:"h-4 w-4"}),ee(" "+c(e(t)("ai.assistant.market.addAssistant")),1)]),I.value.length===0?(d(),p("div",dm,c(e(t)("ai.assistant.market.noLocal")),1)):V("",!0)],512),[[yt,x.value==="local"]]),tt(a("div",null,[a("p",cm,c(e(t)("ai.assistant.market.marketHint")),1),e(h)?(d(),p("div",mm,c(e(t)("ai.assistant.market.loading")),1)):e(S)?(d(),p("div",pm,[a("p",gm,c(e(t)("ai.assistant.market.loadFailed")),1),a("button",{type:"button",class:"mt-3 rounded-lg bg-primary-500 px-4 py-2 text-sm font-medium text-white transition-colors hover:bg-primary-600",onClick:E},c(e(t)("ai.assistant.market.retry")),1)])):(d(),p("div",fm,[(d(!0),p(ne,null,he(w.value,U=>(d(),p("div",{key:U.id,class:"flex items-center gap-4 rounded-xl border border-gray-200 bg-white p-4 transition-colors dark:border-gray-700 dark:bg-gray-800"},[a("div",vm,[a("div",hm,[a("h3",ym,c(U.name),1),z(U.applicableChatTypes)?(d(),p("span",xm,c(z(U.applicableChatTypes)),1)):V("",!0),e(Ft)(U.id)?(d(),p("span",bm,c(e(t)("ai.assistant.market.default")),1)):V("",!0)]),a("p",_m,c(U.description),1)]),a("div",km,[U.imported?(d(),p(ne,{key:1},[a("span",Cm,c(e(t)("ai.assistant.market.imported")),1),a("button",{class:"rounded-lg px-3 py-1.5 text-xs font-medium text-gray-500 transition-colors hover:bg-gray-100 hover:text-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-gray-300 disabled:opacity-50",disabled:v.value.has(U.id),onClick:H=>b(U)},c(v.value.has(U.id)?e(t)("ai.assistant.market.importing"):e(t)("ai.assistant.market.reimport")),9,$m)],64)):(d(),p("button",{key:0,class:"rounded-lg bg-primary-500 px-3 py-1.5 text-xs font-medium text-white transition-colors hover:bg-primary-600 disabled:opacity-50",disabled:v.value.has(U.id),onClick:H=>g(U)},c(v.value.has(U.id)?e(t)("ai.assistant.market.importing"):e(t)("ai.assistant.market.import")),9,wm)),U.imported?(d(),p("button",{key:2,class:"rounded-lg p-1.5 text-gray-400 transition-colors hover:bg-gray-100 hover:text-gray-600 dark:hover:bg-gray-700 dark:hover:text-gray-300",title:e(t)("ai.assistant.market.viewConfig"),onClick:Oe(H=>F(U.id),["stop"])},[f(L,{name:"i-heroicons-eye",class:"h-4 w-4"})],8,Sm)):V("",!0)])]))),128))])),!e(h)&&!e(S)&&w.value.length===0?(d(),p("div",Im,c(e(t)("ai.assistant.market.noCatalog")),1)):V("",!0)],512),[[yt,x.value==="market"]])])]),_:1},8,["open"])}}}),Mm={class:"p-5"},Am={class:"flex items-start gap-3"},qm={class:"flex h-10 w-10 shrink-0 items-center justify-center rounded-xl bg-primary-50 text-primary-600 dark:bg-primary-950/40 dark:text-primary-400"},zm={class:"min-w-0"},Dm={class:"font-semibold text-gray-900 dark:text-white"},Lm={class:"mt-1.5 text-sm leading-6 text-gray-600 dark:text-gray-400"},Em={class:"mt-4 rounded-lg bg-gray-50 px-3 py-2.5 dark:bg-gray-800/70"},Vm={class:"flex items-center gap-2 text-sm text-gray-700 dark:text-gray-300"},Fm={class:"truncate"},Rm={class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},Om={class:"mt-5 flex justify-end gap-2"},Bm=le({__name:"AssistantUpgradeModal",props:{open:{type:Boolean},backupName:{},upgrading:{type:Boolean},skipping:{type:Boolean}},emits:["skip","confirm"],setup(u,{emit:n}){const t=n,{t:s}=Ce();return(o,i)=>{const l=Se,r=Ne,m=Xe;return d(),B(m,{open:u.open,dismissible:!1,ui:{content:"sm:max-w-md z-50",overlay:"z-40"}},{content:D(()=>[a("div",Mm,[a("div",Am,[a("div",qm,[f(l,{name:"i-lucide-sparkles",class:"h-5 w-5"})]),a("div",zm,[a("h3",Dm,c(e(s)("ai.assistant.upgrade.title")),1),a("p",Lm,c(e(s)("ai.assistant.upgrade.message",{backupName:u.backupName})),1)])]),a("div",Em,[a("div",Vm,[f(l,{name:"i-lucide-copy-check",class:"h-4 w-4 shrink-0 text-gray-400"}),a("span",Fm,c(u.backupName),1)])]),a("p",Rm,c(e(s)("ai.assistant.upgrade.skipHint")),1),a("div",Om,[f(r,{variant:"soft",loading:u.skipping,disabled:u.upgrading,onClick:i[0]||(i[0]=y=>t("skip"))},{default:D(()=>[ee(c(e(s)("ai.assistant.upgrade.skip")),1)]),_:1},8,["loading","disabled"]),f(r,{color:"primary",loading:u.upgrading,disabled:u.skipping,onClick:i[1]||(i[1]=y=>t("confirm"))},{default:D(()=>[ee(c(e(s)("ai.assistant.upgrade.confirm")),1)]),_:1},8,["loading","disabled"])])])]),_:1},8,["open"])}}}),Pm={class:"p-6"},Nm={class:"mb-4 flex items-center justify-between"},jm={class:"text-lg font-bold text-gray-900 dark:text-gray-100"},Um={class:"mb-4 flex gap-1 rounded-lg bg-gray-100 p-1 dark:bg-gray-800"},Wm={key:0,class:"ml-1 inline-flex h-4 min-w-4 items-center justify-center rounded-full bg-primary-100 px-1 text-[10px] text-primary-600 dark:bg-primary-900/30 dark:text-primary-400"},Km={class:"mb-3 text-xs text-gray-500 dark:text-gray-400"},Hm={class:"max-h-[400px] space-y-3 overflow-y-auto pr-1"},Ym={class:"min-w-0 flex-1"},Qm={class:"flex items-center gap-2"},Gm={class:"text-sm font-semibold text-gray-900 dark:text-gray-100"},Jm={class:"inline-flex shrink-0 items-center rounded-full bg-blue-100 px-2 py-0.5 text-[10px] font-medium text-blue-700 dark:bg-blue-900/30 dark:text-blue-400"},Xm={class:"mt-1 line-clamp-1 text-xs text-gray-500 dark:text-gray-400"},Zm={key:0,class:"mt-1.5 flex flex-wrap gap-1"},ep={class:"flex shrink-0 items-center gap-1.5"},tp=["title","onClick"],ap=["title","onClick"],sp={key:0,class:"py-12 text-center text-sm text-gray-400"},op={class:"mb-3 text-xs text-gray-500 dark:text-gray-400"},np={key:0,class:"py-12 text-center text-sm text-gray-400"},lp={key:1,class:"py-12 text-center"},ip={class:"text-sm text-gray-500 dark:text-gray-400"},rp={key:2,class:"max-h-[400px] space-y-3 overflow-y-auto pr-1"},up={class:"min-w-0 flex-1"},dp={class:"flex items-center gap-2"},cp={class:"text-sm font-semibold text-gray-900 dark:text-gray-100"},mp={class:"inline-flex shrink-0 items-center rounded-full bg-blue-100 px-2 py-0.5 text-[10px] font-medium text-blue-700 dark:bg-blue-900/30 dark:text-blue-400"},pp={class:"mt-1 line-clamp-1 text-xs text-gray-500 dark:text-gray-400"},gp={key:0,class:"mt-1.5 flex flex-wrap gap-1"},fp={class:"flex shrink-0 items-center gap-2"},vp=["disabled","onClick"],hp={class:"px-3 py-1.5 text-xs font-medium text-gray-400 dark:text-gray-500"},yp=["disabled","onClick"],xp={key:3,class:"py-12 text-center text-sm text-gray-400"},bp=le({__name:"SkillMarketModal",props:{open:{type:Boolean}},emits:["update:open","configure","create"],setup(u,{emit:n}){const{t,locale:s}=Ce(),o=_t(),i=u,l=n,r=Zt(),{skills:m,cloudCatalogWithStatus:y,cloudLoading:h,cloudError:S}=bt(r),x=A("local"),I=A(new Set);De(()=>{r.setFilterContext("group",s.value)}),me(()=>[i.open,x.value],([E,z])=>{E&&z==="market"&&(r.setFilterContext("group",s.value),r.fetchCloudCatalog())},{immediate:!0});const w=q(()=>[...m.value].sort((E,z)=>E.name.localeCompare(z.name))),v=q(()=>[...y.value].sort((E,z)=>E.name.localeCompare(z.name)));function _(E){return t(E==="group"?"ai.skill.config.chatScopeGroup":E==="private"?"ai.skill.config.chatScopePrivate":"ai.skill.config.chatScopeAll")}function k(E){l("configure",E)}async function C(E){await r.deleteSkill(E)}function $(){l("create")}async function g(E){if(!I.value.has(E.id)){I.value=new Set([...I.value,E.id]);try{const z=await r.importFromCloud(E);z.success?o.success(t("ai.skill.market.importSuccess")):o.fail(t("ai.skill.market.importFailed"),{description:z.error})}finally{const z=new Set(I.value);z.delete(E.id),I.value=z}}}async function b(E){if(!I.value.has(E.id)){I.value=new Set([...I.value,E.id]);try{const z=await r.deleteSkill(E.id);if(!z.success){o.fail(t("ai.skill.market.importFailed"),{description:z.error});return}const T=await r.importFromCloud(E);T.success?o.success(t("ai.skill.market.importSuccess")):o.fail(t("ai.skill.market.importFailed"),{description:T.error})}finally{const z=new Set(I.value);z.delete(E.id),I.value=z}}}function F(){r.fetchCloudCatalog()}return(E,z)=>{const T=Se,M=Xe;return d(),B(M,{open:u.open,ui:{content:"sm:max-w-xl z-50"},"onUpdate:open":z[3]||(z[3]=L=>l("update:open",L))},{content:D(()=>[a("div",Pm,[a("div",Nm,[a("h2",jm,c(e(t)("ai.skill.market.title")),1),a("button",{class:"rounded-lg p-1.5 text-gray-400 transition-colors hover:bg-gray-100 hover:text-gray-600 dark:hover:bg-gray-800 dark:hover:text-gray-300",onClick:z[0]||(z[0]=L=>l("update:open",!1))},[f(T,{name:"i-heroicons-x-mark",class:"h-5 w-5"})])]),a("div",Um,[a("button",{class:Z(["flex-1 rounded-md px-3 py-1.5 text-xs font-medium transition-colors",x.value==="local"?"bg-white text-gray-900 shadow-sm dark:bg-gray-700 dark:text-white":"text-gray-500 hover:text-gray-700 dark:text-gray-400"]),onClick:z[1]||(z[1]=L=>x.value="local")},[ee(c(e(t)("ai.skill.market.tabs.local"))+" ",1),e(m).length?(d(),p("span",Wm,c(e(m).length),1)):V("",!0)],2),a("button",{class:Z(["flex-1 rounded-md px-3 py-1.5 text-xs font-medium transition-colors",x.value==="market"?"bg-white text-gray-900 shadow-sm dark:bg-gray-700 dark:text-white":"text-gray-500 hover:text-gray-700 dark:text-gray-400"]),onClick:z[2]||(z[2]=L=>x.value="market")},c(e(t)("ai.skill.market.tabs.market")),3)]),tt(a("div",null,[a("p",Km,c(e(t)("ai.skill.market.localHint")),1),a("div",Hm,[(d(!0),p(ne,null,he(w.value,L=>(d(),p("div",{key:L.id,class:"flex items-center gap-4 rounded-xl border border-gray-200 bg-white p-4 transition-colors dark:border-gray-700 dark:bg-gray-800"},[a("div",Ym,[a("div",Qm,[a("h3",Gm,c(L.name),1),a("span",Jm,c(_(L.chatScope)),1)]),a("p",Xm,c(L.description),1),L.tags.length?(d(),p("div",Zm,[(d(!0),p(ne,null,he(L.tags,N=>(d(),p("span",{key:N,class:"rounded-full bg-gray-100 px-1.5 py-0.5 text-[10px] text-gray-500 dark:bg-gray-700 dark:text-gray-400"},c(N),1))),128))])):V("",!0)]),a("div",ep,[a("button",{class:"rounded-lg p-1.5 text-gray-400 transition-colors hover:bg-gray-100 hover:text-gray-600 dark:hover:bg-gray-700 dark:hover:text-gray-300",title:e(t)("common.edit"),onClick:Oe(N=>k(L.id),["stop"])},[f(T,{name:"i-heroicons-pencil-square",class:"h-4 w-4"})],8,tp),a("button",{class:"rounded-lg p-1.5 text-gray-400 transition-colors hover:bg-red-50 hover:text-red-500 dark:hover:bg-red-900/20 dark:hover:text-red-400",title:e(t)("common.delete"),onClick:Oe(N=>C(L.id),["stop"])},[f(T,{name:"i-heroicons-trash",class:"h-4 w-4"})],8,ap)])]))),128))]),a("button",{type:"button",class:"mt-3 flex w-full items-center justify-center gap-1.5 rounded-xl border-2 border-dashed border-gray-300 py-4 text-sm text-gray-500 transition-colors hover:border-primary-400 hover:text-primary-600 dark:border-gray-600 dark:text-gray-400 dark:hover:border-primary-500 dark:hover:text-primary-400",onClick:$},[f(T,{name:"i-heroicons-plus",class:"h-4 w-4"}),ee(" "+c(e(t)("ai.skill.market.addSkill")),1)]),w.value.length===0?(d(),p("div",sp,c(e(t)("ai.skill.market.noLocal")),1)):V("",!0)],512),[[yt,x.value==="local"]]),tt(a("div",null,[a("p",op,c(e(t)("ai.skill.market.marketHint")),1),e(h)?(d(),p("div",np,c(e(t)("ai.skill.market.loading")),1)):e(S)?(d(),p("div",lp,[a("p",ip,c(e(t)("ai.skill.market.loadFailed")),1),a("button",{type:"button",class:"mt-3 rounded-lg bg-primary-500 px-4 py-2 text-sm font-medium text-white transition-colors hover:bg-primary-600",onClick:F},c(e(t)("ai.skill.market.retry")),1)])):(d(),p("div",rp,[(d(!0),p(ne,null,he(v.value,L=>(d(),p("div",{key:L.id,class:"flex items-center gap-4 rounded-xl border border-gray-200 bg-white p-4 transition-colors dark:border-gray-700 dark:bg-gray-800"},[a("div",up,[a("div",dp,[a("h3",cp,c(L.name),1),a("span",mp,c(_(L.chatScope)),1)]),a("p",pp,c(L.description),1),L.tags?.length?(d(),p("div",gp,[(d(!0),p(ne,null,he(L.tags,N=>(d(),p("span",{key:N,class:"rounded-full bg-gray-100 px-1.5 py-0.5 text-[10px] text-gray-500 dark:bg-gray-700 dark:text-gray-400"},c(N),1))),128))])):V("",!0)]),a("div",fp,[L.imported?(d(),p(ne,{key:1},[a("span",hp,c(e(t)("ai.skill.market.imported")),1),a("button",{class:"rounded-lg px-3 py-1.5 text-xs font-medium text-gray-500 transition-colors hover:bg-gray-100 hover:text-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-gray-300 disabled:opacity-50",disabled:I.value.has(L.id),onClick:N=>b(L)},c(I.value.has(L.id)?e(t)("ai.skill.market.importing"):e(t)("ai.skill.market.reimport")),9,yp)],64)):(d(),p("button",{key:0,class:"rounded-lg bg-primary-500 px-3 py-1.5 text-xs font-medium text-white transition-colors hover:bg-primary-600 disabled:opacity-50",disabled:I.value.has(L.id),onClick:N=>g(L)},c(I.value.has(L.id)?e(t)("ai.skill.market.importing"):e(t)("ai.skill.market.import")),9,vp))])]))),128))])),!e(h)&&!e(S)&&v.value.length===0?(d(),p("div",xp,c(e(t)("ai.skill.market.noCatalog")),1)):V("",!0)],512),[[yt,x.value==="market"]])])]),_:1},8,["open"])}}}),_p={class:"p-6"},kp={class:"mb-4 flex items-center justify-between"},wp={class:"text-lg font-bold text-gray-900 dark:text-gray-100"},Cp={class:"mb-3 text-xs text-gray-500 dark:text-gray-400"},$p={key:0,class:"flex h-64 items-center justify-center text-gray-400"},Sp={class:"mt-4 flex justify-end gap-2"},Ip=["disabled"],Tp=`---
|
|
67
67
|
name: ""
|
|
68
68
|
description: ""
|
|
69
69
|
tags: []
|
|
@@ -71,5 +71,5 @@ chatScope: all
|
|
|
71
71
|
tools: []
|
|
72
72
|
---
|
|
73
73
|
|
|
74
|
-
`,Mp=le({__name:"SkillConfigModal",props:{open:{type:Boolean},skillId:{}},emits:["update:open","saved","created"],setup(u,{emit:n}){const{t}=Ce(),
|
|
75
|
-
`);l.value=w}}finally{r.value=!1}}},{immediate:!0});async function h(){if(l.value.trim()){m.value=!0;try{if(x.value){const S=await i.createSkill(l.value);S.success&&S.id&&(s("created",S.id),s("update:open",!1))}else o.skillId&&(await i.updateSkill(o.skillId,l.value)).success&&(s("saved"),s("update:open",!1))}finally{m.value=!1}}}return(S,y)=>{const I=Se,w=Xe;return d(),B(w,{open:u.open,ui:{content:"sm:max-w-2xl z-50"},"onUpdate:open":y[3]||(y[3]=v=>s("update:open",v))},{content:D(()=>[a("div",_p,[a("div",kp,[a("h2",wp,c(x.value?e(t)("ai.skill.config.createTitle"):e(t)("ai.skill.config.editTitle")),1),a("button",{class:"rounded-lg p-1.5 text-gray-400 transition-colors hover:bg-gray-100 hover:text-gray-600 dark:hover:bg-gray-800 dark:hover:text-gray-300",onClick:y[0]||(y[0]=v=>s("update:open",!1))},[f(I,{name:"i-heroicons-x-mark",class:"h-5 w-5"})])]),a("p",Cp,c(e(t)("ai.skill.config.rawEditorHint")),1),r.value?(d(),p("div",$p,[f(I,{name:"i-heroicons-arrow-path",class:"mr-2 h-5 w-5 animate-spin"})])):tt((d(),p("textarea",{key:1,"onUpdate:modelValue":y[1]||(y[1]=v=>l.value=v),class:"h-[400px] w-full resize-none rounded-lg border border-gray-300 bg-gray-50 p-3 font-mono text-xs text-gray-900 focus:border-primary-500 focus:ring-1 focus:ring-primary-500 dark:border-gray-600 dark:bg-page-dark dark:text-gray-100",spellcheck:"false"},null,512)),[[Wt,l.value]]),a("div",Sp,[a("button",{class:"rounded-lg px-4 py-2 text-sm text-gray-500 transition-colors hover:bg-gray-100 dark:text-gray-400 dark:hover:bg-gray-800",onClick:y[2]||(y[2]=v=>s("update:open",!1))},c(e(t)("common.cancel")),1),a("button",{class:"rounded-lg bg-primary-500 px-4 py-2 text-sm font-medium text-white transition-colors hover:bg-primary-600 disabled:opacity-50",disabled:m.value||!l.value.trim(),onClick:h},c(x.value?e(t)("ai.skill.config.create"):e(t)("ai.skill.config.save")),9,Ip)])])]),_:1},8,["open"])}}}),Ap={key:0,class:"relative"},qp={class:"relative flex flex-nowrap gap-2"},zp=["disabled"],Dp=["disabled"],Lp={class:"inline-flex items-center gap-1"},Ep={key:0,class:"absolute left-0 bottom-full z-20 mb-2 w-[320px] max-w-[calc(100vw-3rem)]"},Vp={class:"mb-1.5 flex justify-start"},Fp={class:"flex flex-wrap gap-2"},Rp=["disabled","onClick"],ra="rounded-full ring-1 ring-inset ring-gray-200/80 bg-white/60 shadow-[0_2px_8px_-2px_rgba(0,0,0,0.05)] backdrop-blur-md px-3 py-1.5 text-xs text-gray-600 transition-all duration-300 hover:-translate-y-[1px] hover:ring-primary-300 hover:bg-white/90 hover:text-primary-600 hover:shadow-[0_4px_12px_-2px_rgba(0,0,0,0.08)] disabled:cursor-not-allowed disabled:opacity-50 dark:ring-gray-700/60 dark:bg-gray-800/60 dark:text-gray-300 dark:hover:ring-primary-500/50 dark:hover:bg-gray-800/90 dark:hover:text-primary-400",Op=le({__name:"PresetQuestions",props:{questions:{},disabled:{type:Boolean},leadingActionLabel:{}},emits:["select","leadingAction","editQuestions"],setup(u,{emit:n}){const{t}=Ce(),o=u,s=n,i=A(!1);let l=null;function r(S){i.value=!1,s("select",S)}function m(){o.disabled||o.questions.length===0||(l&&(clearTimeout(l),l=null),i.value=!0)}function x(){l=setTimeout(()=>{i.value=!1},150)}function h(){i.value=!1,s("editQuestions")}return xa(()=>{l&&clearTimeout(l)}),(S,y)=>{const I=Se;return u.leadingActionLabel||u.questions.length>0?(d(),p("div",Ap,[a("div",qp,[u.leadingActionLabel?(d(),p("button",{key:0,class:Z(ra),disabled:o.disabled,onClick:y[0]||(y[0]=w=>s("leadingAction"))},c(u.leadingActionLabel),9,zp)):V("",!0),u.questions.length>0?(d(),p("div",{key:1,class:"relative shrink-0",onMouseenter:m,onMouseleave:x},[a("button",{class:Z([ra,i.value?"ring-primary-300 bg-white/90 text-primary-600 dark:ring-primary-500/50 dark:bg-gray-800/90 dark:text-primary-400":""]),disabled:o.disabled},[a("span",Lp,[f(I,{name:"i-heroicons-chat-bubble-left-ellipsis",class:"h-3.5 w-3.5"}),ee(" "+c(e(t)("ai.chat.input.quickAsk")),1)])],10,Dp),f(It,{"enter-active-class":"transition duration-200 ease-out","enter-from-class":"opacity-0 translate-y-2","enter-to-class":"opacity-100 translate-y-0","leave-active-class":"transition duration-150 ease-in","leave-from-class":"opacity-100 translate-y-0","leave-to-class":"opacity-0 translate-y-2"},{default:D(()=>[i.value?(d(),p("div",Ep,[a("div",Vp,[a("button",{class:"inline-flex items-center gap-1 rounded-full px-2 py-0.5 text-[10px] text-gray-400 transition-colors hover:text-primary-500 dark:text-gray-500 dark:hover:text-primary-400",onClick:h},[f(I,{name:"i-heroicons-pencil-square",class:"h-3 w-3"}),ee(" "+c(e(t)("ai.chat.input.editQuickAsk")),1)])]),a("div",Fp,[(d(!0),p(ne,null,he(u.questions,(w,v)=>(d(),p("button",{key:v,class:Z(ra),disabled:o.disabled,onClick:_=>r(w)},c(w),9,Rp))),128))])])):V("",!0)]),_:1})],32)):V("",!0)])])):V("",!0)}}});function Bp(){const u=Dt(),n=Xt(),t=A(!1),o=A(null),s=A(!1),i=A(!1),l=A(!1),r=A(!1),m=A(null);function x(b){o.value=b,s.value=!1,t.value=!0}function h(){i.value=!0}function S(b){o.value=b,s.value=!1,t.value=!0}function y(b){o.value=b,s.value=!0,t.value=!0}function I(){o.value=null,s.value=!1,t.value=!0}async function w(b){await u.loadAssistants()}async function v(){await u.loadAssistants()}function _(){l.value=!0}function k(b){m.value=b,r.value=!0}function C(){m.value=null,r.value=!0}async function $(){await n.loadSkills()}async function g(b){await n.loadSkills(),await n.loadBuiltinCatalog()}return{configModalVisible:t,configModalAssistantId:o,configModalReadonly:s,marketModalVisible:i,handleConfigureAssistant:x,handleOpenMarket:h,handleMarketConfigure:S,handleMarketViewConfig:y,handleCreateAssistant:I,handleAssistantCreated:w,handleAssistantConfigSaved:v,skillMarketModalVisible:l,skillConfigModalVisible:r,skillConfigModalSkillId:m,handleOpenSkillMarket:_,handleSkillMarketConfigure:k,handleCreateSkill:C,handleSkillConfigSaved:$,handleSkillCreated:g}}const Pp={class:"main-content relative flex h-full overflow-hidden"},Np={class:"flex h-full min-w-0 flex-1 overflow-hidden"},jp={class:"flex h-full min-w-0 flex-1"},Up={class:"relative flex min-w-[480px] flex-1 flex-col overflow-hidden"},Wp={key:0,class:"flex items-center justify-end gap-1 px-3 py-1.5"},Kp=["disabled"],Hp={key:0,class:"flex w-full flex-col items-center justify-center animate-fade-in"},Yp={key:0,class:"mb-3 text-center text-2xl font-semibold tracking-tight text-gray-800 dark:text-gray-100"},Qp={class:"text-primary-600 dark:text-primary-400"},Gp={key:1,class:"relative mb-8 w-full max-w-lg"},Jp={class:"flex w-full justify-center"},Xp={key:1,class:"flex justify-center pb-2"},Zp={key:1,class:"qa-pair space-y-6 pb-4"},eg={key:1,class:"px-4 pb-2"},tg={class:"mx-auto max-w-3xl"},ag={class:"px-4 pb-3"},sg={class:"mx-auto max-w-3xl"},og={class:"relative 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 dark:focus-within:ring-primary-500/40"},ng={key:0,class:"w-80 shrink-0 border-l border-gray-200 bg-gray-50/50 p-4 dark:border-gray-800 dark:bg-page-dark/50"},lg=le({__name:"ChatExplorer",props:{sessionId:{},sessionName:{},timeFilter:{},chatType:{}},setup(u,{expose:n}){const{t}=Ce(),o=is(),s=Lo(),i=_t(),l=Gt(),r=Dt(),m=Xt(),x=u,h=typeof o.query.aiChatId=="string"?o.query.aiChatId:null,{initialization:S,messages:y,sourceMessages:I,currentKeywords:w,isLoadingSource:v,isAIThinking:_,currentAIChatId:k,currentToolStatus:C,sessionTokenUsage:$,agentStatus:g,selectedAssistantId:b,sendMessage:F,editMessageAndRegenerate:E,loadAIChat:z,startNewAIChat:T,stopGeneration:M,selectAssistantForSession:L}=li(x.sessionId,x.sessionName,x.timeFilter,x.chatType??"group",l.locale,h);let N=!1,U=!1;const H=A(!1);let ie=setTimeout(()=>{H.value=!0},120);function se(){ie&&(clearTimeout(ie),ie=null),H.value=!1}function P(){const ge=(x.chatType??"group")==="private"?"private-chat":"group-chat";return!U&&o.name===ge&&String(o.params.id??"")===x.sessionId}async function R(ge){!P()||(typeof o.query.aiChatId=="string"?o.query.aiChatId:null)===ge||await s.replace({query:{...o.query,aiChatId:ge||void 0}})}S.finally(()=>{se(),P()&&(N=!0,R(k.value))}),Je(()=>{U=!0,se()}),pe(k,ge=>{N&&P()&&R(ge)});const J=an(y,_),{showScrollToBottom:fe,scrollToBottom:X,handleScrollToBottom:W}=J,{configModalVisible:ae,configModalAssistantId:O,configModalReadonly:ue,marketModalVisible:we,skillMarketModalVisible:xe,skillConfigModalVisible:te,skillConfigModalSkillId:K,handleConfigureAssistant:j,handleOpenMarket:de,handleMarketConfigure:be,handleMarketViewConfig:ke,handleCreateAssistant:ze,handleAssistantCreated:je,handleAssistantConfigSaved:qe,handleOpenSkillMarket:He,handleSkillMarketConfigure:Ue,handleCreateSkill:Te,handleSkillConfigSaved:re,handleSkillCreated:ce}=Bp(),Q=us(),oe=A(0);pe(()=>k.value,async ge=>{if(!ge){oe.value=0;return}try{const ye=await ot().estimateContextTokens(ge);ye.success&&(oe.value=ye.tokens)}catch{oe.value=0}},{immediate:!0});const Y=q(()=>r.selectedAssistant?.presetQuestions??[]),Ie=q(()=>x.chatType??"group"),G=A(!1),me=A(!1),$e=A(!0),Ye=A(void 0),We=A(null),Le=A(null),Me=A(null),Ge=A(!1),kt=A(!1),wt=A(!1),Ma=q(()=>{const ge=Me.value?.name||t("ai.assistant.fallbackName");return t("ai.assistant.upgrade.backupName",{name:ge})}),ws=q(()=>dn(y.value)),Cs=q(()=>{const ge=y.value.findLastIndex(st=>st.role==="user");if(ge<0)return null;const ye=y.value.slice(ge+1);return ye.length===0||ye.length===1&&ye[0]?.role==="assistant"?y.value[ge]?.id??null:null}),$s=sn(ws,k,J.messagesContainer),{visiblePairs:Ss,hasOlderPairs:Is,loadOlderPairs:Aa}=$s;async function qa(){$e.value=!0;try{me.value=await ba().hasConfig()}catch(ge){console.error("检查 LLM 配置失败:",ge),me.value=!1}finally{$e.value=!1}}async function za(){await qa()}n({refreshConfig:za});const Et=q(()=>{const ge=r.selectedAssistant;if(!ge)return{name:"",preview:""};const ye=ge.systemPrompt.replace(/#{1,6}\s+[^\n]*/g,"").replace(/\n+/g," ").replace(/\s+/g," ").trim();return{name:ge.name,preview:ye}}),Ts=q(()=>!!b.value&&y.value.length===0&&!_.value);function sa(){i.warn(t("ai.chat.backgroundTask.runningTitle"),{description:t("ai.chat.backgroundTask.runningDescription")})}function Da(){i.warn(t("ai.chat.backgroundTask.blockedAction"))}function Ms(ge){if(ge!==b.value){if(!L(ge)){Da();return}m.activateSkill(null),T()}}async function As(ge){const ye=await F(ge);if(!ye.success){ye.reason==="error"&&We.value?.refresh(),ye.reason==="busy"&&sa();return}X(!0),We.value?.refresh()}function qs(){const ge=r.selectedAssistant?.id;ge&&(Ye.value="presetQuestions",j(ge))}function zs(ge){ae.value=ge,ge||(Ye.value=void 0)}function Ds(){Le.value?.openSkillSelector()}function Ls(){X(!0)}async function La(){const ge=await r.checkDefaultAssistantUpgrade(l.locale);ge&&(Me.value=ge,Ge.value=!0)}async function Es(){const ge=Me.value;if(!(!ge||kt.value||wt.value)){wt.value=!0;try{const ye=await r.skipAssistantUpgrade(ge);if(!ye.success){i.fail(t("ai.assistant.upgrade.skipFailed"),{description:ye.error||t("ai.assistant.toast.unknownError")});return}Ge.value=!1,Me.value=null}finally{wt.value=!1}}}async function Vs(){const ge=Me.value;if(!(!ge||kt.value||wt.value)){kt.value=!0;try{const ye=Ma.value,st=await r.upgradeAssistantWithBackup(ge,ye);if(!st.success){i.fail(t("ai.assistant.upgrade.failed"),{description:st.error||t("ai.assistant.toast.unknownError")});return}Ge.value=!1,Me.value=null,i.success(t("ai.assistant.upgrade.success"),{description:t("ai.assistant.upgrade.successDescription",{name:ye})})}finally{kt.value=!1}}}async function Fs(ge){const ye=await F(ge.content,{mentionedMembers:ge.mentionedMembers,onAccepted:ge.onAccepted});if(!ye.success){ye.reason==="error"&&We.value?.refresh(),ye.reason==="busy"&&sa();return}X(!0),We.value?.refresh()}async function Rs(ge){const ye=await E(ge.messageId,ge.content);if(!ye.success){ye.reason==="busy"&&sa();return}X(!0),We.value?.refresh()}async function Os(ge){if(k.value)try{const ye=await ot().forkAIChat(k.value,ge);await z(ye.id),We.value?.refresh(),X(!0),i.success(t("ai.chat.fork.success"))}catch(ye){i.fail(t("ai.chat.fork.failed"),{description:String(ye)})}}function Bs(){G.value=!G.value}async function Ps(ge){await z(ge),X(!0)}function Ns(){if(_.value){Da();return}T()}function js(ge){k.value===ge&&T()}function Us(){M()}return qa(),De(()=>{La()}),pe(()=>l.locale,()=>{La()}),pe(()=>Q.aiConfigVersion,async()=>{await za()}),(ge,ye)=>{const st=Se,Ws=Jt;return d(),p("div",Pp,[H.value?(d(),B(Tt,{key:0,variant:"overlay"})):V("",!0),f(on,{ref_key:"conversationListRef",ref:We,"session-id":u.sessionId,"active-id":e(k),disabled:e(_),onSelect:Ps,onCreate:Ns,onDelete:js},null,8,["session-id","active-id","disabled"]),a("div",Np,[a("div",jp,[a("div",Up,[e(y).length>0||e(_)?(d(),p("div",Wp,[a("button",{class:Z(["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",{"cursor-not-allowed opacity-50":e(_)||!e(r).selectedAssistant?.id}]),disabled:e(_)||!e(r).selectedAssistant?.id,onClick:ye[0]||(ye[0]=_e=>e(j)(e(r).selectedAssistant.id))},[f(st,{name:"i-heroicons-sparkles",class:"h-3.5 w-3.5"}),a("span",null,c(e(r).selectedAssistant?.name||e(t)("ai.assistant.fallbackName")),1)],10,Kp),f(nn,{"current-ai-chat-id":e(k),"current-messages":e(y),"fallback-title":u.sessionName},null,8,["current-ai-chat-id","current-messages","fallback-title"])])):V("",!0),a("div",{ref:e(J).messagesContainer,class:Z(["relative min-h-0 flex-1 overflow-x-hidden overflow-y-auto p-4",{"p-0!":e(y).length===0&&!e(_)}])},[a("div",{class:Z(["mx-auto max-w-3xl space-y-6",{"flex min-h-full flex-col justify-center px-4 pb-32 pt-4 space-y-0!":e(y).length===0&&!e(_),"px-4":e(y).length>0||e(_)}])},[e(y).length===0&&!e(_)?(d(),p("div",Hp,[Et.value.name?(d(),p("h2",Yp,[ee(c(e(t)("ai.assistant.selector.heroTitlePrefix","使用"))+" ",1),a("span",Qp,c(Et.value.name),1),ee(" "+c(e(t)("ai.assistant.selector.heroTitleSuffix","开始对话")),1)])):V("",!0),Ts.value&&Et.value.name?(d(),p("div",Gp,[a("p",{class:"cursor-pointer pr-7 text-center text-sm leading-relaxed text-gray-500 transition-colors hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-300 line-clamp-2",onClick:ye[1]||(ye[1]=_e=>e(j)(e(r).selectedAssistant.id))},[f(Ws,{text:e(t)("ai.assistant.config.systemPrompt","系统设定"),popper:{placement:"top"}},{default:D(()=>[ee(c(Et.value.preview),1)]),_:1},8,["text"])]),a("button",{type:"button",class:"absolute bottom-0 right-0 rounded-md p-0.5 text-gray-400 transition-colors hover:bg-gray-100 hover:text-gray-600 dark:hover:bg-gray-800 dark:hover:text-gray-200",onClick:ye[2]||(ye[2]=Oe(_e=>e(j)(e(r).selectedAssistant.id),["stop"]))},[f(st,{name:"i-heroicons-pencil-square",class:"h-4 w-4"})])])):V("",!0),a("div",Jp,[f(nc,{"chat-type":Ie.value,locale:e(l).locale,"selected-id":e(b),onSelect:Ms,onMarket:e(de)},null,8,["chat-type","locale","selected-id","onMarket"])])])):V("",!0),e(Is)?(d(),p("div",Xp,[a("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:ye[3]||(ye[3]=(..._e)=>e(Aa)&&e(Aa)(..._e))},[f(st,{name:"i-heroicons-arrow-up",class:"h-3.5 w-3.5"}),a("span",null,c(e(t)("ai.chat.history.loadEarlier")),1)])])):V("",!0),(d(!0),p(ne,null,he(e(Ss),_e=>(d(),p(ne,{key:_e.id},[_e.standalone?(d(),B(oa,{key:0,role:_e.standalone.role,content:_e.standalone.content,timestamp:_e.standalone.timestamp},null,8,["role","content","timestamp"])):(d(),p("div",Zp,[_e.user&&(_e.user.role==="user"||_e.user.content)?(d(),B(oa,{key:0,role:_e.user.role,"message-id":_e.user.id,content:_e.user.content,timestamp:_e.user.timestamp,"is-streaming":_e.user.isStreaming,"content-blocks":_e.user.contentBlocks,editable:!e(_)&&_e.user.id===Cs.value,onEdit:Rs},null,8,["role","message-id","content","timestamp","is-streaming","content-blocks","editable"])):V("",!0),_e.assistant&&(_e.assistant.content||_e.assistant.contentBlocks&&_e.assistant.contentBlocks.length>0)?(d(),B(oa,{key:1,role:_e.assistant.role,"message-id":_e.assistant.id,content:_e.assistant.content,timestamp:_e.assistant.timestamp,"is-streaming":_e.assistant.isStreaming,"process-duration-ms":_e.assistant.processDurationMs,"content-blocks":_e.assistant.contentBlocks,"show-capture-button":!_e.assistant.isStreaming,"active-tool":_e.assistant.isStreaming?e(C):null,onFork:Os},null,8,["role","message-id","content","timestamp","is-streaming","process-duration-ms","content-blocks","show-capture-button","active-tool"])):_e.assistant?.isStreaming?(d(),B(ln,{key:2,"current-tool-status":e(C),"agent-status":e(g)},null,8,["current-tool-status","agent-status"])):V("",!0)]))],64))),128))],2)],2),f(It,{name:"fade-up"},{default:D(()=>[e(fe)?(d(),p("button",{key:0,class:"absolute bottom-20 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 transition-all hover:bg-gray-700 dark:bg-gray-700/90 dark:hover:bg-gray-600",onClick:ye[4]||(ye[4]=(..._e)=>e(W)&&e(W)(..._e))},[f(st,{name:"i-heroicons-arrow-down",class:"h-3.5 w-3.5"}),a("span",null,c(e(t)("ai.chat.scrollToBottom")),1)])):V("",!0)]),_:1}),e(y).length===0&&!e(_)?(d(),p("div",eg,[a("div",tg,[f(Op,{questions:Y.value,"leading-action-label":e(t)("ai.chat.input.useSkill"),onSelect:As,onLeadingAction:Ds,onEditQuestions:qs},null,8,["questions","leading-action-label"])])])):V("",!0),a("div",ag,[a("div",sg,[a("div",og,[f(rn,{ref_key:"chatInputRef",ref:Le,"session-id":u.sessionId,disabled:e(_),status:e(_)?"streaming":"ready","chat-type":Ie.value,embedded:"",onSend:Fs,onStop:Us,onManageSkills:e(He),onSkillActivated:Ls},null,8,["session-id","disabled","status","chat-type","onManageSkills"]),f(un,{class:"pb-1.5 pl-2 pr-[52px] pt-0.5","session-token-usage":e($),"agent-status":e(g),"estimated-context-tokens":oe.value},null,8,["session-token-usage","agent-status","estimated-context-tokens"])])])])])]),f(It,{name:"slide-fade"},{default:D(()=>[e(I).length>0&&!G.value?(d(),p("div",ng,[f(Jd,{messages:e(I),keywords:e(w),"is-loading":e(v),"is-collapsed":G.value,class:"h-full",onToggle:Bs},null,8,["messages","keywords","is-loading","is-collapsed"])])):V("",!0)]),_:1})]),f(Kc,{open:e(ae),"assistant-id":e(O),readonly:e(ue),"scroll-to-section":Ye.value,"onUpdate:open":zs,onSaved:e(qe),onCreated:e(je)},null,8,["open","assistant-id","readonly","scroll-to-section","onSaved","onCreated"]),f(Bm,{open:Ge.value,"backup-name":Ma.value,upgrading:kt.value,skipping:wt.value,onSkip:Es,onConfirm:Vs},null,8,["open","backup-name","upgrading","skipping"]),f(Tm,{open:e(we),"onUpdate:open":ye[5]||(ye[5]=_e=>we.value=_e),onConfigure:e(be),onViewConfig:e(ke),onCreate:e(ze)},null,8,["open","onConfigure","onViewConfig","onCreate"]),f(bp,{open:e(xe),"onUpdate:open":ye[6]||(ye[6]=_e=>xe.value=_e),onConfigure:e(Ue),onCreate:e(Te)},null,8,["open","onConfigure","onCreate"]),f(Mp,{open:e(te),"skill-id":e(K),"onUpdate:open":ye[7]||(ye[7]=_e=>te.value=_e),onSaved:e(re),onCreated:e(ce)},null,8,["open","skill-id","onSaved","onCreated"])])}}}),Wb=gt(lg,[["__scopeId","data-v-d4cbf819"]]),ua="__ALL__",ig=le({__name:"UserSelect",props:{sessionId:{},modelValue:{}},emits:["update:modelValue"],setup(u,{emit:n}){const{t}=Ce(),o=u,s=n,i=A([]),l=A(!1),r=q({get:()=>o.modelValue===null?ua:String(o.modelValue),set:h=>{s("update:modelValue",h===ua?null:parseInt(h))}}),m=q(()=>{const h=[{value:ua,label:t("common.userSelect.allMembers")}];return i.value.forEach(S=>{const y=S.groupNickname||S.accountName||S.platformId;h.push({value:String(S.id),label:`${y} (${S.messageCount})`})}),h});async function x(){if(o.sessionId){l.value=!0;try{const h=await Pe().getMembers(o.sessionId);i.value=h.sort((S,y)=>y.messageCount-S.messageCount)}catch(h){console.error("加载成员列表失败:",h)}finally{l.value=!1}}}return pe(()=>o.sessionId,()=>{s("update:modelValue",null),x()},{immediate:!0}),(h,S)=>{const y=Ia;return d(),B(y,{modelValue:r.value,"onUpdate:modelValue":S[0]||(S[0]=I=>r.value=I),items:m.value,loading:l.value,virtualize:{estimateSize:32,overscan:10},"value-key":"value",class:"w-48"},null,8,["modelValue","items","loading"])}}}),rg={class:"relative z-10 px-6 pt-8 pb-4 sm:px-8"},ug={class:"flex items-center gap-6 sm:gap-10"},dg={class:"min-w-0 flex-1"},cg={class:"flex flex-col text-[15px] leading-relaxed text-gray-600 dark:text-gray-300"},mg={key:0,class:"mb-2 text-sm font-medium tracking-wide text-gray-500 dark:text-gray-400"},pg={class:"mb-4 flex min-w-0 flex-wrap items-baseline gap-2"},gg={class:"text-xl font-medium text-gray-700 dark:text-gray-300"},fg={class:"font-black text-5xl tracking-tight text-gray-900 dark:text-white"},vg={class:"text-xl font-medium text-gray-700 dark:text-gray-300"},hg={key:1,class:"flex min-w-0 max-w-full flex-wrap items-center gap-x-1.5 gap-y-1.5"},yg={class:"text-base font-medium text-gray-600 dark:text-gray-300"},xg={class:"font-bold tabular-nums text-pink-500 dark:text-pink-400"},bg={class:"flex shrink-0 flex-col items-center"},_g={class:"mb-1 text-[10px] font-bold text-gray-500 dark:text-gray-400"},kg={class:"relative z-10 px-6 pb-6 pt-4 sm:px-8"},wg={class:"grid grid-cols-2 gap-3 lg:grid-cols-4"},Cg={class:"min-w-0 flex-1"},$g={class:"flex items-center justify-between gap-1"},Sg={class:"mt-0.5 truncate text-[10px] font-medium text-gray-500 dark:text-gray-400"},Ig={class:"mt-0.5 truncate text-[9px] text-gray-400 dark:text-gray-500"},Tg={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"},Mg={class:"flex items-center gap-1.5"},Ag={class:"text-[9px] font-medium uppercase tracking-widest"},qg=le({__name:"TypeProfileCard",props:{sessionId:{},messageTypes:{},textStats:{},timeFilter:{}},setup(u){Zt([pn,Ca,ea]);const{t:n}=Ce(),t=Qt(),o=u,s=q(()=>o.messageTypes.reduce((M,L)=>M+L.count,0)),i=q(()=>o.messageTypes.find(M=>M.type===ut.TEXT)?.count??0),l=q(()=>{if(s.value===0)return 0;const M=s.value-i.value;return Math.round(M/s.value*100)}),r=q(()=>o.textStats.textCount===0?0:Math.round(o.textStats.shortCount/o.textStats.textCount*100)),m=A({first:"",last:""});async function x(){if(o.sessionId)try{const M=await Pe().getDailyActivity(o.sessionId,o.timeFilter);if(M.length>0){const L=[...M].sort((N,U)=>N.date.localeCompare(U.date));m.value={first:Ve(L[0].date).format("YYYY/MM/DD"),last:Ve(L[L.length-1].date).format("YYYY/MM/DD")}}}catch{}}function h(M){return o.messageTypes.find(L=>L.type===M)?.count??0}const S=q(()=>[{label:n("views.message.typeCard.nonTextImage"),count:h(ut.IMAGE),unit:n("views.message.typeCard.unitImage")},{label:n("views.message.typeCard.nonTextEmoji"),count:h(ut.EMOJI),unit:n("views.message.typeCard.unitEmoji")},{label:n("views.message.typeCard.nonTextVoice"),count:h(ut.VOICE),unit:n("views.message.typeCard.unitVoice")},{label:n("views.message.typeCard.nonTextVideo"),count:h(ut.VIDEO),unit:n("views.message.typeCard.unitVideo")},{label:n("views.message.typeCard.nonTextFile"),count:h(ut.FILE),unit:n("views.message.typeCard.unitFile")},{label:n("views.message.typeCard.nonTextLink"),count:h(ut.LINK),unit:n("views.message.typeCard.unitLink")}].filter(M=>M.count>0)),y=A(30),I=A(0),w=A(!1),v=[{label:"20",value:20},{label:"30",value:30},{label:"50",value:50},{label:"80",value:80},{label:"100",value:100}],_=q({get:()=>y.value,set:M=>{y.value!==M&&(y.value=M,k())}});async function k(){if(o.sessionId){w.value=!0;try{I.value=await Pe().getLongMessageCount(o.sessionId,o.timeFilter,y.value)}catch(M){console.error("[chart-message] Failed to load essay count:",M)}finally{w.value=!1}}}pe(()=>[o.sessionId,o.timeFilter],()=>{k(),x()},{immediate:!0,deep:!0});const C=q(()=>[{icon:"i-heroicons-pencil-square",label:n("views.message.profile.textExpression"),value:n("views.message.profile.avgLengthUnit",{count:o.textStats.avgLength||0}),subtext:o.textStats.maxLength>0?n("views.message.profile.textExpressionDesc",{count:o.textStats.maxLength}):"",colorClass:"text-violet-600 dark:text-violet-400"},{icon:"i-heroicons-chat-bubble-bottom-center-text",label:n("views.message.profile.shortMaster"),value:`${r.value}%`,subtext:n("views.message.profile.shortMasterDesc",{count:o.textStats.shortCount}),colorClass:"text-emerald-600 dark:text-emerald-400"},{icon:"i-heroicons-document-text",label:n("views.message.profile.essayLover"),value:I.value.toLocaleString(),subtext:n("views.message.profile.essayLoverDesc",{threshold:y.value}),colorClass:"text-indigo-600 dark:text-indigo-400",slot:"essay-threshold"},{icon:"i-heroicons-photo",label:n("views.message.profile.mediaRichness"),value:`${l.value}%`,subtext:S.value.slice(0,3).map(M=>`${M.label} ${M.count}`).join(" · ")||"-",colorClass:"text-pink-600 dark:text-pink-400"}]),$=A(null);let g=null;const b=["#6366f1","#ec4899","#f97316","#22c55e","#06b6d4","#8b5cf6","#f43f5e","#eab308","#14b8a6","#3b82f6"],F=q(()=>[...o.messageTypes].sort((L,N)=>N.count-L.count).slice(0,8).map((L,N)=>({name:pa(L.type,n),value:L.count,itemStyle:{color:b[N%b.length]}})));function E(){$.value&&(g=ta($.value,void 0,{renderer:"canvas"}),z())}function z(){g&&g.setOption({backgroundColor:"transparent",tooltip:{trigger:"item",formatter:"{b}: {c} ({d}%)"},series:[{type:"pie",radius:["50%","78%"],center:["50%","50%"],avoidLabelOverlap:!1,padAngle:2,itemStyle:{borderRadius:4},label:{show:!1},emphasis:{label:{show:!1},scaleSize:4},data:F.value}]},{notMerge:!0})}function T(){g?.resize()}return pe(()=>o.messageTypes,()=>z()),pe(t,()=>{g?.dispose(),E()}),De(()=>{E(),window.addEventListener("resize",T)}),Je(()=>{window.removeEventListener("resize",T),g?.dispose()}),(M,L)=>{const N=Se,U=ka;return d(),B(e(aa),null,{default:D(()=>[a("div",rg,[a("div",ug,[a("div",dg,[a("div",cg,[m.value.first?(d(),p("p",mg,c(m.value.first)+" – "+c(m.value.last),1)):V("",!0),a("div",pg,[a("span",gg,c(e(n)("views.message.profile.heroLine1Prefix")),1),a("span",fg,c(s.value.toLocaleString()),1),a("span",vg,c(e(n)("views.message.profile.heroLine1Suffix")),1)]),S.value.length>0?(d(),p("div",hg,[a("span",yg,c(e(n)("views.message.typeCard.nonTextPrefix")),1),(d(!0),p(ne,null,he(S.value,H=>(d(),p("span",{key:H.label,class:"inline-flex items-center gap-1 rounded-full bg-gray-100 px-2.5 py-0.5 text-xs font-semibold text-gray-700 dark:bg-white/10 dark:text-gray-200"},[a("span",xg,c(H.count.toLocaleString()),1),a("span",null,c(H.unit),1)]))),128))])):V("",!0)])]),a("div",bg,[a("div",_g,c(e(n)("views.message.profile.typeDistribution")),1),a("div",{ref_key:"donutRef",ref:$,style:{width:"130px",height:"130px"}},null,512)])])]),a("div",kg,[L[1]||(L[1]=a("div",{class:"mb-3 flex items-center justify-between"},[a("span",{class:"text-[10px] font-bold uppercase tracking-widest text-gray-400 dark:text-gray-500"}," Type Profile ")],-1)),a("div",wg,[(d(!0),p(ne,null,he(C.value,H=>(d(),p("div",{key:H.icon+H.label,class:"flex min-w-0 items-start gap-2 px-2.5 py-2"},[f(N,{name:H.icon,class:Z(["mt-0.5 h-3.5 w-3.5 shrink-0",H.colorClass])},null,8,["name","class"]),a("div",Cg,[a("div",$g,[a("div",{class:Z(["truncate font-mono text-sm font-black leading-tight tabular-nums",H.colorClass])},c(H.value),3),H.slot==="essay-threshold"?(d(),B(U,{key:0,modelValue:_.value,"onUpdate:modelValue":L[0]||(L[0]=ie=>_.value=ie),items:v,"value-key":"value",size:"xs",class:"relative z-120 w-16 shrink-0",ui:{content:"z-[121]"},disabled:w.value},null,8,["modelValue","disabled"])):V("",!0)]),a("div",Sg,c(H.label),1),a("div",Ig,c(H.subtext),1)])]))),128))])]),a("div",Tg,[a("div",Mg,[f(N,{name:"i-heroicons-chat-bubble-left-right-solid",class:"h-3.5 w-3.5"}),L[2]||(L[2]=a("span",{class:"text-[10px] font-bold uppercase tracking-wider"},"ChatLab",-1))]),a("span",Ag,c(e(n)("views.message.typeCard.watermark")),1)])]),_:1})}}}),zg={key:1,class:"main-content mx-auto max-w-[920px] space-y-6 p-4 sm:p-6"},Dg={class:"p-5"},Lg={key:0,class:"grid grid-cols-1 gap-6 lg:grid-cols-2 lg:items-center"},Eg={class:"space-y-3"},Vg={class:"min-w-20 shrink-0 text-sm text-gray-700 dark:text-gray-300"},Fg={class:"flex-1"},Rg={class:"h-2 overflow-hidden rounded-full bg-gray-100 dark:bg-gray-800"},Og={class:"shrink-0 text-right"},Bg={class:"text-sm font-medium text-gray-900 dark:text-white"},Pg={class:"ml-1 text-xs text-gray-400"},Ng={key:1,class:"flex h-48 items-center justify-center text-gray-400"},jg={class:"p-5"},Ug={class:"mb-5 grid grid-cols-2 gap-3 sm:grid-cols-4"},Wg={class:"p-3"},Kg={class:"font-mono text-xl font-bold text-gray-900 dark:text-white"},Hg={class:"mt-1 text-xs text-gray-500"},Yg={class:"p-3"},Qg={class:"font-mono text-xl font-bold text-indigo-600 dark:text-indigo-400"},Gg={class:"mt-1 text-xs text-gray-500"},Jg={class:"p-3"},Xg={class:"font-mono text-xl font-bold text-pink-600 dark:text-pink-400"},Zg={class:"mt-1 text-xs text-gray-500"},ef={class:"p-3"},tf={class:"font-mono text-xl font-bold text-emerald-600 dark:text-emerald-400"},af={class:"mt-1 text-xs text-gray-500"},sf={class:"mb-5 rounded-lg border border-gray-200 p-4 dark:border-gray-700"},of={class:"mb-2 text-xs font-medium text-gray-500 dark:text-gray-400"},nf={class:"flex items-center gap-4 text-sm"},lf={class:"flex items-center gap-1.5"},rf={class:"font-mono font-medium text-gray-900 dark:text-white"},uf={class:"flex items-center gap-1.5"},df={class:"font-mono font-medium text-gray-900 dark:text-white"},cf={class:"flex items-center gap-1.5"},mf={class:"font-mono font-medium text-gray-900 dark:text-white"},pf={class:"flex items-center gap-1.5"},gf={class:"font-mono font-medium text-gray-900 dark:text-white"},ff={class:"mt-3 grid grid-cols-3 gap-3 text-xs"},vf={class:"text-gray-500"},hf={class:"ml-1 font-medium text-emerald-600 dark:text-emerald-400"},yf={class:"text-gray-400"},xf={class:"text-gray-500"},bf={class:"ml-1 font-medium text-indigo-600 dark:text-indigo-400"},_f={class:"grid grid-cols-1 gap-6 lg:grid-cols-2"},kf={class:"text-xs text-gray-400"},wf={class:"p-5"},Cf={key:1,class:"flex h-48 items-center justify-center text-gray-400"},$f={class:"text-xs text-gray-400"},Sf={class:"p-5"},If={key:1,class:"flex h-48 items-center justify-center text-gray-400"},Kb=le({__name:"TypeAnalysisView",props:{sessionId:{},sessionName:{},timeFilter:{}},setup(u){const n=u,{t}=Ce(),o=A(!0),s=A([]),i=A([]),l=A([]),r=A({textCount:0,avgLength:0,maxLength:0,shortCount:0}),m=A({p25:0,p50:0,p75:0,p90:0}),x=A(0),h=q(()=>{const C=[...s.value].sort(($,g)=>g.count-$.count);return{labels:C.map($=>pa($.type,t)),values:C.map($=>$.count)}}),S=q(()=>{const C=s.value.reduce((g,b)=>g+b.count,0);return[...s.value].sort((g,b)=>b.count-g.count).map(g=>({name:pa(g.type,t),count:g.count,percentage:C>0?Math.round(g.count/C*100):0}))}),y=["#6366f1","#8b5cf6","#ec4899","#f43f5e","#f97316","#eab308","#22c55e","#14b8a6","#06b6d4","#3b82f6"];function I(C){return y[C%y.length]}const w=q(()=>({labels:i.value.map(C=>String(C.len)),values:i.value.map(C=>C.count)})),v=q(()=>({labels:l.value.map(C=>C.range),values:l.value.map(C=>C.count)})),_=q(()=>r.value.textCount===0?0:Math.round(r.value.shortCount/r.value.textCount*100));async function k(){if(n.sessionId){o.value=!0;try{const C=Pe(),[$,g,b,F,E]=await Promise.all([C.getMessageTypeDistribution(n.sessionId,n.timeFilter),C.getMessageLengthDistribution(n.sessionId,n.timeFilter),C.getTextStats(n.sessionId,n.timeFilter),C.getTextLengthPercentiles(n.sessionId,n.timeFilter),C.getLongMessageCount(n.sessionId,n.timeFilter,30)]);s.value=$,i.value=g.detail,l.value=g.grouped,r.value=b,m.value=F,x.value=E}catch(C){console.error("[chart-message] Failed to load type analysis data:",C)}finally{o.value=!1}}}return pe(()=>[n.sessionId,n.timeFilter],()=>k(),{immediate:!0,deep:!0}),(C,$)=>(d(),p("div",{class:Z(o.value?"h-full":"")},[o.value?(d(),B(e(Tt),{key:0,variant:"page",text:e(t)("common.loading")},null,8,["text"])):(d(),p("div",zg,[s.value.length>0?(d(),B(qg,{key:0,"session-id":u.sessionId,"message-types":s.value,"text-stats":r.value,"time-filter":u.timeFilter},null,8,["session-id","message-types","text-stats","time-filter"])):V("",!0),f(e(Qe),{title:e(t)("views.message.typeDistribution"),"show-divider":!1},{default:D(()=>[a("div",Dg,[h.value.values.length>0?(d(),p("div",Lg,[a("div",null,[f(e(cn),{data:h.value,height:280,"show-legend":!1},null,8,["data"])]),a("div",null,[a("div",Eg,[(d(!0),p(ne,null,he(S.value,(g,b)=>(d(),p("div",{key:b,class:"flex items-center gap-3"},[a("div",{class:"h-3 w-3 shrink-0 rounded-full",style:et({backgroundColor:I(b)})},null,4),a("div",Vg,c(g.name),1),a("div",Fg,[a("div",Rg,[a("div",{class:"h-full rounded-full transition-all",style:et({width:`${g.percentage}%`,backgroundColor:I(b)})},null,4)])]),a("div",Og,[a("span",Bg,c(g.count.toLocaleString()),1),a("span",Pg,"("+c(g.percentage)+"%)",1)])]))),128))])])])):(d(),p("div",Ng,c(e(t)("views.message.noData")),1))])]),_:1},8,["title"]),f(e(Qe),{title:e(t)("views.message.typeAnalysis.textDepthTitle"),"show-divider":!1},{default:D(()=>[a("div",jg,[a("div",Ug,[a("div",Wg,[a("div",Kg,c(r.value.textCount.toLocaleString()),1),a("div",Hg,c(e(t)("views.message.typeAnalysis.textTotal")),1)]),a("div",Yg,[a("div",Qg,c(r.value.avgLength||0),1),a("div",Gg,c(e(t)("views.message.typeAnalysis.avgLength")),1)]),a("div",Jg,[a("div",Xg,c(m.value.p50),1),a("div",Zg,c(e(t)("views.message.typeAnalysis.medianLength")),1)]),a("div",ef,[a("div",tf,c(r.value.maxLength),1),a("div",af,c(e(t)("views.message.typeAnalysis.maxLength")),1)])]),a("div",sf,[a("div",of,c(e(t)("views.message.typeAnalysis.percentiles")),1),a("div",nf,[a("div",lf,[$[0]||($[0]=a("span",{class:"text-gray-500"},"P25",-1)),a("span",rf,c(m.value.p25),1)]),a("div",uf,[$[1]||($[1]=a("span",{class:"text-gray-500"},"P50",-1)),a("span",df,c(m.value.p50),1)]),a("div",cf,[$[2]||($[2]=a("span",{class:"text-gray-500"},"P75",-1)),a("span",mf,c(m.value.p75),1)]),a("div",pf,[$[3]||($[3]=a("span",{class:"text-gray-500"},"P90",-1)),a("span",gf,c(m.value.p90),1)])]),a("div",ff,[a("div",null,[a("span",vf,c(e(t)("views.message.typeAnalysis.shortMessages")),1),a("span",hf,c(_.value)+"%",1),a("span",yf,"("+c(r.value.shortCount)+")",1)]),a("div",null,[a("span",xf,c(e(t)("views.message.typeAnalysis.essayMessages")),1),a("span",bf,c(x.value),1)])])])])]),_:1},8,["title"]),a("div",_f,[f(e(Qe),{title:e(t)("views.message.lengthDetailTitle"),"show-divider":!1},{headerRight:D(()=>[a("span",kf,c(e(t)("views.message.lengthDetailHint")),1)]),default:D(()=>[a("div",wf,[w.value.values.some(g=>g>0)?(d(),B(e(vt),{key:0,data:w.value,height:200},null,8,["data"])):(d(),p("div",Cf,c(e(t)("views.message.noTextMessages")),1))])]),_:1},8,["title"]),f(e(Qe),{title:e(t)("views.message.lengthGroupedTitle"),"show-divider":!1},{headerRight:D(()=>[a("span",$f,c(e(t)("views.message.lengthGroupedHint")),1)]),default:D(()=>[a("div",Sf,[v.value.values.some(g=>g>0)?(d(),B(e(vt),{key:0,data:v.value,height:200},null,8,["data"])):(d(),p("div",If,c(e(t)("views.message.noTextMessages")),1))])]),_:1},8,["title"])])]))],2))}}),Tf={class:"relative z-10 px-6 pt-8 pb-4 sm:px-8"},Mf={class:"flex items-start gap-6 sm:gap-10"},Af={class:"min-w-0 flex-1"},qf={class:"flex flex-col text-[15px] leading-relaxed text-gray-600 dark:text-gray-300"},zf={key:0,class:"mb-2 text-sm font-medium tracking-wide text-gray-500 dark:text-gray-400"},Df={class:"mb-3 flex items-baseline gap-2"},Lf={class:"font-black text-5xl tracking-tight text-gray-900 dark:text-white"},Ef={class:"text-xl font-medium text-gray-700 dark:text-gray-300"},Vf={class:"font-bold text-3xl text-indigo-500 dark:text-indigo-400"},Ff={class:"text-xl font-medium text-gray-700 dark:text-gray-300"},Rf={class:"flex items-baseline flex-wrap gap-x-1.5 gap-y-1"},Of={class:"text-base font-medium text-gray-600 dark:text-gray-300"},Bf={class:"font-bold text-xl text-pink-500 dark:text-pink-400"},Pf={class:"text-base font-medium text-gray-600 dark:text-gray-300"},Nf={class:"text-base font-medium text-amber-600 dark:text-amber-400"},jf={class:"flex shrink-0 flex-col items-center"},Uf={class:"mb-1 text-[10px] font-bold text-gray-500 dark:text-gray-400"},Wf={class:"relative z-10 px-6 pb-6 pt-4 sm:px-8"},Kf={class:"grid grid-cols-2 gap-3 lg:grid-cols-4"},Hf={class:"min-w-0 flex-1"},Yf={class:"mt-0.5 truncate text-[10px] font-medium text-gray-500 dark:text-gray-400"},Qf={class:"mt-0.5 truncate text-[9px] text-gray-400 dark:text-gray-500"},Gf={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"},Jf={class:"flex items-center gap-1.5"},Xf={class:"text-[9px] font-medium uppercase tracking-widest"},Zf=le({__name:"TimeProfileCard",props:{hourlyActivity:{},weekdayActivity:{},dailyActivity:{}},setup(u){Zt([gn,fn,ea]);const{t:n}=Ce(),t=Qt(),o=u,s=q(()=>o.dailyActivity.filter(g=>g.messageCount>0).length),i=q(()=>o.dailyActivity.reduce((g,b)=>g+b.messageCount,0)),l=q(()=>{if(o.dailyActivity.length===0)return{first:"",last:"",days:0};const g=[...o.dailyActivity].sort((E,z)=>E.date.localeCompare(z.date)),b=Ve(g[0].date),F=Ve(g[g.length-1].date);return{first:b.format("YYYY/MM/DD"),last:F.format("YYYY/MM/DD"),days:F.diff(b,"day")+1}}),r=q(()=>s.value===0?0:Math.round(i.value/s.value)),m=q(()=>o.dailyActivity.length===0?null:o.dailyActivity.reduce((g,b)=>b.messageCount>g.messageCount?b:g,o.dailyActivity[0])),x=q(()=>o.hourlyActivity.length===0?[]:[...o.hourlyActivity].sort((g,b)=>b.messageCount-g.messageCount).slice(0,3)),h=q(()=>{if(o.hourlyActivity.length===0&&o.weekdayActivity.length===0)return null;const g=l.value.days>0?s.value/l.value.days:0,b=o.weekdayActivity.filter(P=>P.weekday===6||P.weekday===7),F=o.weekdayActivity.filter(P=>P.weekday>=1&&P.weekday<=5),E=b.reduce((P,R)=>P+R.messageCount,0),z=F.reduce((P,R)=>P+R.messageCount,0),T=E+z,M=T>0?E/T:0,L=o.hourlyActivity.reduce((P,R)=>P+R.messageCount,0),N=o.hourlyActivity.filter(P=>P.hour>=22||P.hour<5).reduce((P,R)=>P+R.messageCount,0),U=o.hourlyActivity.filter(P=>P.hour>=18&&P.hour<22).reduce((P,R)=>P+R.messageCount,0),H=L>0?N/L:0,ie=L>0?U/L:0;if(g>=.9)return{label:n("views.message.timeCard.personalityEveryday"),icon:"i-heroicons-fire"};if(M>=.55)return{label:n("views.message.timeCard.personalityWeekend"),icon:"i-heroicons-calendar"};if(M<=.2&&T>0)return{label:n("views.message.timeCard.personalityWeekday"),icon:"i-heroicons-briefcase"};if(H>=.3)return{label:n("views.message.timeCard.personalityNightOwl"),icon:"i-heroicons-moon"};if(ie>=.4)return{label:n("views.message.timeCard.personalityEveningChat"),icon:"i-heroicons-sparkles"};const se=[...o.hourlyActivity].sort((P,R)=>R.messageCount-P.messageCount)[0];return se?se.hour>=5&&se.hour<9?{label:n("views.message.timeCard.personalityEarlyBird"),icon:"i-heroicons-sun"}:se.hour>=12&&se.hour<14?{label:n("views.message.timeCard.personalityLunchChat"),icon:"i-heroicons-clock"}:{label:n("views.message.timeCard.personalityDaytime"),icon:"i-heroicons-sun"}:null}),S=q(()=>{const g=o.weekdayActivity.filter(T=>T.weekday===6||T.weekday===7),b=o.weekdayActivity.filter(T=>T.weekday>=1&&T.weekday<=5),F=g.reduce((T,M)=>T+M.messageCount,0),E=b.reduce((T,M)=>T+M.messageCount,0),z=F+E;return z===0?0:Math.round(F/z*100)}),y=q(()=>[n("common.weekday.mon"),n("common.weekday.tue"),n("common.weekday.wed"),n("common.weekday.thu"),n("common.weekday.fri"),n("common.weekday.sat"),n("common.weekday.sun")]),I=q(()=>{if(o.weekdayActivity.length===0)return null;const g=[...o.weekdayActivity].sort((b,F)=>F.messageCount-b.messageCount)[0];return{name:y.value[g.weekday-1],count:g.messageCount}}),w=q(()=>[{icon:"i-heroicons-fire",label:n("views.message.timeCard.peakRecord"),value:m.value?Ve(m.value.date).format("MM/DD"):"-",subtext:m.value?n("views.message.timeCard.peakRecordDesc",{count:m.value.messageCount}):"",colorClass:"text-red-600 dark:text-red-400"},{icon:"i-heroicons-clock",label:n("views.message.timeCard.topHoursLabel"),value:x.value.length>0?`${x.value[0].hour}:00`:"-",subtext:x.value.length>=2?x.value.map(g=>`${g.hour}:00`).join(" > "):"",colorClass:"text-cyan-600 dark:text-cyan-400"},{icon:"i-heroicons-calendar-days",label:n("views.message.timeCard.peakWeekdayLabel"),value:I.value?.name||"-",subtext:I.value?`${I.value.count.toLocaleString()}`:"",colorClass:"text-violet-600 dark:text-violet-400"},{icon:"i-heroicons-building-office",label:n("views.message.timeCard.weekendRatio"),value:`${S.value}%`,subtext:n("views.message.timeCard.weekendRatioDesc"),colorClass:"text-amber-600 dark:text-amber-400"}]),v=A(null);let _=null;function k(){v.value&&(_=ta(v.value,void 0,{renderer:"canvas"}),C())}function C(){if(!_)return;const g=new Map(o.hourlyActivity.map(z=>[z.hour,z.messageCount])),b=[];for(let z=0;z<24;z++)b.push(g.get(z)||0);const F=Math.max(...b,1),E=b.map(z=>{const T=z/F;return T>.8?t.value?"#f472b6":"#ec4899":T>.5?t.value?"#a78bfa":"#8b5cf6":t.value?"rgba(255,255,255,0.15)":"rgba(0,0,0,0.08)"});_.setOption({backgroundColor:"transparent",tooltip:{trigger:"axis",formatter:z=>`${z[0].axisValue}:00 — ${z[0].value}`},grid:{left:0,right:0,top:4,bottom:16},xAxis:{type:"category",data:Array.from({length:24},(z,T)=>`${T}`),axisLine:{show:!1},axisTick:{show:!1},axisLabel:{fontSize:9,color:t.value?"#6b7280":"#9ca3af",interval:z=>z%6===0}},yAxis:{type:"value",show:!1},series:[{type:"bar",data:b.map((z,T)=>({value:z,itemStyle:{color:E[T]}})),barWidth:"60%",itemStyle:{borderRadius:[2,2,0,0]}}]},{notMerge:!0})}function $(){_?.resize()}return pe(()=>o.hourlyActivity,()=>C()),pe(t,()=>{_?.dispose(),k()}),De(()=>{k(),window.addEventListener("resize",$)}),Je(()=>{window.removeEventListener("resize",$),_?.dispose()}),(g,b)=>{const F=Se;return d(),B(e(aa),null,{default:D(()=>[a("div",Tf,[a("div",Mf,[a("div",Af,[a("div",qf,[l.value.first?(d(),p("p",zf,c(l.value.first)+" – "+c(l.value.last),1)):V("",!0),a("div",Df,[a("span",Lf,c(l.value.days),1),a("span",Ef,c(e(n)("views.message.timeCard.heroDaysIn")),1),a("span",Vf,c(s.value),1),a("span",Ff,c(e(n)("views.message.timeCard.heroDaysActive")),1)]),a("div",Rf,[a("span",Of,c(e(n)("views.message.timeCard.heroAvgPrefix")),1),a("span",Bf,c(r.value),1),a("span",Pf,c(e(n)("views.message.timeCard.heroAvgSuffix")),1),h.value?(d(),p(ne,{key:0},[f(F,{name:h.value.icon,class:"ml-2 h-4 w-4 text-amber-500"},null,8,["name"]),a("span",Nf,c(h.value.label),1)],64)):V("",!0)])])]),a("div",jf,[a("div",Uf,c(e(n)("views.message.timeCard.hourlyDistribution")),1),a("div",{ref_key:"barRef",ref:v,style:{width:"180px",height:"110px"}},null,512)])])]),a("div",Wf,[b[0]||(b[0]=a("div",{class:"mb-3 flex items-center justify-between"},[a("span",{class:"text-[10px] font-bold uppercase tracking-widest text-gray-400 dark:text-gray-500"}," Time Profile ")],-1)),a("div",Kf,[(d(!0),p(ne,null,he(w.value,E=>(d(),p("div",{key:E.icon+E.label,class:"flex min-w-0 items-start gap-2 px-2.5 py-2"},[f(F,{name:E.icon,class:Z(["mt-0.5 h-3.5 w-3.5 shrink-0",E.colorClass])},null,8,["name","class"]),a("div",Hf,[a("div",{class:Z(["truncate font-mono text-sm font-black leading-tight tabular-nums",E.colorClass])},c(E.value),3),a("div",Yf,c(E.label),1),a("div",Qf,c(E.subtext),1)])]))),128))])]),a("div",Gf,[a("div",Jf,[f(F,{name:"i-heroicons-chat-bubble-left-right-solid",class:"h-3.5 w-3.5"}),b[1]||(b[1]=a("span",{class:"text-[10px] font-bold uppercase tracking-wider"},"ChatLab",-1))]),a("span",Xf,c(e(n)("views.message.timeCard.watermark")),1)])]),_:1})}}}),ev={key:1,class:"main-content mx-auto max-w-[920px] space-y-6 p-4 sm:p-6"},tv={class:"grid grid-cols-1 gap-6 lg:grid-cols-2"},av={class:"p-5"},sv={class:"p-5"},ov={class:"grid grid-cols-1 gap-6 lg:grid-cols-2"},nv={class:"p-5"},lv={class:"p-5"},iv={key:1,class:"flex h-48 items-center justify-center text-gray-400"},rv={class:"text-xs text-gray-400"},uv={class:"p-5"},dv={key:1,class:"flex h-48 items-center justify-center text-gray-400"},cv={class:"text-xs text-gray-400"},mv={class:"p-5"},pv={class:"flex items-center gap-2"},gv={class:"text-xs text-gray-400"},fv={class:"p-5"},vv={key:1,class:"flex h-32 items-center justify-center text-gray-400"},Hb=le({__name:"TimeAnalysisView",props:{sessionId:{},sessionName:{},timeFilter:{}},setup(u){const n=u,{t}=Ce(),o=A(!0),s=A([]),i=A([]),l=A([]),r=A([]),m=A([]),x=A([]),h=A([]),S=["#6366f1","#ec4899","#f97316","#22c55e","#06b6d4","#8b5cf6","#f43f5e","#eab308","#14b8a6","#3b82f6"],y=q(()=>[t("common.weekday.mon"),t("common.weekday.tue"),t("common.weekday.wed"),t("common.weekday.thu"),t("common.weekday.fri"),t("common.weekday.sat"),t("common.weekday.sun")]),I=q(()=>[t("common.month.jan"),t("common.month.feb"),t("common.month.mar"),t("common.month.apr"),t("common.month.may"),t("common.month.jun"),t("common.month.jul"),t("common.month.aug"),t("common.month.sep"),t("common.month.oct"),t("common.month.nov"),t("common.month.dec")]),w=q(()=>{const T=new Map(i.value.map(N=>[N.hour,N.messageCount])),M=[],L=[];for(let N=0;N<24;N++)M.push(`${N}`),L.push(T.get(N)||0);return{labels:M,values:L}}),v=q(()=>{const T=new Map(l.value.map(L=>[L.weekday,L.messageCount])),M=[];for(let L=1;L<=7;L++)M.push(T.get(L)||0);return{labels:y.value,values:M}}),_=q(()=>{const T=new Map(r.value.map(L=>[L.month,L.messageCount])),M=[];for(let L=1;L<=12;L++)M.push(T.get(L)||0);return{labels:I.value,values:M}}),k=q(()=>{const T=[...m.value].sort((M,L)=>M.year-L.year);return{labels:T.map(M=>String(M.year)),values:T.map(M=>M.messageCount)}}),C=q(()=>{const T=Array.from({length:24},(U,H)=>`${H}:00`),M=y.value,L=s.value.reduce((U,H)=>U+H.count,0)||1,N=[];for(let U=1;U<=7;U++)for(let H=0;H<24;H++){const ie=l.value.find(R=>R.weekday===U)?.messageCount||0,se=i.value.find(R=>R.hour===H)?.messageCount||0,P=Math.round(ie*se/L);N.push([H,U-1,P])}return{xLabels:T,yLabels:M,data:N}}),$=q(()=>x.value.map(T=>({date:T.date,value:T.messageCount}))),g=q(()=>{const T=new Set;return x.value.forEach(M=>{const L=parseInt(M.date.split("-")[0]);isNaN(L)||T.add(L)}),Array.from(T).sort((M,L)=>L-M)}),b=A(new Date().getFullYear()),F=q(()=>{const T=b.value;return $.value.filter(M=>M.date.startsWith(`${T}-`))}),E=q(()=>{if(h.value.length===0)return{};const T=[...new Set(h.value.map(H=>H.month))].sort(),M=new Map;if(h.value.forEach(H=>{const ie=M.get(H.memberId);ie?ie.total+=H.count:M.set(H.memberId,{name:H.memberName,total:H.count})}),M.size<=2){const H=new Map;return h.value.forEach(ie=>{H.set(ie.month,(H.get(ie.month)||0)+ie.count)}),{tooltip:{trigger:"axis",backgroundColor:"rgba(0, 0, 0, 0.8)",borderColor:"transparent",textStyle:{color:"#fff"}},grid:{left:50,right:20,top:10,bottom:30},xAxis:{type:"category",data:T,boundaryGap:!1,axisLine:{show:!1},axisTick:{show:!1}},yAxis:{type:"value",splitLine:{lineStyle:{type:"dashed",opacity:.3}}},series:[{type:"line",smooth:!0,symbol:"none",areaStyle:{opacity:.2},itemStyle:{color:"#6366f1"},data:T.map(ie=>H.get(ie)||0)}]}}const U=[...M.entries()].sort((H,ie)=>ie[1].total-H[1].total).slice(0,10).map(([H,ie],se)=>{const P=new Map(h.value.filter(R=>R.memberId===H).map(R=>[R.month,R.count]));return{name:ie.name,type:"line",stack:"total",areaStyle:{opacity:.3},smooth:!0,symbol:"none",itemStyle:{color:S[se%S.length]},data:T.map(R=>P.get(R)||0)}});return{tooltip:{trigger:"axis",backgroundColor:"rgba(0, 0, 0, 0.8)",borderColor:"transparent",textStyle:{color:"#fff"}},legend:{bottom:0,textStyle:{fontSize:11}},grid:{left:50,right:20,top:10,bottom:40},xAxis:{type:"category",data:T,boundaryGap:!1,axisLine:{show:!1},axisTick:{show:!1}},yAxis:{type:"value",splitLine:{lineStyle:{type:"dashed",opacity:.3}}},series:U}});async function z(){if(n.sessionId){o.value=!0;try{const T=Pe(),[M,L,N,U,H,ie,se]=await Promise.all([T.getMessageTypeDistribution(n.sessionId,n.timeFilter),T.getHourlyActivity(n.sessionId,n.timeFilter),T.getWeekdayActivity(n.sessionId,n.timeFilter),T.getMonthlyActivity(n.sessionId,n.timeFilter),T.getYearlyActivity(n.sessionId,n.timeFilter),T.getDailyActivity(n.sessionId,n.timeFilter),T.getMemberMonthlyTrend(n.sessionId,n.timeFilter)]);s.value=M,i.value=L,l.value=N,r.value=U,m.value=H,x.value=ie,h.value=se,g.value.length>0&&(b.value=g.value[0])}catch(T){console.error("[chart-message] Failed to load time analysis data:",T)}finally{o.value=!1}}}return pe(()=>[n.sessionId,n.timeFilter],()=>z(),{immediate:!0,deep:!0}),(T,M)=>{const L=ka;return d(),p("div",{class:Z(o.value?"h-full":"")},[o.value?(d(),B(e(Tt),{key:0,variant:"page",text:e(t)("common.loading")},null,8,["text"])):(d(),p("div",ev,[x.value.length>0?(d(),B(Zf,{key:0,"hourly-activity":i.value,"weekday-activity":l.value,"daily-activity":x.value},null,8,["hourly-activity","weekday-activity","daily-activity"])):V("",!0),a("div",tv,[f(e(Qe),{title:e(t)("views.message.hourlyDistribution"),"show-divider":!1},{default:D(()=>[a("div",av,[f(e(vt),{data:w.value,height:200},null,8,["data"])])]),_:1},8,["title"]),f(e(Qe),{title:e(t)("views.message.weekdayDistribution"),"show-divider":!1},{default:D(()=>[a("div",sv,[f(e(vt),{data:v.value,height:200},null,8,["data"])])]),_:1},8,["title"])]),a("div",ov,[f(e(Qe),{title:e(t)("views.message.monthlyDistribution"),"show-divider":!1},{default:D(()=>[a("div",nv,[f(e(vt),{data:_.value,height:200},null,8,["data"])])]),_:1},8,["title"]),f(e(Qe),{title:e(t)("views.message.yearlyDistribution"),"show-divider":!1},{default:D(()=>[a("div",lv,[k.value.values.length>0?(d(),B(e(vt),{key:0,data:k.value,height:200},null,8,["data"])):(d(),p("div",iv,c(e(t)("views.message.noData")),1))])]),_:1},8,["title"])]),f(e(Qe),{title:e(t)("views.message.timeAnalysis.memberTrendTitle"),"show-divider":!1},{headerRight:D(()=>[a("span",rv,c(e(t)("views.message.timeAnalysis.memberTrendHint")),1)]),default:D(()=>[a("div",uv,[h.value.length>0?(d(),B(e(hn),{key:0,option:E.value,height:280},null,8,["option"])):(d(),p("div",dv,c(e(t)("views.message.noData")),1))])]),_:1},8,["title"]),f(e(Qe),{title:e(t)("views.message.timeHeatmap"),"show-divider":!1},{headerRight:D(()=>[a("span",cv,c(e(t)("views.message.heatmapHint")),1)]),default:D(()=>[a("div",mv,[f(e(mn),{data:C.value,height:320},null,8,["data"])])]),_:1},8,["title"]),f(e(Qe),{title:e(t)("views.message.calendarHeatmap"),"show-divider":!1},{headerRight:D(()=>[a("div",pv,[a("span",gv,c(e(t)("views.message.calendarHint")),1),g.value.length>1?(d(),B(L,{key:0,modelValue:b.value,"onUpdate:modelValue":M[0]||(M[0]=N=>b.value=N),items:g.value.map(N=>({value:N,label:String(N)})),size:"xs",class:"w-20"},null,8,["modelValue","items"])):V("",!0)])]),default:D(()=>[a("div",fv,[F.value.length>0?(d(),B(e(Ai),{key:0,data:F.value,year:b.value,height:180},null,8,["data","year"])):(d(),p("div",vv,c(e(t)("views.message.noData")),1))])]),_:1},8,["title"])]))],2)}}}),hv={class:"relative z-10 px-6 pt-8 pb-4 sm:px-8"},yv={class:"flex items-center gap-6 sm:gap-10"},xv={class:"min-w-0 flex-1"},bv={class:"flex flex-col gap-2 text-[15px] leading-relaxed text-gray-600 dark:text-gray-300"},_v={key:0,class:"mb-0 text-sm font-medium tracking-wide text-gray-500 dark:text-gray-400"},kv={class:"flex items-baseline gap-x-1.5"},wv={class:"text-xl font-medium text-gray-700 dark:text-gray-300"},Cv={class:"font-black text-5xl tracking-tight text-gray-900 dark:text-white"},$v={class:"text-xl font-medium text-gray-700 dark:text-gray-300"},Sv={class:"flex items-baseline gap-x-1.5"},Iv={class:"text-xl font-medium text-gray-700 dark:text-gray-300"},Tv={class:"font-black text-3xl text-pink-500 dark:text-pink-400"},Mv={class:"text-xl font-medium text-gray-700 dark:text-gray-300"},Av={key:1,class:"mt-1 flex items-baseline flex-wrap gap-x-1.5 gap-y-1"},qv={class:"text-base font-medium text-gray-600 dark:text-gray-300"},zv=["onClick"],Dv={key:0,class:"text-gray-400"},Lv={key:0,class:"hidden shrink-0 overflow-hidden rounded-lg sm:block"},Ev={class:"relative",style:{width:"360px",height:"220px"}},Vv={class:"relative z-10 px-6 pb-6 pt-4 sm:px-8"},Fv={class:"grid grid-cols-2 gap-3 lg:grid-cols-4"},Rv={class:"min-w-0 flex-1"},Ov={class:"mt-0.5 truncate text-[10px] font-medium text-gray-500 dark:text-gray-400"},Bv={class:"mt-0.5 truncate text-[9px] text-gray-400 dark:text-gray-500"},Pv={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"},Nv={class:"flex items-center gap-1.5"},jv={class:"text-[9px] font-medium uppercase tracking-widest"},Uv=le({__name:"TopicProfileCard",props:{totalMessages:{},totalWords:{},uniqueWords:{},topWords:{},topicWords:{},posTagStats:{},timeFilter:{}},emits:["wordClick"],setup(u,{emit:n}){const t=rs(()=>ya(()=>import("./EChartWordcloud-C6XM4KOX.js"),__vite__mapDeps([4,5,6,7,1,2,3]))),{t:o}=Ce(),s=u,i=n,l=q(()=>{const{startTs:w,endTs:v}=s.timeFilter??{};return w&&v?`${Ve(w*1e3).format("YYYY/MM/DD")} – ${Ve(v*1e3).format("YYYY/MM/DD")}`:""}),r=q(()=>(s.topicWords?.length?s.topicWords:s.topWords).slice(0,5)),m=q(()=>({words:(s.topicWords?.length?s.topicWords:s.topWords).slice(0,50).map(v=>({word:v.word,count:v.count,percentage:v.percentage}))})),x=q(()=>s.totalWords===0?0:Math.round(s.uniqueWords/s.totalWords*100)),h=q(()=>{if(!s.posTagStats?.length)return{key:"Balanced",label:o("quotes.topicProfile.styleBalanced"),desc:o("quotes.topicProfile.styleBalancedDesc"),icon:"i-heroicons-scale-solid",colorClass:"text-cyan-600 dark:text-cyan-400"};const w=new Map(s.posTagStats.map(F=>[F.tag,F.count])),v=(w.get("n")||0)+(w.get("ns")||0)+(w.get("nt")||0)+(w.get("nz")||0),_=(w.get("v")||0)+(w.get("vn")||0)+(w.get("vd")||0),k=(w.get("a")||0)+(w.get("ad")||0)+(w.get("an")||0),C=v+_+k;if(C===0)return{key:"Balanced",label:o("quotes.topicProfile.styleBalanced"),desc:o("quotes.topicProfile.styleBalancedDesc"),icon:"i-heroicons-scale-solid",colorClass:"text-cyan-600 dark:text-cyan-400"};const $=v/C,g=_/C,b=k/C;return $>.5?{key:"Encyclopedia",label:o("quotes.topicProfile.styleEncyclopedia"),desc:o("quotes.topicProfile.styleEncyclopediaDesc"),icon:"i-heroicons-book-open-solid",colorClass:"text-indigo-600 dark:text-indigo-400"}:g>.45?{key:"Action",label:o("quotes.topicProfile.styleAction"),desc:o("quotes.topicProfile.styleActionDesc"),icon:"i-heroicons-rocket-launch-solid",colorClass:"text-orange-600 dark:text-orange-400"}:b>.3?{key:"Expressive",label:o("quotes.topicProfile.styleExpressive"),desc:o("quotes.topicProfile.styleExpressiveDesc"),icon:"i-heroicons-paint-brush-solid",colorClass:"text-pink-600 dark:text-pink-400"}:{key:"Balanced",label:o("quotes.topicProfile.styleBalanced"),desc:o("quotes.topicProfile.styleBalancedDesc"),icon:"i-heroicons-scale-solid",colorClass:"text-cyan-600 dark:text-cyan-400"}}),S=q(()=>{if(s.topWords.length===0)return{label:o("quotes.topicProfile.expressionMixed"),desc:o("quotes.topicProfile.expressionMixedDesc"),icon:"i-heroicons-chat-bubble-left-right-solid",colorClass:"text-emerald-600 dark:text-emerald-400"};const w=s.topWords.reduce((k,C)=>k+C.word.length*C.count,0),v=s.topWords.reduce((k,C)=>k+C.count,0),_=w/v;return _<2.5?{label:o("quotes.topicProfile.expressionCasual"),desc:o("quotes.topicProfile.expressionCasualDesc"),icon:"i-heroicons-face-smile-solid",colorClass:"text-amber-600 dark:text-amber-400"}:_>3.5?{label:o("quotes.topicProfile.expressionFormal"),desc:o("quotes.topicProfile.expressionFormalDesc"),icon:"i-heroicons-academic-cap-solid",colorClass:"text-violet-600 dark:text-violet-400"}:{label:o("quotes.topicProfile.expressionMixed"),desc:o("quotes.topicProfile.expressionMixedDesc"),icon:"i-heroicons-chat-bubble-left-right-solid",colorClass:"text-emerald-600 dark:text-emerald-400"}}),y=q(()=>[{icon:"i-heroicons-fire-solid",label:o("quotes.topicProfile.hotTopic"),value:r.value[0]?.word??"-",subtext:r.value[0]?o("quotes.topicProfile.hotTopicDesc",{count:r.value[0].count}):"",colorClass:"text-red-600 dark:text-red-400"},{icon:"i-heroicons-sparkles-solid",label:o("quotes.topicProfile.richness"),value:o("quotes.topicProfile.richnessValue",{value:x.value}),subtext:o("quotes.topicProfile.richnessDesc",{unique:s.uniqueWords.toLocaleString(),total:s.totalWords.toLocaleString()}),colorClass:"text-blue-600 dark:text-blue-400"},{icon:h.value.icon,label:o("quotes.topicProfile.chatStyle"),value:h.value.label,subtext:h.value.desc,colorClass:h.value.colorClass},{icon:S.value.icon,label:o("quotes.topicProfile.expressionStyle"),value:S.value.label,subtext:S.value.desc,colorClass:S.value.colorClass}]),I=["#6366f1","#ec4899","#f97316","#22c55e","#3b82f6","#8b5cf6","#14b8a6","#f43f5e"];return(w,v)=>{const _=Se;return d(),B(e(aa),null,{default:D(()=>[a("div",hv,[a("div",yv,[a("div",xv,[a("div",bv,[l.value?(d(),p("p",_v,c(l.value),1)):V("",!0),a("div",kv,[a("span",wv,c(e(o)("quotes.topicProfile.heroPrefix")),1),a("span",Cv,c(u.totalMessages.toLocaleString()),1),a("span",$v,c(e(o)("quotes.topicProfile.heroMiddle")),1)]),a("div",Sv,[a("span",Iv,c(e(o)("quotes.topicProfile.heroMiddleSecond")),1),a("span",Tv,c(u.uniqueWords.toLocaleString()),1),a("span",Mv,c(e(o)("quotes.topicProfile.heroSuffix")),1)]),r.value.length>0?(d(),p("div",Av,[a("span",qv,c(e(o)("quotes.topicProfile.topTopicsPrefix")),1),(d(!0),p(ne,null,he(r.value,(k,C)=>(d(),p(ne,{key:k.word},[a("span",{class:"cursor-pointer font-bold text-xl transition-opacity hover:opacity-70",style:et({color:I[C%I.length]}),onClick:$=>i("wordClick",k.word)},c(k.word),13,zv),C<r.value.length-1?(d(),p("span",Dv,"·")):V("",!0)],64))),128))])):V("",!0)])]),m.value.words.length>0?(d(),p("div",Lv,[a("div",Ev,[f(e(t),{data:m.value,height:"100%","max-words":50,"size-scale":.8,"draw-out-of-bound":!0,shape:"rectangle","color-scheme":"default",onWordClick:v[0]||(v[0]=k=>i("wordClick",k))},null,8,["data"])])])):V("",!0)])]),a("div",Vv,[v[1]||(v[1]=a("div",{class:"mb-3 flex items-center justify-between"},[a("span",{class:"text-[10px] font-bold uppercase tracking-widest text-gray-400 dark:text-gray-500"}," Topic Profile ")],-1)),a("div",Fv,[(d(!0),p(ne,null,he(y.value,k=>(d(),p("div",{key:k.label,class:"flex min-w-0 items-start gap-2 px-2.5 py-2"},[f(_,{name:k.icon,class:Z(["mt-0.5 h-3.5 w-3.5 shrink-0",k.colorClass])},null,8,["name","class"]),a("div",Rv,[a("div",{class:Z(["truncate font-mono text-sm font-black leading-tight tabular-nums",k.colorClass])},c(k.value),3),a("div",Ov,c(k.label),1),a("div",Bv,c(k.subtext),1)])]))),128))])]),a("div",Pv,[a("div",Nv,[f(_,{name:"i-heroicons-chat-bubble-left-right-solid",class:"h-3.5 w-3.5"}),v[2]||(v[2]=a("span",{class:"text-[10px] font-bold uppercase tracking-wider"},"ChatLab",-1))]),a("span",jv,c(e(o)("quotes.topicProfile.watermark")),1)])]),_:1})}}}),Wv={class:"px-5 py-4 sm:px-6"},Kv={class:"mb-4 flex items-center gap-2"},Hv={class:"text-[15px] font-black tracking-tight text-gray-900 dark:text-white"},Yv={class:"flex flex-wrap justify-center gap-2"},Qv=["onClick"],Gv=le({__name:"SharedTopicsCard",props:{sessionId:{},timeFilter:{},dictType:{},excludeWords:{}},emits:["wordClick"],setup(u,{emit:n}){const{t}=Ce(),o=Gt(),s=u,i=n,l=q(()=>o.locale),r=A([]),m=A([]),x=q(()=>r.value.slice(0,20)),h=["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","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","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","bg-green-50 text-green-600 ring-1 ring-green-500/20 dark:bg-green-500/10 dark:text-green-400 dark:ring-green-500/30","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","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","bg-teal-50 text-teal-600 ring-1 ring-teal-500/20 dark:bg-teal-500/10 dark:text-teal-400 dark:ring-teal-500/30","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","bg-yellow-50 text-yellow-600 ring-1 ring-yellow-500/20 dark:bg-yellow-500/10 dark:text-yellow-400 dark:ring-yellow-500/30","bg-cyan-50 text-cyan-600 ring-1 ring-cyan-500/20 dark:bg-cyan-500/10 dark:text-cyan-400 dark:ring-cyan-500/30"];async function S(){if(s.sessionId)try{m.value.length===0&&(m.value=await Pe().getMembers(s.sessionId));const y=[...m.value].sort(($,g)=>g.messageCount-$.messageCount).slice(0,2);if(y.length<2){r.value=[];return}const I={locale:l.value,timeFilter:s.timeFilter?{startTs:s.timeFilter.startTs,endTs:s.timeFilter.endTs}:void 0,topN:100,minCount:2,posFilterMode:"meaningful",enableStopwords:!0,dictType:s.dictType??"default",excludeWords:s.excludeWords?.length?[...s.excludeWords]:void 0},w=Pe(),[v,_]=await Promise.all([w.getWordFrequency(s.sessionId,{...I,memberId:y[0].id}),w.getWordFrequency(s.sessionId,{...I,memberId:y[1].id})]),k=new Map(_.words.map($=>[$.word,$.count])),C=[];for(const $ of v.words){const g=k.get($.word);g&&C.push({word:$.word,countA:$.count,countB:g})}C.sort(($,g)=>g.countA+g.countB-($.countA+$.countB)),r.value=C.slice(0,30)}catch(y){console.error("加载共同话题数据失败:",y),r.value=[]}}return pe(()=>s.sessionId,()=>{m.value=[]}),pe(()=>[s.sessionId,s.timeFilter,s.dictType,s.excludeWords],()=>{S()},{immediate:!0,deep:!0}),(y,I)=>{const w=Se;return x.value.length>0?(d(),B(e(rt),{key:0},{default:D(()=>[a("div",Wv,[a("div",Kv,[f(w,{name:"i-heroicons-link",class:"h-4 w-4 text-emerald-500"}),a("span",Hv,c(e(t)("quotes.topicProfile.sharedTopics")),1)]),a("div",Yv,[(d(!0),p(ne,null,he(x.value,(v,_)=>(d(),p("span",{key:v.word,class:Z(["cursor-pointer rounded-full px-3 py-1 text-xs font-bold transition-opacity hover:opacity-80",h[_%h.length]]),onClick:k=>i("wordClick",v.word)},c(v.word),11,Qv))),128))])])]),_:1})):V("",!0)}}}),_s=Eo("wordFilter",()=>{const u=A([]),n=A(null),t=A({}),o=A(!1);function s(){return`wf_${Date.now()}_${Math.random().toString(36).slice(2,8)}`}function i(k,C=[]){const $={id:s(),name:k,words:[...C],createdAt:Date.now()};return u.value.push($),$}function l(k,C){const $=u.value.find(g=>g.id===k);$&&(C.name!==void 0&&($.name=C.name),C.words!==void 0&&($.words=[...C.words]))}function r(k){u.value=u.value.filter(C=>C.id!==k),n.value===k&&(n.value=null);for(const[C,$]of Object.entries(t.value))$===k&&delete t.value[C]}function m(k){n.value=k}function x(k,C){t.value[k]=C}function h(k){delete t.value[k]}function S(k){return k in t.value?t.value[k]:n.value}function y(k){const C=S(k);return C?u.value.find(g=>g.id===C)?.words??[]:[]}function I(k){return u.value.find(C=>C.id===k)}const w=q(()=>u.value.map(k=>({label:k.name,value:k.id,isDefault:k.id===n.value,wordCount:k.words.length})));function v(){o.value=!0}function _(){o.value=!1}return{schemes:u,defaultSchemeId:n,sessionSchemeOverrides:t,showWordFilterModal:o,schemeOptions:w,createScheme:i,updateScheme:l,deleteScheme:r,setDefaultScheme:m,setSessionScheme:x,clearSessionScheme:h,getActiveSchemeId:S,getExcludeWords:y,getSchemeById:I,openModal:v,closeModal:_}},{persist:!1,backendPersist:{pick:["schemes","defaultSchemeId","sessionSchemeOverrides"],key:"wordFilter"}}),Jv={class:"flex flex-col",style:{height:"520px"}},Xv={class:"flex items-center justify-between border-b border-gray-200 px-6 py-4 dark:border-white/5"},Zv={class:"flex items-center gap-3"},e0={class:"flex h-9 w-9 items-center justify-center rounded-xl bg-linear-to-br from-pink-400 to-pink-600"},t0={class:"text-lg font-semibold text-gray-900 dark:text-white"},a0={class:"flex flex-1 overflow-hidden"},s0={class:"flex w-[200px] shrink-0 flex-col border-r border-gray-200 dark:border-white/5"},o0={class:"flex items-center justify-between px-3 py-2"},n0={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},l0={class:"flex-1 overflow-y-auto px-2 pb-2"},i0=["onClick"],r0={class:"truncate text-sm"},u0={class:"ml-auto text-xs text-gray-400 dark:text-gray-500"},d0={key:0,class:"px-3 py-8 text-center text-xs text-gray-400 dark:text-gray-500"},c0={class:"flex flex-1 flex-col overflow-hidden"},m0={class:"flex-1 space-y-4 overflow-y-auto p-5"},p0={class:"mb-1.5 block text-xs font-medium text-gray-600 dark:text-gray-400"},g0={class:"flex items-center gap-2"},f0={class:"mb-1.5 block text-xs font-medium text-gray-600 dark:text-gray-400"},v0={class:"flex gap-2"},h0={class:"mb-1.5 flex items-center justify-between"},y0={class:"text-xs font-medium text-gray-600 dark:text-gray-400"},x0={class:"ml-1 text-gray-400 dark:text-gray-500"},b0={key:0,class:"flex max-h-[220px] flex-wrap gap-1.5 overflow-y-auto rounded-lg border border-gray-200 p-3 dark:border-white/5"},_0={key:1,class:"rounded-lg border border-dashed border-gray-300 px-4 py-6 text-center text-xs text-gray-400 dark:border-gray-600 dark:text-gray-500"},k0={class:"flex shrink-0 justify-end border-t border-gray-200 px-5 py-3 dark:border-white/5"},w0={key:1,class:"flex flex-1 flex-col items-center justify-center gap-3 text-gray-400 dark:text-gray-500"},C0={class:"text-sm"},$0=le({__name:"WordFilterModal",setup(u){const{t:n}=Ce(),t=_s(),o=q({get:()=>t.showWordFilterModal,set:C=>C?t.openModal():t.closeModal()}),s=A(null),i=A(""),l=A(""),r=A(null),m=q(()=>s.value?t.getSchemeById(s.value)??null:null),x=q(()=>s.value===t.defaultSchemeId);pe(o,C=>{C&&(t.schemes.length>0&&!s.value&&(s.value=t.schemes[0].id),h())}),pe(s,()=>{h(),l.value=""});function h(){i.value=m.value?.name??""}function S(){const C=t.createScheme(n("wordFilter.defaultSchemeName"));s.value=C.id,Re(()=>{r.value?.focus(),r.value?.select()})}function y(){if(!s.value)return;const C=t.schemes.findIndex($=>$.id===s.value);if(t.deleteScheme(s.value),t.schemes.length>0){const $=Math.min(C,t.schemes.length-1);s.value=t.schemes[$].id}else s.value=null}function I(){!s.value||!i.value.trim()||t.updateScheme(s.value,{name:i.value.trim()})}function w(){s.value&&(x.value?t.setDefaultScheme(null):t.setDefaultScheme(s.value))}function v(){if(!s.value||!l.value.trim())return;const $=l.value.trim().split(/[,,\n\r\t;;|、\s]+/).map(E=>E.trim()).filter(E=>E.length>0);if($.length===0)return;const g=m.value;if(!g)return;const b=new Set(g.words.map(E=>E.toLowerCase())),F=$.filter(E=>!b.has(E.toLowerCase()));F.length>0&&t.updateScheme(s.value,{words:[...g.words,...F]}),l.value=""}function _(C){if(!s.value)return;const $=m.value;$&&t.updateScheme(s.value,{words:$.words.filter(g=>g!==C)})}function k(){s.value&&t.updateScheme(s.value,{words:[]})}return(C,$)=>{const g=Se,b=Ne,F=qt,E=gs,z=Xe;return d(),B(z,{open:o.value,"onUpdate:open":$[4]||($[4]=T=>o.value=T),ui:{content:"max-w-3xl z-50"}},{content:D(()=>[a("div",Jv,[a("div",Xv,[a("div",Zv,[a("div",e0,[f(g,{name:"i-heroicons-funnel",class:"h-4.5 w-4.5 text-white"})]),a("h2",t0,c(e(n)("wordFilter.title")),1)]),f(b,{icon:"i-heroicons-x-mark",variant:"ghost",color:"neutral",size:"sm",onClick:$[0]||($[0]=T=>o.value=!1)})]),a("div",a0,[a("div",s0,[a("div",o0,[a("span",n0,c(e(n)("wordFilter.schemeList")),1),f(b,{icon:"i-heroicons-plus",size:"xs",variant:"ghost",color:"primary",onClick:S})]),a("div",l0,[(d(!0),p(ne,null,he(e(t).schemes,T=>(d(),p("div",{key:T.id,class:Z(["group mb-1 flex cursor-pointer items-center gap-2 rounded-lg px-3 py-2 transition-colors",s.value===T.id?"bg-primary-50 text-primary-700 dark:bg-primary-900/20 dark:text-primary-300":"text-gray-700 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-white/5"]),onClick:M=>s.value=T.id},[T.id===e(t).defaultSchemeId?(d(),B(g,{key:0,name:"i-heroicons-star-solid",class:"h-3.5 w-3.5 shrink-0 text-amber-500"})):V("",!0),a("span",r0,c(T.name),1),a("span",u0,c(T.words.length),1)],10,i0))),128)),e(t).schemes.length===0?(d(),p("div",d0,c(e(n)("wordFilter.emptyScheme")),1)):V("",!0)])]),a("div",c0,[m.value?(d(),p(ne,{key:0},[a("div",m0,[a("div",null,[a("label",p0,c(e(n)("wordFilter.schemeName")),1),f(F,{ref_key:"nameInputRef",ref:r,modelValue:i.value,"onUpdate:modelValue":$[1]||($[1]=T=>i.value=T),size:"sm",placeholder:e(n)("wordFilter.schemeNamePlaceholder"),onBlur:I,onKeydown:Ze(I,["enter"])},null,8,["modelValue","placeholder"])]),a("div",g0,[f(b,{size:"xs",variant:x.value?"solid":"soft",color:x.value?"warning":"neutral",icon:x.value?"i-heroicons-star-solid":"i-heroicons-star",onClick:w},{default:D(()=>[ee(c(x.value?e(n)("wordFilter.isDefault"):e(n)("wordFilter.setDefault")),1)]),_:1},8,["variant","color","icon"]),f(b,{size:"xs",variant:"soft",color:"error",icon:"i-heroicons-trash",onClick:y},{default:D(()=>[ee(c(e(n)("wordFilter.deleteScheme")),1)]),_:1})]),a("div",null,[a("label",f0,c(e(n)("wordFilter.addWords")),1),a("div",v0,[f(F,{modelValue:l.value,"onUpdate:modelValue":$[2]||($[2]=T=>l.value=T),size:"sm",class:"flex-1",placeholder:e(n)("wordFilter.addWordsPlaceholder"),onKeydown:Ze(v,["enter"])},null,8,["modelValue","placeholder"]),f(b,{size:"sm",color:"primary",icon:"i-heroicons-plus",onClick:v},{default:D(()=>[ee(c(e(n)("wordFilter.add")),1)]),_:1})])]),a("div",null,[a("div",h0,[a("label",y0,[ee(c(e(n)("wordFilter.wordList"))+" ",1),a("span",x0,"("+c(m.value.words.length)+")",1)]),m.value.words.length>0?(d(),B(b,{key:0,size:"xs",variant:"ghost",color:"error",onClick:k},{default:D(()=>[ee(c(e(n)("wordFilter.clearAll")),1)]),_:1})):V("",!0)]),m.value.words.length>0?(d(),p("div",b0,[(d(!0),p(ne,null,he(m.value.words,T=>(d(),B(E,{key:T,color:"neutral",variant:"subtle",class:"group/badge cursor-default gap-1 pr-1"},{default:D(()=>[ee(c(T)+" ",1),f(g,{name:"i-heroicons-x-mark",class:"h-3.5 w-3.5 cursor-pointer text-gray-400 transition-colors hover:text-red-500",onClick:M=>_(T)},null,8,["onClick"])]),_:2},1024))),128))])):(d(),p("div",_0,c(e(n)("wordFilter.emptyWords")),1))])]),a("div",k0,[f(b,{color:"primary",variant:"soft",onClick:$[3]||($[3]=T=>o.value=!1)},{default:D(()=>[ee(c(e(n)("wordFilter.close")),1)]),_:1})])],64)):(d(),p("div",w0,[f(g,{name:"i-heroicons-funnel",class:"h-10 w-10"}),a("p",C0,c(e(n)("wordFilter.selectOrCreate")),1),f(b,{size:"sm",color:"primary",variant:"soft",icon:"i-heroicons-plus",onClick:S},{default:D(()=>[ee(c(e(n)("wordFilter.createScheme")),1)]),_:1})]))])])])]),_:1},8,["open"])}}}),S0={class:"main-content mx-auto max-w-[920px] space-y-6 p-4 sm:p-6"},I0={key:0,class:"flex flex-col gap-3 rounded-lg border border-primary-200 bg-primary-50/70 p-4 dark:border-primary-800 dark:bg-primary-950/30 sm:flex-row sm:items-center sm:justify-between"},T0={class:"flex min-w-0 items-start gap-3"},M0={class:"min-w-0 text-sm text-primary-700 dark:text-primary-300"},A0={class:"flex shrink-0 flex-wrap gap-2"},q0={key:1,class:"space-y-6"},z0={class:"flex flex-col gap-6 p-4 sm:p-6 lg:flex-row"},D0={class:"flex min-w-0 flex-1 flex-col"},L0={class:"relative w-full",style:{"aspect-ratio":"16 / 9"}},E0={key:1,class:"absolute inset-0 flex flex-col items-center justify-center gap-2 rounded-lg border border-dashed border-gray-200 bg-gray-50/40 text-gray-500 dark:border-gray-700 dark:bg-gray-800/30 dark:text-gray-400"},V0={class:"text-xs font-medium"},F0={class:"px-4 text-center text-[11px]"},R0={key:0,class:"mt-2 text-center text-xs text-gray-500 dark:text-gray-400"},O0={class:"w-full shrink-0 space-y-4 lg:w-[280px]"},B0={class:"mb-2 text-xs font-medium text-gray-600 dark:text-gray-400"},P0={class:"mb-2 text-xs font-medium text-gray-600 dark:text-gray-400"},N0={class:"mb-2 text-xs font-medium text-gray-600 dark:text-gray-400"},j0={key:0},U0={class:"mb-2 text-xs font-medium text-gray-600 dark:text-gray-400"},W0={class:"space-y-2"},K0={class:"text-xs text-gray-400 dark:text-gray-500"},H0={key:1},Y0={class:"mb-2 text-xs font-medium text-gray-600 dark:text-gray-400"},Q0={class:"flex items-center"},G0={key:2,class:"space-y-2"},J0={class:"flex items-center justify-between"},X0={class:"text-xs font-medium text-gray-600 dark:text-gray-400"},Z0={class:"flex gap-1"},eh={class:"flex max-h-[360px] flex-wrap gap-1.5 overflow-y-auto"},th={key:0,class:"ml-1 opacity-60"},ah={class:"mb-2 flex items-center justify-between"},sh={class:"text-xs font-medium text-gray-600 dark:text-gray-400"},oh={key:0,class:"mt-1 text-xs text-gray-400 dark:text-gray-500"},nh={class:"space-y-4"},lh={class:"text-sm text-gray-600 dark:text-gray-300"},ih={class:"flex justify-end gap-2"},rh="default",Ka="chatlab_zhTW_dict_prompt_dismissed",Yb=le({__name:"WordcloudTab",props:{sessionId:{},timeFilter:{},memberId:{},showSharedTopics:{type:Boolean},enableNodeNlpFeatures:{type:Boolean,default:!0},enableRecordNavigation:{type:Boolean,default:!0}},setup(u){const n=rs(()=>ya(()=>import("./EChartWordcloud-C6XM4KOX.js"),__vite__mapDeps([4,5,6,7,1,2,3]))),{t}=Ce(),o=Gt(),s=zt(),i=_s(),l=_t(),r=u,m=A(!0);Ko(m);const x=A([]),h=A({totalMessages:0,totalWords:0,uniqueWords:0}),S=A(1.25),y=A(150),I=q(()=>{const re=x.value.slice(0,y.value),ce=re.reduce((Q,oe)=>Q+oe.count,0);return{words:re.map(Q=>({word:Q.word,count:Q.count,percentage:ce>0?Math.round(Q.count/ce*1e4)/100:0}))}}),w=A(r.enableNodeNlpFeatures?"meaningful":"all"),v=A(!0),_=A([]),k=A([]),C=A(new Map),$=["n","nr","ns","nt","nz","nw","vn","a","an"],g=A([]),b=q(()=>I.value.words.map(re=>({word:re.word,count:re.count,percentage:re.percentage??0}))),F=q(()=>[...C.value.entries()].map(([re,ce])=>({tag:re,count:ce}))),E=A(null),z=q({get:()=>i.getActiveSchemeId(r.sessionId),set:re=>i.setSessionScheme(r.sessionId,re)}),T=q(()=>[{label:t("wordFilter.noFilter"),value:"__none__"},...i.schemeOptions.map(re=>({label:re.isDefault?`${re.label} ★`:re.label,value:re.value}))]),M=q({get:()=>z.value??"__none__",set:re=>{z.value=re==="__none__"?null:re}}),L=q(()=>i.getExcludeWords(r.sessionId)),N=A("default"),U=A([]),H=A(!1),ie=A(null),se=A(!1),P=A(!r.enableNodeNlpFeatures),R=q(()=>o.locale),J=q(()=>o.locale==="zh-TW"),fe=q(()=>R.value.startsWith("zh")),X=q(()=>U.value.filter(re=>re.downloaded).map(re=>({label:t(`quotes.wordcloud.dict.${re.id==="zh-CN"?"zhCN":re.id==="zh-TW"?"zhTW":re.id}`),value:re.id}))),W=q(()=>U.value.some(re=>re.downloaded)),ae=q(()=>!r.enableNodeNlpFeatures||!fe.value||P.value),O=q(()=>U.value.filter(re=>!re.downloaded));async function ue(){if(r.enableNodeNlpFeatures)try{U.value=await Ra("/nlp/dicts"),J.value&&N.value==="default"&&U.value.find(Q=>Q.id==="zh-TW")?.downloaded&&(N.value="zh-TW"),U.value.find(ce=>ce.id==="zh-CN")?.downloaded&&N.value==="default"&&(N.value="zh-CN")}catch(re){console.error("Failed to get dict list:",re)}finally{P.value=!0}}async function we(re){H.value=!0,ie.value=re;try{const ce=await Vo(`/nlp/dicts/${re}/download`);ce.success?(await ue(),N.value=re,l.success(t("quotes.wordcloud.dict.downloadSuccess"))):l.fail(t("quotes.wordcloud.dict.downloadFailed"),{description:ce.error})}catch{l.fail(t("quotes.wordcloud.dict.downloadFailed"))}finally{H.value=!1,ie.value=null,se.value=!1}}function xe(){se.value=!1,localStorage.setItem(Ka,"true")}function te(){const re=U.value.find(ce=>ce.id==="zh-TW");J.value&&re&&!re.downloaded&&!localStorage.getItem(Ka)&&(se.value=!0)}const K=q(()=>[{label:t("quotes.wordcloud.posFilter.all"),value:"all"},{label:t("quotes.wordcloud.posFilter.meaningful"),value:"meaningful"},{label:t("quotes.wordcloud.posFilter.custom"),value:"custom"}]),j=[{label:"80",value:80},{label:"100",value:100},{label:"150",value:150},{label:"200",value:200},{label:"300",value:300}],de=Math.max(...j.map(re=>re.value)),be=q(()=>[{label:t("quotes.wordcloud.size.small"),value:.75},{label:t("quotes.wordcloud.size.medium"),value:1},{label:t("quotes.wordcloud.size.large"),value:1.25},{label:t("quotes.wordcloud.size.xlarge"),value:1.5}]),ke=q(()=>k.value.map(re=>({label:re.name,tag:re.tag,value:re.tag,count:C.value.get(re.tag)||0,meaningful:re.meaningful})));async function ze(){if(r.enableNodeNlpFeatures)try{const re=await Ra("/nlp/pos-tags");k.value=re,_.value=re.filter(ce=>ce.meaningful).map(ce=>ce.tag)}catch(re){console.error("加载词性标签失败:",re)}}let je=0;async function qe(){if(!r.sessionId||!ae.value)return;const re=++je;try{const ce=await Pe().getWordFrequency(r.sessionId,{locale:R.value,timeFilter:r.timeFilter?{startTs:r.timeFilter.startTs,endTs:r.timeFilter.endTs}:void 0,memberId:E.value??void 0,topN:50,minCount:2,posFilterMode:r.enableNodeNlpFeatures?"custom":"all",customPosTags:r.enableNodeNlpFeatures?[...$]:void 0,enableStopwords:!0,dictType:N.value,excludeWords:L.value.length>0?[...L.value]:void 0});if(re!==je)return;g.value=ce.words.map(Q=>({word:Q.word,count:Q.count,percentage:Q.percentage}))}catch(ce){if(console.error("加载话题迷你词云数据失败:",ce),re!==je)return;g.value=[]}}let He=0;async function Ue(){if(!r.sessionId||!ae.value)return;const re=++He;x.value.length===0&&(m.value=!0);try{const ce=await Pe().getWordFrequency(r.sessionId,{locale:R.value,timeFilter:r.timeFilter?{startTs:r.timeFilter.startTs,endTs:r.timeFilter.endTs}:void 0,memberId:E.value??void 0,topN:de,minCount:2,posFilterMode:r.enableNodeNlpFeatures?w.value:"all",customPosTags:r.enableNodeNlpFeatures&&w.value==="custom"?[..._.value]:void 0,enableStopwords:v.value,dictType:N.value,excludeWords:L.value.length>0?[...L.value]:void 0});if(re!==He)return;if(x.value=ce.words.map(Q=>({word:Q.word,count:Q.count,percentage:Q.percentage})),h.value={totalMessages:ce.totalMessages,totalWords:ce.totalWords,uniqueWords:ce.uniqueWords},ce.posTagStats){const Q=new Map;for(const oe of ce.posTagStats)Q.set(oe.tag,oe.count);C.value=Q}}catch(ce){if(console.error("加载词频数据失败:",ce),re!==He)return;x.value=[]}finally{re===He&&(m.value=!1)}}pe(()=>r.sessionId,()=>{E.value=null,x.value=[],g.value=[],h.value={totalMessages:0,totalWords:0,uniqueWords:0},C.value=new Map}),pe(()=>[r.sessionId,r.timeFilter,E.value,w.value,v.value,N.value,L.value,ae.value],()=>{Ue()},{immediate:!0,deep:!0}),pe(()=>[r.sessionId,r.timeFilter,E.value,N.value,L.value,ae.value],()=>{qe()},{immediate:!0,deep:!0}),pe(_,()=>{w.value==="custom"&&Ue()},{deep:!0}),pe(R,()=>{Ue()});function Te(re){r.enableRecordNavigation&&s.openChatRecordDrawer({keywords:[re]})}return De(async()=>{r.enableNodeNlpFeatures&&(ze(),await ue(),te())}),(re,ce)=>{const Q=Se,oe=Ne,Y=wa,Ie=gs,G=Xe;return d(),p("div",S0,[r.enableNodeNlpFeatures&&fe.value&&!W.value?(d(),p("div",I0,[a("div",T0,[f(Q,{name:"i-heroicons-information-circle",class:"mt-0.5 shrink-0 text-xl text-primary-500"}),a("p",M0,c(e(t)("quotes.wordcloud.dict.needDownload")),1)]),a("div",A0,[(d(!0),p(ne,null,he(U.value,me=>(d(),B(oe,{key:me.id,size:"sm",color:"primary",loading:H.value&&ie.value===me.id,disabled:H.value&&ie.value!==me.id,icon:"i-heroicons-arrow-down-tray",onClick:$e=>we(me.id)},{default:D(()=>[ee(c(e(t)(`quotes.wordcloud.dict.download_${me.id}`,me.label)),1)]),_:2},1032,["loading","disabled","onClick"]))),128))])])):V("",!0),ae.value?(d(),p("div",q0,[m.value&&b.value.length===0?(d(),B(e(Tt),{key:0,text:e(t)("quotes.wordcloud.loading"),class:"py-8"},null,8,["text"])):V("",!0),f(Uv,{"total-messages":h.value.totalMessages,"total-words":h.value.totalWords,"unique-words":h.value.uniqueWords,"top-words":b.value,"topic-words":g.value,"pos-tag-stats":F.value,"time-filter":r.timeFilter,onWordClick:Te},null,8,["total-messages","total-words","unique-words","top-words","topic-words","pos-tag-stats","time-filter"]),r.showSharedTopics?(d(),B(Gv,{key:1,"session-id":r.sessionId,"time-filter":r.timeFilter,"dict-type":N.value,"exclude-words":L.value,onWordClick:Te},null,8,["session-id","time-filter","dict-type","exclude-words"])):V("",!0),f(e(Qe),{title:e(t)("quotes.wordcloud.stats.wordsLabel"),"show-divider":!1},{default:D(()=>[a("div",z0,[a("div",D0,[a("div",L0,[m.value?(d(),B(e(Tt),{key:0,text:e(t)("quotes.wordcloud.loading"),class:"absolute inset-0 z-10 rounded-lg bg-white/80 dark:bg-page-dark/80"},null,8,["text"])):b.value.length===0?(d(),p("div",E0,[f(Q,{name:"i-heroicons-chat-bubble-bottom-center-text",class:"text-2xl"}),a("p",V0,c(e(t)("quotes.wordcloud.empty.title")),1),a("p",F0,c(e(t)("quotes.wordcloud.empty.description")),1)])):(d(),B(e(n),{key:2,data:I.value,height:"100%","max-words":y.value,"color-scheme":rh,"size-scale":S.value,loading:m.value,onWordClick:Te},null,8,["data","max-words","size-scale","loading"]))]),r.enableRecordNavigation?(d(),p("p",R0,c(e(t)("quotes.wordcloud.stats.clickHint")),1)):V("",!0)]),a("div",O0,[a("div",null,[a("h4",B0,c(e(t)("quotes.wordcloud.config.maxWords")),1),f(e(ct),{modelValue:y.value,"onUpdate:modelValue":ce[0]||(ce[0]=me=>y.value=me),size:"xs",items:j},null,8,["modelValue"])]),a("div",null,[a("h4",P0,c(e(t)("quotes.wordcloud.config.sizeScale")),1),f(e(ct),{modelValue:S.value,"onUpdate:modelValue":ce[1]||(ce[1]=me=>S.value=me),size:"xs",items:be.value},null,8,["modelValue","items"])]),a("div",null,[a("h4",N0,c(e(t)("quotes.wordcloud.config.userFilter")),1),f(ig,{modelValue:E.value,"onUpdate:modelValue":ce[2]||(ce[2]=me=>E.value=me),"session-id":r.sessionId,class:"w-full"},null,8,["modelValue","session-id"])]),r.enableNodeNlpFeatures?(d(),p("div",j0,[a("h4",U0,c(e(t)("quotes.wordcloud.config.dict")),1),a("div",W0,[X.value.length>1?(d(),B(e(ct),{key:0,modelValue:N.value,"onUpdate:modelValue":ce[3]||(ce[3]=me=>N.value=me),size:"xs",items:X.value},null,8,["modelValue","items"])):V("",!0),(d(!0),p(ne,null,he(O.value,me=>(d(),p("div",{key:me.id,class:"flex items-center gap-2"},[f(oe,{size:"xs",variant:"soft",color:"primary",loading:H.value&&ie.value===me.id,disabled:H.value&&ie.value!==me.id,icon:"i-heroicons-arrow-down-tray",onClick:$e=>we(me.id)},{default:D(()=>[ee(c(e(t)(`quotes.wordcloud.dict.download_${me.id}`,e(t)("quotes.wordcloud.dict.download"))),1)]),_:2},1032,["loading","disabled","onClick"]),a("span",K0,c(e(t)("quotes.wordcloud.dict.downloadHint")),1)]))),128))])])):V("",!0),r.enableNodeNlpFeatures?(d(),p("div",H0,[a("h4",Y0,c(e(t)("quotes.wordcloud.config.posFilter")),1),f(e(ct),{modelValue:w.value,"onUpdate:modelValue":ce[4]||(ce[4]=me=>w.value=me),size:"xs",items:K.value},null,8,["modelValue","items"])])):V("",!0),a("div",Q0,[f(Y,{modelValue:v.value,"onUpdate:modelValue":ce[5]||(ce[5]=me=>v.value=me),label:e(t)("quotes.wordcloud.config.enableStopwords")},null,8,["modelValue","label"])]),r.enableNodeNlpFeatures&&w.value==="custom"?(d(),p("div",G0,[a("div",J0,[a("h4",X0,c(e(t)("quotes.wordcloud.posFilter.customHint")),1),a("div",Z0,[f(oe,{size:"xs",variant:"ghost",color:"neutral",onClick:ce[6]||(ce[6]=me=>_.value=k.value.filter($e=>$e.meaningful).map($e=>$e.tag))},{default:D(()=>[ee(c(e(t)("quotes.wordcloud.posFilter.selectMeaningful")),1)]),_:1}),f(oe,{size:"xs",variant:"ghost",color:"neutral",onClick:ce[7]||(ce[7]=me=>_.value=k.value.map($e=>$e.tag))},{default:D(()=>[ee(c(e(t)("quotes.wordcloud.posFilter.selectAll")),1)]),_:1}),f(oe,{size:"xs",variant:"ghost",color:"neutral",onClick:ce[8]||(ce[8]=me=>_.value=[])},{default:D(()=>[ee(c(e(t)("quotes.wordcloud.posFilter.clearAll")),1)]),_:1})])]),a("div",eh,[(d(!0),p(ne,null,he(ke.value,me=>(d(),B(Ie,{key:me.value,color:_.value.includes(me.value)?"primary":"neutral",variant:_.value.includes(me.value)?"solid":"outline",class:"cursor-pointer select-none transition-colors",onClick:()=>{_.value.includes(me.value)?_.value=_.value.filter($e=>$e!==me.value):_.value=[..._.value,me.value]}},{default:D(()=>[ee(c(me.label)+" ",1),me.count>0?(d(),p("span",th,"("+c(me.count)+")",1)):V("",!0)]),_:2},1032,["color","variant","onClick"]))),128))])])):V("",!0),a("div",null,[a("div",ah,[a("h4",sh,c(e(t)("wordFilter.filterScheme")),1),f(oe,{size:"xs",variant:"ghost",color:"neutral",icon:"i-heroicons-cog-6-tooth","aria-label":e(t)("wordFilter.manage"),onClick:ce[9]||(ce[9]=me=>e(i).openModal())},null,8,["aria-label"])]),f(e(ct),{modelValue:M.value,"onUpdate:modelValue":ce[10]||(ce[10]=me=>M.value=me),size:"xs",items:T.value},null,8,["modelValue","items"]),L.value.length>0?(d(),p("p",oh,c(e(t)("wordFilter.activeCount",{count:L.value.length})),1)):V("",!0)])])])]),_:1},8,["title"])])):V("",!0),r.enableNodeNlpFeatures?(d(),B(G,{key:2,open:se.value,"onUpdate:open":ce[12]||(ce[12]=me=>se.value=me),title:e(t)("quotes.wordcloud.dict.promptTitle")},{body:D(()=>[a("div",nh,[a("p",lh,c(e(t)("quotes.wordcloud.dict.promptDescription")),1),a("div",ih,[f(oe,{variant:"ghost",color:"neutral",onClick:xe},{default:D(()=>[ee(c(e(t)("quotes.wordcloud.dict.promptLater")),1)]),_:1}),f(oe,{color:"primary",loading:H.value,onClick:ce[11]||(ce[11]=me=>we("zh-TW"))},{default:D(()=>[ee(c(e(t)("quotes.wordcloud.dict.promptDownload")),1)]),_:1},8,["loading"])])])]),_:1},8,["open","title"])):V("",!0),f($0)])}}});function Qb(u){const n=q(()=>Fo(u)),t=q(()=>{const s=n.value;return s.length<2?!1:new Set(s.map(l=>Ve(l.date).year())).size>1}),o=q(()=>{const s=n.value,i=50;if(s.length<=i){const x=t.value?"YYYY/MM/DD":"MM/DD";return{labels:s.map(h=>Ve(h.date).format(x)),values:s.map(h=>h.messageCount)}}const l=Math.ceil(s.length/i),r=[],m=[];for(let x=0;x<s.length;x+=l){const h=s.slice(x,x+l);if(h.length===0)continue;const S=Math.floor(h.length/2),y=h[S].date,I=t.value?"YYYY/MM/DD":"MM/DD";r.push(Ve(y).format(I));const w=h.reduce((_,k)=>_+k.messageCount,0),v=Math.round(w/h.length);m.push(v)}return{labels:r,values:m}});return{isMultiYear:t,dailyChartData:o}}const uh=86400;function Yt(u){return typeof u=="number"&&Number.isFinite(u)}function dh(u){return Yt(u?.startTs)&&Yt(u?.endTs)}function ks(u,n){const t=n?.startTs??u?.start,o=n?.endTs??u?.end;return!Yt(t)||!Yt(o)||o<t?null:{start:t,end:o}}function ch(u,n=0){return!u||u.end<u.start?0:Math.max(Math.ceil((u.end-u.start)/uh),n,1)}function mh(u){return u?[Ve.unix(u.start).format("YYYY-MM-DD"),Ve.unix(u.end).format("YYYY-MM-DD")]:null}function ph(u,n){const{t}=Ce(),o=q(()=>ks(u.timeRange,u.timeFilter)),s=q(()=>dh(u.timeFilter)),i=q(()=>u.dailyActivity.filter(F=>F.messageCount>0).length),l=q(()=>ch(o.value,i.value)),r=q(()=>s.value?u.filteredMessageCount:u.session.messageCount),m=q(()=>s.value?u.filteredMemberCount??u.session.memberCount:u.session.memberCount),x=q(()=>l.value),h=q(()=>x.value===0?0:Math.round(r.value/x.value)),S=q(()=>l.value===0?0:Math.round(r.value/l.value)),y=q(()=>u.messageTypes.find(E=>E.type===1)?.count||0),I=q(()=>u.hourlyActivity.length?u.hourlyActivity.reduce((F,E)=>E.messageCount>F.messageCount?E:F,u.hourlyActivity[0]):null),w=q(()=>n.value.length?n.value.reduce((F,E)=>E.messageCount>F.messageCount?E:F,n.value[0]):null),v=q(()=>[t("common.weekday.mon"),t("common.weekday.tue"),t("common.weekday.wed"),t("common.weekday.thu"),t("common.weekday.fri"),t("common.weekday.sat"),t("common.weekday.sun")]),_=q(()=>{if(!n.value.length)return{weekday:0,weekend:0};const F=n.value.filter(T=>T.weekday>=1&&T.weekday<=5).reduce((T,M)=>T+M.messageCount,0),E=n.value.filter(T=>T.weekday>=6&&T.weekday<=7).reduce((T,M)=>T+M.messageCount,0),z=F+E;return{weekday:z>0?Math.round(F/z*100):0,weekend:z>0?Math.round(E/z*100):0}}),k=q(()=>u.dailyActivity.length?u.dailyActivity.reduce((F,E)=>E.messageCount>F.messageCount?E:F,u.dailyActivity[0]):null),C=q(()=>l.value),$=q(()=>C.value>0?Math.round(i.value/C.value*100):0),g=q(()=>{if(!u.hourlyActivity.length)return{count:0,ratio:0};const F=u.hourlyActivity.reduce((z,T)=>z+T.messageCount,0),E=u.hourlyActivity.filter(z=>z.hour>=0&&z.hour<=4).reduce((z,T)=>z+T.messageCount,0);return{count:E,ratio:F>0?Math.round(E/F*100):0}}),b=q(()=>{if(!u.dailyActivity.length)return 0;const F=[...u.dailyActivity].filter(T=>T.messageCount>0).sort((T,M)=>Ve(T.date).valueOf()-Ve(M.date).valueOf());if(F.length===0)return 0;let E=1,z=1;for(let T=1;T<F.length;T++){const M=Ve(F[T-1].date);Ve(F[T].date).diff(M,"day")===1?z++:(z>E&&(E=z),z=1)}return z>E&&(E=z),E});return{durationDays:l,displayMessageCount:r,displayMemberCount:m,dailyAvgMessages:S,totalDurationDays:x,totalDailyAvgMessages:h,imageCount:y,peakHour:I,peakWeekday:w,weekdayNames:v,weekdayVsWeekend:_,peakDay:k,activeDays:i,totalDays:C,activeRate:$,lateNightChat:g,maxConsecutiveDays:b}}function gh(u){const n=A([]);let t=0;async function o(){const s=++t,i=u.sessionId();if(!i){n.value=[];return}try{const l=await Pe().getWeekdayActivity(i,u.timeFilter());s===t&&(n.value=l)}catch(l){s===t&&console.error("Failed to load weekday activity:",l)}}return pe([u.sessionId,u.timeFilter],()=>o(),{immediate:!0,deep:!0}),{weekdayActivity:n}}const fh={key:0,class:"relative z-10 px-5 pb-5 pt-2 sm:px-8 sm:pb-6"},vh={class:"grid grid-cols-2 gap-3 lg:grid-cols-4"},hh={class:"min-w-0"},yh={class:"mt-0.5 truncate text-[10px] font-medium text-gray-500 dark:text-gray-400"},xh={class:"mt-0.5 truncate text-[9px] text-gray-400 dark:text-gray-500"},bh={key:1,class:"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4"},_h={class:"text-sm text-gray-500"},kh={class:"text-sm text-gray-500"},wh={class:"ml-1 font-semibold text-pink-500"},Ch={class:"text-sm text-gray-500"},$h={class:"text-sm text-gray-500"},Sh={class:"text-sm text-gray-500"},Ih={class:"text-sm text-gray-500"},Th={class:"text-sm text-gray-500"},Mh={class:"text-sm text-gray-500"},Ah=le({__name:"OverviewStatCards",props:{dailyAvgMessages:{},durationDays:{},imageCount:{},peakHour:{},peakWeekday:{},weekdayNames:{},weekdayVsWeekend:{},peakDay:{},activeDays:{},totalDays:{},activeRate:{},lateNightCount:{},lateNightRatio:{},maxConsecutiveDays:{},flat:{type:Boolean,default:!1}},setup(u){const{t:n}=Ce(),t=u,o=q(()=>[{icon:"i-heroicons-chat-bubble-left-right",label:n("analysis.overview.statCards.dailyAvgMessages"),value:n("analysis.overview.statCards.messagesCount",{count:t.dailyAvgMessages}),subtext:n("analysis.overview.statCards.daysCount",{count:t.durationDays}),colorClass:"text-blue-600 dark:text-blue-400"},{icon:"i-heroicons-photo",label:n("analysis.overview.statCards.imageMessages"),value:n("analysis.overview.statCards.imagesCount",{count:t.imageCount}),subtext:`${n("analysis.overview.statCards.peakHour")} ${t.peakHour?.hour||0}:00`,colorClass:"text-pink-600 dark:text-pink-400"},{icon:"i-heroicons-calendar-days",label:n("analysis.overview.statCards.mostActiveWeekday"),value:t.peakWeekday?t.weekdayNames[t.peakWeekday.weekday-1]:"-",subtext:n("analysis.overview.statCards.messagesOnDay",{count:t.peakWeekday?.messageCount??0}),colorClass:"text-amber-600 dark:text-amber-400"},{icon:"i-heroicons-sun",label:n("analysis.overview.statCards.weekendActivity"),value:`${t.weekdayVsWeekend.weekend}%`,subtext:n("analysis.overview.statCards.weekendRatio"),colorClass:"text-green-600 dark:text-green-400"},{icon:"i-heroicons-fire",label:n("analysis.overview.statCards.mostActiveDate"),value:t.peakDay?Ve(t.peakDay.date).format("MM/DD"):"-",subtext:n("analysis.overview.statCards.messagesOnDay",{count:t.peakDay?.messageCount??0}),colorClass:"text-red-600 dark:text-red-400"},{icon:"i-heroicons-moon",label:n("analysis.overview.statCards.lateNightChat"),value:n("analysis.overview.statCards.messagesCount",{count:t.lateNightCount}),subtext:n("analysis.overview.statCards.lateNightRatio",{ratio:t.lateNightRatio}),colorClass:"text-indigo-600 dark:text-indigo-400"},{icon:"i-heroicons-bolt",label:n("analysis.overview.statCards.consecutiveStreak"),value:n("analysis.overview.statCards.daysStreak",{count:t.maxConsecutiveDays}),subtext:n("analysis.overview.statCards.longestStreak"),colorClass:"text-amber-600 dark:text-amber-400"},{icon:"i-heroicons-chart-bar",label:n("analysis.overview.statCards.activityRate"),value:`${t.activeRate}%`,subtext:n("analysis.overview.statCards.activeDaysRatio"),colorClass:"text-gray-900 dark:text-white"}]);return(s,i)=>{const l=Se;return u.flat?(d(),p("div",fh,[i[0]||(i[0]=a("div",{class:"mb-3 flex items-center justify-between"},[a("span",{class:"text-[10px] font-bold uppercase tracking-widest text-gray-400 dark:text-gray-500"},"Key Metrics")],-1)),a("div",vh,[(d(!0),p(ne,null,he(o.value,r=>(d(),p("div",{key:r.icon+r.label,class:"flex min-w-0 items-start gap-2 px-2.5 py-2"},[f(l,{name:r.icon,class:Z(["mt-0.5 h-3.5 w-3.5 shrink-0",r.colorClass])},null,8,["name","class"]),a("div",hh,[a("div",{class:Z(["truncate font-mono text-sm font-black leading-tight tabular-nums",r.colorClass])},c(r.value),3),a("div",yh,c(r.label),1),a("div",xh,c(r.subtext),1)])]))),128))])])):(d(),p("div",bh,[f(e(nt),{label:e(n)("analysis.overview.statCards.dailyAvgMessages"),value:e(n)("analysis.overview.statCards.messagesCount",{count:u.dailyAvgMessages}),icon:"i-heroicons-chat-bubble-left-right","icon-bg":"blue"},{subtext:D(()=>[a("span",_h,c(e(n)("analysis.overview.statCards.daysCount",{count:u.durationDays})),1)]),_:1},8,["label","value"]),f(e(nt),{label:e(n)("analysis.overview.statCards.imageMessages"),value:e(n)("analysis.overview.statCards.imagesCount",{count:u.imageCount}),icon:"i-heroicons-photo","icon-bg":"pink"},{subtext:D(()=>[a("span",kh,c(e(n)("analysis.overview.statCards.peakHour")),1),a("span",wh,c(u.peakHour?.hour||0)+":00",1)]),_:1},8,["label","value"]),f(e(nt),{label:e(n)("analysis.overview.statCards.mostActiveWeekday"),value:u.peakWeekday?u.weekdayNames[u.peakWeekday.weekday-1]:"-",icon:"i-heroicons-calendar-days","icon-bg":"amber"},{subtext:D(()=>[a("span",Ch,c(e(n)("analysis.overview.statCards.messagesOnDay",{count:u.peakWeekday?.messageCount??0})),1)]),_:1},8,["label","value"]),f(e(nt),{label:e(n)("analysis.overview.statCards.weekendActivity"),value:`${u.weekdayVsWeekend.weekend}%`,icon:"i-heroicons-sun","icon-bg":"green"},{subtext:D(()=>[a("span",$h,c(e(n)("analysis.overview.statCards.weekendRatio")),1)]),_:1},8,["label","value"]),f(e(nt),{label:e(n)("analysis.overview.statCards.mostActiveDate"),value:u.peakDay?e(Ve)(u.peakDay.date).format("MM/DD"):"-",icon:"i-heroicons-fire","icon-bg":"red"},{subtext:D(()=>[a("span",Sh,c(e(n)("analysis.overview.statCards.messagesOnDay",{count:u.peakDay?.messageCount??0})),1)]),_:1},8,["label","value"]),f(e(nt),{label:e(n)("analysis.overview.statCards.lateNightChat"),value:e(n)("analysis.overview.statCards.messagesCount",{count:u.lateNightCount}),icon:"i-heroicons-moon","icon-bg":"blue"},{subtext:D(()=>[a("span",Ih,c(e(n)("analysis.overview.statCards.lateNightRatio",{ratio:u.lateNightRatio})),1)]),_:1},8,["label","value"]),f(e(nt),{label:e(n)("analysis.overview.statCards.consecutiveStreak"),value:e(n)("analysis.overview.statCards.daysStreak",{count:u.maxConsecutiveDays}),icon:"i-heroicons-bolt","icon-bg":"amber"},{subtext:D(()=>[a("span",Th,c(e(n)("analysis.overview.statCards.longestStreak")),1)]),_:1},8,["label","value"]),f(e(nt),{label:e(n)("analysis.overview.statCards.activityRate"),value:`${u.activeRate}%`,icon:"i-heroicons-chart-bar","icon-bg":"gray"},{subtext:D(()=>[a("span",Mh,c(e(n)("analysis.overview.statCards.activeDaysRatio")),1)]),_:1},8,["label","value"])]))}}}),qh={class:"relative z-10 px-5 pt-6 pb-4 sm:px-8 sm:pt-8"},zh={class:"text-2xl font-bold tracking-tight text-gray-900 sm:text-3xl dark:text-gray-100"},Dh={class:"mt-4 flex flex-col gap-5 sm:flex-row sm:items-start sm:gap-24"},Lh={class:"min-w-0 flex flex-col gap-2 text-sm font-medium text-gray-500 dark:text-gray-400"},Eh={class:"flex items-center gap-2"},Vh={class:"flex h-6 w-6 shrink-0 items-center justify-center"},Fh={class:"whitespace-nowrap"},Rh={key:0,class:"flex items-center gap-2"},Oh={class:"flex h-6 w-6 shrink-0 items-center justify-center"},Bh={class:"font-mono text-xs opacity-90 whitespace-nowrap"},Ph={class:"grid grid-cols-2 gap-x-8 gap-y-4 sm:flex sm:shrink-0 sm:gap-6"},Nh={class:"flex flex-col gap-1 text-center"},jh={class:"text-2xl font-black font-mono tracking-tight text-gray-900 dark:text-white"},Uh={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},Wh={class:"flex flex-col gap-1 text-center"},Kh={class:"text-2xl font-black font-mono tracking-tight text-gray-900 dark:text-white"},Hh={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},Yh={class:"flex flex-col gap-1 text-center"},Qh={class:"text-2xl font-black font-mono tracking-tight text-gray-900 dark:text-white"},Gh={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},Jh={class:"flex flex-col gap-1 text-center"},Xh={class:"text-2xl font-black font-mono tracking-tight text-gray-900 dark:text-white"},Zh={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},ey={class:"relative z-10 px-5 pb-2 sm:px-8"},ty={class:"overflow-x-auto overflow-y-hidden scrollbar-hide py-1"},Gb=le({__name:"OverviewIdentityCard",props:{session:{},dailyActivity:{},messageTypes:{},hourlyActivity:{},timeRange:{},filteredMessageCount:{},filteredMemberCount:{},timeFilter:{},capturable:{type:Boolean,default:!0}},setup(u){Zt([cs,vn,ms,Ca,ps,ea]);const{t:n,locale:t}=Ce(),o=Qt(),s=u,{weekdayActivity:i}=gh({sessionId:()=>s.session.id,timeFilter:()=>s.timeFilter}),{durationDays:l,displayMessageCount:r,dailyAvgMessages:m,imageCount:x,peakHour:h,peakWeekday:S,weekdayNames:y,weekdayVsWeekend:I,peakDay:w,activeDays:v,totalDays:_,activeRate:k,lateNightChat:C,maxConsecutiveDays:$}=ph(s,i),g=A(null);let b=null;const F=q(()=>ks(s.timeRange,s.timeFilter)),E=q(()=>F.value?bn(F.value.start,F.value.end,"YYYY/MM/DD"):""),z=q(()=>{const P=mh(F.value);if(P)return P;const fe=(X=>X.toISOString().slice(0,10))(new Date);return[fe,fe]}),T=q(()=>{const[P,R]=z.value,J=new Date(P+"T00:00:00Z"),fe=new Date(R+"T00:00:00Z"),X=new Map;s.dailyActivity.filter(O=>O.date>=P&&O.date<=R).forEach(O=>X.set(O.date,O.messageCount));const W=[],ae=new Date(J);for(;ae<=fe;){const O=ae.toISOString().slice(0,10),ue=X.get(O)||0;W.push({value:[O,ue],itemStyle:ue===0?{color:N.value}:void 0}),ae.setUTCDate(ae.getUTCDate()+1)}return W}),M=q(()=>s.dailyActivity.length===0?10:Math.max(...s.dailyActivity.map(P=>P.messageCount),1)),L={light:["#fce4ec","#f8a4b8","#f06292","#e91e63"],dark:["rgba(238, 69, 103, 0.15)","rgba(238, 69, 103, 0.45)","rgba(238, 69, 103, 0.75)","rgba(238, 69, 103, 1)"]},N=q(()=>o.value?"rgba(255, 255, 255, 0.04)":"#ebedf0"),U=q(()=>({tooltip:{trigger:"item",formatter:P=>{const R=P.value[0],J=P.value[1];return`${R}<br/>${n("views.message.calendarTooltipMessages")}: ${J}`}},visualMap:{min:1,max:M.value,calculable:!1,orient:"horizontal",left:"center",bottom:0,itemWidth:10,itemHeight:80,text:[`${M.value}`,"1"],inRange:{color:o.value?L.dark:L.light},textStyle:{color:o.value?"#8b949e":"#6b7280",fontSize:10},show:!0},calendar:{top:20,left:30,cellSize:[13,13],range:z.value,itemStyle:{borderWidth:0,color:"transparent"},yearLabel:{show:!1},monthLabel:{show:!0,color:o.value?"#8b949e":"#6b7280",fontSize:10,nameMap:[n("common.month.jan"),n("common.month.feb"),n("common.month.mar"),n("common.month.apr"),n("common.month.may"),n("common.month.jun"),n("common.month.jul"),n("common.month.aug"),n("common.month.sep"),n("common.month.oct"),n("common.month.nov"),n("common.month.dec")]},dayLabel:{show:!0,firstDay:1,color:o.value?"#8b949e":"#9ca3af",fontSize:10,nameMap:[n("common.weekday.sun"),n("common.weekday.mon"),n("common.weekday.tue"),n("common.weekday.wed"),n("common.weekday.thu"),n("common.weekday.fri"),n("common.weekday.sat")]},splitLine:{show:!1}},series:[{type:"custom",coordinateSystem:"calendar",data:T.value,renderItem:(P,R)=>{const J=R.coord(R.value(0)),fe=P.coordSys.cellWidth,X=P.coordSys.cellHeight,W=Math.min(fe,X)-3;return{type:"rect",shape:{x:J[0]-W/2,y:J[1]-W/2,width:W,height:W,r:3},style:{fill:R.visual("color")}}},itemStyle:{borderColor:o.value?"transparent":"rgba(0,0,0,0.02)",borderWidth:1}}]}));function H(){g.value&&(b=ta(g.value,void 0,{renderer:"canvas"}),b.setOption({backgroundColor:"transparent",...U.value}))}function ie(){b&&b.setOption({backgroundColor:"transparent",...U.value},{notMerge:!0})}function se(){b?.resize()}return pe([()=>s.dailyActivity,t,z],()=>ie()),pe(o,()=>{b?.dispose(),H()}),De(()=>{H(),window.addEventListener("resize",se)}),Je(()=>{window.removeEventListener("resize",se),b?.dispose()}),(P,R)=>{const J=Se;return d(),B(e(aa),{capturable:u.capturable},{default:D(()=>[a("div",qh,[a("h2",zh,c(u.session.name),1),a("div",Dh,[a("div",Lh,[a("div",Eh,[a("div",Vh,[u.session.type==="group"?(d(),B(J,{key:0,name:"i-heroicons-user-group",class:"h-4 w-4 opacity-70"})):(d(),B(J,{key:1,name:"i-heroicons-user",class:"h-4 w-4 opacity-70"}))]),a("span",Fh,c(u.session.platform.toUpperCase())+" · "+c(u.session.type==="private"?e(n)("analysis.overview.identity.privateChat"):e(n)("analysis.overview.identity.groupChat")),1)]),E.value?(d(),p("div",Rh,[a("div",Oh,[f(J,{name:"i-heroicons-calendar",class:"h-4 w-4 opacity-70"})]),a("span",Bh,c(E.value),1)])):V("",!0)]),a("div",Ph,[a("div",Nh,[a("span",jh,c(e(r).toLocaleString()),1),a("span",Uh,c(e(n)("analysis.overview.identity.totalMessages")),1)]),a("div",Wh,[a("span",Kh,c(e(l).toLocaleString()),1),a("span",Hh,c(e(n)("analysis.overview.identity.durationDays")),1)]),a("div",Yh,[a("span",Qh,c(e(v).toLocaleString()),1),a("span",Gh,c(e(n)("analysis.overview.identity.activeDays")),1)]),a("div",Jh,[a("span",Xh,c(e(m).toLocaleString()),1),a("span",Zh,c(e(n)("analysis.overview.identity.dailyAvgMessages")),1)])])])]),a("div",ey,[R[0]||(R[0]=a("div",{class:"mb-2 flex items-center justify-between"},[a("span",{class:"text-[10px] font-bold uppercase tracking-widest text-gray-400 dark:text-gray-500"}," Activity Heatmap ")],-1)),a("div",ty,[a("div",{ref_key:"chartRef",ref:g,class:"h-[140px] min-w-[700px] lg:w-full"},null,512)])]),f(Ah,{flat:"","daily-avg-messages":e(m),"duration-days":e(l),"image-count":e(x),"peak-hour":e(h),"peak-weekday":e(S),"weekday-names":e(y),"weekday-vs-weekend":e(I),"peak-day":e(w),"active-days":e(v),"total-days":e(_),"active-rate":e(k),"late-night-count":e(C).count,"late-night-ratio":e(C).ratio,"max-consecutive-days":e($)},null,8,["daily-avg-messages","duration-days","image-count","peak-hour","peak-weekday","weekday-names","weekday-vs-weekend","peak-day","active-days","total-days","active-rate","late-night-count","late-night-ratio","max-consecutive-days"])]),_:1},8,["capturable"])}}}),ay={class:"p-3 sm:p-5"},Jb=le({__name:"DailyTrendCard",props:{dailyActivity:{},dailyChartData:{},capturable:{type:Boolean,default:!0}},setup(u){const{t:n}=Ce();return(t,o)=>u.dailyActivity.length>0?(d(),B(e(Qe),{key:0,title:e(n)("analysis.overview.dailyTrend.title"),capturable:u.capturable,"show-divider":!1},{default:D(()=>[a("div",ay,[f(e(wn),{data:u.dailyChartData,height:288},null,8,["data"])])]),_:1},8,["title","capturable"])):V("",!0)}}),sy={slots:{root:["relative inline-flex items-center","flex-wrap"],base:["rounded-md","transition-colors"],leading:"absolute inset-y-0 start-0 flex items-center",leadingIcon:"shrink-0 text-dimmed",leadingAvatar:"shrink-0",leadingAvatarSize:"",trailing:"absolute inset-y-0 end-0 flex items-center",trailingIcon:"shrink-0 text-dimmed",item:'px-1.5 py-0.5 rounded-sm font-medium inline-flex items-center gap-0.5 ring ring-inset ring-accented bg-elevated text-default data-disabled:cursor-not-allowed data-disabled:opacity-75 wrap-anywhere data-[state="active"]:bg-accented',itemText:"",itemDelete:["inline-flex items-center rounded-xs text-dimmed hover:text-default hover:bg-accented/75 disabled:pointer-events-none","transition-colors"],itemDeleteIcon:"shrink-0",input:"flex-1 border-0 bg-transparent placeholder:text-dimmed focus:outline-none disabled:cursor-not-allowed disabled:opacity-75"},variants:{fieldGroup:{horizontal:"not-only:first:rounded-e-none not-only:last:rounded-s-none not-last:not-first:rounded-none focus-visible:z-[1]",vertical:"not-only:first:rounded-b-none not-only:last:rounded-t-none not-last:not-first:rounded-none focus-visible:z-[1]"},size:{xs:{base:"px-2 py-1 text-sm/4 gap-1",leading:"ps-2",trailing:"pe-2",leadingIcon:"size-4",leadingAvatarSize:"3xs",trailingIcon:"size-4",item:"text-[10px]/3",itemDeleteIcon:"size-3"},sm:{base:"px-2.5 py-1.5 text-sm/4 gap-1.5",leading:"ps-2.5",trailing:"pe-2.5",leadingIcon:"size-4",leadingAvatarSize:"3xs",trailingIcon:"size-4",item:"text-[10px]/3",itemDeleteIcon:"size-3"},md:{base:"px-2.5 py-1.5 text-base/5 gap-1.5",leading:"ps-2.5",trailing:"pe-2.5",leadingIcon:"size-5",leadingAvatarSize:"2xs",trailingIcon:"size-5",item:"text-xs",itemDeleteIcon:"size-3.5"},lg:{base:"px-3 py-2 text-base/5 gap-2",leading:"ps-3",trailing:"pe-3",leadingIcon:"size-5",leadingAvatarSize:"2xs",trailingIcon:"size-5",item:"text-xs",itemDeleteIcon:"size-3.5"},xl:{base:"px-3 py-2 text-base gap-2",leading:"ps-3",trailing:"pe-3",leadingIcon:"size-6",leadingAvatarSize:"xs",trailingIcon:"size-6",item:"text-sm",itemDeleteIcon:"size-4"}},variant:{outline:"text-highlighted bg-default ring ring-inset ring-accented",soft:"text-highlighted bg-elevated/50 hover:bg-elevated has-focus:bg-elevated disabled:bg-elevated/50",subtle:"text-highlighted bg-elevated ring ring-inset ring-accented",ghost:"text-highlighted bg-transparent hover:bg-elevated has-focus:bg-elevated disabled:bg-transparent dark:disabled:bg-transparent",none:"text-highlighted bg-transparent has-focus:outline-none"},color:{primary:"",secondary:"",success:"",info:"",warning:"",error:"",neutral:""},leading:{true:""},trailing:{true:""},loading:{true:""},highlight:{true:""},fixed:{false:""},type:{file:"file:me-1.5 file:font-medium file:text-muted file:outline-none"}},compoundVariants:[{color:"primary",variant:["outline","subtle"],class:"outline-primary/25 has-focus-visible:outline-3 has-focus-visible:ring-primary"},{color:"secondary",variant:["outline","subtle"],class:"outline-secondary/25 has-focus-visible:outline-3 has-focus-visible:ring-secondary"},{color:"success",variant:["outline","subtle"],class:"outline-success/25 has-focus-visible:outline-3 has-focus-visible:ring-success"},{color:"info",variant:["outline","subtle"],class:"outline-info/25 has-focus-visible:outline-3 has-focus-visible:ring-info"},{color:"warning",variant:["outline","subtle"],class:"outline-warning/25 has-focus-visible:outline-3 has-focus-visible:ring-warning"},{color:"error",variant:["outline","subtle"],class:"outline-error/25 has-focus-visible:outline-3 has-focus-visible:ring-error"},{color:"primary",variant:["soft","ghost"],class:"outline-primary/25 has-focus-visible:outline-3"},{color:"secondary",variant:["soft","ghost"],class:"outline-secondary/25 has-focus-visible:outline-3"},{color:"success",variant:["soft","ghost"],class:"outline-success/25 has-focus-visible:outline-3"},{color:"info",variant:["soft","ghost"],class:"outline-info/25 has-focus-visible:outline-3"},{color:"warning",variant:["soft","ghost"],class:"outline-warning/25 has-focus-visible:outline-3"},{color:"error",variant:["soft","ghost"],class:"outline-error/25 has-focus-visible:outline-3"},{color:"primary",highlight:!0,class:"ring ring-inset ring-primary"},{color:"secondary",highlight:!0,class:"ring ring-inset ring-secondary"},{color:"success",highlight:!0,class:"ring ring-inset ring-success"},{color:"info",highlight:!0,class:"ring ring-inset ring-info"},{color:"warning",highlight:!0,class:"ring ring-inset ring-warning"},{color:"error",highlight:!0,class:"ring ring-inset ring-error"},{color:"neutral",variant:["outline","subtle"],class:"outline-inverted/25 has-focus-visible:outline-3 has-focus-visible:ring-inverted"},{color:"neutral",variant:["soft","ghost"],class:"outline-inverted/25 has-focus-visible:outline-3"},{color:"neutral",highlight:!0,class:"ring ring-inset ring-inverted"},{leading:!0,size:"xs",class:"ps-7"},{leading:!0,size:"sm",class:"ps-8"},{leading:!0,size:"md",class:"ps-9"},{leading:!0,size:"lg",class:"ps-10"},{leading:!0,size:"xl",class:"ps-11"},{trailing:!0,size:"xs",class:"pe-7"},{trailing:!0,size:"sm",class:"pe-8"},{trailing:!0,size:"md",class:"pe-9"},{trailing:!0,size:"lg",class:"pe-10"},{trailing:!0,size:"xl",class:"pe-11"},{loading:!0,leading:!0,class:{leadingIcon:"animate-spin"}},{loading:!0,leading:!1,trailing:!0,class:{trailingIcon:"animate-spin"}},{fixed:!1,size:"xs",class:"md:text-xs"},{fixed:!1,size:"sm",class:"md:text-xs"},{fixed:!1,size:"md",class:"md:text-sm"},{fixed:!1,size:"lg",class:"md:text-sm"}],defaultVariants:{size:"md",color:"primary",variant:"outline"}},oy=Object.assign({inheritAttrs:!1},{__name:"InputTags",props:{as:{type:null,required:!1},placeholder:{type:String,required:!1},maxLength:{type:Number,required:!1},color:{type:null,required:!1},variant:{type:null,required:!1},size:{type:null,required:!1},autofocus:{type:Boolean,required:!1},autofocusDelay:{type:Number,required:!1,default:0},deleteIcon:{type:null,required:!1},highlight:{type:Boolean,required:!1},fixed:{type:Boolean,required:!1},class:{type:null,required:!1},ui:{type:Object,required:!1},modelValue:{type:[Array,null],required:!1},defaultValue:{type:Array,required:!1},addOnPaste:{type:Boolean,required:!1},addOnTab:{type:Boolean,required:!1},addOnBlur:{type:Boolean,required:!1},duplicate:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},delimiter:{type:null,required:!1},max:{type:Number,required:!1},id:{type:String,required:!1},convertValue:{type:Function,required:!1},displayValue:{type:Function,required:!1},name:{type:String,required:!1},required:{type:Boolean,required:!1},icon:{type:null,required:!1},avatar:{type:Object,required:!1},leading:{type:Boolean,required:!1},leadingIcon:{type:null,required:!1},trailing:{type:Boolean,required:!1},trailingIcon:{type:null,required:!1},loading:{type:Boolean,required:!1},loadingIcon:{type:null,required:!1}},emits:["change","blur","focus","update:modelValue","invalid","addTag","removeTag"],setup(u,{expose:n,emit:t}){const o=u,s=t,i=ha(),l=Za("inputTags",o),r=os(),m=es(ts(l,"as","addOnPaste","addOnTab","addOnBlur","duplicate","delimiter","max","convertValue","displayValue","required"),s),{emitFormBlur:x,emitFormFocus:h,emitFormChange:S,emitFormInput:y,size:I,color:w,id:v,name:_,highlight:k,disabled:C,ariaAttrs:$}=as(o),{orientation:g,size:b}=ss(o),{isLeading:F,isTrailing:E,leadingIconName:z,trailingIconName:T}=ns(l),M=q(()=>b.value||I.value),L=q(()=>Ut({extend:Ut(sy),...r.ui?.inputTags||{}})({color:w.value??l.color,variant:l.variant,size:M?.value??l.size,loading:l.loading,highlight:k.value??l.highlight,fixed:l.fixed,leading:F.value||!!l.avatar||!!i.leading,trailing:E.value||!!i.trailing,fieldGroup:g.value})),N=Bt("inputRef");function U(){l.autofocus&&N.value?.$el?.focus()}De(()=>{setTimeout(()=>{U()},l.autofocusDelay)});function H(P){if(ls(l.modelValue)===P)return;const R=new Event("change",{target:{value:P}});s("change",R),S(),y()}function ie(P){s("blur",P),x()}function se(P){s("focus",P),h()}return n({inputRef:Fe(()=>N.value?.$el)}),(P,R)=>(d(),B(e(Gl),Ae({id:e(v),"model-value":e(l).modelValue,"default-value":e(l).defaultValue,"data-slot":"root",class:L.value.root({class:[L.value.base({class:e(l).ui?.base}),e(l).ui?.root,e(l).class]})},e(m),{name:e(_),disabled:e(C),"onUpdate:modelValue":H}),{default:D(({modelValue:J})=>[(d(!0),p(ne,null,he(J,(fe,X)=>(d(),B(e(ti),{key:X,value:fe,"data-slot":"item",class:Z(L.value.item({class:[e(l).ui?.item]}))},{default:D(()=>[f(e(ni),{"data-slot":"itemText",class:Z(L.value.itemText({class:[e(l).ui?.itemText]}))},{default:D(()=>[i["item-text"]?ve(P.$slots,"item-text",{key:0,item:fe,index:X,ui:L.value}):V("",!0)]),_:2},1032,["class"]),f(e(si),{"data-slot":"itemDelete",class:Z(L.value.itemDelete({class:[e(l).ui?.itemDelete]})),disabled:e(C)},{default:D(()=>[ve(P.$slots,"item-delete",{item:fe,index:X,ui:L.value},()=>[f(Se,{name:e(l).deleteIcon||e(r).ui.icons.close,"data-slot":"itemDeleteIcon",class:Z(L.value.itemDeleteIcon({class:[e(l).ui?.itemDeleteIcon]}))},null,8,["name","class"])])]),_:2},1032,["class","disabled"])]),_:2},1032,["value","class"]))),128)),f(e(Xl),Ae({ref_key:"inputRef",ref:N},{...P.$attrs,...e($)},{placeholder:e(l).placeholder,"max-length":e(l).maxLength,"data-slot":"input",class:L.value.input({class:e(l).ui?.input}),onBlur:ie,onFocus:se}),null,16,["placeholder","max-length","class"]),ve(P.$slots,"default",{ui:L.value}),e(F)||e(l).avatar||i.leading?(d(),p("span",{key:0,"data-slot":"leading",class:Z(L.value.leading({class:e(l).ui?.leading}))},[ve(P.$slots,"leading",{ui:L.value},()=>[e(F)&&e(z)?(d(),B(Se,{key:0,name:e(z),"data-slot":"leadingIcon",class:Z(L.value.leadingIcon({class:e(l).ui?.leadingIcon}))},null,8,["name","class"])):e(l).avatar?(d(),B(ma,Ae({key:1,size:e(l).ui?.leadingAvatarSize||L.value.leadingAvatarSize()},e(l).avatar,{"data-slot":"leadingAvatar",class:L.value.leadingAvatar({class:e(l).ui?.leadingAvatar})}),null,16,["size","class"])):V("",!0)])],2)):V("",!0),e(E)||i.trailing?(d(),p("span",{key:1,"data-slot":"trailing",class:Z(L.value.trailing({class:e(l).ui?.trailing}))},[ve(P.$slots,"trailing",{ui:L.value},()=>[e(T)?(d(),B(Se,{key:0,name:e(T),"data-slot":"trailingIcon",class:Z(L.value.trailingIcon({class:e(l).ui?.trailingIcon}))},null,8,["name","class"])):V("",!0)])],2)):V("",!0)]),_:3},16,["id","model-value","default-value","class","name","disabled"]))}}),ny={class:"flex items-center justify-between gap-3"},ly={class:"flex items-center gap-2"},iy={class:"text-sm font-medium text-gray-900 dark:text-white"},ry={class:"text-xs text-gray-500 dark:text-gray-400"},uy=le({__name:"OwnerEntryCard",props:{sessionId:{},members:{},chatType:{}},setup(u){const{t:n}=Ce(),t=Ro(),o=u,s=A(!1);function i(m){return m.groupNickname||m.accountName||m.platformId}const l=q(()=>{const m=t.currentSession?.ownerId;return m&&o.members.find(x=>x.platformId===m)||null}),r=q(()=>l.value?i(l.value):t.currentSession?.ownerId??"");return(m,x)=>{const h=Se,S=Ne;return d(),B(e(rt),{class:"w-150 p-3"},{default:D(()=>[a("div",ny,[a("div",ly,[a("div",{class:Z(["flex h-8 w-8 items-center justify-center rounded-full bg-linear-to-br",u.chatType==="group"?"from-pink-400 to-pink-600":"from-purple-400 to-purple-600"])},[f(h,{name:"i-heroicons-user",class:"h-4 w-4 text-white"})],2),a("div",null,[a("h3",iy,c(r.value?e(n)("members.ownerPrompt.currentOwner",{name:r.value}):e(n)("members.ownerPrompt.choose")),1),a("p",ry,c(e(n)("members.ownerPrompt.helper")),1)])]),f(S,{size:"sm",variant:r.value?"outline":"solid",color:"primary",onClick:x[0]||(x[0]=y=>s.value=!0)},{default:D(()=>[ee(c(r.value?e(n)("members.ownerPrompt.change"):e(n)("members.ownerPrompt.choose")),1)]),_:1},8,["variant"])]),f(Cn,{modelValue:s.value,"onUpdate:modelValue":x[1]||(x[1]=y=>s.value=y),"session-id":u.sessionId,"chat-type":u.chatType},null,8,["modelValue","session-id","chat-type"])]),_:1})}}}),dy={key:0,class:"mb-6"},cy={class:"flex items-center gap-3"},my={class:"text-xl font-bold text-gray-900 dark:text-white"},py={class:"text-sm text-gray-500 dark:text-gray-400"},gy={class:"mb-4 flex flex-wrap items-center justify-between gap-3"},fy={key:0,class:"flex items-center gap-2"},vy={class:"text-xs text-gray-500 dark:text-gray-400"},hy={key:0,class:"flex flex-1 items-center justify-center"},yy={key:1,class:"flex flex-1 flex-col items-center justify-center gap-3"},xy={class:"text-sm text-gray-500 dark:text-gray-400"},by={key:2,class:"flex flex-1 flex-col items-center justify-center"},_y={class:"text-gray-500 dark:text-gray-400"},ky={key:3,class:"min-h-0 flex-1 overflow-x-auto overflow-y-hidden"},wy={key:0,"aria-hidden":"true"},Cy={class:"flex shrink-0 flex-col leading-none"},$y={class:"flex shrink-0 flex-col leading-none"},Sy={class:"flex shrink-0 flex-col leading-none"},Iy={class:"inline-flex items-center gap-1.5"},Ty={class:"text-right"},My=["data-index","onClick"],Ay={key:0,class:"flex justify-center"},qy={class:"flex min-w-0 items-center gap-2.5"},zy={class:"min-w-0"},Dy=["title"],Ly=["title"],Ey=["title"],Vy={class:"text-right font-mono text-sm font-semibold tabular-nums text-gray-900 dark:text-white"},Fy=["title"],Ry={class:"flex justify-end gap-1"},Oy={class:"p-6 text-center"},By={class:"mx-auto mb-4 flex h-14 w-14 items-center justify-center rounded-full bg-red-100 dark:bg-red-900/30"},Py={class:"mb-2 text-lg font-semibold text-gray-900 dark:text-white"},Ny={class:"mb-6 text-sm text-gray-500 dark:text-gray-400"},jy={class:"flex justify-center gap-3"},Uy={class:"p-6 text-center"},Wy={class:"mx-auto mb-4 flex h-14 w-14 items-center justify-center rounded-full bg-red-100 dark:bg-red-900/30"},Ky={class:"mb-2 text-lg font-semibold text-gray-900 dark:text-white"},Hy={class:"mb-6 text-sm text-gray-500 dark:text-gray-400"},Yy={class:"flex justify-center gap-3"},Qy={class:"p-6"},Gy={class:"mb-4 flex items-center gap-3"},Jy={class:"flex h-10 w-10 items-center justify-center rounded-full bg-amber-100 dark:bg-amber-900/30"},Xy={class:"text-lg font-semibold text-gray-900 dark:text-white"},Zy={class:"mb-2 text-sm text-gray-600 dark:text-gray-400"},ex={class:"mb-6 text-xs text-amber-700 dark:text-amber-300"},tx={class:"flex justify-end gap-2"},ax=64,sx=le({__name:"MemberList",props:{sessionId:{},showHeader:{type:Boolean,default:!0},chatType:{default:"group"}},emits:["data-changed"],setup(u,{emit:n}){const{t}=Ce(),o=Pe(),s=zt(),i=u,l=n,r=A([]),m=A(!1),x=A(!1),h=A(""),S=q(()=>Jo(i.chatType,r.value.length)),y=q(()=>i.chatType==="group"?"":S.value?"member-table-grid--private":"member-table-grid--private-without-selection"),I=A(null),w=A(!1),v=A(!1),_=A(!1),k=A(!1),C=A(!1),{sortState:$,toggleSort:g,resetSort:b,isSortActive:F}=$n({initialState:{field:"messageCount",direction:"desc"}}),E=A(new Set);let z=0;function T(Q,oe){const Y=oe instanceof Error?oe:new Error(String(oe));console.error(Q,Y),No(`${Q} ${Y.message}`,Y.stack)}function M(Q){return Q.groupNickname||Q.accountName||Q.platformId}function L(Q){return M(Q).slice(0,1)}function N(Q){s.openChatRecordDrawer({sessionId:i.sessionId,memberId:Q.id,memberName:M(Q)})}const U=q(()=>Xo(r.value,h.value,$.value)),{selectedIds:H,setSelection:ie,clearSelection:se,handleRowClick:P,handleRowMouseDown:R}=Sn({rows:U,getRowId:Q=>Q.id}),J=q(()=>r.value.filter(Q=>H.value.has(Q.id))),fe=q(()=>J.value.length===2),X=q(()=>J.value.reduce((Q,oe)=>Q+oe.messageCount,0));function W(Q,oe,Y){S.value&&P(Q,oe,Y)}function ae(Q){S.value&&R(Q)}const O=q(()=>{if(J.value.length!==2)return null;const[Q,oe]=J.value;return oe.messageCount>Q.messageCount||oe.messageCount===Q.messageCount&&oe.id<Q.id?{primary:oe,secondary:Q}:{primary:Q,secondary:oe}});function ue(Q,oe){return F(Q,oe)?"text-primary-500 dark:text-primary-400":"text-gray-300 dark:text-gray-600"}const we=A(null),xe=Oo(q(()=>({count:U.value.length,getScrollElement:()=>we.value,estimateSize:()=>ax,overscan:8,getItemKey:Q=>U.value[Q]?.id??Q}))),te=q(()=>xe.value.getVirtualItems().map(Q=>({virtualItem:Q,member:U.value[Q.index]}))),K=q(()=>xe.value.getTotalSize());function j(Q){Q instanceof HTMLElement&&xe.value.measureElement(Q)}async function de(){await Re(),we.value?.scrollTo({top:0}),xe.value.measure()}async function be(){const Q=i.sessionId;if(!Q)return;const oe=++z;m.value=!0,x.value=!1;try{const Y=await o.getMembers(Q);if(oe!==z||Q!==i.sessionId)return;r.value=Y,await Re(),xe.value.measure()}catch(Y){oe===z&&(x.value=!0),T("Failed to load member list:",Y)}finally{oe===z&&(m.value=!1)}}function ke(Q,oe){const Y=new Set(E.value);oe?Y.add(Q):Y.delete(Q),E.value=Y}async function ze(Q,oe){const Y=i.sessionId,Ie=JSON.parse(JSON.stringify(oe)),G=JSON.stringify(Q.aliases),me=JSON.stringify(Ie);if(G!==me){ke(Q.id,!0);try{if(await o.updateMemberAliases(Y,Q.id,Ie)&&Y===i.sessionId){const Ye=r.value.findIndex(We=>We.id===Q.id);Ye!==-1&&(r.value[Ye]={...r.value[Ye],aliases:Ie},await Re(),xe.value.measure())}}catch($e){T("Failed to save member aliases:",$e)}finally{ke(Q.id,!1)}}}function je(Q){I.value=Q}function qe(){I.value=null}async function He(){if(I.value){w.value=!0;try{const Q=I.value.id;if(await o.deleteMember(i.sessionId,Q)){const Y=new Set(H.value);Y.delete(Q),ie(Y),await be(),l("data-changed")}}catch(Q){T("Failed to delete member:",Q)}finally{w.value=!1,I.value=null}}}function Ue(){H.value.size!==0&&(v.value=!0)}async function Te(){const Q=i.sessionId,oe=Array.from(H.value);if(oe.length!==0){_.value=!0;try{await o.deleteMembers(Q,oe)&&Q===i.sessionId&&(v.value=!1,se(),await be(),l("data-changed"))}catch(Y){T("Failed to delete selected members:",Y)}finally{_.value=!1}}}function re(){fe.value&&(k.value=!0)}async function ce(){if(O.value){C.value=!0;try{await o.mergeMembers(i.sessionId,O.value.primary.id,O.value.secondary.id)&&(k.value=!1,se(),await be(),l("data-changed"))}catch(Q){T("Failed to merge members:",Q)}finally{C.value=!1}}}return pe([h,$],de),pe(S,Q=>{Q||se()}),pe(()=>i.sessionId,()=>{z+=1,r.value=[],x.value=!1,E.value=new Set,h.value="",b(),se(),de(),be()},{immediate:!0}),Je(()=>{z+=1}),(Q,oe)=>{const Y=Ne,Ie=qt,G=Se,me=Jt,$e=wa,Ye=oy,We=Xe;return d(),p("div",{class:Z(["main-content",i.showHeader?"max-w-5xl p-6":"flex h-full max-w-none flex-col overflow-hidden p-4"])},[i.showHeader?(d(),p("div",dy,[a("div",cy,[a("div",null,[a("h2",my,c(e(t)(i.chatType==="private"?"members.private.title":"members.list.title")),1),a("p",py,c(e(t)(i.chatType==="private"?"members.private.description":"members.list.description",{count:r.value.length})),1)])])])):V("",!0),f(uy,{class:"mb-6","session-id":u.sessionId,members:r.value,"chat-type":i.chatType},null,8,["session-id","members","chat-type"]),a("div",gy,[f(Ie,{modelValue:h.value,"onUpdate:modelValue":oe[1]||(oe[1]=Le=>h.value=Le),placeholder:e(t)("members.list.searchPlaceholder"),icon:"i-heroicons-magnifying-glass",class:"w-full md:w-100"},Bo({_:2},[h.value?{name:"trailing",fn:D(()=>[f(Y,{icon:"i-heroicons-x-mark",variant:"link",color:"neutral",size:"xs",onClick:oe[0]||(oe[0]=Le=>h.value="")})]),key:"0"}:void 0]),1032,["modelValue","placeholder"]),S.value?(d(),p("div",fy,[m.value&&r.value.length>0?(d(),B(G,{key:0,name:"i-heroicons-arrow-path",class:"h-4 w-4 animate-spin text-primary-500"})):V("",!0),a("span",vy,c(e(t)("members.list.selectedCount",{count:e(H).size})),1),f(Y,{icon:"i-heroicons-link",size:"sm",color:"primary",disabled:!fe.value,onClick:re},{default:D(()=>[ee(c(e(t)("members.list.mergeSelected")),1)]),_:1},8,["disabled"]),f(Y,{icon:"i-heroicons-trash",size:"sm",color:"error",variant:"outline",disabled:e(H).size===0,onClick:Ue},{default:D(()=>[ee(c(e(t)("members.list.deleteSelected")),1)]),_:1},8,["disabled"])])):V("",!0)]),a("div",{class:Z(["flex min-h-[240px] flex-col overflow-hidden rounded-lg border border-gray-200/60 bg-card-bg dark:border-white/5 dark:bg-card-dark",i.showHeader?"h-[500px]":"min-h-0 flex-1"])},[m.value&&r.value.length===0?(d(),p("div",hy,[f(G,{name:"i-heroicons-arrow-path",class:"h-8 w-8 animate-spin text-primary-500"})])):x.value&&r.value.length===0?(d(),p("div",yy,[f(G,{name:"i-heroicons-exclamation-circle",class:"h-10 w-10 text-red-400"}),a("p",xy,c(e(t)("members.list.loadError")),1),f(Y,{size:"sm",variant:"outline",icon:"i-heroicons-arrow-path",onClick:be},{default:D(()=>[ee(c(e(t)("common.retry")),1)]),_:1})])):U.value.length===0?(d(),p("div",by,[f(G,{name:"i-heroicons-user-group",class:"mb-3 h-12 w-12 text-gray-300 dark:text-gray-600"}),a("p",_y,c(h.value?e(t)("members.list.noMatch"):e(t)("members.list.empty")),1)])):(d(),p("div",ky,[a("div",{class:Z(["flex h-full flex-col",i.chatType==="private"?"min-w-[920px]":"min-w-[1120px]"])},[a("div",{class:Z(["member-table-grid shrink-0 border-b border-gray-200 bg-gray-50 px-3 py-2 text-xs font-medium text-gray-500 dark:border-white/5 dark:bg-page-dark/80 dark:text-gray-400",y.value])},[S.value?(d(),p("span",wy)):V("",!0),a("span",null,c(e(t)("members.list.table.accountName")),1),i.chatType==="group"?(d(),p("button",{key:1,type:"button",class:"flex items-center justify-start gap-1.5 text-left transition-colors hover:text-gray-700 dark:hover:text-gray-200",onClick:oe[2]||(oe[2]=Le=>e(g)("groupNickname"))},[ee(c(e(t)("members.list.table.groupNickname"))+" ",1),a("span",Cy,[f(G,{name:"i-heroicons-chevron-up",class:Z(["h-2.5 w-2.5",ue("groupNickname","asc")])},null,8,["class"]),f(G,{name:"i-heroicons-chevron-down",class:Z(["-mt-0.5 h-2.5 w-2.5",ue("groupNickname","desc")])},null,8,["class"])])])):V("",!0),a("button",{type:"button",class:"flex items-center justify-end gap-1.5 text-right transition-colors hover:text-gray-700 dark:hover:text-gray-200",onClick:oe[3]||(oe[3]=Le=>e(g)("messageCount"))},[ee(c(e(t)("members.list.table.messageCount"))+" ",1),a("span",$y,[f(G,{name:"i-heroicons-chevron-up",class:Z(["h-2.5 w-2.5",ue("messageCount","asc")])},null,8,["class"]),f(G,{name:"i-heroicons-chevron-down",class:Z(["-mt-0.5 h-2.5 w-2.5",ue("messageCount","desc")])},null,8,["class"])])]),a("button",{type:"button",class:"flex items-center justify-end gap-1.5 text-right transition-colors hover:text-gray-700 dark:hover:text-gray-200",onClick:oe[4]||(oe[4]=Le=>e(g)("lastMessageTs"))},[ee(c(e(t)("members.list.table.lastMessageTime"))+" ",1),a("span",Sy,[f(G,{name:"i-heroicons-chevron-up",class:Z(["h-2.5 w-2.5",ue("lastMessageTs","asc")])},null,8,["class"]),f(G,{name:"i-heroicons-chevron-down",class:Z(["-mt-0.5 h-2.5 w-2.5",ue("lastMessageTs","desc")])},null,8,["class"])])]),a("span",Iy,[a("span",null,c(e(t)("members.list.table.customAlias")),1),f(me,{text:e(t)("members.list.tip"),popper:{placement:"top"}},{default:D(()=>[f(G,{name:"i-heroicons-question-mark-circle",class:"h-4 w-4 text-gray-400 dark:text-gray-500"})]),_:1},8,["text"])]),a("span",Ty,c(e(t)("members.list.table.actions")),1)],2),a("div",{ref_key:"listScrollRef",ref:we,class:"min-h-0 flex-1 overflow-y-auto"},[a("div",{class:"relative",style:et({height:`${K.value}px`})},[(d(!0),p(ne,null,he(te.value,({virtualItem:Le,member:Me})=>(d(),p("div",{key:String(Le.key),ref_for:!0,ref:j,"data-index":Le.index,class:Z(["member-table-grid absolute left-0 top-0 w-full min-h-16 border-b border-gray-100/80 px-3 py-2 transition-colors hover:bg-gray-50 dark:border-white/5 dark:hover:bg-gray-800/30",[y.value,S.value?"cursor-pointer":"",S.value&&e(H).has(Me.id)?"bg-primary-50/70 dark:bg-primary-950/20":""]]),style:et({transform:`translateY(${Le.start}px)`}),onMousedown:ae,onClick:Ge=>W(Le.index,Me.id,Ge)},[S.value?(d(),p("div",Ay,[f($e,{"model-value":e(H).has(Me.id),onClick:Oe(Ge=>W(Le.index,Me.id,Ge),["stop"])},null,8,["model-value","onClick"])])):V("",!0),a("div",qy,[f(Po,{src:Me.avatar,alt:M(Me),text:L(Me),"fallback-class":["flex h-8 w-8 items-center justify-center rounded-full text-[10px] font-bold","bg-primary-500 text-white"]},null,8,["src","alt","text"]),a("div",zy,[a("p",{class:"truncate text-sm font-medium text-gray-900 dark:text-white",title:Me.accountName||"-"},c(Me.accountName||"-"),9,Dy),a("p",{class:"truncate text-xs text-gray-400 dark:text-gray-500",title:Me.platformId},c(Me.platformId),9,Ly)])]),i.chatType==="group"?(d(),p("p",{key:1,class:Z(["truncate text-sm text-gray-700 dark:text-gray-300",Me.groupNickname?"font-medium":"text-gray-400 dark:text-gray-500"]),title:Me.groupNickname||"-"},c(Me.groupNickname||"-"),11,Ey)):V("",!0),a("span",Vy,c(Me.messageCount.toLocaleString()),1),a("span",{class:"text-right font-mono text-xs tabular-nums text-gray-600 dark:text-gray-400",title:Me.lastMessageTs===null?"-":e(Ba)(Me.lastMessageTs)},c(Me.lastMessageTs===null?"-":e(Ba)(Me.lastMessageTs)),9,Fy),f(Ye,{"model-value":Me.aliases,placeholder:e(t)("members.list.aliasPlaceholder"),loading:E.value.has(Me.id),size:"xs",class:"w-full",onClick:oe[5]||(oe[5]=Oe(()=>{},["stop"])),"onUpdate:modelValue":Ge=>ze(Me,Ge)},null,8,["model-value","placeholder","loading","onUpdate:modelValue"]),a("div",Ry,[f(Y,{icon:"i-heroicons-chat-bubble-left-ellipsis",size:"xs",color:"neutral",variant:"ghost",title:e(t)("common.viewChatRecords"),onClick:Oe(Ge=>N(Me),["stop"])},null,8,["title","onClick"]),f(Y,{icon:"i-heroicons-trash",size:"xs",color:"error",variant:"ghost",title:e(t)("members.list.delete"),onClick:Oe(Ge=>je(Me),["stop"])},null,8,["title","onClick"])])],46,My))),128))],4)],512)],2)]))],2),f(We,{open:!!I.value,ui:{content:"max-w-sm"},"onUpdate:open":oe[6]||(oe[6]=Le=>I.value=null)},{content:D(()=>[a("div",Oy,[a("div",By,[f(G,{name:"i-heroicons-exclamation-triangle",class:"h-7 w-7 text-red-500"})]),a("h3",Py,c(e(t)("members.list.modal.title")),1),a("p",Ny,c(e(t)("members.list.modal.content",{name:I.value?M(I.value):"",count:I.value?.messageCount.toLocaleString()})),1),a("div",jy,[f(Y,{variant:"outline",onClick:qe},{default:D(()=>[ee(c(e(t)("members.list.modal.cancel")),1)]),_:1}),f(Y,{color:"error",loading:w.value,onClick:He},{default:D(()=>[ee(c(e(t)("members.list.modal.confirm")),1)]),_:1},8,["loading"])])])]),_:1},8,["open"]),f(We,{open:v.value,ui:{content:"max-w-sm"},"onUpdate:open":oe[8]||(oe[8]=Le=>v.value=Le)},{content:D(()=>[a("div",Uy,[a("div",Wy,[f(G,{name:"i-heroicons-exclamation-triangle",class:"h-7 w-7 text-red-500"})]),a("h3",Ky,c(e(t)("members.list.batchDeleteModal.title")),1),a("p",Hy,c(e(t)("members.list.batchDeleteModal.content",{count:J.value.length,messageCount:X.value.toLocaleString()})),1),a("div",Yy,[f(Y,{variant:"outline",disabled:_.value,onClick:oe[7]||(oe[7]=Le=>v.value=!1)},{default:D(()=>[ee(c(e(t)("members.list.modal.cancel")),1)]),_:1},8,["disabled"]),f(Y,{color:"error",loading:_.value,onClick:Te},{default:D(()=>[ee(c(e(t)("members.list.modal.confirm")),1)]),_:1},8,["loading"])])])]),_:1},8,["open"]),f(We,{open:k.value,ui:{content:"max-w-md"},"onUpdate:open":oe[10]||(oe[10]=Le=>k.value=Le)},{content:D(()=>[a("div",Qy,[a("div",Gy,[a("div",Jy,[f(G,{name:"i-heroicons-link",class:"h-5 w-5 text-amber-600 dark:text-amber-400"})]),a("h3",Xy,c(e(t)("members.list.mergeModal.title")),1)]),a("p",Zy,c(e(t)("members.list.mergeModal.content",{source:O.value?M(O.value.secondary):"",sourceCount:O.value?O.value.secondary.messageCount.toLocaleString():"0",target:O.value?M(O.value.primary):"",targetCount:O.value?O.value.primary.messageCount.toLocaleString():"0"})),1),a("p",ex,c(e(t)("members.list.mergeModal.hint")),1),a("div",tx,[f(Y,{variant:"outline",disabled:C.value,onClick:oe[9]||(oe[9]=Le=>k.value=!1)},{default:D(()=>[ee(c(e(t)("members.list.mergeModal.cancel")),1)]),_:1},8,["disabled"]),f(Y,{color:"primary",loading:C.value,onClick:ce},{default:D(()=>[ee(c(e(t)("members.list.mergeModal.confirm")),1)]),_:1},8,["loading"])])])]),_:1},8,["open"])],2)}}}),Xb=gt(sx,[["__scopeId","data-v-0754d30f"]]),ox={class:"mt-3 flex flex-col items-stretch gap-2 sm:min-h-8 sm:flex-row sm:items-center sm:justify-between sm:gap-3"},nx={key:0,class:"max-w-full overflow-x-auto scrollbar-hide"},Zb=le({__name:"SessionAnalysisHeader",props:jt({title:{},avatar:{},icon:{},iconClass:{},tabs:{},currentSessionId:{},initialTimeState:{},showSessionActions:{type:Boolean,default:!0}},{activeTab:{required:!0},activeTabModifiers:{},timeRangeValue:{required:!0},timeRangeValueModifiers:{}}),emits:jt(["openIncrementalImport","openMemberManagement","openChatRecord","update:fullRange","update:availableYears","timeRangeInitialized"],["update:activeTab","update:timeRangeValue"]),setup(u,{emit:n}){const t=ca(u,"activeTab"),o=ca(u,"timeRangeValue"),s=u,i=n,{t:l}=Ce(),r=zt(),m=q(()=>!["ai-chat","memory","more"].includes(t.value)),x=q(()=>s.tabs.map(h=>({id:h.id,label:l(h.labelKey),icon:h.icon})));return(h,S)=>{const y=Ne,I=Jt;return d(),B(In,{title:u.title,avatar:u.avatar,size:"compact",icon:u.icon,"icon-class":u.iconClass},{actions:D(()=>[u.showSessionActions&&e(r).effectiveToolsPanelPosition==="header"?(d(),p(ne,{key:0},[f(I,{text:e(l)("analysis.tooltip.viewChatRecord")},{default:D(()=>[f(y,{icon:"i-heroicons-chat-bubble-bottom-center-text",variant:"ghost",color:"gray",size:"sm",class:"hover:bg-gray-100 dark:hover:bg-gray-800",onClick:S[0]||(S[0]=w=>i("openChatRecord"))})]),_:1},8,["text"]),f(I,{text:e(l)("analysis.tooltip.incrementalImport")},{default:D(()=>[f(y,{icon:"i-heroicons-plus-circle",variant:"ghost",color:"gray",size:"sm",class:"hover:bg-gray-100 dark:hover:bg-gray-800",onClick:S[1]||(S[1]=w=>i("openIncrementalImport"))})]),_:1},8,["text"]),f(I,{text:e(l)("analysis.tooltip.memberManagement")},{default:D(()=>[f(y,{icon:"i-heroicons-user-group",variant:"ghost",color:"gray",size:"sm",class:"hover:bg-gray-100 dark:hover:bg-gray-800",onClick:S[2]||(S[2]=w=>i("openMemberManagement"))})]),_:1},8,["text"]),f(Kt,{color:"gray"}),f(I,{text:e(l)("analysis.tooltip.more")},{default:D(()=>[f(y,{"data-tools-panel-trigger":"",icon:"i-heroicons-ellipsis-horizontal",variant:"ghost",color:"gray",size:"sm",class:"hover:bg-gray-100 dark:hover:bg-gray-800",onClick:S[3]||(S[3]=w=>e(r).toggleToolsPanelOpen())})]),_:1},8,["text"])],64)):u.showSessionActions?(d(),B(Kt,{key:1,color:"gray"})):V("",!0)]),default:D(()=>[a("div",ox,[f(e(Tn),{modelValue:t.value,"onUpdate:modelValue":S[4]||(S[4]=w=>t.value=w),class:"min-w-0 shrink",items:x.value},null,8,["modelValue","items"]),m.value?(d(),p("div",nx,[f(_n,{modelValue:o.value,"onUpdate:modelValue":S[5]||(S[5]=w=>o.value=w),"session-id":u.currentSessionId??void 0,"initial-state":u.initialTimeState,size:"sm","onUpdate:fullRange":S[6]||(S[6]=w=>i("update:fullRange",w)),"onUpdate:availableYears":S[7]||(S[7]=w=>i("update:availableYears",w)),onInitializationComplete:S[8]||(S[8]=w=>i("timeRangeInitialized",w))},null,8,["modelValue","session-id","initial-state"])])):V("",!0)])]),_:1},8,["title","avatar","icon","icon-class"])}}}),lx={class:"space-y-4 p-5"},ix={class:"flex items-center gap-2"},rx={class:"text-base font-semibold text-gray-900 dark:text-white"},ux={key:0,class:"flex items-center gap-2 text-sm text-gray-400"},dx={class:"rounded-lg border border-gray-200 bg-gray-50 p-3 text-sm dark:border-gray-700 dark:bg-gray-800/50"},cx={class:"flex items-center justify-between"},mx={class:"text-gray-500"},px={class:"font-medium text-gray-800 dark:text-gray-200"},gx={key:0,class:"mt-1 flex items-center justify-between"},fx={class:"text-gray-500"},vx={class:"text-gray-700 dark:text-gray-300"},hx={key:1,class:"mt-2"},yx={class:"flex items-center justify-between text-xs text-gray-500"},xx={class:"mt-1 h-1.5 w-full overflow-hidden rounded-full bg-gray-200 dark:bg-gray-700"},bx={key:2,class:"mt-1 text-xs text-red-500"},_x={class:"text-sm text-gray-600 dark:text-gray-400"},kx={key:0,class:"rounded border border-amber-200 bg-amber-50 px-2 py-1.5 text-xs text-amber-700 dark:border-amber-800/50 dark:bg-amber-900/20 dark:text-amber-400"},wx={class:"flex justify-end gap-2"},Cx={class:"text-xs text-gray-400"},$x={class:"flex flex-wrap justify-end gap-2"},Ee="settings.ai.semanticIndex",e_=le({__name:"SemanticIndexSessionModal",props:{modelValue:{type:Boolean},sessionId:{},messageCount:{}},emits:["update:modelValue"],setup(u,{emit:n}){const t=u,o=n,{t:s}=Ce(),i=yn(),l=q({get:()=>t.modelValue,set:$=>o("update:modelValue",$)}),r=A(null),m=A(!1),x=A(!1),h=A(!1),S=q(()=>{const $=r.value;return!$||!$.enabled?s(`${Ee}.session.notEnabled`):$.needsRebuild?s(`${Ee}.state.needsRebuild`):$.running||$.queued||$.indexStatus==="running"?s(`${Ee}.state.building`):$.indexStatus==="completed"?s(`${Ee}.state.completed`):$.indexStatus==="failed"?s(`${Ee}.state.failed`):$.indexStatus==="paused"?s(`${Ee}.state.paused`):s(`${Ee}.state.pending`)}),y=q(()=>{const $=r.value;return!!$&&($.running||$.queued||$.indexStatus==="running")}),I=q(()=>r.value&&r.value.totalMessages>0?Math.round(r.value.indexedMessages/r.value.totalMessages*100):0);let w=null;function v(){w&&(clearTimeout(w),w=null)}function _(){v(),w=setTimeout(async()=>{try{r.value=await i.status(t.sessionId)}catch($){console.error("[semantic-index] poll status failed:",$)}y.value&&t.modelValue?_():v()},1500)}async function k(){x.value=!0;try{const[$,g]=await Promise.all([i.getConfig(),i.status(t.sessionId)]);m.value=$.config.enabled&&$.configured&&($.config.mode==="local"?!!$.config.local.modelId:!!$.config.api?.baseUrl&&!!$.config.api?.model&&(!xn($.config.api?.baseUrl)||$.apiKeySet)),r.value=g}catch($){console.error("[semantic-index] load session status failed:",$)}finally{x.value=!1}y.value&&_()}async function C($){h.value=!0;try{r.value=await i[$](t.sessionId)}catch(g){console.error(`[semantic-index] ${$} failed:`,g)}finally{h.value=!1}y.value?_():v()}return pe(()=>t.modelValue,$=>{$?k():v()}),Je(v),($,g)=>{const b=Se,F=Ne,E=Xe;return d(),B(E,{open:l.value,"onUpdate:open":g[10]||(g[10]=z=>l.value=z),ui:{content:"z-[101]",overlay:"z-[100]"}},{content:D(()=>[a("div",lx,[a("div",ix,[f(b,{name:"i-heroicons-circle-stack",class:"h-5 w-5 text-blue-500"}),a("h3",rx,c(e(s)(`${Ee}.title`)),1)]),x.value?(d(),p("div",ux,[f(b,{name:"i-heroicons-arrow-path",class:"h-4 w-4 animate-spin"}),ee(" "+c(e(s)("common.loading")),1)])):(d(),p(ne,{key:1},[a("div",dx,[a("div",cx,[a("span",mx,c(e(s)(`${Ee}.session.statusLabel`)),1),a("span",px,c(S.value),1)]),r.value?.enabled&&r.value.indexStatus==="completed"?(d(),p("div",gx,[a("span",fx,c(e(s)(`${Ee}.session.coverageLabel`)),1),a("span",vx,c(I.value)+"%",1)])):V("",!0),y.value?(d(),p("div",hx,[a("div",yx,[a("span",null,c(e(s)(`${Ee}.session.progressLabel`)),1),a("span",null,c(r.value?.indexedMessages??0)+" / "+c(r.value?.totalMessages??0)+" ("+c(I.value)+"%) ",1)]),a("div",xx,[a("div",{class:"h-full rounded-full bg-blue-500 transition-all duration-500",style:et({width:`${I.value}%`})},null,4)])])):V("",!0),r.value?.error?(d(),p("p",bx,c(r.value.error),1)):V("",!0)]),r.value?.enabled?(d(),p(ne,{key:1},[a("p",Cx,c(e(s)(`${Ee}.session.buildVsEnable`)),1),a("div",$x,[y.value?(d(),p(ne,{key:0},[f(F,{variant:"soft",loading:h.value,onClick:g[2]||(g[2]=z=>C("pause"))},{default:D(()=>[ee(c(e(s)(`${Ee}.action.pause`)),1)]),_:1},8,["loading"]),f(F,{color:"error",variant:"soft",disabled:h.value,onClick:g[3]||(g[3]=z=>C("cancel"))},{default:D(()=>[ee(c(e(s)(`${Ee}.action.cancel`)),1)]),_:1},8,["disabled"])],64)):r.value?.indexStatus==="completed"&&!r.value?.needsRebuild?(d(),B(F,{key:1,variant:"soft",loading:h.value,onClick:g[4]||(g[4]=z=>C("rebuild"))},{default:D(()=>[ee(c(e(s)(`${Ee}.action.rebuild`)),1)]),_:1},8,["loading"])):r.value?.needsRebuild?(d(),B(F,{key:2,color:"primary",loading:h.value,onClick:g[5]||(g[5]=z=>C("rebuild"))},{default:D(()=>[ee(c(e(s)(`${Ee}.action.rebuild`)),1)]),_:1},8,["loading"])):r.value?.indexStatus==="failed"?(d(),B(F,{key:3,color:"primary",loading:h.value,onClick:g[6]||(g[6]=z=>C("build"))},{default:D(()=>[ee(c(e(s)(`${Ee}.session.retry`)),1)]),_:1},8,["loading"])):r.value?.indexStatus==="paused"?(d(),B(F,{key:4,color:"primary",loading:h.value,onClick:g[7]||(g[7]=z=>C("build"))},{default:D(()=>[ee(c(e(s)(`${Ee}.session.continue`)),1)]),_:1},8,["loading"])):(d(),B(F,{key:5,color:"primary",loading:h.value,onClick:g[8]||(g[8]=z=>C("build"))},{default:D(()=>[ee(c(e(s)(`${Ee}.action.build`)),1)]),_:1},8,["loading"])),f(F,{variant:"ghost",color:"neutral",disabled:h.value,onClick:g[9]||(g[9]=z=>C("remove"))},{default:D(()=>[ee(c(e(s)(`${Ee}.action.remove`)),1)]),_:1},8,["disabled"])])],64)):(d(),p(ne,{key:0},[a("p",_x,c(e(s)(`${Ee}.session.enableHint`)),1),m.value?V("",!0):(d(),p("p",kx,c(e(s)(`${Ee}.session.configFirst`)),1)),a("div",wx,[f(F,{variant:"ghost",onClick:g[0]||(g[0]=z=>l.value=!1)},{default:D(()=>[ee(c(e(s)("common.close")),1)]),_:1}),f(F,{color:"primary",loading:h.value,disabled:!m.value,onClick:g[1]||(g[1]=z=>C("enable"))},{default:D(()=>[ee(c(e(s)(`${Ee}.session.enable`)),1)]),_:1},8,["loading","disabled"])])],64))],64))])]),_:1},8,["open"])}}}),Sx={class:"min-h-[200px]"},Ix={key:0,class:"space-y-4"},Tx={class:"text-sm text-gray-600 dark:text-gray-400"},Mx={class:"text-sm text-gray-600 dark:text-gray-400"},Ax={key:1,class:"flex flex-col items-center justify-center py-10"},qx={class:"text-gray-600 dark:text-gray-400"},zx={class:"mt-2 text-sm text-gray-500"},Dx={key:2,class:"space-y-6"},Lx={class:"rounded-lg bg-gray-50 p-4 dark:bg-gray-800"},Ex={class:"mb-2 text-sm font-medium text-gray-700 dark:text-gray-300"},Vx={class:"grid grid-cols-3 gap-4 text-center"},Fx={class:"text-2xl font-bold text-gray-900 dark:text-white"},Rx={class:"text-xs text-gray-500"},Ox={class:"text-2xl font-bold text-green-600 dark:text-green-400"},Bx={class:"text-xs text-gray-500"},Px={class:"text-2xl font-bold text-gray-400"},Nx={class:"text-xs text-gray-500"},jx={key:0,class:"text-center text-sm text-amber-600 dark:text-amber-400"},Ux={key:3,class:"flex flex-col items-center justify-center py-10"},Wx={class:"text-gray-600 dark:text-gray-400"},Kx={key:0,class:"mt-4 w-full max-w-xs"},Hx={key:4,class:"flex flex-col items-center justify-center py-10"},Yx={class:"text-lg font-medium text-gray-900 dark:text-white"},Qx={class:"mt-2 text-sm text-gray-600 dark:text-gray-400"},Gx={key:5,class:"flex flex-col items-center justify-center py-10"},Jx={class:"text-lg font-medium text-gray-900 dark:text-white"},Xx={class:"mt-2 text-sm text-red-600 dark:text-red-400"},Zx={class:"flex w-full justify-end gap-2"},t_=le({__name:"IncrementalImportModal",props:{modelValue:{type:Boolean},sessionId:{},sessionName:{}},emits:["update:modelValue","imported"],setup(u,{emit:n}){const t=u,o=n,{t:s}=Ce(),i=A("select"),l=A(null),r=A(null),m=A(null),x=A(null),h=A(null),S=A(null),y=q({get:()=>t.modelValue,set:b=>o("update:modelValue",b)});pe(y,b=>{b||I()});function I(){i.value="select",l.value=null,m.value=null,x.value=null,h.value=null,S.value=null}async function w({files:b,paths:F}){if(b.length>0)l.value={source:b[0],name:b[0].name};else{h.value=s("home.import.cannotReadPath");return}await _()}function v(){r.value?.openFileDialog()}async function _(){if(l.value){i.value="analyzing",h.value=null;try{const b=await Oa().analyzeIncrementalImport(t.sessionId,l.value.source);if(b.error){i.value="error",h.value=g(b.error);return}m.value={newMessageCount:b.newMessageCount,duplicateCount:b.duplicateCount,totalInFile:b.totalInFile},i.value="preview"}catch(b){i.value="error",h.value=String(b)}}}async function k(){if(l.value){i.value="importing",x.value={stage:"saving",progress:0,message:""};try{const b=await Oa().incrementalImport(t.sessionId,l.value.source,F=>{x.value=F});b.success?(S.value={newMessageCount:b.newMessageCount},i.value="done"):(i.value="error",h.value=g(b.error||"error.import_failed"))}catch(b){i.value="error",h.value=String(b)}}}function C(){S.value&&o("imported",S.value.newMessageCount),y.value=!1}function $(){i.value="select",l.value=null,m.value=null,h.value=null}function g(b){if(b.startsWith("error.")){const F=`home.import.errors.${b.slice(6)}`,E=s(F);return E!==F?E:b}return b}return(b,F)=>{const E=Mn,z=Se,T=jo,M=Ne,L=Xe;return d(),B(L,{open:y.value,"onUpdate:open":F[1]||(F[1]=N=>y.value=N),title:e(s)("analysis.incremental.title")},{body:D(()=>[a("div",Sx,[i.value==="select"?(d(),p("div",Ix,[a("p",Tx,c(e(s)("analysis.incremental.description",{name:u.sessionName})),1),f(E,{color:"info",variant:"soft",icon:"i-heroicons-information-circle",description:e(s)("analysis.incremental.homeAutoImportHint")},null,8,["description"]),f(e(An),{ref_key:"dropZoneRef",ref:r,accept:[".json",".jsonl",".txt"],class:"w-full",onFiles:w},{default:D(({isDragOver:N})=>[a("div",{class:Z(["flex cursor-pointer flex-col items-center justify-center rounded-xl border-2 border-dashed px-6 py-10 transition-colors",N?"border-pink-500 bg-pink-50/50 dark:border-pink-400 dark:bg-pink-500/10":"border-gray-300 hover:border-pink-400 dark:border-gray-600 dark:hover:border-pink-500"]),onClick:Oe(v,["stop"])},[f(z,{name:"i-heroicons-arrow-up-tray",class:"mb-3 h-10 w-10 text-gray-400"}),a("p",Mx,c(N?e(s)("home.import.dropHint"):e(s)("analysis.incremental.dropHint")),1)],2)]),_:1},512)])):i.value==="analyzing"?(d(),p("div",Ax,[f(z,{name:"i-heroicons-arrow-path",class:"mb-4 h-10 w-10 animate-spin text-pink-500"}),a("p",qx,c(e(s)("analysis.incremental.analyzing")),1),a("p",zx,c(l.value?.name),1)])):i.value==="preview"&&m.value?(d(),p("div",Dx,[a("div",Lx,[a("p",Ex,c(l.value?.name),1),a("div",Vx,[a("div",null,[a("p",Fx,c(m.value.totalInFile.toLocaleString()),1),a("p",Rx,c(e(s)("analysis.incremental.totalInFile")),1)]),a("div",null,[a("p",Ox,c(m.value.newMessageCount.toLocaleString()),1),a("p",Bx,c(e(s)("analysis.incremental.newMessages")),1)]),a("div",null,[a("p",Px,c(m.value.duplicateCount.toLocaleString()),1),a("p",Nx,c(e(s)("analysis.incremental.duplicates")),1)])])]),m.value.newMessageCount===0?(d(),p("p",jx,[f(z,{name:"i-heroicons-exclamation-triangle",class:"mr-1 inline-block h-4 w-4"}),ee(" "+c(e(s)("analysis.incremental.noNewMessages")),1)])):V("",!0)])):i.value==="importing"?(d(),p("div",Ux,[f(z,{name:"i-heroicons-arrow-path",class:"mb-4 h-10 w-10 animate-spin text-pink-500"}),a("p",Wx,c(e(s)("analysis.incremental.importing")),1),x.value?(d(),p("div",Kx,[f(T,{value:x.value.progress,size:"sm"},null,8,["value"])])):V("",!0)])):i.value==="done"&&S.value?(d(),p("div",Hx,[f(z,{name:"i-heroicons-check-circle",class:"mb-4 h-12 w-12 text-green-500"}),a("p",Yx,c(e(s)("analysis.incremental.success")),1),a("p",Qx,c(e(s)("analysis.incremental.successDetail",{count:S.value.newMessageCount})),1)])):i.value==="error"?(d(),p("div",Gx,[f(z,{name:"i-heroicons-x-circle",class:"mb-4 h-12 w-12 text-red-500"}),a("p",Jx,c(e(s)("analysis.incremental.failed")),1),a("p",Xx,c(h.value),1)])):V("",!0)])]),footer:D(()=>[a("div",Zx,[i.value==="select"?(d(),B(M,{key:0,color:"neutral",variant:"ghost",onClick:F[0]||(F[0]=N=>y.value=!1)},{default:D(()=>[ee(c(e(s)("common.cancel")),1)]),_:1})):i.value==="preview"?(d(),p(ne,{key:1},[f(M,{color:"neutral",variant:"ghost",onClick:$},{default:D(()=>[ee(c(e(s)("common.back")),1)]),_:1}),f(M,{color:"primary",disabled:!m.value||m.value.newMessageCount===0,onClick:k},{default:D(()=>[ee(c(e(s)("analysis.incremental.import",{count:m.value?.newMessageCount||0})),1)]),_:1},8,["disabled"])],64)):i.value==="done"||i.value==="error"?(d(),p(ne,{key:2},[i.value==="error"?(d(),B(M,{key:0,color:"neutral",variant:"ghost",onClick:$},{default:D(()=>[ee(c(e(s)("common.retry")),1)]),_:1})):V("",!0),f(M,{color:"primary",onClick:C},{default:D(()=>[ee(c(e(s)("common.done")),1)]),_:1})],64)):V("",!0)])]),_:1},8,["open","title"])}}}),eb={key:0,class:"fixed right-0 top-1/3"},tb={class:"no-capture flex flex-col items-center gap-0.5 rounded-l-lg border border-r-0 border-gray-200/60 bg-white py-1.5 shadow-sm dark:border-white/5 dark:bg-page-dark"},ab=["onClick"],sb={class:"mb-2 flex items-center justify-between"},ob={class:"px-0.5 text-[9px] font-bold uppercase tracking-widest text-gray-400 dark:text-gray-500"},nb={class:"flex flex-col gap-1.5"},lb=["onClick"],ib={class:"whitespace-nowrap"},a_=le({__name:"ActionToolsPanel",emits:["openIncrementalImport","openSemanticIndex","openMemberManagement","openChatRecord","openMessageExport"],setup(u,{emit:n}){const{t}=Ce(),o=zt(),{isToolsPanelMini:s,effectiveToolsPanelPosition:i,isToolsPanelOpen:l}=bt(o),r=q(()=>i.value==="header"),m=q(()=>!r.value||l.value),x=A(null),h=n;function S(_){h(_),r.value&&(l.value=!1)}function y(_){if(!r.value||!l.value)return;const k=_.target;k instanceof Element&&(x.value?.contains(k)||k.closest("[data-tools-panel-trigger]")||(l.value=!1))}const I=[{event:"openIncrementalImport",icon:"i-heroicons-plus-circle",hoverColor:"group-hover:text-pink-500",miniHoverBg:"hover:text-pink-500",labelKey:"analysis.tooltip.incrementalImport"},{event:"openSemanticIndex",icon:"i-heroicons-circle-stack",hoverColor:"group-hover:text-indigo-500",miniHoverBg:"hover:text-indigo-500",labelKey:"analysis.tooltip.semanticIndex"},{event:"openMemberManagement",icon:"i-heroicons-user-group",hoverColor:"group-hover:text-purple-500",miniHoverBg:"hover:text-purple-500",labelKey:"analysis.tooltip.memberManagement"},{event:"openChatRecord",icon:"i-heroicons-chat-bubble-bottom-center-text",hoverColor:"group-hover:text-cyan-500",miniHoverBg:"hover:text-cyan-500",labelKey:"analysis.tooltip.viewChatRecord"},{event:"openMessageExport",icon:"i-heroicons-document-arrow-down",hoverColor:"group-hover:text-green-500",miniHoverBg:"hover:text-green-500",labelKey:"analysis.messageExport.title"}],w=[{event:"openSemanticIndex",icon:"i-heroicons-circle-stack",hoverColor:"group-hover:text-indigo-500",miniHoverBg:"hover:text-indigo-500",labelKey:"analysis.tooltip.semanticIndex"},{event:"openMessageExport",icon:"i-heroicons-document-arrow-down",hoverColor:"group-hover:text-green-500",miniHoverBg:"hover:text-green-500",labelKey:"analysis.messageExport.title"}],v=q(()=>r.value?w:I);return pe(i,()=>{l.value=!1}),De(()=>{document.addEventListener("mousedown",y)}),xa(()=>{document.removeEventListener("mousedown",y)}),(_,k)=>{const C=Se,$=Jt;return!r.value&&e(s)?(d(),p("div",eb,[a("div",tb,[(d(),p(ne,null,he(I,g=>f($,{key:g.event,text:e(t)(g.labelKey),popper:{placement:"left"}},{default:D(()=>[a("button",{class:Z(["flex h-7 w-7 items-center justify-center rounded-md text-gray-400 transition-colors hover:bg-gray-100 dark:text-gray-500 dark:hover:bg-white/5",g.miniHoverBg]),onClick:b=>S(g.event)},[f(C,{name:g.icon,class:"h-3.5 w-3.5"},null,8,["name"])],10,ab)]),_:2},1032,["text"])),64)),k[2]||(k[2]=a("div",{class:"my-0.5 h-px w-4 bg-gray-200 dark:bg-gray-700"},null,-1)),f($,{text:e(t)("analysis.toolsPanel.exitMini"),popper:{placement:"left"}},{default:D(()=>[a("button",{class:"flex h-7 w-7 items-center justify-center rounded-md text-gray-300 transition-colors hover:bg-gray-100 hover:text-gray-500 dark:text-gray-600 dark:hover:bg-white/5 dark:hover:text-gray-400",onClick:k[0]||(k[0]=g=>e(o).toggleToolsPanelMini())},[f(C,{name:"i-heroicons-arrows-pointing-out",class:"h-3 w-3"})])]),_:1},8,["text"])])])):(d(),p("div",{key:1,class:Z(["fixed right-0 z-40",r.value?"top-14":"top-1/3"])},[a("div",{class:Z(["absolute right-0 top-0 transition-all duration-250 ease-in-out",m.value?"translate-x-0 opacity-100":"pointer-events-none translate-x-full opacity-0"])},[a("div",{ref_key:"panelRef",ref:x,class:"no-capture flex w-40 flex-col rounded-l-xl border border-r-0 border-gray-200/60 bg-white p-3 shadow-overlay dark:border-white/5 dark:bg-page-dark"},[a("div",sb,[a("span",ob,c(e(t)("analysis.overview.tools")),1),r.value?V("",!0):(d(),B($,{key:0,text:e(t)("analysis.toolsPanel.miniMode"),popper:{placement:"left"}},{default:D(()=>[a("button",{class:"flex h-5 w-5 items-center justify-center rounded text-gray-300 transition-colors hover:text-gray-500 dark:text-gray-600 dark:hover:text-gray-400",onClick:k[1]||(k[1]=g=>e(o).toggleToolsPanelMini())},[f(C,{name:"i-heroicons-arrows-pointing-in",class:"h-3 w-3"})])]),_:1},8,["text"]))]),a("div",nb,[(d(!0),p(ne,null,he(v.value,g=>(d(),p("button",{key:g.event,class:"group flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-xs font-medium text-gray-600 transition-all hover:bg-gray-100 hover:text-gray-900 dark:text-gray-400 dark:hover:bg-white/5 dark:hover:text-white",onClick:b=>S(g.event)},[f(C,{name:g.icon,class:Z(["h-3.5 w-3.5 text-gray-400 transition-colors dark:text-gray-500",g.hoverColor])},null,8,["name","class"]),a("span",ib,c(e(t)(g.labelKey)),1)],8,lb))),128))])],512)],2)],2))}}});export{Wb as C,Nb as I,jb as M,aa as _,Pb as a,Qe as b,Gb as c,Jb as d,ig as e,Kb as f,Hb as g,Yb as h,Bb as i,Zb as j,Ub as k,a_ as l,e_ as m,t_ as n,Xb as o,Qb as u};
|
|
74
|
+
`,Mp=le({__name:"SkillConfigModal",props:{open:{type:Boolean},skillId:{}},emits:["update:open","saved","created"],setup(u,{emit:n}){const{t}=Ce(),s=u,o=n,i=Zt(),l=A(""),r=A(!1),m=A(!1),y=A(!1);me(()=>[s.open,s.skillId],async([S,x])=>{if(S){if(!x){y.value=!0,l.value=Tp;return}y.value=!1,r.value=!0;try{const I=await i.getSkillConfig(x);if(I){const w=["---",`name: "${I.name}"`,`description: "${I.description}"`,`tags: [${I.tags.map(v=>`"${v}"`).join(", ")}]`,`chatScope: ${I.chatScope}`,I.tools.length?`tools: [${I.tools.map(v=>`"${v}"`).join(", ")}]`:"tools: []",I.builtinId?`builtinId: ${I.builtinId}`:"","---","",I.prompt].filter(Boolean).join(`
|
|
75
|
+
`);l.value=w}}finally{r.value=!1}}},{immediate:!0});async function h(){if(l.value.trim()){m.value=!0;try{if(y.value){const S=await i.createSkill(l.value);S.success&&S.id&&(o("created",S.id),o("update:open",!1))}else s.skillId&&(await i.updateSkill(s.skillId,l.value)).success&&(o("saved"),o("update:open",!1))}finally{m.value=!1}}}return(S,x)=>{const I=Se,w=Xe;return d(),B(w,{open:u.open,ui:{content:"sm:max-w-2xl z-50"},"onUpdate:open":x[3]||(x[3]=v=>o("update:open",v))},{content:D(()=>[a("div",_p,[a("div",kp,[a("h2",wp,c(y.value?e(t)("ai.skill.config.createTitle"):e(t)("ai.skill.config.editTitle")),1),a("button",{class:"rounded-lg p-1.5 text-gray-400 transition-colors hover:bg-gray-100 hover:text-gray-600 dark:hover:bg-gray-800 dark:hover:text-gray-300",onClick:x[0]||(x[0]=v=>o("update:open",!1))},[f(I,{name:"i-heroicons-x-mark",class:"h-5 w-5"})])]),a("p",Cp,c(e(t)("ai.skill.config.rawEditorHint")),1),r.value?(d(),p("div",$p,[f(I,{name:"i-heroicons-arrow-path",class:"mr-2 h-5 w-5 animate-spin"})])):tt((d(),p("textarea",{key:1,"onUpdate:modelValue":x[1]||(x[1]=v=>l.value=v),class:"h-[400px] w-full resize-none rounded-lg border border-gray-300 bg-gray-50 p-3 font-mono text-xs text-gray-900 focus:border-primary-500 focus:ring-1 focus:ring-primary-500 dark:border-gray-600 dark:bg-page-dark dark:text-gray-100",spellcheck:"false"},null,512)),[[Kt,l.value]]),a("div",Sp,[a("button",{class:"rounded-lg px-4 py-2 text-sm text-gray-500 transition-colors hover:bg-gray-100 dark:text-gray-400 dark:hover:bg-gray-800",onClick:x[2]||(x[2]=v=>o("update:open",!1))},c(e(t)("common.cancel")),1),a("button",{class:"rounded-lg bg-primary-500 px-4 py-2 text-sm font-medium text-white transition-colors hover:bg-primary-600 disabled:opacity-50",disabled:m.value||!l.value.trim(),onClick:h},c(y.value?e(t)("ai.skill.config.create"):e(t)("ai.skill.config.save")),9,Ip)])])]),_:1},8,["open"])}}}),Ap={key:0,class:"relative"},qp={class:"relative flex flex-nowrap gap-2"},zp=["disabled"],Dp=["disabled"],Lp={class:"inline-flex items-center gap-1"},Ep={key:0,class:"absolute left-0 bottom-full z-20 mb-2 w-[320px] max-w-[calc(100vw-3rem)]"},Vp={class:"mb-1.5 flex justify-start"},Fp={class:"flex flex-wrap gap-2"},Rp=["disabled","onClick"],ua="rounded-full ring-1 ring-inset ring-gray-200/80 bg-white/60 shadow-[0_2px_8px_-2px_rgba(0,0,0,0.05)] backdrop-blur-md px-3 py-1.5 text-xs text-gray-600 transition-all duration-300 hover:-translate-y-[1px] hover:ring-primary-300 hover:bg-white/90 hover:text-primary-600 hover:shadow-[0_4px_12px_-2px_rgba(0,0,0,0.08)] disabled:cursor-not-allowed disabled:opacity-50 dark:ring-gray-700/60 dark:bg-gray-800/60 dark:text-gray-300 dark:hover:ring-primary-500/50 dark:hover:bg-gray-800/90 dark:hover:text-primary-400",Op=le({__name:"PresetQuestions",props:{questions:{},disabled:{type:Boolean},leadingActionLabel:{}},emits:["select","leadingAction","editQuestions"],setup(u,{emit:n}){const{t}=Ce(),s=u,o=n,i=A(!1);let l=null;function r(S){i.value=!1,o("select",S)}function m(){s.disabled||s.questions.length===0||(l&&(clearTimeout(l),l=null),i.value=!0)}function y(){l=setTimeout(()=>{i.value=!1},150)}function h(){i.value=!1,o("editQuestions")}return ba(()=>{l&&clearTimeout(l)}),(S,x)=>{const I=Se;return u.leadingActionLabel||u.questions.length>0?(d(),p("div",Ap,[a("div",qp,[u.leadingActionLabel?(d(),p("button",{key:0,class:Z(ua),disabled:s.disabled,onClick:x[0]||(x[0]=w=>o("leadingAction"))},c(u.leadingActionLabel),9,zp)):V("",!0),u.questions.length>0?(d(),p("div",{key:1,class:"relative shrink-0",onMouseenter:m,onMouseleave:y},[a("button",{class:Z([ua,i.value?"ring-primary-300 bg-white/90 text-primary-600 dark:ring-primary-500/50 dark:bg-gray-800/90 dark:text-primary-400":""]),disabled:s.disabled},[a("span",Lp,[f(I,{name:"i-heroicons-chat-bubble-left-ellipsis",class:"h-3.5 w-3.5"}),ee(" "+c(e(t)("ai.chat.input.quickAsk")),1)])],10,Dp),f(Tt,{"enter-active-class":"transition duration-200 ease-out","enter-from-class":"opacity-0 translate-y-2","enter-to-class":"opacity-100 translate-y-0","leave-active-class":"transition duration-150 ease-in","leave-from-class":"opacity-100 translate-y-0","leave-to-class":"opacity-0 translate-y-2"},{default:D(()=>[i.value?(d(),p("div",Ep,[a("div",Vp,[a("button",{class:"inline-flex items-center gap-1 rounded-full px-2 py-0.5 text-[10px] text-gray-400 transition-colors hover:text-primary-500 dark:text-gray-500 dark:hover:text-primary-400",onClick:h},[f(I,{name:"i-heroicons-pencil-square",class:"h-3 w-3"}),ee(" "+c(e(t)("ai.chat.input.editQuickAsk")),1)])]),a("div",Fp,[(d(!0),p(ne,null,he(u.questions,(w,v)=>(d(),p("button",{key:v,class:Z(ua),disabled:s.disabled,onClick:_=>r(w)},c(w),9,Rp))),128))])])):V("",!0)]),_:1})],32)):V("",!0)])])):V("",!0)}}});function Bp(){const u=Lt(),n=Zt(),t=A(!1),s=A(null),o=A(!1),i=A(!1),l=A(!1),r=A(!1),m=A(null);function y(b){s.value=b,o.value=!1,t.value=!0}function h(){i.value=!0}function S(b){s.value=b,o.value=!1,t.value=!0}function x(b){s.value=b,o.value=!0,t.value=!0}function I(){s.value=null,o.value=!1,t.value=!0}async function w(b){await u.loadAssistants()}async function v(){await u.loadAssistants()}function _(){l.value=!0}function k(b){m.value=b,r.value=!0}function C(){m.value=null,r.value=!0}async function $(){await n.loadSkills()}async function g(b){await n.loadSkills(),await n.loadBuiltinCatalog()}return{configModalVisible:t,configModalAssistantId:s,configModalReadonly:o,marketModalVisible:i,handleConfigureAssistant:y,handleOpenMarket:h,handleMarketConfigure:S,handleMarketViewConfig:x,handleCreateAssistant:I,handleAssistantCreated:w,handleAssistantConfigSaved:v,skillMarketModalVisible:l,skillConfigModalVisible:r,skillConfigModalSkillId:m,handleOpenSkillMarket:_,handleSkillMarketConfigure:k,handleCreateSkill:C,handleSkillConfigSaved:$,handleSkillCreated:g}}const Pp={class:"main-content relative flex h-full overflow-hidden"},Np={class:"flex h-full min-w-0 flex-1 overflow-hidden"},jp={class:"flex h-full min-w-0 flex-1"},Up={class:"relative flex min-w-[480px] flex-1 flex-col overflow-hidden"},Wp={key:0,class:"flex items-center justify-end gap-1 px-3 py-1.5"},Kp=["disabled"],Hp={key:0,class:"flex w-full flex-col items-center justify-center animate-fade-in"},Yp={key:0,class:"mb-3 text-center text-2xl font-semibold tracking-tight text-gray-800 dark:text-gray-100"},Qp={class:"text-primary-600 dark:text-primary-400"},Gp={key:1,class:"relative mb-8 w-full max-w-lg"},Jp={class:"flex w-full justify-center"},Xp={key:1,class:"flex justify-center pb-2"},Zp={key:1,class:"qa-pair space-y-6 pb-4"},eg={key:1,class:"px-4 pb-2"},tg={class:"mx-auto max-w-3xl"},ag={class:"px-4 pb-3"},sg={class:"mx-auto max-w-3xl"},og={class:"relative 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 dark:focus-within:ring-primary-500/40"},ng={key:0,class:"w-80 shrink-0 border-l border-gray-200 bg-gray-50/50 p-4 dark:border-gray-800 dark:bg-page-dark/50"},lg=le({__name:"ChatExplorer",props:{sessionId:{},sessionName:{},timeFilter:{},chatType:{}},setup(u,{expose:n}){const{t}=Ce(),s=rs(),o=Lo(),i=_t(),l=Jt(),r=Lt(),m=Zt(),y=u,h=typeof s.query.aiChatId=="string"?s.query.aiChatId:null,{initialization:S,messages:x,sourceMessages:I,currentKeywords:w,isLoadingSource:v,isAIThinking:_,currentAIChatId:k,currentToolStatus:C,sessionTokenUsage:$,agentStatus:g,selectedAssistantId:b,sendMessage:F,editMessageAndRegenerate:E,loadAIChat:z,startNewAIChat:T,stopGeneration:M,selectAssistantForSession:L}=li(y.sessionId,y.sessionName,y.timeFilter,y.chatType??"group",l.locale,h);let N=!1,U=!1;const H=A(!1);let ie=setTimeout(()=>{H.value=!0},120);function se(){ie&&(clearTimeout(ie),ie=null),H.value=!1}function P(){const ge=(y.chatType??"group")==="private"?"private-chat":"group-chat";return!U&&s.name===ge&&String(s.params.id??"")===y.sessionId}async function R(ge){!P()||(typeof s.query.aiChatId=="string"?s.query.aiChatId:null)===ge||await o.replace({query:{...s.query,aiChatId:ge||void 0}})}S.finally(()=>{se(),P()&&(N=!0,R(k.value))}),Je(()=>{U=!0,se()}),me(k,ge=>{N&&P()&&R(ge)});const J=an(x,_),{showScrollToBottom:fe,scrollToBottom:X,handleScrollToBottom:W}=J,{configModalVisible:ae,configModalAssistantId:O,configModalReadonly:ue,marketModalVisible:we,skillMarketModalVisible:xe,skillConfigModalVisible:te,skillConfigModalSkillId:K,handleConfigureAssistant:j,handleOpenMarket:de,handleMarketConfigure:be,handleMarketViewConfig:ke,handleCreateAssistant:ze,handleAssistantCreated:je,handleAssistantConfigSaved:qe,handleOpenSkillMarket:He,handleSkillMarketConfigure:Ue,handleCreateSkill:Te,handleSkillConfigSaved:re,handleSkillCreated:ce}=Bp(),Q=ds(),oe=A(0);me(()=>k.value,async ge=>{if(!ge){oe.value=0;return}try{const ye=await ot().estimateContextTokens(ge);ye.success&&(oe.value=ye.tokens)}catch{oe.value=0}},{immediate:!0});const Y=q(()=>r.selectedAssistant?.presetQuestions??[]),Ie=q(()=>y.chatType??"group"),G=A(!1),pe=A(!1),$e=A(!0),Ye=A(void 0),We=A(null),Le=A(null),Me=A(null),Ge=A(!1),kt=A(!1),wt=A(!1),Aa=q(()=>{const ge=Me.value?.name||t("ai.assistant.fallbackName");return t("ai.assistant.upgrade.backupName",{name:ge})}),Cs=q(()=>dn(x.value)),$s=q(()=>{const ge=x.value.findLastIndex(st=>st.role==="user");if(ge<0)return null;const ye=x.value.slice(ge+1);return ye.length===0||ye.length===1&&ye[0]?.role==="assistant"?x.value[ge]?.id??null:null}),Ss=sn(Cs,k,J.messagesContainer),{visiblePairs:Is,hasOlderPairs:Ts,loadOlderPairs:qa}=Ss;async function za(){$e.value=!0;try{pe.value=await _a().hasConfig()}catch(ge){console.error("检查 LLM 配置失败:",ge),pe.value=!1}finally{$e.value=!1}}async function Da(){await za()}n({refreshConfig:Da});const Vt=q(()=>{const ge=r.selectedAssistant;if(!ge)return{name:"",preview:""};const ye=ge.systemPrompt.replace(/#{1,6}\s+[^\n]*/g,"").replace(/\n+/g," ").replace(/\s+/g," ").trim();return{name:ge.name,preview:ye}}),Ms=q(()=>!!b.value&&x.value.length===0&&!_.value);function oa(){i.warn(t("ai.chat.backgroundTask.runningTitle"),{description:t("ai.chat.backgroundTask.runningDescription")})}function La(){i.warn(t("ai.chat.backgroundTask.blockedAction"))}function As(ge){if(ge!==b.value){if(!L(ge)){La();return}m.activateSkill(null),T()}}async function qs(ge){const ye=await F(ge);if(!ye.success){ye.reason==="error"&&We.value?.refresh(),ye.reason==="busy"&&oa();return}X(!0),We.value?.refresh()}function zs(){const ge=r.selectedAssistant?.id;ge&&(Ye.value="presetQuestions",j(ge))}function Ds(ge){ae.value=ge,ge||(Ye.value=void 0)}function Ls(){Le.value?.openSkillSelector()}function Es(){X(!0)}async function Ea(){const ge=await r.checkDefaultAssistantUpgrade(l.locale);ge&&(Me.value=ge,Ge.value=!0)}async function Vs(){const ge=Me.value;if(!(!ge||kt.value||wt.value)){wt.value=!0;try{const ye=await r.skipAssistantUpgrade(ge);if(!ye.success){i.fail(t("ai.assistant.upgrade.skipFailed"),{description:ye.error||t("ai.assistant.toast.unknownError")});return}Ge.value=!1,Me.value=null}finally{wt.value=!1}}}async function Fs(){const ge=Me.value;if(!(!ge||kt.value||wt.value)){kt.value=!0;try{const ye=Aa.value,st=await r.upgradeAssistantWithBackup(ge,ye);if(!st.success){i.fail(t("ai.assistant.upgrade.failed"),{description:st.error||t("ai.assistant.toast.unknownError")});return}Ge.value=!1,Me.value=null,i.success(t("ai.assistant.upgrade.success"),{description:t("ai.assistant.upgrade.successDescription",{name:ye})})}finally{kt.value=!1}}}async function Rs(ge){const ye=await F(ge.content,{mentionedMembers:ge.mentionedMembers,onAccepted:ge.onAccepted});if(!ye.success){ye.reason==="error"&&We.value?.refresh(),ye.reason==="busy"&&oa();return}X(!0),We.value?.refresh()}async function Os(ge){const ye=await E(ge.messageId,ge.content);if(!ye.success){ye.reason==="busy"&&oa();return}X(!0),We.value?.refresh()}async function Bs(ge){if(k.value)try{const ye=await ot().forkAIChat(k.value,ge);await z(ye.id),We.value?.refresh(),X(!0),i.success(t("ai.chat.fork.success"))}catch(ye){i.fail(t("ai.chat.fork.failed"),{description:String(ye)})}}function Ps(){G.value=!G.value}async function Ns(ge){await z(ge),X(!0)}function js(){if(_.value){La();return}T()}function Us(ge){k.value===ge&&T()}function Ws(){M()}return za(),De(()=>{Ea()}),me(()=>l.locale,()=>{Ea()}),me(()=>Q.aiConfigVersion,async()=>{await Da()}),(ge,ye)=>{const st=Se,Ks=Xt;return d(),p("div",Pp,[H.value?(d(),B(Mt,{key:0,variant:"overlay"})):V("",!0),f(on,{ref_key:"conversationListRef",ref:We,"session-id":u.sessionId,"active-id":e(k),disabled:e(_),onSelect:Ns,onCreate:js,onDelete:Us},null,8,["session-id","active-id","disabled"]),a("div",Np,[a("div",jp,[a("div",Up,[e(x).length>0||e(_)?(d(),p("div",Wp,[a("button",{class:Z(["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",{"cursor-not-allowed opacity-50":e(_)||!e(r).selectedAssistant?.id}]),disabled:e(_)||!e(r).selectedAssistant?.id,onClick:ye[0]||(ye[0]=_e=>e(j)(e(r).selectedAssistant.id))},[f(st,{name:"i-heroicons-sparkles",class:"h-3.5 w-3.5"}),a("span",null,c(e(r).selectedAssistant?.name||e(t)("ai.assistant.fallbackName")),1)],10,Kp),f(nn,{"current-ai-chat-id":e(k),"current-messages":e(x),"fallback-title":u.sessionName},null,8,["current-ai-chat-id","current-messages","fallback-title"])])):V("",!0),a("div",{ref:e(J).messagesContainer,class:Z(["relative min-h-0 flex-1 overflow-x-hidden overflow-y-auto p-4",{"p-0!":e(x).length===0&&!e(_)}])},[a("div",{class:Z(["mx-auto max-w-3xl space-y-6",{"flex min-h-full flex-col justify-center px-4 pb-32 pt-4 space-y-0!":e(x).length===0&&!e(_),"px-4":e(x).length>0||e(_)}])},[e(x).length===0&&!e(_)?(d(),p("div",Hp,[Vt.value.name?(d(),p("h2",Yp,[ee(c(e(t)("ai.assistant.selector.heroTitlePrefix","使用"))+" ",1),a("span",Qp,c(Vt.value.name),1),ee(" "+c(e(t)("ai.assistant.selector.heroTitleSuffix","开始对话")),1)])):V("",!0),Ms.value&&Vt.value.name?(d(),p("div",Gp,[a("p",{class:"cursor-pointer pr-7 text-center text-sm leading-relaxed text-gray-500 transition-colors hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-300 line-clamp-2",onClick:ye[1]||(ye[1]=_e=>e(j)(e(r).selectedAssistant.id))},[f(Ks,{text:e(t)("ai.assistant.config.systemPrompt","系统设定"),popper:{placement:"top"}},{default:D(()=>[ee(c(Vt.value.preview),1)]),_:1},8,["text"])]),a("button",{type:"button",class:"absolute bottom-0 right-0 rounded-md p-0.5 text-gray-400 transition-colors hover:bg-gray-100 hover:text-gray-600 dark:hover:bg-gray-800 dark:hover:text-gray-200",onClick:ye[2]||(ye[2]=Oe(_e=>e(j)(e(r).selectedAssistant.id),["stop"]))},[f(st,{name:"i-heroicons-pencil-square",class:"h-4 w-4"})])])):V("",!0),a("div",Jp,[f(nc,{"chat-type":Ie.value,locale:e(l).locale,"selected-id":e(b),onSelect:As,onMarket:e(de)},null,8,["chat-type","locale","selected-id","onMarket"])])])):V("",!0),e(Ts)?(d(),p("div",Xp,[a("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:ye[3]||(ye[3]=(..._e)=>e(qa)&&e(qa)(..._e))},[f(st,{name:"i-heroicons-arrow-up",class:"h-3.5 w-3.5"}),a("span",null,c(e(t)("ai.chat.history.loadEarlier")),1)])])):V("",!0),(d(!0),p(ne,null,he(e(Is),_e=>(d(),p(ne,{key:_e.id},[_e.standalone?(d(),B(na,{key:0,role:_e.standalone.role,content:_e.standalone.content,timestamp:_e.standalone.timestamp},null,8,["role","content","timestamp"])):(d(),p("div",Zp,[_e.user&&(_e.user.role==="user"||_e.user.content)?(d(),B(na,{key:0,role:_e.user.role,"message-id":_e.user.id,content:_e.user.content,timestamp:_e.user.timestamp,"is-streaming":_e.user.isStreaming,"content-blocks":_e.user.contentBlocks,editable:!e(_)&&_e.user.id===$s.value,onEdit:Os},null,8,["role","message-id","content","timestamp","is-streaming","content-blocks","editable"])):V("",!0),_e.assistant&&(_e.assistant.content||_e.assistant.contentBlocks&&_e.assistant.contentBlocks.length>0)?(d(),B(na,{key:1,role:_e.assistant.role,"message-id":_e.assistant.id,content:_e.assistant.content,timestamp:_e.assistant.timestamp,"is-streaming":_e.assistant.isStreaming,"process-duration-ms":_e.assistant.processDurationMs,"content-blocks":_e.assistant.contentBlocks,"show-capture-button":!_e.assistant.isStreaming,"active-tool":_e.assistant.isStreaming?e(C):null,onFork:Bs},null,8,["role","message-id","content","timestamp","is-streaming","process-duration-ms","content-blocks","show-capture-button","active-tool"])):_e.assistant?.isStreaming?(d(),B(ln,{key:2,"current-tool-status":e(C),"agent-status":e(g)},null,8,["current-tool-status","agent-status"])):V("",!0)]))],64))),128))],2)],2),f(Tt,{name:"fade-up"},{default:D(()=>[e(fe)?(d(),p("button",{key:0,class:"absolute bottom-20 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 transition-all hover:bg-gray-700 dark:bg-gray-700/90 dark:hover:bg-gray-600",onClick:ye[4]||(ye[4]=(..._e)=>e(W)&&e(W)(..._e))},[f(st,{name:"i-heroicons-arrow-down",class:"h-3.5 w-3.5"}),a("span",null,c(e(t)("ai.chat.scrollToBottom")),1)])):V("",!0)]),_:1}),e(x).length===0&&!e(_)?(d(),p("div",eg,[a("div",tg,[f(Op,{questions:Y.value,"leading-action-label":e(t)("ai.chat.input.useSkill"),onSelect:qs,onLeadingAction:Ls,onEditQuestions:zs},null,8,["questions","leading-action-label"])])])):V("",!0),a("div",ag,[a("div",sg,[a("div",og,[f(rn,{ref_key:"chatInputRef",ref:Le,"session-id":u.sessionId,disabled:e(_),status:e(_)?"streaming":"ready","chat-type":Ie.value,embedded:"",onSend:Rs,onStop:Ws,onManageSkills:e(He),onSkillActivated:Es},null,8,["session-id","disabled","status","chat-type","onManageSkills"]),f(un,{class:"pb-1.5 pl-2 pr-[52px] pt-0.5","session-token-usage":e($),"agent-status":e(g),"estimated-context-tokens":oe.value},null,8,["session-token-usage","agent-status","estimated-context-tokens"])])])])])]),f(Tt,{name:"slide-fade"},{default:D(()=>[e(I).length>0&&!G.value?(d(),p("div",ng,[f(Jd,{messages:e(I),keywords:e(w),"is-loading":e(v),"is-collapsed":G.value,class:"h-full",onToggle:Ps},null,8,["messages","keywords","is-loading","is-collapsed"])])):V("",!0)]),_:1})]),f(Kc,{open:e(ae),"assistant-id":e(O),readonly:e(ue),"scroll-to-section":Ye.value,"onUpdate:open":Ds,onSaved:e(qe),onCreated:e(je)},null,8,["open","assistant-id","readonly","scroll-to-section","onSaved","onCreated"]),f(Bm,{open:Ge.value,"backup-name":Aa.value,upgrading:kt.value,skipping:wt.value,onSkip:Vs,onConfirm:Fs},null,8,["open","backup-name","upgrading","skipping"]),f(Tm,{open:e(we),"onUpdate:open":ye[5]||(ye[5]=_e=>we.value=_e),onConfigure:e(be),onViewConfig:e(ke),onCreate:e(ze)},null,8,["open","onConfigure","onViewConfig","onCreate"]),f(bp,{open:e(xe),"onUpdate:open":ye[6]||(ye[6]=_e=>xe.value=_e),onConfigure:e(Ue),onCreate:e(Te)},null,8,["open","onConfigure","onCreate"]),f(Mp,{open:e(te),"skill-id":e(K),"onUpdate:open":ye[7]||(ye[7]=_e=>te.value=_e),onSaved:e(re),onCreated:e(ce)},null,8,["open","skill-id","onSaved","onCreated"])])}}}),Wb=gt(lg,[["__scopeId","data-v-d4cbf819"]]),da="__ALL__",ig=le({__name:"UserSelect",props:{sessionId:{},modelValue:{}},emits:["update:modelValue"],setup(u,{emit:n}){const{t}=Ce(),s=u,o=n,i=A([]),l=A(!1),r=q({get:()=>s.modelValue===null?da:String(s.modelValue),set:h=>{o("update:modelValue",h===da?null:parseInt(h))}}),m=q(()=>{const h=[{value:da,label:t("common.userSelect.allMembers")}];return i.value.forEach(S=>{const x=S.groupNickname||S.accountName||S.platformId;h.push({value:String(S.id),label:`${x} (${S.messageCount})`})}),h});async function y(){if(s.sessionId){l.value=!0;try{const h=await Pe().getMembers(s.sessionId);i.value=h.sort((S,x)=>x.messageCount-S.messageCount)}catch(h){console.error("加载成员列表失败:",h)}finally{l.value=!1}}}return me(()=>s.sessionId,()=>{o("update:modelValue",null),y()},{immediate:!0}),(h,S)=>{const x=Ta;return d(),B(x,{modelValue:r.value,"onUpdate:modelValue":S[0]||(S[0]=I=>r.value=I),items:m.value,loading:l.value,virtualize:{estimateSize:32,overscan:10},"value-key":"value",class:"w-48"},null,8,["modelValue","items","loading"])}}}),rg={class:"relative z-10 px-6 pt-8 pb-4 sm:px-8"},ug={class:"flex items-center gap-6 sm:gap-10"},dg={class:"min-w-0 flex-1"},cg={class:"flex flex-col text-[15px] leading-relaxed text-gray-600 dark:text-gray-300"},mg={key:0,class:"mb-2 text-sm font-medium tracking-wide text-gray-500 dark:text-gray-400"},pg={class:"mb-4 flex min-w-0 flex-wrap items-baseline gap-2"},gg={class:"text-xl font-medium text-gray-700 dark:text-gray-300"},fg={class:"font-black text-5xl tracking-tight text-gray-900 dark:text-white"},vg={class:"text-xl font-medium text-gray-700 dark:text-gray-300"},hg={key:1,class:"flex min-w-0 max-w-full flex-wrap items-center gap-x-1.5 gap-y-1.5"},yg={class:"text-base font-medium text-gray-600 dark:text-gray-300"},xg={class:"font-bold tabular-nums text-pink-500 dark:text-pink-400"},bg={class:"flex shrink-0 flex-col items-center"},_g={class:"mb-1 text-[10px] font-bold text-gray-500 dark:text-gray-400"},kg={class:"relative z-10 px-6 pb-6 pt-4 sm:px-8"},wg={class:"grid grid-cols-2 gap-3 lg:grid-cols-4"},Cg={class:"min-w-0 flex-1"},$g={class:"flex items-center justify-between gap-1"},Sg={class:"mt-0.5 truncate text-[10px] font-medium text-gray-500 dark:text-gray-400"},Ig={class:"mt-0.5 truncate text-[9px] text-gray-400 dark:text-gray-500"},Tg={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"},Mg={class:"flex items-center gap-1.5"},Ag={class:"text-[9px] font-medium uppercase tracking-widest"},qg=le({__name:"TypeProfileCard",props:{sessionId:{},messageTypes:{},textStats:{},timeFilter:{}},setup(u){ea([pn,$a,ta]);const{t:n}=Ce(),t=Gt(),s=u,o=q(()=>s.messageTypes.reduce((M,L)=>M+L.count,0)),i=q(()=>s.messageTypes.find(M=>M.type===ut.TEXT)?.count??0),l=q(()=>{if(o.value===0)return 0;const M=o.value-i.value;return Math.round(M/o.value*100)}),r=q(()=>s.textStats.textCount===0?0:Math.round(s.textStats.shortCount/s.textStats.textCount*100)),m=A({first:"",last:""});async function y(){if(s.sessionId)try{const M=await Pe().getDailyActivity(s.sessionId,s.timeFilter);if(M.length>0){const L=[...M].sort((N,U)=>N.date.localeCompare(U.date));m.value={first:Ve(L[0].date).format("YYYY/MM/DD"),last:Ve(L[L.length-1].date).format("YYYY/MM/DD")}}}catch{}}function h(M){return s.messageTypes.find(L=>L.type===M)?.count??0}const S=q(()=>[{label:n("views.message.typeCard.nonTextImage"),count:h(ut.IMAGE),unit:n("views.message.typeCard.unitImage")},{label:n("views.message.typeCard.nonTextEmoji"),count:h(ut.EMOJI),unit:n("views.message.typeCard.unitEmoji")},{label:n("views.message.typeCard.nonTextVoice"),count:h(ut.VOICE),unit:n("views.message.typeCard.unitVoice")},{label:n("views.message.typeCard.nonTextVideo"),count:h(ut.VIDEO),unit:n("views.message.typeCard.unitVideo")},{label:n("views.message.typeCard.nonTextFile"),count:h(ut.FILE),unit:n("views.message.typeCard.unitFile")},{label:n("views.message.typeCard.nonTextLink"),count:h(ut.LINK),unit:n("views.message.typeCard.unitLink")}].filter(M=>M.count>0)),x=A(30),I=A(0),w=A(!1),v=[{label:"20",value:20},{label:"30",value:30},{label:"50",value:50},{label:"80",value:80},{label:"100",value:100}],_=q({get:()=>x.value,set:M=>{x.value!==M&&(x.value=M,k())}});async function k(){if(s.sessionId){w.value=!0;try{I.value=await Pe().getLongMessageCount(s.sessionId,s.timeFilter,x.value)}catch(M){console.error("[chart-message] Failed to load essay count:",M)}finally{w.value=!1}}}me(()=>[s.sessionId,s.timeFilter],()=>{k(),y()},{immediate:!0,deep:!0});const C=q(()=>[{icon:"i-heroicons-pencil-square",label:n("views.message.profile.textExpression"),value:n("views.message.profile.avgLengthUnit",{count:s.textStats.avgLength||0}),subtext:s.textStats.maxLength>0?n("views.message.profile.textExpressionDesc",{count:s.textStats.maxLength}):"",colorClass:"text-violet-600 dark:text-violet-400"},{icon:"i-heroicons-chat-bubble-bottom-center-text",label:n("views.message.profile.shortMaster"),value:`${r.value}%`,subtext:n("views.message.profile.shortMasterDesc",{count:s.textStats.shortCount}),colorClass:"text-emerald-600 dark:text-emerald-400"},{icon:"i-heroicons-document-text",label:n("views.message.profile.essayLover"),value:I.value.toLocaleString(),subtext:n("views.message.profile.essayLoverDesc",{threshold:x.value}),colorClass:"text-indigo-600 dark:text-indigo-400",slot:"essay-threshold"},{icon:"i-heroicons-photo",label:n("views.message.profile.mediaRichness"),value:`${l.value}%`,subtext:S.value.slice(0,3).map(M=>`${M.label} ${M.count}`).join(" · ")||"-",colorClass:"text-pink-600 dark:text-pink-400"}]),$=A(null);let g=null;const b=["#6366f1","#ec4899","#f97316","#22c55e","#06b6d4","#8b5cf6","#f43f5e","#eab308","#14b8a6","#3b82f6"],F=q(()=>[...s.messageTypes].sort((L,N)=>N.count-L.count).slice(0,8).map((L,N)=>({name:ga(L.type,n),value:L.count,itemStyle:{color:b[N%b.length]}})));function E(){$.value&&(g=aa($.value,void 0,{renderer:"canvas"}),z())}function z(){g&&g.setOption({backgroundColor:"transparent",tooltip:{trigger:"item",formatter:"{b}: {c} ({d}%)"},series:[{type:"pie",radius:["50%","78%"],center:["50%","50%"],avoidLabelOverlap:!1,padAngle:2,itemStyle:{borderRadius:4},label:{show:!1},emphasis:{label:{show:!1},scaleSize:4},data:F.value}]},{notMerge:!0})}function T(){g?.resize()}return me(()=>s.messageTypes,()=>z()),me(t,()=>{g?.dispose(),E()}),De(()=>{E(),window.addEventListener("resize",T)}),Je(()=>{window.removeEventListener("resize",T),g?.dispose()}),(M,L)=>{const N=Se,U=wa;return d(),B(e(sa),null,{default:D(()=>[a("div",rg,[a("div",ug,[a("div",dg,[a("div",cg,[m.value.first?(d(),p("p",mg,c(m.value.first)+" – "+c(m.value.last),1)):V("",!0),a("div",pg,[a("span",gg,c(e(n)("views.message.profile.heroLine1Prefix")),1),a("span",fg,c(o.value.toLocaleString()),1),a("span",vg,c(e(n)("views.message.profile.heroLine1Suffix")),1)]),S.value.length>0?(d(),p("div",hg,[a("span",yg,c(e(n)("views.message.typeCard.nonTextPrefix")),1),(d(!0),p(ne,null,he(S.value,H=>(d(),p("span",{key:H.label,class:"inline-flex items-center gap-1 rounded-full bg-gray-100 px-2.5 py-0.5 text-xs font-semibold text-gray-700 dark:bg-white/10 dark:text-gray-200"},[a("span",xg,c(H.count.toLocaleString()),1),a("span",null,c(H.unit),1)]))),128))])):V("",!0)])]),a("div",bg,[a("div",_g,c(e(n)("views.message.profile.typeDistribution")),1),a("div",{ref_key:"donutRef",ref:$,style:{width:"130px",height:"130px"}},null,512)])])]),a("div",kg,[L[1]||(L[1]=a("div",{class:"mb-3 flex items-center justify-between"},[a("span",{class:"text-[10px] font-bold uppercase tracking-widest text-gray-400 dark:text-gray-500"}," Type Profile ")],-1)),a("div",wg,[(d(!0),p(ne,null,he(C.value,H=>(d(),p("div",{key:H.icon+H.label,class:"flex min-w-0 items-start gap-2 px-2.5 py-2"},[f(N,{name:H.icon,class:Z(["mt-0.5 h-3.5 w-3.5 shrink-0",H.colorClass])},null,8,["name","class"]),a("div",Cg,[a("div",$g,[a("div",{class:Z(["truncate font-mono text-sm font-black leading-tight tabular-nums",H.colorClass])},c(H.value),3),H.slot==="essay-threshold"?(d(),B(U,{key:0,modelValue:_.value,"onUpdate:modelValue":L[0]||(L[0]=ie=>_.value=ie),items:v,"value-key":"value",size:"xs",class:"relative z-120 w-16 shrink-0",ui:{content:"z-[121]"},disabled:w.value},null,8,["modelValue","disabled"])):V("",!0)]),a("div",Sg,c(H.label),1),a("div",Ig,c(H.subtext),1)])]))),128))])]),a("div",Tg,[a("div",Mg,[f(N,{name:"i-heroicons-chat-bubble-left-right-solid",class:"h-3.5 w-3.5"}),L[2]||(L[2]=a("span",{class:"text-[10px] font-bold uppercase tracking-wider"},"ChatLab",-1))]),a("span",Ag,c(e(n)("views.message.typeCard.watermark")),1)])]),_:1})}}}),zg={key:1,class:"main-content mx-auto max-w-[920px] space-y-6 p-4 sm:p-6"},Dg={class:"p-5"},Lg={key:0,class:"grid grid-cols-1 gap-6 lg:grid-cols-2 lg:items-center"},Eg={class:"space-y-3"},Vg={class:"min-w-20 shrink-0 text-sm text-gray-700 dark:text-gray-300"},Fg={class:"flex-1"},Rg={class:"h-2 overflow-hidden rounded-full bg-gray-100 dark:bg-gray-800"},Og={class:"shrink-0 text-right"},Bg={class:"text-sm font-medium text-gray-900 dark:text-white"},Pg={class:"ml-1 text-xs text-gray-400"},Ng={key:1,class:"flex h-48 items-center justify-center text-gray-400"},jg={class:"p-5"},Ug={class:"mb-5 grid grid-cols-2 gap-3 sm:grid-cols-4"},Wg={class:"p-3"},Kg={class:"font-mono text-xl font-bold text-gray-900 dark:text-white"},Hg={class:"mt-1 text-xs text-gray-500"},Yg={class:"p-3"},Qg={class:"font-mono text-xl font-bold text-indigo-600 dark:text-indigo-400"},Gg={class:"mt-1 text-xs text-gray-500"},Jg={class:"p-3"},Xg={class:"font-mono text-xl font-bold text-pink-600 dark:text-pink-400"},Zg={class:"mt-1 text-xs text-gray-500"},ef={class:"p-3"},tf={class:"font-mono text-xl font-bold text-emerald-600 dark:text-emerald-400"},af={class:"mt-1 text-xs text-gray-500"},sf={class:"mb-5 rounded-lg border border-gray-200 p-4 dark:border-gray-700"},of={class:"mb-2 text-xs font-medium text-gray-500 dark:text-gray-400"},nf={class:"flex items-center gap-4 text-sm"},lf={class:"flex items-center gap-1.5"},rf={class:"font-mono font-medium text-gray-900 dark:text-white"},uf={class:"flex items-center gap-1.5"},df={class:"font-mono font-medium text-gray-900 dark:text-white"},cf={class:"flex items-center gap-1.5"},mf={class:"font-mono font-medium text-gray-900 dark:text-white"},pf={class:"flex items-center gap-1.5"},gf={class:"font-mono font-medium text-gray-900 dark:text-white"},ff={class:"mt-3 grid grid-cols-3 gap-3 text-xs"},vf={class:"text-gray-500"},hf={class:"ml-1 font-medium text-emerald-600 dark:text-emerald-400"},yf={class:"text-gray-400"},xf={class:"text-gray-500"},bf={class:"ml-1 font-medium text-indigo-600 dark:text-indigo-400"},_f={class:"grid grid-cols-1 gap-6 lg:grid-cols-2"},kf={class:"text-xs text-gray-400"},wf={class:"p-5"},Cf={key:1,class:"flex h-48 items-center justify-center text-gray-400"},$f={class:"text-xs text-gray-400"},Sf={class:"p-5"},If={key:1,class:"flex h-48 items-center justify-center text-gray-400"},Kb=le({__name:"TypeAnalysisView",props:{sessionId:{},sessionName:{},timeFilter:{}},setup(u){const n=u,{t}=Ce(),s=A(!0),o=A([]),i=A([]),l=A([]),r=A({textCount:0,avgLength:0,maxLength:0,shortCount:0}),m=A({p25:0,p50:0,p75:0,p90:0}),y=A(0),h=q(()=>{const C=[...o.value].sort(($,g)=>g.count-$.count);return{labels:C.map($=>ga($.type,t)),values:C.map($=>$.count)}}),S=q(()=>{const C=o.value.reduce((g,b)=>g+b.count,0);return[...o.value].sort((g,b)=>b.count-g.count).map(g=>({name:ga(g.type,t),count:g.count,percentage:C>0?Math.round(g.count/C*100):0}))}),x=["#6366f1","#8b5cf6","#ec4899","#f43f5e","#f97316","#eab308","#22c55e","#14b8a6","#06b6d4","#3b82f6"];function I(C){return x[C%x.length]}const w=q(()=>({labels:i.value.map(C=>String(C.len)),values:i.value.map(C=>C.count)})),v=q(()=>({labels:l.value.map(C=>C.range),values:l.value.map(C=>C.count)})),_=q(()=>r.value.textCount===0?0:Math.round(r.value.shortCount/r.value.textCount*100));async function k(){if(n.sessionId){s.value=!0;try{const C=Pe(),[$,g,b,F,E]=await Promise.all([C.getMessageTypeDistribution(n.sessionId,n.timeFilter),C.getMessageLengthDistribution(n.sessionId,n.timeFilter),C.getTextStats(n.sessionId,n.timeFilter),C.getTextLengthPercentiles(n.sessionId,n.timeFilter),C.getLongMessageCount(n.sessionId,n.timeFilter,30)]);o.value=$,i.value=g.detail,l.value=g.grouped,r.value=b,m.value=F,y.value=E}catch(C){console.error("[chart-message] Failed to load type analysis data:",C)}finally{s.value=!1}}}return me(()=>[n.sessionId,n.timeFilter],()=>k(),{immediate:!0,deep:!0}),(C,$)=>(d(),p("div",{class:Z(s.value?"h-full":"")},[s.value?(d(),B(e(Mt),{key:0,variant:"page",text:e(t)("common.loading")},null,8,["text"])):(d(),p("div",zg,[o.value.length>0?(d(),B(qg,{key:0,"session-id":u.sessionId,"message-types":o.value,"text-stats":r.value,"time-filter":u.timeFilter},null,8,["session-id","message-types","text-stats","time-filter"])):V("",!0),f(e(Qe),{title:e(t)("views.message.typeDistribution"),"show-divider":!1},{default:D(()=>[a("div",Dg,[h.value.values.length>0?(d(),p("div",Lg,[a("div",null,[f(e(cn),{data:h.value,height:280,"show-legend":!1},null,8,["data"])]),a("div",null,[a("div",Eg,[(d(!0),p(ne,null,he(S.value,(g,b)=>(d(),p("div",{key:b,class:"flex items-center gap-3"},[a("div",{class:"h-3 w-3 shrink-0 rounded-full",style:et({backgroundColor:I(b)})},null,4),a("div",Vg,c(g.name),1),a("div",Fg,[a("div",Rg,[a("div",{class:"h-full rounded-full transition-all",style:et({width:`${g.percentage}%`,backgroundColor:I(b)})},null,4)])]),a("div",Og,[a("span",Bg,c(g.count.toLocaleString()),1),a("span",Pg,"("+c(g.percentage)+"%)",1)])]))),128))])])])):(d(),p("div",Ng,c(e(t)("views.message.noData")),1))])]),_:1},8,["title"]),f(e(Qe),{title:e(t)("views.message.typeAnalysis.textDepthTitle"),"show-divider":!1},{default:D(()=>[a("div",jg,[a("div",Ug,[a("div",Wg,[a("div",Kg,c(r.value.textCount.toLocaleString()),1),a("div",Hg,c(e(t)("views.message.typeAnalysis.textTotal")),1)]),a("div",Yg,[a("div",Qg,c(r.value.avgLength||0),1),a("div",Gg,c(e(t)("views.message.typeAnalysis.avgLength")),1)]),a("div",Jg,[a("div",Xg,c(m.value.p50),1),a("div",Zg,c(e(t)("views.message.typeAnalysis.medianLength")),1)]),a("div",ef,[a("div",tf,c(r.value.maxLength),1),a("div",af,c(e(t)("views.message.typeAnalysis.maxLength")),1)])]),a("div",sf,[a("div",of,c(e(t)("views.message.typeAnalysis.percentiles")),1),a("div",nf,[a("div",lf,[$[0]||($[0]=a("span",{class:"text-gray-500"},"P25",-1)),a("span",rf,c(m.value.p25),1)]),a("div",uf,[$[1]||($[1]=a("span",{class:"text-gray-500"},"P50",-1)),a("span",df,c(m.value.p50),1)]),a("div",cf,[$[2]||($[2]=a("span",{class:"text-gray-500"},"P75",-1)),a("span",mf,c(m.value.p75),1)]),a("div",pf,[$[3]||($[3]=a("span",{class:"text-gray-500"},"P90",-1)),a("span",gf,c(m.value.p90),1)])]),a("div",ff,[a("div",null,[a("span",vf,c(e(t)("views.message.typeAnalysis.shortMessages")),1),a("span",hf,c(_.value)+"%",1),a("span",yf,"("+c(r.value.shortCount)+")",1)]),a("div",null,[a("span",xf,c(e(t)("views.message.typeAnalysis.essayMessages")),1),a("span",bf,c(y.value),1)])])])])]),_:1},8,["title"]),a("div",_f,[f(e(Qe),{title:e(t)("views.message.lengthDetailTitle"),"show-divider":!1},{headerRight:D(()=>[a("span",kf,c(e(t)("views.message.lengthDetailHint")),1)]),default:D(()=>[a("div",wf,[w.value.values.some(g=>g>0)?(d(),B(e(vt),{key:0,data:w.value,height:200},null,8,["data"])):(d(),p("div",Cf,c(e(t)("views.message.noTextMessages")),1))])]),_:1},8,["title"]),f(e(Qe),{title:e(t)("views.message.lengthGroupedTitle"),"show-divider":!1},{headerRight:D(()=>[a("span",$f,c(e(t)("views.message.lengthGroupedHint")),1)]),default:D(()=>[a("div",Sf,[v.value.values.some(g=>g>0)?(d(),B(e(vt),{key:0,data:v.value,height:200},null,8,["data"])):(d(),p("div",If,c(e(t)("views.message.noTextMessages")),1))])]),_:1},8,["title"])])]))],2))}}),Tf={class:"relative z-10 px-6 pt-8 pb-4 sm:px-8"},Mf={class:"flex items-start gap-6 sm:gap-10"},Af={class:"min-w-0 flex-1"},qf={class:"flex flex-col text-[15px] leading-relaxed text-gray-600 dark:text-gray-300"},zf={key:0,class:"mb-2 text-sm font-medium tracking-wide text-gray-500 dark:text-gray-400"},Df={class:"mb-3 flex items-baseline gap-2"},Lf={class:"font-black text-5xl tracking-tight text-gray-900 dark:text-white"},Ef={class:"text-xl font-medium text-gray-700 dark:text-gray-300"},Vf={class:"font-bold text-3xl text-indigo-500 dark:text-indigo-400"},Ff={class:"text-xl font-medium text-gray-700 dark:text-gray-300"},Rf={class:"flex items-baseline flex-wrap gap-x-1.5 gap-y-1"},Of={class:"text-base font-medium text-gray-600 dark:text-gray-300"},Bf={class:"font-bold text-xl text-pink-500 dark:text-pink-400"},Pf={class:"text-base font-medium text-gray-600 dark:text-gray-300"},Nf={class:"text-base font-medium text-amber-600 dark:text-amber-400"},jf={class:"flex shrink-0 flex-col items-center"},Uf={class:"mb-1 text-[10px] font-bold text-gray-500 dark:text-gray-400"},Wf={class:"relative z-10 px-6 pb-6 pt-4 sm:px-8"},Kf={class:"grid grid-cols-2 gap-3 lg:grid-cols-4"},Hf={class:"min-w-0 flex-1"},Yf={class:"mt-0.5 truncate text-[10px] font-medium text-gray-500 dark:text-gray-400"},Qf={class:"mt-0.5 truncate text-[9px] text-gray-400 dark:text-gray-500"},Gf={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"},Jf={class:"flex items-center gap-1.5"},Xf={class:"text-[9px] font-medium uppercase tracking-widest"},Zf=le({__name:"TimeProfileCard",props:{hourlyActivity:{},weekdayActivity:{},dailyActivity:{}},setup(u){ea([gn,fn,ta]);const{t:n}=Ce(),t=Gt(),s=u,o=q(()=>s.dailyActivity.filter(g=>g.messageCount>0).length),i=q(()=>s.dailyActivity.reduce((g,b)=>g+b.messageCount,0)),l=q(()=>{if(s.dailyActivity.length===0)return{first:"",last:"",days:0};const g=[...s.dailyActivity].sort((E,z)=>E.date.localeCompare(z.date)),b=Ve(g[0].date),F=Ve(g[g.length-1].date);return{first:b.format("YYYY/MM/DD"),last:F.format("YYYY/MM/DD"),days:F.diff(b,"day")+1}}),r=q(()=>o.value===0?0:Math.round(i.value/o.value)),m=q(()=>s.dailyActivity.length===0?null:s.dailyActivity.reduce((g,b)=>b.messageCount>g.messageCount?b:g,s.dailyActivity[0])),y=q(()=>s.hourlyActivity.length===0?[]:[...s.hourlyActivity].sort((g,b)=>b.messageCount-g.messageCount).slice(0,3)),h=q(()=>{if(s.hourlyActivity.length===0&&s.weekdayActivity.length===0)return null;const g=l.value.days>0?o.value/l.value.days:0,b=s.weekdayActivity.filter(P=>P.weekday===6||P.weekday===7),F=s.weekdayActivity.filter(P=>P.weekday>=1&&P.weekday<=5),E=b.reduce((P,R)=>P+R.messageCount,0),z=F.reduce((P,R)=>P+R.messageCount,0),T=E+z,M=T>0?E/T:0,L=s.hourlyActivity.reduce((P,R)=>P+R.messageCount,0),N=s.hourlyActivity.filter(P=>P.hour>=22||P.hour<5).reduce((P,R)=>P+R.messageCount,0),U=s.hourlyActivity.filter(P=>P.hour>=18&&P.hour<22).reduce((P,R)=>P+R.messageCount,0),H=L>0?N/L:0,ie=L>0?U/L:0;if(g>=.9)return{label:n("views.message.timeCard.personalityEveryday"),icon:"i-heroicons-fire"};if(M>=.55)return{label:n("views.message.timeCard.personalityWeekend"),icon:"i-heroicons-calendar"};if(M<=.2&&T>0)return{label:n("views.message.timeCard.personalityWeekday"),icon:"i-heroicons-briefcase"};if(H>=.3)return{label:n("views.message.timeCard.personalityNightOwl"),icon:"i-heroicons-moon"};if(ie>=.4)return{label:n("views.message.timeCard.personalityEveningChat"),icon:"i-heroicons-sparkles"};const se=[...s.hourlyActivity].sort((P,R)=>R.messageCount-P.messageCount)[0];return se?se.hour>=5&&se.hour<9?{label:n("views.message.timeCard.personalityEarlyBird"),icon:"i-heroicons-sun"}:se.hour>=12&&se.hour<14?{label:n("views.message.timeCard.personalityLunchChat"),icon:"i-heroicons-clock"}:{label:n("views.message.timeCard.personalityDaytime"),icon:"i-heroicons-sun"}:null}),S=q(()=>{const g=s.weekdayActivity.filter(T=>T.weekday===6||T.weekday===7),b=s.weekdayActivity.filter(T=>T.weekday>=1&&T.weekday<=5),F=g.reduce((T,M)=>T+M.messageCount,0),E=b.reduce((T,M)=>T+M.messageCount,0),z=F+E;return z===0?0:Math.round(F/z*100)}),x=q(()=>[n("common.weekday.mon"),n("common.weekday.tue"),n("common.weekday.wed"),n("common.weekday.thu"),n("common.weekday.fri"),n("common.weekday.sat"),n("common.weekday.sun")]),I=q(()=>{if(s.weekdayActivity.length===0)return null;const g=[...s.weekdayActivity].sort((b,F)=>F.messageCount-b.messageCount)[0];return{name:x.value[g.weekday-1],count:g.messageCount}}),w=q(()=>[{icon:"i-heroicons-fire",label:n("views.message.timeCard.peakRecord"),value:m.value?Ve(m.value.date).format("MM/DD"):"-",subtext:m.value?n("views.message.timeCard.peakRecordDesc",{count:m.value.messageCount}):"",colorClass:"text-red-600 dark:text-red-400"},{icon:"i-heroicons-clock",label:n("views.message.timeCard.topHoursLabel"),value:y.value.length>0?`${y.value[0].hour}:00`:"-",subtext:y.value.length>=2?y.value.map(g=>`${g.hour}:00`).join(" > "):"",colorClass:"text-cyan-600 dark:text-cyan-400"},{icon:"i-heroicons-calendar-days",label:n("views.message.timeCard.peakWeekdayLabel"),value:I.value?.name||"-",subtext:I.value?`${I.value.count.toLocaleString()}`:"",colorClass:"text-violet-600 dark:text-violet-400"},{icon:"i-heroicons-building-office",label:n("views.message.timeCard.weekendRatio"),value:`${S.value}%`,subtext:n("views.message.timeCard.weekendRatioDesc"),colorClass:"text-amber-600 dark:text-amber-400"}]),v=A(null);let _=null;function k(){v.value&&(_=aa(v.value,void 0,{renderer:"canvas"}),C())}function C(){if(!_)return;const g=new Map(s.hourlyActivity.map(z=>[z.hour,z.messageCount])),b=[];for(let z=0;z<24;z++)b.push(g.get(z)||0);const F=Math.max(...b,1),E=b.map(z=>{const T=z/F;return T>.8?t.value?"#f472b6":"#ec4899":T>.5?t.value?"#a78bfa":"#8b5cf6":t.value?"rgba(255,255,255,0.15)":"rgba(0,0,0,0.08)"});_.setOption({backgroundColor:"transparent",tooltip:{trigger:"axis",formatter:z=>`${z[0].axisValue}:00 — ${z[0].value}`},grid:{left:0,right:0,top:4,bottom:16},xAxis:{type:"category",data:Array.from({length:24},(z,T)=>`${T}`),axisLine:{show:!1},axisTick:{show:!1},axisLabel:{fontSize:9,color:t.value?"#6b7280":"#9ca3af",interval:z=>z%6===0}},yAxis:{type:"value",show:!1},series:[{type:"bar",data:b.map((z,T)=>({value:z,itemStyle:{color:E[T]}})),barWidth:"60%",itemStyle:{borderRadius:[2,2,0,0]}}]},{notMerge:!0})}function $(){_?.resize()}return me(()=>s.hourlyActivity,()=>C()),me(t,()=>{_?.dispose(),k()}),De(()=>{k(),window.addEventListener("resize",$)}),Je(()=>{window.removeEventListener("resize",$),_?.dispose()}),(g,b)=>{const F=Se;return d(),B(e(sa),null,{default:D(()=>[a("div",Tf,[a("div",Mf,[a("div",Af,[a("div",qf,[l.value.first?(d(),p("p",zf,c(l.value.first)+" – "+c(l.value.last),1)):V("",!0),a("div",Df,[a("span",Lf,c(l.value.days),1),a("span",Ef,c(e(n)("views.message.timeCard.heroDaysIn")),1),a("span",Vf,c(o.value),1),a("span",Ff,c(e(n)("views.message.timeCard.heroDaysActive")),1)]),a("div",Rf,[a("span",Of,c(e(n)("views.message.timeCard.heroAvgPrefix")),1),a("span",Bf,c(r.value),1),a("span",Pf,c(e(n)("views.message.timeCard.heroAvgSuffix")),1),h.value?(d(),p(ne,{key:0},[f(F,{name:h.value.icon,class:"ml-2 h-4 w-4 text-amber-500"},null,8,["name"]),a("span",Nf,c(h.value.label),1)],64)):V("",!0)])])]),a("div",jf,[a("div",Uf,c(e(n)("views.message.timeCard.hourlyDistribution")),1),a("div",{ref_key:"barRef",ref:v,style:{width:"180px",height:"110px"}},null,512)])])]),a("div",Wf,[b[0]||(b[0]=a("div",{class:"mb-3 flex items-center justify-between"},[a("span",{class:"text-[10px] font-bold uppercase tracking-widest text-gray-400 dark:text-gray-500"}," Time Profile ")],-1)),a("div",Kf,[(d(!0),p(ne,null,he(w.value,E=>(d(),p("div",{key:E.icon+E.label,class:"flex min-w-0 items-start gap-2 px-2.5 py-2"},[f(F,{name:E.icon,class:Z(["mt-0.5 h-3.5 w-3.5 shrink-0",E.colorClass])},null,8,["name","class"]),a("div",Hf,[a("div",{class:Z(["truncate font-mono text-sm font-black leading-tight tabular-nums",E.colorClass])},c(E.value),3),a("div",Yf,c(E.label),1),a("div",Qf,c(E.subtext),1)])]))),128))])]),a("div",Gf,[a("div",Jf,[f(F,{name:"i-heroicons-chat-bubble-left-right-solid",class:"h-3.5 w-3.5"}),b[1]||(b[1]=a("span",{class:"text-[10px] font-bold uppercase tracking-wider"},"ChatLab",-1))]),a("span",Xf,c(e(n)("views.message.timeCard.watermark")),1)])]),_:1})}}}),ev={key:1,class:"main-content mx-auto max-w-[920px] space-y-6 p-4 sm:p-6"},tv={class:"grid grid-cols-1 gap-6 lg:grid-cols-2"},av={class:"p-5"},sv={class:"p-5"},ov={class:"grid grid-cols-1 gap-6 lg:grid-cols-2"},nv={class:"p-5"},lv={class:"p-5"},iv={key:1,class:"flex h-48 items-center justify-center text-gray-400"},rv={class:"text-xs text-gray-400"},uv={class:"p-5"},dv={key:1,class:"flex h-48 items-center justify-center text-gray-400"},cv={class:"text-xs text-gray-400"},mv={class:"p-5"},pv={class:"flex items-center gap-2"},gv={class:"text-xs text-gray-400"},fv={class:"p-5"},vv={key:1,class:"flex h-32 items-center justify-center text-gray-400"},Hb=le({__name:"TimeAnalysisView",props:{sessionId:{},sessionName:{},timeFilter:{}},setup(u){const n=u,{t}=Ce(),s=A(!0),o=A([]),i=A([]),l=A([]),r=A([]),m=A([]),y=A([]),h=A([]),S=["#6366f1","#ec4899","#f97316","#22c55e","#06b6d4","#8b5cf6","#f43f5e","#eab308","#14b8a6","#3b82f6"],x=q(()=>[t("common.weekday.mon"),t("common.weekday.tue"),t("common.weekday.wed"),t("common.weekday.thu"),t("common.weekday.fri"),t("common.weekday.sat"),t("common.weekday.sun")]),I=q(()=>[t("common.month.jan"),t("common.month.feb"),t("common.month.mar"),t("common.month.apr"),t("common.month.may"),t("common.month.jun"),t("common.month.jul"),t("common.month.aug"),t("common.month.sep"),t("common.month.oct"),t("common.month.nov"),t("common.month.dec")]),w=q(()=>{const T=new Map(i.value.map(N=>[N.hour,N.messageCount])),M=[],L=[];for(let N=0;N<24;N++)M.push(`${N}`),L.push(T.get(N)||0);return{labels:M,values:L}}),v=q(()=>{const T=new Map(l.value.map(L=>[L.weekday,L.messageCount])),M=[];for(let L=1;L<=7;L++)M.push(T.get(L)||0);return{labels:x.value,values:M}}),_=q(()=>{const T=new Map(r.value.map(L=>[L.month,L.messageCount])),M=[];for(let L=1;L<=12;L++)M.push(T.get(L)||0);return{labels:I.value,values:M}}),k=q(()=>{const T=[...m.value].sort((M,L)=>M.year-L.year);return{labels:T.map(M=>String(M.year)),values:T.map(M=>M.messageCount)}}),C=q(()=>{const T=Array.from({length:24},(U,H)=>`${H}:00`),M=x.value,L=o.value.reduce((U,H)=>U+H.count,0)||1,N=[];for(let U=1;U<=7;U++)for(let H=0;H<24;H++){const ie=l.value.find(R=>R.weekday===U)?.messageCount||0,se=i.value.find(R=>R.hour===H)?.messageCount||0,P=Math.round(ie*se/L);N.push([H,U-1,P])}return{xLabels:T,yLabels:M,data:N}}),$=q(()=>y.value.map(T=>({date:T.date,value:T.messageCount}))),g=q(()=>{const T=new Set;return y.value.forEach(M=>{const L=parseInt(M.date.split("-")[0]);isNaN(L)||T.add(L)}),Array.from(T).sort((M,L)=>L-M)}),b=A(new Date().getFullYear()),F=q(()=>{const T=b.value;return $.value.filter(M=>M.date.startsWith(`${T}-`))}),E=q(()=>{if(h.value.length===0)return{};const T=[...new Set(h.value.map(H=>H.month))].sort(),M=new Map;if(h.value.forEach(H=>{const ie=M.get(H.memberId);ie?ie.total+=H.count:M.set(H.memberId,{name:H.memberName,total:H.count})}),M.size<=2){const H=new Map;return h.value.forEach(ie=>{H.set(ie.month,(H.get(ie.month)||0)+ie.count)}),{tooltip:{trigger:"axis",backgroundColor:"rgba(0, 0, 0, 0.8)",borderColor:"transparent",textStyle:{color:"#fff"}},grid:{left:50,right:20,top:10,bottom:30},xAxis:{type:"category",data:T,boundaryGap:!1,axisLine:{show:!1},axisTick:{show:!1}},yAxis:{type:"value",splitLine:{lineStyle:{type:"dashed",opacity:.3}}},series:[{type:"line",smooth:!0,symbol:"none",areaStyle:{opacity:.2},itemStyle:{color:"#6366f1"},data:T.map(ie=>H.get(ie)||0)}]}}const U=[...M.entries()].sort((H,ie)=>ie[1].total-H[1].total).slice(0,10).map(([H,ie],se)=>{const P=new Map(h.value.filter(R=>R.memberId===H).map(R=>[R.month,R.count]));return{name:ie.name,type:"line",stack:"total",areaStyle:{opacity:.3},smooth:!0,symbol:"none",itemStyle:{color:S[se%S.length]},data:T.map(R=>P.get(R)||0)}});return{tooltip:{trigger:"axis",backgroundColor:"rgba(0, 0, 0, 0.8)",borderColor:"transparent",textStyle:{color:"#fff"}},legend:{bottom:0,textStyle:{fontSize:11}},grid:{left:50,right:20,top:10,bottom:40},xAxis:{type:"category",data:T,boundaryGap:!1,axisLine:{show:!1},axisTick:{show:!1}},yAxis:{type:"value",splitLine:{lineStyle:{type:"dashed",opacity:.3}}},series:U}});async function z(){if(n.sessionId){s.value=!0;try{const T=Pe(),[M,L,N,U,H,ie,se]=await Promise.all([T.getMessageTypeDistribution(n.sessionId,n.timeFilter),T.getHourlyActivity(n.sessionId,n.timeFilter),T.getWeekdayActivity(n.sessionId,n.timeFilter),T.getMonthlyActivity(n.sessionId,n.timeFilter),T.getYearlyActivity(n.sessionId,n.timeFilter),T.getDailyActivity(n.sessionId,n.timeFilter),T.getMemberMonthlyTrend(n.sessionId,n.timeFilter)]);o.value=M,i.value=L,l.value=N,r.value=U,m.value=H,y.value=ie,h.value=se,g.value.length>0&&(b.value=g.value[0])}catch(T){console.error("[chart-message] Failed to load time analysis data:",T)}finally{s.value=!1}}}return me(()=>[n.sessionId,n.timeFilter],()=>z(),{immediate:!0,deep:!0}),(T,M)=>{const L=wa;return d(),p("div",{class:Z(s.value?"h-full":"")},[s.value?(d(),B(e(Mt),{key:0,variant:"page",text:e(t)("common.loading")},null,8,["text"])):(d(),p("div",ev,[y.value.length>0?(d(),B(Zf,{key:0,"hourly-activity":i.value,"weekday-activity":l.value,"daily-activity":y.value},null,8,["hourly-activity","weekday-activity","daily-activity"])):V("",!0),a("div",tv,[f(e(Qe),{title:e(t)("views.message.hourlyDistribution"),"show-divider":!1},{default:D(()=>[a("div",av,[f(e(vt),{data:w.value,height:200},null,8,["data"])])]),_:1},8,["title"]),f(e(Qe),{title:e(t)("views.message.weekdayDistribution"),"show-divider":!1},{default:D(()=>[a("div",sv,[f(e(vt),{data:v.value,height:200},null,8,["data"])])]),_:1},8,["title"])]),a("div",ov,[f(e(Qe),{title:e(t)("views.message.monthlyDistribution"),"show-divider":!1},{default:D(()=>[a("div",nv,[f(e(vt),{data:_.value,height:200},null,8,["data"])])]),_:1},8,["title"]),f(e(Qe),{title:e(t)("views.message.yearlyDistribution"),"show-divider":!1},{default:D(()=>[a("div",lv,[k.value.values.length>0?(d(),B(e(vt),{key:0,data:k.value,height:200},null,8,["data"])):(d(),p("div",iv,c(e(t)("views.message.noData")),1))])]),_:1},8,["title"])]),f(e(Qe),{title:e(t)("views.message.timeAnalysis.memberTrendTitle"),"show-divider":!1},{headerRight:D(()=>[a("span",rv,c(e(t)("views.message.timeAnalysis.memberTrendHint")),1)]),default:D(()=>[a("div",uv,[h.value.length>0?(d(),B(e(hn),{key:0,option:E.value,height:280},null,8,["option"])):(d(),p("div",dv,c(e(t)("views.message.noData")),1))])]),_:1},8,["title"]),f(e(Qe),{title:e(t)("views.message.timeHeatmap"),"show-divider":!1},{headerRight:D(()=>[a("span",cv,c(e(t)("views.message.heatmapHint")),1)]),default:D(()=>[a("div",mv,[f(e(mn),{data:C.value,height:320},null,8,["data"])])]),_:1},8,["title"]),f(e(Qe),{title:e(t)("views.message.calendarHeatmap"),"show-divider":!1},{headerRight:D(()=>[a("div",pv,[a("span",gv,c(e(t)("views.message.calendarHint")),1),g.value.length>1?(d(),B(L,{key:0,modelValue:b.value,"onUpdate:modelValue":M[0]||(M[0]=N=>b.value=N),items:g.value.map(N=>({value:N,label:String(N)})),size:"xs",class:"w-20"},null,8,["modelValue","items"])):V("",!0)])]),default:D(()=>[a("div",fv,[F.value.length>0?(d(),B(e(Ai),{key:0,data:F.value,year:b.value,height:180},null,8,["data","year"])):(d(),p("div",vv,c(e(t)("views.message.noData")),1))])]),_:1},8,["title"])]))],2)}}}),hv={class:"relative z-10 px-6 pt-8 pb-4 sm:px-8"},yv={class:"flex items-center gap-6 sm:gap-10"},xv={class:"min-w-0 flex-1"},bv={class:"flex flex-col gap-2 text-[15px] leading-relaxed text-gray-600 dark:text-gray-300"},_v={key:0,class:"mb-0 text-sm font-medium tracking-wide text-gray-500 dark:text-gray-400"},kv={class:"flex items-baseline gap-x-1.5"},wv={class:"text-xl font-medium text-gray-700 dark:text-gray-300"},Cv={class:"font-black text-5xl tracking-tight text-gray-900 dark:text-white"},$v={class:"text-xl font-medium text-gray-700 dark:text-gray-300"},Sv={class:"flex items-baseline gap-x-1.5"},Iv={class:"text-xl font-medium text-gray-700 dark:text-gray-300"},Tv={class:"font-black text-3xl text-pink-500 dark:text-pink-400"},Mv={class:"text-xl font-medium text-gray-700 dark:text-gray-300"},Av={key:1,class:"mt-1 flex items-baseline flex-wrap gap-x-1.5 gap-y-1"},qv={class:"text-base font-medium text-gray-600 dark:text-gray-300"},zv=["onClick"],Dv={key:0,class:"text-gray-400"},Lv={key:0,class:"hidden shrink-0 overflow-hidden rounded-lg sm:block"},Ev={class:"relative",style:{width:"360px",height:"220px"}},Vv={class:"relative z-10 px-6 pb-6 pt-4 sm:px-8"},Fv={class:"grid grid-cols-2 gap-3 lg:grid-cols-4"},Rv={class:"min-w-0 flex-1"},Ov={class:"mt-0.5 truncate text-[10px] font-medium text-gray-500 dark:text-gray-400"},Bv={class:"mt-0.5 truncate text-[9px] text-gray-400 dark:text-gray-500"},Pv={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"},Nv={class:"flex items-center gap-1.5"},jv={class:"text-[9px] font-medium uppercase tracking-widest"},Uv=le({__name:"TopicProfileCard",props:{totalMessages:{},totalWords:{},uniqueWords:{},topWords:{},topicWords:{},posTagStats:{},timeFilter:{}},emits:["wordClick"],setup(u,{emit:n}){const t=us(()=>xa(()=>import("./EChartWordcloud-ChKJM8bU.js"),__vite__mapDeps([4,5,6,7,1,2,3]))),{t:s}=Ce(),o=u,i=n,l=q(()=>{const{startTs:w,endTs:v}=o.timeFilter??{};return w&&v?`${Ve(w*1e3).format("YYYY/MM/DD")} – ${Ve(v*1e3).format("YYYY/MM/DD")}`:""}),r=q(()=>(o.topicWords?.length?o.topicWords:o.topWords).slice(0,5)),m=q(()=>({words:(o.topicWords?.length?o.topicWords:o.topWords).slice(0,50).map(v=>({word:v.word,count:v.count,percentage:v.percentage}))})),y=q(()=>o.totalWords===0?0:Math.round(o.uniqueWords/o.totalWords*100)),h=q(()=>{if(!o.posTagStats?.length)return{key:"Balanced",label:s("quotes.topicProfile.styleBalanced"),desc:s("quotes.topicProfile.styleBalancedDesc"),icon:"i-heroicons-scale-solid",colorClass:"text-cyan-600 dark:text-cyan-400"};const w=new Map(o.posTagStats.map(F=>[F.tag,F.count])),v=(w.get("n")||0)+(w.get("ns")||0)+(w.get("nt")||0)+(w.get("nz")||0),_=(w.get("v")||0)+(w.get("vn")||0)+(w.get("vd")||0),k=(w.get("a")||0)+(w.get("ad")||0)+(w.get("an")||0),C=v+_+k;if(C===0)return{key:"Balanced",label:s("quotes.topicProfile.styleBalanced"),desc:s("quotes.topicProfile.styleBalancedDesc"),icon:"i-heroicons-scale-solid",colorClass:"text-cyan-600 dark:text-cyan-400"};const $=v/C,g=_/C,b=k/C;return $>.5?{key:"Encyclopedia",label:s("quotes.topicProfile.styleEncyclopedia"),desc:s("quotes.topicProfile.styleEncyclopediaDesc"),icon:"i-heroicons-book-open-solid",colorClass:"text-indigo-600 dark:text-indigo-400"}:g>.45?{key:"Action",label:s("quotes.topicProfile.styleAction"),desc:s("quotes.topicProfile.styleActionDesc"),icon:"i-heroicons-rocket-launch-solid",colorClass:"text-orange-600 dark:text-orange-400"}:b>.3?{key:"Expressive",label:s("quotes.topicProfile.styleExpressive"),desc:s("quotes.topicProfile.styleExpressiveDesc"),icon:"i-heroicons-paint-brush-solid",colorClass:"text-pink-600 dark:text-pink-400"}:{key:"Balanced",label:s("quotes.topicProfile.styleBalanced"),desc:s("quotes.topicProfile.styleBalancedDesc"),icon:"i-heroicons-scale-solid",colorClass:"text-cyan-600 dark:text-cyan-400"}}),S=q(()=>{if(o.topWords.length===0)return{label:s("quotes.topicProfile.expressionMixed"),desc:s("quotes.topicProfile.expressionMixedDesc"),icon:"i-heroicons-chat-bubble-left-right-solid",colorClass:"text-emerald-600 dark:text-emerald-400"};const w=o.topWords.reduce((k,C)=>k+C.word.length*C.count,0),v=o.topWords.reduce((k,C)=>k+C.count,0),_=w/v;return _<2.5?{label:s("quotes.topicProfile.expressionCasual"),desc:s("quotes.topicProfile.expressionCasualDesc"),icon:"i-heroicons-face-smile-solid",colorClass:"text-amber-600 dark:text-amber-400"}:_>3.5?{label:s("quotes.topicProfile.expressionFormal"),desc:s("quotes.topicProfile.expressionFormalDesc"),icon:"i-heroicons-academic-cap-solid",colorClass:"text-violet-600 dark:text-violet-400"}:{label:s("quotes.topicProfile.expressionMixed"),desc:s("quotes.topicProfile.expressionMixedDesc"),icon:"i-heroicons-chat-bubble-left-right-solid",colorClass:"text-emerald-600 dark:text-emerald-400"}}),x=q(()=>[{icon:"i-heroicons-fire-solid",label:s("quotes.topicProfile.hotTopic"),value:r.value[0]?.word??"-",subtext:r.value[0]?s("quotes.topicProfile.hotTopicDesc",{count:r.value[0].count}):"",colorClass:"text-red-600 dark:text-red-400"},{icon:"i-heroicons-sparkles-solid",label:s("quotes.topicProfile.richness"),value:s("quotes.topicProfile.richnessValue",{value:y.value}),subtext:s("quotes.topicProfile.richnessDesc",{unique:o.uniqueWords.toLocaleString(),total:o.totalWords.toLocaleString()}),colorClass:"text-blue-600 dark:text-blue-400"},{icon:h.value.icon,label:s("quotes.topicProfile.chatStyle"),value:h.value.label,subtext:h.value.desc,colorClass:h.value.colorClass},{icon:S.value.icon,label:s("quotes.topicProfile.expressionStyle"),value:S.value.label,subtext:S.value.desc,colorClass:S.value.colorClass}]),I=["#6366f1","#ec4899","#f97316","#22c55e","#3b82f6","#8b5cf6","#14b8a6","#f43f5e"];return(w,v)=>{const _=Se;return d(),B(e(sa),null,{default:D(()=>[a("div",hv,[a("div",yv,[a("div",xv,[a("div",bv,[l.value?(d(),p("p",_v,c(l.value),1)):V("",!0),a("div",kv,[a("span",wv,c(e(s)("quotes.topicProfile.heroPrefix")),1),a("span",Cv,c(u.totalMessages.toLocaleString()),1),a("span",$v,c(e(s)("quotes.topicProfile.heroMiddle")),1)]),a("div",Sv,[a("span",Iv,c(e(s)("quotes.topicProfile.heroMiddleSecond")),1),a("span",Tv,c(u.uniqueWords.toLocaleString()),1),a("span",Mv,c(e(s)("quotes.topicProfile.heroSuffix")),1)]),r.value.length>0?(d(),p("div",Av,[a("span",qv,c(e(s)("quotes.topicProfile.topTopicsPrefix")),1),(d(!0),p(ne,null,he(r.value,(k,C)=>(d(),p(ne,{key:k.word},[a("span",{class:"cursor-pointer font-bold text-xl transition-opacity hover:opacity-70",style:et({color:I[C%I.length]}),onClick:$=>i("wordClick",k.word)},c(k.word),13,zv),C<r.value.length-1?(d(),p("span",Dv,"·")):V("",!0)],64))),128))])):V("",!0)])]),m.value.words.length>0?(d(),p("div",Lv,[a("div",Ev,[f(e(t),{data:m.value,height:"100%","max-words":50,"size-scale":.8,"draw-out-of-bound":!0,shape:"rectangle","color-scheme":"default",onWordClick:v[0]||(v[0]=k=>i("wordClick",k))},null,8,["data"])])])):V("",!0)])]),a("div",Vv,[v[1]||(v[1]=a("div",{class:"mb-3 flex items-center justify-between"},[a("span",{class:"text-[10px] font-bold uppercase tracking-widest text-gray-400 dark:text-gray-500"}," Topic Profile ")],-1)),a("div",Fv,[(d(!0),p(ne,null,he(x.value,k=>(d(),p("div",{key:k.label,class:"flex min-w-0 items-start gap-2 px-2.5 py-2"},[f(_,{name:k.icon,class:Z(["mt-0.5 h-3.5 w-3.5 shrink-0",k.colorClass])},null,8,["name","class"]),a("div",Rv,[a("div",{class:Z(["truncate font-mono text-sm font-black leading-tight tabular-nums",k.colorClass])},c(k.value),3),a("div",Ov,c(k.label),1),a("div",Bv,c(k.subtext),1)])]))),128))])]),a("div",Pv,[a("div",Nv,[f(_,{name:"i-heroicons-chat-bubble-left-right-solid",class:"h-3.5 w-3.5"}),v[2]||(v[2]=a("span",{class:"text-[10px] font-bold uppercase tracking-wider"},"ChatLab",-1))]),a("span",jv,c(e(s)("quotes.topicProfile.watermark")),1)])]),_:1})}}}),Wv={class:"px-5 py-4 sm:px-6"},Kv={class:"mb-4 flex items-center gap-2"},Hv={class:"text-[15px] font-black tracking-tight text-gray-900 dark:text-white"},Yv={class:"flex flex-wrap justify-center gap-2"},Qv=["onClick"],Gv=le({__name:"SharedTopicsCard",props:{sessionId:{},timeFilter:{},dictType:{},excludeWords:{}},emits:["wordClick"],setup(u,{emit:n}){const{t}=Ce(),s=Jt(),o=u,i=n,l=q(()=>s.locale),r=A([]),m=A([]),y=q(()=>r.value.slice(0,20)),h=["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","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","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","bg-green-50 text-green-600 ring-1 ring-green-500/20 dark:bg-green-500/10 dark:text-green-400 dark:ring-green-500/30","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","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","bg-teal-50 text-teal-600 ring-1 ring-teal-500/20 dark:bg-teal-500/10 dark:text-teal-400 dark:ring-teal-500/30","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","bg-yellow-50 text-yellow-600 ring-1 ring-yellow-500/20 dark:bg-yellow-500/10 dark:text-yellow-400 dark:ring-yellow-500/30","bg-cyan-50 text-cyan-600 ring-1 ring-cyan-500/20 dark:bg-cyan-500/10 dark:text-cyan-400 dark:ring-cyan-500/30"];async function S(){if(o.sessionId)try{m.value.length===0&&(m.value=await Pe().getMembers(o.sessionId));const x=[...m.value].sort(($,g)=>g.messageCount-$.messageCount).slice(0,2);if(x.length<2){r.value=[];return}const I={locale:l.value,timeFilter:o.timeFilter?{startTs:o.timeFilter.startTs,endTs:o.timeFilter.endTs}:void 0,topN:100,minCount:2,posFilterMode:"meaningful",enableStopwords:!0,dictType:o.dictType??"default",excludeWords:o.excludeWords?.length?[...o.excludeWords]:void 0},w=Pe(),[v,_]=await Promise.all([w.getWordFrequency(o.sessionId,{...I,memberId:x[0].id}),w.getWordFrequency(o.sessionId,{...I,memberId:x[1].id})]),k=new Map(_.words.map($=>[$.word,$.count])),C=[];for(const $ of v.words){const g=k.get($.word);g&&C.push({word:$.word,countA:$.count,countB:g})}C.sort(($,g)=>g.countA+g.countB-($.countA+$.countB)),r.value=C.slice(0,30)}catch(x){console.error("加载共同话题数据失败:",x),r.value=[]}}return me(()=>o.sessionId,()=>{m.value=[]}),me(()=>[o.sessionId,o.timeFilter,o.dictType,o.excludeWords],()=>{S()},{immediate:!0,deep:!0}),(x,I)=>{const w=Se;return y.value.length>0?(d(),B(e(rt),{key:0},{default:D(()=>[a("div",Wv,[a("div",Kv,[f(w,{name:"i-heroicons-link",class:"h-4 w-4 text-emerald-500"}),a("span",Hv,c(e(t)("quotes.topicProfile.sharedTopics")),1)]),a("div",Yv,[(d(!0),p(ne,null,he(y.value,(v,_)=>(d(),p("span",{key:v.word,class:Z(["cursor-pointer rounded-full px-3 py-1 text-xs font-bold transition-opacity hover:opacity-80",h[_%h.length]]),onClick:k=>i("wordClick",v.word)},c(v.word),11,Qv))),128))])])]),_:1})):V("",!0)}}}),ks=Eo("wordFilter",()=>{const u=A([]),n=A(null),t=A({}),s=A(!1);function o(){return`wf_${Date.now()}_${Math.random().toString(36).slice(2,8)}`}function i(k,C=[]){const $={id:o(),name:k,words:[...C],createdAt:Date.now()};return u.value.push($),$}function l(k,C){const $=u.value.find(g=>g.id===k);$&&(C.name!==void 0&&($.name=C.name),C.words!==void 0&&($.words=[...C.words]))}function r(k){u.value=u.value.filter(C=>C.id!==k),n.value===k&&(n.value=null);for(const[C,$]of Object.entries(t.value))$===k&&delete t.value[C]}function m(k){n.value=k}function y(k,C){t.value[k]=C}function h(k){delete t.value[k]}function S(k){return k in t.value?t.value[k]:n.value}function x(k){const C=S(k);return C?u.value.find(g=>g.id===C)?.words??[]:[]}function I(k){return u.value.find(C=>C.id===k)}const w=q(()=>u.value.map(k=>({label:k.name,value:k.id,isDefault:k.id===n.value,wordCount:k.words.length})));function v(){s.value=!0}function _(){s.value=!1}return{schemes:u,defaultSchemeId:n,sessionSchemeOverrides:t,showWordFilterModal:s,schemeOptions:w,createScheme:i,updateScheme:l,deleteScheme:r,setDefaultScheme:m,setSessionScheme:y,clearSessionScheme:h,getActiveSchemeId:S,getExcludeWords:x,getSchemeById:I,openModal:v,closeModal:_}},{persist:!1,backendPersist:{pick:["schemes","defaultSchemeId","sessionSchemeOverrides"],key:"wordFilter"}}),Jv={class:"flex flex-col",style:{height:"520px"}},Xv={class:"flex items-center justify-between border-b border-gray-200 px-6 py-4 dark:border-white/5"},Zv={class:"flex items-center gap-3"},e0={class:"flex h-9 w-9 items-center justify-center rounded-xl bg-linear-to-br from-pink-400 to-pink-600"},t0={class:"text-lg font-semibold text-gray-900 dark:text-white"},a0={class:"flex flex-1 overflow-hidden"},s0={class:"flex w-[200px] shrink-0 flex-col border-r border-gray-200 dark:border-white/5"},o0={class:"flex items-center justify-between px-3 py-2"},n0={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},l0={class:"flex-1 overflow-y-auto px-2 pb-2"},i0=["onClick"],r0={class:"truncate text-sm"},u0={class:"ml-auto text-xs text-gray-400 dark:text-gray-500"},d0={key:0,class:"px-3 py-8 text-center text-xs text-gray-400 dark:text-gray-500"},c0={class:"flex flex-1 flex-col overflow-hidden"},m0={class:"flex-1 space-y-4 overflow-y-auto p-5"},p0={class:"mb-1.5 block text-xs font-medium text-gray-600 dark:text-gray-400"},g0={class:"flex items-center gap-2"},f0={class:"mb-1.5 block text-xs font-medium text-gray-600 dark:text-gray-400"},v0={class:"flex gap-2"},h0={class:"mb-1.5 flex items-center justify-between"},y0={class:"text-xs font-medium text-gray-600 dark:text-gray-400"},x0={class:"ml-1 text-gray-400 dark:text-gray-500"},b0={key:0,class:"flex max-h-[220px] flex-wrap gap-1.5 overflow-y-auto rounded-lg border border-gray-200 p-3 dark:border-white/5"},_0={key:1,class:"rounded-lg border border-dashed border-gray-300 px-4 py-6 text-center text-xs text-gray-400 dark:border-gray-600 dark:text-gray-500"},k0={class:"flex shrink-0 justify-end border-t border-gray-200 px-5 py-3 dark:border-white/5"},w0={key:1,class:"flex flex-1 flex-col items-center justify-center gap-3 text-gray-400 dark:text-gray-500"},C0={class:"text-sm"},$0=le({__name:"WordFilterModal",setup(u){const{t:n}=Ce(),t=ks(),s=q({get:()=>t.showWordFilterModal,set:C=>C?t.openModal():t.closeModal()}),o=A(null),i=A(""),l=A(""),r=A(null),m=q(()=>o.value?t.getSchemeById(o.value)??null:null),y=q(()=>o.value===t.defaultSchemeId);me(s,C=>{C&&(t.schemes.length>0&&!o.value&&(o.value=t.schemes[0].id),h())}),me(o,()=>{h(),l.value=""});function h(){i.value=m.value?.name??""}function S(){const C=t.createScheme(n("wordFilter.defaultSchemeName"));o.value=C.id,Re(()=>{r.value?.focus(),r.value?.select()})}function x(){if(!o.value)return;const C=t.schemes.findIndex($=>$.id===o.value);if(t.deleteScheme(o.value),t.schemes.length>0){const $=Math.min(C,t.schemes.length-1);o.value=t.schemes[$].id}else o.value=null}function I(){!o.value||!i.value.trim()||t.updateScheme(o.value,{name:i.value.trim()})}function w(){o.value&&(y.value?t.setDefaultScheme(null):t.setDefaultScheme(o.value))}function v(){if(!o.value||!l.value.trim())return;const $=l.value.trim().split(/[,,\n\r\t;;|、\s]+/).map(E=>E.trim()).filter(E=>E.length>0);if($.length===0)return;const g=m.value;if(!g)return;const b=new Set(g.words.map(E=>E.toLowerCase())),F=$.filter(E=>!b.has(E.toLowerCase()));F.length>0&&t.updateScheme(o.value,{words:[...g.words,...F]}),l.value=""}function _(C){if(!o.value)return;const $=m.value;$&&t.updateScheme(o.value,{words:$.words.filter(g=>g!==C)})}function k(){o.value&&t.updateScheme(o.value,{words:[]})}return(C,$)=>{const g=Se,b=Ne,F=zt,E=fs,z=Xe;return d(),B(z,{open:s.value,"onUpdate:open":$[4]||($[4]=T=>s.value=T),ui:{content:"max-w-3xl z-50"}},{content:D(()=>[a("div",Jv,[a("div",Xv,[a("div",Zv,[a("div",e0,[f(g,{name:"i-heroicons-funnel",class:"h-4.5 w-4.5 text-white"})]),a("h2",t0,c(e(n)("wordFilter.title")),1)]),f(b,{icon:"i-heroicons-x-mark",variant:"ghost",color:"neutral",size:"sm",onClick:$[0]||($[0]=T=>s.value=!1)})]),a("div",a0,[a("div",s0,[a("div",o0,[a("span",n0,c(e(n)("wordFilter.schemeList")),1),f(b,{icon:"i-heroicons-plus",size:"xs",variant:"ghost",color:"primary",onClick:S})]),a("div",l0,[(d(!0),p(ne,null,he(e(t).schemes,T=>(d(),p("div",{key:T.id,class:Z(["group mb-1 flex cursor-pointer items-center gap-2 rounded-lg px-3 py-2 transition-colors",o.value===T.id?"bg-primary-50 text-primary-700 dark:bg-primary-900/20 dark:text-primary-300":"text-gray-700 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-white/5"]),onClick:M=>o.value=T.id},[T.id===e(t).defaultSchemeId?(d(),B(g,{key:0,name:"i-heroicons-star-solid",class:"h-3.5 w-3.5 shrink-0 text-amber-500"})):V("",!0),a("span",r0,c(T.name),1),a("span",u0,c(T.words.length),1)],10,i0))),128)),e(t).schemes.length===0?(d(),p("div",d0,c(e(n)("wordFilter.emptyScheme")),1)):V("",!0)])]),a("div",c0,[m.value?(d(),p(ne,{key:0},[a("div",m0,[a("div",null,[a("label",p0,c(e(n)("wordFilter.schemeName")),1),f(F,{ref_key:"nameInputRef",ref:r,modelValue:i.value,"onUpdate:modelValue":$[1]||($[1]=T=>i.value=T),size:"sm",placeholder:e(n)("wordFilter.schemeNamePlaceholder"),onBlur:I,onKeydown:Ze(I,["enter"])},null,8,["modelValue","placeholder"])]),a("div",g0,[f(b,{size:"xs",variant:y.value?"solid":"soft",color:y.value?"warning":"neutral",icon:y.value?"i-heroicons-star-solid":"i-heroicons-star",onClick:w},{default:D(()=>[ee(c(y.value?e(n)("wordFilter.isDefault"):e(n)("wordFilter.setDefault")),1)]),_:1},8,["variant","color","icon"]),f(b,{size:"xs",variant:"soft",color:"error",icon:"i-heroicons-trash",onClick:x},{default:D(()=>[ee(c(e(n)("wordFilter.deleteScheme")),1)]),_:1})]),a("div",null,[a("label",f0,c(e(n)("wordFilter.addWords")),1),a("div",v0,[f(F,{modelValue:l.value,"onUpdate:modelValue":$[2]||($[2]=T=>l.value=T),size:"sm",class:"flex-1",placeholder:e(n)("wordFilter.addWordsPlaceholder"),onKeydown:Ze(v,["enter"])},null,8,["modelValue","placeholder"]),f(b,{size:"sm",color:"primary",icon:"i-heroicons-plus",onClick:v},{default:D(()=>[ee(c(e(n)("wordFilter.add")),1)]),_:1})])]),a("div",null,[a("div",h0,[a("label",y0,[ee(c(e(n)("wordFilter.wordList"))+" ",1),a("span",x0,"("+c(m.value.words.length)+")",1)]),m.value.words.length>0?(d(),B(b,{key:0,size:"xs",variant:"ghost",color:"error",onClick:k},{default:D(()=>[ee(c(e(n)("wordFilter.clearAll")),1)]),_:1})):V("",!0)]),m.value.words.length>0?(d(),p("div",b0,[(d(!0),p(ne,null,he(m.value.words,T=>(d(),B(E,{key:T,color:"neutral",variant:"subtle",class:"group/badge cursor-default gap-1 pr-1"},{default:D(()=>[ee(c(T)+" ",1),f(g,{name:"i-heroicons-x-mark",class:"h-3.5 w-3.5 cursor-pointer text-gray-400 transition-colors hover:text-red-500",onClick:M=>_(T)},null,8,["onClick"])]),_:2},1024))),128))])):(d(),p("div",_0,c(e(n)("wordFilter.emptyWords")),1))])]),a("div",k0,[f(b,{color:"primary",variant:"soft",onClick:$[3]||($[3]=T=>s.value=!1)},{default:D(()=>[ee(c(e(n)("wordFilter.close")),1)]),_:1})])],64)):(d(),p("div",w0,[f(g,{name:"i-heroicons-funnel",class:"h-10 w-10"}),a("p",C0,c(e(n)("wordFilter.selectOrCreate")),1),f(b,{size:"sm",color:"primary",variant:"soft",icon:"i-heroicons-plus",onClick:S},{default:D(()=>[ee(c(e(n)("wordFilter.createScheme")),1)]),_:1})]))])])])]),_:1},8,["open"])}}}),S0={class:"main-content mx-auto max-w-[920px] space-y-6 p-4 sm:p-6"},I0={key:0,class:"flex flex-col gap-3 rounded-lg border border-primary-200 bg-primary-50/70 p-4 dark:border-primary-800 dark:bg-primary-950/30 sm:flex-row sm:items-center sm:justify-between"},T0={class:"flex min-w-0 items-start gap-3"},M0={class:"min-w-0 text-sm text-primary-700 dark:text-primary-300"},A0={class:"flex shrink-0 flex-wrap gap-2"},q0={key:1,class:"space-y-6"},z0={class:"flex flex-col gap-6 p-4 sm:p-6 lg:flex-row"},D0={class:"flex min-w-0 flex-1 flex-col"},L0={class:"relative w-full",style:{"aspect-ratio":"16 / 9"}},E0={key:1,class:"absolute inset-0 flex flex-col items-center justify-center gap-2 rounded-lg border border-dashed border-gray-200 bg-gray-50/40 text-gray-500 dark:border-gray-700 dark:bg-gray-800/30 dark:text-gray-400"},V0={class:"text-xs font-medium"},F0={class:"px-4 text-center text-[11px]"},R0={key:0,class:"mt-2 text-center text-xs text-gray-500 dark:text-gray-400"},O0={class:"w-full shrink-0 space-y-4 lg:w-[280px]"},B0={class:"mb-2 text-xs font-medium text-gray-600 dark:text-gray-400"},P0={class:"mb-2 text-xs font-medium text-gray-600 dark:text-gray-400"},N0={class:"mb-2 text-xs font-medium text-gray-600 dark:text-gray-400"},j0={key:0},U0={class:"mb-2 text-xs font-medium text-gray-600 dark:text-gray-400"},W0={class:"space-y-2"},K0={class:"text-xs text-gray-400 dark:text-gray-500"},H0={key:1},Y0={class:"mb-2 text-xs font-medium text-gray-600 dark:text-gray-400"},Q0={class:"flex items-center"},G0={key:2,class:"space-y-2"},J0={class:"flex items-center justify-between"},X0={class:"text-xs font-medium text-gray-600 dark:text-gray-400"},Z0={class:"flex gap-1"},eh={class:"flex max-h-[360px] flex-wrap gap-1.5 overflow-y-auto"},th={key:0,class:"ml-1 opacity-60"},ah={class:"mb-2 flex items-center justify-between"},sh={class:"text-xs font-medium text-gray-600 dark:text-gray-400"},oh={key:0,class:"mt-1 text-xs text-gray-400 dark:text-gray-500"},nh={class:"space-y-4"},lh={class:"text-sm text-gray-600 dark:text-gray-300"},ih={class:"flex justify-end gap-2"},rh="default",Ha="chatlab_zhTW_dict_prompt_dismissed",Yb=le({__name:"WordcloudTab",props:{sessionId:{},timeFilter:{},memberId:{},showSharedTopics:{type:Boolean},enableNodeNlpFeatures:{type:Boolean,default:!0},enableRecordNavigation:{type:Boolean,default:!0}},setup(u){const n=us(()=>xa(()=>import("./EChartWordcloud-ChKJM8bU.js"),__vite__mapDeps([4,5,6,7,1,2,3]))),{t}=Ce(),s=Jt(),o=Dt(),i=ks(),l=_t(),r=u,m=A(!0);Ko(m);const y=A([]),h=A({totalMessages:0,totalWords:0,uniqueWords:0}),S=A(1.25),x=A(150),I=q(()=>{const re=y.value.slice(0,x.value),ce=re.reduce((Q,oe)=>Q+oe.count,0);return{words:re.map(Q=>({word:Q.word,count:Q.count,percentage:ce>0?Math.round(Q.count/ce*1e4)/100:0}))}}),w=A(r.enableNodeNlpFeatures?"meaningful":"all"),v=A(!0),_=A([]),k=A([]),C=A(new Map),$=["n","nr","ns","nt","nz","nw","vn","a","an"],g=A([]),b=q(()=>I.value.words.map(re=>({word:re.word,count:re.count,percentage:re.percentage??0}))),F=q(()=>[...C.value.entries()].map(([re,ce])=>({tag:re,count:ce}))),E=A(null),z=q({get:()=>i.getActiveSchemeId(r.sessionId),set:re=>i.setSessionScheme(r.sessionId,re)}),T=q(()=>[{label:t("wordFilter.noFilter"),value:"__none__"},...i.schemeOptions.map(re=>({label:re.isDefault?`${re.label} ★`:re.label,value:re.value}))]),M=q({get:()=>z.value??"__none__",set:re=>{z.value=re==="__none__"?null:re}}),L=q(()=>i.getExcludeWords(r.sessionId)),N=A("default"),U=A([]),H=A(!1),ie=A(null),se=A(!1),P=A(!r.enableNodeNlpFeatures),R=q(()=>s.locale),J=q(()=>s.locale==="zh-TW"),fe=q(()=>R.value.startsWith("zh")),X=q(()=>U.value.filter(re=>re.downloaded).map(re=>({label:t(`quotes.wordcloud.dict.${re.id==="zh-CN"?"zhCN":re.id==="zh-TW"?"zhTW":re.id}`),value:re.id}))),W=q(()=>U.value.some(re=>re.downloaded)),ae=q(()=>!r.enableNodeNlpFeatures||!fe.value||P.value),O=q(()=>U.value.filter(re=>!re.downloaded));async function ue(){if(r.enableNodeNlpFeatures)try{U.value=await Oa("/nlp/dicts"),J.value&&N.value==="default"&&U.value.find(Q=>Q.id==="zh-TW")?.downloaded&&(N.value="zh-TW"),U.value.find(ce=>ce.id==="zh-CN")?.downloaded&&N.value==="default"&&(N.value="zh-CN")}catch(re){console.error("Failed to get dict list:",re)}finally{P.value=!0}}async function we(re){H.value=!0,ie.value=re;try{const ce=await Vo(`/nlp/dicts/${re}/download`);ce.success?(await ue(),N.value=re,l.success(t("quotes.wordcloud.dict.downloadSuccess"))):l.fail(t("quotes.wordcloud.dict.downloadFailed"),{description:ce.error})}catch{l.fail(t("quotes.wordcloud.dict.downloadFailed"))}finally{H.value=!1,ie.value=null,se.value=!1}}function xe(){se.value=!1,localStorage.setItem(Ha,"true")}function te(){const re=U.value.find(ce=>ce.id==="zh-TW");J.value&&re&&!re.downloaded&&!localStorage.getItem(Ha)&&(se.value=!0)}const K=q(()=>[{label:t("quotes.wordcloud.posFilter.all"),value:"all"},{label:t("quotes.wordcloud.posFilter.meaningful"),value:"meaningful"},{label:t("quotes.wordcloud.posFilter.custom"),value:"custom"}]),j=[{label:"80",value:80},{label:"100",value:100},{label:"150",value:150},{label:"200",value:200},{label:"300",value:300}],de=Math.max(...j.map(re=>re.value)),be=q(()=>[{label:t("quotes.wordcloud.size.small"),value:.75},{label:t("quotes.wordcloud.size.medium"),value:1},{label:t("quotes.wordcloud.size.large"),value:1.25},{label:t("quotes.wordcloud.size.xlarge"),value:1.5}]),ke=q(()=>k.value.map(re=>({label:re.name,tag:re.tag,value:re.tag,count:C.value.get(re.tag)||0,meaningful:re.meaningful})));async function ze(){if(r.enableNodeNlpFeatures)try{const re=await Oa("/nlp/pos-tags");k.value=re,_.value=re.filter(ce=>ce.meaningful).map(ce=>ce.tag)}catch(re){console.error("加载词性标签失败:",re)}}let je=0;async function qe(){if(!r.sessionId||!ae.value)return;const re=++je;try{const ce=await Pe().getWordFrequency(r.sessionId,{locale:R.value,timeFilter:r.timeFilter?{startTs:r.timeFilter.startTs,endTs:r.timeFilter.endTs}:void 0,memberId:E.value??void 0,topN:50,minCount:2,posFilterMode:r.enableNodeNlpFeatures?"custom":"all",customPosTags:r.enableNodeNlpFeatures?[...$]:void 0,enableStopwords:!0,dictType:N.value,excludeWords:L.value.length>0?[...L.value]:void 0});if(re!==je)return;g.value=ce.words.map(Q=>({word:Q.word,count:Q.count,percentage:Q.percentage}))}catch(ce){if(console.error("加载话题迷你词云数据失败:",ce),re!==je)return;g.value=[]}}let He=0;async function Ue(){if(!r.sessionId||!ae.value)return;const re=++He;y.value.length===0&&(m.value=!0);try{const ce=await Pe().getWordFrequency(r.sessionId,{locale:R.value,timeFilter:r.timeFilter?{startTs:r.timeFilter.startTs,endTs:r.timeFilter.endTs}:void 0,memberId:E.value??void 0,topN:de,minCount:2,posFilterMode:r.enableNodeNlpFeatures?w.value:"all",customPosTags:r.enableNodeNlpFeatures&&w.value==="custom"?[..._.value]:void 0,enableStopwords:v.value,dictType:N.value,excludeWords:L.value.length>0?[...L.value]:void 0});if(re!==He)return;if(y.value=ce.words.map(Q=>({word:Q.word,count:Q.count,percentage:Q.percentage})),h.value={totalMessages:ce.totalMessages,totalWords:ce.totalWords,uniqueWords:ce.uniqueWords},ce.posTagStats){const Q=new Map;for(const oe of ce.posTagStats)Q.set(oe.tag,oe.count);C.value=Q}}catch(ce){if(console.error("加载词频数据失败:",ce),re!==He)return;y.value=[]}finally{re===He&&(m.value=!1)}}me(()=>r.sessionId,()=>{E.value=null,y.value=[],g.value=[],h.value={totalMessages:0,totalWords:0,uniqueWords:0},C.value=new Map}),me(()=>[r.sessionId,r.timeFilter,E.value,w.value,v.value,N.value,L.value,ae.value],()=>{Ue()},{immediate:!0,deep:!0}),me(()=>[r.sessionId,r.timeFilter,E.value,N.value,L.value,ae.value],()=>{qe()},{immediate:!0,deep:!0}),me(_,()=>{w.value==="custom"&&Ue()},{deep:!0}),me(R,()=>{Ue()});function Te(re){r.enableRecordNavigation&&o.openChatRecordDrawer({keywords:[re]})}return De(async()=>{r.enableNodeNlpFeatures&&(ze(),await ue(),te())}),(re,ce)=>{const Q=Se,oe=Ne,Y=Ca,Ie=fs,G=Xe;return d(),p("div",S0,[r.enableNodeNlpFeatures&&fe.value&&!W.value?(d(),p("div",I0,[a("div",T0,[f(Q,{name:"i-heroicons-information-circle",class:"mt-0.5 shrink-0 text-xl text-primary-500"}),a("p",M0,c(e(t)("quotes.wordcloud.dict.needDownload")),1)]),a("div",A0,[(d(!0),p(ne,null,he(U.value,pe=>(d(),B(oe,{key:pe.id,size:"sm",color:"primary",loading:H.value&&ie.value===pe.id,disabled:H.value&&ie.value!==pe.id,icon:"i-heroicons-arrow-down-tray",onClick:$e=>we(pe.id)},{default:D(()=>[ee(c(e(t)(`quotes.wordcloud.dict.download_${pe.id}`,pe.label)),1)]),_:2},1032,["loading","disabled","onClick"]))),128))])])):V("",!0),ae.value?(d(),p("div",q0,[m.value&&b.value.length===0?(d(),B(e(Mt),{key:0,text:e(t)("quotes.wordcloud.loading"),class:"py-8"},null,8,["text"])):V("",!0),f(Uv,{"total-messages":h.value.totalMessages,"total-words":h.value.totalWords,"unique-words":h.value.uniqueWords,"top-words":b.value,"topic-words":g.value,"pos-tag-stats":F.value,"time-filter":r.timeFilter,onWordClick:Te},null,8,["total-messages","total-words","unique-words","top-words","topic-words","pos-tag-stats","time-filter"]),r.showSharedTopics?(d(),B(Gv,{key:1,"session-id":r.sessionId,"time-filter":r.timeFilter,"dict-type":N.value,"exclude-words":L.value,onWordClick:Te},null,8,["session-id","time-filter","dict-type","exclude-words"])):V("",!0),f(e(Qe),{title:e(t)("quotes.wordcloud.stats.wordsLabel"),"show-divider":!1},{default:D(()=>[a("div",z0,[a("div",D0,[a("div",L0,[m.value?(d(),B(e(Mt),{key:0,text:e(t)("quotes.wordcloud.loading"),class:"absolute inset-0 z-10 rounded-lg bg-white/80 dark:bg-page-dark/80"},null,8,["text"])):b.value.length===0?(d(),p("div",E0,[f(Q,{name:"i-heroicons-chat-bubble-bottom-center-text",class:"text-2xl"}),a("p",V0,c(e(t)("quotes.wordcloud.empty.title")),1),a("p",F0,c(e(t)("quotes.wordcloud.empty.description")),1)])):(d(),B(e(n),{key:2,data:I.value,height:"100%","max-words":x.value,"color-scheme":rh,"size-scale":S.value,loading:m.value,onWordClick:Te},null,8,["data","max-words","size-scale","loading"]))]),r.enableRecordNavigation?(d(),p("p",R0,c(e(t)("quotes.wordcloud.stats.clickHint")),1)):V("",!0)]),a("div",O0,[a("div",null,[a("h4",B0,c(e(t)("quotes.wordcloud.config.maxWords")),1),f(e(ct),{modelValue:x.value,"onUpdate:modelValue":ce[0]||(ce[0]=pe=>x.value=pe),size:"xs",items:j},null,8,["modelValue"])]),a("div",null,[a("h4",P0,c(e(t)("quotes.wordcloud.config.sizeScale")),1),f(e(ct),{modelValue:S.value,"onUpdate:modelValue":ce[1]||(ce[1]=pe=>S.value=pe),size:"xs",items:be.value},null,8,["modelValue","items"])]),a("div",null,[a("h4",N0,c(e(t)("quotes.wordcloud.config.userFilter")),1),f(ig,{modelValue:E.value,"onUpdate:modelValue":ce[2]||(ce[2]=pe=>E.value=pe),"session-id":r.sessionId,class:"w-full"},null,8,["modelValue","session-id"])]),r.enableNodeNlpFeatures?(d(),p("div",j0,[a("h4",U0,c(e(t)("quotes.wordcloud.config.dict")),1),a("div",W0,[X.value.length>1?(d(),B(e(ct),{key:0,modelValue:N.value,"onUpdate:modelValue":ce[3]||(ce[3]=pe=>N.value=pe),size:"xs",items:X.value},null,8,["modelValue","items"])):V("",!0),(d(!0),p(ne,null,he(O.value,pe=>(d(),p("div",{key:pe.id,class:"flex items-center gap-2"},[f(oe,{size:"xs",variant:"soft",color:"primary",loading:H.value&&ie.value===pe.id,disabled:H.value&&ie.value!==pe.id,icon:"i-heroicons-arrow-down-tray",onClick:$e=>we(pe.id)},{default:D(()=>[ee(c(e(t)(`quotes.wordcloud.dict.download_${pe.id}`,e(t)("quotes.wordcloud.dict.download"))),1)]),_:2},1032,["loading","disabled","onClick"]),a("span",K0,c(e(t)("quotes.wordcloud.dict.downloadHint")),1)]))),128))])])):V("",!0),r.enableNodeNlpFeatures?(d(),p("div",H0,[a("h4",Y0,c(e(t)("quotes.wordcloud.config.posFilter")),1),f(e(ct),{modelValue:w.value,"onUpdate:modelValue":ce[4]||(ce[4]=pe=>w.value=pe),size:"xs",items:K.value},null,8,["modelValue","items"])])):V("",!0),a("div",Q0,[f(Y,{modelValue:v.value,"onUpdate:modelValue":ce[5]||(ce[5]=pe=>v.value=pe),label:e(t)("quotes.wordcloud.config.enableStopwords")},null,8,["modelValue","label"])]),r.enableNodeNlpFeatures&&w.value==="custom"?(d(),p("div",G0,[a("div",J0,[a("h4",X0,c(e(t)("quotes.wordcloud.posFilter.customHint")),1),a("div",Z0,[f(oe,{size:"xs",variant:"ghost",color:"neutral",onClick:ce[6]||(ce[6]=pe=>_.value=k.value.filter($e=>$e.meaningful).map($e=>$e.tag))},{default:D(()=>[ee(c(e(t)("quotes.wordcloud.posFilter.selectMeaningful")),1)]),_:1}),f(oe,{size:"xs",variant:"ghost",color:"neutral",onClick:ce[7]||(ce[7]=pe=>_.value=k.value.map($e=>$e.tag))},{default:D(()=>[ee(c(e(t)("quotes.wordcloud.posFilter.selectAll")),1)]),_:1}),f(oe,{size:"xs",variant:"ghost",color:"neutral",onClick:ce[8]||(ce[8]=pe=>_.value=[])},{default:D(()=>[ee(c(e(t)("quotes.wordcloud.posFilter.clearAll")),1)]),_:1})])]),a("div",eh,[(d(!0),p(ne,null,he(ke.value,pe=>(d(),B(Ie,{key:pe.value,color:_.value.includes(pe.value)?"primary":"neutral",variant:_.value.includes(pe.value)?"solid":"outline",class:"cursor-pointer select-none transition-colors",onClick:()=>{_.value.includes(pe.value)?_.value=_.value.filter($e=>$e!==pe.value):_.value=[..._.value,pe.value]}},{default:D(()=>[ee(c(pe.label)+" ",1),pe.count>0?(d(),p("span",th,"("+c(pe.count)+")",1)):V("",!0)]),_:2},1032,["color","variant","onClick"]))),128))])])):V("",!0),a("div",null,[a("div",ah,[a("h4",sh,c(e(t)("wordFilter.filterScheme")),1),f(oe,{size:"xs",variant:"ghost",color:"neutral",icon:"i-heroicons-cog-6-tooth","aria-label":e(t)("wordFilter.manage"),onClick:ce[9]||(ce[9]=pe=>e(i).openModal())},null,8,["aria-label"])]),f(e(ct),{modelValue:M.value,"onUpdate:modelValue":ce[10]||(ce[10]=pe=>M.value=pe),size:"xs",items:T.value},null,8,["modelValue","items"]),L.value.length>0?(d(),p("p",oh,c(e(t)("wordFilter.activeCount",{count:L.value.length})),1)):V("",!0)])])])]),_:1},8,["title"])])):V("",!0),r.enableNodeNlpFeatures?(d(),B(G,{key:2,open:se.value,"onUpdate:open":ce[12]||(ce[12]=pe=>se.value=pe),title:e(t)("quotes.wordcloud.dict.promptTitle")},{body:D(()=>[a("div",nh,[a("p",lh,c(e(t)("quotes.wordcloud.dict.promptDescription")),1),a("div",ih,[f(oe,{variant:"ghost",color:"neutral",onClick:xe},{default:D(()=>[ee(c(e(t)("quotes.wordcloud.dict.promptLater")),1)]),_:1}),f(oe,{color:"primary",loading:H.value,onClick:ce[11]||(ce[11]=pe=>we("zh-TW"))},{default:D(()=>[ee(c(e(t)("quotes.wordcloud.dict.promptDownload")),1)]),_:1},8,["loading"])])])]),_:1},8,["open","title"])):V("",!0),f($0)])}}});function Qb(u){const n=q(()=>Fo(u)),t=q(()=>{const o=n.value;return o.length<2?!1:new Set(o.map(l=>Ve(l.date).year())).size>1}),s=q(()=>{const o=n.value,i=50;if(o.length<=i){const y=t.value?"YYYY/MM/DD":"MM/DD";return{labels:o.map(h=>Ve(h.date).format(y)),values:o.map(h=>h.messageCount)}}const l=Math.ceil(o.length/i),r=[],m=[];for(let y=0;y<o.length;y+=l){const h=o.slice(y,y+l);if(h.length===0)continue;const S=Math.floor(h.length/2),x=h[S].date,I=t.value?"YYYY/MM/DD":"MM/DD";r.push(Ve(x).format(I));const w=h.reduce((_,k)=>_+k.messageCount,0),v=Math.round(w/h.length);m.push(v)}return{labels:r,values:m}});return{isMultiYear:t,dailyChartData:s}}const uh=86400;function Qt(u){return typeof u=="number"&&Number.isFinite(u)}function dh(u){return Qt(u?.startTs)&&Qt(u?.endTs)}function ws(u,n){const t=n?.startTs??u?.start,s=n?.endTs??u?.end;return!Qt(t)||!Qt(s)||s<t?null:{start:t,end:s}}function ch(u,n=0){return!u||u.end<u.start?0:Math.max(Math.ceil((u.end-u.start)/uh),n,1)}function mh(u){return u?[Ve.unix(u.start).format("YYYY-MM-DD"),Ve.unix(u.end).format("YYYY-MM-DD")]:null}function ph(u,n){const{t}=Ce(),s=q(()=>ws(u.timeRange,u.timeFilter)),o=q(()=>dh(u.timeFilter)),i=q(()=>u.dailyActivity.filter(F=>F.messageCount>0).length),l=q(()=>ch(s.value,i.value)),r=q(()=>o.value?u.filteredMessageCount:u.session.messageCount),m=q(()=>o.value?u.filteredMemberCount??u.session.memberCount:u.session.memberCount),y=q(()=>l.value),h=q(()=>y.value===0?0:Math.round(r.value/y.value)),S=q(()=>l.value===0?0:Math.round(r.value/l.value)),x=q(()=>u.messageTypes.find(E=>E.type===1)?.count||0),I=q(()=>u.hourlyActivity.length?u.hourlyActivity.reduce((F,E)=>E.messageCount>F.messageCount?E:F,u.hourlyActivity[0]):null),w=q(()=>n.value.length?n.value.reduce((F,E)=>E.messageCount>F.messageCount?E:F,n.value[0]):null),v=q(()=>[t("common.weekday.mon"),t("common.weekday.tue"),t("common.weekday.wed"),t("common.weekday.thu"),t("common.weekday.fri"),t("common.weekday.sat"),t("common.weekday.sun")]),_=q(()=>{if(!n.value.length)return{weekday:0,weekend:0};const F=n.value.filter(T=>T.weekday>=1&&T.weekday<=5).reduce((T,M)=>T+M.messageCount,0),E=n.value.filter(T=>T.weekday>=6&&T.weekday<=7).reduce((T,M)=>T+M.messageCount,0),z=F+E;return{weekday:z>0?Math.round(F/z*100):0,weekend:z>0?Math.round(E/z*100):0}}),k=q(()=>u.dailyActivity.length?u.dailyActivity.reduce((F,E)=>E.messageCount>F.messageCount?E:F,u.dailyActivity[0]):null),C=q(()=>l.value),$=q(()=>C.value>0?Math.round(i.value/C.value*100):0),g=q(()=>{if(!u.hourlyActivity.length)return{count:0,ratio:0};const F=u.hourlyActivity.reduce((z,T)=>z+T.messageCount,0),E=u.hourlyActivity.filter(z=>z.hour>=0&&z.hour<=4).reduce((z,T)=>z+T.messageCount,0);return{count:E,ratio:F>0?Math.round(E/F*100):0}}),b=q(()=>{if(!u.dailyActivity.length)return 0;const F=[...u.dailyActivity].filter(T=>T.messageCount>0).sort((T,M)=>Ve(T.date).valueOf()-Ve(M.date).valueOf());if(F.length===0)return 0;let E=1,z=1;for(let T=1;T<F.length;T++){const M=Ve(F[T-1].date);Ve(F[T].date).diff(M,"day")===1?z++:(z>E&&(E=z),z=1)}return z>E&&(E=z),E});return{durationDays:l,displayMessageCount:r,displayMemberCount:m,dailyAvgMessages:S,totalDurationDays:y,totalDailyAvgMessages:h,imageCount:x,peakHour:I,peakWeekday:w,weekdayNames:v,weekdayVsWeekend:_,peakDay:k,activeDays:i,totalDays:C,activeRate:$,lateNightChat:g,maxConsecutiveDays:b}}function gh(u){const n=A([]);let t=0;async function s(){const o=++t,i=u.sessionId();if(!i){n.value=[];return}try{const l=await Pe().getWeekdayActivity(i,u.timeFilter());o===t&&(n.value=l)}catch(l){o===t&&console.error("Failed to load weekday activity:",l)}}return me([u.sessionId,u.timeFilter],()=>s(),{immediate:!0,deep:!0}),{weekdayActivity:n}}const fh={key:0,class:"relative z-10 px-5 pb-5 pt-2 sm:px-8 sm:pb-6"},vh={class:"grid grid-cols-2 gap-3 lg:grid-cols-4"},hh={class:"min-w-0"},yh={class:"mt-0.5 truncate text-[10px] font-medium text-gray-500 dark:text-gray-400"},xh={class:"mt-0.5 truncate text-[9px] text-gray-400 dark:text-gray-500"},bh={key:1,class:"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4"},_h={class:"text-sm text-gray-500"},kh={class:"text-sm text-gray-500"},wh={class:"ml-1 font-semibold text-pink-500"},Ch={class:"text-sm text-gray-500"},$h={class:"text-sm text-gray-500"},Sh={class:"text-sm text-gray-500"},Ih={class:"text-sm text-gray-500"},Th={class:"text-sm text-gray-500"},Mh={class:"text-sm text-gray-500"},Ah=le({__name:"OverviewStatCards",props:{dailyAvgMessages:{},durationDays:{},imageCount:{},peakHour:{},peakWeekday:{},weekdayNames:{},weekdayVsWeekend:{},peakDay:{},activeDays:{},totalDays:{},activeRate:{},lateNightCount:{},lateNightRatio:{},maxConsecutiveDays:{},flat:{type:Boolean,default:!1}},setup(u){const{t:n}=Ce(),t=u,s=q(()=>[{icon:"i-heroicons-chat-bubble-left-right",label:n("analysis.overview.statCards.dailyAvgMessages"),value:n("analysis.overview.statCards.messagesCount",{count:t.dailyAvgMessages}),subtext:n("analysis.overview.statCards.daysCount",{count:t.durationDays}),colorClass:"text-blue-600 dark:text-blue-400"},{icon:"i-heroicons-photo",label:n("analysis.overview.statCards.imageMessages"),value:n("analysis.overview.statCards.imagesCount",{count:t.imageCount}),subtext:`${n("analysis.overview.statCards.peakHour")} ${t.peakHour?.hour||0}:00`,colorClass:"text-pink-600 dark:text-pink-400"},{icon:"i-heroicons-calendar-days",label:n("analysis.overview.statCards.mostActiveWeekday"),value:t.peakWeekday?t.weekdayNames[t.peakWeekday.weekday-1]:"-",subtext:n("analysis.overview.statCards.messagesOnDay",{count:t.peakWeekday?.messageCount??0}),colorClass:"text-amber-600 dark:text-amber-400"},{icon:"i-heroicons-sun",label:n("analysis.overview.statCards.weekendActivity"),value:`${t.weekdayVsWeekend.weekend}%`,subtext:n("analysis.overview.statCards.weekendRatio"),colorClass:"text-green-600 dark:text-green-400"},{icon:"i-heroicons-fire",label:n("analysis.overview.statCards.mostActiveDate"),value:t.peakDay?Ve(t.peakDay.date).format("MM/DD"):"-",subtext:n("analysis.overview.statCards.messagesOnDay",{count:t.peakDay?.messageCount??0}),colorClass:"text-red-600 dark:text-red-400"},{icon:"i-heroicons-moon",label:n("analysis.overview.statCards.lateNightChat"),value:n("analysis.overview.statCards.messagesCount",{count:t.lateNightCount}),subtext:n("analysis.overview.statCards.lateNightRatio",{ratio:t.lateNightRatio}),colorClass:"text-indigo-600 dark:text-indigo-400"},{icon:"i-heroicons-bolt",label:n("analysis.overview.statCards.consecutiveStreak"),value:n("analysis.overview.statCards.daysStreak",{count:t.maxConsecutiveDays}),subtext:n("analysis.overview.statCards.longestStreak"),colorClass:"text-amber-600 dark:text-amber-400"},{icon:"i-heroicons-chart-bar",label:n("analysis.overview.statCards.activityRate"),value:`${t.activeRate}%`,subtext:n("analysis.overview.statCards.activeDaysRatio"),colorClass:"text-gray-900 dark:text-white"}]);return(o,i)=>{const l=Se;return u.flat?(d(),p("div",fh,[i[0]||(i[0]=a("div",{class:"mb-3 flex items-center justify-between"},[a("span",{class:"text-[10px] font-bold uppercase tracking-widest text-gray-400 dark:text-gray-500"},"Key Metrics")],-1)),a("div",vh,[(d(!0),p(ne,null,he(s.value,r=>(d(),p("div",{key:r.icon+r.label,class:"flex min-w-0 items-start gap-2 px-2.5 py-2"},[f(l,{name:r.icon,class:Z(["mt-0.5 h-3.5 w-3.5 shrink-0",r.colorClass])},null,8,["name","class"]),a("div",hh,[a("div",{class:Z(["truncate font-mono text-sm font-black leading-tight tabular-nums",r.colorClass])},c(r.value),3),a("div",yh,c(r.label),1),a("div",xh,c(r.subtext),1)])]))),128))])])):(d(),p("div",bh,[f(e(nt),{label:e(n)("analysis.overview.statCards.dailyAvgMessages"),value:e(n)("analysis.overview.statCards.messagesCount",{count:u.dailyAvgMessages}),icon:"i-heroicons-chat-bubble-left-right","icon-bg":"blue"},{subtext:D(()=>[a("span",_h,c(e(n)("analysis.overview.statCards.daysCount",{count:u.durationDays})),1)]),_:1},8,["label","value"]),f(e(nt),{label:e(n)("analysis.overview.statCards.imageMessages"),value:e(n)("analysis.overview.statCards.imagesCount",{count:u.imageCount}),icon:"i-heroicons-photo","icon-bg":"pink"},{subtext:D(()=>[a("span",kh,c(e(n)("analysis.overview.statCards.peakHour")),1),a("span",wh,c(u.peakHour?.hour||0)+":00",1)]),_:1},8,["label","value"]),f(e(nt),{label:e(n)("analysis.overview.statCards.mostActiveWeekday"),value:u.peakWeekday?u.weekdayNames[u.peakWeekday.weekday-1]:"-",icon:"i-heroicons-calendar-days","icon-bg":"amber"},{subtext:D(()=>[a("span",Ch,c(e(n)("analysis.overview.statCards.messagesOnDay",{count:u.peakWeekday?.messageCount??0})),1)]),_:1},8,["label","value"]),f(e(nt),{label:e(n)("analysis.overview.statCards.weekendActivity"),value:`${u.weekdayVsWeekend.weekend}%`,icon:"i-heroicons-sun","icon-bg":"green"},{subtext:D(()=>[a("span",$h,c(e(n)("analysis.overview.statCards.weekendRatio")),1)]),_:1},8,["label","value"]),f(e(nt),{label:e(n)("analysis.overview.statCards.mostActiveDate"),value:u.peakDay?e(Ve)(u.peakDay.date).format("MM/DD"):"-",icon:"i-heroicons-fire","icon-bg":"red"},{subtext:D(()=>[a("span",Sh,c(e(n)("analysis.overview.statCards.messagesOnDay",{count:u.peakDay?.messageCount??0})),1)]),_:1},8,["label","value"]),f(e(nt),{label:e(n)("analysis.overview.statCards.lateNightChat"),value:e(n)("analysis.overview.statCards.messagesCount",{count:u.lateNightCount}),icon:"i-heroicons-moon","icon-bg":"blue"},{subtext:D(()=>[a("span",Ih,c(e(n)("analysis.overview.statCards.lateNightRatio",{ratio:u.lateNightRatio})),1)]),_:1},8,["label","value"]),f(e(nt),{label:e(n)("analysis.overview.statCards.consecutiveStreak"),value:e(n)("analysis.overview.statCards.daysStreak",{count:u.maxConsecutiveDays}),icon:"i-heroicons-bolt","icon-bg":"amber"},{subtext:D(()=>[a("span",Th,c(e(n)("analysis.overview.statCards.longestStreak")),1)]),_:1},8,["label","value"]),f(e(nt),{label:e(n)("analysis.overview.statCards.activityRate"),value:`${u.activeRate}%`,icon:"i-heroicons-chart-bar","icon-bg":"gray"},{subtext:D(()=>[a("span",Mh,c(e(n)("analysis.overview.statCards.activeDaysRatio")),1)]),_:1},8,["label","value"])]))}}}),qh={class:"relative z-10 px-5 pt-6 pb-4 sm:px-8 sm:pt-8"},zh={class:"text-2xl font-bold tracking-tight text-gray-900 sm:text-3xl dark:text-gray-100"},Dh={class:"mt-4 flex flex-col gap-5 sm:flex-row sm:items-start sm:gap-24"},Lh={class:"min-w-0 flex flex-col gap-2 text-sm font-medium text-gray-500 dark:text-gray-400"},Eh={class:"flex items-center gap-2"},Vh={class:"flex h-6 w-6 shrink-0 items-center justify-center"},Fh={class:"whitespace-nowrap"},Rh={key:0,class:"flex items-center gap-2"},Oh={class:"flex h-6 w-6 shrink-0 items-center justify-center"},Bh={class:"font-mono text-xs opacity-90 whitespace-nowrap"},Ph={class:"grid grid-cols-2 gap-x-8 gap-y-4 sm:flex sm:shrink-0 sm:gap-6"},Nh={class:"flex flex-col gap-1 text-center"},jh={class:"text-2xl font-black font-mono tracking-tight text-gray-900 dark:text-white"},Uh={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},Wh={class:"flex flex-col gap-1 text-center"},Kh={class:"text-2xl font-black font-mono tracking-tight text-gray-900 dark:text-white"},Hh={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},Yh={class:"flex flex-col gap-1 text-center"},Qh={class:"text-2xl font-black font-mono tracking-tight text-gray-900 dark:text-white"},Gh={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},Jh={class:"flex flex-col gap-1 text-center"},Xh={class:"text-2xl font-black font-mono tracking-tight text-gray-900 dark:text-white"},Zh={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},ey={class:"relative z-10 px-5 pb-2 sm:px-8"},ty={class:"overflow-x-auto overflow-y-hidden scrollbar-hide py-1"},Gb=le({__name:"OverviewIdentityCard",props:{session:{},dailyActivity:{},messageTypes:{},hourlyActivity:{},timeRange:{},filteredMessageCount:{},filteredMemberCount:{},timeFilter:{},capturable:{type:Boolean,default:!0}},setup(u){ea([ms,vn,ps,$a,gs,ta]);const{t:n,locale:t}=Ce(),s=Gt(),o=u,{weekdayActivity:i}=gh({sessionId:()=>o.session.id,timeFilter:()=>o.timeFilter}),{durationDays:l,displayMessageCount:r,dailyAvgMessages:m,imageCount:y,peakHour:h,peakWeekday:S,weekdayNames:x,weekdayVsWeekend:I,peakDay:w,activeDays:v,totalDays:_,activeRate:k,lateNightChat:C,maxConsecutiveDays:$}=ph(o,i),g=A(null);let b=null;const F=q(()=>ws(o.timeRange,o.timeFilter)),E=q(()=>F.value?bn(F.value.start,F.value.end,"YYYY/MM/DD"):""),z=q(()=>{const P=mh(F.value);if(P)return P;const fe=(X=>X.toISOString().slice(0,10))(new Date);return[fe,fe]}),T=q(()=>{const[P,R]=z.value,J=new Date(P+"T00:00:00Z"),fe=new Date(R+"T00:00:00Z"),X=new Map;o.dailyActivity.filter(O=>O.date>=P&&O.date<=R).forEach(O=>X.set(O.date,O.messageCount));const W=[],ae=new Date(J);for(;ae<=fe;){const O=ae.toISOString().slice(0,10),ue=X.get(O)||0;W.push({value:[O,ue],itemStyle:ue===0?{color:N.value}:void 0}),ae.setUTCDate(ae.getUTCDate()+1)}return W}),M=q(()=>o.dailyActivity.length===0?10:Math.max(...o.dailyActivity.map(P=>P.messageCount),1)),L={light:["#fce4ec","#f8a4b8","#f06292","#e91e63"],dark:["rgba(238, 69, 103, 0.15)","rgba(238, 69, 103, 0.45)","rgba(238, 69, 103, 0.75)","rgba(238, 69, 103, 1)"]},N=q(()=>s.value?"rgba(255, 255, 255, 0.04)":"#ebedf0"),U=q(()=>({tooltip:{trigger:"item",formatter:P=>{const R=P.value[0],J=P.value[1];return`${R}<br/>${n("views.message.calendarTooltipMessages")}: ${J}`}},visualMap:{min:1,max:M.value,calculable:!1,orient:"horizontal",left:"center",bottom:0,itemWidth:10,itemHeight:80,text:[`${M.value}`,"1"],inRange:{color:s.value?L.dark:L.light},textStyle:{color:s.value?"#8b949e":"#6b7280",fontSize:10},show:!0},calendar:{top:20,left:30,cellSize:[13,13],range:z.value,itemStyle:{borderWidth:0,color:"transparent"},yearLabel:{show:!1},monthLabel:{show:!0,color:s.value?"#8b949e":"#6b7280",fontSize:10,nameMap:[n("common.month.jan"),n("common.month.feb"),n("common.month.mar"),n("common.month.apr"),n("common.month.may"),n("common.month.jun"),n("common.month.jul"),n("common.month.aug"),n("common.month.sep"),n("common.month.oct"),n("common.month.nov"),n("common.month.dec")]},dayLabel:{show:!0,firstDay:1,color:s.value?"#8b949e":"#9ca3af",fontSize:10,nameMap:[n("common.weekday.sun"),n("common.weekday.mon"),n("common.weekday.tue"),n("common.weekday.wed"),n("common.weekday.thu"),n("common.weekday.fri"),n("common.weekday.sat")]},splitLine:{show:!1}},series:[{type:"custom",coordinateSystem:"calendar",data:T.value,renderItem:(P,R)=>{const J=R.coord(R.value(0)),fe=P.coordSys.cellWidth,X=P.coordSys.cellHeight,W=Math.min(fe,X)-3;return{type:"rect",shape:{x:J[0]-W/2,y:J[1]-W/2,width:W,height:W,r:3},style:{fill:R.visual("color")}}},itemStyle:{borderColor:s.value?"transparent":"rgba(0,0,0,0.02)",borderWidth:1}}]}));function H(){g.value&&(b=aa(g.value,void 0,{renderer:"canvas"}),b.setOption({backgroundColor:"transparent",...U.value}))}function ie(){b&&b.setOption({backgroundColor:"transparent",...U.value},{notMerge:!0})}function se(){b?.resize()}return me([()=>o.dailyActivity,t,z],()=>ie()),me(s,()=>{b?.dispose(),H()}),De(()=>{H(),window.addEventListener("resize",se)}),Je(()=>{window.removeEventListener("resize",se),b?.dispose()}),(P,R)=>{const J=Se;return d(),B(e(sa),{capturable:u.capturable},{default:D(()=>[a("div",qh,[a("h2",zh,c(u.session.name),1),a("div",Dh,[a("div",Lh,[a("div",Eh,[a("div",Vh,[u.session.type==="group"?(d(),B(J,{key:0,name:"i-heroicons-user-group",class:"h-4 w-4 opacity-70"})):(d(),B(J,{key:1,name:"i-heroicons-user",class:"h-4 w-4 opacity-70"}))]),a("span",Fh,c(u.session.platform.toUpperCase())+" · "+c(u.session.type==="private"?e(n)("analysis.overview.identity.privateChat"):e(n)("analysis.overview.identity.groupChat")),1)]),E.value?(d(),p("div",Rh,[a("div",Oh,[f(J,{name:"i-heroicons-calendar",class:"h-4 w-4 opacity-70"})]),a("span",Bh,c(E.value),1)])):V("",!0)]),a("div",Ph,[a("div",Nh,[a("span",jh,c(e(r).toLocaleString()),1),a("span",Uh,c(e(n)("analysis.overview.identity.totalMessages")),1)]),a("div",Wh,[a("span",Kh,c(e(l).toLocaleString()),1),a("span",Hh,c(e(n)("analysis.overview.identity.durationDays")),1)]),a("div",Yh,[a("span",Qh,c(e(v).toLocaleString()),1),a("span",Gh,c(e(n)("analysis.overview.identity.activeDays")),1)]),a("div",Jh,[a("span",Xh,c(e(m).toLocaleString()),1),a("span",Zh,c(e(n)("analysis.overview.identity.dailyAvgMessages")),1)])])])]),a("div",ey,[R[0]||(R[0]=a("div",{class:"mb-2 flex items-center justify-between"},[a("span",{class:"text-[10px] font-bold uppercase tracking-widest text-gray-400 dark:text-gray-500"}," Activity Heatmap ")],-1)),a("div",ty,[a("div",{ref_key:"chartRef",ref:g,class:"h-[140px] min-w-[700px] lg:w-full"},null,512)])]),f(Ah,{flat:"","daily-avg-messages":e(m),"duration-days":e(l),"image-count":e(y),"peak-hour":e(h),"peak-weekday":e(S),"weekday-names":e(x),"weekday-vs-weekend":e(I),"peak-day":e(w),"active-days":e(v),"total-days":e(_),"active-rate":e(k),"late-night-count":e(C).count,"late-night-ratio":e(C).ratio,"max-consecutive-days":e($)},null,8,["daily-avg-messages","duration-days","image-count","peak-hour","peak-weekday","weekday-names","weekday-vs-weekend","peak-day","active-days","total-days","active-rate","late-night-count","late-night-ratio","max-consecutive-days"])]),_:1},8,["capturable"])}}}),ay={class:"p-3 sm:p-5"},Jb=le({__name:"DailyTrendCard",props:{dailyActivity:{},dailyChartData:{},capturable:{type:Boolean,default:!0}},setup(u){const{t:n}=Ce();return(t,s)=>u.dailyActivity.length>0?(d(),B(e(Qe),{key:0,title:e(n)("analysis.overview.dailyTrend.title"),capturable:u.capturable,"show-divider":!1},{default:D(()=>[a("div",ay,[f(e(wn),{data:u.dailyChartData,height:288},null,8,["data"])])]),_:1},8,["title","capturable"])):V("",!0)}}),sy={slots:{root:["relative inline-flex items-center","flex-wrap"],base:["rounded-md","transition-colors"],leading:"absolute inset-y-0 start-0 flex items-center",leadingIcon:"shrink-0 text-dimmed",leadingAvatar:"shrink-0",leadingAvatarSize:"",trailing:"absolute inset-y-0 end-0 flex items-center",trailingIcon:"shrink-0 text-dimmed",item:'px-1.5 py-0.5 rounded-sm font-medium inline-flex items-center gap-0.5 ring ring-inset ring-accented bg-elevated text-default data-disabled:cursor-not-allowed data-disabled:opacity-75 wrap-anywhere data-[state="active"]:bg-accented',itemText:"",itemDelete:["inline-flex items-center rounded-xs text-dimmed hover:text-default hover:bg-accented/75 disabled:pointer-events-none","transition-colors"],itemDeleteIcon:"shrink-0",input:"flex-1 border-0 bg-transparent placeholder:text-dimmed focus:outline-none disabled:cursor-not-allowed disabled:opacity-75"},variants:{fieldGroup:{horizontal:"not-only:first:rounded-e-none not-only:last:rounded-s-none not-last:not-first:rounded-none focus-visible:z-[1]",vertical:"not-only:first:rounded-b-none not-only:last:rounded-t-none not-last:not-first:rounded-none focus-visible:z-[1]"},size:{xs:{base:"px-2 py-1 text-sm/4 gap-1",leading:"ps-2",trailing:"pe-2",leadingIcon:"size-4",leadingAvatarSize:"3xs",trailingIcon:"size-4",item:"text-[10px]/3",itemDeleteIcon:"size-3"},sm:{base:"px-2.5 py-1.5 text-sm/4 gap-1.5",leading:"ps-2.5",trailing:"pe-2.5",leadingIcon:"size-4",leadingAvatarSize:"3xs",trailingIcon:"size-4",item:"text-[10px]/3",itemDeleteIcon:"size-3"},md:{base:"px-2.5 py-1.5 text-base/5 gap-1.5",leading:"ps-2.5",trailing:"pe-2.5",leadingIcon:"size-5",leadingAvatarSize:"2xs",trailingIcon:"size-5",item:"text-xs",itemDeleteIcon:"size-3.5"},lg:{base:"px-3 py-2 text-base/5 gap-2",leading:"ps-3",trailing:"pe-3",leadingIcon:"size-5",leadingAvatarSize:"2xs",trailingIcon:"size-5",item:"text-xs",itemDeleteIcon:"size-3.5"},xl:{base:"px-3 py-2 text-base gap-2",leading:"ps-3",trailing:"pe-3",leadingIcon:"size-6",leadingAvatarSize:"xs",trailingIcon:"size-6",item:"text-sm",itemDeleteIcon:"size-4"}},variant:{outline:"text-highlighted bg-default ring ring-inset ring-accented",soft:"text-highlighted bg-elevated/50 hover:bg-elevated has-focus:bg-elevated disabled:bg-elevated/50",subtle:"text-highlighted bg-elevated ring ring-inset ring-accented",ghost:"text-highlighted bg-transparent hover:bg-elevated has-focus:bg-elevated disabled:bg-transparent dark:disabled:bg-transparent",none:"text-highlighted bg-transparent has-focus:outline-none"},color:{primary:"",secondary:"",success:"",info:"",warning:"",error:"",neutral:""},leading:{true:""},trailing:{true:""},loading:{true:""},highlight:{true:""},fixed:{false:""},type:{file:"file:me-1.5 file:font-medium file:text-muted file:outline-none"}},compoundVariants:[{color:"primary",variant:["outline","subtle"],class:"outline-primary/25 has-focus-visible:outline-3 has-focus-visible:ring-primary"},{color:"secondary",variant:["outline","subtle"],class:"outline-secondary/25 has-focus-visible:outline-3 has-focus-visible:ring-secondary"},{color:"success",variant:["outline","subtle"],class:"outline-success/25 has-focus-visible:outline-3 has-focus-visible:ring-success"},{color:"info",variant:["outline","subtle"],class:"outline-info/25 has-focus-visible:outline-3 has-focus-visible:ring-info"},{color:"warning",variant:["outline","subtle"],class:"outline-warning/25 has-focus-visible:outline-3 has-focus-visible:ring-warning"},{color:"error",variant:["outline","subtle"],class:"outline-error/25 has-focus-visible:outline-3 has-focus-visible:ring-error"},{color:"primary",variant:["soft","ghost"],class:"outline-primary/25 has-focus-visible:outline-3"},{color:"secondary",variant:["soft","ghost"],class:"outline-secondary/25 has-focus-visible:outline-3"},{color:"success",variant:["soft","ghost"],class:"outline-success/25 has-focus-visible:outline-3"},{color:"info",variant:["soft","ghost"],class:"outline-info/25 has-focus-visible:outline-3"},{color:"warning",variant:["soft","ghost"],class:"outline-warning/25 has-focus-visible:outline-3"},{color:"error",variant:["soft","ghost"],class:"outline-error/25 has-focus-visible:outline-3"},{color:"primary",highlight:!0,class:"ring ring-inset ring-primary"},{color:"secondary",highlight:!0,class:"ring ring-inset ring-secondary"},{color:"success",highlight:!0,class:"ring ring-inset ring-success"},{color:"info",highlight:!0,class:"ring ring-inset ring-info"},{color:"warning",highlight:!0,class:"ring ring-inset ring-warning"},{color:"error",highlight:!0,class:"ring ring-inset ring-error"},{color:"neutral",variant:["outline","subtle"],class:"outline-inverted/25 has-focus-visible:outline-3 has-focus-visible:ring-inverted"},{color:"neutral",variant:["soft","ghost"],class:"outline-inverted/25 has-focus-visible:outline-3"},{color:"neutral",highlight:!0,class:"ring ring-inset ring-inverted"},{leading:!0,size:"xs",class:"ps-7"},{leading:!0,size:"sm",class:"ps-8"},{leading:!0,size:"md",class:"ps-9"},{leading:!0,size:"lg",class:"ps-10"},{leading:!0,size:"xl",class:"ps-11"},{trailing:!0,size:"xs",class:"pe-7"},{trailing:!0,size:"sm",class:"pe-8"},{trailing:!0,size:"md",class:"pe-9"},{trailing:!0,size:"lg",class:"pe-10"},{trailing:!0,size:"xl",class:"pe-11"},{loading:!0,leading:!0,class:{leadingIcon:"animate-spin"}},{loading:!0,leading:!1,trailing:!0,class:{trailingIcon:"animate-spin"}},{fixed:!1,size:"xs",class:"md:text-xs"},{fixed:!1,size:"sm",class:"md:text-xs"},{fixed:!1,size:"md",class:"md:text-sm"},{fixed:!1,size:"lg",class:"md:text-sm"}],defaultVariants:{size:"md",color:"primary",variant:"outline"}},oy=Object.assign({inheritAttrs:!1},{__name:"InputTags",props:{as:{type:null,required:!1},placeholder:{type:String,required:!1},maxLength:{type:Number,required:!1},color:{type:null,required:!1},variant:{type:null,required:!1},size:{type:null,required:!1},autofocus:{type:Boolean,required:!1},autofocusDelay:{type:Number,required:!1,default:0},deleteIcon:{type:null,required:!1},highlight:{type:Boolean,required:!1},fixed:{type:Boolean,required:!1},class:{type:null,required:!1},ui:{type:Object,required:!1},modelValue:{type:[Array,null],required:!1},defaultValue:{type:Array,required:!1},addOnPaste:{type:Boolean,required:!1},addOnTab:{type:Boolean,required:!1},addOnBlur:{type:Boolean,required:!1},duplicate:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},delimiter:{type:null,required:!1},max:{type:Number,required:!1},id:{type:String,required:!1},convertValue:{type:Function,required:!1},displayValue:{type:Function,required:!1},name:{type:String,required:!1},required:{type:Boolean,required:!1},icon:{type:null,required:!1},avatar:{type:Object,required:!1},leading:{type:Boolean,required:!1},leadingIcon:{type:null,required:!1},trailing:{type:Boolean,required:!1},trailingIcon:{type:null,required:!1},loading:{type:Boolean,required:!1},loadingIcon:{type:null,required:!1}},emits:["change","blur","focus","update:modelValue","invalid","addTag","removeTag"],setup(u,{expose:n,emit:t}){const s=u,o=t,i=ya(),l=es("inputTags",s),r=ns(),m=ts(as(l,"as","addOnPaste","addOnTab","addOnBlur","duplicate","delimiter","max","convertValue","displayValue","required"),o),{emitFormBlur:y,emitFormFocus:h,emitFormChange:S,emitFormInput:x,size:I,color:w,id:v,name:_,highlight:k,disabled:C,ariaAttrs:$}=ss(s),{orientation:g,size:b}=os(s),{isLeading:F,isTrailing:E,leadingIconName:z,trailingIconName:T}=ls(l),M=q(()=>b.value||I.value),L=q(()=>Wt({extend:Wt(sy),...r.ui?.inputTags||{}})({color:w.value??l.color,variant:l.variant,size:M?.value??l.size,loading:l.loading,highlight:k.value??l.highlight,fixed:l.fixed,leading:F.value||!!l.avatar||!!i.leading,trailing:E.value||!!i.trailing,fieldGroup:g.value})),N=Pt("inputRef");function U(){l.autofocus&&N.value?.$el?.focus()}De(()=>{setTimeout(()=>{U()},l.autofocusDelay)});function H(P){if(is(l.modelValue)===P)return;const R=new Event("change",{target:{value:P}});o("change",R),S(),x()}function ie(P){o("blur",P),y()}function se(P){o("focus",P),h()}return n({inputRef:Fe(()=>N.value?.$el)}),(P,R)=>(d(),B(e(Gl),Ae({id:e(v),"model-value":e(l).modelValue,"default-value":e(l).defaultValue,"data-slot":"root",class:L.value.root({class:[L.value.base({class:e(l).ui?.base}),e(l).ui?.root,e(l).class]})},e(m),{name:e(_),disabled:e(C),"onUpdate:modelValue":H}),{default:D(({modelValue:J})=>[(d(!0),p(ne,null,he(J,(fe,X)=>(d(),B(e(ti),{key:X,value:fe,"data-slot":"item",class:Z(L.value.item({class:[e(l).ui?.item]}))},{default:D(()=>[f(e(ni),{"data-slot":"itemText",class:Z(L.value.itemText({class:[e(l).ui?.itemText]}))},{default:D(()=>[i["item-text"]?ve(P.$slots,"item-text",{key:0,item:fe,index:X,ui:L.value}):V("",!0)]),_:2},1032,["class"]),f(e(si),{"data-slot":"itemDelete",class:Z(L.value.itemDelete({class:[e(l).ui?.itemDelete]})),disabled:e(C)},{default:D(()=>[ve(P.$slots,"item-delete",{item:fe,index:X,ui:L.value},()=>[f(Se,{name:e(l).deleteIcon||e(r).ui.icons.close,"data-slot":"itemDeleteIcon",class:Z(L.value.itemDeleteIcon({class:[e(l).ui?.itemDeleteIcon]}))},null,8,["name","class"])])]),_:2},1032,["class","disabled"])]),_:2},1032,["value","class"]))),128)),f(e(Xl),Ae({ref_key:"inputRef",ref:N},{...P.$attrs,...e($)},{placeholder:e(l).placeholder,"max-length":e(l).maxLength,"data-slot":"input",class:L.value.input({class:e(l).ui?.input}),onBlur:ie,onFocus:se}),null,16,["placeholder","max-length","class"]),ve(P.$slots,"default",{ui:L.value}),e(F)||e(l).avatar||i.leading?(d(),p("span",{key:0,"data-slot":"leading",class:Z(L.value.leading({class:e(l).ui?.leading}))},[ve(P.$slots,"leading",{ui:L.value},()=>[e(F)&&e(z)?(d(),B(Se,{key:0,name:e(z),"data-slot":"leadingIcon",class:Z(L.value.leadingIcon({class:e(l).ui?.leadingIcon}))},null,8,["name","class"])):e(l).avatar?(d(),B(pa,Ae({key:1,size:e(l).ui?.leadingAvatarSize||L.value.leadingAvatarSize()},e(l).avatar,{"data-slot":"leadingAvatar",class:L.value.leadingAvatar({class:e(l).ui?.leadingAvatar})}),null,16,["size","class"])):V("",!0)])],2)):V("",!0),e(E)||i.trailing?(d(),p("span",{key:1,"data-slot":"trailing",class:Z(L.value.trailing({class:e(l).ui?.trailing}))},[ve(P.$slots,"trailing",{ui:L.value},()=>[e(T)?(d(),B(Se,{key:0,name:e(T),"data-slot":"trailingIcon",class:Z(L.value.trailingIcon({class:e(l).ui?.trailingIcon}))},null,8,["name","class"])):V("",!0)])],2)):V("",!0)]),_:3},16,["id","model-value","default-value","class","name","disabled"]))}}),ny={class:"flex items-center justify-between gap-3"},ly={class:"flex items-center gap-2"},iy={class:"text-sm font-medium text-gray-900 dark:text-white"},ry={class:"text-xs text-gray-500 dark:text-gray-400"},uy=le({__name:"OwnerEntryCard",props:{sessionId:{},members:{},chatType:{}},setup(u){const{t:n}=Ce(),t=Ro(),s=u,o=A(!1);function i(m){return m.groupNickname||m.accountName||m.platformId}const l=q(()=>{const m=t.currentSession?.ownerId;return m&&s.members.find(y=>y.platformId===m)||null}),r=q(()=>l.value?i(l.value):t.currentSession?.ownerId??"");return(m,y)=>{const h=Se,S=Ne;return d(),B(e(rt),{class:"w-150 p-3"},{default:D(()=>[a("div",ny,[a("div",ly,[a("div",{class:Z(["flex h-8 w-8 items-center justify-center rounded-full bg-linear-to-br",u.chatType==="group"?"from-pink-400 to-pink-600":"from-purple-400 to-purple-600"])},[f(h,{name:"i-heroicons-user",class:"h-4 w-4 text-white"})],2),a("div",null,[a("h3",iy,c(r.value?e(n)("members.ownerPrompt.currentOwner",{name:r.value}):e(n)("members.ownerPrompt.choose")),1),a("p",ry,c(e(n)("members.ownerPrompt.helper")),1)])]),f(S,{size:"sm",variant:r.value?"outline":"solid",color:"primary",onClick:y[0]||(y[0]=x=>o.value=!0)},{default:D(()=>[ee(c(r.value?e(n)("members.ownerPrompt.change"):e(n)("members.ownerPrompt.choose")),1)]),_:1},8,["variant"])]),f(Cn,{modelValue:o.value,"onUpdate:modelValue":y[1]||(y[1]=x=>o.value=x),"session-id":u.sessionId,"chat-type":u.chatType},null,8,["modelValue","session-id","chat-type"])]),_:1})}}}),dy={key:0,class:"mb-6"},cy={class:"flex items-center gap-3"},my={class:"text-xl font-bold text-gray-900 dark:text-white"},py={class:"text-sm text-gray-500 dark:text-gray-400"},gy={class:"mb-4 flex flex-wrap items-center justify-between gap-3"},fy={key:0,class:"flex items-center gap-2"},vy={class:"text-xs text-gray-500 dark:text-gray-400"},hy={key:0,class:"flex flex-1 items-center justify-center"},yy={key:1,class:"flex flex-1 flex-col items-center justify-center gap-3"},xy={class:"text-sm text-gray-500 dark:text-gray-400"},by={key:2,class:"flex flex-1 flex-col items-center justify-center"},_y={class:"text-gray-500 dark:text-gray-400"},ky={key:3,class:"min-h-0 flex-1 overflow-x-auto overflow-y-hidden"},wy={key:0,"aria-hidden":"true"},Cy={class:"flex shrink-0 flex-col leading-none"},$y={class:"flex shrink-0 flex-col leading-none"},Sy={class:"flex shrink-0 flex-col leading-none"},Iy={class:"inline-flex items-center gap-1.5"},Ty={class:"text-right"},My=["data-index","onClick"],Ay={key:0,class:"flex justify-center"},qy={class:"flex min-w-0 items-center gap-2.5"},zy={class:"min-w-0"},Dy=["title"],Ly=["title"],Ey=["title"],Vy={class:"text-right font-mono text-sm font-semibold tabular-nums text-gray-900 dark:text-white"},Fy=["title"],Ry={class:"flex justify-end gap-1"},Oy={class:"p-6 text-center"},By={class:"mx-auto mb-4 flex h-14 w-14 items-center justify-center rounded-full bg-red-100 dark:bg-red-900/30"},Py={class:"mb-2 text-lg font-semibold text-gray-900 dark:text-white"},Ny={class:"mb-6 text-sm text-gray-500 dark:text-gray-400"},jy={class:"flex justify-center gap-3"},Uy={class:"p-6 text-center"},Wy={class:"mx-auto mb-4 flex h-14 w-14 items-center justify-center rounded-full bg-red-100 dark:bg-red-900/30"},Ky={class:"mb-2 text-lg font-semibold text-gray-900 dark:text-white"},Hy={class:"mb-6 text-sm text-gray-500 dark:text-gray-400"},Yy={class:"flex justify-center gap-3"},Qy={class:"p-6"},Gy={class:"mb-4 flex items-center gap-3"},Jy={class:"flex h-10 w-10 items-center justify-center rounded-full bg-amber-100 dark:bg-amber-900/30"},Xy={class:"text-lg font-semibold text-gray-900 dark:text-white"},Zy={class:"mb-2 text-sm text-gray-600 dark:text-gray-400"},ex={class:"mb-6 text-xs text-amber-700 dark:text-amber-300"},tx={class:"flex justify-end gap-2"},ax=64,sx=le({__name:"MemberList",props:{sessionId:{},showHeader:{type:Boolean,default:!0},chatType:{default:"group"}},emits:["data-changed"],setup(u,{emit:n}){const{t}=Ce(),s=Pe(),o=Dt(),i=u,l=n,r=A([]),m=A(!1),y=A(!1),h=A(""),S=q(()=>Jo(i.chatType,r.value.length)),x=q(()=>i.chatType==="group"?"":S.value?"member-table-grid--private":"member-table-grid--private-without-selection"),I=A(null),w=A(!1),v=A(!1),_=A(!1),k=A(!1),C=A(!1),{sortState:$,toggleSort:g,resetSort:b,isSortActive:F}=$n({initialState:{field:"messageCount",direction:"desc"}}),E=A(new Set);let z=0;function T(Q,oe){const Y=oe instanceof Error?oe:new Error(String(oe));console.error(Q,Y),No(`${Q} ${Y.message}`,Y.stack)}function M(Q){return Q.groupNickname||Q.accountName||Q.platformId}function L(Q){return M(Q).slice(0,1)}function N(Q){o.openChatRecordDrawer({sessionId:i.sessionId,memberId:Q.id,memberName:M(Q)})}const U=q(()=>Xo(r.value,h.value,$.value)),{selectedIds:H,setSelection:ie,clearSelection:se,handleRowClick:P,handleRowMouseDown:R}=Sn({rows:U,getRowId:Q=>Q.id}),J=q(()=>r.value.filter(Q=>H.value.has(Q.id))),fe=q(()=>J.value.length===2),X=q(()=>J.value.reduce((Q,oe)=>Q+oe.messageCount,0));function W(Q,oe,Y){S.value&&P(Q,oe,Y)}function ae(Q){S.value&&R(Q)}const O=q(()=>{if(J.value.length!==2)return null;const[Q,oe]=J.value;return oe.messageCount>Q.messageCount||oe.messageCount===Q.messageCount&&oe.id<Q.id?{primary:oe,secondary:Q}:{primary:Q,secondary:oe}});function ue(Q,oe){return F(Q,oe)?"text-primary-500 dark:text-primary-400":"text-gray-300 dark:text-gray-600"}const we=A(null),xe=Oo(q(()=>({count:U.value.length,getScrollElement:()=>we.value,estimateSize:()=>ax,overscan:8,getItemKey:Q=>U.value[Q]?.id??Q}))),te=q(()=>xe.value.getVirtualItems().map(Q=>({virtualItem:Q,member:U.value[Q.index]}))),K=q(()=>xe.value.getTotalSize());function j(Q){Q instanceof HTMLElement&&xe.value.measureElement(Q)}async function de(){await Re(),we.value?.scrollTo({top:0}),xe.value.measure()}async function be(){const Q=i.sessionId;if(!Q)return;const oe=++z;m.value=!0,y.value=!1;try{const Y=await s.getMembers(Q);if(oe!==z||Q!==i.sessionId)return;r.value=Y,await Re(),xe.value.measure()}catch(Y){oe===z&&(y.value=!0),T("Failed to load member list:",Y)}finally{oe===z&&(m.value=!1)}}function ke(Q,oe){const Y=new Set(E.value);oe?Y.add(Q):Y.delete(Q),E.value=Y}async function ze(Q,oe){const Y=i.sessionId,Ie=JSON.parse(JSON.stringify(oe)),G=JSON.stringify(Q.aliases),pe=JSON.stringify(Ie);if(G!==pe){ke(Q.id,!0);try{if(await s.updateMemberAliases(Y,Q.id,Ie)&&Y===i.sessionId){const Ye=r.value.findIndex(We=>We.id===Q.id);Ye!==-1&&(r.value[Ye]={...r.value[Ye],aliases:Ie},await Re(),xe.value.measure())}}catch($e){T("Failed to save member aliases:",$e)}finally{ke(Q.id,!1)}}}function je(Q){I.value=Q}function qe(){I.value=null}async function He(){if(I.value){w.value=!0;try{const Q=I.value.id;if(await s.deleteMember(i.sessionId,Q)){const Y=new Set(H.value);Y.delete(Q),ie(Y),await be(),l("data-changed")}}catch(Q){T("Failed to delete member:",Q)}finally{w.value=!1,I.value=null}}}function Ue(){H.value.size!==0&&(v.value=!0)}async function Te(){const Q=i.sessionId,oe=Array.from(H.value);if(oe.length!==0){_.value=!0;try{await s.deleteMembers(Q,oe)&&Q===i.sessionId&&(v.value=!1,se(),await be(),l("data-changed"))}catch(Y){T("Failed to delete selected members:",Y)}finally{_.value=!1}}}function re(){fe.value&&(k.value=!0)}async function ce(){if(O.value){C.value=!0;try{await s.mergeMembers(i.sessionId,O.value.primary.id,O.value.secondary.id)&&(k.value=!1,se(),await be(),l("data-changed"))}catch(Q){T("Failed to merge members:",Q)}finally{C.value=!1}}}return me([h,$],de),me(S,Q=>{Q||se()}),me(()=>i.sessionId,()=>{z+=1,r.value=[],y.value=!1,E.value=new Set,h.value="",b(),se(),de(),be()},{immediate:!0}),Je(()=>{z+=1}),(Q,oe)=>{const Y=Ne,Ie=zt,G=Se,pe=Xt,$e=Ca,Ye=oy,We=Xe;return d(),p("div",{class:Z(["main-content",i.showHeader?"max-w-5xl p-6":"flex h-full max-w-none flex-col overflow-hidden p-4"])},[i.showHeader?(d(),p("div",dy,[a("div",cy,[a("div",null,[a("h2",my,c(e(t)(i.chatType==="private"?"members.private.title":"members.list.title")),1),a("p",py,c(e(t)(i.chatType==="private"?"members.private.description":"members.list.description",{count:r.value.length})),1)])])])):V("",!0),f(uy,{class:"mb-6","session-id":u.sessionId,members:r.value,"chat-type":i.chatType},null,8,["session-id","members","chat-type"]),a("div",gy,[f(Ie,{modelValue:h.value,"onUpdate:modelValue":oe[1]||(oe[1]=Le=>h.value=Le),placeholder:e(t)("members.list.searchPlaceholder"),icon:"i-heroicons-magnifying-glass",class:"w-full md:w-100"},Bo({_:2},[h.value?{name:"trailing",fn:D(()=>[f(Y,{icon:"i-heroicons-x-mark",variant:"link",color:"neutral",size:"xs",onClick:oe[0]||(oe[0]=Le=>h.value="")})]),key:"0"}:void 0]),1032,["modelValue","placeholder"]),S.value?(d(),p("div",fy,[m.value&&r.value.length>0?(d(),B(G,{key:0,name:"i-heroicons-arrow-path",class:"h-4 w-4 animate-spin text-primary-500"})):V("",!0),a("span",vy,c(e(t)("members.list.selectedCount",{count:e(H).size})),1),f(Y,{icon:"i-heroicons-link",size:"sm",color:"primary",disabled:!fe.value,onClick:re},{default:D(()=>[ee(c(e(t)("members.list.mergeSelected")),1)]),_:1},8,["disabled"]),f(Y,{icon:"i-heroicons-trash",size:"sm",color:"error",variant:"outline",disabled:e(H).size===0,onClick:Ue},{default:D(()=>[ee(c(e(t)("members.list.deleteSelected")),1)]),_:1},8,["disabled"])])):V("",!0)]),a("div",{class:Z(["flex min-h-[240px] flex-col overflow-hidden rounded-lg border border-gray-200/60 bg-card-bg dark:border-white/5 dark:bg-card-dark",i.showHeader?"h-[500px]":"min-h-0 flex-1"])},[m.value&&r.value.length===0?(d(),p("div",hy,[f(G,{name:"i-heroicons-arrow-path",class:"h-8 w-8 animate-spin text-primary-500"})])):y.value&&r.value.length===0?(d(),p("div",yy,[f(G,{name:"i-heroicons-exclamation-circle",class:"h-10 w-10 text-red-400"}),a("p",xy,c(e(t)("members.list.loadError")),1),f(Y,{size:"sm",variant:"outline",icon:"i-heroicons-arrow-path",onClick:be},{default:D(()=>[ee(c(e(t)("common.retry")),1)]),_:1})])):U.value.length===0?(d(),p("div",by,[f(G,{name:"i-heroicons-user-group",class:"mb-3 h-12 w-12 text-gray-300 dark:text-gray-600"}),a("p",_y,c(h.value?e(t)("members.list.noMatch"):e(t)("members.list.empty")),1)])):(d(),p("div",ky,[a("div",{class:Z(["flex h-full flex-col",i.chatType==="private"?"min-w-[920px]":"min-w-[1120px]"])},[a("div",{class:Z(["member-table-grid shrink-0 border-b border-gray-200 bg-gray-50 px-3 py-2 text-xs font-medium text-gray-500 dark:border-white/5 dark:bg-page-dark/80 dark:text-gray-400",x.value])},[S.value?(d(),p("span",wy)):V("",!0),a("span",null,c(e(t)("members.list.table.accountName")),1),i.chatType==="group"?(d(),p("button",{key:1,type:"button",class:"flex items-center justify-start gap-1.5 text-left transition-colors hover:text-gray-700 dark:hover:text-gray-200",onClick:oe[2]||(oe[2]=Le=>e(g)("groupNickname"))},[ee(c(e(t)("members.list.table.groupNickname"))+" ",1),a("span",Cy,[f(G,{name:"i-heroicons-chevron-up",class:Z(["h-2.5 w-2.5",ue("groupNickname","asc")])},null,8,["class"]),f(G,{name:"i-heroicons-chevron-down",class:Z(["-mt-0.5 h-2.5 w-2.5",ue("groupNickname","desc")])},null,8,["class"])])])):V("",!0),a("button",{type:"button",class:"flex items-center justify-end gap-1.5 text-right transition-colors hover:text-gray-700 dark:hover:text-gray-200",onClick:oe[3]||(oe[3]=Le=>e(g)("messageCount"))},[ee(c(e(t)("members.list.table.messageCount"))+" ",1),a("span",$y,[f(G,{name:"i-heroicons-chevron-up",class:Z(["h-2.5 w-2.5",ue("messageCount","asc")])},null,8,["class"]),f(G,{name:"i-heroicons-chevron-down",class:Z(["-mt-0.5 h-2.5 w-2.5",ue("messageCount","desc")])},null,8,["class"])])]),a("button",{type:"button",class:"flex items-center justify-end gap-1.5 text-right transition-colors hover:text-gray-700 dark:hover:text-gray-200",onClick:oe[4]||(oe[4]=Le=>e(g)("lastMessageTs"))},[ee(c(e(t)("members.list.table.lastMessageTime"))+" ",1),a("span",Sy,[f(G,{name:"i-heroicons-chevron-up",class:Z(["h-2.5 w-2.5",ue("lastMessageTs","asc")])},null,8,["class"]),f(G,{name:"i-heroicons-chevron-down",class:Z(["-mt-0.5 h-2.5 w-2.5",ue("lastMessageTs","desc")])},null,8,["class"])])]),a("span",Iy,[a("span",null,c(e(t)("members.list.table.customAlias")),1),f(pe,{text:e(t)("members.list.tip"),popper:{placement:"top"}},{default:D(()=>[f(G,{name:"i-heroicons-question-mark-circle",class:"h-4 w-4 text-gray-400 dark:text-gray-500"})]),_:1},8,["text"])]),a("span",Ty,c(e(t)("members.list.table.actions")),1)],2),a("div",{ref_key:"listScrollRef",ref:we,class:"min-h-0 flex-1 overflow-y-auto"},[a("div",{class:"relative",style:et({height:`${K.value}px`})},[(d(!0),p(ne,null,he(te.value,({virtualItem:Le,member:Me})=>(d(),p("div",{key:String(Le.key),ref_for:!0,ref:j,"data-index":Le.index,class:Z(["member-table-grid absolute left-0 top-0 w-full min-h-16 border-b border-gray-100/80 px-3 py-2 transition-colors hover:bg-gray-50 dark:border-white/5 dark:hover:bg-gray-800/30",[x.value,S.value?"cursor-pointer":"",S.value&&e(H).has(Me.id)?"bg-primary-50/70 dark:bg-primary-950/20":""]]),style:et({transform:`translateY(${Le.start}px)`}),onMousedown:ae,onClick:Ge=>W(Le.index,Me.id,Ge)},[S.value?(d(),p("div",Ay,[f($e,{"model-value":e(H).has(Me.id),onClick:Oe(Ge=>W(Le.index,Me.id,Ge),["stop"])},null,8,["model-value","onClick"])])):V("",!0),a("div",qy,[f(Po,{src:Me.avatar,alt:M(Me),text:L(Me),"fallback-class":["flex h-8 w-8 items-center justify-center rounded-full text-[10px] font-bold","bg-primary-500 text-white"]},null,8,["src","alt","text"]),a("div",zy,[a("p",{class:"truncate text-sm font-medium text-gray-900 dark:text-white",title:Me.accountName||"-"},c(Me.accountName||"-"),9,Dy),a("p",{class:"truncate text-xs text-gray-400 dark:text-gray-500",title:Me.platformId},c(Me.platformId),9,Ly)])]),i.chatType==="group"?(d(),p("p",{key:1,class:Z(["truncate text-sm text-gray-700 dark:text-gray-300",Me.groupNickname?"font-medium":"text-gray-400 dark:text-gray-500"]),title:Me.groupNickname||"-"},c(Me.groupNickname||"-"),11,Ey)):V("",!0),a("span",Vy,c(Me.messageCount.toLocaleString()),1),a("span",{class:"text-right font-mono text-xs tabular-nums text-gray-600 dark:text-gray-400",title:Me.lastMessageTs===null?"-":e(Pa)(Me.lastMessageTs)},c(Me.lastMessageTs===null?"-":e(Pa)(Me.lastMessageTs)),9,Fy),f(Ye,{"model-value":Me.aliases,placeholder:e(t)("members.list.aliasPlaceholder"),loading:E.value.has(Me.id),size:"xs",class:"w-full",onClick:oe[5]||(oe[5]=Oe(()=>{},["stop"])),"onUpdate:modelValue":Ge=>ze(Me,Ge)},null,8,["model-value","placeholder","loading","onUpdate:modelValue"]),a("div",Ry,[f(Y,{icon:"i-heroicons-chat-bubble-left-ellipsis",size:"xs",color:"neutral",variant:"ghost",title:e(t)("common.viewChatRecords"),onClick:Oe(Ge=>N(Me),["stop"])},null,8,["title","onClick"]),f(Y,{icon:"i-heroicons-trash",size:"xs",color:"error",variant:"ghost",title:e(t)("members.list.delete"),onClick:Oe(Ge=>je(Me),["stop"])},null,8,["title","onClick"])])],46,My))),128))],4)],512)],2)]))],2),f(We,{open:!!I.value,ui:{content:"max-w-sm"},"onUpdate:open":oe[6]||(oe[6]=Le=>I.value=null)},{content:D(()=>[a("div",Oy,[a("div",By,[f(G,{name:"i-heroicons-exclamation-triangle",class:"h-7 w-7 text-red-500"})]),a("h3",Py,c(e(t)("members.list.modal.title")),1),a("p",Ny,c(e(t)("members.list.modal.content",{name:I.value?M(I.value):"",count:I.value?.messageCount.toLocaleString()})),1),a("div",jy,[f(Y,{variant:"outline",onClick:qe},{default:D(()=>[ee(c(e(t)("members.list.modal.cancel")),1)]),_:1}),f(Y,{color:"error",loading:w.value,onClick:He},{default:D(()=>[ee(c(e(t)("members.list.modal.confirm")),1)]),_:1},8,["loading"])])])]),_:1},8,["open"]),f(We,{open:v.value,ui:{content:"max-w-sm"},"onUpdate:open":oe[8]||(oe[8]=Le=>v.value=Le)},{content:D(()=>[a("div",Uy,[a("div",Wy,[f(G,{name:"i-heroicons-exclamation-triangle",class:"h-7 w-7 text-red-500"})]),a("h3",Ky,c(e(t)("members.list.batchDeleteModal.title")),1),a("p",Hy,c(e(t)("members.list.batchDeleteModal.content",{count:J.value.length,messageCount:X.value.toLocaleString()})),1),a("div",Yy,[f(Y,{variant:"outline",disabled:_.value,onClick:oe[7]||(oe[7]=Le=>v.value=!1)},{default:D(()=>[ee(c(e(t)("members.list.modal.cancel")),1)]),_:1},8,["disabled"]),f(Y,{color:"error",loading:_.value,onClick:Te},{default:D(()=>[ee(c(e(t)("members.list.modal.confirm")),1)]),_:1},8,["loading"])])])]),_:1},8,["open"]),f(We,{open:k.value,ui:{content:"max-w-md"},"onUpdate:open":oe[10]||(oe[10]=Le=>k.value=Le)},{content:D(()=>[a("div",Qy,[a("div",Gy,[a("div",Jy,[f(G,{name:"i-heroicons-link",class:"h-5 w-5 text-amber-600 dark:text-amber-400"})]),a("h3",Xy,c(e(t)("members.list.mergeModal.title")),1)]),a("p",Zy,c(e(t)("members.list.mergeModal.content",{source:O.value?M(O.value.secondary):"",sourceCount:O.value?O.value.secondary.messageCount.toLocaleString():"0",target:O.value?M(O.value.primary):"",targetCount:O.value?O.value.primary.messageCount.toLocaleString():"0"})),1),a("p",ex,c(e(t)("members.list.mergeModal.hint")),1),a("div",tx,[f(Y,{variant:"outline",disabled:C.value,onClick:oe[9]||(oe[9]=Le=>k.value=!1)},{default:D(()=>[ee(c(e(t)("members.list.mergeModal.cancel")),1)]),_:1},8,["disabled"]),f(Y,{color:"primary",loading:C.value,onClick:ce},{default:D(()=>[ee(c(e(t)("members.list.mergeModal.confirm")),1)]),_:1},8,["loading"])])])]),_:1},8,["open"])],2)}}}),Xb=gt(sx,[["__scopeId","data-v-0754d30f"]]),ox={class:"mt-3 flex flex-col items-stretch gap-2 sm:min-h-8 sm:flex-row sm:items-center sm:justify-between sm:gap-3"},nx={key:0,class:"max-w-full overflow-x-auto scrollbar-hide"},Zb=le({__name:"SessionAnalysisHeader",props:Ut({title:{},avatar:{},icon:{},iconClass:{},tabs:{},currentSessionId:{},initialTimeState:{},showSessionActions:{type:Boolean,default:!0}},{activeTab:{required:!0},activeTabModifiers:{},timeRangeValue:{required:!0},timeRangeValueModifiers:{}}),emits:Ut(["openIncrementalImport","openMemberManagement","openChatRecord","update:fullRange","update:availableYears","timeRangeInitialized"],["update:activeTab","update:timeRangeValue"]),setup(u,{emit:n}){const t=ma(u,"activeTab"),s=ma(u,"timeRangeValue"),o=u,i=n,{t:l}=Ce(),r=Dt(),m=q(()=>!["ai-chat","memory","more"].includes(t.value)),y=q(()=>o.tabs.map(h=>({id:h.id,label:l(h.labelKey),icon:h.icon})));return(h,S)=>{const x=Ne,I=Xt;return d(),B(In,{title:u.title,avatar:u.avatar,size:"compact",icon:u.icon,"icon-class":u.iconClass},{actions:D(()=>[u.showSessionActions&&e(r).effectiveToolsPanelPosition==="header"?(d(),p(ne,{key:0},[f(I,{text:e(l)("analysis.tooltip.viewChatRecord")},{default:D(()=>[f(x,{icon:"i-heroicons-chat-bubble-bottom-center-text",variant:"ghost",color:"gray",size:"sm",class:"hover:bg-gray-100 dark:hover:bg-gray-800",onClick:S[0]||(S[0]=w=>i("openChatRecord"))})]),_:1},8,["text"]),f(I,{text:e(l)("analysis.tooltip.incrementalImport")},{default:D(()=>[f(x,{icon:"i-heroicons-plus-circle",variant:"ghost",color:"gray",size:"sm",class:"hover:bg-gray-100 dark:hover:bg-gray-800",onClick:S[1]||(S[1]=w=>i("openIncrementalImport"))})]),_:1},8,["text"]),f(I,{text:e(l)("analysis.tooltip.memberManagement")},{default:D(()=>[f(x,{icon:"i-heroicons-user-group",variant:"ghost",color:"gray",size:"sm",class:"hover:bg-gray-100 dark:hover:bg-gray-800",onClick:S[2]||(S[2]=w=>i("openMemberManagement"))})]),_:1},8,["text"]),f(Ht,{color:"gray"}),f(I,{text:e(l)("analysis.tooltip.more")},{default:D(()=>[f(x,{"data-tools-panel-trigger":"",icon:"i-heroicons-ellipsis-horizontal",variant:"ghost",color:"gray",size:"sm",class:"hover:bg-gray-100 dark:hover:bg-gray-800",onClick:S[3]||(S[3]=w=>e(r).toggleToolsPanelOpen())})]),_:1},8,["text"])],64)):u.showSessionActions?(d(),B(Ht,{key:1,color:"gray"})):V("",!0)]),default:D(()=>[a("div",ox,[f(e(Tn),{modelValue:t.value,"onUpdate:modelValue":S[4]||(S[4]=w=>t.value=w),class:"min-w-0 shrink",items:y.value},null,8,["modelValue","items"]),m.value?(d(),p("div",nx,[f(_n,{modelValue:s.value,"onUpdate:modelValue":S[5]||(S[5]=w=>s.value=w),"session-id":u.currentSessionId??void 0,"initial-state":u.initialTimeState,size:"sm","onUpdate:fullRange":S[6]||(S[6]=w=>i("update:fullRange",w)),"onUpdate:availableYears":S[7]||(S[7]=w=>i("update:availableYears",w)),onInitializationComplete:S[8]||(S[8]=w=>i("timeRangeInitialized",w))},null,8,["modelValue","session-id","initial-state"])])):V("",!0)])]),_:1},8,["title","avatar","icon","icon-class"])}}}),lx={class:"space-y-4 p-5"},ix={class:"flex items-center gap-2"},rx={class:"text-base font-semibold text-gray-900 dark:text-white"},ux={key:0,class:"flex items-center gap-2 text-sm text-gray-400"},dx={class:"rounded-lg border border-gray-200 bg-gray-50 p-3 text-sm dark:border-gray-700 dark:bg-gray-800/50"},cx={class:"flex items-center justify-between"},mx={class:"text-gray-500"},px={class:"font-medium text-gray-800 dark:text-gray-200"},gx={key:0,class:"mt-1 flex items-center justify-between"},fx={class:"text-gray-500"},vx={class:"text-gray-700 dark:text-gray-300"},hx={key:1,class:"mt-2"},yx={class:"flex items-center justify-between text-xs text-gray-500"},xx={class:"mt-1 h-1.5 w-full overflow-hidden rounded-full bg-gray-200 dark:bg-gray-700"},bx={key:2,class:"mt-1 text-xs text-red-500"},_x={class:"text-sm text-gray-600 dark:text-gray-400"},kx={key:0,class:"rounded border border-amber-200 bg-amber-50 px-2 py-1.5 text-xs text-amber-700 dark:border-amber-800/50 dark:bg-amber-900/20 dark:text-amber-400"},wx={class:"flex justify-end gap-2"},Cx={class:"text-xs text-gray-400"},$x={class:"flex flex-wrap justify-end gap-2"},Ee="settings.ai.semanticIndex",e_=le({__name:"SemanticIndexSessionModal",props:{modelValue:{type:Boolean},sessionId:{},messageCount:{}},emits:["update:modelValue"],setup(u,{emit:n}){const t=u,s=n,{t:o}=Ce(),i=yn(),l=q({get:()=>t.modelValue,set:$=>s("update:modelValue",$)}),r=A(null),m=A(!1),y=A(!1),h=A(!1),S=q(()=>{const $=r.value;return!$||!$.enabled?o(`${Ee}.session.notEnabled`):$.needsRebuild?o(`${Ee}.state.needsRebuild`):$.running||$.queued||$.indexStatus==="running"?o(`${Ee}.state.building`):$.indexStatus==="completed"?o(`${Ee}.state.completed`):$.indexStatus==="failed"?o(`${Ee}.state.failed`):$.indexStatus==="paused"?o(`${Ee}.state.paused`):o(`${Ee}.state.pending`)}),x=q(()=>{const $=r.value;return!!$&&($.running||$.queued||$.indexStatus==="running")}),I=q(()=>r.value&&r.value.totalMessages>0?Math.round(r.value.indexedMessages/r.value.totalMessages*100):0);let w=null;function v(){w&&(clearTimeout(w),w=null)}function _(){v(),w=setTimeout(async()=>{try{r.value=await i.status(t.sessionId)}catch($){console.error("[semantic-index] poll status failed:",$)}x.value&&t.modelValue?_():v()},1500)}async function k(){y.value=!0;try{const[$,g]=await Promise.all([i.getConfig(),i.status(t.sessionId)]);m.value=$.config.enabled&&$.configured&&($.config.mode==="local"?!!$.config.local.modelId:!!$.config.api?.baseUrl&&!!$.config.api?.model&&(!xn($.config.api?.baseUrl)||$.apiKeySet)),r.value=g}catch($){console.error("[semantic-index] load session status failed:",$)}finally{y.value=!1}x.value&&_()}async function C($){h.value=!0;try{r.value=await i[$](t.sessionId)}catch(g){console.error(`[semantic-index] ${$} failed:`,g)}finally{h.value=!1}x.value?_():v()}return me(()=>t.modelValue,$=>{$?k():v()}),Je(v),($,g)=>{const b=Se,F=Ne,E=Xe;return d(),B(E,{open:l.value,"onUpdate:open":g[10]||(g[10]=z=>l.value=z),ui:{content:"z-[101]",overlay:"z-[100]"}},{content:D(()=>[a("div",lx,[a("div",ix,[f(b,{name:"i-heroicons-circle-stack",class:"h-5 w-5 text-blue-500"}),a("h3",rx,c(e(o)(`${Ee}.title`)),1)]),y.value?(d(),p("div",ux,[f(b,{name:"i-heroicons-arrow-path",class:"h-4 w-4 animate-spin"}),ee(" "+c(e(o)("common.loading")),1)])):(d(),p(ne,{key:1},[a("div",dx,[a("div",cx,[a("span",mx,c(e(o)(`${Ee}.session.statusLabel`)),1),a("span",px,c(S.value),1)]),r.value?.enabled&&r.value.indexStatus==="completed"?(d(),p("div",gx,[a("span",fx,c(e(o)(`${Ee}.session.coverageLabel`)),1),a("span",vx,c(I.value)+"%",1)])):V("",!0),x.value?(d(),p("div",hx,[a("div",yx,[a("span",null,c(e(o)(`${Ee}.session.progressLabel`)),1),a("span",null,c(r.value?.indexedMessages??0)+" / "+c(r.value?.totalMessages??0)+" ("+c(I.value)+"%) ",1)]),a("div",xx,[a("div",{class:"h-full rounded-full bg-blue-500 transition-all duration-500",style:et({width:`${I.value}%`})},null,4)])])):V("",!0),r.value?.error?(d(),p("p",bx,c(r.value.error),1)):V("",!0)]),r.value?.enabled?(d(),p(ne,{key:1},[a("p",Cx,c(e(o)(`${Ee}.session.buildVsEnable`)),1),a("div",$x,[x.value?(d(),p(ne,{key:0},[f(F,{variant:"soft",loading:h.value,onClick:g[2]||(g[2]=z=>C("pause"))},{default:D(()=>[ee(c(e(o)(`${Ee}.action.pause`)),1)]),_:1},8,["loading"]),f(F,{color:"error",variant:"soft",disabled:h.value,onClick:g[3]||(g[3]=z=>C("cancel"))},{default:D(()=>[ee(c(e(o)(`${Ee}.action.cancel`)),1)]),_:1},8,["disabled"])],64)):r.value?.indexStatus==="completed"&&!r.value?.needsRebuild?(d(),B(F,{key:1,variant:"soft",loading:h.value,onClick:g[4]||(g[4]=z=>C("rebuild"))},{default:D(()=>[ee(c(e(o)(`${Ee}.action.rebuild`)),1)]),_:1},8,["loading"])):r.value?.needsRebuild?(d(),B(F,{key:2,color:"primary",loading:h.value,onClick:g[5]||(g[5]=z=>C("rebuild"))},{default:D(()=>[ee(c(e(o)(`${Ee}.action.rebuild`)),1)]),_:1},8,["loading"])):r.value?.indexStatus==="failed"?(d(),B(F,{key:3,color:"primary",loading:h.value,onClick:g[6]||(g[6]=z=>C("build"))},{default:D(()=>[ee(c(e(o)(`${Ee}.session.retry`)),1)]),_:1},8,["loading"])):r.value?.indexStatus==="paused"?(d(),B(F,{key:4,color:"primary",loading:h.value,onClick:g[7]||(g[7]=z=>C("build"))},{default:D(()=>[ee(c(e(o)(`${Ee}.session.continue`)),1)]),_:1},8,["loading"])):(d(),B(F,{key:5,color:"primary",loading:h.value,onClick:g[8]||(g[8]=z=>C("build"))},{default:D(()=>[ee(c(e(o)(`${Ee}.action.build`)),1)]),_:1},8,["loading"])),f(F,{variant:"ghost",color:"neutral",disabled:h.value,onClick:g[9]||(g[9]=z=>C("remove"))},{default:D(()=>[ee(c(e(o)(`${Ee}.action.remove`)),1)]),_:1},8,["disabled"])])],64)):(d(),p(ne,{key:0},[a("p",_x,c(e(o)(`${Ee}.session.enableHint`)),1),m.value?V("",!0):(d(),p("p",kx,c(e(o)(`${Ee}.session.configFirst`)),1)),a("div",wx,[f(F,{variant:"ghost",onClick:g[0]||(g[0]=z=>l.value=!1)},{default:D(()=>[ee(c(e(o)("common.close")),1)]),_:1}),f(F,{color:"primary",loading:h.value,disabled:!m.value,onClick:g[1]||(g[1]=z=>C("enable"))},{default:D(()=>[ee(c(e(o)(`${Ee}.session.enable`)),1)]),_:1},8,["loading","disabled"])])],64))],64))])]),_:1},8,["open"])}}}),Sx={class:"min-h-[200px]"},Ix={key:0,class:"space-y-4"},Tx={class:"text-sm text-gray-600 dark:text-gray-400"},Mx={class:"text-sm text-gray-600 dark:text-gray-400"},Ax={key:1,class:"flex flex-col items-center justify-center py-10"},qx={class:"text-gray-600 dark:text-gray-400"},zx={class:"mt-2 text-sm text-gray-500"},Dx={key:2,class:"space-y-6"},Lx={class:"rounded-lg bg-gray-50 p-4 dark:bg-gray-800"},Ex={class:"mb-2 text-sm font-medium text-gray-700 dark:text-gray-300"},Vx={class:"grid grid-cols-3 gap-4 text-center"},Fx={class:"text-2xl font-bold text-gray-900 dark:text-white"},Rx={class:"text-xs text-gray-500"},Ox={class:"text-2xl font-bold text-green-600 dark:text-green-400"},Bx={class:"text-xs text-gray-500"},Px={class:"text-2xl font-bold text-gray-400"},Nx={class:"text-xs text-gray-500"},jx={key:0,class:"text-center text-sm text-amber-600 dark:text-amber-400"},Ux={key:3,class:"flex flex-col items-center justify-center py-10"},Wx={class:"text-gray-600 dark:text-gray-400"},Kx={key:0,class:"mt-4 w-full max-w-xs"},Hx={key:4,class:"flex flex-col items-center justify-center py-10"},Yx={class:"text-lg font-medium text-gray-900 dark:text-white"},Qx={class:"mt-2 text-sm text-gray-600 dark:text-gray-400"},Gx={key:5,class:"flex flex-col items-center justify-center py-10"},Jx={class:"text-lg font-medium text-gray-900 dark:text-white"},Xx={class:"mt-2 text-sm text-red-600 dark:text-red-400"},Zx={class:"flex w-full justify-end gap-2"},t_=le({__name:"IncrementalImportModal",props:{modelValue:{type:Boolean},sessionId:{},sessionName:{}},emits:["update:modelValue","imported"],setup(u,{emit:n}){const t=u,s=n,{t:o}=Ce(),i=A("select"),l=A(null),r=A(null),m=A(null),y=A(null),h=A(null),S=A(null),x=q({get:()=>t.modelValue,set:b=>s("update:modelValue",b)});me(x,b=>{b||I()});function I(){i.value="select",l.value=null,m.value=null,y.value=null,h.value=null,S.value=null}async function w({files:b,paths:F}){if(b.length>0)l.value={source:b[0],name:b[0].name};else{h.value=o("home.import.cannotReadPath");return}await _()}function v(){r.value?.openFileDialog()}async function _(){if(l.value){i.value="analyzing",h.value=null;try{const b=await Ba().analyzeIncrementalImport(t.sessionId,l.value.source);if(b.error){i.value="error",h.value=g(b.error);return}m.value={newMessageCount:b.newMessageCount,duplicateCount:b.duplicateCount,totalInFile:b.totalInFile},i.value="preview"}catch(b){i.value="error",h.value=String(b)}}}async function k(){if(l.value){i.value="importing",y.value={stage:"saving",progress:0,message:""};try{const b=await Ba().incrementalImport(t.sessionId,l.value.source,F=>{y.value=F});b.success?(S.value={newMessageCount:b.newMessageCount},i.value="done"):(i.value="error",h.value=g(b.error||"error.import_failed"))}catch(b){i.value="error",h.value=String(b)}}}function C(){S.value&&s("imported",S.value.newMessageCount),x.value=!1}function $(){i.value="select",l.value=null,m.value=null,h.value=null}function g(b){if(b.startsWith("error.")){const F=`home.import.errors.${b.slice(6)}`,E=o(F);return E!==F?E:b}return b}return(b,F)=>{const E=Mn,z=Se,T=jo,M=Ne,L=Xe;return d(),B(L,{open:x.value,"onUpdate:open":F[1]||(F[1]=N=>x.value=N),title:e(o)("analysis.incremental.title")},{body:D(()=>[a("div",Sx,[i.value==="select"?(d(),p("div",Ix,[a("p",Tx,c(e(o)("analysis.incremental.description",{name:u.sessionName})),1),f(E,{color:"info",variant:"soft",icon:"i-heroicons-information-circle",description:e(o)("analysis.incremental.homeAutoImportHint")},null,8,["description"]),f(e(An),{ref_key:"dropZoneRef",ref:r,accept:[".json",".jsonl",".txt"],class:"w-full",onFiles:w},{default:D(({isDragOver:N})=>[a("div",{class:Z(["flex cursor-pointer flex-col items-center justify-center rounded-xl border-2 border-dashed px-6 py-10 transition-colors",N?"border-pink-500 bg-pink-50/50 dark:border-pink-400 dark:bg-pink-500/10":"border-gray-300 hover:border-pink-400 dark:border-gray-600 dark:hover:border-pink-500"]),onClick:Oe(v,["stop"])},[f(z,{name:"i-heroicons-arrow-up-tray",class:"mb-3 h-10 w-10 text-gray-400"}),a("p",Mx,c(N?e(o)("home.import.dropHint"):e(o)("analysis.incremental.dropHint")),1)],2)]),_:1},512)])):i.value==="analyzing"?(d(),p("div",Ax,[f(z,{name:"i-heroicons-arrow-path",class:"mb-4 h-10 w-10 animate-spin text-pink-500"}),a("p",qx,c(e(o)("analysis.incremental.analyzing")),1),a("p",zx,c(l.value?.name),1)])):i.value==="preview"&&m.value?(d(),p("div",Dx,[a("div",Lx,[a("p",Ex,c(l.value?.name),1),a("div",Vx,[a("div",null,[a("p",Fx,c(m.value.totalInFile.toLocaleString()),1),a("p",Rx,c(e(o)("analysis.incremental.totalInFile")),1)]),a("div",null,[a("p",Ox,c(m.value.newMessageCount.toLocaleString()),1),a("p",Bx,c(e(o)("analysis.incremental.newMessages")),1)]),a("div",null,[a("p",Px,c(m.value.duplicateCount.toLocaleString()),1),a("p",Nx,c(e(o)("analysis.incremental.duplicates")),1)])])]),m.value.newMessageCount===0?(d(),p("p",jx,[f(z,{name:"i-heroicons-exclamation-triangle",class:"mr-1 inline-block h-4 w-4"}),ee(" "+c(e(o)("analysis.incremental.noNewMessages")),1)])):V("",!0)])):i.value==="importing"?(d(),p("div",Ux,[f(z,{name:"i-heroicons-arrow-path",class:"mb-4 h-10 w-10 animate-spin text-pink-500"}),a("p",Wx,c(e(o)("analysis.incremental.importing")),1),y.value?(d(),p("div",Kx,[f(T,{value:y.value.progress,size:"sm"},null,8,["value"])])):V("",!0)])):i.value==="done"&&S.value?(d(),p("div",Hx,[f(z,{name:"i-heroicons-check-circle",class:"mb-4 h-12 w-12 text-green-500"}),a("p",Yx,c(e(o)("analysis.incremental.success")),1),a("p",Qx,c(e(o)("analysis.incremental.successDetail",{count:S.value.newMessageCount})),1)])):i.value==="error"?(d(),p("div",Gx,[f(z,{name:"i-heroicons-x-circle",class:"mb-4 h-12 w-12 text-red-500"}),a("p",Jx,c(e(o)("analysis.incremental.failed")),1),a("p",Xx,c(h.value),1)])):V("",!0)])]),footer:D(()=>[a("div",Zx,[i.value==="select"?(d(),B(M,{key:0,color:"neutral",variant:"ghost",onClick:F[0]||(F[0]=N=>x.value=!1)},{default:D(()=>[ee(c(e(o)("common.cancel")),1)]),_:1})):i.value==="preview"?(d(),p(ne,{key:1},[f(M,{color:"neutral",variant:"ghost",onClick:$},{default:D(()=>[ee(c(e(o)("common.back")),1)]),_:1}),f(M,{color:"primary",disabled:!m.value||m.value.newMessageCount===0,onClick:k},{default:D(()=>[ee(c(e(o)("analysis.incremental.import",{count:m.value?.newMessageCount||0})),1)]),_:1},8,["disabled"])],64)):i.value==="done"||i.value==="error"?(d(),p(ne,{key:2},[i.value==="error"?(d(),B(M,{key:0,color:"neutral",variant:"ghost",onClick:$},{default:D(()=>[ee(c(e(o)("common.retry")),1)]),_:1})):V("",!0),f(M,{color:"primary",onClick:C},{default:D(()=>[ee(c(e(o)("common.done")),1)]),_:1})],64)):V("",!0)])]),_:1},8,["open","title"])}}}),eb={key:0,class:"fixed right-0 top-1/3"},tb={class:"no-capture flex flex-col items-center gap-0.5 rounded-l-lg border border-r-0 border-gray-200/60 bg-white py-1.5 shadow-sm dark:border-white/5 dark:bg-page-dark"},ab=["onClick"],sb={class:"mb-2 flex items-center justify-between"},ob={class:"px-0.5 text-[9px] font-bold uppercase tracking-widest text-gray-400 dark:text-gray-500"},nb={class:"flex flex-col gap-1.5"},lb=["onClick"],ib={class:"whitespace-nowrap"},a_=le({__name:"ActionToolsPanel",emits:["openIncrementalImport","openSemanticIndex","openMemberManagement","openChatRecord","openMessageExport"],setup(u,{emit:n}){const{t}=Ce(),s=Dt(),{isToolsPanelMini:o,effectiveToolsPanelPosition:i,isToolsPanelOpen:l}=bt(s),r=q(()=>i.value==="header"),m=q(()=>!r.value||l.value),y=A(null),h=n;function S(_){h(_),r.value&&(l.value=!1)}function x(_){if(!r.value||!l.value)return;const k=_.target;k instanceof Element&&(y.value?.contains(k)||k.closest("[data-tools-panel-trigger]")||(l.value=!1))}const I=[{event:"openIncrementalImport",icon:"i-heroicons-plus-circle",hoverColor:"group-hover:text-pink-500",miniHoverBg:"hover:text-pink-500",labelKey:"analysis.tooltip.incrementalImport"},{event:"openSemanticIndex",icon:"i-heroicons-circle-stack",hoverColor:"group-hover:text-indigo-500",miniHoverBg:"hover:text-indigo-500",labelKey:"analysis.tooltip.semanticIndex"},{event:"openMemberManagement",icon:"i-heroicons-user-group",hoverColor:"group-hover:text-purple-500",miniHoverBg:"hover:text-purple-500",labelKey:"analysis.tooltip.memberManagement"},{event:"openChatRecord",icon:"i-heroicons-chat-bubble-bottom-center-text",hoverColor:"group-hover:text-cyan-500",miniHoverBg:"hover:text-cyan-500",labelKey:"analysis.tooltip.viewChatRecord"},{event:"openMessageExport",icon:"i-heroicons-document-arrow-down",hoverColor:"group-hover:text-green-500",miniHoverBg:"hover:text-green-500",labelKey:"analysis.messageExport.title"}],w=[{event:"openSemanticIndex",icon:"i-heroicons-circle-stack",hoverColor:"group-hover:text-indigo-500",miniHoverBg:"hover:text-indigo-500",labelKey:"analysis.tooltip.semanticIndex"},{event:"openMessageExport",icon:"i-heroicons-document-arrow-down",hoverColor:"group-hover:text-green-500",miniHoverBg:"hover:text-green-500",labelKey:"analysis.messageExport.title"}],v=q(()=>r.value?w:I);return me(i,()=>{l.value=!1}),De(()=>{document.addEventListener("mousedown",x)}),ba(()=>{document.removeEventListener("mousedown",x)}),(_,k)=>{const C=Se,$=Xt;return!r.value&&e(o)?(d(),p("div",eb,[a("div",tb,[(d(),p(ne,null,he(I,g=>f($,{key:g.event,text:e(t)(g.labelKey),popper:{placement:"left"}},{default:D(()=>[a("button",{class:Z(["flex h-7 w-7 items-center justify-center rounded-md text-gray-400 transition-colors hover:bg-gray-100 dark:text-gray-500 dark:hover:bg-white/5",g.miniHoverBg]),onClick:b=>S(g.event)},[f(C,{name:g.icon,class:"h-3.5 w-3.5"},null,8,["name"])],10,ab)]),_:2},1032,["text"])),64)),k[2]||(k[2]=a("div",{class:"my-0.5 h-px w-4 bg-gray-200 dark:bg-gray-700"},null,-1)),f($,{text:e(t)("analysis.toolsPanel.exitMini"),popper:{placement:"left"}},{default:D(()=>[a("button",{class:"flex h-7 w-7 items-center justify-center rounded-md text-gray-300 transition-colors hover:bg-gray-100 hover:text-gray-500 dark:text-gray-600 dark:hover:bg-white/5 dark:hover:text-gray-400",onClick:k[0]||(k[0]=g=>e(s).toggleToolsPanelMini())},[f(C,{name:"i-heroicons-arrows-pointing-out",class:"h-3 w-3"})])]),_:1},8,["text"])])])):(d(),p("div",{key:1,class:Z(["fixed right-0 z-40",r.value?"top-14":"top-1/3"])},[a("div",{class:Z(["absolute right-0 top-0 transition-all duration-250 ease-in-out",m.value?"translate-x-0 opacity-100":"pointer-events-none translate-x-full opacity-0"])},[a("div",{ref_key:"panelRef",ref:y,class:"no-capture flex w-40 flex-col rounded-l-xl border border-r-0 border-gray-200/60 bg-white p-3 shadow-overlay dark:border-white/5 dark:bg-page-dark"},[a("div",sb,[a("span",ob,c(e(t)("analysis.overview.tools")),1),r.value?V("",!0):(d(),B($,{key:0,text:e(t)("analysis.toolsPanel.miniMode"),popper:{placement:"left"}},{default:D(()=>[a("button",{class:"flex h-5 w-5 items-center justify-center rounded text-gray-300 transition-colors hover:text-gray-500 dark:text-gray-600 dark:hover:text-gray-400",onClick:k[1]||(k[1]=g=>e(s).toggleToolsPanelMini())},[f(C,{name:"i-heroicons-arrows-pointing-in",class:"h-3 w-3"})])]),_:1},8,["text"]))]),a("div",nb,[(d(!0),p(ne,null,he(v.value,g=>(d(),p("button",{key:g.event,class:"group flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-xs font-medium text-gray-600 transition-all hover:bg-gray-100 hover:text-gray-900 dark:text-gray-400 dark:hover:bg-white/5 dark:hover:text-white",onClick:b=>S(g.event)},[f(C,{name:g.icon,class:Z(["h-3.5 w-3.5 text-gray-400 transition-colors dark:text-gray-500",g.hoverColor])},null,8,["name","class"]),a("span",ib,c(e(t)(g.labelKey)),1)],8,lb))),128))])],512)],2)],2))}}});function s_(u){let n,t=!1;function s(){clearTimeout(n),n=void 0}const o=()=>document.visibilityState==="visible"&&document.hasFocus();function i(){!t||!u.isActive()||!u.sessionId.value||!o()||(t=!1,St("insight_viewed",{chat_type:u.chatType}))}function l(m){s(),!(!u.isActive()||!o())&&(n=setTimeout(()=>{n=void 0,u.isActive()&&o()&&(St("insight_viewed",{chat_type:u.chatType}),St("insight_tab_used",{chat_type:u.chatType,tab_id:m}))},3e3))}me([u.isActive,u.sessionId],([m,y])=>{s(),t=!!(m&&y),i()},{immediate:!0,flush:"sync"});function r(){document.visibilityState!=="visible"?s():i()}return window.addEventListener("blur",s),window.addEventListener("focus",i),me(u.routePath,()=>{s(),t=!1},{flush:"sync"}),document.addEventListener("visibilitychange",r),Qa(()=>{s(),window.removeEventListener("blur",s),window.removeEventListener("focus",i),document.removeEventListener("visibilitychange",r)}),l}export{Wb as C,Nb as I,jb as M,sa as _,Pb as a,Qe as b,Gb as c,Jb as d,ig as e,Kb as f,Hb as g,Yb as h,Bb as i,s_ as j,Zb as k,Ub as l,a_ as m,e_ as n,t_ as o,Xb as p,Qb as u};
|