@visactor/vchart 1.12.6 → 1.12.8

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 (365) hide show
  1. package/build/es5/index.js +2 -2
  2. package/build/index.js +2116 -2517
  3. package/build/index.min.js +1 -1
  4. package/build/tsconfig.tsbuildinfo +1 -1
  5. package/cjs/chart/base/base-chart.d.ts +1 -0
  6. package/cjs/chart/base/base-chart.js +15 -9
  7. package/cjs/chart/base/base-chart.js.map +1 -1
  8. package/cjs/chart/chart-meta/data.d.ts +1 -2
  9. package/cjs/chart/chart-meta/data.js +11 -11
  10. package/cjs/chart/chart-meta/data.js.map +1 -1
  11. package/cjs/chart/gauge/interface.d.ts +1 -1
  12. package/cjs/chart/gauge/interface.js.map +1 -1
  13. package/cjs/chart/treemap/interface.d.ts +1 -1
  14. package/cjs/chart/treemap/interface.js.map +1 -1
  15. package/cjs/chart/venn/interface.d.ts +2 -2
  16. package/cjs/chart/venn/interface.js.map +1 -1
  17. package/cjs/component/axis/base-axis.js +1 -1
  18. package/cjs/component/axis/base-axis.js.map +1 -1
  19. package/cjs/component/axis/cartesian/axis.js +9 -6
  20. package/cjs/component/axis/cartesian/axis.js.map +1 -1
  21. package/cjs/component/axis/cartesian/interface/common.d.ts +1 -0
  22. package/cjs/component/axis/cartesian/interface/common.js.map +1 -1
  23. package/cjs/component/axis/polar/axis.js.map +1 -1
  24. package/cjs/component/axis/polar/interface/spec.js.map +1 -1
  25. package/cjs/component/data-zoom/data-filter-base-component.js +10 -7
  26. package/cjs/component/data-zoom/data-filter-base-component.js.map +1 -1
  27. package/cjs/component/data-zoom/util.js +11 -3
  28. package/cjs/component/data-zoom/util.js.map +1 -1
  29. package/cjs/component/geo/geo-coordinate.js +5 -2
  30. package/cjs/component/geo/geo-coordinate.js.map +1 -1
  31. package/cjs/component/interface/index.d.ts +0 -1
  32. package/cjs/component/interface/index.js +1 -1
  33. package/cjs/component/interface/index.js.map +1 -1
  34. package/cjs/component/label/util.js +1 -1
  35. package/cjs/component/label/util.js.map +1 -1
  36. package/cjs/component/title/interface/spec.d.ts +3 -3
  37. package/cjs/component/title/interface/spec.js.map +1 -1
  38. package/cjs/component/tooltip/constant.d.ts +5 -4
  39. package/cjs/component/tooltip/constant.js +7 -7
  40. package/cjs/component/tooltip/constant.js.map +1 -1
  41. package/cjs/component/tooltip/interface/common.d.ts +1 -1
  42. package/cjs/component/tooltip/interface/common.js.map +1 -1
  43. package/cjs/component/tooltip/interface/spec.d.ts +8 -0
  44. package/cjs/component/tooltip/interface/spec.js.map +1 -1
  45. package/cjs/component/tooltip/interface/theme.d.ts +2 -2
  46. package/cjs/component/tooltip/interface/theme.js.map +1 -1
  47. package/cjs/component/tooltip/processor/base.d.ts +3 -5
  48. package/cjs/component/tooltip/processor/base.js +24 -27
  49. package/cjs/component/tooltip/processor/base.js.map +1 -1
  50. package/cjs/component/tooltip/processor/group-tooltip.js +1 -1
  51. package/cjs/component/tooltip/processor/group-tooltip.js.map +1 -1
  52. package/cjs/component/tooltip/processor/mark-tooltip.js +2 -2
  53. package/cjs/component/tooltip/processor/mark-tooltip.js.map +1 -1
  54. package/cjs/component/tooltip/tooltip-transformer.js +0 -1
  55. package/cjs/component/tooltip/tooltip-transformer.js.map +1 -1
  56. package/cjs/component/tooltip/tooltip.d.ts +9 -4
  57. package/cjs/component/tooltip/tooltip.js +64 -53
  58. package/cjs/component/tooltip/tooltip.js.map +1 -1
  59. package/cjs/component/tooltip/utils/common.d.ts +6 -4
  60. package/cjs/component/tooltip/utils/common.js +52 -7
  61. package/cjs/component/tooltip/utils/common.js.map +1 -1
  62. package/cjs/component/tooltip/utils/get-spec.d.ts +4 -4
  63. package/cjs/component/tooltip/utils/get-spec.js +20 -82
  64. package/cjs/component/tooltip/utils/get-spec.js.map +1 -1
  65. package/cjs/component/tooltip/utils/get-value.d.ts +1 -2
  66. package/cjs/component/tooltip/utils/get-value.js +2 -12
  67. package/cjs/component/tooltip/utils/get-value.js.map +1 -1
  68. package/cjs/component/tooltip/utils/index.d.ts +0 -1
  69. package/cjs/component/tooltip/utils/index.js +1 -2
  70. package/cjs/component/tooltip/utils/index.js.map +1 -1
  71. package/cjs/constant/correlation.js +2 -1
  72. package/cjs/constant/layout.js +1 -2
  73. package/cjs/core/index.d.ts +1 -1
  74. package/cjs/core/index.js +1 -1
  75. package/cjs/core/index.js.map +1 -1
  76. package/cjs/core/vchart.js +16 -16
  77. package/cjs/core/vchart.js.map +1 -1
  78. package/cjs/data/initialize.d.ts +1 -2
  79. package/cjs/data/initialize.js +5 -5
  80. package/cjs/data/initialize.js.map +1 -1
  81. package/cjs/data/transforms/pie.d.ts +3 -0
  82. package/cjs/data/transforms/pie.js +8 -3
  83. package/cjs/data/transforms/pie.js.map +1 -1
  84. package/cjs/model/interface.d.ts +14 -0
  85. package/cjs/model/interface.js.map +1 -1
  86. package/cjs/plugin/chart/media-query/media-query.d.ts +1 -0
  87. package/cjs/plugin/chart/media-query/media-query.js +3 -1
  88. package/cjs/plugin/chart/media-query/media-query.js.map +1 -1
  89. package/cjs/plugin/chart/plugin-service.d.ts +2 -0
  90. package/cjs/plugin/chart/plugin-service.js +5 -0
  91. package/cjs/plugin/chart/plugin-service.js.map +1 -1
  92. package/cjs/plugin/components/tooltip-handler/base.d.ts +1 -13
  93. package/cjs/plugin/components/tooltip-handler/base.js +83 -220
  94. package/cjs/plugin/components/tooltip-handler/base.js.map +1 -1
  95. package/cjs/plugin/components/tooltip-handler/canvas/canvas-tooltip-handler.js +1 -1
  96. package/cjs/plugin/components/tooltip-handler/canvas/canvas-tooltip-handler.js.map +1 -1
  97. package/cjs/plugin/components/tooltip-handler/dom/dom-tooltip-handler.d.ts +0 -1
  98. package/cjs/plugin/components/tooltip-handler/dom/dom-tooltip-handler.js +7 -19
  99. package/cjs/plugin/components/tooltip-handler/dom/dom-tooltip-handler.js.map +1 -1
  100. package/cjs/plugin/components/tooltip-handler/dom/model/content-column-model.js +16 -14
  101. package/cjs/plugin/components/tooltip-handler/dom/model/content-column-model.js.map +1 -1
  102. package/cjs/plugin/components/tooltip-handler/dom/model/title-model.js +2 -2
  103. package/cjs/plugin/components/tooltip-handler/dom/model/title-model.js.map +1 -1
  104. package/cjs/plugin/components/tooltip-handler/interface/style.d.ts +1 -2
  105. package/cjs/plugin/components/tooltip-handler/interface/style.js.map +1 -1
  106. package/cjs/plugin/components/tooltip-handler/utils/attribute.js +7 -7
  107. package/cjs/plugin/components/tooltip-handler/utils/attribute.js.map +1 -1
  108. package/cjs/plugin/components/tooltip-handler/utils/common.js.map +1 -1
  109. package/cjs/plugin/components/tooltip-handler/utils/position.d.ts +3 -5
  110. package/cjs/plugin/components/tooltip-handler/utils/position.js +22 -29
  111. package/cjs/plugin/components/tooltip-handler/utils/position.js.map +1 -1
  112. package/cjs/region/interface.d.ts +3 -1
  113. package/cjs/region/interface.js.map +1 -1
  114. package/cjs/series/base/base-series.js +4 -5
  115. package/cjs/series/base/base-series.js.map +1 -1
  116. package/cjs/series/base/tooltip-helper.d.ts +30 -6
  117. package/cjs/series/base/tooltip-helper.js +80 -73
  118. package/cjs/series/base/tooltip-helper.js.map +1 -1
  119. package/cjs/series/box-plot/tooltip-helper.d.ts +2 -2
  120. package/cjs/series/box-plot/tooltip-helper.js +26 -67
  121. package/cjs/series/box-plot/tooltip-helper.js.map +1 -1
  122. package/cjs/series/cartesian/cartesian.d.ts +1 -1
  123. package/cjs/series/circle-packing/circle-packing.js +1 -2
  124. package/cjs/series/circle-packing/circle-packing.js.map +1 -1
  125. package/cjs/series/dot/tooltip-helper.d.ts +8 -2
  126. package/cjs/series/dot/tooltip-helper.js +42 -41
  127. package/cjs/series/dot/tooltip-helper.js.map +1 -1
  128. package/cjs/series/funnel/funnel.d.ts +1 -0
  129. package/cjs/series/funnel/funnel.js +7 -6
  130. package/cjs/series/funnel/funnel.js.map +1 -1
  131. package/cjs/series/funnel/interface.d.ts +3 -1
  132. package/cjs/series/funnel/interface.js.map +1 -1
  133. package/cjs/series/gauge/pointer-tooltip-helper.d.ts +2 -1
  134. package/cjs/series/gauge/pointer-tooltip-helper.js +3 -8
  135. package/cjs/series/gauge/pointer-tooltip-helper.js.map +1 -1
  136. package/cjs/series/heatmap/tooltip-helper.d.ts +2 -3
  137. package/cjs/series/heatmap/tooltip-helper.js +3 -5
  138. package/cjs/series/heatmap/tooltip-helper.js.map +1 -1
  139. package/cjs/series/interface/tooltip-helper.d.ts +5 -4
  140. package/cjs/series/interface/tooltip-helper.js.map +1 -1
  141. package/cjs/series/link/tooltip-helper.d.ts +5 -2
  142. package/cjs/series/link/tooltip-helper.js +26 -27
  143. package/cjs/series/link/tooltip-helper.js.map +1 -1
  144. package/cjs/series/liquid/tooltip-helper.d.ts +4 -5
  145. package/cjs/series/liquid/tooltip-helper.js +2 -22
  146. package/cjs/series/liquid/tooltip-helper.js.map +1 -1
  147. package/cjs/series/pie/pie.js +6 -2
  148. package/cjs/series/pie/pie.js.map +1 -1
  149. package/cjs/series/progress/linear/tooltip-helper.d.ts +2 -3
  150. package/cjs/series/progress/linear/tooltip-helper.js +2 -11
  151. package/cjs/series/progress/linear/tooltip-helper.js.map +1 -1
  152. package/cjs/series/range-area/tooltip-helper.d.ts +1 -3
  153. package/cjs/series/range-area/tooltip-helper.js +2 -50
  154. package/cjs/series/range-area/tooltip-helper.js.map +1 -1
  155. package/cjs/series/range-column/tooltip-helper.d.ts +1 -2
  156. package/cjs/series/range-column/tooltip-helper.js +2 -19
  157. package/cjs/series/range-column/tooltip-helper.js.map +1 -1
  158. package/cjs/series/sankey/sankey.d.ts +1 -1
  159. package/cjs/series/sankey/tooltip-helper.d.ts +3 -3
  160. package/cjs/series/sankey/tooltip-helper.js +10 -57
  161. package/cjs/series/sankey/tooltip-helper.js.map +1 -1
  162. package/cjs/theme/builtin/common/series/linear-progress.js +4 -1
  163. package/cjs/theme/builtin/common/series/linear-progress.js.map +1 -1
  164. package/cjs/theme/builtin/dark/color-scheme.js +2 -1
  165. package/cjs/theme/builtin/dark/color-scheme.js.map +1 -1
  166. package/cjs/theme/builtin/light/color-scheme.js +2 -1
  167. package/cjs/theme/builtin/light/color-scheme.js.map +1 -1
  168. package/cjs/typings/spec/common.d.ts +3 -3
  169. package/cjs/typings/spec/common.js.map +1 -1
  170. package/cjs/typings/tooltip/position.d.ts +1 -0
  171. package/cjs/typings/tooltip/position.js.map +1 -1
  172. package/cjs/typings/tooltip/shape.d.ts +0 -1
  173. package/cjs/typings/tooltip/shape.js.map +1 -1
  174. package/cjs/typings/tooltip/tooltip.d.ts +7 -0
  175. package/cjs/typings/tooltip/tooltip.js.map +1 -1
  176. package/esm/chart/base/base-chart.d.ts +1 -0
  177. package/esm/chart/base/base-chart.js +16 -10
  178. package/esm/chart/base/base-chart.js.map +1 -1
  179. package/esm/chart/chart-meta/data.d.ts +1 -2
  180. package/esm/chart/chart-meta/data.js +12 -10
  181. package/esm/chart/chart-meta/data.js.map +1 -1
  182. package/esm/chart/gauge/interface.d.ts +1 -1
  183. package/esm/chart/gauge/interface.js.map +1 -1
  184. package/esm/chart/treemap/interface.d.ts +1 -1
  185. package/esm/chart/treemap/interface.js.map +1 -1
  186. package/esm/chart/venn/interface.d.ts +2 -2
  187. package/esm/chart/venn/interface.js.map +1 -1
  188. package/esm/component/axis/base-axis.js +1 -1
  189. package/esm/component/axis/base-axis.js.map +1 -1
  190. package/esm/component/axis/cartesian/axis.js +10 -7
  191. package/esm/component/axis/cartesian/axis.js.map +1 -1
  192. package/esm/component/axis/cartesian/interface/common.d.ts +1 -0
  193. package/esm/component/axis/cartesian/interface/common.js.map +1 -1
  194. package/esm/component/axis/polar/axis.js.map +1 -1
  195. package/esm/component/axis/polar/interface/spec.js.map +1 -1
  196. package/esm/component/data-zoom/data-filter-base-component.js +7 -6
  197. package/esm/component/data-zoom/data-filter-base-component.js.map +1 -1
  198. package/esm/component/data-zoom/util.js +11 -2
  199. package/esm/component/data-zoom/util.js.map +1 -1
  200. package/esm/component/geo/geo-coordinate.js +5 -2
  201. package/esm/component/geo/geo-coordinate.js.map +1 -1
  202. package/esm/component/interface/index.d.ts +0 -1
  203. package/esm/component/interface/index.js +0 -2
  204. package/esm/component/interface/index.js.map +1 -1
  205. package/esm/component/label/util.js +1 -1
  206. package/esm/component/label/util.js.map +1 -1
  207. package/esm/component/title/interface/spec.d.ts +3 -3
  208. package/esm/component/title/interface/spec.js.map +1 -1
  209. package/esm/component/tooltip/constant.d.ts +5 -4
  210. package/esm/component/tooltip/constant.js +6 -3
  211. package/esm/component/tooltip/constant.js.map +1 -1
  212. package/esm/component/tooltip/interface/common.d.ts +1 -1
  213. package/esm/component/tooltip/interface/common.js.map +1 -1
  214. package/esm/component/tooltip/interface/spec.d.ts +8 -0
  215. package/esm/component/tooltip/interface/spec.js.map +1 -1
  216. package/esm/component/tooltip/interface/theme.d.ts +2 -2
  217. package/esm/component/tooltip/interface/theme.js.map +1 -1
  218. package/esm/component/tooltip/processor/base.d.ts +3 -5
  219. package/esm/component/tooltip/processor/base.js +24 -28
  220. package/esm/component/tooltip/processor/base.js.map +1 -1
  221. package/esm/component/tooltip/processor/group-tooltip.js +1 -1
  222. package/esm/component/tooltip/processor/group-tooltip.js.map +1 -1
  223. package/esm/component/tooltip/processor/mark-tooltip.js +2 -2
  224. package/esm/component/tooltip/processor/mark-tooltip.js.map +1 -1
  225. package/esm/component/tooltip/tooltip-transformer.js +0 -1
  226. package/esm/component/tooltip/tooltip-transformer.js.map +1 -1
  227. package/esm/component/tooltip/tooltip.d.ts +9 -4
  228. package/esm/component/tooltip/tooltip.js +66 -54
  229. package/esm/component/tooltip/tooltip.js.map +1 -1
  230. package/esm/component/tooltip/utils/common.d.ts +6 -4
  231. package/esm/component/tooltip/utils/common.js +46 -5
  232. package/esm/component/tooltip/utils/common.js.map +1 -1
  233. package/esm/component/tooltip/utils/get-spec.d.ts +4 -4
  234. package/esm/component/tooltip/utils/get-spec.js +24 -80
  235. package/esm/component/tooltip/utils/get-spec.js.map +1 -1
  236. package/esm/component/tooltip/utils/get-value.d.ts +1 -2
  237. package/esm/component/tooltip/utils/get-value.js +1 -9
  238. package/esm/component/tooltip/utils/get-value.js.map +1 -1
  239. package/esm/component/tooltip/utils/index.d.ts +0 -1
  240. package/esm/component/tooltip/utils/index.js +0 -2
  241. package/esm/component/tooltip/utils/index.js.map +1 -1
  242. package/esm/constant/correlation.js +2 -1
  243. package/esm/constant/layout.js +1 -2
  244. package/esm/core/index.d.ts +1 -1
  245. package/esm/core/index.js +1 -1
  246. package/esm/core/index.js.map +1 -1
  247. package/esm/core/vchart.js +16 -15
  248. package/esm/core/vchart.js.map +1 -1
  249. package/esm/data/initialize.d.ts +1 -2
  250. package/esm/data/initialize.js +6 -7
  251. package/esm/data/initialize.js.map +1 -1
  252. package/esm/data/transforms/pie.d.ts +3 -0
  253. package/esm/data/transforms/pie.js +6 -3
  254. package/esm/data/transforms/pie.js.map +1 -1
  255. package/esm/model/interface.d.ts +14 -0
  256. package/esm/model/interface.js.map +1 -1
  257. package/esm/plugin/chart/media-query/media-query.d.ts +1 -0
  258. package/esm/plugin/chart/media-query/media-query.js +3 -1
  259. package/esm/plugin/chart/media-query/media-query.js.map +1 -1
  260. package/esm/plugin/chart/plugin-service.d.ts +2 -0
  261. package/esm/plugin/chart/plugin-service.js +5 -0
  262. package/esm/plugin/chart/plugin-service.js.map +1 -1
  263. package/esm/plugin/components/tooltip-handler/base.d.ts +1 -13
  264. package/esm/plugin/components/tooltip-handler/base.js +79 -212
  265. package/esm/plugin/components/tooltip-handler/base.js.map +1 -1
  266. package/esm/plugin/components/tooltip-handler/canvas/canvas-tooltip-handler.js +1 -1
  267. package/esm/plugin/components/tooltip-handler/canvas/canvas-tooltip-handler.js.map +1 -1
  268. package/esm/plugin/components/tooltip-handler/dom/dom-tooltip-handler.d.ts +0 -1
  269. package/esm/plugin/components/tooltip-handler/dom/dom-tooltip-handler.js +6 -19
  270. package/esm/plugin/components/tooltip-handler/dom/dom-tooltip-handler.js.map +1 -1
  271. package/esm/plugin/components/tooltip-handler/dom/model/content-column-model.js +16 -14
  272. package/esm/plugin/components/tooltip-handler/dom/model/content-column-model.js.map +1 -1
  273. package/esm/plugin/components/tooltip-handler/dom/model/title-model.js +2 -2
  274. package/esm/plugin/components/tooltip-handler/dom/model/title-model.js.map +1 -1
  275. package/esm/plugin/components/tooltip-handler/interface/style.d.ts +1 -2
  276. package/esm/plugin/components/tooltip-handler/interface/style.js.map +1 -1
  277. package/esm/plugin/components/tooltip-handler/utils/attribute.js +7 -7
  278. package/esm/plugin/components/tooltip-handler/utils/attribute.js.map +1 -1
  279. package/esm/plugin/components/tooltip-handler/utils/common.js.map +1 -1
  280. package/esm/plugin/components/tooltip-handler/utils/position.d.ts +3 -5
  281. package/esm/plugin/components/tooltip-handler/utils/position.js +20 -25
  282. package/esm/plugin/components/tooltip-handler/utils/position.js.map +1 -1
  283. package/esm/region/interface.d.ts +3 -1
  284. package/esm/region/interface.js.map +1 -1
  285. package/esm/series/base/base-series.js +4 -5
  286. package/esm/series/base/base-series.js.map +1 -1
  287. package/esm/series/base/tooltip-helper.d.ts +30 -6
  288. package/esm/series/base/tooltip-helper.js +85 -74
  289. package/esm/series/base/tooltip-helper.js.map +1 -1
  290. package/esm/series/box-plot/tooltip-helper.d.ts +2 -2
  291. package/esm/series/box-plot/tooltip-helper.js +26 -67
  292. package/esm/series/box-plot/tooltip-helper.js.map +1 -1
  293. package/esm/series/cartesian/cartesian.d.ts +1 -1
  294. package/esm/series/circle-packing/circle-packing.js +1 -2
  295. package/esm/series/circle-packing/circle-packing.js.map +1 -1
  296. package/esm/series/dot/tooltip-helper.d.ts +8 -2
  297. package/esm/series/dot/tooltip-helper.js +42 -41
  298. package/esm/series/dot/tooltip-helper.js.map +1 -1
  299. package/esm/series/funnel/funnel.d.ts +1 -0
  300. package/esm/series/funnel/funnel.js +7 -6
  301. package/esm/series/funnel/funnel.js.map +1 -1
  302. package/esm/series/funnel/interface.d.ts +3 -1
  303. package/esm/series/funnel/interface.js.map +1 -1
  304. package/esm/series/gauge/pointer-tooltip-helper.d.ts +2 -1
  305. package/esm/series/gauge/pointer-tooltip-helper.js +2 -9
  306. package/esm/series/gauge/pointer-tooltip-helper.js.map +1 -1
  307. package/esm/series/heatmap/tooltip-helper.d.ts +2 -3
  308. package/esm/series/heatmap/tooltip-helper.js +2 -6
  309. package/esm/series/heatmap/tooltip-helper.js.map +1 -1
  310. package/esm/series/interface/tooltip-helper.d.ts +5 -4
  311. package/esm/series/interface/tooltip-helper.js.map +1 -1
  312. package/esm/series/link/tooltip-helper.d.ts +5 -2
  313. package/esm/series/link/tooltip-helper.js +26 -27
  314. package/esm/series/link/tooltip-helper.js.map +1 -1
  315. package/esm/series/liquid/tooltip-helper.d.ts +4 -5
  316. package/esm/series/liquid/tooltip-helper.js +2 -22
  317. package/esm/series/liquid/tooltip-helper.js.map +1 -1
  318. package/esm/series/pie/pie.js +7 -3
  319. package/esm/series/pie/pie.js.map +1 -1
  320. package/esm/series/progress/linear/tooltip-helper.d.ts +2 -3
  321. package/esm/series/progress/linear/tooltip-helper.js +2 -11
  322. package/esm/series/progress/linear/tooltip-helper.js.map +1 -1
  323. package/esm/series/range-area/tooltip-helper.d.ts +1 -3
  324. package/esm/series/range-area/tooltip-helper.js +2 -50
  325. package/esm/series/range-area/tooltip-helper.js.map +1 -1
  326. package/esm/series/range-column/tooltip-helper.d.ts +1 -2
  327. package/esm/series/range-column/tooltip-helper.js +2 -19
  328. package/esm/series/range-column/tooltip-helper.js.map +1 -1
  329. package/esm/series/sankey/sankey.d.ts +1 -1
  330. package/esm/series/sankey/tooltip-helper.d.ts +3 -3
  331. package/esm/series/sankey/tooltip-helper.js +10 -57
  332. package/esm/series/sankey/tooltip-helper.js.map +1 -1
  333. package/esm/theme/builtin/common/series/linear-progress.js +4 -1
  334. package/esm/theme/builtin/common/series/linear-progress.js.map +1 -1
  335. package/esm/theme/builtin/dark/color-scheme.js +2 -1
  336. package/esm/theme/builtin/dark/color-scheme.js.map +1 -1
  337. package/esm/theme/builtin/light/color-scheme.js +2 -1
  338. package/esm/theme/builtin/light/color-scheme.js.map +1 -1
  339. package/esm/typings/spec/common.d.ts +3 -3
  340. package/esm/typings/spec/common.js.map +1 -1
  341. package/esm/typings/tooltip/position.d.ts +1 -0
  342. package/esm/typings/tooltip/position.js.map +1 -1
  343. package/esm/typings/tooltip/shape.d.ts +0 -1
  344. package/esm/typings/tooltip/shape.js.map +1 -1
  345. package/esm/typings/tooltip/tooltip.d.ts +7 -0
  346. package/esm/typings/tooltip/tooltip.js.map +1 -1
  347. package/package.json +17 -17
  348. package/cjs/component/interface/tooltip-helper.d.ts +0 -5
  349. package/cjs/component/interface/tooltip-helper.js +0 -6
  350. package/cjs/component/interface/tooltip-helper.js.map +0 -1
  351. package/cjs/component/tooltip/utils/compose.d.ts +0 -4
  352. package/cjs/component/tooltip/utils/compose.js +0 -120
  353. package/cjs/component/tooltip/utils/compose.js.map +0 -1
  354. package/cjs/model/tooltip-helper.d.ts +0 -29
  355. package/cjs/model/tooltip-helper.js +0 -19
  356. package/cjs/model/tooltip-helper.js.map +0 -1
  357. package/esm/component/interface/tooltip-helper.d.ts +0 -5
  358. package/esm/component/interface/tooltip-helper.js +0 -2
  359. package/esm/component/interface/tooltip-helper.js.map +0 -1
  360. package/esm/component/tooltip/utils/compose.d.ts +0 -4
  361. package/esm/component/tooltip/utils/compose.js +0 -105
  362. package/esm/component/tooltip/utils/compose.js.map +0 -1
  363. package/esm/model/tooltip-helper.d.ts +0 -29
  364. package/esm/model/tooltip-helper.js +0 -11
  365. package/esm/model/tooltip-helper.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/data/initialize.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAS,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE9D,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAGvD,OAAO,EAAE,gCAAgC,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAG3D,MAAM,UAAU,cAAc;AAE9B,CAAC;AAED,MAAM,UAAU,WAAW;AAE3B,CAAC;AAED,MAAM,UAAU,QAAQ;AAExB,CAAC;AAED,MAAM,UAAU,YAAY;AAE5B,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAiB,EAAE,OAAiB,EAAE,EAAqB;IAC9F,OAAO,GAAG,OAAO,YAAY,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IACjE,gCAAgC,CAAC,OAAO,EAAE,cAAc,EAAE,YAAY,CAAC,CAAC;IACxE,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC3C,QAAQ,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE;QACxB,IAAI,EAAE,UAAU;KACjB,CAAC,CAAC;IACH,QAAQ,CAAC,SAAS,CAAC;QACjB,IAAI,EAAE,cAAc;QACpB,KAAK,EAAE,cAAc,CAAC,YAAY;KACnC,CAAC,CAAC;IACH,OAAO,QAAQ,CAAC;AAClB,CAAC;AAQD,MAAM,UAAU,cAAc,CAC5B,IAA4B,EAC5B,OAAgB,EAChB,kBAA8B,EAAE,EAChC,MAAuB,EAAE;;IAEzB,IAAI,IAAI,YAAY,QAAQ,EAAE;QAC5B,OAAO,IAAI,CAAC;KACb;IAED,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC;IAC7E,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAmB,CAAC;IAC1F,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAEtC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;IACzC,IAAI,QAAkB,CAAC;IACvB,MAAM,aAAa,GAAG,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;IACjE,IAAI,aAAa,EAAE;QACjB,QAAQ,GAAG,aAAa,CAAC;KAC1B;SAAM;QACL,MAAM,UAAU,GAAqB,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QAElD,IAAI,MAAM,EAAE;YACV,UAAU,CAAC,MAAM,GAAG,MAAiB,CAAC;SACvC;QACD,QAAQ,GAAG,IAAI,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAC7C,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;YAElC,MAAM,YAAY,GAAG,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;YACxE,IAAI,CAAC,YAAY,EAAE;gBACjB,CAAC,MAAA,GAAG,CAAC,OAAO,mCAAI,KAAK,CAAC,CAAC,8BAA8B,UAAU,EAAE,CAAC,CAAC;gBACnE,OAAO,IAAI,CAAC;aACb;YAED,QAAQ,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,EAAE;gBAC7B,IAAI,EAAE,UAAU;aACjB,CAAC,CAAC;YACH,QAAQ,CAAC,SAAS,CAAC;gBACjB,IAAI,EAAE,cAAc;aACrB,CAAC,CAAC;SACJ;aAAM,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE;YAE5C,MAAM,YAAY,GAAG,eAAe,CAAC,aAAa,CAAC,CAAC;YACpD,IAAI,CAAC,YAAY,EAAE;gBACjB,CAAC,MAAA,GAAG,CAAC,OAAO,mCAAI,KAAK,CAAC,CAAC,iCAAiC,aAAa,EAAE,CAAC,CAAC;gBACzE,OAAO,IAAI,CAAC;aACb;YAED,QAAQ,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,EAAE;gBAC7B,IAAI,EAAE,UAAU;aACjB,CAAC,CAAC;YACH,QAAQ,CAAC,SAAS,CAAC;gBACjB,IAAI,EAAE,cAAc;aACrB,CAAC,CAAC;SACJ;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YAChC,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;SAChC;aAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAE,MAA4B,CAAC,IAAI,CAAC,CAAC,EAAE;YAE9G,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,MAAC,MAA4B,mCAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;SAC1E;aAAM;YAEL,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACnB,IAAI,CAAC,wBAAwB,CAAC,CAAC;SAChC;QAED,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,EAAE;YACnC,UAAU,CAAC,OAAO,CAAC,CAAC,SAA4B,EAAE,EAAE;gBAClD,IAAI,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;oBACxC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;iBAC/B;YACH,CAAC,CAAC,CAAC;SACJ;KACF;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,QAAkB,EAAE,IAAiB,EAAE,UAAmB;IAC7F,IAAI,CAAC,QAAQ,EAAE;QACb,OAAO;KACR;IACD,IAAI,IAAI,CAAC,MAAM,EAAE;QACf,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,MAAa,EAAE,UAAU,CAAC,CAAC;KACpD;IACD,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAa,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,CAAN,IAAY,cAYX;AAZD,WAAY,cAAc;IACxB,qEAAkB,CAAA;IAElB,sEAAkB,CAAA;IAClB,wEAAmB,CAAA;IAEnB,gEAAe,CAAA;IACf,kEAAgB,CAAA;IAChB,oEAAiB,CAAA;IAEjB,wEAAmB,CAAA;IACnB,oEAAiB,CAAA;AACnB,CAAC,EAZW,cAAc,KAAd,cAAc,QAYzB","file":"initialize.js","sourcesContent":["import type { utilFunctionCtx } from '../typings/params';\nimport { warn, error } from '../util/debug';\nimport { isString, merge, cloneDeep } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { DataSet, DataView } from '@visactor/vdataset';\nimport type { IDataViewOptions, IFields, ITransformOptions } from '@visactor/vdataset';\nimport type { IDataValues, SheetParseOptions } from '../typings/spec/common';\nimport { registerDataSetInstanceTransform } from './register';\nimport { copyDataView } from './transforms/copy-data-view';\nimport type { IParserOptions } from '@visactor/vdataset';\n\nexport function initializeData() {\n // todo\n}\n\nexport function initCSVData() {\n // todo\n}\n\nexport function initData() {\n // todo\n}\n\nexport function initFoldData() {\n // todo\n}\n\nexport function dataViewFromDataView(rawData: DataView, dataSet?: DataSet, op?: IDataViewOptions) {\n dataSet = dataSet instanceof DataSet ? dataSet : rawData.dataSet;\n registerDataSetInstanceTransform(dataSet, 'copyDataView', copyDataView);\n const viewData = new DataView(dataSet, op);\n viewData.parse([rawData], {\n type: 'dataview'\n });\n viewData.transform({\n type: 'copyDataView',\n level: TransformLevel.copyDataView\n });\n return viewData;\n}\n\n/**\n * 将数据实例化为 DataView\n * @param data 数据\n * @param dataSet 数据集\n * @returns\n */\nexport function dataToDataView(\n data: DataView | IDataValues,\n dataSet: DataSet,\n sourceDataViews: DataView[] = [],\n ctx: utilFunctionCtx = {}\n) {\n if (data instanceof DataView) {\n return data;\n }\n\n const { id, values = [], fromDataIndex, fromDataId, transforms = [] } = data;\n const parser = (data.parser ? cloneDeep(data.parser) : { clone: true }) as IParserOptions;\n const fields = cloneDeep(data.fields);\n // set parser.clone default value to true\n parser.clone = !(parser.clone === false);\n let dataView: DataView;\n const existDataView = sourceDataViews.find(dv => dv.name === id);\n if (existDataView) {\n dataView = existDataView;\n } else {\n const initOption: IDataViewOptions = { name: id };\n // fields 支持在dataView初始化参数中传入\n if (fields) {\n initOption.fields = fields as IFields;\n }\n dataView = new DataView(dataSet, initOption);\n if (typeof fromDataId === 'string') {\n // 使用id查找上游dataview\n const fromDataView = sourceDataViews.find(dv => dv.name === fromDataId);\n if (!fromDataView) {\n (ctx.onError ?? error)(`no data matches fromDataId ${fromDataId}`);\n return null;\n }\n\n dataView.parse([fromDataView], {\n type: 'dataview'\n });\n dataView.transform({\n type: 'copyDataView'\n });\n } else if (typeof fromDataIndex === 'number') {\n // 使用index查找上游dataview\n const fromDataView = sourceDataViews[fromDataIndex];\n if (!fromDataView) {\n (ctx.onError ?? error)(`no data matches fromDataIndex ${fromDataIndex}`);\n return null;\n }\n\n dataView.parse([fromDataView], {\n type: 'dataview'\n });\n dataView.transform({\n type: 'copyDataView'\n });\n } else if (Array.isArray(values)) {\n dataView.parse(values, parser);\n } else if (isString(values) && (!parser || ['csv', 'dsv', 'tsv'].includes((parser as SheetParseOptions).type))) {\n // 内置 csv parser\n dataView.parse(values, (parser as SheetParseOptions) ?? { type: 'csv' });\n } else {\n // 如果 values 不符合要求,则默认设置为 [],同时打印错误信息\n dataView.parse([]);\n warn('values should be array');\n }\n // 处理transform\n if (transforms && transforms.length) {\n transforms.forEach((transform: ITransformOptions) => {\n if (dataSet.getTransform(transform.type)) {\n dataView.transform(transform);\n }\n });\n }\n }\n\n return dataView;\n}\n\nexport function updateDataViewInData(dataView: DataView, data: IDataValues, forceMerge: boolean) {\n if (!dataView) {\n return;\n }\n if (data.fields) {\n dataView.setFields(data.fields as any, forceMerge);\n }\n dataView.parseNewData(data.values, data.parser as any);\n}\n\nexport enum TransformLevel {\n copyDataView = -10,\n\n treemapFilter = -8,\n treemapFlatten = -7,\n\n dotObjFlat = -7,\n linkDotInfo = -7,\n sankeyLayout = -7,\n\n dataZoomFilter = -6,\n legendFilter = -5\n}\n"]}
1
+ {"version":3,"sources":["../src/data/initialize.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAGvD,OAAO,EAAE,gCAAgC,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAG3D,MAAM,UAAU,cAAc;AAE9B,CAAC;AAED,MAAM,UAAU,WAAW;AAE3B,CAAC;AAED,MAAM,UAAU,QAAQ;AAExB,CAAC;AAED,MAAM,UAAU,YAAY;AAE5B,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAiB,EAAE,OAAiB,EAAE,EAAqB;IAC9F,OAAO,GAAG,OAAO,YAAY,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IACjE,gCAAgC,CAAC,OAAO,EAAE,cAAc,EAAE,YAAY,CAAC,CAAC;IACxE,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC3C,QAAQ,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE;QACxB,IAAI,EAAE,UAAU;KACjB,CAAC,CAAC;IACH,QAAQ,CAAC,SAAS,CAAC;QACjB,IAAI,EAAE,cAAc;QACpB,KAAK,EAAE,cAAc,CAAC,YAAY;KACnC,CAAC,CAAC;IACH,OAAO,QAAQ,CAAC;AAClB,CAAC;AAQD,MAAM,UAAU,cAAc,CAAC,IAA4B,EAAE,OAAgB,EAAE,kBAA8B,EAAE;;IAC7G,IAAI,IAAI,YAAY,QAAQ,EAAE;QAC5B,OAAO,IAAI,CAAC;KACb;IAED,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC;IAC7E,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAmB,CAAC;IAC1F,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAEtC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;IACzC,IAAI,QAAkB,CAAC;IACvB,MAAM,aAAa,GAAG,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;IACjE,IAAI,aAAa,EAAE;QACjB,QAAQ,GAAG,aAAa,CAAC;KAC1B;SAAM;QACL,MAAM,UAAU,GAAqB,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QAElD,IAAI,MAAM,EAAE;YACV,UAAU,CAAC,MAAM,GAAG,MAAiB,CAAC;SACvC;QACD,QAAQ,GAAG,IAAI,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAC7C,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;YAElC,MAAM,YAAY,GAAG,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;YACxE,IAAI,CAAC,YAAY,EAAE;gBACjB,IAAI,CAAC,8BAA8B,UAAU,EAAE,CAAC,CAAC;gBACjD,OAAO,IAAI,CAAC;aACb;YAED,QAAQ,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,EAAE;gBAC7B,IAAI,EAAE,UAAU;aACjB,CAAC,CAAC;YACH,QAAQ,CAAC,SAAS,CAAC;gBACjB,IAAI,EAAE,cAAc;aACrB,CAAC,CAAC;SACJ;aAAM,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE;YAE5C,MAAM,YAAY,GAAG,eAAe,CAAC,aAAa,CAAC,CAAC;YACpD,IAAI,CAAC,YAAY,EAAE;gBACjB,IAAI,CAAC,iCAAiC,aAAa,EAAE,CAAC,CAAC;gBACvD,OAAO,IAAI,CAAC;aACb;YAED,QAAQ,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,EAAE;gBAC7B,IAAI,EAAE,UAAU;aACjB,CAAC,CAAC;YACH,QAAQ,CAAC,SAAS,CAAC;gBACjB,IAAI,EAAE,cAAc;aACrB,CAAC,CAAC;SACJ;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YAChC,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;SAChC;aAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAE,MAA4B,CAAC,IAAI,CAAC,CAAC,EAAE;YAE9G,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,MAAC,MAA4B,mCAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;SAC1E;aAAM;YAEL,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACnB,IAAI,CAAC,wBAAwB,CAAC,CAAC;SAChC;QAED,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,EAAE;YACnC,UAAU,CAAC,OAAO,CAAC,CAAC,SAA4B,EAAE,EAAE;gBAClD,IAAI,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;oBACxC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;iBAC/B;YACH,CAAC,CAAC,CAAC;SACJ;KACF;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,QAAkB,EAAE,IAAiB,EAAE,UAAmB;IAC7F,IAAI,CAAC,QAAQ,EAAE;QACb,OAAO;KACR;IACD,IAAI,IAAI,CAAC,MAAM,EAAE;QACf,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,MAAa,EAAE,UAAU,CAAC,CAAC;KACpD;IACD,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAa,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,CAAN,IAAY,cAYX;AAZD,WAAY,cAAc;IACxB,qEAAkB,CAAA;IAElB,sEAAkB,CAAA;IAClB,wEAAmB,CAAA;IAEnB,gEAAe,CAAA;IACf,kEAAgB,CAAA;IAChB,oEAAiB,CAAA;IAEjB,wEAAmB,CAAA;IACnB,oEAAiB,CAAA;AACnB,CAAC,EAZW,cAAc,KAAd,cAAc,QAYzB","file":"initialize.js","sourcesContent":["import { warn } from '../util/debug';\nimport { isString, cloneDeep } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { DataSet, DataView } from '@visactor/vdataset';\nimport type { IDataViewOptions, IFields, ITransformOptions } from '@visactor/vdataset';\nimport type { IDataValues, SheetParseOptions } from '../typings/spec/common';\nimport { registerDataSetInstanceTransform } from './register';\nimport { copyDataView } from './transforms/copy-data-view';\nimport type { IParserOptions } from '@visactor/vdataset';\n\nexport function initializeData() {\n // todo\n}\n\nexport function initCSVData() {\n // todo\n}\n\nexport function initData() {\n // todo\n}\n\nexport function initFoldData() {\n // todo\n}\n\nexport function dataViewFromDataView(rawData: DataView, dataSet?: DataSet, op?: IDataViewOptions) {\n dataSet = dataSet instanceof DataSet ? dataSet : rawData.dataSet;\n registerDataSetInstanceTransform(dataSet, 'copyDataView', copyDataView);\n const viewData = new DataView(dataSet, op);\n viewData.parse([rawData], {\n type: 'dataview'\n });\n viewData.transform({\n type: 'copyDataView',\n level: TransformLevel.copyDataView\n });\n return viewData;\n}\n\n/**\n * 将数据实例化为 DataView\n * @param data 数据\n * @param dataSet 数据集\n * @returns\n */\nexport function dataToDataView(data: DataView | IDataValues, dataSet: DataSet, sourceDataViews: DataView[] = []) {\n if (data instanceof DataView) {\n return data;\n }\n\n const { id, values = [], fromDataIndex, fromDataId, transforms = [] } = data;\n const parser = (data.parser ? cloneDeep(data.parser) : { clone: true }) as IParserOptions;\n const fields = cloneDeep(data.fields);\n // set parser.clone default value to true\n parser.clone = !(parser.clone === false);\n let dataView: DataView;\n const existDataView = sourceDataViews.find(dv => dv.name === id);\n if (existDataView) {\n dataView = existDataView;\n } else {\n const initOption: IDataViewOptions = { name: id };\n // fields 支持在dataView初始化参数中传入\n if (fields) {\n initOption.fields = fields as IFields;\n }\n dataView = new DataView(dataSet, initOption);\n if (typeof fromDataId === 'string') {\n // 使用id查找上游dataview\n const fromDataView = sourceDataViews.find(dv => dv.name === fromDataId);\n if (!fromDataView) {\n warn(`no data matches fromDataId ${fromDataId}`);\n return null;\n }\n\n dataView.parse([fromDataView], {\n type: 'dataview'\n });\n dataView.transform({\n type: 'copyDataView'\n });\n } else if (typeof fromDataIndex === 'number') {\n // 使用index查找上游dataview\n const fromDataView = sourceDataViews[fromDataIndex];\n if (!fromDataView) {\n warn(`no data matches fromDataIndex ${fromDataIndex}`);\n return null;\n }\n\n dataView.parse([fromDataView], {\n type: 'dataview'\n });\n dataView.transform({\n type: 'copyDataView'\n });\n } else if (Array.isArray(values)) {\n dataView.parse(values, parser);\n } else if (isString(values) && (!parser || ['csv', 'dsv', 'tsv'].includes((parser as SheetParseOptions).type))) {\n // 内置 csv parser\n dataView.parse(values, (parser as SheetParseOptions) ?? { type: 'csv' });\n } else {\n // 如果 values 不符合要求,则默认设置为 [],同时打印错误信息\n dataView.parse([]);\n warn('values should be array');\n }\n // 处理transform\n if (transforms && transforms.length) {\n transforms.forEach((transform: ITransformOptions) => {\n if (dataSet.getTransform(transform.type)) {\n dataView.transform(transform);\n }\n });\n }\n }\n\n return dataView;\n}\n\nexport function updateDataViewInData(dataView: DataView, data: IDataValues, forceMerge: boolean) {\n if (!dataView) {\n return;\n }\n if (data.fields) {\n dataView.setFields(data.fields as any, forceMerge);\n }\n dataView.parseNewData(data.values, data.parser as any);\n}\n\nexport enum TransformLevel {\n copyDataView = -10,\n\n treemapFilter = -8,\n treemapFlatten = -7,\n\n dotObjFlat = -7,\n linkDotInfo = -7,\n sankeyLayout = -7,\n\n dataZoomFilter = -6,\n legendFilter = -5\n}\n"]}
@@ -1,4 +1,5 @@
1
1
  import type { DataView } from '@visactor/vdataset';
2
+ import type { Datum } from '../../typings';
2
3
  export interface IPieOpt {
3
4
  angleField: () => string;
4
5
  startAngle: () => number;
@@ -13,7 +14,9 @@ export interface IPieOpt {
13
14
  asK: string;
14
15
  showAllZero: boolean;
15
16
  supportNegative: boolean;
17
+ showEmptyCircle: boolean;
16
18
  }
17
19
  export declare const pie: (originData: Array<DataView>, op: IPieOpt) => {
18
20
  [x: string]: any;
19
21
  }[];
22
+ export declare const isDataEmpty: (data: Datum[], angleField: string, supportNegative: boolean) => boolean;
@@ -4,16 +4,17 @@ import { getPercentValue } from "../../util/math";
4
4
 
5
5
  import { ARC_TRANSFORM_VALUE } from "../../constant/polar";
6
6
 
7
- import { computeQuadrant } from "@visactor/vutils";
7
+ import { computeQuadrant, isNil } from "@visactor/vutils";
8
8
 
9
9
  function transformInvalidValue(value) {
10
10
  return couldBeValidNumber(value) ? Number.parseFloat(value) : 0;
11
11
  }
12
12
 
13
13
  export const pie = (originData, op) => {
14
- const data = originData.map((datum => Object.assign({}, datum)));
14
+ const {asStartAngle: asStartAngle, asEndAngle: asEndAngle, asMiddleAngle: asMiddleAngle, asRadian: asRadian, asRatio: asRatio, asQuadrant: asQuadrant, asK: asK, showAllZero: showAllZero, supportNegative: supportNegative, showEmptyCircle: showEmptyCircle} = op, angleField = op.angleField(), startAngle = op.startAngle(), endAngle = op.endAngle(), minAngle = op.minAngle(), data = originData.map((datum => Object.assign({}, datum)));
15
15
  if (!data || 0 === data.length) return data;
16
- const {asStartAngle: asStartAngle, asEndAngle: asEndAngle, asMiddleAngle: asMiddleAngle, asRadian: asRadian, asRatio: asRatio, asQuadrant: asQuadrant, asK: asK, showAllZero: showAllZero, supportNegative: supportNegative} = op, angleField = op.angleField(), startAngle = op.startAngle(), endAngle = op.endAngle(), minAngle = op.minAngle(), appendArcInfo = (data, startAngle, angle) => {
16
+ if (!showAllZero && showEmptyCircle && isDataEmpty(data, angleField, supportNegative)) return data;
17
+ const appendArcInfo = (data, startAngle, angle) => {
17
18
  data[asStartAngle] = startAngle, data[asEndAngle] = startAngle + angle, data[asMiddleAngle] = startAngle + angle / 2,
18
19
  data[asRadian] = angle, data[asQuadrant] = computeQuadrant(startAngle + angle / 2);
19
20
  };
@@ -53,4 +54,6 @@ export const pie = (originData, op) => {
53
54
  }
54
55
  return data;
55
56
  };
57
+
58
+ export const isDataEmpty = (data, angleField, supportNegative) => !!isNil(data) || (0 === data.length || (!!data.every((datum => 0 === transformInvalidValue(datum[angleField]))) || !supportNegative && 0 === data.reduce(((sum, datum) => sum + transformInvalidValue(datum[angleField])), 0)));
56
59
  //# sourceMappingURL=pie.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/data/transforms/pie.ts"],"names":[],"mappings":"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","file":"pie.js","sourcesContent":["import type { DataView } from '@visactor/vdataset';\nimport type { Datum } from '../../typings';\nimport { couldBeValidNumber } from '../../util/type';\nimport { getPercentValue } from '../../util/math';\nimport { ARC_TRANSFORM_VALUE } from '../../constant/polar';\nimport { computeQuadrant } from '@visactor/vutils';\n\nexport interface IPieOpt {\n angleField: () => string;\n startAngle: () => number;\n endAngle: () => number;\n minAngle: () => number;\n\n asStartAngle: string;\n asEndAngle: string;\n asMiddleAngle: string;\n asRadian: string;\n asRatio: string;\n asQuadrant: string;\n asK: string;\n showAllZero: boolean;\n supportNegative: boolean;\n}\n\nfunction transformInvalidValue(value: any) {\n if (!couldBeValidNumber(value)) {\n return 0;\n }\n return Number.parseFloat(value);\n}\n\nexport const pie = (originData: Array<DataView>, op: IPieOpt) => {\n const data = originData.map((datum: Datum) => ({ ...datum }));\n if (!data || data.length === 0) {\n return data;\n }\n const { asStartAngle, asEndAngle, asMiddleAngle, asRadian, asRatio, asQuadrant, asK, showAllZero, supportNegative } =\n op;\n\n const angleField = op.angleField();\n const startAngle = op.startAngle();\n const endAngle = op.endAngle();\n const minAngle = op.minAngle();\n\n const appendArcInfo = (data: Datum, startAngle: number, angle: number) => {\n data[asStartAngle] = startAngle;\n data[asEndAngle] = startAngle + angle;\n data[asMiddleAngle] = startAngle + angle / 2;\n data[asRadian] = angle;\n data[asQuadrant] = computeQuadrant(startAngle + angle / 2);\n };\n\n let total = 0;\n let max = -Infinity;\n let isAllZero = true;\n for (let index = 0; index < data.length; index++) {\n const angleFieldValue = supportNegative\n ? Math.abs(transformInvalidValue(data[index][angleField]))\n : transformInvalidValue(data[index][angleField]);\n total += angleFieldValue;\n max = Math.max(angleFieldValue, max);\n if (isAllZero && angleFieldValue !== 0) {\n isAllZero = false;\n }\n\n data[index][ARC_TRANSFORM_VALUE] = angleFieldValue;\n }\n\n const valueList = data.map(d => Number(d[angleField]));\n const angleRange = endAngle - startAngle;\n let lastAngle = startAngle;\n let restAngle = angleRange;\n let largeThanMinAngleTotal = 0;\n const percents = getPercentValue(valueList);\n\n data.forEach((d, i) => {\n const angleFieldValue = d[ARC_TRANSFORM_VALUE];\n const ratio = total ? angleFieldValue / total : 0;\n let radian = ratio * angleRange;\n\n if (radian < minAngle) {\n radian = minAngle;\n restAngle -= minAngle;\n } else {\n largeThanMinAngleTotal += angleFieldValue;\n }\n\n const dStartAngle = lastAngle;\n const dEndAngle = lastAngle + radian;\n\n d[asRatio] = ratio;\n d[asK] = max ? angleFieldValue / max : 0;\n d._percent_ = (percents as number[])[i];\n appendArcInfo(d, dStartAngle, radian);\n\n lastAngle = dEndAngle;\n });\n\n if (restAngle < angleRange) {\n if (restAngle <= 1e-3) {\n const angle = angleRange / data.length;\n data.forEach((d, index) => {\n appendArcInfo(d, startAngle + index * angle, angle);\n });\n } else {\n const unitRadian = restAngle / largeThanMinAngleTotal;\n lastAngle = startAngle;\n data.forEach(d => {\n const angle = d[asRadian] === minAngle ? minAngle : d[ARC_TRANSFORM_VALUE] * unitRadian;\n appendArcInfo(d, lastAngle, angle);\n\n lastAngle += angle;\n });\n }\n }\n\n if (total !== 0) {\n // 数据都为 0 时,起始角和结束角相同,不应该强制赋值\n // 防止一个扇区的角度会因为浮点数精度问题和传入的 endAngle 不相等\n data[data.length - 1][asEndAngle] = endAngle;\n }\n\n if (isAllZero && showAllZero) {\n const angle = angleRange / data.length;\n data.forEach((d, index) => {\n appendArcInfo(d, startAngle + index * angle, angle);\n });\n }\n return data;\n};\n"]}
1
+ {"version":3,"sources":["../src/data/transforms/pie.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAoB1D,SAAS,qBAAqB,CAAC,KAAU;IACvC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE;QAC9B,OAAO,CAAC,CAAC;KACV;IACD,OAAO,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,UAA2B,EAAE,EAAW,EAAE,EAAE;IAC9D,MAAM,EACJ,YAAY,EACZ,UAAU,EACV,aAAa,EACb,QAAQ,EACR,OAAO,EACP,UAAU,EACV,GAAG,EACH,WAAW,EACX,eAAe,EACf,eAAe,EAChB,GAAG,EAAE,CAAC;IAEP,MAAM,UAAU,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC;IACnC,MAAM,UAAU,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC;IACnC,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;IAC/B,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;IAE/B,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,KAAY,EAAE,EAAE,CAAC,mBAAM,KAAK,EAAG,CAAC,CAAC;IAC9D,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;QAC9B,OAAO,IAAI,CAAC;KACb;IAED,IAAI,CAAC,WAAW,IAAI,eAAe,IAAI,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,eAAe,CAAC,EAAE;QACrF,OAAO,IAAI,CAAC;KACb;IAED,MAAM,aAAa,GAAG,CAAC,IAAW,EAAE,UAAkB,EAAE,KAAa,EAAE,EAAE;QACvE,IAAI,CAAC,YAAY,CAAC,GAAG,UAAU,CAAC;QAChC,IAAI,CAAC,UAAU,CAAC,GAAG,UAAU,GAAG,KAAK,CAAC;QACtC,IAAI,CAAC,aAAa,CAAC,GAAG,UAAU,GAAG,KAAK,GAAG,CAAC,CAAC;QAC7C,IAAI,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,UAAU,CAAC,GAAG,eAAe,CAAC,UAAU,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;IAC7D,CAAC,CAAC;IAEF,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC;IACpB,IAAI,SAAS,GAAG,IAAI,CAAC;IACrB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;QAChD,MAAM,eAAe,GAAG,eAAe;YACrC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;YAC1D,CAAC,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;QACnD,KAAK,IAAI,eAAe,CAAC;QACzB,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;QACrC,IAAI,SAAS,IAAI,eAAe,KAAK,CAAC,EAAE;YACtC,SAAS,GAAG,KAAK,CAAC;SACnB;QAED,IAAI,CAAC,KAAK,CAAC,CAAC,mBAAmB,CAAC,GAAG,eAAe,CAAC;KACpD;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACvD,MAAM,UAAU,GAAG,QAAQ,GAAG,UAAU,CAAC;IACzC,IAAI,SAAS,GAAG,UAAU,CAAC;IAC3B,IAAI,SAAS,GAAG,UAAU,CAAC;IAC3B,IAAI,sBAAsB,GAAG,CAAC,CAAC;IAC/B,MAAM,QAAQ,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;IAE5C,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACpB,MAAM,eAAe,GAAG,CAAC,CAAC,mBAAmB,CAAC,CAAC;QAC/C,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,eAAe,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAClD,IAAI,MAAM,GAAG,KAAK,GAAG,UAAU,CAAC;QAEhC,IAAI,MAAM,GAAG,QAAQ,EAAE;YACrB,MAAM,GAAG,QAAQ,CAAC;YAClB,SAAS,IAAI,QAAQ,CAAC;SACvB;aAAM;YACL,sBAAsB,IAAI,eAAe,CAAC;SAC3C;QAED,MAAM,WAAW,GAAG,SAAS,CAAC;QAC9B,MAAM,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;QAErC,CAAC,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;QACnB,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,eAAe,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACzC,CAAC,CAAC,SAAS,GAAI,QAAqB,CAAC,CAAC,CAAC,CAAC;QACxC,aAAa,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;QAEtC,SAAS,GAAG,SAAS,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,IAAI,SAAS,GAAG,UAAU,EAAE;QAC1B,IAAI,SAAS,IAAI,IAAI,EAAE;YACrB,MAAM,KAAK,GAAG,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;YACvC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;gBACxB,aAAa,CAAC,CAAC,EAAE,UAAU,GAAG,KAAK,GAAG,KAAK,EAAE,KAAK,CAAC,CAAC;YACtD,CAAC,CAAC,CAAC;SACJ;aAAM;YACL,MAAM,UAAU,GAAG,SAAS,GAAG,sBAAsB,CAAC;YACtD,SAAS,GAAG,UAAU,CAAC;YACvB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBACf,MAAM,KAAK,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,GAAG,UAAU,CAAC;gBACxF,aAAa,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;gBAEnC,SAAS,IAAI,KAAK,CAAC;YACrB,CAAC,CAAC,CAAC;SACJ;KACF;IAED,IAAI,KAAK,KAAK,CAAC,EAAE;QAGf,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC;KAC9C;IAED,IAAI,SAAS,IAAI,WAAW,EAAE;QAC5B,MAAM,KAAK,GAAG,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;QACvC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;YACxB,aAAa,CAAC,CAAC,EAAE,UAAU,GAAG,KAAK,GAAG,KAAK,EAAE,KAAK,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;KACJ;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,IAAa,EAAE,UAAkB,EAAE,eAAwB,EAAE,EAAE;IACzF,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE;QACf,OAAO,IAAI,CAAC;KACb;IACD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;QACrB,OAAO,IAAI,CAAC;KACb;IACD,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;QACvE,OAAO,IAAI,CAAC;KACb;IAED,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,qBAAqB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE;QAC5G,OAAO,IAAI,CAAC;KACb;IAED,OAAO,KAAK,CAAC;AACf,CAAC,CAAC","file":"pie.js","sourcesContent":["import type { DataView } from '@visactor/vdataset';\nimport type { Datum } from '../../typings';\nimport { couldBeValidNumber } from '../../util/type';\nimport { getPercentValue } from '../../util/math';\nimport { ARC_TRANSFORM_VALUE } from '../../constant/polar';\nimport { computeQuadrant, isNil } from '@visactor/vutils';\n\nexport interface IPieOpt {\n angleField: () => string;\n startAngle: () => number;\n endAngle: () => number;\n minAngle: () => number;\n\n asStartAngle: string;\n asEndAngle: string;\n asMiddleAngle: string;\n asRadian: string;\n asRatio: string;\n asQuadrant: string;\n asK: string;\n showAllZero: boolean;\n supportNegative: boolean;\n showEmptyCircle: boolean;\n}\n\nfunction transformInvalidValue(value: any) {\n if (!couldBeValidNumber(value)) {\n return 0;\n }\n return Number.parseFloat(value);\n}\n\nexport const pie = (originData: Array<DataView>, op: IPieOpt) => {\n const {\n asStartAngle,\n asEndAngle,\n asMiddleAngle,\n asRadian,\n asRatio,\n asQuadrant,\n asK,\n showAllZero,\n supportNegative,\n showEmptyCircle\n } = op;\n\n const angleField = op.angleField();\n const startAngle = op.startAngle();\n const endAngle = op.endAngle();\n const minAngle = op.minAngle();\n\n const data = originData.map((datum: Datum) => ({ ...datum }));\n if (!data || data.length === 0) {\n return data;\n }\n\n if (!showAllZero && showEmptyCircle && isDataEmpty(data, angleField, supportNegative)) {\n return data;\n }\n\n const appendArcInfo = (data: Datum, startAngle: number, angle: number) => {\n data[asStartAngle] = startAngle;\n data[asEndAngle] = startAngle + angle;\n data[asMiddleAngle] = startAngle + angle / 2;\n data[asRadian] = angle;\n data[asQuadrant] = computeQuadrant(startAngle + angle / 2);\n };\n\n let total = 0;\n let max = -Infinity;\n let isAllZero = true;\n for (let index = 0; index < data.length; index++) {\n const angleFieldValue = supportNegative\n ? Math.abs(transformInvalidValue(data[index][angleField]))\n : transformInvalidValue(data[index][angleField]);\n total += angleFieldValue;\n max = Math.max(angleFieldValue, max);\n if (isAllZero && angleFieldValue !== 0) {\n isAllZero = false;\n }\n\n data[index][ARC_TRANSFORM_VALUE] = angleFieldValue;\n }\n\n const valueList = data.map(d => Number(d[angleField]));\n const angleRange = endAngle - startAngle;\n let lastAngle = startAngle;\n let restAngle = angleRange;\n let largeThanMinAngleTotal = 0;\n const percents = getPercentValue(valueList);\n\n data.forEach((d, i) => {\n const angleFieldValue = d[ARC_TRANSFORM_VALUE];\n const ratio = total ? angleFieldValue / total : 0;\n let radian = ratio * angleRange;\n\n if (radian < minAngle) {\n radian = minAngle;\n restAngle -= minAngle;\n } else {\n largeThanMinAngleTotal += angleFieldValue;\n }\n\n const dStartAngle = lastAngle;\n const dEndAngle = lastAngle + radian;\n\n d[asRatio] = ratio;\n d[asK] = max ? angleFieldValue / max : 0;\n d._percent_ = (percents as number[])[i];\n appendArcInfo(d, dStartAngle, radian);\n\n lastAngle = dEndAngle;\n });\n\n if (restAngle < angleRange) {\n if (restAngle <= 1e-3) {\n const angle = angleRange / data.length;\n data.forEach((d, index) => {\n appendArcInfo(d, startAngle + index * angle, angle);\n });\n } else {\n const unitRadian = restAngle / largeThanMinAngleTotal;\n lastAngle = startAngle;\n data.forEach(d => {\n const angle = d[asRadian] === minAngle ? minAngle : d[ARC_TRANSFORM_VALUE] * unitRadian;\n appendArcInfo(d, lastAngle, angle);\n\n lastAngle += angle;\n });\n }\n }\n\n if (total !== 0) {\n // 数据都为 0 时,起始角和结束角相同,不应该强制赋值\n // 防止一个扇区的角度会因为浮点数精度问题和传入的 endAngle 不相等\n data[data.length - 1][asEndAngle] = endAngle;\n }\n\n if (isAllZero && showAllZero) {\n const angle = angleRange / data.length;\n data.forEach((d, index) => {\n appendArcInfo(d, startAngle + index * angle, angle);\n });\n }\n return data;\n};\n\nexport const isDataEmpty = (data: Datum[], angleField: string, supportNegative: boolean) => {\n if (isNil(data)) {\n return true;\n }\n if (data.length === 0) {\n return true;\n }\n if (data.every(datum => transformInvalidValue(datum[angleField]) === 0)) {\n return true;\n }\n // 未支持负数, 并且和为0, 则也认为是空数据\n if (!supportNegative && data.reduce((sum, datum) => sum + transformInvalidValue(datum[angleField]), 0) === 0) {\n return true;\n }\n\n return false;\n};\n"]}
@@ -20,6 +20,8 @@ import type { ILayoutItem, ILayoutItemSpec } from '../layout/interface';
20
20
  import type { ILayoutPoint, ILayoutRect } from '../typings/layout';
21
21
  import type { ComponentTypeEnum } from '../component/interface';
22
22
  import type { SeriesTypeEnum } from '../series';
23
+ import type { ITooltipSpec } from '../component/tooltip/interface';
24
+ import type { TooltipActiveType } from '../typings';
23
25
  export interface IModelInitOption {
24
26
  }
25
27
  export interface IModelLayoutOption {
@@ -152,3 +154,15 @@ export interface IBaseModelSpecTransformer {
152
154
  getTheme: (spec: any, chartSpec: any) => any;
153
155
  transformSpec: (spec: any, chartSpec: any, chartSpecInfo?: IChartSpecInfo) => IBaseModelSpecTransformerResult<any, any>;
154
156
  }
157
+ export interface ITooltipHelper {
158
+ spec: ITooltipSpec | undefined;
159
+ activeType: TooltipActiveType[];
160
+ activeTriggerSet: {
161
+ mark?: Set<IMark>;
162
+ group?: Set<IMark>;
163
+ };
164
+ ignoreTriggerSet: {
165
+ mark?: Set<IMark>;
166
+ };
167
+ updateTooltipSpec: () => void;
168
+ }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/model/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type { IBoundsLike } from '@visactor/vutils';\nimport type { DataSet, DataView } from '@visactor/vdataset';\nimport type { IEvent, IEventDispatcher } from '../event/interface';\nimport type { IMark, IMarkRaw, IMarkStyle, MarkTypeEnum } from '../mark/interface';\nimport type { RenderMode } from '../typings/spec/common';\nimport type { VChart } from '../vchart-all';\nimport type { IData } from '@visactor/vgrammar-core';\nimport type { StringOrNumber } from '../typings/common';\nimport type { IGroupMarkSpec, ConvertToMarkStyleSpec, ICommonSpec } from '../typings/visual';\nimport type { IRect } from '../typings/space';\nimport type { IPoint, CoordinateType } from '../typings/coordinate';\nimport type { ITheme } from '../theme';\nimport type { StateValueType } from '../typings/spec';\nimport type { ICompilable, ICompilableInitOption } from '../compile/interface';\nimport type { ICompilableData } from '../compile/data';\nimport type { IGlobalScale } from '../scale/interface';\nimport type { IChart, IChartSpecInfo, IChartSpecTransformerOption } from '../chart/interface';\nimport type { IThemeColorScheme } from '../theme/color-scheme/interface';\nimport type { ILayoutItem, ILayoutItemSpec } from '../layout/interface';\nimport type { ILayoutPoint, ILayoutRect } from '../typings/layout';\nimport type { ComponentTypeEnum } from '../component/interface';\nimport type { SeriesTypeEnum } from '../series';\n\n// TODO:\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface IModelInitOption {}\n// TODO:\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface IModelLayoutOption {}\n// TODO:\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface IModelEvaluateOption {}\n// TODO:\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface IModelRenderOption {}\n\nexport interface IEffect {\n [key: string]: (e?: any) => any;\n}\n\nexport interface IMarkTreeGroup extends Partial<IMarkStyle<IGroupMarkSpec>> {\n // 必须要有名字\n type: 'group';\n name: string;\n marks: (IMarkTreeGroup | IMark)[];\n // TODO: 这里要不要支持复杂场景,有图形组合的场景,用自定义mark?\n // from?: IData;\n}\n\nexport type IMarkTree = IMarkTreeGroup | IMark | (IMarkTreeGroup | IMark)[];\n\nexport interface IUpdateSpecResult {\n change: boolean;\n reMake: boolean;\n reRender?: boolean;\n reSize?: boolean;\n // TODO: compile 的判断应不应该出现在这里?\n reCompile?: boolean;\n reTransformSpec?: boolean;\n reAnimate?: boolean;\n changeTheme?: boolean;\n changeBackground?: boolean;\n}\n\nexport interface IUpdateDataResult {\n reAnimate?: boolean;\n}\n\nexport interface IModelProduct {\n srData: IData;\n}\n\nexport interface IModel extends ICompilable {\n readonly modelType: string;\n readonly type: string;\n readonly specKey: string;\n readonly transformerConstructor: new (option: IBaseModelSpecTransformerOption) => IBaseModelSpecTransformer;\n\n readonly id: number;\n\n readonly userId?: StringOrNumber;\n\n // 事件\n readonly event: IEvent;\n\n // 副作用\n readonly effect: IEffect;\n\n coordinate?: CoordinateType;\n\n // 布局\n layout?: ILayoutItem;\n\n /** 是否可见 */\n getVisible: () => boolean;\n\n // 初始化参数\n getOption: () => IModelOption;\n\n getMarks: () => IMark[];\n getMarkNameMap: () => Record<string, IMark>;\n\n getData: () => ICompilableData;\n\n getChart: () => IChart;\n\n //生命周期\n // 创建模块自身内容,设置自身属性\n created: () => void;\n // 用来处理与其他图表模块的联系\n init: (option: IModelInitOption) => void;\n /** updateSpec 或者切换主题后,根据新 spec 执行的初始化过程 */\n reInit: (spec?: any) => void;\n beforeRelease: () => void;\n\n onEvaluateEnd: (ctx: IModelEvaluateOption) => void;\n onRender: (ctx: IModelRenderOption) => void;\n onDataUpdate: () => void;\n\n updateSpec: (spec: any, totalSpec?: any) => IUpdateSpecResult;\n getSpec?: () => any;\n getSpecIndex: () => number;\n getSpecPath: () => Array<string | number>;\n\n //布局周期\n onLayoutStart: (layoutRect: IRect, viewRect: ILayoutRect, ctx: IModelLayoutOption) => void;\n onLayoutEnd: (ctx: IModelLayoutOption) => void;\n\n getColorScheme: () => IThemeColorScheme | undefined;\n\n setMarkStyle: <T extends ICommonSpec>(\n mark?: IMarkRaw<T>,\n style?: Partial<IMarkStyle<T> | ConvertToMarkStyleSpec<T>>,\n state?: StateValueType,\n level?: number\n ) => void;\n\n initMarkStyleWithSpec: (mark?: IMark, spec?: any, key?: string) => void;\n\n getSpecInfo: () => IModelSpecInfo;\n}\n\nexport interface ILayoutModel extends IModel {\n // 布局相关\n getLayoutStartPoint: () => IPoint;\n setLayoutStartPosition: (pos: Partial<IPoint>) => void;\n getLayoutRect: () => ILayoutRect;\n setLayoutRect: (rect: Partial<ILayoutRect>, levelMap?: Partial<ILayoutRect>) => void;\n\n getLastComputeOutBounds: () => IBoundsLike;\n\n getBoundsInRect: (rect: ILayoutRect, fullRect: ILayoutRect) => IBoundsLike;\n\n //布局周期\n afterSetLayoutStartPoint: (pos: ILayoutPoint) => void;\n}\n\nexport interface IModelOption extends ICompilableInitOption {\n type: string;\n eventDispatcher: IEventDispatcher;\n dataSet: DataSet;\n map: Map<StringOrNumber, IModel | IMark>;\n mode: RenderMode;\n globalInstance: VChart;\n regionIndexes?: Array<number>;\n specKey?: string;\n specPath?: Array<string | number>;\n specInfoPath?: Array<string | number>;\n\n getTheme?: () => ITheme;\n getSpecInfo?: () => IChartSpecInfo;\n getChartLayoutRect: () => IRect;\n getChartViewRect: () => ILayoutRect;\n\n getChart: () => IChart;\n getSeriesData: (id: StringOrNumber | undefined, index: number | undefined) => DataView | undefined;\n\n globalScale: IGlobalScale;\n animation: boolean;\n /**\n * 错误消息回调函数\n */\n onError: (...args: any[]) => void;\n\n /**\n * 是否关闭交互效果\n */\n disableTriggerEvent?: boolean;\n}\n\nexport interface IModelSpecInfo<T extends Record<string, unknown> = any> {\n /** model 具体类型 */\n type: string | ComponentTypeEnum | SeriesTypeEnum;\n /** model spec */\n spec: T;\n /** 该 spec 在图表 spec 上的路径 */\n specPath?: Array<string | number>;\n /** 该 spec 在图表 spec info 上的路径 */\n specInfoPath?: Array<string | number>;\n /** model 当前主题 */\n theme?: any;\n /** model 对应的 region 索引 */\n regionIndexes?: number[];\n /** model 对应的 series 索引 */\n seriesIndexes?: number[];\n}\n\nexport interface IModelConstructor {\n readonly transformerConstructor: new (option: IBaseModelSpecTransformerOption) => IBaseModelSpecTransformer;\n}\n\nexport type ILayoutModelState = {\n layoutUpdateRank: number;\n [key: string]: unknown;\n};\n\n// TODO: 补充model共有配置\nexport type IModelSpec = ILayoutItemSpec & { id?: StringOrNumber };\n\nexport interface IModelMarkInfo {\n /** mark 类型 */\n type: MarkTypeEnum | string | (MarkTypeEnum | string)[];\n /** mark 名称 */\n name: string;\n}\n\nexport type IBaseModelSpecTransformerOption = IChartSpecTransformerOption;\n\nexport interface IBaseModelSpecTransformerResult<T, K> {\n spec: T;\n theme: K;\n}\n\nexport interface IBaseModelSpecTransformer {\n getTheme: (spec: any, chartSpec: any) => any;\n transformSpec: (\n spec: any,\n chartSpec: any,\n chartSpecInfo?: IChartSpecInfo\n ) => IBaseModelSpecTransformerResult<any, any>;\n}\n"]}
1
+ {"version":3,"sources":["../src/model/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type { IBoundsLike } from '@visactor/vutils';\nimport type { DataSet, DataView } from '@visactor/vdataset';\nimport type { IEvent, IEventDispatcher } from '../event/interface';\nimport type { IMark, IMarkRaw, IMarkStyle, MarkTypeEnum } from '../mark/interface';\nimport type { RenderMode } from '../typings/spec/common';\nimport type { VChart } from '../vchart-all';\nimport type { IData } from '@visactor/vgrammar-core';\nimport type { StringOrNumber } from '../typings/common';\nimport type { IGroupMarkSpec, ConvertToMarkStyleSpec, ICommonSpec } from '../typings/visual';\nimport type { IRect } from '../typings/space';\nimport type { IPoint, CoordinateType } from '../typings/coordinate';\nimport type { ITheme } from '../theme';\nimport type { StateValueType } from '../typings/spec';\nimport type { ICompilable, ICompilableInitOption } from '../compile/interface';\nimport type { ICompilableData } from '../compile/data';\nimport type { IGlobalScale } from '../scale/interface';\nimport type { IChart, IChartSpecInfo, IChartSpecTransformerOption } from '../chart/interface';\nimport type { IThemeColorScheme } from '../theme/color-scheme/interface';\nimport type { ILayoutItem, ILayoutItemSpec } from '../layout/interface';\nimport type { ILayoutPoint, ILayoutRect } from '../typings/layout';\nimport type { ComponentTypeEnum } from '../component/interface';\nimport type { SeriesTypeEnum } from '../series';\nimport type { ITooltipSpec } from '../component/tooltip/interface';\nimport type { TooltipActiveType } from '../typings';\n\n// TODO:\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface IModelInitOption {}\n// TODO:\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface IModelLayoutOption {}\n// TODO:\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface IModelEvaluateOption {}\n// TODO:\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface IModelRenderOption {}\n\nexport interface IEffect {\n [key: string]: (e?: any) => any;\n}\n\nexport interface IMarkTreeGroup extends Partial<IMarkStyle<IGroupMarkSpec>> {\n // 必须要有名字\n type: 'group';\n name: string;\n marks: (IMarkTreeGroup | IMark)[];\n // TODO: 这里要不要支持复杂场景,有图形组合的场景,用自定义mark?\n // from?: IData;\n}\n\nexport type IMarkTree = IMarkTreeGroup | IMark | (IMarkTreeGroup | IMark)[];\n\nexport interface IUpdateSpecResult {\n change: boolean;\n reMake: boolean;\n reRender?: boolean;\n reSize?: boolean;\n // TODO: compile 的判断应不应该出现在这里?\n reCompile?: boolean;\n reTransformSpec?: boolean;\n reAnimate?: boolean;\n changeTheme?: boolean;\n changeBackground?: boolean;\n}\n\nexport interface IUpdateDataResult {\n reAnimate?: boolean;\n}\n\nexport interface IModelProduct {\n srData: IData;\n}\n\nexport interface IModel extends ICompilable {\n readonly modelType: string;\n readonly type: string;\n readonly specKey: string;\n readonly transformerConstructor: new (option: IBaseModelSpecTransformerOption) => IBaseModelSpecTransformer;\n\n readonly id: number;\n\n readonly userId?: StringOrNumber;\n\n // 事件\n readonly event: IEvent;\n\n // 副作用\n readonly effect: IEffect;\n\n coordinate?: CoordinateType;\n\n // 布局\n layout?: ILayoutItem;\n\n /** 是否可见 */\n getVisible: () => boolean;\n\n // 初始化参数\n getOption: () => IModelOption;\n\n getMarks: () => IMark[];\n getMarkNameMap: () => Record<string, IMark>;\n\n getData: () => ICompilableData;\n\n getChart: () => IChart;\n\n //生命周期\n // 创建模块自身内容,设置自身属性\n created: () => void;\n // 用来处理与其他图表模块的联系\n init: (option: IModelInitOption) => void;\n /** updateSpec 或者切换主题后,根据新 spec 执行的初始化过程 */\n reInit: (spec?: any) => void;\n beforeRelease: () => void;\n\n onEvaluateEnd: (ctx: IModelEvaluateOption) => void;\n onRender: (ctx: IModelRenderOption) => void;\n onDataUpdate: () => void;\n\n updateSpec: (spec: any, totalSpec?: any) => IUpdateSpecResult;\n getSpec?: () => any;\n getSpecIndex: () => number;\n getSpecPath: () => Array<string | number>;\n\n //布局周期\n onLayoutStart: (layoutRect: IRect, viewRect: ILayoutRect, ctx: IModelLayoutOption) => void;\n onLayoutEnd: (ctx: IModelLayoutOption) => void;\n\n getColorScheme: () => IThemeColorScheme | undefined;\n\n setMarkStyle: <T extends ICommonSpec>(\n mark?: IMarkRaw<T>,\n style?: Partial<IMarkStyle<T> | ConvertToMarkStyleSpec<T>>,\n state?: StateValueType,\n level?: number\n ) => void;\n\n initMarkStyleWithSpec: (mark?: IMark, spec?: any, key?: string) => void;\n\n getSpecInfo: () => IModelSpecInfo;\n}\n\nexport interface ILayoutModel extends IModel {\n // 布局相关\n getLayoutStartPoint: () => IPoint;\n setLayoutStartPosition: (pos: Partial<IPoint>) => void;\n getLayoutRect: () => ILayoutRect;\n setLayoutRect: (rect: Partial<ILayoutRect>, levelMap?: Partial<ILayoutRect>) => void;\n\n getLastComputeOutBounds: () => IBoundsLike;\n\n getBoundsInRect: (rect: ILayoutRect, fullRect: ILayoutRect) => IBoundsLike;\n\n //布局周期\n afterSetLayoutStartPoint: (pos: ILayoutPoint) => void;\n}\n\nexport interface IModelOption extends ICompilableInitOption {\n type: string;\n eventDispatcher: IEventDispatcher;\n dataSet: DataSet;\n map: Map<StringOrNumber, IModel | IMark>;\n mode: RenderMode;\n globalInstance: VChart;\n regionIndexes?: Array<number>;\n specKey?: string;\n specPath?: Array<string | number>;\n specInfoPath?: Array<string | number>;\n\n getTheme?: () => ITheme;\n getSpecInfo?: () => IChartSpecInfo;\n getChartLayoutRect: () => IRect;\n getChartViewRect: () => ILayoutRect;\n\n getChart: () => IChart;\n getSeriesData: (id: StringOrNumber | undefined, index: number | undefined) => DataView | undefined;\n\n globalScale: IGlobalScale;\n animation: boolean;\n /**\n * 错误消息回调函数\n */\n onError: (...args: any[]) => void;\n\n /**\n * 是否关闭交互效果\n */\n disableTriggerEvent?: boolean;\n}\n\nexport interface IModelSpecInfo<T extends Record<string, unknown> = any> {\n /** model 具体类型 */\n type: string | ComponentTypeEnum | SeriesTypeEnum;\n /** model spec */\n spec: T;\n /** 该 spec 在图表 spec 上的路径 */\n specPath?: Array<string | number>;\n /** 该 spec 在图表 spec info 上的路径 */\n specInfoPath?: Array<string | number>;\n /** model 当前主题 */\n theme?: any;\n /** model 对应的 region 索引 */\n regionIndexes?: number[];\n /** model 对应的 series 索引 */\n seriesIndexes?: number[];\n}\n\nexport interface IModelConstructor {\n readonly transformerConstructor: new (option: IBaseModelSpecTransformerOption) => IBaseModelSpecTransformer;\n}\n\nexport type ILayoutModelState = {\n layoutUpdateRank: number;\n [key: string]: unknown;\n};\n\n// TODO: 补充model共有配置\nexport type IModelSpec = ILayoutItemSpec & { id?: StringOrNumber };\n\nexport interface IModelMarkInfo {\n /** mark 类型 */\n type: MarkTypeEnum | string | (MarkTypeEnum | string)[];\n /** mark 名称 */\n name: string;\n}\n\nexport type IBaseModelSpecTransformerOption = IChartSpecTransformerOption;\n\nexport interface IBaseModelSpecTransformerResult<T, K> {\n spec: T;\n theme: K;\n}\n\nexport interface IBaseModelSpecTransformer {\n getTheme: (spec: any, chartSpec: any) => any;\n transformSpec: (\n spec: any,\n chartSpec: any,\n chartSpecInfo?: IChartSpecInfo\n ) => IBaseModelSpecTransformerResult<any, any>;\n}\n\nexport interface ITooltipHelper {\n /** tooltip对应spec */\n spec: ITooltipSpec | undefined;\n\n /** 实际生效的tooltip activeType */\n activeType: TooltipActiveType[];\n\n /** 可以响应mark tooltip或者dimension tooltip的对象 */\n activeTriggerSet: {\n mark?: Set<IMark>;\n group?: Set<IMark>;\n };\n /** 不响应tooltip且不会影响已有tooltip的对象 */\n ignoreTriggerSet: {\n mark?: Set<IMark>;\n };\n\n /** 更新spec */\n updateTooltipSpec: () => void;\n}\n"]}
@@ -19,6 +19,7 @@ export declare class MediaQuery extends BasePlugin implements IChartPlugin {
19
19
  onInit(service: IChartPluginService, chartSpec: any): void;
20
20
  onBeforeResize(service: IChartPluginService, width: number, height: number): void;
21
21
  onAfterChartSpecTransform(service: IChartPluginService, chartSpec: any, actionSource: VChartRenderActionSource): void;
22
+ onAfterModelSpecTransform(service: IChartPluginService, chartSpec: any, chartInfo: IChartSpecInfo, actionSource: VChartRenderActionSource): void;
22
23
  onBeforeInitChart(service: IChartPluginService, chartSpec: any, actionSource: VChartRenderActionSource): void;
23
24
  protected _changeSize(width: number, height: number, compile?: boolean, render?: boolean): boolean;
24
25
  protected _applyQueries(compile?: boolean, render?: boolean): boolean;
@@ -33,6 +33,9 @@ export class MediaQuery extends BasePlugin {
33
33
  onAfterChartSpecTransform(service, chartSpec, actionSource) {
34
34
  this._initialized && "setCurrentTheme" === actionSource && this._reInit(!1, !1);
35
35
  }
36
+ onAfterModelSpecTransform(service, chartSpec, chartInfo, actionSource) {
37
+ this._initialized && "updateSpec" === actionSource && this.onBeforeInitChart(service, chartSpec, "setCurrentTheme");
38
+ }
36
39
  onBeforeInitChart(service, chartSpec, actionSource) {
37
40
  if (!this._initialized) return;
38
41
  let resetMediaQuery, checkMediaQuery;
@@ -42,7 +45,6 @@ export class MediaQuery extends BasePlugin {
42
45
  resetMediaQuery = !1, checkMediaQuery = !0;
43
46
  break;
44
47
 
45
- case "updateSpec":
46
48
  case "setCurrentTheme":
47
49
  resetMediaQuery = !0, checkMediaQuery = !1;
48
50
  break;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/plugin/chart/media-query/media-query.ts"],"names":[],"mappings":"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","file":"media-query.js","sourcesContent":["import type {\n IMediaInfo,\n IMediaQueryCheckResult,\n IMediaQuerySpec,\n IMediaQueryOption,\n IMediaQueryItem,\n IMediaQueryActionResult\n} from './interface';\nimport { checkMediaQuery } from './util';\nimport { executeMediaQueryAction } from './util/action';\nimport type { IChartPlugin, IChartPluginService } from '../interface';\nimport { array } from '../../../util';\nimport type { VChartRenderActionSource } from '../../../core/interface';\nimport { BasePlugin } from '../../base/base-plugin';\nimport { registerChartPlugin } from '../register';\nimport type { IChartSpecInfo } from '../../../chart/interface';\nimport { cloneDeepSpec } from '@visactor/vutils-extension';\n\nexport class MediaQuery extends BasePlugin implements IChartPlugin {\n static readonly pluginType: 'chart' = 'chart';\n static readonly specKey = 'media';\n static readonly type: string = 'MediaQueryPlugin';\n readonly type: string = 'MediaQueryPlugin';\n\n protected _spec: IMediaQuerySpec;\n protected _option: IMediaQueryOption;\n\n /** 不带任何媒体查询的图表 spec */\n protected _baseChartSpec: any;\n /** 不带任何媒体查询的图表 spec info */\n protected _baseChartSpecInfo: IChartSpecInfo;\n\n /** 当前媒体信息 */\n protected _currentMediaInfo: Partial<IMediaInfo> = {};\n\n /** 当前正在生效的媒体查询 */\n readonly currentActiveItems = new Set<IMediaQueryItem>();\n\n /** 媒体查询是否已经初始化 */\n protected _initialized: boolean = false;\n\n constructor() {\n super(MediaQuery.type);\n }\n\n onInit(service: IChartPluginService, chartSpec: any) {\n if (!chartSpec?.[MediaQuery.specKey]) {\n return;\n }\n\n const { globalInstance } = service;\n this._option = {\n globalInstance: service.globalInstance,\n updateSpec: (spec: any, compile?: boolean, render?: boolean) => {\n if (render) {\n globalInstance.updateSpecSync(spec);\n } else if (compile) {\n globalInstance.updateSpecAndRecompile(spec, false, {\n transformSpec: true\n });\n } else {\n globalInstance.setRuntimeSpec(spec);\n }\n }\n };\n this._spec = chartSpec[MediaQuery.specKey];\n this._initialized = true;\n }\n\n onBeforeResize(service: IChartPluginService, width: number, height: number) {\n if (!this._initialized) {\n return;\n }\n\n this._changeSize(width, height, true, false);\n }\n\n onAfterChartSpecTransform(service: IChartPluginService, chartSpec: any, actionSource: VChartRenderActionSource) {\n if (!this._initialized) {\n return;\n }\n\n if (actionSource === 'setCurrentTheme') {\n // 重新执行已生效的所有媒体查询\n this._reInit(false, false);\n }\n }\n\n onBeforeInitChart(service: IChartPluginService, chartSpec: any, actionSource: VChartRenderActionSource) {\n if (!this._initialized) {\n return;\n }\n\n let resetMediaQuery: boolean;\n let checkMediaQuery: boolean;\n\n switch (actionSource) {\n case 'render':\n case 'updateModelSpec':\n resetMediaQuery = false;\n checkMediaQuery = true;\n break;\n case 'updateSpec':\n case 'setCurrentTheme':\n resetMediaQuery = true;\n checkMediaQuery = false;\n break;\n case 'updateSpecAndRecompile':\n resetMediaQuery = false;\n checkMediaQuery = false;\n break;\n }\n\n if (resetMediaQuery) {\n this.release();\n }\n if (!this._initialized) {\n // 初始化媒体查询\n this.onInit(service, chartSpec);\n }\n if (resetMediaQuery || checkMediaQuery) {\n // 触发媒体查询\n const { width, height } = this._option.globalInstance.getCurrentSize();\n this._changeSize(width, height, false, false);\n }\n }\n\n /** 更新图表宽高信息,执行所有相关媒体查询,返回是否命中某个查询 */\n protected _changeSize(width: number, height: number, compile?: boolean, render?: boolean): boolean {\n if (this._currentMediaInfo.width === width && this._currentMediaInfo.height === height) {\n return false;\n }\n this._currentMediaInfo.width = width;\n this._currentMediaInfo.height = height;\n // 由于目前媒体查询只和图表宽高有关,这里执行所有媒体查询\n return this._applyQueries(compile, render);\n }\n\n /** 执行所有媒体查询,返回是否命中某个查询 */\n protected _applyQueries(compile?: boolean, render?: boolean): boolean {\n // 检查所有查询的查询条件\n const changeToActive: IMediaQueryItem[] = []; // 将会生效的查询\n const changeToInactive: IMediaQueryItem[] = []; // 将会失效的查询\n this._spec.forEach(item => {\n const { hasChanged, isActive } = this._check(item);\n if (hasChanged) {\n if (isActive) {\n changeToActive.push(item);\n } else {\n changeToInactive.push(item);\n }\n }\n });\n\n if (!changeToActive.length && !changeToInactive.length) {\n return false;\n }\n if (!this._baseChartSpec) {\n this._baseChartSpec = cloneDeepSpec(this._option.globalInstance.getSpec(), ['data', MediaQuery.specKey]);\n this._baseChartSpecInfo = this._option.globalInstance.getSpecInfo();\n }\n let chartSpec: any;\n let chartSpecInfo: any;\n let hasChanged = false;\n\n // 处理将会失效的查询:重新执行一遍当前生效的查询\n if (changeToInactive.length > 0) {\n chartSpec = cloneDeepSpec(this._baseChartSpec, ['data', MediaQuery.specKey]);\n chartSpecInfo = this._baseChartSpecInfo;\n Array.from(this.currentActiveItems).forEach(item => {\n if (changeToInactive.includes(item)) {\n this.currentActiveItems.delete(item);\n return;\n }\n const result = this._apply(item, chartSpec, chartSpecInfo);\n chartSpec = result.chartSpec;\n });\n hasChanged = true;\n } else {\n chartSpec = this._option.globalInstance.getSpec();\n chartSpecInfo = this._option.globalInstance.getSpecInfo();\n }\n\n // 处理将会生效的查询\n changeToActive.forEach(item => {\n this.currentActiveItems.add(item);\n const result = this._apply(item, chartSpec, chartSpecInfo);\n chartSpec = result.chartSpec;\n hasChanged ||= result.hasChanged;\n });\n\n if (hasChanged) {\n this._option.updateSpec(chartSpec, compile, render);\n }\n return true;\n }\n\n /** 检查媒体查询的条件是否满足 */\n protected _check(item: IMediaQueryItem): IMediaQueryCheckResult {\n const { globalInstance } = this._option;\n const isActive = checkMediaQuery(item.query, this._currentMediaInfo as IMediaInfo, globalInstance);\n return {\n isActive,\n hasChanged: isActive !== this.currentActiveItems.has(item)\n };\n }\n\n /** 执行一条媒体查询 */\n protected _apply(item: IMediaQueryItem, chartSpec: any, chartSpecInfo: IChartSpecInfo): IMediaQueryActionResult {\n const { query, action } = item;\n let hasChanged = false;\n // 执行\n array(action).forEach(actionItem => {\n const result = executeMediaQueryAction(actionItem, query, chartSpec, chartSpecInfo);\n chartSpec = result.chartSpec;\n hasChanged ||= result.hasChanged;\n });\n return { chartSpec, hasChanged };\n }\n\n /** 重新初始化,并重新执行一遍当前生效的媒体查询 */\n protected _reInit(compile?: boolean, render?: boolean) {\n let chartSpec = this._option.globalInstance.getSpec();\n this._baseChartSpec = cloneDeepSpec(chartSpec, ['data', MediaQuery.specKey]);\n this._baseChartSpecInfo = this._option.globalInstance.getSpecInfo();\n\n let hasChanged = false;\n this.currentActiveItems.forEach(item => {\n const result = this._apply(item, chartSpec, this._baseChartSpecInfo);\n chartSpec = result.chartSpec;\n hasChanged ||= result.hasChanged;\n });\n\n if (hasChanged) {\n this._option.updateSpec(chartSpec, compile, render);\n }\n }\n\n release() {\n super.release();\n this._initialized = false;\n this._spec = [];\n this._option = undefined;\n this._currentMediaInfo = {};\n this.currentActiveItems.clear();\n }\n}\n\nexport const registerMediaQuery = () => {\n registerChartPlugin(MediaQuery);\n};\n"]}
1
+ {"version":3,"sources":["../src/plugin/chart/media-query/media-query.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAExD,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D,MAAM,OAAO,UAAW,SAAQ,UAAU;IAuBxC;QACE,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QApBhB,SAAI,GAAW,kBAAkB,CAAC;QAWjC,sBAAiB,GAAwB,EAAE,CAAC;QAG7C,uBAAkB,GAAG,IAAI,GAAG,EAAmB,CAAC;QAG/C,iBAAY,GAAY,KAAK,CAAC;IAIxC,CAAC;IAED,MAAM,CAAC,OAA4B,EAAE,SAAc;QACjD,IAAI,CAAC,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAG,UAAU,CAAC,OAAO,CAAC,CAAA,EAAE;YACpC,OAAO;SACR;QAED,MAAM,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC;QACnC,IAAI,CAAC,OAAO,GAAG;YACb,cAAc,EAAE,OAAO,CAAC,cAAc;YACtC,UAAU,EAAE,CAAC,IAAS,EAAE,OAAiB,EAAE,MAAgB,EAAE,EAAE;gBAC7D,IAAI,MAAM,EAAE;oBACV,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;iBACrC;qBAAM,IAAI,OAAO,EAAE;oBAClB,cAAc,CAAC,sBAAsB,CAAC,IAAI,EAAE,KAAK,EAAE;wBACjD,aAAa,EAAE,IAAI;qBACpB,CAAC,CAAC;iBACJ;qBAAM;oBACL,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;iBACrC;YACH,CAAC;SACF,CAAC;QACF,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC3C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;IAC3B,CAAC;IAED,cAAc,CAAC,OAA4B,EAAE,KAAa,EAAE,MAAc;QACxE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACtB,OAAO;SACR;QAED,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAC/C,CAAC;IAED,yBAAyB,CAAC,OAA4B,EAAE,SAAc,EAAE,YAAsC;QAC5G,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACtB,OAAO;SACR;QAED,IAAI,YAAY,KAAK,iBAAiB,EAAE;YAEtC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;SAC5B;IACH,CAAC;IAED,yBAAyB,CACvB,OAA4B,EAC5B,SAAc,EACd,SAAyB,EACzB,YAAsC;QAEtC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACtB,OAAO;SACR;QAED,IAAI,YAAY,KAAK,YAAY,EAAE;YACjC,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,SAAS,EAAE,iBAAiB,CAAC,CAAC;SAC/D;IACH,CAAC;IAED,iBAAiB,CAAC,OAA4B,EAAE,SAAc,EAAE,YAAsC;QACpG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACtB,OAAO;SACR;QAED,IAAI,eAAwB,CAAC;QAC7B,IAAI,eAAwB,CAAC;QAE7B,QAAQ,YAAY,EAAE;YACpB,KAAK,QAAQ,CAAC;YACd,KAAK,iBAAiB;gBACpB,eAAe,GAAG,KAAK,CAAC;gBACxB,eAAe,GAAG,IAAI,CAAC;gBACvB,MAAM;YACR,KAAK,iBAAiB;gBACpB,eAAe,GAAG,IAAI,CAAC;gBACvB,eAAe,GAAG,KAAK,CAAC;gBACxB,MAAM;YACR,KAAK,wBAAwB;gBAC3B,eAAe,GAAG,KAAK,CAAC;gBACxB,eAAe,GAAG,KAAK,CAAC;gBACxB,MAAM;SACT;QAED,IAAI,eAAe,EAAE;YACnB,IAAI,CAAC,OAAO,EAAE,CAAC;SAChB;QACD,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YAEtB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;SACjC;QACD,IAAI,eAAe,IAAI,eAAe,EAAE;YAEtC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC;YACvE,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;SAC/C;IACH,CAAC;IAGS,WAAW,CAAC,KAAa,EAAE,MAAc,EAAE,OAAiB,EAAE,MAAgB;QACtF,IAAI,IAAI,CAAC,iBAAiB,CAAC,KAAK,KAAK,KAAK,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,KAAK,MAAM,EAAE;YACtF,OAAO,KAAK,CAAC;SACd;QACD,IAAI,CAAC,iBAAiB,CAAC,KAAK,GAAG,KAAK,CAAC;QACrC,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,MAAM,CAAC;QAEvC,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC7C,CAAC;IAGS,aAAa,CAAC,OAAiB,EAAE,MAAgB;QAEzD,MAAM,cAAc,GAAsB,EAAE,CAAC;QAC7C,MAAM,gBAAgB,GAAsB,EAAE,CAAC;QAC/C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACxB,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACnD,IAAI,UAAU,EAAE;gBACd,IAAI,QAAQ,EAAE;oBACZ,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBAC3B;qBAAM;oBACL,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBAC7B;aACF;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,cAAc,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE;YACtD,OAAO,KAAK,CAAC;SACd;QACD,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACxB,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;YACzG,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;SACrE;QACD,IAAI,SAAc,CAAC;QACnB,IAAI,aAAkB,CAAC;QACvB,IAAI,UAAU,GAAG,KAAK,CAAC;QAGvB,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;YAC/B,SAAS,GAAG,aAAa,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;YAC7E,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC;YACxC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACjD,IAAI,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;oBACnC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;oBACrC,OAAO;iBACR;gBACD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;gBAC3D,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;YAC/B,CAAC,CAAC,CAAC;YACH,UAAU,GAAG,IAAI,CAAC;SACnB;aAAM;YACL,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;YAClD,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;SAC3D;QAGD,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAC5B,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAClC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;YAC3D,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;YAC7B,UAAU,KAAV,UAAU,GAAK,MAAM,CAAC,UAAU,EAAC;QACnC,CAAC,CAAC,CAAC;QAEH,IAAI,UAAU,EAAE;YACd,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;SACrD;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAGS,MAAM,CAAC,IAAqB;QACpC,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QACxC,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,iBAA+B,EAAE,cAAc,CAAC,CAAC;QACnG,OAAO;YACL,QAAQ;YACR,UAAU,EAAE,QAAQ,KAAK,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC;SAC3D,CAAC;IACJ,CAAC;IAGS,MAAM,CAAC,IAAqB,EAAE,SAAc,EAAE,aAA6B;QACnF,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QAC/B,IAAI,UAAU,GAAG,KAAK,CAAC;QAEvB,KAAK,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;YACjC,MAAM,MAAM,GAAG,uBAAuB,CAAC,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;YACpF,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;YAC7B,UAAU,KAAV,UAAU,GAAK,MAAM,CAAC,UAAU,EAAC;QACnC,CAAC,CAAC,CAAC;QACH,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;IACnC,CAAC;IAGS,OAAO,CAAC,OAAiB,EAAE,MAAgB;QACnD,IAAI,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;QACtD,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;QAC7E,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;QAEpE,IAAI,UAAU,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACrC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;YACrE,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;YAC7B,UAAU,KAAV,UAAU,GAAK,MAAM,CAAC,UAAU,EAAC;QACnC,CAAC,CAAC,CAAC;QAEH,IAAI,UAAU,EAAE;YACd,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;SACrD;IACH,CAAC;IAED,OAAO;QACL,KAAK,CAAC,OAAO,EAAE,CAAC;QAChB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;QACzB,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;QAC5B,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;IAClC,CAAC;;AAhPe,qBAAU,GAAY,OAAO,CAAC;AAC9B,kBAAO,GAAG,OAAO,CAAC;AAClB,eAAI,GAAW,kBAAkB,CAAC;AAiPpD,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,EAAE;IACrC,mBAAmB,CAAC,UAAU,CAAC,CAAC;AAClC,CAAC,CAAC","file":"media-query.js","sourcesContent":["import type {\n IMediaInfo,\n IMediaQueryCheckResult,\n IMediaQuerySpec,\n IMediaQueryOption,\n IMediaQueryItem,\n IMediaQueryActionResult\n} from './interface';\nimport { checkMediaQuery } from './util';\nimport { executeMediaQueryAction } from './util/action';\nimport type { IChartPlugin, IChartPluginService } from '../interface';\nimport { array } from '../../../util';\nimport type { VChartRenderActionSource } from '../../../core/interface';\nimport { BasePlugin } from '../../base/base-plugin';\nimport { registerChartPlugin } from '../register';\nimport type { IChartSpecInfo } from '../../../chart/interface';\nimport { cloneDeepSpec } from '@visactor/vutils-extension';\n\nexport class MediaQuery extends BasePlugin implements IChartPlugin {\n static readonly pluginType: 'chart' = 'chart';\n static readonly specKey = 'media';\n static readonly type: string = 'MediaQueryPlugin';\n readonly type: string = 'MediaQueryPlugin';\n\n protected _spec: IMediaQuerySpec;\n protected _option: IMediaQueryOption;\n\n /** 不带任何媒体查询的图表 spec */\n protected _baseChartSpec: any;\n /** 不带任何媒体查询的图表 spec info */\n protected _baseChartSpecInfo: IChartSpecInfo;\n\n /** 当前媒体信息 */\n protected _currentMediaInfo: Partial<IMediaInfo> = {};\n\n /** 当前正在生效的媒体查询 */\n readonly currentActiveItems = new Set<IMediaQueryItem>();\n\n /** 媒体查询是否已经初始化 */\n protected _initialized: boolean = false;\n\n constructor() {\n super(MediaQuery.type);\n }\n\n onInit(service: IChartPluginService, chartSpec: any) {\n if (!chartSpec?.[MediaQuery.specKey]) {\n return;\n }\n\n const { globalInstance } = service;\n this._option = {\n globalInstance: service.globalInstance,\n updateSpec: (spec: any, compile?: boolean, render?: boolean) => {\n if (render) {\n globalInstance.updateSpecSync(spec);\n } else if (compile) {\n globalInstance.updateSpecAndRecompile(spec, false, {\n transformSpec: true\n });\n } else {\n globalInstance.setRuntimeSpec(spec);\n }\n }\n };\n this._spec = chartSpec[MediaQuery.specKey];\n this._initialized = true;\n }\n\n onBeforeResize(service: IChartPluginService, width: number, height: number) {\n if (!this._initialized) {\n return;\n }\n\n this._changeSize(width, height, true, false);\n }\n\n onAfterChartSpecTransform(service: IChartPluginService, chartSpec: any, actionSource: VChartRenderActionSource) {\n if (!this._initialized) {\n return;\n }\n\n if (actionSource === 'setCurrentTheme') {\n // 重新执行已生效的所有媒体查询\n this._reInit(false, false);\n }\n }\n\n onAfterModelSpecTransform(\n service: IChartPluginService,\n chartSpec: any,\n chartInfo: IChartSpecInfo,\n actionSource: VChartRenderActionSource\n ) {\n if (!this._initialized) {\n return;\n }\n\n if (actionSource === 'updateSpec') {\n this.onBeforeInitChart(service, chartSpec, 'setCurrentTheme');\n }\n }\n\n onBeforeInitChart(service: IChartPluginService, chartSpec: any, actionSource: VChartRenderActionSource) {\n if (!this._initialized) {\n return;\n }\n\n let resetMediaQuery: boolean;\n let checkMediaQuery: boolean;\n\n switch (actionSource) {\n case 'render':\n case 'updateModelSpec':\n resetMediaQuery = false;\n checkMediaQuery = true;\n break;\n case 'setCurrentTheme':\n resetMediaQuery = true;\n checkMediaQuery = false;\n break;\n case 'updateSpecAndRecompile':\n resetMediaQuery = false;\n checkMediaQuery = false;\n break;\n }\n\n if (resetMediaQuery) {\n this.release();\n }\n if (!this._initialized) {\n // 初始化媒体查询\n this.onInit(service, chartSpec);\n }\n if (resetMediaQuery || checkMediaQuery) {\n // 触发媒体查询\n const { width, height } = this._option.globalInstance.getCurrentSize();\n this._changeSize(width, height, false, false);\n }\n }\n\n /** 更新图表宽高信息,执行所有相关媒体查询,返回是否命中某个查询 */\n protected _changeSize(width: number, height: number, compile?: boolean, render?: boolean): boolean {\n if (this._currentMediaInfo.width === width && this._currentMediaInfo.height === height) {\n return false;\n }\n this._currentMediaInfo.width = width;\n this._currentMediaInfo.height = height;\n // 由于目前媒体查询只和图表宽高有关,这里执行所有媒体查询\n return this._applyQueries(compile, render);\n }\n\n /** 执行所有媒体查询,返回是否命中某个查询 */\n protected _applyQueries(compile?: boolean, render?: boolean): boolean {\n // 检查所有查询的查询条件\n const changeToActive: IMediaQueryItem[] = []; // 将会生效的查询\n const changeToInactive: IMediaQueryItem[] = []; // 将会失效的查询\n this._spec.forEach(item => {\n const { hasChanged, isActive } = this._check(item);\n if (hasChanged) {\n if (isActive) {\n changeToActive.push(item);\n } else {\n changeToInactive.push(item);\n }\n }\n });\n\n if (!changeToActive.length && !changeToInactive.length) {\n return false;\n }\n if (!this._baseChartSpec) {\n this._baseChartSpec = cloneDeepSpec(this._option.globalInstance.getSpec(), ['data', MediaQuery.specKey]);\n this._baseChartSpecInfo = this._option.globalInstance.getSpecInfo();\n }\n let chartSpec: any;\n let chartSpecInfo: any;\n let hasChanged = false;\n\n // 处理将会失效的查询:重新执行一遍当前生效的查询\n if (changeToInactive.length > 0) {\n chartSpec = cloneDeepSpec(this._baseChartSpec, ['data', MediaQuery.specKey]);\n chartSpecInfo = this._baseChartSpecInfo;\n Array.from(this.currentActiveItems).forEach(item => {\n if (changeToInactive.includes(item)) {\n this.currentActiveItems.delete(item);\n return;\n }\n const result = this._apply(item, chartSpec, chartSpecInfo);\n chartSpec = result.chartSpec;\n });\n hasChanged = true;\n } else {\n chartSpec = this._option.globalInstance.getSpec();\n chartSpecInfo = this._option.globalInstance.getSpecInfo();\n }\n\n // 处理将会生效的查询\n changeToActive.forEach(item => {\n this.currentActiveItems.add(item);\n const result = this._apply(item, chartSpec, chartSpecInfo);\n chartSpec = result.chartSpec;\n hasChanged ||= result.hasChanged;\n });\n\n if (hasChanged) {\n this._option.updateSpec(chartSpec, compile, render);\n }\n return true;\n }\n\n /** 检查媒体查询的条件是否满足 */\n protected _check(item: IMediaQueryItem): IMediaQueryCheckResult {\n const { globalInstance } = this._option;\n const isActive = checkMediaQuery(item.query, this._currentMediaInfo as IMediaInfo, globalInstance);\n return {\n isActive,\n hasChanged: isActive !== this.currentActiveItems.has(item)\n };\n }\n\n /** 执行一条媒体查询 */\n protected _apply(item: IMediaQueryItem, chartSpec: any, chartSpecInfo: IChartSpecInfo): IMediaQueryActionResult {\n const { query, action } = item;\n let hasChanged = false;\n // 执行\n array(action).forEach(actionItem => {\n const result = executeMediaQueryAction(actionItem, query, chartSpec, chartSpecInfo);\n chartSpec = result.chartSpec;\n hasChanged ||= result.hasChanged;\n });\n return { chartSpec, hasChanged };\n }\n\n /** 重新初始化,并重新执行一遍当前生效的媒体查询 */\n protected _reInit(compile?: boolean, render?: boolean) {\n let chartSpec = this._option.globalInstance.getSpec();\n this._baseChartSpec = cloneDeepSpec(chartSpec, ['data', MediaQuery.specKey]);\n this._baseChartSpecInfo = this._option.globalInstance.getSpecInfo();\n\n let hasChanged = false;\n this.currentActiveItems.forEach(item => {\n const result = this._apply(item, chartSpec, this._baseChartSpecInfo);\n chartSpec = result.chartSpec;\n hasChanged ||= result.hasChanged;\n });\n\n if (hasChanged) {\n this._option.updateSpec(chartSpec, compile, render);\n }\n }\n\n release() {\n super.release();\n this._initialized = false;\n this._spec = [];\n this._option = undefined;\n this._currentMediaInfo = {};\n this.currentActiveItems.clear();\n }\n}\n\nexport const registerMediaQuery = () => {\n registerChartPlugin(MediaQuery);\n};\n"]}
@@ -2,12 +2,14 @@ import type { IChartPlugin, IChartPluginService } from './interface';
2
2
  import type { IVChart } from '../../core';
3
3
  import { BasePluginService } from '../base/base-plugin-service';
4
4
  import type { VChartRenderActionSource } from '../../core/interface';
5
+ import type { IChartSpecInfo } from '../../chart/interface/common';
5
6
  export declare class ChartPluginService<T extends IChartPlugin = IChartPlugin> extends BasePluginService<T> implements IChartPluginService<T> {
6
7
  globalInstance: IVChart;
7
8
  constructor(globalInstance: IVChart);
8
9
  onInit(chartSpec: any): void;
9
10
  onBeforeResize(width: number, height: number): void;
10
11
  onAfterChartSpecTransform(chartSpec: any, actionSource: VChartRenderActionSource): void;
12
+ onAfterModelSpecTransform(chartSpec: any, chartSpecInfo: IChartSpecInfo, actionSource: VChartRenderActionSource): void;
11
13
  onBeforeInitChart(chartSpec: any, actionSource: VChartRenderActionSource): void;
12
14
  releaseAll(): void;
13
15
  }
@@ -19,6 +19,11 @@ export class ChartPluginService extends BasePluginService {
19
19
  plugin.onAfterChartSpecTransform && plugin.onAfterChartSpecTransform(this, chartSpec, actionSource);
20
20
  }));
21
21
  }
22
+ onAfterModelSpecTransform(chartSpec, chartSpecInfo, actionSource) {
23
+ this._plugins.forEach((plugin => {
24
+ plugin.onAfterModelSpecTransform && plugin.onAfterModelSpecTransform(this, chartSpec, chartSpecInfo, actionSource);
25
+ }));
26
+ }
22
27
  onBeforeInitChart(chartSpec, actionSource) {
23
28
  this._plugins.forEach((plugin => {
24
29
  plugin.onBeforeInitChart && plugin.onBeforeInitChart(this, chartSpec, actionSource);
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/plugin/chart/plugin-service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAGhE,MAAM,OAAO,kBACX,SAAQ,iBAAoB;IAK5B,YAAY,cAAuB;QACjC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;IACvC,CAAC;IAED,MAAM,CAAC,SAAc;QACnB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YAC7B,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;IACL,CAAC;IAED,cAAc,CAAC,KAAa,EAAE,MAAc;QAC1C,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YAC7B,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;IACL,CAAC;IAED,yBAAyB,CAAC,SAAc,EAAE,YAAsC;QAC9E,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YAC7B,MAAM,CAAC,yBAAyB,IAAI,MAAM,CAAC,yBAAyB,CAAC,IAAI,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;QACtG,CAAC,CAAC,CAAC;IACL,CAAC;IAED,iBAAiB,CAAC,SAAc,EAAE,YAAsC;QACtE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YAC7B,MAAM,CAAC,iBAAiB,IAAI,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;QACtF,CAAC,CAAC,CAAC;IACL,CAAC;IAED,UAAU;QACR,KAAK,CAAC,UAAU,EAAE,CAAC;QACnB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;IAC7B,CAAC;CACF","file":"plugin-service.js","sourcesContent":["import type { IChartPlugin, IChartPluginService } from './interface';\nimport type { IVChart } from '../../core';\nimport { BasePluginService } from '../base/base-plugin-service';\nimport type { VChartRenderActionSource } from '../../core/interface';\n\nexport class ChartPluginService<T extends IChartPlugin = IChartPlugin>\n extends BasePluginService<T>\n implements IChartPluginService<T>\n{\n globalInstance: IVChart;\n\n constructor(globalInstance: IVChart) {\n super();\n this.globalInstance = globalInstance;\n }\n\n onInit(chartSpec: any) {\n this._plugins.forEach(plugin => {\n plugin.onInit && plugin.onInit(this, chartSpec);\n });\n }\n\n onBeforeResize(width: number, height: number) {\n this._plugins.forEach(plugin => {\n plugin.onBeforeResize && plugin.onBeforeResize(this, width, height);\n });\n }\n\n onAfterChartSpecTransform(chartSpec: any, actionSource: VChartRenderActionSource) {\n this._plugins.forEach(plugin => {\n plugin.onAfterChartSpecTransform && plugin.onAfterChartSpecTransform(this, chartSpec, actionSource);\n });\n }\n\n onBeforeInitChart(chartSpec: any, actionSource: VChartRenderActionSource) {\n this._plugins.forEach(plugin => {\n plugin.onBeforeInitChart && plugin.onBeforeInitChart(this, chartSpec, actionSource);\n });\n }\n\n releaseAll(): void {\n super.releaseAll();\n this.globalInstance = null;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/plugin/chart/plugin-service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAIhE,MAAM,OAAO,kBACX,SAAQ,iBAAoB;IAK5B,YAAY,cAAuB;QACjC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;IACvC,CAAC;IAED,MAAM,CAAC,SAAc;QACnB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YAC7B,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;IACL,CAAC;IAED,cAAc,CAAC,KAAa,EAAE,MAAc;QAC1C,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YAC7B,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;IACL,CAAC;IAED,yBAAyB,CAAC,SAAc,EAAE,YAAsC;QAC9E,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YAC7B,MAAM,CAAC,yBAAyB,IAAI,MAAM,CAAC,yBAAyB,CAAC,IAAI,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;QACtG,CAAC,CAAC,CAAC;IACL,CAAC;IAED,yBAAyB,CAAC,SAAc,EAAE,aAA6B,EAAE,YAAsC;QAC7G,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YAC7B,MAAM,CAAC,yBAAyB;gBAC9B,MAAM,CAAC,yBAAyB,CAAC,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC;QACnF,CAAC,CAAC,CAAC;IACL,CAAC;IAED,iBAAiB,CAAC,SAAc,EAAE,YAAsC;QACtE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YAC7B,MAAM,CAAC,iBAAiB,IAAI,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;QACtF,CAAC,CAAC,CAAC;IACL,CAAC;IAED,UAAU;QACR,KAAK,CAAC,UAAU,EAAE,CAAC;QACnB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;IAC7B,CAAC;CACF","file":"plugin-service.js","sourcesContent":["import type { IChartPlugin, IChartPluginService } from './interface';\nimport type { IVChart } from '../../core';\nimport { BasePluginService } from '../base/base-plugin-service';\nimport type { VChartRenderActionSource } from '../../core/interface';\nimport type { IChartSpecInfo } from '../../chart/interface/common';\n\nexport class ChartPluginService<T extends IChartPlugin = IChartPlugin>\n extends BasePluginService<T>\n implements IChartPluginService<T>\n{\n globalInstance: IVChart;\n\n constructor(globalInstance: IVChart) {\n super();\n this.globalInstance = globalInstance;\n }\n\n onInit(chartSpec: any) {\n this._plugins.forEach(plugin => {\n plugin.onInit && plugin.onInit(this, chartSpec);\n });\n }\n\n onBeforeResize(width: number, height: number) {\n this._plugins.forEach(plugin => {\n plugin.onBeforeResize && plugin.onBeforeResize(this, width, height);\n });\n }\n\n onAfterChartSpecTransform(chartSpec: any, actionSource: VChartRenderActionSource) {\n this._plugins.forEach(plugin => {\n plugin.onAfterChartSpecTransform && plugin.onAfterChartSpecTransform(this, chartSpec, actionSource);\n });\n }\n\n onAfterModelSpecTransform(chartSpec: any, chartSpecInfo: IChartSpecInfo, actionSource: VChartRenderActionSource) {\n this._plugins.forEach(plugin => {\n plugin.onAfterModelSpecTransform &&\n plugin.onAfterModelSpecTransform(this, chartSpec, chartSpecInfo, actionSource);\n });\n }\n\n onBeforeInitChart(chartSpec: any, actionSource: VChartRenderActionSource) {\n this._plugins.forEach(plugin => {\n plugin.onBeforeInitChart && plugin.onBeforeInitChart(this, chartSpec, actionSource);\n });\n }\n\n releaseAll(): void {\n super.releaseAll();\n this.globalInstance = null;\n }\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import type { Options } from './constants';
2
- import type { Maybe, ILayoutPoint, RenderMode } from '../../../typings';
2
+ import type { Maybe, RenderMode } from '../../../typings';
3
3
  import type { TooltipData, ITooltipActual, TooltipActiveType, ITooltipHandler, ITooltipPositionActual } from '../../../typings/tooltip';
4
4
  import type { IGroup } from '@visactor/vrender-core';
5
5
  import type { Compiler } from '../../../compile/compiler';
@@ -25,12 +25,6 @@ export declare abstract class BaseTooltipHandler extends BasePlugin implements I
25
25
  protected _attributes?: ITooltipAttributes | null;
26
26
  protected _chartContainer: Maybe<HTMLElement>;
27
27
  protected _compiler: Compiler;
28
- protected _isTooltipPaused: boolean;
29
- protected _isPointerEscaped: boolean;
30
- protected _cachePointerTimer: number;
31
- protected _cachePointerPosition: ILayoutPoint;
32
- protected _cacheTooltipPosition: ILayoutPoint;
33
- protected _cacheTooltipSize: IContainerSize;
34
28
  protected _container: Maybe<IGroup | HTMLElement>;
35
29
  protected _isReleased: boolean;
36
30
  onAdd(service: IComponentPluginService<any>): void;
@@ -41,18 +35,12 @@ export declare abstract class BaseTooltipHandler extends BasePlugin implements I
41
35
  protected _changeTooltipPosition: ChangeTooltipPositionFunc;
42
36
  hideTooltip(params: TooltipHandlerParams): TooltipResult;
43
37
  release(): void;
44
- protected _clearAllCache(): void;
45
38
  protected abstract _updateTooltip(visible: boolean, params: TooltipHandlerParams): void;
46
39
  protected abstract _removeTooltip(): void;
47
40
  protected _throttle(callback: any): (...args: unknown[]) => unknown;
48
41
  protected _getDefaultOption(): Options;
49
42
  protected _getActualTooltipPosition: (actualTooltip: ITooltipActual, params: TooltipHandlerParams, tooltipBoxSize: IContainerSize | undefined) => ITooltipPositionActual;
50
43
  protected _getTooltipBoxSize(actualTooltip: ITooltipActual, changePositionOnly: boolean): IContainerSize | undefined;
51
- protected _getPointerPositionRelativeToTooltipParent(params: TooltipHandlerParams): {
52
- x: any;
53
- y: any;
54
- };
55
- protected _isPointerMovingToTooltip(params: TooltipHandlerParams): boolean;
56
44
  protected _getParentElement(spec: ITooltipSpec): HTMLElement;
57
45
  getTooltipContainer(): HTMLElement | IGroup;
58
46
  protected _initFromSpec(): void;