@ai-group/chat-sdk 0.4.2 → 0.5.0
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/cjs/components/XAiChatbot/styles.js +1 -0
- package/dist/cjs/components/XAiChatbot/styles.js.map +2 -2
- package/dist/cjs/components/XAiConversations/XAiConversations.stories.js +1 -1
- package/dist/cjs/components/XAiConversations/XAiConversations.stories.js.map +2 -2
- package/dist/cjs/components/XAiConversations/index.js +41 -15
- package/dist/cjs/components/XAiConversations/index.js.map +3 -3
- package/dist/cjs/components/XAiProvider/XAiProvider.stories.d.ts +2 -1
- package/dist/cjs/components/XAiProvider/XAiProvider.stories.js +88 -34
- package/dist/cjs/components/XAiProvider/XAiProvider.stories.js.map +3 -3
- package/dist/cjs/components/XAiProvider/index.js +27 -4
- package/dist/cjs/components/XAiProvider/index.js.map +2 -2
- package/dist/cjs/context/AiProviderContext.d.ts +4 -2
- package/dist/cjs/context/AiProviderContext.js.map +2 -2
- package/dist/cjs/hooks/useAgentGenerator.d.ts +14 -5
- package/dist/cjs/hooks/useAgentGenerator.js +143 -64
- package/dist/cjs/hooks/useAgentGenerator.js.map +3 -3
- package/dist/cjs/types/XAiChatbot.d.ts +2 -0
- package/dist/cjs/types/XAiChatbot.js.map +1 -1
- package/dist/cjs/types/XAiConversations.d.ts +14 -2
- package/dist/cjs/types/XAiConversations.js.map +1 -1
- package/dist/cjs/types/XAiProvider.d.ts +257 -13
- package/dist/cjs/types/XAiProvider.js.map +2 -2
- package/dist/cjs/utils/umdEntry.d.ts +3 -1
- package/dist/cjs/utils/umdEntry.js +5 -2
- package/dist/cjs/utils/umdEntry.js.map +3 -3
- package/dist/esm/components/XAiChatbot/styles.js +1 -1
- package/dist/esm/components/XAiChatbot/styles.js.map +1 -1
- package/dist/esm/components/XAiConversations/XAiConversations.stories.js +1 -1
- package/dist/esm/components/XAiConversations/XAiConversations.stories.js.map +1 -1
- package/dist/esm/components/XAiConversations/index.js +56 -14
- package/dist/esm/components/XAiConversations/index.js.map +1 -1
- package/dist/esm/components/XAiProvider/XAiProvider.stories.d.ts +2 -1
- package/dist/esm/components/XAiProvider/XAiProvider.stories.js +105 -28
- package/dist/esm/components/XAiProvider/XAiProvider.stories.js.map +1 -1
- package/dist/esm/components/XAiProvider/index.js +24 -7
- package/dist/esm/components/XAiProvider/index.js.map +1 -1
- package/dist/esm/context/AiProviderContext.d.ts +4 -2
- package/dist/esm/context/AiProviderContext.js +1 -0
- package/dist/esm/context/AiProviderContext.js.map +1 -1
- package/dist/esm/hooks/useAgentGenerator.d.ts +14 -5
- package/dist/esm/hooks/useAgentGenerator.js +271 -113
- package/dist/esm/hooks/useAgentGenerator.js.map +1 -1
- package/dist/esm/types/XAiChatbot.d.ts +2 -0
- package/dist/esm/types/XAiChatbot.js.map +1 -1
- package/dist/esm/types/XAiConversations.d.ts +14 -2
- package/dist/esm/types/XAiConversations.js.map +1 -1
- package/dist/esm/types/XAiProvider.d.ts +257 -13
- package/dist/esm/types/XAiProvider.js +81 -1
- package/dist/esm/types/XAiProvider.js.map +1 -1
- package/dist/esm/utils/umdEntry.d.ts +3 -1
- package/dist/esm/utils/umdEntry.js +29 -22
- package/dist/esm/utils/umdEntry.js.map +1 -1
- package/dist/umd/chat-sdk.min.js +1 -1
- package/package.json +2 -1
|
@@ -2,19 +2,47 @@ import React, { ReactNode } from 'react';
|
|
|
2
2
|
import { AiClient } from 'src/client/base';
|
|
3
3
|
import type { ChatbotMessageFields } from './XAiChatbot';
|
|
4
4
|
import { Messages } from "./XAiMessage";
|
|
5
|
+
/**
|
|
6
|
+
* 主题类型
|
|
7
|
+
* @type {'default'}
|
|
8
|
+
* @version 1.0.0
|
|
9
|
+
*/
|
|
5
10
|
export type ThemeType = 'default';
|
|
11
|
+
/**
|
|
12
|
+
* 错误码枚举(数字格式)
|
|
13
|
+
* @enum {string}
|
|
14
|
+
* @version 1.0.0
|
|
15
|
+
*/
|
|
6
16
|
export declare enum ErrorCodeNum {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
17
|
+
/** 应用下架 */
|
|
18
|
+
APP_NOT_ENABLE = "client_50017",
|
|
19
|
+
/** 应用删除 */
|
|
20
|
+
APP_DELETED = "client_50017",
|
|
21
|
+
/** 无该应用 */
|
|
22
|
+
APP_NOT_FOUND = "client_59999",
|
|
23
|
+
/** 接口报错 */
|
|
10
24
|
API_ERROR = "client_50054"
|
|
11
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* 错误码枚举
|
|
28
|
+
* @enum {string}
|
|
29
|
+
* @version 1.0.0
|
|
30
|
+
*/
|
|
12
31
|
export declare enum ErrorCode {
|
|
32
|
+
/** 应用未启用 */
|
|
13
33
|
APP_NOT_ENABLE = "APP_NOT_ENABLE",
|
|
34
|
+
/** 应用已删除 */
|
|
14
35
|
APP_DELETED = "APP_DELETED",
|
|
36
|
+
/** 应用未找到 */
|
|
15
37
|
APP_NOT_FOUND = "APP_NOT_FOUND",
|
|
38
|
+
/** API 错误 */
|
|
16
39
|
API_ERROR = "API_ERROR"
|
|
17
40
|
}
|
|
41
|
+
/**
|
|
42
|
+
* 错误码映射表
|
|
43
|
+
* @type {Record<string, {code: ErrorCode, message: string}>}
|
|
44
|
+
* @version 1.0.0
|
|
45
|
+
*/
|
|
18
46
|
export declare const ErrorCodeMap: {
|
|
19
47
|
client_50017: {
|
|
20
48
|
code: ErrorCode;
|
|
@@ -25,55 +53,271 @@ export declare const ErrorCodeMap: {
|
|
|
25
53
|
message: string;
|
|
26
54
|
};
|
|
27
55
|
};
|
|
56
|
+
/**
|
|
57
|
+
* 成功状态码枚举
|
|
58
|
+
* @enum {string}
|
|
59
|
+
* @version 1.0.0
|
|
60
|
+
*/
|
|
28
61
|
export declare enum SuccessCode {
|
|
62
|
+
/** 应用配置初始化成功 */
|
|
29
63
|
APP_CONFIG_INIT_SUCCESS = "APP_CONFIG_INIT_SUCCESS",
|
|
64
|
+
/** 应用消息初始化成功 */
|
|
30
65
|
APP_MESSAGES_INIT_SUCCESS = "APP_MESSAGES_INIT_SUCCESS"
|
|
31
66
|
}
|
|
67
|
+
/**
|
|
68
|
+
* 错误信息接口
|
|
69
|
+
* @interface Error
|
|
70
|
+
* @version 1.0.0
|
|
71
|
+
*/
|
|
32
72
|
export interface Error {
|
|
73
|
+
/** 错误码 */
|
|
33
74
|
code: ErrorCode;
|
|
75
|
+
/** 错误信息 */
|
|
34
76
|
message: string;
|
|
35
77
|
}
|
|
78
|
+
/**
|
|
79
|
+
* 成功信息接口
|
|
80
|
+
* @interface Success
|
|
81
|
+
* @version 1.0.0
|
|
82
|
+
*/
|
|
36
83
|
export interface Success {
|
|
84
|
+
/** 成功状态码 */
|
|
37
85
|
code: SuccessCode;
|
|
86
|
+
/** 成功信息 */
|
|
38
87
|
message: string;
|
|
39
88
|
}
|
|
89
|
+
/**
|
|
90
|
+
* XAiProvider 操作句柄接口
|
|
91
|
+
* @interface XAiProviderHandle
|
|
92
|
+
* @version 1.0.0
|
|
93
|
+
*/
|
|
40
94
|
export interface XAiProviderHandle {
|
|
95
|
+
/**
|
|
96
|
+
* 发送聊天消息
|
|
97
|
+
* @param content - 消息内容
|
|
98
|
+
* @type {(content: string) => void}
|
|
99
|
+
* @version 1.0.0
|
|
100
|
+
*/
|
|
41
101
|
chat: (content: string) => void;
|
|
102
|
+
/**
|
|
103
|
+
* 停止聊天
|
|
104
|
+
* @type {() => void}
|
|
105
|
+
* @version 1.0.0
|
|
106
|
+
*/
|
|
42
107
|
stopChat: () => void;
|
|
108
|
+
/**
|
|
109
|
+
* 重新发送聊天
|
|
110
|
+
* @type {() => void}
|
|
111
|
+
* @version 1.0.0
|
|
112
|
+
*/
|
|
43
113
|
reChat: () => void;
|
|
114
|
+
/**
|
|
115
|
+
* 获取应用信息
|
|
116
|
+
* @returns {any} 应用信息对象
|
|
117
|
+
* @type {() => any}
|
|
118
|
+
* @version 1.0.0
|
|
119
|
+
*/
|
|
44
120
|
getAppInfo: () => any;
|
|
121
|
+
/**
|
|
122
|
+
* 获取消息列表
|
|
123
|
+
* @returns {Messages[]} 消息数组
|
|
124
|
+
* @type {() => Messages[]}
|
|
125
|
+
* @version 1.0.0
|
|
126
|
+
*/
|
|
45
127
|
getMessages: () => Messages[];
|
|
46
|
-
|
|
128
|
+
/**
|
|
129
|
+
* 重新设置当前会话
|
|
130
|
+
* @param id - 会话ID
|
|
131
|
+
* @type {(id: string) => void}
|
|
132
|
+
* @version 1.0.0
|
|
133
|
+
*/
|
|
134
|
+
setCurrentSessionDetail: (id: string) => void;
|
|
47
135
|
}
|
|
136
|
+
export interface sessionConfig {
|
|
137
|
+
/**
|
|
138
|
+
* 是否展示会话列表
|
|
139
|
+
* @type {boolean}
|
|
140
|
+
* @default false
|
|
141
|
+
*/
|
|
142
|
+
showSessionList?: boolean;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* XAiProvider 配置接口
|
|
146
|
+
* @interface XAiProviderConfig
|
|
147
|
+
* @version 1.0.0
|
|
148
|
+
*/
|
|
149
|
+
export interface XAiProviderConfig {
|
|
150
|
+
/**
|
|
151
|
+
* 应用唯一编号
|
|
152
|
+
* @type {string}
|
|
153
|
+
* @default undefined
|
|
154
|
+
* @version 1.0.0
|
|
155
|
+
*/
|
|
156
|
+
appNo?: string;
|
|
157
|
+
/**
|
|
158
|
+
* 授权方式
|
|
159
|
+
* @type {string}
|
|
160
|
+
* @default undefined
|
|
161
|
+
* @version 1.0.0
|
|
162
|
+
*/
|
|
163
|
+
pt?: string;
|
|
164
|
+
/**
|
|
165
|
+
* 租户key
|
|
166
|
+
* @type {string}
|
|
167
|
+
* @default undefined
|
|
168
|
+
* @version 1.0.0
|
|
169
|
+
*/
|
|
170
|
+
tc?: string;
|
|
171
|
+
/**
|
|
172
|
+
* 会话配置
|
|
173
|
+
* @type {sessionConfig}
|
|
174
|
+
*/
|
|
175
|
+
session?: sessionConfig;
|
|
176
|
+
/**
|
|
177
|
+
* 是否启用调试模式
|
|
178
|
+
* @type {boolean}
|
|
179
|
+
* @default false
|
|
180
|
+
* @version 1.0.0
|
|
181
|
+
*/
|
|
182
|
+
debug?: boolean;
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* XAiProvider 组件属性接口
|
|
186
|
+
* @interface XAiProviderProps
|
|
187
|
+
* @version 1.0.0
|
|
188
|
+
*/
|
|
48
189
|
export interface XAiProviderProps {
|
|
49
|
-
/**
|
|
190
|
+
/**
|
|
191
|
+
* AI 服务地址
|
|
192
|
+
* @type {string}
|
|
193
|
+
* @version 1.0.0
|
|
194
|
+
*/
|
|
50
195
|
url: string;
|
|
51
|
-
/**
|
|
196
|
+
/**
|
|
197
|
+
* 认证 token
|
|
198
|
+
* @type {string}
|
|
199
|
+
* @version 1.0.0
|
|
200
|
+
*/
|
|
52
201
|
token: string;
|
|
53
|
-
/**
|
|
54
|
-
|
|
55
|
-
|
|
202
|
+
/**
|
|
203
|
+
* 配置信息
|
|
204
|
+
* @type {XAiProviderConfig}
|
|
205
|
+
* @default undefined
|
|
206
|
+
* @version 1.0.0
|
|
207
|
+
*/
|
|
208
|
+
config?: XAiProviderConfig;
|
|
209
|
+
/**
|
|
210
|
+
* Provider 唯一标识,用于区分多个 Provider 实例
|
|
211
|
+
* @type {string}
|
|
212
|
+
* @default undefined
|
|
213
|
+
* @version 1.0.0
|
|
214
|
+
*/
|
|
56
215
|
providerId?: string;
|
|
57
|
-
/**
|
|
216
|
+
/**
|
|
217
|
+
* Token 刷新回调
|
|
218
|
+
* @type {() => Promise<string>}
|
|
219
|
+
* @default undefined
|
|
220
|
+
* @version 1.0.0
|
|
221
|
+
*/
|
|
58
222
|
onRefreshToken?: () => Promise<string>;
|
|
59
|
-
/**
|
|
223
|
+
/**
|
|
224
|
+
* 应用无法正常渲染回调
|
|
225
|
+
* @type {(error: Error) => void}
|
|
226
|
+
* @default undefined
|
|
227
|
+
* @version 1.0.0
|
|
228
|
+
*/
|
|
60
229
|
onError?: (error: Error) => void;
|
|
61
|
-
/**
|
|
230
|
+
/**
|
|
231
|
+
* 应用正常渲染回调
|
|
232
|
+
* @type {(success: Success) => void}
|
|
233
|
+
* @default undefined
|
|
234
|
+
* @version 1.0.0
|
|
235
|
+
*/
|
|
62
236
|
onSuccess?: (success: Success) => void;
|
|
63
|
-
/**
|
|
237
|
+
/**
|
|
238
|
+
* 消息返回回调
|
|
239
|
+
* @type {(data: Messages) => void}
|
|
240
|
+
* @default undefined
|
|
241
|
+
* @version 1.0.0
|
|
242
|
+
*/
|
|
243
|
+
onMessage?: (data: Messages) => void;
|
|
244
|
+
/**
|
|
245
|
+
* 子组件
|
|
246
|
+
* @type {ReactNode}
|
|
247
|
+
* @version 1.0.0
|
|
248
|
+
*/
|
|
64
249
|
children: ReactNode;
|
|
65
250
|
}
|
|
251
|
+
/**
|
|
252
|
+
* XAiSDK 组件属性接口
|
|
253
|
+
* @interface XAiSDKProps
|
|
254
|
+
* @extends XAiProviderProps
|
|
255
|
+
* @version 1.0.0
|
|
256
|
+
*/
|
|
66
257
|
export interface XAiSDKProps extends XAiProviderProps {
|
|
258
|
+
/**
|
|
259
|
+
* 主题类型
|
|
260
|
+
* @type {ThemeType}
|
|
261
|
+
* @default 'default'
|
|
262
|
+
* @version 1.0.0
|
|
263
|
+
*/
|
|
67
264
|
theme?: ThemeType;
|
|
265
|
+
/**
|
|
266
|
+
* 组件属性配置
|
|
267
|
+
* @type {object}
|
|
268
|
+
* @default undefined
|
|
269
|
+
* @version 1.0.0
|
|
270
|
+
*/
|
|
68
271
|
componentProps?: {
|
|
272
|
+
/**
|
|
273
|
+
* 组件ID
|
|
274
|
+
* @type {string}
|
|
275
|
+
* @default undefined
|
|
276
|
+
* @version 1.0.0
|
|
277
|
+
*/
|
|
69
278
|
id?: string;
|
|
279
|
+
/** 支持任意 CSS 属性 */
|
|
70
280
|
[key: string]: any;
|
|
71
281
|
};
|
|
72
282
|
}
|
|
283
|
+
/**
|
|
284
|
+
* XAi 上下文类型接口
|
|
285
|
+
* @interface XAiContextType
|
|
286
|
+
* @extends Required<ChatbotMessageFields>
|
|
287
|
+
* @version 1.0.0
|
|
288
|
+
*/
|
|
73
289
|
export interface XAiContextType extends Required<ChatbotMessageFields> {
|
|
290
|
+
/**
|
|
291
|
+
* AI 客户端实例
|
|
292
|
+
* @type {AiClient | null}
|
|
293
|
+
* @default null
|
|
294
|
+
* @version 1.0.0
|
|
295
|
+
*/
|
|
74
296
|
client: AiClient | null;
|
|
297
|
+
/**
|
|
298
|
+
* 认证令牌
|
|
299
|
+
* @type {string}
|
|
300
|
+
* @version 1.0.0
|
|
301
|
+
*/
|
|
75
302
|
token: string;
|
|
303
|
+
/**
|
|
304
|
+
* 加载状态
|
|
305
|
+
* @type {boolean}
|
|
306
|
+
* @default false
|
|
307
|
+
* @version 1.0.0
|
|
308
|
+
*/
|
|
76
309
|
loading: boolean;
|
|
310
|
+
/**
|
|
311
|
+
* 错误信息
|
|
312
|
+
* @type {string | null}
|
|
313
|
+
* @default null
|
|
314
|
+
* @version 1.0.0
|
|
315
|
+
*/
|
|
77
316
|
error: string | null;
|
|
78
317
|
}
|
|
318
|
+
/**
|
|
319
|
+
* XAi 上下文对象
|
|
320
|
+
* @type {React.Context<XAiContextType | null>}
|
|
321
|
+
* @version 1.0.0
|
|
322
|
+
*/
|
|
79
323
|
export declare const XAiContext: React.Context<XAiContextType | null>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/types/XAiProvider.ts"],
|
|
4
|
-
"sourcesContent": ["// context/ProviderContext.ts\nimport React, { ReactNode } from 'react';\nimport { AiClient } from 'src/client/base';\nimport type { ChatbotMessageFields } from './XAiChatbot';\nimport { Messages } from '@/types/XAiMessage';\n\nexport type ThemeType = 'default';\n\nexport enum ErrorCodeNum {\n APP_NOT_ENABLE = 'client_50017'
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,mBAAiC;
|
|
4
|
+
"sourcesContent": ["// context/ProviderContext.ts\nimport React, { ReactNode } from 'react';\nimport { AiClient } from 'src/client/base';\nimport type { ChatbotMessageFields } from './XAiChatbot';\nimport { Messages } from '@/types/XAiMessage';\nimport XAiProvider from '@/components/XAiProvider';\n\n/**\n * 主题类型\n * @type {'default'}\n * @version 1.0.0\n */\nexport type ThemeType = 'default';\n\n/**\n * 错误码枚举(数字格式)\n * @enum {string}\n * @version 1.0.0\n */\nexport enum ErrorCodeNum {\n /** 应用下架 */\n APP_NOT_ENABLE = 'client_50017',\n /** 应用删除 */\n APP_DELETED = 'client_50017',\n /** 无该应用 */\n APP_NOT_FOUND = 'client_59999',\n /** 接口报错 */\n API_ERROR = 'client_50054',\n}\n\n/**\n * 错误码枚举\n * @enum {string}\n * @version 1.0.0\n */\nexport enum ErrorCode {\n /** 应用未启用 */\n APP_NOT_ENABLE = 'APP_NOT_ENABLE',\n /** 应用已删除 */\n APP_DELETED = 'APP_DELETED',\n /** 应用未找到 */\n APP_NOT_FOUND = 'APP_NOT_FOUND',\n /** API 错误 */\n API_ERROR = 'API_ERROR',\n}\n\n/**\n * 错误码映射表\n * @type {Record<string, {code: ErrorCode, message: string}>}\n * @version 1.0.0\n */\nexport const ErrorCodeMap = {\n client_50017: {\n code: ErrorCode.APP_NOT_ENABLE,\n message: '该应用已删除或已下架',\n },\n client_50054: {\n code: ErrorCode.API_ERROR,\n message: '应用服务端出错',\n },\n};\n\n/**\n * 成功状态码枚举\n * @enum {string}\n * @version 1.0.0\n */\nexport enum SuccessCode {\n /** 应用配置初始化成功 */\n APP_CONFIG_INIT_SUCCESS = 'APP_CONFIG_INIT_SUCCESS',\n /** 应用消息初始化成功 */\n APP_MESSAGES_INIT_SUCCESS = 'APP_MESSAGES_INIT_SUCCESS',\n}\n\n/**\n * 错误信息接口\n * @interface Error\n * @version 1.0.0\n */\nexport interface Error {\n /** 错误码 */\n code: ErrorCode;\n /** 错误信息 */\n message: string;\n}\n\n/**\n * 成功信息接口\n * @interface Success\n * @version 1.0.0\n */\nexport interface Success {\n /** 成功状态码 */\n code: SuccessCode;\n /** 成功信息 */\n message: string;\n}\n\n/**\n * XAiProvider 操作句柄接口\n * @interface XAiProviderHandle\n * @version 1.0.0\n */\nexport interface XAiProviderHandle {\n /**\n * 发送聊天消息\n * @param content - 消息内容\n * @type {(content: string) => void}\n * @version 1.0.0\n */\n chat: (content: string) => void;\n \n /**\n * 停止聊天\n * @type {() => void}\n * @version 1.0.0\n */\n stopChat: () => void;\n \n /**\n * 重新发送聊天\n * @type {() => void}\n * @version 1.0.0\n */\n reChat: () => void;\n \n /**\n * 获取应用信息\n * @returns {any} 应用信息对象\n * @type {() => any}\n * @version 1.0.0\n */\n getAppInfo: () => any;\n \n /**\n * 获取消息列表\n * @returns {Messages[]} 消息数组\n * @type {() => Messages[]}\n * @version 1.0.0\n */\n getMessages: () => Messages[];\n \n /**\n * 重新设置当前会话\n * @param id - 会话ID\n * @type {(id: string) => void}\n * @version 1.0.0\n */\n setCurrentSessionDetail: (id: string) => void;\n}\n\nexport interface sessionConfig {\n /**\n * 是否展示会话列表\n * @type {boolean}\n * @default false\n */\n showSessionList?: boolean;\n}\n\n/**\n * XAiProvider 配置接口\n * @interface XAiProviderConfig\n * @version 1.0.0\n */\nexport interface XAiProviderConfig {\n /**\n * 应用唯一编号\n * @type {string}\n * @default undefined\n * @version 1.0.0\n */\n appNo?: string;\n \n /**\n * 授权方式\n * @type {string}\n * @default undefined\n * @version 1.0.0\n */\n pt?: string;\n \n /**\n * 租户key\n * @type {string}\n * @default undefined\n * @version 1.0.0\n */\n tc?: string;\n\n /**\n * 会话配置\n * @type {sessionConfig}\n */\n session?: sessionConfig;\n \n /**\n * 是否启用调试模式\n * @type {boolean}\n * @default false\n * @version 1.0.0\n */\n debug?: boolean;\n}\n\n/**\n * XAiProvider 组件属性接口\n * @interface XAiProviderProps\n * @version 1.0.0\n */\nexport interface XAiProviderProps {\n /**\n * AI 服务地址\n * @type {string}\n * @version 1.0.0\n */\n url: string;\n \n /**\n * 认证 token\n * @type {string}\n * @version 1.0.0\n */\n token: string;\n \n /**\n * 配置信息\n * @type {XAiProviderConfig}\n * @default undefined\n * @version 1.0.0\n */\n config?: XAiProviderConfig;\n \n /**\n * Provider 唯一标识,用于区分多个 Provider 实例\n * @type {string}\n * @default undefined\n * @version 1.0.0\n */\n providerId?: string;\n \n /**\n * Token 刷新回调\n * @type {() => Promise<string>}\n * @default undefined\n * @version 1.0.0\n */\n onRefreshToken?: () => Promise<string>;\n \n /**\n * 应用无法正常渲染回调\n * @type {(error: Error) => void}\n * @default undefined\n * @version 1.0.0\n */\n onError?: (error: Error) => void;\n \n /**\n * 应用正常渲染回调\n * @type {(success: Success) => void}\n * @default undefined\n * @version 1.0.0\n */\n onSuccess?: (success: Success) => void;\n \n /**\n * 消息返回回调\n * @type {(data: Messages) => void}\n * @default undefined\n * @version 1.0.0\n */\n onMessage?: (data: Messages) => void;\n \n /**\n * 子组件\n * @type {ReactNode}\n * @version 1.0.0\n */\n children: ReactNode;\n}\n\n/**\n * XAiSDK 组件属性接口\n * @interface XAiSDKProps\n * @extends XAiProviderProps\n * @version 1.0.0\n */\nexport interface XAiSDKProps extends XAiProviderProps {\n /**\n * 主题类型\n * @type {ThemeType}\n * @default 'default'\n * @version 1.0.0\n */\n theme?: ThemeType;\n \n /**\n * 组件属性配置\n * @type {object}\n * @default undefined\n * @version 1.0.0\n */\n componentProps?: {\n /**\n * 组件ID\n * @type {string}\n * @default undefined\n * @version 1.0.0\n */\n id?: string;\n /** 支持任意 CSS 属性 */\n [key: string]: any;\n };\n}\n\n/**\n * XAi 上下文类型接口\n * @interface XAiContextType\n * @extends Required<ChatbotMessageFields>\n * @version 1.0.0\n */\nexport interface XAiContextType extends Required<ChatbotMessageFields> {\n /**\n * AI 客户端实例\n * @type {AiClient | null}\n * @default null\n * @version 1.0.0\n */\n client: AiClient | null;\n \n /**\n * 认证令牌\n * @type {string}\n * @version 1.0.0\n */\n token: string;\n \n /**\n * 加载状态\n * @type {boolean}\n * @default false\n * @version 1.0.0\n */\n loading: boolean;\n \n /**\n * 错误信息\n * @type {string | null}\n * @default null\n * @version 1.0.0\n */\n error: string | null;\n}\n\n/**\n * XAi 上下文对象\n * @type {React.Context<XAiContextType | null>}\n * @version 1.0.0\n */\nexport const XAiContext = React.createContext<XAiContextType | null>(null);\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,mBAAiC;AAkB1B,IAAK,eAAL,kBAAKA,kBAAL;AAEL,EAAAA,cAAA,oBAAiB;AAEjB,EAAAA,cAAA,iBAAc;AAEd,EAAAA,cAAA,mBAAgB;AAEhB,EAAAA,cAAA,eAAY;AARF,SAAAA;AAAA,GAAA;AAgBL,IAAK,YAAL,kBAAKC,eAAL;AAEL,EAAAA,WAAA,oBAAiB;AAEjB,EAAAA,WAAA,iBAAc;AAEd,EAAAA,WAAA,mBAAgB;AAEhB,EAAAA,WAAA,eAAY;AARF,SAAAA;AAAA,GAAA;AAgBL,IAAM,eAAe;AAAA,EAC1B,cAAc;AAAA,IACZ,MAAM;AAAA,IACN,SAAS;AAAA,EACX;AAAA,EACA,cAAc;AAAA,IACZ,MAAM;AAAA,IACN,SAAS;AAAA,EACX;AACF;AAOO,IAAK,cAAL,kBAAKC,iBAAL;AAEL,EAAAA,aAAA,6BAA0B;AAE1B,EAAAA,aAAA,+BAA4B;AAJlB,SAAAA;AAAA,GAAA;AAoSL,IAAM,aAAa,aAAAC,QAAM,cAAqC,IAAI;",
|
|
6
6
|
"names": ["ErrorCodeNum", "ErrorCode", "SuccessCode", "React"]
|
|
7
7
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { XAiSDKProps, XAiProviderHandle } from "../types/XAiProvider";
|
|
3
|
+
import { Messages } from "../types/XAiMessage";
|
|
3
4
|
declare class XAiWebSDK {
|
|
4
5
|
container: HTMLElement;
|
|
5
6
|
props: XAiSDKProps;
|
|
@@ -7,6 +8,7 @@ declare class XAiWebSDK {
|
|
|
7
8
|
providerRef: React.RefObject<XAiProviderHandle | null>;
|
|
8
9
|
onError?: (error: any) => void;
|
|
9
10
|
onSuccess?: (appInfo: any) => void;
|
|
11
|
+
onMessage?: (data: Messages) => void;
|
|
10
12
|
constructor(container: HTMLElement, props: XAiSDKProps);
|
|
11
13
|
mount(): void;
|
|
12
14
|
unmount(): void;
|
|
@@ -14,7 +16,7 @@ declare class XAiWebSDK {
|
|
|
14
16
|
static create(props: XAiSDKProps): XAiWebSDK;
|
|
15
17
|
getData(): {
|
|
16
18
|
appInfo: any;
|
|
17
|
-
messages:
|
|
19
|
+
messages: Messages[] | undefined;
|
|
18
20
|
};
|
|
19
21
|
chat(text: string): void;
|
|
20
22
|
stop(): void;
|
|
@@ -36,6 +36,7 @@ var import_react = __toESM(require("react"));
|
|
|
36
36
|
var import_client = __toESM(require("react-dom/client"));
|
|
37
37
|
var import_XAiProvider = __toESM(require("../components/XAiProvider"));
|
|
38
38
|
var import_XAiChatbot = __toESM(require("../components/XAiChatbot"));
|
|
39
|
+
var import_XAiConversations = __toESM(require("../components/XAiConversations"));
|
|
39
40
|
var XAiWebSDK = class {
|
|
40
41
|
constructor(container, props) {
|
|
41
42
|
this.providerRef = (0, import_react.createRef)();
|
|
@@ -43,17 +44,19 @@ var XAiWebSDK = class {
|
|
|
43
44
|
this.props = props;
|
|
44
45
|
this.onError = props.onError;
|
|
45
46
|
this.onSuccess = props.onSuccess;
|
|
47
|
+
this.onMessage = props.onMessage;
|
|
46
48
|
this.mount();
|
|
47
49
|
}
|
|
48
50
|
mount() {
|
|
51
|
+
var _a, _b, _c, _d;
|
|
49
52
|
if (import_client.default.createRoot) {
|
|
50
53
|
this.root = import_client.default.createRoot(this.container);
|
|
51
54
|
this.root.render(
|
|
52
|
-
/* @__PURE__ */ import_react.default.createElement(
|
|
55
|
+
/* @__PURE__ */ import_react.default.createElement("div", { style: { width: "100%", height: "100%" } }, /* @__PURE__ */ import_react.default.createElement(import_XAiProvider.default, { ref: this.providerRef, ...this.props }, ((_b = (_a = this.props.config) == null ? void 0 : _a.session) == null ? void 0 : _b.showSessionList) && /* @__PURE__ */ import_react.default.createElement(import_XAiConversations.default, null), /* @__PURE__ */ import_react.default.createElement(import_XAiChatbot.default, null)))
|
|
53
56
|
);
|
|
54
57
|
} else {
|
|
55
58
|
import_client.default.render(
|
|
56
|
-
/* @__PURE__ */ import_react.default.createElement(
|
|
59
|
+
/* @__PURE__ */ import_react.default.createElement("div", { style: { width: "100%", height: "100%" } }, /* @__PURE__ */ import_react.default.createElement(import_XAiProvider.default, { ref: this.providerRef, ...this.props }, ((_d = (_c = this.props.config) == null ? void 0 : _c.session) == null ? void 0 : _d.showSessionList) && /* @__PURE__ */ import_react.default.createElement(import_XAiConversations.default, null), /* @__PURE__ */ import_react.default.createElement(import_XAiChatbot.default, null))),
|
|
57
60
|
this.container
|
|
58
61
|
);
|
|
59
62
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/utils/umdEntry.tsx"],
|
|
4
|
-
"sourcesContent": ["import React, { createRef } from 'react';\nimport ReactDOM from 'react-dom/client';\nimport { XAiSDKProps, XAiProviderHandle } from '@/types/XAiProvider';\nimport XAiProvider from '@/components/XAiProvider';\nimport XAiChatbot from '
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAiC;AACjC,oBAAqB;
|
|
6
|
-
"names": ["ReactDOM", "React", "XAiProvider", "XAiChatbot"]
|
|
4
|
+
"sourcesContent": ["import React, { createRef } from 'react';\nimport ReactDOM from 'react-dom/client';\nimport { XAiSDKProps, XAiProviderHandle } from '@/types/XAiProvider';\nimport { Messages } from '@/types/XAiMessage';\nimport XAiProvider from '@/components/XAiProvider';\nimport XAiChatbot from '@/components/XAiChatbot';\nimport XAiConversations from '@/components/XAiConversations';\n\nclass XAiWebSDK {\n container: HTMLElement;\n\n props: XAiSDKProps;\n\n root: any;\n\n providerRef = createRef<XAiProviderHandle>();\n\n // ———— hook ————\n onError?: (error: any) => void;\n\n onSuccess?: (appInfo: any) => void;\n\n onMessage?: (data: Messages) => void;\n\n constructor(container: HTMLElement, props: XAiSDKProps) {\n this.container = container;\n this.props = props;\n this.onError = props.onError;\n this.onSuccess = props.onSuccess;\n this.onMessage = props.onMessage;\n this.mount();\n }\n\n mount() {\n if (ReactDOM.createRoot) {\n this.root = ReactDOM.createRoot(this.container);\n this.root.render(\n <div style={{ width: '100%', height: '100%' }}>\n <XAiProvider ref={this.providerRef} {...this.props}>\n { this.props.config?.session?.showSessionList && <XAiConversations />}\n <XAiChatbot />\n </XAiProvider>\n </div>,\n );\n } else {\n // @ts-ignore\n ReactDOM.render(\n <div style={{ width: '100%', height: '100%' }}>\n <XAiProvider ref={this.providerRef} {...this.props}>\n { this.props.config?.session?.showSessionList && <XAiConversations />}\n <XAiChatbot />\n </XAiProvider>\n </div>,\n this.container,\n );\n }\n }\n\n unmount() {\n if (this.root && this.root.unmount) {\n this.root.unmount();\n }\n }\n\n // 支持 Coze 风格的语法:new XAiWebSDK.initChatbot()\n static initChatbot(props: XAiSDKProps): XAiWebSDK {\n let container: HTMLElement;\n\n // 检查是否有指定的 componentProps.id\n if (props.componentProps?.id) {\n const existingContainer = document.getElementById(props.componentProps.id);\n if (existingContainer) {\n container = existingContainer;\n } else {\n // 如果指定的 ID 不存在,创建新元素\n container = document.createElement('div');\n container.id = props.componentProps.id;\n }\n } else {\n // 没有指定 ID,创建默认容器\n container = document.createElement('div');\n container.id = 'xai-chatbot-container';\n }\n\n // 设置容器样式 - 将除了 id 以外的所有属性都应用到容器\n if (props.componentProps) {\n const { id, ...styleProps } = props.componentProps;\n Object.assign(container.style, styleProps);\n }\n\n // 如果容器不在 DOM 中,添加到 body\n if (!container.parentNode) {\n document.body.appendChild(container);\n }\n\n return new XAiWebSDK(container, props);\n }\n\n // 兼容旧版本的静态方法\n static create(props: XAiSDKProps): XAiWebSDK {\n return this.initChatbot(props);\n }\n\n // ————对外暴露的方法————\n getData() {\n return {\n appInfo: this.providerRef.current?.getAppInfo(),\n messages: this.providerRef.current?.getMessages(),\n };\n }\n\n chat(text: string) {\n this.providerRef.current?.chat(text);\n }\n\n stop() {\n this.providerRef.current?.stopChat();\n }\n\n reChat() {\n this.providerRef.current?.reChat();\n }\n}\n\n// 兼容 window 方式,也支持 new\n// @ts-ignore\nwindow.XAiWebSDK = XAiWebSDK;\n\n// 支持 ESModule/UMD 直接 import\nexport default XAiWebSDK;\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["ReactDOM", "React", "XAiProvider", "XAiConversations", "XAiChatbot"]
|
|
7
7
|
}
|
|
@@ -22,7 +22,7 @@ export var useStyles = withBasicStyles(function () {
|
|
|
22
22
|
subtitle: css(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral(["\n font-size: 12px;\n color: ", ";\n margin-top: 2px;\n "])), lightGray),
|
|
23
23
|
messageContainer: css(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral(["\n flex: 1;\n overflow-y: auto;\n padding: 16px;\n // background-color: #fff;\n display: flex;\n flex-direction: column;\n gap: 10px;\n min-height: 0;\n position: relative;\n "]))),
|
|
24
24
|
emptyWrapper: css(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral(["\n height: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n color: '#222';\n userSelect: none;\n "]))),
|
|
25
|
-
emptyImg: css(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral(["\n width: 60px;\n height: 60px;\n margin-bottom: 16px;\n "]))),
|
|
25
|
+
emptyImg: css(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral(["\n width: 60px;\n height: 60px;\n border-radius: 8px;\n margin-bottom: 16px;\n "]))),
|
|
26
26
|
message: css(_templateObject10 || (_templateObject10 = _taggedTemplateLiteral(["\n max-width: 70%;\n padding: 10px 14px;\n border-radius: 20px;\n background-color: ", ";\n color: ", ";\n font-size: 14px;\n line-height: 1.4;\n word-break: break-word;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n "])), lightBlue, darkGray),
|
|
27
27
|
messageRight: css(_templateObject11 || (_templateObject11 = _taggedTemplateLiteral(["\n align-self: flex-end;\n background-color: ", ";\n color: white;\n border-bottom-right-radius: 4px;\n border-bottom-left-radius: 20px;\n border-top-left-radius: 20px;\n border-top-right-radius: 20px;\n "])), primaryBlue),
|
|
28
28
|
quickReplies: css(_templateObject12 || (_templateObject12 = _taggedTemplateLiteral(["\n display: flex;\n gap: 8px;\n padding: 10px 16px;\n border-top: 1px solid ", ";\n background-color: #fff;\n overflow-x: auto;\n "])), borderGray),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","css","globalCss","Global","withBasicStyles","jsx","_jsx","primaryBlue","lightBlue","darkGray","lightGray","borderGray","useStyles","wrapper","_templateObject","_taggedTemplateLiteral","navbar","_templateObject2","userAvatar","_templateObject3","avatar","_templateObject4","title","_templateObject5","subtitle","_templateObject6","messageContainer","_templateObject7","emptyWrapper","_templateObject8","emptyImg","_templateObject9","message","_templateObject10","messageRight","_templateObject11","quickReplies","_templateObject12","replyItem","_templateObject13","highlight","_templateObject14","inputBar","_templateObject15","input","_templateObject16","sendWrapper","_templateObject17","stopButton","_templateObject18","sendButton","_templateObject19","uploadBtn","_templateObject20","clearBtn","_templateObject21","chatFooter","_templateObject22","footerTips","_templateObject23","flexCenterGap2","_templateObject24","iconHuihuarenqun","_templateObject25","popoverFooter","_templateObject26","divider","_templateObject27","flexCenterGap4","_templateObject28","iconZengjiaDisabled","_templateObject29","iconZengjiaNormal","_templateObject30","actionHeaderWrapper","_templateObject31","actionHeaderItem","_templateObject32","actionHeaderIcon","_templateObject33","actionHeaderText","_templateObject34","actionHeaderDetail","_templateObject35","actionDetailTitle","_templateObject36","actionHeaderDetailItem","_templateObject37","actionHeaderCost","_templateObject38","GlobalStyle","styles","_templateObject39"],"sources":["../../../../src/components/XAiChatbot/styles.tsx"],"sourcesContent":["import React from 'react';\nimport { css } from '@emotion/css';\nimport { css as globalCss, Global } from '@emotion/react';\nimport { withBasicStyles } from '@/styles/common';\n\nconst primaryBlue = '#0078FF'; // 主蓝色\nconst lightBlue = '#E6F0FF'; // 浅蓝色气泡背景\nconst darkGray = '#333'; // 深灰色文本\nconst lightGray = '#888'; // 浅灰文本\nconst borderGray = '#ddd'; // 边框灰色\n\nexport const useStyles = withBasicStyles(() => ({\n // 静态样式\n wrapper: css`\n display: flex;\n flex-direction: column;\n // max-height: 812px;\n min-height: 300px;\n width: 100%;\n height: 100%;\n min-width: 375px;\n // background-color: #fff;\n // border: 1px solid rgba(80,96,122,.15);\n border-radius: 12px;\n overflow: hidden;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen,\n Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;\n `,\n\n navbar: css`\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 12px 16px;\n border-bottom: 1px solid ${borderGray};\n // background-color: #fff;\n `,\n\n userAvatar: css`\n display: flex;\n align-items: center;\n justify-content: center;\n height: 32px;\n width: 32px;\n border-radius: 50%;\n object-fit: cover;\n margin-right: 12px;\n `,\n\n avatar: css`\n width: 40px;\n height: 40px;\n border-radius: 50%;\n object-fit: cover;\n margin-right: 12px;\n border: 1px solid ${borderGray};\n `,\n\n title: css`\n font-weight: 600;\n font-size: 16px;\n color: ${darkGray};\n `,\n\n subtitle: css`\n font-size: 12px;\n color: ${lightGray};\n margin-top: 2px;\n `,\n\n messageContainer: css`\n flex: 1;\n overflow-y: auto;\n padding: 16px;\n // background-color: #fff;\n display: flex;\n flex-direction: column;\n gap: 10px;\n min-height: 0;\n position: relative;\n `,\n\n emptyWrapper: css`\n height: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n color: '#222';\n userSelect: none;\n `,\n\n emptyImg: css`\n width: 60px;\n height: 60px;\n margin-bottom: 16px;\n `,\n\n message: css`\n max-width: 70%;\n padding: 10px 14px;\n border-radius: 20px;\n background-color: ${lightBlue};\n color: ${darkGray};\n font-size: 14px;\n line-height: 1.4;\n word-break: break-word;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n `,\n\n messageRight: css`\n align-self: flex-end;\n background-color: ${primaryBlue};\n color: white;\n border-bottom-right-radius: 4px;\n border-bottom-left-radius: 20px;\n border-top-left-radius: 20px;\n border-top-right-radius: 20px;\n `,\n\n quickReplies: css`\n display: flex;\n gap: 8px;\n padding: 10px 16px;\n border-top: 1px solid ${borderGray};\n background-color: #fff;\n overflow-x: auto;\n `,\n\n replyItem: css`\n padding: 6px 12px;\n font-size: 13px;\n border: 1px solid ${primaryBlue};\n border-radius: 20px;\n background-color: #fff;\n color: ${primaryBlue};\n cursor: pointer;\n white-space: nowrap;\n user-select: none;\n transition: all 0.2s ease;\n \n &:hover {\n background-color: ${primaryBlue};\n color: #fff;\n }\n `,\n\n highlight: css`\n background-color: ${primaryBlue};\n color: white;\n border-color: ${primaryBlue};\n `,\n\n inputBar: css`\n display: flex;\n align-items: center;\n padding: 10px 16px;\n border-top: 1px solid ${borderGray};\n background-color: #fff;\n `,\n\n input: css`\n flex: 1;\n padding: 8px 12px;\n border: 1px solid ${borderGray};\n border-radius: 20px;\n font-size: 14px;\n outline: none;\n \n &:focus {\n border-color: ${primaryBlue};\n box-shadow: 0 0 3px ${primaryBlue};\n }\n `,\n\n sendWrapper: css`\n flex: 1;\n border-radius: 26px;\n `,\n\n stopButton: css`\n width: 23px !important;\n height: 23px !important;\n padding: 0 !important;\n min-width: 23px !important;\n min-height: 23px !important;\n display: flex;\n align-items: center;\n justify-content: center;\n `,\n\n sendButton: css`\n width: 23px !important;\n height: 23px !important;\n padding: 0 !important;\n min-width: 23px !important;\n min-height: 23px !important;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: ${primaryBlue};\n border: none;\n border-radius: 20px;\n color: white;\n font-weight: 600;\n cursor: pointer;\n transition: background-color 0.2s ease;\n box-sizing: border-box;\n &:hover {\n background-color: #005ecb;\n }\n &:disabled {\n background-color: ${lightBlue};\n cursor: not-allowed;\n }\n `,\n\n uploadBtn: css`\n margin-left: 8px;\n width: 32px;\n height: 32px;\n border-radius: 50%;\n background-color: ${primaryBlue};\n color: white;\n font-weight: 700;\n font-size: 22px;\n line-height: 32px;\n text-align: center;\n cursor: pointer;\n border: none;\n user-select: none;\n &:hover {\n background-color: #005ecb;\n }\n `,\n\n clearBtn: css`\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n border: 1px solid rgb(228, 231, 236);\n border-radius: 12px;\n width: 45px;\n height: 45px;\n box-sizing: border-box;\n `,\n\n chatFooter: css`\n gap: 8px;\n position: relatative;\n z-index: 10;\n padding: 0 20px 10px 20px;\n `,\n\n footerTips: css`\n display: flex;\n align-items:center;\n justify-content: center;\n font-size: 12px;\n color: rgba(0,0,0,0.4);\n `,\n\n flexCenterGap2: css`\n display: flex;\n align-items: center;\n gap: 8px;\n `,\n\n iconHuihuarenqun: css`\n font-family: \"iconfont\";\n font-size: 16px;\n font-weight: 300;\n padding: 3px;\n border-radius: 6px;\n color: #181B25;\n cursor: pointer;\n &:hover {\n background: #E1E4EA;\n color: #7F56D9;\n }\n `,\n\n popoverFooter: css`\n display: flex;\n gap: 8px;\n justify-content: end;\n `,\n\n divider: css`\n width: 1px;\n height: 15px;\n margin-left: 3px;\n margin-right: 3px;\n background: #D0D5DD;\n `,\n\n flexCenterGap4: css`\n display: flex;\n align-items: center;\n gap: 4px;\n color: #7F56D9;\n cursor: pointer;\n &:hover {\n opacity: 0.8;\n }\n `,\n\n iconZengjiaDisabled: css`\n font-family: \"iconfont\";\n font-size: 25px;\n font-weight: 300;\n color: #D0D5DD;\n cursor: not-allowed;\n `,\n\n iconZengjiaNormal: css`\n font-family: \"iconfont\";\n font-size: 25px;\n font-weight: 300;\n color: #98A2B3;\n cursor: pointer;\n &:hover {\n color: #7F56D9;\n }\n `,\n actionHeaderWrapper: css`\n margin-bottom: 12px;\n `,\n actionHeaderItem: css`\n display: flex;\n align-items: center;\n height: 40px;\n box-sizing: border-box;\n padding: 10px 16px;\n margin-bottom: 8px;\n background: #f7fafd;\n cursor: pointer;\n border-radius: 8px;\n box-shadow: 0 1px 3px rgba(0,0,0,0.03);\n `,\n actionHeaderIcon: css`\n height: 14px;\n `,\n actionHeaderText: css`\n font-weight: 400;\n font-size: 14px;\n color: #3961F2;\n margin-left: 10px;\n margin-right: 6px;\n `,\n actionHeaderDetail: css`\n background: #F3F5FA;\n border-radius: 8px;\n overflow: hidden;\n `,\n actionDetailTitle: css`\n display: flex;\n align-items: center;\n padding: 0 16px;\n box-sizing: border-box;\n background: #EDEFF5;\n height: 32px;\n margin-bottom: 12px;\n cursor: pointer;\n `,\n actionHeaderDetailItem: css`\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 14px;\n padding: 0 16px;\n margin-bottom: 12px;\n color: #949494;\n `,\n actionHeaderCost: css`\n margin-left: auto;\n color: #888;\n font-size: 12px;\n min-width: 32px;\n text-align: right;\n `,\n}));\n\nexport const GlobalStyle: React.FC = () => (\n <Global\n styles={globalCss`\n .ant-bubble-footer {\n display: flex;\n align-items: center;\n min-width: 0,\n max-width: 600,\n /* 你想覆盖的其他样式 */\n }\n\n .ant-sender-content {\n textarea {\n word-break: break-all;\n }\n }\n\n .ant-avatar {\n background-color: transparent;\n }\n\n .ant-sender-actions-list {\n margin-left: -40px;\n }\n\n .ant-sender {\n box-shadow: none !important;\n }\n\n .ant-prompts-item {\n padding-block: 8px !important;\n }\n\n /* 用户消息气泡背景色 */\n .ant-bubble .user-content {\n background-color: #D8E0FD;\n }\n\n /* 助手消息气泡背景色 */\n .ant-bubble .assistant-content {\n background-color: #F3F5FA;\n }\n `}\n />\n);\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["React","css","globalCss","Global","withBasicStyles","jsx","_jsx","primaryBlue","lightBlue","darkGray","lightGray","borderGray","useStyles","wrapper","_templateObject","_taggedTemplateLiteral","navbar","_templateObject2","userAvatar","_templateObject3","avatar","_templateObject4","title","_templateObject5","subtitle","_templateObject6","messageContainer","_templateObject7","emptyWrapper","_templateObject8","emptyImg","_templateObject9","message","_templateObject10","messageRight","_templateObject11","quickReplies","_templateObject12","replyItem","_templateObject13","highlight","_templateObject14","inputBar","_templateObject15","input","_templateObject16","sendWrapper","_templateObject17","stopButton","_templateObject18","sendButton","_templateObject19","uploadBtn","_templateObject20","clearBtn","_templateObject21","chatFooter","_templateObject22","footerTips","_templateObject23","flexCenterGap2","_templateObject24","iconHuihuarenqun","_templateObject25","popoverFooter","_templateObject26","divider","_templateObject27","flexCenterGap4","_templateObject28","iconZengjiaDisabled","_templateObject29","iconZengjiaNormal","_templateObject30","actionHeaderWrapper","_templateObject31","actionHeaderItem","_templateObject32","actionHeaderIcon","_templateObject33","actionHeaderText","_templateObject34","actionHeaderDetail","_templateObject35","actionDetailTitle","_templateObject36","actionHeaderDetailItem","_templateObject37","actionHeaderCost","_templateObject38","GlobalStyle","styles","_templateObject39"],"sources":["../../../../src/components/XAiChatbot/styles.tsx"],"sourcesContent":["import React from 'react';\nimport { css } from '@emotion/css';\nimport { css as globalCss, Global } from '@emotion/react';\nimport { withBasicStyles } from '@/styles/common';\n\nconst primaryBlue = '#0078FF'; // 主蓝色\nconst lightBlue = '#E6F0FF'; // 浅蓝色气泡背景\nconst darkGray = '#333'; // 深灰色文本\nconst lightGray = '#888'; // 浅灰文本\nconst borderGray = '#ddd'; // 边框灰色\n\nexport const useStyles = withBasicStyles(() => ({\n // 静态样式\n wrapper: css`\n display: flex;\n flex-direction: column;\n // max-height: 812px;\n min-height: 300px;\n width: 100%;\n height: 100%;\n min-width: 375px;\n // background-color: #fff;\n // border: 1px solid rgba(80,96,122,.15);\n border-radius: 12px;\n overflow: hidden;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen,\n Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;\n `,\n\n navbar: css`\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 12px 16px;\n border-bottom: 1px solid ${borderGray};\n // background-color: #fff;\n `,\n\n userAvatar: css`\n display: flex;\n align-items: center;\n justify-content: center;\n height: 32px;\n width: 32px;\n border-radius: 50%;\n object-fit: cover;\n margin-right: 12px;\n `,\n\n avatar: css`\n width: 40px;\n height: 40px;\n border-radius: 50%;\n object-fit: cover;\n margin-right: 12px;\n border: 1px solid ${borderGray};\n `,\n\n title: css`\n font-weight: 600;\n font-size: 16px;\n color: ${darkGray};\n `,\n\n subtitle: css`\n font-size: 12px;\n color: ${lightGray};\n margin-top: 2px;\n `,\n\n messageContainer: css`\n flex: 1;\n overflow-y: auto;\n padding: 16px;\n // background-color: #fff;\n display: flex;\n flex-direction: column;\n gap: 10px;\n min-height: 0;\n position: relative;\n `,\n\n emptyWrapper: css`\n height: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n color: '#222';\n userSelect: none;\n `,\n\n emptyImg: css`\n width: 60px;\n height: 60px;\n border-radius: 8px;\n margin-bottom: 16px;\n `,\n\n message: css`\n max-width: 70%;\n padding: 10px 14px;\n border-radius: 20px;\n background-color: ${lightBlue};\n color: ${darkGray};\n font-size: 14px;\n line-height: 1.4;\n word-break: break-word;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n `,\n\n messageRight: css`\n align-self: flex-end;\n background-color: ${primaryBlue};\n color: white;\n border-bottom-right-radius: 4px;\n border-bottom-left-radius: 20px;\n border-top-left-radius: 20px;\n border-top-right-radius: 20px;\n `,\n\n quickReplies: css`\n display: flex;\n gap: 8px;\n padding: 10px 16px;\n border-top: 1px solid ${borderGray};\n background-color: #fff;\n overflow-x: auto;\n `,\n\n replyItem: css`\n padding: 6px 12px;\n font-size: 13px;\n border: 1px solid ${primaryBlue};\n border-radius: 20px;\n background-color: #fff;\n color: ${primaryBlue};\n cursor: pointer;\n white-space: nowrap;\n user-select: none;\n transition: all 0.2s ease;\n \n &:hover {\n background-color: ${primaryBlue};\n color: #fff;\n }\n `,\n\n highlight: css`\n background-color: ${primaryBlue};\n color: white;\n border-color: ${primaryBlue};\n `,\n\n inputBar: css`\n display: flex;\n align-items: center;\n padding: 10px 16px;\n border-top: 1px solid ${borderGray};\n background-color: #fff;\n `,\n\n input: css`\n flex: 1;\n padding: 8px 12px;\n border: 1px solid ${borderGray};\n border-radius: 20px;\n font-size: 14px;\n outline: none;\n \n &:focus {\n border-color: ${primaryBlue};\n box-shadow: 0 0 3px ${primaryBlue};\n }\n `,\n\n sendWrapper: css`\n flex: 1;\n border-radius: 26px;\n `,\n\n stopButton: css`\n width: 23px !important;\n height: 23px !important;\n padding: 0 !important;\n min-width: 23px !important;\n min-height: 23px !important;\n display: flex;\n align-items: center;\n justify-content: center;\n `,\n\n sendButton: css`\n width: 23px !important;\n height: 23px !important;\n padding: 0 !important;\n min-width: 23px !important;\n min-height: 23px !important;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: ${primaryBlue};\n border: none;\n border-radius: 20px;\n color: white;\n font-weight: 600;\n cursor: pointer;\n transition: background-color 0.2s ease;\n box-sizing: border-box;\n &:hover {\n background-color: #005ecb;\n }\n &:disabled {\n background-color: ${lightBlue};\n cursor: not-allowed;\n }\n `,\n\n uploadBtn: css`\n margin-left: 8px;\n width: 32px;\n height: 32px;\n border-radius: 50%;\n background-color: ${primaryBlue};\n color: white;\n font-weight: 700;\n font-size: 22px;\n line-height: 32px;\n text-align: center;\n cursor: pointer;\n border: none;\n user-select: none;\n &:hover {\n background-color: #005ecb;\n }\n `,\n\n clearBtn: css`\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n border: 1px solid rgb(228, 231, 236);\n border-radius: 12px;\n width: 45px;\n height: 45px;\n box-sizing: border-box;\n `,\n\n chatFooter: css`\n gap: 8px;\n position: relatative;\n z-index: 10;\n padding: 0 20px 10px 20px;\n `,\n\n footerTips: css`\n display: flex;\n align-items:center;\n justify-content: center;\n font-size: 12px;\n color: rgba(0,0,0,0.4);\n `,\n\n flexCenterGap2: css`\n display: flex;\n align-items: center;\n gap: 8px;\n `,\n\n iconHuihuarenqun: css`\n font-family: \"iconfont\";\n font-size: 16px;\n font-weight: 300;\n padding: 3px;\n border-radius: 6px;\n color: #181B25;\n cursor: pointer;\n &:hover {\n background: #E1E4EA;\n color: #7F56D9;\n }\n `,\n\n popoverFooter: css`\n display: flex;\n gap: 8px;\n justify-content: end;\n `,\n\n divider: css`\n width: 1px;\n height: 15px;\n margin-left: 3px;\n margin-right: 3px;\n background: #D0D5DD;\n `,\n\n flexCenterGap4: css`\n display: flex;\n align-items: center;\n gap: 4px;\n color: #7F56D9;\n cursor: pointer;\n &:hover {\n opacity: 0.8;\n }\n `,\n\n iconZengjiaDisabled: css`\n font-family: \"iconfont\";\n font-size: 25px;\n font-weight: 300;\n color: #D0D5DD;\n cursor: not-allowed;\n `,\n\n iconZengjiaNormal: css`\n font-family: \"iconfont\";\n font-size: 25px;\n font-weight: 300;\n color: #98A2B3;\n cursor: pointer;\n &:hover {\n color: #7F56D9;\n }\n `,\n actionHeaderWrapper: css`\n margin-bottom: 12px;\n `,\n actionHeaderItem: css`\n display: flex;\n align-items: center;\n height: 40px;\n box-sizing: border-box;\n padding: 10px 16px;\n margin-bottom: 8px;\n background: #f7fafd;\n cursor: pointer;\n border-radius: 8px;\n box-shadow: 0 1px 3px rgba(0,0,0,0.03);\n `,\n actionHeaderIcon: css`\n height: 14px;\n `,\n actionHeaderText: css`\n font-weight: 400;\n font-size: 14px;\n color: #3961F2;\n margin-left: 10px;\n margin-right: 6px;\n `,\n actionHeaderDetail: css`\n background: #F3F5FA;\n border-radius: 8px;\n overflow: hidden;\n `,\n actionDetailTitle: css`\n display: flex;\n align-items: center;\n padding: 0 16px;\n box-sizing: border-box;\n background: #EDEFF5;\n height: 32px;\n margin-bottom: 12px;\n cursor: pointer;\n `,\n actionHeaderDetailItem: css`\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 14px;\n padding: 0 16px;\n margin-bottom: 12px;\n color: #949494;\n `,\n actionHeaderCost: css`\n margin-left: auto;\n color: #888;\n font-size: 12px;\n min-width: 32px;\n text-align: right;\n `,\n}));\n\nexport const GlobalStyle: React.FC = () => (\n <Global\n styles={globalCss`\n .ant-bubble-footer {\n display: flex;\n align-items: center;\n min-width: 0,\n max-width: 600,\n /* 你想覆盖的其他样式 */\n }\n\n .ant-sender-content {\n textarea {\n word-break: break-all;\n }\n }\n\n .ant-avatar {\n background-color: transparent;\n }\n\n .ant-sender-actions-list {\n margin-left: -40px;\n }\n\n .ant-sender {\n box-shadow: none !important;\n }\n\n .ant-prompts-item {\n padding-block: 8px !important;\n }\n\n /* 用户消息气泡背景色 */\n .ant-bubble .user-content {\n background-color: #D8E0FD;\n }\n\n /* 助手消息气泡背景色 */\n .ant-bubble .assistant-content {\n background-color: #F3F5FA;\n }\n `}\n />\n);\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","XAiConversations","jsx","_jsx","meta","title","component","parameters","layout","tags","argTypes","BasicUsageStory","args","items","Array","from","length","map","_","index","key","concat","label","disabled","style","backgroundColor","minHeight","minWidth","display","alignItems","paddingInline","children","基础用法","render"],"sources":["../../../../src/components/XAiConversations/XAiConversations.stories.tsx"],"sourcesContent":["import React from 'react';\nimport type { ConversationsProps } from '@ant-design/x';\nimport { type GetProp } from 'antd';\nimport type { Meta, StoryObj } from '@storybook/react-vite';\nimport XAiConversations from '.';\n\nconst meta: Meta<typeof XAiConversations> = {\n title: 'AI组件/XAiConversations 对话记录管理',\n component: XAiConversations,\n parameters: {\n layout: 'centered',\n },\n tags: ['autodocs'],\n argTypes: {\n },\n};\n\nexport default meta;\n type Story = StoryObj<typeof meta>;\n\nconst BasicUsageStory = (args: any) => {\n const items: GetProp<ConversationsProps, 'items'> = Array.from({ length: 4 }).map((_, index) => ({\n key: `item${index + 1}`,\n label: `聊天记录 ${index + 1}`,\n disabled: index === 3,\n }));\n\n return (\n <div style={{\n backgroundColor: 'rgb(240, 242, 245)',\n minHeight: '300px',\n minWidth: '700px',\n display: 'flex',\n alignItems: 'center',\n paddingInline: '50px',\n }}\n >\n <XAiConversations\n
|
|
1
|
+
{"version":3,"names":["React","XAiConversations","jsx","_jsx","meta","title","component","parameters","layout","tags","argTypes","BasicUsageStory","args","items","Array","from","length","map","_","index","key","concat","label","disabled","style","backgroundColor","minHeight","minWidth","display","alignItems","paddingInline","children","sessionList","基础用法","render"],"sources":["../../../../src/components/XAiConversations/XAiConversations.stories.tsx"],"sourcesContent":["import React from 'react';\nimport type { ConversationsProps } from '@ant-design/x';\nimport { type GetProp } from 'antd';\nimport type { Meta, StoryObj } from '@storybook/react-vite';\nimport XAiConversations from '.';\n\nconst meta: Meta<typeof XAiConversations> = {\n title: 'AI组件/XAiConversations 对话记录管理',\n component: XAiConversations,\n parameters: {\n layout: 'centered',\n },\n tags: ['autodocs'],\n argTypes: {\n },\n};\n\nexport default meta;\n type Story = StoryObj<typeof meta>;\n\nconst BasicUsageStory = (args: any) => {\n const items: GetProp<ConversationsProps, 'items'> = Array.from({ length: 4 }).map((_, index) => ({\n key: `item${index + 1}`,\n label: `聊天记录 ${index + 1}`,\n disabled: index === 3,\n }));\n\n return (\n <div style={{\n backgroundColor: 'rgb(240, 242, 245)',\n minHeight: '300px',\n minWidth: '700px',\n display: 'flex',\n alignItems: 'center',\n paddingInline: '50px',\n }}\n >\n <XAiConversations\n sessionList={items}\n />\n </div>\n );\n};\n\nexport const 基础用法: Story = {\n render: BasicUsageStory,\n args: {\n },\n};\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAIzB,OAAOC,gBAAgB,MAAM,GAAG;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAEjC,IAAMC,IAAmC,GAAG;EAC1CC,KAAK,EAAE,8BAA8B;EACrCC,SAAS,EAAEL,gBAAgB;EAC3BM,UAAU,EAAE;IACVC,MAAM,EAAE;EACV,CAAC;EACDC,IAAI,EAAE,CAAC,UAAU,CAAC;EAClBC,QAAQ,EAAE,CACV;AACF,CAAC;AAED,eAAeN,IAAI;AAGnB,IAAMO,eAAe,GAAG,SAAlBA,eAAeA,CAAIC,IAAS,EAAK;EACrC,IAAMC,KAA2C,GAAGC,KAAK,CAACC,IAAI,CAAC;IAAEC,MAAM,EAAE;EAAE,CAAC,CAAC,CAACC,GAAG,CAAC,UAACC,CAAC,EAAEC,KAAK;IAAA,OAAM;MAC/FC,GAAG,SAAAC,MAAA,CAASF,KAAK,GAAG,CAAC,CAAE;MACvBG,KAAK,8BAAAD,MAAA,CAAUF,KAAK,GAAG,CAAC,CAAE;MAC1BI,QAAQ,EAAEJ,KAAK,KAAK;IACtB,CAAC;EAAA,CAAC,CAAC;EAEH,oBACEhB,IAAA;IAAKqB,KAAK,EAAE;MACVC,eAAe,EAAE,oBAAoB;MACrCC,SAAS,EAAE,OAAO;MAClBC,QAAQ,EAAE,OAAO;MACjBC,OAAO,EAAE,MAAM;MACfC,UAAU,EAAE,QAAQ;MACpBC,aAAa,EAAE;IACjB,CAAE;IAAAC,QAAA,eAEA5B,IAAA,CAACF,gBAAgB;MACf+B,WAAW,EAAEnB;IAAM,CACpB;EAAC,CACC,CAAC;AAEV,CAAC;AAED,OAAO,IAAMoB,IAAW,GAAG;EACzBC,MAAM,EAAEvB,eAAe;EACvBC,IAAI,EAAE,CACN;AACF,CAAC"}
|