@ai-group/chat-sdk 2.0.1 → 2.0.2

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 (59) hide show
  1. package/dist/cjs/assets/svg/AddChatIcon.js +5 -12
  2. package/dist/cjs/assets/svg/AddChatIcon.js.map +2 -2
  3. package/dist/cjs/components/DislikeFeedback.js +33 -25
  4. package/dist/cjs/components/DislikeFeedback.js.map +2 -2
  5. package/dist/cjs/components/FeedbackTags.js +5 -15
  6. package/dist/cjs/components/FeedbackTags.js.map +2 -2
  7. package/dist/cjs/components/XAiChatbot/XAiChatbot.stories.js +138 -86
  8. package/dist/cjs/components/XAiChatbot/XAiChatbot.stories.js.map +2 -2
  9. package/dist/cjs/components/XAiChatbot/index.js +189 -127
  10. package/dist/cjs/components/XAiChatbot/index.js.map +3 -3
  11. package/dist/cjs/components/XAiChatbot/styles.js +5 -15
  12. package/dist/cjs/components/XAiChatbot/styles.js.map +2 -2
  13. package/dist/cjs/components/XAiConversations/XAiConversations.stories.js +10 -10
  14. package/dist/cjs/components/XAiConversations/XAiConversations.stories.js.map +2 -2
  15. package/dist/cjs/components/XAiConversations/index.js +61 -41
  16. package/dist/cjs/components/XAiConversations/index.js.map +3 -3
  17. package/dist/cjs/components/XAiConversations/styles.js +5 -15
  18. package/dist/cjs/components/XAiConversations/styles.js.map +3 -3
  19. package/dist/cjs/components/XAiProvider/XAiProvider.stories.js +62 -53
  20. package/dist/cjs/components/XAiProvider/XAiProvider.stories.js.map +1 -1
  21. package/dist/cjs/components/XAiProvider/index.js +109 -98
  22. package/dist/cjs/components/XAiProvider/index.js.map +2 -2
  23. package/dist/cjs/components/XAiSDK.js +2 -2
  24. package/dist/cjs/components/XAiSDK.js.map +2 -2
  25. package/dist/cjs/components/XAiSender/XAiSender.stories.js +22 -8
  26. package/dist/cjs/components/XAiSender/XAiSender.stories.js.map +3 -3
  27. package/dist/cjs/components/XAiSender/index.js +150 -88
  28. package/dist/cjs/components/XAiSender/index.js.map +3 -3
  29. package/dist/cjs/components/XAiSender/styles.d.ts +0 -3
  30. package/dist/cjs/components/XAiSender/styles.js +29 -28
  31. package/dist/cjs/components/XAiSender/styles.js.map +2 -2
  32. package/dist/cjs/components/XAiWebSDKWrapper.js +3 -2
  33. package/dist/cjs/components/XAiWebSDKWrapper.js.map +2 -2
  34. package/dist/cjs/hooks/useXAiSDK.js +3 -2
  35. package/dist/cjs/hooks/useXAiSDK.js.map +2 -2
  36. package/dist/cjs/styles/common.js.map +2 -2
  37. package/dist/cjs/styles/markdown.js +5 -15
  38. package/dist/cjs/styles/markdown.js.map +2 -2
  39. package/dist/cjs/types/XAiSender.d.ts +11 -1
  40. package/dist/cjs/types/XAiSender.js.map +1 -1
  41. package/dist/cjs/utils/umdEntry.js +10 -3
  42. package/dist/cjs/utils/umdEntry.js.map +2 -2
  43. package/dist/esm/components/XAiChatbot/index.js +11 -11
  44. package/dist/esm/components/XAiChatbot/index.js.map +1 -1
  45. package/dist/esm/components/XAiConversations/index.js +2 -2
  46. package/dist/esm/components/XAiConversations/index.js.map +1 -1
  47. package/dist/esm/components/XAiConversations/styles.js.map +1 -1
  48. package/dist/esm/components/XAiSender/XAiSender.stories.js +32 -13
  49. package/dist/esm/components/XAiSender/XAiSender.stories.js.map +1 -1
  50. package/dist/esm/components/XAiSender/index.js +85 -55
  51. package/dist/esm/components/XAiSender/index.js.map +1 -1
  52. package/dist/esm/components/XAiSender/styles.d.ts +0 -3
  53. package/dist/esm/components/XAiSender/styles.js +3 -5
  54. package/dist/esm/components/XAiSender/styles.js.map +1 -1
  55. package/dist/esm/styles/common.js.map +1 -1
  56. package/dist/esm/types/XAiSender.d.ts +11 -1
  57. package/dist/esm/types/XAiSender.js.map +1 -1
  58. package/dist/umd/chat-sdk.min.js +1 -1
  59. package/package.json +30 -26
@@ -1,5 +1,5 @@
1
1
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
- import { useState } from 'react';
2
+ import React, { useState } from 'react';
3
3
  import XAiSender from '.';
4
4
  import { jsx as _jsx } from "react/jsx-runtime";
5
5
  var meta = {
@@ -13,30 +13,34 @@ var meta = {
13
13
  };
14
14
  export default meta;
15
15
  // 基础用法
16
- var BasicUsageStory = function BasicUsageStory(args) {
17
- var _useState = useState(''),
16
+ var BasicUsageStory = function BasicUsageStory() {
17
+ var _useState = useState([]),
18
18
  _useState2 = _slicedToArray(_useState, 2),
19
- content = _useState2[0],
20
- setContent = _useState2[1];
21
- var _useState3 = useState(false),
19
+ files = _useState2[0],
20
+ setFiles = _useState2[1];
21
+ var _useState3 = useState(''),
22
22
  _useState4 = _slicedToArray(_useState3, 2),
23
- loading = _useState4[0],
24
- setLoading = _useState4[1];
23
+ content = _useState4[0],
24
+ setContent = _useState4[1];
25
+ var _useState5 = useState(false),
26
+ _useState6 = _slicedToArray(_useState5, 2),
27
+ loading = _useState6[0],
28
+ setLoading = _useState6[1];
25
29
 
26
30
  // 模拟清空数据
27
31
  var handleClear = function handleClear() {
28
- console.log('clear');
32
+ console.info('clear');
29
33
  };
30
34
 
31
35
  // 模拟输入
32
- var handleChange = function handleChange(content) {
33
- setContent(content);
36
+ var handleChange = function handleChange(text) {
37
+ setContent(text);
34
38
  };
35
39
 
36
40
  // 模拟快捷短语点击
37
- var handleSendMessage = function handleSendMessage(type, content) {
41
+ var handleSendMessage = function handleSendMessage(type, text) {
38
42
  setLoading(true);
39
- console.log(type, content);
43
+ console.info(type, text);
40
44
  setTimeout(function () {
41
45
  setContent('');
42
46
  setLoading(false);
@@ -51,6 +55,21 @@ var BasicUsageStory = function BasicUsageStory(args) {
51
55
  children: /*#__PURE__*/_jsx(XAiSender, {
52
56
  loading: loading,
53
57
  value: content,
58
+ enableUpload: true,
59
+ files: files,
60
+ onChangeFiles: setFiles,
61
+ uploadRequest: function uploadRequest(_ref) {
62
+ var file = _ref.file,
63
+ onProgress = _ref.onProgress,
64
+ onSuccess = _ref.onSuccess;
65
+ console.info(file);
66
+ onProgress === null || onProgress === void 0 || onProgress({
67
+ percent: 50
68
+ });
69
+ setTimeout(function () {
70
+ onSuccess === null || onSuccess === void 0 || onSuccess({});
71
+ }, 1000);
72
+ },
54
73
  onClear: handleClear,
55
74
  onChange: handleChange,
56
75
  onSubmit: handleSendMessage,
@@ -1 +1 @@
1
- {"version":3,"names":["useState","XAiSender","jsx","_jsx","meta","title","component","parameters","layout","tags","argTypes","BasicUsageStory","args","_useState","_useState2","_slicedToArray","content","setContent","_useState3","_useState4","loading","setLoading","handleClear","console","log","handleChange","handleSendMessage","type","setTimeout","style","width","border","padding","children","value","onClear","onChange","onSubmit","onStop","footerTips","基础用法","render"],"sources":["../../../../src/components/XAiSender/XAiSender.stories.tsx"],"sourcesContent":["import { useState } from 'react';\nimport type { Meta, StoryObj } from '@storybook/react-vite';\nimport XAiSender from '.';\n\nconst meta: Meta<typeof XAiSender> = {\n title: 'AI组件/XAiSender 输入框',\n component: XAiSender,\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 = (args: any) => {\n const [content, setContent] = useState('');\n const [loading, setLoading] = useState(false);\n\n // 模拟清空数据\n const handleClear = () => {\n console.log('clear');\n };\n\n // 模拟输入\n const handleChange = (content: string) => {\n setContent(content);\n }\n\n // 模拟快捷短语点击\n const handleSendMessage = (type: string, content: any) => {\n setLoading(true);\n console.log(type, content);\n setTimeout(() => {\n setContent('');\n setLoading(false);\n }, 2000);\n };\n\n\n return (\n <div style={{ width: 440, border: '1px solid #eee', padding: 20 }}>\n <XAiSender\n loading={loading}\n value={content}\n onClear={handleClear}\n onChange={handleChange}\n onSubmit={handleSendMessage}\n onStop={handleClear}\n footerTips='内容由AI生成,无法确保真实准确,仅供参考'\n />\n </div>\n );\n};\n\nexport const 基础用法: Story = {\n render: BasicUsageStory,\n args: {},\n};"],"mappings":";AAAA,SAASA,QAAQ,QAAQ,OAAO;AAEhC,OAAOC,SAAS,MAAM,GAAG;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAE1B,IAAMC,IAA4B,GAAG;EACnCC,KAAK,EAAE,oBAAoB;EAC3BC,SAAS,EAAEL,SAAS;EACpBM,UAAU,EAAE;IACVC,MAAM,EAAE;EACV,CAAC;EACDC,IAAI,EAAE,CAAC,UAAU,CAAC;EAClBC,QAAQ,EAAE,CAAC;AACb,CAAC;AAED,eAAeN,IAAI;AAGnB;AACA,IAAMO,eAAe,GAAG,SAAlBA,eAAeA,CAAIC,IAAS,EAAK;EACrC,IAAAC,SAAA,GAA8Bb,QAAQ,CAAC,EAAE,CAAC;IAAAc,UAAA,GAAAC,cAAA,CAAAF,SAAA;IAAnCG,OAAO,GAAAF,UAAA;IAAEG,UAAU,GAAAH,UAAA;EAC1B,IAAAI,UAAA,GAA8BlB,QAAQ,CAAC,KAAK,CAAC;IAAAmB,UAAA,GAAAJ,cAAA,CAAAG,UAAA;IAAtCE,OAAO,GAAAD,UAAA;IAAEE,UAAU,GAAAF,UAAA;;EAE1B;EACA,IAAMG,WAAW,GAAG,SAAdA,WAAWA,CAAA,EAAS;IACxBC,OAAO,CAACC,GAAG,CAAC,OAAO,CAAC;EACtB,CAAC;;EAED;EACA,IAAMC,YAAY,GAAG,SAAfA,YAAYA,CAAIT,OAAe,EAAK;IACxCC,UAAU,CAACD,OAAO,CAAC;EACrB,CAAC;;EAED;EACA,IAAMU,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAIC,IAAY,EAAEX,OAAY,EAAK;IACxDK,UAAU,CAAC,IAAI,CAAC;IAChBE,OAAO,CAACC,GAAG,CAACG,IAAI,EAAEX,OAAO,CAAC;IAC1BY,UAAU,CAAC,YAAM;MACfX,UAAU,CAAC,EAAE,CAAC;MACdI,UAAU,CAAC,KAAK,CAAC;IACnB,CAAC,EAAE,IAAI,CAAC;EACV,CAAC;EAGD,oBACElB,IAAA;IAAK0B,KAAK,EAAE;MAAEC,KAAK,EAAE,GAAG;MAAEC,MAAM,EAAE,gBAAgB;MAAEC,OAAO,EAAE;IAAG,CAAE;IAAAC,QAAA,eAChE9B,IAAA,CAACF,SAAS;MACRmB,OAAO,EAAEA,OAAQ;MACjBc,KAAK,EAAElB,OAAQ;MACfmB,OAAO,EAAEb,WAAY;MACrBc,QAAQ,EAAEX,YAAa;MACvBY,QAAQ,EAAEX,iBAAkB;MAC5BY,MAAM,EAAEhB,WAAY;MACpBiB,UAAU,EAAC;IAAuB,CACnC;EAAC,CACC,CAAC;AAEV,CAAC;AAED,OAAO,IAAMC,IAAW,GAAG;EACzBC,MAAM,EAAE9B,eAAe;EACvBC,IAAI,EAAE,CAAC;AACT,CAAC"}
1
+ {"version":3,"names":["React","useState","XAiSender","jsx","_jsx","meta","title","component","parameters","layout","tags","argTypes","BasicUsageStory","_useState","_useState2","_slicedToArray","files","setFiles","_useState3","_useState4","content","setContent","_useState5","_useState6","loading","setLoading","handleClear","console","info","handleChange","text","handleSendMessage","type","setTimeout","style","width","border","padding","children","value","enableUpload","onChangeFiles","uploadRequest","_ref","file","onProgress","onSuccess","percent","onClear","onChange","onSubmit","onStop","footerTips","基础用法","render","args"],"sources":["../../../../src/components/XAiSender/XAiSender.stories.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport type { Meta, StoryObj } from '@storybook/react-vite';\nimport type { Attachment } from '@ant-design/x/es/attachments';\nimport XAiSender from '.';\n\nconst meta: Meta<typeof XAiSender> = {\n title: 'AI组件/XAiSender 输入框',\n component: XAiSender,\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 handleClear = () => {\n console.info('clear');\n };\n\n // 模拟输入\n const handleChange = (text: string) => {\n setContent(text);\n };\n\n // 模拟快捷短语点击\n const handleSendMessage = (type: string, text: any) => {\n setLoading(true);\n console.info(type, text);\n setTimeout(() => {\n setContent('');\n setLoading(false);\n }, 2000);\n };\n\n return (\n <div style={{ width: 440, border: '1px solid #eee', padding: 20 }}>\n <XAiSender\n loading={loading}\n value={content}\n enableUpload\n files={files}\n onChangeFiles={setFiles}\n uploadRequest={({ file, onProgress, onSuccess }) => {\n console.info(file);\n onProgress?.({\n percent: 50,\n });\n setTimeout(() => {\n onSuccess?.({});\n }, 1000);\n }}\n onClear={handleClear}\n onChange={handleChange}\n onSubmit={handleSendMessage}\n onStop={handleClear}\n footerTips=\"内容由AI生成,无法确保真实准确,仅供参考\"\n />\n </div>\n );\n};\n\nexport const 基础用法: Story = {\n render: BasicUsageStory,\n args: {},\n};\n"],"mappings":"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"}
@@ -1,14 +1,14 @@
1
1
  import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
2
2
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
3
3
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
4
- var _excluded = ["footerTips", "clearBtnShow", "value", "onSend", "onChange", "onClear", "onStop", "onSubmit", "loading"];
4
+ var _excluded = ["footerTips", "clearBtnShow", "value", "onChange", "onClear", "onStop", "onSubmit", "files", "enableUpload", "onChangeFiles", "uploadRequest", "loading", "disabled"];
5
5
  // 文件: components/XAiSender/index.tsx
6
6
  import React, { useRef, useState } from 'react';
7
- import { Sender } from '@ant-design/x';
8
- import { Button, Popover, Space, Tooltip, Spin } from 'antd';
9
- import { ArrowUpOutlined, ClearOutlined } from '@ant-design/icons';
10
- import { useChatbotContext } from "../../hooks/useProviderContext";
7
+ import { Attachments, Sender } from '@ant-design/x';
8
+ import { Button, Popover, Space, Tooltip } from 'antd';
9
+ import { ArrowUpOutlined, ClearOutlined, PlusCircleOutlined } from '@ant-design/icons';
11
10
  import clsx from 'clsx';
11
+ import { useChatbotContext } from "../../hooks/useProviderContext";
12
12
  import { useStyles } from "./styles";
13
13
  import { jsx as _jsx } from "react/jsx-runtime";
14
14
  import { jsxs as _jsxs } from "react/jsx-runtime";
@@ -17,41 +17,36 @@ var XAiSender = function XAiSender(props) {
17
17
  // 使用新的 Hook 来处理 Provider 上下文
18
18
  var _useChatbotContext = useChatbotContext(props),
19
19
  mergedProps = _useChatbotContext.mergedProps;
20
- var footerTips = mergedProps.footerTips,
21
- clearBtnShow = mergedProps.clearBtnShow,
22
- value = mergedProps.value,
23
- onSend = mergedProps.onSend,
24
- _onChange = mergedProps.onChange,
25
- onClear = mergedProps.onClear,
26
- onStop = mergedProps.onStop,
27
- onSubmit = mergedProps.onSubmit,
28
- _mergedProps$loading = mergedProps.loading,
29
- propLoading = _mergedProps$loading === void 0 ? false : _mergedProps$loading,
30
- resetProps = _objectWithoutProperties(mergedProps, _excluded);
20
+ var _ref = mergedProps,
21
+ footerTips = _ref.footerTips,
22
+ clearBtnShow = _ref.clearBtnShow,
23
+ value = _ref.value,
24
+ _onChange = _ref.onChange,
25
+ onClear = _ref.onClear,
26
+ onStop = _ref.onStop,
27
+ onSubmit = _ref.onSubmit,
28
+ files = _ref.files,
29
+ enableUpload = _ref.enableUpload,
30
+ onChangeFiles = _ref.onChangeFiles,
31
+ uploadRequest = _ref.uploadRequest,
32
+ _ref$loading = _ref.loading,
33
+ propLoading = _ref$loading === void 0 ? false : _ref$loading,
34
+ disabled = _ref.disabled,
35
+ resetProps = _objectWithoutProperties(_ref, _excluded);
36
+ var senderRef = useRef(null);
37
+ var attachmentsRef = useRef(null);
31
38
 
32
39
  // 如果在 Provider 中,使用 Provider 的状态
33
40
  var loading = mergedProps.loading || propLoading;
34
41
  var _useState = useState(false),
35
42
  _useState2 = _slicedToArray(_useState, 2),
36
- disabled = _useState2[0],
37
- _setDisabled = _useState2[1]; // 是否禁止输入
38
- var _useState3 = useState(''),
39
- _useState4 = _slicedToArray(_useState3, 2),
40
- mode = _useState4[0],
41
- _setMode = _useState4[1]; // todo 模式
42
- var _useState5 = useState(false),
43
- _useState6 = _slicedToArray(_useState5, 2),
44
- fileUploading = _useState6[0],
45
- setFileUploading = _useState6[1]; // 文件上传进度条
46
- var _useState7 = useState(false),
47
- _useState8 = _slicedToArray(_useState7, 2),
48
- clearPopoverVisible = _useState8[0],
49
- setClearPopoverVisible = _useState8[1]; // 气泡卡片显隐藏
43
+ clearPopoverVisible = _useState2[0],
44
+ setClearPopoverVisible = _useState2[1]; // 气泡卡片显隐藏
50
45
  var styles = useStyles();
51
46
 
52
47
  // 触发发送
53
48
  var handleSend = function handleSend() {
54
- if (value.trim()) {
49
+ if (value && value.trim()) {
55
50
  // 直接使用合并后的 onSend,自动处理 Provider 和独立模式
56
51
  onSubmit === null || onSubmit === void 0 || onSubmit('text', value);
57
52
  }
@@ -60,9 +55,6 @@ var XAiSender = function XAiSender(props) {
60
55
  // 文件上传按钮引用
61
56
  var fileInputRef = useRef(null);
62
57
 
63
- // 选择文件
64
- var handleFileSelect = function handleFileSelect() {};
65
-
66
58
  // 点击清除按钮
67
59
  var handleClear = function handleClear() {
68
60
  setClearPopoverVisible(true);
@@ -106,13 +98,20 @@ var XAiSender = function XAiSender(props) {
106
98
  className: styles.flexCenterGap2,
107
99
  children: /*#__PURE__*/_jsxs(Tooltip, {
108
100
  placement: "top",
109
- title: mode === 'single_agent_skill_mode' ? '工作流模式不支持上传文件' : '支持图片、文档等上传',
110
- children: [fileUploading ? /*#__PURE__*/_jsx(Spin, {
111
- size: "small"
112
- }) : /*#__PURE__*/_jsx("i", {
113
- className: mode === 'single_agent_skill_mode' ? styles.iconZengjiaDisabled : styles.iconZengjiaNormal,
101
+ title: "\u652F\u6301\u56FE\u7247\u3001\u6587\u6863\u7B49\u4E0A\u4F20",
102
+ children: [/*#__PURE__*/_jsx(Button, {
103
+ color: "default",
104
+ variant: "text",
105
+ shape: "circle",
106
+ size: "small",
107
+ icon: /*#__PURE__*/_jsx(PlusCircleOutlined, {
108
+ style: {
109
+ fontSize: 20,
110
+ color: '#949494'
111
+ }
112
+ }),
114
113
  onClick: function onClick() {
115
- if (mode !== 'single_agent_skill_mode' && fileInputRef.current) {
114
+ if (fileInputRef.current) {
116
115
  var _fileInputRef$current;
117
116
  (_fileInputRef$current = fileInputRef.current) === null || _fileInputRef$current === void 0 || _fileInputRef$current.click();
118
117
  }
@@ -120,12 +119,21 @@ var XAiSender = function XAiSender(props) {
120
119
  }), /*#__PURE__*/_jsx("input", {
121
120
  type: "file",
122
121
  ref: fileInputRef,
123
- onChange: handleFileSelect,
122
+ multiple: true,
123
+ onChange: function onChange(e) {
124
+ var fileList = e.target.files || [];
125
+ if (!fileList.length) return;
126
+ for (var i = 0; i < fileList.length; i++) {
127
+ var _attachmentsRef$curre;
128
+ var file = fileList[i];
129
+ (_attachmentsRef$curre = attachmentsRef.current) === null || _attachmentsRef$curre === void 0 || _attachmentsRef$curre.upload(file);
130
+ }
131
+ e.target.value = '';
132
+ },
124
133
  style: {
125
134
  display: 'none'
126
135
  },
127
- accept: "*/*",
128
- disabled: fileUploading || mode === 'single_agent_skill_mode'
136
+ accept: "*/*"
129
137
  })]
130
138
  })
131
139
  });
@@ -159,24 +167,46 @@ var XAiSender = function XAiSender(props) {
159
167
  placeholder: "\u7EE7\u7EED\u5BF9\u8BDD...",
160
168
  disabled: disabled,
161
169
  loading: loading,
170
+ ref: senderRef,
171
+ header: enableUpload && /*#__PURE__*/_jsx(Sender.Header, {
172
+ closable: false,
173
+ forceRender: true,
174
+ open: !!(files !== null && files !== void 0 && files.length),
175
+ styles: {
176
+ content: {
177
+ padding: 0
178
+ }
179
+ },
180
+ children: /*#__PURE__*/_jsx(Attachments, {
181
+ ref: attachmentsRef,
182
+ customRequest: uploadRequest,
183
+ multiple: true,
184
+ items: files,
185
+ imageProps: {
186
+ preview: {
187
+ mask: true
188
+ }
189
+ },
190
+ onChange: function onChange(_ref2) {
191
+ var fileList = _ref2.fileList;
192
+ onChangeFiles === null || onChangeFiles === void 0 || onChangeFiles(fileList);
193
+ },
194
+ getDropContainer: function getDropContainer() {
195
+ var _senderRef$current;
196
+ return (_senderRef$current = senderRef.current) === null || _senderRef$current === void 0 ? void 0 : _senderRef$current.nativeElement;
197
+ }
198
+ })
199
+ }),
162
200
  actions: function actions(_, info) {
163
201
  var _info$components = info.components,
164
202
  SendButton = _info$components.SendButton,
165
203
  LoadingButton = _info$components.LoadingButton;
166
204
  return /*#__PURE__*/_jsxs(Space, {
167
205
  size: "small",
168
- children: [/*#__PURE__*/_jsx("div", {
169
- className: styles.w(20)
170
- }), mode !== 'single_agent_skill_mode' && uploadButton, mode === 'meta_agent_mode' && /*#__PURE__*/_jsx("div", {
171
- className: styles.flexCenterGap2,
172
- style: {
173
- visibility: 'hidden'
174
- },
175
- children: /*#__PURE__*/_jsx("i", {
176
- className: styles.iconHuihuarenqun
177
- })
178
- }), /*#__PURE__*/_jsx("div", {
179
- className: styles.divider
206
+ children: [enableUpload && /*#__PURE__*/_jsxs(_Fragment, {
207
+ children: [uploadButton, /*#__PURE__*/_jsx("div", {
208
+ className: styles.divider
209
+ })]
180
210
  }), loading ? /*#__PURE__*/_jsx(LoadingButton, {
181
211
  onClick: function onClick() {
182
212
  return onStop === null || onStop === void 0 ? void 0 : onStop();
@@ -1 +1 @@
1
- {"version":3,"names":["React","useRef","useState","Sender","Button","Popover","Space","Tooltip","Spin","ArrowUpOutlined","ClearOutlined","useChatbotContext","clsx","useStyles","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","XAiSender","props","_useChatbotContext","mergedProps","footerTips","clearBtnShow","value","onSend","onChange","onClear","onStop","onSubmit","_mergedProps$loading","loading","propLoading","resetProps","_objectWithoutProperties","_excluded","_useState","_useState2","_slicedToArray","disabled","_setDisabled","_useState3","_useState4","mode","_setMode","_useState5","_useState6","fileUploading","setFileUploading","_useState7","_useState8","clearPopoverVisible","setClearPopoverVisible","styles","handleSend","trim","fileInputRef","handleFileSelect","handleClear","cancelClear","confirmClear","clearConfirmContent","className","p","children","mb","mt","popoverFooter","size","onClick","type","danger","uploadButton","flexCenterGap2","placement","title","iconZengjiaDisabled","iconZengjiaNormal","current","_fileInputRef$current","click","ref","style","display","accept","chatFooter","flex","gap","content","trigger","open","onOpenChange","clearBtn","border","borderRadius","height","width","text","_objectSpread","sendWrapper","placeholder","actions","_","info","_info$components","components","SendButton","LoadingButton","w","visibility","iconHuihuarenqun","divider","stopButton","sendButton","icon","v","onCancel"],"sources":["../../../../src/components/XAiSender/index.tsx"],"sourcesContent":["// 文件: components/XAiSender/index.tsx\nimport React, {\n useRef,\n useState,\n} from 'react';\nimport {\n Sender,\n} from '@ant-design/x';\nimport {\n Button,\n Popover,\n Space,\n Tooltip,\n Spin,\n} from 'antd';\nimport {\n ArrowUpOutlined,\n ClearOutlined,\n} from '@ant-design/icons';\nimport {\n XAiSenderProps\n} from '@/types';\nimport { useChatbotContext } from '@/hooks/useProviderContext';\nimport clsx from 'clsx';\nimport { useStyles } from './styles';\n\nconst XAiSender: React.FC<XAiSenderProps> = (props) => {\n // 使用新的 Hook 来处理 Provider 上下文\n const { mergedProps } = useChatbotContext(props);\n\n const {\n footerTips,\n clearBtnShow,\n value,\n onSend,\n onChange,\n onClear,\n onStop,\n onSubmit,\n loading: propLoading = false,\n ...resetProps\n } = mergedProps;\n\n // 如果在 Provider 中,使用 Provider 的状态\n const loading = mergedProps.loading || propLoading;\n\n const [disabled, _setDisabled] = useState<boolean>(false); // 是否禁止输入\n const [mode, _setMode] = useState<string>(''); // todo 模式\n const [fileUploading, setFileUploading] = useState(false); // 文件上传进度条\n const [clearPopoverVisible, setClearPopoverVisible] = useState(false); // 气泡卡片显隐藏\n const styles = useStyles();\n\n // 触发发送\n const handleSend = () => {\n if (value.trim()) {\n // 直接使用合并后的 onSend,自动处理 Provider 和独立模式\n onSubmit?.('text', value);\n }\n };\n\n // 文件上传按钮引用\n const fileInputRef = useRef<HTMLInputElement>(null);\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 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 return (\n <>\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 {...resetProps}\n value={value}\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={() => onStop?.()} 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 onChange?.(v);\n }}\n onSubmit={handleSend}\n onCancel={() => {\n onStop?.();\n }}\n />\n </div>\n </div>\n { footerTips && <div className={styles.footerTips}>{footerTips}</div>}\n </>\n );\n};\n\nexport default XAiSender;"],"mappings":"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"}
1
+ {"version":3,"names":["React","useRef","useState","Attachments","Sender","Button","Popover","Space","Tooltip","ArrowUpOutlined","ClearOutlined","PlusCircleOutlined","clsx","useChatbotContext","useStyles","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","XAiSender","props","_useChatbotContext","mergedProps","_ref","footerTips","clearBtnShow","value","onChange","onClear","onStop","onSubmit","files","enableUpload","onChangeFiles","uploadRequest","_ref$loading","loading","propLoading","disabled","resetProps","_objectWithoutProperties","_excluded","senderRef","attachmentsRef","_useState","_useState2","_slicedToArray","clearPopoverVisible","setClearPopoverVisible","styles","handleSend","trim","fileInputRef","handleClear","cancelClear","confirmClear","clearConfirmContent","className","p","children","mb","mt","popoverFooter","size","onClick","type","danger","uploadButton","flexCenterGap2","placement","title","color","variant","shape","icon","style","fontSize","current","_fileInputRef$current","click","ref","multiple","e","fileList","target","length","i","_attachmentsRef$curre","file","upload","display","accept","chatFooter","flex","gap","content","trigger","open","onOpenChange","clearBtn","border","borderRadius","height","width","text","_objectSpread","sendWrapper","placeholder","header","Header","closable","forceRender","padding","customRequest","items","imageProps","preview","mask","_ref2","getDropContainer","_senderRef$current","nativeElement","actions","_","info","_info$components","components","SendButton","LoadingButton","divider","stopButton","sendButton","v","onCancel"],"sources":["../../../../src/components/XAiSender/index.tsx"],"sourcesContent":["// 文件: components/XAiSender/index.tsx\nimport React, {\n useRef,\n useState,\n} from 'react';\nimport {\n Attachments,\n Sender,\n} from '@ant-design/x';\nimport {\n Button,\n GetRef,\n Popover,\n Space,\n Tooltip,\n} from 'antd';\nimport {\n ArrowUpOutlined,\n ClearOutlined,\n PlusCircleOutlined,\n} from '@ant-design/icons';\nimport clsx from 'clsx';\nimport { AttachmentsRef } from '@ant-design/x/es/attachments';\nimport {\n XAiSenderProps,\n} from '@/types';\nimport { useChatbotContext } from '@/hooks/useProviderContext';\nimport { useStyles } from './styles';\n\nconst XAiSender: React.FC<XAiSenderProps> = (props) => {\n // 使用新的 Hook 来处理 Provider 上下文\n const { mergedProps } = useChatbotContext(props);\n const {\n footerTips,\n clearBtnShow,\n value,\n onChange,\n onClear,\n onStop,\n onSubmit,\n files,\n enableUpload,\n onChangeFiles,\n uploadRequest,\n loading: propLoading = false,\n disabled,\n ...resetProps\n } = mergedProps as XAiSenderProps;\n const senderRef = useRef<GetRef<typeof Sender>>(null);\n const attachmentsRef = useRef<AttachmentsRef>(null);\n\n // 如果在 Provider 中,使用 Provider 的状态\n const loading = mergedProps.loading || propLoading;\n const [clearPopoverVisible, setClearPopoverVisible] = useState(false); // 气泡卡片显隐藏\n const styles = useStyles();\n\n // 触发发送\n const handleSend = () => {\n if (value && value.trim()) {\n // 直接使用合并后的 onSend,自动处理 Provider 和独立模式\n onSubmit?.('text', value);\n }\n };\n\n // 文件上传按钮引用\n const fileInputRef = useRef<HTMLInputElement>(null);\n\n // 点击清除按钮\n const handleClear = () => {\n setClearPopoverVisible(true);\n };\n\n // 取消清除\n const cancelClear = () => {\n setClearPopoverVisible(false);\n };\n\n // 确认清除\n const confirmClear = () => {\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 >\n <Button\n color=\"default\"\n variant=\"text\"\n shape=\"circle\"\n size=\"small\"\n icon={<PlusCircleOutlined style={{ fontSize: 20, color: '#949494' }} />}\n onClick={() => {\n if (fileInputRef.current) {\n fileInputRef.current?.click();\n }\n }}\n />\n <input\n type=\"file\"\n ref={fileInputRef}\n multiple\n onChange={(e) => {\n const fileList = e.target.files || [];\n if (!fileList.length) return;\n for (let i = 0; i < fileList.length; i++) {\n const file = fileList[i];\n attachmentsRef.current?.upload(file);\n }\n e.target.value = '';\n }}\n style={{ display: 'none' }}\n accept=\"*/*\"\n />\n </Tooltip>\n </div>\n );\n\n return (\n <>\n <div className={styles.chatFooter}>\n <div className={clsx(styles.flex, styles.gap(8))}>\n {/* 清空按钮 */}\n {clearBtnShow && (\n <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 {/* 普通文本输入 */}\n <Sender\n {...resetProps}\n value={value}\n className={styles.sendWrapper}\n placeholder=\"继续对话...\"\n disabled={disabled}\n loading={loading}\n ref={senderRef}\n header={enableUpload && (\n <Sender.Header\n closable={false}\n forceRender\n open={!!files?.length}\n styles={{\n content: { padding: 0 },\n }}\n >\n <Attachments\n ref={attachmentsRef}\n customRequest={uploadRequest}\n multiple\n items={files}\n imageProps={{\n preview: {\n mask: true,\n },\n }}\n onChange={({ fileList }) => {\n onChangeFiles?.(fileList);\n }}\n getDropContainer={() => senderRef.current?.nativeElement}\n />\n </Sender.Header>\n )}\n actions={(_, info) => {\n const { SendButton, LoadingButton } = info.components;\n return (\n <Space size=\"small\">\n {enableUpload && (\n <>\n {uploadButton}\n <div className={styles.divider} />\n </>\n )}\n {loading\n ? (\n <LoadingButton onClick={() => onStop?.()} 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 onChange?.(v);\n }}\n onSubmit={handleSend}\n onCancel={() => {\n onStop?.();\n }}\n />\n </div>\n </div>\n { footerTips && <div className={styles.footerTips}>{footerTips}</div>}\n </>\n );\n};\n\nexport default XAiSender;\n"],"mappings":"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"}
@@ -8,9 +8,6 @@ export declare const useStyles: () => {
8
8
  stopButton: string;
9
9
  divider: string;
10
10
  sendWrapper: string;
11
- iconHuihuarenqun: string;
12
- iconZengjiaDisabled: string;
13
- iconZengjiaNormal: string;
14
11
  } & {
15
12
  w: (width: string | number) => string;
16
13
  h: (height: string | number) => string;
@@ -1,5 +1,6 @@
1
1
  import _taggedTemplateLiteral from "@babel/runtime/helpers/esm/taggedTemplateLiteral";
2
- var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12;
2
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9;
3
+ /* eslint-disable import/prefer-default-export */
3
4
  import { css } from '@emotion/css';
4
5
  import { withBasicStyles, lightBlue, primaryBlue } from "../../styles/common";
5
6
  export var useStyles = withBasicStyles(function () {
@@ -12,10 +13,7 @@ export var useStyles = withBasicStyles(function () {
12
13
  clearBtn: css(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n border: 1px solid rgb(228, 231, 236);\n border-radius: 12px;\n width: 45px;\n height: 45px;\n box-sizing: border-box;\n "]))),
13
14
  stopButton: css(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral(["\n width: 23px !important;\n height: 23px !important;\n padding: 0 !important;\n min-width: 23px !important;\n min-height: 23px !important;\n display: flex;\n align-items: center;\n justify-content: center;\n "]))),
14
15
  divider: css(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral(["\n width: 1px;\n height: 15px;\n margin-left: 3px;\n margin-right: 3px;\n background: #D0D5DD;\n "]))),
15
- sendWrapper: css(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral(["\n flex: 1;\n border-radius: 26px;\n "]))),
16
- iconHuihuarenqun: css(_templateObject10 || (_templateObject10 = _taggedTemplateLiteral(["\n font-family: \"iconfont\";\n font-size: 16px;\n font-weight: 300;\n padding: 3px;\n border-radius: 6px;\n color: #181B25;\n cursor: pointer;\n &:hover {\n background: #E1E4EA;\n color: #7F56D9;\n }\n "]))),
17
- iconZengjiaDisabled: css(_templateObject11 || (_templateObject11 = _taggedTemplateLiteral(["\n font-family: \"iconfont\";\n font-size: 25px;\n font-weight: 300;\n color: #D0D5DD;\n cursor: not-allowed;\n "]))),
18
- iconZengjiaNormal: css(_templateObject12 || (_templateObject12 = _taggedTemplateLiteral(["\n font-family: \"iconfont\";\n font-size: 25px;\n font-weight: 300;\n color: #98A2B3;\n cursor: pointer;\n &:hover {\n color: #7F56D9;\n }\n "])))
16
+ sendWrapper: css(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral(["\n flex: 1;\n border-radius: 26px;\n .ant-attachment-list-card-type-preview {\n width: 52px;\n height: 52px;\n }\n .ant-attachment .ant-attachment-list-upload-btn {\n width: 52px;\n height: 52px;\n font-size: 24px;\n }\n .ant-attachment-list-card-type-overview {\n padding: 9px;\n line-height: 1;\n border: 1px solid rgba(0,0,0,0.1);\n }\n .ant-attachment-list-card-type-overview .ant-attachment-list-card-icon {\n display: flex;\n padding-top: 0px;\n }\n .ant-attachment-list-card .ant-attachment-list-card-name {\n margin-bottom: 4px;\n }\n .ant-attachment-list-card-motion-leave-active {\n display: none;\n }\n .ant-progress-inner {\n width: 44px!important;\n height: 44px!important;\n }\n .ant-progress-text {\n font-size: 12px;\n }\n "])))
19
17
  };
20
18
  });
21
19
  //# sourceMappingURL=styles.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["css","withBasicStyles","lightBlue","primaryBlue","useStyles","chatFooter","_templateObject","_taggedTemplateLiteral","footerTips","_templateObject2","popoverFooter","_templateObject3","sendButton","_templateObject4","uploadBtn","_templateObject5","clearBtn","_templateObject6","stopButton","_templateObject7","divider","_templateObject8","sendWrapper","_templateObject9","iconHuihuarenqun","_templateObject10","iconZengjiaDisabled","_templateObject11","iconZengjiaNormal","_templateObject12"],"sources":["../../../../src/components/XAiSender/styles.tsx"],"sourcesContent":["import { css } from '@emotion/css';\nimport { withBasicStyles, lightBlue, primaryBlue } from '@/styles/common';\n\nexport const useStyles = withBasicStyles(() => ({\n chatFooter: css`\n gap: 8px;\n position: relatative;\n z-index: 10;\n padding: 0 20px 10px 20px;\n `,\n\n footerTips: css`\n display: flex;\n align-items:center;\n justify-content: center;\n font-size: 12px;\n padding-bottom: 5px;\n color: rgba(0,0,0,0.4);\n `,\n\n popoverFooter: css`\n display: flex;\n gap: 8px;\n justify-content: end;\n `,\n\n sendButton: css`\n width: 23px !important;\n height: 23px !important;\n padding: 0 !important;\n min-width: 23px !important;\n min-height: 23px !important;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: #000000;\n border: none;\n border-radius: 20px;\n color: white;\n font-weight: 600;\n cursor: pointer;\n transition: background-color 0.2s ease;\n box-sizing: border-box;\n &:hover {\n background-color: #005ecb;\n }\n &:disabled {\n background-color: ${lightBlue};\n cursor: not-allowed;\n }\n `,\n\n uploadBtn: css`\n margin-left: 8px;\n width: 32px;\n height: 32px;\n border-radius: 50%;\n background-color: ${primaryBlue};\n color: white;\n font-weight: 700;\n font-size: 22px;\n line-height: 32px;\n text-align: center;\n cursor: pointer;\n border: none;\n user-select: none;\n &:hover {\n background-color: #005ecb;\n }\n `,\n\n clearBtn: css`\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n border: 1px solid rgb(228, 231, 236);\n border-radius: 12px;\n width: 45px;\n height: 45px;\n box-sizing: border-box;\n `,\n\n stopButton: css`\n width: 23px !important;\n height: 23px !important;\n padding: 0 !important;\n min-width: 23px !important;\n min-height: 23px !important;\n display: flex;\n align-items: center;\n justify-content: center;\n `,\n\n divider: css`\n width: 1px;\n height: 15px;\n margin-left: 3px;\n margin-right: 3px;\n background: #D0D5DD;\n `,\n\n sendWrapper: css`\n flex: 1;\n border-radius: 26px;\n `,\n\n iconHuihuarenqun: css`\n font-family: \"iconfont\";\n font-size: 16px;\n font-weight: 300;\n padding: 3px;\n border-radius: 6px;\n color: #181B25;\n cursor: pointer;\n &:hover {\n background: #E1E4EA;\n color: #7F56D9;\n }\n `,\n\n iconZengjiaDisabled: css`\n font-family: \"iconfont\";\n font-size: 25px;\n font-weight: 300;\n color: #D0D5DD;\n cursor: not-allowed;\n `,\n\n iconZengjiaNormal: css`\n font-family: \"iconfont\";\n font-size: 25px;\n font-weight: 300;\n color: #98A2B3;\n cursor: pointer;\n &:hover {\n color: #7F56D9;\n }\n `,\n}));"],"mappings":";;AAAA,SAASA,GAAG,QAAQ,cAAc;AAClC,SAASC,eAAe,EAAEC,SAAS,EAAEC,WAAW;AAEhD,OAAO,IAAMC,SAAS,GAAGH,eAAe,CAAC;EAAA,OAAO;IAC9CI,UAAU,EAAEL,GAAG,CAAAM,eAAA,KAAAA,eAAA,GAAAC,sBAAA,wGAKd;IAEDC,UAAU,EAAER,GAAG,CAAAS,gBAAA,KAAAA,gBAAA,GAAAF,sBAAA,oKAOd;IAEDG,aAAa,EAAEV,GAAG,CAAAW,gBAAA,KAAAA,gBAAA,GAAAJ,sBAAA,0EAIjB;IAEDK,UAAU,EAAEZ,GAAG,CAAAa,gBAAA,KAAAA,gBAAA,GAAAN,sBAAA,slBAqBSL,SAAS,CAGhC;IAEDY,SAAS,EAAEd,GAAG,CAAAe,gBAAA,KAAAA,gBAAA,GAAAR,sBAAA,yWAKQJ,WAAW,CAYhC;IAEDa,QAAQ,EAAEhB,GAAG,CAAAiB,gBAAA,KAAAA,gBAAA,GAAAV,sBAAA,qPAUZ;IAEDW,UAAU,EAAElB,GAAG,CAAAmB,gBAAA,KAAAA,gBAAA,GAAAZ,sBAAA,kPASd;IAEDa,OAAO,EAAEpB,GAAG,CAAAqB,gBAAA,KAAAA,gBAAA,GAAAd,sBAAA,yHAMX;IAEDe,WAAW,EAAEtB,GAAG,CAAAuB,gBAAA,KAAAA,gBAAA,GAAAhB,sBAAA,oDAGf;IAEDiB,gBAAgB,EAAExB,GAAG,CAAAyB,iBAAA,KAAAA,iBAAA,GAAAlB,sBAAA,yPAYpB;IAEDmB,mBAAmB,EAAE1B,GAAG,CAAA2B,iBAAA,KAAAA,iBAAA,GAAApB,sBAAA,wIAMvB;IAEDqB,iBAAiB,EAAE5B,GAAG,CAAA6B,iBAAA,KAAAA,iBAAA,GAAAtB,sBAAA;EAUxB,CAAC;AAAA,CAAC,CAAC"}
1
+ {"version":3,"names":["css","withBasicStyles","lightBlue","primaryBlue","useStyles","chatFooter","_templateObject","_taggedTemplateLiteral","footerTips","_templateObject2","popoverFooter","_templateObject3","sendButton","_templateObject4","uploadBtn","_templateObject5","clearBtn","_templateObject6","stopButton","_templateObject7","divider","_templateObject8","sendWrapper","_templateObject9"],"sources":["../../../../src/components/XAiSender/styles.tsx"],"sourcesContent":["/* eslint-disable import/prefer-default-export */\nimport { css } from '@emotion/css';\nimport { withBasicStyles, lightBlue, primaryBlue } from '@/styles/common';\n\nexport const useStyles = withBasicStyles(() => ({\n chatFooter: css`\n gap: 8px;\n position: relatative;\n z-index: 10;\n padding: 0 20px 10px 20px;\n `,\n\n footerTips: css`\n display: flex;\n align-items:center;\n justify-content: center;\n font-size: 12px;\n padding-bottom: 5px;\n color: rgba(0,0,0,0.4);\n `,\n\n popoverFooter: css`\n display: flex;\n gap: 8px;\n justify-content: end;\n `,\n\n sendButton: css`\n width: 23px !important;\n height: 23px !important;\n padding: 0 !important;\n min-width: 23px !important;\n min-height: 23px !important;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: #000000;\n border: none;\n border-radius: 20px;\n color: white;\n font-weight: 600;\n cursor: pointer;\n transition: background-color 0.2s ease;\n box-sizing: border-box;\n &:hover {\n background-color: #005ecb;\n }\n &:disabled {\n background-color: ${lightBlue};\n cursor: not-allowed;\n }\n `,\n\n uploadBtn: css`\n margin-left: 8px;\n width: 32px;\n height: 32px;\n border-radius: 50%;\n background-color: ${primaryBlue};\n color: white;\n font-weight: 700;\n font-size: 22px;\n line-height: 32px;\n text-align: center;\n cursor: pointer;\n border: none;\n user-select: none;\n &:hover {\n background-color: #005ecb;\n }\n `,\n\n clearBtn: css`\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n border: 1px solid rgb(228, 231, 236);\n border-radius: 12px;\n width: 45px;\n height: 45px;\n box-sizing: border-box;\n `,\n\n stopButton: css`\n width: 23px !important;\n height: 23px !important;\n padding: 0 !important;\n min-width: 23px !important;\n min-height: 23px !important;\n display: flex;\n align-items: center;\n justify-content: center;\n `,\n\n divider: css`\n width: 1px;\n height: 15px;\n margin-left: 3px;\n margin-right: 3px;\n background: #D0D5DD;\n `,\n\n sendWrapper: css`\n flex: 1;\n border-radius: 26px;\n .ant-attachment-list-card-type-preview {\n width: 52px;\n height: 52px;\n }\n .ant-attachment .ant-attachment-list-upload-btn {\n width: 52px;\n height: 52px;\n font-size: 24px;\n }\n .ant-attachment-list-card-type-overview {\n padding: 9px;\n line-height: 1;\n border: 1px solid rgba(0,0,0,0.1);\n }\n .ant-attachment-list-card-type-overview .ant-attachment-list-card-icon {\n display: flex;\n padding-top: 0px;\n }\n .ant-attachment-list-card .ant-attachment-list-card-name {\n margin-bottom: 4px;\n }\n .ant-attachment-list-card-motion-leave-active {\n display: none;\n }\n .ant-progress-inner {\n width: 44px!important;\n height: 44px!important;\n }\n .ant-progress-text {\n font-size: 12px;\n }\n `,\n}));\n"],"mappings":";;AAAA;AACA,SAASA,GAAG,QAAQ,cAAc;AAClC,SAASC,eAAe,EAAEC,SAAS,EAAEC,WAAW;AAEhD,OAAO,IAAMC,SAAS,GAAGH,eAAe,CAAC;EAAA,OAAO;IAC9CI,UAAU,EAAEL,GAAG,CAAAM,eAAA,KAAAA,eAAA,GAAAC,sBAAA,wGAKd;IAEDC,UAAU,EAAER,GAAG,CAAAS,gBAAA,KAAAA,gBAAA,GAAAF,sBAAA,oKAOd;IAEDG,aAAa,EAAEV,GAAG,CAAAW,gBAAA,KAAAA,gBAAA,GAAAJ,sBAAA,0EAIjB;IAEDK,UAAU,EAAEZ,GAAG,CAAAa,gBAAA,KAAAA,gBAAA,GAAAN,sBAAA,slBAqBSL,SAAS,CAGhC;IAEDY,SAAS,EAAEd,GAAG,CAAAe,gBAAA,KAAAA,gBAAA,GAAAR,sBAAA,yWAKQJ,WAAW,CAYhC;IAEDa,QAAQ,EAAEhB,GAAG,CAAAiB,gBAAA,KAAAA,gBAAA,GAAAV,sBAAA,qPAUZ;IAEDW,UAAU,EAAElB,GAAG,CAAAmB,gBAAA,KAAAA,gBAAA,GAAAZ,sBAAA,kPASd;IAEDa,OAAO,EAAEpB,GAAG,CAAAqB,gBAAA,KAAAA,gBAAA,GAAAd,sBAAA,yHAMX;IAEDe,WAAW,EAAEtB,GAAG,CAAAuB,gBAAA,KAAAA,gBAAA,GAAAhB,sBAAA;EAmClB,CAAC;AAAA,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"names":["css","primaryBlue","lightBlue","darkGray","lightGray","borderGray","addPxIfNumber","value","concat","basicStyles","w","width","_templateObject","_taggedTemplateLiteral","h","height","_templateObject2","p","padding","_templateObject3","pb","_templateObject4","pt","_templateObject5","pl","_templateObject6","pr","_templateObject7","m","margin","_templateObject8","mb","_templateObject9","mt","_templateObject10","ml","_templateObject11","mr","_templateObject12","text","size","_templateObject13","weight","_templateObject14","textColor","c","_templateObject15","bg","_templateObject16","rs","radius","_templateObject17","gap","g","_templateObject18","flex","_templateObject19","flexCenter","_templateObject20","flexBetween","_templateObject21","flexColumn","_templateObject22","flex1","_templateObject23","cursor","type","_templateObject24","border","color","arguments","length","undefined","_templateObject25","boxShadow","shadow","_templateObject26","transition","property","duration","_templateObject27","overflow","_templateObject28","position","_templateObject29","zIndex","index","_templateObject30","flexCenterGap2","_templateObject31","flexCenterGap4","_templateObject32","withBasicStyles","useCustomStyles","custom","result","_objectSpread"],"sources":["../../../src/styles/common.ts"],"sourcesContent":["import { css } from '@emotion/css';\n\nexport const primaryBlue = '#0078FF'; // 主蓝色\nexport const lightBlue = '#E6F0FF'; // 浅蓝色气泡背景\nexport const darkGray = '#333'; // 深灰色文本\nexport const lightGray = '#888'; // 浅灰文本\nexport const borderGray = '#ddd'; // 边框灰色\n\n// 辅助函数:判断是否为数字,如果是数字则添加 px 单位\nconst addPxIfNumber = (value: number | string): string => {\n return typeof value === 'number' ? `${value}px` : value;\n};\n\n// 基础样式集合\nexport const basicStyles = {\n w: (width: number | string) => css`\n width: ${addPxIfNumber(width)};\n `,\n h: (height: number | string) => css`\n height: ${addPxIfNumber(height)};\n `,\n p: (padding: string) => css`\n padding: ${padding};\n `,\n pb: (padding: number | string) => css`\n padding-bottom: ${addPxIfNumber(padding)};\n `,\n pt: (padding: number | string) => css`\n padding-top: ${addPxIfNumber(padding)};\n `,\n pl: (padding: number | string) => css`\n padding-left: ${addPxIfNumber(padding)};\n `,\n pr: (padding: number | string) => css`\n padding-right: ${addPxIfNumber(padding)};\n `,\n m: (margin: string) => css`\n margin: ${margin};\n `,\n mb: (margin: number | string) => css`\n margin-bottom: ${addPxIfNumber(margin)};\n `,\n mt: (margin: number | string) => css`\n margin-top: ${addPxIfNumber(margin)};\n `,\n ml: (margin: number | string) => css`\n margin-left: ${addPxIfNumber(margin)};\n `,\n mr: (margin: number | string) => css`\n margin-right: ${addPxIfNumber(margin)};\n `,\n text: (size: number | string) => css`\n font-size: ${addPxIfNumber(size)};\n `,\n weight: (size: number) => css`\n font-weight: ${size};\n `,\n textColor: (c: string) => css`\n color: ${c};\n `,\n bg: (c: string) => css`\n background-color: ${c};\n `,\n rs: (radius: number | string) => css`\n border-radius: ${addPxIfNumber(radius)};\n `,\n gap: (g: number | string) => css`\n gap: ${addPxIfNumber(g)};\n `,\n flex: css`\n display: flex;\n align-items: center;\n `,\n flexCenter: css`\n display: flex;\n align-items: center;\n justify-content: center;\n `,\n flexBetween: css`\n display: flex;\n align-items: center;\n justify-content: space-between;\n `,\n flexColumn: css`\n display: flex;\n flex-direction: column;\n `,\n flex1: css`\n flex: 1;\n `,\n cursor: (type: string) => css`\n cursor: ${type};\n `,\n border: (color: string, width = '1px') => css`\n border: ${width} solid ${color};\n `,\n boxShadow: (shadow: string) => css`\n box-shadow: ${shadow};\n `,\n transition: (property = 'all', duration = '0.2s') => css`\n transition: ${property} ${duration} ease;\n `,\n overflow: (type: string) => css`\n overflow: ${type};\n `,\n position: (type: string) => css`\n position: ${type};\n `,\n zIndex: (index: number) => css`\n z-index: ${index};\n `,\n\n flexCenterGap2: css`\n display: flex;\n align-items: center;\n gap: 8px;\n `,\n\n\n flexCenterGap4: css`\n display: flex;\n align-items: center;\n gap: 4px;\n color: #7F56D9;\n cursor: pointer;\n &:hover {\n opacity: 0.8;\n }\n `,\n};\n\n// 高阶函数:自动合并基础样式\nexport function withBasicStyles<T extends Record<string, any>>(useCustomStyles: () => T) {\n return () => {\n const custom = useCustomStyles();\n const result = {\n ...basicStyles,\n ...custom, // 组件样式放在后面,优先覆盖基础样式\n };\n return result as T & typeof basicStyles;\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["css","primaryBlue","lightBlue","darkGray","lightGray","borderGray","addPxIfNumber","value","concat","basicStyles","w","width","_templateObject","_taggedTemplateLiteral","h","height","_templateObject2","p","padding","_templateObject3","pb","_templateObject4","pt","_templateObject5","pl","_templateObject6","pr","_templateObject7","m","margin","_templateObject8","mb","_templateObject9","mt","_templateObject10","ml","_templateObject11","mr","_templateObject12","text","size","_templateObject13","weight","_templateObject14","textColor","c","_templateObject15","bg","_templateObject16","rs","radius","_templateObject17","gap","g","_templateObject18","flex","_templateObject19","flexCenter","_templateObject20","flexBetween","_templateObject21","flexColumn","_templateObject22","flex1","_templateObject23","cursor","type","_templateObject24","border","color","arguments","length","undefined","_templateObject25","boxShadow","shadow","_templateObject26","transition","property","duration","_templateObject27","overflow","_templateObject28","position","_templateObject29","zIndex","index","_templateObject30","flexCenterGap2","_templateObject31","flexCenterGap4","_templateObject32","withBasicStyles","useCustomStyles","custom","result","_objectSpread"],"sources":["../../../src/styles/common.ts"],"sourcesContent":["import { css } from '@emotion/css';\n\nexport const primaryBlue = '#0078FF'; // 主蓝色\nexport const lightBlue = '#E6F0FF'; // 浅蓝色气泡背景\nexport const darkGray = '#333'; // 深灰色文本\nexport const lightGray = '#888'; // 浅灰文本\nexport const borderGray = '#ddd'; // 边框灰色\n\n// 辅助函数:判断是否为数字,如果是数字则添加 px 单位\nconst addPxIfNumber = (value: number | string): string => {\n return typeof value === 'number' ? `${value}px` : value;\n};\n\n// 基础样式集合\nexport const basicStyles = {\n w: (width: number | string) => css`\n width: ${addPxIfNumber(width)};\n `,\n h: (height: number | string) => css`\n height: ${addPxIfNumber(height)};\n `,\n p: (padding: string) => css`\n padding: ${padding};\n `,\n pb: (padding: number | string) => css`\n padding-bottom: ${addPxIfNumber(padding)};\n `,\n pt: (padding: number | string) => css`\n padding-top: ${addPxIfNumber(padding)};\n `,\n pl: (padding: number | string) => css`\n padding-left: ${addPxIfNumber(padding)};\n `,\n pr: (padding: number | string) => css`\n padding-right: ${addPxIfNumber(padding)};\n `,\n m: (margin: string) => css`\n margin: ${margin};\n `,\n mb: (margin: number | string) => css`\n margin-bottom: ${addPxIfNumber(margin)};\n `,\n mt: (margin: number | string) => css`\n margin-top: ${addPxIfNumber(margin)};\n `,\n ml: (margin: number | string) => css`\n margin-left: ${addPxIfNumber(margin)};\n `,\n mr: (margin: number | string) => css`\n margin-right: ${addPxIfNumber(margin)};\n `,\n text: (size: number | string) => css`\n font-size: ${addPxIfNumber(size)};\n `,\n weight: (size: number) => css`\n font-weight: ${size};\n `,\n textColor: (c: string) => css`\n color: ${c};\n `,\n bg: (c: string) => css`\n background-color: ${c};\n `,\n rs: (radius: number | string) => css`\n border-radius: ${addPxIfNumber(radius)};\n `,\n gap: (g: number | string) => css`\n gap: ${addPxIfNumber(g)};\n `,\n flex: css`\n display: flex;\n align-items: center;\n `,\n flexCenter: css`\n display: flex;\n align-items: center;\n justify-content: center;\n `,\n flexBetween: css`\n display: flex;\n align-items: center;\n justify-content: space-between;\n `,\n flexColumn: css`\n display: flex;\n flex-direction: column;\n `,\n flex1: css`\n flex: 1;\n `,\n cursor: (type: string) => css`\n cursor: ${type};\n `,\n border: (color: string, width = '1px') => css`\n border: ${width} solid ${color};\n `,\n boxShadow: (shadow: string) => css`\n box-shadow: ${shadow};\n `,\n transition: (property = 'all', duration = '0.2s') => css`\n transition: ${property} ${duration} ease;\n `,\n overflow: (type: string) => css`\n overflow: ${type};\n `,\n position: (type: string) => css`\n position: ${type};\n `,\n zIndex: (index: number) => css`\n z-index: ${index};\n `,\n\n flexCenterGap2: css`\n display: flex;\n align-items: center;\n gap: 8px;\n `,\n\n flexCenterGap4: css`\n display: flex;\n align-items: center;\n gap: 4px;\n color: #7F56D9;\n cursor: pointer;\n &:hover {\n opacity: 0.8;\n }\n `,\n};\n\n// 高阶函数:自动合并基础样式\nexport function withBasicStyles<T extends Record<string, any>>(useCustomStyles: () => T) {\n return () => {\n const custom = useCustomStyles();\n const result = {\n ...basicStyles,\n ...custom, // 组件样式放在后面,优先覆盖基础样式\n };\n return result as T & typeof basicStyles;\n };\n}\n"],"mappings":"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"}
@@ -1,4 +1,6 @@
1
- import type { SenderProps } from "@ant-design/x";
1
+ import type { SenderProps } from '@ant-design/x';
2
+ import type { Attachment } from '@ant-design/x/es/attachments';
3
+ import { UploadProps } from 'antd';
2
4
  export interface XAiSenderProps extends Omit<SenderProps, 'onSubmit' | 'onCancel'> {
3
5
  /** 是否展示清空按钮 */
4
6
  clearBtnShow?: boolean;
@@ -10,4 +12,12 @@ export interface XAiSenderProps extends Omit<SenderProps, 'onSubmit' | 'onCancel
10
12
  onStop?: () => void;
11
13
  /** 点击发送按钮的回调 */
12
14
  onSubmit?: (type: string, content: string) => void;
15
+ /** 显示上传按钮 */
16
+ enableUpload?: boolean;
17
+ /** 文件列表 */
18
+ files?: Attachment[];
19
+ /** 文件列表变化 */
20
+ onChangeFiles?: (files: Attachment[]) => void;
21
+ /** 文件上传 */
22
+ uploadRequest?: UploadProps['customRequest'];
13
23
  }
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["../../../src/types/XAiSender.ts"],"sourcesContent":["import type { SenderProps } from \"@ant-design/x\";\n\nexport interface XAiSenderProps extends Omit<SenderProps, 'onSubmit' | 'onCancel'> {\n /** 是否展示清空按钮 */\n clearBtnShow? : boolean;\n /** 底部文案 */\n footerTips?: string;\n /** 清空对话框按钮回调 */\n onClear?: () => void;\n /** 加载中,点击停止生成按钮回调 */\n onStop?: () => void;\n /** 点击发送按钮的回调 */\n onSubmit?: (type: string, content: string) => void;\n}"],"mappings":""}
1
+ {"version":3,"names":[],"sources":["../../../src/types/XAiSender.ts"],"sourcesContent":["import type { SenderProps } from '@ant-design/x';\nimport type { Attachment } from '@ant-design/x/es/attachments';\nimport { UploadProps } from 'antd';\n\nexport interface XAiSenderProps extends Omit<SenderProps, 'onSubmit' | 'onCancel'> {\n /** 是否展示清空按钮 */\n clearBtnShow? : boolean;\n /** 底部文案 */\n footerTips?: string;\n /** 清空对话框按钮回调 */\n onClear?: () => void;\n /** 加载中,点击停止生成按钮回调 */\n onStop?: () => void;\n /** 点击发送按钮的回调 */\n onSubmit?: (type: string, content: string) => void;\n /** 显示上传按钮 */\n enableUpload?: boolean;\n /** 文件列表 */\n files?: Attachment[];\n /** 文件列表变化 */\n onChangeFiles?: (files: Attachment[]) => void;\n /** 文件上传 */\n uploadRequest?: UploadProps['customRequest'];\n}\n"],"mappings":""}