@ai-group/chat-sdk 3.7.1-alpha2 → 3.7.1-alpha3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/dist/cjs/components/FileGallery/index.js +59 -40
  2. package/dist/cjs/components/FileGallery/index.js.map +2 -2
  3. package/dist/cjs/components/FileGallery/styles.d.ts +7 -0
  4. package/dist/cjs/components/FileGallery/styles.js +58 -0
  5. package/dist/cjs/components/FileGallery/styles.js.map +2 -2
  6. package/dist/cjs/components/XAdkSender/InlineTagInput.js +83 -50
  7. package/dist/cjs/components/XAdkSender/InlineTagInput.js.map +2 -2
  8. package/dist/cjs/components/XAdkSender/index.js +37 -25
  9. package/dist/cjs/components/XAdkSender/index.js.map +2 -2
  10. package/dist/cjs/components/XAdkSender/styles.d.ts +4 -0
  11. package/dist/cjs/components/XAdkSender/styles.js +34 -6
  12. package/dist/cjs/components/XAdkSender/styles.js.map +2 -2
  13. package/dist/cjs/types/FileGallery.d.ts +3 -0
  14. package/dist/cjs/types/FileGallery.js.map +1 -1
  15. package/dist/cjs/types/XAdkSender.d.ts +15 -2
  16. package/dist/cjs/types/XAdkSender.js.map +1 -1
  17. package/dist/esm/components/FileGallery/index.js +22 -16
  18. package/dist/esm/components/FileGallery/index.js.map +1 -1
  19. package/dist/esm/components/FileGallery/styles.d.ts +7 -0
  20. package/dist/esm/components/FileGallery/styles.js +24 -17
  21. package/dist/esm/components/FileGallery/styles.js.map +1 -1
  22. package/dist/esm/components/XAdkSender/InlineTagInput.js +79 -39
  23. package/dist/esm/components/XAdkSender/InlineTagInput.js.map +1 -1
  24. package/dist/esm/components/XAdkSender/index.js +44 -23
  25. package/dist/esm/components/XAdkSender/index.js.map +1 -1
  26. package/dist/esm/components/XAdkSender/styles.d.ts +4 -0
  27. package/dist/esm/components/XAdkSender/styles.js +29 -25
  28. package/dist/esm/components/XAdkSender/styles.js.map +1 -1
  29. package/dist/esm/types/FileGallery.d.ts +3 -0
  30. package/dist/esm/types/FileGallery.js.map +1 -1
  31. package/dist/esm/types/XAdkSender.d.ts +15 -2
  32. package/dist/esm/types/XAdkSender.js.map +1 -1
  33. package/dist/umd/chat-sdk.min.js +1 -1
  34. package/package.json +1 -1
@@ -131,6 +131,7 @@ var ImageWithLoading = function ImageWithLoading(_ref) {
131
131
  preview = _ref.preview,
132
132
  fallback = _ref.fallback,
133
133
  displayMode = _ref.displayMode,
134
+ className = _ref.className,
134
135
  styles = _ref.styles;
135
136
  var _useState = useState("loading"),
136
137
  _useState2 = _slicedToArray(_useState, 2),
@@ -144,7 +145,7 @@ var ImageWithLoading = function ImageWithLoading(_ref) {
144
145
  if (width) containerStyle.width = typeof width === "number" ? "".concat(width, "px") : width;
145
146
  if (height) containerStyle.height = typeof height === "number" ? "".concat(height, "px") : height;
146
147
  return /*#__PURE__*/_jsxs("div", {
147
- className: modeClass,
148
+ className: "".concat(modeClass, " ").concat(className || ""),
148
149
  style: containerStyle,
149
150
  children: [loadState === "loading" && /*#__PURE__*/_jsx("div", {
150
151
  className: styles.imageLoadingSkeleton,
@@ -193,6 +194,8 @@ var FileGallery = function FileGallery(_ref2) {
193
194
  var file = _ref2.file,
194
195
  _ref2$align = _ref2.align,
195
196
  align = _ref2$align === void 0 ? "left" : _ref2$align,
197
+ _ref2$size = _ref2.size,
198
+ size = _ref2$size === void 0 ? "default" : _ref2$size,
196
199
  _ref2$removable = _ref2.removable,
197
200
  removable = _ref2$removable === void 0 ? false : _ref2$removable,
198
201
  _ref2$onRemove = _ref2.onRemove,
@@ -237,6 +240,8 @@ var FileGallery = function FileGallery(_ref2) {
237
240
  var fileSize = getFileSize(file);
238
241
  var fileId = getFileId(file);
239
242
  var url = getFileUrl(file) || objectUrl;
243
+ var isSmall = size === "small";
244
+ var cardClassName = "".concat(styles.fileCard, " ").concat(isSmall ? styles.fileCardSmall : "", " ").concat(align === "right" ? "align-right" : "", " ").concat(className || "");
240
245
 
241
246
  // 核心逻辑:type prop 决定渲染方式(参考 file-card)
242
247
  // - 不传 type:自动推断,图片/音频/视频用原生渲染
@@ -262,7 +267,7 @@ var FileGallery = function FileGallery(_ref2) {
262
267
  // ==================== 渲染删除按钮 ====================
263
268
  var renderRemoveBtn = function renderRemoveBtn() {
264
269
  return removable ? /*#__PURE__*/_jsx("button", {
265
- className: styles.fileRemoveBtn,
270
+ className: "".concat(styles.fileRemoveBtn, " ").concat(isSmall ? styles.fileRemoveBtnSmall : ""),
266
271
  onClick: function onClick(e) {
267
272
  e.stopPropagation();
268
273
  onRemove(fileId);
@@ -294,7 +299,7 @@ var FileGallery = function FileGallery(_ref2) {
294
299
  color = _getIcon.color;
295
300
  var isExternalUrl = url && url.startsWith("http");
296
301
  return /*#__PURE__*/_jsxs("div", {
297
- className: "".concat(styles.fileCard, " ").concat(align === "right" ? "align-right" : "", " ").concat(className || ""),
302
+ className: cardClassName,
298
303
  style: _objectSpread(_objectSpread({}, style), {}, {
299
304
  cursor: _onClick ? "pointer" : undefined
300
305
  }),
@@ -302,7 +307,7 @@ var FileGallery = function FileGallery(_ref2) {
302
307
  return _onClick === null || _onClick === void 0 ? void 0 : _onClick(file);
303
308
  },
304
309
  children: [/*#__PURE__*/_jsx("div", {
305
- className: styles.fileIcon,
310
+ className: "".concat(styles.fileIcon, " ").concat(isSmall ? styles.fileIconSmall : ""),
306
311
  style: {
307
312
  color: color
308
313
  },
@@ -317,14 +322,14 @@ var FileGallery = function FileGallery(_ref2) {
317
322
  children: /*#__PURE__*/_jsx(Tooltip, {
318
323
  title: fileName,
319
324
  children: /*#__PURE__*/_jsx("div", {
320
- className: styles.fileName,
325
+ className: "".concat(styles.fileName, " ").concat(isSmall ? styles.fileNameSmall : ""),
321
326
  children: fileName.length > 15 ? "".concat(fileName.substring(0, 15), "...") : fileName
322
327
  })
323
328
  })
324
329
  }) : /*#__PURE__*/_jsx(Tooltip, {
325
330
  title: fileName,
326
331
  children: /*#__PURE__*/_jsx("div", {
327
- className: styles.fileName,
332
+ className: "".concat(styles.fileName, " ").concat(isSmall ? styles.fileNameSmall : ""),
328
333
  children: fileName.length > 15 ? "".concat(fileName.substring(0, 15), "...") : fileName
329
334
  })
330
335
  }), file.status === "uploading" ? /*#__PURE__*/_jsx(Progress, {
@@ -332,8 +337,8 @@ var FileGallery = function FileGallery(_ref2) {
332
337
  size: "small",
333
338
  showInfo: false,
334
339
  strokeColor: "#1677ff",
335
- className: styles.progress
336
- }) : fileSize > 0 && /*#__PURE__*/_jsx("div", {
340
+ className: "".concat(styles.progress, " ").concat(isSmall ? styles.progressSmall : "")
341
+ }) : !isSmall && fileSize > 0 && /*#__PURE__*/_jsx("div", {
337
342
  className: styles.fileSize,
338
343
  children: formatFileSize(fileSize)
339
344
  }), file.status === "error" && file.errorMessage && /*#__PURE__*/_jsx("div", {
@@ -374,7 +379,7 @@ var FileGallery = function FileGallery(_ref2) {
374
379
 
375
380
  // thumbnail 模式:卡片形式
376
381
  return /*#__PURE__*/_jsxs("div", {
377
- className: "".concat(styles.fileCard, " ").concat(align === "right" ? "align-right" : "", " ").concat(className || ""),
382
+ className: cardClassName,
378
383
  style: _objectSpread(_objectSpread({}, style), {}, {
379
384
  cursor: _onClick ? "pointer" : undefined
380
385
  }),
@@ -384,24 +389,25 @@ var FileGallery = function FileGallery(_ref2) {
384
389
  children: [/*#__PURE__*/_jsx(ImageWithLoading, {
385
390
  src: url,
386
391
  alt: imageAlt || fileName,
387
- width: imageWidth,
388
- height: imageHeight,
392
+ width: size === "small" ? 22 : imageWidth,
393
+ height: size === "small" ? 22 : imageHeight,
389
394
  displayMode: "thumbnail",
390
395
  loading: imageLoading,
391
396
  preview: _onClick ? false : {
392
397
  src: url
393
398
  },
394
399
  fallback: FALLBACK_IMAGE,
395
- styles: styles
400
+ styles: styles,
401
+ className: isSmall ? styles.imageThumbnailSmall : undefined
396
402
  }), renderUploadOverlay(), /*#__PURE__*/_jsxs("div", {
397
403
  className: styles.fileInfo,
398
404
  children: [/*#__PURE__*/_jsx(Tooltip, {
399
405
  title: fileName,
400
406
  children: /*#__PURE__*/_jsx("div", {
401
- className: styles.fileName,
407
+ className: "".concat(styles.fileName, " ").concat(isSmall ? styles.fileNameSmall : ""),
402
408
  children: fileName.length > 15 ? "".concat(fileName.substring(0, 15), "...") : fileName
403
409
  })
404
- }), Number(file === null || file === void 0 ? void 0 : file.size) > 0 && /*#__PURE__*/_jsx("div", {
410
+ }), !isSmall && Number(file === null || file === void 0 ? void 0 : file.size) > 0 && /*#__PURE__*/_jsx("div", {
405
411
  className: styles.fileSize,
406
412
  children: formatFileSize(fileSize)
407
413
  })]
@@ -410,7 +416,7 @@ var FileGallery = function FileGallery(_ref2) {
410
416
  }
411
417
 
412
418
  // ==================== 音频渲染(原生播放器,无卡片包裹) ====================
413
- if (fileType === "audio") {
419
+ if (fileType === "audio" && size !== "small") {
414
420
  return /*#__PURE__*/_jsxs("div", {
415
421
  className: "file-gallery-audio ".concat(className || ""),
416
422
  style: _objectSpread({
@@ -431,7 +437,7 @@ var FileGallery = function FileGallery(_ref2) {
431
437
  }
432
438
 
433
439
  // ==================== 视频渲染(原生播放器,无卡片包裹) ====================
434
- if (fileType === "video") {
440
+ if (fileType === "video" && size !== "small") {
435
441
  return /*#__PURE__*/_jsxs("div", {
436
442
  className: "file-gallery-video ".concat(className || ""),
437
443
  style: _objectSpread({
@@ -1 +1 @@
1
- {"version":3,"names":["React","useState","useEffect","useMemo","Image","Tooltip","Progress","FileOutlined","FilePdfOutlined","FileWordOutlined","FileExcelOutlined","FilePptOutlined","FileImageOutlined","CloseOutlined","AudioOutlined","FileZipOutlined","VideoCameraOutlined","FileMarkdownOutlined","PictureOutlined","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","getFileExtension","filename","ext","split","pop","toLowerCase","IMAGE_EXTS","AUDIO_EXTS","VIDEO_EXTS","inferFileType","startsWith","includes","url","urlExtMatch","match","urlExt","getFileIconType","DEFAULT_ICON_MAP","pdf","icon","color","word","excel","ppt","audio","video","zip","markdown","image","default","formatFileSize","bytes","toFixed","FALLBACK_IMAGE","ImageWithLoading","_ref","src","alt","width","height","loading","preview","fallback","displayMode","styles","_useState","_useState2","_slicedToArray","loadState","setLoadState","modeClass","imageFullMode","imagePreviewMode","imageThumbnail","containerStyle","concat","className","style","children","imageLoadingSkeleton","fontSize","imageErrorFallback","_objectSpread","display","opacity","transition","objectFit","maxWidth","onLoad","onError","FileGallery","_ref2","_ref2$align","align","_ref2$removable","removable","_ref2$onRemove","onRemove","onClick","customType","_ref2$imageDisplayMod","imageDisplayMode","imageWidth","imageHeight","_ref2$imageLoading","imageLoading","imageAlt","_ref2$mediaAutoPlay","mediaAutoPlay","_ref2$mediaLoop","mediaLoop","_ref2$mediaMuted","mediaMuted","mediaPoster","videoProps","audioProps","iconMap","customIcon","_useState3","_useState4","objectUrl","setObjectUrl","URL","createObjectURL","revokeObjectURL","fileName","fileSize","fileId","fileType","getIcon","iconType","renderRemoveBtn","fileRemoveBtn","e","stopPropagation","disabled","status","renderUploadOverlay","imageOverlay","percent","progress","strokeColor","renderFileCard","_getIcon","isExternalUrl","fileCard","cursor","undefined","fileIcon","fileInfo","href","target","rel","fileLink","title","length","substring","showInfo","errorMessage","marginTop","Number","position","controls","autoPlay","loop","muted","poster","aspectRatio","borderRadius","background"],"sources":["../../../../src/components/FileGallery/index.tsx"],"sourcesContent":["import React, { useState, useEffect, useMemo } 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 PictureOutlined,\n} from \"@ant-design/icons\";\nimport {\n FileItem,\n FileGalleryProps,\n FileIconType,\n ImageDisplayMode,\n FileCardType,\n} from \"@/types\";\nimport { useStyles } from \"./styles\";\n\n// ==================== 工具函数 ====================\n\nconst getFileName = (file: FileItem): string =>\n file.displayName || file.name || \"\";\n\nconst getFileSize = (file: FileItem): number => file.size || 0;\n\nconst getMimeType = (file: FileItem): string =>\n file.mimeType || file.type || \"\";\n\nconst getFileUrl = (file: FileItem): string =>\n file.fileUri ||\n file.response?.fileUrl ||\n file.response?.tempUrl ||\n file.tempUrl ||\n \"\";\n\nconst getFileId = (file: FileItem): string => file.id || file.uid || \"\";\n\nconst getFileExtension = (filename: string): string => {\n const ext = filename.split(\".\").pop();\n return ext ? ext.toLowerCase() : \"\";\n};\n\nconst IMAGE_EXTS = [\"jpg\", \"jpeg\", \"png\", \"gif\", \"webp\", \"bmp\", \"svg\"];\nconst AUDIO_EXTS = [\"mp3\", \"wav\", \"m4a\", \"aac\", \"ogg\", \"flac\"];\nconst VIDEO_EXTS = [\"mp4\", \"mov\", \"webm\", \"mkv\", \"avi\"];\n\n/** 自动推断文件卡片类型 */\nconst inferFileType = (file: FileItem): FileCardType => {\n const mimeType = getMimeType(file);\n if (mimeType.startsWith(\"image/\")) return \"image\";\n if (mimeType.startsWith(\"audio/\")) return \"audio\";\n if (mimeType.startsWith(\"video/\")) return \"video\";\n\n const ext = getFileExtension(getFileName(file));\n if (IMAGE_EXTS.includes(ext)) return \"image\";\n if (AUDIO_EXTS.includes(ext)) return \"audio\";\n if (VIDEO_EXTS.includes(ext)) return \"video\";\n\n // URL 扩展名兜底\n const url = getFileUrl(file);\n const urlExtMatch = url.match(/\\.(\\w+)(\\?.*)?$/);\n if (urlExtMatch) {\n const urlExt = urlExtMatch[1].toLowerCase();\n if (IMAGE_EXTS.includes(urlExt)) return \"image\";\n if (AUDIO_EXTS.includes(urlExt)) return \"audio\";\n if (VIDEO_EXTS.includes(urlExt)) return \"video\";\n }\n\n return \"file\";\n};\n\n/** 根据扩展名获取文件图标类型 key */\nconst getFileIconType = (file: FileItem): FileIconType => {\n const ext = getFileExtension(getFileName(file));\n if (ext === \"pdf\") return \"pdf\";\n if ([\"doc\", \"docx\"].includes(ext)) return \"word\";\n if ([\"xls\", \"xlsx\", \"csv\"].includes(ext)) return \"excel\";\n if ([\"ppt\", \"pptx\"].includes(ext)) return \"ppt\";\n if (AUDIO_EXTS.includes(ext)) return \"audio\";\n if (VIDEO_EXTS.includes(ext)) return \"video\";\n if ([\"zip\", \"rar\", \"7z\", \"tar\", \"gz\", \"bz2\", \"xz\", \"tgz\"].includes(ext))\n return \"zip\";\n if ([\"md\", \"markdown\"].includes(ext)) return \"markdown\";\n if (IMAGE_EXTS.includes(ext)) return \"image\";\n return \"default\";\n};\n\n/** 默认图标映射 */\nconst DEFAULT_ICON_MAP: Record<\n FileIconType,\n { icon: React.ReactNode; color: string }\n> = {\n pdf: { icon: <FilePdfOutlined />, color: \"#ff4d4f\" },\n word: { icon: <FileWordOutlined />, color: \"#1677ff\" },\n excel: { icon: <FileExcelOutlined />, color: \"#22b35e\" },\n ppt: { icon: <FilePptOutlined />, color: \"#ff6e31\" },\n audio: { icon: <AudioOutlined />, color: \"#722ed1\" },\n video: { icon: <VideoCameraOutlined />, color: \"#fa8c16\" },\n zip: { icon: <FileZipOutlined />, color: \"#eb2f96\" },\n markdown: { icon: <FileMarkdownOutlined />, color: \"#13c2c2\" },\n image: { icon: <FileImageOutlined />, color: \"#8c8c8c\" },\n default: { icon: <FileOutlined />, color: \"#8c8c8c\" },\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 FALLBACK_IMAGE =\n \"data:image/png;base64,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\";\n\n// ==================== 子组件:图片加载状态管理 ====================\n\nconst ImageWithLoading: React.FC<{\n src: string;\n alt: string;\n width?: number | string;\n height?: number | string;\n loading?: \"lazy\" | \"eager\";\n preview?: false | { src: string };\n fallback?: string;\n displayMode: ImageDisplayMode;\n styles: ReturnType<typeof useStyles>;\n}> = ({\n src,\n alt,\n width,\n height,\n loading,\n preview,\n fallback,\n displayMode,\n styles,\n}) => {\n const [loadState, setLoadState] = useState<\n \"loading\" | \"loaded\" | \"error\"\n >(\"loading\");\n\n useEffect(() => {\n setLoadState(\"loading\");\n }, [src]);\n\n const modeClass =\n displayMode === \"full\"\n ? styles.imageFullMode\n : displayMode === \"preview\"\n ? styles.imagePreviewMode\n : styles.imageThumbnail;\n\n const containerStyle: React.CSSProperties = {};\n if (width)\n containerStyle.width = typeof width === \"number\" ? `${width}px` : width;\n if (height)\n containerStyle.height = typeof height === \"number\" ? `${height}px` : height;\n\n return (\n <div className={modeClass} style={containerStyle}>\n {loadState === \"loading\" && (\n <div className={styles.imageLoadingSkeleton}>\n <PictureOutlined style={{ fontSize: 20, color: \"#d9d9d9\" }} />\n </div>\n )}\n\n {loadState === \"error\" && (\n <div className={styles.imageErrorFallback}>\n <PictureOutlined />\n <span>加载失败</span>\n </div>\n )}\n\n <Image\n src={src}\n alt={alt}\n fallback={fallback}\n preview={preview}\n loading={loading}\n style={{\n display: loadState === \"error\" ? \"none\" : \"block\",\n opacity: loadState === \"loading\" ? 0 : 1,\n transition: \"opacity 0.3s ease\",\n ...(displayMode === \"thumbnail\"\n ? { width: \"100%\", height: \"100%\", objectFit: \"cover\" }\n : { maxWidth: \"100%\", objectFit: \"contain\" }),\n }}\n onLoad={() => setLoadState(\"loaded\")}\n onError={() => setLoadState(\"error\")}\n />\n </div>\n );\n};\n\n// ==================== 主组件 ====================\n\nconst FileGallery: React.FC<FileGalleryProps> = ({\n file,\n align = \"left\",\n removable = false,\n onRemove = () => {},\n className,\n style,\n onClick,\n type: customType,\n // 图片相关\n imageDisplayMode = \"thumbnail\",\n imageWidth,\n imageHeight,\n imageLoading = \"eager\",\n imageAlt,\n // 音视频相关\n mediaAutoPlay = false,\n mediaLoop = false,\n mediaMuted = false,\n mediaPoster,\n videoProps,\n audioProps,\n // 自定义图标\n iconMap,\n customIcon,\n}) => {\n const styles = useStyles();\n const [objectUrl, setObjectUrl] = useState(\"\");\n\n useEffect(() => {\n if (!file?.file) return;\n const url = URL.createObjectURL(file.file);\n setObjectUrl(url);\n return () => URL.revokeObjectURL(url);\n }, [file?.file]);\n\n if (!file) return null;\n\n const fileName = getFileName(file);\n const fileSize = getFileSize(file);\n const fileId = getFileId(file);\n const url = getFileUrl(file) || objectUrl;\n\n // 核心逻辑:type prop 决定渲染方式(参考 file-card)\n // - 不传 type:自动推断,图片/音频/视频用原生渲染\n // - type=\"file\":强制附件卡片(音视频不可播放)\n // - type=\"image\"/\"audio\"/\"video\":强制指定类型\n const fileType = useMemo<FileCardType>(\n () => customType || inferFileType(file),\n [customType, file],\n );\n\n /** 获取图标(支持自定义) */\n const getIcon = (\n iconType: FileIconType,\n ): { icon: React.ReactNode; color: string } => {\n if (customIcon) return { icon: customIcon, color: \"inherit\" };\n if (iconMap?.[iconType])\n return { icon: iconMap[iconType]!, color: \"inherit\" };\n return DEFAULT_ICON_MAP[iconType];\n };\n\n // ==================== 渲染删除按钮 ====================\n const renderRemoveBtn = () =>\n removable ? (\n <button\n className={styles.fileRemoveBtn}\n onClick={(e) => {\n e.stopPropagation();\n onRemove(fileId);\n }}\n disabled={file.status === \"uploading\"}\n aria-label=\"删除文件\"\n >\n <CloseOutlined />\n </button>\n ) : null;\n\n // ==================== 渲染上传进度遮罩 ====================\n const renderUploadOverlay = () =>\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 ) : null;\n\n // ==================== 附件卡片渲染(type=\"file\" 或普通文档) ====================\n const renderFileCard = () => {\n const iconType = getFileIconType(file);\n const { icon, color } = getIcon(iconType);\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}>\n {formatFileSize(fileSize)}\n </div>\n )\n )}\n\n {file.status === \"error\" && file.errorMessage && (\n <div\n style={{ fontSize: \"11px\", color: \"#ff4d4f\", marginTop: \"2px\" }}\n >\n {file.errorMessage}\n </div>\n )}\n </div>\n\n {renderRemoveBtn()}\n </div>\n );\n };\n\n // ==================== 图片渲染 ====================\n if (fileType === \"image\") {\n // full / preview 模式:独立展示\n if (imageDisplayMode === \"full\" || imageDisplayMode === \"preview\") {\n const containerStyle: React.CSSProperties = { ...style };\n if (imageWidth)\n containerStyle.width =\n typeof imageWidth === \"number\" ? `${imageWidth}px` : imageWidth;\n if (imageHeight)\n containerStyle.height =\n typeof imageHeight === \"number\" ? `${imageHeight}px` : imageHeight;\n\n return (\n <div\n className={`${imageDisplayMode === \"full\" ? styles.imageFullMode : styles.imagePreviewMode} ${className || \"\"}`}\n style={containerStyle}\n >\n <ImageWithLoading\n src={url}\n alt={imageAlt || fileName}\n displayMode={imageDisplayMode}\n loading={imageLoading}\n preview={onClick ? false : { src: url }}\n fallback={FALLBACK_IMAGE}\n styles={styles}\n />\n {renderUploadOverlay()}\n {renderRemoveBtn()}\n </div>\n );\n }\n\n // thumbnail 模式:卡片形式\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 <ImageWithLoading\n src={url}\n alt={imageAlt || fileName}\n width={imageWidth}\n height={imageHeight}\n displayMode=\"thumbnail\"\n loading={imageLoading}\n preview={onClick ? false : { src: url }}\n fallback={FALLBACK_IMAGE}\n styles={styles}\n />\n {renderUploadOverlay()}\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 {renderRemoveBtn()}\n </div>\n );\n }\n\n // ==================== 音频渲染(原生播放器,无卡片包裹) ====================\n if (fileType === \"audio\") {\n return (\n <div\n className={`file-gallery-audio ${className || \"\"}`}\n style={{ position: \"relative\", width: 268, ...style }}\n >\n <audio\n src={url}\n controls\n autoPlay={mediaAutoPlay}\n loop={mediaLoop}\n muted={mediaMuted}\n style={{ width: \"100%\" }}\n {...audioProps}\n />\n {renderRemoveBtn()}\n </div>\n );\n }\n\n // ==================== 视频渲染(原生播放器,无卡片包裹) ====================\n if (fileType === \"video\") {\n return (\n <div\n className={`file-gallery-video ${className || \"\"}`}\n style={{ position: \"relative\", width: 268, ...style }}\n >\n <video\n src={url}\n controls\n autoPlay={mediaAutoPlay}\n loop={mediaLoop}\n muted={mediaMuted}\n poster={mediaPoster}\n style={{\n width: \"100%\",\n aspectRatio: \"16 / 9\",\n borderRadius: 8,\n background: \"#000\",\n }}\n {...videoProps}\n />\n {renderRemoveBtn()}\n </div>\n );\n }\n\n // ==================== 其他文件(附件卡片) ====================\n return renderFileCard();\n};\n\nexport default FileGallery;\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","useState","useEffect","useMemo","Image","Tooltip","Progress","FileOutlined","FilePdfOutlined","FileWordOutlined","FileExcelOutlined","FilePptOutlined","FileImageOutlined","CloseOutlined","AudioOutlined","FileZipOutlined","VideoCameraOutlined","FileMarkdownOutlined","PictureOutlined","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","getFileExtension","filename","ext","split","pop","toLowerCase","IMAGE_EXTS","AUDIO_EXTS","VIDEO_EXTS","inferFileType","startsWith","includes","url","urlExtMatch","match","urlExt","getFileIconType","DEFAULT_ICON_MAP","pdf","icon","color","word","excel","ppt","audio","video","zip","markdown","image","default","formatFileSize","bytes","toFixed","FALLBACK_IMAGE","ImageWithLoading","_ref","src","alt","width","height","loading","preview","fallback","displayMode","className","styles","_useState","_useState2","_slicedToArray","loadState","setLoadState","modeClass","imageFullMode","imagePreviewMode","imageThumbnail","containerStyle","concat","style","children","imageLoadingSkeleton","fontSize","imageErrorFallback","_objectSpread","display","opacity","transition","objectFit","maxWidth","onLoad","onError","FileGallery","_ref2","_ref2$align","align","_ref2$size","_ref2$removable","removable","_ref2$onRemove","onRemove","onClick","customType","_ref2$imageDisplayMod","imageDisplayMode","imageWidth","imageHeight","_ref2$imageLoading","imageLoading","imageAlt","_ref2$mediaAutoPlay","mediaAutoPlay","_ref2$mediaLoop","mediaLoop","_ref2$mediaMuted","mediaMuted","mediaPoster","videoProps","audioProps","iconMap","customIcon","_useState3","_useState4","objectUrl","setObjectUrl","URL","createObjectURL","revokeObjectURL","fileName","fileSize","fileId","isSmall","cardClassName","fileCard","fileCardSmall","fileType","getIcon","iconType","renderRemoveBtn","fileRemoveBtn","fileRemoveBtnSmall","e","stopPropagation","disabled","status","renderUploadOverlay","imageOverlay","percent","progress","strokeColor","renderFileCard","_getIcon","isExternalUrl","cursor","undefined","fileIcon","fileIconSmall","fileInfo","href","target","rel","fileLink","title","fileNameSmall","length","substring","showInfo","progressSmall","errorMessage","marginTop","imageThumbnailSmall","Number","position","controls","autoPlay","loop","muted","poster","aspectRatio","borderRadius","background"],"sources":["../../../../src/components/FileGallery/index.tsx"],"sourcesContent":["import React, { useState, useEffect, useMemo } 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 PictureOutlined,\n} from \"@ant-design/icons\";\nimport {\n FileItem,\n FileGalleryProps,\n FileIconType,\n ImageDisplayMode,\n FileCardType,\n} from \"@/types\";\nimport { useStyles } from \"./styles\";\n\n// ==================== 工具函数 ====================\n\nconst getFileName = (file: FileItem): string =>\n file.displayName || file.name || \"\";\n\nconst getFileSize = (file: FileItem): number => file.size || 0;\n\nconst getMimeType = (file: FileItem): string =>\n file.mimeType || file.type || \"\";\n\nconst getFileUrl = (file: FileItem): string =>\n file.fileUri ||\n file.response?.fileUrl ||\n file.response?.tempUrl ||\n file.tempUrl ||\n \"\";\n\nconst getFileId = (file: FileItem): string => file.id || file.uid || \"\";\n\nconst getFileExtension = (filename: string): string => {\n const ext = filename.split(\".\").pop();\n return ext ? ext.toLowerCase() : \"\";\n};\n\nconst IMAGE_EXTS = [\"jpg\", \"jpeg\", \"png\", \"gif\", \"webp\", \"bmp\", \"svg\"];\nconst AUDIO_EXTS = [\"mp3\", \"wav\", \"m4a\", \"aac\", \"ogg\", \"flac\"];\nconst VIDEO_EXTS = [\"mp4\", \"mov\", \"webm\", \"mkv\", \"avi\"];\n\n/** 自动推断文件卡片类型 */\nconst inferFileType = (file: FileItem): FileCardType => {\n const mimeType = getMimeType(file);\n if (mimeType.startsWith(\"image/\")) return \"image\";\n if (mimeType.startsWith(\"audio/\")) return \"audio\";\n if (mimeType.startsWith(\"video/\")) return \"video\";\n\n const ext = getFileExtension(getFileName(file));\n if (IMAGE_EXTS.includes(ext)) return \"image\";\n if (AUDIO_EXTS.includes(ext)) return \"audio\";\n if (VIDEO_EXTS.includes(ext)) return \"video\";\n\n // URL 扩展名兜底\n const url = getFileUrl(file);\n const urlExtMatch = url.match(/\\.(\\w+)(\\?.*)?$/);\n if (urlExtMatch) {\n const urlExt = urlExtMatch[1].toLowerCase();\n if (IMAGE_EXTS.includes(urlExt)) return \"image\";\n if (AUDIO_EXTS.includes(urlExt)) return \"audio\";\n if (VIDEO_EXTS.includes(urlExt)) return \"video\";\n }\n\n return \"file\";\n};\n\n/** 根据扩展名获取文件图标类型 key */\nconst getFileIconType = (file: FileItem): FileIconType => {\n const ext = getFileExtension(getFileName(file));\n if (ext === \"pdf\") return \"pdf\";\n if ([\"doc\", \"docx\"].includes(ext)) return \"word\";\n if ([\"xls\", \"xlsx\", \"csv\"].includes(ext)) return \"excel\";\n if ([\"ppt\", \"pptx\"].includes(ext)) return \"ppt\";\n if (AUDIO_EXTS.includes(ext)) return \"audio\";\n if (VIDEO_EXTS.includes(ext)) return \"video\";\n if ([\"zip\", \"rar\", \"7z\", \"tar\", \"gz\", \"bz2\", \"xz\", \"tgz\"].includes(ext))\n return \"zip\";\n if ([\"md\", \"markdown\"].includes(ext)) return \"markdown\";\n if (IMAGE_EXTS.includes(ext)) return \"image\";\n return \"default\";\n};\n\n/** 默认图标映射 */\nconst DEFAULT_ICON_MAP: Record<\n FileIconType,\n { icon: React.ReactNode; color: string }\n> = {\n pdf: { icon: <FilePdfOutlined />, color: \"#ff4d4f\" },\n word: { icon: <FileWordOutlined />, color: \"#1677ff\" },\n excel: { icon: <FileExcelOutlined />, color: \"#22b35e\" },\n ppt: { icon: <FilePptOutlined />, color: \"#ff6e31\" },\n audio: { icon: <AudioOutlined />, color: \"#722ed1\" },\n video: { icon: <VideoCameraOutlined />, color: \"#fa8c16\" },\n zip: { icon: <FileZipOutlined />, color: \"#eb2f96\" },\n markdown: { icon: <FileMarkdownOutlined />, color: \"#13c2c2\" },\n image: { icon: <FileImageOutlined />, color: \"#8c8c8c\" },\n default: { icon: <FileOutlined />, color: \"#8c8c8c\" },\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 FALLBACK_IMAGE =\n \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMIAAADDCAYAAADQvc6UAAABRWlDQ1BJQ0MgUHJvZmlsZQAAKJFjYGASSSwoyGFhYGDIzSspCnJ3UoiIjFJgf8LAwSDCIMogwMCcmFxc4BgQ4ANUwgCjUcG3awyMIPqyLsis7PPOq3QdDFcvjV3jOD1boQVTPQrgSkktTgbSf4A4LbmgqISBgTEFyFYuLykAsTuAbJEioKOA7DkgdjqEvQHEToKwj4DVhAQ5A9k3gGyB5IxEoBmML4BsnSQk8XQkNtReEOBxcfXxUQg1Mjc0dyHgXNJBSWpFCYh2zi+oLMpMzyhRcASGUqqCZ16yno6CkYGRAQMDKMwhqj/fAIcloxgHQqxAjIHBEugw5sUIsSQpBobtQPdLciLEVJYzMPBHMDBsayhILEqEO4DxG0txmrERhM29nYGBddr//5/DGRjYNRkY/l7////39v///y4Dmn+LgeHANwDrkl1AuO+pmgAAADhlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAAqACAAQAAAABAAAAwqADAAQAAAABAAAAwwAAAAD9b/HnAAAHlklEQVR4Ae3dP3PTWBSGcbGzM6GCKqlIBRV0dHRJFarQ0eUT8LH4BnRU0NHR0UEFVdIlFRV7TzRksomPY8uykTk/zewQfKw/9znv4yvJynLv4uLiV2dBoDiBf4qP3/ARuCRABEFAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghgg0Aj8i0JO4OzsrPv69Wv+hi2qPHr0qNvf39+iI97soRIh4f3z58/u7du3SXX7Xt7Z2enevHmzfQe+oSN2apSAPj09TSrb+XKI/f379+08+A0cNRE2ANkupk+ACNPvkSPcAAEibACyXUyfABGm3yNHuAECRNgAZLuYPgEirKlHu7u7XdyytGwHAd8jjNyng4OD7vnz51dbPT8/7z58+NB9+/bt6jU/TI+AGWHEnrx48eJ/EsSmHzx40L18+fLyzxF3ZVMjEyDCiEDjMYZZS5wiPXnyZFbJaxMhQIQRGzHvWR7XCyOCXsOmiDAi1HmPMMQjDpbpEiDCiL358eNHurW/5SnWdIBbXiDCiA38/Pnzrce2YyZ4//59F3ePLNMl4PbpiL2J0L979+7yDtHDhw8vtzzvdGnEXdvUigSIsCLAWavHp/+qM0BcXMd/q25n1vF57TYBp0a3mUzilePj4+7k5KSLb6gt6ydAhPUzXnoPR0dHl79WGTNCfBnn1uvSCJdegQhLI1vvCk+fPu2ePXt2tZOYEV6/fn31dz+shwAR1sP1cqvLntbEN9MxA9xcYjsxS1jWR4AIa2Ibzx0tc44fYX/16lV6NDFLXH+YL32jwiACRBiEbf5KcXoTIsQSpzXx4N28Ja4BQoK7rgXiydbHjx/P25TaQAJEGAguWy0+2Q8PD6/Ki4R8EVl+bzBOnZY95fq9rj9zAkTI2SxdidBHqG9+skdw43borCXO/ZcJdraPWdv22uIEiLA4q7nvvCug8WTqzQveOH26fodo7g6uFe/a17W3+nFBAkRYENRdb1vkkz1CH9cPsVy/jrhr27PqMYvENYNlHAIesRiBYwRy0V+8iXP8+/fvX11Mr7L7ECueb/r48eMqm7FuI2BGWDEG8cm+7G3NEOfmdcTQw4h9/55lhm7DekRYKQPZF2ArbXTAyu4kDYB2YxUzwg0gi/41ztHnfQG26HbGel/crVrm7tNY+/1btkOEAZ2M05r4FB7r9GbAIdxaZYrHdOsgJ/wCEQY0J74TmOKnbxxT9n3FgGGWWsVdowHtjt9Nnvf7yQM2aZU/TIAIAxrw6dOnAWtZZcoEnBpNuTuObWMEiLAx1HY0ZQJEmHJ3HNvGCBBhY6jtaMoEiJB0Z29vL6ls58vxPcO8/zfrdo5qvKO+d3Fx8Wu8zf1dW4p/cPzLly/dtv9Ts/EbcvGAHhHyfBIhZ6NSiIBTo0LNNtScABFyNiqFCBChULMNNSdAhJyNSiECRCjUbEPNCRAhZ6NSiAARCjXbUHMCRMjZqBQiQIRCzTbUnAARcjYqhQgQoVCzDTUnQIScjUohAkQo1GxDzQkQIWejUogAEQo121BzAkTI2agUIkCEQs021JwAEXI2KoUIEKFQsw01J0CEnI1KIQJEKNRsQ80JECFno1KIABEKNdtQcwJEyNmoFCJAhELNNtScABFyNiqFCBChULMNNSdAhJyNSiECRCjUbEPNCRAhZ6NSiAARCjXbUHMCRMjZqBQiQIRCzTbUnAARcjYqhQgQoVCzDTUnQIScjUohAkQo1GxDzQkQIWejUogAEQo121BzAkTI2agUIkCEQs021JwAEXI2KoUIEKFQsw01J0CEnI1KIQJEKNRsQ80JECFno1KIABEKNdtQcwJEyNmoFCJAhELNNtScABFyNiqFCBChULMNNSdAhJyNSiEC/wGgKKC4YMA4TAAAAABJRU5ErkJggg==\";\n\n// ==================== 子组件:图片加载状态管理 ====================\n\nconst ImageWithLoading: React.FC<{\n src: string;\n alt: string;\n width?: number | string;\n height?: number | string;\n loading?: \"lazy\" | \"eager\";\n preview?: false | { src: string };\n fallback?: string;\n displayMode: ImageDisplayMode;\n className?: string;\n styles: ReturnType<typeof useStyles>;\n}> = ({\n src,\n alt,\n width,\n height,\n loading,\n preview,\n fallback,\n displayMode,\n className,\n styles,\n}) => {\n const [loadState, setLoadState] = useState<\n \"loading\" | \"loaded\" | \"error\"\n >(\"loading\");\n\n useEffect(() => {\n setLoadState(\"loading\");\n }, [src]);\n\n const modeClass =\n displayMode === \"full\"\n ? styles.imageFullMode\n : displayMode === \"preview\"\n ? styles.imagePreviewMode\n : styles.imageThumbnail;\n\n const containerStyle: React.CSSProperties = {};\n if (width)\n containerStyle.width = typeof width === \"number\" ? `${width}px` : width;\n if (height)\n containerStyle.height = typeof height === \"number\" ? `${height}px` : height;\n\n return (\n <div\n className={`${modeClass} ${className || \"\"}`}\n style={containerStyle}\n >\n {loadState === \"loading\" && (\n <div className={styles.imageLoadingSkeleton}>\n <PictureOutlined style={{ fontSize: 20, color: \"#d9d9d9\" }} />\n </div>\n )}\n\n {loadState === \"error\" && (\n <div className={styles.imageErrorFallback}>\n <PictureOutlined />\n <span>加载失败</span>\n </div>\n )}\n\n <Image\n src={src}\n alt={alt}\n fallback={fallback}\n preview={preview}\n loading={loading}\n style={{\n display: loadState === \"error\" ? \"none\" : \"block\",\n opacity: loadState === \"loading\" ? 0 : 1,\n transition: \"opacity 0.3s ease\",\n ...(displayMode === \"thumbnail\"\n ? { width: \"100%\", height: \"100%\", objectFit: \"cover\" }\n : { maxWidth: \"100%\", objectFit: \"contain\" }),\n }}\n onLoad={() => setLoadState(\"loaded\")}\n onError={() => setLoadState(\"error\")}\n />\n </div>\n );\n};\n\n// ==================== 主组件 ====================\n\nconst FileGallery: React.FC<FileGalleryProps> = ({\n file,\n align = \"left\",\n size = \"default\",\n removable = false,\n onRemove = () => {},\n className,\n style,\n onClick,\n type: customType,\n // 图片相关\n imageDisplayMode = \"thumbnail\",\n imageWidth,\n imageHeight,\n imageLoading = \"eager\",\n imageAlt,\n // 音视频相关\n mediaAutoPlay = false,\n mediaLoop = false,\n mediaMuted = false,\n mediaPoster,\n videoProps,\n audioProps,\n // 自定义图标\n iconMap,\n customIcon,\n}) => {\n const styles = useStyles();\n const [objectUrl, setObjectUrl] = useState(\"\");\n\n useEffect(() => {\n if (!file?.file) return;\n const url = URL.createObjectURL(file.file);\n setObjectUrl(url);\n return () => URL.revokeObjectURL(url);\n }, [file?.file]);\n\n if (!file) return null;\n\n const fileName = getFileName(file);\n const fileSize = getFileSize(file);\n const fileId = getFileId(file);\n const url = getFileUrl(file) || objectUrl;\n const isSmall = size === \"small\";\n const cardClassName = `${styles.fileCard} ${isSmall ? styles.fileCardSmall : \"\"} ${align === \"right\" ? \"align-right\" : \"\"} ${className || \"\"}`;\n\n // 核心逻辑:type prop 决定渲染方式(参考 file-card)\n // - 不传 type:自动推断,图片/音频/视频用原生渲染\n // - type=\"file\":强制附件卡片(音视频不可播放)\n // - type=\"image\"/\"audio\"/\"video\":强制指定类型\n const fileType = useMemo<FileCardType>(\n () => customType || inferFileType(file),\n [customType, file],\n );\n\n /** 获取图标(支持自定义) */\n const getIcon = (\n iconType: FileIconType,\n ): { icon: React.ReactNode; color: string } => {\n if (customIcon) return { icon: customIcon, color: \"inherit\" };\n if (iconMap?.[iconType])\n return { icon: iconMap[iconType]!, color: \"inherit\" };\n return DEFAULT_ICON_MAP[iconType];\n };\n\n // ==================== 渲染删除按钮 ====================\n const renderRemoveBtn = () =>\n removable ? (\n <button\n className={`${styles.fileRemoveBtn} ${isSmall ? styles.fileRemoveBtnSmall : \"\"}`}\n onClick={(e) => {\n e.stopPropagation();\n onRemove(fileId);\n }}\n disabled={file.status === \"uploading\"}\n aria-label=\"删除文件\"\n >\n <CloseOutlined />\n </button>\n ) : null;\n\n // ==================== 渲染上传进度遮罩 ====================\n const renderUploadOverlay = () =>\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 ) : null;\n\n // ==================== 附件卡片渲染(type=\"file\" 或普通文档) ====================\n const renderFileCard = () => {\n const iconType = getFileIconType(file);\n const { icon, color } = getIcon(iconType);\n const isExternalUrl = url && url.startsWith(\"http\");\n\n return (\n <div\n className={cardClassName}\n style={{ ...style, cursor: onClick ? \"pointer\" : undefined }}\n onClick={() => onClick?.(file)}\n >\n <div\n className={`${styles.fileIcon} ${isSmall ? styles.fileIconSmall : \"\"}`}\n style={{ color }}\n >\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} ${isSmall ? styles.fileNameSmall : \"\"}`}>\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} ${isSmall ? styles.fileNameSmall : \"\"}`}>\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} ${isSmall ? styles.progressSmall : \"\"}`}\n />\n ) : (\n !isSmall && fileSize > 0 && (\n <div className={styles.fileSize}>\n {formatFileSize(fileSize)}\n </div>\n )\n )}\n\n {file.status === \"error\" && file.errorMessage && (\n <div\n style={{ fontSize: \"11px\", color: \"#ff4d4f\", marginTop: \"2px\" }}\n >\n {file.errorMessage}\n </div>\n )}\n </div>\n\n {renderRemoveBtn()}\n </div>\n );\n };\n\n // ==================== 图片渲染 ====================\n if (fileType === \"image\") {\n // full / preview 模式:独立展示\n if (imageDisplayMode === \"full\" || imageDisplayMode === \"preview\") {\n const containerStyle: React.CSSProperties = { ...style };\n if (imageWidth)\n containerStyle.width =\n typeof imageWidth === \"number\" ? `${imageWidth}px` : imageWidth;\n if (imageHeight)\n containerStyle.height =\n typeof imageHeight === \"number\" ? `${imageHeight}px` : imageHeight;\n\n return (\n <div\n className={`${imageDisplayMode === \"full\" ? styles.imageFullMode : styles.imagePreviewMode} ${className || \"\"}`}\n style={containerStyle}\n >\n <ImageWithLoading\n src={url}\n alt={imageAlt || fileName}\n displayMode={imageDisplayMode}\n loading={imageLoading}\n preview={onClick ? false : { src: url }}\n fallback={FALLBACK_IMAGE}\n styles={styles}\n />\n {renderUploadOverlay()}\n {renderRemoveBtn()}\n </div>\n );\n }\n\n // thumbnail 模式:卡片形式\n return (\n <div\n className={cardClassName}\n style={{ ...style, cursor: onClick ? \"pointer\" : undefined }}\n onClick={() => onClick?.(file)}\n >\n <ImageWithLoading\n src={url}\n alt={imageAlt || fileName}\n width={size === \"small\" ? 22 : imageWidth}\n height={size === \"small\" ? 22 : imageHeight}\n displayMode=\"thumbnail\"\n loading={imageLoading}\n preview={onClick ? false : { src: url }}\n fallback={FALLBACK_IMAGE}\n styles={styles}\n className={isSmall ? styles.imageThumbnailSmall : undefined}\n />\n {renderUploadOverlay()}\n\n <div className={styles.fileInfo}>\n <Tooltip title={fileName}>\n <div className={`${styles.fileName} ${isSmall ? styles.fileNameSmall : \"\"}`}>\n {fileName.length > 15\n ? `${fileName.substring(0, 15)}...`\n : fileName}\n </div>\n </Tooltip>\n {!isSmall && Number(file?.size) > 0 && (\n <div className={styles.fileSize}>{formatFileSize(fileSize)}</div>\n )}\n </div>\n\n {renderRemoveBtn()}\n </div>\n );\n }\n\n // ==================== 音频渲染(原生播放器,无卡片包裹) ====================\n if (fileType === \"audio\" && size !== \"small\") {\n return (\n <div\n className={`file-gallery-audio ${className || \"\"}`}\n style={{ position: \"relative\", width: 268, ...style }}\n >\n <audio\n src={url}\n controls\n autoPlay={mediaAutoPlay}\n loop={mediaLoop}\n muted={mediaMuted}\n style={{ width: \"100%\" }}\n {...audioProps}\n />\n {renderRemoveBtn()}\n </div>\n );\n }\n\n // ==================== 视频渲染(原生播放器,无卡片包裹) ====================\n if (fileType === \"video\" && size !== \"small\") {\n return (\n <div\n className={`file-gallery-video ${className || \"\"}`}\n style={{ position: \"relative\", width: 268, ...style }}\n >\n <video\n src={url}\n controls\n autoPlay={mediaAutoPlay}\n loop={mediaLoop}\n muted={mediaMuted}\n poster={mediaPoster}\n style={{\n width: \"100%\",\n aspectRatio: \"16 / 9\",\n borderRadius: 8,\n background: \"#000\",\n }}\n {...videoProps}\n />\n {renderRemoveBtn()}\n </div>\n );\n }\n\n // ==================== 其他文件(附件卡片) ====================\n return renderFileCard();\n};\n\nexport default FileGallery;\n"],"mappings":"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"}
@@ -2,14 +2,21 @@ export declare const useStyles: () => {
2
2
  container: string;
3
3
  fileList: string;
4
4
  fileCard: string;
5
+ fileCardSmall: string;
5
6
  imageThumbnail: string;
7
+ imageThumbnailSmall: string;
6
8
  imageOverlay: string;
7
9
  fileIcon: string;
10
+ fileIconSmall: string;
8
11
  fileInfo: string;
9
12
  fileName: string;
13
+ fileNameSmall: string;
10
14
  fileSize: string;
15
+ fileSizeSmall: string;
11
16
  progress: string;
17
+ progressSmall: string;
12
18
  fileRemoveBtn: string;
19
+ fileRemoveBtnSmall: string;
13
20
  fileLink: string;
14
21
  mediaWrapper: string;
15
22
  imagePreviewMode: string;
@@ -1,30 +1,37 @@
1
1
  import _taggedTemplateLiteral from "@babel/runtime/helpers/esm/taggedTemplateLiteral";
2
- var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17, _templateObject18;
2
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17, _templateObject18, _templateObject19, _templateObject20, _templateObject21, _templateObject22, _templateObject23, _templateObject24, _templateObject25;
3
3
  import { css } from "@emotion/css";
4
4
  import { withBasicStyles } from "../../styles/common";
5
5
  export var useStyles = withBasicStyles(function () {
6
6
  return {
7
7
  container: css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n padding: 12px 0;\n display: flex;\n flex-direction: column;\n gap: 12px;\n\n &.align-right {\n align-items: flex-end;\n }\n "]))),
8
8
  fileList: css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n "]))),
9
- fileCard: css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n position: relative;\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 6px 12px;\n margin: 8px 0;\n background: #fafafa;\n border: 1px solid #f0f0f0;\n border-radius: 8px;\n min-width: 260px;\n max-width: 280px;\n min-height: 64px;\n transition: all 0.2s ease;\n\n &:hover {\n background: #f5f5f5;\n border-color: #e0e0e0;\n }\n\n /* align=right \u65F6\u56FE\u6807\u5728\u53F3\u4FA7 */\n &.align-right {\n flex-direction: row-reverse;\n }\n "]))),
10
- imageThumbnail: css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n position: relative;\n width: 44px;\n height: 44px;\n flex-shrink: 0;\n border-radius: 4px;\n overflow: hidden;\n background-color: #f5f5f5;\n border: 1px solid rgba(0, 0, 0, 0.06);\n\n .ant-image {\n width: 100% !important;\n height: 100% !important;\n display: flex !important;\n justify-content: center;\n align-items: center;\n }\n\n img {\n width: 100% !important;\n height: 100% !important;\n object-fit: cover !important;\n display: block !important;\n }\n "]))),
11
- imageOverlay: css(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.05);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 10;\n "]))),
12
- fileIcon: css(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral(["\n font-size: 24px;\n flex-shrink: 0;\n width: 36px;\n height: 36px;\n display: flex;\n align-items: center;\n justify-content: center;\n "]))),
13
- fileInfo: css(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral(["\n flex: 1;\n min-width: 0;\n overflow: hidden;\n "]))),
14
- fileName: css(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral(["\n font-size: 13px;\n font-weight: 500;\n color: #262626;\n margin-bottom: 4px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n "]))),
15
- fileSize: css(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral(["\n font-size: 11px;\n color: #8c8c8c;\n "]))),
16
- progress: css(_templateObject10 || (_templateObject10 = _taggedTemplateLiteral(["\n margin-top: 4px;\n\n .ant-progress-inner {\n height: 4px !important;\n }\n\n .ant-progress-bg {\n height: 4px !important;\n }\n "]))),
17
- fileRemoveBtn: css(_templateObject11 || (_templateObject11 = _taggedTemplateLiteral(["\n position: absolute;\n top: -6px;\n right: -6px;\n width: 18px;\n height: 18px;\n border-radius: 50%;\n background: rgba(0, 0, 0, 0.75);\n color: #fff;\n border: none;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n z-index: 1;\n padding: 0;\n font-size: 10px;\n transition: all 0.2s ease;\n\n &:hover {\n background: rgba(0, 0, 0, 0.9);\n transform: scale(1.1);\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n "]))),
18
- fileLink: css(_templateObject12 || (_templateObject12 = _taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n gap: 8px;\n color: rgba(0, 0, 0, 0.85);\n text-decoration: none;\n font-size: 13px;\n\n &:hover {\n color: #1677ff;\n }\n "]))),
19
- mediaWrapper: css(_templateObject13 || (_templateObject13 = _taggedTemplateLiteral(["\n margin-top: 6px;\n\n audio {\n width: 100%;\n height: 32px;\n outline: none;\n }\n\n video {\n width: 100%;\n max-height: 240px;\n border-radius: 4px;\n outline: none;\n background: #000;\n }\n "]))),
9
+ fileCard: css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n position: relative;\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 6px 12px;\n margin: 8px 0;\n background: #fafafa;\n border: 1px solid #f0f0f0;\n border-radius: 8px;\n min-width: 260px;\n max-width: 280px;\n min-height: 64px;\n transition: all 0.2s ease;\n\n &:hover {\n background: #f5f5f5;\n border-color: #e0e0e0;\n }\n\n /* align=right \u65F6\u56FE\u6807\u5728\u53F3\u4FA7 */\n &.align-right {\n flex-direction: row-reverse;\n }\n\n "]))),
10
+ fileCardSmall: css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n gap: 6px;\n min-width: 0;\n max-width: 260px;\n width: auto;\n height: 32px;\n min-height: 32px;\n margin: 0;\n padding: 4px 10px 4px 8px;\n border-radius: 7px;\n background: #f5f5f5;\n border-color: transparent;\n box-sizing: border-box;\n\n &:hover {\n background: #eeeeee;\n border-color: transparent;\n }\n\n .ant-progress-line {\n width: 56px;\n }\n "]))),
11
+ imageThumbnail: css(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n position: relative;\n width: 44px;\n height: 44px;\n flex-shrink: 0;\n border-radius: 4px;\n overflow: hidden;\n background-color: #f5f5f5;\n border: 1px solid rgba(0, 0, 0, 0.06);\n\n .ant-image {\n width: 100% !important;\n height: 100% !important;\n display: flex !important;\n justify-content: center;\n align-items: center;\n }\n\n img {\n width: 100% !important;\n height: 100% !important;\n object-fit: cover !important;\n display: block !important;\n }\n\n "]))),
12
+ imageThumbnailSmall: css(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral(["\n width: 22px;\n height: 22px;\n border-radius: 5px;\n "]))),
13
+ imageOverlay: css(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral(["\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.05);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 10;\n "]))),
14
+ fileIcon: css(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral(["\n font-size: 24px;\n flex-shrink: 0;\n width: 36px;\n height: 36px;\n display: flex;\n align-items: center;\n justify-content: center;\n\n "]))),
15
+ fileIconSmall: css(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral(["\n width: 20px;\n height: 20px;\n font-size: 16px;\n "]))),
16
+ fileInfo: css(_templateObject10 || (_templateObject10 = _taggedTemplateLiteral(["\n flex: 1;\n min-width: 0;\n overflow: hidden;\n "]))),
17
+ fileName: css(_templateObject11 || (_templateObject11 = _taggedTemplateLiteral(["\n font-size: 13px;\n font-weight: 500;\n color: #262626;\n margin-bottom: 4px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n\n "]))),
18
+ fileNameSmall: css(_templateObject12 || (_templateObject12 = _taggedTemplateLiteral(["\n max-width: 190px;\n margin-bottom: 0;\n font-size: 12px;\n line-height: 20px;\n "]))),
19
+ fileSize: css(_templateObject13 || (_templateObject13 = _taggedTemplateLiteral(["\n font-size: 11px;\n color: #8c8c8c;\n\n "]))),
20
+ fileSizeSmall: css(_templateObject14 || (_templateObject14 = _taggedTemplateLiteral(["\n display: none;\n "]))),
21
+ progress: css(_templateObject15 || (_templateObject15 = _taggedTemplateLiteral(["\n margin-top: 4px;\n\n .ant-progress-inner {\n height: 4px !important;\n }\n\n .ant-progress-bg {\n height: 4px !important;\n }\n\n "]))),
22
+ progressSmall: css(_templateObject16 || (_templateObject16 = _taggedTemplateLiteral(["\n margin-top: 0;\n "]))),
23
+ fileRemoveBtn: css(_templateObject17 || (_templateObject17 = _taggedTemplateLiteral(["\n position: absolute;\n top: -6px;\n right: -6px;\n width: 18px;\n height: 18px;\n border-radius: 50%;\n background: rgba(0, 0, 0, 0.75);\n color: #fff;\n border: none;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n z-index: 1;\n padding: 0;\n font-size: 10px;\n transition: all 0.2s ease;\n\n &:hover {\n background: rgba(0, 0, 0, 0.9);\n transform: scale(1.1);\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n "]))),
24
+ fileRemoveBtnSmall: css(_templateObject18 || (_templateObject18 = _taggedTemplateLiteral(["\n top: -5px;\n right: -5px;\n width: 14px;\n height: 14px;\n font-size: 8px;\n "]))),
25
+ fileLink: css(_templateObject19 || (_templateObject19 = _taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n gap: 8px;\n color: rgba(0, 0, 0, 0.85);\n text-decoration: none;\n font-size: 13px;\n\n &:hover {\n color: #1677ff;\n }\n "]))),
26
+ mediaWrapper: css(_templateObject20 || (_templateObject20 = _taggedTemplateLiteral(["\n margin-top: 6px;\n\n audio {\n width: 100%;\n height: 32px;\n outline: none;\n }\n\n video {\n width: 100%;\n max-height: 240px;\n border-radius: 4px;\n outline: none;\n background: #000;\n }\n "]))),
20
27
  // ========== 图片展示模式 ==========
21
- imagePreviewMode: css(_templateObject14 || (_templateObject14 = _taggedTemplateLiteral(["\n position: relative;\n border-radius: 8px;\n overflow: hidden;\n background-color: #f5f5f5;\n border: 1px solid rgba(0, 0, 0, 0.06);\n\n .ant-image {\n display: flex !important;\n justify-content: center;\n align-items: center;\n }\n\n img {\n display: block !important;\n object-fit: contain !important;\n }\n "]))),
22
- imageFullMode: css(_templateObject15 || (_templateObject15 = _taggedTemplateLiteral(["\n position: relative;\n border-radius: 8px;\n overflow: hidden;\n background-color: #f5f5f5;\n border: 1px solid rgba(0, 0, 0, 0.06);\n width: 100%;\n\n .ant-image {\n width: 100% !important;\n display: flex !important;\n }\n\n img {\n width: 100% !important;\n display: block !important;\n object-fit: contain !important;\n }\n "]))),
28
+ imagePreviewMode: css(_templateObject21 || (_templateObject21 = _taggedTemplateLiteral(["\n position: relative;\n border-radius: 8px;\n overflow: hidden;\n background-color: #f5f5f5;\n border: 1px solid rgba(0, 0, 0, 0.06);\n\n .ant-image {\n display: flex !important;\n justify-content: center;\n align-items: center;\n }\n\n img {\n display: block !important;\n object-fit: contain !important;\n }\n "]))),
29
+ imageFullMode: css(_templateObject22 || (_templateObject22 = _taggedTemplateLiteral(["\n position: relative;\n border-radius: 8px;\n overflow: hidden;\n background-color: #f5f5f5;\n border: 1px solid rgba(0, 0, 0, 0.06);\n width: 100%;\n\n .ant-image {\n width: 100% !important;\n display: flex !important;\n }\n\n img {\n width: 100% !important;\n display: block !important;\n object-fit: contain !important;\n }\n "]))),
23
30
  // ========== 图片加载状态 ==========
24
- imageLoadingSkeleton: css(_templateObject16 || (_templateObject16 = _taggedTemplateLiteral(["\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n background: linear-gradient(90deg, #f5f5f5 25%, #e8e8e8 50%, #f5f5f5 75%);\n background-size: 200% 100%;\n animation: shimmer 1.5s infinite;\n\n @keyframes shimmer {\n 0% {\n background-position: 200% 0;\n }\n 100% {\n background-position: -200% 0;\n }\n }\n "]))),
25
- imageErrorFallback: css(_templateObject17 || (_templateObject17 = _taggedTemplateLiteral(["\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n background: #fafafa;\n color: #bfbfbf;\n font-size: 20px;\n gap: 4px;\n\n span {\n font-size: 11px;\n color: #bfbfbf;\n }\n "]))),
31
+ imageLoadingSkeleton: css(_templateObject23 || (_templateObject23 = _taggedTemplateLiteral(["\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n background: linear-gradient(90deg, #f5f5f5 25%, #e8e8e8 50%, #f5f5f5 75%);\n background-size: 200% 100%;\n animation: shimmer 1.5s infinite;\n\n @keyframes shimmer {\n 0% {\n background-position: 200% 0;\n }\n 100% {\n background-position: -200% 0;\n }\n }\n "]))),
32
+ imageErrorFallback: css(_templateObject24 || (_templateObject24 = _taggedTemplateLiteral(["\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n background: #fafafa;\n color: #bfbfbf;\n font-size: 20px;\n gap: 4px;\n\n span {\n font-size: 11px;\n color: #bfbfbf;\n }\n "]))),
26
33
  // ========== Media Card 模式 ==========
27
- mediaCardPlayIcon: css(_templateObject18 || (_templateObject18 = _taggedTemplateLiteral(["\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 28px;\n height: 28px;\n border-radius: 50%;\n background: rgba(0, 0, 0, 0.5);\n color: #fff;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 12px;\n z-index: 2;\n "])))
34
+ mediaCardPlayIcon: css(_templateObject25 || (_templateObject25 = _taggedTemplateLiteral(["\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 28px;\n height: 28px;\n border-radius: 50%;\n background: rgba(0, 0, 0, 0.5);\n color: #fff;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 12px;\n z-index: 2;\n "])))
28
35
  };
29
36
  });
30
37
  export default useStyles;
@@ -1 +1 @@
1
- {"version":3,"names":["css","withBasicStyles","useStyles","container","_templateObject","_taggedTemplateLiteral","fileList","_templateObject2","fileCard","_templateObject3","imageThumbnail","_templateObject4","imageOverlay","_templateObject5","fileIcon","_templateObject6","fileInfo","_templateObject7","fileName","_templateObject8","fileSize","_templateObject9","progress","_templateObject10","fileRemoveBtn","_templateObject11","fileLink","_templateObject12","mediaWrapper","_templateObject13","imagePreviewMode","_templateObject14","imageFullMode","_templateObject15","imageLoadingSkeleton","_templateObject16","imageErrorFallback","_templateObject17","mediaCardPlayIcon","_templateObject18"],"sources":["../../../../src/components/FileGallery/styles.tsx"],"sourcesContent":["import { css } from \"@emotion/css\";\nimport { withBasicStyles } from \"@/styles/common\";\n\nexport const useStyles = withBasicStyles(() => ({\n container: css`\n padding: 12px 0;\n display: flex;\n flex-direction: column;\n gap: 12px;\n\n &.align-right {\n align-items: flex-end;\n }\n `,\n\n fileList: css`\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n `,\n\n fileCard: css`\n position: relative;\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 6px 12px;\n margin: 8px 0;\n background: #fafafa;\n border: 1px solid #f0f0f0;\n border-radius: 8px;\n min-width: 260px;\n max-width: 280px;\n min-height: 64px;\n transition: all 0.2s ease;\n\n &:hover {\n background: #f5f5f5;\n border-color: #e0e0e0;\n }\n\n /* align=right 时图标在右侧 */\n &.align-right {\n flex-direction: row-reverse;\n }\n `,\n\n imageThumbnail: css`\n position: relative;\n width: 44px;\n height: 44px;\n flex-shrink: 0;\n border-radius: 4px;\n overflow: hidden;\n background-color: #f5f5f5;\n border: 1px solid rgba(0, 0, 0, 0.06);\n\n .ant-image {\n width: 100% !important;\n height: 100% !important;\n display: flex !important;\n justify-content: center;\n align-items: center;\n }\n\n img {\n width: 100% !important;\n height: 100% !important;\n object-fit: cover !important;\n display: block !important;\n }\n `,\n\n imageOverlay: css`\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.05);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 10;\n `,\n\n fileIcon: css`\n font-size: 24px;\n flex-shrink: 0;\n width: 36px;\n height: 36px;\n display: flex;\n align-items: center;\n justify-content: center;\n `,\n\n fileInfo: css`\n flex: 1;\n min-width: 0;\n overflow: hidden;\n `,\n\n fileName: css`\n font-size: 13px;\n font-weight: 500;\n color: #262626;\n margin-bottom: 4px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n `,\n\n fileSize: css`\n font-size: 11px;\n color: #8c8c8c;\n `,\n\n progress: css`\n margin-top: 4px;\n\n .ant-progress-inner {\n height: 4px !important;\n }\n\n .ant-progress-bg {\n height: 4px !important;\n }\n `,\n\n fileRemoveBtn: css`\n position: absolute;\n top: -6px;\n right: -6px;\n width: 18px;\n height: 18px;\n border-radius: 50%;\n background: rgba(0, 0, 0, 0.75);\n color: #fff;\n border: none;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n z-index: 1;\n padding: 0;\n font-size: 10px;\n transition: all 0.2s ease;\n\n &:hover {\n background: rgba(0, 0, 0, 0.9);\n transform: scale(1.1);\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n `,\n\n fileLink: css`\n display: flex;\n align-items: center;\n gap: 8px;\n color: rgba(0, 0, 0, 0.85);\n text-decoration: none;\n font-size: 13px;\n\n &:hover {\n color: #1677ff;\n }\n `,\n\n mediaWrapper: css`\n margin-top: 6px;\n\n audio {\n width: 100%;\n height: 32px;\n outline: none;\n }\n\n video {\n width: 100%;\n max-height: 240px;\n border-radius: 4px;\n outline: none;\n background: #000;\n }\n `,\n\n // ========== 图片展示模式 ==========\n imagePreviewMode: css`\n position: relative;\n border-radius: 8px;\n overflow: hidden;\n background-color: #f5f5f5;\n border: 1px solid rgba(0, 0, 0, 0.06);\n\n .ant-image {\n display: flex !important;\n justify-content: center;\n align-items: center;\n }\n\n img {\n display: block !important;\n object-fit: contain !important;\n }\n `,\n\n imageFullMode: css`\n position: relative;\n border-radius: 8px;\n overflow: hidden;\n background-color: #f5f5f5;\n border: 1px solid rgba(0, 0, 0, 0.06);\n width: 100%;\n\n .ant-image {\n width: 100% !important;\n display: flex !important;\n }\n\n img {\n width: 100% !important;\n display: block !important;\n object-fit: contain !important;\n }\n `,\n\n // ========== 图片加载状态 ==========\n imageLoadingSkeleton: css`\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n background: linear-gradient(90deg, #f5f5f5 25%, #e8e8e8 50%, #f5f5f5 75%);\n background-size: 200% 100%;\n animation: shimmer 1.5s infinite;\n\n @keyframes shimmer {\n 0% {\n background-position: 200% 0;\n }\n 100% {\n background-position: -200% 0;\n }\n }\n `,\n\n imageErrorFallback: css`\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n background: #fafafa;\n color: #bfbfbf;\n font-size: 20px;\n gap: 4px;\n\n span {\n font-size: 11px;\n color: #bfbfbf;\n }\n `,\n\n // ========== Media Card 模式 ==========\n mediaCardPlayIcon: css`\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 28px;\n height: 28px;\n border-radius: 50%;\n background: rgba(0, 0, 0, 0.5);\n color: #fff;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 12px;\n z-index: 2;\n `,\n}));\n\nexport default useStyles;\n"],"mappings":";;AAAA,SAASA,GAAG,QAAQ,cAAc;AAClC,SAASC,eAAe;AAExB,OAAO,IAAMC,SAAS,GAAGD,eAAe,CAAC;EAAA,OAAO;IAC9CE,SAAS,EAAEH,GAAG,CAAAI,eAAA,KAAAA,eAAA,GAAAC,sBAAA,+JASb;IAEDC,QAAQ,EAAEN,GAAG,CAAAO,gBAAA,KAAAA,gBAAA,GAAAF,sBAAA,qEAIZ;IAEDG,QAAQ,EAAER,GAAG,CAAAS,gBAAA,KAAAA,gBAAA,GAAAJ,sBAAA,uhBAwBZ;IAEDK,cAAc,EAAEV,GAAG,CAAAW,gBAAA,KAAAA,gBAAA,GAAAN,sBAAA,4iBAwBlB;IAEDO,YAAY,EAAEZ,GAAG,CAAAa,gBAAA,KAAAA,gBAAA,GAAAR,sBAAA,mOAWhB;IAEDS,QAAQ,EAAEd,GAAG,CAAAe,gBAAA,KAAAA,gBAAA,GAAAV,sBAAA,wKAQZ;IAEDW,QAAQ,EAAEhB,GAAG,CAAAiB,gBAAA,KAAAA,gBAAA,GAAAZ,sBAAA,oEAIZ;IAEDa,QAAQ,EAAElB,GAAG,CAAAmB,gBAAA,KAAAA,gBAAA,GAAAd,sBAAA,sLAQZ;IAEDe,QAAQ,EAAEpB,GAAG,CAAAqB,gBAAA,KAAAA,gBAAA,GAAAhB,sBAAA,uDAGZ;IAEDiB,QAAQ,EAAEtB,GAAG,CAAAuB,iBAAA,KAAAA,iBAAA,GAAAlB,sBAAA,qKAUZ;IAEDmB,aAAa,EAAExB,GAAG,CAAAyB,iBAAA,KAAAA,iBAAA,GAAApB,sBAAA,mjBA4BjB;IAEDqB,QAAQ,EAAE1B,GAAG,CAAA2B,iBAAA,KAAAA,iBAAA,GAAAtB,sBAAA,2MAWZ;IAEDuB,YAAY,EAAE5B,GAAG,CAAA6B,iBAAA,KAAAA,iBAAA,GAAAxB,sBAAA,qQAgBhB;IAED;IACAyB,gBAAgB,EAAE9B,GAAG,CAAA+B,iBAAA,KAAAA,iBAAA,GAAA1B,sBAAA,sXAiBpB;IAED2B,aAAa,EAAEhC,GAAG,CAAAiC,iBAAA,KAAAA,iBAAA,GAAA5B,sBAAA,0YAkBjB;IAED;IACA6B,oBAAoB,EAAElC,GAAG,CAAAmC,iBAAA,KAAAA,iBAAA,GAAA9B,sBAAA,ibAkBxB;IAED+B,kBAAkB,EAAEpC,GAAG,CAAAqC,iBAAA,KAAAA,iBAAA,GAAAhC,sBAAA,kTAgBtB;IAED;IACAiC,iBAAiB,EAAEtC,GAAG,CAAAuC,iBAAA,KAAAA,iBAAA,GAAAlC,sBAAA;EAgBxB,CAAC;AAAA,CAAC,CAAC;AAEH,eAAeH,SAAS"}
1
+ {"version":3,"names":["css","withBasicStyles","useStyles","container","_templateObject","_taggedTemplateLiteral","fileList","_templateObject2","fileCard","_templateObject3","fileCardSmall","_templateObject4","imageThumbnail","_templateObject5","imageThumbnailSmall","_templateObject6","imageOverlay","_templateObject7","fileIcon","_templateObject8","fileIconSmall","_templateObject9","fileInfo","_templateObject10","fileName","_templateObject11","fileNameSmall","_templateObject12","fileSize","_templateObject13","fileSizeSmall","_templateObject14","progress","_templateObject15","progressSmall","_templateObject16","fileRemoveBtn","_templateObject17","fileRemoveBtnSmall","_templateObject18","fileLink","_templateObject19","mediaWrapper","_templateObject20","imagePreviewMode","_templateObject21","imageFullMode","_templateObject22","imageLoadingSkeleton","_templateObject23","imageErrorFallback","_templateObject24","mediaCardPlayIcon","_templateObject25"],"sources":["../../../../src/components/FileGallery/styles.tsx"],"sourcesContent":["import { css } from \"@emotion/css\";\nimport { withBasicStyles } from \"@/styles/common\";\n\nexport const useStyles = withBasicStyles(() => ({\n container: css`\n padding: 12px 0;\n display: flex;\n flex-direction: column;\n gap: 12px;\n\n &.align-right {\n align-items: flex-end;\n }\n `,\n\n fileList: css`\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n `,\n\n fileCard: css`\n position: relative;\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 6px 12px;\n margin: 8px 0;\n background: #fafafa;\n border: 1px solid #f0f0f0;\n border-radius: 8px;\n min-width: 260px;\n max-width: 280px;\n min-height: 64px;\n transition: all 0.2s ease;\n\n &:hover {\n background: #f5f5f5;\n border-color: #e0e0e0;\n }\n\n /* align=right 时图标在右侧 */\n &.align-right {\n flex-direction: row-reverse;\n }\n\n `,\n\n fileCardSmall: css`\n gap: 6px;\n min-width: 0;\n max-width: 260px;\n width: auto;\n height: 32px;\n min-height: 32px;\n margin: 0;\n padding: 4px 10px 4px 8px;\n border-radius: 7px;\n background: #f5f5f5;\n border-color: transparent;\n box-sizing: border-box;\n\n &:hover {\n background: #eeeeee;\n border-color: transparent;\n }\n\n .ant-progress-line {\n width: 56px;\n }\n `,\n\n imageThumbnail: css`\n position: relative;\n width: 44px;\n height: 44px;\n flex-shrink: 0;\n border-radius: 4px;\n overflow: hidden;\n background-color: #f5f5f5;\n border: 1px solid rgba(0, 0, 0, 0.06);\n\n .ant-image {\n width: 100% !important;\n height: 100% !important;\n display: flex !important;\n justify-content: center;\n align-items: center;\n }\n\n img {\n width: 100% !important;\n height: 100% !important;\n object-fit: cover !important;\n display: block !important;\n }\n\n `,\n\n imageThumbnailSmall: css`\n width: 22px;\n height: 22px;\n border-radius: 5px;\n `,\n\n imageOverlay: css`\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.05);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 10;\n `,\n\n fileIcon: css`\n font-size: 24px;\n flex-shrink: 0;\n width: 36px;\n height: 36px;\n display: flex;\n align-items: center;\n justify-content: center;\n\n `,\n\n fileIconSmall: css`\n width: 20px;\n height: 20px;\n font-size: 16px;\n `,\n\n fileInfo: css`\n flex: 1;\n min-width: 0;\n overflow: hidden;\n `,\n\n fileName: css`\n font-size: 13px;\n font-weight: 500;\n color: #262626;\n margin-bottom: 4px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n\n `,\n\n fileNameSmall: css`\n max-width: 190px;\n margin-bottom: 0;\n font-size: 12px;\n line-height: 20px;\n `,\n\n fileSize: css`\n font-size: 11px;\n color: #8c8c8c;\n\n `,\n\n fileSizeSmall: css`\n display: none;\n `,\n\n progress: css`\n margin-top: 4px;\n\n .ant-progress-inner {\n height: 4px !important;\n }\n\n .ant-progress-bg {\n height: 4px !important;\n }\n\n `,\n\n progressSmall: css`\n margin-top: 0;\n `,\n\n fileRemoveBtn: css`\n position: absolute;\n top: -6px;\n right: -6px;\n width: 18px;\n height: 18px;\n border-radius: 50%;\n background: rgba(0, 0, 0, 0.75);\n color: #fff;\n border: none;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n z-index: 1;\n padding: 0;\n font-size: 10px;\n transition: all 0.2s ease;\n\n &:hover {\n background: rgba(0, 0, 0, 0.9);\n transform: scale(1.1);\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n `,\n\n fileRemoveBtnSmall: css`\n top: -5px;\n right: -5px;\n width: 14px;\n height: 14px;\n font-size: 8px;\n `,\n\n fileLink: css`\n display: flex;\n align-items: center;\n gap: 8px;\n color: rgba(0, 0, 0, 0.85);\n text-decoration: none;\n font-size: 13px;\n\n &:hover {\n color: #1677ff;\n }\n `,\n\n mediaWrapper: css`\n margin-top: 6px;\n\n audio {\n width: 100%;\n height: 32px;\n outline: none;\n }\n\n video {\n width: 100%;\n max-height: 240px;\n border-radius: 4px;\n outline: none;\n background: #000;\n }\n `,\n\n // ========== 图片展示模式 ==========\n imagePreviewMode: css`\n position: relative;\n border-radius: 8px;\n overflow: hidden;\n background-color: #f5f5f5;\n border: 1px solid rgba(0, 0, 0, 0.06);\n\n .ant-image {\n display: flex !important;\n justify-content: center;\n align-items: center;\n }\n\n img {\n display: block !important;\n object-fit: contain !important;\n }\n `,\n\n imageFullMode: css`\n position: relative;\n border-radius: 8px;\n overflow: hidden;\n background-color: #f5f5f5;\n border: 1px solid rgba(0, 0, 0, 0.06);\n width: 100%;\n\n .ant-image {\n width: 100% !important;\n display: flex !important;\n }\n\n img {\n width: 100% !important;\n display: block !important;\n object-fit: contain !important;\n }\n `,\n\n // ========== 图片加载状态 ==========\n imageLoadingSkeleton: css`\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n background: linear-gradient(90deg, #f5f5f5 25%, #e8e8e8 50%, #f5f5f5 75%);\n background-size: 200% 100%;\n animation: shimmer 1.5s infinite;\n\n @keyframes shimmer {\n 0% {\n background-position: 200% 0;\n }\n 100% {\n background-position: -200% 0;\n }\n }\n `,\n\n imageErrorFallback: css`\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n background: #fafafa;\n color: #bfbfbf;\n font-size: 20px;\n gap: 4px;\n\n span {\n font-size: 11px;\n color: #bfbfbf;\n }\n `,\n\n // ========== Media Card 模式 ==========\n mediaCardPlayIcon: css`\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 28px;\n height: 28px;\n border-radius: 50%;\n background: rgba(0, 0, 0, 0.5);\n color: #fff;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 12px;\n z-index: 2;\n `,\n}));\n\nexport default useStyles;\n"],"mappings":";;AAAA,SAASA,GAAG,QAAQ,cAAc;AAClC,SAASC,eAAe;AAExB,OAAO,IAAMC,SAAS,GAAGD,eAAe,CAAC;EAAA,OAAO;IAC9CE,SAAS,EAAEH,GAAG,CAAAI,eAAA,KAAAA,eAAA,GAAAC,sBAAA,+JASb;IAEDC,QAAQ,EAAEN,GAAG,CAAAO,gBAAA,KAAAA,gBAAA,GAAAF,sBAAA,qEAIZ;IAEDG,QAAQ,EAAER,GAAG,CAAAS,gBAAA,KAAAA,gBAAA,GAAAJ,sBAAA,yhBAyBZ;IAEDK,aAAa,EAAEV,GAAG,CAAAW,gBAAA,KAAAA,gBAAA,GAAAN,sBAAA,8aAsBjB;IAEDO,cAAc,EAAEZ,GAAG,CAAAa,gBAAA,KAAAA,gBAAA,GAAAR,sBAAA,8iBAyBlB;IAEDS,mBAAmB,EAAEd,GAAG,CAAAe,gBAAA,KAAAA,gBAAA,GAAAV,sBAAA,0EAIvB;IAEDW,YAAY,EAAEhB,GAAG,CAAAiB,gBAAA,KAAAA,gBAAA,GAAAZ,sBAAA,mOAWhB;IAEDa,QAAQ,EAAElB,GAAG,CAAAmB,gBAAA,KAAAA,gBAAA,GAAAd,sBAAA,0KASZ;IAEDe,aAAa,EAAEpB,GAAG,CAAAqB,gBAAA,KAAAA,gBAAA,GAAAhB,sBAAA,uEAIjB;IAEDiB,QAAQ,EAAEtB,GAAG,CAAAuB,iBAAA,KAAAA,iBAAA,GAAAlB,sBAAA,oEAIZ;IAEDmB,QAAQ,EAAExB,GAAG,CAAAyB,iBAAA,KAAAA,iBAAA,GAAApB,sBAAA,wLASZ;IAEDqB,aAAa,EAAE1B,GAAG,CAAA2B,iBAAA,KAAAA,iBAAA,GAAAtB,sBAAA,wGAKjB;IAEDuB,QAAQ,EAAE5B,GAAG,CAAA6B,iBAAA,KAAAA,iBAAA,GAAAxB,sBAAA,yDAIZ;IAEDyB,aAAa,EAAE9B,GAAG,CAAA+B,iBAAA,KAAAA,iBAAA,GAAA1B,sBAAA,gCAEjB;IAED2B,QAAQ,EAAEhC,GAAG,CAAAiC,iBAAA,KAAAA,iBAAA,GAAA5B,sBAAA,uKAWZ;IAED6B,aAAa,EAAElC,GAAG,CAAAmC,iBAAA,KAAAA,iBAAA,GAAA9B,sBAAA,gCAEjB;IAED+B,aAAa,EAAEpC,GAAG,CAAAqC,iBAAA,KAAAA,iBAAA,GAAAhC,sBAAA,mjBA4BjB;IAEDiC,kBAAkB,EAAEtC,GAAG,CAAAuC,iBAAA,KAAAA,iBAAA,GAAAlC,sBAAA,wGAMtB;IAEDmC,QAAQ,EAAExC,GAAG,CAAAyC,iBAAA,KAAAA,iBAAA,GAAApC,sBAAA,2MAWZ;IAEDqC,YAAY,EAAE1C,GAAG,CAAA2C,iBAAA,KAAAA,iBAAA,GAAAtC,sBAAA,qQAgBhB;IAED;IACAuC,gBAAgB,EAAE5C,GAAG,CAAA6C,iBAAA,KAAAA,iBAAA,GAAAxC,sBAAA,sXAiBpB;IAEDyC,aAAa,EAAE9C,GAAG,CAAA+C,iBAAA,KAAAA,iBAAA,GAAA1C,sBAAA,0YAkBjB;IAED;IACA2C,oBAAoB,EAAEhD,GAAG,CAAAiD,iBAAA,KAAAA,iBAAA,GAAA5C,sBAAA,ibAkBxB;IAED6C,kBAAkB,EAAElD,GAAG,CAAAmD,iBAAA,KAAAA,iBAAA,GAAA9C,sBAAA,kTAgBtB;IAED;IACA+C,iBAAiB,EAAEpD,GAAG,CAAAqD,iBAAA,KAAAA,iBAAA,GAAAhD,sBAAA;EAgBxB,CAAC;AAAA,CAAC,CAAC;AAEH,eAAeH,SAAS"}