@visactor/vchart 1.3.0-beta.8 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (985) hide show
  1. package/build/es5/index.js +3 -3
  2. package/build/index.js +17083 -16200
  3. package/build/index.min.js +2 -2
  4. package/build/tsconfig.tsbuildinfo +1 -1
  5. package/cjs/animation/utils.js +2 -2
  6. package/cjs/animation/utils.js.map +1 -1
  7. package/cjs/chart/area/area.js +2 -2
  8. package/cjs/chart/area/area.js.map +1 -1
  9. package/cjs/chart/bar/bar-3d.js +2 -2
  10. package/cjs/chart/bar/bar-3d.js.map +1 -1
  11. package/cjs/chart/bar/bar.js +2 -2
  12. package/cjs/chart/bar/bar.js.map +1 -1
  13. package/cjs/chart/base-chart.d.ts +1 -0
  14. package/cjs/chart/base-chart.js +14 -8
  15. package/cjs/chart/base-chart.js.map +1 -1
  16. package/cjs/chart/box-plot/box-plot.js +2 -2
  17. package/cjs/chart/box-plot/box-plot.js.map +1 -1
  18. package/cjs/chart/cartesian/cartesian.js +1 -1
  19. package/cjs/chart/cartesian/cartesian.js.map +1 -1
  20. package/cjs/chart/circle-packing/circle-packing.js +2 -2
  21. package/cjs/chart/circle-packing/circle-packing.js.map +1 -1
  22. package/cjs/chart/funnel/funnel-3d.js +2 -2
  23. package/cjs/chart/funnel/funnel-3d.js.map +1 -1
  24. package/cjs/chart/funnel/funnel.js +2 -2
  25. package/cjs/chart/funnel/funnel.js.map +1 -1
  26. package/cjs/chart/gauge/gauge.js +2 -2
  27. package/cjs/chart/gauge/gauge.js.map +1 -1
  28. package/cjs/chart/heatmap/heatmap.js +2 -2
  29. package/cjs/chart/heatmap/heatmap.js.map +1 -1
  30. package/cjs/chart/histogram/histogram-3d.js +2 -2
  31. package/cjs/chart/histogram/histogram-3d.js.map +1 -1
  32. package/cjs/chart/histogram/histogram.js +2 -2
  33. package/cjs/chart/histogram/histogram.js.map +1 -1
  34. package/cjs/chart/index.d.ts +1 -1
  35. package/cjs/chart/index.js.map +1 -1
  36. package/cjs/chart/line/line.js +2 -2
  37. package/cjs/chart/line/line.js.map +1 -1
  38. package/cjs/chart/map/map.js +2 -2
  39. package/cjs/chart/map/map.js.map +1 -1
  40. package/cjs/chart/pie/pie-3d.js +2 -2
  41. package/cjs/chart/pie/pie-3d.js.map +1 -1
  42. package/cjs/chart/pie/pie.js +2 -2
  43. package/cjs/chart/pie/pie.js.map +1 -1
  44. package/cjs/chart/polar/progress-like.js +2 -2
  45. package/cjs/chart/polar/progress-like.js.map +1 -1
  46. package/cjs/chart/polar/rose-like.js +1 -1
  47. package/cjs/chart/polar/rose-like.js.map +1 -1
  48. package/cjs/chart/progress/circular/circular.js +2 -2
  49. package/cjs/chart/progress/circular/circular.js.map +1 -1
  50. package/cjs/chart/progress/linear/linear.js +4 -4
  51. package/cjs/chart/progress/linear/linear.js.map +1 -1
  52. package/cjs/chart/radar/radar.js +4 -4
  53. package/cjs/chart/radar/radar.js.map +1 -1
  54. package/cjs/chart/range-area/range-area.js +2 -2
  55. package/cjs/chart/range-area/range-area.js.map +1 -1
  56. package/cjs/chart/range-column/range-column-3d.js +2 -2
  57. package/cjs/chart/range-column/range-column-3d.js.map +1 -1
  58. package/cjs/chart/range-column/range-column.js +2 -2
  59. package/cjs/chart/range-column/range-column.js.map +1 -1
  60. package/cjs/chart/rose/rose.js +3 -3
  61. package/cjs/chart/rose/rose.js.map +1 -1
  62. package/cjs/chart/sankey/sankey.js +2 -2
  63. package/cjs/chart/sankey/sankey.js.map +1 -1
  64. package/cjs/chart/scatter/scatter.js +2 -2
  65. package/cjs/chart/scatter/scatter.js.map +1 -1
  66. package/cjs/chart/sequence/sequence.js +2 -2
  67. package/cjs/chart/sequence/sequence.js.map +1 -1
  68. package/cjs/chart/stack.js.map +1 -1
  69. package/cjs/chart/sunburst/sunburst.js +2 -2
  70. package/cjs/chart/sunburst/sunburst.js.map +1 -1
  71. package/cjs/chart/treemap/treemap.js +2 -2
  72. package/cjs/chart/treemap/treemap.js.map +1 -1
  73. package/cjs/chart/util.js +1 -1
  74. package/cjs/chart/util.js.map +1 -1
  75. package/cjs/chart/waterfall/waterfall.js +2 -2
  76. package/cjs/chart/waterfall/waterfall.js.map +1 -1
  77. package/cjs/chart/word-cloud/word-cloud-3d.js +2 -2
  78. package/cjs/chart/word-cloud/word-cloud-3d.js.map +1 -1
  79. package/cjs/chart/word-cloud/word-cloud.js +2 -2
  80. package/cjs/chart/word-cloud/word-cloud.js.map +1 -1
  81. package/cjs/compile/compiler.d.ts +4 -0
  82. package/cjs/compile/compiler.js +4 -0
  83. package/cjs/compile/compiler.js.map +1 -1
  84. package/cjs/compile/interface/compilable-item.d.ts +1 -0
  85. package/cjs/compile/interface/compilable-item.js.map +1 -1
  86. package/cjs/compile/mark/compilable-mark.js +9 -10
  87. package/cjs/compile/mark/compilable-mark.js.map +1 -1
  88. package/cjs/compile/mark/interface.d.ts +0 -1
  89. package/cjs/compile/mark/interface.js.map +1 -1
  90. package/cjs/compile/mark/util.d.ts +2 -1
  91. package/cjs/compile/mark/util.js +21 -5
  92. package/cjs/compile/mark/util.js.map +1 -1
  93. package/cjs/component/axis/base-axis.d.ts +1 -14
  94. package/cjs/component/axis/base-axis.js +18 -29
  95. package/cjs/component/axis/base-axis.js.map +1 -1
  96. package/cjs/component/axis/cartesian/axis.d.ts +1 -1
  97. package/cjs/component/axis/cartesian/axis.js +24 -23
  98. package/cjs/component/axis/cartesian/axis.js.map +1 -1
  99. package/cjs/component/axis/cartesian/band-axis.d.ts +1 -0
  100. package/cjs/component/axis/cartesian/band-axis.js +1 -0
  101. package/cjs/component/axis/cartesian/band-axis.js.map +1 -1
  102. package/cjs/component/axis/cartesian/index.d.ts +1 -0
  103. package/cjs/component/axis/cartesian/index.js +2 -1
  104. package/cjs/component/axis/cartesian/index.js.map +1 -1
  105. package/cjs/component/axis/cartesian/interface/common.d.ts +2 -0
  106. package/cjs/component/axis/cartesian/interface/common.js.map +1 -1
  107. package/cjs/component/axis/cartesian/interface/spec.d.ts +4 -1
  108. package/cjs/component/axis/cartesian/interface/spec.js.map +1 -1
  109. package/cjs/component/axis/cartesian/linear-axis.js +4 -3
  110. package/cjs/component/axis/cartesian/linear-axis.js.map +1 -1
  111. package/cjs/component/axis/cartesian/symlog-axis.d.ts +16 -0
  112. package/cjs/component/axis/cartesian/symlog-axis.js +23 -0
  113. package/cjs/component/axis/cartesian/symlog-axis.js.map +1 -0
  114. package/cjs/component/axis/cartesian/time-axis.js +2 -2
  115. package/cjs/component/axis/cartesian/time-axis.js.map +1 -1
  116. package/cjs/component/axis/interface.d.ts +4 -8
  117. package/cjs/component/axis/interface.js.map +1 -1
  118. package/cjs/component/axis/mixin/linear-axis-mixin.js +3 -3
  119. package/cjs/component/axis/mixin/linear-axis-mixin.js.map +1 -1
  120. package/cjs/component/axis/polar/axis.d.ts +2 -1
  121. package/cjs/component/axis/polar/axis.js +15 -14
  122. package/cjs/component/axis/polar/axis.js.map +1 -1
  123. package/cjs/component/axis/polar/band-axis.d.ts +1 -0
  124. package/cjs/component/axis/polar/interface/common.d.ts +1 -1
  125. package/cjs/component/axis/polar/interface/common.js.map +1 -1
  126. package/cjs/component/axis/{utils.d.ts → util.d.ts} +1 -1
  127. package/cjs/component/axis/{utils.js → util.js} +6 -6
  128. package/cjs/component/axis/util.js.map +1 -0
  129. package/cjs/component/base/base-component.d.ts +10 -2
  130. package/cjs/component/base/base-component.js +10 -5
  131. package/cjs/component/base/base-component.js.map +1 -1
  132. package/cjs/component/base/interface.d.ts +8 -0
  133. package/cjs/component/base/interface.js +6 -0
  134. package/cjs/component/base/interface.js.map +1 -0
  135. package/cjs/component/base/util.d.ts +2 -1
  136. package/cjs/component/base/util.js +21 -16
  137. package/cjs/component/base/util.js.map +1 -1
  138. package/cjs/component/brush/brush.d.ts +12 -2
  139. package/cjs/component/brush/brush.js +74 -63
  140. package/cjs/component/brush/brush.js.map +1 -1
  141. package/cjs/component/crosshair/base.d.ts +2 -2
  142. package/cjs/component/crosshair/base.js +1 -1
  143. package/cjs/component/crosshair/base.js.map +1 -1
  144. package/cjs/component/crosshair/cartesian.js +9 -9
  145. package/cjs/component/crosshair/cartesian.js.map +1 -1
  146. package/cjs/component/crosshair/interface/spec.d.ts +8 -8
  147. package/cjs/component/crosshair/interface/spec.js.map +1 -1
  148. package/cjs/component/crosshair/interface/theme.d.ts +3 -1
  149. package/cjs/component/crosshair/interface/theme.js.map +1 -1
  150. package/cjs/component/crosshair/polar.js +9 -9
  151. package/cjs/component/crosshair/polar.js.map +1 -1
  152. package/cjs/component/crosshair/util.d.ts +5 -0
  153. package/cjs/component/crosshair/util.js +41 -4
  154. package/cjs/component/crosshair/util.js.map +1 -1
  155. package/cjs/component/custom-mark/custom-mark.d.ts +1 -1
  156. package/cjs/component/custom-mark/custom-mark.js +3 -3
  157. package/cjs/component/custom-mark/custom-mark.js.map +1 -1
  158. package/cjs/component/data-zoom/data-filter-base-component.d.ts +0 -1
  159. package/cjs/component/data-zoom/data-filter-base-component.js +2 -9
  160. package/cjs/component/data-zoom/data-filter-base-component.js.map +1 -1
  161. package/cjs/component/data-zoom/data-zoom/data-zoom.js +6 -6
  162. package/cjs/component/data-zoom/data-zoom/data-zoom.js.map +1 -1
  163. package/cjs/component/data-zoom/data-zoom/interface.d.ts +2 -2
  164. package/cjs/component/data-zoom/data-zoom/interface.js.map +1 -1
  165. package/cjs/component/data-zoom/interface.d.ts +2 -5
  166. package/cjs/component/data-zoom/interface.js.map +1 -1
  167. package/cjs/component/geo/geo-coordinate.d.ts +2 -0
  168. package/cjs/component/geo/geo-coordinate.js +29 -3
  169. package/cjs/component/geo/geo-coordinate.js.map +1 -1
  170. package/cjs/component/geo/projection.d.ts +1 -0
  171. package/cjs/component/geo/projection.js +4 -0
  172. package/cjs/component/geo/projection.js.map +1 -1
  173. package/cjs/component/index.d.ts +2 -2
  174. package/cjs/component/index.js +6 -1
  175. package/cjs/component/index.js.map +1 -1
  176. package/cjs/component/indicator/indicator.d.ts +1 -0
  177. package/cjs/component/indicator/indicator.js +10 -7
  178. package/cjs/component/indicator/indicator.js.map +1 -1
  179. package/cjs/component/indicator/interface.d.ts +5 -6
  180. package/cjs/component/indicator/interface.js.map +1 -1
  181. package/cjs/component/interface/theme.d.ts +2 -2
  182. package/cjs/component/interface/theme.js.map +1 -1
  183. package/cjs/component/interface/type.d.ts +1 -0
  184. package/cjs/component/interface/type.js +12 -11
  185. package/cjs/component/interface/type.js.map +1 -1
  186. package/cjs/component/label/base-label.d.ts +0 -1
  187. package/cjs/component/label/base-label.js +0 -5
  188. package/cjs/component/label/base-label.js.map +1 -1
  189. package/cjs/component/label/interface.d.ts +2 -1
  190. package/cjs/component/label/interface.js.map +1 -1
  191. package/cjs/component/label/label.d.ts +0 -1
  192. package/cjs/component/label/label.js +1 -6
  193. package/cjs/component/label/label.js.map +1 -1
  194. package/cjs/component/label/totalLabel.js +1 -1
  195. package/cjs/component/label/totalLabel.js.map +1 -1
  196. package/cjs/component/legend/base-legend.js +4 -4
  197. package/cjs/component/legend/base-legend.js.map +1 -1
  198. package/cjs/component/legend/continuous/util.js +4 -4
  199. package/cjs/component/legend/continuous/util.js.map +1 -1
  200. package/cjs/component/legend/discrete/interface.d.ts +3 -1
  201. package/cjs/component/legend/discrete/interface.js.map +1 -1
  202. package/cjs/component/legend/discrete/legend.js +2 -2
  203. package/cjs/component/legend/discrete/legend.js.map +1 -1
  204. package/cjs/component/legend/discrete/util.js +2 -2
  205. package/cjs/component/legend/discrete/util.js.map +1 -1
  206. package/cjs/component/legend/interface.d.ts +2 -6
  207. package/cjs/component/legend/interface.js.map +1 -1
  208. package/cjs/component/legend/util.js +2 -2
  209. package/cjs/component/legend/util.js.map +1 -1
  210. package/cjs/component/marker/interface.d.ts +2 -2
  211. package/cjs/component/marker/interface.js.map +1 -1
  212. package/cjs/component/poptip/interface.d.ts +15 -0
  213. package/cjs/component/poptip/interface.js +6 -0
  214. package/cjs/component/poptip/interface.js.map +1 -0
  215. package/cjs/component/title/interface/spec.d.ts +2 -2
  216. package/cjs/component/title/interface/spec.js.map +1 -1
  217. package/cjs/component/tooltip/handler/dom/model/content-column-model.js +5 -5
  218. package/cjs/component/tooltip/handler/dom/model/content-column-model.js.map +1 -1
  219. package/cjs/component/tooltip/handler/dom/model/content-model.js +2 -2
  220. package/cjs/component/tooltip/handler/dom/model/content-model.js.map +1 -1
  221. package/cjs/component/tooltip/handler/dom/model/title-model.js +2 -2
  222. package/cjs/component/tooltip/handler/dom/model/title-model.js.map +1 -1
  223. package/cjs/component/tooltip/handler/dom/model/tooltip-model.js +2 -2
  224. package/cjs/component/tooltip/handler/dom/model/tooltip-model.js.map +1 -1
  225. package/cjs/component/tooltip/handler/dom/util.js +3 -3
  226. package/cjs/component/tooltip/handler/dom/util.js.map +1 -1
  227. package/cjs/component/tooltip/handler/utils/attribute.js +3 -3
  228. package/cjs/component/tooltip/handler/utils/attribute.js.map +1 -1
  229. package/cjs/component/tooltip/handler/utils/get-spec.js +1 -1
  230. package/cjs/component/tooltip/handler/utils/get-spec.js.map +1 -1
  231. package/cjs/component/tooltip/handler/utils/style.js +2 -2
  232. package/cjs/component/tooltip/handler/utils/style.js.map +1 -1
  233. package/cjs/component/tooltip/processor/base.js +1 -1
  234. package/cjs/component/tooltip/processor/base.js.map +1 -1
  235. package/cjs/component/tooltip/tooltip.js +3 -2
  236. package/cjs/component/tooltip/tooltip.js.map +1 -1
  237. package/cjs/core/index.d.ts +1 -1
  238. package/cjs/core/index.js +1 -1
  239. package/cjs/core/index.js.map +1 -1
  240. package/cjs/core/vchart.js +20 -17
  241. package/cjs/core/vchart.js.map +1 -1
  242. package/cjs/data/transforms/dimension-statistics.d.ts +11 -5
  243. package/cjs/data/transforms/dimension-statistics.js +34 -22
  244. package/cjs/data/transforms/dimension-statistics.js.map +1 -1
  245. package/cjs/data/transforms/legend-data/discrete/discrete.js +4 -2
  246. package/cjs/data/transforms/legend-data/discrete/discrete.js.map +1 -1
  247. package/cjs/data/transforms/tick-data/discrete/polar-angle.js +2 -2
  248. package/cjs/data/transforms/tick-data/discrete/polar-angle.js.map +1 -1
  249. package/cjs/data/transforms/tick-data/util.js +5 -5
  250. package/cjs/data/transforms/tick-data/util.js.map +1 -1
  251. package/cjs/event/events/dimension/util/cartesian.js +2 -2
  252. package/cjs/event/events/dimension/util/cartesian.js.map +1 -1
  253. package/cjs/event/events/dimension/util/polar.js +1 -1
  254. package/cjs/event/events/dimension/util/polar.js.map +1 -1
  255. package/cjs/interaction/trigger.js +2 -2
  256. package/cjs/interaction/trigger.js.map +1 -1
  257. package/cjs/mark/base/base-mark.d.ts +1 -0
  258. package/cjs/mark/base/base-mark.js +21 -4
  259. package/cjs/mark/base/base-mark.js.map +1 -1
  260. package/cjs/mark/mark-set/index.d.ts +1 -0
  261. package/cjs/mark/mark-set/index.js.map +1 -1
  262. package/cjs/mark/symbol.js +1 -1
  263. package/cjs/mark/symbol.js.map +1 -1
  264. package/cjs/model/base-model.js +2 -2
  265. package/cjs/model/base-model.js.map +1 -1
  266. package/cjs/model/interface.d.ts +1 -1
  267. package/cjs/model/interface.js.map +1 -1
  268. package/cjs/plugin/components/index.d.ts +0 -2
  269. package/cjs/plugin/components/index.js +1 -2
  270. package/cjs/plugin/components/index.js.map +1 -1
  271. package/cjs/series/area/area.d.ts +4 -1
  272. package/cjs/series/area/area.js +9 -5
  273. package/cjs/series/area/area.js.map +1 -1
  274. package/cjs/series/bar/bar.js +10 -10
  275. package/cjs/series/bar/bar.js.map +1 -1
  276. package/cjs/series/base/base-series.d.ts +2 -0
  277. package/cjs/series/base/base-series.js +71 -15
  278. package/cjs/series/base/base-series.js.map +1 -1
  279. package/cjs/series/base/tooltip-helper.js +4 -2
  280. package/cjs/series/base/tooltip-helper.js.map +1 -1
  281. package/cjs/series/box-plot/box-plot.js +1 -1
  282. package/cjs/series/box-plot/box-plot.js.map +1 -1
  283. package/cjs/series/cartesian/cartesian.d.ts +10 -3
  284. package/cjs/series/cartesian/cartesian.js +39 -27
  285. package/cjs/series/cartesian/cartesian.js.map +1 -1
  286. package/cjs/series/cartesian/interface.d.ts +1 -0
  287. package/cjs/series/cartesian/interface.js.map +1 -1
  288. package/cjs/series/dot/dot.js +1 -1
  289. package/cjs/series/dot/dot.js.map +1 -1
  290. package/cjs/series/funnel/funnel.js +13 -3
  291. package/cjs/series/funnel/funnel.js.map +1 -1
  292. package/cjs/series/heatmap/heatmap.js +1 -1
  293. package/cjs/series/heatmap/heatmap.js.map +1 -1
  294. package/cjs/series/line/interface.d.ts +0 -2
  295. package/cjs/series/line/interface.js.map +1 -1
  296. package/cjs/series/line/line.d.ts +1 -0
  297. package/cjs/series/line/line.js +1 -1
  298. package/cjs/series/line/line.js.map +1 -1
  299. package/cjs/series/link/link.js +1 -1
  300. package/cjs/series/link/link.js.map +1 -1
  301. package/cjs/series/map/geo-source.js +2 -2
  302. package/cjs/series/map/geo-source.js.map +1 -1
  303. package/cjs/series/map/interface.d.ts +1 -0
  304. package/cjs/series/map/interface.js.map +1 -1
  305. package/cjs/series/map/map.js +8 -4
  306. package/cjs/series/map/map.js.map +1 -1
  307. package/cjs/series/mixin/line-mixin.d.ts +3 -2
  308. package/cjs/series/mixin/line-mixin.js +30 -13
  309. package/cjs/series/mixin/line-mixin.js.map +1 -1
  310. package/cjs/series/pie/pie.js +1 -1
  311. package/cjs/series/pie/pie.js.map +1 -1
  312. package/cjs/series/polar/interface.d.ts +1 -0
  313. package/cjs/series/polar/interface.js.map +1 -1
  314. package/cjs/series/polar/polar.d.ts +4 -0
  315. package/cjs/series/polar/polar.js +15 -3
  316. package/cjs/series/polar/polar.js.map +1 -1
  317. package/cjs/series/radar/radar.d.ts +1 -0
  318. package/cjs/series/radar/radar.js +1 -1
  319. package/cjs/series/radar/radar.js.map +1 -1
  320. package/cjs/series/range-area/range-area.d.ts +2 -0
  321. package/cjs/series/range-area/range-area.js +3 -0
  322. package/cjs/series/range-area/range-area.js.map +1 -1
  323. package/cjs/series/range-column/range-column.js +2 -2
  324. package/cjs/series/range-column/range-column.js.map +1 -1
  325. package/cjs/series/rose/rose.js +1 -1
  326. package/cjs/series/rose/rose.js.map +1 -1
  327. package/cjs/series/sankey/interface.d.ts +3 -2
  328. package/cjs/series/sankey/interface.js.map +1 -1
  329. package/cjs/series/sankey/sankey.d.ts +5 -0
  330. package/cjs/series/sankey/sankey.js +246 -92
  331. package/cjs/series/sankey/sankey.js.map +1 -1
  332. package/cjs/series/scatter/scatter.d.ts +1 -1
  333. package/cjs/series/scatter/scatter.js +13 -8
  334. package/cjs/series/scatter/scatter.js.map +1 -1
  335. package/cjs/series/util/utils.d.ts +4 -1
  336. package/cjs/series/util/utils.js +8 -6
  337. package/cjs/series/util/utils.js.map +1 -1
  338. package/cjs/theme/builtin/common/component/axis/cartesian-axis.js +4 -4
  339. package/cjs/theme/builtin/common/component/axis/cartesian-axis.js.map +1 -1
  340. package/cjs/theme/builtin/common/component/axis/common-axis.js +12 -6
  341. package/cjs/theme/builtin/common/component/axis/common-axis.js.map +1 -1
  342. package/cjs/theme/builtin/common/component/axis/polar-axis.js +1 -1
  343. package/cjs/theme/builtin/common/component/axis/polar-axis.js.map +1 -1
  344. package/cjs/theme/builtin/common/component/crosshair.js +73 -117
  345. package/cjs/theme/builtin/common/component/crosshair.js.map +1 -1
  346. package/cjs/theme/builtin/common/component/data-zoom.js +19 -7
  347. package/cjs/theme/builtin/common/component/data-zoom.js.map +1 -1
  348. package/cjs/theme/builtin/common/component/indicator.js +17 -5
  349. package/cjs/theme/builtin/common/component/indicator.js.map +1 -1
  350. package/cjs/theme/builtin/common/component/legend/color-legend.js +31 -5
  351. package/cjs/theme/builtin/common/component/legend/color-legend.js.map +1 -1
  352. package/cjs/theme/builtin/common/component/legend/continuous.js +26 -12
  353. package/cjs/theme/builtin/common/component/legend/continuous.js.map +1 -1
  354. package/cjs/theme/builtin/common/component/legend/discrete-legend.js +22 -9
  355. package/cjs/theme/builtin/common/component/legend/discrete-legend.js.map +1 -1
  356. package/cjs/theme/builtin/common/component/legend/size-legend.js +54 -15
  357. package/cjs/theme/builtin/common/component/legend/size-legend.js.map +1 -1
  358. package/cjs/theme/builtin/common/component/map-label.js +5 -5
  359. package/cjs/theme/builtin/common/component/map-label.js.map +1 -1
  360. package/cjs/theme/builtin/common/component/mark-area.js +7 -2
  361. package/cjs/theme/builtin/common/component/mark-area.js.map +1 -1
  362. package/cjs/theme/builtin/common/component/mark-line.js +7 -2
  363. package/cjs/theme/builtin/common/component/mark-line.js.map +1 -1
  364. package/cjs/theme/builtin/common/component/player.js +33 -7
  365. package/cjs/theme/builtin/common/component/player.js.map +1 -1
  366. package/cjs/theme/builtin/common/component/poptip.d.ts +2 -2
  367. package/cjs/theme/builtin/common/component/poptip.js +20 -12
  368. package/cjs/theme/builtin/common/component/poptip.js.map +1 -1
  369. package/cjs/theme/builtin/common/component/title.js +9 -5
  370. package/cjs/theme/builtin/common/component/title.js.map +1 -1
  371. package/cjs/theme/builtin/common/component/tooltip.js +13 -10
  372. package/cjs/theme/builtin/common/component/tooltip.js.map +1 -1
  373. package/cjs/theme/builtin/common/component/total-label.js +4 -4
  374. package/cjs/theme/builtin/common/component/total-label.js.map +1 -1
  375. package/cjs/theme/builtin/common/constants.js +17 -10
  376. package/cjs/theme/builtin/common/constants.js.map +1 -1
  377. package/cjs/theme/builtin/common/mark.js +8 -4
  378. package/cjs/theme/builtin/common/mark.js.map +1 -1
  379. package/cjs/theme/builtin/common/series/area.js +2 -7
  380. package/cjs/theme/builtin/common/series/area.js.map +1 -1
  381. package/cjs/theme/builtin/common/series/bar.js +2 -7
  382. package/cjs/theme/builtin/common/series/bar.js.map +1 -1
  383. package/cjs/theme/builtin/common/series/bar3d.js +1 -6
  384. package/cjs/theme/builtin/common/series/bar3d.js.map +1 -1
  385. package/cjs/theme/builtin/common/series/circle-packing.js +11 -5
  386. package/cjs/theme/builtin/common/series/circle-packing.js.map +1 -1
  387. package/cjs/theme/builtin/common/series/dot.js +11 -3
  388. package/cjs/theme/builtin/common/series/dot.js.map +1 -1
  389. package/cjs/theme/builtin/common/series/funnel.js +7 -4
  390. package/cjs/theme/builtin/common/series/funnel.js.map +1 -1
  391. package/cjs/theme/builtin/common/series/funnel3d.js +7 -4
  392. package/cjs/theme/builtin/common/series/funnel3d.js.map +1 -1
  393. package/cjs/theme/builtin/common/series/line.js +2 -7
  394. package/cjs/theme/builtin/common/series/line.js.map +1 -1
  395. package/cjs/theme/builtin/common/series/map.js +4 -2
  396. package/cjs/theme/builtin/common/series/map.js.map +1 -1
  397. package/cjs/theme/builtin/common/series/pie.js +1 -6
  398. package/cjs/theme/builtin/common/series/pie.js.map +1 -1
  399. package/cjs/theme/builtin/common/series/pie3d.js +2 -9
  400. package/cjs/theme/builtin/common/series/pie3d.js.map +1 -1
  401. package/cjs/theme/builtin/common/series/radar.js +2 -7
  402. package/cjs/theme/builtin/common/series/radar.js.map +1 -1
  403. package/cjs/theme/builtin/common/series/rangeColumn.js +2 -3
  404. package/cjs/theme/builtin/common/series/rangeColumn.js.map +1 -1
  405. package/cjs/theme/builtin/common/series/rose.js +1 -2
  406. package/cjs/theme/builtin/common/series/rose.js.map +1 -1
  407. package/cjs/theme/builtin/common/series/sankey.js +0 -1
  408. package/cjs/theme/builtin/common/series/sankey.js.map +1 -1
  409. package/cjs/theme/builtin/common/series/scatter.js +2 -7
  410. package/cjs/theme/builtin/common/series/scatter.js.map +1 -1
  411. package/cjs/theme/builtin/common/series/sunburst.js +5 -2
  412. package/cjs/theme/builtin/common/series/sunburst.js.map +1 -1
  413. package/cjs/theme/builtin/common/series/treemap.js +9 -5
  414. package/cjs/theme/builtin/common/series/treemap.js.map +1 -1
  415. package/cjs/theme/builtin/common/series/waterfall.js +5 -6
  416. package/cjs/theme/builtin/common/series/waterfall.js.map +1 -1
  417. package/cjs/theme/builtin/dark/color-scheme.js +5 -3
  418. package/cjs/theme/builtin/dark/color-scheme.js.map +1 -1
  419. package/cjs/theme/builtin/index.d.ts +0 -1
  420. package/cjs/theme/builtin/index.js +1 -2
  421. package/cjs/theme/builtin/index.js.map +1 -1
  422. package/cjs/theme/builtin/light/color-scheme.js +4 -2
  423. package/cjs/theme/builtin/light/color-scheme.js.map +1 -1
  424. package/cjs/theme/builtin/light/index.js +2 -2
  425. package/cjs/theme/builtin/light/index.js.map +1 -1
  426. package/cjs/theme/color-scheme/builtin/interface.d.ts +22 -0
  427. package/cjs/theme/color-scheme/builtin/interface.js +6 -0
  428. package/cjs/theme/color-scheme/builtin/interface.js.map +1 -0
  429. package/cjs/theme/color-scheme/interface.d.ts +3 -2
  430. package/cjs/theme/color-scheme/interface.js.map +1 -1
  431. package/cjs/theme/color-scheme/util.js +8 -2
  432. package/cjs/theme/color-scheme/util.js.map +1 -1
  433. package/cjs/theme/interface.d.ts +16 -5
  434. package/cjs/theme/interface.js.map +1 -1
  435. package/cjs/typings/spec/common.d.ts +2 -1
  436. package/cjs/typings/spec/common.js.map +1 -1
  437. package/cjs/typings/visual.d.ts +10 -20
  438. package/cjs/typings/visual.js.map +1 -1
  439. package/cjs/util/data.d.ts +0 -8
  440. package/cjs/util/data.js +2 -9
  441. package/cjs/util/data.js.map +1 -1
  442. package/cjs/util/object.d.ts +2 -4
  443. package/cjs/util/object.js +2 -18
  444. package/cjs/util/object.js.map +1 -1
  445. package/cjs/util/scale.d.ts +2 -6
  446. package/cjs/util/scale.js +1 -6
  447. package/cjs/util/scale.js.map +1 -1
  448. package/cjs/util/space.d.ts +3 -10
  449. package/cjs/util/space.js +13 -28
  450. package/cjs/util/space.js.map +1 -1
  451. package/cjs/util/spec/background.d.ts +4 -0
  452. package/cjs/util/spec/background.js +27 -0
  453. package/cjs/util/spec/background.js.map +1 -0
  454. package/cjs/util/spec/clone-deep.d.ts +1 -0
  455. package/cjs/util/spec/clone-deep.js +27 -0
  456. package/cjs/util/spec/clone-deep.js.map +1 -0
  457. package/cjs/util/spec/common.d.ts +3 -0
  458. package/cjs/util/spec/common.js +23 -0
  459. package/cjs/util/spec/common.js.map +1 -0
  460. package/cjs/util/spec/index.d.ts +7 -0
  461. package/cjs/util/spec/index.js +24 -0
  462. package/cjs/util/spec/index.js.map +1 -0
  463. package/cjs/util/spec/merge-spec.d.ts +1 -0
  464. package/cjs/util/spec/merge-spec.js +58 -0
  465. package/cjs/util/spec/merge-spec.js.map +1 -0
  466. package/cjs/util/spec/merge-theme.d.ts +3 -0
  467. package/cjs/util/spec/merge-theme.js +37 -0
  468. package/cjs/util/spec/merge-theme.js.map +1 -0
  469. package/cjs/util/spec/preprocess.d.ts +3 -0
  470. package/cjs/util/spec/preprocess.js +24 -0
  471. package/cjs/util/spec/preprocess.js.map +1 -0
  472. package/cjs/util/spec/transform.d.ts +3 -0
  473. package/cjs/util/spec/transform.js +28 -0
  474. package/cjs/util/spec/transform.js.map +1 -0
  475. package/cjs/util/text.d.ts +1 -2
  476. package/cjs/util/text.js +4 -14
  477. package/cjs/util/text.js.map +1 -1
  478. package/cjs/vchart-all.js +1 -1
  479. package/cjs/vchart-all.js.map +1 -1
  480. package/cjs/vchart-simple.js +3 -4
  481. package/cjs/vchart-simple.js.map +1 -1
  482. package/esm/animation/utils.js +3 -3
  483. package/esm/animation/utils.js.map +1 -1
  484. package/esm/chart/area/area.js +3 -3
  485. package/esm/chart/area/area.js.map +1 -1
  486. package/esm/chart/bar/bar-3d.js +2 -2
  487. package/esm/chart/bar/bar-3d.js.map +1 -1
  488. package/esm/chart/bar/bar.js +2 -2
  489. package/esm/chart/bar/bar.js.map +1 -1
  490. package/esm/chart/base-chart.d.ts +1 -0
  491. package/esm/chart/base-chart.js +14 -8
  492. package/esm/chart/base-chart.js.map +1 -1
  493. package/esm/chart/box-plot/box-plot.js +1 -1
  494. package/esm/chart/box-plot/box-plot.js.map +1 -1
  495. package/esm/chart/cartesian/cartesian.js +1 -1
  496. package/esm/chart/cartesian/cartesian.js.map +1 -1
  497. package/esm/chart/circle-packing/circle-packing.js +1 -1
  498. package/esm/chart/circle-packing/circle-packing.js.map +1 -1
  499. package/esm/chart/funnel/funnel-3d.js +1 -1
  500. package/esm/chart/funnel/funnel-3d.js.map +1 -1
  501. package/esm/chart/funnel/funnel.js +1 -1
  502. package/esm/chart/funnel/funnel.js.map +1 -1
  503. package/esm/chart/gauge/gauge.js +2 -2
  504. package/esm/chart/gauge/gauge.js.map +1 -1
  505. package/esm/chart/heatmap/heatmap.js +1 -1
  506. package/esm/chart/heatmap/heatmap.js.map +1 -1
  507. package/esm/chart/histogram/histogram-3d.js +2 -2
  508. package/esm/chart/histogram/histogram-3d.js.map +1 -1
  509. package/esm/chart/histogram/histogram.js +2 -2
  510. package/esm/chart/histogram/histogram.js.map +1 -1
  511. package/esm/chart/index.d.ts +1 -1
  512. package/esm/chart/index.js.map +1 -1
  513. package/esm/chart/line/line.js +1 -1
  514. package/esm/chart/line/line.js.map +1 -1
  515. package/esm/chart/map/map.js +2 -2
  516. package/esm/chart/map/map.js.map +1 -1
  517. package/esm/chart/pie/pie-3d.js +2 -2
  518. package/esm/chart/pie/pie-3d.js.map +1 -1
  519. package/esm/chart/pie/pie.js +2 -2
  520. package/esm/chart/pie/pie.js.map +1 -1
  521. package/esm/chart/polar/progress-like.js +1 -1
  522. package/esm/chart/polar/progress-like.js.map +1 -1
  523. package/esm/chart/polar/rose-like.js +1 -1
  524. package/esm/chart/polar/rose-like.js.map +1 -1
  525. package/esm/chart/progress/circular/circular.js +1 -1
  526. package/esm/chart/progress/circular/circular.js.map +1 -1
  527. package/esm/chart/progress/linear/linear.js +2 -2
  528. package/esm/chart/progress/linear/linear.js.map +1 -1
  529. package/esm/chart/radar/radar.js +5 -5
  530. package/esm/chart/radar/radar.js.map +1 -1
  531. package/esm/chart/range-area/range-area.js +1 -1
  532. package/esm/chart/range-area/range-area.js.map +1 -1
  533. package/esm/chart/range-column/range-column-3d.js +1 -1
  534. package/esm/chart/range-column/range-column-3d.js.map +1 -1
  535. package/esm/chart/range-column/range-column.js +1 -1
  536. package/esm/chart/range-column/range-column.js.map +1 -1
  537. package/esm/chart/rose/rose.js +4 -4
  538. package/esm/chart/rose/rose.js.map +1 -1
  539. package/esm/chart/sankey/sankey.js +1 -1
  540. package/esm/chart/sankey/sankey.js.map +1 -1
  541. package/esm/chart/scatter/scatter.js +2 -2
  542. package/esm/chart/scatter/scatter.js.map +1 -1
  543. package/esm/chart/sequence/sequence.js +4 -2
  544. package/esm/chart/sequence/sequence.js.map +1 -1
  545. package/esm/chart/stack.js.map +1 -1
  546. package/esm/chart/sunburst/sunburst.js +1 -1
  547. package/esm/chart/sunburst/sunburst.js.map +1 -1
  548. package/esm/chart/treemap/treemap.js +1 -1
  549. package/esm/chart/treemap/treemap.js.map +1 -1
  550. package/esm/chart/util.js +2 -2
  551. package/esm/chart/util.js.map +1 -1
  552. package/esm/chart/waterfall/waterfall.js +1 -1
  553. package/esm/chart/waterfall/waterfall.js.map +1 -1
  554. package/esm/chart/word-cloud/word-cloud-3d.js +1 -1
  555. package/esm/chart/word-cloud/word-cloud-3d.js.map +1 -1
  556. package/esm/chart/word-cloud/word-cloud.js +1 -1
  557. package/esm/chart/word-cloud/word-cloud.js.map +1 -1
  558. package/esm/compile/compiler.d.ts +4 -0
  559. package/esm/compile/compiler.js +4 -0
  560. package/esm/compile/compiler.js.map +1 -1
  561. package/esm/compile/interface/compilable-item.d.ts +1 -0
  562. package/esm/compile/interface/compilable-item.js.map +1 -1
  563. package/esm/compile/mark/compilable-mark.js +9 -11
  564. package/esm/compile/mark/compilable-mark.js.map +1 -1
  565. package/esm/compile/mark/interface.d.ts +0 -1
  566. package/esm/compile/mark/interface.js.map +1 -1
  567. package/esm/compile/mark/util.d.ts +2 -1
  568. package/esm/compile/mark/util.js +19 -3
  569. package/esm/compile/mark/util.js.map +1 -1
  570. package/esm/component/axis/base-axis.d.ts +1 -14
  571. package/esm/component/axis/base-axis.js +19 -30
  572. package/esm/component/axis/base-axis.js.map +1 -1
  573. package/esm/component/axis/cartesian/axis.d.ts +1 -1
  574. package/esm/component/axis/cartesian/axis.js +21 -20
  575. package/esm/component/axis/cartesian/axis.js.map +1 -1
  576. package/esm/component/axis/cartesian/band-axis.d.ts +1 -0
  577. package/esm/component/axis/cartesian/band-axis.js +1 -0
  578. package/esm/component/axis/cartesian/band-axis.js.map +1 -1
  579. package/esm/component/axis/cartesian/index.d.ts +1 -0
  580. package/esm/component/axis/cartesian/index.js +2 -0
  581. package/esm/component/axis/cartesian/index.js.map +1 -1
  582. package/esm/component/axis/cartesian/interface/common.d.ts +2 -0
  583. package/esm/component/axis/cartesian/interface/common.js.map +1 -1
  584. package/esm/component/axis/cartesian/interface/spec.d.ts +4 -1
  585. package/esm/component/axis/cartesian/interface/spec.js.map +1 -1
  586. package/esm/component/axis/cartesian/linear-axis.js +3 -4
  587. package/esm/component/axis/cartesian/linear-axis.js.map +1 -1
  588. package/esm/component/axis/cartesian/symlog-axis.d.ts +16 -0
  589. package/esm/component/axis/cartesian/symlog-axis.js +24 -0
  590. package/esm/component/axis/cartesian/symlog-axis.js.map +1 -0
  591. package/esm/component/axis/cartesian/time-axis.js +3 -3
  592. package/esm/component/axis/cartesian/time-axis.js.map +1 -1
  593. package/esm/component/axis/interface.d.ts +4 -8
  594. package/esm/component/axis/interface.js.map +1 -1
  595. package/esm/component/axis/mixin/linear-axis-mixin.js +1 -1
  596. package/esm/component/axis/mixin/linear-axis-mixin.js.map +1 -1
  597. package/esm/component/axis/polar/axis.d.ts +2 -1
  598. package/esm/component/axis/polar/axis.js +14 -13
  599. package/esm/component/axis/polar/axis.js.map +1 -1
  600. package/esm/component/axis/polar/band-axis.d.ts +1 -0
  601. package/esm/component/axis/polar/interface/common.d.ts +1 -1
  602. package/esm/component/axis/polar/interface/common.js.map +1 -1
  603. package/esm/component/axis/{utils.d.ts → util.d.ts} +1 -1
  604. package/esm/component/axis/{utils.js → util.js} +7 -5
  605. package/esm/component/axis/util.js.map +1 -0
  606. package/esm/component/base/base-component.d.ts +10 -2
  607. package/esm/component/base/base-component.js +9 -5
  608. package/esm/component/base/base-component.js.map +1 -1
  609. package/esm/component/base/interface.d.ts +8 -0
  610. package/esm/component/base/interface.js +2 -0
  611. package/esm/component/base/interface.js.map +1 -0
  612. package/esm/component/base/util.d.ts +2 -1
  613. package/esm/component/base/util.js +14 -7
  614. package/esm/component/base/util.js.map +1 -1
  615. package/esm/component/brush/brush.d.ts +12 -2
  616. package/esm/component/brush/brush.js +74 -62
  617. package/esm/component/brush/brush.js.map +1 -1
  618. package/esm/component/crosshair/base.d.ts +2 -2
  619. package/esm/component/crosshair/base.js +1 -1
  620. package/esm/component/crosshair/base.js.map +1 -1
  621. package/esm/component/crosshair/cartesian.js +7 -7
  622. package/esm/component/crosshair/cartesian.js.map +1 -1
  623. package/esm/component/crosshair/interface/spec.d.ts +8 -8
  624. package/esm/component/crosshair/interface/spec.js.map +1 -1
  625. package/esm/component/crosshair/interface/theme.d.ts +3 -1
  626. package/esm/component/crosshair/interface/theme.js.map +1 -1
  627. package/esm/component/crosshair/polar.js +8 -8
  628. package/esm/component/crosshair/polar.js.map +1 -1
  629. package/esm/component/crosshair/util.d.ts +5 -0
  630. package/esm/component/crosshair/util.js +34 -0
  631. package/esm/component/crosshair/util.js.map +1 -1
  632. package/esm/component/custom-mark/custom-mark.d.ts +1 -1
  633. package/esm/component/custom-mark/custom-mark.js +4 -4
  634. package/esm/component/custom-mark/custom-mark.js.map +1 -1
  635. package/esm/component/data-zoom/data-filter-base-component.d.ts +0 -1
  636. package/esm/component/data-zoom/data-filter-base-component.js +2 -9
  637. package/esm/component/data-zoom/data-filter-base-component.js.map +1 -1
  638. package/esm/component/data-zoom/data-zoom/data-zoom.js +8 -6
  639. package/esm/component/data-zoom/data-zoom/data-zoom.js.map +1 -1
  640. package/esm/component/data-zoom/data-zoom/interface.d.ts +2 -2
  641. package/esm/component/data-zoom/data-zoom/interface.js.map +1 -1
  642. package/esm/component/data-zoom/interface.d.ts +2 -5
  643. package/esm/component/data-zoom/interface.js.map +1 -1
  644. package/esm/component/geo/geo-coordinate.d.ts +2 -0
  645. package/esm/component/geo/geo-coordinate.js +30 -4
  646. package/esm/component/geo/geo-coordinate.js.map +1 -1
  647. package/esm/component/geo/projection.d.ts +1 -0
  648. package/esm/component/geo/projection.js +4 -0
  649. package/esm/component/geo/projection.js.map +1 -1
  650. package/esm/component/index.d.ts +2 -2
  651. package/esm/component/index.js +2 -2
  652. package/esm/component/index.js.map +1 -1
  653. package/esm/component/indicator/indicator.d.ts +1 -0
  654. package/esm/component/indicator/indicator.js +8 -7
  655. package/esm/component/indicator/indicator.js.map +1 -1
  656. package/esm/component/indicator/interface.d.ts +5 -6
  657. package/esm/component/indicator/interface.js.map +1 -1
  658. package/esm/component/interface/theme.d.ts +2 -2
  659. package/esm/component/interface/theme.js.map +1 -1
  660. package/esm/component/interface/type.d.ts +1 -0
  661. package/esm/component/interface/type.js +12 -11
  662. package/esm/component/interface/type.js.map +1 -1
  663. package/esm/component/label/base-label.d.ts +0 -1
  664. package/esm/component/label/base-label.js +0 -5
  665. package/esm/component/label/base-label.js.map +1 -1
  666. package/esm/component/label/interface.d.ts +2 -1
  667. package/esm/component/label/interface.js.map +1 -1
  668. package/esm/component/label/label.d.ts +0 -1
  669. package/esm/component/label/label.js +2 -7
  670. package/esm/component/label/label.js.map +1 -1
  671. package/esm/component/label/totalLabel.js +2 -2
  672. package/esm/component/label/totalLabel.js.map +1 -1
  673. package/esm/component/legend/base-legend.js +5 -5
  674. package/esm/component/legend/base-legend.js.map +1 -1
  675. package/esm/component/legend/continuous/util.js +5 -3
  676. package/esm/component/legend/continuous/util.js.map +1 -1
  677. package/esm/component/legend/discrete/interface.d.ts +3 -1
  678. package/esm/component/legend/discrete/interface.js.map +1 -1
  679. package/esm/component/legend/discrete/legend.js +2 -2
  680. package/esm/component/legend/discrete/legend.js.map +1 -1
  681. package/esm/component/legend/discrete/util.js +4 -4
  682. package/esm/component/legend/discrete/util.js.map +1 -1
  683. package/esm/component/legend/interface.d.ts +2 -6
  684. package/esm/component/legend/interface.js.map +1 -1
  685. package/esm/component/legend/util.js +4 -2
  686. package/esm/component/legend/util.js.map +1 -1
  687. package/esm/component/marker/interface.d.ts +2 -2
  688. package/esm/component/marker/interface.js.map +1 -1
  689. package/esm/component/poptip/interface.d.ts +15 -0
  690. package/esm/component/poptip/interface.js +2 -0
  691. package/esm/component/poptip/interface.js.map +1 -0
  692. package/esm/component/title/interface/spec.d.ts +2 -2
  693. package/esm/component/title/interface/spec.js.map +1 -1
  694. package/esm/component/tooltip/handler/dom/model/content-column-model.js +7 -5
  695. package/esm/component/tooltip/handler/dom/model/content-column-model.js.map +1 -1
  696. package/esm/component/tooltip/handler/dom/model/content-model.js +2 -2
  697. package/esm/component/tooltip/handler/dom/model/content-model.js.map +1 -1
  698. package/esm/component/tooltip/handler/dom/model/title-model.js +3 -3
  699. package/esm/component/tooltip/handler/dom/model/title-model.js.map +1 -1
  700. package/esm/component/tooltip/handler/dom/model/tooltip-model.js +4 -2
  701. package/esm/component/tooltip/handler/dom/model/tooltip-model.js.map +1 -1
  702. package/esm/component/tooltip/handler/dom/util.js +4 -4
  703. package/esm/component/tooltip/handler/dom/util.js.map +1 -1
  704. package/esm/component/tooltip/handler/utils/attribute.js +5 -5
  705. package/esm/component/tooltip/handler/utils/attribute.js.map +1 -1
  706. package/esm/component/tooltip/handler/utils/get-spec.js +2 -2
  707. package/esm/component/tooltip/handler/utils/get-spec.js.map +1 -1
  708. package/esm/component/tooltip/handler/utils/style.js +2 -2
  709. package/esm/component/tooltip/handler/utils/style.js.map +1 -1
  710. package/esm/component/tooltip/processor/base.js +1 -1
  711. package/esm/component/tooltip/processor/base.js.map +1 -1
  712. package/esm/component/tooltip/tooltip.js +4 -3
  713. package/esm/component/tooltip/tooltip.js.map +1 -1
  714. package/esm/core/index.d.ts +1 -1
  715. package/esm/core/index.js +1 -1
  716. package/esm/core/index.js.map +1 -1
  717. package/esm/core/vchart.js +22 -19
  718. package/esm/core/vchart.js.map +1 -1
  719. package/esm/data/transforms/dimension-statistics.d.ts +11 -5
  720. package/esm/data/transforms/dimension-statistics.js +33 -22
  721. package/esm/data/transforms/dimension-statistics.js.map +1 -1
  722. package/esm/data/transforms/legend-data/discrete/discrete.js +4 -3
  723. package/esm/data/transforms/legend-data/discrete/discrete.js.map +1 -1
  724. package/esm/data/transforms/tick-data/discrete/polar-angle.js +1 -1
  725. package/esm/data/transforms/tick-data/discrete/polar-angle.js.map +1 -1
  726. package/esm/data/transforms/tick-data/util.js +1 -1
  727. package/esm/data/transforms/tick-data/util.js.map +1 -1
  728. package/esm/event/events/dimension/util/cartesian.js +2 -2
  729. package/esm/event/events/dimension/util/cartesian.js.map +1 -1
  730. package/esm/event/events/dimension/util/polar.js +1 -1
  731. package/esm/event/events/dimension/util/polar.js.map +1 -1
  732. package/esm/interaction/trigger.js +3 -3
  733. package/esm/interaction/trigger.js.map +1 -1
  734. package/esm/mark/base/base-mark.d.ts +1 -0
  735. package/esm/mark/base/base-mark.js +22 -5
  736. package/esm/mark/base/base-mark.js.map +1 -1
  737. package/esm/mark/mark-set/index.d.ts +1 -0
  738. package/esm/mark/mark-set/index.js.map +1 -1
  739. package/esm/mark/symbol.js +1 -1
  740. package/esm/mark/symbol.js.map +1 -1
  741. package/esm/model/base-model.js +4 -4
  742. package/esm/model/base-model.js.map +1 -1
  743. package/esm/model/interface.d.ts +1 -1
  744. package/esm/model/interface.js.map +1 -1
  745. package/esm/plugin/components/index.d.ts +0 -2
  746. package/esm/plugin/components/index.js +0 -3
  747. package/esm/plugin/components/index.js.map +1 -1
  748. package/esm/series/area/area.d.ts +4 -1
  749. package/esm/series/area/area.js +10 -7
  750. package/esm/series/area/area.js.map +1 -1
  751. package/esm/series/bar/bar.js +3 -5
  752. package/esm/series/bar/bar.js.map +1 -1
  753. package/esm/series/base/base-series.d.ts +2 -0
  754. package/esm/series/base/base-series.js +71 -16
  755. package/esm/series/base/base-series.js.map +1 -1
  756. package/esm/series/base/tooltip-helper.js +4 -2
  757. package/esm/series/base/tooltip-helper.js.map +1 -1
  758. package/esm/series/box-plot/box-plot.js +1 -1
  759. package/esm/series/box-plot/box-plot.js.map +1 -1
  760. package/esm/series/cartesian/cartesian.d.ts +10 -3
  761. package/esm/series/cartesian/cartesian.js +37 -26
  762. package/esm/series/cartesian/cartesian.js.map +1 -1
  763. package/esm/series/cartesian/interface.d.ts +1 -0
  764. package/esm/series/cartesian/interface.js.map +1 -1
  765. package/esm/series/dot/dot.js +2 -2
  766. package/esm/series/dot/dot.js.map +1 -1
  767. package/esm/series/funnel/funnel.js +12 -2
  768. package/esm/series/funnel/funnel.js.map +1 -1
  769. package/esm/series/heatmap/heatmap.js +2 -2
  770. package/esm/series/heatmap/heatmap.js.map +1 -1
  771. package/esm/series/line/interface.d.ts +0 -2
  772. package/esm/series/line/interface.js.map +1 -1
  773. package/esm/series/line/line.d.ts +1 -0
  774. package/esm/series/line/line.js +1 -1
  775. package/esm/series/line/line.js.map +1 -1
  776. package/esm/series/link/link.js +1 -1
  777. package/esm/series/link/link.js.map +1 -1
  778. package/esm/series/map/geo-source.js +3 -1
  779. package/esm/series/map/geo-source.js.map +1 -1
  780. package/esm/series/map/interface.d.ts +1 -0
  781. package/esm/series/map/interface.js.map +1 -1
  782. package/esm/series/map/map.js +9 -3
  783. package/esm/series/map/map.js.map +1 -1
  784. package/esm/series/mixin/line-mixin.d.ts +3 -2
  785. package/esm/series/mixin/line-mixin.js +32 -13
  786. package/esm/series/mixin/line-mixin.js.map +1 -1
  787. package/esm/series/pie/pie.js +2 -2
  788. package/esm/series/pie/pie.js.map +1 -1
  789. package/esm/series/polar/interface.d.ts +1 -0
  790. package/esm/series/polar/interface.js.map +1 -1
  791. package/esm/series/polar/polar.d.ts +4 -0
  792. package/esm/series/polar/polar.js +15 -2
  793. package/esm/series/polar/polar.js.map +1 -1
  794. package/esm/series/radar/radar.d.ts +1 -0
  795. package/esm/series/radar/radar.js +1 -1
  796. package/esm/series/radar/radar.js.map +1 -1
  797. package/esm/series/range-area/range-area.d.ts +2 -0
  798. package/esm/series/range-area/range-area.js +3 -0
  799. package/esm/series/range-area/range-area.js.map +1 -1
  800. package/esm/series/range-column/range-column.js +3 -3
  801. package/esm/series/range-column/range-column.js.map +1 -1
  802. package/esm/series/rose/rose.js +2 -2
  803. package/esm/series/rose/rose.js.map +1 -1
  804. package/esm/series/sankey/interface.d.ts +3 -2
  805. package/esm/series/sankey/interface.js.map +1 -1
  806. package/esm/series/sankey/sankey.d.ts +5 -0
  807. package/esm/series/sankey/sankey.js +248 -93
  808. package/esm/series/sankey/sankey.js.map +1 -1
  809. package/esm/series/scatter/scatter.d.ts +1 -1
  810. package/esm/series/scatter/scatter.js +14 -9
  811. package/esm/series/scatter/scatter.js.map +1 -1
  812. package/esm/series/util/utils.d.ts +4 -1
  813. package/esm/series/util/utils.js +6 -4
  814. package/esm/series/util/utils.js.map +1 -1
  815. package/esm/theme/builtin/common/component/axis/cartesian-axis.js +4 -4
  816. package/esm/theme/builtin/common/component/axis/cartesian-axis.js.map +1 -1
  817. package/esm/theme/builtin/common/component/axis/common-axis.js +12 -6
  818. package/esm/theme/builtin/common/component/axis/common-axis.js.map +1 -1
  819. package/esm/theme/builtin/common/component/axis/polar-axis.js +1 -1
  820. package/esm/theme/builtin/common/component/axis/polar-axis.js.map +1 -1
  821. package/esm/theme/builtin/common/component/crosshair.js +73 -117
  822. package/esm/theme/builtin/common/component/crosshair.js.map +1 -1
  823. package/esm/theme/builtin/common/component/data-zoom.js +16 -6
  824. package/esm/theme/builtin/common/component/data-zoom.js.map +1 -1
  825. package/esm/theme/builtin/common/component/indicator.js +14 -4
  826. package/esm/theme/builtin/common/component/indicator.js.map +1 -1
  827. package/esm/theme/builtin/common/component/legend/color-legend.js +32 -4
  828. package/esm/theme/builtin/common/component/legend/color-legend.js.map +1 -1
  829. package/esm/theme/builtin/common/component/legend/continuous.js +26 -12
  830. package/esm/theme/builtin/common/component/legend/continuous.js.map +1 -1
  831. package/esm/theme/builtin/common/component/legend/discrete-legend.js +22 -9
  832. package/esm/theme/builtin/common/component/legend/discrete-legend.js.map +1 -1
  833. package/esm/theme/builtin/common/component/legend/size-legend.js +55 -14
  834. package/esm/theme/builtin/common/component/legend/size-legend.js.map +1 -1
  835. package/esm/theme/builtin/common/component/map-label.js +4 -6
  836. package/esm/theme/builtin/common/component/map-label.js.map +1 -1
  837. package/esm/theme/builtin/common/component/mark-area.js +4 -1
  838. package/esm/theme/builtin/common/component/mark-area.js.map +1 -1
  839. package/esm/theme/builtin/common/component/mark-line.js +4 -1
  840. package/esm/theme/builtin/common/component/mark-line.js.map +1 -1
  841. package/esm/theme/builtin/common/component/player.js +33 -7
  842. package/esm/theme/builtin/common/component/player.js.map +1 -1
  843. package/esm/theme/builtin/common/component/poptip.d.ts +2 -2
  844. package/esm/theme/builtin/common/component/poptip.js +17 -11
  845. package/esm/theme/builtin/common/component/poptip.js.map +1 -1
  846. package/esm/theme/builtin/common/component/title.js +9 -5
  847. package/esm/theme/builtin/common/component/title.js.map +1 -1
  848. package/esm/theme/builtin/common/component/tooltip.js +12 -11
  849. package/esm/theme/builtin/common/component/tooltip.js.map +1 -1
  850. package/esm/theme/builtin/common/component/total-label.js +3 -5
  851. package/esm/theme/builtin/common/component/total-label.js.map +1 -1
  852. package/esm/theme/builtin/common/constants.js +16 -7
  853. package/esm/theme/builtin/common/constants.js.map +1 -1
  854. package/esm/theme/builtin/common/mark.js +8 -4
  855. package/esm/theme/builtin/common/mark.js.map +1 -1
  856. package/esm/theme/builtin/common/series/area.js +1 -4
  857. package/esm/theme/builtin/common/series/area.js.map +1 -1
  858. package/esm/theme/builtin/common/series/bar.js +1 -4
  859. package/esm/theme/builtin/common/series/bar.js.map +1 -1
  860. package/esm/theme/builtin/common/series/bar3d.js +0 -3
  861. package/esm/theme/builtin/common/series/bar3d.js.map +1 -1
  862. package/esm/theme/builtin/common/series/circle-packing.js +8 -4
  863. package/esm/theme/builtin/common/series/circle-packing.js.map +1 -1
  864. package/esm/theme/builtin/common/series/dot.js +8 -2
  865. package/esm/theme/builtin/common/series/dot.js.map +1 -1
  866. package/esm/theme/builtin/common/series/funnel.js +6 -5
  867. package/esm/theme/builtin/common/series/funnel.js.map +1 -1
  868. package/esm/theme/builtin/common/series/funnel3d.js +6 -5
  869. package/esm/theme/builtin/common/series/funnel3d.js.map +1 -1
  870. package/esm/theme/builtin/common/series/line.js +1 -4
  871. package/esm/theme/builtin/common/series/line.js.map +1 -1
  872. package/esm/theme/builtin/common/series/map.js +4 -2
  873. package/esm/theme/builtin/common/series/map.js.map +1 -1
  874. package/esm/theme/builtin/common/series/pie.js +0 -3
  875. package/esm/theme/builtin/common/series/pie.js.map +1 -1
  876. package/esm/theme/builtin/common/series/pie3d.js +1 -6
  877. package/esm/theme/builtin/common/series/pie3d.js.map +1 -1
  878. package/esm/theme/builtin/common/series/radar.js +1 -4
  879. package/esm/theme/builtin/common/series/radar.js.map +1 -1
  880. package/esm/theme/builtin/common/series/rangeColumn.js +1 -4
  881. package/esm/theme/builtin/common/series/rangeColumn.js.map +1 -1
  882. package/esm/theme/builtin/common/series/rose.js +1 -2
  883. package/esm/theme/builtin/common/series/rose.js.map +1 -1
  884. package/esm/theme/builtin/common/series/sankey.js +0 -1
  885. package/esm/theme/builtin/common/series/sankey.js.map +1 -1
  886. package/esm/theme/builtin/common/series/scatter.js +1 -4
  887. package/esm/theme/builtin/common/series/scatter.js.map +1 -1
  888. package/esm/theme/builtin/common/series/sunburst.js +6 -1
  889. package/esm/theme/builtin/common/series/sunburst.js.map +1 -1
  890. package/esm/theme/builtin/common/series/treemap.js +8 -6
  891. package/esm/theme/builtin/common/series/treemap.js.map +1 -1
  892. package/esm/theme/builtin/common/series/waterfall.js +4 -7
  893. package/esm/theme/builtin/common/series/waterfall.js.map +1 -1
  894. package/esm/theme/builtin/dark/color-scheme.js +5 -3
  895. package/esm/theme/builtin/dark/color-scheme.js.map +1 -1
  896. package/esm/theme/builtin/index.d.ts +0 -1
  897. package/esm/theme/builtin/index.js +0 -2
  898. package/esm/theme/builtin/index.js.map +1 -1
  899. package/esm/theme/builtin/light/color-scheme.js +4 -2
  900. package/esm/theme/builtin/light/color-scheme.js.map +1 -1
  901. package/esm/theme/builtin/light/index.js +2 -2
  902. package/esm/theme/builtin/light/index.js.map +1 -1
  903. package/esm/theme/color-scheme/builtin/interface.d.ts +22 -0
  904. package/esm/theme/color-scheme/builtin/interface.js +2 -0
  905. package/esm/theme/color-scheme/builtin/interface.js.map +1 -0
  906. package/esm/theme/color-scheme/interface.d.ts +3 -2
  907. package/esm/theme/color-scheme/interface.js.map +1 -1
  908. package/esm/theme/color-scheme/util.js +8 -3
  909. package/esm/theme/color-scheme/util.js.map +1 -1
  910. package/esm/theme/interface.d.ts +16 -5
  911. package/esm/theme/interface.js.map +1 -1
  912. package/esm/typings/spec/common.d.ts +2 -1
  913. package/esm/typings/spec/common.js.map +1 -1
  914. package/esm/typings/visual.d.ts +10 -20
  915. package/esm/typings/visual.js.map +1 -1
  916. package/esm/util/data.d.ts +0 -8
  917. package/esm/util/data.js +1 -7
  918. package/esm/util/data.js.map +1 -1
  919. package/esm/util/object.d.ts +2 -4
  920. package/esm/util/object.js +2 -13
  921. package/esm/util/object.js.map +1 -1
  922. package/esm/util/scale.d.ts +2 -6
  923. package/esm/util/scale.js +1 -5
  924. package/esm/util/scale.js.map +1 -1
  925. package/esm/util/space.d.ts +3 -10
  926. package/esm/util/space.js +5 -23
  927. package/esm/util/space.js.map +1 -1
  928. package/esm/util/spec/background.d.ts +4 -0
  929. package/esm/util/spec/background.js +21 -0
  930. package/esm/util/spec/background.js.map +1 -0
  931. package/esm/util/spec/clone-deep.d.ts +1 -0
  932. package/esm/util/spec/clone-deep.js +20 -0
  933. package/esm/util/spec/clone-deep.js.map +1 -0
  934. package/esm/util/spec/common.d.ts +3 -0
  935. package/esm/util/spec/common.js +15 -0
  936. package/esm/util/spec/common.js.map +1 -0
  937. package/esm/util/spec/index.d.ts +7 -0
  938. package/esm/util/spec/index.js +14 -0
  939. package/esm/util/spec/index.js.map +1 -0
  940. package/esm/util/spec/merge-spec.d.ts +1 -0
  941. package/esm/util/spec/merge-spec.js +48 -0
  942. package/esm/util/spec/merge-spec.js.map +1 -0
  943. package/esm/util/spec/merge-theme.d.ts +3 -0
  944. package/esm/util/spec/merge-theme.js +34 -0
  945. package/esm/util/spec/merge-theme.js.map +1 -0
  946. package/esm/util/spec/preprocess.d.ts +3 -0
  947. package/esm/util/spec/preprocess.js +20 -0
  948. package/esm/util/spec/preprocess.js.map +1 -0
  949. package/esm/util/spec/transform.d.ts +3 -0
  950. package/esm/util/spec/transform.js +20 -0
  951. package/esm/util/spec/transform.js.map +1 -0
  952. package/esm/util/text.d.ts +1 -2
  953. package/esm/util/text.js +4 -12
  954. package/esm/util/text.js.map +1 -1
  955. package/esm/vchart-all.js +2 -2
  956. package/esm/vchart-all.js.map +1 -1
  957. package/esm/vchart-simple.js +18 -2
  958. package/esm/vchart-simple.js.map +1 -1
  959. package/package.json +20 -13
  960. package/cjs/component/axis/utils.js.map +0 -1
  961. package/cjs/plugin/components/axis-label-overlap-plugin.d.ts +0 -10
  962. package/cjs/plugin/components/axis-label-overlap-plugin.js +0 -75
  963. package/cjs/plugin/components/axis-label-overlap-plugin.js.map +0 -1
  964. package/cjs/theme/builtin/common/component/axis/log-axis.d.ts +0 -2
  965. package/cjs/theme/builtin/common/component/axis/log-axis.js +0 -22
  966. package/cjs/theme/builtin/common/component/axis/log-axis.js.map +0 -1
  967. package/cjs/theme/builtin/constant.d.ts +0 -2
  968. package/cjs/theme/builtin/constant.js +0 -8
  969. package/cjs/theme/builtin/constant.js.map +0 -1
  970. package/cjs/util/spec.d.ts +0 -17
  971. package/cjs/util/spec.js +0 -121
  972. package/cjs/util/spec.js.map +0 -1
  973. package/esm/component/axis/utils.js.map +0 -1
  974. package/esm/plugin/components/axis-label-overlap-plugin.d.ts +0 -10
  975. package/esm/plugin/components/axis-label-overlap-plugin.js +0 -72
  976. package/esm/plugin/components/axis-label-overlap-plugin.js.map +0 -1
  977. package/esm/theme/builtin/common/component/axis/log-axis.d.ts +0 -2
  978. package/esm/theme/builtin/common/component/axis/log-axis.js +0 -18
  979. package/esm/theme/builtin/common/component/axis/log-axis.js.map +0 -1
  980. package/esm/theme/builtin/constant.d.ts +0 -2
  981. package/esm/theme/builtin/constant.js +0 -4
  982. package/esm/theme/builtin/constant.js.map +0 -1
  983. package/esm/util/spec.d.ts +0 -17
  984. package/esm/util/spec.js +0 -112
  985. package/esm/util/spec.js.map +0 -1
@@ -99,7 +99,7 @@ class VChart {
99
99
  width: width,
100
100
  height: height
101
101
  });
102
- }), 100), this._option = (0, util_1.merge)(this._option, options), this._onError = this._option.onError;
102
+ }), 100), this._option = (0, vutils_1.merge)(this._option, options), this._onError = this._option.onError;
103
103
  const _e = this._option, {dom: dom, renderCanvas: renderCanvas, mode: mode, stage: stage, poptip: poptip} = _e, restOptions = __rest(_e, [ "dom", "renderCanvas", "mode", "stage", "poptip" ]);
104
104
  dom && (this._container = (0, util_1.isString)(dom) ? null === document || void 0 === document ? void 0 : document.getElementById(dom) : dom),
105
105
  renderCanvas && (this._canvas = renderCanvas), stage && (this._stage = stage), "node" === mode || this._container || this._canvas || this._stage ? (this._viewBox = this._option.viewBox,
@@ -212,10 +212,12 @@ class VChart {
212
212
  this) : this;
213
213
  }
214
214
  _reCompile(updateResult) {
215
- var _a, _b;
215
+ var _a, _b, _c;
216
216
  updateResult.reMake ? (this._releaseData(), this._initDataSet(), this._chart.release(),
217
- this._chart = null, null === (_a = this._compiler) || void 0 === _a || _a.releaseGrammar()) : (this.getComponents().forEach((c => c.clear())),
218
- null === (_b = this._compiler) || void 0 === _b || _b.compile({
217
+ this._chart = null, null === (_a = this._compiler) || void 0 === _a || _a.releaseGrammar()) : updateResult.reCompile && (null === (_b = this._compiler) || void 0 === _b || _b.clear({
218
+ chart: this._chart,
219
+ vChart: this
220
+ }), null === (_c = this._compiler) || void 0 === _c || _c.compile({
219
221
  chart: this._chart,
220
222
  vChart: this
221
223
  }, {}));
@@ -350,7 +352,7 @@ class VChart {
350
352
  updateSpec(spec, forceMerge = !1, morphConfig) {
351
353
  return __awaiter(this, void 0, void 0, (function*() {
352
354
  return spec ? ((0, util_1.isString)(spec) && (spec = JSON.parse(spec)), forceMerge && (spec = (0,
353
- util_1.merge)({}, this._spec, spec)), yield this.updateCustomConfigAndRerender((() => {
355
+ util_1.mergeSpec)({}, this._spec, spec)), yield this.updateCustomConfigAndRerender((() => {
354
356
  var _a, _b;
355
357
  return spec = (0, util_1.specTransform)(spec), this._spec = spec, this._updateCurrentTheme(),
356
358
  null === (_b = null === (_a = this._compiler) || void 0 === _a ? void 0 : _a.getVGrammarView()) || void 0 === _b || _b.updateLayoutTag(),
@@ -360,10 +362,10 @@ class VChart {
360
362
  }
361
363
  updateSpecSync(spec, forceMerge = !1, morphConfig) {
362
364
  return spec ? ((0, util_1.isString)(spec) && (spec = JSON.parse(spec)), forceMerge && (spec = (0,
363
- util_1.merge)({}, this._spec, spec)), this.updateCustomConfigAndRerenderSync((() => {
364
- var _a, _b;
365
- return spec = (0, util_1.specTransform)(spec), this._spec = spec, this._updateCurrentTheme(),
366
- null === (_b = null === (_a = this._compiler) || void 0 === _a ? void 0 : _a.getVGrammarView()) || void 0 === _b || _b.updateLayoutTag(),
365
+ util_1.mergeSpec)({}, this._spec, spec)), this.updateCustomConfigAndRerenderSync((() => {
366
+ var _a, _b, _c;
367
+ return (spec = (0, util_1.specTransform)(spec)).data = null !== (_a = spec.data) && void 0 !== _a ? _a : [],
368
+ this._spec = spec, this._updateCurrentTheme(), null === (_c = null === (_b = this._compiler) || void 0 === _b ? void 0 : _b.getVGrammarView()) || void 0 === _c || _c.updateLayoutTag(),
367
369
  this._chart.updateSpec(spec, morphConfig);
368
370
  }), morphConfig), this) : this;
369
371
  }
@@ -402,17 +404,18 @@ class VChart {
402
404
  this._chart && this._chart.setHovered(datum, filter, region);
403
405
  }
404
406
  _updateCurrentTheme() {
405
- var _a, _b, _c, _d, _e;
406
- if ((0, util_1.isString)(null === (_a = this._spec) || void 0 === _a ? void 0 : _a.theme)) {
407
- const theme = (0, util_1.mergeTheme)({}, theme_manager_1.ThemeManager.getTheme(this._spec.theme));
407
+ var _a, _b, _c, _d;
408
+ const userTheme = null !== (_b = null === (_a = this._spec) || void 0 === _a ? void 0 : _a.theme) && void 0 !== _b ? _b : this._option.theme;
409
+ if ((0, util_1.isString)(userTheme)) {
410
+ const theme = (0, util_1.mergeTheme)({}, theme_manager_1.ThemeManager.getTheme(userTheme));
408
411
  this._currentTheme = (0, util_1.preprocessSpecOrTheme)(theme, theme.colorScheme),
409
- this._currentThemeName = this._spec.theme;
412
+ this._currentThemeName = userTheme;
410
413
  } else {
411
- const theme = (0, util_1.mergeTheme)({}, theme_manager_1.ThemeManager.getTheme(this._currentThemeName), null !== (_c = null === (_b = this._spec) || void 0 === _b ? void 0 : _b.theme) && void 0 !== _c ? _c : {});
414
+ const theme = (0, util_1.mergeTheme)({}, theme_manager_1.ThemeManager.getTheme(this._currentThemeName), null != userTheme ? userTheme : {});
412
415
  this._currentTheme = (0, util_1.preprocessSpecOrTheme)(theme, theme.colorScheme);
413
416
  }
414
- (0, vrender_components_1.setPoptipTheme)((0, util_1.merge)({}, null === (_d = this._currentTheme.component) || void 0 === _d ? void 0 : _d.poptip)),
415
- null === (_e = this._compiler) || void 0 === _e || _e.setBackground(this._getBackground());
417
+ (0, vrender_components_1.setPoptipTheme)((0, util_1.preprocessSpecOrTheme)((0, util_1.mergeSpec)({}, null === (_c = this._currentTheme.component) || void 0 === _c ? void 0 : _c.poptip))),
418
+ null === (_d = this._compiler) || void 0 === _d || _d.setBackground(this._getBackground());
416
419
  }
417
420
  _getBackground() {
418
421
  return ("string" == typeof this._spec.background ? this._spec.background : null) || this._currentTheme.background || this._option.background;
@@ -608,7 +611,7 @@ class VChart {
608
611
  null;
609
612
  const pointValue = null == axis ? void 0 : axis.valueToPosition(value);
610
613
  if (isRelativeToCanvas) {
611
- const axisLayoutStartPoint = axis.getLayoutStartPoint(), axisOrient = axis.orient;
614
+ const axisLayoutStartPoint = axis.getLayoutStartPoint(), axisOrient = axis.getOrient();
612
615
  return pointValue + ("bottom" === axisOrient || "top" === axisOrient ? axisLayoutStartPoint.x : axisLayoutStartPoint.y);
613
616
  }
614
617
  return pointValue;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/core/vchart.ts"],"names":[],"mappings":"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","file":"vchart.js","sourcesContent":["import type { ISeries } from '../series/interface/series';\nimport { arrayParser } from '../data/parser/array';\nimport type { ILayoutConstructor, LayoutCallBack } from '../layout/interface';\nimport type { IDataValues, IMarkStateSpec, IInitOption } from '../typings/spec/common';\n// eslint-disable-next-line no-duplicate-imports\nimport { RenderModeEnum } from '../typings/spec/common';\nimport type { ISeriesConstructor } from '../series/interface';\nimport type { DimensionIndexOption, IChart, IChartConstructor } from '../chart/interface';\nimport type { IComponentConstructor } from '../component/interface';\n// eslint-disable-next-line no-duplicate-imports\nimport { ComponentTypeEnum } from '../component/interface';\nimport type { EventCallback, EventParams, EventQuery, EventType, IEvent, IEventDispatcher } from '../event/interface';\nimport type { IParserOptions } from '@visactor/vdataset/es/parser';\nimport type { IFields, Transform } from '@visactor/vdataset';\n// eslint-disable-next-line no-duplicate-imports\nimport { DataSet, dataViewParser, DataView } from '@visactor/vdataset';\nimport type { Stage } from '@visactor/vrender';\nimport {\n isString,\n isValid,\n isNil,\n array,\n merge,\n createID,\n debounce,\n isTrueBrowser,\n warn,\n specTransform,\n convertPoint,\n preprocessSpecOrTheme,\n mergeTheme\n} from '../util';\nimport { Factory } from './factory';\nimport { Event } from '../event/event';\nimport { EventDispatcher } from '../event/event-dispatcher';\nimport type { GeoSourceType } from '../typings/geo';\nimport type { GeoSourceOption } from '../series/map/geo-source';\n// eslint-disable-next-line no-duplicate-imports\nimport { registerMapSource, getMapSource, unregisterMapSource } from '../series/map/geo-source';\nimport type { IMark, MarkConstructor } from '../mark/interface';\nimport { registerDataSetInstanceParser, registerDataSetInstanceTransform } from '../data/register';\nimport { dataToDataView } from '../data/initialize';\nimport { stackSplit } from '../data/transforms/stack-split';\nimport { copyDataView } from '../data/transforms/copy-data-view';\nimport type { ITooltipHandler } from '../typings/tooltip';\nimport type { Tooltip } from '../component/tooltip';\nimport type {\n Datum,\n IData,\n IPoint,\n IRegionQuerier,\n IShowTooltipOption,\n ISpec,\n Maybe,\n MaybeArray,\n StringOrNumber\n} from '../typings';\nimport { AnimationStateEnum } from '../animation/interface';\nimport type { IBoundsLike, ILogger } from '@visactor/vutils';\nimport { ThemeManager } from '../theme/theme-manager';\nimport type { ITheme } from '../theme';\nimport type { IUpdateSpecResult } from '../model/interface';\nimport { Compiler } from '../compile/compiler';\nimport type { IMorphConfig } from '../animation/spec';\nimport type { ILegend } from '../component/legend/interface';\nimport { getCanvasDataURL, URLToImage } from '../util/image';\nimport { ChartEvent, DEFAULT_CHART_HEIGHT, DEFAULT_CHART_WIDTH, VGRAMMAR_HOOK_EVENT } from '../constant';\n// eslint-disable-next-line no-duplicate-imports\nimport { getContainerSize, isArray, isEmpty, Logger } from '@visactor/vutils';\nimport type { DataLinkAxis, DataLinkSeries, IGlobalConfig, IVChart } from './interface';\nimport { InstanceManager } from './instance-manager';\nimport type { IAxis } from '../component/axis';\nimport { setPoptipTheme } from '@visactor/vrender-components';\nimport { calculateChartSize } from '../chart/util';\nexport class VChart implements IVChart {\n readonly id = createID();\n\n /**\n * 注册图表\n * @param charts 图表类\n */\n static useChart(charts: IChartConstructor[]) {\n charts.forEach(c => Factory.registerChart(c.type, c));\n }\n /**\n * 注册系列\n * @param series 系列类\n */\n static useSeries(series: ISeriesConstructor[]) {\n series.forEach(s => Factory.registerSeries(s.type, s));\n }\n /**\n * 注册组件\n * @param components 组件类\n */\n static useComponent(components: IComponentConstructor[]) {\n components.forEach(c => Factory.registerComponent(c.type, c));\n }\n /**\n * 注册 Mark\n * @param marks Mark 图元类\n */\n static useMark(marks: MarkConstructor[]) {\n marks.forEach(m => Factory.registerMark(m.constructorType ?? m.type, m));\n }\n /**\n * 注册布局\n * @param layouts 布局类\n */\n static useLayout(layouts: ILayoutConstructor[]) {\n layouts.forEach(l => Factory.registerLayout(l.type, l));\n }\n /**\n * 注册 DataSet 数据方法\n * @param name 数据 transform 方法名称\n * @param transform 具体的 Transform 执行方法\n */\n static registerDataSetTransform(name: string, transform: Transform) {\n Factory.registerTransform(name, transform);\n }\n\n /**\n * 注册地图数据\n * @param key 地图名称\n * @param source 地图数据\n * @param option 地图数据配置\n */\n static registerMap(key: string, source: GeoSourceType, option?: GeoSourceOption) {\n registerMapSource(key, source, option);\n }\n\n /**\n * 注销地图数据\n * @param key 地图名称\n */\n static unregisterMap(key: string) {\n unregisterMapSource(key);\n }\n\n /**\n * 根据地图名称获取地图数据\n * @param key 地图名称\n * @returns 地图数据\n */\n static getMap(key: string): GeoSourceType {\n return getMapSource(key);\n }\n\n /**\n * 全局关闭 tooltip\n * @param excludeId 可选,指定不需要关闭 tooltip 的实例 id\n */\n static hideTooltip(excludeId: MaybeArray<number> = []): void {\n InstanceManager.forEach(instance => instance?.hideTooltip?.(), excludeId);\n }\n\n /** 获取 Logger */\n static getLogger(): ILogger {\n return Logger.getInstance();\n }\n\n /** 图表实例管理器 */\n static readonly InstanceManager = InstanceManager;\n /** 主题管理器 */\n static readonly ThemeManager = ThemeManager;\n\n /** 全局配置 */\n static globalConfig: IGlobalConfig = {\n uniqueTooltip: true\n };\n\n protected _spec: any;\n\n private _viewBox: IBoundsLike;\n private _chart!: Maybe<IChart>;\n private _compiler: Compiler;\n private _event: Maybe<IEvent>;\n private _eventDispatcher: Maybe<IEventDispatcher>;\n private _dataSet!: Maybe<DataSet>;\n getDataSet() {\n return this._dataSet;\n }\n\n private _container?: HTMLElement;\n private _canvas?: HTMLCanvasElement | OffscreenCanvas | string;\n private _stage?: Stage;\n\n private _autoSize: boolean = true;\n private _option: IInitOption = {\n mode: RenderModeEnum['desktop-browser'],\n animation: true,\n onError: (msg: string) => {\n throw new Error(msg);\n }\n };\n\n private _curSize: { width: number; height: number };\n private _observer: ResizeObserver = null;\n\n private _currentThemeName: string;\n private _currentTheme: ITheme;\n\n private _onError?: (...args: any[]) => void;\n\n private _context: any = {}; // 存放用户在model初始化前通过实例方法传入的配置等\n\n constructor(spec: ISpec, options: IInitOption) {\n this._option = merge(this._option, options);\n this._onError = this._option.onError;\n\n const { dom, renderCanvas, mode, stage, poptip, ...restOptions } = this._option;\n\n if (dom) {\n this._container = isString(dom) ? document?.getElementById(dom) : dom;\n }\n if (renderCanvas) {\n this._canvas = renderCanvas;\n }\n if (stage) {\n this._stage = stage as unknown as Stage; // FIXME: 等待 vrender 解决类型和接口不匹配的问题 @zhouxinyu\n }\n\n if (mode !== 'node' && !this._container && !this._canvas && !this._stage) {\n this._option.onError('please specify container or renderCanvas!');\n return;\n }\n\n this._viewBox = this._option.viewBox;\n this._currentThemeName = ThemeManager.getCurrentThemeName();\n this._setSpec(spec);\n this._updateCurrentTheme();\n this._curSize = calculateChartSize(this._spec, {\n container: this._container,\n canvas: this._canvas,\n mode: this._option.mode || RenderModeEnum['desktop-browser'],\n modeParams: this._option.modeParams\n });\n this._compiler = new Compiler(\n {\n dom: this._container ?? 'none',\n canvas: renderCanvas\n },\n {\n mode: this._option.mode,\n stage,\n pluginList: poptip !== false ? ['poptipForText'] : [],\n ...restOptions,\n background: this._getBackground(),\n onError: this._onError\n }\n );\n this._compiler.setSize(this._curSize.width, this._curSize.height);\n this._eventDispatcher = new EventDispatcher(this, this._compiler);\n this._event = new Event(this._eventDispatcher, mode);\n this._compiler.initView();\n // 设置全局字体\n this.getStage()?.setTheme({\n text: { fontFamily: this._currentTheme.fontFamily }\n });\n this._initDataSet(this._option.dataSet);\n this._autoSize = isTrueBrowser(mode) ? spec.autoFit ?? this._option.autoFit ?? true : false;\n this._bindResizeEvent();\n this._bindVGrammarViewEvent();\n this._event.emit(ChartEvent.initialized, {});\n\n InstanceManager.registerInstance(this);\n }\n\n private _setSpec(spec: any) {\n if (!spec) {\n return;\n }\n\n this._spec = specTransform(isString(spec) ? JSON.parse(spec) : spec);\n }\n\n private _initData() {\n if (isNil(this._dataSet)) {\n warn('dataSet is not initialized');\n return;\n }\n const specData: (DataView | IDataValues)[] = array(this._spec.data);\n\n const dataViewArr: DataView[] = [];\n for (let i = 0; i < specData.length; i++) {\n const curSpecData = specData[i];\n dataViewArr.push(\n dataToDataView(curSpecData, <DataSet>this._dataSet, dataViewArr, {\n onError: this._option.onError\n })\n );\n }\n\n this._spec.data = dataViewArr;\n }\n\n private _initChart(spec: any) {\n if (!this._compiler) {\n this._option.onError('compiler is not initialized');\n return;\n }\n this._initData();\n // 放到这里而不是放到chart内的考虑\n // 用户spec更新,也许会有core上图表实例的内容存在\n // 如果要支持spec的类似Proxy监听,更新逻辑应当从这一层开始。如果在chart上做,就需要在再向上发送spec更新消息,不是很合理。\n // todo: 问题1 存不存在 chart 需要在这个阶段处理的特殊字段?目前没有,但是理论上可以有?\n const chart = Factory.createChart(spec.type, spec, {\n globalInstance: this,\n eventDispatcher: this._eventDispatcher!,\n dataSet: this._dataSet!,\n container: this._container,\n canvas: this._canvas,\n map: new Map(),\n mode: this._option.mode || RenderModeEnum['desktop-browser'],\n modeParams: this._option.modeParams,\n getCompiler: () => this._compiler,\n performanceHook: this._option.performanceHook,\n viewBox: this._viewBox,\n animation: this._option.animation,\n getTheme: () => this._currentTheme,\n layout: this._option.layout,\n onError: this._onError\n });\n if (!chart) {\n this._option.onError('init chart fail');\n return;\n }\n this._chart = chart;\n this._chart.setCanvasRect(this._curSize.width, this._curSize.height);\n this._chart.created();\n this._chart.init({});\n }\n\n private _releaseData() {\n if (this._dataSet) {\n this._dataSet.dataViewMap = {};\n this._dataSet = null;\n }\n }\n\n private _bindVGrammarViewEvent() {\n if (!this._compiler || this._compiler.isReleased) {\n return;\n }\n this._compiler.getVGrammarView().addEventListener(VGRAMMAR_HOOK_EVENT.ALL_ANIMATION_END, () => {\n this._event.emit(ChartEvent.animationFinished, {});\n });\n this._compiler.getVGrammarView().addEventListener(VGRAMMAR_HOOK_EVENT.AFTER_VRENDER_NEXT_RENDER, () => {\n this._event.emit(ChartEvent.renderFinished, {});\n });\n }\n\n private _bindResizeEvent() {\n if (this._autoSize) {\n if (this._container) {\n const ResizeObserverWindow: any = window.ResizeObserver;\n this._observer = new ResizeObserverWindow(this._onResize);\n this._observer?.observe(this._container);\n }\n window.addEventListener('resize', this._onResize);\n }\n }\n\n private _unBindResizeEvent() {\n if (this._autoSize) {\n window.removeEventListener('resize', this._onResize);\n if (this._observer) {\n this._observer.disconnect();\n this._observer = null;\n }\n }\n }\n\n private _onResize = debounce((...args: any[]) => {\n const { width: containerWidth, height: containerHeight } = getContainerSize(\n this._container!,\n DEFAULT_CHART_WIDTH,\n DEFAULT_CHART_HEIGHT\n );\n const width = this._spec.width ?? containerWidth;\n const height = this._spec.height ?? containerHeight;\n if (this._curSize.width !== width || this._curSize.height !== height) {\n this.resize(width, height);\n this._curSize = { width, height };\n }\n }, 100);\n\n private _initDataSet(dataSet?: DataSet) {\n if (dataSet instanceof DataSet) {\n this._dataSet = dataSet;\n } else {\n this._dataSet = new DataSet();\n }\n registerDataSetInstanceParser(this._dataSet, 'dataview', dataViewParser);\n registerDataSetInstanceParser(this._dataSet, 'array', arrayParser);\n registerDataSetInstanceTransform(this._dataSet, 'stackSplit', stackSplit);\n registerDataSetInstanceTransform(this._dataSet, 'copyDataView', copyDataView);\n // 注册 dataset transform\n for (const key in Factory.transforms) {\n registerDataSetInstanceTransform(this._dataSet, key, Factory.transforms[key]);\n }\n // 注册 dataview parser\n for (const key in Factory.dataParser) {\n registerDataSetInstanceParser(this._dataSet, key, Factory.dataParser[key]);\n }\n }\n\n /** **异步方法** 执行自定义的回调修改图表配置,并重新渲染 */\n async updateCustomConfigAndRerender(modifyConfig: () => IUpdateSpecResult | undefined, morphConfig?: IMorphConfig) {\n const result = modifyConfig(); // 执行回调\n if (!isValid(result)) {\n return this as unknown as IVChart;\n }\n\n this._reCompile(result);\n await this.renderAsync(morphConfig);\n return this as unknown as IVChart;\n }\n\n /** **同步方法** 执行自定义的回调修改图表配置,并重新渲染 */\n updateCustomConfigAndRerenderSync(modifyConfig: () => IUpdateSpecResult | undefined, morphConfig?: IMorphConfig) {\n const result = modifyConfig(); // 执行回调\n if (!isValid(result)) {\n return this as unknown as IVChart;\n }\n\n this._reCompile(result);\n this.renderSync(morphConfig);\n return this as unknown as IVChart;\n }\n\n protected _reCompile(updateResult: IUpdateSpecResult) {\n if (updateResult.reMake) {\n this._releaseData();\n this._initDataSet();\n // 释放图表等等\n this._chart.release();\n this._chart = null as unknown as IChart;\n this._compiler?.releaseGrammar();\n\n // chart 内部事件 模块自己必须删除\n // 外部事件不处理\n // 释放 compiler compiler需要释放吗? 还是释放当前的内容就可以呢\n // VGrammar view 对象不需要释放,提供了reuse和morph能力之后,srView有上下文缓存\n } else {\n // FIXME: 暂时这么处理,还需要整体设计下组件的生命周期\n this.getComponents().forEach(c => c.clear());\n // TODO: 释放事件?\n // 重新绑定事件\n // TODO: 释放XX?\n // 释放 compiler compiler需要释放吗? 还是释放当前的内容就可以呢\n // 先compile\n this._compiler?.compile({ chart: this._chart, vChart: this }, {});\n }\n }\n\n /**\n * **同步方法** 渲染图表。\n * @param morphConfig 图表 morph 动画配置,可选\n * @returns VChart 实例\n */\n renderSync(morphConfig?: IMorphConfig) {\n if (!this._chart) {\n this._option.performanceHook?.beforeInitializeChart?.();\n this._initChart(this._spec);\n this._option.performanceHook?.afterInitializeChart?.();\n if (!this._chart || !this._compiler) {\n return this as unknown as IVChart;\n }\n // 先compile\n this._option.performanceHook?.beforeCompileToVGrammar?.();\n this._compiler.compile({ chart: this._chart, vChart: this }, { performanceHook: this._option.performanceHook });\n this._option.performanceHook?.afterCompileToVGrammar?.();\n }\n // 最后填充数据绘图\n this._compiler?.renderSync(morphConfig);\n\n if (this._option.animation) {\n this._chart?.getAllRegions().forEach(region => {\n region.animate?.updateAnimateState(AnimationStateEnum.update, true);\n });\n this._chart?.getAllComponents().forEach(component => {\n component.animate?.updateAnimateState(AnimationStateEnum.update, true);\n });\n }\n\n this._event.emit(ChartEvent.rendered, {});\n return this as unknown as IVChart;\n }\n\n /**\n * **异步方法** 渲染图表。\n * @param morphConfig 图表 morph 动画配置,可选\n * @returns VChart 实例\n */\n async renderAsync(morphConfig?: IMorphConfig) {\n if (!this._chart) {\n this._option.performanceHook?.beforeInitializeChart?.();\n this._initChart(this._spec);\n this._option.performanceHook?.afterInitializeChart?.();\n if (!this._chart || !this._compiler) {\n return this as unknown as IVChart;\n }\n // 先compile\n this._option.performanceHook?.beforeCompileToVGrammar?.();\n this._compiler.compile({ chart: this._chart, vChart: this }, { performanceHook: this._option.performanceHook });\n this._option.performanceHook?.afterCompileToVGrammar?.();\n }\n // 最后填充数据绘图\n await this._compiler?.renderAsync(morphConfig);\n\n if (this._option.animation) {\n this._chart?.getAllRegions().forEach(region => {\n region.animate?.updateAnimateState(AnimationStateEnum.update, true);\n });\n this._chart?.getAllComponents().forEach(component => {\n component.animate?.updateAnimateState(AnimationStateEnum.update, true);\n });\n }\n\n this._event.emit(ChartEvent.rendered, {});\n return this as unknown as IVChart;\n }\n\n /**\n * 销毁图表\n */\n release() {\n if ((this._onResize as any)?.cancel) {\n (this._onResize as any).cancel();\n }\n this._chart?.release();\n this._compiler?.release();\n this._eventDispatcher?.release();\n this._unBindResizeEvent();\n // resetID(); // 为什么要重置ID呢?\n\n this._releaseData();\n\n this._chart = null;\n this._compiler = null;\n this._spec = null;\n // this._option = null;\n this._event = null;\n this._eventDispatcher = null;\n\n InstanceManager.unregisterInstance(this);\n }\n\n /**\n * **异步方法** 更新数据。\n * @param id 数据 id\n * @param data 数据值\n * @param options 数据参数\n * @returns VChart 实例\n */\n async updateData(id: StringOrNumber, data: DataView | Datum[] | string, options?: IParserOptions): Promise<IVChart> {\n if (isNil(this._dataSet)) {\n return this as unknown as IVChart;\n }\n if (this._chart) {\n this._chart.updateData(id, data, true, options);\n\n // after layout\n await this._compiler.renderAsync();\n return this as unknown as IVChart;\n }\n this._spec.data = array(this._spec.data);\n const preDV = this._spec.data.find((dv: any) => dv.name === id || dv.id === id);\n if (preDV) {\n if (preDV.id === id) {\n preDV.values = data;\n } else if (preDV.name === id) {\n preDV.parse(data, options);\n }\n } else {\n if (isArray(data)) {\n this._spec.data.push({\n id,\n values: data\n });\n } else {\n this._spec.data.push(data);\n }\n }\n return this as unknown as IVChart;\n }\n\n /**\n * **异步方法** 批量更新数据。\n * @param list 待更新的数据列表\n * @returns VChart 实例\n */\n async updateDataInBatches(\n list: { id: string; data: DataView | Datum[]; options?: IParserOptions }[]\n ): Promise<IVChart> {\n if (this._chart) {\n list.forEach(({ id, data, options }) => {\n this._chart.updateData(id, data, false, options);\n });\n this._chart.updateGlobalScaleDomain();\n await this._compiler.renderAsync();\n return this as unknown as IVChart;\n }\n list.forEach(({ id, data, options }) => {\n const preDV = (this._spec.data as DataView[]).find(dv => dv.name === id);\n if (preDV) {\n preDV.parse(data, options);\n } else {\n const dataView = new DataView(this._dataSet, { name: id });\n dataView.parse(data, options);\n this._spec.data.push(dataView);\n }\n });\n return this as unknown as IVChart;\n }\n\n /**\n * **同步方法** 更新数据\n * @param id 数据 id\n * @param data 数据值\n * @param options 数据参数\n * @returns VChart 实例\n */\n updateDataSync(id: StringOrNumber, data: DataView | Datum[], options?: IParserOptions) {\n if (isNil(this._dataSet)) {\n return this as unknown as IVChart;\n }\n if (this._chart) {\n this._chart.updateData(id, data, true, options);\n // after layout\n this._compiler.renderSync();\n return this as unknown as IVChart;\n }\n const preDV = (this._spec.data as DataView[]).find(dv => dv.name === id);\n if (preDV) {\n preDV.parse(data, options);\n } else {\n const dataView = new DataView(this._dataSet, { name: id as string });\n dataView.parse(data, options);\n this._spec.data.push(dataView);\n }\n return this as unknown as IVChart;\n }\n\n /**\n * **同步方法** 更新数据\n * @param data 图表配置结构中的数据对象\n * @returns VChart 实例\n * @since 1.3.0\n */\n updateFullDataSync(data: IDataValues | IDataValues[], reRender: boolean = true) {\n if (this._chart) {\n this._chart.updateFullData(data);\n if (reRender) {\n this._compiler.renderSync();\n }\n return this as unknown as IVChart;\n }\n const list: IDataValues[] = array(data);\n list.forEach(d => {\n // only support update this attrs\n const { id, values, parser, fields } = d;\n const preDV = (this._spec.data as DataView[]).find(dv => dv.name === id);\n if (preDV) {\n preDV.setFields(fields as IFields);\n preDV.parse(values, parser as IParserOptions);\n } else {\n // new data\n const dataView = dataToDataView(d, <DataSet>this._dataSet, this._spec.data, {\n onError: this._option.onError\n });\n this._spec.data.push(dataView);\n }\n });\n return this as unknown as IVChart;\n }\n\n /**\n * **异步方法** 更新数据\n * @param data 图表配置结构中的数据对象\n * @returns VChart 实例\n * @since 1.3.0\n */\n async updateFullData(data: IDataValues | IDataValues[], reRender: boolean = true) {\n if (this._chart) {\n this._chart.updateFullData(data);\n if (reRender) {\n await this._compiler.renderAsync();\n }\n return this as unknown as IVChart;\n }\n const list: IDataValues[] = array(data);\n list.forEach(d => {\n // only support update this attrs\n const { id, values, parser, fields } = d;\n const preDV = (this._spec.data as DataView[]).find(dv => dv.name === id);\n if (preDV) {\n preDV.setFields(fields as IFields);\n preDV.parse(values, parser as IParserOptions);\n } else {\n // new data\n const dataView = dataToDataView(d, <DataSet>this._dataSet, this._spec.data, {\n onError: this._option.onError\n });\n this._spec.data.push(dataView);\n }\n });\n return this as unknown as IVChart;\n }\n\n /**\n * **异步方法** spec 更新\n * @param spec\n * @param forceMerge\n * @returns\n */\n async updateSpec(spec: ISpec, forceMerge: boolean = false, morphConfig?: IMorphConfig) {\n if (!spec) {\n return this as unknown as IVChart;\n }\n if (isString(spec)) {\n spec = JSON.parse(spec);\n }\n\n // 没有配置变化 因为数据对象的原因,这里会报错\n // if (specString == JSON.stringify(this._spec)) {\n // return;\n // }\n\n if (forceMerge) {\n spec = merge({}, this._spec, spec);\n }\n\n await this.updateCustomConfigAndRerender(() => {\n spec = specTransform(spec) as any;\n this._spec = spec;\n this._updateCurrentTheme();\n this._compiler?.getVGrammarView()?.updateLayoutTag();\n return this._chart.updateSpec(spec, morphConfig);\n }, morphConfig);\n return this as unknown as IVChart;\n }\n\n /**\n * **同步方法** spec 更新\n * @param spec\n * @param forceMerge\n * @returns\n */\n updateSpecSync(spec: ISpec, forceMerge: boolean = false, morphConfig?: IMorphConfig) {\n if (!spec) {\n return this as unknown as IVChart;\n }\n if (isString(spec)) {\n spec = JSON.parse(spec);\n }\n\n // 没有配置变化 因为数据对象的原因,这里会报错\n // if (specString == JSON.stringify(this._spec)) {\n // return;\n // }\n\n if (forceMerge) {\n spec = merge({}, this._spec, spec);\n }\n\n this.updateCustomConfigAndRerenderSync(() => {\n spec = specTransform(spec) as any;\n this._spec = spec;\n this._updateCurrentTheme();\n this._compiler?.getVGrammarView()?.updateLayoutTag();\n return this._chart.updateSpec(spec, morphConfig);\n }, morphConfig);\n return this as unknown as IVChart;\n }\n\n /**\n * **异步方法**,图表尺寸更新方法\n * @param width 宽度\n * @param height 高度\n * @returns VChart 当前实例\n */\n async resize(width: number, height: number) {\n if (!this._chart || !this._compiler) {\n return this as unknown as IVChart;\n }\n // 如果宽高未变化,不需要重新执行 resize,防止当图表初始化时会执行一次多余的 resize\n const chartCanvasRect = this._chart.getCanvasRect();\n if (chartCanvasRect && chartCanvasRect.width === width && chartCanvasRect.height === height) {\n return this as unknown as IVChart;\n }\n this._option.performanceHook?.beforeResizeWithUpdate?.();\n this._chart.onResize(width, height);\n this._option.performanceHook?.afterResizeWithUpdate?.();\n await this._compiler.resize?.(width, height);\n\n return this as unknown as IVChart;\n }\n\n /**\n * 更新绘制区域\n * @param viewBox 绘制区域\n * @param reRender 是否重新渲染,默认为 true\n * @param reLayout 是否重新布局,默认为 true\n * @returns\n */\n updateViewBox(viewBox: IBoundsLike, reRender: boolean = true, reLayout: boolean = true) {\n if (!this._chart || !this._compiler) {\n return this as unknown as IVChart;\n }\n this._viewBox = viewBox;\n // 更新 layout 参数\n this._chart.updateViewBox(viewBox, reLayout);\n if (reLayout) {\n // 重新布局\n this._compiler.renderSync();\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n this._chart?.onEvaluateEnd();\n }\n // 获取 compiler\n this._compiler.updateViewBox(viewBox, reRender);\n return this as unknown as IVChart;\n }\n\n // 事件相关方法\n on(eType: EventType, handler: EventCallback<EventParams>): void;\n on(eType: EventType, query: EventQuery, handler: EventCallback<EventParams>): void;\n on(eType: EventType, query: EventQuery | EventCallback<EventParams>, handler?: EventCallback<EventParams>): void {\n this._event?.on(eType as any, query as any, handler as any);\n }\n off(eType: string, handler?: EventCallback<EventParams>): void {\n this._event?.off(eType, handler);\n }\n\n // 状态相关方法\n /**\n * 更新或设置图元状态\n * @param state 状态筛选器\n * @param filter 筛选器\n */\n updateState(\n state: Record<string, Omit<IMarkStateSpec<unknown>, 'style'>>,\n filter?: (series: ISeries, mark: IMark, stateKey: string) => boolean //series + mark 筛选\n ): void {\n if (!this._chart) {\n return;\n }\n this._chart.updateState(state, filter);\n }\n\n /**\n * 更新图元选中状态\n * @param datum hover 图元数据\n * @param filter 筛选器 用来筛选系列与mark\n * @param region region 筛选器\n */\n setSelected(\n datum: MaybeArray<any> | null,\n filter?: (series: ISeries, mark: IMark) => boolean,\n region?: IRegionQuerier\n ): void {\n if (!this._chart) {\n return;\n }\n this._chart.setSelected(datum, filter, region);\n }\n\n /**\n * 更新图元 hover 状态\n * @param datum hover 图元数据\n * @param filter 筛选器 用来筛选系列与mark\n * @param region region 筛选器\n */\n setHovered(\n datum: MaybeArray<Datum> | null,\n filter?: (series: ISeries, mark: IMark) => boolean,\n region?: IRegionQuerier\n ): void {\n if (!this._chart) {\n return;\n }\n this._chart.setHovered(datum, filter, region);\n }\n\n // 主题相关方法\n /** 当 spec 或者 currentThemeName 有变化时需要调用此方法对 currentTheme 进行更新 */\n private _updateCurrentTheme() {\n if (isString(this._spec?.theme)) {\n const theme = mergeTheme({}, ThemeManager.getTheme(this._spec.theme));\n this._currentTheme = preprocessSpecOrTheme(theme, theme.colorScheme);\n this._currentThemeName = this._spec.theme;\n } else {\n const theme = mergeTheme({}, ThemeManager.getTheme(this._currentThemeName), this._spec?.theme ?? {});\n this._currentTheme = preprocessSpecOrTheme(theme, theme.colorScheme);\n }\n // 设置 poptip 的主题\n setPoptipTheme(merge({}, this._currentTheme.component?.poptip));\n // 设置背景色\n this._compiler?.setBackground(this._getBackground());\n }\n\n private _getBackground() {\n const specBackground = typeof this._spec.background === 'string' ? this._spec.background : null;\n // spec > spec.theme > initOptions.theme\n return specBackground || (this._currentTheme.background as string) || this._option.background;\n }\n\n /**\n * 获取当前主题,会返回完整的主题配置\n * */\n getCurrentTheme() {\n return this._currentTheme;\n }\n\n /**\n * 获取当前主题名称(只能获取用户通过`setCurrentTheme`方法设置过的主题,默认值为`ThemeManager`统一设置的主题)\n */\n getCurrentThemeName() {\n return this._currentThemeName;\n }\n\n /**\n * **异步方法**, 设置当前主题。\n * **注意,如果在 spec 上配置了 theme,则 spec 上的 theme 优先级更高。**\n * @param name 主题名称\n * @returns\n */\n async setCurrentTheme(name: string) {\n if (!ThemeManager.themeExist(name)) {\n return this as unknown as IVChart;\n }\n\n await this.updateCustomConfigAndRerender(() => {\n this._currentThemeName = name;\n this._updateCurrentTheme();\n this._chart?.setCurrentTheme(this._currentTheme, true);\n return { change: true, reMake: false };\n });\n\n return this as unknown as IVChart;\n }\n\n /**\n * **同步方法** 设置当前主题。\n * **注意,如果在 spec 上配置了 theme,则 spec 上的 theme 优先级更高。**\n * @param name 主题名称\n * @returns\n */\n setCurrentThemeSync(name: string) {\n if (!ThemeManager.themeExist(name)) {\n return this as unknown as IVChart;\n }\n\n this.updateCustomConfigAndRerenderSync(() => {\n this._currentThemeName = name;\n this._updateCurrentTheme();\n this._chart?.setCurrentTheme(this._currentTheme, true);\n return { change: true, reMake: false };\n });\n\n return this as unknown as IVChart;\n }\n\n // Tooltip 相关方法\n private _getTooltipComponent(): Tooltip | undefined {\n const tooltip = this._chart?.getAllComponents().find(c => c.type === ComponentTypeEnum.tooltip) as Tooltip;\n return tooltip;\n }\n\n /**\n * 自定义 TooltipHandler\n * @param tooltipHandler\n */\n setTooltipHandler(tooltipHandler: ITooltipHandler) {\n this._context.tooltipHandler = tooltipHandler;\n const tooltip = this._getTooltipComponent();\n if (tooltip) {\n tooltip.tooltipHandler?.release?.();\n tooltip.tooltipHandler = tooltipHandler;\n }\n }\n\n /**\n * 获取用户定义的 TooltipHandler\n * @returns ITooltipHandler\n */\n getTooltipHandlerByUser(): ITooltipHandler | undefined {\n return this._context?.tooltipHandler;\n }\n\n /**\n * 获取 TooltipHandler\n * @returns\n */\n getTooltipHandler(): ITooltipHandler | undefined {\n const tooltip = this._getTooltipComponent();\n if (tooltip) {\n return tooltip.tooltipHandler;\n }\n return this._context.tooltipHandler;\n }\n\n /**\n * 手动调用展示 tooltip\n * @param datum 原始数据\n * @param options\n * @returns\n */\n showTooltip(datum: Datum, options: IShowTooltipOption): boolean {\n const tooltip = this._getTooltipComponent();\n return (isValid(datum) && tooltip?.showTooltip(datum, options) !== 'none') ?? false;\n }\n\n /**\n * 手动调用,关闭 tooltip\n * @returns\n */\n hideTooltip(): boolean {\n const tooltip = this._getTooltipComponent();\n return tooltip?.hideTooltip() ?? false;\n }\n\n // 图例相关 api\n /**\n * 根据图例组件 id 获取图例数据\n * @param id 组件 id\n * @returns\n */\n getLegendDataById(id: string) {\n const legendComponent = this._chart?.getComponentByUserId(id) as ILegend;\n if (legendComponent) {\n return legendComponent.getLegendData();\n }\n return [];\n }\n\n /**\n * 根据图例组件索引获取图例数据\n * @param index 图例索引,默认为 0\n * @returns\n */\n getLegendDataByIndex(index: number = 0) {\n const legends = this._chart\n ?.getAllComponents()\n .filter(c => c.type === ComponentTypeEnum.discreteLegend) as ILegend[];\n\n if (legends[index]) {\n return legends[index].getLegendData();\n }\n\n return [];\n }\n\n /**\n * 根据图例组件 id 获取当前图例的选中项\n * @param id 组件 id\n * @returns\n */\n getLegendSelectedDataById(id: string) {\n const legendComponent = this._chart?.getComponentByUserId(id) as ILegend;\n if (legendComponent) {\n return legendComponent.getSelectedData();\n }\n return [];\n }\n\n /**\n * 根据图例组件索引获取当前图例的选中项\n * @param index 图例索引,默认为 0\n * @returns\n */\n getLegendSelectedDataByIndex(index: number = 0) {\n const legends = this._chart\n ?.getAllComponents()\n .filter(c => c.type === ComponentTypeEnum.discreteLegend) as ILegend[];\n\n if (legends[index]) {\n return legends[index].getSelectedData();\n }\n\n return [];\n }\n\n /**\n * 根据图例组件 id 更新图例选中数据\n * @param id\n * @returns\n */\n setLegendSelectedDataById(id: string, selectedData: StringOrNumber[]) {\n const legendComponent = this._chart?.getComponentByUserId(id) as ILegend;\n if (legendComponent) {\n legendComponent.setSelectedData(selectedData);\n }\n }\n\n /**\n * 根据图例组件索引更新图例选中数据\n * @param index 图例索引,默认为 0\n * @returns\n */\n setLegendSelectedDataByIndex(index: number = 0, selectedData: StringOrNumber[]) {\n const legends = this._chart\n ?.getAllComponents()\n .filter(c => c.type === ComponentTypeEnum.discreteLegend) as ILegend[];\n\n if (legends[index]) {\n legends[index].setSelectedData(selectedData);\n }\n }\n\n // 保存图片相关的方法\n /**\n * **异步方法**返回一个包含图片展示的 data URI。\n * @returns data URI\n */\n async getDataURL() {\n const stage = this.getStage();\n if (this._chart && stage) {\n // 因为 vrender 是 autoRender 的,它不能确认第几帧才是完整的图表,所以这里调用一次 render 以保证获取到的是完整的画布\n stage.render();\n const canvas = this._chart.getCanvas();\n const url = await getCanvasDataURL(canvas, {\n onError: this._onError\n });\n return url;\n }\n this._option.onError(new ReferenceError(`render is not defined`));\n\n return null;\n }\n\n /**\n * **异步方法** 导出图表图片,只支持浏览器端。\n * @param name 保存的图片名称\n * @returns\n */\n async exportImg(name?: string) {\n if (!isTrueBrowser(this._option.mode)) {\n this._option.onError(new TypeError(`non-browser environment can not export img`));\n return;\n }\n\n const dataURL = await this.getDataURL();\n if (dataURL) {\n URLToImage(name, dataURL);\n } else {\n this._option.onError(new ReferenceError(`render is not defined`));\n }\n }\n\n /**\n * 目前仅支持 node 环境,用于 node 端的图片导出\n * @returns\n */\n getImageBuffer() {\n if (this._option.mode !== 'node') {\n this._option.onError(new TypeError('getImageBuffer() now only support node environment.'));\n return;\n }\n const stage = this.getStage();\n if (stage) {\n stage.render();\n const buffer = stage.window.getImageBuffer();\n return buffer;\n }\n this._option.onError(new ReferenceError(`render is not defined`));\n\n return null;\n }\n\n // 布局相关的方法\n /**\n * 设置自定义布局\n */\n setLayout(layout: LayoutCallBack) {\n this._option.layout = layout;\n this._chart?.setLayout(layout);\n }\n /**\n * 强制重新布局\n */\n reLayout() {\n this._chart?.setLayoutTag(true);\n }\n\n /**\n * 获取编译器实例\n * @returns\n */\n getCompiler() {\n return this._compiler;\n }\n\n /**\n * Get the chart instance\n * 获取 Chart 图表实例。\n * @returns Chart 实例\n */\n getChart() {\n return this._chart;\n }\n\n /**\n * Get the renderer instance.\n * 获取渲染引擎实例。\n * @returns the instance of VRender Stage\n */\n getStage(): Stage {\n return this._compiler.getStage();\n }\n\n /**\n * 获取 canvas dom\n * @returns HTMLCanvasElement | undefined\n */\n getCanvas(): HTMLCanvasElement | undefined {\n return this._compiler?.getCanvas();\n }\n\n /**\n * 获取图表的 dom 容器\n * @returns\n */\n getContainer(): Maybe<HTMLElement> {\n // 用户传入 dom container\n if (isValid(this._container)) {\n return this._container;\n }\n\n // 用户传入 canvas\n let canvasNode: Maybe<HTMLCanvasElement>;\n if (isString(this._canvas)) {\n canvasNode = document?.getElementById(this._canvas) as HTMLCanvasElement;\n } else {\n canvasNode = this._canvas as HTMLCanvasElement;\n }\n if (isValid(canvasNode)) {\n return canvasNode.parentElement;\n }\n\n // 用户传入 stage\n return this.getCanvas()?.parentElement;\n }\n\n /**\n * 获取图表所有的组件实例\n * @returns 组件实例\n */\n getComponents() {\n return this._chart.getAllComponents();\n }\n\n /**\n * setDimensionIndex could trigger mark state, tooltip, crosshair\n * @param value dimension value\n * @param opt option for set trigger\n */\n setDimensionIndex(value: StringOrNumber, opt: DimensionIndexOption = {}) {\n return this._chart?.setDimensionIndex(value, opt);\n }\n\n /** 停止正在进行的所有动画 */\n stopAnimation() {\n this._compiler?.getVGrammarView()?.animate?.stop();\n }\n\n /** 暂停正在进行的所有动画 */\n pauseAnimation() {\n this._compiler?.getVGrammarView()?.animate?.pause();\n }\n\n /** 恢复暂停时正在进行的所有动画 */\n resumeAnimation() {\n this._compiler?.getVGrammarView()?.animate?.resume();\n }\n\n // TODO: 后续需要考虑滚动场景\n /**\n * Convert the data corresponding to the graph into coordinates\n * 将图形对应的数据转换为坐标,该数据需要从传入图表的数据集中获取,如果数据不存在数据集中,可以使用 `convertValueToPosition` 方法\n * @param datum 要转化的数据 the datum(from data source)to convert\n * @param dataLinkInfo 数据的绑定信息,the data link info, could be seriesId or seriesIndex, default is { seriesIndex: 0 }\n * @param isRelativeToCanvas 是否相对画布坐标 Whether relative to canvas coordinates\n * @returns\n */\n convertDatumToPosition(\n datum: Datum,\n dataLinkInfo: DataLinkSeries = {},\n isRelativeToCanvas: boolean = false\n ): IPoint | null {\n if (!this._chart) {\n return null;\n }\n if (isEmpty(datum)) {\n return null;\n }\n const { seriesId, seriesIndex = 0 } = dataLinkInfo;\n\n let series: ISeries;\n if (isValid(seriesId)) {\n series = this._chart.getSeriesInUserId(seriesId);\n } else if (isValid(seriesIndex)) {\n series = this._chart.getSeriesInIndex([seriesIndex])?.[0];\n }\n\n if (series) {\n const keys = Object.keys(datum);\n const handledDatum = series\n .getViewData()\n // eslint-disable-next-line eqeqeq\n .latestData.find((viewDatum: Datum) => keys.every(k => viewDatum[k] == datum[k]));\n const seriesLayoutStartPoint = series.getLayoutStartPoint();\n let point: IPoint;\n if (handledDatum) {\n point = series.dataToPosition(handledDatum);\n } else {\n point = series.dataToPosition(datum);\n }\n return convertPoint(point, seriesLayoutStartPoint, isRelativeToCanvas);\n }\n\n return null;\n }\n\n // TODO: 1. 后续需要考虑滚动场景 2. 极坐标场景支持\n convertValueToPosition(\n value: StringOrNumber,\n dataLinkInfo: DataLinkAxis,\n isRelativeToCanvas?: boolean\n ): number | null;\n convertValueToPosition(\n value: [StringOrNumber, StringOrNumber],\n dataLinkInfo: DataLinkSeries,\n isRelativeToCanvas?: boolean\n ): IPoint | null;\n convertValueToPosition(\n value: StringOrNumber | [StringOrNumber, StringOrNumber],\n dataLinkInfo: DataLinkAxis | DataLinkSeries,\n isRelativeToCanvas: boolean = false\n ): number | IPoint | null {\n if (!this._chart || isNil(value) || isEmpty(dataLinkInfo)) {\n return null;\n }\n\n if (!isArray(value)) {\n // 如果单个值,则默认使用 axis 绑定信息\n const { axisId, axisIndex } = dataLinkInfo as DataLinkAxis;\n let axis;\n if (isValid(axisId)) {\n axis = this._chart.getComponentsByKey('axes').find(s => s.userId === axisId);\n } else if (isValid(axisIndex)) {\n axis = this._chart.getComponentsByKey('axes')?.[axisIndex];\n }\n if (!axis) {\n warn('Please check whether the `axisId` or `axisIndex` is set!');\n return null;\n }\n\n const pointValue = (axis as IAxis)?.valueToPosition(value);\n if (isRelativeToCanvas) {\n const axisLayoutStartPoint = axis.getLayoutStartPoint();\n const axisOrient = (axis as IAxis).orient;\n return (\n pointValue +\n (axisOrient === 'bottom' || axisOrient === 'top' ? axisLayoutStartPoint.x : axisLayoutStartPoint.y)\n );\n }\n\n return pointValue;\n }\n const { seriesId, seriesIndex } = dataLinkInfo as DataLinkSeries;\n let series;\n if (isValid(seriesId)) {\n series = this._chart.getSeriesInUserId(seriesId);\n } else if (isValid(seriesIndex)) {\n series = this._chart.getSeriesInIndex([seriesIndex])?.[0];\n }\n\n if (!series) {\n warn('Please check whether the `seriesId` or `seriesIndex` is set!');\n return null;\n }\n\n return convertPoint(\n (series as ISeries).valueToPosition(value[0], value[1]),\n series.getLayoutStartPoint(),\n isRelativeToCanvas\n );\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/core/vchart.ts"],"names":[],"mappings":"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","file":"vchart.js","sourcesContent":["import type { ISeries } from '../series/interface/series';\nimport { arrayParser } from '../data/parser/array';\nimport type { ILayoutConstructor, LayoutCallBack } from '../layout/interface';\nimport type { IDataValues, IMarkStateSpec, IInitOption } from '../typings/spec/common';\n// eslint-disable-next-line no-duplicate-imports\nimport { RenderModeEnum } from '../typings/spec/common';\nimport type { ISeriesConstructor } from '../series/interface';\nimport type { DimensionIndexOption, IChart, IChartConstructor } from '../chart/interface';\nimport type { IComponentConstructor } from '../component/interface';\n// eslint-disable-next-line no-duplicate-imports\nimport { ComponentTypeEnum } from '../component/interface';\nimport type { EventCallback, EventParams, EventQuery, EventType, IEvent, IEventDispatcher } from '../event/interface';\nimport type { IParserOptions } from '@visactor/vdataset/es/parser';\nimport type { IFields, Transform } from '@visactor/vdataset';\n// eslint-disable-next-line no-duplicate-imports\nimport { DataSet, dataViewParser, DataView } from '@visactor/vdataset';\nimport type { Stage } from '@visactor/vrender';\nimport {\n isString,\n isValid,\n isNil,\n array,\n mergeSpec,\n createID,\n debounce,\n isTrueBrowser,\n warn,\n specTransform,\n convertPoint,\n preprocessSpecOrTheme,\n mergeTheme\n} from '../util';\nimport { Factory } from './factory';\nimport { Event } from '../event/event';\nimport { EventDispatcher } from '../event/event-dispatcher';\nimport type { GeoSourceType } from '../typings/geo';\nimport type { GeoSourceOption } from '../series/map/geo-source';\n// eslint-disable-next-line no-duplicate-imports\nimport { registerMapSource, getMapSource, unregisterMapSource } from '../series/map/geo-source';\nimport type { IMark, MarkConstructor } from '../mark/interface';\nimport { registerDataSetInstanceParser, registerDataSetInstanceTransform } from '../data/register';\nimport { dataToDataView } from '../data/initialize';\nimport { stackSplit } from '../data/transforms/stack-split';\nimport { copyDataView } from '../data/transforms/copy-data-view';\nimport type { ITooltipHandler } from '../typings/tooltip';\nimport type { Tooltip } from '../component/tooltip';\nimport type {\n Datum,\n IPoint,\n IRegionQuerier,\n IShowTooltipOption,\n ISpec,\n Maybe,\n MaybeArray,\n StringOrNumber\n} from '../typings';\nimport { AnimationStateEnum } from '../animation/interface';\nimport type { IBoundsLike, ILogger } from '@visactor/vutils';\nimport { ThemeManager } from '../theme/theme-manager';\nimport type { ITheme } from '../theme';\nimport type { IUpdateSpecResult } from '../model/interface';\nimport { Compiler } from '../compile/compiler';\nimport type { IMorphConfig } from '../animation/spec';\nimport type { ILegend } from '../component/legend/interface';\nimport { getCanvasDataURL, URLToImage } from '../util/image';\nimport { ChartEvent, DEFAULT_CHART_HEIGHT, DEFAULT_CHART_WIDTH, VGRAMMAR_HOOK_EVENT } from '../constant';\n// eslint-disable-next-line no-duplicate-imports\nimport { getContainerSize, isArray, isEmpty, Logger, merge as mergeOrigin } from '@visactor/vutils';\nimport type { DataLinkAxis, DataLinkSeries, IGlobalConfig, IVChart } from './interface';\nimport { InstanceManager } from './instance-manager';\nimport type { IAxis } from '../component/axis';\nimport { setPoptipTheme } from '@visactor/vrender-components';\nimport { calculateChartSize } from '../chart/util';\nexport class VChart implements IVChart {\n readonly id = createID();\n\n /**\n * 注册图表\n * @param charts 图表类\n */\n static useChart(charts: IChartConstructor[]) {\n charts.forEach(c => Factory.registerChart(c.type, c));\n }\n /**\n * 注册系列\n * @param series 系列类\n */\n static useSeries(series: ISeriesConstructor[]) {\n series.forEach(s => Factory.registerSeries(s.type, s));\n }\n /**\n * 注册组件\n * @param components 组件类\n */\n static useComponent(components: IComponentConstructor[]) {\n components.forEach(c => Factory.registerComponent(c.type, c));\n }\n /**\n * 注册 Mark\n * @param marks Mark 图元类\n */\n static useMark(marks: MarkConstructor[]) {\n marks.forEach(m => Factory.registerMark(m.constructorType ?? m.type, m));\n }\n /**\n * 注册布局\n * @param layouts 布局类\n */\n static useLayout(layouts: ILayoutConstructor[]) {\n layouts.forEach(l => Factory.registerLayout(l.type, l));\n }\n /**\n * 注册 DataSet 数据方法\n * @param name 数据 transform 方法名称\n * @param transform 具体的 Transform 执行方法\n */\n static registerDataSetTransform(name: string, transform: Transform) {\n Factory.registerTransform(name, transform);\n }\n\n /**\n * 注册地图数据\n * @param key 地图名称\n * @param source 地图数据\n * @param option 地图数据配置\n */\n static registerMap(key: string, source: GeoSourceType, option?: GeoSourceOption) {\n registerMapSource(key, source, option);\n }\n\n /**\n * 注销地图数据\n * @param key 地图名称\n */\n static unregisterMap(key: string) {\n unregisterMapSource(key);\n }\n\n /**\n * 根据地图名称获取地图数据\n * @param key 地图名称\n * @returns 地图数据\n */\n static getMap(key: string): GeoSourceType {\n return getMapSource(key);\n }\n\n /**\n * 全局关闭 tooltip\n * @param excludeId 可选,指定不需要关闭 tooltip 的实例 id\n */\n static hideTooltip(excludeId: MaybeArray<number> = []): void {\n InstanceManager.forEach(instance => instance?.hideTooltip?.(), excludeId);\n }\n\n /** 获取 Logger */\n static getLogger(): ILogger {\n return Logger.getInstance();\n }\n\n /** 图表实例管理器 */\n static readonly InstanceManager = InstanceManager;\n /** 主题管理器 */\n static readonly ThemeManager = ThemeManager;\n\n /** 全局配置 */\n static globalConfig: IGlobalConfig = {\n uniqueTooltip: true\n };\n\n protected _spec: any;\n\n private _viewBox: IBoundsLike;\n private _chart!: Maybe<IChart>;\n private _compiler: Compiler;\n private _event: Maybe<IEvent>;\n private _eventDispatcher: Maybe<IEventDispatcher>;\n private _dataSet!: Maybe<DataSet>;\n getDataSet() {\n return this._dataSet;\n }\n\n private _container?: HTMLElement;\n private _canvas?: HTMLCanvasElement | OffscreenCanvas | string;\n private _stage?: Stage;\n\n private _autoSize: boolean = true;\n private _option: IInitOption = {\n mode: RenderModeEnum['desktop-browser'],\n animation: true,\n onError: (msg: string) => {\n throw new Error(msg);\n }\n };\n\n private _curSize: { width: number; height: number };\n private _observer: ResizeObserver = null;\n\n private _currentThemeName: string;\n private _currentTheme: ITheme;\n\n private _onError?: (...args: any[]) => void;\n\n private _context: any = {}; // 存放用户在model初始化前通过实例方法传入的配置等\n\n constructor(spec: ISpec, options: IInitOption) {\n this._option = mergeOrigin(this._option, options);\n this._onError = this._option.onError;\n\n const { dom, renderCanvas, mode, stage, poptip, ...restOptions } = this._option;\n\n if (dom) {\n this._container = isString(dom) ? document?.getElementById(dom) : dom;\n }\n if (renderCanvas) {\n this._canvas = renderCanvas;\n }\n if (stage) {\n this._stage = stage as unknown as Stage; // FIXME: 等待 vrender 解决类型和接口不匹配的问题 @zhouxinyu\n }\n\n if (mode !== 'node' && !this._container && !this._canvas && !this._stage) {\n this._option.onError('please specify container or renderCanvas!');\n return;\n }\n\n this._viewBox = this._option.viewBox;\n this._currentThemeName = ThemeManager.getCurrentThemeName();\n this._setSpec(spec);\n this._updateCurrentTheme();\n this._curSize = calculateChartSize(this._spec, {\n container: this._container,\n canvas: this._canvas,\n mode: this._option.mode || RenderModeEnum['desktop-browser'],\n modeParams: this._option.modeParams\n });\n this._compiler = new Compiler(\n {\n dom: this._container ?? 'none',\n canvas: renderCanvas\n },\n {\n mode: this._option.mode,\n stage,\n pluginList: poptip !== false ? ['poptipForText'] : [],\n ...restOptions,\n background: this._getBackground(),\n onError: this._onError\n }\n );\n this._compiler.setSize(this._curSize.width, this._curSize.height);\n this._eventDispatcher = new EventDispatcher(this, this._compiler);\n this._event = new Event(this._eventDispatcher, mode);\n this._compiler.initView();\n // 设置全局字体\n this.getStage()?.setTheme({\n text: { fontFamily: this._currentTheme.fontFamily }\n });\n this._initDataSet(this._option.dataSet);\n this._autoSize = isTrueBrowser(mode) ? spec.autoFit ?? this._option.autoFit ?? true : false;\n this._bindResizeEvent();\n this._bindVGrammarViewEvent();\n this._event.emit(ChartEvent.initialized, {});\n\n InstanceManager.registerInstance(this);\n }\n\n private _setSpec(spec: any) {\n if (!spec) {\n return;\n }\n\n this._spec = specTransform(isString(spec) ? JSON.parse(spec) : spec);\n }\n\n private _initData() {\n if (isNil(this._dataSet)) {\n warn('dataSet is not initialized');\n return;\n }\n const specData: (DataView | IDataValues)[] = array(this._spec.data);\n\n const dataViewArr: DataView[] = [];\n for (let i = 0; i < specData.length; i++) {\n const curSpecData = specData[i];\n dataViewArr.push(\n dataToDataView(curSpecData, <DataSet>this._dataSet, dataViewArr, {\n onError: this._option.onError\n })\n );\n }\n\n this._spec.data = dataViewArr;\n }\n\n private _initChart(spec: any) {\n if (!this._compiler) {\n this._option.onError('compiler is not initialized');\n return;\n }\n this._initData();\n // 放到这里而不是放到chart内的考虑\n // 用户spec更新,也许会有core上图表实例的内容存在\n // 如果要支持spec的类似Proxy监听,更新逻辑应当从这一层开始。如果在chart上做,就需要在再向上发送spec更新消息,不是很合理。\n // todo: 问题1 存不存在 chart 需要在这个阶段处理的特殊字段?目前没有,但是理论上可以有?\n const chart = Factory.createChart(spec.type, spec, {\n globalInstance: this,\n eventDispatcher: this._eventDispatcher!,\n dataSet: this._dataSet!,\n container: this._container,\n canvas: this._canvas,\n map: new Map(),\n mode: this._option.mode || RenderModeEnum['desktop-browser'],\n modeParams: this._option.modeParams,\n getCompiler: () => this._compiler,\n performanceHook: this._option.performanceHook,\n viewBox: this._viewBox,\n animation: this._option.animation,\n getTheme: () => this._currentTheme,\n layout: this._option.layout,\n onError: this._onError\n });\n if (!chart) {\n this._option.onError('init chart fail');\n return;\n }\n this._chart = chart;\n this._chart.setCanvasRect(this._curSize.width, this._curSize.height);\n this._chart.created();\n this._chart.init({});\n }\n\n private _releaseData() {\n if (this._dataSet) {\n this._dataSet.dataViewMap = {};\n this._dataSet = null;\n }\n }\n\n private _bindVGrammarViewEvent() {\n if (!this._compiler || this._compiler.isReleased) {\n return;\n }\n this._compiler.getVGrammarView().addEventListener(VGRAMMAR_HOOK_EVENT.ALL_ANIMATION_END, () => {\n this._event.emit(ChartEvent.animationFinished, {});\n });\n this._compiler.getVGrammarView().addEventListener(VGRAMMAR_HOOK_EVENT.AFTER_VRENDER_NEXT_RENDER, () => {\n this._event.emit(ChartEvent.renderFinished, {});\n });\n }\n\n private _bindResizeEvent() {\n if (this._autoSize) {\n if (this._container) {\n const ResizeObserverWindow: any = window.ResizeObserver;\n this._observer = new ResizeObserverWindow(this._onResize);\n this._observer?.observe(this._container);\n }\n window.addEventListener('resize', this._onResize);\n }\n }\n\n private _unBindResizeEvent() {\n if (this._autoSize) {\n window.removeEventListener('resize', this._onResize);\n if (this._observer) {\n this._observer.disconnect();\n this._observer = null;\n }\n }\n }\n\n private _onResize = debounce((...args: any[]) => {\n const { width: containerWidth, height: containerHeight } = getContainerSize(\n this._container!,\n DEFAULT_CHART_WIDTH,\n DEFAULT_CHART_HEIGHT\n );\n const width = this._spec.width ?? containerWidth;\n const height = this._spec.height ?? containerHeight;\n if (this._curSize.width !== width || this._curSize.height !== height) {\n this.resize(width, height);\n this._curSize = { width, height };\n }\n }, 100);\n\n private _initDataSet(dataSet?: DataSet) {\n if (dataSet instanceof DataSet) {\n this._dataSet = dataSet;\n } else {\n this._dataSet = new DataSet();\n }\n registerDataSetInstanceParser(this._dataSet, 'dataview', dataViewParser);\n registerDataSetInstanceParser(this._dataSet, 'array', arrayParser);\n registerDataSetInstanceTransform(this._dataSet, 'stackSplit', stackSplit);\n registerDataSetInstanceTransform(this._dataSet, 'copyDataView', copyDataView);\n // 注册 dataset transform\n for (const key in Factory.transforms) {\n registerDataSetInstanceTransform(this._dataSet, key, Factory.transforms[key]);\n }\n // 注册 dataview parser\n for (const key in Factory.dataParser) {\n registerDataSetInstanceParser(this._dataSet, key, Factory.dataParser[key]);\n }\n }\n\n /** **异步方法** 执行自定义的回调修改图表配置,并重新渲染 */\n async updateCustomConfigAndRerender(modifyConfig: () => IUpdateSpecResult | undefined, morphConfig?: IMorphConfig) {\n const result = modifyConfig(); // 执行回调\n if (!isValid(result)) {\n return this as unknown as IVChart;\n }\n\n this._reCompile(result);\n await this.renderAsync(morphConfig);\n return this as unknown as IVChart;\n }\n\n /** **同步方法** 执行自定义的回调修改图表配置,并重新渲染 */\n updateCustomConfigAndRerenderSync(modifyConfig: () => IUpdateSpecResult | undefined, morphConfig?: IMorphConfig) {\n const result = modifyConfig(); // 执行回调\n if (!isValid(result)) {\n return this as unknown as IVChart;\n }\n\n this._reCompile(result);\n this.renderSync(morphConfig);\n return this as unknown as IVChart;\n }\n\n protected _reCompile(updateResult: IUpdateSpecResult) {\n if (updateResult.reMake) {\n this._releaseData();\n this._initDataSet();\n // 释放图表等等\n this._chart.release();\n this._chart = null as unknown as IChart;\n this._compiler?.releaseGrammar();\n // chart 内部事件 模块自己必须删除\n // 外部事件不处理\n // 释放 compiler compiler需要释放吗? 还是释放当前的内容就可以呢\n // VGrammar view 对象不需要释放,提供了reuse和morph能力之后,srView有上下文缓存\n } else if (updateResult.reCompile) {\n // recompile\n // 清除之前的所有 compile 内容\n this._compiler?.clear({ chart: this._chart, vChart: this });\n // TODO: 释放事件? vgrammar 的 view 应该不需要释放,响应的stage也没有释放,所以事件可以不绑定\n // 重新绑定事件\n // TODO: 释放XX?\n // 重新compile\n this._compiler?.compile({ chart: this._chart, vChart: this }, {});\n }\n }\n\n /**\n * **同步方法** 渲染图表。\n * @param morphConfig 图表 morph 动画配置,可选\n * @returns VChart 实例\n */\n renderSync(morphConfig?: IMorphConfig) {\n if (!this._chart) {\n this._option.performanceHook?.beforeInitializeChart?.();\n this._initChart(this._spec);\n this._option.performanceHook?.afterInitializeChart?.();\n if (!this._chart || !this._compiler) {\n return this as unknown as IVChart;\n }\n // 先compile\n this._option.performanceHook?.beforeCompileToVGrammar?.();\n this._compiler.compile({ chart: this._chart, vChart: this }, { performanceHook: this._option.performanceHook });\n this._option.performanceHook?.afterCompileToVGrammar?.();\n }\n // 最后填充数据绘图\n this._compiler?.renderSync(morphConfig);\n\n if (this._option.animation) {\n this._chart?.getAllRegions().forEach(region => {\n region.animate?.updateAnimateState(AnimationStateEnum.update, true);\n });\n this._chart?.getAllComponents().forEach(component => {\n component.animate?.updateAnimateState(AnimationStateEnum.update, true);\n });\n }\n\n this._event.emit(ChartEvent.rendered, {});\n return this as unknown as IVChart;\n }\n\n /**\n * **异步方法** 渲染图表。\n * @param morphConfig 图表 morph 动画配置,可选\n * @returns VChart 实例\n */\n async renderAsync(morphConfig?: IMorphConfig) {\n if (!this._chart) {\n this._option.performanceHook?.beforeInitializeChart?.();\n this._initChart(this._spec);\n this._option.performanceHook?.afterInitializeChart?.();\n if (!this._chart || !this._compiler) {\n return this as unknown as IVChart;\n }\n // 先compile\n this._option.performanceHook?.beforeCompileToVGrammar?.();\n this._compiler.compile({ chart: this._chart, vChart: this }, { performanceHook: this._option.performanceHook });\n this._option.performanceHook?.afterCompileToVGrammar?.();\n }\n // 最后填充数据绘图\n await this._compiler?.renderAsync(morphConfig);\n\n if (this._option.animation) {\n this._chart?.getAllRegions().forEach(region => {\n region.animate?.updateAnimateState(AnimationStateEnum.update, true);\n });\n this._chart?.getAllComponents().forEach(component => {\n component.animate?.updateAnimateState(AnimationStateEnum.update, true);\n });\n }\n\n this._event.emit(ChartEvent.rendered, {});\n return this as unknown as IVChart;\n }\n\n /**\n * 销毁图表\n */\n release() {\n if ((this._onResize as any)?.cancel) {\n (this._onResize as any).cancel();\n }\n this._chart?.release();\n this._compiler?.release();\n this._eventDispatcher?.release();\n this._unBindResizeEvent();\n // resetID(); // 为什么要重置ID呢?\n\n this._releaseData();\n\n this._chart = null;\n this._compiler = null;\n this._spec = null;\n // this._option = null;\n this._event = null;\n this._eventDispatcher = null;\n\n InstanceManager.unregisterInstance(this);\n }\n\n /**\n * **异步方法** 更新数据。\n * @param id 数据 id\n * @param data 数据值\n * @param options 数据参数\n * @returns VChart 实例\n */\n async updateData(id: StringOrNumber, data: DataView | Datum[] | string, options?: IParserOptions): Promise<IVChart> {\n if (isNil(this._dataSet)) {\n return this as unknown as IVChart;\n }\n if (this._chart) {\n this._chart.updateData(id, data, true, options);\n\n // after layout\n await this._compiler.renderAsync();\n return this as unknown as IVChart;\n }\n this._spec.data = array(this._spec.data);\n const preDV = this._spec.data.find((dv: any) => dv.name === id || dv.id === id);\n if (preDV) {\n if (preDV.id === id) {\n preDV.values = data;\n } else if (preDV.name === id) {\n preDV.parse(data, options);\n }\n } else {\n if (isArray(data)) {\n this._spec.data.push({\n id,\n values: data\n });\n } else {\n this._spec.data.push(data);\n }\n }\n return this as unknown as IVChart;\n }\n\n /**\n * **异步方法** 批量更新数据。\n * @param list 待更新的数据列表\n * @returns VChart 实例\n */\n async updateDataInBatches(\n list: { id: string; data: DataView | Datum[]; options?: IParserOptions }[]\n ): Promise<IVChart> {\n if (this._chart) {\n list.forEach(({ id, data, options }) => {\n this._chart.updateData(id, data, false, options);\n });\n this._chart.updateGlobalScaleDomain();\n await this._compiler.renderAsync();\n return this as unknown as IVChart;\n }\n list.forEach(({ id, data, options }) => {\n const preDV = (this._spec.data as DataView[]).find(dv => dv.name === id);\n if (preDV) {\n preDV.parse(data, options);\n } else {\n const dataView = new DataView(this._dataSet, { name: id });\n dataView.parse(data, options);\n this._spec.data.push(dataView);\n }\n });\n return this as unknown as IVChart;\n }\n\n /**\n * **同步方法** 更新数据\n * @param id 数据 id\n * @param data 数据值\n * @param options 数据参数\n * @returns VChart 实例\n */\n updateDataSync(id: StringOrNumber, data: DataView | Datum[], options?: IParserOptions) {\n if (isNil(this._dataSet)) {\n return this as unknown as IVChart;\n }\n if (this._chart) {\n this._chart.updateData(id, data, true, options);\n // after layout\n this._compiler.renderSync();\n return this as unknown as IVChart;\n }\n const preDV = (this._spec.data as DataView[]).find(dv => dv.name === id);\n if (preDV) {\n preDV.parse(data, options);\n } else {\n const dataView = new DataView(this._dataSet, { name: id as string });\n dataView.parse(data, options);\n this._spec.data.push(dataView);\n }\n return this as unknown as IVChart;\n }\n\n /**\n * **同步方法** 更新数据\n * @param data 图表配置结构中的数据对象\n * @returns VChart 实例\n * @since 1.3.0\n */\n updateFullDataSync(data: IDataValues | IDataValues[], reRender: boolean = true) {\n if (this._chart) {\n this._chart.updateFullData(data);\n if (reRender) {\n this._compiler.renderSync();\n }\n return this as unknown as IVChart;\n }\n const list: IDataValues[] = array(data);\n list.forEach(d => {\n // only support update this attrs\n const { id, values, parser, fields } = d;\n const preDV = (this._spec.data as DataView[]).find(dv => dv.name === id);\n if (preDV) {\n preDV.setFields(fields as IFields);\n preDV.parse(values, parser as IParserOptions);\n } else {\n // new data\n const dataView = dataToDataView(d, <DataSet>this._dataSet, this._spec.data, {\n onError: this._option.onError\n });\n this._spec.data.push(dataView);\n }\n });\n return this as unknown as IVChart;\n }\n\n /**\n * **异步方法** 更新数据\n * @param data 图表配置结构中的数据对象\n * @returns VChart 实例\n * @since 1.3.0\n */\n async updateFullData(data: IDataValues | IDataValues[], reRender: boolean = true) {\n if (this._chart) {\n this._chart.updateFullData(data);\n if (reRender) {\n await this._compiler.renderAsync();\n }\n return this as unknown as IVChart;\n }\n const list: IDataValues[] = array(data);\n list.forEach(d => {\n // only support update this attrs\n const { id, values, parser, fields } = d;\n const preDV = (this._spec.data as DataView[]).find(dv => dv.name === id);\n if (preDV) {\n preDV.setFields(fields as IFields);\n preDV.parse(values, parser as IParserOptions);\n } else {\n // new data\n const dataView = dataToDataView(d, <DataSet>this._dataSet, this._spec.data, {\n onError: this._option.onError\n });\n this._spec.data.push(dataView);\n }\n });\n return this as unknown as IVChart;\n }\n\n /**\n * **异步方法** spec 更新\n * @param spec\n * @param forceMerge\n * @returns\n */\n async updateSpec(spec: ISpec, forceMerge: boolean = false, morphConfig?: IMorphConfig) {\n if (!spec) {\n return this as unknown as IVChart;\n }\n if (isString(spec)) {\n spec = JSON.parse(spec);\n }\n\n // 没有配置变化 因为数据对象的原因,这里会报错\n // if (specString == JSON.stringify(this._spec)) {\n // return;\n // }\n\n if (forceMerge) {\n spec = mergeSpec({}, this._spec, spec);\n }\n\n await this.updateCustomConfigAndRerender(() => {\n spec = specTransform(spec) as any;\n this._spec = spec;\n this._updateCurrentTheme();\n this._compiler?.getVGrammarView()?.updateLayoutTag();\n return this._chart.updateSpec(spec, morphConfig);\n }, morphConfig);\n return this as unknown as IVChart;\n }\n\n /**\n * **同步方法** spec 更新\n * @param spec\n * @param forceMerge\n * @returns\n */\n updateSpecSync(spec: ISpec, forceMerge: boolean = false, morphConfig?: IMorphConfig) {\n if (!spec) {\n return this as unknown as IVChart;\n }\n if (isString(spec)) {\n spec = JSON.parse(spec);\n }\n\n // 没有配置变化 因为数据对象的原因,这里会报错\n // if (specString == JSON.stringify(this._spec)) {\n // return;\n // }\n\n if (forceMerge) {\n spec = mergeSpec({}, this._spec, spec);\n }\n\n this.updateCustomConfigAndRerenderSync(() => {\n spec = specTransform(spec) as any;\n // because of in data-init, data will be set as array;\n spec.data = spec.data ?? [];\n this._spec = spec;\n this._updateCurrentTheme();\n this._compiler?.getVGrammarView()?.updateLayoutTag();\n return this._chart.updateSpec(spec, morphConfig);\n }, morphConfig);\n return this as unknown as IVChart;\n }\n\n /**\n * **异步方法**,图表尺寸更新方法\n * @param width 宽度\n * @param height 高度\n * @returns VChart 当前实例\n */\n async resize(width: number, height: number) {\n if (!this._chart || !this._compiler) {\n return this as unknown as IVChart;\n }\n // 如果宽高未变化,不需要重新执行 resize,防止当图表初始化时会执行一次多余的 resize\n const chartCanvasRect = this._chart.getCanvasRect();\n if (chartCanvasRect && chartCanvasRect.width === width && chartCanvasRect.height === height) {\n return this as unknown as IVChart;\n }\n this._option.performanceHook?.beforeResizeWithUpdate?.();\n this._chart.onResize(width, height);\n this._option.performanceHook?.afterResizeWithUpdate?.();\n await this._compiler.resize?.(width, height);\n\n return this as unknown as IVChart;\n }\n\n /**\n * 更新绘制区域\n * @param viewBox 绘制区域\n * @param reRender 是否重新渲染,默认为 true\n * @param reLayout 是否重新布局,默认为 true\n * @returns\n */\n updateViewBox(viewBox: IBoundsLike, reRender: boolean = true, reLayout: boolean = true) {\n if (!this._chart || !this._compiler) {\n return this as unknown as IVChart;\n }\n this._viewBox = viewBox;\n // 更新 layout 参数\n this._chart.updateViewBox(viewBox, reLayout);\n if (reLayout) {\n // 重新布局\n this._compiler.renderSync();\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n this._chart?.onEvaluateEnd();\n }\n // 获取 compiler\n this._compiler.updateViewBox(viewBox, reRender);\n return this as unknown as IVChart;\n }\n\n // 事件相关方法\n on(eType: EventType, handler: EventCallback<EventParams>): void;\n on(eType: EventType, query: EventQuery, handler: EventCallback<EventParams>): void;\n on(eType: EventType, query: EventQuery | EventCallback<EventParams>, handler?: EventCallback<EventParams>): void {\n this._event?.on(eType as any, query as any, handler as any);\n }\n off(eType: string, handler?: EventCallback<EventParams>): void {\n this._event?.off(eType, handler);\n }\n\n // 状态相关方法\n /**\n * 更新或设置图元状态\n * @param state 状态筛选器\n * @param filter 筛选器\n */\n updateState(\n state: Record<string, Omit<IMarkStateSpec<unknown>, 'style'>>,\n filter?: (series: ISeries, mark: IMark, stateKey: string) => boolean //series + mark 筛选\n ): void {\n if (!this._chart) {\n return;\n }\n this._chart.updateState(state, filter);\n }\n\n /**\n * 更新图元选中状态\n * @param datum hover 图元数据\n * @param filter 筛选器 用来筛选系列与mark\n * @param region region 筛选器\n */\n setSelected(\n datum: MaybeArray<any> | null,\n filter?: (series: ISeries, mark: IMark) => boolean,\n region?: IRegionQuerier\n ): void {\n if (!this._chart) {\n return;\n }\n this._chart.setSelected(datum, filter, region);\n }\n\n /**\n * 更新图元 hover 状态\n * @param datum hover 图元数据\n * @param filter 筛选器 用来筛选系列与mark\n * @param region region 筛选器\n */\n setHovered(\n datum: MaybeArray<Datum> | null,\n filter?: (series: ISeries, mark: IMark) => boolean,\n region?: IRegionQuerier\n ): void {\n if (!this._chart) {\n return;\n }\n this._chart.setHovered(datum, filter, region);\n }\n\n // 主题相关方法\n /** 当 spec 或者 currentThemeName 有变化时需要调用此方法对 currentTheme 进行更新 */\n private _updateCurrentTheme() {\n const userTheme = this._spec?.theme ?? this._option.theme;\n if (isString(userTheme)) {\n const theme = mergeTheme({}, ThemeManager.getTheme(userTheme));\n this._currentTheme = preprocessSpecOrTheme(theme, theme.colorScheme);\n this._currentThemeName = userTheme;\n } else {\n const theme = mergeTheme({}, ThemeManager.getTheme(this._currentThemeName), userTheme ?? {});\n this._currentTheme = preprocessSpecOrTheme(theme, theme.colorScheme);\n }\n // 设置 poptip 的主题\n setPoptipTheme(preprocessSpecOrTheme(mergeSpec({}, this._currentTheme.component?.poptip)));\n // 设置背景色\n this._compiler?.setBackground(this._getBackground());\n }\n\n private _getBackground() {\n const specBackground = typeof this._spec.background === 'string' ? this._spec.background : null;\n // spec > spec.theme > initOptions.theme\n return specBackground || (this._currentTheme.background as string) || this._option.background;\n }\n\n /**\n * 获取当前主题,会返回完整的主题配置\n * */\n getCurrentTheme() {\n return this._currentTheme;\n }\n\n /**\n * 获取当前主题名称(只能获取用户通过`setCurrentTheme`方法设置过的主题,默认值为`ThemeManager`统一设置的主题)\n */\n getCurrentThemeName() {\n return this._currentThemeName;\n }\n\n /**\n * **异步方法**, 设置当前主题。\n * **注意,如果在 spec 上配置了 theme,则 spec 上的 theme 优先级更高。**\n * @param name 主题名称\n * @returns\n */\n async setCurrentTheme(name: string) {\n if (!ThemeManager.themeExist(name)) {\n return this as unknown as IVChart;\n }\n\n await this.updateCustomConfigAndRerender(() => {\n this._currentThemeName = name;\n this._updateCurrentTheme();\n this._chart?.setCurrentTheme(this._currentTheme, true);\n return { change: true, reMake: false };\n });\n\n return this as unknown as IVChart;\n }\n\n /**\n * **同步方法** 设置当前主题。\n * **注意,如果在 spec 上配置了 theme,则 spec 上的 theme 优先级更高。**\n * @param name 主题名称\n * @returns\n */\n setCurrentThemeSync(name: string) {\n if (!ThemeManager.themeExist(name)) {\n return this as unknown as IVChart;\n }\n\n this.updateCustomConfigAndRerenderSync(() => {\n this._currentThemeName = name;\n this._updateCurrentTheme();\n this._chart?.setCurrentTheme(this._currentTheme, true);\n return { change: true, reMake: false };\n });\n\n return this as unknown as IVChart;\n }\n\n // Tooltip 相关方法\n private _getTooltipComponent(): Tooltip | undefined {\n const tooltip = this._chart?.getAllComponents().find(c => c.type === ComponentTypeEnum.tooltip) as Tooltip;\n return tooltip;\n }\n\n /**\n * 自定义 TooltipHandler\n * @param tooltipHandler\n */\n setTooltipHandler(tooltipHandler: ITooltipHandler) {\n this._context.tooltipHandler = tooltipHandler;\n const tooltip = this._getTooltipComponent();\n if (tooltip) {\n tooltip.tooltipHandler?.release?.();\n tooltip.tooltipHandler = tooltipHandler;\n }\n }\n\n /**\n * 获取用户定义的 TooltipHandler\n * @returns ITooltipHandler\n */\n getTooltipHandlerByUser(): ITooltipHandler | undefined {\n return this._context?.tooltipHandler;\n }\n\n /**\n * 获取 TooltipHandler\n * @returns\n */\n getTooltipHandler(): ITooltipHandler | undefined {\n const tooltip = this._getTooltipComponent();\n if (tooltip) {\n return tooltip.tooltipHandler;\n }\n return this._context.tooltipHandler;\n }\n\n /**\n * 手动调用展示 tooltip\n * @param datum 原始数据\n * @param options\n * @returns\n */\n showTooltip(datum: Datum, options: IShowTooltipOption): boolean {\n const tooltip = this._getTooltipComponent();\n return (isValid(datum) && tooltip?.showTooltip(datum, options) !== 'none') ?? false;\n }\n\n /**\n * 手动调用,关闭 tooltip\n * @returns\n */\n hideTooltip(): boolean {\n const tooltip = this._getTooltipComponent();\n return tooltip?.hideTooltip() ?? false;\n }\n\n // 图例相关 api\n /**\n * 根据图例组件 id 获取图例数据\n * @param id 组件 id\n * @returns\n */\n getLegendDataById(id: string) {\n const legendComponent = this._chart?.getComponentByUserId(id) as ILegend;\n if (legendComponent) {\n return legendComponent.getLegendData();\n }\n return [];\n }\n\n /**\n * 根据图例组件索引获取图例数据\n * @param index 图例索引,默认为 0\n * @returns\n */\n getLegendDataByIndex(index: number = 0) {\n const legends = this._chart\n ?.getAllComponents()\n .filter(c => c.type === ComponentTypeEnum.discreteLegend) as ILegend[];\n\n if (legends[index]) {\n return legends[index].getLegendData();\n }\n\n return [];\n }\n\n /**\n * 根据图例组件 id 获取当前图例的选中项\n * @param id 组件 id\n * @returns\n */\n getLegendSelectedDataById(id: string) {\n const legendComponent = this._chart?.getComponentByUserId(id) as ILegend;\n if (legendComponent) {\n return legendComponent.getSelectedData();\n }\n return [];\n }\n\n /**\n * 根据图例组件索引获取当前图例的选中项\n * @param index 图例索引,默认为 0\n * @returns\n */\n getLegendSelectedDataByIndex(index: number = 0) {\n const legends = this._chart\n ?.getAllComponents()\n .filter(c => c.type === ComponentTypeEnum.discreteLegend) as ILegend[];\n\n if (legends[index]) {\n return legends[index].getSelectedData();\n }\n\n return [];\n }\n\n /**\n * 根据图例组件 id 更新图例选中数据\n * @param id\n * @returns\n */\n setLegendSelectedDataById(id: string, selectedData: StringOrNumber[]) {\n const legendComponent = this._chart?.getComponentByUserId(id) as ILegend;\n if (legendComponent) {\n legendComponent.setSelectedData(selectedData);\n }\n }\n\n /**\n * 根据图例组件索引更新图例选中数据\n * @param index 图例索引,默认为 0\n * @returns\n */\n setLegendSelectedDataByIndex(index: number = 0, selectedData: StringOrNumber[]) {\n const legends = this._chart\n ?.getAllComponents()\n .filter(c => c.type === ComponentTypeEnum.discreteLegend) as ILegend[];\n\n if (legends[index]) {\n legends[index].setSelectedData(selectedData);\n }\n }\n\n // 保存图片相关的方法\n /**\n * **异步方法**返回一个包含图片展示的 data URI。\n * @returns data URI\n */\n async getDataURL() {\n const stage = this.getStage();\n if (this._chart && stage) {\n // 因为 vrender 是 autoRender 的,它不能确认第几帧才是完整的图表,所以这里调用一次 render 以保证获取到的是完整的画布\n stage.render();\n const canvas = this._chart.getCanvas();\n const url = await getCanvasDataURL(canvas, {\n onError: this._onError\n });\n return url;\n }\n this._option.onError(new ReferenceError(`render is not defined`));\n\n return null;\n }\n\n /**\n * **异步方法** 导出图表图片,只支持浏览器端。\n * @param name 保存的图片名称\n * @returns\n */\n async exportImg(name?: string) {\n if (!isTrueBrowser(this._option.mode)) {\n this._option.onError(new TypeError(`non-browser environment can not export img`));\n return;\n }\n\n const dataURL = await this.getDataURL();\n if (dataURL) {\n URLToImage(name, dataURL);\n } else {\n this._option.onError(new ReferenceError(`render is not defined`));\n }\n }\n\n /**\n * 目前仅支持 node 环境,用于 node 端的图片导出\n * @returns\n */\n getImageBuffer() {\n if (this._option.mode !== 'node') {\n this._option.onError(new TypeError('getImageBuffer() now only support node environment.'));\n return;\n }\n const stage = this.getStage();\n if (stage) {\n stage.render();\n const buffer = stage.window.getImageBuffer();\n return buffer;\n }\n this._option.onError(new ReferenceError(`render is not defined`));\n\n return null;\n }\n\n // 布局相关的方法\n /**\n * 设置自定义布局\n */\n setLayout(layout: LayoutCallBack) {\n this._option.layout = layout;\n this._chart?.setLayout(layout);\n }\n /**\n * 强制重新布局\n */\n reLayout() {\n this._chart?.setLayoutTag(true);\n }\n\n /**\n * 获取编译器实例\n * @returns\n */\n getCompiler() {\n return this._compiler;\n }\n\n /**\n * Get the chart instance\n * 获取 Chart 图表实例。\n * @returns Chart 实例\n */\n getChart() {\n return this._chart;\n }\n\n /**\n * Get the renderer instance.\n * 获取渲染引擎实例。\n * @returns the instance of VRender Stage\n */\n getStage(): Stage {\n return this._compiler.getStage();\n }\n\n /**\n * 获取 canvas dom\n * @returns HTMLCanvasElement | undefined\n */\n getCanvas(): HTMLCanvasElement | undefined {\n return this._compiler?.getCanvas();\n }\n\n /**\n * 获取图表的 dom 容器\n * @returns\n */\n getContainer(): Maybe<HTMLElement> {\n // 用户传入 dom container\n if (isValid(this._container)) {\n return this._container;\n }\n\n // 用户传入 canvas\n let canvasNode: Maybe<HTMLCanvasElement>;\n if (isString(this._canvas)) {\n canvasNode = document?.getElementById(this._canvas) as HTMLCanvasElement;\n } else {\n canvasNode = this._canvas as HTMLCanvasElement;\n }\n if (isValid(canvasNode)) {\n return canvasNode.parentElement;\n }\n\n // 用户传入 stage\n return this.getCanvas()?.parentElement;\n }\n\n /**\n * 获取图表所有的组件实例\n * @returns 组件实例\n */\n getComponents() {\n return this._chart.getAllComponents();\n }\n\n /**\n * setDimensionIndex could trigger mark state, tooltip, crosshair\n * @param value dimension value\n * @param opt option for set trigger\n */\n setDimensionIndex(value: StringOrNumber, opt: DimensionIndexOption = {}) {\n return this._chart?.setDimensionIndex(value, opt);\n }\n\n /** 停止正在进行的所有动画 */\n stopAnimation() {\n this._compiler?.getVGrammarView()?.animate?.stop();\n }\n\n /** 暂停正在进行的所有动画 */\n pauseAnimation() {\n this._compiler?.getVGrammarView()?.animate?.pause();\n }\n\n /** 恢复暂停时正在进行的所有动画 */\n resumeAnimation() {\n this._compiler?.getVGrammarView()?.animate?.resume();\n }\n\n // TODO: 后续需要考虑滚动场景\n /**\n * Convert the data corresponding to the graph into coordinates\n * 将图形对应的数据转换为坐标,该数据需要从传入图表的数据集中获取,如果数据不存在数据集中,可以使用 `convertValueToPosition` 方法\n * @param datum 要转化的数据 the datum(from data source)to convert\n * @param dataLinkInfo 数据的绑定信息,the data link info, could be seriesId or seriesIndex, default is { seriesIndex: 0 }\n * @param isRelativeToCanvas 是否相对画布坐标 Whether relative to canvas coordinates\n * @returns\n */\n convertDatumToPosition(\n datum: Datum,\n dataLinkInfo: DataLinkSeries = {},\n isRelativeToCanvas: boolean = false\n ): IPoint | null {\n if (!this._chart) {\n return null;\n }\n if (isEmpty(datum)) {\n return null;\n }\n const { seriesId, seriesIndex = 0 } = dataLinkInfo;\n\n let series: ISeries;\n if (isValid(seriesId)) {\n series = this._chart.getSeriesInUserId(seriesId);\n } else if (isValid(seriesIndex)) {\n series = this._chart.getSeriesInIndex([seriesIndex])?.[0];\n }\n\n if (series) {\n const keys = Object.keys(datum);\n const handledDatum = series\n .getViewData()\n // eslint-disable-next-line eqeqeq\n .latestData.find((viewDatum: Datum) => keys.every(k => viewDatum[k] == datum[k]));\n const seriesLayoutStartPoint = series.getLayoutStartPoint();\n let point: IPoint;\n if (handledDatum) {\n point = series.dataToPosition(handledDatum);\n } else {\n point = series.dataToPosition(datum);\n }\n return convertPoint(point, seriesLayoutStartPoint, isRelativeToCanvas);\n }\n\n return null;\n }\n\n // TODO: 1. 后续需要考虑滚动场景 2. 极坐标场景支持\n convertValueToPosition(\n value: StringOrNumber,\n dataLinkInfo: DataLinkAxis,\n isRelativeToCanvas?: boolean\n ): number | null;\n convertValueToPosition(\n value: [StringOrNumber, StringOrNumber],\n dataLinkInfo: DataLinkSeries,\n isRelativeToCanvas?: boolean\n ): IPoint | null;\n convertValueToPosition(\n value: StringOrNumber | [StringOrNumber, StringOrNumber],\n dataLinkInfo: DataLinkAxis | DataLinkSeries,\n isRelativeToCanvas: boolean = false\n ): number | IPoint | null {\n if (!this._chart || isNil(value) || isEmpty(dataLinkInfo)) {\n return null;\n }\n\n if (!isArray(value)) {\n // 如果单个值,则默认使用 axis 绑定信息\n const { axisId, axisIndex } = dataLinkInfo as DataLinkAxis;\n let axis;\n if (isValid(axisId)) {\n axis = this._chart.getComponentsByKey('axes').find(s => s.userId === axisId);\n } else if (isValid(axisIndex)) {\n axis = this._chart.getComponentsByKey('axes')?.[axisIndex];\n }\n if (!axis) {\n warn('Please check whether the `axisId` or `axisIndex` is set!');\n return null;\n }\n\n const pointValue = (axis as IAxis)?.valueToPosition(value);\n if (isRelativeToCanvas) {\n const axisLayoutStartPoint = axis.getLayoutStartPoint();\n const axisOrient = (axis as IAxis).getOrient();\n return (\n pointValue +\n (axisOrient === 'bottom' || axisOrient === 'top' ? axisLayoutStartPoint.x : axisLayoutStartPoint.y)\n );\n }\n\n return pointValue;\n }\n const { seriesId, seriesIndex } = dataLinkInfo as DataLinkSeries;\n let series;\n if (isValid(seriesId)) {\n series = this._chart.getSeriesInUserId(seriesId);\n } else if (isValid(seriesIndex)) {\n series = this._chart.getSeriesInIndex([seriesIndex])?.[0];\n }\n\n if (!series) {\n warn('Please check whether the `seriesId` or `seriesIndex` is set!');\n return null;\n }\n\n return convertPoint(\n (series as ISeries).valueToPosition(value[0], value[1]),\n series.getLayoutStartPoint(),\n isRelativeToCanvas\n );\n }\n}\n"]}
@@ -1,5 +1,7 @@
1
+ import { couldBeValidNumber } from '../../util';
1
2
  import type { DataView } from '@visactor/vdataset';
2
3
  export declare const StatisticsDefault: {
4
+ allValid: () => boolean;
3
5
  min: () => number;
4
6
  max: () => number;
5
7
  values: () => Set<unknown>;
@@ -7,25 +9,25 @@ export declare const StatisticsDefault: {
7
9
  'array-max': () => number;
8
10
  };
9
11
  export declare const StatisticsValueTransform: {
12
+ allValid: (v: any) => any;
10
13
  min: (v: any) => any;
11
14
  max: (v: any) => any;
12
15
  values: (v: Set<string>) => string[];
13
16
  'array-min': (v: any) => any;
14
17
  'array-max': (v: any) => any;
15
18
  };
16
- declare function StatisticsMin(last: any, value: any): any;
17
- declare function StatisticsMax(last: any, value: any): any;
18
19
  declare function StatisticsArrayMin(last: any, valueArr: any): any;
19
20
  declare function StatisticsArrayMax(last: any, valueArr: any): any;
20
21
  declare function StatisticsValues(last: Set<string>, value: any): Set<string>;
21
22
  export declare const StatisticsMethod: {
22
- min: typeof StatisticsMin;
23
- max: typeof StatisticsMax;
23
+ allValid: typeof couldBeValidNumber;
24
+ min: (...values: number[]) => number;
25
+ max: (...values: number[]) => number;
24
26
  values: typeof StatisticsValues;
25
27
  'array-min': typeof StatisticsArrayMin;
26
28
  'array-max': typeof StatisticsArrayMax;
27
29
  };
28
- export type StatisticOperations = Array<'max' | 'min' | 'values' | 'array-max' | 'array-min'>;
30
+ export type StatisticOperations = Array<'max' | 'min' | 'values' | 'array-max' | 'array-min' | 'allValid'>;
29
31
  export interface IStatisticsOption {
30
32
  fields: {
31
33
  key: string;
@@ -36,6 +38,10 @@ export interface IStatisticsOption {
36
38
  } | any[];
37
39
  }[];
38
40
  target?: 'parser' | 'latest';
41
+ fieldFollowSource?: (key: string) => boolean;
42
+ sourceStatistics?: () => {
43
+ [key: string]: unknown;
44
+ };
39
45
  }
40
46
  export declare const dimensionStatistics: (data: Array<DataView>, op: IStatisticsOption) => {};
41
47
  export {};
@@ -6,14 +6,6 @@ Object.defineProperty(exports, "__esModule", {
6
6
 
7
7
  const vutils_1 = require("@visactor/vutils"), util_1 = require("../../util");
8
8
 
9
- function StatisticsMin(last, value) {
10
- return (0, util_1.couldBeValidNumber)(value) ? Math.min(last, value) : last;
11
- }
12
-
13
- function StatisticsMax(last, value) {
14
- return (0, util_1.couldBeValidNumber)(value) ? Math.max(last, value) : last;
15
- }
16
-
17
9
  function StatisticsArrayMin(last, valueArr) {
18
10
  const filteredValueArr = (null != valueArr ? valueArr : []).filter((v => (0, util_1.couldBeValidNumber)(v)));
19
11
  return 0 === filteredValueArr.length ? last : Math.min(last, ...filteredValueArr);
@@ -29,49 +21,69 @@ function StatisticsValues(last, value) {
29
21
  }
30
22
 
31
23
  exports.StatisticsDefault = {
24
+ allValid: () => !0,
32
25
  min: () => Number.MAX_VALUE,
33
26
  max: () => Number.MIN_VALUE,
34
27
  values: () => new Set,
35
28
  "array-min": () => Number.MAX_VALUE,
36
29
  "array-max": () => Number.MIN_VALUE
37
30
  }, exports.StatisticsValueTransform = {
31
+ allValid: v => v,
38
32
  min: v => v === exports.StatisticsDefault.min() ? 0 : v,
39
33
  max: v => v === exports.StatisticsDefault.max() ? 0 : v,
40
34
  values: v => Array.from(v),
41
35
  "array-min": v => v === exports.StatisticsDefault.min() ? 0 : v,
42
36
  "array-max": v => v === exports.StatisticsDefault.max() ? 0 : v
43
37
  }, exports.StatisticsMethod = {
44
- min: StatisticsMin,
45
- max: StatisticsMax,
38
+ allValid: util_1.couldBeValidNumber,
39
+ min: Math.min,
40
+ max: Math.max,
46
41
  values: StatisticsValues,
47
42
  "array-min": StatisticsArrayMin,
48
43
  "array-max": StatisticsArrayMax
49
44
  };
50
45
 
51
46
  const dimensionStatistics = (data, op) => {
52
- var _a, _b;
47
+ var _a, _b, _c;
53
48
  const result = {};
54
49
  let fields = op.fields;
55
50
  if ((0, util_1.isFunction)(fields) && (fields = fields()), !(null == fields ? void 0 : fields.length) || !(null == data ? void 0 : data.length)) return result;
51
+ const sourceStatistics = null === (_a = op.sourceStatistics) || void 0 === _a ? void 0 : _a.call(op), fieldFollowSource = op.fieldFollowSource;
56
52
  fields = (0, util_1.mergeFields)([], fields);
57
- const dataKey = "parser" === op.target ? "parserData" : "latestData", latestData = data[0][dataKey] ? data[0][dataKey] : data || [], dataFields = null === (_b = (_a = data[0]).getFields) || void 0 === _b ? void 0 : _b.call(_a);
53
+ const dataKey = "parser" === op.target ? "parserData" : "latestData", latestData = data[0][dataKey] ? data[0][dataKey] : data || [], dataFields = null === (_c = (_b = data[0]).getFields) || void 0 === _c ? void 0 : _c.call(_b);
58
54
  return fields.forEach((f => {
59
55
  result[f.key] = {};
60
56
  const dataFiledInKey = null == dataFields ? void 0 : dataFields[f.key];
61
- f.operations.forEach((op => {
57
+ if (sourceStatistics && fieldFollowSource && fieldFollowSource(f.key) && sourceStatistics[f.key]) return void (result[f.key] = sourceStatistics[f.key]);
58
+ let willMin = !1, willMax = !1, willValid = !1;
59
+ const operations = [];
60
+ f.operations.forEach((o => {
61
+ "max" === o ? willMax = !0 : "min" === o ? willMin = !0 : "allValid" === o ? willValid = !0 : operations.push(o);
62
+ })), operations.forEach((op => {
62
63
  if (f.customize) result[f.key][op] = f.customize; else {
63
- if (dataFiledInKey && dataFiledInKey.lockStatisticsByDomain && !(0, vutils_1.isNil)(dataFiledInKey.domain)) {
64
- if ("min" === op) return void (result[f.key][op] = Math.min(...dataFiledInKey.domain));
65
- if ("max" === op) return void (result[f.key][op] = Math.max(...dataFiledInKey.domain));
66
- if ("values" === op) return void (result[f.key][op] = [ ...dataFiledInKey.domain ]);
67
- }
68
- result[f.key][op] = exports.StatisticsDefault[op](), latestData.forEach((d => {
69
- const value = null == d ? void 0 : d[f.key];
70
- result[f.key][op] = exports.StatisticsMethod[op](result[f.key][op], value);
64
+ if (dataFiledInKey && dataFiledInKey.lockStatisticsByDomain && !(0, vutils_1.isNil)(dataFiledInKey.domain) && "values" === op) return void (result[f.key][op] = [ ...dataFiledInKey.domain ]);
65
+ result[f.key][op] = exports.StatisticsDefault[op]();
66
+ const isValues = "values" === op;
67
+ latestData.forEach((d => {
68
+ if (!d) return;
69
+ const value = d[f.key];
70
+ isValues ? exports.StatisticsMethod[op](result[f.key][op], value) : result[f.key][op] = exports.StatisticsMethod[op](result[f.key][op], value);
71
71
  })), result[f.key][op] = exports.StatisticsValueTransform[op](result[f.key][op]),
72
72
  "array-max" === op && (result[f.key].max = result[f.key][op]), "array-min" === op && (result[f.key].min = result[f.key][op]);
73
73
  }
74
- }));
74
+ })), (willMin || willMax || willValid) && (f.customize ? (willMin && (result[f.key].min = f.customize),
75
+ willMax && (result[f.key].max = f.customize)) : (dataFiledInKey && dataFiledInKey.lockStatisticsByDomain && !(0,
76
+ vutils_1.isNil)(dataFiledInKey.domain) && (willMin && (result[f.key][op] = Math.min(...dataFiledInKey.domain)),
77
+ willMax && (result[f.key][op] = Math.max(...dataFiledInKey.domain))), willMin && (result[f.key].min = exports.StatisticsDefault.min()),
78
+ willMax && (result[f.key].max = exports.StatisticsDefault.max()), result[f.key].allValid = exports.StatisticsDefault.allValid(),
79
+ latestData.forEach((d => {
80
+ if (!d) return;
81
+ let value = d[f.key];
82
+ (0, util_1.couldBeValidNumber)(value) ? (value = +value, willMin && result[f.key].min > value && (result[f.key].min = value),
83
+ willMax && result[f.key].max < value && (result[f.key].max = value)) : result[f.key].allValid && (result[f.key].allValid = !1);
84
+ })), willMin && (result[f.key].min = exports.StatisticsValueTransform.min(result[f.key].min)),
85
+ willMax && (result[f.key].max = exports.StatisticsValueTransform.max(result[f.key].max)),
86
+ result[f.key].allValid = exports.StatisticsValueTransform.allValid(result[f.key].allValid)));
75
87
  })), result;
76
88
  };
77
89