@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.
Files changed (62) hide show
  1. package/dist/cjs/components/FileGallery/index.d.ts +33 -0
  2. package/dist/cjs/components/FileGallery/index.js +301 -0
  3. package/dist/cjs/components/FileGallery/index.js.map +7 -0
  4. package/dist/{esm/components/XAdkChatbot → cjs}/components/FileGallery/styles.d.ts +11 -6
  5. package/dist/cjs/components/FileGallery/styles.js +188 -0
  6. package/dist/cjs/components/FileGallery/styles.js.map +7 -0
  7. package/dist/cjs/components/XAdkChatbot/index.js +1 -1
  8. package/dist/cjs/components/XAdkChatbot/index.js.map +1 -1
  9. package/dist/cjs/components/XAdkProvider/XAdkProvider.stories.js +1 -1
  10. package/dist/cjs/components/XAdkProvider/XAdkProvider.stories.js.map +1 -1
  11. package/dist/cjs/components/XAdkSender/index.d.ts +2 -2
  12. package/dist/cjs/components/XAdkSender/index.js +127 -95
  13. package/dist/cjs/components/XAdkSender/index.js.map +2 -2
  14. package/dist/cjs/index.d.ts +2 -2
  15. package/dist/cjs/index.js +1 -1
  16. package/dist/cjs/index.js.map +3 -3
  17. package/dist/cjs/types/FileGallery.d.ts +54 -0
  18. package/dist/cjs/types/FileGallery.js +18 -0
  19. package/dist/cjs/types/FileGallery.js.map +7 -0
  20. package/dist/cjs/types/index.d.ts +1 -0
  21. package/dist/cjs/types/index.js +2 -0
  22. package/dist/cjs/types/index.js.map +2 -2
  23. package/dist/esm/components/FileGallery/index.d.ts +33 -0
  24. package/dist/esm/components/FileGallery/index.js +439 -0
  25. package/dist/esm/components/FileGallery/index.js.map +1 -0
  26. package/dist/{cjs/components/XAdkChatbot → esm}/components/FileGallery/styles.d.ts +11 -6
  27. package/dist/esm/components/FileGallery/styles.js +23 -0
  28. package/dist/esm/components/FileGallery/styles.js.map +1 -0
  29. package/dist/esm/components/XAdkChatbot/index.js +1 -1
  30. package/dist/esm/components/XAdkChatbot/index.js.map +1 -1
  31. package/dist/esm/components/XAdkProvider/XAdkProvider.stories.js +1 -1
  32. package/dist/esm/components/XAdkProvider/XAdkProvider.stories.js.map +1 -1
  33. package/dist/esm/components/XAdkSender/index.d.ts +2 -2
  34. package/dist/esm/components/XAdkSender/index.js +46 -45
  35. package/dist/esm/components/XAdkSender/index.js.map +1 -1
  36. package/dist/esm/index.d.ts +2 -2
  37. package/dist/esm/index.js +2 -2
  38. package/dist/esm/index.js.map +1 -1
  39. package/dist/esm/types/FileGallery.d.ts +54 -0
  40. package/dist/esm/types/FileGallery.js +2 -0
  41. package/dist/esm/types/FileGallery.js.map +1 -0
  42. package/dist/esm/types/index.d.ts +1 -0
  43. package/dist/esm/types/index.js +1 -0
  44. package/dist/esm/types/index.js.map +1 -1
  45. package/dist/umd/chat-sdk.min.js +1 -1
  46. package/package.json +1 -1
  47. package/dist/cjs/components/XAdkChatbot/components/FileGallery/index.d.ts +0 -12
  48. package/dist/cjs/components/XAdkChatbot/components/FileGallery/index.js +0 -92
  49. package/dist/cjs/components/XAdkChatbot/components/FileGallery/index.js.map +0 -7
  50. package/dist/cjs/components/XAdkChatbot/components/FileGallery/styles.js +0 -137
  51. package/dist/cjs/components/XAdkChatbot/components/FileGallery/styles.js.map +0 -7
  52. package/dist/cjs/components/XAdkSender/FileGallery.d.ts +0 -8
  53. package/dist/cjs/components/XAdkSender/FileGallery.js +0 -381
  54. package/dist/cjs/components/XAdkSender/FileGallery.js.map +0 -7
  55. package/dist/esm/components/XAdkChatbot/components/FileGallery/index.d.ts +0 -12
  56. package/dist/esm/components/XAdkChatbot/components/FileGallery/index.js +0 -104
  57. package/dist/esm/components/XAdkChatbot/components/FileGallery/index.js.map +0 -1
  58. package/dist/esm/components/XAdkChatbot/components/FileGallery/styles.js +0 -20
  59. package/dist/esm/components/XAdkChatbot/components/FileGallery/styles.js.map +0 -1
  60. package/dist/esm/components/XAdkSender/FileGallery.d.ts +0 -8
  61. package/dist/esm/components/XAdkSender/FileGallery.js +0 -236
  62. package/dist/esm/components/XAdkSender/FileGallery.js.map +0 -1
@@ -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","removable","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} removable 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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"}
@@ -3,6 +3,7 @@ import XAiProvider from "./components/XAiProvider";
3
3
  import XAiChatbot from "./components/XAiChatbot";
4
4
  import XAiSDK from "./components/XAiSDK";
5
5
  import XAiSender from "./components/XAiSender";
6
+ import FileGallery from "./components/FileGallery";
6
7
  import XAiConversations from "./components/XAiConversations";
7
8
  import XAiThoughtChain from "./components/XAiThoughtChain";
8
9
  import useXAiSDK from "./hooks/useXAiSDK";
@@ -15,10 +16,9 @@ export { useChatState, useChatActions, useSession, } from "./components/XAdkProv
15
16
  export * from "./types";
16
17
  export type { ChatHookResult, ChatHookFactory } from "./types/ChatHook";
17
18
  export { useXAi, XAiProvider, XAiChatbot, XAiSDK, XAiSender, XAiConversations, useXAiSDK, request, };
18
- export { XAdkProvider, XAdkChatbot, XAdkSender, XAiThoughtChain, useADKChat };
19
+ export { XAdkProvider, XAdkChatbot, XAdkSender, FileGallery, XAiThoughtChain, useADKChat, };
19
20
  export { default as MarkdownRender } from "./components/XAdkChatbot/components/MarkdownRender";
20
21
  export { default as FunctionCallRender } from "./components/XAdkChatbot/components/FunctionCallRender";
21
- export { default as FileGallery } from "./components/XAdkChatbot/components/FileGallery";
22
22
  export { default as ThinkRender } from "./components/XAdkChatbot/components/ThinkRender";
23
23
  export type { MarkdownRenderProps } from "./components/XAdkChatbot/components/MarkdownRender";
24
24
  export type { FunctionCallRenderProps } from "./components/XAdkChatbot/components/FunctionCallRender";
package/dist/esm/index.js CHANGED
@@ -4,6 +4,7 @@ import XAiProvider from "./components/XAiProvider";
4
4
  import XAiChatbot from "./components/XAiChatbot";
5
5
  import XAiSDK from "./components/XAiSDK";
6
6
  import XAiSender from "./components/XAiSender";
7
+ import FileGallery from "./components/FileGallery";
7
8
  import XAiConversations from "./components/XAiConversations";
8
9
  import XAiThoughtChain from "./components/XAiThoughtChain";
9
10
  import useXAiSDK from "./hooks/useXAiSDK";
@@ -25,12 +26,11 @@ export * from "./types";
25
26
  export { useXAi, XAiProvider, XAiChatbot, XAiSDK, XAiSender, XAiConversations, useXAiSDK, request };
26
27
 
27
28
  // 新 API - 推荐使用
28
- export { XAdkProvider, XAdkChatbot, XAdkSender, XAiThoughtChain, useADKChat };
29
+ export { XAdkProvider, XAdkChatbot, XAdkSender, FileGallery, XAiThoughtChain, useADKChat };
29
30
 
30
31
  // 基础组件导出 - 供高级用户和业务侧使用
31
32
  export { default as MarkdownRender } from "./components/XAdkChatbot/components/MarkdownRender";
32
33
  export { default as FunctionCallRender } from "./components/XAdkChatbot/components/FunctionCallRender";
33
- export { default as FileGallery } from "./components/XAdkChatbot/components/FileGallery";
34
34
  export { default as ThinkRender } from "./components/XAdkChatbot/components/ThinkRender";
35
35
 
36
36
  // 基础组件类型导出
@@ -1 +1 @@
1
- {"version":3,"names":["useXAi","XAiProvider","XAiChatbot","XAiSDK","XAiSender","XAiConversations","XAiThoughtChain","useXAiSDK","request","XAdkProvider","XAdkChatbot","XAdkSender","useADKChat","useChatState","useChatActions","useSession","default","MarkdownRender","FunctionCallRender","FileGallery","ThinkRender"],"sources":["../../src/index.ts"],"sourcesContent":["// index.ts\nimport { useXAi } from \"./context/AiProviderContext\";\nimport XAiProvider from \"./components/XAiProvider\";\nimport XAiChatbot from \"./components/XAiChatbot\";\nimport XAiSDK from \"./components/XAiSDK\";\nimport XAiSender from \"./components/XAiSender\";\nimport XAiConversations from \"./components/XAiConversations\";\nimport XAiThoughtChain from \"./components/XAiThoughtChain\";\nimport useXAiSDK from \"./hooks/useXAiSDK\";\nimport request from \"./utils/request\";\n\n// 新的 Compound Components 架构\nimport XAdkProvider from \"./components/XAdkProvider\";\nimport XAdkChatbot from \"./components/XAdkChatbot\";\nimport XAdkSender from \"./components/XAdkSender\";\nimport useADKChat from \"./hooks/useADKChat\";\n\n// 导出新的 Context Hooks\nexport {\n useChatState,\n useChatActions,\n useSession,\n} from \"./components/XAdkProvider/context\";\n\nexport * from \"./types\";\n\n// 导出自定义 Hook 相关类型\nexport type { ChatHookResult, ChatHookFactory } from \"./types/ChatHook\";\n\n// 旧 API - 保持向后兼容\nexport {\n useXAi,\n XAiProvider,\n XAiChatbot,\n XAiSDK,\n XAiSender,\n XAiConversations,\n useXAiSDK,\n request,\n};\n\n// 新 API - 推荐使用\nexport { XAdkProvider, XAdkChatbot, XAdkSender, XAiThoughtChain, useADKChat };\n\n// 基础组件导出 - 供高级用户和业务侧使用\nexport { default as MarkdownRender } from \"./components/XAdkChatbot/components/MarkdownRender\";\nexport { default as FunctionCallRender } from \"./components/XAdkChatbot/components/FunctionCallRender\";\nexport { default as FileGallery } from \"./components/XAdkChatbot/components/FileGallery\";\nexport { default as ThinkRender } from \"./components/XAdkChatbot/components/ThinkRender\";\n\n// 基础组件类型导出\nexport type { MarkdownRenderProps } from \"./components/XAdkChatbot/components/MarkdownRender\";\nexport type { FunctionCallRenderProps } from \"./components/XAdkChatbot/components/FunctionCallRender\";\nexport type {\n XAiThoughtChainProps,\n ThoughtChainItemType,\n} from \"./types/XAiThoughtChain\";\n"],"mappings":"AAAA;AACA,SAASA,MAAM;AACf,OAAOC,WAAW;AAClB,OAAOC,UAAU;AACjB,OAAOC,MAAM;AACb,OAAOC,SAAS;AAChB,OAAOC,gBAAgB;AACvB,OAAOC,eAAe;AACtB,OAAOC,SAAS;AAChB,OAAOC,OAAO;;AAEd;AACA,OAAOC,YAAY;AACnB,OAAOC,WAAW;AAClB,OAAOC,UAAU;AACjB,OAAOC,UAAU;;AAEjB;AACA,SACEC,YAAY,EACZC,cAAc,EACdC,UAAU;AAGZ;;AAEA;;AAGA;AACA,SACEf,MAAM,EACNC,WAAW,EACXC,UAAU,EACVC,MAAM,EACNC,SAAS,EACTC,gBAAgB,EAChBE,SAAS,EACTC,OAAO;;AAGT;AACA,SAASC,YAAY,EAAEC,WAAW,EAAEC,UAAU,EAAEL,eAAe,EAAEM,UAAU;;AAE3E;AACA,SAASI,OAAO,IAAIC,cAAc;AAClC,SAASD,OAAO,IAAIE,kBAAkB;AACtC,SAASF,OAAO,IAAIG,WAAW;AAC/B,SAASH,OAAO,IAAII,WAAW;;AAE/B"}
1
+ {"version":3,"names":["useXAi","XAiProvider","XAiChatbot","XAiSDK","XAiSender","FileGallery","XAiConversations","XAiThoughtChain","useXAiSDK","request","XAdkProvider","XAdkChatbot","XAdkSender","useADKChat","useChatState","useChatActions","useSession","default","MarkdownRender","FunctionCallRender","ThinkRender"],"sources":["../../src/index.ts"],"sourcesContent":["// index.ts\nimport { useXAi } from \"./context/AiProviderContext\";\nimport XAiProvider from \"./components/XAiProvider\";\nimport XAiChatbot from \"./components/XAiChatbot\";\nimport XAiSDK from \"./components/XAiSDK\";\nimport XAiSender from \"./components/XAiSender\";\nimport FileGallery from \"./components/FileGallery\";\nimport XAiConversations from \"./components/XAiConversations\";\nimport XAiThoughtChain from \"./components/XAiThoughtChain\";\nimport useXAiSDK from \"./hooks/useXAiSDK\";\nimport request from \"./utils/request\";\n\n// 新的 Compound Components 架构\nimport XAdkProvider from \"./components/XAdkProvider\";\nimport XAdkChatbot from \"./components/XAdkChatbot\";\nimport XAdkSender from \"./components/XAdkSender\";\nimport useADKChat from \"./hooks/useADKChat\";\n\n// 导出新的 Context Hooks\nexport {\n useChatState,\n useChatActions,\n useSession,\n} from \"./components/XAdkProvider/context\";\n\nexport * from \"./types\";\n\n// 导出自定义 Hook 相关类型\nexport type { ChatHookResult, ChatHookFactory } from \"./types/ChatHook\";\n\n// 旧 API - 保持向后兼容\nexport {\n useXAi,\n XAiProvider,\n XAiChatbot,\n XAiSDK,\n XAiSender,\n XAiConversations,\n useXAiSDK,\n request,\n};\n\n// 新 API - 推荐使用\nexport {\n XAdkProvider,\n XAdkChatbot,\n XAdkSender,\n FileGallery,\n XAiThoughtChain,\n useADKChat,\n};\n\n// 基础组件导出 - 供高级用户和业务侧使用\nexport { default as MarkdownRender } from \"./components/XAdkChatbot/components/MarkdownRender\";\nexport { default as FunctionCallRender } from \"./components/XAdkChatbot/components/FunctionCallRender\";\nexport { default as ThinkRender } from \"./components/XAdkChatbot/components/ThinkRender\";\n\n// 基础组件类型导出\nexport type { MarkdownRenderProps } from \"./components/XAdkChatbot/components/MarkdownRender\";\nexport type { FunctionCallRenderProps } from \"./components/XAdkChatbot/components/FunctionCallRender\";\nexport type {\n XAiThoughtChainProps,\n ThoughtChainItemType,\n} from \"./types/XAiThoughtChain\";\n"],"mappings":"AAAA;AACA,SAASA,MAAM;AACf,OAAOC,WAAW;AAClB,OAAOC,UAAU;AACjB,OAAOC,MAAM;AACb,OAAOC,SAAS;AAChB,OAAOC,WAAW;AAClB,OAAOC,gBAAgB;AACvB,OAAOC,eAAe;AACtB,OAAOC,SAAS;AAChB,OAAOC,OAAO;;AAEd;AACA,OAAOC,YAAY;AACnB,OAAOC,WAAW;AAClB,OAAOC,UAAU;AACjB,OAAOC,UAAU;;AAEjB;AACA,SACEC,YAAY,EACZC,cAAc,EACdC,UAAU;AAGZ;;AAEA;;AAGA;AACA,SACEhB,MAAM,EACNC,WAAW,EACXC,UAAU,EACVC,MAAM,EACNC,SAAS,EACTE,gBAAgB,EAChBE,SAAS,EACTC,OAAO;;AAGT;AACA,SACEC,YAAY,EACZC,WAAW,EACXC,UAAU,EACVP,WAAW,EACXE,eAAe,EACfM,UAAU;;AAGZ;AACA,SAASI,OAAO,IAAIC,cAAc;AAClC,SAASD,OAAO,IAAIE,kBAAkB;AACtC,SAASF,OAAO,IAAIG,WAAW;;AAE/B"}
@@ -0,0 +1,54 @@
1
+ /// <reference types="react" />
2
+ /**
3
+ * 统一的文件数据接口
4
+ * 兼容 LocalFile (XAdkSender) 和 FileData (XadkChatbot)
5
+ */
6
+ export interface FileItem {
7
+ id?: string;
8
+ uid?: string;
9
+ name?: string;
10
+ displayName?: string;
11
+ size?: number;
12
+ type?: string;
13
+ mimeType?: string;
14
+ file?: File;
15
+ status?: "pending" | "uploading" | "success" | "error";
16
+ progress?: number;
17
+ errorMessage?: string;
18
+ fileUri?: string;
19
+ tempUrl?: string;
20
+ response?: any;
21
+ }
22
+ export interface FileGalleryProps {
23
+ /**
24
+ * 文件列表
25
+ */
26
+ files: FileItem[];
27
+ /**
28
+ * 对齐方式
29
+ * @default 'left'
30
+ */
31
+ align?: "left" | "right";
32
+ /**
33
+ * 是否可删除
34
+ * @default false
35
+ */
36
+ removable?: boolean;
37
+ /**
38
+ * 删除文件回调
39
+ */
40
+ onRemove?: (id: string) => void;
41
+ /**
42
+ * 自定义样式类名
43
+ */
44
+ className?: string;
45
+ /**
46
+ * 自定义样式
47
+ */
48
+ style?: React.CSSProperties;
49
+ }
50
+ export interface FileItemComponentProps {
51
+ file: FileItem;
52
+ removable: boolean;
53
+ onRemove: (id: string) => void;
54
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=FileGallery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["../../../src/types/FileGallery.ts"],"sourcesContent":["/**\n * 统一的文件数据接口\n * 兼容 LocalFile (XAdkSender) 和 FileData (XadkChatbot)\n */\nexport interface FileItem {\n // 基础字段\n id?: string;\n uid?: string;\n name?: string;\n displayName?: string;\n size?: number;\n type?: string;\n mimeType?: string;\n\n // 本地文件对象 (XAdkSender)\n file?: File;\n\n // 上传状态 (XAdkSender)\n status?: \"pending\" | \"uploading\" | \"success\" | \"error\";\n progress?: number;\n errorMessage?: string;\n\n // URL 字段\n fileUri?: string; // XadkChatbot\n tempUrl?: string; // XAdkSender\n response?: any;\n}\n\nexport interface FileGalleryProps {\n /**\n * 文件列表\n */\n files: FileItem[];\n\n /**\n * 对齐方式\n * @default 'left'\n */\n align?: \"left\" | \"right\";\n\n /**\n * 是否可删除\n * @default false\n */\n removable?: boolean;\n\n /**\n * 删除文件回调\n */\n onRemove?: (id: string) => void;\n\n /**\n * 自定义样式类名\n */\n className?: string;\n\n /**\n * 自定义样式\n */\n style?: React.CSSProperties;\n}\n\nexport interface FileItemComponentProps {\n file: FileItem;\n removable: boolean;\n onRemove: (id: string) => void;\n}\n"],"mappings":""}
@@ -6,4 +6,5 @@ export * from "./XAiConversations";
6
6
  export * from "./XAdkProvider";
7
7
  export * from "./XAdkChatbot";
8
8
  export * from "./XAiThoughtChain";
9
+ export * from "./FileGallery";
9
10
  export * from "./common";
@@ -6,5 +6,6 @@ export * from "./XAiConversations";
6
6
  export * from "./XAdkProvider";
7
7
  export * from "./XAdkChatbot";
8
8
  export * from "./XAiThoughtChain";
9
+ export * from "./FileGallery";
9
10
  export * from "./common";
10
11
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["../../../src/types/index.ts"],"sourcesContent":["export * from \"./XAiChatbot\";\nexport * from \"./XAiMessage\";\nexport * from \"./XAiProvider\";\nexport * from \"./XAiSender\";\nexport * from \"./XAiConversations\";\nexport * from \"./XAdkProvider\";\nexport * from \"./XAdkChatbot\";\nexport * from \"./XAiThoughtChain\";\nexport * from \"./common\";\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA"}
1
+ {"version":3,"names":[],"sources":["../../../src/types/index.ts"],"sourcesContent":["export * from \"./XAiChatbot\";\nexport * from \"./XAiMessage\";\nexport * from \"./XAiProvider\";\nexport * from \"./XAiSender\";\nexport * from \"./XAiConversations\";\nexport * from \"./XAdkProvider\";\nexport * from \"./XAdkChatbot\";\nexport * from \"./XAiThoughtChain\";\nexport * from \"./FileGallery\";\nexport * from \"./common\";\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA"}