@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,720 +1,888 @@
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 _array_without_holes(arr) {
10
+ if (Array.isArray(arr)) return _array_like_to_array(arr);
11
+ }
12
+ function _define_property(obj, key, value) {
13
+ if (key in obj) {
14
+ Object.defineProperty(obj, key, {
15
+ value: value,
16
+ enumerable: true,
17
+ configurable: true,
18
+ writable: true
19
+ });
20
+ } else {
21
+ obj[key] = value;
16
22
  }
17
- return a;
18
- };
19
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
-
21
- // src/Plugins/chart/BarChart/index.tsx
23
+ return obj;
24
+ }
25
+ function _iterable_to_array(iter) {
26
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
27
+ }
28
+ function _iterable_to_array_limit(arr, i) {
29
+ var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
30
+ if (_i == null) return;
31
+ var _arr = [];
32
+ var _n = true;
33
+ var _d = false;
34
+ var _s, _e;
35
+ try {
36
+ for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
37
+ _arr.push(_s.value);
38
+ if (i && _arr.length === i) break;
39
+ }
40
+ } catch (err) {
41
+ _d = true;
42
+ _e = err;
43
+ } finally{
44
+ try {
45
+ if (!_n && _i["return"] != null) _i["return"]();
46
+ } finally{
47
+ if (_d) throw _e;
48
+ }
49
+ }
50
+ return _arr;
51
+ }
52
+ function _non_iterable_rest() {
53
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
54
+ }
55
+ function _non_iterable_spread() {
56
+ throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
57
+ }
58
+ function _object_spread(target) {
59
+ for(var i = 1; i < arguments.length; i++){
60
+ var source = arguments[i] != null ? arguments[i] : {};
61
+ var ownKeys = Object.keys(source);
62
+ if (typeof Object.getOwnPropertySymbols === "function") {
63
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
64
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
65
+ }));
66
+ }
67
+ ownKeys.forEach(function(key) {
68
+ _define_property(target, key, source[key]);
69
+ });
70
+ }
71
+ return target;
72
+ }
73
+ function ownKeys(object, enumerableOnly) {
74
+ var keys = Object.keys(object);
75
+ if (Object.getOwnPropertySymbols) {
76
+ var symbols = Object.getOwnPropertySymbols(object);
77
+ if (enumerableOnly) {
78
+ symbols = symbols.filter(function(sym) {
79
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
80
+ });
81
+ }
82
+ keys.push.apply(keys, symbols);
83
+ }
84
+ return keys;
85
+ }
86
+ function _object_spread_props(target, source) {
87
+ source = source != null ? source : {};
88
+ if (Object.getOwnPropertyDescriptors) {
89
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
90
+ } else {
91
+ ownKeys(Object(source)).forEach(function(key) {
92
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
93
+ });
94
+ }
95
+ return target;
96
+ }
97
+ function _sliced_to_array(arr, i) {
98
+ return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
99
+ }
100
+ function _to_consumable_array(arr) {
101
+ return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
102
+ }
103
+ function _type_of(obj) {
104
+ "@swc/helpers - typeof";
105
+ return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
106
+ }
107
+ function _unsupported_iterable_to_array(o, minLen) {
108
+ if (!o) return;
109
+ if (typeof o === "string") return _array_like_to_array(o, minLen);
110
+ var n = Object.prototype.toString.call(o).slice(8, -1);
111
+ if (n === "Object" && o.constructor) n = o.constructor.name;
112
+ if (n === "Map" || n === "Set") return Array.from(n);
113
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
114
+ }
22
115
  import { ConfigProvider } from "antd";
23
- import classNames from "classnames";
24
- import {
25
- BarElement,
26
- CategoryScale,
27
- Chart as ChartJS,
28
- Legend,
29
- LinearScale,
30
- Tooltip
31
- } from "chart.js";
116
+ import { BarElement, CategoryScale, Chart as ChartJS, Legend, LinearScale, Tooltip } from "chart.js";
32
117
  import ChartDataLabels from "chartjs-plugin-datalabels";
118
+ import classNames from "classnames";
33
119
  import React, { useContext, useEffect, useMemo, useRef, useState } from "react";
34
120
  import { Bar } from "react-chartjs-2";
35
- import {
36
- ChartContainer,
37
- ChartFilter,
38
- ChartStatistic,
39
- ChartToolBar,
40
- downloadChart
41
- } from "../components";
121
+ import { ChartContainer, ChartFilter, ChartStatistic, ChartToolBar, downloadChart } from "../components";
42
122
  import { defaultColorList } from "../const";
43
- import {
44
- extractAndSortXValues,
45
- findDataPointByXValue
46
- } from "../utils";
123
+ import { extractAndSortXValues, findDataPointByXValue } from "../utils";
47
124
  import { useStyle } from "./style";
48
- var barChartComponentsRegistered = false;
49
- var hexToRgba = (hex, alpha) => {
50
- const sanitized = hex.replace("#", "");
51
- const isShort = sanitized.length === 3;
52
- const r = parseInt(
53
- isShort ? sanitized[0] + sanitized[0] : sanitized.slice(0, 2),
54
- 16
55
- );
56
- const g = parseInt(
57
- isShort ? sanitized[1] + sanitized[1] : sanitized.slice(2, 4),
58
- 16
59
- );
60
- const b = parseInt(
61
- isShort ? sanitized[2] + sanitized[2] : sanitized.slice(4, 6),
62
- 16
63
- );
64
- const a = Math.max(0, Math.min(1, alpha));
65
- return `rgba(${r}, ${g}, ${b}, ${a})`;
125
+ /**
126
+ * @fileoverview 柱状图组件文件
127
+ *
128
+ * 该文件提供了柱状图组件的实现,基于 Chart.js react-chartjs-2。
129
+ * 支持数据可视化、交互、配置、统计等功能。
130
+ *
131
+ * @author md-editor
132
+ * @version 1.0.0
133
+ * @since 2024
134
+ */ var barChartComponentsRegistered = false;
135
+ // 将十六进制颜色转换为带透明度的 rgba 字符串
136
+ var hexToRgba = function(hex, alpha) {
137
+ var sanitized = hex.replace('#', '');
138
+ var isShort = sanitized.length === 3;
139
+ var r = parseInt(isShort ? sanitized[0] + sanitized[0] : sanitized.slice(0, 2), 16);
140
+ var g = parseInt(isShort ? sanitized[1] + sanitized[1] : sanitized.slice(2, 4), 16);
141
+ var b = parseInt(isShort ? sanitized[2] + sanitized[2] : sanitized.slice(4, 6), 16);
142
+ var a = Math.max(0, Math.min(1, alpha));
143
+ return "rgba(".concat(r, ", ").concat(g, ", ").concat(b, ", ").concat(a, ")");
66
144
  };
67
- var POSITIVE_COLOR_HEX = "#388BFF";
68
- var NEGATIVE_COLOR_HEX = "#F78826";
69
- var BarChart = ({
70
- title,
71
- data,
72
- width = 600,
73
- height = 400,
74
- className,
75
- dataTime,
76
- theme = "light",
77
- color,
78
- showLegend = true,
79
- legendPosition = "bottom",
80
- legendAlign = "start",
81
- showGrid = true,
82
- xPosition = "bottom",
83
- yPosition = "left",
84
- hiddenX = false,
85
- hiddenY = false,
86
- stacked = false,
87
- indexAxis = "x",
88
- toolbarExtra,
89
- renderFilterInToolbar = false,
90
- statistic: statisticConfig,
91
- variant,
92
- showDataLabels = false,
93
- dataLabelFormatter,
94
- chartOptions
95
- }) => {
96
- useMemo(() => {
97
- if (barChartComponentsRegistered) {
98
- return void 0;
99
- }
100
- if (typeof window === "undefined") {
101
- return void 0;
102
- }
103
- ChartJS.register(CategoryScale, LinearScale, BarElement, Tooltip, Legend);
104
- barChartComponentsRegistered = true;
105
- return void 0;
106
- }, []);
107
- const safeData = Array.isArray(data) ? data : [];
108
- const [windowWidth, setWindowWidth] = useState(
109
- typeof window !== "undefined" ? window.innerWidth : 768
110
- );
111
- const isMobile = windowWidth <= 768;
112
- const responsiveWidth = isMobile ? "100%" : width;
113
- const responsiveHeight = isMobile ? Math.min(windowWidth * 0.8, 400) : height;
114
- useEffect(() => {
115
- const handleResize = () => {
116
- setWindowWidth(window.innerWidth);
117
- };
118
- if (typeof window !== "undefined") {
119
- window.addEventListener("resize", handleResize);
120
- return () => window.removeEventListener("resize", handleResize);
121
- }
122
- }, []);
123
- const context = useContext(ConfigProvider.ConfigContext);
124
- const baseClassName = context == null ? void 0 : context.getPrefixCls("bar-chart-container");
125
- const { wrapSSR, hashId } = useStyle(baseClassName);
126
- const chartRef = useRef(null);
127
- const statistics = useMemo(() => {
128
- if (!statisticConfig)
129
- return null;
130
- return Array.isArray(statisticConfig) ? statisticConfig : [statisticConfig];
131
- }, [statisticConfig]);
132
- const categories = useMemo(() => {
133
- const uniqueCategories = [
134
- ...new Set(safeData.map((item) => item.category))
135
- ].filter(Boolean);
136
- return uniqueCategories;
137
- }, [safeData]);
138
- const validFilterLabels = useMemo(() => {
139
- return safeData.map((item) => item.filterLabel).filter(
140
- (filterLabel) => filterLabel !== void 0
141
- );
142
- }, [safeData]);
143
- const filterLabels = useMemo(() => {
144
- return validFilterLabels.length > 0 ? [...new Set(validFilterLabels)] : void 0;
145
- }, [validFilterLabels]);
146
- const [selectedFilter, setSelectedFilter] = useState(
147
- categories.find(Boolean) || ""
148
- );
149
- const [selectedFilterLabel, setSelectedFilterLabel] = useState(
150
- filterLabels && filterLabels.length > 0 ? filterLabels[0] : void 0
151
- );
152
- useEffect(() => {
153
- if (selectedFilter && !categories.includes(selectedFilter)) {
154
- setSelectedFilter(categories.find(Boolean) || "");
155
- }
156
- }, [categories, selectedFilter]);
157
- const filteredData = useMemo(() => {
158
- const base = selectedFilter ? safeData.filter((item) => item.category === selectedFilter) : safeData;
159
- const withFilterLabel = !filterLabels || !selectedFilterLabel ? base : base.filter((item) => item.filterLabel === selectedFilterLabel);
160
- return withFilterLabel.filter(
161
- (item) => item.x !== null && item.x !== void 0
162
- );
163
- }, [safeData, selectedFilter, filterLabels, selectedFilterLabel]);
164
- const types = useMemo(() => {
165
- return [...new Set(filteredData.map((item) => item.type))];
166
- }, [filteredData]);
167
- const xValues = useMemo(() => {
168
- if (indexAxis === "y") {
169
- const uniqueValues = [
170
- ...new Set(
171
- filteredData.map((item) => item.x).filter((x) => x !== null && x !== void 0)
172
- )
173
- ];
174
- return uniqueValues;
175
- }
176
- return extractAndSortXValues(filteredData);
177
- }, [filteredData, indexAxis]);
178
- const xTitle = useMemo(() => {
179
- const titles = [
180
- ...new Set(filteredData.map((item) => item.xtitle).filter(Boolean))
181
- ];
182
- return titles[0] || "";
183
- }, [filteredData]);
184
- const yTitle = useMemo(() => {
185
- const titles = [
186
- ...new Set(filteredData.map((item) => item.ytitle).filter(Boolean))
187
- ];
188
- return titles[0] || "";
189
- }, [filteredData]);
190
- const hasPositive = useMemo(() => {
191
- return filteredData.some((item) => {
192
- const v = typeof item.y === "number" ? item.y : Number(item.y);
193
- return Number.isFinite(v) && v > 0;
194
- });
195
- }, [filteredData]);
196
- const hasNegative = useMemo(() => {
197
- return filteredData.some((item) => {
198
- const v = typeof item.y === "number" ? item.y : Number(item.y);
199
- return Number.isFinite(v) && v < 0;
200
- });
201
- }, [filteredData]);
202
- const isDiverging = hasPositive && hasNegative;
203
- const processedData = useMemo(() => {
204
- const labels = xValues.map((x) => x.toString());
205
- const datasets = types.map((type, index) => {
206
- const provided = color;
207
- const pickByIndex = (i) => Array.isArray(provided) ? provided[i] || provided[0] || defaultColorList[i % defaultColorList.length] : provided || defaultColorList[i % defaultColorList.length];
208
- const baseColor = pickByIndex(index);
209
- const typeData = xValues.map((x) => {
210
- const dataPoint = findDataPointByXValue(filteredData, x, type);
211
- const v = dataPoint == null ? void 0 : dataPoint.y;
212
- const n = typeof v === "number" ? v : Number(v);
213
- return Number.isFinite(n) ? n : null;
214
- });
215
- return {
216
- label: type || "默认",
217
- data: typeData,
218
- borderColor: (ctx) => {
219
- const parsed = ctx.parsed;
220
- const value = indexAxis === "y" ? typeof (parsed == null ? void 0 : parsed.x) === "number" ? parsed.x : 0 : typeof (parsed == null ? void 0 : parsed.y) === "number" ? parsed.y : 0;
221
- let base = baseColor;
222
- if (!color && isDiverging) {
223
- base = value >= 0 ? POSITIVE_COLOR_HEX : NEGATIVE_COLOR_HEX;
224
- } else if (Array.isArray(color) && isDiverging) {
225
- const pos = color[0] || baseColor;
226
- const neg = color[1] || color[0] || baseColor;
227
- base = value >= 0 ? pos : neg;
228
- }
229
- return hexToRgba(base, 0.95);
230
- },
231
- backgroundColor: (ctx) => {
232
- const chart = ctx.chart;
233
- const chartArea = chart.chartArea;
234
- const parsed = ctx.parsed;
235
- if (!chartArea)
236
- return hexToRgba(baseColor, 0.6);
237
- const xScale = chart.scales["x"];
238
- const yScale = chart.scales["y"];
239
- const startAlpha = 0.65;
240
- const endAlpha = 0.95;
241
- if (!xScale || !yScale || typeof xScale.getPixelForValue !== "function" || typeof yScale.getPixelForValue !== "function") {
242
- return hexToRgba(baseColor, 0.6);
243
- }
244
- if (indexAxis === "y") {
245
- const value2 = typeof (parsed == null ? void 0 : parsed.x) === "number" ? parsed.x : 0;
246
- let base2 = baseColor;
247
- if (!color && isDiverging) {
248
- base2 = value2 >= 0 ? POSITIVE_COLOR_HEX : NEGATIVE_COLOR_HEX;
249
- } else if (Array.isArray(color) && isDiverging) {
250
- const pos = color[0] || baseColor;
251
- const neg = color[1] || color[0] || baseColor;
252
- base2 = value2 >= 0 ? pos : neg;
253
- }
254
- if (value2 === 0) {
255
- return hexToRgba(base2, 0.75);
256
- }
257
- const x0 = xScale.getPixelForValue(0);
258
- const x1 = xScale.getPixelForValue(value2);
259
- if (!Number.isFinite(x0) || !Number.isFinite(x1)) {
260
- return hexToRgba(base2, endAlpha);
261
- }
262
- const gradient2 = chart.ctx.createLinearGradient(x0, 0, x1, 0);
263
- gradient2.addColorStop(0, hexToRgba(base2, startAlpha));
264
- gradient2.addColorStop(1, hexToRgba(base2, endAlpha));
265
- return gradient2;
266
- }
267
- const value = typeof (parsed == null ? void 0 : parsed.y) === "number" ? parsed.y : 0;
268
- let base = baseColor;
269
- if (!color && isDiverging) {
270
- base = value >= 0 ? POSITIVE_COLOR_HEX : NEGATIVE_COLOR_HEX;
271
- } else if (Array.isArray(color) && isDiverging) {
272
- const pos = color[0] || baseColor;
273
- const neg = color[1] || color[0] || baseColor;
274
- base = value >= 0 ? pos : neg;
275
- }
276
- if (value === 0) {
277
- return hexToRgba(base, 0.75);
278
- }
279
- const y0 = yScale.getPixelForValue(0);
280
- const y1 = yScale.getPixelForValue(value);
281
- if (!Number.isFinite(y0) || !Number.isFinite(y1)) {
282
- return hexToRgba(base, endAlpha);
283
- }
284
- const gradient = chart.ctx.createLinearGradient(0, y0, 0, y1);
285
- gradient.addColorStop(0, hexToRgba(base, startAlpha));
286
- gradient.addColorStop(1, hexToRgba(base, endAlpha));
287
- return gradient;
288
- },
289
- borderWidth: 0,
290
- categoryPercentage: 0.7,
291
- barPercentage: 0.8,
292
- stack: stacked ? "stack" : void 0,
293
- borderRadius: (ctx) => {
294
- var _a, _b;
295
- const rawValue = ctx == null ? void 0 : ctx.raw;
296
- const value = typeof rawValue === "number" ? rawValue : Number(rawValue != null ? rawValue : 0);
297
- const isHorizontal = indexAxis === "y";
298
- const radius = 6;
299
- const chart = ctx == null ? void 0 : ctx.chart;
300
- let isTopOfStack = true;
301
- if (stacked && chart) {
302
- const dsIndex = ctx == null ? void 0 : ctx.datasetIndex;
303
- const dIndex = ctx == null ? void 0 : ctx.dataIndex;
304
- const currentStack = (_b = (_a = chart.data.datasets) == null ? void 0 : _a[dsIndex]) == null ? void 0 : _b.stack;
305
- const sameStackIndexes = chart.data.datasets.map((_, i) => i).filter((i) => {
306
- var _a2, _b2, _c;
307
- const ds = (_a2 = chart.data.datasets) == null ? void 0 : _a2[i];
308
- if (!chart.isDatasetVisible(i))
309
- return false;
310
- if (currentStack) {
311
- if ((ds == null ? void 0 : ds.stack) !== currentStack)
312
- return false;
313
- }
314
- const v = Number((_c = (_b2 = ds == null ? void 0 : ds.data) == null ? void 0 : _b2[dIndex]) != null ? _c : 0);
315
- return v >= 0 && value >= 0 || v < 0 && value < 0;
316
- });
317
- const topIndex = sameStackIndexes.length ? Math.max(...sameStackIndexes) : dsIndex;
318
- isTopOfStack = dsIndex === topIndex;
319
- }
320
- if (!isTopOfStack)
321
- return 0;
322
- if (isHorizontal) {
323
- if (value >= 0) {
324
- return {
325
- topRight: radius,
326
- bottomRight: radius,
327
- topLeft: 0,
328
- bottomLeft: 0
329
- };
330
- } else {
331
- return {
332
- topLeft: radius,
333
- bottomLeft: radius,
334
- topRight: 0,
335
- bottomRight: 0
336
- };
337
- }
338
- } else {
339
- if (value >= 0) {
340
- return {
341
- topLeft: radius,
342
- topRight: radius,
343
- bottomLeft: 0,
344
- bottomRight: 0
345
- };
346
- } else {
347
- return {
348
- bottomLeft: radius,
349
- bottomRight: radius,
350
- topLeft: 0,
351
- topRight: 0
352
- };
353
- }
354
- }
355
- },
356
- borderSkipped: false
357
- };
358
- });
359
- return { labels, datasets };
360
- }, [filteredData, types, xValues, stacked, indexAxis]);
361
- const filterOptions = useMemo(() => {
362
- return categories.map((category) => ({
363
- label: category || "默认",
364
- value: category || "默认"
365
- }));
366
- }, [categories]);
367
- const filteredDataByFilterLabel = useMemo(() => {
368
- return filterLabels == null ? void 0 : filterLabels.map((item) => ({
369
- key: item,
370
- label: item
371
- }));
372
- }, [filterLabels]);
373
- const isLight = theme === "light";
374
- const axisTextColor = isLight ? "rgba(0, 25, 61, 0.3255)" : "rgba(255, 255, 255, 0.8)";
375
- const gridColor = isLight ? "rgba(0,0,0,0.08)" : "rgba(255,255,255,0.2)";
376
- const calculateLabelWidth = (text, fontSize = 11) => {
377
- const canvas = document.createElement("canvas");
378
- const context2 = canvas.getContext("2d");
379
- if (!context2)
380
- return text.length * fontSize * 0.6;
381
- context2.font = `${fontSize}px Arial, sans-serif`;
382
- const metrics = context2.measureText(text);
383
- return metrics.width;
384
- };
385
- const calculateMaxLabelWidth = useMemo(() => {
386
- if (!showDataLabels || !filteredData.length)
387
- return 0;
388
- const fontSize = isMobile ? 10 : 11;
389
- let maxWidth = 0;
390
- filteredData.forEach((item) => {
391
- const value = typeof item.y === "number" ? item.y : Number(item.y);
392
- if (Number.isFinite(value)) {
393
- let labelText = "";
394
- if (dataLabelFormatter) {
395
- labelText = dataLabelFormatter({
396
- value,
397
- label: String(item.x),
398
- datasetLabel: String(item.type || "默认"),
399
- dataIndex: 0,
400
- datasetIndex: 0
401
- });
402
- } else {
403
- labelText = value.toLocaleString();
145
+ // 正负柱状图颜色(与需求给定的 rgba 保持一致)
146
+ var POSITIVE_COLOR_HEX = '#388BFF'; // rgba(56, 139, 255, 1)
147
+ var NEGATIVE_COLOR_HEX = '#F78826'; // rgba(247, 136, 38, 1)
148
+ var BarChart = function(param) {
149
+ var title = param.title, data = param.data, _param_width = param.width, width = _param_width === void 0 ? 600 : _param_width, _param_height = param.height, height = _param_height === void 0 ? 400 : _param_height, className = param.className, dataTime = param.dataTime, _param_theme = param.theme, theme = _param_theme === void 0 ? 'light' : _param_theme, color = param.color, _param_showLegend = param.showLegend, showLegend = _param_showLegend === void 0 ? true : _param_showLegend, _param_legendPosition = param.legendPosition, legendPosition = _param_legendPosition === void 0 ? 'bottom' : _param_legendPosition, _param_legendAlign = param.legendAlign, legendAlign = _param_legendAlign === void 0 ? 'start' : _param_legendAlign, _param_showGrid = param.showGrid, showGrid = _param_showGrid === void 0 ? true : _param_showGrid, _param_xPosition = param.xPosition, xPosition = _param_xPosition === void 0 ? 'bottom' : _param_xPosition, _param_yPosition = param.yPosition, yPosition = _param_yPosition === void 0 ? 'left' : _param_yPosition, _param_hiddenX = param.hiddenX, hiddenX = _param_hiddenX === void 0 ? false : _param_hiddenX, _param_hiddenY = param.hiddenY, hiddenY = _param_hiddenY === void 0 ? false : _param_hiddenY, _param_stacked = param.stacked, stacked = _param_stacked === void 0 ? false : _param_stacked, _param_indexAxis = param.indexAxis, indexAxis = _param_indexAxis === void 0 ? 'x' : _param_indexAxis, maxBarThickness = param.maxBarThickness, toolbarExtra = param.toolbarExtra, _param_renderFilterInToolbar = param.renderFilterInToolbar, renderFilterInToolbar = _param_renderFilterInToolbar === void 0 ? false : _param_renderFilterInToolbar, statisticConfig = param.statistic, variant = param.variant, _param_showDataLabels = param.showDataLabels, showDataLabels = _param_showDataLabels === void 0 ? false : _param_showDataLabels, dataLabelFormatter = param.dataLabelFormatter, chartOptions = param.chartOptions;
150
+ useMemo(function() {
151
+ if (barChartComponentsRegistered) {
152
+ return undefined;
404
153
  }
405
- const width2 = calculateLabelWidth(labelText, fontSize);
406
- maxWidth = Math.max(maxWidth, width2);
407
- }
408
- });
409
- return maxWidth;
410
- }, [filteredData, showDataLabels, dataLabelFormatter, isMobile]);
411
- const calculateDynamicPadding = useMemo(() => {
412
- if (!showDataLabels || calculateMaxLabelWidth === 0)
413
- return { top: 0, right: 0, bottom: 0, left: 0 };
414
- const basePadding = 8;
415
- const labelPadding = Math.ceil(calculateMaxLabelWidth) + 12;
416
- if (indexAxis === "y") {
417
- return {
418
- top: basePadding,
419
- right: Math.max(basePadding, labelPadding),
420
- bottom: basePadding,
421
- left: basePadding
422
- };
423
- } else {
424
- return {
425
- top: Math.max(basePadding, labelPadding),
426
- right: basePadding,
427
- bottom: basePadding,
428
- left: basePadding
429
- };
430
- }
431
- }, [showDataLabels, calculateMaxLabelWidth, indexAxis]);
432
- const deepMerge = (target, source) => {
433
- var _a;
434
- if (!source || typeof source !== "object")
435
- return source;
436
- if (!target || typeof target !== "object")
437
- return source;
438
- const result = __spreadValues({}, target);
439
- for (const key in source) {
440
- if (source.hasOwnProperty(key)) {
441
- if (typeof source[key] === "object" && source[key] !== null && !Array.isArray(source[key])) {
442
- if (key === "layout" && source[key].padding && ((_a = target.layout) == null ? void 0 : _a.padding)) {
443
- result[key] = __spreadProps(__spreadValues(__spreadValues({}, target[key]), source[key]), {
444
- padding: __spreadValues(__spreadValues({}, target[key].padding), source[key].padding)
445
- });
446
- } else {
447
- result[key] = deepMerge(target[key] || {}, source[key]);
448
- }
449
- } else {
450
- result[key] = source[key];
154
+ if (typeof window === 'undefined') {
155
+ return undefined;
451
156
  }
452
- }
453
- }
454
- return result;
455
- };
456
- const defaultOptions = {
457
- responsive: true,
458
- maintainAspectRatio: false,
459
- indexAxis,
460
- layout: {
461
- padding: calculateDynamicPadding
462
- },
463
- plugins: __spreadValues({
464
- legend: {
465
- display: showLegend,
466
- position: legendPosition,
467
- align: legendAlign,
468
- labels: {
469
- color: axisTextColor,
470
- font: { size: isMobile ? 10 : 12, weight: "normal" },
471
- padding: isMobile ? 10 : 12,
472
- usePointStyle: true,
473
- pointStyle: "rectRounded"
157
+ ChartJS.register(CategoryScale, LinearScale, BarElement, Tooltip, Legend);
158
+ barChartComponentsRegistered = true;
159
+ return undefined;
160
+ }, []);
161
+ var safeData = Array.isArray(data) ? data : [];
162
+ // 响应式尺寸计算
163
+ var _useState = _sliced_to_array(useState(typeof window !== 'undefined' ? window.innerWidth : 768), 2), windowWidth = _useState[0], setWindowWidth = _useState[1];
164
+ var isMobile = windowWidth <= 768;
165
+ var responsiveWidth = isMobile ? '100%' : width;
166
+ var responsiveHeight = isMobile ? Math.min(windowWidth * 0.8, 400) : height;
167
+ // 监听窗口大小变化
168
+ useEffect(function() {
169
+ var handleResize = function() {
170
+ setWindowWidth(window.innerWidth);
171
+ };
172
+ if (typeof window !== 'undefined') {
173
+ window.addEventListener('resize', handleResize);
174
+ return function() {
175
+ return window.removeEventListener('resize', handleResize);
176
+ };
177
+ }
178
+ }, []);
179
+ // 样式注册
180
+ var context = useContext(ConfigProvider.ConfigContext);
181
+ var baseClassName = context === null || context === void 0 ? void 0 : context.getPrefixCls('bar-chart-container');
182
+ var _useStyle = useStyle(baseClassName), wrapSSR = _useStyle.wrapSSR, hashId = _useStyle.hashId;
183
+ var chartRef = useRef(null);
184
+ // 处理 ChartStatistic 组件配置
185
+ var statistics = useMemo(function() {
186
+ if (!statisticConfig) return null;
187
+ return Array.isArray(statisticConfig) ? statisticConfig : [
188
+ statisticConfig
189
+ ];
190
+ }, [
191
+ statisticConfig
192
+ ]);
193
+ // 从数据中提取唯一的类别作为筛选选项
194
+ var categories = useMemo(function() {
195
+ var uniqueCategories = _to_consumable_array(new Set(safeData.map(function(item) {
196
+ return item.category;
197
+ }))).filter(Boolean);
198
+ return uniqueCategories;
199
+ }, [
200
+ safeData
201
+ ]);
202
+ // 从数据中提取 filterLabel,过滤掉 undefined 值
203
+ var validFilterLabels = useMemo(function() {
204
+ return safeData.map(function(item) {
205
+ return item.filterLabel;
206
+ }).filter(function(filterLabel) {
207
+ return filterLabel !== undefined;
208
+ });
209
+ }, [
210
+ safeData
211
+ ]);
212
+ var filterLabels = useMemo(function() {
213
+ return validFilterLabels.length > 0 ? _to_consumable_array(new Set(validFilterLabels)) : undefined;
214
+ }, [
215
+ validFilterLabels
216
+ ]);
217
+ // 状态管理
218
+ var _useState1 = _sliced_to_array(useState(categories.find(Boolean) || ''), 2), selectedFilter = _useState1[0], setSelectedFilter = _useState1[1];
219
+ var _useState2 = _sliced_to_array(useState(filterLabels && filterLabels.length > 0 ? filterLabels[0] : undefined), 2), selectedFilterLabel = _useState2[0], setSelectedFilterLabel = _useState2[1];
220
+ // 当数据变化导致当前选中分类失效时,自动回退到首个有效分类或空(显示全部)
221
+ useEffect(function() {
222
+ if (selectedFilter && !categories.includes(selectedFilter)) {
223
+ setSelectedFilter(categories.find(Boolean) || '');
224
+ }
225
+ }, [
226
+ categories,
227
+ selectedFilter
228
+ ]);
229
+ // 筛选数据
230
+ var filteredData = useMemo(function() {
231
+ // 先按分类与可选的 filterLabel 进行筛选
232
+ var base = selectedFilter ? safeData.filter(function(item) {
233
+ return item.category === selectedFilter;
234
+ }) : safeData;
235
+ var withFilterLabel = !filterLabels || !selectedFilterLabel ? base : base.filter(function(item) {
236
+ return item.filterLabel === selectedFilterLabel;
237
+ });
238
+ // 最终统一过滤掉 x 为空(null/undefined)的数据,避免后续 toString 报错
239
+ return withFilterLabel.filter(function(item) {
240
+ return item.x !== null && item.x !== undefined;
241
+ });
242
+ }, [
243
+ safeData,
244
+ selectedFilter,
245
+ filterLabels,
246
+ selectedFilterLabel
247
+ ]);
248
+ // 从数据中提取唯一的类型
249
+ var types = useMemo(function() {
250
+ return _to_consumable_array(new Set(filteredData.map(function(item) {
251
+ return item.type;
252
+ })));
253
+ }, [
254
+ filteredData
255
+ ]);
256
+ // 从数据中提取唯一的x值 - 水平柱状图时保持原始顺序
257
+ var xValues = useMemo(function() {
258
+ if (indexAxis === 'y') {
259
+ // 水平柱状图时,x是类目轴,应保持原始顺序而不排序
260
+ var uniqueValues = _to_consumable_array(new Set(filteredData.map(function(item) {
261
+ return item.x;
262
+ }).filter(function(x) {
263
+ return x !== null && x !== undefined;
264
+ })));
265
+ return uniqueValues;
474
266
  }
475
- },
476
- tooltip: {
477
- backgroundColor: isLight ? "rgba(255,255,255,0.95)" : "rgba(0,0,0,0.85)",
478
- titleColor: isLight ? "#333" : "#fff",
479
- bodyColor: isLight ? "#333" : "#fff",
480
- borderColor: isLight ? "rgba(0,0,0,0.12)" : "rgba(255,255,255,0.2)",
481
- borderWidth: 1,
482
- cornerRadius: isMobile ? 6 : 8,
483
- displayColors: true
484
- }
485
- }, ChartDataLabels && {
486
- datalabels: {
487
- display: (context2) => {
488
- var _a, _b, _c, _d, _e, _f;
489
- if (!showDataLabels)
490
- return false;
491
- if (stacked) {
492
- const chart = context2.chart;
493
- const dsIndex = context2.datasetIndex;
494
- const dIndex = context2.dataIndex;
495
- const currentStack = (_b = (_a = chart.data.datasets) == null ? void 0 : _a[dsIndex]) == null ? void 0 : _b.stack;
496
- const currentValue = Number(
497
- (_f = (_e = (_d = (_c = chart.data.datasets) == null ? void 0 : _c[dsIndex]) == null ? void 0 : _d.data) == null ? void 0 : _e[dIndex]) != null ? _f : 0
498
- );
499
- const sameStackIndexes = chart.data.datasets.map((_, i) => i).filter((i) => {
500
- var _a2, _b2, _c2;
501
- const ds = (_a2 = chart.data.datasets) == null ? void 0 : _a2[i];
502
- if (!chart.isDatasetVisible(i))
503
- return false;
504
- if (currentStack && (ds == null ? void 0 : ds.stack) !== currentStack)
505
- return false;
506
- const v = Number((_c2 = (_b2 = ds == null ? void 0 : ds.data) == null ? void 0 : _b2[dIndex]) != null ? _c2 : 0);
507
- return v >= 0 && currentValue >= 0 || v < 0 && currentValue < 0;
267
+ return extractAndSortXValues(filteredData);
268
+ }, [
269
+ filteredData,
270
+ indexAxis
271
+ ]);
272
+ // 从数据中获取xtitle和ytitle
273
+ var xTitle = useMemo(function() {
274
+ var titles = _to_consumable_array(new Set(filteredData.map(function(item) {
275
+ return item.xtitle;
276
+ }).filter(Boolean)));
277
+ return titles[0] || '';
278
+ }, [
279
+ filteredData
280
+ ]);
281
+ var yTitle = useMemo(function() {
282
+ var titles = _to_consumable_array(new Set(filteredData.map(function(item) {
283
+ return item.ytitle;
284
+ }).filter(Boolean)));
285
+ return titles[0] || '';
286
+ }, [
287
+ filteredData
288
+ ]);
289
+ // 是否是正负柱图(同一批次同时存在正值与负值)
290
+ var hasPositive = useMemo(function() {
291
+ return filteredData.some(function(item) {
292
+ var v = typeof item.y === 'number' ? item.y : Number(item.y);
293
+ return Number.isFinite(v) && v > 0;
294
+ });
295
+ }, [
296
+ filteredData
297
+ ]);
298
+ var hasNegative = useMemo(function() {
299
+ return filteredData.some(function(item) {
300
+ var v = typeof item.y === 'number' ? item.y : Number(item.y);
301
+ return Number.isFinite(v) && v < 0;
302
+ });
303
+ }, [
304
+ filteredData
305
+ ]);
306
+ var isDiverging = hasPositive && hasNegative;
307
+ // 构建Chart.js数据结构
308
+ var processedData = useMemo(function() {
309
+ var labels = xValues.map(function(x) {
310
+ return x.toString();
311
+ });
312
+ var datasets = types.map(function(type, index) {
313
+ var provided = color;
314
+ var pickByIndex = function(i) {
315
+ return Array.isArray(provided) ? provided[i] || provided[0] || defaultColorList[i % defaultColorList.length] : provided || defaultColorList[i % defaultColorList.length];
316
+ };
317
+ var baseColor = pickByIndex(index);
318
+ // 为每个类型收集数据点
319
+ var typeData = xValues.map(function(x) {
320
+ var dataPoint = findDataPointByXValue(filteredData, x, type);
321
+ var v = dataPoint === null || dataPoint === void 0 ? void 0 : dataPoint.y;
322
+ var n = typeof v === 'number' ? v : Number(v);
323
+ return Number.isFinite(n) ? n : null;
508
324
  });
509
- const topIndex = sameStackIndexes.length ? Math.max(...sameStackIndexes) : dsIndex;
510
- return dsIndex === topIndex;
511
- }
512
- return true;
513
- },
514
- anchor: indexAxis === "y" ? "end" : "end",
515
- align: indexAxis === "y" ? "end" : "top",
516
- offset: 4,
517
- color: axisTextColor,
518
- font: {
519
- size: isMobile ? 10 : 11,
520
- weight: "normal"
521
- },
522
- formatter: (value, context2) => {
523
- var _a, _b, _c, _d, _e;
524
- if (value === null || value === void 0)
525
- return "";
526
- const dataIndex = context2.dataIndex;
527
- const datasetIndex = context2.datasetIndex;
528
- const labelValue = (_a = context2.chart.data.labels) == null ? void 0 : _a[dataIndex];
529
- const label = typeof labelValue === "string" || typeof labelValue === "number" ? labelValue : String(labelValue || "");
530
- const datasetLabel = String(context2.dataset.label || "");
531
- if (stacked) {
532
- const chart = context2.chart;
533
- const datasets = chart.data.datasets;
534
- const currentValue = Number(
535
- (_d = (_c = (_b = datasets == null ? void 0 : datasets[datasetIndex]) == null ? void 0 : _b.data) == null ? void 0 : _c[dataIndex]) != null ? _d : 0
536
- );
537
- const currentStack = (_e = datasets == null ? void 0 : datasets[datasetIndex]) == null ? void 0 : _e.stack;
538
- let total = 0;
539
- datasets.forEach((dataset, i) => {
540
- if (!chart.isDatasetVisible(i))
541
- return;
542
- if (currentStack && (dataset == null ? void 0 : dataset.stack) !== currentStack)
543
- return;
544
- const val = dataset.data[dataIndex];
545
- if (val !== null && val !== void 0) {
546
- const numVal = Number(val);
547
- if (numVal >= 0 && currentValue >= 0 || numVal < 0 && currentValue < 0) {
548
- total += numVal;
549
- }
550
- }
325
+ return _object_spread_props(_object_spread({
326
+ label: type || '默认',
327
+ data: typeData,
328
+ borderColor: function(ctx) {
329
+ var parsed = ctx.parsed;
330
+ var value = indexAxis === 'y' ? typeof (parsed === null || parsed === void 0 ? void 0 : parsed.x) === 'number' ? parsed.x : 0 : typeof (parsed === null || parsed === void 0 ? void 0 : parsed.y) === 'number' ? parsed.y : 0;
331
+ var base = baseColor;
332
+ if (!color && isDiverging) {
333
+ base = value >= 0 ? POSITIVE_COLOR_HEX : NEGATIVE_COLOR_HEX;
334
+ } else if (Array.isArray(color) && isDiverging) {
335
+ var pos = color[0] || baseColor;
336
+ var neg = color[1] || color[0] || baseColor;
337
+ base = value >= 0 ? pos : neg;
338
+ }
339
+ return hexToRgba(base, 0.95);
340
+ },
341
+ backgroundColor: function(ctx) {
342
+ var chart = ctx.chart;
343
+ var chartArea = chart.chartArea;
344
+ var parsed = ctx.parsed;
345
+ if (!chartArea) return hexToRgba(baseColor, 0.6);
346
+ var xScale = chart.scales['x'];
347
+ var yScale = chart.scales['y'];
348
+ var startAlpha = 0.65;
349
+ var endAlpha = 0.95;
350
+ // 安全检查:确保坐标轴已正确初始化
351
+ if (!xScale || !yScale || typeof xScale.getPixelForValue !== 'function' || typeof yScale.getPixelForValue !== 'function') {
352
+ return hexToRgba(baseColor, 0.6);
353
+ }
354
+ if (indexAxis === 'y') {
355
+ var value = typeof (parsed === null || parsed === void 0 ? void 0 : parsed.x) === 'number' ? parsed.x : 0;
356
+ var base = baseColor;
357
+ if (!color && isDiverging) {
358
+ base = value >= 0 ? POSITIVE_COLOR_HEX : NEGATIVE_COLOR_HEX;
359
+ } else if (Array.isArray(color) && isDiverging) {
360
+ var pos = color[0] || baseColor;
361
+ var neg = color[1] || color[0] || baseColor;
362
+ base = value >= 0 ? pos : neg;
363
+ }
364
+ // 当值为 0 时,直接返回纯色,避免渐变范围为 0 导致的显示问题
365
+ if (value === 0) {
366
+ return hexToRgba(base, 0.75);
367
+ }
368
+ // 安全获取像素值,添加有限性检查
369
+ var x0 = xScale.getPixelForValue(0);
370
+ var x1 = xScale.getPixelForValue(value);
371
+ // 检查像素值是否为有限数
372
+ if (!Number.isFinite(x0) || !Number.isFinite(x1)) {
373
+ return hexToRgba(base, endAlpha);
374
+ }
375
+ // 从靠近坐标轴的零点开始,向数据端渐深
376
+ var gradient = chart.ctx.createLinearGradient(x0, 0, x1, 0);
377
+ gradient.addColorStop(0, hexToRgba(base, startAlpha));
378
+ gradient.addColorStop(1, hexToRgba(base, endAlpha));
379
+ return gradient;
380
+ }
381
+ var value1 = typeof (parsed === null || parsed === void 0 ? void 0 : parsed.y) === 'number' ? parsed.y : 0;
382
+ var base1 = baseColor;
383
+ if (!color && isDiverging) {
384
+ base1 = value1 >= 0 ? POSITIVE_COLOR_HEX : NEGATIVE_COLOR_HEX;
385
+ } else if (Array.isArray(color) && isDiverging) {
386
+ var pos1 = color[0] || baseColor;
387
+ var neg1 = color[1] || color[0] || baseColor;
388
+ base1 = value1 >= 0 ? pos1 : neg1;
389
+ }
390
+ // 当值为 0 时,直接返回纯色,避免渐变范围为 0 导致的显示问题
391
+ if (value1 === 0) {
392
+ return hexToRgba(base1, 0.75);
393
+ }
394
+ // 安全获取像素值,添加有限性检查
395
+ var y0 = yScale.getPixelForValue(0);
396
+ var y1 = yScale.getPixelForValue(value1);
397
+ // 检查像素值是否为有限数
398
+ if (!Number.isFinite(y0) || !Number.isFinite(y1)) {
399
+ return hexToRgba(base1, endAlpha);
400
+ }
401
+ var gradient1 = chart.ctx.createLinearGradient(0, y0, 0, y1);
402
+ gradient1.addColorStop(0, hexToRgba(base1, startAlpha));
403
+ gradient1.addColorStop(1, hexToRgba(base1, endAlpha));
404
+ return gradient1;
405
+ },
406
+ borderWidth: 0,
407
+ // 当设置了 maxBarThickness 时,使用较大的百分比以允许 maxBarThickness 生效
408
+ categoryPercentage: maxBarThickness ? 1.0 : 0.7,
409
+ barPercentage: maxBarThickness ? 1.0 : 0.8
410
+ }, maxBarThickness && {
411
+ maxBarThickness: maxBarThickness
412
+ }), {
413
+ stack: stacked ? 'stack' : undefined,
414
+ borderRadius: function(ctx) {
415
+ var rawValue = ctx === null || ctx === void 0 ? void 0 : ctx.raw;
416
+ var value = typeof rawValue === 'number' ? rawValue : Number(rawValue !== null && rawValue !== void 0 ? rawValue : 0);
417
+ var isHorizontal = indexAxis === 'y';
418
+ var radius = 6;
419
+ var chart = ctx === null || ctx === void 0 ? void 0 : ctx.chart;
420
+ // When stacked, only the outermost (top) segment of the same sign gets radius
421
+ var isTopOfStack = true;
422
+ if (stacked && chart) {
423
+ var _Math;
424
+ var _chart_data_datasets_dsIndex, _chart_data_datasets;
425
+ var dsIndex = ctx === null || ctx === void 0 ? void 0 : ctx.datasetIndex;
426
+ var dIndex = ctx === null || ctx === void 0 ? void 0 : ctx.dataIndex;
427
+ var currentStack = (_chart_data_datasets = chart.data.datasets) === null || _chart_data_datasets === void 0 ? void 0 : (_chart_data_datasets_dsIndex = _chart_data_datasets[dsIndex]) === null || _chart_data_datasets_dsIndex === void 0 ? void 0 : _chart_data_datasets_dsIndex.stack;
428
+ var sameStackIndexes = chart.data.datasets.map(function(_, i) {
429
+ return i;
430
+ }).filter(function(i) {
431
+ var _chart_data_datasets, _ds_data;
432
+ var ds = (_chart_data_datasets = chart.data.datasets) === null || _chart_data_datasets === void 0 ? void 0 : _chart_data_datasets[i];
433
+ if (!chart.isDatasetVisible(i)) return false;
434
+ if (currentStack) {
435
+ if ((ds === null || ds === void 0 ? void 0 : ds.stack) !== currentStack) return false;
436
+ }
437
+ var _ds_data_dIndex;
438
+ var v = Number((_ds_data_dIndex = ds === null || ds === void 0 ? void 0 : (_ds_data = ds.data) === null || _ds_data === void 0 ? void 0 : _ds_data[dIndex]) !== null && _ds_data_dIndex !== void 0 ? _ds_data_dIndex : 0);
439
+ return v >= 0 && value >= 0 || v < 0 && value < 0;
440
+ });
441
+ // top means the last dataset in rendering order among same sign
442
+ var topIndex = sameStackIndexes.length ? (_Math = Math).max.apply(_Math, _to_consumable_array(sameStackIndexes)) : dsIndex;
443
+ isTopOfStack = dsIndex === topIndex;
444
+ }
445
+ if (!isTopOfStack) return 0;
446
+ if (isHorizontal) {
447
+ if (value >= 0) {
448
+ return {
449
+ topRight: radius,
450
+ bottomRight: radius,
451
+ topLeft: 0,
452
+ bottomLeft: 0
453
+ };
454
+ } else {
455
+ return {
456
+ topLeft: radius,
457
+ bottomLeft: radius,
458
+ topRight: 0,
459
+ bottomRight: 0
460
+ };
461
+ }
462
+ } else {
463
+ if (value >= 0) {
464
+ return {
465
+ topLeft: radius,
466
+ topRight: radius,
467
+ bottomLeft: 0,
468
+ bottomRight: 0
469
+ };
470
+ } else {
471
+ return {
472
+ bottomLeft: radius,
473
+ bottomRight: radius,
474
+ topLeft: 0,
475
+ topRight: 0
476
+ };
477
+ }
478
+ }
479
+ },
480
+ borderSkipped: false
551
481
  });
552
- if (dataLabelFormatter) {
553
- return dataLabelFormatter({
554
- value: total,
555
- label,
556
- datasetLabel,
557
- dataIndex,
558
- datasetIndex
559
- });
482
+ });
483
+ return {
484
+ labels: labels,
485
+ datasets: datasets
486
+ };
487
+ }, [
488
+ filteredData,
489
+ types,
490
+ xValues,
491
+ stacked,
492
+ indexAxis,
493
+ maxBarThickness
494
+ ]);
495
+ // 筛选器选项
496
+ var filterOptions = useMemo(function() {
497
+ return categories.map(function(category) {
498
+ return {
499
+ label: category || '默认',
500
+ value: category || '默认'
501
+ };
502
+ });
503
+ }, [
504
+ categories
505
+ ]);
506
+ // 根据 filterLabel 筛选数据 - 只有当 filterLabels 存在时才生成
507
+ var filteredDataByFilterLabel = useMemo(function() {
508
+ return filterLabels === null || filterLabels === void 0 ? void 0 : filterLabels.map(function(item) {
509
+ return {
510
+ key: item,
511
+ label: item
512
+ };
513
+ });
514
+ }, [
515
+ filterLabels
516
+ ]);
517
+ var isLight = theme === 'light';
518
+ var axisTextColor = isLight ? 'rgba(0, 25, 61, 0.3255)' : 'rgba(255, 255, 255, 0.8)';
519
+ var gridColor = isLight ? 'rgba(0,0,0,0.08)' : 'rgba(255,255,255,0.2)';
520
+ // 标签宽度计算函数
521
+ var calculateLabelWidth = function(text) {
522
+ var fontSize = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 11;
523
+ // 创建临时canvas来测量文本宽度
524
+ var canvas = document.createElement('canvas');
525
+ var context = canvas.getContext('2d');
526
+ if (!context) return text.length * fontSize * 0.6; // 备用估算
527
+ context.font = "".concat(fontSize, "px Arial, sans-serif");
528
+ var metrics = context.measureText(text);
529
+ return metrics.width;
530
+ };
531
+ // 计算所需的最大标签宽度
532
+ var calculateMaxLabelWidth = useMemo(function() {
533
+ if (!showDataLabels || !filteredData.length) return 0;
534
+ var fontSize = isMobile ? 10 : 11;
535
+ var maxWidth = 0;
536
+ // 遍历所有数据点,计算标签文本的最大宽度
537
+ filteredData.forEach(function(item) {
538
+ var value = typeof item.y === 'number' ? item.y : Number(item.y);
539
+ if (Number.isFinite(value)) {
540
+ var labelText = '';
541
+ if (dataLabelFormatter) {
542
+ labelText = dataLabelFormatter({
543
+ value: value,
544
+ label: String(item.x),
545
+ datasetLabel: String(item.type || '默认'),
546
+ dataIndex: 0,
547
+ datasetIndex: 0
548
+ });
549
+ } else {
550
+ // 使用默认格式化
551
+ labelText = value.toLocaleString();
552
+ }
553
+ var width = calculateLabelWidth(labelText, fontSize);
554
+ maxWidth = Math.max(maxWidth, width);
560
555
  }
561
- return total.toLocaleString();
562
- }
563
- if (dataLabelFormatter) {
564
- return dataLabelFormatter({
565
- value,
566
- label,
567
- datasetLabel,
568
- dataIndex,
569
- datasetIndex
570
- });
571
- }
572
- return value.toLocaleString();
556
+ });
557
+ return maxWidth;
558
+ }, [
559
+ filteredData,
560
+ showDataLabels,
561
+ dataLabelFormatter,
562
+ isMobile
563
+ ]);
564
+ // 计算动态padding
565
+ var calculateDynamicPadding = useMemo(function() {
566
+ if (!showDataLabels || calculateMaxLabelWidth === 0) return {
567
+ top: 0,
568
+ right: 0,
569
+ bottom: 0,
570
+ left: 0
571
+ };
572
+ var basePadding = 8; // 基础padding
573
+ var labelPadding = Math.ceil(calculateMaxLabelWidth) + 12; // 标签宽度 + 额外间距
574
+ if (indexAxis === 'y') {
575
+ // 水平柱状图:标签在右侧,需要增加右侧padding
576
+ return {
577
+ top: basePadding,
578
+ right: Math.max(basePadding, labelPadding),
579
+ bottom: basePadding,
580
+ left: basePadding
581
+ };
582
+ } else {
583
+ // 垂直柱状图:标签在上方,需要增加上方padding
584
+ return {
585
+ top: Math.max(basePadding, labelPadding),
586
+ right: basePadding,
587
+ bottom: basePadding,
588
+ left: basePadding
589
+ };
573
590
  }
574
- }
575
- }),
576
- scales: {
577
- x: {
578
- display: !hiddenX,
579
- stacked,
580
- position: xPosition,
581
- title: {
582
- display: !!xTitle,
583
- text: xTitle,
584
- color: axisTextColor,
585
- font: { size: isMobile ? 10 : 12, weight: "normal" },
586
- align: "end"
587
- },
588
- grid: {
589
- display: showGrid,
590
- color: gridColor,
591
- lineWidth: 1,
592
- drawTicks: false,
593
- tickLength: 0
594
- },
595
- ticks: {
596
- color: axisTextColor,
597
- font: { size: isMobile ? 10 : 12 },
598
- padding: isMobile ? 10 : 12
599
- },
600
- border: {
601
- color: gridColor
591
+ }, [
592
+ showDataLabels,
593
+ calculateMaxLabelWidth,
594
+ indexAxis
595
+ ]);
596
+ // 深度合并函数
597
+ var deepMerge = function(target, source) {
598
+ if (!source || (typeof source === "undefined" ? "undefined" : _type_of(source)) !== 'object') return source;
599
+ if (!target || (typeof target === "undefined" ? "undefined" : _type_of(target)) !== 'object') return source;
600
+ var result = _object_spread({}, target);
601
+ for(var key in source){
602
+ if (source.hasOwnProperty(key)) {
603
+ if (_type_of(source[key]) === 'object' && source[key] !== null && !Array.isArray(source[key])) {
604
+ var _target_layout;
605
+ // 特殊处理layout.padding,确保动态计算的padding不被覆盖
606
+ if (key === 'layout' && source[key].padding && ((_target_layout = target.layout) === null || _target_layout === void 0 ? void 0 : _target_layout.padding)) {
607
+ result[key] = _object_spread_props(_object_spread({}, target[key], source[key]), {
608
+ padding: _object_spread({}, target[key].padding, source[key].padding)
609
+ });
610
+ } else {
611
+ result[key] = deepMerge(target[key] || {}, source[key]);
612
+ }
613
+ } else {
614
+ result[key] = source[key];
615
+ }
616
+ }
602
617
  }
603
- },
604
- y: {
605
- display: !hiddenY,
606
- stacked,
607
- position: yPosition,
608
- beginAtZero: true,
609
- title: {
610
- display: !!yTitle,
611
- text: yTitle,
612
- color: axisTextColor,
613
- font: { size: isMobile ? 10 : 12, weight: "normal" },
614
- align: "end"
615
- },
616
- grid: {
617
- display: showGrid,
618
- color: gridColor,
619
- lineWidth: 1,
620
- drawTicks: false,
621
- tickLength: 0
622
- },
623
- ticks: {
624
- color: axisTextColor,
625
- font: { size: isMobile ? 10 : 12 },
626
- padding: isMobile ? 10 : 12
618
+ return result;
619
+ };
620
+ var defaultOptions = {
621
+ responsive: true,
622
+ maintainAspectRatio: false,
623
+ indexAxis: indexAxis,
624
+ layout: {
625
+ padding: calculateDynamicPadding
627
626
  },
628
- border: {
629
- color: gridColor
627
+ plugins: _object_spread({
628
+ legend: {
629
+ display: showLegend,
630
+ position: legendPosition,
631
+ align: legendAlign,
632
+ labels: {
633
+ color: axisTextColor,
634
+ font: {
635
+ size: isMobile ? 10 : 12,
636
+ weight: 'normal'
637
+ },
638
+ padding: isMobile ? 10 : 12,
639
+ usePointStyle: true,
640
+ pointStyle: 'rectRounded'
641
+ }
642
+ },
643
+ tooltip: {
644
+ backgroundColor: isLight ? 'rgba(255,255,255,0.95)' : 'rgba(0,0,0,0.85)',
645
+ titleColor: isLight ? '#333' : '#fff',
646
+ bodyColor: isLight ? '#333' : '#fff',
647
+ borderColor: isLight ? 'rgba(0,0,0,0.12)' : 'rgba(255,255,255,0.2)',
648
+ borderWidth: 1,
649
+ cornerRadius: isMobile ? 6 : 8,
650
+ displayColors: true
651
+ }
652
+ }, ChartDataLabels && {
653
+ datalabels: {
654
+ display: function(context) {
655
+ if (!showDataLabels) return false;
656
+ // 堆叠图:只在可见数据集中最后一个显示标签(显示累计总和)
657
+ if (stacked) {
658
+ var _Math;
659
+ var _chart_data_datasets_dsIndex, _chart_data_datasets, _chart_data_datasets_dsIndex_data, _chart_data_datasets_dsIndex1, _chart_data_datasets1;
660
+ var chart = context.chart;
661
+ var dsIndex = context.datasetIndex;
662
+ var dIndex = context.dataIndex;
663
+ var currentStack = (_chart_data_datasets = chart.data.datasets) === null || _chart_data_datasets === void 0 ? void 0 : (_chart_data_datasets_dsIndex = _chart_data_datasets[dsIndex]) === null || _chart_data_datasets_dsIndex === void 0 ? void 0 : _chart_data_datasets_dsIndex.stack;
664
+ var _chart_data_datasets_dsIndex_data_dIndex;
665
+ // 获取当前数据点的值,用于判断正负
666
+ var currentValue = Number((_chart_data_datasets_dsIndex_data_dIndex = (_chart_data_datasets1 = chart.data.datasets) === null || _chart_data_datasets1 === void 0 ? void 0 : (_chart_data_datasets_dsIndex1 = _chart_data_datasets1[dsIndex]) === null || _chart_data_datasets_dsIndex1 === void 0 ? void 0 : (_chart_data_datasets_dsIndex_data = _chart_data_datasets_dsIndex1.data) === null || _chart_data_datasets_dsIndex_data === void 0 ? void 0 : _chart_data_datasets_dsIndex_data[dIndex]) !== null && _chart_data_datasets_dsIndex_data_dIndex !== void 0 ? _chart_data_datasets_dsIndex_data_dIndex : 0);
667
+ // 找出所有可见的、同一堆叠、同一符号(正/负)的数据集索引
668
+ var sameStackIndexes = chart.data.datasets.map(function(_, i) {
669
+ return i;
670
+ }).filter(function(i) {
671
+ var _chart_data_datasets, _ds_data;
672
+ var ds = (_chart_data_datasets = chart.data.datasets) === null || _chart_data_datasets === void 0 ? void 0 : _chart_data_datasets[i];
673
+ // 检查数据集是否可见
674
+ if (!chart.isDatasetVisible(i)) return false;
675
+ // 检查是否属于同一堆叠
676
+ if (currentStack && (ds === null || ds === void 0 ? void 0 : ds.stack) !== currentStack) return false;
677
+ var _ds_data_dIndex;
678
+ // 检查该位置的值是否与当前值同号(正/负)
679
+ var v = Number((_ds_data_dIndex = ds === null || ds === void 0 ? void 0 : (_ds_data = ds.data) === null || _ds_data === void 0 ? void 0 : _ds_data[dIndex]) !== null && _ds_data_dIndex !== void 0 ? _ds_data_dIndex : 0);
680
+ return v >= 0 && currentValue >= 0 || v < 0 && currentValue < 0;
681
+ });
682
+ // 只在可见数据集中的最后一个显示标签
683
+ var topIndex = sameStackIndexes.length ? (_Math = Math).max.apply(_Math, _to_consumable_array(sameStackIndexes)) : dsIndex;
684
+ return dsIndex === topIndex;
685
+ }
686
+ // 非堆叠图:显示所有标签
687
+ return true;
688
+ },
689
+ anchor: indexAxis === 'y' ? 'end' : 'end',
690
+ align: indexAxis === 'y' ? 'end' : 'top',
691
+ offset: 4,
692
+ color: axisTextColor,
693
+ font: {
694
+ size: isMobile ? 10 : 11,
695
+ weight: 'normal'
696
+ },
697
+ formatter: function(value, context) {
698
+ var _context_chart_data_labels;
699
+ if (value === null || value === undefined) return '';
700
+ var dataIndex = context.dataIndex;
701
+ var datasetIndex = context.datasetIndex;
702
+ var labelValue = (_context_chart_data_labels = context.chart.data.labels) === null || _context_chart_data_labels === void 0 ? void 0 : _context_chart_data_labels[dataIndex];
703
+ var label = typeof labelValue === 'string' || typeof labelValue === 'number' ? labelValue : String(labelValue || '');
704
+ var datasetLabel = String(context.dataset.label || '');
705
+ // 堆叠图:计算并显示该位置的可见数据集累计总和
706
+ if (stacked) {
707
+ var _datasets_datasetIndex_data, _datasets_datasetIndex, _datasets_datasetIndex1;
708
+ var chart = context.chart;
709
+ var datasets = chart.data.datasets;
710
+ var _datasets_datasetIndex_data_dataIndex;
711
+ var currentValue = Number((_datasets_datasetIndex_data_dataIndex = datasets === null || datasets === void 0 ? void 0 : (_datasets_datasetIndex = datasets[datasetIndex]) === null || _datasets_datasetIndex === void 0 ? void 0 : (_datasets_datasetIndex_data = _datasets_datasetIndex.data) === null || _datasets_datasetIndex_data === void 0 ? void 0 : _datasets_datasetIndex_data[dataIndex]) !== null && _datasets_datasetIndex_data_dataIndex !== void 0 ? _datasets_datasetIndex_data_dataIndex : 0);
712
+ var currentStack = datasets === null || datasets === void 0 ? void 0 : (_datasets_datasetIndex1 = datasets[datasetIndex]) === null || _datasets_datasetIndex1 === void 0 ? void 0 : _datasets_datasetIndex1.stack;
713
+ // 只累加可见的、同一堆叠、同一符号的数据集
714
+ var total = 0;
715
+ datasets.forEach(function(dataset, i) {
716
+ // 检查数据集是否可见
717
+ if (!chart.isDatasetVisible(i)) return;
718
+ // 检查是否属于同一堆叠
719
+ if (currentStack && (dataset === null || dataset === void 0 ? void 0 : dataset.stack) !== currentStack) return;
720
+ var val = dataset.data[dataIndex];
721
+ if (val !== null && val !== undefined) {
722
+ var numVal = Number(val);
723
+ // 只累加与当前值同号的数据
724
+ if (numVal >= 0 && currentValue >= 0 || numVal < 0 && currentValue < 0) {
725
+ total += numVal;
726
+ }
727
+ }
728
+ });
729
+ if (dataLabelFormatter) {
730
+ return dataLabelFormatter({
731
+ value: total,
732
+ label: label,
733
+ datasetLabel: datasetLabel,
734
+ dataIndex: dataIndex,
735
+ datasetIndex: datasetIndex
736
+ });
737
+ }
738
+ return total.toLocaleString();
739
+ }
740
+ // 非堆叠图:显示原始值
741
+ if (dataLabelFormatter) {
742
+ return dataLabelFormatter({
743
+ value: value,
744
+ label: label,
745
+ datasetLabel: datasetLabel,
746
+ dataIndex: dataIndex,
747
+ datasetIndex: datasetIndex
748
+ });
749
+ }
750
+ return value.toLocaleString();
751
+ }
752
+ }
753
+ }),
754
+ scales: {
755
+ x: {
756
+ display: !hiddenX,
757
+ stacked: stacked,
758
+ position: xPosition,
759
+ title: {
760
+ display: !!xTitle,
761
+ text: xTitle,
762
+ color: axisTextColor,
763
+ font: {
764
+ size: isMobile ? 10 : 12,
765
+ weight: 'normal'
766
+ },
767
+ align: 'end'
768
+ },
769
+ grid: {
770
+ display: showGrid,
771
+ color: gridColor,
772
+ lineWidth: 1,
773
+ drawTicks: false,
774
+ tickLength: 0
775
+ },
776
+ ticks: {
777
+ color: axisTextColor,
778
+ font: {
779
+ size: isMobile ? 10 : 12
780
+ },
781
+ padding: isMobile ? 10 : 12
782
+ },
783
+ border: {
784
+ color: gridColor
785
+ }
786
+ },
787
+ y: {
788
+ display: !hiddenY,
789
+ stacked: stacked,
790
+ position: yPosition,
791
+ beginAtZero: true,
792
+ title: {
793
+ display: !!yTitle,
794
+ text: yTitle,
795
+ color: axisTextColor,
796
+ font: {
797
+ size: isMobile ? 10 : 12,
798
+ weight: 'normal'
799
+ },
800
+ align: 'end'
801
+ },
802
+ grid: {
803
+ display: showGrid,
804
+ color: gridColor,
805
+ lineWidth: 1,
806
+ drawTicks: false,
807
+ tickLength: 0
808
+ },
809
+ ticks: {
810
+ color: axisTextColor,
811
+ font: {
812
+ size: isMobile ? 10 : 12
813
+ },
814
+ padding: isMobile ? 10 : 12
815
+ },
816
+ border: {
817
+ color: gridColor
818
+ }
819
+ }
630
820
  }
631
- }
632
- }
633
- };
634
- const options = chartOptions ? deepMerge(defaultOptions, chartOptions) : defaultOptions;
635
- const handleDownload = () => {
636
- downloadChart(chartRef.current, "bar-chart");
637
- };
638
- return wrapSSR(
639
- /* @__PURE__ */ React.createElement(
640
- ChartContainer,
641
- {
642
- baseClassName,
643
- className,
644
- theme,
645
- isMobile,
646
- variant,
821
+ };
822
+ // 合并外部传入的选项与默认选项
823
+ var options = chartOptions ? deepMerge(defaultOptions, chartOptions) : defaultOptions;
824
+ var handleDownload = function() {
825
+ downloadChart(chartRef.current, 'bar-chart');
826
+ };
827
+ return wrapSSR(/*#__PURE__*/ React.createElement(ChartContainer, {
828
+ baseClassName: baseClassName,
829
+ className: className,
830
+ theme: theme,
831
+ isMobile: isMobile,
832
+ variant: variant,
647
833
  style: {
648
- width: responsiveWidth,
649
- height: responsiveHeight
834
+ width: responsiveWidth,
835
+ height: responsiveHeight
650
836
  }
651
- },
652
- /* @__PURE__ */ React.createElement(
653
- ChartToolBar,
654
- {
655
- title,
656
- theme,
657
- onDownload: handleDownload,
658
- extra: toolbarExtra,
659
- dataTime,
660
- filter: renderFilterInToolbar && filterOptions && filterOptions.length > 1 ? /* @__PURE__ */ React.createElement(
661
- ChartFilter,
662
- __spreadProps(__spreadValues({
663
- filterOptions,
664
- selectedFilter,
665
- onFilterChange: setSelectedFilter
666
- }, filterLabels && {
667
- customOptions: filteredDataByFilterLabel,
668
- selectedCustomSelection: selectedFilterLabel,
669
- onSelectionChange: setSelectedFilterLabel
670
- }), {
671
- theme,
672
- variant: "compact"
673
- })
674
- ) : void 0
675
- }
676
- ),
677
- statistics && /* @__PURE__ */ React.createElement(
678
- "div",
679
- {
680
- className: classNames(`${baseClassName}-statistic-container`, hashId)
681
- },
682
- statistics.map((config, index) => /* @__PURE__ */ React.createElement(ChartStatistic, __spreadProps(__spreadValues({ key: index }, config), { theme })))
683
- ),
684
- !renderFilterInToolbar && filterOptions && filterOptions.length > 1 && /* @__PURE__ */ React.createElement(
685
- ChartFilter,
686
- __spreadProps(__spreadValues({
687
- filterOptions,
688
- selectedFilter,
689
- onFilterChange: setSelectedFilter
837
+ }, /*#__PURE__*/ React.createElement(ChartToolBar, {
838
+ title: title,
839
+ theme: theme,
840
+ onDownload: handleDownload,
841
+ extra: toolbarExtra,
842
+ dataTime: dataTime,
843
+ filter: renderFilterInToolbar && filterOptions && filterOptions.length > 1 ? /*#__PURE__*/ React.createElement(ChartFilter, _object_spread_props(_object_spread({
844
+ filterOptions: filterOptions,
845
+ selectedFilter: selectedFilter,
846
+ onFilterChange: setSelectedFilter
690
847
  }, filterLabels && {
691
- customOptions: filteredDataByFilterLabel,
692
- selectedCustomSelection: selectedFilterLabel,
693
- onSelectionChange: setSelectedFilterLabel
848
+ customOptions: filteredDataByFilterLabel,
849
+ selectedCustomSelection: selectedFilterLabel,
850
+ onSelectionChange: setSelectedFilterLabel
694
851
  }), {
695
- theme
696
- })
697
- ),
698
- /* @__PURE__ */ React.createElement(
699
- "div",
700
- {
701
- className: `${baseClassName}-wrapper`,
702
- style: { marginTop: "20px", height: responsiveHeight }
703
- },
704
- /* @__PURE__ */ React.createElement(
705
- Bar,
706
- {
707
- ref: chartRef,
708
- data: processedData,
709
- options,
710
- plugins: [ChartDataLabels]
711
- }
712
- )
713
- )
714
- )
715
- );
716
- };
717
- var BarChart_default = BarChart;
718
- export {
719
- BarChart_default as default
852
+ theme: theme,
853
+ variant: "compact"
854
+ })) : undefined
855
+ }), statistics && /*#__PURE__*/ React.createElement("div", {
856
+ className: classNames("".concat(baseClassName, "-statistic-container"), hashId)
857
+ }, statistics.map(function(config, index) {
858
+ return /*#__PURE__*/ React.createElement(ChartStatistic, _object_spread_props(_object_spread({
859
+ key: index
860
+ }, config), {
861
+ theme: theme
862
+ }));
863
+ })), !renderFilterInToolbar && filterOptions && filterOptions.length > 1 && /*#__PURE__*/ React.createElement(ChartFilter, _object_spread_props(_object_spread({
864
+ filterOptions: filterOptions,
865
+ selectedFilter: selectedFilter,
866
+ onFilterChange: setSelectedFilter
867
+ }, filterLabels && {
868
+ customOptions: filteredDataByFilterLabel,
869
+ selectedCustomSelection: selectedFilterLabel,
870
+ onSelectionChange: setSelectedFilterLabel
871
+ }), {
872
+ theme: theme
873
+ })), /*#__PURE__*/ React.createElement("div", {
874
+ className: "".concat(baseClassName, "-wrapper"),
875
+ style: {
876
+ marginTop: '20px',
877
+ height: responsiveHeight
878
+ }
879
+ }, /*#__PURE__*/ React.createElement(Bar, {
880
+ ref: chartRef,
881
+ data: processedData,
882
+ options: options,
883
+ plugins: [
884
+ ChartDataLabels
885
+ ]
886
+ }))));
720
887
  };
888
+ export default BarChart;