@ant-design/agentic-ui 2.7.1 → 2.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (583) hide show
  1. package/dist/AgentRunBar/Robot.js +105 -57
  2. package/dist/AgentRunBar/icons/PauseIcon.js +38 -38
  3. package/dist/AgentRunBar/icons/PlayIcon.js +38 -38
  4. package/dist/AgentRunBar/icons/SimplePauseIcon.js +38 -38
  5. package/dist/AgentRunBar/icons/SimplePlayIcon.js +38 -38
  6. package/dist/AgentRunBar/icons/SimpleStopIcon.js +38 -38
  7. package/dist/AgentRunBar/icons/StopIcon.js +41 -50
  8. package/dist/AgentRunBar/icons/index.js +0 -1
  9. package/dist/AgentRunBar/index.js +270 -237
  10. package/dist/AgentRunBar/style.js +273 -239
  11. package/dist/AgenticLayout/index.js +140 -85
  12. package/dist/AgenticLayout/style.js +126 -107
  13. package/dist/AnswerAlert/components/CloseIcon.js +12 -21
  14. package/dist/AnswerAlert/components/ErrorIcon.js +42 -38
  15. package/dist/AnswerAlert/components/InfoIcon.js +42 -38
  16. package/dist/AnswerAlert/components/LoaderIcon.js +12 -21
  17. package/dist/AnswerAlert/components/SuccessIcon.js +42 -38
  18. package/dist/AnswerAlert/components/WarningIcon.js +42 -38
  19. package/dist/AnswerAlert/index.js +155 -75
  20. package/dist/AnswerAlert/style.js +159 -147
  21. package/dist/BackTo/BackBottom.js +154 -70
  22. package/dist/BackTo/BackTop.js +148 -68
  23. package/dist/BackTo/ScrollVisibleButton.js +124 -98
  24. package/dist/BackTo/hooks/useScrollVisible.js +79 -33
  25. package/dist/BackTo/icons/BottomIcon.js +37 -37
  26. package/dist/BackTo/icons/TopIcon.js +37 -37
  27. package/dist/BackTo/index.js +22 -7
  28. package/dist/BackTo/style.js +93 -70
  29. package/dist/Bubble/AIBubble.js +469 -406
  30. package/dist/Bubble/Avatar/index.js +139 -85
  31. package/dist/Bubble/Avatar/isEmoji.js +2 -6
  32. package/dist/Bubble/Bubble.js +114 -38
  33. package/dist/Bubble/BubbleBeforeNode.js +104 -74
  34. package/dist/Bubble/BubbleConfigProvide.js +3 -7
  35. package/dist/Bubble/FileView.js +63 -69
  36. package/dist/Bubble/List/PureBubbleList.js +130 -131
  37. package/dist/Bubble/List/SkeletonList.js +33 -24
  38. package/dist/Bubble/List/index.js +187 -124
  39. package/dist/Bubble/List/style.js +76 -47
  40. package/dist/Bubble/MessagesContent/BubbleContext.js +6 -12
  41. package/dist/Bubble/MessagesContent/BubbleExtra.js +663 -355
  42. package/dist/Bubble/MessagesContent/CopyButton/index.js +326 -96
  43. package/dist/Bubble/MessagesContent/DocInfo.js +351 -386
  44. package/dist/Bubble/MessagesContent/EXCEPTION.js +42 -22
  45. package/dist/Bubble/MessagesContent/MarkdownPreview.js +206 -156
  46. package/dist/Bubble/MessagesContent/VoiceButton/index.js +213 -115
  47. package/dist/Bubble/MessagesContent/VoiceButton/style.js +129 -105
  48. package/dist/Bubble/MessagesContent/VoiceButton/types.js +9 -0
  49. package/dist/Bubble/MessagesContent/docInfoStyle.js +118 -88
  50. package/dist/Bubble/MessagesContent/icons.js +157 -57
  51. package/dist/Bubble/MessagesContent/index.js +609 -368
  52. package/dist/Bubble/PureBubble.js +439 -326
  53. package/dist/Bubble/Title.js +110 -87
  54. package/dist/Bubble/UserBubble.js +218 -279
  55. package/dist/Bubble/index.js +10 -16
  56. package/dist/Bubble/style.js +248 -227
  57. package/dist/Bubble/type.js +3 -0
  58. package/dist/Bubble/types/BubbleExtra.js +1 -0
  59. package/dist/Bubble/types/DocInfo.js +1 -0
  60. package/dist/ChatBootPage/ButtonTab.js +25 -45
  61. package/dist/ChatBootPage/ButtonTabGroup.js +74 -47
  62. package/dist/ChatBootPage/ButtonTabGroupStyle.js +73 -45
  63. package/dist/ChatBootPage/ButtonTabStyle.js +121 -98
  64. package/dist/ChatBootPage/CaseReply.js +119 -113
  65. package/dist/ChatBootPage/CaseReplyStyle.js +217 -189
  66. package/dist/ChatBootPage/Title.js +19 -23
  67. package/dist/ChatBootPage/index.js +9 -11
  68. package/dist/ChatBootPage/style.js +80 -50
  69. package/dist/ChatLayout/index.js +93 -57
  70. package/dist/ChatLayout/style.js +206 -176
  71. package/dist/ChatLayout/types.js +1 -0
  72. package/dist/Components/ActionIconBox/index.js +571 -197
  73. package/dist/Components/ActionIconBox/style.js +141 -111
  74. package/dist/Components/ActionItemBox/ActionItemBox.js +95 -149
  75. package/dist/Components/ActionItemBox/index.js +7 -7
  76. package/dist/Components/ActionItemBox/style.js +353 -361
  77. package/dist/Components/Button/IconButton/index.js +35 -43
  78. package/dist/Components/Button/IconButton/style.js +357 -331
  79. package/dist/Components/Button/SwitchButton/index.js +243 -87
  80. package/dist/Components/Button/SwitchButton/style.js +160 -146
  81. package/dist/Components/Button/ToggleButton/index.js +46 -57
  82. package/dist/Components/Button/ToggleButton/style.js +283 -258
  83. package/dist/Components/Button/index.js +6 -2
  84. package/dist/Components/GradientText/index.js +21 -27
  85. package/dist/Components/GradientText/style.js +88 -63
  86. package/dist/Components/ImageList.js +111 -133
  87. package/dist/Components/LayoutHeader/index.js +145 -81
  88. package/dist/Components/LayoutHeader/style.js +89 -64
  89. package/dist/Components/LayoutHeader/types.js +3 -0
  90. package/dist/Components/Loading/index.js +53 -22
  91. package/dist/Components/Robot/index.js +90 -56
  92. package/dist/Components/Robot/lotties/DazingLottie/index.js +78 -47
  93. package/dist/Components/Robot/lotties/ThinkingLottie/index.js +78 -47
  94. package/dist/Components/Robot/lotties/index.js +0 -1
  95. package/dist/Components/SuggestionList/index.js +354 -182
  96. package/dist/Components/SuggestionList/style.js +204 -186
  97. package/dist/Components/TextAnimate/index.js +494 -362
  98. package/dist/Components/TextAnimate/style.js +72 -48
  99. package/dist/Components/TypingAnimation/index.js +214 -169
  100. package/dist/Components/TypingAnimation/style.js +76 -52
  101. package/dist/Components/VisualList/index.js +267 -180
  102. package/dist/Components/VisualList/style.js +140 -124
  103. package/dist/Components/icons/LoadingSpinnerIcon.js +124 -73
  104. package/dist/Components/lotties/DazingLottie/index.js +78 -47
  105. package/dist/Components/lotties/LoadingLottie/index.js +82 -48
  106. package/dist/Components/lotties/TextLoading/index.js +73 -49
  107. package/dist/Components/lotties/TextLoading/style.js +95 -78
  108. package/dist/Components/lotties/ThinkingLottie/index.js +78 -47
  109. package/dist/Components/lotties/index.js +0 -1
  110. package/dist/Constants/colors.js +71 -97
  111. package/dist/History/components/HistoryActionsBox.js +407 -180
  112. package/dist/History/components/HistoryEmpty.js +38 -42
  113. package/dist/History/components/HistoryEmptyIcon.js +682 -964
  114. package/dist/History/components/HistoryItem.js +683 -471
  115. package/dist/History/components/HistoryList.js +170 -87
  116. package/dist/History/components/HistoryRunningIcon.js +160 -111
  117. package/dist/History/components/LoadMoreComponent.js +308 -103
  118. package/dist/History/components/NewChatComponent.js +261 -69
  119. package/dist/History/components/NewChatComponent.style.js +79 -53
  120. package/dist/History/components/SearchComponent.js +367 -156
  121. package/dist/History/components/index.js +11 -23
  122. package/dist/History/hooks/useHistory.js +404 -129
  123. package/dist/History/index.js +301 -186
  124. package/dist/History/menu.js +158 -212
  125. package/dist/History/style.js +282 -268
  126. package/dist/History/types/HistoryData.js +6 -10
  127. package/dist/History/types/HistoryList.js +3 -0
  128. package/dist/History/types/index.js +3 -0
  129. package/dist/History/utils/index.js +35 -32
  130. package/dist/Hooks/useAutoScroll.js +262 -84
  131. package/dist/Hooks/useClickAway.js +60 -21
  132. package/dist/Hooks/useCopied.js +72 -20
  133. package/dist/Hooks/useDebounceFn/index.js +213 -55
  134. package/dist/Hooks/useIntersectionOnce.js +163 -74
  135. package/dist/Hooks/useLanguage.js +67 -26
  136. package/dist/Hooks/useRefFunction/index.js +76 -11
  137. package/dist/Hooks/useSpeechSynthesis.js +143 -99
  138. package/dist/Hooks/useStyle/index.js +95 -60
  139. package/dist/Hooks/useThrottleFn/index.js +41 -41
  140. package/dist/I18n/index.js +246 -109
  141. package/dist/I18n/locales.js +718 -711
  142. package/dist/Icons/animated/VoicePlayLottie/index.js +75 -46
  143. package/dist/Icons/animated/VoicingLottie/index.js +78 -47
  144. package/dist/MarkdownEditor/BaseMarkdownEditor.js +421 -349
  145. package/dist/MarkdownEditor/editor/Editor.js +1160 -843
  146. package/dist/MarkdownEditor/editor/components/CommentList/index.js +407 -239
  147. package/dist/MarkdownEditor/editor/components/CommentList/style.js +119 -89
  148. package/dist/MarkdownEditor/editor/components/ContributorAvatar/index.js +61 -63
  149. package/dist/MarkdownEditor/editor/components/ContributorAvatar/style.js +82 -52
  150. package/dist/MarkdownEditor/editor/components/LazyElement/index.js +208 -106
  151. package/dist/MarkdownEditor/editor/components/LazyElement/style.js +69 -42
  152. package/dist/MarkdownEditor/editor/components/fntTag/index.js +7 -11
  153. package/dist/MarkdownEditor/editor/components/fntTag/style.js +66 -36
  154. package/dist/MarkdownEditor/editor/components/index.js +0 -1
  155. package/dist/MarkdownEditor/editor/elements/Blockquote.js +95 -37
  156. package/dist/MarkdownEditor/editor/elements/Break.js +56 -25
  157. package/dist/MarkdownEditor/editor/elements/Card/index.js +131 -52
  158. package/dist/MarkdownEditor/editor/elements/Code.js +89 -67
  159. package/dist/MarkdownEditor/editor/elements/Comment/index.js +79 -50
  160. package/dist/MarkdownEditor/editor/elements/ErrorBoundary.js +117 -21
  161. package/dist/MarkdownEditor/editor/elements/FootnoteDefinition.js +83 -64
  162. package/dist/MarkdownEditor/editor/elements/FootnoteReference.js +115 -41
  163. package/dist/MarkdownEditor/editor/elements/Head.js +131 -67
  164. package/dist/MarkdownEditor/editor/elements/Hr.js +63 -38
  165. package/dist/MarkdownEditor/editor/elements/Image/index.js +636 -494
  166. package/dist/MarkdownEditor/editor/elements/InlineKatex.js +60 -44
  167. package/dist/MarkdownEditor/editor/elements/Katex.js +71 -55
  168. package/dist/MarkdownEditor/editor/elements/LinkCard/index.js +79 -175
  169. package/dist/MarkdownEditor/editor/elements/LinkCard/style.js +130 -100
  170. package/dist/MarkdownEditor/editor/elements/List/List.js +96 -69
  171. package/dist/MarkdownEditor/editor/elements/List/ListItem.js +422 -247
  172. package/dist/MarkdownEditor/editor/elements/List/index.js +1 -5
  173. package/dist/MarkdownEditor/editor/elements/List/style.js +131 -117
  174. package/dist/MarkdownEditor/editor/elements/Media.js +637 -519
  175. package/dist/MarkdownEditor/editor/elements/Mermaid.js +79 -54
  176. package/dist/MarkdownEditor/editor/elements/Paragraph.js +144 -83
  177. package/dist/MarkdownEditor/editor/elements/Schema.js +167 -128
  178. package/dist/MarkdownEditor/editor/elements/Table/ReadonlyTableComponent.js +211 -178
  179. package/dist/MarkdownEditor/editor/elements/Table/SimpleTable.js +73 -49
  180. package/dist/MarkdownEditor/editor/elements/Table/Table.js +285 -204
  181. package/dist/MarkdownEditor/editor/elements/Table/TableCellIndex/index.js +397 -280
  182. package/dist/MarkdownEditor/editor/elements/Table/TableCellIndex/style.js +126 -101
  183. package/dist/MarkdownEditor/editor/elements/Table/TableCellIndexSpacer/index.js +381 -276
  184. package/dist/MarkdownEditor/editor/elements/Table/TableCellIndexSpacer/style.js +120 -98
  185. package/dist/MarkdownEditor/editor/elements/Table/TableContext.js +64 -21
  186. package/dist/MarkdownEditor/editor/elements/Table/TableRowIndex/index.js +52 -42
  187. package/dist/MarkdownEditor/editor/elements/Table/TableRowIndex/style.js +69 -39
  188. package/dist/MarkdownEditor/editor/elements/Table/Td/index.js +126 -72
  189. package/dist/MarkdownEditor/editor/elements/Table/Td/style.js +85 -55
  190. package/dist/MarkdownEditor/editor/elements/Table/index.js +204 -105
  191. package/dist/MarkdownEditor/editor/elements/Table/style.js +244 -233
  192. package/dist/MarkdownEditor/editor/elements/Table/useScrollShadow.js +119 -62
  193. package/dist/MarkdownEditor/editor/elements/TagPopup/index.js +438 -276
  194. package/dist/MarkdownEditor/editor/elements/TagPopup/style.js +103 -77
  195. package/dist/MarkdownEditor/editor/elements/index.js +437 -424
  196. package/dist/MarkdownEditor/editor/parser/json-parse.js +38 -9
  197. package/dist/MarkdownEditor/editor/parser/parserMarkdownToSlateNode.js +1753 -1168
  198. package/dist/MarkdownEditor/editor/parser/parserMdToSchema.js +16 -20
  199. package/dist/MarkdownEditor/editor/parser/parserSlateNodeToMarkdown.js +1021 -606
  200. package/dist/MarkdownEditor/editor/parser/remarkParse.js +158 -102
  201. package/dist/MarkdownEditor/editor/plugins/catchError.js +78 -17
  202. package/dist/MarkdownEditor/editor/plugins/elements.js +458 -342
  203. package/dist/MarkdownEditor/editor/plugins/handlePaste.js +752 -300
  204. package/dist/MarkdownEditor/editor/plugins/hotKeyCommands/arrow.js +215 -129
  205. package/dist/MarkdownEditor/editor/plugins/hotKeyCommands/backspace.js +325 -180
  206. package/dist/MarkdownEditor/editor/plugins/hotKeyCommands/enter.js +576 -418
  207. package/dist/MarkdownEditor/editor/plugins/hotKeyCommands/match.js +157 -47
  208. package/dist/MarkdownEditor/editor/plugins/hotKeyCommands/tab.js +331 -209
  209. package/dist/MarkdownEditor/editor/plugins/index.js +0 -1
  210. package/dist/MarkdownEditor/editor/plugins/insertParsedHtmlNodes.js +1245 -507
  211. package/dist/MarkdownEditor/editor/plugins/parseMarkdownToNodesAndInsert.js +36 -24
  212. package/dist/MarkdownEditor/editor/plugins/useHighlight.js +267 -116
  213. package/dist/MarkdownEditor/editor/plugins/useKeyboard.js +234 -160
  214. package/dist/MarkdownEditor/editor/plugins/useOnchange.js +253 -92
  215. package/dist/MarkdownEditor/editor/plugins/withMarkdown.js +728 -439
  216. package/dist/MarkdownEditor/editor/store.js +1819 -1389
  217. package/dist/MarkdownEditor/editor/style.js +551 -506
  218. package/dist/MarkdownEditor/editor/tagStyles.js +43 -43
  219. package/dist/MarkdownEditor/editor/tools/DragHandle.js +56 -54
  220. package/dist/MarkdownEditor/editor/tools/InsertAutocomplete.js +1049 -732
  221. package/dist/MarkdownEditor/editor/tools/InsertLink.js +232 -181
  222. package/dist/MarkdownEditor/editor/tools/Leading.js +566 -303
  223. package/dist/MarkdownEditor/editor/tools/ToolBar/BaseBar.js +415 -377
  224. package/dist/MarkdownEditor/editor/tools/ToolBar/FloatBar.js +162 -125
  225. package/dist/MarkdownEditor/editor/tools/ToolBar/ReadonlyBaseBar.js +480 -258
  226. package/dist/MarkdownEditor/editor/tools/ToolBar/ToolBar.js +44 -44
  227. package/dist/MarkdownEditor/editor/tools/ToolBar/components/ClearFormatButton.js +20 -35
  228. package/dist/MarkdownEditor/editor/tools/ToolBar/components/ColorPickerButton.js +69 -73
  229. package/dist/MarkdownEditor/editor/tools/ToolBar/components/FormatButton.js +13 -19
  230. package/dist/MarkdownEditor/editor/tools/ToolBar/components/FormattingTools.js +34 -41
  231. package/dist/MarkdownEditor/editor/tools/ToolBar/components/HeadingDropdown.js +53 -47
  232. package/dist/MarkdownEditor/editor/tools/ToolBar/components/LinkButton.js +11 -19
  233. package/dist/MarkdownEditor/editor/tools/ToolBar/components/ToolBarItem.js +23 -43
  234. package/dist/MarkdownEditor/editor/tools/ToolBar/components/UndoRedoButtons.js +14 -25
  235. package/dist/MarkdownEditor/editor/tools/ToolBar/config/toolsConfig.js +139 -102
  236. package/dist/MarkdownEditor/editor/tools/ToolBar/floatBarStyle.js +95 -65
  237. package/dist/MarkdownEditor/editor/tools/ToolBar/hooks/useToolBarLogic.js +252 -161
  238. package/dist/MarkdownEditor/editor/tools/ToolBar/index.js +14 -24
  239. package/dist/MarkdownEditor/editor/tools/ToolBar/toolBarStyle.js +95 -65
  240. package/dist/MarkdownEditor/editor/tools/insertAutocompleteStyle.js +82 -52
  241. package/dist/MarkdownEditor/editor/types/Table.js +1 -0
  242. package/dist/MarkdownEditor/editor/utils/InlineChromiumBugfix.js +11 -16
  243. package/dist/MarkdownEditor/editor/utils/ace.js +136 -40
  244. package/dist/MarkdownEditor/editor/utils/docx/docxDeserializer.js +29 -32
  245. package/dist/MarkdownEditor/editor/utils/docx/index.js +0 -1
  246. package/dist/MarkdownEditor/editor/utils/docx/module.js +193 -164
  247. package/dist/MarkdownEditor/editor/utils/docx/utils.js +113 -98
  248. package/dist/MarkdownEditor/editor/utils/dom.js +119 -90
  249. package/dist/MarkdownEditor/editor/utils/editorUtils.js +1369 -906
  250. package/dist/MarkdownEditor/editor/utils/htmlToMarkdown.js +196 -184
  251. package/dist/MarkdownEditor/editor/utils/index.js +354 -215
  252. package/dist/MarkdownEditor/editor/utils/isMarkdown.js +56 -44
  253. package/dist/MarkdownEditor/editor/utils/keyboard.js +1229 -664
  254. package/dist/MarkdownEditor/editor/utils/markdownToHtml.js +294 -76
  255. package/dist/MarkdownEditor/editor/utils/media.js +274 -99
  256. package/dist/MarkdownEditor/editor/utils/path.js +22 -16
  257. package/dist/MarkdownEditor/editor/utils/performanceMonitor.js +370 -168
  258. package/dist/MarkdownEditor/editor/utils/useLocalState.js +96 -37
  259. package/dist/MarkdownEditor/el.js +1 -0
  260. package/dist/MarkdownEditor/hooks/editor.js +123 -41
  261. package/dist/MarkdownEditor/hooks/subscribe.js +18 -15
  262. package/dist/MarkdownEditor/index.js +118 -30
  263. package/dist/MarkdownEditor/plugin.js +2 -5
  264. package/dist/MarkdownEditor/style.js +96 -66
  265. package/dist/MarkdownEditor/types.js +1 -0
  266. package/dist/MarkdownEditor/utils/exportHtml.js +42 -83
  267. package/dist/MarkdownEditor/utils/native-table/index.js +0 -1
  268. package/dist/MarkdownEditor/utils/native-table/native-table-editor.js +337 -222
  269. package/dist/MarkdownEditor/utils/native-table/native-table-keyboard.js +201 -113
  270. package/dist/MarkdownInputField/AttachmentButton/AttachmentButtonPopover.js +86 -79
  271. package/dist/MarkdownInputField/AttachmentButton/AttachmentFileList/AttachmentFileIcon.js +62 -33
  272. package/dist/MarkdownInputField/AttachmentButton/AttachmentFileList/AttachmentFileListItem.js +147 -125
  273. package/dist/MarkdownInputField/AttachmentButton/AttachmentFileList/index.js +174 -129
  274. package/dist/MarkdownInputField/AttachmentButton/AttachmentFileList/style.js +263 -237
  275. package/dist/MarkdownInputField/AttachmentButton/index.js +465 -205
  276. package/dist/MarkdownInputField/AttachmentButton/style.js +143 -114
  277. package/dist/MarkdownInputField/AttachmentButton/types.js +3 -0
  278. package/dist/MarkdownInputField/AttachmentButton/utils.js +64 -34
  279. package/dist/MarkdownInputField/BeforeToolContainer/BeforeToolContainer.js +438 -404
  280. package/dist/MarkdownInputField/Enlargement/index.js +7 -17
  281. package/dist/MarkdownInputField/FileMapView/FileMapViewItem.js +193 -216
  282. package/dist/MarkdownInputField/FileMapView/index.js +387 -174
  283. package/dist/MarkdownInputField/FileMapView/style.js +281 -259
  284. package/dist/MarkdownInputField/FilePaste/index.js +239 -65
  285. package/dist/MarkdownInputField/FileUploadManager/index.js +460 -170
  286. package/dist/MarkdownInputField/MarkdownInputField.js +819 -549
  287. package/dist/MarkdownInputField/QuickActions/index.js +304 -134
  288. package/dist/MarkdownInputField/RefinePromptButton/index.js +24 -33
  289. package/dist/MarkdownInputField/RefinePromptButton/style.js +99 -73
  290. package/dist/MarkdownInputField/SendActions/index.js +179 -197
  291. package/dist/MarkdownInputField/SendButton/index.js +150 -110
  292. package/dist/MarkdownInputField/SendButton/style.js +95 -64
  293. package/dist/MarkdownInputField/SkillModeBar/hooks/index.js +3 -5
  294. package/dist/MarkdownInputField/SkillModeBar/hooks/useSkillModeState.js +51 -26
  295. package/dist/MarkdownInputField/SkillModeBar/index.js +119 -106
  296. package/dist/MarkdownInputField/SkillModeBar/style.js +124 -98
  297. package/dist/MarkdownInputField/Suggestion/index.js +391 -154
  298. package/dist/MarkdownInputField/TopOperatingArea/index.js +37 -44
  299. package/dist/MarkdownInputField/TopOperatingArea/style.js +98 -81
  300. package/dist/MarkdownInputField/VoiceInput/index.js +210 -82
  301. package/dist/MarkdownInputField/VoiceInput/style.js +85 -59
  302. package/dist/MarkdownInputField/VoiceInputManager/index.js +321 -94
  303. package/dist/MarkdownInputField/style.js +296 -233
  304. package/dist/Plugins/chart/AreaChart/index.js +541 -393
  305. package/dist/Plugins/chart/AreaChart/style.js +114 -90
  306. package/dist/Plugins/chart/BarChart/index.d.ts +4 -0
  307. package/dist/Plugins/chart/BarChart/index.js +865 -697
  308. package/dist/Plugins/chart/BarChart/style.js +114 -90
  309. package/dist/Plugins/chart/ChartAttrToolBar/ChartAttrToolBarStyle.js +82 -52
  310. package/dist/Plugins/chart/ChartAttrToolBar/index.js +94 -65
  311. package/dist/Plugins/chart/ChartMark/Area.js +176 -150
  312. package/dist/Plugins/chart/ChartMark/Bar.js +181 -152
  313. package/dist/Plugins/chart/ChartMark/Column.js +181 -151
  314. package/dist/Plugins/chart/ChartMark/Container.js +116 -75
  315. package/dist/Plugins/chart/ChartMark/Line.js +179 -151
  316. package/dist/Plugins/chart/ChartMark/Pie.js +79 -63
  317. package/dist/Plugins/chart/ChartMark/index.js +6 -13
  318. package/dist/Plugins/chart/ChartMark/useChart.js +1 -0
  319. package/dist/Plugins/chart/ChartRender.d.ts +2 -0
  320. package/dist/Plugins/chart/ChartRender.js +981 -705
  321. package/dist/Plugins/chart/ChartStatistic/index.js +47 -62
  322. package/dist/Plugins/chart/ChartStatistic/style.js +142 -143
  323. package/dist/Plugins/chart/ChartStatistic/utils.js +37 -27
  324. package/dist/Plugins/chart/DonutChart/Legend.js +94 -124
  325. package/dist/Plugins/chart/DonutChart/constants.js +4 -11
  326. package/dist/Plugins/chart/DonutChart/hooks.js +183 -112
  327. package/dist/Plugins/chart/DonutChart/index.js +588 -516
  328. package/dist/Plugins/chart/DonutChart/plugins.js +47 -44
  329. package/dist/Plugins/chart/DonutChart/style.js +186 -175
  330. package/dist/Plugins/chart/DonutChart/types.js +1 -0
  331. package/dist/Plugins/chart/FunnelChart/index.js +844 -647
  332. package/dist/Plugins/chart/FunnelChart/style.js +97 -71
  333. package/dist/Plugins/chart/LineChart/index.js +516 -393
  334. package/dist/Plugins/chart/LineChart/style.js +114 -90
  335. package/dist/Plugins/chart/RadarChart/index.js +580 -582
  336. package/dist/Plugins/chart/RadarChart/style.js +122 -112
  337. package/dist/Plugins/chart/ScatterChart/index.js +633 -640
  338. package/dist/Plugins/chart/ScatterChart/style.js +108 -94
  339. package/dist/Plugins/chart/components/ChartContainer/ChartContainer.js +151 -80
  340. package/dist/Plugins/chart/components/ChartContainer/ChartErrorBoundary.js +160 -41
  341. package/dist/Plugins/chart/components/ChartContainer/ChartErrorBoundaryExample.js +80 -62
  342. package/dist/Plugins/chart/components/ChartContainer/index.js +2 -7
  343. package/dist/Plugins/chart/components/ChartContainer/style.js +121 -91
  344. package/dist/Plugins/chart/components/ChartFilter/ChartFilter.js +58 -90
  345. package/dist/Plugins/chart/components/ChartFilter/style.js +169 -154
  346. package/dist/Plugins/chart/components/ChartToolBar/ChartToolBar.js +54 -59
  347. package/dist/Plugins/chart/components/ChartToolBar/style.js +132 -117
  348. package/dist/Plugins/chart/components/icons/TimeIcon.js +20 -26
  349. package/dist/Plugins/chart/components/index.js +32 -34
  350. package/dist/Plugins/chart/const.js +34 -25
  351. package/dist/Plugins/chart/hooks/useChartStatistic.js +1 -0
  352. package/dist/Plugins/chart/index.js +436 -339
  353. package/dist/Plugins/chart/loadChartRuntime.js +209 -87
  354. package/dist/Plugins/chart/utils.js +311 -87
  355. package/dist/Plugins/code/CodeUI/Katex/Katex.js +112 -66
  356. package/dist/Plugins/code/components/AceEditor.js +334 -237
  357. package/dist/Plugins/code/components/AceEditorContainer.js +23 -32
  358. package/dist/Plugins/code/components/CodeContainer.js +41 -56
  359. package/dist/Plugins/code/components/CodeRenderer.js +202 -155
  360. package/dist/Plugins/code/components/CodeToolbar.js +137 -181
  361. package/dist/Plugins/code/components/HtmlPreview.js +19 -22
  362. package/dist/Plugins/code/components/LanguageSelector.js +162 -96
  363. package/dist/Plugins/code/components/LoadImage.js +145 -46
  364. package/dist/Plugins/code/components/ThinkBlock.js +38 -42
  365. package/dist/Plugins/code/components/index.js +13 -23
  366. package/dist/Plugins/code/hooks/index.js +7 -9
  367. package/dist/Plugins/code/hooks/useCodeEditorState.js +139 -62
  368. package/dist/Plugins/code/hooks/useRenderConditions.js +31 -23
  369. package/dist/Plugins/code/hooks/useToolbarConfig.js +44 -46
  370. package/dist/Plugins/code/index.js +141 -89
  371. package/dist/Plugins/code/langIconMap.js +400 -108
  372. package/dist/Plugins/code/langIcons/AbapIcon.js +90 -57
  373. package/dist/Plugins/code/langIcons/ActionscriptIcon.js +89 -56
  374. package/dist/Plugins/code/langIcons/AdaIcon.js +89 -52
  375. package/dist/Plugins/code/langIcons/ApacheIcon.js +205 -254
  376. package/dist/Plugins/code/langIcons/ApexIcon.js +108 -82
  377. package/dist/Plugins/code/langIcons/AplIcon.js +90 -54
  378. package/dist/Plugins/code/langIcons/ApplescriptIcon.js +89 -56
  379. package/dist/Plugins/code/langIcons/AstroIcon.js +91 -58
  380. package/dist/Plugins/code/langIcons/AwkIcon.js +98 -68
  381. package/dist/Plugins/code/langIcons/BallerinaIcon.js +92 -59
  382. package/dist/Plugins/code/langIcons/BatIcon.js +158 -229
  383. package/dist/Plugins/code/langIcons/BicepIcon.js +91 -58
  384. package/dist/Plugins/code/langIcons/BladeIcon.js +90 -58
  385. package/dist/Plugins/code/langIcons/CIcon.js +90 -55
  386. package/dist/Plugins/code/langIcons/CadenceIcon.js +89 -56
  387. package/dist/Plugins/code/langIcons/ClojureIcon.js +96 -75
  388. package/dist/Plugins/code/langIcons/CmakeIcon.js +93 -62
  389. package/dist/Plugins/code/langIcons/CobolIcon.js +99 -70
  390. package/dist/Plugins/code/langIcons/CodeqlIcon.js +96 -76
  391. package/dist/Plugins/code/langIcons/CoffeeIcon.js +89 -56
  392. package/dist/Plugins/code/langIcons/ConsoleIcon.js +89 -56
  393. package/dist/Plugins/code/langIcons/CppIcon.js +90 -55
  394. package/dist/Plugins/code/langIcons/CrystalIcon.js +90 -57
  395. package/dist/Plugins/code/langIcons/CsharpIcon.js +90 -59
  396. package/dist/Plugins/code/langIcons/CssIcon.js +89 -52
  397. package/dist/Plugins/code/langIcons/DIcon.js +90 -53
  398. package/dist/Plugins/code/langIcons/DartIcon.js +92 -71
  399. package/dist/Plugins/code/langIcons/DatabaseIcon.js +90 -57
  400. package/dist/Plugins/code/langIcons/DiffIcon.js +90 -57
  401. package/dist/Plugins/code/langIcons/DockerIcon.js +89 -56
  402. package/dist/Plugins/code/langIcons/DotenvIcon.js +94 -56
  403. package/dist/Plugins/code/langIcons/ElixirIcon.js +91 -58
  404. package/dist/Plugins/code/langIcons/ElmIcon.js +105 -58
  405. package/dist/Plugins/code/langIcons/ErbIcon.js +90 -54
  406. package/dist/Plugins/code/langIcons/ErlangIcon.js +89 -56
  407. package/dist/Plugins/code/langIcons/FsharpIcon.js +93 -62
  408. package/dist/Plugins/code/langIcons/GdscriptIcon.js +96 -88
  409. package/dist/Plugins/code/langIcons/GlslIcon.js +90 -58
  410. package/dist/Plugins/code/langIcons/GnuplotIcon.js +98 -77
  411. package/dist/Plugins/code/langIcons/GoIcon.js +114 -93
  412. package/dist/Plugins/code/langIcons/GraphqlIcon.js +106 -66
  413. package/dist/Plugins/code/langIcons/GroovyIcon.js +89 -56
  414. package/dist/Plugins/code/langIcons/HackIcon.js +97 -64
  415. package/dist/Plugins/code/langIcons/HamlIcon.js +89 -56
  416. package/dist/Plugins/code/langIcons/HandlebarsIcon.js +89 -56
  417. package/dist/Plugins/code/langIcons/HaskellIcon.js +93 -64
  418. package/dist/Plugins/code/langIcons/HclIcon.js +118 -93
  419. package/dist/Plugins/code/langIcons/HclLightIcon.js +118 -97
  420. package/dist/Plugins/code/langIcons/HjsonIcon.js +94 -62
  421. package/dist/Plugins/code/langIcons/HlslIcon.js +96 -76
  422. package/dist/Plugins/code/langIcons/HtmlIcon.js +89 -56
  423. package/dist/Plugins/code/langIcons/HttpIcon.js +89 -56
  424. package/dist/Plugins/code/langIcons/ImbaIcon.js +98 -65
  425. package/dist/Plugins/code/langIcons/IniIcon.js +90 -54
  426. package/dist/Plugins/code/langIcons/JavaIcon.js +89 -56
  427. package/dist/Plugins/code/langIcons/JavascriptIcon.js +89 -56
  428. package/dist/Plugins/code/langIcons/JinjaIcon.js +100 -68
  429. package/dist/Plugins/code/langIcons/Json5Icon.js +100 -82
  430. package/dist/Plugins/code/langIcons/JsonIcon.js +89 -56
  431. package/dist/Plugins/code/langIcons/JsonnetIcon.js +102 -86
  432. package/dist/Plugins/code/langIcons/JuliaIcon.js +105 -52
  433. package/dist/Plugins/code/langIcons/KotlinIcon.js +104 -74
  434. package/dist/Plugins/code/langIcons/KustoIcon.js +90 -57
  435. package/dist/Plugins/code/langIcons/LessIcon.js +90 -57
  436. package/dist/Plugins/code/langIcons/LiquidIcon.js +91 -58
  437. package/dist/Plugins/code/langIcons/LispIcon.js +89 -56
  438. package/dist/Plugins/code/langIcons/LuaIcon.js +93 -60
  439. package/dist/Plugins/code/langIcons/MakefileIcon.js +91 -58
  440. package/dist/Plugins/code/langIcons/MarkdownIcon.js +89 -56
  441. package/dist/Plugins/code/langIcons/MarkojsIcon.js +96 -73
  442. package/dist/Plugins/code/langIcons/MatlabIcon.js +93 -64
  443. package/dist/Plugins/code/langIcons/MdxIcon.js +90 -53
  444. package/dist/Plugins/code/langIcons/MermaidIcon.js +95 -64
  445. package/dist/Plugins/code/langIcons/MojoIcon.js +95 -62
  446. package/dist/Plugins/code/langIcons/NginxIcon.js +94 -61
  447. package/dist/Plugins/code/langIcons/NimIcon.js +91 -54
  448. package/dist/Plugins/code/langIcons/NixIcon.js +92 -56
  449. package/dist/Plugins/code/langIcons/ObjectiveCIcon.js +90 -59
  450. package/dist/Plugins/code/langIcons/ObjectiveCppIcon.js +90 -57
  451. package/dist/Plugins/code/langIcons/OcamlIcon.js +90 -61
  452. package/dist/Plugins/code/langIcons/PascalIcon.js +95 -55
  453. package/dist/Plugins/code/langIcons/Perl6Icon.js +299 -320
  454. package/dist/Plugins/code/langIcons/PerlIcon.js +89 -56
  455. package/dist/Plugins/code/langIcons/PhpIcon.js +89 -52
  456. package/dist/Plugins/code/langIcons/PostcssIcon.js +130 -113
  457. package/dist/Plugins/code/langIcons/PowershellIcon.js +91 -58
  458. package/dist/Plugins/code/langIcons/PrismaIcon.js +97 -68
  459. package/dist/Plugins/code/langIcons/PrologIcon.js +91 -58
  460. package/dist/Plugins/code/langIcons/ProtoIcon.js +94 -68
  461. package/dist/Plugins/code/langIcons/PugIcon.js +177 -145
  462. package/dist/Plugins/code/langIcons/PuppetIcon.js +96 -52
  463. package/dist/Plugins/code/langIcons/PurescriptIcon.js +93 -61
  464. package/dist/Plugins/code/langIcons/PythonIcon.js +90 -61
  465. package/dist/Plugins/code/langIcons/RIcon.js +89 -52
  466. package/dist/Plugins/code/langIcons/RazorIcon.js +90 -57
  467. package/dist/Plugins/code/langIcons/ReactIcon.js +89 -56
  468. package/dist/Plugins/code/langIcons/ReactTsIcon.js +90 -57
  469. package/dist/Plugins/code/langIcons/RubyIcon.js +91 -58
  470. package/dist/Plugins/code/langIcons/RustIcon.js +89 -56
  471. package/dist/Plugins/code/langIcons/SasIcon.js +89 -52
  472. package/dist/Plugins/code/langIcons/SassIcon.js +90 -57
  473. package/dist/Plugins/code/langIcons/ScalaIcon.js +96 -53
  474. package/dist/Plugins/code/langIcons/SchemeIcon.js +91 -58
  475. package/dist/Plugins/code/langIcons/ShaderlabIcon.js +89 -56
  476. package/dist/Plugins/code/langIcons/SolidityIcon.js +94 -52
  477. package/dist/Plugins/code/langIcons/SparqlIcon.js +94 -64
  478. package/dist/Plugins/code/langIcons/StataIcon.js +126 -108
  479. package/dist/Plugins/code/langIcons/StylusIcon.js +92 -59
  480. package/dist/Plugins/code/langIcons/SvelteIcon.js +91 -58
  481. package/dist/Plugins/code/langIcons/SwiftIcon.js +90 -57
  482. package/dist/Plugins/code/langIcons/SystemverilogIcon.js +115 -102
  483. package/dist/Plugins/code/langIcons/TclIcon.js +89 -52
  484. package/dist/Plugins/code/langIcons/TexIcon.js +99 -65
  485. package/dist/Plugins/code/langIcons/TomlIcon.js +94 -70
  486. package/dist/Plugins/code/langIcons/TwigIcon.js +89 -56
  487. package/dist/Plugins/code/langIcons/TypescriptIcon.js +93 -60
  488. package/dist/Plugins/code/langIcons/VerilogIcon.js +89 -56
  489. package/dist/Plugins/code/langIcons/VhdlIcon.js +94 -64
  490. package/dist/Plugins/code/langIcons/VimIcon.js +278 -420
  491. package/dist/Plugins/code/langIcons/VueIcon.js +92 -59
  492. package/dist/Plugins/code/langIcons/WebassemblyIcon.js +103 -76
  493. package/dist/Plugins/code/langIcons/WenyanIcon.js +104 -100
  494. package/dist/Plugins/code/langIcons/WgslIcon.js +93 -77
  495. package/dist/Plugins/code/langIcons/WolframlanguageIcon.js +100 -71
  496. package/dist/Plugins/code/langIcons/XmlIcon.js +89 -52
  497. package/dist/Plugins/code/langIcons/XslIcon.js +94 -66
  498. package/dist/Plugins/code/langIcons/YamlIcon.js +89 -56
  499. package/dist/Plugins/code/langIcons/ZigIcon.js +106 -81
  500. package/dist/Plugins/code/langIcons/index.js +128 -259
  501. package/dist/Plugins/code/utils/index.js +5 -5
  502. package/dist/Plugins/code/utils/langOptions.js +86 -11
  503. package/dist/Plugins/defaultPlugins.js +9 -13
  504. package/dist/Plugins/formatter/index.js +205 -105
  505. package/dist/Plugins/index.js +6 -2
  506. package/dist/Plugins/katex/InlineKatex.js +196 -107
  507. package/dist/Plugins/katex/Katex.js +139 -65
  508. package/dist/Plugins/katex/index.js +163 -103
  509. package/dist/Plugins/mermaid/Mermaid.d.ts +9 -4
  510. package/dist/Plugins/mermaid/Mermaid.js +475 -178
  511. package/dist/Plugins/mermaid/index.js +237 -142
  512. package/dist/Quote/index.js +112 -73
  513. package/dist/Quote/style.js +176 -160
  514. package/dist/Schema/SchemaEditor/AceEditorWrapper.js +163 -119
  515. package/dist/Schema/SchemaEditor/index.js +385 -275
  516. package/dist/Schema/SchemaEditor/style.js +261 -269
  517. package/dist/Schema/SchemaForm/index.js +443 -268
  518. package/dist/Schema/SchemaForm/types.js +1 -0
  519. package/dist/Schema/SchemaRenderer/index.js +973 -588
  520. package/dist/Schema/SchemaRenderer/templateEngine.js +106 -26
  521. package/dist/Schema/index.js +7 -11
  522. package/dist/Schema/types.js +1 -0
  523. package/dist/Schema/validator.js +74 -36
  524. package/dist/TaskList/index.js +197 -142
  525. package/dist/TaskList/style.js +143 -122
  526. package/dist/ThoughtChainList/CostMillis.js +88 -54
  527. package/dist/ThoughtChainList/DeepThink.js +187 -152
  528. package/dist/ThoughtChainList/DotAni/index.js +29 -14
  529. package/dist/ThoughtChainList/DotAni/style.js +82 -50
  530. package/dist/ThoughtChainList/FlipText/index.js +74 -30
  531. package/dist/ThoughtChainList/MarkdownEditor.js +126 -72
  532. package/dist/ThoughtChainList/RagRetrievalInfo.js +113 -145
  533. package/dist/ThoughtChainList/TableSql.js +413 -459
  534. package/dist/ThoughtChainList/ThoughtChainListItem.js +388 -222
  535. package/dist/ThoughtChainList/TitleInfo.js +189 -185
  536. package/dist/ThoughtChainList/ToolCall.js +429 -463
  537. package/dist/ThoughtChainList/WebSearch.js +192 -162
  538. package/dist/ThoughtChainList/index.js +449 -410
  539. package/dist/ThoughtChainList/style.js +253 -232
  540. package/dist/ThoughtChainList/types.js +1 -0
  541. package/dist/ToolUseBar/ToolUseBarItem.js +183 -139
  542. package/dist/ToolUseBar/ToolUseBarItemComponents.js +345 -276
  543. package/dist/ToolUseBar/ToolUseBarThink.js +335 -396
  544. package/dist/ToolUseBar/index.js +226 -113
  545. package/dist/ToolUseBar/style.js +334 -308
  546. package/dist/ToolUseBar/thinkStyle.js +350 -328
  547. package/dist/Types/common.js +1 -0
  548. package/dist/Types/index.js +4 -2
  549. package/dist/Types/message.js +1 -0
  550. package/dist/Utils/easings.js +9 -12
  551. package/dist/Utils/formatTime.js +41 -17
  552. package/dist/Utils/getScroll.js +41 -41
  553. package/dist/Utils/language.js +355 -150
  554. package/dist/Utils/proxySandbox/ProxySandbox.js +1637 -1076
  555. package/dist/Utils/proxySandbox/SecurityContextManager.js +607 -343
  556. package/dist/Utils/proxySandbox/index.js +554 -267
  557. package/dist/Utils/proxySandbox/types.js +187 -52
  558. package/dist/Utils/scrollTo.js +48 -56
  559. package/dist/Utils/throttleByAnimationFrame.js +46 -20
  560. package/dist/WelcomeMessage/index.js +106 -58
  561. package/dist/WelcomeMessage/style.js +80 -55
  562. package/dist/Workspace/Browser/index.js +102 -40
  563. package/dist/Workspace/Browser/style.js +62 -33
  564. package/dist/Workspace/File/DataSourceStrategy.js +419 -217
  565. package/dist/Workspace/File/FileComponent.js +1004 -791
  566. package/dist/Workspace/File/FileTypeProcessor.js +337 -184
  567. package/dist/Workspace/File/PreviewComponent.js +472 -532
  568. package/dist/Workspace/File/index.js +3 -10
  569. package/dist/Workspace/File/style.js +397 -424
  570. package/dist/Workspace/File/utils.js +160 -106
  571. package/dist/Workspace/HtmlPreview/index.js +238 -137
  572. package/dist/Workspace/HtmlPreview/style.js +99 -77
  573. package/dist/Workspace/RealtimeFollow/index.js +411 -413
  574. package/dist/Workspace/RealtimeFollow/style.js +299 -303
  575. package/dist/Workspace/Task/index.js +53 -35
  576. package/dist/Workspace/Task/style.js +99 -73
  577. package/dist/Workspace/index.js +332 -254
  578. package/dist/Workspace/style.js +165 -146
  579. package/dist/Workspace/types.js +471 -252
  580. package/dist/Workspace/utils/codeLanguageUtils.js +148 -129
  581. package/dist/Workspace/utils.js +28 -20
  582. package/dist/index.js +27 -17
  583. package/package.json +3 -2
@@ -1,55 +1,231 @@
1
- var __defProp = Object.defineProperty;
2
- var __defProps = Object.defineProperties;
3
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
- var __spreadValues = (a, b) => {
9
- for (var prop in b || (b = {}))
10
- if (__hasOwnProp.call(b, prop))
11
- __defNormalProp(a, prop, b[prop]);
12
- if (__getOwnPropSymbols)
13
- for (var prop of __getOwnPropSymbols(b)) {
14
- if (__propIsEnum.call(b, prop))
15
- __defNormalProp(a, prop, b[prop]);
1
+ function _array_like_to_array(arr, len) {
2
+ if (len == null || len > arr.length) len = arr.length;
3
+ for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
4
+ return arr2;
5
+ }
6
+ function _array_with_holes(arr) {
7
+ if (Array.isArray(arr)) return arr;
8
+ }
9
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
10
+ try {
11
+ var info = gen[key](arg);
12
+ var value = info.value;
13
+ } catch (error) {
14
+ reject(error);
15
+ return;
16
16
  }
17
- return a;
18
- };
19
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
- var __async = (__this, __arguments, generator) => {
21
- return new Promise((resolve, reject) => {
22
- var fulfilled = (value) => {
23
- try {
24
- step(generator.next(value));
25
- } catch (e) {
26
- reject(e);
27
- }
17
+ if (info.done) {
18
+ resolve(value);
19
+ } else {
20
+ Promise.resolve(value).then(_next, _throw);
21
+ }
22
+ }
23
+ function _async_to_generator(fn) {
24
+ return function() {
25
+ var self = this, args = arguments;
26
+ return new Promise(function(resolve, reject) {
27
+ var gen = fn.apply(self, args);
28
+ function _next(value) {
29
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
30
+ }
31
+ function _throw(err) {
32
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
33
+ }
34
+ _next(undefined);
35
+ });
28
36
  };
29
- var rejected = (value) => {
30
- try {
31
- step(generator.throw(value));
32
- } catch (e) {
33
- reject(e);
34
- }
37
+ }
38
+ function _define_property(obj, key, value) {
39
+ if (key in obj) {
40
+ Object.defineProperty(obj, key, {
41
+ value: value,
42
+ enumerable: true,
43
+ configurable: true,
44
+ writable: true
45
+ });
46
+ } else {
47
+ obj[key] = value;
48
+ }
49
+ return obj;
50
+ }
51
+ function _iterable_to_array_limit(arr, i) {
52
+ var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
53
+ if (_i == null) return;
54
+ var _arr = [];
55
+ var _n = true;
56
+ var _d = false;
57
+ var _s, _e;
58
+ try {
59
+ for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
60
+ _arr.push(_s.value);
61
+ if (i && _arr.length === i) break;
62
+ }
63
+ } catch (err) {
64
+ _d = true;
65
+ _e = err;
66
+ } finally{
67
+ try {
68
+ if (!_n && _i["return"] != null) _i["return"]();
69
+ } finally{
70
+ if (_d) throw _e;
71
+ }
72
+ }
73
+ return _arr;
74
+ }
75
+ function _non_iterable_rest() {
76
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
77
+ }
78
+ function _object_spread(target) {
79
+ for(var i = 1; i < arguments.length; i++){
80
+ var source = arguments[i] != null ? arguments[i] : {};
81
+ var ownKeys = Object.keys(source);
82
+ if (typeof Object.getOwnPropertySymbols === "function") {
83
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
84
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
85
+ }));
86
+ }
87
+ ownKeys.forEach(function(key) {
88
+ _define_property(target, key, source[key]);
89
+ });
90
+ }
91
+ return target;
92
+ }
93
+ function ownKeys(object, enumerableOnly) {
94
+ var keys = Object.keys(object);
95
+ if (Object.getOwnPropertySymbols) {
96
+ var symbols = Object.getOwnPropertySymbols(object);
97
+ if (enumerableOnly) {
98
+ symbols = symbols.filter(function(sym) {
99
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
100
+ });
101
+ }
102
+ keys.push.apply(keys, symbols);
103
+ }
104
+ return keys;
105
+ }
106
+ function _object_spread_props(target, source) {
107
+ source = source != null ? source : {};
108
+ if (Object.getOwnPropertyDescriptors) {
109
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
110
+ } else {
111
+ ownKeys(Object(source)).forEach(function(key) {
112
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
113
+ });
114
+ }
115
+ return target;
116
+ }
117
+ function _sliced_to_array(arr, i) {
118
+ return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
119
+ }
120
+ function _type_of(obj) {
121
+ "@swc/helpers - typeof";
122
+ return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
123
+ }
124
+ function _unsupported_iterable_to_array(o, minLen) {
125
+ if (!o) return;
126
+ if (typeof o === "string") return _array_like_to_array(o, minLen);
127
+ var n = Object.prototype.toString.call(o).slice(8, -1);
128
+ if (n === "Object" && o.constructor) n = o.constructor.name;
129
+ if (n === "Map" || n === "Set") return Array.from(n);
130
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
131
+ }
132
+ function _ts_generator(thisArg, body) {
133
+ var f, y, t, g, _ = {
134
+ label: 0,
135
+ sent: function() {
136
+ if (t[0] & 1) throw t[1];
137
+ return t[1];
138
+ },
139
+ trys: [],
140
+ ops: []
35
141
  };
36
- var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
37
- step((generator = generator.apply(__this, __arguments)).next());
38
- });
39
- };
40
-
41
- // src/Workspace/File/FileComponent.tsx
142
+ return g = {
143
+ next: verb(0),
144
+ "throw": verb(1),
145
+ "return": verb(2)
146
+ }, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
147
+ return this;
148
+ }), g;
149
+ function verb(n) {
150
+ return function(v) {
151
+ return step([
152
+ n,
153
+ v
154
+ ]);
155
+ };
156
+ }
157
+ function step(op) {
158
+ if (f) throw new TypeError("Generator is already executing.");
159
+ while(_)try {
160
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
161
+ if (y = 0, t) op = [
162
+ op[0] & 2,
163
+ t.value
164
+ ];
165
+ switch(op[0]){
166
+ case 0:
167
+ case 1:
168
+ t = op;
169
+ break;
170
+ case 4:
171
+ _.label++;
172
+ return {
173
+ value: op[1],
174
+ done: false
175
+ };
176
+ case 5:
177
+ _.label++;
178
+ y = op[1];
179
+ op = [
180
+ 0
181
+ ];
182
+ continue;
183
+ case 7:
184
+ op = _.ops.pop();
185
+ _.trys.pop();
186
+ continue;
187
+ default:
188
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
189
+ _ = 0;
190
+ continue;
191
+ }
192
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
193
+ _.label = op[1];
194
+ break;
195
+ }
196
+ if (op[0] === 6 && _.label < t[1]) {
197
+ _.label = t[1];
198
+ t = op;
199
+ break;
200
+ }
201
+ if (t && _.label < t[2]) {
202
+ _.label = t[2];
203
+ _.ops.push(op);
204
+ break;
205
+ }
206
+ if (t[2]) _.ops.pop();
207
+ _.trys.pop();
208
+ continue;
209
+ }
210
+ op = body.call(thisArg, _);
211
+ } catch (e) {
212
+ op = [
213
+ 6,
214
+ e
215
+ ];
216
+ y = 0;
217
+ } finally{
218
+ f = t = 0;
219
+ }
220
+ if (op[0] & 5) throw op[1];
221
+ return {
222
+ value: op[0] ? op[1] : void 0,
223
+ done: true
224
+ };
225
+ }
226
+ }
42
227
  import { ConfigProvider, Image, Input, Spin, Typography, message } from "antd";
43
- import {
44
- Check,
45
- ChevronDown as DownIcon,
46
- Download as DownloadIcon,
47
- Eye as EyeIcon,
48
- Locate,
49
- ChevronRight as RightIcon,
50
- Search,
51
- SquareArrowOutUpRight as ShareIcon
52
- } from "@sofa-design/icons";
228
+ import { Check, ChevronDown as DownIcon, Download as DownloadIcon, Eye as EyeIcon, Locate, ChevronRight as RightIcon, Search, SquareArrowOutUpRight as ShareIcon } from "@sofa-design/icons";
53
229
  import { Empty } from "antd";
54
230
  import classNames from "classnames";
55
231
  import React, { useContext, useEffect, useRef, useState } from "react";
@@ -60,775 +236,812 @@ import { fileTypeProcessor, isImageFile } from "./FileTypeProcessor";
60
236
  import { PreviewComponent } from "./PreviewComponent";
61
237
  import { useFileStyle } from "./style";
62
238
  import { generateUniqueId, getFileTypeIcon, getGroupIcon } from "./utils";
63
- var handleKeyboardEvent = (e, callback) => {
64
- if (e.key === "Enter" || e.key === " ") {
65
- callback(e);
66
- }
67
- };
68
- var handleFileDownload = (file) => {
69
- let blobUrl = null;
70
- try {
71
- const link = document.createElement("a");
72
- if (file.url) {
73
- link.href = file.url;
74
- } else if (file.content) {
75
- const blob = new Blob([file.content], { type: "text/plain" });
76
- blobUrl = URL.createObjectURL(blob);
77
- link.href = blobUrl;
78
- } else if (file.file instanceof File || file.file instanceof Blob) {
79
- blobUrl = URL.createObjectURL(file.file);
80
- link.href = blobUrl;
81
- } else {
82
- return;
239
+ // 通用的键盘事件处理函数
240
+ var handleKeyboardEvent = function(e, callback) {
241
+ if (e.key === 'Enter' || e.key === ' ') {
242
+ callback(e);
83
243
  }
84
- link.download = file.name || (file.file instanceof File ? file.file.name : "");
85
- document.body.appendChild(link);
86
- link.click();
87
- document.body.removeChild(link);
88
- } finally {
89
- if (blobUrl) {
90
- URL.revokeObjectURL(blobUrl);
91
- }
92
- }
93
244
  };
94
- var handleDefaultShare = (file, locale) => __async(void 0, null, function* () {
95
- try {
96
- const shareUrl = file.url || file.previewUrl || window.location.href;
97
- yield navigator.clipboard.writeText(shareUrl);
98
- message.success({
99
- icon: /* @__PURE__ */ React.createElement(
100
- Check,
101
- {
102
- style: {
103
- fontSize: 16,
104
- marginRight: 8,
105
- color: "var(--color-green-control-fill-primary)"
106
- }
245
+ // 通用的下载处理函数
246
+ var handleFileDownload = function(file) {
247
+ var blobUrl = null;
248
+ try {
249
+ // 创建下载链接
250
+ var link = document.createElement('a');
251
+ if (file.url) {
252
+ // 使用url作为下载链接
253
+ link.href = file.url;
254
+ } else if (file.content) {
255
+ // 使用文件内容创建 Blob 对象
256
+ var blob = new Blob([
257
+ file.content
258
+ ], {
259
+ type: 'text/plain'
260
+ });
261
+ blobUrl = URL.createObjectURL(blob);
262
+ link.href = blobUrl;
263
+ } else if (file.file instanceof File || file.file instanceof Blob) {
264
+ // 处理 File 或 Blob 对象
265
+ blobUrl = URL.createObjectURL(file.file);
266
+ link.href = blobUrl;
267
+ } else {
268
+ return; // 没有可下载的内容
107
269
  }
108
- ),
109
- content: /* @__PURE__ */ React.createElement(
110
- "span",
111
- {
112
- style: {
113
- font: "var(--font-text-body-emphasized-base)",
114
- color: "var(--color-gray-text-default)"
115
- }
116
- },
117
- (locale == null ? void 0 : locale["workspace.file.linkCopied"]) || "已复制链接"
118
- )
270
+ // 设置文件名(如果是 File 对象且没有指定文件名,使用 File 对象的名称)
271
+ link.download = file.name || (file.file instanceof File ? file.file.name : '');
272
+ // 执行下载
273
+ document.body.appendChild(link);
274
+ link.click();
275
+ document.body.removeChild(link);
276
+ } finally{
277
+ // 清理 Blob URL
278
+ if (blobUrl) {
279
+ URL.revokeObjectURL(blobUrl);
280
+ }
281
+ }
282
+ };
283
+ // 通用的默认分享处理函数
284
+ var handleDefaultShare = /*#__PURE__*/ function() {
285
+ var _ref = _async_to_generator(function(file, locale) {
286
+ var shareUrl, error;
287
+ return _ts_generator(this, function(_state) {
288
+ switch(_state.label){
289
+ case 0:
290
+ _state.trys.push([
291
+ 0,
292
+ 2,
293
+ ,
294
+ 3
295
+ ]);
296
+ shareUrl = file.url || file.previewUrl || window.location.href;
297
+ return [
298
+ 4,
299
+ navigator.clipboard.writeText(shareUrl)
300
+ ];
301
+ case 1:
302
+ _state.sent();
303
+ message.success({
304
+ icon: /*#__PURE__*/ React.createElement(Check, {
305
+ style: {
306
+ fontSize: 16,
307
+ marginRight: 8,
308
+ color: 'var(--color-green-control-fill-primary)'
309
+ }
310
+ }),
311
+ content: /*#__PURE__*/ React.createElement("span", {
312
+ style: {
313
+ font: 'var(--font-text-body-emphasized-base)',
314
+ color: 'var(--color-gray-text-default)'
315
+ }
316
+ }, (locale === null || locale === void 0 ? void 0 : locale['workspace.file.linkCopied']) || '已复制链接')
317
+ });
318
+ return [
319
+ 3,
320
+ 3
321
+ ];
322
+ case 2:
323
+ error = _state.sent();
324
+ // 如果复制失败,显示错误提示
325
+ message.error((locale === null || locale === void 0 ? void 0 : locale['workspace.file.copyFailed']) || '复制失败');
326
+ return [
327
+ 3,
328
+ 3
329
+ ];
330
+ case 3:
331
+ return [
332
+ 2
333
+ ];
334
+ }
335
+ });
119
336
  });
120
- } catch (error) {
121
- message.error((locale == null ? void 0 : locale["workspace.file.copyFailed"]) || "复制失败");
122
- }
123
- });
124
- var ensureNodeWithId = (node) => __spreadProps(__spreadValues({}, node), {
125
- id: node.id || generateUniqueId(node)
126
- });
127
- var getPreviewSource = (file) => {
128
- return file.previewUrl || file.url || "";
337
+ return function handleDefaultShare(file, locale) {
338
+ return _ref.apply(this, arguments);
339
+ };
340
+ }();
341
+ // 确保节点有唯一ID的辅助函数
342
+ var ensureNodeWithId = function(node) {
343
+ return _object_spread_props(_object_spread({}, node), {
344
+ id: node.id || generateUniqueId(node)
345
+ });
346
+ };
347
+ // 获取文件预览源的辅助函数
348
+ var getPreviewSource = function(file) {
349
+ return file.previewUrl || file.url || '';
350
+ };
351
+ var AccessibleButton = function(param) {
352
+ var icon = param.icon, onClick = param.onClick, className = param.className, ariaLabel = param.ariaLabel, id = param.id;
353
+ return /*#__PURE__*/ React.createElement("div", {
354
+ id: id,
355
+ className: className,
356
+ onClick: onClick,
357
+ role: "button",
358
+ tabIndex: 0,
359
+ onKeyDown: function(e) {
360
+ return handleKeyboardEvent(e, onClick);
361
+ },
362
+ "aria-label": ariaLabel
363
+ }, icon);
129
364
  };
130
- var AccessibleButton = ({
131
- icon,
132
- onClick,
133
- className,
134
- ariaLabel,
135
- id
136
- }) => /* @__PURE__ */ React.createElement(
137
- "div",
138
- {
139
- id,
140
- className,
141
- onClick,
142
- role: "button",
143
- tabIndex: 0,
144
- onKeyDown: (e) => handleKeyboardEvent(e, onClick),
145
- "aria-label": ariaLabel
146
- },
147
- icon
148
- );
149
- var SearchInput = React.memo(
150
- ({ keyword, onChange, searchPlaceholder, prefixCls, hashId, locale }) => {
151
- const inputRef = useRef(null);
152
- return /* @__PURE__ */ React.createElement("div", { className: classNames(`${prefixCls}-search`, hashId) }, /* @__PURE__ */ React.createElement(
153
- Input,
154
- {
365
+ var SearchInput = /*#__PURE__*/ React.memo(function(param) {
366
+ var keyword = param.keyword, onChange = param.onChange, searchPlaceholder = param.searchPlaceholder, prefixCls = param.prefixCls, hashId = param.hashId, locale = param.locale;
367
+ var inputRef = useRef(null);
368
+ return /*#__PURE__*/ React.createElement("div", {
369
+ className: classNames("".concat(prefixCls, "-search"), hashId)
370
+ }, /*#__PURE__*/ React.createElement(Input, {
155
371
  ref: inputRef,
156
- key: "file-search-input",
157
- style: { marginBottom: 8 },
372
+ key: "file-search-input" // 添加稳定的 key
373
+ ,
374
+ style: {
375
+ marginBottom: 8
376
+ },
158
377
  allowClear: true,
159
- placeholder: searchPlaceholder || (locale == null ? void 0 : locale["workspace.searchPlaceholder"]) || "搜索文件名",
160
- prefix: /* @__PURE__ */ React.createElement(
161
- Search,
162
- {
378
+ placeholder: searchPlaceholder || (locale === null || locale === void 0 ? void 0 : locale['workspace.searchPlaceholder']) || '搜索文件名',
379
+ prefix: /*#__PURE__*/ React.createElement(Search, {
163
380
  style: {
164
- color: "var(--color-gray-text-secondary)",
165
- fontSize: 16
381
+ color: 'var(--color-gray-text-secondary)',
382
+ fontSize: 16
166
383
  }
167
- }
168
- ),
169
- value: keyword != null ? keyword : "",
170
- onChange: (e) => onChange == null ? void 0 : onChange(e.target.value)
171
- }
172
- ));
173
- }
174
- );
175
- SearchInput.displayName = "SearchInput";
176
- var FileItemComponent = ({
177
- file,
178
- onClick,
179
- onDownload,
180
- onPreview,
181
- onShare,
182
- onLocate,
183
- prefixCls,
184
- hashId,
185
- bindDomId = false
186
- }) => {
187
- const { getPrefixCls } = useContext(ConfigProvider.ConfigContext);
188
- const { locale } = useContext(I18nContext);
189
- const finalPrefixCls = prefixCls || getPrefixCls("workspace-file");
190
- const fileWithId = ensureNodeWithId(file);
191
- const fileTypeInfo = fileTypeProcessor.inferFileType(fileWithId);
192
- const handleClick = () => {
193
- if (onClick) {
194
- onClick(fileWithId);
195
- return;
196
- }
197
- if (onPreview) {
198
- onPreview(fileWithId);
199
- }
200
- };
201
- const showDownloadButton = (() => {
202
- if (fileWithId.canDownload !== void 0) {
203
- return fileWithId.canDownload;
204
- }
205
- return Boolean(
206
- onDownload || fileWithId.url || fileWithId.content || fileWithId.file
207
- );
208
- })();
209
- const handleDownload = (e) => {
210
- e.stopPropagation();
211
- if (onDownload) {
212
- onDownload(fileWithId);
213
- return;
214
- }
215
- handleFileDownload(fileWithId);
216
- };
217
- const handlePreview = (e) => {
218
- e.stopPropagation();
219
- onPreview == null ? void 0 : onPreview(fileWithId);
220
- };
221
- const handleShare = (e) => {
222
- e.stopPropagation();
223
- if (onShare) {
224
- onShare(fileWithId, {
225
- anchorEl: e.currentTarget,
226
- origin: "list"
227
- });
228
- return;
229
- }
230
- handleDefaultShare(fileWithId, locale);
231
- };
232
- const showPreviewButton = (() => {
233
- if (fileWithId.canPreview !== void 0) {
234
- return fileWithId.canPreview;
235
- }
236
- return onPreview && (isImageFile(fileWithId) ? !!(fileWithId.url || fileWithId.previewUrl) : fileTypeProcessor.processFile(fileWithId).canPreview);
237
- })();
238
- const showShareButton = fileWithId.canShare === true;
239
- const showLocationButton = fileWithId.canLocate === true;
240
- const handleLocate = (e) => {
241
- e.stopPropagation();
242
- onLocate == null ? void 0 : onLocate(fileWithId);
243
- };
244
- return /* @__PURE__ */ React.createElement(
245
- AccessibleButton,
246
- {
247
- icon: /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement("div", { className: classNames(`${finalPrefixCls}-item-icon`, hashId) }, getFileTypeIcon(
248
- fileTypeInfo.fileType,
249
- fileWithId.icon,
250
- fileWithId.name
251
- )), /* @__PURE__ */ React.createElement("div", { className: classNames(`${finalPrefixCls}-item-info`, hashId) }, /* @__PURE__ */ React.createElement("div", { className: classNames(`${finalPrefixCls}-item-name`, hashId) }, /* @__PURE__ */ React.createElement(Typography.Text, { ellipsis: { tooltip: fileWithId.name } }, fileWithId.name)), /* @__PURE__ */ React.createElement(
252
- "div",
253
- {
254
- className: classNames(`${finalPrefixCls}-item-details`, hashId)
255
- },
256
- /* @__PURE__ */ React.createElement(Typography.Text, { type: "secondary", ellipsis: true }, /* @__PURE__ */ React.createElement(
257
- "span",
258
- {
259
- className: classNames(`${finalPrefixCls}-item-type`, hashId)
260
- },
261
- fileTypeInfo.displayType || fileTypeInfo.fileType
262
- ), fileWithId.size && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(
263
- "span",
264
- {
265
- className: classNames(
266
- `${finalPrefixCls}-item-separator`,
267
- hashId
268
- )
269
- },
270
- "|"
271
- ), /* @__PURE__ */ React.createElement(
272
- "span",
273
- {
274
- className: classNames(
275
- `${finalPrefixCls}-item-size`,
276
- hashId
277
- )
278
- },
279
- formatFileSize(fileWithId.size)
280
- )), fileWithId.lastModified && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(
281
- "span",
282
- {
283
- className: classNames(
284
- `${finalPrefixCls}-item-separator`,
285
- hashId
286
- )
287
- },
288
- "|"
289
- ), /* @__PURE__ */ React.createElement(
290
- "span",
291
- {
292
- className: classNames(
293
- `${finalPrefixCls}-item-time`,
294
- hashId
295
- )
296
- },
297
- formatLastModified(fileWithId.lastModified)
298
- )))
299
- )), /* @__PURE__ */ React.createElement(
300
- "div",
301
- {
302
- className: classNames(`${finalPrefixCls}-item-actions`, hashId),
303
- onClick: (e) => e.stopPropagation()
304
- },
305
- showPreviewButton && /* @__PURE__ */ React.createElement(
306
- ActionIconBox,
307
- {
308
- title: (locale == null ? void 0 : locale["workspace.file.preview"]) || "预览",
384
+ }),
385
+ value: keyword !== null && keyword !== void 0 ? keyword : '',
386
+ onChange: function(e) {
387
+ return onChange === null || onChange === void 0 ? void 0 : onChange(e.target.value);
388
+ }
389
+ }));
390
+ });
391
+ SearchInput.displayName = 'SearchInput';
392
+ // 文件项组件
393
+ var FileItemComponent = function(param) {
394
+ var file = param.file, onClick = param.onClick, onDownload = param.onDownload, onPreview = param.onPreview, onShare = param.onShare, onLocate = param.onLocate, prefixCls = param.prefixCls, hashId = param.hashId, _param_bindDomId = param.bindDomId, bindDomId = _param_bindDomId === void 0 ? false : _param_bindDomId;
395
+ var getPrefixCls = useContext(ConfigProvider.ConfigContext).getPrefixCls;
396
+ var locale = useContext(I18nContext).locale;
397
+ var finalPrefixCls = prefixCls || getPrefixCls('workspace-file');
398
+ // 确保文件有唯一ID
399
+ var fileWithId = ensureNodeWithId(file);
400
+ var fileTypeInfo = fileTypeProcessor.inferFileType(fileWithId);
401
+ var handleClick = function() {
402
+ // 如果有传入 onClick 事件,优先使用
403
+ if (onClick) {
404
+ onClick(fileWithId);
405
+ return;
406
+ }
407
+ // 如果没有传入 onClick 事件,默认打开预览页面
408
+ if (onPreview) {
409
+ onPreview(fileWithId);
410
+ }
411
+ };
412
+ // 判断是否显示下载按钮:优先使用用户 canDownload;否则当存在 onDownload/url/content/file 时显示
413
+ var showDownloadButton = function() {
414
+ if (fileWithId.canDownload !== undefined) {
415
+ return fileWithId.canDownload;
416
+ }
417
+ return Boolean(onDownload || fileWithId.url || fileWithId.content || fileWithId.file);
418
+ }();
419
+ var handleDownload = function(e) {
420
+ e.stopPropagation();
421
+ // 优先使用用户传入的下载方法
422
+ if (onDownload) {
423
+ onDownload(fileWithId);
424
+ return;
425
+ }
426
+ handleFileDownload(fileWithId);
427
+ };
428
+ var handlePreview = function(e) {
429
+ e.stopPropagation();
430
+ onPreview === null || onPreview === void 0 ? void 0 : onPreview(fileWithId);
431
+ };
432
+ var handleShare = function(e) {
433
+ e.stopPropagation();
434
+ // 如果有自定义的分享方法,优先使用
435
+ if (onShare) {
436
+ onShare(fileWithId, {
437
+ anchorEl: e.currentTarget,
438
+ origin: 'list'
439
+ });
440
+ return;
441
+ }
442
+ // 使用默认分享行为
443
+ handleDefaultShare(fileWithId, locale);
444
+ };
445
+ // 判断是否显示预览按钮:
446
+ // 1. 如果用户设置了 canPreview,优先使用用户的设置
447
+ // 2. 如果没有设置,则使用系统默认逻辑:图片类型有 url 就可以预览;其他类型按原有逻辑判断
448
+ var showPreviewButton = function() {
449
+ // 如果用户明确设置了 canPreview,直接使用用户设置
450
+ if (fileWithId.canPreview !== undefined) {
451
+ return fileWithId.canPreview;
452
+ }
453
+ // 否则使用系统默认逻辑
454
+ return onPreview && (isImageFile(fileWithId) ? !!(fileWithId.url || fileWithId.previewUrl) : fileTypeProcessor.processFile(fileWithId).canPreview);
455
+ }();
456
+ var showShareButton = fileWithId.canShare === true;
457
+ var showLocationButton = fileWithId.canLocate === true;
458
+ var handleLocate = function(e) {
459
+ e.stopPropagation();
460
+ onLocate === null || onLocate === void 0 ? void 0 : onLocate(fileWithId);
461
+ };
462
+ return /*#__PURE__*/ React.createElement(AccessibleButton, {
463
+ icon: /*#__PURE__*/ React.createElement(React.Fragment, null, /*#__PURE__*/ React.createElement("div", {
464
+ className: classNames("".concat(finalPrefixCls, "-item-icon"), hashId)
465
+ }, getFileTypeIcon(fileTypeInfo.fileType, fileWithId.icon, fileWithId.name)), /*#__PURE__*/ React.createElement("div", {
466
+ className: classNames("".concat(finalPrefixCls, "-item-info"), hashId)
467
+ }, /*#__PURE__*/ React.createElement("div", {
468
+ className: classNames("".concat(finalPrefixCls, "-item-name"), hashId)
469
+ }, /*#__PURE__*/ React.createElement(Typography.Text, {
470
+ ellipsis: {
471
+ tooltip: fileWithId.name
472
+ }
473
+ }, fileWithId.name)), /*#__PURE__*/ React.createElement("div", {
474
+ className: classNames("".concat(finalPrefixCls, "-item-details"), hashId)
475
+ }, /*#__PURE__*/ React.createElement(Typography.Text, {
476
+ type: "secondary",
477
+ ellipsis: true
478
+ }, /*#__PURE__*/ React.createElement("span", {
479
+ className: classNames("".concat(finalPrefixCls, "-item-type"), hashId)
480
+ }, fileTypeInfo.displayType || fileTypeInfo.fileType), fileWithId.size && /*#__PURE__*/ React.createElement(React.Fragment, null, /*#__PURE__*/ React.createElement("span", {
481
+ className: classNames("".concat(finalPrefixCls, "-item-separator"), hashId)
482
+ }, "|"), /*#__PURE__*/ React.createElement("span", {
483
+ className: classNames("".concat(finalPrefixCls, "-item-size"), hashId)
484
+ }, formatFileSize(fileWithId.size))), fileWithId.lastModified && /*#__PURE__*/ React.createElement(React.Fragment, null, /*#__PURE__*/ React.createElement("span", {
485
+ className: classNames("".concat(finalPrefixCls, "-item-separator"), hashId)
486
+ }, "|"), /*#__PURE__*/ React.createElement("span", {
487
+ className: classNames("".concat(finalPrefixCls, "-item-time"), hashId)
488
+ }, formatLastModified(fileWithId.lastModified)))))), /*#__PURE__*/ React.createElement("div", {
489
+ className: classNames("".concat(finalPrefixCls, "-item-actions"), hashId),
490
+ onClick: function(e) {
491
+ return e.stopPropagation();
492
+ }
493
+ }, showPreviewButton && /*#__PURE__*/ React.createElement(ActionIconBox, {
494
+ title: (locale === null || locale === void 0 ? void 0 : locale['workspace.file.preview']) || '预览',
309
495
  onClick: handlePreview,
310
- tooltipProps: { mouseEnterDelay: 0.3 },
311
- className: classNames(
312
- `${finalPrefixCls}-item-action-btn`,
313
- hashId
314
- )
315
- },
316
- /* @__PURE__ */ React.createElement(EyeIcon, null)
317
- ),
318
- showLocationButton && /* @__PURE__ */ React.createElement(
319
- ActionIconBox,
320
- {
321
- title: (locale == null ? void 0 : locale["workspace.file.location"]) || "定位",
496
+ tooltipProps: {
497
+ mouseEnterDelay: 0.3
498
+ },
499
+ className: classNames("".concat(finalPrefixCls, "-item-action-btn"), hashId)
500
+ }, /*#__PURE__*/ React.createElement(EyeIcon, null)), showLocationButton && /*#__PURE__*/ React.createElement(ActionIconBox, {
501
+ title: (locale === null || locale === void 0 ? void 0 : locale['workspace.file.location']) || '定位',
322
502
  onClick: handleLocate,
323
- tooltipProps: { mouseEnterDelay: 0.3 },
324
- className: classNames(
325
- `${finalPrefixCls}-item-action-btn`,
326
- hashId
327
- )
328
- },
329
- /* @__PURE__ */ React.createElement(Locate, null)
330
- ),
331
- showShareButton && /* @__PURE__ */ React.createElement(
332
- ActionIconBox,
333
- {
334
- title: (locale == null ? void 0 : locale["workspace.file.share"]) || "分享",
503
+ tooltipProps: {
504
+ mouseEnterDelay: 0.3
505
+ },
506
+ className: classNames("".concat(finalPrefixCls, "-item-action-btn"), hashId)
507
+ }, /*#__PURE__*/ React.createElement(Locate, null)), showShareButton && /*#__PURE__*/ React.createElement(ActionIconBox, {
508
+ title: (locale === null || locale === void 0 ? void 0 : locale['workspace.file.share']) || '分享',
335
509
  onClick: handleShare,
336
- tooltipProps: { mouseEnterDelay: 0.3 },
337
- className: classNames(
338
- `${finalPrefixCls}-item-action-btn`,
339
- hashId
340
- )
341
- },
342
- /* @__PURE__ */ React.createElement(ShareIcon, null)
343
- ),
344
- showDownloadButton && /* @__PURE__ */ React.createElement(
345
- ActionIconBox,
346
- {
347
- title: (locale == null ? void 0 : locale["workspace.file.download"]) || "下载",
510
+ tooltipProps: {
511
+ mouseEnterDelay: 0.3
512
+ },
513
+ className: classNames("".concat(finalPrefixCls, "-item-action-btn"), hashId)
514
+ }, /*#__PURE__*/ React.createElement(ShareIcon, null)), showDownloadButton && /*#__PURE__*/ React.createElement(ActionIconBox, {
515
+ title: (locale === null || locale === void 0 ? void 0 : locale['workspace.file.download']) || '下载',
348
516
  onClick: handleDownload,
349
- tooltipProps: { mouseEnterDelay: 0.3 },
350
- className: classNames(
351
- `${finalPrefixCls}-item-action-btn`,
352
- hashId
353
- )
354
- },
355
- /* @__PURE__ */ React.createElement(DownloadIcon, null)
356
- )
357
- )),
358
- onClick: handleClick,
359
- className: classNames(`${finalPrefixCls}-item`, hashId),
360
- ariaLabel: `${(locale == null ? void 0 : locale["workspace.file"]) || "文件"}:${fileWithId.name}`,
361
- id: bindDomId ? fileWithId.id : void 0
362
- }
363
- );
517
+ tooltipProps: {
518
+ mouseEnterDelay: 0.3
519
+ },
520
+ className: classNames("".concat(finalPrefixCls, "-item-action-btn"), hashId)
521
+ }, /*#__PURE__*/ React.createElement(DownloadIcon, null)))),
522
+ onClick: handleClick,
523
+ className: classNames("".concat(finalPrefixCls, "-item"), hashId),
524
+ ariaLabel: "".concat((locale === null || locale === void 0 ? void 0 : locale['workspace.file']) || '文件', ":").concat(fileWithId.name),
525
+ id: bindDomId ? fileWithId.id : undefined
526
+ });
364
527
  };
365
- var GroupHeader = ({ group, onToggle, onGroupDownload, prefixCls, hashId }) => {
366
- const { getPrefixCls } = useContext(ConfigProvider.ConfigContext);
367
- const { locale } = useContext(I18nContext);
368
- const finalPrefixCls = prefixCls || getPrefixCls("workspace-file");
369
- const groupTypeInfo = fileTypeProcessor.inferFileType(group);
370
- const groupType = group.type || groupTypeInfo.fileType;
371
- const handleToggle = () => {
372
- onToggle == null ? void 0 : onToggle(group.id, groupType, !group.collapsed);
373
- };
374
- const handleDownload = (e) => {
375
- e.stopPropagation();
376
- onGroupDownload == null ? void 0 : onGroupDownload(group.children, groupType);
377
- };
378
- const CollapseIcon = group.collapsed ? RightIcon : DownIcon;
379
- const groupIcon = getGroupIcon(group, groupType, group.icon);
380
- const showDownloadButton = (() => {
381
- if (group.canDownload !== void 0) {
382
- return group.canDownload;
383
- }
384
- return Boolean(onGroupDownload);
385
- })();
386
- return /* @__PURE__ */ React.createElement(
387
- AccessibleButton,
388
- {
389
- icon: /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(
390
- "div",
391
- {
392
- className: classNames(
393
- `${finalPrefixCls}-group-header-left`,
394
- hashId
395
- )
396
- },
397
- /* @__PURE__ */ React.createElement(
398
- CollapseIcon,
399
- {
400
- className: classNames(
401
- `${finalPrefixCls}-group-toggle-icon`,
402
- hashId
403
- )
404
- }
405
- ),
406
- /* @__PURE__ */ React.createElement(
407
- "div",
408
- {
409
- className: classNames(
410
- `${finalPrefixCls}-group-type-icon`,
411
- hashId
412
- )
413
- },
414
- groupIcon
415
- ),
416
- /* @__PURE__ */ React.createElement(
417
- "span",
418
- {
419
- className: classNames(
420
- `${finalPrefixCls}-group-type-name`,
421
- hashId
422
- )
423
- },
424
- group.name
425
- )
426
- ), /* @__PURE__ */ React.createElement(
427
- "div",
428
- {
429
- className: classNames(
430
- `${finalPrefixCls}-group-header-right`,
431
- hashId
432
- )
433
- },
434
- /* @__PURE__ */ React.createElement(
435
- "span",
436
- {
437
- className: classNames(`${finalPrefixCls}-group-count`, hashId)
438
- },
439
- group.children.length
440
- ),
441
- showDownloadButton && /* @__PURE__ */ React.createElement(
442
- ActionIconBox,
443
- {
444
- title: (locale == null ? void 0 : locale["workspace.file.download"]) || "下载",
528
+ // 分组标题栏组件
529
+ var GroupHeader = function(param) {
530
+ var group = param.group, onToggle = param.onToggle, onGroupDownload = param.onGroupDownload, prefixCls = param.prefixCls, hashId = param.hashId;
531
+ var getPrefixCls = useContext(ConfigProvider.ConfigContext).getPrefixCls;
532
+ var locale = useContext(I18nContext).locale;
533
+ var finalPrefixCls = prefixCls || getPrefixCls('workspace-file');
534
+ var groupTypeInfo = fileTypeProcessor.inferFileType(group);
535
+ var groupType = group.type || groupTypeInfo.fileType;
536
+ var handleToggle = function() {
537
+ onToggle === null || onToggle === void 0 ? void 0 : onToggle(group.id, groupType, !group.collapsed);
538
+ };
539
+ var handleDownload = function(e) {
540
+ e.stopPropagation();
541
+ onGroupDownload === null || onGroupDownload === void 0 ? void 0 : onGroupDownload(group.children, groupType);
542
+ };
543
+ var CollapseIcon = group.collapsed ? RightIcon : DownIcon;
544
+ // 获取分组图标
545
+ var groupIcon = getGroupIcon(group, groupType, group.icon);
546
+ // 判断是否显示下载按钮:优先使用用户 canDownload;否则当存在 onGroupDownload 时显示
547
+ var showDownloadButton = function() {
548
+ if (group.canDownload !== undefined) {
549
+ return group.canDownload;
550
+ }
551
+ return Boolean(onGroupDownload);
552
+ }();
553
+ return /*#__PURE__*/ React.createElement(AccessibleButton, {
554
+ icon: /*#__PURE__*/ React.createElement(React.Fragment, null, /*#__PURE__*/ React.createElement("div", {
555
+ className: classNames("".concat(finalPrefixCls, "-group-header-left"), hashId)
556
+ }, /*#__PURE__*/ React.createElement(CollapseIcon, {
557
+ className: classNames("".concat(finalPrefixCls, "-group-toggle-icon"), hashId)
558
+ }), /*#__PURE__*/ React.createElement("div", {
559
+ className: classNames("".concat(finalPrefixCls, "-group-type-icon"), hashId)
560
+ }, groupIcon), /*#__PURE__*/ React.createElement("span", {
561
+ className: classNames("".concat(finalPrefixCls, "-group-type-name"), hashId)
562
+ }, group.name)), /*#__PURE__*/ React.createElement("div", {
563
+ className: classNames("".concat(finalPrefixCls, "-group-header-right"), hashId)
564
+ }, /*#__PURE__*/ React.createElement("span", {
565
+ className: classNames("".concat(finalPrefixCls, "-group-count"), hashId)
566
+ }, group.children.length), showDownloadButton && /*#__PURE__*/ React.createElement(ActionIconBox, {
567
+ title: (locale === null || locale === void 0 ? void 0 : locale['workspace.file.download']) || '下载',
445
568
  onClick: handleDownload,
446
- tooltipProps: { mouseEnterDelay: 0.3 },
447
- className: classNames(
448
- `${finalPrefixCls}-group-action-btn`,
449
- hashId
450
- )
451
- },
452
- /* @__PURE__ */ React.createElement(DownloadIcon, null)
453
- )
454
- )),
455
- onClick: handleToggle,
456
- className: classNames(`${finalPrefixCls}-group-header`, hashId),
457
- ariaLabel: `${group.collapsed ? (locale == null ? void 0 : locale["workspace.expand"]) || "展开" : (locale == null ? void 0 : locale["workspace.collapse"]) || "收起"}${group.name}${(locale == null ? void 0 : locale["workspace.group"]) || "分组"}`
458
- }
459
- );
569
+ tooltipProps: {
570
+ mouseEnterDelay: 0.3
571
+ },
572
+ className: classNames("".concat(finalPrefixCls, "-group-action-btn"), hashId)
573
+ }, /*#__PURE__*/ React.createElement(DownloadIcon, null)))),
574
+ onClick: handleToggle,
575
+ className: classNames("".concat(finalPrefixCls, "-group-header"), hashId),
576
+ ariaLabel: "".concat(group.collapsed ? (locale === null || locale === void 0 ? void 0 : locale['workspace.expand']) || '展开' : (locale === null || locale === void 0 ? void 0 : locale['workspace.collapse']) || '收起').concat(group.name).concat((locale === null || locale === void 0 ? void 0 : locale['workspace.group']) || '分组')
577
+ });
460
578
  };
461
- var FileGroupComponent = ({
462
- group,
463
- onToggle,
464
- onGroupDownload,
465
- onDownload,
466
- onFileClick,
467
- onPreview,
468
- onShare,
469
- onLocate,
470
- prefixCls,
471
- hashId,
472
- bindDomId
473
- }) => {
474
- const { getPrefixCls } = useContext(ConfigProvider.ConfigContext);
475
- const finalPrefixCls = prefixCls || getPrefixCls("workspace-file");
476
- return /* @__PURE__ */ React.createElement("div", { className: classNames(`${finalPrefixCls}-container--group`, hashId) }, /* @__PURE__ */ React.createElement(
477
- GroupHeader,
478
- {
479
- group,
480
- onToggle,
481
- onGroupDownload,
482
- prefixCls: finalPrefixCls,
483
- hashId
484
- }
485
- ), !group.collapsed && /* @__PURE__ */ React.createElement("div", { className: classNames(`${finalPrefixCls}-group-content`, hashId) }, group.children.map((file) => /* @__PURE__ */ React.createElement(
486
- FileItemComponent,
487
- {
488
- key: file.id,
489
- file,
490
- onClick: onFileClick,
491
- onDownload,
492
- onPreview,
493
- onShare,
494
- onLocate,
495
- prefixCls: finalPrefixCls,
496
- hashId,
497
- bindDomId: !!bindDomId
498
- }
499
- ))));
579
+ // 文件分组组件
580
+ var FileGroupComponent = function(param) {
581
+ var group = param.group, onToggle = param.onToggle, onGroupDownload = param.onGroupDownload, onDownload = param.onDownload, onFileClick = param.onFileClick, onPreview = param.onPreview, onShare = param.onShare, onLocate = param.onLocate, prefixCls = param.prefixCls, hashId = param.hashId, bindDomId = param.bindDomId;
582
+ var getPrefixCls = useContext(ConfigProvider.ConfigContext).getPrefixCls;
583
+ var finalPrefixCls = prefixCls || getPrefixCls('workspace-file');
584
+ return /*#__PURE__*/ React.createElement("div", {
585
+ className: classNames("".concat(finalPrefixCls, "-container--group"), hashId)
586
+ }, /*#__PURE__*/ React.createElement(GroupHeader, {
587
+ group: group,
588
+ onToggle: onToggle,
589
+ onGroupDownload: onGroupDownload,
590
+ prefixCls: finalPrefixCls,
591
+ hashId: hashId
592
+ }), !group.collapsed && /*#__PURE__*/ React.createElement("div", {
593
+ className: classNames("".concat(finalPrefixCls, "-group-content"), hashId)
594
+ }, group.children.map(function(file) {
595
+ return /*#__PURE__*/ React.createElement(FileItemComponent, {
596
+ key: file.id,
597
+ file: file,
598
+ onClick: onFileClick,
599
+ onDownload: onDownload,
600
+ onPreview: onPreview,
601
+ onShare: onShare,
602
+ onLocate: onLocate,
603
+ prefixCls: finalPrefixCls,
604
+ hashId: hashId,
605
+ bindDomId: !!bindDomId
606
+ });
607
+ })));
500
608
  };
501
- var FileComponent = ({
502
- nodes,
503
- onGroupDownload,
504
- onDownload,
505
- onShare,
506
- onFileClick,
507
- onLocate,
508
- onToggleGroup,
509
- onPreview,
510
- onBack,
511
- resetKey,
512
- markdownEditorProps,
513
- customActions,
514
- actionRef,
515
- loading,
516
- loadingRender,
517
- emptyRender,
518
- keyword,
519
- onChange,
520
- showSearch = false,
521
- searchPlaceholder,
522
- bindDomId = false
523
- }) => {
524
- const [previewFile, setPreviewFile] = useState(null);
525
- const [customPreviewContent, setCustomPreviewContent] = useState(null);
526
- const [customPreviewHeader, setCustomPreviewHeader] = useState(null);
527
- const [headerFileOverride, setHeaderFileOverride] = useState(null);
528
- const [imagePreview, setImagePreview] = useState({ visible: false, src: "" });
529
- const [collapsedGroups, setCollapsedGroups] = useState({});
530
- const previewRequestIdRef = useRef(0);
531
- const nodeIdCacheRef = useRef(
532
- /* @__PURE__ */ new WeakMap()
533
- );
534
- const safeNodes = nodes || [];
535
- const { getPrefixCls } = useContext(ConfigProvider.ConfigContext);
536
- const { locale } = useContext(I18nContext);
537
- const prefixCls = getPrefixCls("workspace-file");
538
- const { wrapSSR, hashId } = useFileStyle(prefixCls);
539
- const ensureNodeWithStableId = (node) => {
540
- if (node.id)
541
- return __spreadValues({}, node);
542
- let cachedId = nodeIdCacheRef.current.get(node);
543
- if (!cachedId) {
544
- cachedId = generateUniqueId(node);
545
- nodeIdCacheRef.current.set(node, cachedId);
546
- }
547
- return __spreadProps(__spreadValues({}, node), {
548
- id: cachedId
549
- });
550
- };
551
- const handleBackToList = () => {
552
- previewRequestIdRef.current++;
553
- setPreviewFile(null);
554
- setCustomPreviewContent(null);
555
- setCustomPreviewHeader(null);
556
- setHeaderFileOverride(null);
557
- };
558
- useEffect(() => {
559
- if (resetKey !== void 0 && previewFile) {
560
- handleBackToList();
561
- }
562
- }, [resetKey]);
563
- useEffect(() => {
564
- if (!previewFile)
565
- return;
566
- const findUpdatedFile = (nodesList) => {
567
- for (const node of nodesList) {
568
- if ("children" in node) {
569
- const found = findUpdatedFile(node.children);
570
- if (found)
571
- return found;
572
- } else {
573
- if (node.id && node.id === previewFile.id || node.name === previewFile.name && node.type === previewFile.type) {
574
- return node;
575
- }
609
+ export var FileComponent = function(param) {
610
+ var nodes = param.nodes, onGroupDownload = param.onGroupDownload, onDownload = param.onDownload, onShare = param.onShare, onFileClick = param.onFileClick, onLocate = param.onLocate, onToggleGroup = param.onToggleGroup, onPreview = param.onPreview, onBack = param.onBack, resetKey = param.resetKey, markdownEditorProps = param.markdownEditorProps, customActions = param.customActions, actionRef = param.actionRef, loading = param.loading, loadingRender = param.loadingRender, emptyRender = param.emptyRender, keyword = param.keyword, onChange = param.onChange, _param_showSearch = param.showSearch, showSearch = _param_showSearch === void 0 ? false : _param_showSearch, searchPlaceholder = param.searchPlaceholder, _param_bindDomId = param.bindDomId, bindDomId = _param_bindDomId === void 0 ? false : _param_bindDomId;
611
+ var _useState = _sliced_to_array(useState(null), 2), previewFile = _useState[0], setPreviewFile = _useState[1];
612
+ var _useState1 = _sliced_to_array(useState(null), 2), customPreviewContent = _useState1[0], setCustomPreviewContent = _useState1[1];
613
+ var _useState2 = _sliced_to_array(useState(null), 2), customPreviewHeader = _useState2[0], setCustomPreviewHeader = _useState2[1];
614
+ // 标题区域文件信息覆盖,仅影响展示
615
+ var _useState3 = _sliced_to_array(useState(null), 2), headerFileOverride = _useState3[0], setHeaderFileOverride = _useState3[1];
616
+ var _useState4 = _sliced_to_array(useState({
617
+ visible: false,
618
+ src: ''
619
+ }), 2), imagePreview = _useState4[0], setImagePreview = _useState4[1];
620
+ // 添加内部状态来管理分组的折叠状态
621
+ var _useState5 = _sliced_to_array(useState({}), 2), collapsedGroups = _useState5[0], setCollapsedGroups = _useState5[1];
622
+ // 追踪预览请求的序号,避免异步竞态
623
+ var previewRequestIdRef = useRef(0);
624
+ // 缓存节点 ID,避免每次渲染重新生成(使用 WeakMap 自动清理不再使用的节点)
625
+ var nodeIdCacheRef = useRef(new WeakMap());
626
+ var safeNodes = nodes || [];
627
+ // 使用 ConfigProvider 获取前缀类名
628
+ var getPrefixCls = useContext(ConfigProvider.ConfigContext).getPrefixCls;
629
+ var locale = useContext(I18nContext).locale;
630
+ var prefixCls = getPrefixCls('workspace-file');
631
+ var _useFileStyle = useFileStyle(prefixCls), wrapSSR = _useFileStyle.wrapSSR, hashId = _useFileStyle.hashId;
632
+ // 确保节点有稳定的唯一 ID(使用缓存)
633
+ var ensureNodeWithStableId = function(node) {
634
+ if (node.id) return _object_spread({}, node);
635
+ // 尝试从缓存获取 ID
636
+ var cachedId = nodeIdCacheRef.current.get(node);
637
+ if (!cachedId) {
638
+ // 生成新 ID 并缓存
639
+ cachedId = generateUniqueId(node);
640
+ nodeIdCacheRef.current.set(node, cachedId);
576
641
  }
577
- }
578
- return null;
642
+ return _object_spread_props(_object_spread({}, node), {
643
+ id: cachedId
644
+ });
579
645
  };
580
- const updatedFile = findUpdatedFile(safeNodes);
581
- if (updatedFile) {
582
- setPreviewFile(updatedFile);
583
- }
584
- }, [nodes]);
585
- const handleToggleGroup = (groupId, type, collapsed) => {
586
- setCollapsedGroups((prev) => __spreadProps(__spreadValues({}, prev), {
587
- [groupId]: collapsed
588
- }));
589
- onToggleGroup == null ? void 0 : onToggleGroup(type, collapsed);
590
- };
591
- const handleBack = () => __async(void 0, null, function* () {
592
- if (previewFile) {
593
- try {
594
- const result = yield onBack == null ? void 0 : onBack(previewFile);
595
- if (result === false)
596
- return;
597
- } catch (_) {
598
- }
599
- }
600
- handleBackToList();
601
- });
602
- const handleDownloadInPreview = (file) => {
603
- if (onDownload) {
604
- onDownload(file);
605
- return;
606
- }
607
- handleFileDownload(file);
608
- };
609
- const handlePreview = (file) => __async(void 0, null, function* () {
610
- if (onPreview) {
611
- const currentCallId = ++previewRequestIdRef.current;
612
- setPreviewFile(file);
613
- try {
614
- const previewData = yield onPreview(file);
615
- if (previewRequestIdRef.current !== currentCallId)
616
- return;
617
- if (previewData === false) {
618
- setCustomPreviewContent(null);
619
- setCustomPreviewHeader(null);
620
- setPreviewFile(null);
621
- return;
646
+ // 返回列表(供预览页调用)
647
+ var handleBackToList = function() {
648
+ // 使进行中的预览请求失效
649
+ previewRequestIdRef.current++;
650
+ setPreviewFile(null);
651
+ setCustomPreviewContent(null);
652
+ setCustomPreviewHeader(null);
653
+ setHeaderFileOverride(null);
654
+ };
655
+ // 监听 resetKey 变化,重置预览状态
656
+ useEffect(function() {
657
+ if (resetKey !== undefined && previewFile) {
658
+ // resetKey 变化且当前处于预览状态时,重置预览状态
659
+ handleBackToList();
622
660
  }
623
- if (previewData) {
624
- if (React.isValidElement(previewData) || typeof previewData === "string" || typeof previewData === "number" || typeof previewData === "boolean") {
625
- const content = React.isValidElement(previewData) ? React.cloneElement(previewData, {
626
- setPreviewHeader: (header) => setCustomPreviewHeader(header),
627
- back: handleBackToList,
628
- download: () => handleDownloadInPreview(file),
629
- share: () => {
630
- if (onShare) {
631
- onShare(file, void 0);
632
- } else {
633
- handleDefaultShare(file, locale);
661
+ }, [
662
+ resetKey
663
+ ]);
664
+ // 监听 nodes 变化,同步更新 previewFile
665
+ useEffect(function() {
666
+ if (!previewFile) return;
667
+ // 在所有节点中查找与当前预览文件匹配的文件
668
+ var findUpdatedFile = function(nodesList) {
669
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
670
+ try {
671
+ for(var _iterator = nodesList[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
672
+ var node = _step.value;
673
+ if ('children' in node) {
674
+ // 分组节点,递归查找子节点
675
+ var found = findUpdatedFile(node.children);
676
+ if (found) return found;
677
+ } else {
678
+ // 文件节点,比较 ID 或文件引用
679
+ if (node.id && node.id === previewFile.id || node.name === previewFile.name && node.type === previewFile.type) {
680
+ return node;
681
+ }
682
+ }
634
683
  }
635
- }
636
- }) : previewData;
637
- setCustomPreviewHeader(null);
638
- setCustomPreviewContent(content);
639
- } else if (typeof previewData === "object" && previewData !== null && "name" in previewData) {
640
- setCustomPreviewContent(null);
641
- setCustomPreviewHeader(null);
642
- setPreviewFile(previewData);
643
- } else {
644
- setCustomPreviewContent(null);
645
- setCustomPreviewHeader(null);
646
- setPreviewFile(file);
647
- }
648
- return;
684
+ } catch (err) {
685
+ _didIteratorError = true;
686
+ _iteratorError = err;
687
+ } finally{
688
+ try {
689
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
690
+ _iterator.return();
691
+ }
692
+ } finally{
693
+ if (_didIteratorError) {
694
+ throw _iteratorError;
695
+ }
696
+ }
697
+ }
698
+ return null;
699
+ };
700
+ var updatedFile = findUpdatedFile(safeNodes);
701
+ // 如果找到了更新的文件,更新 previewFile
702
+ if (updatedFile) {
703
+ setPreviewFile(updatedFile);
649
704
  }
650
- setCustomPreviewContent(null);
651
- setPreviewFile(file);
652
- return;
653
- } catch (err) {
654
- if (previewRequestIdRef.current !== currentCallId)
655
- return;
656
- setCustomPreviewContent(null);
657
- setPreviewFile(file);
658
- return;
659
- }
660
- }
661
- if (isImageFile(file)) {
662
- const previewSrc = getPreviewSource(file);
663
- setImagePreview({
664
- visible: true,
665
- src: previewSrc
666
- });
667
- return;
668
- }
669
- setCustomPreviewContent(null);
670
- setPreviewFile(file);
671
- });
672
- React.useEffect(() => {
673
- if (!actionRef)
674
- return;
675
- actionRef.current = {
676
- openPreview: (file) => {
677
- const fileWithId = ensureNodeWithStableId(file);
678
- void handlePreview(fileWithId);
679
- },
680
- backToList: () => {
681
- handleBackToList();
682
- },
683
- updatePreviewHeader: (partial) => {
684
- setHeaderFileOverride((prev) => __spreadValues(__spreadValues({}, prev || {}), partial));
685
- }
686
- };
687
- return () => {
688
- actionRef.current = null;
705
+ }, [
706
+ nodes
707
+ ]);
708
+ // 处理分组折叠/展开
709
+ var handleToggleGroup = function(groupId, type, collapsed) {
710
+ // 更新内部状态,使用 groupId 作为 key
711
+ setCollapsedGroups(function(prev) {
712
+ return _object_spread_props(_object_spread({}, prev), _define_property({}, groupId, collapsed));
713
+ });
714
+ // 如果外部提供了回调,也调用它
715
+ onToggleGroup === null || onToggleGroup === void 0 ? void 0 : onToggleGroup(type, collapsed);
689
716
  };
690
- }, [actionRef, handlePreview, handleBackToList]);
691
- const hasKeyword = Boolean((keyword != null ? keyword : "").trim());
692
- const renderSearchInput = () => {
693
- if (!showSearch)
694
- return null;
695
- return /* @__PURE__ */ React.createElement(
696
- SearchInput,
697
- {
698
- keyword,
699
- onChange,
700
- searchPlaceholder,
701
- prefixCls,
702
- hashId,
703
- locale
704
- }
705
- );
706
- };
707
- const renderEmptyContent = () => {
708
- if (hasKeyword) {
709
- return /* @__PURE__ */ React.createElement(Typography.Text, { type: "secondary" }, ((locale == null ? void 0 : locale["workspace.noResultsFor"]) || `未找到与「${keyword}」匹配的结果`).replace("${keyword}", String(keyword)));
710
- }
711
- if (typeof emptyRender === "function") {
712
- return emptyRender();
713
- }
714
- return emptyRender != null ? emptyRender : /* @__PURE__ */ React.createElement(Empty, { description: (locale == null ? void 0 : locale["workspace.empty"]) || "No data" });
715
- };
716
- const ImagePreviewComponent = /* @__PURE__ */ React.createElement(
717
- Image,
718
- {
719
- style: { display: "none" },
720
- src: imagePreview.src,
721
- preview: {
722
- visible: imagePreview.visible,
723
- onVisibleChange: (visible) => {
724
- setImagePreview((prev) => __spreadProps(__spreadValues({}, prev), { visible }));
717
+ // 包装后的返回逻辑,允许外部拦截
718
+ var handleBack = /*#__PURE__*/ function() {
719
+ var _ref = _async_to_generator(function() {
720
+ var result, _;
721
+ return _ts_generator(this, function(_state) {
722
+ switch(_state.label){
723
+ case 0:
724
+ if (!previewFile) return [
725
+ 3,
726
+ 4
727
+ ];
728
+ _state.label = 1;
729
+ case 1:
730
+ _state.trys.push([
731
+ 1,
732
+ 3,
733
+ ,
734
+ 4
735
+ ]);
736
+ return [
737
+ 4,
738
+ onBack === null || onBack === void 0 ? void 0 : onBack(previewFile)
739
+ ];
740
+ case 2:
741
+ result = _state.sent();
742
+ if (result === false) return [
743
+ 2
744
+ ];
745
+ return [
746
+ 3,
747
+ 4
748
+ ];
749
+ case 3:
750
+ _ = _state.sent();
751
+ return [
752
+ 3,
753
+ 4
754
+ ];
755
+ case 4:
756
+ handleBackToList();
757
+ return [
758
+ 2
759
+ ];
760
+ }
761
+ });
762
+ });
763
+ return function handleBack() {
764
+ return _ref.apply(this, arguments);
765
+ };
766
+ }();
767
+ // 预览页面的下载(供预览页调用)
768
+ var handleDownloadInPreview = function(file) {
769
+ // 优先使用用户传入的下载方法
770
+ if (onDownload) {
771
+ onDownload(file);
772
+ return;
725
773
  }
726
- }
727
- }
728
- );
729
- if (previewFile) {
730
- return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(
731
- PreviewComponent,
732
- {
733
- file: previewFile,
734
- onBack: handleBack,
735
- onDownload: handleDownloadInPreview,
736
- onShare: (file, options) => {
737
- if (onShare) {
738
- onShare(file, {
739
- anchorEl: options == null ? void 0 : options.anchorEl,
740
- origin: "preview"
774
+ handleFileDownload(file);
775
+ };
776
+ // 预览文件处理
777
+ var handlePreview = /*#__PURE__*/ function() {
778
+ var _ref = _async_to_generator(function(file) {
779
+ var currentCallId, previewData, content, err, previewSrc;
780
+ return _ts_generator(this, function(_state) {
781
+ switch(_state.label){
782
+ case 0:
783
+ if (!onPreview) return [
784
+ 3,
785
+ 4
786
+ ];
787
+ // 立刻进入预览页并展示 loading
788
+ currentCallId = ++previewRequestIdRef.current;
789
+ setPreviewFile(file);
790
+ _state.label = 1;
791
+ case 1:
792
+ _state.trys.push([
793
+ 1,
794
+ 3,
795
+ ,
796
+ 4
797
+ ]);
798
+ return [
799
+ 4,
800
+ onPreview(file)
801
+ ];
802
+ case 2:
803
+ previewData = _state.sent();
804
+ if (previewRequestIdRef.current !== currentCallId) return [
805
+ 2
806
+ ];
807
+ // 当用户返回 false:阻止内部预览逻辑,交由外部处理(如自定义弹窗)
808
+ if (previewData === false) {
809
+ setCustomPreviewContent(null);
810
+ setCustomPreviewHeader(null);
811
+ setPreviewFile(null);
812
+ return [
813
+ 2
814
+ ];
815
+ }
816
+ if (previewData) {
817
+ // 区分返回类型:ReactNode -> 自定义内容;FileNode -> 新文件预览
818
+ if (/*#__PURE__*/ React.isValidElement(previewData) || typeof previewData === 'string' || typeof previewData === 'number' || typeof previewData === 'boolean') {
819
+ content = /*#__PURE__*/ React.isValidElement(previewData) ? /*#__PURE__*/ React.cloneElement(previewData, {
820
+ setPreviewHeader: function(header) {
821
+ return setCustomPreviewHeader(header);
822
+ },
823
+ back: handleBackToList,
824
+ download: function() {
825
+ return handleDownloadInPreview(file);
826
+ },
827
+ share: function() {
828
+ if (onShare) {
829
+ // 为保持回调参数签名一致,显式传入第二个参数为 undefined
830
+ onShare(file, undefined);
831
+ } else {
832
+ handleDefaultShare(file, locale);
833
+ }
834
+ }
835
+ }) : previewData;
836
+ setCustomPreviewHeader(null);
837
+ setCustomPreviewContent(content);
838
+ } else if ((typeof previewData === "undefined" ? "undefined" : _type_of(previewData)) === 'object' && previewData !== null && 'name' in previewData) {
839
+ setCustomPreviewContent(null);
840
+ setCustomPreviewHeader(null);
841
+ setPreviewFile(previewData);
842
+ } else {
843
+ setCustomPreviewContent(null);
844
+ setCustomPreviewHeader(null);
845
+ setPreviewFile(file);
846
+ }
847
+ return [
848
+ 2
849
+ ];
850
+ }
851
+ setCustomPreviewContent(null);
852
+ setPreviewFile(file);
853
+ return [
854
+ 2
855
+ ];
856
+ case 3:
857
+ err = _state.sent();
858
+ if (previewRequestIdRef.current !== currentCallId) return [
859
+ 2
860
+ ];
861
+ setCustomPreviewContent(null);
862
+ setPreviewFile(file);
863
+ return [
864
+ 2
865
+ ];
866
+ case 4:
867
+ // 使用组件库内部的预览逻辑
868
+ if (isImageFile(file)) {
869
+ previewSrc = getPreviewSource(file);
870
+ setImagePreview({
871
+ visible: true,
872
+ src: previewSrc
873
+ });
874
+ return [
875
+ 2
876
+ ];
877
+ }
878
+ setCustomPreviewContent(null);
879
+ setPreviewFile(file);
880
+ return [
881
+ 2
882
+ ];
883
+ }
741
884
  });
742
- } else {
743
- handleDefaultShare(file, locale);
744
- }
745
- },
746
- onLocate,
747
- customContent: customPreviewContent || void 0,
748
- customHeader: customPreviewHeader || void 0,
749
- customActions: typeof customActions === "function" ? customActions(previewFile) : customActions,
750
- headerFileOverride: headerFileOverride || void 0,
751
- markdownEditorProps
752
- }
753
- ), ImagePreviewComponent);
754
- }
755
- const renderFileContent = () => {
756
- if ((!nodes || nodes.length === 0) && !loading) {
757
- return /* @__PURE__ */ React.createElement("div", { className: classNames(`${prefixCls}-empty`, hashId) }, renderEmptyContent());
758
- }
759
- if (safeNodes.length === 0) {
760
- return /* @__PURE__ */ React.createElement("div", { className: classNames(`${prefixCls}-empty`, hashId) }, renderEmptyContent());
761
- }
762
- return safeNodes.map((node) => {
763
- var _a;
764
- const nodeWithId = ensureNodeWithStableId(node);
765
- if ("children" in nodeWithId) {
766
- const groupNode = __spreadProps(__spreadValues({}, nodeWithId), {
767
- collapsed: (_a = collapsedGroups[nodeWithId.id]) != null ? _a : nodeWithId.collapsed,
768
- // 确保子节点也有唯一ID
769
- children: nodeWithId.children.map(ensureNodeWithStableId)
770
885
  });
771
- return /* @__PURE__ */ React.createElement(
772
- FileGroupComponent,
773
- {
774
- key: nodeWithId.id,
775
- group: groupNode,
776
- onToggle: handleToggleGroup,
777
- onGroupDownload,
778
- onDownload,
779
- onFileClick,
780
- onPreview: handlePreview,
781
- onShare,
782
- onLocate,
783
- prefixCls,
784
- hashId,
785
- bindDomId
786
- }
787
- );
788
- }
789
- return /* @__PURE__ */ React.createElement(
790
- FileItemComponent,
791
- {
792
- key: nodeWithId.id,
793
- file: nodeWithId,
794
- onClick: onFileClick,
795
- onDownload,
796
- onShare,
797
- onPreview: handlePreview,
798
- onLocate,
799
- prefixCls,
800
- hashId,
801
- bindDomId
886
+ return function handlePreview(file) {
887
+ return _ref.apply(this, arguments);
888
+ };
889
+ }();
890
+ // 通过 actionRef 暴露可编程接口
891
+ React.useEffect(function() {
892
+ if (!actionRef) return;
893
+ actionRef.current = {
894
+ openPreview: function(file) {
895
+ var fileWithId = ensureNodeWithStableId(file);
896
+ void handlePreview(fileWithId);
897
+ },
898
+ backToList: function() {
899
+ handleBackToList();
900
+ },
901
+ updatePreviewHeader: function(partial) {
902
+ setHeaderFileOverride(function(prev) {
903
+ return _object_spread({}, prev || {}, partial);
904
+ });
905
+ }
906
+ };
907
+ return function() {
908
+ actionRef.current = null;
909
+ };
910
+ }, [
911
+ actionRef,
912
+ handlePreview,
913
+ handleBackToList
914
+ ]);
915
+ var hasKeyword = Boolean((keyword !== null && keyword !== void 0 ? keyword : '').trim());
916
+ // 渲染搜索框组件 - 确保在所有情况下都保持一致
917
+ var renderSearchInput = function() {
918
+ if (!showSearch) return null;
919
+ return /*#__PURE__*/ React.createElement(SearchInput, {
920
+ keyword: keyword,
921
+ onChange: onChange,
922
+ searchPlaceholder: searchPlaceholder,
923
+ prefixCls: prefixCls,
924
+ hashId: hashId,
925
+ locale: locale
926
+ });
927
+ };
928
+ // 渲染空状态内容
929
+ var renderEmptyContent = function() {
930
+ if (hasKeyword) {
931
+ return /*#__PURE__*/ React.createElement(Typography.Text, {
932
+ type: "secondary"
933
+ }, ((locale === null || locale === void 0 ? void 0 : locale['workspace.noResultsFor']) || "未找到与「".concat(keyword, "」匹配的结果")).replace('${keyword}', String(keyword)));
802
934
  }
803
- );
804
- });
805
- };
806
- return wrapSSR(
807
- /* @__PURE__ */ React.createElement(React.Fragment, null, loading && loadingRender ? (
808
- // 使用自定义loading渲染函数
809
- /* @__PURE__ */ React.createElement(
810
- "div",
811
- {
812
- className: classNames(`${prefixCls}-container`, hashId),
813
- "data-testid": "file-component"
814
- },
815
- renderSearchInput(),
816
- loadingRender()
817
- )
818
- ) : (
819
- // 使用默认的Spin组件
820
- /* @__PURE__ */ React.createElement(Spin, { spinning: !!loading }, /* @__PURE__ */ React.createElement(
821
- "div",
822
- {
823
- className: classNames(`${prefixCls}-container`, hashId),
824
- "data-testid": "file-component"
935
+ if (typeof emptyRender === 'function') {
936
+ return emptyRender();
937
+ }
938
+ return emptyRender !== null && emptyRender !== void 0 ? emptyRender : /*#__PURE__*/ React.createElement(Empty, {
939
+ description: (locale === null || locale === void 0 ? void 0 : locale['workspace.empty']) || 'No data'
940
+ });
941
+ };
942
+ // 图片预览组件
943
+ var ImagePreviewComponent = /*#__PURE__*/ React.createElement(Image, {
944
+ style: {
945
+ display: 'none'
825
946
  },
826
- renderSearchInput(),
827
- renderFileContent()
828
- ))
829
- ), ImagePreviewComponent)
830
- );
831
- };
832
- export {
833
- FileComponent
947
+ src: imagePreview.src,
948
+ preview: {
949
+ visible: imagePreview.visible,
950
+ onVisibleChange: function(visible) {
951
+ setImagePreview(function(prev) {
952
+ return _object_spread_props(_object_spread({}, prev), {
953
+ visible: visible
954
+ });
955
+ });
956
+ }
957
+ }
958
+ });
959
+ // 如果正在预览文件,显示预览组件
960
+ if (previewFile) {
961
+ return /*#__PURE__*/ React.createElement(React.Fragment, null, /*#__PURE__*/ React.createElement(PreviewComponent, {
962
+ file: previewFile,
963
+ onBack: handleBack,
964
+ onDownload: handleDownloadInPreview,
965
+ onShare: function(file, options) {
966
+ if (onShare) {
967
+ onShare(file, {
968
+ anchorEl: options === null || options === void 0 ? void 0 : options.anchorEl,
969
+ origin: 'preview'
970
+ });
971
+ } else {
972
+ handleDefaultShare(file, locale);
973
+ }
974
+ },
975
+ onLocate: onLocate,
976
+ customContent: customPreviewContent || undefined,
977
+ customHeader: customPreviewHeader || undefined,
978
+ customActions: typeof customActions === 'function' ? customActions(previewFile) : customActions,
979
+ headerFileOverride: headerFileOverride || undefined,
980
+ markdownEditorProps: markdownEditorProps
981
+ }), ImagePreviewComponent);
982
+ }
983
+ // 渲染文件内容
984
+ var renderFileContent = function() {
985
+ if ((!nodes || nodes.length === 0) && !loading) {
986
+ return /*#__PURE__*/ React.createElement("div", {
987
+ className: classNames("".concat(prefixCls, "-empty"), hashId)
988
+ }, renderEmptyContent());
989
+ }
990
+ if (safeNodes.length === 0) {
991
+ return /*#__PURE__*/ React.createElement("div", {
992
+ className: classNames("".concat(prefixCls, "-empty"), hashId)
993
+ }, renderEmptyContent());
994
+ }
995
+ return safeNodes.map(function(node) {
996
+ var nodeWithId = ensureNodeWithStableId(node);
997
+ if ('children' in nodeWithId) {
998
+ var _collapsedGroups_nodeWithId_id;
999
+ // 分组节点,使用内部状态覆盖外部的 collapsed 属性
1000
+ var groupNode = _object_spread_props(_object_spread({}, nodeWithId), {
1001
+ collapsed: (_collapsedGroups_nodeWithId_id = collapsedGroups[nodeWithId.id]) !== null && _collapsedGroups_nodeWithId_id !== void 0 ? _collapsedGroups_nodeWithId_id : nodeWithId.collapsed,
1002
+ // 确保子节点也有唯一ID
1003
+ children: nodeWithId.children.map(ensureNodeWithStableId)
1004
+ });
1005
+ return /*#__PURE__*/ React.createElement(FileGroupComponent, {
1006
+ key: nodeWithId.id,
1007
+ group: groupNode,
1008
+ onToggle: handleToggleGroup,
1009
+ onGroupDownload: onGroupDownload,
1010
+ onDownload: onDownload,
1011
+ onFileClick: onFileClick,
1012
+ onPreview: handlePreview,
1013
+ onShare: onShare,
1014
+ onLocate: onLocate,
1015
+ prefixCls: prefixCls,
1016
+ hashId: hashId,
1017
+ bindDomId: bindDomId
1018
+ });
1019
+ }
1020
+ // 文件节点
1021
+ return /*#__PURE__*/ React.createElement(FileItemComponent, {
1022
+ key: nodeWithId.id,
1023
+ file: nodeWithId,
1024
+ onClick: onFileClick,
1025
+ onDownload: onDownload,
1026
+ onShare: onShare,
1027
+ onPreview: handlePreview,
1028
+ onLocate: onLocate,
1029
+ prefixCls: prefixCls,
1030
+ hashId: hashId,
1031
+ bindDomId: bindDomId
1032
+ });
1033
+ });
1034
+ };
1035
+ // 统一的渲染逻辑 - 确保搜索框位置稳定
1036
+ return wrapSSR(/*#__PURE__*/ React.createElement(React.Fragment, null, loading && loadingRender ? // 使用自定义loading渲染函数
1037
+ /*#__PURE__*/ React.createElement("div", {
1038
+ className: classNames("".concat(prefixCls, "-container"), hashId),
1039
+ "data-testid": "file-component"
1040
+ }, renderSearchInput(), loadingRender()) : // 使用默认的Spin组件
1041
+ /*#__PURE__*/ React.createElement(Spin, {
1042
+ spinning: !!loading
1043
+ }, /*#__PURE__*/ React.createElement("div", {
1044
+ className: classNames("".concat(prefixCls, "-container"), hashId),
1045
+ "data-testid": "file-component"
1046
+ }, renderSearchInput(), renderFileContent())), ImagePreviewComponent));
834
1047
  };