@visactor/vchart 1.11.0-alpha.2 → 1.11.0-alpha.3

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 (1059) hide show
  1. package/build/es5/index.js +2 -2
  2. package/build/index.js +49567 -46010
  3. package/build/index.min.js +1 -1
  4. package/build/tsconfig.tsbuildinfo +1 -1
  5. package/cjs/animation/utils.d.ts +2 -2
  6. package/cjs/animation/utils.js +2 -2
  7. package/cjs/animation/utils.js.map +1 -1
  8. package/cjs/chart/base/base-chart-transformer.js +5 -2
  9. package/cjs/chart/base/base-chart-transformer.js.map +1 -1
  10. package/cjs/chart/base/base-chart.d.ts +4 -2
  11. package/cjs/chart/base/base-chart.js +24 -11
  12. package/cjs/chart/base/base-chart.js.map +1 -1
  13. package/cjs/chart/cartesian/cartesian-transformer.js +2 -2
  14. package/cjs/chart/cartesian/cartesian-transformer.js.map +1 -1
  15. package/cjs/chart/common/common-transformer.js +3 -2
  16. package/cjs/chart/common/common-transformer.js.map +1 -1
  17. package/cjs/chart/common/interface.d.ts +2 -2
  18. package/cjs/chart/common/interface.js.map +1 -1
  19. package/cjs/chart/index.d.ts +6 -4
  20. package/cjs/chart/index.js +21 -2
  21. package/cjs/chart/index.js.map +1 -1
  22. package/cjs/chart/interface/chart.d.ts +6 -1
  23. package/cjs/chart/interface/chart.js.map +1 -1
  24. package/cjs/chart/interface/type.d.ts +2 -1
  25. package/cjs/chart/interface/type.js +1 -1
  26. package/cjs/chart/interface/type.js.map +1 -1
  27. package/cjs/chart/polar/polar-transformer.js.map +1 -1
  28. package/cjs/chart/polar/progress-like/progress-like-transformer.js +3 -3
  29. package/cjs/chart/polar/progress-like/progress-like-transformer.js.map +1 -1
  30. package/cjs/chart/radar/radar-transformer.js +3 -3
  31. package/cjs/chart/radar/radar-transformer.js.map +1 -1
  32. package/cjs/chart/range-column/range-column-transformer.js +5 -1
  33. package/cjs/chart/range-column/range-column-transformer.js.map +1 -1
  34. package/cjs/chart/rose/rose-transformer.js +2 -2
  35. package/cjs/chart/rose/rose-transformer.js.map +1 -1
  36. package/cjs/chart/sequence/sequence-transformer.js.map +1 -1
  37. package/cjs/chart/sequence/sequence.js +3 -2
  38. package/cjs/chart/sequence/sequence.js.map +1 -1
  39. package/cjs/chart/stack.js +2 -1
  40. package/cjs/chart/treemap/treemap-transformer.js.map +1 -1
  41. package/cjs/chart/util.js +4 -3
  42. package/cjs/chart/util.js.map +1 -1
  43. package/cjs/chart/venn/index.d.ts +3 -0
  44. package/cjs/chart/venn/index.js +22 -0
  45. package/cjs/chart/venn/index.js.map +1 -0
  46. package/cjs/chart/venn/interface.d.ts +6 -0
  47. package/cjs/chart/venn/interface.js +6 -0
  48. package/cjs/chart/venn/interface.js.map +1 -0
  49. package/cjs/chart/venn/venn-transformer.d.ts +7 -0
  50. package/cjs/chart/venn/venn-transformer.js +28 -0
  51. package/cjs/chart/venn/venn-transformer.js.map +1 -0
  52. package/cjs/chart/venn/venn.d.ts +14 -0
  53. package/cjs/chart/venn/venn.js +24 -0
  54. package/cjs/chart/venn/venn.js.map +1 -0
  55. package/cjs/compile/data/compilable-data.js +3 -1
  56. package/cjs/compile/data/compilable-data.js.map +1 -1
  57. package/cjs/compile/grammar-item.js +1 -2
  58. package/cjs/compile/interface/compiler.d.ts +1 -0
  59. package/cjs/compile/interface/compiler.js.map +1 -1
  60. package/cjs/compile/mark/compilable-mark.d.ts +2 -1
  61. package/cjs/compile/mark/compilable-mark.js +4 -0
  62. package/cjs/compile/mark/compilable-mark.js.map +1 -1
  63. package/cjs/compile/mark/interface.d.ts +1 -0
  64. package/cjs/compile/mark/interface.js.map +1 -1
  65. package/cjs/component/axis/base-axis.d.ts +2 -0
  66. package/cjs/component/axis/base-axis.js +13 -6
  67. package/cjs/component/axis/base-axis.js.map +1 -1
  68. package/cjs/component/axis/cartesian/axis.d.ts +1 -2
  69. package/cjs/component/axis/cartesian/axis.js +30 -38
  70. package/cjs/component/axis/cartesian/axis.js.map +1 -1
  71. package/cjs/component/axis/cartesian/interface/common.d.ts +1 -0
  72. package/cjs/component/axis/cartesian/interface/common.js.map +1 -1
  73. package/cjs/component/axis/cartesian/time-axis.js +2 -2
  74. package/cjs/component/axis/cartesian/time-axis.js.map +1 -1
  75. package/cjs/component/axis/interface/spec.d.ts +2 -0
  76. package/cjs/component/axis/interface/spec.js.map +1 -1
  77. package/cjs/component/axis/mixin/band-axis-mixin.js +2 -2
  78. package/cjs/component/axis/mixin/band-axis-mixin.js.map +1 -1
  79. package/cjs/component/axis/mixin/linear-axis-mixin.d.ts +12 -3
  80. package/cjs/component/axis/mixin/linear-axis-mixin.js +47 -15
  81. package/cjs/component/axis/mixin/linear-axis-mixin.js.map +1 -1
  82. package/cjs/component/axis/polar/axis.d.ts +0 -1
  83. package/cjs/component/axis/polar/axis.js +7 -11
  84. package/cjs/component/axis/polar/axis.js.map +1 -1
  85. package/cjs/component/axis/polar/interface/common.d.ts +1 -0
  86. package/cjs/component/axis/polar/interface/common.js.map +1 -1
  87. package/cjs/component/axis/polar/linear-axis.d.ts +5 -1
  88. package/cjs/component/axis/polar/linear-axis.js +5 -1
  89. package/cjs/component/axis/polar/linear-axis.js.map +1 -1
  90. package/cjs/component/axis/util.js +3 -3
  91. package/cjs/component/axis/util.js.map +1 -1
  92. package/cjs/component/base/base-component.d.ts +1 -0
  93. package/cjs/component/base/base-component.js +14 -6
  94. package/cjs/component/base/base-component.js.map +1 -1
  95. package/cjs/component/base/util.js +12 -12
  96. package/cjs/component/base/util.js.map +1 -1
  97. package/cjs/component/common/trigger/mobile.js +1 -2
  98. package/cjs/component/common/trigger/mobile.js.map +1 -1
  99. package/cjs/component/crosshair/base.d.ts +1 -2
  100. package/cjs/component/crosshair/base.js +4 -6
  101. package/cjs/component/crosshair/base.js.map +1 -1
  102. package/cjs/component/crosshair/cartesian.js +1 -3
  103. package/cjs/component/crosshair/cartesian.js.map +1 -1
  104. package/cjs/component/crosshair/interface/cartesian.d.ts +11 -24
  105. package/cjs/component/crosshair/interface/cartesian.js.map +1 -1
  106. package/cjs/component/crosshair/interface/polar.d.ts +7 -5
  107. package/cjs/component/crosshair/interface/polar.js.map +1 -1
  108. package/cjs/component/crosshair/polar.js +2 -5
  109. package/cjs/component/crosshair/polar.js.map +1 -1
  110. package/cjs/component/crosshair/utils/cartesian.js +14 -14
  111. package/cjs/component/crosshair/utils/cartesian.js.map +1 -1
  112. package/cjs/component/crosshair/utils/common.js +6 -5
  113. package/cjs/component/crosshair/utils/common.js.map +1 -1
  114. package/cjs/component/crosshair/utils/polar.js +17 -11
  115. package/cjs/component/crosshair/utils/polar.js.map +1 -1
  116. package/cjs/component/custom-mark/custom-mark.d.ts +11 -4
  117. package/cjs/component/custom-mark/custom-mark.js +43 -12
  118. package/cjs/component/custom-mark/custom-mark.js.map +1 -1
  119. package/cjs/component/data-zoom/data-filter-base-component.d.ts +3 -2
  120. package/cjs/component/data-zoom/data-filter-base-component.js +15 -11
  121. package/cjs/component/data-zoom/data-filter-base-component.js.map +1 -1
  122. package/cjs/component/data-zoom/data-zoom/data-zoom-transformer.js +2 -2
  123. package/cjs/component/data-zoom/data-zoom/data-zoom-transformer.js.map +1 -1
  124. package/cjs/component/data-zoom/data-zoom/data-zoom.js +3 -3
  125. package/cjs/component/data-zoom/data-zoom/data-zoom.js.map +1 -1
  126. package/cjs/component/data-zoom/interface.d.ts +1 -4
  127. package/cjs/component/data-zoom/interface.js +1 -5
  128. package/cjs/component/data-zoom/interface.js.map +1 -1
  129. package/cjs/component/data-zoom/scroll-bar/scroll-bar.js.map +1 -1
  130. package/cjs/component/data-zoom/util.js.map +1 -1
  131. package/cjs/component/geo/geo-coordinate.js +2 -2
  132. package/cjs/component/geo/geo-coordinate.js.map +1 -1
  133. package/cjs/component/index.d.ts +7 -7
  134. package/cjs/component/index.js +48 -8
  135. package/cjs/component/index.js.map +1 -1
  136. package/cjs/component/indicator/indicator.js +2 -2
  137. package/cjs/component/indicator/indicator.js.map +1 -1
  138. package/cjs/component/interface/theme.d.ts +4 -0
  139. package/cjs/component/interface/theme.js.map +1 -1
  140. package/cjs/component/interface/type.d.ts +4 -0
  141. package/cjs/component/interface/type.js +3 -1
  142. package/cjs/component/interface/type.js.map +1 -1
  143. package/cjs/component/label/label.js +4 -5
  144. package/cjs/component/label/label.js.map +1 -1
  145. package/cjs/component/label/total-label.js +10 -3
  146. package/cjs/component/label/total-label.js.map +1 -1
  147. package/cjs/component/label/util.d.ts +9 -1
  148. package/cjs/component/label/util.js +25 -9
  149. package/cjs/component/label/util.js.map +1 -1
  150. package/cjs/component/legend/base-legend.js +13 -7
  151. package/cjs/component/legend/base-legend.js.map +1 -1
  152. package/cjs/component/legend/continuous/interface.d.ts +1 -0
  153. package/cjs/component/legend/continuous/interface.js.map +1 -1
  154. package/cjs/component/legend/continuous/legend.js +4 -1
  155. package/cjs/component/legend/continuous/legend.js.map +1 -1
  156. package/cjs/component/legend/continuous/util.js +3 -3
  157. package/cjs/component/legend/continuous/util.js.map +1 -1
  158. package/cjs/component/legend/discrete/interface.d.ts +1 -0
  159. package/cjs/component/legend/discrete/interface.js.map +1 -1
  160. package/cjs/component/legend/discrete/legend.d.ts +4 -1
  161. package/cjs/component/legend/discrete/legend.js +20 -9
  162. package/cjs/component/legend/discrete/legend.js.map +1 -1
  163. package/cjs/component/legend/discrete/util.js +7 -6
  164. package/cjs/component/legend/discrete/util.js.map +1 -1
  165. package/cjs/component/legend/util.d.ts +12 -2
  166. package/cjs/component/legend/util.js +2 -2
  167. package/cjs/component/legend/util.js.map +1 -1
  168. package/cjs/component/map-label/component.js +2 -1
  169. package/cjs/component/map-label/component.js.map +1 -1
  170. package/cjs/component/marker/base-marker.d.ts +30 -44
  171. package/cjs/component/marker/base-marker.js +103 -45
  172. package/cjs/component/marker/base-marker.js.map +1 -1
  173. package/cjs/component/marker/interface.d.ts +40 -13
  174. package/cjs/component/marker/interface.js.map +1 -1
  175. package/cjs/component/marker/mark-area/base-mark-area.d.ts +18 -0
  176. package/cjs/component/marker/mark-area/base-mark-area.js +99 -0
  177. package/cjs/component/marker/mark-area/base-mark-area.js.map +1 -0
  178. package/cjs/component/marker/mark-area/cartesian-mark-area.d.ts +19 -0
  179. package/cjs/component/marker/mark-area/cartesian-mark-area.js +85 -0
  180. package/cjs/component/marker/mark-area/cartesian-mark-area.js.map +1 -0
  181. package/cjs/component/marker/mark-area/index.d.ts +2 -1
  182. package/cjs/component/marker/mark-area/index.js +2 -1
  183. package/cjs/component/marker/mark-area/index.js.map +1 -1
  184. package/cjs/component/marker/mark-area/interface/spec.d.ts +16 -1
  185. package/cjs/component/marker/mark-area/interface/spec.js.map +1 -1
  186. package/cjs/component/marker/mark-area/interface/theme.d.ts +5 -7
  187. package/cjs/component/marker/mark-area/interface/theme.js.map +1 -1
  188. package/cjs/component/marker/mark-area/polar-mark-area.d.ts +25 -0
  189. package/cjs/component/marker/mark-area/polar-mark-area.js +104 -0
  190. package/cjs/component/marker/mark-area/polar-mark-area.js.map +1 -0
  191. package/cjs/component/marker/mark-line/base-mark-line.d.ts +18 -0
  192. package/cjs/component/marker/mark-line/base-mark-line.js +116 -0
  193. package/cjs/component/marker/mark-line/base-mark-line.js.map +1 -0
  194. package/cjs/component/marker/mark-line/cartesian-mark-line.d.ts +20 -0
  195. package/cjs/component/marker/mark-line/cartesian-mark-line.js +185 -0
  196. package/cjs/component/marker/mark-line/cartesian-mark-line.js.map +1 -0
  197. package/cjs/component/marker/mark-line/index.d.ts +2 -1
  198. package/cjs/component/marker/mark-line/index.js +2 -1
  199. package/cjs/component/marker/mark-line/index.js.map +1 -1
  200. package/cjs/component/marker/mark-line/interface/spec.d.ts +26 -2
  201. package/cjs/component/marker/mark-line/interface/spec.js.map +1 -1
  202. package/cjs/component/marker/mark-line/interface/theme.d.ts +5 -7
  203. package/cjs/component/marker/mark-line/interface/theme.js.map +1 -1
  204. package/cjs/component/marker/mark-line/polar-mark-line.d.ts +23 -0
  205. package/cjs/component/marker/mark-line/polar-mark-line.js +110 -0
  206. package/cjs/component/marker/mark-line/polar-mark-line.js.map +1 -0
  207. package/cjs/component/marker/mark-point/{mark-point.d.ts → base-mark-point.d.ts} +5 -9
  208. package/cjs/component/marker/mark-point/base-mark-point.js +128 -0
  209. package/cjs/component/marker/mark-point/base-mark-point.js.map +1 -0
  210. package/cjs/component/marker/mark-point/cartesian-mark-point.d.ts +16 -0
  211. package/cjs/component/marker/mark-point/cartesian-mark-point.js +50 -0
  212. package/cjs/component/marker/mark-point/cartesian-mark-point.js.map +1 -0
  213. package/cjs/component/marker/mark-point/geo-mark-point.d.ts +14 -0
  214. package/cjs/component/marker/mark-point/geo-mark-point.js +39 -0
  215. package/cjs/component/marker/mark-point/geo-mark-point.js.map +1 -0
  216. package/cjs/component/marker/mark-point/index.d.ts +3 -1
  217. package/cjs/component/marker/mark-point/index.js +2 -1
  218. package/cjs/component/marker/mark-point/index.js.map +1 -1
  219. package/cjs/component/marker/mark-point/interface/spec.d.ts +9 -1
  220. package/cjs/component/marker/mark-point/interface/spec.js.map +1 -1
  221. package/cjs/component/marker/mark-point/interface/theme.d.ts +11 -16
  222. package/cjs/component/marker/mark-point/interface/theme.js.map +1 -1
  223. package/cjs/component/marker/mark-point/polar-mark-point.d.ts +18 -0
  224. package/cjs/component/marker/mark-point/polar-mark-point.js +47 -0
  225. package/cjs/component/marker/mark-point/polar-mark-point.js.map +1 -0
  226. package/cjs/component/marker/utils.d.ts +40 -5
  227. package/cjs/component/marker/utils.js +148 -13
  228. package/cjs/component/marker/utils.js.map +1 -1
  229. package/cjs/component/player/player.d.ts +2 -1
  230. package/cjs/component/player/player.js +16 -9
  231. package/cjs/component/player/player.js.map +1 -1
  232. package/cjs/component/player/utils/transform.js +3 -2
  233. package/cjs/component/player/utils/transform.js.map +1 -1
  234. package/cjs/component/tooltip/tooltip-transformer.js +3 -2
  235. package/cjs/component/tooltip/tooltip-transformer.js.map +1 -1
  236. package/cjs/component/tooltip/tooltip.d.ts +1 -1
  237. package/cjs/component/tooltip/tooltip.js +13 -11
  238. package/cjs/component/tooltip/tooltip.js.map +1 -1
  239. package/cjs/component/tooltip/utils/compose.js +3 -3
  240. package/cjs/component/tooltip/utils/compose.js.map +1 -1
  241. package/cjs/component/tooltip/utils/get-spec.js +2 -2
  242. package/cjs/component/tooltip/utils/get-spec.js.map +1 -1
  243. package/cjs/component/tooltip/utils/index.d.ts +1 -0
  244. package/cjs/component/tooltip/utils/index.js +1 -1
  245. package/cjs/component/tooltip/utils/index.js.map +1 -1
  246. package/cjs/{plugin/components/tooltip-handler → component/tooltip}/utils/pattern.d.ts +3 -3
  247. package/cjs/component/tooltip/utils/pattern.js.map +1 -0
  248. package/cjs/component/tooltip/utils/show-tooltip.d.ts +20 -3
  249. package/cjs/component/tooltip/utils/show-tooltip.js +107 -93
  250. package/cjs/component/tooltip/utils/show-tooltip.js.map +1 -1
  251. package/cjs/core/factory.d.ts +1 -1
  252. package/cjs/core/factory.js +0 -1
  253. package/cjs/core/factory.js.map +1 -1
  254. package/cjs/core/index.d.ts +1 -1
  255. package/cjs/core/index.js +1 -1
  256. package/cjs/core/index.js.map +1 -1
  257. package/cjs/core/interface.d.ts +5 -1
  258. package/cjs/core/interface.js.map +1 -1
  259. package/cjs/core/vchart.d.ts +2 -2
  260. package/cjs/core/vchart.js +47 -24
  261. package/cjs/core/vchart.js.map +1 -1
  262. package/cjs/data/transforms/aggregation.d.ts +12 -7
  263. package/cjs/data/transforms/aggregation.js +16 -1
  264. package/cjs/data/transforms/aggregation.js.map +1 -1
  265. package/cjs/data/transforms/invalid-travel.d.ts +1 -1
  266. package/cjs/data/transforms/invalid-travel.js +4 -2
  267. package/cjs/data/transforms/invalid-travel.js.map +1 -1
  268. package/cjs/data/transforms/legend-data/continuous/continuous.js +3 -2
  269. package/cjs/data/transforms/legend-data/continuous/continuous.js.map +1 -1
  270. package/cjs/data/transforms/legend-data/discrete/discrete.js +2 -2
  271. package/cjs/data/transforms/legend-data/discrete/discrete.js.map +1 -1
  272. package/cjs/data/transforms/legend-data/discrete/interface.d.ts +2 -0
  273. package/cjs/data/transforms/legend-data/discrete/interface.js.map +1 -1
  274. package/cjs/data/transforms/pie.js +3 -2
  275. package/cjs/data/transforms/pie.js.map +1 -1
  276. package/cjs/data/transforms/waterfall.js +4 -2
  277. package/cjs/data/transforms/waterfall.js.map +1 -1
  278. package/cjs/event/event-dispatcher.js +8 -1
  279. package/cjs/event/event-dispatcher.js.map +1 -1
  280. package/cjs/event/interface.d.ts +2 -0
  281. package/cjs/event/interface.js.map +1 -1
  282. package/cjs/index-lark.js +1 -1
  283. package/cjs/index-lark.js.map +1 -1
  284. package/cjs/index-wx.js +1 -1
  285. package/cjs/index-wx.js.map +1 -1
  286. package/cjs/layout/base-layout.js +6 -5
  287. package/cjs/layout/base-layout.js.map +1 -1
  288. package/cjs/layout/grid-layout/grid-layout.d.ts +1 -1
  289. package/cjs/layout/grid-layout/grid-layout.js +4 -4
  290. package/cjs/layout/grid-layout/grid-layout.js.map +1 -1
  291. package/cjs/layout/layout-item.js +1 -1
  292. package/cjs/layout/layout-item.js.map +1 -1
  293. package/cjs/mark/base/base-mark.js +2 -2
  294. package/cjs/mark/base/base-mark.js.map +1 -1
  295. package/cjs/mark/index.d.ts +20 -20
  296. package/cjs/mark/index.js +95 -22
  297. package/cjs/mark/index.js.map +1 -1
  298. package/cjs/model/base-model-transformer.js +2 -2
  299. package/cjs/model/base-model-transformer.js.map +1 -1
  300. package/cjs/model/base-model.js +1 -1
  301. package/cjs/model/base-model.js.map +1 -1
  302. package/cjs/model/interface.d.ts +1 -0
  303. package/cjs/model/interface.js.map +1 -1
  304. package/cjs/model/layout-model.js +3 -2
  305. package/cjs/model/layout-model.js.map +1 -1
  306. package/cjs/plugin/base/base-plugin-service.d.ts +2 -0
  307. package/cjs/plugin/base/base-plugin-service.js +11 -1
  308. package/cjs/plugin/base/base-plugin-service.js.map +1 -1
  309. package/cjs/plugin/base/interface.d.ts +3 -0
  310. package/cjs/plugin/base/interface.js.map +1 -1
  311. package/cjs/plugin/chart/media-query/media-query.js +4 -4
  312. package/cjs/plugin/chart/media-query/media-query.js.map +1 -1
  313. package/cjs/plugin/chart/media-query/util/action.js +4 -3
  314. package/cjs/plugin/chart/media-query/util/action.js.map +1 -1
  315. package/cjs/plugin/components/axis-sync/zero-align-transform.js +4 -4
  316. package/cjs/plugin/components/axis-sync/zero-align-transform.js.map +1 -1
  317. package/cjs/plugin/components/tooltip-handler/base.d.ts +1 -1
  318. package/cjs/plugin/components/tooltip-handler/base.js +3 -3
  319. package/cjs/plugin/components/tooltip-handler/base.js.map +1 -1
  320. package/cjs/plugin/components/tooltip-handler/dom/dom-tooltip-handler.js.map +1 -1
  321. package/cjs/plugin/components/tooltip-handler/dom/model/content-column-model.js +5 -5
  322. package/cjs/plugin/components/tooltip-handler/dom/model/content-column-model.js.map +1 -1
  323. package/cjs/plugin/components/tooltip-handler/dom/model/content-model.js +2 -2
  324. package/cjs/plugin/components/tooltip-handler/dom/model/content-model.js.map +1 -1
  325. package/cjs/plugin/components/tooltip-handler/dom/model/title-model.js +2 -2
  326. package/cjs/plugin/components/tooltip-handler/dom/model/title-model.js.map +1 -1
  327. package/cjs/plugin/components/tooltip-handler/dom/model/tooltip-model.js +2 -2
  328. package/cjs/plugin/components/tooltip-handler/dom/model/tooltip-model.js.map +1 -1
  329. package/cjs/plugin/components/tooltip-handler/dom/utils/style.js +4 -4
  330. package/cjs/plugin/components/tooltip-handler/dom/utils/style.js.map +1 -1
  331. package/cjs/plugin/components/tooltip-handler/utils/attribute.js +4 -4
  332. package/cjs/plugin/components/tooltip-handler/utils/attribute.js.map +1 -1
  333. package/cjs/plugin/components/tooltip-handler/utils/index.d.ts +0 -1
  334. package/cjs/plugin/components/tooltip-handler/utils/index.js +2 -2
  335. package/cjs/plugin/components/tooltip-handler/utils/index.js.map +1 -1
  336. package/cjs/region/interface.d.ts +2 -0
  337. package/cjs/region/interface.js.map +1 -1
  338. package/cjs/region/region.d.ts +1 -0
  339. package/cjs/region/region.js +5 -1
  340. package/cjs/region/region.js.map +1 -1
  341. package/cjs/series/area/area-transformer.js +6 -5
  342. package/cjs/series/area/area-transformer.js.map +1 -1
  343. package/cjs/series/area/area.js +3 -2
  344. package/cjs/series/area/area.js.map +1 -1
  345. package/cjs/series/bar/bar-3d.js +2 -1
  346. package/cjs/series/bar/bar-3d.js.map +1 -1
  347. package/cjs/series/bar/bar.js +3 -2
  348. package/cjs/series/bar/bar.js.map +1 -1
  349. package/cjs/series/base/base-series-transformer.js +4 -4
  350. package/cjs/series/base/base-series-transformer.js.map +1 -1
  351. package/cjs/series/base/base-series.d.ts +9 -17
  352. package/cjs/series/base/base-series.js +45 -27
  353. package/cjs/series/base/base-series.js.map +1 -1
  354. package/cjs/series/base/tooltip-helper.d.ts +8 -5
  355. package/cjs/series/base/tooltip-helper.js +31 -23
  356. package/cjs/series/base/tooltip-helper.js.map +1 -1
  357. package/cjs/series/box-plot/box-plot.js +2 -1
  358. package/cjs/series/box-plot/box-plot.js.map +1 -1
  359. package/cjs/series/box-plot/tooltip-helper.d.ts +1 -1
  360. package/cjs/series/box-plot/tooltip-helper.js +21 -21
  361. package/cjs/series/box-plot/tooltip-helper.js.map +1 -1
  362. package/cjs/series/cartesian/cartesian.d.ts +1 -1
  363. package/cjs/series/cartesian/cartesian.js +14 -4
  364. package/cjs/series/cartesian/cartesian.js.map +1 -1
  365. package/cjs/series/circle-packing/tooltip-helper.d.ts +1 -1
  366. package/cjs/series/circle-packing/tooltip-helper.js +1 -1
  367. package/cjs/series/circle-packing/tooltip-helper.js.map +1 -1
  368. package/cjs/series/dot/dot.js +2 -2
  369. package/cjs/series/dot/dot.js.map +1 -1
  370. package/cjs/series/dot/tooltip-helper.js +12 -12
  371. package/cjs/series/dot/tooltip-helper.js.map +1 -1
  372. package/cjs/series/funnel/funnel.js +8 -4
  373. package/cjs/series/funnel/funnel.js.map +1 -1
  374. package/cjs/series/funnel/tooltip-helper.d.ts +3 -3
  375. package/cjs/series/funnel/tooltip-helper.js +3 -3
  376. package/cjs/series/funnel/tooltip-helper.js.map +1 -1
  377. package/cjs/series/gauge/gauge-pointer.js +4 -3
  378. package/cjs/series/gauge/gauge-pointer.js.map +1 -1
  379. package/cjs/series/gauge/gauge.js +3 -3
  380. package/cjs/series/gauge/gauge.js.map +1 -1
  381. package/cjs/series/geo/geo.d.ts +1 -0
  382. package/cjs/series/geo/geo.js +4 -2
  383. package/cjs/series/geo/geo.js.map +1 -1
  384. package/cjs/series/heatmap/heatmap.js +2 -1
  385. package/cjs/series/heatmap/heatmap.js.map +1 -1
  386. package/cjs/series/index.d.ts +7 -3
  387. package/cjs/series/index.js +30 -2
  388. package/cjs/series/index.js.map +1 -1
  389. package/cjs/series/interface/common.d.ts +3 -2
  390. package/cjs/series/interface/common.js.map +1 -1
  391. package/cjs/series/interface/series.d.ts +7 -0
  392. package/cjs/series/interface/series.js.map +1 -1
  393. package/cjs/series/interface/theme.d.ts +2 -0
  394. package/cjs/series/interface/theme.js +3 -2
  395. package/cjs/series/interface/theme.js.map +1 -1
  396. package/cjs/series/interface/tooltip-helper.d.ts +8 -5
  397. package/cjs/series/interface/tooltip-helper.js.map +1 -1
  398. package/cjs/series/interface/type.d.ts +6 -2
  399. package/cjs/series/interface/type.js +3 -2
  400. package/cjs/series/interface/type.js.map +1 -1
  401. package/cjs/series/line/line.js +3 -2
  402. package/cjs/series/line/line.js.map +1 -1
  403. package/cjs/series/link/link.js +3 -2
  404. package/cjs/series/link/link.js.map +1 -1
  405. package/cjs/series/link/tooltip-helper.js +8 -8
  406. package/cjs/series/link/tooltip-helper.js.map +1 -1
  407. package/cjs/series/liquid/tooltip-helper.js +2 -2
  408. package/cjs/series/liquid/tooltip-helper.js.map +1 -1
  409. package/cjs/series/map/geo-source.d.ts +3 -1
  410. package/cjs/series/map/geo-source.js +6 -1
  411. package/cjs/series/map/geo-source.js.map +1 -1
  412. package/cjs/series/map/tooltip-helper.d.ts +1 -1
  413. package/cjs/series/map/tooltip-helper.js +1 -1
  414. package/cjs/series/map/tooltip-helper.js.map +1 -1
  415. package/cjs/series/mixin/line-mixin.js +2 -2
  416. package/cjs/series/mixin/line-mixin.js.map +1 -1
  417. package/cjs/series/pie/pie-transformer.js +4 -4
  418. package/cjs/series/pie/pie-transformer.js.map +1 -1
  419. package/cjs/series/polar/polar.d.ts +2 -2
  420. package/cjs/series/polar/polar.js +17 -6
  421. package/cjs/series/polar/polar.js.map +1 -1
  422. package/cjs/series/progress/circular/circular.js +4 -2
  423. package/cjs/series/progress/circular/circular.js.map +1 -1
  424. package/cjs/series/radar/radar.js +5 -4
  425. package/cjs/series/radar/radar.js.map +1 -1
  426. package/cjs/series/range-area/range-area.d.ts +0 -2
  427. package/cjs/series/range-area/range-area.js +3 -6
  428. package/cjs/series/range-area/range-area.js.map +1 -1
  429. package/cjs/series/range-area/tooltip-helper.js +10 -10
  430. package/cjs/series/range-area/tooltip-helper.js.map +1 -1
  431. package/cjs/series/range-column/3d/range-column-3d.js +3 -2
  432. package/cjs/series/range-column/3d/range-column-3d.js.map +1 -1
  433. package/cjs/series/range-column/range-column.js +3 -2
  434. package/cjs/series/range-column/range-column.js.map +1 -1
  435. package/cjs/series/range-column/tooltip-helper.js +5 -5
  436. package/cjs/series/range-column/tooltip-helper.js.map +1 -1
  437. package/cjs/series/rose/rose.js +3 -2
  438. package/cjs/series/rose/rose.js.map +1 -1
  439. package/cjs/series/sankey/sankey.d.ts +2 -1
  440. package/cjs/series/sankey/sankey.js +51 -118
  441. package/cjs/series/sankey/sankey.js.map +1 -1
  442. package/cjs/series/sankey/tooltip-helper.js +9 -9
  443. package/cjs/series/sankey/tooltip-helper.js.map +1 -1
  444. package/cjs/series/scatter/scatter.js +2 -1
  445. package/cjs/series/scatter/scatter.js.map +1 -1
  446. package/cjs/series/sunburst/tooltip-helper.d.ts +1 -1
  447. package/cjs/series/sunburst/tooltip-helper.js +1 -1
  448. package/cjs/series/sunburst/tooltip-helper.js.map +1 -1
  449. package/cjs/series/treemap/tooltip-helper.d.ts +1 -1
  450. package/cjs/series/treemap/tooltip-helper.js +1 -1
  451. package/cjs/series/treemap/tooltip-helper.js.map +1 -1
  452. package/cjs/series/util/stack.js +29 -15
  453. package/cjs/series/util/stack.js.map +1 -1
  454. package/cjs/series/venn/animation.d.ts +6 -0
  455. package/cjs/series/venn/animation.js +76 -0
  456. package/cjs/series/venn/animation.js.map +1 -0
  457. package/cjs/series/venn/constant.d.ts +2 -0
  458. package/cjs/series/venn/constant.js +23 -0
  459. package/cjs/series/venn/constant.js.map +1 -0
  460. package/cjs/series/venn/interface.d.ts +21 -0
  461. package/cjs/series/venn/interface.js +6 -0
  462. package/cjs/series/venn/interface.js.map +1 -0
  463. package/cjs/series/venn/tooltip-helper.d.ts +5 -0
  464. package/cjs/series/venn/tooltip-helper.js +17 -0
  465. package/cjs/series/venn/tooltip-helper.js.map +1 -0
  466. package/cjs/series/venn/util.d.ts +1 -0
  467. package/cjs/series/venn/util.js +11 -0
  468. package/cjs/series/venn/util.js.map +1 -0
  469. package/cjs/series/venn/venn-transform.d.ts +6 -0
  470. package/cjs/series/venn/venn-transform.js +16 -0
  471. package/cjs/series/venn/venn-transform.js.map +1 -0
  472. package/cjs/series/venn/venn.d.ts +63 -0
  473. package/cjs/series/venn/venn.js +219 -0
  474. package/cjs/series/venn/venn.js.map +1 -0
  475. package/cjs/series/waterfall/interface.d.ts +6 -1
  476. package/cjs/series/waterfall/interface.js.map +1 -1
  477. package/cjs/series/waterfall/waterfall.d.ts +9 -0
  478. package/cjs/series/waterfall/waterfall.js +23 -4
  479. package/cjs/series/waterfall/waterfall.js.map +1 -1
  480. package/cjs/series/word-cloud/base.d.ts +2 -0
  481. package/cjs/series/word-cloud/base.js +11 -16
  482. package/cjs/series/word-cloud/base.js.map +1 -1
  483. package/cjs/theme/builtin/common/component/index.js +4 -0
  484. package/cjs/theme/builtin/common/component/index.js.map +1 -1
  485. package/cjs/theme/builtin/common/series/index.js +3 -2
  486. package/cjs/theme/builtin/common/series/index.js.map +1 -1
  487. package/cjs/theme/builtin/common/series/venn.d.ts +2 -0
  488. package/cjs/theme/builtin/common/series/venn.js +60 -0
  489. package/cjs/theme/builtin/common/series/venn.js.map +1 -0
  490. package/cjs/typings/spec/chart.d.ts +2 -0
  491. package/cjs/typings/spec/chart.js.map +1 -1
  492. package/cjs/typings/spec/common.d.ts +5 -2
  493. package/cjs/typings/spec/common.js.map +1 -1
  494. package/cjs/typings/tooltip/tooltip.d.ts +1 -0
  495. package/cjs/typings/tooltip/tooltip.js.map +1 -1
  496. package/cjs/util/data.d.ts +21 -4
  497. package/cjs/util/data.js +42 -14
  498. package/cjs/util/data.js.map +1 -1
  499. package/cjs/util/index.d.ts +1 -0
  500. package/cjs/util/index.js +4 -4
  501. package/cjs/util/index.js.map +1 -1
  502. package/cjs/util/math.d.ts +1 -1
  503. package/cjs/util/math.js +2 -3
  504. package/cjs/util/math.js.map +1 -1
  505. package/cjs/util/spec/index.d.ts +0 -5
  506. package/cjs/util/spec/index.js +1 -4
  507. package/cjs/util/spec/index.js.map +1 -1
  508. package/cjs/util/spec/transform.js.map +1 -1
  509. package/cjs/util/theme/merge-theme.js +3 -3
  510. package/cjs/util/theme/merge-theme.js.map +1 -1
  511. package/cjs/vchart-all.js +2 -2
  512. package/cjs/vchart-all.js.map +1 -1
  513. package/esm/animation/utils.d.ts +2 -2
  514. package/esm/animation/utils.js +1 -1
  515. package/esm/animation/utils.js.map +1 -1
  516. package/esm/chart/base/base-chart-transformer.js +5 -1
  517. package/esm/chart/base/base-chart-transformer.js.map +1 -1
  518. package/esm/chart/base/base-chart.d.ts +4 -2
  519. package/esm/chart/base/base-chart.js +24 -11
  520. package/esm/chart/base/base-chart.js.map +1 -1
  521. package/esm/chart/cartesian/cartesian-transformer.js +3 -1
  522. package/esm/chart/cartesian/cartesian-transformer.js.map +1 -1
  523. package/esm/chart/common/common-transformer.js +3 -1
  524. package/esm/chart/common/common-transformer.js.map +1 -1
  525. package/esm/chart/common/interface.d.ts +2 -2
  526. package/esm/chart/common/interface.js.map +1 -1
  527. package/esm/chart/index.d.ts +6 -4
  528. package/esm/chart/index.js +5 -3
  529. package/esm/chart/index.js.map +1 -1
  530. package/esm/chart/interface/chart.d.ts +6 -1
  531. package/esm/chart/interface/chart.js.map +1 -1
  532. package/esm/chart/interface/type.d.ts +2 -1
  533. package/esm/chart/interface/type.js +1 -1
  534. package/esm/chart/interface/type.js.map +1 -1
  535. package/esm/chart/polar/polar-transformer.js.map +1 -1
  536. package/esm/chart/polar/progress-like/progress-like-transformer.js +1 -1
  537. package/esm/chart/polar/progress-like/progress-like-transformer.js.map +1 -1
  538. package/esm/chart/radar/radar-transformer.js +3 -1
  539. package/esm/chart/radar/radar-transformer.js.map +1 -1
  540. package/esm/chart/range-column/range-column-transformer.js +5 -1
  541. package/esm/chart/range-column/range-column-transformer.js.map +1 -1
  542. package/esm/chart/rose/rose-transformer.js +1 -1
  543. package/esm/chart/rose/rose-transformer.js.map +1 -1
  544. package/esm/chart/sequence/sequence-transformer.js.map +1 -1
  545. package/esm/chart/sequence/sequence.js +4 -1
  546. package/esm/chart/sequence/sequence.js.map +1 -1
  547. package/esm/chart/stack.js +2 -1
  548. package/esm/chart/treemap/treemap-transformer.js.map +1 -1
  549. package/esm/chart/util.js +5 -2
  550. package/esm/chart/util.js.map +1 -1
  551. package/esm/chart/venn/index.d.ts +3 -0
  552. package/esm/chart/venn/index.js +6 -0
  553. package/esm/chart/venn/index.js.map +1 -0
  554. package/esm/chart/venn/interface.d.ts +6 -0
  555. package/esm/chart/venn/interface.js +2 -0
  556. package/esm/chart/venn/interface.js.map +1 -0
  557. package/esm/chart/venn/venn-transformer.d.ts +7 -0
  558. package/esm/chart/venn/venn-transformer.js +20 -0
  559. package/esm/chart/venn/venn-transformer.js.map +1 -0
  560. package/esm/chart/venn/venn.d.ts +14 -0
  561. package/esm/chart/venn/venn.js +24 -0
  562. package/esm/chart/venn/venn.js.map +1 -0
  563. package/esm/compile/data/compilable-data.js +3 -1
  564. package/esm/compile/data/compilable-data.js.map +1 -1
  565. package/esm/compile/grammar-item.js +1 -2
  566. package/esm/compile/interface/compiler.d.ts +1 -0
  567. package/esm/compile/interface/compiler.js.map +1 -1
  568. package/esm/compile/mark/compilable-mark.d.ts +2 -1
  569. package/esm/compile/mark/compilable-mark.js +4 -0
  570. package/esm/compile/mark/compilable-mark.js.map +1 -1
  571. package/esm/compile/mark/interface.d.ts +1 -0
  572. package/esm/compile/mark/interface.js.map +1 -1
  573. package/esm/component/axis/base-axis.d.ts +2 -0
  574. package/esm/component/axis/base-axis.js +8 -1
  575. package/esm/component/axis/base-axis.js.map +1 -1
  576. package/esm/component/axis/cartesian/axis.d.ts +1 -2
  577. package/esm/component/axis/cartesian/axis.js +30 -36
  578. package/esm/component/axis/cartesian/axis.js.map +1 -1
  579. package/esm/component/axis/cartesian/interface/common.d.ts +1 -0
  580. package/esm/component/axis/cartesian/interface/common.js.map +1 -1
  581. package/esm/component/axis/cartesian/time-axis.js +2 -2
  582. package/esm/component/axis/cartesian/time-axis.js.map +1 -1
  583. package/esm/component/axis/interface/spec.d.ts +2 -0
  584. package/esm/component/axis/interface/spec.js.map +1 -1
  585. package/esm/component/axis/mixin/band-axis-mixin.js +2 -2
  586. package/esm/component/axis/mixin/band-axis-mixin.js.map +1 -1
  587. package/esm/component/axis/mixin/linear-axis-mixin.d.ts +12 -3
  588. package/esm/component/axis/mixin/linear-axis-mixin.js +39 -11
  589. package/esm/component/axis/mixin/linear-axis-mixin.js.map +1 -1
  590. package/esm/component/axis/polar/axis.d.ts +0 -1
  591. package/esm/component/axis/polar/axis.js +7 -11
  592. package/esm/component/axis/polar/axis.js.map +1 -1
  593. package/esm/component/axis/polar/interface/common.d.ts +1 -0
  594. package/esm/component/axis/polar/interface/common.js.map +1 -1
  595. package/esm/component/axis/polar/linear-axis.d.ts +5 -1
  596. package/esm/component/axis/polar/linear-axis.js +5 -1
  597. package/esm/component/axis/polar/linear-axis.js.map +1 -1
  598. package/esm/component/axis/util.js +1 -1
  599. package/esm/component/axis/util.js.map +1 -1
  600. package/esm/component/base/base-component.d.ts +1 -0
  601. package/esm/component/base/base-component.js +14 -6
  602. package/esm/component/base/base-component.js.map +1 -1
  603. package/esm/component/base/util.js +2 -2
  604. package/esm/component/base/util.js.map +1 -1
  605. package/esm/component/common/trigger/mobile.js +1 -2
  606. package/esm/component/common/trigger/mobile.js.map +1 -1
  607. package/esm/component/crosshair/base.d.ts +1 -2
  608. package/esm/component/crosshair/base.js +4 -6
  609. package/esm/component/crosshair/base.js.map +1 -1
  610. package/esm/component/crosshair/cartesian.js +3 -5
  611. package/esm/component/crosshair/cartesian.js.map +1 -1
  612. package/esm/component/crosshair/interface/cartesian.d.ts +11 -24
  613. package/esm/component/crosshair/interface/cartesian.js.map +1 -1
  614. package/esm/component/crosshair/interface/polar.d.ts +7 -5
  615. package/esm/component/crosshair/interface/polar.js.map +1 -1
  616. package/esm/component/crosshair/polar.js +4 -7
  617. package/esm/component/crosshair/polar.js.map +1 -1
  618. package/esm/component/crosshair/utils/cartesian.js +14 -14
  619. package/esm/component/crosshair/utils/cartesian.js.map +1 -1
  620. package/esm/component/crosshair/utils/common.js +2 -2
  621. package/esm/component/crosshair/utils/common.js.map +1 -1
  622. package/esm/component/crosshair/utils/polar.js +15 -9
  623. package/esm/component/crosshair/utils/polar.js.map +1 -1
  624. package/esm/component/custom-mark/custom-mark.d.ts +11 -4
  625. package/esm/component/custom-mark/custom-mark.js +43 -14
  626. package/esm/component/custom-mark/custom-mark.js.map +1 -1
  627. package/esm/component/data-zoom/data-filter-base-component.d.ts +3 -2
  628. package/esm/component/data-zoom/data-filter-base-component.js +15 -11
  629. package/esm/component/data-zoom/data-filter-base-component.js.map +1 -1
  630. package/esm/component/data-zoom/data-zoom/data-zoom-transformer.js +3 -1
  631. package/esm/component/data-zoom/data-zoom/data-zoom-transformer.js.map +1 -1
  632. package/esm/component/data-zoom/data-zoom/data-zoom.js +1 -1
  633. package/esm/component/data-zoom/data-zoom/data-zoom.js.map +1 -1
  634. package/esm/component/data-zoom/interface.d.ts +1 -4
  635. package/esm/component/data-zoom/interface.js +1 -5
  636. package/esm/component/data-zoom/interface.js.map +1 -1
  637. package/esm/component/data-zoom/scroll-bar/scroll-bar.js.map +1 -1
  638. package/esm/component/data-zoom/util.js.map +1 -1
  639. package/esm/component/geo/geo-coordinate.js +1 -1
  640. package/esm/component/geo/geo-coordinate.js.map +1 -1
  641. package/esm/component/index.d.ts +7 -7
  642. package/esm/component/index.js +5 -5
  643. package/esm/component/index.js.map +1 -1
  644. package/esm/component/indicator/indicator.js +1 -1
  645. package/esm/component/indicator/indicator.js.map +1 -1
  646. package/esm/component/interface/theme.d.ts +4 -0
  647. package/esm/component/interface/theme.js.map +1 -1
  648. package/esm/component/interface/type.d.ts +4 -0
  649. package/esm/component/interface/type.js +3 -1
  650. package/esm/component/interface/type.js.map +1 -1
  651. package/esm/component/label/label.js +3 -4
  652. package/esm/component/label/label.js.map +1 -1
  653. package/esm/component/label/total-label.js +9 -2
  654. package/esm/component/label/total-label.js.map +1 -1
  655. package/esm/component/label/util.d.ts +9 -1
  656. package/esm/component/label/util.js +21 -6
  657. package/esm/component/label/util.js.map +1 -1
  658. package/esm/component/legend/base-legend.js +9 -4
  659. package/esm/component/legend/base-legend.js.map +1 -1
  660. package/esm/component/legend/continuous/interface.d.ts +1 -0
  661. package/esm/component/legend/continuous/interface.js.map +1 -1
  662. package/esm/component/legend/continuous/legend.js +5 -2
  663. package/esm/component/legend/continuous/legend.js.map +1 -1
  664. package/esm/component/legend/continuous/util.js +1 -1
  665. package/esm/component/legend/continuous/util.js.map +1 -1
  666. package/esm/component/legend/discrete/interface.d.ts +1 -0
  667. package/esm/component/legend/discrete/interface.js.map +1 -1
  668. package/esm/component/legend/discrete/legend.d.ts +4 -1
  669. package/esm/component/legend/discrete/legend.js +20 -9
  670. package/esm/component/legend/discrete/legend.js.map +1 -1
  671. package/esm/component/legend/discrete/util.js +4 -4
  672. package/esm/component/legend/discrete/util.js.map +1 -1
  673. package/esm/component/legend/util.d.ts +12 -2
  674. package/esm/component/legend/util.js +1 -1
  675. package/esm/component/legend/util.js.map +1 -1
  676. package/esm/component/map-label/component.js +2 -1
  677. package/esm/component/map-label/component.js.map +1 -1
  678. package/esm/component/marker/base-marker.d.ts +30 -44
  679. package/esm/component/marker/base-marker.js +101 -42
  680. package/esm/component/marker/base-marker.js.map +1 -1
  681. package/esm/component/marker/interface.d.ts +40 -13
  682. package/esm/component/marker/interface.js.map +1 -1
  683. package/esm/component/marker/mark-area/base-mark-area.d.ts +18 -0
  684. package/esm/component/marker/mark-area/base-mark-area.js +105 -0
  685. package/esm/component/marker/mark-area/base-mark-area.js.map +1 -0
  686. package/esm/component/marker/mark-area/cartesian-mark-area.d.ts +19 -0
  687. package/esm/component/marker/mark-area/cartesian-mark-area.js +82 -0
  688. package/esm/component/marker/mark-area/cartesian-mark-area.js.map +1 -0
  689. package/esm/component/marker/mark-area/index.d.ts +2 -1
  690. package/esm/component/marker/mark-area/index.js +3 -1
  691. package/esm/component/marker/mark-area/index.js.map +1 -1
  692. package/esm/component/marker/mark-area/interface/spec.d.ts +16 -1
  693. package/esm/component/marker/mark-area/interface/spec.js.map +1 -1
  694. package/esm/component/marker/mark-area/interface/theme.d.ts +5 -7
  695. package/esm/component/marker/mark-area/interface/theme.js.map +1 -1
  696. package/esm/component/marker/mark-area/polar-mark-area.d.ts +25 -0
  697. package/esm/component/marker/mark-area/polar-mark-area.js +102 -0
  698. package/esm/component/marker/mark-area/polar-mark-area.js.map +1 -0
  699. package/esm/component/marker/mark-line/base-mark-line.d.ts +18 -0
  700. package/esm/component/marker/mark-line/base-mark-line.js +124 -0
  701. package/esm/component/marker/mark-line/base-mark-line.js.map +1 -0
  702. package/esm/component/marker/mark-line/cartesian-mark-line.d.ts +20 -0
  703. package/esm/component/marker/mark-line/cartesian-mark-line.js +185 -0
  704. package/esm/component/marker/mark-line/cartesian-mark-line.js.map +1 -0
  705. package/esm/component/marker/mark-line/index.d.ts +2 -1
  706. package/esm/component/marker/mark-line/index.js +3 -1
  707. package/esm/component/marker/mark-line/index.js.map +1 -1
  708. package/esm/component/marker/mark-line/interface/spec.d.ts +26 -2
  709. package/esm/component/marker/mark-line/interface/spec.js.map +1 -1
  710. package/esm/component/marker/mark-line/interface/theme.d.ts +5 -7
  711. package/esm/component/marker/mark-line/interface/theme.js.map +1 -1
  712. package/esm/component/marker/mark-line/polar-mark-line.d.ts +23 -0
  713. package/esm/component/marker/mark-line/polar-mark-line.js +108 -0
  714. package/esm/component/marker/mark-line/polar-mark-line.js.map +1 -0
  715. package/esm/component/marker/mark-point/{mark-point.d.ts → base-mark-point.d.ts} +5 -9
  716. package/esm/component/marker/mark-point/base-mark-point.js +139 -0
  717. package/esm/component/marker/mark-point/base-mark-point.js.map +1 -0
  718. package/esm/component/marker/mark-point/cartesian-mark-point.d.ts +16 -0
  719. package/esm/component/marker/mark-point/cartesian-mark-point.js +47 -0
  720. package/esm/component/marker/mark-point/cartesian-mark-point.js.map +1 -0
  721. package/esm/component/marker/mark-point/geo-mark-point.d.ts +14 -0
  722. package/esm/component/marker/mark-point/geo-mark-point.js +38 -0
  723. package/esm/component/marker/mark-point/geo-mark-point.js.map +1 -0
  724. package/esm/component/marker/mark-point/index.d.ts +3 -1
  725. package/esm/component/marker/mark-point/index.js +5 -1
  726. package/esm/component/marker/mark-point/index.js.map +1 -1
  727. package/esm/component/marker/mark-point/interface/spec.d.ts +9 -1
  728. package/esm/component/marker/mark-point/interface/spec.js.map +1 -1
  729. package/esm/component/marker/mark-point/interface/theme.d.ts +11 -16
  730. package/esm/component/marker/mark-point/interface/theme.js.map +1 -1
  731. package/esm/component/marker/mark-point/polar-mark-point.d.ts +18 -0
  732. package/esm/component/marker/mark-point/polar-mark-point.js +47 -0
  733. package/esm/component/marker/mark-point/polar-mark-point.js.map +1 -0
  734. package/esm/component/marker/utils.d.ts +40 -5
  735. package/esm/component/marker/utils.js +137 -8
  736. package/esm/component/marker/utils.js.map +1 -1
  737. package/esm/component/player/player.d.ts +2 -1
  738. package/esm/component/player/player.js +16 -9
  739. package/esm/component/player/player.js.map +1 -1
  740. package/esm/component/player/utils/transform.js +3 -2
  741. package/esm/component/player/utils/transform.js.map +1 -1
  742. package/esm/component/tooltip/tooltip-transformer.js +3 -1
  743. package/esm/component/tooltip/tooltip-transformer.js.map +1 -1
  744. package/esm/component/tooltip/tooltip.d.ts +1 -1
  745. package/esm/component/tooltip/tooltip.js +13 -11
  746. package/esm/component/tooltip/tooltip.js.map +1 -1
  747. package/esm/component/tooltip/utils/compose.js +3 -3
  748. package/esm/component/tooltip/utils/compose.js.map +1 -1
  749. package/esm/component/tooltip/utils/get-spec.js +2 -2
  750. package/esm/component/tooltip/utils/get-spec.js.map +1 -1
  751. package/esm/component/tooltip/utils/index.d.ts +1 -0
  752. package/esm/component/tooltip/utils/index.js +2 -0
  753. package/esm/component/tooltip/utils/index.js.map +1 -1
  754. package/esm/{plugin/components/tooltip-handler → component/tooltip}/utils/pattern.d.ts +3 -3
  755. package/esm/component/tooltip/utils/pattern.js.map +1 -0
  756. package/esm/component/tooltip/utils/show-tooltip.d.ts +20 -3
  757. package/esm/component/tooltip/utils/show-tooltip.js +99 -87
  758. package/esm/component/tooltip/utils/show-tooltip.js.map +1 -1
  759. package/esm/core/factory.d.ts +1 -1
  760. package/esm/core/factory.js +1 -2
  761. package/esm/core/factory.js.map +1 -1
  762. package/esm/core/index.d.ts +1 -1
  763. package/esm/core/index.js +1 -1
  764. package/esm/core/index.js.map +1 -1
  765. package/esm/core/interface.d.ts +5 -1
  766. package/esm/core/interface.js.map +1 -1
  767. package/esm/core/vchart.d.ts +2 -2
  768. package/esm/core/vchart.js +42 -21
  769. package/esm/core/vchart.js.map +1 -1
  770. package/esm/data/transforms/aggregation.d.ts +12 -7
  771. package/esm/data/transforms/aggregation.js +16 -1
  772. package/esm/data/transforms/aggregation.js.map +1 -1
  773. package/esm/data/transforms/invalid-travel.d.ts +1 -1
  774. package/esm/data/transforms/invalid-travel.js +4 -2
  775. package/esm/data/transforms/invalid-travel.js.map +1 -1
  776. package/esm/data/transforms/legend-data/continuous/continuous.js +2 -2
  777. package/esm/data/transforms/legend-data/continuous/continuous.js.map +1 -1
  778. package/esm/data/transforms/legend-data/discrete/discrete.js +2 -2
  779. package/esm/data/transforms/legend-data/discrete/discrete.js.map +1 -1
  780. package/esm/data/transforms/legend-data/discrete/interface.d.ts +2 -0
  781. package/esm/data/transforms/legend-data/discrete/interface.js.map +1 -1
  782. package/esm/data/transforms/pie.js +2 -1
  783. package/esm/data/transforms/pie.js.map +1 -1
  784. package/esm/data/transforms/waterfall.js +5 -1
  785. package/esm/data/transforms/waterfall.js.map +1 -1
  786. package/esm/event/event-dispatcher.js +8 -1
  787. package/esm/event/event-dispatcher.js.map +1 -1
  788. package/esm/event/interface.d.ts +2 -0
  789. package/esm/event/interface.js.map +1 -1
  790. package/esm/index-lark.js +4 -4
  791. package/esm/index-lark.js.map +1 -1
  792. package/esm/index-wx.js +4 -4
  793. package/esm/index-wx.js.map +1 -1
  794. package/esm/layout/base-layout.js +6 -5
  795. package/esm/layout/base-layout.js.map +1 -1
  796. package/esm/layout/grid-layout/grid-layout.d.ts +1 -1
  797. package/esm/layout/grid-layout/grid-layout.js +4 -4
  798. package/esm/layout/grid-layout/grid-layout.js.map +1 -1
  799. package/esm/layout/layout-item.js +1 -1
  800. package/esm/layout/layout-item.js.map +1 -1
  801. package/esm/mark/base/base-mark.js +1 -1
  802. package/esm/mark/base/base-mark.js.map +1 -1
  803. package/esm/mark/index.d.ts +20 -20
  804. package/esm/mark/index.js +25 -20
  805. package/esm/mark/index.js.map +1 -1
  806. package/esm/model/base-model-transformer.js +3 -1
  807. package/esm/model/base-model-transformer.js.map +1 -1
  808. package/esm/model/base-model.js +1 -1
  809. package/esm/model/base-model.js.map +1 -1
  810. package/esm/model/interface.d.ts +1 -0
  811. package/esm/model/interface.js.map +1 -1
  812. package/esm/model/layout-model.js +3 -2
  813. package/esm/model/layout-model.js.map +1 -1
  814. package/esm/plugin/base/base-plugin-service.d.ts +2 -0
  815. package/esm/plugin/base/base-plugin-service.js +11 -1
  816. package/esm/plugin/base/base-plugin-service.js.map +1 -1
  817. package/esm/plugin/base/interface.d.ts +3 -0
  818. package/esm/plugin/base/interface.js.map +1 -1
  819. package/esm/plugin/chart/media-query/media-query.js +3 -1
  820. package/esm/plugin/chart/media-query/media-query.js.map +1 -1
  821. package/esm/plugin/chart/media-query/util/action.js +2 -2
  822. package/esm/plugin/chart/media-query/util/action.js.map +1 -1
  823. package/esm/plugin/components/axis-sync/zero-align-transform.js +3 -5
  824. package/esm/plugin/components/axis-sync/zero-align-transform.js.map +1 -1
  825. package/esm/plugin/components/tooltip-handler/base.d.ts +1 -1
  826. package/esm/plugin/components/tooltip-handler/base.js +3 -3
  827. package/esm/plugin/components/tooltip-handler/base.js.map +1 -1
  828. package/esm/plugin/components/tooltip-handler/dom/dom-tooltip-handler.js.map +1 -1
  829. package/esm/plugin/components/tooltip-handler/dom/model/content-column-model.js +1 -1
  830. package/esm/plugin/components/tooltip-handler/dom/model/content-column-model.js.map +1 -1
  831. package/esm/plugin/components/tooltip-handler/dom/model/content-model.js +1 -1
  832. package/esm/plugin/components/tooltip-handler/dom/model/content-model.js.map +1 -1
  833. package/esm/plugin/components/tooltip-handler/dom/model/title-model.js +1 -1
  834. package/esm/plugin/components/tooltip-handler/dom/model/title-model.js.map +1 -1
  835. package/esm/plugin/components/tooltip-handler/dom/model/tooltip-model.js +1 -1
  836. package/esm/plugin/components/tooltip-handler/dom/model/tooltip-model.js.map +1 -1
  837. package/esm/plugin/components/tooltip-handler/dom/utils/style.js +1 -1
  838. package/esm/plugin/components/tooltip-handler/dom/utils/style.js.map +1 -1
  839. package/esm/plugin/components/tooltip-handler/utils/attribute.js +1 -1
  840. package/esm/plugin/components/tooltip-handler/utils/attribute.js.map +1 -1
  841. package/esm/plugin/components/tooltip-handler/utils/index.d.ts +0 -1
  842. package/esm/plugin/components/tooltip-handler/utils/index.js +0 -2
  843. package/esm/plugin/components/tooltip-handler/utils/index.js.map +1 -1
  844. package/esm/region/interface.d.ts +2 -0
  845. package/esm/region/interface.js.map +1 -1
  846. package/esm/region/region.d.ts +1 -0
  847. package/esm/region/region.js +5 -1
  848. package/esm/region/region.js.map +1 -1
  849. package/esm/series/area/area-transformer.js +1 -1
  850. package/esm/series/area/area-transformer.js.map +1 -1
  851. package/esm/series/area/area.js +4 -1
  852. package/esm/series/area/area.js.map +1 -1
  853. package/esm/series/bar/bar-3d.js +4 -1
  854. package/esm/series/bar/bar-3d.js.map +1 -1
  855. package/esm/series/bar/bar.js +4 -1
  856. package/esm/series/bar/bar.js.map +1 -1
  857. package/esm/series/base/base-series-transformer.js +3 -1
  858. package/esm/series/base/base-series-transformer.js.map +1 -1
  859. package/esm/series/base/base-series.d.ts +9 -17
  860. package/esm/series/base/base-series.js +41 -23
  861. package/esm/series/base/base-series.js.map +1 -1
  862. package/esm/series/base/tooltip-helper.d.ts +8 -5
  863. package/esm/series/base/tooltip-helper.js +31 -23
  864. package/esm/series/base/tooltip-helper.js.map +1 -1
  865. package/esm/series/box-plot/box-plot.js +4 -1
  866. package/esm/series/box-plot/box-plot.js.map +1 -1
  867. package/esm/series/box-plot/tooltip-helper.d.ts +1 -1
  868. package/esm/series/box-plot/tooltip-helper.js +21 -21
  869. package/esm/series/box-plot/tooltip-helper.js.map +1 -1
  870. package/esm/series/cartesian/cartesian.d.ts +1 -1
  871. package/esm/series/cartesian/cartesian.js +15 -4
  872. package/esm/series/cartesian/cartesian.js.map +1 -1
  873. package/esm/series/circle-packing/tooltip-helper.d.ts +1 -1
  874. package/esm/series/circle-packing/tooltip-helper.js +1 -1
  875. package/esm/series/circle-packing/tooltip-helper.js.map +1 -1
  876. package/esm/series/dot/dot.js +1 -1
  877. package/esm/series/dot/dot.js.map +1 -1
  878. package/esm/series/dot/tooltip-helper.js +12 -12
  879. package/esm/series/dot/tooltip-helper.js.map +1 -1
  880. package/esm/series/funnel/funnel.js +8 -4
  881. package/esm/series/funnel/funnel.js.map +1 -1
  882. package/esm/series/funnel/tooltip-helper.d.ts +3 -3
  883. package/esm/series/funnel/tooltip-helper.js +3 -3
  884. package/esm/series/funnel/tooltip-helper.js.map +1 -1
  885. package/esm/series/gauge/gauge-pointer.js +4 -1
  886. package/esm/series/gauge/gauge-pointer.js.map +1 -1
  887. package/esm/series/gauge/gauge.js +4 -1
  888. package/esm/series/gauge/gauge.js.map +1 -1
  889. package/esm/series/geo/geo.d.ts +1 -0
  890. package/esm/series/geo/geo.js +4 -2
  891. package/esm/series/geo/geo.js.map +1 -1
  892. package/esm/series/heatmap/heatmap.js +4 -1
  893. package/esm/series/heatmap/heatmap.js.map +1 -1
  894. package/esm/series/index.d.ts +7 -3
  895. package/esm/series/index.js +6 -2
  896. package/esm/series/index.js.map +1 -1
  897. package/esm/series/interface/common.d.ts +3 -2
  898. package/esm/series/interface/common.js.map +1 -1
  899. package/esm/series/interface/series.d.ts +7 -0
  900. package/esm/series/interface/series.js.map +1 -1
  901. package/esm/series/interface/theme.d.ts +2 -0
  902. package/esm/series/interface/theme.js +4 -1
  903. package/esm/series/interface/theme.js.map +1 -1
  904. package/esm/series/interface/tooltip-helper.d.ts +8 -5
  905. package/esm/series/interface/tooltip-helper.js.map +1 -1
  906. package/esm/series/interface/type.d.ts +6 -2
  907. package/esm/series/interface/type.js +3 -2
  908. package/esm/series/interface/type.js.map +1 -1
  909. package/esm/series/line/line.js +4 -1
  910. package/esm/series/line/line.js.map +1 -1
  911. package/esm/series/link/link.js +4 -1
  912. package/esm/series/link/link.js.map +1 -1
  913. package/esm/series/link/tooltip-helper.js +8 -8
  914. package/esm/series/link/tooltip-helper.js.map +1 -1
  915. package/esm/series/liquid/tooltip-helper.js +2 -2
  916. package/esm/series/liquid/tooltip-helper.js.map +1 -1
  917. package/esm/series/map/geo-source.d.ts +3 -1
  918. package/esm/series/map/geo-source.js +7 -2
  919. package/esm/series/map/geo-source.js.map +1 -1
  920. package/esm/series/map/tooltip-helper.d.ts +1 -1
  921. package/esm/series/map/tooltip-helper.js +1 -1
  922. package/esm/series/map/tooltip-helper.js.map +1 -1
  923. package/esm/series/mixin/line-mixin.js +1 -1
  924. package/esm/series/mixin/line-mixin.js.map +1 -1
  925. package/esm/series/pie/pie-transformer.js +1 -1
  926. package/esm/series/pie/pie-transformer.js.map +1 -1
  927. package/esm/series/polar/polar.d.ts +2 -2
  928. package/esm/series/polar/polar.js +18 -6
  929. package/esm/series/polar/polar.js.map +1 -1
  930. package/esm/series/progress/circular/circular.js +5 -2
  931. package/esm/series/progress/circular/circular.js.map +1 -1
  932. package/esm/series/radar/radar.js +5 -2
  933. package/esm/series/radar/radar.js.map +1 -1
  934. package/esm/series/range-area/range-area.d.ts +0 -2
  935. package/esm/series/range-area/range-area.js +3 -5
  936. package/esm/series/range-area/range-area.js.map +1 -1
  937. package/esm/series/range-area/tooltip-helper.js +10 -10
  938. package/esm/series/range-area/tooltip-helper.js.map +1 -1
  939. package/esm/series/range-column/3d/range-column-3d.js +4 -1
  940. package/esm/series/range-column/3d/range-column-3d.js.map +1 -1
  941. package/esm/series/range-column/range-column.js +3 -1
  942. package/esm/series/range-column/range-column.js.map +1 -1
  943. package/esm/series/range-column/tooltip-helper.js +5 -5
  944. package/esm/series/range-column/tooltip-helper.js.map +1 -1
  945. package/esm/series/rose/rose.js +4 -1
  946. package/esm/series/rose/rose.js.map +1 -1
  947. package/esm/series/sankey/sankey.d.ts +2 -1
  948. package/esm/series/sankey/sankey.js +52 -119
  949. package/esm/series/sankey/sankey.js.map +1 -1
  950. package/esm/series/sankey/tooltip-helper.js +9 -9
  951. package/esm/series/sankey/tooltip-helper.js.map +1 -1
  952. package/esm/series/scatter/scatter.js +4 -1
  953. package/esm/series/scatter/scatter.js.map +1 -1
  954. package/esm/series/sunburst/tooltip-helper.d.ts +1 -1
  955. package/esm/series/sunburst/tooltip-helper.js +1 -1
  956. package/esm/series/sunburst/tooltip-helper.js.map +1 -1
  957. package/esm/series/treemap/tooltip-helper.d.ts +1 -1
  958. package/esm/series/treemap/tooltip-helper.js +1 -1
  959. package/esm/series/treemap/tooltip-helper.js.map +1 -1
  960. package/esm/series/util/stack.js +28 -15
  961. package/esm/series/util/stack.js.map +1 -1
  962. package/esm/series/venn/animation.d.ts +6 -0
  963. package/esm/series/venn/animation.js +68 -0
  964. package/esm/series/venn/animation.js.map +1 -0
  965. package/esm/series/venn/constant.d.ts +2 -0
  966. package/esm/series/venn/constant.js +17 -0
  967. package/esm/series/venn/constant.js.map +1 -0
  968. package/esm/series/venn/interface.d.ts +21 -0
  969. package/esm/series/venn/interface.js +2 -0
  970. package/esm/series/venn/interface.js.map +1 -0
  971. package/esm/series/venn/tooltip-helper.d.ts +5 -0
  972. package/esm/series/venn/tooltip-helper.js +11 -0
  973. package/esm/series/venn/tooltip-helper.js.map +1 -0
  974. package/esm/series/venn/util.d.ts +1 -0
  975. package/esm/series/venn/util.js +4 -0
  976. package/esm/series/venn/util.js.map +1 -0
  977. package/esm/series/venn/venn-transform.d.ts +6 -0
  978. package/esm/series/venn/venn-transform.js +8 -0
  979. package/esm/series/venn/venn-transform.js.map +1 -0
  980. package/esm/series/venn/venn.d.ts +63 -0
  981. package/esm/series/venn/venn.js +237 -0
  982. package/esm/series/venn/venn.js.map +1 -0
  983. package/esm/series/waterfall/interface.d.ts +6 -1
  984. package/esm/series/waterfall/interface.js.map +1 -1
  985. package/esm/series/waterfall/waterfall.d.ts +9 -0
  986. package/esm/series/waterfall/waterfall.js +24 -3
  987. package/esm/series/waterfall/waterfall.js.map +1 -1
  988. package/esm/series/word-cloud/base.d.ts +2 -0
  989. package/esm/series/word-cloud/base.js +12 -17
  990. package/esm/series/word-cloud/base.js.map +1 -1
  991. package/esm/theme/builtin/common/component/index.js +4 -0
  992. package/esm/theme/builtin/common/component/index.js.map +1 -1
  993. package/esm/theme/builtin/common/series/index.js +4 -1
  994. package/esm/theme/builtin/common/series/index.js.map +1 -1
  995. package/esm/theme/builtin/common/series/venn.d.ts +2 -0
  996. package/esm/theme/builtin/common/series/venn.js +56 -0
  997. package/esm/theme/builtin/common/series/venn.js.map +1 -0
  998. package/esm/typings/spec/chart.d.ts +2 -0
  999. package/esm/typings/spec/chart.js.map +1 -1
  1000. package/esm/typings/spec/common.d.ts +5 -2
  1001. package/esm/typings/spec/common.js.map +1 -1
  1002. package/esm/typings/tooltip/tooltip.d.ts +1 -0
  1003. package/esm/typings/tooltip/tooltip.js.map +1 -1
  1004. package/esm/util/data.d.ts +21 -4
  1005. package/esm/util/data.js +39 -10
  1006. package/esm/util/data.js.map +1 -1
  1007. package/esm/util/index.d.ts +1 -0
  1008. package/esm/util/index.js +2 -0
  1009. package/esm/util/index.js.map +1 -1
  1010. package/esm/util/math.d.ts +1 -1
  1011. package/esm/util/math.js +2 -3
  1012. package/esm/util/math.js.map +1 -1
  1013. package/esm/util/spec/index.d.ts +0 -5
  1014. package/esm/util/spec/index.js +0 -10
  1015. package/esm/util/spec/index.js.map +1 -1
  1016. package/esm/util/spec/transform.js.map +1 -1
  1017. package/esm/util/theme/merge-theme.js +1 -1
  1018. package/esm/util/theme/merge-theme.js.map +1 -1
  1019. package/esm/vchart-all.js +6 -4
  1020. package/esm/vchart-all.js.map +1 -1
  1021. package/package.json +16 -15
  1022. package/cjs/component/marker/mark-area/mark-area.d.ts +0 -21
  1023. package/cjs/component/marker/mark-area/mark-area.js +0 -128
  1024. package/cjs/component/marker/mark-area/mark-area.js.map +0 -1
  1025. package/cjs/component/marker/mark-line/mark-line.d.ts +0 -22
  1026. package/cjs/component/marker/mark-line/mark-line.js +0 -198
  1027. package/cjs/component/marker/mark-line/mark-line.js.map +0 -1
  1028. package/cjs/component/marker/mark-point/mark-point.js +0 -138
  1029. package/cjs/component/marker/mark-point/mark-point.js.map +0 -1
  1030. package/cjs/plugin/components/tooltip-handler/utils/pattern.js.map +0 -1
  1031. package/cjs/util/spec/clone-deep.d.ts +0 -1
  1032. package/cjs/util/spec/clone-deep.js +0 -27
  1033. package/cjs/util/spec/clone-deep.js.map +0 -1
  1034. package/cjs/util/spec/common.d.ts +0 -3
  1035. package/cjs/util/spec/common.js +0 -23
  1036. package/cjs/util/spec/common.js.map +0 -1
  1037. package/cjs/util/spec/merge-spec.d.ts +0 -5
  1038. package/cjs/util/spec/merge-spec.js +0 -69
  1039. package/cjs/util/spec/merge-spec.js.map +0 -1
  1040. package/esm/component/marker/mark-area/mark-area.d.ts +0 -21
  1041. package/esm/component/marker/mark-area/mark-area.js +0 -134
  1042. package/esm/component/marker/mark-area/mark-area.js.map +0 -1
  1043. package/esm/component/marker/mark-line/mark-line.d.ts +0 -22
  1044. package/esm/component/marker/mark-line/mark-line.js +0 -213
  1045. package/esm/component/marker/mark-line/mark-line.js.map +0 -1
  1046. package/esm/component/marker/mark-point/mark-point.js +0 -147
  1047. package/esm/component/marker/mark-point/mark-point.js.map +0 -1
  1048. package/esm/plugin/components/tooltip-handler/utils/pattern.js.map +0 -1
  1049. package/esm/util/spec/clone-deep.d.ts +0 -1
  1050. package/esm/util/spec/clone-deep.js +0 -20
  1051. package/esm/util/spec/clone-deep.js.map +0 -1
  1052. package/esm/util/spec/common.d.ts +0 -3
  1053. package/esm/util/spec/common.js +0 -15
  1054. package/esm/util/spec/common.js.map +0 -1
  1055. package/esm/util/spec/merge-spec.d.ts +0 -5
  1056. package/esm/util/spec/merge-spec.js +0 -57
  1057. package/esm/util/spec/merge-spec.js.map +0 -1
  1058. /package/cjs/{plugin/components/tooltip-handler → component/tooltip}/utils/pattern.js +0 -0
  1059. /package/esm/{plugin/components/tooltip-handler → component/tooltip}/utils/pattern.js +0 -0
@@ -2,7 +2,7 @@ import type { IInvalidType, StringOrNumber } from '../../typings';
2
2
  export interface ITravelOpt {
3
3
  config: () => {
4
4
  invalidType: IInvalidType;
5
- checkField: StringOrNumber;
5
+ checkField: StringOrNumber[];
6
6
  };
7
7
  }
8
8
  export declare const invalidTravel: (data: Array<any>, op: ITravelOpt) => any[];
@@ -4,8 +4,10 @@ export const invalidTravel = (data, op) => {
4
4
  const {config: config} = op;
5
5
  if (!config) return data;
6
6
  const {invalidType: invalidType, checkField: checkField} = config();
7
- return "zero" !== invalidType || data.forEach((datum => {
8
- couldBeValidNumber(datum[checkField]) || (datum[checkField] = 0);
7
+ return "zero" !== invalidType || checkField && checkField.length && data.forEach((datum => {
8
+ checkField.forEach((field => {
9
+ couldBeValidNumber(datum[field]) || (datum[field] = 0);
10
+ }));
9
11
  })), data;
10
12
  };
11
13
  //# sourceMappingURL=invalid-travel.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/data/transforms/invalid-travel.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AASrD,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAAgB,EAAE,EAAc,EAAE,EAAE;IAChE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;IACtB,IAAI,CAAC,MAAM,EAAE;QACX,OAAO,IAAI,CAAC;KACb;IACD,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,MAAM,EAAE,CAAC;IAC7C,IAAI,WAAW,KAAK,MAAM,EAAE;QAC1B,OAAO,IAAI,CAAC;KACb;IACD,IAAI,CAAC,OAAO,CAAC,CAAC,KAAY,EAAE,EAAE;QAC5B,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,EAAE;YAC1C,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;SACvB;IACH,CAAC,CAAC,CAAC;IACH,OAAO,IAAI,CAAC;AACd,CAAC,CAAC","file":"invalid-travel.js","sourcesContent":["import type { Datum, IInvalidType, StringOrNumber } from '../../typings';\nimport { couldBeValidNumber } from '../../util/type';\n\nexport interface ITravelOpt {\n config: () => {\n invalidType: IInvalidType;\n checkField: StringOrNumber;\n };\n}\n\nexport const invalidTravel = (data: Array<any>, op: ITravelOpt) => {\n const { config } = op;\n if (!config) {\n return data;\n }\n const { invalidType, checkField } = config();\n if (invalidType !== 'zero') {\n return data;\n }\n data.forEach((datum: Datum) => {\n if (!couldBeValidNumber(datum[checkField])) {\n datum[checkField] = 0;\n }\n });\n return data;\n};\n"]}
1
+ {"version":3,"sources":["../src/data/transforms/invalid-travel.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AASrD,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAAgB,EAAE,EAAc,EAAE,EAAE;IAChE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;IACtB,IAAI,CAAC,MAAM,EAAE;QACX,OAAO,IAAI,CAAC;KACb;IACD,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,MAAM,EAAE,CAAC;IAC7C,IAAI,WAAW,KAAK,MAAM,EAAE;QAC1B,OAAO,IAAI,CAAC;KACb;IAED,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,EAAE;QACnC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAY,EAAE,EAAE;YAC5B,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACzB,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE;oBACrC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;iBAClB;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;KACJ;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC","file":"invalid-travel.js","sourcesContent":["import type { Datum, IInvalidType, StringOrNumber } from '../../typings';\nimport { couldBeValidNumber } from '../../util/type';\n\nexport interface ITravelOpt {\n config: () => {\n invalidType: IInvalidType;\n checkField: StringOrNumber[];\n };\n}\n\nexport const invalidTravel = (data: Array<any>, op: ITravelOpt) => {\n const { config } = op;\n if (!config) {\n return data;\n }\n const { invalidType, checkField } = config();\n if (invalidType !== 'zero') {\n return data;\n }\n\n if (checkField && checkField.length) {\n data.forEach((datum: Datum) => {\n checkField.forEach(field => {\n if (!couldBeValidNumber(datum[field])) {\n datum[field] = 0;\n }\n });\n });\n }\n return data;\n};\n"]}
@@ -3,10 +3,10 @@ import { isEmpty, isValidNumber } from "@visactor/vutils";
3
3
  export const continuousLegendDataMake = (data, op) => {
4
4
  const {series: series, field: field, scale: scale} = op, datumField = field();
5
5
  if (field && datumField) {
6
- let min = Number.MAX_VALUE, max = Number.MIN_VALUE;
6
+ let min = 1 / 0, max = -1 / 0;
7
7
  return series().forEach((s => {
8
8
  const statisticData = s.getRawDataStatisticsByField(datumField, !0), seriesMin = null == statisticData ? void 0 : statisticData.min, seriesMax = null == statisticData ? void 0 : statisticData.max;
9
- isValidNumber(seriesMin) && (min = seriesMin), isValidNumber(seriesMax) && (max = seriesMax);
9
+ isValidNumber(seriesMin) && (min = Math.min(seriesMin, min)), isValidNumber(seriesMax) && (max = Math.max(seriesMax, max));
10
10
  })), [ min, max ];
11
11
  }
12
12
  if (scale) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/data/transforms/legend-data/continuous/continuous.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAK1D,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,IAAoB,EAAE,EAAmC,EAAE,EAAE;IACpG,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;IACpC,MAAM,UAAU,GAAG,KAAK,EAAE,CAAC;IAC3B,IAAI,KAAK,IAAI,UAAU,EAAE;QACvB,IAAI,GAAG,GAAW,MAAM,CAAC,SAAS,CAAC;QACnC,IAAI,GAAG,GAAW,MAAM,CAAC,SAAS,CAAC;QACnC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACnB,MAAM,aAAa,GAAG,CAAC,CAAC,2BAA2B,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YACtE,MAAM,SAAS,GAAG,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,GAAG,CAAC;YACrC,MAAM,SAAS,GAAG,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,GAAG,CAAC;YACrC,IAAI,aAAa,CAAC,SAAS,CAAC,EAAE;gBAC5B,GAAG,GAAG,SAAS,CAAC;aACjB;YACD,IAAI,aAAa,CAAC,SAAS,CAAC,EAAE;gBAC5B,GAAG,GAAG,SAAS,CAAC;aACjB;QACH,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACnB;IACD,IAAI,KAAK,EAAE;QACT,MAAM,MAAM,GAAG,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC,MAAM,EAAE;YACX,OAAO,EAAE,CAAC;SACX;QACD,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC;KACxB;IACD,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC;AAGF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,IAAgB,EAAE,EAAiC,EAAE,EAAE;IAC5F,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC;IACjD,MAAM,aAAa,GAAG,QAAQ,EAAE,CAAC;IACjC,MAAM,UAAU,GAAG,KAAK,EAAE,CAAC;IAC3B,MAAM,SAAS,GAAG,UAAU,EAAE,CAAC;IAG/B,IAAI,aAAa,KAAK,SAAS,EAAE;QAC/B,OAAO,IAAI,CAAC;KACb;IAED,IAAI,UAAU,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;QACzC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,aAAa,CAAC;QAEjC,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;YACzB,OAAO,KAAK,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC;QAC9D,CAAC,CAAC,CAAC;KACJ;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC","file":"continuous.js","sourcesContent":["import { isEmpty, isValidNumber } from '@visactor/vutils';\nimport type { ISeries } from '../../../../series/interface';\nimport type { IContinuousLegendDataMakeOption, IContinuousLegendFilterOption } from './interface';\n\n// 获取数值范围\nexport const continuousLegendDataMake = (data: Array<ISeries>, op: IContinuousLegendDataMakeOption) => {\n const { series, field, scale } = op;\n const datumField = field();\n if (field && datumField) {\n let min: number = Number.MAX_VALUE;\n let max: number = Number.MIN_VALUE;\n series().forEach(s => {\n const statisticData = s.getRawDataStatisticsByField(datumField, true);\n const seriesMin = statisticData?.min;\n const seriesMax = statisticData?.max;\n if (isValidNumber(seriesMin)) {\n min = seriesMin;\n }\n if (isValidNumber(seriesMax)) {\n max = seriesMax;\n }\n });\n return [min, max];\n }\n if (scale) {\n const _scale = scale();\n if (!_scale) {\n return [];\n }\n return _scale.domain();\n }\n return [];\n};\n\n// 连续数据过滤\nexport const continuousLegendFilter = (data: Array<any>, op: IContinuousLegendFilterOption) => {\n const { selected, field, data: legendData } = op;\n const selectedRange = selected();\n const datumField = field();\n const dataRange = legendData();\n\n // 如果数值范围相等,就不进行返回 data,不需要进行过滤\n if (selectedRange === dataRange) {\n return data;\n }\n\n if (datumField && !isEmpty(selectedRange)) {\n const [min, max] = selectedRange;\n\n return data.filter(datum => {\n return datum[datumField] >= min && datum[datumField] <= max;\n });\n }\n\n return data;\n};\n"]}
1
+ {"version":3,"sources":["../src/data/transforms/legend-data/continuous/continuous.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAK1D,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,IAAoB,EAAE,EAAmC,EAAE,EAAE;IACpG,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;IACpC,MAAM,UAAU,GAAG,KAAK,EAAE,CAAC;IAC3B,IAAI,KAAK,IAAI,UAAU,EAAE;QACvB,IAAI,GAAG,GAAW,QAAQ,CAAC;QAC3B,IAAI,GAAG,GAAW,CAAC,QAAQ,CAAC;QAC5B,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACnB,MAAM,aAAa,GAAG,CAAC,CAAC,2BAA2B,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YACtE,MAAM,SAAS,GAAG,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,GAAG,CAAC;YACrC,MAAM,SAAS,GAAG,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,GAAG,CAAC;YACrC,IAAI,aAAa,CAAC,SAAS,CAAC,EAAE;gBAC5B,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;aAChC;YACD,IAAI,aAAa,CAAC,SAAS,CAAC,EAAE;gBAC5B,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;aAChC;QACH,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACnB;IACD,IAAI,KAAK,EAAE;QACT,MAAM,MAAM,GAAG,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC,MAAM,EAAE;YACX,OAAO,EAAE,CAAC;SACX;QACD,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC;KACxB;IACD,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC;AAGF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,IAAgB,EAAE,EAAiC,EAAE,EAAE;IAC5F,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC;IACjD,MAAM,aAAa,GAAG,QAAQ,EAAE,CAAC;IACjC,MAAM,UAAU,GAAG,KAAK,EAAE,CAAC;IAC3B,MAAM,SAAS,GAAG,UAAU,EAAE,CAAC;IAG/B,IAAI,aAAa,KAAK,SAAS,EAAE;QAC/B,OAAO,IAAI,CAAC;KACb;IAED,IAAI,UAAU,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;QACzC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,aAAa,CAAC;QAEjC,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;YACzB,OAAO,KAAK,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC;QAC9D,CAAC,CAAC,CAAC;KACJ;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC","file":"continuous.js","sourcesContent":["import { isEmpty, isValidNumber } from '@visactor/vutils';\nimport type { ISeries } from '../../../../series/interface';\nimport type { IContinuousLegendDataMakeOption, IContinuousLegendFilterOption } from './interface';\n\n// 获取数值范围\nexport const continuousLegendDataMake = (data: Array<ISeries>, op: IContinuousLegendDataMakeOption) => {\n const { series, field, scale } = op;\n const datumField = field();\n if (field && datumField) {\n let min: number = Infinity;\n let max: number = -Infinity;\n series().forEach(s => {\n const statisticData = s.getRawDataStatisticsByField(datumField, true);\n const seriesMin = statisticData?.min;\n const seriesMax = statisticData?.max;\n if (isValidNumber(seriesMin)) {\n min = Math.min(seriesMin, min);\n }\n if (isValidNumber(seriesMax)) {\n max = Math.max(seriesMax, max);\n }\n });\n return [min, max];\n }\n if (scale) {\n const _scale = scale();\n if (!_scale) {\n return [];\n }\n return _scale.domain();\n }\n return [];\n};\n\n// 连续数据过滤\nexport const continuousLegendFilter = (data: Array<any>, op: IContinuousLegendFilterOption) => {\n const { selected, field, data: legendData } = op;\n const selectedRange = selected();\n const datumField = field();\n const dataRange = legendData();\n\n // 如果数值范围相等,就不进行返回 data,不需要进行过滤\n if (selectedRange === dataRange) {\n return data;\n }\n\n if (datumField && !isEmpty(selectedRange)) {\n const [min, max] = selectedRange;\n\n return data.filter(datum => {\n return datum[datumField] >= min && datum[datumField] <= max;\n });\n }\n\n return data;\n};\n"]}
@@ -16,7 +16,7 @@ export const discreteLegendDataMake = (data, op) => {
16
16
 
17
17
  export const discreteLegendFilter = (data, op) => {
18
18
  var _a, _b, _c;
19
- const {selected: selected, field: field, data: legendData} = op, selectedData = selected(), legendKeys = legendData();
19
+ const {series: series, selected: selected, field: field, data: legendData} = op, selectedData = selected(), legendKeys = legendData();
20
20
  if (0 === selectedData.length && legendKeys.length) return [];
21
21
  if (selectedData.length === legendKeys.length) return data;
22
22
  const selectedFilter = {};
@@ -25,7 +25,7 @@ export const discreteLegendFilter = (data, op) => {
25
25
  }));
26
26
  const datumField = null !== (_a = field()) && void 0 !== _a ? _a : DEFAULT_DATA_SERIES_FIELD;
27
27
  return isArray(data) && (null === (_b = data[0]) || void 0 === _b ? void 0 : _b.nodes) ? (data[0].nodes = data[0].nodes.filter((d => !0 === selectedFilter[d.key])),
28
- (null === (_c = data[0]) || void 0 === _c ? void 0 : _c.links) && (data[0].links = data[0].links.filter((d => !0 === selectedFilter[d.source] && !0 === selectedFilter[d.target])))) : isValid(datumField) && (data = data.filter((d => !0 === selectedFilter[d[datumField]]))),
28
+ (null === (_c = data[0]) || void 0 === _c ? void 0 : _c.links) && (data[0].links = data[0].links.filter((d => !0 === selectedFilter[d.source] && !0 === selectedFilter[d.target])))) : isValid(datumField) && (data = data.filter((d => !0 === selectedFilter[series.getSeriesFieldValue(d, datumField)]))),
29
29
  data;
30
30
  };
31
31
  //# sourceMappingURL=discrete.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/data/transforms/legend-data/discrete/discrete.ts"],"names":[],"mappings":"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","file":"discrete.js","sourcesContent":["import { isValid, isArray } from '@visactor/vutils';\nimport type { ISeries } from '../../../../series/interface';\nimport type { IDiscreteLegendData, IDiscreteLegendDataMakeOption, IDiscreteLegendFilterOption } from './interface';\nimport { DEFAULT_DATA_SERIES_FIELD } from '../../../../constant';\n\nexport const discreteLegendDataMake = (data: Array<ISeries>, op: IDiscreteLegendDataMakeOption) => {\n const result: IDiscreteLegendData[] = [];\n const tempKey: { [key in string]: boolean } = {};\n const { series, seriesField } = op;\n series().forEach(s => {\n const field = seriesField(s);\n let infoList;\n if (field === s.getSeriesField()) {\n infoList = s.getSeriesInfoList();\n } else {\n infoList = s.getSeriesInfoInField(field);\n }\n infoList.forEach(info => {\n if (tempKey[info.key]) {\n return;\n }\n tempKey[info.key] = true;\n result.push(info);\n });\n });\n return result;\n};\n\nexport const discreteLegendFilter = (data: Array<any>, op: IDiscreteLegendFilterOption) => {\n const { selected, field, data: legendData } = op;\n const selectedData = selected();\n const legendKeys = legendData(); // 全量的图例项\n if (selectedData.length === 0 && legendKeys.length) {\n return [];\n }\n\n if (selectedData.length === legendKeys.length) {\n return data;\n }\n\n const selectedFilter = {};\n selectedData.forEach(s => {\n selectedFilter[s] = true;\n });\n\n const datumField = field() ?? DEFAULT_DATA_SERIES_FIELD;\n\n if (isArray(data) && data[0]?.nodes) {\n // data silter for sankey chart\n data[0].nodes = data[0].nodes.filter((d: any) => selectedFilter[d.key] === true);\n if (data[0]?.links) {\n data[0].links = data[0].links.filter(\n (d: any) => selectedFilter[d.source] === true && selectedFilter[d.target] === true\n );\n }\n } else {\n if (isValid(datumField)) {\n data = data.filter(d => selectedFilter[d[datumField]] === true);\n }\n }\n return data;\n};\n"]}
1
+ {"version":3,"sources":["../src/data/transforms/legend-data/discrete/discrete.ts"],"names":[],"mappings":"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","file":"discrete.js","sourcesContent":["import { isValid, isArray } from '@visactor/vutils';\nimport type { ISeries } from '../../../../series/interface';\nimport type { IDiscreteLegendData, IDiscreteLegendDataMakeOption, IDiscreteLegendFilterOption } from './interface';\nimport { DEFAULT_DATA_SERIES_FIELD } from '../../../../constant';\n\nexport const discreteLegendDataMake = (data: Array<ISeries>, op: IDiscreteLegendDataMakeOption) => {\n const result: IDiscreteLegendData[] = [];\n const tempKey: { [key in string]: boolean } = {};\n const { series, seriesField } = op;\n series().forEach(s => {\n const field = seriesField(s);\n let infoList;\n if (field === s.getSeriesField()) {\n infoList = s.getSeriesInfoList();\n } else {\n infoList = s.getSeriesInfoInField(field);\n }\n infoList.forEach(info => {\n if (tempKey[info.key]) {\n return;\n }\n tempKey[info.key] = true;\n result.push(info);\n });\n });\n return result;\n};\n\nexport const discreteLegendFilter = (data: Array<any>, op: IDiscreteLegendFilterOption) => {\n const { series, selected, field, data: legendData } = op;\n const selectedData = selected();\n const legendKeys = legendData(); // 全量的图例项\n if (selectedData.length === 0 && legendKeys.length) {\n return [];\n }\n\n if (selectedData.length === legendKeys.length) {\n return data;\n }\n\n const selectedFilter = {};\n selectedData.forEach(s => {\n selectedFilter[s] = true;\n });\n\n const datumField = field() ?? DEFAULT_DATA_SERIES_FIELD;\n\n if (isArray(data) && data[0]?.nodes) {\n // data silter for sankey chart\n data[0].nodes = data[0].nodes.filter((d: any) => selectedFilter[d.key] === true);\n if (data[0]?.links) {\n data[0].links = data[0].links.filter(\n (d: any) => selectedFilter[d.source] === true && selectedFilter[d.target] === true\n );\n }\n } else {\n if (isValid(datumField)) {\n data = data.filter(d => selectedFilter[series.getSeriesFieldValue(d, datumField)] === true);\n }\n }\n return data;\n};\n"]}
@@ -2,6 +2,7 @@ import type { ISeries } from '../../../../series/interface';
2
2
  import type { StringOrNumber } from '../../../../typings';
3
3
  export interface IDiscreteLegendData {
4
4
  key: string;
5
+ originalKey: any;
5
6
  style: (attribute: string) => any;
6
7
  }
7
8
  export interface IDiscreteLegendDataMakeOption {
@@ -9,6 +10,7 @@ export interface IDiscreteLegendDataMakeOption {
9
10
  seriesField: (s: ISeries) => string;
10
11
  }
11
12
  export interface IDiscreteLegendFilterOption {
13
+ series: ISeries;
12
14
  selected: () => StringOrNumber[];
13
15
  field: () => string;
14
16
  data: () => StringOrNumber[];
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/data/transforms/legend-data/discrete/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type { ISeries } from '../../../../series/interface';\nimport type { StringOrNumber } from '../../../../typings';\n\nexport interface IDiscreteLegendData {\n key: string;\n style: (attribute: string) => any;\n}\n\nexport interface IDiscreteLegendDataMakeOption {\n series: () => ISeries[];\n seriesField: (s: ISeries) => string;\n}\n\nexport interface IDiscreteLegendFilterOption {\n selected: () => StringOrNumber[];\n field: () => string;\n data: () => StringOrNumber[];\n}\n"]}
1
+ {"version":3,"sources":["../src/data/transforms/legend-data/discrete/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type { ISeries } from '../../../../series/interface';\nimport type { StringOrNumber } from '../../../../typings';\n\nexport interface IDiscreteLegendData {\n key: string;\n /** 图例的原始 key,直接取 datum 里的原始值 */\n originalKey: any;\n style: (attribute: string) => any;\n}\n\nexport interface IDiscreteLegendDataMakeOption {\n series: () => ISeries[];\n seriesField: (s: ISeries) => string;\n}\n\nexport interface IDiscreteLegendFilterOption {\n series: ISeries;\n selected: () => StringOrNumber[];\n field: () => string;\n data: () => StringOrNumber[];\n}\n"]}
@@ -22,12 +22,13 @@ export const pie = (originData, op) => {
22
22
  }
23
23
  const valueList = data.map((d => Number(d[angleField]))), angleRange = endAngle - startAngle;
24
24
  let lastAngle = startAngle, restAngle = angleRange, largeThanMinAngleTotal = 0;
25
+ const percents = getPercentValue(valueList);
25
26
  if (data.forEach(((d, i) => {
26
27
  const angleFieldValue = d[ARC_TRANSFORM_VALUE], ratio = total ? angleFieldValue / total : 0;
27
28
  let radian = ratio * angleRange;
28
29
  radian < minAngle ? (radian = minAngle, restAngle -= minAngle) : largeThanMinAngleTotal += angleFieldValue;
29
30
  const dStartAngle = lastAngle, dEndAngle = lastAngle + radian;
30
- d[asRatio] = ratio, d[asK] = max ? angleFieldValue / max : 0, d._percent_ = getPercentValue(valueList, i),
31
+ d[asRatio] = ratio, d[asK] = max ? angleFieldValue / max : 0, d._percent_ = percents[i],
31
32
  appendArcInfo(d, dStartAngle, radian), lastAngle = dEndAngle;
32
33
  })), restAngle < angleRange) if (restAngle <= .001) {
33
34
  const angle = angleRange / data.length;
@@ -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, 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"]}
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, 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 const percents = getPercentValue(valueList);\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_ = percents[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,6 +4,8 @@ import { WaterfallDefaultSeriesField } from "../../constant/waterfall";
4
4
 
5
5
  import { warn } from "../../util/debug";
6
6
 
7
+ import { STACK_FIELD_TOTAL_TOP } from "../../constant";
8
+
7
9
  export const waterfall = (lastData, op) => {
8
10
  if (!lastData || 0 === lastData.length) return lastData;
9
11
  const {indexField: indexField, total: totalSpec, groupData: groupData} = op, totalData = [], {dimensionValues: dimensionValues, dimensionData: dimensionData} = groupData().latestData, indexValues = Array.from(dimensionValues[indexField]);
@@ -21,7 +23,9 @@ export const waterfall = (lastData, op) => {
21
23
  index: key,
22
24
  isTotal: !1
23
25
  }, indexData = dimensionData[key];
24
- if (indexData.length > 1) {
26
+ if (null == indexData || indexData.forEach(((d, i) => {
27
+ i === indexData.length - 1 ? d[STACK_FIELD_TOTAL_TOP] = !0 : delete d[STACK_FIELD_TOTAL_TOP];
28
+ })), indexData.length > 1) {
25
29
  const isTotalCheck = d => {
26
30
  if (totalSpec && "end" !== totalSpec.type) {
27
31
  if ("field" === totalSpec.type || "custom" === totalSpec.type) {
@@ -1 +1 @@
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"]}
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';\nimport { STACK_FIELD_TOTAL_TOP } from '../../constant';\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 indexData?.forEach((d, i) => {\n if (i === indexData.length - 1) {\n d[STACK_FIELD_TOTAL_TOP] = true;\n } else {\n delete d[STACK_FIELD_TOTAL_TOP];\n }\n });\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"]}
@@ -18,7 +18,14 @@ const componentTypeMap = {
18
18
  continuousLegend: "legend",
19
19
  colorLegend: "legend",
20
20
  sizeLegend: "legend",
21
- label: "label"
21
+ label: "label",
22
+ markLine: "markLine",
23
+ markArea: "markArea",
24
+ markPoint: "markPoint",
25
+ polarMarkLine: "polarMarkLine",
26
+ polarMarkArea: "polarMarkArea",
27
+ polarMarkPoint: "polarMarkPoint",
28
+ geoMarkPoint: "geoMarkPoint"
22
29
  };
23
30
 
24
31
  export class EventDispatcher {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/event/event-dispatcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAmB5G,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAErE,MAAM,gBAAgB,GAAG;IACvB,aAAa,EAAE,MAAM;IACrB,oBAAoB,EAAE,MAAM;IAC5B,sBAAsB,EAAE,MAAM;IAC9B,oBAAoB,EAAE,MAAM;IAC5B,SAAS,EAAE,MAAM;IACjB,gBAAgB,EAAE,MAAM;IACxB,kBAAkB,EAAE,MAAM;IAC1B,cAAc,EAAE,QAAQ;IACxB,gBAAgB,EAAE,QAAQ;IAC1B,WAAW,EAAE,QAAQ;IACrB,UAAU,EAAE,QAAQ;IACpB,KAAK,EAAE,OAAO;CACf,CAAC;AAEF,MAAM,OAAO,eAAe;IAuB1B,YAAY,MAAc,EAAE,QAAkB;QAnBtC,iBAAY,GAA2B,IAAI,GAAG,EAAqB,CAAC;QACpE,mBAAc,GAA2B,IAAI,GAAG,EAAqB,CAAC;QACtE,mBAAc,GAA2B,IAAI,GAAG,EAAqB,CAAC;QAEtE,mBAAc,GAA8D,IAAI,GAAG,EAGxF,CAAC;QACI,qBAAgB,GAA8D,IAAI,GAAG,EAG1F,CAAC;QACI,qBAAgB,GAA8D,IAAI,GAAG,EAG1F,CAAC;QAyMI,gBAAW,GAAG,CAAC,cAA0C,EAAE,EAAE;;YACnE,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;YAC7C,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,KAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,YAAY,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA,CAAC,IAAI,SAAS,CAAC;YAC5G,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,KAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,WAAW,CAAC,cAAc,CAAC,MAAM,CAAC,CAAA,CAAC,IAAI,IAAI,CAAC;YAInG,MAAM,OAAO,GAAG,IAAI,GAAG,EAAe,CAAC;YACvC,IAAI,UAAU,GAAQ,MAAA,cAAc,CAAC,IAAI,0CAAE,IAAI,CAAC;YAChD,IAAI,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC,EAAE;gBAC1C,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC;aACnD;YACD,OAAO,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,QAAQ,EAAE;gBAC3B,MAAM,EAAE,GAAG,UAAU,CAAC,EAAE,EAAE,CAAC;gBAE3B,IAAI,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;oBACnC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;iBACzC;gBACD,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC;aAC/B;YAED,MAAM,MAAM,GAAoB;gBAC9B,KAAK,EAAE,cAAc,CAAC,KAAK;gBAC3B,IAAI,EAAE,cAAc,CAAC,IAAI;gBACzB,KAAK,EAAE,cAAc,CAAC,KAAK;gBAC3B,MAAM,EAAE,cAAc,CAAC,MAAM;gBAC7B,OAAO;gBACP,KAAK;gBACL,KAAK;gBACL,IAAI,EAAE,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,SAAS;gBACvB,IAAI,EAAE,GAAG,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC;aAC1C,CAAC;YACF,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC7C,CAAC,CAAC;QAKM,gCAA2B,GAAG,CAAC,cAA0C,EAAE,EAAE;YACnF,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;YAC7C,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC;YACnC,IAAI,KAAK,GAAe,IAAI,CAAC;YAE7B,IAAK,KAAa,CAAC,QAAQ,EAAE;gBAC3B,KAAK,GAAI,KAAa,CAAC,QAAQ,CAAC;aACjC;YAED,MAAM,MAAM,GAA0B;gBACpC,KAAK,EAAE,cAAc,CAAC,KAAK;gBAC3B,KAAK;gBACL,KAAK;gBACL,MAAM,EACJ,KAAK;oBACL,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;wBACf,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACzB,CAAC,CAAC;aACL,CAAC;YACF,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC7C,CAAC,CAAC;QA9PA,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC5B,CAAC;IAED,QAAQ,CAAwB,KAAU,EAAE,OAAiD;;QAE3F,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAE1B,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,CAAA,MAAA,OAAO,CAAC,MAAM,0CAAE,MAAM,KAAI,iBAAiB,CAAC,KAAK,CAAC,CAAC;QACvF,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAA,MAAA,OAAO,CAAC,MAAM,0CAAE,MAAM,KAAI,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAE5F,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YACvB,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,MAAM,EAAE,CAAC,CAAC;SAClC;QAGD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAW,CAAC;QAC5C,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAA,OAAO,CAAC,MAAM,0CAAE,KAAyB,CAAC,CAAC;QACtE,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7C,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,MAAA,OAAO,CAAC,MAAM,0CAAE,MAAyB,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;YAC5F,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;SAChC;aAAM,IAAI,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YACnE,MAAM,QAAQ,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7D,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,MAAA,OAAO,CAAC,MAAM,0CAAE,MAAyB,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;YAC5F,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;SAChC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,UAAU,CAAwB,KAAU,EAAE,OAAkD;;QAC9F,IAAI,KAAK,GAAY,KAAK,CAAC;QAE3B,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,CAAA,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,0CAAE,MAAM,KAAI,iBAAiB,CAAC,KAAK,CAAC,CAAC;QACxF,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAA,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,0CAAE,MAAM,KAAI,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAE7F,IAAI,CAAC,OAAO,EAAE;YACZ,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAClC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,EAAE,CAAC;YAClB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACtB,KAAK,GAAG,IAAI,CAAC;SACd;aAAM;YACL,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAClC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,aAAa,CAAC,OAAO,CAAC,CAAC;YAC/B,IAAI,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,EAAE,MAAK,CAAC,EAAE;gBAC5B,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,EAAE,CAAC;gBAClB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACtB,KAAK,GAAG,IAAI,CAAC;aACd;YAED,IAAI,MAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,eAAuB,0CAAE,MAAM,EAAE;gBAE5C,OAAO,CAAC,eAAuB,CAAC,MAAM,EAAE,CAAC;aAC3C;SACF;QAED,IAAI,KAAK,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;YACtC,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAiD,CAAC;YACtF,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAA,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,0CAAE,MAAM,KAAI,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;YACxG,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SACzB;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,QAAQ,CAAwB,KAAU,EAAE,MAAkC,EAAE,KAAwB;QAEtG,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAE,MAA0B,CAAC,MAAM,IAAI,iBAAiB,CAAC,KAAK,CAAC,CAAC,GAAG,CACnG,KAAK,CACI,CAAC;QAEZ,IAAI,CAAC,MAAM,EAAE;YACX,OAAO,IAAI,CAAC;SACb;QAGD,IAAI,UAAU,GAAY,KAAK,CAAC;QAEhC,IAAI,KAAK,EAAE;YAET,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAC3C,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;SACpD;aAAM;YAEL,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAC7D,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YAEnD,IAAI,CAAC,UAAU,EAAE;gBACf,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;gBAC9D,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;aACpD;YACD,IAAI,CAAC,UAAU,EAAE;gBACf,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;gBAC9D,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;aACpD;YACD,IAAI,CAAC,UAAU,EAAE;gBACf,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;gBAC/D,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;aACpD;SACF;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK;QACH,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE;YACjD,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;SACjF;QACD,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAC5B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,EAAE;YACnD,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;SAClF;QACD,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;QAC9B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,EAAE;YACnD,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;SAClF;QACD,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;QAC9B,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE;YAC/C,MAAM,CAAC,OAAO,EAAE,CAAC;SAClB;QACD,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAC1B,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE;YACjD,MAAM,CAAC,OAAO,EAAE,CAAC;SAClB;QACD,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAC5B,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE;YACjD,MAAM,CAAC,OAAO,EAAE,CAAC;SAClB;QACD,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC;IAED,OAAO;QACL,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB,CAAC;IAKO,OAAO,CAAwB,MAAmB,EAAE,GAAQ,EAAE,MAAkC;;QACtG,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;YACvD,OAAO,KAAK,CAAC;SACd;QAGD,IAAI,MAAM,CAAC,QAAQ,IAAI,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,KAAK,MAAM,CAAC,QAAQ,EAAE;YACnE,OAAO,KAAK,CAAC;SACd;QAED,IAAI,MAAM,CAAC,QAAQ,IAAI,CAAA,MAAC,MAA0B,aAA1B,MAAM,uBAAN,MAAM,CAAsB,IAAI,0CAAE,IAAI,MAAK,MAAM,CAAC,QAAQ,EAAE;YAElF,OAAO,KAAK,CAAC;SACd;QAED,IAAI,SAAS,GAAG,MAAA,MAAM,CAAC,KAAK,0CAAE,IAAI,CAAC;QACnC,IAAI,gBAAgB,CAAC,SAAS,CAAC,EAAE;YAC/B,SAAS,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;SACzC;QACD,IAAI,MAAM,CAAC,IAAI,IAAI,SAAS,KAAK,MAAM,CAAC,IAAI,EAAE;YAC5C,OAAO,KAAK,CAAC;SACd;QAGD,IAAI,MAAM,CAAC,KAAK,KAAK,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,MAA0B,aAA1B,MAAM,uBAAN,MAAM,CAAsB,IAAI,CAAA,EAAE;YACjF,OAAO,KAAK,CAAC;SACd;QAGD,IAAI,MAAM,CAAC,KAAK,KAAK,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,MAA0B,aAA1B,MAAM,uBAAN,MAAM,CAAsB,KAAK,CAAA,EAAE;YACnF,OAAO,KAAK,CAAC;SACd;QAED,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAA,MAAA,MAAM,CAAC,KAAK,0CAAE,MAAM,MAAK,MAAM,CAAC,MAAM,EAAE;YACpE,OAAO,KAAK,CAAC;SACd;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,cAAc,CACpB,MAAmB,EACnB,MAAkC;QAGlC,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,IAAK,MAA0B,CAAC,OAAO,EAAE;YACzE,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YAC1C,MAAM,IAAI,GAAI,MAA0B,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC7D,MAAM,KAAK,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,EAAE,CAAC;YAC/B,uCAAY,MAAM,KAAE,IAAI,EAAE,KAAK,IAAG;SACnC;QACD,yBAAY,MAAM,EAAG;IACvB,CAAC;IAoEO,OAAO,CACb,QAAqC,EACrC,IAAe,EACf,MAAkC;QAElC,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;;YACpC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAqB,CAAC;YAC7C,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE;gBACxD,MAAM,QAAQ,GAAG,OAAO,CAAC,eAAe,IAAI,OAAO,CAAC,QAAQ,CAAC;gBAC7D,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;gBAC5E,MAAM,YAAY,GAAG,UAAU,aAAV,UAAU,cAAV,UAAU,GAAI,MAAA,OAAO,CAAC,KAAK,0CAAE,OAAO,CAAC;gBAC1D,IAAI,YAAY,EAAE;oBAChB,MAAC,MAA0B,CAAC,KAAK,0CAAE,eAAe,EAAE,CAAC;oBACrD,MAAC,MAA0B,CAAC,KAAK,0CAAE,cAAc,EAAE,CAAC;iBACrD;gBACD,OAAO,CAAC,CAAC,YAAY,CAAC;aACvB;YACD,OAAO,SAAS,CAAC;QACnB,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;IACtC,CAAC;IAKO,cAAc,CAAC,KAAwB;QAE7C,IAAI,CAAC,KAAK,EAAE;YACV,OAAO,kBAAkB,CAAC,MAAM,CAAC;SAClC;QACD,IAAI,KAAK,CAAC,KAAK,EAAE;YACf,OAAO,KAAK,CAAC,KAAK,CAAC;SACpB;QACD,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;YACrB,OAAO,kBAAkB,CAAC,KAAK,CAAC;SACjC;QAED,OAAO,kBAAkB,CAAC,MAAM,CAAC;IACnC,CAAC;IAKO,WAAW,CAAC,OAAkC;;QACpD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAE5B,IAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,QAAQ,EAAE;YACnB,OAAO,CAAC,eAAe,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;SACtE;aAAM,IAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,QAAQ,EAAE;YAC1B,OAAO,CAAC,eAAe,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;SACtE;QACD,IAAI,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,IAAI,GAAkB,IAAI,CAAC;QAC/B,IAAI,MAAM,GAAoB,iBAAiB,CAAC,KAAK,CAAC;QACtD,IAAI,QAAQ,GAAkB,IAAI,CAAC;QACnC,IAAI,QAAQ,GAAkB,IAAI,CAAC;QACnC,IAAI,MAAM,GAA0B,IAAI,CAAC;QAEzC,IAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,QAAQ,EAAE;YACnB,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;SAC3B;QAED,IAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,QAAQ,EAAE;YACnB,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;SAC3B;QAED,IAAI,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,KAAI,CAAC,KAAK,KAAK,kBAAkB,CAAC,KAAK,IAAI,KAAK,KAAK,kBAAkB,CAAC,IAAI,CAAC,EAAE;YAC5F,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;SACnB;QACD,IAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,EAAE;YACjB,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;SACvB;QAED,IAAI,OAAO,CAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,EAAE,CAAC,EAAE;YACtB,MAAM,GAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,EAAE,CAAC;YACnB,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC;SAClC;QACD,OAAO,CAAC,MAAM,GAAG;YACf,KAAK;YACL,QAAQ;YACR,IAAI;YACJ,MAAM;YACN,QAAQ;YACR,MAAM;YACN,MAAM,EAAE,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,mCAAI,IAAI;SAC9B,CAAC;QACF,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,cAAc,CAAC,MAAuB;QAC5C,QAAQ,MAAM,EAAE;YACd,KAAK,iBAAiB,CAAC,KAAK;gBAC1B,OAAO,IAAI,CAAC,YAAY,CAAC;YAC3B,KAAK,iBAAiB,CAAC,MAAM;gBAC3B,OAAO,IAAI,CAAC,cAAc,CAAC;YAC7B,KAAK,iBAAiB,CAAC,MAAM;gBAC3B,OAAO,IAAI,CAAC,cAAc,CAAC;YAC7B;gBACE,OAAO,IAAI,CAAC,YAAY,CAAC;SAC5B;IACH,CAAC;IAEO,iBAAiB,CAAC,MAAuB;QAC/C,QAAQ,MAAM,EAAE;YACd,KAAK,iBAAiB,CAAC,KAAK;gBAC1B,OAAO,IAAI,CAAC,cAAc,CAAC;YAC7B,KAAK,iBAAiB,CAAC,MAAM;gBAC3B,OAAO,IAAI,CAAC,gBAAgB,CAAC;YAC/B,KAAK,iBAAiB,CAAC,MAAM;gBAC3B,OAAO,IAAI,CAAC,gBAAgB,CAAC;YAC/B;gBACE,OAAO,IAAI,CAAC,cAAc,CAAC;SAC9B;IACH,CAAC;IAEO,aAAa,CAAC,KAAa;QACjC,OAAO,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAK,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACzG,CAAC;IAEO,mBAAmB,CAAC,KAAa;QACvC,IAAI,eAAuB,CAAC;QAE5B,OAAO,CACL,KAAK;YACL,CAAC,CAAC,eAAe,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC;YAC1D,eAAe,CAAC,cAAc,CAAC,eAAe,CAAC,CAChD,CAAC;IACJ,CAAC;CACF","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 InteractionEventParam\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';\nimport type { IElement } from '@visactor/vgrammar-core';\nimport { Factory as VGrammarFactory } from '@visactor/vgrammar-core';\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 } else if (this._isInteractionEvent(eType) && !listeners.has(eType)) {\n const callback = this._onDelegateInteractionEvent.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 clear(): 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 release(): void {\n this.clear();\n this.globalInstance = null;\n this._compiler = null;\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 * 代理语法层事件的监听回调\n */\n private _onDelegateInteractionEvent = (listenerParams: CompilerListenerParameters) => {\n const chart = this.globalInstance.getChart();\n const event = listenerParams.event;\n let items: IElement[] = null;\n\n if ((event as any).elements) {\n items = (event as any).elements;\n }\n\n const params: InteractionEventParam = {\n event: listenerParams.event,\n chart,\n items,\n datums:\n items &&\n items.map(item => {\n return item.getDatum();\n })\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 private _isInteractionEvent(eType: string) {\n let interactionType: string;\n\n return (\n eType &&\n ((interactionType = eType.split(':')[0]), interactionType) &&\n VGrammarFactory.hasInteraction(interactionType)\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 InteractionEventParam\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';\nimport type { IElement } from '@visactor/vgrammar-core';\nimport { Factory as VGrammarFactory } from '@visactor/vgrammar-core';\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 markLine: 'markLine',\n markArea: 'markArea',\n markPoint: 'markPoint',\n polarMarkLine: 'polarMarkLine',\n polarMarkArea: 'polarMarkArea',\n polarMarkPoint: 'polarMarkPoint',\n geoMarkPoint: 'geoMarkPoint'\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 } else if (this._isInteractionEvent(eType) && !listeners.has(eType)) {\n const callback = this._onDelegateInteractionEvent.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 clear(): 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 release(): void {\n this.clear();\n this.globalInstance = null;\n this._compiler = null;\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 * 代理语法层事件的监听回调\n */\n private _onDelegateInteractionEvent = (listenerParams: CompilerListenerParameters) => {\n const chart = this.globalInstance.getChart();\n const event = listenerParams.event;\n let items: IElement[] = null;\n\n if ((event as any).elements) {\n items = (event as any).elements;\n }\n\n const params: InteractionEventParam = {\n event: listenerParams.event,\n chart,\n items,\n datums:\n items &&\n items.map(item => {\n return item.getDatum();\n })\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 private _isInteractionEvent(eType: string) {\n let interactionType: string;\n\n return (\n eType &&\n ((interactionType = eType.split(':')[0]), interactionType) &&\n VGrammarFactory.hasInteraction(interactionType)\n );\n }\n}\n"]}
@@ -10,6 +10,7 @@ import type { ChartEvent, Event_Bubble_Level, Event_Source_Type, VGRAMMAR_HOOK_E
10
10
  import type { SeriesType } from '../series/interface';
11
11
  import type { TooltipEventParams } from '../component/tooltip/interface/event';
12
12
  import type { ILayoutItem } from '../layout/interface';
13
+ import type { IVChart } from '../core/interface';
13
14
  export type EventType = 'pointerdown' | 'pointerup' | 'pointerupoutside' | 'pointertap' | 'pointerover' | 'pointermove' | 'pointerenter' | 'pointerleave' | 'pointerout' | 'mousedown' | 'mouseup' | 'mouseupoutside' | 'rightdown' | 'rightup' | 'rightupoutside' | 'click' | 'dblclick' | 'mousemove' | 'mouseover' | 'mouseout' | 'mouseenter' | 'mouseleave' | 'wheel' | 'touchstart' | 'touchend' | 'touchendoutside' | 'touchmove' | 'touchcancel' | 'tap' | 'dragstart' | 'drag' | 'dragenter' | 'dragleave' | 'dragover' | 'dragend' | 'drop' | 'pan' | 'panstart' | 'panend' | 'press' | 'pressup' | 'pressend' | 'pinch' | 'pinchstart' | 'pinchend' | 'swipe' | keyof typeof ChartEvent | keyof typeof VGRAMMAR_HOOK_EVENT | string;
14
15
  export type EventBubbleLevel = keyof typeof Event_Bubble_Level;
15
16
  export type ComponentType = 'axis' | 'dataZoom' | 'indicator' | 'legend' | 'mapLabel' | 'markLine' | 'markArea' | 'markPoint' | 'tooltip' | 'title' | 'label' | 'totalLabel' | 'customMark';
@@ -35,6 +36,7 @@ export type EventParams = {
35
36
  chart?: IChart;
36
37
  datum?: Datum;
37
38
  node?: IGraphic;
39
+ vchart?: IVChart;
38
40
  };
39
41
  type SuperEvent = Event & {
40
42
  [key: string]: any;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/event/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type { IGraphic } from '@visactor/vrender-core';\nimport type { IElement } from '@visactor/vgrammar-core';\nimport type { IChart } from '../chart/interface';\nimport type { IModel } from '../model/interface';\nimport type { IMark, MarkType } from '../mark/interface';\nimport type { VChart } from '../core/vchart';\nimport type { DimensionEventParams } from './events/dimension/interface';\nimport type { Datum, IPoint, StringOrNumber } from '../typings';\nimport type { ChartEvent, Event_Bubble_Level, Event_Source_Type, VGRAMMAR_HOOK_EVENT } from '../constant';\nimport type { SeriesType } from '../series/interface';\nimport type { TooltipEventParams } from '../component/tooltip/interface/event';\nimport type { ILayoutItem } from '../layout/interface';\n\nexport type EventType =\n | 'pointerdown'\n | 'pointerup'\n | 'pointerupoutside'\n | 'pointertap'\n | 'pointerover'\n | 'pointermove'\n | 'pointerenter'\n | 'pointerleave'\n | 'pointerout'\n | 'mousedown'\n | 'mouseup'\n | 'mouseupoutside'\n | 'rightdown'\n | 'rightup'\n | 'rightupoutside'\n | 'click'\n | 'dblclick'\n | 'mousemove'\n | 'mouseover'\n | 'mouseout'\n | 'mouseenter'\n | 'mouseleave'\n | 'wheel'\n | 'touchstart'\n | 'touchend'\n | 'touchendoutside'\n | 'touchmove'\n | 'touchcancel'\n | 'tap'\n | 'dragstart'\n | 'drag'\n | 'dragenter'\n | 'dragleave'\n | 'dragover'\n | 'dragend'\n | 'drop'\n | 'pan'\n | 'panstart'\n | 'panend'\n | 'press'\n | 'pressup'\n | 'pressend'\n | 'pinch'\n | 'pinchstart'\n | 'pinchend'\n | 'swipe'\n | keyof typeof ChartEvent\n | keyof typeof VGRAMMAR_HOOK_EVENT\n | string;\n\nexport type EventBubbleLevel = keyof typeof Event_Bubble_Level;\n\nexport type ComponentType =\n | 'axis'\n | 'dataZoom'\n | 'indicator'\n | 'legend'\n | 'mapLabel'\n | 'markLine'\n | 'markArea'\n | 'markPoint'\n | 'tooltip'\n | 'title'\n | 'label'\n | 'totalLabel'\n | 'customMark';\nexport type EventTargetType = MarkType | ComponentType | SeriesType;\n\nexport type EventSourceType = keyof typeof Event_Source_Type;\n\n/**\n * 事件 API 中的事件筛选配置\n */\nexport type EventQuery = {\n /**\n * 事件的冒泡层级配置,其中 model 指的是图表的内部模型,包括 region、series 以及 component\n */\n level?: EventBubbleLevel;\n /**\n * 事件来源配置。\n * - `window`: window 事件\n * - `chart`: 图表事件\n */\n source?: EventSourceType;\n\n /**\n * vrender 图形节点名称\n */\n nodeName?: string;\n /**\n * mark 图元名称\n */\n markName?: string;\n /**\n * 仅在 level 为 'mark' 或者 'model' 的场景下使用,用于筛选 mark 类型或者图表组成元素模型类型\n */\n type?: EventTargetType;\n /**\n * 用户在 spec 上配置的 id\n */\n id?: StringOrNumber;\n /**\n * 自定义过滤函数\n * @param params\n * @returns\n */\n filter?: (params: Partial<BaseEventParams>) => boolean;\n\n throttle?: number;\n debounce?: number;\n /**\n * 是否阻止冒泡\n */\n consume?: boolean;\n};\n\nexport type EventParams = {\n /**\n * 事件对象\n */\n event?: SuperEvent;\n /**\n * 供不同的事件用于存储期望携带的数据\n */\n value?: any;\n /**\n * 事件来源的 mark\n */\n mark?: IMark;\n /**\n * 事件来源的 model\n */\n model?: IModel;\n /**\n * 事件来源的 chart\n */\n chart?: IChart;\n /**\n * 事件拾取到的图元的数据\n */\n datum?: Datum;\n /**\n * 拾取到的图形节点\n */\n node?: IGraphic;\n};\n\ntype SuperEvent = Event & {\n [key: string]: any;\n};\n\nexport type BaseEventParams = EventParams & {\n /**\n * 事件对象\n */\n event: SuperEvent;\n item: IElement;\n datum: Datum;\n source: EventSourceType;\n itemMap: Map<string, any>;\n};\n\nexport type EventCallback<Params extends EventParams> = (params: Params) => boolean | void;\n\n/**\n * 内部事件分发中所应用的事件筛选配置\n */\nexport type EventFilter = {\n source: EventSourceType;\n level: EventBubbleLevel;\n type: string | null;\n markName: string | null;\n nodeName: string | null;\n userId: StringOrNumber | null;\n filter: (params: Partial<BaseEventParams>) => boolean | null;\n};\n\nexport type EventHandler<Params extends EventParams> = {\n callback: EventCallback<Params>;\n query: EventQuery | null;\n // 如果有 debounce/throttle 配置则需要封装原始回调函数\n wrappedCallback?: EventCallback<Params>;\n // 转换后的事件筛选配置\n filter?: EventFilter;\n};\n\nexport type ExtendEventParam = EventParams & {\n event?: Event;\n item?: any;\n datum?: Datum;\n source?: EventSourceType;\n itemMap?: Map<string, any>;\n};\n\nexport type LayoutEventParam = {\n elements: (ILayoutItem & { type: string })[];\n} & Partial<BaseEventParams>;\n\nexport type PanEventParam = ExtendEventParam & {\n // x/y方向上的偏移值\n delta: [number, number];\n};\n\nexport type ZoomEventParam = ExtendEventParam & {\n // 缩放值\n scale: number;\n // 缩放中心\n scaleCenter: IPoint;\n};\n\nexport type InteractionEventParam = {\n items?: IElement[];\n datums?: Datum[];\n} & Partial<BaseEventParams>;\n\nexport type EventParamsDefinition = {\n // 基础事件回调参数\n pointerdown: BaseEventParams;\n pointerup: BaseEventParams;\n pointerupoutside: BaseEventParams;\n pointertap: BaseEventParams;\n pointerover: BaseEventParams;\n pointermove: BaseEventParams;\n pointerenter: BaseEventParams;\n pointerleave: BaseEventParams;\n pointerout: BaseEventParams;\n mousedown: BaseEventParams;\n mouseup: BaseEventParams;\n mouseupoutside: BaseEventParams;\n rightdown: BaseEventParams;\n rightup: BaseEventParams;\n rightupoutside: BaseEventParams;\n click: BaseEventParams;\n dblclick: BaseEventParams;\n mousemove: BaseEventParams;\n mouseover: BaseEventParams;\n mouseout: BaseEventParams;\n mouseenter: BaseEventParams;\n mouseleave: BaseEventParams;\n wheel: BaseEventParams;\n touchstart: BaseEventParams;\n touchend: BaseEventParams;\n touchendoutside: BaseEventParams;\n touchmove: BaseEventParams;\n touchcancel: BaseEventParams;\n\n dragstart: BaseEventParams;\n drag: BaseEventParams;\n dragenter: BaseEventParams;\n dragleave: BaseEventParams;\n dragover: BaseEventParams;\n dragend: BaseEventParams;\n drop: BaseEventParams;\n\n tap: BaseEventParams;\n pan: BaseEventParams;\n panstart: BaseEventParams;\n panend: BaseEventParams;\n press: BaseEventParams;\n pressup: BaseEventParams;\n pressend: BaseEventParams;\n pinch: BaseEventParams;\n pinchstart: BaseEventParams;\n pinchend: BaseEventParams;\n swipe: BaseEventParams;\n\n // VChart 内置的扩展组合事件\n dimensionHover: DimensionEventParams;\n dimensionClick: DimensionEventParams;\n tooltipShow: TooltipEventParams;\n tooltipHide: TooltipEventParams;\n tooltipRelease: TooltipEventParams;\n afterLayout: LayoutEventParam;\n\n // 交互相关事件\n 'element-select:start': InteractionEventParam;\n 'element-select:reset': InteractionEventParam;\n 'element-highlight:start': InteractionEventParam;\n 'element-highlight:reset': InteractionEventParam;\n\n // 扩展事件参数\n [key: string]: ExtendEventParam;\n};\n\nexport interface IEventDispatcher {\n globalInstance: VChart;\n register: <Evt extends EventType>(eType: Evt, handler: EventHandler<EventParamsDefinition[Evt]>) => this;\n unregister: <Evt extends EventType>(eType: Evt, handler?: EventHandler<EventParamsDefinition[Evt]>) => this;\n dispatch: <Evt extends EventType>(eType: Evt, params?: EventParamsDefinition[Evt], level?: EventBubbleLevel) => this;\n clear: () => void;\n release: () => void;\n}\n\nexport interface IEvent {\n on: (<Evt extends EventType>(eType: Evt, callback: EventCallback<EventParamsDefinition[Evt]>) => this) &\n (<Evt extends EventType>(\n eType: Evt,\n query: EventQuery,\n callback: EventCallback<EventParamsDefinition[Evt]>\n ) => this);\n off: (<Evt extends EventType>(eType: Evt, callback?: EventCallback<EventParamsDefinition[Evt]>) => this) &\n (<Evt extends EventType>(\n eType: Evt,\n query: EventQuery,\n callback: EventCallback<EventParamsDefinition[Evt]>\n ) => this);\n emit: <Evt extends EventType>(eType: Evt, params: EventParamsDefinition[Evt], level?: EventBubbleLevel) => void;\n release: () => void;\n\n getComposedEventMap: () => Map<EventCallback<EventParams>, { eventType: EventType; event: IComposedEvent }>;\n}\n\nexport interface IComposedEvent {\n register: <Evt extends EventType>(eType: Evt, handler: EventHandler<EventParamsDefinition[Evt]>) => void;\n unregister: () => void;\n dispatch: (v: unknown, opt: unknown) => unknown;\n}\n"]}
1
+ {"version":3,"sources":["../src/event/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type { IGraphic } from '@visactor/vrender-core';\nimport type { IElement } from '@visactor/vgrammar-core';\nimport type { IChart } from '../chart/interface';\nimport type { IModel } from '../model/interface';\nimport type { IMark, MarkType } from '../mark/interface';\nimport type { VChart } from '../core/vchart';\nimport type { DimensionEventParams } from './events/dimension/interface';\nimport type { Datum, IPoint, StringOrNumber } from '../typings';\nimport type { ChartEvent, Event_Bubble_Level, Event_Source_Type, VGRAMMAR_HOOK_EVENT } from '../constant';\nimport type { SeriesType } from '../series/interface';\nimport type { TooltipEventParams } from '../component/tooltip/interface/event';\nimport type { ILayoutItem } from '../layout/interface';\nimport type { IVChart } from '../core/interface';\n\nexport type EventType =\n | 'pointerdown'\n | 'pointerup'\n | 'pointerupoutside'\n | 'pointertap'\n | 'pointerover'\n | 'pointermove'\n | 'pointerenter'\n | 'pointerleave'\n | 'pointerout'\n | 'mousedown'\n | 'mouseup'\n | 'mouseupoutside'\n | 'rightdown'\n | 'rightup'\n | 'rightupoutside'\n | 'click'\n | 'dblclick'\n | 'mousemove'\n | 'mouseover'\n | 'mouseout'\n | 'mouseenter'\n | 'mouseleave'\n | 'wheel'\n | 'touchstart'\n | 'touchend'\n | 'touchendoutside'\n | 'touchmove'\n | 'touchcancel'\n | 'tap'\n | 'dragstart'\n | 'drag'\n | 'dragenter'\n | 'dragleave'\n | 'dragover'\n | 'dragend'\n | 'drop'\n | 'pan'\n | 'panstart'\n | 'panend'\n | 'press'\n | 'pressup'\n | 'pressend'\n | 'pinch'\n | 'pinchstart'\n | 'pinchend'\n | 'swipe'\n | keyof typeof ChartEvent\n | keyof typeof VGRAMMAR_HOOK_EVENT\n | string;\n\nexport type EventBubbleLevel = keyof typeof Event_Bubble_Level;\n\nexport type ComponentType =\n | 'axis'\n | 'dataZoom'\n | 'indicator'\n | 'legend'\n | 'mapLabel'\n | 'markLine'\n | 'markArea'\n | 'markPoint'\n | 'tooltip'\n | 'title'\n | 'label'\n | 'totalLabel'\n | 'customMark';\nexport type EventTargetType = MarkType | ComponentType | SeriesType;\n\nexport type EventSourceType = keyof typeof Event_Source_Type;\n\n/**\n * 事件 API 中的事件筛选配置\n */\nexport type EventQuery = {\n /**\n * 事件的冒泡层级配置,其中 model 指的是图表的内部模型,包括 region、series 以及 component\n */\n level?: EventBubbleLevel;\n /**\n * 事件来源配置。\n * - `window`: window 事件\n * - `chart`: 图表事件\n */\n source?: EventSourceType;\n\n /**\n * vrender 图形节点名称\n */\n nodeName?: string;\n /**\n * mark 图元名称\n */\n markName?: string;\n /**\n * 仅在 level 为 'mark' 或者 'model' 的场景下使用,用于筛选 mark 类型或者图表组成元素模型类型\n */\n type?: EventTargetType;\n /**\n * 用户在 spec 上配置的 id\n */\n id?: StringOrNumber;\n /**\n * 自定义过滤函数\n * @param params\n * @returns\n */\n filter?: (params: Partial<BaseEventParams>) => boolean;\n\n throttle?: number;\n debounce?: number;\n /**\n * 是否阻止冒泡\n */\n consume?: boolean;\n};\n\nexport type EventParams = {\n /**\n * 事件对象\n */\n event?: SuperEvent;\n /**\n * 供不同的事件用于存储期望携带的数据\n */\n value?: any;\n /**\n * 事件来源的 mark\n */\n mark?: IMark;\n /**\n * 事件来源的 model\n */\n model?: IModel;\n /**\n * 事件来源的 chart\n */\n chart?: IChart;\n /**\n * 事件拾取到的图元的数据\n */\n datum?: Datum;\n /**\n * 拾取到的图形节点\n */\n node?: IGraphic;\n /**\n * @since 1.10.4\n * 生命周期相关事件,包括:\n * - 'rendered'\n * - 'initialized'\n * - 'animationFinished'\n * - 'renderFinished'\n * - 'layoutStart'\n * - 'layoutEnd'\n * 会返回vchart实例\n */\n vchart?: IVChart;\n};\n\ntype SuperEvent = Event & {\n [key: string]: any;\n};\n\nexport type BaseEventParams = EventParams & {\n /**\n * 事件对象\n */\n event: SuperEvent;\n item: IElement;\n datum: Datum;\n source: EventSourceType;\n itemMap: Map<string, any>;\n};\n\nexport type EventCallback<Params extends EventParams> = (params: Params) => boolean | void;\n\n/**\n * 内部事件分发中所应用的事件筛选配置\n */\nexport type EventFilter = {\n source: EventSourceType;\n level: EventBubbleLevel;\n type: string | null;\n markName: string | null;\n nodeName: string | null;\n userId: StringOrNumber | null;\n filter: (params: Partial<BaseEventParams>) => boolean | null;\n};\n\nexport type EventHandler<Params extends EventParams> = {\n callback: EventCallback<Params>;\n query: EventQuery | null;\n // 如果有 debounce/throttle 配置则需要封装原始回调函数\n wrappedCallback?: EventCallback<Params>;\n // 转换后的事件筛选配置\n filter?: EventFilter;\n};\n\nexport type ExtendEventParam = EventParams & {\n event?: Event;\n item?: any;\n datum?: Datum;\n source?: EventSourceType;\n itemMap?: Map<string, any>;\n};\n\nexport type LayoutEventParam = {\n elements: (ILayoutItem & { type: string })[];\n} & Partial<BaseEventParams>;\n\nexport type PanEventParam = ExtendEventParam & {\n // x/y方向上的偏移值\n delta: [number, number];\n};\n\nexport type ZoomEventParam = ExtendEventParam & {\n // 缩放值\n scale: number;\n // 缩放中心\n scaleCenter: IPoint;\n};\n\nexport type InteractionEventParam = {\n items?: IElement[];\n datums?: Datum[];\n} & Partial<BaseEventParams>;\n\nexport type EventParamsDefinition = {\n // 基础事件回调参数\n pointerdown: BaseEventParams;\n pointerup: BaseEventParams;\n pointerupoutside: BaseEventParams;\n pointertap: BaseEventParams;\n pointerover: BaseEventParams;\n pointermove: BaseEventParams;\n pointerenter: BaseEventParams;\n pointerleave: BaseEventParams;\n pointerout: BaseEventParams;\n mousedown: BaseEventParams;\n mouseup: BaseEventParams;\n mouseupoutside: BaseEventParams;\n rightdown: BaseEventParams;\n rightup: BaseEventParams;\n rightupoutside: BaseEventParams;\n click: BaseEventParams;\n dblclick: BaseEventParams;\n mousemove: BaseEventParams;\n mouseover: BaseEventParams;\n mouseout: BaseEventParams;\n mouseenter: BaseEventParams;\n mouseleave: BaseEventParams;\n wheel: BaseEventParams;\n touchstart: BaseEventParams;\n touchend: BaseEventParams;\n touchendoutside: BaseEventParams;\n touchmove: BaseEventParams;\n touchcancel: BaseEventParams;\n\n dragstart: BaseEventParams;\n drag: BaseEventParams;\n dragenter: BaseEventParams;\n dragleave: BaseEventParams;\n dragover: BaseEventParams;\n dragend: BaseEventParams;\n drop: BaseEventParams;\n\n tap: BaseEventParams;\n pan: BaseEventParams;\n panstart: BaseEventParams;\n panend: BaseEventParams;\n press: BaseEventParams;\n pressup: BaseEventParams;\n pressend: BaseEventParams;\n pinch: BaseEventParams;\n pinchstart: BaseEventParams;\n pinchend: BaseEventParams;\n swipe: BaseEventParams;\n\n // VChart 内置的扩展组合事件\n dimensionHover: DimensionEventParams;\n dimensionClick: DimensionEventParams;\n tooltipShow: TooltipEventParams;\n tooltipHide: TooltipEventParams;\n tooltipRelease: TooltipEventParams;\n afterLayout: LayoutEventParam;\n\n // 交互相关事件\n 'element-select:start': InteractionEventParam;\n 'element-select:reset': InteractionEventParam;\n 'element-highlight:start': InteractionEventParam;\n 'element-highlight:reset': InteractionEventParam;\n\n // 扩展事件参数\n [key: string]: ExtendEventParam;\n};\n\nexport interface IEventDispatcher {\n globalInstance: VChart;\n register: <Evt extends EventType>(eType: Evt, handler: EventHandler<EventParamsDefinition[Evt]>) => this;\n unregister: <Evt extends EventType>(eType: Evt, handler?: EventHandler<EventParamsDefinition[Evt]>) => this;\n dispatch: <Evt extends EventType>(eType: Evt, params?: EventParamsDefinition[Evt], level?: EventBubbleLevel) => this;\n clear: () => void;\n release: () => void;\n}\n\nexport interface IEvent {\n on: (<Evt extends EventType>(eType: Evt, callback: EventCallback<EventParamsDefinition[Evt]>) => this) &\n (<Evt extends EventType>(\n eType: Evt,\n query: EventQuery,\n callback: EventCallback<EventParamsDefinition[Evt]>\n ) => this);\n off: (<Evt extends EventType>(eType: Evt, callback?: EventCallback<EventParamsDefinition[Evt]>) => this) &\n (<Evt extends EventType>(\n eType: Evt,\n query: EventQuery,\n callback: EventCallback<EventParamsDefinition[Evt]>\n ) => this);\n emit: <Evt extends EventType>(eType: Evt, params: EventParamsDefinition[Evt], level?: EventBubbleLevel) => void;\n release: () => void;\n\n getComposedEventMap: () => Map<EventCallback<EventParams>, { eventType: EventType; event: IComposedEvent }>;\n}\n\nexport interface IComposedEvent {\n register: <Evt extends EventType>(eType: Evt, handler: EventHandler<EventParamsDefinition[Evt]>) => void;\n unregister: () => void;\n dispatch: (v: unknown, opt: unknown) => unknown;\n}\n"]}
package/esm/index-lark.js CHANGED
@@ -68,11 +68,11 @@ import { registerIndicator } from "./component/indicator";
68
68
 
69
69
  import { registerGeoCoordinate } from "./component/geo";
70
70
 
71
- import { registerMarkLine } from "./component/marker/mark-line";
71
+ import { registerMarkLine, registerPolarMarkLine } from "./component/marker/mark-line";
72
72
 
73
73
  import { registerTitle } from "./component/title";
74
74
 
75
- import { registerMarkArea } from "./component/marker/mark-area";
75
+ import { registerMarkArea, registerPolarMarkArea } from "./component/marker/mark-area";
76
76
 
77
77
  import { registerPlayer } from "./component/player";
78
78
 
@@ -80,7 +80,7 @@ import { registerLabel } from "./component/label";
80
80
 
81
81
  import { registerTotalLabel } from "./component/label/total-label";
82
82
 
83
- import { registerMarkPoint } from "./component/marker/mark-point";
83
+ import { registerMarkPoint, registerPolarMarkPoint, registerGeoMarkPoint } from "./component/marker/mark-point";
84
84
 
85
85
  import { registerBrush } from "./component/brush";
86
86
 
@@ -96,7 +96,7 @@ import { registerCanvasTooltipHandler, registerFormatPlugin } from "./plugin";
96
96
 
97
97
  import { registerElementHighlight, registerElementSelect } from "@visactor/vgrammar-core";
98
98
 
99
- VChart.useRegisters([ registerLineChart, registerAreaChart, registerBarChart, registerScatterChart, registerPieChart, registerRoseChart, registerRadarChart, registerHistogramChart, registerMapChart, registerGaugeChart, registerWordCloudChart, registerFunnelChart, registerWaterfallChart, registerBoxplotChart, registerCircularProgressChart, registerLinearProgressChart, registerRangeColumnChart, registerRangeAreaChart, registerSunburstChart, registerCirclePackingChart, registerTreemapChart, registerSankeyChart, registerHeatmapChart, registerCorrelationChart, registerCommonChart, registerCartesianLinearAxis, registerCartesianBandAxis, registerCartesianTimeAxis, registerCartesianLogAxis, registerCartesianSymlogAxis, registerPolarBandAxis, registerPolarLinearAxis, registerDiscreteLegend, registerContinuousLegend, registerTooltip, registerCartesianCrossHair, registerPolarCrossHair, registerDataZoom, registerScrollBar, registerIndicator, registerGeoCoordinate, registerMarkPoint, registerMarkLine, registerMarkArea, registerTitle, registerPlayer, registerLabel, registerTotalLabel, registerBrush, registerCustomMark, registerMapLabel, registerPoptip, registerGridLayout, registerCanvasTooltipHandler, registerFormatPlugin, registerElementHighlight, registerElementSelect ]),
99
+ VChart.useRegisters([ registerLineChart, registerAreaChart, registerBarChart, registerScatterChart, registerPieChart, registerRoseChart, registerRadarChart, registerHistogramChart, registerMapChart, registerGaugeChart, registerWordCloudChart, registerFunnelChart, registerWaterfallChart, registerBoxplotChart, registerCircularProgressChart, registerLinearProgressChart, registerRangeColumnChart, registerRangeAreaChart, registerSunburstChart, registerCirclePackingChart, registerTreemapChart, registerSankeyChart, registerHeatmapChart, registerCorrelationChart, registerCommonChart, registerCartesianLinearAxis, registerCartesianBandAxis, registerCartesianTimeAxis, registerCartesianLogAxis, registerCartesianSymlogAxis, registerPolarBandAxis, registerPolarLinearAxis, registerDiscreteLegend, registerContinuousLegend, registerTooltip, registerCartesianCrossHair, registerPolarCrossHair, registerDataZoom, registerScrollBar, registerIndicator, registerGeoCoordinate, registerMarkLine, registerMarkArea, registerMarkPoint, registerPolarMarkLine, registerPolarMarkArea, registerPolarMarkPoint, registerGeoMarkPoint, registerTitle, registerPlayer, registerLabel, registerTotalLabel, registerBrush, registerCustomMark, registerMapLabel, registerPoptip, registerGridLayout, registerCanvasTooltipHandler, registerFormatPlugin, registerElementHighlight, registerElementSelect ]),
100
100
  VChart.useRegisters([ registerLarkEnv ]);
101
101
 
102
102
  export { VChart };