@ai-group/chat-sdk 2.1.1 → 2.1.4

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 (117) hide show
  1. package/dist/cjs/components/XAdkChatbot/components/FunctionCallRender/index.d.ts +2 -2
  2. package/dist/cjs/components/XAdkChatbot/components/FunctionCallRender/index.js +3 -4
  3. package/dist/cjs/components/XAdkChatbot/components/FunctionCallRender/index.js.map +2 -2
  4. package/dist/cjs/components/XAdkChatbot/index.js +66 -99
  5. package/dist/cjs/components/XAdkChatbot/index.js.map +3 -3
  6. package/dist/cjs/components/XAdkSender/XAdkSender.stories.d.ts +6 -0
  7. package/dist/cjs/components/XAdkSender/XAdkSender.stories.js +119 -0
  8. package/dist/cjs/components/XAdkSender/XAdkSender.stories.js.map +7 -0
  9. package/dist/cjs/components/XAdkSender/index.d.ts +4 -0
  10. package/dist/cjs/components/XAdkSender/index.js +430 -0
  11. package/dist/cjs/components/XAdkSender/index.js.map +7 -0
  12. package/dist/cjs/components/XAdkSender/styles.d.ts +56 -0
  13. package/dist/cjs/components/XAdkSender/styles.js +340 -0
  14. package/dist/cjs/components/XAdkSender/styles.js.map +7 -0
  15. package/dist/cjs/components/XAdkWebProvider/XAdkWebProvider.stories.js +5 -5
  16. package/dist/cjs/components/XAdkWebProvider/XAdkWebProvider.stories.js.map +2 -2
  17. package/dist/cjs/components/XAdkWebProvider/index.js +12 -6
  18. package/dist/cjs/components/XAdkWebProvider/index.js.map +2 -2
  19. package/dist/cjs/components/XAiConversations/index.js +1 -1
  20. package/dist/cjs/components/XAiConversations/index.js.map +2 -2
  21. package/dist/cjs/components/XAiConversations/styles.d.ts +1 -0
  22. package/dist/cjs/components/XAiConversations/styles.js +3 -0
  23. package/dist/cjs/components/XAiConversations/styles.js.map +2 -2
  24. package/dist/cjs/components/XAiSender/XAiSender.stories.js +1 -1
  25. package/dist/cjs/components/XAiSender/XAiSender.stories.js.map +2 -2
  26. package/dist/cjs/components/XAiSender/index.js +17 -35
  27. package/dist/cjs/components/XAiSender/index.js.map +2 -2
  28. package/dist/cjs/hooks/useADKChat.d.ts +7 -16
  29. package/dist/cjs/hooks/useADKChat.js +115 -32
  30. package/dist/cjs/hooks/useADKChat.js.map +2 -2
  31. package/dist/cjs/hooks/useAgentGenerator.js +1 -1
  32. package/dist/cjs/hooks/useAgentGenerator.js.map +2 -2
  33. package/dist/cjs/services/api.d.ts +5 -5
  34. package/dist/cjs/services/api.js +6 -9
  35. package/dist/cjs/services/api.js.map +2 -2
  36. package/dist/cjs/types/XAdkChatbot.d.ts +21 -3
  37. package/dist/cjs/types/XAdkChatbot.js.map +1 -1
  38. package/dist/cjs/types/XAdkProvider.d.ts +35 -9
  39. package/dist/cjs/types/XAdkProvider.js.map +1 -1
  40. package/dist/cjs/types/XAdkSender.d.ts +49 -0
  41. package/dist/cjs/types/XAdkSender.js +18 -0
  42. package/dist/cjs/types/XAdkSender.js.map +7 -0
  43. package/dist/cjs/types/XAiProvider.d.ts +1 -28
  44. package/dist/cjs/types/XAiProvider.js.map +2 -2
  45. package/dist/cjs/types/XAiSender.d.ts +2 -0
  46. package/dist/cjs/types/XAiSender.js.map +1 -1
  47. package/dist/cjs/types/common.d.ts +6 -0
  48. package/dist/cjs/types/common.js +18 -0
  49. package/dist/cjs/types/common.js.map +7 -0
  50. package/dist/cjs/types/index.d.ts +2 -0
  51. package/dist/cjs/types/index.js +5 -1
  52. package/dist/cjs/types/index.js.map +2 -2
  53. package/dist/cjs/utils/chat.d.ts +1 -1
  54. package/dist/cjs/utils/umdEntry.d.ts +9 -9
  55. package/dist/cjs/utils/umdEntry.js +1 -0
  56. package/dist/cjs/utils/umdEntry.js.map +2 -2
  57. package/dist/esm/components/XAdkChatbot/components/FunctionCallRender/index.d.ts +2 -2
  58. package/dist/esm/components/XAdkChatbot/components/FunctionCallRender/index.js +3 -3
  59. package/dist/esm/components/XAdkChatbot/components/FunctionCallRender/index.js.map +1 -1
  60. package/dist/esm/components/XAdkChatbot/index.js +80 -126
  61. package/dist/esm/components/XAdkChatbot/index.js.map +1 -1
  62. package/dist/esm/components/XAdkSender/XAdkSender.stories.d.ts +6 -0
  63. package/dist/esm/components/XAdkSender/XAdkSender.stories.js +126 -0
  64. package/dist/esm/components/XAdkSender/XAdkSender.stories.js.map +1 -0
  65. package/dist/esm/components/XAdkSender/index.d.ts +4 -0
  66. package/dist/esm/components/XAdkSender/index.js +589 -0
  67. package/dist/esm/components/XAdkSender/index.js.map +1 -0
  68. package/dist/esm/components/XAdkSender/styles.d.ts +56 -0
  69. package/dist/esm/components/XAdkSender/styles.js +50 -0
  70. package/dist/esm/components/XAdkSender/styles.js.map +1 -0
  71. package/dist/esm/components/XAdkWebProvider/XAdkWebProvider.stories.js +10 -11
  72. package/dist/esm/components/XAdkWebProvider/XAdkWebProvider.stories.js.map +1 -1
  73. package/dist/esm/components/XAdkWebProvider/index.js +25 -10
  74. package/dist/esm/components/XAdkWebProvider/index.js.map +1 -1
  75. package/dist/esm/components/XAiConversations/index.js +1 -0
  76. package/dist/esm/components/XAiConversations/index.js.map +1 -1
  77. package/dist/esm/components/XAiConversations/styles.d.ts +1 -0
  78. package/dist/esm/components/XAiConversations/styles.js +15 -14
  79. package/dist/esm/components/XAiConversations/styles.js.map +1 -1
  80. package/dist/esm/components/XAiSender/XAiSender.stories.js +1 -1
  81. package/dist/esm/components/XAiSender/XAiSender.stories.js.map +1 -1
  82. package/dist/esm/components/XAiSender/index.js +16 -22
  83. package/dist/esm/components/XAiSender/index.js.map +1 -1
  84. package/dist/esm/hooks/useADKChat.d.ts +7 -16
  85. package/dist/esm/hooks/useADKChat.js +212 -88
  86. package/dist/esm/hooks/useADKChat.js.map +1 -1
  87. package/dist/esm/hooks/useAgentGenerator.js +1 -1
  88. package/dist/esm/hooks/useAgentGenerator.js.map +1 -1
  89. package/dist/esm/services/api.d.ts +5 -5
  90. package/dist/esm/services/api.js +8 -11
  91. package/dist/esm/services/api.js.map +1 -1
  92. package/dist/esm/types/XAdkChatbot.d.ts +21 -3
  93. package/dist/esm/types/XAdkChatbot.js.map +1 -1
  94. package/dist/esm/types/XAdkProvider.d.ts +35 -9
  95. package/dist/esm/types/XAdkProvider.js.map +1 -1
  96. package/dist/esm/types/XAdkSender.d.ts +49 -0
  97. package/dist/esm/types/XAdkSender.js +2 -0
  98. package/dist/esm/types/XAdkSender.js.map +1 -0
  99. package/dist/esm/types/XAiProvider.d.ts +1 -28
  100. package/dist/esm/types/XAiProvider.js +0 -7
  101. package/dist/esm/types/XAiProvider.js.map +1 -1
  102. package/dist/esm/types/XAiSender.d.ts +2 -0
  103. package/dist/esm/types/XAiSender.js.map +1 -1
  104. package/dist/esm/types/common.d.ts +6 -0
  105. package/dist/esm/types/common.js +2 -0
  106. package/dist/esm/types/common.js.map +1 -0
  107. package/dist/esm/types/index.d.ts +2 -0
  108. package/dist/esm/types/index.js +2 -0
  109. package/dist/esm/types/index.js.map +1 -1
  110. package/dist/esm/utils/chat.d.ts +1 -1
  111. package/dist/esm/utils/chat.js +4 -4
  112. package/dist/esm/utils/chat.js.map +1 -1
  113. package/dist/esm/utils/umdEntry.d.ts +9 -9
  114. package/dist/esm/utils/umdEntry.js +1 -1
  115. package/dist/esm/utils/umdEntry.js.map +1 -1
  116. package/dist/umd/chat-sdk.min.js +1 -1
  117. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["React","Alert","Button","Flex","Form","Popover","Tooltip","Typography","CopyOutlined","ToolOutlined","CheckCircleTwoTone","LoadingOutlined","UserSwitchOutlined","InfoCircleOutlined","useStyles","JsonView","jsx","_jsx","jsxs","_jsxs","FunctionCallRender","_ref","_msg$functionResponse","msg","showDetail","onConfirm","styles","fnCall","functionCall","fnRes","functionResponse","name","_msg$functionCall","_fnRes$response","role","confirmed","response","className","wrapper","children","message","type","showIcon","alert","id","originalFn","args","originalFunctionCall","confirm","justify","gap","onClick","_fnCall$args","agentName","style","color","Text","ellipsis","tooltip","maxWidth","lineHeight","twoToneColor","renderItem","obj","text","str","JSON","stringify","Item","label","align","copyable","icon","marginBottom","value","renderResponse","res","_res$response","error","title","placement","content","width","layout"],"sources":["../../../../../../src/components/XAdkChatbot/components/FunctionCallRender/index.tsx"],"sourcesContent":["import React from 'react';\nimport { Alert, Button, Flex, Form, Popover, Tooltip, Typography } from 'antd';\nimport { CopyOutlined, ToolOutlined, CheckCircleTwoTone, LoadingOutlined, UserSwitchOutlined, InfoCircleOutlined } from '@ant-design/icons';\nimport type { IMessage, FunctionCall } from '@/types';\nimport { useStyles } from './styles';\nimport JsonView from '@/components/XAiJsonView';\n\nexport interface FunctionCallRenderProps {\n msg: IMessage;\n showDetail?: boolean;\n onConfirm?: (confirmed: boolean) => void;\n}\n\nconst FunctionCallRender: React.FC<FunctionCallRenderProps> = ({ msg, showDetail, onConfirm }) => {\n const styles = useStyles();\n const fnCall = msg.functionCall as FunctionCall;\n const fnRes = msg.functionResponse;\n const name = fnCall?.name || fnRes?.name;\n if (name === 'adk_request_confirmation') {\n if (fnRes) {\n if (msg.role === 'bot') return null;\n const confirmed = fnRes.response?.confirmed;\n return (\n <div key={msg.id} className={styles.wrapper}>\n {confirmed\n ? <Alert message=\"已确认\" type=\"success\" showIcon className={styles.alert} />\n : <Alert message=\"已取消\" type=\"error\" showIcon className={styles.alert} />}\n </div>\n );\n }\n const originalFn = msg?.functionCall?.args?.originalFunctionCall;\n return (\n <div key={msg.id} className={styles.wrapper}>\n <div className={styles.confirm}>\n <div className=\"mb-4\">请确认是否执行工具:{originalFn?.name}?</div>\n <Flex justify=\"end\" gap={8}>\n <Button type=\"default\" onClick={() => onConfirm?.(false)}>取消</Button>\n <Button type=\"primary\" onClick={() => onConfirm?.(true)}>\n 确认\n </Button>\n </Flex>\n </div>\n </div>\n );\n }\n if (name === 'transferToAgent') {\n const agentName = fnCall.args?.agentName;\n return (\n <div key={msg.id} className={styles.wrapper}>\n <div className={styles.fnCall}>\n <UserSwitchOutlined style={{ color: '#888' }} />\n <Typography.Text\n ellipsis={{ tooltip: agentName }}\n style={{ maxWidth: 300, lineHeight: '16px' }}\n >\n 任务转交:{agentName}\n </Typography.Text>\n {msg.functionResponse\n ? <CheckCircleTwoTone twoToneColor=\"#52c41a\" />\n : <LoadingOutlined />}\n </div>\n </div>\n );\n }\n const renderItem = (obj: any, text: string) => {\n const str = JSON.stringify(obj, null, 2);\n return (\n <Form.Item\n label={(\n <Flex align=\"center\">\n <span className=\"mr-2\">{text}</span>\n <Typography.Text\n copyable={{\n text: str,\n icon: <CopyOutlined />,\n }}\n />\n </Flex>\n )}\n style={{ marginBottom: 12 }}\n >\n <JsonView value={str} />\n </Form.Item>\n );\n };\n const renderResponse = () => {\n const res = msg.functionResponse;\n if (res) {\n if (res.response?.error) {\n return (\n <Tooltip title={res.response.error}>\n <InfoCircleOutlined style={{ color: '#faad14' }} />\n </Tooltip>\n );\n }\n return <CheckCircleTwoTone twoToneColor=\"#52c41a\" />;\n }\n return <LoadingOutlined />;\n };\n return (\n <div key={msg.id} className={styles.wrapper}>\n {showDetail ? (\n <Popover\n placement=\"left\"\n content={(\n <Form style={{ width: 400 }} layout=\"vertical\">\n {renderItem(fnCall.args, '工具参数')}\n {renderItem(msg.functionResponse?.response, '工具响应')}\n </Form>\n )}\n >\n <div className={styles.fnCall}>\n <ToolOutlined style={{ color: '#888' }} />\n <Typography.Text\n ellipsis={{ tooltip: name }}\n style={{ maxWidth: 300, lineHeight: '16px' }}\n >\n 调用工具:{name}\n </Typography.Text>\n {renderResponse()}\n </div>\n </Popover>\n ) : (\n <div className={styles.fnCall}>\n <ToolOutlined style={{ color: '#888' }} />\n <Typography.Text\n ellipsis={{ tooltip: name }}\n style={{ maxWidth: 300, lineHeight: '16px' }}\n >\n 调用工具:{name}\n </Typography.Text>\n {renderResponse()}\n </div>\n )}\n </div>\n );\n};\n\nexport default FunctionCallRender;\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","Alert","Button","Flex","Form","Popover","Tooltip","Typography","CopyOutlined","ToolOutlined","CheckCircleTwoTone","LoadingOutlined","UserSwitchOutlined","InfoCircleOutlined","useStyles","JsonView","jsx","_jsx","jsxs","_jsxs","FunctionCallRender","_ref","_msg$functionResponse","msg","showDetail","onConfirm","styles","fnCall","functionCall","fnRes","functionResponse","name","_msg$functionCall","_fnRes$response","role","confirmed","response","className","wrapper","children","message","type","showIcon","alert","id","originalFn","args","originalFunctionCall","confirm","justify","gap","onClick","_fnCall$args","agentName","style","color","Text","ellipsis","tooltip","maxWidth","lineHeight","twoToneColor","renderItem","obj","text","str","JSON","stringify","Item","label","align","copyable","icon","marginBottom","value","renderResponse","res","_res$response","error","title","placement","content","width","layout"],"sources":["../../../../../../src/components/XAdkChatbot/components/FunctionCallRender/index.tsx"],"sourcesContent":["import React from 'react';\nimport { Alert, Button, Flex, Form, Popover, Tooltip, Typography } from 'antd';\nimport { CopyOutlined, ToolOutlined, CheckCircleTwoTone, LoadingOutlined, UserSwitchOutlined, InfoCircleOutlined } from '@ant-design/icons';\nimport type { IMessage, FunctionCall } from '@/types';\nimport { useStyles } from './styles';\nimport JsonView from '@/components/XAiJsonView';\n\nexport interface FunctionCallRenderProps {\n msg: IMessage;\n showDetail?: boolean;\n onConfirm?: (fnCall: FunctionCall, confirmed: boolean) => void;\n}\n\nconst FunctionCallRender: React.FC<FunctionCallRenderProps> = ({ msg, showDetail, onConfirm }) => {\n const styles = useStyles();\n const fnCall = msg.functionCall as FunctionCall;\n const fnRes = msg.functionResponse;\n const name = fnCall?.name || fnRes?.name;\n if (name === 'adk_request_confirmation') {\n if (fnRes) {\n if (msg.role === 'bot') return null;\n const confirmed = fnRes.response?.confirmed;\n return (\n <div key={msg.id} className={styles.wrapper}>\n {confirmed\n ? <Alert message=\"已确认\" type=\"success\" showIcon className={styles.alert} />\n : <Alert message=\"已取消\" type=\"error\" showIcon className={styles.alert} />}\n </div>\n );\n }\n const originalFn = msg?.functionCall?.args?.originalFunctionCall;\n return (\n <div key={msg.id} className={styles.wrapper}>\n <div className={styles.confirm}>\n <div className=\"mb-4\">请确认是否执行工具:{originalFn?.name}</div>\n <Flex justify=\"end\" gap={8}>\n <Button type=\"default\" onClick={() => onConfirm?.(fnCall, false)}>取消</Button>\n <Button type=\"primary\" onClick={() => onConfirm?.(fnCall, true)}>\n 确认\n </Button>\n </Flex>\n </div>\n </div>\n );\n }\n if (name === 'transferToAgent') {\n const agentName = fnCall.args?.agentName;\n return (\n <div key={msg.id} className={styles.wrapper}>\n <div className={styles.fnCall}>\n <UserSwitchOutlined style={{ color: '#888' }} />\n <Typography.Text\n ellipsis={{ tooltip: agentName }}\n style={{ maxWidth: 300, lineHeight: '16px' }}\n >\n 任务转交:{agentName}\n </Typography.Text>\n {msg.functionResponse\n ? <CheckCircleTwoTone twoToneColor=\"#52c41a\" />\n : <LoadingOutlined />}\n </div>\n </div>\n );\n }\n const renderItem = (obj: any, text: string) => {\n const str = JSON.stringify(obj, null, 2);\n return (\n <Form.Item\n label={(\n <Flex align=\"center\">\n <span className=\"mr-2\">{text}</span>\n <Typography.Text\n copyable={{\n text: str,\n icon: <CopyOutlined />,\n }}\n />\n </Flex>\n )}\n style={{ marginBottom: 12 }}\n >\n <JsonView value={str} />\n </Form.Item>\n );\n };\n const renderResponse = () => {\n const res = msg.functionResponse;\n if (res) {\n if (res.response?.error) {\n return (\n <Tooltip title={res.response.error}>\n <InfoCircleOutlined style={{ color: '#faad14' }} />\n </Tooltip>\n );\n }\n return <CheckCircleTwoTone twoToneColor=\"#52c41a\" />;\n }\n return <LoadingOutlined />;\n };\n return (\n <div key={msg.id} className={styles.wrapper}>\n {showDetail ? (\n <Popover\n placement=\"left\"\n content={(\n <Form style={{ width: 400 }} layout=\"vertical\">\n {renderItem(fnCall.args, '工具参数')}\n {renderItem(msg.functionResponse?.response, '工具响应')}\n </Form>\n )}\n >\n <div className={styles.fnCall}>\n <ToolOutlined style={{ color: '#888' }} />\n <Typography.Text\n ellipsis={{ tooltip: name }}\n style={{ maxWidth: 300, lineHeight: '16px' }}\n >\n 调用工具:{name}\n </Typography.Text>\n {renderResponse()}\n </div>\n </Popover>\n ) : (\n <div className={styles.fnCall}>\n <ToolOutlined style={{ color: '#888' }} />\n <Typography.Text\n ellipsis={{ tooltip: name }}\n style={{ maxWidth: 300, lineHeight: '16px' }}\n >\n 调用工具:{name}\n </Typography.Text>\n {renderResponse()}\n </div>\n )}\n </div>\n );\n};\n\nexport default FunctionCallRender;\n"],"mappings":"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"}
@@ -1,89 +1,102 @@
1
- import _regeneratorRuntime from "@babel/runtime/helpers/esm/regeneratorRuntime";
2
- import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
3
1
  import _createForOfIteratorHelper from "@babel/runtime/helpers/esm/createForOfIteratorHelper";
4
- import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
5
- import React, { useMemo, useCallback, useEffect, useRef, useState } from 'react';
6
- import { Button, Input, Popconfirm } from 'antd';
7
- import { SwapRightOutlined, ArrowUpOutlined, ClearOutlined, LoadingOutlined } from '@ant-design/icons';
2
+ import React, { useMemo, useCallback, useEffect, useRef } from 'react';
3
+ import { Button } from 'antd';
4
+ import { SwapRightOutlined } from '@ant-design/icons';
8
5
  import { useStyles } from "./styles";
9
6
  import MarkdownRender from "./components/MarkdownRender";
10
7
  import FunctionCallRender from "./components/FunctionCallRender";
11
8
  import ThinkRender from "./components/ThinkRender";
9
+ import XAdkSender from "../XAdkSender";
12
10
  import { jsx as _jsx } from "react/jsx-runtime";
13
11
  import { jsxs as _jsxs } from "react/jsx-runtime";
12
+ var scrollThreshold = 10; // 滚动阈值
13
+
14
14
  var XAdkChatbot = function XAdkChatbot(_ref) {
15
- var loading = _ref.loading,
15
+ var _ref$allowUpload = _ref.allowUpload,
16
+ allowUpload = _ref$allowUpload === void 0 ? false : _ref$allowUpload,
17
+ _ref$uploadRequest = _ref.uploadRequest,
18
+ uploadRequest = _ref$uploadRequest === void 0 ? function () {} : _ref$uploadRequest,
19
+ _ref$loading = _ref.loading,
20
+ loading = _ref$loading === void 0 ? false : _ref$loading,
16
21
  prologue = _ref.prologue,
17
22
  suggestions = _ref.suggestions,
18
23
  messages = _ref.messages,
24
+ _ref$initialized = _ref.initialized,
25
+ initialized = _ref$initialized === void 0 ? true : _ref$initialized,
19
26
  footer = _ref.footer,
20
27
  showFnCallDetail = _ref.showFnCallDetail,
21
28
  _ref$clearBtnShow = _ref.clearBtnShow,
22
29
  clearBtnShow = _ref$clearBtnShow === void 0 ? true : _ref$clearBtnShow,
30
+ onConfirm = _ref.onConfirm,
23
31
  onSubmit = _ref.onSubmit,
24
32
  onSuggest = _ref.onSuggest,
25
33
  onStop = _ref.onStop,
26
34
  onClear = _ref.onClear;
27
35
  var styles = useStyles();
28
- var _React$useState = React.useState(''),
29
- _React$useState2 = _slicedToArray(_React$useState, 2),
30
- inputValue = _React$useState2[0],
31
- setInputValue = _React$useState2[1];
32
- var _useState = useState(false),
33
- _useState2 = _slicedToArray(_useState, 2),
34
- showLog = _useState2[0],
35
- setShowLog = _useState2[1];
36
- var _useState3 = useState(),
37
- _useState4 = _slicedToArray(_useState3, 2),
38
- invocation = _useState4[0],
39
- setInvocation = _useState4[1];
40
36
  var listRef = useRef(null);
41
- var scrollTimeoutRef = useRef(null);
42
- var isFirstLoadRef = useRef(true);
37
+ var lastScrollTopRef = useRef(0);
38
+ var userHasScrolledRef = useRef(false);
39
+ var messagesEndRef = useRef(null);
40
+ useEffect(function () {
41
+ var _messagesEndRef$curre;
42
+ if (!loading) return;
43
+ if (userHasScrolledRef.current) return;
44
+ (_messagesEndRef$curre = messagesEndRef.current) === null || _messagesEndRef$curre === void 0 || _messagesEndRef$curre.scrollIntoView({
45
+ behavior: 'smooth'
46
+ });
47
+ }, [loading, messages]);
43
48
 
44
- // 滚动到底部函数
45
- var scrollToBottom = useCallback(function () {
46
- var smooth = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
47
- if (!listRef.current) return;
48
- if (scrollTimeoutRef.current) {
49
- clearTimeout(scrollTimeoutRef.current);
49
+ // 处理滚动事件 - 检测用户是否手动滚动
50
+ var handleScroll = useCallback(function () {
51
+ var el = listRef.current;
52
+ if (!el) return;
53
+ var currentTop = el.scrollTop;
54
+ // 如果向上滚动,说明是手动干预
55
+ if (currentTop < lastScrollTopRef.current) {
56
+ userHasScrolledRef.current = true;
50
57
  }
51
- // 首次尝试
52
- listRef.current.scrollTo({
53
- top: listRef.current.scrollHeight,
54
- behavior: smooth ? 'smooth' : 'instant'
55
- });
56
- // 重试机制:确保滚动生效
57
- scrollTimeoutRef.current = setTimeout(function () {
58
- if (listRef.current) {
59
- listRef.current.scrollTo({
60
- top: listRef.current.scrollHeight,
61
- behavior: smooth ? 'smooth' : 'instant'
62
- });
63
- }
64
- }, 100);
58
+ // 如果向下并且已经到了底部,则恢复自动
59
+ var isAtBottom = Math.abs(el.scrollHeight - currentTop - el.clientHeight) <= scrollThreshold;
60
+ if (isAtBottom) {
61
+ userHasScrolledRef.current = false;
62
+ }
63
+
64
+ // 更新上次位置
65
+ lastScrollTopRef.current = currentTop;
65
66
  }, []);
66
67
 
67
- // 消息更新时滚动
68
+ // 监听滚动事件
68
69
  useEffect(function () {
69
- if (isFirstLoadRef.current) {
70
- // 初始化
71
- scrollToBottom(false);
72
- isFirstLoadRef.current = false;
73
- } else {
74
- // 消息更新
75
- scrollToBottom(true);
76
- }
77
- }, [messages, suggestions, scrollToBottom]);
70
+ var listElement = listRef.current;
71
+ if (!listElement) return;
72
+ listElement.addEventListener('scroll', handleScroll);
73
+ return function () {
74
+ listElement.removeEventListener('scroll', handleScroll);
75
+ };
76
+ }, []);
78
77
 
79
78
  // 发送消息
80
- var handleSubmit = useCallback(function (text) {
79
+ var handleSubmit = function handleSubmit(_ref2) {
80
+ var text = _ref2.text,
81
+ files = _ref2.files;
81
82
  if (loading) return;
82
83
  if (!(text !== null && text !== void 0 && text.trim())) return;
83
- onSubmit === null || onSubmit === void 0 || onSubmit(text);
84
- setInputValue('');
85
- scrollToBottom(true);
86
- }, [loading, scrollToBottom]);
84
+ onSubmit === null || onSubmit === void 0 || onSubmit({
85
+ text: text,
86
+ files: files
87
+ });
88
+ // 滚动
89
+ queueMicrotask(function () {
90
+ var _messagesEndRef$curre2;
91
+ (_messagesEndRef$curre2 = messagesEndRef.current) === null || _messagesEndRef$curre2 === void 0 || _messagesEndRef$curre2.scrollIntoView({
92
+ behavior: 'instant'
93
+ });
94
+ });
95
+ // 重置用户滚动状态
96
+ setTimeout(function () {
97
+ userHasScrolledRef.current = false;
98
+ }, 0);
99
+ };
87
100
  var lastIndex = messages.length - 1;
88
101
  var lastMessageMap = useMemo(function () {
89
102
  var map = new Map();
@@ -167,7 +180,8 @@ var XAdkChatbot = function XAdkChatbot(_ref) {
167
180
  className: styles.botMsg,
168
181
  children: [/*#__PURE__*/_jsx(FunctionCallRender, {
169
182
  msg: msg,
170
- showDetail: showFnCallDetail
183
+ showDetail: showFnCallDetail,
184
+ onConfirm: onConfirm
171
185
  }), !isLoading && (footer === null || footer === void 0 ? void 0 : footer({
172
186
  message: msg,
173
187
  isLastMsg: isLast,
@@ -202,77 +216,17 @@ var XAdkChatbot = function XAdkChatbot(_ref) {
202
216
  })
203
217
  }, item);
204
218
  })
205
- })]
206
- }), /*#__PURE__*/_jsxs("div", {
207
- className: styles.footer,
208
- children: [/*#__PURE__*/_jsxs("div", {
209
- className: styles.senderWrap,
210
- children: [clearBtnShow && /*#__PURE__*/_jsx(Popconfirm, {
211
- title: "\u786E\u5B9A\u8981\u6E05\u7A7A\u804A\u5929\u8BB0\u5F55\u5417\uFF1F",
212
- onConfirm: onClear,
213
- children: /*#__PURE__*/_jsx(Button, {
214
- shape: "circle",
215
- icon: /*#__PURE__*/_jsx(ClearOutlined, {})
216
- })
217
- }), /*#__PURE__*/_jsxs("div", {
218
- className: styles.sender,
219
- children: [/*#__PURE__*/_jsx(Input.TextArea, {
220
- className: styles.input,
221
- rows: 1,
222
- autoSize: {
223
- minRows: 1,
224
- maxRows: 4
225
- },
226
- value: inputValue,
227
- onChange: function onChange(e) {
228
- setInputValue(e.target.value);
229
- },
230
- onPressEnter: ( /*#__PURE__*/function () {
231
- var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(e) {
232
- return _regeneratorRuntime().wrap(function _callee$(_context) {
233
- while (1) switch (_context.prev = _context.next) {
234
- case 0:
235
- if (!e.shiftKey) {
236
- _context.next = 2;
237
- break;
238
- }
239
- return _context.abrupt("return");
240
- case 2:
241
- e.preventDefault();
242
- handleSubmit(inputValue);
243
- case 4:
244
- case "end":
245
- return _context.stop();
246
- }
247
- }, _callee);
248
- }));
249
- return function (_x) {
250
- return _ref2.apply(this, arguments);
251
- };
252
- }()),
253
- placeholder: "\u8BF7\u8F93\u5165\u6D88\u606F"
254
- }), /*#__PURE__*/_jsx("div", {
255
- children: loading ? /*#__PURE__*/_jsx(Button, {
256
- type: "primary",
257
- shape: "circle",
258
- icon: /*#__PURE__*/_jsx(LoadingOutlined, {}),
259
- onClick: function onClick() {
260
- onStop === null || onStop === void 0 || onStop();
261
- }
262
- }) : /*#__PURE__*/_jsx(Button, {
263
- type: "primary",
264
- shape: "circle",
265
- icon: /*#__PURE__*/_jsx(ArrowUpOutlined, {}),
266
- onClick: function onClick() {
267
- handleSubmit(inputValue);
268
- }
269
- })
270
- })]
271
- })]
272
219
  }), /*#__PURE__*/_jsx("div", {
273
- className: styles.tip,
274
- children: "\u5185\u5BB9\u7531AI\u751F\u6210\uFF0C\u65E0\u6CD5\u786E\u4FDD\u771F\u5B9E\u51C6\u786E\uFF0C\u4EC5\u4F9B\u53C2\u8003"
220
+ ref: messagesEndRef
275
221
  })]
222
+ }), /*#__PURE__*/_jsx(XAdkSender, {
223
+ allowUpload: allowUpload,
224
+ uploadRequest: uploadRequest,
225
+ loading: loading,
226
+ clearBtnShow: clearBtnShow,
227
+ onSubmit: handleSubmit,
228
+ onClear: onClear,
229
+ onStop: onStop
276
230
  })]
277
231
  });
278
232
  };
@@ -1 +1 @@
1
- {"version":3,"names":["React","useMemo","useCallback","useEffect","useRef","useState","Button","Input","Popconfirm","SwapRightOutlined","ArrowUpOutlined","ClearOutlined","LoadingOutlined","useStyles","MarkdownRender","FunctionCallRender","ThinkRender","jsx","_jsx","jsxs","_jsxs","XAdkChatbot","_ref","loading","prologue","suggestions","messages","footer","showFnCallDetail","_ref$clearBtnShow","clearBtnShow","onSubmit","onSuggest","onStop","onClear","styles","_React$useState","_React$useState2","_slicedToArray","inputValue","setInputValue","_useState","_useState2","showLog","setShowLog","_useState3","_useState4","invocation","setInvocation","listRef","scrollTimeoutRef","isFirstLoadRef","scrollToBottom","smooth","arguments","length","undefined","current","clearTimeout","scrollTo","top","scrollHeight","behavior","setTimeout","handleSubmit","text","trim","lastIndex","lastMessageMap","map","Map","_iterator","_createForOfIteratorHelper","_step","s","n","done","msg","value","role","invocationId","set","id","err","e","f","className","wrapper","children","list","ref","i","userMsg","card","concat","functionResponse","showDetail","isLast","isLoading","isLastBotMsg","get","thought","botMsg","message","isLastMsg","fnCall","functionCall","item","suggestion","suggestContent","type","icon","iconPosition","onClick","senderWrap","title","onConfirm","shape","sender","TextArea","input","rows","autoSize","minRows","maxRows","onChange","target","onPressEnter","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_callee$","_context","prev","next","shiftKey","abrupt","preventDefault","stop","_x","apply","placeholder","tip"],"sources":["../../../../src/components/XAdkChatbot/index.tsx"],"sourcesContent":["import React, { useMemo, useCallback, useEffect, useRef, useState } from 'react';\nimport { Button, Input, Popconfirm } from 'antd';\nimport { SwapRightOutlined, ArrowUpOutlined, ClearOutlined, LoadingOutlined } from '@ant-design/icons';\nimport { useStyles } from './styles';\nimport MarkdownRender from './components/MarkdownRender';\nimport FunctionCallRender from './components/FunctionCallRender';\nimport ThinkRender from './components/ThinkRender';\nimport type { IInvocation, IMessage, XAdkChatbotProps } from '@/types';\n\nconst XAdkChatbot: React.FC<XAdkChatbotProps> = ({ \n loading,\n prologue,\n suggestions,\n messages,\n footer,\n showFnCallDetail,\n clearBtnShow = true,\n onSubmit,\n onSuggest,\n onStop,\n onClear,\n }) => {\n const styles = useStyles();\n const [inputValue, setInputValue] = React.useState<string>('');\n const [showLog, setShowLog] = useState(false);\n const [invocation, setInvocation] = useState<Partial<IInvocation>>();\n const listRef = useRef<HTMLDivElement>(null);\n const scrollTimeoutRef = useRef<NodeJS.Timeout | null>(null);\n const isFirstLoadRef = useRef(true);\n\n // 滚动到底部函数\n const scrollToBottom = useCallback((smooth = false) => {\n if (!listRef.current) return;\n if (scrollTimeoutRef.current) {\n clearTimeout(scrollTimeoutRef.current);\n }\n // 首次尝试\n listRef.current.scrollTo({\n top: listRef.current.scrollHeight,\n behavior: smooth ? 'smooth' : 'instant',\n });\n // 重试机制:确保滚动生效\n scrollTimeoutRef.current = setTimeout(() => {\n if (listRef.current) {\n listRef.current.scrollTo({\n top: listRef.current.scrollHeight,\n behavior: smooth ? 'smooth' : 'instant',\n });\n }\n }, 100);\n }, []);\n\n // 消息更新时滚动\n useEffect(() => {\n if (isFirstLoadRef.current) {\n // 初始化\n scrollToBottom(false);\n isFirstLoadRef.current = false;\n } else {\n // 消息更新\n scrollToBottom(true);\n }\n }, [messages, suggestions, scrollToBottom]);\n\n // 发送消息\n const handleSubmit = useCallback((text: string) => {\n if (loading) return;\n if (!text?.trim()) return;\n onSubmit?.(text);\n setInputValue('');\n scrollToBottom(true);\n }, [loading, scrollToBottom]);\n\n const lastIndex = messages.length - 1;\n\n const lastMessageMap = useMemo(() => {\n const map = new Map<string, string>();\n for (const msg of messages) {\n if (msg.role === 'bot' && msg.invocationId) {\n map.set(msg.invocationId, msg.id);\n }\n }\n return map;\n }, [messages]);\n\n return (\n <div className={styles.wrapper}>\n <div className={styles.list} ref={listRef}>\n <div className={styles.prologue}>\n {prologue}\n </div>\n {messages.map((msg, i) => {\n if (msg.role === 'user') {\n if (msg.text) {\n return (\n <div key={`${msg.id}-${i}`} className={styles.userMsg}>\n <div className={styles.card}>{msg.text}</div>\n </div>\n );\n }\n if (msg.functionResponse) {\n return (\n <div key={`${msg.id}-${i}`} className={styles.userMsg}>\n <FunctionCallRender msg={msg} showDetail={showFnCallDetail} />\n </div>\n );\n }\n return null;\n }\n const isLast = i === lastIndex;\n const isLoading = isLast && loading;\n const isLastBotMsg = lastMessageMap.get(msg?.invocationId || '') === msg.id;\n \n if (msg.text) {\n if (msg.thought) {\n return (\n <div key={`${msg.id}-${i}`} className={styles.botMsg}>\n <ThinkRender\n msg={msg}\n loading={isLoading}\n />\n {!isLoading && footer?.({ message: msg as IMessage, isLastMsg: isLast, isLastBotMsg })}\n </div>\n );\n }\n return (\n <div key={`${msg.id}-${i}`} className={styles.botMsg}>\n <MarkdownRender text={msg.text} />\n {!isLoading && footer?.({ message: msg as IMessage, isLastMsg: isLast, isLastBotMsg })}\n </div>\n );\n }\n const fnCall = msg.functionCall;\n if (fnCall) {\n return (\n <div key={`${msg.id}-${i}`} className={styles.botMsg}>\n <FunctionCallRender msg={msg} showDetail={showFnCallDetail} />\n {!isLoading && footer?.({ message: msg as IMessage, isLastMsg: isLast, isLastBotMsg })}\n </div>\n );\n }\n return (\n <div key={`${msg.id}-${i}`} className={styles.botMsg}>\n {!isLoading && footer?.({ message: msg as IMessage, isLastMsg: isLast, isLastBotMsg })}\n </div>\n );\n })}\n <div>\n {suggestions?.map((item) => (\n <div key={item} className={styles.suggestion}>\n <div className={styles.suggestContent}>\n <Button\n type=\"text\"\n icon={<SwapRightOutlined />}\n iconPosition='end'\n onClick={() => {\n if (!item) return;\n onSuggest?.(item);\n }}\n >\n {item}\n </Button>\n </div>\n </div>\n ))}\n </div>\n </div>\n <div className={styles.footer}>\n <div className={styles.senderWrap}>\n { clearBtnShow && <Popconfirm\n title=\"确定要清空聊天记录吗?\"\n onConfirm={onClear}\n >\n <Button\n shape=\"circle\"\n icon={<ClearOutlined />}\n />\n </Popconfirm> }\n <div className={styles.sender}>\n <Input.TextArea\n className={styles.input}\n rows={1}\n autoSize={{ minRows: 1, maxRows: 4 }}\n value={inputValue}\n onChange={(e) => {\n setInputValue(e.target.value);\n }}\n onPressEnter={async (e) => {\n if (e.shiftKey) {\n return;\n }\n e.preventDefault();\n handleSubmit(inputValue);\n }}\n placeholder=\"请输入消息\"\n />\n <div>\n {loading\n ? (\n <Button\n type=\"primary\"\n shape=\"circle\"\n icon={<LoadingOutlined />}\n onClick={() => {\n onStop?.();\n }}\n />\n )\n : (\n <Button\n type=\"primary\"\n shape=\"circle\"\n icon={<ArrowUpOutlined />}\n onClick={() => {\n handleSubmit(inputValue);\n }}\n />\n )}\n </div>\n </div>\n </div>\n <div className={styles.tip}>内容由AI生成,无法确保真实准确,仅供参考</div>\n </div>\n {/* 智能体日志详情 */}\n {/* <AgentLogDetail\n show={showLog}\n data={invocation}\n onClose={() => setShowLog(false)}\n /> */}\n </div>\n );\n};\n\nexport default XAdkChatbot;"],"mappings":"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"}
1
+ {"version":3,"names":["React","useMemo","useCallback","useEffect","useRef","Button","SwapRightOutlined","useStyles","MarkdownRender","FunctionCallRender","ThinkRender","XAdkSender","jsx","_jsx","jsxs","_jsxs","scrollThreshold","XAdkChatbot","_ref","_ref$allowUpload","allowUpload","_ref$uploadRequest","uploadRequest","_ref$loading","loading","prologue","suggestions","messages","_ref$initialized","initialized","footer","showFnCallDetail","_ref$clearBtnShow","clearBtnShow","onConfirm","onSubmit","onSuggest","onStop","onClear","styles","listRef","lastScrollTopRef","userHasScrolledRef","messagesEndRef","_messagesEndRef$curre","current","scrollIntoView","behavior","handleScroll","el","currentTop","scrollTop","isAtBottom","Math","abs","scrollHeight","clientHeight","listElement","addEventListener","removeEventListener","handleSubmit","_ref2","text","files","trim","queueMicrotask","_messagesEndRef$curre2","setTimeout","lastIndex","length","lastMessageMap","map","Map","_iterator","_createForOfIteratorHelper","_step","s","n","done","msg","value","role","invocationId","set","id","err","e","f","className","wrapper","children","list","ref","i","userMsg","card","concat","functionResponse","showDetail","isLast","isLoading","isLastBotMsg","get","thought","botMsg","message","isLastMsg","fnCall","functionCall","item","suggestion","suggestContent","type","icon","iconPosition","onClick"],"sources":["../../../../src/components/XAdkChatbot/index.tsx"],"sourcesContent":["import React, { useMemo, useCallback, useEffect, useRef } from 'react';\nimport { Button } from 'antd';\nimport { SwapRightOutlined } from '@ant-design/icons';\nimport { useStyles } from './styles';\nimport MarkdownRender from './components/MarkdownRender';\nimport FunctionCallRender from './components/FunctionCallRender';\nimport ThinkRender from './components/ThinkRender';\nimport XAdkSender from '../XAdkSender';\nimport type { IMessage, XAdkChatbotProps, SendContent } from '@/types';\n\nconst scrollThreshold = 10; // 滚动阈值\n\n\nconst XAdkChatbot: React.FC<XAdkChatbotProps> = ({ \n allowUpload = false,\n uploadRequest = () => {},\n loading = false,\n prologue,\n suggestions,\n messages,\n initialized = true,\n footer,\n showFnCallDetail,\n clearBtnShow = true,\n onConfirm,\n onSubmit,\n onSuggest,\n onStop,\n onClear,\n }) => {\n const styles = useStyles();\n const listRef = useRef<HTMLDivElement>(null);\n const lastScrollTopRef = useRef(0);\n const userHasScrolledRef = useRef(false);\n const messagesEndRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (!loading) return;\n if (userHasScrolledRef.current) return;\n messagesEndRef.current?.scrollIntoView({\n behavior: 'smooth',\n });\n }, [loading, messages]);\n\n // 处理滚动事件 - 检测用户是否手动滚动\n const handleScroll = useCallback(() => {\n const el = listRef.current;\n if (!el) return;\n const currentTop = el.scrollTop;\n // 如果向上滚动,说明是手动干预\n if (currentTop < lastScrollTopRef.current) {\n userHasScrolledRef.current = true;\n }\n // 如果向下并且已经到了底部,则恢复自动\n const isAtBottom = \n Math.abs(el.scrollHeight - currentTop - el.clientHeight) <= scrollThreshold;\n\n if (isAtBottom) {\n userHasScrolledRef.current = false;\n }\n\n // 更新上次位置\n lastScrollTopRef.current = currentTop;\n }, []);\n\n // 监听滚动事件\n useEffect(() => {\n const listElement = listRef.current\n if (!listElement) return;\n\n listElement.addEventListener('scroll', handleScroll);\n return () => {\n listElement.removeEventListener('scroll', handleScroll);\n };\n }, []);\n\n // 发送消息\n const handleSubmit = ({ text, files }: SendContent) => {\n if (loading) return;\n if (!text?.trim()) return;\n onSubmit?.({ text, files });\n // 滚动\n queueMicrotask(() => {\n messagesEndRef.current?.scrollIntoView({ behavior: 'instant' });\n });\n // 重置用户滚动状态\n setTimeout(() => {\n userHasScrolledRef.current = false;\n }, 0);\n };\n\n const lastIndex = messages.length - 1;\n\n const lastMessageMap = useMemo(() => {\n const map = new Map<string, string>();\n for (const msg of messages) {\n if (msg.role === 'bot' && msg.invocationId) {\n map.set(msg.invocationId, msg.id);\n }\n }\n return map;\n }, [messages]);\n\n return (\n <div className={styles.wrapper}>\n <div className={styles.list} ref={listRef}>\n <div className={styles.prologue}>\n {prologue}\n </div>\n {messages.map((msg, i) => {\n if (msg.role === 'user') {\n if (msg.text) {\n return (\n <div key={`${msg.id}-${i}`} className={styles.userMsg}>\n <div className={styles.card}>{msg.text}</div>\n </div>\n );\n }\n if (msg.functionResponse) {\n return (\n <div key={`${msg.id}-${i}`} className={styles.userMsg}>\n <FunctionCallRender msg={msg} showDetail={showFnCallDetail} />\n </div>\n );\n }\n return null;\n }\n const isLast = i === lastIndex;\n const isLoading = isLast && loading;\n const isLastBotMsg = lastMessageMap.get(msg?.invocationId || '') === msg.id;\n \n if (msg.text) {\n if (msg.thought) {\n return (\n <div key={`${msg.id}-${i}`} className={styles.botMsg}>\n <ThinkRender\n msg={msg}\n loading={isLoading}\n />\n {!isLoading && footer?.({ message: msg as IMessage, isLastMsg: isLast, isLastBotMsg })}\n </div>\n );\n }\n return (\n <div key={`${msg.id}-${i}`} className={styles.botMsg}>\n <MarkdownRender text={msg.text} />\n {!isLoading && footer?.({ message: msg as IMessage, isLastMsg: isLast, isLastBotMsg })}\n </div>\n );\n }\n const fnCall = msg.functionCall;\n if (fnCall) {\n return (\n <div key={`${msg.id}-${i}`} className={styles.botMsg}>\n <FunctionCallRender msg={msg} showDetail={showFnCallDetail} onConfirm={onConfirm}/>\n {!isLoading && footer?.({ message: msg as IMessage, isLastMsg: isLast, isLastBotMsg })}\n </div>\n );\n }\n return (\n <div key={`${msg.id}-${i}`} className={styles.botMsg}>\n {!isLoading && footer?.({ message: msg as IMessage, isLastMsg: isLast, isLastBotMsg })}\n </div>\n );\n })}\n <div>\n {suggestions?.map((item) => (\n <div key={item} className={styles.suggestion}>\n <div className={styles.suggestContent}>\n <Button\n type=\"text\"\n icon={<SwapRightOutlined />}\n iconPosition='end'\n onClick={() => {\n if (!item) return;\n onSuggest?.(item);\n }}\n >\n {item}\n </Button>\n </div>\n </div>\n ))}\n </div>\n <div ref={messagesEndRef} />\n </div>\n <XAdkSender\n allowUpload={allowUpload}\n uploadRequest={uploadRequest}\n loading={loading}\n clearBtnShow={clearBtnShow}\n onSubmit={handleSubmit}\n onClear={onClear}\n onStop={onStop}\n />\n </div>\n );\n};\n\nexport default XAdkChatbot;"],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { Meta, StoryObj } from '@storybook/react-vite';
2
+ import XAdkSender from '.';
3
+ declare const meta: Meta<typeof XAdkSender>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof meta>;
6
+ export declare const 基础用法: Story;
@@ -0,0 +1,126 @@
1
+ import _regeneratorRuntime from "@babel/runtime/helpers/esm/regeneratorRuntime";
2
+ import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
3
+ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
4
+ import { useState } from 'react';
5
+ import XAdkSender from '.';
6
+ import { jsx as _jsx } from "react/jsx-runtime";
7
+ var meta = {
8
+ title: 'AI组件/XAdkSender 输入框',
9
+ component: XAdkSender,
10
+ parameters: {
11
+ layout: 'centered'
12
+ },
13
+ tags: ['autodocs'],
14
+ argTypes: {}
15
+ };
16
+ export default meta;
17
+ // 基础用法
18
+ var BasicUsageStory = function BasicUsageStory() {
19
+ var _useState = useState([]),
20
+ _useState2 = _slicedToArray(_useState, 2),
21
+ files = _useState2[0],
22
+ setFiles = _useState2[1];
23
+ var _useState3 = useState(''),
24
+ _useState4 = _slicedToArray(_useState3, 2),
25
+ content = _useState4[0],
26
+ setContent = _useState4[1];
27
+ var _useState5 = useState(false),
28
+ _useState6 = _slicedToArray(_useState5, 2),
29
+ loading = _useState6[0],
30
+ setLoading = _useState6[1];
31
+
32
+ // 模拟清空数据
33
+ var handleSubmit = function handleSubmit(data) {
34
+ console.info('submit', data);
35
+ };
36
+ var handleClear = function handleClear() {
37
+ console.info('clear');
38
+ };
39
+
40
+ // 模拟停止发送
41
+ var handleStop = function handleStop() {
42
+ console.info('stop');
43
+ };
44
+
45
+ // 模拟输入
46
+ var handleChange = function handleChange(text) {
47
+ setContent(text);
48
+ };
49
+
50
+ // 模拟快捷短语点击
51
+ var handleSendMessage = function handleSendMessage(obj) {
52
+ setLoading(true);
53
+ setTimeout(function () {
54
+ setContent('');
55
+ setFiles([]);
56
+ setLoading(false);
57
+ }, 2000);
58
+ };
59
+ return /*#__PURE__*/_jsx("div", {
60
+ style: {
61
+ width: 800,
62
+ border: '1px solid #eee',
63
+ padding: 20
64
+ },
65
+ children: /*#__PURE__*/_jsx(XAdkSender, {
66
+ loading: loading,
67
+ clearBtnShow: true,
68
+ allowUpload: true,
69
+ uploadRequest: ( /*#__PURE__*/function () {
70
+ var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(_ref) {
71
+ var file, onProgress, onSuccess, onError, formData, progress, interval;
72
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
73
+ while (1) switch (_context.prev = _context.next) {
74
+ case 0:
75
+ file = _ref.file, onProgress = _ref.onProgress, onSuccess = _ref.onSuccess, onError = _ref.onError;
76
+ try {
77
+ // 创建 FormData
78
+ formData = new FormData();
79
+ formData.append('file', file);
80
+
81
+ // 模拟上传进度
82
+ progress = 0;
83
+ interval = setInterval(function () {
84
+ progress += 10;
85
+ onProgress === null || onProgress === void 0 || onProgress({
86
+ percent: progress
87
+ });
88
+ if (progress >= 100) {
89
+ clearInterval(interval);
90
+ // 模拟成功响应
91
+ var mockResponse = {
92
+ code: 200,
93
+ data: {
94
+ fileId: Math.floor(Math.random() * 1000) + 1,
95
+ tempUrl: "https://example.com/uploads/".concat(file.name),
96
+ fileName: file.name,
97
+ fileType: file.name.split('.').pop() || ''
98
+ }
99
+ };
100
+ onSuccess === null || onSuccess === void 0 || onSuccess(mockResponse);
101
+ }
102
+ }, 100);
103
+ } catch (error) {
104
+ onError === null || onError === void 0 || onError(error);
105
+ }
106
+ case 2:
107
+ case "end":
108
+ return _context.stop();
109
+ }
110
+ }, _callee);
111
+ }));
112
+ return function (_x) {
113
+ return _ref2.apply(this, arguments);
114
+ };
115
+ }()),
116
+ onSubmit: handleSubmit,
117
+ onClear: handleClear,
118
+ onStop: handleStop
119
+ })
120
+ });
121
+ };
122
+ export var 基础用法 = {
123
+ render: BasicUsageStory,
124
+ args: {}
125
+ };
126
+ //# sourceMappingURL=XAdkSender.stories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useState","XAdkSender","jsx","_jsx","meta","title","component","parameters","layout","tags","argTypes","BasicUsageStory","_useState","_useState2","_slicedToArray","files","setFiles","_useState3","_useState4","content","setContent","_useState5","_useState6","loading","setLoading","handleSubmit","data","console","info","handleClear","handleStop","handleChange","text","handleSendMessage","obj","setTimeout","style","width","border","padding","children","clearBtnShow","allowUpload","uploadRequest","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_ref","file","onProgress","onSuccess","onError","formData","progress","interval","wrap","_callee$","_context","prev","next","FormData","append","setInterval","percent","clearInterval","mockResponse","code","fileId","Math","floor","random","tempUrl","concat","name","fileName","fileType","split","pop","error","stop","_x","apply","arguments","onSubmit","onClear","onStop","基础用法","render","args"],"sources":["../../../../src/components/XAdkSender/XAdkSender.stories.tsx"],"sourcesContent":["import { useState } from 'react';\nimport type { Meta, StoryObj } from '@storybook/react-vite';\nimport type { Attachment } from '@ant-design/x/es/attachments';\nimport XAdkSender from '.';\n\nconst meta: Meta<typeof XAdkSender> = {\n title: 'AI组件/XAdkSender 输入框',\n component: XAdkSender,\n parameters: {\n layout: 'centered',\n },\n tags: ['autodocs'],\n argTypes: {},\n};\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\n// 基础用法\nconst BasicUsageStory = () => {\n const [files, setFiles] = useState<Attachment[]>([]);\n const [content, setContent] = useState('');\n const [loading, setLoading] = useState(false);\n\n // 模拟清空数据\n const handleSubmit = (data: any) => {\n console.info('submit', data);\n };\n\n const handleClear = () => {\n console.info('clear');\n };\n\n // 模拟停止发送\n const handleStop = () => {\n console.info('stop');\n };\n\n // 模拟输入\n const handleChange = (text: string) => {\n setContent(text);\n };\n\n // 模拟快捷短语点击\n const handleSendMessage = (obj: any) => {\n setLoading(true);\n setTimeout(() => {\n setContent('');\n setFiles([]);\n setLoading(false);\n }, 2000);\n };\n\n return (\n <div style={{ width: 800, border: '1px solid #eee', padding: 20 }}>\n <XAdkSender\n loading={loading}\n clearBtnShow={true}\n allowUpload={true}\n uploadRequest={async ({ file, onProgress, onSuccess, onError }) => {\n try {\n // 创建 FormData\n const formData = new FormData();\n formData.append('file', file);\n \n // 模拟上传进度\n let progress = 0;\n const interval = setInterval(() => {\n progress += 10;\n onProgress?.({ percent: progress });\n \n if (progress >= 100) {\n clearInterval(interval);\n // 模拟成功响应\n const mockResponse = {\n code: 200,\n data: {\n fileId: Math.floor(Math.random() * 1000) + 1,\n tempUrl: `https://example.com/uploads/${file.name}`,\n fileName: file.name,\n fileType: file.name.split('.').pop() || ''\n }\n };\n onSuccess?.(mockResponse);\n }\n }, 100);\n \n } catch (error) {\n onError?.(error as Error);\n }\n }}\n onSubmit={handleSubmit}\n onClear={handleClear}\n onStop={handleStop}\n />\n </div>\n );\n};\n\nexport const 基础用法: Story = {\n render: BasicUsageStory,\n args: {},\n};\n"],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import { XAdkSenderProps } from '../../types/XAdkSender';
3
+ declare const XAdkSender: React.FC<XAdkSenderProps>;
4
+ export default XAdkSender;