@visactor/vchart 1.10.0-alpha.0 → 1.10.0-alpha.4

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 (588) hide show
  1. package/build/es5/index.js +1 -1
  2. package/build/index.js +4416 -2968
  3. package/build/index.min.js +1 -1
  4. package/build/tsconfig.tsbuildinfo +1 -1
  5. package/cjs/chart/bar/bar-transformer.d.ts +1 -0
  6. package/cjs/chart/bar/bar-transformer.js +19 -2
  7. package/cjs/chart/bar/bar-transformer.js.map +1 -1
  8. package/cjs/chart/bar/interface.d.ts +3 -0
  9. package/cjs/chart/bar/interface.js.map +1 -1
  10. package/cjs/chart/base/base-chart-transformer.js +3 -3
  11. package/cjs/chart/base/base-chart-transformer.js.map +1 -1
  12. package/cjs/chart/base/base-chart.d.ts +1 -1
  13. package/cjs/chart/base/base-chart.js +4 -2
  14. package/cjs/chart/base/base-chart.js.map +1 -1
  15. package/cjs/chart/base/util.d.ts +1 -1
  16. package/cjs/chart/base/util.js +20 -10
  17. package/cjs/chart/base/util.js.map +1 -1
  18. package/cjs/chart/cartesian/cartesian-transformer.d.ts +1 -0
  19. package/cjs/chart/cartesian/cartesian-transformer.js +10 -7
  20. package/cjs/chart/cartesian/cartesian-transformer.js.map +1 -1
  21. package/cjs/chart/polar/polar-transformer.js.map +1 -1
  22. package/cjs/chart/stack.js +2 -1
  23. package/cjs/compile/compiler.js +5 -1
  24. package/cjs/compile/compiler.js.map +1 -1
  25. package/cjs/compile/grammar-item.js +1 -2
  26. package/cjs/compile/mark/compilable-mark.d.ts +4 -1
  27. package/cjs/compile/mark/compilable-mark.js +9 -1
  28. package/cjs/compile/mark/compilable-mark.js.map +1 -1
  29. package/cjs/compile/mark/interface.d.ts +4 -1
  30. package/cjs/compile/mark/interface.js.map +1 -1
  31. package/cjs/component/axis/base-axis.d.ts +1 -53
  32. package/cjs/component/axis/base-axis.js +76 -83
  33. package/cjs/component/axis/base-axis.js.map +1 -1
  34. package/cjs/component/axis/cartesian/axis.js +4 -4
  35. package/cjs/component/axis/cartesian/axis.js.map +1 -1
  36. package/cjs/component/axis/cartesian/band-axis.d.ts +5 -0
  37. package/cjs/component/axis/cartesian/band-axis.js +27 -5
  38. package/cjs/component/axis/cartesian/band-axis.js.map +1 -1
  39. package/cjs/component/axis/cartesian/interface/spec.d.ts +5 -0
  40. package/cjs/component/axis/cartesian/interface/spec.js.map +1 -1
  41. package/cjs/component/axis/cartesian/log-axis.js +2 -1
  42. package/cjs/component/axis/cartesian/log-axis.js.map +1 -1
  43. package/cjs/component/axis/mixin/linear-axis-mixin.js +1 -1
  44. package/cjs/component/axis/mixin/linear-axis-mixin.js.map +1 -1
  45. package/cjs/component/axis/polar/axis.js +9 -17
  46. package/cjs/component/axis/polar/axis.js.map +1 -1
  47. package/cjs/component/axis/polar/util/common.d.ts +5 -1
  48. package/cjs/component/axis/polar/util/common.js +8 -4
  49. package/cjs/component/axis/polar/util/common.js.map +1 -1
  50. package/cjs/component/base/base-component.d.ts +1 -1
  51. package/cjs/component/base/base-component.js +2 -2
  52. package/cjs/component/base/base-component.js.map +1 -1
  53. package/cjs/component/custom-mark/custom-mark.d.ts +1 -2
  54. package/cjs/component/custom-mark/custom-mark.js.map +1 -1
  55. package/cjs/component/data-zoom/data-filter-base-component.d.ts +2 -2
  56. package/cjs/component/data-zoom/data-filter-base-component.js +5 -4
  57. package/cjs/component/data-zoom/data-filter-base-component.js.map +1 -1
  58. package/cjs/component/label/interface.d.ts +2 -1
  59. package/cjs/component/label/interface.js.map +1 -1
  60. package/cjs/component/label/label.js +1 -1
  61. package/cjs/component/label/label.js.map +1 -1
  62. package/cjs/component/label/total-label.js +14 -1
  63. package/cjs/component/label/total-label.js.map +1 -1
  64. package/cjs/component/label/util.js +3 -3
  65. package/cjs/component/label/util.js.map +1 -1
  66. package/cjs/component/legend/discrete/interface.d.ts +1 -0
  67. package/cjs/component/legend/discrete/interface.js.map +1 -1
  68. package/cjs/component/legend/util.d.ts +1 -1
  69. package/cjs/component/marker/mark-area/mark-area.js +1 -1
  70. package/cjs/component/marker/mark-area/mark-area.js.map +1 -1
  71. package/cjs/component/marker/mark-line/mark-line.js +1 -1
  72. package/cjs/component/marker/mark-line/mark-line.js.map +1 -1
  73. package/cjs/component/marker/mark-point/mark-point.js +5 -2
  74. package/cjs/component/marker/mark-point/mark-point.js.map +1 -1
  75. package/cjs/component/player/utils/transform.js +2 -2
  76. package/cjs/component/player/utils/transform.js.map +1 -1
  77. package/cjs/component/poptip/interface.d.ts +5 -2
  78. package/cjs/component/poptip/interface.js.map +1 -1
  79. package/cjs/component/title/interface/theme.d.ts +2 -1
  80. package/cjs/component/title/interface/theme.js.map +1 -1
  81. package/cjs/component/tooltip/interface/common.d.ts +1 -1
  82. package/cjs/component/tooltip/interface/common.js.map +1 -1
  83. package/cjs/component/tooltip/interface/theme.d.ts +3 -2
  84. package/cjs/component/tooltip/interface/theme.js.map +1 -1
  85. package/cjs/component/tooltip/processor/base.js +2 -2
  86. package/cjs/component/tooltip/processor/base.js.map +1 -1
  87. package/cjs/component/tooltip/tooltip.js +6 -6
  88. package/cjs/component/tooltip/tooltip.js.map +1 -1
  89. package/cjs/constant/index.d.ts +1 -0
  90. package/cjs/constant/index.js +5 -4
  91. package/cjs/constant/index.js.map +1 -1
  92. package/cjs/core/index.d.ts +1 -1
  93. package/cjs/core/index.js +1 -1
  94. package/cjs/core/index.js.map +1 -1
  95. package/cjs/core/vchart.js +4 -3
  96. package/cjs/core/vchart.js.map +1 -1
  97. package/cjs/data/transforms/dimension-statistics.d.ts +2 -0
  98. package/cjs/data/transforms/dimension-statistics.js +1 -1
  99. package/cjs/data/transforms/dimension-statistics.js.map +1 -1
  100. package/cjs/data/transforms/funnel.d.ts +1 -1
  101. package/cjs/data/transforms/pie.js +4 -4
  102. package/cjs/data/transforms/pie.js.map +1 -1
  103. package/cjs/data/transforms/waterfall.js +104 -29
  104. package/cjs/data/transforms/waterfall.js.map +1 -1
  105. package/cjs/event/event-dispatcher.js +1 -1
  106. package/cjs/event/event-dispatcher.js.map +1 -1
  107. package/cjs/event/events/dimension/util/common.js +45 -48
  108. package/cjs/event/events/dimension/util/common.js.map +1 -1
  109. package/cjs/event/interface.d.ts +2 -1
  110. package/cjs/event/interface.js.map +1 -1
  111. package/cjs/interaction/dimension-trigger.js +3 -1
  112. package/cjs/interaction/dimension-trigger.js.map +1 -1
  113. package/cjs/interaction/interaction.d.ts +5 -0
  114. package/cjs/interaction/interaction.js +17 -1
  115. package/cjs/interaction/interaction.js.map +1 -1
  116. package/cjs/interaction/interface.d.ts +4 -1
  117. package/cjs/interaction/interface.js.map +1 -1
  118. package/cjs/plugin/components/tooltip-handler/base.js +15 -15
  119. package/cjs/plugin/components/tooltip-handler/base.js.map +1 -1
  120. package/cjs/plugin/components/tooltip-handler/dom/dom-tooltip-handler.js +3 -4
  121. package/cjs/plugin/components/tooltip-handler/dom/dom-tooltip-handler.js.map +1 -1
  122. package/cjs/plugin/components/tooltip-handler/utils/attribute.js +2 -2
  123. package/cjs/plugin/components/tooltip-handler/utils/attribute.js.map +1 -1
  124. package/cjs/plugin/components/tooltip-handler/utils/compose.js.map +1 -1
  125. package/cjs/plugin/components/tooltip-handler/utils/get-spec.js +2 -2
  126. package/cjs/plugin/components/tooltip-handler/utils/get-spec.js.map +1 -1
  127. package/cjs/plugin/components/tooltip-handler/utils/position.d.ts +1 -1
  128. package/cjs/plugin/components/tooltip-handler/utils/position.js.map +1 -1
  129. package/cjs/series/area/interface.d.ts +2 -1
  130. package/cjs/series/area/interface.js.map +1 -1
  131. package/cjs/series/bar/bar-3d.js.map +1 -1
  132. package/cjs/series/bar/bar.d.ts +11 -1
  133. package/cjs/series/bar/bar.js +102 -72
  134. package/cjs/series/bar/bar.js.map +1 -1
  135. package/cjs/series/bar/interface.d.ts +4 -3
  136. package/cjs/series/bar/interface.js.map +1 -1
  137. package/cjs/series/base/base-series-transformer.d.ts +4 -0
  138. package/cjs/series/base/base-series-transformer.js +33 -10
  139. package/cjs/series/base/base-series-transformer.js.map +1 -1
  140. package/cjs/series/base/base-series.d.ts +4 -1
  141. package/cjs/series/base/base-series.js +10 -2
  142. package/cjs/series/base/base-series.js.map +1 -1
  143. package/cjs/series/cartesian/cartesian.d.ts +1 -2
  144. package/cjs/series/cartesian/cartesian.js +28 -24
  145. package/cjs/series/cartesian/cartesian.js.map +1 -1
  146. package/cjs/series/correlation/interface.d.ts +3 -3
  147. package/cjs/series/correlation/interface.js.map +1 -1
  148. package/cjs/series/funnel/interface.d.ts +2 -3
  149. package/cjs/series/funnel/interface.js.map +1 -1
  150. package/cjs/series/interface/common.d.ts +2 -0
  151. package/cjs/series/interface/common.js.map +1 -1
  152. package/cjs/series/line/interface.d.ts +2 -1
  153. package/cjs/series/line/interface.js.map +1 -1
  154. package/cjs/series/mixin/line-mixin.js +1 -1
  155. package/cjs/series/mixin/line-mixin.js.map +1 -1
  156. package/cjs/series/pie/3d/pie-3d.d.ts +1 -1
  157. package/cjs/series/pie/3d/pie-3d.js +2 -4
  158. package/cjs/series/pie/3d/pie-3d.js.map +1 -1
  159. package/cjs/series/pie/interface.d.ts +2 -2
  160. package/cjs/series/pie/interface.js.map +1 -1
  161. package/cjs/series/pie/pie-transformer.js +5 -4
  162. package/cjs/series/pie/pie-transformer.js.map +1 -1
  163. package/cjs/series/pie/pie.js +1 -4
  164. package/cjs/series/pie/pie.js.map +1 -1
  165. package/cjs/series/radar/interface.d.ts +2 -1
  166. package/cjs/series/radar/interface.js.map +1 -1
  167. package/cjs/series/rose/interface.d.ts +2 -1
  168. package/cjs/series/rose/interface.js.map +1 -1
  169. package/cjs/series/rose/rose.js +1 -5
  170. package/cjs/series/rose/rose.js.map +1 -1
  171. package/cjs/series/sankey/interface.d.ts +2 -2
  172. package/cjs/series/sankey/interface.js.map +1 -1
  173. package/cjs/series/scatter/interface.d.ts +2 -1
  174. package/cjs/series/scatter/interface.js.map +1 -1
  175. package/cjs/series/treemap/treemap.d.ts +2 -0
  176. package/cjs/series/treemap/treemap.js +35 -45
  177. package/cjs/series/treemap/treemap.js.map +1 -1
  178. package/cjs/series/util/utils.js +1 -1
  179. package/cjs/series/util/utils.js.map +1 -1
  180. package/cjs/series/word-cloud/base.js.map +1 -1
  181. package/cjs/series/word-cloud/config.js +1 -1
  182. package/cjs/series/word-cloud/config.js.map +1 -1
  183. package/cjs/theme/builtin/common/component/axis/cartesian-axis.js +9 -7
  184. package/cjs/theme/builtin/common/component/axis/cartesian-axis.js.map +1 -1
  185. package/cjs/theme/builtin/common/component/axis/common-axis.js +15 -10
  186. package/cjs/theme/builtin/common/component/axis/common-axis.js.map +1 -1
  187. package/cjs/theme/builtin/common/component/crosshair.js +121 -6
  188. package/cjs/theme/builtin/common/component/crosshair.js.map +1 -1
  189. package/cjs/theme/builtin/common/component/data-zoom.js +17 -5
  190. package/cjs/theme/builtin/common/component/data-zoom.js.map +1 -1
  191. package/cjs/theme/builtin/common/component/indicator.js +9 -7
  192. package/cjs/theme/builtin/common/component/indicator.js.map +1 -1
  193. package/cjs/theme/builtin/common/component/legend/continuous.js +33 -13
  194. package/cjs/theme/builtin/common/component/legend/continuous.js.map +1 -1
  195. package/cjs/theme/builtin/common/component/legend/discrete-legend.js +17 -9
  196. package/cjs/theme/builtin/common/component/legend/discrete-legend.js.map +1 -1
  197. package/cjs/theme/builtin/common/component/map-label.js +9 -7
  198. package/cjs/theme/builtin/common/component/map-label.js.map +1 -1
  199. package/cjs/theme/builtin/common/component/mark-area.js +5 -6
  200. package/cjs/theme/builtin/common/component/mark-area.js.map +1 -1
  201. package/cjs/theme/builtin/common/component/mark-line.js +5 -6
  202. package/cjs/theme/builtin/common/component/mark-line.js.map +1 -1
  203. package/cjs/theme/builtin/common/component/poptip.js +9 -7
  204. package/cjs/theme/builtin/common/component/poptip.js.map +1 -1
  205. package/cjs/theme/builtin/common/component/title.js +17 -9
  206. package/cjs/theme/builtin/common/component/title.js.map +1 -1
  207. package/cjs/theme/builtin/common/component/tooltip.js +25 -11
  208. package/cjs/theme/builtin/common/component/tooltip.js.map +1 -1
  209. package/cjs/theme/builtin/common/component/total-label.js +5 -6
  210. package/cjs/theme/builtin/common/component/total-label.js.map +1 -1
  211. package/cjs/theme/builtin/common/mark.js +10 -8
  212. package/cjs/theme/builtin/common/mark.js.map +1 -1
  213. package/cjs/theme/builtin/common/series/circle-packing.js +9 -7
  214. package/cjs/theme/builtin/common/series/circle-packing.js.map +1 -1
  215. package/cjs/theme/builtin/common/series/dot.js +17 -9
  216. package/cjs/theme/builtin/common/series/dot.js.map +1 -1
  217. package/cjs/theme/builtin/common/series/funnel.js +9 -7
  218. package/cjs/theme/builtin/common/series/funnel.js.map +1 -1
  219. package/cjs/theme/builtin/common/series/funnel3d.js +9 -7
  220. package/cjs/theme/builtin/common/series/funnel3d.js.map +1 -1
  221. package/cjs/theme/builtin/common/series/map.js +9 -7
  222. package/cjs/theme/builtin/common/series/map.js.map +1 -1
  223. package/cjs/theme/builtin/common/series/sunburst.js +9 -3
  224. package/cjs/theme/builtin/common/series/sunburst.js.map +1 -1
  225. package/cjs/theme/builtin/common/series/treemap.js +18 -10
  226. package/cjs/theme/builtin/common/series/treemap.js.map +1 -1
  227. package/cjs/theme/builtin/common/series/waterfall.js +5 -6
  228. package/cjs/theme/builtin/common/series/waterfall.js.map +1 -1
  229. package/cjs/theme/builtin/index.js +3 -3
  230. package/cjs/theme/builtin/index.js.map +1 -1
  231. package/cjs/theme/builtin/light/index.js +6 -2
  232. package/cjs/theme/builtin/light/index.js.map +1 -1
  233. package/cjs/theme/interface.d.ts +3 -19
  234. package/cjs/theme/interface.js.map +1 -1
  235. package/cjs/theme/theme-manager.d.ts +1 -1
  236. package/cjs/theme/theme-manager.js +2 -2
  237. package/cjs/theme/theme-manager.js.map +1 -1
  238. package/cjs/theme/token/builtin/default.d.ts +2 -0
  239. package/cjs/theme/{builtin/common/constants.js → token/builtin/default.js} +3 -5
  240. package/cjs/theme/token/builtin/default.js.map +1 -0
  241. package/cjs/theme/token/builtin/index.d.ts +2 -0
  242. package/cjs/theme/token/builtin/index.js +21 -0
  243. package/cjs/theme/token/builtin/index.js.map +1 -0
  244. package/cjs/theme/token/builtin/interface.d.ts +17 -0
  245. package/cjs/theme/token/builtin/interface.js +6 -0
  246. package/cjs/theme/token/builtin/interface.js.map +1 -0
  247. package/cjs/theme/token/index.d.ts +3 -0
  248. package/cjs/theme/token/index.js +22 -0
  249. package/cjs/theme/token/index.js.map +1 -0
  250. package/cjs/theme/token/interface.d.ts +6 -0
  251. package/cjs/theme/token/interface.js +6 -0
  252. package/cjs/theme/token/interface.js.map +1 -0
  253. package/cjs/theme/token/util.d.ts +3 -0
  254. package/cjs/theme/token/util.js +15 -0
  255. package/cjs/theme/token/util.js.map +1 -0
  256. package/cjs/typings/spec/common.d.ts +24 -24
  257. package/cjs/typings/spec/common.js.map +1 -1
  258. package/cjs/typings/tooltip/position.d.ts +2 -19
  259. package/cjs/typings/tooltip/position.js +1 -12
  260. package/cjs/typings/tooltip/position.js.map +1 -1
  261. package/cjs/typings/visual.d.ts +3 -2
  262. package/cjs/typings/visual.js.map +1 -1
  263. package/cjs/util/data.d.ts +2 -1
  264. package/cjs/util/data.js +12 -7
  265. package/cjs/util/data.js.map +1 -1
  266. package/cjs/util/math.d.ts +1 -0
  267. package/cjs/util/math.js +18 -2
  268. package/cjs/util/math.js.map +1 -1
  269. package/cjs/util/spec/common.d.ts +0 -2
  270. package/cjs/util/spec/common.js +3 -8
  271. package/cjs/util/spec/common.js.map +1 -1
  272. package/cjs/util/spec/index.d.ts +2 -2
  273. package/cjs/util/spec/index.js +1 -1
  274. package/cjs/util/spec/index.js.map +1 -1
  275. package/cjs/util/text.js +3 -3
  276. package/cjs/util/text.js.map +1 -1
  277. package/cjs/util/theme/common.d.ts +2 -0
  278. package/cjs/util/theme/common.js +15 -0
  279. package/cjs/util/theme/common.js.map +1 -0
  280. package/cjs/util/theme/index.d.ts +3 -0
  281. package/cjs/util/theme/index.js +22 -0
  282. package/cjs/util/theme/index.js.map +1 -0
  283. package/cjs/util/{spec → theme}/merge-theme.js +3 -1
  284. package/cjs/util/theme/merge-theme.js.map +1 -0
  285. package/cjs/util/{spec → theme}/preprocess.d.ts +2 -1
  286. package/cjs/util/{spec → theme}/preprocess.js +5 -3
  287. package/cjs/util/theme/preprocess.js.map +1 -0
  288. package/esm/chart/bar/bar-transformer.d.ts +1 -0
  289. package/esm/chart/bar/bar-transformer.js +19 -1
  290. package/esm/chart/bar/bar-transformer.js.map +1 -1
  291. package/esm/chart/bar/interface.d.ts +3 -0
  292. package/esm/chart/bar/interface.js.map +1 -1
  293. package/esm/chart/base/base-chart-transformer.js +3 -3
  294. package/esm/chart/base/base-chart-transformer.js.map +1 -1
  295. package/esm/chart/base/base-chart.d.ts +1 -1
  296. package/esm/chart/base/base-chart.js +4 -2
  297. package/esm/chart/base/base-chart.js.map +1 -1
  298. package/esm/chart/base/util.d.ts +1 -1
  299. package/esm/chart/base/util.js +21 -9
  300. package/esm/chart/base/util.js.map +1 -1
  301. package/esm/chart/cartesian/cartesian-transformer.d.ts +1 -0
  302. package/esm/chart/cartesian/cartesian-transformer.js +10 -7
  303. package/esm/chart/cartesian/cartesian-transformer.js.map +1 -1
  304. package/esm/chart/polar/polar-transformer.js.map +1 -1
  305. package/esm/chart/stack.js +2 -1
  306. package/esm/compile/compiler.js +5 -1
  307. package/esm/compile/compiler.js.map +1 -1
  308. package/esm/compile/grammar-item.js +1 -2
  309. package/esm/compile/mark/compilable-mark.d.ts +4 -1
  310. package/esm/compile/mark/compilable-mark.js +9 -1
  311. package/esm/compile/mark/compilable-mark.js.map +1 -1
  312. package/esm/compile/mark/interface.d.ts +4 -1
  313. package/esm/compile/mark/interface.js.map +1 -1
  314. package/esm/component/axis/base-axis.d.ts +1 -53
  315. package/esm/component/axis/base-axis.js +74 -82
  316. package/esm/component/axis/base-axis.js.map +1 -1
  317. package/esm/component/axis/cartesian/axis.js +1 -1
  318. package/esm/component/axis/cartesian/axis.js.map +1 -1
  319. package/esm/component/axis/cartesian/band-axis.d.ts +5 -0
  320. package/esm/component/axis/cartesian/band-axis.js +27 -6
  321. package/esm/component/axis/cartesian/band-axis.js.map +1 -1
  322. package/esm/component/axis/cartesian/interface/spec.d.ts +5 -0
  323. package/esm/component/axis/cartesian/interface/spec.js.map +1 -1
  324. package/esm/component/axis/cartesian/log-axis.js +2 -1
  325. package/esm/component/axis/cartesian/log-axis.js.map +1 -1
  326. package/esm/component/axis/mixin/linear-axis-mixin.js +1 -1
  327. package/esm/component/axis/mixin/linear-axis-mixin.js.map +1 -1
  328. package/esm/component/axis/polar/axis.js +9 -18
  329. package/esm/component/axis/polar/axis.js.map +1 -1
  330. package/esm/component/axis/polar/util/common.d.ts +5 -1
  331. package/esm/component/axis/polar/util/common.js +12 -4
  332. package/esm/component/axis/polar/util/common.js.map +1 -1
  333. package/esm/component/base/base-component.d.ts +1 -1
  334. package/esm/component/base/base-component.js +3 -1
  335. package/esm/component/base/base-component.js.map +1 -1
  336. package/esm/component/custom-mark/custom-mark.d.ts +1 -2
  337. package/esm/component/custom-mark/custom-mark.js.map +1 -1
  338. package/esm/component/data-zoom/data-filter-base-component.d.ts +2 -2
  339. package/esm/component/data-zoom/data-filter-base-component.js +6 -3
  340. package/esm/component/data-zoom/data-filter-base-component.js.map +1 -1
  341. package/esm/component/label/interface.d.ts +2 -1
  342. package/esm/component/label/interface.js.map +1 -1
  343. package/esm/component/label/label.js +1 -1
  344. package/esm/component/label/label.js.map +1 -1
  345. package/esm/component/label/total-label.js +14 -1
  346. package/esm/component/label/total-label.js.map +1 -1
  347. package/esm/component/label/util.js +1 -6
  348. package/esm/component/label/util.js.map +1 -1
  349. package/esm/component/legend/discrete/interface.d.ts +1 -0
  350. package/esm/component/legend/discrete/interface.js.map +1 -1
  351. package/esm/component/legend/util.d.ts +1 -1
  352. package/esm/component/marker/mark-area/mark-area.js +1 -1
  353. package/esm/component/marker/mark-area/mark-area.js.map +1 -1
  354. package/esm/component/marker/mark-line/mark-line.js +1 -1
  355. package/esm/component/marker/mark-line/mark-line.js.map +1 -1
  356. package/esm/component/marker/mark-point/mark-point.js +5 -2
  357. package/esm/component/marker/mark-point/mark-point.js.map +1 -1
  358. package/esm/component/player/utils/transform.js +2 -2
  359. package/esm/component/player/utils/transform.js.map +1 -1
  360. package/esm/component/poptip/interface.d.ts +5 -2
  361. package/esm/component/poptip/interface.js.map +1 -1
  362. package/esm/component/title/interface/theme.d.ts +2 -1
  363. package/esm/component/title/interface/theme.js.map +1 -1
  364. package/esm/component/tooltip/interface/common.d.ts +1 -1
  365. package/esm/component/tooltip/interface/common.js.map +1 -1
  366. package/esm/component/tooltip/interface/theme.d.ts +3 -2
  367. package/esm/component/tooltip/interface/theme.js.map +1 -1
  368. package/esm/component/tooltip/processor/base.js +1 -3
  369. package/esm/component/tooltip/processor/base.js.map +1 -1
  370. package/esm/component/tooltip/tooltip.js +2 -4
  371. package/esm/component/tooltip/tooltip.js.map +1 -1
  372. package/esm/constant/index.d.ts +1 -0
  373. package/esm/constant/index.js +2 -0
  374. package/esm/constant/index.js.map +1 -1
  375. package/esm/core/index.d.ts +1 -1
  376. package/esm/core/index.js +1 -1
  377. package/esm/core/index.js.map +1 -1
  378. package/esm/core/vchart.js +4 -3
  379. package/esm/core/vchart.js.map +1 -1
  380. package/esm/data/transforms/dimension-statistics.d.ts +2 -0
  381. package/esm/data/transforms/dimension-statistics.js +1 -1
  382. package/esm/data/transforms/dimension-statistics.js.map +1 -1
  383. package/esm/data/transforms/funnel.d.ts +1 -1
  384. package/esm/data/transforms/pie.js +5 -5
  385. package/esm/data/transforms/pie.js.map +1 -1
  386. package/esm/data/transforms/waterfall.js +104 -28
  387. package/esm/data/transforms/waterfall.js.map +1 -1
  388. package/esm/event/event-dispatcher.js +2 -2
  389. package/esm/event/event-dispatcher.js.map +1 -1
  390. package/esm/event/events/dimension/util/common.js +44 -47
  391. package/esm/event/events/dimension/util/common.js.map +1 -1
  392. package/esm/event/interface.d.ts +2 -1
  393. package/esm/event/interface.js.map +1 -1
  394. package/esm/interaction/dimension-trigger.js +3 -1
  395. package/esm/interaction/dimension-trigger.js.map +1 -1
  396. package/esm/interaction/interaction.d.ts +5 -0
  397. package/esm/interaction/interaction.js +17 -1
  398. package/esm/interaction/interaction.js.map +1 -1
  399. package/esm/interaction/interface.d.ts +4 -1
  400. package/esm/interaction/interface.js.map +1 -1
  401. package/esm/plugin/components/tooltip-handler/base.js +14 -16
  402. package/esm/plugin/components/tooltip-handler/base.js.map +1 -1
  403. package/esm/plugin/components/tooltip-handler/dom/dom-tooltip-handler.js +3 -4
  404. package/esm/plugin/components/tooltip-handler/dom/dom-tooltip-handler.js.map +1 -1
  405. package/esm/plugin/components/tooltip-handler/utils/attribute.js +3 -3
  406. package/esm/plugin/components/tooltip-handler/utils/attribute.js.map +1 -1
  407. package/esm/plugin/components/tooltip-handler/utils/compose.js.map +1 -1
  408. package/esm/plugin/components/tooltip-handler/utils/get-spec.js +2 -2
  409. package/esm/plugin/components/tooltip-handler/utils/get-spec.js.map +1 -1
  410. package/esm/plugin/components/tooltip-handler/utils/position.d.ts +1 -1
  411. package/esm/plugin/components/tooltip-handler/utils/position.js.map +1 -1
  412. package/esm/series/area/interface.d.ts +2 -1
  413. package/esm/series/area/interface.js.map +1 -1
  414. package/esm/series/bar/bar-3d.js.map +1 -1
  415. package/esm/series/bar/bar.d.ts +11 -1
  416. package/esm/series/bar/bar.js +99 -66
  417. package/esm/series/bar/bar.js.map +1 -1
  418. package/esm/series/bar/interface.d.ts +4 -3
  419. package/esm/series/bar/interface.js.map +1 -1
  420. package/esm/series/base/base-series-transformer.d.ts +4 -0
  421. package/esm/series/base/base-series-transformer.js +35 -10
  422. package/esm/series/base/base-series-transformer.js.map +1 -1
  423. package/esm/series/base/base-series.d.ts +4 -1
  424. package/esm/series/base/base-series.js +10 -2
  425. package/esm/series/base/base-series.js.map +1 -1
  426. package/esm/series/cartesian/cartesian.d.ts +1 -2
  427. package/esm/series/cartesian/cartesian.js +28 -25
  428. package/esm/series/cartesian/cartesian.js.map +1 -1
  429. package/esm/series/correlation/interface.d.ts +3 -3
  430. package/esm/series/correlation/interface.js.map +1 -1
  431. package/esm/series/funnel/interface.d.ts +2 -3
  432. package/esm/series/funnel/interface.js.map +1 -1
  433. package/esm/series/interface/common.d.ts +2 -0
  434. package/esm/series/interface/common.js.map +1 -1
  435. package/esm/series/line/interface.d.ts +2 -1
  436. package/esm/series/line/interface.js.map +1 -1
  437. package/esm/series/mixin/line-mixin.js +1 -1
  438. package/esm/series/mixin/line-mixin.js.map +1 -1
  439. package/esm/series/pie/3d/pie-3d.d.ts +1 -1
  440. package/esm/series/pie/3d/pie-3d.js +2 -3
  441. package/esm/series/pie/3d/pie-3d.js.map +1 -1
  442. package/esm/series/pie/interface.d.ts +2 -2
  443. package/esm/series/pie/interface.js.map +1 -1
  444. package/esm/series/pie/pie-transformer.js +5 -1
  445. package/esm/series/pie/pie-transformer.js.map +1 -1
  446. package/esm/series/pie/pie.js +1 -4
  447. package/esm/series/pie/pie.js.map +1 -1
  448. package/esm/series/radar/interface.d.ts +2 -1
  449. package/esm/series/radar/interface.js.map +1 -1
  450. package/esm/series/rose/interface.d.ts +2 -1
  451. package/esm/series/rose/interface.js.map +1 -1
  452. package/esm/series/rose/rose.js +1 -5
  453. package/esm/series/rose/rose.js.map +1 -1
  454. package/esm/series/sankey/interface.d.ts +2 -2
  455. package/esm/series/sankey/interface.js.map +1 -1
  456. package/esm/series/scatter/interface.d.ts +2 -1
  457. package/esm/series/scatter/interface.js.map +1 -1
  458. package/esm/series/treemap/treemap.d.ts +2 -0
  459. package/esm/series/treemap/treemap.js +35 -46
  460. package/esm/series/treemap/treemap.js.map +1 -1
  461. package/esm/series/util/utils.js +1 -1
  462. package/esm/series/util/utils.js.map +1 -1
  463. package/esm/series/word-cloud/base.js.map +1 -1
  464. package/esm/series/word-cloud/config.js +1 -1
  465. package/esm/series/word-cloud/config.js.map +1 -1
  466. package/esm/theme/builtin/common/component/axis/cartesian-axis.js +8 -4
  467. package/esm/theme/builtin/common/component/axis/cartesian-axis.js.map +1 -1
  468. package/esm/theme/builtin/common/component/axis/common-axis.js +14 -7
  469. package/esm/theme/builtin/common/component/axis/common-axis.js.map +1 -1
  470. package/esm/theme/builtin/common/component/crosshair.js +120 -7
  471. package/esm/theme/builtin/common/component/crosshair.js.map +1 -1
  472. package/esm/theme/builtin/common/component/data-zoom.js +16 -6
  473. package/esm/theme/builtin/common/component/data-zoom.js.map +1 -1
  474. package/esm/theme/builtin/common/component/indicator.js +8 -4
  475. package/esm/theme/builtin/common/component/indicator.js.map +1 -1
  476. package/esm/theme/builtin/common/component/legend/continuous.js +32 -10
  477. package/esm/theme/builtin/common/component/legend/continuous.js.map +1 -1
  478. package/esm/theme/builtin/common/component/legend/discrete-legend.js +16 -6
  479. package/esm/theme/builtin/common/component/legend/discrete-legend.js.map +1 -1
  480. package/esm/theme/builtin/common/component/map-label.js +8 -4
  481. package/esm/theme/builtin/common/component/map-label.js.map +1 -1
  482. package/esm/theme/builtin/common/component/mark-area.js +4 -3
  483. package/esm/theme/builtin/common/component/mark-area.js.map +1 -1
  484. package/esm/theme/builtin/common/component/mark-line.js +4 -3
  485. package/esm/theme/builtin/common/component/mark-line.js.map +1 -1
  486. package/esm/theme/builtin/common/component/poptip.js +8 -4
  487. package/esm/theme/builtin/common/component/poptip.js.map +1 -1
  488. package/esm/theme/builtin/common/component/title.js +16 -6
  489. package/esm/theme/builtin/common/component/title.js.map +1 -1
  490. package/esm/theme/builtin/common/component/tooltip.js +24 -8
  491. package/esm/theme/builtin/common/component/tooltip.js.map +1 -1
  492. package/esm/theme/builtin/common/component/total-label.js +4 -3
  493. package/esm/theme/builtin/common/component/total-label.js.map +1 -1
  494. package/esm/theme/builtin/common/mark.js +9 -5
  495. package/esm/theme/builtin/common/mark.js.map +1 -1
  496. package/esm/theme/builtin/common/series/circle-packing.js +8 -4
  497. package/esm/theme/builtin/common/series/circle-packing.js.map +1 -1
  498. package/esm/theme/builtin/common/series/dot.js +16 -6
  499. package/esm/theme/builtin/common/series/dot.js.map +1 -1
  500. package/esm/theme/builtin/common/series/funnel.js +8 -4
  501. package/esm/theme/builtin/common/series/funnel.js.map +1 -1
  502. package/esm/theme/builtin/common/series/funnel3d.js +8 -4
  503. package/esm/theme/builtin/common/series/funnel3d.js.map +1 -1
  504. package/esm/theme/builtin/common/series/map.js +8 -4
  505. package/esm/theme/builtin/common/series/map.js.map +1 -1
  506. package/esm/theme/builtin/common/series/sunburst.js +8 -4
  507. package/esm/theme/builtin/common/series/sunburst.js.map +1 -1
  508. package/esm/theme/builtin/common/series/treemap.js +17 -7
  509. package/esm/theme/builtin/common/series/treemap.js.map +1 -1
  510. package/esm/theme/builtin/common/series/waterfall.js +4 -3
  511. package/esm/theme/builtin/common/series/waterfall.js.map +1 -1
  512. package/esm/theme/builtin/index.js +4 -4
  513. package/esm/theme/builtin/index.js.map +1 -1
  514. package/esm/theme/builtin/light/index.js +7 -3
  515. package/esm/theme/builtin/light/index.js.map +1 -1
  516. package/esm/theme/interface.d.ts +3 -19
  517. package/esm/theme/interface.js.map +1 -1
  518. package/esm/theme/theme-manager.d.ts +1 -1
  519. package/esm/theme/theme-manager.js +2 -2
  520. package/esm/theme/theme-manager.js.map +1 -1
  521. package/esm/theme/token/builtin/default.d.ts +2 -0
  522. package/esm/theme/{builtin/common/constants.js → token/builtin/default.js} +3 -5
  523. package/esm/theme/token/builtin/default.js.map +1 -0
  524. package/esm/theme/token/builtin/index.d.ts +2 -0
  525. package/esm/theme/token/builtin/index.js +4 -0
  526. package/esm/theme/token/builtin/index.js.map +1 -0
  527. package/esm/theme/token/builtin/interface.d.ts +17 -0
  528. package/esm/theme/token/builtin/interface.js +2 -0
  529. package/esm/theme/token/builtin/interface.js.map +1 -0
  530. package/esm/theme/token/index.d.ts +3 -0
  531. package/esm/theme/token/index.js +6 -0
  532. package/esm/theme/token/index.js.map +1 -0
  533. package/esm/theme/token/interface.d.ts +6 -0
  534. package/esm/theme/token/interface.js +2 -0
  535. package/esm/theme/token/interface.js.map +1 -0
  536. package/esm/theme/token/util.d.ts +3 -0
  537. package/esm/theme/token/util.js +8 -0
  538. package/esm/theme/token/util.js.map +1 -0
  539. package/esm/typings/spec/common.d.ts +24 -24
  540. package/esm/typings/spec/common.js.map +1 -1
  541. package/esm/typings/tooltip/position.d.ts +2 -19
  542. package/esm/typings/tooltip/position.js +1 -15
  543. package/esm/typings/tooltip/position.js.map +1 -1
  544. package/esm/typings/visual.d.ts +3 -2
  545. package/esm/typings/visual.js.map +1 -1
  546. package/esm/util/data.d.ts +2 -1
  547. package/esm/util/data.js +12 -8
  548. package/esm/util/data.js.map +1 -1
  549. package/esm/util/math.d.ts +1 -0
  550. package/esm/util/math.js +16 -0
  551. package/esm/util/math.js.map +1 -1
  552. package/esm/util/spec/common.d.ts +0 -2
  553. package/esm/util/spec/common.js +0 -8
  554. package/esm/util/spec/common.js.map +1 -1
  555. package/esm/util/spec/index.d.ts +2 -2
  556. package/esm/util/spec/index.js +2 -2
  557. package/esm/util/spec/index.js.map +1 -1
  558. package/esm/util/text.js +4 -4
  559. package/esm/util/text.js.map +1 -1
  560. package/esm/util/theme/common.d.ts +2 -0
  561. package/esm/util/theme/common.js +8 -0
  562. package/esm/util/theme/common.js.map +1 -0
  563. package/esm/util/theme/index.d.ts +3 -0
  564. package/esm/util/theme/index.js +6 -0
  565. package/esm/util/theme/index.js.map +1 -0
  566. package/esm/util/{spec → theme}/merge-theme.js +3 -1
  567. package/esm/util/theme/merge-theme.js.map +1 -0
  568. package/esm/util/{spec → theme}/preprocess.d.ts +2 -1
  569. package/esm/util/theme/preprocess.js +18 -0
  570. package/esm/util/theme/preprocess.js.map +1 -0
  571. package/package.json +16 -16
  572. package/cjs/data/transforms/treemap.d.ts +0 -11
  573. package/cjs/data/transforms/treemap.js +0 -15
  574. package/cjs/data/transforms/treemap.js.map +0 -1
  575. package/cjs/theme/builtin/common/constants.d.ts +0 -2
  576. package/cjs/theme/builtin/common/constants.js.map +0 -1
  577. package/cjs/util/spec/merge-theme.js.map +0 -1
  578. package/cjs/util/spec/preprocess.js.map +0 -1
  579. package/esm/data/transforms/treemap.d.ts +0 -11
  580. package/esm/data/transforms/treemap.js +0 -9
  581. package/esm/data/transforms/treemap.js.map +0 -1
  582. package/esm/theme/builtin/common/constants.d.ts +0 -2
  583. package/esm/theme/builtin/common/constants.js.map +0 -1
  584. package/esm/util/spec/merge-theme.js.map +0 -1
  585. package/esm/util/spec/preprocess.js +0 -15
  586. package/esm/util/spec/preprocess.js.map +0 -1
  587. /package/cjs/util/{spec → theme}/merge-theme.d.ts +0 -0
  588. /package/esm/util/{spec → theme}/merge-theme.d.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/data/transforms/pie.ts"],"names":[],"mappings":"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","file":"pie.js","sourcesContent":["import type { DataView } from '@visactor/vdataset';\nimport type { Datum } from '../../typings';\nimport { couldBeValidNumber } from '../../util/type';\nimport { computeQuadrant } from '../../util/math';\nimport { ARC_TRANSFORM_VALUE } from '../../constant/polar';\n\nexport interface IPieOpt {\n angleField: string;\n\n startAngle: number;\n endAngle: number;\n minAngle: number;\n\n asStartAngle: string;\n asEndAngle: string;\n asMiddleAngle: string;\n asRadian: string;\n asRatio: string;\n asQuadrant: string;\n asK: string;\n}\n\nfunction transformInvalidValue(value: any) {\n if (!couldBeValidNumber(value)) {\n return 0;\n }\n return Number.parseFloat(value);\n}\n\nexport const pie = (originData: Array<DataView>, op: IPieOpt) => {\n const data = originData.map((datum: Datum) => ({ ...datum }));\n if (!data || data.length === 0) {\n return data;\n }\n const {\n angleField,\n startAngle,\n endAngle,\n minAngle,\n asStartAngle,\n asEndAngle,\n asMiddleAngle,\n asRadian,\n asRatio,\n asQuadrant,\n asK\n } = op;\n\n const appendArcInfo = (data: Datum, startAngle: number, angle: number) => {\n data[asStartAngle] = startAngle;\n data[asEndAngle] = startAngle + angle;\n data[asMiddleAngle] = startAngle + angle / 2;\n data[asRadian] = angle;\n data[asQuadrant] = computeQuadrant(startAngle + angle / 2);\n };\n\n let total = 0;\n let max = -Infinity;\n for (let index = 0; index < data.length; index++) {\n const angleFieldValue = transformInvalidValue(data[index][angleField]);\n total += angleFieldValue;\n max = Math.max(angleFieldValue, max);\n\n data[index][ARC_TRANSFORM_VALUE] = angleFieldValue;\n }\n\n const angleRange = endAngle - startAngle;\n let lastAngle = startAngle;\n let restAngle = angleRange;\n let largeThanMinAngleTotal = 0;\n\n data.forEach(d => {\n const angleFieldValue = d[ARC_TRANSFORM_VALUE];\n const ratio = total ? angleFieldValue / total : 0;\n let radian = ratio * angleRange;\n\n if (radian < minAngle) {\n radian = minAngle;\n restAngle -= minAngle;\n } else {\n largeThanMinAngleTotal += angleFieldValue;\n }\n\n const dStartAngle = lastAngle;\n const dEndAngle = lastAngle + radian;\n\n d[asRatio] = ratio;\n d[asK] = max ? angleFieldValue / max : 0;\n appendArcInfo(d, dStartAngle, radian);\n\n lastAngle = dEndAngle;\n });\n\n if (restAngle < angleRange) {\n if (restAngle <= 1e-3) {\n const angle = angleRange / data.length;\n data.forEach((d, index) => {\n appendArcInfo(d, startAngle + index * angle, angle);\n });\n } else {\n const unitRadian = restAngle / largeThanMinAngleTotal;\n lastAngle = startAngle;\n data.forEach(d => {\n const angle = d[asRadian] === minAngle ? minAngle : d[ARC_TRANSFORM_VALUE] * unitRadian;\n appendArcInfo(d, lastAngle, angle);\n\n lastAngle += angle;\n });\n }\n }\n\n if (total !== 0) {\n // 数据都为 0 时,起始角和结束角相同,不应该强制赋值\n // 防止一个扇区的角度会因为浮点数精度问题和传入的 endAngle 不相等\n data[data.length - 1][asEndAngle] = endAngle;\n }\n return data;\n};\n"]}
1
+ {"version":3,"sources":["../src/data/transforms/pie.ts"],"names":[],"mappings":";;;AAEA,0CAAqD;AACrD,0CAAmE;AACnE,gDAA2D;AAkB3D,SAAS,qBAAqB,CAAC,KAAU;IACvC,IAAI,CAAC,IAAA,yBAAkB,EAAC,KAAK,CAAC,EAAE;QAC9B,OAAO,CAAC,CAAC;KACV;IACD,OAAO,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAClC,CAAC;AAEM,MAAM,GAAG,GAAG,CAAC,UAA2B,EAAE,EAAW,EAAE,EAAE;IAC9D,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,KAAY,EAAE,EAAE,CAAC,mBAAM,KAAK,EAAG,CAAC,CAAC;IAC9D,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;QAC9B,OAAO,IAAI,CAAC;KACb;IACD,MAAM,EACJ,UAAU,EACV,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,UAAU,EACV,aAAa,EACb,QAAQ,EACR,OAAO,EACP,UAAU,EACV,GAAG,EACJ,GAAG,EAAE,CAAC;IAEP,MAAM,aAAa,GAAG,CAAC,IAAW,EAAE,UAAkB,EAAE,KAAa,EAAE,EAAE;QACvE,IAAI,CAAC,YAAY,CAAC,GAAG,UAAU,CAAC;QAChC,IAAI,CAAC,UAAU,CAAC,GAAG,UAAU,GAAG,KAAK,CAAC;QACtC,IAAI,CAAC,aAAa,CAAC,GAAG,UAAU,GAAG,KAAK,GAAG,CAAC,CAAC;QAC7C,IAAI,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,UAAU,CAAC,GAAG,IAAA,sBAAe,EAAC,UAAU,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;IAC7D,CAAC,CAAC;IAEF,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC;IACpB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;QAChD,MAAM,eAAe,GAAG,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;QACvE,KAAK,IAAI,eAAe,CAAC;QACzB,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;QAErC,IAAI,CAAC,KAAK,CAAC,CAAC,2BAAmB,CAAC,GAAG,eAAe,CAAC;KACpD;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACvD,MAAM,UAAU,GAAG,QAAQ,GAAG,UAAU,CAAC;IACzC,IAAI,SAAS,GAAG,UAAU,CAAC;IAC3B,IAAI,SAAS,GAAG,UAAU,CAAC;IAC3B,IAAI,sBAAsB,GAAG,CAAC,CAAC;IAE/B,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACpB,MAAM,eAAe,GAAG,CAAC,CAAC,2BAAmB,CAAC,CAAC;QAC/C,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,eAAe,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAClD,IAAI,MAAM,GAAG,KAAK,GAAG,UAAU,CAAC;QAEhC,IAAI,MAAM,GAAG,QAAQ,EAAE;YACrB,MAAM,GAAG,QAAQ,CAAC;YAClB,SAAS,IAAI,QAAQ,CAAC;SACvB;aAAM;YACL,sBAAsB,IAAI,eAAe,CAAC;SAC3C;QAED,MAAM,WAAW,GAAG,SAAS,CAAC;QAC9B,MAAM,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;QAErC,CAAC,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;QACnB,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,eAAe,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACzC,CAAC,CAAC,SAAS,GAAG,IAAA,sBAAe,EAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QAC5C,aAAa,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;QAEtC,SAAS,GAAG,SAAS,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,IAAI,SAAS,GAAG,UAAU,EAAE;QAC1B,IAAI,SAAS,IAAI,IAAI,EAAE;YACrB,MAAM,KAAK,GAAG,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;YACvC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;gBACxB,aAAa,CAAC,CAAC,EAAE,UAAU,GAAG,KAAK,GAAG,KAAK,EAAE,KAAK,CAAC,CAAC;YACtD,CAAC,CAAC,CAAC;SACJ;aAAM;YACL,MAAM,UAAU,GAAG,SAAS,GAAG,sBAAsB,CAAC;YACtD,SAAS,GAAG,UAAU,CAAC;YACvB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBACf,MAAM,KAAK,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,2BAAmB,CAAC,GAAG,UAAU,CAAC;gBACxF,aAAa,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;gBAEnC,SAAS,IAAI,KAAK,CAAC;YACrB,CAAC,CAAC,CAAC;SACJ;KACF;IAED,IAAI,KAAK,KAAK,CAAC,EAAE;QAGf,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC;KAC9C;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AA1FW,QAAA,GAAG,OA0Fd","file":"pie.js","sourcesContent":["import type { DataView } from '@visactor/vdataset';\nimport type { Datum } from '../../typings';\nimport { couldBeValidNumber } from '../../util/type';\nimport { computeQuadrant, getPercentValue } from '../../util/math';\nimport { ARC_TRANSFORM_VALUE } from '../../constant/polar';\n\nexport interface IPieOpt {\n angleField: string;\n\n startAngle: number;\n endAngle: number;\n minAngle: number;\n\n asStartAngle: string;\n asEndAngle: string;\n asMiddleAngle: string;\n asRadian: string;\n asRatio: string;\n asQuadrant: string;\n asK: string;\n}\n\nfunction transformInvalidValue(value: any) {\n if (!couldBeValidNumber(value)) {\n return 0;\n }\n return Number.parseFloat(value);\n}\n\nexport const pie = (originData: Array<DataView>, op: IPieOpt) => {\n const data = originData.map((datum: Datum) => ({ ...datum }));\n if (!data || data.length === 0) {\n return data;\n }\n const {\n angleField,\n startAngle,\n endAngle,\n minAngle,\n asStartAngle,\n asEndAngle,\n asMiddleAngle,\n asRadian,\n asRatio,\n asQuadrant,\n asK\n } = op;\n\n const appendArcInfo = (data: Datum, startAngle: number, angle: number) => {\n data[asStartAngle] = startAngle;\n data[asEndAngle] = startAngle + angle;\n data[asMiddleAngle] = startAngle + angle / 2;\n data[asRadian] = angle;\n data[asQuadrant] = computeQuadrant(startAngle + angle / 2);\n };\n\n let total = 0;\n let max = -Infinity;\n for (let index = 0; index < data.length; index++) {\n const angleFieldValue = transformInvalidValue(data[index][angleField]);\n total += angleFieldValue;\n max = Math.max(angleFieldValue, max);\n\n data[index][ARC_TRANSFORM_VALUE] = angleFieldValue;\n }\n\n const valueList = data.map(d => Number(d[angleField]));\n const angleRange = endAngle - startAngle;\n let lastAngle = startAngle;\n let restAngle = angleRange;\n let largeThanMinAngleTotal = 0;\n\n data.forEach((d, i) => {\n const angleFieldValue = d[ARC_TRANSFORM_VALUE];\n const ratio = total ? angleFieldValue / total : 0;\n let radian = ratio * angleRange;\n\n if (radian < minAngle) {\n radian = minAngle;\n restAngle -= minAngle;\n } else {\n largeThanMinAngleTotal += angleFieldValue;\n }\n\n const dStartAngle = lastAngle;\n const dEndAngle = lastAngle + radian;\n\n d[asRatio] = ratio;\n d[asK] = max ? angleFieldValue / max : 0;\n d._percent_ = getPercentValue(valueList, i);\n appendArcInfo(d, dStartAngle, radian);\n\n lastAngle = dEndAngle;\n });\n\n if (restAngle < angleRange) {\n if (restAngle <= 1e-3) {\n const angle = angleRange / data.length;\n data.forEach((d, index) => {\n appendArcInfo(d, startAngle + index * angle, angle);\n });\n } else {\n const unitRadian = restAngle / largeThanMinAngleTotal;\n lastAngle = startAngle;\n data.forEach(d => {\n const angle = d[asRadian] === minAngle ? minAngle : d[ARC_TRANSFORM_VALUE] * unitRadian;\n appendArcInfo(d, lastAngle, angle);\n\n lastAngle += angle;\n });\n }\n }\n\n if (total !== 0) {\n // 数据都为 0 时,起始角和结束角相同,不应该强制赋值\n // 防止一个扇区的角度会因为浮点数精度问题和传入的 endAngle 不相等\n data[data.length - 1][asEndAngle] = endAngle;\n }\n return data;\n};\n"]}
@@ -4,9 +4,9 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
5
  }), exports.waterfallFillTotal = exports.waterfall = void 0;
6
6
 
7
- const vutils_1 = require("@visactor/vutils"), waterfall_1 = require("../../constant/waterfall"), waterfall = (lastData, op) => {
7
+ const vutils_1 = require("@visactor/vutils"), waterfall_1 = require("../../constant/waterfall"), debug_1 = require("../../util/debug"), waterfall = (lastData, op) => {
8
8
  if (!lastData || 0 === lastData.length) return lastData;
9
- const {indexField: indexField, valueField: valueField, startAs: startAs, endAs: endAs, total: totalSpec, seriesField: seriesField, seriesFieldName: seriesFieldName, groupData: groupData} = op, totalData = [], {dimensionValues: dimensionValues, dimensionData: dimensionData} = groupData().latestData, indexValues = Array.from(dimensionValues[indexField]);
9
+ const {indexField: indexField, total: totalSpec, groupData: groupData} = op, totalData = [], {dimensionValues: dimensionValues, dimensionData: dimensionData} = groupData().latestData, indexValues = Array.from(dimensionValues[indexField]);
10
10
  let temp = {
11
11
  start: 0,
12
12
  end: 0,
@@ -20,37 +20,112 @@ const vutils_1 = require("@visactor/vutils"), waterfall_1 = require("../../const
20
20
  lastEnd: temp.end,
21
21
  index: key,
22
22
  isTotal: !1
23
- };
24
- dimensionData[key].forEach((d => {
25
- let isTotalTag = !1;
26
- if (totalSpec && "end" !== totalSpec.type) {
27
- if ("field" === totalSpec.type || "custom" === totalSpec.type) {
28
- if (d[totalSpec.tagField]) if (isTotalTag = !0, "custom" === totalSpec.type) {
29
- const {start: start, end: end} = totalSpec.product(d, temp);
30
- d[startAs] = start, d[endAs] = end, total.end = end, total.start = start;
31
- } else {
32
- let start = 0, end = total.end;
33
- if (totalSpec.collectCountField && !(0, vutils_1.isNil)(d[totalSpec.collectCountField])) {
34
- const startIndex = totalData.length - +d[totalSpec.collectCountField], endIndex = totalData.length - 1;
35
- startIndex < 0 ? console.warn("total.collectCountField error") : start = totalData[startIndex].start,
36
- endIndex < 0 ? console.warn("total.collectCountField error") : end = totalData[endIndex].end;
37
- } else totalSpec.startField && !(0, vutils_1.isNil)(d[totalSpec.startField]) && (start = +d[totalSpec.startField]),
38
- totalSpec.valueField && !(0, vutils_1.isNil)(d[totalSpec.valueField]) && (end = (0,
39
- vutils_1.precisionAdd)(start, +d[totalSpec.valueField]));
40
- d[startAs] = start, d[endAs] = end, d[valueField] = end - start, total.start = start,
41
- total.end = end;
23
+ }, indexData = dimensionData[key];
24
+ if (indexData.length > 1) {
25
+ const isTotalCheck = d => {
26
+ if (totalSpec && "end" !== totalSpec.type) {
27
+ if ("field" === totalSpec.type || "custom" === totalSpec.type) {
28
+ return !!d[totalSpec.tagField];
42
29
  }
43
- }
44
- } else index === indexValues.length - 1 && (total.start = 0, d[startAs] = total.start,
45
- d[endAs] = total.end, isTotalTag = !0);
46
- isTotalTag || (d[startAs] = +total.end, d[endAs] = (0, vutils_1.precisionAdd)(d[startAs], +d[valueField]),
47
- total.end = d[endAs]), total.isTotal = isTotalTag, ((0, vutils_1.isNil)(seriesField) || seriesField === waterfall_1.WaterfallDefaultSeriesField) && (d[waterfall_1.WaterfallDefaultSeriesField] = isTotalTag ? seriesFieldName.total : +d[valueField] >= 0 ? seriesFieldName.increase : seriesFieldName.decrease);
48
- })), temp = Object.assign(Object.assign({}, total), {
49
- lastIndex: key
50
- }), totalData.push(total);
30
+ } else if (index === indexValues.length - 1) return !0;
31
+ return !1;
32
+ };
33
+ if (indexData.some((d => isTotalCheck(d)))) return temp = computeTotalWithMultipleData(indexData, key, total, totalData, temp, indexValues, index, op, isTotalCheck),
34
+ void totalData.push(total);
35
+ }
36
+ temp = computeNormalData(indexData, key, total, totalData, temp, indexValues, index, op),
37
+ totalData.push(total);
51
38
  })), totalData;
52
39
  };
53
40
 
41
+ function computeTotalWithMultipleData(indexData, key, total, totalData, temp, indexValues, index, op, isTotalCheck) {
42
+ total.isTotal = !0;
43
+ const {valueField: valueField, startAs: startAs, endAs: endAs, total: totalSpec} = op, _normalTemp = [], _totalTemp = [];
44
+ if (indexData.forEach((d => {
45
+ isTotalCheck(d) ? _totalTemp.push(d) : _normalTemp.push(d);
46
+ })), _totalTemp.length === indexData.length) {
47
+ const result = computeNormalData([ indexData[0] ], key, total, totalData, temp, indexValues, index, op);
48
+ return _totalTemp.forEach((d => {
49
+ d[startAs] = indexData[0][startAs], d[endAs] = indexData[0][endAs], d[valueField] = indexData[0][valueField];
50
+ })), result;
51
+ }
52
+ const totalConfigData = _totalTemp[0];
53
+ let {start: start, end: end} = getTotalStartEnd(totalConfigData, total, totalData, temp, totalSpec);
54
+ total.start = start, total.end = end;
55
+ let valueTemp = end - start;
56
+ return _normalTemp.forEach((d => {
57
+ d[startAs] = +start, d[endAs] = (0, vutils_1.precisionAdd)(d[startAs], +d[valueField]),
58
+ start = d[endAs], valueTemp = (0, vutils_1.precisionSub)(valueTemp, +d[valueField]);
59
+ })), _totalTemp.forEach((d => {
60
+ d[startAs] = +start, d[endAs] = (0, vutils_1.precisionAdd)(d[startAs], valueTemp),
61
+ d[valueField] = valueTemp;
62
+ })), Object.assign(Object.assign({}, total), {
63
+ lastIndex: key
64
+ });
65
+ }
66
+
67
+ function computeNormalData(indexData, key, total, totalData, temp, indexValues, index, op) {
68
+ const {valueField: valueField, startAs: startAs, endAs: endAs, total: totalSpec, seriesField: seriesField, seriesFieldName: seriesFieldName} = op;
69
+ return indexData.forEach((d => {
70
+ let isTotalTag = !1;
71
+ if (totalSpec && "end" !== totalSpec.type) {
72
+ if ("field" === totalSpec.type || "custom" === totalSpec.type) {
73
+ if (d[totalSpec.tagField]) {
74
+ isTotalTag = !0;
75
+ const {start: start, end: end} = getTotalStartEnd(d, total, totalData, temp, totalSpec);
76
+ d[startAs] = start, d[endAs] = end, d[valueField] = end - start, total.start = start,
77
+ total.end = end;
78
+ }
79
+ }
80
+ } else index === indexValues.length - 1 && (total.start = 0, d[startAs] = total.start,
81
+ d[endAs] = total.end, isTotalTag = !0);
82
+ isTotalTag || (d[startAs] = +total.end, d[endAs] = (0, vutils_1.precisionAdd)(d[startAs], +d[valueField]),
83
+ total.end = d[endAs]), total.isTotal = isTotalTag, ((0, vutils_1.isNil)(seriesField) || seriesField === waterfall_1.WaterfallDefaultSeriesField) && (d[waterfall_1.WaterfallDefaultSeriesField] = isTotalTag ? seriesFieldName.total : +d[valueField] >= 0 ? seriesFieldName.increase : seriesFieldName.decrease);
84
+ })), Object.assign(Object.assign({}, total), {
85
+ lastIndex: key
86
+ });
87
+ }
88
+
89
+ function getTotalStartEnd(d, total, totalData, temp, totalSpec) {
90
+ return totalSpec && "end" !== totalSpec.type ? "field" === totalSpec.type || "custom" === totalSpec.type ? "custom" === totalSpec.type ? getTotalInCustomType(d, temp, totalSpec) : totalSpec.collectCountField && !(0,
91
+ vutils_1.isNil)(d[totalSpec.collectCountField]) ? getTotalInCollectField(d, totalData, total, totalSpec) : getTotalInField(d, total, totalSpec) : {
92
+ start: 0,
93
+ end: 0
94
+ } : getTotalInEndType(total);
95
+ }
96
+
97
+ function getTotalInEndType(total) {
98
+ return {
99
+ start: 0,
100
+ end: total.end
101
+ };
102
+ }
103
+
104
+ function getTotalInCustomType(d, temp, totalSpec) {
105
+ return totalSpec.product(d, temp);
106
+ }
107
+
108
+ function getTotalInCollectField(d, totalData, total, totalSpec) {
109
+ let start = 0, end = total.end;
110
+ const startIndex = totalData.length - +d[totalSpec.collectCountField], endIndex = totalData.length - 1;
111
+ return startIndex < 0 ? (0, debug_1.warn)("total.collectCountField error") : start = totalData[startIndex].start,
112
+ endIndex < 0 ? (0, debug_1.warn)("total.collectCountField error") : end = totalData[endIndex].end,
113
+ {
114
+ start: start,
115
+ end: end
116
+ };
117
+ }
118
+
119
+ function getTotalInField(d, total, totalSpec) {
120
+ let start = 0, end = total.end;
121
+ return totalSpec.startField && !(0, vutils_1.isNil)(d[totalSpec.startField]) && (start = +d[totalSpec.startField]),
122
+ totalSpec.valueField && !(0, vutils_1.isNil)(d[totalSpec.valueField]) && (end = (0,
123
+ vutils_1.precisionAdd)(start, +d[totalSpec.valueField])), {
124
+ start: start,
125
+ end: end
126
+ };
127
+ }
128
+
54
129
  exports.waterfall = waterfall;
55
130
 
56
131
  const waterfallFillTotal = (data, op) => {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/data/transforms/waterfall.ts"],"names":[],"mappings":"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","file":"waterfall.js","sourcesContent":["// import { isNil, precisionAdd } from '@visactor/vutils';\nimport { isNil, precisionAdd } from '@visactor/vutils';\n\nimport type { DataView } from '@visactor/vdataset';\nimport type { IWaterfallSeriesSpec } from '../../series/waterfall/interface';\nimport type { Datum } from '../../typings';\nimport { WaterfallDefaultSeriesField } from '../../constant/waterfall';\n\nexport interface IWaterfallOpt {\n indexField: string;\n valueField: string;\n seriesField?: string;\n startAs: string;\n endAs: string;\n total: IWaterfallSeriesSpec['total'];\n seriesFieldName: {\n total: string;\n increase: string;\n decrease: string;\n };\n groupData: () => DataView;\n}\n\nexport const waterfall = (lastData: Array<Datum>, op: IWaterfallOpt) => {\n if (!lastData || lastData.length === 0) {\n return lastData;\n }\n const { indexField, valueField, startAs, endAs, total: totalSpec, seriesField, seriesFieldName, groupData } = op;\n const totalData: {\n start: number;\n end: number;\n lastIndex: string;\n lastEnd: number;\n index: string;\n isTotal: boolean;\n }[] = [];\n const { dimensionValues, dimensionData } = groupData().latestData as {\n dimensionValues: { [key in string]: Set<string> };\n dimensionData: { [key in string]: Datum[] };\n };\n const indexValues = Array.from(dimensionValues[indexField]);\n let temp: { start: number; end: number; lastIndex: string } = { start: 0, end: 0, lastIndex: null };\n indexValues.forEach((key, index) => {\n const total = {\n start: temp.end,\n end: temp.end,\n lastIndex: temp.lastIndex,\n lastEnd: temp.end,\n index: key,\n isTotal: false\n };\n\n const indexData = dimensionData[key];\n indexData.forEach(d => {\n let isTotalTag = false;\n if (!totalSpec || totalSpec.type === 'end') {\n if (index === indexValues.length - 1) {\n total.start = 0;\n d[startAs] = total.start;\n d[endAs] = total.end;\n isTotalTag = true;\n }\n } else if (totalSpec.type === 'field' || totalSpec.type === 'custom') {\n const tag = d[totalSpec.tagField];\n if (tag) {\n isTotalTag = true;\n if (totalSpec.type === 'custom') {\n const { start, end } = totalSpec.product(d, temp);\n d[startAs] = start;\n d[endAs] = end;\n total.end = end;\n total.start = start;\n } else {\n let start = 0;\n let end = total.end;\n // 如果有设置count, valueField 和 startField 无效\n if (totalSpec.collectCountField && !isNil(d[totalSpec.collectCountField])) {\n const startIndex = totalData.length - +d[totalSpec.collectCountField];\n const endIndex = totalData.length - 1;\n if (startIndex < 0) {\n console.warn('total.collectCountField error');\n } else {\n start = totalData[startIndex].start;\n }\n if (endIndex < 0) {\n console.warn('total.collectCountField error');\n } else {\n end = totalData[endIndex].end;\n }\n } else {\n if (totalSpec.startField && !isNil(d[totalSpec.startField])) {\n start = +d[totalSpec.startField];\n }\n if (totalSpec.valueField && !isNil(d[totalSpec.valueField])) {\n end = precisionAdd(start, +d[totalSpec.valueField]);\n }\n }\n d[startAs] = start;\n d[endAs] = end;\n d[valueField] = end - start;\n total.start = start;\n total.end = end;\n }\n }\n }\n if (!isTotalTag) {\n d[startAs] = +total.end;\n d[endAs] = precisionAdd(d[startAs], +d[valueField]);\n total.end = d[endAs];\n }\n total.isTotal = isTotalTag;\n\n if (isNil(seriesField) || seriesField === WaterfallDefaultSeriesField) {\n if (isTotalTag) {\n d[WaterfallDefaultSeriesField] = seriesFieldName.total;\n } else {\n d[WaterfallDefaultSeriesField] = +d[valueField] >= 0 ? seriesFieldName.increase : seriesFieldName.decrease;\n }\n }\n });\n temp = { ...total, lastIndex: key };\n totalData.push(total);\n });\n return totalData;\n};\n\nexport interface IWaterfallFillEndOpt {\n indexField: string;\n valueField: string;\n seriesField?: string;\n total: IWaterfallSeriesSpec['total'];\n}\n\nexport const waterfallFillTotal = (data: Array<Datum>, op: IWaterfallFillEndOpt) => {\n if (!data) {\n return data;\n }\n const { indexField, valueField, total, seriesField } = op;\n const totalData = {\n [indexField]: total?.text || 'total',\n [valueField]: data.reduce((pre, cur) => precisionAdd(pre, +cur[valueField]), 0)\n };\n if (seriesField) {\n totalData[seriesField] = 'total';\n }\n data.push(totalData);\n return data;\n};\n"]}
1
+ {"version":3,"sources":["../src/data/transforms/waterfall.ts"],"names":[],"mappings":"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","file":"waterfall.js","sourcesContent":["import { isNil, precisionAdd, precisionSub } from '@visactor/vutils';\n\nimport type { DataView } from '@visactor/vdataset';\nimport type {\n IWaterfallSeriesSpec,\n IWaterfallTotalCustom,\n IWaterfallTotalField\n} from '../../series/waterfall/interface';\nimport type { Datum } from '../../typings';\nimport { WaterfallDefaultSeriesField } from '../../constant/waterfall';\nimport { warn } from '../../util/debug';\n\ntype TotalInfo = {\n start: number;\n end: number;\n lastIndex: string;\n lastEnd: number;\n index: string;\n isTotal: boolean;\n};\n\nexport interface IWaterfallOpt {\n indexField: string;\n valueField: string;\n seriesField?: string;\n startAs: string;\n endAs: string;\n total: IWaterfallSeriesSpec['total'];\n seriesFieldName: {\n total: string;\n increase: string;\n decrease: string;\n };\n groupData: () => DataView;\n}\n\nexport const waterfall = (lastData: Array<Datum>, op: IWaterfallOpt) => {\n if (!lastData || lastData.length === 0) {\n return lastData;\n }\n const { indexField, total: totalSpec, groupData } = op;\n const totalData: {\n start: number;\n end: number;\n lastIndex: string;\n lastEnd: number;\n index: string;\n isTotal: boolean;\n }[] = [];\n const { dimensionValues, dimensionData } = groupData().latestData as {\n dimensionValues: { [key in string]: Set<string> };\n dimensionData: { [key in string]: Datum[] };\n };\n const indexValues = Array.from(dimensionValues[indexField]);\n // 上一次的计算结果\n let temp: { start: number; end: number; lastIndex: string } = { start: 0, end: 0, lastIndex: null };\n indexValues.forEach((key, index) => {\n const total = {\n start: temp.end,\n end: temp.end,\n lastIndex: temp.lastIndex,\n lastEnd: temp.end,\n index: key,\n isTotal: false\n };\n\n const indexData = dimensionData[key];\n // 1.9.5 新增能力\n // 当前 key 对应的数据中有一个总计数据,并且还有其他的分组数据时。总计的计算逻辑需要将总计值拆分\n if (indexData.length > 1) {\n const isTotalCheck = (d: Datum) => {\n if (!totalSpec || totalSpec.type === 'end') {\n if (index === indexValues.length - 1) {\n return true;\n }\n } else if (totalSpec.type === 'field' || totalSpec.type === 'custom') {\n const tag = d[totalSpec.tagField];\n return !!tag;\n }\n return false;\n };\n const isTotalTag = indexData.some(d => isTotalCheck(d));\n if (isTotalTag) {\n temp = computeTotalWithMultipleData(\n indexData,\n key,\n total,\n totalData,\n temp,\n indexValues,\n index,\n op,\n isTotalCheck\n );\n totalData.push(total);\n return;\n }\n }\n temp = computeNormalData(indexData, key, total, totalData, temp, indexValues, index, op);\n totalData.push(total);\n });\n return totalData;\n};\n\nfunction computeTotalWithMultipleData(\n indexData: Datum[],\n key: string,\n total: TotalInfo,\n totalData: TotalInfo[],\n temp: { start: number; end: number; lastIndex: string },\n indexValues: string[],\n index: number,\n op: IWaterfallOpt,\n isTotalCheck: (d: Datum) => boolean\n) {\n total.isTotal = true;\n const { valueField, startAs, endAs, total: totalSpec } = op;\n // 先将数据分为总计数据与常规数据\n const _normalTemp: Datum[] = [];\n const _totalTemp: Datum[] = [];\n indexData.forEach(d => {\n if (isTotalCheck(d)) {\n _totalTemp.push(d);\n } else {\n _normalTemp.push(d);\n }\n });\n // 1. 不可能全都不是总计数据\n // 2. 如果全都是总计数据,让它们都是同一个值\n if (_totalTemp.length === indexData.length) {\n const result = computeNormalData([indexData[0]], key, total, totalData, temp, indexValues, index, op);\n _totalTemp.forEach(d => {\n d[startAs] = indexData[0][startAs];\n d[endAs] = indexData[0][endAs];\n d[valueField] = indexData[0][valueField];\n });\n return result;\n }\n\n // 3. 其他常规情况\n // 先获取当前的起始值/结束值应当是多少\n // 按照第一个总计数据的配置来决定\n const totalConfigData = _totalTemp[0];\n // eslint-disable-next-line prefer-const\n let { start, end } = getTotalStartEnd(totalConfigData, total, totalData, temp, totalSpec);\n total.start = start;\n total.end = end;\n // 当前剩余的总计值\n let valueTemp = end - start;\n // 将非总计数据进行堆叠\n _normalTemp.forEach(d => {\n d[startAs] = +start;\n d[endAs] = precisionAdd(d[startAs], +d[valueField]);\n start = d[endAs];\n valueTemp = precisionSub(valueTemp, +d[valueField]);\n });\n // 先在的start end 就是 total 的\n _totalTemp.forEach(d => {\n d[startAs] = +start;\n d[endAs] = precisionAdd(d[startAs], valueTemp);\n d[valueField] = valueTemp;\n });\n return { ...total, lastIndex: key };\n}\n\nfunction computeNormalData(\n indexData: Datum[],\n key: string,\n total: TotalInfo,\n totalData: TotalInfo[],\n temp: { start: number; end: number; lastIndex: string },\n indexValues: string[],\n index: number,\n op: IWaterfallOpt\n) {\n const { valueField, startAs, endAs, total: totalSpec, seriesField, seriesFieldName } = op;\n indexData.forEach(d => {\n let isTotalTag = false;\n if (!totalSpec || totalSpec.type === 'end') {\n if (index === indexValues.length - 1) {\n total.start = 0;\n d[startAs] = total.start;\n d[endAs] = total.end;\n isTotalTag = true;\n }\n } else if (totalSpec.type === 'field' || totalSpec.type === 'custom') {\n const tag = d[totalSpec.tagField];\n if (tag) {\n isTotalTag = true;\n const { start, end } = getTotalStartEnd(d, total, totalData, temp, totalSpec);\n d[startAs] = start;\n d[endAs] = end;\n d[valueField] = end - start;\n total.start = start;\n total.end = end;\n }\n }\n if (!isTotalTag) {\n d[startAs] = +total.end;\n d[endAs] = precisionAdd(d[startAs], +d[valueField]);\n total.end = d[endAs];\n }\n total.isTotal = isTotalTag;\n\n if (isNil(seriesField) || seriesField === WaterfallDefaultSeriesField) {\n if (isTotalTag) {\n d[WaterfallDefaultSeriesField] = seriesFieldName.total;\n } else {\n d[WaterfallDefaultSeriesField] = +d[valueField] >= 0 ? seriesFieldName.increase : seriesFieldName.decrease;\n }\n }\n });\n return { ...total, lastIndex: key };\n}\n\nfunction getTotalStartEnd(\n d: Datum,\n total: TotalInfo,\n totalData: TotalInfo[],\n temp: { start: number; end: number; lastIndex: string },\n totalSpec: IWaterfallOpt['total']\n) {\n if (!totalSpec || totalSpec.type === 'end') {\n return getTotalInEndType(total);\n } else if (totalSpec.type === 'field' || totalSpec.type === 'custom') {\n if (totalSpec.type === 'custom') {\n return getTotalInCustomType(d, temp, totalSpec);\n }\n // 如果有设置count, valueField 和 startField 无效\n if (totalSpec.collectCountField && !isNil(d[totalSpec.collectCountField])) {\n return getTotalInCollectField(d, totalData, total, totalSpec);\n }\n return getTotalInField(d, total, totalSpec);\n }\n return { start: 0, end: 0 };\n}\n\nfunction getTotalInEndType(total: TotalInfo) {\n return { start: 0, end: total.end };\n}\n\nfunction getTotalInCustomType(\n d: Datum,\n temp: { start: number; end: number; lastIndex: string },\n totalSpec: IWaterfallOpt['total']\n) {\n return (<IWaterfallTotalCustom>totalSpec).product(d, temp);\n}\n\nfunction getTotalInCollectField(d: Datum, totalData: TotalInfo[], total: TotalInfo, totalSpec: IWaterfallTotalField) {\n let start = 0;\n let end = total.end;\n const startIndex = totalData.length - +d[totalSpec.collectCountField];\n const endIndex = totalData.length - 1;\n if (startIndex < 0) {\n warn('total.collectCountField error');\n } else {\n start = totalData[startIndex].start;\n }\n if (endIndex < 0) {\n warn('total.collectCountField error');\n } else {\n end = totalData[endIndex].end;\n }\n return { start, end };\n}\n\nfunction getTotalInField(d: Datum, total: TotalInfo, totalSpec: IWaterfallTotalField) {\n let start = 0;\n let end = total.end;\n if (totalSpec.startField && !isNil(d[totalSpec.startField])) {\n start = +d[totalSpec.startField];\n }\n if (totalSpec.valueField && !isNil(d[totalSpec.valueField])) {\n end = precisionAdd(start, +d[totalSpec.valueField]);\n }\n return { start, end };\n}\n\nexport interface IWaterfallFillEndOpt {\n indexField: string;\n valueField: string;\n seriesField?: string;\n total: IWaterfallSeriesSpec['total'];\n}\n\nexport const waterfallFillTotal = (data: Array<Datum>, op: IWaterfallFillEndOpt) => {\n if (!data) {\n return data;\n }\n const { indexField, valueField, total, seriesField } = op;\n const totalData = {\n [indexField]: total?.text || 'total',\n [valueField]: data.reduce((pre, cur) => precisionAdd(pre, +cur[valueField]), 0)\n };\n if (seriesField) {\n totalData[seriesField] = 'total';\n }\n data.push(totalData);\n return data;\n};\n"]}
@@ -202,7 +202,7 @@ class EventDispatcher {
202
202
  }
203
203
  }
204
204
  _isValidEvent(eType) {
205
- return event_1.BASE_EVENTS.includes(eType) || Object.values(event_1.VGRAMMAR_HOOK_EVENT).includes(eType) || Object.values(event_1.ChartEvent).includes(eType);
205
+ return event_1.BASE_EVENTS.includes(eType) || Object.values(event_1.VGRAMMAR_HOOK_EVENT).includes(eType);
206
206
  }
207
207
  }
208
208
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/event/event-dispatcher.ts"],"names":[],"mappings":"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","file":"event-dispatcher.js","sourcesContent":["import { Bubble } from './bubble';\nimport { isValid, debounce, throttle, get, isFunction } from '@visactor/vutils';\nimport { BASE_EVENTS, ChartEvent, Event_Bubble_Level, Event_Source_Type, VGRAMMAR_HOOK_EVENT } from '../constant/event';\nimport type {\n EventType,\n EventQuery,\n EventHandler,\n EventParamsDefinition,\n IEventDispatcher,\n EventBubbleLevel,\n BaseEventParams,\n EventParams,\n EventFilter,\n EventSourceType\n} from './interface';\nimport type { VChart } from '../core/vchart';\nimport type { CompilerListenerParameters } from '../compile/interface';\nimport type { Compiler } from '../compile/compiler';\nimport type { StringOrNumber } from '../typings';\n\nconst componentTypeMap = {\n cartesianAxis: 'axis',\n 'cartesianAxis-band': 'axis',\n 'cartesianAxis-linear': 'axis',\n 'cartesianAxis-time': 'axis',\n polarAxis: 'axis',\n 'polarAxis-band': 'axis',\n 'polarAxis-linear': 'axis',\n discreteLegend: 'legend',\n continuousLegend: 'legend',\n colorLegend: 'legend',\n sizeLegend: 'legend',\n label: 'label'\n};\n\nexport class EventDispatcher implements IEventDispatcher {\n globalInstance: VChart;\n\n // view 事件与 window 事件视作为不同类型的事件信息,进行独立的冒泡处理\n private _viewBubbles: Map<EventType, Bubble> = new Map<EventType, Bubble>();\n private _windowBubbles: Map<EventType, Bubble> = new Map<EventType, Bubble>();\n private _canvasBubbles: Map<EventType, Bubble> = new Map<EventType, Bubble>();\n\n private _viewListeners: Map<string, (params: CompilerListenerParameters) => void> = new Map<\n string,\n (params: CompilerListenerParameters) => void\n >();\n private _windowListeners: Map<string, (params: CompilerListenerParameters) => void> = new Map<\n string,\n (params: CompilerListenerParameters) => void\n >();\n private _canvasListeners: Map<string, (params: CompilerListenerParameters) => void> = new Map<\n string,\n (params: CompilerListenerParameters) => void\n >();\n\n private _compiler: Compiler;\n\n constructor(vchart: VChart, compiler: Compiler) {\n this.globalInstance = vchart;\n this._compiler = compiler;\n }\n\n register<Evt extends EventType>(eType: Evt, handler: EventHandler<EventParamsDefinition[Evt]>): this {\n // 解析 query 配置并生成最终 handler 内容\n this._parseQuery(handler);\n // view/window 事件做独立的处理\n const bubbles = this.getEventBubble(handler.filter?.source || Event_Source_Type.chart);\n const listeners = this.getEventListeners(handler.filter?.source || Event_Source_Type.chart);\n\n if (!bubbles.get(eType)) {\n bubbles.set(eType, new Bubble());\n }\n\n // 挂载事件监听\n const bubble = bubbles.get(eType) as Bubble;\n bubble.addHandler(handler, handler.filter?.level as EventBubbleLevel);\n if (this._isValidEvent(eType) && !listeners.has(eType)) {\n const callback = this._onDelegate.bind(this);\n this._compiler.addEventListener(handler.filter?.source as EventSourceType, eType, callback);\n listeners.set(eType, callback);\n }\n return this;\n }\n\n unregister<Evt extends EventType>(eType: Evt, handler?: EventHandler<EventParamsDefinition[Evt]>): this {\n let clean: boolean = false;\n // view/window 事件做独立的处理\n const bubbles = this.getEventBubble(handler?.filter?.source || Event_Source_Type.chart);\n const listeners = this.getEventListeners(handler?.filter?.source || Event_Source_Type.chart);\n\n if (!handler) {\n const bubble = bubbles.get(eType);\n bubble?.release();\n bubbles.delete(eType);\n clean = true;\n } else {\n const bubble = bubbles.get(eType);\n bubble?.removeHandler(handler);\n if (bubble?.getCount() === 0) {\n bubble?.release();\n bubbles.delete(eType);\n clean = true;\n }\n\n if ((handler?.wrappedCallback as any)?.cancel) {\n // 取消debounce/throttle事件,释放闭包内部的上下文对象\n (handler.wrappedCallback as any).cancel();\n }\n }\n // 某个事件下所有的监听取消之后删除语法层事件的代理\n if (clean && this._isValidEvent(eType)) {\n const callback = listeners.get(eType) as (params: CompilerListenerParameters) => void;\n this._compiler.removeEventListener(handler?.filter?.source || Event_Source_Type.chart, eType, callback);\n listeners.delete(eType);\n }\n return this;\n }\n\n dispatch<Evt extends EventType>(eType: Evt, params: EventParamsDefinition[Evt], level?: EventBubbleLevel): this {\n // 默认事件类别为 view\n const bubble = this.getEventBubble((params as BaseEventParams).source || Event_Source_Type.chart).get(\n eType\n ) as Bubble;\n // 没有任何监听事件时,bubble 不存在\n if (!bubble) {\n return this;\n }\n\n // 事件冒泡逻辑:Mark -> Model -> Chart -> VChart\n let stopBubble: boolean = false;\n\n if (level) {\n // 如果指定了 level,则直接处理,不进行冒泡\n const handlers = bubble.getHandlers(level);\n stopBubble = this._invoke(handlers, eType, params);\n } else {\n // Mark 级别的事件只包含对语法层代理的基础事件\n const handlers = bubble.getHandlers(Event_Bubble_Level.mark);\n stopBubble = this._invoke(handlers, eType, params);\n\n if (!stopBubble) {\n const handlers = bubble.getHandlers(Event_Bubble_Level.model);\n stopBubble = this._invoke(handlers, eType, params);\n }\n if (!stopBubble) {\n const handlers = bubble.getHandlers(Event_Bubble_Level.chart);\n stopBubble = this._invoke(handlers, eType, params);\n }\n if (!stopBubble) {\n const handlers = bubble.getHandlers(Event_Bubble_Level.vchart);\n stopBubble = this._invoke(handlers, eType, params);\n }\n }\n\n return this;\n }\n\n release(): void {\n for (const entry of this._viewListeners.entries()) {\n this._compiler.removeEventListener(Event_Source_Type.chart, entry[0], entry[1]);\n }\n this._viewListeners.clear();\n for (const entry of this._windowListeners.entries()) {\n this._compiler.removeEventListener(Event_Source_Type.window, entry[0], entry[1]);\n }\n this._windowListeners.clear();\n for (const entry of this._canvasListeners.entries()) {\n this._compiler.removeEventListener(Event_Source_Type.canvas, entry[0], entry[1]);\n }\n this._canvasListeners.clear();\n for (const bubble of this._viewBubbles.values()) {\n bubble.release();\n }\n this._viewBubbles.clear();\n for (const bubble of this._windowBubbles.values()) {\n bubble.release();\n }\n this._windowBubbles.clear();\n for (const bubble of this._canvasBubbles.values()) {\n bubble.release();\n }\n this._canvasBubbles.clear();\n }\n\n /**\n * 基于转换后的事件筛选配置过滤需要调用的 handler\n */\n private _filter<Evt extends EventType>(filter: EventFilter, evt: Evt, params: EventParamsDefinition[Evt]): boolean {\n if (isFunction(filter.filter) && !filter.filter(params)) {\n return false;\n }\n\n // 事件 level 不需要筛选,在冒泡流程中已经处理了 level 的逻辑\n if (filter.nodeName && get(params, 'node.name') !== filter.nodeName) {\n return false;\n }\n\n if (filter.markName && (params as BaseEventParams)?.mark?.name !== filter.markName) {\n // 对于 markName 的筛选需要包含所有父级 mark 的 name\n return false;\n }\n\n let modelType = params.model?.type;\n if (componentTypeMap[modelType]) {\n modelType = componentTypeMap[modelType];\n }\n if (filter.type && modelType !== filter.type) {\n return false;\n }\n\n // 如果配置了 level 为 'mark' 并且没有配置 type,则只在事件参数中包含了 mark 时才触发\n if (filter.level === 'mark' && !filter.type && !(params as BaseEventParams)?.mark) {\n return false;\n }\n\n // 如果配置了 level 为 'model' 并且没有配置 type,则只在事件参数中包含了 model 时才触发\n if (filter.level === 'model' && !filter.type && !(params as BaseEventParams)?.model) {\n return false;\n }\n\n if (isValid(filter.userId) && params.model?.userId !== filter.userId) {\n return false;\n }\n\n return true;\n }\n\n private _prepareParams<Evt extends EventType>(\n filter: EventFilter,\n params: EventParamsDefinition[Evt]\n ): EventParamsDefinition[Evt] {\n // 如果针对于 mark 做了筛选,则事件参数转为筛选器制定的父级 mark\n if (filter.markName && params.mark && (params as BaseEventParams).itemMap) {\n const markId = params.mark.getProductId();\n const item = (params as BaseEventParams).itemMap.get(markId);\n const datum = item?.getDatum();\n return { ...params, item, datum };\n }\n return { ...params };\n }\n\n /**\n * 代理语法层事件的监听回调\n */\n private _onDelegate(listenerParams: CompilerListenerParameters) {\n const chart = this.globalInstance.getChart();\n const model = (isValid(listenerParams.modelId) && chart?.getModelById(listenerParams.modelId)) || undefined;\n const mark = (isValid(listenerParams.markId) && chart?.getMarkById(listenerParams.markId)) || null;\n\n // FIXME: 这里操作的应当是场景树结构,与 vgrammar 结构无关\n // 遍历取到所有父级的 mark 以支持子元素响应父元素事件\n const itemMap = new Map<string, any>();\n let targetMark: any = listenerParams.item?.mark;\n if (targetMark && isValid(targetMark.id())) {\n itemMap.set(targetMark.id(), listenerParams.item);\n }\n while (targetMark?.elements) {\n const id = targetMark.id();\n // 由于父级的 markName 可能重复,因此只取最近的父级 mark\n if (isValid(id) && !itemMap.has(id)) {\n itemMap.set(id, targetMark.elements[0]);\n }\n targetMark = targetMark.group;\n }\n\n const params: BaseEventParams = {\n event: listenerParams.event,\n item: listenerParams.item,\n datum: listenerParams.datum,\n source: listenerParams.source,\n itemMap,\n chart,\n model,\n mark: mark ?? undefined,\n node: get(listenerParams.event, 'target')\n };\n this.dispatch(listenerParams.type, params);\n }\n\n /**\n * 调用相应事件监听下的 handlers\n */\n private _invoke<Evt extends EventType>(\n handlers: EventHandler<EventParams>[],\n type: EventType,\n params: EventParamsDefinition[Evt]\n ): boolean {\n const result = handlers.map(handler => {\n const filter = handler.filter as EventFilter;\n if (!handler.query || this._filter(filter, type, params)) {\n const callback = handler.wrappedCallback || handler.callback;\n const stopBubble = callback.call(null, this._prepareParams(filter, params));\n const doStopBubble = stopBubble ?? handler.query?.consume;\n if (doStopBubble) {\n (params as BaseEventParams).event?.stopPropagation();\n (params as BaseEventParams).event?.preventDefault();\n }\n return !!doStopBubble;\n }\n return undefined;\n });\n // 如果某个事件回调阻止了冒泡,则阻止更高级别事件的调用过程\n return result.some(r => r === true);\n }\n\n /**\n * 依据事件 query 得到事件冒泡层级\n */\n private _getQueryLevel(query: EventQuery | null): EventBubbleLevel {\n // 事件默认监听在 vchart 层\n if (!query) {\n return Event_Bubble_Level.vchart;\n }\n if (query.level) {\n return query.level;\n }\n if (isValid(query.id)) {\n return Event_Bubble_Level.model;\n }\n\n return Event_Bubble_Level.vchart;\n }\n\n /**\n * 将用户 query 配置转换为最终事件筛选参数\n */\n private _parseQuery(handler: EventHandler<EventParams>): EventHandler<EventParams> {\n const query = handler.query;\n // 处理 query 带来的函数封装\n if (query?.throttle) {\n handler.wrappedCallback = throttle(handler.callback, query.throttle);\n } else if (query?.debounce) {\n handler.wrappedCallback = debounce(handler.callback, query.debounce);\n }\n let level = this._getQueryLevel(query);\n let type: string | null = null;\n let source: EventSourceType = Event_Source_Type.chart;\n let nodeName: string | null = null;\n let markName: string | null = null;\n let userId: StringOrNumber | null = null;\n\n if (query?.nodeName) {\n nodeName = query.nodeName;\n }\n\n if (query?.markName) {\n markName = query.markName;\n }\n\n if (query?.type && (level === Event_Bubble_Level.model || level === Event_Bubble_Level.mark)) {\n type = query.type;\n }\n if (query?.source) {\n source = query.source;\n }\n\n if (isValid(query?.id)) {\n userId = query?.id;\n level = Event_Bubble_Level.model; // 如果用户配置了 id,那么默认 level 为 model\n }\n handler.filter = {\n level,\n markName,\n type,\n source,\n nodeName,\n userId,\n filter: query?.filter ?? null\n };\n return handler;\n }\n\n private getEventBubble(source: EventSourceType) {\n switch (source) {\n case Event_Source_Type.chart:\n return this._viewBubbles;\n case Event_Source_Type.window:\n return this._windowBubbles;\n case Event_Source_Type.canvas:\n return this._canvasBubbles;\n default:\n return this._viewBubbles;\n }\n }\n\n private getEventListeners(source: EventSourceType) {\n switch (source) {\n case Event_Source_Type.chart:\n return this._viewListeners;\n case Event_Source_Type.window:\n return this._windowListeners;\n case Event_Source_Type.canvas:\n return this._canvasListeners;\n default:\n return this._viewListeners;\n }\n }\n\n private _isValidEvent(eType: string) {\n return (\n BASE_EVENTS.includes(eType) ||\n (Object.values(VGRAMMAR_HOOK_EVENT) as string[]).includes(eType) ||\n (Object.values(ChartEvent) as string[]).includes(eType)\n );\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/event/event-dispatcher.ts"],"names":[],"mappings":"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","file":"event-dispatcher.js","sourcesContent":["import { Bubble } from './bubble';\nimport { isValid, debounce, throttle, get, isFunction } from '@visactor/vutils';\nimport { BASE_EVENTS, Event_Bubble_Level, Event_Source_Type, VGRAMMAR_HOOK_EVENT } from '../constant/event';\nimport type {\n EventType,\n EventQuery,\n EventHandler,\n EventParamsDefinition,\n IEventDispatcher,\n EventBubbleLevel,\n BaseEventParams,\n EventParams,\n EventFilter,\n EventSourceType\n} from './interface';\nimport type { VChart } from '../core/vchart';\nimport type { CompilerListenerParameters } from '../compile/interface';\nimport type { Compiler } from '../compile/compiler';\nimport type { StringOrNumber } from '../typings';\n\nconst componentTypeMap = {\n cartesianAxis: 'axis',\n 'cartesianAxis-band': 'axis',\n 'cartesianAxis-linear': 'axis',\n 'cartesianAxis-time': 'axis',\n polarAxis: 'axis',\n 'polarAxis-band': 'axis',\n 'polarAxis-linear': 'axis',\n discreteLegend: 'legend',\n continuousLegend: 'legend',\n colorLegend: 'legend',\n sizeLegend: 'legend',\n label: 'label'\n};\n\nexport class EventDispatcher implements IEventDispatcher {\n globalInstance: VChart;\n\n // view 事件与 window 事件视作为不同类型的事件信息,进行独立的冒泡处理\n private _viewBubbles: Map<EventType, Bubble> = new Map<EventType, Bubble>();\n private _windowBubbles: Map<EventType, Bubble> = new Map<EventType, Bubble>();\n private _canvasBubbles: Map<EventType, Bubble> = new Map<EventType, Bubble>();\n\n private _viewListeners: Map<string, (params: CompilerListenerParameters) => void> = new Map<\n string,\n (params: CompilerListenerParameters) => void\n >();\n private _windowListeners: Map<string, (params: CompilerListenerParameters) => void> = new Map<\n string,\n (params: CompilerListenerParameters) => void\n >();\n private _canvasListeners: Map<string, (params: CompilerListenerParameters) => void> = new Map<\n string,\n (params: CompilerListenerParameters) => void\n >();\n\n private _compiler: Compiler;\n\n constructor(vchart: VChart, compiler: Compiler) {\n this.globalInstance = vchart;\n this._compiler = compiler;\n }\n\n register<Evt extends EventType>(eType: Evt, handler: EventHandler<EventParamsDefinition[Evt]>): this {\n // 解析 query 配置并生成最终 handler 内容\n this._parseQuery(handler);\n // view/window 事件做独立的处理\n const bubbles = this.getEventBubble(handler.filter?.source || Event_Source_Type.chart);\n const listeners = this.getEventListeners(handler.filter?.source || Event_Source_Type.chart);\n\n if (!bubbles.get(eType)) {\n bubbles.set(eType, new Bubble());\n }\n\n // 挂载事件监听\n const bubble = bubbles.get(eType) as Bubble;\n bubble.addHandler(handler, handler.filter?.level as EventBubbleLevel);\n if (this._isValidEvent(eType) && !listeners.has(eType)) {\n const callback = this._onDelegate.bind(this);\n this._compiler.addEventListener(handler.filter?.source as EventSourceType, eType, callback);\n listeners.set(eType, callback);\n }\n return this;\n }\n\n unregister<Evt extends EventType>(eType: Evt, handler?: EventHandler<EventParamsDefinition[Evt]>): this {\n let clean: boolean = false;\n // view/window 事件做独立的处理\n const bubbles = this.getEventBubble(handler?.filter?.source || Event_Source_Type.chart);\n const listeners = this.getEventListeners(handler?.filter?.source || Event_Source_Type.chart);\n\n if (!handler) {\n const bubble = bubbles.get(eType);\n bubble?.release();\n bubbles.delete(eType);\n clean = true;\n } else {\n const bubble = bubbles.get(eType);\n bubble?.removeHandler(handler);\n if (bubble?.getCount() === 0) {\n bubble?.release();\n bubbles.delete(eType);\n clean = true;\n }\n\n if ((handler?.wrappedCallback as any)?.cancel) {\n // 取消debounce/throttle事件,释放闭包内部的上下文对象\n (handler.wrappedCallback as any).cancel();\n }\n }\n // 某个事件下所有的监听取消之后删除语法层事件的代理\n if (clean && this._isValidEvent(eType)) {\n const callback = listeners.get(eType) as (params: CompilerListenerParameters) => void;\n this._compiler.removeEventListener(handler?.filter?.source || Event_Source_Type.chart, eType, callback);\n listeners.delete(eType);\n }\n return this;\n }\n\n dispatch<Evt extends EventType>(eType: Evt, params: EventParamsDefinition[Evt], level?: EventBubbleLevel): this {\n // 默认事件类别为 view\n const bubble = this.getEventBubble((params as BaseEventParams).source || Event_Source_Type.chart).get(\n eType\n ) as Bubble;\n // 没有任何监听事件时,bubble 不存在\n if (!bubble) {\n return this;\n }\n\n // 事件冒泡逻辑:Mark -> Model -> Chart -> VChart\n let stopBubble: boolean = false;\n\n if (level) {\n // 如果指定了 level,则直接处理,不进行冒泡\n const handlers = bubble.getHandlers(level);\n stopBubble = this._invoke(handlers, eType, params);\n } else {\n // Mark 级别的事件只包含对语法层代理的基础事件\n const handlers = bubble.getHandlers(Event_Bubble_Level.mark);\n stopBubble = this._invoke(handlers, eType, params);\n\n if (!stopBubble) {\n const handlers = bubble.getHandlers(Event_Bubble_Level.model);\n stopBubble = this._invoke(handlers, eType, params);\n }\n if (!stopBubble) {\n const handlers = bubble.getHandlers(Event_Bubble_Level.chart);\n stopBubble = this._invoke(handlers, eType, params);\n }\n if (!stopBubble) {\n const handlers = bubble.getHandlers(Event_Bubble_Level.vchart);\n stopBubble = this._invoke(handlers, eType, params);\n }\n }\n\n return this;\n }\n\n release(): void {\n for (const entry of this._viewListeners.entries()) {\n this._compiler.removeEventListener(Event_Source_Type.chart, entry[0], entry[1]);\n }\n this._viewListeners.clear();\n for (const entry of this._windowListeners.entries()) {\n this._compiler.removeEventListener(Event_Source_Type.window, entry[0], entry[1]);\n }\n this._windowListeners.clear();\n for (const entry of this._canvasListeners.entries()) {\n this._compiler.removeEventListener(Event_Source_Type.canvas, entry[0], entry[1]);\n }\n this._canvasListeners.clear();\n for (const bubble of this._viewBubbles.values()) {\n bubble.release();\n }\n this._viewBubbles.clear();\n for (const bubble of this._windowBubbles.values()) {\n bubble.release();\n }\n this._windowBubbles.clear();\n for (const bubble of this._canvasBubbles.values()) {\n bubble.release();\n }\n this._canvasBubbles.clear();\n }\n\n /**\n * 基于转换后的事件筛选配置过滤需要调用的 handler\n */\n private _filter<Evt extends EventType>(filter: EventFilter, evt: Evt, params: EventParamsDefinition[Evt]): boolean {\n if (isFunction(filter.filter) && !filter.filter(params)) {\n return false;\n }\n\n // 事件 level 不需要筛选,在冒泡流程中已经处理了 level 的逻辑\n if (filter.nodeName && get(params, 'node.name') !== filter.nodeName) {\n return false;\n }\n\n if (filter.markName && (params as BaseEventParams)?.mark?.name !== filter.markName) {\n // 对于 markName 的筛选需要包含所有父级 mark 的 name\n return false;\n }\n\n let modelType = params.model?.type;\n if (componentTypeMap[modelType]) {\n modelType = componentTypeMap[modelType];\n }\n if (filter.type && modelType !== filter.type) {\n return false;\n }\n\n // 如果配置了 level 为 'mark' 并且没有配置 type,则只在事件参数中包含了 mark 时才触发\n if (filter.level === 'mark' && !filter.type && !(params as BaseEventParams)?.mark) {\n return false;\n }\n\n // 如果配置了 level 为 'model' 并且没有配置 type,则只在事件参数中包含了 model 时才触发\n if (filter.level === 'model' && !filter.type && !(params as BaseEventParams)?.model) {\n return false;\n }\n\n if (isValid(filter.userId) && params.model?.userId !== filter.userId) {\n return false;\n }\n\n return true;\n }\n\n private _prepareParams<Evt extends EventType>(\n filter: EventFilter,\n params: EventParamsDefinition[Evt]\n ): EventParamsDefinition[Evt] {\n // 如果针对于 mark 做了筛选,则事件参数转为筛选器制定的父级 mark\n if (filter.markName && params.mark && (params as BaseEventParams).itemMap) {\n const markId = params.mark.getProductId();\n const item = (params as BaseEventParams).itemMap.get(markId);\n const datum = item?.getDatum();\n return { ...params, item, datum };\n }\n return { ...params };\n }\n\n /**\n * 代理语法层事件的监听回调\n */\n private _onDelegate(listenerParams: CompilerListenerParameters) {\n const chart = this.globalInstance.getChart();\n const model = (isValid(listenerParams.modelId) && chart?.getModelById(listenerParams.modelId)) || undefined;\n const mark = (isValid(listenerParams.markId) && chart?.getMarkById(listenerParams.markId)) || null;\n\n // FIXME: 这里操作的应当是场景树结构,与 vgrammar 结构无关\n // 遍历取到所有父级的 mark 以支持子元素响应父元素事件\n const itemMap = new Map<string, any>();\n let targetMark: any = listenerParams.item?.mark;\n if (targetMark && isValid(targetMark.id())) {\n itemMap.set(targetMark.id(), listenerParams.item);\n }\n while (targetMark?.elements) {\n const id = targetMark.id();\n // 由于父级的 markName 可能重复,因此只取最近的父级 mark\n if (isValid(id) && !itemMap.has(id)) {\n itemMap.set(id, targetMark.elements[0]);\n }\n targetMark = targetMark.group;\n }\n\n const params: BaseEventParams = {\n event: listenerParams.event,\n item: listenerParams.item,\n datum: listenerParams.datum,\n source: listenerParams.source,\n itemMap,\n chart,\n model,\n mark: mark ?? undefined,\n node: get(listenerParams.event, 'target')\n };\n this.dispatch(listenerParams.type, params);\n }\n\n /**\n * 调用相应事件监听下的 handlers\n */\n private _invoke<Evt extends EventType>(\n handlers: EventHandler<EventParams>[],\n type: EventType,\n params: EventParamsDefinition[Evt]\n ): boolean {\n const result = handlers.map(handler => {\n const filter = handler.filter as EventFilter;\n if (!handler.query || this._filter(filter, type, params)) {\n const callback = handler.wrappedCallback || handler.callback;\n const stopBubble = callback.call(null, this._prepareParams(filter, params));\n const doStopBubble = stopBubble ?? handler.query?.consume;\n if (doStopBubble) {\n (params as BaseEventParams).event?.stopPropagation();\n (params as BaseEventParams).event?.preventDefault();\n }\n return !!doStopBubble;\n }\n return undefined;\n });\n // 如果某个事件回调阻止了冒泡,则阻止更高级别事件的调用过程\n return result.some(r => r === true);\n }\n\n /**\n * 依据事件 query 得到事件冒泡层级\n */\n private _getQueryLevel(query: EventQuery | null): EventBubbleLevel {\n // 事件默认监听在 vchart 层\n if (!query) {\n return Event_Bubble_Level.vchart;\n }\n if (query.level) {\n return query.level;\n }\n if (isValid(query.id)) {\n return Event_Bubble_Level.model;\n }\n\n return Event_Bubble_Level.vchart;\n }\n\n /**\n * 将用户 query 配置转换为最终事件筛选参数\n */\n private _parseQuery(handler: EventHandler<EventParams>): EventHandler<EventParams> {\n const query = handler.query;\n // 处理 query 带来的函数封装\n if (query?.throttle) {\n handler.wrappedCallback = throttle(handler.callback, query.throttle);\n } else if (query?.debounce) {\n handler.wrappedCallback = debounce(handler.callback, query.debounce);\n }\n let level = this._getQueryLevel(query);\n let type: string | null = null;\n let source: EventSourceType = Event_Source_Type.chart;\n let nodeName: string | null = null;\n let markName: string | null = null;\n let userId: StringOrNumber | null = null;\n\n if (query?.nodeName) {\n nodeName = query.nodeName;\n }\n\n if (query?.markName) {\n markName = query.markName;\n }\n\n if (query?.type && (level === Event_Bubble_Level.model || level === Event_Bubble_Level.mark)) {\n type = query.type;\n }\n if (query?.source) {\n source = query.source;\n }\n\n if (isValid(query?.id)) {\n userId = query?.id;\n level = Event_Bubble_Level.model; // 如果用户配置了 id,那么默认 level 为 model\n }\n handler.filter = {\n level,\n markName,\n type,\n source,\n nodeName,\n userId,\n filter: query?.filter ?? null\n };\n return handler;\n }\n\n private getEventBubble(source: EventSourceType) {\n switch (source) {\n case Event_Source_Type.chart:\n return this._viewBubbles;\n case Event_Source_Type.window:\n return this._windowBubbles;\n case Event_Source_Type.canvas:\n return this._canvasBubbles;\n default:\n return this._viewBubbles;\n }\n }\n\n private getEventListeners(source: EventSourceType) {\n switch (source) {\n case Event_Source_Type.chart:\n return this._viewListeners;\n case Event_Source_Type.window:\n return this._windowListeners;\n case Event_Source_Type.canvas:\n return this._canvasListeners;\n default:\n return this._viewListeners;\n }\n }\n\n private _isValidEvent(eType: string) {\n return BASE_EVENTS.includes(eType) || (Object.values(VGRAMMAR_HOOK_EVENT) as string[]).includes(eType);\n }\n}\n"]}
@@ -29,58 +29,55 @@ exports.isSameDimensionInfo = isSameDimensionInfo;
29
29
 
30
30
  const getDimensionData = (value, axis, coordinate, getDimensionField) => {
31
31
  var _a;
32
- const scale = axis.getScale(), isDiscreteAxis = (0, vscale_1.isDiscrete)(scale.type), data = [], regions = axis.getRegions();
33
- for (const region of regions) {
34
- const seriesList = region.getSeries();
35
- for (const series of seriesList) if (series.coordinate === coordinate) {
36
- const dimensionField = (0, vutils_1.array)(getDimensionField(series)), viewData = null === (_a = series.getViewData()) || void 0 === _a ? void 0 : _a.latestData;
37
- if (dimensionField && viewData) if (isDiscreteAxis) {
38
- const datums = [], datumIdList = [];
39
- viewData.forEach(((datum, i) => {
40
- var _a;
41
- (null === (_a = datum[dimensionField[0]]) || void 0 === _a ? void 0 : _a.toString()) === (null == value ? void 0 : value.toString()) && (datums.push(datum),
42
- datumIdList.push(i));
43
- })), data.push({
44
- series: series,
45
- datum: datums,
46
- key: getDimensionDataKey(series, datumIdList)
47
- });
48
- } else if ((0, vutils_1.isValid)(dimensionField[1])) {
49
- const datums = [], datumIdList = [];
32
+ const scale = axis.getScale(), isDiscreteAxis = (0, vscale_1.isDiscrete)(scale.type), data = [], seriesList = axis.getOption().getChart().getSeriesInIndex(axis.getSpecInfo().seriesIndexes);
33
+ for (const series of seriesList) if (series.coordinate === coordinate) {
34
+ const dimensionField = (0, vutils_1.array)(getDimensionField(series)), viewData = null === (_a = series.getViewData()) || void 0 === _a ? void 0 : _a.latestData;
35
+ if (dimensionField && viewData) if (isDiscreteAxis) {
36
+ const datums = [], datumIdList = [];
37
+ viewData.forEach(((datum, i) => {
38
+ var _a;
39
+ (null === (_a = datum[dimensionField[0]]) || void 0 === _a ? void 0 : _a.toString()) === (null == value ? void 0 : value.toString()) && (datums.push(datum),
40
+ datumIdList.push(i));
41
+ })), data.push({
42
+ series: series,
43
+ datum: datums,
44
+ key: getDimensionDataKey(series, datumIdList)
45
+ });
46
+ } else if ((0, vutils_1.isValid)(dimensionField[1])) {
47
+ const datums = [], datumIdList = [];
48
+ viewData.forEach(((datum, i) => {
49
+ var _a;
50
+ ((null === (_a = datum[dimensionField[0]]) || void 0 === _a ? void 0 : _a.toString()) === (null == value ? void 0 : value.toString()) || (0,
51
+ vutils_1.isValid)(datum[dimensionField[0]]) && (0, vutils_1.isValid)(datum[dimensionField[1]]) && value >= datum[dimensionField[0]] && value < datum[dimensionField[1]]) && (datums.push(datum),
52
+ datumIdList.push(i));
53
+ })), data.push({
54
+ series: series,
55
+ datum: datums,
56
+ key: getDimensionDataKey(series, datumIdList)
57
+ });
58
+ } else {
59
+ const range = axis.getSpec().tooltipFilterRange, rangeArr = (0, vutils_1.isValidNumber)(range) ? [ -range, range ] : range;
60
+ let datums = [], datumIdList = [];
61
+ if (rangeArr) viewData.forEach(((datum, i) => {
62
+ if ((0, vutils_1.isValid)(datum[dimensionField[0]])) {
63
+ const delta = datum[dimensionField[0]] - value;
64
+ delta >= rangeArr[0] && delta <= rangeArr[1] && (datums.push(datum), datumIdList.push(i));
65
+ }
66
+ })); else {
67
+ let minDelta = 1 / 0, deltaSign = 0;
50
68
  viewData.forEach(((datum, i) => {
51
- var _a;
52
- ((null === (_a = datum[dimensionField[0]]) || void 0 === _a ? void 0 : _a.toString()) === (null == value ? void 0 : value.toString()) || (0,
53
- vutils_1.isValid)(datum[dimensionField[0]]) && (0, vutils_1.isValid)(datum[dimensionField[1]]) && value >= datum[dimensionField[0]] && value < datum[dimensionField[1]]) && (datums.push(datum),
54
- datumIdList.push(i));
55
- })), data.push({
56
- series: series,
57
- datum: datums,
58
- key: getDimensionDataKey(series, datumIdList)
59
- });
60
- } else {
61
- const range = axis.getSpec().tooltipFilterRange, rangeArr = (0, vutils_1.isValidNumber)(range) ? [ -range, range ] : range;
62
- let datums = [], datumIdList = [];
63
- if (rangeArr) viewData.forEach(((datum, i) => {
64
69
  if ((0, vutils_1.isValid)(datum[dimensionField[0]])) {
65
- const delta = datum[dimensionField[0]] - value;
66
- delta >= rangeArr[0] && delta <= rangeArr[1] && (datums.push(datum), datumIdList.push(i));
70
+ const delta = Math.abs(datum[dimensionField[0]] - value), sign = Math.sign(datum[dimensionField[0]] - value);
71
+ delta < minDelta ? (minDelta = delta, datums = [ datum ], datumIdList = [ i ], deltaSign = sign) : delta === minDelta && sign === deltaSign && (datums.push(datum),
72
+ datumIdList.push(i));
67
73
  }
68
- })); else {
69
- let minDelta = 1 / 0, deltaSign = 0;
70
- viewData.forEach(((datum, i) => {
71
- if ((0, vutils_1.isValid)(datum[dimensionField[0]])) {
72
- const delta = Math.abs(datum[dimensionField[0]] - value), sign = Math.sign(datum[dimensionField[0]] - value);
73
- delta < minDelta ? (minDelta = delta, datums = [ datum ], datumIdList = [ i ], deltaSign = sign) : delta === minDelta && sign === deltaSign && (datums.push(datum),
74
- datumIdList.push(i));
75
- }
76
- }));
77
- }
78
- data.push({
79
- series: series,
80
- datum: datums,
81
- key: getDimensionDataKey(series, datumIdList)
82
- });
74
+ }));
83
75
  }
76
+ data.push({
77
+ series: series,
78
+ datum: datums,
79
+ key: getDimensionDataKey(series, datumIdList)
80
+ });
84
81
  }
85
82
  }
86
83
  return data;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/event/events/dimension/util/common.ts"],"names":[],"mappings":"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","file":"common.js","sourcesContent":["/* eslint-disable max-depth */\nimport type { IChart } from '../../../../chart/interface';\nimport type { IDimensionData, IDimensionInfo } from '../interface';\nimport { isNil, array, isValid, isValidNumber } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport type { Maybe } from '@visactor/vutils';\nimport type { AxisComponent } from '../../../../component/axis/base-axis';\nimport type { CoordinateType, Datum, ILayoutPoint } from '../../../../typings';\nimport { isDiscrete } from '@visactor/vscale';\nimport type { ICartesianLinearAxisSpec } from '../../../../component';\nimport type { ISeries } from '../../../../series';\n\nconst isInBound = (pos: ILayoutPoint, min: ILayoutPoint, max: ILayoutPoint): boolean =>\n pos.x >= min.x && pos.x <= max.x && pos.y >= min.y && pos.y <= max.y;\n\nexport const isInRegionBound = (chart: IChart, axis: AxisComponent, pos: ILayoutPoint) => {\n const regionList = chart.getRegionsInIds(array(axis.layout.layoutBindRegionID));\n return regionList?.some(region => {\n const rect = region.getLayoutRect();\n const startPoint = region.getLayoutStartPoint();\n return isInBound(\n pos,\n { x: startPoint.x, y: startPoint.y },\n { x: rect.width + startPoint.x, y: rect.height + startPoint.y }\n );\n });\n};\n\nexport const isSameDimensionInfo = (a?: IDimensionInfo, b?: IDimensionInfo): boolean => {\n if (a === b) {\n return true;\n }\n if (isNil(a) || isNil(b)) {\n return false;\n }\n if (a.value !== b.value) {\n return false;\n }\n if (a.axis?.id !== b.axis?.id) {\n return false;\n }\n return true;\n};\n\n/** 给定维度项的值,获取对应维度数据 */\nexport const getDimensionData = (\n value: any,\n axis: AxisComponent,\n coordinate: CoordinateType,\n getDimensionField: (series: any) => string | string[]\n): IDimensionData[] => {\n const scale = axis.getScale();\n const isDiscreteAxis = isDiscrete(scale.type);\n\n const data: IDimensionData[] = [];\n const regions = axis.getRegions(); // TODO: 直接从轴里取系列\n for (const region of regions) {\n const seriesList = region.getSeries();\n for (const series of seriesList) {\n if (series.coordinate === coordinate) {\n const dimensionField = array(getDimensionField(series));\n const viewData = series.getViewData()?.latestData;\n if (dimensionField && viewData) {\n if (isDiscreteAxis) {\n const datums: Datum[] = [];\n const datumIdList: number[] = [];\n viewData.forEach((datum: any, i: number) => {\n if (datum[dimensionField[0]]?.toString() === value?.toString()) {\n datums.push(datum); // 获取该维度项所对应的数据\n datumIdList.push(i);\n }\n });\n data.push({\n series,\n datum: datums,\n key: getDimensionDataKey(series, datumIdList)\n });\n } else {\n // 连续轴\n if (isValid(dimensionField[1])) {\n // 直方图情况,根据范围取 datum\n const datums: Datum[] = [];\n const datumIdList: number[] = [];\n viewData.forEach((datum: any, i: number) => {\n if (\n datum[dimensionField[0]]?.toString() === value?.toString() ||\n (isValid(datum[dimensionField[0]]) &&\n isValid(datum[dimensionField[1]]) &&\n value >= datum[dimensionField[0]] &&\n value < datum[dimensionField[1]])\n ) {\n datums.push(datum); // 获取该维度项所对应的数据\n datumIdList.push(i);\n }\n });\n data.push({\n series,\n datum: datums,\n key: getDimensionDataKey(series, datumIdList)\n });\n } else {\n // 散点图情况,依据轴上的配置判断\n const range = (axis.getSpec() as ICartesianLinearAxisSpec).tooltipFilterRange;\n const rangeArr = (isValidNumber(range) ? [-range, range] : range) as Maybe<[number, number]>;\n let datums: Datum[] = [];\n let datumIdList: number[] = [];\n if (rangeArr) {\n // 根据范围取 datum\n viewData.forEach((datum: any, i: number) => {\n if (isValid(datum[dimensionField[0]])) {\n const delta = datum[dimensionField[0]] - value;\n if (delta >= rangeArr[0] && delta <= rangeArr[1]) {\n datums.push(datum);\n datumIdList.push(i);\n }\n }\n });\n } else {\n // 根据最近距离取 datum\n let minDelta = Infinity;\n let deltaSign = 0;\n viewData.forEach((datum: any, i: number) => {\n if (isValid(datum[dimensionField[0]])) {\n const delta = Math.abs(datum[dimensionField[0]] - value);\n const sign = Math.sign(datum[dimensionField[0]] - value);\n if (delta < minDelta) {\n minDelta = delta;\n datums = [datum];\n datumIdList = [i];\n deltaSign = sign;\n } else if (delta === minDelta && sign === deltaSign) {\n datums.push(datum);\n datumIdList.push(i);\n }\n }\n });\n }\n data.push({\n series,\n datum: datums,\n key: getDimensionDataKey(series, datumIdList)\n });\n }\n }\n }\n }\n }\n }\n return data;\n};\n\nconst getDimensionDataKey = (series: ISeries, datumIdList: number[]) => `${series.id}_${datumIdList.join('_')}`;\n\nexport const getAxis = <T extends AxisComponent>(\n chart: IChart,\n filter: (cmp: T) => boolean,\n pos: ILayoutPoint\n): T[] | null => {\n const axesComponents = chart\n .getAllComponents()\n .filter(c => c.specKey === 'axes' && filter(c as T) && isInRegionBound(chart, c as T, pos)) as T[];\n if (!axesComponents.length) {\n return null;\n }\n return axesComponents;\n};\n"]}
1
+ {"version":3,"sources":["../src/event/events/dimension/util/common.ts"],"names":[],"mappings":"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","file":"common.js","sourcesContent":["/* eslint-disable max-depth */\nimport type { IChart } from '../../../../chart/interface';\nimport type { IDimensionData, IDimensionInfo } from '../interface';\nimport { isNil, array, isValid, isValidNumber } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport type { Maybe } from '@visactor/vutils';\nimport type { AxisComponent } from '../../../../component/axis/base-axis';\nimport type { CoordinateType, Datum, ILayoutPoint } from '../../../../typings';\nimport { isDiscrete } from '@visactor/vscale';\nimport type { ICartesianLinearAxisSpec } from '../../../../component';\nimport type { ISeries } from '../../../../series';\n\nconst isInBound = (pos: ILayoutPoint, min: ILayoutPoint, max: ILayoutPoint): boolean =>\n pos.x >= min.x && pos.x <= max.x && pos.y >= min.y && pos.y <= max.y;\n\nexport const isInRegionBound = (chart: IChart, axis: AxisComponent, pos: ILayoutPoint) => {\n const regionList = chart.getRegionsInIds(array(axis.layout.layoutBindRegionID));\n return regionList?.some(region => {\n const rect = region.getLayoutRect();\n const startPoint = region.getLayoutStartPoint();\n return isInBound(\n pos,\n { x: startPoint.x, y: startPoint.y },\n { x: rect.width + startPoint.x, y: rect.height + startPoint.y }\n );\n });\n};\n\nexport const isSameDimensionInfo = (a?: IDimensionInfo, b?: IDimensionInfo): boolean => {\n if (a === b) {\n return true;\n }\n if (isNil(a) || isNil(b)) {\n return false;\n }\n if (a.value !== b.value) {\n return false;\n }\n if (a.axis?.id !== b.axis?.id) {\n return false;\n }\n return true;\n};\n\n/** 给定维度项的值,获取对应维度数据 */\nexport const getDimensionData = (\n value: any,\n axis: AxisComponent,\n coordinate: CoordinateType,\n getDimensionField: (series: any) => string | string[]\n): IDimensionData[] => {\n const scale = axis.getScale();\n const isDiscreteAxis = isDiscrete(scale.type);\n\n const data: IDimensionData[] = [];\n const seriesList = axis.getOption().getChart().getSeriesInIndex(axis.getSpecInfo().seriesIndexes);\n for (const series of seriesList) {\n if (series.coordinate === coordinate) {\n const dimensionField = array(getDimensionField(series));\n const viewData = series.getViewData()?.latestData;\n if (dimensionField && viewData) {\n if (isDiscreteAxis) {\n const datums: Datum[] = [];\n const datumIdList: number[] = [];\n viewData.forEach((datum: any, i: number) => {\n if (datum[dimensionField[0]]?.toString() === value?.toString()) {\n datums.push(datum); // 获取该维度项所对应的数据\n datumIdList.push(i);\n }\n });\n data.push({\n series,\n datum: datums,\n key: getDimensionDataKey(series, datumIdList)\n });\n } else {\n // 连续轴\n if (isValid(dimensionField[1])) {\n // 直方图情况,根据范围取 datum\n const datums: Datum[] = [];\n const datumIdList: number[] = [];\n viewData.forEach((datum: any, i: number) => {\n if (\n datum[dimensionField[0]]?.toString() === value?.toString() ||\n (isValid(datum[dimensionField[0]]) &&\n isValid(datum[dimensionField[1]]) &&\n value >= datum[dimensionField[0]] &&\n value < datum[dimensionField[1]])\n ) {\n datums.push(datum); // 获取该维度项所对应的数据\n datumIdList.push(i);\n }\n });\n data.push({\n series,\n datum: datums,\n key: getDimensionDataKey(series, datumIdList)\n });\n } else {\n // 散点图情况,依据轴上的配置判断\n const range = (axis.getSpec() as ICartesianLinearAxisSpec).tooltipFilterRange;\n const rangeArr = (isValidNumber(range) ? [-range, range] : range) as Maybe<[number, number]>;\n let datums: Datum[] = [];\n let datumIdList: number[] = [];\n if (rangeArr) {\n // 根据范围取 datum\n viewData.forEach((datum: any, i: number) => {\n if (isValid(datum[dimensionField[0]])) {\n const delta = datum[dimensionField[0]] - value;\n if (delta >= rangeArr[0] && delta <= rangeArr[1]) {\n datums.push(datum);\n datumIdList.push(i);\n }\n }\n });\n } else {\n // 根据最近距离取 datum\n let minDelta = Infinity;\n let deltaSign = 0;\n viewData.forEach((datum: any, i: number) => {\n if (isValid(datum[dimensionField[0]])) {\n const delta = Math.abs(datum[dimensionField[0]] - value);\n const sign = Math.sign(datum[dimensionField[0]] - value);\n if (delta < minDelta) {\n minDelta = delta;\n datums = [datum];\n datumIdList = [i];\n deltaSign = sign;\n } else if (delta === minDelta && sign === deltaSign) {\n datums.push(datum);\n datumIdList.push(i);\n }\n }\n });\n }\n data.push({\n series,\n datum: datums,\n key: getDimensionDataKey(series, datumIdList)\n });\n }\n }\n }\n }\n }\n return data;\n};\n\nconst getDimensionDataKey = (series: ISeries, datumIdList: number[]) => `${series.id}_${datumIdList.join('_')}`;\n\nexport const getAxis = <T extends AxisComponent>(\n chart: IChart,\n filter: (cmp: T) => boolean,\n pos: ILayoutPoint\n): T[] | null => {\n const axesComponents = chart\n .getAllComponents()\n .filter(c => c.specKey === 'axes' && filter(c as T) && isInRegionBound(chart, c as T, pos)) as T[];\n if (!axesComponents.length) {\n return null;\n }\n return axesComponents;\n};\n"]}
@@ -128,7 +128,8 @@ export type EventParamsDefinition = {
128
128
  pinchstart: BaseEventParams;
129
129
  pinchend: BaseEventParams;
130
130
  swipe: BaseEventParams;
131
- dimension: DimensionEventParams;
131
+ dimensionHover: DimensionEventParams;
132
+ dimensionClick: DimensionEventParams;
132
133
  tooltipShow: TooltipEventParams;
133
134
  tooltipHide: TooltipEventParams;
134
135
  tooltipRelease: TooltipEventParams;