@visactor/vchart 2.1.0-alpha.1 → 2.1.0-alpha.11

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 (512) hide show
  1. package/build/es5/index.js +3 -3
  2. package/build/index.es.js +5964 -3343
  3. package/build/index.js +5964 -3343
  4. package/build/index.min.js +2 -2
  5. package/build/tsconfig.tsbuildinfo +1 -1
  6. package/cjs/chart/base/base-chart-transformer.d.ts +3 -0
  7. package/cjs/chart/base/base-chart-transformer.js +23 -3
  8. package/cjs/chart/base/base-chart-transformer.js.map +1 -1
  9. package/cjs/chart/base/base-chart.d.ts +25 -9
  10. package/cjs/chart/base/base-chart.js +199 -27
  11. package/cjs/chart/base/base-chart.js.map +1 -1
  12. package/cjs/chart/gauge/gauge-transformer.js +3 -2
  13. package/cjs/chart/gauge/gauge-transformer.js.map +1 -1
  14. package/cjs/chart/interface/chart.d.ts +1 -0
  15. package/cjs/chart/interface/chart.js.map +1 -1
  16. package/cjs/chart/pie/base/pie-transformer.js +2 -2
  17. package/cjs/chart/pie/base/pie-transformer.js.map +1 -1
  18. package/cjs/chart/polar/polar-transformer.js +1 -1
  19. package/cjs/chart/polar/polar-transformer.js.map +1 -1
  20. package/cjs/chart/polar/progress-like/progress-like-transformer.js +1 -1
  21. package/cjs/chart/polar/progress-like/progress-like-transformer.js.map +1 -1
  22. package/cjs/chart/progress/circular/circular-progress-transformer.js +2 -1
  23. package/cjs/chart/progress/circular/circular-progress-transformer.js.map +1 -1
  24. package/cjs/chart/progress/linear/linear-progress-transformer.js +1 -1
  25. package/cjs/chart/progress/linear/linear-progress-transformer.js.map +1 -1
  26. package/cjs/chart/radar/radar-transformer.js +3 -2
  27. package/cjs/chart/radar/radar-transformer.js.map +1 -1
  28. package/cjs/chart/range-area/range-area-transformer.js +2 -2
  29. package/cjs/chart/range-area/range-area-transformer.js.map +1 -1
  30. package/cjs/chart/rose/rose-transformer.js +2 -1
  31. package/cjs/chart/rose/rose-transformer.js.map +1 -1
  32. package/cjs/chart/util.d.ts +4 -1
  33. package/cjs/chart/util.js +40 -4
  34. package/cjs/chart/util.js.map +1 -1
  35. package/cjs/chart/waterfall/waterfall-transformer.js +2 -1
  36. package/cjs/chart/waterfall/waterfall-transformer.js.map +1 -1
  37. package/cjs/compile/compiler.js +11 -9
  38. package/cjs/compile/compiler.js.map +1 -1
  39. package/cjs/compile/data/compilable-data.d.ts +1 -1
  40. package/cjs/compile/data/compilable-data.js +1 -1
  41. package/cjs/compile/data/compilable-data.js.map +1 -1
  42. package/cjs/compile/grammar-item.d.ts +1 -1
  43. package/cjs/compile/grammar-item.js.map +1 -1
  44. package/cjs/compile/interface/compilable-item.d.ts +1 -1
  45. package/cjs/compile/interface/compilable-item.js.map +1 -1
  46. package/cjs/component/axis/base-axis.d.ts +2 -7
  47. package/cjs/component/axis/base-axis.js +26 -6
  48. package/cjs/component/axis/base-axis.js.map +1 -1
  49. package/cjs/component/axis/cartesian/band-axis.d.ts +1 -7
  50. package/cjs/component/axis/mixin/linear-axis-mixin.js +7 -10
  51. package/cjs/component/axis/mixin/linear-axis-mixin.js.map +1 -1
  52. package/cjs/component/axis/polar/band-axis.d.ts +2 -0
  53. package/cjs/component/axis/polar/band-axis.js +3 -0
  54. package/cjs/component/axis/polar/band-axis.js.map +1 -1
  55. package/cjs/component/axis/polar/linear-axis.js +3 -0
  56. package/cjs/component/axis/polar/linear-axis.js.map +1 -1
  57. package/cjs/component/base/base-component.d.ts +7 -7
  58. package/cjs/component/base/base-component.js +41 -6
  59. package/cjs/component/base/base-component.js.map +1 -1
  60. package/cjs/component/base/release-vrender-component.d.ts +10 -0
  61. package/cjs/component/base/release-vrender-component.js +37 -0
  62. package/cjs/component/base/release-vrender-component.js.map +1 -0
  63. package/cjs/component/brush/brush.d.ts +3 -7
  64. package/cjs/component/brush/brush.js +22 -5
  65. package/cjs/component/brush/brush.js.map +1 -1
  66. package/cjs/component/crosshair/base.d.ts +4 -7
  67. package/cjs/component/crosshair/base.js +30 -2
  68. package/cjs/component/crosshair/base.js.map +1 -1
  69. package/cjs/component/custom-mark/custom-mark.d.ts +4 -7
  70. package/cjs/component/custom-mark/custom-mark.js +27 -3
  71. package/cjs/component/custom-mark/custom-mark.js.map +1 -1
  72. package/cjs/component/data-zoom/data-filter-base-component.d.ts +3 -7
  73. package/cjs/component/data-zoom/data-filter-base-component.js +15 -2
  74. package/cjs/component/data-zoom/data-filter-base-component.js.map +1 -1
  75. package/cjs/component/data-zoom/data-zoom/data-zoom.d.ts +1 -0
  76. package/cjs/component/data-zoom/data-zoom/data-zoom.js +19 -1
  77. package/cjs/component/data-zoom/data-zoom/data-zoom.js.map +1 -1
  78. package/cjs/component/data-zoom/scroll-bar/scroll-bar.d.ts +1 -0
  79. package/cjs/component/data-zoom/scroll-bar/scroll-bar.js +12 -1
  80. package/cjs/component/data-zoom/scroll-bar/scroll-bar.js.map +1 -1
  81. package/cjs/component/geo/geo-coordinate.d.ts +1 -7
  82. package/cjs/component/index.js +1 -1
  83. package/cjs/component/indicator/indicator.d.ts +1 -0
  84. package/cjs/component/indicator/indicator.js +11 -2
  85. package/cjs/component/indicator/indicator.js.map +1 -1
  86. package/cjs/component/indicator/util.d.ts +4 -3
  87. package/cjs/component/indicator/util.js +1 -1
  88. package/cjs/component/indicator/util.js.map +1 -1
  89. package/cjs/component/label/base-label.d.ts +1 -7
  90. package/cjs/component/label/base-label.js +6 -2
  91. package/cjs/component/label/base-label.js.map +1 -1
  92. package/cjs/component/label/label.js +1 -1
  93. package/cjs/component/label/label.js.map +1 -1
  94. package/cjs/component/legend/base-legend.d.ts +2 -7
  95. package/cjs/component/legend/base-legend.js +20 -3
  96. package/cjs/component/legend/base-legend.js.map +1 -1
  97. package/cjs/component/marker/base-marker.d.ts +14 -7
  98. package/cjs/component/marker/base-marker.js +112 -12
  99. package/cjs/component/marker/base-marker.js.map +1 -1
  100. package/cjs/component/marker/mark-area/cartesian-mark-area.js +3 -3
  101. package/cjs/component/marker/mark-area/cartesian-mark-area.js.map +1 -1
  102. package/cjs/component/marker/mark-area/polar-mark-area.js +2 -2
  103. package/cjs/component/marker/mark-area/polar-mark-area.js.map +1 -1
  104. package/cjs/component/marker/mark-line/base-mark-line.js +2 -4
  105. package/cjs/component/marker/mark-line/base-mark-line.js.map +1 -1
  106. package/cjs/component/marker/mark-line/cartesian-mark-line.js +2 -2
  107. package/cjs/component/marker/mark-line/cartesian-mark-line.js.map +1 -1
  108. package/cjs/component/marker/mark-line/polar-mark-line.js +2 -2
  109. package/cjs/component/marker/mark-line/polar-mark-line.js.map +1 -1
  110. package/cjs/component/marker/mark-point/base-mark-point.js +26 -11
  111. package/cjs/component/marker/mark-point/base-mark-point.js.map +1 -1
  112. package/cjs/component/marker/mark-point/cartesian-mark-point.js +2 -2
  113. package/cjs/component/marker/mark-point/cartesian-mark-point.js.map +1 -1
  114. package/cjs/component/marker/mark-point/polar-mark-point.js +1 -1
  115. package/cjs/component/marker/mark-point/polar-mark-point.js.map +1 -1
  116. package/cjs/component/marker/utils.d.ts +4 -4
  117. package/cjs/component/marker/utils.js +27 -23
  118. package/cjs/component/marker/utils.js.map +1 -1
  119. package/cjs/component/player/player.d.ts +1 -0
  120. package/cjs/component/player/player.js +10 -0
  121. package/cjs/component/player/player.js.map +1 -1
  122. package/cjs/component/title/title.d.ts +1 -7
  123. package/cjs/component/title/title.js +6 -2
  124. package/cjs/component/title/title.js.map +1 -1
  125. package/cjs/component/tooltip/tooltip.d.ts +1 -0
  126. package/cjs/component/tooltip/tooltip.js +8 -0
  127. package/cjs/component/tooltip/tooltip.js.map +1 -1
  128. package/cjs/component/util.js +1 -1
  129. package/cjs/constant/attribute.js +1 -2
  130. package/cjs/constant/box-plot.js +2 -1
  131. package/cjs/constant/waterfall.js +1 -2
  132. package/cjs/core/expression-function.js +2 -1
  133. package/cjs/core/vchart.d.ts +5 -1
  134. package/cjs/core/vchart.js +30 -18
  135. package/cjs/core/vchart.js.map +1 -1
  136. package/cjs/data/data-view-utils.d.ts +5 -0
  137. package/cjs/data/data-view-utils.js +58 -0
  138. package/cjs/data/data-view-utils.js.map +1 -0
  139. package/cjs/data/initialize.js +1 -1
  140. package/cjs/data/transforms/box-plot.d.ts +4 -1
  141. package/cjs/data/transforms/box-plot.js +3 -3
  142. package/cjs/data/transforms/box-plot.js.map +1 -1
  143. package/cjs/data/transforms/correlation-center.d.ts +11 -4
  144. package/cjs/data/transforms/correlation-center.js +3 -2
  145. package/cjs/data/transforms/correlation-center.js.map +1 -1
  146. package/cjs/data/transforms/correlation.d.ts +18 -15
  147. package/cjs/data/transforms/correlation.js +22 -17
  148. package/cjs/data/transforms/correlation.js.map +1 -1
  149. package/cjs/data/transforms/funnel.d.ts +10 -8
  150. package/cjs/data/transforms/funnel.js +4 -3
  151. package/cjs/data/transforms/funnel.js.map +1 -1
  152. package/cjs/data/transforms/lookup.d.ts +3 -3
  153. package/cjs/data/transforms/lookup.js +12 -7
  154. package/cjs/data/transforms/lookup.js.map +1 -1
  155. package/cjs/data/transforms/map.d.ts +8 -2
  156. package/cjs/data/transforms/map.js +9 -6
  157. package/cjs/data/transforms/map.js.map +1 -1
  158. package/cjs/data/transforms/sankey.d.ts +12 -4
  159. package/cjs/data/transforms/sankey.js +18 -13
  160. package/cjs/data/transforms/sankey.js.map +1 -1
  161. package/cjs/data/transforms/stack-split.d.ts +2 -1
  162. package/cjs/data/transforms/stack-split.js +1 -1
  163. package/cjs/data/transforms/stack-split.js.map +1 -1
  164. package/cjs/data/transforms/treemap.d.ts +5 -3
  165. package/cjs/data/transforms/treemap.js +7 -6
  166. package/cjs/data/transforms/treemap.js.map +1 -1
  167. package/cjs/data/transforms/venn.d.ts +4 -2
  168. package/cjs/data/transforms/venn.js +4 -4
  169. package/cjs/data/transforms/venn.js.map +1 -1
  170. package/cjs/data/transforms/waterfall.d.ts +4 -2
  171. package/cjs/data/transforms/waterfall.js +7 -7
  172. package/cjs/data/transforms/waterfall.js.map +1 -1
  173. package/cjs/event/event.d.ts +4 -0
  174. package/cjs/event/event.js +26 -7
  175. package/cjs/event/event.js.map +1 -1
  176. package/cjs/mark/base/base-mark.d.ts +12 -2
  177. package/cjs/mark/base/base-mark.js +86 -23
  178. package/cjs/mark/base/base-mark.js.map +1 -1
  179. package/cjs/mark/component.d.ts +9 -0
  180. package/cjs/mark/component.js +51 -3
  181. package/cjs/mark/component.js.map +1 -1
  182. package/cjs/mark/group.js +1 -1
  183. package/cjs/mark/group.js.map +1 -1
  184. package/cjs/mark/interface/mark.d.ts +2 -0
  185. package/cjs/mark/interface/mark.js.map +1 -1
  186. package/cjs/model/base-model.d.ts +3 -15
  187. package/cjs/model/base-model.js.map +1 -1
  188. package/cjs/model/interface.d.ts +13 -0
  189. package/cjs/model/interface.js.map +1 -1
  190. package/cjs/region/region.d.ts +1 -7
  191. package/cjs/scale/color-ordinal-scale.d.ts +1 -0
  192. package/cjs/scale/color-ordinal-scale.js +3 -0
  193. package/cjs/scale/color-ordinal-scale.js.map +1 -1
  194. package/cjs/scale/global-scale.js +9 -2
  195. package/cjs/scale/global-scale.js.map +1 -1
  196. package/cjs/series/area/area.d.ts +2 -0
  197. package/cjs/series/area/area.js +6 -0
  198. package/cjs/series/area/area.js.map +1 -1
  199. package/cjs/series/bar/bar.d.ts +3 -0
  200. package/cjs/series/bar/bar.js +30 -4
  201. package/cjs/series/bar/bar.js.map +1 -1
  202. package/cjs/series/base/base-series.d.ts +10 -7
  203. package/cjs/series/base/base-series.js +78 -18
  204. package/cjs/series/base/base-series.js.map +1 -1
  205. package/cjs/series/base/constant.d.ts +3 -0
  206. package/cjs/series/base/constant.js +9 -1
  207. package/cjs/series/base/constant.js.map +1 -1
  208. package/cjs/series/box-plot/box-plot.d.ts +2 -0
  209. package/cjs/series/box-plot/box-plot.js +16 -4
  210. package/cjs/series/box-plot/box-plot.js.map +1 -1
  211. package/cjs/series/correlation/correlation.js +13 -11
  212. package/cjs/series/correlation/correlation.js.map +1 -1
  213. package/cjs/series/dot/dot.d.ts +12 -0
  214. package/cjs/series/dot/dot.js +16 -1
  215. package/cjs/series/dot/dot.js.map +1 -1
  216. package/cjs/series/funnel/funnel.js +5 -8
  217. package/cjs/series/funnel/funnel.js.map +1 -1
  218. package/cjs/series/heatmap/heatmap.d.ts +2 -0
  219. package/cjs/series/heatmap/heatmap.js +10 -0
  220. package/cjs/series/heatmap/heatmap.js.map +1 -1
  221. package/cjs/series/line/line.d.ts +2 -0
  222. package/cjs/series/line/line.js +6 -0
  223. package/cjs/series/line/line.js.map +1 -1
  224. package/cjs/series/map/map.js +3 -3
  225. package/cjs/series/map/map.js.map +1 -1
  226. package/cjs/series/mixin/line-mixin.d.ts +1 -0
  227. package/cjs/series/mixin/line-mixin.js +6 -1
  228. package/cjs/series/mixin/line-mixin.js.map +1 -1
  229. package/cjs/series/pie/pie.d.ts +3 -7
  230. package/cjs/series/pie/pie.js +16 -1
  231. package/cjs/series/pie/pie.js.map +1 -1
  232. package/cjs/series/polar/progress-like/progress-like.d.ts +2 -0
  233. package/cjs/series/polar/progress-like/progress-like.js +16 -1
  234. package/cjs/series/polar/progress-like/progress-like.js.map +1 -1
  235. package/cjs/series/polar/rose-like/rose-like.d.ts +2 -0
  236. package/cjs/series/polar/rose-like/rose-like.js +15 -1
  237. package/cjs/series/polar/rose-like/rose-like.js.map +1 -1
  238. package/cjs/series/progress/circular/circular.d.ts +2 -0
  239. package/cjs/series/progress/circular/circular.js +10 -1
  240. package/cjs/series/progress/circular/circular.js.map +1 -1
  241. package/cjs/series/progress/linear/linear.d.ts +2 -0
  242. package/cjs/series/progress/linear/linear.js +19 -1
  243. package/cjs/series/progress/linear/linear.js.map +1 -1
  244. package/cjs/series/sankey/sankey.js +35 -33
  245. package/cjs/series/sankey/sankey.js.map +1 -1
  246. package/cjs/series/scatter/scatter.d.ts +2 -0
  247. package/cjs/series/scatter/scatter.js +9 -1
  248. package/cjs/series/scatter/scatter.js.map +1 -1
  249. package/cjs/series/treemap/treemap.js +23 -20
  250. package/cjs/series/treemap/treemap.js.map +1 -1
  251. package/cjs/series/venn/venn.js +2 -2
  252. package/cjs/series/venn/venn.js.map +1 -1
  253. package/cjs/series/waterfall/waterfall.d.ts +2 -0
  254. package/cjs/series/waterfall/waterfall.js +36 -20
  255. package/cjs/series/waterfall/waterfall.js.map +1 -1
  256. package/cjs/util/graphic-state.d.ts +1 -0
  257. package/cjs/util/graphic-state.js +19 -4
  258. package/cjs/util/graphic-state.js.map +1 -1
  259. package/esm/chart/base/base-chart-transformer.d.ts +3 -0
  260. package/esm/chart/base/base-chart-transformer.js +24 -2
  261. package/esm/chart/base/base-chart-transformer.js.map +1 -1
  262. package/esm/chart/base/base-chart.d.ts +25 -9
  263. package/esm/chart/base/base-chart.js +192 -26
  264. package/esm/chart/base/base-chart.js.map +1 -1
  265. package/esm/chart/gauge/gauge-transformer.js +3 -2
  266. package/esm/chart/gauge/gauge-transformer.js.map +1 -1
  267. package/esm/chart/interface/chart.d.ts +1 -0
  268. package/esm/chart/interface/chart.js.map +1 -1
  269. package/esm/chart/pie/base/pie-transformer.js +2 -2
  270. package/esm/chart/pie/base/pie-transformer.js.map +1 -1
  271. package/esm/chart/polar/polar-transformer.js +1 -1
  272. package/esm/chart/polar/polar-transformer.js.map +1 -1
  273. package/esm/chart/polar/progress-like/progress-like-transformer.js +1 -1
  274. package/esm/chart/polar/progress-like/progress-like-transformer.js.map +1 -1
  275. package/esm/chart/progress/circular/circular-progress-transformer.js +2 -1
  276. package/esm/chart/progress/circular/circular-progress-transformer.js.map +1 -1
  277. package/esm/chart/progress/linear/linear-progress-transformer.js +1 -1
  278. package/esm/chart/progress/linear/linear-progress-transformer.js.map +1 -1
  279. package/esm/chart/radar/radar-transformer.js +3 -2
  280. package/esm/chart/radar/radar-transformer.js.map +1 -1
  281. package/esm/chart/range-area/range-area-transformer.js +2 -2
  282. package/esm/chart/range-area/range-area-transformer.js.map +1 -1
  283. package/esm/chart/rose/rose-transformer.js +2 -1
  284. package/esm/chart/rose/rose-transformer.js.map +1 -1
  285. package/esm/chart/util.d.ts +4 -1
  286. package/esm/chart/util.js +34 -1
  287. package/esm/chart/util.js.map +1 -1
  288. package/esm/chart/waterfall/waterfall-transformer.js +2 -1
  289. package/esm/chart/waterfall/waterfall-transformer.js.map +1 -1
  290. package/esm/compile/compiler.js +11 -9
  291. package/esm/compile/compiler.js.map +1 -1
  292. package/esm/compile/data/compilable-data.d.ts +1 -1
  293. package/esm/compile/data/compilable-data.js +1 -1
  294. package/esm/compile/data/compilable-data.js.map +1 -1
  295. package/esm/compile/grammar-item.d.ts +1 -1
  296. package/esm/compile/grammar-item.js.map +1 -1
  297. package/esm/compile/interface/compilable-item.d.ts +1 -1
  298. package/esm/compile/interface/compilable-item.js.map +1 -1
  299. package/esm/component/axis/base-axis.d.ts +2 -7
  300. package/esm/component/axis/base-axis.js +26 -5
  301. package/esm/component/axis/base-axis.js.map +1 -1
  302. package/esm/component/axis/cartesian/band-axis.d.ts +1 -7
  303. package/esm/component/axis/mixin/linear-axis-mixin.js +7 -10
  304. package/esm/component/axis/mixin/linear-axis-mixin.js.map +1 -1
  305. package/esm/component/axis/polar/band-axis.d.ts +2 -0
  306. package/esm/component/axis/polar/band-axis.js +3 -0
  307. package/esm/component/axis/polar/band-axis.js.map +1 -1
  308. package/esm/component/axis/polar/linear-axis.js +3 -0
  309. package/esm/component/axis/polar/linear-axis.js.map +1 -1
  310. package/esm/component/base/base-component.d.ts +7 -7
  311. package/esm/component/base/base-component.js +41 -5
  312. package/esm/component/base/base-component.js.map +1 -1
  313. package/esm/component/base/release-vrender-component.d.ts +10 -0
  314. package/esm/component/base/release-vrender-component.js +24 -0
  315. package/esm/component/base/release-vrender-component.js.map +1 -0
  316. package/esm/component/brush/brush.d.ts +3 -7
  317. package/esm/component/brush/brush.js +20 -4
  318. package/esm/component/brush/brush.js.map +1 -1
  319. package/esm/component/crosshair/base.d.ts +4 -7
  320. package/esm/component/crosshair/base.js +26 -2
  321. package/esm/component/crosshair/base.js.map +1 -1
  322. package/esm/component/custom-mark/custom-mark.d.ts +4 -7
  323. package/esm/component/custom-mark/custom-mark.js +27 -2
  324. package/esm/component/custom-mark/custom-mark.js.map +1 -1
  325. package/esm/component/data-zoom/data-filter-base-component.d.ts +3 -7
  326. package/esm/component/data-zoom/data-filter-base-component.js +14 -2
  327. package/esm/component/data-zoom/data-filter-base-component.js.map +1 -1
  328. package/esm/component/data-zoom/data-zoom/data-zoom.d.ts +1 -0
  329. package/esm/component/data-zoom/data-zoom/data-zoom.js +20 -0
  330. package/esm/component/data-zoom/data-zoom/data-zoom.js.map +1 -1
  331. package/esm/component/data-zoom/scroll-bar/scroll-bar.d.ts +1 -0
  332. package/esm/component/data-zoom/scroll-bar/scroll-bar.js +12 -1
  333. package/esm/component/data-zoom/scroll-bar/scroll-bar.js.map +1 -1
  334. package/esm/component/geo/geo-coordinate.d.ts +1 -7
  335. package/esm/component/index.js +1 -1
  336. package/esm/component/indicator/indicator.d.ts +1 -0
  337. package/esm/component/indicator/indicator.js +11 -2
  338. package/esm/component/indicator/indicator.js.map +1 -1
  339. package/esm/component/indicator/util.d.ts +4 -3
  340. package/esm/component/indicator/util.js +2 -2
  341. package/esm/component/indicator/util.js.map +1 -1
  342. package/esm/component/label/base-label.d.ts +1 -7
  343. package/esm/component/label/base-label.js +5 -1
  344. package/esm/component/label/base-label.js.map +1 -1
  345. package/esm/component/label/label.js +1 -1
  346. package/esm/component/label/label.js.map +1 -1
  347. package/esm/component/legend/base-legend.d.ts +2 -7
  348. package/esm/component/legend/base-legend.js +20 -2
  349. package/esm/component/legend/base-legend.js.map +1 -1
  350. package/esm/component/marker/base-marker.d.ts +14 -7
  351. package/esm/component/marker/base-marker.js +113 -11
  352. package/esm/component/marker/base-marker.js.map +1 -1
  353. package/esm/component/marker/mark-area/cartesian-mark-area.js +3 -3
  354. package/esm/component/marker/mark-area/cartesian-mark-area.js.map +1 -1
  355. package/esm/component/marker/mark-area/polar-mark-area.js +2 -2
  356. package/esm/component/marker/mark-area/polar-mark-area.js.map +1 -1
  357. package/esm/component/marker/mark-line/base-mark-line.js +2 -4
  358. package/esm/component/marker/mark-line/base-mark-line.js.map +1 -1
  359. package/esm/component/marker/mark-line/cartesian-mark-line.js +2 -2
  360. package/esm/component/marker/mark-line/cartesian-mark-line.js.map +1 -1
  361. package/esm/component/marker/mark-line/polar-mark-line.js +2 -2
  362. package/esm/component/marker/mark-line/polar-mark-line.js.map +1 -1
  363. package/esm/component/marker/mark-point/base-mark-point.js +24 -11
  364. package/esm/component/marker/mark-point/base-mark-point.js.map +1 -1
  365. package/esm/component/marker/mark-point/cartesian-mark-point.js +1 -1
  366. package/esm/component/marker/mark-point/cartesian-mark-point.js.map +1 -1
  367. package/esm/component/marker/mark-point/polar-mark-point.js +1 -1
  368. package/esm/component/marker/mark-point/polar-mark-point.js.map +1 -1
  369. package/esm/component/marker/utils.d.ts +4 -4
  370. package/esm/component/marker/utils.js +27 -23
  371. package/esm/component/marker/utils.js.map +1 -1
  372. package/esm/component/player/player.d.ts +1 -0
  373. package/esm/component/player/player.js +10 -0
  374. package/esm/component/player/player.js.map +1 -1
  375. package/esm/component/title/title.d.ts +1 -7
  376. package/esm/component/title/title.js +6 -2
  377. package/esm/component/title/title.js.map +1 -1
  378. package/esm/component/tooltip/tooltip.d.ts +1 -0
  379. package/esm/component/tooltip/tooltip.js +9 -1
  380. package/esm/component/tooltip/tooltip.js.map +1 -1
  381. package/esm/component/util.js +1 -1
  382. package/esm/constant/attribute.js +1 -2
  383. package/esm/constant/box-plot.js +2 -1
  384. package/esm/constant/waterfall.js +1 -2
  385. package/esm/core/expression-function.js +2 -1
  386. package/esm/core/vchart.d.ts +5 -1
  387. package/esm/core/vchart.js +31 -18
  388. package/esm/core/vchart.js.map +1 -1
  389. package/esm/data/data-view-utils.d.ts +5 -0
  390. package/esm/data/data-view-utils.js +46 -0
  391. package/esm/data/data-view-utils.js.map +1 -0
  392. package/esm/data/initialize.js +1 -1
  393. package/esm/data/transforms/box-plot.d.ts +4 -1
  394. package/esm/data/transforms/box-plot.js +4 -4
  395. package/esm/data/transforms/box-plot.js.map +1 -1
  396. package/esm/data/transforms/correlation-center.d.ts +11 -4
  397. package/esm/data/transforms/correlation-center.js +4 -2
  398. package/esm/data/transforms/correlation-center.js.map +1 -1
  399. package/esm/data/transforms/correlation.d.ts +18 -15
  400. package/esm/data/transforms/correlation.js +13 -8
  401. package/esm/data/transforms/correlation.js.map +1 -1
  402. package/esm/data/transforms/funnel.d.ts +10 -8
  403. package/esm/data/transforms/funnel.js +5 -3
  404. package/esm/data/transforms/funnel.js.map +1 -1
  405. package/esm/data/transforms/lookup.d.ts +3 -3
  406. package/esm/data/transforms/lookup.js +12 -6
  407. package/esm/data/transforms/lookup.js.map +1 -1
  408. package/esm/data/transforms/map.d.ts +8 -2
  409. package/esm/data/transforms/map.js +11 -6
  410. package/esm/data/transforms/map.js.map +1 -1
  411. package/esm/data/transforms/sankey.d.ts +12 -4
  412. package/esm/data/transforms/sankey.js +19 -14
  413. package/esm/data/transforms/sankey.js.map +1 -1
  414. package/esm/data/transforms/stack-split.d.ts +2 -1
  415. package/esm/data/transforms/stack-split.js +2 -2
  416. package/esm/data/transforms/stack-split.js.map +1 -1
  417. package/esm/data/transforms/treemap.d.ts +5 -3
  418. package/esm/data/transforms/treemap.js +8 -5
  419. package/esm/data/transforms/treemap.js.map +1 -1
  420. package/esm/data/transforms/venn.d.ts +4 -2
  421. package/esm/data/transforms/venn.js +5 -3
  422. package/esm/data/transforms/venn.js.map +1 -1
  423. package/esm/data/transforms/waterfall.d.ts +4 -2
  424. package/esm/data/transforms/waterfall.js +7 -8
  425. package/esm/data/transforms/waterfall.js.map +1 -1
  426. package/esm/event/event.d.ts +4 -0
  427. package/esm/event/event.js +26 -7
  428. package/esm/event/event.js.map +1 -1
  429. package/esm/mark/base/base-mark.d.ts +12 -2
  430. package/esm/mark/base/base-mark.js +86 -22
  431. package/esm/mark/base/base-mark.js.map +1 -1
  432. package/esm/mark/component.d.ts +9 -0
  433. package/esm/mark/component.js +51 -2
  434. package/esm/mark/component.js.map +1 -1
  435. package/esm/mark/group.js +1 -1
  436. package/esm/mark/group.js.map +1 -1
  437. package/esm/mark/interface/mark.d.ts +2 -0
  438. package/esm/mark/interface/mark.js.map +1 -1
  439. package/esm/model/base-model.d.ts +3 -15
  440. package/esm/model/base-model.js.map +1 -1
  441. package/esm/model/interface.d.ts +13 -0
  442. package/esm/model/interface.js.map +1 -1
  443. package/esm/region/region.d.ts +1 -7
  444. package/esm/scale/color-ordinal-scale.d.ts +1 -0
  445. package/esm/scale/color-ordinal-scale.js +3 -0
  446. package/esm/scale/color-ordinal-scale.js.map +1 -1
  447. package/esm/scale/global-scale.js +9 -1
  448. package/esm/scale/global-scale.js.map +1 -1
  449. package/esm/series/area/area.d.ts +2 -0
  450. package/esm/series/area/area.js +7 -1
  451. package/esm/series/area/area.js.map +1 -1
  452. package/esm/series/bar/bar.d.ts +3 -0
  453. package/esm/series/bar/bar.js +30 -4
  454. package/esm/series/bar/bar.js.map +1 -1
  455. package/esm/series/base/base-series.d.ts +10 -7
  456. package/esm/series/base/base-series.js +73 -16
  457. package/esm/series/base/base-series.js.map +1 -1
  458. package/esm/series/base/constant.d.ts +3 -0
  459. package/esm/series/base/constant.js +10 -0
  460. package/esm/series/base/constant.js.map +1 -1
  461. package/esm/series/box-plot/box-plot.d.ts +2 -0
  462. package/esm/series/box-plot/box-plot.js +15 -4
  463. package/esm/series/box-plot/box-plot.js.map +1 -1
  464. package/esm/series/correlation/correlation.js +13 -11
  465. package/esm/series/correlation/correlation.js.map +1 -1
  466. package/esm/series/dot/dot.d.ts +12 -0
  467. package/esm/series/dot/dot.js +17 -0
  468. package/esm/series/dot/dot.js.map +1 -1
  469. package/esm/series/funnel/funnel.js +5 -8
  470. package/esm/series/funnel/funnel.js.map +1 -1
  471. package/esm/series/heatmap/heatmap.d.ts +2 -0
  472. package/esm/series/heatmap/heatmap.js +10 -0
  473. package/esm/series/heatmap/heatmap.js.map +1 -1
  474. package/esm/series/line/line.d.ts +2 -0
  475. package/esm/series/line/line.js +7 -1
  476. package/esm/series/line/line.js.map +1 -1
  477. package/esm/series/map/map.js +3 -3
  478. package/esm/series/map/map.js.map +1 -1
  479. package/esm/series/mixin/line-mixin.d.ts +1 -0
  480. package/esm/series/mixin/line-mixin.js +5 -0
  481. package/esm/series/mixin/line-mixin.js.map +1 -1
  482. package/esm/series/pie/pie.d.ts +3 -7
  483. package/esm/series/pie/pie.js +17 -0
  484. package/esm/series/pie/pie.js.map +1 -1
  485. package/esm/series/polar/progress-like/progress-like.d.ts +2 -0
  486. package/esm/series/polar/progress-like/progress-like.js +17 -0
  487. package/esm/series/polar/progress-like/progress-like.js.map +1 -1
  488. package/esm/series/polar/rose-like/rose-like.d.ts +2 -0
  489. package/esm/series/polar/rose-like/rose-like.js +16 -0
  490. package/esm/series/polar/rose-like/rose-like.js.map +1 -1
  491. package/esm/series/progress/circular/circular.d.ts +2 -0
  492. package/esm/series/progress/circular/circular.js +11 -0
  493. package/esm/series/progress/circular/circular.js.map +1 -1
  494. package/esm/series/progress/linear/linear.d.ts +2 -0
  495. package/esm/series/progress/linear/linear.js +20 -0
  496. package/esm/series/progress/linear/linear.js.map +1 -1
  497. package/esm/series/sankey/sankey.js +35 -33
  498. package/esm/series/sankey/sankey.js.map +1 -1
  499. package/esm/series/scatter/scatter.d.ts +2 -0
  500. package/esm/series/scatter/scatter.js +10 -0
  501. package/esm/series/scatter/scatter.js.map +1 -1
  502. package/esm/series/treemap/treemap.js +23 -20
  503. package/esm/series/treemap/treemap.js.map +1 -1
  504. package/esm/series/venn/venn.js +2 -2
  505. package/esm/series/venn/venn.js.map +1 -1
  506. package/esm/series/waterfall/waterfall.d.ts +2 -0
  507. package/esm/series/waterfall/waterfall.js +36 -20
  508. package/esm/series/waterfall/waterfall.js.map +1 -1
  509. package/esm/util/graphic-state.d.ts +1 -0
  510. package/esm/util/graphic-state.js +16 -3
  511. package/esm/util/graphic-state.js.map +1 -1
  512. package/package.json +9 -8
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/chart/base/base-chart.ts"],"names":[],"mappings":"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","file":"base-chart.js","sourcesContent":["import type { IRegionConstructor } from '../../region/interface';\nimport { ChartData } from '../chart-meta/data';\nimport type { ICrossHair } from '../../component/crosshair/interface/spec';\nimport type { IDimensionInfo } from '../../event/events/dimension/interface';\nimport type {\n Datum,\n IMarkStateSpec,\n IVisual,\n IVisualSpecScale,\n IRegionQuerier,\n MaybeArray,\n IPadding,\n IRect,\n StringOrNumber,\n IChartSpec,\n IDataValues,\n ILayoutRect,\n ILayoutOrientPadding\n} from '../../typings';\nimport type { ILayoutItem, LayoutCallBack } from '../../layout/interface';\nimport { GlobalScale } from '../../scale/global-scale';\nimport type { ILayoutModelState, IModel, IModelOption, IModelSpecInfo, IUpdateSpecResult } from '../../model/interface';\nimport type {\n IChart,\n IChartOption,\n IChartEvaluateOption,\n DimensionIndexOption,\n IChartSpecTransformerOption,\n IChartSpecTransformer\n} from '../interface';\nimport type { ICartesianSeries, ISeries, ISeriesConstructor } from '../../series/interface';\n// eslint-disable-next-line no-duplicate-imports\nimport type { IRegion } from '../../region/interface';\nimport { ComponentTypeEnum } from '../../component/interface';\n// eslint-disable-next-line no-duplicate-imports\nimport type { IComponent, IComponentConstructor } from '../../component/interface';\nimport type { IMark, IMarkGraphic, IRectMark } from '../../mark/interface';\n// eslint-disable-next-line no-duplicate-imports\nimport { MarkTypeEnum } from '../../mark/interface';\nimport type { IEvent } from '../../event/interface';\nimport type { DataView } from '@visactor/vdataset';\n// eslint-disable-next-line no-duplicate-imports\nimport type { DataSet } from '@visactor/vdataset';\nimport { Factory } from '../../core/factory';\nimport { Event } from '../../event/event';\nimport {\n isArray,\n isValid,\n createID,\n calcPadding,\n normalizeLayoutPaddingSpec,\n array,\n isCollectionMark,\n getDatumOfGraphic\n} from '../../util';\nimport { BaseModel } from '../../model/base-model';\nimport { BaseMark } from '../../mark/base/base-mark';\nimport { DEFAULT_CHART_WIDTH, DEFAULT_CHART_HEIGHT } from '../../constant/base';\n// eslint-disable-next-line no-duplicate-imports\nimport type { IParserOptions } from '@visactor/vdataset';\nimport type { IBoundsLike, Maybe } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { isFunction, isEmpty, isNil, isString, isEqual, pickWithout } from '@visactor/vutils';\nimport { getDataScheme } from '../../theme/color-scheme/util';\nimport { CompilableBase } from '../../compile/compilable-base';\nimport type { IStateInfo } from '../../compile/mark/interface';\n// eslint-disable-next-line no-duplicate-imports\nimport { STATE_VALUE_ENUM } from '../../compile/mark/interface';\nimport { ChartEvent, HOOK_EVENT } from '../../constant/event';\nimport type { IGlobalScale } from '../../scale/interface';\nimport { DimensionEventEnum } from '../../event/events/dimension/interface';\nimport type { ITooltip } from '../../component/tooltip/interface';\nimport { calculateChartSize, mergeUpdateResult } from '../util';\nimport { isDiscrete } from '@visactor/vscale';\nimport { updateDataViewInData } from '../../data/initialize';\nimport { LayoutZIndex } from '../../constant/layout';\nimport type { IAxis } from '../../component/axis/interface/common';\nimport type { IMorphConfig } from '../../animation/spec';\nimport { Interaction } from '../../interaction/interaction';\nimport type { IInteraction } from '../../interaction/interface/common';\nimport type { IBaseTriggerOptions } from '../../interaction/interface/trigger';\nimport { animationConfig, userAnimationConfig } from '../../animation/utils';\n\nexport class BaseChart<T extends IChartSpec> extends CompilableBase implements IChart {\n readonly type: string = 'chart';\n readonly seriesType: string;\n readonly transformerConstructor: new (option: IChartSpecTransformerOption) => IChartSpecTransformer;\n readonly id: number = createID();\n\n //FIXME: 转换后的 spec 需要声明 ITransformedChartSpec\n protected _spec: T;\n getSpec() {\n return this._spec;\n }\n setSpec(s: T) {\n // TODO 通过spec设置进行图表更新\n this._spec = s;\n }\n\n getOption() {\n return this._option;\n }\n\n protected _regions: IRegion[] = [];\n // 系列\n protected _series: ISeries[] = [];\n // 组件\n protected _components: IComponent[] = [];\n\n // 布局\n protected _layoutFunc: LayoutCallBack;\n protected _layoutRect: IRect = {\n x: 0,\n y: 0,\n width: DEFAULT_CHART_WIDTH,\n height: DEFAULT_CHART_HEIGHT\n };\n getLayoutRect() {\n return this._layoutRect;\n }\n protected _viewRect: ILayoutRect = {\n width: DEFAULT_CHART_WIDTH,\n height: DEFAULT_CHART_HEIGHT\n };\n getViewRect() {\n return this._viewRect;\n }\n protected _viewBox: IBoundsLike = {\n x1: 0,\n y1: 0,\n x2: DEFAULT_CHART_WIDTH,\n y2: DEFAULT_CHART_HEIGHT\n };\n\n protected _layoutTag: boolean = true;\n getLayoutTag() {\n return this._layoutTag;\n }\n setLayoutTag(tag: boolean, morphConfig?: IMorphConfig, renderNextTick: boolean = true): boolean {\n this._layoutTag = tag;\n const compiler = this.getCompiler();\n\n if (compiler) {\n compiler.updateLayoutTag();\n tag && renderNextTick && compiler.renderNextTick(morphConfig);\n }\n return this._layoutTag;\n }\n\n resetLayoutItemTag() {\n this.getLayoutElements().forEach(element => element.setWillLayoutTag());\n }\n\n // 模块参数\n protected _modelOption: IModelOption;\n\n getModelOption() {\n return this._modelOption;\n }\n\n // 全局通道\n // protected _globalScale: { [key: string]: IBaseScale } = {};\n protected _globalScale: IGlobalScale;\n\n getGlobalScale() {\n return this._globalScale;\n }\n\n // mark & model 的 id 映射\n protected _idMap: Map<number, IModel | IMark> = new Map();\n\n protected _event: IEvent;\n getEvent() {\n return this._event;\n }\n\n // data\n protected _dataSet: DataSet;\n protected _chartData: ChartData;\n get chartData() {\n return this._chartData;\n }\n\n protected declare _option: IChartOption;\n\n // 模块内的需要动态影像图表的属性\n readonly state: ILayoutModelState = {\n layoutUpdateRank: 1\n };\n\n // stack\n\n padding: IPadding = { top: 0, left: 0, right: 0, bottom: 0 };\n protected _paddingSpec: ILayoutOrientPadding;\n\n protected _canvasRect: ILayoutRect;\n\n // background\n protected _backgroundMark: IRectMark;\n\n protected _interaction: IInteraction;\n\n protected _setModelOption(): void {\n // implement in subclass\n }\n\n constructor(spec: T, option: IChartOption) {\n super(option);\n this._paddingSpec = normalizeLayoutPaddingSpec(spec.padding ?? option.getTheme('padding'));\n\n this._event = new Event(option.eventDispatcher, option.mode);\n this._dataSet = option.dataSet;\n this._chartData = new ChartData(this._dataSet);\n this._modelOption = {\n ...option,\n mode: this._option.mode,\n map: this._idMap,\n getChartLayoutRect: () => this._layoutRect,\n getChartViewRect: () => this._viewRect,\n getChart: () => this,\n globalScale: this._globalScale,\n onError: this._option?.onError,\n disableTriggerEvent: this._option?.disableTriggerEvent === true,\n componentShowContent: this._option?.componentShowContent,\n getSeriesData: this._chartData.getSeriesData.bind(this._chartData),\n // @ts-ignore\n dispatchEvent: (eType, params) => this._option.globalInstance.event.emit(eType, params)\n };\n\n if ((this as any)._setModelOption) {\n (this as any)._setModelOption();\n }\n\n this._spec = spec;\n }\n\n created(transformer: Maybe<IChartSpecTransformer>) {\n // data\n this._chartData.parseData(this._spec.data);\n // scale\n this._createGlobalScale();\n // background\n this._createBackground();\n // 基础内容\n this._createLayout();\n // 基于spec 创建元素。\n // region\n transformer.forEachRegionInSpec(this._spec, this._createRegion.bind(this));\n // series\n transformer.forEachSeriesInSpec(this._spec, this._createSeries.bind(this));\n // components\n transformer.forEachComponentInSpec(this._spec, this._createComponent.bind(this), this._option.getSpecInfo());\n }\n _initInteractions() {\n if (this._option.disableTriggerEvent) {\n return;\n }\n\n // 创建交互\n this._interaction = new Interaction();\n\n const series = this.getAllSeries();\n const mergedTriggers: Partial<IBaseTriggerOptions>[] = [];\n const groupedTriggers: Array<{\n regionId: number;\n config: Partial<IBaseTriggerOptions>;\n trigger: Partial<IBaseTriggerOptions>;\n }> = [];\n\n series.forEach(s => {\n const triggers = s.getInteractionTriggers();\n\n if (triggers && triggers.length) {\n const regionId = s.getRegion().id;\n\n triggers.forEach(({ trigger, marks }) => {\n const sameTrigger = groupedTriggers.find(item => item.regionId === regionId && isEqual(item.config, trigger));\n\n if (sameTrigger) {\n sameTrigger.trigger.marks.push(...marks);\n } else {\n const mergedTrigger = { ...trigger, marks: [...marks] };\n\n groupedTriggers.push({\n regionId,\n config: { ...trigger },\n trigger: mergedTrigger\n });\n mergedTriggers.push(mergedTrigger);\n }\n });\n }\n });\n\n mergedTriggers.forEach(trigger => {\n const triggerInstance = Factory.createInteractionTrigger((trigger as any).type, {\n ...trigger,\n event: this._event,\n interaction: this._interaction\n });\n\n if (triggerInstance) {\n triggerInstance.init();\n this._interaction.addTrigger(triggerInstance);\n }\n });\n }\n\n init() {\n (this as any)._beforeInit?.();\n // 元素创建完毕后再执行各元素的初始化 方便各元素能获取到其他模块\n this._regions.forEach(r => r.init({}));\n this._series.forEach(s => s.init({}));\n this._components.forEach(c => c.init({ dataSet: this._dataSet }));\n\n // event\n this._initEvent();\n\n (this as any)._initStack?.();\n\n // data flow start\n this.reDataFlow();\n\n this._initInteractions();\n\n this.initStageAnimation();\n }\n\n initStageAnimation() {\n const compiler = this._option.getCompiler();\n if (!compiler?.setStageAnimationConfig) {\n return;\n }\n compiler.setStageAnimationConfig(\n animationConfig(\n {}, // Factory.getAnimationInKey('stage')?.({}, null),\n userAnimationConfig('stage', this._spec as any, {}),\n null\n )\n );\n }\n\n reDataFlow() {\n this._series.forEach(s => s.getRawData()?.markRunning());\n this._series.forEach(s => s.fillData());\n this.updateGlobalScaleDomain();\n }\n\n onResize(width: number, height: number, reRender: boolean = true): void {\n const canvasRect = {\n width,\n height\n };\n this._canvasRect = canvasRect;\n this._updateLayoutRect(this._option.viewBox);\n this.resetLayoutItemTag();\n this.setLayoutTag(true, null, reRender);\n }\n\n updateViewBox(viewBox: IBoundsLike, reLayout: boolean) {\n this._option.viewBox = viewBox;\n this._updateLayoutRect(viewBox);\n this.resetLayoutItemTag();\n this.setLayoutTag(true, null, reLayout);\n }\n\n private _createBackground() {\n const bg = this._spec.background;\n if (!bg || typeof bg !== 'object' || isValid(bg.gradient)) {\n return;\n }\n const backgroundStyle = pickWithout(bg, ['x', 'y', 'width', 'height', 'x1', 'y1', 'image']);\n (backgroundStyle as any).background = (bg as any).image;\n\n this._backgroundMark = Factory.createMark(MarkTypeEnum.group, 'chart-background', {\n model: this as any,\n map: this._option.map,\n getCompiler: this.getCompiler,\n globalScale: this._globalScale\n }) as IRectMark;\n this._backgroundMark.created();\n this._backgroundMark.setStyle({\n ...backgroundStyle,\n x: () => this._viewBox.x1,\n y: () => this._viewBox.y1,\n width: () => this._viewBox.x2 - this._viewBox.x1,\n height: () => this._viewBox.y2 - this._viewBox.y1\n });\n this._backgroundMark.setMarkConfig({\n zIndex: LayoutZIndex.SeriesGroup - 2\n });\n\n this.getCompiler().addRootMark(this._backgroundMark);\n }\n\n protected _createRegion(constructor: IRegionConstructor, specInfo: IModelSpecInfo) {\n if (!constructor) {\n return;\n }\n\n const { spec, ...others } = specInfo;\n const region = new constructor(spec, {\n ...this._modelOption,\n ...others\n });\n if (region) {\n region.created();\n this._regions.push(region);\n }\n }\n\n protected _createSeries(constructor: ISeriesConstructor, specInfo: IModelSpecInfo) {\n if (!constructor) {\n return;\n }\n\n const { spec, ...others } = specInfo;\n\n let region: IRegion | undefined;\n if (isValid(spec.regionId)) {\n region = this.getRegionsInUserId(spec.regionId);\n } else if (isValid(spec.regionIndex)) {\n region = this.getRegionsInIndex([spec.regionIndex])[0];\n }\n\n if (!region && !(region = this._regions[0])) {\n return;\n }\n\n const series = new constructor(spec, {\n ...this._modelOption,\n ...others,\n type: spec.type,\n region,\n globalScale: this._globalScale,\n sourceDataList: this._chartData.dataList\n });\n\n if (series) {\n series.created();\n this._series.push(series);\n region.addSeries(series);\n }\n }\n\n getAllSeries = (): ISeries[] => {\n return this._series ?? [];\n };\n\n getSeriesById(id: number): ISeries | undefined {\n return this._series.find(x => x.id === id);\n }\n\n protected _createComponent(constructor: IComponentConstructor, specInfo: IModelSpecInfo) {\n const component = constructor.createComponent(specInfo, {\n ...this._modelOption,\n type: constructor.type,\n getAllRegions: this.getAllRegions,\n getRegionsInIndex: this.getRegionsInIndex,\n getRegionsInIds: this.getRegionsInIds,\n getRegionsInUserIdOrIndex: this.getRegionsInUserIdOrIndex,\n getAllSeries: this.getAllSeries,\n getSeriesInIndex: this.getSeriesInIndex,\n getSeriesInIds: this.getSeriesInIds,\n getSeriesInUserIdOrIndex: this.getSeriesInUserIdOrIndex,\n getAllComponents: this.getComponents,\n getComponentByIndex: this.getComponentByIndex,\n getComponentByUserId: this.getComponentByUserId,\n getComponentsByKey: this.getComponentsByKey,\n getComponentsByType: this.getComponentsByType\n });\n if (!component) {\n return;\n }\n component.created();\n this._components.push(component);\n }\n\n getAllComponents(): IComponent[] {\n return this._components;\n }\n\n getAllModels(): IModel[] {\n return [].concat(this.getAllSeries(), this.getAllComponents(), this.getAllRegions());\n }\n\n getModelInFilter(filter: string | { type: string; index: number } | ((model: IModel) => boolean)) {\n if (isString(filter)) {\n return this.getAllModels().find(m => m.userId === filter);\n } else if (isFunction(filter)) {\n return this.getAllModels().find(m => filter(m));\n }\n let index = 0;\n return this.getAllModels().find(m => {\n if ((m.specKey ?? m.type) === filter.type) {\n if (index === filter.index) {\n return true;\n }\n index++;\n }\n return false;\n });\n }\n\n private _createLayout() {\n this._updateLayoutRect(this._option.viewBox);\n this._initLayoutFunc();\n }\n\n setLayout(layout: LayoutCallBack) {\n // 统一自定义 layout 到 option 中\n this._option.layout = layout;\n this._initLayoutFunc();\n }\n\n /** 可以通过设置 layout = null 来取消自定义布局。启用spec上的布局配置 */\n private _initLayoutFunc() {\n this._layoutFunc = this._option.layout;\n if (!this._layoutFunc) {\n const constructor = Factory.getLayoutInKey(this._spec.layout?.type ?? 'base');\n if (constructor) {\n const layout = new constructor(this._spec.layout, {\n onError: this._option?.onError\n });\n this._layoutFunc = layout.layoutItems.bind(layout);\n }\n }\n }\n\n layout(): void {\n this._option.performanceHook?.beforeLayoutWithSceneGraph?.(this._option.globalInstance);\n if (this.getLayoutTag()) {\n this._event.emit(ChartEvent.layoutStart, { chart: this, vchart: this._option.globalInstance });\n\n this.onLayoutStart();\n const elements = this.getLayoutElements();\n this._layoutFunc(this, elements, this._layoutRect, this._viewBox);\n this._event.emit(ChartEvent.afterLayout, { elements, chart: this });\n this.setLayoutTag(false);\n this.onLayoutEnd();\n\n this._event.emit(ChartEvent.layoutEnd, { chart: this, vchart: this._option.globalInstance });\n }\n this._option.performanceHook?.afterLayoutWithSceneGraph?.(this._option.globalInstance);\n }\n\n // 通知所有需要通知的元素 onLayout 钩子\n onLayoutStart() {\n const elements = this.getAllModels();\n elements.forEach(element => element.onLayoutStart(this._layoutRect, this._viewRect));\n }\n\n // 通知所有需要通知的元素 onLayoutEnd 钩子\n onLayoutEnd() {\n const elements = this.getAllModels();\n elements.forEach(element => {\n // series.onLayoutEnd will be called by region model\n if (element.modelType !== 'series') {\n element.onLayoutEnd();\n }\n });\n }\n\n onEvaluateEnd(option: IChartEvaluateOption) {\n const elements = [...this._components, ...this._regions, ...this._series];\n elements.forEach(element => element.onEvaluateEnd(option));\n }\n\n onBeforeRender() {\n const elements = [...this._components, ...this._regions, ...this._series];\n elements.forEach(element => element.onBeforeRender());\n }\n\n getLayoutElements(): ILayoutItem[] {\n return this.getAllModels()\n .map(i => i.layout)\n .filter(i => !!i);\n }\n\n // 区域\n getRegionsInIndex = (index?: number[]): IRegion[] => {\n if (!index || index.length === 0) {\n return [this._regions[0]];\n }\n return this._regions.filter((_r, i) => index.includes(i));\n };\n\n getAllRegions = () => {\n return this._regions;\n };\n\n getRegionsInIds = (ids: number[]): IRegion[] => {\n if (!ids) {\n return [];\n }\n return this._regions.filter(r => ids.includes(r.id));\n };\n\n getRegionsInQuerier = (region?: MaybeArray<IRegionQuerier>) => {\n if (region) {\n return this._regions.filter((r, index) => {\n return array(region).some(\n regionFilter =>\n (isValid(regionFilter.regionId) && regionFilter.regionId === r.userId) || regionFilter.regionIndex === index\n );\n });\n }\n return this._regions;\n };\n\n getRegionsInUserId = (userId: StringOrNumber): IRegion | undefined => {\n if (!userId) {\n return undefined;\n }\n return this._regions.find(r => r.userId === userId);\n };\n\n getRegionsInUserIdOrIndex = (user_ids?: StringOrNumber[], index?: number[]): IRegion[] => {\n const regions = this.getAllRegions();\n return regions.filter(r => {\n if (user_ids?.length) {\n return r.userId && user_ids.includes(r.userId);\n } else if (index?.length) {\n return index.includes(r.getSpecIndex());\n }\n return true;\n });\n };\n\n // 模块\n getComponents = () => {\n return this._components;\n };\n\n // 区域\n getSeriesInIndex = (index?: number[]): ISeries[] => {\n if (!index || index.length === 0) {\n return [this._series[0]];\n }\n return this._series.filter((_r, i) => index.includes(i));\n };\n\n getSeriesInIds = (ids?: number[]): ISeries[] => {\n if (!ids) {\n return [];\n }\n return this._series.filter(r => ids.includes(r.id));\n };\n\n getSeriesInUserId = (userId: StringOrNumber): ISeries | undefined => {\n if (!userId) {\n return undefined;\n }\n return this._series.find(r => r.userId === userId);\n };\n\n getSeriesInUserIdOrIndex = (user_ids?: StringOrNumber[], index?: number[]): ISeries[] => {\n const series = this.getAllSeries();\n return series.filter(s => {\n if (user_ids?.length) {\n return s.userId && user_ids.includes(s.userId);\n } else if (index?.length) {\n return index.includes(s.getSpecIndex());\n }\n return true;\n });\n };\n\n getComponentByIndex = (key: string, index: number) => {\n const components = this._components.filter(c => (c.specKey || c.type) === key);\n if (!components || components.length === 0) {\n return undefined;\n }\n return components[index];\n };\n\n getComponentsByKey = (key: string) => {\n return this._components.filter(c => (c.specKey || c.type) === key);\n };\n\n getComponentByUserId = (userId: StringOrNumber) => {\n const component = this._components.find(s => s.userId === userId);\n if (component) {\n return component;\n }\n return undefined;\n };\n\n getComponentsByType = (type: string) => {\n return this._components.filter(c => c.type === type);\n };\n\n getModelById(id: number): IModel | undefined {\n const model = this._idMap.get(id);\n if (model && model instanceof BaseModel) {\n return model;\n }\n return undefined;\n }\n\n getModelByUserId(userId: StringOrNumber): IModel | undefined {\n // TODO: 考虑通过 map 结构优化获取方式 & 补充所有 model 的寻找方法\n const series = this.getSeriesInUserId(userId);\n if (series) {\n return series;\n }\n const region = this.getRegionsInUserId(userId);\n if (region) {\n return region;\n }\n const component = this.getComponentByUserId(userId);\n if (component) {\n return component;\n }\n return undefined;\n }\n\n getAllMarks(): IMark[] {\n const items = Array.from(this._idMap.values());\n return items.filter(item => item && item instanceof BaseMark) as IMark[];\n }\n\n getMarkById(id: number): IMark | undefined {\n const mark = this._idMap.get(id);\n if (mark && mark instanceof BaseMark) {\n return mark as IMark;\n }\n return undefined;\n }\n\n getMarkByUserName(name: string): IMark[] {\n return this.getAllMarks().filter(m => m.name && m.name === name);\n }\n\n updateData(id: StringOrNumber, data: unknown, updateGlobalScale: boolean = true, options?: IParserOptions) {\n const dv = this._dataSet.getDataView(id as string);\n if (dv) {\n dv.markRunning();\n dv.parseNewData(data, options);\n }\n\n if (updateGlobalScale) {\n this.updateGlobalScaleDomain();\n }\n this.getAllModels().forEach(model => model.onDataUpdate());\n }\n\n updateFullData(data: IDataValues | IDataValues[], updateGlobalScale: boolean = true) {\n array(data).forEach(d => {\n const dv = this._dataSet.getDataView(d.id);\n if (dv) {\n dv.markRunning();\n }\n });\n array(data).forEach(d => {\n const dv = this._dataSet.getDataView(d.id);\n if (dv) {\n updateDataViewInData(dv, d, true);\n }\n });\n if (updateGlobalScale) {\n this.updateGlobalScaleDomain();\n }\n this.getAllModels().forEach(model => model.onDataUpdate());\n }\n\n setCanvasRect(width: number, height: number) {\n this._canvasRect = { width, height };\n }\n\n getCanvasRect(): Omit<IRect, 'x' | 'y'> {\n if (this._canvasRect) {\n return this._canvasRect;\n }\n\n this._canvasRect = calculateChartSize(this._spec, this._option, {\n width: DEFAULT_CHART_WIDTH,\n height: DEFAULT_CHART_HEIGHT\n });\n\n return this._canvasRect;\n }\n\n getSeriesData(id: StringOrNumber | undefined, index: number | undefined): DataView | undefined {\n return this._chartData.getSeriesData(id, index);\n }\n\n private _transformSpecScale() {\n const scales: IChartSpec['scales'] = this._spec.scales ? [...this._spec.scales] : [];\n let colorScaleSpec: IVisualSpecScale<any, any> = scales.find(s => s.id === 'color');\n const colorScheme = this.getColorScheme();\n if (!colorScaleSpec) {\n colorScaleSpec = {\n type: 'ordinal',\n id: 'color',\n domain: null,\n range: null\n };\n scales.push(colorScaleSpec);\n if (this._spec.color) {\n const colorSpec = this._spec.color as string[] | IVisual<string>;\n\n // range array\n if (isArray(colorSpec)) {\n colorScaleSpec.range = colorSpec;\n } else {\n const tempSpec = colorSpec as IVisualSpecScale<any, any>;\n Object.prototype.hasOwnProperty.call(tempSpec, 'type') && (colorScaleSpec.type = tempSpec.type);\n Object.prototype.hasOwnProperty.call(tempSpec, 'domain') && (colorScaleSpec.domain = tempSpec.domain);\n Object.prototype.hasOwnProperty.call(tempSpec, 'range') && (colorScaleSpec.range = tempSpec.range);\n Object.prototype.hasOwnProperty.call(tempSpec, 'specified') &&\n (colorScaleSpec.specified = tempSpec.specified);\n Object.prototype.hasOwnProperty.call(tempSpec, 'clamp') && (colorScaleSpec.clamp = tempSpec.clamp);\n }\n }\n }\n // 如果没有range设置\n // length === 0 就认为是没有配置,用户配置 color: [] 依然认为是无效配置,启用主题色板\n if (!colorScaleSpec.range?.length) {\n colorScaleSpec.range = getDataScheme(colorScheme);\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n colorScaleSpec.rangeTheme = true;\n }\n return scales;\n }\n\n // 全局通道\n private _createGlobalScale() {\n this._globalScale = new GlobalScale(this._transformSpecScale(), this);\n this._modelOption.globalScale = this._globalScale;\n }\n\n updateGlobalScaleDomain() {\n const domainSet = new Set();\n this._series.forEach(s => {\n const keys = s.getSeriesKeys();\n keys && keys.forEach(k => domainSet.add(k));\n });\n // domain\n const domain = Array.from(domainSet);\n // 如果 global scale 当前没有 domain 的话,就使用这个domain\n // 整理了目前会影响全局 scale 的逻辑,但是当前这个节点使用这个逻辑可行\n // 但是考虑到组件也可能会有修改 scale 的逻辑\n // 增加一个属性设置优先级也许是必须的?\n this._globalScale.updateScaleDomain(domain);\n }\n\n updateGlobalScale(result: IUpdateSpecResult) {\n mergeUpdateResult(result, this._globalScale.updateSpec(this._transformSpecScale()));\n }\n\n updateGlobalScaleTheme() {\n const colorSpec = this._globalScale.getScaleSpec('color');\n const colorScheme = this.getColorScheme();\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n if (colorSpec.rangeTheme) {\n colorSpec.range = getDataScheme(colorScheme);\n this._globalScale.getScale('color').range(colorSpec.range);\n }\n }\n\n private _getSpecKeys(spec: T) {\n const ignoreKeys: Record<string, boolean> = { width: true, height: true };\n return Object.keys(spec)\n .filter(key => !ignoreKeys[key])\n .sort();\n }\n\n updateSpec(spec: T) {\n const result = {\n change: false,\n reMake: false,\n reRender: false,\n reSize: false,\n reCompile: false\n };\n // 需要重新布局\n this.setLayoutTag(true, null, false);\n // 第一版简易逻辑如果配置项出现增删,直接重新创建chart\n // 如果出现类型不同,同上\n if (spec.type !== this.type) {\n result.reMake = true;\n return result;\n }\n // spec set & transformSpec\n // diff meta length;\n\n const currentKeys = this._getSpecKeys(this._spec);\n const nextKeys = this._getSpecKeys(spec);\n if (!isEqual(currentKeys, nextKeys)) {\n result.reMake = true;\n return result;\n }\n // spec key 的个数一致,但是数组长度不一致时。remake\n for (let i = 0; i < currentKeys.length; i++) {\n const key = currentKeys[i];\n if (isArray((this._spec as any)[key]) && (this._spec as any)[key].length !== array((spec as any)[key]).length) {\n result.reMake = true;\n return result;\n }\n }\n const oldSpec = this._spec;\n this._spec = spec;\n // update chart config\n this.updateChartConfig(result, oldSpec);\n if (result.reMake) {\n return result;\n }\n\n this.updateGlobalScale(result);\n if (result.reMake) {\n return result;\n }\n // region 变化\n this.updateRegionSpec(result);\n if (result.reMake) {\n return result;\n }\n this.updateComponentSpec(result);\n if (result.reMake) {\n return result;\n }\n this.updateSeriesSpec(result);\n if (result.reMake) {\n return result;\n }\n /**\n * 当图表不是`remake`,而是部分更新的时候,所有的model需要`reInit`\n * 由于 data 最终是挂在到model上的,data的transform又依赖model中的`spec`,\n * 所以在更新model前需要调用`reInit`确保`spec`和内部变量已经更新\n */\n this.reInit();\n this.updateDataSpec();\n // ensure that the domain of the scale follows the data change\n this.updateGlobalScaleDomain();\n return result;\n }\n\n updateChartConfig(result: IUpdateSpecResult, oldSpec: IChartSpec) {\n // padding;\n this._paddingSpec = normalizeLayoutPaddingSpec(this._spec.padding ?? this._option?.getTheme('padding'));\n\n // re compute padding & layout\n this._updateLayoutRect(this._viewBox);\n }\n\n updateDataSpec() {\n if (!this._spec.data) {\n return;\n }\n this._chartData.updateData(this._spec.data, false, true);\n }\n\n updateRegionSpec(result: IUpdateSpecResult) {\n if (!this._spec?.region) {\n return;\n }\n // 长度不同,直接判定为 remake\n if (this._spec.region.length !== this._regions.length) {\n result.reMake = true;\n return;\n }\n this._regions.forEach(r => {\n mergeUpdateResult(result, r.updateSpec(this._spec.region[r.getSpecIndex()]));\n });\n }\n\n updateComponentSpec(result: IUpdateSpecResult) {\n // 用来检测组件是否有新增\n const componentCache: {\n [key in string]: {\n specCount: number;\n componentCount: number;\n };\n } = {};\n const checkVisibleComponents: Record<string, boolean> = {\n [ComponentTypeEnum.title]: true,\n [ComponentTypeEnum.brush]: true,\n [ComponentTypeEnum.indicator]: true\n };\n\n this._components.forEach(c => {\n if (c.type === ComponentTypeEnum.label || c.type === ComponentTypeEnum.totalLabel) {\n // label配置都会被解析到series中,所以不适合放在这里进行比对\n return;\n }\n if (checkVisibleComponents[c.type]) {\n checkVisibleComponents[c.type] = false;\n }\n\n const compSpecKey = c.specKey || c.type;\n // 每一个组件获取对应的speck\n const cmpSpec = (this._spec as any)[compSpecKey] ?? {};\n\n if (isArray(cmpSpec)) {\n componentCache[compSpecKey] = componentCache[compSpecKey] || {\n specCount: cmpSpec.length,\n componentCount: 0\n };\n componentCache[compSpecKey].componentCount++;\n mergeUpdateResult(result, c.updateSpec(cmpSpec[c.getSpecIndex()] ?? {}, cmpSpec));\n } else {\n mergeUpdateResult(result, c.updateSpec(cmpSpec));\n }\n });\n for (const key in componentCache) {\n if (Object.prototype.hasOwnProperty.call(componentCache, key)) {\n const element = componentCache[key];\n if (element.componentCount !== element.specCount) {\n result.reMake = true;\n }\n }\n }\n\n /** 这些组件 visible: false 不创建组件,也在this._components中,所以需要额外检测是否有visible 的切换 */\n const isVisible = (compSpec: any) => compSpec && compSpec.visible !== false;\n Object.keys(checkVisibleComponents).forEach(type => {\n if (checkVisibleComponents[type]) {\n const compSpec = (this._spec as any)[type];\n const switchToVisible = isArray(compSpec) ? compSpec.some(isVisible) : isVisible(compSpec);\n\n if (switchToVisible) {\n result.reMake = true;\n }\n }\n });\n }\n\n updateSeriesSpec(result: IUpdateSpecResult) {\n // 长度不同,直接判定为 remake\n if (this._spec.series.length !== this._series.length) {\n result.reMake = true;\n return;\n }\n this._series.forEach(s => {\n const spec = this._spec.series[s.getSpecIndex()];\n mergeUpdateResult(result, s.updateSpec(spec));\n });\n }\n\n getCanvas() {\n return this.getCompiler()?.getCanvas() ?? null;\n }\n\n private _updateLayoutRect(viewBox: IBoundsLike) {\n const canvasRect = this.getCanvasRect();\n let viewRect = canvasRect;\n if (viewBox) {\n this._viewBox = viewBox;\n const { x1 = 0, y1 = 0, x2, y2 } = viewBox;\n viewRect = {\n width: x2 - x1,\n height: y2 - y1\n };\n } else {\n this._viewBox = { x1: 0, y1: 0, x2: viewRect.width, y2: viewRect.height };\n }\n this._viewRect = viewRect;\n // resize 时 padding 也应该会发生变化 先计算\n this.padding = calcPadding(this._paddingSpec, viewRect, viewRect);\n this._layoutRect.width = viewRect.width - this.padding.left - this.padding.right;\n this._layoutRect.height = viewRect.height - this.padding.top - this.padding.bottom;\n this._layoutRect.x = this.padding.left;\n this._layoutRect.y = this.padding.top;\n\n this._event.emit(ChartEvent.layoutRectUpdate, { chart: this });\n }\n\n /** 设置当前全局主题 */\n setCurrentTheme() {\n // update chart config\n this.updateChartConfig({ change: true, reMake: false }, this._spec);\n\n // 需要重新布局\n this.resetLayoutItemTag();\n this.setLayoutTag(true, null, false);\n\n // 设置色板,只设置 colorScale 的 range\n this.updateGlobalScaleTheme();\n this.reInit();\n }\n\n reInit() {\n [...this._regions, ...this._series, ...this._components].forEach(model => {\n const specInfo = model.getSpecInfo();\n\n if (specInfo && specInfo.spec) {\n // 找不到,说明在更新spec中,组件被注销了\n model.reInit(specInfo.spec);\n }\n });\n }\n\n clear() {\n // call on recompile & release\n this.getAllModels().forEach(i => i.clear?.());\n }\n\n compile() {\n this.compileBackground();\n this.compileLayout();\n this.compileRegions();\n this.compileSeries();\n this.compileComponents();\n }\n\n afterCompile() {\n this.getAllRegions().forEach(r => {\n r.afterCompile?.();\n });\n this.getAllSeries().forEach(s => {\n s.afterCompile?.();\n });\n this.getAllComponents().forEach(c => {\n c.afterCompile?.();\n });\n }\n\n compileLayout() {\n const { width, height } = this.getCanvasRect();\n this.getCompiler().setSize(width, height);\n }\n\n compileBackground() {\n if (!this._backgroundMark) {\n return;\n }\n this._backgroundMark.compile();\n }\n\n compileRegions() {\n this._option.performanceHook?.beforeRegionCompile?.(this._option.globalInstance);\n this.getAllRegions().forEach(r => {\n r.compile();\n });\n this._option.performanceHook?.afterRegionCompile?.(this._option.globalInstance);\n }\n\n compileSeries() {\n this._option.performanceHook?.beforeSeriesCompile?.(this._option.globalInstance);\n this.getAllSeries().forEach(s => {\n s.compile();\n });\n this._option.performanceHook?.afterSeriesCompile?.(this._option.globalInstance);\n }\n\n compileComponents() {\n this._option.performanceHook?.beforeComponentCompile?.(this._option.globalInstance);\n this.getAllComponents().forEach(c => {\n c.compile();\n });\n this._option.performanceHook?.afterComponentCompile?.(this._option.globalInstance);\n }\n\n release() {\n /* release 前的处理 */\n [...this._components, ...this._regions, ...this._series].forEach(m => {\n m.beforeRelease();\n });\n\n /* 开始 release */\n super.release();\n // clear event , temporary function of chart items\n this.clear();\n\n [...this._components, ...this._regions, ...this._series].forEach(m => {\n m.release();\n });\n this._components = this._regions = this._series = [];\n this._spec = {} as any;\n // FIXME: type lint\n this._dataSet = this._globalScale = this._layoutFunc = null as unknown as any;\n this._layoutTag = false;\n this._idMap.clear();\n }\n\n onLayout() {\n this.layout();\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 const seriesArr = this.getAllSeries();\n for (const key in state) {\n if (isEmpty(state[key])) {\n continue;\n }\n const stateSpec = state[key];\n let stateInfo: IStateInfo = { stateValue: key };\n if (isFunction(stateSpec.filter)) {\n stateInfo = { filter: stateSpec.filter, ...stateInfo };\n } else {\n stateInfo = { ...stateSpec.filter, ...stateInfo };\n }\n if (stateSpec.level) {\n stateInfo.level = stateSpec.level;\n }\n seriesArr.forEach(series => {\n series.getMarks().forEach(m => {\n if (!m.stateStyle[key]) {\n return;\n }\n if (!filter || filter(series, m, key)) {\n m.state.changeStateInfo(stateInfo);\n m.updateMarkState(key);\n }\n });\n });\n }\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 this._setStateInDatum(STATE_VALUE_ENUM.STATE_SELECTED, 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 this._setStateInDatum(STATE_VALUE_ENUM.STATE_HOVER, datum, filter, region);\n }\n\n /**\n * 清除所有图元的状态\n *\n * @since 1.11.0\n */\n clearState(state: string) {\n this._interaction.clearByState(state);\n }\n\n /**\n * 清除所有图元的所有状态\n *\n * @since 1.12.4\n */\n clearAllStates() {\n this._interaction.clearAllStates();\n }\n\n /**\n * 清除所有图元的选中状态\n *\n * @since 1.11.0\n */\n clearSelected() {\n this.clearState(STATE_VALUE_ENUM.STATE_SELECTED);\n }\n\n /**\n * 清除所有图元的hover状态\n *\n * @since 1.11.0\n */\n clearHovered() {\n this.clearState(STATE_VALUE_ENUM.STATE_HOVER);\n }\n\n private _initEvent() {\n [ChartEvent.dataZoomChange, ChartEvent.scrollBarChange].forEach(event => {\n this._event.on(event, ({ value }) => {\n this._disableMarkAnimation(['exit', 'update']);\n const enableMarkAnimate = () => {\n this._enableMarkAnimation(['exit', 'update']);\n this._event.off(HOOK_EVENT.AFTER_MARK_RENDER_END, enableMarkAnimate);\n };\n this._event.on(HOOK_EVENT.AFTER_MARK_RENDER_END, enableMarkAnimate);\n });\n });\n }\n\n protected _enableMarkAnimation(states: string | string[]) {\n const marks = this.getAllMarks();\n marks.forEach(mark => mark.enableAnimationByState(states));\n }\n\n protected _disableMarkAnimation(states: string | string[]) {\n const marks = this.getAllMarks();\n marks.forEach(mark => mark.disableAnimationByState(states));\n }\n\n filterGraphicsByDatum(\n datum: MaybeArray<Datum> | null,\n opt: {\n filter?: (series: ISeries, mark: IMark) => boolean;\n region?: IRegionQuerier;\n getDatum?: (el: IMarkGraphic, mark: IMark, s: ISeries, r: IRegion) => Datum;\n callback?: (el: IMarkGraphic, mark: IMark, s: ISeries, r: IRegion) => void;\n regionCallback?: (pickElements: IMarkGraphic[], r: IRegion) => void;\n } = {}\n ) {\n datum = datum ? array(datum) : null;\n const keys = !datum ? null : Object.keys((datum as Datum[])[0]);\n const allElements = [] as IMarkGraphic[];\n const getDatumOfElement = opt.getDatum ?? getDatumOfGraphic;\n\n this.getRegionsInQuerier(opt.region).forEach(r => {\n const pickElements = [] as IMarkGraphic[];\n datum &&\n r.getSeries().forEach(s => {\n s.getMarks().forEach(m => {\n const graphics = m.getGraphics();\n if (!graphics || !graphics.length) {\n return;\n }\n if (!opt.filter || (isFunction(opt.filter) && opt.filter(s, m))) {\n const isCollect = isCollectionMark(m.type);\n\n if (isCollect) {\n graphics.filter(e => {\n const elDatum = getDatumOfElement(e, m, s, r) as Datum[];\n const isPick =\n // eslint-disable-next-line max-nested-callbacks, eqeqeq\n elDatum && (datum as Datum[]).every((d, index) => keys.every(k => d[k] == elDatum[index][k]));\n\n if (isPick) {\n pickElements.push(e);\n allElements.push(e);\n opt.callback && opt.callback(e, m, s, r);\n }\n });\n } else {\n if (datum.length > 1) {\n const datumTemp = (datum as Datum[]).slice();\n\n graphics.forEach(e => {\n const elDatum = getDatumOfElement(e, m, s, r) as Datum;\n // eslint-disable-next-line max-nested-callbacks, eqeqeq\n const index = elDatum && datumTemp.findIndex(d => keys.every(k => d[k] == elDatum[k]));\n if (index >= 0) {\n datumTemp.splice(index, 1);\n\n pickElements.push(e);\n allElements.push(e);\n opt.callback && opt.callback(e, m, s, r);\n }\n });\n } else {\n const el = graphics.find(e => {\n const elDatum = getDatumOfElement(e, m, s, r) as Datum;\n // eslint-disable-next-line eqeqeq\n return elDatum && keys.every(k => (datum as Datum[])[0][k] == elDatum[k]);\n });\n\n if (el) {\n pickElements.push(el);\n allElements.push(el);\n opt.callback && opt.callback(el, m, s, r);\n }\n }\n }\n }\n });\n });\n\n opt.regionCallback && opt.regionCallback(pickElements, r);\n });\n\n return allElements;\n }\n\n protected _setStateInDatum(\n stateKey: string,\n d: MaybeArray<Datum> | null,\n filter?: (series: ISeries, mark: IMark) => boolean,\n region?: IRegionQuerier\n ) {\n if (!d) {\n this._interaction.clearByState(stateKey);\n return;\n }\n\n const pickGraphics = this.filterGraphicsByDatum(d, {\n filter,\n region\n });\n this._interaction.updateStateOfGraphics(stateKey, pickGraphics);\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 // event\n let dimensionInfo: IDimensionInfo[] | null = null;\n Array.from(this._event.getComposedEventMap().values()).forEach(e => {\n const { eventType, event } = e;\n if (eventType === DimensionEventEnum.dimensionHover || eventType === DimensionEventEnum.dimensionClick) {\n const info = event.dispatch(value, opt) as [];\n if (info?.length) {\n dimensionInfo = info;\n }\n }\n });\n const isUnableValue =\n isNil(value) || !dimensionInfo || dimensionInfo.every(d => isDiscrete(d.axis.getScale().type) && isNil(d.index));\n\n const isUnableTooltip =\n // 如果数据本身不可用\n isUnableValue ||\n // 或者数据为空\n dimensionInfo.every(d => isDiscrete(d.axis.getScale().type) && d.data.every(_data => _data.datum.length === 0));\n // tooltip\n if (opt.tooltip !== false) {\n const tooltip = this.getComponentsByType(ComponentTypeEnum.tooltip)[0] as unknown as ITooltip;\n\n if (tooltip?.getVisible()) {\n if (isUnableValue || isUnableTooltip) {\n (<any>tooltip).hideTooltip?.();\n } else {\n const dataFilter: { [key: string]: any } = {};\n dimensionInfo.forEach((d: IDimensionInfo) => {\n const { axis, value, data } = d;\n const isY = axis.getOrient() === 'left' || axis.getOrient() === 'right';\n data.forEach(d => {\n const field = isY ? (<ICartesianSeries>d.series).fieldY[0] : (<ICartesianSeries>d.series).fieldX[0];\n\n dataFilter[field] = d.datum?.[0]?.[field] ?? value;\n });\n });\n tooltip.showTooltip(dataFilter, opt.showTooltipOption);\n }\n }\n }\n if (opt.crosshair !== false) {\n const crosshair = this.getComponentsByType(ComponentTypeEnum.cartesianCrosshair)[0] as unknown as ICrossHair;\n\n if (crosshair && crosshair.clearAxisValue && crosshair.setAxisValue) {\n if (isUnableValue) {\n crosshair.hideCrosshair();\n } else {\n crosshair.showCrosshair(dimensionInfo as { axis: IAxis; value: string | number }[]);\n }\n }\n }\n }\n\n showCrosshair(cb: (axis: IAxis) => false | string | number) {\n const crosshair =\n this.getComponentsByType(ComponentTypeEnum.cartesianCrosshair)[0] ??\n this.getComponentsByType(ComponentTypeEnum.polarCrosshair)[0];\n if (!crosshair) {\n return;\n }\n const axes = this.getComponentsByKey('axes') as IAxis[];\n const dimInfo: { axis: IAxis; value: string | number }[] = [];\n axes.forEach(axis => {\n const value = cb(axis);\n if (value !== false) {\n dimInfo.push({\n axis,\n value\n });\n }\n });\n (crosshair as ICrossHair).showCrosshair(dimInfo);\n }\n\n getColorScheme() {\n return this._option.getTheme?.('colorScheme');\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/chart/base/base-chart.ts"],"names":[],"mappings":"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","file":"base-chart.js","sourcesContent":["import type { IRegionConstructor } from '../../region/interface';\nimport { ChartData } from '../chart-meta/data';\nimport type { ICrossHair } from '../../component/crosshair/interface/spec';\nimport type { IDimensionInfo } from '../../event/events/dimension/interface';\nimport type {\n Datum,\n IMarkStateSpec,\n IVisual,\n IVisualSpecScale,\n IRegionQuerier,\n MaybeArray,\n IPadding,\n IRect,\n StringOrNumber,\n IChartSpec,\n IDataValues,\n ILayoutRect,\n ILayoutOrientPadding\n} from '../../typings';\nimport type { ILayoutItem, LayoutCallBack } from '../../layout/interface';\nimport { GlobalScale } from '../../scale/global-scale';\nimport type { ILayoutModelState, IModel, IModelOption, IModelSpecInfo, IUpdateSpecResult } from '../../model/interface';\nimport type {\n IChart,\n IChartOption,\n IChartEvaluateOption,\n DimensionIndexOption,\n IChartSpecTransformerOption,\n IChartSpecTransformer\n} from '../interface';\nimport type { ICartesianSeries, ISeries, ISeriesConstructor } from '../../series/interface';\n// eslint-disable-next-line no-duplicate-imports\nimport type { IRegion } from '../../region/interface';\nimport { ComponentTypeEnum } from '../../component/interface';\n// eslint-disable-next-line no-duplicate-imports\nimport type { IComponent, IComponentConstructor } from '../../component/interface';\nimport type { IMark, IMarkGraphic, IRectMark } from '../../mark/interface';\n// eslint-disable-next-line no-duplicate-imports\nimport { MarkTypeEnum } from '../../mark/interface';\nimport type { IEvent } from '../../event/interface';\nimport type { DataView } from '@visactor/vdataset';\n// eslint-disable-next-line no-duplicate-imports\nimport type { DataSet } from '@visactor/vdataset';\nimport { Factory } from '../../core/factory';\nimport { Event } from '../../event/event';\nimport {\n isArray,\n isValid,\n createID,\n calcPadding,\n normalizeLayoutPaddingSpec,\n array,\n isCollectionMark,\n getDatumOfGraphic\n} from '../../util';\nimport { BaseModel } from '../../model/base-model';\nimport { BaseMark } from '../../mark/base/base-mark';\nimport { DEFAULT_CHART_WIDTH, DEFAULT_CHART_HEIGHT } from '../../constant/base';\n// eslint-disable-next-line no-duplicate-imports\nimport type { IParserOptions } from '@visactor/vdataset';\nimport type { IBoundsLike, Maybe } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { isFunction, isEmpty, isNil, isString, isEqual, pickWithout } from '@visactor/vutils';\nimport { getDataScheme } from '../../theme/color-scheme/util';\nimport { CompilableBase } from '../../compile/compilable-base';\nimport type { IStateInfo } from '../../compile/mark/interface';\n// eslint-disable-next-line no-duplicate-imports\nimport { STATE_VALUE_ENUM } from '../../compile/mark/interface';\nimport { ChartEvent, HOOK_EVENT } from '../../constant/event';\nimport type { IGlobalScale } from '../../scale/interface';\nimport { DimensionEventEnum } from '../../event/events/dimension/interface';\nimport type { ITooltip } from '../../component/tooltip/interface';\nimport {\n calculateChartSize,\n isUpdateSpecResultComponentOnly,\n isUpdateSpecResultLocalOnly,\n mergeUpdateResult\n} from '../util';\nimport { isDiscrete } from '@visactor/vscale';\nimport { updateDataViewInData } from '../../data/initialize';\nimport { LayoutZIndex } from '../../constant/layout';\nimport type { IAxis } from '../../component/axis/interface/common';\nimport type { IMorphConfig } from '../../animation/spec';\nimport { Interaction } from '../../interaction/interaction';\nimport type { IInteraction } from '../../interaction/interface/common';\nimport type { IBaseTriggerOptions } from '../../interaction/interface/trigger';\nimport { animationConfig, userAnimationConfig } from '../../animation/utils';\n\nconst MARKER_COMPONENT_SPEC_KEYS: Record<string, boolean> = {\n [ComponentTypeEnum.markPoint]: true,\n [ComponentTypeEnum.markLine]: true,\n [ComponentTypeEnum.markArea]: true\n};\n\nconst MARKER_ADDITION_REMAKE_SPEC_KEYS: Record<string, boolean> = {\n regionId: true,\n regionIndex: true,\n seriesId: true,\n seriesIndex: true,\n specifiedDataSeriesId: true,\n specifiedDataSeriesIndex: true\n};\n\nexport class BaseChart<T extends IChartSpec> extends CompilableBase implements IChart {\n readonly type: string = 'chart';\n readonly seriesType: string;\n readonly transformerConstructor: new (option: IChartSpecTransformerOption) => IChartSpecTransformer;\n readonly id: number = createID();\n\n //FIXME: 转换后的 spec 需要声明 ITransformedChartSpec\n protected _spec: T;\n getSpec() {\n return this._spec;\n }\n setSpec(s: T) {\n // TODO 通过spec设置进行图表更新\n this._spec = s;\n }\n\n getOption() {\n return this._option;\n }\n\n protected _regions: IRegion[] = [];\n // 系列\n protected _series: ISeries[] = [];\n // 组件\n protected _components: IComponent[] = [];\n protected _specTransformer: Maybe<IChartSpecTransformer> = null;\n\n // 布局\n protected _layoutFunc: LayoutCallBack;\n protected _layoutRect: IRect = {\n x: 0,\n y: 0,\n width: DEFAULT_CHART_WIDTH,\n height: DEFAULT_CHART_HEIGHT\n };\n getLayoutRect() {\n return this._layoutRect;\n }\n protected _viewRect: ILayoutRect = {\n width: DEFAULT_CHART_WIDTH,\n height: DEFAULT_CHART_HEIGHT\n };\n getViewRect() {\n return this._viewRect;\n }\n protected _viewBox: IBoundsLike = {\n x1: 0,\n y1: 0,\n x2: DEFAULT_CHART_WIDTH,\n y2: DEFAULT_CHART_HEIGHT\n };\n\n protected _layoutTag: boolean = true;\n getLayoutTag() {\n return this._layoutTag;\n }\n setLayoutTag(tag: boolean, morphConfig?: IMorphConfig, renderNextTick: boolean = true): boolean {\n this._layoutTag = tag;\n const compiler = this.getCompiler();\n\n if (compiler) {\n compiler.updateLayoutTag();\n tag && renderNextTick && compiler.renderNextTick(morphConfig);\n }\n return this._layoutTag;\n }\n\n resetLayoutItemTag() {\n this.getLayoutElements().forEach(element => element.setWillLayoutTag());\n }\n\n // 模块参数\n protected _modelOption: IModelOption;\n\n getModelOption() {\n return this._modelOption;\n }\n\n // 全局通道\n // protected _globalScale: { [key: string]: IBaseScale } = {};\n protected _globalScale: IGlobalScale;\n\n getGlobalScale() {\n return this._globalScale;\n }\n\n // mark & model 的 id 映射\n protected _idMap: Map<number, IModel | IMark> = new Map();\n\n protected _event: IEvent;\n getEvent() {\n return this._event;\n }\n\n // data\n protected _dataSet: DataSet;\n protected _chartData: ChartData;\n get chartData() {\n return this._chartData;\n }\n\n protected declare _option: IChartOption;\n\n // 模块内的需要动态影像图表的属性\n readonly state: ILayoutModelState = {\n layoutUpdateRank: 1\n };\n\n // stack\n\n padding: IPadding = { top: 0, left: 0, right: 0, bottom: 0 };\n protected _paddingSpec: ILayoutOrientPadding;\n\n protected _canvasRect: ILayoutRect;\n\n // background\n protected _backgroundMark: IRectMark;\n\n protected _interaction: IInteraction;\n\n protected _setModelOption(): void {\n // implement in subclass\n }\n\n constructor(spec: T, option: IChartOption) {\n super(option);\n this._paddingSpec = normalizeLayoutPaddingSpec(spec.padding ?? option.getTheme('padding'));\n\n this._event = new Event(option.eventDispatcher, option.mode);\n this._dataSet = option.dataSet;\n this._chartData = new ChartData(this._dataSet);\n this._modelOption = {\n ...option,\n mode: this._option.mode,\n map: this._idMap,\n getChartLayoutRect: () => this._layoutRect,\n getChartViewRect: () => this._viewRect,\n getChart: () => this,\n globalScale: this._globalScale,\n onError: this._option?.onError,\n disableTriggerEvent: this._option?.disableTriggerEvent === true,\n componentShowContent: this._option?.componentShowContent,\n getSeriesData: this._chartData.getSeriesData.bind(this._chartData),\n // @ts-ignore\n dispatchEvent: (eType, params) => this._option.globalInstance.event.emit(eType, params)\n };\n\n if ((this as any)._setModelOption) {\n (this as any)._setModelOption();\n }\n\n this._spec = spec;\n }\n\n created(transformer: Maybe<IChartSpecTransformer>) {\n this._specTransformer = transformer;\n // data\n this._chartData.parseData(this._spec.data);\n // scale\n this._createGlobalScale();\n // background\n this._createBackground();\n // 基础内容\n this._createLayout();\n // 基于spec 创建元素。\n // region\n transformer.forEachRegionInSpec(this._spec, this._createRegion.bind(this));\n // series\n transformer.forEachSeriesInSpec(this._spec, this._createSeries.bind(this));\n // components\n transformer.forEachComponentInSpec(this._spec, this._createComponent.bind(this), this._option.getSpecInfo());\n }\n _initInteractions() {\n if (this._option.disableTriggerEvent) {\n return;\n }\n\n // 创建交互\n this._interaction = new Interaction();\n\n const series = this.getAllSeries();\n const mergedTriggers: Partial<IBaseTriggerOptions>[] = [];\n const groupedTriggers: Array<{\n regionId: number;\n config: Partial<IBaseTriggerOptions>;\n trigger: Partial<IBaseTriggerOptions>;\n }> = [];\n\n series.forEach(s => {\n const triggers = s.getInteractionTriggers();\n\n if (triggers && triggers.length) {\n const regionId = s.getRegion().id;\n\n triggers.forEach(({ trigger, marks }) => {\n const sameTrigger = groupedTriggers.find(item => item.regionId === regionId && isEqual(item.config, trigger));\n\n if (sameTrigger) {\n sameTrigger.trigger.marks.push(...marks);\n } else {\n const mergedTrigger = { ...trigger, marks: [...marks] };\n\n groupedTriggers.push({\n regionId,\n config: { ...trigger },\n trigger: mergedTrigger\n });\n mergedTriggers.push(mergedTrigger);\n }\n });\n }\n });\n\n mergedTriggers.forEach(trigger => {\n const triggerInstance = Factory.createInteractionTrigger((trigger as any).type, {\n ...trigger,\n event: this._event,\n interaction: this._interaction\n });\n\n if (triggerInstance) {\n triggerInstance.init();\n this._interaction.addTrigger(triggerInstance);\n }\n });\n }\n\n init() {\n (this as any)._beforeInit?.();\n // 元素创建完毕后再执行各元素的初始化 方便各元素能获取到其他模块\n this._regions.forEach(r => r.init({}));\n this._series.forEach(s => s.init({}));\n this._components.forEach(c => c.init({ dataSet: this._dataSet }));\n\n // event\n this._initEvent();\n\n (this as any)._initStack?.();\n\n // data flow start\n this.reDataFlow();\n\n this._initInteractions();\n\n this.initStageAnimation();\n }\n\n initStageAnimation() {\n const compiler = this._option.getCompiler();\n if (!compiler?.setStageAnimationConfig) {\n return;\n }\n compiler.setStageAnimationConfig(\n animationConfig(\n {}, // Factory.getAnimationInKey('stage')?.({}, null),\n userAnimationConfig('stage', this._spec as any, {}),\n null\n )\n );\n }\n\n reDataFlow() {\n this._series.forEach(s => s.getRawData()?.markRunning());\n this._series.forEach(s => s.fillData());\n this.updateGlobalScaleDomain();\n }\n\n onResize(width: number, height: number, reRender: boolean = true): void {\n const canvasRect = {\n width,\n height\n };\n this._canvasRect = canvasRect;\n this._updateLayoutRect(this._option.viewBox);\n this.resetLayoutItemTag();\n this.setLayoutTag(true, null, reRender);\n }\n\n updateViewBox(viewBox: IBoundsLike, reLayout: boolean) {\n this._option.viewBox = viewBox;\n this._updateLayoutRect(viewBox);\n this.resetLayoutItemTag();\n this.setLayoutTag(true, null, reLayout);\n }\n\n private _createBackground() {\n const bg = this._spec.background;\n if (!bg || typeof bg !== 'object' || isValid(bg.gradient)) {\n return;\n }\n const backgroundStyle = pickWithout(bg, ['x', 'y', 'width', 'height', 'x1', 'y1', 'image']);\n (backgroundStyle as any).background = (bg as any).image;\n\n this._backgroundMark = Factory.createMark(MarkTypeEnum.group, 'chart-background', {\n model: this as any,\n map: this._option.map,\n getCompiler: this.getCompiler,\n globalScale: this._globalScale\n }) as IRectMark;\n this._backgroundMark.created();\n this._backgroundMark.setStyle({\n ...backgroundStyle,\n x: () => this._viewBox.x1,\n y: () => this._viewBox.y1,\n width: () => this._viewBox.x2 - this._viewBox.x1,\n height: () => this._viewBox.y2 - this._viewBox.y1\n });\n this._backgroundMark.setMarkConfig({\n zIndex: LayoutZIndex.SeriesGroup - 2\n });\n\n this.getCompiler().addRootMark(this._backgroundMark);\n }\n\n protected _createRegion(constructor: IRegionConstructor, specInfo: IModelSpecInfo) {\n if (!constructor) {\n return;\n }\n\n const { spec, ...others } = specInfo;\n const region = new constructor(spec, {\n ...this._modelOption,\n ...others\n });\n if (region) {\n region.created();\n this._regions.push(region);\n }\n }\n\n protected _createSeries(constructor: ISeriesConstructor, specInfo: IModelSpecInfo) {\n if (!constructor) {\n return;\n }\n\n const { spec, ...others } = specInfo;\n\n let region: IRegion | undefined;\n if (isValid(spec.regionId)) {\n region = this.getRegionsInUserId(spec.regionId);\n } else if (isValid(spec.regionIndex)) {\n region = this.getRegionsInIndex([spec.regionIndex])[0];\n }\n\n if (!region && !(region = this._regions[0])) {\n return;\n }\n\n const series = new constructor(spec, {\n ...this._modelOption,\n ...others,\n type: spec.type,\n region,\n globalScale: this._globalScale,\n sourceDataList: this._chartData.dataList\n });\n\n if (series) {\n series.created();\n this._series.push(series);\n region.addSeries(series);\n }\n }\n\n getAllSeries = (): ISeries[] => {\n return this._series ?? [];\n };\n\n getSeriesById(id: number): ISeries | undefined {\n return this._series.find(x => x.id === id);\n }\n\n protected _createComponent(constructor: IComponentConstructor, specInfo: IModelSpecInfo) {\n const component = constructor.createComponent(specInfo, {\n ...this._modelOption,\n type: constructor.type,\n getAllRegions: this.getAllRegions,\n getRegionsInIndex: this.getRegionsInIndex,\n getRegionsInIds: this.getRegionsInIds,\n getRegionsInUserIdOrIndex: this.getRegionsInUserIdOrIndex,\n getAllSeries: this.getAllSeries,\n getSeriesInIndex: this.getSeriesInIndex,\n getSeriesInIds: this.getSeriesInIds,\n getSeriesInUserIdOrIndex: this.getSeriesInUserIdOrIndex,\n getAllComponents: this.getComponents,\n getComponentByIndex: this.getComponentByIndex,\n getComponentByUserId: this.getComponentByUserId,\n getComponentsByKey: this.getComponentsByKey,\n getComponentsByType: this.getComponentsByType\n });\n if (!component) {\n return;\n }\n component.created();\n this._components.push(component);\n }\n\n getAllComponents(): IComponent[] {\n return this._components;\n }\n\n getAllModels(): IModel[] {\n return [].concat(this.getAllSeries(), this.getAllComponents(), this.getAllRegions());\n }\n\n getModelInFilter(filter: string | { type: string; index: number } | ((model: IModel) => boolean)) {\n if (isString(filter)) {\n return this.getAllModels().find(m => m.userId === filter);\n } else if (isFunction(filter)) {\n return this.getAllModels().find(m => filter(m));\n }\n let index = 0;\n return this.getAllModels().find(m => {\n if ((m.specKey ?? m.type) === filter.type) {\n if (index === filter.index) {\n return true;\n }\n index++;\n }\n return false;\n });\n }\n\n private _createLayout() {\n this._updateLayoutRect(this._option.viewBox);\n this._initLayoutFunc();\n }\n\n setLayout(layout: LayoutCallBack) {\n // 统一自定义 layout 到 option 中\n this._option.layout = layout;\n this._initLayoutFunc();\n }\n\n /** 可以通过设置 layout = null 来取消自定义布局。启用spec上的布局配置 */\n private _initLayoutFunc() {\n this._layoutFunc = this._option.layout;\n if (!this._layoutFunc) {\n const constructor = Factory.getLayoutInKey(this._spec.layout?.type ?? 'base');\n if (constructor) {\n const layout = new constructor(this._spec.layout, {\n onError: this._option?.onError\n });\n this._layoutFunc = layout.layoutItems.bind(layout);\n }\n }\n }\n\n layout(): void {\n this._option.performanceHook?.beforeLayoutWithSceneGraph?.(this._option.globalInstance);\n if (this.getLayoutTag()) {\n this._event.emit(ChartEvent.layoutStart, { chart: this, vchart: this._option.globalInstance });\n\n this.onLayoutStart();\n const elements = this.getLayoutElements();\n this._layoutFunc(this, elements, this._layoutRect, this._viewBox);\n this._event.emit(ChartEvent.afterLayout, { elements, chart: this });\n this.setLayoutTag(false);\n this.onLayoutEnd();\n\n this._event.emit(ChartEvent.layoutEnd, { chart: this, vchart: this._option.globalInstance });\n }\n this._option.performanceHook?.afterLayoutWithSceneGraph?.(this._option.globalInstance);\n }\n\n // 通知所有需要通知的元素 onLayout 钩子\n onLayoutStart() {\n const elements = this.getAllModels();\n elements.forEach(element => element.onLayoutStart(this._layoutRect, this._viewRect));\n }\n\n // 通知所有需要通知的元素 onLayoutEnd 钩子\n onLayoutEnd() {\n const elements = this.getAllModels();\n elements.forEach(element => {\n // series.onLayoutEnd will be called by region model\n if (element.modelType !== 'series') {\n element.onLayoutEnd();\n }\n });\n }\n\n onEvaluateEnd(option: IChartEvaluateOption) {\n const elements = [...this._components, ...this._regions, ...this._series];\n elements.forEach(element => element.onEvaluateEnd(option));\n }\n\n onBeforeRender() {\n const elements = [...this._components, ...this._regions, ...this._series];\n elements.forEach(element => element.onBeforeRender());\n }\n\n getLayoutElements(): ILayoutItem[] {\n return this.getAllModels()\n .map(i => i.layout)\n .filter(i => !!i);\n }\n\n // 区域\n getRegionsInIndex = (index?: number[]): IRegion[] => {\n if (!index || index.length === 0) {\n return [this._regions[0]];\n }\n return this._regions.filter((_r, i) => index.includes(i));\n };\n\n getAllRegions = () => {\n return this._regions;\n };\n\n getRegionsInIds = (ids: number[]): IRegion[] => {\n if (!ids) {\n return [];\n }\n return this._regions.filter(r => ids.includes(r.id));\n };\n\n getRegionsInQuerier = (region?: MaybeArray<IRegionQuerier>) => {\n if (region) {\n return this._regions.filter((r, index) => {\n return array(region).some(\n regionFilter =>\n (isValid(regionFilter.regionId) && regionFilter.regionId === r.userId) || regionFilter.regionIndex === index\n );\n });\n }\n return this._regions;\n };\n\n getRegionsInUserId = (userId: StringOrNumber): IRegion | undefined => {\n if (!userId) {\n return undefined;\n }\n return this._regions.find(r => r.userId === userId);\n };\n\n getRegionsInUserIdOrIndex = (user_ids?: StringOrNumber[], index?: number[]): IRegion[] => {\n const regions = this.getAllRegions();\n return regions.filter(r => {\n if (user_ids?.length) {\n return r.userId && user_ids.includes(r.userId);\n } else if (index?.length) {\n return index.includes(r.getSpecIndex());\n }\n return true;\n });\n };\n\n // 模块\n getComponents = () => {\n return this._components;\n };\n\n // 区域\n getSeriesInIndex = (index?: number[]): ISeries[] => {\n if (!index || index.length === 0) {\n return [this._series[0]];\n }\n return this._series.filter((_r, i) => index.includes(i));\n };\n\n getSeriesInIds = (ids?: number[]): ISeries[] => {\n if (!ids) {\n return [];\n }\n return this._series.filter(r => ids.includes(r.id));\n };\n\n getSeriesInUserId = (userId: StringOrNumber): ISeries | undefined => {\n if (!userId) {\n return undefined;\n }\n return this._series.find(r => r.userId === userId);\n };\n\n getSeriesInUserIdOrIndex = (user_ids?: StringOrNumber[], index?: number[]): ISeries[] => {\n const series = this.getAllSeries();\n return series.filter(s => {\n if (user_ids?.length) {\n return s.userId && user_ids.includes(s.userId);\n } else if (index?.length) {\n return index.includes(s.getSpecIndex());\n }\n return true;\n });\n };\n\n getComponentByIndex = (key: string, index: number) => {\n const components = this._components.filter(c => (c.specKey || c.type) === key);\n if (!components || components.length === 0) {\n return undefined;\n }\n return components[index];\n };\n\n getComponentsByKey = (key: string) => {\n return this._components.filter(c => (c.specKey || c.type) === key);\n };\n\n getComponentByUserId = (userId: StringOrNumber) => {\n const component = this._components.find(s => s.userId === userId);\n if (component) {\n return component;\n }\n return undefined;\n };\n\n getComponentsByType = (type: string) => {\n return this._components.filter(c => c.type === type);\n };\n\n getModelById(id: number): IModel | undefined {\n const model = this._idMap.get(id);\n if (model && model instanceof BaseModel) {\n return model;\n }\n return undefined;\n }\n\n getModelByUserId(userId: StringOrNumber): IModel | undefined {\n // TODO: 考虑通过 map 结构优化获取方式 & 补充所有 model 的寻找方法\n const series = this.getSeriesInUserId(userId);\n if (series) {\n return series;\n }\n const region = this.getRegionsInUserId(userId);\n if (region) {\n return region;\n }\n const component = this.getComponentByUserId(userId);\n if (component) {\n return component;\n }\n return undefined;\n }\n\n getAllMarks(): IMark[] {\n const items = Array.from(this._idMap.values());\n return items.filter(item => item && item instanceof BaseMark) as IMark[];\n }\n\n getMarkById(id: number): IMark | undefined {\n const mark = this._idMap.get(id);\n if (mark && mark instanceof BaseMark) {\n return mark as IMark;\n }\n return undefined;\n }\n\n getMarkByUserName(name: string): IMark[] {\n return this.getAllMarks().filter(m => m.name && m.name === name);\n }\n\n updateData(id: StringOrNumber, data: unknown, updateGlobalScale: boolean = true, options?: IParserOptions) {\n const dv = this._dataSet.getDataView(id as string);\n if (dv) {\n dv.markRunning();\n dv.parseNewData(data, options);\n }\n\n if (updateGlobalScale) {\n this.updateGlobalScaleDomain();\n }\n this.getAllModels().forEach(model => model.onDataUpdate());\n }\n\n updateFullData(data: IDataValues | IDataValues[], updateGlobalScale: boolean = true) {\n array(data).forEach(d => {\n const dv = this._dataSet.getDataView(d.id);\n if (dv) {\n dv.markRunning();\n }\n });\n array(data).forEach(d => {\n const dv = this._dataSet.getDataView(d.id);\n if (dv) {\n updateDataViewInData(dv, d, true);\n }\n });\n if (updateGlobalScale) {\n this.updateGlobalScaleDomain();\n }\n this.getAllModels().forEach(model => model.onDataUpdate());\n }\n\n setCanvasRect(width: number, height: number) {\n this._canvasRect = { width, height };\n }\n\n getCanvasRect(): Omit<IRect, 'x' | 'y'> {\n if (this._canvasRect) {\n return this._canvasRect;\n }\n\n this._canvasRect = calculateChartSize(this._spec, this._option, {\n width: DEFAULT_CHART_WIDTH,\n height: DEFAULT_CHART_HEIGHT\n });\n\n return this._canvasRect;\n }\n\n getSeriesData(id: StringOrNumber | undefined, index: number | undefined): DataView | undefined {\n return this._chartData.getSeriesData(id, index);\n }\n\n private _transformSpecScale() {\n const scales: IChartSpec['scales'] = this._spec.scales ? [...this._spec.scales] : [];\n let colorScaleSpec: IVisualSpecScale<any, any> = scales.find(s => s.id === 'color');\n const colorScheme = this.getColorScheme();\n if (!colorScaleSpec) {\n colorScaleSpec = {\n type: 'ordinal',\n id: 'color',\n domain: null,\n range: null\n };\n scales.push(colorScaleSpec);\n if (this._spec.color) {\n const colorSpec = this._spec.color as string[] | IVisual<string>;\n\n // range array\n if (isArray(colorSpec)) {\n colorScaleSpec.range = colorSpec;\n } else {\n const tempSpec = colorSpec as IVisualSpecScale<any, any>;\n Object.prototype.hasOwnProperty.call(tempSpec, 'type') && (colorScaleSpec.type = tempSpec.type);\n Object.prototype.hasOwnProperty.call(tempSpec, 'domain') && (colorScaleSpec.domain = tempSpec.domain);\n Object.prototype.hasOwnProperty.call(tempSpec, 'range') && (colorScaleSpec.range = tempSpec.range);\n Object.prototype.hasOwnProperty.call(tempSpec, 'specified') &&\n (colorScaleSpec.specified = tempSpec.specified);\n Object.prototype.hasOwnProperty.call(tempSpec, 'clamp') && (colorScaleSpec.clamp = tempSpec.clamp);\n }\n }\n }\n // 如果没有range设置\n // length === 0 就认为是没有配置,用户配置 color: [] 依然认为是无效配置,启用主题色板\n if (!colorScaleSpec.range?.length) {\n colorScaleSpec.range = getDataScheme(colorScheme);\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n colorScaleSpec.rangeTheme = true;\n }\n return scales;\n }\n\n // 全局通道\n private _createGlobalScale() {\n this._globalScale = new GlobalScale(this._transformSpecScale(), this);\n this._modelOption.globalScale = this._globalScale;\n }\n\n updateGlobalScaleDomain() {\n const domainSet = new Set();\n this._series.forEach(s => {\n const keys = s.getSeriesKeys();\n keys && keys.forEach(k => domainSet.add(k));\n });\n // domain\n const domain = Array.from(domainSet);\n // 如果 global scale 当前没有 domain 的话,就使用这个domain\n // 整理了目前会影响全局 scale 的逻辑,但是当前这个节点使用这个逻辑可行\n // 但是考虑到组件也可能会有修改 scale 的逻辑\n // 增加一个属性设置优先级也许是必须的?\n this._globalScale.updateScaleDomain(domain);\n }\n\n updateGlobalScale(result: IUpdateSpecResult) {\n mergeUpdateResult(result, this._globalScale.updateSpec(this._transformSpecScale()));\n }\n\n updateGlobalScaleTheme() {\n const colorSpec = this._globalScale.getScaleSpec('color');\n const colorScheme = this.getColorScheme();\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n if (colorSpec.rangeTheme) {\n colorSpec.range = getDataScheme(colorScheme);\n this._globalScale.getScale('color').range(colorSpec.range);\n }\n }\n\n private _getSpecKeys(spec: T) {\n const ignoreKeys: Record<string, boolean> = {\n width: true,\n height: true,\n xField: true,\n yField: true\n };\n return Object.keys(spec)\n .filter(key => !ignoreKeys[key])\n .sort();\n }\n\n updateSpec(spec: T) {\n const result: IUpdateSpecResult = {\n change: false,\n reMake: false,\n reRender: false,\n reSize: false,\n reCompile: false\n };\n // 第一版简易逻辑如果配置项出现增删,直接重新创建chart\n // 如果出现类型不同,同上\n if (spec.type !== this.type) {\n result.reMake = true;\n this.setLayoutTag(true, null, false);\n return result;\n }\n // spec set & transformSpec\n // diff meta length;\n\n const currentKeys = this._getSpecKeys(this._spec);\n const nextKeys = this._getSpecKeys(spec);\n if (!isEqual(currentKeys, nextKeys)) {\n result.reMake = true;\n this.setLayoutTag(true, null, false);\n return result;\n }\n // spec key 的个数一致,但是数组长度不一致时。remake\n for (let i = 0; i < currentKeys.length; i++) {\n const key = currentKeys[i];\n const currentSpec = (this._spec as any)[key];\n const nextSpec = (spec as any)[key];\n if (\n isArray(currentSpec) &&\n currentSpec.length !== array(nextSpec).length &&\n !this._canChangeMarkerComponentsWithoutRemake(key, currentSpec, nextSpec)\n ) {\n result.reMake = true;\n this.setLayoutTag(true, null, false);\n return result;\n }\n }\n const oldSpec = this._spec;\n const onlyMarkerComponentsRemoved = this._isOnlyMarkerComponentsRemoved(this._spec, spec, currentKeys);\n const onlyComponentSpecsChanged = this._isOnlyComponentSpecsChanged(this._spec, spec, currentKeys);\n const onlySeriesSpecsChanged = this._isOnlySeriesSpecsChanged(this._spec, spec, currentKeys);\n const onlyComponentOrSeriesSpecsChanged =\n onlyComponentSpecsChanged || onlySeriesSpecsChanged\n ? true\n : this._isOnlyComponentOrSeriesSpecsChanged(this._spec, spec, currentKeys);\n\n this._spec = spec;\n if (onlyMarkerComponentsRemoved) {\n this._removeMarkerComponentsForEmptySpecs(result);\n return result;\n }\n // update chart config\n this.updateChartConfig(result, oldSpec);\n if (result.reMake) {\n this.setLayoutTag(true, null, false);\n return result;\n }\n\n this.updateGlobalScale(result);\n if (result.reMake) {\n this.setLayoutTag(true, null, false);\n return result;\n }\n // region 变化\n this.updateRegionSpec(result);\n if (result.reMake) {\n this.setLayoutTag(true, null, false);\n return result;\n }\n const componentUpdateResult = this.updateComponentSpec(result);\n if (result.reMake) {\n this.setLayoutTag(true, null, false);\n return result;\n }\n if (!onlyComponentSpecsChanged && result.effects?.localOnly) {\n delete result.effects.localOnly;\n }\n if (isUpdateSpecResultLocalOnly(result)) {\n return result;\n }\n if (\n onlyComponentSpecsChanged &&\n !componentUpdateResult.hasNonComponentOnlyUpdate &&\n (isUpdateSpecResultComponentOnly(result) || this._isComponentScaleDomainOnlyUpdate(result))\n ) {\n componentUpdateResult.componentOnlyUpdatedComponents.forEach(component => {\n component.reInit(component.getSpec());\n });\n if (result.effects?.layout) {\n this.setLayoutTag(true, null, false);\n }\n return result;\n }\n // 需要重新布局\n this.setLayoutTag(true, null, false);\n this.updateSeriesSpec(result);\n if (result.reMake) {\n return result;\n }\n /**\n * 当图表不是`remake`,而是部分更新的时候,所有的model需要`reInit`\n * 由于 data 最终是挂在到model上的,data的transform又依赖model中的`spec`,\n * 所以在更新model前需要调用`reInit`确保`spec`和内部变量已经更新\n */\n this.reInit();\n if (!onlyComponentOrSeriesSpecsChanged || !this._canSkipChartDataStages(result)) {\n this.updateDataSpec();\n // ensure that series data transforms and scale domains follow the data change\n this.reDataFlow();\n this._reRunStackDataFlow();\n this.getAllModels().forEach(model => model.onDataUpdate());\n }\n return result;\n }\n\n updateChartConfig(result: IUpdateSpecResult, oldSpec: IChartSpec) {\n // padding;\n this._paddingSpec = normalizeLayoutPaddingSpec(this._spec.padding ?? this._option?.getTheme('padding'));\n\n // re compute padding & layout\n this._updateLayoutRect(this._viewBox);\n }\n\n updateDataSpec() {\n if (!this._spec.data) {\n return;\n }\n this._chartData.updateData(this._spec.data, false, true);\n }\n\n updateRegionSpec(result: IUpdateSpecResult) {\n if (!this._spec?.region) {\n return;\n }\n // 长度不同,直接判定为 remake\n if (this._spec.region.length !== this._regions.length) {\n result.reMake = true;\n return;\n }\n this._regions.forEach(r => {\n mergeUpdateResult(result, r.updateSpec(this._spec.region[r.getSpecIndex()]));\n });\n }\n\n updateComponentSpec(result: IUpdateSpecResult) {\n const componentOnlyUpdatedComponents: IComponent[] = [];\n let hasNonComponentOnlyUpdate = false;\n // 用来检测组件是否有新增\n const componentCache: {\n [key in string]: {\n specCount: number;\n componentCount: number;\n };\n } = {};\n const checkVisibleComponents: Record<string, boolean> = {\n [ComponentTypeEnum.title]: true,\n [ComponentTypeEnum.brush]: true,\n [ComponentTypeEnum.indicator]: true\n };\n const removedComponents: IComponent[] = [];\n let hasNonLocalComponentRemoval = false;\n\n this._components.forEach(c => {\n if (c.type === ComponentTypeEnum.label || c.type === ComponentTypeEnum.totalLabel) {\n // label配置都会被解析到series中,所以不适合放在这里进行比对\n if (!c.getSpecInfo()) {\n removedComponents.push(c);\n hasNonLocalComponentRemoval = true;\n hasNonComponentOnlyUpdate = true;\n }\n return;\n }\n if (checkVisibleComponents[c.type]) {\n checkVisibleComponents[c.type] = false;\n }\n\n const compSpecKey = c.specKey || c.type;\n // 每一个组件获取对应的speck\n const cmpSpec = (this._spec as any)[compSpecKey] ?? {};\n\n if (isArray(cmpSpec)) {\n componentCache[compSpecKey] = componentCache[compSpecKey] || {\n specCount: cmpSpec.length,\n componentCount: 0\n };\n if (this._canRemoveMarkerComponentsWithoutRemake(compSpecKey, [c.getSpec()], cmpSpec)) {\n removedComponents.push(c);\n return;\n }\n componentCache[compSpecKey].componentCount++;\n const componentSpec = cmpSpec[c.getSpecIndex()] ?? {};\n const previousComponentSpec = c.getSpec();\n const componentResult = c.updateSpec(componentSpec, cmpSpec);\n if (\n isUpdateSpecResultComponentOnly(componentResult) ||\n this._isComponentScaleDomainOnlyUpdate(componentResult)\n ) {\n componentOnlyUpdatedComponents.push(c);\n } else if (!isEqual(previousComponentSpec, componentSpec)) {\n hasNonComponentOnlyUpdate = true;\n }\n mergeUpdateResult(result, componentResult);\n } else {\n const previousComponentSpec = c.getSpec();\n const componentResult = c.updateSpec(cmpSpec);\n if (\n isUpdateSpecResultComponentOnly(componentResult) ||\n this._isComponentScaleDomainOnlyUpdate(componentResult)\n ) {\n componentOnlyUpdatedComponents.push(c);\n } else if (!isEqual(previousComponentSpec, cmpSpec)) {\n hasNonComponentOnlyUpdate = true;\n }\n mergeUpdateResult(result, componentResult);\n }\n });\n if (!result.reMake) {\n this._createMissingMarkerComponentsForSpecs(result, componentCache);\n }\n for (const key in componentCache) {\n if (Object.prototype.hasOwnProperty.call(componentCache, key)) {\n const element = componentCache[key];\n if (element.componentCount !== element.specCount) {\n result.reMake = true;\n }\n }\n }\n\n if (removedComponents.length) {\n removedComponents.forEach(component => {\n this._removeComponent(component);\n });\n result.change = true;\n result.effects = {\n ...result.effects,\n component: true,\n ...(hasNonLocalComponentRemoval ? { layout: true, render: true } : { localOnly: true })\n };\n }\n\n /** 这些组件 visible: false 不创建组件,也在this._components中,所以需要额外检测是否有visible 的切换 */\n const isVisible = (compSpec: any) => compSpec && compSpec.visible !== false;\n Object.keys(checkVisibleComponents).forEach(type => {\n if (checkVisibleComponents[type]) {\n const compSpec = (this._spec as any)[type];\n const switchToVisible = isArray(compSpec) ? compSpec.some(isVisible) : isVisible(compSpec);\n\n if (switchToVisible) {\n result.reMake = true;\n }\n }\n });\n return {\n componentOnlyUpdatedComponents,\n hasNonComponentOnlyUpdate\n };\n }\n\n private _canChangeMarkerComponentsWithoutRemake(key: string, currentSpec: any, nextSpec: any) {\n return (\n this._canRemoveMarkerComponentsWithoutRemake(key, currentSpec, nextSpec) ||\n this._canAddMarkerComponentsWithoutRemake(key, currentSpec, nextSpec)\n );\n }\n\n private _canAddMarkerComponentsWithoutRemake(key: string, currentSpec: any, nextSpec: any) {\n if (!MARKER_COMPONENT_SPEC_KEYS[key] || !isArray(currentSpec) || !isArray(nextSpec)) {\n return false;\n }\n\n if (nextSpec.length <= currentSpec.length) {\n return false;\n }\n\n return nextSpec.slice(currentSpec.length).every(this._isMarkerAdditionSpecSafeWithoutRemake);\n }\n\n private _isMarkerAdditionSpecSafeWithoutRemake = (spec: unknown) => {\n if (!spec || typeof spec !== 'object') {\n return false;\n }\n\n const markerSpec = spec as Record<string, unknown>;\n if (markerSpec.visible === false) {\n return false;\n }\n\n return !Object.keys(MARKER_ADDITION_REMAKE_SPEC_KEYS).some(key => !isNil(markerSpec[key]));\n };\n\n private _isAutoRangeMarkerSpec(spec: unknown) {\n return !!spec && typeof spec === 'object' && (spec as { autoRange?: boolean }).autoRange === true;\n }\n\n private _canRemoveMarkerComponentsWithoutRemake(key: string, currentSpec: any, nextSpec: any) {\n return (\n MARKER_COMPONENT_SPEC_KEYS[key] &&\n isArray(currentSpec) &&\n currentSpec.length > 0 &&\n isArray(nextSpec) &&\n nextSpec.length === 0\n );\n }\n\n private _isOnlyMarkerComponentsRemoved(currentSpec: any, nextSpec: any, specKeys: string[]) {\n let hasMarkerRemoval = false;\n\n const onlyMarkerRemoval = specKeys.every(key => {\n if (this._canRemoveMarkerComponentsWithoutRemake(key, currentSpec[key], nextSpec[key])) {\n hasMarkerRemoval = true;\n return true;\n }\n\n return isEqual(currentSpec[key], nextSpec[key]);\n });\n\n return hasMarkerRemoval && onlyMarkerRemoval;\n }\n\n private _isComponentSpecKey(key: string) {\n if (MARKER_COMPONENT_SPEC_KEYS[key]) {\n return true;\n }\n\n return this._components.some(component => {\n return (component.specKey || component.type) === key;\n });\n }\n\n private _isOnlyComponentSpecsChanged(currentSpec: object, nextSpec: object, specKeys: string[]) {\n let hasComponentSpecChange = false;\n const currentSpecRecord = currentSpec as Record<string, unknown>;\n const nextSpecRecord = nextSpec as Record<string, unknown>;\n\n const onlyComponentSpecChange = specKeys.every(key => {\n if (isEqual(currentSpecRecord[key], nextSpecRecord[key])) {\n return true;\n }\n if (this._isComponentSpecKey(key)) {\n hasComponentSpecChange = true;\n return true;\n }\n return false;\n });\n\n return hasComponentSpecChange && onlyComponentSpecChange;\n }\n\n private _isOnlySeriesSpecsChanged(currentSpec: object, nextSpec: object, specKeys: string[]) {\n let hasSeriesSpecChange = false;\n const currentSpecRecord = currentSpec as Record<string, unknown>;\n const nextSpecRecord = nextSpec as Record<string, unknown>;\n const seriesRelatedSpecKeys = this._specTransformer?.getSeriesRelatedSpecKeys() ?? {};\n\n const onlySeriesSpecChange = specKeys.every(key => {\n if (isEqual(currentSpecRecord[key], nextSpecRecord[key])) {\n return true;\n }\n if (seriesRelatedSpecKeys[key]) {\n hasSeriesSpecChange = true;\n return true;\n }\n return false;\n });\n\n return hasSeriesSpecChange && onlySeriesSpecChange;\n }\n\n private _isOnlyComponentOrSeriesSpecsChanged(currentSpec: object, nextSpec: object, specKeys: string[]) {\n let hasComponentOrSeriesSpecChange = false;\n const currentSpecRecord = currentSpec as Record<string, unknown>;\n const nextSpecRecord = nextSpec as Record<string, unknown>;\n const seriesRelatedSpecKeys = this._specTransformer?.getSeriesRelatedSpecKeys() ?? {};\n\n const onlyComponentOrSeriesSpecChange = specKeys.every(key => {\n if (isEqual(currentSpecRecord[key], nextSpecRecord[key])) {\n return true;\n }\n if (this._isComponentSpecKey(key) || seriesRelatedSpecKeys[key]) {\n hasComponentOrSeriesSpecChange = true;\n return true;\n }\n return false;\n });\n\n return hasComponentOrSeriesSpecChange && onlyComponentOrSeriesSpecChange;\n }\n\n private _canSkipChartDataStages(result: IUpdateSpecResult) {\n const effects = result.effects;\n\n return !!effects?.series && !effects.remake && !effects.data && !effects.scaleDomain && !result.reMake;\n }\n\n private _isComponentScaleDomainOnlyUpdate(result: IUpdateSpecResult) {\n const effects = result.effects;\n\n return (\n !!effects?.component &&\n !!effects.scaleDomain &&\n !result.reMake &&\n !result.reCompile &&\n !result.reSize &&\n !effects.remake &&\n !effects.compile &&\n !effects.data &&\n !effects.series &&\n !effects.animation &&\n !result.reTransformSpec &&\n !result.reAnimate &&\n !result.changeTheme &&\n !result.changeBackground\n );\n }\n\n private _reRunStackDataFlow() {\n if (!this._series.some(series => series.getStack?.())) {\n return;\n }\n\n (this as any)._stack?.stackAll?.();\n this._series.forEach(series => {\n if (series.getViewDataFilter()) {\n series.reTransformViewData();\n }\n });\n }\n\n private _getModelSpecIndex(specInfo: IModelSpecInfo) {\n const specPath = specInfo.specPath ?? [];\n const specIndex = specPath[specPath.length - 1];\n\n return typeof specIndex === 'number' ? specIndex : 0;\n }\n\n private _hasComponentForSpecInfo(key: string, specInfo: IModelSpecInfo) {\n const specIndex = this._getModelSpecIndex(specInfo);\n\n return this._components.some(component => {\n return (component.specKey || component.type) === key && component.getSpecIndex() === specIndex;\n });\n }\n\n private _createMissingMarkerComponentsForSpecs(\n result: IUpdateSpecResult,\n componentCache: Record<string, { specCount: number; componentCount: number }>\n ) {\n let createdCount = 0;\n let hasAutoRangeMarker = false;\n\n this._specTransformer?.forEachComponentInSpec(\n this._spec,\n (constructor, specInfo) => {\n if (result.reMake) {\n return;\n }\n const compSpecKey = constructor.specKey || constructor.type;\n\n if (!MARKER_COMPONENT_SPEC_KEYS[compSpecKey] || this._hasComponentForSpecInfo(compSpecKey, specInfo)) {\n return;\n }\n if (!this._isMarkerAdditionSpecSafeWithoutRemake(specInfo.spec)) {\n result.reMake = true;\n return;\n }\n\n this._createComponent(constructor, specInfo);\n if (componentCache[compSpecKey]) {\n componentCache[compSpecKey].componentCount++;\n }\n createdCount++;\n hasAutoRangeMarker = hasAutoRangeMarker || this._isAutoRangeMarkerSpec(specInfo.spec);\n },\n this._option.getSpecInfo()\n );\n\n if (!createdCount) {\n return;\n }\n\n result.change = true;\n result.effects = {\n ...result.effects,\n component: true,\n ...(hasAutoRangeMarker ? { scaleDomain: true } : null),\n layout: true,\n render: true\n };\n }\n\n private _removeMarkerComponentsForEmptySpecs(result: IUpdateSpecResult) {\n const removedComponents = this._components.filter(component => {\n const compSpecKey = component.specKey || component.type;\n const cmpSpec = (this._spec as any)[compSpecKey] ?? {};\n\n return this._canRemoveMarkerComponentsWithoutRemake(compSpecKey, [component.getSpec()], cmpSpec);\n });\n\n if (!removedComponents.length) {\n return;\n }\n\n removedComponents.forEach(component => {\n this._removeComponent(component);\n });\n result.change = true;\n result.effects = {\n ...result.effects,\n component: true,\n localOnly: true\n };\n }\n\n private _removeComponent(component: IComponent) {\n this._components = this._components.filter(c => c !== component);\n this._idMap.delete(component.id);\n component.getMarks().forEach(mark => {\n this.getCompiler().removeRootMark(mark);\n });\n component.release();\n }\n\n updateSeriesSpec(result: IUpdateSpecResult) {\n // 长度不同,直接判定为 remake\n if (this._spec.series.length !== this._series.length) {\n result.reMake = true;\n return;\n }\n this._series.forEach(s => {\n const spec = this._spec.series[s.getSpecIndex()];\n mergeUpdateResult(result, s.updateSpec(spec));\n });\n }\n\n getCanvas() {\n return this.getCompiler()?.getCanvas() ?? null;\n }\n\n private _updateLayoutRect(viewBox: IBoundsLike) {\n const canvasRect = this.getCanvasRect();\n let viewRect = canvasRect;\n if (viewBox) {\n this._viewBox = viewBox;\n const { x1 = 0, y1 = 0, x2, y2 } = viewBox;\n viewRect = {\n width: x2 - x1,\n height: y2 - y1\n };\n } else {\n this._viewBox = { x1: 0, y1: 0, x2: viewRect.width, y2: viewRect.height };\n }\n this._viewRect = viewRect;\n // resize 时 padding 也应该会发生变化 先计算\n this.padding = calcPadding(this._paddingSpec, viewRect, viewRect);\n this._layoutRect.width = viewRect.width - this.padding.left - this.padding.right;\n this._layoutRect.height = viewRect.height - this.padding.top - this.padding.bottom;\n this._layoutRect.x = this.padding.left;\n this._layoutRect.y = this.padding.top;\n\n this._event.emit(ChartEvent.layoutRectUpdate, { chart: this });\n }\n\n /** 设置当前全局主题 */\n setCurrentTheme() {\n // update chart config\n this.updateChartConfig({ change: true, reMake: false }, this._spec);\n\n // 需要重新布局\n this.resetLayoutItemTag();\n this.setLayoutTag(true, null, false);\n\n // 设置色板,只设置 colorScale 的 range\n this.updateGlobalScaleTheme();\n this.reInit();\n }\n\n reInit() {\n [...this._regions, ...this._series, ...this._components].forEach(model => {\n const specInfo = model.getSpecInfo();\n\n if (specInfo && specInfo.spec) {\n // 找不到,说明在更新spec中,组件被注销了\n model.reInit(specInfo.spec);\n }\n });\n }\n\n clear() {\n // call on recompile & release\n this.getAllModels().forEach(i => i.clear?.());\n }\n\n compile() {\n this.compileBackground();\n this.compileLayout();\n this.compileRegions();\n this.compileSeries();\n this.compileComponents();\n }\n\n afterCompile() {\n this.getAllRegions().forEach(r => {\n r.afterCompile?.();\n });\n this.getAllSeries().forEach(s => {\n s.afterCompile?.();\n });\n this.getAllComponents().forEach(c => {\n c.afterCompile?.();\n });\n }\n\n compileLayout() {\n const { width, height } = this.getCanvasRect();\n this.getCompiler().setSize(width, height);\n }\n\n compileBackground() {\n if (!this._backgroundMark) {\n return;\n }\n this._backgroundMark.compile();\n }\n\n compileRegions() {\n this._option.performanceHook?.beforeRegionCompile?.(this._option.globalInstance);\n this.getAllRegions().forEach(r => {\n r.compile();\n });\n this._option.performanceHook?.afterRegionCompile?.(this._option.globalInstance);\n }\n\n compileSeries() {\n this._option.performanceHook?.beforeSeriesCompile?.(this._option.globalInstance);\n this.getAllSeries().forEach(s => {\n s.compile();\n });\n this._option.performanceHook?.afterSeriesCompile?.(this._option.globalInstance);\n }\n\n compileComponents() {\n this._option.performanceHook?.beforeComponentCompile?.(this._option.globalInstance);\n this.getAllComponents().forEach(c => {\n c.compile();\n });\n this._option.performanceHook?.afterComponentCompile?.(this._option.globalInstance);\n }\n\n release(forceReleaseVRenderComponents: boolean = true) {\n /* release 前的处理 */\n if (forceReleaseVRenderComponents) {\n [...this._components, ...this._regions, ...this._series].forEach(m => {\n m.beforeRelease();\n });\n }\n\n /* 开始 release */\n super.release();\n // clear event , temporary function of chart items\n this.clear();\n\n [...this._components, ...this._regions, ...this._series].forEach(m => {\n m.release();\n });\n this._components = this._regions = this._series = [];\n this._spec = {} as any;\n // FIXME: type lint\n this._dataSet = this._globalScale = this._layoutFunc = null as unknown as any;\n this._layoutTag = false;\n this._idMap.clear();\n }\n\n onLayout() {\n this.layout();\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 const seriesArr = this.getAllSeries();\n for (const key in state) {\n if (isEmpty(state[key])) {\n continue;\n }\n const stateSpec = state[key];\n let stateInfo: IStateInfo = { stateValue: key };\n if (isFunction(stateSpec.filter)) {\n stateInfo = { filter: stateSpec.filter, ...stateInfo };\n } else {\n stateInfo = { ...stateSpec.filter, ...stateInfo };\n }\n if (stateSpec.level) {\n stateInfo.level = stateSpec.level;\n }\n seriesArr.forEach(series => {\n series.getMarks().forEach(m => {\n if (!m.stateStyle[key]) {\n return;\n }\n if (!filter || filter(series, m, key)) {\n m.state.changeStateInfo(stateInfo);\n m.updateMarkState(key);\n }\n });\n });\n }\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 this._setStateInDatum(STATE_VALUE_ENUM.STATE_SELECTED, 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 this._setStateInDatum(STATE_VALUE_ENUM.STATE_HOVER, datum, filter, region);\n }\n\n /**\n * 清除所有图元的状态\n *\n * @since 1.11.0\n */\n clearState(state: string) {\n this._interaction.clearByState(state);\n }\n\n /**\n * 清除所有图元的所有状态\n *\n * @since 1.12.4\n */\n clearAllStates() {\n this._interaction.clearAllStates();\n }\n\n /**\n * 清除所有图元的选中状态\n *\n * @since 1.11.0\n */\n clearSelected() {\n this.clearState(STATE_VALUE_ENUM.STATE_SELECTED);\n }\n\n /**\n * 清除所有图元的hover状态\n *\n * @since 1.11.0\n */\n clearHovered() {\n this.clearState(STATE_VALUE_ENUM.STATE_HOVER);\n }\n\n private _initEvent() {\n [ChartEvent.dataZoomChange, ChartEvent.scrollBarChange].forEach(event => {\n this._event.on(event, ({ value }) => {\n this._disableMarkAnimation(['exit', 'update']);\n const enableMarkAnimate = () => {\n this._enableMarkAnimation(['exit', 'update']);\n this._event.off(HOOK_EVENT.AFTER_MARK_RENDER_END, enableMarkAnimate);\n };\n this._event.on(HOOK_EVENT.AFTER_MARK_RENDER_END, enableMarkAnimate);\n });\n });\n }\n\n protected _enableMarkAnimation(states: string | string[]) {\n const marks = this.getAllMarks();\n marks.forEach(mark => mark.enableAnimationByState(states));\n }\n\n protected _disableMarkAnimation(states: string | string[]) {\n const marks = this.getAllMarks();\n marks.forEach(mark => mark.disableAnimationByState(states));\n }\n\n filterGraphicsByDatum(\n datum: MaybeArray<Datum> | null,\n opt: {\n filter?: (series: ISeries, mark: IMark) => boolean;\n region?: IRegionQuerier;\n getDatum?: (el: IMarkGraphic, mark: IMark, s: ISeries, r: IRegion) => Datum;\n callback?: (el: IMarkGraphic, mark: IMark, s: ISeries, r: IRegion) => void;\n regionCallback?: (pickElements: IMarkGraphic[], r: IRegion) => void;\n } = {}\n ) {\n datum = datum ? array(datum) : null;\n const keys = !datum ? null : Object.keys((datum as Datum[])[0]);\n const allElements = [] as IMarkGraphic[];\n const getDatumOfElement = opt.getDatum ?? getDatumOfGraphic;\n\n this.getRegionsInQuerier(opt.region).forEach(r => {\n const pickElements = [] as IMarkGraphic[];\n datum &&\n r.getSeries().forEach(s => {\n s.getMarks().forEach(m => {\n const graphics = m.getGraphics();\n if (!graphics || !graphics.length) {\n return;\n }\n if (!opt.filter || (isFunction(opt.filter) && opt.filter(s, m))) {\n const isCollect = isCollectionMark(m.type);\n\n if (isCollect) {\n graphics.filter(e => {\n const elDatum = getDatumOfElement(e, m, s, r) as Datum[];\n const isPick =\n // eslint-disable-next-line max-nested-callbacks, eqeqeq\n elDatum && (datum as Datum[]).every((d, index) => keys.every(k => d[k] == elDatum[index][k]));\n\n if (isPick) {\n pickElements.push(e);\n allElements.push(e);\n opt.callback && opt.callback(e, m, s, r);\n }\n });\n } else {\n if (datum.length > 1) {\n const datumTemp = (datum as Datum[]).slice();\n\n graphics.forEach(e => {\n const elDatum = getDatumOfElement(e, m, s, r) as Datum;\n // eslint-disable-next-line max-nested-callbacks, eqeqeq\n const index = elDatum && datumTemp.findIndex(d => keys.every(k => d[k] == elDatum[k]));\n if (index >= 0) {\n datumTemp.splice(index, 1);\n\n pickElements.push(e);\n allElements.push(e);\n opt.callback && opt.callback(e, m, s, r);\n }\n });\n } else {\n const el = graphics.find(e => {\n const elDatum = getDatumOfElement(e, m, s, r) as Datum;\n // eslint-disable-next-line eqeqeq\n return elDatum && keys.every(k => (datum as Datum[])[0][k] == elDatum[k]);\n });\n\n if (el) {\n pickElements.push(el);\n allElements.push(el);\n opt.callback && opt.callback(el, m, s, r);\n }\n }\n }\n }\n });\n });\n\n opt.regionCallback && opt.regionCallback(pickElements, r);\n });\n\n return allElements;\n }\n\n protected _setStateInDatum(\n stateKey: string,\n d: MaybeArray<Datum> | null,\n filter?: (series: ISeries, mark: IMark) => boolean,\n region?: IRegionQuerier\n ) {\n if (!d) {\n this._interaction.clearByState(stateKey);\n return;\n }\n\n const pickGraphics = this.filterGraphicsByDatum(d, {\n filter,\n region\n });\n this._interaction.updateStateOfGraphics(stateKey, pickGraphics);\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 // event\n let dimensionInfo: IDimensionInfo[] | null = null;\n Array.from(this._event.getComposedEventMap().values()).forEach(e => {\n const { eventType, event } = e;\n if (eventType === DimensionEventEnum.dimensionHover || eventType === DimensionEventEnum.dimensionClick) {\n const info = event.dispatch(value, opt) as [];\n if (info?.length) {\n dimensionInfo = info;\n }\n }\n });\n const isUnableValue =\n isNil(value) || !dimensionInfo || dimensionInfo.every(d => isDiscrete(d.axis.getScale().type) && isNil(d.index));\n\n const isUnableTooltip =\n // 如果数据本身不可用\n isUnableValue ||\n // 或者数据为空\n dimensionInfo.every(d => isDiscrete(d.axis.getScale().type) && d.data.every(_data => _data.datum.length === 0));\n // tooltip\n if (opt.tooltip !== false) {\n const tooltip = this.getComponentsByType(ComponentTypeEnum.tooltip)[0] as unknown as ITooltip;\n\n if (tooltip?.getVisible()) {\n if (isUnableValue || isUnableTooltip) {\n (<any>tooltip).hideTooltip?.();\n } else {\n const dataFilter: { [key: string]: any } = {};\n dimensionInfo.forEach((d: IDimensionInfo) => {\n const { axis, value, data } = d;\n const isY = axis.getOrient() === 'left' || axis.getOrient() === 'right';\n data.forEach(d => {\n const field = isY ? (<ICartesianSeries>d.series).fieldY[0] : (<ICartesianSeries>d.series).fieldX[0];\n\n dataFilter[field] = d.datum?.[0]?.[field] ?? value;\n });\n });\n tooltip.showTooltip(dataFilter, opt.showTooltipOption);\n }\n }\n }\n if (opt.crosshair !== false) {\n const crosshair = this.getComponentsByType(ComponentTypeEnum.cartesianCrosshair)[0] as unknown as ICrossHair;\n\n if (crosshair && crosshair.clearAxisValue && crosshair.setAxisValue) {\n if (isUnableValue) {\n crosshair.hideCrosshair();\n } else {\n crosshair.showCrosshair(dimensionInfo as { axis: IAxis; value: string | number }[]);\n }\n }\n }\n }\n\n showCrosshair(cb: (axis: IAxis) => false | string | number) {\n const crosshair =\n this.getComponentsByType(ComponentTypeEnum.cartesianCrosshair)[0] ??\n this.getComponentsByType(ComponentTypeEnum.polarCrosshair)[0];\n if (!crosshair) {\n return;\n }\n const axes = this.getComponentsByKey('axes') as IAxis[];\n const dimInfo: { axis: IAxis; value: string | number }[] = [];\n axes.forEach(axis => {\n const value = cb(axis);\n if (value !== false) {\n dimInfo.push({\n axis,\n value\n });\n }\n });\n (crosshair as ICrossHair).showCrosshair(dimInfo);\n }\n\n getColorScheme() {\n return this._option.getTheme?.('colorScheme');\n }\n}\n"]}
@@ -9,8 +9,9 @@ import { LayoutZIndex } from "../../constant/layout";
9
9
  export class GaugeChartSpecTransformer extends ProgressLikeChartSpecTransformer {
10
10
  _getDefaultSeriesSpec(spec) {
11
11
  const series = super._getDefaultSeriesSpec(spec);
12
- return series.radiusField = spec.radiusField, series.pin = spec.pin, series.pinBackground = spec.pinBackground,
13
- series.pointer = spec.pointer, series;
12
+ return this._addSeriesRelatedSpecKeys([ "pin", "pinBackground", "pointer" ]), series.radiusField = spec.radiusField,
13
+ series.pin = spec.pin, series.pinBackground = spec.pinBackground, series.pointer = spec.pointer,
14
+ series;
14
15
  }
15
16
  _getDefaultCircularProgressSeriesSpec(spec) {
16
17
  const series = super._getDefaultSeriesSpec(spec);
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/chart/gauge/gauge-transformer.ts"],"names":[],"mappings":"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","file":"gauge-transformer.js","sourcesContent":["import { isNil } from '@visactor/vutils';\nimport type { ICircularProgressSeriesSpec, IGaugeSeriesSpec } from '../../series';\nimport { SeriesTypeEnum } from '../../series/interface';\nimport type { AdaptiveSpec, ISeriesSpec } from '../../typings';\nimport { ProgressLikeChartSpecTransformer } from '../polar';\nimport type { IGaugeChartSpec } from './interface';\nimport { LayoutZIndex } from '../../constant/layout';\nimport type { IPolarAxisSpec, IPolarLinearAxisSpec } from '../../component';\n\nexport class GaugeChartSpecTransformer<\n T extends IGaugeChartSpec = IGaugeChartSpec\n> extends ProgressLikeChartSpecTransformer<AdaptiveSpec<T, 'axes'>> {\n protected _getDefaultSeriesSpec(spec: T): any {\n const series = super._getDefaultSeriesSpec(spec);\n\n series.radiusField = spec.radiusField;\n series.pin = spec.pin;\n series.pinBackground = spec.pinBackground;\n series.pointer = spec.pointer;\n return series;\n }\n\n protected _getDefaultCircularProgressSeriesSpec(spec: T): any {\n const series: any = super._getDefaultSeriesSpec(spec);\n series.type = SeriesTypeEnum.circularProgress;\n return series;\n }\n\n transformSpec(spec: AdaptiveSpec<T, 'axes'>): void {\n super.transformSpec(spec);\n\n /** 充当仪表图非指针部分的系列 */\n let backgroundSeries = spec.series?.find(\n (series: ISeriesSpec) => series.type === SeriesTypeEnum.gauge || series.type === SeriesTypeEnum.circularProgress\n ) as ICircularProgressSeriesSpec | IGaugeSeriesSpec;\n if (isNil(backgroundSeries)) {\n backgroundSeries = spec.gauge ?? this._getDefaultCircularProgressSeriesSpec(spec as any);\n\n // 补充可能缺失的属性\n if (backgroundSeries.type === 'circularProgress') {\n if (isNil(backgroundSeries.radiusField) && isNil(backgroundSeries.categoryField)) {\n backgroundSeries.radiusField = spec.radiusField ?? (spec.categoryField as string) ?? spec.seriesField;\n }\n if (isNil(backgroundSeries.valueField) && isNil(backgroundSeries.angleField)) {\n backgroundSeries.valueField = spec.valueField ?? spec.angleField;\n }\n }\n\n if (spec.series.length === 1) {\n spec.series.push(backgroundSeries);\n } else {\n spec.series.forEach((s: ISeriesSpec) => {\n if (s.type !== backgroundSeries.type) {\n return;\n }\n Object.keys(backgroundSeries).forEach(k => {\n if (!(k in s)) {\n s[k] = backgroundSeries[k];\n }\n });\n });\n }\n }\n\n if (backgroundSeries.type === SeriesTypeEnum.circularProgress) {\n this._transformProgressAxisSpec(\n spec,\n {\n orient: 'angle',\n visible: true,\n domainLine: {\n visible: false\n },\n grid: {\n visible: false\n }\n },\n {\n orient: 'radius',\n visible: false\n },\n {\n zIndex: LayoutZIndex.Region + 50 // 仪表图特例:轴在 region 上层\n }\n );\n } else {\n this._transformGaugeAxisSpec(spec);\n }\n }\n\n protected _transformGaugeAxisSpec(spec: AdaptiveSpec<T, 'axes'>): void {\n if (!spec.axes) {\n spec.axes = [];\n }\n const axesPtr: {\n radius: IPolarLinearAxisSpec | null;\n angle: IPolarLinearAxisSpec | null;\n } = { radius: null, angle: null };\n (spec.axes ?? []).forEach((axis: IPolarAxisSpec) => {\n const { orient } = axis;\n if (orient === 'radius') {\n axesPtr.radius = axis;\n }\n if (orient === 'angle') {\n axesPtr.angle = axis;\n }\n });\n if (!axesPtr.angle) {\n axesPtr.angle = {\n orient: 'angle',\n visible: true\n };\n spec.axes.push(axesPtr.angle);\n }\n if (!axesPtr.radius) {\n axesPtr.radius = {\n orient: 'radius',\n visible: false\n };\n spec.axes.push(axesPtr.radius);\n }\n\n // 自动补充缺失的配置\n if (isNil(axesPtr.angle.type)) {\n axesPtr.angle.type = 'linear';\n }\n if (isNil(axesPtr.radius.type)) {\n axesPtr.radius.type = 'linear';\n }\n if (isNil(axesPtr.angle.zIndex)) {\n axesPtr.angle.zIndex = LayoutZIndex.Region + 50; // 仪表图特例:轴在 region 上层\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/chart/gauge/gauge-transformer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEzC,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,OAAO,EAAE,gCAAgC,EAAE,MAAM,UAAU,CAAC;AAE5D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAGrD,MAAM,OAAO,yBAEX,SAAQ,gCAAyD;IACvD,qBAAqB,CAAC,IAAO;QACrC,MAAM,MAAM,GAAG,KAAK,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAEjD,IAAI,CAAC,yBAAyB,CAAC,CAAC,KAAK,EAAE,eAAe,EAAE,SAAS,CAAC,CAAC,CAAC;QACpE,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACtC,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACtB,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QAC1C,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC9B,OAAO,MAAM,CAAC;IAChB,CAAC;IAES,qCAAqC,CAAC,IAAO;QACrD,MAAM,MAAM,GAAQ,KAAK,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;QACtD,MAAM,CAAC,IAAI,GAAG,cAAc,CAAC,gBAAgB,CAAC;QAC9C,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,aAAa,CAAC,IAA6B;;QACzC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAG1B,IAAI,gBAAgB,GAAG,MAAA,IAAI,CAAC,MAAM,0CAAE,IAAI,CACtC,CAAC,MAAmB,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,gBAAgB,CAC/D,CAAC;QACpD,IAAI,KAAK,CAAC,gBAAgB,CAAC,EAAE;YAC3B,gBAAgB,GAAG,MAAA,IAAI,CAAC,KAAK,mCAAI,IAAI,CAAC,qCAAqC,CAAC,IAAW,CAAC,CAAC;YAGzF,IAAI,gBAAgB,CAAC,IAAI,KAAK,kBAAkB,EAAE;gBAChD,IAAI,KAAK,CAAC,gBAAgB,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,gBAAgB,CAAC,aAAa,CAAC,EAAE;oBAChF,gBAAgB,CAAC,WAAW,GAAG,MAAA,MAAA,IAAI,CAAC,WAAW,mCAAK,IAAI,CAAC,aAAwB,mCAAI,IAAI,CAAC,WAAW,CAAC;iBACvG;gBACD,IAAI,KAAK,CAAC,gBAAgB,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE;oBAC5E,gBAAgB,CAAC,UAAU,GAAG,MAAA,IAAI,CAAC,UAAU,mCAAI,IAAI,CAAC,UAAU,CAAC;iBAClE;aACF;YAED,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC5B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;aACpC;iBAAM;gBACL,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAc,EAAE,EAAE;oBACrC,IAAI,CAAC,CAAC,IAAI,KAAK,gBAAgB,CAAC,IAAI,EAAE;wBACpC,OAAO;qBACR;oBACD,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;wBACxC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;4BACb,CAAC,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;yBAC5B;oBACH,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;aACJ;SACF;QAED,IAAI,gBAAgB,CAAC,IAAI,KAAK,cAAc,CAAC,gBAAgB,EAAE;YAC7D,IAAI,CAAC,0BAA0B,CAC7B,IAAI,EACJ;gBACE,MAAM,EAAE,OAAO;gBACf,OAAO,EAAE,IAAI;gBACb,UAAU,EAAE;oBACV,OAAO,EAAE,KAAK;iBACf;gBACD,IAAI,EAAE;oBACJ,OAAO,EAAE,KAAK;iBACf;aACF,EACD;gBACE,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE,KAAK;aACf,EACD;gBACE,MAAM,EAAE,YAAY,CAAC,MAAM,GAAG,EAAE;aACjC,CACF,CAAC;SACH;aAAM;YACL,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;SACpC;IACH,CAAC;IAES,uBAAuB,CAAC,IAA6B;;QAC7D,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;SAChB;QACD,MAAM,OAAO,GAGT,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QAClC,CAAC,MAAA,IAAI,CAAC,IAAI,mCAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,IAAoB,EAAE,EAAE;YACjD,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;YACxB,IAAI,MAAM,KAAK,QAAQ,EAAE;gBACvB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;aACvB;YACD,IAAI,MAAM,KAAK,OAAO,EAAE;gBACtB,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;aACtB;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;YAClB,OAAO,CAAC,KAAK,GAAG;gBACd,MAAM,EAAE,OAAO;gBACf,OAAO,EAAE,IAAI;aACd,CAAC;YACF,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;SAC/B;QACD,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YACnB,OAAO,CAAC,MAAM,GAAG;gBACf,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE,KAAK;aACf,CAAC;YACF,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;SAChC;QAGD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YAC7B,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,QAAQ,CAAC;SAC/B;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;YAC9B,OAAO,CAAC,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC;SAChC;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;YAC/B,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,GAAG,EAAE,CAAC;SACjD;IACH,CAAC;CACF","file":"gauge-transformer.js","sourcesContent":["import { isNil } from '@visactor/vutils';\nimport type { ICircularProgressSeriesSpec, IGaugeSeriesSpec } from '../../series';\nimport { SeriesTypeEnum } from '../../series/interface';\nimport type { AdaptiveSpec, ISeriesSpec } from '../../typings';\nimport { ProgressLikeChartSpecTransformer } from '../polar';\nimport type { IGaugeChartSpec } from './interface';\nimport { LayoutZIndex } from '../../constant/layout';\nimport type { IPolarAxisSpec, IPolarLinearAxisSpec } from '../../component';\n\nexport class GaugeChartSpecTransformer<\n T extends IGaugeChartSpec = IGaugeChartSpec\n> extends ProgressLikeChartSpecTransformer<AdaptiveSpec<T, 'axes'>> {\n protected _getDefaultSeriesSpec(spec: T): any {\n const series = super._getDefaultSeriesSpec(spec);\n\n this._addSeriesRelatedSpecKeys(['pin', 'pinBackground', 'pointer']);\n series.radiusField = spec.radiusField;\n series.pin = spec.pin;\n series.pinBackground = spec.pinBackground;\n series.pointer = spec.pointer;\n return series;\n }\n\n protected _getDefaultCircularProgressSeriesSpec(spec: T): any {\n const series: any = super._getDefaultSeriesSpec(spec);\n series.type = SeriesTypeEnum.circularProgress;\n return series;\n }\n\n transformSpec(spec: AdaptiveSpec<T, 'axes'>): void {\n super.transformSpec(spec);\n\n /** 充当仪表图非指针部分的系列 */\n let backgroundSeries = spec.series?.find(\n (series: ISeriesSpec) => series.type === SeriesTypeEnum.gauge || series.type === SeriesTypeEnum.circularProgress\n ) as ICircularProgressSeriesSpec | IGaugeSeriesSpec;\n if (isNil(backgroundSeries)) {\n backgroundSeries = spec.gauge ?? this._getDefaultCircularProgressSeriesSpec(spec as any);\n\n // 补充可能缺失的属性\n if (backgroundSeries.type === 'circularProgress') {\n if (isNil(backgroundSeries.radiusField) && isNil(backgroundSeries.categoryField)) {\n backgroundSeries.radiusField = spec.radiusField ?? (spec.categoryField as string) ?? spec.seriesField;\n }\n if (isNil(backgroundSeries.valueField) && isNil(backgroundSeries.angleField)) {\n backgroundSeries.valueField = spec.valueField ?? spec.angleField;\n }\n }\n\n if (spec.series.length === 1) {\n spec.series.push(backgroundSeries);\n } else {\n spec.series.forEach((s: ISeriesSpec) => {\n if (s.type !== backgroundSeries.type) {\n return;\n }\n Object.keys(backgroundSeries).forEach(k => {\n if (!(k in s)) {\n s[k] = backgroundSeries[k];\n }\n });\n });\n }\n }\n\n if (backgroundSeries.type === SeriesTypeEnum.circularProgress) {\n this._transformProgressAxisSpec(\n spec,\n {\n orient: 'angle',\n visible: true,\n domainLine: {\n visible: false\n },\n grid: {\n visible: false\n }\n },\n {\n orient: 'radius',\n visible: false\n },\n {\n zIndex: LayoutZIndex.Region + 50 // 仪表图特例:轴在 region 上层\n }\n );\n } else {\n this._transformGaugeAxisSpec(spec);\n }\n }\n\n protected _transformGaugeAxisSpec(spec: AdaptiveSpec<T, 'axes'>): void {\n if (!spec.axes) {\n spec.axes = [];\n }\n const axesPtr: {\n radius: IPolarLinearAxisSpec | null;\n angle: IPolarLinearAxisSpec | null;\n } = { radius: null, angle: null };\n (spec.axes ?? []).forEach((axis: IPolarAxisSpec) => {\n const { orient } = axis;\n if (orient === 'radius') {\n axesPtr.radius = axis;\n }\n if (orient === 'angle') {\n axesPtr.angle = axis;\n }\n });\n if (!axesPtr.angle) {\n axesPtr.angle = {\n orient: 'angle',\n visible: true\n };\n spec.axes.push(axesPtr.angle);\n }\n if (!axesPtr.radius) {\n axesPtr.radius = {\n orient: 'radius',\n visible: false\n };\n spec.axes.push(axesPtr.radius);\n }\n\n // 自动补充缺失的配置\n if (isNil(axesPtr.angle.type)) {\n axesPtr.angle.type = 'linear';\n }\n if (isNil(axesPtr.radius.type)) {\n axesPtr.radius.type = 'linear';\n }\n if (isNil(axesPtr.angle.zIndex)) {\n axesPtr.angle.zIndex = LayoutZIndex.Region + 50; // 仪表图特例:轴在 region 上层\n }\n }\n}\n"]}
@@ -112,6 +112,7 @@ export interface IChartSpecTransformer {
112
112
  transformSpec: (spec: any) => void;
113
113
  transformModelSpec: (spec: any) => IChartSpecInfo;
114
114
  createSpecInfo: (chartSpec: any, transform?: (constructor: IModelConstructor, specInfo: IModelSpecInfo, chartSpecInfo?: IChartSpecInfo) => void) => IChartSpecInfo;
115
+ getSeriesRelatedSpecKeys: () => Record<string, true>;
115
116
  forEachRegionInSpec: <K>(spec: any, callbackfn: (constructor: IRegionConstructor, specInfo: IModelSpecInfo, chartSpecInfo?: IChartSpecInfo) => K, chartSpecInfo?: IChartSpecInfo) => K[];
116
117
  forEachSeriesInSpec: <K>(spec: any, callbackfn: (constructor: ISeriesConstructor, specInfo: IModelSpecInfo, chartSpecInfo?: IChartSpecInfo) => K, chartSpecInfo?: IChartSpecInfo) => K[];
117
118
  forEachComponentInSpec: <K>(spec: any, callbackfn: (constructor: IComponentConstructor, specInfo: IModelSpecInfo, chartSpecInfo?: IChartSpecInfo) => K, chartSpecInfo?: IChartSpecInfo) => K[];