@antv/gpt-vis 0.6.0 → 1.0.0-beta.1

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 (547) hide show
  1. package/README.md +183 -114
  2. package/README.zh-CN.md +185 -112
  3. package/dist/cjs/gpt-vis/index.d.ts +108 -0
  4. package/dist/cjs/gpt-vis/index.js +173 -0
  5. package/dist/cjs/index.d.ts +44 -13
  6. package/dist/cjs/index.js +65 -35
  7. package/dist/cjs/syntax/index.d.ts +2 -0
  8. package/dist/cjs/{Text/mini-charts/hooks → syntax}/index.js +9 -7
  9. package/dist/cjs/syntax/parser.d.ts +67 -0
  10. package/dist/cjs/syntax/parser.js +235 -0
  11. package/dist/cjs/types/index.d.ts +33 -2
  12. package/dist/cjs/types/index.js +0 -6
  13. package/dist/cjs/util/theme.d.ts +21 -0
  14. package/dist/cjs/{theme.js → util/theme.js} +63 -14
  15. package/dist/cjs/vis/area/index.d.ts +60 -0
  16. package/dist/cjs/vis/area/index.js +151 -0
  17. package/dist/cjs/vis/bar/index.d.ts +60 -0
  18. package/dist/cjs/vis/bar/index.js +122 -0
  19. package/dist/cjs/vis/boxplot/index.d.ts +59 -0
  20. package/dist/cjs/vis/boxplot/index.js +106 -0
  21. package/dist/cjs/vis/column/index.d.ts +60 -0
  22. package/dist/cjs/vis/column/index.js +121 -0
  23. package/dist/cjs/vis/dual-axes/index.d.ts +64 -0
  24. package/dist/cjs/vis/dual-axes/index.js +147 -0
  25. package/dist/cjs/vis/funnel/index.d.ts +54 -0
  26. package/dist/cjs/vis/funnel/index.js +189 -0
  27. package/dist/cjs/vis/histogram/index.d.ts +47 -0
  28. package/dist/cjs/vis/histogram/index.js +112 -0
  29. package/dist/cjs/vis/line/index.d.ts +59 -0
  30. package/dist/cjs/vis/line/index.js +104 -0
  31. package/dist/cjs/vis/liquid/index.d.ts +44 -0
  32. package/dist/cjs/vis/liquid/index.js +87 -0
  33. package/dist/cjs/vis/pie/index.d.ts +55 -0
  34. package/dist/cjs/vis/pie/index.js +108 -0
  35. package/dist/cjs/vis/radar/index.d.ts +57 -0
  36. package/dist/cjs/vis/radar/index.js +152 -0
  37. package/dist/cjs/vis/sankey/index.d.ts +56 -0
  38. package/dist/cjs/vis/sankey/index.js +93 -0
  39. package/dist/cjs/vis/scatter/index.d.ts +54 -0
  40. package/dist/cjs/vis/scatter/index.js +94 -0
  41. package/dist/cjs/vis/summary/index.d.ts +41 -0
  42. package/dist/cjs/{Text/utils/getThemeColor.js → vis/summary/index.js} +33 -22
  43. package/dist/cjs/vis/table/index.d.ts +49 -0
  44. package/dist/cjs/vis/table/index.js +173 -0
  45. package/dist/cjs/vis/treemap/index.d.ts +68 -0
  46. package/dist/cjs/vis/treemap/index.js +105 -0
  47. package/dist/cjs/vis/venn/index.d.ts +54 -0
  48. package/dist/cjs/vis/venn/index.js +100 -0
  49. package/dist/cjs/vis/violin/index.d.ts +59 -0
  50. package/dist/cjs/vis/violin/index.js +155 -0
  51. package/dist/cjs/vis/waterfall/index.d.ts +67 -0
  52. package/dist/cjs/vis/waterfall/index.js +172 -0
  53. package/dist/cjs/vis/word-cloud/index.d.ts +53 -0
  54. package/dist/cjs/vis/word-cloud/index.js +89 -0
  55. package/dist/cjs/vis-wrapper/icons.d.ts +8 -0
  56. package/dist/cjs/vis-wrapper/icons.js +63 -0
  57. package/dist/cjs/vis-wrapper/index.d.ts +24 -0
  58. package/dist/cjs/vis-wrapper/index.js +231 -0
  59. package/dist/cjs/vis-wrapper/styles.d.ts +8 -0
  60. package/dist/cjs/vis-wrapper/styles.js +214 -0
  61. package/dist/esm/gpt-vis/index.d.ts +108 -0
  62. package/dist/esm/gpt-vis/index.js +224 -0
  63. package/dist/esm/index.d.ts +44 -13
  64. package/dist/esm/index.js +22 -15
  65. package/dist/esm/syntax/index.d.ts +2 -0
  66. package/dist/esm/syntax/index.js +1 -0
  67. package/dist/esm/syntax/parser.d.ts +67 -0
  68. package/dist/esm/syntax/parser.js +401 -0
  69. package/dist/esm/types/index.d.ts +33 -2
  70. package/dist/esm/types/index.js +0 -1
  71. package/dist/esm/util/theme.d.ts +21 -0
  72. package/dist/esm/util/theme.js +141 -0
  73. package/dist/esm/vis/area/index.d.ts +60 -0
  74. package/dist/esm/vis/area/index.js +230 -0
  75. package/dist/esm/vis/bar/index.d.ts +60 -0
  76. package/dist/esm/vis/bar/index.js +203 -0
  77. package/dist/esm/vis/boxplot/index.d.ts +59 -0
  78. package/dist/esm/vis/boxplot/index.js +164 -0
  79. package/dist/esm/vis/column/index.d.ts +60 -0
  80. package/dist/esm/vis/column/index.js +198 -0
  81. package/dist/esm/vis/dual-axes/index.d.ts +64 -0
  82. package/dist/esm/vis/dual-axes/index.js +234 -0
  83. package/dist/esm/vis/funnel/index.d.ts +54 -0
  84. package/dist/esm/vis/funnel/index.js +246 -0
  85. package/dist/esm/vis/histogram/index.d.ts +47 -0
  86. package/dist/esm/vis/histogram/index.js +148 -0
  87. package/dist/esm/vis/line/index.d.ts +59 -0
  88. package/dist/esm/vis/line/index.js +172 -0
  89. package/dist/esm/vis/liquid/index.d.ts +44 -0
  90. package/dist/esm/vis/liquid/index.js +130 -0
  91. package/dist/esm/vis/pie/index.d.ts +55 -0
  92. package/dist/esm/vis/pie/index.js +168 -0
  93. package/dist/esm/vis/radar/index.d.ts +57 -0
  94. package/dist/esm/vis/radar/index.js +222 -0
  95. package/dist/esm/vis/sankey/index.d.ts +56 -0
  96. package/dist/esm/vis/sankey/index.js +135 -0
  97. package/dist/esm/vis/scatter/index.d.ts +54 -0
  98. package/dist/esm/vis/scatter/index.js +158 -0
  99. package/dist/esm/vis/summary/index.d.ts +41 -0
  100. package/dist/esm/vis/summary/index.js +80 -0
  101. package/dist/esm/vis/table/index.d.ts +49 -0
  102. package/dist/esm/vis/table/index.js +160 -0
  103. package/dist/esm/vis/treemap/index.d.ts +68 -0
  104. package/dist/esm/vis/treemap/index.js +158 -0
  105. package/dist/esm/vis/venn/index.d.ts +54 -0
  106. package/dist/esm/vis/venn/index.js +142 -0
  107. package/dist/esm/vis/violin/index.d.ts +59 -0
  108. package/dist/esm/vis/violin/index.js +245 -0
  109. package/dist/esm/vis/waterfall/index.d.ts +67 -0
  110. package/dist/esm/vis/waterfall/index.js +245 -0
  111. package/dist/esm/vis/word-cloud/index.d.ts +53 -0
  112. package/dist/esm/vis/word-cloud/index.js +128 -0
  113. package/dist/esm/vis-wrapper/icons.d.ts +8 -0
  114. package/dist/esm/vis-wrapper/icons.js +29 -0
  115. package/dist/esm/vis-wrapper/index.d.ts +24 -0
  116. package/dist/esm/vis-wrapper/index.js +237 -0
  117. package/dist/esm/vis-wrapper/styles.d.ts +8 -0
  118. package/dist/esm/vis-wrapper/styles.js +21 -0
  119. package/dist/umd/index.min.js +1 -1
  120. package/package.json +26 -67
  121. package/src/gpt-vis/index.ts +283 -0
  122. package/src/index.ts +44 -0
  123. package/src/readme.md +37 -0
  124. package/src/syntax/index.ts +2 -0
  125. package/src/syntax/parser.ts +411 -0
  126. package/src/types/index.ts +29 -0
  127. package/src/util/theme.ts +167 -0
  128. package/src/vis/area/README.md +143 -0
  129. package/src/vis/area/index.ts +212 -0
  130. package/src/vis/bar/README.md +158 -0
  131. package/src/vis/bar/index.ts +186 -0
  132. package/src/vis/boxplot/README.md +168 -0
  133. package/src/vis/boxplot/index.ts +162 -0
  134. package/src/vis/column/README.md +158 -0
  135. package/src/vis/column/index.ts +185 -0
  136. package/src/vis/dual-axes/README.md +191 -0
  137. package/src/vis/dual-axes/index.ts +218 -0
  138. package/src/vis/funnel/README.md +143 -0
  139. package/src/vis/funnel/index.ts +238 -0
  140. package/src/vis/histogram/README.md +130 -0
  141. package/src/vis/histogram/index.ts +153 -0
  142. package/src/vis/line/README.md +138 -0
  143. package/src/vis/line/index.ts +159 -0
  144. package/src/vis/liquid/README.md +150 -0
  145. package/src/vis/liquid/index.ts +130 -0
  146. package/src/vis/pie/README.md +127 -0
  147. package/src/vis/pie/index.ts +163 -0
  148. package/src/vis/radar/README.md +184 -0
  149. package/src/vis/radar/index.ts +214 -0
  150. package/src/vis/sankey/README.md +144 -0
  151. package/src/vis/sankey/index.ts +144 -0
  152. package/src/vis/scatter/README.md +145 -0
  153. package/src/vis/scatter/index.ts +147 -0
  154. package/src/vis/summary/README.md +272 -0
  155. package/src/vis/summary/index.ts +91 -0
  156. package/src/vis/table/README.md +174 -0
  157. package/src/vis/table/index.ts +241 -0
  158. package/src/vis/treemap/README.md +199 -0
  159. package/src/vis/treemap/index.ts +167 -0
  160. package/src/vis/venn/README.md +153 -0
  161. package/src/vis/venn/index.ts +149 -0
  162. package/src/vis/violin/README.md +168 -0
  163. package/src/vis/violin/index.ts +216 -0
  164. package/src/vis/waterfall/README.md +178 -0
  165. package/src/vis/waterfall/index.ts +258 -0
  166. package/src/vis/word-cloud/README.md +137 -0
  167. package/src/vis/word-cloud/index.ts +137 -0
  168. package/src/vis-wrapper/README.md +159 -0
  169. package/src/vis-wrapper/icons.ts +35 -0
  170. package/src/vis-wrapper/index.ts +276 -0
  171. package/src/vis-wrapper/styles.ts +195 -0
  172. package/README.ja-JP.md +0 -164
  173. package/dist/cjs/Area/index.d.ts +0 -11
  174. package/dist/cjs/Area/index.js +0 -105
  175. package/dist/cjs/Bar/index.d.ts +0 -14
  176. package/dist/cjs/Bar/index.js +0 -101
  177. package/dist/cjs/Boxplot/index.d.ts +0 -11
  178. package/dist/cjs/Boxplot/index.js +0 -88
  179. package/dist/cjs/ChartCodeRender/Loading.d.ts +0 -6
  180. package/dist/cjs/ChartCodeRender/Loading.js +0 -54
  181. package/dist/cjs/ChartCodeRender/VisChart.d.ts +0 -19
  182. package/dist/cjs/ChartCodeRender/VisChart.js +0 -338
  183. package/dist/cjs/ChartCodeRender/icon.d.ts +0 -10
  184. package/dist/cjs/ChartCodeRender/icon.js +0 -162
  185. package/dist/cjs/ChartCodeRender/index.d.ts +0 -8
  186. package/dist/cjs/ChartCodeRender/index.js +0 -113
  187. package/dist/cjs/ChartCodeRender/styles.d.ts +0 -19
  188. package/dist/cjs/ChartCodeRender/styles.js +0 -232
  189. package/dist/cjs/ChartCodeRender/type.d.ts +0 -176
  190. package/dist/cjs/ChartCodeRender/type.js +0 -17
  191. package/dist/cjs/ChartCodeRender/utils.d.ts +0 -1
  192. package/dist/cjs/ChartCodeRender/utils.js +0 -51
  193. package/dist/cjs/Column/index.d.ts +0 -14
  194. package/dist/cjs/Column/index.js +0 -102
  195. package/dist/cjs/ConfigProvider/context.d.ts +0 -3
  196. package/dist/cjs/ConfigProvider/context.js +0 -41
  197. package/dist/cjs/ConfigProvider/hooks/index.d.ts +0 -1
  198. package/dist/cjs/ConfigProvider/hooks/index.js +0 -23
  199. package/dist/cjs/ConfigProvider/hooks/useConfig.d.ts +0 -13
  200. package/dist/cjs/ConfigProvider/hooks/useConfig.js +0 -109
  201. package/dist/cjs/ConfigProvider/index.d.ts +0 -7
  202. package/dist/cjs/ConfigProvider/index.js +0 -43
  203. package/dist/cjs/DualAxes/index.d.ts +0 -20
  204. package/dist/cjs/DualAxes/index.js +0 -84
  205. package/dist/cjs/DualAxes/util.d.ts +0 -9
  206. package/dist/cjs/DualAxes/util.js +0 -77
  207. package/dist/cjs/FishboneDiagram/index.d.ts +0 -7
  208. package/dist/cjs/FishboneDiagram/index.js +0 -66
  209. package/dist/cjs/FlowDiagram/helper.d.ts +0 -7
  210. package/dist/cjs/FlowDiagram/helper.js +0 -83
  211. package/dist/cjs/FlowDiagram/index.d.ts +0 -6
  212. package/dist/cjs/FlowDiagram/index.js +0 -107
  213. package/dist/cjs/Funnel/index.d.ts +0 -12
  214. package/dist/cjs/Funnel/index.js +0 -173
  215. package/dist/cjs/GPTVis/Lite.d.ts +0 -19
  216. package/dist/cjs/GPTVis/Lite.js +0 -81
  217. package/dist/cjs/GPTVis/hooks/useContext.d.ts +0 -8
  218. package/dist/cjs/GPTVis/hooks/useContext.js +0 -49
  219. package/dist/cjs/GPTVis/hooks/useEvent.d.ts +0 -1
  220. package/dist/cjs/GPTVis/hooks/useEvent.js +0 -33
  221. package/dist/cjs/GPTVis/index.d.ts +0 -6
  222. package/dist/cjs/GPTVis/index.js +0 -42
  223. package/dist/cjs/HeatMap/index.d.ts +0 -12
  224. package/dist/cjs/HeatMap/index.js +0 -67
  225. package/dist/cjs/Histogram/index.d.ts +0 -8
  226. package/dist/cjs/Histogram/index.js +0 -79
  227. package/dist/cjs/IndentedTree/index.d.ts +0 -7
  228. package/dist/cjs/IndentedTree/index.js +0 -78
  229. package/dist/cjs/Line/index.d.ts +0 -11
  230. package/dist/cjs/Line/index.js +0 -94
  231. package/dist/cjs/Liquid/index.d.ts +0 -11
  232. package/dist/cjs/Liquid/index.js +0 -85
  233. package/dist/cjs/Map/Component/MapView.d.ts +0 -3
  234. package/dist/cjs/Map/Component/MapView.js +0 -40
  235. package/dist/cjs/Map/Component/Marker.d.ts +0 -3
  236. package/dist/cjs/Map/Component/Marker.js +0 -53
  237. package/dist/cjs/Map/Component/Polyline.d.ts +0 -3
  238. package/dist/cjs/Map/Component/Polyline.js +0 -50
  239. package/dist/cjs/Map/Component/index.d.ts +0 -4
  240. package/dist/cjs/Map/Component/index.js +0 -45
  241. package/dist/cjs/Map/data.json +0 -305
  242. package/dist/cjs/Map/index.d.ts +0 -5
  243. package/dist/cjs/Map/index.js +0 -61
  244. package/dist/cjs/MindMap/index.d.ts +0 -7
  245. package/dist/cjs/MindMap/index.js +0 -75
  246. package/dist/cjs/NetworkGraph/index.d.ts +0 -6
  247. package/dist/cjs/NetworkGraph/index.js +0 -75
  248. package/dist/cjs/OrganizationChart/index.d.ts +0 -6
  249. package/dist/cjs/OrganizationChart/index.js +0 -95
  250. package/dist/cjs/PathMap/index.d.ts +0 -6
  251. package/dist/cjs/PathMap/index.js +0 -58
  252. package/dist/cjs/Pie/index.d.ts +0 -23
  253. package/dist/cjs/Pie/index.js +0 -94
  254. package/dist/cjs/PinMap/index.d.ts +0 -6
  255. package/dist/cjs/PinMap/index.js +0 -44
  256. package/dist/cjs/PinMap/maker.svg +0 -1
  257. package/dist/cjs/Radar/index.d.ts +0 -13
  258. package/dist/cjs/Radar/index.js +0 -153
  259. package/dist/cjs/Sankey/index.d.ts +0 -14
  260. package/dist/cjs/Sankey/index.js +0 -110
  261. package/dist/cjs/Scatter/index.d.ts +0 -13
  262. package/dist/cjs/Scatter/index.js +0 -103
  263. package/dist/cjs/Spreadsheet/index.d.ts +0 -28
  264. package/dist/cjs/Spreadsheet/index.js +0 -113
  265. package/dist/cjs/Table/index.d.ts +0 -9
  266. package/dist/cjs/Table/index.js +0 -91
  267. package/dist/cjs/Text/VisText.d.ts +0 -4
  268. package/dist/cjs/Text/VisText.js +0 -82
  269. package/dist/cjs/Text/config.d.ts +0 -18
  270. package/dist/cjs/Text/config.js +0 -91
  271. package/dist/cjs/Text/custom-icons/index.d.ts +0 -3
  272. package/dist/cjs/Text/custom-icons/index.js +0 -66
  273. package/dist/cjs/Text/index.d.ts +0 -3
  274. package/dist/cjs/Text/index.js +0 -42
  275. package/dist/cjs/Text/mini-charts/hooks/getElementFontSize.d.ts +0 -1
  276. package/dist/cjs/Text/mini-charts/hooks/getElementFontSize.js +0 -65
  277. package/dist/cjs/Text/mini-charts/hooks/index.d.ts +0 -1
  278. package/dist/cjs/Text/mini-charts/hooks/useSvgWrapper.d.ts +0 -5
  279. package/dist/cjs/Text/mini-charts/hooks/useSvgWrapper.js +0 -65
  280. package/dist/cjs/Text/mini-charts/index.d.ts +0 -2
  281. package/dist/cjs/Text/mini-charts/index.js +0 -25
  282. package/dist/cjs/Text/mini-charts/line/SingleLineChart.d.ts +0 -3
  283. package/dist/cjs/Text/mini-charts/line/SingleLineChart.js +0 -63
  284. package/dist/cjs/Text/mini-charts/line/index.d.ts +0 -1
  285. package/dist/cjs/Text/mini-charts/line/index.js +0 -29
  286. package/dist/cjs/Text/mini-charts/line/scaleLinear.d.ts +0 -4
  287. package/dist/cjs/Text/mini-charts/line/scaleLinear.js +0 -35
  288. package/dist/cjs/Text/mini-charts/line/useLineCompute.d.ts +0 -6
  289. package/dist/cjs/Text/mini-charts/line/useLineCompute.js +0 -103
  290. package/dist/cjs/Text/mini-charts/proportion/getArcPath.d.ts +0 -1
  291. package/dist/cjs/Text/mini-charts/proportion/getArcPath.js +0 -51
  292. package/dist/cjs/Text/mini-charts/proportion/index.d.ts +0 -3
  293. package/dist/cjs/Text/mini-charts/proportion/index.js +0 -71
  294. package/dist/cjs/Text/theme.d.ts +0 -24
  295. package/dist/cjs/Text/theme.js +0 -52
  296. package/dist/cjs/Text/types.d.ts +0 -20
  297. package/dist/cjs/Text/types.js +0 -17
  298. package/dist/cjs/Text/utils/getThemeColor.d.ts +0 -11
  299. package/dist/cjs/Text/utils/index.d.ts +0 -2
  300. package/dist/cjs/Text/utils/index.js +0 -25
  301. package/dist/cjs/Text/utils/useAntdDarkAlgorithm.d.ts +0 -2
  302. package/dist/cjs/Text/utils/useAntdDarkAlgorithm.js +0 -40
  303. package/dist/cjs/Treemap/index.d.ts +0 -10
  304. package/dist/cjs/Treemap/index.js +0 -93
  305. package/dist/cjs/Venn/index.d.ts +0 -32
  306. package/dist/cjs/Venn/index.js +0 -87
  307. package/dist/cjs/Violin/index.d.ts +0 -10
  308. package/dist/cjs/Violin/index.js +0 -190
  309. package/dist/cjs/Waterfall/index.d.ts +0 -25
  310. package/dist/cjs/Waterfall/index.js +0 -184
  311. package/dist/cjs/WordCloud/index.d.ts +0 -9
  312. package/dist/cjs/WordCloud/index.js +0 -76
  313. package/dist/cjs/constants/index.d.ts +0 -2
  314. package/dist/cjs/constants/index.js +0 -35
  315. package/dist/cjs/export-map.browser.d.ts +0 -4
  316. package/dist/cjs/export-map.browser.js +0 -48
  317. package/dist/cjs/export-map.d.ts +0 -10
  318. package/dist/cjs/export-map.js +0 -41
  319. package/dist/cjs/export.d.ts +0 -76
  320. package/dist/cjs/export.js +0 -159
  321. package/dist/cjs/render.d.ts +0 -2
  322. package/dist/cjs/render.js +0 -67
  323. package/dist/cjs/theme.d.ts +0 -2
  324. package/dist/cjs/types/chart.d.ts +0 -88
  325. package/dist/cjs/types/chart.js +0 -61
  326. package/dist/cjs/types/config.d.ts +0 -25
  327. package/dist/cjs/types/config.js +0 -17
  328. package/dist/cjs/types/map.d.ts +0 -242
  329. package/dist/cjs/types/map.js +0 -17
  330. package/dist/cjs/utils/config.d.ts +0 -5
  331. package/dist/cjs/utils/config.js +0 -76
  332. package/dist/cjs/utils/graph.d.ts +0 -18
  333. package/dist/cjs/utils/graph.js +0 -64
  334. package/dist/cjs/utils/index.d.ts +0 -1
  335. package/dist/cjs/utils/index.js +0 -23
  336. package/dist/cjs/utils/map/context.d.ts +0 -3
  337. package/dist/cjs/utils/map/context.js +0 -45
  338. package/dist/cjs/utils/map/controls.d.ts +0 -0
  339. package/dist/cjs/utils/map/controls.js +0 -0
  340. package/dist/cjs/utils/map/index.d.ts +0 -6
  341. package/dist/cjs/utils/map/index.js +0 -33
  342. package/dist/cjs/utils/map/markers.d.ts +0 -2
  343. package/dist/cjs/utils/map/markers.js +0 -88
  344. package/dist/cjs/utils/map/polyline.d.ts +0 -2
  345. package/dist/cjs/utils/map/polyline.js +0 -52
  346. package/dist/cjs/utils/map/style.d.ts +0 -45
  347. package/dist/cjs/utils/map/style.js +0 -112
  348. package/dist/cjs/utils/map/util.d.ts +0 -1
  349. package/dist/cjs/utils/map/util.js +0 -38
  350. package/dist/cjs/utils/map/view.d.ts +0 -5
  351. package/dist/cjs/utils/map/view.js +0 -100
  352. package/dist/cjs/utils/palette.d.ts +0 -2
  353. package/dist/cjs/utils/palette.js +0 -54
  354. package/dist/cjs/utils/plot.d.ts +0 -5
  355. package/dist/cjs/utils/plot.js +0 -90
  356. package/dist/cjs/version.d.ts +0 -2
  357. package/dist/cjs/version.js +0 -25
  358. package/dist/esm/Area/index.d.ts +0 -11
  359. package/dist/esm/Area/index.js +0 -108
  360. package/dist/esm/Bar/index.d.ts +0 -14
  361. package/dist/esm/Bar/index.js +0 -92
  362. package/dist/esm/Boxplot/index.d.ts +0 -11
  363. package/dist/esm/Boxplot/index.js +0 -86
  364. package/dist/esm/ChartCodeRender/Loading.d.ts +0 -6
  365. package/dist/esm/ChartCodeRender/Loading.js +0 -21
  366. package/dist/esm/ChartCodeRender/VisChart.d.ts +0 -19
  367. package/dist/esm/ChartCodeRender/VisChart.js +0 -450
  368. package/dist/esm/ChartCodeRender/icon.d.ts +0 -10
  369. package/dist/esm/ChartCodeRender/icon.js +0 -103
  370. package/dist/esm/ChartCodeRender/index.d.ts +0 -8
  371. package/dist/esm/ChartCodeRender/index.js +0 -99
  372. package/dist/esm/ChartCodeRender/styles.d.ts +0 -19
  373. package/dist/esm/ChartCodeRender/styles.js +0 -61
  374. package/dist/esm/ChartCodeRender/type.d.ts +0 -176
  375. package/dist/esm/ChartCodeRender/type.js +0 -1
  376. package/dist/esm/ChartCodeRender/utils.d.ts +0 -1
  377. package/dist/esm/ChartCodeRender/utils.js +0 -37
  378. package/dist/esm/Column/index.d.ts +0 -14
  379. package/dist/esm/Column/index.js +0 -93
  380. package/dist/esm/ConfigProvider/context.d.ts +0 -3
  381. package/dist/esm/ConfigProvider/context.js +0 -3
  382. package/dist/esm/ConfigProvider/hooks/index.d.ts +0 -1
  383. package/dist/esm/ConfigProvider/hooks/index.js +0 -1
  384. package/dist/esm/ConfigProvider/hooks/useConfig.d.ts +0 -13
  385. package/dist/esm/ConfigProvider/hooks/useConfig.js +0 -71
  386. package/dist/esm/ConfigProvider/index.d.ts +0 -7
  387. package/dist/esm/ConfigProvider/index.js +0 -17
  388. package/dist/esm/DualAxes/index.d.ts +0 -20
  389. package/dist/esm/DualAxes/index.js +0 -77
  390. package/dist/esm/DualAxes/util.d.ts +0 -9
  391. package/dist/esm/DualAxes/util.js +0 -77
  392. package/dist/esm/FishboneDiagram/index.d.ts +0 -7
  393. package/dist/esm/FishboneDiagram/index.js +0 -43
  394. package/dist/esm/FlowDiagram/helper.d.ts +0 -7
  395. package/dist/esm/FlowDiagram/helper.js +0 -76
  396. package/dist/esm/FlowDiagram/index.d.ts +0 -6
  397. package/dist/esm/FlowDiagram/index.js +0 -72
  398. package/dist/esm/Funnel/index.d.ts +0 -12
  399. package/dist/esm/Funnel/index.js +0 -171
  400. package/dist/esm/GPTVis/Lite.d.ts +0 -19
  401. package/dist/esm/GPTVis/Lite.js +0 -57
  402. package/dist/esm/GPTVis/hooks/useContext.d.ts +0 -8
  403. package/dist/esm/GPTVis/hooks/useContext.js +0 -9
  404. package/dist/esm/GPTVis/hooks/useEvent.d.ts +0 -1
  405. package/dist/esm/GPTVis/hooks/useEvent.js +0 -6
  406. package/dist/esm/GPTVis/index.d.ts +0 -6
  407. package/dist/esm/GPTVis/index.js +0 -25
  408. package/dist/esm/HeatMap/index.d.ts +0 -12
  409. package/dist/esm/HeatMap/index.js +0 -45
  410. package/dist/esm/Histogram/index.d.ts +0 -8
  411. package/dist/esm/Histogram/index.js +0 -75
  412. package/dist/esm/IndentedTree/index.d.ts +0 -7
  413. package/dist/esm/IndentedTree/index.js +0 -68
  414. package/dist/esm/Line/index.d.ts +0 -11
  415. package/dist/esm/Line/index.js +0 -92
  416. package/dist/esm/Liquid/index.d.ts +0 -11
  417. package/dist/esm/Liquid/index.js +0 -100
  418. package/dist/esm/Map/Component/MapView.d.ts +0 -3
  419. package/dist/esm/Map/Component/MapView.js +0 -18
  420. package/dist/esm/Map/Component/Marker.d.ts +0 -3
  421. package/dist/esm/Map/Component/Marker.js +0 -40
  422. package/dist/esm/Map/Component/Polyline.d.ts +0 -3
  423. package/dist/esm/Map/Component/Polyline.js +0 -35
  424. package/dist/esm/Map/Component/index.d.ts +0 -4
  425. package/dist/esm/Map/Component/index.js +0 -4
  426. package/dist/esm/Map/data.json +0 -305
  427. package/dist/esm/Map/index.d.ts +0 -5
  428. package/dist/esm/Map/index.js +0 -50
  429. package/dist/esm/MindMap/index.d.ts +0 -7
  430. package/dist/esm/MindMap/index.js +0 -69
  431. package/dist/esm/NetworkGraph/index.d.ts +0 -6
  432. package/dist/esm/NetworkGraph/index.js +0 -64
  433. package/dist/esm/OrganizationChart/index.d.ts +0 -6
  434. package/dist/esm/OrganizationChart/index.js +0 -75
  435. package/dist/esm/PathMap/index.d.ts +0 -6
  436. package/dist/esm/PathMap/index.js +0 -41
  437. package/dist/esm/Pie/index.d.ts +0 -23
  438. package/dist/esm/Pie/index.js +0 -96
  439. package/dist/esm/PinMap/index.d.ts +0 -6
  440. package/dist/esm/PinMap/index.js +0 -22
  441. package/dist/esm/PinMap/maker.svg +0 -1
  442. package/dist/esm/Radar/index.d.ts +0 -13
  443. package/dist/esm/Radar/index.js +0 -150
  444. package/dist/esm/Sankey/index.d.ts +0 -14
  445. package/dist/esm/Sankey/index.js +0 -98
  446. package/dist/esm/Scatter/index.d.ts +0 -13
  447. package/dist/esm/Scatter/index.js +0 -95
  448. package/dist/esm/Spreadsheet/index.d.ts +0 -28
  449. package/dist/esm/Spreadsheet/index.js +0 -129
  450. package/dist/esm/Table/index.d.ts +0 -9
  451. package/dist/esm/Table/index.js +0 -30
  452. package/dist/esm/Text/VisText.d.ts +0 -4
  453. package/dist/esm/Text/VisText.js +0 -55
  454. package/dist/esm/Text/config.d.ts +0 -18
  455. package/dist/esm/Text/config.js +0 -82
  456. package/dist/esm/Text/custom-icons/index.d.ts +0 -3
  457. package/dist/esm/Text/custom-icons/index.js +0 -37
  458. package/dist/esm/Text/index.d.ts +0 -3
  459. package/dist/esm/Text/index.js +0 -2
  460. package/dist/esm/Text/mini-charts/hooks/getElementFontSize.d.ts +0 -1
  461. package/dist/esm/Text/mini-charts/hooks/getElementFontSize.js +0 -32
  462. package/dist/esm/Text/mini-charts/hooks/index.d.ts +0 -1
  463. package/dist/esm/Text/mini-charts/hooks/index.js +0 -1
  464. package/dist/esm/Text/mini-charts/hooks/useSvgWrapper.d.ts +0 -5
  465. package/dist/esm/Text/mini-charts/hooks/useSvgWrapper.js +0 -37
  466. package/dist/esm/Text/mini-charts/index.d.ts +0 -2
  467. package/dist/esm/Text/mini-charts/index.js +0 -2
  468. package/dist/esm/Text/mini-charts/line/SingleLineChart.d.ts +0 -3
  469. package/dist/esm/Text/mini-charts/line/SingleLineChart.js +0 -62
  470. package/dist/esm/Text/mini-charts/line/index.d.ts +0 -1
  471. package/dist/esm/Text/mini-charts/line/index.js +0 -1
  472. package/dist/esm/Text/mini-charts/line/scaleLinear.d.ts +0 -4
  473. package/dist/esm/Text/mini-charts/line/scaleLinear.js +0 -19
  474. package/dist/esm/Text/mini-charts/line/useLineCompute.d.ts +0 -6
  475. package/dist/esm/Text/mini-charts/line/useLineCompute.js +0 -118
  476. package/dist/esm/Text/mini-charts/proportion/getArcPath.d.ts +0 -1
  477. package/dist/esm/Text/mini-charts/proportion/getArcPath.js +0 -19
  478. package/dist/esm/Text/mini-charts/proportion/index.d.ts +0 -3
  479. package/dist/esm/Text/mini-charts/proportion/index.js +0 -64
  480. package/dist/esm/Text/theme.d.ts +0 -24
  481. package/dist/esm/Text/theme.js +0 -24
  482. package/dist/esm/Text/types.d.ts +0 -20
  483. package/dist/esm/Text/types.js +0 -1
  484. package/dist/esm/Text/utils/getThemeColor.d.ts +0 -11
  485. package/dist/esm/Text/utils/getThemeColor.js +0 -29
  486. package/dist/esm/Text/utils/index.d.ts +0 -2
  487. package/dist/esm/Text/utils/index.js +0 -2
  488. package/dist/esm/Text/utils/useAntdDarkAlgorithm.d.ts +0 -2
  489. package/dist/esm/Text/utils/useAntdDarkAlgorithm.js +0 -14
  490. package/dist/esm/Treemap/index.d.ts +0 -10
  491. package/dist/esm/Treemap/index.js +0 -88
  492. package/dist/esm/Venn/index.d.ts +0 -32
  493. package/dist/esm/Venn/index.js +0 -69
  494. package/dist/esm/Violin/index.d.ts +0 -10
  495. package/dist/esm/Violin/index.js +0 -199
  496. package/dist/esm/Waterfall/index.d.ts +0 -25
  497. package/dist/esm/Waterfall/index.js +0 -185
  498. package/dist/esm/WordCloud/index.d.ts +0 -9
  499. package/dist/esm/WordCloud/index.js +0 -59
  500. package/dist/esm/constants/index.d.ts +0 -2
  501. package/dist/esm/constants/index.js +0 -9
  502. package/dist/esm/export-map.browser.d.ts +0 -4
  503. package/dist/esm/export-map.browser.js +0 -5
  504. package/dist/esm/export-map.d.ts +0 -10
  505. package/dist/esm/export-map.js +0 -9
  506. package/dist/esm/export.d.ts +0 -76
  507. package/dist/esm/export.js +0 -51
  508. package/dist/esm/render.d.ts +0 -2
  509. package/dist/esm/render.js +0 -32
  510. package/dist/esm/theme.d.ts +0 -2
  511. package/dist/esm/theme.js +0 -103
  512. package/dist/esm/types/chart.d.ts +0 -88
  513. package/dist/esm/types/chart.js +0 -33
  514. package/dist/esm/types/config.d.ts +0 -25
  515. package/dist/esm/types/config.js +0 -1
  516. package/dist/esm/types/map.d.ts +0 -242
  517. package/dist/esm/types/map.js +0 -1
  518. package/dist/esm/utils/config.d.ts +0 -5
  519. package/dist/esm/utils/config.js +0 -53
  520. package/dist/esm/utils/graph.d.ts +0 -18
  521. package/dist/esm/utils/graph.js +0 -55
  522. package/dist/esm/utils/index.d.ts +0 -1
  523. package/dist/esm/utils/index.js +0 -1
  524. package/dist/esm/utils/map/context.d.ts +0 -3
  525. package/dist/esm/utils/map/context.js +0 -42
  526. package/dist/esm/utils/map/controls.d.ts +0 -0
  527. package/dist/esm/utils/map/controls.js +0 -0
  528. package/dist/esm/utils/map/index.d.ts +0 -6
  529. package/dist/esm/utils/map/index.js +0 -6
  530. package/dist/esm/utils/map/markers.d.ts +0 -2
  531. package/dist/esm/utils/map/markers.js +0 -69
  532. package/dist/esm/utils/map/polyline.d.ts +0 -2
  533. package/dist/esm/utils/map/polyline.js +0 -31
  534. package/dist/esm/utils/map/style.d.ts +0 -45
  535. package/dist/esm/utils/map/style.js +0 -80
  536. package/dist/esm/utils/map/util.d.ts +0 -1
  537. package/dist/esm/utils/map/util.js +0 -11
  538. package/dist/esm/utils/map/view.d.ts +0 -5
  539. package/dist/esm/utils/map/view.js +0 -83
  540. package/dist/esm/utils/palette.d.ts +0 -2
  541. package/dist/esm/utils/palette.js +0 -2
  542. package/dist/esm/utils/plot.d.ts +0 -5
  543. package/dist/esm/utils/plot.js +0 -86
  544. package/dist/esm/version.d.ts +0 -2
  545. package/dist/esm/version.js +0 -1
  546. package/dist/umd/737.async.js +0 -1
  547. package/dist/umd/index.min.css +0 -1
@@ -0,0 +1,216 @@
1
+ import { Chart } from '@antv/g2';
2
+ import type { VisualizationOptions } from '../../types';
3
+ import { getBackgroundColor, getThemeColors, getThemeObject } from '../../util/theme';
4
+
5
+ /**
6
+ * ViolinDataItem is the type for each data item in the violin chart.
7
+ */
8
+ export type ViolinDataItem = {
9
+ category: string;
10
+ value: number;
11
+ group?: string;
12
+ };
13
+
14
+ /**
15
+ * ViolinConfig defines the configuration for rendering the violin chart.
16
+ */
17
+ export interface ViolinConfig {
18
+ type?: 'violin';
19
+ data: ViolinDataItem[];
20
+ theme?: 'default' | 'academy' | 'dark';
21
+ title?: string;
22
+ axisXTitle?: string;
23
+ axisYTitle?: string;
24
+ style?: {
25
+ backgroundColor?: string;
26
+ palette?: string[];
27
+ startAtZero?: boolean;
28
+ };
29
+ }
30
+
31
+ /**
32
+ * ViolinInstance represents a violin chart instance with render and destroy.
33
+ */
34
+ export interface ViolinInstance {
35
+ render: (config: ViolinConfig) => void;
36
+ destroy: () => void;
37
+ }
38
+
39
+ /**
40
+ * Violin chart component using G2 5.0.
41
+ *
42
+ * @example
43
+ * ```ts
44
+ * const violin = Violin({
45
+ * container: '#container',
46
+ * width: 600,
47
+ * height: 400,
48
+ * });
49
+ *
50
+ * violin.render({
51
+ * type: 'violin',
52
+ * data: [
53
+ * { category: '班级A', value: 15 },
54
+ * { category: '班级A', value: 18 },
55
+ * { category: '班级A', value: 22 },
56
+ * { category: '班级A', value: 27 },
57
+ * { category: '班级A', value: 35 },
58
+ * ],
59
+ * theme: 'academy'
60
+ * });
61
+ *
62
+ * violin.destroy();
63
+ * ```
64
+ */
65
+ export const Violin = (options: VisualizationOptions): ViolinInstance => {
66
+ const { container, width, height, theme: chartTheme = 'default' } = options;
67
+ let chart: Chart | null = null;
68
+
69
+ /**
70
+ * Render the violin chart with the given configuration.
71
+ */
72
+ const render = (config: ViolinConfig): void => {
73
+ const { data = [], theme = chartTheme, title, axisXTitle, axisYTitle, style = {} } = config;
74
+
75
+ // Clean up previous chart if exists
76
+ if (chart) {
77
+ chart.destroy();
78
+ }
79
+
80
+ // Get colors from style.palette or theme defaults
81
+ const colors = style.palette || getThemeColors(theme);
82
+ const backgroundColor = style.backgroundColor || getBackgroundColor(theme);
83
+ const startAtZero = style.startAtZero || false;
84
+
85
+ // Determine if data has group field for grouped violin plot
86
+ const hasGroupField = (data || [])[0]?.group !== undefined;
87
+
88
+ // Create chart
89
+ chart = new Chart({
90
+ container,
91
+ width,
92
+ height,
93
+ autoFit: true,
94
+ });
95
+
96
+ // Configure chart children for violin plot
97
+ // Violin plot is composed of density plot + boxplot overlay
98
+ let children = [];
99
+
100
+ if (hasGroupField) {
101
+ // Grouped violin plot: density by category and group
102
+ children = [
103
+ {
104
+ type: 'density',
105
+ data: {
106
+ transform: [{ type: 'kde', field: 'value', groupBy: ['category', 'group'] }],
107
+ },
108
+ encode: {
109
+ x: 'category',
110
+ y: 'y',
111
+ color: 'group',
112
+ series: 'group',
113
+ size: 'size',
114
+ },
115
+ scale: {
116
+ y: { nice: true },
117
+ color: { range: colors },
118
+ },
119
+ },
120
+ {
121
+ type: 'boxplot',
122
+ encode: {
123
+ x: 'category',
124
+ y: 'value',
125
+ series: 'group',
126
+ color: 'group',
127
+ shape: 'violin',
128
+ },
129
+ style: { opacity: 0.5, strokeOpacity: 0.5, point: false },
130
+ scale: {
131
+ y: { nice: true },
132
+ color: { range: colors },
133
+ },
134
+ },
135
+ ];
136
+ } else {
137
+ // Simple violin plot: density by category only
138
+ children = [
139
+ {
140
+ type: 'density',
141
+ data: {
142
+ transform: [{ type: 'kde', field: 'value', groupBy: ['category'], size: 20 }],
143
+ },
144
+ encode: {
145
+ x: 'category',
146
+ y: 'y',
147
+ color: 'category',
148
+ size: 'size',
149
+ },
150
+ scale: {
151
+ y: { nice: true },
152
+ color: { range: colors },
153
+ },
154
+ },
155
+ {
156
+ type: 'boxplot',
157
+ encode: {
158
+ x: 'category',
159
+ y: 'value',
160
+ color: 'category',
161
+ shape: 'violin',
162
+ },
163
+ style: { opacity: 0.5, strokeOpacity: 0.5, point: false },
164
+ scale: {
165
+ y: { nice: true },
166
+ color: { range: colors },
167
+ },
168
+ },
169
+ ];
170
+ }
171
+
172
+ // Configure chart options
173
+ // Note: Using 'any' type due to G2's complex type system with transformations
174
+ // This is consistent with how G2 5.0 is used elsewhere in the codebase
175
+ const chartOptions: any = {
176
+ type: 'view',
177
+ data,
178
+ title: title ?? '',
179
+ axis: {
180
+ x: {
181
+ title: axisXTitle || false,
182
+ },
183
+ y: {
184
+ title: axisYTitle || false,
185
+ },
186
+ },
187
+ scale: {
188
+ y: { nice: true, zero: startAtZero },
189
+ },
190
+ children: children,
191
+ legend: {
192
+ color: hasGroupField ? { position: 'top' } : false,
193
+ },
194
+ ...(backgroundColor ? { viewStyle: { viewFill: backgroundColor } } : {}),
195
+ theme: getThemeObject(theme),
196
+ };
197
+
198
+ chart.options(chartOptions);
199
+ chart.render();
200
+ };
201
+
202
+ /**
203
+ * Destroy the chart instance and clean up resources.
204
+ */
205
+ const destroy = (): void => {
206
+ if (chart) {
207
+ chart.destroy();
208
+ chart = null;
209
+ }
210
+ };
211
+
212
+ return {
213
+ render,
214
+ destroy,
215
+ };
216
+ };
@@ -0,0 +1,178 @@
1
+ # Waterfall
2
+
3
+ A waterfall chart component for displaying cumulative effects of sequential values, built with G2 5.0.
4
+
5
+ ## Usage
6
+
7
+ ```ts
8
+ import { Waterfall } from '@antv/gpt-vis/ai';
9
+
10
+ const waterfall = Waterfall({
11
+ container: '#container',
12
+ width: 600,
13
+ height: 400,
14
+ });
15
+
16
+ waterfall.render({
17
+ data: [
18
+ { category: '期初利润', value: 100 },
19
+ { category: '销售收入', value: 80 },
20
+ { category: '运营成本', value: -50 },
21
+ { category: '税费', value: -20 },
22
+ { category: '总计', isTotal: true },
23
+ ],
24
+ });
25
+
26
+ waterfall.destroy();
27
+ ```
28
+
29
+ ## Configuration
30
+
31
+ ### Constructor Options (WaterfallOptions)
32
+
33
+ | Property | Type | Default | Description |
34
+ | --------- | --------------------- | ------- | ----------------------------- |
35
+ | container | string \| HTMLElement | - | Container element or selector |
36
+ | width | number | 640 | Chart width in pixels |
37
+ | height | number | 480 | Chart height in pixels |
38
+
39
+ ### Render Config (WaterfallConfig)
40
+
41
+ | Property | Type | Default | Description |
42
+ | ---------- | ------ | --------- | ------------------------- |
43
+ | data | Array | - | Chart data array |
44
+ | theme | string | 'default' | Color theme |
45
+ | title | string | - | Chart title |
46
+ | axisXTitle | string | - | X-axis title |
47
+ | axisYTitle | string | - | Y-axis title |
48
+ | style | object | - | Chart style configuration |
49
+
50
+ ### Data Structure
51
+
52
+ ```ts
53
+ type WaterfallDataItem = {
54
+ category: string; // Step or category name (required)
55
+ value?: number; // Increment or decrement value (optional)
56
+ isIntermediateTotal?: boolean; // Whether it's an intermediate total (optional)
57
+ isTotal?: boolean; // Whether it's the final total (optional)
58
+ };
59
+ ```
60
+
61
+ ### Style Options
62
+
63
+ ```ts
64
+ style?: {
65
+ backgroundColor?: string; // Background color
66
+ palette?: {
67
+ positiveColor?: string; // Color for positive values (default: '#FF4D4F')
68
+ negativeColor?: string; // Color for negative values (default: '#2EBB59')
69
+ totalColor?: string; // Color for total bars (default: '#1783FF')
70
+ };
71
+ }
72
+ ```
73
+
74
+ ## Examples
75
+
76
+ ### Basic Example
77
+
78
+ ```ts
79
+ waterfall.render({
80
+ data: [
81
+ { category: '期初利润', value: 100 },
82
+ { category: '销售收入', value: 80 },
83
+ { category: '运营成本', value: -50 },
84
+ { category: '税费', value: -20 },
85
+ { category: '总计', isTotal: true },
86
+ ],
87
+ });
88
+ ```
89
+
90
+ ### With Theme
91
+
92
+ ```ts
93
+ waterfall.render({
94
+ data: [
95
+ { category: '基础预算', value: 500 },
96
+ { category: '市场投入', value: 120 },
97
+ { category: '采购优化', value: -60 },
98
+ { category: '运营效率', value: -30 },
99
+ { category: '总利润', isTotal: true },
100
+ ],
101
+ theme: 'dark',
102
+ title: '预算执行情况',
103
+ });
104
+ ```
105
+
106
+ ### With Custom Colors
107
+
108
+ ```ts
109
+ waterfall.render({
110
+ data: [
111
+ { category: 'Q1 收入', value: 1000 },
112
+ { category: 'Q2 收入', value: 1200 },
113
+ { category: '成本', value: -800 },
114
+ { category: '净利润', isTotal: true },
115
+ ],
116
+ title: '季度财务报告',
117
+ style: {
118
+ palette: {
119
+ positiveColor: '#52c41a',
120
+ negativeColor: '#f5222d',
121
+ totalColor: '#1890ff',
122
+ },
123
+ },
124
+ });
125
+ ```
126
+
127
+ ### With Intermediate Total
128
+
129
+ ```ts
130
+ waterfall.render({
131
+ data: [
132
+ { category: '基础预算', value: 500 },
133
+ { category: '市场投入', value: 120 },
134
+ { category: '总投入', isIntermediateTotal: true },
135
+ { category: '采购优化', value: -60 },
136
+ { category: '运营效率', value: -30 },
137
+ { category: '总利润', isTotal: true },
138
+ ],
139
+ title: '预算分析',
140
+ });
141
+ ```
142
+
143
+ ### With Axis Titles
144
+
145
+ ```ts
146
+ waterfall.render({
147
+ data: [
148
+ { category: '期初', value: 100 },
149
+ { category: '收入', value: 80 },
150
+ { category: '支出', value: -50 },
151
+ { category: '期末', isTotal: true },
152
+ ],
153
+ axisXTitle: '项目',
154
+ axisYTitle: '金额(万元)',
155
+ title: '财务流水',
156
+ });
157
+ ```
158
+
159
+ ### With Background Color
160
+
161
+ ```ts
162
+ waterfall.render({
163
+ data: [
164
+ { category: '初始', value: 50 },
165
+ { category: '增长', value: 30 },
166
+ { category: '减少', value: -10 },
167
+ { category: '最终', isTotal: true },
168
+ ],
169
+ style: {
170
+ backgroundColor: '#f0f2f5',
171
+ },
172
+ });
173
+ ```
174
+
175
+ ## Methods
176
+
177
+ - `render(config: WaterfallConfig): void` - Render or update the chart
178
+ - `destroy(): void` - Destroy the chart instance and clean up resources
@@ -0,0 +1,258 @@
1
+ import { Chart } from '@antv/g2';
2
+ import type { VisualizationOptions } from '../../types';
3
+ import { getBackgroundColor, getThemeObject } from '../../util/theme';
4
+
5
+ /**
6
+ * WaterfallDataItem is the type for each data item in the waterfall chart.
7
+ */
8
+ export type WaterfallDataItem = {
9
+ category: string;
10
+ value?: number;
11
+ isIntermediateTotal?: boolean;
12
+ isTotal?: boolean;
13
+ };
14
+
15
+ /**
16
+ * WaterfallPalette defines custom colors for positive, negative, total bars.
17
+ */
18
+ export interface WaterfallPalette {
19
+ positiveColor?: string;
20
+ negativeColor?: string;
21
+ totalColor?: string;
22
+ }
23
+
24
+ /**
25
+ * WaterfallConfig defines the configuration for rendering the waterfall chart.
26
+ */
27
+ export interface WaterfallConfig {
28
+ type?: 'waterfall';
29
+ data: WaterfallDataItem[];
30
+ theme?: 'default' | 'academy' | 'dark';
31
+ title?: string;
32
+ axisXTitle?: string;
33
+ axisYTitle?: string;
34
+ style?: {
35
+ backgroundColor?: string;
36
+ palette?: WaterfallPalette;
37
+ };
38
+ }
39
+
40
+ /**
41
+ * WaterfallInstance represents a waterfall chart instance with render/destroy.
42
+ */
43
+ export interface WaterfallInstance {
44
+ render: (config: WaterfallConfig) => void;
45
+ destroy: () => void;
46
+ }
47
+
48
+ // Default colors for waterfall chart
49
+ const DEFAULT_POSITIVE_COLOR = '#FF4D4F';
50
+ const DEFAULT_NEGATIVE_COLOR = '#2EBB59';
51
+ const DEFAULT_TOTAL_COLOR = '#1783FF';
52
+
53
+ /**
54
+ * Transform waterfall data to add __start__ and __end__ fields
55
+ * for proper rendering of stacked intervals
56
+ */
57
+ function transformWaterfallData(data: WaterfallDataItem[]) {
58
+ let cumulative = 0;
59
+ let lastIntermediateTotalEnd = 0;
60
+ let totalSum = 0;
61
+
62
+ return data.map((item) => {
63
+ const value = item.value || 0;
64
+ let start: number;
65
+ let end: number;
66
+
67
+ if (item.isTotal) {
68
+ start = 0;
69
+ end = totalSum;
70
+ } else if (item.isIntermediateTotal) {
71
+ start = lastIntermediateTotalEnd;
72
+ end = cumulative;
73
+ lastIntermediateTotalEnd = end;
74
+ } else {
75
+ start = cumulative;
76
+ end = cumulative + value;
77
+ cumulative = end;
78
+ totalSum += value;
79
+ }
80
+
81
+ return {
82
+ ...item,
83
+ __start__: start,
84
+ __end__: end,
85
+ __value__: item.isTotal ? totalSum : item.isIntermediateTotal ? end - start : value,
86
+ };
87
+ });
88
+ }
89
+
90
+ /**
91
+ * Generate link data for connecting waterfall bars
92
+ * Each link connects the end of the previous bar to the start of the current bar
93
+ */
94
+ function generateLinkData(data: any[]) {
95
+ return data.reduce((result: any[], current: any, index: number) => {
96
+ if (index > 0) {
97
+ const previous = data[index - 1];
98
+ result.push({
99
+ x: [previous.category, current.category],
100
+ y: current.isTotal || current.isIntermediateTotal ? current.__end__ : current.__start__,
101
+ });
102
+ }
103
+ return result;
104
+ }, []);
105
+ }
106
+
107
+ /**
108
+ * Waterfall chart component using G2 5.0.
109
+ *
110
+ * @example
111
+ * ```ts
112
+ * const waterfall = Waterfall({
113
+ * container: '#container',
114
+ * width: 600,
115
+ * height: 400,
116
+ * });
117
+ *
118
+ * waterfall.render({
119
+ * type: 'waterfall',
120
+ * data: [
121
+ * { category: '期初利润', value: 100 },
122
+ * { category: '销售收入', value: 80 },
123
+ * { category: '运营成本', value: -50 },
124
+ * { category: '税费', value: -20 },
125
+ * { category: '总计', isTotal: true },
126
+ * ],
127
+ * theme: 'academy'
128
+ * });
129
+ *
130
+ * waterfall.destroy();
131
+ * ```
132
+ */
133
+ export const Waterfall = (options: VisualizationOptions): WaterfallInstance => {
134
+ const { container, width, height, theme: chartTheme = 'default' } = options;
135
+ let chart: Chart | null = null;
136
+
137
+ /**
138
+ * Render the waterfall chart with the given configuration.
139
+ */
140
+ const render = (config: WaterfallConfig): void => {
141
+ const { data = [], theme = chartTheme, title, axisXTitle, axisYTitle, style = {} } = config;
142
+
143
+ // Clean up previous chart if exists
144
+ if (chart) {
145
+ chart.destroy();
146
+ }
147
+
148
+ // Get colors from style.palette or defaults
149
+ const backgroundColor = style.backgroundColor || getBackgroundColor(theme);
150
+ const palette = style.palette || {};
151
+ const positiveColor = palette.positiveColor || DEFAULT_POSITIVE_COLOR;
152
+ const negativeColor = palette.negativeColor || DEFAULT_NEGATIVE_COLOR;
153
+ const totalColor = palette.totalColor || DEFAULT_TOTAL_COLOR;
154
+
155
+ // Transform data to include __start__ and __end__ fields
156
+ const transformedData = transformWaterfallData(data);
157
+
158
+ // Generate link data for connecting lines
159
+ const linkData = generateLinkData(transformedData);
160
+
161
+ // Create chart
162
+ chart = new Chart({
163
+ container,
164
+ width,
165
+ height,
166
+ autoFit: true,
167
+ });
168
+
169
+ // Configure chart options
170
+ // Note: Using 'any' type due to G2's complex type system with transformations
171
+ // This is consistent with how G2 5.0 is used elsewhere in the codebase
172
+ const chartOptions: any = {
173
+ type: 'view',
174
+ data: transformedData,
175
+ title: title ?? '',
176
+ marginRight: 28,
177
+ axis: {
178
+ x: {
179
+ title: axisXTitle || false,
180
+ },
181
+ y: {
182
+ title: axisYTitle || false,
183
+ labelFormatter: '~s',
184
+ },
185
+ },
186
+ scale: {
187
+ y: { nice: true },
188
+ },
189
+ children: [
190
+ {
191
+ type: 'interval',
192
+ data: transformedData,
193
+ encode: { x: 'category', y: ['__start__', '__end__'], color: 'category' },
194
+ style: {
195
+ maxWidth: 60,
196
+ stroke: '#666',
197
+ radius: 4,
198
+ fill: (d: any) => {
199
+ return d.isTotal || d.isIntermediateTotal
200
+ ? totalColor
201
+ : d.__value__ > 0
202
+ ? positiveColor
203
+ : negativeColor;
204
+ },
205
+ },
206
+ labels: [
207
+ {
208
+ text: '__value__',
209
+ position: 'inside',
210
+ fontSize: 10,
211
+ transform: [{ type: 'overflowHide' }],
212
+ formatter: '~s',
213
+ fill: '#000',
214
+ fontWeight: 600,
215
+ stroke: '#fff',
216
+ },
217
+ ],
218
+ },
219
+ {
220
+ type: 'link',
221
+ data: linkData,
222
+ encode: {
223
+ x: 'x',
224
+ y: 'y',
225
+ },
226
+ zIndex: -1,
227
+ style: {
228
+ stroke: '#ccc',
229
+ lineDash: [4, 2],
230
+ lineWidth: 1,
231
+ },
232
+ tooltip: false,
233
+ },
234
+ ],
235
+ legend: false,
236
+ ...(backgroundColor ? { viewStyle: { viewFill: backgroundColor } } : {}),
237
+ theme: getThemeObject(theme),
238
+ };
239
+
240
+ chart.options(chartOptions);
241
+ chart.render();
242
+ };
243
+
244
+ /**
245
+ * Destroy the chart instance and clean up resources.
246
+ */
247
+ const destroy = (): void => {
248
+ if (chart) {
249
+ chart.destroy();
250
+ chart = null;
251
+ }
252
+ };
253
+
254
+ return {
255
+ render,
256
+ destroy,
257
+ };
258
+ };