chatlab-cli 0.31.0 → 0.31.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chat-command-CHV7RLBH.mjs → chat-command-MOETAGU5.mjs} +8 -8
- package/dist/{chunk-DBBL74RK.mjs → chunk-2IXPWPLR.mjs} +164 -82
- package/dist/chunk-2IXPWPLR.mjs.map +1 -0
- package/dist/{chunk-YPQ72HMX.mjs → chunk-3VMKS7PU.mjs} +44 -5
- package/dist/chunk-3VMKS7PU.mjs.map +1 -0
- package/dist/{chunk-SNCXU2QL.mjs → chunk-7HBVGVOB.mjs} +2 -2
- package/dist/{chunk-UWWFOEGF.mjs → chunk-DQ45LDKZ.mjs} +19 -2
- package/dist/chunk-DQ45LDKZ.mjs.map +1 -0
- package/dist/{chunk-WQCY45U2.mjs → chunk-E6W2RURS.mjs} +3 -3
- package/dist/{chunk-T64GA5HP.mjs → chunk-KCPGEILH.mjs} +388 -185
- package/dist/chunk-KCPGEILH.mjs.map +1 -0
- package/dist/{chunk-RDCUGC24.mjs → chunk-LJXSUN25.mjs} +2 -2
- package/dist/{chunk-EXD2SXWL.mjs → chunk-N5AGDT7I.mjs} +40 -7
- package/dist/chunk-N5AGDT7I.mjs.map +1 -0
- package/dist/{chunk-JH5RAJT2.mjs → chunk-SZEBCNBB.mjs} +121 -56
- package/dist/chunk-SZEBCNBB.mjs.map +1 -0
- package/dist/{chunk-RD335EMA.mjs → chunk-VOVLPSG6.mjs} +29 -52
- package/dist/chunk-VOVLPSG6.mjs.map +1 -0
- package/dist/{chunk-DA5T64RY.mjs → chunk-ZVWUR7ET.mjs} +2 -2
- package/dist/cli.mjs +9 -7
- package/dist/contacts-worker.mjs +2 -2
- package/dist/global-insight-worker.mjs +1 -1
- package/dist/{http-3B5ARN7A.mjs → http-M6NHWJZD.mjs} +11 -11
- package/dist/{import-2DZGNSEX.mjs → import-SEYHFXS5.mjs} +9 -7
- package/dist/index.mjs +12 -12
- package/dist/{mcp-44I6FUUQ.mjs → mcp-MIPFYRLV.mjs} +8 -8
- package/dist/people-relationships-worker.mjs +2 -2
- package/dist/semantic-index-worker.mjs +1 -1
- package/dist/{src-R3QX6L3L.mjs → src-7OD6RD5V.mjs} +18 -6
- package/dist/{stream-import-VUEL2TTU.mjs → stream-import-AWEHGQJY.mjs} +9 -7
- package/dist/{worker-runtime-GJAOIIZW.mjs → worker-runtime-TGYMASIE.mjs} +5 -5
- package/dist-web/assets/{ActionToolsPanel.vue_vue_type_script_setup_true_lang-CdJT0t2f.js → ActionToolsPanel.vue_vue_type_script_setup_true_lang-CkDGVRXe.js} +4 -4
- package/dist-web/assets/{BufferResource-BPGkshPa.js → BufferResource-CHI62pIA.js} +1 -1
- package/dist-web/assets/{CanvasRenderer-DTKkZhq4.js → CanvasRenderer-OZRoiF0j.js} +1 -1
- package/dist-web/assets/{Filter-CHXKzS2l.js → Filter-DNb5VErW.js} +1 -1
- package/dist-web/assets/{MessageExportModal-h-zl0dx1.js → MessageExportModal-CqP-w7HP.js} +1 -1
- package/dist-web/assets/{PageHeader-CK0hTsdx.js → PageHeader-Ck8ULyZH.js} +1 -1
- package/dist-web/assets/{RelationshipGalaxyCanvas-Dwdy5flh.js → RelationshipGalaxyCanvas-ioRNObb5.js} +3 -3
- package/dist-web/assets/{RelationshipGalaxyThreeCanvas-CtY4TGen.js → RelationshipGalaxyThreeCanvas-L1Y43p1A.js} +1 -1
- package/dist-web/assets/{RenderTargetSystem-BE56mKRG.js → RenderTargetSystem-fJ7D7Chv.js} +1 -1
- package/dist-web/assets/{TimeSelect.vue_vue_type_script_setup_true_lang-27hMyAUE.js → TimeSelect.vue_vue_type_script_setup_true_lang-7SEaCxDL.js} +1 -1
- package/dist-web/assets/{WebGLRenderer-Dm18dxOf.js → WebGLRenderer-BD3ZUtxH.js} +1 -1
- package/dist-web/assets/{WebGPURenderer-BF6TF-is.js → WebGPURenderer-DZXYsT6D.js} +1 -1
- package/dist-web/assets/{base-CFPyD9Gy.js → base-DTElkJcC.js} +1 -1
- package/dist-web/assets/{browserAll-Cn_CfkXl.js → browserAll-ChT6N6a9.js} +1 -1
- package/dist-web/assets/{dateFormat-BcqNKTQ1.js → dateFormat-D9WibwOu.js} +1 -1
- package/dist-web/assets/{electron-B6xOabTq.js → electron-CIzyGxH_.js} +1 -1
- package/dist-web/assets/{fetch-C_EfVFJi.js → fetch-Avtnh8cJ.js} +1 -1
- package/dist-web/assets/{fetch-DL_u25Ui.js → fetch-BFnrBahy.js} +1 -1
- package/dist-web/assets/fetch-C9rx2isC.js +31 -0
- package/dist-web/assets/{fetch-BPkgnY0R.js → fetch-Ccq_0ecb.js} +1 -1
- package/dist-web/assets/{fetch-DMLq3xPG.js → fetch-CuiQUcO_.js} +1 -1
- package/dist-web/assets/{fetch-BRXmDI_2.js → fetch-CyKILLnB.js} +1 -1
- package/dist-web/assets/fetch-Dd6t3p1r.js +6 -0
- package/dist-web/assets/{fetch-DylpNKCR.js → fetch-DnGx-1_t.js} +1 -1
- package/dist-web/assets/{fetch-CEhUu1Yu.js → fetch-qC7om4QG.js} +1 -1
- package/dist-web/assets/{fetch-etgwVKIw.js → fetch-wSSfDBdV.js} +1 -1
- package/dist-web/assets/index-BH9jI5kV.js +173 -0
- package/dist-web/assets/index-BWtNqcYK.js +22 -0
- package/dist-web/assets/{index-FoTy2Cce.js → index-Bkq7-GBp.js} +1 -1
- package/dist-web/assets/index-Bqr-LkS1.css +1 -0
- package/dist-web/assets/{index-aMIgqj43.js → index-C6qtsaP7.js} +1 -1
- package/dist-web/assets/{index-zZVsV5HB.js → index-ChFGuu70.js} +1 -1
- package/dist-web/assets/{index-C3TnydSt.js → index-CiS20iAR.js} +1 -1
- package/dist-web/assets/{index-BS6loLHW.js → index-CqD6u57u.js} +1 -1
- package/dist-web/assets/{index-CAWO10k1.js → index-CzDG8LVr.js} +2 -2
- package/dist-web/assets/{index-BrTlAl8b.js → index-D0Euk-vQ.js} +1 -1
- package/dist-web/assets/{index-B5S9FnfP.js → index-D26BWhHz.js} +1 -1
- package/dist-web/assets/{index-0x1QPzKZ.js → index-DXHYzIIj.js} +1 -1
- package/dist-web/assets/{index-Chm17wNe.js → index-Dq8u7gMb.js} +2 -2
- package/dist-web/assets/{index-Em6upenM.js → index-u_UH6rDY.js} +3 -3
- package/dist-web/assets/{web-BUZ-dZy0.js → web-BDBdpdK7.js} +1 -1
- package/dist-web/assets/{webworkerAll-BKGP--A4.js → webworkerAll-C3dAOQj4.js} +1 -1
- package/dist-web/index.html +2 -2
- package/package.json +1 -1
- package/dist/chunk-DBBL74RK.mjs.map +0 -1
- package/dist/chunk-EXD2SXWL.mjs.map +0 -1
- package/dist/chunk-JH5RAJT2.mjs.map +0 -1
- package/dist/chunk-RD335EMA.mjs.map +0 -1
- package/dist/chunk-T64GA5HP.mjs.map +0 -1
- package/dist/chunk-UWWFOEGF.mjs.map +0 -1
- package/dist/chunk-YPQ72HMX.mjs.map +0 -1
- package/dist-web/assets/fetch-BUm1isWe.js +0 -5
- package/dist-web/assets/fetch-CBOJwwJp.js +0 -17
- package/dist-web/assets/index-DAr_2DlV.js +0 -173
- package/dist-web/assets/index-YADL4XIp.js +0 -22
- package/dist-web/assets/index-_6lck7Bv.css +0 -1
- /package/dist/{chat-command-CHV7RLBH.mjs.map → chat-command-MOETAGU5.mjs.map} +0 -0
- /package/dist/{chunk-SNCXU2QL.mjs.map → chunk-7HBVGVOB.mjs.map} +0 -0
- /package/dist/{chunk-WQCY45U2.mjs.map → chunk-E6W2RURS.mjs.map} +0 -0
- /package/dist/{chunk-RDCUGC24.mjs.map → chunk-LJXSUN25.mjs.map} +0 -0
- /package/dist/{chunk-DA5T64RY.mjs.map → chunk-ZVWUR7ET.mjs.map} +0 -0
- /package/dist/{http-3B5ARN7A.mjs.map → http-M6NHWJZD.mjs.map} +0 -0
- /package/dist/{import-2DZGNSEX.mjs.map → import-SEYHFXS5.mjs.map} +0 -0
- /package/dist/{mcp-44I6FUUQ.mjs.map → mcp-MIPFYRLV.mjs.map} +0 -0
- /package/dist/{src-R3QX6L3L.mjs.map → src-7OD6RD5V.mjs.map} +0 -0
- /package/dist/{stream-import-VUEL2TTU.mjs.map → stream-import-AWEHGQJY.mjs.map} +0 -0
- /package/dist/{worker-runtime-GJAOIIZW.mjs.map → worker-runtime-TGYMASIE.mjs.map} +0 -0
|
@@ -5,13 +5,14 @@ const require = __createRequire(import.meta.url);
|
|
|
5
5
|
const __filename = __fileURLToPath(import.meta.url);
|
|
6
6
|
const __dirname = __pathDirname(__filename);
|
|
7
7
|
import {
|
|
8
|
+
analyzeAutoImport,
|
|
8
9
|
analyzeIncrementalImport,
|
|
9
10
|
analyzeNewImport,
|
|
10
11
|
autoImport,
|
|
11
12
|
incrementalImport,
|
|
12
13
|
streamImport
|
|
13
|
-
} from "./chunk-
|
|
14
|
-
import "./chunk-
|
|
14
|
+
} from "./chunk-N5AGDT7I.mjs";
|
|
15
|
+
import "./chunk-E6W2RURS.mjs";
|
|
15
16
|
import {
|
|
16
17
|
detectAllFormats,
|
|
17
18
|
detectFormat,
|
|
@@ -19,13 +20,14 @@ import {
|
|
|
19
20
|
getFormatFeatureById,
|
|
20
21
|
getSupportedFormats,
|
|
21
22
|
scanMultiChatFile
|
|
22
|
-
} from "./chunk-
|
|
23
|
-
import "./chunk-
|
|
24
|
-
import "./chunk-
|
|
23
|
+
} from "./chunk-KCPGEILH.mjs";
|
|
24
|
+
import "./chunk-7HBVGVOB.mjs";
|
|
25
|
+
import "./chunk-LJXSUN25.mjs";
|
|
25
26
|
import "./chunk-YAQLYL52.mjs";
|
|
26
|
-
import "./chunk-
|
|
27
|
+
import "./chunk-DQ45LDKZ.mjs";
|
|
27
28
|
import "./chunk-GFHSSCCR.mjs";
|
|
28
29
|
export {
|
|
30
|
+
analyzeAutoImport,
|
|
29
31
|
analyzeIncrementalImport,
|
|
30
32
|
analyzeNewImport,
|
|
31
33
|
autoImport,
|
|
@@ -38,4 +40,4 @@ export {
|
|
|
38
40
|
scanMultiChatFile,
|
|
39
41
|
streamImport
|
|
40
42
|
};
|
|
41
|
-
//# sourceMappingURL=stream-import-
|
|
43
|
+
//# sourceMappingURL=stream-import-AWEHGQJY.mjs.map
|
|
@@ -6,16 +6,16 @@ const __filename = __fileURLToPath(import.meta.url);
|
|
|
6
6
|
const __dirname = __pathDirname(__filename);
|
|
7
7
|
import {
|
|
8
8
|
createSemanticIndexService
|
|
9
|
-
} from "./chunk-
|
|
10
|
-
import "./chunk-
|
|
11
|
-
import "./chunk-
|
|
9
|
+
} from "./chunk-KCPGEILH.mjs";
|
|
10
|
+
import "./chunk-7HBVGVOB.mjs";
|
|
11
|
+
import "./chunk-LJXSUN25.mjs";
|
|
12
12
|
import "./chunk-YAQLYL52.mjs";
|
|
13
13
|
import {
|
|
14
14
|
DatabaseManager,
|
|
15
15
|
StaticPathProvider,
|
|
16
16
|
createDatabaseManagerAdapter,
|
|
17
17
|
initAppLogger
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-DQ45LDKZ.mjs";
|
|
19
19
|
import "./chunk-GFHSSCCR.mjs";
|
|
20
20
|
|
|
21
21
|
// ../../packages/node-runtime/src/semantic-index/worker-runtime.ts
|
|
@@ -77,4 +77,4 @@ export {
|
|
|
77
77
|
createSemanticIndexWorkerRuntime,
|
|
78
78
|
createSemanticIndexWorkerServiceFactory
|
|
79
79
|
};
|
|
80
|
-
//# sourceMappingURL=worker-runtime-
|
|
80
|
+
//# sourceMappingURL=worker-runtime-TGYMASIE.mjs.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-
|
|
2
|
-
import{
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-BWtNqcYK.js","assets/vendor-reka-ui-Cta6JPvN.js","assets/vendor-nuxt-ui-CS1uxE9C.js","assets/vendor-snapdom-XnBoh1gd.js","assets/index-Bqr-LkS1.css","assets/EChartWordcloud-DU3ZYdgz.js","assets/vendor-echarts-wordcloud-Ca8n6qS6.js","assets/vendor-echarts-B-i_56Av.js","assets/vendor-zrender-5DcYjSZk.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{S as La,U as ta,d as Me,k as Ne,u as fe,q as Fe,m as lt,n as Je,r as ct,V as Da,W as dt,s as et,X as xt,Y as Aa,E as aa,Z as gt,y as Nt,$ as Ot,a0 as sa,x as bt,a1 as ht,a2 as qa,T as st,g as Jt,b as za,w as oa,M as at,o as Ra,z as Pa,l as Ea,a3 as Ba,a4 as ja,D as Xt}from"./index-BWtNqcYK.js";import{t as Ke,w as ge,h as b,b as f,d as je,p as pe,G as n,P as i,L as p,H as Y,K as j,O as We,a5 as e,Q as ne,T as o,U as R,a0 as Qe,R as ee,Z,u as a,a3 as ce,bx as Ve,by as ot,a9 as Be,bz as Ge,J as zt,W as Rt,bF as Ua,bC as nt,n as Ue,bw as rt,z as kt,F as ut,bA as na,k as Fa}from"./vendor-reka-ui-Cta6JPvN.js";import{_ as _t}from"./vendor-snapdom-XnBoh1gd.js";import{_ as we,d as ze,m as ra,g as He,i as pt,b as wt,p as Va,c as la,f as Wt,q as ia,o as Ht,n as Na,r as Yt,e as Oa,l as Wa}from"./vendor-nuxt-ui-CS1uxE9C.js";import{_ as mt}from"./LoadingState.vue_vue_type_script_setup_true_lang-DACMroOe.js";import{_ as tt}from"./ThemeCard.vue_vue_type_script_setup_true_lang-BoZyssJF.js";import{a as it,M as Kt,_ as Ha}from"./index-CiS20iAR.js";import{C as Ya,a as $t,_ as Ze,g as Pt}from"./base-DTElkJcC.js";import"./vendor-echarts-wordcloud-Ca8n6qS6.js";import{f as Ka}from"./dateFormat-D9WibwOu.js";import{u as Ct,p as ca,z as da,j as Qt,v as ua,i as St,k as Tt,A as Qa,m as Ga,n as Ja,t as Xa}from"./vendor-echarts-B-i_56Av.js";import{_ as Za}from"./TimeSelect.vue_vue_type_script_setup_true_lang-7SEaCxDL.js";import{P as es}from"./PageHeader-Ck8ULyZH.js";const ts={none:[],qwen:["default","off","high"],deepseek_v4:["default","off","high","xhigh"],deepseek_hybrid:["default","off","auto"],o_series:["default","low","medium","high"],gpt5:["default","minimal","low","medium","high"],gpt5_1:["default","off","low","medium","high"],gpt5_2plus:["default","off","minimal","low","medium","high","xhigh"],grok:["default","low","high"],kimi:["default","off","auto","low","medium","high"],doubao:["default","off","auto","high"],hunyuan:["default","off","high"],gemini:["default","off","low","medium","high"],default:["default","off","low","medium","high"]},Zt=/^(?!.*-non-reasoning\b)(o\d+(?:-[\w-]+)?|.*\b(?:reasoning|reasoner|thinking|think)\b.*|.*-[rR]\d+.*|.*\bqwq(?:-[\w-]+)?\b.*|.*\bhunyuan-t1(?:-[\w-]+)?\b.*|.*\bgrok-(?:3-mini|4|4-fast|build)(?:-[\w-]+)?\b.*)$/i;function as(l,s){const t=s.toLowerCase(),c=l.toLowerCase();if(t.includes("-non-reasoning")||c==="anthropic")return"none";if(c==="gemini")return/gemini-(?:2\.5|3(?:\.\d+)?-(?:flash|pro)|flash-latest|pro-latest)/i.test(t)?"gemini":"none";if(c==="qwen"||/\bqwen|qwq/i.test(t))return"qwen";if(/deepseek[_-]v([4-9]|\d{2,})/i.test(t)||/deepseek-ai\/deepseek-r1/i.test(t))return"deepseek_v4";if(/deepseek[_-]chat|deepseek[_-]v3/i.test(t))return"deepseek_hybrid";if(c==="openai"||c==="openai-compatible"){if(/gpt-5\.[2-9]|gpt-5\.[1-9]\d/.test(t))return"gpt5_2plus";if(/gpt-5\.1/.test(t))return"gpt5_1";if(/gpt-5/.test(t))return"gpt5";if(/^o\d/.test(t))return"o_series"}return/^o\d/.test(t)?"o_series":/\bgrok-(?:3-mini|4|4-fast|build)\b/i.test(t)?"grok":/\bkimi-k(?:2-thinking|2\.[5-9]|[3-9])/i.test(t)||c==="kimi"&&/thinking/i.test(t)?"kimi":/\bdoubao-.*seed/i.test(t)||c==="doubao"&&/seed/i.test(t)?"doubao":/\bhunyuan-(?:t1|a13b)/i.test(t)?"hunyuan":c==="glm"||/\bglm-?(?:5|4\.[5-7]|z1|zero)/i.test(t)?"qwen":c==="siliconflow"&&/r[1-9]/i.test(t)?"deepseek_v4":c==="openrouter"?/deepseek.*(v[4-9]|r\d)/i.test(t)?"deepseek_v4":/deepseek[_-]?(chat|v3)/i.test(t)?"deepseek_hybrid":/\bgrok-(?:3-mini|4|4-fast|build)\b/i.test(t)?"grok":/\bkimi-k(?:2-thinking|2\.[5-9]|[3-9])/i.test(t)?"kimi":Zt.test(t)?"default":"none":/\bmimo-v2/i.test(t)||/\bminimax-m[123]/i.test(t)||/\bseed-oss/i.test(t)?"deepseek_hybrid":/\bbaichuan-m[23]/i.test(t)||/\bmagistral/i.test(t)||/\bmistral-small-2603/i.test(t)||/\bstep-(?:3|r1-v-mini)/i.test(t)||/\bgemma-?4/i.test(t)||/\bpangu-pro-moe/i.test(t)||/\bsonar-deep-research/i.test(t)||/\bring-(?:1t|mini|flash)/i.test(t)?"default":/\bqwen|qwq/i.test(t)?"qwen":/deepseek[_-]?r\d|deepseek[_-]?v[4-9]/i.test(t)?"deepseek_v4":/^o\d/i.test(t)?"o_series":Zt.test(t)?"default":"none"}function ss(l,s){const t=as(l,s);return ts[t]}function os(l,s,t,c="group",r="zh-CN"){const g=La(),{chatKey:u,state:d}=g.ensureSessionState({sessionId:l,sessionName:s,timeFilter:t,chatType:c,locale:r});return g.resetToSelectorOnEnter(u),g.applySessionAssistantSelection(u),{messages:Ke(d,"messages"),sourceMessages:Ke(d,"sourceMessages"),currentKeywords:Ke(d,"currentKeywords"),isLoadingSource:Ke(d,"isLoadingSource"),isAIThinking:Ke(d,"isAIThinking"),currentAIChatId:Ke(d,"currentAIChatId"),currentToolStatus:Ke(d,"currentToolStatus"),toolsUsedInCurrentRound:Ke(d,"toolsUsedInCurrentRound"),sessionTokenUsage:Ke(d,"sessionTokenUsage"),agentStatus:Ke(d,"agentStatus"),selectedAssistantId:Ke(d,"selectedAssistantId"),sendMessage:(m,v)=>g.sendMessage(u,m,v),editMessageAndRegenerate:(m,v,y)=>g.editMessageAndRegenerate(u,m,v,y),loadAIChat:m=>g.loadAIChat(u,m),startNewAIChat:m=>g.startNewAIChat(u,m),loadMoreSourceMessages:()=>g.loadMoreSourceMessages(),updateMaxMessages:()=>g.updateMaxMessages(),stopGeneration:()=>g.stopGeneration(u),selectAssistantForSession:m=>g.selectAssistantForSession(u,m)}}const Lt=new Map;function ns(l,s,t){const{activeTab:c,isInitialLoad:r,currentSessionId:g,onTimeRangeChange:u}=t,d=f(null),m=f(null),v=f([]),y=b(()=>{const I=d.value;if(I)return{startTs:I.startTs,endTs:I.endTs}}),M=b(()=>{const I=d.value;return I?`${I.startTs}-${I.endTs}`:"init"}),$=b(()=>{const I=l.query,q=I.timeMode;return q?{mode:q,recentDays:I.timeDays?Number(I.timeDays):void 0,year:I.timeYear?Number(I.timeYear):void 0,quarterYear:I.timeYear?Number(I.timeYear):void 0,quarter:I.timeQuarter?Number(I.timeQuarter):void 0,customStart:I.timeStart||void 0,customEnd:I.timeEnd||void 0}:g.value&&Lt.has(g.value)?Lt.get(g.value):{mode:"recent",recentDays:365}});ge([c,d],([I,q])=>{if(r.value||!q)return;const _=q.state,L={tab:I,timeMode:_.mode,timeDays:void 0,timeYear:void 0,timeQuarter:void 0,timeStart:void 0,timeEnd:void 0};_.mode==="recent"&&(L.timeDays=_.recentDays),_.mode==="year"&&(L.timeYear=_.year),_.mode==="quarter"&&(L.timeYear=_.quarterYear,L.timeQuarter=_.quarter),_.mode==="custom"&&(L.timeStart=_.customStart,L.timeEnd=_.customEnd),s.replace({query:{...l.query,...L}})}),ge(d,I=>{!I||!g.value||(ta(),Lt.set(g.value,I.state),u?.())},{immediate:!0});function D(){d.value=null,m.value=null,v.value=[]}return{timeRangeValue:d,fullTimeRange:m,availableYears:v,timeFilter:y,timeFilterKey:M,initialTimeState:$,resetTimeRange:D}}function rs(l){return l===0?"bg-linear-to-r from-amber-400 to-orange-500 text-white":l===1?"bg-linear-to-r from-gray-300 to-gray-400 text-white":l===2?"bg-linear-to-r from-amber-600 to-amber-700 text-white":"bg-gray-100 text-gray-600 dark:bg-gray-800 dark:text-gray-400"}function Fb(l){const s=["from-amber-400 to-orange-500","from-gray-300 to-gray-400","from-amber-600 to-amber-700","from-pink-400 to-pink-600","from-pink-300 to-rose-500","from-cyan-400 to-blue-500","from-green-400 to-emerald-500","from-rose-400 to-pink-500"];return s[l%s.length]}function ls(l){return l.content.trim()?l.content:l.contentBlocks?.filter(t=>t.type==="text"&&!!t.text).map(t=>t.text).join("")??""}function Et(l){return l.flatMap(s=>{if(s.role!=="user"&&s.role!=="assistant")return[];const t=ls(s);return t.trim()?[{role:s.role,content:t,timestamp:s.timestamp}]:[]})}function is(l){return Et(l).length>0}function cs(l,s,t,c){const r=[];r.push(`# ${l}`),r.push(""),r.push(`> ${c.createdAt}: ${Me(t).format("YYYY-MM-DD HH:mm:ss")}`),r.push(""),r.push("---"),r.push("");for(const g of s){const u=Me(g.timestamp).format("YYYY-MM-DD HH:mm:ss"),d=g.role==="user"?c.user:c.assistant;r.push(`### ${d}`),r.push(`*${u}*`),r.push(""),r.push(g.content),r.push(""),r.push("---"),r.push("")}return r.join(`
|
|
3
3
|
`)}function ds(l,s,t,c){const r=[];r.push(`${l}`),r.push(`${c.createdAt}: ${Me(t).format("YYYY-MM-DD HH:mm:ss")}`),r.push(""),r.push("=".repeat(50)),r.push("");for(const g of s){const u=Me(g.timestamp).format("YYYY-MM-DD HH:mm:ss"),d=g.role==="user"?c.user:c.assistant;r.push(`[${d}] ${u}`),r.push(""),r.push(g.content),r.push(""),r.push("-".repeat(50)),r.push("")}return r.join(`
|
|
4
|
-
`)}function us(l){return l.replace(/[/\\?%*:|"<>]/g,"_")}async function ms(l,s,t,c,r){if(s.length===0)return{success:!1,error:"No messages to export"};let g,u;const d=Me(t).format("YYYYMMDD_HHmmss"),m=us(l);c==="markdown"?(g=cs(l,s,t,r),u=`${m}_${d}.md`):(g=ds(l,s,t,r),u=`${m}_${d}.txt`);const v=`data:text/plain;charset=utf-8,${encodeURIComponent(g)}`,{useCacheService:y}=await _t(async()=>{const{useCacheService:$}=await import("./index-
|
|
5
|
-
`)}function ps(l){const s=l.rows.map(t=>{const c={};return l.columns.forEach((r,g)=>{c[r]=t[g]}),c});return JSON.stringify(s,null,2)}async function vs(l,s){if(l.rows.length===0)return{success:!1,error:"No data to export"};const c=`sql_result_${Me().format("YYYYMMDD_HHmmss")}.${s}`;let r,g;s==="json"?(r=ps(l),g="application/json"):(r=gs(l),g="text/csv");const u=`data:${g};charset=utf-8,${encodeURIComponent(r)}`,{useCacheService:d}=await _t(async()=>{const{useCacheService:v}=await import("./index-YADL4XIp.js").then(y=>y.a5);return{useCacheService:v}},__vite__mapDeps([0,1,2,3,4]));return await d().saveToDownloads(c,u)}function Vb(l){const{route:s,router:t,currentSessionId:c,selectSession:r,defaultTab:g,validTabIds:u}=l,d=f(!0),m=f(!0),v=f(null),y=f([]),M=f([]),$=f([]),D=f([]);function I(){const A=s.query.tab;return A&&u.includes(A)?A:g}const q=f(I()),{timeRangeValue:_,fullTimeRange:L,availableYears:x,timeFilter:C,initialTimeState:h}=ns(s,t,{activeTab:q,isInitialLoad:m,currentSessionId:c,onTimeRangeChange:()=>P()});function k(){const A=s.params.id;A&&(r(A),c.value!==A&&t.replace("/"))}async function S(){if(c.value)try{const A=await Ne().getSession(c.value);v.value=A}catch(A){console.error("加载基础数据失败:",A)}}async function P(){if(c.value){d.value=!0;try{const A=C.value,w=Ne(),[T,H,le,W]=await Promise.all([w.getMemberActivity(c.value,A),w.getHourlyActivity(c.value,A),w.getDailyActivity(c.value,A),w.getMessageTypeDistribution(c.value,A)]);y.value=T,M.value=H,$.value=le,D.value=W}catch(A){console.error("加载分析数据失败:",A)}finally{d.value=!1}}}async function B(){c.value&&(m.value=!0,await S(),m.value=!1)}return ge(()=>s.params.id,()=>{q.value=I(),k()}),ge(()=>s.query.tab,()=>{q.value=I()}),ge(c,()=>{ta(),B()},{immediate:!0}),je(()=>{k()}),{activeTab:q,isLoading:d,isInitialLoad:m,session:v,memberActivity:y,hourlyActivity:M,dailyActivity:$,messageTypes:D,timeRangeValue:_,fullTimeRange:L,availableYears:x,timeFilter:C,initialTimeState:h,syncSession:k,loadData:B,loadAnalysisData:P}}const ys={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"},hs=pe({__name:"CardCaptureOverlay",setup(l){return(s,t)=>(n(),i("div",ys,[p(it,{type:"element","target-selector":"[data-capturable-card]",size:"xs"})]))}}),Mt=pe({__name:"ReportCard",setup(l){return(s,t)=>(n(),Y(tt,{"data-capturable-card":"",class:"group/card relative isolate flex flex-col"},{default:j(()=>[p(Ya),p(hs),We(s.$slots,"default")]),_:3}))}}),fs={class:"flex items-center justify-between"},xs={class:"font-semibold text-gray-900 dark:text-white whitespace-nowrap"},bs={key:0,class:"mt-1 text-sm text-gray-500 dark:text-gray-400"},ks={class:"flex items-center gap-2"},_s={key:0,class:"pointer-events-none opacity-0 transition-opacity duration-200 group-hover/card:pointer-events-auto group-hover/card:opacity-100"},Oe=pe({__name:"SectionCard",props:{title:{},description:{},capturable:{type:Boolean,default:!0},showDivider:{type:Boolean,default:!0},scrollable:{type:Boolean,default:!1},maxHeightVh:{default:60}},setup(l){const s=l,t=b(()=>{if(s.scrollable)return{maxHeight:`${s.maxHeightVh}vh`,overflowY:"auto"}});return(c,r)=>(n(),Y(tt,{class:"group/card","data-section-card":""},{default:j(()=>[e("div",{class:ne(["px-5 py-3",{"border-b border-gray-200 dark:border-white/5":l.showDivider&&c.$slots.default}])},[e("div",fs,[e("div",null,[e("p",xs,o(l.title),1),l.description?(n(),i("p",bs,o(l.description),1)):R("",!0)]),e("div",ks,[We(c.$slots,"headerRight"),l.capturable?(n(),i("div",_s,[p(it,{type:"element","target-selector":"[data-section-card]",size:"xs"})])):R("",!0)])])],2),l.scrollable?(n(),i("div",{key:0,style:Qe(t.value)},[We(c.$slots,"default")],4)):We(c.$slots,"default",{key:1}),We(c.$slots,"footer")]),_:3}))}}),ws={class:"flex items-start justify-between"},$s={class:"min-w-0 flex-1"},Cs={class:"text-sm font-medium text-gray-500 dark:text-gray-400"},Ss={key:1,class:"text-xl"},Ts={key:0,class:"mt-4 flex items-center text-sm"},Ms={class:"text-gray-500 dark:text-gray-400"},Xe=pe({__name:"StatCard",props:{label:{},value:{},valueColor:{},subtext:{},icon:{},iconBg:{}},setup(l){const s={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(c,r)=>{const g=we;return n(),Y(tt,{class:"p-5"},{default:j(()=>[e("div",ws,[e("div",$s,[e("p",Cs,o(l.label),1),e("p",{class:ne(["mt-2 truncate text-2xl font-bold tracking-tight",l.valueColor?s[l.valueColor]:"text-gray-900 dark:text-white"])},o(l.value),3)]),l.icon?(n(),i("div",{key:0,class:ne(["ml-4 flex h-10 w-10 shrink-0 items-center justify-center rounded-xl",t[l.iconBg||"gray"]])},[l.icon.startsWith("i-")?(n(),Y(g,{key:0,name:l.icon,class:"h-5 w-5"},null,8,["name"])):(n(),i("span",Ss,o(l.icon),1))],2)):R("",!0)]),l.subtext||c.$slots.subtext?(n(),i("div",Ts,[We(c.$slots,"subtext",{},()=>[e("span",Ms,o(l.subtext),1)])])):R("",!0)]),_:3})}}}),Is={key:0,class:"mb-2 block text-2xl"},Nb=pe({__name:"EmptyState",props:{text:{},icon:{},padding:{}},setup(l){const s={sm:"px-4 py-4",md:"px-5 py-8",lg:"px-6 py-12"};return(t,c)=>(n(),i("div",{class:ne(["text-center text-sm text-gray-400",s[l.padding||"md"]])},[l.icon?(n(),i("span",Is,o(l.icon),1)):R("",!0),ee(" "+o(l.text||"暂无数据"),1)],2))}}),Ls=["disabled"],Ds={key:0,class:"flex-1 overflow-y-auto p-2"},As={key:0,class:"flex items-center justify-center py-8"},qs={key:1,class:"flex flex-col items-center justify-center py-12 text-center"},zs={class:"flex h-12 w-12 items-center justify-center rounded-full bg-gray-50 dark:bg-gray-800"},Rs={class:"mt-3 text-xs text-gray-400"},Ps={key:2,class:"space-y-3"},Es={class:"px-2 pb-1 pt-1.5 text-[10px] font-medium tracking-wide text-gray-400 dark:text-gray-500"},Bs={class:"space-y-0.5"},js=["onClick"],Us=["placeholder","onBlur","onKeyup"],Fs={key:1,class:"flex items-center"},Vs={class:"line-clamp-1 min-w-0 flex-1 text-sm leading-snug"},Ns={class:"rounded p-0.5 text-gray-400 transition-colors hover:bg-gray-200 hover:text-gray-600 dark:hover:bg-gray-700 dark:hover:text-gray-300"},Os={class:"w-28 p-1"},Ws=["disabled","onClick"],Hs=["onClick"],Ys=["disabled","onClick"],Ks={key:1,class:"flex flex-1 flex-col items-center gap-1 overflow-y-auto px-2 pb-2"},Qs=["title","disabled"],Gs=["title","onClick"],Js={key:0,class:"absolute -left-2 top-1/2 h-4.5 w-[3px] -translate-y-1/2 rounded-r-full bg-primary-500"},Xs=pe({__name:"ConversationList",props:{sessionId:{},activeId:{},disabled:{type:Boolean}},emits:["select","create","delete"],setup(l,{expose:s,emit:t}){const{t:c}=fe(),r=l,g=t,u=f([]),d=f(!1),m=f(null),v=f(""),y=f(!1),M=f(null);async function $(){d.value=!0;try{u.value=await Fe().getAIChats(r.sessionId)}catch(k){console.error("加载对话列表失败:",k)}finally{d.value=!1}}const D=b(()=>{if(u.value.length===0)return[];const k=Me(),S=k.subtract(7,"day").startOf("day"),P=k.subtract(30,"day").startOf("day"),B=[],A=[],w=new Map;for(const le of u.value){const W=Me(le.updatedAt*1e3);if(W.isAfter(S))B.push(le);else if(W.isAfter(P))A.push(le);else{const ue=W.format("YYYY-MM");w.has(ue)||w.set(ue,[]),w.get(ue).push(le)}}const T=[];B.length>0&&T.push({label:c("ai.chat.conversation.group.last7Days"),conversations:B}),A.length>0&&T.push({label:c("ai.chat.conversation.group.last30Days"),conversations:A});const H=[...w.keys()].sort((le,W)=>W.localeCompare(le));for(const le of H){const W=Me(le+"-01");T.push({label:W.format(W.year()===k.year()?"M月":"YYYY年M月"),conversations:w.get(le)})}return T});function I(k){return k.title||c("ai.chat.conversation.newChat")}function q(k){r.disabled||(m.value=k.id,v.value=k.title||"")}async function _(k){if(!r.disabled){if(v.value.trim())try{await Fe().updateAIChatTitle(k,v.value.trim());const S=u.value.find(P=>P.id===k);S&&(S.title=v.value.trim())}catch(S){console.error("更新标题失败:",S)}m.value=null}}function L(k){M.value=null,q(k)}function x(k){M.value=null,navigator.clipboard.writeText(k)}function C(k){M.value=null,h(k)}async function h(k){if(!r.disabled)try{await Fe().deleteAIChat(k),u.value=u.value.filter(S=>S.id!==k),g("delete",k)}catch(S){console.error("删除对话失败:",S)}}return je(()=>{$()}),ge(()=>r.sessionId,()=>{$()}),s({refresh:$}),(k,S)=>{const P=we,B=ze,A=ra;return n(),i("div",{class:ne(["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",y.value?"w-14":"w-64"])},[e("div",{class:ne(["flex items-center",y.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"])},[y.value?(n(),i("button",{key:1,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:S[2]||(S[2]=w=>y.value=!y.value)},[p(P,{name:"i-lucide-panel-right-open",class:"size-4 scale-x-[-1]"})])):(n(),i(Z,{key:0},[e("button",{class:ne(["flex items-center gap-1.5 rounded-md px-2 py-1.5 text-xs font-medium text-gray-600 transition-colors hover:bg-gray-100 hover:text-gray-900 dark:text-gray-400 dark:hover:bg-gray-800 dark:hover:text-gray-200",{"cursor-not-allowed opacity-50":l.disabled}]),disabled:l.disabled,onClick:S[0]||(S[0]=w=>!l.disabled&&g("create"))},[p(P,{name:"i-heroicons-plus",class:"h-3.5 w-3.5"}),e("span",null,o(a(c)("ai.chat.conversation.newConversation")),1)],10,Ls),p(B,{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:S[1]||(S[1]=w=>y.value=!y.value)},{default:j(()=>[p(P,{name:"i-lucide-panel-right",class:"size-4 scale-x-[-1] group-hover:hidden"}),p(P,{name:"i-lucide-panel-right-close",class:"size-4 hidden scale-x-[-1] group-hover:block"})]),_:1})],64))],2),y.value?(n(),i("div",Ks,[e("button",{class:ne(["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",{"cursor-not-allowed opacity-50":l.disabled}]),title:a(c)("ai.chat.conversation.newConversation"),disabled:l.disabled,onClick:S[7]||(S[7]=w=>!l.disabled&&g("create"))},[p(P,{name:"i-heroicons-plus",class:"h-5 w-5"})],10,Qs),(n(!0),i(Z,null,ce(u.value,w=>(n(),i("button",{key:w.id,class:ne(["relative mx-auto flex h-10 w-10 items-center justify-center rounded-lg transition-all duration-200",[l.activeId===w.id?"bg-gray-200/50 text-primary-600 dark:bg-white/[0.07] dark:text-primary-400 dark:ring-1 dark:ring-white/10":"text-gray-600 hover:bg-gray-200/40 dark:text-gray-300 dark:hover:bg-white/[0.06]"]]),title:I(w),onClick:T=>g("select",w.id)},[l.activeId===w.id?(n(),i("span",Js)):R("",!0),p(P,{name:"i-heroicons-chat-bubble-left",class:"h-5 w-5"})],10,Gs))),128))])):(n(),i("div",Ds,[d.value?(n(),i("div",As,[p(P,{name:"i-heroicons-arrow-path",class:"h-5 w-5 animate-spin text-gray-400"})])):u.value.length===0?(n(),i("div",qs,[e("div",zs,[p(P,{name:"i-heroicons-chat-bubble-left",class:"h-6 w-6 text-gray-300 dark:text-gray-600"})]),e("p",Rs,o(a(c)("ai.chat.conversation.empty")),1),p(B,{class:"mt-2",size:"xs",variant:"link",color:"primary",disabled:l.disabled,onClick:S[3]||(S[3]=w=>!l.disabled&&g("create"))},{default:j(()=>[ee(o(a(c)("ai.chat.conversation.startNew")),1)]),_:1},8,["disabled"])])):(n(),i("div",Ps,[(n(!0),i(Z,null,ce(D.value,w=>(n(),i("div",{key:w.label},[e("div",Es,o(w.label),1),e("div",Bs,[(n(!0),i(Z,null,ce(w.conversations,T=>(n(),i("div",{key:T.id,class:ne(["group relative rounded-lg px-3 py-2 transition-all",["cursor-pointer",l.activeId===T.id?"bg-gray-100 text-gray-900 dark:bg-gray-800 dark:text-white":"text-gray-600 hover:bg-gray-50 dark:text-gray-400 dark:hover:bg-gray-800/50"]]),onClick:H=>g("select",T.id)},[m.value===T.id?Ve((n(),i("input",{key:0,"onUpdate:modelValue":S[4]||(S[4]=H=>v.value=H),class:"w-full rounded border-none bg-white px-2 py-1 text-sm shadow-sm outline-none ring-1 ring-gray-200 focus:ring-2 focus:ring-primary-500 dark:bg-page-dark dark:ring-gray-700",placeholder:a(c)("ai.chat.conversation.titlePlaceholder"),autoFocus:"",onBlur:H=>_(T.id),onKeyup:Ge(H=>_(T.id),["enter"]),onClick:S[5]||(S[5]=Be(()=>{},["stop"]))},null,40,Us)),[[ot,v.value]]):(n(),i("div",Fs,[e("p",Vs,o(I(T)),1),e("div",{class:ne(["ml-1 shrink-0 opacity-0 transition-opacity group-hover:opacity-100",{"opacity-100":l.activeId===T.id||M.value===T.id}]),onClick:S[6]||(S[6]=Be(()=>{},["stop"]))},[p(A,{open:M.value===T.id,ui:{content:"z-50 p-0"},"onUpdate:open":H=>M.value=H?T.id:null},{content:j(()=>[e("div",Os,[e("button",{class:"flex w-full items-center gap-2 rounded-md px-2 py-2 text-xs text-gray-600 transition-colors hover:bg-gray-100 dark:text-gray-400 dark:hover:bg-gray-800",disabled:l.disabled,onClick:H=>L(T)},[p(P,{name:"i-heroicons-pencil",class:"h-3.5 w-3.5"}),ee(" "+o(a(c)("ai.chat.conversation.rename")),1)],8,Ws),e("button",{class:"flex w-full items-center gap-2 rounded-md px-2 py-2 text-xs text-gray-600 transition-colors hover:bg-gray-100 dark:text-gray-400 dark:hover:bg-gray-800",onClick:H=>x(T.id)},[p(P,{name:"i-heroicons-clipboard-document",class:"h-3.5 w-3.5"}),ee(" "+o(a(c)("ai.chat.conversation.copyId")),1)],8,Hs),e("button",{class:"flex w-full items-center gap-2 rounded-md px-2 py-2 text-xs text-red-500 transition-colors hover:bg-red-50 dark:text-red-400 dark:hover:bg-red-950/30",disabled:l.disabled,onClick:H=>C(T.id)},[p(P,{name:"i-heroicons-trash",class:"h-3.5 w-3.5"}),ee(" "+o(a(c)("ai.chat.conversation.delete")),1)],8,Ys)])]),default:j(()=>[e("button",Ns,[p(P,{name:"i-heroicons-ellipsis-horizontal",class:"h-4 w-4"})])]),_:2},1032,["open","onUpdate:open"])],2)]))],10,js))),128))])]))),128))]))]))],2)}}}),Zs={class:"writing-vertical text-xs"},eo={class:"flex items-center justify-between border-b border-gray-200 px-4 py-3 dark:border-gray-800"},to={class:"flex items-center gap-2"},ao={class:"font-medium text-gray-900 dark:text-white"},so={key:0,class:"border-b border-gray-200 px-4 py-2 dark:border-gray-800"},oo={class:"flex flex-wrap items-center gap-2"},no={class:"text-xs text-gray-500"},ro={class:"flex-1 overflow-y-auto"},lo={key:0,class:"flex items-center justify-center py-8"},io={key:1,class:"flex flex-col items-center justify-center py-8 text-center"},co={class:"mt-2 text-sm text-gray-500"},uo={class:"text-xs text-gray-400"},mo={key:2,class:"divide-y divide-gray-100 dark:divide-gray-800"},go={class:"mb-1 flex items-center justify-between"},po={class:"text-sm font-medium text-gray-900 dark:text-white"},vo={class:"text-xs text-gray-400"},yo=["innerHTML"],ho={key:1,class:"border-t border-gray-200 px-4 py-2 dark:border-gray-800"},fo={class:"flex items-center justify-between"},xo={class:"text-xs text-gray-500"},bo={key:2,class:"pointer-events-none absolute inset-0 overflow-hidden rounded-xl opacity-[0.03]"},ko=pe({__name:"DataSourcePanel",props:{messages:{},keywords:{},isLoading:{type:Boolean},isCollapsed:{type:Boolean}},emits:["toggle","loadMore"],setup(l,{emit:s}){const{t}=fe(),c=l,r=s;function g(d){return Me(d).format("MM-DD HH:mm")}function u(d){if(!c.keywords.length)return d;const m=c.keywords.join("|"),v=new RegExp(`(${m})`,"gi");return d.replace(v,'<mark class="bg-yellow-200 dark:bg-yellow-800/50 px-0.5 rounded">$1</mark>')}return(d,m)=>{const v=we,y=ze;return n(),i("div",{class:ne(["relative flex flex-col rounded-xl bg-white transition-all duration-300 dark:bg-page-dark",[l.isCollapsed?"w-12":"w-full"]])},[l.isCollapsed?(n(),i("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]=M=>r("toggle"))},[p(v,{name:"i-heroicons-chevron-left",class:"h-5 w-5"}),e("span",Zs,o(a(t)("ai.chat.dataSource.title")),1)])):(n(),i(Z,{key:1},[e("div",eo,[e("div",to,[p(v,{name:"i-heroicons-document-magnifying-glass",class:"h-5 w-5 text-gray-500"}),e("span",ao,o(a(t)("ai.chat.dataSource.title")),1)]),p(y,{icon:"i-heroicons-chevron-right",color:"gray",variant:"ghost",size:"xs",onClick:m[1]||(m[1]=M=>r("toggle"))})]),l.keywords.length>0?(n(),i("div",so,[e("div",oo,[e("span",no,o(a(t)("ai.chat.dataSource.keywords")),1),(n(!0),i(Z,null,ce(l.keywords,M=>(n(),i("span",{key:M,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"},o(M),1))),128))])])):R("",!0),e("div",ro,[l.isLoading?(n(),i("div",lo,[p(v,{name:"i-heroicons-arrow-path",class:"h-6 w-6 animate-spin text-gray-400"})])):l.messages.length===0?(n(),i("div",io,[p(v,{name:"i-heroicons-inbox",class:"h-10 w-10 text-gray-300 dark:text-gray-600"}),e("p",co,o(a(t)("ai.chat.dataSource.empty")),1),e("p",uo,o(a(t)("ai.chat.dataSource.emptyHint")),1)])):(n(),i("div",mo,[(n(!0),i(Z,null,ce(l.messages,M=>(n(),i("div",{key:M.id,class:"px-4 py-3 transition-colors hover:bg-gray-50 dark:hover:bg-gray-800/50"},[e("div",go,[e("span",po,o(M.senderName),1),e("span",vo,o(g(M.timestamp)),1)]),e("p",{class:"line-clamp-3 text-sm text-gray-600 dark:text-gray-400",innerHTML:u(M.content)},null,8,yo)]))),128))]))]),l.messages.length>0?(n(),i("div",ho,[e("div",fo,[e("span",xo,o(a(t)("ai.chat.dataSource.totalRecords",{count:l.messages.length})),1),p(y,{size:"xs",variant:"ghost",onClick:m[2]||(m[2]=M=>r("loadMore"))},{default:j(()=>[ee(o(a(t)("ai.chat.dataSource.loadMore")),1)]),_:1})])])):R("",!0)],64)),l.isCollapsed?R("",!0):(n(),i("div",bo,[...m[3]||(m[3]=[e("div",{class:"data-flow-bg absolute inset-0"},null,-1)])]))],2)}}}),_o=lt(ko,[["__scopeId","data-v-a9962add"]]),wo={class:"flex max-h-[80vh] flex-col overflow-hidden"},$o={class:"shrink-0 border-b border-gray-200 px-6 py-4 dark:border-gray-800"},Co={class:"flex items-center justify-between"},So={class:"flex items-center gap-3"},To={class:"flex h-8 w-8 items-center justify-center rounded-lg bg-red-100 dark:bg-red-900/40"},Mo={class:"text-lg font-semibold text-gray-900 dark:text-white"},Io={class:"flex-1 overflow-y-auto px-6 py-4"},Lo={class:"flex flex-col gap-4"},Do={class:"text-sm font-semibold text-gray-700 dark:text-gray-300"},Ao={key:0,class:"rounded-md border border-red-200 bg-red-50/50 p-3 dark:border-red-900/40 dark:bg-red-950/20"},qo={class:"m-0 whitespace-pre-wrap break-words font-mono text-xs leading-relaxed text-red-600 dark:text-red-400"},zo={key:1,class:"rounded-md border border-gray-200 bg-gray-50 p-3 dark:border-gray-700 dark:bg-page-dark"},Ro={class:"m-0 max-h-[300px] overflow-auto whitespace-pre-wrap break-words font-mono text-xs leading-relaxed text-gray-700 dark:text-gray-300"},Po={key:2,class:"select-text break-words rounded-md border border-gray-200 bg-gray-50 px-3 py-2 font-mono text-xs text-gray-700 dark:border-gray-700 dark:bg-page-dark dark:text-gray-300"},Eo={key:0,class:"py-8 text-center text-sm text-gray-400 dark:text-gray-500"},Bo={class:"shrink-0 border-t border-gray-200 px-6 py-3 dark:border-gray-800"},jo={class:"flex justify-end"},Uo=pe({__name:"ErrorDetailModal",props:Rt({error:{}},{open:{type:Boolean,required:!0},openModifiers:{}}),emits:["update:open"],setup(l){const{t:s}=fe(),t=Je(),c=zt(l,"open"),r=l,g=b(()=>{const m=r.error,v=[];return m.url&&v.push({label:s("ai.chat.error.requestUrl"),value:m.url}),m.statusCode!=null&&v.push({label:s("ai.chat.error.statusCode"),value:String(m.statusCode)}),m.responseBody&&v.push({label:s("ai.chat.error.responseBody"),value:u(m.responseBody),isCode:!0}),m.responseHeaders&&v.push({label:s("ai.chat.error.responseHeaders"),value:JSON.stringify(m.responseHeaders,null,2),isCode:!0}),m.name&&v.push({label:s("ai.chat.error.name"),value:m.name}),m.message&&v.push({label:s("ai.chat.error.message"),value:m.message}),m.stack&&v.push({label:s("ai.chat.error.stack"),value:m.stack,isStack:!0}),m.cause&&v.push({label:s("ai.chat.error.cause"),value:u(m.cause),isCode:!0}),m.provider&&v.push({label:s("ai.chat.error.provider"),value:m.provider}),m.requestBody&&v.push({label:s("ai.chat.error.requestBody"),value:u(m.requestBody),isCode:!0}),v});function u(m){try{return JSON.stringify(JSON.parse(m),null,2)}catch{return m}}function d(){const m=g.value.map(v=>`${v.label}: ${v.value}`).join(`
|
|
4
|
+
`)}function us(l){return l.replace(/[/\\?%*:|"<>]/g,"_")}async function ms(l,s,t,c,r){if(s.length===0)return{success:!1,error:"No messages to export"};let g,u;const d=Me(t).format("YYYYMMDD_HHmmss"),m=us(l);c==="markdown"?(g=cs(l,s,t,r),u=`${m}_${d}.md`):(g=ds(l,s,t,r),u=`${m}_${d}.txt`);const v=`data:text/plain;charset=utf-8,${encodeURIComponent(g)}`,{useCacheService:y}=await _t(async()=>{const{useCacheService:$}=await import("./index-BWtNqcYK.js").then(D=>D.a6);return{useCacheService:$}},__vite__mapDeps([0,1,2,3,4]));return await y().saveToDownloads(u,v)}function gs(l){const s=l.columns.join(","),t=l.rows.map(c=>c.map(r=>r===null?"":`"${String(r).replace(/"/g,'""')}"`).join(","));return[s,...t].join(`
|
|
5
|
+
`)}function ps(l){const s=l.rows.map(t=>{const c={};return l.columns.forEach((r,g)=>{c[r]=t[g]}),c});return JSON.stringify(s,null,2)}async function vs(l,s){if(l.rows.length===0)return{success:!1,error:"No data to export"};const c=`sql_result_${Me().format("YYYYMMDD_HHmmss")}.${s}`;let r,g;s==="json"?(r=ps(l),g="application/json"):(r=gs(l),g="text/csv");const u=`data:${g};charset=utf-8,${encodeURIComponent(r)}`,{useCacheService:d}=await _t(async()=>{const{useCacheService:v}=await import("./index-BWtNqcYK.js").then(y=>y.a6);return{useCacheService:v}},__vite__mapDeps([0,1,2,3,4]));return await d().saveToDownloads(c,u)}function Vb(l){const{route:s,router:t,currentSessionId:c,selectSession:r,defaultTab:g,validTabIds:u}=l,d=f(!0),m=f(!0),v=f(null),y=f([]),M=f([]),$=f([]),D=f([]);function I(){const A=s.query.tab;return A&&u.includes(A)?A:g}const q=f(I()),{timeRangeValue:_,fullTimeRange:L,availableYears:x,timeFilter:C,initialTimeState:h}=ns(s,t,{activeTab:q,isInitialLoad:m,currentSessionId:c,onTimeRangeChange:()=>P()});function k(){const A=s.params.id;A&&(r(A),c.value!==A&&t.replace("/"))}async function S(){if(c.value)try{const A=await Ne().getSession(c.value);v.value=A}catch(A){console.error("加载基础数据失败:",A)}}async function P(){if(c.value){d.value=!0;try{const A=C.value,w=Ne(),[T,H,le,W]=await Promise.all([w.getMemberActivity(c.value,A),w.getHourlyActivity(c.value,A),w.getDailyActivity(c.value,A),w.getMessageTypeDistribution(c.value,A)]);y.value=T,M.value=H,$.value=le,D.value=W}catch(A){console.error("加载分析数据失败:",A)}finally{d.value=!1}}}async function B(){c.value&&(m.value=!0,await S(),m.value=!1)}return ge(()=>s.params.id,()=>{q.value=I(),k()}),ge(()=>s.query.tab,()=>{q.value=I()}),ge(c,()=>{ta(),B()},{immediate:!0}),je(()=>{k()}),{activeTab:q,isLoading:d,isInitialLoad:m,session:v,memberActivity:y,hourlyActivity:M,dailyActivity:$,messageTypes:D,timeRangeValue:_,fullTimeRange:L,availableYears:x,timeFilter:C,initialTimeState:h,syncSession:k,loadData:B,loadAnalysisData:P}}const ys={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"},hs=pe({__name:"CardCaptureOverlay",setup(l){return(s,t)=>(n(),i("div",ys,[p(it,{type:"element","target-selector":"[data-capturable-card]",size:"xs"})]))}}),Mt=pe({__name:"ReportCard",setup(l){return(s,t)=>(n(),Y(tt,{"data-capturable-card":"",class:"group/card relative isolate flex flex-col"},{default:j(()=>[p(Ya),p(hs),We(s.$slots,"default")]),_:3}))}}),fs={class:"flex items-center justify-between"},xs={class:"font-semibold text-gray-900 dark:text-white whitespace-nowrap"},bs={key:0,class:"mt-1 text-sm text-gray-500 dark:text-gray-400"},ks={class:"flex items-center gap-2"},_s={key:0,class:"pointer-events-none opacity-0 transition-opacity duration-200 group-hover/card:pointer-events-auto group-hover/card:opacity-100"},Oe=pe({__name:"SectionCard",props:{title:{},description:{},capturable:{type:Boolean,default:!0},showDivider:{type:Boolean,default:!0},scrollable:{type:Boolean,default:!1},maxHeightVh:{default:60}},setup(l){const s=l,t=b(()=>{if(s.scrollable)return{maxHeight:`${s.maxHeightVh}vh`,overflowY:"auto"}});return(c,r)=>(n(),Y(tt,{class:"group/card","data-section-card":""},{default:j(()=>[e("div",{class:ne(["px-5 py-3",{"border-b border-gray-200 dark:border-white/5":l.showDivider&&c.$slots.default}])},[e("div",fs,[e("div",null,[e("p",xs,o(l.title),1),l.description?(n(),i("p",bs,o(l.description),1)):R("",!0)]),e("div",ks,[We(c.$slots,"headerRight"),l.capturable?(n(),i("div",_s,[p(it,{type:"element","target-selector":"[data-section-card]",size:"xs"})])):R("",!0)])])],2),l.scrollable?(n(),i("div",{key:0,style:Qe(t.value)},[We(c.$slots,"default")],4)):We(c.$slots,"default",{key:1}),We(c.$slots,"footer")]),_:3}))}}),ws={class:"flex items-start justify-between"},$s={class:"min-w-0 flex-1"},Cs={class:"text-sm font-medium text-gray-500 dark:text-gray-400"},Ss={key:1,class:"text-xl"},Ts={key:0,class:"mt-4 flex items-center text-sm"},Ms={class:"text-gray-500 dark:text-gray-400"},Xe=pe({__name:"StatCard",props:{label:{},value:{},valueColor:{},subtext:{},icon:{},iconBg:{}},setup(l){const s={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(c,r)=>{const g=we;return n(),Y(tt,{class:"p-5"},{default:j(()=>[e("div",ws,[e("div",$s,[e("p",Cs,o(l.label),1),e("p",{class:ne(["mt-2 truncate text-2xl font-bold tracking-tight",l.valueColor?s[l.valueColor]:"text-gray-900 dark:text-white"])},o(l.value),3)]),l.icon?(n(),i("div",{key:0,class:ne(["ml-4 flex h-10 w-10 shrink-0 items-center justify-center rounded-xl",t[l.iconBg||"gray"]])},[l.icon.startsWith("i-")?(n(),Y(g,{key:0,name:l.icon,class:"h-5 w-5"},null,8,["name"])):(n(),i("span",Ss,o(l.icon),1))],2)):R("",!0)]),l.subtext||c.$slots.subtext?(n(),i("div",Ts,[We(c.$slots,"subtext",{},()=>[e("span",Ms,o(l.subtext),1)])])):R("",!0)]),_:3})}}}),Is={key:0,class:"mb-2 block text-2xl"},Nb=pe({__name:"EmptyState",props:{text:{},icon:{},padding:{}},setup(l){const s={sm:"px-4 py-4",md:"px-5 py-8",lg:"px-6 py-12"};return(t,c)=>(n(),i("div",{class:ne(["text-center text-sm text-gray-400",s[l.padding||"md"]])},[l.icon?(n(),i("span",Is,o(l.icon),1)):R("",!0),ee(" "+o(l.text||"暂无数据"),1)],2))}}),Ls=["disabled"],Ds={key:0,class:"flex-1 overflow-y-auto p-2"},As={key:0,class:"flex items-center justify-center py-8"},qs={key:1,class:"flex flex-col items-center justify-center py-12 text-center"},zs={class:"flex h-12 w-12 items-center justify-center rounded-full bg-gray-50 dark:bg-gray-800"},Rs={class:"mt-3 text-xs text-gray-400"},Ps={key:2,class:"space-y-3"},Es={class:"px-2 pb-1 pt-1.5 text-[10px] font-medium tracking-wide text-gray-400 dark:text-gray-500"},Bs={class:"space-y-0.5"},js=["onClick"],Us=["placeholder","onBlur","onKeyup"],Fs={key:1,class:"flex items-center"},Vs={class:"line-clamp-1 min-w-0 flex-1 text-sm leading-snug"},Ns={class:"rounded p-0.5 text-gray-400 transition-colors hover:bg-gray-200 hover:text-gray-600 dark:hover:bg-gray-700 dark:hover:text-gray-300"},Os={class:"w-28 p-1"},Ws=["disabled","onClick"],Hs=["onClick"],Ys=["disabled","onClick"],Ks={key:1,class:"flex flex-1 flex-col items-center gap-1 overflow-y-auto px-2 pb-2"},Qs=["title","disabled"],Gs=["title","onClick"],Js={key:0,class:"absolute -left-2 top-1/2 h-4.5 w-[3px] -translate-y-1/2 rounded-r-full bg-primary-500"},Xs=pe({__name:"ConversationList",props:{sessionId:{},activeId:{},disabled:{type:Boolean}},emits:["select","create","delete"],setup(l,{expose:s,emit:t}){const{t:c}=fe(),r=l,g=t,u=f([]),d=f(!1),m=f(null),v=f(""),y=f(!1),M=f(null);async function $(){d.value=!0;try{u.value=await Fe().getAIChats(r.sessionId)}catch(k){console.error("加载对话列表失败:",k)}finally{d.value=!1}}const D=b(()=>{if(u.value.length===0)return[];const k=Me(),S=k.subtract(7,"day").startOf("day"),P=k.subtract(30,"day").startOf("day"),B=[],A=[],w=new Map;for(const le of u.value){const W=Me(le.updatedAt*1e3);if(W.isAfter(S))B.push(le);else if(W.isAfter(P))A.push(le);else{const ue=W.format("YYYY-MM");w.has(ue)||w.set(ue,[]),w.get(ue).push(le)}}const T=[];B.length>0&&T.push({label:c("ai.chat.conversation.group.last7Days"),conversations:B}),A.length>0&&T.push({label:c("ai.chat.conversation.group.last30Days"),conversations:A});const H=[...w.keys()].sort((le,W)=>W.localeCompare(le));for(const le of H){const W=Me(le+"-01");T.push({label:W.format(W.year()===k.year()?"M月":"YYYY年M月"),conversations:w.get(le)})}return T});function I(k){return k.title||c("ai.chat.conversation.newChat")}function q(k){r.disabled||(m.value=k.id,v.value=k.title||"")}async function _(k){if(!r.disabled){if(v.value.trim())try{await Fe().updateAIChatTitle(k,v.value.trim());const S=u.value.find(P=>P.id===k);S&&(S.title=v.value.trim())}catch(S){console.error("更新标题失败:",S)}m.value=null}}function L(k){M.value=null,q(k)}function x(k){M.value=null,navigator.clipboard.writeText(k)}function C(k){M.value=null,h(k)}async function h(k){if(!r.disabled)try{await Fe().deleteAIChat(k),u.value=u.value.filter(S=>S.id!==k),g("delete",k)}catch(S){console.error("删除对话失败:",S)}}return je(()=>{$()}),ge(()=>r.sessionId,()=>{$()}),s({refresh:$}),(k,S)=>{const P=we,B=ze,A=ra;return n(),i("div",{class:ne(["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",y.value?"w-14":"w-64"])},[e("div",{class:ne(["flex items-center",y.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"])},[y.value?(n(),i("button",{key:1,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:S[2]||(S[2]=w=>y.value=!y.value)},[p(P,{name:"i-lucide-panel-right-open",class:"size-4 scale-x-[-1]"})])):(n(),i(Z,{key:0},[e("button",{class:ne(["flex items-center gap-1.5 rounded-md px-2 py-1.5 text-xs font-medium text-gray-600 transition-colors hover:bg-gray-100 hover:text-gray-900 dark:text-gray-400 dark:hover:bg-gray-800 dark:hover:text-gray-200",{"cursor-not-allowed opacity-50":l.disabled}]),disabled:l.disabled,onClick:S[0]||(S[0]=w=>!l.disabled&&g("create"))},[p(P,{name:"i-heroicons-plus",class:"h-3.5 w-3.5"}),e("span",null,o(a(c)("ai.chat.conversation.newConversation")),1)],10,Ls),p(B,{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:S[1]||(S[1]=w=>y.value=!y.value)},{default:j(()=>[p(P,{name:"i-lucide-panel-right",class:"size-4 scale-x-[-1] group-hover:hidden"}),p(P,{name:"i-lucide-panel-right-close",class:"size-4 hidden scale-x-[-1] group-hover:block"})]),_:1})],64))],2),y.value?(n(),i("div",Ks,[e("button",{class:ne(["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",{"cursor-not-allowed opacity-50":l.disabled}]),title:a(c)("ai.chat.conversation.newConversation"),disabled:l.disabled,onClick:S[7]||(S[7]=w=>!l.disabled&&g("create"))},[p(P,{name:"i-heroicons-plus",class:"h-5 w-5"})],10,Qs),(n(!0),i(Z,null,ce(u.value,w=>(n(),i("button",{key:w.id,class:ne(["relative mx-auto flex h-10 w-10 items-center justify-center rounded-lg transition-all duration-200",[l.activeId===w.id?"bg-gray-200/50 text-primary-600 dark:bg-white/[0.07] dark:text-primary-400 dark:ring-1 dark:ring-white/10":"text-gray-600 hover:bg-gray-200/40 dark:text-gray-300 dark:hover:bg-white/[0.06]"]]),title:I(w),onClick:T=>g("select",w.id)},[l.activeId===w.id?(n(),i("span",Js)):R("",!0),p(P,{name:"i-heroicons-chat-bubble-left",class:"h-5 w-5"})],10,Gs))),128))])):(n(),i("div",Ds,[d.value?(n(),i("div",As,[p(P,{name:"i-heroicons-arrow-path",class:"h-5 w-5 animate-spin text-gray-400"})])):u.value.length===0?(n(),i("div",qs,[e("div",zs,[p(P,{name:"i-heroicons-chat-bubble-left",class:"h-6 w-6 text-gray-300 dark:text-gray-600"})]),e("p",Rs,o(a(c)("ai.chat.conversation.empty")),1),p(B,{class:"mt-2",size:"xs",variant:"link",color:"primary",disabled:l.disabled,onClick:S[3]||(S[3]=w=>!l.disabled&&g("create"))},{default:j(()=>[ee(o(a(c)("ai.chat.conversation.startNew")),1)]),_:1},8,["disabled"])])):(n(),i("div",Ps,[(n(!0),i(Z,null,ce(D.value,w=>(n(),i("div",{key:w.label},[e("div",Es,o(w.label),1),e("div",Bs,[(n(!0),i(Z,null,ce(w.conversations,T=>(n(),i("div",{key:T.id,class:ne(["group relative rounded-lg px-3 py-2 transition-all",["cursor-pointer",l.activeId===T.id?"bg-gray-100 text-gray-900 dark:bg-gray-800 dark:text-white":"text-gray-600 hover:bg-gray-50 dark:text-gray-400 dark:hover:bg-gray-800/50"]]),onClick:H=>g("select",T.id)},[m.value===T.id?Ve((n(),i("input",{key:0,"onUpdate:modelValue":S[4]||(S[4]=H=>v.value=H),class:"w-full rounded border-none bg-white px-2 py-1 text-sm shadow-sm outline-none ring-1 ring-gray-200 focus:ring-2 focus:ring-primary-500 dark:bg-page-dark dark:ring-gray-700",placeholder:a(c)("ai.chat.conversation.titlePlaceholder"),autoFocus:"",onBlur:H=>_(T.id),onKeyup:Ge(H=>_(T.id),["enter"]),onClick:S[5]||(S[5]=Be(()=>{},["stop"]))},null,40,Us)),[[ot,v.value]]):(n(),i("div",Fs,[e("p",Vs,o(I(T)),1),e("div",{class:ne(["ml-1 shrink-0 opacity-0 transition-opacity group-hover:opacity-100",{"opacity-100":l.activeId===T.id||M.value===T.id}]),onClick:S[6]||(S[6]=Be(()=>{},["stop"]))},[p(A,{open:M.value===T.id,ui:{content:"z-50 p-0"},"onUpdate:open":H=>M.value=H?T.id:null},{content:j(()=>[e("div",Os,[e("button",{class:"flex w-full items-center gap-2 rounded-md px-2 py-2 text-xs text-gray-600 transition-colors hover:bg-gray-100 dark:text-gray-400 dark:hover:bg-gray-800",disabled:l.disabled,onClick:H=>L(T)},[p(P,{name:"i-heroicons-pencil",class:"h-3.5 w-3.5"}),ee(" "+o(a(c)("ai.chat.conversation.rename")),1)],8,Ws),e("button",{class:"flex w-full items-center gap-2 rounded-md px-2 py-2 text-xs text-gray-600 transition-colors hover:bg-gray-100 dark:text-gray-400 dark:hover:bg-gray-800",onClick:H=>x(T.id)},[p(P,{name:"i-heroicons-clipboard-document",class:"h-3.5 w-3.5"}),ee(" "+o(a(c)("ai.chat.conversation.copyId")),1)],8,Hs),e("button",{class:"flex w-full items-center gap-2 rounded-md px-2 py-2 text-xs text-red-500 transition-colors hover:bg-red-50 dark:text-red-400 dark:hover:bg-red-950/30",disabled:l.disabled,onClick:H=>C(T.id)},[p(P,{name:"i-heroicons-trash",class:"h-3.5 w-3.5"}),ee(" "+o(a(c)("ai.chat.conversation.delete")),1)],8,Ys)])]),default:j(()=>[e("button",Ns,[p(P,{name:"i-heroicons-ellipsis-horizontal",class:"h-4 w-4"})])]),_:2},1032,["open","onUpdate:open"])],2)]))],10,js))),128))])]))),128))]))]))],2)}}}),Zs={class:"writing-vertical text-xs"},eo={class:"flex items-center justify-between border-b border-gray-200 px-4 py-3 dark:border-gray-800"},to={class:"flex items-center gap-2"},ao={class:"font-medium text-gray-900 dark:text-white"},so={key:0,class:"border-b border-gray-200 px-4 py-2 dark:border-gray-800"},oo={class:"flex flex-wrap items-center gap-2"},no={class:"text-xs text-gray-500"},ro={class:"flex-1 overflow-y-auto"},lo={key:0,class:"flex items-center justify-center py-8"},io={key:1,class:"flex flex-col items-center justify-center py-8 text-center"},co={class:"mt-2 text-sm text-gray-500"},uo={class:"text-xs text-gray-400"},mo={key:2,class:"divide-y divide-gray-100 dark:divide-gray-800"},go={class:"mb-1 flex items-center justify-between"},po={class:"text-sm font-medium text-gray-900 dark:text-white"},vo={class:"text-xs text-gray-400"},yo=["innerHTML"],ho={key:1,class:"border-t border-gray-200 px-4 py-2 dark:border-gray-800"},fo={class:"flex items-center justify-between"},xo={class:"text-xs text-gray-500"},bo={key:2,class:"pointer-events-none absolute inset-0 overflow-hidden rounded-xl opacity-[0.03]"},ko=pe({__name:"DataSourcePanel",props:{messages:{},keywords:{},isLoading:{type:Boolean},isCollapsed:{type:Boolean}},emits:["toggle","loadMore"],setup(l,{emit:s}){const{t}=fe(),c=l,r=s;function g(d){return Me(d).format("MM-DD HH:mm")}function u(d){if(!c.keywords.length)return d;const m=c.keywords.join("|"),v=new RegExp(`(${m})`,"gi");return d.replace(v,'<mark class="bg-yellow-200 dark:bg-yellow-800/50 px-0.5 rounded">$1</mark>')}return(d,m)=>{const v=we,y=ze;return n(),i("div",{class:ne(["relative flex flex-col rounded-xl bg-white transition-all duration-300 dark:bg-page-dark",[l.isCollapsed?"w-12":"w-full"]])},[l.isCollapsed?(n(),i("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]=M=>r("toggle"))},[p(v,{name:"i-heroicons-chevron-left",class:"h-5 w-5"}),e("span",Zs,o(a(t)("ai.chat.dataSource.title")),1)])):(n(),i(Z,{key:1},[e("div",eo,[e("div",to,[p(v,{name:"i-heroicons-document-magnifying-glass",class:"h-5 w-5 text-gray-500"}),e("span",ao,o(a(t)("ai.chat.dataSource.title")),1)]),p(y,{icon:"i-heroicons-chevron-right",color:"gray",variant:"ghost",size:"xs",onClick:m[1]||(m[1]=M=>r("toggle"))})]),l.keywords.length>0?(n(),i("div",so,[e("div",oo,[e("span",no,o(a(t)("ai.chat.dataSource.keywords")),1),(n(!0),i(Z,null,ce(l.keywords,M=>(n(),i("span",{key:M,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"},o(M),1))),128))])])):R("",!0),e("div",ro,[l.isLoading?(n(),i("div",lo,[p(v,{name:"i-heroicons-arrow-path",class:"h-6 w-6 animate-spin text-gray-400"})])):l.messages.length===0?(n(),i("div",io,[p(v,{name:"i-heroicons-inbox",class:"h-10 w-10 text-gray-300 dark:text-gray-600"}),e("p",co,o(a(t)("ai.chat.dataSource.empty")),1),e("p",uo,o(a(t)("ai.chat.dataSource.emptyHint")),1)])):(n(),i("div",mo,[(n(!0),i(Z,null,ce(l.messages,M=>(n(),i("div",{key:M.id,class:"px-4 py-3 transition-colors hover:bg-gray-50 dark:hover:bg-gray-800/50"},[e("div",go,[e("span",po,o(M.senderName),1),e("span",vo,o(g(M.timestamp)),1)]),e("p",{class:"line-clamp-3 text-sm text-gray-600 dark:text-gray-400",innerHTML:u(M.content)},null,8,yo)]))),128))]))]),l.messages.length>0?(n(),i("div",ho,[e("div",fo,[e("span",xo,o(a(t)("ai.chat.dataSource.totalRecords",{count:l.messages.length})),1),p(y,{size:"xs",variant:"ghost",onClick:m[2]||(m[2]=M=>r("loadMore"))},{default:j(()=>[ee(o(a(t)("ai.chat.dataSource.loadMore")),1)]),_:1})])])):R("",!0)],64)),l.isCollapsed?R("",!0):(n(),i("div",bo,[...m[3]||(m[3]=[e("div",{class:"data-flow-bg absolute inset-0"},null,-1)])]))],2)}}}),_o=lt(ko,[["__scopeId","data-v-a9962add"]]),wo={class:"flex max-h-[80vh] flex-col overflow-hidden"},$o={class:"shrink-0 border-b border-gray-200 px-6 py-4 dark:border-gray-800"},Co={class:"flex items-center justify-between"},So={class:"flex items-center gap-3"},To={class:"flex h-8 w-8 items-center justify-center rounded-lg bg-red-100 dark:bg-red-900/40"},Mo={class:"text-lg font-semibold text-gray-900 dark:text-white"},Io={class:"flex-1 overflow-y-auto px-6 py-4"},Lo={class:"flex flex-col gap-4"},Do={class:"text-sm font-semibold text-gray-700 dark:text-gray-300"},Ao={key:0,class:"rounded-md border border-red-200 bg-red-50/50 p-3 dark:border-red-900/40 dark:bg-red-950/20"},qo={class:"m-0 whitespace-pre-wrap break-words font-mono text-xs leading-relaxed text-red-600 dark:text-red-400"},zo={key:1,class:"rounded-md border border-gray-200 bg-gray-50 p-3 dark:border-gray-700 dark:bg-page-dark"},Ro={class:"m-0 max-h-[300px] overflow-auto whitespace-pre-wrap break-words font-mono text-xs leading-relaxed text-gray-700 dark:text-gray-300"},Po={key:2,class:"select-text break-words rounded-md border border-gray-200 bg-gray-50 px-3 py-2 font-mono text-xs text-gray-700 dark:border-gray-700 dark:bg-page-dark dark:text-gray-300"},Eo={key:0,class:"py-8 text-center text-sm text-gray-400 dark:text-gray-500"},Bo={class:"shrink-0 border-t border-gray-200 px-6 py-3 dark:border-gray-800"},jo={class:"flex justify-end"},Uo=pe({__name:"ErrorDetailModal",props:Rt({error:{}},{open:{type:Boolean,required:!0},openModifiers:{}}),emits:["update:open"],setup(l){const{t:s}=fe(),t=Je(),c=zt(l,"open"),r=l,g=b(()=>{const m=r.error,v=[];return m.url&&v.push({label:s("ai.chat.error.requestUrl"),value:m.url}),m.statusCode!=null&&v.push({label:s("ai.chat.error.statusCode"),value:String(m.statusCode)}),m.responseBody&&v.push({label:s("ai.chat.error.responseBody"),value:u(m.responseBody),isCode:!0}),m.responseHeaders&&v.push({label:s("ai.chat.error.responseHeaders"),value:JSON.stringify(m.responseHeaders,null,2),isCode:!0}),m.name&&v.push({label:s("ai.chat.error.name"),value:m.name}),m.message&&v.push({label:s("ai.chat.error.message"),value:m.message}),m.stack&&v.push({label:s("ai.chat.error.stack"),value:m.stack,isStack:!0}),m.cause&&v.push({label:s("ai.chat.error.cause"),value:u(m.cause),isCode:!0}),m.provider&&v.push({label:s("ai.chat.error.provider"),value:m.provider}),m.requestBody&&v.push({label:s("ai.chat.error.requestBody"),value:u(m.requestBody),isCode:!0}),v});function u(m){try{return JSON.stringify(JSON.parse(m),null,2)}catch{return m}}function d(){const m=g.value.map(v=>`${v.label}: ${v.value}`).join(`
|
|
6
6
|
|
|
7
7
|
`);navigator.clipboard.writeText(m).then(()=>{t.success(s("ai.chat.error.copied"))})}return(m,v)=>{const y=we,M=ze,$=He;return n(),Y($,{open:c.value,"onUpdate:open":v[1]||(v[1]=D=>c.value=D),ui:{content:"sm:max-w-[700px] z-[100]",overlay:"backdrop-blur-sm z-[99]"}},{content:j(()=>[e("div",wo,[e("div",$o,[e("div",Co,[e("div",So,[e("div",To,[p(y,{name:"i-heroicons-exclamation-triangle",class:"h-4 w-4 text-red-600 dark:text-red-400"})]),e("h2",Mo,o(a(s)("ai.chat.error.detail")),1)]),p(M,{icon:"i-heroicons-x-mark",variant:"ghost",color:"neutral",size:"sm",onClick:v[0]||(v[0]=D=>c.value=!1)})])]),e("div",Io,[e("div",Lo,[(n(!0),i(Z,null,ce(g.value,(D,I)=>(n(),i("div",{key:I,class:"flex flex-col gap-1.5"},[e("div",Do,o(D.label),1),D.isStack?(n(),i("div",Ao,[e("pre",qo,o(D.value),1)])):D.isCode?(n(),i("div",zo,[e("pre",Ro,o(D.value),1)])):(n(),i("div",Po,o(D.value),1))]))),128)),g.value.length===0?(n(),i("div",Eo,o(a(s)("ai.chat.error.unknown")),1)):R("",!0)])]),e("div",Bo,[e("div",jo,[p(M,{icon:"i-heroicons-document-duplicate",variant:"soft",color:"neutral",size:"sm",onClick:d},{default:j(()=>[ee(o(a(s)("ai.chat.error.copyAll")),1)]),_:1})])])])]),_:1},8,["open"])}}}),Fo={class:"mb-1.5 flex items-center gap-2"},Vo={class:"flex shrink-0 items-center justify-center text-red-500 dark:text-red-400"},No={class:"pr-5 text-[13px] font-semibold leading-[1.4] text-red-600 dark:text-red-400"},Oo={class:"ml-6 line-clamp-3 break-words text-xs leading-normal text-gray-600 dark:text-gray-400"},Wo={class:"mt-2.5 ml-6 flex items-center"},Ho={class:"ml-auto inline-flex items-center gap-0.5 text-xs text-gray-400 transition-colors duration-150 group-hover:text-red-500 dark:text-gray-500 dark:group-hover:text-red-400"},Yo=pe({__name:"ErrorBlock",props:{error:{}},setup(l){const{t:s}=fe(),t=f(!1);function c(r){return r.friendlyMessage||r.message||s("ai.chat.error.unknown")}return(r,g)=>{const u=we;return n(),i(Z,null,[e("div",{class:"group relative my-2 w-full min-w-[320px] cursor-pointer rounded-lg border border-red-200 bg-red-50/60 px-3.5 py-3 text-[13px] transition-all duration-200 hover:border-red-300 hover:bg-red-50 dark:border-red-900/30 dark:bg-red-950/20 dark:hover:border-red-800/50 dark:hover:bg-red-950/30",onClick:g[0]||(g[0]=d=>t.value=!0)},[e("div",Fo,[e("div",Vo,[p(u,{name:"i-heroicons-exclamation-triangle",class:"h-4 w-4"})]),e("div",No,o(a(s)("ai.chat.error.title")),1)]),e("div",Oo,o(c(l.error)),1),e("div",Wo,[e("div",Ho,[ee(o(a(s)("ai.chat.error.viewDetail"))+" ",1),p(u,{name:"i-heroicons-chevron-right",class:"h-3.5 w-3.5"})])])]),p(Uo,{open:t.value,"onUpdate:open":g[1]||(g[1]=d=>t.value=d),error:l.error},null,8,["open","error"])],64)}}}),Bt=pe({__name:"EChartHeatmap",props:{data:{},height:{default:280},mode:{default:"expanded"},minColor:{default:"#fee5e8"},maxColor:{default:"#ee4567"}},setup(l){const s=l,t=b(()=>{let r=0;for(const[,,g]of s.data.data)g>r&&(r=g);return r||1}),c=b(()=>{const r=s.mode==="compact",g=s.data.xLabels.length,u=s.data.yLabels.length;return{tooltip:{position:"top",confine:!0,extraCssText:"max-width: min(360px, 70vw); white-space: normal; word-break: break-word;",formatter:d=>{const m=s.data.xLabels[d.data[0]],v=s.data.yLabels[d.data[1]],y=d.data[2];return`${v} ${m}<br/>消息数: <strong>${y}</strong>`},backgroundColor:"rgba(0, 0, 0, 0.8)",borderColor:"transparent",textStyle:{color:"#fff"}},grid:{left:r?52:72,right:20,top:r?12:24,bottom:r?52:70,outerBoundsMode:"same"},xAxis:{type:"category",data:s.data.xLabels,splitArea:{show:!0},axisLine:{show:!1},axisTick:{show:!1},axisLabel:{fontSize:r?10:11,color:"#6b7280",interval:r&&g>16?"auto":0,hideOverlap:!0}},yAxis:{type:"category",data:s.data.yLabels,splitArea:{show:!0},axisLine:{show:!1},axisTick:{show:!1},axisLabel:{fontSize:r?10:11,color:"#6b7280",interval:r&&u>14?"auto":0,hideOverlap:!0}},visualMap:{min:0,max:t.value,calculable:!0,orient:"horizontal",left:"center",bottom:0,itemWidth:r?8:10,itemHeight:r?84:120,inRange:{color:[s.minColor,s.maxColor]},textStyle:{color:"#6b7280",fontSize:11}},series:[{type:"heatmap",data:s.data.data,label:{show:!1},emphasis:{itemStyle:{shadowBlur:10,shadowColor:"rgba(0, 0, 0, 0.5)"}}}]}});return(r,g)=>(n(),Y($t,{option:c.value,height:l.height},null,8,["option","height"]))}}),jt=pe({__name:"EChartLine",props:{data:{},height:{default:288},mode:{default:"expanded"},showArea:{type:Boolean,default:!0},smooth:{type:Boolean,default:!0}},setup(l){const s=l,t=b(()=>{const c=!!s.data.series?.length,r=s.mode==="compact",g=s.data.series?.length??0,u=s.data.labels.length,d=g>(r?3:8),m=!r&&u>30,v=c?s.data.series.map(y=>({name:y.name,type:"line",data:y.values,smooth:s.smooth,symbol:"circle",symbolSize:4,showSymbol:!r&&u<=80,lineStyle:{width:2},areaStyle:s.showArea?{opacity:.08}:void 0,emphasis:{focus:"series"}})):[{type:"line",data:s.data.values,smooth:s.smooth,symbol:"circle",symbolSize:4,showSymbol:!r&&u<=80,lineStyle:{width:2,color:"#ee4567"},itemStyle:{color:"#ee4567"},areaStyle:s.showArea?{color:{type:"linear",x:0,y:0,x2:0,y2:1,colorStops:[{offset:0,color:"rgba(238, 69, 103, 0.3)"},{offset:1,color:"rgba(238, 69, 103, 0.05)"}]}}:void 0,emphasis:{focus:"series",itemStyle:{color:"#ee4567",borderColor:"#fff",borderWidth:2}}}];return{tooltip:{trigger:"axis",confine:!0,extraCssText:"max-width: min(420px, 76vw); white-space: normal; word-break: break-word;",backgroundColor:"rgba(0, 0, 0, 0.8)",borderColor:"transparent",textStyle:{color:"#fff"}},grid:{left:50,right:20,top:c?r?44:56:20,bottom:m?66:34,outerBoundsMode:"same"},legend:c?{type:d?"scroll":"plain",top:0,left:8,right:8,height:32,textStyle:{color:"#6b7280",fontSize:11}}:void 0,xAxis:{type:"category",data:s.data.labels,boundaryGap:!1,axisLine:{show:!1},axisTick:{show:!1},axisLabel:{fontSize:11,color:"#6b7280",interval:"auto",hideOverlap:!0}},yAxis:{type:"value",axisLine:{show:!1},axisTick:{show:!1},splitLine:{lineStyle:{type:"dashed",color:"#e5e7eb"}}},dataZoom:m?[{type:"inside",throttle:50},{type:"slider",height:18,bottom:18,showDetail:!1}]:void 0,series:v}});return(c,r)=>(n(),Y($t,{option:t.value,height:l.height},null,8,["option","height"]))}}),Ut=pe({__name:"EChartPie",props:{data:{},height:{default:280},mode:{default:"expanded"},doughnut:{type:Boolean,default:!0},innerRadius:{default:"50%"},showLegend:{type:Boolean,default:!0}},setup(l){const s=l,t=["#6366f1","#8b5cf6","#ec4899","#f43f5e","#f97316","#eab308","#22c55e","#14b8a6","#06b6d4","#3b82f6"],c=b(()=>{const r=s.data.labels.map(($,D)=>({name:$,value:s.data.values[D]})),g=s.data.labels.length,u=s.mode==="compact",d=g>(u?8:14),m=g>(u?6:12),v=u?{type:m?"scroll":"plain",orient:"horizontal",left:8,right:8,bottom:0,height:28,textStyle:{fontSize:11,overflow:"truncate",width:72}}:{type:m?"scroll":"plain",orient:"vertical",right:10,top:24,bottom:24,textStyle:{fontSize:12,overflow:"truncate",width:120}},y=!u&&!d,M=s.showLegend&&!y;return{color:t,tooltip:{trigger:"item",formatter:"{b}: {c} ({d}%)",confine:!0,extraCssText:"max-width: min(360px, 70vw); white-space: normal; word-break: break-word;",backgroundColor:"rgba(0, 0, 0, 0.8)",borderColor:"transparent",textStyle:{color:"#fff"}},legend:M?v:void 0,series:[{type:"pie",radius:s.doughnut?[s.innerRadius,u?"58%":"68%"]:u?"58%":"68%",center:M?u?["50%","42%"]:["38%","50%"]:["50%",u?"46%":"50%"],avoidLabelOverlap:!0,itemStyle:{borderRadius:4,borderColor:"#fff",borderWidth:2},label:{show:y,formatter:"{b}",overflow:"truncate",width:110,alignTo:"edge",edgeDistance:12},emphasis:{label:{show:y,fontSize:14,fontWeight:"bold",overflow:"truncate",width:140},itemStyle:{shadowBlur:10,shadowOffsetX:0,shadowColor:"rgba(0, 0, 0, 0.5)"}},data:r}]}});return(r,g)=>(n(),Y($t,{option:c.value,height:l.height},null,8,["option","height"]))}}),Ko={class:"my-2 w-full overflow-hidden rounded-lg border border-gray-200 bg-white/80 dark:border-gray-700/70 dark:bg-page-dark/70"},Qo={class:"border-b border-gray-100 px-3 py-2 dark:border-gray-800"},Go={class:"flex min-w-0 items-start justify-between gap-3"},Jo={class:"min-w-0"},Xo={class:"truncate text-sm font-semibold text-gray-900 dark:text-gray-100"},Zo={key:0,class:"mt-0.5 line-clamp-2 text-xs text-gray-500 dark:text-gray-400"},en={class:"flex shrink-0 items-center gap-1.5"},tn={class:"rounded-md bg-gray-100 px-1.5 py-0.5 text-[10px] uppercase text-gray-500 dark:bg-gray-800"},an={class:"flex max-h-[92vh] flex-col overflow-hidden bg-white dark:bg-page-dark"},sn={class:"flex items-start justify-between gap-4 border-b border-gray-200 px-5 py-4 dark:border-gray-800"},on={class:"min-w-0"},nn={class:"truncate text-base font-semibold text-gray-900 dark:text-gray-100"},rn={key:0,class:"mt-1 line-clamp-2 text-xs text-gray-500 dark:text-gray-400"},ln={class:"mt-1 text-[11px] text-gray-400 dark:text-gray-500"},cn={class:"min-h-0 flex-1 overflow-auto p-4"},dn={key:0,class:"flex h-64 items-center justify-center text-xs text-gray-400 dark:text-gray-500"},un={class:"mt-1 text-[11px] text-gray-400 dark:text-gray-500"},mn={class:"px-2 py-3"},gn={key:0,class:"flex h-32 items-center justify-center text-xs text-gray-400 dark:text-gray-500"},pn=pe({__name:"ChartBlockRenderer",props:{chart:{}},setup(l){const{t:s}=fe(),t=l,c=f(!1),r=b(()=>t.chart.spec.title),g=b(()=>t.chart.spec.subtitle||t.chart.spec.description||""),u=b(()=>t.chart.spec.display?.height??(t.chart.spec.type==="heatmap"?300:260)),d=b(()=>t.chart.rowCount===0),m=b(()=>{const L=[];return t.chart.spec.unit&&L.push(t.chart.spec.unit),t.chart.truncated&&L.push(s("ai.chat.message.chart.truncated")),L.push(s("ai.chat.message.chart.rows",{count:t.chart.rowCount})),L.join(" · ")}),v=b(()=>t.chart.data),y=b(()=>t.chart.data),M=b(()=>t.chart.data),$=b(()=>t.chart.data),D=b(()=>t.chart.spec.type==="pie"?M.value.labels.length>8:t.chart.spec.type==="line"?y.value.labels.length>28||(y.value.series?.length??0)>4:t.chart.spec.type==="bar"?v.value.labels.length>12:t.chart.spec.type==="heatmap"?$.value.xLabels.length*$.value.yLabels.length>180:!1),I=b(()=>{const L=D.value?320:380;return Math.min(u.value,L)}),q=b(()=>{const L=u.value;if(t.chart.spec.type==="pie")return Math.max(L,560);if(t.chart.spec.type==="line")return Math.max(L,y.value.labels.length>40?620:540);if(t.chart.spec.type==="bar"){const x=t.chart.spec.display?.horizontal?v.value.labels.length*28+120:520;return Math.min(Math.max(L,x),820)}return t.chart.spec.type==="heatmap"?Math.min(Math.max(L,$.value.yLabels.length*22+150,560),860):Math.max(L,520)}),_=b(()=>t.chart.spec.type==="pie"?"640px":t.chart.spec.type==="bar"?"720px":"780px");return(L,x)=>{const C=ze,h=He;return n(),i("div",Ko,[e("div",Qo,[e("div",Go,[e("div",Jo,[e("h3",Xo,o(r.value),1),g.value?(n(),i("p",Zo,o(g.value),1)):R("",!0)]),e("div",en,[e("span",tn,o(l.chart.spec.type),1),p(h,{open:c.value,"onUpdate:open":x[2]||(x[2]=k=>c.value=k),ui:{overlay:"z-[10040] backdrop-blur-sm",content:"z-[10050] w-[96vw] max-w-6xl max-h-[92vh] overflow-hidden"}},{content:j(()=>[e("div",an,[e("div",sn,[e("div",on,[e("h3",nn,o(r.value),1),g.value?(n(),i("p",rn,o(g.value),1)):R("",!0),e("p",ln,o(m.value),1)]),p(C,{icon:"i-heroicons-x-mark",size:"sm",color:"neutral",variant:"ghost",class:"shrink-0",title:a(s)("common.close"),"aria-label":a(s)("common.close"),onClick:x[1]||(x[1]=k=>c.value=!1)},null,8,["title","aria-label"])]),e("div",cn,[e("div",{class:"mx-auto w-full",style:Qe({minWidth:_.value})},[d.value?(n(),i("div",dn,o(a(s)("ai.chat.message.chart.empty")),1)):l.chart.spec.type==="bar"?(n(),Y(Ze,{key:1,data:v.value,height:q.value,mode:"expanded",horizontal:l.chart.spec.display?.horizontal},null,8,["data","height","horizontal"])):l.chart.spec.type==="line"?(n(),Y(jt,{key:2,data:y.value,height:q.value,mode:"expanded"},null,8,["data","height"])):l.chart.spec.type==="pie"?(n(),Y(Ut,{key:3,data:M.value,height:q.value,mode:"expanded","show-legend":l.chart.spec.display?.showLegend??!0},null,8,["data","height","show-legend"])):l.chart.spec.type==="heatmap"?(n(),Y(Bt,{key:4,data:$.value,height:q.value,mode:"expanded"},null,8,["data","height"])):R("",!0)],4)])])]),default:j(()=>[p(C,{icon:"i-heroicons-arrows-pointing-out",size:"xs",color:"neutral",variant:"ghost",class:"no-capture",title:a(s)("ai.chat.message.chart.expand"),"aria-label":a(s)("ai.chat.message.chart.expand"),onClick:x[0]||(x[0]=Be(()=>{},["stop"]))},null,8,["title","aria-label"])]),_:1},8,["open"])])]),e("p",un,o(m.value),1)]),e("div",mn,[d.value?(n(),i("div",gn,o(a(s)("ai.chat.message.chart.empty")),1)):l.chart.spec.type==="bar"?(n(),Y(Ze,{key:1,data:v.value,height:I.value,mode:"compact",horizontal:l.chart.spec.display?.horizontal},null,8,["data","height","horizontal"])):l.chart.spec.type==="line"?(n(),Y(jt,{key:2,data:y.value,height:I.value,mode:"compact"},null,8,["data","height"])):l.chart.spec.type==="pie"?(n(),Y(Ut,{key:3,data:M.value,height:I.value,mode:"compact","show-legend":l.chart.spec.display?.showLegend??!0},null,8,["data","height","show-legend"])):l.chart.spec.type==="heatmap"?(n(),Y(Bt,{key:4,data:$.value,height:I.value,mode:"compact"},null,8,["data","height"])):R("",!0)])])}}}),vn={class:"my-1.5 w-full overflow-hidden rounded-lg border border-gray-200 bg-gray-50/60 text-[13px] dark:border-gray-700/60 dark:bg-gray-800/30"},yn={class:"text-xs font-semibold text-gray-700 dark:text-gray-200"},hn={key:0,class:"flex min-w-0 items-center gap-2"},fn={key:0,class:"truncate text-[11px] text-gray-400 dark:text-gray-500"},xn={class:"ml-auto flex shrink-0 items-center gap-1.5"},bn={class:"text-[11px] text-gray-400 dark:text-gray-500"},kn={key:0,class:"border-t border-gray-200/70 px-3 py-2 dark:border-gray-700/50"},_n={class:"mb-2 space-y-0.5 text-xs text-gray-600 dark:text-gray-400"},wn={class:"font-medium"},$n={key:0},Cn={class:"font-medium"},Sn={key:0,class:"mb-2 space-y-1"},Tn={key:1,class:"py-1.5 text-center text-xs text-gray-400 dark:text-gray-500"},Mn={key:2,class:"space-y-2"},In={class:"flex items-center gap-2"},Ln={class:"ml-auto shrink-0 text-[11px] text-gray-400 dark:text-gray-500"},Dn={key:0,class:"mt-1 text-[11px] text-gray-500 dark:text-gray-400"},An={class:"mt-1 space-y-0.5"},qn=["onClick"],zn={class:"min-w-0 flex-1 text-xs leading-snug text-gray-600 dark:text-gray-300"},Rn={key:0,class:"mr-1 text-gray-400 dark:text-gray-500"},Pn={class:"line-clamp-2 break-words align-middle"},En={key:3,class:"mt-1.5 text-right text-[11px] text-gray-400 dark:text-gray-500"},Bn=pe({__name:"EvidenceBlock",props:{evidence:{}},setup(l){const s=l,{t}=fe(),c=ct(),r=f(!1),g=["included","uncertain","excluded"],u=b(()=>[...s.evidence.groups].sort((D,I)=>g.indexOf(D.status)-g.indexOf(I.status))),d=b(()=>s.evidence.groups.reduce((D,I)=>D+I.sources.length,0)),m=b(()=>g.map(D=>({status:D,count:s.evidence.groups.filter(I=>I.status===D).length})).filter(D=>D.count>0)),v=b(()=>s.evidence.warnings??[]),y={included:"bg-emerald-50 text-emerald-600 dark:bg-emerald-900/20 dark:text-emerald-400",uncertain:"bg-amber-50 text-amber-600 dark:bg-amber-900/20 dark:text-amber-400",excluded:"bg-gray-100 text-gray-500 dark:bg-gray-800/40 dark:text-gray-400"},M={included:"bg-emerald-500",uncertain:"bg-amber-500",excluded:"bg-gray-400"};function $(D){c.openChatRecordDrawer({scrollToMessageId:D})}return(D,I)=>{const q=we;return n(),i("div",vn,[e("button",{type:"button",class:"flex w-full items-center gap-2 px-3 py-2 text-left transition-colors hover:bg-gray-100/60 dark:hover:bg-gray-800/40",onClick:I[0]||(I[0]=_=>r.value=!r.value)},[p(q,{name:"i-heroicons-document-magnifying-glass",class:"h-4 w-4 shrink-0 text-primary-500"}),e("span",yn,o(a(t)("ai.chat.evidence.title")),1),r.value?R("",!0):(n(),i("div",hn,[(n(!0),i(Z,null,ce(m.value,_=>(n(),i("span",{key:_.status,class:"flex shrink-0 items-center gap-1 text-[11px] text-gray-500 dark:text-gray-400"},[e("span",{class:ne(["h-1.5 w-1.5 rounded-full",M[_.status]])},null,2),ee(" "+o(a(t)(`ai.chat.evidence.group.${_.status}`))+" "+o(_.count),1)]))),128)),m.value.length===0?(n(),i("span",fn,o(a(t)("ai.chat.evidence.empty")),1)):R("",!0)])),e("span",xn,[e("span",bn,o(a(t)(`ai.chat.evidence.mode.${l.evidence.mode}`)),1),p(q,{name:r.value?"i-heroicons-chevron-up":"i-heroicons-chevron-down",class:"h-3.5 w-3.5 text-gray-400 dark:text-gray-500"},null,8,["name"])])]),r.value?(n(),i("div",kn,[e("div",_n,[e("div",null,[e("span",wn,o(a(t)("ai.chat.evidence.query"))+":",1),ee(" "+o(l.evidence.query),1)]),l.evidence.criteria?(n(),i("div",$n,[e("span",Cn,o(a(t)("ai.chat.evidence.criteria"))+":",1),ee(" "+o(l.evidence.criteria),1)])):R("",!0)]),v.value.length>0?(n(),i("div",Sn,[(n(!0),i(Z,null,ce(v.value,_=>(n(),i("div",{key:_,class:"flex items-start gap-1.5 rounded bg-amber-50/70 px-2 py-1 text-[11px] text-amber-600 dark:bg-amber-900/15 dark:text-amber-400"},[p(q,{name:"i-heroicons-exclamation-triangle",class:"mt-0.5 h-3 w-3 shrink-0"}),e("span",null,o(a(t)(`ai.chat.evidence.warning.${_}`)),1)]))),128))])):R("",!0),u.value.length===0?(n(),i("div",Tn,o(a(t)("ai.chat.evidence.empty")),1)):(n(),i("div",Mn,[(n(!0),i(Z,null,ce(u.value,_=>(n(),i("div",{key:_.id,class:"rounded-md border border-gray-200/80 bg-white px-2.5 py-1.5 dark:border-gray-700/50 dark:bg-page-dark/30"},[e("div",In,[e("span",{class:ne(["rounded px-1.5 py-0.5 text-[11px] font-medium",y[_.status]])},o(a(t)(`ai.chat.evidence.group.${_.status}`)),3),e("span",Ln,o(_.title),1)]),_.reason?(n(),i("div",Dn,o(_.reason),1)):R("",!0),e("ul",An,[(n(!0),i(Z,null,ce(_.sources,(L,x)=>(n(),i("li",{key:`${_.id}-${x}`,class:"group/source flex cursor-pointer items-start gap-1.5 rounded px-1.5 py-1 transition-colors hover:bg-gray-50 dark:hover:bg-gray-800/40",onClick:C=>$(L.messageId)},[e("div",zn,[L.senderName?(n(),i("span",Rn,o(L.senderName)+": ",1)):R("",!0),e("span",Pn,o(L.snippet),1)]),p(q,{name:"i-heroicons-arrow-top-right-on-square",class:"mt-0.5 h-3 w-3 shrink-0 text-gray-400 opacity-0 transition-opacity group-hover/source:opacity-100 dark:text-gray-500"})],8,qn))),128))])]))),128))])),u.value.length>0?(n(),i("div",En,o(a(t)("ai.chat.evidence.totalSources",{count:d.value})),1)):R("",!0)])):R("",!0)])}}}),jn=/^\s*!\[[^\]\n]*\]\(\s*(?:(?:https?:\/\/(?:localhost|127\.0\.0\.1)(?::\d+)?)?\/?|\.\/)?chart[\w-]*(?:\.(?:png|jpg|jpeg|webp|svg))?(?:\?[^)\s]*)?\s*(?:"[^"]*")?\s*\)\s*$/gim;function Un(l){return l&&l.replace(jn,"").replace(/\n{3,}/g,`
|
|
8
8
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{w as U,g,c,u as S,B as _,d as m,E as I,e as p}from"./RelationshipGalaxyCanvas-
|
|
1
|
+
import{w as U,g,c,u as S,B as _,d as m,E as I,e as p}from"./RelationshipGalaxyCanvas-ioRNObb5.js";const x={name:"local-uniform-bit",vertex:{header:`
|
|
2
2
|
|
|
3
3
|
struct LocalUniforms {
|
|
4
4
|
uTransformMatrix:mat3x3<f32>,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{f as C,h as Ce,i as Te,m as Z,M as A,j as _,k as Le,w as Oe,s as Pe,l as ke,n as je,C as be,T as _e,o as Ne,F as Ye,p as Ve,q as $e,D as Se,A as Xe,R as Je,r as te}from"./RelationshipGalaxyCanvas-Dwdy5flh.js";import{R as Ke,S as Qe,B as ze,a as Ze,b as et,c as tt,A as st,C as nt}from"./RenderTargetSystem-BE56mKRG.js";import"./vendor-snapdom-XnBoh1gd.js";import"./index-YADL4XIp.js";import"./vendor-reka-ui-Cta6JPvN.js";import"./vendor-nuxt-ui-CS1uxE9C.js";import"./index-CAWO10k1.js";import"./LoadingState.vue_vue_type_script_setup_true_lang-DACMroOe.js";import"./people-page-header-BdKM1qhX.js";import"./relationship-galaxy-viewport-Cwfa51ER.js";import"./Filter-CHXKzS2l.js";const he=class L{static _getPatternRepeat(e,t){const a=e&&e!=="clamp-to-edge",s=t&&t!=="clamp-to-edge";return a&&s?"repeat":a?"repeat-x":s?"repeat-y":"no-repeat"}start(e,t,a){}execute(e,t){const a=t.elements;if(!a||!a.length)return;const s=e.renderer,o=s.canvasContext,r=o.activeContext;for(let l=0;l<a.length;l++){const i=a[l];if(!i.packAsQuad)continue;const d=i,h=d.texture,v=h?C.getCanvasSource(h):null;if(!v)continue;const y=h.source.style,H=o.smoothProperty,W=y.scaleMode!=="nearest";r[H]!==W&&(r[H]=W),o.setBlendMode(t.blendMode);const F=s.globalUniforms.globalUniformData?.worldColor??4294967295,S=d.color,G=(F>>>24&255)/255,P=(S>>>24&255)/255,g=s.filter?.alphaMultiplier??1,M=G*P*g;if(M<=0)continue;r.globalAlpha=M;const K=F&16777215,k=S&16777215,q=Te(Z(k,K)),I=h.frame,V=y.addressModeU??y.addressMode,O=y.addressModeV??y.addressMode,u=L._getPatternRepeat(V,O),m=h.source._resolution??h.source.resolution??1,f=d.renderable?.renderGroup?.isCachedAsTexture,D=I.x*m,j=I.y*m,b=I.width*m,E=I.height*m,x=d.bounds,w=s.renderTarget.renderTarget.isRoot,R=x.minX,$=x.minY,U=x.maxX-x.minX,B=x.maxY-x.minY,T=h.rotate,c=h.uvs,se=Math.min(c.x0,c.x1,c.x2,c.x3,c.y0,c.y1,c.y2,c.y3),Fe=Math.max(c.x0,c.x1,c.x2,c.x3,c.y0,c.y1,c.y2,c.y3),de=u!=="no-repeat"&&(se<0||Fe>1),Q=T&&!(!de&&(q!==16777215||T));Q?(L._tempPatternMatrix.copyFrom(d.transform),Ce.matrixAppendRotationInv(L._tempPatternMatrix,T,R,$,U,B),o.setContextTransform(L._tempPatternMatrix,d.roundPixels===1,void 0,f&&w)):o.setContextTransform(d.transform,d.roundPixels===1,void 0,f&&w);const ne=U,ae=B;let X=Q?0:R,J=Q?0:$;if(!Q&&d.roundPixels===1&&(X|=0,J|=0),de){let oe=v;const N=q!==16777215&&!T,Y=I.width<=h.source.width&&I.height<=h.source.height;N&&Y&&(oe=C.getTintedCanvas({texture:h},q));const re=r.createPattern(oe,u);if(!re)continue;const pe=ne,ue=ae;if(pe===0||ue===0)continue;const me=1/pe,fe=1/ue,ge=(c.x1-c.x0)*me,ve=(c.y1-c.y0)*me,ye=(c.x3-c.x0)*fe,xe=(c.y3-c.y0)*fe,qe=c.x0-ge*X-ye*J,Ue=c.y0-ve*X-xe*J,ie=h.source.pixelWidth,ce=h.source.pixelHeight;L._tempPatternMatrix.set(ge*ie,ve*ce,ye*ie,xe*ce,qe*ie,Ue*ce),C.applyPatternTransform(re,L._tempPatternMatrix),r.fillStyle=re,r.fillRect(X,J,ne,ae)}else{const N=q!==16777215||T?C.getTintedCanvas({texture:h},q):v,Y=N!==v;r.drawImage(N,Y?0:D,Y?0:j,Y?N.width:b,Y?N.height:E,X,J,ne,ae)}}}};he._tempPatternMatrix=new A;he.extension={type:[_.CanvasPipesAdaptor],name:"batch"};let at=he;class Me{constructor(e){this._colorStack=[],this._colorStackIndex=0,this._currentColor=0,this._renderer=e}buildStart(){this._colorStack[0]=15,this._colorStackIndex=1,this._currentColor=15}push(e,t,a){this._renderer.renderPipes.batch.break(a);const s=this._colorStack;s[this._colorStackIndex]=s[this._colorStackIndex-1]&e.mask;const o=this._colorStack[this._colorStackIndex];o!==this._currentColor&&(this._currentColor=o,a.add({renderPipeId:"colorMask",colorMask:o,canBundle:!1})),this._colorStackIndex++}pop(e,t,a){this._renderer.renderPipes.batch.break(a);const s=this._colorStack;this._colorStackIndex--;const o=s[this._colorStackIndex-1];o!==this._currentColor&&(this._currentColor=o,a.add({renderPipeId:"colorMask",colorMask:o,canBundle:!1}))}execute(e){}destroy(){this._renderer=null,this._colorStack=null}}Me.extension={type:[_.CanvasPipes],name:"colorMask"};function ot(n,e,t,a,s,o){o=Math.max(0,Math.min(o,Math.min(a,s)/2)),n.moveTo(e+o,t),n.lineTo(e+a-o,t),n.quadraticCurveTo(e+a,t,e+a,t+o),n.lineTo(e+a,t+s-o),n.quadraticCurveTo(e+a,t+s,e+a-o,t+s),n.lineTo(e+o,t+s),n.quadraticCurveTo(e,t+s,e,t+s-o),n.lineTo(e,t+o),n.quadraticCurveTo(e,t,e+o,t)}function we(n,e){switch(e.type){case"rectangle":{const t=e;n.rect(t.x,t.y,t.width,t.height);break}case"roundedRectangle":{const t=e;ot(n,t.x,t.y,t.width,t.height,t.radius);break}case"circle":{const t=e;n.moveTo(t.x+t.radius,t.y),n.arc(t.x,t.y,t.radius,0,Math.PI*2);break}case"ellipse":{const t=e;n.ellipse?(n.moveTo(t.x+t.halfWidth,t.y),n.ellipse(t.x,t.y,t.halfWidth,t.halfHeight,0,0,Math.PI*2)):(n.save(),n.translate(t.x,t.y),n.scale(t.halfWidth,t.halfHeight),n.moveTo(1,0),n.arc(0,0,1,0,Math.PI*2),n.restore());break}case"triangle":{const t=e;n.moveTo(t.x,t.y),n.lineTo(t.x2,t.y2),n.lineTo(t.x3,t.y3),n.closePath();break}default:{const t=e,a=t.points;if(!a?.length)break;n.moveTo(a[0],a[1]);for(let s=2;s<a.length;s+=2)n.lineTo(a[s],a[s+1]);t.closePath&&n.closePath();break}}}function rt(n,e,t){const a=[],s=[],o=[];if(!Pe[e.type]?.build(e,a))return!1;const l=e.closePath??!0;ke(a,t,!1,l,s,o);for(let i=0;i<o.length;i+=3){const d=o[i]*2,h=o[i+1]*2,v=o[i+2]*2;n.moveTo(s[d],s[d+1]),n.lineTo(s[h],s[h+1]),n.lineTo(s[v],s[v+1]),n.closePath()}return!0}function it(n,e){if(!e?.length)return!1;for(let t=0;t<e.length;t++){const a=e[t];if(!a?.shape)continue;const s=a.transform,o=s&&!s.isIdentity();o&&(n.save(),n.transform(s.a,s.b,s.c,s.d,s.tx,s.ty)),we(n,a.shape),o&&n.restore()}return!0}class Re{constructor(e){this._warnedMaskTypes=new Set,this._canvasMaskStack=[],this._renderer=e}push(e,t,a){this._renderer.renderPipes.batch.break(a),a.add({renderPipeId:"stencilMask",action:"pushMaskBegin",mask:e,inverse:t._maskOptions.inverse,canBundle:!1})}pop(e,t,a){this._renderer.renderPipes.batch.break(a),a.add({renderPipeId:"stencilMask",action:"popMaskEnd",mask:e,inverse:t._maskOptions.inverse,canBundle:!1})}execute(e){if(e.action!=="pushMaskBegin"&&e.action!=="popMaskEnd")return;const t=this._renderer,a=t.canvasContext,s=a?.activeContext;if(!s)return;if(e.action==="popMaskEnd"){this._canvasMaskStack.pop()&&s.restore();return}e.inverse&&this._warnOnce("inverse","CanvasRenderer: inverse masks are not supported on Canvas2D; ignoring inverse flag.");const o=e.mask.mask;if(!(o instanceof Le)){this._warnOnce("nonGraphics","CanvasRenderer: only Graphics masks are supported in Canvas2D; skipping mask."),this._canvasMaskStack.push(!1);return}const r=o,l=r.context?.instructions;if(!l?.length){this._canvasMaskStack.push(!1);return}s.save(),a.setContextTransform(r.groupTransform,(t._roundPixels|r._roundPixels)===1),s.beginPath();let i=!1,d=!1;for(let h=0;h<l.length;h++){const v=l[h],y=v.action;if(y!=="fill"&&y!=="stroke")continue;const H=v.data,W=H?.path?.shapePath;if(!W?.shapePrimitives?.length)continue;const F=y==="stroke",S=W.shapePrimitives;for(let G=0;G<S.length;G++){const P=S[G];if(!P?.shape)continue;const g=P.transform,M=g&&!g.isIdentity();M&&(s.save(),s.transform(g.a,g.b,g.c,g.d,g.tx,g.ty)),F&&H.style?i=rt(s,P.shape,H.style)||i:(we(s,P.shape),d=it(s,P.holes)||d,i=!0),M&&s.restore()}}if(!i){s.restore(),this._canvasMaskStack.push(!1);return}d?s.clip("evenodd"):s.clip(),this._canvasMaskStack.push(!0)}destroy(){this._renderer=null,this._warnedMaskTypes=null,this._canvasMaskStack=null}_warnOnce(e,t){this._warnedMaskTypes.has(e)||(this._warnedMaskTypes.add(e),Oe(t))}}Re.extension={type:[_.CanvasPipes],name:"stencilMask"};const p="source-over";function ct(){const n=je(),e=Object.create(null);return e.inherit=p,e.none=p,e.normal="source-over",e.add="lighter",e.multiply=n?"multiply":p,e.screen=n?"screen":p,e.overlay=n?"overlay":p,e.darken=n?"darken":p,e.lighten=n?"lighten":p,e["color-dodge"]=n?"color-dodge":p,e["color-burn"]=n?"color-burn":p,e["hard-light"]=n?"hard-light":p,e["soft-light"]=n?"soft-light":p,e.difference=n?"difference":p,e.exclusion=n?"exclusion":p,e.saturation=n?"saturation":p,e.color=n?"color":p,e.luminosity=n?"luminosity":p,e["linear-burn"]=n?"color-burn":p,e["linear-dodge"]=n?"color-dodge":p,e["linear-light"]=n?"hard-light":p,e["pin-light"]=n?"hard-light":p,e["vivid-light"]=n?"hard-light":p,e["hard-mix"]=p,e.negation=n?"difference":p,e["normal-npm"]=e.normal,e["add-npm"]=e.add,e["screen-npm"]=e.screen,e.erase="destination-out",e.subtract=p,e.divide=p,e.min=p,e.max=p,e}const lt=new A;class Ie{constructor(e){this.activeResolution=1,this.smoothProperty="imageSmoothingEnabled",this.blendModes=ct(),this._activeBlendMode="normal",this._projTransform=null,this._outerBlend=!1,this._warnedBlendModes=new Set,this._renderer=e}resolutionChange(e){this.activeResolution=e}init(){const e=this._renderer.background.alpha<1;if(this.rootContext=this._renderer.canvas.getContext("2d",{alpha:e}),this.activeContext=this.rootContext,this.activeResolution=this._renderer.resolution,!this.rootContext.imageSmoothingEnabled){const t=this.rootContext;t.webkitImageSmoothingEnabled?this.smoothProperty="webkitImageSmoothingEnabled":t.mozImageSmoothingEnabled?this.smoothProperty="mozImageSmoothingEnabled":t.oImageSmoothingEnabled?this.smoothProperty="oImageSmoothingEnabled":t.msImageSmoothingEnabled&&(this.smoothProperty="msImageSmoothingEnabled")}}setContextTransform(e,t,a,s){const o=s?A.IDENTITY:this._renderer.globalUniforms.globalUniformData?.worldTransformMatrix||A.IDENTITY;let r=lt;r.copyFrom(o),r.append(e);const l=this._projTransform,i=this.activeResolution;if(a=a||i,l){const d=A.shared;d.copyFrom(r),d.prepend(l),r=d}t?this.activeContext.setTransform(r.a*a,r.b*a,r.c*a,r.d*a,r.tx*i|0,r.ty*i|0):this.activeContext.setTransform(r.a*a,r.b*a,r.c*a,r.d*a,r.tx*i,r.ty*i)}clear(e,t){const a=this.activeContext,s=this._renderer;if(a.clearRect(0,0,s.width,s.height),e){const o=be.shared.setValue(e);a.globalAlpha=t??o.alpha,a.fillStyle=o.toHex(),a.fillRect(0,0,s.width,s.height),a.globalAlpha=1}}setBlendMode(e){if(this._activeBlendMode===e)return;this._activeBlendMode=e,this._outerBlend=!1;const t=this.blendModes[e];if(!t){this._warnedBlendModes.has(e)||(console.warn(`CanvasRenderer: blend mode "${e}" is not supported in Canvas2D; falling back to "source-over".`),this._warnedBlendModes.add(e)),this.activeContext.globalCompositeOperation="source-over";return}this.activeContext.globalCompositeOperation=t}destroy(){this.rootContext=null,this.activeContext=null,this._warnedBlendModes.clear()}}Ie.extension={type:[_.CanvasSystem],name:"canvasContext"};class Be{constructor(){this.maxTextures=16,this.maxBatchableTextures=16,this.maxUniformBindings=0}init(){}}Be.extension={type:[_.CanvasSystem],name:"limits"};const ht="#808080",z=new A,dt=new A,pt=new A,le=new A;function ut(n,e,t){n.beginPath();for(let a=0;a<t.length;a+=3){const s=t[a]*2,o=t[a+1]*2,r=t[a+2]*2;n.moveTo(e[s],e[s+1]),n.lineTo(e[o],e[o+1]),n.lineTo(e[r],e[r+1]),n.closePath()}n.fill()}function mt(n){return`#${(n&16777215).toString(16).padStart(6,"0")}`}function ft(n,e,t,a,s,o){o=Math.max(0,Math.min(o,Math.min(a,s)/2)),n.moveTo(e+o,t),n.lineTo(e+a-o,t),n.quadraticCurveTo(e+a,t,e+a,t+o),n.lineTo(e+a,t+s-o),n.quadraticCurveTo(e+a,t+s,e+a-o,t+s),n.lineTo(e+o,t+s),n.quadraticCurveTo(e,t+s,e,t+s-o),n.lineTo(e,t+o),n.quadraticCurveTo(e,t,e+o,t)}function ee(n,e){switch(e.type){case"rectangle":{const t=e;n.rect(t.x,t.y,t.width,t.height);break}case"roundedRectangle":{const t=e;ft(n,t.x,t.y,t.width,t.height,t.radius);break}case"circle":{const t=e;n.arc(t.x,t.y,t.radius,0,Math.PI*2);break}case"ellipse":{const t=e;n.ellipse?n.ellipse(t.x,t.y,t.halfWidth,t.halfHeight,0,0,Math.PI*2):(n.save(),n.translate(t.x,t.y),n.scale(t.halfWidth,t.halfHeight),n.arc(0,0,1,0,Math.PI*2),n.restore());break}case"triangle":{const t=e;n.moveTo(t.x,t.y),n.lineTo(t.x2,t.y2),n.lineTo(t.x3,t.y3),n.closePath();break}default:{const t=e,a=t.points;if(!a?.length)break;n.moveTo(a[0],a[1]);for(let s=2;s<a.length;s+=2)n.lineTo(a[s],a[s+1]);t.closePath&&n.closePath();break}}}function gt(n,e){if(!e?.length)return!1;for(let t=0;t<e.length;t++){const a=e[t];if(!a?.shape)continue;const s=a.transform,o=s&&!s.isIdentity();o&&(n.save(),n.transform(s.a,s.b,s.c,s.d,s.tx,s.ty)),ee(n,a.shape),o&&n.restore()}return!0}function vt(n,e,t,a){const s=n.fill;if(s instanceof Ye){s.buildGradient();const r=s.texture;if(r){const l=C.getTintedPattern(r,e),i=t?le.copyFrom(t).scale(r.source.pixelWidth,r.source.pixelHeight):le.copyFrom(s.transform);return a&&!n.textureSpace&&i.append(a),C.applyPatternTransform(l,i),l}}if(s instanceof Ve){const r=C.getTintedPattern(s.texture,e);return C.applyPatternTransform(r,s.transform,!1),r}const o=n.texture;if(o&&o!==_e.WHITE){if(!o.source.resource)return ht;const r=C.getTintedPattern(o,e),l=t?le.copyFrom(t).scale(o.source.pixelWidth,o.source.pixelHeight):n.matrix;return C.applyPatternTransform(r,l),r}return mt(e)}class Ae{constructor(){this.shader=null}contextChange(e){}execute(e,t){const a=e.renderer,s=a.canvasContext,o=s.activeContext,r=t.groupTransform,l=a.globalUniforms.globalUniformData?.worldColor??4294967295,i=t.groupColorAlpha,d=(l>>>24&255)/255,h=(i>>>24&255)/255,v=a.filter?.alphaMultiplier??1,y=d*h*v;if(y<=0)return;const H=l&16777215,W=i&16777215,F=Te(Z(W,H)),S=a._roundPixels|t._roundPixels;o.save(),s.setContextTransform(r,S===1),s.setBlendMode(t.groupBlendMode);const G=t.context.instructions;for(let P=0;P<G.length;P++){const g=G[P];if(g.action==="texture"){const u=g.data,m=u.image,f=m?C.getCanvasSource(m):null;if(!f)continue;const D=u.alpha*y;if(D<=0)continue;const j=Z(u.style,F);o.globalAlpha=D;let b=f;j!==16777215&&(b=C.getTintedCanvas({texture:m},j));const E=m.frame,x=m.source._resolution??m.source.resolution??1;let w=E.x*x,R=E.y*x;const $=E.width*x,U=E.height*x;b!==f&&(w=0,R=0);const B=u.transform,T=B&&!B.isIdentity(),c=m.rotate;T||c?(z.copyFrom(r),T&&z.append(B),c&&Ce.matrixAppendRotationInv(z,c,u.dx,u.dy,u.dw,u.dh),s.setContextTransform(z,S===1)):s.setContextTransform(r,S===1),o.drawImage(b,w,R,b===f?$:b.width,b===f?U:b.height,c?0:u.dx,c?0:u.dy,u.dw,u.dh),(T||c)&&s.setContextTransform(r,S===1);continue}const M=g.data,K=M?.path?.shapePath;if(!K?.shapePrimitives?.length)continue;const k=M.style,q=Z(k.color,F),I=k.alpha*y;if(I<=0)continue;const V=g.action==="stroke";if(o.globalAlpha=I,V){const u=k;o.lineWidth=u.width,o.lineCap=u.cap,o.lineJoin=u.join,o.miterLimit=u.miterLimit}const O=K.shapePrimitives;if(!V&&M.hole?.shapePath?.shapePrimitives?.length){const u=O[O.length-1];u.holes=M.hole.shapePath.shapePrimitives}for(let u=0;u<O.length;u++){const m=O[u];if(!m?.shape)continue;const f=m.transform,D=f&&!f.isIdentity(),j=k.texture&&k.texture!==_e.WHITE,b=k.textureSpace==="global"?f:null,E=j?Ne(dt,k,m.shape,b):null,x=D?pt.copyFrom(r).append(f):r,w=vt(k,q,E,x);if(D&&(o.save(),o.transform(f.a,f.b,f.c,f.d,f.tx,f.ty)),V){const R=k;if(R.alignment!==.5&&!R.pixelLine){const U=[],B=[],T=[];if(Pe[m.shape.type]?.build(m.shape,U)){const se=m.shape.closePath??!0;ke(U,R,!1,se,B,T),o.fillStyle=w,ut(o,B,T)}else o.strokeStyle=w,o.beginPath(),ee(o,m.shape),o.stroke()}else o.strokeStyle=w,o.beginPath(),ee(o,m.shape),o.stroke()}else o.fillStyle=w,o.beginPath(),ee(o,m.shape),gt(o,m.holes)?o.fill("evenodd"):o.fill();D&&o.restore()}}o.restore()}destroy(){this.shader=null}}Ae.extension={type:[_.CanvasPipesAdaptor],name:"graphics"};class yt{init(e,t){this._renderer=e,this._renderTargetSystem=t}initGpuRenderTarget(e){const t=e.colorTexture,{canvas:a,context:s}=this._ensureCanvas(t);return{canvas:a,context:s,width:a.width,height:a.height}}resizeGpuRenderTarget(e){const t=e.colorTexture,{canvas:a}=this._ensureCanvas(t);a.width=e.pixelWidth,a.height=e.pixelHeight}startRenderPass(e,t,a,s){const o=this._renderTargetSystem.getGpuRenderTarget(e);this._renderer.canvasContext.activeContext=o.context,this._renderer.canvasContext.activeResolution=e.resolution,t&&this.clear(e,t,a,s)}clear(e,t,a,s){const r=this._renderTargetSystem.getGpuRenderTarget(e).context,l=s||{x:0,y:0,width:e.pixelWidth,height:e.pixelHeight};if(r.setTransform(1,0,0,1,0,0),r.clearRect(l.x,l.y,l.width,l.height),a){const i=be.shared.setValue(a);i.alpha>0&&(r.globalAlpha=i.alpha,r.fillStyle=i.toHex(),r.fillRect(l.x,l.y,l.width,l.height),r.globalAlpha=1)}}finishRenderPass(){}copyToTexture(e,t,a,s,o){const l=this._renderTargetSystem.getGpuRenderTarget(e).canvas,i=t.source,{context:d}=this._ensureCanvas(i),h=o?.x??0,v=o?.y??0;return d.drawImage(l,a.x,a.y,s.width,s.height,h,v,s.width,s.height),i.update(),t}destroyGpuRenderTarget(e){}_ensureCanvas(e){let t=e.resource;(!t||!$e.test(t))&&(t=Se.get().createCanvas(e.pixelWidth,e.pixelHeight),e.resource=t),(t.width!==e.pixelWidth||t.height!==e.pixelHeight)&&(t.width=e.pixelWidth,t.height=e.pixelHeight);const a=t.getContext("2d");return{canvas:t,context:a}}}class He extends Ke{constructor(e){super(e),this.adaptor=new yt,this.adaptor.init(e,this)}}He.extension={type:[_.CanvasSystem],name:"renderTarget"};class Ge{constructor(e){}init(){}initSource(e){}generateCanvas(e){const t=Se.get().createCanvas(),a=t.getContext("2d"),s=C.getCanvasSource(e);if(!s)return t;const o=e.frame,r=e.source._resolution??e.source.resolution??1,l=o.x*r,i=o.y*r,d=o.width*r,h=o.height*r;return t.width=Math.ceil(d),t.height=Math.ceil(h),a.drawImage(s,l,i,d,h,0,0,d,h),t}getPixels(e){const t=this.generateCanvas(e);return{pixels:t.getContext("2d",{willReadFrequently:!0}).getImageData(0,0,t.width,t.height).data,width:t.width,height:t.height}}destroy(){}}Ge.extension={type:[_.CanvasSystem],name:"texture"};const xt=[...Qe,Ie,Be,Ge,He],Ct=[ze,Ze,et,tt,st,Re,Me,nt],Tt=[at,Ae],De=[],Ee=[],We=[];te.handleByNamedList(_.CanvasSystem,De);te.handleByNamedList(_.CanvasPipes,Ee);te.handleByNamedList(_.CanvasPipesAdaptor,We);te.add(...xt,...Ct,...Tt);class Gt extends Xe{constructor(){const e={name:"canvas",type:Je.CANVAS,systems:De,renderPipes:Ee,renderPipeAdaptors:We};super(e)}}export{Gt as CanvasRenderer};
|
|
1
|
+
import{f as C,h as Ce,i as Te,m as Z,M as A,j as _,k as Le,w as Oe,s as Pe,l as ke,n as je,C as be,T as _e,o as Ne,F as Ye,p as Ve,q as $e,D as Se,A as Xe,R as Je,r as te}from"./RelationshipGalaxyCanvas-ioRNObb5.js";import{R as Ke,S as Qe,B as ze,a as Ze,b as et,c as tt,A as st,C as nt}from"./RenderTargetSystem-fJ7D7Chv.js";import"./vendor-snapdom-XnBoh1gd.js";import"./index-BWtNqcYK.js";import"./vendor-reka-ui-Cta6JPvN.js";import"./vendor-nuxt-ui-CS1uxE9C.js";import"./index-CzDG8LVr.js";import"./LoadingState.vue_vue_type_script_setup_true_lang-DACMroOe.js";import"./people-page-header-BdKM1qhX.js";import"./relationship-galaxy-viewport-Cwfa51ER.js";import"./Filter-DNb5VErW.js";const he=class L{static _getPatternRepeat(e,t){const a=e&&e!=="clamp-to-edge",s=t&&t!=="clamp-to-edge";return a&&s?"repeat":a?"repeat-x":s?"repeat-y":"no-repeat"}start(e,t,a){}execute(e,t){const a=t.elements;if(!a||!a.length)return;const s=e.renderer,o=s.canvasContext,r=o.activeContext;for(let l=0;l<a.length;l++){const i=a[l];if(!i.packAsQuad)continue;const d=i,h=d.texture,v=h?C.getCanvasSource(h):null;if(!v)continue;const y=h.source.style,H=o.smoothProperty,W=y.scaleMode!=="nearest";r[H]!==W&&(r[H]=W),o.setBlendMode(t.blendMode);const F=s.globalUniforms.globalUniformData?.worldColor??4294967295,S=d.color,G=(F>>>24&255)/255,P=(S>>>24&255)/255,g=s.filter?.alphaMultiplier??1,M=G*P*g;if(M<=0)continue;r.globalAlpha=M;const K=F&16777215,k=S&16777215,q=Te(Z(k,K)),I=h.frame,V=y.addressModeU??y.addressMode,O=y.addressModeV??y.addressMode,u=L._getPatternRepeat(V,O),m=h.source._resolution??h.source.resolution??1,f=d.renderable?.renderGroup?.isCachedAsTexture,D=I.x*m,j=I.y*m,b=I.width*m,E=I.height*m,x=d.bounds,w=s.renderTarget.renderTarget.isRoot,R=x.minX,$=x.minY,U=x.maxX-x.minX,B=x.maxY-x.minY,T=h.rotate,c=h.uvs,se=Math.min(c.x0,c.x1,c.x2,c.x3,c.y0,c.y1,c.y2,c.y3),Fe=Math.max(c.x0,c.x1,c.x2,c.x3,c.y0,c.y1,c.y2,c.y3),de=u!=="no-repeat"&&(se<0||Fe>1),Q=T&&!(!de&&(q!==16777215||T));Q?(L._tempPatternMatrix.copyFrom(d.transform),Ce.matrixAppendRotationInv(L._tempPatternMatrix,T,R,$,U,B),o.setContextTransform(L._tempPatternMatrix,d.roundPixels===1,void 0,f&&w)):o.setContextTransform(d.transform,d.roundPixels===1,void 0,f&&w);const ne=U,ae=B;let X=Q?0:R,J=Q?0:$;if(!Q&&d.roundPixels===1&&(X|=0,J|=0),de){let oe=v;const N=q!==16777215&&!T,Y=I.width<=h.source.width&&I.height<=h.source.height;N&&Y&&(oe=C.getTintedCanvas({texture:h},q));const re=r.createPattern(oe,u);if(!re)continue;const pe=ne,ue=ae;if(pe===0||ue===0)continue;const me=1/pe,fe=1/ue,ge=(c.x1-c.x0)*me,ve=(c.y1-c.y0)*me,ye=(c.x3-c.x0)*fe,xe=(c.y3-c.y0)*fe,qe=c.x0-ge*X-ye*J,Ue=c.y0-ve*X-xe*J,ie=h.source.pixelWidth,ce=h.source.pixelHeight;L._tempPatternMatrix.set(ge*ie,ve*ce,ye*ie,xe*ce,qe*ie,Ue*ce),C.applyPatternTransform(re,L._tempPatternMatrix),r.fillStyle=re,r.fillRect(X,J,ne,ae)}else{const N=q!==16777215||T?C.getTintedCanvas({texture:h},q):v,Y=N!==v;r.drawImage(N,Y?0:D,Y?0:j,Y?N.width:b,Y?N.height:E,X,J,ne,ae)}}}};he._tempPatternMatrix=new A;he.extension={type:[_.CanvasPipesAdaptor],name:"batch"};let at=he;class Me{constructor(e){this._colorStack=[],this._colorStackIndex=0,this._currentColor=0,this._renderer=e}buildStart(){this._colorStack[0]=15,this._colorStackIndex=1,this._currentColor=15}push(e,t,a){this._renderer.renderPipes.batch.break(a);const s=this._colorStack;s[this._colorStackIndex]=s[this._colorStackIndex-1]&e.mask;const o=this._colorStack[this._colorStackIndex];o!==this._currentColor&&(this._currentColor=o,a.add({renderPipeId:"colorMask",colorMask:o,canBundle:!1})),this._colorStackIndex++}pop(e,t,a){this._renderer.renderPipes.batch.break(a);const s=this._colorStack;this._colorStackIndex--;const o=s[this._colorStackIndex-1];o!==this._currentColor&&(this._currentColor=o,a.add({renderPipeId:"colorMask",colorMask:o,canBundle:!1}))}execute(e){}destroy(){this._renderer=null,this._colorStack=null}}Me.extension={type:[_.CanvasPipes],name:"colorMask"};function ot(n,e,t,a,s,o){o=Math.max(0,Math.min(o,Math.min(a,s)/2)),n.moveTo(e+o,t),n.lineTo(e+a-o,t),n.quadraticCurveTo(e+a,t,e+a,t+o),n.lineTo(e+a,t+s-o),n.quadraticCurveTo(e+a,t+s,e+a-o,t+s),n.lineTo(e+o,t+s),n.quadraticCurveTo(e,t+s,e,t+s-o),n.lineTo(e,t+o),n.quadraticCurveTo(e,t,e+o,t)}function we(n,e){switch(e.type){case"rectangle":{const t=e;n.rect(t.x,t.y,t.width,t.height);break}case"roundedRectangle":{const t=e;ot(n,t.x,t.y,t.width,t.height,t.radius);break}case"circle":{const t=e;n.moveTo(t.x+t.radius,t.y),n.arc(t.x,t.y,t.radius,0,Math.PI*2);break}case"ellipse":{const t=e;n.ellipse?(n.moveTo(t.x+t.halfWidth,t.y),n.ellipse(t.x,t.y,t.halfWidth,t.halfHeight,0,0,Math.PI*2)):(n.save(),n.translate(t.x,t.y),n.scale(t.halfWidth,t.halfHeight),n.moveTo(1,0),n.arc(0,0,1,0,Math.PI*2),n.restore());break}case"triangle":{const t=e;n.moveTo(t.x,t.y),n.lineTo(t.x2,t.y2),n.lineTo(t.x3,t.y3),n.closePath();break}default:{const t=e,a=t.points;if(!a?.length)break;n.moveTo(a[0],a[1]);for(let s=2;s<a.length;s+=2)n.lineTo(a[s],a[s+1]);t.closePath&&n.closePath();break}}}function rt(n,e,t){const a=[],s=[],o=[];if(!Pe[e.type]?.build(e,a))return!1;const l=e.closePath??!0;ke(a,t,!1,l,s,o);for(let i=0;i<o.length;i+=3){const d=o[i]*2,h=o[i+1]*2,v=o[i+2]*2;n.moveTo(s[d],s[d+1]),n.lineTo(s[h],s[h+1]),n.lineTo(s[v],s[v+1]),n.closePath()}return!0}function it(n,e){if(!e?.length)return!1;for(let t=0;t<e.length;t++){const a=e[t];if(!a?.shape)continue;const s=a.transform,o=s&&!s.isIdentity();o&&(n.save(),n.transform(s.a,s.b,s.c,s.d,s.tx,s.ty)),we(n,a.shape),o&&n.restore()}return!0}class Re{constructor(e){this._warnedMaskTypes=new Set,this._canvasMaskStack=[],this._renderer=e}push(e,t,a){this._renderer.renderPipes.batch.break(a),a.add({renderPipeId:"stencilMask",action:"pushMaskBegin",mask:e,inverse:t._maskOptions.inverse,canBundle:!1})}pop(e,t,a){this._renderer.renderPipes.batch.break(a),a.add({renderPipeId:"stencilMask",action:"popMaskEnd",mask:e,inverse:t._maskOptions.inverse,canBundle:!1})}execute(e){if(e.action!=="pushMaskBegin"&&e.action!=="popMaskEnd")return;const t=this._renderer,a=t.canvasContext,s=a?.activeContext;if(!s)return;if(e.action==="popMaskEnd"){this._canvasMaskStack.pop()&&s.restore();return}e.inverse&&this._warnOnce("inverse","CanvasRenderer: inverse masks are not supported on Canvas2D; ignoring inverse flag.");const o=e.mask.mask;if(!(o instanceof Le)){this._warnOnce("nonGraphics","CanvasRenderer: only Graphics masks are supported in Canvas2D; skipping mask."),this._canvasMaskStack.push(!1);return}const r=o,l=r.context?.instructions;if(!l?.length){this._canvasMaskStack.push(!1);return}s.save(),a.setContextTransform(r.groupTransform,(t._roundPixels|r._roundPixels)===1),s.beginPath();let i=!1,d=!1;for(let h=0;h<l.length;h++){const v=l[h],y=v.action;if(y!=="fill"&&y!=="stroke")continue;const H=v.data,W=H?.path?.shapePath;if(!W?.shapePrimitives?.length)continue;const F=y==="stroke",S=W.shapePrimitives;for(let G=0;G<S.length;G++){const P=S[G];if(!P?.shape)continue;const g=P.transform,M=g&&!g.isIdentity();M&&(s.save(),s.transform(g.a,g.b,g.c,g.d,g.tx,g.ty)),F&&H.style?i=rt(s,P.shape,H.style)||i:(we(s,P.shape),d=it(s,P.holes)||d,i=!0),M&&s.restore()}}if(!i){s.restore(),this._canvasMaskStack.push(!1);return}d?s.clip("evenodd"):s.clip(),this._canvasMaskStack.push(!0)}destroy(){this._renderer=null,this._warnedMaskTypes=null,this._canvasMaskStack=null}_warnOnce(e,t){this._warnedMaskTypes.has(e)||(this._warnedMaskTypes.add(e),Oe(t))}}Re.extension={type:[_.CanvasPipes],name:"stencilMask"};const p="source-over";function ct(){const n=je(),e=Object.create(null);return e.inherit=p,e.none=p,e.normal="source-over",e.add="lighter",e.multiply=n?"multiply":p,e.screen=n?"screen":p,e.overlay=n?"overlay":p,e.darken=n?"darken":p,e.lighten=n?"lighten":p,e["color-dodge"]=n?"color-dodge":p,e["color-burn"]=n?"color-burn":p,e["hard-light"]=n?"hard-light":p,e["soft-light"]=n?"soft-light":p,e.difference=n?"difference":p,e.exclusion=n?"exclusion":p,e.saturation=n?"saturation":p,e.color=n?"color":p,e.luminosity=n?"luminosity":p,e["linear-burn"]=n?"color-burn":p,e["linear-dodge"]=n?"color-dodge":p,e["linear-light"]=n?"hard-light":p,e["pin-light"]=n?"hard-light":p,e["vivid-light"]=n?"hard-light":p,e["hard-mix"]=p,e.negation=n?"difference":p,e["normal-npm"]=e.normal,e["add-npm"]=e.add,e["screen-npm"]=e.screen,e.erase="destination-out",e.subtract=p,e.divide=p,e.min=p,e.max=p,e}const lt=new A;class Ie{constructor(e){this.activeResolution=1,this.smoothProperty="imageSmoothingEnabled",this.blendModes=ct(),this._activeBlendMode="normal",this._projTransform=null,this._outerBlend=!1,this._warnedBlendModes=new Set,this._renderer=e}resolutionChange(e){this.activeResolution=e}init(){const e=this._renderer.background.alpha<1;if(this.rootContext=this._renderer.canvas.getContext("2d",{alpha:e}),this.activeContext=this.rootContext,this.activeResolution=this._renderer.resolution,!this.rootContext.imageSmoothingEnabled){const t=this.rootContext;t.webkitImageSmoothingEnabled?this.smoothProperty="webkitImageSmoothingEnabled":t.mozImageSmoothingEnabled?this.smoothProperty="mozImageSmoothingEnabled":t.oImageSmoothingEnabled?this.smoothProperty="oImageSmoothingEnabled":t.msImageSmoothingEnabled&&(this.smoothProperty="msImageSmoothingEnabled")}}setContextTransform(e,t,a,s){const o=s?A.IDENTITY:this._renderer.globalUniforms.globalUniformData?.worldTransformMatrix||A.IDENTITY;let r=lt;r.copyFrom(o),r.append(e);const l=this._projTransform,i=this.activeResolution;if(a=a||i,l){const d=A.shared;d.copyFrom(r),d.prepend(l),r=d}t?this.activeContext.setTransform(r.a*a,r.b*a,r.c*a,r.d*a,r.tx*i|0,r.ty*i|0):this.activeContext.setTransform(r.a*a,r.b*a,r.c*a,r.d*a,r.tx*i,r.ty*i)}clear(e,t){const a=this.activeContext,s=this._renderer;if(a.clearRect(0,0,s.width,s.height),e){const o=be.shared.setValue(e);a.globalAlpha=t??o.alpha,a.fillStyle=o.toHex(),a.fillRect(0,0,s.width,s.height),a.globalAlpha=1}}setBlendMode(e){if(this._activeBlendMode===e)return;this._activeBlendMode=e,this._outerBlend=!1;const t=this.blendModes[e];if(!t){this._warnedBlendModes.has(e)||(console.warn(`CanvasRenderer: blend mode "${e}" is not supported in Canvas2D; falling back to "source-over".`),this._warnedBlendModes.add(e)),this.activeContext.globalCompositeOperation="source-over";return}this.activeContext.globalCompositeOperation=t}destroy(){this.rootContext=null,this.activeContext=null,this._warnedBlendModes.clear()}}Ie.extension={type:[_.CanvasSystem],name:"canvasContext"};class Be{constructor(){this.maxTextures=16,this.maxBatchableTextures=16,this.maxUniformBindings=0}init(){}}Be.extension={type:[_.CanvasSystem],name:"limits"};const ht="#808080",z=new A,dt=new A,pt=new A,le=new A;function ut(n,e,t){n.beginPath();for(let a=0;a<t.length;a+=3){const s=t[a]*2,o=t[a+1]*2,r=t[a+2]*2;n.moveTo(e[s],e[s+1]),n.lineTo(e[o],e[o+1]),n.lineTo(e[r],e[r+1]),n.closePath()}n.fill()}function mt(n){return`#${(n&16777215).toString(16).padStart(6,"0")}`}function ft(n,e,t,a,s,o){o=Math.max(0,Math.min(o,Math.min(a,s)/2)),n.moveTo(e+o,t),n.lineTo(e+a-o,t),n.quadraticCurveTo(e+a,t,e+a,t+o),n.lineTo(e+a,t+s-o),n.quadraticCurveTo(e+a,t+s,e+a-o,t+s),n.lineTo(e+o,t+s),n.quadraticCurveTo(e,t+s,e,t+s-o),n.lineTo(e,t+o),n.quadraticCurveTo(e,t,e+o,t)}function ee(n,e){switch(e.type){case"rectangle":{const t=e;n.rect(t.x,t.y,t.width,t.height);break}case"roundedRectangle":{const t=e;ft(n,t.x,t.y,t.width,t.height,t.radius);break}case"circle":{const t=e;n.arc(t.x,t.y,t.radius,0,Math.PI*2);break}case"ellipse":{const t=e;n.ellipse?n.ellipse(t.x,t.y,t.halfWidth,t.halfHeight,0,0,Math.PI*2):(n.save(),n.translate(t.x,t.y),n.scale(t.halfWidth,t.halfHeight),n.arc(0,0,1,0,Math.PI*2),n.restore());break}case"triangle":{const t=e;n.moveTo(t.x,t.y),n.lineTo(t.x2,t.y2),n.lineTo(t.x3,t.y3),n.closePath();break}default:{const t=e,a=t.points;if(!a?.length)break;n.moveTo(a[0],a[1]);for(let s=2;s<a.length;s+=2)n.lineTo(a[s],a[s+1]);t.closePath&&n.closePath();break}}}function gt(n,e){if(!e?.length)return!1;for(let t=0;t<e.length;t++){const a=e[t];if(!a?.shape)continue;const s=a.transform,o=s&&!s.isIdentity();o&&(n.save(),n.transform(s.a,s.b,s.c,s.d,s.tx,s.ty)),ee(n,a.shape),o&&n.restore()}return!0}function vt(n,e,t,a){const s=n.fill;if(s instanceof Ye){s.buildGradient();const r=s.texture;if(r){const l=C.getTintedPattern(r,e),i=t?le.copyFrom(t).scale(r.source.pixelWidth,r.source.pixelHeight):le.copyFrom(s.transform);return a&&!n.textureSpace&&i.append(a),C.applyPatternTransform(l,i),l}}if(s instanceof Ve){const r=C.getTintedPattern(s.texture,e);return C.applyPatternTransform(r,s.transform,!1),r}const o=n.texture;if(o&&o!==_e.WHITE){if(!o.source.resource)return ht;const r=C.getTintedPattern(o,e),l=t?le.copyFrom(t).scale(o.source.pixelWidth,o.source.pixelHeight):n.matrix;return C.applyPatternTransform(r,l),r}return mt(e)}class Ae{constructor(){this.shader=null}contextChange(e){}execute(e,t){const a=e.renderer,s=a.canvasContext,o=s.activeContext,r=t.groupTransform,l=a.globalUniforms.globalUniformData?.worldColor??4294967295,i=t.groupColorAlpha,d=(l>>>24&255)/255,h=(i>>>24&255)/255,v=a.filter?.alphaMultiplier??1,y=d*h*v;if(y<=0)return;const H=l&16777215,W=i&16777215,F=Te(Z(W,H)),S=a._roundPixels|t._roundPixels;o.save(),s.setContextTransform(r,S===1),s.setBlendMode(t.groupBlendMode);const G=t.context.instructions;for(let P=0;P<G.length;P++){const g=G[P];if(g.action==="texture"){const u=g.data,m=u.image,f=m?C.getCanvasSource(m):null;if(!f)continue;const D=u.alpha*y;if(D<=0)continue;const j=Z(u.style,F);o.globalAlpha=D;let b=f;j!==16777215&&(b=C.getTintedCanvas({texture:m},j));const E=m.frame,x=m.source._resolution??m.source.resolution??1;let w=E.x*x,R=E.y*x;const $=E.width*x,U=E.height*x;b!==f&&(w=0,R=0);const B=u.transform,T=B&&!B.isIdentity(),c=m.rotate;T||c?(z.copyFrom(r),T&&z.append(B),c&&Ce.matrixAppendRotationInv(z,c,u.dx,u.dy,u.dw,u.dh),s.setContextTransform(z,S===1)):s.setContextTransform(r,S===1),o.drawImage(b,w,R,b===f?$:b.width,b===f?U:b.height,c?0:u.dx,c?0:u.dy,u.dw,u.dh),(T||c)&&s.setContextTransform(r,S===1);continue}const M=g.data,K=M?.path?.shapePath;if(!K?.shapePrimitives?.length)continue;const k=M.style,q=Z(k.color,F),I=k.alpha*y;if(I<=0)continue;const V=g.action==="stroke";if(o.globalAlpha=I,V){const u=k;o.lineWidth=u.width,o.lineCap=u.cap,o.lineJoin=u.join,o.miterLimit=u.miterLimit}const O=K.shapePrimitives;if(!V&&M.hole?.shapePath?.shapePrimitives?.length){const u=O[O.length-1];u.holes=M.hole.shapePath.shapePrimitives}for(let u=0;u<O.length;u++){const m=O[u];if(!m?.shape)continue;const f=m.transform,D=f&&!f.isIdentity(),j=k.texture&&k.texture!==_e.WHITE,b=k.textureSpace==="global"?f:null,E=j?Ne(dt,k,m.shape,b):null,x=D?pt.copyFrom(r).append(f):r,w=vt(k,q,E,x);if(D&&(o.save(),o.transform(f.a,f.b,f.c,f.d,f.tx,f.ty)),V){const R=k;if(R.alignment!==.5&&!R.pixelLine){const U=[],B=[],T=[];if(Pe[m.shape.type]?.build(m.shape,U)){const se=m.shape.closePath??!0;ke(U,R,!1,se,B,T),o.fillStyle=w,ut(o,B,T)}else o.strokeStyle=w,o.beginPath(),ee(o,m.shape),o.stroke()}else o.strokeStyle=w,o.beginPath(),ee(o,m.shape),o.stroke()}else o.fillStyle=w,o.beginPath(),ee(o,m.shape),gt(o,m.holes)?o.fill("evenodd"):o.fill();D&&o.restore()}}o.restore()}destroy(){this.shader=null}}Ae.extension={type:[_.CanvasPipesAdaptor],name:"graphics"};class yt{init(e,t){this._renderer=e,this._renderTargetSystem=t}initGpuRenderTarget(e){const t=e.colorTexture,{canvas:a,context:s}=this._ensureCanvas(t);return{canvas:a,context:s,width:a.width,height:a.height}}resizeGpuRenderTarget(e){const t=e.colorTexture,{canvas:a}=this._ensureCanvas(t);a.width=e.pixelWidth,a.height=e.pixelHeight}startRenderPass(e,t,a,s){const o=this._renderTargetSystem.getGpuRenderTarget(e);this._renderer.canvasContext.activeContext=o.context,this._renderer.canvasContext.activeResolution=e.resolution,t&&this.clear(e,t,a,s)}clear(e,t,a,s){const r=this._renderTargetSystem.getGpuRenderTarget(e).context,l=s||{x:0,y:0,width:e.pixelWidth,height:e.pixelHeight};if(r.setTransform(1,0,0,1,0,0),r.clearRect(l.x,l.y,l.width,l.height),a){const i=be.shared.setValue(a);i.alpha>0&&(r.globalAlpha=i.alpha,r.fillStyle=i.toHex(),r.fillRect(l.x,l.y,l.width,l.height),r.globalAlpha=1)}}finishRenderPass(){}copyToTexture(e,t,a,s,o){const l=this._renderTargetSystem.getGpuRenderTarget(e).canvas,i=t.source,{context:d}=this._ensureCanvas(i),h=o?.x??0,v=o?.y??0;return d.drawImage(l,a.x,a.y,s.width,s.height,h,v,s.width,s.height),i.update(),t}destroyGpuRenderTarget(e){}_ensureCanvas(e){let t=e.resource;(!t||!$e.test(t))&&(t=Se.get().createCanvas(e.pixelWidth,e.pixelHeight),e.resource=t),(t.width!==e.pixelWidth||t.height!==e.pixelHeight)&&(t.width=e.pixelWidth,t.height=e.pixelHeight);const a=t.getContext("2d");return{canvas:t,context:a}}}class He extends Ke{constructor(e){super(e),this.adaptor=new yt,this.adaptor.init(e,this)}}He.extension={type:[_.CanvasSystem],name:"renderTarget"};class Ge{constructor(e){}init(){}initSource(e){}generateCanvas(e){const t=Se.get().createCanvas(),a=t.getContext("2d"),s=C.getCanvasSource(e);if(!s)return t;const o=e.frame,r=e.source._resolution??e.source.resolution??1,l=o.x*r,i=o.y*r,d=o.width*r,h=o.height*r;return t.width=Math.ceil(d),t.height=Math.ceil(h),a.drawImage(s,l,i,d,h,0,0,d,h),t}getPixels(e){const t=this.generateCanvas(e);return{pixels:t.getContext("2d",{willReadFrequently:!0}).getImageData(0,0,t.width,t.height).data,width:t.width,height:t.height}}destroy(){}}Ge.extension={type:[_.CanvasSystem],name:"texture"};const xt=[...Qe,Ie,Be,Ge,He],Ct=[ze,Ze,et,tt,st,Re,Me,nt],Tt=[at,Ae],De=[],Ee=[],We=[];te.handleByNamedList(_.CanvasSystem,De);te.handleByNamedList(_.CanvasPipes,Ee);te.handleByNamedList(_.CanvasPipesAdaptor,We);te.add(...xt,...Ct,...Tt);class Gt extends Xe{constructor(){const e={name:"canvas",type:Je.CANVAS,systems:De,renderPipes:Ee,renderPipeAdaptors:We};super(e)}}export{Gt as CanvasRenderer};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{S as n,a as u,G as o,b as f}from"./RelationshipGalaxyCanvas-
|
|
1
|
+
import{S as n,a as u,G as o,b as f}from"./RelationshipGalaxyCanvas-ioRNObb5.js";const s=class i extends n{constructor(e){e={...i.defaultOptions,...e},super(e),this.enabled=!0,this._state=u.for2d(),this.blendMode=e.blendMode,this.padding=e.padding,typeof e.antialias=="boolean"?this.antialias=e.antialias?"on":"off":this.antialias=e.antialias,this.resolution=e.resolution,this.blendRequired=e.blendRequired,this.clipToViewport=e.clipToViewport,this.addResource("uTexture",0,1),e.blendRequired&&this.addResource("uBackTexture",0,3)}apply(e,t,a,r){e.applyFilter(this,t,a,r)}get blendMode(){return this._state.blendMode}set blendMode(e){this._state.blendMode=e}static from(e){const{gpu:t,gl:a,...r}=e;let l,d;return t&&(l=o.from(t)),a&&(d=f.from(a)),new i({gpuProgram:l,glProgram:d,...r})}};s.defaultOptions={blendMode:"normal",resolution:1,padding:0,antialias:"off",blendRequired:!1,clipToViewport:!0};let b=s;export{b as F};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{d as O,g as A}from"./vendor-nuxt-ui-CS1uxE9C.js";import{u as j,T as I,n as G,o as H,q as P}from"./index-
|
|
1
|
+
import{d as O,g as A}from"./vendor-nuxt-ui-CS1uxE9C.js";import{u as j,T as I,n as G,o as H,q as P}from"./index-BWtNqcYK.js";import{p as z,J as U,w as F,G as T,P as M,a5 as a,T as p,u as k,L as v,bx as $,by as D,U as L,h as C,b as g,H as J,K as E,a0 as K,R as B,bp as Y}from"./vendor-reka-ui-Cta6JPvN.js";import"./vendor-snapdom-XnBoh1gd.js";const q={class:"space-y-4 p-4"},W={class:"mb-2 block text-sm font-medium text-gray-700 dark:text-gray-300"},X={key:0,class:"mt-2 flex items-center gap-2"},Q={class:"mb-2 block text-sm font-medium text-gray-700 dark:text-gray-300"},Z=z({__name:"ConditionPanel",props:{timeRange:{default:null},timeRangeModifiers:{},exportFormat:{default:"txt"},exportFormatModifiers:{}},emits:["update:timeRange","update:exportFormat"],setup(w){const{t:x}=j(),d=U(w,"timeRange"),h=U(w,"exportFormat"),i=C(()=>[{label:"TXT",value:"txt"},{label:"ChatLab JSON",value:"json"},{label:"Markdown",value:"markdown"}]),u=g("all"),c=g(""),l=g(""),b=[{id:"all",label:"analysis.filter.allTime"},{id:"today",label:"analysis.filter.today"},{id:"week",label:"analysis.filter.lastWeek"},{id:"month",label:"analysis.filter.lastMonth"},{id:"3months",label:"analysis.filter.last3Months"},{id:"year",label:"analysis.filter.lastYear"},{id:"custom",label:"analysis.filter.customTime"}],f=C(()=>b.map(e=>({label:x(e.label),value:e.id})));F(u,()=>{m()});function m(){const e=Math.floor(Date.now()/1e3),t=new Date;t.setHours(0,0,0,0);const n=Math.floor(t.getTime()/1e3);switch(u.value){case"all":d.value=null;break;case"today":d.value={start:n,end:e};break;case"week":d.value={start:e-10080*60,end:e};break;case"month":d.value={start:e-720*60*60,end:e};break;case"3months":d.value={start:e-2160*60*60,end:e};break;case"year":d.value={start:e-365*24*60*60,end:e};break;case"custom":if(c.value&&l.value){const _=new Date(c.value).getTime()/1e3,R=new Date(l.value).getTime()/1e3+86399;d.value={start:_,end:R}}break}}return(e,t)=>(T(),M("div",q,[a("div",null,[a("label",W,p(k(x)("analysis.filter.timeRange")),1),v(I,{modelValue:u.value,"onUpdate:modelValue":t[0]||(t[0]=n=>u.value=n),items:f.value,size:"sm"},null,8,["modelValue","items"]),u.value==="custom"?(T(),M("div",X,[$(a("input",{"onUpdate:modelValue":t[1]||(t[1]=n=>c.value=n),type:"date",class:"flex-1 rounded-md border border-gray-300 bg-white px-3 py-1.5 text-sm dark:border-gray-600 dark:bg-gray-800",onChange:m},null,544),[[D,c.value]]),t[4]||(t[4]=a("span",{class:"text-gray-500"},"~",-1)),$(a("input",{"onUpdate:modelValue":t[2]||(t[2]=n=>l.value=n),type:"date",class:"flex-1 rounded-md border border-gray-300 bg-white px-3 py-1.5 text-sm dark:border-gray-600 dark:bg-gray-800",onChange:m},null,544),[[D,l.value]])])):L("",!0)]),a("div",null,[a("label",Q,p(k(x)("analysis.messageExport.format")),1),v(I,{modelValue:h.value,"onUpdate:modelValue":t[3]||(t[3]=n=>h.value=n),items:i.value,size:"sm"},null,8,["modelValue","items"])])]))}}),ee={class:"flex flex-col overflow-hidden bg-white dark:bg-page-dark"},te={class:"flex items-center justify-between border-b border-gray-200 px-5 py-3 dark:border-gray-700"},ae={class:"text-lg font-semibold text-gray-900 dark:text-white"},se={class:"flex flex-col gap-3 border-t border-gray-200 px-5 py-4 dark:border-gray-700"},oe={key:0,class:"w-full"},le={class:"mb-1 flex items-center justify-between text-sm text-gray-600 dark:text-gray-400"},ne={class:"h-2 w-full overflow-hidden rounded-full bg-gray-200 dark:bg-gray-700"},re={class:"flex items-center justify-end gap-3"},N="chatlab-export-format",ce=z({__name:"MessageExportModal",props:{modelValue:{type:Boolean}},emits:["update:modelValue"],setup(w,{emit:x}){const d=w,h=x,{t:i}=j(),u=G(),c=H(),l=C({get:()=>d.modelValue,set:s=>h("update:modelValue",s)}),b=g(null),f=g(localStorage.getItem(N)||"txt");F(f,s=>localStorage.setItem(N,s));const m=g(!1),e=g(null);let t=null;function n(){t=P().onExportProgress(s=>{e.value={percentage:s.percentage,message:s.message},(s.stage==="done"||s.stage==="error")&&(e.value=null)})}function _(){t&&(t(),t=null),e.value=null}async function R(){const s=c.currentSessionId;if(!s)return;const y=c.currentSession?.name||"unknown";let S="";m.value=!0,e.value={percentage:0,message:i("analysis.filter.exportPreparing")},n();try{const o=Y(b.value),V=await P().exportFilterResultToFile({sessionId:s,sessionName:y,outputDir:S,format:f.value,timeFilter:o?{startTs:o.start,endTs:o.end}:void 0});V.success?(u.success(i("analysis.filter.exportSuccess"),{description:V.filePath}),l.value=!1):u.fail(i("analysis.filter.exportFailed"),{description:V.error||i("common.error.unknown")})}catch(o){console.error("Export failed:",o),u.fail(i("analysis.filter.exportFailed"),{description:String(o)})}finally{_(),m.value=!1}}return F(l,s=>{s||_()}),(s,r)=>{const y=O,S=A;return T(),J(S,{open:l.value,"onUpdate:open":r[4]||(r[4]=o=>l.value=o),ui:{content:"sm:max-w-md"}},{content:E(()=>[a("div",ee,[a("div",te,[a("h2",ae,p(k(i)("analysis.messageExport.title")),1),v(y,{variant:"ghost",icon:"i-heroicons-x-mark",size:"sm",onClick:r[0]||(r[0]=o=>l.value=!1)})]),v(Z,{"time-range":b.value,"onUpdate:timeRange":r[1]||(r[1]=o=>b.value=o),"export-format":f.value,"onUpdate:exportFormat":r[2]||(r[2]=o=>f.value=o)},null,8,["time-range","export-format"]),a("div",se,[m.value&&e.value?(T(),M("div",oe,[a("div",le,[a("span",null,p(e.value.message),1),a("span",null,p(e.value.percentage)+"%",1)]),a("div",ne,[a("div",{class:"h-full bg-primary-500 transition-all duration-300",style:K({width:`${e.value.percentage}%`})},null,4)])])):L("",!0),a("div",re,[v(y,{variant:"ghost",onClick:r[3]||(r[3]=o=>l.value=!1)},{default:E(()=>[B(p(k(i)("common.cancel")),1)]),_:1}),v(y,{color:"primary",icon:"i-heroicons-document-arrow-down",loading:m.value,disabled:m.value,onClick:R},{default:E(()=>[B(p(k(i)("common.export")),1)]),_:1},8,["loading","disabled"])])])])]),_:1},8,["open"])}}});export{ce as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as p}from"./vendor-nuxt-ui-CS1uxE9C.js";import{p as u,P as i,Q as a,a5 as s,L as f,U as n,T as l,O as d,G as r}from"./vendor-reka-ui-Cta6JPvN.js";import{m as x}from"./index-
|
|
1
|
+
import{_ as p}from"./vendor-nuxt-ui-CS1uxE9C.js";import{p as u,P as i,Q as a,a5 as s,L as f,U as n,T as l,O as d,G as r}from"./vendor-reka-ui-Cta6JPvN.js";import{m as x}from"./index-BWtNqcYK.js";const v={class:"flex items-center justify-between"},g=["src","alt"],y={class:"group/title flex items-baseline gap-2"},b={class:"header-actions relative z-[40] flex items-center gap-2"},h=u({__name:"PageHeader",props:{title:{},description:{},icon:{},iconClass:{},avatar:{},size:{default:"default"},bordered:{type:Boolean,default:!0}},setup(e){const t=e;return(c,o)=>{const m=p;return r(),i("div",{class:a(["relative px-6",[t.bordered?"border-b border-gray-200/50 dark:border-gray-800/50":"",t.size==="compact"?"pb-1.5":"pb-2"]])},[o[1]||(o[1]=s("div",{class:"titlebar-drag-cover"},null,-1)),s("div",v,[s("div",{class:a(["flex items-center",t.size==="compact"?"gap-2.5":"gap-3"])},[e.avatar?(r(),i("img",{key:0,src:e.avatar,alt:e.title,class:a(["object-cover",t.size==="compact"?"h-6 w-6 rounded-md":"h-10 w-10 rounded-xl"])},null,10,g)):e.icon?(r(),i("div",{key:1,class:a(["flex items-center justify-center",[e.iconClass,t.size==="compact"?"h-6 w-6 rounded-md":"h-10 w-10 rounded-xl"]])},[f(m,{name:e.icon,class:a(["text-white",t.size==="compact"?"h-3 w-3":"h-5 w-5"])},null,8,["name","class"])],2)):n("",!0),s("div",y,[s("h1",{class:a(["font-semibold text-gray-900 dark:text-white",t.size==="compact"?"text-base":"text-lg"])},l(e.title),3),e.description?(r(),i("p",{key:0,class:a(["pointer-events-none whitespace-nowrap text-gray-500 opacity-0 transition-opacity duration-200 group-hover/title:opacity-100 dark:text-gray-400",t.size==="compact"?"text-[11px]":"text-xs"])},l(e.description),3)):n("",!0)])],2),o[0]||(o[0]=s("div",{class:"flex-1 self-stretch mx-4",style:{"-webkit-app-region":"drag"}},null,-1)),s("div",b,[d(c.$slots,"actions",{},void 0,!0)])]),d(c.$slots,"default",{},void 0,!0)],2)}}}),C=x(h,[["__scopeId","data-v-e4defd45"]]);export{C as P};
|