@ai-group/chat-sdk 3.5.2 → 3.5.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/XAdkChatbot/index.js +22 -2
- package/dist/cjs/components/XAdkChatbot/index.js.map +2 -2
- package/dist/cjs/components/XAdkProvider/compound/DefaultLayout.js +10 -13
- package/dist/cjs/components/XAdkProvider/compound/DefaultLayout.js.map +2 -2
- package/dist/cjs/components/XAdkProvider/compound/styles.d.ts +0 -1
- package/dist/cjs/components/XAdkProvider/compound/styles.js +0 -10
- package/dist/cjs/components/XAdkProvider/compound/styles.js.map +2 -2
- package/dist/cjs/components/XAdkSender/index.js +2 -1
- package/dist/cjs/components/XAdkSender/index.js.map +2 -2
- package/dist/cjs/components/XAdkSender/styles.js +19 -1
- package/dist/cjs/components/XAdkSender/styles.js.map +2 -2
- package/dist/cjs/components/XAiChatbot/index.d.ts +1 -1
- package/dist/cjs/components/XAiChatbot/index.js +183 -50
- package/dist/cjs/components/XAiChatbot/index.js.map +2 -2
- package/dist/cjs/types/XAdkSender.d.ts +2 -0
- package/dist/cjs/types/XAdkSender.js.map +1 -1
- package/dist/esm/components/XAdkChatbot/index.js +26 -4
- package/dist/esm/components/XAdkChatbot/index.js.map +1 -1
- package/dist/esm/components/XAdkProvider/compound/DefaultLayout.js +3 -5
- package/dist/esm/components/XAdkProvider/compound/DefaultLayout.js.map +1 -1
- package/dist/esm/components/XAdkProvider/compound/styles.d.ts +0 -1
- package/dist/esm/components/XAdkProvider/compound/styles.js +2 -3
- package/dist/esm/components/XAdkProvider/compound/styles.js.map +1 -1
- package/dist/esm/components/XAdkSender/index.js +3 -1
- package/dist/esm/components/XAdkSender/index.js.map +1 -1
- package/dist/esm/components/XAdkSender/styles.js +3 -3
- package/dist/esm/components/XAdkSender/styles.js.map +1 -1
- package/dist/esm/components/XAiChatbot/index.d.ts +1 -1
- package/dist/esm/components/XAiChatbot/index.js +56 -56
- package/dist/esm/components/XAiChatbot/index.js.map +1 -1
- package/dist/esm/types/XAdkSender.d.ts +2 -0
- package/dist/esm/types/XAdkSender.js.map +1 -1
- package/dist/umd/chat-sdk.min.js +1 -1
- package/package.json +1 -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, { useState, useRef, useCallback, forwardRef, useImperativeHandle } from \"react\";\nimport { Popconfirm, message, Tooltip, Input, Modal } from \"antd\";\nimport {\n ClearOutlined,\n LoadingOutlined,\n ArrowUpOutlined,\n PaperClipOutlined,\n} from \"@ant-design/icons\";\nimport {\n XAdkSenderProps,\n XAdkSenderHandle,\n ServerFile,\n LocalFile,\n ActionsComponents,\n FileValidator,\n UploadFileResult,\n} from \"@/types\";\nimport { useStyles } from \"./styles\";\nimport FileGallery from \"../FileGallery\";\nimport { getExt } from \"@/utils/file\";\n\nconst XAdkSender = forwardRef<XAdkSenderHandle, XAdkSenderProps>(({\n clearBtnShow = true,\n allowUpload = false,\n draggable = true,\n loading = false,\n disabled = false,\n 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}, ref) => {\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(ref, () => ({\n addFiles: (rawFiles: File[]) => {\n handleFileSelect(rawFiles);\n },\n }), [handleFileSelect]);\n\n // 上传文件\n const uploadFiles = async (fileList: LocalFile[]) => {\n for (const localFile of fileList) {\n // 开始上传\n setFiles((prev) =>\n prev.map((f) =>\n f.id === localFile.id ? { ...f, status: \"uploading\" } : f,\n ),\n );\n\n try {\n await uploadRequest({\n file: localFile.file,\n onProgress: (e) => {\n setFiles((prev) =>\n prev.map((f) =>\n f.id === localFile.id ? { ...f, progress: e.percent } : f,\n ),\n );\n },\n onSuccess: (response) => {\n const responseData = normalizeUploadResponse(response);\n setFiles((prev) =>\n prev.map((f) =>\n f.id === localFile.id\n ? {\n ...f,\n status: \"success\",\n progress: 100,\n response,\n fileId: responseData.fileId || responseData.id,\n tempUrl:\n responseData.tempUrl ||\n responseData.fileUrl ||\n responseData.url,\n }\n : f,\n ),\n );\n\n onUploadSuccess?.({\n ...localFile,\n status: \"success\",\n response,\n fileId: responseData.fileId || responseData.id,\n tempUrl:\n responseData.tempUrl || responseData.fileUrl || responseData.url,\n });\n },\n onError: (error) => {\n setFiles((prev) =>\n prev.map((f) =>\n f.id === localFile.id\n ? {\n ...f,\n status: \"error\",\n errorMessage: error.message,\n }\n : f,\n ),\n );\n onUploadError?.(localFile, error);\n },\n });\n } catch (error) {\n console.error(\"上传处理错误:\", error);\n setFiles((prev) =>\n prev.map((f) =>\n f.id === localFile.id\n ? {\n ...f,\n status: \"error\",\n errorMessage:\n error instanceof Error ? error.message : \"上传处理失败\",\n }\n : f,\n ),\n );\n message.error(`${localFile.name} 上传失败`);\n }\n }\n };\n\n // 删除文件\n const handleRemoveFile = (id: string) => {\n setFiles((prev) => {\n const next = prev.filter((file) => file.id !== id);\n\n onFilesChange?.(next);\n\n return next;\n });\n };\n\n // 触发文件选择\n const triggerFileSelect = () => {\n if (fileInputRef.current) {\n fileInputRef.current.click();\n }\n };\n\n // 处理拖拽事件\n const handleDragOver = useCallback(\n (e: React.DragEvent) => {\n e.preventDefault();\n e.stopPropagation();\n if (allowUpload) {\n setIsDragOver(true);\n }\n },\n [allowUpload],\n );\n\n const handleDragLeave = useCallback(\n (e: React.DragEvent) => {\n e.preventDefault();\n e.stopPropagation();\n if (allowUpload) {\n setIsDragOver(false);\n }\n },\n [allowUpload],\n );\n\n const handleDrop = useCallback(\n (e: React.DragEvent) => {\n e.preventDefault();\n e.stopPropagation();\n setIsDragOver(false);\n\n if (\n allowUpload &&\n e.dataTransfer.files &&\n e.dataTransfer.files.length > 0\n ) {\n handleFileSelect(Array.from(e.dataTransfer.files));\n }\n },\n [allowUpload, handleFileSelect],\n );\n\n // 处理提交\n const handleSubmit = () => {\n if (!value.trim() && files.length === 0) {\n message.warning(\"请输入消息或选择文件\");\n return;\n }\n\n const successFiles = files.filter((file) => file.status === \"success\");\n const uploadingFiles = files.filter((file) => file.status === \"uploading\");\n\n if (uploadingFiles.length > 0) {\n Modal.confirm({\n title: \"文件上传中\",\n content: `还有 ${uploadingFiles.length} 个文件正在上传,是否继续发送?`,\n okText: \"发送已完成的\",\n cancelText: \"等待全部完成\",\n onOk: () => {\n const formattedFiles = formatFilesForServer(successFiles);\n if (onSubmit) {\n onSubmit({\n text: value,\n files: formattedFiles,\n });\n }\n\n setValue(\"\");\n setFiles((prev) => prev.filter((f) => f.status !== \"success\"));\n },\n onCancel: () => {\n message.info(\"请等待文件上传完成后再发送\");\n },\n });\n } else {\n const formattedFiles = formatFilesForServer(successFiles);\n\n if (onSubmit) {\n onSubmit({\n text: value,\n files: formattedFiles,\n });\n }\n\n setValue(\"\");\n setFiles((prev) => prev.filter((f) => f.status !== \"success\"));\n }\n };\n\n // 格式化文件列表为服务端格式\n const formatFilesForServer = (fileList: LocalFile[]): ServerFile[] => {\n return fileList\n .filter((file) => file.status === \"success\" && file.response)\n .map((file) => {\n const responseData = normalizeUploadResponse(file.response);\n\n return {\n fileName: responseData.fileName || file.name,\n fileId: responseData.fileId || responseData.id || \"\",\n tempUrl:\n responseData.tempUrl || responseData.fileUrl || responseData.url || \"\",\n type: responseData.fileType || responseData.type || getExt(file),\n size: responseData.fileSize || responseData.size || file.size,\n mimeType: responseData.mimeType || file.type,\n raw: {\n ...responseData,\n },\n };\n });\n };\n\n // 处理输入框变化\n const handleInputChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n const newValue = e.target.value;\n setValue(newValue);\n };\n\n // 处理回车键\n const handleKeyDown = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === \"Enter\" && !e.shiftKey) {\n e.preventDefault();\n handleSubmit();\n }\n };\n\n // 渲染文件列表 - 使用新的 FileGallery 组件\n const renderFileList = () => {\n if (files.length === 0) return null;\n\n return (\n <div\n style={{\n display: \"flex\",\n flexWrap: \"wrap\",\n gap: \"8px\",\n padding: \"12px 0\",\n }}\n >\n {files.map((file) => (\n <FileGallery\n key={file.id}\n file={file}\n removable\n onRemove={handleRemoveFile}\n />\n ))}\n </div>\n );\n };\n\n const containerClass = `${styles.container} ${isDragOver ? \"drag-over\" : \"\"}`;\n const uploading = files.some((f) => f.status === \"uploading\");\n const isDisabled = disabled || uploading || loading;\n 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 disabled={isDisabled}\n autoSize={{ minRows: 1, maxRows: 4 }}\n style={{\n border: \"none\",\n boxShadow: \"none\",\n outline: \"none\",\n padding: 0,\n }}\n />\n </div>\n\n {/* 后缀插槽(默认显示操作按钮) */}\n {renderSlot(suffix, defaultSuffix)}\n </div>\n\n {/* 底部插槽(默认显示提示文字) */}\n {renderSlot(\n footer,\n <div className={styles.tip}>\n 内容由AI生成,无法确保真实准确,仅供参考\n </div>,\n )}\n </div>\n </div>\n </div>\n );\n});\n\nXAdkSender.displayName = 'XAdkSender';\n\nimport XAdkSenderSwitch from \"./Switch\";\n\ntype XAdkSenderComponent = typeof XAdkSender & {\n Switch: typeof XAdkSenderSwitch;\n};\n\nconst CompoundSender = XAdkSender as XAdkSenderComponent;\nCompoundSender.Switch = XAdkSenderSwitch;\n\nexport default CompoundSender;\n"],"mappings":"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"}
|
|
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$showMask","showMask","_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, { useState, useRef, useCallback, forwardRef, useImperativeHandle } from \"react\";\nimport { Popconfirm, message, Tooltip, Input, Modal } from \"antd\";\nimport {\n ClearOutlined,\n LoadingOutlined,\n ArrowUpOutlined,\n PaperClipOutlined,\n} from \"@ant-design/icons\";\nimport {\n XAdkSenderProps,\n XAdkSenderHandle,\n ServerFile,\n LocalFile,\n ActionsComponents,\n FileValidator,\n UploadFileResult,\n} from \"@/types\";\nimport { useStyles } from \"./styles\";\nimport FileGallery from \"../FileGallery\";\nimport { getExt } from \"@/utils/file\";\n\nconst XAdkSender = forwardRef<XAdkSenderHandle, XAdkSenderProps>(({\n clearBtnShow = true,\n allowUpload = false,\n draggable = true,\n showMask = 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}, ref) => {\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(ref, () => ({\n addFiles: (rawFiles: File[]) => {\n handleFileSelect(rawFiles);\n },\n }), [handleFileSelect]);\n\n // 上传文件\n const uploadFiles = async (fileList: LocalFile[]) => {\n for (const localFile of fileList) {\n // 开始上传\n setFiles((prev) =>\n prev.map((f) =>\n f.id === localFile.id ? { ...f, status: \"uploading\" } : f,\n ),\n );\n\n try {\n await uploadRequest({\n file: localFile.file,\n onProgress: (e) => {\n setFiles((prev) =>\n prev.map((f) =>\n f.id === localFile.id ? { ...f, progress: e.percent } : f,\n ),\n );\n },\n onSuccess: (response) => {\n const responseData = normalizeUploadResponse(response);\n setFiles((prev) =>\n prev.map((f) =>\n f.id === localFile.id\n ? {\n ...f,\n status: \"success\",\n progress: 100,\n response,\n fileId: responseData.fileId || responseData.id,\n tempUrl:\n responseData.tempUrl ||\n responseData.fileUrl ||\n responseData.url,\n }\n : f,\n ),\n );\n\n onUploadSuccess?.({\n ...localFile,\n status: \"success\",\n response,\n fileId: responseData.fileId || responseData.id,\n tempUrl:\n responseData.tempUrl || responseData.fileUrl || responseData.url,\n });\n },\n onError: (error) => {\n setFiles((prev) =>\n prev.map((f) =>\n f.id === localFile.id\n ? {\n ...f,\n status: \"error\",\n errorMessage: error.message,\n }\n : f,\n ),\n );\n onUploadError?.(localFile, error);\n },\n });\n } catch (error) {\n console.error(\"上传处理错误:\", error);\n setFiles((prev) =>\n prev.map((f) =>\n f.id === localFile.id\n ? {\n ...f,\n status: \"error\",\n errorMessage:\n error instanceof Error ? error.message : \"上传处理失败\",\n }\n : f,\n ),\n );\n message.error(`${localFile.name} 上传失败`);\n }\n }\n };\n\n // 删除文件\n const handleRemoveFile = (id: string) => {\n setFiles((prev) => {\n const next = prev.filter((file) => file.id !== id);\n\n onFilesChange?.(next);\n\n return next;\n });\n };\n\n // 触发文件选择\n const triggerFileSelect = () => {\n if (fileInputRef.current) {\n fileInputRef.current.click();\n }\n };\n\n // 处理拖拽事件\n const handleDragOver = useCallback(\n (e: React.DragEvent) => {\n e.preventDefault();\n e.stopPropagation();\n if (allowUpload) {\n setIsDragOver(true);\n }\n },\n [allowUpload],\n );\n\n const handleDragLeave = useCallback(\n (e: React.DragEvent) => {\n e.preventDefault();\n e.stopPropagation();\n if (allowUpload) {\n setIsDragOver(false);\n }\n },\n [allowUpload],\n );\n\n const handleDrop = useCallback(\n (e: React.DragEvent) => {\n e.preventDefault();\n e.stopPropagation();\n setIsDragOver(false);\n\n if (\n allowUpload &&\n e.dataTransfer.files &&\n e.dataTransfer.files.length > 0\n ) {\n handleFileSelect(Array.from(e.dataTransfer.files));\n }\n },\n [allowUpload, handleFileSelect],\n );\n\n // 处理提交\n const handleSubmit = () => {\n if (!value.trim() && files.length === 0) {\n message.warning(\"请输入消息或选择文件\");\n return;\n }\n\n const successFiles = files.filter((file) => file.status === \"success\");\n const uploadingFiles = files.filter((file) => file.status === \"uploading\");\n\n if (uploadingFiles.length > 0) {\n Modal.confirm({\n title: \"文件上传中\",\n content: `还有 ${uploadingFiles.length} 个文件正在上传,是否继续发送?`,\n okText: \"发送已完成的\",\n cancelText: \"等待全部完成\",\n onOk: () => {\n const formattedFiles = formatFilesForServer(successFiles);\n if (onSubmit) {\n onSubmit({\n text: value,\n files: formattedFiles,\n });\n }\n\n setValue(\"\");\n setFiles((prev) => prev.filter((f) => f.status !== \"success\"));\n },\n onCancel: () => {\n message.info(\"请等待文件上传完成后再发送\");\n },\n });\n } else {\n const formattedFiles = formatFilesForServer(successFiles);\n\n if (onSubmit) {\n onSubmit({\n text: value,\n files: formattedFiles,\n });\n }\n\n setValue(\"\");\n setFiles((prev) => prev.filter((f) => f.status !== \"success\"));\n }\n };\n\n // 格式化文件列表为服务端格式\n const formatFilesForServer = (fileList: LocalFile[]): ServerFile[] => {\n return fileList\n .filter((file) => file.status === \"success\" && file.response)\n .map((file) => {\n const responseData = normalizeUploadResponse(file.response);\n\n return {\n fileName: responseData.fileName || file.name,\n fileId: responseData.fileId || responseData.id || \"\",\n tempUrl:\n responseData.tempUrl || responseData.fileUrl || responseData.url || \"\",\n type: responseData.fileType || responseData.type || getExt(file),\n size: responseData.fileSize || responseData.size || file.size,\n mimeType: responseData.mimeType || file.type,\n raw: {\n ...responseData,\n },\n };\n });\n };\n\n // 处理输入框变化\n const handleInputChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n const newValue = e.target.value;\n setValue(newValue);\n };\n\n // 处理回车键\n const handleKeyDown = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === \"Enter\" && !e.shiftKey) {\n e.preventDefault();\n handleSubmit();\n }\n };\n\n // 渲染文件列表 - 使用新的 FileGallery 组件\n const renderFileList = () => {\n if (files.length === 0) return null;\n\n return (\n <div\n style={{\n display: \"flex\",\n flexWrap: \"wrap\",\n gap: \"8px\",\n padding: \"12px 0\",\n }}\n >\n {files.map((file) => (\n <FileGallery\n key={file.id}\n file={file}\n removable\n onRemove={handleRemoveFile}\n />\n ))}\n </div>\n );\n };\n\n const containerClass = `${styles.container} ${isDragOver ? \"drag-over\" : \"\"} ${showMask ? 'show-mask' : ''}`;\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 disabled={isDisabled}\n autoSize={{ minRows: 1, maxRows: 4 }}\n style={{\n border: \"none\",\n boxShadow: \"none\",\n outline: \"none\",\n padding: 0,\n }}\n />\n </div>\n\n {/* 后缀插槽(默认显示操作按钮) */}\n {renderSlot(suffix, defaultSuffix)}\n </div>\n\n {/* 底部插槽(默认显示提示文字) */}\n {renderSlot(\n footer,\n <div className={styles.tip}>\n 内容由AI生成,无法确保真实准确,仅供参考\n </div>,\n )}\n </div>\n </div>\n </div>\n );\n});\n\nXAdkSender.displayName = 'XAdkSender';\n\nimport XAdkSenderSwitch from \"./Switch\";\n\ntype XAdkSenderComponent = typeof XAdkSender & {\n Switch: typeof XAdkSenderSwitch;\n};\n\nconst CompoundSender = XAdkSender as XAdkSenderComponent;\nCompoundSender.Switch = XAdkSenderSwitch;\n\nexport default CompoundSender;\n"],"mappings":"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"}
|
|
@@ -5,11 +5,11 @@ import { withBasicStyles } from "../../styles/common";
|
|
|
5
5
|
export var useStyles = withBasicStyles(function () {
|
|
6
6
|
return {
|
|
7
7
|
// 容器样式 - 最外层边框
|
|
8
|
-
container: css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n position: relative;\n
|
|
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\n &.show-mask::before {\n content: \"\";\n position: absolute;\n left: 0;\n right: 0;\n bottom: calc(100% - 10px);\n height: 48px;\n pointer-events: none;\n z-index: 1;\n background: linear-gradient(\n 180deg,\n transparent 0%,\n rgba(255, 255, 255, 0.85) 60%,\n #fff 100%\n );\n }\n "]))),
|
|
9
9
|
// 主内容区域
|
|
10
|
-
mainArea: css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n border-radius: 20px;\n overflow: hidden;\n "]))),
|
|
10
|
+
mainArea: css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n border-radius: 20px;\n overflow: hidden;\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 transition-duration: 0.2s;\n transition-property:\n color, background-color, border-color, text-decoration-color, fill,\n stroke, box-shadow;\n transition-timing-function: linear;\n box-shadow: 0 6px 30px 0 rgba(0, 0, 0, 0.08);\n "]))),
|
|
12
|
+
senderWrap: css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n display: flex;\n flex-direction: column;\n gap: 6px;\n background: var(--yb-input-bg-color);\n border: 0.5px solid var(--widget-line, rgba(0, 0, 0, 0.08));\n border-radius: 20px;\n box-sizing: border-box;\n caret-color: var(--yb-input-caret-color);\n flex: auto;\n font-size: 14px;\n line-height: 22px;\n padding: 7px 12px;\n position: relative;\n 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
14
|
inputAndButtons: css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n flex: 1;\n display: flex;\n align-items: flex-end;\n gap: 8px;\n "]))),
|
|
15
15
|
// 文本输入框容器
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["css","withBasicStyles","useStyles","container","_templateObject","_taggedTemplateLiteral","mainArea","_templateObject2","senderWrap","_templateObject3","inputAndButtons","_templateObject4","textAreaWrapper","_templateObject5","textArea","_templateObject6","buttonGroup","_templateObject7","iconButton","_templateObject8","clearButton","_templateObject9","uploadButton","_templateObject10","sendButton","_templateObject11","tip","_templateObject12"],"sources":["../../../../src/components/XAdkSender/styles.tsx"],"sourcesContent":["import { css } from \"@emotion/css\";\nimport { withBasicStyles } from \"@/styles/common\";\n\nexport const useStyles = withBasicStyles(() => ({\n // 容器样式 - 最外层边框\n container: css`\n position: relative;\n
|
|
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 &.show-mask::before {\n content: \"\";\n position: absolute;\n left: 0;\n right: 0;\n bottom: calc(100% - 10px);\n height: 48px;\n pointer-events: none;\n z-index: 1;\n background: linear-gradient(\n 180deg,\n transparent 0%,\n rgba(255, 255, 255, 0.85) 60%,\n #fff 100%\n );\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,gnBA4Bb;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"}
|
|
@@ -2,13 +2,13 @@ import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
|
|
2
2
|
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
3
3
|
// 文件: components/XAiChatbot/index.tsx
|
|
4
4
|
|
|
5
|
-
import React, { useRef, useState, useMemo } from
|
|
6
|
-
import { Tooltip, Flex } from
|
|
7
|
-
import { Bubble, Prompts, FileCard } from
|
|
8
|
-
import { UserOutlined, RedoOutlined, CopyOutlined, DeleteOutlined } from
|
|
9
|
-
import clsx from
|
|
10
|
-
import MarkdownIt from
|
|
11
|
-
import reactHtmlParser from
|
|
5
|
+
import React, { useRef, useState, useMemo } from "react";
|
|
6
|
+
import { Tooltip, Flex } from "antd";
|
|
7
|
+
import { Bubble, Prompts, FileCard } from "@ant-design/x";
|
|
8
|
+
import { UserOutlined, RedoOutlined, CopyOutlined, DeleteOutlined } from "@ant-design/icons";
|
|
9
|
+
import clsx from "clsx";
|
|
10
|
+
import MarkdownIt from "markdown-it";
|
|
11
|
+
import reactHtmlParser from "react-html-parser";
|
|
12
12
|
import MarkdownGlobalStyle from "../../styles/markdown";
|
|
13
13
|
import { MessageStatus, MessageRole } from "../../types/XAiMessage";
|
|
14
14
|
import emptyIcon from "../../assets/empty.png";
|
|
@@ -37,18 +37,18 @@ var defaultRender = md.renderer.rules.link_open || function (tokens, idx, option
|
|
|
37
37
|
// a 标签打开规则
|
|
38
38
|
md.renderer.rules.link_open = function (tokens, idx, options, env, self) {
|
|
39
39
|
// 添加 target="_blank"
|
|
40
|
-
var aIndex = tokens[idx].attrIndex(
|
|
40
|
+
var aIndex = tokens[idx].attrIndex("target");
|
|
41
41
|
if (aIndex < 0) {
|
|
42
|
-
tokens[idx].attrPush([
|
|
42
|
+
tokens[idx].attrPush(["target", "_blank"]);
|
|
43
43
|
} else {
|
|
44
|
-
tokens[idx].attrs[aIndex][1] =
|
|
44
|
+
tokens[idx].attrs[aIndex][1] = "_blank";
|
|
45
45
|
}
|
|
46
46
|
// 添加 rel="noopener noreferrer"
|
|
47
|
-
var relIndex = tokens[idx].attrIndex(
|
|
47
|
+
var relIndex = tokens[idx].attrIndex("rel");
|
|
48
48
|
if (relIndex < 0) {
|
|
49
|
-
tokens[idx].attrPush([
|
|
49
|
+
tokens[idx].attrPush(["rel", "noopener noreferrer"]);
|
|
50
50
|
} else {
|
|
51
|
-
tokens[idx].attrs[relIndex][1] =
|
|
51
|
+
tokens[idx].attrs[relIndex][1] = "noopener noreferrer";
|
|
52
52
|
}
|
|
53
53
|
return defaultRender(tokens, idx, options, env, self);
|
|
54
54
|
};
|
|
@@ -58,7 +58,7 @@ export var ActionHeader = function ActionHeader(_ref) {
|
|
|
58
58
|
var _ref$execute = _ref.execute,
|
|
59
59
|
execute = _ref$execute === void 0 ? [] : _ref$execute,
|
|
60
60
|
_ref$thinks = _ref.thinks,
|
|
61
|
-
thinks = _ref$thinks === void 0 ?
|
|
61
|
+
thinks = _ref$thinks === void 0 ? "" : _ref$thinks;
|
|
62
62
|
var styles = useStyles();
|
|
63
63
|
var _useState = useState(true),
|
|
64
64
|
_useState2 = _slicedToArray(_useState, 2),
|
|
@@ -93,7 +93,7 @@ export var ActionHeader = function ActionHeader(_ref) {
|
|
|
93
93
|
}), /*#__PURE__*/_jsx("img", {
|
|
94
94
|
alt: "\u5C55\u5F00icon",
|
|
95
95
|
src: arrowDown,
|
|
96
|
-
className: styles.w(
|
|
96
|
+
className: styles.w("16px")
|
|
97
97
|
})]
|
|
98
98
|
}), expanded && /*#__PURE__*/_jsxs("div", {
|
|
99
99
|
className: styles.actionHeaderDetail,
|
|
@@ -114,12 +114,12 @@ export var ActionHeader = function ActionHeader(_ref) {
|
|
|
114
114
|
}), /*#__PURE__*/_jsx("img", {
|
|
115
115
|
alt: "\u6536\u8D77icon",
|
|
116
116
|
src: arrowUp,
|
|
117
|
-
className: styles.w(
|
|
117
|
+
className: styles.w("16px")
|
|
118
118
|
})]
|
|
119
119
|
}), thinks && /*#__PURE__*/_jsx("div", {
|
|
120
120
|
className: styles.actionDetailContent,
|
|
121
121
|
style: {
|
|
122
|
-
whiteSpace:
|
|
122
|
+
whiteSpace: "pre-line"
|
|
123
123
|
},
|
|
124
124
|
children: thinks
|
|
125
125
|
}), execute && execute.length > 0 && /*#__PURE__*/_jsxs(_Fragment, {
|
|
@@ -140,7 +140,7 @@ export var ActionHeader = function ActionHeader(_ref) {
|
|
|
140
140
|
}), /*#__PURE__*/_jsx("img", {
|
|
141
141
|
alt: "\u5DE5\u5177icon",
|
|
142
142
|
src: arrowDownBlue,
|
|
143
|
-
className: styles.w(
|
|
143
|
+
className: styles.w("16px")
|
|
144
144
|
})]
|
|
145
145
|
}), executeExpanded && /*#__PURE__*/_jsxs("div", {
|
|
146
146
|
className: styles.executeWrapper,
|
|
@@ -161,7 +161,7 @@ export var ActionHeader = function ActionHeader(_ref) {
|
|
|
161
161
|
}), /*#__PURE__*/_jsx("img", {
|
|
162
162
|
alt: "\u5C55\u5F00\u8BE6\u60C5icon",
|
|
163
163
|
src: arrowUp,
|
|
164
|
-
className: styles.w(
|
|
164
|
+
className: styles.w("16px")
|
|
165
165
|
})]
|
|
166
166
|
}), /*#__PURE__*/_jsx("div", {
|
|
167
167
|
className: styles.executeContent,
|
|
@@ -179,7 +179,7 @@ export var ActionHeader = function ActionHeader(_ref) {
|
|
|
179
179
|
children: action === null || action === void 0 ? void 0 : action.name
|
|
180
180
|
}), /*#__PURE__*/_jsx("span", {
|
|
181
181
|
className: styles.actionHeaderCost,
|
|
182
|
-
children: thinkCost ? "".concat(thinkCost, "s") :
|
|
182
|
+
children: thinkCost ? "".concat(thinkCost, "s") : ""
|
|
183
183
|
})]
|
|
184
184
|
}, action.uniqueId || idx);
|
|
185
185
|
})
|
|
@@ -192,17 +192,17 @@ export var ActionHeader = function ActionHeader(_ref) {
|
|
|
192
192
|
|
|
193
193
|
// 默认消息功能区
|
|
194
194
|
export var defaultActions = [{
|
|
195
|
-
key:
|
|
195
|
+
key: "redo",
|
|
196
196
|
icon: /*#__PURE__*/_jsx(RedoOutlined, {}),
|
|
197
|
-
tooltip:
|
|
197
|
+
tooltip: "重新生成"
|
|
198
198
|
}, {
|
|
199
|
-
key:
|
|
199
|
+
key: "copy",
|
|
200
200
|
icon: /*#__PURE__*/_jsx(CopyOutlined, {}),
|
|
201
|
-
tooltip:
|
|
201
|
+
tooltip: "复制"
|
|
202
202
|
}, {
|
|
203
|
-
key:
|
|
203
|
+
key: "delete",
|
|
204
204
|
icon: /*#__PURE__*/_jsx(DeleteOutlined, {}),
|
|
205
|
-
tooltip:
|
|
205
|
+
tooltip: "删除"
|
|
206
206
|
}];
|
|
207
207
|
var XAiChatbot = function XAiChatbot(props) {
|
|
208
208
|
var styles = useStyles();
|
|
@@ -226,15 +226,15 @@ var XAiChatbot = function XAiChatbot(props) {
|
|
|
226
226
|
userAvatar = _ref2.userAvatar,
|
|
227
227
|
propMessages = _ref2.messages,
|
|
228
228
|
_ref2$text = _ref2.text,
|
|
229
|
-
text = _ref2$text === void 0 ?
|
|
229
|
+
text = _ref2$text === void 0 ? "" : _ref2$text,
|
|
230
230
|
_ref2$footerTips = _ref2.footerTips,
|
|
231
|
-
footerTips = _ref2$footerTips === void 0 ?
|
|
231
|
+
footerTips = _ref2$footerTips === void 0 ? "" : _ref2$footerTips,
|
|
232
232
|
_ref2$empty = _ref2.empty,
|
|
233
233
|
empty = _ref2$empty === void 0 ? null : _ref2$empty,
|
|
234
234
|
_ref2$emptyStateImage = _ref2.emptyStateImage,
|
|
235
235
|
emptyStateImage = _ref2$emptyStateImage === void 0 ? emptyIcon : _ref2$emptyStateImage,
|
|
236
236
|
_ref2$emptyStateText = _ref2.emptyStateText,
|
|
237
|
-
emptyStateText = _ref2$emptyStateText === void 0 ?
|
|
237
|
+
emptyStateText = _ref2$emptyStateText === void 0 ? "我的智能体" : _ref2$emptyStateText,
|
|
238
238
|
_ref2$messageActions = _ref2.messageActions,
|
|
239
239
|
messageActions = _ref2$messageActions === void 0 ? defaultActions : _ref2$messageActions,
|
|
240
240
|
onMessagesActionsCallback = _ref2.onMessagesActionsCallback,
|
|
@@ -258,9 +258,9 @@ var XAiChatbot = function XAiChatbot(props) {
|
|
|
258
258
|
_useState8 = _slicedToArray(_useState7, 2),
|
|
259
259
|
files = _useState8[0],
|
|
260
260
|
setFiles = _useState8[1];
|
|
261
|
-
var lastMessageId = useRef(
|
|
261
|
+
var lastMessageId = useRef("");
|
|
262
262
|
var isScriptScrolling = useRef(false);
|
|
263
|
-
var chatId = providerId ? "za-chatbot-container-".concat(providerId) :
|
|
263
|
+
var chatId = providerId ? "za-chatbot-container-".concat(providerId) : "za-chatbot-container";
|
|
264
264
|
|
|
265
265
|
// 滚动到最底部
|
|
266
266
|
var scrollToBottom = function scrollToBottom() {
|
|
@@ -283,11 +283,11 @@ var XAiChatbot = function XAiChatbot(props) {
|
|
|
283
283
|
className: clsx(styles.flex, styles.gap(13)),
|
|
284
284
|
children: messageActions.map(function (action, index) {
|
|
285
285
|
var _action$render;
|
|
286
|
-
if (!lastMessage && action.key ===
|
|
286
|
+
if (!lastMessage && action.key === "redo") return null;
|
|
287
287
|
return /*#__PURE__*/_jsx(Tooltip, {
|
|
288
288
|
title: action.tooltip,
|
|
289
289
|
children: /*#__PURE__*/_jsxs("span", {
|
|
290
|
-
className: styles.cursor(
|
|
290
|
+
className: styles.cursor("pointer"),
|
|
291
291
|
onClick: function onClick() {
|
|
292
292
|
return onMessagesActionsCallback === null || onMessagesActionsCallback === void 0 ? void 0 : onMessagesActionsCallback(index, data);
|
|
293
293
|
},
|
|
@@ -314,43 +314,43 @@ var XAiChatbot = function XAiChatbot(props) {
|
|
|
314
314
|
// 聊天角色
|
|
315
315
|
var rolesObject = {
|
|
316
316
|
assistant: {
|
|
317
|
-
placement:
|
|
317
|
+
placement: "start",
|
|
318
318
|
avatar: function avatar() {
|
|
319
319
|
return _avatar || /*#__PURE__*/_jsx(UserOutlined, {
|
|
320
|
-
className: clsx(styles.bg(
|
|
320
|
+
className: clsx(styles.bg("#fde3cf"), styles.userAvatar)
|
|
321
321
|
});
|
|
322
322
|
},
|
|
323
323
|
typing: {
|
|
324
324
|
step: 5,
|
|
325
325
|
interval: 20,
|
|
326
|
-
effect:
|
|
326
|
+
effect: "typing"
|
|
327
327
|
},
|
|
328
328
|
style: {
|
|
329
329
|
maxWidth: 600
|
|
330
330
|
},
|
|
331
331
|
classNames: {
|
|
332
|
-
content:
|
|
332
|
+
content: "assistant-content"
|
|
333
333
|
}
|
|
334
334
|
},
|
|
335
335
|
user: {
|
|
336
|
-
placement:
|
|
336
|
+
placement: "end",
|
|
337
337
|
avatar: function avatar() {
|
|
338
338
|
return userAvatar || /*#__PURE__*/_jsx(UserOutlined, {
|
|
339
|
-
className: clsx(styles.bg(
|
|
339
|
+
className: clsx(styles.bg("#87d068"), styles.userAvatar)
|
|
340
340
|
});
|
|
341
341
|
},
|
|
342
342
|
classNames: {
|
|
343
|
-
content:
|
|
343
|
+
content: "user-content"
|
|
344
344
|
}
|
|
345
345
|
},
|
|
346
346
|
suggestion: {
|
|
347
|
-
placement:
|
|
347
|
+
placement: "start",
|
|
348
348
|
avatar: function avatar() {
|
|
349
349
|
return _avatar || /*#__PURE__*/_jsx(UserOutlined, {
|
|
350
|
-
className: clsx(styles.bg(
|
|
350
|
+
className: clsx(styles.bg("#fde3cf"), styles.userAvatar)
|
|
351
351
|
});
|
|
352
352
|
},
|
|
353
|
-
variant:
|
|
353
|
+
variant: "borderless"
|
|
354
354
|
}
|
|
355
355
|
};
|
|
356
356
|
|
|
@@ -358,7 +358,7 @@ var XAiChatbot = function XAiChatbot(props) {
|
|
|
358
358
|
var handleSend = function handleSend(obj) {
|
|
359
359
|
// 直接使用合并后的 onSend,自动处理 Provider 和独立模式
|
|
360
360
|
onSend === null || onSend === void 0 || onSend(obj);
|
|
361
|
-
setContent(
|
|
361
|
+
setContent(""); // 发送后清空输入框内容
|
|
362
362
|
setFiles([]); // 发送后清空文件
|
|
363
363
|
scrollToBottom();
|
|
364
364
|
};
|
|
@@ -414,14 +414,14 @@ var XAiChatbot = function XAiChatbot(props) {
|
|
|
414
414
|
alt: "\u7A7A\u72B6\u6001\u56FE\u6807",
|
|
415
415
|
className: styles.emptyImg
|
|
416
416
|
}), /*#__PURE__*/_jsx("div", {
|
|
417
|
-
className: clsx(styles.text(16), styles.weight(600), styles.textColor(
|
|
417
|
+
className: clsx(styles.text(16), styles.weight(600), styles.textColor("#343434")),
|
|
418
418
|
children: emptyStateText
|
|
419
419
|
})]
|
|
420
|
-
})
|
|
421
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
422
|
-
;
|
|
420
|
+
});
|
|
423
421
|
};
|
|
424
|
-
},
|
|
422
|
+
},
|
|
423
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
424
|
+
[emptyStateImage, emptyStateText]);
|
|
425
425
|
return /*#__PURE__*/_jsxs(_Fragment, {
|
|
426
426
|
children: [/*#__PURE__*/_jsx(GlobalStyle, {}), /*#__PURE__*/_jsx(MarkdownGlobalStyle, {}), /*#__PURE__*/_jsxs("div", {
|
|
427
427
|
id: "x-ai-chatbot",
|
|
@@ -441,7 +441,7 @@ var XAiChatbot = function XAiChatbot(props) {
|
|
|
441
441
|
_ref5$execute = _ref5.execute,
|
|
442
442
|
execute = _ref5$execute === void 0 ? [] : _ref5$execute,
|
|
443
443
|
_ref5$thinks = _ref5.thinks,
|
|
444
|
-
thinks = _ref5$thinks === void 0 ?
|
|
444
|
+
thinks = _ref5$thinks === void 0 ? "" : _ref5$thinks,
|
|
445
445
|
_ref5$extra = _ref5.extra,
|
|
446
446
|
extra = _ref5$extra === void 0 ? {
|
|
447
447
|
noFooter: false
|
|
@@ -464,10 +464,10 @@ var XAiChatbot = function XAiChatbot(props) {
|
|
|
464
464
|
},
|
|
465
465
|
content: function () {
|
|
466
466
|
// 文本消息
|
|
467
|
-
if (type ===
|
|
467
|
+
if (type === "TextMessage") {
|
|
468
468
|
var _msg$content2;
|
|
469
469
|
// 用户消息
|
|
470
|
-
if (role ===
|
|
470
|
+
if (role === "user") {
|
|
471
471
|
var _msg$content;
|
|
472
472
|
return /*#__PURE__*/_jsx("div", {
|
|
473
473
|
className: "ai-markdown-body",
|
|
@@ -480,13 +480,13 @@ var XAiChatbot = function XAiChatbot(props) {
|
|
|
480
480
|
}
|
|
481
481
|
|
|
482
482
|
// 输出html字符串
|
|
483
|
-
var html = md.render(((_msg$content2 = msg.content) === null || _msg$content2 === void 0 ? void 0 : _msg$content2.text) ||
|
|
483
|
+
var html = md.render(((_msg$content2 = msg.content) === null || _msg$content2 === void 0 ? void 0 : _msg$content2.text) || "");
|
|
484
484
|
// 生成React节点
|
|
485
485
|
var htmlString = reactHtmlParser(html);
|
|
486
486
|
return /*#__PURE__*/_jsxs(_Fragment, {
|
|
487
487
|
children: [(stepContent === null || stepContent === void 0 ? void 0 : stepContent.length) && stepContent.map(function (item) {
|
|
488
488
|
// 输出html字符串
|
|
489
|
-
var html2 = md.render(item.content ||
|
|
489
|
+
var html2 = md.render(item.content || "");
|
|
490
490
|
// 生成React节点
|
|
491
491
|
var stepHtmlString = reactHtmlParser(html2);
|
|
492
492
|
return /*#__PURE__*/_jsxs("div", {
|
|
@@ -512,7 +512,7 @@ var XAiChatbot = function XAiChatbot(props) {
|
|
|
512
512
|
});
|
|
513
513
|
}
|
|
514
514
|
// 提示类型
|
|
515
|
-
if (type ===
|
|
515
|
+
if (type === "SuggestionMessage") {
|
|
516
516
|
return /*#__PURE__*/_jsx(Prompts, {
|
|
517
517
|
vertical: true,
|
|
518
518
|
items: msg.content,
|
|
@@ -542,7 +542,7 @@ var XAiChatbot = function XAiChatbot(props) {
|
|
|
542
542
|
children: msgFiles.map(function (f) {
|
|
543
543
|
return /*#__PURE__*/_jsx(FileCard, _objectSpread(_objectSpread({
|
|
544
544
|
styles: {
|
|
545
|
-
file: (f === null || f === void 0 ? void 0 : f.fileType) ===
|
|
545
|
+
file: (f === null || f === void 0 ? void 0 : f.fileType) === "image" ? {
|
|
546
546
|
width: 100,
|
|
547
547
|
height: 100
|
|
548
548
|
} : {}
|