@ai-group/chat-sdk 3.0.1-alpha.3 → 3.0.1-alpha.6

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 (28) hide show
  1. package/dist/cjs/components/XAdkChatbot/components/MarkdownRender/index.d.ts +1 -1
  2. package/dist/cjs/components/XAdkChatbot/components/MarkdownRender/index.js +6 -3
  3. package/dist/cjs/components/XAdkChatbot/components/MarkdownRender/index.js.map +2 -2
  4. package/dist/cjs/components/XAdkChatbot/components/MarkdownRender/styles.js +60 -2
  5. package/dist/cjs/components/XAdkChatbot/components/MarkdownRender/styles.js.map +2 -2
  6. package/dist/cjs/components/XAdkChatbot/index.js.map +2 -2
  7. package/dist/cjs/components/XAdkProvider/XAdkProvider.stories.js +2 -2
  8. package/dist/cjs/components/XAdkProvider/XAdkProvider.stories.js.map +1 -1
  9. package/dist/cjs/components/XAdkSender/FileGallery.js +148 -85
  10. package/dist/cjs/components/XAdkSender/FileGallery.js.map +3 -3
  11. package/dist/cjs/components/XAdkSender/index.d.ts +2 -2
  12. package/dist/cjs/components/XAdkSender/index.js +126 -94
  13. package/dist/cjs/components/XAdkSender/index.js.map +2 -2
  14. package/dist/esm/components/XAdkChatbot/components/MarkdownRender/index.d.ts +1 -1
  15. package/dist/esm/components/XAdkChatbot/components/MarkdownRender/index.js +16 -16
  16. package/dist/esm/components/XAdkChatbot/components/MarkdownRender/index.js.map +1 -1
  17. package/dist/esm/components/XAdkChatbot/components/MarkdownRender/styles.js +2 -2
  18. package/dist/esm/components/XAdkChatbot/components/MarkdownRender/styles.js.map +1 -1
  19. package/dist/esm/components/XAdkChatbot/index.js.map +1 -1
  20. package/dist/esm/components/XAdkProvider/XAdkProvider.stories.js +2 -2
  21. package/dist/esm/components/XAdkProvider/XAdkProvider.stories.js.map +1 -1
  22. package/dist/esm/components/XAdkSender/FileGallery.js +225 -114
  23. package/dist/esm/components/XAdkSender/FileGallery.js.map +1 -1
  24. package/dist/esm/components/XAdkSender/index.d.ts +2 -2
  25. package/dist/esm/components/XAdkSender/index.js +44 -44
  26. package/dist/esm/components/XAdkSender/index.js.map +1 -1
  27. package/dist/umd/chat-sdk.min.js +1 -1
  28. package/package.json +1 -1
@@ -4,9 +4,9 @@ import _createForOfIteratorHelper from "@babel/runtime/helpers/esm/createForOfIt
4
4
  import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
5
5
  import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
6
6
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
7
- import React, { useState, useRef, useCallback } from 'react';
8
- import { Popconfirm, message, Tooltip, Input, Modal } from 'antd';
9
- import { ClearOutlined, LoadingOutlined, ArrowUpOutlined, PaperClipOutlined } from '@ant-design/icons';
7
+ import React, { useState, useRef, useCallback } from "react";
8
+ import { Popconfirm, message, Tooltip, Input, Modal } from "antd";
9
+ import { ClearOutlined, LoadingOutlined, ArrowUpOutlined, PaperClipOutlined } from "@ant-design/icons";
10
10
  import { useStyles } from "./styles";
11
11
  import FileGallery from "./FileGallery";
12
12
  import { jsx as _jsx } from "react/jsx-runtime";
@@ -30,7 +30,7 @@ var XAdkSender = function XAdkSender(_ref) {
30
30
  _ref$maxFileSize = _ref.maxFileSize,
31
31
  maxFileSize = _ref$maxFileSize === void 0 ? 10 : _ref$maxFileSize,
32
32
  _ref$allowedFileTypes = _ref.allowedFileTypes,
33
- allowedFileTypes = _ref$allowedFileTypes === void 0 ? ['image/*', 'application/pdf', 'text/plain'] : _ref$allowedFileTypes,
33
+ allowedFileTypes = _ref$allowedFileTypes === void 0 ? ["image/*", "audio/*", "video/*", "application/pdf", "text/plain", ".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx"] : _ref$allowedFileTypes,
34
34
  _ref$maxFiles = _ref.maxFiles,
35
35
  maxFiles = _ref$maxFiles === void 0 ? 5 : _ref$maxFiles,
36
36
  suffix = _ref.suffix,
@@ -38,7 +38,7 @@ var XAdkSender = function XAdkSender(_ref) {
38
38
  prefix = _ref.prefix,
39
39
  footer = _ref.footer;
40
40
  var styles = useStyles();
41
- var _useState = useState(''),
41
+ var _useState = useState(""),
42
42
  _useState2 = _slicedToArray(_useState, 2),
43
43
  value = _useState2[0],
44
44
  setValue = _useState2[1];
@@ -63,8 +63,8 @@ var XAdkSender = function XAdkSender(_ref) {
63
63
  var checkFileType = function checkFileType(file) {
64
64
  if (!allowedFileTypes.length) return true;
65
65
  return allowedFileTypes.some(function (type) {
66
- if (type.includes('/*')) {
67
- var mainType = type.split('/')[0];
66
+ if (type.includes("/*")) {
67
+ var mainType = type.split("/")[0];
68
68
  return file.type.startsWith(mainType);
69
69
  }
70
70
  return file.type === type;
@@ -94,7 +94,7 @@ var XAdkSender = function XAdkSender(_ref) {
94
94
  if (!checkFileType(file)) {
95
95
  return {
96
96
  valid: false,
97
- message: '不支持的文件类型'
97
+ message: "不支持的文件类型"
98
98
  };
99
99
  }
100
100
  return {
@@ -104,8 +104,8 @@ var XAdkSender = function XAdkSender(_ref) {
104
104
 
105
105
  // 获取文件扩展名
106
106
  var getFileExtension = function getFileExtension(filename) {
107
- var ext = filename.split('.').pop();
108
- return ext ? ext.toLowerCase() : '';
107
+ var ext = filename.split(".").pop();
108
+ return ext ? ext.toLowerCase() : "";
109
109
  };
110
110
 
111
111
  // 处理文件选择
@@ -123,7 +123,7 @@ var XAdkSender = function XAdkSender(_ref) {
123
123
  type: file.type,
124
124
  file: file,
125
125
  progress: 0,
126
- status: 'pending',
126
+ status: "pending",
127
127
  response: null
128
128
  });
129
129
  } else {
@@ -157,7 +157,7 @@ var XAdkSender = function XAdkSender(_ref) {
157
157
  setFiles(function (prev) {
158
158
  return prev.map(function (f) {
159
159
  return f.id === localFile.id ? _objectSpread(_objectSpread({}, f), {}, {
160
- status: 'uploading'
160
+ status: "uploading"
161
161
  }) : f;
162
162
  });
163
163
  });
@@ -178,7 +178,7 @@ var XAdkSender = function XAdkSender(_ref) {
178
178
  setFiles(function (prev) {
179
179
  return prev.map(function (f) {
180
180
  return f.id === localFile.id ? _objectSpread(_objectSpread({}, f), {}, {
181
- status: 'success',
181
+ status: "success",
182
182
  progress: 100,
183
183
  response: response
184
184
  }) : f;
@@ -189,12 +189,12 @@ var XAdkSender = function XAdkSender(_ref) {
189
189
  setFiles(function (prev) {
190
190
  return prev.map(function (f) {
191
191
  return f.id === localFile.id ? _objectSpread(_objectSpread({}, f), {}, {
192
- status: 'error',
193
- errorMessage: error.message || '上传失败'
192
+ status: "error",
193
+ errorMessage: error.message || "上传失败"
194
194
  }) : f;
195
195
  });
196
196
  });
197
- message.error("".concat(localFile.name, " \u4E0A\u4F20\u5931\u8D25: ").concat(error.message || '未知错误'));
197
+ message.error("".concat(localFile.name, " \u4E0A\u4F20\u5931\u8D25: ").concat(error.message || "未知错误"));
198
198
  }
199
199
  });
200
200
  case 5:
@@ -203,12 +203,12 @@ var XAdkSender = function XAdkSender(_ref) {
203
203
  case 7:
204
204
  _context.prev = 7;
205
205
  _context.t0 = _context["catch"](2);
206
- console.error('上传处理错误:', _context.t0);
206
+ console.error("上传处理错误:", _context.t0);
207
207
  setFiles(function (prev) {
208
208
  return prev.map(function (f) {
209
209
  return f.id === localFile.id ? _objectSpread(_objectSpread({}, f), {}, {
210
- status: 'error',
211
- errorMessage: _context.t0 instanceof Error ? _context.t0.message : '上传处理失败'
210
+ status: "error",
211
+ errorMessage: _context.t0 instanceof Error ? _context.t0.message : "上传处理失败"
212
212
  }) : f;
213
213
  });
214
214
  });
@@ -284,7 +284,7 @@ var XAdkSender = function XAdkSender(_ref) {
284
284
  setFiles(function (prev) {
285
285
  return prev.map(function (f) {
286
286
  return f.id === localFile.id ? _objectSpread(_objectSpread({}, f), {}, {
287
- status: 'success',
287
+ status: "success",
288
288
  progress: 100,
289
289
  response: mockResponse
290
290
  }) : f;
@@ -348,21 +348,21 @@ var XAdkSender = function XAdkSender(_ref) {
348
348
  // 处理提交
349
349
  var handleSubmit = function handleSubmit() {
350
350
  if (!value.trim() && files.length === 0) {
351
- message.warning('请输入消息或选择文件');
351
+ message.warning("请输入消息或选择文件");
352
352
  return;
353
353
  }
354
354
  var successFiles = files.filter(function (file) {
355
- return file.status === 'success';
355
+ return file.status === "success";
356
356
  });
357
357
  var uploadingFiles = files.filter(function (file) {
358
- return file.status === 'uploading';
358
+ return file.status === "uploading";
359
359
  });
360
360
  if (uploadingFiles.length > 0) {
361
361
  Modal.confirm({
362
- title: '文件上传中',
362
+ title: "文件上传中",
363
363
  content: "\u8FD8\u6709 ".concat(uploadingFiles.length, " \u4E2A\u6587\u4EF6\u6B63\u5728\u4E0A\u4F20\uFF0C\u662F\u5426\u7EE7\u7EED\u53D1\u9001\uFF1F"),
364
- okText: '发送已完成的',
365
- cancelText: '等待全部完成',
364
+ okText: "发送已完成的",
365
+ cancelText: "等待全部完成",
366
366
  onOk: function onOk() {
367
367
  var formattedFiles = formatFilesForServer(successFiles);
368
368
  if (onSubmit) {
@@ -371,15 +371,15 @@ var XAdkSender = function XAdkSender(_ref) {
371
371
  files: formattedFiles
372
372
  });
373
373
  }
374
- setValue('');
374
+ setValue("");
375
375
  setFiles(function (prev) {
376
376
  return prev.filter(function (f) {
377
- return f.status !== 'success';
377
+ return f.status !== "success";
378
378
  });
379
379
  });
380
380
  },
381
381
  onCancel: function onCancel() {
382
- message.info('请等待文件上传完成后再发送');
382
+ message.info("请等待文件上传完成后再发送");
383
383
  }
384
384
  });
385
385
  } else {
@@ -390,10 +390,10 @@ var XAdkSender = function XAdkSender(_ref) {
390
390
  files: formattedFiles
391
391
  });
392
392
  }
393
- setValue('');
393
+ setValue("");
394
394
  setFiles(function (prev) {
395
395
  return prev.filter(function (f) {
396
- return f.status !== 'success';
396
+ return f.status !== "success";
397
397
  });
398
398
  });
399
399
  }
@@ -403,13 +403,13 @@ var XAdkSender = function XAdkSender(_ref) {
403
403
  var formatFilesForServer = function formatFilesForServer(fileList) {
404
404
  return fileList.filter(function (file) {
405
405
  var _file$response;
406
- return file.status === 'success' && ((_file$response = file.response) === null || _file$response === void 0 ? void 0 : _file$response.data);
406
+ return file.status === "success" && ((_file$response = file.response) === null || _file$response === void 0 ? void 0 : _file$response.data);
407
407
  }).map(function (file) {
408
408
  var responseData = file.response.data;
409
409
  return {
410
410
  fileName: file.name,
411
411
  fileId: responseData.fileId || responseData.id || 0,
412
- tempUrl: responseData.tempUrl || responseData.url || '',
412
+ tempUrl: responseData.tempUrl || responseData.url || "",
413
413
  type: responseData.fileType || getFileExtension(file.name),
414
414
  mimeType: file.type
415
415
  };
@@ -425,7 +425,7 @@ var XAdkSender = function XAdkSender(_ref) {
425
425
 
426
426
  // 处理回车键
427
427
  var handleKeyDown = function handleKeyDown(e) {
428
- if (e.key === 'Enter' && !e.shiftKey) {
428
+ if (e.key === "Enter" && !e.shiftKey) {
429
429
  e.preventDefault();
430
430
  handleSubmit();
431
431
  }
@@ -439,9 +439,9 @@ var XAdkSender = function XAdkSender(_ref) {
439
439
  onRemove: handleRemoveFile
440
440
  });
441
441
  };
442
- var containerClass = "".concat(styles.container, " ").concat(isDragOver ? 'drag-over' : '');
442
+ var containerClass = "".concat(styles.container, " ").concat(isDragOver ? "drag-over" : "");
443
443
  var uploading = files.some(function (f) {
444
- return f.status === 'uploading';
444
+ return f.status === "uploading";
445
445
  });
446
446
  var isDisabled = disabled || uploading || loading;
447
447
 
@@ -450,7 +450,7 @@ var XAdkSender = function XAdkSender(_ref) {
450
450
  return /*#__PURE__*/_jsx(Tooltip, {
451
451
  title: loading ? "停止生成" : "发送消息",
452
452
  children: /*#__PURE__*/_jsx("button", _objectSpread(_objectSpread({
453
- className: "".concat(styles.iconButton, " ").concat(styles.sendButton, " ").concat(loading ? 'stop' : ''),
453
+ className: "".concat(styles.iconButton, " ").concat(styles.sendButton, " ").concat(loading ? "stop" : ""),
454
454
  onClick: loading ? onStop : handleSubmit,
455
455
  disabled: uploading || disabled,
456
456
  "aria-label": loading ? "停止生成" : "发送消息"
@@ -499,7 +499,7 @@ var XAdkSender = function XAdkSender(_ref) {
499
499
  var renderSlot = function renderSlot(slot, oriNode) {
500
500
  if (slot === false) return null;
501
501
  if (slot === undefined) return oriNode;
502
- if (typeof slot === 'function') {
502
+ if (typeof slot === "function") {
503
503
  var result = slot(oriNode, {
504
504
  components: actionsComponents
505
505
  });
@@ -523,14 +523,14 @@ var XAdkSender = function XAdkSender(_ref) {
523
523
  ref: fileInputRef,
524
524
  type: "file",
525
525
  multiple: true,
526
- accept: allowedFileTypes.join(','),
526
+ accept: allowedFileTypes.join(","),
527
527
  style: {
528
- display: 'none'
528
+ display: "none"
529
529
  },
530
530
  onChange: function onChange(e) {
531
531
  if (e.target.files) {
532
532
  handleFileSelect(Array.from(e.target.files));
533
- e.target.value = '';
533
+ e.target.value = "";
534
534
  }
535
535
  }
536
536
  }), /*#__PURE__*/_jsxs("div", {
@@ -553,9 +553,9 @@ var XAdkSender = function XAdkSender(_ref) {
553
553
  maxRows: 4
554
554
  },
555
555
  style: {
556
- border: 'none',
557
- boxShadow: 'none',
558
- outline: 'none',
556
+ border: "none",
557
+ boxShadow: "none",
558
+ outline: "none",
559
559
  padding: 0
560
560
  }
561
561
  })
@@ -1 +1 @@
1
- {"version":3,"names":["React","useState","useRef","useCallback","Popconfirm","message","Tooltip","Input","Modal","ClearOutlined","LoadingOutlined","ArrowUpOutlined","PaperClipOutlined","useStyles","FileGallery","jsx","_jsx","jsxs","_jsxs","XAdkSender","_ref","_ref$clearBtnShow","clearBtnShow","_ref$allowUpload","allowUpload","_ref$loading","loading","_ref$disabled","disabled","_ref$uploadRequest","uploadRequest","onClear","onChange","onSubmit","onStop","onFilesChange","_ref$maxFileSize","maxFileSize","_ref$allowedFileTypes","allowedFileTypes","_ref$maxFiles","maxFiles","suffix","header","prefix","footer","styles","_useState","_useState2","_slicedToArray","value","setValue","_useState3","_useState4","files","setFiles","_useState5","_useState6","isDragOver","setIsDragOver","containerRef","fileInputRef","uploadRef","generateId","Date","now","toString","Math","random","substr","checkFileType","file","length","some","type","includes","mainType","split","startsWith","checkFileSize","maxSize","size","validateFile","valid","concat","getFileExtension","filename","ext","pop","toLowerCase","handleFileSelect","selectedFiles","fileArray","Array","from","validFiles","forEach","validation","push","id","uid","name","progress","status","response","error","prev","_toConsumableArray","uploadFiles","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","fileList","_iterator","_step","_loop","wrap","_callee$","_context2","next","_createForOfIteratorHelper","localFile","_loop$","_context","map","f","_objectSpread","onProgress","e","percent","onSuccess","onError","errorMessage","t0","console","Error","stop","s","n","done","delegateYield","t1","finish","_x","apply","arguments","simulateUpload","_ref3","_callee2","uploadFilesList","_callee2$","_context3","interval","setInterval","clearInterval","setTimeout","mockResponse","code","data","fileId","floor","tempUrl","fileName","fileType","_x2","handleRemoveFile","filter","triggerFileSelect","current","click","handleDragOver","preventDefault","stopPropagation","handleDragLeave","handleDrop","dataTransfer","handleSubmit","trim","warning","successFiles","uploadingFiles","confirm","title","content","okText","cancelText","onOk","formattedFiles","formatFilesForServer","text","onCancel","info","_file$response","responseData","url","mimeType","handleInputChange","newValue","target","handleKeyDown","key","shiftKey","renderFileList","onRemove","containerClass","container","uploading","isDisabled","SendButton","props","children","className","iconButton","sendButton","onClick","UploadButton","uploadButton","ClearButton","onConfirm","placement","clearButton","actionsComponents","renderSlot","slot","oriNode","undefined","result","components","defaultSuffix","buttonGroup","ref","onDragOver","onDragLeave","onDrop","multiple","accept","join","style","display","mainArea","senderWrap","inputAndButtons","textAreaWrapper","TextArea","textArea","onKeyDown","placeholder","autoSize","minRows","maxRows","border","boxShadow","outline","padding","tip"],"sources":["../../../../src/components/XAdkSender/index.tsx"],"sourcesContent":["import React, { useState, useRef, useCallback } from 'react';\nimport {\n Popconfirm, \n message, \n Progress,\n Tooltip,\n Input,\n Modal,\n} from 'antd';\nimport { \n ClearOutlined, \n LoadingOutlined, \n ArrowUpOutlined,\n PaperClipOutlined,\n CloseOutlined,\n} from '@ant-design/icons';\nimport { XAdkSenderProps, ServerFile, LocalFile, ActionsComponents } from '../../types/XAdkSender';\nimport { useStyles } from './styles';\nimport FileGallery from './FileGallery';\n\n\nconst XAdkSender: React.FC<XAdkSenderProps> = ({\n clearBtnShow = true,\n allowUpload = false,\n loading = false,\n disabled = false,\n uploadRequest = () => {},\n onClear,\n onChange,\n onSubmit,\n onStop,\n onFilesChange,\n maxFileSize = 10,\n allowedFileTypes = ['image/*', 'application/pdf', 'text/plain'],\n maxFiles = 5,\n suffix,\n header,\n prefix,\n footer,\n}) => {\n const styles = useStyles();\n const [value, setValue] = useState<string>('');\n const [files, setFiles] = useState<LocalFile[]>([]);\n const [isDragOver, setIsDragOver] = useState(false);\n const containerRef = useRef<HTMLDivElement>(null);\n const fileInputRef = useRef<HTMLInputElement>(null);\n const uploadRef = useRef<any>(null);\n \n // 生成唯一ID\n const generateId = () => {\n return Date.now().toString(36) + Math.random().toString(36).substr(2);\n };\n \n \n // 检查文件类型\n const checkFileType = (file: File): boolean => {\n if (!allowedFileTypes.length) return true;\n \n return allowedFileTypes.some(type => {\n if (type.includes('/*')) {\n const mainType = type.split('/')[0];\n return file.type.startsWith(mainType);\n }\n return file.type === type;\n });\n };\n \n // 检查文件大小\n const checkFileSize = (file: File): boolean => {\n const maxSize = maxFileSize * 1024 * 1024;\n return file.size <= maxSize;\n };\n \n // 验证文件\n const validateFile = (file: File): { valid: boolean; message?: string } => {\n if (files.length >= maxFiles) {\n return { valid: false, message: `最多只能上传 ${maxFiles} 个文件` };\n }\n \n if (!checkFileSize(file)) {\n return { valid: false, message: `文件大小不能超过 ${maxFileSize}MB` };\n }\n \n if (!checkFileType(file)) {\n return { valid: false, message: '不支持的文件类型' };\n }\n \n return { valid: true };\n };\n\n // 获取文件扩展名\n const getFileExtension = (filename: string): string => {\n const ext = filename.split('.').pop();\n return ext ? ext.toLowerCase() : '';\n };\n\n // 处理文件选择\n const handleFileSelect = useCallback((selectedFiles: File[]) => {\n const fileArray = Array.from(selectedFiles);\n const validFiles: LocalFile[] = [];\n \n fileArray.forEach(file => {\n const validation = validateFile(file);\n if (validation.valid) {\n validFiles.push({\n id: generateId(),\n uid: generateId(),\n name: file.name,\n size: file.size,\n type: file.type,\n file,\n progress: 0,\n status: 'pending',\n response: null\n });\n } else {\n message.error(validation.message);\n }\n });\n \n if (validFiles.length > 0) {\n setFiles(prev => [...prev, ...validFiles]);\n uploadFiles(validFiles);\n }\n }, [files.length, maxFiles, maxFileSize, allowedFileTypes]);\n\n // 上传文件\n const uploadFiles = async (fileList: LocalFile[]) => {\n for (const localFile of fileList) {\n // 开始上传\n setFiles(prev => prev.map(f => \n f.id === localFile.id ? { ...f, status: 'uploading' } : f\n ));\n \n try {\n await uploadRequest({\n file: localFile.file,\n onProgress: (e) => {\n setFiles(prev => prev.map(f => \n f.id === localFile.id ? { ...f, progress: e.percent } : f\n ));\n },\n onSuccess: (response) => {\n setFiles(prev => prev.map(f => \n f.id === localFile.id ? { \n ...f, \n status: 'success', \n progress: 100,\n response \n } : f\n ));\n },\n onError: (error) => {\n setFiles(prev => prev.map(f => \n f.id === localFile.id ? { \n ...f, \n status: 'error',\n errorMessage: error.message || '上传失败'\n } : f\n ));\n message.error(`${localFile.name} 上传失败: ${error.message || '未知错误'}`);\n }\n });\n } catch (error) {\n console.error('上传处理错误:', error);\n setFiles(prev => prev.map(f => \n f.id === localFile.id ? { \n ...f, \n status: 'error',\n errorMessage: error instanceof Error ? error.message : '上传处理失败'\n } : f\n ));\n message.error(`${localFile.name} 上传失败`);\n }\n }\n };\n\n // 模拟上传过程\n const simulateUpload = async (uploadFilesList: LocalFile[]) => {\n uploadFilesList.forEach(localFile => {\n let progress = 0;\n const interval = setInterval(() => {\n progress += 10;\n setFiles(prev => prev.map(f => \n f.id === localFile.id ? { ...f, progress } : f\n ));\n \n if (progress >= 100) {\n clearInterval(interval);\n setTimeout(() => {\n // 模拟服务器响应\n const mockResponse = {\n code: 200,\n data: {\n fileId: Math.floor(Math.random() * 1000) + 1,\n tempUrl: `https://example.com/uploads/${localFile.name}`,\n fileName: localFile.name,\n fileType: getFileExtension(localFile.name)\n }\n };\n \n setFiles(prev => prev.map(f => \n f.id === localFile.id ? { \n ...f, \n status: 'success', \n progress: 100,\n response: mockResponse\n } : f\n ));\n }, 300);\n }\n }, 100);\n });\n };\n \n // 删除文件\n const handleRemoveFile = (id: string) => {\n setFiles(prev => prev.filter(file => file.id !== id));\n };\n \n // 触发文件选择\n const triggerFileSelect = () => {\n if (fileInputRef.current) {\n fileInputRef.current.click();\n }\n };\n \n // 处理拖拽事件\n const handleDragOver = useCallback((e: React.DragEvent) => {\n e.preventDefault();\n e.stopPropagation();\n if (allowUpload) {\n setIsDragOver(true);\n }\n }, [allowUpload]);\n \n const handleDragLeave = useCallback((e: React.DragEvent) => {\n e.preventDefault();\n e.stopPropagation();\n if (allowUpload) {\n setIsDragOver(false);\n }\n }, [allowUpload]);\n \n const handleDrop = useCallback((e: React.DragEvent) => {\n e.preventDefault();\n e.stopPropagation();\n setIsDragOver(false);\n \n if (allowUpload && e.dataTransfer.files && e.dataTransfer.files.length > 0) {\n handleFileSelect(Array.from(e.dataTransfer.files));\n }\n }, [allowUpload, handleFileSelect]);\n \n // 处理提交\n const handleSubmit = () => {\n if (!value.trim() && files.length === 0) {\n message.warning('请输入消息或选择文件');\n return;\n }\n\n const successFiles = files.filter(file => file.status === 'success');\n const uploadingFiles = files.filter(file => file.status === 'uploading');\n \n if (uploadingFiles.length > 0) {\n Modal.confirm({\n title: '文件上传中',\n content: `还有 ${uploadingFiles.length} 个文件正在上传,是否继续发送?`,\n okText: '发送已完成的',\n cancelText: '等待全部完成',\n onOk: () => {\n const formattedFiles = formatFilesForServer(successFiles);\n if (onSubmit) {\n onSubmit({ \n text: value, \n files: formattedFiles \n });\n }\n\n setValue('');\n setFiles(prev => prev.filter(f => f.status !== 'success'));\n },\n onCancel: () => {\n message.info('请等待文件上传完成后再发送');\n },\n });\n } else {\n const formattedFiles = formatFilesForServer(successFiles);\n \n if (onSubmit) {\n onSubmit({ \n text: value, \n files: formattedFiles \n });\n }\n \n setValue('');\n setFiles(prev => prev.filter(f => f.status !== 'success'));\n }\n };\n\n // 格式化文件列表为服务端格式\n const formatFilesForServer = (fileList: LocalFile[]): ServerFile[] => {\n return fileList\n .filter(file => file.status === 'success' && file.response?.data)\n .map(file => {\n const responseData = file.response.data;\n \n return {\n fileName: file.name,\n fileId: responseData.fileId || responseData.id || 0,\n tempUrl: responseData.tempUrl || responseData.url || '',\n type: responseData.fileType || getFileExtension(file.name),\n mimeType: file.type\n };\n });\n };\n \n // 处理输入框变化\n const handleInputChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n const newValue = e.target.value;\n setValue(newValue);\n onChange?.(newValue);\n };\n \n // 处理回车键\n const handleKeyDown = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === 'Enter' && !e.shiftKey) {\n e.preventDefault();\n handleSubmit();\n }\n };\n \n // 渲染文件列表 - 使用新的 FileGallery 组件\n const renderFileList = () => {\n if (files.length === 0) return null;\n\n return (\n <FileGallery\n files={files}\n onRemove={handleRemoveFile}\n />\n );\n };\n \n const containerClass = `${styles.container} ${isDragOver ? 'drag-over' : ''}`;\n const uploading = files.some(f => f.status === 'uploading');\n const isDisabled = disabled || uploading || loading;\n\n // 定义按钮组件\n const SendButton = (props: any) => (\n <Tooltip title={loading ? \"停止生成\" : \"发送消息\"}>\n <button\n className={`${styles.iconButton} ${styles.sendButton} ${loading ? 'stop' : ''}`}\n onClick={loading ? onStop : handleSubmit}\n disabled={uploading || disabled}\n aria-label={loading ? \"停止生成\" : \"发送消息\"}\n {...props}\n >\n {loading ? <LoadingOutlined /> : <ArrowUpOutlined />}\n </button>\n </Tooltip>\n );\n\n const UploadButton = (props: any) => (\n <Tooltip title=\"上传文件\">\n <button\n className={`${styles.iconButton} ${styles.uploadButton}`}\n onClick={triggerFileSelect}\n disabled={isDisabled}\n aria-label=\"上传文件\"\n {...props}\n >\n <PaperClipOutlined />\n </button>\n </Tooltip>\n );\n\n const ClearButton = (props: any) => (\n <Popconfirm\n title=\"确定要清空聊天记录吗?\"\n onConfirm={onClear}\n placement=\"top\"\n okText=\"确定\"\n cancelText=\"取消\"\n disabled={isDisabled}\n >\n <button\n className={`${styles.iconButton} ${styles.clearButton}`}\n disabled={isDisabled}\n aria-label=\"清空聊天记录\"\n {...props}\n >\n <ClearOutlined />\n </button>\n </Popconfirm>\n );\n\n const actionsComponents: ActionsComponents = {\n SendButton,\n UploadButton,\n ClearButton,\n };\n\n // 渲染插槽内容\n const renderSlot = (\n slot: React.ReactNode | false | ((oriNode: React.ReactNode, info: { components: ActionsComponents }) => React.ReactNode | false) | undefined,\n oriNode: React.ReactNode\n ): React.ReactNode | null => {\n if (slot === false) return null;\n if (slot === undefined) return oriNode;\n if (typeof slot === 'function') {\n const result = slot(oriNode, { components: actionsComponents });\n return result === false ? null : result;\n }\n return slot;\n };\n\n // 默认的后缀内容(操作按钮组)\n const defaultSuffix = (\n <div className={styles.buttonGroup}>\n {allowUpload && <UploadButton />}\n <SendButton />\n </div>\n );\n\n return (\n <div\n ref={containerRef}\n className={containerClass}\n onDragOver={allowUpload ? handleDragOver : undefined}\n onDragLeave={allowUpload ? handleDragLeave : undefined}\n onDrop={allowUpload ? handleDrop : undefined}\n >\n {/* 头部插槽 */}\n {renderSlot(header, false)}\n\n {allowUpload && files.length > 0 && renderFileList()}\n\n {/* 隐藏的原生 file input */}\n {allowUpload && (\n <input\n ref={fileInputRef}\n type=\"file\"\n multiple\n accept={allowedFileTypes.join(',')}\n style={{ display: 'none' }}\n onChange={(e) => {\n if (e.target.files) {\n handleFileSelect(Array.from(e.target.files));\n e.target.value = '';\n }\n }}\n />\n )}\n\n <div className={styles.mainArea}>\n <div className={styles.senderWrap}>\n {/* 清除按钮 */}\n {clearBtnShow && <ClearButton />}\n\n <div className={styles.inputAndButtons}>\n {/* 前缀插槽 */}\n {renderSlot(prefix, false)}\n\n <div className={styles.textAreaWrapper}>\n <Input.TextArea\n className={styles.textArea}\n value={value}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n placeholder=\"请输入消息...\"\n disabled={isDisabled}\n autoSize={{ minRows: 1, maxRows: 4 }}\n style={{\n border: 'none',\n boxShadow: 'none',\n outline: 'none',\n padding: 0,\n }}\n />\n </div>\n\n {/* 后缀插槽(默认显示操作按钮) */}\n {renderSlot(suffix, defaultSuffix)}\n </div>\n </div>\n\n {/* 底部插槽(默认显示提示文字) */}\n {renderSlot(\n footer,\n <div className={styles.tip}>\n 内容由AI生成,无法确保真实准确,仅供参考\n </div>\n )}\n </div>\n </div>\n );\n};\n\nexport default XAdkSender;\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","useState","useRef","useCallback","Popconfirm","message","Tooltip","Input","Modal","ClearOutlined","LoadingOutlined","ArrowUpOutlined","PaperClipOutlined","useStyles","FileGallery","jsx","_jsx","jsxs","_jsxs","XAdkSender","_ref","_ref$clearBtnShow","clearBtnShow","_ref$allowUpload","allowUpload","_ref$loading","loading","_ref$disabled","disabled","_ref$uploadRequest","uploadRequest","onClear","onChange","onSubmit","onStop","onFilesChange","_ref$maxFileSize","maxFileSize","_ref$allowedFileTypes","allowedFileTypes","_ref$maxFiles","maxFiles","suffix","header","prefix","footer","styles","_useState","_useState2","_slicedToArray","value","setValue","_useState3","_useState4","files","setFiles","_useState5","_useState6","isDragOver","setIsDragOver","containerRef","fileInputRef","uploadRef","generateId","Date","now","toString","Math","random","substr","checkFileType","file","length","some","type","includes","mainType","split","startsWith","checkFileSize","maxSize","size","validateFile","valid","concat","getFileExtension","filename","ext","pop","toLowerCase","handleFileSelect","selectedFiles","fileArray","Array","from","validFiles","forEach","validation","push","id","uid","name","progress","status","response","error","prev","_toConsumableArray","uploadFiles","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","fileList","_iterator","_step","_loop","wrap","_callee$","_context2","next","_createForOfIteratorHelper","localFile","_loop$","_context","map","f","_objectSpread","onProgress","e","percent","onSuccess","onError","errorMessage","t0","console","Error","stop","s","n","done","delegateYield","t1","finish","_x","apply","arguments","simulateUpload","_ref3","_callee2","uploadFilesList","_callee2$","_context3","interval","setInterval","clearInterval","setTimeout","mockResponse","code","data","fileId","floor","tempUrl","fileName","fileType","_x2","handleRemoveFile","filter","triggerFileSelect","current","click","handleDragOver","preventDefault","stopPropagation","handleDragLeave","handleDrop","dataTransfer","handleSubmit","trim","warning","successFiles","uploadingFiles","confirm","title","content","okText","cancelText","onOk","formattedFiles","formatFilesForServer","text","onCancel","info","_file$response","responseData","url","mimeType","handleInputChange","newValue","target","handleKeyDown","key","shiftKey","renderFileList","onRemove","containerClass","container","uploading","isDisabled","SendButton","props","children","className","iconButton","sendButton","onClick","UploadButton","uploadButton","ClearButton","onConfirm","placement","clearButton","actionsComponents","renderSlot","slot","oriNode","undefined","result","components","defaultSuffix","buttonGroup","ref","onDragOver","onDragLeave","onDrop","multiple","accept","join","style","display","mainArea","senderWrap","inputAndButtons","textAreaWrapper","TextArea","textArea","onKeyDown","placeholder","autoSize","minRows","maxRows","border","boxShadow","outline","padding","tip"],"sources":["../../../../src/components/XAdkSender/index.tsx"],"sourcesContent":["import React, { useState, useRef, useCallback } from \"react\";\nimport { Popconfirm, message, Progress, Tooltip, Input, Modal } from \"antd\";\nimport {\n ClearOutlined,\n LoadingOutlined,\n ArrowUpOutlined,\n PaperClipOutlined,\n CloseOutlined,\n} from \"@ant-design/icons\";\nimport {\n XAdkSenderProps,\n ServerFile,\n LocalFile,\n ActionsComponents,\n} from \"../../types/XAdkSender\";\nimport { useStyles } from \"./styles\";\nimport FileGallery from \"./FileGallery\";\n\nconst XAdkSender: React.FC<XAdkSenderProps> = ({\n clearBtnShow = true,\n allowUpload = false,\n loading = false,\n disabled = false,\n uploadRequest = () => {},\n onClear,\n onChange,\n onSubmit,\n onStop,\n onFilesChange,\n maxFileSize = 10,\n allowedFileTypes = [\n \"image/*\",\n \"audio/*\",\n \"video/*\",\n \"application/pdf\",\n \"text/plain\",\n \".doc\",\n \".docx\",\n \".xls\",\n \".xlsx\",\n \".ppt\",\n \".pptx\",\n ],\n maxFiles = 5,\n suffix,\n header,\n prefix,\n footer,\n}) => {\n const styles = useStyles();\n const [value, setValue] = useState<string>(\"\");\n const [files, setFiles] = useState<LocalFile[]>([]);\n const [isDragOver, setIsDragOver] = useState(false);\n const containerRef = useRef<HTMLDivElement>(null);\n const fileInputRef = useRef<HTMLInputElement>(null);\n const uploadRef = useRef<any>(null);\n\n // 生成唯一ID\n const generateId = () => {\n return Date.now().toString(36) + Math.random().toString(36).substr(2);\n };\n\n // 检查文件类型\n const checkFileType = (file: File): boolean => {\n if (!allowedFileTypes.length) return true;\n\n return allowedFileTypes.some((type) => {\n if (type.includes(\"/*\")) {\n const mainType = type.split(\"/\")[0];\n return file.type.startsWith(mainType);\n }\n return file.type === type;\n });\n };\n\n // 检查文件大小\n const checkFileSize = (file: File): boolean => {\n const maxSize = maxFileSize * 1024 * 1024;\n return file.size <= maxSize;\n };\n\n // 验证文件\n const validateFile = (file: File): { valid: boolean; message?: string } => {\n if (files.length >= maxFiles) {\n return { valid: false, message: `最多只能上传 ${maxFiles} 个文件` };\n }\n\n if (!checkFileSize(file)) {\n return { valid: false, message: `文件大小不能超过 ${maxFileSize}MB` };\n }\n\n if (!checkFileType(file)) {\n return { valid: false, message: \"不支持的文件类型\" };\n }\n\n return { valid: true };\n };\n\n // 获取文件扩展名\n const getFileExtension = (filename: string): string => {\n const ext = filename.split(\".\").pop();\n return ext ? ext.toLowerCase() : \"\";\n };\n\n // 处理文件选择\n const handleFileSelect = useCallback(\n (selectedFiles: File[]) => {\n const fileArray = Array.from(selectedFiles);\n const validFiles: LocalFile[] = [];\n\n fileArray.forEach((file) => {\n const validation = validateFile(file);\n if (validation.valid) {\n validFiles.push({\n id: generateId(),\n uid: generateId(),\n name: file.name,\n size: file.size,\n type: file.type,\n file,\n progress: 0,\n status: \"pending\",\n response: null,\n });\n } else {\n message.error(validation.message);\n }\n });\n\n if (validFiles.length > 0) {\n setFiles((prev) => [...prev, ...validFiles]);\n uploadFiles(validFiles);\n }\n },\n [files.length, maxFiles, maxFileSize, allowedFileTypes],\n );\n\n // 上传文件\n const uploadFiles = async (fileList: LocalFile[]) => {\n for (const localFile of fileList) {\n // 开始上传\n setFiles((prev) =>\n prev.map((f) =>\n f.id === localFile.id ? { ...f, status: \"uploading\" } : f,\n ),\n );\n\n try {\n await uploadRequest({\n file: localFile.file,\n onProgress: (e) => {\n setFiles((prev) =>\n prev.map((f) =>\n f.id === localFile.id ? { ...f, progress: e.percent } : f,\n ),\n );\n },\n onSuccess: (response) => {\n setFiles((prev) =>\n prev.map((f) =>\n f.id === localFile.id\n ? {\n ...f,\n status: \"success\",\n progress: 100,\n response,\n }\n : f,\n ),\n );\n },\n onError: (error) => {\n setFiles((prev) =>\n prev.map((f) =>\n f.id === localFile.id\n ? {\n ...f,\n status: \"error\",\n errorMessage: error.message || \"上传失败\",\n }\n : f,\n ),\n );\n message.error(\n `${localFile.name} 上传失败: ${error.message || \"未知错误\"}`,\n );\n },\n });\n } catch (error) {\n console.error(\"上传处理错误:\", error);\n setFiles((prev) =>\n prev.map((f) =>\n f.id === localFile.id\n ? {\n ...f,\n status: \"error\",\n errorMessage:\n error instanceof Error ? error.message : \"上传处理失败\",\n }\n : f,\n ),\n );\n message.error(`${localFile.name} 上传失败`);\n }\n }\n };\n\n // 模拟上传过程\n const simulateUpload = async (uploadFilesList: LocalFile[]) => {\n uploadFilesList.forEach((localFile) => {\n let progress = 0;\n const interval = setInterval(() => {\n progress += 10;\n setFiles((prev) =>\n prev.map((f) => (f.id === localFile.id ? { ...f, progress } : f)),\n );\n\n if (progress >= 100) {\n clearInterval(interval);\n setTimeout(() => {\n // 模拟服务器响应\n const mockResponse = {\n code: 200,\n data: {\n fileId: Math.floor(Math.random() * 1000) + 1,\n tempUrl: `https://example.com/uploads/${localFile.name}`,\n fileName: localFile.name,\n fileType: getFileExtension(localFile.name),\n },\n };\n\n setFiles((prev) =>\n prev.map((f) =>\n f.id === localFile.id\n ? {\n ...f,\n status: \"success\",\n progress: 100,\n response: mockResponse,\n }\n : f,\n ),\n );\n }, 300);\n }\n }, 100);\n });\n };\n\n // 删除文件\n const handleRemoveFile = (id: string) => {\n setFiles((prev) => prev.filter((file) => file.id !== id));\n };\n\n // 触发文件选择\n const triggerFileSelect = () => {\n if (fileInputRef.current) {\n fileInputRef.current.click();\n }\n };\n\n // 处理拖拽事件\n const handleDragOver = useCallback(\n (e: React.DragEvent) => {\n e.preventDefault();\n e.stopPropagation();\n if (allowUpload) {\n setIsDragOver(true);\n }\n },\n [allowUpload],\n );\n\n const handleDragLeave = useCallback(\n (e: React.DragEvent) => {\n e.preventDefault();\n e.stopPropagation();\n if (allowUpload) {\n setIsDragOver(false);\n }\n },\n [allowUpload],\n );\n\n const handleDrop = useCallback(\n (e: React.DragEvent) => {\n e.preventDefault();\n e.stopPropagation();\n setIsDragOver(false);\n\n if (\n allowUpload &&\n e.dataTransfer.files &&\n e.dataTransfer.files.length > 0\n ) {\n handleFileSelect(Array.from(e.dataTransfer.files));\n }\n },\n [allowUpload, handleFileSelect],\n );\n\n // 处理提交\n const handleSubmit = () => {\n if (!value.trim() && files.length === 0) {\n message.warning(\"请输入消息或选择文件\");\n return;\n }\n\n const successFiles = files.filter((file) => file.status === \"success\");\n const uploadingFiles = files.filter((file) => file.status === \"uploading\");\n\n if (uploadingFiles.length > 0) {\n Modal.confirm({\n title: \"文件上传中\",\n content: `还有 ${uploadingFiles.length} 个文件正在上传,是否继续发送?`,\n okText: \"发送已完成的\",\n cancelText: \"等待全部完成\",\n onOk: () => {\n const formattedFiles = formatFilesForServer(successFiles);\n if (onSubmit) {\n onSubmit({\n text: value,\n files: formattedFiles,\n });\n }\n\n setValue(\"\");\n setFiles((prev) => prev.filter((f) => f.status !== \"success\"));\n },\n onCancel: () => {\n message.info(\"请等待文件上传完成后再发送\");\n },\n });\n } else {\n const formattedFiles = formatFilesForServer(successFiles);\n\n if (onSubmit) {\n onSubmit({\n text: value,\n files: formattedFiles,\n });\n }\n\n setValue(\"\");\n setFiles((prev) => prev.filter((f) => f.status !== \"success\"));\n }\n };\n\n // 格式化文件列表为服务端格式\n const formatFilesForServer = (fileList: LocalFile[]): ServerFile[] => {\n return fileList\n .filter((file) => file.status === \"success\" && file.response?.data)\n .map((file) => {\n const responseData = file.response.data;\n\n return {\n fileName: file.name,\n fileId: responseData.fileId || responseData.id || 0,\n tempUrl: responseData.tempUrl || responseData.url || \"\",\n type: responseData.fileType || getFileExtension(file.name),\n mimeType: file.type,\n };\n });\n };\n\n // 处理输入框变化\n const handleInputChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n const newValue = e.target.value;\n setValue(newValue);\n onChange?.(newValue);\n };\n\n // 处理回车键\n const handleKeyDown = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === \"Enter\" && !e.shiftKey) {\n e.preventDefault();\n handleSubmit();\n }\n };\n\n // 渲染文件列表 - 使用新的 FileGallery 组件\n const renderFileList = () => {\n if (files.length === 0) return null;\n\n return <FileGallery files={files} onRemove={handleRemoveFile} />;\n };\n\n const containerClass = `${styles.container} ${isDragOver ? \"drag-over\" : \"\"}`;\n const uploading = files.some((f) => f.status === \"uploading\");\n const isDisabled = disabled || uploading || loading;\n\n // 定义按钮组件\n const SendButton = (props: any) => (\n <Tooltip title={loading ? \"停止生成\" : \"发送消息\"}>\n <button\n className={`${styles.iconButton} ${styles.sendButton} ${loading ? \"stop\" : \"\"}`}\n onClick={loading ? onStop : handleSubmit}\n disabled={uploading || disabled}\n aria-label={loading ? \"停止生成\" : \"发送消息\"}\n {...props}\n >\n {loading ? <LoadingOutlined /> : <ArrowUpOutlined />}\n </button>\n </Tooltip>\n );\n\n const UploadButton = (props: any) => (\n <Tooltip title=\"上传文件\">\n <button\n className={`${styles.iconButton} ${styles.uploadButton}`}\n onClick={triggerFileSelect}\n disabled={isDisabled}\n aria-label=\"上传文件\"\n {...props}\n >\n <PaperClipOutlined />\n </button>\n </Tooltip>\n );\n\n const ClearButton = (props: any) => (\n <Popconfirm\n title=\"确定要清空聊天记录吗?\"\n onConfirm={onClear}\n placement=\"top\"\n okText=\"确定\"\n cancelText=\"取消\"\n disabled={isDisabled}\n >\n <button\n className={`${styles.iconButton} ${styles.clearButton}`}\n disabled={isDisabled}\n aria-label=\"清空聊天记录\"\n {...props}\n >\n <ClearOutlined />\n </button>\n </Popconfirm>\n );\n\n const actionsComponents: ActionsComponents = {\n SendButton,\n UploadButton,\n ClearButton,\n };\n\n // 渲染插槽内容\n const renderSlot = (\n slot:\n | React.ReactNode\n | false\n | ((\n oriNode: React.ReactNode,\n info: { components: ActionsComponents },\n ) => React.ReactNode | false)\n | undefined,\n oriNode: React.ReactNode,\n ): React.ReactNode | null => {\n if (slot === false) return null;\n if (slot === undefined) return oriNode;\n if (typeof slot === \"function\") {\n const result = slot(oriNode, { components: actionsComponents });\n return result === false ? null : result;\n }\n return slot;\n };\n\n // 默认的后缀内容(操作按钮组)\n const defaultSuffix = (\n <div className={styles.buttonGroup}>\n {allowUpload && <UploadButton />}\n <SendButton />\n </div>\n );\n\n return (\n <div\n ref={containerRef}\n className={containerClass}\n onDragOver={allowUpload ? handleDragOver : undefined}\n onDragLeave={allowUpload ? handleDragLeave : undefined}\n onDrop={allowUpload ? handleDrop : undefined}\n >\n {/* 头部插槽 */}\n {renderSlot(header, false)}\n\n {allowUpload && files.length > 0 && renderFileList()}\n\n {/* 隐藏的原生 file input */}\n {allowUpload && (\n <input\n ref={fileInputRef}\n type=\"file\"\n multiple\n accept={allowedFileTypes.join(\",\")}\n style={{ display: \"none\" }}\n onChange={(e) => {\n if (e.target.files) {\n handleFileSelect(Array.from(e.target.files));\n e.target.value = \"\";\n }\n }}\n />\n )}\n\n <div className={styles.mainArea}>\n <div className={styles.senderWrap}>\n {/* 清除按钮 */}\n {clearBtnShow && <ClearButton />}\n\n <div className={styles.inputAndButtons}>\n {/* 前缀插槽 */}\n {renderSlot(prefix, false)}\n\n <div className={styles.textAreaWrapper}>\n <Input.TextArea\n className={styles.textArea}\n value={value}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n placeholder=\"请输入消息...\"\n disabled={isDisabled}\n autoSize={{ minRows: 1, maxRows: 4 }}\n style={{\n border: \"none\",\n boxShadow: \"none\",\n outline: \"none\",\n padding: 0,\n }}\n />\n </div>\n\n {/* 后缀插槽(默认显示操作按钮) */}\n {renderSlot(suffix, defaultSuffix)}\n </div>\n </div>\n\n {/* 底部插槽(默认显示提示文字) */}\n {renderSlot(\n footer,\n <div className={styles.tip}>\n 内容由AI生成,无法确保真实准确,仅供参考\n </div>,\n )}\n </div>\n </div>\n );\n};\n\nexport default XAdkSender;\n"],"mappings":"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"}