@visactor/vchart 2.1.0-alpha.0 → 2.1.0-alpha.10

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 (516) hide show
  1. package/build/es5/index.js +3 -3
  2. package/build/index.es.js +5977 -3297
  3. package/build/index.js +5977 -3297
  4. package/build/index.min.js +2 -2
  5. package/build/tsconfig.tsbuildinfo +1 -1
  6. package/cjs/chart/base/base-chart-transformer.d.ts +3 -0
  7. package/cjs/chart/base/base-chart-transformer.js +23 -3
  8. package/cjs/chart/base/base-chart-transformer.js.map +1 -1
  9. package/cjs/chart/base/base-chart.d.ts +25 -9
  10. package/cjs/chart/base/base-chart.js +199 -27
  11. package/cjs/chart/base/base-chart.js.map +1 -1
  12. package/cjs/chart/gauge/gauge-transformer.js +3 -2
  13. package/cjs/chart/gauge/gauge-transformer.js.map +1 -1
  14. package/cjs/chart/interface/chart.d.ts +1 -0
  15. package/cjs/chart/interface/chart.js.map +1 -1
  16. package/cjs/chart/pie/base/pie-transformer.js +2 -2
  17. package/cjs/chart/pie/base/pie-transformer.js.map +1 -1
  18. package/cjs/chart/polar/polar-transformer.js +1 -1
  19. package/cjs/chart/polar/polar-transformer.js.map +1 -1
  20. package/cjs/chart/polar/progress-like/progress-like-transformer.js +1 -1
  21. package/cjs/chart/polar/progress-like/progress-like-transformer.js.map +1 -1
  22. package/cjs/chart/progress/circular/circular-progress-transformer.js +2 -1
  23. package/cjs/chart/progress/circular/circular-progress-transformer.js.map +1 -1
  24. package/cjs/chart/progress/linear/linear-progress-transformer.js +1 -1
  25. package/cjs/chart/progress/linear/linear-progress-transformer.js.map +1 -1
  26. package/cjs/chart/radar/radar-transformer.js +3 -2
  27. package/cjs/chart/radar/radar-transformer.js.map +1 -1
  28. package/cjs/chart/range-area/range-area-transformer.js +2 -2
  29. package/cjs/chart/range-area/range-area-transformer.js.map +1 -1
  30. package/cjs/chart/rose/rose-transformer.js +2 -1
  31. package/cjs/chart/rose/rose-transformer.js.map +1 -1
  32. package/cjs/chart/util.d.ts +4 -1
  33. package/cjs/chart/util.js +40 -4
  34. package/cjs/chart/util.js.map +1 -1
  35. package/cjs/chart/waterfall/waterfall-transformer.js +2 -1
  36. package/cjs/chart/waterfall/waterfall-transformer.js.map +1 -1
  37. package/cjs/compile/compiler.js +11 -9
  38. package/cjs/compile/compiler.js.map +1 -1
  39. package/cjs/compile/data/compilable-data.d.ts +1 -1
  40. package/cjs/compile/data/compilable-data.js +1 -1
  41. package/cjs/compile/data/compilable-data.js.map +1 -1
  42. package/cjs/compile/grammar-item.d.ts +1 -1
  43. package/cjs/compile/grammar-item.js.map +1 -1
  44. package/cjs/compile/interface/compilable-item.d.ts +1 -1
  45. package/cjs/compile/interface/compilable-item.js.map +1 -1
  46. package/cjs/component/axis/base-axis.d.ts +2 -7
  47. package/cjs/component/axis/base-axis.js +26 -6
  48. package/cjs/component/axis/base-axis.js.map +1 -1
  49. package/cjs/component/axis/cartesian/band-axis.d.ts +1 -7
  50. package/cjs/component/axis/mixin/linear-axis-mixin.js +7 -10
  51. package/cjs/component/axis/mixin/linear-axis-mixin.js.map +1 -1
  52. package/cjs/component/axis/polar/band-axis.d.ts +2 -0
  53. package/cjs/component/axis/polar/band-axis.js +3 -0
  54. package/cjs/component/axis/polar/band-axis.js.map +1 -1
  55. package/cjs/component/axis/polar/linear-axis.js +3 -0
  56. package/cjs/component/axis/polar/linear-axis.js.map +1 -1
  57. package/cjs/component/base/base-component.d.ts +7 -7
  58. package/cjs/component/base/base-component.js +41 -6
  59. package/cjs/component/base/base-component.js.map +1 -1
  60. package/cjs/component/base/release-vrender-component.d.ts +10 -0
  61. package/cjs/component/base/release-vrender-component.js +37 -0
  62. package/cjs/component/base/release-vrender-component.js.map +1 -0
  63. package/cjs/component/brush/brush.d.ts +3 -7
  64. package/cjs/component/brush/brush.js +22 -5
  65. package/cjs/component/brush/brush.js.map +1 -1
  66. package/cjs/component/crosshair/base.d.ts +4 -7
  67. package/cjs/component/crosshair/base.js +30 -2
  68. package/cjs/component/crosshair/base.js.map +1 -1
  69. package/cjs/component/custom-mark/custom-mark.d.ts +4 -7
  70. package/cjs/component/custom-mark/custom-mark.js +27 -3
  71. package/cjs/component/custom-mark/custom-mark.js.map +1 -1
  72. package/cjs/component/data-zoom/data-filter-base-component.d.ts +3 -7
  73. package/cjs/component/data-zoom/data-filter-base-component.js +15 -2
  74. package/cjs/component/data-zoom/data-filter-base-component.js.map +1 -1
  75. package/cjs/component/data-zoom/data-zoom/data-zoom.d.ts +1 -0
  76. package/cjs/component/data-zoom/data-zoom/data-zoom.js +19 -1
  77. package/cjs/component/data-zoom/data-zoom/data-zoom.js.map +1 -1
  78. package/cjs/component/data-zoom/scroll-bar/scroll-bar.d.ts +1 -0
  79. package/cjs/component/data-zoom/scroll-bar/scroll-bar.js +12 -1
  80. package/cjs/component/data-zoom/scroll-bar/scroll-bar.js.map +1 -1
  81. package/cjs/component/geo/geo-coordinate.d.ts +1 -7
  82. package/cjs/component/index.js +1 -2
  83. package/cjs/component/indicator/indicator.d.ts +1 -0
  84. package/cjs/component/indicator/indicator.js +11 -2
  85. package/cjs/component/indicator/indicator.js.map +1 -1
  86. package/cjs/component/indicator/util.d.ts +4 -3
  87. package/cjs/component/indicator/util.js +1 -1
  88. package/cjs/component/indicator/util.js.map +1 -1
  89. package/cjs/component/label/base-label.d.ts +1 -7
  90. package/cjs/component/label/base-label.js +6 -2
  91. package/cjs/component/label/base-label.js.map +1 -1
  92. package/cjs/component/label/label.js +1 -1
  93. package/cjs/component/label/label.js.map +1 -1
  94. package/cjs/component/legend/base-legend.d.ts +2 -7
  95. package/cjs/component/legend/base-legend.js +20 -3
  96. package/cjs/component/legend/base-legend.js.map +1 -1
  97. package/cjs/component/marker/base-marker.d.ts +14 -7
  98. package/cjs/component/marker/base-marker.js +108 -12
  99. package/cjs/component/marker/base-marker.js.map +1 -1
  100. package/cjs/component/marker/mark-area/cartesian-mark-area.js +3 -3
  101. package/cjs/component/marker/mark-area/cartesian-mark-area.js.map +1 -1
  102. package/cjs/component/marker/mark-area/polar-mark-area.js +2 -2
  103. package/cjs/component/marker/mark-area/polar-mark-area.js.map +1 -1
  104. package/cjs/component/marker/mark-line/base-mark-line.js +2 -4
  105. package/cjs/component/marker/mark-line/base-mark-line.js.map +1 -1
  106. package/cjs/component/marker/mark-line/cartesian-mark-line.js +2 -2
  107. package/cjs/component/marker/mark-line/cartesian-mark-line.js.map +1 -1
  108. package/cjs/component/marker/mark-line/polar-mark-line.js +2 -2
  109. package/cjs/component/marker/mark-line/polar-mark-line.js.map +1 -1
  110. package/cjs/component/marker/mark-point/base-mark-point.js +20 -6
  111. package/cjs/component/marker/mark-point/base-mark-point.js.map +1 -1
  112. package/cjs/component/marker/mark-point/cartesian-mark-point.js +2 -2
  113. package/cjs/component/marker/mark-point/cartesian-mark-point.js.map +1 -1
  114. package/cjs/component/marker/mark-point/polar-mark-point.js +1 -1
  115. package/cjs/component/marker/mark-point/polar-mark-point.js.map +1 -1
  116. package/cjs/component/marker/utils.d.ts +4 -4
  117. package/cjs/component/marker/utils.js +27 -23
  118. package/cjs/component/marker/utils.js.map +1 -1
  119. package/cjs/component/player/player.d.ts +1 -0
  120. package/cjs/component/player/player.js +10 -0
  121. package/cjs/component/player/player.js.map +1 -1
  122. package/cjs/component/title/title.d.ts +1 -7
  123. package/cjs/component/title/title.js +6 -2
  124. package/cjs/component/title/title.js.map +1 -1
  125. package/cjs/component/tooltip/tooltip.d.ts +1 -0
  126. package/cjs/component/tooltip/tooltip.js +8 -0
  127. package/cjs/component/tooltip/tooltip.js.map +1 -1
  128. package/cjs/constant/attribute.js +2 -1
  129. package/cjs/constant/scatter.js +1 -2
  130. package/cjs/constant/waterfall.js +2 -1
  131. package/cjs/core/expression-function.js +1 -1
  132. package/cjs/core/vchart.d.ts +5 -1
  133. package/cjs/core/vchart.js +29 -17
  134. package/cjs/core/vchart.js.map +1 -1
  135. package/cjs/data/data-view-utils.d.ts +5 -0
  136. package/cjs/data/data-view-utils.js +58 -0
  137. package/cjs/data/data-view-utils.js.map +1 -0
  138. package/cjs/data/initialize.js +1 -1
  139. package/cjs/data/register.js +1 -1
  140. package/cjs/data/transforms/box-plot.d.ts +4 -1
  141. package/cjs/data/transforms/box-plot.js +3 -3
  142. package/cjs/data/transforms/box-plot.js.map +1 -1
  143. package/cjs/data/transforms/correlation-center.d.ts +11 -4
  144. package/cjs/data/transforms/correlation-center.js +3 -2
  145. package/cjs/data/transforms/correlation-center.js.map +1 -1
  146. package/cjs/data/transforms/correlation.d.ts +18 -15
  147. package/cjs/data/transforms/correlation.js +22 -17
  148. package/cjs/data/transforms/correlation.js.map +1 -1
  149. package/cjs/data/transforms/funnel.d.ts +10 -8
  150. package/cjs/data/transforms/funnel.js +4 -3
  151. package/cjs/data/transforms/funnel.js.map +1 -1
  152. package/cjs/data/transforms/lookup.d.ts +3 -3
  153. package/cjs/data/transforms/lookup.js +12 -7
  154. package/cjs/data/transforms/lookup.js.map +1 -1
  155. package/cjs/data/transforms/map.d.ts +8 -2
  156. package/cjs/data/transforms/map.js +9 -6
  157. package/cjs/data/transforms/map.js.map +1 -1
  158. package/cjs/data/transforms/sankey.d.ts +12 -4
  159. package/cjs/data/transforms/sankey.js +18 -13
  160. package/cjs/data/transforms/sankey.js.map +1 -1
  161. package/cjs/data/transforms/stack-split.d.ts +2 -1
  162. package/cjs/data/transforms/stack-split.js +1 -1
  163. package/cjs/data/transforms/stack-split.js.map +1 -1
  164. package/cjs/data/transforms/treemap.d.ts +5 -3
  165. package/cjs/data/transforms/treemap.js +7 -6
  166. package/cjs/data/transforms/treemap.js.map +1 -1
  167. package/cjs/data/transforms/venn.d.ts +4 -2
  168. package/cjs/data/transforms/venn.js +4 -4
  169. package/cjs/data/transforms/venn.js.map +1 -1
  170. package/cjs/data/transforms/waterfall.d.ts +4 -2
  171. package/cjs/data/transforms/waterfall.js +7 -7
  172. package/cjs/data/transforms/waterfall.js.map +1 -1
  173. package/cjs/env/env.js +1 -1
  174. package/cjs/env/index.js +1 -1
  175. package/cjs/event/event.d.ts +4 -0
  176. package/cjs/event/event.js +26 -7
  177. package/cjs/event/event.js.map +1 -1
  178. package/cjs/mark/base/base-mark.d.ts +12 -2
  179. package/cjs/mark/base/base-mark.js +86 -23
  180. package/cjs/mark/base/base-mark.js.map +1 -1
  181. package/cjs/mark/component.d.ts +9 -0
  182. package/cjs/mark/component.js +51 -3
  183. package/cjs/mark/component.js.map +1 -1
  184. package/cjs/mark/group.js +1 -1
  185. package/cjs/mark/group.js.map +1 -1
  186. package/cjs/mark/interface/mark.d.ts +2 -0
  187. package/cjs/mark/interface/mark.js.map +1 -1
  188. package/cjs/model/base-model.d.ts +3 -15
  189. package/cjs/model/base-model.js.map +1 -1
  190. package/cjs/model/interface.d.ts +13 -0
  191. package/cjs/model/interface.js.map +1 -1
  192. package/cjs/region/region.d.ts +1 -7
  193. package/cjs/scale/color-ordinal-scale.d.ts +1 -0
  194. package/cjs/scale/color-ordinal-scale.js +3 -0
  195. package/cjs/scale/color-ordinal-scale.js.map +1 -1
  196. package/cjs/scale/global-scale.js +9 -2
  197. package/cjs/scale/global-scale.js.map +1 -1
  198. package/cjs/series/area/area.d.ts +2 -0
  199. package/cjs/series/area/area.js +6 -0
  200. package/cjs/series/area/area.js.map +1 -1
  201. package/cjs/series/bar/bar.d.ts +3 -0
  202. package/cjs/series/bar/bar.js +30 -4
  203. package/cjs/series/bar/bar.js.map +1 -1
  204. package/cjs/series/base/base-series.d.ts +10 -7
  205. package/cjs/series/base/base-series.js +78 -18
  206. package/cjs/series/base/base-series.js.map +1 -1
  207. package/cjs/series/base/constant.d.ts +3 -0
  208. package/cjs/series/base/constant.js +9 -1
  209. package/cjs/series/base/constant.js.map +1 -1
  210. package/cjs/series/box-plot/box-plot.d.ts +2 -0
  211. package/cjs/series/box-plot/box-plot.js +16 -4
  212. package/cjs/series/box-plot/box-plot.js.map +1 -1
  213. package/cjs/series/correlation/correlation.js +13 -11
  214. package/cjs/series/correlation/correlation.js.map +1 -1
  215. package/cjs/series/dot/dot.d.ts +12 -0
  216. package/cjs/series/dot/dot.js +16 -1
  217. package/cjs/series/dot/dot.js.map +1 -1
  218. package/cjs/series/funnel/funnel.js +5 -8
  219. package/cjs/series/funnel/funnel.js.map +1 -1
  220. package/cjs/series/heatmap/heatmap.d.ts +2 -0
  221. package/cjs/series/heatmap/heatmap.js +10 -0
  222. package/cjs/series/heatmap/heatmap.js.map +1 -1
  223. package/cjs/series/line/line.d.ts +2 -0
  224. package/cjs/series/line/line.js +6 -0
  225. package/cjs/series/line/line.js.map +1 -1
  226. package/cjs/series/map/map.js +3 -3
  227. package/cjs/series/map/map.js.map +1 -1
  228. package/cjs/series/mixin/line-mixin.d.ts +1 -0
  229. package/cjs/series/mixin/line-mixin.js +6 -1
  230. package/cjs/series/mixin/line-mixin.js.map +1 -1
  231. package/cjs/series/pie/pie.d.ts +3 -7
  232. package/cjs/series/pie/pie.js +16 -1
  233. package/cjs/series/pie/pie.js.map +1 -1
  234. package/cjs/series/polar/progress-like/progress-like.d.ts +2 -0
  235. package/cjs/series/polar/progress-like/progress-like.js +16 -1
  236. package/cjs/series/polar/progress-like/progress-like.js.map +1 -1
  237. package/cjs/series/polar/rose-like/rose-like.d.ts +2 -0
  238. package/cjs/series/polar/rose-like/rose-like.js +15 -1
  239. package/cjs/series/polar/rose-like/rose-like.js.map +1 -1
  240. package/cjs/series/progress/circular/circular.d.ts +2 -0
  241. package/cjs/series/progress/circular/circular.js +10 -1
  242. package/cjs/series/progress/circular/circular.js.map +1 -1
  243. package/cjs/series/progress/linear/linear.d.ts +2 -0
  244. package/cjs/series/progress/linear/linear.js +19 -1
  245. package/cjs/series/progress/linear/linear.js.map +1 -1
  246. package/cjs/series/sankey/sankey.js +35 -33
  247. package/cjs/series/sankey/sankey.js.map +1 -1
  248. package/cjs/series/scatter/scatter.d.ts +2 -0
  249. package/cjs/series/scatter/scatter.js +9 -1
  250. package/cjs/series/scatter/scatter.js.map +1 -1
  251. package/cjs/series/treemap/treemap.js +23 -20
  252. package/cjs/series/treemap/treemap.js.map +1 -1
  253. package/cjs/series/venn/venn.js +2 -2
  254. package/cjs/series/venn/venn.js.map +1 -1
  255. package/cjs/series/waterfall/waterfall.d.ts +2 -0
  256. package/cjs/series/waterfall/waterfall.js +36 -20
  257. package/cjs/series/waterfall/waterfall.js.map +1 -1
  258. package/cjs/util/graphic-state.d.ts +1 -0
  259. package/cjs/util/graphic-state.js +19 -4
  260. package/cjs/util/graphic-state.js.map +1 -1
  261. package/esm/chart/base/base-chart-transformer.d.ts +3 -0
  262. package/esm/chart/base/base-chart-transformer.js +24 -2
  263. package/esm/chart/base/base-chart-transformer.js.map +1 -1
  264. package/esm/chart/base/base-chart.d.ts +25 -9
  265. package/esm/chart/base/base-chart.js +192 -26
  266. package/esm/chart/base/base-chart.js.map +1 -1
  267. package/esm/chart/gauge/gauge-transformer.js +3 -2
  268. package/esm/chart/gauge/gauge-transformer.js.map +1 -1
  269. package/esm/chart/interface/chart.d.ts +1 -0
  270. package/esm/chart/interface/chart.js.map +1 -1
  271. package/esm/chart/pie/base/pie-transformer.js +2 -2
  272. package/esm/chart/pie/base/pie-transformer.js.map +1 -1
  273. package/esm/chart/polar/polar-transformer.js +1 -1
  274. package/esm/chart/polar/polar-transformer.js.map +1 -1
  275. package/esm/chart/polar/progress-like/progress-like-transformer.js +1 -1
  276. package/esm/chart/polar/progress-like/progress-like-transformer.js.map +1 -1
  277. package/esm/chart/progress/circular/circular-progress-transformer.js +2 -1
  278. package/esm/chart/progress/circular/circular-progress-transformer.js.map +1 -1
  279. package/esm/chart/progress/linear/linear-progress-transformer.js +1 -1
  280. package/esm/chart/progress/linear/linear-progress-transformer.js.map +1 -1
  281. package/esm/chart/radar/radar-transformer.js +3 -2
  282. package/esm/chart/radar/radar-transformer.js.map +1 -1
  283. package/esm/chart/range-area/range-area-transformer.js +2 -2
  284. package/esm/chart/range-area/range-area-transformer.js.map +1 -1
  285. package/esm/chart/rose/rose-transformer.js +2 -1
  286. package/esm/chart/rose/rose-transformer.js.map +1 -1
  287. package/esm/chart/util.d.ts +4 -1
  288. package/esm/chart/util.js +34 -1
  289. package/esm/chart/util.js.map +1 -1
  290. package/esm/chart/waterfall/waterfall-transformer.js +2 -1
  291. package/esm/chart/waterfall/waterfall-transformer.js.map +1 -1
  292. package/esm/compile/compiler.js +11 -9
  293. package/esm/compile/compiler.js.map +1 -1
  294. package/esm/compile/data/compilable-data.d.ts +1 -1
  295. package/esm/compile/data/compilable-data.js +1 -1
  296. package/esm/compile/data/compilable-data.js.map +1 -1
  297. package/esm/compile/grammar-item.d.ts +1 -1
  298. package/esm/compile/grammar-item.js.map +1 -1
  299. package/esm/compile/interface/compilable-item.d.ts +1 -1
  300. package/esm/compile/interface/compilable-item.js.map +1 -1
  301. package/esm/component/axis/base-axis.d.ts +2 -7
  302. package/esm/component/axis/base-axis.js +26 -5
  303. package/esm/component/axis/base-axis.js.map +1 -1
  304. package/esm/component/axis/cartesian/band-axis.d.ts +1 -7
  305. package/esm/component/axis/mixin/linear-axis-mixin.js +7 -10
  306. package/esm/component/axis/mixin/linear-axis-mixin.js.map +1 -1
  307. package/esm/component/axis/polar/band-axis.d.ts +2 -0
  308. package/esm/component/axis/polar/band-axis.js +3 -0
  309. package/esm/component/axis/polar/band-axis.js.map +1 -1
  310. package/esm/component/axis/polar/linear-axis.js +3 -0
  311. package/esm/component/axis/polar/linear-axis.js.map +1 -1
  312. package/esm/component/base/base-component.d.ts +7 -7
  313. package/esm/component/base/base-component.js +41 -5
  314. package/esm/component/base/base-component.js.map +1 -1
  315. package/esm/component/base/release-vrender-component.d.ts +10 -0
  316. package/esm/component/base/release-vrender-component.js +24 -0
  317. package/esm/component/base/release-vrender-component.js.map +1 -0
  318. package/esm/component/brush/brush.d.ts +3 -7
  319. package/esm/component/brush/brush.js +20 -4
  320. package/esm/component/brush/brush.js.map +1 -1
  321. package/esm/component/crosshair/base.d.ts +4 -7
  322. package/esm/component/crosshair/base.js +26 -2
  323. package/esm/component/crosshair/base.js.map +1 -1
  324. package/esm/component/custom-mark/custom-mark.d.ts +4 -7
  325. package/esm/component/custom-mark/custom-mark.js +27 -2
  326. package/esm/component/custom-mark/custom-mark.js.map +1 -1
  327. package/esm/component/data-zoom/data-filter-base-component.d.ts +3 -7
  328. package/esm/component/data-zoom/data-filter-base-component.js +14 -2
  329. package/esm/component/data-zoom/data-filter-base-component.js.map +1 -1
  330. package/esm/component/data-zoom/data-zoom/data-zoom.d.ts +1 -0
  331. package/esm/component/data-zoom/data-zoom/data-zoom.js +20 -0
  332. package/esm/component/data-zoom/data-zoom/data-zoom.js.map +1 -1
  333. package/esm/component/data-zoom/scroll-bar/scroll-bar.d.ts +1 -0
  334. package/esm/component/data-zoom/scroll-bar/scroll-bar.js +12 -1
  335. package/esm/component/data-zoom/scroll-bar/scroll-bar.js.map +1 -1
  336. package/esm/component/geo/geo-coordinate.d.ts +1 -7
  337. package/esm/component/index.js +1 -2
  338. package/esm/component/indicator/indicator.d.ts +1 -0
  339. package/esm/component/indicator/indicator.js +11 -2
  340. package/esm/component/indicator/indicator.js.map +1 -1
  341. package/esm/component/indicator/util.d.ts +4 -3
  342. package/esm/component/indicator/util.js +2 -2
  343. package/esm/component/indicator/util.js.map +1 -1
  344. package/esm/component/label/base-label.d.ts +1 -7
  345. package/esm/component/label/base-label.js +5 -1
  346. package/esm/component/label/base-label.js.map +1 -1
  347. package/esm/component/label/label.js +1 -1
  348. package/esm/component/label/label.js.map +1 -1
  349. package/esm/component/legend/base-legend.d.ts +2 -7
  350. package/esm/component/legend/base-legend.js +20 -2
  351. package/esm/component/legend/base-legend.js.map +1 -1
  352. package/esm/component/marker/base-marker.d.ts +14 -7
  353. package/esm/component/marker/base-marker.js +109 -11
  354. package/esm/component/marker/base-marker.js.map +1 -1
  355. package/esm/component/marker/mark-area/cartesian-mark-area.js +3 -3
  356. package/esm/component/marker/mark-area/cartesian-mark-area.js.map +1 -1
  357. package/esm/component/marker/mark-area/polar-mark-area.js +2 -2
  358. package/esm/component/marker/mark-area/polar-mark-area.js.map +1 -1
  359. package/esm/component/marker/mark-line/base-mark-line.js +2 -4
  360. package/esm/component/marker/mark-line/base-mark-line.js.map +1 -1
  361. package/esm/component/marker/mark-line/cartesian-mark-line.js +2 -2
  362. package/esm/component/marker/mark-line/cartesian-mark-line.js.map +1 -1
  363. package/esm/component/marker/mark-line/polar-mark-line.js +2 -2
  364. package/esm/component/marker/mark-line/polar-mark-line.js.map +1 -1
  365. package/esm/component/marker/mark-point/base-mark-point.js +19 -6
  366. package/esm/component/marker/mark-point/base-mark-point.js.map +1 -1
  367. package/esm/component/marker/mark-point/cartesian-mark-point.js +1 -1
  368. package/esm/component/marker/mark-point/cartesian-mark-point.js.map +1 -1
  369. package/esm/component/marker/mark-point/polar-mark-point.js +1 -1
  370. package/esm/component/marker/mark-point/polar-mark-point.js.map +1 -1
  371. package/esm/component/marker/utils.d.ts +4 -4
  372. package/esm/component/marker/utils.js +27 -23
  373. package/esm/component/marker/utils.js.map +1 -1
  374. package/esm/component/player/player.d.ts +1 -0
  375. package/esm/component/player/player.js +10 -0
  376. package/esm/component/player/player.js.map +1 -1
  377. package/esm/component/title/title.d.ts +1 -7
  378. package/esm/component/title/title.js +6 -2
  379. package/esm/component/title/title.js.map +1 -1
  380. package/esm/component/tooltip/tooltip.d.ts +1 -0
  381. package/esm/component/tooltip/tooltip.js +9 -1
  382. package/esm/component/tooltip/tooltip.js.map +1 -1
  383. package/esm/constant/attribute.js +2 -1
  384. package/esm/constant/scatter.js +1 -2
  385. package/esm/constant/waterfall.js +2 -1
  386. package/esm/core/expression-function.js +1 -1
  387. package/esm/core/vchart.d.ts +5 -1
  388. package/esm/core/vchart.js +30 -17
  389. package/esm/core/vchart.js.map +1 -1
  390. package/esm/data/data-view-utils.d.ts +5 -0
  391. package/esm/data/data-view-utils.js +46 -0
  392. package/esm/data/data-view-utils.js.map +1 -0
  393. package/esm/data/initialize.js +1 -1
  394. package/esm/data/register.js +1 -1
  395. package/esm/data/transforms/box-plot.d.ts +4 -1
  396. package/esm/data/transforms/box-plot.js +4 -4
  397. package/esm/data/transforms/box-plot.js.map +1 -1
  398. package/esm/data/transforms/correlation-center.d.ts +11 -4
  399. package/esm/data/transforms/correlation-center.js +4 -2
  400. package/esm/data/transforms/correlation-center.js.map +1 -1
  401. package/esm/data/transforms/correlation.d.ts +18 -15
  402. package/esm/data/transforms/correlation.js +13 -8
  403. package/esm/data/transforms/correlation.js.map +1 -1
  404. package/esm/data/transforms/funnel.d.ts +10 -8
  405. package/esm/data/transforms/funnel.js +5 -3
  406. package/esm/data/transforms/funnel.js.map +1 -1
  407. package/esm/data/transforms/lookup.d.ts +3 -3
  408. package/esm/data/transforms/lookup.js +12 -6
  409. package/esm/data/transforms/lookup.js.map +1 -1
  410. package/esm/data/transforms/map.d.ts +8 -2
  411. package/esm/data/transforms/map.js +11 -6
  412. package/esm/data/transforms/map.js.map +1 -1
  413. package/esm/data/transforms/sankey.d.ts +12 -4
  414. package/esm/data/transforms/sankey.js +19 -14
  415. package/esm/data/transforms/sankey.js.map +1 -1
  416. package/esm/data/transforms/stack-split.d.ts +2 -1
  417. package/esm/data/transforms/stack-split.js +2 -2
  418. package/esm/data/transforms/stack-split.js.map +1 -1
  419. package/esm/data/transforms/treemap.d.ts +5 -3
  420. package/esm/data/transforms/treemap.js +8 -5
  421. package/esm/data/transforms/treemap.js.map +1 -1
  422. package/esm/data/transforms/venn.d.ts +4 -2
  423. package/esm/data/transforms/venn.js +5 -3
  424. package/esm/data/transforms/venn.js.map +1 -1
  425. package/esm/data/transforms/waterfall.d.ts +4 -2
  426. package/esm/data/transforms/waterfall.js +7 -8
  427. package/esm/data/transforms/waterfall.js.map +1 -1
  428. package/esm/env/env.js +1 -1
  429. package/esm/env/index.js +1 -1
  430. package/esm/event/event.d.ts +4 -0
  431. package/esm/event/event.js +26 -7
  432. package/esm/event/event.js.map +1 -1
  433. package/esm/mark/base/base-mark.d.ts +12 -2
  434. package/esm/mark/base/base-mark.js +86 -22
  435. package/esm/mark/base/base-mark.js.map +1 -1
  436. package/esm/mark/component.d.ts +9 -0
  437. package/esm/mark/component.js +51 -2
  438. package/esm/mark/component.js.map +1 -1
  439. package/esm/mark/group.js +1 -1
  440. package/esm/mark/group.js.map +1 -1
  441. package/esm/mark/interface/mark.d.ts +2 -0
  442. package/esm/mark/interface/mark.js.map +1 -1
  443. package/esm/model/base-model.d.ts +3 -15
  444. package/esm/model/base-model.js.map +1 -1
  445. package/esm/model/interface.d.ts +13 -0
  446. package/esm/model/interface.js.map +1 -1
  447. package/esm/region/region.d.ts +1 -7
  448. package/esm/scale/color-ordinal-scale.d.ts +1 -0
  449. package/esm/scale/color-ordinal-scale.js +3 -0
  450. package/esm/scale/color-ordinal-scale.js.map +1 -1
  451. package/esm/scale/global-scale.js +9 -1
  452. package/esm/scale/global-scale.js.map +1 -1
  453. package/esm/series/area/area.d.ts +2 -0
  454. package/esm/series/area/area.js +7 -1
  455. package/esm/series/area/area.js.map +1 -1
  456. package/esm/series/bar/bar.d.ts +3 -0
  457. package/esm/series/bar/bar.js +30 -4
  458. package/esm/series/bar/bar.js.map +1 -1
  459. package/esm/series/base/base-series.d.ts +10 -7
  460. package/esm/series/base/base-series.js +73 -16
  461. package/esm/series/base/base-series.js.map +1 -1
  462. package/esm/series/base/constant.d.ts +3 -0
  463. package/esm/series/base/constant.js +10 -0
  464. package/esm/series/base/constant.js.map +1 -1
  465. package/esm/series/box-plot/box-plot.d.ts +2 -0
  466. package/esm/series/box-plot/box-plot.js +15 -4
  467. package/esm/series/box-plot/box-plot.js.map +1 -1
  468. package/esm/series/correlation/correlation.js +13 -11
  469. package/esm/series/correlation/correlation.js.map +1 -1
  470. package/esm/series/dot/dot.d.ts +12 -0
  471. package/esm/series/dot/dot.js +17 -0
  472. package/esm/series/dot/dot.js.map +1 -1
  473. package/esm/series/funnel/funnel.js +5 -8
  474. package/esm/series/funnel/funnel.js.map +1 -1
  475. package/esm/series/heatmap/heatmap.d.ts +2 -0
  476. package/esm/series/heatmap/heatmap.js +10 -0
  477. package/esm/series/heatmap/heatmap.js.map +1 -1
  478. package/esm/series/line/line.d.ts +2 -0
  479. package/esm/series/line/line.js +7 -1
  480. package/esm/series/line/line.js.map +1 -1
  481. package/esm/series/map/map.js +3 -3
  482. package/esm/series/map/map.js.map +1 -1
  483. package/esm/series/mixin/line-mixin.d.ts +1 -0
  484. package/esm/series/mixin/line-mixin.js +5 -0
  485. package/esm/series/mixin/line-mixin.js.map +1 -1
  486. package/esm/series/pie/pie.d.ts +3 -7
  487. package/esm/series/pie/pie.js +17 -0
  488. package/esm/series/pie/pie.js.map +1 -1
  489. package/esm/series/polar/progress-like/progress-like.d.ts +2 -0
  490. package/esm/series/polar/progress-like/progress-like.js +17 -0
  491. package/esm/series/polar/progress-like/progress-like.js.map +1 -1
  492. package/esm/series/polar/rose-like/rose-like.d.ts +2 -0
  493. package/esm/series/polar/rose-like/rose-like.js +16 -0
  494. package/esm/series/polar/rose-like/rose-like.js.map +1 -1
  495. package/esm/series/progress/circular/circular.d.ts +2 -0
  496. package/esm/series/progress/circular/circular.js +11 -0
  497. package/esm/series/progress/circular/circular.js.map +1 -1
  498. package/esm/series/progress/linear/linear.d.ts +2 -0
  499. package/esm/series/progress/linear/linear.js +20 -0
  500. package/esm/series/progress/linear/linear.js.map +1 -1
  501. package/esm/series/sankey/sankey.js +35 -33
  502. package/esm/series/sankey/sankey.js.map +1 -1
  503. package/esm/series/scatter/scatter.d.ts +2 -0
  504. package/esm/series/scatter/scatter.js +10 -0
  505. package/esm/series/scatter/scatter.js.map +1 -1
  506. package/esm/series/treemap/treemap.js +23 -20
  507. package/esm/series/treemap/treemap.js.map +1 -1
  508. package/esm/series/venn/venn.js +2 -2
  509. package/esm/series/venn/venn.js.map +1 -1
  510. package/esm/series/waterfall/waterfall.d.ts +2 -0
  511. package/esm/series/waterfall/waterfall.js +36 -20
  512. package/esm/series/waterfall/waterfall.js.map +1 -1
  513. package/esm/util/graphic-state.d.ts +1 -0
  514. package/esm/util/graphic-state.js +16 -3
  515. package/esm/util/graphic-state.js.map +1 -1
  516. package/package.json +9 -8
@@ -12,8 +12,19 @@ import { array } from "../../util";
12
12
 
13
13
  import { getSpecInfo } from "../../component/util";
14
14
 
15
+ const DEFAULT_SERIES_RELATED_CHART_SPEC_KEYS = {
16
+ series: !0,
17
+ label: !0,
18
+ animationAppear: !0,
19
+ animationEnter: !0,
20
+ animationUpdate: !0,
21
+ animationExit: !0,
22
+ animationNormal: !0
23
+ };
24
+
15
25
  export class BaseChartSpecTransformer {
16
26
  constructor(option) {
27
+ this._seriesRelatedSpecKeys = Object.assign({}, DEFAULT_SERIES_RELATED_CHART_SPEC_KEYS),
17
28
  this._option = option, this.type = option.type, this.seriesType = option.seriesType;
18
29
  }
19
30
  initChartSpec(chartSpec) {
@@ -73,8 +84,19 @@ export class BaseChartSpecTransformer {
73
84
  _isValidSeries(seriesType) {
74
85
  return !0;
75
86
  }
87
+ getSeriesRelatedSpecKeys() {
88
+ return this._seriesRelatedSpecKeys;
89
+ }
90
+ _addSeriesRelatedSpecKeys(...keysList) {
91
+ keysList.forEach((keys => {
92
+ null == keys || keys.forEach((key => {
93
+ this._seriesRelatedSpecKeys[key] = !0;
94
+ }));
95
+ }));
96
+ }
76
97
  _getDefaultSeriesSpec(chartSpec, pickKeys, pickKeys2) {
77
98
  var _a, _b, _c, _d, _e;
99
+ this._addSeriesRelatedSpecKeys(pickKeys, pickKeys2);
78
100
  const series = {
79
101
  dataKey: chartSpec.dataKey,
80
102
  hover: chartSpec.hover,
@@ -101,8 +123,8 @@ export class BaseChartSpecTransformer {
101
123
  morph: chartSpec.morph,
102
124
  interactions: chartSpec.interactions
103
125
  }, seriesType = this.seriesType;
104
- return seriesType && (series.type = seriesType, series[seriesType] = chartSpec[seriesType]),
105
- pickKeys && pickKeys.length && pickKeys.forEach((k => {
126
+ return seriesType && (this._addSeriesRelatedSpecKeys([ seriesType ]), series.type = seriesType,
127
+ series[seriesType] = chartSpec[seriesType]), pickKeys && pickKeys.length && pickKeys.forEach((k => {
106
128
  series[k] = chartSpec[k];
107
129
  })), pickKeys2 && pickKeys2.length && pickKeys2.forEach((k => {
108
130
  series[k] = chartSpec[k];
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/chart/base/base-chart-transformer.ts"],"names":[],"mappings":"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","file":"base-chart-transformer.js","sourcesContent":["import { isArray, isNumber, isValid } from '@visactor/vutils';\nimport type { IChartSpec, ISeriesSpec } from '../../typings';\nimport type { IChartSpecInfo, IChartSpecTransformer, IChartSpecTransformerOption } from '../interface';\nimport type { IModelConstructor, IModelSpecInfo } from '../../model/interface';\nimport type { IRegionConstructor, RegionSpec } from '../../region/interface';\nimport { Factory } from '../../core';\nimport type { ISeriesConstructor } from '../../series';\nimport type { IComponentConstructor } from '../../component/interface/common';\nimport { ComponentTypeEnum } from '../../component/interface';\nimport { setProperty } from '@visactor/vutils-extension';\nimport { getRelatedRegionInfo, getRelatedSeriesInfo } from './util';\nimport type { ICartesianBandAxisSpec } from '../..//component/axis/cartesian/interface';\nimport { array } from '../../util';\nimport { getSpecInfo } from '../../component/util';\n\nexport class BaseChartSpecTransformer<T extends IChartSpec> implements IChartSpecTransformer {\n readonly type: string;\n readonly seriesType: string;\n\n protected _option: IChartSpecTransformerOption;\n\n constructor(option: IChartSpecTransformerOption) {\n this._option = option;\n this.type = option.type;\n this.seriesType = option.seriesType;\n }\n\n /** 此方法不建议重写 */\n initChartSpec(chartSpec: T): IChartSpecInfo {\n this.transformSpec(chartSpec);\n return this.transformModelSpec(chartSpec);\n }\n\n /**\n * 转换 chart spec。包含以下步骤:\n * - 将图表 spec 统一转换为 common 图表 spec\n * - 图表层级的在初始化阶段的 spec 修改\n */\n transformSpec(chartSpec: T): void {\n if (!chartSpec.region || chartSpec.region.length === 0) {\n chartSpec.region = [{}];\n }\n if (chartSpec.tooltip === undefined) {\n chartSpec.tooltip = {};\n }\n // 堆积逆序\n if (isValid(chartSpec.stackInverse)) {\n chartSpec.region.forEach((r: RegionSpec) => {\n !isValid(r.stackInverse) && (r.stackInverse = chartSpec.stackInverse);\n });\n }\n // 堆积排序\n if (isValid(chartSpec.stackSort)) {\n chartSpec.region.forEach((r: RegionSpec) => {\n !isValid(r.stackSort) && (r.stackSort = chartSpec.stackSort);\n });\n }\n }\n\n generateTransform(chartSpec: T, isRuntime?: boolean) {\n return (constructor: IModelConstructor, specInfo: IModelSpecInfo, chartSpecInfo?: IChartSpecInfo) => {\n const { spec, specPath, specInfoPath, type } = specInfo;\n const transformer = new constructor.transformerConstructor({\n ...this._option,\n type\n });\n // 调用 model 自己的 transformer 进行转换\n const transformResult = transformer.transformSpec(spec, chartSpec, chartSpecInfo);\n const chartSpecInfoValue = {\n ...specInfo,\n ...transformResult\n };\n if (isRuntime) {\n chartSpecInfoValue.theme = transformer.getTheme(spec, chartSpec);\n } else {\n setProperty(chartSpec, specPath, transformResult.spec);\n }\n setProperty(chartSpecInfo, specInfoPath ?? specPath, chartSpecInfoValue);\n };\n }\n\n /**\n * 转换 model spec。包含以下步骤:\n * - model 层级的主题合并\n * - model 层级的在初始化阶段的 spec 修改,如添加 label spec\n */\n transformModelSpec(chartSpec: T): IChartSpecInfo {\n return this.createSpecInfo(chartSpec, this.generateTransform(chartSpec, false));\n }\n\n /** 遍历图表 spec 中包含的所有的 model,进行 spec 转换并生成图表 spec info */\n createSpecInfo(\n chartSpec: T,\n transform?: (\n /** 当前 model 的类 */\n constructor: IModelConstructor,\n /** 当前 model 的 spec info */\n specInfo: IModelSpecInfo,\n /** 图表 spec info */\n chartSpecInfo?: IChartSpecInfo\n ) => void\n ): IChartSpecInfo {\n if (!transform) {\n transform = this.generateTransform(chartSpec, true);\n }\n\n const currentChartSpecInfo: IChartSpecInfo = {};\n\n /* 预处理 region */\n this.forEachRegionInSpec(chartSpec, transform, currentChartSpecInfo);\n\n /* 预处理 series */\n this.forEachSeriesInSpec(chartSpec, transform, currentChartSpecInfo);\n // 记录每个 series 关联的 region\n currentChartSpecInfo.series?.forEach((seriesSpecInfo, i) => {\n const relatedRegion =\n getRelatedRegionInfo(seriesSpecInfo, currentChartSpecInfo) ?? currentChartSpecInfo.region ?? [];\n const region = relatedRegion[0];\n if (region) {\n if (!region.seriesIndexes) {\n region.seriesIndexes = [];\n }\n region.seriesIndexes.push(i);\n seriesSpecInfo.regionIndexes = region.regionIndexes.slice();\n }\n });\n\n /* 预处理 component */\n this.forEachComponentInSpec(chartSpec, transform, currentChartSpecInfo);\n // 记录每个 component 关联的 region、series\n Object.values(currentChartSpecInfo.component ?? {}).forEach(specInfoList =>\n specInfoList.forEach((componentSpecInfo, i) => {\n if (!componentSpecInfo) {\n return;\n }\n if (!componentSpecInfo.regionIndexes) {\n const relatedRegion =\n getRelatedRegionInfo(componentSpecInfo, currentChartSpecInfo) ?? currentChartSpecInfo.region ?? [];\n componentSpecInfo.regionIndexes = relatedRegion.map(region => region.regionIndexes[0]);\n }\n if (!componentSpecInfo.seriesIndexes) {\n const seriesInfo = getRelatedSeriesInfo(componentSpecInfo, currentChartSpecInfo);\n if (!seriesInfo) {\n const seriesIndexSet = new Set<number>();\n (componentSpecInfo.regionIndexes ?? []).forEach(regionIndex => {\n const region = currentChartSpecInfo.region?.[regionIndex];\n region?.seriesIndexes?.forEach(seriesIndex => seriesIndexSet.add(seriesIndex));\n });\n componentSpecInfo.seriesIndexes = Array.from(seriesIndexSet);\n } else {\n componentSpecInfo.seriesIndexes = seriesInfo.map(({ seriesIndexes }) => seriesIndexes[0]);\n }\n }\n })\n );\n return currentChartSpecInfo;\n }\n\n protected _isValidSeries(seriesType: string): boolean {\n return true;\n }\n\n protected _getDefaultSeriesSpec(chartSpec: any, pickKeys?: string[], pickKeys2?: string[]) {\n const series: any = {\n dataKey: chartSpec.dataKey,\n\n hover: chartSpec.hover,\n select: chartSpec.select,\n\n label: chartSpec.label,\n\n seriesStyle: chartSpec.seriesStyle,\n\n animation: chartSpec.animation ?? this._option.globalInstance?.isAnimationEnable(),\n animationThreshold: chartSpec.animationThreshold ?? this._option.getTheme?.('animationThreshold'),\n animationAppear: chartSpec.animationAppear,\n animationDisappear: chartSpec.animationDisappear,\n animationEnter: chartSpec.animationEnter,\n animationUpdate: chartSpec.animationUpdate,\n animationExit: chartSpec.animationExit,\n animationNormal: chartSpec.animationNormal,\n animationState: chartSpec.animationState,\n\n extensionMark: chartSpec.extensionMark,\n\n large: chartSpec.large,\n largeThreshold: chartSpec.largeThreshold,\n progressiveStep: chartSpec.progressiveStep,\n progressiveThreshold: chartSpec.progressiveThreshold,\n background: chartSpec.seriesBackground,\n\n invalidType: chartSpec.invalidType,\n\n seriesField: chartSpec.seriesField,\n\n morph: chartSpec.morph,\n\n interactions: chartSpec.interactions\n };\n\n const seriesType = this.seriesType;\n if (seriesType) {\n series.type = seriesType;\n series[seriesType] = (chartSpec as any)[seriesType];\n }\n\n if (pickKeys && pickKeys.length) {\n pickKeys.forEach(k => {\n series[k] = chartSpec[k];\n });\n }\n if (pickKeys2 && pickKeys2.length) {\n pickKeys2.forEach(k => {\n series[k] = chartSpec[k];\n });\n }\n return series;\n }\n\n /** 遍历 spec 中每个有效的 region */\n forEachRegionInSpec<K>(\n chartSpec: T,\n callbackfn: (constructor: IRegionConstructor, specInfo: IModelSpecInfo, chartSpecInfo?: IChartSpecInfo) => K,\n chartSpecInfo?: IChartSpecInfo\n ): K[] {\n const regionSpec = (chartSpec.region as RegionSpec[]) ?? [];\n return regionSpec.map((spec, index) =>\n callbackfn(\n Factory.getRegionInType('region'),\n {\n spec,\n specPath: ['region', index],\n type: 'region',\n regionIndexes: [index]\n },\n chartSpecInfo\n )\n );\n }\n\n /** 遍历 spec 中每个有效的 series */\n forEachSeriesInSpec<K>(\n chartSpec: T,\n callbackfn: (constructor: ISeriesConstructor, specInfo: IModelSpecInfo, chartSpecInfo?: IChartSpecInfo) => K,\n chartSpecInfo?: IChartSpecInfo\n ): K[] {\n const seriesSpec = (chartSpec.series as ISeriesSpec[]) ?? [];\n return seriesSpec.map((spec, index) =>\n callbackfn(\n Factory.getSeriesInType(spec.type),\n {\n spec,\n specPath: ['series', index],\n type: spec.type,\n seriesIndexes: [index]\n },\n chartSpecInfo\n )\n );\n }\n\n /** 遍历 spec 中每个有效的 component */\n forEachComponentInSpec<K>(\n chartSpec: T,\n callbackfn: (constructor: IComponentConstructor, specInfo: IModelSpecInfo, chartSpecInfo?: IChartSpecInfo) => K,\n chartSpecInfo?: IChartSpecInfo\n ): K[] {\n const results: K[] = [];\n const components = Factory.getComponents();\n\n // 坐标轴组件只需要调用一次\n let cartesianAxis: IComponentConstructor;\n let polarAxis: IComponentConstructor;\n let geoCoordinate: IComponentConstructor;\n let tooltip: IComponentConstructor;\n const otherComponents = [];\n\n for (let index = 0; index < components.length; index++) {\n const { cmp, alwaysCheck } = components[index];\n if (cmp.type.startsWith(ComponentTypeEnum.cartesianAxis)) {\n cartesianAxis = cmp;\n } else if (cmp.type.startsWith(ComponentTypeEnum.polarAxis)) {\n polarAxis = cmp;\n } else if (cmp.type === ComponentTypeEnum.geoCoordinate) {\n geoCoordinate = cmp;\n } else if (alwaysCheck || (chartSpec as any)[cmp.specKey ?? cmp.type]) {\n if (cmp.type === ComponentTypeEnum.tooltip) {\n tooltip = cmp;\n } else {\n otherComponents.push(components[index]);\n }\n }\n }\n\n // NOTE: 坐标轴组件需要在其他组件之前创建\n let hasInitAxis = false;\n if (cartesianAxis) {\n const infoList = cartesianAxis.getSpecInfo(chartSpec, chartSpecInfo);\n if (infoList?.length > 0) {\n hasInitAxis = true;\n infoList.forEach(info => {\n const cmp = Factory.getComponentInKey(info.type);\n results.push(callbackfn(cmp, info, chartSpecInfo));\n });\n }\n }\n\n if (polarAxis && !hasInitAxis) {\n const infoList = polarAxis.getSpecInfo(chartSpec, chartSpecInfo);\n if (infoList?.length > 0) {\n hasInitAxis = true;\n infoList.forEach(info => {\n const cmp = Factory.getComponentInKey(info.type);\n results.push(callbackfn(cmp, info, chartSpecInfo));\n });\n }\n }\n\n if (geoCoordinate && !hasInitAxis) {\n geoCoordinate.getSpecInfo(chartSpec, chartSpecInfo)?.forEach(info => {\n results.push(callbackfn(geoCoordinate, info, chartSpecInfo));\n });\n }\n\n otherComponents.sort((a, b) => {\n return a.createOrder - b.createOrder;\n });\n\n otherComponents.forEach(({ cmp: C }) => {\n (C.getSpecInfo ? C.getSpecInfo(chartSpec, chartSpecInfo) : getSpecInfo(chartSpec, C.specKey, C.type))?.forEach(\n info => {\n results.push(callbackfn(C, info, chartSpecInfo));\n }\n );\n });\n\n // NOTE: tooltip 组件需要在 crosshair 组件之后创建\n if (tooltip) {\n getSpecInfo(chartSpec, tooltip.specKey, tooltip.type)?.forEach(info => {\n results.push(callbackfn(tooltip, info, chartSpecInfo));\n });\n }\n\n return results;\n }\n\n /** 处理series配置 */\n transformSeriesSpec(spec: T): void {\n const defaultSeriesSpec = this._getDefaultSeriesSpec(spec);\n if (!spec.series || spec.series.length === 0) {\n spec.series = [defaultSeriesSpec];\n } else {\n spec.series.forEach(s => {\n if (!this._isValidSeries(s.type)) {\n return;\n }\n Object.keys(defaultSeriesSpec).forEach(k => {\n if (!(k in s)) {\n (s as any)[k] = defaultSeriesSpec[k];\n }\n });\n });\n }\n }\n\n protected _findBandAxisBySeries(seriesSpec: ISeriesSpec, seriesIndex: number, axesSpec: any) {\n const isHorizontal = (seriesSpec as any)?.direction === 'horizontal';\n const matchOrient = isHorizontal ? ['left', 'right'] : ['top', 'bottom'];\n const targetBandAxis: any = axesSpec.find((axis: any) => {\n if (!matchOrient.includes(axis.orient)) {\n // orient必须匹配\n return false;\n }\n if (isValid(axis.seriesId)) {\n // 1. 通过seriesId绑定\n if (array(axis.seriesId).includes(seriesSpec?.id)) {\n return true;\n }\n } else if (isValid(axis.seriesIndex)) {\n // 2. 通过seriesIndex绑定\n if (array(axis.seriesIndex).includes(seriesIndex)) {\n return true;\n }\n } else if (axis.type === 'band') {\n // 3. 通过axis type识别\n return true;\n }\n // 4. 剩下的情况满足axis orient要求\n return true;\n });\n\n return targetBandAxis;\n }\n\n /**\n * @description bar chart 和 common chart支持autoBandsize, 此方法用于识别barWidth配置后应用到轴上\n * */\n protected _applyAxisBandSize(\n axis: ICartesianBandAxisSpec,\n extend: number,\n barWidthSpec: {\n barMaxWidth: number | string;\n barMinWidth: number | string;\n barWidth: number | string;\n barGapInGroup: number | string | (number | string)[];\n }\n ) {\n const { barMaxWidth, barMinWidth, barWidth, barGapInGroup } = barWidthSpec;\n let hasBarWidth = false;\n if (isNumber(barMinWidth)) {\n axis.minBandSize = barMinWidth as number;\n hasBarWidth = true;\n } else if (isNumber(barWidth)) {\n axis.minBandSize = barWidth as number;\n hasBarWidth = true;\n } else if (isNumber(barMaxWidth)) {\n axis.minBandSize = barMaxWidth as number;\n hasBarWidth = true;\n }\n if (hasBarWidth) {\n axis.bandSizeLevel = Number.MAX_VALUE; // 影响最底层的 scale\n axis.bandSizeExtend = {\n extend,\n gap: isArray(barGapInGroup) ? barGapInGroup[(barGapInGroup as any[]).length - 1] : barGapInGroup\n };\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/chart/base/base-chart-transformer.ts"],"names":[],"mappings":"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","file":"base-chart-transformer.js","sourcesContent":["import { isArray, isNumber, isValid } from '@visactor/vutils';\nimport type { IChartSpec, ISeriesSpec } from '../../typings';\nimport type { IChartSpecInfo, IChartSpecTransformer, IChartSpecTransformerOption } from '../interface';\nimport type { IModelConstructor, IModelSpecInfo } from '../../model/interface';\nimport type { IRegionConstructor, RegionSpec } from '../../region/interface';\nimport { Factory } from '../../core';\nimport type { ISeriesConstructor } from '../../series';\nimport type { IComponentConstructor } from '../../component/interface/common';\nimport { ComponentTypeEnum } from '../../component/interface';\nimport { setProperty } from '@visactor/vutils-extension';\nimport { getRelatedRegionInfo, getRelatedSeriesInfo } from './util';\nimport type { ICartesianBandAxisSpec } from '../..//component/axis/cartesian/interface';\nimport { array } from '../../util';\nimport { getSpecInfo } from '../../component/util';\n\nconst DEFAULT_SERIES_RELATED_CHART_SPEC_KEYS: Record<string, true> = {\n series: true,\n label: true,\n animationAppear: true,\n animationEnter: true,\n animationUpdate: true,\n animationExit: true,\n animationNormal: true\n};\n\nexport class BaseChartSpecTransformer<T extends IChartSpec> implements IChartSpecTransformer {\n readonly type: string;\n readonly seriesType: string;\n protected _seriesRelatedSpecKeys: Record<string, true> = { ...DEFAULT_SERIES_RELATED_CHART_SPEC_KEYS };\n\n protected _option: IChartSpecTransformerOption;\n\n constructor(option: IChartSpecTransformerOption) {\n this._option = option;\n this.type = option.type;\n this.seriesType = option.seriesType;\n }\n\n /** 此方法不建议重写 */\n initChartSpec(chartSpec: T): IChartSpecInfo {\n this.transformSpec(chartSpec);\n return this.transformModelSpec(chartSpec);\n }\n\n /**\n * 转换 chart spec。包含以下步骤:\n * - 将图表 spec 统一转换为 common 图表 spec\n * - 图表层级的在初始化阶段的 spec 修改\n */\n transformSpec(chartSpec: T): void {\n if (!chartSpec.region || chartSpec.region.length === 0) {\n chartSpec.region = [{}];\n }\n if (chartSpec.tooltip === undefined) {\n chartSpec.tooltip = {};\n }\n // 堆积逆序\n if (isValid(chartSpec.stackInverse)) {\n chartSpec.region.forEach((r: RegionSpec) => {\n !isValid(r.stackInverse) && (r.stackInverse = chartSpec.stackInverse);\n });\n }\n // 堆积排序\n if (isValid(chartSpec.stackSort)) {\n chartSpec.region.forEach((r: RegionSpec) => {\n !isValid(r.stackSort) && (r.stackSort = chartSpec.stackSort);\n });\n }\n }\n\n generateTransform(chartSpec: T, isRuntime?: boolean) {\n return (constructor: IModelConstructor, specInfo: IModelSpecInfo, chartSpecInfo?: IChartSpecInfo) => {\n const { spec, specPath, specInfoPath, type } = specInfo;\n const transformer = new constructor.transformerConstructor({\n ...this._option,\n type\n });\n // 调用 model 自己的 transformer 进行转换\n const transformResult = transformer.transformSpec(spec, chartSpec, chartSpecInfo);\n const chartSpecInfoValue = {\n ...specInfo,\n ...transformResult\n };\n if (isRuntime) {\n chartSpecInfoValue.theme = transformer.getTheme(spec, chartSpec);\n } else {\n setProperty(chartSpec, specPath, transformResult.spec);\n }\n setProperty(chartSpecInfo, specInfoPath ?? specPath, chartSpecInfoValue);\n };\n }\n\n /**\n * 转换 model spec。包含以下步骤:\n * - model 层级的主题合并\n * - model 层级的在初始化阶段的 spec 修改,如添加 label spec\n */\n transformModelSpec(chartSpec: T): IChartSpecInfo {\n return this.createSpecInfo(chartSpec, this.generateTransform(chartSpec, false));\n }\n\n /** 遍历图表 spec 中包含的所有的 model,进行 spec 转换并生成图表 spec info */\n createSpecInfo(\n chartSpec: T,\n transform?: (\n /** 当前 model 的类 */\n constructor: IModelConstructor,\n /** 当前 model 的 spec info */\n specInfo: IModelSpecInfo,\n /** 图表 spec info */\n chartSpecInfo?: IChartSpecInfo\n ) => void\n ): IChartSpecInfo {\n if (!transform) {\n transform = this.generateTransform(chartSpec, true);\n }\n\n const currentChartSpecInfo: IChartSpecInfo = {};\n\n /* 预处理 region */\n this.forEachRegionInSpec(chartSpec, transform, currentChartSpecInfo);\n\n /* 预处理 series */\n this.forEachSeriesInSpec(chartSpec, transform, currentChartSpecInfo);\n // 记录每个 series 关联的 region\n currentChartSpecInfo.series?.forEach((seriesSpecInfo, i) => {\n const relatedRegion =\n getRelatedRegionInfo(seriesSpecInfo, currentChartSpecInfo) ?? currentChartSpecInfo.region ?? [];\n const region = relatedRegion[0];\n if (region) {\n if (!region.seriesIndexes) {\n region.seriesIndexes = [];\n }\n region.seriesIndexes.push(i);\n seriesSpecInfo.regionIndexes = region.regionIndexes.slice();\n }\n });\n\n /* 预处理 component */\n this.forEachComponentInSpec(chartSpec, transform, currentChartSpecInfo);\n // 记录每个 component 关联的 region、series\n Object.values(currentChartSpecInfo.component ?? {}).forEach(specInfoList =>\n specInfoList.forEach((componentSpecInfo, i) => {\n if (!componentSpecInfo) {\n return;\n }\n if (!componentSpecInfo.regionIndexes) {\n const relatedRegion =\n getRelatedRegionInfo(componentSpecInfo, currentChartSpecInfo) ?? currentChartSpecInfo.region ?? [];\n componentSpecInfo.regionIndexes = relatedRegion.map(region => region.regionIndexes[0]);\n }\n if (!componentSpecInfo.seriesIndexes) {\n const seriesInfo = getRelatedSeriesInfo(componentSpecInfo, currentChartSpecInfo);\n if (!seriesInfo) {\n const seriesIndexSet = new Set<number>();\n (componentSpecInfo.regionIndexes ?? []).forEach(regionIndex => {\n const region = currentChartSpecInfo.region?.[regionIndex];\n region?.seriesIndexes?.forEach(seriesIndex => seriesIndexSet.add(seriesIndex));\n });\n componentSpecInfo.seriesIndexes = Array.from(seriesIndexSet);\n } else {\n componentSpecInfo.seriesIndexes = seriesInfo.map(({ seriesIndexes }) => seriesIndexes[0]);\n }\n }\n })\n );\n return currentChartSpecInfo;\n }\n\n protected _isValidSeries(seriesType: string): boolean {\n return true;\n }\n\n getSeriesRelatedSpecKeys(): Record<string, true> {\n return this._seriesRelatedSpecKeys;\n }\n\n protected _addSeriesRelatedSpecKeys(...keysList: Array<string[] | undefined>) {\n keysList.forEach(keys => {\n keys?.forEach(key => {\n this._seriesRelatedSpecKeys[key] = true;\n });\n });\n }\n\n protected _getDefaultSeriesSpec(chartSpec: any, pickKeys?: string[], pickKeys2?: string[]) {\n this._addSeriesRelatedSpecKeys(pickKeys, pickKeys2);\n\n const series: any = {\n dataKey: chartSpec.dataKey,\n\n hover: chartSpec.hover,\n select: chartSpec.select,\n\n label: chartSpec.label,\n\n seriesStyle: chartSpec.seriesStyle,\n\n animation: chartSpec.animation ?? this._option.globalInstance?.isAnimationEnable(),\n animationThreshold: chartSpec.animationThreshold ?? this._option.getTheme?.('animationThreshold'),\n animationAppear: chartSpec.animationAppear,\n animationDisappear: chartSpec.animationDisappear,\n animationEnter: chartSpec.animationEnter,\n animationUpdate: chartSpec.animationUpdate,\n animationExit: chartSpec.animationExit,\n animationNormal: chartSpec.animationNormal,\n animationState: chartSpec.animationState,\n\n extensionMark: chartSpec.extensionMark,\n\n large: chartSpec.large,\n largeThreshold: chartSpec.largeThreshold,\n progressiveStep: chartSpec.progressiveStep,\n progressiveThreshold: chartSpec.progressiveThreshold,\n background: chartSpec.seriesBackground,\n\n invalidType: chartSpec.invalidType,\n\n seriesField: chartSpec.seriesField,\n\n morph: chartSpec.morph,\n\n interactions: chartSpec.interactions\n };\n\n const seriesType = this.seriesType;\n if (seriesType) {\n this._addSeriesRelatedSpecKeys([seriesType]);\n series.type = seriesType;\n series[seriesType] = (chartSpec as any)[seriesType];\n }\n\n if (pickKeys && pickKeys.length) {\n pickKeys.forEach(k => {\n series[k] = chartSpec[k];\n });\n }\n if (pickKeys2 && pickKeys2.length) {\n pickKeys2.forEach(k => {\n series[k] = chartSpec[k];\n });\n }\n return series;\n }\n\n /** 遍历 spec 中每个有效的 region */\n forEachRegionInSpec<K>(\n chartSpec: T,\n callbackfn: (constructor: IRegionConstructor, specInfo: IModelSpecInfo, chartSpecInfo?: IChartSpecInfo) => K,\n chartSpecInfo?: IChartSpecInfo\n ): K[] {\n const regionSpec = (chartSpec.region as RegionSpec[]) ?? [];\n return regionSpec.map((spec, index) =>\n callbackfn(\n Factory.getRegionInType('region'),\n {\n spec,\n specPath: ['region', index],\n type: 'region',\n regionIndexes: [index]\n },\n chartSpecInfo\n )\n );\n }\n\n /** 遍历 spec 中每个有效的 series */\n forEachSeriesInSpec<K>(\n chartSpec: T,\n callbackfn: (constructor: ISeriesConstructor, specInfo: IModelSpecInfo, chartSpecInfo?: IChartSpecInfo) => K,\n chartSpecInfo?: IChartSpecInfo\n ): K[] {\n const seriesSpec = (chartSpec.series as ISeriesSpec[]) ?? [];\n return seriesSpec.map((spec, index) =>\n callbackfn(\n Factory.getSeriesInType(spec.type),\n {\n spec,\n specPath: ['series', index],\n type: spec.type,\n seriesIndexes: [index]\n },\n chartSpecInfo\n )\n );\n }\n\n /** 遍历 spec 中每个有效的 component */\n forEachComponentInSpec<K>(\n chartSpec: T,\n callbackfn: (constructor: IComponentConstructor, specInfo: IModelSpecInfo, chartSpecInfo?: IChartSpecInfo) => K,\n chartSpecInfo?: IChartSpecInfo\n ): K[] {\n const results: K[] = [];\n const components = Factory.getComponents();\n\n // 坐标轴组件只需要调用一次\n let cartesianAxis: IComponentConstructor;\n let polarAxis: IComponentConstructor;\n let geoCoordinate: IComponentConstructor;\n let tooltip: IComponentConstructor;\n const otherComponents = [];\n\n for (let index = 0; index < components.length; index++) {\n const { cmp, alwaysCheck } = components[index];\n if (cmp.type.startsWith(ComponentTypeEnum.cartesianAxis)) {\n cartesianAxis = cmp;\n } else if (cmp.type.startsWith(ComponentTypeEnum.polarAxis)) {\n polarAxis = cmp;\n } else if (cmp.type === ComponentTypeEnum.geoCoordinate) {\n geoCoordinate = cmp;\n } else if (alwaysCheck || (chartSpec as any)[cmp.specKey ?? cmp.type]) {\n if (cmp.type === ComponentTypeEnum.tooltip) {\n tooltip = cmp;\n } else {\n otherComponents.push(components[index]);\n }\n }\n }\n\n // NOTE: 坐标轴组件需要在其他组件之前创建\n let hasInitAxis = false;\n if (cartesianAxis) {\n const infoList = cartesianAxis.getSpecInfo(chartSpec, chartSpecInfo);\n if (infoList?.length > 0) {\n hasInitAxis = true;\n infoList.forEach(info => {\n const cmp = Factory.getComponentInKey(info.type);\n results.push(callbackfn(cmp, info, chartSpecInfo));\n });\n }\n }\n\n if (polarAxis && !hasInitAxis) {\n const infoList = polarAxis.getSpecInfo(chartSpec, chartSpecInfo);\n if (infoList?.length > 0) {\n hasInitAxis = true;\n infoList.forEach(info => {\n const cmp = Factory.getComponentInKey(info.type);\n results.push(callbackfn(cmp, info, chartSpecInfo));\n });\n }\n }\n\n if (geoCoordinate && !hasInitAxis) {\n geoCoordinate.getSpecInfo(chartSpec, chartSpecInfo)?.forEach(info => {\n results.push(callbackfn(geoCoordinate, info, chartSpecInfo));\n });\n }\n\n otherComponents.sort((a, b) => {\n return a.createOrder - b.createOrder;\n });\n\n otherComponents.forEach(({ cmp: C }) => {\n (C.getSpecInfo ? C.getSpecInfo(chartSpec, chartSpecInfo) : getSpecInfo(chartSpec, C.specKey, C.type))?.forEach(\n info => {\n results.push(callbackfn(C, info, chartSpecInfo));\n }\n );\n });\n\n // NOTE: tooltip 组件需要在 crosshair 组件之后创建\n if (tooltip) {\n getSpecInfo(chartSpec, tooltip.specKey, tooltip.type)?.forEach(info => {\n results.push(callbackfn(tooltip, info, chartSpecInfo));\n });\n }\n\n return results;\n }\n\n /** 处理series配置 */\n transformSeriesSpec(spec: T): void {\n const defaultSeriesSpec = this._getDefaultSeriesSpec(spec);\n if (!spec.series || spec.series.length === 0) {\n spec.series = [defaultSeriesSpec];\n } else {\n spec.series.forEach(s => {\n if (!this._isValidSeries(s.type)) {\n return;\n }\n Object.keys(defaultSeriesSpec).forEach(k => {\n if (!(k in s)) {\n (s as any)[k] = defaultSeriesSpec[k];\n }\n });\n });\n }\n }\n\n protected _findBandAxisBySeries(seriesSpec: ISeriesSpec, seriesIndex: number, axesSpec: any) {\n const isHorizontal = (seriesSpec as any)?.direction === 'horizontal';\n const matchOrient = isHorizontal ? ['left', 'right'] : ['top', 'bottom'];\n const targetBandAxis: any = axesSpec.find((axis: any) => {\n if (!matchOrient.includes(axis.orient)) {\n // orient必须匹配\n return false;\n }\n if (isValid(axis.seriesId)) {\n // 1. 通过seriesId绑定\n if (array(axis.seriesId).includes(seriesSpec?.id)) {\n return true;\n }\n } else if (isValid(axis.seriesIndex)) {\n // 2. 通过seriesIndex绑定\n if (array(axis.seriesIndex).includes(seriesIndex)) {\n return true;\n }\n } else if (axis.type === 'band') {\n // 3. 通过axis type识别\n return true;\n }\n // 4. 剩下的情况满足axis orient要求\n return true;\n });\n\n return targetBandAxis;\n }\n\n /**\n * @description bar chart 和 common chart支持autoBandsize, 此方法用于识别barWidth配置后应用到轴上\n * */\n protected _applyAxisBandSize(\n axis: ICartesianBandAxisSpec,\n extend: number,\n barWidthSpec: {\n barMaxWidth: number | string;\n barMinWidth: number | string;\n barWidth: number | string;\n barGapInGroup: number | string | (number | string)[];\n }\n ) {\n const { barMaxWidth, barMinWidth, barWidth, barGapInGroup } = barWidthSpec;\n let hasBarWidth = false;\n if (isNumber(barMinWidth)) {\n axis.minBandSize = barMinWidth as number;\n hasBarWidth = true;\n } else if (isNumber(barWidth)) {\n axis.minBandSize = barWidth as number;\n hasBarWidth = true;\n } else if (isNumber(barMaxWidth)) {\n axis.minBandSize = barMaxWidth as number;\n hasBarWidth = true;\n }\n if (hasBarWidth) {\n axis.bandSizeLevel = Number.MAX_VALUE; // 影响最底层的 scale\n axis.bandSizeExtend = {\n extend,\n gap: isArray(barGapInGroup) ? barGapInGroup[(barGapInGroup as any[]).length - 1] : barGapInGroup\n };\n }\n }\n}\n"]}
@@ -30,6 +30,7 @@ export declare class BaseChart<T extends IChartSpec> extends CompilableBase impl
30
30
  protected _regions: IRegion[];
31
31
  protected _series: ISeries[];
32
32
  protected _components: IComponent[];
33
+ protected _specTransformer: Maybe<IChartSpecTransformer>;
33
34
  protected _layoutFunc: LayoutCallBack;
34
35
  protected _layoutRect: IRect;
35
36
  getLayoutRect(): IRect;
@@ -118,17 +119,32 @@ export declare class BaseChart<T extends IChartSpec> extends CompilableBase impl
118
119
  updateGlobalScale(result: IUpdateSpecResult): void;
119
120
  updateGlobalScaleTheme(): void;
120
121
  private _getSpecKeys;
121
- updateSpec(spec: T): {
122
- change: boolean;
123
- reMake: boolean;
124
- reRender: boolean;
125
- reSize: boolean;
126
- reCompile: boolean;
127
- };
122
+ updateSpec(spec: T): IUpdateSpecResult;
128
123
  updateChartConfig(result: IUpdateSpecResult, oldSpec: IChartSpec): void;
129
124
  updateDataSpec(): void;
130
125
  updateRegionSpec(result: IUpdateSpecResult): void;
131
- updateComponentSpec(result: IUpdateSpecResult): void;
126
+ updateComponentSpec(result: IUpdateSpecResult): {
127
+ componentOnlyUpdatedComponents: IComponent[];
128
+ hasNonComponentOnlyUpdate: boolean;
129
+ };
130
+ private _canChangeMarkerComponentsWithoutRemake;
131
+ private _canAddMarkerComponentsWithoutRemake;
132
+ private _isMarkerAdditionSpecSafeWithoutRemake;
133
+ private _isAutoRangeMarkerSpec;
134
+ private _canRemoveMarkerComponentsWithoutRemake;
135
+ private _isOnlyMarkerComponentsRemoved;
136
+ private _isComponentSpecKey;
137
+ private _isOnlyComponentSpecsChanged;
138
+ private _isOnlySeriesSpecsChanged;
139
+ private _isOnlyComponentOrSeriesSpecsChanged;
140
+ private _canSkipChartDataStages;
141
+ private _isComponentScaleDomainOnlyUpdate;
142
+ private _reRunStackDataFlow;
143
+ private _getModelSpecIndex;
144
+ private _hasComponentForSpecInfo;
145
+ private _createMissingMarkerComponentsForSpecs;
146
+ private _removeMarkerComponentsForEmptySpecs;
147
+ private _removeComponent;
132
148
  updateSeriesSpec(result: IUpdateSpecResult): void;
133
149
  getCanvas(): HTMLCanvasElement;
134
150
  private _updateLayoutRect;
@@ -142,7 +158,7 @@ export declare class BaseChart<T extends IChartSpec> extends CompilableBase impl
142
158
  compileRegions(): void;
143
159
  compileSeries(): void;
144
160
  compileComponents(): void;
145
- release(): void;
161
+ release(forceReleaseVRenderComponents?: boolean): void;
146
162
  onLayout(): void;
147
163
  updateState(state: Record<string, Omit<IMarkStateSpec<unknown>, 'style'>>, filter?: (series: ISeries, mark: IMark, stateKey: string) => boolean): void;
148
164
  setSelected(datum: MaybeArray<any> | null, filter?: (series: ISeries, mark: IMark) => boolean, region?: IRegionQuerier): void;
@@ -38,7 +38,7 @@ import { ChartEvent, HOOK_EVENT } from "../../constant/event";
38
38
 
39
39
  import { DimensionEventEnum } from "../../event/events/dimension/interface";
40
40
 
41
- import { calculateChartSize, mergeUpdateResult } from "../util";
41
+ import { calculateChartSize, isUpdateSpecResultComponentOnly, isUpdateSpecResultLocalOnly, mergeUpdateResult } from "../util";
42
42
 
43
43
  import { isDiscrete } from "@visactor/vscale";
44
44
 
@@ -50,6 +50,19 @@ import { Interaction } from "../../interaction/interaction";
50
50
 
51
51
  import { animationConfig, userAnimationConfig } from "../../animation/utils";
52
52
 
53
+ const MARKER_COMPONENT_SPEC_KEYS = {
54
+ [ComponentTypeEnum.markPoint]: !0,
55
+ [ComponentTypeEnum.markLine]: !0,
56
+ [ComponentTypeEnum.markArea]: !0
57
+ }, MARKER_ADDITION_REMAKE_SPEC_KEYS = {
58
+ regionId: !0,
59
+ regionIndex: !0,
60
+ seriesId: !0,
61
+ seriesIndex: !0,
62
+ specifiedDataSeriesId: !0,
63
+ specifiedDataSeriesIndex: !0
64
+ };
65
+
53
66
  export class BaseChart extends CompilableBase {
54
67
  getSpec() {
55
68
  return this._spec;
@@ -94,7 +107,7 @@ export class BaseChart extends CompilableBase {
94
107
  constructor(spec, option) {
95
108
  var _a, _b, _c, _d;
96
109
  super(option), this.type = "chart", this.id = createID(), this._regions = [], this._series = [],
97
- this._components = [], this._layoutRect = {
110
+ this._components = [], this._specTransformer = null, this._layoutRect = {
98
111
  x: 0,
99
112
  y: 0,
100
113
  width: DEFAULT_CHART_WIDTH,
@@ -136,7 +149,11 @@ export class BaseChart extends CompilableBase {
136
149
  const component = this._components.find((s => s.userId === userId));
137
150
  if (component) return component;
138
151
  }, this.getComponentsByType = type => this._components.filter((c => c.type === type)),
139
- this._paddingSpec = normalizeLayoutPaddingSpec(null !== (_a = spec.padding) && void 0 !== _a ? _a : option.getTheme("padding")),
152
+ this._isMarkerAdditionSpecSafeWithoutRemake = spec => {
153
+ if (!spec || "object" != typeof spec) return !1;
154
+ const markerSpec = spec;
155
+ return !1 !== markerSpec.visible && !Object.keys(MARKER_ADDITION_REMAKE_SPEC_KEYS).some((key => !isNil(markerSpec[key])));
156
+ }, this._paddingSpec = normalizeLayoutPaddingSpec(null !== (_a = spec.padding) && void 0 !== _a ? _a : option.getTheme("padding")),
140
157
  this._event = new Event(option.eventDispatcher, option.mode), this._dataSet = option.dataSet,
141
158
  this._chartData = new ChartData(this._dataSet), this._modelOption = Object.assign(Object.assign({}, option), {
142
159
  mode: this._option.mode,
@@ -153,8 +170,8 @@ export class BaseChart extends CompilableBase {
153
170
  }), this._setModelOption && this._setModelOption(), this._spec = spec;
154
171
  }
155
172
  created(transformer) {
156
- this._chartData.parseData(this._spec.data), this._createGlobalScale(), this._createBackground(),
157
- this._createLayout(), transformer.forEachRegionInSpec(this._spec, this._createRegion.bind(this)),
173
+ this._specTransformer = transformer, this._chartData.parseData(this._spec.data),
174
+ this._createGlobalScale(), this._createBackground(), this._createLayout(), transformer.forEachRegionInSpec(this._spec, this._createRegion.bind(this)),
158
175
  transformer.forEachSeriesInSpec(this._spec, this._createSeries.bind(this)), transformer.forEachComponentInSpec(this._spec, this._createComponent.bind(this), this._option.getSpecInfo());
159
176
  }
160
177
  _initInteractions() {
@@ -446,11 +463,14 @@ export class BaseChart extends CompilableBase {
446
463
  _getSpecKeys(spec) {
447
464
  const ignoreKeys = {
448
465
  width: !0,
449
- height: !0
466
+ height: !0,
467
+ xField: !0,
468
+ yField: !0
450
469
  };
451
470
  return Object.keys(spec).filter((key => !ignoreKeys[key])).sort();
452
471
  }
453
472
  updateSpec(spec) {
473
+ var _a, _b;
454
474
  const result = {
455
475
  change: !1,
456
476
  reMake: !1,
@@ -458,20 +478,34 @@ export class BaseChart extends CompilableBase {
458
478
  reSize: !1,
459
479
  reCompile: !1
460
480
  };
461
- if (this.setLayoutTag(!0, null, !1), spec.type !== this.type) return result.reMake = !0,
481
+ if (spec.type !== this.type) return result.reMake = !0, this.setLayoutTag(!0, null, !1),
462
482
  result;
463
483
  const currentKeys = this._getSpecKeys(this._spec), nextKeys = this._getSpecKeys(spec);
464
- if (!isEqual(currentKeys, nextKeys)) return result.reMake = !0, result;
484
+ if (!isEqual(currentKeys, nextKeys)) return result.reMake = !0, this.setLayoutTag(!0, null, !1),
485
+ result;
465
486
  for (let i = 0; i < currentKeys.length; i++) {
466
- const key = currentKeys[i];
467
- if (isArray(this._spec[key]) && this._spec[key].length !== array(spec[key]).length) return result.reMake = !0,
468
- result;
487
+ const key = currentKeys[i], currentSpec = this._spec[key], nextSpec = spec[key];
488
+ if (isArray(currentSpec) && currentSpec.length !== array(nextSpec).length && !this._canChangeMarkerComponentsWithoutRemake(key, currentSpec, nextSpec)) return result.reMake = !0,
489
+ this.setLayoutTag(!0, null, !1), result;
469
490
  }
470
- const oldSpec = this._spec;
471
- return this._spec = spec, this.updateChartConfig(result, oldSpec), result.reMake ? result : (this.updateGlobalScale(result),
472
- result.reMake ? result : (this.updateRegionSpec(result), result.reMake ? result : (this.updateComponentSpec(result),
473
- result.reMake ? result : (this.updateSeriesSpec(result), result.reMake || (this.reInit(),
474
- this.updateDataSpec(), this.updateGlobalScaleDomain()), result))));
491
+ const oldSpec = this._spec, onlyMarkerComponentsRemoved = this._isOnlyMarkerComponentsRemoved(this._spec, spec, currentKeys), onlyComponentSpecsChanged = this._isOnlyComponentSpecsChanged(this._spec, spec, currentKeys), onlySeriesSpecsChanged = this._isOnlySeriesSpecsChanged(this._spec, spec, currentKeys), onlyComponentOrSeriesSpecsChanged = !(!onlyComponentSpecsChanged && !onlySeriesSpecsChanged) || this._isOnlyComponentOrSeriesSpecsChanged(this._spec, spec, currentKeys);
492
+ if (this._spec = spec, onlyMarkerComponentsRemoved) return this._removeMarkerComponentsForEmptySpecs(result),
493
+ result;
494
+ if (this.updateChartConfig(result, oldSpec), result.reMake) return this.setLayoutTag(!0, null, !1),
495
+ result;
496
+ if (this.updateGlobalScale(result), result.reMake) return this.setLayoutTag(!0, null, !1),
497
+ result;
498
+ if (this.updateRegionSpec(result), result.reMake) return this.setLayoutTag(!0, null, !1),
499
+ result;
500
+ const componentUpdateResult = this.updateComponentSpec(result);
501
+ return result.reMake ? (this.setLayoutTag(!0, null, !1), result) : (!onlyComponentSpecsChanged && (null === (_a = result.effects) || void 0 === _a ? void 0 : _a.localOnly) && delete result.effects.localOnly,
502
+ isUpdateSpecResultLocalOnly(result) ? result : onlyComponentSpecsChanged && !componentUpdateResult.hasNonComponentOnlyUpdate && (isUpdateSpecResultComponentOnly(result) || this._isComponentScaleDomainOnlyUpdate(result)) ? (componentUpdateResult.componentOnlyUpdatedComponents.forEach((component => {
503
+ component.reInit(component.getSpec());
504
+ })), (null === (_b = result.effects) || void 0 === _b ? void 0 : _b.layout) && this.setLayoutTag(!0, null, !1),
505
+ result) : (this.setLayoutTag(!0, null, !1), this.updateSeriesSpec(result), result.reMake || (this.reInit(),
506
+ onlyComponentOrSeriesSpecsChanged && this._canSkipChartDataStages(result) || (this.updateDataSpec(),
507
+ this.reDataFlow(), this._reRunStackDataFlow(), this.getAllModels().forEach((model => model.onDataUpdate())))),
508
+ result));
475
509
  }
476
510
  updateChartConfig(result, oldSpec) {
477
511
  var _a, _b;
@@ -488,33 +522,165 @@ export class BaseChart extends CompilableBase {
488
522
  })) : result.reMake = !0);
489
523
  }
490
524
  updateComponentSpec(result) {
525
+ const componentOnlyUpdatedComponents = [];
526
+ let hasNonComponentOnlyUpdate = !1;
491
527
  const componentCache = {}, checkVisibleComponents = {
492
528
  [ComponentTypeEnum.title]: !0,
493
529
  [ComponentTypeEnum.brush]: !0,
494
530
  [ComponentTypeEnum.indicator]: !0
495
- };
531
+ }, removedComponents = [];
532
+ let hasNonLocalComponentRemoval = !1;
496
533
  this._components.forEach((c => {
497
534
  var _a, _b;
498
- if (c.type === ComponentTypeEnum.label || c.type === ComponentTypeEnum.totalLabel) return;
535
+ if (c.type === ComponentTypeEnum.label || c.type === ComponentTypeEnum.totalLabel) return void (c.getSpecInfo() || (removedComponents.push(c),
536
+ hasNonLocalComponentRemoval = !0, hasNonComponentOnlyUpdate = !0));
499
537
  checkVisibleComponents[c.type] && (checkVisibleComponents[c.type] = !1);
500
538
  const compSpecKey = c.specKey || c.type, cmpSpec = null !== (_a = this._spec[compSpecKey]) && void 0 !== _a ? _a : {};
501
- isArray(cmpSpec) ? (componentCache[compSpecKey] = componentCache[compSpecKey] || {
502
- specCount: cmpSpec.length,
503
- componentCount: 0
504
- }, componentCache[compSpecKey].componentCount++, mergeUpdateResult(result, c.updateSpec(null !== (_b = cmpSpec[c.getSpecIndex()]) && void 0 !== _b ? _b : {}, cmpSpec))) : mergeUpdateResult(result, c.updateSpec(cmpSpec));
505
- }));
539
+ if (isArray(cmpSpec)) {
540
+ if (componentCache[compSpecKey] = componentCache[compSpecKey] || {
541
+ specCount: cmpSpec.length,
542
+ componentCount: 0
543
+ }, this._canRemoveMarkerComponentsWithoutRemake(compSpecKey, [ c.getSpec() ], cmpSpec)) return void removedComponents.push(c);
544
+ componentCache[compSpecKey].componentCount++;
545
+ const componentSpec = null !== (_b = cmpSpec[c.getSpecIndex()]) && void 0 !== _b ? _b : {}, previousComponentSpec = c.getSpec(), componentResult = c.updateSpec(componentSpec, cmpSpec);
546
+ isUpdateSpecResultComponentOnly(componentResult) || this._isComponentScaleDomainOnlyUpdate(componentResult) ? componentOnlyUpdatedComponents.push(c) : isEqual(previousComponentSpec, componentSpec) || (hasNonComponentOnlyUpdate = !0),
547
+ mergeUpdateResult(result, componentResult);
548
+ } else {
549
+ const previousComponentSpec = c.getSpec(), componentResult = c.updateSpec(cmpSpec);
550
+ isUpdateSpecResultComponentOnly(componentResult) || this._isComponentScaleDomainOnlyUpdate(componentResult) ? componentOnlyUpdatedComponents.push(c) : isEqual(previousComponentSpec, cmpSpec) || (hasNonComponentOnlyUpdate = !0),
551
+ mergeUpdateResult(result, componentResult);
552
+ }
553
+ })), result.reMake || this._createMissingMarkerComponentsForSpecs(result, componentCache);
506
554
  for (const key in componentCache) if (Object.prototype.hasOwnProperty.call(componentCache, key)) {
507
555
  const element = componentCache[key];
508
556
  element.componentCount !== element.specCount && (result.reMake = !0);
509
557
  }
558
+ removedComponents.length && (removedComponents.forEach((component => {
559
+ this._removeComponent(component);
560
+ })), result.change = !0, result.effects = Object.assign(Object.assign(Object.assign({}, result.effects), {
561
+ component: !0
562
+ }), hasNonLocalComponentRemoval ? {
563
+ layout: !0,
564
+ render: !0
565
+ } : {
566
+ localOnly: !0
567
+ }));
510
568
  const isVisible = compSpec => compSpec && !1 !== compSpec.visible;
511
- Object.keys(checkVisibleComponents).forEach((type => {
569
+ return Object.keys(checkVisibleComponents).forEach((type => {
512
570
  if (checkVisibleComponents[type]) {
513
571
  const compSpec = this._spec[type];
514
572
  (isArray(compSpec) ? compSpec.some(isVisible) : isVisible(compSpec)) && (result.reMake = !0);
515
573
  }
574
+ })), {
575
+ componentOnlyUpdatedComponents: componentOnlyUpdatedComponents,
576
+ hasNonComponentOnlyUpdate: hasNonComponentOnlyUpdate
577
+ };
578
+ }
579
+ _canChangeMarkerComponentsWithoutRemake(key, currentSpec, nextSpec) {
580
+ return this._canRemoveMarkerComponentsWithoutRemake(key, currentSpec, nextSpec) || this._canAddMarkerComponentsWithoutRemake(key, currentSpec, nextSpec);
581
+ }
582
+ _canAddMarkerComponentsWithoutRemake(key, currentSpec, nextSpec) {
583
+ return !!(MARKER_COMPONENT_SPEC_KEYS[key] && isArray(currentSpec) && isArray(nextSpec)) && (!(nextSpec.length <= currentSpec.length) && nextSpec.slice(currentSpec.length).every(this._isMarkerAdditionSpecSafeWithoutRemake));
584
+ }
585
+ _isAutoRangeMarkerSpec(spec) {
586
+ return !!spec && "object" == typeof spec && !0 === spec.autoRange;
587
+ }
588
+ _canRemoveMarkerComponentsWithoutRemake(key, currentSpec, nextSpec) {
589
+ return MARKER_COMPONENT_SPEC_KEYS[key] && isArray(currentSpec) && currentSpec.length > 0 && isArray(nextSpec) && 0 === nextSpec.length;
590
+ }
591
+ _isOnlyMarkerComponentsRemoved(currentSpec, nextSpec, specKeys) {
592
+ let hasMarkerRemoval = !1;
593
+ const onlyMarkerRemoval = specKeys.every((key => this._canRemoveMarkerComponentsWithoutRemake(key, currentSpec[key], nextSpec[key]) ? (hasMarkerRemoval = !0,
594
+ !0) : isEqual(currentSpec[key], nextSpec[key])));
595
+ return hasMarkerRemoval && onlyMarkerRemoval;
596
+ }
597
+ _isComponentSpecKey(key) {
598
+ return !!MARKER_COMPONENT_SPEC_KEYS[key] || this._components.some((component => (component.specKey || component.type) === key));
599
+ }
600
+ _isOnlyComponentSpecsChanged(currentSpec, nextSpec, specKeys) {
601
+ let hasComponentSpecChange = !1;
602
+ const currentSpecRecord = currentSpec, nextSpecRecord = nextSpec, onlyComponentSpecChange = specKeys.every((key => !!isEqual(currentSpecRecord[key], nextSpecRecord[key]) || !!this._isComponentSpecKey(key) && (hasComponentSpecChange = !0,
603
+ !0)));
604
+ return hasComponentSpecChange && onlyComponentSpecChange;
605
+ }
606
+ _isOnlySeriesSpecsChanged(currentSpec, nextSpec, specKeys) {
607
+ var _a, _b;
608
+ let hasSeriesSpecChange = !1;
609
+ const currentSpecRecord = currentSpec, nextSpecRecord = nextSpec, seriesRelatedSpecKeys = null !== (_b = null === (_a = this._specTransformer) || void 0 === _a ? void 0 : _a.getSeriesRelatedSpecKeys()) && void 0 !== _b ? _b : {}, onlySeriesSpecChange = specKeys.every((key => !!isEqual(currentSpecRecord[key], nextSpecRecord[key]) || !!seriesRelatedSpecKeys[key] && (hasSeriesSpecChange = !0,
610
+ !0)));
611
+ return hasSeriesSpecChange && onlySeriesSpecChange;
612
+ }
613
+ _isOnlyComponentOrSeriesSpecsChanged(currentSpec, nextSpec, specKeys) {
614
+ var _a, _b;
615
+ let hasComponentOrSeriesSpecChange = !1;
616
+ const currentSpecRecord = currentSpec, nextSpecRecord = nextSpec, seriesRelatedSpecKeys = null !== (_b = null === (_a = this._specTransformer) || void 0 === _a ? void 0 : _a.getSeriesRelatedSpecKeys()) && void 0 !== _b ? _b : {}, onlyComponentOrSeriesSpecChange = specKeys.every((key => !!isEqual(currentSpecRecord[key], nextSpecRecord[key]) || !(!this._isComponentSpecKey(key) && !seriesRelatedSpecKeys[key]) && (hasComponentOrSeriesSpecChange = !0,
617
+ !0)));
618
+ return hasComponentOrSeriesSpecChange && onlyComponentOrSeriesSpecChange;
619
+ }
620
+ _canSkipChartDataStages(result) {
621
+ const effects = result.effects;
622
+ return !(!(null == effects ? void 0 : effects.series) || effects.remake || effects.data || effects.scaleDomain || result.reMake);
623
+ }
624
+ _isComponentScaleDomainOnlyUpdate(result) {
625
+ const effects = result.effects;
626
+ return !(!(null == effects ? void 0 : effects.component) || !effects.scaleDomain || result.reMake || result.reCompile || result.reSize || effects.remake || effects.compile || effects.data || effects.series || effects.animation || result.reTransformSpec || result.reAnimate || result.changeTheme || result.changeBackground);
627
+ }
628
+ _reRunStackDataFlow() {
629
+ var _a, _b;
630
+ this._series.some((series => {
631
+ var _a;
632
+ return null === (_a = series.getStack) || void 0 === _a ? void 0 : _a.call(series);
633
+ })) && (null === (_b = null === (_a = this._stack) || void 0 === _a ? void 0 : _a.stackAll) || void 0 === _b || _b.call(_a),
634
+ this._series.forEach((series => {
635
+ series.getViewDataFilter() && series.reTransformViewData();
636
+ })));
637
+ }
638
+ _getModelSpecIndex(specInfo) {
639
+ var _a;
640
+ const specPath = null !== (_a = specInfo.specPath) && void 0 !== _a ? _a : [], specIndex = specPath[specPath.length - 1];
641
+ return "number" == typeof specIndex ? specIndex : 0;
642
+ }
643
+ _hasComponentForSpecInfo(key, specInfo) {
644
+ const specIndex = this._getModelSpecIndex(specInfo);
645
+ return this._components.some((component => (component.specKey || component.type) === key && component.getSpecIndex() === specIndex));
646
+ }
647
+ _createMissingMarkerComponentsForSpecs(result, componentCache) {
648
+ var _a;
649
+ let createdCount = 0, hasAutoRangeMarker = !1;
650
+ null === (_a = this._specTransformer) || void 0 === _a || _a.forEachComponentInSpec(this._spec, ((constructor, specInfo) => {
651
+ if (result.reMake) return;
652
+ const compSpecKey = constructor.specKey || constructor.type;
653
+ MARKER_COMPONENT_SPEC_KEYS[compSpecKey] && !this._hasComponentForSpecInfo(compSpecKey, specInfo) && (this._isMarkerAdditionSpecSafeWithoutRemake(specInfo.spec) ? (this._createComponent(constructor, specInfo),
654
+ componentCache[compSpecKey] && componentCache[compSpecKey].componentCount++, createdCount++,
655
+ hasAutoRangeMarker = hasAutoRangeMarker || this._isAutoRangeMarkerSpec(specInfo.spec)) : result.reMake = !0);
656
+ }), this._option.getSpecInfo()), createdCount && (result.change = !0, result.effects = Object.assign(Object.assign(Object.assign(Object.assign({}, result.effects), {
657
+ component: !0
658
+ }), hasAutoRangeMarker ? {
659
+ scaleDomain: !0
660
+ } : null), {
661
+ layout: !0,
662
+ render: !0
516
663
  }));
517
664
  }
665
+ _removeMarkerComponentsForEmptySpecs(result) {
666
+ const removedComponents = this._components.filter((component => {
667
+ var _a;
668
+ const compSpecKey = component.specKey || component.type, cmpSpec = null !== (_a = this._spec[compSpecKey]) && void 0 !== _a ? _a : {};
669
+ return this._canRemoveMarkerComponentsWithoutRemake(compSpecKey, [ component.getSpec() ], cmpSpec);
670
+ }));
671
+ removedComponents.length && (removedComponents.forEach((component => {
672
+ this._removeComponent(component);
673
+ })), result.change = !0, result.effects = Object.assign(Object.assign({}, result.effects), {
674
+ component: !0,
675
+ localOnly: !0
676
+ }));
677
+ }
678
+ _removeComponent(component) {
679
+ this._components = this._components.filter((c => c !== component)), this._idMap.delete(component.id),
680
+ component.getMarks().forEach((mark => {
681
+ this.getCompiler().removeRootMark(mark);
682
+ })), component.release();
683
+ }
518
684
  updateSeriesSpec(result) {
519
685
  this._spec.series.length === this._series.length ? this._series.forEach((s => {
520
686
  const spec = this._spec.series[s.getSpecIndex()];
@@ -610,8 +776,8 @@ export class BaseChart extends CompilableBase {
610
776
  c.compile();
611
777
  })), null === (_d = null === (_c = this._option.performanceHook) || void 0 === _c ? void 0 : _c.afterComponentCompile) || void 0 === _d || _d.call(_c, this._option.globalInstance);
612
778
  }
613
- release() {
614
- [ ...this._components, ...this._regions, ...this._series ].forEach((m => {
779
+ release(forceReleaseVRenderComponents = !0) {
780
+ forceReleaseVRenderComponents && [ ...this._components, ...this._regions, ...this._series ].forEach((m => {
615
781
  m.beforeRelease();
616
782
  })), super.release(), this.clear(), [ ...this._components, ...this._regions, ...this._series ].forEach((m => {
617
783
  m.release();