@ai-group/chat-sdk 0.5.3 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/dist/cjs/assets/arrow-down.png +0 -0
  2. package/dist/cjs/assets/think.png +0 -0
  3. package/dist/cjs/components/XAiChatbot/XAiChatbot.stories.js +47 -16
  4. package/dist/cjs/components/XAiChatbot/XAiChatbot.stories.js.map +2 -2
  5. package/dist/cjs/components/XAiChatbot/index.d.ts +3 -2
  6. package/dist/cjs/components/XAiChatbot/index.js +36 -120
  7. package/dist/cjs/components/XAiChatbot/index.js.map +3 -3
  8. package/dist/cjs/components/XAiChatbot/styles.d.ts +6 -16
  9. package/dist/cjs/components/XAiChatbot/styles.js +53 -182
  10. package/dist/cjs/components/XAiChatbot/styles.js.map +2 -2
  11. package/dist/cjs/components/XAiConversations/index.js +1 -1
  12. package/dist/cjs/components/XAiConversations/index.js.map +1 -1
  13. package/dist/cjs/components/XAiConversations/styles.d.ts +2 -0
  14. package/dist/cjs/components/XAiProvider/demo.styles.d.ts +2 -0
  15. package/dist/cjs/components/XAiProvider/index.js +2 -1
  16. package/dist/cjs/components/XAiProvider/index.js.map +2 -2
  17. package/dist/cjs/components/XAiSender/XAiSender.stories.d.ts +6 -0
  18. package/dist/cjs/components/XAiSender/XAiSender.stories.js +86 -0
  19. package/dist/cjs/components/XAiSender/XAiSender.stories.js.map +7 -0
  20. package/dist/cjs/components/XAiSender/index.d.ts +4 -0
  21. package/dist/cjs/components/XAiSender/index.js +168 -0
  22. package/dist/cjs/components/XAiSender/index.js.map +7 -0
  23. package/dist/cjs/components/XAiSender/styles.d.ts +47 -0
  24. package/dist/cjs/components/XAiSender/styles.js +157 -0
  25. package/dist/cjs/components/XAiSender/styles.js.map +7 -0
  26. package/dist/cjs/constants/index.d.ts +1 -1
  27. package/dist/cjs/constants/index.js +1 -1
  28. package/dist/cjs/constants/index.js.map +1 -1
  29. package/dist/cjs/hooks/useAgentGenerator.js +8 -8
  30. package/dist/cjs/hooks/useAgentGenerator.js.map +2 -2
  31. package/dist/cjs/index.d.ts +2 -1
  32. package/dist/cjs/index.js +3 -0
  33. package/dist/cjs/index.js.map +3 -3
  34. package/dist/cjs/styles/common.d.ts +9 -0
  35. package/dist/cjs/styles/common.js +30 -0
  36. package/dist/cjs/styles/common.js.map +2 -2
  37. package/dist/cjs/types/XAiChatbot.d.ts +5 -17
  38. package/dist/cjs/types/XAiChatbot.js.map +1 -1
  39. package/dist/cjs/types/XAiMessage.d.ts +3 -2
  40. package/dist/cjs/types/XAiMessage.js.map +2 -2
  41. package/dist/cjs/types/XAiProvider.d.ts +6 -0
  42. package/dist/cjs/types/XAiProvider.js.map +2 -2
  43. package/dist/cjs/types/XAiSender.d.ts +13 -0
  44. package/dist/cjs/types/XAiSender.js +18 -0
  45. package/dist/cjs/types/XAiSender.js.map +7 -0
  46. package/dist/cjs/types/index.d.ts +1 -0
  47. package/dist/cjs/types/index.js +2 -0
  48. package/dist/cjs/types/index.js.map +2 -2
  49. package/dist/cjs/types/mdx.d.ts +5 -0
  50. package/dist/esm/assets/arrow-down.png +0 -0
  51. package/dist/esm/assets/think.png +0 -0
  52. package/dist/esm/components/XAiChatbot/XAiChatbot.stories.js +49 -18
  53. package/dist/esm/components/XAiChatbot/XAiChatbot.stories.js.map +1 -1
  54. package/dist/esm/components/XAiChatbot/index.d.ts +3 -2
  55. package/dist/esm/components/XAiChatbot/index.js +80 -211
  56. package/dist/esm/components/XAiChatbot/index.js.map +1 -1
  57. package/dist/esm/components/XAiChatbot/styles.d.ts +6 -16
  58. package/dist/esm/components/XAiChatbot/styles.js +23 -41
  59. package/dist/esm/components/XAiChatbot/styles.js.map +1 -1
  60. package/dist/esm/components/XAiConversations/index.js +1 -1
  61. package/dist/esm/components/XAiConversations/index.js.map +1 -1
  62. package/dist/esm/components/XAiConversations/styles.d.ts +2 -0
  63. package/dist/esm/components/XAiProvider/demo.styles.d.ts +2 -0
  64. package/dist/esm/components/XAiProvider/index.js +2 -1
  65. package/dist/esm/components/XAiProvider/index.js.map +1 -1
  66. package/dist/esm/components/XAiSender/XAiSender.stories.d.ts +6 -0
  67. package/dist/esm/components/XAiSender/XAiSender.stories.js +66 -0
  68. package/dist/esm/components/XAiSender/XAiSender.stories.js.map +1 -0
  69. package/dist/esm/components/XAiSender/index.d.ts +4 -0
  70. package/dist/esm/components/XAiSender/index.js +211 -0
  71. package/dist/esm/components/XAiSender/index.js.map +1 -0
  72. package/dist/esm/components/XAiSender/styles.d.ts +47 -0
  73. package/dist/esm/components/XAiSender/styles.js +21 -0
  74. package/dist/esm/components/XAiSender/styles.js.map +1 -0
  75. package/dist/esm/constants/index.d.ts +1 -1
  76. package/dist/esm/constants/index.js +1 -1
  77. package/dist/esm/constants/index.js.map +1 -1
  78. package/dist/esm/hooks/useAgentGenerator.js +13 -13
  79. package/dist/esm/hooks/useAgentGenerator.js.map +1 -1
  80. package/dist/esm/index.d.ts +2 -1
  81. package/dist/esm/index.js +2 -1
  82. package/dist/esm/index.js.map +1 -1
  83. package/dist/esm/styles/common.d.ts +9 -0
  84. package/dist/esm/styles/common.js +9 -2
  85. package/dist/esm/styles/common.js.map +1 -1
  86. package/dist/esm/types/XAiChatbot.d.ts +5 -17
  87. package/dist/esm/types/XAiChatbot.js.map +1 -1
  88. package/dist/esm/types/XAiMessage.d.ts +3 -2
  89. package/dist/esm/types/XAiMessage.js.map +1 -1
  90. package/dist/esm/types/XAiProvider.d.ts +6 -0
  91. package/dist/esm/types/XAiProvider.js.map +1 -1
  92. package/dist/esm/types/XAiSender.d.ts +13 -0
  93. package/dist/esm/types/XAiSender.js +2 -0
  94. package/dist/esm/types/XAiSender.js.map +1 -0
  95. package/dist/esm/types/index.d.ts +1 -0
  96. package/dist/esm/types/index.js +1 -0
  97. package/dist/esm/types/index.js.map +1 -1
  98. package/dist/esm/types/mdx.d.ts +5 -0
  99. package/dist/umd/chat-sdk.min.js +1 -1
  100. package/package.json +1 -1
@@ -2,20 +2,21 @@ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
2
  // 文件: components/XAiChatbot/index.tsx
3
3
 
4
4
  import React, { useRef, useState, useMemo } from 'react';
5
- import { Button, Space, Spin, Tooltip, Popover } from 'antd';
6
- import { Bubble, Sender, Prompts } from '@ant-design/x';
7
- import { ArrowUpOutlined, ClearOutlined, UserOutlined, RedoOutlined, CopyOutlined, DeleteOutlined } from '@ant-design/icons';
5
+ import { Tooltip } from 'antd';
6
+ import { Bubble, Prompts } from '@ant-design/x';
7
+ import { UserOutlined, RedoOutlined, CopyOutlined, DeleteOutlined } from '@ant-design/icons';
8
8
  import clsx from 'clsx';
9
9
  import MarkdownIt from 'markdown-it';
10
10
  import reactHtmlParser from 'react-html-parser';
11
11
  import MarkdownGlobalStyle from "../../styles/markdown";
12
12
  import { MessageStatus, MessageRole } from "../../types/XAiMessage";
13
13
  import emptyIcon from "../../assets/empty.png";
14
- import groupIcon from "../../assets/group.png";
15
14
  import arrowUp from "../../assets/arrow-up.png";
16
15
  import arrowDown from "../../assets/arrow-down.png";
16
+ import thinkIcon from "../../assets/think.png";
17
17
  import { useChatbotContext } from "../../hooks/useProviderContext";
18
18
  import { useStyles, GlobalStyle } from "./styles";
19
+ import XAiSender from "../XAiSender";
19
20
  import { jsx as _jsx } from "react/jsx-runtime";
20
21
  import { Fragment as _Fragment } from "react/jsx-runtime";
21
22
  import { jsxs as _jsxs } from "react/jsx-runtime";
@@ -73,6 +74,8 @@ var XAiChatbot = function XAiChatbot(props) {
73
74
  renderNavbar = _mergedProps$renderNa === void 0 ? null : _mergedProps$renderNa,
74
75
  _mergedProps$clearBtn = mergedProps.clearBtnShow,
75
76
  clearBtnShow = _mergedProps$clearBtn === void 0 ? true : _mergedProps$clearBtn,
77
+ _mergedProps$inputSho = mergedProps.inputShow,
78
+ inputShow = _mergedProps$inputSho === void 0 ? true : _mergedProps$inputSho,
76
79
  _mergedProps$loading = mergedProps.loading,
77
80
  propLoading = _mergedProps$loading === void 0 ? false : _mergedProps$loading,
78
81
  messageTooltip = mergedProps.messageTooltip,
@@ -83,6 +86,8 @@ var XAiChatbot = function XAiChatbot(props) {
83
86
  text = _mergedProps$text === void 0 ? '' : _mergedProps$text,
84
87
  _mergedProps$footerTi = mergedProps.footerTips,
85
88
  footerTips = _mergedProps$footerTi === void 0 ? '' : _mergedProps$footerTi,
89
+ _mergedProps$empty = mergedProps.empty,
90
+ empty = _mergedProps$empty === void 0 ? null : _mergedProps$empty,
86
91
  _mergedProps$emptySta = mergedProps.emptyStateImage,
87
92
  emptyStateImage = _mergedProps$emptySta === void 0 ? emptyIcon : _mergedProps$emptySta,
88
93
  _mergedProps$emptySta2 = mergedProps.emptyStateText,
@@ -99,26 +104,10 @@ var XAiChatbot = function XAiChatbot(props) {
99
104
  // 如果在 Provider 中,使用 Provider 的状态
100
105
  var messages = mergedProps.messages || propMessages || [];
101
106
  var loading = mergedProps.loading || propLoading;
102
- var _useState = useState(false),
107
+ var _useState = useState(text),
103
108
  _useState2 = _slicedToArray(_useState, 2),
104
- disabled = _useState2[0],
105
- _setDisabled = _useState2[1]; // 是否禁止输入
106
- var _useState3 = useState(text),
107
- _useState4 = _slicedToArray(_useState3, 2),
108
- content = _useState4[0],
109
- setContent = _useState4[1]; // 输入框文本
110
- var _useState5 = useState(''),
111
- _useState6 = _slicedToArray(_useState5, 2),
112
- mode = _useState6[0],
113
- _setMode = _useState6[1]; // todo 模式
114
- var _useState7 = useState(false),
115
- _useState8 = _slicedToArray(_useState7, 2),
116
- fileUploading = _useState8[0],
117
- setFileUploading = _useState8[1]; // 文件上传进度条
118
- var _useState9 = useState(false),
119
- _useState10 = _slicedToArray(_useState9, 2),
120
- clearPopoverVisible = _useState10[0],
121
- setClearPopoverVisible = _useState10[1]; // 气泡卡片显隐藏
109
+ content = _useState2[0],
110
+ setContent = _useState2[1]; // 输入框文本
122
111
  var styles = useStyles();
123
112
  var lastMessageId = useRef('');
124
113
  var isScriptScrolling = useRef(false);
@@ -217,18 +206,19 @@ var XAiChatbot = function XAiChatbot(props) {
217
206
 
218
207
  // ActionHeader 组件
219
208
  var ActionHeader = function ActionHeader(_ref3) {
220
- var _first$extra;
221
- var _ref3$thinks = _ref3.thinks,
222
- thinks = _ref3$thinks === void 0 ? [] : _ref3$thinks,
209
+ var _ref3$execute = _ref3.execute,
210
+ execute = _ref3$execute === void 0 ? [] : _ref3$execute,
211
+ _ref3$thinks = _ref3.thinks,
212
+ thinks = _ref3$thinks === void 0 ? '' : _ref3$thinks,
223
213
  renderActionHeader = _ref3.renderActionHeader;
224
- var _useState11 = useState(false),
225
- _useState12 = _slicedToArray(_useState11, 2),
226
- expanded = _useState12[0],
227
- setExpanded = _useState12[1];
228
- if (!thinks || thinks.length === 0) return null;
214
+ var _useState3 = useState(false),
215
+ _useState4 = _slicedToArray(_useState3, 2),
216
+ expanded = _useState4[0],
217
+ setExpanded = _useState4[1];
218
+ if (!execute || execute.length === 0) return null;
229
219
  if (renderActionHeader) {
230
220
  return renderActionHeader({
231
- thinks: thinks,
221
+ execute: execute,
232
222
  expanded: expanded,
233
223
  onToggle: function onToggle() {
234
224
  return setExpanded(function (v) {
@@ -237,26 +227,22 @@ var XAiChatbot = function XAiChatbot(props) {
237
227
  }
238
228
  });
239
229
  }
240
- // 默认渲染
241
- var first = thinks[0];
242
- var name = first.name;
243
- var icon = (first === null || first === void 0 ? void 0 : first.icon) || (first === null || first === void 0 || (_first$extra = first.extra) === null || _first$extra === void 0 ? void 0 : _first$extra.icon);
244
230
  return /*#__PURE__*/_jsxs("div", {
245
231
  className: styles.actionHeaderWrapper,
246
232
  children: [!expanded && /*#__PURE__*/_jsxs("div", {
247
- className: styles.actionHeaderItem,
233
+ className: styles.actionTitle,
248
234
  onClick: function onClick() {
249
235
  return setExpanded(function (v) {
250
236
  return !v;
251
237
  });
252
238
  },
253
- children: [icon && /*#__PURE__*/_jsx("img", {
254
- src: icon,
239
+ children: [/*#__PURE__*/_jsx("img", {
240
+ src: thinkIcon,
255
241
  alt: "icon",
256
242
  className: styles.actionHeaderIcon
257
243
  }), /*#__PURE__*/_jsx("span", {
258
- className: styles.actionHeaderText,
259
- children: name
244
+ className: styles.flex1,
245
+ children: "\u8FD0\u884C\u8FC7\u7A0B"
260
246
  }), /*#__PURE__*/_jsx("img", {
261
247
  alt: "\u5C55\u5F00icon",
262
248
  src: arrowDown,
@@ -272,7 +258,7 @@ var XAiChatbot = function XAiChatbot(props) {
272
258
  });
273
259
  },
274
260
  children: [/*#__PURE__*/_jsx("img", {
275
- src: groupIcon,
261
+ src: thinkIcon,
276
262
  alt: "",
277
263
  className: clsx(styles.w(14))
278
264
  }), /*#__PURE__*/_jsx("div", {
@@ -283,38 +269,56 @@ var XAiChatbot = function XAiChatbot(props) {
283
269
  src: arrowUp,
284
270
  className: styles.w('16px')
285
271
  })]
286
- }), thinks.map(function (action, idx) {
287
- var _action$extra, _action$extra2, _action$extra3;
288
- 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);
289
- 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);
290
- return /*#__PURE__*/_jsxs("div", {
291
- className: styles.actionHeaderDetailItem,
292
- children: [thinkIcon && /*#__PURE__*/_jsx("img", {
293
- src: thinkIcon,
294
- alt: "icon",
295
- className: styles.actionHeaderIcon
296
- }), /*#__PURE__*/_jsx("span", {
297
- children: action === null || action === void 0 ? void 0 : action.name
298
- }), /*#__PURE__*/_jsx("span", {
299
- className: styles.actionHeaderCost,
300
- children: thinkCost ? "".concat(thinkCost, "s") : ''
301
- })]
302
- }, action.uniqueId || idx);
272
+ }), thinks && /*#__PURE__*/_jsx("div", {
273
+ className: styles.actionDetailContent,
274
+ children: /*#__PURE__*/_jsx("span", {
275
+ children: thinks
276
+ })
277
+ }), /*#__PURE__*/_jsx("div", {
278
+ className: styles.executeWrapper,
279
+ children: execute.map(function (action, idx) {
280
+ var _action$extra, _action$extra2, _action$extra3;
281
+ 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);
282
+ 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);
283
+ return /*#__PURE__*/_jsxs("div", {
284
+ className: styles.actionHeaderDetailItem,
285
+ children: [thinkIcon && /*#__PURE__*/_jsx("img", {
286
+ src: thinkIcon,
287
+ alt: "icon",
288
+ className: styles.actionHeaderIcon
289
+ }), /*#__PURE__*/_jsx("span", {
290
+ children: action === null || action === void 0 ? void 0 : action.name
291
+ }), /*#__PURE__*/_jsx("span", {
292
+ className: styles.actionHeaderCost,
293
+ children: thinkCost ? "".concat(thinkCost, "s") : ''
294
+ })]
295
+ }, action.uniqueId || idx);
296
+ })
303
297
  })]
304
298
  })]
305
299
  });
306
300
  };
307
301
 
308
302
  // 触发发送
309
- var handleSend = function handleSend() {
303
+ var handleSend = function handleSend(type, content) {
310
304
  if (content.trim()) {
311
305
  // 直接使用合并后的 onSend,自动处理 Provider 和独立模式
312
- onSend === null || onSend === void 0 || onSend('text', content);
306
+ onSend === null || onSend === void 0 || onSend(type, content);
313
307
  setContent(''); // 发送后清空输入框内容
314
308
  scrollToBottom();
315
309
  }
316
310
  };
317
311
 
312
+ // 输出内容
313
+ var handleChange = function handleChange(content) {
314
+ setContent(content);
315
+ };
316
+
317
+ // 停止生成
318
+ var handleStop = function handleStop() {
319
+ onStop === null || onStop === void 0 || onStop();
320
+ };
321
+
318
322
  // 导航栏
319
323
  var NavBar = function NavBar() {
320
324
  if (renderNavbar) {
@@ -341,89 +345,15 @@ var XAiChatbot = function XAiChatbot(props) {
341
345
  return /*#__PURE__*/_jsx(_Fragment, {});
342
346
  };
343
347
 
344
- // 文件上传按钮引用
345
- var fileInputRef = useRef(null);
346
-
347
- // 停止生成
348
- var handleStopGenerate = function handleStopGenerate() {
349
- onStop === null || onStop === void 0 || onStop();
350
- };
351
-
352
- // 选择文件
353
- var handleFileSelect = function handleFileSelect() {};
354
-
355
- // 点击清除按钮
356
- var handleClear = function handleClear() {
357
- setClearPopoverVisible(true);
358
- };
359
-
360
- // 取消清除
361
- var cancelClear = function cancelClear() {
362
- setClearPopoverVisible(false);
363
- };
364
-
365
348
  // 确认清除
366
349
  var confirmClear = function confirmClear() {
367
- setContent('');
368
350
  onClear === null || onClear === void 0 || onClear();
369
- setClearPopoverVisible(false);
370
351
  };
371
352
 
372
- // 清空按钮提示文案
373
- var clearConfirmContent = /*#__PURE__*/_jsxs("div", {
374
- className: styles.p('2px'),
375
- children: [/*#__PURE__*/_jsx("p", {
376
- className: clsx(styles.mb(14), styles.mt(0)),
377
- children: "\u786E\u8BA4\u6E05\u9664\u6240\u6709\u804A\u5929\u8BB0\u5F55\u5E76\u91CD\u7F6E\u4F1A\u8BDD\uFF01"
378
- }), /*#__PURE__*/_jsxs("div", {
379
- className: styles.popoverFooter,
380
- children: [/*#__PURE__*/_jsx(Button, {
381
- size: "small",
382
- onClick: cancelClear,
383
- children: "\u53D6\u6D88"
384
- }), /*#__PURE__*/_jsx(Button, {
385
- size: "small",
386
- type: "primary",
387
- danger: true,
388
- onClick: confirmClear,
389
- children: "\u786E\u8BA4"
390
- })]
391
- })]
392
- });
393
-
394
- // 自定义上传按钮
395
- var uploadButton = /*#__PURE__*/_jsx("div", {
396
- className: styles.flexCenterGap2,
397
- children: /*#__PURE__*/_jsxs(Tooltip, {
398
- placement: "top",
399
- title: mode === 'single_agent_skill_mode' ? '工作流模式不支持上传文件' : '支持图片、文档等上传',
400
- children: [fileUploading ? /*#__PURE__*/_jsx(Spin, {
401
- size: "small"
402
- }) : /*#__PURE__*/_jsx("i", {
403
- className: mode === 'single_agent_skill_mode' ? styles.iconZengjiaDisabled : styles.iconZengjiaNormal,
404
- onClick: function onClick() {
405
- if (mode !== 'single_agent_skill_mode' && fileInputRef.current) {
406
- var _fileInputRef$current;
407
- (_fileInputRef$current = fileInputRef.current) === null || _fileInputRef$current === void 0 || _fileInputRef$current.click();
408
- }
409
- }
410
- }), /*#__PURE__*/_jsx("input", {
411
- type: "file",
412
- ref: fileInputRef,
413
- onChange: handleFileSelect,
414
- style: {
415
- display: 'none'
416
- },
417
- accept: "*/*",
418
- disabled: fileUploading || mode === 'single_agent_skill_mode'
419
- })]
420
- })
421
- });
422
-
423
353
  // 空状态
424
354
  var EmptyState = useMemo(function () {
425
355
  return function () {
426
- return /*#__PURE__*/_jsxs("div", {
356
+ return empty ? empty : /*#__PURE__*/_jsxs("div", {
427
357
  className: styles.emptyWrapper,
428
358
  children: [/*#__PURE__*/_jsx("img", {
429
359
  src: emptyStateImage,
@@ -447,14 +377,17 @@ var XAiChatbot = function XAiChatbot(props) {
447
377
  children: messages !== null && messages !== void 0 && messages.length ? /*#__PURE__*/_jsx(Bubble.List, {
448
378
  id: chatId,
449
379
  roles: rolesObject,
380
+ className: styles.messageList,
450
381
  items: messages.map(function (msg) {
451
382
  var _ref4 = msg,
452
383
  id = _ref4.id,
453
384
  role = _ref4.role,
454
385
  status = _ref4.status,
455
386
  type = _ref4.type,
387
+ _ref4$execute = _ref4.execute,
388
+ execute = _ref4$execute === void 0 ? [] : _ref4$execute,
456
389
  _ref4$thinks = _ref4.thinks,
457
- thinks = _ref4$thinks === void 0 ? [] : _ref4$thinks,
390
+ thinks = _ref4$thinks === void 0 ? '' : _ref4$thinks,
458
391
  _ref4$extra = _ref4.extra,
459
392
  extra = _ref4$extra === void 0 ? {
460
393
  noFooter: false
@@ -470,6 +403,7 @@ var XAiChatbot = function XAiChatbot(props) {
470
403
  loading: status === MessageStatus.init,
471
404
  header: function header() {
472
405
  return /*#__PURE__*/_jsx(ActionHeader, {
406
+ execute: execute,
473
407
  thinks: thinks
474
408
  });
475
409
  },
@@ -551,80 +485,15 @@ var XAiChatbot = function XAiChatbot(props) {
551
485
  return bubbleContent;
552
486
  })
553
487
  }) : /*#__PURE__*/_jsx(EmptyState, {})
554
- }), /*#__PURE__*/_jsx("div", {
555
- className: styles.chatFooter,
556
- children: /*#__PURE__*/_jsxs("div", {
557
- className: clsx(styles.flex, styles.gap(8)),
558
- children: [clearBtnShow && /*#__PURE__*/_jsx(Popover, {
559
- content: clearConfirmContent,
560
- title: "\u786E\u8BA4\u6E05\u7A7A\u5BF9\u8BDD",
561
- trigger: "click",
562
- open: clearPopoverVisible,
563
- onOpenChange: setClearPopoverVisible,
564
- children: /*#__PURE__*/_jsx("div", {
565
- className: styles.clearBtn,
566
- style: {
567
- border: '1px solid #E4E7EC',
568
- borderRadius: '50%',
569
- height: '35px',
570
- width: '35px'
571
- },
572
- onClick: handleClear,
573
- children: /*#__PURE__*/_jsx(ClearOutlined, {
574
- className: styles.text(16)
575
- })
576
- })
577
- }), /*#__PURE__*/_jsx(Sender, {
578
- value: content
579
- // submitType="shiftEnter"
580
- ,
581
- className: styles.sendWrapper,
582
- placeholder: "\u7EE7\u7EED\u5BF9\u8BDD...",
583
- disabled: disabled,
584
- loading: loading,
585
- actions: function actions(_, info) {
586
- var _info$components = info.components,
587
- SendButton = _info$components.SendButton,
588
- LoadingButton = _info$components.LoadingButton;
589
- return /*#__PURE__*/_jsxs(Space, {
590
- size: "small",
591
- children: [/*#__PURE__*/_jsx("div", {
592
- className: styles.w(20)
593
- }), mode !== 'single_agent_skill_mode' && uploadButton, mode === 'meta_agent_mode' && /*#__PURE__*/_jsx("div", {
594
- className: styles.flexCenterGap2,
595
- style: {
596
- visibility: 'hidden'
597
- },
598
- children: /*#__PURE__*/_jsx("i", {
599
- className: styles.iconHuihuarenqun
600
- })
601
- }), /*#__PURE__*/_jsx("div", {
602
- className: styles.divider
603
- }), loading ? /*#__PURE__*/_jsx(LoadingButton, {
604
- onClick: handleStopGenerate,
605
- className: styles.stopButton
606
- }) : /*#__PURE__*/_jsx(SendButton, {
607
- className: styles.sendButton,
608
- type: "primary",
609
- icon: /*#__PURE__*/_jsx(ArrowUpOutlined, {
610
- className: styles.text(20)
611
- }),
612
- disabled: disabled
613
- })]
614
- });
615
- },
616
- onChange: function onChange(v) {
617
- setContent(v);
618
- },
619
- onSubmit: handleSend,
620
- onCancel: function onCancel() {
621
- handleStopGenerate();
622
- }
623
- })]
624
- })
625
- }), footerTips && /*#__PURE__*/_jsx("div", {
626
- className: styles.footerTips,
627
- children: footerTips
488
+ }), inputShow && /*#__PURE__*/_jsx(XAiSender, {
489
+ value: content,
490
+ loading: loading,
491
+ footerTips: footerTips,
492
+ clearBtnShow: clearBtnShow,
493
+ onChange: handleChange,
494
+ onSubmit: handleSend,
495
+ onStop: handleStop,
496
+ onClear: confirmClear
628
497
  })]
629
498
  })]
630
499
  });
@@ -1 +1 @@
1
- {"version":3,"names":["React","useRef","useState","useMemo","Button","Space","Spin","Tooltip","Popover","Bubble","Sender","Prompts","ArrowUpOutlined","ClearOutlined","UserOutlined","RedoOutlined","CopyOutlined","DeleteOutlined","clsx","MarkdownIt","reactHtmlParser","MarkdownGlobalStyle","MessageStatus","MessageRole","emptyIcon","groupIcon","arrowUp","arrowDown","useChatbotContext","useStyles","GlobalStyle","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","md","html","linkify","typographer","defaultRender","renderer","rules","link_open","tokens","idx","options","env","self","renderToken","aIndex","attrIndex","attrPush","attrs","relIndex","defaultActions","key","icon","tooltip","XAiChatbot","props","_useChatbotContext","mergedProps","_mergedProps$navbarSh","navbarShow","navbar","_mergedProps$renderNa","renderNavbar","_mergedProps$clearBtn","clearBtnShow","_mergedProps$loading","loading","propLoading","messageTooltip","avatar","userAvatar","propMessages","messages","_mergedProps$text","text","_mergedProps$footerTi","footerTips","_mergedProps$emptySta","emptyStateImage","_mergedProps$emptySta2","emptyStateText","_mergedProps$messageA","messageActions","onMessagesActionsCallback","onSuggestMessageClick","onSend","onClear","onStop","providerId","_useState","_useState2","_slicedToArray","disabled","_setDisabled","_useState3","_useState4","content","setContent","_useState5","_useState6","mode","_setMode","_useState7","_useState8","fileUploading","setFileUploading","_useState9","_useState10","clearPopoverVisible","setClearPopoverVisible","styles","lastMessageId","isScriptScrolling","chatId","concat","scrollToBottom","current","setTimeout","mainChatWrapper","document","getElementById","scrollTop","scrollHeight","FooterActions","_ref","data","_ref$lastMessage","lastMessage","className","flex","gap","children","map","action","index","title","cursor","onClick","MessageFooter","_ref2","_ref2$lastMessage","rolesObject","assistant","placement","bg","typing","step","interval","style","maxWidth","classNames","user","suggestion","visibility","variant","ActionHeader","_ref3","_first$extra","_ref3$thinks","thinks","renderActionHeader","_useState11","_useState12","expanded","setExpanded","length","onToggle","v","first","name","extra","actionHeaderWrapper","actionHeaderItem","src","alt","actionHeaderIcon","actionHeaderText","w","actionHeaderDetail","actionDetailTitle","flex1","pl","_action$extra","_action$extra2","_action$extra3","thinkIcon","expandIcon","thinkCost","cost","actionHeaderDetailItem","actionHeaderCost","uniqueId","handleSend","trim","NavBar","subtitle","fileInputRef","handleStopGenerate","handleFileSelect","handleClear","cancelClear","confirmClear","clearConfirmContent","p","mb","mt","popoverFooter","size","type","danger","uploadButton","flexCenterGap2","iconZengjiaDisabled","iconZengjiaNormal","_fileInputRef$current","click","ref","onChange","display","accept","EmptyState","emptyWrapper","emptyImg","weight","textColor","id","wrapper","messageContainer","List","roles","items","msg","_ref4","role","status","_ref4$thinks","_ref4$extra","noFooter","bubbleContent","init","header","_msg$content2","_msg$content","minWidth","render","htmlString","_msg$content3","bytes","vertical","onItemClick","info","description","footer","failed","chatFooter","trigger","open","onOpenChange","clearBtn","border","borderRadius","height","width","value","sendWrapper","placeholder","actions","_","_info$components","components","SendButton","LoadingButton","iconHuihuarenqun","divider","stopButton","sendButton","onSubmit","onCancel"],"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 Button,\n Space,\n Spin,\n Tooltip,\n Popover,\n GetProp,\n} from 'antd';\nimport {\n Bubble,\n Sender,\n Prompts,\n} from '@ant-design/x';\nimport {\n ArrowUpOutlined,\n ClearOutlined,\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 groupIcon from '@/assets/group.png';\nimport arrowUp from '@/assets/arrow-up.png';\nimport arrowDown from '@/assets/arrow-down.png';\nimport { useChatbotContext } from '@/hooks/useProviderContext';\nimport { useStyles, GlobalStyle } from './styles';\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 thinks: any[];\n renderActionHeader?: (params: { thinks: any[]; expanded: boolean; onToggle: () => void }) => React.ReactNode;\n}\n\n// 默认消息功能区\nconst 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 // 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 emptyStateImage = emptyIcon,\n emptyStateText = '我的智能体',\n messageActions = defaultActions,\n onMessagesActionsCallback,\n // 点击帮助消息\n onSuggestMessageClick,\n onSend,\n onClear,\n onStop,\n providerId,\n } = mergedProps;\n\n // 如果在 Provider 中,使用 Provider 的状态\n const messages = mergedProps.messages || propMessages || [];\n const loading = mergedProps.loading || propLoading;\n\n const [disabled, _setDisabled] = useState<boolean>(false); // 是否禁止输入\n const [content, setContent] = useState<string>(text); // 输入框文本\n const [mode, _setMode] = useState<string>(''); // todo 模式\n const [fileUploading, setFileUploading] = useState(false); // 文件上传进度条\n const [clearPopoverVisible, setClearPopoverVisible] = useState(false); // 气泡卡片显隐藏\n const styles = useStyles();\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 </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 // ActionHeader 组件\n const ActionHeader: React.FC<ActionHeaderProps> = ({ thinks = [], renderActionHeader }) => {\n const [expanded, setExpanded] = useState(false);\n if (!thinks || thinks.length === 0) return null;\n if (renderActionHeader) {\n return renderActionHeader({ thinks, expanded, onToggle: () => setExpanded((v) => !v) });\n }\n // 默认渲染\n const first = thinks[0];\n const { name } = first;\n const icon = first?.icon || first?.extra?.icon;\n return (\n <div className={styles.actionHeaderWrapper}>\n { !expanded && (\n <div\n className={styles.actionHeaderItem}\n onClick={() => setExpanded((v) => !v)}\n >\n { icon && <img src={icon} alt=\"icon\" className={styles.actionHeaderIcon} /> }\n <span className={styles.actionHeaderText}>{name}</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={groupIcon} 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 {thinks.map((action, idx) => {\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 )}\n </div>\n );\n };\n\n // 触发发送\n const handleSend = () => {\n if (content.trim()) {\n // 直接使用合并后的 onSend,自动处理 Provider 和独立模式\n onSend?.('text', content);\n setContent(''); // 发送后清空输入框内容\n scrollToBottom();\n }\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 fileInputRef = useRef<HTMLInputElement>(null);\n\n // 停止生成\n const handleStopGenerate = () => {\n onStop?.();\n };\n\n // 选择文件\n const handleFileSelect = () => {};\n\n // 点击清除按钮\n const handleClear = () => {\n setClearPopoverVisible(true);\n };\n\n // 取消清除\n const cancelClear = () => {\n setClearPopoverVisible(false);\n };\n\n // 确认清除\n const confirmClear = () => {\n setContent('');\n onClear?.();\n setClearPopoverVisible(false);\n };\n\n // 清空按钮提示文案\n const clearConfirmContent = (\n <div className={styles.p('2px')}>\n <p className={clsx(styles.mb(14), styles.mt(0))}>确认清除所有聊天记录并重置会话!</p>\n <div className={styles.popoverFooter}>\n <Button size=\"small\" onClick={cancelClear}>\n 取消\n </Button>\n <Button size=\"small\" type=\"primary\" danger onClick={confirmClear}>\n 确认\n </Button>\n </div>\n </div>\n );\n\n // 自定义上传按钮\n const uploadButton = (\n <div className={styles.flexCenterGap2}>\n <Tooltip\n placement=\"top\"\n title={\n mode === 'single_agent_skill_mode' ? '工作流模式不支持上传文件' : '支持图片、文档等上传'\n }\n >\n {fileUploading\n ? (\n <Spin size=\"small\" />\n )\n : (\n <i\n className={\n mode === 'single_agent_skill_mode'\n ? styles.iconZengjiaDisabled\n : styles.iconZengjiaNormal\n }\n onClick={() => {\n if (mode !== 'single_agent_skill_mode' && fileInputRef.current) {\n fileInputRef.current?.click();\n }\n }}\n />\n )}\n <input\n type=\"file\"\n ref={fileInputRef}\n onChange={handleFileSelect}\n style={{ display: 'none' }}\n accept=\"*/*\"\n disabled={fileUploading || mode === 'single_agent_skill_mode'}\n />\n </Tooltip>\n </div>\n );\n\n // 空状态\n const EmptyState = useMemo(() => () => (\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 // 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 items={messages.map((msg: any) => {\n const { id, role, status, type, thinks = [], extra = { noFooter: false } } = 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: (() => <ActionHeader thinks={thinks} />),\n content: (() => {\n // 文本消息\n if (type === 'TextMessage') {\n // 用户消息\n if (role === 'user') {\n return (\n <div\n className=\"markdown-body\"\n style={{\n minWidth: 0,\n maxWidth: 600,\n }}\n >\n {msg.content?.text}\n </div>\n );\n }\n // 输出html字符串\n const html = md.render(msg.content?.text || '');\n // 生成React节点\n const htmlString = reactHtmlParser(html);\n return (\n <>\n <div\n className=\"markdown-body\"\n style={{\n minWidth: 0,\n maxWidth: 600,\n }}\n >\n {htmlString}\n </div>\n </>\n );\n }\n // 图片类型\n if (type === 'ImageMessage') {\n return (\n <div style={{ minWidth: 0, maxWidth: 600 }}>\n <img src={msg.content?.bytes} alt=\"\" style={{ maxWidth: 680 }} />\n </div>\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 <div className={styles.chatFooter}>\n <div className={clsx(styles.flex, styles.gap(8))}>\n {/* 清空按钮 */}\n { clearBtnShow && <Popover\n content={clearConfirmContent}\n title=\"确认清空对话\"\n trigger=\"click\"\n open={clearPopoverVisible}\n onOpenChange={setClearPopoverVisible}\n >\n <div\n className={styles.clearBtn}\n style={{ border: '1px solid #E4E7EC', borderRadius: '50%', height: '35px', width: '35px' }}\n onClick={handleClear}\n >\n <ClearOutlined className={styles.text(16)} />\n </div>\n </Popover> }\n {/* 普通文本输入 */}\n <Sender\n value={content}\n // submitType=\"shiftEnter\"\n className={styles.sendWrapper}\n placeholder=\"继续对话...\"\n disabled={disabled}\n loading={loading}\n actions={(_, info) => {\n const { SendButton, LoadingButton } = info.components;\n return (\n <Space size=\"small\">\n <div className={styles.w(20)} />\n\n {mode !== 'single_agent_skill_mode' && uploadButton}\n {mode === 'meta_agent_mode' && (\n <div\n className={styles.flexCenterGap2}\n style={{ visibility: 'hidden' }}\n >\n <i className={styles.iconHuihuarenqun} />\n </div>\n )}\n\n <div className={styles.divider} />\n\n {loading\n ? (\n <LoadingButton onClick={handleStopGenerate} className={styles.stopButton} />\n )\n : (\n <SendButton\n className={styles.sendButton}\n type=\"primary\"\n icon={<ArrowUpOutlined className={styles.text(20)} />}\n disabled={disabled}\n />\n )}\n </Space>\n );\n }}\n onChange={(v) => {\n setContent(v);\n }}\n onSubmit={handleSend}\n onCancel={() => {\n handleStopGenerate();\n }}\n />\n </div>\n </div>\n { footerTips && <div className={styles.footerTips}>{footerTips}</div>}\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","useChatbotContext","useStyles","GlobalStyle","XAiSender","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","md","html","linkify","typographer","defaultRender","renderer","rules","link_open","tokens","idx","options","env","self","renderToken","aIndex","attrIndex","attrPush","attrs","relIndex","defaultActions","key","icon","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","_useState","_useState2","_slicedToArray","content","setContent","styles","lastMessageId","isScriptScrolling","chatId","concat","scrollToBottom","current","setTimeout","mainChatWrapper","document","getElementById","scrollTop","scrollHeight","FooterActions","_ref","data","_ref$lastMessage","lastMessage","className","flex","gap","children","map","action","index","title","cursor","onClick","MessageFooter","_ref2","_ref2$lastMessage","rolesObject","assistant","placement","bg","typing","step","interval","style","maxWidth","classNames","user","suggestion","visibility","variant","ActionHeader","_ref3","_ref3$execute","execute","_ref3$thinks","thinks","renderActionHeader","_useState3","_useState4","expanded","setExpanded","length","onToggle","v","actionHeaderWrapper","actionTitle","src","alt","actionHeaderIcon","flex1","w","actionHeaderDetail","actionDetailTitle","pl","actionDetailContent","executeWrapper","_action$extra","_action$extra2","_action$extra3","expandIcon","extra","thinkCost","cost","actionHeaderDetailItem","name","actionHeaderCost","uniqueId","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","bubbleContent","init","header","_msg$content2","_msg$content","minWidth","render","htmlString","_msg$content3","bytes","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 { useChatbotContext } from '@/hooks/useProviderContext';\nimport { useStyles, GlobalStyle } from './styles';\nimport XAiSender from '../XAiSender';\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 renderActionHeader?: (params: { execute: any[]; expanded: boolean; onToggle: () => void }) => React.ReactNode;\n}\n\n// 默认消息功能区\nconst 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 } = 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 styles = useStyles();\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 </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 // ActionHeader 组件\n const ActionHeader: React.FC<ActionHeaderProps> = ({ execute = [], thinks = '', renderActionHeader }) => {\n const [expanded, setExpanded] = useState(false);\n\n if (!execute || execute.length === 0) return null;\n if (renderActionHeader) {\n return renderActionHeader({ execute, expanded, onToggle: () => setExpanded((v) => !v) });\n }\n return (\n <div className={styles.actionHeaderWrapper}>\n { !expanded && (\n <div\n className={styles.actionTitle}\n onClick={() => setExpanded((v) => !v)}\n >\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 { thinks && <div className={styles.actionDetailContent}>\n <span>{thinks}</span>\n </div> }\n <div className={styles.executeWrapper}>\n {\n execute.map((action, idx) => {\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 }\n </div>\n </div>\n )}\n </div>\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 ? empty : <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 // 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 } } = 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: (() => <ActionHeader execute={execute} thinks={thinks} />),\n content: (() => {\n // 文本消息\n if (type === 'TextMessage') {\n // 用户消息\n if (role === 'user') {\n return (\n <div\n className=\"markdown-body\"\n style={{\n minWidth: 0,\n maxWidth: 600,\n }}\n >\n {msg.content?.text}\n </div>\n );\n }\n // 输出html字符串\n const html = md.render(msg.content?.text || '');\n // 生成React节点\n const htmlString = reactHtmlParser(html);\n return (\n <>\n <div\n className=\"markdown-body\"\n style={{\n minWidth: 0,\n maxWidth: 600,\n }}\n >\n {htmlString}\n </div>\n </>\n );\n }\n // 图片类型\n if (type === 'ImageMessage') {\n return (\n <div style={{ minWidth: 0, maxWidth: 600 }}>\n <img src={msg.content?.bytes} alt=\"\" style={{ maxWidth: 680 }} />\n </div>\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 && <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 </div>\n </>\n );\n};\n\nexport default XAiChatbot;\n"],"mappings":"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"}