chatlab-cli 0.37.0 → 0.37.2
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-WBAJBKIE.mjs → chat-command-G2EX7VHR.mjs} +24 -12
- package/dist/chat-command-G2EX7VHR.mjs.map +1 -0
- package/dist/{chunk-N2WGG3MS.mjs → chunk-E6LCCPIB.mjs} +6 -3
- package/dist/chunk-E6LCCPIB.mjs.map +1 -0
- package/dist/{chunk-EJBBVLUN.mjs → chunk-EFX66A2O.mjs} +2 -2
- package/dist/{chunk-DKIYHA3O.mjs → chunk-EK5QIJLZ.mjs} +20 -23
- package/dist/chunk-EK5QIJLZ.mjs.map +1 -0
- package/dist/{chunk-5YOHLJFB.mjs → chunk-F4HVCFZL.mjs} +48 -7
- package/dist/chunk-F4HVCFZL.mjs.map +1 -0
- package/dist/{chunk-SQWN4GTQ.mjs → chunk-FCUUAGGC.mjs} +2 -2
- package/dist/{chunk-DQR2YS3I.mjs → chunk-H46CLFWK.mjs} +8 -6
- package/dist/{chunk-DQR2YS3I.mjs.map → chunk-H46CLFWK.mjs.map} +1 -1
- package/dist/{chunk-4J4MA3RC.mjs → chunk-HBAQPF6X.mjs} +2180 -1941
- package/dist/chunk-HBAQPF6X.mjs.map +1 -0
- package/dist/{chunk-RXMSZIYD.mjs → chunk-HMVM7VCA.mjs} +3 -3
- package/dist/{chunk-FM3GXNEO.mjs → chunk-L6RJIVLS.mjs} +2 -2
- package/dist/{chunk-MSMDLDPB.mjs → chunk-T5H56AZV.mjs} +16 -8
- package/dist/chunk-T5H56AZV.mjs.map +1 -0
- package/dist/{chunk-2TV7M4CC.mjs → chunk-XQ6Z2KNN.mjs} +2 -2
- package/dist/{chunk-CR2MU7LN.mjs → chunk-YI3EQYEG.mjs} +12 -12
- package/dist/cli.mjs +9 -9
- package/dist/contacts-worker.mjs +2 -2
- package/dist/global-insight-worker.mjs +1 -1
- package/dist/{http-X6OEOOSH.mjs → http-5BRVWAJR.mjs} +12 -12
- package/dist/{import-WBJ6YIQ7.mjs → import-IAECQDKC.mjs} +7 -7
- package/dist/index.mjs +12 -12
- package/dist/{mcp-FR6OKWKL.mjs → mcp-XXSQJBGU.mjs} +8 -8
- package/dist/people-relationships-worker.mjs +2 -2
- package/dist/semantic-index-worker.mjs +1 -1
- package/dist/{src-WE5HNN2O.mjs → src-4HLKMQ7S.mjs} +6 -6
- package/dist/{stream-import-YYQVZDGQ.mjs → stream-import-PUG42I36.mjs} +7 -7
- package/dist/{worker-runtime-YGB5ZDE4.mjs → worker-runtime-X5563TVT.mjs} +5 -5
- package/dist-cli-web/assets/{AISettingsTab-Co2sM1iY.js → AISettingsTab-m_r2fFEj.js} +1 -1
- package/dist-cli-web/assets/{AboutTab-DQ8r6mYE.js → AboutTab-J65UqIuk.js} +1 -1
- package/dist-cli-web/assets/{Alert-DU1tLAAg.js → Alert-qBIGn_CW.js} +1 -1
- package/dist-cli-web/assets/{ApiSettingsTab-D5g5b79L.js → ApiSettingsTab-CxWRJI9j.js} +1 -1
- package/dist-cli-web/assets/{BatchManageTab-BFUyVaGU.js → BatchManageTab-BINNVwm1.js} +1 -1
- package/dist-cli-web/assets/{BufferResource-C-RfYwQW.js → BufferResource-C-jLPrHv.js} +1 -1
- package/dist-cli-web/assets/{CanvasRenderer-Dz7JAMrR.js → CanvasRenderer-kDLW8GSt.js} +1 -1
- package/dist-cli-web/assets/{CardDecoration-D28DI1G9.js → CardDecoration-CnYxleQM.js} +1 -1
- package/dist-cli-web/assets/{ChatRecordDrawer-Cph819yY.js → ChatRecordDrawer-CMg3FEWH.js} +1 -1
- package/dist-cli-web/assets/{ChatRecordWorkspace-BAfERdPc.js → ChatRecordWorkspace-AfFIMUbZ.js} +1 -1
- package/dist-cli-web/assets/{Checkbox-B8uqt13j.js → Checkbox-D-hAv15R.js} +1 -1
- package/dist-cli-web/assets/{DataDirCleanupNotice-3sGBE5vU.js → DataDirCleanupNotice-P80h2p4l.js} +1 -1
- package/dist-cli-web/assets/{DatePicker.vue_vue_type_script_setup_true_lang-CQuub8-f.js → DatePicker.vue_vue_type_script_setup_true_lang-CSp691Uv.js} +1 -1
- package/dist-cli-web/assets/{DebugToolsPanel-Cwkr0BOY.js → DebugToolsPanel-BK2VbKB0.js} +1 -1
- package/dist-cli-web/assets/{EChart.vue_vue_type_script_setup_true_lang-BuLujQCF.js → EChart.vue_vue_type_script_setup_true_lang-BcE0mE_N.js} +1 -1
- package/dist-cli-web/assets/{EChartBar.vue_vue_type_script_setup_true_lang-DuA5xbcC.js → EChartBar.vue_vue_type_script_setup_true_lang-BypaV5wc.js} +1 -1
- package/dist-cli-web/assets/{EChartLine.vue_vue_type_script_setup_true_lang-CvmMEfYq.js → EChartLine.vue_vue_type_script_setup_true_lang-D8SyOfWC.js} +1 -1
- package/dist-cli-web/assets/{EChartWordcloud-CHVtyPR7.js → EChartWordcloud-0rihhg03.js} +1 -1
- package/dist-cli-web/assets/{FileDropZone.vue_vue_type_script_setup_true_lang-BKPy9Qv-.js → FileDropZone.vue_vue_type_script_setup_true_lang-Dyuzh7Ex.js} +1 -1
- package/dist-cli-web/assets/{Filter-CMfRHIoK.js → Filter-rD_jWpbO.js} +1 -1
- package/dist-cli-web/assets/{GlobalTaskBar-Jz6MASCu.js → GlobalTaskBar-sXQuGvF-.js} +1 -1
- package/dist-cli-web/assets/{GroupRelationshipGalaxyView-Ch4obfEq.js → GroupRelationshipGalaxyView-BN1L9DFf.js} +1 -1
- package/dist-cli-web/assets/{Label-CuryuymO.js → Label-Ce4wl_Ph.js} +1 -1
- package/dist-cli-web/assets/{LoadingState.vue_vue_type_script_setup_true_lang-CoeQsaiL.js → LoadingState.vue_vue_type_script_setup_true_lang-DmVfwvnD.js} +1 -1
- package/dist-cli-web/assets/{MessageExportModal-JqGZ-iLr.js → MessageExportModal-C2IUNPhg.js} +1 -1
- package/dist-cli-web/assets/{PageHeader-D4up77TB.js → PageHeader-D5BcYKBs.js} +1 -1
- package/dist-cli-web/assets/{PageTabs.vue_vue_type_script_setup_true_lang-DYQRFk9s.js → PageTabs.vue_vue_type_script_setup_true_lang-DHly2-fe.js} +1 -1
- package/dist-cli-web/assets/{RelationshipGalaxyCanvas-Cn7Eta5U.js → RelationshipGalaxyCanvas-CHPqtqQz.js} +3 -3
- package/dist-cli-web/assets/{RelationshipGalaxyThreeCanvas-LlaX57z6.js → RelationshipGalaxyThreeCanvas-qR4S-9n7.js} +1 -1
- package/dist-cli-web/assets/{RenderTargetSystem-JhA2PUFi.js → RenderTargetSystem-BaIFulUj.js} +1 -1
- package/dist-cli-web/assets/{RovingFocusItem-DHaiTb4j.js → RovingFocusItem-Bqgmzo42.js} +1 -1
- package/dist-cli-web/assets/{ScreenCaptureModal-Bxhyt5g1.js → ScreenCaptureModal-sJqB_hrK.js} +1 -1
- package/dist-cli-web/assets/SectionTabs.vue_vue_type_script_setup_true_lang-BPt98e6z.js +1 -0
- package/dist-cli-web/assets/{Select-Beeqv0wU.js → Select-BAnN4HMs.js} +1 -1
- package/dist-cli-web/assets/SettingsModal-C4ANMlJJ.js +2 -0
- package/dist-cli-web/assets/{StorageTab-B7GHadia.js → StorageTab-BgNQliz4.js} +1 -1
- package/dist-cli-web/assets/{Switch-u4zlvUMa.js → Switch-DddEvDJa.js} +1 -1
- package/dist-cli-web/assets/{Tabs-B7-Koq3x.js → Tabs-DwjL-ueH.js} +1 -1
- package/dist-cli-web/assets/{Tabs-RWKHwtfM.js → Tabs-xVtuBuO0.js} +1 -1
- package/dist-cli-web/assets/{ThemeCard.vue_vue_type_script_setup_true_lang-ndsa3-aT.js → ThemeCard.vue_vue_type_script_setup_true_lang-CNCVa86b.js} +1 -1
- package/dist-cli-web/assets/{TimeSelect.vue_vue_type_script_setup_true_lang-DKa1flT-.js → TimeSelect.vue_vue_type_script_setup_true_lang-BehUIWki.js} +1 -1
- package/dist-cli-web/assets/{VisuallyHiddenInput-DGDqcvUy.js → VisuallyHiddenInput-ST6JNfSG.js} +1 -1
- package/dist-cli-web/assets/{WebGLRenderer-ifvgA1fe.js → WebGLRenderer-DRraqD4Y.js} +1 -1
- package/dist-cli-web/assets/{WebGPURenderer-DwzmuWF0.js → WebGPURenderer-CnzaYARg.js} +1 -1
- package/dist-cli-web/assets/aiChat-CeJy-gG-.js +8 -0
- package/dist-cli-web/assets/{base-BWDX-164.js → base-BHbtUviQ.js} +1 -1
- package/dist-cli-web/assets/{browserAll-CSIIETeE.js → browserAll-DYxkitnx.js} +1 -1
- package/dist-cli-web/assets/{chatMessages--r0obAVw.css → chatMessages-BGRbSlvD.css} +1 -1
- package/dist-cli-web/assets/{chatMessages-Zywjea1n.js → chatMessages-Dj1u-tFB.js} +20 -20
- package/dist-cli-web/assets/{cli-web-BRY49NWe.js → cli-web-BtH8nfjA.js} +1 -1
- package/dist-cli-web/assets/{fetch-DNSDHSqQ.js → fetch-BJ82mWvv.js} +1 -1
- package/dist-cli-web/assets/{fetch-D3nLtFBi.js → fetch-C1Tm66i9.js} +1 -1
- package/dist-cli-web/assets/{fetch-jx1VdM9j.js → fetch-CAEyoWQA.js} +1 -1
- package/dist-cli-web/assets/{fetch-qBaUXqFt.js → fetch-CGnWNSsG.js} +1 -1
- package/dist-cli-web/assets/{fetch-mYSeL4Ki.js → fetch-D7hfFyoG.js} +1 -1
- package/dist-cli-web/assets/{fetch-BiXab0IF.js → fetch-DNmRaRxX.js} +1 -1
- package/dist-cli-web/assets/{fetch-wzv71PYy.js → fetch-DogRrvT6.js} +1 -1
- package/dist-cli-web/assets/fetch-JEEBqR_7.js +1 -0
- package/dist-cli-web/assets/{fetch-r6mhEGrP.js → fetch-T5Gi1TUZ.js} +1 -1
- package/dist-cli-web/assets/{fetch-DeHqF6yL.js → fetch-U9QyidNZ.js} +1 -1
- package/dist-cli-web/assets/{fetch-Co2vLmiE.js → fetch-ejEMWPM2.js} +1 -1
- package/dist-cli-web/assets/{fetch-Bf4cqeM3.js → fetch-emZXHmoE.js} +1 -1
- package/dist-cli-web/assets/{host-1emQf9_4.js → host-BUvwCvZR.js} +1 -1
- package/dist-cli-web/assets/{host-jXJHyyOX.js → host-VTWF81F5.js} +1 -1
- package/dist-cli-web/assets/{index-CYc_VLgK.js → index-B3MCGDwx.js} +1 -1
- package/dist-cli-web/assets/index-BI2Rb_L3.js +2 -0
- package/dist-cli-web/assets/{index-BOcFyPCa.js → index-BLYSew5C.js} +1 -1
- package/dist-cli-web/assets/index-Bs7gk1gf.css +1 -0
- package/dist-cli-web/assets/{index-BgelKQTW.css → index-C75W1B5J.css} +1 -1
- package/dist-cli-web/assets/{index-DOqbUvhA.js → index-CVRBBnQw.js} +1 -1
- package/dist-cli-web/assets/index-Cza8BzZE.js +137 -0
- package/dist-cli-web/assets/{index-DnpnIyle.js → index-D9C3dyV8.js} +33 -33
- package/dist-cli-web/assets/{index-LV9LfFNu.js → index-DDt7Tfda.js} +1 -1
- package/dist-cli-web/assets/{index-B4mJkX_d.js → index-DQFcmWSa.js} +1 -1
- package/dist-cli-web/assets/{index-slDUxib2.js → index-DUBl6aBF.js} +1 -1
- package/dist-cli-web/assets/{index-B7biznha.js → index-DZK9Njvy.js} +1 -1
- package/dist-cli-web/assets/{index-Cw0IhKZ6.js → index-HjrJ3DXO.js} +1 -1
- package/dist-cli-web/assets/index-KpnLSzzX.js +64 -0
- package/dist-cli-web/assets/{index-BQ463TS7.js → index-e6fOnhNS.js} +1 -1
- package/dist-cli-web/assets/{index-ClHMs0-a.js → index-iEQnKg2R.js} +2 -2
- package/dist-cli-web/assets/{people-page-header-Cx5r9Bk2.js → people-page-header-DWXwFJ8M.js} +1 -1
- package/dist-cli-web/assets/{prompt-BggEDxxi.js → prompt-Cepfb-5-.js} +1 -1
- package/dist-cli-web/assets/{semantic-index-config-builder-1sO0aEc1.js → semantic-index-config-builder-hTY6QyCe.js} +1 -1
- package/dist-cli-web/assets/service-BjE0YJaM.js +1 -0
- package/dist-cli-web/assets/service-DQxttlJp.js +1 -0
- package/dist-cli-web/assets/{service-Bvq1fRkC.js → service-DwCmXFtI.js} +1 -1
- package/dist-cli-web/assets/useFormControl-CJyJY8AK.js +1 -0
- package/dist-cli-web/assets/useInsightTabAnalytics-CplGbsbe.js +75 -0
- package/dist-cli-web/assets/{ActionToolsPanel-CmYpw8Mt.css → useInsightTabAnalytics-DDNXXH8v.css} +1 -1
- package/dist-cli-web/assets/{useTable-DC7oxmBl.js → useTable-Dmpbk7fZ.js} +1 -1
- package/dist-cli-web/assets/{useToast-CCPBE-Sy.js → useToast-Bmgpd3sl.js} +1 -1
- package/dist-cli-web/assets/{webworkerAll-FCJk6reG.js → webworkerAll-DkPWEyVL.js} +1 -1
- package/dist-cli-web/index.html +1 -1
- package/package.json +3 -3
- package/dist/chat-command-WBAJBKIE.mjs.map +0 -1
- package/dist/chunk-4J4MA3RC.mjs.map +0 -1
- package/dist/chunk-5YOHLJFB.mjs.map +0 -1
- package/dist/chunk-DKIYHA3O.mjs.map +0 -1
- package/dist/chunk-MSMDLDPB.mjs.map +0 -1
- package/dist/chunk-N2WGG3MS.mjs.map +0 -1
- package/dist-cli-web/assets/ActionToolsPanel.vue_vue_type_script_setup_true_lang--RPlmfIu.js +0 -75
- package/dist-cli-web/assets/SectionTabs.vue_vue_type_script_setup_true_lang-BlAje3Tf.js +0 -1
- package/dist-cli-web/assets/SettingsModal-DV8yDBJs.js +0 -2
- package/dist-cli-web/assets/aiChat-BY4C3UQe.js +0 -8
- package/dist-cli-web/assets/fetch-C8CcoTWY.js +0 -1
- package/dist-cli-web/assets/index-2dJCozDq.js +0 -64
- package/dist-cli-web/assets/index-6ejRbH3h.js +0 -2
- package/dist-cli-web/assets/index-CIIyg_o9.css +0 -1
- package/dist-cli-web/assets/index-kePiJ3ca.js +0 -137
- package/dist-cli-web/assets/service-DkPheDt8.js +0 -1
- package/dist-cli-web/assets/service-DvI8O_7K.js +0 -1
- package/dist-cli-web/assets/useFormControl-B0aShtLp.js +0 -1
- /package/dist/{chunk-EJBBVLUN.mjs.map → chunk-EFX66A2O.mjs.map} +0 -0
- /package/dist/{chunk-SQWN4GTQ.mjs.map → chunk-FCUUAGGC.mjs.map} +0 -0
- /package/dist/{chunk-RXMSZIYD.mjs.map → chunk-HMVM7VCA.mjs.map} +0 -0
- /package/dist/{chunk-FM3GXNEO.mjs.map → chunk-L6RJIVLS.mjs.map} +0 -0
- /package/dist/{chunk-2TV7M4CC.mjs.map → chunk-XQ6Z2KNN.mjs.map} +0 -0
- /package/dist/{chunk-CR2MU7LN.mjs.map → chunk-YI3EQYEG.mjs.map} +0 -0
- /package/dist/{http-X6OEOOSH.mjs.map → http-5BRVWAJR.mjs.map} +0 -0
- /package/dist/{import-WBJ6YIQ7.mjs.map → import-IAECQDKC.mjs.map} +0 -0
- /package/dist/{mcp-FR6OKWKL.mjs.map → mcp-XXSQJBGU.mjs.map} +0 -0
- /package/dist/{src-WE5HNN2O.mjs.map → src-4HLKMQ7S.mjs.map} +0 -0
- /package/dist/{stream-import-YYQVZDGQ.mjs.map → stream-import-PUG42I36.mjs.map} +0 -0
- /package/dist/{worker-runtime-YGB5ZDE4.mjs.map → worker-runtime-X5563TVT.mjs.map} +0 -0
package/dist-cli-web/assets/ActionToolsPanel.vue_vue_type_script_setup_true_lang--RPlmfIu.js
DELETED
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/service-Bvq1fRkC.js","assets/index-DnpnIyle.js","assets/vendor-snapdom--nZvo8Sg.js","assets/index-BZpR015e.css","assets/EChartWordcloud-CHVtyPR7.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 Ut,aS as it,d as ne,aO as At,v as bt,b$ as Qs,bw as ya,aP as yt,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 qt,b as A,ck as Pt,A as Gs,ch as Js,cm as Xs,dH as Qa,z as f,aQ as Je,aR as Oe,dI as Zs,x as Le,y as Qe,e as q,s as pt,m as Ae,u as We,dJ as eo,c7 as to,dK as ao,G as so,dL as Fa,ar as xa,dM as oo,dN as no,c8 as Ga,dO as lo,c as p,F as oe,j as he,k as Ja,O as et,dP as io,be as Xa,bV as ro,cB as uo,ca as co,bZ as mo,bY as po,b_ as go,bW as fo,c1 as Za,c2 as vo,bX as ho,a$ as mt,c4 as yo,c5 as xo,bn as bo,a9 as Z,p as c,b0 as It,c9 as _o,dQ as ko,dR as wo,aH as Fe,dS as ma,aI as Ve,bt as ba,L as Pe,bR as es,a,n as J,_ as Co,E as $o,al as _a,H as So,ah as gt,a6 as Ce,ac as Jt,bD as dt,as as ts,a0 as pa,at as Io,aT as as,aU as ss,aY as To,aV as os,bB as ns,dT as Ra,cb as Nt,a7 as Ie,au as ga,cc as Mo,a8 as Ne,b1 as Ao,aq as zt,a3 as Wt,av as ls,bC as is,cd as Oa,ce as $t,aM as rs,cf as qo,aw as Kt,dU as zo,cg as Do,aa as Ge,J as Dt,aA as _t,bT as ka,aK as tt,aL as Ht,cE as Lo,aF as ot,aE as Tt,aD as us,ab as Xt,cr as Eo,aG as Vo,cu as xt,dV as Rt,ay as Fo,bh as Zt,M as ut,bs as ds,h as Ro,S as Ba,V as Oo,t as Bo,ap as Po,bg as No,a1 as jo,aN as Uo,a5 as Wo,co as Ko,ct as Pa}from"./index-DnpnIyle.js";import{L as Ho,i as Yo,_ as Mt,u as Qo}from"./LoadingState.vue_vue_type_script_setup_true_lang-CoeQsaiL.js";import{_ as wa}from"./SectionTabs.vue_vue_type_script_setup_true_lang-BlAje3Tf.js";import{_ as Yt,M as Go}from"./index-Cw0IhKZ6.js";import{_ as rt}from"./ThemeCard.vue_vue_type_script_setup_true_lang-ndsa3-aT.js";import{T as ct}from"./Tabs-B7-Koq3x.js";import{_ as Ca}from"./Select-Beeqv0wU.js";import{_ as $a}from"./Checkbox-B8uqt13j.js";import{u as kt}from"./useToast-CCPBE-Sy.js";import{u as cs}from"./prompt-BggEDxxi.js";import{useCacheService as Jo}from"./service-Bvq1fRkC.js";import{u as Xo,b as ms,c as Lt,a as ea}from"./aiChat-BY4C3UQe.js";import{a as Zo,s as en,f as tn}from"./ChatRecordWorkspace-BAfERdPc.js";import{j as an,k as sn,_ as on,u as nn,a as ln,c as rn,b as un,d as la,e as dn,f as cn,g as mn,h as pn,i as gn,l as fn}from"./chatMessages-Zywjea1n.js";import{_ as ht}from"./EChartBar.vue_vue_type_script_setup_true_lang-DuA5xbcC.js";import"./vendor-echarts-wordcloud-DNiU8Psq.js";import{g as fa}from"./base-BWDX-164.js";import{u as ta,o as ps,y as gs,q as Sa,v as fs,j as aa,i as sa,k as vn,m as hn,t as yn,z as xn}from"./vendor-echarts-C9ugTmum.js";import{_ as bn}from"./EChart.vue_vue_type_script_setup_true_lang-BuLujQCF.js";import{a as vs}from"./Tabs-RWKHwtfM.js";import{u as hs}from"./useFormControl-B0aShtLp.js";import{V as ys}from"./VisuallyHiddenInput-DGDqcvUy.js";import{u as Ia,a as _n,i as kn}from"./semantic-index-config-builder-1sO0aEc1.js";import{c as wn,d as Na,_ as Cn}from"./TimeSelect.vue_vue_type_script_setup_true_lang-DKa1flT-.js";import{C as $n}from"./CardDecoration-D28DI1G9.js";import{_ as Sn}from"./EChartLine.vue_vue_type_script_setup_true_lang-CvmMEfYq.js";import{_ as In,u as Tn,a as Mn}from"./useTable-DC7oxmBl.js";import{P as An}from"./PageHeader-D4up77TB.js";import{_ as qn}from"./PageTabs.vue_vue_type_script_setup_true_lang-DYQRFk9s.js";import{_ as zn}from"./Alert-DU1tLAAg.js";import{_ as Dn}from"./FileDropZone.vue_vue_type_script_setup_true_lang-BKPy9Qv-.js";function jt(u,n,t){const o=u.findIndex(r=>Ut(r,n)),s=u.findIndex(r=>Ut(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 ja(u){return u?.querySelector("[data-state=checked]")}function Ln(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]:Ut(u,n)}const[Et,En]=it("ListboxRoot");var Vn=ne({__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}=At(o),{getItems:S}=bt({isProvider:!0}),{handleTypeaheadSearch:y}=Qs(),{primitiveElement:I,currentElement:w}=qt(),v=Xs(),_=ya(h),k=hs(w),C=A(),$=A(!1),g=A(!0),b=yt(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 W=Array.isArray(b.value)?[...b.value]:[],j=W.findIndex(de=>lt(de,te,o.by));o.selectionBehavior==="toggle"?(j===-1?W.push(te):W.splice(j,1),b.value=W):(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=Pt(),N=Pt(),U=Pt();function H(){return S().map(te=>te.ref).filter(te=>te.dataset.disabled!=="")}function ue(te,W=!0,j){if(!te)return;E.value=te,(j??g.value)&&E.value.focus(),W&&E.value.scrollIntoView({block:"nearest"});const de=S().find(xe=>xe.ref===te);s("highlight",de)}function se(te){if(T.value)U.trigger(te);else{const W=S().find(j=>lt(j.value,te,o.by));W&&(E.value=W.ref,ue(W.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 W=te.altKey||te.ctrlKey||te.metaKey;if(W&&te.key==="a"&&i.value){const j=S(),de=j.map(ke=>ke.value);b.value=[...de],te.preventDefault();const xe=j.at(-1);xe&&ue(xe.ref)}else if(!W){const j=y(te.key,S());j&&ue(j)}}setTimeout(()=>{$.value=!1},1)}}function G(){M.value=!0}function ge(){Re(()=>{M.value=!1})}function ee(){Re(()=>{const te=new KeyboardEvent("keydown",{key:"PageUp"});O(te)})}function K(te){const W=E.value;W?.isConnected&&(z.value=W),E.value=null,s("leave",te)}function ae(te){const W=new CustomEvent("listbox.entryFocus",{bubbles:!1,cancelable:!0});if(te.currentTarget?.dispatchEvent(W),s("entryFocus",W),!W.defaultPrevented)if(z.value)ue(z.value);else{const j=H()?.[0];ue(j)}}function O(te){const W=Gs(te,r.value,_.value);if(!W)return;let j=H();if(E.value){if(W==="last")j.reverse();else if(W==="prev"||W==="next"){W==="prev"&&j.reverse();const de=j.indexOf(E.value);j=j.slice(de+1)}ie(te,j[0])}if(j.length){const de=!E.value&&W==="prev"?j.length-1:0;ue(j[de])}if(T.value)return N.trigger(te)}function ie(te,W){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 xe=de.find(ze=>ze.ref===W)?.value;if(te.key===v.END?xe=de.at(-1)?.value:te.key===v.HOME&&(xe=de[0]?.value),!xe||!C.value)return;const ke=jt(de.map(ze=>ze.value),C.value,xe);b.value=ke}}async function we(te,W=!0){if(Js)if(await Re(),T.value)L.trigger({event:te,scroll:W});else{const j=H(),de=j.find(ke=>ke.dataset.state==="checked"),xe=W?void 0:!1;de?ue(de,W,xe):j.length&&ue(j[0],W,xe)}}let be=!1;return pe(b,()=>{if(!$.value){const te=be;be=!0,Re(()=>{we(void 0,te)})}},{immediate:!0,deep:!0}),n({highlightedElement:E,highlightItem:se,highlightFirstItem:ee,highlightSelected:we,getItems:S}),En({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:K,onEnter:ae,changeHighlight:ue,onKeydownEnter:P,onKeydownNavigation:O,onKeydownTypeAhead:R,onCompositionStart:G,onCompositionEnd:ge,highlightFirstItem:ee}),(te,W)=>(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:K,onFocusout:W[0]||(W[0]=async j=>{const de=j.relatedTarget||j.target;await Re(),E.value&&e(w)&&!e(w).contains(de)&&K(j)})},{default:D(()=>[ve(te.$slots,"default",{modelValue:e(b)}),e(k)&&te.name?(d(),B(e(ys),{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"]))}}),Fn=Vn,Rn=ne({__name:"ListboxContent",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(u){const{CollectionSlot:n}=bt(),t=Et(),o=Qa(!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]=Je(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"])),Je(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}))}}),On=Rn,Bn=ne({__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=yt(t,"modelValue",n,{defaultValue:"",passive:t.modelValue===void 0}),i=Et(),{primitiveElement:l,currentElement:r}=qt(),m=q(()=>t.disabled||i.disabled.value||!1),x=A();Zs(()=>x.value=i.highlightedElement.value?.id),Le(()=>{i.focusable.value=!1,setTimeout(()=>{t.autoFocus&&r.value?.focus()},1)}),Qe(()=>{i.focusable.value=!0});const{isComposing:h,handleCompositionStart:S,handleCompositionEnd:y}=Ia(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:[Je(v,["down","up","home","end"]),Je(_,["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"]))}}),Pn=Bn;const[jb,Nn]=it("ListboxGroup");var jn=ne({__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 Nn({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"]))}}),Un=jn;const Wn="listbox.select",[Kn,Hn]=it("ListboxItem");var Yn=ne({__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}=bt(),{forwardRef:l,currentElement:r}=We(),m=Et(),x=q(()=>r.value!=null&&r.value===m.highlightedElement.value),h=q(()=>Ln(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};to(Wn,y,v)}return Hn({isSelected:h}),(w,v)=>(d(),B(e(i),{value:w.value},{default:D(()=>[eo([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:Je(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"]))}}),Qn=Yn,Gn=ne({__name:"ListboxItemIndicator",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"span"}},setup(u){const n=u;We();const t=Kn();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)}}),Jn=Gn;function Xn(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 vt(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 Ua(u,n){if(u===void 0)throw new Error("Unexpected undefined");return u}const Zn=(u,n)=>Math.abs(u-n)<1.01,el=(u,n,t)=>{let o;return function(...s){u.clearTimeout(o),o=u.setTimeout(()=>n.apply(this,s),t)}};let St;const ia=()=>{if(St!==void 0)return St;if(typeof navigator>"u")return St=!1;if(/iP(hone|od|ad)/.test(navigator.userAgent))return St=!0;const u=navigator.maxTouchPoints;return St=navigator.platform==="MacIntel"&&u!==void 0&&u>0},Wa=u=>{const{offsetWidth:n,offsetHeight:t}=u;return{width:n,height:t}},tl=u=>u,al=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},sl=(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(Wa(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(Wa(t))};u.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(r):r()});return i.observe(t,{box:"border-box"}),()=>{i.unobserve(t)}},Qt={passive:!0},ol=typeof window>"u"?!0:"onscrollend"in window,nl=(u,n,t)=>{const o=u.scrollElement;if(!o)return;const s=u.targetWindow;if(!s)return;const i=u.options.useScrollendEvent&&ol;let l=0;const r=i?null:el(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,Qt),i&&o.addEventListener("scrollend",h,Qt),()=>{o.removeEventListener("scroll",x),i&&o.removeEventListener("scrollend",h)}},ll=(u,n)=>nl(u,n,t=>{const{horizontal:o,isRtl:s}=u.options;return o?t.scrollLeft*(s&&-1||1):t.scrollTop}),il=(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"]},rl=(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})},ul=rl;class dl{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:tl,rangeExtractor:al,onChange:()=>{},measureElement:il,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=vt(()=>(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,!(!ia()||this.targetWindow==null)&&(this._iosJustTouchEnded=!0,this._iosTouchEndTimerId=this.targetWindow.setTimeout(()=>{this._iosJustTouchEnded=!1,this._iosTouchEndTimerId=null,this._flushIosDeferredIfReady()},150))};i.addEventListener("touchstart",l,Qt),i.addEventListener("touchend",r,Qt),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&&(ia()&&(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=vt(()=>[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=vt(()=>[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=Xn(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=vt(()=>[this.getMeasurements(),this.getSize(),this.getScrollOffset(),this.options.lanes],(t,o,s,i)=>t.length===0||o===0?(this.range=null,null):(this.range=ml(t,o,s,i,i===1&&this._flatMeasurements!=null?this._flatMeasurements:null),this.range),{key:!1,debug:()=>this.options.debug}),this.getVirtualIndexes=vt(()=>{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=vt(()=>[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=xs(0,o.length-1,i?r=>s[r*2]:r=>Ua(o[r]).start,t);return Ua(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&&(ia()&&(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&&Zn(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 xs=(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 cl(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 ml(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=cl(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=xs(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 pl(u){const n=new dl(e(u)),t=so(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;Fa(t),(r=s.onChange)==null||r.call(s,i,l)}}),n._willUpdate(),Fa(t)},{immediate:!0}),ao(o),t}function gl(u){return pl(q(()=>({observeElementRect:sl,observeElementOffset:ll,scrollToFn:ul,...e(u)})))}var fl=ne({__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=xa(),o=Et(),s=oo(),{getItems:i}=bt();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=gl({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===oe&&Array.isArray(I.children)?I.children.find(v=>typeof v.type!="symbol"):I;return{item:y,is:io(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=ja(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=ja(s.value);w&&o.changeHighlight(w)})});const x=Qa("",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":{_=jt(n.options,o.firstValue.value,v);break}case"first":{_=jt(n.options,o.firstValue.value,n.options?.[0]);break}case"last":{_=jt(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=no[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(Ga()?.getAttribute("data-index")),k=h.value[_].textContent,C=h.value.map(b=>b.textContent??""),$=lo(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(oe,null,he(m.value,({is:w,item:v})=>(d(),B(Ja(w),{key:v.index}))),128))],4))}}),vl=fl;const[at,hl]=it("ComboboxRoot");var yl=ne({__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}=qt(),{multiple:r,disabled:m,ignoreFilter:x,resetSearchTermOnSelect:h,openOnFocus:S,openOnClick:y,dir:I,resetModelValueOnClear:w,highlightOnHover:v}=At(o),_=ya(I),k=yt(o,"modelValue",s,{defaultValue:o.defaultValue??(r.value?[]:void 0),passive:o.modelValue===void 0,deep:!0}),C=yt(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=Pt(),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}=an({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,G=new Set;for(const[ge,ee]of M.value){const K=N(ee,U.value);R.set(ge,K?1:0),K&&P++}for(const[ge,ee]of L.value)for(const K of ee)if(R.get(K)>0){G.add(ge);break}return{count:P,items:R,groups:G}}),ue=uo();return Le(()=>{ue?.exposed&&(ue.exposed.highlightItem=i.value?.highlightItem,ue.exposed.highlightFirstItem=i.value?.highlightFirstItem,ue.exposed.highlightSelected=i.value?.highlightSelected)}),n({filtered:H,highlightedElement:T,highlightItem:i.value?.highlightItem,highlightFirstItem:i.value?.highlightFirstItem,highlightSelected:i.value?.highlightSelected}),hl({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(ro),null,{default:D(()=>[f(e(Fn),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: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}))}}),xl=yl,bl=ne({__name:"ComboboxAnchor",props:{reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(u){const{forwardRef:n}=We();return(t,o)=>(d(),B(e(co),{"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"]))}}),_l=bl;const[kl,wl]=it("ComboboxContent");var Cl=ne({__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}=At(t),i=at(),l=q(()=>i.ignoreFilter.value?i.allItems.value.size===0:i.filterState.value.count===0),{forwardRef:r,currentElement:m}=We();mo(t.bodyLock),po(),go(i.parentElement);const x=q(()=>t.position==="popper"?t:{}),h=fo(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)"};wl({position:s});const y=A(!1);Le(()=>{i.inputElement.value&&(y.value=m.value.contains(i.inputElement.value),y.value&&i.inputElement.value.focus())}),Qe(()=>{const w=Ga();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(On),{"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(vo),{"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(Ja(e(s)==="popper"?e(ho):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}))}}),$l=Cl,Sl=ne({__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=kl();return We(),(s,i)=>e(t).open.value&&e(o).position.value==="popper"?(d(),B(e(yo),mt(Ae({key:0},n)),{default:D(()=>[ve(s.$slots,"default")]),_:3},16)):V("v-if",!0)}}),Il=Sl,Tl=ne({__name:"ComboboxCancel",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(u){const n=u;We();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"]))}}),Ml=Tl,Al=ne({__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=xo(u,n),{forwardRef:i}=We(),l=at();return l.contentId||=pt(void 0,"reka-combobox-content"),(r,m)=>(d(),B(e(bo),{present:r.forceMount||e(l).open.value},{default:D(()=>[f($l,Ae({...e(s),...r.$attrs},{ref:e(i)}),{default:D(()=>[ve(r.$slots,"default")]),_:3},16)]),_:3},8,["present"]))}}),ql=Al,zl=ne({__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]=Z("No options"))])]),_:3},16)):V("v-if",!0)}}),Dl=zl;const[bs,Ll]=it("ComboboxGroup");var El=ne({__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=Ll({id:t,labelId:""});return Le(()=>{o.allGroups.value.has(t)||o.allGroups.value.set(t,new Set)}),Qe(()=>{o.allGroups.value.delete(t)}),(l,r)=>(d(),B(e(Un),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"]))}}),ra=El,Vl=ne({__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=Et(),{primitiveElement:l,currentElement:r}=qt(),m=yt(t,"modelValue",o,{passive:t.modelValue===void 0});Le(()=>{r.value&&s.onInputElementChange(r.value)});const{isComposing:x,handleCompositionStart:h,handleCompositionEnd:S}=Ia($=>{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(Pn),{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(s).open.value,"aria-controls":e(s).contentId,"aria-autocomplete":"list",role:"combobox",autocomplete:"off",onClick:k,onInput:w,onKeydown:Je(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"]))}}),Fl=Vl,Rl=ne({__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=bs(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 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 Le(()=>{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])))}),Qe(()=>{i.allItems.value.delete(s)}),(h,S)=>x.value?(d(),B(e(Qn),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",{},()=>[Z(c(h.value),1)])]),_:3},16,["id","disabled"])):V("v-if",!0)}}),Ka=Rl,Ol=ne({__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(Jn),mt(It(n)),{default:D(()=>[ve(t.$slots,"default")]),_:3},16))}}),Bl=Ol,Pl=ne({__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;We();const t=bs({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"]))}}),Nl=Pl,jl=ne({__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(_o),mt(It(n)),{default:D(()=>[ve(t.$slots,"default")]),_:3},16))}}),Ul=jl,Wl=ne({__name:"ComboboxSeparator",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(u){const n=u;return We(),(t,o)=>(d(),B(e(Be),Ae(n,{"aria-hidden":"true"}),{default:D(()=>[ve(t.$slots,"default")]),_:3},16))}}),Kl=Wl,Hl=ne({__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}=We(),s=at(),i=q(()=>n.disabled||s.disabled.value||!1);return Le(()=>{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"]))}}),Yl=Hl,Ql=ne({__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(vl,mt(It(n)),{default:D(i=>[ve(o.$slots,"default",mt(It(i)))]),_:3},16))}}),Gl=Ql;const[Ta,Jl]=it("TagsInputRoot");var Xl=ne({__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}=At(t),y=ya(x),I=yt(t,"modelValue",o,{defaultValue:t.defaultValue,passive:!0,deep:!0}),{forwardRef:w,currentElement:v}=We(),{focused:_}=ko(v),k=hs(v),{getItems:C,CollectionSlot:$}=bt({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 Jl({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=wo(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(ys),{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}))}}),Zl=Xl,ei=ne({__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=Ta(),{forwardRef:o,currentElement:s}=We();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}=Ia();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 Le(()=>{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:[Je(h,["enter"]),Je(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"]))}}),ti=ei;const[_s,ai]=it("TagsInputItem");var si=ne({__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),o=Ta(),{forwardRef:s,currentElement:i}=We(),{CollectionItem:l}=bt(),r=q(()=>o.selectedElement.value===i.value),m=q(()=>n.disabled||o.disabled.value),x=ai({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"]))}}),oi=si,ni=ne({__name:"TagsInputItemDelete",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(u){const n=u;We();const t=Ta(),o=_s(),s=q(()=>o.disabled?.value||t.disabled.value);function i(){if(s.value)return;const l=t.modelValue.value.findIndex(r=>Ut(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"]))}}),li=ni,ii=ne({__name:"TagsInputItemText",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"span"}},setup(u){const n=u,t=_s();return We(),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",{},()=>[Z(c(e(t).displayValue.value),1)])]),_:3},16,["id"]))}}),ri=ii;function ui(u,n,t,o="group",s="zh-CN",i){const l=Xo(),{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),loadMoreSourceMessages:()=>l.loadMoreSourceMessages(),updateMaxMessages:()=>l.updateMaxMessages(),stopGeneration:()=>l.stopGeneration(r),selectAssistantForSession:h=>l.selectAssistantForSession(r,h)}}const ua=new Map;function di(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&&ua.has(i.value)?ua.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}`;ua.set(i.value,v.state),_!==h&&(h=_,ma(),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 ci(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 mi(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 pi(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=mi(u),i="application/json"):(s=ci(u),i="text/csv");const l=`data:${i};charset=utf-8,${encodeURIComponent(s)}`,{useCacheService:r}=await ba(async()=>{const{useCacheService:x}=await import("./service-Bvq1fRkC.js");return{useCacheService:x}},__vite__mapDeps([0,1,2,3]));return await r().saveToDownloads(o,l)}function Ub(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 ee=o.value;if(!ee)return null;const K=U.value;return K?`${ee}:${K.startTs}:${K.endTs}`:`${ee}:all`}function b(){!x.value||!k||(!h.value||C)&&(x.value=!1)}function F(){const ee=n.query.tab;return ee&&l.includes(ee)?ee:i}const E=A(F()),z=q(()=>E.value==="insights"),T=q(()=>["insights","ranking"].includes(E.value));pe(E,ee=>{const K={insights:"insights",ranking:"ranking","ai-chat":"ai_chat"}[ee];K&&es("feature_used",{feature_id:K})},{immediate:!0});const{timeRangeValue:M,fullTimeRange:L,availableYears:N,timeFilter:U,initialTimeState:H,resetTimeRange:ue}=di(n,t,{activeTab:E,isInitialLoad:m,currentSessionId:o,onTimeRangeChange:()=>P()});function se(){const ee=n.params.id;ee&&(s(ee),o.value!==ee&&t.replace("/"))}async function P(){const ee=o.value;if(!ee)return;const K=++_,ae=g();if(!z.value){r.value=!1,C=!0,b();return}x.value&&(C=!1),r.value=!0;try{const O=U.value,ie=Pe(),[we,be,te,W]=await Promise.all([ie.getMemberActivity(ee,O),ie.getHourlyActivity(ee,O),ie.getDailyActivity(ee,O),ie.getMessageTypeDistribution(ee,O)]);if(K!==_)return;S.value=we,y.value=be,I.value=te,w.value=W,$=ae}catch(O){K===_&&console.error("加载分析数据失败:",O)}finally{K===_&&(r.value=!1,C=!0,b())}}function R(){$=null,z.value&&P()}function G(ee){ee||(M.value=null,P())}async function ge(){const ee=o.value;if(!ee)return;const K=++v;m.value=!0;try{const ae=await Pe().getSession(ee);if(K!==v||o.value!==ee)return;h.value=ae}catch(ae){K===v&&o.value===ee&&(h.value=null,console.error("加载基础数据失败:",ae))}finally{K===v&&o.value===ee&&(m.value=!1,k=!0,b())}}return pe(E,()=>{if(!z.value){_++,ma(),r.value=!1,T.value||(C=!0,b());return}const ee=g();if(ee&&ee===$){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,ue(),k=!1,C=!T.value,r.value=z.value,x.value=!0,ma(),ge()},{immediate:!0}),Le(()=>{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:ge,loadAnalysisData:P,invalidateAnalysisData:R,handleTimeRangeInitialized:G}}const gi={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"},fi=ne({__name:"CardCaptureOverlay",setup(u){return(n,t)=>(d(),p("div",gi,[f(Yt,{type:"element","target-selector":"[data-capturable-card]",size:"xs"})]))}}),oa=ne({__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($n),u.capturable?(d(),B(fi,{key:0})):V("",!0),ve(n.$slots,"default")]),_:3}))}}),vi={class:"flex items-center justify-between"},hi={class:"font-semibold text-gray-900 dark:text-white whitespace-nowrap"},yi={key:0,class:"mt-1 text-sm text-gray-500 dark:text-gray-400"},xi={class:"flex items-center gap-2"},bi={key:0,class:"pointer-events-none opacity-0 transition-opacity duration-200 group-hover/card:pointer-events-auto group-hover/card:opacity-100"},Ye=ne({__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:J(["px-5 py-3",{"border-b border-gray-200 dark:border-white/5":u.showDivider&&o.$slots.default}])},[a("div",vi,[a("div",null,[a("p",hi,c(u.title),1),u.description?(d(),p("p",yi,c(u.description),1)):V("",!0)]),a("div",xi,[ve(o.$slots,"headerRight"),u.capturable?(d(),p("div",bi,[f(Yt,{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}))}}),_i={class:"flex items-start justify-between"},ki={class:"min-w-0 flex-1"},wi={class:"text-sm font-medium text-gray-500 dark:text-gray-400"},Ci={key:1,class:"text-xl"},$i={key:0,class:"mt-4 flex items-center text-sm"},Si={class:"text-gray-500 dark:text-gray-400"},nt=ne({__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",_i,[a("div",ki,[a("p",wi,c(u.label),1),a("p",{class:J(["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:J(["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(Co,{key:0,name:u.icon,size:"lg"},null,8,["name"])):(d(),p("span",Ci,c(u.icon),1))],2)):V("",!0)]),u.subtext||o.$slots.subtext?(d(),p("div",$i,[ve(o.$slots,"subtext",{},()=>[a("span",Si,c(u.subtext),1)])])):V("",!0)]),_:3}))}}),Ii={key:0,class:"mb-2 block text-2xl"},Wb=ne({__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:J(["text-center text-sm text-gray-400",n[u.padding||"md"]])},[u.icon?(d(),p("span",Ii,c(u.icon),1)):V("",!0),Z(" "+c(u.text||"暂无数据"),1)],2))}}),Ti=["aria-busy"],Mi={key:0,class:"insight-view-transition__indicator","aria-hidden":"true"},Ai=["inert","aria-hidden"],qi=["inert","aria-hidden"],zi=ne({__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=$o("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);So(Yo,{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)}),_a(()=>{y++,w()}),(g,b)=>(d(),p("div",{class:"insight-view-transition","aria-busy":h.value},[S.value?(d(),p("div",Mi,[f(Ho)])):V("",!0),t.value?(d(),p("div",{key:1,class:J(["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,Ai)):V("",!0),o.value?(d(),p("div",{key:2,class:J(["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,qi)):V("",!0)],8,Ti))}}),Kb=gt(zi,[["__scopeId","data-v-be8a2c26"]]),Di=ne({__name:"EChartCalendar",props:{data:{},height:{default:180},year:{}},setup(u){ta([ps,gs,Sa,fs,aa]);const n=u,{t,locale:o}=Ce(),s=Jt(),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=sa(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()}),Le(()=>{y(),window.addEventListener("resize",w)}),Qe(()=>{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 Li(u,n){if(typeof u!="object"||u===null)return!1;const t=dt(u,n);return t!=null&&t!==""}function Ha(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 Ei(u,n,t,o){const s=Ha(n,!0),i=Ha(n,!1);return o?()=>s:t?l=>Li(u[l],t)?s:i:()=>i}const Vi={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"}},Ma=Object.assign({inheritAttrs:!1},{__name:"SelectMenu",props:Wt({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:Wt(["change","blur","focus","create","clear","highlight","update:modelValue","update:open"],["update:searchTerm"]),setup(u,{expose:n,emit:t}){const o=u,s=t,i=xa(),l=ts("selectMenu",o),r=pa(u,"searchTerm",{type:String,default:""}),{t:m}=Io(),x=ls(),{filterGroups:h}=sn(),S=as(ss(l,"modelValue","defaultValue","open","defaultOpen","required","multiple","resetSearchTermOnBlur","resetSearchTermOnSelect","resetModelValueOnClear","highlightOnHover","by"),s),y=To(Fe(()=>l.portal)),I=Fe(()=>$t(l.content,{side:"bottom",sideOffset:8,collisionPadding:8,position:"popper"})),w=Fe(()=>$t(l.arrow,{rounded:!0})),v=q(()=>typeof l.clear=="object"?l.clear:{}),_=Fe(()=>l.virtualize?$t(typeof l.virtualize=="boolean"?{}:l.virtualize,{estimateSize:Ei(W.value,G.value||"md",l.descriptionKey,!!i["item-description"])}):!1),k=Fe(()=>$t(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}=os(o),{orientation:U,size:H}=ns(o),{isLeading:ue,isTrailing:se,leadingIconName:P,trailingIconName:R}=is(Fe(()=>$t(l,{trailingIcon:x.ui.icons.chevronDown}))),G=q(()=>H.value||F.value),[ge,ee]=Ra(),[K,ae]=Ra({props:{item:{type:[Object,String,Number,Boolean],required:!0},index:{type:Number,required:!1}}}),O=q(()=>Kt({extend:Kt(Vi),...x.ui?.selectMenu||{}})({color:E.value??l.color,variant:l.variant,size:G?.value??l.size,loading:l.loading,highlight:M.value??l.highlight,leading:ue.value||!!l.avatar||!!i.leading,trailing:se.value||!!i.trailing,fieldGroup:U.value,virtualize:!!l.virtualize,multiple:l.multiple}));function ie(Y){if(l.multiple&&Array.isArray(Y)){const Se=Y.map(X=>Oa(be.value,X,{labelKey:l.labelKey,valueKey:l.valueKey,by:l.by})).filter(X=>X!=null&&X!=="");return Se.length>0?Se.join(", "):void 0}return Oa(be.value,Y,{labelKey:l.labelKey,valueKey:l.valueKey,by:l.by})}const we=q(()=>l.items?.length?Do(l.items)?l.items:[l.items]:[]),be=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:Se=>Me(Se)&&!!Se.type&&["label","separator"].includes(Se.type)})}),W=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"?!W.value.find(Se=>zo(Se,Y,l.by??l.valueKey)):!W.value.length}),de=q(()=>typeof l.createItem=="object"?l.createItem.position:"bottom"),xe=Nt("triggerRef");function ke(){l.autofocus&&xe.value?.$el?.focus({focusVisible:!0})}Le(()=>{setTimeout(()=>{ke()},l.autofocusDelay)});function ze(Y){if(rs(l.modelValue)===Y)return;l.modelModifiers?.trim&&(typeof Y=="string"||Y===null||Y===void 0)&&(Y=Y?.trim()??null),l.modelModifiers?.number&&(Y=qo(Y)),l.modelModifiers?.nullable&&(Y??=null),l.modelModifiers?.optional&&!l.modelModifiers?.nullable&&Y!==null&&(Y??=void 0);const Se=new Event("change",{target:{value:Y}});s("change",Se),b(),g(),l.resetSearchTermOnSelect&&(r.value="")}const je=A(!1);function qe(Y){je.value=Y;let Se;if(Y){const X=new FocusEvent("focus");s("focus",X),$(),clearTimeout(Se)}else{const X=new FocusEvent("blur");s("blur",X),C(),l.resetSearchTermOnBlur&&(Se=setTimeout(()=>{r.value=""},100))}}function Ke(Y){Y.preventDefault(),Y.stopPropagation(),s("create",r.value)}function Ue(Y,Se){if(Me(Se)){if(Se.disabled){Y.preventDefault();return}Se.onSelect?.(Y)}}function Me(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=Nt("viewportRef"),le=Nt("comboboxRootRef");return pe(()=>l.items,async()=>{je.value&&(await Re(),le.value?.highlightFirstItem?.())},{flush:"post"}),n({triggerRef:Fe(()=>xe.value?.$el),viewportRef:Fe(()=>Q.value)}),(Y,Se)=>(d(),p(oe,null,[f(e(ge),null,{default:D(()=>[f(e(Ka),{"data-slot":"item",class:J(O.value.item({class:e(l).ui?.item})),value:r.value,onSelect:Ke},{default:D(()=>[a("span",{"data-slot":"itemLabel",class:J(O.value.itemLabel({class:e(l).ui?.itemLabel}))},[ve(Y.$slots,"create-item-label",{item:r.value},()=>[Z(c(e(m)("selectMenu.create",{label:r.value})),1)])],2)]),_:3},8,["class","value"])]),_:3}),f(e(K),null,{default:D(({item:X,index:me})=>[Me(X)&&X.type==="label"?(d(),B(e(Nl),{key:0,"data-slot":"label",class:J(O.value.label({class:[e(l).ui?.label,X.ui?.label,X.class]}))},{default:D(()=>[Z(c(e(dt)(X,e(l).labelKey)),1)]),_:2},1032,["class"])):Me(X)&&X.type==="separator"?(d(),B(e(Kl),{key:1,"data-slot":"separator",class:J(O.value.separator({class:[e(l).ui?.separator,X.ui?.separator,X.class]}))},null,8,["class"])):(d(),B(e(Ka),{key:2,"data-slot":"item",class:J(O.value.item({class:[e(l).ui?.item,Me(X)&&X.ui?.item,Me(X)&&X.class]})),disabled:Me(X)&&X.disabled,value:e(l).valueKey&&Me(X)?e(dt)(X,e(l).valueKey):X,onSelect:$e=>Ue($e,X)},{default:D(()=>[ve(Y.$slots,"item",{item:X,index:me,ui:O.value},()=>[ve(Y.$slots,"item-leading",{item:X,index:me,ui:O.value},()=>[Me(X)&&X.icon?(d(),B(Ie,{key:0,name:X.icon,"data-slot":"itemLeadingIcon",class:J(O.value.itemLeadingIcon({class:[e(l).ui?.itemLeadingIcon,X.ui?.itemLeadingIcon]}))},null,8,["name","class"])):Me(X)&&X.avatar?(d(),B(ga,Ae({key:1,size:X.ui?.itemLeadingAvatarSize||e(l).ui?.itemLeadingAvatarSize||O.value.itemLeadingAvatarSize()},X.avatar,{"data-slot":"itemLeadingAvatar",class:O.value.itemLeadingAvatar({class:[e(l).ui?.itemLeadingAvatar,X.ui?.itemLeadingAvatar]})}),null,16,["size","class"])):Me(X)&&X.chip?(d(),B(Mo,Ae({key:2,size:X.ui?.itemLeadingChipSize||e(l).ui?.itemLeadingChipSize||O.value.itemLeadingChipSize(),inset:"",standalone:""},X.chip,{"data-slot":"itemLeadingChip",class:O.value.itemLeadingChip({class:[e(l).ui?.itemLeadingChip,X.ui?.itemLeadingChip]})}),null,16,["size","class"])):V("",!0)]),a("span",{"data-slot":"itemWrapper",class:J(O.value.itemWrapper({class:[e(l).ui?.itemWrapper,Me(X)&&X.ui?.itemWrapper]}))},[a("span",{"data-slot":"itemLabel",class:J(O.value.itemLabel({class:[e(l).ui?.itemLabel,Me(X)&&X.ui?.itemLabel]}))},[ve(Y.$slots,"item-label",{item:X,index:me},()=>[Z(c(Me(X)?e(dt)(X,e(l).labelKey):X),1)])],2),Me(X)&&(e(dt)(X,e(l).descriptionKey)||i["item-description"])?(d(),p("span",{key:0,"data-slot":"itemDescription",class:J(O.value.itemDescription({class:[e(l).ui?.itemDescription,Me(X)&&X.ui?.itemDescription]}))},[ve(Y.$slots,"item-description",{item:X,index:me},()=>[Z(c(e(dt)(X,e(l).descriptionKey)),1)])],2)):V("",!0)],2),a("span",{"data-slot":"itemTrailing",class:J(O.value.itemTrailing({class:[e(l).ui?.itemTrailing,Me(X)&&X.ui?.itemTrailing]}))},[ve(Y.$slots,"item-trailing",{item:X,index:me,ui:O.value}),f(e(Bl),{"as-child":""},{default:D(()=>[f(Ie,{name:e(l).selectedIcon||e(x).ui.icons.check,"data-slot":"itemTrailingIcon",class:J(O.value.itemTrailingIcon({class:[e(l).ui?.itemTrailingIcon,Me(X)&&X.ui?.itemTrailingIcon]}))},null,8,["name","class"])]),_:2},1024)],2)])]),_:2},1032,["class","disabled","value","onSelect"]))]),_:3}),f(e(xl),Ae({ref_key:"comboboxRootRef",ref:le},e(S),{"ignore-filter":"","as-child":"",name:e(T),disabled:e(L),"onUpdate:modelValue":ze,"onUpdate:open":qe}),{default:D(({modelValue:X,open:me})=>[f(e(_l),{"as-child":""},{default:D(()=>[f(e(Yl),Ae({id:e(z),ref_key:"triggerRef",ref:xe,"data-slot":"base",class:O.value.base({class:[e(l).ui?.base,e(l).class]}),tabindex:"0"},{...Y.$attrs,...e(N)}),{default:D(()=>[e(ue)||e(l).avatar||i.leading?(d(),p("span",{key:0,"data-slot":"leading",class:J(O.value.leading({class:e(l).ui?.leading}))},[ve(Y.$slots,"leading",{modelValue:X,open:me,ui:O.value},()=>[e(ue)&&e(P)?(d(),B(Ie,{key:0,name:e(P),"data-slot":"leadingIcon",class:J(O.value.leadingIcon({class:e(l).ui?.leadingIcon}))},null,8,["name","class"])):e(l).avatar?(d(),B(ga,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:X,open:me,ui:O.value},()=>[(d(!0),p(oe,null,he([ie(X)],$e=>(d(),p(oe,{key:$e},[$e!=null?(d(),p("span",{key:0,"data-slot":"value",class:J(O.value.value({class:e(l).ui?.value}))},c($e),3)):(d(),p("span",{key:1,"data-slot":"placeholder",class:J(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:J(O.value.trailing({class:e(l).ui?.trailing}))},[ve(Y.$slots,"trailing",{modelValue:X,open:me,ui:O.value},()=>[e(l).clear&&!re(X)?(d(),B(e(Ml),{key:0,"as-child":""},{default:D(()=>[f(Ne,Ae({as:"span",icon:e(l).clearIcon||e(x).ui.icons.close,size:G.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(Ie,{key:1,name:e(R),"data-slot":"trailingIcon",class:J(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(Ul),mt(It(e(y))),{default:D(()=>[f(e(Ao),null,{default:D(()=>[f(e(ql),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:J(O.value.focusScope({class:e(l).ui?.focusScope}))},{default:D(()=>[ve(Y.$slots,"content-top"),e(l).searchInput?(d(),B(e(Fl),{key:0,modelValue:r.value,"onUpdate:modelValue":Se[1]||(Se[1]=$e=>r.value=$e),"display-value":()=>r.value,"as-child":""},{default:D(()=>[f(zt,Ae({autofocus:"",autocomplete:"off",size:G.value},k.value,{"model-modifiers":{trim:e(l).modelModifiers?.trim},"data-slot":"input",class:O.value.input({class:e(l).ui?.input}),onChange:Se[0]||(Se[0]=Oe(()=>{},["stop"]))}),null,16,["size","model-modifiers","class"])]),_:1},8,["modelValue","display-value"])):V("",!0),f(e(Dl),{"data-slot":"empty",class:J(O.value.empty({class:e(l).ui?.empty}))},{default:D(()=>[ve(Y.$slots,"empty",{searchTerm:r.value},()=>[Z(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:J(O.value.viewport({class:e(l).ui?.viewport}))},[e(l).virtualize?(d(),p(oe,{key:0},[j.value&&de.value==="top"?(d(),B(e(ee),{key:0})):V("",!0),f(e(Gl),Ae({options:W.value,"text-content":$e=>Me($e)?e(dt)($e,e(l).labelKey):String($e)},_.value),{default:D(({option:$e,virtualItem:He})=>[f(e(ae),{item:$e,index:He.index},null,8,["item","index"])]),_:1},16,["options","text-content"]),j.value&&de.value==="bottom"?(d(),B(e(ee),{key:1})):V("",!0)],64)):(d(),p(oe,{key:1},[j.value&&de.value==="top"?(d(),B(e(ra),{key:0,"data-slot":"group",class:J(O.value.group({class:e(l).ui?.group}))},{default:D(()=>[f(e(ee))]),_:1},8,["class"])):V("",!0),(d(!0),p(oe,null,he(te.value,($e,He)=>(d(),B(e(ra),{key:`group-${He}`,"data-slot":"group",class:J(O.value.group({class:e(l).ui?.group}))},{default:D(()=>[(d(!0),p(oe,null,he($e,(Xe,De)=>(d(),B(e(ae),{key:`group-${He}-${De}`,item:Xe,index:De},null,8,["item","index"]))),128))]),_:2},1032,["class"]))),128)),j.value&&de.value==="bottom"?(d(),B(e(ra),{key:1,"data-slot":"group",class:J(O.value.group({class:e(l).ui?.group}))},{default:D(()=>[f(e(ee))]),_:1},8,["class"])):V("",!0)],64))],2),ve(Y.$slots,"content-bottom")]),_:3},8,["class"]),e(l).arrow?(d(),B(e(Il),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))}}),Fi={"zh-CN":{message:"消息记录",member:"成员",meta:"群信息",member_name_history:"昵称历史"},"en-US":{message:"Messages",member:"Members",meta:"Chat Info",member_name_history:"Nickname History"}},va={"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 ha(u,n="zh-CN"){return Fi[ks(n)]?.[u]||u}function Aa(u,n,t="zh-CN"){return va[ks(t)]?.[u]?.[n]||n}function ks(u){return u.startsWith("zh")?"zh-CN":"en-US"}const Ri={key:0,class:"text-xs font-medium text-gray-500 dark:text-gray-400"},Oi={key:0,class:"flex-1 overflow-y-auto p-2"},Bi=["onClick"],Pi={class:"text-sm font-medium text-gray-700 dark:text-gray-300"},Ni={class:"flex-1 truncate text-right text-xs text-gray-400"},ji={key:0,class:"ml-4 mt-1 space-y-0.5"},Ui=["title","onDblclick"],Wi={class:"font-mono text-gray-700 dark:text-gray-300"},Ki={class:"flex-1 truncate text-right text-[10px] text-gray-400"},Hi={key:1,class:"flex flex-1 flex-col items-center gap-1 overflow-y-auto px-2 pb-2"},Yi=["title","onClick"],Qi=ne({__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}),Le(()=>{h()}),(w,v)=>{const _=Ie,k=Ne;return d(),p("div",{class:J(["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:J(["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",Ri,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",Hi,[(d(!0),p(oe,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(ha)(C.name,e(s))} (${C.name})`,onClick:$=>y(C.name)},[f(_,{name:"i-heroicons-table-cells",class:"h-5 w-5"})],8,Yi))),128))])):(d(),p("div",Oi,[(d(!0),p(oe,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",Pi,c(C.name),1),a("span",Ni,c(e(ha)(C.name,e(s))),1)],8,Bi),x.value.has(C.name)?(d(),p("div",ji,[(d(!0),p(oe,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",Wi,c($.name),1),a("span",Ki,c(e(Aa)(C.name,$.name,e(s))),1)],40,Ui))),128))])):V("",!0)]))),128))]))],2)}}}),Gi={class:"max-h-[70vh] overflow-hidden p-6"},Ji={class:"mb-4 flex items-center gap-2"},Xi={class:"text-lg font-semibold text-gray-900 dark:text-white"},Zi={key:0,class:"max-h-[50vh] space-y-3 overflow-y-auto pr-2"},er={class:"mb-2 flex items-start justify-between gap-2"},tr={class:"flex-1 text-sm font-medium text-gray-700 dark:text-gray-300"},ar={class:"shrink-0 text-xs text-gray-400"},sr={class:"mb-2 rounded bg-white p-2 dark:bg-gray-800"},or={class:"whitespace-pre-wrap break-all font-mono text-xs text-gray-600 dark:text-gray-400"},nr={key:0,class:"mb-2 text-xs text-gray-500 dark:text-gray-400"},lr={class:"flex justify-end gap-2"},ir={key:1,class:"py-8 text-center text-gray-500 dark:text-gray-400"},rr={class:"text-sm"},ur={class:"mt-4 flex justify-end"},dr=ne({__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=Ie,m=Ne,x=Ge;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",Gi,[a("div",Ji,[f(r,{name:"i-heroicons-clock",class:"h-5 w-5 text-pink-500"}),a("h3",Xi,c(e(t)("ai.sqlLab.history.title")),1)]),u.history.length>0?(d(),p("div",Zi,[(d(!0),p(oe,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",er,[a("p",tr,c(h.prompt),1),a("span",ar,c(s(h.timestamp)),1)]),a("div",sr,[a("pre",or,c(h.sql),1)]),h.explanation?(d(),p("p",nr,c(h.explanation),1)):V("",!0),a("div",lr,[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"}),Z(" "+c(e(t)("ai.sqlLab.history.execute")),1)]),_:1},8,["onClick"])])]))),128))])):(d(),p("div",ir,[f(r,{name:"i-heroicons-clock",class:"mx-auto mb-2 h-8 w-8 text-gray-300 dark:text-gray-600"}),a("p",rr,c(e(t)("ai.sqlLab.history.empty")),1)])),a("div",ur,[f(m,{variant:"ghost",onClick:l[0]||(l[0]=h=>o("update:open",!1))},{default:D(()=>[Z(c(e(t)("common.close")),1)]),_:1})])])]),_:1},8,["open"])}}}),cr={class:"flex flex-1 flex-col overflow-hidden"},mr={key:0,class:"border-b border-red-200 bg-red-50 p-4 dark:border-red-900 dark:bg-red-950"},pr={class:"flex items-start gap-2"},gr={class:"min-w-0 flex-1"},fr={class:"text-sm font-medium text-red-800 dark:text-red-200"},vr={class:"mt-1 break-all font-mono text-xs text-red-600 dark:text-red-400"},hr={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"},yr={class:"flex items-center gap-4 text-sm text-gray-600 dark:text-gray-400"},xr={class:"flex cursor-pointer items-center gap-1.5"},br={class:"text-xs"},_r={class:"flex items-center gap-2"},kr={key:2,class:"flex-1 overflow-auto"},wr={class:"min-w-full divide-y divide-gray-200 dark:divide-gray-700"},Cr={class:"sticky top-0 bg-gray-100 dark:bg-page-dark"},$r=["onClick"],Sr={class:"flex items-center gap-1"},Ir={class:"flex flex-col"},Tr={class:"text-gray-700 dark:text-gray-300"},Mr={key:0,class:"font-mono text-[10px] text-gray-400"},Ar={key:0,class:"sticky right-0 w-12 bg-gray-100 px-2 py-2 dark:bg-page-dark"},qr={class:"divide-y divide-gray-200 bg-white dark:divide-gray-700 dark:bg-page-dark"},zr=["title"],Dr={key:0,class:"sticky right-0 w-12 bg-white px-2 py-2 dark:bg-page-dark"},Lr={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"},Er={class:"flex items-center gap-1"},Vr={class:"mx-2 text-xs text-gray-600 dark:text-gray-400"},Fr={class:"flex items-center gap-2 text-xs text-gray-500 dark:text-gray-400"},Rr={key:4,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={key:5,class:"flex flex-1 items-center justify-center text-gray-500 dark:text-gray-400"},Nr={class:"text-center"},jr={class:"mt-2 text-sm"},Ur={class:"mt-1 text-xs text-gray-400"},Wr={class:"max-h-[70vh] overflow-hidden p-6"},Kr={class:"mb-4 flex items-center gap-2"},Hr={class:"text-lg font-semibold text-gray-900 dark:text-white"},Yr={key:0,class:"flex items-center justify-center py-8"},Qr={class:"ml-2 text-sm text-gray-500"},Gr={key:1,class:"max-h-[50vh] overflow-y-auto"},Jr=["innerHTML"],Xr={key:0,class:"mt-2 flex items-center text-xs text-gray-400"},Zr={key:2,class:"rounded-lg bg-red-50 p-4 dark:bg-red-950"},eu={class:"text-sm text-red-600 dark:text-red-400"},tu={class:"mt-4 flex justify-end gap-2"},au=ne({__name:"ResultTable",props:{result:{},error:{},sql:{},prompt:{}},setup(u,{expose:n}){const{t,locale:o}=Ce(),s=kt(),i=cs(),l=Dt(),{aiGlobalSettings:r}=_t(i),m=[/^ts$/i,/^timestamp$/i,/^time$/i,/_at$/i,/_ts$/i,/_time$/i,/^date$/i];function x(W){return m.some(j=>j.test(W))}function h(W){if(typeof W!="number"||!Number.isFinite(W))return!1;const j=946684800,de=4102444800,xe=j*1e3,ke=de*1e3;return W>=j&&W<=de||W>=xe&&W<=ke}function S(W){const de=W>1e10?W:W*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(W){return W.findIndex(j=>y.some(de=>de.test(j)))}function w(W){l.openChatRecordDrawer({scrollToMessageId:W})}const v=new Go({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(W){const j=W.split("."),de=j.length>1?j[j.length-1]:W,xe=va[o.value]||va["zh-CN"];for(const ke of Object.values(xe))if(ke[de])return ke[de];return null}const ue=q(()=>{if(!_.result||!k.value)return _.result?.rows||[];const W=_.result.columns.indexOf(k.value);return W===-1?_.result.rows:[..._.result.rows].sort((j,de)=>{const xe=j[W],ke=de[W];if(xe===null)return 1;if(ke===null)return-1;if(typeof xe=="number"&&typeof ke=="number")return C.value==="asc"?xe-ke:ke-xe;const ze=String(xe).localeCompare(String(ke));return C.value==="asc"?ze:-ze})}),se=q(()=>_.result?Math.ceil(ue.value.length/g.value):0),P=q(()=>{const W=($.value-1)*g.value,j=W+g.value;return ue.value.slice(W,j)}),R=q(()=>_.result?I(_.result.columns):-1),G=q(()=>R.value!==-1);function ge(W){k.value===W?C.value=C.value==="asc"?"desc":"asc":(k.value=W,C.value="asc"),$.value=1}function ee(W){g.value=W,$.value=1}function K(W,j){return W===null?"NULL":typeof W=="object"?JSON.stringify(W):F.value&&j&&x(j)&&h(W)?S(W):String(W)}async function ae(){if(!(!_.result||U.value)){U.value=!0;try{const W=r.value.sqlExportFormat??"csv",j=await pi({columns:_.result.columns,rows:_.result.rows},W);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:()=>{Jo().showInFolder(j.filePath)}}]})}else s.fail(t("common.exportFailed"),{description:j.error})}catch(W){console.error("导出失败:",W),s.fail(t("common.exportFailed"),{description:String(W)})}finally{U.value=!1}}}function O(){k.value=null,C.value="asc",$.value=1}function ie(){if(!_.result)return"";const W=50,j=_.result.rows.slice(0,W),de=_.result.columns.join(" | "),xe=_.result.columns.map(()=>"---").join(" | "),ke=j.map(je=>je.map(qe=>qe===null?"NULL":String(qe).slice(0,50)).join(" | "));let ze=`| ${de} |
|
|
4
|
-
| ${xe} |
|
|
5
|
-
`;return ze+=ke.map(je=>`| ${je} |`).join(`
|
|
6
|
-
`),_.result.rows.length>W&&(ze+=`
|
|
7
|
-
|
|
8
|
-
(仅展示前 ${W} 行,共 ${_.result.rowCount} 行)`),ze}async function we(){z.value=!0,M.value="",L.value=null,N.value="",await be()}async function be(){if(!await ka().hasConfig()){L.value=t("common.errorNoAIConfig");return}T.value=!0,L.value=null,N.value="";try{const j=ie();let de="";_.prompt&&(de=`用户的查询意图:${_.prompt}
|
|
9
|
-
|
|
10
|
-
`),_.sql&&(de+=`执行的 SQL 语句:
|
|
11
|
-
\`\`\`sql
|
|
12
|
-
${_.sql}
|
|
13
|
-
\`\`\`
|
|
14
|
-
|
|
15
|
-
`);const xe=`请分析以下 SQL 查询结果,用简洁的中文总结关键发现和洞察。
|
|
16
|
-
|
|
17
|
-
${de}查询结果(共 ${_.result?.rowCount||0} 行):
|
|
18
|
-
|
|
19
|
-
${j}
|
|
20
|
-
|
|
21
|
-
请提供:
|
|
22
|
-
1. 结果概述(一句话总结)
|
|
23
|
-
2. 关键发现(2-4 个要点)
|
|
24
|
-
3. 如有明显的趋势或异常,请指出`,ke=await ms().chatStream([{role:"system",content:"你是一个数据分析专家,擅长从查询结果中提取关键信息和洞察。请用简洁清晰的中文回答。"},{role:"user",content:xe}],{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}),(W,j)=>{const de=Ie,xe=$a,ke=Ne,ze=Ca,je=Ge;return d(),p("div",cr,[u.error?(d(),p("div",mr,[a("div",pr,[f(de,{name:"i-heroicons-exclamation-circle",class:"mt-0.5 h-5 w-5 shrink-0 text-red-500"}),a("div",gr,[a("p",fr,c(e(t)("ai.sqlLab.result.queryError")),1),a("p",vr,c(u.error),1)])])])):V("",!0),u.result?(d(),p("div",hr,[a("div",yr,[a("label",xr,[f(xe,{"model-value":F.value,size:"xs","onUpdate:modelValue":E},null,8,["model-value"]),a("span",br,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"}),Z(" "+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"}),Z(" "+c(u.result.duration)+" ms ",1)])]),a("div",_r,[f(ke,{variant:"ghost",size:"xs",onClick:we},{default:D(()=>[f(de,{name:"i-heroicons-sparkles",class:"mr-1 h-4 w-4"}),Z(" "+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"}),Z(" "+c(e(t)("common.export")),1)]),_:1},8,["loading"])])])):V("",!0),u.result&&u.result.rows.length>0?(d(),p("div",kr,[a("table",wr,[a("thead",Cr,[a("tr",null,[(d(!0),p(oe,null,he(u.result.columns,(qe,Ke)=>(d(),p("th",{key:Ke,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=>ge(qe)},[a("div",Sr,[a("div",Ir,[a("span",Tr,c(H(qe)||qe),1),H(qe)?(d(),p("span",Mr,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,$r))),128)),G.value?(d(),p("th",Ar)):V("",!0)])]),a("tbody",qr,[(d(!0),p(oe,null,he(P.value,(qe,Ke)=>(d(),p("tr",{key:Ke,class:"hover:bg-gray-50 dark:hover:bg-gray-800"},[(d(!0),p(oe,null,he(qe,(Ue,Me)=>(d(),p("td",{key:Me,class:J(["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:K(Ue,u.result.columns[Me])},c(K(Ue,u.result.columns[Me])),11,zr))),128)),G.value?(d(),p("td",Dr,[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",Lr,[a("div",Er,[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",Vr,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",Fr,[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":ee},null,8,["model-value","items"])])])):V("",!0),u.result&&u.result.rows.length===0?(d(),p("div",Rr,[a("div",Or,[f(de,{name:"i-heroicons-inbox",class:"mx-auto h-12 w-12 text-gray-300 dark:text-gray-600"}),a("p",Br,c(e(t)("ai.sqlLab.result.emptyResult")),1)])])):V("",!0),!u.result&&!u.error?(d(),p("div",Pr,[a("div",Nr,[f(de,{name:"i-heroicons-command-line",class:"mx-auto h-12 w-12 text-gray-300 dark:text-gray-600"}),a("p",jr,c(e(t)("ai.sqlLab.result.initialState")),1),a("p",Ur,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",Wr,[a("div",Kr,[f(de,{name:"i-heroicons-sparkles",class:"h-5 w-5 text-pink-500"}),a("h3",Hr,c(e(t)("ai.sqlLab.result.summaryTitle")),1)]),T.value&&!N.value?(d(),p("div",Yr,[f(de,{name:"i-heroicons-arrow-path",class:"h-6 w-6 animate-spin text-pink-500"}),a("span",Qr,c(e(t)("ai.sqlLab.result.analyzing")),1)])):N.value||M.value?(d(),p("div",Gr,[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,Jr),T.value?(d(),p("div",Xr,[f(de,{name:"i-heroicons-arrow-path",class:"mr-1 h-3 w-3 animate-spin"}),Z(" "+c(e(t)("common.generating")),1)])):V("",!0)])):V("",!0),L.value?(d(),p("div",Zr,[a("p",eu,c(L.value),1)])):V("",!0),a("div",tu,[!T.value&&M.value?(d(),B(ke,{key:0,variant:"outline",onClick:be},{default:D(()=>[f(de,{name:"i-heroicons-arrow-path",class:"mr-1 h-4 w-4"}),Z(" "+c(e(t)("common.regenerate")),1)]),_:1})):V("",!0),f(ke,{variant:"ghost",onClick:te},{default:D(()=>[Z(c(e(t)("common.close")),1)]),_:1})])])]),_:1},8,["open"])])}}}),su={class:"h-full p-3"},ou={class:"relative z-20 flex items-center gap-2 border-b border-gray-200 px-4 py-2 dark:border-gray-700"},nu={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"},lu={class:"flex-1 overflow-auto"},iu={key:0,class:"flex h-full items-center justify-center"},ru={class:"text-sm text-gray-400"},uu={key:1,class:"w-full border-collapse text-xs"},du={class:"sticky top-0 bg-gray-50 dark:bg-page-dark"},cu={class:"font-mono text-xs font-medium text-gray-700 dark:text-gray-300"},mu={class:"text-[10px] leading-tight text-gray-400"},pu={class:"border-b border-r border-gray-100 px-2 py-1.5 text-gray-400 dark:border-gray-800"},gu=["title"],fu=["onUpdate:modelValue"],vu={class:"w-full truncate px-2 py-1.5"},hu={key:0,class:"italic text-gray-400"},yu={key:1},xu={class:"border-b border-gray-100 px-2 py-1.5 text-center dark:border-gray-800"},bu={key:0,class:"flex items-center justify-center gap-1"},_u={key:1,class:"flex items-center justify-center gap-1"},ku={class:"flex items-center justify-between border-t border-gray-200 px-4 py-2 dark:border-gray-700"},wu={class:"text-xs text-gray-500 dark:text-gray-400"},Cu={key:0,class:"flex items-center gap-3"},$u={class:"text-xs text-gray-500 dark:text-gray-400"},Ot=100,Su=ne({__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/Ot))),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 K={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[K,...ae]});async function F(){if(!k.value){C.value=[];return}try{const K=s.sessionId.replace(/'/g,"''"),ae=await ot().executeAiSQL(`SELECT id, title FROM ai_chat WHERE session_id = '${K}' 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 K=[...l.value];return K.sort((ae,O)=>{const ie=n.indexOf(ae.name),we=n.indexOf(O.name);return ie!==-1&&we!==-1?ie-we:ie!==-1?-1:we!==-1?1:0}),K}),T=q(()=>z.value.map(K=>({label:K.name,value:K.name})));async function M(K){return i.value==="ai"?await ot().executeAiSQL(K):await Pe().executeSQL(s.sessionId,K)}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 K=k.value?"ai_message":z.value[0].name;r.value=z.value.some(ae=>ae.name===K)?K:z.value[0].name}else r.value="",m.value=null}catch(K){console.error("Failed to load schema:",K)}}function N(){if(!k.value)return"";const K=s.sessionId.replace(/'/g,"''"),ae=r.value;return ae==="ai_chat"?` WHERE "session_id" = '${K}'`: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" = '${K}')`:""}async function U(){if(r.value){x.value=!0,h.value=null,w.value=null;try{const K=N(),ae=await M(`SELECT COUNT(*) as cnt FROM "${r.value}"${K}`);y.value=ae?.rows?.[0]?.[0]??0;const O=(S.value-1)*Ot;m.value=await M(`SELECT * FROM "${r.value}"${K} ORDER BY rowid DESC LIMIT ${Ot} OFFSET ${O}`)}catch(K){h.value=K.message||String(K),m.value=null}finally{x.value=!1}}}function H(K){if(!m.value)return;w.value=K;const ae=m.value.rows[K],O={};m.value.columns.forEach((ie,we)=>{O[ie]=ae[we]==null?"":String(ae[we])}),v.value=O}function ue(){w.value=null,v.value={}}async function se(){if(w.value===null||!m.value)return;const K=r.value,ae=l.value.find(j=>j.name===K);if(!ae)return;const O=ae.columns.find(j=>j.pk);if(!O){h.value="No primary key found for this table";return}const ie=m.value.rows[w.value],we=m.value.columns.indexOf(O.name),be=ie[we],te=m.value.columns.filter(j=>j!==O.name).map(j=>`"${j}" = '${v.value[j].replace(/'/g,"''")}'`).join(", "),W=`UPDATE "${K}" SET ${te} WHERE "${O.name}" = '${String(be).replace(/'/g,"''")}'`;try{await M(W),ue(),await U()}catch(j){h.value=j.message||String(j)}}async function P(K){if(!m.value)return;const ae=r.value,O=l.value.find(j=>j.name===ae);if(!O)return;const ie=O.columns.find(j=>j.pk);if(!ie){h.value="No primary key found for this table";return}const we=m.value.rows[K],be=m.value.columns.indexOf(ie.name),te=we[be],W=`DELETE FROM "${ae}" WHERE "${ie.name}" = '${String(te).replace(/'/g,"''")}'`;try{await M(W),await U()}catch(j){h.value=j.message||String(j)}}function R(K){confirm(t("analysis.debug.tableBrowser.confirmDelete"))&&P(K)}async function G(){if(confirm(t("analysis.debug.tableBrowser.confirmClearDebug"))){_.value=!0;try{(await ot().clearDebugContext()).success&&await U()}catch(K){h.value=K.message||String(K)}finally{_.value=!1}}}function ge(K){navigator.clipboard.writeText(K)}function ee(K,ae,O){if(!m.value)return[];const ie=K==null?"NULL":String(K),we=m.value.rows[O],be={};return m.value.columns.forEach((te,W)=>{be[te]=we[W]}),[[{label:t("analysis.debug.tableBrowser.copyCell"),class:"p-2",onSelect:()=>ge(ie)},{label:t("analysis.debug.tableBrowser.editRow"),class:"p-2",onSelect:()=>H(O)},{label:t("analysis.debug.tableBrowser.copyRow"),class:"p-2",onSelect:()=>ge(JSON.stringify(be,null,2))},{label:t("analysis.debug.tableBrowser.deleteRow"),class:"p-2 text-red-600 dark:text-red-400",onSelect:()=>P(O)}]]}return pe(i,K=>{localStorage.setItem("debug_dbSource",K),r.value="",m.value=null,y.value=0,S.value=1,$.value="",L(),F()}),pe(r,K=>{K&&(S.value=1,U())}),pe($,()=>{r.value==="ai_message"&&(S.value=1,U())}),pe(S,()=>{U()}),Le(async()=>{await Promise.all([L(),F()]),r.value&&await U()}),(K,ae)=>{const O=Ma,ie=Ne,we=Lo;return d(),p("div",su,[f(e(rt),{shadow:!1,class:"flex h-full min-w-0 flex-col"},{default:D(()=>[a("div",ou,[f(e(ct),{modelValue:i.value,"onUpdate:modelValue":ae[0]||(ae[0]=be=>i.value=be),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:J([k.value?"max-w-[50%]":"flex-1","min-w-0"])},[f(e(ct),{modelValue:r.value,"onUpdate:modelValue":ae[1]||(ae[1]=be=>r.value=be),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]=be=>$.value=be),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(ie,{key:1,variant:"ghost",size:"xs",color:"error",icon:"i-heroicons-trash",loading:_.value,onClick:G},{default:D(()=>[Z(c(e(t)("analysis.debug.tableBrowser.clearDebugContext")),1)]),_:1},8,["loading"])):V("",!0),f(ie,{variant:"ghost",size:"xs",icon:"i-heroicons-arrow-path",loading:x.value,onClick:U},{default:D(()=>[Z(c(e(t)("analysis.debug.tableBrowser.refresh")),1)]),_:1},8,["loading"])]),h.value?(d(),p("div",nu,c(h.value),1)):V("",!0),a("div",lu,[!m.value&&!x.value?(d(),p("div",iu,[a("p",ru,c(e(t)("analysis.debug.tableBrowser.noData")),1)])):m.value?(d(),p("table",uu,[a("thead",du,[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(oe,null,he(m.value.columns,be=>(d(),p("th",{key:be,class:"border-b border-r border-gray-200 px-2 py-1.5 text-left dark:border-gray-700"},[a("div",cu,c(be),1),a("div",mu,c(e(Aa)(r.value,be,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(oe,null,he(m.value.rows,(be,te)=>(d(),p("tr",{key:te,class:"transition-colors hover:bg-gray-50 dark:hover:bg-gray-800/50"},[a("td",pu,c((S.value-1)*Ot+te+1),1),(d(!0),p(oe,null,he(be,(W,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:W==null?"NULL":String(W)},[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,fu)),[[Ht,v.value[m.value.columns[j]]]]):(d(),B(we,{key:1,items:ee(W,j,te)},{default:D(()=>[a("div",vu,[W==null?(d(),p("span",hu,"NULL")):(d(),p("span",yu,c(String(W).slice(0,200)),1))])]),_:2},1032,["items"]))],8,gu))),128)),a("td",xu,[w.value===te?(d(),p("div",bu,[f(ie,{size:"xs",color:"primary",variant:"ghost",icon:"i-heroicons-check",onClick:se}),f(ie,{size:"xs",color:"neutral",variant:"ghost",icon:"i-heroicons-x-mark",onClick:ue})])):(d(),p("div",_u,[f(ie,{size:"xs",variant:"ghost",icon:"i-heroicons-pencil-square",onClick:W=>H(te)},null,8,["onClick"]),f(ie,{size:"xs",variant:"ghost",color:"error",icon:"i-heroicons-trash",onClick:W=>R(te)},null,8,["onClick"])]))])]))),128))])])):V("",!0)]),a("div",ku,[a("span",wu,c(y.value>0?e(t)("analysis.debug.tableBrowser.rowCount",{count:y.value}):""),1),I.value>1?(d(),p("div",Cu,[f(ie,{size:"xs",variant:"ghost",disabled:S.value<=1,icon:"i-heroicons-chevron-left",onClick:ae[3]||(ae[3]=be=>S.value--)},null,8,["disabled"]),a("span",$u,c(e(t)("analysis.debug.tableBrowser.page",{current:S.value,total:I.value})),1),f(ie,{size:"xs",variant:"ghost",disabled:S.value>=I.value,icon:"i-heroicons-chevron-right",onClick:ae[4]||(ae[4]=be=>S.value++)},null,8,["disabled"])])):V("",!0)])]),_:1})])}}}),Iu={class:"flex h-full"},Tu={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"},Mu={key:0,class:"py-2"},Au={class:"px-3 py-1.5 text-[11px] font-semibold tracking-wide text-gray-400 uppercase dark:text-gray-500"},qu=["title","onClick"],zu={class:"truncate text-xs font-medium"},Du={class:"truncate text-[10px] opacity-50"},Lu={key:1,class:"border-t border-gray-200 py-2 dark:border-gray-700"},Eu={class:"px-3 py-1.5 text-[11px] font-semibold tracking-wide text-gray-400 uppercase dark:text-gray-500"},Vu=["title","onClick"],Fu={class:"truncate text-xs font-medium"},Ru={class:"truncate text-[10px] opacity-50"},Ou={class:"flex min-h-0 flex-1 flex-col gap-4 overflow-y-auto p-4"},Bu={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"},Pu={class:"text-sm font-medium text-primary-700 dark:text-primary-300"},Nu={class:"mt-1 text-xs text-primary-600/70 dark:text-primary-400/70"},ju={key:1,class:"flex flex-col gap-3"},Uu={class:"text-sm font-medium text-gray-700 dark:text-gray-300"},Wu={class:"grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-3"},Ku={class:"text-xs font-medium text-gray-600 dark:text-gray-400"},Hu={key:0,class:"text-red-500"},Yu={key:1,class:"ml-1 text-gray-400"},Qu={key:2,class:"ml-1 text-gray-400"},Gu={class:"flex items-center gap-3"},Ju={key:3,class:"text-xs text-gray-500 dark:text-gray-400"},Xu={key:2,class:"flex-1 min-h-0"},Zu={class:"mb-2 text-sm font-medium text-gray-700 dark:text-gray-300"},ed={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"},td={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"},ad={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"},sd=ne({__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}),Le(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=Ma,E=zt,z=Ne,T=Ie;return d(),p("div",Iu,[a("div",Tu,[I.value.length>0?(d(),p("div",Mu,[a("div",Au,c(e(n)("ai.lab.toolTest.coreTools")),1),(d(!0),p(oe,null,he(I.value,M=>(d(),p("button",{key:M.name,class:J(["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",zu,c(y(M.name)),1),a("span",Du,c(M.name),1)],10,qu))),128))])):V("",!0),w.value.length>0?(d(),p("div",Lu,[a("div",Eu,c(e(n)("ai.lab.toolTest.analysisTools")),1),(d(!0),p(oe,null,he(w.value,M=>(d(),p("button",{key:M.name,class:J(["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",Fu,c(y(M.name)),1),a("span",Ru,c(M.name),1)],10,Vu))),128))])):V("",!0)]),f(e(rt),{class:"my-3 mr-3 flex min-w-0 flex-1 flex-col"},{default:D(()=>[a("div",Ou,[v.value?(d(),p("div",Bu,[a("div",Pu,c(y(v.value.name)),1),a("div",Nu,c(v.value.description),1)])):V("",!0),_.value.length>0?(d(),p("div",ju,[a("h3",Uu,c(e(n)("ai.lab.toolTest.parameters")),1),a("div",Wu,[(d(!0),p(oe,null,he(_.value,M=>(d(),p("div",{key:M.name,class:"flex flex-col gap-1"},[a("label",Ku,[Z(c(M.name)+" ",1),M.required?(d(),p("span",Hu,"*")):V("",!0),M.type==="number"?(d(),p("span",Yu,"(number)")):V("",!0),M.isArray?(d(),p("span",Qu,"("+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",Gu,[l.value?(d(),B(z,{key:1,color:"error",icon:"i-heroicons-stop",onClick:$},{default:D(()=>[Z(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(()=>[Z(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",Ju,c(e(n)("ai.lab.toolTest.elapsed",{ms:S.value})),1)):V("",!0)]),m.value||x.value?(d(),p("div",Xu,[a("h3",Zu,c(e(n)("ai.lab.toolTest.result")),1),x.value?(d(),p("div",ed,c(x.value),1)):(d(),p(oe,{key:1},[h.value?(d(),p("div",td,c(e(n)("ai.lab.toolTest.truncated")),1)):V("",!0),a("pre",ad,c(m.value),1)],64))])):V("",!0)])]),_:1})])}}}),od={class:"flex h-full flex-col"},nd={class:"min-h-0 flex-1 overflow-hidden"},ld=ne({__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",od,[f(e(wa),{modelValue:s.value,"onUpdate:modelValue":l[0]||(l[0]=r=>s.value=r),items:o,"persist-key":"debugTab"},null,8,["modelValue"]),a("div",nd,[f(Tt,{name:"fade",mode:"out-in"},{default:D(()=>[s.value==="sql-tables"?(d(),B(Su,{key:0,class:"h-full","session-id":t.sessionId},null,8,["session-id"])):s.value==="basic-tools"?(d(),B(sd,{key:1,class:"h-full","session-id":t.sessionId},null,8,["session-id"])):V("",!0)]),_:1})])]))}}),id=gt(ld,[["__scopeId","data-v-b3b3d1a4"]]),rd={class:"main-content flex h-full"},ud={class:"flex flex-1 flex-col overflow-hidden"},dd={class:"flex flex-col border-b border-gray-200 bg-gray-50 p-4 dark:border-gray-800 dark:bg-page-dark"},cd={class:"mx-auto w-full max-w-3xl"},md=["placeholder"],pd=["placeholder"],gd={class:"mt-1 flex items-center justify-between"},fd={class:"flex items-center gap-2"},vd={key:0,class:"text-xs text-gray-400"},hd={class:"flex items-center gap-2"},yd={key:0,class:"ml-1 text-xs text-gray-400"},xd={key:0,class:"flex-1 overflow-auto p-4"},bd={class:"mb-2 flex items-center gap-1.5 text-sm font-medium text-gray-600 dark:text-gray-300"},_d={key:0,class:"text-gray-500"},kd={key:1,class:"text-pink-500"},wd=["open"],Cd={class:"cursor-pointer select-none text-xs font-medium text-gray-500 dark:text-gray-400"},$d={key:1,class:"whitespace-pre-wrap break-all font-mono text-xs leading-5 text-gray-600 dark:text-gray-400"},Sd={key:2,class:"font-mono text-xs text-gray-400"},Id=ne({__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}`,G=localStorage.getItem(R);G&&(g.value=JSON.parse(G))}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,G,ge){const ee={id:`${Date.now()}-${Math.random().toString(36).slice(2,8)}`,prompt:R,sql:G,explanation:ge,timestamp:Date.now()};g.value.unshift(ee),g.value.length>50&&(g.value=g.value.slice(0,50)),F()}function z(R){g.value=g.value.filter(G=>G.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,G){(R.ctrlKey||R.metaKey)&&R.key==="Enter"&&(R.preventDefault(),G==="prompt"?se():T())}function L(R,G){r.value+=`${R}.${G}`}function N(){x.value=x.value==="prompt"?"sql":"prompt"}function U(R){const G=[];for(const ge of R){G.push(`### ${ge.name} (${ha(ge.name,t.value)})`),G.push("| 列名 | 说明 | 类型 |"),G.push("|------|------|------|");for(const ee of ge.columns){const K=ee.pk?" (主键)":"";G.push(`| ${ee.name} | ${Aa(ge.name,ee.name,t.value)}${K} | ${ee.type} |`)}G.push("")}return G.join(`
|
|
25
|
-
`)}function H(R,G){return`你是一个 SQLite 数据库专家。用户需要查询聊天记录数据库。
|
|
26
|
-
|
|
27
|
-
## 数据库结构
|
|
28
|
-
|
|
29
|
-
${U(G)}
|
|
30
|
-
|
|
31
|
-
## 重要说明
|
|
32
|
-
|
|
33
|
-
1. message 表的 ts 字段是 Unix 时间戳(秒),查询日期需要使用 datetime(ts, 'unixepoch') 转换
|
|
34
|
-
2. message.type 字段:0=文本, 1=图片, 2=语音, 3=视频, 4=文件, 5=表情包, 6=系统消息, 99=其他
|
|
35
|
-
3. member 和 message 表通过 message.sender_id = member.id 关联
|
|
36
|
-
4. **人名查询**:当识别到人名/昵称查询时,必须同时在 member 表的 account_name、group_nickname 和 aliases 三个字段中模糊搜索,使用 OR 连接:
|
|
37
|
-
\`\`\`
|
|
38
|
-
WHERE m.account_name LIKE '%人名%'
|
|
39
|
-
OR m.group_nickname LIKE '%人名%'
|
|
40
|
-
OR m.aliases LIKE '%人名%'
|
|
41
|
-
\`\`\`
|
|
42
|
-
5. 显示成员名称时,使用 COALESCE(m.group_nickname, m.account_name, m.platform_id) 来获取最佳显示名
|
|
43
|
-
6. **查询具体消息时包含消息 ID**:当用户需要查看具体的聊天记录时,SELECT 应包含 msg.id 作为第一个字段,这样用户可以点击查看完整上下文。注意是 msg.id(消息 ID),不是 m.id(成员 ID)。
|
|
44
|
-
7. **统计查询不需要消息 ID**:当用户需要统计分析时,不需要返回 msg.id
|
|
45
|
-
8. **严禁使用不存在的字段**:只能使用上方 Schema 中明确存在的表名和列名,禁止使用如 sender.display_name、member.display_name 等虚构字段
|
|
46
|
-
9. **成员显示名写法**:如果需要显示成员名称,优先使用 COALESCE(m.group_nickname, m.account_name, m.platform_id);若不联表 member,可使用 COALESCE(msg.sender_group_nickname, msg.sender_account_name, msg.sender_id)
|
|
47
|
-
10. **单次只做一个分析目标**:一次 SQL 只返回一个语义一致的结果集,不要把多个分析目标用 UNION ALL/UNION 混合到同一结果表
|
|
48
|
-
|
|
49
|
-
## 用户需求
|
|
50
|
-
|
|
51
|
-
${R}
|
|
52
|
-
|
|
53
|
-
## 要求
|
|
54
|
-
|
|
55
|
-
请以 JSON 格式输出,包含两个字段:
|
|
56
|
-
- sql: SQLite 查询语句(不要用代码块包裹)
|
|
57
|
-
- explanation: 用简洁的中文解释这条 SQL 做了什么
|
|
58
|
-
|
|
59
|
-
示例格式:
|
|
60
|
-
{"sql": "SELECT ...", "explanation": "这条SQL查询了..."}
|
|
61
|
-
|
|
62
|
-
注意:
|
|
63
|
-
1. 仅输出 JSON,不要有任何其他文字
|
|
64
|
-
2. SQL 中的查询结果限制在合理范围内(建议 LIMIT 100)
|
|
65
|
-
3. 确保 SQL 语法正确
|
|
66
|
-
4. 若用户需求包含多个分析目标,仅选择第一个目标生成 SQL`}function ue(R){let G=R.trim();G=G.replace(/^```json?\n?/i,"").replace(/\n?```$/i,"");try{const ge=JSON.parse(G);return{sql:(ge.sql||"").trim(),explanation:(ge.explanation||"").trim()}}catch{return G=G.replace(/^```sql?\n?/i,"").replace(/\n?```$/i,""),{sql:G.trim(),explanation:""}}}async function se(){const R=m.value.trim();if(!R){y.value=n("ai.sqlLab.generate.errorEmptyPrompt");return}if(!await ka().hasConfig()){y.value=n("common.errorNoAIConfig");return}const ge=s.value?.schema||[];if(ge.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 ee="";try{const K=H(R,ge),ae=await ms().chatStream([{role:"system",content:"你是一个 SQLite 专家,请以 JSON 格式输出 sql 和 explanation 字段。"},{role:"user",content:K}],{temperature:.1,maxTokens:4096},ie=>{if(ie.thinking!==void 0){ie.thinkingDone?k.value=!1:(k.value=!0,ie.thinking&&(_.value+=ie.thinking,Re(()=>{C.value&&(C.value.scrollTop=C.value.scrollHeight)})));return}ie.error&&(ee=ie.error),ie.isFinished&&ie.finishReason==="length"&&(ee=n("ai.sqlLab.generate.errorTokenLimit")),ie.content&&(v.value+=ie.content)});if(!ae.success){y.value=ae.error||ee||n("ai.sqlLab.generate.errorGenerate");return}if(ee){y.value=ee;return}const O=ue(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(K){y.value=K.message||String(K)}finally{S.value=!1}}async function P(R){r.value=R.sql,w.value=R.prompt,$.value=!1,await T()}return Le(()=>{b()}),pe(()=>o.chatType,R=>{m.value=l(R)}),(R,G)=>{const ge=Ie,ee=Ne;return d(),p("div",rd,[f(e(Qi),{ref_key:"schemaPanelRef",ref:s,"session-id":u.sessionId,onInsertColumn:L},null,8,["session-id"]),a("div",ud,[a("div",dd,[a("div",cd,[x.value==="prompt"?tt((d(),p("textarea",{key:0,"onUpdate:modelValue":G[0]||(G[0]=K=>m.value=K),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:G[1]||(G[1]=K=>M(K,"prompt"))},null,40,md)),[[Ht,m.value]]):tt((d(),p("textarea",{key:1,"onUpdate:modelValue":G[2]||(G[2]=K=>r.value=K),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:G[3]||(G[3]=K=>M(K,"sql"))},null,40,pd)),[[Ht,r.value]]),a("div",gd,[a("div",fd,[f(ee,{variant:"ghost",size:"xs",onClick:N},{default:D(()=>[f(ge,{name:"i-heroicons-arrows-right-left",class:"mr-1 h-3.5 w-3.5"}),Z(" "+c(x.value==="prompt"?e(n)("ai.sqlLab.editor.switchToSQLMode"):e(n)("ai.sqlLab.editor.switchToPromptMode")),1)]),_:1}),x.value==="sql"?(d(),p("span",vd,c(e(n)("ai.sqlLab.editor.tip")),1)):V("",!0)]),a("div",hd,[f(ee,{variant:"ghost",size:"sm",disabled:g.value.length===0,onClick:G[4]||(G[4]=K=>$.value=!0)},{default:D(()=>[f(ge,{name:"i-heroicons-clock",class:"mr-1 h-4 w-4"}),Z(" "+c(e(n)("ai.sqlLab.editor.history"))+" ",1),g.value.length>0?(d(),p("span",yd,"("+c(g.value.length)+")",1)):V("",!0)]),_:1},8,["disabled"]),x.value==="prompt"?(d(),B(ee,{key:0,color:"primary",size:"sm",loading:S.value||h.value,disabled:!m.value.trim(),onClick:se},{default:D(()=>[f(ge,{name:"i-heroicons-sparkles",class:"mr-1 h-4 w-4"}),Z(" "+c(e(n)("ai.sqlLab.editor.generateAndRun")),1)]),_:1},8,["loading","disabled"])):(d(),B(ee,{key:1,color:"primary",size:"sm",loading:h.value,onClick:T},{default:D(()=>[f(ge,{name:"i-heroicons-play",class:"mr-1 h-4 w-4"}),Z(" "+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",xd,[f(e(rt),{class:"mx-auto w-full max-w-3xl p-4"},{default:D(()=>[a("p",bd,[f(ge,{name:"i-heroicons-cpu-chip",class:"h-4 w-4"}),Z(" "+c(e(n)("ai.sqlLab.generate.aiOutput"))+" ",1),k.value?(d(),p("span",_d,c(e(n)("ai.sqlLab.generate.thinking")),1)):S.value?(d(),p("span",kd,c(e(n)("common.generating")),1)):V("",!0)]),_.value?(d(),p("details",{key:0,class:"mb-3",open:k.value},[a("summary",Cd,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,wd)):V("",!0),v.value?(d(),p("pre",$d,c(v.value),1)):_.value?V("",!0):(d(),p("p",Sd,c(e(n)("ai.sqlLab.generate.waitingAI")),1))]),_:1})])):(d(),B(e(au),{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(dr),{open:$.value,"onUpdate:open":G[5]||(G[5]=K=>$.value=K),history:g.value,onExecute:P,onDelete:z},null,8,["open","history"])])}}}),Td={class:"flex h-full flex-col"},Md={class:"min-h-0 flex-1 overflow-hidden"},Ad=ne({__name:"MoreTab",props:{sessionId:{},chatType:{}},setup(u){const n=u,{t}=Ce(),o=us(),s=Xt(),{debugMode:i}=_t(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"&&es("feature_used",{feature_id:"sql_lab"})},{immediate:!0}),pe(i,x=>{!x&&m.value==="debug"&&(m.value="sql-lab")}),(x,h)=>(d(),p("div",Td,[f(e(wa),{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",Md,[f(Tt,{name:"fade",mode:"out-in"},{default:D(()=>[m.value==="sql-lab"?(d(),B(Id,{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(id),{key:1,class:"h-full","session-id":n.sessionId},null,8,["session-id"])):V("",!0)]),_:1})])]))}}),Hb=gt(Ad,[["__scopeId","data-v-18ccef00"]]),qd={class:"flex h-full min-h-0 flex-col"},zd={class:"min-h-0 flex-1 overflow-hidden"},Yb=ne({__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",qd,[f(e(wa),{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",zd,[t.value==="records"?(d(),B(e(Zo),{key:u.sessionId,"session-id":u.sessionId,mode:"page","show-topics":!e(Eo)},null,8,["session-id","show-topics"])):V("",!0)])]))}}),Dd={class:"writing-vertical text-xs"},Ld={class:"flex items-center justify-between border-b border-gray-200 px-4 py-3 dark:border-gray-800"},Ed={class:"flex items-center gap-2"},Vd={class:"font-medium text-gray-900 dark:text-white"},Fd={key:0,class:"border-b border-gray-200 px-4 py-2 dark:border-gray-800"},Rd={class:"flex flex-wrap items-center gap-2"},Od={class:"text-xs text-gray-500"},Bd={class:"flex-1 overflow-y-auto"},Pd={key:0,class:"flex items-center justify-center py-8"},Nd={key:1,class:"flex flex-col items-center justify-center py-8 text-center"},jd={class:"mt-2 text-sm text-gray-500"},Ud={class:"text-xs text-gray-400"},Wd={key:2,class:"divide-y divide-gray-100 dark:divide-gray-800"},Kd={class:"mb-1 flex items-center justify-between"},Hd={class:"text-sm font-medium text-gray-900 dark:text-white"},Yd={class:"text-xs text-gray-400"},Qd=["innerHTML"],Gd={key:1,class:"border-t border-gray-200 px-4 py-2 dark:border-gray-800"},Jd={class:"flex items-center justify-between"},Xd={class:"text-xs text-gray-500"},Zd={key:2,class:"pointer-events-none absolute inset-0 overflow-hidden rounded-xl opacity-[0.03]"},ec=ne({__name:"DataSourcePanel",props:{messages:{},keywords:{},isLoading:{type:Boolean},isCollapsed:{type:Boolean}},emits:["toggle","loadMore"],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=Ie,h=Ne;return d(),p("div",{class:J(["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",Dd,c(e(t)("ai.chat.dataSource.title")),1)])):(d(),p(oe,{key:1},[a("div",Ld,[a("div",Ed,[f(x,{name:"i-heroicons-document-magnifying-glass",class:"h-5 w-5 text-gray-500"}),a("span",Vd,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",Fd,[a("div",Rd,[a("span",Od,c(e(t)("ai.chat.dataSource.keywords")),1),(d(!0),p(oe,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",Bd,[u.isLoading?(d(),p("div",Pd,[f(x,{name:"i-heroicons-arrow-path",class:"h-6 w-6 animate-spin text-gray-400"})])):u.messages.length===0?(d(),p("div",Nd,[f(x,{name:"i-heroicons-inbox",class:"h-10 w-10 text-gray-300 dark:text-gray-600"}),a("p",jd,c(e(t)("ai.chat.dataSource.empty")),1),a("p",Ud,c(e(t)("ai.chat.dataSource.emptyHint")),1)])):(d(),p("div",Wd,[(d(!0),p(oe,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",Kd,[a("span",Hd,c(S.senderName),1),a("span",Yd,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,Qd)]))),128))]))]),u.messages.length>0?(d(),p("div",Gd,[a("div",Jd,[a("span",Xd,c(e(t)("ai.chat.dataSource.totalRecords",{count:u.messages.length})),1),f(h,{size:"xs",variant:"ghost",onClick:m[2]||(m[2]=S=>s("loadMore"))},{default:D(()=>[Z(c(e(t)("ai.chat.dataSource.loadMore")),1)]),_:1})])])):V("",!0)],64)),u.isCollapsed?V("",!0):(d(),p("div",Zd,[...m[3]||(m[3]=[a("div",{class:"data-flow-bg absolute inset-0"},null,-1)])]))],2)}}}),tc=gt(ec,[["__scopeId","data-v-a9962add"]]),ac={class:"assistant-bar-wrapper flex justify-center"},sc=["onClick"],oc={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"},nc={class:"custom-scrollbar max-h-60 space-y-0.5 overflow-y-auto"},lc=["onClick"],ic={class:"truncate font-medium"},Bt=4,rc=ne({__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=Lt(),{filteredAssistants:h,isLoaded:S}=_t(x),y=q(()=>{const g=Vo(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<=Bt)return g;const b=g.findIndex(F=>F.id===t.selectedId);if(b!==-1&&b>=Bt-1){const F=g.slice(0,Bt-1),E=g[b];return[...F,E]}return g.slice(0,Bt)}),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}),Le(async()=>{S.value||await x.loadAssistants(),$(),document.addEventListener("mousedown",m),typeof ResizeObserver<"u"&&_.value&&(k=new ResizeObserver(()=>{$()}),k.observe(_.value))}),Qe(()=>{document.removeEventListener("mousedown",m),k&&k.disconnect()}),(g,b)=>{const F=Ie;return d(),p("div",ac,[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(oe,null,he(I.value,(E,z)=>(d(),p("button",{key:E.id,ref_for:!0,ref:T=>{T&&(v.value[z]=T)},class:J(["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,sc))),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",oc,[a("div",nc,[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(oe,null,he(w.value,E=>(d(),p("button",{key:E.id,type:"button",class:J(["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",ic,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,lc))),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)])}}}),uc=gt(rc,[["__scopeId","data-v-169115ce"]]),dc={class:"p-6"},cc={class:"mb-4 flex items-start justify-between gap-3"},mc={class:"min-w-0"},pc={class:"text-lg font-semibold text-gray-900 dark:text-white"},gc={key:0,class:"mt-1 text-xs text-amber-600 dark:text-amber-400"},fc={key:0,class:"flex items-center justify-center py-12"},vc={class:"mb-4 flex gap-1 rounded-lg bg-gray-100 p-1 dark:bg-gray-800"},hc={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"},yc={class:"max-h-[500px] overflow-y-auto pr-1"},xc={class:"space-y-5"},bc={class:"mb-1.5 block text-sm font-medium text-gray-700 dark:text-gray-300"},_c={class:"mb-1.5 block text-sm font-medium text-gray-700 dark:text-gray-300"},kc={class:"mb-1.5 block text-sm font-medium text-gray-700 dark:text-gray-300"},wc={class:"flex flex-wrap gap-2"},Cc=["disabled","onClick"],$c={class:"mb-1.5 block text-sm font-medium text-gray-700 dark:text-gray-300"},Sc={class:"flex flex-wrap gap-2"},Ic=["disabled","onClick"],Tc={class:"mt-1 text-[10px] text-gray-400"},Mc={class:"mb-1.5 block text-sm font-medium text-gray-700 dark:text-gray-300"},Ac={class:"space-y-2"},qc={key:0,class:"flex items-center gap-2"},zc={class:"space-y-5"},Dc={class:"mb-1 text-sm font-medium text-gray-700 dark:text-gray-300"},Lc={class:"mb-2.5 text-[10px] text-gray-400"},Ec={class:"grid grid-cols-2 gap-1.5"},Vc={class:"min-w-0"},Fc={class:"truncate text-xs font-medium text-gray-600 dark:text-gray-400"},Rc={class:"truncate text-[10px] text-gray-400 dark:text-gray-500"},Oc={class:"mb-1 flex items-center justify-between"},Bc={class:"text-sm font-medium text-gray-700 dark:text-gray-300"},Pc={key:0,class:"flex gap-2"},Nc={class:"mb-2.5 text-[10px] text-gray-400"},jc={class:"grid grid-cols-2 gap-1.5"},Uc=["checked","disabled","onChange"],Wc={class:"min-w-0"},Kc={class:"truncate text-xs font-medium text-gray-800 dark:text-gray-200"},Hc={class:"truncate text-[10px] text-gray-500 dark:text-gray-400"},Yc={class:"mt-6 flex items-center justify-between"},Qc={class:"flex gap-2"},Gc=ne({__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=kt(),l=Lt(),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);Le(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 ue(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 G=Ne,ge=Ie,ee=zt,K=on,ae=Ge;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",dc,[a("div",cc,[a("div",mc,[a("h2",pc,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",gc,c(e(t)("ai.assistant.config.betaWarning")),1))]),f(G,{icon:"i-heroicons-x-mark",variant:"ghost",size:"sm",class:"shrink-0",onClick:se})]),r.value?(d(),p("div",fc,[f(ge,{name:"i-heroicons-arrow-path",class:"h-6 w-6 animate-spin text-gray-400"})])):x.value?(d(),p(oe,{key:1},[a("div",vc,[a("button",{class:J(["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:J(["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")},[Z(c(e(t)("ai.assistant.config.tabs.tools"))+" ",1),$.value>0?(d(),p("span",hc,c($.value),1)):V("",!0)],2)]),a("div",yc,[tt(a("div",xc,[a("div",null,[a("label",bc,c(e(t)("ai.assistant.config.name")),1),f(ee,{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",_c,c(e(t)("ai.assistant.config.systemPrompt")),1),f(K,{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",kc,c(e(t)("ai.assistant.config.chatType")),1),a("div",wc,[(d(!0),p(oe,null,he(y.value,O=>(d(),p("button",{key:O.value,type:"button",class:J(["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:ie=>H(O.value)},c(O.label),11,Cc))),128))])]),a("div",null,[a("label",$c,c(e(t)("ai.assistant.config.locale")),1),a("div",Sc,[(d(),p(oe,null,he(I,O=>a("button",{key:O.value,type:"button",class:J(["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:ie=>ue(O.value)},c(O.label),11,Ic)),64))]),a("p",Tc,c(e(t)("ai.assistant.config.localeHint")),1)]),a("div",{ref_key:"presetQuestionsRef",ref:C},[a("label",Mc,c(e(t)("ai.assistant.config.presetQuestions")),1),a("div",Ac,[(d(!0),p(oe,null,he(_.value.presetQuestions,(O,ie)=>(d(),p("div",{key:ie,class:"flex items-center gap-2"},[f(ee,{modelValue:_.value.presetQuestions[ie],"onUpdate:modelValue":we=>_.value.presetQuestions[ie]=we,class:"min-w-0 flex-1",size:"sm",disabled:u.readonly},null,8,["modelValue","onUpdate:modelValue","disabled"]),u.readonly?V("",!0):(d(),B(G,{key:0,color:"error",variant:"ghost",icon:"i-heroicons-trash",size:"xs",class:"shrink-0",onClick:we=>T(ie)},null,8,["onClick"]))]))),128)),u.readonly?V("",!0):(d(),p("div",qc,[f(ee,{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:Je(z,["enter"])},null,8,["modelValue","placeholder"]),f(G,{color:"primary",variant:"soft",icon:"i-heroicons-plus",size:"xs",class:"shrink-0",onClick:z})]))])],512)],512),[[xt,S.value==="basic"]]),tt(a("div",zc,[a("div",null,[a("h3",Dc,c(e(t)("ai.assistant.config.coreTools")),1),a("p",Lc,c(e(t)("ai.assistant.config.coreToolsHint")),1),a("div",Ec,[(d(!0),p(oe,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",Vc,[a("div",Fc,c(O.name),1),a("div",Rc,c(O.description),1)])]))),128))])]),a("div",null,[a("div",Oc,[a("h3",Bc,c(e(t)("ai.assistant.config.analysisTools")),1),u.readonly?V("",!0):(d(),p("div",Pc,[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",Nc,c(e(t)("ai.assistant.config.analysisToolsHint")),1),a("div",jc,[(d(!0),p(oe,null,he(v.value,O=>(d(),p("label",{key:O.name,class:J(["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:ie=>M(O.name)},null,40,Uc),a("div",Wc,[a("div",Kc,c(O.name),1),a("div",Hc,c(O.description),1)])],2))),128))])])],512),[[xt,S.value==="tools"]])]),a("div",Yc,[a("div",null,[!u.readonly&&!h.value&&x.value?.builtinId?(d(),B(G,{key:0,variant:"outline",color:"warning",loading:m.value,onClick:E},{default:D(()=>[Z(c(e(t)("ai.assistant.config.resetDefault")),1)]),_:1},8,["loading"])):V("",!0)]),a("div",Qc,[f(G,{variant:"ghost",onClick:se},{default:D(()=>[Z(c(u.readonly?e(t)("common.close"):e(t)("common.cancel")),1)]),_:1}),u.readonly?V("",!0):(d(),B(G,{key:0,color:"primary",loading:m.value,onClick:F},{default:D(()=>[Z(c(h.value?e(t)("ai.assistant.config.create"):e(t)("common.save")),1)]),_:1},8,["loading"]))])])],64)):V("",!0)])]),_:1},8,["open"])}}}),Jc={class:"p-6"},Xc={class:"mb-4 flex items-center justify-between"},Zc={class:"text-lg font-bold text-gray-900 dark:text-gray-100"},em={class:"mb-4 flex gap-1 rounded-lg bg-gray-100 p-1 dark:bg-gray-800"},tm={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"},am={class:"mb-3 text-xs text-gray-500 dark:text-gray-400"},sm={class:"max-h-[400px] space-y-3 overflow-y-auto pr-1"},om={class:"min-w-0 flex-1"},nm={class:"flex items-center gap-2"},lm={class:"text-sm font-semibold text-gray-900 dark:text-gray-100"},im={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"},rm={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"},um={class:"mt-1 line-clamp-1 text-xs text-gray-500 dark:text-gray-400"},dm={class:"flex shrink-0 items-center gap-1.5"},cm=["title","onClick"],mm=["title","onClick"],pm=["title","onClick"],gm={key:0,class:"py-12 text-center text-sm text-gray-400"},fm={class:"mb-3 text-xs text-gray-500 dark:text-gray-400"},vm={key:0,class:"py-12 text-center text-sm text-gray-400"},hm={key:1,class:"py-12 text-center"},ym={class:"text-sm text-gray-500 dark:text-gray-400"},xm={key:2,class:"max-h-[400px] space-y-3 overflow-y-auto pr-1"},bm={class:"min-w-0 flex-1"},_m={class:"flex items-center gap-2"},km={class:"text-sm font-semibold text-gray-900 dark:text-gray-100"},wm={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"},Cm={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"},Sm={class:"flex shrink-0 items-center gap-2"},Im=["disabled","onClick"],Tm={class:"px-3 py-1.5 text-xs font-medium text-gray-400 dark:text-gray-500"},Mm=["disabled","onClick"],Am=["title","onClick"],qm={key:3,class:"py-12 text-center text-sm text-gray-400"},zm=ne({__name:"AssistantMarketModal",props:{open:{type:Boolean}},emits:["update:open","configure","view-config","create"],setup(u,{emit:n}){const{t,locale:o}=Ce(),s=kt(),i=u,l=n,r=Lt(),{assistants:m,cloudCatalogWithStatus:x,cloudLoading:h,cloudError:S}=_t(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){Rt(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=Ie,N=Ge;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",Jc,[a("div",Xc,[a("h2",Zc,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",em,[a("button",{class:J(["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")},[Z(c(e(t)("ai.assistant.market.tabs.local"))+" ",1),I.value.length?(d(),p("span",tm,c(I.value.length),1)):V("",!0)],2),a("button",{class:J(["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",am,c(e(t)("ai.assistant.market.localHint")),1),a("div",sm,[(d(!0),p(oe,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",om,[a("div",nm,[a("h3",lm,c(U.name),1),z(U.applicableChatTypes)?(d(),p("span",im,c(z(U.applicableChatTypes)),1)):V("",!0),e(Rt)(U.id)?(d(),p("span",rm,c(e(t)("ai.assistant.market.default")),1)):V("",!0)]),a("p",um,c(U.systemPrompt),1)]),a("div",dm,[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,cm),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,mm),e(Rt)(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,pm))])]))),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"}),Z(" "+c(e(t)("ai.assistant.market.addAssistant")),1)]),I.value.length===0?(d(),p("div",gm,c(e(t)("ai.assistant.market.noLocal")),1)):V("",!0)],512),[[xt,y.value==="local"]]),tt(a("div",null,[a("p",fm,c(e(t)("ai.assistant.market.marketHint")),1),e(h)?(d(),p("div",vm,c(e(t)("ai.assistant.market.loading")),1)):e(S)?(d(),p("div",hm,[a("p",ym,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",xm,[(d(!0),p(oe,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",bm,[a("div",_m,[a("h3",km,c(U.name),1),z(U.applicableChatTypes)?(d(),p("span",wm,c(z(U.applicableChatTypes)),1)):V("",!0),e(Rt)(U.id)?(d(),p("span",Cm,c(e(t)("ai.assistant.market.default")),1)):V("",!0)]),a("p",$m,c(U.description),1)]),a("div",Sm,[U.imported?(d(),p(oe,{key:1},[a("span",Tm,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,Mm)],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,Im)),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,Am)):V("",!0)])]))),128))])),!e(h)&&!e(S)&&w.value.length===0?(d(),p("div",qm,c(e(t)("ai.assistant.market.noCatalog")),1)):V("",!0)],512),[[xt,y.value==="market"]])])]),_:1},8,["open"])}}}),Dm={class:"p-5"},Lm={class:"flex items-start gap-3"},Em={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"},Vm={class:"min-w-0"},Fm={class:"font-semibold text-gray-900 dark:text-white"},Rm={class:"mt-1.5 text-sm leading-6 text-gray-600 dark:text-gray-400"},Om={class:"mt-4 rounded-lg bg-gray-50 px-3 py-2.5 dark:bg-gray-800/70"},Bm={class:"flex items-center gap-2 text-sm text-gray-700 dark:text-gray-300"},Pm={class:"truncate"},Nm={class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},jm={class:"mt-5 flex justify-end gap-2"},Um=ne({__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=Ie,r=Ne,m=Ge;return d(),B(m,{open:u.open,dismissible:!1,ui:{content:"sm:max-w-md z-50",overlay:"z-40"}},{content:D(()=>[a("div",Dm,[a("div",Lm,[a("div",Em,[f(l,{name:"i-lucide-sparkles",class:"h-5 w-5"})]),a("div",Vm,[a("h3",Fm,c(e(o)("ai.assistant.upgrade.title")),1),a("p",Rm,c(e(o)("ai.assistant.upgrade.message",{backupName:u.backupName})),1)])]),a("div",Om,[a("div",Bm,[f(l,{name:"i-lucide-copy-check",class:"h-4 w-4 shrink-0 text-gray-400"}),a("span",Pm,c(u.backupName),1)])]),a("p",Nm,c(e(o)("ai.assistant.upgrade.skipHint")),1),a("div",jm,[f(r,{variant:"soft",loading:u.skipping,disabled:u.upgrading,onClick:i[0]||(i[0]=x=>t("skip"))},{default:D(()=>[Z(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(()=>[Z(c(e(o)("ai.assistant.upgrade.confirm")),1)]),_:1},8,["loading","disabled"])])])]),_:1},8,["open"])}}}),Wm={class:"p-6"},Km={class:"mb-4 flex items-center justify-between"},Hm={class:"text-lg font-bold text-gray-900 dark:text-gray-100"},Ym={class:"mb-4 flex gap-1 rounded-lg bg-gray-100 p-1 dark:bg-gray-800"},Qm={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"},Gm={class:"mb-3 text-xs text-gray-500 dark:text-gray-400"},Jm={class:"max-h-[400px] space-y-3 overflow-y-auto pr-1"},Xm={class:"min-w-0 flex-1"},Zm={class:"flex items-center gap-2"},ep={class:"text-sm font-semibold text-gray-900 dark:text-gray-100"},tp={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"},ap={class:"mt-1 line-clamp-1 text-xs text-gray-500 dark:text-gray-400"},sp={key:0,class:"mt-1.5 flex flex-wrap gap-1"},op={class:"flex shrink-0 items-center gap-1.5"},np=["title","onClick"],lp=["title","onClick"],ip={key:0,class:"py-12 text-center text-sm text-gray-400"},rp={class:"mb-3 text-xs text-gray-500 dark:text-gray-400"},up={key:0,class:"py-12 text-center text-sm text-gray-400"},dp={key:1,class:"py-12 text-center"},cp={class:"text-sm text-gray-500 dark:text-gray-400"},mp={key:2,class:"max-h-[400px] space-y-3 overflow-y-auto pr-1"},pp={class:"min-w-0 flex-1"},gp={class:"flex items-center gap-2"},fp={class:"text-sm font-semibold text-gray-900 dark:text-gray-100"},vp={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"},hp={class:"mt-1 line-clamp-1 text-xs text-gray-500 dark:text-gray-400"},yp={key:0,class:"mt-1.5 flex flex-wrap gap-1"},xp={class:"flex shrink-0 items-center gap-2"},bp=["disabled","onClick"],_p={class:"px-3 py-1.5 text-xs font-medium text-gray-400 dark:text-gray-500"},kp=["disabled","onClick"],wp={key:3,class:"py-12 text-center text-sm text-gray-400"},Cp=ne({__name:"SkillMarketModal",props:{open:{type:Boolean}},emits:["update:open","configure","create"],setup(u,{emit:n}){const{t,locale:o}=Ce(),s=kt(),i=u,l=n,r=ea(),{skills:m,cloudCatalogWithStatus:x,cloudLoading:h,cloudError:S}=_t(r),y=A("local"),I=A(new Set);Le(()=>{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=Ie,M=Ge;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",Wm,[a("div",Km,[a("h2",Hm,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",Ym,[a("button",{class:J(["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")},[Z(c(e(t)("ai.skill.market.tabs.local"))+" ",1),e(m).length?(d(),p("span",Qm,c(e(m).length),1)):V("",!0)],2),a("button",{class:J(["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",Gm,c(e(t)("ai.skill.market.localHint")),1),a("div",Jm,[(d(!0),p(oe,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",Xm,[a("div",Zm,[a("h3",ep,c(L.name),1),a("span",tp,c(_(L.chatScope)),1)]),a("p",ap,c(L.description),1),L.tags.length?(d(),p("div",sp,[(d(!0),p(oe,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",op,[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,np),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,lp)])]))),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"}),Z(" "+c(e(t)("ai.skill.market.addSkill")),1)]),w.value.length===0?(d(),p("div",ip,c(e(t)("ai.skill.market.noLocal")),1)):V("",!0)],512),[[xt,y.value==="local"]]),tt(a("div",null,[a("p",rp,c(e(t)("ai.skill.market.marketHint")),1),e(h)?(d(),p("div",up,c(e(t)("ai.skill.market.loading")),1)):e(S)?(d(),p("div",dp,[a("p",cp,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",mp,[(d(!0),p(oe,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",pp,[a("div",gp,[a("h3",fp,c(L.name),1),a("span",vp,c(_(L.chatScope)),1)]),a("p",hp,c(L.description),1),L.tags?.length?(d(),p("div",yp,[(d(!0),p(oe,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",xp,[L.imported?(d(),p(oe,{key:1},[a("span",_p,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,kp)],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,bp))])]))),128))])),!e(h)&&!e(S)&&v.value.length===0?(d(),p("div",wp,c(e(t)("ai.skill.market.noCatalog")),1)):V("",!0)],512),[[xt,y.value==="market"]])])]),_:1},8,["open"])}}}),$p={class:"p-6"},Sp={class:"mb-4 flex items-center justify-between"},Ip={class:"text-lg font-bold text-gray-900 dark:text-gray-100"},Tp={class:"mb-3 text-xs text-gray-500 dark:text-gray-400"},Mp={key:0,class:"flex h-64 items-center justify-center text-gray-400"},Ap={class:"mt-4 flex justify-end gap-2"},qp=["disabled"],zp=`---
|
|
67
|
-
name: ""
|
|
68
|
-
description: ""
|
|
69
|
-
tags: []
|
|
70
|
-
chatScope: all
|
|
71
|
-
tools: []
|
|
72
|
-
---
|
|
73
|
-
|
|
74
|
-
`,Dp=ne({__name:"SkillConfigModal",props:{open:{type:Boolean},skillId:{}},emits:["update:open","saved","created"],setup(u,{emit:n}){const{t}=Ce(),o=u,s=n,i=ea(),l=A(""),r=A(!1),m=A(!1),x=A(!1);pe(()=>[o.open,o.skillId],async([S,y])=>{if(S){if(!y){x.value=!0,l.value=zp;return}x.value=!1,r.value=!0;try{const I=await i.getSkillConfig(y);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(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=Ie,w=Ge;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",Sp,[a("h2",Ip,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",Tp,c(e(t)("ai.skill.config.rawEditorHint")),1),r.value?(d(),p("div",Mp,[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)),[[Ht,l.value]]),a("div",Ap,[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,qp)])])]),_:1},8,["open"])}}}),Lp={key:0,class:"relative"},Ep={class:"relative flex flex-nowrap gap-2"},Vp=["disabled"],Fp=["disabled"],Rp={class:"inline-flex items-center gap-1"},Op={key:0,class:"absolute left-0 bottom-full z-20 mb-2 w-[320px] max-w-[calc(100vw-3rem)]"},Bp={class:"mb-1.5 flex justify-start"},Pp={class:"flex flex-wrap gap-2"},Np=["disabled","onClick"],da="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",jp=ne({__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 _a(()=>{l&&clearTimeout(l)}),(S,y)=>{const I=Ie;return u.leadingActionLabel||u.questions.length>0?(d(),p("div",Lp,[a("div",Ep,[u.leadingActionLabel?(d(),p("button",{key:0,class:J(da),disabled:o.disabled,onClick:y[0]||(y[0]=w=>s("leadingAction"))},c(u.leadingActionLabel),9,Vp)):V("",!0),u.questions.length>0?(d(),p("div",{key:1,class:"relative shrink-0",onMouseenter:m,onMouseleave:x},[a("button",{class:J([da,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",Rp,[f(I,{name:"i-heroicons-chat-bubble-left-ellipsis",class:"h-3.5 w-3.5"}),Z(" "+c(e(t)("ai.chat.input.quickAsk")),1)])],10,Fp),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",Op,[a("div",Bp,[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"}),Z(" "+c(e(t)("ai.chat.input.editQuickAsk")),1)])]),a("div",Pp,[(d(!0),p(oe,null,he(u.questions,(w,v)=>(d(),p("button",{key:v,class:J(da),disabled:o.disabled,onClick:_=>r(w)},c(w),9,Np))),128))])])):V("",!0)]),_:1})],32)):V("",!0)])])):V("",!0)}}});function Up(){const u=Lt(),n=ea(),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(),await u.loadBuiltinCatalog()}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 Wp={class:"main-content relative flex h-full overflow-hidden"},Kp={class:"flex h-full min-w-0 flex-1 overflow-hidden"},Hp={class:"flex h-full min-w-0 flex-1"},Yp={class:"relative flex min-w-[480px] flex-1 flex-col overflow-hidden"},Qp={key:0,class:"flex items-center justify-end gap-1 px-3 py-1.5"},Gp=["disabled"],Jp={key:0,class:"flex w-full flex-col items-center justify-center animate-fade-in"},Xp={key:0,class:"mb-3 text-center text-2xl font-semibold tracking-tight text-gray-800 dark:text-gray-100"},Zp={class:"text-primary-600 dark:text-primary-400"},eg={key:1,class:"relative mb-8 w-full max-w-lg"},tg={class:"flex w-full justify-center"},ag={key:1,class:"flex justify-center pb-2"},sg={key:1,class:"qa-pair space-y-6 pb-4"},og={key:1,class:"px-4 pb-2"},ng={class:"mx-auto max-w-3xl"},lg={class:"px-4 pb-3"},ig={class:"mx-auto max-w-3xl"},rg={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"},ug={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"},dg=ne({__name:"ChatExplorer",props:{sessionId:{},sessionName:{},timeFilter:{},chatType:{}},setup(u,{expose:n}){const{t}=Ce(),o=us(),s=Fo(),i=kt(),l=Xt(),r=Lt(),m=ea(),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,loadMoreSourceMessages:M,updateMaxMessages:L,stopGeneration:N,selectAssistantForSession:U}=ui(x.sessionId,x.sessionName,x.timeFilter,x.chatType??"group",l.locale,h);let H=!1,ue=!1;const se=A(!1);let P=setTimeout(()=>{se.value=!0},120);function R(){P&&(clearTimeout(P),P=null),se.value=!1}function G(){const fe=(x.chatType??"group")==="private"?"private-chat":"group-chat";return!ue&&o.name===fe&&String(o.params.id??"")===x.sessionId}async function ge(fe){!G()||(typeof o.query.aiChatId=="string"?o.query.aiChatId:null)===fe||await s.replace({query:{...o.query,aiChatId:fe||void 0}})}S.finally(()=>{R(),G()&&(H=!0,ge(k.value))}),Qe(()=>{ue=!0,R()}),pe(k,fe=>{H&&G()&&ge(fe)});const ee=nn(y,_),{showScrollToBottom:K,scrollToBottom:ae,handleScrollToBottom:O}=ee,{configModalVisible:ie,configModalAssistantId:we,configModalReadonly:be,marketModalVisible:te,skillMarketModalVisible:W,skillConfigModalVisible:j,skillConfigModalSkillId:de,handleConfigureAssistant:xe,handleOpenMarket:ke,handleMarketConfigure:ze,handleMarketViewConfig:je,handleCreateAssistant:qe,handleAssistantCreated:Ke,handleAssistantConfigSaved:Ue,handleOpenSkillMarket:Me,handleSkillMarketConfigure:re,handleCreateSkill:ce,handleSkillConfigSaved:Q,handleSkillCreated:le}=Up(),Y=cs(),Se=A(0);pe(()=>k.value,async fe=>{if(!fe){Se.value=0;return}try{const ye=await ot().estimateContextTokens(fe);ye.success&&(Se.value=ye.tokens)}catch{Se.value=0}},{immediate:!0});const X=q(()=>r.selectedAssistant?.presetQuestions??[]),me=q(()=>x.chatType??"group"),$e=A(!1),He=A(!1),Xe=A(!0),De=A(void 0),Te=A(null),Ze=A(null),ft=A(null),Vt=A(!1),wt=A(!1),Ct=A(!1),qa=q(()=>{const fe=ft.value?.name||t("ai.assistant.fallbackName");return t("ai.assistant.upgrade.backupName",{name:fe})}),$s=q(()=>pn(y.value)),Ss=q(()=>{const fe=y.value.findLastIndex(st=>st.role==="user");if(fe<0)return null;const ye=y.value.slice(fe+1);return ye.length===0||ye.length===1&&ye[0]?.role==="assistant"?y.value[fe]?.id??null:null}),Is=ln($s,k,ee.messagesContainer),{visiblePairs:Ts,hasOlderPairs:Ms,loadOlderPairs:za}=Is;async function Da(){Xe.value=!0;try{He.value=await ka().hasConfig()}catch(fe){console.error("检查 LLM 配置失败:",fe),He.value=!1}finally{Xe.value=!1}}async function La(){await Da(),He.value&&await L()}n({refreshConfig:La});const Ft=q(()=>{const fe=r.selectedAssistant;if(!fe)return{name:"",preview:""};const ye=fe.systemPrompt.replace(/#{1,6}\s+[^\n]*/g,"").replace(/\n+/g," ").replace(/\s+/g," ").trim();return{name:fe.name,preview:ye}}),As=q(()=>!!b.value&&y.value.length===0&&!_.value);function na(){i.warn(t("ai.chat.backgroundTask.runningTitle"),{description:t("ai.chat.backgroundTask.runningDescription")})}function Ea(){i.warn(t("ai.chat.backgroundTask.blockedAction"))}function qs(fe){if(fe!==b.value){if(!U(fe)){Ea();return}m.activateSkill(null),T()}}async function zs(fe){const ye=await F(fe);if(!ye.success){ye.reason==="error"&&Te.value?.refresh(),ye.reason==="busy"&&na();return}ae(!0),Te.value?.refresh()}function Ds(){const fe=r.selectedAssistant?.id;fe&&(De.value="presetQuestions",xe(fe))}function Ls(fe){ie.value=fe,fe||(De.value=void 0)}function Es(){Ze.value?.openSkillSelector()}function Vs(){ae(!0)}async function Va(){const fe=await r.checkDefaultAssistantUpgrade(l.locale);fe&&(ft.value=fe,Vt.value=!0)}async function Fs(){const fe=ft.value;if(!(!fe||wt.value||Ct.value)){Ct.value=!0;try{const ye=await r.skipAssistantUpgrade(fe);if(!ye.success){i.fail(t("ai.assistant.upgrade.skipFailed"),{description:ye.error||t("ai.assistant.toast.unknownError")});return}Vt.value=!1,ft.value=null}finally{Ct.value=!1}}}async function Rs(){const fe=ft.value;if(!(!fe||wt.value||Ct.value)){wt.value=!0;try{const ye=qa.value,st=await r.upgradeAssistantWithBackup(fe,ye);if(!st.success){i.fail(t("ai.assistant.upgrade.failed"),{description:st.error||t("ai.assistant.toast.unknownError")});return}Vt.value=!1,ft.value=null,i.success(t("ai.assistant.upgrade.success"),{description:t("ai.assistant.upgrade.successDescription",{name:ye})})}finally{wt.value=!1}}}async function Os(fe){const ye=await F(fe.content,{mentionedMembers:fe.mentionedMembers,onAccepted:fe.onAccepted});if(!ye.success){ye.reason==="error"&&Te.value?.refresh(),ye.reason==="busy"&&na();return}ae(!0),Te.value?.refresh()}async function Bs(fe){const ye=await E(fe.messageId,fe.content);if(!ye.success){ye.reason==="busy"&&na();return}ae(!0),Te.value?.refresh()}async function Ps(fe){if(k.value)try{const ye=await ot().forkAIChat(k.value,fe);await z(ye.id),Te.value?.refresh(),ae(!0),i.success(t("ai.chat.fork.success"))}catch(ye){i.fail(t("ai.chat.fork.failed"),{description:String(ye)})}}function Ns(){$e.value=!$e.value}async function js(){await M()}async function Us(fe){await z(fe),ae(!0)}function Ws(){if(_.value){Ea();return}T()}function Ks(fe){k.value===fe&&T()}function Hs(){N()}return Da(),L(),Le(()=>{Va()}),pe(()=>l.locale,()=>{Va()}),pe(()=>Y.aiConfigVersion,async()=>{await La()}),(fe,ye)=>{const st=Ie,Ys=Zt;return d(),p("div",Wp,[se.value?(d(),B(Mt,{key:0,variant:"overlay"})):V("",!0),f(rn,{ref_key:"conversationListRef",ref:Te,"session-id":u.sessionId,"active-id":e(k),disabled:e(_),onSelect:Us,onCreate:Ws,onDelete:Ks},null,8,["session-id","active-id","disabled"]),a("div",Kp,[a("div",Hp,[a("div",Yp,[e(y).length>0||e(_)?(d(),p("div",Qp,[a("button",{class:J(["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(xe)(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,Gp),f(un,{"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(ee).messagesContainer,class:J(["relative min-h-0 flex-1 overflow-x-hidden overflow-y-auto p-4",{"p-0!":e(y).length===0&&!e(_)}])},[a("div",{class:J(["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",Jp,[Ft.value.name?(d(),p("h2",Xp,[Z(c(e(t)("ai.assistant.selector.heroTitlePrefix","使用"))+" ",1),a("span",Zp,c(Ft.value.name),1),Z(" "+c(e(t)("ai.assistant.selector.heroTitleSuffix","开始对话")),1)])):V("",!0),As.value&&Ft.value.name?(d(),p("div",eg,[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(xe)(e(r).selectedAssistant.id))},[f(Ys,{text:e(t)("ai.assistant.config.systemPrompt","系统设定"),popper:{placement:"top"}},{default:D(()=>[Z(c(Ft.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(xe)(e(r).selectedAssistant.id),["stop"]))},[f(st,{name:"i-heroicons-pencil-square",class:"h-4 w-4"})])])):V("",!0),a("div",tg,[f(uc,{"chat-type":me.value,locale:e(l).locale,"selected-id":e(b),onSelect:qs,onMarket:e(ke)},null,8,["chat-type","locale","selected-id","onMarket"])])])):V("",!0),e(Ms)?(d(),p("div",ag,[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(za)&&e(za)(..._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(oe,null,he(e(Ts),_e=>(d(),p(oe,{key:_e.id},[_e.standalone?(d(),B(la,{key:0,role:_e.standalone.role,content:_e.standalone.content,timestamp:_e.standalone.timestamp},null,8,["role","content","timestamp"])):(d(),p("div",sg,[_e.user&&(_e.user.role==="user"||_e.user.content)?(d(),B(la,{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===Ss.value,onEdit:Bs},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(la,{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:Ps},null,8,["role","message-id","content","timestamp","is-streaming","process-duration-ms","content-blocks","show-capture-button","active-tool"])):_e.assistant?.isStreaming?(d(),B(dn,{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(K)?(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(O)&&e(O)(..._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",og,[a("div",ng,[f(jp,{questions:X.value,"leading-action-label":e(t)("ai.chat.input.useSkill"),onSelect:zs,onLeadingAction:Es,onEditQuestions:Ds},null,8,["questions","leading-action-label"])])])):V("",!0),a("div",lg,[a("div",ig,[a("div",rg,[f(cn,{ref_key:"chatInputRef",ref:Ze,"session-id":u.sessionId,disabled:e(_),status:e(_)?"streaming":"ready","chat-type":me.value,embedded:"",onSend:Os,onStop:Hs,onManageSkills:e(Me),onSkillActivated:Vs},null,8,["session-id","disabled","status","chat-type","onManageSkills"]),f(mn,{class:"pb-1.5 pl-2 pr-[52px] pt-0.5","session-token-usage":e($),"agent-status":e(g),"estimated-context-tokens":Se.value},null,8,["session-token-usage","agent-status","estimated-context-tokens"])])])])])]),f(Tt,{name:"slide-fade"},{default:D(()=>[e(I).length>0&&!$e.value?(d(),p("div",ug,[f(tc,{messages:e(I),keywords:e(w),"is-loading":e(v),"is-collapsed":$e.value,class:"h-full",onToggle:Ns,onLoadMore:js},null,8,["messages","keywords","is-loading","is-collapsed"])])):V("",!0)]),_:1})]),f(Gc,{open:e(ie),"assistant-id":e(we),readonly:e(be),"scroll-to-section":De.value,"onUpdate:open":Ls,onSaved:e(Ue),onCreated:e(Ke)},null,8,["open","assistant-id","readonly","scroll-to-section","onSaved","onCreated"]),f(Um,{open:Vt.value,"backup-name":qa.value,upgrading:wt.value,skipping:Ct.value,onSkip:Fs,onConfirm:Rs},null,8,["open","backup-name","upgrading","skipping"]),f(zm,{open:e(te),"onUpdate:open":ye[5]||(ye[5]=_e=>te.value=_e),onConfigure:e(ze),onViewConfig:e(je),onCreate:e(qe)},null,8,["open","onConfigure","onViewConfig","onCreate"]),f(Cp,{open:e(W),"onUpdate:open":ye[6]||(ye[6]=_e=>W.value=_e),onConfigure:e(re),onCreate:e(ce)},null,8,["open","onConfigure","onCreate"]),f(Dp,{open:e(j),"skill-id":e(de),"onUpdate:open":ye[7]||(ye[7]=_e=>j.value=_e),onSaved:e(Q),onCreated:e(le)},null,8,["open","skill-id","onSaved","onCreated"])])}}}),Qb=gt(dg,[["__scopeId","data-v-f10c13e0"]]),ca="__ALL__",cg=ne({__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?ca:String(o.modelValue),set:h=>{s("update:modelValue",h===ca?null:parseInt(h))}}),m=q(()=>{const h=[{value:ca,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=Ma;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"])}}}),mg={class:"relative z-10 px-6 pt-8 pb-4 sm:px-8"},pg={class:"flex items-center gap-6 sm:gap-10"},gg={class:"min-w-0 flex-1"},fg={class:"flex flex-col text-[15px] leading-relaxed text-gray-600 dark:text-gray-300"},vg={key:0,class:"mb-2 text-sm font-medium tracking-wide text-gray-500 dark:text-gray-400"},hg={class:"mb-4 flex min-w-0 flex-wrap items-baseline gap-2"},yg={class:"text-xl font-medium text-gray-700 dark:text-gray-300"},xg={class:"font-black text-5xl tracking-tight text-gray-900 dark:text-white"},bg={class:"text-xl font-medium text-gray-700 dark:text-gray-300"},_g={key:1,class:"flex min-w-0 max-w-full flex-wrap items-center gap-x-1.5 gap-y-1.5"},kg={class:"text-base font-medium text-gray-600 dark:text-gray-300"},wg={class:"font-bold tabular-nums text-pink-500 dark:text-pink-400"},Cg={class:"flex shrink-0 flex-col items-center"},$g={class:"mb-1 text-[10px] font-bold text-gray-500 dark:text-gray-400"},Sg={class:"relative z-10 px-6 pb-6 pt-4 sm:px-8"},Ig={class:"grid grid-cols-2 gap-3 lg:grid-cols-4"},Tg={class:"min-w-0 flex-1"},Mg={class:"flex items-center justify-between gap-1"},Ag={class:"mt-0.5 truncate text-[10px] font-medium text-gray-500 dark:text-gray-400"},qg={class:"mt-0.5 truncate text-[9px] text-gray-400 dark:text-gray-500"},zg={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"},Dg={class:"flex items-center gap-1.5"},Lg={class:"text-[9px] font-medium uppercase tracking-widest"},Eg=ne({__name:"TypeProfileCard",props:{sessionId:{},messageTypes:{},textStats:{},timeFilter:{}},setup(u){ta([vn,Sa,aa]);const{t:n}=Ce(),t=Jt(),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:fa(L.type,n),value:L.count,itemStyle:{color:b[N%b.length]}})));function E(){$.value&&(g=sa($.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()}),Le(()=>{E(),window.addEventListener("resize",T)}),Qe(()=>{window.removeEventListener("resize",T),g?.dispose()}),(M,L)=>{const N=Ie,U=Ca;return d(),B(e(oa),null,{default:D(()=>[a("div",mg,[a("div",pg,[a("div",gg,[a("div",fg,[m.value.first?(d(),p("p",vg,c(m.value.first)+" – "+c(m.value.last),1)):V("",!0),a("div",hg,[a("span",yg,c(e(n)("views.message.profile.heroLine1Prefix")),1),a("span",xg,c(s.value.toLocaleString()),1),a("span",bg,c(e(n)("views.message.profile.heroLine1Suffix")),1)]),S.value.length>0?(d(),p("div",_g,[a("span",kg,c(e(n)("views.message.typeCard.nonTextPrefix")),1),(d(!0),p(oe,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",wg,c(H.count.toLocaleString()),1),a("span",null,c(H.unit),1)]))),128))])):V("",!0)])]),a("div",Cg,[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",Sg,[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",Ig,[(d(!0),p(oe,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:J(["mt-0.5 h-3.5 w-3.5 shrink-0",H.colorClass])},null,8,["name","class"]),a("div",Tg,[a("div",Mg,[a("div",{class:J(["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]=ue=>_.value=ue),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",Ag,c(H.label),1),a("div",qg,c(H.subtext),1)])]))),128))])]),a("div",zg,[a("div",Dg,[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",Lg,c(e(n)("views.message.typeCard.watermark")),1)])]),_:1})}}}),Vg={key:1,class:"main-content mx-auto max-w-[920px] space-y-6 p-4 sm:p-6"},Fg={class:"p-5"},Rg={key:0,class:"grid grid-cols-1 gap-6 lg:grid-cols-2 lg:items-center"},Og={class:"space-y-3"},Bg={class:"min-w-20 shrink-0 text-sm text-gray-700 dark:text-gray-300"},Pg={class:"flex-1"},Ng={class:"h-2 overflow-hidden rounded-full bg-gray-100 dark:bg-gray-800"},jg={class:"shrink-0 text-right"},Ug={class:"text-sm font-medium text-gray-900 dark:text-white"},Wg={class:"ml-1 text-xs text-gray-400"},Kg={key:1,class:"flex h-48 items-center justify-center text-gray-400"},Hg={class:"p-5"},Yg={class:"mb-5 grid grid-cols-2 gap-3 sm:grid-cols-4"},Qg={class:"p-3"},Gg={class:"font-mono text-xl font-bold text-gray-900 dark:text-white"},Jg={class:"mt-1 text-xs text-gray-500"},Xg={class:"p-3"},Zg={class:"font-mono text-xl font-bold text-indigo-600 dark:text-indigo-400"},ef={class:"mt-1 text-xs text-gray-500"},tf={class:"p-3"},af={class:"font-mono text-xl font-bold text-pink-600 dark:text-pink-400"},sf={class:"mt-1 text-xs text-gray-500"},of={class:"p-3"},nf={class:"font-mono text-xl font-bold text-emerald-600 dark:text-emerald-400"},lf={class:"mt-1 text-xs text-gray-500"},rf={class:"mb-5 rounded-lg border border-gray-200 p-4 dark:border-gray-700"},uf={class:"mb-2 text-xs font-medium text-gray-500 dark:text-gray-400"},df={class:"flex items-center gap-4 text-sm"},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:"flex items-center gap-1.5"},vf={class:"font-mono font-medium text-gray-900 dark:text-white"},hf={class:"flex items-center gap-1.5"},yf={class:"font-mono font-medium text-gray-900 dark:text-white"},xf={class:"mt-3 grid grid-cols-3 gap-3 text-xs"},bf={class:"text-gray-500"},_f={class:"ml-1 font-medium text-emerald-600 dark:text-emerald-400"},kf={class:"text-gray-400"},wf={class:"text-gray-500"},Cf={class:"ml-1 font-medium text-indigo-600 dark:text-indigo-400"},$f={class:"grid grid-cols-1 gap-6 lg:grid-cols-2"},Sf={class:"text-xs text-gray-400"},If={class:"p-5"},Tf={key:1,class:"flex h-48 items-center justify-center text-gray-400"},Mf={class:"text-xs text-gray-400"},Af={class:"p-5"},qf={key:1,class:"flex h-48 items-center justify-center text-gray-400"},Gb=ne({__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($=>fa($.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:fa(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:J(o.value?"h-full":"")},[o.value?(d(),B(e(Mt),{key:0,variant:"page",text:e(t)("common.loading")},null,8,["text"])):(d(),p("div",Vg,[s.value.length>0?(d(),B(Eg,{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(Ye),{title:e(t)("views.message.typeDistribution"),"show-divider":!1},{default:D(()=>[a("div",Fg,[h.value.values.length>0?(d(),p("div",Rg,[a("div",null,[f(e(gn),{data:h.value,height:280,"show-legend":!1},null,8,["data"])]),a("div",null,[a("div",Og,[(d(!0),p(oe,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",Bg,c(g.name),1),a("div",Pg,[a("div",Ng,[a("div",{class:"h-full rounded-full transition-all",style:et({width:`${g.percentage}%`,backgroundColor:I(b)})},null,4)])]),a("div",jg,[a("span",Ug,c(g.count.toLocaleString()),1),a("span",Wg,"("+c(g.percentage)+"%)",1)])]))),128))])])])):(d(),p("div",Kg,c(e(t)("views.message.noData")),1))])]),_:1},8,["title"]),f(e(Ye),{title:e(t)("views.message.typeAnalysis.textDepthTitle"),"show-divider":!1},{default:D(()=>[a("div",Hg,[a("div",Yg,[a("div",Qg,[a("div",Gg,c(r.value.textCount.toLocaleString()),1),a("div",Jg,c(e(t)("views.message.typeAnalysis.textTotal")),1)]),a("div",Xg,[a("div",Zg,c(r.value.avgLength||0),1),a("div",ef,c(e(t)("views.message.typeAnalysis.avgLength")),1)]),a("div",tf,[a("div",af,c(m.value.p50),1),a("div",sf,c(e(t)("views.message.typeAnalysis.medianLength")),1)]),a("div",of,[a("div",nf,c(r.value.maxLength),1),a("div",lf,c(e(t)("views.message.typeAnalysis.maxLength")),1)])]),a("div",rf,[a("div",uf,c(e(t)("views.message.typeAnalysis.percentiles")),1),a("div",df,[a("div",cf,[$[0]||($[0]=a("span",{class:"text-gray-500"},"P25",-1)),a("span",mf,c(m.value.p25),1)]),a("div",pf,[$[1]||($[1]=a("span",{class:"text-gray-500"},"P50",-1)),a("span",gf,c(m.value.p50),1)]),a("div",ff,[$[2]||($[2]=a("span",{class:"text-gray-500"},"P75",-1)),a("span",vf,c(m.value.p75),1)]),a("div",hf,[$[3]||($[3]=a("span",{class:"text-gray-500"},"P90",-1)),a("span",yf,c(m.value.p90),1)])]),a("div",xf,[a("div",null,[a("span",bf,c(e(t)("views.message.typeAnalysis.shortMessages")),1),a("span",_f,c(_.value)+"%",1),a("span",kf,"("+c(r.value.shortCount)+")",1)]),a("div",null,[a("span",wf,c(e(t)("views.message.typeAnalysis.essayMessages")),1),a("span",Cf,c(x.value),1)])])])])]),_:1},8,["title"]),a("div",$f,[f(e(Ye),{title:e(t)("views.message.lengthDetailTitle"),"show-divider":!1},{headerRight:D(()=>[a("span",Sf,c(e(t)("views.message.lengthDetailHint")),1)]),default:D(()=>[a("div",If,[w.value.values.some(g=>g>0)?(d(),B(e(ht),{key:0,data:w.value,height:200},null,8,["data"])):(d(),p("div",Tf,c(e(t)("views.message.noTextMessages")),1))])]),_:1},8,["title"]),f(e(Ye),{title:e(t)("views.message.lengthGroupedTitle"),"show-divider":!1},{headerRight:D(()=>[a("span",Mf,c(e(t)("views.message.lengthGroupedHint")),1)]),default:D(()=>[a("div",Af,[v.value.values.some(g=>g>0)?(d(),B(e(ht),{key:0,data:v.value,height:200},null,8,["data"])):(d(),p("div",qf,c(e(t)("views.message.noTextMessages")),1))])]),_:1},8,["title"])])]))],2))}}),zf={class:"relative z-10 px-6 pt-8 pb-4 sm:px-8"},Df={class:"flex items-start gap-6 sm:gap-10"},Lf={class:"min-w-0 flex-1"},Ef={class:"flex flex-col text-[15px] leading-relaxed text-gray-600 dark:text-gray-300"},Vf={key:0,class:"mb-2 text-sm font-medium tracking-wide text-gray-500 dark:text-gray-400"},Ff={class:"mb-3 flex items-baseline gap-2"},Rf={class:"font-black text-5xl tracking-tight text-gray-900 dark:text-white"},Of={class:"text-xl font-medium text-gray-700 dark:text-gray-300"},Bf={class:"font-bold text-3xl text-indigo-500 dark:text-indigo-400"},Pf={class:"text-xl font-medium text-gray-700 dark:text-gray-300"},Nf={class:"flex items-baseline flex-wrap gap-x-1.5 gap-y-1"},jf={class:"text-base font-medium text-gray-600 dark:text-gray-300"},Uf={class:"font-bold text-xl text-pink-500 dark:text-pink-400"},Wf={class:"text-base font-medium text-gray-600 dark:text-gray-300"},Kf={class:"text-base font-medium text-amber-600 dark:text-amber-400"},Hf={class:"flex shrink-0 flex-col items-center"},Yf={class:"mb-1 text-[10px] font-bold text-gray-500 dark:text-gray-400"},Qf={class:"relative z-10 px-6 pb-6 pt-4 sm:px-8"},Gf={class:"grid grid-cols-2 gap-3 lg:grid-cols-4"},Jf={class:"min-w-0 flex-1"},Xf={class:"mt-0.5 truncate text-[10px] font-medium text-gray-500 dark:text-gray-400"},Zf={class:"mt-0.5 truncate text-[9px] text-gray-400 dark:text-gray-500"},ev={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"},tv={class:"flex items-center gap-1.5"},av={class:"text-[9px] font-medium uppercase tracking-widest"},sv=ne({__name:"TimeProfileCard",props:{hourlyActivity:{},weekdayActivity:{},dailyActivity:{}},setup(u){ta([hn,yn,aa]);const{t:n}=Ce(),t=Jt(),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,ue=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(ue>=.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&&(_=sa(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()}),Le(()=>{k(),window.addEventListener("resize",$)}),Qe(()=>{window.removeEventListener("resize",$),_?.dispose()}),(g,b)=>{const F=Ie;return d(),B(e(oa),null,{default:D(()=>[a("div",zf,[a("div",Df,[a("div",Lf,[a("div",Ef,[l.value.first?(d(),p("p",Vf,c(l.value.first)+" – "+c(l.value.last),1)):V("",!0),a("div",Ff,[a("span",Rf,c(l.value.days),1),a("span",Of,c(e(n)("views.message.timeCard.heroDaysIn")),1),a("span",Bf,c(s.value),1),a("span",Pf,c(e(n)("views.message.timeCard.heroDaysActive")),1)]),a("div",Nf,[a("span",jf,c(e(n)("views.message.timeCard.heroAvgPrefix")),1),a("span",Uf,c(r.value),1),a("span",Wf,c(e(n)("views.message.timeCard.heroAvgSuffix")),1),h.value?(d(),p(oe,{key:0},[f(F,{name:h.value.icon,class:"ml-2 h-4 w-4 text-amber-500"},null,8,["name"]),a("span",Kf,c(h.value.label),1)],64)):V("",!0)])])]),a("div",Hf,[a("div",Yf,c(e(n)("views.message.timeCard.hourlyDistribution")),1),a("div",{ref_key:"barRef",ref:v,style:{width:"180px",height:"110px"}},null,512)])])]),a("div",Qf,[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",Gf,[(d(!0),p(oe,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:J(["mt-0.5 h-3.5 w-3.5 shrink-0",E.colorClass])},null,8,["name","class"]),a("div",Jf,[a("div",{class:J(["truncate font-mono text-sm font-black leading-tight tabular-nums",E.colorClass])},c(E.value),3),a("div",Xf,c(E.label),1),a("div",Zf,c(E.subtext),1)])]))),128))])]),a("div",ev,[a("div",tv,[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",av,c(e(n)("views.message.timeCard.watermark")),1)])]),_:1})}}}),ov={key:1,class:"main-content mx-auto max-w-[920px] space-y-6 p-4 sm:p-6"},nv={class:"grid grid-cols-1 gap-6 lg:grid-cols-2"},lv={class:"p-5"},iv={class:"p-5"},rv={class:"grid grid-cols-1 gap-6 lg:grid-cols-2"},uv={class:"p-5"},dv={class:"p-5"},cv={key:1,class:"flex h-48 items-center justify-center text-gray-400"},mv={class:"text-xs text-gray-400"},pv={class:"p-5"},gv={key:1,class:"flex h-48 items-center justify-center text-gray-400"},fv={class:"text-xs text-gray-400"},vv={class:"p-5"},hv={class:"flex items-center gap-2"},yv={class:"text-xs text-gray-400"},xv={class:"p-5"},bv={key:1,class:"flex h-32 items-center justify-center text-gray-400"},Jb=ne({__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 ue=l.value.find(R=>R.weekday===U)?.messageCount||0,se=i.value.find(R=>R.hour===H)?.messageCount||0,P=Math.round(ue*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 ue=M.get(H.memberId);ue?ue.total+=H.count:M.set(H.memberId,{name:H.memberName,total:H.count})}),M.size<=2){const H=new Map;return h.value.forEach(ue=>{H.set(ue.month,(H.get(ue.month)||0)+ue.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(ue=>H.get(ue)||0)}]}}const U=[...M.entries()].sort((H,ue)=>ue[1].total-H[1].total).slice(0,10).map(([H,ue],se)=>{const P=new Map(h.value.filter(R=>R.memberId===H).map(R=>[R.month,R.count]));return{name:ue.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,ue,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=ue,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=Ca;return d(),p("div",{class:J(o.value?"h-full":"")},[o.value?(d(),B(e(Mt),{key:0,variant:"page",text:e(t)("common.loading")},null,8,["text"])):(d(),p("div",ov,[x.value.length>0?(d(),B(sv,{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",nv,[f(e(Ye),{title:e(t)("views.message.hourlyDistribution"),"show-divider":!1},{default:D(()=>[a("div",lv,[f(e(ht),{data:w.value,height:200},null,8,["data"])])]),_:1},8,["title"]),f(e(Ye),{title:e(t)("views.message.weekdayDistribution"),"show-divider":!1},{default:D(()=>[a("div",iv,[f(e(ht),{data:v.value,height:200},null,8,["data"])])]),_:1},8,["title"])]),a("div",rv,[f(e(Ye),{title:e(t)("views.message.monthlyDistribution"),"show-divider":!1},{default:D(()=>[a("div",uv,[f(e(ht),{data:_.value,height:200},null,8,["data"])])]),_:1},8,["title"]),f(e(Ye),{title:e(t)("views.message.yearlyDistribution"),"show-divider":!1},{default:D(()=>[a("div",dv,[k.value.values.length>0?(d(),B(e(ht),{key:0,data:k.value,height:200},null,8,["data"])):(d(),p("div",cv,c(e(t)("views.message.noData")),1))])]),_:1},8,["title"])]),f(e(Ye),{title:e(t)("views.message.timeAnalysis.memberTrendTitle"),"show-divider":!1},{headerRight:D(()=>[a("span",mv,c(e(t)("views.message.timeAnalysis.memberTrendHint")),1)]),default:D(()=>[a("div",pv,[h.value.length>0?(d(),B(e(bn),{key:0,option:E.value,height:280},null,8,["option"])):(d(),p("div",gv,c(e(t)("views.message.noData")),1))])]),_:1},8,["title"]),f(e(Ye),{title:e(t)("views.message.timeHeatmap"),"show-divider":!1},{headerRight:D(()=>[a("span",fv,c(e(t)("views.message.heatmapHint")),1)]),default:D(()=>[a("div",vv,[f(e(fn),{data:C.value,height:320},null,8,["data"])])]),_:1},8,["title"]),f(e(Ye),{title:e(t)("views.message.calendarHeatmap"),"show-divider":!1},{headerRight:D(()=>[a("div",hv,[a("span",yv,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",xv,[F.value.length>0?(d(),B(e(Di),{key:0,data:F.value,year:b.value,height:180},null,8,["data","year"])):(d(),p("div",bv,c(e(t)("views.message.noData")),1))])]),_:1},8,["title"])]))],2)}}}),_v={class:"relative z-10 px-6 pt-8 pb-4 sm:px-8"},kv={class:"flex items-center gap-6 sm:gap-10"},wv={class:"min-w-0 flex-1"},Cv={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"},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-5xl tracking-tight text-gray-900 dark:text-white"},Mv={class:"text-xl font-medium text-gray-700 dark:text-gray-300"},Av={class:"flex items-baseline gap-x-1.5"},qv={class:"text-xl font-medium text-gray-700 dark:text-gray-300"},zv={class:"font-black text-3xl text-pink-500 dark:text-pink-400"},Dv={class:"text-xl font-medium text-gray-700 dark:text-gray-300"},Lv={key:1,class:"mt-1 flex items-baseline flex-wrap gap-x-1.5 gap-y-1"},Ev={class:"text-base font-medium text-gray-600 dark:text-gray-300"},Vv=["onClick"],Fv={key:0,class:"text-gray-400"},Rv={key:0,class:"hidden shrink-0 overflow-hidden rounded-lg sm:block"},Ov={class:"relative",style:{width:"360px",height:"220px"}},Bv={class:"relative z-10 px-6 pb-6 pt-4 sm:px-8"},Pv={class:"grid grid-cols-2 gap-3 lg:grid-cols-4"},Nv={class:"min-w-0 flex-1"},jv={class:"mt-0.5 truncate text-[10px] font-medium text-gray-500 dark:text-gray-400"},Uv={class:"mt-0.5 truncate text-[9px] text-gray-400 dark:text-gray-500"},Wv={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"},Kv={class:"flex items-center gap-1.5"},Hv={class:"text-[9px] font-medium uppercase tracking-widest"},Yv=ne({__name:"TopicProfileCard",props:{totalMessages:{},totalWords:{},uniqueWords:{},topWords:{},topicWords:{},posTagStats:{},timeFilter:{}},emits:["wordClick"],setup(u,{emit:n}){const t=ds(()=>ba(()=>import("./EChartWordcloud-CHVtyPR7.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 _=Ie;return d(),B(e(oa),null,{default:D(()=>[a("div",_v,[a("div",kv,[a("div",wv,[a("div",Cv,[l.value?(d(),p("p",$v,c(l.value),1)):V("",!0),a("div",Sv,[a("span",Iv,c(e(o)("quotes.topicProfile.heroPrefix")),1),a("span",Tv,c(u.totalMessages.toLocaleString()),1),a("span",Mv,c(e(o)("quotes.topicProfile.heroMiddle")),1)]),a("div",Av,[a("span",qv,c(e(o)("quotes.topicProfile.heroMiddleSecond")),1),a("span",zv,c(u.uniqueWords.toLocaleString()),1),a("span",Dv,c(e(o)("quotes.topicProfile.heroSuffix")),1)]),r.value.length>0?(d(),p("div",Lv,[a("span",Ev,c(e(o)("quotes.topicProfile.topTopicsPrefix")),1),(d(!0),p(oe,null,he(r.value,(k,C)=>(d(),p(oe,{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,Vv),C<r.value.length-1?(d(),p("span",Fv,"·")):V("",!0)],64))),128))])):V("",!0)])]),m.value.words.length>0?(d(),p("div",Rv,[a("div",Ov,[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",Bv,[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",Pv,[(d(!0),p(oe,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:J(["mt-0.5 h-3.5 w-3.5 shrink-0",k.colorClass])},null,8,["name","class"]),a("div",Nv,[a("div",{class:J(["truncate font-mono text-sm font-black leading-tight tabular-nums",k.colorClass])},c(k.value),3),a("div",jv,c(k.label),1),a("div",Uv,c(k.subtext),1)])]))),128))])]),a("div",Wv,[a("div",Kv,[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",Hv,c(e(o)("quotes.topicProfile.watermark")),1)])]),_:1})}}}),Qv={class:"px-5 py-4 sm:px-6"},Gv={class:"mb-4 flex items-center gap-2"},Jv={class:"text-[15px] font-black tracking-tight text-gray-900 dark:text-white"},Xv={class:"flex flex-wrap justify-center gap-2"},Zv=["onClick"],e0=ne({__name:"SharedTopicsCard",props:{sessionId:{},timeFilter:{},dictType:{},excludeWords:{}},emits:["wordClick"],setup(u,{emit:n}){const{t}=Ce(),o=Xt(),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=Ie;return x.value.length>0?(d(),B(e(rt),{key:0},{default:D(()=>[a("div",Qv,[a("div",Gv,[f(w,{name:"i-heroicons-link",class:"h-4 w-4 text-emerald-500"}),a("span",Jv,c(e(t)("quotes.topicProfile.sharedTopics")),1)]),a("div",Xv,[(d(!0),p(oe,null,he(x.value,(v,_)=>(d(),p("span",{key:v.word,class:J(["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,Zv))),128))])])]),_:1})):V("",!0)}}}),ws=Ro("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"}}),t0={class:"flex flex-col",style:{height:"520px"}},a0={class:"flex items-center justify-between border-b border-gray-200 px-6 py-4 dark:border-white/5"},s0={class:"flex items-center gap-3"},o0={class:"flex h-9 w-9 items-center justify-center rounded-xl bg-linear-to-br from-pink-400 to-pink-600"},n0={class:"text-lg font-semibold text-gray-900 dark:text-white"},l0={class:"flex flex-1 overflow-hidden"},i0={class:"flex w-[200px] shrink-0 flex-col border-r border-gray-200 dark:border-white/5"},r0={class:"flex items-center justify-between px-3 py-2"},u0={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},d0={class:"flex-1 overflow-y-auto px-2 pb-2"},c0=["onClick"],m0={class:"truncate text-sm"},p0={class:"ml-auto text-xs text-gray-400 dark:text-gray-500"},g0={key:0,class:"px-3 py-8 text-center text-xs text-gray-400 dark:text-gray-500"},f0={class:"flex flex-1 flex-col overflow-hidden"},v0={class:"flex-1 space-y-4 overflow-y-auto p-5"},h0={class:"mb-1.5 block text-xs font-medium text-gray-600 dark:text-gray-400"},y0={class:"flex items-center gap-2"},x0={class:"mb-1.5 block text-xs font-medium text-gray-600 dark:text-gray-400"},b0={class:"flex gap-2"},_0={class:"mb-1.5 flex items-center justify-between"},k0={class:"text-xs font-medium text-gray-600 dark:text-gray-400"},w0={class:"ml-1 text-gray-400 dark:text-gray-500"},C0={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"},S0={class:"flex shrink-0 justify-end border-t border-gray-200 px-5 py-3 dark:border-white/5"},I0={key:1,class:"flex flex-1 flex-col items-center justify-center gap-3 text-gray-400 dark:text-gray-500"},T0={class:"text-sm"},M0=ne({__name:"WordFilterModal",setup(u){const{t:n}=Ce(),t=ws(),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=Ie,b=Ne,F=zt,E=vs,z=Ge;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",t0,[a("div",a0,[a("div",s0,[a("div",o0,[f(g,{name:"i-heroicons-funnel",class:"h-4.5 w-4.5 text-white"})]),a("h2",n0,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",l0,[a("div",i0,[a("div",r0,[a("span",u0,c(e(n)("wordFilter.schemeList")),1),f(b,{icon:"i-heroicons-plus",size:"xs",variant:"ghost",color:"primary",onClick:S})]),a("div",d0,[(d(!0),p(oe,null,he(e(t).schemes,T=>(d(),p("div",{key:T.id,class:J(["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",m0,c(T.name),1),a("span",p0,c(T.words.length),1)],10,c0))),128)),e(t).schemes.length===0?(d(),p("div",g0,c(e(n)("wordFilter.emptyScheme")),1)):V("",!0)])]),a("div",f0,[m.value?(d(),p(oe,{key:0},[a("div",v0,[a("div",null,[a("label",h0,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:Je(I,["enter"])},null,8,["modelValue","placeholder"])]),a("div",y0,[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(()=>[Z(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(()=>[Z(c(e(n)("wordFilter.deleteScheme")),1)]),_:1})]),a("div",null,[a("label",x0,c(e(n)("wordFilter.addWords")),1),a("div",b0,[f(F,{modelValue:l.value,"onUpdate:modelValue":$[2]||($[2]=T=>l.value=T),size:"sm",class:"flex-1",placeholder:e(n)("wordFilter.addWordsPlaceholder"),onKeydown:Je(v,["enter"])},null,8,["modelValue","placeholder"]),f(b,{size:"sm",color:"primary",icon:"i-heroicons-plus",onClick:v},{default:D(()=>[Z(c(e(n)("wordFilter.add")),1)]),_:1})])]),a("div",null,[a("div",_0,[a("label",k0,[Z(c(e(n)("wordFilter.wordList"))+" ",1),a("span",w0,"("+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(()=>[Z(c(e(n)("wordFilter.clearAll")),1)]),_:1})):V("",!0)]),m.value.words.length>0?(d(),p("div",C0,[(d(!0),p(oe,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(()=>[Z(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",S0,[f(b,{color:"primary",variant:"soft",onClick:$[3]||($[3]=T=>o.value=!1)},{default:D(()=>[Z(c(e(n)("wordFilter.close")),1)]),_:1})])],64)):(d(),p("div",I0,[f(g,{name:"i-heroicons-funnel",class:"h-10 w-10"}),a("p",T0,c(e(n)("wordFilter.selectOrCreate")),1),f(b,{size:"sm",color:"primary",variant:"soft",icon:"i-heroicons-plus",onClick:S},{default:D(()=>[Z(c(e(n)("wordFilter.createScheme")),1)]),_:1})]))])])])]),_:1},8,["open"])}}}),A0={class:"main-content mx-auto max-w-[920px] space-y-6 p-4 sm:p-6"},q0={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"},z0={class:"flex min-w-0 items-start gap-3"},D0={class:"min-w-0 text-sm text-primary-700 dark:text-primary-300"},L0={class:"flex shrink-0 flex-wrap gap-2"},E0={key:1,class:"space-y-6"},V0={class:"flex flex-col gap-6 p-4 sm:p-6 lg:flex-row"},F0={class:"flex min-w-0 flex-1 flex-col"},R0={class:"relative w-full",style:{"aspect-ratio":"16 / 9"}},O0={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"},B0={class:"text-xs font-medium"},P0={class:"px-4 text-center text-[11px]"},N0={key:0,class:"mt-2 text-center text-xs text-gray-500 dark:text-gray-400"},j0={class:"w-full shrink-0 space-y-4 lg:w-[280px]"},U0={class:"mb-2 text-xs font-medium text-gray-600 dark:text-gray-400"},W0={class:"mb-2 text-xs font-medium text-gray-600 dark:text-gray-400"},K0={class:"mb-2 text-xs font-medium text-gray-600 dark:text-gray-400"},H0={key:0},Y0={class:"mb-2 text-xs font-medium text-gray-600 dark:text-gray-400"},Q0={class:"space-y-2"},G0={class:"text-xs text-gray-400 dark:text-gray-500"},J0={key:1},X0={class:"mb-2 text-xs font-medium text-gray-600 dark:text-gray-400"},Z0={class:"flex items-center"},eh={key:2,class:"space-y-2"},th={class:"flex items-center justify-between"},ah={class:"text-xs font-medium text-gray-600 dark:text-gray-400"},sh={class:"flex gap-1"},oh={class:"flex max-h-[360px] flex-wrap gap-1.5 overflow-y-auto"},nh={key:0,class:"ml-1 opacity-60"},lh={class:"mb-2 flex items-center justify-between"},ih={class:"text-xs font-medium text-gray-600 dark:text-gray-400"},rh={key:0,class:"mt-1 text-xs text-gray-400 dark:text-gray-500"},uh={class:"space-y-4"},dh={class:"text-sm text-gray-600 dark:text-gray-300"},ch={class:"flex justify-end gap-2"},mh="default",Ya="chatlab_zhTW_dict_prompt_dismissed",Xb=ne({__name:"WordcloudTab",props:{sessionId:{},timeFilter:{},memberId:{},showSharedTopics:{type:Boolean},enableNodeNlpFeatures:{type:Boolean,default:!0},enableRecordNavigation:{type:Boolean,default:!0}},setup(u){const n=ds(()=>ba(()=>import("./EChartWordcloud-CHVtyPR7.js"),__vite__mapDeps([4,5,6,7,1,2,3]))),{t}=Ce(),o=Xt(),s=Dt(),i=ws(),l=kt(),r=u,m=A(!0);Qo(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,le)=>Q+le.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),ue=A(null),se=A(!1),P=A(!r.enableNodeNlpFeatures),R=q(()=>o.locale),G=q(()=>o.locale==="zh-TW"),ge=q(()=>R.value.startsWith("zh")),ee=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}))),K=q(()=>U.value.some(re=>re.downloaded)),ae=q(()=>!r.enableNodeNlpFeatures||!ge.value||P.value),O=q(()=>U.value.filter(re=>!re.downloaded));async function ie(){if(r.enableNodeNlpFeatures)try{U.value=await Ba("/nlp/dicts"),G.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,ue.value=re;try{const ce=await Oo(`/nlp/dicts/${re}/download`);ce.success?(await ie(),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,ue.value=null,se.value=!1}}function be(){se.value=!1,localStorage.setItem(Ya,"true")}function te(){const re=U.value.find(ce=>ce.id==="zh-TW");G.value&&re&&!re.downloaded&&!localStorage.getItem(Ya)&&(se.value=!0)}const W=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)),xe=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 Ba("/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 Ke=0;async function Ue(){if(!r.sessionId||!ae.value)return;const re=++Ke;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!==Ke)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 le of ce.posTagStats)Q.set(le.tag,le.count);C.value=Q}}catch(ce){if(console.error("加载词频数据失败:",ce),re!==Ke)return;x.value=[]}finally{re===Ke&&(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 Me(re){r.enableRecordNavigation&&s.openChatRecordDrawer({keywords:[re]})}return Le(async()=>{r.enableNodeNlpFeatures&&(ze(),await ie(),te())}),(re,ce)=>{const Q=Ie,le=Ne,Y=$a,Se=vs,X=Ge;return d(),p("div",A0,[r.enableNodeNlpFeatures&&ge.value&&!K.value?(d(),p("div",q0,[a("div",z0,[f(Q,{name:"i-heroicons-information-circle",class:"mt-0.5 shrink-0 text-xl text-primary-500"}),a("p",D0,c(e(t)("quotes.wordcloud.dict.needDownload")),1)]),a("div",L0,[(d(!0),p(oe,null,he(U.value,me=>(d(),B(le,{key:me.id,size:"sm",color:"primary",loading:H.value&&ue.value===me.id,disabled:H.value&&ue.value!==me.id,icon:"i-heroicons-arrow-down-tray",onClick:$e=>we(me.id)},{default:D(()=>[Z(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",E0,[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(Yv,{"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:Me},null,8,["total-messages","total-words","unique-words","top-words","topic-words","pos-tag-stats","time-filter"]),r.showSharedTopics?(d(),B(e0,{key:1,"session-id":r.sessionId,"time-filter":r.timeFilter,"dict-type":N.value,"exclude-words":L.value,onWordClick:Me},null,8,["session-id","time-filter","dict-type","exclude-words"])):V("",!0),f(e(Ye),{title:e(t)("quotes.wordcloud.stats.wordsLabel"),"show-divider":!1},{default:D(()=>[a("div",V0,[a("div",F0,[a("div",R0,[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",O0,[f(Q,{name:"i-heroicons-chat-bubble-bottom-center-text",class:"text-2xl"}),a("p",B0,c(e(t)("quotes.wordcloud.empty.title")),1),a("p",P0,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":mh,"size-scale":S.value,loading:m.value,onWordClick:Me},null,8,["data","max-words","size-scale","loading"]))]),r.enableRecordNavigation?(d(),p("p",N0,c(e(t)("quotes.wordcloud.stats.clickHint")),1)):V("",!0)]),a("div",j0,[a("div",null,[a("h4",U0,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",W0,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:xe.value},null,8,["modelValue","items"])]),a("div",null,[a("h4",K0,c(e(t)("quotes.wordcloud.config.userFilter")),1),f(cg,{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",H0,[a("h4",Y0,c(e(t)("quotes.wordcloud.config.dict")),1),a("div",Q0,[ee.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:ee.value},null,8,["modelValue","items"])):V("",!0),(d(!0),p(oe,null,he(O.value,me=>(d(),p("div",{key:me.id,class:"flex items-center gap-2"},[f(le,{size:"xs",variant:"soft",color:"primary",loading:H.value&&ue.value===me.id,disabled:H.value&&ue.value!==me.id,icon:"i-heroicons-arrow-down-tray",onClick:$e=>we(me.id)},{default:D(()=>[Z(c(e(t)(`quotes.wordcloud.dict.download_${me.id}`,e(t)("quotes.wordcloud.dict.download"))),1)]),_:2},1032,["loading","disabled","onClick"]),a("span",G0,c(e(t)("quotes.wordcloud.dict.downloadHint")),1)]))),128))])])):V("",!0),r.enableNodeNlpFeatures?(d(),p("div",J0,[a("h4",X0,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:W.value},null,8,["modelValue","items"])])):V("",!0),a("div",Z0,[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",eh,[a("div",th,[a("h4",ah,c(e(t)("quotes.wordcloud.posFilter.customHint")),1),a("div",sh,[f(le,{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(()=>[Z(c(e(t)("quotes.wordcloud.posFilter.selectMeaningful")),1)]),_:1}),f(le,{size:"xs",variant:"ghost",color:"neutral",onClick:ce[7]||(ce[7]=me=>_.value=k.value.map($e=>$e.tag))},{default:D(()=>[Z(c(e(t)("quotes.wordcloud.posFilter.selectAll")),1)]),_:1}),f(le,{size:"xs",variant:"ghost",color:"neutral",onClick:ce[8]||(ce[8]=me=>_.value=[])},{default:D(()=>[Z(c(e(t)("quotes.wordcloud.posFilter.clearAll")),1)]),_:1})])]),a("div",oh,[(d(!0),p(oe,null,he(ke.value,me=>(d(),B(Se,{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(()=>[Z(c(me.label)+" ",1),me.count>0?(d(),p("span",nh,"("+c(me.count)+")",1)):V("",!0)]),_:2},1032,["color","variant","onClick"]))),128))])])):V("",!0),a("div",null,[a("div",lh,[a("h4",ih,c(e(t)("wordFilter.filterScheme")),1),f(le,{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",rh,c(e(t)("wordFilter.activeCount",{count:L.value.length})),1)):V("",!0)])])])]),_:1},8,["title"])])):V("",!0),r.enableNodeNlpFeatures?(d(),B(X,{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",uh,[a("p",dh,c(e(t)("quotes.wordcloud.dict.promptDescription")),1),a("div",ch,[f(le,{variant:"ghost",color:"neutral",onClick:be},{default:D(()=>[Z(c(e(t)("quotes.wordcloud.dict.promptLater")),1)]),_:1}),f(le,{color:"primary",loading:H.value,onClick:ce[11]||(ce[11]=me=>we("zh-TW"))},{default:D(()=>[Z(c(e(t)("quotes.wordcloud.dict.promptDownload")),1)]),_:1},8,["loading"])])])]),_:1},8,["open","title"])):V("",!0),f(M0)])}}});function Zb(u){const n=q(()=>Bo(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 ph=86400;function Gt(u){return typeof u=="number"&&Number.isFinite(u)}function gh(u){return Gt(u?.startTs)&&Gt(u?.endTs)}function Cs(u,n){const t=n?.startTs??u?.start,o=n?.endTs??u?.end;return!Gt(t)||!Gt(o)||o<t?null:{start:t,end:o}}function fh(u,n=0){return!u||u.end<u.start?0:Math.max(Math.ceil((u.end-u.start)/ph),n,1)}function vh(u){return u?[Ve.unix(u.start).format("YYYY-MM-DD"),Ve.unix(u.end).format("YYYY-MM-DD")]:null}function hh(u,n){const{t}=Ce(),o=q(()=>Cs(u.timeRange,u.timeFilter)),s=q(()=>gh(u.timeFilter)),i=q(()=>u.dailyActivity.filter(F=>F.messageCount>0).length),l=q(()=>fh(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 yh(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 xh={key:0,class:"relative z-10 px-5 pb-5 pt-2 sm:px-8 sm:pb-6"},bh={class:"grid grid-cols-2 gap-3 lg:grid-cols-4"},_h={class:"min-w-0"},kh={class:"mt-0.5 truncate text-[10px] font-medium text-gray-500 dark:text-gray-400"},wh={class:"mt-0.5 truncate text-[9px] text-gray-400 dark:text-gray-500"},Ch={key:1,class:"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4"},$h={class:"text-sm text-gray-500"},Sh={class:"text-sm text-gray-500"},Ih={class:"ml-1 font-semibold text-pink-500"},Th={class:"text-sm text-gray-500"},Mh={class:"text-sm text-gray-500"},Ah={class:"text-sm text-gray-500"},qh={class:"text-sm text-gray-500"},zh={class:"text-sm text-gray-500"},Dh={class:"text-sm text-gray-500"},Lh=ne({__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=Ie;return u.flat?(d(),p("div",xh,[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",bh,[(d(!0),p(oe,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:J(["mt-0.5 h-3.5 w-3.5 shrink-0",r.colorClass])},null,8,["name","class"]),a("div",_h,[a("div",{class:J(["truncate font-mono text-sm font-black leading-tight tabular-nums",r.colorClass])},c(r.value),3),a("div",kh,c(r.label),1),a("div",wh,c(r.subtext),1)])]))),128))])])):(d(),p("div",Ch,[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",Sh,c(e(n)("analysis.overview.statCards.peakHour")),1),a("span",Ih,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",Th,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",Mh,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",Ah,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",qh,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",zh,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",Dh,c(e(n)("analysis.overview.statCards.activeDaysRatio")),1)]),_:1},8,["label","value"])]))}}}),Eh={class:"relative z-10 px-5 pt-6 pb-4 sm:px-8 sm:pt-8"},Vh={class:"text-2xl font-bold tracking-tight text-gray-900 sm:text-3xl dark:text-gray-100"},Fh={class:"mt-4 flex flex-col gap-5 sm:flex-row sm:items-start sm:gap-24"},Rh={class:"min-w-0 flex flex-col gap-2 text-sm font-medium text-gray-500 dark:text-gray-400"},Oh={class:"flex items-center gap-2"},Bh={class:"flex h-6 w-6 shrink-0 items-center justify-center"},Ph={class:"whitespace-nowrap"},Nh={key:0,class:"flex items-center gap-2"},jh={class:"flex h-6 w-6 shrink-0 items-center justify-center"},Uh={class:"font-mono text-xs opacity-90 whitespace-nowrap"},Wh={class:"grid grid-cols-2 gap-x-8 gap-y-4 sm:flex sm:shrink-0 sm:gap-6"},Kh={class:"flex flex-col gap-1 text-center"},Hh={class:"text-2xl font-black font-mono tracking-tight text-gray-900 dark:text-white"},Yh={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},Qh={class:"flex flex-col gap-1 text-center"},Gh={class:"text-2xl font-black font-mono tracking-tight text-gray-900 dark:text-white"},Jh={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},Xh={class:"flex flex-col gap-1 text-center"},Zh={class:"text-2xl font-black font-mono tracking-tight text-gray-900 dark:text-white"},ey={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},ty={class:"flex flex-col gap-1 text-center"},ay={class:"text-2xl font-black font-mono tracking-tight text-gray-900 dark:text-white"},sy={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},oy={class:"relative z-10 px-5 pb-2 sm:px-8"},ny={class:"overflow-x-auto overflow-y-hidden scrollbar-hide py-1"},e_=ne({__name:"OverviewIdentityCard",props:{session:{},dailyActivity:{},messageTypes:{},hourlyActivity:{},timeRange:{},filteredMessageCount:{},filteredMemberCount:{},timeFilter:{},capturable:{type:Boolean,default:!0}},setup(u){ta([ps,xn,gs,Sa,fs,aa]);const{t:n,locale:t}=Ce(),o=Jt(),s=u,{weekdayActivity:i}=yh({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:$}=hh(s,i),g=A(null);let b=null;const F=q(()=>Cs(s.timeRange,s.timeFilter)),E=q(()=>F.value?wn(F.value.start,F.value.end,"YYYY/MM/DD"):""),z=q(()=>{const P=vh(F.value);if(P)return P;const ge=(ee=>ee.toISOString().slice(0,10))(new Date);return[ge,ge]}),T=q(()=>{const[P,R]=z.value,G=new Date(P+"T00:00:00Z"),ge=new Date(R+"T00:00:00Z"),ee=new Map;s.dailyActivity.filter(O=>O.date>=P&&O.date<=R).forEach(O=>ee.set(O.date,O.messageCount));const K=[],ae=new Date(G);for(;ae<=ge;){const O=ae.toISOString().slice(0,10),ie=ee.get(O)||0;K.push({value:[O,ie],itemStyle:ie===0?{color:N.value}:void 0}),ae.setUTCDate(ae.getUTCDate()+1)}return K}),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],G=P.value[1];return`${R}<br/>${n("views.message.calendarTooltipMessages")}: ${G}`}},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 G=R.coord(R.value(0)),ge=P.coordSys.cellWidth,ee=P.coordSys.cellHeight,K=Math.min(ge,ee)-3;return{type:"rect",shape:{x:G[0]-K/2,y:G[1]-K/2,width:K,height:K,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=sa(g.value,void 0,{renderer:"canvas"}),b.setOption({backgroundColor:"transparent",...U.value}))}function ue(){b&&b.setOption({backgroundColor:"transparent",...U.value},{notMerge:!0})}function se(){b?.resize()}return pe([()=>s.dailyActivity,t,z],()=>ue()),pe(o,()=>{b?.dispose(),H()}),Le(()=>{H(),window.addEventListener("resize",se)}),Qe(()=>{window.removeEventListener("resize",se),b?.dispose()}),(P,R)=>{const G=Ie;return d(),B(e(oa),{capturable:u.capturable},{default:D(()=>[a("div",Eh,[a("h2",Vh,c(u.session.name),1),a("div",Fh,[a("div",Rh,[a("div",Oh,[a("div",Bh,[u.session.type==="group"?(d(),B(G,{key:0,name:"i-heroicons-user-group",class:"h-4 w-4 opacity-70"})):(d(),B(G,{key:1,name:"i-heroicons-user",class:"h-4 w-4 opacity-70"}))]),a("span",Ph,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",Nh,[a("div",jh,[f(G,{name:"i-heroicons-calendar",class:"h-4 w-4 opacity-70"})]),a("span",Uh,c(E.value),1)])):V("",!0)]),a("div",Wh,[a("div",Kh,[a("span",Hh,c(e(r).toLocaleString()),1),a("span",Yh,c(e(n)("analysis.overview.identity.totalMessages")),1)]),a("div",Qh,[a("span",Gh,c(e(l).toLocaleString()),1),a("span",Jh,c(e(n)("analysis.overview.identity.durationDays")),1)]),a("div",Xh,[a("span",Zh,c(e(v).toLocaleString()),1),a("span",ey,c(e(n)("analysis.overview.identity.activeDays")),1)]),a("div",ty,[a("span",ay,c(e(m).toLocaleString()),1),a("span",sy,c(e(n)("analysis.overview.identity.dailyAvgMessages")),1)])])])]),a("div",oy,[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",ny,[a("div",{ref_key:"chartRef",ref:g,class:"h-[140px] min-w-[700px] lg:w-full"},null,512)])]),f(Lh,{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"])}}}),ly={class:"p-3 sm:p-5"},t_=ne({__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(Ye),{key:0,title:e(n)("analysis.overview.dailyTrend.title"),capturable:u.capturable,"show-divider":!1},{default:D(()=>[a("div",ly,[f(e(Sn),{data:u.dailyChartData,height:288},null,8,["data"])])]),_:1},8,["title","capturable"])):V("",!0)}}),iy={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"}},ry=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=xa(),l=ts("inputTags",o),r=ls(),m=as(ss(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:$}=os(o),{orientation:g,size:b}=ns(o),{isLeading:F,isTrailing:E,leadingIconName:z,trailingIconName:T}=is(l),M=q(()=>b.value||I.value),L=q(()=>Kt({extend:Kt(iy),...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=Nt("inputRef");function U(){l.autofocus&&N.value?.$el?.focus()}Le(()=>{setTimeout(()=>{U()},l.autofocusDelay)});function H(P){if(rs(l.modelValue)===P)return;const R=new Event("change",{target:{value:P}});s("change",R),S(),y()}function ue(P){s("blur",P),x()}function se(P){s("focus",P),h()}return n({inputRef:Fe(()=>N.value?.$el)}),(P,R)=>(d(),B(e(Zl),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:G})=>[(d(!0),p(oe,null,he(G,(ge,ee)=>(d(),B(e(oi),{key:ee,value:ge,"data-slot":"item",class:J(L.value.item({class:[e(l).ui?.item]}))},{default:D(()=>[f(e(ri),{"data-slot":"itemText",class:J(L.value.itemText({class:[e(l).ui?.itemText]}))},{default:D(()=>[i["item-text"]?ve(P.$slots,"item-text",{key:0,item:ge,index:ee,ui:L.value}):V("",!0)]),_:2},1032,["class"]),f(e(li),{"data-slot":"itemDelete",class:J(L.value.itemDelete({class:[e(l).ui?.itemDelete]})),disabled:e(C)},{default:D(()=>[ve(P.$slots,"item-delete",{item:ge,index:ee,ui:L.value},()=>[f(Ie,{name:e(l).deleteIcon||e(r).ui.icons.close,"data-slot":"itemDeleteIcon",class:J(L.value.itemDeleteIcon({class:[e(l).ui?.itemDeleteIcon]}))},null,8,["name","class"])])]),_:2},1032,["class","disabled"])]),_:2},1032,["value","class"]))),128)),f(e(ti),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:ue,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:J(L.value.leading({class:e(l).ui?.leading}))},[ve(P.$slots,"leading",{ui:L.value},()=>[e(F)&&e(z)?(d(),B(Ie,{key:0,name:e(z),"data-slot":"leadingIcon",class:J(L.value.leadingIcon({class:e(l).ui?.leadingIcon}))},null,8,["name","class"])):e(l).avatar?(d(),B(ga,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:J(L.value.trailing({class:e(l).ui?.trailing}))},[ve(P.$slots,"trailing",{ui:L.value},()=>[e(T)?(d(),B(Ie,{key:0,name:e(T),"data-slot":"trailingIcon",class:J(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"]))}}),uy={class:"flex items-center justify-between gap-3"},dy={class:"flex items-center gap-2"},cy={class:"text-sm font-medium text-gray-900 dark:text-white"},my={class:"text-xs text-gray-500 dark:text-gray-400"},py=ne({__name:"OwnerEntryCard",props:{sessionId:{},members:{},chatType:{}},setup(u){const{t:n}=Ce(),t=Po(),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=Ie,S=Ne;return d(),B(e(rt),{class:"w-150 p-3"},{default:D(()=>[a("div",uy,[a("div",dy,[a("div",{class:J(["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",cy,c(r.value?e(n)("members.ownerPrompt.currentOwner",{name:r.value}):e(n)("members.ownerPrompt.choose")),1),a("p",my,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(()=>[Z(c(r.value?e(n)("members.ownerPrompt.change"):e(n)("members.ownerPrompt.choose")),1)]),_:1},8,["variant"])]),f(In,{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})}}}),gy={key:0,class:"mb-6"},fy={class:"flex items-center gap-3"},vy={class:"text-xl font-bold text-gray-900 dark:text-white"},hy={class:"text-sm text-gray-500 dark:text-gray-400"},yy={class:"mb-4 flex flex-wrap items-center justify-between gap-3"},xy={key:0,class:"flex items-center gap-2"},by={class:"text-xs text-gray-500 dark:text-gray-400"},_y={key:0,class:"flex flex-1 items-center justify-center"},ky={key:1,class:"flex flex-1 flex-col items-center justify-center gap-3"},wy={class:"text-sm text-gray-500 dark:text-gray-400"},Cy={key:2,class:"flex flex-1 flex-col items-center justify-center"},$y={class:"text-gray-500 dark:text-gray-400"},Sy={key:3,class:"min-h-0 flex-1 overflow-x-auto overflow-y-hidden"},Iy={key:0,"aria-hidden":"true"},Ty={class:"flex shrink-0 flex-col leading-none"},My={class:"flex shrink-0 flex-col leading-none"},Ay={class:"flex shrink-0 flex-col leading-none"},qy={class:"inline-flex items-center gap-1.5"},zy={class:"text-right"},Dy=["data-index","onClick"],Ly={key:0,class:"flex justify-center"},Ey={class:"flex min-w-0 items-center gap-2.5"},Vy={class:"min-w-0"},Fy=["title"],Ry=["title"],Oy=["title"],By={class:"text-right font-mono text-sm font-semibold tabular-nums text-gray-900 dark:text-white"},Py=["title"],Ny={class:"flex justify-end gap-1"},jy={class:"p-6 text-center"},Uy={class:"mx-auto mb-4 flex h-14 w-14 items-center justify-center rounded-full bg-red-100 dark:bg-red-900/30"},Wy={class:"mb-2 text-lg font-semibold text-gray-900 dark:text-white"},Ky={class:"mb-6 text-sm text-gray-500 dark:text-gray-400"},Hy={class:"flex justify-center gap-3"},Yy={class:"p-6 text-center"},Qy={class:"mx-auto mb-4 flex h-14 w-14 items-center justify-center rounded-full bg-red-100 dark:bg-red-900/30"},Gy={class:"mb-2 text-lg font-semibold text-gray-900 dark:text-white"},Jy={class:"mb-6 text-sm text-gray-500 dark:text-gray-400"},Xy={class:"flex justify-center gap-3"},Zy={class:"p-6"},ex={class:"mb-4 flex items-center gap-3"},tx={class:"flex h-10 w-10 items-center justify-center rounded-full bg-amber-100 dark:bg-amber-900/30"},ax={class:"text-lg font-semibold text-gray-900 dark:text-white"},sx={class:"mb-2 text-sm text-gray-600 dark:text-gray-400"},ox={class:"mb-6 text-xs text-amber-700 dark:text-amber-300"},nx={class:"flex justify-end gap-2"},lx=64,ix=ne({__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=Dt(),i=u,l=n,r=A([]),m=A(!1),x=A(!1),h=A(""),S=q(()=>en(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}=Tn({initialState:{field:"messageCount",direction:"desc"}}),E=A(new Set);let z=0;function T(Q,le){const Y=le instanceof Error?le:new Error(String(le));console.error(Q,Y),Wo(`${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(()=>tn(r.value,h.value,$.value)),{selectedIds:H,setSelection:ue,clearSelection:se,handleRowClick:P,handleRowMouseDown:R}=Mn({rows:U,getRowId:Q=>Q.id}),G=q(()=>r.value.filter(Q=>H.value.has(Q.id))),ge=q(()=>G.value.length===2),ee=q(()=>G.value.reduce((Q,le)=>Q+le.messageCount,0));function K(Q,le,Y){S.value&&P(Q,le,Y)}function ae(Q){S.value&&R(Q)}const O=q(()=>{if(G.value.length!==2)return null;const[Q,le]=G.value;return le.messageCount>Q.messageCount||le.messageCount===Q.messageCount&&le.id<Q.id?{primary:le,secondary:Q}:{primary:Q,secondary:le}});function ie(Q,le){return F(Q,le)?"text-primary-500 dark:text-primary-400":"text-gray-300 dark:text-gray-600"}const we=A(null),be=No(q(()=>({count:U.value.length,getScrollElement:()=>we.value,estimateSize:()=>lx,overscan:8,getItemKey:Q=>U.value[Q]?.id??Q}))),te=q(()=>be.value.getVirtualItems().map(Q=>({virtualItem:Q,member:U.value[Q.index]}))),W=q(()=>be.value.getTotalSize());function j(Q){Q instanceof HTMLElement&&be.value.measureElement(Q)}async function de(){await Re(),we.value?.scrollTo({top:0}),be.value.measure()}async function xe(){const Q=i.sessionId;if(!Q)return;const le=++z;m.value=!0,x.value=!1;try{const Y=await o.getMembers(Q);if(le!==z||Q!==i.sessionId)return;r.value=Y,await Re(),be.value.measure()}catch(Y){le===z&&(x.value=!0),T("Failed to load member list:",Y)}finally{le===z&&(m.value=!1)}}function ke(Q,le){const Y=new Set(E.value);le?Y.add(Q):Y.delete(Q),E.value=Y}async function ze(Q,le){const Y=i.sessionId,Se=JSON.parse(JSON.stringify(le)),X=JSON.stringify(Q.aliases),me=JSON.stringify(Se);if(X!==me){ke(Q.id,!0);try{if(await o.updateMemberAliases(Y,Q.id,Se)&&Y===i.sessionId){const He=r.value.findIndex(Xe=>Xe.id===Q.id);He!==-1&&(r.value[He]={...r.value[He],aliases:Se},await Re(),be.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 Ke(){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),ue(Y),await xe(),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 Me(){const Q=i.sessionId,le=Array.from(H.value);if(le.length!==0){_.value=!0;try{await o.deleteMembers(Q,le)&&Q===i.sessionId&&(v.value=!1,se(),await xe(),l("data-changed"))}catch(Y){T("Failed to delete selected members:",Y)}finally{_.value=!1}}}function re(){ge.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 xe(),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(),xe()},{immediate:!0}),Qe(()=>{z+=1}),(Q,le)=>{const Y=Ne,Se=zt,X=Ie,me=Zt,$e=$a,He=ry,Xe=Ge;return d(),p("div",{class:J(["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",gy,[a("div",fy,[a("div",null,[a("h2",vy,c(e(t)(i.chatType==="private"?"members.private.title":"members.list.title")),1),a("p",hy,c(e(t)(i.chatType==="private"?"members.private.description":"members.list.description",{count:r.value.length})),1)])])])):V("",!0),f(py,{class:"mb-6","session-id":u.sessionId,members:r.value,"chat-type":i.chatType},null,8,["session-id","members","chat-type"]),a("div",yy,[f(Se,{modelValue:h.value,"onUpdate:modelValue":le[1]||(le[1]=De=>h.value=De),placeholder:e(t)("members.list.searchPlaceholder"),icon:"i-heroicons-magnifying-glass",class:"w-full md:w-100"},jo({_:2},[h.value?{name:"trailing",fn:D(()=>[f(Y,{icon:"i-heroicons-x-mark",variant:"link",color:"neutral",size:"xs",onClick:le[0]||(le[0]=De=>h.value="")})]),key:"0"}:void 0]),1032,["modelValue","placeholder"]),S.value?(d(),p("div",xy,[m.value&&r.value.length>0?(d(),B(X,{key:0,name:"i-heroicons-arrow-path",class:"h-4 w-4 animate-spin text-primary-500"})):V("",!0),a("span",by,c(e(t)("members.list.selectedCount",{count:e(H).size})),1),f(Y,{icon:"i-heroicons-link",size:"sm",color:"primary",disabled:!ge.value,onClick:re},{default:D(()=>[Z(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(()=>[Z(c(e(t)("members.list.deleteSelected")),1)]),_:1},8,["disabled"])])):V("",!0)]),a("div",{class:J(["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",_y,[f(X,{name:"i-heroicons-arrow-path",class:"h-8 w-8 animate-spin text-primary-500"})])):x.value&&r.value.length===0?(d(),p("div",ky,[f(X,{name:"i-heroicons-exclamation-circle",class:"h-10 w-10 text-red-400"}),a("p",wy,c(e(t)("members.list.loadError")),1),f(Y,{size:"sm",variant:"outline",icon:"i-heroicons-arrow-path",onClick:xe},{default:D(()=>[Z(c(e(t)("common.retry")),1)]),_:1})])):U.value.length===0?(d(),p("div",Cy,[f(X,{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",Sy,[a("div",{class:J(["flex h-full flex-col",i.chatType==="private"?"min-w-[920px]":"min-w-[1120px]"])},[a("div",{class:J(["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",Iy)):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:le[2]||(le[2]=De=>e(g)("groupNickname"))},[Z(c(e(t)("members.list.table.groupNickname"))+" ",1),a("span",Ty,[f(X,{name:"i-heroicons-chevron-up",class:J(["h-2.5 w-2.5",ie("groupNickname","asc")])},null,8,["class"]),f(X,{name:"i-heroicons-chevron-down",class:J(["-mt-0.5 h-2.5 w-2.5",ie("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:le[3]||(le[3]=De=>e(g)("messageCount"))},[Z(c(e(t)("members.list.table.messageCount"))+" ",1),a("span",My,[f(X,{name:"i-heroicons-chevron-up",class:J(["h-2.5 w-2.5",ie("messageCount","asc")])},null,8,["class"]),f(X,{name:"i-heroicons-chevron-down",class:J(["-mt-0.5 h-2.5 w-2.5",ie("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:le[4]||(le[4]=De=>e(g)("lastMessageTs"))},[Z(c(e(t)("members.list.table.lastMessageTime"))+" ",1),a("span",Ay,[f(X,{name:"i-heroicons-chevron-up",class:J(["h-2.5 w-2.5",ie("lastMessageTs","asc")])},null,8,["class"]),f(X,{name:"i-heroicons-chevron-down",class:J(["-mt-0.5 h-2.5 w-2.5",ie("lastMessageTs","desc")])},null,8,["class"])])]),a("span",qy,[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(X,{name:"i-heroicons-question-mark-circle",class:"h-4 w-4 text-gray-400 dark:text-gray-500"})]),_:1},8,["text"])]),a("span",zy,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:`${W.value}px`})},[(d(!0),p(oe,null,he(te.value,({virtualItem:De,member:Te})=>(d(),p("div",{key:String(De.key),ref_for:!0,ref:j,"data-index":De.index,class:J(["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(Te.id)?"bg-primary-50/70 dark:bg-primary-950/20":""]]),style:et({transform:`translateY(${De.start}px)`}),onMousedown:ae,onClick:Ze=>K(De.index,Te.id,Ze)},[S.value?(d(),p("div",Ly,[f($e,{"model-value":e(H).has(Te.id),onClick:Oe(Ze=>K(De.index,Te.id,Ze),["stop"])},null,8,["model-value","onClick"])])):V("",!0),a("div",Ey,[f(Uo,{src:Te.avatar,alt:M(Te),text:L(Te),"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",Vy,[a("p",{class:"truncate text-sm font-medium text-gray-900 dark:text-white",title:Te.accountName||"-"},c(Te.accountName||"-"),9,Fy),a("p",{class:"truncate text-xs text-gray-400 dark:text-gray-500",title:Te.platformId},c(Te.platformId),9,Ry)])]),i.chatType==="group"?(d(),p("p",{key:1,class:J(["truncate text-sm text-gray-700 dark:text-gray-300",Te.groupNickname?"font-medium":"text-gray-400 dark:text-gray-500"]),title:Te.groupNickname||"-"},c(Te.groupNickname||"-"),11,Oy)):V("",!0),a("span",By,c(Te.messageCount.toLocaleString()),1),a("span",{class:"text-right font-mono text-xs tabular-nums text-gray-600 dark:text-gray-400",title:Te.lastMessageTs===null?"-":e(Na)(Te.lastMessageTs)},c(Te.lastMessageTs===null?"-":e(Na)(Te.lastMessageTs)),9,Py),f(He,{"model-value":Te.aliases,placeholder:e(t)("members.list.aliasPlaceholder"),loading:E.value.has(Te.id),size:"xs",class:"w-full",onClick:le[5]||(le[5]=Oe(()=>{},["stop"])),"onUpdate:modelValue":Ze=>ze(Te,Ze)},null,8,["model-value","placeholder","loading","onUpdate:modelValue"]),a("div",Ny,[f(Y,{icon:"i-heroicons-chat-bubble-left-ellipsis",size:"xs",color:"neutral",variant:"ghost",title:e(t)("common.viewChatRecords"),onClick:Oe(Ze=>N(Te),["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(Ze=>je(Te),["stop"])},null,8,["title","onClick"])])],46,Dy))),128))],4)],512)],2)]))],2),f(Xe,{open:!!I.value,ui:{content:"max-w-sm"},"onUpdate:open":le[6]||(le[6]=De=>I.value=null)},{content:D(()=>[a("div",jy,[a("div",Uy,[f(X,{name:"i-heroicons-exclamation-triangle",class:"h-7 w-7 text-red-500"})]),a("h3",Wy,c(e(t)("members.list.modal.title")),1),a("p",Ky,c(e(t)("members.list.modal.content",{name:I.value?M(I.value):"",count:I.value?.messageCount.toLocaleString()})),1),a("div",Hy,[f(Y,{variant:"outline",onClick:qe},{default:D(()=>[Z(c(e(t)("members.list.modal.cancel")),1)]),_:1}),f(Y,{color:"error",loading:w.value,onClick:Ke},{default:D(()=>[Z(c(e(t)("members.list.modal.confirm")),1)]),_:1},8,["loading"])])])]),_:1},8,["open"]),f(Xe,{open:v.value,ui:{content:"max-w-sm"},"onUpdate:open":le[8]||(le[8]=De=>v.value=De)},{content:D(()=>[a("div",Yy,[a("div",Qy,[f(X,{name:"i-heroicons-exclamation-triangle",class:"h-7 w-7 text-red-500"})]),a("h3",Gy,c(e(t)("members.list.batchDeleteModal.title")),1),a("p",Jy,c(e(t)("members.list.batchDeleteModal.content",{count:G.value.length,messageCount:ee.value.toLocaleString()})),1),a("div",Xy,[f(Y,{variant:"outline",disabled:_.value,onClick:le[7]||(le[7]=De=>v.value=!1)},{default:D(()=>[Z(c(e(t)("members.list.modal.cancel")),1)]),_:1},8,["disabled"]),f(Y,{color:"error",loading:_.value,onClick:Me},{default:D(()=>[Z(c(e(t)("members.list.modal.confirm")),1)]),_:1},8,["loading"])])])]),_:1},8,["open"]),f(Xe,{open:k.value,ui:{content:"max-w-md"},"onUpdate:open":le[10]||(le[10]=De=>k.value=De)},{content:D(()=>[a("div",Zy,[a("div",ex,[a("div",tx,[f(X,{name:"i-heroicons-link",class:"h-5 w-5 text-amber-600 dark:text-amber-400"})]),a("h3",ax,c(e(t)("members.list.mergeModal.title")),1)]),a("p",sx,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",ox,c(e(t)("members.list.mergeModal.hint")),1),a("div",nx,[f(Y,{variant:"outline",disabled:C.value,onClick:le[9]||(le[9]=De=>k.value=!1)},{default:D(()=>[Z(c(e(t)("members.list.mergeModal.cancel")),1)]),_:1},8,["disabled"]),f(Y,{color:"primary",loading:C.value,onClick:ce},{default:D(()=>[Z(c(e(t)("members.list.mergeModal.confirm")),1)]),_:1},8,["loading"])])])]),_:1},8,["open"])],2)}}}),a_=gt(ix,[["__scopeId","data-v-0754d30f"]]),rx={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"},ux={key:0,class:"max-w-full overflow-x-auto scrollbar-hide"},s_=ne({__name:"SessionAnalysisHeader",props:Wt({title:{},avatar:{},icon:{},iconClass:{},tabs:{},currentSessionId:{},initialTimeState:{},showSessionActions:{type:Boolean,default:!0}},{activeTab:{required:!0},activeTabModifiers:{},timeRangeValue:{required:!0},timeRangeValueModifiers:{}}),emits:Wt(["openIncrementalImport","openMemberManagement","openChatRecord","update:fullRange","update:availableYears","timeRangeInitialized"],["update:activeTab","update:timeRangeValue"]),setup(u,{emit:n}){const t=pa(u,"activeTab"),o=pa(u,"timeRangeValue"),s=u,i=n,{t:l}=Ce(),r=Dt(),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=Zt;return d(),B(An,{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(oe,{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(Yt,{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(Yt,{key:1,color:"gray"})):V("",!0)]),default:D(()=>[a("div",rx,[f(e(qn),{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",ux,[f(Cn,{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"])}}}),dx={class:"space-y-4 p-5"},cx={class:"flex items-center gap-2"},mx={class:"text-base font-semibold text-gray-900 dark:text-white"},px={key:0,class:"flex items-center gap-2 text-sm text-gray-400"},gx={class:"rounded-lg border border-gray-200 bg-gray-50 p-3 text-sm dark:border-gray-700 dark:bg-gray-800/50"},fx={class:"flex items-center justify-between"},vx={class:"text-gray-500"},hx={class:"font-medium text-gray-800 dark:text-gray-200"},yx={key:0,class:"mt-1 flex items-center justify-between"},xx={class:"text-gray-500"},bx={class:"text-gray-700 dark:text-gray-300"},_x={key:1,class:"mt-2"},kx={class:"flex items-center justify-between text-xs text-gray-500"},wx={class:"mt-1 h-1.5 w-full overflow-hidden rounded-full bg-gray-200 dark:bg-gray-700"},Cx={key:2,class:"mt-1 text-xs text-red-500"},$x={class:"text-sm text-gray-600 dark:text-gray-400"},Sx={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"},Ix={class:"flex justify-end gap-2"},Tx={class:"text-xs text-gray-400"},Mx={class:"flex flex-wrap justify-end gap-2"},Ee="settings.ai.semanticIndex",o_=ne({__name:"SemanticIndexSessionModal",props:{modelValue:{type:Boolean},sessionId:{},messageCount:{}},emits:["update:modelValue"],setup(u,{emit:n}){const t=u,o=n,{t:s}=Ce(),i=_n(),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&&(!kn($.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()}),Qe(v),($,g)=>{const b=Ie,F=Ne,E=Ge;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",dx,[a("div",cx,[f(b,{name:"i-heroicons-circle-stack",class:"h-5 w-5 text-blue-500"}),a("h3",mx,c(e(s)(`${Ee}.title`)),1)]),x.value?(d(),p("div",px,[f(b,{name:"i-heroicons-arrow-path",class:"h-4 w-4 animate-spin"}),Z(" "+c(e(s)("common.loading")),1)])):(d(),p(oe,{key:1},[a("div",gx,[a("div",fx,[a("span",vx,c(e(s)(`${Ee}.session.statusLabel`)),1),a("span",hx,c(S.value),1)]),r.value?.enabled&&r.value.indexStatus==="completed"?(d(),p("div",yx,[a("span",xx,c(e(s)(`${Ee}.session.coverageLabel`)),1),a("span",bx,c(I.value)+"%",1)])):V("",!0),y.value?(d(),p("div",_x,[a("div",kx,[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",wx,[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",Cx,c(r.value.error),1)):V("",!0)]),r.value?.enabled?(d(),p(oe,{key:1},[a("p",Tx,c(e(s)(`${Ee}.session.buildVsEnable`)),1),a("div",Mx,[y.value?(d(),p(oe,{key:0},[f(F,{variant:"soft",loading:h.value,onClick:g[2]||(g[2]=z=>C("pause"))},{default:D(()=>[Z(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(()=>[Z(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(()=>[Z(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(()=>[Z(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(()=>[Z(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(()=>[Z(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(()=>[Z(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(()=>[Z(c(e(s)(`${Ee}.action.remove`)),1)]),_:1},8,["disabled"])])],64)):(d(),p(oe,{key:0},[a("p",$x,c(e(s)(`${Ee}.session.enableHint`)),1),m.value?V("",!0):(d(),p("p",Sx,c(e(s)(`${Ee}.session.configFirst`)),1)),a("div",Ix,[f(F,{variant:"ghost",onClick:g[0]||(g[0]=z=>l.value=!1)},{default:D(()=>[Z(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(()=>[Z(c(e(s)(`${Ee}.session.enable`)),1)]),_:1},8,["loading","disabled"])])],64))],64))])]),_:1},8,["open"])}}}),Ax={class:"min-h-[200px]"},qx={key:0,class:"space-y-4"},zx={class:"text-sm text-gray-600 dark:text-gray-400"},Dx={class:"text-sm text-gray-600 dark:text-gray-400"},Lx={key:1,class:"flex flex-col items-center justify-center py-10"},Ex={class:"text-gray-600 dark:text-gray-400"},Vx={class:"mt-2 text-sm text-gray-500"},Fx={key:2,class:"space-y-6"},Rx={class:"rounded-lg bg-gray-50 p-4 dark:bg-gray-800"},Ox={class:"mb-2 text-sm font-medium text-gray-700 dark:text-gray-300"},Bx={class:"grid grid-cols-3 gap-4 text-center"},Px={class:"text-2xl font-bold text-gray-900 dark:text-white"},Nx={class:"text-xs text-gray-500"},jx={class:"text-2xl font-bold text-green-600 dark:text-green-400"},Ux={class:"text-xs text-gray-500"},Wx={class:"text-2xl font-bold text-gray-400"},Kx={class:"text-xs text-gray-500"},Hx={key:0,class:"text-center text-sm text-amber-600 dark:text-amber-400"},Yx={key:3,class:"flex flex-col items-center justify-center py-10"},Qx={class:"text-gray-600 dark:text-gray-400"},Gx={key:0,class:"mt-4 w-full max-w-xs"},Jx={key:4,class:"flex flex-col items-center justify-center py-10"},Xx={class:"text-lg font-medium text-gray-900 dark:text-white"},Zx={class:"mt-2 text-sm text-gray-600 dark:text-gray-400"},eb={key:5,class:"flex flex-col items-center justify-center py-10"},tb={class:"text-lg font-medium text-gray-900 dark:text-white"},ab={class:"mt-2 text-sm text-red-600 dark:text-red-400"},sb={class:"flex w-full justify-end gap-2"},n_=ne({__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 Pa().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 Pa().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=zn,z=Ie,T=Ko,M=Ne,L=Ge;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",Ax,[i.value==="select"?(d(),p("div",qx,[a("p",zx,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(Dn),{ref_key:"dropZoneRef",ref:r,accept:[".json",".jsonl",".txt"],class:"w-full",onFiles:w},{default:D(({isDragOver:N})=>[a("div",{class:J(["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",Dx,c(N?e(s)("home.import.dropHint"):e(s)("analysis.incremental.dropHint")),1)],2)]),_:1},512)])):i.value==="analyzing"?(d(),p("div",Lx,[f(z,{name:"i-heroicons-arrow-path",class:"mb-4 h-10 w-10 animate-spin text-pink-500"}),a("p",Ex,c(e(s)("analysis.incremental.analyzing")),1),a("p",Vx,c(l.value?.name),1)])):i.value==="preview"&&m.value?(d(),p("div",Fx,[a("div",Rx,[a("p",Ox,c(l.value?.name),1),a("div",Bx,[a("div",null,[a("p",Px,c(m.value.totalInFile.toLocaleString()),1),a("p",Nx,c(e(s)("analysis.incremental.totalInFile")),1)]),a("div",null,[a("p",jx,c(m.value.newMessageCount.toLocaleString()),1),a("p",Ux,c(e(s)("analysis.incremental.newMessages")),1)]),a("div",null,[a("p",Wx,c(m.value.duplicateCount.toLocaleString()),1),a("p",Kx,c(e(s)("analysis.incremental.duplicates")),1)])])]),m.value.newMessageCount===0?(d(),p("p",Hx,[f(z,{name:"i-heroicons-exclamation-triangle",class:"mr-1 inline-block h-4 w-4"}),Z(" "+c(e(s)("analysis.incremental.noNewMessages")),1)])):V("",!0)])):i.value==="importing"?(d(),p("div",Yx,[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.importing")),1),x.value?(d(),p("div",Gx,[f(T,{value:x.value.progress,size:"sm"},null,8,["value"])])):V("",!0)])):i.value==="done"&&S.value?(d(),p("div",Jx,[f(z,{name:"i-heroicons-check-circle",class:"mb-4 h-12 w-12 text-green-500"}),a("p",Xx,c(e(s)("analysis.incremental.success")),1),a("p",Zx,c(e(s)("analysis.incremental.successDetail",{count:S.value.newMessageCount})),1)])):i.value==="error"?(d(),p("div",eb,[f(z,{name:"i-heroicons-x-circle",class:"mb-4 h-12 w-12 text-red-500"}),a("p",tb,c(e(s)("analysis.incremental.failed")),1),a("p",ab,c(h.value),1)])):V("",!0)])]),footer:D(()=>[a("div",sb,[i.value==="select"?(d(),B(M,{key:0,color:"neutral",variant:"ghost",onClick:F[0]||(F[0]=N=>y.value=!1)},{default:D(()=>[Z(c(e(s)("common.cancel")),1)]),_:1})):i.value==="preview"?(d(),p(oe,{key:1},[f(M,{color:"neutral",variant:"ghost",onClick:$},{default:D(()=>[Z(c(e(s)("common.back")),1)]),_:1}),f(M,{color:"primary",disabled:!m.value||m.value.newMessageCount===0,onClick:k},{default:D(()=>[Z(c(e(s)("analysis.incremental.import",{count:m.value?.newMessageCount||0})),1)]),_:1},8,["disabled"])],64)):i.value==="done"||i.value==="error"?(d(),p(oe,{key:2},[i.value==="error"?(d(),B(M,{key:0,color:"neutral",variant:"ghost",onClick:$},{default:D(()=>[Z(c(e(s)("common.retry")),1)]),_:1})):V("",!0),f(M,{color:"primary",onClick:C},{default:D(()=>[Z(c(e(s)("common.done")),1)]),_:1})],64)):V("",!0)])]),_:1},8,["open","title"])}}}),ob={key:0,class:"fixed right-0 top-1/3"},nb={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"},lb=["onClick"],ib={class:"mb-2 flex items-center justify-between"},rb={class:"px-0.5 text-[9px] font-bold uppercase tracking-widest text-gray-400 dark:text-gray-500"},ub={class:"flex flex-col gap-1.5"},db=["onClick"],cb={class:"whitespace-nowrap"},l_=ne({__name:"ActionToolsPanel",emits:["openIncrementalImport","openSemanticIndex","openMemberManagement","openChatRecord","openMessageExport"],setup(u,{emit:n}){const{t}=Ce(),o=Dt(),{isToolsPanelMini:s,effectiveToolsPanelPosition:i,isToolsPanelOpen:l}=_t(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}),Le(()=>{document.addEventListener("mousedown",y)}),_a(()=>{document.removeEventListener("mousedown",y)}),(_,k)=>{const C=Ie,$=Zt;return!r.value&&e(s)?(d(),p("div",ob,[a("div",nb,[(d(),p(oe,null,he(I,g=>f($,{key:g.event,text:e(t)(g.labelKey),popper:{placement:"left"}},{default:D(()=>[a("button",{class:J(["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,lb)]),_: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:J(["fixed right-0 z-40",r.value?"top-14":"top-1/3"])},[a("div",{class:J(["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",ib,[a("span",rb,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",ub,[(d(!0),p(oe,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:J(["h-3.5 w-3.5 text-gray-400 transition-colors dark:text-gray-500",g.hoverColor])},null,8,["name","class"]),a("span",cb,c(e(t)(g.labelKey)),1)],8,db))),128))])],512)],2)],2))}}});export{Qb as C,Kb as I,Hb as M,oa as _,Wb as a,Ye as b,e_ as c,t_ as d,cg as e,Gb as f,Jb as g,Xb as h,Ub as i,s_ as j,Yb as k,l_ as l,o_ as m,n_ as n,a_ as o,Zb as u};
|