@visactor/vchart 1.10.0-alpha.8 → 1.10.0-alpha.9

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 (423) hide show
  1. package/build/es5/index.js +1 -1
  2. package/build/index.js +517 -281
  3. package/build/index.min.js +1 -1
  4. package/build/tsconfig.tsbuildinfo +1 -1
  5. package/cjs/chart/base/base-chart-transformer.js +6 -8
  6. package/cjs/chart/base/base-chart-transformer.js.map +1 -1
  7. package/cjs/chart/base/base-chart.js +3 -5
  8. package/cjs/chart/base/base-chart.js.map +1 -1
  9. package/cjs/chart/base/util.d.ts +2 -2
  10. package/cjs/chart/base/util.js.map +1 -1
  11. package/cjs/chart/interface/chart.js.map +1 -1
  12. package/cjs/chart/interface/common.d.ts +1 -5
  13. package/cjs/chart/interface/common.js.map +1 -1
  14. package/cjs/chart/map/map-transformer.js.map +1 -1
  15. package/cjs/chart/sequence/interface.d.ts +2 -2
  16. package/cjs/chart/sequence/interface.js.map +1 -1
  17. package/cjs/chart/sequence/sequence-transformer.js.map +1 -1
  18. package/cjs/compile/compilable-base.js +1 -1
  19. package/cjs/compile/compilable-base.js.map +1 -1
  20. package/cjs/compile/compiler.d.ts +1 -0
  21. package/cjs/compile/compiler.js +11 -9
  22. package/cjs/compile/compiler.js.map +1 -1
  23. package/cjs/component/axis/base-axis.js +2 -2
  24. package/cjs/component/axis/base-axis.js.map +1 -1
  25. package/cjs/component/axis/polar/axis.js.map +1 -1
  26. package/cjs/component/base/base-component.js +1 -1
  27. package/cjs/component/base/base-component.js.map +1 -1
  28. package/cjs/component/brush/brush.d.ts +8 -0
  29. package/cjs/component/brush/brush.js +64 -11
  30. package/cjs/component/brush/brush.js.map +1 -1
  31. package/cjs/component/brush/interface.d.ts +4 -0
  32. package/cjs/component/brush/interface.js.map +1 -1
  33. package/cjs/component/crosshair/base.js +1 -1
  34. package/cjs/component/crosshair/base.js.map +1 -1
  35. package/cjs/component/crosshair/cartesian.js +8 -4
  36. package/cjs/component/crosshair/cartesian.js.map +1 -1
  37. package/cjs/component/crosshair/polar.js +4 -2
  38. package/cjs/component/crosshair/polar.js.map +1 -1
  39. package/cjs/component/crosshair/utils/cartesian.d.ts +2 -0
  40. package/cjs/component/crosshair/utils/cartesian.js +4 -0
  41. package/cjs/component/crosshair/utils/cartesian.js.map +1 -1
  42. package/cjs/component/custom-mark/custom-mark.d.ts +1 -0
  43. package/cjs/component/custom-mark/custom-mark.js +12 -1
  44. package/cjs/component/custom-mark/custom-mark.js.map +1 -1
  45. package/cjs/component/data-zoom/data-filter-base-component.d.ts +2 -2
  46. package/cjs/component/data-zoom/data-filter-base-component.js +12 -10
  47. package/cjs/component/data-zoom/data-filter-base-component.js.map +1 -1
  48. package/cjs/component/data-zoom/data-zoom/data-zoom.d.ts +1 -0
  49. package/cjs/component/data-zoom/data-zoom/data-zoom.js +12 -9
  50. package/cjs/component/data-zoom/data-zoom/data-zoom.js.map +1 -1
  51. package/cjs/component/data-zoom/data-zoom/interface.d.ts +1 -0
  52. package/cjs/component/data-zoom/data-zoom/interface.js.map +1 -1
  53. package/cjs/component/data-zoom/interface.d.ts +2 -0
  54. package/cjs/component/data-zoom/interface.js.map +1 -1
  55. package/cjs/component/data-zoom/scroll-bar/scroll-bar.js +2 -1
  56. package/cjs/component/data-zoom/scroll-bar/scroll-bar.js.map +1 -1
  57. package/cjs/component/data-zoom/util.js +5 -1
  58. package/cjs/component/data-zoom/util.js.map +1 -1
  59. package/cjs/component/geo/geo-coordinate.js.map +1 -1
  60. package/cjs/component/indicator/indicator.js.map +1 -1
  61. package/cjs/component/label/base-label.d.ts +2 -1
  62. package/cjs/component/label/base-label.js +3 -0
  63. package/cjs/component/label/base-label.js.map +1 -1
  64. package/cjs/component/label/label.d.ts +1 -2
  65. package/cjs/component/label/label.js +7 -10
  66. package/cjs/component/label/label.js.map +1 -1
  67. package/cjs/component/label/total-label.d.ts +1 -0
  68. package/cjs/component/label/total-label.js +9 -1
  69. package/cjs/component/label/total-label.js.map +1 -1
  70. package/cjs/component/tooltip/constant.d.ts +5 -0
  71. package/cjs/component/tooltip/constant.js +13 -0
  72. package/cjs/component/tooltip/constant.js.map +1 -0
  73. package/cjs/component/tooltip/index.d.ts +1 -0
  74. package/cjs/component/tooltip/index.js +1 -1
  75. package/cjs/component/tooltip/index.js.map +1 -1
  76. package/cjs/component/tooltip/interface/spec.d.ts +4 -3
  77. package/cjs/component/tooltip/interface/spec.js.map +1 -1
  78. package/cjs/component/tooltip/tooltip-transformer.d.ts +2 -0
  79. package/cjs/component/tooltip/tooltip-transformer.js +14 -1
  80. package/cjs/component/tooltip/tooltip-transformer.js.map +1 -1
  81. package/cjs/component/tooltip/tooltip.d.ts +3 -3
  82. package/cjs/component/tooltip/tooltip.js +28 -48
  83. package/cjs/component/tooltip/tooltip.js.map +1 -1
  84. package/cjs/core/index.d.ts +1 -1
  85. package/cjs/core/index.js +1 -1
  86. package/cjs/core/index.js.map +1 -1
  87. package/cjs/core/vchart.d.ts +4 -1
  88. package/cjs/core/vchart.js +47 -49
  89. package/cjs/core/vchart.js.map +1 -1
  90. package/cjs/event/event-dispatcher.d.ts +1 -0
  91. package/cjs/event/event-dispatcher.js +4 -1
  92. package/cjs/event/event-dispatcher.js.map +1 -1
  93. package/cjs/event/event.js +1 -1
  94. package/cjs/event/event.js.map +1 -1
  95. package/cjs/event/interface.d.ts +2 -1
  96. package/cjs/event/interface.js.map +1 -1
  97. package/cjs/interaction/index.d.ts +1 -0
  98. package/cjs/interaction/index.js +50 -0
  99. package/cjs/interaction/index.js.map +1 -0
  100. package/cjs/interaction/interface.js +1 -1
  101. package/cjs/interaction/zoom/zoomable.js +4 -6
  102. package/cjs/interaction/zoom/zoomable.js.map +1 -1
  103. package/cjs/model/interface.d.ts +3 -8
  104. package/cjs/model/interface.js.map +1 -1
  105. package/cjs/plugin/base/base-plugin-service.d.ts +2 -2
  106. package/cjs/plugin/base/base-plugin-service.js +5 -5
  107. package/cjs/plugin/base/base-plugin-service.js.map +1 -1
  108. package/cjs/plugin/base/base-plugin.d.ts +1 -0
  109. package/cjs/plugin/base/base-plugin.js +3 -0
  110. package/cjs/plugin/base/base-plugin.js.map +1 -1
  111. package/cjs/plugin/base/interface.d.ts +3 -3
  112. package/cjs/plugin/base/interface.js.map +1 -1
  113. package/cjs/plugin/chart/formatter/formatter.d.ts +2 -2
  114. package/cjs/plugin/chart/formatter/formatter.js +5 -7
  115. package/cjs/plugin/chart/formatter/formatter.js.map +1 -1
  116. package/cjs/plugin/chart/media-query/media-query.d.ts +1 -1
  117. package/cjs/plugin/chart/media-query/media-query.js +4 -4
  118. package/cjs/plugin/chart/media-query/media-query.js.map +1 -1
  119. package/cjs/plugin/chart/plugin-service.d.ts +1 -0
  120. package/cjs/plugin/chart/plugin-service.js +3 -0
  121. package/cjs/plugin/chart/plugin-service.js.map +1 -1
  122. package/cjs/plugin/components/plugin-service.d.ts +1 -0
  123. package/cjs/plugin/components/plugin-service.js +3 -0
  124. package/cjs/plugin/components/plugin-service.js.map +1 -1
  125. package/cjs/plugin/components/tooltip-handler/canvas/canvas-tooltip-handler.js +3 -3
  126. package/cjs/plugin/components/tooltip-handler/canvas/canvas-tooltip-handler.js.map +1 -1
  127. package/cjs/plugin/components/tooltip-handler/constants.d.ts +0 -5
  128. package/cjs/plugin/components/tooltip-handler/constants.js +4 -9
  129. package/cjs/plugin/components/tooltip-handler/constants.js.map +1 -1
  130. package/cjs/plugin/components/tooltip-handler/dom/dom-tooltip-handler.js +3 -3
  131. package/cjs/plugin/components/tooltip-handler/dom/dom-tooltip-handler.js.map +1 -1
  132. package/cjs/plugin/components/tooltip-handler/utils/position.d.ts +1 -0
  133. package/cjs/region/interface.d.ts +2 -1
  134. package/cjs/region/interface.js.map +1 -1
  135. package/cjs/region/region.js +1 -1
  136. package/cjs/region/region.js.map +1 -1
  137. package/cjs/series/area/area-transformer.d.ts +1 -0
  138. package/cjs/series/area/area-transformer.js +3 -0
  139. package/cjs/series/area/area-transformer.js.map +1 -1
  140. package/cjs/series/area/area.d.ts +0 -1
  141. package/cjs/series/area/area.js +1 -1
  142. package/cjs/series/area/area.js.map +1 -1
  143. package/cjs/series/bar/bar-transformer.d.ts +1 -0
  144. package/cjs/series/bar/bar-transformer.js +3 -0
  145. package/cjs/series/bar/bar-transformer.js.map +1 -1
  146. package/cjs/series/bar/bar.d.ts +0 -1
  147. package/cjs/series/bar/bar.js +2 -2
  148. package/cjs/series/bar/bar.js.map +1 -1
  149. package/cjs/series/base/base-series-transformer.d.ts +5 -3
  150. package/cjs/series/base/base-series-transformer.js +9 -2
  151. package/cjs/series/base/base-series-transformer.js.map +1 -1
  152. package/cjs/series/base/base-series.d.ts +0 -4
  153. package/cjs/series/base/base-series.js +12 -17
  154. package/cjs/series/base/base-series.js.map +1 -1
  155. package/cjs/series/cartesian/cartesian.js +3 -3
  156. package/cjs/series/cartesian/cartesian.js.map +1 -1
  157. package/cjs/series/funnel/funnel.js +2 -1
  158. package/cjs/series/funnel/funnel.js.map +1 -1
  159. package/cjs/series/gauge/gauge-pointer-transformer.d.ts +5 -0
  160. package/cjs/series/gauge/gauge-pointer-transformer.js +16 -0
  161. package/cjs/series/gauge/gauge-pointer-transformer.js.map +1 -0
  162. package/cjs/series/gauge/gauge-pointer.d.ts +3 -1
  163. package/cjs/series/gauge/gauge-pointer.js +4 -4
  164. package/cjs/series/gauge/gauge-pointer.js.map +1 -1
  165. package/cjs/series/gauge/gauge-transformer.d.ts +1 -0
  166. package/cjs/series/gauge/gauge-transformer.js +3 -0
  167. package/cjs/series/gauge/gauge-transformer.js.map +1 -1
  168. package/cjs/series/gauge/gauge.d.ts +0 -1
  169. package/cjs/series/gauge/gauge.js +1 -1
  170. package/cjs/series/gauge/gauge.js.map +1 -1
  171. package/cjs/series/interface/common.d.ts +6 -2
  172. package/cjs/series/interface/common.js.map +1 -1
  173. package/cjs/series/map/geo-source.d.ts +1 -1
  174. package/cjs/series/map/geo-source.js.map +1 -1
  175. package/cjs/series/polar/progress-like/progress-like.d.ts +0 -1
  176. package/cjs/series/polar/progress-like/progress-like.js +5 -5
  177. package/cjs/series/polar/progress-like/progress-like.js.map +1 -1
  178. package/cjs/series/polar/rose-like/rose-like.js +1 -1
  179. package/cjs/series/polar/rose-like/rose-like.js.map +1 -1
  180. package/cjs/series/progress/circular/circular-transformer.d.ts +5 -0
  181. package/cjs/series/progress/circular/circular-transformer.js +16 -0
  182. package/cjs/series/progress/circular/circular-transformer.js.map +1 -0
  183. package/cjs/series/progress/circular/circular.d.ts +3 -0
  184. package/cjs/series/progress/circular/circular.js +6 -6
  185. package/cjs/series/progress/circular/circular.js.map +1 -1
  186. package/cjs/series/radar/radar.js +2 -2
  187. package/cjs/series/radar/radar.js.map +1 -1
  188. package/cjs/series/range-column/range-column-transformer.d.ts +1 -0
  189. package/cjs/series/range-column/range-column-transformer.js +3 -0
  190. package/cjs/series/range-column/range-column-transformer.js.map +1 -1
  191. package/cjs/series/range-column/range-column.d.ts +0 -1
  192. package/cjs/series/range-column/range-column.js +1 -2
  193. package/cjs/series/range-column/range-column.js.map +1 -1
  194. package/cjs/series/rose/rose-transformer.d.ts +1 -0
  195. package/cjs/series/rose/rose-transformer.js +3 -0
  196. package/cjs/series/rose/rose-transformer.js.map +1 -1
  197. package/cjs/series/rose/rose.d.ts +0 -1
  198. package/cjs/series/rose/rose.js +2 -2
  199. package/cjs/series/rose/rose.js.map +1 -1
  200. package/cjs/series/waterfall/waterfall-transformer.d.ts +1 -0
  201. package/cjs/series/waterfall/waterfall-transformer.js +3 -0
  202. package/cjs/series/waterfall/waterfall-transformer.js.map +1 -1
  203. package/cjs/series/waterfall/waterfall.d.ts +0 -1
  204. package/cjs/series/waterfall/waterfall.js +1 -1
  205. package/cjs/series/waterfall/waterfall.js.map +1 -1
  206. package/cjs/typings/spec/common.d.ts +2 -2
  207. package/cjs/typings/spec/common.js.map +1 -1
  208. package/cjs/typings/spec/index.d.ts +1 -1
  209. package/cjs/typings/spec/index.js.map +1 -1
  210. package/cjs/vchart-all.js +2 -2
  211. package/cjs/vchart-all.js.map +1 -1
  212. package/cjs/vchart-simple.js +2 -2
  213. package/cjs/vchart-simple.js.map +1 -1
  214. package/esm/chart/base/base-chart-transformer.js +6 -8
  215. package/esm/chart/base/base-chart-transformer.js.map +1 -1
  216. package/esm/chart/base/base-chart.js +3 -5
  217. package/esm/chart/base/base-chart.js.map +1 -1
  218. package/esm/chart/base/util.d.ts +2 -2
  219. package/esm/chart/base/util.js.map +1 -1
  220. package/esm/chart/interface/chart.js.map +1 -1
  221. package/esm/chart/interface/common.d.ts +1 -5
  222. package/esm/chart/interface/common.js.map +1 -1
  223. package/esm/chart/map/map-transformer.js.map +1 -1
  224. package/esm/chart/sequence/interface.d.ts +2 -2
  225. package/esm/chart/sequence/interface.js.map +1 -1
  226. package/esm/chart/sequence/sequence-transformer.js.map +1 -1
  227. package/esm/compile/compilable-base.js +1 -1
  228. package/esm/compile/compilable-base.js.map +1 -1
  229. package/esm/compile/compiler.d.ts +1 -0
  230. package/esm/compile/compiler.js +11 -9
  231. package/esm/compile/compiler.js.map +1 -1
  232. package/esm/component/axis/base-axis.js +2 -2
  233. package/esm/component/axis/base-axis.js.map +1 -1
  234. package/esm/component/axis/polar/axis.js.map +1 -1
  235. package/esm/component/base/base-component.js +1 -1
  236. package/esm/component/base/base-component.js.map +1 -1
  237. package/esm/component/brush/brush.d.ts +8 -0
  238. package/esm/component/brush/brush.js +64 -11
  239. package/esm/component/brush/brush.js.map +1 -1
  240. package/esm/component/brush/interface.d.ts +4 -0
  241. package/esm/component/brush/interface.js.map +1 -1
  242. package/esm/component/crosshair/base.js +1 -1
  243. package/esm/component/crosshair/base.js.map +1 -1
  244. package/esm/component/crosshair/cartesian.js +8 -4
  245. package/esm/component/crosshair/cartesian.js.map +1 -1
  246. package/esm/component/crosshair/polar.js +4 -2
  247. package/esm/component/crosshair/polar.js.map +1 -1
  248. package/esm/component/crosshair/utils/cartesian.d.ts +2 -0
  249. package/esm/component/crosshair/utils/cartesian.js +4 -0
  250. package/esm/component/crosshair/utils/cartesian.js.map +1 -1
  251. package/esm/component/custom-mark/custom-mark.d.ts +1 -0
  252. package/esm/component/custom-mark/custom-mark.js +13 -0
  253. package/esm/component/custom-mark/custom-mark.js.map +1 -1
  254. package/esm/component/data-zoom/data-filter-base-component.d.ts +2 -2
  255. package/esm/component/data-zoom/data-filter-base-component.js +12 -10
  256. package/esm/component/data-zoom/data-filter-base-component.js.map +1 -1
  257. package/esm/component/data-zoom/data-zoom/data-zoom.d.ts +1 -0
  258. package/esm/component/data-zoom/data-zoom/data-zoom.js +13 -10
  259. package/esm/component/data-zoom/data-zoom/data-zoom.js.map +1 -1
  260. package/esm/component/data-zoom/data-zoom/interface.d.ts +1 -0
  261. package/esm/component/data-zoom/data-zoom/interface.js.map +1 -1
  262. package/esm/component/data-zoom/interface.d.ts +2 -0
  263. package/esm/component/data-zoom/interface.js.map +1 -1
  264. package/esm/component/data-zoom/scroll-bar/scroll-bar.js +3 -2
  265. package/esm/component/data-zoom/scroll-bar/scroll-bar.js.map +1 -1
  266. package/esm/component/data-zoom/util.js +5 -1
  267. package/esm/component/data-zoom/util.js.map +1 -1
  268. package/esm/component/geo/geo-coordinate.js.map +1 -1
  269. package/esm/component/indicator/indicator.js.map +1 -1
  270. package/esm/component/label/base-label.d.ts +2 -1
  271. package/esm/component/label/base-label.js +3 -0
  272. package/esm/component/label/base-label.js.map +1 -1
  273. package/esm/component/label/label.d.ts +1 -2
  274. package/esm/component/label/label.js +8 -9
  275. package/esm/component/label/label.js.map +1 -1
  276. package/esm/component/label/total-label.d.ts +1 -0
  277. package/esm/component/label/total-label.js +10 -0
  278. package/esm/component/label/total-label.js.map +1 -1
  279. package/esm/component/tooltip/constant.d.ts +5 -0
  280. package/esm/component/tooltip/constant.js +8 -0
  281. package/esm/component/tooltip/constant.js.map +1 -0
  282. package/esm/component/tooltip/index.d.ts +1 -0
  283. package/esm/component/tooltip/index.js +2 -0
  284. package/esm/component/tooltip/index.js.map +1 -1
  285. package/esm/component/tooltip/interface/spec.d.ts +4 -3
  286. package/esm/component/tooltip/interface/spec.js.map +1 -1
  287. package/esm/component/tooltip/tooltip-transformer.d.ts +2 -0
  288. package/esm/component/tooltip/tooltip-transformer.js +16 -1
  289. package/esm/component/tooltip/tooltip-transformer.js.map +1 -1
  290. package/esm/component/tooltip/tooltip.d.ts +3 -3
  291. package/esm/component/tooltip/tooltip.js +29 -45
  292. package/esm/component/tooltip/tooltip.js.map +1 -1
  293. package/esm/core/index.d.ts +1 -1
  294. package/esm/core/index.js +1 -1
  295. package/esm/core/index.js.map +1 -1
  296. package/esm/core/vchart.d.ts +4 -1
  297. package/esm/core/vchart.js +50 -49
  298. package/esm/core/vchart.js.map +1 -1
  299. package/esm/event/event-dispatcher.d.ts +1 -0
  300. package/esm/event/event-dispatcher.js +4 -1
  301. package/esm/event/event-dispatcher.js.map +1 -1
  302. package/esm/event/event.js +1 -1
  303. package/esm/event/event.js.map +1 -1
  304. package/esm/event/interface.d.ts +2 -1
  305. package/esm/event/interface.js.map +1 -1
  306. package/esm/interaction/index.d.ts +1 -0
  307. package/esm/interaction/index.js +2 -0
  308. package/esm/interaction/index.js.map +1 -0
  309. package/esm/interaction/interface.js +1 -1
  310. package/esm/interaction/zoom/zoomable.js +4 -6
  311. package/esm/interaction/zoom/zoomable.js.map +1 -1
  312. package/esm/model/interface.d.ts +3 -8
  313. package/esm/model/interface.js.map +1 -1
  314. package/esm/plugin/base/base-plugin-service.d.ts +2 -2
  315. package/esm/plugin/base/base-plugin-service.js +5 -5
  316. package/esm/plugin/base/base-plugin-service.js.map +1 -1
  317. package/esm/plugin/base/base-plugin.d.ts +1 -0
  318. package/esm/plugin/base/base-plugin.js +3 -0
  319. package/esm/plugin/base/base-plugin.js.map +1 -1
  320. package/esm/plugin/base/interface.d.ts +3 -3
  321. package/esm/plugin/base/interface.js.map +1 -1
  322. package/esm/plugin/chart/formatter/formatter.d.ts +2 -2
  323. package/esm/plugin/chart/formatter/formatter.js +5 -7
  324. package/esm/plugin/chart/formatter/formatter.js.map +1 -1
  325. package/esm/plugin/chart/media-query/media-query.d.ts +1 -1
  326. package/esm/plugin/chart/media-query/media-query.js +4 -4
  327. package/esm/plugin/chart/media-query/media-query.js.map +1 -1
  328. package/esm/plugin/chart/plugin-service.d.ts +1 -0
  329. package/esm/plugin/chart/plugin-service.js +3 -0
  330. package/esm/plugin/chart/plugin-service.js.map +1 -1
  331. package/esm/plugin/components/plugin-service.d.ts +1 -0
  332. package/esm/plugin/components/plugin-service.js +3 -0
  333. package/esm/plugin/components/plugin-service.js.map +1 -1
  334. package/esm/plugin/components/tooltip-handler/canvas/canvas-tooltip-handler.js +2 -2
  335. package/esm/plugin/components/tooltip-handler/canvas/canvas-tooltip-handler.js.map +1 -1
  336. package/esm/plugin/components/tooltip-handler/constants.d.ts +0 -5
  337. package/esm/plugin/components/tooltip-handler/constants.js +0 -8
  338. package/esm/plugin/components/tooltip-handler/constants.js.map +1 -1
  339. package/esm/plugin/components/tooltip-handler/dom/dom-tooltip-handler.js +3 -1
  340. package/esm/plugin/components/tooltip-handler/dom/dom-tooltip-handler.js.map +1 -1
  341. package/esm/plugin/components/tooltip-handler/utils/position.d.ts +1 -0
  342. package/esm/region/interface.d.ts +2 -1
  343. package/esm/region/interface.js.map +1 -1
  344. package/esm/region/region.js +1 -1
  345. package/esm/region/region.js.map +1 -1
  346. package/esm/series/area/area-transformer.d.ts +1 -0
  347. package/esm/series/area/area-transformer.js +3 -0
  348. package/esm/series/area/area-transformer.js.map +1 -1
  349. package/esm/series/area/area.d.ts +0 -1
  350. package/esm/series/area/area.js +1 -1
  351. package/esm/series/area/area.js.map +1 -1
  352. package/esm/series/bar/bar-transformer.d.ts +1 -0
  353. package/esm/series/bar/bar-transformer.js +3 -0
  354. package/esm/series/bar/bar-transformer.js.map +1 -1
  355. package/esm/series/bar/bar.d.ts +0 -1
  356. package/esm/series/bar/bar.js +2 -2
  357. package/esm/series/bar/bar.js.map +1 -1
  358. package/esm/series/base/base-series-transformer.d.ts +5 -3
  359. package/esm/series/base/base-series-transformer.js +10 -3
  360. package/esm/series/base/base-series-transformer.js.map +1 -1
  361. package/esm/series/base/base-series.d.ts +0 -4
  362. package/esm/series/base/base-series.js +11 -15
  363. package/esm/series/base/base-series.js.map +1 -1
  364. package/esm/series/cartesian/cartesian.js +3 -2
  365. package/esm/series/cartesian/cartesian.js.map +1 -1
  366. package/esm/series/funnel/funnel.js +2 -1
  367. package/esm/series/funnel/funnel.js.map +1 -1
  368. package/esm/series/gauge/gauge-pointer-transformer.d.ts +5 -0
  369. package/esm/series/gauge/gauge-pointer-transformer.js +8 -0
  370. package/esm/series/gauge/gauge-pointer-transformer.js.map +1 -0
  371. package/esm/series/gauge/gauge-pointer.d.ts +3 -1
  372. package/esm/series/gauge/gauge-pointer.js +6 -3
  373. package/esm/series/gauge/gauge-pointer.js.map +1 -1
  374. package/esm/series/gauge/gauge-transformer.d.ts +1 -0
  375. package/esm/series/gauge/gauge-transformer.js +3 -0
  376. package/esm/series/gauge/gauge-transformer.js.map +1 -1
  377. package/esm/series/gauge/gauge.d.ts +0 -1
  378. package/esm/series/gauge/gauge.js +1 -1
  379. package/esm/series/gauge/gauge.js.map +1 -1
  380. package/esm/series/interface/common.d.ts +6 -2
  381. package/esm/series/interface/common.js.map +1 -1
  382. package/esm/series/map/geo-source.d.ts +1 -1
  383. package/esm/series/map/geo-source.js.map +1 -1
  384. package/esm/series/polar/progress-like/progress-like.d.ts +0 -1
  385. package/esm/series/polar/progress-like/progress-like.js +5 -5
  386. package/esm/series/polar/progress-like/progress-like.js.map +1 -1
  387. package/esm/series/polar/rose-like/rose-like.js +1 -1
  388. package/esm/series/polar/rose-like/rose-like.js.map +1 -1
  389. package/esm/series/progress/circular/circular-transformer.d.ts +5 -0
  390. package/esm/series/progress/circular/circular-transformer.js +8 -0
  391. package/esm/series/progress/circular/circular-transformer.js.map +1 -0
  392. package/esm/series/progress/circular/circular.d.ts +3 -0
  393. package/esm/series/progress/circular/circular.js +8 -5
  394. package/esm/series/progress/circular/circular.js.map +1 -1
  395. package/esm/series/radar/radar.js +2 -2
  396. package/esm/series/radar/radar.js.map +1 -1
  397. package/esm/series/range-column/range-column-transformer.d.ts +1 -0
  398. package/esm/series/range-column/range-column-transformer.js +3 -0
  399. package/esm/series/range-column/range-column-transformer.js.map +1 -1
  400. package/esm/series/range-column/range-column.d.ts +0 -1
  401. package/esm/series/range-column/range-column.js +1 -2
  402. package/esm/series/range-column/range-column.js.map +1 -1
  403. package/esm/series/rose/rose-transformer.d.ts +1 -0
  404. package/esm/series/rose/rose-transformer.js +3 -0
  405. package/esm/series/rose/rose-transformer.js.map +1 -1
  406. package/esm/series/rose/rose.d.ts +0 -1
  407. package/esm/series/rose/rose.js +2 -2
  408. package/esm/series/rose/rose.js.map +1 -1
  409. package/esm/series/waterfall/waterfall-transformer.d.ts +1 -0
  410. package/esm/series/waterfall/waterfall-transformer.js +3 -0
  411. package/esm/series/waterfall/waterfall-transformer.js.map +1 -1
  412. package/esm/series/waterfall/waterfall.d.ts +0 -1
  413. package/esm/series/waterfall/waterfall.js +1 -1
  414. package/esm/series/waterfall/waterfall.js.map +1 -1
  415. package/esm/typings/spec/common.d.ts +2 -2
  416. package/esm/typings/spec/common.js.map +1 -1
  417. package/esm/typings/spec/index.d.ts +1 -1
  418. package/esm/typings/spec/index.js.map +1 -1
  419. package/esm/vchart-all.js +2 -2
  420. package/esm/vchart-all.js.map +1 -1
  421. package/esm/vchart-simple.js +1 -3
  422. package/esm/vchart-simple.js.map +1 -1
  423. package/package.json +12 -12
@@ -4,7 +4,7 @@ export interface IBasePlugin<T = any> {
4
4
  name: string;
5
5
  onAdd: (service: T) => void;
6
6
  init?: () => void;
7
- dispose?: (service: T) => void;
7
+ release?: (service: T) => void;
8
8
  onInit?: (service: T, ...params: any) => MaybePromise<void>;
9
9
  onDidCompile?: (service: T, ...params: any) => MaybePromise<void>;
10
10
  }
@@ -15,8 +15,8 @@ export interface IBasePluginService<T = any> {
15
15
  activate: (plugins: T[]) => void;
16
16
  get: (id: UniqueId) => T | undefined;
17
17
  getAll: () => T[];
18
- dispose: (pluginsId: UniqueId) => void;
19
- disposeAll: () => void;
18
+ release: (pluginsId: UniqueId) => void;
19
+ releaseAll: () => void;
20
20
  }
21
21
  export type UniqueId = number;
22
22
  export type MaybePromise<T> = T | PromiseLike<T>;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/plugin/base/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["export interface IBasePlugin<T = any> {\n readonly type: string;\n id: UniqueId;\n name: string;\n onAdd: (service: T) => void;\n init?: () => void;\n dispose?: (service: T) => void;\n onInit?: (service: T, ...params: any) => MaybePromise<void>;\n onDidCompile?: (service: T, ...params: any) => MaybePromise<void>;\n}\n\nexport interface IBasePluginService<T = any> {\n id: UniqueId;\n load: (plugins: T[]) => void;\n add: (plugins: T[]) => T[] | null;\n activate: (plugins: T[]) => void;\n get: (id: UniqueId) => T | undefined;\n getAll: () => T[];\n dispose: (pluginsId: UniqueId) => void;\n disposeAll: () => void;\n}\n\nexport type UniqueId = number;\nexport type MaybePromise<T> = T | PromiseLike<T>;\n"]}
1
+ {"version":3,"sources":["../src/plugin/base/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["export interface IBasePlugin<T = any> {\n readonly type: string;\n id: UniqueId;\n name: string;\n onAdd: (service: T) => void;\n init?: () => void;\n release?: (service: T) => void;\n onInit?: (service: T, ...params: any) => MaybePromise<void>;\n onDidCompile?: (service: T, ...params: any) => MaybePromise<void>;\n}\n\nexport interface IBasePluginService<T = any> {\n id: UniqueId;\n load: (plugins: T[]) => void;\n add: (plugins: T[]) => T[] | null;\n activate: (plugins: T[]) => void;\n get: (id: UniqueId) => T | undefined;\n getAll: () => T[];\n release: (pluginsId: UniqueId) => void;\n releaseAll: () => void;\n}\n\nexport type UniqueId = number;\nexport type MaybePromise<T> = T | PromiseLike<T>;\n"]}
@@ -1,5 +1,5 @@
1
1
  import { BasePlugin } from '../../base/base-plugin';
2
- import { IChartPlugin, IChartPluginService } from '../interface';
2
+ import type { IChartPlugin, IChartPluginService } from '../interface';
3
3
  export declare class FormatterPlugin extends BasePlugin implements IChartPlugin {
4
4
  static readonly pluginType: 'chart';
5
5
  static readonly specKey = "formatter";
@@ -23,6 +23,6 @@ export declare class FormatterPlugin extends BasePlugin implements IChartPlugin
23
23
  protected _format(text: string | number | string[] | number[], datum: any, formatter: string | string[]): string | number | (string | number)[];
24
24
  protected _formatSingleLine(text: string | number, datum: any, formatter: string): string | number;
25
25
  protected _formatSingleText(text: string | number, formatter: string): string | number;
26
- dispose(): void;
26
+ release(): void;
27
27
  }
28
28
  export declare const registerFormatPlugin: () => void;
@@ -37,14 +37,12 @@ export class FormatterPlugin extends BasePlugin {
37
37
  if (this._isNumericFormatterCache && (this._isNumericFormatterCache.get(formatter) ? isTemplate = this._isNumericFormatterCache.get(formatter) : (isTemplate = bracketReg.test(formatter),
38
38
  this._isNumericFormatterCache.set(formatter, isTemplate))), isTemplate) {
39
39
  return formatter.replace(bracketGReg, ((match, key) => {
40
- if (semicolonReg.test(key)) {
41
- const parts = key.split(":"), value = datum[parts.shift()], valueFormatter = parts.join(":");
42
- return this._formatSingleText(value, valueFormatter);
43
- }
44
- {
40
+ if (!semicolonReg.test(key)) {
45
41
  const value = datum[key.trim()];
46
42
  return void 0 !== value ? value : match;
47
43
  }
44
+ const parts = key.split(":"), value = datum[parts.shift()], valueFormatter = parts.join(":");
45
+ return this._formatSingleText(value, valueFormatter);
48
46
  }));
49
47
  }
50
48
  return this._formatSingleText(text, formatter);
@@ -57,8 +55,8 @@ export class FormatterPlugin extends BasePlugin {
57
55
  }
58
56
  return formatter.includes("%") && this._timeFormatter ? this._timeFormatter(formatter, text) : text;
59
57
  }
60
- dispose() {
61
- this._format = null, this._timeFormatter = null, this._numericFormatter = null,
58
+ release() {
59
+ super.release(), this._format = null, this._timeFormatter = null, this._numericFormatter = null,
62
60
  this._numericSpecifier = null, this._numericFormatterCache = null, this._isNumericFormatterCache = null;
63
61
  }
64
62
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/plugin/chart/formatter/formatter.ts"],"names":[],"mappings":"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","file":"formatter.js","sourcesContent":["import { isFunction, isArray, TimeUtil, NumberUtil, numberSpecifierReg } from '@visactor/vutils';\n\nimport { BasePlugin } from '../../base/base-plugin';\n\nimport { IChartPlugin, IChartPluginService } from '../interface';\nimport { Factory, registerChartPlugin } from '../../../core';\n\nconst bracketReg = /\\{([^}]+)\\}/;\nconst bracketGReg = /\\{([^}]+)\\}/g;\n\nconst semicolonReg = /:/;\n\nexport class FormatterPlugin extends BasePlugin implements IChartPlugin {\n static readonly pluginType: 'chart' = 'chart';\n\n static readonly specKey = 'formatter';\n\n static readonly type: string = 'formatterPlugin';\n readonly type: string = 'formatterPlugin';\n\n private readonly _timeModeFormat = {\n utc: TimeUtil.getInstance().timeUTCFormat,\n local: TimeUtil.getInstance().timeFormat\n };\n\n protected _spec: {\n timeMode: 'utc' | 'local';\n customFormatter: (specifier: string, text: string | number | string[] | number[], datum: any) => string | string[];\n numericFormatter: (specifier: string, text: string | number | string[] | number[]) => string;\n timeFormatter: (specifier: string, text: string | number | string[] | number[]) => string;\n };\n\n protected _formatter = this._format;\n\n private _timeFormatter = this._timeModeFormat.local;\n private _numericFormatter = NumberUtil.getInstance().format;\n\n // used for optimize performance,avoiding repeatedly parsing same format template string,\n private _numericSpecifier = NumberUtil.getInstance().formatter;\n private _numericFormatterCache = new Map<string, any>();\n private _isNumericFormatterCache = new Map<string, boolean>();\n\n constructor() {\n super(FormatterPlugin.type);\n }\n\n onInit(service: IChartPluginService, chartSpec: any) {\n const { globalInstance } = service;\n if (!globalInstance) {\n return;\n }\n this._spec = chartSpec?.[FormatterPlugin.specKey] ?? {};\n const { timeMode, customFormatter, numericFormatter, timeFormatter } = this._spec;\n\n if (isFunction(customFormatter)) {\n this._formatter = customFormatter;\n } else {\n this._formatter = this._format.bind(this);\n if (isFunction(timeFormatter)) {\n this._timeFormatter = timeFormatter;\n } else if (timeMode && this._timeModeFormat[timeMode]) {\n this._timeFormatter = this._timeModeFormat[timeMode];\n }\n\n if (numericFormatter) {\n this._numericFormatter = numericFormatter;\n this._numericSpecifier = null;\n this._numericFormatterCache = null;\n }\n }\n Factory.registerFormatter(this._formatter);\n }\n\n protected _format(text: string | number | string[] | number[], datum: any, formatter: string | string[]) {\n if (isArray(text)) {\n return text.map((t, i) => {\n const f = isArray(formatter) ? formatter[i] : formatter;\n return f ? this._formatSingleLine(t, datum, f) : t;\n });\n }\n\n if (isArray(formatter)) {\n return formatter.map(f => this._formatSingleLine(text, datum, f));\n } else {\n return this._formatSingleLine(text, datum, formatter);\n }\n }\n\n protected _formatSingleLine(text: string | number, datum: any, formatter: string) {\n let isTemplate;\n if (this._isNumericFormatterCache) {\n if (this._isNumericFormatterCache.get(formatter)) {\n isTemplate = this._isNumericFormatterCache.get(formatter);\n } else {\n isTemplate = bracketReg.test(formatter);\n this._isNumericFormatterCache.set(formatter, isTemplate);\n }\n }\n if (isTemplate) {\n const result = formatter.replace(bracketGReg, (match, key) => {\n const hasFormatter = semicolonReg.test(key);\n if (!hasFormatter) {\n const value = datum[key.trim()];\n return typeof value !== 'undefined' ? value : match;\n } else {\n const parts = key.split(':');\n const value = datum[parts.shift()];\n const valueFormatter = parts.join(':');\n return this._formatSingleText(value, valueFormatter);\n }\n });\n return result;\n } else {\n return this._formatSingleText(text, formatter);\n }\n }\n\n protected _formatSingleText(text: string | number, formatter: string): string | number {\n const isNumeric = numberSpecifierReg.test(formatter);\n if (isNumeric && this._numericFormatter) {\n // 内置的 formatter 逻辑,可以进行缓存性能优化\n let numericFormat;\n if (this._numericFormatterCache && this._numericSpecifier) {\n if (this._numericFormatterCache.get(formatter)) {\n numericFormat = this._numericFormatterCache.get(formatter);\n } else {\n numericFormat = this._numericSpecifier(formatter) as any;\n this._numericFormatterCache.set(formatter, numericFormat);\n }\n return numericFormat(Number(text));\n }\n return this._numericFormatter(formatter, Number(text));\n } else if (formatter.includes('%') && this._timeFormatter) {\n return this._timeFormatter(formatter, text);\n } else {\n return text;\n }\n }\n\n dispose() {\n this._format = null;\n this._timeFormatter = null;\n this._numericFormatter = null;\n this._numericSpecifier = null;\n this._numericFormatterCache = null;\n this._isNumericFormatterCache = null;\n }\n}\n\nexport const registerFormatPlugin = () => {\n registerChartPlugin(FormatterPlugin);\n};\n"]}
1
+ {"version":3,"sources":["../src/plugin/chart/formatter/formatter.ts"],"names":[],"mappings":"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","file":"formatter.js","sourcesContent":["import { isFunction, isArray, TimeUtil, NumberUtil, numberSpecifierReg } from '@visactor/vutils';\n\nimport { BasePlugin } from '../../base/base-plugin';\n\nimport type { IChartPlugin, IChartPluginService } from '../interface';\nimport { Factory, registerChartPlugin } from '../../../core';\n\nconst bracketReg = /\\{([^}]+)\\}/;\nconst bracketGReg = /\\{([^}]+)\\}/g;\n\nconst semicolonReg = /:/;\n\nexport class FormatterPlugin extends BasePlugin implements IChartPlugin {\n static readonly pluginType: 'chart' = 'chart';\n\n static readonly specKey = 'formatter';\n\n static readonly type: string = 'formatterPlugin';\n readonly type: string = 'formatterPlugin';\n\n private readonly _timeModeFormat = {\n utc: TimeUtil.getInstance().timeUTCFormat,\n local: TimeUtil.getInstance().timeFormat\n };\n\n protected _spec: {\n timeMode: 'utc' | 'local';\n customFormatter: (specifier: string, text: string | number | string[] | number[], datum: any) => string | string[];\n numericFormatter: (specifier: string, text: string | number | string[] | number[]) => string;\n timeFormatter: (specifier: string, text: string | number | string[] | number[]) => string;\n };\n\n protected _formatter = this._format;\n\n private _timeFormatter = this._timeModeFormat.local;\n private _numericFormatter = NumberUtil.getInstance().format;\n\n // used for optimize performance,avoiding repeatedly parsing same format template string,\n private _numericSpecifier = NumberUtil.getInstance().formatter;\n private _numericFormatterCache = new Map<string, any>();\n private _isNumericFormatterCache = new Map<string, boolean>();\n\n constructor() {\n super(FormatterPlugin.type);\n }\n\n onInit(service: IChartPluginService, chartSpec: any) {\n const { globalInstance } = service;\n if (!globalInstance) {\n return;\n }\n this._spec = chartSpec?.[FormatterPlugin.specKey] ?? {};\n const { timeMode, customFormatter, numericFormatter, timeFormatter } = this._spec;\n\n if (isFunction(customFormatter)) {\n this._formatter = customFormatter;\n } else {\n this._formatter = this._format.bind(this);\n if (isFunction(timeFormatter)) {\n this._timeFormatter = timeFormatter;\n } else if (timeMode && this._timeModeFormat[timeMode]) {\n this._timeFormatter = this._timeModeFormat[timeMode];\n }\n\n if (numericFormatter) {\n this._numericFormatter = numericFormatter;\n this._numericSpecifier = null;\n this._numericFormatterCache = null;\n }\n }\n Factory.registerFormatter(this._formatter);\n }\n\n protected _format(text: string | number | string[] | number[], datum: any, formatter: string | string[]) {\n if (isArray(text)) {\n return text.map((t, i) => {\n const f = isArray(formatter) ? formatter[i] : formatter;\n return f ? this._formatSingleLine(t, datum, f) : t;\n });\n }\n\n if (isArray(formatter)) {\n return formatter.map(f => this._formatSingleLine(text, datum, f));\n }\n return this._formatSingleLine(text, datum, formatter);\n }\n\n protected _formatSingleLine(text: string | number, datum: any, formatter: string) {\n let isTemplate;\n if (this._isNumericFormatterCache) {\n if (this._isNumericFormatterCache.get(formatter)) {\n isTemplate = this._isNumericFormatterCache.get(formatter);\n } else {\n isTemplate = bracketReg.test(formatter);\n this._isNumericFormatterCache.set(formatter, isTemplate);\n }\n }\n if (isTemplate) {\n const result = formatter.replace(bracketGReg, (match, key) => {\n const hasFormatter = semicolonReg.test(key);\n if (!hasFormatter) {\n const value = datum[key.trim()];\n return typeof value !== 'undefined' ? value : match;\n }\n const parts = key.split(':');\n const value = datum[parts.shift()];\n const valueFormatter = parts.join(':');\n return this._formatSingleText(value, valueFormatter);\n });\n return result;\n }\n return this._formatSingleText(text, formatter);\n }\n\n protected _formatSingleText(text: string | number, formatter: string): string | number {\n const isNumeric = numberSpecifierReg.test(formatter);\n if (isNumeric && this._numericFormatter) {\n // 内置的 formatter 逻辑,可以进行缓存性能优化\n let numericFormat;\n if (this._numericFormatterCache && this._numericSpecifier) {\n if (this._numericFormatterCache.get(formatter)) {\n numericFormat = this._numericFormatterCache.get(formatter);\n } else {\n numericFormat = this._numericSpecifier(formatter) as any;\n this._numericFormatterCache.set(formatter, numericFormat);\n }\n return numericFormat(Number(text));\n }\n return this._numericFormatter(formatter, Number(text));\n } else if (formatter.includes('%') && this._timeFormatter) {\n return this._timeFormatter(formatter, text);\n }\n return text;\n }\n\n release() {\n super.release();\n this._format = null;\n this._timeFormatter = null;\n this._numericFormatter = null;\n this._numericSpecifier = null;\n this._numericFormatterCache = null;\n this._isNumericFormatterCache = null;\n }\n}\n\nexport const registerFormatPlugin = () => {\n registerChartPlugin(FormatterPlugin);\n};\n"]}
@@ -25,6 +25,6 @@ export declare class MediaQuery extends BasePlugin implements IChartPlugin {
25
25
  protected _check(item: IMediaQueryItem): IMediaQueryCheckResult;
26
26
  protected _apply(item: IMediaQueryItem, chartSpec: any, chartSpecInfo: IChartSpecInfo): IMediaQueryActionResult;
27
27
  protected _reInit(compile?: boolean, render?: boolean): void;
28
- dispose(): void;
28
+ release(): void;
29
29
  }
30
30
  export declare const registerMediaQuery: () => void;
@@ -48,7 +48,7 @@ export class MediaQuery extends BasePlugin {
48
48
  case "updateSpecAndRecompile":
49
49
  resetMediaQuery = !1, checkMediaQuery = !1;
50
50
  }
51
- if (resetMediaQuery && this.dispose(), this._initialized || this.onInit(service, chartSpec),
51
+ if (resetMediaQuery && this.release(), this._initialized || this.onInit(service, chartSpec),
52
52
  resetMediaQuery || checkMediaQuery) {
53
53
  const {width: width, height: height} = this._option.globalInstance.getCurrentSize();
54
54
  this._changeSize(width, height, !1, !1);
@@ -108,9 +108,9 @@ export class MediaQuery extends BasePlugin {
108
108
  chartSpec = result.chartSpec, hasChanged || (hasChanged = result.hasChanged);
109
109
  })), hasChanged && this._option.updateSpec(chartSpec, compile, render);
110
110
  }
111
- dispose() {
112
- this._initialized = !1, this._spec = [], this._option = void 0, this._currentMediaInfo = {},
113
- this.currentActiveItems.clear();
111
+ release() {
112
+ super.release(), this._initialized = !1, this._spec = [], this._option = void 0,
113
+ this._currentMediaInfo = {}, this.currentActiveItems.clear();
114
114
  }
115
115
  }
116
116
 
@@ -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, cloneDeepSpec } from '../../../util';\nimport type { VChartRenderActionSource } from '../../../core/interface';\nimport { BasePlugin } from '../../base/base-plugin';\nimport { registerChartPlugin } from '../register';\nimport type { IChartSpecInfo } from '../../../chart/interface';\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.dispose();\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 dispose() {\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":"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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, cloneDeepSpec } from '../../../util';\nimport type { VChartRenderActionSource } from '../../../core/interface';\nimport { BasePlugin } from '../../base/base-plugin';\nimport { registerChartPlugin } from '../register';\nimport type { IChartSpecInfo } from '../../../chart/interface';\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"]}
@@ -9,4 +9,5 @@ export declare class ChartPluginService<T extends IChartPlugin = IChartPlugin> e
9
9
  onBeforeResize(width: number, height: number): void;
10
10
  onAfterChartSpecTransform(chartSpec: any, actionSource: VChartRenderActionSource): void;
11
11
  onBeforeInitChart(chartSpec: any, actionSource: VChartRenderActionSource): void;
12
+ releaseAll(): void;
12
13
  }
@@ -24,5 +24,8 @@ export class ChartPluginService extends BasePluginService {
24
24
  plugin.onBeforeInitChart && plugin.onBeforeInitChart(this, chartSpec, actionSource);
25
25
  }));
26
26
  }
27
+ releaseAll() {
28
+ super.releaseAll(), this.globalInstance = null;
29
+ }
27
30
  }
28
31
  //# sourceMappingURL=plugin-service.js.map
@@ -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;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"]}
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"]}
@@ -4,4 +4,5 @@ import { BasePluginService } from '../base/base-plugin-service';
4
4
  export declare class ComponentPluginService<T extends IComponentPlugin = IComponentPlugin> extends BasePluginService<T> implements IComponentPluginService<T> {
5
5
  component: IComponent;
6
6
  constructor(component: IComponent);
7
+ releaseAll(): void;
7
8
  }
@@ -4,5 +4,8 @@ export class ComponentPluginService extends BasePluginService {
4
4
  constructor(component) {
5
5
  super(), this.component = component;
6
6
  }
7
+ releaseAll() {
8
+ super.releaseAll(), this.component = null;
9
+ }
7
10
  }
8
11
  //# sourceMappingURL=plugin-service.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/plugin/components/plugin-service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAEhE,MAAM,OAAO,sBACX,SAAQ,iBAAoB;IAK5B,YAAY,SAAqB;QAC/B,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;CACF","file":"plugin-service.js","sourcesContent":["import type { IComponentPlugin, IComponentPluginService } from './interface';\nimport type { IComponent } from '../../component/interface';\nimport { BasePluginService } from '../base/base-plugin-service';\n\nexport class ComponentPluginService<T extends IComponentPlugin = IComponentPlugin>\n extends BasePluginService<T>\n implements IComponentPluginService<T>\n{\n component: IComponent;\n\n constructor(component: IComponent) {\n super();\n this.component = component;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/plugin/components/plugin-service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAEhE,MAAM,OAAO,sBACX,SAAQ,iBAAoB;IAK5B,YAAY,SAAqB;QAC/B,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,UAAU;QACR,KAAK,CAAC,UAAU,EAAE,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB,CAAC;CACF","file":"plugin-service.js","sourcesContent":["import type { IComponentPlugin, IComponentPluginService } from './interface';\nimport type { IComponent } from '../../component/interface';\nimport { BasePluginService } from '../base/base-plugin-service';\n\nexport class ComponentPluginService<T extends IComponentPlugin = IComponentPlugin>\n extends BasePluginService<T>\n implements IComponentPluginService<T>\n{\n component: IComponent;\n\n constructor(component: IComponent) {\n super();\n this.component = component;\n }\n\n releaseAll(): void {\n super.releaseAll();\n this.component = null;\n }\n}\n"]}
@@ -4,10 +4,10 @@ import { Tooltip as TooltipComponent } from "@visactor/vrender-components";
4
4
 
5
5
  import { isValid } from "@visactor/vutils";
6
6
 
7
- import { TooltipHandlerType } from "../constants";
8
-
9
7
  import { registerComponentPlugin } from "../../register";
10
8
 
9
+ import { TooltipHandlerType } from "../../../../component/tooltip/constant";
10
+
11
11
  export class CanvasTooltipHandler extends BaseTooltipHandler {
12
12
  constructor() {
13
13
  super(CanvasTooltipHandler.type), this.type = TooltipHandlerType.canvas;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/plugin/components/tooltip-handler/canvas/canvas-tooltip-handler.ts"],"names":[],"mappings":"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","file":"canvas-tooltip-handler.js","sourcesContent":["import type { ILayer, INode, Stage } from '@visactor/vrender-core';\nimport type { ITooltipActual } from '../../../../typings/tooltip';\nimport { BaseTooltipHandler } from '../base';\nimport { Tooltip as TooltipComponent } from '@visactor/vrender-components';\nimport { isValid } from '@visactor/vutils';\nimport { TooltipHandlerType } from '../constants';\nimport type { TooltipHandlerParams } from '../../../../component/tooltip';\nimport type { IComponentPluginService } from '../../interface';\nimport { registerComponentPlugin } from '../../register';\n\n/**\n * The tooltip handler class.\n */\nexport class CanvasTooltipHandler extends BaseTooltipHandler {\n static readonly type = TooltipHandlerType.canvas;\n readonly type = TooltipHandlerType.canvas;\n\n private _layer: ILayer;\n protected _el?: HTMLCanvasElement;\n protected _tooltipCanvasId?: string;\n protected _tooltipComponent: TooltipComponent;\n\n constructor() {\n super(CanvasTooltipHandler.type);\n }\n\n onAdd(service: IComponentPluginService<any>): void {\n super.onAdd(service);\n this._tooltipCanvasId = (this._chartOption.modeParams as any)?.tooltipCanvasId;\n }\n\n private _initTooltipComponent(stage: Stage) {\n const layer = this._getLayer(stage);\n this._tooltipComponent = new TooltipComponent({\n autoCalculatePosition: false,\n autoMeasure: false\n });\n layer.add(this._tooltipComponent as unknown as INode);\n }\n\n private _getLayer(stage: Stage) {\n if (this._layer) {\n return this._layer;\n }\n\n this._layer = stage.createLayer(this._tooltipCanvasId);\n\n // 需要关闭 layer 对应的 canvas 的事件\n const layerCanvas = this._layer.layerHandler.canvas.nativeCanvas as HTMLCanvasElement;\n // TODO:待 vrender 支持\n if (layerCanvas && layerCanvas.style) {\n layerCanvas.style.touchAction = 'none';\n layerCanvas.style.pointerEvents = 'none';\n }\n\n return this._layer;\n }\n\n protected _removeTooltip() {\n if (this._layer) {\n this._layer.removeAllChild();\n // this._layer.render();\n }\n this._attributes = null;\n }\n\n protected _updateTooltip(visible: boolean, params: TooltipHandlerParams, actualTooltip: ITooltipActual) {\n this._visible = visible;\n\n const stage = this._compiler.getStage();\n if (!stage) {\n return;\n }\n\n if (!visible) {\n if (this._tooltipComponent && this._tooltipComponent.attribute.visible) {\n this._tooltipComponent.hideAll();\n this._tooltipComponent.setAttributes({\n visibleAll: false\n });\n }\n return;\n }\n\n if (!this._tooltipComponent) {\n this._initTooltipComponent(stage);\n }\n\n const pos = actualTooltip?.position;\n if (!params.changePositionOnly) {\n this._tooltipComponent.setAttributes({\n ...this._attributes,\n ...pos\n });\n } else if (isValid(pos)) {\n this._tooltipComponent.setAttributes(pos);\n }\n\n if (!this._tooltipComponent.attribute.visible) {\n this._tooltipComponent.showAll();\n this._tooltipComponent.setAttributes({\n visibleAll: true\n });\n }\n }\n\n isTooltipShown() {\n return this._tooltipComponent?.attribute.visibleAll;\n }\n\n release() {\n super.release();\n this._layer?.release();\n }\n}\n\nexport const registerCanvasTooltipHandler = () => {\n registerComponentPlugin(CanvasTooltipHandler);\n};\n"]}
1
+ {"version":3,"sources":["../src/plugin/components/tooltip-handler/canvas/canvas-tooltip-handler.ts"],"names":[],"mappings":"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","file":"canvas-tooltip-handler.js","sourcesContent":["import type { ILayer, INode, Stage } from '@visactor/vrender-core';\nimport type { ITooltipActual } from '../../../../typings/tooltip';\nimport { BaseTooltipHandler } from '../base';\nimport { Tooltip as TooltipComponent } from '@visactor/vrender-components';\nimport { isValid } from '@visactor/vutils';\nimport type { TooltipHandlerParams } from '../../../../component/tooltip';\nimport type { IComponentPluginService } from '../../interface';\nimport { registerComponentPlugin } from '../../register';\nimport { TooltipHandlerType } from '../../../../component/tooltip/constant';\n\n/**\n * The tooltip handler class.\n */\nexport class CanvasTooltipHandler extends BaseTooltipHandler {\n static readonly type = TooltipHandlerType.canvas;\n readonly type = TooltipHandlerType.canvas;\n\n private _layer: ILayer;\n protected _el?: HTMLCanvasElement;\n protected _tooltipCanvasId?: string;\n protected _tooltipComponent: TooltipComponent;\n\n constructor() {\n super(CanvasTooltipHandler.type);\n }\n\n onAdd(service: IComponentPluginService<any>): void {\n super.onAdd(service);\n this._tooltipCanvasId = (this._chartOption.modeParams as any)?.tooltipCanvasId;\n }\n\n private _initTooltipComponent(stage: Stage) {\n const layer = this._getLayer(stage);\n this._tooltipComponent = new TooltipComponent({\n autoCalculatePosition: false,\n autoMeasure: false\n });\n layer.add(this._tooltipComponent as unknown as INode);\n }\n\n private _getLayer(stage: Stage) {\n if (this._layer) {\n return this._layer;\n }\n\n this._layer = stage.createLayer(this._tooltipCanvasId);\n\n // 需要关闭 layer 对应的 canvas 的事件\n const layerCanvas = this._layer.layerHandler.canvas.nativeCanvas as HTMLCanvasElement;\n // TODO:待 vrender 支持\n if (layerCanvas && layerCanvas.style) {\n layerCanvas.style.touchAction = 'none';\n layerCanvas.style.pointerEvents = 'none';\n }\n\n return this._layer;\n }\n\n protected _removeTooltip() {\n if (this._layer) {\n this._layer.removeAllChild();\n // this._layer.render();\n }\n this._attributes = null;\n }\n\n protected _updateTooltip(visible: boolean, params: TooltipHandlerParams, actualTooltip: ITooltipActual) {\n this._visible = visible;\n\n const stage = this._compiler.getStage();\n if (!stage) {\n return;\n }\n\n if (!visible) {\n if (this._tooltipComponent && this._tooltipComponent.attribute.visible) {\n this._tooltipComponent.hideAll();\n this._tooltipComponent.setAttributes({\n visibleAll: false\n });\n }\n return;\n }\n\n if (!this._tooltipComponent) {\n this._initTooltipComponent(stage);\n }\n\n const pos = actualTooltip?.position;\n if (!params.changePositionOnly) {\n this._tooltipComponent.setAttributes({\n ...this._attributes,\n ...pos\n });\n } else if (isValid(pos)) {\n this._tooltipComponent.setAttributes(pos);\n }\n\n if (!this._tooltipComponent.attribute.visible) {\n this._tooltipComponent.showAll();\n this._tooltipComponent.setAttributes({\n visibleAll: true\n });\n }\n }\n\n isTooltipShown() {\n return this._tooltipComponent?.attribute.visibleAll;\n }\n\n release() {\n super.release();\n this._layer?.release();\n }\n}\n\nexport const registerCanvasTooltipHandler = () => {\n registerComponentPlugin(CanvasTooltipHandler);\n};\n"]}
@@ -1,6 +1,5 @@
1
1
  import type { ITooltipLineActual } from '../../../typings';
2
2
  import { escapeHTML } from './utils/common';
3
- export declare const TOOLTIP_EL_CLASS_NAME = "vchart-tooltip-element";
4
3
  export declare const TOOLTIP_CONTAINER_EL_CLASS_NAME = "vchart-tooltip-container";
5
4
  export declare const TOOLTIP_MAX_LINE_COUNT = 20;
6
5
  export declare const TOOLTIP_EMPTY_STRING = "";
@@ -11,7 +10,3 @@ export declare const DEFAULT_OPTIONS: {
11
10
  sanitize: typeof escapeHTML;
12
11
  };
13
12
  export type Options = typeof DEFAULT_OPTIONS;
14
- export declare class TooltipHandlerType {
15
- static dom: string;
16
- static canvas: string;
17
- }
@@ -1,9 +1,5 @@
1
- import { PREFIX } from "../../../constant";
2
-
3
1
  import { escapeHTML } from "./utils/common";
4
2
 
5
- export const TOOLTIP_EL_CLASS_NAME = "vchart-tooltip-element";
6
-
7
3
  export const TOOLTIP_CONTAINER_EL_CLASS_NAME = "vchart-tooltip-container";
8
4
 
9
5
  export const TOOLTIP_MAX_LINE_COUNT = 20;
@@ -20,8 +16,4 @@ export const DEFAULT_OPTIONS = {
20
16
  offsetY: 10,
21
17
  sanitize: escapeHTML
22
18
  };
23
-
24
- export class TooltipHandlerType {}
25
-
26
- TooltipHandlerType.dom = `${PREFIX}_TOOLTIP_HANDLER_DOM`, TooltipHandlerType.canvas = `${PREFIX}_TOOLTIP_HANDLER_CANVAS`;
27
19
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/plugin/components/tooltip-handler/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C,MAAM,CAAC,MAAM,qBAAqB,GAAG,wBAAwB,CAAC;AAC9D,MAAM,CAAC,MAAM,+BAA+B,GAAG,0BAA0B,CAAC;AAC1E,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,CAAC;AACzC,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,CAAC;AAEvC,MAAM,CAAC,MAAM,mBAAmB,GAAG;IAEjC,GAAG,EAAE,IAAI;IACT,KAAK,EAAE,KAAK;CACS,CAAC;AAExB,MAAM,CAAC,MAAM,eAAe,GAAG;IAI7B,OAAO,EAAE,EAAE;IAKX,OAAO,EAAE,EAAE;IAOX,QAAQ,EAAE,UAAU;CACrB,CAAC;AAMF,MAAM,OAAO,kBAAkB;;AACtB,sBAAG,GAAG,GAAG,MAAM,sBAAsB,CAAC;AACtC,yBAAM,GAAG,GAAG,MAAM,yBAAyB,CAAC","file":"constants.js","sourcesContent":["import { PREFIX } from '../../../constant';\nimport type { ITooltipLineActual } from '../../../typings';\nimport { escapeHTML } from './utils/common';\n\nexport const TOOLTIP_EL_CLASS_NAME = 'vchart-tooltip-element';\nexport const TOOLTIP_CONTAINER_EL_CLASS_NAME = 'vchart-tooltip-container';\nexport const TOOLTIP_MAX_LINE_COUNT = 20;\nexport const TOOLTIP_EMPTY_STRING = '';\n\nexport const TOOLTIP_OTHERS_LINE = {\n // TODO: i18n\n key: '其他',\n value: '...'\n} as ITooltipLineActual;\n\nexport const DEFAULT_OPTIONS = {\n /**\n * X offset.\n */\n offsetX: 10,\n\n /**\n * Y offset.\n */\n offsetY: 10,\n\n /**\n * HTML sanitizer function that removes dangerous HTML to prevent XSS.\n *\n * This should be a function from string to string. You may replace it with a formatter such as a markdown formatter.\n */\n sanitize: escapeHTML\n};\n\n// FIXME: 命名规范\nexport type Options = typeof DEFAULT_OPTIONS;\n\n/** 内置 handler 类型 */\nexport class TooltipHandlerType {\n static dom = `${PREFIX}_TOOLTIP_HANDLER_DOM`; // 模拟 enum\n static canvas = `${PREFIX}_TOOLTIP_HANDLER_CANVAS`;\n}\n"]}
1
+ {"version":3,"sources":["../src/plugin/components/tooltip-handler/constants.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C,MAAM,CAAC,MAAM,+BAA+B,GAAG,0BAA0B,CAAC;AAC1E,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,CAAC;AACzC,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,CAAC;AAEvC,MAAM,CAAC,MAAM,mBAAmB,GAAG;IAEjC,GAAG,EAAE,IAAI;IACT,KAAK,EAAE,KAAK;CACS,CAAC;AAExB,MAAM,CAAC,MAAM,eAAe,GAAG;IAI7B,OAAO,EAAE,EAAE;IAKX,OAAO,EAAE,EAAE;IAOX,QAAQ,EAAE,UAAU;CACrB,CAAC","file":"constants.js","sourcesContent":["import type { ITooltipLineActual } from '../../../typings';\nimport { escapeHTML } from './utils/common';\n\nexport const TOOLTIP_CONTAINER_EL_CLASS_NAME = 'vchart-tooltip-container';\nexport const TOOLTIP_MAX_LINE_COUNT = 20;\nexport const TOOLTIP_EMPTY_STRING = '';\n\nexport const TOOLTIP_OTHERS_LINE = {\n // TODO: i18n\n key: '其他',\n value: '...'\n} as ITooltipLineActual;\n\nexport const DEFAULT_OPTIONS = {\n /**\n * X offset.\n */\n offsetX: 10,\n\n /**\n * Y offset.\n */\n offsetY: 10,\n\n /**\n * HTML sanitizer function that removes dangerous HTML to prevent XSS.\n *\n * This should be a function from string to string. You may replace it with a formatter such as a markdown formatter.\n */\n sanitize: escapeHTML\n};\n\n// FIXME: 命名规范\nexport type Options = typeof DEFAULT_OPTIONS;\n"]}
@@ -4,7 +4,7 @@ import { getDomStyles } from "./utils";
4
4
 
5
5
  import { TooltipModel } from "./model/tooltip-model";
6
6
 
7
- import { TOOLTIP_CONTAINER_EL_CLASS_NAME, TooltipHandlerType } from "../constants";
7
+ import { TOOLTIP_CONTAINER_EL_CLASS_NAME } from "../constants";
8
8
 
9
9
  import { hasParentElement, isNil } from "@visactor/vutils";
10
10
 
@@ -14,6 +14,8 @@ import { registerComponentPlugin } from "../../register";
14
14
 
15
15
  import { DEFAULT_TOOLTIP_Z_INDEX } from "./constant";
16
16
 
17
+ import { TooltipHandlerType } from "../../../../component/tooltip/constant";
18
+
17
19
  export class DomTooltipHandler extends BaseTooltipHandler {
18
20
  getVisibility() {
19
21
  var _a;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/plugin/components/tooltip-handler/dom/dom-tooltip-handler.ts"],"names":[],"mappings":"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","file":"dom-tooltip-handler.js","sourcesContent":["import type { ITooltipActual, ITooltipPositionActual } from '../../../../typings/tooltip';\nimport { BaseTooltipHandler } from '../base';\nimport { getDomStyles } from './utils';\nimport type { IDomTooltipStyle } from './interface';\nimport { TooltipModel } from './model/tooltip-model';\nimport { TOOLTIP_CONTAINER_EL_CLASS_NAME, TooltipHandlerType } from '../constants';\nimport { hasParentElement, isNil, type Maybe } from '@visactor/vutils';\nimport { domDocument } from '../../../../util/env';\nimport type { ITooltipSpec, TooltipHandlerParams } from '../../../../component/tooltip';\nimport type { IComponentPluginService } from '../../interface';\nimport { registerComponentPlugin } from '../../register';\nimport { DEFAULT_TOOLTIP_Z_INDEX } from './constant';\nimport type { ILayoutPoint } from '../../../../typings';\n\n/**\n * The tooltip handler class.\n */\nexport class DomTooltipHandler extends BaseTooltipHandler {\n static readonly type = TooltipHandlerType.dom;\n readonly type = TooltipHandlerType.dom;\n\n protected _tooltipContainer = domDocument?.body;\n protected _domStyle: IDomTooltipStyle;\n protected _tooltipActual?: ITooltipActual;\n protected declare _container: Maybe<HTMLDivElement>;\n\n /** 自定义 tooltip 的位置缓存 */\n protected _cacheCustomTooltipPosition: ILayoutPoint;\n\n protected model: TooltipModel;\n\n getVisibility() {\n return !!this.model?.getVisibility();\n }\n\n setVisibility(_value: boolean) {\n // 这里做个节流\n if (_value !== this.getVisibility()) {\n this.model?.setVisibility(_value);\n }\n }\n\n constructor() {\n super(DomTooltipHandler.type);\n }\n\n onAdd(service: IComponentPluginService<any>): void {\n super.onAdd(service);\n this._initStyle();\n this.initEl();\n }\n\n initEl() {\n const tooltipSpec = this._component.getSpec();\n const parentElement = tooltipSpec.parentElement as HTMLElement | HTMLCanvasElement;\n if (domDocument && parentElement) {\n for (let i = 0; i < parentElement.children.length; i++) {\n if (parentElement.children[i].classList.contains(TOOLTIP_CONTAINER_EL_CLASS_NAME)) {\n this._container = parentElement.children[i] as HTMLDivElement;\n break;\n }\n }\n if (!this._container) {\n this._container = domDocument.createElement('div');\n this._container.style.position = 'relative';\n this._container.style.zIndex = DEFAULT_TOOLTIP_Z_INDEX;\n this._container.classList.add(TOOLTIP_CONTAINER_EL_CLASS_NAME);\n parentElement.appendChild(this._container);\n }\n this.model = new TooltipModel(\n {\n valueToHtml: this._option.sanitize,\n getTooltipStyle: () => this._domStyle,\n getTooltipActual: () => this._tooltipActual,\n getTooltipAttributes: () => this._attributes,\n getContainer: () => this._container\n },\n [tooltipSpec.className],\n this.name\n );\n }\n }\n\n protected _removeTooltip() {\n this.model?.release();\n this._container = null;\n }\n\n protected _updateTooltip(visible: boolean, params: TooltipHandlerParams, actualTooltip: ITooltipActual) {\n if (!visible || !this.model) {\n this.setVisibility(visible);\n this._cacheCustomTooltipPosition = undefined;\n } else {\n if (!params.changePositionOnly) {\n this._tooltipActual = actualTooltip;\n this._initStyle();\n\n const firstInit = !this.model.product;\n this.model.initAll();\n if (firstInit) {\n this._initEvent(this.model.product);\n }\n this.model.setStyle();\n this.model.setContent();\n }\n this.setVisibility(visible);\n\n // 位置\n const el = this.model.product;\n if (el) {\n const { x = 0, y = 0 } = actualTooltip.position ?? {};\n if (this._cacheViewSpec?.updateElement) {\n // 此处先设定一次位置,防止页面暂时出现滚动条(优先设置上次的位置)\n this._updatePosition(this._cacheCustomTooltipPosition ?? { x, y });\n // 更新 tooltip dom\n this._cacheViewSpec.updateElement(el, actualTooltip, params);\n // 重新计算 tooltip 位置\n const position = this._getActualTooltipPosition(actualTooltip, params, {\n width: el.offsetWidth,\n height: el.offsetHeight\n });\n // 更新位置\n this._updatePosition(position);\n // 更新缓存\n this._cacheCustomTooltipPosition = position;\n } else {\n this._updatePosition({ x, y });\n }\n }\n }\n }\n\n protected _initStyle() {\n this._domStyle = getDomStyles(this._attributes);\n }\n\n protected _getParentElement(spec: ITooltipSpec): HTMLElement {\n return this._container ?? super._getParentElement(spec);\n }\n\n isTooltipShown() {\n return this.getVisibility();\n }\n\n reInit() {\n super.reInit();\n this._initStyle();\n }\n\n protected _updatePosition({ x, y }: ITooltipPositionActual) {\n const el = this.model.product;\n if (el) {\n // translate3d 性能较好:https://stackoverflow.com/questions/22111256/translate3d-vs-translate-performance\n el.style.transform = `translate3d(${x}px, ${y}px, 0)`;\n }\n }\n\n protected _initEvent(el: HTMLElement) {\n el.addEventListener('pointerleave', event => {\n const { renderMode, enterable } = this._cacheViewSpec;\n const relatedTarget = event.relatedTarget as HTMLElement;\n if (renderMode === 'html' && enterable) {\n if (\n // 判断用户鼠标是否从 tooltip 内部直接滑入非图表区域\n isNil(relatedTarget) ||\n (relatedTarget !== this._compiler.getCanvas() &&\n !hasParentElement(relatedTarget, this.getTooltipContainer() as HTMLElement))\n ) {\n this._component.hideTooltip();\n }\n }\n });\n }\n}\n\nexport const registerDomTooltipHandler = () => {\n registerComponentPlugin(DomTooltipHandler);\n};\n"]}
1
+ {"version":3,"sources":["../src/plugin/components/tooltip-handler/dom/dom-tooltip-handler.ts"],"names":[],"mappings":"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","file":"dom-tooltip-handler.js","sourcesContent":["import type { ITooltipActual, ITooltipPositionActual } from '../../../../typings/tooltip';\nimport { BaseTooltipHandler } from '../base';\nimport { getDomStyles } from './utils';\nimport type { IDomTooltipStyle } from './interface';\nimport { TooltipModel } from './model/tooltip-model';\nimport { TOOLTIP_CONTAINER_EL_CLASS_NAME } from '../constants';\nimport { hasParentElement, isNil, type Maybe } from '@visactor/vutils';\nimport { domDocument } from '../../../../util/env';\nimport type { ITooltipSpec, TooltipHandlerParams } from '../../../../component/tooltip';\nimport type { IComponentPluginService } from '../../interface';\nimport { registerComponentPlugin } from '../../register';\nimport { DEFAULT_TOOLTIP_Z_INDEX } from './constant';\nimport type { ILayoutPoint } from '../../../../typings';\nimport { TooltipHandlerType } from '../../../../component/tooltip/constant';\n\n/**\n * The tooltip handler class.\n */\nexport class DomTooltipHandler extends BaseTooltipHandler {\n static readonly type = TooltipHandlerType.dom;\n readonly type = TooltipHandlerType.dom;\n\n protected _tooltipContainer = domDocument?.body;\n protected _domStyle: IDomTooltipStyle;\n protected _tooltipActual?: ITooltipActual;\n protected declare _container: Maybe<HTMLDivElement>;\n\n /** 自定义 tooltip 的位置缓存 */\n protected _cacheCustomTooltipPosition: ILayoutPoint;\n\n protected model: TooltipModel;\n\n getVisibility() {\n return !!this.model?.getVisibility();\n }\n\n setVisibility(_value: boolean) {\n // 这里做个节流\n if (_value !== this.getVisibility()) {\n this.model?.setVisibility(_value);\n }\n }\n\n constructor() {\n super(DomTooltipHandler.type);\n }\n\n onAdd(service: IComponentPluginService<any>): void {\n super.onAdd(service);\n this._initStyle();\n this.initEl();\n }\n\n initEl() {\n const tooltipSpec = this._component.getSpec();\n const parentElement = tooltipSpec.parentElement as HTMLElement | HTMLCanvasElement;\n if (domDocument && parentElement) {\n for (let i = 0; i < parentElement.children.length; i++) {\n if (parentElement.children[i].classList.contains(TOOLTIP_CONTAINER_EL_CLASS_NAME)) {\n this._container = parentElement.children[i] as HTMLDivElement;\n break;\n }\n }\n if (!this._container) {\n this._container = domDocument.createElement('div');\n this._container.style.position = 'relative';\n this._container.style.zIndex = DEFAULT_TOOLTIP_Z_INDEX;\n this._container.classList.add(TOOLTIP_CONTAINER_EL_CLASS_NAME);\n parentElement.appendChild(this._container);\n }\n this.model = new TooltipModel(\n {\n valueToHtml: this._option.sanitize,\n getTooltipStyle: () => this._domStyle,\n getTooltipActual: () => this._tooltipActual,\n getTooltipAttributes: () => this._attributes,\n getContainer: () => this._container\n },\n [tooltipSpec.className],\n this.name\n );\n }\n }\n\n protected _removeTooltip() {\n this.model?.release();\n this._container = null;\n }\n\n protected _updateTooltip(visible: boolean, params: TooltipHandlerParams, actualTooltip: ITooltipActual) {\n if (!visible || !this.model) {\n this.setVisibility(visible);\n this._cacheCustomTooltipPosition = undefined;\n } else {\n if (!params.changePositionOnly) {\n this._tooltipActual = actualTooltip;\n this._initStyle();\n\n const firstInit = !this.model.product;\n this.model.initAll();\n if (firstInit) {\n this._initEvent(this.model.product);\n }\n this.model.setStyle();\n this.model.setContent();\n }\n this.setVisibility(visible);\n\n // 位置\n const el = this.model.product;\n if (el) {\n const { x = 0, y = 0 } = actualTooltip.position ?? {};\n if (this._cacheViewSpec?.updateElement) {\n // 此处先设定一次位置,防止页面暂时出现滚动条(优先设置上次的位置)\n this._updatePosition(this._cacheCustomTooltipPosition ?? { x, y });\n // 更新 tooltip dom\n this._cacheViewSpec.updateElement(el, actualTooltip, params);\n // 重新计算 tooltip 位置\n const position = this._getActualTooltipPosition(actualTooltip, params, {\n width: el.offsetWidth,\n height: el.offsetHeight\n });\n // 更新位置\n this._updatePosition(position);\n // 更新缓存\n this._cacheCustomTooltipPosition = position;\n } else {\n this._updatePosition({ x, y });\n }\n }\n }\n }\n\n protected _initStyle() {\n this._domStyle = getDomStyles(this._attributes);\n }\n\n protected _getParentElement(spec: ITooltipSpec): HTMLElement {\n return this._container ?? super._getParentElement(spec);\n }\n\n isTooltipShown() {\n return this.getVisibility();\n }\n\n reInit() {\n super.reInit();\n this._initStyle();\n }\n\n protected _updatePosition({ x, y }: ITooltipPositionActual) {\n const el = this.model.product;\n if (el) {\n // translate3d 性能较好:https://stackoverflow.com/questions/22111256/translate3d-vs-translate-performance\n el.style.transform = `translate3d(${x}px, ${y}px, 0)`;\n }\n }\n\n protected _initEvent(el: HTMLElement) {\n el.addEventListener('pointerleave', event => {\n const { renderMode, enterable } = this._cacheViewSpec;\n const relatedTarget = event.relatedTarget as HTMLElement;\n if (renderMode === 'html' && enterable) {\n if (\n // 判断用户鼠标是否从 tooltip 内部直接滑入非图表区域\n isNil(relatedTarget) ||\n (relatedTarget !== this._compiler.getCanvas() &&\n !hasParentElement(relatedTarget, this.getTooltipContainer() as HTMLElement))\n ) {\n this._component.hideTooltip();\n }\n }\n });\n }\n}\n\nexport const registerDomTooltipHandler = () => {\n registerComponentPlugin(DomTooltipHandler);\n};\n"]}
@@ -9,6 +9,7 @@ export declare const positionType: Record<TooltipFixedPosition, [TooltipHorizont
9
9
  export declare const getHorizontalPositionType: (position: TooltipFixedPosition, defaultCase?: TooltipHorizontalPositionType) => TooltipHorizontalPositionType;
10
10
  export declare const getVerticalPositionType: (position: TooltipFixedPosition, defaultCase?: TooltipVerticalPositionType) => TooltipVerticalPositionType;
11
11
  export declare const getCartesianCrosshairRect: (dimensionInfo: IDimensionInfo[], series: ICartesianSeries, layoutStartPoint: ILayoutPoint) => {
12
+ visible: boolean;
12
13
  start: {
13
14
  x: number;
14
15
  y: number;
@@ -60,7 +60,8 @@ export interface IGeoRegionSpec extends IRegionSpec {
60
60
  max?: number;
61
61
  };
62
62
  }
63
- export interface IRegionSpecInfo<T extends IRegionSpec = IRegionSpec> extends IModelSpecInfo {
63
+ export type RegionSpec = IRegionSpec | IGeoRegionSpec;
64
+ export interface IRegionSpecInfo<T extends RegionSpec = IRegionSpec> extends IModelSpecInfo {
64
65
  type: 'region';
65
66
  spec: T;
66
67
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/region/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type { IMark } from '../mark/interface';\nimport type { ILayoutModel, IModelConstructor, IModelOption, IModelSpecInfo } from '../model/interface';\nimport type { ISeries, SeriesType } from '../series/interface';\nimport type { CoordinateType } from '../typings/coordinate';\nimport type { IInteraction } from '../interaction/interface';\nimport type { IProjectionSpec } from '../component/geo/interface';\nimport type { ConvertToMarkStyleSpec, IRectMarkSpec } from '../typings/visual';\nimport type { IAnimate } from '../animation/interface';\nimport type { IGroupMark } from '../mark/group';\nimport type { StringOrNumber } from '../typings';\nimport type { ILayoutItemSpec } from '../layout/interface';\n\nexport interface IRegion extends ILayoutModel {\n animate?: IAnimate;\n interaction: IInteraction;\n\n //stack\n getStackInverse: () => boolean;\n\n getMaxWidth: () => number | undefined;\n setMaxWidth: (value: number) => void;\n getMaxHeight: () => number | undefined;\n setMaxHeight: (value: number) => void;\n\n // 系列\n addSeries: (series: ISeries) => void;\n removeSeries: (series: ISeries) => void;\n\n getSeries: (opt?: ISeriesFilter) => ISeries[];\n getSeriesInName: (name: string) => ISeries;\n getSeriesInUserId: (userId: string) => ISeries;\n getSeriesInId: (id: number) => ISeries;\n getSeriesInType: (type: SeriesType) => ISeries[];\n getSeriesInCoordinateType: (type: CoordinateType) => ISeries[];\n getSeriesInDataName: (dataName: string) => ISeries[];\n\n getMarks: () => IMark[];\n getGroupMark: () => IGroupMark;\n getInteractionMark: () => IGroupMark;\n\n getSpecInfo: () => IRegionSpecInfo;\n}\n\nexport type ISeriesFilter = {\n name?: string;\n userId?: StringOrNumber | StringOrNumber[];\n specIndex?: number | number[];\n id?: number;\n type?: string;\n coordinateType?: CoordinateType;\n dataName?: string;\n};\n\nexport interface IRegionConstructor extends IModelConstructor {\n new (spec: IRegionSpec, ctx: IModelOption): IRegion;\n}\n\nexport interface IRegionSpec extends ILayoutItemSpec {\n id?: StringOrNumber;\n coordinate?: CoordinateType;\n style?: ConvertToMarkStyleSpec<IRectMarkSpec>;\n /**\n * 堆积时是否逆序\n * @default false\n * @since 1.4.0\n */\n stackInverse?: boolean;\n}\n\nexport interface IGeoRegionSpec extends IRegionSpec {\n coordinate?: 'geo';\n /**\n * 是否可以拖拽\n * @default false\n */\n roam?: boolean;\n /**\n * 数据中的经度字段名\n */\n longitudeField?: string;\n /**\n * 数据中的纬度字段名\n */\n latitudeField?: string;\n /**\n * 地理映射配置\n */\n projection?: Partial<Omit<IProjectionSpec, 'name'>>;\n /**\n * 缩放最大最小倍数限制\n */\n zoomLimit?: {\n min?: number;\n max?: number;\n };\n}\n\nexport interface IRegionSpecInfo<T extends IRegionSpec = IRegionSpec> extends IModelSpecInfo {\n /** model 具体类型 */\n type: 'region';\n /** model spec */\n spec: T;\n}\n"]}
1
+ {"version":3,"sources":["../src/region/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type { IMark } from '../mark/interface';\nimport type { ILayoutModel, IModelConstructor, IModelOption, IModelSpecInfo } from '../model/interface';\nimport type { ISeries, SeriesType } from '../series/interface';\nimport type { CoordinateType } from '../typings/coordinate';\nimport type { IInteraction } from '../interaction/interface';\nimport type { IProjectionSpec } from '../component/geo/interface';\nimport type { ConvertToMarkStyleSpec, IRectMarkSpec } from '../typings/visual';\nimport type { IAnimate } from '../animation/interface';\nimport type { IGroupMark } from '../mark/group';\nimport type { StringOrNumber } from '../typings';\nimport type { ILayoutItemSpec } from '../layout/interface';\n\nexport interface IRegion extends ILayoutModel {\n animate?: IAnimate;\n interaction: IInteraction;\n\n //stack\n getStackInverse: () => boolean;\n\n getMaxWidth: () => number | undefined;\n setMaxWidth: (value: number) => void;\n getMaxHeight: () => number | undefined;\n setMaxHeight: (value: number) => void;\n\n // 系列\n addSeries: (series: ISeries) => void;\n removeSeries: (series: ISeries) => void;\n\n getSeries: (opt?: ISeriesFilter) => ISeries[];\n getSeriesInName: (name: string) => ISeries;\n getSeriesInUserId: (userId: string) => ISeries;\n getSeriesInId: (id: number) => ISeries;\n getSeriesInType: (type: SeriesType) => ISeries[];\n getSeriesInCoordinateType: (type: CoordinateType) => ISeries[];\n getSeriesInDataName: (dataName: string) => ISeries[];\n\n getMarks: () => IMark[];\n getGroupMark: () => IGroupMark;\n getInteractionMark: () => IGroupMark;\n\n getSpecInfo: () => IRegionSpecInfo;\n}\n\nexport type ISeriesFilter = {\n name?: string;\n userId?: StringOrNumber | StringOrNumber[];\n specIndex?: number | number[];\n id?: number;\n type?: string;\n coordinateType?: CoordinateType;\n dataName?: string;\n};\n\nexport interface IRegionConstructor extends IModelConstructor {\n new (spec: IRegionSpec, ctx: IModelOption): IRegion;\n}\n\nexport interface IRegionSpec extends ILayoutItemSpec {\n id?: StringOrNumber;\n coordinate?: CoordinateType;\n style?: ConvertToMarkStyleSpec<IRectMarkSpec>;\n /**\n * 堆积时是否逆序\n * @default false\n * @since 1.4.0\n */\n stackInverse?: boolean;\n}\n\nexport interface IGeoRegionSpec extends IRegionSpec {\n coordinate?: 'geo';\n /**\n * 是否可以拖拽\n * @default false\n */\n roam?: boolean;\n /**\n * 数据中的经度字段名\n */\n longitudeField?: string;\n /**\n * 数据中的纬度字段名\n */\n latitudeField?: string;\n /**\n * 地理映射配置\n */\n projection?: Partial<Omit<IProjectionSpec, 'name'>>;\n /**\n * 缩放最大最小倍数限制\n */\n zoomLimit?: {\n min?: number;\n max?: number;\n };\n}\n\nexport type RegionSpec = IRegionSpec | IGeoRegionSpec;\n\nexport interface IRegionSpecInfo<T extends RegionSpec = IRegionSpec> extends IModelSpecInfo {\n /** model 具体类型 */\n type: 'region';\n /** model spec */\n spec: T;\n}\n"]}
@@ -73,7 +73,7 @@ export class Region extends LayoutModel {
73
73
  const clip = null !== (_a = this._spec.clip) && void 0 !== _a ? _a : this._getClipDefaultValue();
74
74
  this._groupMark = this._createGroupMark("regionGroup", this.userId, this.layoutZIndex),
75
75
  this._interactionMark = this._createGroupMark("regionInteractionGroup", this.userId + "_interaction", LayoutZIndex.Interaction),
76
- this._spec.style && (this._backgroundMark = this._createMark({
76
+ isEmpty(this._spec.style) || (this._backgroundMark = this._createMark({
77
77
  type: "rect",
78
78
  name: "regionBackground"
79
79
  }), clip && (this._foregroundMark = this._createMark({