@ai-group/chat-sdk 3.0.1-alpha.4 → 3.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/components/FileGallery/index.d.ts +33 -0
- package/dist/cjs/components/FileGallery/index.js +301 -0
- package/dist/cjs/components/FileGallery/index.js.map +7 -0
- package/dist/{esm/components/XAdkChatbot → cjs}/components/FileGallery/styles.d.ts +11 -6
- package/dist/cjs/components/FileGallery/styles.js +188 -0
- package/dist/cjs/components/FileGallery/styles.js.map +7 -0
- package/dist/cjs/components/XAdkChatbot/index.js +1 -1
- package/dist/cjs/components/XAdkChatbot/index.js.map +1 -1
- package/dist/cjs/components/XAdkProvider/XAdkProvider.stories.js +1 -1
- package/dist/cjs/components/XAdkProvider/XAdkProvider.stories.js.map +1 -1
- package/dist/cjs/components/XAdkSender/index.d.ts +2 -2
- package/dist/cjs/components/XAdkSender/index.js +127 -95
- package/dist/cjs/components/XAdkSender/index.js.map +2 -2
- package/dist/cjs/index.d.ts +2 -2
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/index.js.map +3 -3
- package/dist/cjs/types/FileGallery.d.ts +54 -0
- package/dist/cjs/types/FileGallery.js +18 -0
- package/dist/cjs/types/FileGallery.js.map +7 -0
- package/dist/cjs/types/index.d.ts +1 -0
- package/dist/cjs/types/index.js +2 -0
- package/dist/cjs/types/index.js.map +2 -2
- package/dist/esm/components/FileGallery/index.d.ts +33 -0
- package/dist/esm/components/FileGallery/index.js +439 -0
- package/dist/esm/components/FileGallery/index.js.map +1 -0
- package/dist/{cjs/components/XAdkChatbot → esm}/components/FileGallery/styles.d.ts +11 -6
- package/dist/esm/components/FileGallery/styles.js +23 -0
- package/dist/esm/components/FileGallery/styles.js.map +1 -0
- package/dist/esm/components/XAdkChatbot/index.js +1 -1
- package/dist/esm/components/XAdkChatbot/index.js.map +1 -1
- package/dist/esm/components/XAdkProvider/XAdkProvider.stories.js +1 -1
- package/dist/esm/components/XAdkProvider/XAdkProvider.stories.js.map +1 -1
- package/dist/esm/components/XAdkSender/index.d.ts +2 -2
- package/dist/esm/components/XAdkSender/index.js +46 -45
- package/dist/esm/components/XAdkSender/index.js.map +1 -1
- package/dist/esm/index.d.ts +2 -2
- package/dist/esm/index.js +2 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types/FileGallery.d.ts +54 -0
- package/dist/esm/types/FileGallery.js +2 -0
- package/dist/esm/types/FileGallery.js.map +1 -0
- package/dist/esm/types/index.d.ts +1 -0
- package/dist/esm/types/index.js +1 -0
- package/dist/esm/types/index.js.map +1 -1
- package/dist/umd/chat-sdk.min.js +1 -1
- package/package.json +1 -1
- package/dist/cjs/components/XAdkChatbot/components/FileGallery/index.d.ts +0 -12
- package/dist/cjs/components/XAdkChatbot/components/FileGallery/index.js +0 -92
- package/dist/cjs/components/XAdkChatbot/components/FileGallery/index.js.map +0 -7
- package/dist/cjs/components/XAdkChatbot/components/FileGallery/styles.js +0 -137
- package/dist/cjs/components/XAdkChatbot/components/FileGallery/styles.js.map +0 -7
- package/dist/cjs/components/XAdkSender/FileGallery.d.ts +0 -8
- package/dist/cjs/components/XAdkSender/FileGallery.js +0 -381
- package/dist/cjs/components/XAdkSender/FileGallery.js.map +0 -7
- package/dist/esm/components/XAdkChatbot/components/FileGallery/index.d.ts +0 -12
- package/dist/esm/components/XAdkChatbot/components/FileGallery/index.js +0 -104
- package/dist/esm/components/XAdkChatbot/components/FileGallery/index.js.map +0 -1
- package/dist/esm/components/XAdkChatbot/components/FileGallery/styles.js +0 -20
- package/dist/esm/components/XAdkChatbot/components/FileGallery/styles.js.map +0 -1
- package/dist/esm/components/XAdkSender/FileGallery.d.ts +0 -8
- package/dist/esm/components/XAdkSender/FileGallery.js +0 -236
- package/dist/esm/components/XAdkSender/FileGallery.js.map +0 -1
|
@@ -0,0 +1,439 @@
|
|
|
1
|
+
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
2
|
+
import React, { useState, useEffect } from "react";
|
|
3
|
+
import { Image, Tooltip, Progress } from "antd";
|
|
4
|
+
import { FileOutlined, FilePdfOutlined, FileWordOutlined, FileExcelOutlined, FilePptOutlined, FileImageOutlined, CloseOutlined, AudioOutlined, VideoCameraOutlined } from "@ant-design/icons";
|
|
5
|
+
import { useStyles } from "./styles";
|
|
6
|
+
|
|
7
|
+
// ==================== 工具函数 ====================
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* 获取文件名
|
|
11
|
+
*/
|
|
12
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
13
|
+
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
14
|
+
var getFileName = function getFileName(file) {
|
|
15
|
+
return file.displayName || file.name || "";
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* 获取文件大小
|
|
20
|
+
*/
|
|
21
|
+
var getFileSize = function getFileSize(file) {
|
|
22
|
+
return file.size || 0;
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* 获取文件 MIME 类型
|
|
27
|
+
*/
|
|
28
|
+
var getMimeType = function getMimeType(file) {
|
|
29
|
+
return file.mimeType || file.type || "";
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* 获取文件 URL
|
|
34
|
+
*/
|
|
35
|
+
var getFileUrl = function getFileUrl(file) {
|
|
36
|
+
var _file$response, _file$response2;
|
|
37
|
+
return file.fileUri || ((_file$response = file.response) === null || _file$response === void 0 ? void 0 : _file$response.fileUrl) || ((_file$response2 = file.response) === null || _file$response2 === void 0 ? void 0 : _file$response2.tempUrl) || file.tempUrl || "";
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* 获取文件唯一标识
|
|
42
|
+
*/
|
|
43
|
+
var getFileId = function getFileId(file) {
|
|
44
|
+
return file.id || file.uid || "";
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* 判断是否是图片文件
|
|
49
|
+
*/
|
|
50
|
+
var isImageFile = function isImageFile(file) {
|
|
51
|
+
var mimeType = getMimeType(file);
|
|
52
|
+
if (mimeType && mimeType.startsWith("image/")) return true;
|
|
53
|
+
var fileName = getFileName(file);
|
|
54
|
+
if (fileName && fileName.match(/\.(jpg|jpeg|png|gif|webp|bmp|svg)$/i)) return true;
|
|
55
|
+
var url = getFileUrl(file);
|
|
56
|
+
if (url && url.match(/\.(jpg|jpeg|png|gif|webp|bmp|svg)(\?.*)?$/i)) return true;
|
|
57
|
+
return false;
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* 判断是否是音频文件
|
|
62
|
+
*/
|
|
63
|
+
var isAudioFile = function isAudioFile(file) {
|
|
64
|
+
var mimeType = getMimeType(file);
|
|
65
|
+
if (mimeType && mimeType.startsWith("audio/")) return true;
|
|
66
|
+
var fileName = getFileName(file);
|
|
67
|
+
return !!(fileName !== null && fileName !== void 0 && fileName.match(/\.(mp3|wav|m4a|aac|ogg|flac)$/i));
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* 判断是否是视频文件
|
|
72
|
+
*/
|
|
73
|
+
var isVideoFile = function isVideoFile(file) {
|
|
74
|
+
var mimeType = getMimeType(file);
|
|
75
|
+
if (mimeType && mimeType.startsWith("video/")) return true;
|
|
76
|
+
var fileName = getFileName(file);
|
|
77
|
+
return !!(fileName !== null && fileName !== void 0 && fileName.match(/\.(mp4|mov|webm|mkv|avi)$/i));
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* 获取文件扩展名
|
|
82
|
+
*/
|
|
83
|
+
var getFileExtension = function getFileExtension(filename) {
|
|
84
|
+
var ext = filename.split(".").pop();
|
|
85
|
+
return ext ? ext.toLowerCase() : "";
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* 获取文件图标和颜色
|
|
90
|
+
*/
|
|
91
|
+
var getFileIcon = function getFileIcon(file) {
|
|
92
|
+
var ext = getFileExtension(getFileName(file));
|
|
93
|
+
|
|
94
|
+
// PDF
|
|
95
|
+
if (ext === "pdf") {
|
|
96
|
+
return {
|
|
97
|
+
icon: /*#__PURE__*/_jsx(FilePdfOutlined, {}),
|
|
98
|
+
color: "#ff4d4f"
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
// Word
|
|
103
|
+
if (["doc", "docx"].includes(ext)) {
|
|
104
|
+
return {
|
|
105
|
+
icon: /*#__PURE__*/_jsx(FileWordOutlined, {}),
|
|
106
|
+
color: "#1677ff"
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
// Excel
|
|
111
|
+
if (["xls", "xlsx", "csv"].includes(ext)) {
|
|
112
|
+
return {
|
|
113
|
+
icon: /*#__PURE__*/_jsx(FileExcelOutlined, {}),
|
|
114
|
+
color: "#22b35e"
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
// PPT
|
|
119
|
+
if (["ppt", "pptx"].includes(ext)) {
|
|
120
|
+
return {
|
|
121
|
+
icon: /*#__PURE__*/_jsx(FilePptOutlined, {}),
|
|
122
|
+
color: "#ff6e31"
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
// Audio
|
|
127
|
+
if (["mp3", "wav", "m4a", "aac", "ogg", "flac"].includes(ext)) {
|
|
128
|
+
return {
|
|
129
|
+
icon: /*#__PURE__*/_jsx(AudioOutlined, {}),
|
|
130
|
+
color: "#722ed1"
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
// Video
|
|
135
|
+
if (["mp4", "mov", "webm", "mkv", "avi"].includes(ext)) {
|
|
136
|
+
return {
|
|
137
|
+
icon: /*#__PURE__*/_jsx(VideoCameraOutlined, {}),
|
|
138
|
+
color: "#fa8c16"
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
// 图片
|
|
143
|
+
if (isImageFile(file)) {
|
|
144
|
+
return {
|
|
145
|
+
icon: /*#__PURE__*/_jsx(FileImageOutlined, {}),
|
|
146
|
+
color: "#8c8c8c"
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
// 默认
|
|
151
|
+
return {
|
|
152
|
+
icon: /*#__PURE__*/_jsx(FileOutlined, {}),
|
|
153
|
+
color: "#8c8c8c"
|
|
154
|
+
};
|
|
155
|
+
};
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* 格式化文件大小
|
|
159
|
+
*/
|
|
160
|
+
var formatFileSize = function formatFileSize(bytes) {
|
|
161
|
+
if (bytes < 1024) return bytes + " B";
|
|
162
|
+
if (bytes < 1024 * 1024) return (bytes / 1024).toFixed(1) + " KB";
|
|
163
|
+
return (bytes / (1024 * 1024)).toFixed(1) + " MB";
|
|
164
|
+
};
|
|
165
|
+
var styles = useStyles();
|
|
166
|
+
|
|
167
|
+
// ==================== 子组件 ====================
|
|
168
|
+
|
|
169
|
+
var FileItemComponent = function FileItemComponent(_ref) {
|
|
170
|
+
var file = _ref.file,
|
|
171
|
+
removable = _ref.removable,
|
|
172
|
+
onRemove = _ref.onRemove;
|
|
173
|
+
var _useState = useState(""),
|
|
174
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
175
|
+
objectUrl = _useState2[0],
|
|
176
|
+
setObjectUrl = _useState2[1];
|
|
177
|
+
useEffect(function () {
|
|
178
|
+
if (!file.file) return;
|
|
179
|
+
var url = URL.createObjectURL(file.file);
|
|
180
|
+
setObjectUrl(url);
|
|
181
|
+
return function () {
|
|
182
|
+
return URL.revokeObjectURL(url);
|
|
183
|
+
};
|
|
184
|
+
}, [file.file]);
|
|
185
|
+
var isImage = isImageFile(file);
|
|
186
|
+
var isAudio = isAudioFile(file);
|
|
187
|
+
var isVideo = isVideoFile(file);
|
|
188
|
+
var fileName = getFileName(file);
|
|
189
|
+
var fileSize = getFileSize(file);
|
|
190
|
+
var fileId = getFileId(file);
|
|
191
|
+
var url = getFileUrl(file) || objectUrl;
|
|
192
|
+
|
|
193
|
+
// 图片文件
|
|
194
|
+
if (isImage) {
|
|
195
|
+
return /*#__PURE__*/_jsxs("div", {
|
|
196
|
+
className: styles.fileCard,
|
|
197
|
+
children: [/*#__PURE__*/_jsxs("div", {
|
|
198
|
+
className: styles.imageThumbnail,
|
|
199
|
+
children: [/*#__PURE__*/_jsx(Image, {
|
|
200
|
+
src: url,
|
|
201
|
+
alt: fileName,
|
|
202
|
+
fallback: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mN8/5+hHgAHggJ/PchI7wAAAABJRU5ErkJggg==",
|
|
203
|
+
preview: {
|
|
204
|
+
src: url
|
|
205
|
+
}
|
|
206
|
+
}), file.status === "uploading" && /*#__PURE__*/_jsx("div", {
|
|
207
|
+
className: styles.imageOverlay,
|
|
208
|
+
children: /*#__PURE__*/_jsx(Progress, {
|
|
209
|
+
type: "circle",
|
|
210
|
+
percent: file.progress,
|
|
211
|
+
size: 30,
|
|
212
|
+
strokeColor: "#1677ff"
|
|
213
|
+
})
|
|
214
|
+
})]
|
|
215
|
+
}), /*#__PURE__*/_jsxs("div", {
|
|
216
|
+
className: styles.fileInfo,
|
|
217
|
+
children: [/*#__PURE__*/_jsx(Tooltip, {
|
|
218
|
+
title: fileName,
|
|
219
|
+
children: /*#__PURE__*/_jsx("div", {
|
|
220
|
+
className: styles.fileName,
|
|
221
|
+
children: fileName.length > 15 ? "".concat(fileName.substring(0, 15), "...") : fileName
|
|
222
|
+
})
|
|
223
|
+
}), /*#__PURE__*/_jsx("div", {
|
|
224
|
+
className: styles.fileSize,
|
|
225
|
+
children: formatFileSize(fileSize)
|
|
226
|
+
})]
|
|
227
|
+
}), removable && /*#__PURE__*/_jsx("button", {
|
|
228
|
+
className: styles.fileRemoveBtn,
|
|
229
|
+
onClick: function onClick() {
|
|
230
|
+
return onRemove(fileId);
|
|
231
|
+
},
|
|
232
|
+
disabled: file.status === "uploading",
|
|
233
|
+
"aria-label": "\u5220\u9664\u6587\u4EF6",
|
|
234
|
+
children: /*#__PURE__*/_jsx(CloseOutlined, {})
|
|
235
|
+
})]
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
// 音频文件
|
|
240
|
+
if (isAudio) {
|
|
241
|
+
return /*#__PURE__*/_jsxs("div", {
|
|
242
|
+
className: styles.fileCard,
|
|
243
|
+
children: [/*#__PURE__*/_jsx("div", {
|
|
244
|
+
className: styles.fileIcon,
|
|
245
|
+
style: {
|
|
246
|
+
color: "#722ed1"
|
|
247
|
+
},
|
|
248
|
+
children: /*#__PURE__*/_jsx(AudioOutlined, {})
|
|
249
|
+
}), /*#__PURE__*/_jsxs("div", {
|
|
250
|
+
className: styles.fileInfo,
|
|
251
|
+
children: [/*#__PURE__*/_jsx(Tooltip, {
|
|
252
|
+
title: fileName,
|
|
253
|
+
children: /*#__PURE__*/_jsx("div", {
|
|
254
|
+
className: styles.fileName,
|
|
255
|
+
children: fileName
|
|
256
|
+
})
|
|
257
|
+
}), /*#__PURE__*/_jsx("audio", {
|
|
258
|
+
src: url,
|
|
259
|
+
controls: true,
|
|
260
|
+
className: styles.mediaWrapper,
|
|
261
|
+
style: {
|
|
262
|
+
width: "100%",
|
|
263
|
+
height: 28
|
|
264
|
+
}
|
|
265
|
+
})]
|
|
266
|
+
}), removable && /*#__PURE__*/_jsx("button", {
|
|
267
|
+
className: styles.fileRemoveBtn,
|
|
268
|
+
onClick: function onClick() {
|
|
269
|
+
return onRemove(fileId);
|
|
270
|
+
},
|
|
271
|
+
disabled: file.status === "uploading",
|
|
272
|
+
"aria-label": "\u5220\u9664\u6587\u4EF6",
|
|
273
|
+
children: /*#__PURE__*/_jsx(CloseOutlined, {})
|
|
274
|
+
})]
|
|
275
|
+
});
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
// 视频文件
|
|
279
|
+
if (isVideo) {
|
|
280
|
+
return /*#__PURE__*/_jsxs("div", {
|
|
281
|
+
className: styles.fileCard,
|
|
282
|
+
children: [/*#__PURE__*/_jsx("div", {
|
|
283
|
+
className: styles.fileIcon,
|
|
284
|
+
style: {
|
|
285
|
+
color: "#fa8c16"
|
|
286
|
+
},
|
|
287
|
+
children: /*#__PURE__*/_jsx(VideoCameraOutlined, {})
|
|
288
|
+
}), /*#__PURE__*/_jsxs("div", {
|
|
289
|
+
className: styles.fileInfo,
|
|
290
|
+
children: [/*#__PURE__*/_jsx(Tooltip, {
|
|
291
|
+
title: fileName,
|
|
292
|
+
children: /*#__PURE__*/_jsx("div", {
|
|
293
|
+
className: styles.fileName,
|
|
294
|
+
children: fileName
|
|
295
|
+
})
|
|
296
|
+
}), /*#__PURE__*/_jsx("video", {
|
|
297
|
+
src: url,
|
|
298
|
+
controls: true,
|
|
299
|
+
className: styles.mediaWrapper,
|
|
300
|
+
style: {
|
|
301
|
+
width: "100%",
|
|
302
|
+
height: 40
|
|
303
|
+
}
|
|
304
|
+
})]
|
|
305
|
+
}), removable && /*#__PURE__*/_jsx("button", {
|
|
306
|
+
className: styles.fileRemoveBtn,
|
|
307
|
+
onClick: function onClick() {
|
|
308
|
+
return onRemove(fileId);
|
|
309
|
+
},
|
|
310
|
+
disabled: file.status === "uploading",
|
|
311
|
+
"aria-label": "\u5220\u9664\u6587\u4EF6",
|
|
312
|
+
children: /*#__PURE__*/_jsx(CloseOutlined, {})
|
|
313
|
+
})]
|
|
314
|
+
});
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
// 其他文件
|
|
318
|
+
var _getFileIcon = getFileIcon(file),
|
|
319
|
+
icon = _getFileIcon.icon,
|
|
320
|
+
color = _getFileIcon.color;
|
|
321
|
+
var isExternalUrl = url && url.startsWith("http");
|
|
322
|
+
return /*#__PURE__*/_jsxs("div", {
|
|
323
|
+
className: styles.fileCard,
|
|
324
|
+
children: [/*#__PURE__*/_jsx("div", {
|
|
325
|
+
className: styles.fileIcon,
|
|
326
|
+
style: {
|
|
327
|
+
color: color
|
|
328
|
+
},
|
|
329
|
+
children: icon
|
|
330
|
+
}), /*#__PURE__*/_jsxs("div", {
|
|
331
|
+
className: styles.fileInfo,
|
|
332
|
+
children: [isExternalUrl ? /*#__PURE__*/_jsx("a", {
|
|
333
|
+
href: url,
|
|
334
|
+
target: "_blank",
|
|
335
|
+
rel: "noopener noreferrer",
|
|
336
|
+
className: styles.fileLink,
|
|
337
|
+
children: /*#__PURE__*/_jsx(Tooltip, {
|
|
338
|
+
title: fileName,
|
|
339
|
+
children: /*#__PURE__*/_jsx("div", {
|
|
340
|
+
className: styles.fileName,
|
|
341
|
+
children: fileName.length > 15 ? "".concat(fileName.substring(0, 15), "...") : fileName
|
|
342
|
+
})
|
|
343
|
+
})
|
|
344
|
+
}) : /*#__PURE__*/_jsx(Tooltip, {
|
|
345
|
+
title: fileName,
|
|
346
|
+
children: /*#__PURE__*/_jsx("div", {
|
|
347
|
+
className: styles.fileName,
|
|
348
|
+
children: fileName.length > 15 ? "".concat(fileName.substring(0, 15), "...") : fileName
|
|
349
|
+
})
|
|
350
|
+
}), file.status === "uploading" ? /*#__PURE__*/_jsx(Progress, {
|
|
351
|
+
percent: file.progress,
|
|
352
|
+
size: "small",
|
|
353
|
+
showInfo: false,
|
|
354
|
+
strokeColor: "#1677ff",
|
|
355
|
+
className: styles.progress
|
|
356
|
+
}) : fileSize > 0 && /*#__PURE__*/_jsx("div", {
|
|
357
|
+
className: styles.fileSize,
|
|
358
|
+
children: formatFileSize(fileSize)
|
|
359
|
+
}), file.status === "error" && file.errorMessage && /*#__PURE__*/_jsx("div", {
|
|
360
|
+
style: {
|
|
361
|
+
fontSize: "11px",
|
|
362
|
+
color: "#ff4d4f",
|
|
363
|
+
marginTop: "2px"
|
|
364
|
+
},
|
|
365
|
+
children: file.errorMessage
|
|
366
|
+
})]
|
|
367
|
+
}), removable && /*#__PURE__*/_jsx("button", {
|
|
368
|
+
className: styles.fileRemoveBtn,
|
|
369
|
+
onClick: function onClick() {
|
|
370
|
+
return onRemove(fileId);
|
|
371
|
+
},
|
|
372
|
+
disabled: file.status === "uploading",
|
|
373
|
+
"aria-label": "\u5220\u9664\u6587\u4EF6",
|
|
374
|
+
children: /*#__PURE__*/_jsx(CloseOutlined, {})
|
|
375
|
+
})]
|
|
376
|
+
});
|
|
377
|
+
};
|
|
378
|
+
|
|
379
|
+
// ==================== 主组件 ====================
|
|
380
|
+
|
|
381
|
+
/**
|
|
382
|
+
* FileGallery - 通用文件展示组件
|
|
383
|
+
*
|
|
384
|
+
* 功能特性:
|
|
385
|
+
* - 📁 支持多种文件类型展示 (图片、音频、视频、文档等)
|
|
386
|
+
* - 🖼️ 图片支持预览和缩略图
|
|
387
|
+
* - 🎵 音频文件支持内联播放
|
|
388
|
+
* - 🎬 视频文件支持内联播放
|
|
389
|
+
* - 📊 显示文件大小、类型图标
|
|
390
|
+
* - 🗑️ 支持删除操作
|
|
391
|
+
* - 📤 支持上传进度显示
|
|
392
|
+
* - 🎨 支持左右对齐
|
|
393
|
+
*
|
|
394
|
+
* @example
|
|
395
|
+
* // XAdkSender 场景 - 可删除的本地文件
|
|
396
|
+
* <FileGallery
|
|
397
|
+
* files={localFiles}
|
|
398
|
+
* removable
|
|
399
|
+
* onRemove={handleRemove}
|
|
400
|
+
* align="left"
|
|
401
|
+
* />
|
|
402
|
+
*
|
|
403
|
+
* @example
|
|
404
|
+
* // XadkChatbot 场景 - 只读的远程文件
|
|
405
|
+
* <FileGallery
|
|
406
|
+
* files={remoteFiles}
|
|
407
|
+
* align="right"
|
|
408
|
+
* />
|
|
409
|
+
*/
|
|
410
|
+
var FileGallery = function FileGallery(_ref2) {
|
|
411
|
+
var files = _ref2.files,
|
|
412
|
+
_ref2$align = _ref2.align,
|
|
413
|
+
align = _ref2$align === void 0 ? "left" : _ref2$align,
|
|
414
|
+
_ref2$removable = _ref2.removable,
|
|
415
|
+
removable = _ref2$removable === void 0 ? false : _ref2$removable,
|
|
416
|
+
_ref2$onRemove = _ref2.onRemove,
|
|
417
|
+
onRemove = _ref2$onRemove === void 0 ? function () {} : _ref2$onRemove,
|
|
418
|
+
className = _ref2.className,
|
|
419
|
+
style = _ref2.style;
|
|
420
|
+
if (!files || files.length === 0) return null;
|
|
421
|
+
return /*#__PURE__*/_jsx("div", {
|
|
422
|
+
className: "".concat(styles.container, " ").concat(align === "right" ? "align-right" : "", " ").concat(className || ""),
|
|
423
|
+
style: style,
|
|
424
|
+
children: /*#__PURE__*/_jsx("div", {
|
|
425
|
+
className: styles.fileList,
|
|
426
|
+
children: /*#__PURE__*/_jsx(Image.PreviewGroup, {
|
|
427
|
+
children: files.map(function (file, index) {
|
|
428
|
+
return /*#__PURE__*/_jsx(FileItemComponent, {
|
|
429
|
+
file: file,
|
|
430
|
+
removable: removable,
|
|
431
|
+
onRemove: onRemove
|
|
432
|
+
}, getFileId(file) || index);
|
|
433
|
+
})
|
|
434
|
+
})
|
|
435
|
+
})
|
|
436
|
+
});
|
|
437
|
+
};
|
|
438
|
+
export default FileGallery;
|
|
439
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","useState","useEffect","Image","Tooltip","Progress","FileOutlined","FilePdfOutlined","FileWordOutlined","FileExcelOutlined","FilePptOutlined","FileImageOutlined","CloseOutlined","AudioOutlined","VideoCameraOutlined","useStyles","jsx","_jsx","jsxs","_jsxs","getFileName","file","displayName","name","getFileSize","size","getMimeType","mimeType","type","getFileUrl","_file$response","_file$response2","fileUri","response","fileUrl","tempUrl","getFileId","id","uid","isImageFile","startsWith","fileName","match","url","isAudioFile","isVideoFile","getFileExtension","filename","ext","split","pop","toLowerCase","getFileIcon","icon","color","includes","formatFileSize","bytes","toFixed","styles","FileItemComponent","_ref","removable","onRemove","_useState","_useState2","_slicedToArray","objectUrl","setObjectUrl","URL","createObjectURL","revokeObjectURL","isImage","isAudio","isVideo","fileSize","fileId","className","fileCard","children","imageThumbnail","src","alt","fallback","preview","status","imageOverlay","percent","progress","strokeColor","fileInfo","title","length","concat","substring","fileRemoveBtn","onClick","disabled","fileIcon","style","controls","mediaWrapper","width","height","_getFileIcon","isExternalUrl","href","target","rel","fileLink","showInfo","errorMessage","fontSize","marginTop","FileGallery","_ref2","files","_ref2$align","align","_ref2$removable","_ref2$onRemove","container","fileList","PreviewGroup","map","index"],"sources":["../../../../src/components/FileGallery/index.tsx"],"sourcesContent":["import React, { useState, useEffect } from \"react\";\nimport { Image, Tooltip, Progress } from \"antd\";\nimport {\n FileOutlined,\n FilePdfOutlined,\n FileWordOutlined,\n FileExcelOutlined,\n FilePptOutlined,\n FileImageOutlined,\n CloseOutlined,\n AudioOutlined,\n VideoCameraOutlined,\n} from \"@ant-design/icons\";\nimport { FileItem, FileGalleryProps, FileItemComponentProps } from \"@/types\";\nimport { useStyles } from \"./styles\";\n\n// ==================== 工具函数 ====================\n\n/**\n * 获取文件名\n */\nconst getFileName = (file: FileItem): string => {\n return file.displayName || file.name || \"\";\n};\n\n/**\n * 获取文件大小\n */\nconst getFileSize = (file: FileItem): number => {\n return file.size || 0;\n};\n\n/**\n * 获取文件 MIME 类型\n */\nconst getMimeType = (file: FileItem): string => {\n return file.mimeType || file.type || \"\";\n};\n\n/**\n * 获取文件 URL\n */\nconst getFileUrl = (file: FileItem): string => {\n return (\n file.fileUri ||\n file.response?.fileUrl ||\n file.response?.tempUrl ||\n file.tempUrl ||\n \"\"\n );\n};\n\n/**\n * 获取文件唯一标识\n */\nconst getFileId = (file: FileItem): string => {\n return file.id || file.uid || \"\";\n};\n\n/**\n * 判断是否是图片文件\n */\nconst isImageFile = (file: FileItem): boolean => {\n const mimeType = getMimeType(file);\n if (mimeType && mimeType.startsWith(\"image/\")) return true;\n\n const fileName = getFileName(file);\n if (fileName && fileName.match(/\\.(jpg|jpeg|png|gif|webp|bmp|svg)$/i))\n return true;\n\n const url = getFileUrl(file);\n if (url && url.match(/\\.(jpg|jpeg|png|gif|webp|bmp|svg)(\\?.*)?$/i))\n return true;\n\n return false;\n};\n\n/**\n * 判断是否是音频文件\n */\nconst isAudioFile = (file: FileItem): boolean => {\n const mimeType = getMimeType(file);\n if (mimeType && mimeType.startsWith(\"audio/\")) return true;\n\n const fileName = getFileName(file);\n return !!fileName?.match(/\\.(mp3|wav|m4a|aac|ogg|flac)$/i);\n};\n\n/**\n * 判断是否是视频文件\n */\nconst isVideoFile = (file: FileItem): boolean => {\n const mimeType = getMimeType(file);\n if (mimeType && mimeType.startsWith(\"video/\")) return true;\n\n const fileName = getFileName(file);\n return !!fileName?.match(/\\.(mp4|mov|webm|mkv|avi)$/i);\n};\n\n/**\n * 获取文件扩展名\n */\nconst getFileExtension = (filename: string): string => {\n const ext = filename.split(\".\").pop();\n return ext ? ext.toLowerCase() : \"\";\n};\n\n/**\n * 获取文件图标和颜色\n */\nconst getFileIcon = (\n file: FileItem,\n): { icon: React.ReactNode; color: string } => {\n const ext = getFileExtension(getFileName(file));\n\n // PDF\n if (ext === \"pdf\") {\n return { icon: <FilePdfOutlined />, color: \"#ff4d4f\" };\n }\n\n // Word\n if ([\"doc\", \"docx\"].includes(ext)) {\n return { icon: <FileWordOutlined />, color: \"#1677ff\" };\n }\n\n // Excel\n if ([\"xls\", \"xlsx\", \"csv\"].includes(ext)) {\n return { icon: <FileExcelOutlined />, color: \"#22b35e\" };\n }\n\n // PPT\n if ([\"ppt\", \"pptx\"].includes(ext)) {\n return { icon: <FilePptOutlined />, color: \"#ff6e31\" };\n }\n\n // Audio\n if ([\"mp3\", \"wav\", \"m4a\", \"aac\", \"ogg\", \"flac\"].includes(ext)) {\n return { icon: <AudioOutlined />, color: \"#722ed1\" };\n }\n\n // Video\n if ([\"mp4\", \"mov\", \"webm\", \"mkv\", \"avi\"].includes(ext)) {\n return { icon: <VideoCameraOutlined />, color: \"#fa8c16\" };\n }\n\n // 图片\n if (isImageFile(file)) {\n return { icon: <FileImageOutlined />, color: \"#8c8c8c\" };\n }\n\n // 默认\n return { icon: <FileOutlined />, color: \"#8c8c8c\" };\n};\n\n/**\n * 格式化文件大小\n */\nconst formatFileSize = (bytes: number): string => {\n if (bytes < 1024) return bytes + \" B\";\n if (bytes < 1024 * 1024) return (bytes / 1024).toFixed(1) + \" KB\";\n return (bytes / (1024 * 1024)).toFixed(1) + \" MB\";\n};\n\nconst styles = useStyles();\n\n// ==================== 子组件 ====================\n\nconst FileItemComponent: React.FC<FileItemComponentProps> = ({\n file,\n removable,\n onRemove,\n}) => {\n const [objectUrl, setObjectUrl] = useState(\"\");\n\n useEffect(() => {\n if (!file.file) return;\n\n const url = URL.createObjectURL(file.file);\n setObjectUrl(url);\n\n return () => URL.revokeObjectURL(url);\n }, [file.file]);\n\n const isImage = isImageFile(file);\n const isAudio = isAudioFile(file);\n const isVideo = isVideoFile(file);\n const fileName = getFileName(file);\n const fileSize = getFileSize(file);\n const fileId = getFileId(file);\n const url = getFileUrl(file) || objectUrl;\n\n // 图片文件\n if (isImage) {\n return (\n <div className={styles.fileCard}>\n {/* 图片缩略图 */}\n <div className={styles.imageThumbnail}>\n <Image\n src={url}\n alt={fileName}\n fallback=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mN8/5+hHgAHggJ/PchI7wAAAABJRU5ErkJggg==\"\n preview={{\n src: url,\n }}\n />\n\n {/* 上传进度遮罩 */}\n {file.status === \"uploading\" && (\n <div className={styles.imageOverlay}>\n <Progress\n type=\"circle\"\n percent={file.progress}\n size={30}\n strokeColor=\"#1677ff\"\n />\n </div>\n )}\n </div>\n\n {/* 文件信息 */}\n <div className={styles.fileInfo}>\n <Tooltip title={fileName}>\n <div className={styles.fileName}>\n {fileName.length > 15\n ? `${fileName.substring(0, 15)}...`\n : fileName}\n </div>\n </Tooltip>\n <div className={styles.fileSize}>{formatFileSize(fileSize)}</div>\n </div>\n\n {/* 删除按钮 */}\n {removable && (\n <button\n className={styles.fileRemoveBtn}\n onClick={() => onRemove(fileId)}\n disabled={file.status === \"uploading\"}\n aria-label=\"删除文件\"\n >\n <CloseOutlined />\n </button>\n )}\n </div>\n );\n }\n\n // 音频文件\n if (isAudio) {\n return (\n <div className={styles.fileCard}>\n <div className={styles.fileIcon} style={{ color: \"#722ed1\" }}>\n <AudioOutlined />\n </div>\n\n <div className={styles.fileInfo}>\n <Tooltip title={fileName}>\n <div className={styles.fileName}>{fileName}</div>\n </Tooltip>\n\n <audio\n src={url}\n controls\n className={styles.mediaWrapper}\n style={{ width: \"100%\", height: 28 }}\n />\n </div>\n\n {removable && (\n <button\n className={styles.fileRemoveBtn}\n onClick={() => onRemove(fileId)}\n disabled={file.status === \"uploading\"}\n aria-label=\"删除文件\"\n >\n <CloseOutlined />\n </button>\n )}\n </div>\n );\n }\n\n // 视频文件\n if (isVideo) {\n return (\n <div className={styles.fileCard}>\n <div className={styles.fileIcon} style={{ color: \"#fa8c16\" }}>\n <VideoCameraOutlined />\n </div>\n\n <div className={styles.fileInfo}>\n <Tooltip title={fileName}>\n <div className={styles.fileName}>{fileName}</div>\n </Tooltip>\n\n <video\n src={url}\n controls\n className={styles.mediaWrapper}\n style={{ width: \"100%\", height: 40 }}\n />\n </div>\n\n {removable && (\n <button\n className={styles.fileRemoveBtn}\n onClick={() => onRemove(fileId)}\n disabled={file.status === \"uploading\"}\n aria-label=\"删除文件\"\n >\n <CloseOutlined />\n </button>\n )}\n </div>\n );\n }\n\n // 其他文件\n const { icon, color } = getFileIcon(file);\n const isExternalUrl = url && url.startsWith(\"http\");\n\n return (\n <div className={styles.fileCard}>\n <div className={styles.fileIcon} style={{ color }}>\n {icon}\n </div>\n\n <div className={styles.fileInfo}>\n {isExternalUrl ? (\n <a\n href={url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={styles.fileLink}\n >\n <Tooltip title={fileName}>\n <div className={styles.fileName}>\n {fileName.length > 15\n ? `${fileName.substring(0, 15)}...`\n : fileName}\n </div>\n </Tooltip>\n </a>\n ) : (\n <Tooltip title={fileName}>\n <div className={styles.fileName}>\n {fileName.length > 15\n ? `${fileName.substring(0, 15)}...`\n : fileName}\n </div>\n </Tooltip>\n )}\n\n {file.status === \"uploading\" ? (\n <Progress\n percent={file.progress}\n size=\"small\"\n showInfo={false}\n strokeColor=\"#1677ff\"\n className={styles.progress}\n />\n ) : (\n fileSize > 0 && (\n <div className={styles.fileSize}>{formatFileSize(fileSize)}</div>\n )\n )}\n\n {file.status === \"error\" && file.errorMessage && (\n <div\n style={{\n fontSize: \"11px\",\n color: \"#ff4d4f\",\n marginTop: \"2px\",\n }}\n >\n {file.errorMessage}\n </div>\n )}\n </div>\n\n {removable && (\n <button\n className={styles.fileRemoveBtn}\n onClick={() => onRemove(fileId)}\n disabled={file.status === \"uploading\"}\n aria-label=\"删除文件\"\n >\n <CloseOutlined />\n </button>\n )}\n </div>\n );\n};\n\n// ==================== 主组件 ====================\n\n/**\n * FileGallery - 通用文件展示组件\n *\n * 功能特性:\n * - 📁 支持多种文件类型展示 (图片、音频、视频、文档等)\n * - 🖼️ 图片支持预览和缩略图\n * - 🎵 音频文件支持内联播放\n * - 🎬 视频文件支持内联播放\n * - 📊 显示文件大小、类型图标\n * - 🗑️ 支持删除操作\n * - 📤 支持上传进度显示\n * - 🎨 支持左右对齐\n *\n * @example\n * // XAdkSender 场景 - 可删除的本地文件\n * <FileGallery\n * files={localFiles}\n * removable\n * onRemove={handleRemove}\n * align=\"left\"\n * />\n *\n * @example\n * // XadkChatbot 场景 - 只读的远程文件\n * <FileGallery\n * files={remoteFiles}\n * align=\"right\"\n * />\n */\nconst FileGallery: React.FC<FileGalleryProps> = ({\n files,\n align = \"left\",\n removable = false,\n onRemove = () => {},\n className,\n style,\n}) => {\n if (!files || files.length === 0) return null;\n\n return (\n <div\n className={`${styles.container} ${align === \"right\" ? \"align-right\" : \"\"} ${className || \"\"}`}\n style={style}\n >\n <div className={styles.fileList}>\n <Image.PreviewGroup>\n {files.map((file, index) => (\n <FileItemComponent\n key={getFileId(file) || index}\n file={file}\n removable={removable}\n onRemove={onRemove}\n />\n ))}\n </Image.PreviewGroup>\n </div>\n </div>\n );\n};\n\nexport default FileGallery;\n"],"mappings":"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"}
|
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
export declare const useStyles: () => {
|
|
2
|
-
|
|
3
|
-
imageGrid: string;
|
|
4
|
-
imageItem: string;
|
|
5
|
-
img: string;
|
|
2
|
+
container: string;
|
|
6
3
|
fileList: string;
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
fileCard: string;
|
|
5
|
+
imageThumbnail: string;
|
|
6
|
+
imageOverlay: string;
|
|
9
7
|
fileIcon: string;
|
|
8
|
+
fileInfo: string;
|
|
10
9
|
fileName: string;
|
|
10
|
+
fileSize: string;
|
|
11
|
+
progress: string;
|
|
12
|
+
fileRemoveBtn: string;
|
|
13
|
+
fileLink: string;
|
|
14
|
+
mediaWrapper: string;
|
|
11
15
|
} & {
|
|
12
16
|
w: (width: string | number) => string;
|
|
13
17
|
h: (height: string | number) => string;
|
|
@@ -42,3 +46,4 @@ export declare const useStyles: () => {
|
|
|
42
46
|
flexCenterGap2: string;
|
|
43
47
|
flexCenterGap4: string;
|
|
44
48
|
};
|
|
49
|
+
export default useStyles;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import _taggedTemplateLiteral from "@babel/runtime/helpers/esm/taggedTemplateLiteral";
|
|
2
|
+
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13;
|
|
3
|
+
import { css } from "@emotion/css";
|
|
4
|
+
import { withBasicStyles } from "../../styles/common";
|
|
5
|
+
export var useStyles = withBasicStyles(function () {
|
|
6
|
+
return {
|
|
7
|
+
container: css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n padding: 12px 0;\n display: flex;\n flex-direction: column;\n gap: 12px;\n\n &.align-right {\n align-items: flex-end;\n }\n "]))),
|
|
8
|
+
fileList: css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n "]))),
|
|
9
|
+
fileCard: css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n position: relative;\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 6px 12px;\n background: #fafafa;\n border: 1px solid #f0f0f0;\n border-radius: 8px;\n min-width: 260px;\n max-width: 280px;\n min-height: 64px;\n transition: all 0.2s ease;\n\n &:hover {\n background: #f5f5f5;\n border-color: #e0e0e0;\n }\n "]))),
|
|
10
|
+
imageThumbnail: css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n position: relative;\n width: 44px;\n height: 44px;\n flex-shrink: 0;\n border-radius: 4px;\n overflow: hidden;\n background-color: #f5f5f5;\n border: 1px solid rgba(0, 0, 0, 0.06);\n\n .ant-image {\n width: 100% !important;\n height: 100% !important;\n display: flex !important;\n justify-content: center;\n align-items: center;\n }\n\n img {\n width: 100% !important;\n height: 100% !important;\n object-fit: cover !important;\n display: block !important;\n }\n "]))),
|
|
11
|
+
imageOverlay: css(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.05);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 10;\n "]))),
|
|
12
|
+
fileIcon: css(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral(["\n font-size: 24px;\n flex-shrink: 0;\n width: 36px;\n height: 36px;\n display: flex;\n align-items: center;\n justify-content: center;\n "]))),
|
|
13
|
+
fileInfo: css(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral(["\n flex: 1;\n min-width: 0;\n overflow: hidden;\n "]))),
|
|
14
|
+
fileName: css(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral(["\n font-size: 13px;\n font-weight: 500;\n color: #262626;\n margin-bottom: 4px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n "]))),
|
|
15
|
+
fileSize: css(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral(["\n font-size: 11px;\n color: #8c8c8c;\n "]))),
|
|
16
|
+
progress: css(_templateObject10 || (_templateObject10 = _taggedTemplateLiteral(["\n margin-top: 4px;\n\n .ant-progress-inner {\n height: 4px !important;\n }\n\n .ant-progress-bg {\n height: 4px !important;\n }\n "]))),
|
|
17
|
+
fileRemoveBtn: css(_templateObject11 || (_templateObject11 = _taggedTemplateLiteral(["\n position: absolute;\n top: -6px;\n right: -6px;\n width: 18px;\n height: 18px;\n border-radius: 50%;\n background: rgba(0, 0, 0, 0.75);\n color: #fff;\n border: none;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n z-index: 1;\n padding: 0;\n font-size: 10px;\n transition: all 0.2s ease;\n\n &:hover {\n background: rgba(0, 0, 0, 0.9);\n transform: scale(1.1);\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n "]))),
|
|
18
|
+
fileLink: css(_templateObject12 || (_templateObject12 = _taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n gap: 8px;\n color: rgba(0, 0, 0, 0.85);\n text-decoration: none;\n font-size: 13px;\n\n &:hover {\n color: #1677ff;\n }\n "]))),
|
|
19
|
+
mediaWrapper: css(_templateObject13 || (_templateObject13 = _taggedTemplateLiteral(["\n margin-top: 6px;\n "])))
|
|
20
|
+
};
|
|
21
|
+
});
|
|
22
|
+
export default useStyles;
|
|
23
|
+
//# sourceMappingURL=styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["css","withBasicStyles","useStyles","container","_templateObject","_taggedTemplateLiteral","fileList","_templateObject2","fileCard","_templateObject3","imageThumbnail","_templateObject4","imageOverlay","_templateObject5","fileIcon","_templateObject6","fileInfo","_templateObject7","fileName","_templateObject8","fileSize","_templateObject9","progress","_templateObject10","fileRemoveBtn","_templateObject11","fileLink","_templateObject12","mediaWrapper","_templateObject13"],"sources":["../../../../src/components/FileGallery/styles.tsx"],"sourcesContent":["import { css } from \"@emotion/css\";\nimport { withBasicStyles } from \"@/styles/common\";\n\nexport const useStyles = withBasicStyles(() => ({\n container: css`\n padding: 12px 0;\n display: flex;\n flex-direction: column;\n gap: 12px;\n\n &.align-right {\n align-items: flex-end;\n }\n `,\n\n fileList: css`\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n `,\n\n fileCard: css`\n position: relative;\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 6px 12px;\n background: #fafafa;\n border: 1px solid #f0f0f0;\n border-radius: 8px;\n min-width: 260px;\n max-width: 280px;\n min-height: 64px;\n transition: all 0.2s ease;\n\n &:hover {\n background: #f5f5f5;\n border-color: #e0e0e0;\n }\n `,\n\n imageThumbnail: css`\n position: relative;\n width: 44px;\n height: 44px;\n flex-shrink: 0;\n border-radius: 4px;\n overflow: hidden;\n background-color: #f5f5f5;\n border: 1px solid rgba(0, 0, 0, 0.06);\n\n .ant-image {\n width: 100% !important;\n height: 100% !important;\n display: flex !important;\n justify-content: center;\n align-items: center;\n }\n\n img {\n width: 100% !important;\n height: 100% !important;\n object-fit: cover !important;\n display: block !important;\n }\n `,\n\n imageOverlay: css`\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.05);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 10;\n `,\n\n fileIcon: css`\n font-size: 24px;\n flex-shrink: 0;\n width: 36px;\n height: 36px;\n display: flex;\n align-items: center;\n justify-content: center;\n `,\n\n fileInfo: css`\n flex: 1;\n min-width: 0;\n overflow: hidden;\n `,\n\n fileName: css`\n font-size: 13px;\n font-weight: 500;\n color: #262626;\n margin-bottom: 4px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n `,\n\n fileSize: css`\n font-size: 11px;\n color: #8c8c8c;\n `,\n\n progress: css`\n margin-top: 4px;\n\n .ant-progress-inner {\n height: 4px !important;\n }\n\n .ant-progress-bg {\n height: 4px !important;\n }\n `,\n\n fileRemoveBtn: css`\n position: absolute;\n top: -6px;\n right: -6px;\n width: 18px;\n height: 18px;\n border-radius: 50%;\n background: rgba(0, 0, 0, 0.75);\n color: #fff;\n border: none;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n z-index: 1;\n padding: 0;\n font-size: 10px;\n transition: all 0.2s ease;\n\n &:hover {\n background: rgba(0, 0, 0, 0.9);\n transform: scale(1.1);\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n `,\n\n fileLink: css`\n display: flex;\n align-items: center;\n gap: 8px;\n color: rgba(0, 0, 0, 0.85);\n text-decoration: none;\n font-size: 13px;\n\n &:hover {\n color: #1677ff;\n }\n `,\n\n mediaWrapper: css`\n margin-top: 6px;\n `,\n}));\n\nexport default useStyles;\n"],"mappings":";;AAAA,SAASA,GAAG,QAAQ,cAAc;AAClC,SAASC,eAAe;AAExB,OAAO,IAAMC,SAAS,GAAGD,eAAe,CAAC;EAAA,OAAO;IAC9CE,SAAS,EAAEH,GAAG,CAAAI,eAAA,KAAAA,eAAA,GAAAC,sBAAA,+JASb;IAEDC,QAAQ,EAAEN,GAAG,CAAAO,gBAAA,KAAAA,gBAAA,GAAAF,sBAAA,qEAIZ;IAEDG,QAAQ,EAAER,GAAG,CAAAS,gBAAA,KAAAA,gBAAA,GAAAJ,sBAAA,qYAkBZ;IAEDK,cAAc,EAAEV,GAAG,CAAAW,gBAAA,KAAAA,gBAAA,GAAAN,sBAAA,4iBAwBlB;IAEDO,YAAY,EAAEZ,GAAG,CAAAa,gBAAA,KAAAA,gBAAA,GAAAR,sBAAA,mOAWhB;IAEDS,QAAQ,EAAEd,GAAG,CAAAe,gBAAA,KAAAA,gBAAA,GAAAV,sBAAA,wKAQZ;IAEDW,QAAQ,EAAEhB,GAAG,CAAAiB,gBAAA,KAAAA,gBAAA,GAAAZ,sBAAA,oEAIZ;IAEDa,QAAQ,EAAElB,GAAG,CAAAmB,gBAAA,KAAAA,gBAAA,GAAAd,sBAAA,sLAQZ;IAEDe,QAAQ,EAAEpB,GAAG,CAAAqB,gBAAA,KAAAA,gBAAA,GAAAhB,sBAAA,uDAGZ;IAEDiB,QAAQ,EAAEtB,GAAG,CAAAuB,iBAAA,KAAAA,iBAAA,GAAAlB,sBAAA,qKAUZ;IAEDmB,aAAa,EAAExB,GAAG,CAAAyB,iBAAA,KAAAA,iBAAA,GAAApB,sBAAA,mjBA4BjB;IAEDqB,QAAQ,EAAE1B,GAAG,CAAA2B,iBAAA,KAAAA,iBAAA,GAAAtB,sBAAA,2MAWZ;IAEDuB,YAAY,EAAE5B,GAAG,CAAA6B,iBAAA,KAAAA,iBAAA,GAAAxB,sBAAA;EAGnB,CAAC;AAAA,CAAC,CAAC;AAEH,eAAeH,SAAS"}
|
|
@@ -8,7 +8,7 @@ import copy from "copy-to-clipboard";
|
|
|
8
8
|
import { useStyles } from "./styles";
|
|
9
9
|
import MarkdownRender from "./components/MarkdownRender";
|
|
10
10
|
import FunctionCallRender from "./components/FunctionCallRender";
|
|
11
|
-
import FileGallery from "
|
|
11
|
+
import FileGallery from "../FileGallery";
|
|
12
12
|
import XAiThoughtChain from "../XAiThoughtChain";
|
|
13
13
|
import { parseAgentMessage } from "../../utils";
|
|
14
14
|
import { jsx as _jsx } from "react/jsx-runtime";
|