@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.
- package/dist/cjs/assets/svg/AddChatIcon.js +5 -12
- package/dist/cjs/assets/svg/AddChatIcon.js.map +2 -2
- package/dist/cjs/components/DislikeFeedback.js +33 -25
- package/dist/cjs/components/DislikeFeedback.js.map +2 -2
- package/dist/cjs/components/FeedbackTags.js +5 -15
- package/dist/cjs/components/FeedbackTags.js.map +2 -2
- package/dist/cjs/components/XAiChatbot/XAiChatbot.stories.js +138 -86
- package/dist/cjs/components/XAiChatbot/XAiChatbot.stories.js.map +2 -2
- package/dist/cjs/components/XAiChatbot/index.js +189 -127
- package/dist/cjs/components/XAiChatbot/index.js.map +3 -3
- package/dist/cjs/components/XAiChatbot/styles.js +5 -15
- package/dist/cjs/components/XAiChatbot/styles.js.map +2 -2
- package/dist/cjs/components/XAiConversations/XAiConversations.stories.js +10 -10
- package/dist/cjs/components/XAiConversations/XAiConversations.stories.js.map +2 -2
- package/dist/cjs/components/XAiConversations/index.js +61 -41
- package/dist/cjs/components/XAiConversations/index.js.map +3 -3
- package/dist/cjs/components/XAiConversations/styles.js +5 -15
- package/dist/cjs/components/XAiConversations/styles.js.map +3 -3
- package/dist/cjs/components/XAiProvider/XAiProvider.stories.js +62 -53
- package/dist/cjs/components/XAiProvider/XAiProvider.stories.js.map +1 -1
- package/dist/cjs/components/XAiProvider/index.js +109 -98
- package/dist/cjs/components/XAiProvider/index.js.map +2 -2
- package/dist/cjs/components/XAiSDK.js +2 -2
- package/dist/cjs/components/XAiSDK.js.map +2 -2
- package/dist/cjs/components/XAiSender/XAiSender.stories.js +22 -8
- package/dist/cjs/components/XAiSender/XAiSender.stories.js.map +3 -3
- package/dist/cjs/components/XAiSender/index.js +150 -88
- package/dist/cjs/components/XAiSender/index.js.map +3 -3
- package/dist/cjs/components/XAiSender/styles.d.ts +0 -3
- package/dist/cjs/components/XAiSender/styles.js +29 -28
- package/dist/cjs/components/XAiSender/styles.js.map +2 -2
- package/dist/cjs/components/XAiWebSDKWrapper.js +3 -2
- package/dist/cjs/components/XAiWebSDKWrapper.js.map +2 -2
- package/dist/cjs/hooks/useXAiSDK.js +3 -2
- package/dist/cjs/hooks/useXAiSDK.js.map +2 -2
- package/dist/cjs/styles/common.js.map +2 -2
- package/dist/cjs/styles/markdown.js +5 -15
- package/dist/cjs/styles/markdown.js.map +2 -2
- package/dist/cjs/types/XAiSender.d.ts +11 -1
- package/dist/cjs/types/XAiSender.js.map +1 -1
- package/dist/cjs/utils/umdEntry.js +10 -3
- package/dist/cjs/utils/umdEntry.js.map +2 -2
- package/dist/esm/components/XAiChatbot/index.js +11 -11
- package/dist/esm/components/XAiChatbot/index.js.map +1 -1
- package/dist/esm/components/XAiConversations/index.js +2 -2
- package/dist/esm/components/XAiConversations/index.js.map +1 -1
- package/dist/esm/components/XAiConversations/styles.js.map +1 -1
- package/dist/esm/components/XAiSender/XAiSender.stories.js +32 -13
- package/dist/esm/components/XAiSender/XAiSender.stories.js.map +1 -1
- package/dist/esm/components/XAiSender/index.js +85 -55
- package/dist/esm/components/XAiSender/index.js.map +1 -1
- package/dist/esm/components/XAiSender/styles.d.ts +0 -3
- package/dist/esm/components/XAiSender/styles.js +3 -5
- package/dist/esm/components/XAiSender/styles.js.map +1 -1
- package/dist/esm/styles/common.js.map +1 -1
- package/dist/esm/types/XAiSender.d.ts +11 -1
- package/dist/esm/types/XAiSender.js.map +1 -1
- package/dist/umd/chat-sdk.min.js +1 -1
- 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(
|
|
17
|
-
var _useState = useState(
|
|
16
|
+
var BasicUsageStory = function BasicUsageStory() {
|
|
17
|
+
var _useState = useState([]),
|
|
18
18
|
_useState2 = _slicedToArray(_useState, 2),
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
var _useState3 = useState(
|
|
19
|
+
files = _useState2[0],
|
|
20
|
+
setFiles = _useState2[1];
|
|
21
|
+
var _useState3 = useState(''),
|
|
22
22
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
23
|
-
|
|
24
|
-
|
|
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.
|
|
32
|
+
console.info('clear');
|
|
29
33
|
};
|
|
30
34
|
|
|
31
35
|
// 模拟输入
|
|
32
|
-
var handleChange = function handleChange(
|
|
33
|
-
setContent(
|
|
36
|
+
var handleChange = function handleChange(text) {
|
|
37
|
+
setContent(text);
|
|
34
38
|
};
|
|
35
39
|
|
|
36
40
|
// 模拟快捷短语点击
|
|
37
|
-
var handleSendMessage = function handleSendMessage(type,
|
|
41
|
+
var handleSendMessage = function handleSendMessage(type, text) {
|
|
38
42
|
setLoading(true);
|
|
39
|
-
console.
|
|
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","
|
|
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", "
|
|
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
|
|
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
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
_onChange =
|
|
25
|
-
onClear =
|
|
26
|
-
onStop =
|
|
27
|
-
onSubmit =
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
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
|
-
|
|
37
|
-
|
|
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:
|
|
110
|
-
children: [
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
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 (
|
|
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
|
-
|
|
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__*/
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
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
|
|
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"
|
|
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
|
|
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
|
|
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
|
|
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":""}
|