@ai-group/chat-sdk 2.0.1 → 2.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. package/dist/cjs/assets/svg/AddChatIcon.js +5 -12
  2. package/dist/cjs/assets/svg/AddChatIcon.js.map +2 -2
  3. package/dist/cjs/components/DislikeFeedback.js +33 -25
  4. package/dist/cjs/components/DislikeFeedback.js.map +2 -2
  5. package/dist/cjs/components/FeedbackTags.js +5 -15
  6. package/dist/cjs/components/FeedbackTags.js.map +2 -2
  7. package/dist/cjs/components/XAiChatbot/XAiChatbot.stories.js +178 -86
  8. package/dist/cjs/components/XAiChatbot/XAiChatbot.stories.js.map +3 -3
  9. package/dist/cjs/components/XAiChatbot/index.js +199 -131
  10. package/dist/cjs/components/XAiChatbot/index.js.map +3 -3
  11. package/dist/cjs/components/XAiChatbot/styles.js +5 -15
  12. package/dist/cjs/components/XAiChatbot/styles.js.map +2 -2
  13. package/dist/cjs/components/XAiConversations/XAiConversations.stories.js +10 -10
  14. package/dist/cjs/components/XAiConversations/XAiConversations.stories.js.map +2 -2
  15. package/dist/cjs/components/XAiConversations/index.js +61 -41
  16. package/dist/cjs/components/XAiConversations/index.js.map +3 -3
  17. package/dist/cjs/components/XAiConversations/styles.js +5 -15
  18. package/dist/cjs/components/XAiConversations/styles.js.map +3 -3
  19. package/dist/cjs/components/XAiProvider/XAiProvider.stories.js +63 -54
  20. package/dist/cjs/components/XAiProvider/XAiProvider.stories.js.map +2 -2
  21. package/dist/cjs/components/XAiProvider/index.js +110 -99
  22. package/dist/cjs/components/XAiProvider/index.js.map +3 -3
  23. package/dist/cjs/components/XAiSDK.js +2 -2
  24. package/dist/cjs/components/XAiSDK.js.map +2 -2
  25. package/dist/cjs/components/XAiSender/XAiSender.stories.js +23 -8
  26. package/dist/cjs/components/XAiSender/XAiSender.stories.js.map +3 -3
  27. package/dist/cjs/components/XAiSender/index.js +161 -89
  28. package/dist/cjs/components/XAiSender/index.js.map +3 -3
  29. package/dist/cjs/components/XAiSender/styles.d.ts +0 -3
  30. package/dist/cjs/components/XAiSender/styles.js +29 -28
  31. package/dist/cjs/components/XAiSender/styles.js.map +2 -2
  32. package/dist/cjs/components/XAiWebSDKWrapper.js +3 -2
  33. package/dist/cjs/components/XAiWebSDKWrapper.js.map +2 -2
  34. package/dist/cjs/hooks/useAgentGenerator.d.ts +3 -3
  35. package/dist/cjs/hooks/useAgentGenerator.js +5 -5
  36. package/dist/cjs/hooks/useAgentGenerator.js.map +2 -2
  37. package/dist/cjs/hooks/useProviderContext.d.ts +2 -1
  38. package/dist/cjs/hooks/useProviderContext.js.map +2 -2
  39. package/dist/cjs/hooks/useXAiSDK.js +3 -2
  40. package/dist/cjs/hooks/useXAiSDK.js.map +2 -2
  41. package/dist/cjs/styles/common.js.map +2 -2
  42. package/dist/cjs/styles/markdown.js +5 -15
  43. package/dist/cjs/styles/markdown.js.map +2 -2
  44. package/dist/cjs/types/XAiChatbot.d.ts +8 -6
  45. package/dist/cjs/types/XAiChatbot.js.map +1 -1
  46. package/dist/cjs/types/XAiConversations.d.ts +2 -2
  47. package/dist/cjs/types/XAiConversations.js.map +1 -1
  48. package/dist/cjs/types/XAiMessage.d.ts +2 -1
  49. package/dist/cjs/types/XAiMessage.js.map +2 -2
  50. package/dist/cjs/types/XAiProvider.d.ts +3 -3
  51. package/dist/cjs/types/XAiProvider.js.map +2 -2
  52. package/dist/cjs/types/XAiSender.d.ts +16 -2
  53. package/dist/cjs/types/XAiSender.js.map +1 -1
  54. package/dist/cjs/types/index.js.map +1 -1
  55. package/dist/cjs/utils/umdEntry.d.ts +3 -2
  56. package/dist/cjs/utils/umdEntry.js +12 -5
  57. package/dist/cjs/utils/umdEntry.js.map +3 -3
  58. package/dist/esm/components/XAiChatbot/XAiChatbot.stories.js +60 -6
  59. package/dist/esm/components/XAiChatbot/XAiChatbot.stories.js.map +1 -1
  60. package/dist/esm/components/XAiChatbot/index.js +84 -72
  61. package/dist/esm/components/XAiChatbot/index.js.map +1 -1
  62. package/dist/esm/components/XAiConversations/index.js +2 -2
  63. package/dist/esm/components/XAiConversations/index.js.map +1 -1
  64. package/dist/esm/components/XAiConversations/styles.js.map +1 -1
  65. package/dist/esm/components/XAiProvider/XAiProvider.stories.js +3 -1
  66. package/dist/esm/components/XAiProvider/XAiProvider.stories.js.map +1 -1
  67. package/dist/esm/components/XAiProvider/index.js +1 -1
  68. package/dist/esm/components/XAiProvider/index.js.map +1 -1
  69. package/dist/esm/components/XAiSender/XAiSender.stories.js +33 -13
  70. package/dist/esm/components/XAiSender/XAiSender.stories.js.map +1 -1
  71. package/dist/esm/components/XAiSender/index.js +99 -57
  72. package/dist/esm/components/XAiSender/index.js.map +1 -1
  73. package/dist/esm/components/XAiSender/styles.d.ts +0 -3
  74. package/dist/esm/components/XAiSender/styles.js +3 -5
  75. package/dist/esm/components/XAiSender/styles.js.map +1 -1
  76. package/dist/esm/hooks/useAgentGenerator.d.ts +3 -3
  77. package/dist/esm/hooks/useAgentGenerator.js +7 -8
  78. package/dist/esm/hooks/useAgentGenerator.js.map +1 -1
  79. package/dist/esm/hooks/useProviderContext.d.ts +2 -1
  80. package/dist/esm/hooks/useProviderContext.js.map +1 -1
  81. package/dist/esm/styles/common.js.map +1 -1
  82. package/dist/esm/types/XAiChatbot.d.ts +8 -6
  83. package/dist/esm/types/XAiChatbot.js.map +1 -1
  84. package/dist/esm/types/XAiConversations.d.ts +2 -2
  85. package/dist/esm/types/XAiConversations.js.map +1 -1
  86. package/dist/esm/types/XAiMessage.d.ts +2 -1
  87. package/dist/esm/types/XAiMessage.js.map +1 -1
  88. package/dist/esm/types/XAiProvider.d.ts +3 -3
  89. package/dist/esm/types/XAiProvider.js.map +1 -1
  90. package/dist/esm/types/XAiSender.d.ts +16 -2
  91. package/dist/esm/types/XAiSender.js.map +1 -1
  92. package/dist/esm/types/index.js.map +1 -1
  93. package/dist/esm/utils/umdEntry.d.ts +3 -2
  94. package/dist/esm/utils/umdEntry.js +2 -2
  95. package/dist/esm/utils/umdEntry.js.map +1 -1
  96. package/dist/umd/chat-sdk.min.js +1 -1
  97. package/package.json +30 -26
@@ -22,7 +22,6 @@ import XAiSender from "../XAiSender";
22
22
  import { jsx as _jsx } from "react/jsx-runtime";
23
23
  import { jsxs as _jsxs } from "react/jsx-runtime";
24
24
  import { Fragment as _Fragment } from "react/jsx-runtime";
25
- var styles = useStyles();
26
25
  var md = new MarkdownIt({
27
26
  html: true,
28
27
  linkify: true,
@@ -167,12 +166,12 @@ export var ActionHeader = function ActionHeader(_ref) {
167
166
  className: styles.executeContent,
168
167
  children: execute.map(function (action, idx) {
169
168
  var _action$extra, _action$extra2, _action$extra3;
170
- var thinkIcon = (action === null || action === void 0 ? void 0 : action.expandIcon) || (action === null || action === void 0 || (_action$extra = action.extra) === null || _action$extra === void 0 ? void 0 : _action$extra.expandIcon) || (action === null || action === void 0 || (_action$extra2 = action.extra) === null || _action$extra2 === void 0 ? void 0 : _action$extra2.icon) || (action === null || action === void 0 ? void 0 : action.icon);
169
+ var thinkIcon2 = (action === null || action === void 0 ? void 0 : action.expandIcon) || (action === null || action === void 0 || (_action$extra = action.extra) === null || _action$extra === void 0 ? void 0 : _action$extra.expandIcon) || (action === null || action === void 0 || (_action$extra2 = action.extra) === null || _action$extra2 === void 0 ? void 0 : _action$extra2.icon) || (action === null || action === void 0 ? void 0 : action.icon);
171
170
  var thinkCost = (action === null || action === void 0 ? void 0 : action.cost) || (action === null || action === void 0 || (_action$extra3 = action.extra) === null || _action$extra3 === void 0 ? void 0 : _action$extra3.cost);
172
171
  return /*#__PURE__*/_jsxs("div", {
173
172
  className: styles.actionHeaderDetailItem,
174
- children: [thinkIcon && /*#__PURE__*/_jsx("img", {
175
- src: thinkIcon,
173
+ children: [thinkIcon2 && /*#__PURE__*/_jsx("img", {
174
+ src: thinkIcon2,
176
175
  alt: "icon",
177
176
  className: styles.actionHeaderIcon
178
177
  }), /*#__PURE__*/_jsx("span", {
@@ -205,43 +204,47 @@ export var defaultActions = [{
205
204
  tooltip: '删除'
206
205
  }];
207
206
  var XAiChatbot = function XAiChatbot(props) {
207
+ var styles = useStyles();
208
208
  // 使用新的 Hook 来处理 Provider 上下文
209
209
  var _useChatbotContext = useChatbotContext(props),
210
210
  mergedProps = _useChatbotContext.mergedProps;
211
- var _mergedProps$navbarSh = mergedProps.navbarShow,
212
- navbarShow = _mergedProps$navbarSh === void 0 ? false : _mergedProps$navbarSh,
213
- navbar = mergedProps.navbar,
214
- _mergedProps$renderNa = mergedProps.renderNavbar,
215
- renderNavbar = _mergedProps$renderNa === void 0 ? null : _mergedProps$renderNa,
216
- _mergedProps$clearBtn = mergedProps.clearBtnShow,
217
- clearBtnShow = _mergedProps$clearBtn === void 0 ? true : _mergedProps$clearBtn,
218
- _mergedProps$inputSho = mergedProps.inputShow,
219
- inputShow = _mergedProps$inputSho === void 0 ? true : _mergedProps$inputSho,
220
- _mergedProps$loading = mergedProps.loading,
221
- propLoading = _mergedProps$loading === void 0 ? false : _mergedProps$loading,
222
- messageTooltip = mergedProps.messageTooltip,
223
- avatar = mergedProps.avatar,
224
- userAvatar = mergedProps.userAvatar,
225
- propMessages = mergedProps.messages,
226
- _mergedProps$text = mergedProps.text,
227
- text = _mergedProps$text === void 0 ? '' : _mergedProps$text,
228
- _mergedProps$footerTi = mergedProps.footerTips,
229
- footerTips = _mergedProps$footerTi === void 0 ? '' : _mergedProps$footerTi,
230
- _mergedProps$empty = mergedProps.empty,
231
- empty = _mergedProps$empty === void 0 ? null : _mergedProps$empty,
232
- _mergedProps$emptySta = mergedProps.emptyStateImage,
233
- emptyStateImage = _mergedProps$emptySta === void 0 ? emptyIcon : _mergedProps$emptySta,
234
- _mergedProps$emptySta2 = mergedProps.emptyStateText,
235
- emptyStateText = _mergedProps$emptySta2 === void 0 ? '我的智能体' : _mergedProps$emptySta2,
236
- _mergedProps$messageA = mergedProps.messageActions,
237
- messageActions = _mergedProps$messageA === void 0 ? defaultActions : _mergedProps$messageA,
238
- onMessagesActionsCallback = mergedProps.onMessagesActionsCallback,
239
- onSuggestMessageClick = mergedProps.onSuggestMessageClick,
240
- onSend = mergedProps.onSend,
241
- onClear = mergedProps.onClear,
242
- onStop = mergedProps.onStop,
243
- providerId = mergedProps.providerId,
244
- messageTop = mergedProps.messageTop;
211
+ var _ref2 = mergedProps,
212
+ _ref2$navbarShow = _ref2.navbarShow,
213
+ navbarShow = _ref2$navbarShow === void 0 ? false : _ref2$navbarShow,
214
+ navbar = _ref2.navbar,
215
+ _ref2$renderNavbar = _ref2.renderNavbar,
216
+ renderNavbar = _ref2$renderNavbar === void 0 ? null : _ref2$renderNavbar,
217
+ _ref2$clearBtnShow = _ref2.clearBtnShow,
218
+ clearBtnShow = _ref2$clearBtnShow === void 0 ? true : _ref2$clearBtnShow,
219
+ _ref2$inputShow = _ref2.inputShow,
220
+ inputShow = _ref2$inputShow === void 0 ? true : _ref2$inputShow,
221
+ _ref2$loading = _ref2.loading,
222
+ propLoading = _ref2$loading === void 0 ? false : _ref2$loading,
223
+ messageTooltip = _ref2.messageTooltip,
224
+ avatar = _ref2.avatar,
225
+ userAvatar = _ref2.userAvatar,
226
+ propMessages = _ref2.messages,
227
+ _ref2$text = _ref2.text,
228
+ text = _ref2$text === void 0 ? '' : _ref2$text,
229
+ _ref2$footerTips = _ref2.footerTips,
230
+ footerTips = _ref2$footerTips === void 0 ? '' : _ref2$footerTips,
231
+ _ref2$empty = _ref2.empty,
232
+ empty = _ref2$empty === void 0 ? null : _ref2$empty,
233
+ _ref2$emptyStateImage = _ref2.emptyStateImage,
234
+ emptyStateImage = _ref2$emptyStateImage === void 0 ? emptyIcon : _ref2$emptyStateImage,
235
+ _ref2$emptyStateText = _ref2.emptyStateText,
236
+ emptyStateText = _ref2$emptyStateText === void 0 ? '我的智能体' : _ref2$emptyStateText,
237
+ _ref2$messageActions = _ref2.messageActions,
238
+ messageActions = _ref2$messageActions === void 0 ? defaultActions : _ref2$messageActions,
239
+ onMessagesActionsCallback = _ref2.onMessagesActionsCallback,
240
+ onSuggestMessageClick = _ref2.onSuggestMessageClick,
241
+ onSend = _ref2.onSend,
242
+ onClear = _ref2.onClear,
243
+ onStop = _ref2.onStop,
244
+ providerId = _ref2.providerId,
245
+ messageTop = _ref2.messageTop,
246
+ enableUpload = _ref2.enableUpload,
247
+ uploadRequest = _ref2.uploadRequest;
245
248
 
246
249
  // 如果在 Provider 中,使用 Provider 的状态
247
250
  var messages = mergedProps.messages || propMessages || [];
@@ -250,6 +253,10 @@ var XAiChatbot = function XAiChatbot(props) {
250
253
  _useState6 = _slicedToArray(_useState5, 2),
251
254
  content = _useState6[0],
252
255
  setContent = _useState6[1]; // 输入框文本
256
+ var _useState7 = useState([]),
257
+ _useState8 = _slicedToArray(_useState7, 2),
258
+ files = _useState8[0],
259
+ setFiles = _useState8[1];
253
260
  var lastMessageId = useRef('');
254
261
  var isScriptScrolling = useRef(false);
255
262
  var chatId = providerId ? "za-chatbot-container-".concat(providerId) : 'za-chatbot-container';
@@ -267,10 +274,10 @@ var XAiChatbot = function XAiChatbot(props) {
267
274
  };
268
275
 
269
276
  // 消息功能区组件
270
- var FooterActions = function FooterActions(_ref2) {
271
- var data = _ref2.data,
272
- _ref2$lastMessage = _ref2.lastMessage,
273
- lastMessage = _ref2$lastMessage === void 0 ? false : _ref2$lastMessage;
277
+ var FooterActions = function FooterActions(_ref3) {
278
+ var data = _ref3.data,
279
+ _ref3$lastMessage = _ref3.lastMessage,
280
+ lastMessage = _ref3$lastMessage === void 0 ? false : _ref3$lastMessage;
274
281
  return /*#__PURE__*/_jsx("div", {
275
282
  className: clsx(styles.flex, styles.gap(13)),
276
283
  children: messageActions.map(function (action, index) {
@@ -291,10 +298,10 @@ var XAiChatbot = function XAiChatbot(props) {
291
298
  };
292
299
 
293
300
  // 消息底部区域
294
- var MessageFooter = function MessageFooter(_ref3) {
295
- var data = _ref3.data,
296
- _ref3$lastMessage = _ref3.lastMessage,
297
- lastMessage = _ref3$lastMessage === void 0 ? false : _ref3$lastMessage;
301
+ var MessageFooter = function MessageFooter(_ref4) {
302
+ var data = _ref4.data,
303
+ _ref4$lastMessage = _ref4.lastMessage,
304
+ lastMessage = _ref4$lastMessage === void 0 ? false : _ref4$lastMessage;
298
305
  return /*#__PURE__*/_jsxs(_Fragment, {
299
306
  children: [messageTooltip === null || messageTooltip === void 0 ? void 0 : messageTooltip(data), /*#__PURE__*/_jsx(FooterActions, {
300
307
  data: data,
@@ -347,18 +354,17 @@ var XAiChatbot = function XAiChatbot(props) {
347
354
  };
348
355
 
349
356
  // 触发发送
350
- var handleSend = function handleSend(type, content) {
351
- if (content.trim()) {
352
- // 直接使用合并后的 onSend,自动处理 Provider 和独立模式
353
- onSend === null || onSend === void 0 || onSend(type, content);
354
- setContent(''); // 发送后清空输入框内容
355
- scrollToBottom();
356
- }
357
+ var handleSend = function handleSend(obj) {
358
+ // 直接使用合并后的 onSend,自动处理 Provider 和独立模式
359
+ onSend === null || onSend === void 0 || onSend(obj);
360
+ setContent(''); // 发送后清空输入框内容
361
+ setFiles([]); // 发送后清空文件
362
+ scrollToBottom();
357
363
  };
358
364
 
359
365
  // 输出内容
360
- var handleChange = function handleChange(content) {
361
- setContent(content);
366
+ var handleChange = function handleChange(str) {
367
+ setContent(str);
362
368
  };
363
369
 
364
370
  // 停止生成
@@ -426,20 +432,20 @@ var XAiChatbot = function XAiChatbot(props) {
426
432
  roles: rolesObject,
427
433
  className: styles.messageList,
428
434
  items: messages.map(function (msg) {
429
- var _ref4 = msg,
430
- id = _ref4.id,
431
- role = _ref4.role,
432
- status = _ref4.status,
433
- type = _ref4.type,
434
- _ref4$execute = _ref4.execute,
435
- execute = _ref4$execute === void 0 ? [] : _ref4$execute,
436
- _ref4$thinks = _ref4.thinks,
437
- thinks = _ref4$thinks === void 0 ? '' : _ref4$thinks,
438
- _ref4$extra = _ref4.extra,
439
- extra = _ref4$extra === void 0 ? {
435
+ var _ref5 = msg,
436
+ id = _ref5.id,
437
+ role = _ref5.role,
438
+ status = _ref5.status,
439
+ type = _ref5.type,
440
+ _ref5$execute = _ref5.execute,
441
+ execute = _ref5$execute === void 0 ? [] : _ref5$execute,
442
+ _ref5$thinks = _ref5.thinks,
443
+ thinks = _ref5$thinks === void 0 ? '' : _ref5$thinks,
444
+ _ref5$extra = _ref5.extra,
445
+ extra = _ref5$extra === void 0 ? {
440
446
  noFooter: false
441
- } : _ref4$extra,
442
- stepContent = _ref4.stepContent;
447
+ } : _ref5$extra,
448
+ stepContent = _ref5.stepContent;
443
449
  // 最后一条 AI消息标识
444
450
  if (role === MessageRole.assistant) {
445
451
  lastMessageId.current = id;
@@ -479,9 +485,9 @@ var XAiChatbot = function XAiChatbot(props) {
479
485
  return /*#__PURE__*/_jsxs(_Fragment, {
480
486
  children: [(stepContent === null || stepContent === void 0 ? void 0 : stepContent.length) && stepContent.map(function (item) {
481
487
  // 输出html字符串
482
- var html = md.render(item.content || '');
488
+ var html2 = md.render(item.content || '');
483
489
  // 生成React节点
484
- var stepHtmlString = reactHtmlParser(html);
490
+ var stepHtmlString = reactHtmlParser(html2);
485
491
  return /*#__PURE__*/_jsxs("div", {
486
492
  className: "ai-markdown-body step-content",
487
493
  style: {
@@ -510,9 +516,11 @@ var XAiChatbot = function XAiChatbot(props) {
510
516
  vertical: true,
511
517
  items: msg.content,
512
518
  onItemClick: function onItemClick(info) {
513
- onSuggestMessageClick === null || onSuggestMessageClick === void 0 || onSuggestMessageClick(info.data, id, 'text');
519
+ onSuggestMessageClick === null || onSuggestMessageClick === void 0 || onSuggestMessageClick(info.data, id);
514
520
  if (info.data.description) {
515
- onSend === null || onSend === void 0 || onSend('text', info.data.description);
521
+ onSend === null || onSend === void 0 || onSend({
522
+ text: info.data.description
523
+ });
516
524
  }
517
525
  }
518
526
  });
@@ -539,6 +547,10 @@ var XAiChatbot = function XAiChatbot(props) {
539
547
  loading: loading,
540
548
  footerTips: footerTips,
541
549
  clearBtnShow: clearBtnShow,
550
+ enableUpload: enableUpload,
551
+ files: files,
552
+ onChangeFiles: setFiles,
553
+ uploadRequest: uploadRequest,
542
554
  onChange: handleChange,
543
555
  onSubmit: handleSend,
544
556
  onStop: handleStop,
@@ -1 +1 @@
1
- {"version":3,"names":["React","useRef","useState","useMemo","Tooltip","Bubble","Prompts","UserOutlined","RedoOutlined","CopyOutlined","DeleteOutlined","clsx","MarkdownIt","reactHtmlParser","MarkdownGlobalStyle","MessageStatus","MessageRole","emptyIcon","arrowUp","arrowDown","thinkIcon","groupIcon","arrowDownBlue","useChatbotContext","useStyles","GlobalStyle","XAiSender","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","styles","md","html","linkify","typographer","defaultRender","renderer","rules","link_open","tokens","idx","options","env","self","renderToken","aIndex","attrIndex","attrPush","attrs","relIndex","ActionHeader","_ref","_last$extra","_ref$execute","execute","_ref$thinks","thinks","_useState","_useState2","_slicedToArray","expanded","setExpanded","_useState3","_useState4","executeExpanded","setExecuteExpanded","length","last","name","icon","extra","className","actionHeaderWrapper","children","actionTitle","onClick","v","src","alt","actionHeaderIcon","flex1","w","actionHeaderDetail","actionDetailTitle","pl","actionDetailContent","style","whiteSpace","executeHiddenWrapper","h","executeWrapper","executeTitle","executeHeaderIcon","executeContent","map","action","_action$extra","_action$extra2","_action$extra3","expandIcon","thinkCost","cost","actionHeaderDetailItem","actionHeaderCost","concat","uniqueId","defaultActions","key","tooltip","XAiChatbot","props","_useChatbotContext","mergedProps","_mergedProps$navbarSh","navbarShow","navbar","_mergedProps$renderNa","renderNavbar","_mergedProps$clearBtn","clearBtnShow","_mergedProps$inputSho","inputShow","_mergedProps$loading","loading","propLoading","messageTooltip","avatar","userAvatar","propMessages","messages","_mergedProps$text","text","_mergedProps$footerTi","footerTips","_mergedProps$empty","empty","_mergedProps$emptySta","emptyStateImage","_mergedProps$emptySta2","emptyStateText","_mergedProps$messageA","messageActions","onMessagesActionsCallback","onSuggestMessageClick","onSend","onClear","onStop","providerId","messageTop","_useState5","_useState6","content","setContent","lastMessageId","isScriptScrolling","chatId","scrollToBottom","current","setTimeout","mainChatWrapper","document","getElementById","scrollTop","scrollHeight","FooterActions","_ref2","data","_ref2$lastMessage","lastMessage","flex","gap","index","_action$render","title","cursor","render","call","MessageFooter","_ref3","_ref3$lastMessage","rolesObject","assistant","placement","bg","typing","step","interval","maxWidth","classNames","user","suggestion","visibility","variant","handleSend","type","trim","handleChange","handleStop","NavBar","subtitle","confirmClear","EmptyState","emptyWrapper","emptyImg","weight","textColor","id","wrapper","messageContainer","List","roles","messageList","items","msg","_ref4","role","status","_ref4$execute","_ref4$thinks","_ref4$extra","noFooter","stepContent","bubbleContent","init","header","_msg$content2","_msg$content","minWidth","htmlString","item","stepHtmlString","stepLine","vertical","onItemClick","info","description","footer","failed","value","onChange","onSubmit"],"sources":["../../../../src/components/XAiChatbot/index.tsx"],"sourcesContent":["// 文件: components/XAiChatbot/index.tsx\n\nimport React, {\n useRef,\n useState,\n useMemo,\n} from 'react';\nimport {\n Tooltip,\n GetProp,\n} from 'antd';\nimport {\n Bubble,\n Prompts,\n} from '@ant-design/x';\nimport {\n UserOutlined,\n RedoOutlined,\n CopyOutlined,\n DeleteOutlined,\n} from '@ant-design/icons';\nimport clsx from 'clsx';\nimport MarkdownIt from 'markdown-it';\nimport reactHtmlParser from 'react-html-parser';\nimport MarkdownGlobalStyle from '@/styles/markdown';\nimport {\n MessageStatus,\n MessageRole,\n Messages,\n} from '@/types/XAiMessage';\nimport {\n XAiChatbotProps,\n ActionItem,\n} from '@/types/XAiChatbot';\nimport emptyIcon from '@/assets/empty.png';\nimport arrowUp from '@/assets/arrow-up.png';\nimport arrowDown from '@/assets/arrow-down.png';\nimport thinkIcon from '@/assets/think.png';\nimport groupIcon from '@/assets/group.png';\nimport arrowDownBlue from '@/assets/arrow-down-blue.png';\nimport { useChatbotContext } from '@/hooks/useProviderContext';\nimport { useStyles, GlobalStyle } from './styles';\nimport XAiSender from '../XAiSender';\n\nconst styles = useStyles();\n\nconst md = new MarkdownIt({\n html: true,\n linkify: true,\n typographer: true,\n});\n\n// 自定义 link_open 渲染规则\nconst defaultRender = md.renderer.rules.link_open || ((tokens, idx, options, env, self) => {\n return self.renderToken(tokens, idx, options);\n});\n\n// a 标签打开规则\nmd.renderer.rules.link_open = (tokens, idx, options, env, self) => {\n // 添加 target=\"_blank\"\n const aIndex = tokens[idx].attrIndex('target');\n if (aIndex < 0) {\n tokens[idx].attrPush(['target', '_blank']);\n } else {\n tokens[idx].attrs![aIndex][1] = '_blank';\n }\n // 添加 rel=\"noopener noreferrer\"\n const relIndex = tokens[idx].attrIndex('rel');\n if (relIndex < 0) {\n tokens[idx].attrPush(['rel', 'noopener noreferrer']);\n } else {\n tokens[idx].attrs![relIndex][1] = 'noopener noreferrer';\n }\n return defaultRender(tokens, idx, options, env, self);\n};\n\nexport interface ActionHeaderProps {\n execute: any[];\n thinks: string;\n}\n\n// ActionHeader 组件\nexport const ActionHeader: React.FC<ActionHeaderProps> = ({ execute = [], thinks = '' }) => {\n const styles = useStyles();\n const [expanded, setExpanded] = useState(true);\n const [executeExpanded, setExecuteExpanded] = useState(false);\n\n // 关键修复:只要有思考内容或执行过程就显示,不要同时要求两者都有\n if (!thinks && (!execute || execute.length === 0)) return null;\n\n const last = execute[execute.length - 1] || {};\n const { name } = last;\n const icon = last?.icon || last?.extra?.icon;\n\n return (\n <div className={styles.actionHeaderWrapper}>\n {!expanded && (\n <div className={styles.actionTitle} onClick={() => setExpanded((v) => !v)}>\n <img src={thinkIcon} alt=\"icon\" className={styles.actionHeaderIcon} />\n <span className={styles.flex1}>运行过程</span>\n <img alt=\"展开icon\" src={arrowDown} className={styles.w('16px')} />\n </div>\n )}\n {expanded && (\n <div className={styles.actionHeaderDetail}>\n <div className={styles.actionDetailTitle} onClick={() => setExpanded((v) => !v)}>\n <img src={thinkIcon} alt=\"\" className={clsx(styles.w(14))} />\n <div className={clsx(styles.flex1, styles.pl(10))}>隐藏运行过程</div>\n <img alt=\"收起icon\" src={arrowUp} className={styles.w('16px')} />\n </div>\n\n {thinks && (\n <div className={styles.actionDetailContent} style={{ whiteSpace: 'pre-line' }}>\n {thinks}\n </div>\n )}\n\n {execute && execute.length > 0 && (\n <>\n {!executeExpanded && (\n <div className={styles.executeHiddenWrapper} onClick={() => setExecuteExpanded((v) => !v)}>\n {icon && <img src={icon} alt=\"icon\" className={styles.h(15)} />}\n <span className={styles.flex1}>{name}</span>\n <img alt=\"工具icon\" src={arrowDownBlue} className={styles.w('16px')} />\n </div>\n )}\n {executeExpanded && (\n <div className={styles.executeWrapper}>\n <div className={styles.executeTitle} onClick={() => setExecuteExpanded((v) => !v)}>\n <img src={groupIcon} alt=\"icon\" className={styles.executeHeaderIcon} />\n <span className={styles.flex1}>隐藏运行详情</span>\n <img alt=\"展开详情icon\" src={arrowUp} className={styles.w('16px')} />\n </div>\n <div className={styles.executeContent}>\n {execute.map((action: any, idx: number) => {\n const thinkIcon = action?.expandIcon || action?.extra?.expandIcon || action?.extra?.icon || action?.icon;\n const thinkCost = action?.cost || action?.extra?.cost;\n return (\n <div key={action.uniqueId || idx} className={styles.actionHeaderDetailItem}>\n {thinkIcon && <img src={thinkIcon} alt=\"icon\" className={styles.actionHeaderIcon} />}\n <span>{action?.name}</span>\n <span className={styles.actionHeaderCost}>{thinkCost ? `${thinkCost}s` : ''}</span>\n </div>\n );\n })}\n </div>\n </div>\n )}\n </>\n )}\n </div>\n )}\n </div>\n );\n};\n\n// 默认消息功能区\nexport const defaultActions: ActionItem[] = [\n {\n key: 'redo',\n icon: <RedoOutlined />,\n tooltip: '重新生成',\n },\n {\n key: 'copy',\n icon: <CopyOutlined />,\n tooltip: '复制',\n },\n {\n key: 'delete',\n icon: <DeleteOutlined />,\n tooltip: '删除',\n },\n];\n\nconst XAiChatbot: React.FC<XAiChatbotProps> = (props) => {\n // 使用新的 Hook 来处理 Provider 上下文\n const { mergedProps } = useChatbotContext(props);\n\n const {\n navbarShow = false,\n navbar,\n renderNavbar = null,\n clearBtnShow = true,\n inputShow = true,\n // renderMessageContent,\n // quickReplies = [],\n // quickRepliesVisible = true,\n // onQuickReplyClick,\n loading: propLoading = false,\n messageTooltip,\n avatar,\n userAvatar,\n messages: propMessages,\n text = '',\n footerTips = '',\n empty = null,\n emptyStateImage = emptyIcon,\n emptyStateText = '我的智能体',\n messageActions = defaultActions,\n onMessagesActionsCallback,\n // 点击帮助消息\n onSuggestMessageClick,\n onSend,\n onClear,\n onStop,\n providerId,\n // 消息顶部\n messageTop,\n } = mergedProps;\n\n // 如果在 Provider 中,使用 Provider 的状态\n const messages = mergedProps.messages || propMessages || [];\n const loading = mergedProps.loading || propLoading;\n\n const [content, setContent] = useState<string>(text); // 输入框文本\n const lastMessageId = useRef<string>('');\n const isScriptScrolling = useRef<boolean>(false);\n const chatId = providerId ? `za-chatbot-container-${providerId}` : 'za-chatbot-container';\n\n // 滚动到最底部\n const scrollToBottom = () => {\n isScriptScrolling.current = true;\n setTimeout(() => {\n const mainChatWrapper = document.getElementById(chatId);\n if (mainChatWrapper) {\n mainChatWrapper.scrollTop = mainChatWrapper?.scrollHeight;\n }\n isScriptScrolling.current = false;\n }, 0);\n };\n\n // 消息功能区组件\n const FooterActions: React.FC<{ data: Messages; lastMessage: boolean }> = ({ data, lastMessage = false }) => (\n <div className={clsx(styles.flex, styles.gap(13))}>\n {messageActions.map((action: ActionItem, index: number) => {\n if (!lastMessage && action.key === 'redo') return null;\n return (\n <Tooltip key={action.key} title={action.tooltip}>\n <span className={styles.cursor('pointer')} onClick={() => onMessagesActionsCallback?.(index, data)}>\n {action.icon}\n {action.render?.(index, data)}\n </span>\n </Tooltip>\n );\n })}\n </div>\n );\n\n // 消息底部区域\n const MessageFooter: React.FC<{ data: Messages; lastMessage: boolean }> = ({ data, lastMessage = false }) => (\n <>\n {messageTooltip?.(data)}\n <FooterActions data={data} lastMessage={lastMessage} />\n </>\n );\n\n // 聊天角色\n const rolesObject: GetProp<typeof Bubble.List, 'roles'> = {\n assistant: {\n placement: 'start',\n avatar: { icon: avatar || <UserOutlined className={clsx(styles.bg('#fde3cf'), styles.userAvatar)} /> },\n typing: { step: 5, interval: 20 },\n style: {\n maxWidth: 600,\n },\n classNames: {\n content: 'assistant-content',\n },\n },\n user: {\n placement: 'end',\n avatar: { icon: userAvatar || <UserOutlined className={clsx(styles.bg('#87d068'), styles.userAvatar)} /> },\n classNames: {\n content: 'user-content',\n },\n },\n suggestion: {\n placement: 'start',\n avatar: { icon: <UserOutlined />, style: { visibility: 'hidden' } },\n variant: 'borderless',\n },\n };\n\n // 触发发送\n const handleSend = (type: string, content: string) => {\n if (content.trim()) {\n // 直接使用合并后的 onSend,自动处理 Provider 和独立模式\n onSend?.(type, content);\n setContent(''); // 发送后清空输入框内容\n scrollToBottom();\n }\n };\n\n // 输出内容\n const handleChange = (content: string) => {\n setContent(content);\n };\n\n // 停止生成\n const handleStop = () => {\n onStop?.();\n };\n\n // 导航栏\n const NavBar: React.FC = () => {\n if (renderNavbar) {\n return renderNavbar();\n } if (navbar?.title) {\n return (\n <header className={styles.navbar}>\n {navbar.avatar && <img src={navbar.avatar} className={styles.avatar} alt=\"\" />}\n <div>\n <div className={styles.title}>{navbar.title}</div>\n <div className={styles.subtitle}>{navbar.subtitle}</div>\n </div>\n </header>\n );\n }\n return <></>;\n };\n\n // 确认清除\n const confirmClear = () => {\n onClear?.();\n };\n\n // 空状态\n const EmptyState = useMemo(() => () => (\n empty || (\n <div className={styles.emptyWrapper}>\n <img src={emptyStateImage} alt=\"空状态图标\" className={styles.emptyImg} />\n <div className={clsx(styles.text(16), styles.weight(600), styles.textColor('#343434'))}>{emptyStateText}</div>\n </div>\n )\n // eslint-disable-next-line react-hooks/exhaustive-deps\n ), [emptyStateImage, emptyStateText]);\n\n return (\n <>\n <GlobalStyle />\n <MarkdownGlobalStyle />\n <div id=\"x-ai-chatbot\" className={styles.wrapper}>\n { navbarShow && <NavBar /> }\n {/** 消息容器 */}\n <div className={styles.messageContainer}>\n {/* 消息列表主体 */}\n {\n messages?.length\n ? (\n <Bubble.List\n id={chatId}\n roles={rolesObject}\n className={styles.messageList}\n items={messages.map((msg: any) => {\n const { id, role, status, type, execute = [], thinks = '', extra = { noFooter: false }, stepContent } = msg as Messages;\n // 最后一条 AI消息标识\n if (role === MessageRole.assistant) {\n lastMessageId.current = id;\n }\n // 会话内容\n const bubbleContent: any = {\n key: id,\n role,\n loading: status === MessageStatus.init,\n header: (() => messageTop\n || (\n <ActionHeader\n execute={execute}\n thinks={thinks}\n />\n )),\n content: (() => {\n // 文本消息\n if (type === 'TextMessage') {\n // 用户消息\n if (role === 'user') {\n return (\n <div\n className=\"ai-markdown-body\"\n style={{\n minWidth: 0,\n maxWidth: 600,\n }}\n >\n {msg.content?.text}\n </div>\n );\n }\n\n // 输出html字符串\n const html = md.render(msg.content?.text || '');\n // 生成React节点\n const htmlString = reactHtmlParser(html);\n return (\n <>\n {/* 输出阶段性回答内容 */}\n {stepContent?.length && stepContent.map((item) => {\n // 输出html字符串\n const html = md.render(item.content || '');\n // 生成React节点\n const stepHtmlString = reactHtmlParser(html);\n return (\n <div\n key={item.id}\n className=\"ai-markdown-body step-content\"\n style={{\n minWidth: 0,\n maxWidth: 600,\n }}\n >\n <div>\n {stepHtmlString}\n </div>\n <div className={styles.stepLine}></div>\n </div>\n )\n })}\n {/** 输出最终回答内容 */}\n <div\n className=\"ai-markdown-body\"\n style={{\n minWidth: 0,\n maxWidth: 600,\n }}\n >\n {htmlString}\n </div>\n </>\n );\n }\n // 提示类型\n if (type === 'SuggestionMessage') {\n return (\n <Prompts\n vertical\n items={msg.content as any}\n onItemClick={(info) => {\n onSuggestMessageClick?.(info.data, id, 'text');\n if (info.data.description) {\n onSend?.('text', info.data.description as string);\n }\n }}\n />\n );\n }\n // 其他类型...\n return null;\n })(),\n };\n\n if (!extra.noFooter) {\n bubbleContent.footer = (() => {\n return (\n role === MessageRole.assistant && status !== MessageStatus.failed && (\n <>\n <MessageFooter data={msg as Messages} lastMessage={lastMessageId.current === id} />\n </>\n )\n );\n });\n }\n\n return bubbleContent;\n })}\n />\n )\n : (\n <EmptyState />\n )\n }\n </div>\n {/* 输入框 */}\n { inputShow && (\n <XAiSender\n value={content}\n loading={loading}\n footerTips={footerTips}\n clearBtnShow={clearBtnShow}\n onChange={handleChange}\n onSubmit={handleSend}\n onStop={handleStop}\n onClear={confirmClear}\n />\n ) }\n </div>\n </>\n );\n};\n\nexport default XAiChatbot;\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","useRef","useState","useMemo","Tooltip","Bubble","Prompts","UserOutlined","RedoOutlined","CopyOutlined","DeleteOutlined","clsx","MarkdownIt","reactHtmlParser","MarkdownGlobalStyle","MessageStatus","MessageRole","emptyIcon","arrowUp","arrowDown","thinkIcon","groupIcon","arrowDownBlue","useChatbotContext","useStyles","GlobalStyle","XAiSender","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","md","html","linkify","typographer","defaultRender","renderer","rules","link_open","tokens","idx","options","env","self","renderToken","aIndex","attrIndex","attrPush","attrs","relIndex","ActionHeader","_ref","_last$extra","_ref$execute","execute","_ref$thinks","thinks","styles","_useState","_useState2","_slicedToArray","expanded","setExpanded","_useState3","_useState4","executeExpanded","setExecuteExpanded","length","last","name","icon","extra","className","actionHeaderWrapper","children","actionTitle","onClick","v","src","alt","actionHeaderIcon","flex1","w","actionHeaderDetail","actionDetailTitle","pl","actionDetailContent","style","whiteSpace","executeHiddenWrapper","h","executeWrapper","executeTitle","executeHeaderIcon","executeContent","map","action","_action$extra","_action$extra2","_action$extra3","thinkIcon2","expandIcon","thinkCost","cost","actionHeaderDetailItem","actionHeaderCost","concat","uniqueId","defaultActions","key","tooltip","XAiChatbot","props","_useChatbotContext","mergedProps","_ref2","_ref2$navbarShow","navbarShow","navbar","_ref2$renderNavbar","renderNavbar","_ref2$clearBtnShow","clearBtnShow","_ref2$inputShow","inputShow","_ref2$loading","loading","propLoading","messageTooltip","avatar","userAvatar","propMessages","messages","_ref2$text","text","_ref2$footerTips","footerTips","_ref2$empty","empty","_ref2$emptyStateImage","emptyStateImage","_ref2$emptyStateText","emptyStateText","_ref2$messageActions","messageActions","onMessagesActionsCallback","onSuggestMessageClick","onSend","onClear","onStop","providerId","messageTop","enableUpload","uploadRequest","_useState5","_useState6","content","setContent","_useState7","_useState8","files","setFiles","lastMessageId","isScriptScrolling","chatId","scrollToBottom","current","setTimeout","mainChatWrapper","document","getElementById","scrollTop","scrollHeight","FooterActions","_ref3","data","_ref3$lastMessage","lastMessage","flex","gap","index","_action$render","title","cursor","render","call","MessageFooter","_ref4","_ref4$lastMessage","rolesObject","assistant","placement","bg","typing","step","interval","maxWidth","classNames","user","suggestion","visibility","variant","handleSend","obj","handleChange","str","handleStop","NavBar","subtitle","confirmClear","EmptyState","emptyWrapper","emptyImg","weight","textColor","id","wrapper","messageContainer","List","roles","messageList","items","msg","_ref5","role","status","type","_ref5$execute","_ref5$thinks","_ref5$extra","noFooter","stepContent","bubbleContent","init","header","_msg$content2","_msg$content","minWidth","htmlString","item","html2","stepHtmlString","stepLine","vertical","onItemClick","info","description","footer","failed","value","onChangeFiles","onChange","onSubmit"],"sources":["../../../../src/components/XAiChatbot/index.tsx"],"sourcesContent":["// 文件: components/XAiChatbot/index.tsx\n\nimport React, {\n useRef,\n useState,\n useMemo,\n} from 'react';\nimport {\n Tooltip,\n GetProp,\n} from 'antd';\nimport {\n Bubble,\n Prompts,\n} from '@ant-design/x';\nimport {\n UserOutlined,\n RedoOutlined,\n CopyOutlined,\n DeleteOutlined,\n} from '@ant-design/icons';\nimport clsx from 'clsx';\nimport MarkdownIt from 'markdown-it';\nimport reactHtmlParser from 'react-html-parser';\nimport type { Attachment } from '@ant-design/x/es/attachments';\nimport MarkdownGlobalStyle from '@/styles/markdown';\nimport {\n MessageStatus,\n MessageRole,\n Messages,\n} from '@/types/XAiMessage';\nimport {\n XAiChatbotProps,\n ActionItem,\n} from '@/types/XAiChatbot';\nimport emptyIcon from '@/assets/empty.png';\nimport arrowUp from '@/assets/arrow-up.png';\nimport arrowDown from '@/assets/arrow-down.png';\nimport thinkIcon from '@/assets/think.png';\nimport groupIcon from '@/assets/group.png';\nimport arrowDownBlue from '@/assets/arrow-down-blue.png';\nimport { useChatbotContext } from '@/hooks/useProviderContext';\nimport { useStyles, GlobalStyle } from './styles';\nimport XAiSender from '../XAiSender';\nimport type { SendContent } from '@/types';\n\nconst md = new MarkdownIt({\n html: true,\n linkify: true,\n typographer: true,\n});\n\n// 自定义 link_open 渲染规则\nconst defaultRender = md.renderer.rules.link_open || ((tokens, idx, options, env, self) => {\n return self.renderToken(tokens, idx, options);\n});\n\n// a 标签打开规则\nmd.renderer.rules.link_open = (tokens, idx, options, env, self) => {\n // 添加 target=\"_blank\"\n const aIndex = tokens[idx].attrIndex('target');\n if (aIndex < 0) {\n tokens[idx].attrPush(['target', '_blank']);\n } else {\n tokens[idx].attrs![aIndex][1] = '_blank';\n }\n // 添加 rel=\"noopener noreferrer\"\n const relIndex = tokens[idx].attrIndex('rel');\n if (relIndex < 0) {\n tokens[idx].attrPush(['rel', 'noopener noreferrer']);\n } else {\n tokens[idx].attrs![relIndex][1] = 'noopener noreferrer';\n }\n return defaultRender(tokens, idx, options, env, self);\n};\n\nexport interface ActionHeaderProps {\n execute: any[];\n thinks: string;\n}\n\n// ActionHeader 组件\nexport const ActionHeader: React.FC<ActionHeaderProps> = ({ execute = [], thinks = '' }) => {\n const styles = useStyles();\n const [expanded, setExpanded] = useState(true);\n const [executeExpanded, setExecuteExpanded] = useState(false);\n\n // 关键修复:只要有思考内容或执行过程就显示,不要同时要求两者都有\n if (!thinks && (!execute || execute.length === 0)) return null;\n\n const last = execute[execute.length - 1] || {};\n const { name } = last;\n const icon = last?.icon || last?.extra?.icon;\n\n return (\n <div className={styles.actionHeaderWrapper}>\n {!expanded && (\n <div className={styles.actionTitle} onClick={() => setExpanded((v) => !v)}>\n <img src={thinkIcon} alt=\"icon\" className={styles.actionHeaderIcon} />\n <span className={styles.flex1}>运行过程</span>\n <img alt=\"展开icon\" src={arrowDown} className={styles.w('16px')} />\n </div>\n )}\n {expanded && (\n <div className={styles.actionHeaderDetail}>\n <div className={styles.actionDetailTitle} onClick={() => setExpanded((v) => !v)}>\n <img src={thinkIcon} alt=\"\" className={clsx(styles.w(14))} />\n <div className={clsx(styles.flex1, styles.pl(10))}>隐藏运行过程</div>\n <img alt=\"收起icon\" src={arrowUp} className={styles.w('16px')} />\n </div>\n\n {thinks && (\n <div className={styles.actionDetailContent} style={{ whiteSpace: 'pre-line' }}>\n {thinks}\n </div>\n )}\n\n {execute && execute.length > 0 && (\n <>\n {!executeExpanded && (\n <div className={styles.executeHiddenWrapper} onClick={() => setExecuteExpanded((v) => !v)}>\n {icon && <img src={icon} alt=\"icon\" className={styles.h(15)} />}\n <span className={styles.flex1}>{name}</span>\n <img alt=\"工具icon\" src={arrowDownBlue} className={styles.w('16px')} />\n </div>\n )}\n {executeExpanded && (\n <div className={styles.executeWrapper}>\n <div className={styles.executeTitle} onClick={() => setExecuteExpanded((v) => !v)}>\n <img src={groupIcon} alt=\"icon\" className={styles.executeHeaderIcon} />\n <span className={styles.flex1}>隐藏运行详情</span>\n <img alt=\"展开详情icon\" src={arrowUp} className={styles.w('16px')} />\n </div>\n <div className={styles.executeContent}>\n {execute.map((action: any, idx: number) => {\n const thinkIcon2 = action?.expandIcon || action?.extra?.expandIcon || action?.extra?.icon || action?.icon;\n const thinkCost = action?.cost || action?.extra?.cost;\n return (\n <div key={action.uniqueId || idx} className={styles.actionHeaderDetailItem}>\n {thinkIcon2 && <img src={thinkIcon2} alt=\"icon\" className={styles.actionHeaderIcon} />}\n <span>{action?.name}</span>\n <span className={styles.actionHeaderCost}>{thinkCost ? `${thinkCost}s` : ''}</span>\n </div>\n );\n })}\n </div>\n </div>\n )}\n </>\n )}\n </div>\n )}\n </div>\n );\n};\n\n// 默认消息功能区\nexport const defaultActions: ActionItem[] = [\n {\n key: 'redo',\n icon: <RedoOutlined />,\n tooltip: '重新生成',\n },\n {\n key: 'copy',\n icon: <CopyOutlined />,\n tooltip: '复制',\n },\n {\n key: 'delete',\n icon: <DeleteOutlined />,\n tooltip: '删除',\n },\n];\n\nconst XAiChatbot: React.FC<XAiChatbotProps> = (props) => {\n const styles = useStyles();\n // 使用新的 Hook 来处理 Provider 上下文\n const { mergedProps } = useChatbotContext(props);\n\n const {\n navbarShow = false,\n navbar,\n renderNavbar = null,\n clearBtnShow = true,\n inputShow = true,\n // renderMessageContent,\n // quickReplies = [],\n // quickRepliesVisible = true,\n // onQuickReplyClick,\n loading: propLoading = false,\n messageTooltip,\n avatar,\n userAvatar,\n messages: propMessages,\n text = '',\n footerTips = '',\n empty = null,\n emptyStateImage = emptyIcon,\n emptyStateText = '我的智能体',\n messageActions = defaultActions,\n onMessagesActionsCallback,\n // 点击帮助消息\n onSuggestMessageClick,\n onSend,\n onClear,\n onStop,\n providerId,\n // 消息顶部\n messageTop,\n enableUpload,\n uploadRequest,\n } = mergedProps as XAiChatbotProps;\n\n // 如果在 Provider 中,使用 Provider 的状态\n const messages = mergedProps.messages || propMessages || [];\n const loading = mergedProps.loading || propLoading;\n\n const [content, setContent] = useState<string>(text); // 输入框文本\n const [files, setFiles] = useState<Attachment[]>([]);\n const lastMessageId = useRef<string>('');\n const isScriptScrolling = useRef<boolean>(false);\n const chatId = providerId ? `za-chatbot-container-${providerId}` : 'za-chatbot-container';\n\n // 滚动到最底部\n const scrollToBottom = () => {\n isScriptScrolling.current = true;\n setTimeout(() => {\n const mainChatWrapper = document.getElementById(chatId);\n if (mainChatWrapper) {\n mainChatWrapper.scrollTop = mainChatWrapper?.scrollHeight;\n }\n isScriptScrolling.current = false;\n }, 0);\n };\n\n // 消息功能区组件\n const FooterActions: React.FC<{ data: Messages; lastMessage: boolean }> = ({ data, lastMessage = false }) => (\n <div className={clsx(styles.flex, styles.gap(13))}>\n {messageActions.map((action: ActionItem, index: number) => {\n if (!lastMessage && action.key === 'redo') return null;\n return (\n <Tooltip key={action.key} title={action.tooltip}>\n <span className={styles.cursor('pointer')} onClick={() => onMessagesActionsCallback?.(index, data)}>\n {action.icon}\n {action.render?.(index, data)}\n </span>\n </Tooltip>\n );\n })}\n </div>\n );\n\n // 消息底部区域\n const MessageFooter: React.FC<{ data: Messages; lastMessage: boolean }> = ({ data, lastMessage = false }) => (\n <>\n {messageTooltip?.(data)}\n <FooterActions data={data} lastMessage={lastMessage} />\n </>\n );\n\n // 聊天角色\n const rolesObject: GetProp<typeof Bubble.List, 'roles'> = {\n assistant: {\n placement: 'start',\n avatar: { icon: avatar || <UserOutlined className={clsx(styles.bg('#fde3cf'), styles.userAvatar)} /> },\n typing: { step: 5, interval: 20 },\n style: {\n maxWidth: 600,\n },\n classNames: {\n content: 'assistant-content',\n },\n },\n user: {\n placement: 'end',\n avatar: { icon: userAvatar || <UserOutlined className={clsx(styles.bg('#87d068'), styles.userAvatar)} /> },\n classNames: {\n content: 'user-content',\n },\n },\n suggestion: {\n placement: 'start',\n avatar: { icon: <UserOutlined />, style: { visibility: 'hidden' } },\n variant: 'borderless',\n },\n };\n\n // 触发发送\n const handleSend = (obj: SendContent) => {\n // 直接使用合并后的 onSend,自动处理 Provider 和独立模式\n onSend?.(obj);\n setContent(''); // 发送后清空输入框内容\n setFiles([]); // 发送后清空文件\n scrollToBottom();\n };\n\n // 输出内容\n const handleChange = (str: string) => {\n setContent(str);\n };\n\n // 停止生成\n const handleStop = () => {\n onStop?.();\n };\n\n // 导航栏\n const NavBar: React.FC = () => {\n if (renderNavbar) {\n return renderNavbar();\n } if (navbar?.title) {\n return (\n <header className={styles.navbar}>\n {navbar.avatar && <img src={navbar.avatar} className={styles.avatar} alt=\"\" />}\n <div>\n <div className={styles.title}>{navbar.title}</div>\n <div className={styles.subtitle}>{navbar.subtitle}</div>\n </div>\n </header>\n );\n }\n return <></>;\n };\n\n // 确认清除\n const confirmClear = () => {\n onClear?.();\n };\n\n // 空状态\n const EmptyState = useMemo(() => () => (\n empty || (\n <div className={styles.emptyWrapper}>\n <img src={emptyStateImage} alt=\"空状态图标\" className={styles.emptyImg} />\n <div className={clsx(styles.text(16), styles.weight(600), styles.textColor('#343434'))}>{emptyStateText}</div>\n </div>\n )\n // eslint-disable-next-line react-hooks/exhaustive-deps\n ), [emptyStateImage, emptyStateText]);\n\n return (\n <>\n <GlobalStyle />\n <MarkdownGlobalStyle />\n <div id=\"x-ai-chatbot\" className={styles.wrapper}>\n { navbarShow && <NavBar /> }\n {/** 消息容器 */}\n <div className={styles.messageContainer}>\n {/* 消息列表主体 */}\n {\n messages?.length\n ? (\n <Bubble.List\n id={chatId}\n roles={rolesObject}\n className={styles.messageList}\n items={messages.map((msg: any) => {\n const { id, role, status, type, execute = [], thinks = '', extra = { noFooter: false }, stepContent } = msg as Messages;\n // 最后一条 AI消息标识\n if (role === MessageRole.assistant) {\n lastMessageId.current = id;\n }\n // 会话内容\n const bubbleContent: any = {\n key: id,\n role,\n loading: status === MessageStatus.init,\n header: (() => messageTop\n || (\n <ActionHeader\n execute={execute}\n thinks={thinks}\n />\n )),\n content: (() => {\n // 文本消息\n if (type === 'TextMessage') {\n // 用户消息\n if (role === 'user') {\n return (\n <div\n className=\"ai-markdown-body\"\n style={{\n minWidth: 0,\n maxWidth: 600,\n }}\n >\n {msg.content?.text}\n </div>\n );\n }\n\n // 输出html字符串\n const html = md.render(msg.content?.text || '');\n // 生成React节点\n const htmlString = reactHtmlParser(html);\n return (\n <>\n {/* 输出阶段性回答内容 */}\n {stepContent?.length && stepContent.map((item) => {\n // 输出html字符串\n const html2 = md.render(item.content || '');\n // 生成React节点\n const stepHtmlString = reactHtmlParser(html2);\n return (\n <div\n key={item.id}\n className=\"ai-markdown-body step-content\"\n style={{\n minWidth: 0,\n maxWidth: 600,\n }}\n >\n <div>\n {stepHtmlString}\n </div>\n <div className={styles.stepLine} />\n </div>\n );\n })}\n {/** 输出最终回答内容 */}\n <div\n className=\"ai-markdown-body\"\n style={{\n minWidth: 0,\n maxWidth: 600,\n }}\n >\n {htmlString}\n </div>\n </>\n );\n }\n // 提示类型\n if (type === 'SuggestionMessage') {\n return (\n <Prompts\n vertical\n items={msg.content as any}\n onItemClick={(info) => {\n onSuggestMessageClick?.(info.data, id);\n if (info.data.description) {\n onSend?.({ text: info.data.description as string });\n }\n }}\n />\n );\n }\n // 其他类型...\n return null;\n })(),\n };\n\n if (!extra.noFooter) {\n bubbleContent.footer = (() => {\n return (\n role === MessageRole.assistant && status !== MessageStatus.failed && (\n <>\n <MessageFooter data={msg as Messages} lastMessage={lastMessageId.current === id} />\n </>\n )\n );\n });\n }\n\n return bubbleContent;\n })}\n />\n )\n : (\n <EmptyState />\n )\n }\n </div>\n {/* 输入框 */}\n { inputShow && (\n <XAiSender\n value={content}\n loading={loading}\n footerTips={footerTips}\n clearBtnShow={clearBtnShow}\n enableUpload={enableUpload}\n files={files}\n onChangeFiles={setFiles}\n uploadRequest={uploadRequest}\n onChange={handleChange}\n onSubmit={handleSend}\n onStop={handleStop}\n onClear={confirmClear}\n />\n ) }\n </div>\n </>\n );\n};\n\nexport default XAiChatbot;\n"],"mappings":"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"}
@@ -4,13 +4,13 @@ import React, { useState } from 'react';
4
4
  import { Conversations } from '@ant-design/x';
5
5
  import { RedoOutlined } from '@ant-design/icons';
6
6
  import { Spin, Divider } from 'antd';
7
+ import InfiniteScroll from 'react-infinite-scroll-component';
8
+ import clsx from 'clsx';
7
9
  import { useChatbotContext } from "../../hooks/useProviderContext";
8
10
  import logo from "../../assets/logo.png";
9
11
  import AddChatIcon from "../../assets/svg/AddChatIcon";
10
12
  import flashOpen from "../../assets/flash-open.svg?url";
11
- import InfiniteScroll from 'react-infinite-scroll-component';
12
13
  import { SESSION_PAGE_SIZE } from "../../constants";
13
- import clsx from 'clsx';
14
14
  import { useStyles, GlobalStyle } from "./styles";
15
15
  import { jsx as _jsx } from "react/jsx-runtime";
16
16
  import { jsxs as _jsxs } from "react/jsx-runtime";
@@ -1 +1 @@
1
- {"version":3,"names":["React","useState","Conversations","RedoOutlined","Spin","Divider","useChatbotContext","logo","AddChatIcon","flashOpen","InfiniteScroll","SESSION_PAGE_SIZE","clsx","useStyles","GlobalStyle","jsx","_jsx","jsxs","_jsxs","XAiConversations","props","styles","_useChatbotContext","mergedProps","_mergedProps$isNarrow","isNarrow","sessionList","style","onActiveChange","onNewChat","loadMoreSessions","activeKey","menu","_useState","_useState2","_slicedToArray","listVisible","setListVisible","_useState3","_useState4","animateDirection","setAnimateDirection","handleSwitchTab","key","handleNewChat","handleShowList","handleCloseList","setTimeout","children","className","capWrapper","alt","src","w","h","capShape","capIcon","onClick","text","display","nWrapper","fWrapper","slideIn","slideOut","fheaderWrapper","addChatBtn","mr","tipTitle","scrollList","dataLength","length","next","hasMore","loader","textAlign","indicator","spin","size","endMessage","plain","textColor","overflow","paddingBottom","v","items","_objectSpread","width","borderRadius","mask"],"sources":["../../../../src/components/XAiConversations/index.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { Conversations } from '@ant-design/x';\nimport { RedoOutlined } from '@ant-design/icons';\nimport { Spin, Divider } from 'antd';\nimport { useChatbotContext } from '@/hooks/useProviderContext';\nimport { type XAiConversationsProps } from '@/types/XAiConversations';\nimport logo from '@/assets/logo.png';\nimport AddChatIcon from '@/assets/svg/AddChatIcon';\nimport flashOpen from '@/assets/flash-open.svg?url';\nimport InfiniteScroll from 'react-infinite-scroll-component';\nimport { SESSION_PAGE_SIZE } from '@/constants';\nimport clsx from 'clsx';\nimport { useStyles, GlobalStyle } from './styles';\n\nconst XAiConversations: React.FC<XAiConversationsProps> = (props) => {\n const styles = useStyles();\n const { mergedProps } = useChatbotContext(props);\n const {\n isNarrow = false,\n sessionList,\n style,\n onActiveChange,\n onNewChat,\n loadMoreSessions,\n activeKey,\n menu,\n } = mergedProps;\n\n const [listVisible, setListVisible] = useState(false);\n const [animateDirection, setAnimateDirection] = useState<'in' | 'out' | null>(null);\n\n const handleSwitchTab = (key: string) => {\n onActiveChange?.(key);\n };\n\n const handleNewChat = () => {\n onNewChat?.();\n };\n\n const handleShowList = () => {\n setListVisible(true);\n setAnimateDirection('in');\n };\n\n const handleCloseList = () => {\n setAnimateDirection('out');\n setTimeout(() => {\n setListVisible(false);\n setAnimateDirection(null);\n }, 300);\n };\n\n return (\n <div>\n <GlobalStyle />\n {/**顶部操作栏 */}\n {\n (!listVisible || isNarrow) && (\n <div className={styles.capWrapper}>\n <img alt=\"logo\" src={logo} className={clsx(styles.w(32), styles.h(29))}/>\n <div className={styles.capShape}>\n <div className={styles.capIcon}>\n <img src={flashOpen} alt=\"\" onClick={handleShowList} />\n </div>\n <div className={styles.capIcon}>\n <AddChatIcon className={clsx(styles.w(17), styles.text('#343434'))} onClick={handleNewChat} />\n </div>\n </div>\n </div>\n )\n }\n\n {/* 会话列表 */}\n <div\n style={{ display: listVisible ? 'block' : 'none' }}\n className={clsx(\n isNarrow ? styles.nWrapper : styles.fWrapper,\n animateDirection === 'in' && styles.slideIn,\n animateDirection === 'out' && styles.slideOut\n )}\n >\n {/* 固定头部 */}\n <div className={styles.fheaderWrapper}>\n <img alt=\"logo\" src={logo} className={clsx(styles.w(32), styles.h(29))}/>\n <div className={styles.capIcon}>\n <img src={flashOpen} alt=\"\" onClick={handleCloseList} />\n </div>\n </div>\n <div className={styles.addChatBtn} onClick={handleNewChat}>\n <AddChatIcon className={clsx(styles.w(17), styles.mr(10))} />\n 开启新对话\n </div>\n <div className={styles.tipTitle}>历史对话</div>\n\n {/* 滚动区域 */}\n <div className={styles.scrollList}>\n <InfiniteScroll\n dataLength={sessionList.length}\n next={loadMoreSessions}\n hasMore={false}\n loader={\n <div style={{ textAlign: 'center' }}>\n <Spin indicator={<RedoOutlined spin />} size=\"small\" />\n </div>\n }\n endMessage={sessionList.length === SESSION_PAGE_SIZE && <Divider plain><span className={styles.textColor('#949494')}>只展示前 50 条数据</span></Divider>}\n style={{ overflow: 'hidden', paddingBottom: '5px' }}\n >\n <Conversations\n activeKey={activeKey}\n onActiveChange={(v) => handleSwitchTab(v)}\n items={sessionList}\n menu={menu}\n style={{\n width: 256,\n borderRadius: '6px',\n ...style,\n }}\n />\n </InfiniteScroll>\n </div>\n </div>\n\n {/* 遮罩层 - 仅在窄屏且列表可见时显示 */}\n {isNarrow && listVisible && (\n <div className={styles.mask} onClick={handleCloseList} />\n )}\n </div>\n );\n};\n\nexport default XAiConversations;\n"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,QAAQ,QAAQ,OAAO;AACvC,SAASC,aAAa,QAAQ,eAAe;AAC7C,SAASC,YAAY,QAAQ,mBAAmB;AAChD,SAASC,IAAI,EAAEC,OAAO,QAAQ,MAAM;AACpC,SAASC,iBAAiB;AAE1B,OAAOC,IAAI;AACX,OAAOC,WAAW;AAClB,OAAOC,SAAS;AAChB,OAAOC,cAAc,MAAM,iCAAiC;AAC5D,SAASC,iBAAiB;AAC1B,OAAOC,IAAI,MAAM,MAAM;AACvB,SAASC,SAAS,EAAEC,WAAW;AAAmB,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAElD,IAAMC,gBAAiD,GAAG,SAApDA,gBAAiDA,CAAIC,KAAK,EAAK;EACnE,IAAMC,MAAM,GAAGR,SAAS,CAAC,CAAC;EAC1B,IAAAS,kBAAA,GAAwBhB,iBAAiB,CAACc,KAAK,CAAC;IAAxCG,WAAW,GAAAD,kBAAA,CAAXC,WAAW;EACnB,IAAAC,qBAAA,GASID,WAAW,CARbE,QAAQ;IAARA,QAAQ,GAAAD,qBAAA,cAAG,KAAK,GAAAA,qBAAA;IAChBE,WAAW,GAOTH,WAAW,CAPbG,WAAW;IACXC,KAAK,GAMHJ,WAAW,CANbI,KAAK;IACLC,cAAc,GAKZL,WAAW,CALbK,cAAc;IACdC,SAAS,GAIPN,WAAW,CAJbM,SAAS;IACTC,gBAAgB,GAGdP,WAAW,CAHbO,gBAAgB;IAChBC,SAAS,GAEPR,WAAW,CAFbQ,SAAS;IACTC,IAAI,GACFT,WAAW,CADbS,IAAI;EAGN,IAAAC,SAAA,GAAsChC,QAAQ,CAAC,KAAK,CAAC;IAAAiC,UAAA,GAAAC,cAAA,CAAAF,SAAA;IAA9CG,WAAW,GAAAF,UAAA;IAAEG,cAAc,GAAAH,UAAA;EAClC,IAAAI,UAAA,GAAgDrC,QAAQ,CAAsB,IAAI,CAAC;IAAAsC,UAAA,GAAAJ,cAAA,CAAAG,UAAA;IAA5EE,gBAAgB,GAAAD,UAAA;IAAEE,mBAAmB,GAAAF,UAAA;EAE5C,IAAMG,eAAe,GAAG,SAAlBA,eAAeA,CAAIC,GAAW,EAAK;IACvCf,cAAc,aAAdA,cAAc,eAAdA,cAAc,CAAGe,GAAG,CAAC;EACvB,CAAC;EAED,IAAMC,aAAa,GAAG,SAAhBA,aAAaA,CAAA,EAAS;IAC1Bf,SAAS,aAATA,SAAS,eAATA,SAAS,CAAG,CAAC;EACf,CAAC;EAED,IAAMgB,cAAc,GAAG,SAAjBA,cAAcA,CAAA,EAAS;IAC3BR,cAAc,CAAC,IAAI,CAAC;IACpBI,mBAAmB,CAAC,IAAI,CAAC;EAC3B,CAAC;EAED,IAAMK,eAAe,GAAG,SAAlBA,eAAeA,CAAA,EAAS;IAC5BL,mBAAmB,CAAC,KAAK,CAAC;IAC1BM,UAAU,CAAC,YAAM;MACfV,cAAc,CAAC,KAAK,CAAC;MACrBI,mBAAmB,CAAC,IAAI,CAAC;IAC3B,CAAC,EAAE,GAAG,CAAC;EACT,CAAC;EAED,oBACEvB,KAAA;IAAA8B,QAAA,gBACEhC,IAAA,CAACF,WAAW,IAAE,CAAC,EAGb,CAAC,CAACsB,WAAW,IAAIX,QAAQ,kBACvBP,KAAA;MAAK+B,SAAS,EAAE5B,MAAM,CAAC6B,UAAW;MAAAF,QAAA,gBAChChC,IAAA;QAAKmC,GAAG,EAAC,MAAM;QAACC,GAAG,EAAE7C,IAAK;QAAC0C,SAAS,EAAErC,IAAI,CAACS,MAAM,CAACgC,CAAC,CAAC,EAAE,CAAC,EAAEhC,MAAM,CAACiC,CAAC,CAAC,EAAE,CAAC;MAAE,CAAC,CAAC,eACzEpC,KAAA;QAAK+B,SAAS,EAAE5B,MAAM,CAACkC,QAAS;QAAAP,QAAA,gBAC9BhC,IAAA;UAAKiC,SAAS,EAAE5B,MAAM,CAACmC,OAAQ;UAAAR,QAAA,eAC7BhC,IAAA;YAAKoC,GAAG,EAAE3C,SAAU;YAAC0C,GAAG,EAAC,EAAE;YAACM,OAAO,EAAEZ;UAAe,CAAE;QAAC,CACpD,CAAC,eACN7B,IAAA;UAAKiC,SAAS,EAAE5B,MAAM,CAACmC,OAAQ;UAAAR,QAAA,eAC7BhC,IAAA,CAACR,WAAW;YAACyC,SAAS,EAAErC,IAAI,CAACS,MAAM,CAACgC,CAAC,CAAC,EAAE,CAAC,EAAEhC,MAAM,CAACqC,IAAI,CAAC,SAAS,CAAC,CAAE;YAACD,OAAO,EAAEb;UAAc,CAAE;QAAC,CAC3F,CAAC;MAAA,CACH,CAAC;IAAA,CACH,CACN,eAIH1B,KAAA;MACES,KAAK,EAAE;QAAEgC,OAAO,EAAEvB,WAAW,GAAG,OAAO,GAAG;MAAO,CAAE;MACnDa,SAAS,EAAErC,IAAI,CACba,QAAQ,GAAGJ,MAAM,CAACuC,QAAQ,GAAGvC,MAAM,CAACwC,QAAQ,EAC5CrB,gBAAgB,KAAK,IAAI,IAAInB,MAAM,CAACyC,OAAO,EAC3CtB,gBAAgB,KAAK,KAAK,IAAInB,MAAM,CAAC0C,QACvC,CAAE;MAAAf,QAAA,gBAGF9B,KAAA;QAAK+B,SAAS,EAAE5B,MAAM,CAAC2C,cAAe;QAAAhB,QAAA,gBACpChC,IAAA;UAAKmC,GAAG,EAAC,MAAM;UAACC,GAAG,EAAE7C,IAAK;UAAC0C,SAAS,EAAErC,IAAI,CAACS,MAAM,CAACgC,CAAC,CAAC,EAAE,CAAC,EAAEhC,MAAM,CAACiC,CAAC,CAAC,EAAE,CAAC;QAAE,CAAC,CAAC,eACzEtC,IAAA;UAAKiC,SAAS,EAAE5B,MAAM,CAACmC,OAAQ;UAAAR,QAAA,eAC7BhC,IAAA;YAAKoC,GAAG,EAAE3C,SAAU;YAAC0C,GAAG,EAAC,EAAE;YAACM,OAAO,EAAEX;UAAgB,CAAE;QAAC,CACrD,CAAC;MAAA,CACH,CAAC,eACN5B,KAAA;QAAK+B,SAAS,EAAE5B,MAAM,CAAC4C,UAAW;QAACR,OAAO,EAAEb,aAAc;QAAAI,QAAA,gBACxDhC,IAAA,CAACR,WAAW;UAACyC,SAAS,EAAErC,IAAI,CAACS,MAAM,CAACgC,CAAC,CAAC,EAAE,CAAC,EAAEhC,MAAM,CAAC6C,EAAE,CAAC,EAAE,CAAC;QAAE,CAAE,CAAC,kCAE/D;MAAA,CAAK,CAAC,eACNlD,IAAA;QAAKiC,SAAS,EAAE5B,MAAM,CAAC8C,QAAS;QAAAnB,QAAA,EAAC;MAAI,CAAK,CAAC,eAG3ChC,IAAA;QAAKiC,SAAS,EAAE5B,MAAM,CAAC+C,UAAW;QAAApB,QAAA,eAChChC,IAAA,CAACN,cAAc;UACb2D,UAAU,EAAE3C,WAAW,CAAC4C,MAAO;UAC/BC,IAAI,EAAEzC,gBAAiB;UACvB0C,OAAO,EAAE,KAAM;UACfC,MAAM,eACJzD,IAAA;YAAKW,KAAK,EAAE;cAAE+C,SAAS,EAAE;YAAS,CAAE;YAAA1B,QAAA,eAClChC,IAAA,CAACZ,IAAI;cAACuE,SAAS,eAAE3D,IAAA,CAACb,YAAY;gBAACyE,IAAI;cAAA,CAAE,CAAE;cAACC,IAAI,EAAC;YAAO,CAAE;UAAC,CACpD,CACN;UACDC,UAAU,EAAEpD,WAAW,CAAC4C,MAAM,KAAK3D,iBAAiB,iBAAIK,IAAA,CAACX,OAAO;YAAC0E,KAAK;YAAA/B,QAAA,eAAChC,IAAA;cAAMiC,SAAS,EAAE5B,MAAM,CAAC2D,SAAS,CAAC,SAAS,CAAE;cAAAhC,QAAA,EAAC;YAAW,CAAM;UAAC,CAAS,CAAE;UAClJrB,KAAK,EAAE;YAAEsD,QAAQ,EAAE,QAAQ;YAAEC,aAAa,EAAE;UAAM,CAAE;UAAAlC,QAAA,eAEpDhC,IAAA,CAACd,aAAa;YACZ6B,SAAS,EAAEA,SAAU;YACrBH,cAAc,EAAE,SAAAA,eAACuD,CAAC;cAAA,OAAKzC,eAAe,CAACyC,CAAC,CAAC;YAAA,CAAC;YAC1CC,KAAK,EAAE1D,WAAY;YACnBM,IAAI,EAAEA,IAAK;YACXL,KAAK,EAAA0D,aAAA;cACHC,KAAK,EAAE,GAAG;cACVC,YAAY,EAAE;YAAK,GAChB5D,KAAK;UACR,CACH;QAAC,CACY;MAAC,CACd,CAAC;IAAA,CACH,CAAC,EAGLF,QAAQ,IAAIW,WAAW,iBACtBpB,IAAA;MAAKiC,SAAS,EAAE5B,MAAM,CAACmE,IAAK;MAAC/B,OAAO,EAAEX;IAAgB,CAAE,CACzD;EAAA,CACE,CAAC;AAEV,CAAC;AAED,eAAe3B,gBAAgB"}
1
+ {"version":3,"names":["React","useState","Conversations","RedoOutlined","Spin","Divider","InfiniteScroll","clsx","useChatbotContext","logo","AddChatIcon","flashOpen","SESSION_PAGE_SIZE","useStyles","GlobalStyle","jsx","_jsx","jsxs","_jsxs","XAiConversations","props","styles","_useChatbotContext","mergedProps","_mergedProps$isNarrow","isNarrow","sessionList","style","onActiveChange","onNewChat","loadMoreSessions","activeKey","menu","_useState","_useState2","_slicedToArray","listVisible","setListVisible","_useState3","_useState4","animateDirection","setAnimateDirection","handleSwitchTab","key","handleNewChat","handleShowList","handleCloseList","setTimeout","children","className","capWrapper","alt","src","w","h","capShape","capIcon","onClick","text","display","nWrapper","fWrapper","slideIn","slideOut","fheaderWrapper","addChatBtn","mr","tipTitle","scrollList","dataLength","length","next","hasMore","loader","textAlign","indicator","spin","size","endMessage","plain","textColor","overflow","paddingBottom","v","items","_objectSpread","width","borderRadius","mask"],"sources":["../../../../src/components/XAiConversations/index.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { Conversations } from '@ant-design/x';\nimport { RedoOutlined } from '@ant-design/icons';\nimport { Spin, Divider } from 'antd';\nimport InfiniteScroll from 'react-infinite-scroll-component';\nimport clsx from 'clsx';\nimport { useChatbotContext } from '@/hooks/useProviderContext';\nimport { type XAiConversationsProps } from '@/types/XAiConversations';\nimport logo from '@/assets/logo.png';\nimport AddChatIcon from '@/assets/svg/AddChatIcon';\nimport flashOpen from '@/assets/flash-open.svg?url';\nimport { SESSION_PAGE_SIZE } from '@/constants';\nimport { useStyles, GlobalStyle } from './styles';\n\nconst XAiConversations: React.FC<XAiConversationsProps> = (props) => {\n const styles = useStyles();\n const { mergedProps } = useChatbotContext(props);\n const {\n isNarrow = false,\n sessionList,\n style,\n onActiveChange,\n onNewChat,\n loadMoreSessions,\n activeKey,\n menu,\n } = mergedProps;\n\n const [listVisible, setListVisible] = useState(false);\n const [animateDirection, setAnimateDirection] = useState<'in' | 'out' | null>(null);\n\n const handleSwitchTab = (key: string) => {\n onActiveChange?.(key);\n };\n\n const handleNewChat = () => {\n onNewChat?.();\n };\n\n const handleShowList = () => {\n setListVisible(true);\n setAnimateDirection('in');\n };\n\n const handleCloseList = () => {\n setAnimateDirection('out');\n setTimeout(() => {\n setListVisible(false);\n setAnimateDirection(null);\n }, 300);\n };\n\n return (\n <div>\n <GlobalStyle />\n {/** 顶部操作栏 */}\n {\n (!listVisible || isNarrow) && (\n <div className={styles.capWrapper}>\n <img alt=\"logo\" src={logo} className={clsx(styles.w(32), styles.h(29))} />\n <div className={styles.capShape}>\n <div className={styles.capIcon}>\n <img src={flashOpen} alt=\"\" onClick={handleShowList} />\n </div>\n <div className={styles.capIcon}>\n <AddChatIcon className={clsx(styles.w(17), styles.text('#343434'))} onClick={handleNewChat} />\n </div>\n </div>\n </div>\n )\n }\n\n {/* 会话列表 */}\n <div\n style={{ display: listVisible ? 'block' : 'none' }}\n className={clsx(\n isNarrow ? styles.nWrapper : styles.fWrapper,\n animateDirection === 'in' && styles.slideIn,\n animateDirection === 'out' && styles.slideOut,\n )}\n >\n {/* 固定头部 */}\n <div className={styles.fheaderWrapper}>\n <img alt=\"logo\" src={logo} className={clsx(styles.w(32), styles.h(29))} />\n <div className={styles.capIcon}>\n <img src={flashOpen} alt=\"\" onClick={handleCloseList} />\n </div>\n </div>\n <div className={styles.addChatBtn} onClick={handleNewChat}>\n <AddChatIcon className={clsx(styles.w(17), styles.mr(10))} />\n 开启新对话\n </div>\n <div className={styles.tipTitle}>历史对话</div>\n\n {/* 滚动区域 */}\n <div className={styles.scrollList}>\n <InfiniteScroll\n dataLength={sessionList.length}\n next={loadMoreSessions}\n hasMore={false}\n loader={(\n <div style={{ textAlign: 'center' }}>\n <Spin indicator={<RedoOutlined spin />} size=\"small\" />\n </div>\n )}\n endMessage={sessionList.length === SESSION_PAGE_SIZE && <Divider plain><span className={styles.textColor('#949494')}>只展示前 50 条数据</span></Divider>}\n style={{ overflow: 'hidden', paddingBottom: '5px' }}\n >\n <Conversations\n activeKey={activeKey}\n onActiveChange={(v) => handleSwitchTab(v)}\n items={sessionList}\n menu={menu}\n style={{\n width: 256,\n borderRadius: '6px',\n ...style,\n }}\n />\n </InfiniteScroll>\n </div>\n </div>\n\n {/* 遮罩层 - 仅在窄屏且列表可见时显示 */}\n {isNarrow && listVisible && (\n <div className={styles.mask} onClick={handleCloseList} />\n )}\n </div>\n );\n};\n\nexport default XAiConversations;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"names":["React","css","keyframes","globalCss","Global","withBasicStyles","jsx","_jsx","primaryBlue","lightBlue","darkGray","lightGray","borderGray","slideInRight","_templateObject","_taggedTemplateLiteral","slideOutRight","_templateObject2","useStyles","capWrapper","_templateObject3","capShape","_templateObject4","capIcon","_templateObject5","addChatBtn","_templateObject6","tipTitle","_templateObject7","fWrapper","_templateObject8","nWrapper","_templateObject9","mask","_templateObject10","fheaderWrapper","_templateObject11","scrollList","_templateObject12","slideIn","_templateObject13","slideOut","_templateObject14","GlobalStyle","styles","_templateObject15"],"sources":["../../../../src/components/XAiConversations/styles.tsx"],"sourcesContent":["import React from 'react';\nimport { css, keyframes } 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\n\nconst slideInRight = keyframes`\n from { transform: translateX(-100%); opacity: 0; }\n to { transform: translateX(0); opacity: 1; }\n`;\n\nconst slideOutRight = keyframes`\n from { transform: translateX(0); opacity: 1; }\n to { transform: translateX(-100%); opacity: 0; }\n`;\n\n\nexport const useStyles = withBasicStyles(() => ({\n // 静态样式\n capWrapper: css`\n padding: 12px 16px;\n display: flex;\n align-items: center;\n `,\n\n capShape: css`\n display: flex;\n align-items: center;\n justify-content: center;\n width: 80px;\n height: 40px;\n margin-left: 16px;\n background: #FFFFFF;\n box-shadow: 0px 4px 16px 0px rgba(127,135,166,0.08);\n border-radius: 24px;\n border: 1px solid #E7E7E7;\n box-sizing: border-box;\n transition: box-shadow 0.2s, border-color 0.2s;\n cursor: pointer;\n /* &:hover {\n box-shadow: 0px 4px 24px 0px rgba(127,135,166,0.16);\n border-color: ${primaryBlue};\n } */\n `,\n\n capIcon: css`\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n\n img {\n width: 17px;\n }\n\n &:hover {\n background: #F2F2F2;\n border-radius: 50%;\n }\n `,\n\n addChatBtn: css`\n width: 256px;\n height: 40px;\n margin: 17px auto 24px;\n background: #FFFFFF;\n border-radius: 20px;\n border: 1px solid #E7E7E7;\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n color: #343434;\n\n &:hover {\n color: #3961F2;\n }\n\n &:active {\n color: #0A3BEE;\n }\n `,\n\n tipTitle: css`\n font-size: 12px;\n color: #949494;\n padding-left: 24px;\n `,\n\n fWrapper: css`\n background: #F8FBFF;\n padding: 16px 0 13px;\n width: 280px;\n height: 100%;\n box-sizing: border-box;\n position: relative;\n `,\n\n nWrapper: css`\n position: absolute;\n top: 0;\n left: 0;\n width: 280px;\n height: 100%;\n z-index: 1000;\n transition: left 0.3s ease;\n background: #F8FBFF;\n padding: 16px 0 13px;\n box-shadow: 2px 0 8px rgba(0, 0, 0, 0.1);\n `,\n\n mask: css`\n position: absolute;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n background: rgba(0, 0, 0, 0.15);\n z-index: 999;\n cursor: pointer;\n `,\n\n fheaderWrapper: css`\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 0 11px 0 16px;\n `,\n\n scrollList: css`\n max-height: calc(100vh - 120px); /* 120px为头部高度,可根据实际调整 */\n padding-bottom: 15px;\n overflow-y: auto;\n\n /* 隐藏滚动条(Chrome, Edge, Safari) */\n &::-webkit-scrollbar {\n width: 0;\n height: 0;\n display: none;\n background: transparent;\n }\n\n /* 隐藏滚动条(Firefox) */\n scrollbar-width: none;\n\n /* 隐藏滚动条(IE/Edge) */\n -ms-overflow-style: none;\n `,\n\n slideIn: css`\n animation: ${slideInRight} 0.3s forwards;\n `,\n slideOut: css`\n animation: ${slideOutRight} 0.3s forwards;\n `,\n\n}))\n\nexport const GlobalStyle: React.FC = () => (\n <Global\n styles={globalCss`\n .ant-conversations .ant-conversations-item-active {\n background: rgba(57,97,242,0.08);\n }\n\n .ant-conversations .ant-conversations-item-active .ant-conversations-label {\n color: #3961F2;\n }\n `}\n />\n);"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,GAAG,EAAEC,SAAS,QAAQ,cAAc;AAC7C,SAASD,GAAG,IAAIE,SAAS,EAAEC,MAAM,QAAQ,gBAAgB;AACzD,SAASC,eAAe;AAA0B,SAAAC,GAAA,IAAAC,IAAA;AAElD,IAAMC,WAAW,GAAG,SAAS,CAAC,CAAC;AAC/B,IAAMC,SAAS,GAAG,SAAS,CAAC,CAAG;AAC/B,IAAMC,QAAQ,GAAG,MAAM,CAAC,CAAQ;AAChC,IAAMC,SAAS,GAAG,MAAM,CAAC,CAAO;AAChC,IAAMC,UAAU,GAAG,MAAM,CAAC,CAAM;;AAGhC,IAAMC,YAAY,GAAGX,SAAS,CAAAY,eAAA,KAAAA,eAAA,GAAAC,sBAAA,gHAG7B;AAED,IAAMC,aAAa,GAAGd,SAAS,CAAAe,gBAAA,KAAAA,gBAAA,GAAAF,sBAAA,gHAG9B;AAGD,OAAO,IAAMG,SAAS,GAAGb,eAAe,CAAC;EAAA,OAAO;IAC9C;IACAc,UAAU,EAAElB,GAAG,CAAAmB,gBAAA,KAAAA,gBAAA,GAAAL,sBAAA,mFAId;IAEDM,QAAQ,EAAEpB,GAAG,CAAAqB,gBAAA,KAAAA,gBAAA,GAAAP,sBAAA,+fAgBOP,WAAW,CAE9B;IAEDe,OAAO,EAAEtB,GAAG,CAAAuB,gBAAA,KAAAA,gBAAA,GAAAT,sBAAA,0QAgBX;IAEDU,UAAU,EAAExB,GAAG,CAAAyB,gBAAA,KAAAA,gBAAA,GAAAX,sBAAA,sZAqBd;IAEDY,QAAQ,EAAE1B,GAAG,CAAA2B,gBAAA,KAAAA,gBAAA,GAAAb,sBAAA,gFAIZ;IAEDc,QAAQ,EAAE5B,GAAG,CAAA6B,gBAAA,KAAAA,gBAAA,GAAAf,sBAAA,6JAOZ;IAEDgB,QAAQ,EAAE9B,GAAG,CAAA+B,gBAAA,KAAAA,gBAAA,GAAAjB,sBAAA,+PAWZ;IAEDkB,IAAI,EAAEhC,GAAG,CAAAiC,iBAAA,KAAAA,iBAAA,GAAAnB,sBAAA,sLASR;IAEDoB,cAAc,EAAElC,GAAG,CAAAmC,iBAAA,KAAAA,iBAAA,GAAArB,sBAAA,4HAKlB;IAEDsB,UAAU,EAAEpC,GAAG,CAAAqC,iBAAA,KAAAA,iBAAA,GAAAvB,sBAAA,+jBAkBd;IAEDwB,OAAO,EAAEtC,GAAG,CAAAuC,iBAAA,KAAAA,iBAAA,GAAAzB,sBAAA,iDACGF,YAAY,CAC1B;IACD4B,QAAQ,EAAExC,GAAG,CAAAyC,iBAAA,KAAAA,iBAAA,GAAA3B,sBAAA,iDACEC,aAAa;EAG9B,CAAC;AAAA,CAAC,CAAC;AAEH,OAAO,IAAM2B,WAAqB,GAAG,SAAxBA,WAAqBA,CAAA;EAAA,oBAChCpC,IAAA,CAACH,MAAM;IACLwC,MAAM,EAAEzC,SAAS,CAAA0C,iBAAA,KAAAA,iBAAA,GAAA9B,sBAAA;EAQf,CACH,CAAC;AAAA,CACH"}
1
+ {"version":3,"names":["React","css","keyframes","globalCss","Global","withBasicStyles","jsx","_jsx","primaryBlue","lightBlue","darkGray","lightGray","borderGray","slideInRight","_templateObject","_taggedTemplateLiteral","slideOutRight","_templateObject2","useStyles","capWrapper","_templateObject3","capShape","_templateObject4","capIcon","_templateObject5","addChatBtn","_templateObject6","tipTitle","_templateObject7","fWrapper","_templateObject8","nWrapper","_templateObject9","mask","_templateObject10","fheaderWrapper","_templateObject11","scrollList","_templateObject12","slideIn","_templateObject13","slideOut","_templateObject14","GlobalStyle","styles","_templateObject15"],"sources":["../../../../src/components/XAiConversations/styles.tsx"],"sourcesContent":["import React from 'react';\nimport { css, keyframes } 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\nconst slideInRight = keyframes`\n from { transform: translateX(-100%); opacity: 0; }\n to { transform: translateX(0); opacity: 1; }\n`;\n\nconst slideOutRight = keyframes`\n from { transform: translateX(0); opacity: 1; }\n to { transform: translateX(-100%); opacity: 0; }\n`;\n\nexport const useStyles = withBasicStyles(() => ({\n // 静态样式\n capWrapper: css`\n padding: 12px 16px;\n display: flex;\n align-items: center;\n `,\n\n capShape: css`\n display: flex;\n align-items: center;\n justify-content: center;\n width: 80px;\n height: 40px;\n margin-left: 16px;\n background: #FFFFFF;\n box-shadow: 0px 4px 16px 0px rgba(127,135,166,0.08);\n border-radius: 24px;\n border: 1px solid #E7E7E7;\n box-sizing: border-box;\n transition: box-shadow 0.2s, border-color 0.2s;\n cursor: pointer;\n /* &:hover {\n box-shadow: 0px 4px 24px 0px rgba(127,135,166,0.16);\n border-color: ${primaryBlue};\n } */\n `,\n\n capIcon: css`\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n\n img {\n width: 17px;\n }\n\n &:hover {\n background: #F2F2F2;\n border-radius: 50%;\n }\n `,\n\n addChatBtn: css`\n width: 256px;\n height: 40px;\n margin: 17px auto 24px;\n background: #FFFFFF;\n border-radius: 20px;\n border: 1px solid #E7E7E7;\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n color: #343434;\n\n &:hover {\n color: #3961F2;\n }\n\n &:active {\n color: #0A3BEE;\n }\n `,\n\n tipTitle: css`\n font-size: 12px;\n color: #949494;\n padding-left: 24px;\n `,\n\n fWrapper: css`\n background: #F8FBFF;\n padding: 16px 0 13px;\n width: 280px;\n height: 100%;\n box-sizing: border-box;\n position: relative;\n `,\n\n nWrapper: css`\n position: absolute;\n top: 0;\n left: 0;\n width: 280px;\n height: 100%;\n z-index: 1000;\n transition: left 0.3s ease;\n background: #F8FBFF;\n padding: 16px 0 13px;\n box-shadow: 2px 0 8px rgba(0, 0, 0, 0.1);\n `,\n\n mask: css`\n position: absolute;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n background: rgba(0, 0, 0, 0.15);\n z-index: 999;\n cursor: pointer;\n `,\n\n fheaderWrapper: css`\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 0 11px 0 16px;\n `,\n\n scrollList: css`\n max-height: calc(100vh - 120px); /* 120px为头部高度,可根据实际调整 */\n padding-bottom: 15px;\n overflow-y: auto;\n\n /* 隐藏滚动条(Chrome, Edge, Safari) */\n &::-webkit-scrollbar {\n width: 0;\n height: 0;\n display: none;\n background: transparent;\n }\n\n /* 隐藏滚动条(Firefox) */\n scrollbar-width: none;\n\n /* 隐藏滚动条(IE/Edge) */\n -ms-overflow-style: none;\n `,\n\n slideIn: css`\n animation: ${slideInRight} 0.3s forwards;\n `,\n slideOut: css`\n animation: ${slideOutRight} 0.3s forwards;\n `,\n\n}));\n\nexport const GlobalStyle: React.FC = () => (\n <Global\n styles={globalCss`\n .ant-conversations .ant-conversations-item-active {\n background: rgba(57,97,242,0.08);\n }\n\n .ant-conversations .ant-conversations-item-active .ant-conversations-label {\n color: #3961F2;\n }\n `}\n />\n);\n"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,GAAG,EAAEC,SAAS,QAAQ,cAAc;AAC7C,SAASD,GAAG,IAAIE,SAAS,EAAEC,MAAM,QAAQ,gBAAgB;AACzD,SAASC,eAAe;AAA0B,SAAAC,GAAA,IAAAC,IAAA;AAElD,IAAMC,WAAW,GAAG,SAAS,CAAC,CAAC;AAC/B,IAAMC,SAAS,GAAG,SAAS,CAAC,CAAG;AAC/B,IAAMC,QAAQ,GAAG,MAAM,CAAC,CAAQ;AAChC,IAAMC,SAAS,GAAG,MAAM,CAAC,CAAO;AAChC,IAAMC,UAAU,GAAG,MAAM,CAAC,CAAM;;AAEhC,IAAMC,YAAY,GAAGX,SAAS,CAAAY,eAAA,KAAAA,eAAA,GAAAC,sBAAA,gHAG7B;AAED,IAAMC,aAAa,GAAGd,SAAS,CAAAe,gBAAA,KAAAA,gBAAA,GAAAF,sBAAA,gHAG9B;AAED,OAAO,IAAMG,SAAS,GAAGb,eAAe,CAAC;EAAA,OAAO;IAC9C;IACAc,UAAU,EAAElB,GAAG,CAAAmB,gBAAA,KAAAA,gBAAA,GAAAL,sBAAA,mFAId;IAEDM,QAAQ,EAAEpB,GAAG,CAAAqB,gBAAA,KAAAA,gBAAA,GAAAP,sBAAA,+fAgBOP,WAAW,CAE9B;IAEDe,OAAO,EAAEtB,GAAG,CAAAuB,gBAAA,KAAAA,gBAAA,GAAAT,sBAAA,0QAgBX;IAEDU,UAAU,EAAExB,GAAG,CAAAyB,gBAAA,KAAAA,gBAAA,GAAAX,sBAAA,sZAqBd;IAEDY,QAAQ,EAAE1B,GAAG,CAAA2B,gBAAA,KAAAA,gBAAA,GAAAb,sBAAA,gFAIZ;IAEDc,QAAQ,EAAE5B,GAAG,CAAA6B,gBAAA,KAAAA,gBAAA,GAAAf,sBAAA,6JAOZ;IAEDgB,QAAQ,EAAE9B,GAAG,CAAA+B,gBAAA,KAAAA,gBAAA,GAAAjB,sBAAA,+PAWZ;IAEDkB,IAAI,EAAEhC,GAAG,CAAAiC,iBAAA,KAAAA,iBAAA,GAAAnB,sBAAA,sLASR;IAEDoB,cAAc,EAAElC,GAAG,CAAAmC,iBAAA,KAAAA,iBAAA,GAAArB,sBAAA,4HAKlB;IAEDsB,UAAU,EAAEpC,GAAG,CAAAqC,iBAAA,KAAAA,iBAAA,GAAAvB,sBAAA,+jBAkBd;IAEDwB,OAAO,EAAEtC,GAAG,CAAAuC,iBAAA,KAAAA,iBAAA,GAAAzB,sBAAA,iDACGF,YAAY,CAC1B;IACD4B,QAAQ,EAAExC,GAAG,CAAAyC,iBAAA,KAAAA,iBAAA,GAAA3B,sBAAA,iDACEC,aAAa;EAG9B,CAAC;AAAA,CAAC,CAAC;AAEH,OAAO,IAAM2B,WAAqB,GAAG,SAAxBA,WAAqBA,CAAA;EAAA,oBAChCpC,IAAA,CAACH,MAAM;IACLwC,MAAM,EAAEzC,SAAS,CAAA0C,iBAAA,KAAAA,iBAAA,GAAA9B,sBAAA;EAQf,CACH,CAAC;AAAA,CACH"}
@@ -48,7 +48,9 @@ export var 单聊天窗口实例 = {
48
48
  var handleSendMessage = function handleSendMessage() {
49
49
  var _providerRef$current;
50
50
  if ((_providerRef$current = providerRef.current) !== null && _providerRef$current !== void 0 && _providerRef$current.chat) {
51
- providerRef.current.chat('你好,AI!');
51
+ providerRef.current.chat({
52
+ text: '你好,AI!'
53
+ });
52
54
  } else {
53
55
  console.log('XAiProvider ref 未准备好或 chat 方法不存在');
54
56
  }