@ai-group/chat-sdk 3.7.0 → 3.7.1-alpha1

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 (48) hide show
  1. package/dist/cjs/components/XAdkSender/InlineTagInput.d.ts +24 -0
  2. package/dist/cjs/components/XAdkSender/InlineTagInput.js +461 -0
  3. package/dist/cjs/components/XAdkSender/InlineTagInput.js.map +7 -0
  4. package/dist/cjs/components/XAdkSender/InputTags.d.ts +8 -0
  5. package/dist/cjs/components/XAdkSender/InputTags.js +51 -0
  6. package/dist/cjs/components/XAdkSender/InputTags.js.map +7 -0
  7. package/dist/cjs/components/XAdkSender/QuickList.d.ts +16 -0
  8. package/dist/cjs/components/XAdkSender/QuickList.js +105 -0
  9. package/dist/cjs/components/XAdkSender/QuickList.js.map +7 -0
  10. package/dist/cjs/components/XAdkSender/index.d.ts +1 -6
  11. package/dist/cjs/components/XAdkSender/index.js +289 -78
  12. package/dist/cjs/components/XAdkSender/index.js.map +3 -3
  13. package/dist/cjs/components/XAdkSender/styles.d.ts +15 -0
  14. package/dist/cjs/components/XAdkSender/styles.js +184 -5
  15. package/dist/cjs/components/XAdkSender/styles.js.map +2 -2
  16. package/dist/cjs/index.d.ts +1 -2
  17. package/dist/cjs/index.js +0 -3
  18. package/dist/cjs/index.js.map +3 -3
  19. package/dist/cjs/types/XAdkSender.d.ts +55 -0
  20. package/dist/cjs/types/XAdkSender.js.map +1 -1
  21. package/dist/esm/components/XAdkSender/InlineTagInput.d.ts +24 -0
  22. package/dist/esm/components/XAdkSender/InlineTagInput.js +437 -0
  23. package/dist/esm/components/XAdkSender/InlineTagInput.js.map +1 -0
  24. package/dist/esm/components/XAdkSender/InputTags.d.ts +8 -0
  25. package/dist/esm/components/XAdkSender/InputTags.js +36 -0
  26. package/dist/esm/components/XAdkSender/InputTags.js.map +1 -0
  27. package/dist/esm/components/XAdkSender/QuickList.d.ts +16 -0
  28. package/dist/esm/components/XAdkSender/QuickList.js +96 -0
  29. package/dist/esm/components/XAdkSender/QuickList.js.map +1 -0
  30. package/dist/esm/components/XAdkSender/index.d.ts +1 -6
  31. package/dist/esm/components/XAdkSender/index.js +327 -78
  32. package/dist/esm/components/XAdkSender/index.js.map +1 -1
  33. package/dist/esm/components/XAdkSender/styles.d.ts +15 -0
  34. package/dist/esm/components/XAdkSender/styles.js +29 -11
  35. package/dist/esm/components/XAdkSender/styles.js.map +1 -1
  36. package/dist/esm/index.d.ts +1 -2
  37. package/dist/esm/index.js +1 -2
  38. package/dist/esm/index.js.map +1 -1
  39. package/dist/esm/types/XAdkSender.d.ts +55 -0
  40. package/dist/esm/types/XAdkSender.js.map +1 -1
  41. package/dist/umd/chat-sdk.min.js +1 -1
  42. package/package.json +1 -1
  43. package/dist/cjs/components/XAdkSender/Switch.d.ts +0 -16
  44. package/dist/cjs/components/XAdkSender/Switch.js +0 -95
  45. package/dist/cjs/components/XAdkSender/Switch.js.map +0 -7
  46. package/dist/esm/components/XAdkSender/Switch.d.ts +0 -16
  47. package/dist/esm/components/XAdkSender/Switch.js +0 -53
  48. package/dist/esm/components/XAdkSender/Switch.js.map +0 -1
@@ -1 +1 @@
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","controlledValue","value","_ref$defaultValue","defaultValue","_ref$uploadRequest","uploadRequest","onClear","onChange","onSubmit","onStop","onFilesChange","onUploadSuccess","onUploadError","_ref$maxFileSize","maxFileSize","_ref$validators","validators","customValidators","_ref$allowedFileTypes","allowedFileTypes","_ref$maxFiles","maxFiles","Infinity","sendButtonRender","suffix","header","prefix","footer","styles","isControlled","undefined","_useState","_useState2","_slicedToArray","internalValue","setInternalValue","setValue","newValue","_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","target","handleKeyDown","key","shiftKey","renderFileList","_jsx","style","display","flexWrap","gap","padding","children","removable","onRemove","containerClass","container","uploading","isDisabled","hasContent","hasFiles","canSend","SendButton","props","_Fragment","onSend","className","iconButton","sendButton","onClick","spin","UploadButton","uploadButton","ClearButton","onConfirm","placement","clearButton","actionsComponents","renderSlot","slot","oriNode","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","Fragment","jsxs","CompoundSender","Switch"],"sources":["../../../../src/components/XAdkSender/index.tsx"],"sourcesContent":["import React, {\n useState,\n useRef,\n useCallback,\n forwardRef,\n useImperativeHandle,\n} 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 (\n {\n clearBtnShow = true,\n allowUpload = false,\n draggable = true,\n loading = false,\n disabled = false,\n value: controlledValue,\n defaultValue = \"\",\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 sendButtonRender,\n suffix,\n header,\n prefix,\n footer,\n },\n ref,\n ) => {\n const styles = useStyles();\n const isControlled = controlledValue !== undefined;\n const [internalValue, setInternalValue] = useState<string>(defaultValue);\n const value = isControlled ? controlledValue : internalValue;\n const setValue = (newValue: string) => {\n if (!isControlled) {\n setInternalValue(newValue);\n }\n onChange?.(newValue);\n };\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(\n ref,\n () => ({\n addFiles: (rawFiles: File[]) => {\n handleFileSelect(rawFiles);\n },\n }),\n [handleFileSelect],\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 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 ||\n responseData.fileUrl ||\n 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(\n (file) => file.status === \"uploading\",\n );\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 ||\n responseData.fileUrl ||\n responseData.url ||\n \"\",\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 };\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 type=\"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 const hasContent = value.trim().length > 0;\n const hasFiles = files.some((f) => f.status === \"success\");\n const canSend = hasContent || hasFiles;\n\n // 定义按钮组件(供外部 slot 函数通过 actionsComponents 使用)\n // 注意:sendButtonRender 的结果直接内联到 defaultSuffix 中,避免组件引用变化导致闪烁\n const SendButton = (props: any) => {\n if (sendButtonRender) {\n return (\n <>\n {sendButtonRender({\n loading,\n disabled: uploading || disabled,\n canSend,\n onSend: handleSubmit,\n onStop,\n })}\n </>\n );\n }\n return (\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\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 {sendButtonRender ? (\n sendButtonRender({\n loading,\n disabled: uploading || disabled,\n canSend,\n onSend: handleSubmit,\n onStop,\n })\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 )}\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 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);\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":";;;;;;AAAA,OAAOA,KAAK,IACVC,QAAQ,EACRC,MAAM,EACNC,WAAW,EACXC,UAAU,EACVC,mBAAmB,QACd,OAAO;AACd,SAASC,UAAU,EAAEC,OAAO,EAAEC,OAAO,EAAEC,KAAK,EAAEC,KAAK,QAAQ,MAAM;AACjE,SACEC,aAAa,EACbC,eAAe,EACfC,eAAe,EACfC,iBAAiB,QACZ,mBAAmB;AAU1B,SAASC,SAAS;AAClB,OAAOC,WAAW;AAClB,SAASC,MAAM;AAEf,IAAMC,UAAU,gBAAGd,UAAU,CAC3B,UAAAe,IAAA,EAyCEC,GAAG,EACA;EAAA,IAAAC,iBAAA,GAAAF,IAAA,CAxCDG,YAAY;IAAZA,YAAY,GAAAD,iBAAA,cAAG,IAAI,GAAAA,iBAAA;IAAAE,gBAAA,GAAAJ,IAAA,CACnBK,WAAW;IAAXA,WAAW,GAAAD,gBAAA,cAAG,KAAK,GAAAA,gBAAA;IAAAE,cAAA,GAAAN,IAAA,CACnBO,SAAS;IAATA,SAAS,GAAAD,cAAA,cAAG,IAAI,GAAAA,cAAA;IAAAE,YAAA,GAAAR,IAAA,CAChBS,OAAO;IAAPA,OAAO,GAAAD,YAAA,cAAG,KAAK,GAAAA,YAAA;IAAAE,aAAA,GAAAV,IAAA,CACfW,QAAQ;IAARA,QAAQ,GAAAD,aAAA,cAAG,KAAK,GAAAA,aAAA;IACTE,eAAe,GAAAZ,IAAA,CAAtBa,KAAK;IAAAC,iBAAA,GAAAd,IAAA,CACLe,YAAY;IAAZA,YAAY,GAAAD,iBAAA,cAAG,EAAE,GAAAA,iBAAA;IAAAE,kBAAA,GAAAhB,IAAA,CACjBiB,aAAa;IAAbA,aAAa,GAAAD,kBAAA,cAAG,YAAM,CAAC,CAAC,GAAAA,kBAAA;IACxBE,OAAO,GAAAlB,IAAA,CAAPkB,OAAO;IACPC,QAAQ,GAAAnB,IAAA,CAARmB,QAAQ;IACRC,QAAQ,GAAApB,IAAA,CAARoB,QAAQ;IACRC,MAAM,GAAArB,IAAA,CAANqB,MAAM;IACNC,aAAa,GAAAtB,IAAA,CAAbsB,aAAa;IACbC,eAAe,GAAAvB,IAAA,CAAfuB,eAAe;IACfC,aAAa,GAAAxB,IAAA,CAAbwB,aAAa;IAAAC,gBAAA,GAAAzB,IAAA,CACb0B,WAAW;IAAXA,WAAW,GAAAD,gBAAA,cAAG,EAAE,GAAAA,gBAAA;IAAAE,eAAA,GAAA3B,IAAA,CAChB4B,UAAU;IAAEC,gBAAgB,GAAAF,eAAA,cAAG,EAAE,GAAAA,eAAA;IAAAG,qBAAA,GAAA9B,IAAA,CAejC+B,gBAAgB;IAAhBA,gBAAgB,GAAAD,qBAAA,cAAG,EAAE,GAAAA,qBAAA;IAAAE,aAAA,GAAAhC,IAAA,CACrBiC,QAAQ;IAARA,QAAQ,GAAAD,aAAA,cAAGE,QAAQ,GAAAF,aAAA;IACnBG,gBAAgB,GAAAnC,IAAA,CAAhBmC,gBAAgB;IAChBC,MAAM,GAAApC,IAAA,CAANoC,MAAM;IACNC,MAAM,GAAArC,IAAA,CAANqC,MAAM;IACNC,MAAM,GAAAtC,IAAA,CAANsC,MAAM;IACNC,MAAM,GAAAvC,IAAA,CAANuC,MAAM;EAIR,IAAMC,MAAM,GAAG5C,SAAS,CAAC,CAAC;EAC1B,IAAM6C,YAAY,GAAG7B,eAAe,KAAK8B,SAAS;EAClD,IAAAC,SAAA,GAA0C7D,QAAQ,CAASiC,YAAY,CAAC;IAAA6B,UAAA,GAAAC,cAAA,CAAAF,SAAA;IAAjEG,aAAa,GAAAF,UAAA;IAAEG,gBAAgB,GAAAH,UAAA;EACtC,IAAM/B,KAAK,GAAG4B,YAAY,GAAG7B,eAAe,GAAGkC,aAAa;EAC5D,IAAME,QAAQ,GAAG,SAAXA,QAAQA,CAAIC,QAAgB,EAAK;IACrC,IAAI,CAACR,YAAY,EAAE;MACjBM,gBAAgB,CAACE,QAAQ,CAAC;IAC5B;IACA9B,QAAQ,aAARA,QAAQ,eAARA,QAAQ,CAAG8B,QAAQ,CAAC;EACtB,CAAC;EACD,IAAAC,UAAA,GAA0BpE,QAAQ,CAAc,EAAE,CAAC;IAAAqE,UAAA,GAAAN,cAAA,CAAAK,UAAA;IAA5CE,KAAK,GAAAD,UAAA;IAAEE,QAAQ,GAAAF,UAAA;EACtB,IAAAG,UAAA,GAAoCxE,QAAQ,CAAC,KAAK,CAAC;IAAAyE,UAAA,GAAAV,cAAA,CAAAS,UAAA;IAA5CE,UAAU,GAAAD,UAAA;IAAEE,aAAa,GAAAF,UAAA;EAChC,IAAMG,YAAY,GAAG3E,MAAM,CAAiB,IAAI,CAAC;EACjD,IAAM4E,YAAY,GAAG5E,MAAM,CAAmB,IAAI,CAAC;;EAEnD;EACA,IAAM6E,UAAU,GAAG,SAAbA,UAAUA,CAAA,EAAS;IACvB,OAAOC,IAAI,CAACC,GAAG,CAAC,CAAC,CAACC,QAAQ,CAAC,EAAE,CAAC,GAAGC,IAAI,CAACC,MAAM,CAAC,CAAC,CAACF,QAAQ,CAAC,EAAE,CAAC,CAACG,MAAM,CAAC,CAAC,CAAC;EACvE,CAAC;EAED,IAAMC,uBAAuB,GAAG,SAA1BA,uBAAuBA,CAAIC,QAAa,EAAuB;IAAA,IAAAC,cAAA,EAAAC,KAAA;IACnE,IAAMC,IAAI,IAAAF,cAAA,GAAGD,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEG,IAAI,cAAAF,cAAA,cAAAA,cAAA,GAAID,QAAQ;IACvC,QAAAE,KAAA,GAAQE,KAAK,CAACC,OAAO,CAACF,IAAI,CAAC,GAAGA,IAAI,CAAC,CAAC,CAAC,GAAGA,IAAI,cAAAD,KAAA,cAAAA,KAAA,GAAK,CAAC,CAAC;EACrD,CAAC;;EAED;EACA,IAAMI,aAAa,GAAG,SAAhBA,aAAaA,CAAIC,IAAU,EAAc;IAC7C,IAAI,CAAA5C,gBAAgB,aAAhBA,gBAAgB,uBAAhBA,gBAAgB,CAAE6C,MAAM,IAAG,CAAC,EAAE;MAChC,IAAMC,GAAG,GAAG/E,MAAM,CAAC6E,IAAI,CAAC;MAExB,OAAO5C,gBAAgB,CAAC+C,IAAI,CAAC,UAACC,IAAI,EAAK;QACrC;QACA,IAAIA,IAAI,CAACC,QAAQ,CAAC,GAAG,CAAC,EAAE;UACtB,IAAID,IAAI,CAACE,QAAQ,CAAC,IAAI,CAAC,EAAE;YACvB,OAAON,IAAI,CAACI,IAAI,CAACG,UAAU,CAACH,IAAI,CAACI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;UACjD;UACA,OAAOR,IAAI,CAACI,IAAI,KAAKA,IAAI;QAC3B;QAEA,IAAIA,IAAI,CAACG,UAAU,CAAC,GAAG,CAAC,EAAE;UACxB,OAAOL,GAAG,KAAKE,IAAI,CAACK,KAAK,CAAC,CAAC,CAAC;QAC9B;QAEA,OAAO,KAAK;MACd,CAAC,CAAC;IACJ;IACA,OAAO,IAAI;EACb,CAAC;;EAED;EACA,IAAMC,aAAa,GAAG,SAAhBA,aAAaA,CAAIV,IAAU,EAAc;IAC7C,IAAMW,OAAO,GAAG5D,WAAW,GAAG,IAAI,GAAG,IAAI;IACzC,OAAOiD,IAAI,CAACY,IAAI,IAAID,OAAO;EAC7B,CAAC;;EAED;EACA,IAAME,eAAe,GAAG,SAAlBA,eAAeA,CAAIb,IAAU,EAAEvB,KAAkB,EAAK;IAC1D,OAAOA,KAAK,CAAC0B,IAAI,CAAC,UAACW,CAAC;MAAA,OAAKA,CAAC,CAACC,IAAI,KAAKf,IAAI,CAACe,IAAI,IAAID,CAAC,CAACF,IAAI,KAAKZ,IAAI,CAACY,IAAI;IAAA,EAAC;EACxE,CAAC;;EAED;EACA,IAAMI,iBAAkC,GAAG;EACzC;EACA,UAACC,KAAK,EAAAC,KAAA,EAAgB;IAAA,IAAZzC,KAAK,GAAAyC,KAAA,CAALzC,KAAK;IACb,IAAIA,KAAK,CAACwB,MAAM,IAAI3C,QAAQ,EAAE;MAC5B,+CAAA6D,MAAA,CAAiB7D,QAAQ;IAC3B;IACA,OAAO,IAAI;EACb,CAAC;EAED;EACA,UAAC0C,IAAI,EAAK;IACR,IAAMW,OAAO,GAAG5D,WAAW,GAAG,IAAI,GAAG,IAAI;IACzC,IAAIiD,IAAI,CAACY,IAAI,GAAGD,OAAO,EAAE;MACvB,2DAAAQ,MAAA,CAAmBpE,WAAW;IAChC;IACA,OAAO,IAAI;EACb,CAAC;EAED;EACA,UAACiD,IAAI,EAAK;IACR,IAAI,CAACD,aAAa,CAACC,IAAI,CAAC,EAAE;MACxB,OAAO,UAAU;IACnB;IACA,OAAO,IAAI;EACb,CAAC;EAED;EACA,UAACA,IAAI,EAAAoB,KAAA,EAAgB;IAAA,IAAZ3C,KAAK,GAAA2C,KAAA,CAAL3C,KAAK;IACZ,IAAIoC,eAAe,CAACb,IAAI,EAAEvB,KAAK,CAAC,EAAE;MAChC,OAAO,OAAO;IAChB;IACA,OAAO,IAAI;EACb,CAAC,CACF;EAED,IAAM4C,aAAa,MAAAF,MAAA,CAAOH,iBAAiB,EAAAM,kBAAA,CAAKpE,gBAAgB,EAAC;;EAEjE;EACA,IAAMqE,YAAY,GAAG,SAAfA,YAAYA,CAAIvB,IAAU,EAA2C;IAAA,IAAAwB,SAAA,GAAAC,0BAAA,CACjDJ,aAAa;MAAAK,KAAA;IAAA;MAArC,KAAAF,SAAA,CAAAG,CAAA,MAAAD,KAAA,GAAAF,SAAA,CAAAI,CAAA,IAAAC,IAAA,GAAuC;QAAA,IAA5BC,SAAS,GAAAJ,KAAA,CAAAxF,KAAA;QAClB,IAAM6F,KAAK,GAAGD,SAAS,CAAC9B,IAAI,EAAE;UAAEvB,KAAK,EAALA;QAAM,CAAC,CAAC;QACxC,IAAIsD,KAAK,EAAE;UACT,OAAO;YAAEC,KAAK,EAAE,KAAK;YAAEvH,OAAO,EAAEsH;UAAM,CAAC;QACzC;MACF;IAAC,SAAAE,GAAA;MAAAT,SAAA,CAAAU,CAAA,CAAAD,GAAA;IAAA;MAAAT,SAAA,CAAAV,CAAA;IAAA;IACD,OAAO;MAAEkB,KAAK,EAAE;IAAK,CAAC;EACxB,CAAC;;EAED;EACA,IAAMG,gBAAgB,GAAG9H,WAAW,CAClC,UAAC+H,aAAqB,EAAK;IACzB,IAAMC,SAAS,GAAGxC,KAAK,CAACyC,IAAI,CAACF,aAAa,CAAC;IAE3C,IAAI3D,KAAK,CAACwB,MAAM,GAAGoC,SAAS,CAACpC,MAAM,GAAG3C,QAAQ,EAAE;MAC9C7C,OAAO,CAACsH,KAAK,yCAAAZ,MAAA,CAAW7D,QAAQ,wBAAM,CAAC;MACvC;IACF;IAEA,IAAMiF,UAAuB,GAAG,EAAE;IAElCF,SAAS,CAACG,OAAO,CAAC,UAACxC,IAAI,EAAK;MAC1B,IAAMyC,UAAU,GAAGlB,YAAY,CAACvB,IAAI,CAAC;MAErC,IAAIyC,UAAU,CAACT,KAAK,EAAE;QACpBO,UAAU,CAACG,IAAI,CAAC;UACdC,EAAE,EAAE1D,UAAU,CAAC,CAAC;UAChB2D,GAAG,EAAE3D,UAAU,CAAC,CAAC;UACjB8B,IAAI,EAAEf,IAAI,CAACe,IAAI;UACfH,IAAI,EAAEZ,IAAI,CAACY,IAAI;UACfR,IAAI,EAAEJ,IAAI,CAACI,IAAI;UACfJ,IAAI,EAAJA,IAAI;UACJ6C,QAAQ,EAAE,CAAC;UACXC,MAAM,EAAE,SAAS;UACjBrD,QAAQ,EAAE;QACZ,CAAC,CAAC;MACJ,CAAC,MAAM;QACLhF,OAAO,CAACsH,KAAK,CAACU,UAAU,CAAChI,OAAO,CAAC;MACnC;IACF,CAAC,CAAC;IAEF,IAAI8H,UAAU,CAACtC,MAAM,GAAG,CAAC,EAAE;MACzBvB,QAAQ,CAAC,UAACqE,IAAI,EAAK;QACjB,IAAMC,IAAI,MAAA7B,MAAA,CAAAG,kBAAA,CAAOyB,IAAI,GAAKR,UAAU,CAAC;QACrC5F,aAAa,aAAbA,aAAa,eAAbA,aAAa,CAAGqG,IAAI,CAAC;QACrB,OAAOA,IAAI;MACb,CAAC,CAAC;MACFC,WAAW,CAACV,UAAU,CAAC;IACzB;EACF,CAAC,EACD,CAAC9D,KAAK,EAAEnB,QAAQ,EAAEP,WAAW,EAAEK,gBAAgB,CACjD,CAAC;;EAED;EACA7C,mBAAmB,CACjBe,GAAG,EACH;IAAA,OAAO;MACL4H,QAAQ,EAAE,SAAAA,SAACC,QAAgB,EAAK;QAC9BhB,gBAAgB,CAACgB,QAAQ,CAAC;MAC5B;IACF,CAAC;EAAA,CAAC,EACF,CAAChB,gBAAgB,CACnB,CAAC;;EAED;EACA,IAAMc,WAAW;IAAA,IAAAG,KAAA,GAAAC,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAAC,QAAOC,QAAqB;MAAA,IAAAC,UAAA,EAAAC,MAAA,EAAAC,KAAA;MAAA,OAAAN,mBAAA,GAAAO,IAAA,UAAAC,SAAAC,SAAA;QAAA,kBAAAA,SAAA,CAAAhB,IAAA,GAAAgB,SAAA,CAAAf,IAAA;UAAA;YAAAU,UAAA,GAAAjC,0BAAA,CACtBgC,QAAQ;YAAAM,SAAA,CAAAhB,IAAA;YAAAa,KAAA,gBAAAN,mBAAA,GAAAC,IAAA,UAAAK,MAAA;cAAA,IAAAI,SAAA;cAAA,OAAAV,mBAAA,GAAAO,IAAA,UAAAI,OAAAC,QAAA;gBAAA,kBAAAA,QAAA,CAAAnB,IAAA,GAAAmB,QAAA,CAAAlB,IAAA;kBAAA;oBAArBgB,SAAS,GAAAL,MAAA,CAAAzH,KAAA;oBAClB;oBACAwC,QAAQ,CAAC,UAACqE,IAAI;sBAAA,OACZA,IAAI,CAACoB,GAAG,CAAC,UAACrD,CAAC;wBAAA,OACTA,CAAC,CAAC6B,EAAE,KAAKqB,SAAS,CAACrB,EAAE,GAAAyB,aAAA,CAAAA,aAAA,KAAQtD,CAAC;0BAAEgC,MAAM,EAAE;wBAAW,KAAKhC,CAAC;sBAAA,CAC3D,CAAC;oBAAA,CACH,CAAC;oBAACoD,QAAA,CAAAnB,IAAA;oBAAAmB,QAAA,CAAAlB,IAAA;oBAAA,OAGM1G,aAAa,CAAC;sBAClB0D,IAAI,EAAEgE,SAAS,CAAChE,IAAI;sBACpBqE,UAAU,EAAE,SAAAA,WAACnC,CAAC,EAAK;wBACjBxD,QAAQ,CAAC,UAACqE,IAAI;0BAAA,OACZA,IAAI,CAACoB,GAAG,CAAC,UAACrD,CAAC;4BAAA,OACTA,CAAC,CAAC6B,EAAE,KAAKqB,SAAS,CAACrB,EAAE,GAAAyB,aAAA,CAAAA,aAAA,KAAQtD,CAAC;8BAAE+B,QAAQ,EAAEX,CAAC,CAACoC;4BAAO,KAAKxD,CAAC;0BAAA,CAC3D,CAAC;wBAAA,CACH,CAAC;sBACH,CAAC;sBACDyD,SAAS,EAAE,SAAAA,UAAC9E,QAAQ,EAAK;wBACvB,IAAM+E,YAAY,GAAGhF,uBAAuB,CAACC,QAAQ,CAAC;wBACtDf,QAAQ,CAAC,UAACqE,IAAI;0BAAA,OACZA,IAAI,CAACoB,GAAG,CAAC,UAACrD,CAAC;4BAAA,OACTA,CAAC,CAAC6B,EAAE,KAAKqB,SAAS,CAACrB,EAAE,GAAAyB,aAAA,CAAAA,aAAA,KAEZtD,CAAC;8BACJgC,MAAM,EAAE,SAAS;8BACjBD,QAAQ,EAAE,GAAG;8BACbpD,QAAQ,EAARA,QAAQ;8BACRgF,MAAM,EAAED,YAAY,CAACC,MAAM,IAAID,YAAY,CAAC7B,EAAE;8BAC9C+B,OAAO,EACLF,YAAY,CAACE,OAAO,IACpBF,YAAY,CAACG,OAAO,IACpBH,YAAY,CAACI;4BAAG,KAEpB9D,CAAC;0BAAA,CACP,CAAC;wBAAA,CACH,CAAC;wBAEDlE,eAAe,aAAfA,eAAe,eAAfA,eAAe,CAAAwH,aAAA,CAAAA,aAAA,KACVJ,SAAS;0BACZlB,MAAM,EAAE,SAAS;0BACjBrD,QAAQ,EAARA,QAAQ;0BACRgF,MAAM,EAAED,YAAY,CAACC,MAAM,IAAID,YAAY,CAAC7B,EAAE;0BAC9C+B,OAAO,EACLF,YAAY,CAACE,OAAO,IACpBF,YAAY,CAACG,OAAO,IACpBH,YAAY,CAACI;wBAAG,EACnB,CAAC;sBACJ,CAAC;sBACDC,OAAO,EAAE,SAAAA,QAAC9C,KAAK,EAAK;wBAClBrD,QAAQ,CAAC,UAACqE,IAAI;0BAAA,OACZA,IAAI,CAACoB,GAAG,CAAC,UAACrD,CAAC;4BAAA,OACTA,CAAC,CAAC6B,EAAE,KAAKqB,SAAS,CAACrB,EAAE,GAAAyB,aAAA,CAAAA,aAAA,KAEZtD,CAAC;8BACJgC,MAAM,EAAE,OAAO;8BACfgC,YAAY,EAAE/C,KAAK,CAACtH;4BAAO,KAE7BqG,CAAC;0BAAA,CACP,CAAC;wBAAA,CACH,CAAC;wBACDjE,aAAa,aAAbA,aAAa,eAAbA,aAAa,CAAGmH,SAAS,EAAEjC,KAAK,CAAC;sBACnC;oBACF,CAAC,CAAC;kBAAA;oBAAAmC,QAAA,CAAAlB,IAAA;oBAAA;kBAAA;oBAAAkB,QAAA,CAAAnB,IAAA;oBAAAmB,QAAA,CAAAa,EAAA,GAAAb,QAAA;oBAEFc,OAAO,CAACjD,KAAK,CAAC,SAAS,EAAAmC,QAAA,CAAAa,EAAO,CAAC;oBAC/BrG,QAAQ,CAAC,UAACqE,IAAI;sBAAA,OACZA,IAAI,CAACoB,GAAG,CAAC,UAACrD,CAAC;wBAAA,OACTA,CAAC,CAAC6B,EAAE,KAAKqB,SAAS,CAACrB,EAAE,GAAAyB,aAAA,CAAAA,aAAA,KAEZtD,CAAC;0BACJgC,MAAM,EAAE,OAAO;0BACfgC,YAAY,EACVZ,QAAA,CAAAa,EAAA,YAAiBE,KAAK,GAAGf,QAAA,CAAAa,EAAA,CAAMtK,OAAO,GAAG;wBAAQ,KAErDqG,CAAC;sBAAA,CACP,CAAC;oBAAA,CACH,CAAC;oBACDrG,OAAO,CAACsH,KAAK,IAAAZ,MAAA,CAAI6C,SAAS,CAACjD,IAAI,8BAAO,CAAC;kBAAC;kBAAA;oBAAA,OAAAmD,QAAA,CAAAgB,IAAA;gBAAA;cAAA,GAAAtB,KAAA;YAAA;YAAAF,UAAA,CAAA/B,CAAA;UAAA;YAAA,KAAAgC,MAAA,GAAAD,UAAA,CAAA9B,CAAA,IAAAC,IAAA;cAAAkC,SAAA,CAAAf,IAAA;cAAA;YAAA;YAAA,OAAAe,SAAA,CAAAoB,aAAA,CAAAvB,KAAA;UAAA;YAAAG,SAAA,CAAAf,IAAA;YAAA;UAAA;YAAAe,SAAA,CAAAf,IAAA;YAAA;UAAA;YAAAe,SAAA,CAAAhB,IAAA;YAAAgB,SAAA,CAAAqB,EAAA,GAAArB,SAAA;YAAAL,UAAA,CAAAxB,CAAA,CAAA6B,SAAA,CAAAqB,EAAA;UAAA;YAAArB,SAAA,CAAAhB,IAAA;YAAAW,UAAA,CAAA5C,CAAA;YAAA,OAAAiD,SAAA,CAAAsB,MAAA;UAAA;UAAA;YAAA,OAAAtB,SAAA,CAAAmB,IAAA;QAAA;MAAA,GAAA1B,OAAA;IAAA,CAG7C;IAAA,gBAlFKP,WAAWA,CAAAqC,EAAA;MAAA,OAAAlC,KAAA,CAAAmC,KAAA,OAAAC,SAAA;IAAA;EAAA,GAkFhB;;EAED;EACA,IAAMC,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAI9C,EAAU,EAAK;IACvCjE,QAAQ,CAAC,UAACqE,IAAI,EAAK;MACjB,IAAMC,IAAI,GAAGD,IAAI,CAAC2C,MAAM,CAAC,UAAC1F,IAAI;QAAA,OAAKA,IAAI,CAAC2C,EAAE,KAAKA,EAAE;MAAA,EAAC;MAElDhG,aAAa,aAAbA,aAAa,eAAbA,aAAa,CAAGqG,IAAI,CAAC;MAErB,OAAOA,IAAI;IACb,CAAC,CAAC;EACJ,CAAC;;EAED;EACA,IAAM2C,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAA,EAAS;IAC9B,IAAI3G,YAAY,CAAC4G,OAAO,EAAE;MACxB5G,YAAY,CAAC4G,OAAO,CAACC,KAAK,CAAC,CAAC;IAC9B;EACF,CAAC;;EAED;EACA,IAAMC,cAAc,GAAGzL,WAAW,CAChC,UAAC6H,CAAkB,EAAK;IACtBA,CAAC,CAAC6D,cAAc,CAAC,CAAC;IAClB7D,CAAC,CAAC8D,eAAe,CAAC,CAAC;IACnB,IAAItK,WAAW,EAAE;MACfoD,aAAa,CAAC,IAAI,CAAC;IACrB;EACF,CAAC,EACD,CAACpD,WAAW,CACd,CAAC;EAED,IAAMuK,eAAe,GAAG5L,WAAW,CACjC,UAAC6H,CAAkB,EAAK;IACtBA,CAAC,CAAC6D,cAAc,CAAC,CAAC;IAClB7D,CAAC,CAAC8D,eAAe,CAAC,CAAC;IACnB,IAAItK,WAAW,EAAE;MACfoD,aAAa,CAAC,KAAK,CAAC;IACtB;EACF,CAAC,EACD,CAACpD,WAAW,CACd,CAAC;EAED,IAAMwK,UAAU,GAAG7L,WAAW,CAC5B,UAAC6H,CAAkB,EAAK;IACtBA,CAAC,CAAC6D,cAAc,CAAC,CAAC;IAClB7D,CAAC,CAAC8D,eAAe,CAAC,CAAC;IACnBlH,aAAa,CAAC,KAAK,CAAC;IAEpB,IACEpD,WAAW,IACXwG,CAAC,CAACiE,YAAY,CAAC1H,KAAK,IACpByD,CAAC,CAACiE,YAAY,CAAC1H,KAAK,CAACwB,MAAM,GAAG,CAAC,EAC/B;MACAkC,gBAAgB,CAACtC,KAAK,CAACyC,IAAI,CAACJ,CAAC,CAACiE,YAAY,CAAC1H,KAAK,CAAC,CAAC;IACpD;EACF,CAAC,EACD,CAAC/C,WAAW,EAAEyG,gBAAgB,CAChC,CAAC;;EAED;EACA,IAAMiE,YAAY,GAAG,SAAfA,YAAYA,CAAA,EAAS;IACzB,IAAI,CAAClK,KAAK,CAACmK,IAAI,CAAC,CAAC,IAAI5H,KAAK,CAACwB,MAAM,KAAK,CAAC,EAAE;MACvCxF,OAAO,CAAC6L,OAAO,CAAC,YAAY,CAAC;MAC7B;IACF;IAEA,IAAMC,YAAY,GAAG9H,KAAK,CAACiH,MAAM,CAAC,UAAC1F,IAAI;MAAA,OAAKA,IAAI,CAAC8C,MAAM,KAAK,SAAS;IAAA,EAAC;IACtE,IAAM0D,cAAc,GAAG/H,KAAK,CAACiH,MAAM,CACjC,UAAC1F,IAAI;MAAA,OAAKA,IAAI,CAAC8C,MAAM,KAAK,WAAW;IAAA,CACvC,CAAC;IAED,IAAI0D,cAAc,CAACvG,MAAM,GAAG,CAAC,EAAE;MAC7BrF,KAAK,CAAC6L,OAAO,CAAC;QACZC,KAAK,EAAE,OAAO;QACdC,OAAO,kBAAAxF,MAAA,CAAQqF,cAAc,CAACvG,MAAM,gGAAkB;QACtD2G,MAAM,EAAE,QAAQ;QAChBC,UAAU,EAAE,QAAQ;QACpBC,IAAI,EAAE,SAAAA,KAAA,EAAM;UACV,IAAMC,cAAc,GAAGC,oBAAoB,CAACT,YAAY,CAAC;UACzD,IAAI9J,QAAQ,EAAE;YACZA,QAAQ,CAAC;cACPwK,IAAI,EAAE/K,KAAK;cACXuC,KAAK,EAAEsI;YACT,CAAC,CAAC;UACJ;UAEA1I,QAAQ,CAAC,EAAE,CAAC;UACZK,QAAQ,CAAC,UAACqE,IAAI;YAAA,OAAKA,IAAI,CAAC2C,MAAM,CAAC,UAAC5E,CAAC;cAAA,OAAKA,CAAC,CAACgC,MAAM,KAAK,SAAS;YAAA,EAAC;UAAA,EAAC;QAChE,CAAC;QACDoE,QAAQ,EAAE,SAAAA,SAAA,EAAM;UACdzM,OAAO,CAAC0M,IAAI,CAAC,eAAe,CAAC;QAC/B;MACF,CAAC,CAAC;IACJ,CAAC,MAAM;MACL,IAAMJ,cAAc,GAAGC,oBAAoB,CAACT,YAAY,CAAC;MAEzD,IAAI9J,QAAQ,EAAE;QACZA,QAAQ,CAAC;UACPwK,IAAI,EAAE/K,KAAK;UACXuC,KAAK,EAAEsI;QACT,CAAC,CAAC;MACJ;MAEA1I,QAAQ,CAAC,EAAE,CAAC;MACZK,QAAQ,CAAC,UAACqE,IAAI;QAAA,OAAKA,IAAI,CAAC2C,MAAM,CAAC,UAAC5E,CAAC;UAAA,OAAKA,CAAC,CAACgC,MAAM,KAAK,SAAS;QAAA,EAAC;MAAA,EAAC;IAChE;EACF,CAAC;;EAED;EACA,IAAMkE,oBAAoB,GAAG,SAAvBA,oBAAoBA,CAAIvD,QAAqB,EAAmB;IACpE,OAAOA,QAAQ,CACZiC,MAAM,CAAC,UAAC1F,IAAI;MAAA,OAAKA,IAAI,CAAC8C,MAAM,KAAK,SAAS,IAAI9C,IAAI,CAACP,QAAQ;IAAA,EAAC,CAC5D0E,GAAG,CAAC,UAACnE,IAAI,EAAK;MACb,IAAMwE,YAAY,GAAGhF,uBAAuB,CAACQ,IAAI,CAACP,QAAQ,CAAC;MAE3D,OAAO;QACL2H,QAAQ,EAAE5C,YAAY,CAAC4C,QAAQ,IAAIpH,IAAI,CAACe,IAAI;QAC5C0D,MAAM,EAAED,YAAY,CAACC,MAAM,IAAID,YAAY,CAAC7B,EAAE,IAAI,EAAE;QACpD+B,OAAO,EACLF,YAAY,CAACE,OAAO,IACpBF,YAAY,CAACG,OAAO,IACpBH,YAAY,CAACI,GAAG,IAChB,EAAE;QACJxE,IAAI,EAAEoE,YAAY,CAAC6C,QAAQ,IAAI7C,YAAY,CAACpE,IAAI,IAAIjF,MAAM,CAAC6E,IAAI,CAAC;QAChEY,IAAI,EAAE4D,YAAY,CAAC8C,QAAQ,IAAI9C,YAAY,CAAC5D,IAAI,IAAIZ,IAAI,CAACY,IAAI;QAC7D2G,QAAQ,EAAE/C,YAAY,CAAC+C,QAAQ,IAAIvH,IAAI,CAACI,IAAI;QAC5CoH,GAAG,EAAApD,aAAA,KACEI,YAAY;MAEnB,CAAC;IACH,CAAC,CAAC;EACN,CAAC;;EAED;EACA,IAAMiD,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAIvF,CAAyC,EAAK;IACvE,IAAM5D,QAAQ,GAAG4D,CAAC,CAACwF,MAAM,CAACxL,KAAK;IAC/BmC,QAAQ,CAACC,QAAQ,CAAC;EACpB,CAAC;;EAED;EACA,IAAMqJ,aAAa,GAAG,SAAhBA,aAAaA,CAAIzF,CAA2C,EAAK;IACrE,IAAIA,CAAC,CAAC0F,GAAG,KAAK,OAAO,IAAI,CAAC1F,CAAC,CAAC2F,QAAQ,EAAE;MACpC3F,CAAC,CAAC6D,cAAc,CAAC,CAAC;MAClBK,YAAY,CAAC,CAAC;IAChB;EACF,CAAC;;EAED;EACA,IAAM0B,cAAc,GAAG,SAAjBA,cAAcA,CAAA,EAAS;IAC3B,IAAIrJ,KAAK,CAACwB,MAAM,KAAK,CAAC,EAAE,OAAO,IAAI;IAEnC,oBACE8H,IAAA;MACEC,KAAK,EAAE;QACLC,OAAO,EAAE,MAAM;QACfC,QAAQ,EAAE,MAAM;QAChBC,GAAG,EAAE,KAAK;QACVC,OAAO,EAAE;MACX,CAAE;MAAAC,QAAA,EAED5J,KAAK,CAAC0F,GAAG,CAAC,UAACnE,IAAI;QAAA,oBACd+H,IAAA,CAAC7M,WAAW;UAEV8E,IAAI,EAAEA,IAAK;UACXI,IAAI,EAAC,MAAM;UACXkI,SAAS;UACTC,QAAQ,EAAE9C;QAAiB,GAJtBzF,IAAI,CAAC2C,EAKX,CAAC;MAAA,CACH;IAAC,CACC,CAAC;EAEV,CAAC;EAED,IAAM6F,cAAc,MAAArH,MAAA,CAAMtD,MAAM,CAAC4K,SAAS,OAAAtH,MAAA,CAAItC,UAAU,GAAG,WAAW,GAAG,EAAE,CAAE;EAC7E,IAAM6J,SAAS,GAAGjK,KAAK,CAAC0B,IAAI,CAAC,UAACW,CAAC;IAAA,OAAKA,CAAC,CAACgC,MAAM,KAAK,WAAW;EAAA,EAAC;EAC7D,IAAM6F,UAAU,GAAG3M,QAAQ,IAAI0M,SAAS,IAAI5M,OAAO;EACnD,IAAM8M,UAAU,GAAG1M,KAAK,CAACmK,IAAI,CAAC,CAAC,CAACpG,MAAM,GAAG,CAAC;EAC1C,IAAM4I,QAAQ,GAAGpK,KAAK,CAAC0B,IAAI,CAAC,UAACW,CAAC;IAAA,OAAKA,CAAC,CAACgC,MAAM,KAAK,SAAS;EAAA,EAAC;EAC1D,IAAMgG,OAAO,GAAGF,UAAU,IAAIC,QAAQ;;EAEtC;EACA;EACA,IAAME,UAAU,GAAG,SAAbA,UAAUA,CAAIC,KAAU,EAAK;IACjC,IAAIxL,gBAAgB,EAAE;MACpB,oBACEuK,IAAA,CAAAkB,SAAA;QAAAZ,QAAA,EACG7K,gBAAgB,CAAC;UAChB1B,OAAO,EAAPA,OAAO;UACPE,QAAQ,EAAE0M,SAAS,IAAI1M,QAAQ;UAC/B8M,OAAO,EAAPA,OAAO;UACPI,MAAM,EAAE9C,YAAY;UACpB1J,MAAM,EAANA;QACF,CAAC;MAAC,CACF,CAAC;IAEP;IACA,oBACEqL,IAAA,CAACrN,OAAO;MAACgM,KAAK,EAAE5K,OAAO,GAAG,MAAM,GAAG,MAAO;MAAAuM,QAAA,eACxCN,IAAA,WAAA3D,aAAA,CAAAA,aAAA;QACE+E,SAAS,KAAAhI,MAAA,CAAKtD,MAAM,CAACuL,UAAU,OAAAjI,MAAA,CAAItD,MAAM,CAACwL,UAAU,OAAAlI,MAAA,CAAIrF,OAAO,GAAG,MAAM,GAAG,EAAE,CAAG;QAChFwN,OAAO,EAAExN,OAAO,GAAGY,MAAM,GAAG0J,YAAa;QACzCpK,QAAQ,EAAE0M,SAAS,IAAI1M,QAAS;QAChC,cAAYF,OAAO,GAAG,MAAM,GAAG;MAAO,GAClCkN,KAAK;QAAAX,QAAA,EAERvM,OAAO,gBAAGiM,IAAA,CAACjN,eAAe;UAACyO,IAAI;QAAA,CAAE,CAAC,gBAAGxB,IAAA,CAAChN,eAAe,IAAE;MAAC,EACnD;IAAC,CACF,CAAC;EAEd,CAAC;EAED,IAAMyO,YAAY,GAAG,SAAfA,YAAYA,CAAIR,KAAU;IAAA,oBAC9BjB,IAAA,CAACrN,OAAO;MAACgM,KAAK,EAAC,0BAAM;MAAA2B,QAAA,eACnBN,IAAA,WAAA3D,aAAA,CAAAA,aAAA;QACE+E,SAAS,KAAAhI,MAAA,CAAKtD,MAAM,CAACuL,UAAU,OAAAjI,MAAA,CAAItD,MAAM,CAAC4L,YAAY,CAAG;QACzDH,OAAO,EAAE3D,iBAAkB;QAC3B3J,QAAQ,EAAE2M,UAAW;QACrB,cAAW;MAAM,GACbK,KAAK;QAAAX,QAAA,eAETN,IAAA,CAAC/M,iBAAiB,IAAE;MAAC,EACf;IAAC,CACF,CAAC;EAAA,CACX;EAED,IAAM0O,WAAW,GAAG,SAAdA,WAAWA,CAAIV,KAAU;IAAA,oBAC7BjB,IAAA,CAACvN,UAAU;MACTkM,KAAK,EAAC,+DAAa;MACnBiD,SAAS,EAAEpN,OAAQ;MACnBqN,SAAS,EAAC,KAAK;MACfhD,MAAM,EAAC,cAAI;MACXC,UAAU,EAAC,cAAI;MACf7K,QAAQ,EAAE2M,UAAW;MAAAN,QAAA,eAErBN,IAAA,WAAA3D,aAAA,CAAAA,aAAA;QACE+E,SAAS,KAAAhI,MAAA,CAAKtD,MAAM,CAACuL,UAAU,OAAAjI,MAAA,CAAItD,MAAM,CAACgM,WAAW,CAAG;QACxD7N,QAAQ,EAAE2M,UAAW;QACrB,cAAW;MAAQ,GACfK,KAAK;QAAAX,QAAA,eAETN,IAAA,CAAClN,aAAa,IAAE;MAAC,EACX;IAAC,CACC,CAAC;EAAA,CACd;EAED,IAAMiP,iBAAoC,GAAG;IAC3Cf,UAAU,EAAVA,UAAU;IACVS,YAAY,EAAZA,YAAY;IACZE,WAAW,EAAXA;EACF,CAAC;;EAED;EACA,IAAMK,UAAU,GAAG,SAAbA,UAAUA,CACdC,IAOa,EACbC,OAAwB,EACG;IAC3B,IAAID,IAAI,KAAK,KAAK,EAAE,OAAO,IAAI;IAC/B,IAAIA,IAAI,KAAKjM,SAAS,EAAE,OAAOkM,OAAO;IACtC,IAAI,OAAOD,IAAI,KAAK,UAAU,EAAE;MAC9B,IAAME,MAAM,GAAGF,IAAI,CAACC,OAAO,EAAE;QAAEE,UAAU,EAAEL;MAAkB,CAAC,CAAC;MAC/D,OAAOI,MAAM,KAAK,KAAK,GAAG,IAAI,GAAGA,MAAM;IACzC;IACA,OAAOF,IAAI;EACb,CAAC;;EAED;EACA,IAAMI,aAAa,gBACjBC,KAAA;IAAKlB,SAAS,EAAEtL,MAAM,CAACyM,WAAY;IAAAjC,QAAA,GAChC3M,WAAW,iBACVqM,IAAA,CAACrN,OAAO;MAACgM,KAAK,EAAC,0BAAM;MAAA2B,QAAA,eACnBN,IAAA;QACEoB,SAAS,KAAAhI,MAAA,CAAKtD,MAAM,CAACuL,UAAU,OAAAjI,MAAA,CAAItD,MAAM,CAAC4L,YAAY,CAAG;QACzDH,OAAO,EAAE3D,iBAAkB;QAC3B3J,QAAQ,EAAE2M,UAAW;QACrB,cAAW,0BAAM;QAAAN,QAAA,eAEjBN,IAAA,CAAC/M,iBAAiB,IAAE;MAAC,CACf;IAAC,CACF,CACV,EACAwC,gBAAgB,GACfA,gBAAgB,CAAC;MACf1B,OAAO,EAAPA,OAAO;MACPE,QAAQ,EAAE0M,SAAS,IAAI1M,QAAQ;MAC/B8M,OAAO,EAAPA,OAAO;MACPI,MAAM,EAAE9C,YAAY;MACpB1J,MAAM,EAANA;IACF,CAAC,CAAC,gBAEFqL,IAAA,CAACrN,OAAO;MAACgM,KAAK,EAAE5K,OAAO,GAAG,MAAM,GAAG,MAAO;MAAAuM,QAAA,eACxCN,IAAA;QACEoB,SAAS,KAAAhI,MAAA,CAAKtD,MAAM,CAACuL,UAAU,OAAAjI,MAAA,CAAItD,MAAM,CAACwL,UAAU,OAAAlI,MAAA,CAAIrF,OAAO,GAAG,MAAM,GAAG,EAAE,CAAG;QAChFwN,OAAO,EAAExN,OAAO,GAAGY,MAAM,GAAG0J,YAAa;QACzCpK,QAAQ,EAAE0M,SAAS,IAAI1M,QAAS;QAChC,cAAYF,OAAO,GAAG,MAAM,GAAG,MAAO;QAAAuM,QAAA,EAErCvM,OAAO,gBAAGiM,IAAA,CAACjN,eAAe;UAACyO,IAAI;QAAA,CAAE,CAAC,gBAAGxB,IAAA,CAAChN,eAAe,IAAE;MAAC,CACnD;IAAC,CACF,CACV;EAAA,CACE,CACN;EAED,oBACEsP,KAAA;IACE/O,GAAG,EAAEyD,YAAa;IAClBoK,SAAS,EAAEX,cAAe;IAC1B+B,UAAU,EAAE7O,WAAW,IAAIE,SAAS,GAAGkK,cAAc,GAAG/H,SAAU;IAClEyM,WAAW,EAAE9O,WAAW,IAAIE,SAAS,GAAGqK,eAAe,GAAGlI,SAAU;IACpE0M,MAAM,EAAE/O,WAAW,IAAIE,SAAS,GAAGsK,UAAU,GAAGnI,SAAU;IAAAsK,QAAA,GAGzD0B,UAAU,CAACrM,MAAM,EAAE,KAAK,CAAC,EAEzBhC,WAAW,IAAI+C,KAAK,CAACwB,MAAM,GAAG,CAAC,IAAI6H,cAAc,CAAC,CAAC,EAGnDpM,WAAW,iBACVqM,IAAA;MACEzM,GAAG,EAAE0D,YAAa;MAClBoB,IAAI,EAAC,MAAM;MACXsK,QAAQ;MACRC,MAAM,EAAEvN,gBAAgB,CAACwN,IAAI,CAAC,GAAG,CAAE;MACnC5C,KAAK,EAAE;QAAEC,OAAO,EAAE;MAAO,CAAE;MAC3BzL,QAAQ,EAAE,SAAAA,SAAC0F,CAAC,EAAK;QACf,IAAIA,CAAC,CAACwF,MAAM,CAACjJ,KAAK,EAAE;UAClB0D,gBAAgB,CAACtC,KAAK,CAACyC,IAAI,CAACJ,CAAC,CAACwF,MAAM,CAACjJ,KAAK,CAAC,CAAC;UAC5CyD,CAAC,CAACwF,MAAM,CAACxL,KAAK,GAAG,EAAE;QACrB;MACF;IAAE,CACH,CACF,eAED6L,IAAA;MAAKoB,SAAS,EAAEtL,MAAM,CAACgN,QAAS;MAAAxC,QAAA,eAC9BgC,KAAA;QAAKlB,SAAS,EAAEtL,MAAM,CAACiN,UAAW;QAAAzC,QAAA,gBAChCgC,KAAA;UAAKlB,SAAS,EAAEtL,MAAM,CAACkN,eAAgB;UAAA1C,QAAA,GAEpC7M,YAAY,iBAAIuM,IAAA,CAAC2B,WAAW,IAAE,CAAC,EAE/BK,UAAU,CAACpM,MAAM,EAAE,KAAK,CAAC,eAE1BoK,IAAA;YAAKoB,SAAS,EAAEtL,MAAM,CAACmN,eAAgB;YAAA3C,QAAA,eACrCN,IAAA,CAACpN,KAAK,CAACsQ,QAAQ;cACb9B,SAAS,EAAEtL,MAAM,CAACqN,QAAS;cAC3BhP,KAAK,EAAEA,KAAM;cACbM,QAAQ,EAAEiL,iBAAkB;cAC5B0D,SAAS,EAAExD,aAAc;cACzByD,WAAW,EAAC,mCAAU;cACtBC,QAAQ,EAAE;gBAAEC,OAAO,EAAE,CAAC;gBAAEC,OAAO,EAAE;cAAE,CAAE;cACrCvD,KAAK,EAAE;gBACLwD,MAAM,EAAE,MAAM;gBACdC,SAAS,EAAE,MAAM;gBACjBC,OAAO,EAAE,MAAM;gBACftD,OAAO,EAAE;cACX;YAAE,CACH;UAAC,CACC,CAAC,EAGL2B,UAAU,CAACtM,MAAM,EAAE2M,aAAa,CAAC;QAAA,CAC/B,CAAC,EAGLL,UAAU,CACTnM,MAAM,eACNmK,IAAA;UAAKoB,SAAS,EAAEtL,MAAM,CAAC8N,GAAI;UAAAtD,QAAA,EAAC;QAE5B,CAAK,CACP,CAAC;MAAA,CACE;IAAC,CACH,CAAC;EAAA,CACH,CAAC;AAEV,CACF,CAAC;AAEDjN,UAAU,CAACwQ,WAAW,GAAG,YAAY;AAErC,OAAOC,gBAAgB;AAAiB,SAAAC,GAAA,IAAA/D,IAAA;AAAA,SAAAgE,QAAA,IAAA9C,SAAA;AAAA,SAAA+C,IAAA,IAAA3B,KAAA;AAMxC,IAAM4B,cAAc,GAAG7Q,UAAiC;AACxD6Q,cAAc,CAACC,MAAM,GAAGL,gBAAgB;AAExC,eAAeI,cAAc"}
1
+ {"version":3,"names":["React","useState","useRef","useCallback","forwardRef","useImperativeHandle","useMemo","useEffect","Popconfirm","message","Tooltip","Input","Modal","ClearOutlined","LoadingOutlined","ArrowUpOutlined","PaperClipOutlined","useStyles","FileGallery","QuickList","InputTags","InlineTagInput","getExt","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","XAdkSender","_ref","ref","_ref$clearBtnShow","clearBtnShow","_ref$allowUpload","allowUpload","_ref$draggable","draggable","_ref$loading","loading","_ref$disabled","disabled","controlledValue","value","_ref$defaultValue","defaultValue","_ref$uploadRequest","uploadRequest","onClear","onChange","onSubmit","onStop","onFilesChange","onUploadSuccess","onUploadError","_ref$maxFileSize","maxFileSize","_ref$placeholder","placeholder","_ref$validators","validators","customValidators","_ref$allowedFileTypes","allowedFileTypes","_ref$maxFiles","maxFiles","Infinity","sendButtonRender","suffix","header","prefix","footer","footerLeft","_ref$quickKeys","quickKeys","_ref$inlineTags","inlineTags","renderTag","controlledTags","tags","_ref$defaultTags","defaultTags","onTagsChange","onQuickKeyTrigger","styles","isControlled","undefined","_useState","_useState2","_slicedToArray","internalValue","setInternalValue","setValue","newValue","isTagsControlled","_useState3","_useState4","internalTags","setInternalTags","setTags","newTags","_useState5","_useState6","files","setFiles","_useState7","_useState8","isDragOver","setIsDragOver","containerRef","fileInputRef","textareaRef","inlineInputRef","_useState9","_useState10","activeQuickKey","setActiveQuickKey","_useState11","_useState12","quickKeyKeyword","setQuickKeyKeyword","_useState13","_useState14","quickKeyTriggerIdx","setQuickKeyTriggerIdx","_useState15","_useState16","quickKeyActiveIndex","setQuickKeyActiveIndex","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","isDuplicateFile","f","name","size","builtInValidators","_file","_ref3","concat","maxSize","_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","triggerFileSelect","current","click","_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","handleDragOver","preventDefault","stopPropagation","handleDragLeave","handleDrop","dataTransfer","handleRemoveTag","t","activeQuickKeyConfig","find","qk","key","activeQuickKeyOptionsLength","options","getNextQuickKeyIndex","step","detectQuickKey","text","cursorPos","quickKeyChars","textBeforeCursor","found","i","char","test","keyword","triggerChar","handleQuickKeySelect","option","_activeQuickKeyConfig","_inlineInputRef$curre2","_textareaRef$current","newTag","label","icon","onSelect","call","_inlineInputRef$curre","insertTag","start","end","focus","handleInputChange","target","selectionStart","handleInlineInputChange","_inlineInputRef$curre3","getCursorOffset","handleQuickKeyByText","lastChar","isQuickListControlKey","handleKeyUp","handleInlineKeyUp","_inlineInputRef$curre4","_inlineInputRef$curre5","getText","handleSubmit","trim","warning","successFiles","uploadingFiles","confirm","title","content","okText","cancelText","onOk","formattedFiles","formatFilesForServer","onCancel","info","fileName","fileType","fileSize","mimeType","raw","handleKeyDown","quickKeyOptions","min","shiftKey","renderFileList","style","display","flexWrap","gap","padding","children","removable","onRemove","containerClass","container","uploading","isDisabled","hasContent","hasFiles","hasTags","canSend","SendButton","props","onSend","className","iconButton","sendButton","onClick","spin","UploadButton","uploadButton","ClearButton","onConfirm","placement","clearButton","actionsComponents","renderSlot","slot","oriNode","result","components","defaultSuffix","buttonGroup","defaultActionBar","actionBar","actionBarLeft","actionBarRight","onDragOver","onDragLeave","onDrop","multiple","accept","join","mainArea","senderWrap","inputAndButtons","onKeyDown","onKeyUp","textAreaWrapper","TextArea","textArea","autoSize","minRows","maxRows","border","boxShadow","outline","quickListWrapper","config","activeIndex","onClose","visible","tip","displayName"],"sources":["../../../../src/components/XAdkSender/index.tsx"],"sourcesContent":["import React, {\n useState,\n useRef,\n useCallback,\n forwardRef,\n useImperativeHandle,\n useMemo,\n useEffect,\n} 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 InputTag,\n} from \"@/types\";\nimport { useStyles } from \"./styles\";\nimport FileGallery from \"../FileGallery\";\nimport QuickList from \"./QuickList\";\nimport InputTags from \"./InputTags\";\nimport InlineTagInput, { InlineTagInputRef } from \"./InlineTagInput\";\nimport { getExt } from \"@/utils/file\";\n\nconst XAdkSender = forwardRef<XAdkSenderHandle, XAdkSenderProps>(\n (\n {\n clearBtnShow = true,\n allowUpload = false,\n draggable = true,\n loading = false,\n disabled = false,\n value: controlledValue,\n defaultValue = \"\",\n uploadRequest = () => {},\n onClear,\n onChange,\n onSubmit,\n onStop,\n onFilesChange,\n onUploadSuccess,\n onUploadError,\n maxFileSize = 10,\n placeholder = \"\",\n validators: customValidators = [],\n allowedFileTypes = [],\n maxFiles = Infinity,\n sendButtonRender,\n suffix,\n header,\n prefix,\n footer,\n footerLeft,\n quickKeys = [],\n inlineTags = false,\n renderTag,\n tags: controlledTags,\n defaultTags = [],\n onTagsChange,\n onQuickKeyTrigger,\n },\n ref,\n ) => {\n const styles = useStyles();\n const isControlled = controlledValue !== undefined;\n const [internalValue, setInternalValue] = useState<string>(defaultValue);\n const value = isControlled ? controlledValue : internalValue;\n const setValue = (newValue: string) => {\n if (!isControlled) {\n setInternalValue(newValue);\n }\n onChange?.(newValue);\n };\n\n // tags 支持受控/非受控两种模式;inlineTags 打开时会和输入内容混排。\n const isTagsControlled = controlledTags !== undefined;\n const [internalTags, setInternalTags] = useState<InputTag[]>(defaultTags);\n const tags = isTagsControlled ? controlledTags : internalTags;\n const setTags = (newTags: InputTag[]) => {\n if (!isTagsControlled) {\n setInternalTags(newTags);\n }\n onTagsChange?.(newTags);\n };\n\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 textareaRef = useRef<any>(null);\n const inlineInputRef = useRef<InlineTagInputRef>(null);\n\n // 快捷键弹层状态:记录触发字符、关键词,以及触发字符在纯文本中的位置。\n // SDK 不内置搜索框;业务方可在 onQuickKeyTrigger 中根据 keyword 自行更新 quickKeys.options。\n const [activeQuickKey, setActiveQuickKey] = useState<string | null>(null);\n const [quickKeyKeyword, setQuickKeyKeyword] = useState(\"\");\n const [quickKeyTriggerIdx, setQuickKeyTriggerIdx] = useState(-1);\n const [quickKeyActiveIndex, setQuickKeyActiveIndex] = useState(0);\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 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 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 (_file, { files }) => {\n if (files.length >= maxFiles) {\n return `最多只能上传 ${maxFiles} 个文件`;\n }\n return null;\n },\n (file) => {\n const maxSize = maxFileSize * 1024 * 1024;\n if (file.size > maxSize) {\n return `文件大小不能超过 ${maxFileSize}MB`;\n }\n return null;\n },\n (file) => {\n if (!checkFileType(file)) {\n return \"不支持的文件类型\";\n }\n return null;\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 方法\n useImperativeHandle(\n ref,\n () => ({\n addFiles: (rawFiles: File[]) => {\n handleFileSelect(rawFiles);\n },\n }),\n [handleFileSelect],\n );\n\n // 触发文件选择\n const triggerFileSelect = () => {\n if (fileInputRef.current) {\n fileInputRef.current.click();\n }\n };\n\n // 上传文件\n const uploadFiles = async (fileList: LocalFile[]) => {\n for (const localFile of fileList) {\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 ||\n responseData.fileUrl ||\n 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 onFilesChange?.(next);\n return next;\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 handleRemoveTag = useCallback(\n (id: string) => {\n setTags(tags.filter((t) => t.id !== id));\n },\n [tags, setTags],\n );\n\n // 查找当前活跃的快捷键配置\n const activeQuickKeyConfig = useMemo(() => {\n if (!activeQuickKey) return null;\n return quickKeys.find((qk) => qk.key === activeQuickKey) || null;\n }, [activeQuickKey, quickKeys]);\n\n const activeQuickKeyOptionsLength = activeQuickKeyConfig?.options.length || 0;\n\n useEffect(() => {\n setQuickKeyActiveIndex(0);\n }, [activeQuickKey]);\n\n useEffect(() => {\n if (activeQuickKeyOptionsLength <= 0) {\n setQuickKeyActiveIndex(0);\n return;\n }\n\n // 业务方可能在 onQuickKeyTrigger 中动态更新 options;\n // 这里只做越界归一化,不重置有效索引,避免键盘高亮移动后又跳回第一项。\n setQuickKeyActiveIndex(\n (prev) => ((prev % activeQuickKeyOptionsLength) + activeQuickKeyOptionsLength) %\n activeQuickKeyOptionsLength,\n );\n }, [activeQuickKeyOptionsLength]);\n\n const getNextQuickKeyIndex = useCallback(\n (current: number, step: number) => {\n if (activeQuickKeyOptionsLength <= 0) return 0;\n return (\n (current + step + activeQuickKeyOptionsLength) %\n activeQuickKeyOptionsLength\n );\n },\n [activeQuickKeyOptionsLength],\n );\n\n // 从当前光标前的连续文本片段中查找最近的快捷键,例如 abc@doc 会触发 @。\n const detectQuickKey = useCallback(\n (text: string, cursorPos: number) => {\n const quickKeyChars = quickKeys.map((qk) => qk.key);\n if (quickKeyChars.length === 0) return;\n\n const textBeforeCursor = text.slice(0, cursorPos);\n let found = false;\n for (let i = textBeforeCursor.length - 1; i >= 0; i--) {\n const char = textBeforeCursor[i];\n if (/\\s/.test(char)) break;\n if (quickKeyChars.includes(char)) {\n const keyword = textBeforeCursor.slice(i + 1);\n setActiveQuickKey(char);\n setQuickKeyKeyword(keyword);\n setQuickKeyTriggerIdx(i);\n setQuickKeyActiveIndex(0);\n onQuickKeyTrigger?.(char, keyword);\n found = true;\n break;\n }\n }\n\n if (!found && activeQuickKey) {\n const triggerChar = text[quickKeyTriggerIdx];\n const keyword = text.slice(quickKeyTriggerIdx + 1, cursorPos);\n if (\n quickKeyTriggerIdx < 0 ||\n !triggerChar ||\n !quickKeyChars.includes(triggerChar) ||\n /\\s/.test(keyword)\n ) {\n setActiveQuickKey(null);\n setQuickKeyKeyword(\"\");\n setQuickKeyTriggerIdx(-1);\n setQuickKeyActiveIndex(0);\n } else {\n setQuickKeyKeyword(keyword);\n }\n }\n },\n [activeQuickKey, onQuickKeyTrigger, quickKeyTriggerIdx, quickKeys],\n );\n\n // 选择快捷项后转成结构化 tag;inline 模式会替换掉触发字符和关键词。\n const handleQuickKeySelect = useCallback(\n (option: any) => {\n const newTag: InputTag = {\n id: generateId(),\n label: option.label,\n type: activeQuickKey || \"unknown\",\n icon: option.icon,\n data: option,\n };\n activeQuickKeyConfig?.onSelect?.(option);\n\n if (inlineTags) {\n inlineInputRef.current?.insertTag(newTag, {\n start: quickKeyTriggerIdx,\n end: quickKeyTriggerIdx + 1 + quickKeyKeyword.length,\n });\n } else {\n setTags([...tags, newTag]);\n\n // 从输入框中删除快捷键字符和关键词\n if (quickKeyTriggerIdx >= 0) {\n const newValue =\n value.slice(0, quickKeyTriggerIdx) +\n value.slice(quickKeyTriggerIdx + 1 + quickKeyKeyword.length);\n setValue(newValue);\n }\n }\n\n setActiveQuickKey(null);\n setQuickKeyKeyword(\"\");\n setQuickKeyTriggerIdx(-1);\n setQuickKeyActiveIndex(0);\n inlineTags\n ? inlineInputRef.current?.focus()\n : textareaRef.current?.focus();\n },\n [\n activeQuickKey,\n activeQuickKeyConfig,\n inlineTags,\n tags,\n setTags,\n value,\n quickKeyTriggerIdx,\n quickKeyKeyword,\n setValue,\n ],\n );\n\n // 处理输入框变化(含快捷键检测)\n const handleInputChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n const newValue = e.target.value;\n setValue(newValue);\n\n // 检测快捷键触发\n detectQuickKey(newValue, e.target.selectionStart || 0);\n };\n\n const handleInlineInputChange = (newValue: string) => {\n setValue(newValue);\n // contenteditable 的 selection 不一定和 React state 同步,需实时读取内部光标 offset。\n detectQuickKey(\n newValue,\n inlineInputRef.current?.getCursorOffset() || newValue.length,\n );\n };\n\n const handleQuickKeyByText = (text: string, cursorPos: number) => {\n const quickKeyChars = quickKeys.map((qk) => qk.key);\n if (quickKeyChars.length === 0) return;\n\n const textBeforeCursor = text.slice(0, cursorPos);\n\n // 检测刚输入的字符是否是快捷键\n const lastChar = textBeforeCursor[cursorPos - 1];\n if (lastChar && quickKeyChars.includes(lastChar)) {\n // 上下键导航后会触发 keyup,此时光标前仍是同一个快捷键字符;\n // 如果重复重置 activeIndex,视觉上会“移动一下又回到第一项”。\n if (activeQuickKey === lastChar && quickKeyTriggerIdx === cursorPos - 1) {\n return;\n }\n setActiveQuickKey(lastChar);\n setQuickKeyKeyword(\"\");\n setQuickKeyTriggerIdx(cursorPos - 1);\n setQuickKeyActiveIndex(0);\n onQuickKeyTrigger?.(lastChar, \"\");\n }\n };\n\n // onChange 负责更新搜索词;onKeyUp 兜底捕获刚输入的快捷键字符。\n const isQuickListControlKey = (key: string) =>\n key === \"ArrowDown\" || key === \"ArrowUp\" || key === \"Enter\" || key === \"Escape\";\n\n const handleKeyUp = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (activeQuickKey && isQuickListControlKey(e.key)) return;\n const target = e.target as HTMLTextAreaElement;\n handleQuickKeyByText(target.value || \"\", target.selectionStart || 0);\n };\n\n const handleInlineKeyUp = (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (activeQuickKey && isQuickListControlKey(e.key)) return;\n // inline 输入区不是 textarea,不能读 event.target.value,只能从 ref 取纯文本。\n const text = inlineInputRef.current?.getText() || \"\";\n const cursorPos =\n inlineInputRef.current?.getCursorOffset() || text.length;\n handleQuickKeyByText(text, cursorPos);\n };\n\n // 处理提交\n const handleSubmit = () => {\n if (!value.trim() && files.length === 0 && tags.length === 0) {\n message.warning(\"请输入消息或选择文件\");\n return;\n }\n\n const successFiles = files.filter((file) => file.status === \"success\");\n const uploadingFiles = files.filter(\n (file) => file.status === \"uploading\",\n );\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 tags,\n });\n }\n\n setValue(\"\");\n setTags([]);\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 tags,\n });\n }\n\n setValue(\"\");\n setTags([]);\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 ||\n responseData.fileUrl ||\n responseData.url ||\n \"\",\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 handleKeyDown = (e: React.KeyboardEvent<HTMLElement>) => {\n const quickKeyOptions = activeQuickKeyConfig?.options || [];\n\n if (activeQuickKey && quickKeyOptions.length > 0) {\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n setQuickKeyActiveIndex((prev) => getNextQuickKeyIndex(prev, 1));\n return;\n }\n\n if (e.key === \"ArrowUp\") {\n e.preventDefault();\n setQuickKeyActiveIndex((prev) => getNextQuickKeyIndex(prev, -1));\n return;\n }\n\n if (e.key === \"Enter\") {\n e.preventDefault();\n handleQuickKeySelect(\n quickKeyOptions[\n Math.min(quickKeyActiveIndex, quickKeyOptions.length - 1)\n ],\n );\n return;\n }\n\n if (e.key === \"Escape\") {\n e.preventDefault();\n setActiveQuickKey(null);\n setQuickKeyKeyword(\"\");\n setQuickKeyTriggerIdx(-1);\n setQuickKeyActiveIndex(0);\n return;\n }\n }\n\n if (e.key === \"Enter\" && !e.shiftKey && !activeQuickKey) {\n e.preventDefault();\n handleSubmit();\n }\n };\n\n // 渲染文件列表\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 const hasContent = value.trim().length > 0;\n const hasFiles = files.some((f) => f.status === \"success\");\n const hasTags = tags.length > 0;\n const canSend = hasContent || hasFiles || hasTags;\n\n // 定义按钮组件\n const SendButton = (props: any) => {\n if (sendButtonRender) {\n return (\n <>\n {sendButtonRender({\n loading,\n disabled: uploading || disabled,\n canSend,\n onSend: handleSubmit,\n onStop,\n })}\n </>\n );\n }\n return (\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\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 // 默认后缀仅保留发送/停止按钮;上传与清空统一放到底部 actionBar,方便业务扩展左侧按钮组。\n const defaultSuffix = (\n <div className={styles.buttonGroup}>\n {sendButtonRender ? (\n sendButtonRender({\n loading,\n disabled: uploading || disabled,\n canSend,\n onSend: handleSubmit,\n onStop,\n })\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 )}\n </div>\n );\n\n const defaultActionBar = (\n <div className={styles.actionBar}>\n <div className={styles.actionBarLeft}>\n {allowUpload && <UploadButton />}\n {renderSlot(footerLeft, false)}\n </div>\n <div className={styles.actionBarRight}>\n {clearBtnShow && <ClearButton />}\n {renderSlot(suffix, defaultSuffix)}\n </div>\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 {/* textarea 模式下保留历史标签展示;inlineTags 模式标签直接混排在输入区内 */}\n {!inlineTags && (\n <InputTags tags={tags} onRemove={handleRemoveTag} />\n )}\n\n <div className={styles.inputAndButtons}>\n {/* 前缀插槽 */}\n {renderSlot(prefix, false)}\n\n {inlineTags ? (\n <InlineTagInput\n ref={inlineInputRef}\n value={value}\n tags={tags}\n placeholder={placeholder}\n disabled={isDisabled}\n onChange={handleInlineInputChange}\n onTagsChange={setTags}\n onKeyDown={handleKeyDown as any}\n onKeyUp={handleInlineKeyUp}\n renderTag={renderTag}\n />\n ) : (\n <div className={styles.textAreaWrapper}>\n <Input.TextArea\n ref={textareaRef}\n className={styles.textArea}\n value={value}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n onKeyUp={handleKeyUp}\n placeholder={placeholder}\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 </div>\n\n {/* 快捷键弹出列表 */}\n {activeQuickKey && activeQuickKeyConfig && (\n <div className={styles.quickListWrapper}>\n <QuickList\n config={activeQuickKeyConfig}\n activeIndex={quickKeyActiveIndex}\n onSelect={handleQuickKeySelect}\n onClose={() => {\n setActiveQuickKey(null);\n setQuickKeyKeyword(\"\");\n setQuickKeyTriggerIdx(-1);\n setQuickKeyActiveIndex(0);\n }}\n visible={true}\n />\n </div>\n )}\n\n {/* 底部操作行:左侧上传/业务按钮,右侧清空/发送按钮 */}\n {footer === false\n ? defaultActionBar\n : renderSlot(footer, defaultActionBar)}\n </div>\n </div>\n\n {/* 提示文案 */}\n {!footer && (\n <div className={styles.tip}>\n 内容由AI生成,无法确保真实准确,仅供参考\n </div>\n )}\n </div>\n );\n },\n);\n\nXAdkSender.displayName = \"XAdkSender\";\nexport default XAdkSender;\n"],"mappings":"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"}
@@ -5,12 +5,27 @@ export declare const useStyles: () => {
5
5
  inputAndButtons: string;
6
6
  textAreaWrapper: string;
7
7
  textArea: string;
8
+ inlineInputWrapper: string;
9
+ inlineInput: string;
10
+ inlineTag: string;
8
11
  buttonGroup: string;
9
12
  iconButton: string;
10
13
  clearButton: string;
11
14
  uploadButton: string;
12
15
  sendButton: string;
13
16
  tip: string;
17
+ actionBar: string;
18
+ actionBarLeft: string;
19
+ actionBarRight: string;
20
+ quickListWrapper: string;
21
+ quickList: string;
22
+ quickListHeader: string;
23
+ quickListBody: string;
24
+ quickListEmpty: string;
25
+ quickListGroup: string;
26
+ quickListItem: string;
27
+ inputTags: string;
28
+ inputTag: string;
14
29
  } & {
15
30
  w: (width: string | number) => string;
16
31
  h: (height: string | number) => string;
@@ -1,5 +1,5 @@
1
1
  import _taggedTemplateLiteral from "@babel/runtime/helpers/esm/taggedTemplateLiteral";
2
- var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12;
2
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17, _templateObject18, _templateObject19, _templateObject20, _templateObject21, _templateObject22, _templateObject23, _templateObject24, _templateObject25, _templateObject26, _templateObject27;
3
3
  import { css } from "@emotion/css";
4
4
  import { withBasicStyles } from "../../styles/common";
5
5
  export var useStyles = withBasicStyles(function () {
@@ -7,27 +7,45 @@ export var useStyles = withBasicStyles(function () {
7
7
  // 容器样式 - 最外层边框
8
8
  container: css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n position: relative;\n padding: 0 15px 10px;\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 border-radius: 20px;\n overflow: hidden;\n background: #fff;\n "]))),
10
+ mainArea: css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n border-radius: 20px;\n overflow: visible;\n background: #fff;\n "]))),
11
11
  // 发送区域
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 z-index: 1;\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: 10px 12px 8px;\n position: relative;\n z-index: 1;\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
- inputAndButtons: css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n flex: 1;\n display: flex;\n align-items: flex-end;\n gap: 8px;\n "]))),
14
+ inputAndButtons: css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n flex: 1;\n display: flex;\n align-items: center;\n gap: 8px;\n "]))),
15
15
  // 文本输入框容器
16
- textAreaWrapper: css(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n flex: 1;\n display: flex;\n align-items: center;\n background: #fff;\n padding: 0 16px;\n min-height: 44px;\n\n /* \u79FB\u9664\u6240\u6709\u84DD\u8272\u6548\u679C */\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 "]))),
16
+ textAreaWrapper: css(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n flex: 1;\n display: flex;\n align-items: center;\n background: #fff;\n padding: 0 4px;\n min-height: 44px;\n\n /* \u79FB\u9664\u6240\u6709\u84DD\u8272\u6548\u679C */\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 "]))),
17
17
  // 文本输入框
18
18
  textArea: css(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral(["\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 "]))),
19
+ inlineInputWrapper: css(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral(["\n flex: 1;\n min-height: 44px;\n display: flex;\n align-items: center;\n padding: 0 4px;\n background: #fff;\n "]))),
20
+ inlineInput: css(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral(["\n width: 100%;\n min-height: 24px;\n max-height: 112px;\n overflow-y: auto;\n outline: none;\n border: none;\n color: #262626;\n font-size: 14px;\n line-height: 24px;\n white-space: pre-wrap;\n word-break: break-word;\n\n &[data-empty=\"true\"]::before {\n content: attr(data-placeholder);\n color: #bfbfbf;\n pointer-events: none;\n }\n "]))),
21
+ inlineTag: css(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral(["\n display: inline-flex;\n align-items: center;\n gap: 4px;\n max-width: 180px;\n height: 22px;\n padding: 0 7px;\n margin: 0 3px;\n vertical-align: baseline;\n border-radius: 6px;\n border: 1px solid #d6e4ff;\n background: #f0f7ff;\n color: #0958d9;\n font-size: 12px;\n line-height: 20px;\n user-select: none;\n\n .xadk-inline-tag-label {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .xadk-inline-tag-close {\n cursor: pointer;\n color: #597ef7;\n font-size: 12px;\n line-height: 1;\n }\n "]))),
19
22
  // 按钮组
20
- buttonGroup: css(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral(["\n display: flex;\n gap: 8px;\n align-items: center;\n height: 44px;\n "]))),
23
+ buttonGroup: css(_templateObject10 || (_templateObject10 = _taggedTemplateLiteral(["\n display: flex;\n gap: 8px;\n align-items: center;\n height: 36px;\n "]))),
21
24
  // 按钮统一样式
22
- iconButton: css(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral(["\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 "]))),
25
+ iconButton: css(_templateObject11 || (_templateObject11 = _taggedTemplateLiteral(["\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 "]))),
23
26
  // 清空按钮
24
- clearButton: css(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral(["\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 "]))),
27
+ clearButton: css(_templateObject12 || (_templateObject12 = _taggedTemplateLiteral(["\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 "]))),
25
28
  // 上传按钮
26
- uploadButton: css(_templateObject10 || (_templateObject10 = _taggedTemplateLiteral(["\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 "]))),
29
+ uploadButton: css(_templateObject13 || (_templateObject13 = _taggedTemplateLiteral(["\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 "]))),
27
30
  // 发送按钮
28
- sendButton: css(_templateObject11 || (_templateObject11 = _taggedTemplateLiteral(["\n background: #000;\n border: none;\n color: #fff;\n\n &:hover:not(:disabled) {\n background: #333; /* \u60AC\u505C\u72B6\u6001 */\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; /* \u7981\u7528\u72B6\u6001\u4E5F\u4FDD\u6301\u6DE1\u7070\u8272 */\n }\n }\n "]))),
31
+ sendButton: css(_templateObject14 || (_templateObject14 = _taggedTemplateLiteral(["\n background: #000;\n border: none;\n color: #fff;\n\n &:hover:not(:disabled) {\n background: #333; /* \u60AC\u505C\u72B6\u6001 */\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; /* \u7981\u7528\u72B6\u6001\u4E5F\u4FDD\u6301\u6DE1\u7070\u8272 */\n }\n }\n "]))),
29
32
  // 底部提示
30
- tip: css(_templateObject12 || (_templateObject12 = _taggedTemplateLiteral(["\n margin: 12px 0;\n text-align: center;\n font-size: 12px;\n color: #8c8c8c;\n "])))
33
+ tip: css(_templateObject15 || (_templateObject15 = _taggedTemplateLiteral(["\n margin: 12px 0;\n text-align: center;\n font-size: 12px;\n color: #8c8c8c;\n "]))),
34
+ actionBar: css(_templateObject16 || (_templateObject16 = _taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 12px;\n min-height: 36px;\n "]))),
35
+ actionBarLeft: css(_templateObject17 || (_templateObject17 = _taggedTemplateLiteral(["\n min-width: 0;\n display: flex;\n align-items: center;\n gap: 8px;\n flex: 1;\n "]))),
36
+ actionBarRight: css(_templateObject18 || (_templateObject18 = _taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: 8px;\n flex-shrink: 0;\n "]))),
37
+ // 快捷键弹出列表外层容器
38
+ quickListWrapper: css(_templateObject19 || (_templateObject19 = _taggedTemplateLiteral(["\n position: absolute;\n left: 0;\n bottom: 100%;\n margin-bottom: 4px;\n z-index: 100;\n "]))),
39
+ // 快捷键弹出列表
40
+ quickList: css(_templateObject20 || (_templateObject20 = _taggedTemplateLiteral(["\n max-height: 320px;\n width: 280px;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n background: #fff;\n border-radius: 12px;\n box-shadow: 0 8px 40px 0 rgba(0, 0, 0, 0.12);\n "]))),
41
+ quickListHeader: css(_templateObject21 || (_templateObject21 = _taggedTemplateLiteral(["\n padding: 12px 16px 0;\n font-size: 13px;\n font-weight: 500;\n color: #8c8c8c;\n "]))),
42
+ quickListBody: css(_templateObject22 || (_templateObject22 = _taggedTemplateLiteral(["\n flex: 1;\n overflow-y: auto;\n padding: 4px 0;\n "]))),
43
+ quickListEmpty: css(_templateObject23 || (_templateObject23 = _taggedTemplateLiteral(["\n padding: 24px 16px;\n text-align: center;\n color: #8c8c8c;\n font-size: 13px;\n "]))),
44
+ quickListGroup: css(_templateObject24 || (_templateObject24 = _taggedTemplateLiteral(["\n padding: 8px 16px 4px;\n font-size: 11px;\n font-weight: 500;\n color: #8c8c8c;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n "]))),
45
+ quickListItem: css(_templateObject25 || (_templateObject25 = _taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 8px 16px;\n cursor: pointer;\n transition: background 0.15s ease;\n\n &:hover {\n background: #f5f5f5;\n }\n\n &.active {\n background: #f0f7ff;\n }\n\n .quick-list-item-icon {\n width: 28px;\n height: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n background: #f5f5f5;\n flex-shrink: 0;\n }\n\n .quick-list-item-content {\n flex: 1;\n min-width: 0;\n }\n\n .quick-list-item-label {\n font-size: 13px;\n font-weight: 500;\n color: #262626;\n line-height: 1.4;\n }\n\n .quick-list-item-desc {\n font-size: 12px;\n color: #8c8c8c;\n line-height: 1.4;\n }\n "]))),
46
+ // 输入框内标签
47
+ inputTags: css(_templateObject26 || (_templateObject26 = _taggedTemplateLiteral(["\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n padding: 4px 0 8px;\n "]))),
48
+ inputTag: css(_templateObject27 || (_templateObject27 = _taggedTemplateLiteral(["\n margin: 0;\n font-size: 12px;\n border-radius: 6px;\n "])))
31
49
  };
32
50
  });
33
51
  //# sourceMappingURL=styles.js.map
@@ -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 position: relative;\n padding: 0 15px 10px;\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 border-radius: 20px;\n overflow: hidden;\n background: #fff;\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 z-index: 1;\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,gQAWb;IAED;IACAC,QAAQ,EAAEN,GAAG,CAAAO,gBAAA,KAAAA,gBAAA,GAAAF,sBAAA,oFAIZ;IAED;IACAG,UAAU,EAAER,GAAG,CAAAS,gBAAA,KAAAA,gBAAA,GAAAJ,sBAAA,4pBAqBd;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","inlineInputWrapper","_templateObject7","inlineInput","_templateObject8","inlineTag","_templateObject9","buttonGroup","_templateObject10","iconButton","_templateObject11","clearButton","_templateObject12","uploadButton","_templateObject13","sendButton","_templateObject14","tip","_templateObject15","actionBar","_templateObject16","actionBarLeft","_templateObject17","actionBarRight","_templateObject18","quickListWrapper","_templateObject19","quickList","_templateObject20","quickListHeader","_templateObject21","quickListBody","_templateObject22","quickListEmpty","_templateObject23","quickListGroup","_templateObject24","quickListItem","_templateObject25","inputTags","_templateObject26","inputTag","_templateObject27"],"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 padding: 0 15px 10px;\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 border-radius: 20px;\n overflow: visible;\n background: #fff;\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: 10px 12px 8px;\n position: relative;\n z-index: 1;\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: center;\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 4px;\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 inlineInputWrapper: css`\n flex: 1;\n min-height: 44px;\n display: flex;\n align-items: center;\n padding: 0 4px;\n background: #fff;\n `,\n\n inlineInput: css`\n width: 100%;\n min-height: 24px;\n max-height: 112px;\n overflow-y: auto;\n outline: none;\n border: none;\n color: #262626;\n font-size: 14px;\n line-height: 24px;\n white-space: pre-wrap;\n word-break: break-word;\n\n &[data-empty=\"true\"]::before {\n content: attr(data-placeholder);\n color: #bfbfbf;\n pointer-events: none;\n }\n `,\n\n inlineTag: css`\n display: inline-flex;\n align-items: center;\n gap: 4px;\n max-width: 180px;\n height: 22px;\n padding: 0 7px;\n margin: 0 3px;\n vertical-align: baseline;\n border-radius: 6px;\n border: 1px solid #d6e4ff;\n background: #f0f7ff;\n color: #0958d9;\n font-size: 12px;\n line-height: 20px;\n user-select: none;\n\n .xadk-inline-tag-label {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .xadk-inline-tag-close {\n cursor: pointer;\n color: #597ef7;\n font-size: 12px;\n line-height: 1;\n }\n `,\n\n // 按钮组\n buttonGroup: css`\n display: flex;\n gap: 8px;\n align-items: center;\n height: 36px;\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 actionBar: css`\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 12px;\n min-height: 36px;\n `,\n\n actionBarLeft: css`\n min-width: 0;\n display: flex;\n align-items: center;\n gap: 8px;\n flex: 1;\n `,\n\n actionBarRight: css`\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: 8px;\n flex-shrink: 0;\n `,\n\n // 快捷键弹出列表外层容器\n quickListWrapper: css`\n position: absolute;\n left: 0;\n bottom: 100%;\n margin-bottom: 4px;\n z-index: 100;\n `,\n\n // 快捷键弹出列表\n quickList: css`\n max-height: 320px;\n width: 280px;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n background: #fff;\n border-radius: 12px;\n box-shadow: 0 8px 40px 0 rgba(0, 0, 0, 0.12);\n `,\n\n quickListHeader: css`\n padding: 12px 16px 0;\n font-size: 13px;\n font-weight: 500;\n color: #8c8c8c;\n `,\n\n quickListBody: css`\n flex: 1;\n overflow-y: auto;\n padding: 4px 0;\n `,\n\n quickListEmpty: css`\n padding: 24px 16px;\n text-align: center;\n color: #8c8c8c;\n font-size: 13px;\n `,\n\n quickListGroup: css`\n padding: 8px 16px 4px;\n font-size: 11px;\n font-weight: 500;\n color: #8c8c8c;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n `,\n\n quickListItem: css`\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 8px 16px;\n cursor: pointer;\n transition: background 0.15s ease;\n\n &:hover {\n background: #f5f5f5;\n }\n\n &.active {\n background: #f0f7ff;\n }\n\n .quick-list-item-icon {\n width: 28px;\n height: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n background: #f5f5f5;\n flex-shrink: 0;\n }\n\n .quick-list-item-content {\n flex: 1;\n min-width: 0;\n }\n\n .quick-list-item-label {\n font-size: 13px;\n font-weight: 500;\n color: #262626;\n line-height: 1.4;\n }\n\n .quick-list-item-desc {\n font-size: 12px;\n color: #8c8c8c;\n line-height: 1.4;\n }\n `,\n\n // 输入框内标签\n inputTags: css`\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n padding: 4px 0 8px;\n `,\n\n inputTag: css`\n margin: 0;\n font-size: 12px;\n border-radius: 6px;\n `,\n}));\n"],"mappings":"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"}
@@ -11,14 +11,13 @@ 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";
15
14
  import useADKChat from "./hooks/useADKChat";
16
15
  import { baseChatStrategies, basePreset, baseToolKindResolver, mergeChatStrategies, resolvePresetUploadRequest, resolveChatPreset, createXGroupUploadRequest, xGroupAdkPreset, xGroupToolKindResolver } from "./presets/xgroup";
17
16
  export { useChatState, useChatActions, useSession, } from "./components/XAdkProvider/context";
18
17
  export * from "./types";
19
18
  export type { ChatHookResult, ChatHookFactory } from "./types/ChatHook";
20
19
  export { useXAi, XAiProvider, XAiChatbot, XAiSDK, XAiSender, XAiConversations, useXAiSDK, request, };
21
- export { XAdkProvider, XAdkChatbot, XAdkSender, XAdkSenderSwitch, FileGallery, XAdkThoughtChain, useADKChat, baseChatStrategies, basePreset, baseToolKindResolver, createXGroupUploadRequest, mergeChatStrategies, resolvePresetUploadRequest, resolveChatPreset, xGroupAdkPreset, xGroupToolKindResolver, };
20
+ export { XAdkProvider, XAdkChatbot, XAdkSender, FileGallery, XAdkThoughtChain, useADKChat, baseChatStrategies, basePreset, baseToolKindResolver, createXGroupUploadRequest, mergeChatStrategies, resolvePresetUploadRequest, resolveChatPreset, xGroupAdkPreset, xGroupToolKindResolver, };
22
21
  import FolderTree from "./components/FolderTree";
23
22
  export { FolderTree };
24
23
  export type { FolderTreeProps, FolderTreeData, FileContentService, FolderTreeRef, } from "./components/FolderTree";
package/dist/esm/index.js CHANGED
@@ -14,7 +14,6 @@ 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";
18
17
  import useADKChat from "./hooks/useADKChat";
19
18
  import { baseChatStrategies, basePreset, baseToolKindResolver, mergeChatStrategies, resolvePresetUploadRequest, resolveChatPreset, createXGroupUploadRequest, xGroupAdkPreset, xGroupToolKindResolver } from "./presets/xgroup";
20
19
 
@@ -28,7 +27,7 @@ export * from "./types";
28
27
  export { useXAi, XAiProvider, XAiChatbot, XAiSDK, XAiSender, XAiConversations, useXAiSDK, request };
29
28
 
30
29
  // 新 API - 推荐使用
31
- export { XAdkProvider, XAdkChatbot, XAdkSender, XAdkSenderSwitch, FileGallery, XAdkThoughtChain, useADKChat, baseChatStrategies, basePreset, baseToolKindResolver, createXGroupUploadRequest, mergeChatStrategies, resolvePresetUploadRequest, resolveChatPreset, xGroupAdkPreset, xGroupToolKindResolver };
30
+ export { XAdkProvider, XAdkChatbot, XAdkSender, FileGallery, XAdkThoughtChain, useADKChat, baseChatStrategies, basePreset, baseToolKindResolver, createXGroupUploadRequest, mergeChatStrategies, resolvePresetUploadRequest, resolveChatPreset, xGroupAdkPreset, xGroupToolKindResolver };
32
31
 
33
32
  // FolderTree 文件树组件
34
33
  import FolderTree from "./components/FolderTree";
@@ -1 +1 @@
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","FolderTree","default","MarkdownRender","FunctionCallRender","ThinkRender","tokens","tokenDefaults","token","cssVarStyle","useAdkConversation","createXGroupOpenApiTransport"],"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/xgroup\";\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// FolderTree 文件树组件\nimport FolderTree from \"./components/FolderTree\";\nexport { FolderTree };\nexport type {\n FolderTreeProps,\n FolderTreeData,\n FileContentService,\n FolderTreeRef,\n} from \"./components/FolderTree\";\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 ThoughtChainStatus,\n} from \"./types/XAdkThoughtChain\";\n\n// 设计令牌导出 - 供引用方覆盖样式\nexport { tokens, tokenDefaults, token, cssVarStyle } from \"./styles/tokens\";\n\n// Headless ADK data-flow APIs\nexport * from \"./core\";\nexport { default as useAdkConversation } from \"./react/useAdkConversation\";\nexport type { UseAdkConversationResult } from \"./react/useAdkConversation\";\nexport { createXGroupOpenApiTransport } from \"./presets/xgroup\";\nexport type { XGroupOpenApiTransportOptions } from \"./presets/xgroup\";\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,OAAOI,UAAU;AACjB,SAASA,UAAU;AAQnB;AACA,SAASC,OAAO,IAAIC,cAAc;AAClC,SAASD,OAAO,IAAIE,kBAAkB;AACtC,SAASF,OAAO,IAAIG,WAAW;;AAE/B;;AASA;AACA,SAASC,MAAM,EAAEC,aAAa,EAAEC,KAAK,EAAEC,WAAW;;AAElD;AACA;AACA,SAASP,OAAO,IAAIQ,kBAAkB;AAEtC,SAASC,4BAA4B"}
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","FolderTree","default","MarkdownRender","FunctionCallRender","ThinkRender","tokens","tokenDefaults","token","cssVarStyle","useAdkConversation","createXGroupOpenApiTransport"],"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/xgroup\";\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// FolderTree 文件树组件\nimport FolderTree from \"./components/FolderTree\";\nexport { FolderTree };\nexport type {\n FolderTreeProps,\n FolderTreeData,\n FileContentService,\n FolderTreeRef,\n} from \"./components/FolderTree\";\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 ThoughtChainStatus,\n} from \"./types/XAdkThoughtChain\";\n\n// 设计令牌导出 - 供引用方覆盖样式\nexport { tokens, tokenDefaults, token, cssVarStyle } from \"./styles/tokens\";\n\n// Headless ADK data-flow APIs\nexport * from \"./core\";\nexport { default as useAdkConversation } from \"./react/useAdkConversation\";\nexport type { UseAdkConversationResult } from \"./react/useAdkConversation\";\nexport { createXGroupOpenApiTransport } from \"./presets/xgroup\";\nexport type { XGroupOpenApiTransportOptions } from \"./presets/xgroup\";\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,OAAOI,UAAU;AACjB,SAASA,UAAU;AAQnB;AACA,SAASC,OAAO,IAAIC,cAAc;AAClC,SAASD,OAAO,IAAIE,kBAAkB;AACtC,SAASF,OAAO,IAAIG,WAAW;;AAE/B;;AASA;AACA,SAASC,MAAM,EAAEC,aAAa,EAAEC,KAAK,EAAEC,WAAW;;AAElD;AACA;AACA,SAASP,OAAO,IAAIQ,kBAAkB;AAEtC,SAASC,4BAA4B"}
@@ -1,4 +1,41 @@
1
1
  import React from "react";
2
+ /** 快捷键触发的列表项 */
3
+ export interface QuickListOption {
4
+ id: string;
5
+ label: string;
6
+ description?: string;
7
+ icon?: React.ReactNode;
8
+ /** 分组名(用于聚合列表,子分组通过下划线分割) */
9
+ group?: string;
10
+ [key: string]: any;
11
+ }
12
+ /** 快捷键配置 */
13
+ export interface QuickKeyConfig {
14
+ /** 触发字符,如 '@', '#', '$' */
15
+ key: string;
16
+ /** 列表标题 */
17
+ title?: string;
18
+ /** 列表数据 */
19
+ options: QuickListOption[];
20
+ /** 自定义列表项渲染 */
21
+ renderItem?: (option: QuickListOption) => React.ReactNode;
22
+ /** 选中回调 */
23
+ onSelect?: (option: QuickListOption) => void;
24
+ }
25
+ /** 输入框内标签 */
26
+ export interface InputTag {
27
+ id: string;
28
+ label: string;
29
+ /** 标签类型,如 'aggregation', 'skill', 'app' */
30
+ type: string;
31
+ color?: string;
32
+ icon?: React.ReactNode;
33
+ /** 原始数据 */
34
+ data?: any;
35
+ }
36
+ export interface InlineTagRenderInfo {
37
+ onRemove: () => void;
38
+ }
2
39
  export interface UploadFileResult {
3
40
  fileName?: string;
4
41
  fileId?: string | number;
@@ -76,6 +113,7 @@ export interface SenderUIProps {
76
113
  draggable?: boolean;
77
114
  loading?: boolean;
78
115
  disabled?: boolean;
116
+ placeholder?: string;
79
117
  /** 受控:输入框的值 */
80
118
  value?: string;
81
119
  /** 非受控:输入框默认值 */
@@ -85,6 +123,7 @@ export interface SenderUIProps {
85
123
  onSubmit?: (data: {
86
124
  text: string;
87
125
  files: ServerFile[];
126
+ tags?: InputTag[];
88
127
  }) => void;
89
128
  onStop?: () => void;
90
129
  /** 自定义发送按钮渲染 */
@@ -104,6 +143,22 @@ export interface SenderUIProps {
104
143
  prefix?: React.ReactNode | false | SlotRenderFunction;
105
144
  /** 底部内容 */
106
145
  footer?: React.ReactNode | false | SlotRenderFunction;
146
+ /** 底部左侧拓展区域,不传时 footer 保持原有居中布局 */
147
+ footerLeft?: React.ReactNode | false | SlotRenderFunction;
148
+ /** 快捷键配置列表 */
149
+ quickKeys?: QuickKeyConfig[];
150
+ /** 是否把标签以内联 token 形式展示在输入区内;默认 false 保持历史 textarea 行为 */
151
+ inlineTags?: boolean;
152
+ /** 自定义内联标签渲染 */
153
+ renderTag?: (tag: InputTag, info: InlineTagRenderInfo) => React.ReactNode;
154
+ /** 受控:标签列表 */
155
+ tags?: InputTag[];
156
+ /** 非受控:默认标签列表 */
157
+ defaultTags?: InputTag[];
158
+ /** 标签变化回调 */
159
+ onTagsChange?: (tags: InputTag[]) => void;
160
+ /** 快捷键触发回调(业务方可在此处理搜索等逻辑) */
161
+ onQuickKeyTrigger?: (key: string, keyword: string) => void;
107
162
  }
108
163
  export type XAdkSenderProps = SenderUIProps & UploaderCoreProps;
109
164
  export interface XAdkSenderHandle {