@hkyhy/marsun-components-core 0.1.52 → 0.1.56

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 (312) hide show
  1. package/README.md +29 -15
  2. package/dist/agent-hub.d.ts +11 -0
  3. package/dist/agent-hub.js +144 -0
  4. package/dist/agent-hub.js.map +1 -0
  5. package/dist/components/AgentHub/Chat/Action/CreateButton.js +3 -3
  6. package/dist/components/AgentHub/Chat/Action/ManageActionButtons.js +4 -4
  7. package/dist/components/AgentHub/Chat/Action/SessionActionButtons.js +4 -4
  8. package/dist/components/AgentHub/Chat/Detail/ChatFollowUpSuggestions/index.js +29 -27
  9. package/dist/components/AgentHub/Chat/Detail/ChatFollowUpSuggestions/index.js.map +1 -1
  10. package/dist/components/AgentHub/Chat/Detail/ChatInput/index.js +19 -18
  11. package/dist/components/AgentHub/Chat/Detail/ChatInput/index.js.map +1 -1
  12. package/dist/components/AgentHub/Chat/Detail/CitationPanel/index.js +18 -17
  13. package/dist/components/AgentHub/Chat/Detail/CitationPanel/index.js.map +1 -1
  14. package/dist/components/AgentHub/Chat/Detail/MessageActions/index.js +23 -19
  15. package/dist/components/AgentHub/Chat/Detail/MessageActions/index.js.map +1 -1
  16. package/dist/components/AgentHub/Chat/Detail/MessageItem/index.js +23 -21
  17. package/dist/components/AgentHub/Chat/Detail/MessageItem/index.js.map +1 -1
  18. package/dist/components/AgentHub/Chat/List/ChatCard/index.js +7 -7
  19. package/dist/components/AgentHub/Chat/List/SessionSidebar/index.js +19 -17
  20. package/dist/components/AgentHub/Chat/List/SessionSidebar/index.js.map +1 -1
  21. package/dist/components/AgentHub/KnowledgeBase/Action/CreateButton.js +3 -3
  22. package/dist/components/AgentHub/KnowledgeBase/Action/ManageActionButtons.js +1 -1
  23. package/dist/components/AgentHub/KnowledgeBase/Detail/DocumentTable/index.js +16 -15
  24. package/dist/components/AgentHub/KnowledgeBase/Detail/DocumentTable/index.js.map +1 -1
  25. package/dist/components/AgentHub/KnowledgeBase/Detail/ParseStatusTag/index.js +7 -7
  26. package/dist/components/AgentHub/KnowledgeBase/List/KnowledgeCard/index.js +8 -8
  27. package/dist/components/AgentHub/Report/Detail/ReportHtmlPreview/index.js +1 -1
  28. package/dist/components/Auth/UserProfileCard/UserProfileCard.js +7 -7
  29. package/dist/components/Auth/UserProfileCard/style.module.scss.js +16 -16
  30. package/dist/components/File/FileItem/index.js +22 -20
  31. package/dist/components/File/FileItem/index.js.map +1 -1
  32. package/dist/components/File/FilePreview/index.js +11 -11
  33. package/dist/components/File/fileDisplay.js +41 -36
  34. package/dist/components/File/fileDisplay.js.map +1 -1
  35. package/dist/components/Filter/CommonFilter/index.js +20 -18
  36. package/dist/components/Filter/CommonFilter/index.js.map +1 -1
  37. package/dist/components/Filter/FilterSelect/index.js +90 -89
  38. package/dist/components/Filter/FilterSelect/index.js.map +1 -1
  39. package/dist/components/Filter/FilterTreeSelect/index.js +51 -48
  40. package/dist/components/Filter/FilterTreeSelect/index.js.map +1 -1
  41. package/dist/components/Filter/FilterTrigger/index.js +13 -11
  42. package/dist/components/Filter/FilterTrigger/index.js.map +1 -1
  43. package/dist/components/Form/PersonOptionRow/index.js +4 -4
  44. package/dist/components/Icons/ArrowLeft.d.ts +1 -0
  45. package/dist/components/Icons/ArrowLeft.js +7 -0
  46. package/dist/components/Icons/ArrowLeft.js.map +1 -0
  47. package/dist/components/Icons/ArrowLeftRight.d.ts +1 -0
  48. package/dist/components/Icons/ArrowLeftRight.js +7 -0
  49. package/dist/components/Icons/ArrowLeftRight.js.map +1 -0
  50. package/dist/components/Icons/BarChart3.d.ts +1 -0
  51. package/dist/components/Icons/BarChart3.js +7 -0
  52. package/dist/components/Icons/BarChart3.js.map +1 -0
  53. package/dist/components/Icons/Bell.d.ts +1 -0
  54. package/dist/components/Icons/Bell.js +7 -0
  55. package/dist/components/Icons/Bell.js.map +1 -0
  56. package/dist/components/Icons/BookOpen.d.ts +1 -0
  57. package/dist/components/Icons/BookOpen.js +7 -0
  58. package/dist/components/Icons/BookOpen.js.map +1 -0
  59. package/dist/components/Icons/Bot.d.ts +1 -0
  60. package/dist/components/Icons/Bot.js +7 -0
  61. package/dist/components/Icons/Bot.js.map +1 -0
  62. package/dist/components/Icons/Check.d.ts +1 -0
  63. package/dist/components/Icons/Check.js +7 -0
  64. package/dist/components/Icons/Check.js.map +1 -0
  65. package/dist/components/Icons/ChevronDown.d.ts +1 -0
  66. package/dist/components/Icons/ChevronDown.js +7 -0
  67. package/dist/components/Icons/ChevronDown.js.map +1 -0
  68. package/dist/components/Icons/ChevronLeft.d.ts +1 -0
  69. package/dist/components/Icons/ChevronLeft.js +7 -0
  70. package/dist/components/Icons/ChevronLeft.js.map +1 -0
  71. package/dist/components/Icons/ChevronRight.d.ts +1 -0
  72. package/dist/components/Icons/ChevronRight.js +7 -0
  73. package/dist/components/Icons/ChevronRight.js.map +1 -0
  74. package/dist/components/Icons/ChevronUp.d.ts +1 -0
  75. package/dist/components/Icons/ChevronUp.js +7 -0
  76. package/dist/components/Icons/ChevronUp.js.map +1 -0
  77. package/dist/components/Icons/CircleAlert.d.ts +1 -0
  78. package/dist/components/Icons/CircleAlert.js +7 -0
  79. package/dist/components/Icons/CircleAlert.js.map +1 -0
  80. package/dist/components/Icons/CircleCheck.d.ts +1 -0
  81. package/dist/components/Icons/CircleCheck.js +7 -0
  82. package/dist/components/Icons/CircleCheck.js.map +1 -0
  83. package/dist/components/Icons/CircleHelp.d.ts +1 -0
  84. package/dist/components/Icons/CircleHelp.js +7 -0
  85. package/dist/components/Icons/CircleHelp.js.map +1 -0
  86. package/dist/components/Icons/CirclePlay.d.ts +1 -0
  87. package/dist/components/Icons/CirclePlay.js +7 -0
  88. package/dist/components/Icons/CirclePlay.js.map +1 -0
  89. package/dist/components/Icons/CircleX.d.ts +1 -0
  90. package/dist/components/Icons/CircleX.js +7 -0
  91. package/dist/components/Icons/CircleX.js.map +1 -0
  92. package/dist/components/Icons/ClipboardCheck.d.ts +1 -0
  93. package/dist/components/Icons/ClipboardCheck.js +7 -0
  94. package/dist/components/Icons/ClipboardCheck.js.map +1 -0
  95. package/dist/components/Icons/Clock.d.ts +1 -0
  96. package/dist/components/Icons/Clock.js +7 -0
  97. package/dist/components/Icons/Clock.js.map +1 -0
  98. package/dist/components/Icons/CloudDownload.d.ts +1 -0
  99. package/dist/components/Icons/CloudDownload.js +7 -0
  100. package/dist/components/Icons/CloudDownload.js.map +1 -0
  101. package/dist/components/Icons/CloudUpload.d.ts +1 -0
  102. package/dist/components/Icons/CloudUpload.js +7 -0
  103. package/dist/components/Icons/CloudUpload.js.map +1 -0
  104. package/dist/components/Icons/Code.d.ts +1 -0
  105. package/dist/components/Icons/Code.js +7 -0
  106. package/dist/components/Icons/Code.js.map +1 -0
  107. package/dist/components/Icons/Copy.d.ts +1 -0
  108. package/dist/components/Icons/Copy.js +7 -0
  109. package/dist/components/Icons/Copy.js.map +1 -0
  110. package/dist/components/Icons/Crown.d.ts +1 -0
  111. package/dist/components/Icons/Crown.js +7 -0
  112. package/dist/components/Icons/Crown.js.map +1 -0
  113. package/dist/components/Icons/Database.d.ts +1 -0
  114. package/dist/components/Icons/Database.js +7 -0
  115. package/dist/components/Icons/Database.js.map +1 -0
  116. package/dist/components/Icons/Download.d.ts +1 -0
  117. package/dist/components/Icons/Download.js +7 -0
  118. package/dist/components/Icons/Download.js.map +1 -0
  119. package/dist/components/Icons/Eye.d.ts +1 -0
  120. package/dist/components/Icons/Eye.js +7 -0
  121. package/dist/components/Icons/Eye.js.map +1 -0
  122. package/dist/components/Icons/EyeOff.d.ts +1 -0
  123. package/dist/components/Icons/EyeOff.js +7 -0
  124. package/dist/components/Icons/EyeOff.js.map +1 -0
  125. package/dist/components/Icons/File.d.ts +1 -0
  126. package/dist/components/Icons/File.js +7 -0
  127. package/dist/components/Icons/File.js.map +1 -0
  128. package/dist/components/Icons/FileArchive.d.ts +1 -0
  129. package/dist/components/Icons/FileArchive.js +7 -0
  130. package/dist/components/Icons/FileArchive.js.map +1 -0
  131. package/dist/components/Icons/FileImage.d.ts +1 -0
  132. package/dist/components/Icons/FileImage.js +7 -0
  133. package/dist/components/Icons/FileImage.js.map +1 -0
  134. package/dist/components/Icons/FileSpreadsheet.d.ts +1 -0
  135. package/dist/components/Icons/FileSpreadsheet.js +7 -0
  136. package/dist/components/Icons/FileSpreadsheet.js.map +1 -0
  137. package/dist/components/Icons/FileText.d.ts +1 -0
  138. package/dist/components/Icons/FileText.js +7 -0
  139. package/dist/components/Icons/FileText.js.map +1 -0
  140. package/dist/components/Icons/Flag.d.ts +1 -0
  141. package/dist/components/Icons/Flag.js +7 -0
  142. package/dist/components/Icons/Flag.js.map +1 -0
  143. package/dist/components/Icons/Flame.d.ts +1 -0
  144. package/dist/components/Icons/Flame.js +7 -0
  145. package/dist/components/Icons/Flame.js.map +1 -0
  146. package/dist/components/Icons/Folder.d.ts +1 -0
  147. package/dist/components/Icons/Folder.js +7 -0
  148. package/dist/components/Icons/Folder.js.map +1 -0
  149. package/dist/components/Icons/FolderOpen.d.ts +1 -0
  150. package/dist/components/Icons/FolderOpen.js +7 -0
  151. package/dist/components/Icons/FolderOpen.js.map +1 -0
  152. package/dist/components/Icons/Hash.d.ts +1 -0
  153. package/dist/components/Icons/Hash.js +7 -0
  154. package/dist/components/Icons/Hash.js.map +1 -0
  155. package/dist/components/Icons/House.d.ts +1 -0
  156. package/dist/components/Icons/House.js +7 -0
  157. package/dist/components/Icons/House.js.map +1 -0
  158. package/dist/components/Icons/Import.d.ts +1 -0
  159. package/dist/components/Icons/Import.js +7 -0
  160. package/dist/components/Icons/Import.js.map +1 -0
  161. package/dist/components/Icons/Inbox.d.ts +1 -0
  162. package/dist/components/Icons/Inbox.js +7 -0
  163. package/dist/components/Icons/Inbox.js.map +1 -0
  164. package/dist/components/Icons/Info.d.ts +1 -0
  165. package/dist/components/Icons/Info.js +7 -0
  166. package/dist/components/Icons/Info.js.map +1 -0
  167. package/dist/components/Icons/LayoutDashboard.d.ts +1 -0
  168. package/dist/components/Icons/LayoutDashboard.js +7 -0
  169. package/dist/components/Icons/LayoutDashboard.js.map +1 -0
  170. package/dist/components/Icons/LayoutGrid.d.ts +1 -0
  171. package/dist/components/Icons/LayoutGrid.js +7 -0
  172. package/dist/components/Icons/LayoutGrid.js.map +1 -0
  173. package/dist/components/Icons/ListTodo.d.ts +1 -0
  174. package/dist/components/Icons/ListTodo.js +7 -0
  175. package/dist/components/Icons/ListTodo.js.map +1 -0
  176. package/dist/components/Icons/Loader2.d.ts +1 -0
  177. package/dist/components/Icons/Loader2.js +7 -0
  178. package/dist/components/Icons/Loader2.js.map +1 -0
  179. package/dist/components/Icons/Lock.d.ts +1 -0
  180. package/dist/components/Icons/Lock.js +7 -0
  181. package/dist/components/Icons/Lock.js.map +1 -0
  182. package/dist/components/Icons/LogOut.d.ts +1 -0
  183. package/dist/components/Icons/LogOut.js +7 -0
  184. package/dist/components/Icons/LogOut.js.map +1 -0
  185. package/dist/components/Icons/Maximize2.d.ts +1 -0
  186. package/dist/components/Icons/Maximize2.js +7 -0
  187. package/dist/components/Icons/Maximize2.js.map +1 -0
  188. package/dist/components/Icons/MessageCircle.d.ts +1 -0
  189. package/dist/components/Icons/MessageCircle.js +7 -0
  190. package/dist/components/Icons/MessageCircle.js.map +1 -0
  191. package/dist/components/Icons/MessageSquare.d.ts +1 -0
  192. package/dist/components/Icons/MessageSquare.js +7 -0
  193. package/dist/components/Icons/MessageSquare.js.map +1 -0
  194. package/dist/components/Icons/Minimize2.d.ts +1 -0
  195. package/dist/components/Icons/Minimize2.js +7 -0
  196. package/dist/components/Icons/Minimize2.js.map +1 -0
  197. package/dist/components/Icons/PanelLeftClose.d.ts +1 -0
  198. package/dist/components/Icons/PanelLeftClose.js +7 -0
  199. package/dist/components/Icons/PanelLeftClose.js.map +1 -0
  200. package/dist/components/Icons/PanelLeftOpen.d.ts +1 -0
  201. package/dist/components/Icons/PanelLeftOpen.js +7 -0
  202. package/dist/components/Icons/PanelLeftOpen.js.map +1 -0
  203. package/dist/components/Icons/Pause.d.ts +1 -0
  204. package/dist/components/Icons/Pause.js +7 -0
  205. package/dist/components/Icons/Pause.js.map +1 -0
  206. package/dist/components/Icons/Pencil.d.ts +1 -0
  207. package/dist/components/Icons/Pencil.js +7 -0
  208. package/dist/components/Icons/Pencil.js.map +1 -0
  209. package/dist/components/Icons/Plus.d.ts +1 -0
  210. package/dist/components/Icons/Plus.js +7 -0
  211. package/dist/components/Icons/Plus.js.map +1 -0
  212. package/dist/components/Icons/Presentation.d.ts +1 -0
  213. package/dist/components/Icons/Presentation.js +7 -0
  214. package/dist/components/Icons/Presentation.js.map +1 -0
  215. package/dist/components/Icons/RefreshCw.d.ts +1 -0
  216. package/dist/components/Icons/RefreshCw.js +7 -0
  217. package/dist/components/Icons/RefreshCw.js.map +1 -0
  218. package/dist/components/Icons/RotateCw.d.ts +1 -0
  219. package/dist/components/Icons/RotateCw.js +7 -0
  220. package/dist/components/Icons/RotateCw.js.map +1 -0
  221. package/dist/components/Icons/Send.d.ts +1 -0
  222. package/dist/components/Icons/Send.js +7 -0
  223. package/dist/components/Icons/Send.js.map +1 -0
  224. package/dist/components/Icons/Settings.d.ts +1 -0
  225. package/dist/components/Icons/Settings.js +7 -0
  226. package/dist/components/Icons/Settings.js.map +1 -0
  227. package/dist/components/Icons/Shield.d.ts +1 -0
  228. package/dist/components/Icons/Shield.js +7 -0
  229. package/dist/components/Icons/Shield.js.map +1 -0
  230. package/dist/components/Icons/ShieldCheck.d.ts +1 -0
  231. package/dist/components/Icons/ShieldCheck.js +7 -0
  232. package/dist/components/Icons/ShieldCheck.js.map +1 -0
  233. package/dist/components/Icons/SlidersHorizontal.d.ts +1 -0
  234. package/dist/components/Icons/SlidersHorizontal.js +7 -0
  235. package/dist/components/Icons/SlidersHorizontal.js.map +1 -0
  236. package/dist/components/Icons/Square.d.ts +1 -0
  237. package/dist/components/Icons/Square.js +7 -0
  238. package/dist/components/Icons/Square.js.map +1 -0
  239. package/dist/components/Icons/Star.d.ts +1 -0
  240. package/dist/components/Icons/Star.js +7 -0
  241. package/dist/components/Icons/Star.js.map +1 -0
  242. package/dist/components/Icons/ThumbsDown.d.ts +1 -0
  243. package/dist/components/Icons/ThumbsDown.js +7 -0
  244. package/dist/components/Icons/ThumbsDown.js.map +1 -0
  245. package/dist/components/Icons/ThumbsUp.d.ts +1 -0
  246. package/dist/components/Icons/ThumbsUp.js +7 -0
  247. package/dist/components/Icons/ThumbsUp.js.map +1 -0
  248. package/dist/components/Icons/Trash2.d.ts +1 -0
  249. package/dist/components/Icons/Trash2.js +7 -0
  250. package/dist/components/Icons/Trash2.js.map +1 -0
  251. package/dist/components/Icons/Trophy.d.ts +1 -0
  252. package/dist/components/Icons/Trophy.js +7 -0
  253. package/dist/components/Icons/Trophy.js.map +1 -0
  254. package/dist/components/Icons/Undo2.d.ts +1 -0
  255. package/dist/components/Icons/Undo2.js +7 -0
  256. package/dist/components/Icons/Undo2.js.map +1 -0
  257. package/dist/components/Icons/Upload.d.ts +1 -0
  258. package/dist/components/Icons/Upload.js +7 -0
  259. package/dist/components/Icons/Upload.js.map +1 -0
  260. package/dist/components/Icons/User.d.ts +1 -0
  261. package/dist/components/Icons/User.js +7 -0
  262. package/dist/components/Icons/User.js.map +1 -0
  263. package/dist/components/Icons/UserPlus.d.ts +1 -0
  264. package/dist/components/Icons/UserPlus.js +7 -0
  265. package/dist/components/Icons/UserPlus.js.map +1 -0
  266. package/dist/components/Icons/UserRoundCog.d.ts +1 -0
  267. package/dist/components/Icons/UserRoundCog.js +7 -0
  268. package/dist/components/Icons/UserRoundCog.js.map +1 -0
  269. package/dist/components/Icons/Users.d.ts +1 -0
  270. package/dist/components/Icons/Users.js +7 -0
  271. package/dist/components/Icons/Users.js.map +1 -0
  272. package/dist/components/Icons/X.d.ts +1 -0
  273. package/dist/components/Icons/X.js +7 -0
  274. package/dist/components/Icons/X.js.map +1 -0
  275. package/dist/components/Icons/createIcon.d.ts +9 -0
  276. package/dist/components/Icons/createIcon.js +32 -0
  277. package/dist/components/Icons/createIcon.js.map +1 -0
  278. package/dist/components/Icons/index.d.ts +80 -90
  279. package/dist/components/Icons/registry.d.ts +6 -0
  280. package/dist/components/Icons/registry.js +239 -0
  281. package/dist/components/Icons/registry.js.map +1 -0
  282. package/dist/components/InteractiveBlock/InteractiveBlock.js +6 -6
  283. package/dist/components/Layout/AgentAppShell/AgentAppShell.js +112 -91
  284. package/dist/components/Layout/AgentAppShell/AgentAppShell.js.map +1 -1
  285. package/dist/components/Layout/AgentAppShell/style.module.scss.js +20 -18
  286. package/dist/components/Layout/AgentAppShell/style.module.scss.js.map +1 -1
  287. package/dist/components/Layout/PageHeaderLayout/index.js +7 -7
  288. package/dist/components/Modal/Modal/index.js +8 -8
  289. package/dist/components/Modal/StepModal/index.js +9 -9
  290. package/dist/components/OrgTree/OrgTree.js +41 -39
  291. package/dist/components/OrgTree/OrgTree.js.map +1 -1
  292. package/dist/components/StateBar/StateBar.js +4 -4
  293. package/dist/components/Table/ColumnConfigPanel.js +13 -10
  294. package/dist/components/Table/ColumnConfigPanel.js.map +1 -1
  295. package/dist/components/Table/Table.js +7 -7
  296. package/dist/components/Tour/AppTour/index.js +10 -10
  297. package/dist/components/Upload/index.js +76 -72
  298. package/dist/components/Upload/index.js.map +1 -1
  299. package/dist/file.d.ts +5 -0
  300. package/dist/file.js +24 -0
  301. package/dist/file.js.map +1 -0
  302. package/dist/index.d.ts +3 -1
  303. package/dist/index.js +615 -537
  304. package/dist/index.js.map +1 -1
  305. package/dist/llm.d.ts +5 -0
  306. package/dist/llm.js +8 -0
  307. package/dist/llm.js.map +1 -0
  308. package/dist/marsun-components-core.css +1 -1
  309. package/dist/styles/global.css +1 -1
  310. package/package.json +15 -5
  311. package/dist/components/Icons/index.js +0 -268
  312. package/dist/components/Icons/index.js.map +0 -1
@@ -1,97 +1,101 @@
1
- import { jsx as t, jsxs as b } from "react/jsx-runtime";
2
- import { Plus as re, Inbox as te, Upload as le, File as oe, Trash2 as ae } from "../Icons/index.js";
3
- import { message as y, Upload as U, Image as ie, Button as B, Typography as J } from "antd";
1
+ import { jsx as e, jsxs as b } from "react/jsx-runtime";
2
+ import { message as y, Upload as U, Image as tr, Button as B, Typography as J } from "antd";
4
3
  import p from "react";
5
4
  import a from "./style.module.scss.js";
6
5
  import o from "classnames";
7
- import ue, { SEMANTIC_COLORS as se } from "../Tag/SemanticTag.js";
6
+ import { Plus as er } from "../Icons/Plus.js";
7
+ import { Inbox as lr } from "../Icons/Inbox.js";
8
+ import { Upload as or } from "../Icons/Upload.js";
9
+ import { File as ar } from "../Icons/File.js";
10
+ import ir, { SEMANTIC_COLORS as ur } from "../Tag/SemanticTag.js";
11
+ import { Trash2 as sr } from "../Icons/Trash2.js";
8
12
  const _ = (l) => l < 1024 * 1024 ? `${(l / 1024).toFixed(0)}KB` : l < 1024 ** 3 ? `${(l / 1024 / 1024).toFixed(0)}M` : `${(l / 1024 ** 3).toFixed(1)}G`;
9
- function ne(l, u, s) {
10
- const r = [];
13
+ function nr(l, u, s) {
14
+ const t = [];
11
15
  if (l) {
12
16
  const f = l.split(",").map((g) => g.trim().replace(/^\./, "")).filter(Boolean);
13
- f.length && r.push(`支持扩展名${f.join(",")}`);
17
+ f.length && t.push(`支持扩展名${f.join(",")}`);
14
18
  }
15
- return u && r.push(`单个文件大小不超过${_(u)}`), s && r.push(`最多上传${s}个附件`), r.length ? /* @__PURE__ */ t(J.Text, { type: "secondary", className: o("upload-item", a["upload-item"]), children: r.join(",") }) : null;
19
+ return u && t.push(`单个文件大小不超过${_(u)}`), s && t.push(`最多上传${s}个附件`), t.length ? /* @__PURE__ */ e(J.Text, { type: "secondary", className: o("upload-item", a["upload-item"]), children: t.join(",") }) : null;
16
20
  }
17
- function de(l) {
21
+ function dr(l) {
18
22
  const u = l.lastIndexOf(".");
19
23
  return u >= 0 ? l.slice(u + 1).toUpperCase() : "";
20
24
  }
21
- function pe(l) {
25
+ function pr(l) {
22
26
  return l.url ? l.url : l.thumbUrl ? l.thumbUrl : l.originFileObj ? URL.createObjectURL(l.originFileObj) : "";
23
27
  }
24
- const V = ({ fileList: l, onRemove: u, onPreview: s }) => l.length ? /* @__PURE__ */ t("div", { className: o("upload-link", a["upload-link"]), children: l.map((r) => {
28
+ const V = ({ fileList: l, onRemove: u, onPreview: s }) => l.length ? /* @__PURE__ */ e("div", { className: o("upload-link", a["upload-link"]), children: l.map((t) => {
25
29
  var g, w, N;
26
- const f = !!(r.url || r.thumbUrl || (w = (g = r.originFileObj) == null ? void 0 : g.type) != null && w.startsWith("image/"));
30
+ const f = !!(t.url || t.thumbUrl || (w = (g = t.originFileObj) == null ? void 0 : g.type) != null && w.startsWith("image/"));
27
31
  return /* @__PURE__ */ b(
28
32
  "div",
29
33
  {
30
34
  className: o(
31
35
  o("upload-file-row", a["upload-file-row"]),
32
- r.status === "error" && o("upload-file-row-error", a["upload-file-row-error"])
36
+ t.status === "error" && o("upload-file-row-error", a["upload-file-row-error"])
33
37
  ),
34
38
  children: [
35
39
  /* @__PURE__ */ b("div", { className: o("upload-label", a["upload-label"]), children: [
36
- r.thumbUrl || r.url && ((N = r.type) != null && N.startsWith("image/")) ? /* @__PURE__ */ t(
40
+ t.thumbUrl || t.url && ((N = t.type) != null && N.startsWith("image/")) ? /* @__PURE__ */ e(
37
41
  "button",
38
42
  {
39
43
  type: "button",
40
44
  className: o("upload-thumb-btn", a["upload-thumb-btn"]),
41
- onClick: () => s == null ? void 0 : s(r),
45
+ onClick: () => s == null ? void 0 : s(t),
42
46
  title: "预览",
43
- children: /* @__PURE__ */ t(
47
+ children: /* @__PURE__ */ e(
44
48
  "img",
45
49
  {
46
50
  className: o("upload-thumb", a["upload-thumb"]),
47
- src: r.thumbUrl || r.url,
48
- alt: r.name
51
+ src: t.thumbUrl || t.url,
52
+ alt: t.name
49
53
  }
50
54
  )
51
55
  }
52
- ) : /* @__PURE__ */ t(oe, { className: o("upload-value", a["upload-value"]) }),
53
- /* @__PURE__ */ t("span", { className: o("upload-meta", a["upload-meta"]), children: r.name }),
54
- /* @__PURE__ */ t(
55
- ue,
56
+ ) : /* @__PURE__ */ e(ar, { className: o("upload-value", a["upload-value"]) }),
57
+ /* @__PURE__ */ e("span", { className: o("upload-meta", a["upload-meta"]), children: t.name }),
58
+ /* @__PURE__ */ e(
59
+ ir,
56
60
  {
57
- color: se.INFO,
61
+ color: ur.INFO,
58
62
  className: o("upload-icon", a["upload-icon"]),
59
- children: de(r.name)
63
+ children: dr(t.name)
60
64
  }
61
65
  ),
62
- r.size ? /* @__PURE__ */ t(
66
+ t.size ? /* @__PURE__ */ e(
63
67
  J.Text,
64
68
  {
65
69
  type: "secondary",
66
70
  className: o("upload-title", a["upload-title"]),
67
- children: _(r.size)
71
+ children: _(t.size)
68
72
  }
69
73
  ) : null
70
74
  ] }),
71
75
  /* @__PURE__ */ b("div", { className: o("upload-row-actions", a["upload-row-actions"]), children: [
72
- f && s ? /* @__PURE__ */ t(B, { type: "link", size: "small", onClick: () => s(r), children: "预览" }) : null,
73
- /* @__PURE__ */ t(
76
+ f && s ? /* @__PURE__ */ e(B, { type: "link", size: "small", onClick: () => s(t), children: "预览" }) : null,
77
+ /* @__PURE__ */ e(
74
78
  B,
75
79
  {
76
80
  type: "text",
77
81
  danger: !0,
78
82
  size: "small",
79
- icon: /* @__PURE__ */ t(ae, {}),
80
- onClick: () => u(r.uid),
83
+ icon: /* @__PURE__ */ e(sr, {}),
84
+ onClick: () => u(t.uid),
81
85
  className: o("upload-desc", a["upload-desc"])
82
86
  }
83
87
  )
84
88
  ] })
85
89
  ]
86
90
  },
87
- r.uid
91
+ t.uid
88
92
  );
89
- }) }) : null, ce = p.forwardRef(
93
+ }) }) : null, cr = p.forwardRef(
90
94
  ({
91
95
  value: l,
92
96
  onChange: u,
93
97
  className: s,
94
- variant: r,
98
+ variant: t,
95
99
  listType: f = "text",
96
100
  size: g,
97
101
  children: w,
@@ -112,27 +116,27 @@ const V = ({ fileList: l, onRemove: u, onPreview: s }) => l.length ? /* @__PURE_
112
116
  url: "",
113
117
  title: ""
114
118
  }), k = p.useRef([]), n = l ?? Y, m = p.useCallback(
115
- (e) => {
116
- const i = typeof e == "function" ? e(n) : e;
119
+ (r) => {
120
+ const i = typeof r == "function" ? r(n) : r;
117
121
  u == null || u(i), Z(i), c == null || c(i);
118
122
  },
119
123
  [n, u, c]
120
124
  ), C = G ?? 500 * 1024 * 1024, A = Q ?? 3, $ = p.useCallback(
121
- (e) => j && !j(e) ? (y.error("无权限上传此文件"), U.LIST_IGNORE) : e.size > C ? (y.error(`文件超出 ${_(C)} 限制`), U.LIST_IGNORE) : !0,
125
+ (r) => j && !j(r) ? (y.error("无权限上传此文件"), U.LIST_IGNORE) : r.size > C ? (y.error(`文件超出 ${_(C)} 限制`), U.LIST_IGNORE) : !0,
122
126
  [C, j]
123
127
  ), D = p.useCallback(async () => {
124
128
  if (!(!L || !n.length)) {
125
129
  P(!0);
126
130
  try {
127
- const e = [...n], i = [];
128
- for (; e.length; ) {
129
- const d = e.shift();
131
+ const r = [...n], i = [];
132
+ for (; r.length; ) {
133
+ const d = r.shift();
130
134
  if (!(d != null && d.originFileObj)) continue;
131
- const ee = d.originFileObj;
135
+ const rr = d.originFileObj;
132
136
  i.push(
133
137
  new Promise((H) => {
134
138
  L({
135
- file: ee,
139
+ file: rr,
136
140
  onSuccess: (K) => {
137
141
  m(
138
142
  (T) => T.map(
@@ -159,22 +163,22 @@ const V = ({ fileList: l, onRemove: u, onPreview: s }) => l.length ? /* @__PURE_
159
163
  D,
160
164
  M
161
165
  ]);
162
- const E = p.useCallback((e) => {
163
- const i = pe(e);
166
+ const E = p.useCallback((r) => {
167
+ const i = pr(r);
164
168
  if (!i) {
165
169
  y.warning("暂无法预览该文件");
166
170
  return;
167
171
  }
168
- i.startsWith("blob:") && k.current.push(i), W({ open: !0, url: i, title: e.name || "预览" });
172
+ i.startsWith("blob:") && k.current.push(i), W({ open: !0, url: i, title: r.name || "预览" });
169
173
  }, []);
170
174
  p.useEffect(
171
175
  () => () => {
172
- k.current.forEach((e) => URL.revokeObjectURL(e)), k.current = [];
176
+ k.current.forEach((r) => URL.revokeObjectURL(r)), k.current = [];
173
177
  },
174
178
  []
175
179
  );
176
- const v = (N == null ? void 0 : N()) ?? ne(R, G, x), S = !x || n.length < x, z = /* @__PURE__ */ t(
177
- ie,
180
+ const v = (N == null ? void 0 : N()) ?? nr(R, G, x), S = !x || n.length < x, z = /* @__PURE__ */ e(
181
+ tr,
178
182
  {
179
183
  alt: F.title,
180
184
  style: { display: "none" },
@@ -182,7 +186,7 @@ const V = ({ fileList: l, onRemove: u, onPreview: s }) => l.length ? /* @__PURE_
182
186
  preview: {
183
187
  visible: F.open,
184
188
  src: F.url,
185
- onVisibleChange: (e) => W((i) => ({ ...i, open: e }))
189
+ onVisibleChange: (r) => W((i) => ({ ...i, open: r }))
186
190
  }
187
191
  }
188
192
  );
@@ -191,27 +195,27 @@ const V = ({ fileList: l, onRemove: u, onPreview: s }) => l.length ? /* @__PURE_
191
195
  {
192
196
  className: o("upload-picture-root", a["upload-picture-root"], s),
193
197
  children: [
194
- /* @__PURE__ */ t(
198
+ /* @__PURE__ */ e(
195
199
  U,
196
200
  {
197
201
  listType: "picture-card",
198
202
  fileList: n,
199
203
  beforeUpload: $,
200
- onChange: (e) => m(e.fileList),
204
+ onChange: (r) => m(r.fileList),
201
205
  onPreview: E,
202
206
  multiple: I,
203
207
  directory: O,
204
208
  accept: R,
205
209
  showUploadList: { showPreviewIcon: !0, showRemoveIcon: !0 },
206
- customRequest: ({ onSuccess: e }) => e == null ? void 0 : e({}),
210
+ customRequest: ({ onSuccess: r }) => r == null ? void 0 : r({}),
207
211
  className: o("upload-picture-card", a["upload-picture-card"]),
208
212
  children: S ? /* @__PURE__ */ b(
209
213
  "div",
210
214
  {
211
215
  className: o("upload-picture-trigger", a["upload-picture-trigger"]),
212
216
  children: [
213
- /* @__PURE__ */ t(re, { size: 20 }),
214
- /* @__PURE__ */ t(
217
+ /* @__PURE__ */ e(er, { size: 20 }),
218
+ /* @__PURE__ */ e(
215
219
  "div",
216
220
  {
217
221
  className: o(
@@ -226,67 +230,67 @@ const V = ({ fileList: l, onRemove: u, onPreview: s }) => l.length ? /* @__PURE_
226
230
  ) : null
227
231
  }
228
232
  ),
229
- v ? /* @__PURE__ */ t("div", { className: o("upload-list", a["upload-list"]), children: v }) : null,
233
+ v ? /* @__PURE__ */ e("div", { className: o("upload-list", a["upload-list"]), children: v }) : null,
230
234
  z
231
235
  ]
232
236
  }
233
- ) : r === "panel" ? /* @__PURE__ */ b("div", { className: s, children: [
237
+ ) : t === "panel" ? /* @__PURE__ */ b("div", { className: s, children: [
234
238
  /* @__PURE__ */ b(
235
239
  U.Dragger,
236
240
  {
237
241
  fileList: n,
238
242
  beforeUpload: $,
239
- onChange: (e) => m(e.fileList),
243
+ onChange: (r) => m(r.fileList),
240
244
  multiple: I,
241
245
  directory: O,
242
246
  accept: R,
243
247
  showUploadList: !1,
244
- customRequest: ({ onSuccess: e }) => e == null ? void 0 : e({}),
248
+ customRequest: ({ onSuccess: r }) => r == null ? void 0 : r({}),
245
249
  children: [
246
- /* @__PURE__ */ t("p", { className: o("upload-drag-icon", a["upload-drag-icon"]), children: /* @__PURE__ */ t(te, {}) }),
247
- /* @__PURE__ */ t("p", { className: "ant-upload-text", children: "点击或拖拽文件到此区域上传" }),
248
- /* @__PURE__ */ t("p", { children: v })
250
+ /* @__PURE__ */ e("p", { className: o("upload-drag-icon", a["upload-drag-icon"]), children: /* @__PURE__ */ e(lr, {}) }),
251
+ /* @__PURE__ */ e("p", { className: "ant-upload-text", children: "点击或拖拽文件到此区域上传" }),
252
+ /* @__PURE__ */ e("p", { children: v })
249
253
  ]
250
254
  }
251
255
  ),
252
- q && /* @__PURE__ */ t(
256
+ q && /* @__PURE__ */ e(
253
257
  V,
254
258
  {
255
259
  fileList: n,
256
- onRemove: (e) => m((i) => i.filter((d) => d.uid !== e)),
260
+ onRemove: (r) => m((i) => i.filter((d) => d.uid !== r)),
257
261
  onPreview: E
258
262
  }
259
263
  ),
260
264
  z
261
265
  ] }) : /* @__PURE__ */ b("div", { className: s, children: [
262
- /* @__PURE__ */ t(
266
+ /* @__PURE__ */ e(
263
267
  U,
264
268
  {
265
269
  fileList: n,
266
270
  beforeUpload: $,
267
- onChange: (e) => m(e.fileList),
271
+ onChange: (r) => m(r.fileList),
268
272
  multiple: I,
269
273
  directory: O,
270
274
  accept: R,
271
275
  showUploadList: !1,
272
- customRequest: ({ onSuccess: e }) => e == null ? void 0 : e({}),
273
- children: w ?? /* @__PURE__ */ t(
276
+ customRequest: ({ onSuccess: r }) => r == null ? void 0 : r({}),
277
+ children: w ?? /* @__PURE__ */ e(
274
278
  B,
275
279
  {
276
280
  size: g,
277
- icon: /* @__PURE__ */ t(le, {}),
281
+ icon: /* @__PURE__ */ e(or, {}),
278
282
  className: o("upload-toolbar", a["upload-toolbar"]),
279
283
  children: "点击上传"
280
284
  }
281
285
  )
282
286
  }
283
287
  ),
284
- /* @__PURE__ */ t("div", { className: o("upload-list", a["upload-list"]), children: v }),
285
- q && /* @__PURE__ */ t(
288
+ /* @__PURE__ */ e("div", { className: o("upload-list", a["upload-list"]), children: v }),
289
+ q && /* @__PURE__ */ e(
286
290
  V,
287
291
  {
288
292
  fileList: n,
289
- onRemove: (e) => m((i) => i.filter((d) => d.uid !== e)),
293
+ onRemove: (r) => m((i) => i.filter((d) => d.uid !== r)),
290
294
  onPreview: E
291
295
  }
292
296
  ),
@@ -294,8 +298,8 @@ const V = ({ fileList: l, onRemove: u, onPreview: s }) => l.length ? /* @__PURE_
294
298
  ] });
295
299
  }
296
300
  );
297
- ce.displayName = "CommonUpload";
301
+ cr.displayName = "CommonUpload";
298
302
  export {
299
- ce as default
303
+ cr as default
300
304
  };
301
305
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/Upload/index.tsx"],"sourcesContent":["import { Trash2, File, Inbox, Plus, Upload as UploadIcon } from '@/components/Icons';\nimport { SEMANTIC_COLORS, SemanticTag } from '@/components/Tag';\nimport { Button, Image, message, Typography, Upload } from 'antd';\nimport type { UploadFile } from 'antd/es/upload/interface';\nimport React from 'react';\nimport styles from './style.module.scss';\nimport classNames from 'classnames';\n\n/* ---------- types ---------- */\n\n/** 上传变体 */\nexport type UploadVariant = 'panel' | 'button';\n\n/** 已选文件列表样式:text=行列表;picture-card=图片卡片(含预览) */\nexport type UploadListType = 'text' | 'picture-card';\n\nexport interface CommonUploadProps {\n /* ---- antd Form.Item 兼容属性 ---- */\n value?: UploadFile[];\n onChange?: (value: UploadFile[]) => void;\n\n /* ---- 容器/样式 ---- */\n className?: string;\n\n /* ---- 上传配置 ---- */\n /** 单文件大小限制(字节),默认 500MB */\n fileSize?: number;\n /** 最大上传数量 */\n maxLength?: number;\n multiple?: boolean;\n /** 目录上传模式(webkitdirectory),选中整个文件夹并保留 webkitRelativePath */\n directory?: boolean;\n size?: 'small' | 'middle' | 'large';\n accept?: string;\n\n /* ---- UI 变体 ---- */\n /** panel = 拖拽面板(Dragger 样式),button = 按钮(默认) */\n variant?: UploadVariant;\n /** 列表展现;图片场景用 picture-card(预览+缩略图) */\n listType?: UploadListType;\n children?: React.ReactNode;\n renderTips?: () => React.ReactNode;\n\n /* ---- 文件列表展示 ---- */\n /** 是否展示已上传文件列表,默认 true(tips 下方) */\n showFileList?: boolean;\n\n /* ---- 回调 ---- */\n onSave?: (fileList: UploadFile[]) => void;\n ossUpload?: boolean;\n onUpload?: (options: {\n file: File;\n onSuccess: (url?: string) => void;\n onError: (err: Error) => void;\n }) => Promise<void> | void;\n getPermission?: (file: File) => boolean;\n concurrentCount?: number;\n}\n\nexport type CommonUploadRef = {\n upload: () => void;\n uploading: boolean;\n};\n\n/* ---------- utils ---------- */\n\nconst formatSize = (bytes: number): string => {\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(0)}KB`;\n if (bytes < 1024 ** 3) return `${(bytes / 1024 / 1024).toFixed(0)}M`;\n return `${(bytes / 1024 ** 3).toFixed(1)}G`;\n};\n\nfunction buildTips(accept?: string, fileSize?: number, maxLength?: number): React.ReactNode {\n const parts: string[] = [];\n if (accept) {\n const exts = accept\n .split(',')\n .map((s) => s.trim().replace(/^\\./, ''))\n .filter(Boolean);\n if (exts.length) parts.push(`支持扩展名${exts.join(',')}`);\n }\n if (fileSize) parts.push(`单个文件大小不超过${formatSize(fileSize)}`);\n if (maxLength) parts.push(`最多上传${maxLength}个附件`);\n return parts.length ? (\n <Typography.Text type=\"secondary\" className={classNames('upload-item', styles['upload-item'])}>\n {parts.join(',')}\n </Typography.Text>\n ) : null;\n}\n\nfunction getExt(filename: string): string {\n const idx = filename.lastIndexOf('.');\n return idx >= 0 ? filename.slice(idx + 1).toUpperCase() : '';\n}\n\nfunction resolvePreviewUrl(file: UploadFile): string {\n if (file.url) return file.url;\n if (file.thumbUrl) return file.thumbUrl;\n if (file.originFileObj) return URL.createObjectURL(file.originFileObj);\n return '';\n}\n\n/* ---------- 子组件:文本行列表 ---------- */\n\ninterface UploadedFilesProps {\n fileList: UploadFile[];\n onRemove: (uid: string) => void;\n onPreview?: (file: UploadFile) => void;\n}\n\nconst UploadedFiles: React.FC<UploadedFilesProps> = ({ fileList, onRemove, onPreview }) => {\n if (!fileList.length) return null;\n\n return (\n <div className={classNames('upload-link', styles['upload-link'])}>\n {fileList.map((file) => {\n const previewable = Boolean(\n file.url || file.thumbUrl || file.originFileObj?.type?.startsWith('image/'),\n );\n return (\n <div\n key={file.uid}\n className={classNames(\n classNames('upload-file-row', styles['upload-file-row']),\n file.status === 'error' &&\n classNames('upload-file-row-error', styles['upload-file-row-error']),\n )}\n >\n <div className={classNames('upload-label', styles['upload-label'])}>\n {file.thumbUrl || (file.url && file.type?.startsWith('image/')) ? (\n <button\n type=\"button\"\n className={classNames('upload-thumb-btn', styles['upload-thumb-btn'])}\n onClick={() => onPreview?.(file)}\n title=\"预览\"\n >\n <img\n className={classNames('upload-thumb', styles['upload-thumb'])}\n src={file.thumbUrl || file.url}\n alt={file.name}\n />\n </button>\n ) : (\n <File className={classNames('upload-value', styles['upload-value'])} />\n )}\n <span className={classNames('upload-meta', styles['upload-meta'])}>{file.name}</span>\n <SemanticTag\n color={SEMANTIC_COLORS.INFO}\n className={classNames('upload-icon', styles['upload-icon'])}\n >\n {getExt(file.name)}\n </SemanticTag>\n {file.size ? (\n <Typography.Text\n type=\"secondary\"\n className={classNames('upload-title', styles['upload-title'])}\n >\n {formatSize(file.size)}\n </Typography.Text>\n ) : null}\n </div>\n <div className={classNames('upload-row-actions', styles['upload-row-actions'])}>\n {previewable && onPreview ? (\n <Button type=\"link\" size=\"small\" onClick={() => onPreview(file)}>\n 预览\n </Button>\n ) : null}\n <Button\n type=\"text\"\n danger\n size=\"small\"\n icon={<Trash2 />}\n onClick={() => onRemove(file.uid)}\n className={classNames('upload-desc', styles['upload-desc'])}\n />\n </div>\n </div>\n );\n })}\n </div>\n );\n};\n\n/* ---------- 主组件 ---------- */\n\n/**\n * CommonUpload — 通用上传组件\n *\n * - `listType=\"text\"`(默认):行列表;图片有缩略图时可「预览」\n * - `listType=\"picture-card\"`:antd 图片卡片(内置预览/删除图标)\n */\nconst CommonUpload = React.forwardRef<CommonUploadRef, CommonUploadProps>(\n (\n {\n value,\n onChange,\n className,\n variant,\n listType = 'text',\n size,\n children,\n renderTips,\n showFileList = true,\n fileSize,\n maxLength,\n multiple,\n directory,\n accept,\n onUpload,\n onSave,\n getPermission,\n concurrentCount,\n },\n ref,\n ) => {\n const [innerFileList, setInnerFileList] = React.useState<UploadFile[]>([]);\n const [uploading, setUploading] = React.useState(false);\n const [preview, setPreview] = React.useState<{ open: boolean; url: string; title: string }>({\n open: false,\n url: '',\n title: '',\n });\n const blobUrlsRef = React.useRef<string[]>([]);\n\n // 受控模式:value 优先;非受控:内部状态\n const fileList = value ?? innerFileList;\n const setFileList = React.useCallback(\n (next: UploadFile[] | ((prev: UploadFile[]) => UploadFile[])) => {\n const resolved = typeof next === 'function' ? next(fileList) : next;\n onChange?.(resolved);\n setInnerFileList(resolved);\n onSave?.(resolved);\n },\n [fileList, onChange, onSave],\n );\n\n const effectiveFileSize = fileSize ?? 500 * 1024 * 1024;\n const concurrent = concurrentCount ?? 3;\n\n const beforeUploadFn = React.useCallback(\n (file: File) => {\n if (getPermission && !getPermission(file)) {\n message.error('无权限上传此文件');\n return Upload.LIST_IGNORE;\n }\n if (file.size > effectiveFileSize) {\n message.error(`文件超出 ${formatSize(effectiveFileSize)} 限制`);\n return Upload.LIST_IGNORE;\n }\n return true;\n },\n [effectiveFileSize, getPermission],\n );\n\n const triggerUpload = React.useCallback(async () => {\n if (!onUpload || !fileList.length) return;\n setUploading(true);\n try {\n const pending = [...fileList];\n const pool: Promise<void>[] = [];\n while (pending.length) {\n const item = pending.shift();\n if (!item?.originFileObj) continue;\n const rawFile = item.originFileObj;\n pool.push(\n new Promise<void>((resolve) => {\n onUpload({\n file: rawFile,\n onSuccess: (url?) => {\n setFileList((prev) =>\n prev.map((f) =>\n f.uid === item.uid ? { ...f, status: 'done' as const, url: url ?? f.url } : f,\n ),\n );\n resolve();\n },\n onError: (_err: Error) => {\n message.error(`${item.name} 上传失败`);\n setFileList((prev) =>\n prev.map((f) => (f.uid === item.uid ? { ...f, status: 'error' as const } : f)),\n );\n resolve();\n },\n });\n }),\n );\n if (pool.length >= concurrent) await Promise.race(pool);\n }\n await Promise.allSettled(pool);\n onSave?.(fileList);\n } finally {\n setUploading(false);\n }\n }, [fileList, onUpload, concurrent, onSave, setFileList]);\n\n React.useImperativeHandle(ref, () => ({ upload: triggerUpload, uploading }), [\n triggerUpload,\n uploading,\n ]);\n\n const openPreview = React.useCallback((file: UploadFile) => {\n const url = resolvePreviewUrl(file);\n if (!url) {\n message.warning('暂无法预览该文件');\n return;\n }\n if (url.startsWith('blob:')) {\n blobUrlsRef.current.push(url);\n }\n setPreview({ open: true, url, title: file.name || '预览' });\n }, []);\n\n React.useEffect(\n () => () => {\n blobUrlsRef.current.forEach((u) => URL.revokeObjectURL(u));\n blobUrlsRef.current = [];\n },\n [],\n );\n\n const tips = renderTips?.() ?? buildTips(accept, fileSize, maxLength);\n const canAddMore = !maxLength || fileList.length < maxLength;\n\n const previewNode = (\n <Image\n alt={preview.title}\n style={{ display: 'none' }}\n src={preview.url}\n preview={{\n visible: preview.open,\n src: preview.url,\n onVisibleChange: (visible) => setPreview((prev) => ({ ...prev, open: visible })),\n }}\n />\n );\n\n if (listType === 'picture-card') {\n return (\n <div\n className={classNames('upload-picture-root', styles['upload-picture-root'], className)}\n >\n <Upload\n listType=\"picture-card\"\n fileList={fileList}\n beforeUpload={beforeUploadFn}\n onChange={(info) => setFileList(info.fileList)}\n onPreview={openPreview}\n multiple={multiple}\n directory={directory}\n accept={accept}\n showUploadList={{ showPreviewIcon: true, showRemoveIcon: true }}\n customRequest={({ onSuccess }) => onSuccess?.({})}\n className={classNames('upload-picture-card', styles['upload-picture-card'])}\n >\n {canAddMore ? (\n <div\n className={classNames('upload-picture-trigger', styles['upload-picture-trigger'])}\n >\n <Plus size={20} />\n <div\n className={classNames(\n 'upload-picture-trigger-text',\n styles['upload-picture-trigger-text'],\n )}\n >\n 上传图片\n </div>\n </div>\n ) : null}\n </Upload>\n {tips ? (\n <div className={classNames('upload-list', styles['upload-list'])}>{tips}</div>\n ) : null}\n {previewNode}\n </div>\n );\n }\n\n if (variant === 'panel') {\n return (\n <div className={className}>\n <Upload.Dragger\n fileList={fileList}\n beforeUpload={beforeUploadFn}\n onChange={(info) => setFileList(info.fileList)}\n multiple={multiple}\n directory={directory}\n accept={accept}\n showUploadList={false}\n customRequest={({ onSuccess }) => onSuccess?.({})}\n >\n <p className={classNames('upload-drag-icon', styles['upload-drag-icon'])}>\n <Inbox />\n </p>\n <p className=\"ant-upload-text\">点击或拖拽文件到此区域上传</p>\n <p>{tips}</p>\n </Upload.Dragger>\n {showFileList && (\n <UploadedFiles\n fileList={fileList}\n onRemove={(uid) => setFileList((prev) => prev.filter((f) => f.uid !== uid))}\n onPreview={openPreview}\n />\n )}\n {previewNode}\n </div>\n );\n }\n\n // button mode (default) + text list\n return (\n <div className={className}>\n <Upload\n fileList={fileList}\n beforeUpload={beforeUploadFn}\n onChange={(info) => setFileList(info.fileList)}\n multiple={multiple}\n directory={directory}\n accept={accept}\n showUploadList={false}\n customRequest={({ onSuccess }) => onSuccess?.({})}\n >\n {children ?? (\n <Button\n size={size}\n icon={<UploadIcon />}\n className={classNames('upload-toolbar', styles['upload-toolbar'])}\n >\n 点击上传\n </Button>\n )}\n </Upload>\n <div className={classNames('upload-list', styles['upload-list'])}>{tips}</div>\n {showFileList && (\n <UploadedFiles\n fileList={fileList}\n onRemove={(uid) => setFileList((prev) => prev.filter((f) => f.uid !== uid))}\n onPreview={openPreview}\n />\n )}\n {previewNode}\n </div>\n );\n },\n);\n\nCommonUpload.displayName = 'CommonUpload';\n\nexport default CommonUpload;\n"],"names":["formatSize","bytes","buildTips","accept","fileSize","maxLength","parts","exts","s","jsx","Typography","classNames","styles","getExt","filename","idx","resolvePreviewUrl","file","UploadedFiles","fileList","onRemove","onPreview","previewable","_b","_a","jsxs","_c","File","SemanticTag","SEMANTIC_COLORS","Button","Trash2","CommonUpload","React","value","onChange","className","variant","listType","size","children","renderTips","showFileList","multiple","directory","onUpload","onSave","getPermission","concurrentCount","ref","innerFileList","setInnerFileList","uploading","setUploading","preview","setPreview","blobUrlsRef","setFileList","next","resolved","effectiveFileSize","concurrent","beforeUploadFn","message","Upload","triggerUpload","pending","pool","item","rawFile","resolve","url","prev","f","_err","openPreview","u","tips","canAddMore","previewNode","Image","visible","info","onSuccess","Plus","Inbox","uid","UploadIcon"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/Upload/index.tsx"],"sourcesContent":["import { Trash2, File, Inbox, Plus, Upload as UploadIcon } from '@/components/Icons';\nimport { SEMANTIC_COLORS, SemanticTag } from '@/components/Tag';\nimport { Button, Image, message, Typography, Upload } from 'antd';\nimport type { UploadFile } from 'antd/es/upload/interface';\nimport React from 'react';\nimport styles from './style.module.scss';\nimport classNames from 'classnames';\n\n/* ---------- types ---------- */\n\n/** 上传变体 */\nexport type UploadVariant = 'panel' | 'button';\n\n/** 已选文件列表样式:text=行列表;picture-card=图片卡片(含预览) */\nexport type UploadListType = 'text' | 'picture-card';\n\nexport interface CommonUploadProps {\n /* ---- antd Form.Item 兼容属性 ---- */\n value?: UploadFile[];\n onChange?: (value: UploadFile[]) => void;\n\n /* ---- 容器/样式 ---- */\n className?: string;\n\n /* ---- 上传配置 ---- */\n /** 单文件大小限制(字节),默认 500MB */\n fileSize?: number;\n /** 最大上传数量 */\n maxLength?: number;\n multiple?: boolean;\n /** 目录上传模式(webkitdirectory),选中整个文件夹并保留 webkitRelativePath */\n directory?: boolean;\n size?: 'small' | 'middle' | 'large';\n accept?: string;\n\n /* ---- UI 变体 ---- */\n /** panel = 拖拽面板(Dragger 样式),button = 按钮(默认) */\n variant?: UploadVariant;\n /** 列表展现;图片场景用 picture-card(预览+缩略图) */\n listType?: UploadListType;\n children?: React.ReactNode;\n renderTips?: () => React.ReactNode;\n\n /* ---- 文件列表展示 ---- */\n /** 是否展示已上传文件列表,默认 true(tips 下方) */\n showFileList?: boolean;\n\n /* ---- 回调 ---- */\n onSave?: (fileList: UploadFile[]) => void;\n ossUpload?: boolean;\n onUpload?: (options: {\n file: File;\n onSuccess: (url?: string) => void;\n onError: (err: Error) => void;\n }) => Promise<void> | void;\n getPermission?: (file: File) => boolean;\n concurrentCount?: number;\n}\n\nexport type CommonUploadRef = {\n upload: () => void;\n uploading: boolean;\n};\n\n/* ---------- utils ---------- */\n\nconst formatSize = (bytes: number): string => {\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(0)}KB`;\n if (bytes < 1024 ** 3) return `${(bytes / 1024 / 1024).toFixed(0)}M`;\n return `${(bytes / 1024 ** 3).toFixed(1)}G`;\n};\n\nfunction buildTips(accept?: string, fileSize?: number, maxLength?: number): React.ReactNode {\n const parts: string[] = [];\n if (accept) {\n const exts = accept\n .split(',')\n .map((s) => s.trim().replace(/^\\./, ''))\n .filter(Boolean);\n if (exts.length) parts.push(`支持扩展名${exts.join(',')}`);\n }\n if (fileSize) parts.push(`单个文件大小不超过${formatSize(fileSize)}`);\n if (maxLength) parts.push(`最多上传${maxLength}个附件`);\n return parts.length ? (\n <Typography.Text type=\"secondary\" className={classNames('upload-item', styles['upload-item'])}>\n {parts.join(',')}\n </Typography.Text>\n ) : null;\n}\n\nfunction getExt(filename: string): string {\n const idx = filename.lastIndexOf('.');\n return idx >= 0 ? filename.slice(idx + 1).toUpperCase() : '';\n}\n\nfunction resolvePreviewUrl(file: UploadFile): string {\n if (file.url) return file.url;\n if (file.thumbUrl) return file.thumbUrl;\n if (file.originFileObj) return URL.createObjectURL(file.originFileObj);\n return '';\n}\n\n/* ---------- 子组件:文本行列表 ---------- */\n\ninterface UploadedFilesProps {\n fileList: UploadFile[];\n onRemove: (uid: string) => void;\n onPreview?: (file: UploadFile) => void;\n}\n\nconst UploadedFiles: React.FC<UploadedFilesProps> = ({ fileList, onRemove, onPreview }) => {\n if (!fileList.length) return null;\n\n return (\n <div className={classNames('upload-link', styles['upload-link'])}>\n {fileList.map((file) => {\n const previewable = Boolean(\n file.url || file.thumbUrl || file.originFileObj?.type?.startsWith('image/'),\n );\n return (\n <div\n key={file.uid}\n className={classNames(\n classNames('upload-file-row', styles['upload-file-row']),\n file.status === 'error' &&\n classNames('upload-file-row-error', styles['upload-file-row-error']),\n )}\n >\n <div className={classNames('upload-label', styles['upload-label'])}>\n {file.thumbUrl || (file.url && file.type?.startsWith('image/')) ? (\n <button\n type=\"button\"\n className={classNames('upload-thumb-btn', styles['upload-thumb-btn'])}\n onClick={() => onPreview?.(file)}\n title=\"预览\"\n >\n <img\n className={classNames('upload-thumb', styles['upload-thumb'])}\n src={file.thumbUrl || file.url}\n alt={file.name}\n />\n </button>\n ) : (\n <File className={classNames('upload-value', styles['upload-value'])} />\n )}\n <span className={classNames('upload-meta', styles['upload-meta'])}>{file.name}</span>\n <SemanticTag\n color={SEMANTIC_COLORS.INFO}\n className={classNames('upload-icon', styles['upload-icon'])}\n >\n {getExt(file.name)}\n </SemanticTag>\n {file.size ? (\n <Typography.Text\n type=\"secondary\"\n className={classNames('upload-title', styles['upload-title'])}\n >\n {formatSize(file.size)}\n </Typography.Text>\n ) : null}\n </div>\n <div className={classNames('upload-row-actions', styles['upload-row-actions'])}>\n {previewable && onPreview ? (\n <Button type=\"link\" size=\"small\" onClick={() => onPreview(file)}>\n 预览\n </Button>\n ) : null}\n <Button\n type=\"text\"\n danger\n size=\"small\"\n icon={<Trash2 />}\n onClick={() => onRemove(file.uid)}\n className={classNames('upload-desc', styles['upload-desc'])}\n />\n </div>\n </div>\n );\n })}\n </div>\n );\n};\n\n/* ---------- 主组件 ---------- */\n\n/**\n * CommonUpload — 通用上传组件\n *\n * - `listType=\"text\"`(默认):行列表;图片有缩略图时可「预览」\n * - `listType=\"picture-card\"`:antd 图片卡片(内置预览/删除图标)\n */\nconst CommonUpload = React.forwardRef<CommonUploadRef, CommonUploadProps>(\n (\n {\n value,\n onChange,\n className,\n variant,\n listType = 'text',\n size,\n children,\n renderTips,\n showFileList = true,\n fileSize,\n maxLength,\n multiple,\n directory,\n accept,\n onUpload,\n onSave,\n getPermission,\n concurrentCount,\n },\n ref,\n ) => {\n const [innerFileList, setInnerFileList] = React.useState<UploadFile[]>([]);\n const [uploading, setUploading] = React.useState(false);\n const [preview, setPreview] = React.useState<{ open: boolean; url: string; title: string }>({\n open: false,\n url: '',\n title: '',\n });\n const blobUrlsRef = React.useRef<string[]>([]);\n\n // 受控模式:value 优先;非受控:内部状态\n const fileList = value ?? innerFileList;\n const setFileList = React.useCallback(\n (next: UploadFile[] | ((prev: UploadFile[]) => UploadFile[])) => {\n const resolved = typeof next === 'function' ? next(fileList) : next;\n onChange?.(resolved);\n setInnerFileList(resolved);\n onSave?.(resolved);\n },\n [fileList, onChange, onSave],\n );\n\n const effectiveFileSize = fileSize ?? 500 * 1024 * 1024;\n const concurrent = concurrentCount ?? 3;\n\n const beforeUploadFn = React.useCallback(\n (file: File) => {\n if (getPermission && !getPermission(file)) {\n message.error('无权限上传此文件');\n return Upload.LIST_IGNORE;\n }\n if (file.size > effectiveFileSize) {\n message.error(`文件超出 ${formatSize(effectiveFileSize)} 限制`);\n return Upload.LIST_IGNORE;\n }\n return true;\n },\n [effectiveFileSize, getPermission],\n );\n\n const triggerUpload = React.useCallback(async () => {\n if (!onUpload || !fileList.length) return;\n setUploading(true);\n try {\n const pending = [...fileList];\n const pool: Promise<void>[] = [];\n while (pending.length) {\n const item = pending.shift();\n if (!item?.originFileObj) continue;\n const rawFile = item.originFileObj;\n pool.push(\n new Promise<void>((resolve) => {\n onUpload({\n file: rawFile,\n onSuccess: (url?) => {\n setFileList((prev) =>\n prev.map((f) =>\n f.uid === item.uid ? { ...f, status: 'done' as const, url: url ?? f.url } : f,\n ),\n );\n resolve();\n },\n onError: (_err: Error) => {\n message.error(`${item.name} 上传失败`);\n setFileList((prev) =>\n prev.map((f) => (f.uid === item.uid ? { ...f, status: 'error' as const } : f)),\n );\n resolve();\n },\n });\n }),\n );\n if (pool.length >= concurrent) await Promise.race(pool);\n }\n await Promise.allSettled(pool);\n onSave?.(fileList);\n } finally {\n setUploading(false);\n }\n }, [fileList, onUpload, concurrent, onSave, setFileList]);\n\n React.useImperativeHandle(ref, () => ({ upload: triggerUpload, uploading }), [\n triggerUpload,\n uploading,\n ]);\n\n const openPreview = React.useCallback((file: UploadFile) => {\n const url = resolvePreviewUrl(file);\n if (!url) {\n message.warning('暂无法预览该文件');\n return;\n }\n if (url.startsWith('blob:')) {\n blobUrlsRef.current.push(url);\n }\n setPreview({ open: true, url, title: file.name || '预览' });\n }, []);\n\n React.useEffect(\n () => () => {\n blobUrlsRef.current.forEach((u) => URL.revokeObjectURL(u));\n blobUrlsRef.current = [];\n },\n [],\n );\n\n const tips = renderTips?.() ?? buildTips(accept, fileSize, maxLength);\n const canAddMore = !maxLength || fileList.length < maxLength;\n\n const previewNode = (\n <Image\n alt={preview.title}\n style={{ display: 'none' }}\n src={preview.url}\n preview={{\n visible: preview.open,\n src: preview.url,\n onVisibleChange: (visible) => setPreview((prev) => ({ ...prev, open: visible })),\n }}\n />\n );\n\n if (listType === 'picture-card') {\n return (\n <div\n className={classNames('upload-picture-root', styles['upload-picture-root'], className)}\n >\n <Upload\n listType=\"picture-card\"\n fileList={fileList}\n beforeUpload={beforeUploadFn}\n onChange={(info) => setFileList(info.fileList)}\n onPreview={openPreview}\n multiple={multiple}\n directory={directory}\n accept={accept}\n showUploadList={{ showPreviewIcon: true, showRemoveIcon: true }}\n customRequest={({ onSuccess }) => onSuccess?.({})}\n className={classNames('upload-picture-card', styles['upload-picture-card'])}\n >\n {canAddMore ? (\n <div\n className={classNames('upload-picture-trigger', styles['upload-picture-trigger'])}\n >\n <Plus size={20} />\n <div\n className={classNames(\n 'upload-picture-trigger-text',\n styles['upload-picture-trigger-text'],\n )}\n >\n 上传图片\n </div>\n </div>\n ) : null}\n </Upload>\n {tips ? (\n <div className={classNames('upload-list', styles['upload-list'])}>{tips}</div>\n ) : null}\n {previewNode}\n </div>\n );\n }\n\n if (variant === 'panel') {\n return (\n <div className={className}>\n <Upload.Dragger\n fileList={fileList}\n beforeUpload={beforeUploadFn}\n onChange={(info) => setFileList(info.fileList)}\n multiple={multiple}\n directory={directory}\n accept={accept}\n showUploadList={false}\n customRequest={({ onSuccess }) => onSuccess?.({})}\n >\n <p className={classNames('upload-drag-icon', styles['upload-drag-icon'])}>\n <Inbox />\n </p>\n <p className=\"ant-upload-text\">点击或拖拽文件到此区域上传</p>\n <p>{tips}</p>\n </Upload.Dragger>\n {showFileList && (\n <UploadedFiles\n fileList={fileList}\n onRemove={(uid) => setFileList((prev) => prev.filter((f) => f.uid !== uid))}\n onPreview={openPreview}\n />\n )}\n {previewNode}\n </div>\n );\n }\n\n // button mode (default) + text list\n return (\n <div className={className}>\n <Upload\n fileList={fileList}\n beforeUpload={beforeUploadFn}\n onChange={(info) => setFileList(info.fileList)}\n multiple={multiple}\n directory={directory}\n accept={accept}\n showUploadList={false}\n customRequest={({ onSuccess }) => onSuccess?.({})}\n >\n {children ?? (\n <Button\n size={size}\n icon={<UploadIcon />}\n className={classNames('upload-toolbar', styles['upload-toolbar'])}\n >\n 点击上传\n </Button>\n )}\n </Upload>\n <div className={classNames('upload-list', styles['upload-list'])}>{tips}</div>\n {showFileList && (\n <UploadedFiles\n fileList={fileList}\n onRemove={(uid) => setFileList((prev) => prev.filter((f) => f.uid !== uid))}\n onPreview={openPreview}\n />\n )}\n {previewNode}\n </div>\n );\n },\n);\n\nCommonUpload.displayName = 'CommonUpload';\n\nexport default CommonUpload;\n"],"names":["formatSize","bytes","buildTips","accept","fileSize","maxLength","parts","exts","s","jsx","Typography","classNames","styles","getExt","filename","idx","resolvePreviewUrl","file","UploadedFiles","fileList","onRemove","onPreview","previewable","_b","_a","jsxs","_c","File","SemanticTag","SEMANTIC_COLORS","Button","Trash2","CommonUpload","React","value","onChange","className","variant","listType","size","children","renderTips","showFileList","multiple","directory","onUpload","onSave","getPermission","concurrentCount","ref","innerFileList","setInnerFileList","uploading","setUploading","preview","setPreview","blobUrlsRef","setFileList","next","resolved","effectiveFileSize","concurrent","beforeUploadFn","message","Upload","triggerUpload","pending","pool","item","rawFile","resolve","url","prev","f","_err","openPreview","u","tips","canAddMore","previewNode","Image","visible","info","onSuccess","Plus","Inbox","uid","UploadIcon"],"mappings":"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"}
package/dist/file.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ /**
2
+ * L2 产品域入口:`@hkyhy/marsun-components-core/file`
3
+ * 含预览栈;新代码须从此子路径 import;包根 re-export 为迁移期 @deprecated。
4
+ */
5
+ export * from './components/File';
package/dist/file.js ADDED
@@ -0,0 +1,24 @@
1
+ import { default as o } from "./components/File/FileLink/index.js";
2
+ import { default as r } from "./components/File/FilePreview/index.js";
3
+ import { default as a } from "./components/File/FilePreviewLink/index.js";
4
+ import { default as F } from "./components/File/FilePreviewModal/index.js";
5
+ import { FileItem as f } from "./components/File/FileItem/index.js";
6
+ import { downloadFileItem as p, getFileDownloadAuthHeaders as s, getFileDownloadUrl as x } from "./components/File/utils/download.js";
7
+ import { getFileExtension as g, getFileIcon as u, getFileTypeName as I, normalizeExtension as v, normalizeFileDisplayItem as D, parseFileNameFromUrl as P } from "./components/File/fileDisplay.js";
8
+ export {
9
+ f as FileItemView,
10
+ o as FileLink,
11
+ r as FilePreview,
12
+ a as FilePreviewLink,
13
+ F as FilePreviewModal,
14
+ p as downloadFileItem,
15
+ s as getFileDownloadAuthHeaders,
16
+ x as getFileDownloadUrl,
17
+ g as getFileExtension,
18
+ u as getFileIcon,
19
+ I as getFileTypeName,
20
+ v as normalizeExtension,
21
+ D as normalizeFileDisplayItem,
22
+ P as parseFileNameFromUrl
23
+ };
24
+ //# sourceMappingURL=file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
package/dist/index.d.ts CHANGED
@@ -24,7 +24,6 @@ export type { PersonOptionDto, ReviewerOptionDto, PersonSelectOption } from './u
24
24
  export * from './components/Auth';
25
25
  export * from './components/Descriptions';
26
26
  export * from './components/Empty';
27
- export * from './components/File';
28
27
  export * from './components/Filter';
29
28
  export { default as Filter, fields as reactFilterFields, getFilterValue, useFilter as useReactFilter, withFilterValue, SearchInput as ReactFilterSearchInput, FilterProvider as ReactFilterProvider, pickSelectValues, createFilterValueMapper, useSearchParamsValue, filterInterceptors, singleSelectInterceptor, multiSelectInterceptor, FILTER_CLASS, AdvancedFilter, FilterValueDisplay, FilterItem as ReactFilterItem, FilterLines, FilterOuter, PopoverItem, withFieldItem, FilterItemContainer, TypeDateRangePickerField, NumberRangeFilterItem, InputFilterItem as ReactInputFilterItem, DatePickerFilterItem as ReactDatePickerFilterItem, DateRangePickerFilterItem as ReactDateRangePickerFilterItem, TypeDateRangePickerFilterItem, SuperSelectFilterItem, SelectTableListFilterItem, SelectTreeFilterItem, SelectCascaderFilterItem, SelectFunctionFilterItem, SelectIndustryFilterItem, SelectAddressFilterItem, SelectCascader, } from './components/ReactFilter';
30
29
  export type { FilterValueItem, FilterValue } from './components/ReactFilter';
@@ -47,7 +46,10 @@ export type { CommonUploadProps, CommonUploadRef, UploadListType, UploadVariant,
47
46
  export * from './components/VirtualScrollbar';
48
47
  export * from './components/Icons';
49
48
  export * from './components/Sparkline';
49
+ /** @deprecated 迁移期:请改从 `@hkyhy/marsun-components-core/llm` import */
50
50
  export * from './components/LlmFormattedText';
51
+ /** @deprecated 迁移期:请改从 `@hkyhy/marsun-components-core/file` import(含 FilePreview 等) */
52
+ export * from './components/File';
51
53
  export { default as AgentHubAccessGuard } from './components/AgentHub/AgentHubAccessGuard';
52
54
  export { default as AgentHubIndexRedirect } from './components/AgentHub/AgentHubIndexRedirect';
53
55
  export { default as AgentHubSessionAccessGuard } from './components/AgentHub/ChatSessionAccessGuard';