@ai-group/chat-sdk 3.5.12 → 3.6.0
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/FileGallery/index.js +1 -1
- package/dist/cjs/components/FileGallery/index.js.map +1 -1
- package/dist/cjs/components/FolderTree/DirectoryTree.d.ts +1 -1
- package/dist/cjs/components/FolderTree/DirectoryTree.js +56 -18
- package/dist/cjs/components/FolderTree/DirectoryTree.js.map +2 -2
- package/dist/cjs/components/FolderTree/index.js +2 -2
- package/dist/cjs/components/FolderTree/index.js.map +2 -2
- package/dist/cjs/components/FolderTree/styles.js +4 -1
- package/dist/cjs/components/FolderTree/styles.js.map +2 -2
- package/dist/cjs/components/XAdkChatbot/index.js +8 -8
- package/dist/cjs/components/XAdkChatbot/index.js.map +2 -2
- package/dist/cjs/components/XAdkChatbot/styles.d.ts +1 -0
- package/dist/cjs/components/XAdkChatbot/styles.js +7 -1
- package/dist/cjs/components/XAdkChatbot/styles.js.map +2 -2
- package/dist/cjs/components/XAdkProvider/index.js +2 -0
- package/dist/cjs/components/XAdkProvider/index.js.map +2 -2
- package/dist/cjs/components/XAdkThoughtChain/index.js +75 -39
- package/dist/cjs/components/XAdkThoughtChain/index.js.map +2 -2
- package/dist/cjs/components/XAdkThoughtChain/styles.js +27 -26
- package/dist/cjs/components/XAdkThoughtChain/styles.js.map +2 -2
- package/dist/cjs/index.d.ts +2 -1
- package/dist/cjs/index.js +9 -0
- package/dist/cjs/index.js.map +2 -2
- package/dist/cjs/styles/tokens.d.ts +27 -0
- package/dist/cjs/styles/tokens.js +72 -0
- package/dist/cjs/styles/tokens.js.map +7 -0
- package/dist/cjs/types/XAdkChatbot.d.ts +7 -1
- package/dist/cjs/types/XAdkChatbot.js.map +1 -1
- package/dist/cjs/types/XAdkThoughtChain.d.ts +13 -0
- package/dist/cjs/types/XAdkThoughtChain.js.map +1 -1
- package/dist/esm/components/FileGallery/index.js +1 -1
- package/dist/esm/components/FileGallery/index.js.map +1 -1
- package/dist/esm/components/FolderTree/DirectoryTree.d.ts +1 -1
- package/dist/esm/components/FolderTree/DirectoryTree.js +86 -54
- package/dist/esm/components/FolderTree/DirectoryTree.js.map +1 -1
- package/dist/esm/components/FolderTree/index.js +2 -2
- package/dist/esm/components/FolderTree/index.js.map +1 -1
- package/dist/esm/components/FolderTree/styles.js +2 -2
- package/dist/esm/components/FolderTree/styles.js.map +1 -1
- package/dist/esm/components/XAdkChatbot/index.js +15 -38
- package/dist/esm/components/XAdkChatbot/index.js.map +1 -1
- package/dist/esm/components/XAdkChatbot/styles.d.ts +1 -0
- package/dist/esm/components/XAdkChatbot/styles.js +20 -19
- package/dist/esm/components/XAdkChatbot/styles.js.map +1 -1
- package/dist/esm/components/XAdkProvider/index.js +3 -2
- package/dist/esm/components/XAdkProvider/index.js.map +1 -1
- package/dist/esm/components/XAdkThoughtChain/index.js +100 -50
- package/dist/esm/components/XAdkThoughtChain/index.js.map +1 -1
- package/dist/esm/components/XAdkThoughtChain/styles.js +20 -19
- package/dist/esm/components/XAdkThoughtChain/styles.js.map +1 -1
- package/dist/esm/index.d.ts +2 -1
- package/dist/esm/index.js +3 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/styles/tokens.d.ts +27 -0
- package/dist/esm/styles/tokens.js +42 -0
- package/dist/esm/styles/tokens.js.map +1 -0
- package/dist/esm/types/XAdkChatbot.d.ts +7 -1
- package/dist/esm/types/XAdkChatbot.js.map +1 -1
- package/dist/esm/types/XAdkThoughtChain.d.ts +13 -0
- package/dist/esm/types/XAdkThoughtChain.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","useEffect","Image","Tooltip","Progress","FileOutlined","FilePdfOutlined","FileWordOutlined","FileExcelOutlined","FilePptOutlined","FileImageOutlined","CloseOutlined","AudioOutlined","FileZipOutlined","VideoCameraOutlined","FileMarkdownOutlined","useStyles","jsx","_jsx","jsxs","_jsxs","getFileName","file","displayName","name","getFileSize","size","getMimeType","mimeType","type","getFileUrl","_file$response","_file$response2","fileUri","response","fileUrl","tempUrl","getFileId","id","uid","isImageFile","startsWith","fileName","match","url","isAudioFile","isVideoFile","isZipFile","isMarkdownFile","getFileExtension","filename","ext","split","pop","toLowerCase","getFileIcon","icon","color","includes","formatFileSize","bytes","toFixed","styles","FileGallery","_ref","_ref$align","align","_ref$removable","removable","_ref$onRemove","onRemove","className","style","onClick","_useState","_useState2","_slicedToArray","objectUrl","setObjectUrl","URL","createObjectURL","revokeObjectURL","isImage","isAudio","isVideo","isZip","isMarkdown","fileSize","fileId","concat","fileCard","_objectSpread","cursor","undefined","children","imageThumbnail","src","alt","fallback","preview","status","imageOverlay","percent","progress","strokeColor","fileInfo","title","length","substring","Number","fileRemoveBtn","disabled","fileIcon","controls","mediaWrapper","width","height","_getFileIcon","isExternalUrl","href","target","rel","fileLink","showInfo","errorMessage","fontSize","marginTop"],"sources":["../../../../src/components/FileGallery/index.tsx"],"sourcesContent":["import React, { useState, useEffect } from \"react\";\nimport { Image, Tooltip, Progress } from \"antd\";\nimport {\n FileOutlined,\n FilePdfOutlined,\n FileWordOutlined,\n FileExcelOutlined,\n FilePptOutlined,\n FileImageOutlined,\n CloseOutlined,\n AudioOutlined,\n FileZipOutlined,\n VideoCameraOutlined,\n FileMarkdownOutlined,\n} from \"@ant-design/icons\";\nimport { FileItem, FileGalleryProps } from \"@/types\";\nimport { useStyles } from \"./styles\";\n\n// ==================== 工具函数 ====================\n\n/**\n * 获取文件名\n */\nconst getFileName = (file: FileItem): string => {\n return file.displayName || file.name || \"\";\n};\n\n/**\n * 获取文件大小\n */\nconst getFileSize = (file: FileItem): number => {\n return file.size || 0;\n};\n\n/**\n * 获取文件 MIME 类型\n */\nconst getMimeType = (file: FileItem): string => {\n return file.mimeType || file.type || \"\";\n};\n\n/**\n * 获取文件 URL\n */\nconst getFileUrl = (file: FileItem): string => {\n return (\n file.fileUri ||\n file.response?.fileUrl ||\n file.response?.tempUrl ||\n file.tempUrl ||\n \"\"\n );\n};\n\n/**\n * 获取文件唯一标识\n */\nconst getFileId = (file: FileItem): string => {\n return file.id || file.uid || \"\";\n};\n\n/**\n * 判断是否是图片文件\n */\nconst isImageFile = (file: FileItem): boolean => {\n const mimeType = getMimeType(file);\n if (mimeType && mimeType.startsWith(\"image/\")) return true;\n\n const fileName = getFileName(file);\n if (fileName && fileName.match(/\\.(jpg|jpeg|png|gif|webp|bmp|svg)$/i))\n return true;\n\n const url = getFileUrl(file);\n if (url && url.match(/\\.(jpg|jpeg|png|gif|webp|bmp|svg)(\\?.*)?$/i))\n return true;\n\n return false;\n};\n\n/**\n * 判断是否是音频文件\n */\nconst isAudioFile = (file: FileItem): boolean => {\n const mimeType = getMimeType(file);\n if (mimeType && mimeType.startsWith(\"audio/\")) return true;\n\n const fileName = getFileName(file);\n return !!fileName?.match(/\\.(mp3|wav|m4a|aac|ogg|flac)$/i);\n};\n\n/**\n * 判断是否是视频文件\n */\nconst isVideoFile = (file: FileItem): boolean => {\n const mimeType = getMimeType(file);\n if (mimeType && mimeType.startsWith(\"video/\")) return true;\n\n const fileName = getFileName(file);\n return !!fileName?.match(/\\.(mp4|mov|webm|mkv|avi)$/i);\n};\n\n/**\n * 判断是否是压缩包文件\n */\nconst isZipFile = (file: FileItem): boolean => {\n const fileName = getFileName(file);\n return !!fileName?.match(/\\.(zip|rar|7z|tar|gz|bz2|xz|tgz)$/i);\n};\n\n/**\n * 判断是否是 Markdown 文件\n */\nconst isMarkdownFile = (file: FileItem): boolean => {\n const fileName = getFileName(file);\n return !!fileName?.match(/\\.(md|markdown)$/i);\n};\n\n/**\n * 获取文件扩展名\n */\nconst getFileExtension = (filename: string): string => {\n const ext = filename.split(\".\").pop();\n return ext ? ext.toLowerCase() : \"\";\n};\n\n/**\n * 获取文件图标和颜色\n */\nconst getFileIcon = (\n file: FileItem,\n): { icon: React.ReactNode; color: string } => {\n const ext = getFileExtension(getFileName(file));\n\n // PDF\n if (ext === \"pdf\") {\n return { icon: <FilePdfOutlined />, color: \"#ff4d4f\" };\n }\n\n // Word\n if ([\"doc\", \"docx\"].includes(ext)) {\n return { icon: <FileWordOutlined />, color: \"#1677ff\" };\n }\n\n // Excel\n if ([\"xls\", \"xlsx\", \"csv\"].includes(ext)) {\n return { icon: <FileExcelOutlined />, color: \"#22b35e\" };\n }\n\n // PPT\n if ([\"ppt\", \"pptx\"].includes(ext)) {\n return { icon: <FilePptOutlined />, color: \"#ff6e31\" };\n }\n\n // Audio\n if ([\"mp3\", \"wav\", \"m4a\", \"aac\", \"ogg\", \"flac\"].includes(ext)) {\n return { icon: <AudioOutlined />, color: \"#722ed1\" };\n }\n\n // Video\n if ([\"mp4\", \"mov\", \"webm\", \"mkv\", \"avi\"].includes(ext)) {\n return { icon: <VideoCameraOutlined />, color: \"#fa8c16\" };\n }\n\n // 压缩包\n if ([\"zip\", \"rar\", \"7z\", \"tar\", \"gz\", \"bz2\", \"xz\", \"tgz\"].includes(ext)) {\n return { icon: <FileZipOutlined />, color: \"#eb2f96\" };\n }\n\n // Markdown\n if ([\"md\", \"markdown\"].includes(ext)) {\n return { icon: <FileMarkdownOutlined />, color: \"#13c2c2\" };\n }\n\n // 图片\n if (isImageFile(file)) {\n return { icon: <FileImageOutlined />, color: \"#8c8c8c\" };\n }\n\n // 默认\n return { icon: <FileOutlined />, color: \"#8c8c8c\" };\n};\n\n/**\n * 格式化文件大小\n */\nconst formatFileSize = (bytes: number): string => {\n if (bytes < 1024) return bytes + \" B\";\n if (bytes < 1024 * 1024) return (bytes / 1024).toFixed(1) + \" KB\";\n return (bytes / (1024 * 1024)).toFixed(1) + \" MB\";\n};\n\nconst styles = useStyles();\n\n/**\n * FileGallery - 单文件展示组件\n *\n * 功能特性:\n * - 📁 支持多种文件类型展示 (图片、音频、视频、文档等)\n * - 🖼️ 图片支持预览和缩略图\n * - 🎵 音频文件支持内联播放\n * - 🎬 视频文件支持内联播放\n * - 📊 显示文件大小、类型图标\n * - 🗑️ 支持删除操作\n * - 📤 支持上传进度显示\n * - 🎨 支持卡片内部布局控制(align:图标和信息的排列方式)\n *\n * @example\n * // XAdkSender 场景 - 可删除的本地文件\n * {files.map(file => (\n * <FileGallery\n * key={file.id}\n * file={file}\n * removable\n * onRemove={handleRemove}\n * />\n * ))}\n *\n * @example\n * // XadkChatbot 场景 - 只读的远程文件\n * {files.map(file => (\n * <FileGallery key={file.id} file={file} />\n * ))}\n */\nconst FileGallery: React.FC<FileGalleryProps> = ({\n file,\n align = \"left\",\n removable = false,\n onRemove = () => {},\n className,\n style,\n onClick,\n}) => {\n const [objectUrl, setObjectUrl] = useState(\"\");\n\n useEffect(() => {\n if (!file?.file) return;\n\n const url = URL.createObjectURL(file.file);\n setObjectUrl(url);\n\n return () => URL.revokeObjectURL(url);\n }, [file?.file]);\n\n if (!file) return null;\n\n const isImage = isImageFile(file);\n const isAudio = isAudioFile(file);\n const isVideo = isVideoFile(file);\n const isZip = isZipFile(file);\n const isMarkdown = isMarkdownFile(file);\n const fileName = getFileName(file);\n const fileSize = getFileSize(file);\n const fileId = getFileId(file);\n const url = getFileUrl(file) || objectUrl;\n\n // 图片文件\n if (isImage) {\n return (\n <div\n className={`${styles.fileCard} ${align === \"right\" ? \"align-right\" : \"\"} ${className || \"\"}`}\n style={{ ...style, cursor: onClick ? \"pointer\" : undefined }}\n onClick={() => onClick?.(file)}\n >\n {/* 图片缩略图 */}\n <div className={styles.imageThumbnail}>\n <Image\n src={url}\n alt={fileName}\n fallback=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mN8/5+hHgAHggJ/PchI7wAAAABJRU5ErkJggg==\"\n preview={onClick ? false : { src: url }}\n />\n\n {/* 上传进度遮罩 */}\n {file.status === \"uploading\" && (\n <div className={styles.imageOverlay}>\n <Progress\n type=\"circle\"\n percent={file.progress}\n size={30}\n strokeColor=\"#1677ff\"\n />\n </div>\n )}\n </div>\n\n {/* 文件信息 */}\n <div className={styles.fileInfo}>\n <Tooltip title={fileName}>\n <div className={styles.fileName}>\n {fileName.length > 15\n ? `${fileName.substring(0, 15)}...`\n : fileName}\n </div>\n </Tooltip>\n {Number(file?.size) > 0 && (\n <div className={styles.fileSize}>{formatFileSize(fileSize)}</div>\n )}\n </div>\n\n {/* 删除按钮 */}\n {removable && (\n <button\n className={styles.fileRemoveBtn}\n onClick={() => onRemove(fileId)}\n disabled={file.status === \"uploading\"}\n aria-label=\"删除文件\"\n >\n <CloseOutlined />\n </button>\n )}\n </div>\n );\n }\n\n // 音频文件\n if (isAudio) {\n return (\n <div\n className={`${styles.fileCard} ${align === \"right\" ? \"align-right\" : \"\"} ${className || \"\"}`}\n style={style}\n >\n <div className={styles.fileIcon} style={{ color: \"#722ed1\" }}>\n <AudioOutlined />\n </div>\n\n <div className={styles.fileInfo}>\n <Tooltip title={fileName}>\n <div className={styles.fileName}>{fileName}</div>\n </Tooltip>\n\n <audio\n src={url}\n controls\n className={styles.mediaWrapper}\n style={{ width: \"100%\", height: 28 }}\n />\n </div>\n\n {removable && (\n <button\n className={styles.fileRemoveBtn}\n onClick={() => onRemove(fileId)}\n disabled={file.status === \"uploading\"}\n aria-label=\"删除文件\"\n >\n <CloseOutlined />\n </button>\n )}\n </div>\n );\n }\n\n // 视频文件\n if (isVideo) {\n return (\n <div\n className={`${styles.fileCard} ${align === \"right\" ? \"align-right\" : \"\"} ${className || \"\"}`}\n style={style}\n >\n <div className={styles.fileIcon} style={{ color: \"#fa8c16\" }}>\n <VideoCameraOutlined />\n </div>\n\n <div className={styles.fileInfo}>\n <Tooltip title={fileName}>\n <div className={styles.fileName}>{fileName}</div>\n </Tooltip>\n\n <video\n src={url}\n controls\n className={styles.mediaWrapper}\n style={{ width: \"100%\", height: 40 }}\n />\n </div>\n\n {removable && (\n <button\n className={styles.fileRemoveBtn}\n onClick={() => onRemove(fileId)}\n disabled={file.status === \"uploading\"}\n aria-label=\"删除文件\"\n >\n <CloseOutlined />\n </button>\n )}\n </div>\n );\n }\n\n // 其他文件\n const { icon, color } = getFileIcon(file);\n const isExternalUrl = url && url.startsWith(\"http\");\n\n return (\n <div\n className={`${styles.fileCard} ${align === \"right\" ? \"align-right\" : \"\"} ${className || \"\"}`}\n style={{ ...style, cursor: onClick ? \"pointer\" : undefined }}\n onClick={() => onClick?.(file)}\n >\n <div className={styles.fileIcon} style={{ color }}>\n {icon}\n </div>\n\n <div className={styles.fileInfo}>\n {isExternalUrl && !onClick ? (\n <a\n href={url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={styles.fileLink}\n >\n <Tooltip title={fileName}>\n <div className={styles.fileName}>\n {fileName.length > 15\n ? `${fileName.substring(0, 15)}...`\n : fileName}\n </div>\n </Tooltip>\n </a>\n ) : (\n <Tooltip title={fileName}>\n <div className={styles.fileName}>\n {fileName.length > 15\n ? `${fileName.substring(0, 15)}...`\n : fileName}\n </div>\n </Tooltip>\n )}\n\n {file.status === \"uploading\" ? (\n <Progress\n percent={file.progress}\n size=\"small\"\n showInfo={false}\n strokeColor=\"#1677ff\"\n className={styles.progress}\n />\n ) : (\n fileSize > 0 && (\n <div className={styles.fileSize}>{formatFileSize(fileSize)}</div>\n )\n )}\n\n {file.status === \"error\" && file.errorMessage && (\n <div\n style={{\n fontSize: \"11px\",\n color: \"#ff4d4f\",\n marginTop: \"2px\",\n }}\n >\n {file.errorMessage}\n </div>\n )}\n </div>\n\n {removable && (\n <button\n className={styles.fileRemoveBtn}\n onClick={() => onRemove(fileId)}\n disabled={file.status === \"uploading\"}\n aria-label=\"删除文件\"\n >\n <CloseOutlined />\n </button>\n )}\n </div>\n );\n};\n\nexport default FileGallery;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["React","useState","useEffect","Image","Tooltip","Progress","FileOutlined","FilePdfOutlined","FileWordOutlined","FileExcelOutlined","FilePptOutlined","FileImageOutlined","CloseOutlined","AudioOutlined","FileZipOutlined","VideoCameraOutlined","FileMarkdownOutlined","useStyles","jsx","_jsx","jsxs","_jsxs","getFileName","file","displayName","name","getFileSize","size","getMimeType","mimeType","type","getFileUrl","_file$response","_file$response2","fileUri","response","fileUrl","tempUrl","getFileId","id","uid","isImageFile","startsWith","fileName","match","url","isAudioFile","isVideoFile","isZipFile","isMarkdownFile","getFileExtension","filename","ext","split","pop","toLowerCase","getFileIcon","icon","color","includes","formatFileSize","bytes","toFixed","styles","FileGallery","_ref","_ref$align","align","_ref$removable","removable","_ref$onRemove","onRemove","className","style","onClick","_useState","_useState2","_slicedToArray","objectUrl","setObjectUrl","URL","createObjectURL","revokeObjectURL","isImage","isAudio","isVideo","isZip","isMarkdown","fileSize","fileId","concat","fileCard","_objectSpread","cursor","undefined","children","imageThumbnail","src","alt","fallback","preview","status","imageOverlay","percent","progress","strokeColor","fileInfo","title","length","substring","Number","fileRemoveBtn","disabled","fileIcon","controls","mediaWrapper","width","height","_getFileIcon","isExternalUrl","href","target","rel","fileLink","showInfo","errorMessage","fontSize","marginTop"],"sources":["../../../../src/components/FileGallery/index.tsx"],"sourcesContent":["import React, { useState, useEffect } from \"react\";\nimport { Image, Tooltip, Progress } from \"antd\";\nimport {\n FileOutlined,\n FilePdfOutlined,\n FileWordOutlined,\n FileExcelOutlined,\n FilePptOutlined,\n FileImageOutlined,\n CloseOutlined,\n AudioOutlined,\n FileZipOutlined,\n VideoCameraOutlined,\n FileMarkdownOutlined,\n} from \"@ant-design/icons\";\nimport { FileItem, FileGalleryProps } from \"@/types\";\nimport { useStyles } from \"./styles\";\n\n// ==================== 工具函数 ====================\n\n/**\n * 获取文件名\n */\nconst getFileName = (file: FileItem): string => {\n return file.displayName || file.name || \"\";\n};\n\n/**\n * 获取文件大小\n */\nconst getFileSize = (file: FileItem): number => {\n return file.size || 0;\n};\n\n/**\n * 获取文件 MIME 类型\n */\nconst getMimeType = (file: FileItem): string => {\n return file.mimeType || file.type || \"\";\n};\n\n/**\n * 获取文件 URL\n */\nconst getFileUrl = (file: FileItem): string => {\n return (\n file.fileUri ||\n file.response?.fileUrl ||\n file.response?.tempUrl ||\n file.tempUrl ||\n \"\"\n );\n};\n\n/**\n * 获取文件唯一标识\n */\nconst getFileId = (file: FileItem): string => {\n return file.id || file.uid || \"\";\n};\n\n/**\n * 判断是否是图片文件\n */\nconst isImageFile = (file: FileItem): boolean => {\n const mimeType = getMimeType(file);\n if (mimeType && mimeType.startsWith(\"image/\")) return true;\n\n const fileName = getFileName(file);\n if (fileName && fileName.match(/\\.(jpg|jpeg|png|gif|webp|bmp|svg)$/i))\n return true;\n\n const url = getFileUrl(file);\n if (url && url.match(/\\.(jpg|jpeg|png|gif|webp|bmp|svg)(\\?.*)?$/i))\n return true;\n\n return false;\n};\n\n/**\n * 判断是否是音频文件\n */\nconst isAudioFile = (file: FileItem): boolean => {\n const mimeType = getMimeType(file);\n if (mimeType && mimeType.startsWith(\"audio/\")) return true;\n\n const fileName = getFileName(file);\n return !!fileName?.match(/\\.(mp3|wav|m4a|aac|ogg|flac)$/i);\n};\n\n/**\n * 判断是否是视频文件\n */\nconst isVideoFile = (file: FileItem): boolean => {\n const mimeType = getMimeType(file);\n if (mimeType && mimeType.startsWith(\"video/\")) return true;\n\n const fileName = getFileName(file);\n return !!fileName?.match(/\\.(mp4|mov|webm|mkv|avi)$/i);\n};\n\n/**\n * 判断是否是压缩包文件\n */\nconst isZipFile = (file: FileItem): boolean => {\n const fileName = getFileName(file);\n return !!fileName?.match(/\\.(zip|rar|7z|tar|gz|bz2|xz|tgz)$/i);\n};\n\n/**\n * 判断是否是 Markdown 文件\n */\nconst isMarkdownFile = (file: FileItem): boolean => {\n const fileName = getFileName(file);\n return !!fileName?.match(/\\.(md|markdown)$/i);\n};\n\n/**\n * 获取文件扩展名\n */\nconst getFileExtension = (filename: string): string => {\n const ext = filename.split(\".\").pop();\n return ext ? ext.toLowerCase() : \"\";\n};\n\n/**\n * 获取文件图标和颜色\n */\nconst getFileIcon = (\n file: FileItem,\n): { icon: React.ReactNode; color: string } => {\n const ext = getFileExtension(getFileName(file));\n\n // PDF\n if (ext === \"pdf\") {\n return { icon: <FilePdfOutlined />, color: \"#ff4d4f\" };\n }\n\n // Word\n if ([\"doc\", \"docx\"].includes(ext)) {\n return { icon: <FileWordOutlined />, color: \"#1677ff\" };\n }\n\n // Excel\n if ([\"xls\", \"xlsx\", \"csv\"].includes(ext)) {\n return { icon: <FileExcelOutlined />, color: \"#22b35e\" };\n }\n\n // PPT\n if ([\"ppt\", \"pptx\"].includes(ext)) {\n return { icon: <FilePptOutlined />, color: \"#ff6e31\" };\n }\n\n // Audio\n if ([\"mp3\", \"wav\", \"m4a\", \"aac\", \"ogg\", \"flac\"].includes(ext)) {\n return { icon: <AudioOutlined />, color: \"#722ed1\" };\n }\n\n // Video\n if ([\"mp4\", \"mov\", \"webm\", \"mkv\", \"avi\"].includes(ext)) {\n return { icon: <VideoCameraOutlined />, color: \"#fa8c16\" };\n }\n\n // 压缩包\n if ([\"zip\", \"rar\", \"7z\", \"tar\", \"gz\", \"bz2\", \"xz\", \"tgz\"].includes(ext)) {\n return { icon: <FileZipOutlined />, color: \"#eb2f96\" };\n }\n\n // Markdown\n if ([\"md\", \"markdown\"].includes(ext)) {\n return { icon: <FileMarkdownOutlined />, color: \"#13c2c2\" };\n }\n\n // 图片\n if (isImageFile(file)) {\n return { icon: <FileImageOutlined />, color: \"#8c8c8c\" };\n }\n\n // 默认\n return { icon: <FileOutlined />, color: \"#8c8c8c\" };\n};\n\n/**\n * 格式化文件大小\n */\nconst formatFileSize = (bytes: number): string => {\n if (bytes < 1024) return bytes + \" B\";\n if (bytes < 1024 * 1024) return (bytes / 1024).toFixed(1) + \" KB\";\n return (bytes / (1024 * 1024)).toFixed(1) + \" MB\";\n};\n\nconst styles = useStyles();\n\n/**\n * FileGallery - 单文件展示组件\n *\n * 功能特性:\n * - 📁 支持多种文件类型展示 (图片、音频、视频、文档等)\n * - 🖼️ 图片支持预览和缩略图\n * - 🎵 音频文件支持内联播放\n * - 🎬 视频文件支持内联播放\n * - 📊 显示文件大小、类型图标\n * - 🗑️ 支持删除操作\n * - 📤 支持上传进度显示\n * - 🎨 支持卡片内部布局控制(align:图标和信息的排列方式)\n *\n * @example\n * // XAdkSender 场景 - 可删除的本地文件\n * {files.map(file => (\n * <FileGallery\n * key={file.id}\n * file={file}\n * removable\n * onRemove={handleRemove}\n * />\n * ))}\n *\n * @example\n * // XadkChatbot 场景 - 只读的远程文件\n * {files.map(file => (\n * <FileGallery key={file.id} file={file} />\n * ))}\n */\nconst FileGallery: React.FC<FileGalleryProps> = ({\n file,\n align = \"left\",\n removable = false,\n onRemove = () => {},\n className,\n style,\n onClick,\n}) => {\n const [objectUrl, setObjectUrl] = useState(\"\");\n\n useEffect(() => {\n if (!file?.file) return;\n\n const url = URL.createObjectURL(file.file);\n setObjectUrl(url);\n\n return () => URL.revokeObjectURL(url);\n }, [file?.file]);\n\n if (!file) return null;\n\n const isImage = isImageFile(file);\n const isAudio = isAudioFile(file);\n const isVideo = isVideoFile(file);\n const isZip = isZipFile(file);\n const isMarkdown = isMarkdownFile(file);\n const fileName = getFileName(file);\n const fileSize = getFileSize(file);\n const fileId = getFileId(file);\n const url = getFileUrl(file) || objectUrl;\n\n // 图片文件\n if (isImage) {\n return (\n <div\n className={`${styles.fileCard} ${align === \"right\" ? \"align-right\" : \"\"} ${className || \"\"}`}\n style={{ ...style, cursor: onClick ? \"pointer\" : undefined }}\n onClick={() => onClick?.(file)}\n >\n {/* 图片缩略图 */}\n <div className={styles.imageThumbnail}>\n <Image\n src={url}\n alt={fileName}\n fallback=\"data:image/png;base64,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\"\n preview={onClick ? false : { src: url }}\n />\n\n {/* 上传进度遮罩 */}\n {file.status === \"uploading\" && (\n <div className={styles.imageOverlay}>\n <Progress\n type=\"circle\"\n percent={file.progress}\n size={30}\n strokeColor=\"#1677ff\"\n />\n </div>\n )}\n </div>\n\n {/* 文件信息 */}\n <div className={styles.fileInfo}>\n <Tooltip title={fileName}>\n <div className={styles.fileName}>\n {fileName.length > 15\n ? `${fileName.substring(0, 15)}...`\n : fileName}\n </div>\n </Tooltip>\n {Number(file?.size) > 0 && (\n <div className={styles.fileSize}>{formatFileSize(fileSize)}</div>\n )}\n </div>\n\n {/* 删除按钮 */}\n {removable && (\n <button\n className={styles.fileRemoveBtn}\n onClick={() => onRemove(fileId)}\n disabled={file.status === \"uploading\"}\n aria-label=\"删除文件\"\n >\n <CloseOutlined />\n </button>\n )}\n </div>\n );\n }\n\n // 音频文件\n if (isAudio) {\n return (\n <div\n className={`${styles.fileCard} ${align === \"right\" ? \"align-right\" : \"\"} ${className || \"\"}`}\n style={style}\n >\n <div className={styles.fileIcon} style={{ color: \"#722ed1\" }}>\n <AudioOutlined />\n </div>\n\n <div className={styles.fileInfo}>\n <Tooltip title={fileName}>\n <div className={styles.fileName}>{fileName}</div>\n </Tooltip>\n\n <audio\n src={url}\n controls\n className={styles.mediaWrapper}\n style={{ width: \"100%\", height: 28 }}\n />\n </div>\n\n {removable && (\n <button\n className={styles.fileRemoveBtn}\n onClick={() => onRemove(fileId)}\n disabled={file.status === \"uploading\"}\n aria-label=\"删除文件\"\n >\n <CloseOutlined />\n </button>\n )}\n </div>\n );\n }\n\n // 视频文件\n if (isVideo) {\n return (\n <div\n className={`${styles.fileCard} ${align === \"right\" ? \"align-right\" : \"\"} ${className || \"\"}`}\n style={style}\n >\n <div className={styles.fileIcon} style={{ color: \"#fa8c16\" }}>\n <VideoCameraOutlined />\n </div>\n\n <div className={styles.fileInfo}>\n <Tooltip title={fileName}>\n <div className={styles.fileName}>{fileName}</div>\n </Tooltip>\n\n <video\n src={url}\n controls\n className={styles.mediaWrapper}\n style={{ width: \"100%\", height: 40 }}\n />\n </div>\n\n {removable && (\n <button\n className={styles.fileRemoveBtn}\n onClick={() => onRemove(fileId)}\n disabled={file.status === \"uploading\"}\n aria-label=\"删除文件\"\n >\n <CloseOutlined />\n </button>\n )}\n </div>\n );\n }\n\n // 其他文件\n const { icon, color } = getFileIcon(file);\n const isExternalUrl = url && url.startsWith(\"http\");\n\n return (\n <div\n className={`${styles.fileCard} ${align === \"right\" ? \"align-right\" : \"\"} ${className || \"\"}`}\n style={{ ...style, cursor: onClick ? \"pointer\" : undefined }}\n onClick={() => onClick?.(file)}\n >\n <div className={styles.fileIcon} style={{ color }}>\n {icon}\n </div>\n\n <div className={styles.fileInfo}>\n {isExternalUrl && !onClick ? (\n <a\n href={url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={styles.fileLink}\n >\n <Tooltip title={fileName}>\n <div className={styles.fileName}>\n {fileName.length > 15\n ? `${fileName.substring(0, 15)}...`\n : fileName}\n </div>\n </Tooltip>\n </a>\n ) : (\n <Tooltip title={fileName}>\n <div className={styles.fileName}>\n {fileName.length > 15\n ? `${fileName.substring(0, 15)}...`\n : fileName}\n </div>\n </Tooltip>\n )}\n\n {file.status === \"uploading\" ? (\n <Progress\n percent={file.progress}\n size=\"small\"\n showInfo={false}\n strokeColor=\"#1677ff\"\n className={styles.progress}\n />\n ) : (\n fileSize > 0 && (\n <div className={styles.fileSize}>{formatFileSize(fileSize)}</div>\n )\n )}\n\n {file.status === \"error\" && file.errorMessage && (\n <div\n style={{\n fontSize: \"11px\",\n color: \"#ff4d4f\",\n marginTop: \"2px\",\n }}\n >\n {file.errorMessage}\n </div>\n )}\n </div>\n\n {removable && (\n <button\n className={styles.fileRemoveBtn}\n onClick={() => onRemove(fileId)}\n disabled={file.status === \"uploading\"}\n aria-label=\"删除文件\"\n >\n <CloseOutlined />\n </button>\n )}\n </div>\n );\n};\n\nexport default FileGallery;\n"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,QAAQ,EAAEC,SAAS,QAAQ,OAAO;AAClD,SAASC,KAAK,EAAEC,OAAO,EAAEC,QAAQ,QAAQ,MAAM;AAC/C,SACEC,YAAY,EACZC,eAAe,EACfC,gBAAgB,EAChBC,iBAAiB,EACjBC,eAAe,EACfC,iBAAiB,EACjBC,aAAa,EACbC,aAAa,EACbC,eAAe,EACfC,mBAAmB,EACnBC,oBAAoB,QACf,mBAAmB;AAE1B,SAASC,SAAS;;AAElB;;AAEA;AACA;AACA;AAFA,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAGA,IAAMC,WAAW,GAAG,SAAdA,WAAWA,CAAIC,IAAc,EAAa;EAC9C,OAAOA,IAAI,CAACC,WAAW,IAAID,IAAI,CAACE,IAAI,IAAI,EAAE;AAC5C,CAAC;;AAED;AACA;AACA;AACA,IAAMC,WAAW,GAAG,SAAdA,WAAWA,CAAIH,IAAc,EAAa;EAC9C,OAAOA,IAAI,CAACI,IAAI,IAAI,CAAC;AACvB,CAAC;;AAED;AACA;AACA;AACA,IAAMC,WAAW,GAAG,SAAdA,WAAWA,CAAIL,IAAc,EAAa;EAC9C,OAAOA,IAAI,CAACM,QAAQ,IAAIN,IAAI,CAACO,IAAI,IAAI,EAAE;AACzC,CAAC;;AAED;AACA;AACA;AACA,IAAMC,UAAU,GAAG,SAAbA,UAAUA,CAAIR,IAAc,EAAa;EAAA,IAAAS,cAAA,EAAAC,eAAA;EAC7C,OACEV,IAAI,CAACW,OAAO,MAAAF,cAAA,GACZT,IAAI,CAACY,QAAQ,cAAAH,cAAA,uBAAbA,cAAA,CAAeI,OAAO,OAAAH,eAAA,GACtBV,IAAI,CAACY,QAAQ,cAAAF,eAAA,uBAAbA,eAAA,CAAeI,OAAO,KACtBd,IAAI,CAACc,OAAO,IACZ,EAAE;AAEN,CAAC;;AAED;AACA;AACA;AACA,IAAMC,SAAS,GAAG,SAAZA,SAASA,CAAIf,IAAc,EAAa;EAC5C,OAAOA,IAAI,CAACgB,EAAE,IAAIhB,IAAI,CAACiB,GAAG,IAAI,EAAE;AAClC,CAAC;;AAED;AACA;AACA;AACA,IAAMC,WAAW,GAAG,SAAdA,WAAWA,CAAIlB,IAAc,EAAc;EAC/C,IAAMM,QAAQ,GAAGD,WAAW,CAACL,IAAI,CAAC;EAClC,IAAIM,QAAQ,IAAIA,QAAQ,CAACa,UAAU,CAAC,QAAQ,CAAC,EAAE,OAAO,IAAI;EAE1D,IAAMC,QAAQ,GAAGrB,WAAW,CAACC,IAAI,CAAC;EAClC,IAAIoB,QAAQ,IAAIA,QAAQ,CAACC,KAAK,CAAC,qCAAqC,CAAC,EACnE,OAAO,IAAI;EAEb,IAAMC,GAAG,GAAGd,UAAU,CAACR,IAAI,CAAC;EAC5B,IAAIsB,GAAG,IAAIA,GAAG,CAACD,KAAK,CAAC,4CAA4C,CAAC,EAChE,OAAO,IAAI;EAEb,OAAO,KAAK;AACd,CAAC;;AAED;AACA;AACA;AACA,IAAME,WAAW,GAAG,SAAdA,WAAWA,CAAIvB,IAAc,EAAc;EAC/C,IAAMM,QAAQ,GAAGD,WAAW,CAACL,IAAI,CAAC;EAClC,IAAIM,QAAQ,IAAIA,QAAQ,CAACa,UAAU,CAAC,QAAQ,CAAC,EAAE,OAAO,IAAI;EAE1D,IAAMC,QAAQ,GAAGrB,WAAW,CAACC,IAAI,CAAC;EAClC,OAAO,CAAC,EAACoB,QAAQ,aAARA,QAAQ,eAARA,QAAQ,CAAEC,KAAK,CAAC,gCAAgC,CAAC;AAC5D,CAAC;;AAED;AACA;AACA;AACA,IAAMG,WAAW,GAAG,SAAdA,WAAWA,CAAIxB,IAAc,EAAc;EAC/C,IAAMM,QAAQ,GAAGD,WAAW,CAACL,IAAI,CAAC;EAClC,IAAIM,QAAQ,IAAIA,QAAQ,CAACa,UAAU,CAAC,QAAQ,CAAC,EAAE,OAAO,IAAI;EAE1D,IAAMC,QAAQ,GAAGrB,WAAW,CAACC,IAAI,CAAC;EAClC,OAAO,CAAC,EAACoB,QAAQ,aAARA,QAAQ,eAARA,QAAQ,CAAEC,KAAK,CAAC,4BAA4B,CAAC;AACxD,CAAC;;AAED;AACA;AACA;AACA,IAAMI,SAAS,GAAG,SAAZA,SAASA,CAAIzB,IAAc,EAAc;EAC7C,IAAMoB,QAAQ,GAAGrB,WAAW,CAACC,IAAI,CAAC;EAClC,OAAO,CAAC,EAACoB,QAAQ,aAARA,QAAQ,eAARA,QAAQ,CAAEC,KAAK,CAAC,oCAAoC,CAAC;AAChE,CAAC;;AAED;AACA;AACA;AACA,IAAMK,cAAc,GAAG,SAAjBA,cAAcA,CAAI1B,IAAc,EAAc;EAClD,IAAMoB,QAAQ,GAAGrB,WAAW,CAACC,IAAI,CAAC;EAClC,OAAO,CAAC,EAACoB,QAAQ,aAARA,QAAQ,eAARA,QAAQ,CAAEC,KAAK,CAAC,mBAAmB,CAAC;AAC/C,CAAC;;AAED;AACA;AACA;AACA,IAAMM,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAIC,QAAgB,EAAa;EACrD,IAAMC,GAAG,GAAGD,QAAQ,CAACE,KAAK,CAAC,GAAG,CAAC,CAACC,GAAG,CAAC,CAAC;EACrC,OAAOF,GAAG,GAAGA,GAAG,CAACG,WAAW,CAAC,CAAC,GAAG,EAAE;AACrC,CAAC;;AAED;AACA;AACA;AACA,IAAMC,WAAW,GAAG,SAAdA,WAAWA,CACfjC,IAAc,EAC+B;EAC7C,IAAM6B,GAAG,GAAGF,gBAAgB,CAAC5B,WAAW,CAACC,IAAI,CAAC,CAAC;;EAE/C;EACA,IAAI6B,GAAG,KAAK,KAAK,EAAE;IACjB,OAAO;MAAEK,IAAI,eAAEtC,IAAA,CAACZ,eAAe,IAAE,CAAC;MAAEmD,KAAK,EAAE;IAAU,CAAC;EACxD;;EAEA;EACA,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAACC,QAAQ,CAACP,GAAG,CAAC,EAAE;IACjC,OAAO;MAAEK,IAAI,eAAEtC,IAAA,CAACX,gBAAgB,IAAE,CAAC;MAAEkD,KAAK,EAAE;IAAU,CAAC;EACzD;;EAEA;EACA,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAACC,QAAQ,CAACP,GAAG,CAAC,EAAE;IACxC,OAAO;MAAEK,IAAI,eAAEtC,IAAA,CAACV,iBAAiB,IAAE,CAAC;MAAEiD,KAAK,EAAE;IAAU,CAAC;EAC1D;;EAEA;EACA,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAACC,QAAQ,CAACP,GAAG,CAAC,EAAE;IACjC,OAAO;MAAEK,IAAI,eAAEtC,IAAA,CAACT,eAAe,IAAE,CAAC;MAAEgD,KAAK,EAAE;IAAU,CAAC;EACxD;;EAEA;EACA,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAACC,QAAQ,CAACP,GAAG,CAAC,EAAE;IAC7D,OAAO;MAAEK,IAAI,eAAEtC,IAAA,CAACN,aAAa,IAAE,CAAC;MAAE6C,KAAK,EAAE;IAAU,CAAC;EACtD;;EAEA;EACA,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAACC,QAAQ,CAACP,GAAG,CAAC,EAAE;IACtD,OAAO;MAAEK,IAAI,eAAEtC,IAAA,CAACJ,mBAAmB,IAAE,CAAC;MAAE2C,KAAK,EAAE;IAAU,CAAC;EAC5D;;EAEA;EACA,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAACC,QAAQ,CAACP,GAAG,CAAC,EAAE;IACvE,OAAO;MAAEK,IAAI,eAAEtC,IAAA,CAACL,eAAe,IAAE,CAAC;MAAE4C,KAAK,EAAE;IAAU,CAAC;EACxD;;EAEA;EACA,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAACC,QAAQ,CAACP,GAAG,CAAC,EAAE;IACpC,OAAO;MAAEK,IAAI,eAAEtC,IAAA,CAACH,oBAAoB,IAAE,CAAC;MAAE0C,KAAK,EAAE;IAAU,CAAC;EAC7D;;EAEA;EACA,IAAIjB,WAAW,CAAClB,IAAI,CAAC,EAAE;IACrB,OAAO;MAAEkC,IAAI,eAAEtC,IAAA,CAACR,iBAAiB,IAAE,CAAC;MAAE+C,KAAK,EAAE;IAAU,CAAC;EAC1D;;EAEA;EACA,OAAO;IAAED,IAAI,eAAEtC,IAAA,CAACb,YAAY,IAAE,CAAC;IAAEoD,KAAK,EAAE;EAAU,CAAC;AACrD,CAAC;;AAED;AACA;AACA;AACA,IAAME,cAAc,GAAG,SAAjBA,cAAcA,CAAIC,KAAa,EAAa;EAChD,IAAIA,KAAK,GAAG,IAAI,EAAE,OAAOA,KAAK,GAAG,IAAI;EACrC,IAAIA,KAAK,GAAG,IAAI,GAAG,IAAI,EAAE,OAAO,CAACA,KAAK,GAAG,IAAI,EAAEC,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK;EACjE,OAAO,CAACD,KAAK,IAAI,IAAI,GAAG,IAAI,CAAC,EAAEC,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK;AACnD,CAAC;AAED,IAAMC,MAAM,GAAG9C,SAAS,CAAC,CAAC;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAM+C,WAAuC,GAAG,SAA1CA,WAAuCA,CAAAC,IAAA,EAQvC;EAAA,IAPJ1C,IAAI,GAAA0C,IAAA,CAAJ1C,IAAI;IAAA2C,UAAA,GAAAD,IAAA,CACJE,KAAK;IAALA,KAAK,GAAAD,UAAA,cAAG,MAAM,GAAAA,UAAA;IAAAE,cAAA,GAAAH,IAAA,CACdI,SAAS;IAATA,SAAS,GAAAD,cAAA,cAAG,KAAK,GAAAA,cAAA;IAAAE,aAAA,GAAAL,IAAA,CACjBM,QAAQ;IAARA,QAAQ,GAAAD,aAAA,cAAG,YAAM,CAAC,CAAC,GAAAA,aAAA;IACnBE,SAAS,GAAAP,IAAA,CAATO,SAAS;IACTC,KAAK,GAAAR,IAAA,CAALQ,KAAK;IACLC,QAAO,GAAAT,IAAA,CAAPS,OAAO;EAEP,IAAAC,SAAA,GAAkC1E,QAAQ,CAAC,EAAE,CAAC;IAAA2E,UAAA,GAAAC,cAAA,CAAAF,SAAA;IAAvCG,SAAS,GAAAF,UAAA;IAAEG,YAAY,GAAAH,UAAA;EAE9B1E,SAAS,CAAC,YAAM;IACd,IAAI,EAACqB,IAAI,aAAJA,IAAI,eAAJA,IAAI,CAAEA,IAAI,GAAE;IAEjB,IAAMsB,GAAG,GAAGmC,GAAG,CAACC,eAAe,CAAC1D,IAAI,CAACA,IAAI,CAAC;IAC1CwD,YAAY,CAAClC,GAAG,CAAC;IAEjB,OAAO;MAAA,OAAMmC,GAAG,CAACE,eAAe,CAACrC,GAAG,CAAC;IAAA;EACvC,CAAC,EAAE,CAACtB,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEA,IAAI,CAAC,CAAC;EAEhB,IAAI,CAACA,IAAI,EAAE,OAAO,IAAI;EAEtB,IAAM4D,OAAO,GAAG1C,WAAW,CAAClB,IAAI,CAAC;EACjC,IAAM6D,OAAO,GAAGtC,WAAW,CAACvB,IAAI,CAAC;EACjC,IAAM8D,OAAO,GAAGtC,WAAW,CAACxB,IAAI,CAAC;EACjC,IAAM+D,KAAK,GAAGtC,SAAS,CAACzB,IAAI,CAAC;EAC7B,IAAMgE,UAAU,GAAGtC,cAAc,CAAC1B,IAAI,CAAC;EACvC,IAAMoB,QAAQ,GAAGrB,WAAW,CAACC,IAAI,CAAC;EAClC,IAAMiE,QAAQ,GAAG9D,WAAW,CAACH,IAAI,CAAC;EAClC,IAAMkE,MAAM,GAAGnD,SAAS,CAACf,IAAI,CAAC;EAC9B,IAAMsB,GAAG,GAAGd,UAAU,CAACR,IAAI,CAAC,IAAIuD,SAAS;;EAEzC;EACA,IAAIK,OAAO,EAAE;IACX,oBACE9D,KAAA;MACEmD,SAAS,KAAAkB,MAAA,CAAK3B,MAAM,CAAC4B,QAAQ,OAAAD,MAAA,CAAIvB,KAAK,KAAK,OAAO,GAAG,aAAa,GAAG,EAAE,OAAAuB,MAAA,CAAIlB,SAAS,IAAI,EAAE,CAAG;MAC7FC,KAAK,EAAAmB,aAAA,CAAAA,aAAA,KAAOnB,KAAK;QAAEoB,MAAM,EAAEnB,QAAO,GAAG,SAAS,GAAGoB;MAAS,EAAG;MAC7DpB,OAAO,EAAE,SAAAA,QAAA;QAAA,OAAMA,QAAO,aAAPA,QAAO,uBAAPA,QAAO,CAAGnD,IAAI,CAAC;MAAA,CAAC;MAAAwE,QAAA,gBAG/B1E,KAAA;QAAKmD,SAAS,EAAET,MAAM,CAACiC,cAAe;QAAAD,QAAA,gBACpC5E,IAAA,CAAChB,KAAK;UACJ8F,GAAG,EAAEpD,GAAI;UACTqD,GAAG,EAAEvD,QAAS;UACdwD,QAAQ,EAAC,gqGAAgqG;UACzqGC,OAAO,EAAE1B,QAAO,GAAG,KAAK,GAAG;YAAEuB,GAAG,EAAEpD;UAAI;QAAE,CACzC,CAAC,EAGDtB,IAAI,CAAC8E,MAAM,KAAK,WAAW,iBAC1BlF,IAAA;UAAKqD,SAAS,EAAET,MAAM,CAACuC,YAAa;UAAAP,QAAA,eAClC5E,IAAA,CAACd,QAAQ;YACPyB,IAAI,EAAC,QAAQ;YACbyE,OAAO,EAAEhF,IAAI,CAACiF,QAAS;YACvB7E,IAAI,EAAE,EAAG;YACT8E,WAAW,EAAC;UAAS,CACtB;QAAC,CACC,CACN;MAAA,CACE,CAAC,eAGNpF,KAAA;QAAKmD,SAAS,EAAET,MAAM,CAAC2C,QAAS;QAAAX,QAAA,gBAC9B5E,IAAA,CAACf,OAAO;UAACuG,KAAK,EAAEhE,QAAS;UAAAoD,QAAA,eACvB5E,IAAA;YAAKqD,SAAS,EAAET,MAAM,CAACpB,QAAS;YAAAoD,QAAA,EAC7BpD,QAAQ,CAACiE,MAAM,GAAG,EAAE,MAAAlB,MAAA,CACd/C,QAAQ,CAACkE,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,WAC5BlE;UAAQ,CACT;QAAC,CACC,CAAC,EACTmE,MAAM,CAACvF,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEI,IAAI,CAAC,GAAG,CAAC,iBACrBR,IAAA;UAAKqD,SAAS,EAAET,MAAM,CAACyB,QAAS;UAAAO,QAAA,EAAEnC,cAAc,CAAC4B,QAAQ;QAAC,CAAM,CACjE;MAAA,CACE,CAAC,EAGLnB,SAAS,iBACRlD,IAAA;QACEqD,SAAS,EAAET,MAAM,CAACgD,aAAc;QAChCrC,OAAO,EAAE,SAAAA,QAAA;UAAA,OAAMH,QAAQ,CAACkB,MAAM,CAAC;QAAA,CAAC;QAChCuB,QAAQ,EAAEzF,IAAI,CAAC8E,MAAM,KAAK,WAAY;QACtC,cAAW,0BAAM;QAAAN,QAAA,eAEjB5E,IAAA,CAACP,aAAa,IAAE;MAAC,CACX,CACT;IAAA,CACE,CAAC;EAEV;;EAEA;EACA,IAAIwE,OAAO,EAAE;IACX,oBACE/D,KAAA;MACEmD,SAAS,KAAAkB,MAAA,CAAK3B,MAAM,CAAC4B,QAAQ,OAAAD,MAAA,CAAIvB,KAAK,KAAK,OAAO,GAAG,aAAa,GAAG,EAAE,OAAAuB,MAAA,CAAIlB,SAAS,IAAI,EAAE,CAAG;MAC7FC,KAAK,EAAEA,KAAM;MAAAsB,QAAA,gBAEb5E,IAAA;QAAKqD,SAAS,EAAET,MAAM,CAACkD,QAAS;QAACxC,KAAK,EAAE;UAAEf,KAAK,EAAE;QAAU,CAAE;QAAAqC,QAAA,eAC3D5E,IAAA,CAACN,aAAa,IAAE;MAAC,CACd,CAAC,eAENQ,KAAA;QAAKmD,SAAS,EAAET,MAAM,CAAC2C,QAAS;QAAAX,QAAA,gBAC9B5E,IAAA,CAACf,OAAO;UAACuG,KAAK,EAAEhE,QAAS;UAAAoD,QAAA,eACvB5E,IAAA;YAAKqD,SAAS,EAAET,MAAM,CAACpB,QAAS;YAAAoD,QAAA,EAAEpD;UAAQ,CAAM;QAAC,CAC1C,CAAC,eAEVxB,IAAA;UACE8E,GAAG,EAAEpD,GAAI;UACTqE,QAAQ;UACR1C,SAAS,EAAET,MAAM,CAACoD,YAAa;UAC/B1C,KAAK,EAAE;YAAE2C,KAAK,EAAE,MAAM;YAAEC,MAAM,EAAE;UAAG;QAAE,CACtC,CAAC;MAAA,CACC,CAAC,EAELhD,SAAS,iBACRlD,IAAA;QACEqD,SAAS,EAAET,MAAM,CAACgD,aAAc;QAChCrC,OAAO,EAAE,SAAAA,QAAA;UAAA,OAAMH,QAAQ,CAACkB,MAAM,CAAC;QAAA,CAAC;QAChCuB,QAAQ,EAAEzF,IAAI,CAAC8E,MAAM,KAAK,WAAY;QACtC,cAAW,0BAAM;QAAAN,QAAA,eAEjB5E,IAAA,CAACP,aAAa,IAAE;MAAC,CACX,CACT;IAAA,CACE,CAAC;EAEV;;EAEA;EACA,IAAIyE,OAAO,EAAE;IACX,oBACEhE,KAAA;MACEmD,SAAS,KAAAkB,MAAA,CAAK3B,MAAM,CAAC4B,QAAQ,OAAAD,MAAA,CAAIvB,KAAK,KAAK,OAAO,GAAG,aAAa,GAAG,EAAE,OAAAuB,MAAA,CAAIlB,SAAS,IAAI,EAAE,CAAG;MAC7FC,KAAK,EAAEA,KAAM;MAAAsB,QAAA,gBAEb5E,IAAA;QAAKqD,SAAS,EAAET,MAAM,CAACkD,QAAS;QAACxC,KAAK,EAAE;UAAEf,KAAK,EAAE;QAAU,CAAE;QAAAqC,QAAA,eAC3D5E,IAAA,CAACJ,mBAAmB,IAAE;MAAC,CACpB,CAAC,eAENM,KAAA;QAAKmD,SAAS,EAAET,MAAM,CAAC2C,QAAS;QAAAX,QAAA,gBAC9B5E,IAAA,CAACf,OAAO;UAACuG,KAAK,EAAEhE,QAAS;UAAAoD,QAAA,eACvB5E,IAAA;YAAKqD,SAAS,EAAET,MAAM,CAACpB,QAAS;YAAAoD,QAAA,EAAEpD;UAAQ,CAAM;QAAC,CAC1C,CAAC,eAEVxB,IAAA;UACE8E,GAAG,EAAEpD,GAAI;UACTqE,QAAQ;UACR1C,SAAS,EAAET,MAAM,CAACoD,YAAa;UAC/B1C,KAAK,EAAE;YAAE2C,KAAK,EAAE,MAAM;YAAEC,MAAM,EAAE;UAAG;QAAE,CACtC,CAAC;MAAA,CACC,CAAC,EAELhD,SAAS,iBACRlD,IAAA;QACEqD,SAAS,EAAET,MAAM,CAACgD,aAAc;QAChCrC,OAAO,EAAE,SAAAA,QAAA;UAAA,OAAMH,QAAQ,CAACkB,MAAM,CAAC;QAAA,CAAC;QAChCuB,QAAQ,EAAEzF,IAAI,CAAC8E,MAAM,KAAK,WAAY;QACtC,cAAW,0BAAM;QAAAN,QAAA,eAEjB5E,IAAA,CAACP,aAAa,IAAE;MAAC,CACX,CACT;IAAA,CACE,CAAC;EAEV;;EAEA;EACA,IAAA0G,YAAA,GAAwB9D,WAAW,CAACjC,IAAI,CAAC;IAAjCkC,IAAI,GAAA6D,YAAA,CAAJ7D,IAAI;IAAEC,KAAK,GAAA4D,YAAA,CAAL5D,KAAK;EACnB,IAAM6D,aAAa,GAAG1E,GAAG,IAAIA,GAAG,CAACH,UAAU,CAAC,MAAM,CAAC;EAEnD,oBACErB,KAAA;IACEmD,SAAS,KAAAkB,MAAA,CAAK3B,MAAM,CAAC4B,QAAQ,OAAAD,MAAA,CAAIvB,KAAK,KAAK,OAAO,GAAG,aAAa,GAAG,EAAE,OAAAuB,MAAA,CAAIlB,SAAS,IAAI,EAAE,CAAG;IAC7FC,KAAK,EAAAmB,aAAA,CAAAA,aAAA,KAAOnB,KAAK;MAAEoB,MAAM,EAAEnB,QAAO,GAAG,SAAS,GAAGoB;IAAS,EAAG;IAC7DpB,OAAO,EAAE,SAAAA,QAAA;MAAA,OAAMA,QAAO,aAAPA,QAAO,uBAAPA,QAAO,CAAGnD,IAAI,CAAC;IAAA,CAAC;IAAAwE,QAAA,gBAE/B5E,IAAA;MAAKqD,SAAS,EAAET,MAAM,CAACkD,QAAS;MAACxC,KAAK,EAAE;QAAEf,KAAK,EAALA;MAAM,CAAE;MAAAqC,QAAA,EAC/CtC;IAAI,CACF,CAAC,eAENpC,KAAA;MAAKmD,SAAS,EAAET,MAAM,CAAC2C,QAAS;MAAAX,QAAA,GAC7BwB,aAAa,IAAI,CAAC7C,QAAO,gBACxBvD,IAAA;QACEqG,IAAI,EAAE3E,GAAI;QACV4E,MAAM,EAAC,QAAQ;QACfC,GAAG,EAAC,qBAAqB;QACzBlD,SAAS,EAAET,MAAM,CAAC4D,QAAS;QAAA5B,QAAA,eAE3B5E,IAAA,CAACf,OAAO;UAACuG,KAAK,EAAEhE,QAAS;UAAAoD,QAAA,eACvB5E,IAAA;YAAKqD,SAAS,EAAET,MAAM,CAACpB,QAAS;YAAAoD,QAAA,EAC7BpD,QAAQ,CAACiE,MAAM,GAAG,EAAE,MAAAlB,MAAA,CACd/C,QAAQ,CAACkE,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,WAC5BlE;UAAQ,CACT;QAAC,CACC;MAAC,CACT,CAAC,gBAEJxB,IAAA,CAACf,OAAO;QAACuG,KAAK,EAAEhE,QAAS;QAAAoD,QAAA,eACvB5E,IAAA;UAAKqD,SAAS,EAAET,MAAM,CAACpB,QAAS;UAAAoD,QAAA,EAC7BpD,QAAQ,CAACiE,MAAM,GAAG,EAAE,MAAAlB,MAAA,CACd/C,QAAQ,CAACkE,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,WAC5BlE;QAAQ,CACT;MAAC,CACC,CACV,EAEApB,IAAI,CAAC8E,MAAM,KAAK,WAAW,gBAC1BlF,IAAA,CAACd,QAAQ;QACPkG,OAAO,EAAEhF,IAAI,CAACiF,QAAS;QACvB7E,IAAI,EAAC,OAAO;QACZiG,QAAQ,EAAE,KAAM;QAChBnB,WAAW,EAAC,SAAS;QACrBjC,SAAS,EAAET,MAAM,CAACyC;MAAS,CAC5B,CAAC,GAEFhB,QAAQ,GAAG,CAAC,iBACVrE,IAAA;QAAKqD,SAAS,EAAET,MAAM,CAACyB,QAAS;QAAAO,QAAA,EAAEnC,cAAc,CAAC4B,QAAQ;MAAC,CAAM,CAEnE,EAEAjE,IAAI,CAAC8E,MAAM,KAAK,OAAO,IAAI9E,IAAI,CAACsG,YAAY,iBAC3C1G,IAAA;QACEsD,KAAK,EAAE;UACLqD,QAAQ,EAAE,MAAM;UAChBpE,KAAK,EAAE,SAAS;UAChBqE,SAAS,EAAE;QACb,CAAE;QAAAhC,QAAA,EAEDxE,IAAI,CAACsG;MAAY,CACf,CACN;IAAA,CACE,CAAC,EAELxD,SAAS,iBACRlD,IAAA;MACEqD,SAAS,EAAET,MAAM,CAACgD,aAAc;MAChCrC,OAAO,EAAE,SAAAA,QAAA;QAAA,OAAMH,QAAQ,CAACkB,MAAM,CAAC;MAAA,CAAC;MAChCuB,QAAQ,EAAEzF,IAAI,CAAC8E,MAAM,KAAK,WAAY;MACtC,cAAW,0BAAM;MAAAN,QAAA,eAEjB5E,IAAA,CAACP,aAAa,IAAE;IAAC,CACX,CACT;EAAA,CACE,CAAC;AAEV,CAAC;AAED,eAAeoD,WAAW"}
|
|
@@ -22,7 +22,7 @@ export interface DirectoryTreeComponentProps {
|
|
|
22
22
|
/** 编辑值变化回调 */
|
|
23
23
|
onEditValueChange?: (value: string) => void;
|
|
24
24
|
/** 编辑确认回调 */
|
|
25
|
-
onEditConfirm?: () => void;
|
|
25
|
+
onEditConfirm?: (value?: string) => void;
|
|
26
26
|
/** 编辑取消回调 */
|
|
27
27
|
onEditCancel?: () => void;
|
|
28
28
|
/** 新建上下文 */
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
|
|
2
|
-
import
|
|
2
|
+
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
3
|
+
import React, { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
3
4
|
import { Tree, Dropdown, Input } from "antd";
|
|
4
5
|
import { FileOutlined, FolderOutlined, MoreOutlined } from "@ant-design/icons";
|
|
5
6
|
import clsx from "clsx";
|
|
@@ -8,30 +9,83 @@ import { useFolderDrag } from "./useFolderDrag";
|
|
|
8
9
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
9
10
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
10
11
|
var AntDirectoryTree = Tree.DirectoryTree;
|
|
11
|
-
var
|
|
12
|
-
var
|
|
13
|
-
|
|
14
|
-
expandedKeys = _ref.expandedKeys,
|
|
15
|
-
onSelect = _ref.onSelect,
|
|
16
|
-
onExpand = _ref.onExpand,
|
|
17
|
-
_ref$showLine = _ref.showLine,
|
|
18
|
-
showLine = _ref$showLine === void 0 ? false : _ref$showLine,
|
|
19
|
-
switcherIcon = _ref.switcherIcon,
|
|
20
|
-
_ref$defaultExpandAll = _ref.defaultExpandAll,
|
|
21
|
-
defaultExpandAll = _ref$defaultExpandAll === void 0 ? true : _ref$defaultExpandAll,
|
|
12
|
+
var InlineEditInput = function InlineEditInput(_ref) {
|
|
13
|
+
var editKey = _ref.editKey,
|
|
14
|
+
value = _ref.value,
|
|
22
15
|
className = _ref.className,
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
16
|
+
onValueChange = _ref.onValueChange,
|
|
17
|
+
onConfirm = _ref.onConfirm,
|
|
18
|
+
onCancel = _ref.onCancel;
|
|
19
|
+
var _useState = useState(value),
|
|
20
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
21
|
+
draft = _useState2[0],
|
|
22
|
+
setDraft = _useState2[1];
|
|
23
|
+
var committedRef = useRef(false);
|
|
24
|
+
useEffect(function () {
|
|
25
|
+
setDraft(value);
|
|
26
|
+
committedRef.current = false;
|
|
27
|
+
}, [editKey, value]);
|
|
28
|
+
var commit = useCallback(function () {
|
|
29
|
+
if (committedRef.current) return;
|
|
30
|
+
committedRef.current = true;
|
|
31
|
+
onValueChange === null || onValueChange === void 0 || onValueChange(draft);
|
|
32
|
+
onConfirm === null || onConfirm === void 0 || onConfirm(draft);
|
|
33
|
+
}, [draft, onConfirm, onValueChange]);
|
|
34
|
+
return /*#__PURE__*/_jsx(Input, {
|
|
35
|
+
size: "small",
|
|
36
|
+
value: draft,
|
|
37
|
+
onChange: function onChange(e) {
|
|
38
|
+
return setDraft(e.target.value);
|
|
39
|
+
},
|
|
40
|
+
onBlur: commit,
|
|
41
|
+
onPressEnter: commit,
|
|
42
|
+
onKeyDown: function onKeyDown(e) {
|
|
43
|
+
e.stopPropagation();
|
|
44
|
+
if (e.key === "Escape") {
|
|
45
|
+
committedRef.current = true;
|
|
46
|
+
onCancel === null || onCancel === void 0 || onCancel();
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
autoFocus: true,
|
|
50
|
+
className: className,
|
|
51
|
+
onClick: function onClick(e) {
|
|
52
|
+
return e.stopPropagation();
|
|
53
|
+
},
|
|
54
|
+
onMouseDown: function onMouseDown(e) {
|
|
55
|
+
return e.stopPropagation();
|
|
56
|
+
},
|
|
57
|
+
onSelect: function onSelect(e) {
|
|
58
|
+
return e.stopPropagation();
|
|
59
|
+
},
|
|
60
|
+
onFocus: function onFocus(e) {
|
|
61
|
+
return e.stopPropagation();
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
};
|
|
65
|
+
var DirectoryTreeComponent = function DirectoryTreeComponent(_ref2) {
|
|
66
|
+
var treeData = _ref2.treeData,
|
|
67
|
+
selectedKeys = _ref2.selectedKeys,
|
|
68
|
+
expandedKeys = _ref2.expandedKeys,
|
|
69
|
+
onSelect = _ref2.onSelect,
|
|
70
|
+
onExpand = _ref2.onExpand,
|
|
71
|
+
_ref2$showLine = _ref2.showLine,
|
|
72
|
+
showLine = _ref2$showLine === void 0 ? false : _ref2$showLine,
|
|
73
|
+
switcherIcon = _ref2.switcherIcon,
|
|
74
|
+
_ref2$defaultExpandAl = _ref2.defaultExpandAll,
|
|
75
|
+
defaultExpandAll = _ref2$defaultExpandAl === void 0 ? true : _ref2$defaultExpandAl,
|
|
76
|
+
className = _ref2.className,
|
|
77
|
+
directoryIcons = _ref2.directoryIcons,
|
|
78
|
+
directoryTitle = _ref2.directoryTitle,
|
|
79
|
+
moreActions = _ref2.moreActions,
|
|
80
|
+
width = _ref2.width,
|
|
81
|
+
draggable = _ref2.draggable,
|
|
82
|
+
onDrop = _ref2.onDrop,
|
|
83
|
+
editNode = _ref2.editNode,
|
|
84
|
+
onEditValueChange = _ref2.onEditValueChange,
|
|
85
|
+
onEditConfirm = _ref2.onEditConfirm,
|
|
86
|
+
onEditCancel = _ref2.onEditCancel,
|
|
87
|
+
createInfo = _ref2.createInfo,
|
|
88
|
+
onStartRename = _ref2.onStartRename;
|
|
35
89
|
var styles = useStyles();
|
|
36
90
|
var getIcon = useCallback(function (node) {
|
|
37
91
|
if (directoryIcons === false || directoryIcons === null) {
|
|
@@ -59,38 +113,16 @@ var DirectoryTreeComponent = function DirectoryTreeComponent(_ref) {
|
|
|
59
113
|
return s !== "";
|
|
60
114
|
});
|
|
61
115
|
}, []);
|
|
62
|
-
var renderInlineInput = useCallback(function (value) {
|
|
116
|
+
var renderInlineInput = useCallback(function (key, value) {
|
|
63
117
|
return /*#__PURE__*/_jsx("span", {
|
|
64
118
|
className: styles.treeNodeTitle,
|
|
65
|
-
children: /*#__PURE__*/_jsx(
|
|
66
|
-
|
|
119
|
+
children: /*#__PURE__*/_jsx(InlineEditInput, {
|
|
120
|
+
editKey: key,
|
|
67
121
|
value: value,
|
|
68
|
-
onChange: function onChange(e) {
|
|
69
|
-
return onEditValueChange === null || onEditValueChange === void 0 ? void 0 : onEditValueChange(e.target.value);
|
|
70
|
-
},
|
|
71
|
-
onBlur: function onBlur() {
|
|
72
|
-
return onEditConfirm === null || onEditConfirm === void 0 ? void 0 : onEditConfirm();
|
|
73
|
-
},
|
|
74
|
-
onPressEnter: function onPressEnter() {
|
|
75
|
-
return onEditConfirm === null || onEditConfirm === void 0 ? void 0 : onEditConfirm();
|
|
76
|
-
},
|
|
77
|
-
onKeyDown: function onKeyDown(e) {
|
|
78
|
-
if (e.key === "Escape") {
|
|
79
|
-
e.stopPropagation();
|
|
80
|
-
onEditCancel === null || onEditCancel === void 0 || onEditCancel();
|
|
81
|
-
}
|
|
82
|
-
},
|
|
83
|
-
autoFocus: true,
|
|
84
122
|
className: styles.inlineInput,
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
onSelect: function onSelect(e) {
|
|
89
|
-
return e.stopPropagation();
|
|
90
|
-
},
|
|
91
|
-
onFocus: function onFocus(e) {
|
|
92
|
-
return e.stopPropagation();
|
|
93
|
-
}
|
|
123
|
+
onValueChange: onEditValueChange,
|
|
124
|
+
onConfirm: onEditConfirm,
|
|
125
|
+
onCancel: onEditCancel
|
|
94
126
|
})
|
|
95
127
|
});
|
|
96
128
|
}, [onEditValueChange, onEditConfirm, onEditCancel, styles]);
|
|
@@ -191,7 +223,7 @@ var DirectoryTreeComponent = function DirectoryTreeComponent(_ref) {
|
|
|
191
223
|
|
|
192
224
|
// 编辑态:直接渲染 inline input
|
|
193
225
|
if (isEditing) {
|
|
194
|
-
baseNode.title = renderInlineInput(editNode.currentValue);
|
|
226
|
+
baseNode.title = renderInlineInput(editNode.key, editNode.currentValue);
|
|
195
227
|
return baseNode;
|
|
196
228
|
}
|
|
197
229
|
|
|
@@ -255,7 +287,7 @@ var DirectoryTreeComponent = function DirectoryTreeComponent(_ref) {
|
|
|
255
287
|
if (targetParentKey === parentKey || targetParentKey === "" && parentKey === "" || targetParentKey === "/" && parentKey === "") {
|
|
256
288
|
var tempNode = {
|
|
257
289
|
key: editNode.key,
|
|
258
|
-
title: renderInlineInput(editNode.currentValue),
|
|
290
|
+
title: renderInlineInput(editNode.key, editNode.currentValue),
|
|
259
291
|
icon: createInfo.type === "folder" ? /*#__PURE__*/_jsx(FolderOutlined, {}) : /*#__PURE__*/_jsx(FileOutlined, {}),
|
|
260
292
|
isLeaf: createInfo.type === "file",
|
|
261
293
|
path: editNode.key,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useCallback","useMemo","Tree","Dropdown","Input","FileOutlined","FolderOutlined","MoreOutlined","clsx","useStyles","useFolderDrag","jsx","_jsx","jsxs","_jsxs","AntDirectoryTree","DirectoryTree","DirectoryTreeComponent","_ref","treeData","selectedKeys","expandedKeys","onSelect","onExpand","_ref$showLine","showLine","switcherIcon","_ref$defaultExpandAll","defaultExpandAll","className","directoryIcons","directoryTitle","moreActions","width","draggable","onDrop","editNode","onEditValueChange","onEditConfirm","onEditCancel","createInfo","onStartRename","styles","getIcon","node","type","icon","directory","filePath","path","toLowerCase","extension","split","pop","buildPathSegments","parentSegments","arguments","length","undefined","concat","_toConsumableArray","filter","s","renderInlineInput","value","treeNodeTitle","children","size","onChange","e","target","onBlur","onPressEnter","onKeyDown","key","stopPropagation","autoFocus","inlineInput","onClick","onFocus","dragMode","handleDragDrop","dragNode","dropNode","dropPosition","dragNd","dropNd","originalDragNode","_originalNode","originalDropNode","dragKey","String","dropKey","dragFileName","newPath","fileName","title","extra","oldPath","isLeaf","dropParentPath","includes","substring","lastIndexOf","handleDragEnterExpand","nodeKey","isExpanded","expanded","nativeEvent","_useFolderDrag","onDragEnterExpand","onDragStart","onDragEnd","onItemDragEnter","onItemDragOver","onItemDragLeave","onItemDrop","onContainerDragOver","onContainerDrop","canDragNode","convertToTreeData","nodes","parentKey","result","map","pathSegments","fullPath","join","replace","isEditing","nodeChildren","baseNode","currentValue","titleContent","treeNodeTitleHover","menu","startRename","trigger","placement","moreIcon","nodeData","draggableDiv","treeNodeWrapper","dragNodeHandle","onDragEnter","onDragOver","onDragLeave","mode","targetParentKey","tempNode","_isTempNode","push","treeDataConverted","handleSelect","keys","info","_info$nativeEvent","closest","titleNode","directoryPanel","style","directoryTreeContent","multiple","blockNode"],"sources":["../../../../src/components/FolderTree/DirectoryTree.tsx"],"sourcesContent":["import React, { useCallback, useMemo } from \"react\";\nimport { Tree, Dropdown, Input } from \"antd\";\nimport { FileOutlined, FolderOutlined, MoreOutlined } from \"@ant-design/icons\";\nimport type { TreeProps } from \"antd\";\nimport type { DataNode } from \"antd/es/tree\";\nimport clsx from \"clsx\";\nimport type {\n FolderTreeData,\n FolderTreeProps,\n EditNodeInfo,\n CreateNodeContext,\n} from \"./types\";\nimport { useStyles } from \"./styles\";\nimport { useFolderDrag, type DropPosition } from \"./useFolderDrag\";\n\nconst { DirectoryTree: AntDirectoryTree } = Tree;\n\nexport interface DirectoryTreeComponentProps {\n treeData: FolderTreeData[];\n directoryIcons?: FolderTreeProps[\"directoryIcons\"];\n selectedKeys?: string[];\n expandedKeys?: string[];\n onSelect?: TreeProps[\"onSelect\"];\n onExpand?: TreeProps[\"onExpand\"];\n showLine?: FolderTreeProps[\"showLine\"];\n switcherIcon?: FolderTreeProps[\"switcherIcon\"];\n defaultExpandAll?: boolean;\n className?: string;\n directoryTitle?: FolderTreeProps[\"directoryTitle\"];\n moreActions?: FolderTreeProps[\"moreActions\"];\n width?: number | string;\n draggable?: FolderTreeProps[\"draggable\"];\n onDrop?: FolderTreeProps[\"onDrop\"];\n /** 当前编辑节点信息 */\n editNode?: EditNodeInfo | null;\n /** 编辑值变化回调 */\n onEditValueChange?: (value: string) => void;\n /** 编辑确认回调 */\n onEditConfirm?: () => void;\n /** 编辑取消回调 */\n onEditCancel?: () => void;\n /** 新建上下文 */\n createInfo?: CreateNodeContext | null;\n /** 开始重命名回调(由父组件注入) */\n onStartRename?: (fullPath: string, node: FolderTreeData) => void;\n}\n\nconst DirectoryTreeComponent: React.FC<DirectoryTreeComponentProps> = ({\n treeData,\n selectedKeys,\n expandedKeys,\n onSelect,\n onExpand,\n showLine = false,\n switcherIcon,\n defaultExpandAll = true,\n className,\n directoryIcons,\n directoryTitle,\n moreActions,\n width,\n draggable,\n onDrop,\n editNode,\n onEditValueChange,\n onEditConfirm,\n onEditCancel,\n createInfo,\n onStartRename,\n}) => {\n const styles = useStyles();\n\n const getIcon = useCallback(\n (node: FolderTreeData) => {\n if (directoryIcons === false || directoryIcons === null) {\n return null;\n }\n if (node.type == \"folder\") {\n const icon = directoryIcons?.directory;\n if (typeof icon === \"function\") return icon();\n return icon || <FolderOutlined />;\n }\n const filePath = node.path.toLowerCase();\n const extension = filePath.split(\".\").pop();\n if (extension) {\n const icon = directoryIcons?.[extension];\n if (icon) return typeof icon === \"function\" ? icon() : icon;\n }\n return <FileOutlined />;\n },\n [directoryIcons],\n );\n\n const buildPathSegments = useCallback(\n (node: FolderTreeData, parentSegments: string[] = []): string[] => {\n if (node.path === \"/\" && parentSegments.length === 0) {\n return [\"/\"];\n }\n return [...parentSegments, node.path].filter((s) => s !== \"\");\n },\n [],\n );\n\n const renderInlineInput = useCallback(\n (value: string) => (\n <span className={styles.treeNodeTitle}>\n <Input\n size=\"small\"\n value={value}\n onChange={(e) => onEditValueChange?.(e.target.value)}\n onBlur={() => onEditConfirm?.()}\n onPressEnter={() => onEditConfirm?.()}\n onKeyDown={(e) => {\n if (e.key === \"Escape\") {\n e.stopPropagation();\n onEditCancel?.();\n }\n }}\n autoFocus\n className={styles.inlineInput}\n onClick={(e) => e.stopPropagation()}\n onSelect={(e) => e.stopPropagation()}\n onFocus={(e) => e.stopPropagation()}\n />\n </span>\n ),\n [onEditValueChange, onEditConfirm, onEditCancel, styles],\n );\n\n // ====== 拖拽模式 ======\n const dragMode = draggable === true ? \"file\" : draggable || false;\n\n // ====== 自定义拖拽 hook ======\n const handleDragDrop = useCallback(\n (dragNode: DataNode, dropNode: DataNode, dropPosition: DropPosition) => {\n const dragNd = dragNode as DataNode & { _originalNode?: FolderTreeData };\n const dropNd = dropNode as DataNode & { _originalNode?: FolderTreeData };\n const originalDragNode = dragNd._originalNode;\n const originalDropNode = dropNd._originalNode;\n if (!originalDragNode) return;\n\n const dragKey = String(dragNode.key);\n const dropKey = String(dropNode.key);\n const dragFileName = originalDragNode.path;\n let newPath: string;\n\n // 拖到底部 drop zone:放在根级别末尾\n if (!originalDropNode && dropKey === \"__bottom_placeholder__\") {\n newPath = dragFileName;\n onDrop?.({\n fileName: originalDragNode.title,\n extra: originalDragNode.extra,\n oldPath: dragKey,\n newPath,\n dragNode: originalDragNode,\n dropNode: { title: \"\", path: \"\" },\n });\n return;\n }\n\n if (!originalDropNode) return;\n\n if (!dropNode.isLeaf && dropPosition === 0) {\n // 拖入文件夹内部\n newPath = `${dropKey}/${dragFileName}`;\n } else {\n // 拖到节点旁边(同级)\n const dropParentPath = dropKey.includes(\"/\")\n ? dropKey.substring(0, dropKey.lastIndexOf(\"/\"))\n : \"\";\n newPath = dropParentPath\n ? `${dropParentPath}/${dragFileName}`\n : dragFileName;\n }\n\n onDrop?.({\n fileName: originalDragNode.title,\n extra: originalDragNode.extra,\n oldPath: dragKey,\n newPath,\n dragNode: originalDragNode,\n dropNode: originalDropNode,\n });\n },\n [onDrop],\n );\n\n const handleDragEnterExpand = useCallback(\n (nodeKey: string) => {\n const isExpanded = expandedKeys?.includes(nodeKey);\n if (!isExpanded) {\n onExpand?.([...(expandedKeys || []), nodeKey], {\n node: null as any,\n expanded: true,\n nativeEvent: null as any,\n });\n }\n },\n [expandedKeys, onExpand],\n );\n\n const {\n onDragStart,\n onDragEnd,\n onItemDragEnter,\n onItemDragOver,\n onItemDragLeave,\n onItemDrop,\n onContainerDragOver,\n onContainerDrop,\n canDragNode,\n } = useFolderDrag({\n dragMode,\n onDrop: handleDragDrop,\n onDragEnterExpand: handleDragEnterExpand,\n });\n\n // ====== 转换树数据 ======\n // 注意:convertToTreeData 不依赖拖拽状态,拖拽效果通过 DOM 操作实现\n const convertToTreeData = useCallback(\n (\n nodes: FolderTreeData[],\n parentSegments: string[] = [],\n parentKey: string = \"\",\n ): DataNode[] => {\n const result = nodes.map((node) => {\n const pathSegments = buildPathSegments(node, parentSegments);\n const fullPath = pathSegments.join(\"/\").replace(/^\\/+/, \"\");\n\n const isEditing = editNode && editNode.key === fullPath;\n\n const nodeChildren = node.children\n ? convertToTreeData(node.children, pathSegments, fullPath)\n : undefined;\n\n const baseNode: any = {\n key: fullPath,\n path: fullPath,\n pathSegments,\n icon: getIcon(node),\n isLeaf: !(node.type === \"folder\"),\n _originalNode: node,\n children: nodeChildren,\n };\n\n // 编辑态:直接渲染 inline input\n if (isEditing) {\n baseNode.title = renderInlineInput(editNode!.currentValue);\n return baseNode;\n }\n\n // title 内容(按钮、菜单等)\n const titleContent = (\n <span\n className={clsx(\n styles.treeNodeTitle,\n moreActions && styles.treeNodeTitleHover,\n )}\n >\n <span>{node.title}</span>\n {moreActions && (\n <Dropdown\n menu={moreActions(node, {\n startRename: () => onStartRename?.(fullPath, node),\n })}\n trigger={[\"click\"]}\n placement=\"bottomRight\"\n >\n <span\n className={clsx(styles.moreIcon, \"folder-tree-more-icon\")}\n onClick={(e) => e.stopPropagation()}\n >\n <MoreOutlined />\n </span>\n </Dropdown>\n )}\n </span>\n );\n\n // 启用拖拽时:在 title 外层包裹具有 data-node-key 属性的容器,\n // 用于 DOM 查询和事件绑定。拖拽状态通过 CSS class 控制。\n if (dragMode) {\n const nodeData = baseNode as DataNode & {\n _isTempNode?: boolean;\n };\n const draggableDiv = canDragNode(nodeData);\n\n baseNode.title = (\n <div\n className={clsx(\n styles.treeNodeWrapper,\n draggableDiv && styles.dragNodeHandle,\n )}\n data-node-key={fullPath}\n draggable={draggableDiv}\n onDragStart={\n draggableDiv ? (e) => onDragStart(e, baseNode) : undefined\n }\n onDragEnd={draggableDiv ? onDragEnd : undefined}\n onDragEnter={(e) => onItemDragEnter(e, baseNode)}\n onDragOver={(e) => onItemDragOver(e, baseNode)}\n onDragLeave={onItemDragLeave}\n onDrop={(e) => onItemDrop(e, baseNode)}\n >\n {titleContent}\n </div>\n );\n } else {\n baseNode.title = titleContent;\n }\n\n return baseNode;\n });\n\n // 新建模式:在目标父节点下插入临时节点\n if (createInfo && editNode && editNode.mode === \"create\") {\n const targetParentKey = createInfo.parentKey;\n if (\n targetParentKey === parentKey ||\n (targetParentKey === \"\" && parentKey === \"\") ||\n (targetParentKey === \"/\" && parentKey === \"\")\n ) {\n const tempNode: any = {\n key: editNode.key,\n title: renderInlineInput(editNode.currentValue),\n icon:\n createInfo.type === \"folder\" ? (\n <FolderOutlined />\n ) : (\n <FileOutlined />\n ),\n isLeaf: createInfo.type === \"file\",\n path: editNode.key,\n pathSegments: [editNode.key],\n _originalNode: null,\n _isTempNode: true,\n };\n result.push(tempNode);\n }\n }\n\n return result;\n },\n [\n buildPathSegments,\n getIcon,\n moreActions,\n styles,\n editNode,\n renderInlineInput,\n createInfo,\n onStartRename,\n dragMode,\n canDragNode,\n onDragStart,\n onDragEnd,\n onItemDragEnter,\n onItemDragOver,\n onItemDragLeave,\n onItemDrop,\n ],\n );\n\n const treeDataConverted = useMemo(\n () => convertToTreeData(treeData, [], \"\"),\n [treeData, convertToTreeData],\n );\n\n const handleSelect: TreeProps[\"onSelect\"] = useCallback(\n (keys: any, info: any) => {\n // 编辑态不响应选中\n if (editNode) return;\n // 临时节点不可选中\n const node = info.node as DataNode & { _isTempNode?: boolean };\n if (node._isTempNode) return;\n // 点击 moreActions 区域不触发选中\n const target = info.nativeEvent?.target as HTMLElement | null;\n if (\n target &&\n (target.closest(\".folder-tree-more-icon\") ||\n target.closest(\".ant-dropdown\"))\n ) {\n return;\n }\n onSelect?.(keys, info);\n },\n [onSelect, editNode],\n );\n\n const titleNode =\n directoryTitle === false || directoryTitle === null\n ? null\n : typeof directoryTitle === \"function\"\n ? directoryTitle()\n : directoryTitle;\n\n return (\n <div className={clsx(styles.directoryPanel, className)} style={{ width }}>\n {titleNode && <div className={styles.directoryTitle}>{titleNode}</div>}\n <div\n className={styles.directoryTreeContent}\n onDragOver={dragMode ? onContainerDragOver : undefined}\n onDrop={dragMode ? onContainerDrop : undefined}\n >\n <AntDirectoryTree\n style={\n {\n \"--ant-tree-directory-node-selected-bg\": \"rgba(0,0,0,0.03)\",\n \"--ant-tree-directory-node-selected-color\": \"#1a1c1e\",\n } as React.CSSProperties\n }\n treeData={treeDataConverted}\n selectedKeys={selectedKeys}\n expandedKeys={expandedKeys}\n onSelect={handleSelect}\n onExpand={onExpand}\n multiple={false}\n blockNode\n showLine={showLine as any}\n switcherIcon={switcherIcon}\n defaultExpandAll={defaultExpandAll}\n draggable={false}\n />\n </div>\n </div>\n );\n};\n\nexport default DirectoryTreeComponent;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["React","useCallback","useEffect","useMemo","useRef","useState","Tree","Dropdown","Input","FileOutlined","FolderOutlined","MoreOutlined","clsx","useStyles","useFolderDrag","jsx","_jsx","jsxs","_jsxs","AntDirectoryTree","DirectoryTree","InlineEditInput","_ref","editKey","value","className","onValueChange","onConfirm","onCancel","_useState","_useState2","_slicedToArray","draft","setDraft","committedRef","current","commit","size","onChange","e","target","onBlur","onPressEnter","onKeyDown","stopPropagation","key","autoFocus","onClick","onMouseDown","onSelect","onFocus","DirectoryTreeComponent","_ref2","treeData","selectedKeys","expandedKeys","onExpand","_ref2$showLine","showLine","switcherIcon","_ref2$defaultExpandAl","defaultExpandAll","directoryIcons","directoryTitle","moreActions","width","draggable","onDrop","editNode","onEditValueChange","onEditConfirm","onEditCancel","createInfo","onStartRename","styles","getIcon","node","type","icon","directory","filePath","path","toLowerCase","extension","split","pop","buildPathSegments","parentSegments","arguments","length","undefined","concat","_toConsumableArray","filter","s","renderInlineInput","treeNodeTitle","children","inlineInput","dragMode","handleDragDrop","dragNode","dropNode","dropPosition","dragNd","dropNd","originalDragNode","_originalNode","originalDropNode","dragKey","String","dropKey","dragFileName","newPath","fileName","title","extra","oldPath","isLeaf","dropParentPath","includes","substring","lastIndexOf","handleDragEnterExpand","nodeKey","isExpanded","expanded","nativeEvent","_useFolderDrag","onDragEnterExpand","onDragStart","onDragEnd","onItemDragEnter","onItemDragOver","onItemDragLeave","onItemDrop","onContainerDragOver","onContainerDrop","canDragNode","convertToTreeData","nodes","parentKey","result","map","pathSegments","fullPath","join","replace","isEditing","nodeChildren","baseNode","currentValue","titleContent","treeNodeTitleHover","menu","startRename","trigger","placement","moreIcon","nodeData","draggableDiv","treeNodeWrapper","dragNodeHandle","onDragEnter","onDragOver","onDragLeave","mode","targetParentKey","tempNode","_isTempNode","push","treeDataConverted","handleSelect","keys","info","_info$nativeEvent","closest","titleNode","directoryPanel","style","directoryTreeContent","multiple","blockNode"],"sources":["../../../../src/components/FolderTree/DirectoryTree.tsx"],"sourcesContent":["import React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { Tree, Dropdown, Input } from \"antd\";\nimport { FileOutlined, FolderOutlined, MoreOutlined } from \"@ant-design/icons\";\nimport type { TreeProps } from \"antd\";\nimport type { DataNode } from \"antd/es/tree\";\nimport clsx from \"clsx\";\nimport type {\n FolderTreeData,\n FolderTreeProps,\n EditNodeInfo,\n CreateNodeContext,\n} from \"./types\";\nimport { useStyles } from \"./styles\";\nimport { useFolderDrag, type DropPosition } from \"./useFolderDrag\";\n\nconst { DirectoryTree: AntDirectoryTree } = Tree;\n\nexport interface DirectoryTreeComponentProps {\n treeData: FolderTreeData[];\n directoryIcons?: FolderTreeProps[\"directoryIcons\"];\n selectedKeys?: string[];\n expandedKeys?: string[];\n onSelect?: TreeProps[\"onSelect\"];\n onExpand?: TreeProps[\"onExpand\"];\n showLine?: FolderTreeProps[\"showLine\"];\n switcherIcon?: FolderTreeProps[\"switcherIcon\"];\n defaultExpandAll?: boolean;\n className?: string;\n directoryTitle?: FolderTreeProps[\"directoryTitle\"];\n moreActions?: FolderTreeProps[\"moreActions\"];\n width?: number | string;\n draggable?: FolderTreeProps[\"draggable\"];\n onDrop?: FolderTreeProps[\"onDrop\"];\n /** 当前编辑节点信息 */\n editNode?: EditNodeInfo | null;\n /** 编辑值变化回调 */\n onEditValueChange?: (value: string) => void;\n /** 编辑确认回调 */\n onEditConfirm?: (value?: string) => void;\n /** 编辑取消回调 */\n onEditCancel?: () => void;\n /** 新建上下文 */\n createInfo?: CreateNodeContext | null;\n /** 开始重命名回调(由父组件注入) */\n onStartRename?: (fullPath: string, node: FolderTreeData) => void;\n}\n\ninterface InlineEditInputProps {\n editKey: string;\n value: string;\n className?: string;\n onValueChange?: (value: string) => void;\n onConfirm?: (value?: string) => void;\n onCancel?: () => void;\n}\n\nconst InlineEditInput: React.FC<InlineEditInputProps> = ({\n editKey,\n value,\n className,\n onValueChange,\n onConfirm,\n onCancel,\n}) => {\n const [draft, setDraft] = useState(value);\n const committedRef = useRef(false);\n\n useEffect(() => {\n setDraft(value);\n committedRef.current = false;\n }, [editKey, value]);\n\n const commit = useCallback(() => {\n if (committedRef.current) return;\n committedRef.current = true;\n onValueChange?.(draft);\n onConfirm?.(draft);\n }, [draft, onConfirm, onValueChange]);\n\n return (\n <Input\n size=\"small\"\n value={draft}\n onChange={(e) => setDraft(e.target.value)}\n onBlur={commit}\n onPressEnter={commit}\n onKeyDown={(e) => {\n e.stopPropagation();\n if (e.key === \"Escape\") {\n committedRef.current = true;\n onCancel?.();\n }\n }}\n autoFocus\n className={className}\n onClick={(e) => e.stopPropagation()}\n onMouseDown={(e) => e.stopPropagation()}\n onSelect={(e) => e.stopPropagation()}\n onFocus={(e) => e.stopPropagation()}\n />\n );\n};\n\nconst DirectoryTreeComponent: React.FC<DirectoryTreeComponentProps> = ({\n treeData,\n selectedKeys,\n expandedKeys,\n onSelect,\n onExpand,\n showLine = false,\n switcherIcon,\n defaultExpandAll = true,\n className,\n directoryIcons,\n directoryTitle,\n moreActions,\n width,\n draggable,\n onDrop,\n editNode,\n onEditValueChange,\n onEditConfirm,\n onEditCancel,\n createInfo,\n onStartRename,\n}) => {\n const styles = useStyles();\n\n const getIcon = useCallback(\n (node: FolderTreeData) => {\n if (directoryIcons === false || directoryIcons === null) {\n return null;\n }\n if (node.type == \"folder\") {\n const icon = directoryIcons?.directory;\n if (typeof icon === \"function\") return icon();\n return icon || <FolderOutlined />;\n }\n const filePath = node.path.toLowerCase();\n const extension = filePath.split(\".\").pop();\n if (extension) {\n const icon = directoryIcons?.[extension];\n if (icon) return typeof icon === \"function\" ? icon() : icon;\n }\n return <FileOutlined />;\n },\n [directoryIcons],\n );\n\n const buildPathSegments = useCallback(\n (node: FolderTreeData, parentSegments: string[] = []): string[] => {\n if (node.path === \"/\" && parentSegments.length === 0) {\n return [\"/\"];\n }\n return [...parentSegments, node.path].filter((s) => s !== \"\");\n },\n [],\n );\n\n const renderInlineInput = useCallback(\n (key: string, value: string) => (\n <span className={styles.treeNodeTitle}>\n <InlineEditInput\n editKey={key}\n value={value}\n className={styles.inlineInput}\n onValueChange={onEditValueChange}\n onConfirm={onEditConfirm}\n onCancel={onEditCancel}\n />\n </span>\n ),\n [onEditValueChange, onEditConfirm, onEditCancel, styles],\n );\n\n // ====== 拖拽模式 ======\n const dragMode = draggable === true ? \"file\" : draggable || false;\n\n // ====== 自定义拖拽 hook ======\n const handleDragDrop = useCallback(\n (dragNode: DataNode, dropNode: DataNode, dropPosition: DropPosition) => {\n const dragNd = dragNode as DataNode & { _originalNode?: FolderTreeData };\n const dropNd = dropNode as DataNode & { _originalNode?: FolderTreeData };\n const originalDragNode = dragNd._originalNode;\n const originalDropNode = dropNd._originalNode;\n if (!originalDragNode) return;\n\n const dragKey = String(dragNode.key);\n const dropKey = String(dropNode.key);\n const dragFileName = originalDragNode.path;\n let newPath: string;\n\n // 拖到底部 drop zone:放在根级别末尾\n if (!originalDropNode && dropKey === \"__bottom_placeholder__\") {\n newPath = dragFileName;\n onDrop?.({\n fileName: originalDragNode.title,\n extra: originalDragNode.extra,\n oldPath: dragKey,\n newPath,\n dragNode: originalDragNode,\n dropNode: { title: \"\", path: \"\" },\n });\n return;\n }\n\n if (!originalDropNode) return;\n\n if (!dropNode.isLeaf && dropPosition === 0) {\n // 拖入文件夹内部\n newPath = `${dropKey}/${dragFileName}`;\n } else {\n // 拖到节点旁边(同级)\n const dropParentPath = dropKey.includes(\"/\")\n ? dropKey.substring(0, dropKey.lastIndexOf(\"/\"))\n : \"\";\n newPath = dropParentPath\n ? `${dropParentPath}/${dragFileName}`\n : dragFileName;\n }\n\n onDrop?.({\n fileName: originalDragNode.title,\n extra: originalDragNode.extra,\n oldPath: dragKey,\n newPath,\n dragNode: originalDragNode,\n dropNode: originalDropNode,\n });\n },\n [onDrop],\n );\n\n const handleDragEnterExpand = useCallback(\n (nodeKey: string) => {\n const isExpanded = expandedKeys?.includes(nodeKey);\n if (!isExpanded) {\n onExpand?.([...(expandedKeys || []), nodeKey], {\n node: null as any,\n expanded: true,\n nativeEvent: null as any,\n });\n }\n },\n [expandedKeys, onExpand],\n );\n\n const {\n onDragStart,\n onDragEnd,\n onItemDragEnter,\n onItemDragOver,\n onItemDragLeave,\n onItemDrop,\n onContainerDragOver,\n onContainerDrop,\n canDragNode,\n } = useFolderDrag({\n dragMode,\n onDrop: handleDragDrop,\n onDragEnterExpand: handleDragEnterExpand,\n });\n\n // ====== 转换树数据 ======\n // 注意:convertToTreeData 不依赖拖拽状态,拖拽效果通过 DOM 操作实现\n const convertToTreeData = useCallback(\n (\n nodes: FolderTreeData[],\n parentSegments: string[] = [],\n parentKey: string = \"\",\n ): DataNode[] => {\n const result = nodes.map((node) => {\n const pathSegments = buildPathSegments(node, parentSegments);\n const fullPath = pathSegments.join(\"/\").replace(/^\\/+/, \"\");\n\n const isEditing = editNode && editNode.key === fullPath;\n\n const nodeChildren = node.children\n ? convertToTreeData(node.children, pathSegments, fullPath)\n : undefined;\n\n const baseNode: any = {\n key: fullPath,\n path: fullPath,\n pathSegments,\n icon: getIcon(node),\n isLeaf: !(node.type === \"folder\"),\n _originalNode: node,\n children: nodeChildren,\n };\n\n // 编辑态:直接渲染 inline input\n if (isEditing) {\n baseNode.title = renderInlineInput(\n editNode!.key,\n editNode!.currentValue,\n );\n return baseNode;\n }\n\n // title 内容(按钮、菜单等)\n const titleContent = (\n <span\n className={clsx(\n styles.treeNodeTitle,\n moreActions && styles.treeNodeTitleHover,\n )}\n >\n <span>{node.title}</span>\n {moreActions && (\n <Dropdown\n menu={moreActions(node, {\n startRename: () => onStartRename?.(fullPath, node),\n })}\n trigger={[\"click\"]}\n placement=\"bottomRight\"\n >\n <span\n className={clsx(styles.moreIcon, \"folder-tree-more-icon\")}\n onClick={(e) => e.stopPropagation()}\n >\n <MoreOutlined />\n </span>\n </Dropdown>\n )}\n </span>\n );\n\n // 启用拖拽时:在 title 外层包裹具有 data-node-key 属性的容器,\n // 用于 DOM 查询和事件绑定。拖拽状态通过 CSS class 控制。\n if (dragMode) {\n const nodeData = baseNode as DataNode & {\n _isTempNode?: boolean;\n };\n const draggableDiv = canDragNode(nodeData);\n\n baseNode.title = (\n <div\n className={clsx(\n styles.treeNodeWrapper,\n draggableDiv && styles.dragNodeHandle,\n )}\n data-node-key={fullPath}\n draggable={draggableDiv}\n onDragStart={\n draggableDiv ? (e) => onDragStart(e, baseNode) : undefined\n }\n onDragEnd={draggableDiv ? onDragEnd : undefined}\n onDragEnter={(e) => onItemDragEnter(e, baseNode)}\n onDragOver={(e) => onItemDragOver(e, baseNode)}\n onDragLeave={onItemDragLeave}\n onDrop={(e) => onItemDrop(e, baseNode)}\n >\n {titleContent}\n </div>\n );\n } else {\n baseNode.title = titleContent;\n }\n\n return baseNode;\n });\n\n // 新建模式:在目标父节点下插入临时节点\n if (createInfo && editNode && editNode.mode === \"create\") {\n const targetParentKey = createInfo.parentKey;\n if (\n targetParentKey === parentKey ||\n (targetParentKey === \"\" && parentKey === \"\") ||\n (targetParentKey === \"/\" && parentKey === \"\")\n ) {\n const tempNode: any = {\n key: editNode.key,\n title: renderInlineInput(editNode.key, editNode.currentValue),\n icon:\n createInfo.type === \"folder\" ? (\n <FolderOutlined />\n ) : (\n <FileOutlined />\n ),\n isLeaf: createInfo.type === \"file\",\n path: editNode.key,\n pathSegments: [editNode.key],\n _originalNode: null,\n _isTempNode: true,\n };\n result.push(tempNode);\n }\n }\n\n return result;\n },\n [\n buildPathSegments,\n getIcon,\n moreActions,\n styles,\n editNode,\n renderInlineInput,\n createInfo,\n onStartRename,\n dragMode,\n canDragNode,\n onDragStart,\n onDragEnd,\n onItemDragEnter,\n onItemDragOver,\n onItemDragLeave,\n onItemDrop,\n ],\n );\n\n const treeDataConverted = useMemo(\n () => convertToTreeData(treeData, [], \"\"),\n [treeData, convertToTreeData],\n );\n\n const handleSelect: TreeProps[\"onSelect\"] = useCallback(\n (keys: any, info: any) => {\n // 编辑态不响应选中\n if (editNode) return;\n // 临时节点不可选中\n const node = info.node as DataNode & { _isTempNode?: boolean };\n if (node._isTempNode) return;\n // 点击 moreActions 区域不触发选中\n const target = info.nativeEvent?.target as HTMLElement | null;\n if (\n target &&\n (target.closest(\".folder-tree-more-icon\") ||\n target.closest(\".ant-dropdown\"))\n ) {\n return;\n }\n onSelect?.(keys, info);\n },\n [onSelect, editNode],\n );\n\n const titleNode =\n directoryTitle === false || directoryTitle === null\n ? null\n : typeof directoryTitle === \"function\"\n ? directoryTitle()\n : directoryTitle;\n\n return (\n <div className={clsx(styles.directoryPanel, className)} style={{ width }}>\n {titleNode && <div className={styles.directoryTitle}>{titleNode}</div>}\n <div\n className={styles.directoryTreeContent}\n onDragOver={dragMode ? onContainerDragOver : undefined}\n onDrop={dragMode ? onContainerDrop : undefined}\n >\n <AntDirectoryTree\n style={\n {\n \"--ant-tree-directory-node-selected-bg\": \"rgba(0,0,0,0.03)\",\n \"--ant-tree-directory-node-selected-color\": \"#1a1c1e\",\n } as React.CSSProperties\n }\n treeData={treeDataConverted}\n selectedKeys={selectedKeys}\n expandedKeys={expandedKeys}\n onSelect={handleSelect}\n onExpand={onExpand}\n multiple={false}\n blockNode\n showLine={showLine as any}\n switcherIcon={switcherIcon}\n defaultExpandAll={defaultExpandAll}\n draggable={false}\n />\n </div>\n </div>\n );\n};\n\nexport default DirectoryTreeComponent;\n"],"mappings":";;AAAA,OAAOA,KAAK,IACVC,WAAW,EACXC,SAAS,EACTC,OAAO,EACPC,MAAM,EACNC,QAAQ,QACH,OAAO;AACd,SAASC,IAAI,EAAEC,QAAQ,EAAEC,KAAK,QAAQ,MAAM;AAC5C,SAASC,YAAY,EAAEC,cAAc,EAAEC,YAAY,QAAQ,mBAAmB;AAG9E,OAAOC,IAAI,MAAM,MAAM;AAOvB,SAASC,SAAS;AAClB,SAASC,aAAa;AAA6C,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAEnE,IAAuBC,gBAAgB,GAAKb,IAAI,CAAxCc,aAAa;AAyCrB,IAAMC,eAA+C,GAAG,SAAlDA,eAA+CA,CAAAC,IAAA,EAO/C;EAAA,IANJC,OAAO,GAAAD,IAAA,CAAPC,OAAO;IACPC,KAAK,GAAAF,IAAA,CAALE,KAAK;IACLC,SAAS,GAAAH,IAAA,CAATG,SAAS;IACTC,aAAa,GAAAJ,IAAA,CAAbI,aAAa;IACbC,SAAS,GAAAL,IAAA,CAATK,SAAS;IACTC,QAAQ,GAAAN,IAAA,CAARM,QAAQ;EAER,IAAAC,SAAA,GAA0BxB,QAAQ,CAACmB,KAAK,CAAC;IAAAM,UAAA,GAAAC,cAAA,CAAAF,SAAA;IAAlCG,KAAK,GAAAF,UAAA;IAAEG,QAAQ,GAAAH,UAAA;EACtB,IAAMI,YAAY,GAAG9B,MAAM,CAAC,KAAK,CAAC;EAElCF,SAAS,CAAC,YAAM;IACd+B,QAAQ,CAACT,KAAK,CAAC;IACfU,YAAY,CAACC,OAAO,GAAG,KAAK;EAC9B,CAAC,EAAE,CAACZ,OAAO,EAAEC,KAAK,CAAC,CAAC;EAEpB,IAAMY,MAAM,GAAGnC,WAAW,CAAC,YAAM;IAC/B,IAAIiC,YAAY,CAACC,OAAO,EAAE;IAC1BD,YAAY,CAACC,OAAO,GAAG,IAAI;IAC3BT,aAAa,aAAbA,aAAa,eAAbA,aAAa,CAAGM,KAAK,CAAC;IACtBL,SAAS,aAATA,SAAS,eAATA,SAAS,CAAGK,KAAK,CAAC;EACpB,CAAC,EAAE,CAACA,KAAK,EAAEL,SAAS,EAAED,aAAa,CAAC,CAAC;EAErC,oBACEV,IAAA,CAACR,KAAK;IACJ6B,IAAI,EAAC,OAAO;IACZb,KAAK,EAAEQ,KAAM;IACbM,QAAQ,EAAE,SAAAA,SAACC,CAAC;MAAA,OAAKN,QAAQ,CAACM,CAAC,CAACC,MAAM,CAAChB,KAAK,CAAC;IAAA,CAAC;IAC1CiB,MAAM,EAAEL,MAAO;IACfM,YAAY,EAAEN,MAAO;IACrBO,SAAS,EAAE,SAAAA,UAACJ,CAAC,EAAK;MAChBA,CAAC,CAACK,eAAe,CAAC,CAAC;MACnB,IAAIL,CAAC,CAACM,GAAG,KAAK,QAAQ,EAAE;QACtBX,YAAY,CAACC,OAAO,GAAG,IAAI;QAC3BP,QAAQ,aAARA,QAAQ,eAARA,QAAQ,CAAG,CAAC;MACd;IACF,CAAE;IACFkB,SAAS;IACTrB,SAAS,EAAEA,SAAU;IACrBsB,OAAO,EAAE,SAAAA,QAACR,CAAC;MAAA,OAAKA,CAAC,CAACK,eAAe,CAAC,CAAC;IAAA,CAAC;IACpCI,WAAW,EAAE,SAAAA,YAACT,CAAC;MAAA,OAAKA,CAAC,CAACK,eAAe,CAAC,CAAC;IAAA,CAAC;IACxCK,QAAQ,EAAE,SAAAA,SAACV,CAAC;MAAA,OAAKA,CAAC,CAACK,eAAe,CAAC,CAAC;IAAA,CAAC;IACrCM,OAAO,EAAE,SAAAA,QAACX,CAAC;MAAA,OAAKA,CAAC,CAACK,eAAe,CAAC,CAAC;IAAA;EAAC,CACrC,CAAC;AAEN,CAAC;AAED,IAAMO,sBAA6D,GAAG,SAAhEA,sBAA6DA,CAAAC,KAAA,EAsB7D;EAAA,IArBJC,QAAQ,GAAAD,KAAA,CAARC,QAAQ;IACRC,YAAY,GAAAF,KAAA,CAAZE,YAAY;IACZC,YAAY,GAAAH,KAAA,CAAZG,YAAY;IACZN,QAAQ,GAAAG,KAAA,CAARH,QAAQ;IACRO,QAAQ,GAAAJ,KAAA,CAARI,QAAQ;IAAAC,cAAA,GAAAL,KAAA,CACRM,QAAQ;IAARA,QAAQ,GAAAD,cAAA,cAAG,KAAK,GAAAA,cAAA;IAChBE,YAAY,GAAAP,KAAA,CAAZO,YAAY;IAAAC,qBAAA,GAAAR,KAAA,CACZS,gBAAgB;IAAhBA,gBAAgB,GAAAD,qBAAA,cAAG,IAAI,GAAAA,qBAAA;IACvBnC,SAAS,GAAA2B,KAAA,CAAT3B,SAAS;IACTqC,cAAc,GAAAV,KAAA,CAAdU,cAAc;IACdC,cAAc,GAAAX,KAAA,CAAdW,cAAc;IACdC,WAAW,GAAAZ,KAAA,CAAXY,WAAW;IACXC,KAAK,GAAAb,KAAA,CAALa,KAAK;IACLC,SAAS,GAAAd,KAAA,CAATc,SAAS;IACTC,MAAM,GAAAf,KAAA,CAANe,MAAM;IACNC,QAAQ,GAAAhB,KAAA,CAARgB,QAAQ;IACRC,iBAAiB,GAAAjB,KAAA,CAAjBiB,iBAAiB;IACjBC,aAAa,GAAAlB,KAAA,CAAbkB,aAAa;IACbC,YAAY,GAAAnB,KAAA,CAAZmB,YAAY;IACZC,UAAU,GAAApB,KAAA,CAAVoB,UAAU;IACVC,aAAa,GAAArB,KAAA,CAAbqB,aAAa;EAEb,IAAMC,MAAM,GAAG7D,SAAS,CAAC,CAAC;EAE1B,IAAM8D,OAAO,GAAG1E,WAAW,CACzB,UAAC2E,IAAoB,EAAK;IACxB,IAAId,cAAc,KAAK,KAAK,IAAIA,cAAc,KAAK,IAAI,EAAE;MACvD,OAAO,IAAI;IACb;IACA,IAAIc,IAAI,CAACC,IAAI,IAAI,QAAQ,EAAE;MACzB,IAAMC,IAAI,GAAGhB,cAAc,aAAdA,cAAc,uBAAdA,cAAc,CAAEiB,SAAS;MACtC,IAAI,OAAOD,IAAI,KAAK,UAAU,EAAE,OAAOA,IAAI,CAAC,CAAC;MAC7C,OAAOA,IAAI,iBAAI9D,IAAA,CAACN,cAAc,IAAE,CAAC;IACnC;IACA,IAAMsE,QAAQ,GAAGJ,IAAI,CAACK,IAAI,CAACC,WAAW,CAAC,CAAC;IACxC,IAAMC,SAAS,GAAGH,QAAQ,CAACI,KAAK,CAAC,GAAG,CAAC,CAACC,GAAG,CAAC,CAAC;IAC3C,IAAIF,SAAS,EAAE;MACb,IAAML,KAAI,GAAGhB,cAAc,aAAdA,cAAc,uBAAdA,cAAc,CAAGqB,SAAS,CAAC;MACxC,IAAIL,KAAI,EAAE,OAAO,OAAOA,KAAI,KAAK,UAAU,GAAGA,KAAI,CAAC,CAAC,GAAGA,KAAI;IAC7D;IACA,oBAAO9D,IAAA,CAACP,YAAY,IAAE,CAAC;EACzB,CAAC,EACD,CAACqD,cAAc,CACjB,CAAC;EAED,IAAMwB,iBAAiB,GAAGrF,WAAW,CACnC,UAAC2E,IAAoB,EAA8C;IAAA,IAA5CW,cAAwB,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,EAAE;IAClD,IAAIZ,IAAI,CAACK,IAAI,KAAK,GAAG,IAAIM,cAAc,CAACE,MAAM,KAAK,CAAC,EAAE;MACpD,OAAO,CAAC,GAAG,CAAC;IACd;IACA,OAAO,GAAAE,MAAA,CAAAC,kBAAA,CAAIL,cAAc,IAAEX,IAAI,CAACK,IAAI,GAAEY,MAAM,CAAC,UAACC,CAAC;MAAA,OAAKA,CAAC,KAAK,EAAE;IAAA,EAAC;EAC/D,CAAC,EACD,EACF,CAAC;EAED,IAAMC,iBAAiB,GAAG9F,WAAW,CACnC,UAAC4C,GAAW,EAAErB,KAAa;IAAA,oBACzBR,IAAA;MAAMS,SAAS,EAAEiD,MAAM,CAACsB,aAAc;MAAAC,QAAA,eACpCjF,IAAA,CAACK,eAAe;QACdE,OAAO,EAAEsB,GAAI;QACbrB,KAAK,EAAEA,KAAM;QACbC,SAAS,EAAEiD,MAAM,CAACwB,WAAY;QAC9BxE,aAAa,EAAE2C,iBAAkB;QACjC1C,SAAS,EAAE2C,aAAc;QACzB1C,QAAQ,EAAE2C;MAAa,CACxB;IAAC,CACE,CAAC;EAAA,CACR,EACD,CAACF,iBAAiB,EAAEC,aAAa,EAAEC,YAAY,EAAEG,MAAM,CACzD,CAAC;;EAED;EACA,IAAMyB,QAAQ,GAAGjC,SAAS,KAAK,IAAI,GAAG,MAAM,GAAGA,SAAS,IAAI,KAAK;;EAEjE;EACA,IAAMkC,cAAc,GAAGnG,WAAW,CAChC,UAACoG,QAAkB,EAAEC,QAAkB,EAAEC,YAA0B,EAAK;IACtE,IAAMC,MAAM,GAAGH,QAAyD;IACxE,IAAMI,MAAM,GAAGH,QAAyD;IACxE,IAAMI,gBAAgB,GAAGF,MAAM,CAACG,aAAa;IAC7C,IAAMC,gBAAgB,GAAGH,MAAM,CAACE,aAAa;IAC7C,IAAI,CAACD,gBAAgB,EAAE;IAEvB,IAAMG,OAAO,GAAGC,MAAM,CAACT,QAAQ,CAACxD,GAAG,CAAC;IACpC,IAAMkE,OAAO,GAAGD,MAAM,CAACR,QAAQ,CAACzD,GAAG,CAAC;IACpC,IAAMmE,YAAY,GAAGN,gBAAgB,CAACzB,IAAI;IAC1C,IAAIgC,OAAe;;IAEnB;IACA,IAAI,CAACL,gBAAgB,IAAIG,OAAO,KAAK,wBAAwB,EAAE;MAC7DE,OAAO,GAAGD,YAAY;MACtB7C,MAAM,aAANA,MAAM,eAANA,MAAM,CAAG;QACP+C,QAAQ,EAAER,gBAAgB,CAACS,KAAK;QAChCC,KAAK,EAAEV,gBAAgB,CAACU,KAAK;QAC7BC,OAAO,EAAER,OAAO;QAChBI,OAAO,EAAPA,OAAO;QACPZ,QAAQ,EAAEK,gBAAgB;QAC1BJ,QAAQ,EAAE;UAAEa,KAAK,EAAE,EAAE;UAAElC,IAAI,EAAE;QAAG;MAClC,CAAC,CAAC;MACF;IACF;IAEA,IAAI,CAAC2B,gBAAgB,EAAE;IAEvB,IAAI,CAACN,QAAQ,CAACgB,MAAM,IAAIf,YAAY,KAAK,CAAC,EAAE;MAC1C;MACAU,OAAO,MAAAtB,MAAA,CAAMoB,OAAO,OAAApB,MAAA,CAAIqB,YAAY,CAAE;IACxC,CAAC,MAAM;MACL;MACA,IAAMO,cAAc,GAAGR,OAAO,CAACS,QAAQ,CAAC,GAAG,CAAC,GACxCT,OAAO,CAACU,SAAS,CAAC,CAAC,EAAEV,OAAO,CAACW,WAAW,CAAC,GAAG,CAAC,CAAC,GAC9C,EAAE;MACNT,OAAO,GAAGM,cAAc,MAAA5B,MAAA,CACjB4B,cAAc,OAAA5B,MAAA,CAAIqB,YAAY,IACjCA,YAAY;IAClB;IAEA7C,MAAM,aAANA,MAAM,eAANA,MAAM,CAAG;MACP+C,QAAQ,EAAER,gBAAgB,CAACS,KAAK;MAChCC,KAAK,EAAEV,gBAAgB,CAACU,KAAK;MAC7BC,OAAO,EAAER,OAAO;MAChBI,OAAO,EAAPA,OAAO;MACPZ,QAAQ,EAAEK,gBAAgB;MAC1BJ,QAAQ,EAAEM;IACZ,CAAC,CAAC;EACJ,CAAC,EACD,CAACzC,MAAM,CACT,CAAC;EAED,IAAMwD,qBAAqB,GAAG1H,WAAW,CACvC,UAAC2H,OAAe,EAAK;IACnB,IAAMC,UAAU,GAAGtE,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAEiE,QAAQ,CAACI,OAAO,CAAC;IAClD,IAAI,CAACC,UAAU,EAAE;MACfrE,QAAQ,aAARA,QAAQ,eAARA,QAAQ,IAAAmC,MAAA,CAAAC,kBAAA,CAAQrC,YAAY,IAAI,EAAE,IAAGqE,OAAO,IAAG;QAC7ChD,IAAI,EAAE,IAAW;QACjBkD,QAAQ,EAAE,IAAI;QACdC,WAAW,EAAE;MACf,CAAC,CAAC;IACJ;EACF,CAAC,EACD,CAACxE,YAAY,EAAEC,QAAQ,CACzB,CAAC;EAED,IAAAwE,cAAA,GAUIlH,aAAa,CAAC;MAChBqF,QAAQ,EAARA,QAAQ;MACRhC,MAAM,EAAEiC,cAAc;MACtB6B,iBAAiB,EAAEN;IACrB,CAAC,CAAC;IAbAO,WAAW,GAAAF,cAAA,CAAXE,WAAW;IACXC,SAAS,GAAAH,cAAA,CAATG,SAAS;IACTC,eAAe,GAAAJ,cAAA,CAAfI,eAAe;IACfC,cAAc,GAAAL,cAAA,CAAdK,cAAc;IACdC,eAAe,GAAAN,cAAA,CAAfM,eAAe;IACfC,UAAU,GAAAP,cAAA,CAAVO,UAAU;IACVC,mBAAmB,GAAAR,cAAA,CAAnBQ,mBAAmB;IACnBC,eAAe,GAAAT,cAAA,CAAfS,eAAe;IACfC,WAAW,GAAAV,cAAA,CAAXU,WAAW;;EAOb;EACA;EACA,IAAMC,iBAAiB,GAAG1I,WAAW,CACnC,UACE2I,KAAuB,EAGR;IAAA,IAFfrD,cAAwB,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,EAAE;IAAA,IAC7BqD,SAAiB,GAAArD,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,EAAE;IAEtB,IAAMsD,MAAM,GAAGF,KAAK,CAACG,GAAG,CAAC,UAACnE,IAAI,EAAK;MACjC,IAAMoE,YAAY,GAAG1D,iBAAiB,CAACV,IAAI,EAAEW,cAAc,CAAC;MAC5D,IAAM0D,QAAQ,GAAGD,YAAY,CAACE,IAAI,CAAC,GAAG,CAAC,CAACC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;MAE3D,IAAMC,SAAS,GAAGhF,QAAQ,IAAIA,QAAQ,CAACvB,GAAG,KAAKoG,QAAQ;MAEvD,IAAMI,YAAY,GAAGzE,IAAI,CAACqB,QAAQ,GAC9B0C,iBAAiB,CAAC/D,IAAI,CAACqB,QAAQ,EAAE+C,YAAY,EAAEC,QAAQ,CAAC,GACxDvD,SAAS;MAEb,IAAM4D,QAAa,GAAG;QACpBzG,GAAG,EAAEoG,QAAQ;QACbhE,IAAI,EAAEgE,QAAQ;QACdD,YAAY,EAAZA,YAAY;QACZlE,IAAI,EAAEH,OAAO,CAACC,IAAI,CAAC;QACnB0C,MAAM,EAAE,EAAE1C,IAAI,CAACC,IAAI,KAAK,QAAQ,CAAC;QACjC8B,aAAa,EAAE/B,IAAI;QACnBqB,QAAQ,EAAEoD;MACZ,CAAC;;MAED;MACA,IAAID,SAAS,EAAE;QACbE,QAAQ,CAACnC,KAAK,GAAGpB,iBAAiB,CAChC3B,QAAQ,CAAEvB,GAAG,EACbuB,QAAQ,CAAEmF,YACZ,CAAC;QACD,OAAOD,QAAQ;MACjB;;MAEA;MACA,IAAME,YAAY,gBAChBtI,KAAA;QACEO,SAAS,EAAEb,IAAI,CACb8D,MAAM,CAACsB,aAAa,EACpBhC,WAAW,IAAIU,MAAM,CAAC+E,kBACxB,CAAE;QAAAxD,QAAA,gBAEFjF,IAAA;UAAAiF,QAAA,EAAOrB,IAAI,CAACuC;QAAK,CAAO,CAAC,EACxBnD,WAAW,iBACVhD,IAAA,CAACT,QAAQ;UACPmJ,IAAI,EAAE1F,WAAW,CAACY,IAAI,EAAE;YACtB+E,WAAW,EAAE,SAAAA,YAAA;cAAA,OAAMlF,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAGwE,QAAQ,EAAErE,IAAI,CAAC;YAAA;UACpD,CAAC,CAAE;UACHgF,OAAO,EAAE,CAAC,OAAO,CAAE;UACnBC,SAAS,EAAC,aAAa;UAAA5D,QAAA,eAEvBjF,IAAA;YACES,SAAS,EAAEb,IAAI,CAAC8D,MAAM,CAACoF,QAAQ,EAAE,uBAAuB,CAAE;YAC1D/G,OAAO,EAAE,SAAAA,QAACR,CAAC;cAAA,OAAKA,CAAC,CAACK,eAAe,CAAC,CAAC;YAAA,CAAC;YAAAqD,QAAA,eAEpCjF,IAAA,CAACL,YAAY,IAAE;UAAC,CACZ;QAAC,CACC,CACX;MAAA,CACG,CACP;;MAED;MACA;MACA,IAAIwF,QAAQ,EAAE;QACZ,IAAM4D,QAAQ,GAAGT,QAEhB;QACD,IAAMU,YAAY,GAAGtB,WAAW,CAACqB,QAAQ,CAAC;QAE1CT,QAAQ,CAACnC,KAAK,gBACZnG,IAAA;UACES,SAAS,EAAEb,IAAI,CACb8D,MAAM,CAACuF,eAAe,EACtBD,YAAY,IAAItF,MAAM,CAACwF,cACzB,CAAE;UACF,iBAAejB,QAAS;UACxB/E,SAAS,EAAE8F,YAAa;UACxB9B,WAAW,EACT8B,YAAY,GAAG,UAACzH,CAAC;YAAA,OAAK2F,WAAW,CAAC3F,CAAC,EAAE+G,QAAQ,CAAC;UAAA,IAAG5D,SAClD;UACDyC,SAAS,EAAE6B,YAAY,GAAG7B,SAAS,GAAGzC,SAAU;UAChDyE,WAAW,EAAE,SAAAA,YAAC5H,CAAC;YAAA,OAAK6F,eAAe,CAAC7F,CAAC,EAAE+G,QAAQ,CAAC;UAAA,CAAC;UACjDc,UAAU,EAAE,SAAAA,WAAC7H,CAAC;YAAA,OAAK8F,cAAc,CAAC9F,CAAC,EAAE+G,QAAQ,CAAC;UAAA,CAAC;UAC/Ce,WAAW,EAAE/B,eAAgB;UAC7BnE,MAAM,EAAE,SAAAA,OAAC5B,CAAC;YAAA,OAAKgG,UAAU,CAAChG,CAAC,EAAE+G,QAAQ,CAAC;UAAA,CAAC;UAAArD,QAAA,EAEtCuD;QAAY,CACV,CACN;MACH,CAAC,MAAM;QACLF,QAAQ,CAACnC,KAAK,GAAGqC,YAAY;MAC/B;MAEA,OAAOF,QAAQ;IACjB,CAAC,CAAC;;IAEF;IACA,IAAI9E,UAAU,IAAIJ,QAAQ,IAAIA,QAAQ,CAACkG,IAAI,KAAK,QAAQ,EAAE;MACxD,IAAMC,eAAe,GAAG/F,UAAU,CAACqE,SAAS;MAC5C,IACE0B,eAAe,KAAK1B,SAAS,IAC5B0B,eAAe,KAAK,EAAE,IAAI1B,SAAS,KAAK,EAAG,IAC3C0B,eAAe,KAAK,GAAG,IAAI1B,SAAS,KAAK,EAAG,EAC7C;QACA,IAAM2B,QAAa,GAAG;UACpB3H,GAAG,EAAEuB,QAAQ,CAACvB,GAAG;UACjBsE,KAAK,EAAEpB,iBAAiB,CAAC3B,QAAQ,CAACvB,GAAG,EAAEuB,QAAQ,CAACmF,YAAY,CAAC;UAC7DzE,IAAI,EACFN,UAAU,CAACK,IAAI,KAAK,QAAQ,gBAC1B7D,IAAA,CAACN,cAAc,IAAE,CAAC,gBAElBM,IAAA,CAACP,YAAY,IAAE,CAChB;UACH6G,MAAM,EAAE9C,UAAU,CAACK,IAAI,KAAK,MAAM;UAClCI,IAAI,EAAEb,QAAQ,CAACvB,GAAG;UAClBmG,YAAY,EAAE,CAAC5E,QAAQ,CAACvB,GAAG,CAAC;UAC5B8D,aAAa,EAAE,IAAI;UACnB8D,WAAW,EAAE;QACf,CAAC;QACD3B,MAAM,CAAC4B,IAAI,CAACF,QAAQ,CAAC;MACvB;IACF;IAEA,OAAO1B,MAAM;EACf,CAAC,EACD,CACExD,iBAAiB,EACjBX,OAAO,EACPX,WAAW,EACXU,MAAM,EACNN,QAAQ,EACR2B,iBAAiB,EACjBvB,UAAU,EACVC,aAAa,EACb0B,QAAQ,EACRuC,WAAW,EACXR,WAAW,EACXC,SAAS,EACTC,eAAe,EACfC,cAAc,EACdC,eAAe,EACfC,UAAU,CAEd,CAAC;EAED,IAAMoC,iBAAiB,GAAGxK,OAAO,CAC/B;IAAA,OAAMwI,iBAAiB,CAACtF,QAAQ,EAAE,EAAE,EAAE,EAAE,CAAC;EAAA,GACzC,CAACA,QAAQ,EAAEsF,iBAAiB,CAC9B,CAAC;EAED,IAAMiC,YAAmC,GAAG3K,WAAW,CACrD,UAAC4K,IAAS,EAAEC,IAAS,EAAK;IAAA,IAAAC,iBAAA;IACxB;IACA,IAAI3G,QAAQ,EAAE;IACd;IACA,IAAMQ,IAAI,GAAGkG,IAAI,CAAClG,IAA4C;IAC9D,IAAIA,IAAI,CAAC6F,WAAW,EAAE;IACtB;IACA,IAAMjI,MAAM,IAAAuI,iBAAA,GAAGD,IAAI,CAAC/C,WAAW,cAAAgD,iBAAA,uBAAhBA,iBAAA,CAAkBvI,MAA4B;IAC7D,IACEA,MAAM,KACLA,MAAM,CAACwI,OAAO,CAAC,wBAAwB,CAAC,IACvCxI,MAAM,CAACwI,OAAO,CAAC,eAAe,CAAC,CAAC,EAClC;MACA;IACF;IACA/H,QAAQ,aAARA,QAAQ,eAARA,QAAQ,CAAG4H,IAAI,EAAEC,IAAI,CAAC;EACxB,CAAC,EACD,CAAC7H,QAAQ,EAAEmB,QAAQ,CACrB,CAAC;EAED,IAAM6G,SAAS,GACblH,cAAc,KAAK,KAAK,IAAIA,cAAc,KAAK,IAAI,GAC/C,IAAI,GACJ,OAAOA,cAAc,KAAK,UAAU,GAClCA,cAAc,CAAC,CAAC,GAChBA,cAAc;EAEtB,oBACE7C,KAAA;IAAKO,SAAS,EAAEb,IAAI,CAAC8D,MAAM,CAACwG,cAAc,EAAEzJ,SAAS,CAAE;IAAC0J,KAAK,EAAE;MAAElH,KAAK,EAALA;IAAM,CAAE;IAAAgC,QAAA,GACtEgF,SAAS,iBAAIjK,IAAA;MAAKS,SAAS,EAAEiD,MAAM,CAACX,cAAe;MAAAkC,QAAA,EAAEgF;IAAS,CAAM,CAAC,eACtEjK,IAAA;MACES,SAAS,EAAEiD,MAAM,CAAC0G,oBAAqB;MACvChB,UAAU,EAAEjE,QAAQ,GAAGqC,mBAAmB,GAAG9C,SAAU;MACvDvB,MAAM,EAAEgC,QAAQ,GAAGsC,eAAe,GAAG/C,SAAU;MAAAO,QAAA,eAE/CjF,IAAA,CAACG,gBAAgB;QACfgK,KAAK,EACH;UACE,uCAAuC,EAAE,kBAAkB;UAC3D,0CAA0C,EAAE;QAC9C,CACD;QACD9H,QAAQ,EAAEsH,iBAAkB;QAC5BrH,YAAY,EAAEA,YAAa;QAC3BC,YAAY,EAAEA,YAAa;QAC3BN,QAAQ,EAAE2H,YAAa;QACvBpH,QAAQ,EAAEA,QAAS;QACnB6H,QAAQ,EAAE,KAAM;QAChBC,SAAS;QACT5H,QAAQ,EAAEA,QAAgB;QAC1BC,YAAY,EAAEA,YAAa;QAC3BE,gBAAgB,EAAEA,gBAAiB;QACnCK,SAAS,EAAE;MAAM,CAClB;IAAC,CACC,CAAC;EAAA,CACH,CAAC;AAEV,CAAC;AAED,eAAef,sBAAsB"}
|
|
@@ -149,9 +149,9 @@ var FolderTree = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
|
149
149
|
}, []);
|
|
150
150
|
|
|
151
151
|
// 确认编辑
|
|
152
|
-
var handleEditConfirm = useCallback(function () {
|
|
152
|
+
var handleEditConfirm = useCallback(function (value) {
|
|
153
153
|
if (!editNode) return;
|
|
154
|
-
var newValue = editNode.currentValue.trim();
|
|
154
|
+
var newValue = (value !== null && value !== void 0 ? value : editNode.currentValue).trim();
|
|
155
155
|
if (editNode.mode === "rename") {
|
|
156
156
|
var _findNodeAndValidate2 = findNodeAndValidate(editNode.key),
|
|
157
157
|
node = _findNodeAndValidate2.node;
|