@ai-group/chat-sdk 3.3.10 → 3.3.11

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.
@@ -10,8 +10,6 @@ import { ClearOutlined, LoadingOutlined, ArrowUpOutlined, PaperClipOutlined } fr
10
10
  import { useStyles } from "./styles";
11
11
  import FileGallery from "../FileGallery";
12
12
  import { getExt } from "../../utils/file";
13
- import { jsx as _jsx } from "react/jsx-runtime";
14
- import { jsxs as _jsxs } from "react/jsx-runtime";
15
13
  var XAdkSender = /*#__PURE__*/forwardRef(function (_ref, ref) {
16
14
  var _ref$clearBtnShow = _ref.clearBtnShow,
17
15
  clearBtnShow = _ref$clearBtnShow === void 0 ? true : _ref$clearBtnShow,
@@ -597,13 +595,13 @@ var XAdkSender = /*#__PURE__*/forwardRef(function (_ref, ref) {
597
595
  e.target.value = "";
598
596
  }
599
597
  }
600
- }), /*#__PURE__*/_jsxs("div", {
598
+ }), /*#__PURE__*/_jsx("div", {
601
599
  className: styles.mainArea,
602
- children: [/*#__PURE__*/_jsxs("div", {
600
+ children: /*#__PURE__*/_jsxs("div", {
603
601
  className: styles.senderWrap,
604
- children: [clearBtnShow && /*#__PURE__*/_jsx(ClearButton, {}), /*#__PURE__*/_jsxs("div", {
602
+ children: [/*#__PURE__*/_jsxs("div", {
605
603
  className: styles.inputAndButtons,
606
- children: [renderSlot(prefix, false), /*#__PURE__*/_jsx("div", {
604
+ children: [clearBtnShow && /*#__PURE__*/_jsx(ClearButton, {}), renderSlot(prefix, false), /*#__PURE__*/_jsx("div", {
607
605
  className: styles.textAreaWrapper,
608
606
  children: /*#__PURE__*/_jsx(Input.TextArea, {
609
607
  className: styles.textArea,
@@ -624,14 +622,19 @@ var XAdkSender = /*#__PURE__*/forwardRef(function (_ref, ref) {
624
622
  }
625
623
  })
626
624
  }), renderSlot(suffix, defaultSuffix)]
627
- })]
628
- }), renderSlot(footer, /*#__PURE__*/_jsx("div", {
629
- className: styles.tip,
630
- children: "\u5185\u5BB9\u7531AI\u751F\u6210,\u65E0\u6CD5\u786E\u4FDD\u771F\u5B9E\u51C6\u786E,\u4EC5\u4F9B\u53C2\u8003"
631
- }))]
625
+ }), renderSlot(footer, /*#__PURE__*/_jsx("div", {
626
+ className: styles.tip,
627
+ children: "\u5185\u5BB9\u7531AI\u751F\u6210,\u65E0\u6CD5\u786E\u4FDD\u771F\u5B9E\u51C6\u786E,\u4EC5\u4F9B\u53C2\u8003"
628
+ }))]
629
+ })
632
630
  })]
633
631
  });
634
632
  });
635
633
  XAdkSender.displayName = 'XAdkSender';
636
- export default XAdkSender;
634
+ import XAdkSenderSwitch from "./Switch";
635
+ import { jsx as _jsx } from "react/jsx-runtime";
636
+ import { jsxs as _jsxs } from "react/jsx-runtime";
637
+ var CompoundSender = XAdkSender;
638
+ CompoundSender.Switch = XAdkSenderSwitch;
639
+ export default CompoundSender;
637
640
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","useState","useRef","useCallback","forwardRef","useImperativeHandle","Popconfirm","message","Tooltip","Input","Modal","ClearOutlined","LoadingOutlined","ArrowUpOutlined","PaperClipOutlined","useStyles","FileGallery","getExt","jsx","_jsx","jsxs","_jsxs","XAdkSender","_ref","ref","_ref$clearBtnShow","clearBtnShow","_ref$allowUpload","allowUpload","_ref$draggable","draggable","_ref$loading","loading","_ref$disabled","disabled","_ref$uploadRequest","uploadRequest","onClear","onChange","onSubmit","onStop","onFilesChange","onUploadSuccess","onUploadError","_ref$maxFileSize","maxFileSize","_ref$validators","validators","customValidators","_ref$allowedFileTypes","allowedFileTypes","_ref$maxFiles","maxFiles","Infinity","suffix","header","prefix","footer","styles","_useState","_useState2","_slicedToArray","value","setValue","_useState3","_useState4","files","setFiles","_useState5","_useState6","isDragOver","setIsDragOver","containerRef","fileInputRef","generateId","Date","now","toString","Math","random","substr","normalizeUploadResponse","response","_response$data","_ref2","data","Array","isArray","checkFileType","file","length","ext","some","type","includes","endsWith","startsWith","split","slice","checkFileSize","maxSize","size","isDuplicateFile","f","name","builtInValidators","_file","_ref3","concat","_ref4","allValidators","_toConsumableArray","validateFile","_iterator","_createForOfIteratorHelper","_step","s","n","done","validator","error","valid","err","e","handleFileSelect","selectedFiles","fileArray","from","validFiles","forEach","validation","push","id","uid","progress","status","prev","next","uploadFiles","addFiles","rawFiles","_ref5","_asyncToGenerator","_regeneratorRuntime","mark","_callee","fileList","_iterator2","_step2","_loop","wrap","_callee$","_context2","localFile","_loop$","_context","map","_objectSpread","onProgress","percent","onSuccess","responseData","fileId","tempUrl","fileUrl","url","onError","errorMessage","t0","console","Error","stop","delegateYield","t1","finish","_x","apply","arguments","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","fileName","fileType","fileSize","mimeType","raw","handleInputChange","newValue","target","handleKeyDown","key","shiftKey","renderFileList","style","display","flexWrap","gap","padding","children","removable","onRemove","containerClass","container","uploading","isDisabled","SendButton","props","className","iconButton","sendButton","onClick","spin","UploadButton","uploadButton","ClearButton","onConfirm","placement","clearButton","actionsComponents","renderSlot","slot","oriNode","undefined","result","components","defaultSuffix","buttonGroup","onDragOver","onDragLeave","onDrop","multiple","accept","join","mainArea","senderWrap","inputAndButtons","textAreaWrapper","TextArea","textArea","onKeyDown","placeholder","autoSize","minRows","maxRows","border","boxShadow","outline","tip","displayName"],"sources":["../../../../src/components/XAdkSender/index.tsx"],"sourcesContent":["import React, { useState, useRef, useCallback, forwardRef, useImperativeHandle } from \"react\";\nimport { Popconfirm, message, Tooltip, Input, Modal } from \"antd\";\nimport {\n ClearOutlined,\n LoadingOutlined,\n ArrowUpOutlined,\n PaperClipOutlined,\n} from \"@ant-design/icons\";\nimport {\n XAdkSenderProps,\n XAdkSenderHandle,\n ServerFile,\n LocalFile,\n ActionsComponents,\n FileValidator,\n UploadFileResult,\n} from \"@/types\";\nimport { useStyles } from \"./styles\";\nimport FileGallery from \"../FileGallery\";\nimport { getExt } from \"@/utils/file\";\n\nconst XAdkSender = forwardRef<XAdkSenderHandle, XAdkSenderProps>(({\n clearBtnShow = true,\n allowUpload = false,\n draggable = true,\n loading = false,\n disabled = false,\n uploadRequest = () => {},\n onClear,\n onChange,\n onSubmit,\n onStop,\n onFilesChange,\n onUploadSuccess,\n onUploadError,\n maxFileSize = 10,\n validators: customValidators = [],\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 // ],\n allowedFileTypes = [],\n maxFiles = Infinity,\n suffix,\n header,\n prefix,\n footer,\n}, ref) => {\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\n // 生成唯一ID\n const generateId = () => {\n return Date.now().toString(36) + Math.random().toString(36).substr(2);\n };\n\n const normalizeUploadResponse = (response: any): UploadFileResult => {\n const data = response?.data ?? response;\n return (Array.isArray(data) ? data[0] : data) ?? {};\n };\n\n // 检查文件类型\n const checkFileType = (file: File): boolean => {\n if (allowedFileTypes?.length > 0) {\n const ext = getExt(file);\n\n return allowedFileTypes.some((type) => {\n // 1️⃣ MIME 校验\n if (type.includes(\"/\")) {\n if (type.endsWith(\"/*\")) {\n return file.type.startsWith(type.split(\"/\")[0]);\n }\n return file.type === type;\n }\n\n if (type.startsWith(\".\")) {\n return ext === type.slice(1);\n }\n\n return false;\n });\n }\n return true;\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 isDuplicateFile = (file: File, files: LocalFile[]) => {\n return files.some((f) => f.name === file.name && f.size === file.size);\n };\n\n // 内置校验器集合\n const builtInValidators: FileValidator[] = [\n // 数量校验(修复批量 bug)\n (_file, { files }) => {\n if (files.length >= maxFiles) {\n return `最多只能上传 ${maxFiles} 个文件`;\n }\n return null;\n },\n\n // 大小校验\n (file) => {\n const maxSize = maxFileSize * 1024 * 1024;\n if (file.size > maxSize) {\n return `文件大小不能超过 ${maxFileSize}MB`;\n }\n return null;\n },\n\n // 类型校验\n (file) => {\n if (!checkFileType(file)) {\n return \"不支持的文件类型\";\n }\n return null;\n },\n\n // ⭐ 新增:去重校验\n (file, { files }) => {\n if (isDuplicateFile(file, files)) {\n return \"文件已存在\";\n }\n return null;\n },\n ];\n\n const allValidators = [...builtInValidators, ...customValidators];\n\n // 验证文件\n const validateFile = (file: File): { valid: boolean; message?: string } => {\n for (const validator of allValidators) {\n const error = validator(file, { files });\n if (error) {\n return { valid: false, message: error };\n }\n }\n return { valid: true };\n };\n\n // 处理文件选择\n const handleFileSelect = useCallback(\n (selectedFiles: File[]) => {\n const fileArray = Array.from(selectedFiles);\n\n if (files.length + fileArray.length > maxFiles) {\n message.error(`最多只能上传 ${maxFiles} 个文件`);\n return;\n }\n\n const validFiles: LocalFile[] = [];\n\n fileArray.forEach((file) => {\n const validation = validateFile(file);\n\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) => {\n const next = [...prev, ...validFiles];\n onFilesChange?.(next);\n return next;\n });\n uploadFiles(validFiles);\n }\n },\n [files, maxFiles, maxFileSize, allowedFileTypes],\n );\n\n // 暴露 addFiles 方法供外层(如 DefaultLayout 拖拽上传)调用\n useImperativeHandle(ref, () => ({\n addFiles: (rawFiles: File[]) => {\n handleFileSelect(rawFiles);\n },\n }), [handleFileSelect]);\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 const responseData = normalizeUploadResponse(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 fileId: responseData.fileId || responseData.id,\n tempUrl:\n responseData.tempUrl ||\n responseData.fileUrl ||\n responseData.url,\n }\n : f,\n ),\n );\n\n onUploadSuccess?.({\n ...localFile,\n status: \"success\",\n response,\n fileId: responseData.fileId || responseData.id,\n tempUrl:\n responseData.tempUrl || responseData.fileUrl || responseData.url,\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 onUploadError?.(localFile, error);\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 handleRemoveFile = (id: string) => {\n setFiles((prev) => {\n const next = prev.filter((file) => file.id !== id);\n\n onFilesChange?.(next);\n\n return next;\n });\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)\n .map((file) => {\n const responseData = normalizeUploadResponse(file.response);\n\n return {\n fileName: responseData.fileName || file.name,\n fileId: responseData.fileId || responseData.id || \"\",\n tempUrl:\n responseData.tempUrl || responseData.fileUrl || responseData.url || \"\",\n type: responseData.fileType || responseData.type || getExt(file),\n size: responseData.fileSize || responseData.size || file.size,\n mimeType: responseData.mimeType || file.type,\n raw: {\n ...responseData,\n },\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 <div\n style={{\n display: \"flex\",\n flexWrap: \"wrap\",\n gap: \"8px\",\n padding: \"12px 0\",\n }}\n >\n {files.map((file) => (\n <FileGallery\n key={file.id}\n file={file}\n removable\n onRemove={handleRemoveFile}\n />\n ))}\n </div>\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 // 定义按钮组件(供外部 slot 函数通过 actionsComponents 使用)\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 spin /> : <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 // 默认的后缀内容(操作按钮组) - 直接内联渲染避免组件引用变化导致 unmount/remount\n const defaultSuffix = (\n <div className={styles.buttonGroup}>\n {allowUpload && (\n <Tooltip title=\"上传文件\">\n <button\n className={`${styles.iconButton} ${styles.uploadButton}`}\n onClick={triggerFileSelect}\n disabled={isDisabled}\n aria-label=\"上传文件\"\n >\n <PaperClipOutlined />\n </button>\n </Tooltip>\n )}\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 >\n {loading ? <LoadingOutlined spin /> : <ArrowUpOutlined />}\n </button>\n </Tooltip>\n </div>\n );\n\n return (\n <div\n ref={containerRef}\n className={containerClass}\n onDragOver={allowUpload && draggable ? handleDragOver : undefined}\n onDragLeave={allowUpload && draggable ? handleDragLeave : undefined}\n onDrop={allowUpload && draggable ? 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\nXAdkSender.displayName = 'XAdkSender';\n\nexport default XAdkSender;\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","useState","useRef","useCallback","forwardRef","useImperativeHandle","Popconfirm","message","Tooltip","Input","Modal","ClearOutlined","LoadingOutlined","ArrowUpOutlined","PaperClipOutlined","useStyles","FileGallery","getExt","XAdkSender","_ref","ref","_ref$clearBtnShow","clearBtnShow","_ref$allowUpload","allowUpload","_ref$draggable","draggable","_ref$loading","loading","_ref$disabled","disabled","_ref$uploadRequest","uploadRequest","onClear","onChange","onSubmit","onStop","onFilesChange","onUploadSuccess","onUploadError","_ref$maxFileSize","maxFileSize","_ref$validators","validators","customValidators","_ref$allowedFileTypes","allowedFileTypes","_ref$maxFiles","maxFiles","Infinity","suffix","header","prefix","footer","styles","_useState","_useState2","_slicedToArray","value","setValue","_useState3","_useState4","files","setFiles","_useState5","_useState6","isDragOver","setIsDragOver","containerRef","fileInputRef","generateId","Date","now","toString","Math","random","substr","normalizeUploadResponse","response","_response$data","_ref2","data","Array","isArray","checkFileType","file","length","ext","some","type","includes","endsWith","startsWith","split","slice","checkFileSize","maxSize","size","isDuplicateFile","f","name","builtInValidators","_file","_ref3","concat","_ref4","allValidators","_toConsumableArray","validateFile","_iterator","_createForOfIteratorHelper","_step","s","n","done","validator","error","valid","err","e","handleFileSelect","selectedFiles","fileArray","from","validFiles","forEach","validation","push","id","uid","progress","status","prev","next","uploadFiles","addFiles","rawFiles","_ref5","_asyncToGenerator","_regeneratorRuntime","mark","_callee","fileList","_iterator2","_step2","_loop","wrap","_callee$","_context2","localFile","_loop$","_context","map","_objectSpread","onProgress","percent","onSuccess","responseData","fileId","tempUrl","fileUrl","url","onError","errorMessage","t0","console","Error","stop","delegateYield","t1","finish","_x","apply","arguments","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","fileName","fileType","fileSize","mimeType","raw","handleInputChange","newValue","target","handleKeyDown","key","shiftKey","renderFileList","_jsx","style","display","flexWrap","gap","padding","children","removable","onRemove","containerClass","container","uploading","isDisabled","SendButton","props","className","iconButton","sendButton","onClick","spin","UploadButton","uploadButton","ClearButton","onConfirm","placement","clearButton","actionsComponents","renderSlot","slot","oriNode","undefined","result","components","defaultSuffix","_jsxs","buttonGroup","onDragOver","onDragLeave","onDrop","multiple","accept","join","mainArea","senderWrap","inputAndButtons","textAreaWrapper","TextArea","textArea","onKeyDown","placeholder","autoSize","minRows","maxRows","border","boxShadow","outline","tip","displayName","XAdkSenderSwitch","jsx","jsxs","CompoundSender","Switch"],"sources":["../../../../src/components/XAdkSender/index.tsx"],"sourcesContent":["import React, { useState, useRef, useCallback, forwardRef, useImperativeHandle } from \"react\";\nimport { Popconfirm, message, Tooltip, Input, Modal } from \"antd\";\nimport {\n ClearOutlined,\n LoadingOutlined,\n ArrowUpOutlined,\n PaperClipOutlined,\n} from \"@ant-design/icons\";\nimport {\n XAdkSenderProps,\n XAdkSenderHandle,\n ServerFile,\n LocalFile,\n ActionsComponents,\n FileValidator,\n UploadFileResult,\n} from \"@/types\";\nimport { useStyles } from \"./styles\";\nimport FileGallery from \"../FileGallery\";\nimport { getExt } from \"@/utils/file\";\n\nconst XAdkSender = forwardRef<XAdkSenderHandle, XAdkSenderProps>(({\n clearBtnShow = true,\n allowUpload = false,\n draggable = true,\n loading = false,\n disabled = false,\n uploadRequest = () => {},\n onClear,\n onChange,\n onSubmit,\n onStop,\n onFilesChange,\n onUploadSuccess,\n onUploadError,\n maxFileSize = 10,\n validators: customValidators = [],\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 // ],\n allowedFileTypes = [],\n maxFiles = Infinity,\n suffix,\n header,\n prefix,\n footer,\n}, ref) => {\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\n // 生成唯一ID\n const generateId = () => {\n return Date.now().toString(36) + Math.random().toString(36).substr(2);\n };\n\n const normalizeUploadResponse = (response: any): UploadFileResult => {\n const data = response?.data ?? response;\n return (Array.isArray(data) ? data[0] : data) ?? {};\n };\n\n // 检查文件类型\n const checkFileType = (file: File): boolean => {\n if (allowedFileTypes?.length > 0) {\n const ext = getExt(file);\n\n return allowedFileTypes.some((type) => {\n // 1️⃣ MIME 校验\n if (type.includes(\"/\")) {\n if (type.endsWith(\"/*\")) {\n return file.type.startsWith(type.split(\"/\")[0]);\n }\n return file.type === type;\n }\n\n if (type.startsWith(\".\")) {\n return ext === type.slice(1);\n }\n\n return false;\n });\n }\n return true;\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 isDuplicateFile = (file: File, files: LocalFile[]) => {\n return files.some((f) => f.name === file.name && f.size === file.size);\n };\n\n // 内置校验器集合\n const builtInValidators: FileValidator[] = [\n // 数量校验(修复批量 bug)\n (_file, { files }) => {\n if (files.length >= maxFiles) {\n return `最多只能上传 ${maxFiles} 个文件`;\n }\n return null;\n },\n\n // 大小校验\n (file) => {\n const maxSize = maxFileSize * 1024 * 1024;\n if (file.size > maxSize) {\n return `文件大小不能超过 ${maxFileSize}MB`;\n }\n return null;\n },\n\n // 类型校验\n (file) => {\n if (!checkFileType(file)) {\n return \"不支持的文件类型\";\n }\n return null;\n },\n\n // ⭐ 新增:去重校验\n (file, { files }) => {\n if (isDuplicateFile(file, files)) {\n return \"文件已存在\";\n }\n return null;\n },\n ];\n\n const allValidators = [...builtInValidators, ...customValidators];\n\n // 验证文件\n const validateFile = (file: File): { valid: boolean; message?: string } => {\n for (const validator of allValidators) {\n const error = validator(file, { files });\n if (error) {\n return { valid: false, message: error };\n }\n }\n return { valid: true };\n };\n\n // 处理文件选择\n const handleFileSelect = useCallback(\n (selectedFiles: File[]) => {\n const fileArray = Array.from(selectedFiles);\n\n if (files.length + fileArray.length > maxFiles) {\n message.error(`最多只能上传 ${maxFiles} 个文件`);\n return;\n }\n\n const validFiles: LocalFile[] = [];\n\n fileArray.forEach((file) => {\n const validation = validateFile(file);\n\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) => {\n const next = [...prev, ...validFiles];\n onFilesChange?.(next);\n return next;\n });\n uploadFiles(validFiles);\n }\n },\n [files, maxFiles, maxFileSize, allowedFileTypes],\n );\n\n // 暴露 addFiles 方法供外层(如 DefaultLayout 拖拽上传)调用\n useImperativeHandle(ref, () => ({\n addFiles: (rawFiles: File[]) => {\n handleFileSelect(rawFiles);\n },\n }), [handleFileSelect]);\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 const responseData = normalizeUploadResponse(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 fileId: responseData.fileId || responseData.id,\n tempUrl:\n responseData.tempUrl ||\n responseData.fileUrl ||\n responseData.url,\n }\n : f,\n ),\n );\n\n onUploadSuccess?.({\n ...localFile,\n status: \"success\",\n response,\n fileId: responseData.fileId || responseData.id,\n tempUrl:\n responseData.tempUrl || responseData.fileUrl || responseData.url,\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 onUploadError?.(localFile, error);\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 handleRemoveFile = (id: string) => {\n setFiles((prev) => {\n const next = prev.filter((file) => file.id !== id);\n\n onFilesChange?.(next);\n\n return next;\n });\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)\n .map((file) => {\n const responseData = normalizeUploadResponse(file.response);\n\n return {\n fileName: responseData.fileName || file.name,\n fileId: responseData.fileId || responseData.id || \"\",\n tempUrl:\n responseData.tempUrl || responseData.fileUrl || responseData.url || \"\",\n type: responseData.fileType || responseData.type || getExt(file),\n size: responseData.fileSize || responseData.size || file.size,\n mimeType: responseData.mimeType || file.type,\n raw: {\n ...responseData,\n },\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 <div\n style={{\n display: \"flex\",\n flexWrap: \"wrap\",\n gap: \"8px\",\n padding: \"12px 0\",\n }}\n >\n {files.map((file) => (\n <FileGallery\n key={file.id}\n file={file}\n removable\n onRemove={handleRemoveFile}\n />\n ))}\n </div>\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 // 定义按钮组件(供外部 slot 函数通过 actionsComponents 使用)\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 spin /> : <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 // 默认的后缀内容(操作按钮组) - 直接内联渲染避免组件引用变化导致 unmount/remount\n const defaultSuffix = (\n <div className={styles.buttonGroup}>\n {allowUpload && (\n <Tooltip title=\"上传文件\">\n <button\n className={`${styles.iconButton} ${styles.uploadButton}`}\n onClick={triggerFileSelect}\n disabled={isDisabled}\n aria-label=\"上传文件\"\n >\n <PaperClipOutlined />\n </button>\n </Tooltip>\n )}\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 >\n {loading ? <LoadingOutlined spin /> : <ArrowUpOutlined />}\n </button>\n </Tooltip>\n </div>\n );\n\n return (\n <div\n ref={containerRef}\n className={containerClass}\n onDragOver={allowUpload && draggable ? handleDragOver : undefined}\n onDragLeave={allowUpload && draggable ? handleDragLeave : undefined}\n onDrop={allowUpload && draggable ? 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 <div className={styles.inputAndButtons}>\n {/* 清除按钮 */}\n {clearBtnShow && <ClearButton />}\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\n {/* 底部插槽(默认显示提示文字) */}\n {renderSlot(\n footer,\n <div className={styles.tip}>\n 内容由AI生成,无法确保真实准确,仅供参考\n </div>,\n )}\n </div>\n </div>\n </div>\n );\n});\n\nXAdkSender.displayName = 'XAdkSender';\n\nimport XAdkSenderSwitch from \"./Switch\";\n\ntype XAdkSenderComponent = typeof XAdkSender & {\n Switch: typeof XAdkSenderSwitch;\n};\n\nconst CompoundSender = XAdkSender as XAdkSenderComponent;\nCompoundSender.Switch = XAdkSenderSwitch;\n\nexport default CompoundSender;\n"],"mappings":"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"}
@@ -5,11 +5,11 @@ import { withBasicStyles } from "../../styles/common";
5
5
  export var useStyles = withBasicStyles(function () {
6
6
  return {
7
7
  // 容器样式 - 最外层边框
8
- container: css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n background: #fff;\n position: relative;\n overflow: hidden;\n padding: 10px 15px;\n overflow: visible;\n border: 2px solid transparent;\n transition: all 0.3s ease;\n\n &.drag-over {\n border: 2px dashed #000;\n background: rgba(0, 0, 0, 0.02);\n }\n "]))),
8
+ container: css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n position: relative;\n overflow: hidden;\n padding: 10px 15px;\n overflow: visible;\n border: 2px solid transparent;\n transition: all 0.3s ease;\n\n &.drag-over {\n border: 2px dashed #000;\n background: rgba(0, 0, 0, 0.02);\n }\n "]))),
9
9
  // 主内容区域
10
- mainArea: css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n //\n "]))),
10
+ mainArea: css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n background: #fff;\n border-radius: 20px;\n overflow: hidden;\n "]))),
11
11
  // 发送区域
12
- senderWrap: css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n gap: 12px;\n background: var(--yb-input-bg-color);\n border: 0.5px solid var(--widget-line, rgba(0, 0, 0, 0.08));\n border-radius: 20px;\n box-sizing: border-box;\n caret-color: var(--yb-input-caret-color);\n flex: auto;\n font-size: 14px;\n gap: 6px;\n line-height: 22px;\n padding: 7px 12px 7px 7px;\n position: relative;\n transition-duration: 0.2s;\n transition-property:\n color, background-color, border-color, text-decoration-color, fill,\n stroke, box-shadow;\n transition-timing-function: linear;\n box-shadow: 0 6px 30px 0 rgba(0, 0, 0, 0.08);\n "]))),
12
+ senderWrap: css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n display: flex;\n flex-direction: column;\n gap: 6px;\n background: var(--yb-input-bg-color);\n border: 0.5px solid var(--widget-line, rgba(0, 0, 0, 0.08));\n border-radius: 20px;\n box-sizing: border-box;\n caret-color: var(--yb-input-caret-color);\n flex: auto;\n font-size: 14px;\n line-height: 22px;\n padding: 7px 12px;\n position: relative;\n transition-duration: 0.2s;\n transition-property:\n color, background-color, border-color, text-decoration-color, fill,\n stroke, box-shadow;\n transition-timing-function: linear;\n box-shadow: 0 6px 30px 0 rgba(0, 0, 0, 0.08);\n "]))),
13
13
  // 输入框和按钮容器
14
14
  inputAndButtons: css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n flex: 1;\n display: flex;\n align-items: flex-end;\n gap: 8px;\n "]))),
15
15
  // 文本输入框容器
@@ -1 +1 @@
1
- {"version":3,"names":["css","withBasicStyles","useStyles","container","_templateObject","_taggedTemplateLiteral","mainArea","_templateObject2","senderWrap","_templateObject3","inputAndButtons","_templateObject4","textAreaWrapper","_templateObject5","textArea","_templateObject6","buttonGroup","_templateObject7","iconButton","_templateObject8","clearButton","_templateObject9","uploadButton","_templateObject10","sendButton","_templateObject11","tip","_templateObject12"],"sources":["../../../../src/components/XAdkSender/styles.tsx"],"sourcesContent":["import { css } from \"@emotion/css\";\nimport { withBasicStyles } from \"@/styles/common\";\n\nexport const useStyles = withBasicStyles(() => ({\n // 容器样式 - 最外层边框\n container: css`\n background: #fff;\n position: relative;\n overflow: hidden;\n padding: 10px 15px;\n overflow: visible;\n border: 2px solid transparent;\n transition: all 0.3s ease;\n\n &.drag-over {\n border: 2px dashed #000;\n background: rgba(0, 0, 0, 0.02);\n }\n `,\n\n\n // 主内容区域\n mainArea: css`\n //\n `,\n\n // 发送区域\n senderWrap: css`\n display: flex;\n align-items: center;\n gap: 12px;\n background: var(--yb-input-bg-color);\n border: 0.5px solid var(--widget-line, rgba(0, 0, 0, 0.08));\n border-radius: 20px;\n box-sizing: border-box;\n caret-color: var(--yb-input-caret-color);\n flex: auto;\n font-size: 14px;\n gap: 6px;\n line-height: 22px;\n padding: 7px 12px 7px 7px;\n position: relative;\n transition-duration: 0.2s;\n transition-property:\n color, background-color, border-color, text-decoration-color, fill,\n stroke, box-shadow;\n transition-timing-function: linear;\n box-shadow: 0 6px 30px 0 rgba(0, 0, 0, 0.08);\n `,\n\n // 输入框和按钮容器\n inputAndButtons: css`\n flex: 1;\n display: flex;\n align-items: flex-end;\n gap: 8px;\n `,\n\n // 文本输入框容器\n textAreaWrapper: css`\n flex: 1;\n display: flex;\n align-items: center;\n background: #fff;\n padding: 0 16px;\n min-height: 44px;\n\n /* 移除所有蓝色效果 */\n &:focus-within {\n border-color: #d9d9d9;\n box-shadow: none;\n }\n\n .ant-input:disabled {\n background: transparent !important;\n }\n\n &::placeholder {\n color: #bfbfbf;\n }\n `,\n\n // 文本输入框\n textArea: css`\n flex: 1;\n border: none;\n background: transparent;\n font-size: 14px;\n line-height: 1.5;\n padding: 12px 0;\n outline: none;\n color: #262626;\n `,\n\n // 按钮组\n buttonGroup: css`\n display: flex;\n gap: 8px;\n align-items: center;\n height: 44px;\n `,\n\n // 按钮统一样式\n iconButton: css`\n width: 36px;\n height: 36px;\n min-width: 36px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s ease;\n\n &:hover {\n transform: translateY(-1px);\n }\n\n &:active {\n transform: translateY(0);\n }\n `,\n\n // 清空按钮\n clearButton: css`\n border: 1px solid #f0f0f0;\n background: #fff;\n color: #8c8c8c;\n\n &:hover {\n border-color: #d9d9d9;\n color: #262626;\n background: #fafafa;\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n `,\n\n // 上传按钮\n uploadButton: css`\n border: 1px solid #f0f0f0;\n background: #fff;\n\n &:hover {\n //\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n border-color: #f0f0f0;\n background: #fafafa;\n }\n `,\n\n // 发送按钮\n sendButton: css`\n background: #000;\n border: none;\n color: #fff;\n\n &:hover:not(:disabled) {\n background: #333; /* 悬停状态 */\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n background: #cccccc;\n color: #fff;\n }\n\n &.stop {\n //\n\n &:hover:not(:disabled) {\n //\n }\n\n &:disabled {\n background: #cccccc; /* 禁用状态也保持淡灰色 */\n }\n }\n `,\n\n // 底部提示\n tip: css`\n margin: 12px 0;\n text-align: center;\n font-size: 12px;\n color: #8c8c8c;\n `,\n}));\n"],"mappings":";;AAAA,SAASA,GAAG,QAAQ,cAAc;AAClC,SAASC,eAAe;AAExB,OAAO,IAAMC,SAAS,GAAGD,eAAe,CAAC;EAAA,OAAO;IAC9C;IACAE,SAAS,EAAEH,GAAG,CAAAI,eAAA,KAAAA,eAAA,GAAAC,sBAAA,4SAab;IAGD;IACAC,QAAQ,EAAEN,GAAG,CAAAO,gBAAA,KAAAA,gBAAA,GAAAF,sBAAA,oBAEZ;IAED;IACAG,UAAU,EAAER,GAAG,CAAAS,gBAAA,KAAAA,gBAAA,GAAAJ,sBAAA,gqBAqBd;IAED;IACAK,eAAe,EAAEV,GAAG,CAAAW,gBAAA,KAAAA,gBAAA,GAAAN,sBAAA,yFAKnB;IAED;IACAO,eAAe,EAAEZ,GAAG,CAAAa,gBAAA,KAAAA,gBAAA,GAAAR,sBAAA,maAqBnB;IAED;IACAS,QAAQ,EAAEd,GAAG,CAAAe,gBAAA,KAAAA,gBAAA,GAAAV,sBAAA,uLASZ;IAED;IACAW,WAAW,EAAEhB,GAAG,CAAAiB,gBAAA,KAAAA,gBAAA,GAAAZ,sBAAA,4FAKf;IAED;IACAa,UAAU,EAAElB,GAAG,CAAAmB,gBAAA,KAAAA,gBAAA,GAAAd,sBAAA,kUAiBd;IAED;IACAe,WAAW,EAAEpB,GAAG,CAAAqB,gBAAA,KAAAA,gBAAA,GAAAhB,sBAAA,6QAef;IAED;IACAiB,YAAY,EAAEtB,GAAG,CAAAuB,iBAAA,KAAAA,iBAAA,GAAAlB,sBAAA,2OAchB;IAED;IACAmB,UAAU,EAAExB,GAAG,CAAAyB,iBAAA,KAAAA,iBAAA,GAAApB,sBAAA,2fA2Bd;IAED;IACAqB,GAAG,EAAE1B,GAAG,CAAA2B,iBAAA,KAAAA,iBAAA,GAAAtB,sBAAA;EAMV,CAAC;AAAA,CAAC,CAAC"}
1
+ {"version":3,"names":["css","withBasicStyles","useStyles","container","_templateObject","_taggedTemplateLiteral","mainArea","_templateObject2","senderWrap","_templateObject3","inputAndButtons","_templateObject4","textAreaWrapper","_templateObject5","textArea","_templateObject6","buttonGroup","_templateObject7","iconButton","_templateObject8","clearButton","_templateObject9","uploadButton","_templateObject10","sendButton","_templateObject11","tip","_templateObject12"],"sources":["../../../../src/components/XAdkSender/styles.tsx"],"sourcesContent":["import { css } from \"@emotion/css\";\nimport { withBasicStyles } from \"@/styles/common\";\n\nexport const useStyles = withBasicStyles(() => ({\n // 容器样式 - 最外层边框\n container: css`\n position: relative;\n overflow: hidden;\n padding: 10px 15px;\n overflow: visible;\n border: 2px solid transparent;\n transition: all 0.3s ease;\n\n &.drag-over {\n border: 2px dashed #000;\n background: rgba(0, 0, 0, 0.02);\n }\n `,\n\n // 主内容区域\n mainArea: css`\n background: #fff;\n border-radius: 20px;\n overflow: hidden;\n `,\n\n // 发送区域\n senderWrap: css`\n display: flex;\n flex-direction: column;\n gap: 6px;\n background: var(--yb-input-bg-color);\n border: 0.5px solid var(--widget-line, rgba(0, 0, 0, 0.08));\n border-radius: 20px;\n box-sizing: border-box;\n caret-color: var(--yb-input-caret-color);\n flex: auto;\n font-size: 14px;\n line-height: 22px;\n padding: 7px 12px;\n position: relative;\n transition-duration: 0.2s;\n transition-property:\n color, background-color, border-color, text-decoration-color, fill,\n stroke, box-shadow;\n transition-timing-function: linear;\n box-shadow: 0 6px 30px 0 rgba(0, 0, 0, 0.08);\n `,\n\n // 输入框和按钮容器\n inputAndButtons: css`\n flex: 1;\n display: flex;\n align-items: flex-end;\n gap: 8px;\n `,\n\n // 文本输入框容器\n textAreaWrapper: css`\n flex: 1;\n display: flex;\n align-items: center;\n background: #fff;\n padding: 0 16px;\n min-height: 44px;\n\n /* 移除所有蓝色效果 */\n &:focus-within {\n border-color: #d9d9d9;\n box-shadow: none;\n }\n\n .ant-input:disabled {\n background: transparent !important;\n }\n\n &::placeholder {\n color: #bfbfbf;\n }\n `,\n\n // 文本输入框\n textArea: css`\n flex: 1;\n border: none;\n background: transparent;\n font-size: 14px;\n line-height: 1.5;\n padding: 12px 0;\n outline: none;\n color: #262626;\n `,\n\n // 按钮组\n buttonGroup: css`\n display: flex;\n gap: 8px;\n align-items: center;\n height: 44px;\n `,\n\n // 按钮统一样式\n iconButton: css`\n width: 36px;\n height: 36px;\n min-width: 36px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s ease;\n\n &:hover {\n transform: translateY(-1px);\n }\n\n &:active {\n transform: translateY(0);\n }\n `,\n\n // 清空按钮\n clearButton: css`\n border: 1px solid #f0f0f0;\n background: #fff;\n color: #8c8c8c;\n\n &:hover {\n border-color: #d9d9d9;\n color: #262626;\n background: #fafafa;\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n `,\n\n // 上传按钮\n uploadButton: css`\n border: 1px solid #f0f0f0;\n background: #fff;\n\n &:hover {\n //\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n border-color: #f0f0f0;\n background: #fafafa;\n }\n `,\n\n // 发送按钮\n sendButton: css`\n background: #000;\n border: none;\n color: #fff;\n\n &:hover:not(:disabled) {\n background: #333; /* 悬停状态 */\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n background: #cccccc;\n color: #fff;\n }\n\n &.stop {\n //\n\n &:hover:not(:disabled) {\n //\n }\n\n &:disabled {\n background: #cccccc; /* 禁用状态也保持淡灰色 */\n }\n }\n `,\n\n // 底部提示\n tip: css`\n margin: 12px 0;\n text-align: center;\n font-size: 12px;\n color: #8c8c8c;\n `,\n}));\n"],"mappings":";;AAAA,SAASA,GAAG,QAAQ,cAAc;AAClC,SAASC,eAAe;AAExB,OAAO,IAAMC,SAAS,GAAGD,eAAe,CAAC;EAAA,OAAO;IAC9C;IACAE,SAAS,EAAEH,GAAG,CAAAI,eAAA,KAAAA,eAAA,GAAAC,sBAAA,qRAYb;IAED;IACAC,QAAQ,EAAEN,GAAG,CAAAO,gBAAA,KAAAA,gBAAA,GAAAF,sBAAA,oFAIZ;IAED;IACAG,UAAU,EAAER,GAAG,CAAAS,gBAAA,KAAAA,gBAAA,GAAAJ,sBAAA,2oBAoBd;IAED;IACAK,eAAe,EAAEV,GAAG,CAAAW,gBAAA,KAAAA,gBAAA,GAAAN,sBAAA,yFAKnB;IAED;IACAO,eAAe,EAAEZ,GAAG,CAAAa,gBAAA,KAAAA,gBAAA,GAAAR,sBAAA,maAqBnB;IAED;IACAS,QAAQ,EAAEd,GAAG,CAAAe,gBAAA,KAAAA,gBAAA,GAAAV,sBAAA,uLASZ;IAED;IACAW,WAAW,EAAEhB,GAAG,CAAAiB,gBAAA,KAAAA,gBAAA,GAAAZ,sBAAA,4FAKf;IAED;IACAa,UAAU,EAAElB,GAAG,CAAAmB,gBAAA,KAAAA,gBAAA,GAAAd,sBAAA,kUAiBd;IAED;IACAe,WAAW,EAAEpB,GAAG,CAAAqB,gBAAA,KAAAA,gBAAA,GAAAhB,sBAAA,6QAef;IAED;IACAiB,YAAY,EAAEtB,GAAG,CAAAuB,iBAAA,KAAAA,iBAAA,GAAAlB,sBAAA,2OAchB;IAED;IACAmB,UAAU,EAAExB,GAAG,CAAAyB,iBAAA,KAAAA,iBAAA,GAAApB,sBAAA,2fA2Bd;IAED;IACAqB,GAAG,EAAE1B,GAAG,CAAA2B,iBAAA,KAAAA,iBAAA,GAAAtB,sBAAA;EAMV,CAAC;AAAA,CAAC,CAAC"}
@@ -11,13 +11,14 @@ import request from "./utils/request";
11
11
  import XAdkProvider from "./components/XAdkProvider";
12
12
  import XAdkChatbot from "./components/XAdkChatbot";
13
13
  import XAdkSender from "./components/XAdkSender";
14
+ import XAdkSenderSwitch from "./components/XAdkSender/Switch";
14
15
  import useADKChat from "./hooks/useADKChat";
15
16
  import { baseChatStrategies, basePreset, baseToolKindResolver, mergeChatStrategies, resolvePresetUploadRequest, resolveChatPreset, createXGroupUploadRequest, xGroupAdkPreset, xGroupToolKindResolver } from "./presets/xGroupAdk";
16
17
  export { useChatState, useChatActions, useSession, } from "./components/XAdkProvider/context";
17
18
  export * from "./types";
18
19
  export type { ChatHookResult, ChatHookFactory } from "./types/ChatHook";
19
20
  export { useXAi, XAiProvider, XAiChatbot, XAiSDK, XAiSender, XAiConversations, useXAiSDK, request, };
20
- export { XAdkProvider, XAdkChatbot, XAdkSender, FileGallery, XAdkThoughtChain, useADKChat, baseChatStrategies, basePreset, baseToolKindResolver, createXGroupUploadRequest, mergeChatStrategies, resolvePresetUploadRequest, resolveChatPreset, xGroupAdkPreset, xGroupToolKindResolver, };
21
+ export { XAdkProvider, XAdkChatbot, XAdkSender, XAdkSenderSwitch, FileGallery, XAdkThoughtChain, useADKChat, baseChatStrategies, basePreset, baseToolKindResolver, createXGroupUploadRequest, mergeChatStrategies, resolvePresetUploadRequest, resolveChatPreset, xGroupAdkPreset, xGroupToolKindResolver, };
21
22
  export { default as MarkdownRender } from "./components/XAdkChatbot/components/MarkdownRender";
22
23
  export { default as FunctionCallRender } from "./components/XAdkChatbot/components/FunctionCallRender";
23
24
  export { default as ThinkRender } from "./components/XAdkChatbot/components/ThinkRender";
package/dist/esm/index.js CHANGED
@@ -14,6 +14,7 @@ import request from "./utils/request";
14
14
  import XAdkProvider from "./components/XAdkProvider";
15
15
  import XAdkChatbot from "./components/XAdkChatbot";
16
16
  import XAdkSender from "./components/XAdkSender";
17
+ import XAdkSenderSwitch from "./components/XAdkSender/Switch";
17
18
  import useADKChat from "./hooks/useADKChat";
18
19
  import { baseChatStrategies, basePreset, baseToolKindResolver, mergeChatStrategies, resolvePresetUploadRequest, resolveChatPreset, createXGroupUploadRequest, xGroupAdkPreset, xGroupToolKindResolver } from "./presets/xGroupAdk";
19
20
 
@@ -27,7 +28,7 @@ export * from "./types";
27
28
  export { useXAi, XAiProvider, XAiChatbot, XAiSDK, XAiSender, XAiConversations, useXAiSDK, request };
28
29
 
29
30
  // 新 API - 推荐使用
30
- export { XAdkProvider, XAdkChatbot, XAdkSender, FileGallery, XAdkThoughtChain, useADKChat, baseChatStrategies, basePreset, baseToolKindResolver, createXGroupUploadRequest, mergeChatStrategies, resolvePresetUploadRequest, resolveChatPreset, xGroupAdkPreset, xGroupToolKindResolver };
31
+ export { XAdkProvider, XAdkChatbot, XAdkSender, XAdkSenderSwitch, FileGallery, XAdkThoughtChain, useADKChat, baseChatStrategies, basePreset, baseToolKindResolver, createXGroupUploadRequest, mergeChatStrategies, resolvePresetUploadRequest, resolveChatPreset, xGroupAdkPreset, xGroupToolKindResolver };
31
32
 
32
33
  // 基础组件导出 - 供高级用户和业务侧使用
33
34
  export { default as MarkdownRender } from "./components/XAdkChatbot/components/MarkdownRender";
@@ -1 +1 @@
1
- {"version":3,"names":["useXAi","XAiProvider","XAiChatbot","XAiSDK","XAiSender","FileGallery","XAiConversations","XAdkThoughtChain","useXAiSDK","request","XAdkProvider","XAdkChatbot","XAdkSender","useADKChat","baseChatStrategies","basePreset","baseToolKindResolver","mergeChatStrategies","resolvePresetUploadRequest","resolveChatPreset","createXGroupUploadRequest","xGroupAdkPreset","xGroupToolKindResolver","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 XAdkThoughtChain from \"./components/XAdkThoughtChain\";\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\";\nimport {\n baseChatStrategies,\n basePreset,\n baseToolKindResolver,\n mergeChatStrategies,\n resolvePresetUploadRequest,\n resolveChatPreset,\n createXGroupUploadRequest,\n xGroupAdkPreset,\n xGroupToolKindResolver,\n} from \"./presets/xGroupAdk\";\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 XAdkThoughtChain,\n useADKChat,\n baseChatStrategies,\n basePreset,\n baseToolKindResolver,\n createXGroupUploadRequest,\n mergeChatStrategies,\n resolvePresetUploadRequest,\n resolveChatPreset,\n xGroupAdkPreset,\n xGroupToolKindResolver,\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 \"./types/FunctionCallRender\";\nexport type {\n XAdkThoughtChainProps,\n ThoughtChainItemType,\n} from \"./types/XAdkThoughtChain\";\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,gBAAgB;AACvB,OAAOC,SAAS;AAChB,OAAOC,OAAO;;AAEd;AACA,OAAOC,YAAY;AACnB,OAAOC,WAAW;AAClB,OAAOC,UAAU;AACjB,OAAOC,UAAU;AACjB,SACEC,kBAAkB,EAClBC,UAAU,EACVC,oBAAoB,EACpBC,mBAAmB,EACnBC,0BAA0B,EAC1BC,iBAAiB,EACjBC,yBAAyB,EACzBC,eAAe,EACfC,sBAAsB;;AAGxB;AACA,SACEC,YAAY,EACZC,cAAc,EACdC,UAAU;AAGZ;;AAEA;;AAGA;AACA,SACEzB,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,gBAAgB,EAChBM,UAAU,EACVC,kBAAkB,EAClBC,UAAU,EACVC,oBAAoB,EACpBI,yBAAyB,EACzBH,mBAAmB,EACnBC,0BAA0B,EAC1BC,iBAAiB,EACjBE,eAAe,EACfC,sBAAsB;;AAGxB;AACA,SAASI,OAAO,IAAIC,cAAc;AAClC,SAASD,OAAO,IAAIE,kBAAkB;AACtC,SAASF,OAAO,IAAIG,WAAW;;AAE/B"}
1
+ {"version":3,"names":["useXAi","XAiProvider","XAiChatbot","XAiSDK","XAiSender","FileGallery","XAiConversations","XAdkThoughtChain","useXAiSDK","request","XAdkProvider","XAdkChatbot","XAdkSender","XAdkSenderSwitch","useADKChat","baseChatStrategies","basePreset","baseToolKindResolver","mergeChatStrategies","resolvePresetUploadRequest","resolveChatPreset","createXGroupUploadRequest","xGroupAdkPreset","xGroupToolKindResolver","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 XAdkThoughtChain from \"./components/XAdkThoughtChain\";\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 XAdkSenderSwitch from \"./components/XAdkSender/Switch\";\nimport useADKChat from \"./hooks/useADKChat\";\nimport {\n baseChatStrategies,\n basePreset,\n baseToolKindResolver,\n mergeChatStrategies,\n resolvePresetUploadRequest,\n resolveChatPreset,\n createXGroupUploadRequest,\n xGroupAdkPreset,\n xGroupToolKindResolver,\n} from \"./presets/xGroupAdk\";\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 XAdkSenderSwitch,\n FileGallery,\n XAdkThoughtChain,\n useADKChat,\n baseChatStrategies,\n basePreset,\n baseToolKindResolver,\n createXGroupUploadRequest,\n mergeChatStrategies,\n resolvePresetUploadRequest,\n resolveChatPreset,\n xGroupAdkPreset,\n xGroupToolKindResolver,\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 \"./types/FunctionCallRender\";\nexport type {\n XAdkThoughtChainProps,\n ThoughtChainItemType,\n} from \"./types/XAdkThoughtChain\";\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,gBAAgB;AACvB,OAAOC,SAAS;AAChB,OAAOC,OAAO;;AAEd;AACA,OAAOC,YAAY;AACnB,OAAOC,WAAW;AAClB,OAAOC,UAAU;AACjB,OAAOC,gBAAgB;AACvB,OAAOC,UAAU;AACjB,SACEC,kBAAkB,EAClBC,UAAU,EACVC,oBAAoB,EACpBC,mBAAmB,EACnBC,0BAA0B,EAC1BC,iBAAiB,EACjBC,yBAAyB,EACzBC,eAAe,EACfC,sBAAsB;;AAGxB;AACA,SACEC,YAAY,EACZC,cAAc,EACdC,UAAU;AAGZ;;AAEA;;AAGA;AACA,SACE1B,MAAM,EACNC,WAAW,EACXC,UAAU,EACVC,MAAM,EACNC,SAAS,EACTE,gBAAgB,EAChBE,SAAS,EACTC,OAAO;;AAGT;AACA,SACEC,YAAY,EACZC,WAAW,EACXC,UAAU,EACVC,gBAAgB,EAChBR,WAAW,EACXE,gBAAgB,EAChBO,UAAU,EACVC,kBAAkB,EAClBC,UAAU,EACVC,oBAAoB,EACpBI,yBAAyB,EACzBH,mBAAmB,EACnBC,0BAA0B,EAC1BC,iBAAiB,EACjBE,eAAe,EACfC,sBAAsB;;AAGxB;AACA,SAASI,OAAO,IAAIC,cAAc;AAClC,SAASD,OAAO,IAAIE,kBAAkB;AACtC,SAASF,OAAO,IAAIG,WAAW;;AAE/B"}