@visactor/vchart 1.10.0-alpha.4 → 1.10.0-alpha.5

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 (553) hide show
  1. package/build/es5/index.js +1 -1
  2. package/build/index.js +32729 -32038
  3. package/build/index.min.js +1 -1
  4. package/build/tsconfig.tsbuildinfo +1 -1
  5. package/cjs/animation/utils.js +5 -5
  6. package/cjs/animation/utils.js.map +1 -1
  7. package/cjs/chart/base/base-chart-transformer.js +7 -9
  8. package/cjs/chart/base/base-chart-transformer.js.map +1 -1
  9. package/cjs/chart/base/base-chart.d.ts +1 -1
  10. package/cjs/chart/base/base-chart.js.map +1 -1
  11. package/cjs/chart/interface/chart.d.ts +1 -1
  12. package/cjs/chart/interface/chart.js.map +1 -1
  13. package/cjs/chart/progress/circular/circular-progress-transformer.js +2 -0
  14. package/cjs/chart/progress/circular/circular-progress-transformer.js.map +1 -1
  15. package/cjs/compile/compiler.d.ts +1 -1
  16. package/cjs/compile/compiler.js +3 -3
  17. package/cjs/compile/compiler.js.map +1 -1
  18. package/cjs/compile/mark/interface.js.map +1 -1
  19. package/cjs/component/axis/base-axis.d.ts +9 -6
  20. package/cjs/component/axis/base-axis.js +37 -6
  21. package/cjs/component/axis/base-axis.js.map +1 -1
  22. package/cjs/component/axis/cartesian/axis.d.ts +1 -5
  23. package/cjs/component/axis/cartesian/axis.js +9 -31
  24. package/cjs/component/axis/cartesian/axis.js.map +1 -1
  25. package/cjs/component/axis/cartesian/time-axis.d.ts +1 -1
  26. package/cjs/component/axis/cartesian/time-axis.js +3 -3
  27. package/cjs/component/axis/cartesian/time-axis.js.map +1 -1
  28. package/cjs/component/axis/cartesian/util/index.d.ts +0 -1
  29. package/cjs/component/axis/cartesian/util/index.js +1 -1
  30. package/cjs/component/axis/cartesian/util/index.js.map +1 -1
  31. package/cjs/component/axis/interface/common.d.ts +2 -1
  32. package/cjs/component/axis/interface/common.js.map +1 -1
  33. package/cjs/component/axis/interface/spec.d.ts +2 -0
  34. package/cjs/component/axis/interface/spec.js.map +1 -1
  35. package/cjs/component/axis/polar/axis.d.ts +1 -5
  36. package/cjs/component/axis/polar/axis.js +5 -23
  37. package/cjs/component/axis/polar/axis.js.map +1 -1
  38. package/cjs/component/base/util.d.ts +5 -0
  39. package/cjs/component/base/util.js +24 -16
  40. package/cjs/component/base/util.js.map +1 -1
  41. package/cjs/component/crosshair/base.d.ts +4 -1
  42. package/cjs/component/crosshair/base.js +1 -10
  43. package/cjs/component/crosshair/base.js.map +1 -1
  44. package/cjs/component/crosshair/cartesian.d.ts +1 -7
  45. package/cjs/component/crosshair/cartesian.js +17 -208
  46. package/cjs/component/crosshair/cartesian.js.map +1 -1
  47. package/cjs/component/crosshair/config.js.map +1 -1
  48. package/cjs/component/crosshair/interface/cartesian.d.ts +46 -0
  49. package/cjs/component/crosshair/interface/cartesian.js +6 -0
  50. package/cjs/component/crosshair/interface/cartesian.js.map +1 -0
  51. package/cjs/component/crosshair/interface/common.d.ts +7 -0
  52. package/cjs/component/crosshair/interface/common.js +6 -0
  53. package/cjs/component/crosshair/interface/common.js.map +1 -0
  54. package/cjs/component/crosshair/interface/index.d.ts +3 -0
  55. package/cjs/component/crosshair/interface/index.js +3 -1
  56. package/cjs/component/crosshair/interface/index.js.map +1 -1
  57. package/cjs/component/crosshair/interface/polar.d.ts +23 -0
  58. package/cjs/component/crosshair/interface/polar.js +6 -0
  59. package/cjs/component/crosshair/interface/polar.js.map +1 -0
  60. package/cjs/component/crosshair/interface/spec.d.ts +1 -0
  61. package/cjs/component/crosshair/interface/spec.js.map +1 -1
  62. package/cjs/component/crosshair/polar.d.ts +2 -2
  63. package/cjs/component/crosshair/polar.js +17 -114
  64. package/cjs/component/crosshair/polar.js.map +1 -1
  65. package/cjs/component/crosshair/utils/cartesian.d.ts +32 -0
  66. package/cjs/component/crosshair/utils/cartesian.js +238 -0
  67. package/cjs/component/crosshair/utils/cartesian.js.map +1 -0
  68. package/{esm/component/crosshair/util.d.ts → cjs/component/crosshair/utils/common.d.ts} +3 -3
  69. package/cjs/component/crosshair/{util.js → utils/common.js} +2 -2
  70. package/cjs/component/crosshair/utils/common.js.map +1 -0
  71. package/cjs/component/crosshair/utils/index.d.ts +1 -0
  72. package/cjs/component/crosshair/utils/index.js +21 -0
  73. package/cjs/component/crosshair/utils/index.js.map +1 -0
  74. package/cjs/component/crosshair/utils/polar.d.ts +37 -0
  75. package/cjs/component/crosshair/utils/polar.js +133 -0
  76. package/cjs/component/crosshair/utils/polar.js.map +1 -0
  77. package/cjs/component/custom-mark/custom-mark.js +2 -1
  78. package/cjs/component/custom-mark/custom-mark.js.map +1 -1
  79. package/cjs/component/data-zoom/data-zoom/data-zoom.d.ts +1 -0
  80. package/cjs/component/data-zoom/data-zoom/data-zoom.js +10 -3
  81. package/cjs/component/data-zoom/data-zoom/data-zoom.js.map +1 -1
  82. package/cjs/component/data-zoom/data-zoom/interface.d.ts +4 -5
  83. package/cjs/component/data-zoom/data-zoom/interface.js.map +1 -1
  84. package/cjs/component/data-zoom/scroll-bar/interface.d.ts +2 -4
  85. package/cjs/component/data-zoom/scroll-bar/interface.js.map +1 -1
  86. package/cjs/component/data-zoom/util.d.ts +0 -4
  87. package/cjs/component/data-zoom/util.js +2 -10
  88. package/cjs/component/data-zoom/util.js.map +1 -1
  89. package/cjs/component/index.d.ts +1 -0
  90. package/cjs/component/index.js +16 -1
  91. package/cjs/component/index.js.map +1 -1
  92. package/cjs/component/interface/theme.d.ts +8 -0
  93. package/cjs/component/interface/theme.js.map +1 -1
  94. package/cjs/component/label/interface.d.ts +1 -1
  95. package/cjs/component/label/interface.js.map +1 -1
  96. package/cjs/component/label/util.js +4 -4
  97. package/cjs/component/label/util.js.map +1 -1
  98. package/cjs/component/legend/continuous/interface.d.ts +6 -12
  99. package/cjs/component/legend/continuous/interface.js.map +1 -1
  100. package/cjs/component/legend/discrete/interface.d.ts +17 -4
  101. package/cjs/component/legend/discrete/interface.js.map +1 -1
  102. package/cjs/component/legend/discrete/legend.d.ts +1 -0
  103. package/cjs/component/legend/discrete/legend.js +11 -2
  104. package/cjs/component/legend/discrete/legend.js.map +1 -1
  105. package/cjs/component/legend/discrete/util.js +6 -4
  106. package/cjs/component/legend/discrete/util.js.map +1 -1
  107. package/cjs/component/legend/util.d.ts +1 -2
  108. package/cjs/component/legend/util.js +2 -6
  109. package/cjs/component/legend/util.js.map +1 -1
  110. package/cjs/component/player/interface/theme.d.ts +1 -1
  111. package/cjs/component/player/interface/theme.js.map +1 -1
  112. package/cjs/component/player/utils/transform.js.map +1 -1
  113. package/cjs/component/tooltip/interface/common.d.ts +2 -2
  114. package/cjs/component/tooltip/interface/common.js.map +1 -1
  115. package/cjs/component/tooltip/interface/event.d.ts +0 -2
  116. package/cjs/component/tooltip/interface/event.js.map +1 -1
  117. package/cjs/component/tooltip/interface/index.d.ts +1 -0
  118. package/cjs/component/tooltip/interface/index.js +1 -1
  119. package/cjs/component/tooltip/interface/index.js.map +1 -1
  120. package/cjs/component/tooltip/interface/spec.d.ts +2 -2
  121. package/cjs/component/tooltip/interface/spec.js.map +1 -1
  122. package/cjs/component/tooltip/interface/theme.d.ts +3 -3
  123. package/cjs/component/tooltip/interface/theme.js.map +1 -1
  124. package/cjs/component/tooltip/processor/dimension-tooltip.js +2 -1
  125. package/cjs/component/tooltip/processor/dimension-tooltip.js.map +1 -1
  126. package/cjs/component/tooltip/processor/mark-tooltip.js +2 -1
  127. package/cjs/component/tooltip/processor/mark-tooltip.js.map +1 -1
  128. package/cjs/component/tooltip/tooltip.d.ts +3 -3
  129. package/cjs/component/tooltip/tooltip.js +7 -5
  130. package/cjs/component/tooltip/tooltip.js.map +1 -1
  131. package/cjs/component/tooltip/utils/show-tooltip.js +3 -0
  132. package/cjs/component/tooltip/utils/show-tooltip.js.map +1 -1
  133. package/cjs/component/util.d.ts +8 -0
  134. package/cjs/component/util.js +15 -3
  135. package/cjs/component/util.js.map +1 -1
  136. package/cjs/core/factory.d.ts +3 -0
  137. package/cjs/core/factory.js +6 -0
  138. package/cjs/core/factory.js.map +1 -1
  139. package/cjs/core/index.d.ts +2 -1
  140. package/cjs/core/index.js +3 -2
  141. package/cjs/core/index.js.map +1 -1
  142. package/cjs/core/interface.d.ts +1 -1
  143. package/cjs/core/interface.js.map +1 -1
  144. package/cjs/core/vchart.d.ts +2 -1
  145. package/cjs/core/vchart.js +2 -2
  146. package/cjs/core/vchart.js.map +1 -1
  147. package/cjs/data/initialize.js.map +1 -1
  148. package/cjs/event/events/dimension/interface.d.ts +3 -2
  149. package/cjs/event/events/dimension/interface.js.map +1 -1
  150. package/cjs/event/events/dimension/util/cartesian.js +1 -0
  151. package/cjs/event/events/dimension/util/cartesian.js.map +1 -1
  152. package/cjs/event/events/dimension/util/polar.js +2 -0
  153. package/cjs/event/events/dimension/util/polar.js.map +1 -1
  154. package/cjs/index-lark.js +2 -2
  155. package/cjs/index-lark.js.map +1 -1
  156. package/cjs/index-wx-simple.js +2 -2
  157. package/cjs/index-wx-simple.js.map +1 -1
  158. package/cjs/index-wx.js +2 -2
  159. package/cjs/index-wx.js.map +1 -1
  160. package/cjs/index.d.ts +1 -0
  161. package/cjs/index.js +1 -1
  162. package/cjs/index.js.map +1 -1
  163. package/cjs/mark/arc.js +3 -1
  164. package/cjs/mark/arc.js.map +1 -1
  165. package/cjs/mark/base/base-mark.d.ts +3 -3
  166. package/cjs/mark/base/base-mark.js +20 -13
  167. package/cjs/mark/base/base-mark.js.map +1 -1
  168. package/cjs/mark/index.d.ts +2 -3
  169. package/cjs/mark/index.js +1 -10
  170. package/cjs/mark/index.js.map +1 -1
  171. package/cjs/mark/interface/type.d.ts +0 -1
  172. package/cjs/mark/interface/type.js +2 -3
  173. package/cjs/mark/interface/type.js.map +1 -1
  174. package/cjs/plugin/chart/formatter/formatter.d.ts +28 -0
  175. package/cjs/plugin/chart/formatter/formatter.js +74 -0
  176. package/cjs/plugin/chart/formatter/formatter.js.map +1 -0
  177. package/cjs/plugin/chart/formatter/index.d.ts +1 -0
  178. package/cjs/plugin/chart/formatter/index.js +21 -0
  179. package/cjs/plugin/chart/formatter/index.js.map +1 -0
  180. package/cjs/plugin/components/index.d.ts +2 -5
  181. package/cjs/plugin/components/index.js +16 -7
  182. package/cjs/plugin/components/index.js.map +1 -1
  183. package/cjs/plugin/components/tooltip-handler/base.d.ts +6 -6
  184. package/cjs/plugin/components/tooltip-handler/base.js +112 -51
  185. package/cjs/plugin/components/tooltip-handler/base.js.map +1 -1
  186. package/cjs/plugin/components/tooltip-handler/canvas/canvas-tooltip-handler.d.ts +2 -2
  187. package/cjs/plugin/components/tooltip-handler/canvas/canvas-tooltip-handler.js.map +1 -1
  188. package/cjs/plugin/components/tooltip-handler/constants.d.ts +2 -2
  189. package/cjs/plugin/components/tooltip-handler/constants.js.map +1 -1
  190. package/cjs/plugin/components/tooltip-handler/dom/dom-tooltip-handler.d.ts +8 -4
  191. package/cjs/plugin/components/tooltip-handler/dom/dom-tooltip-handler.js +31 -9
  192. package/cjs/plugin/components/tooltip-handler/dom/dom-tooltip-handler.js.map +1 -1
  193. package/cjs/plugin/components/tooltip-handler/dom/model/base-tooltip-model.d.ts +2 -2
  194. package/cjs/plugin/components/tooltip-handler/dom/model/base-tooltip-model.js.map +1 -1
  195. package/cjs/plugin/components/tooltip-handler/dom/model/content-column-model.d.ts +2 -2
  196. package/cjs/plugin/components/tooltip-handler/dom/model/content-column-model.js +2 -3
  197. package/cjs/plugin/components/tooltip-handler/dom/model/content-column-model.js.map +1 -1
  198. package/cjs/plugin/components/tooltip-handler/dom/model/interface.d.ts +2 -2
  199. package/cjs/plugin/components/tooltip-handler/dom/model/interface.js.map +1 -1
  200. package/cjs/plugin/components/tooltip-handler/utils/attribute.d.ts +2 -2
  201. package/cjs/plugin/components/tooltip-handler/utils/attribute.js +1 -1
  202. package/cjs/plugin/components/tooltip-handler/utils/attribute.js.map +1 -1
  203. package/cjs/plugin/components/tooltip-handler/utils/common.d.ts +3 -3
  204. package/cjs/plugin/components/tooltip-handler/utils/common.js +9 -3
  205. package/cjs/plugin/components/tooltip-handler/utils/common.js.map +1 -1
  206. package/cjs/plugin/components/tooltip-handler/utils/compose.d.ts +2 -2
  207. package/cjs/plugin/components/tooltip-handler/utils/compose.js +9 -8
  208. package/cjs/plugin/components/tooltip-handler/utils/compose.js.map +1 -1
  209. package/cjs/plugin/components/tooltip-handler/utils/get-spec.js +12 -9
  210. package/cjs/plugin/components/tooltip-handler/utils/get-spec.js.map +1 -1
  211. package/cjs/plugin/components/tooltip-handler/utils/position.d.ts +18 -3
  212. package/cjs/plugin/components/tooltip-handler/utils/position.js +49 -8
  213. package/cjs/plugin/components/tooltip-handler/utils/position.js.map +1 -1
  214. package/cjs/plugin/index.d.ts +1 -0
  215. package/cjs/plugin/index.js +1 -1
  216. package/cjs/plugin/index.js.map +1 -1
  217. package/cjs/series/base/base-series.js +2 -1
  218. package/cjs/series/base/base-series.js.map +1 -1
  219. package/cjs/series/base/tooltip-helper.d.ts +3 -3
  220. package/cjs/series/base/tooltip-helper.js.map +1 -1
  221. package/cjs/series/dot/tooltip-helper.js +2 -2
  222. package/cjs/series/dot/tooltip-helper.js.map +1 -1
  223. package/cjs/series/gauge/constant.js +2 -2
  224. package/cjs/series/gauge/constant.js.map +1 -1
  225. package/cjs/series/gauge/gauge.js +2 -2
  226. package/cjs/series/gauge/gauge.js.map +1 -1
  227. package/cjs/series/gauge/interface.d.ts +3 -3
  228. package/cjs/series/gauge/interface.js.map +1 -1
  229. package/cjs/series/interface/common.d.ts +1 -1
  230. package/cjs/series/interface/common.js.map +1 -1
  231. package/cjs/series/link/tooltip-helper.js +2 -2
  232. package/cjs/series/link/tooltip-helper.js.map +1 -1
  233. package/cjs/series/polar/progress-like/progress-like.js +24 -26
  234. package/cjs/series/polar/progress-like/progress-like.js.map +1 -1
  235. package/cjs/series/progress/circular/circular.js +3 -4
  236. package/cjs/series/progress/circular/circular.js.map +1 -1
  237. package/cjs/series/progress/circular/constant.js +2 -2
  238. package/cjs/series/progress/circular/constant.js.map +1 -1
  239. package/cjs/series/progress/circular/interface.d.ts +5 -5
  240. package/cjs/series/progress/circular/interface.js.map +1 -1
  241. package/cjs/series/range-area/tooltip-helper.js.map +1 -1
  242. package/cjs/series/sankey/tooltip-helper.js.map +1 -1
  243. package/cjs/series/sunburst/sunburst.d.ts +1 -1
  244. package/cjs/series/word-cloud/interface.js.map +1 -1
  245. package/cjs/theme/builtin/common/mark.js +2 -1
  246. package/cjs/theme/builtin/common/mark.js.map +1 -1
  247. package/cjs/theme/builtin/common/series/box-plot.js +5 -0
  248. package/cjs/theme/builtin/common/series/box-plot.js.map +1 -1
  249. package/cjs/theme/builtin/common/series/rangeColumn.js +1 -0
  250. package/cjs/theme/builtin/common/series/rangeColumn.js.map +1 -1
  251. package/cjs/theme/builtin/common/series/waterfall.js +4 -1
  252. package/cjs/theme/builtin/common/series/waterfall.js.map +1 -1
  253. package/cjs/typings/spec/common.d.ts +4 -3
  254. package/cjs/typings/spec/common.js.map +1 -1
  255. package/cjs/typings/tooltip/line.d.ts +5 -2
  256. package/cjs/typings/tooltip/line.js.map +1 -1
  257. package/cjs/typings/tooltip/position.d.ts +21 -10
  258. package/cjs/typings/tooltip/position.js.map +1 -1
  259. package/cjs/typings/tooltip/shape.d.ts +2 -2
  260. package/cjs/typings/tooltip/shape.js.map +1 -1
  261. package/cjs/typings/tooltip/tooltip.d.ts +8 -8
  262. package/cjs/typings/tooltip/tooltip.js.map +1 -1
  263. package/cjs/typings/visual.d.ts +2 -4
  264. package/cjs/typings/visual.js.map +1 -1
  265. package/cjs/util/index.d.ts +1 -2
  266. package/cjs/util/index.js +2 -2
  267. package/cjs/util/index.js.map +1 -1
  268. package/cjs/vchart-all.js +2 -2
  269. package/cjs/vchart-all.js.map +1 -1
  270. package/cjs/vchart-simple.js +2 -2
  271. package/cjs/vchart-simple.js.map +1 -1
  272. package/esm/animation/utils.js +5 -5
  273. package/esm/animation/utils.js.map +1 -1
  274. package/esm/chart/base/base-chart-transformer.js +7 -9
  275. package/esm/chart/base/base-chart-transformer.js.map +1 -1
  276. package/esm/chart/base/base-chart.d.ts +1 -1
  277. package/esm/chart/base/base-chart.js.map +1 -1
  278. package/esm/chart/interface/chart.d.ts +1 -1
  279. package/esm/chart/interface/chart.js.map +1 -1
  280. package/esm/chart/progress/circular/circular-progress-transformer.js +2 -0
  281. package/esm/chart/progress/circular/circular-progress-transformer.js.map +1 -1
  282. package/esm/compile/compiler.d.ts +1 -1
  283. package/esm/compile/compiler.js +4 -4
  284. package/esm/compile/compiler.js.map +1 -1
  285. package/esm/compile/mark/interface.js.map +1 -1
  286. package/esm/component/axis/base-axis.d.ts +9 -6
  287. package/esm/component/axis/base-axis.js +39 -5
  288. package/esm/component/axis/base-axis.js.map +1 -1
  289. package/esm/component/axis/cartesian/axis.d.ts +1 -5
  290. package/esm/component/axis/cartesian/axis.js +8 -26
  291. package/esm/component/axis/cartesian/axis.js.map +1 -1
  292. package/esm/component/axis/cartesian/time-axis.d.ts +1 -1
  293. package/esm/component/axis/cartesian/time-axis.js +2 -2
  294. package/esm/component/axis/cartesian/time-axis.js.map +1 -1
  295. package/esm/component/axis/cartesian/util/index.d.ts +0 -1
  296. package/esm/component/axis/cartesian/util/index.js +0 -2
  297. package/esm/component/axis/cartesian/util/index.js.map +1 -1
  298. package/esm/component/axis/interface/common.d.ts +2 -1
  299. package/esm/component/axis/interface/common.js.map +1 -1
  300. package/esm/component/axis/interface/spec.d.ts +2 -0
  301. package/esm/component/axis/interface/spec.js.map +1 -1
  302. package/esm/component/axis/polar/axis.d.ts +1 -5
  303. package/esm/component/axis/polar/axis.js +5 -23
  304. package/esm/component/axis/polar/axis.js.map +1 -1
  305. package/esm/component/base/util.d.ts +5 -0
  306. package/esm/component/base/util.js +12 -9
  307. package/esm/component/base/util.js.map +1 -1
  308. package/esm/component/crosshair/base.d.ts +4 -1
  309. package/esm/component/crosshair/base.js +1 -10
  310. package/esm/component/crosshair/base.js.map +1 -1
  311. package/esm/component/crosshair/cartesian.d.ts +1 -7
  312. package/esm/component/crosshair/cartesian.js +20 -206
  313. package/esm/component/crosshair/cartesian.js.map +1 -1
  314. package/esm/component/crosshair/config.js.map +1 -1
  315. package/esm/component/crosshair/interface/cartesian.d.ts +46 -0
  316. package/esm/component/crosshair/interface/cartesian.js +2 -0
  317. package/esm/component/crosshair/interface/cartesian.js.map +1 -0
  318. package/esm/component/crosshair/interface/common.d.ts +7 -0
  319. package/esm/component/crosshair/interface/common.js +2 -0
  320. package/esm/component/crosshair/interface/common.js.map +1 -0
  321. package/esm/component/crosshair/interface/index.d.ts +3 -0
  322. package/esm/component/crosshair/interface/index.js +6 -0
  323. package/esm/component/crosshair/interface/index.js.map +1 -1
  324. package/esm/component/crosshair/interface/polar.d.ts +23 -0
  325. package/esm/component/crosshair/interface/polar.js +2 -0
  326. package/esm/component/crosshair/interface/polar.js.map +1 -0
  327. package/esm/component/crosshair/interface/spec.d.ts +1 -0
  328. package/esm/component/crosshair/interface/spec.js.map +1 -1
  329. package/esm/component/crosshair/polar.d.ts +2 -2
  330. package/esm/component/crosshair/polar.js +19 -116
  331. package/esm/component/crosshair/polar.js.map +1 -1
  332. package/esm/component/crosshair/utils/cartesian.d.ts +32 -0
  333. package/esm/component/crosshair/utils/cartesian.js +233 -0
  334. package/esm/component/crosshair/utils/cartesian.js.map +1 -0
  335. package/{cjs/component/crosshair/util.d.ts → esm/component/crosshair/utils/common.d.ts} +3 -3
  336. package/esm/component/crosshair/{util.js → utils/common.js} +6 -6
  337. package/esm/component/crosshair/utils/common.js.map +1 -0
  338. package/esm/component/crosshair/utils/index.d.ts +1 -0
  339. package/esm/component/crosshair/utils/index.js +2 -0
  340. package/esm/component/crosshair/utils/index.js.map +1 -0
  341. package/esm/component/crosshair/utils/polar.d.ts +37 -0
  342. package/esm/component/crosshair/utils/polar.js +125 -0
  343. package/esm/component/crosshair/utils/polar.js.map +1 -0
  344. package/esm/component/custom-mark/custom-mark.js +2 -1
  345. package/esm/component/custom-mark/custom-mark.js.map +1 -1
  346. package/esm/component/data-zoom/data-zoom/data-zoom.d.ts +1 -0
  347. package/esm/component/data-zoom/data-zoom/data-zoom.js +10 -2
  348. package/esm/component/data-zoom/data-zoom/data-zoom.js.map +1 -1
  349. package/esm/component/data-zoom/data-zoom/interface.d.ts +4 -5
  350. package/esm/component/data-zoom/data-zoom/interface.js.map +1 -1
  351. package/esm/component/data-zoom/scroll-bar/interface.d.ts +2 -4
  352. package/esm/component/data-zoom/scroll-bar/interface.js.map +1 -1
  353. package/esm/component/data-zoom/util.d.ts +0 -4
  354. package/esm/component/data-zoom/util.js +1 -10
  355. package/esm/component/data-zoom/util.js.map +1 -1
  356. package/esm/component/index.d.ts +1 -0
  357. package/esm/component/index.js +2 -0
  358. package/esm/component/index.js.map +1 -1
  359. package/esm/component/interface/theme.d.ts +8 -0
  360. package/esm/component/interface/theme.js.map +1 -1
  361. package/esm/component/label/interface.d.ts +1 -1
  362. package/esm/component/label/interface.js.map +1 -1
  363. package/esm/component/label/util.js +6 -3
  364. package/esm/component/label/util.js.map +1 -1
  365. package/esm/component/legend/continuous/interface.d.ts +6 -12
  366. package/esm/component/legend/continuous/interface.js.map +1 -1
  367. package/esm/component/legend/discrete/interface.d.ts +17 -4
  368. package/esm/component/legend/discrete/interface.js.map +1 -1
  369. package/esm/component/legend/discrete/legend.d.ts +1 -0
  370. package/esm/component/legend/discrete/legend.js +11 -1
  371. package/esm/component/legend/discrete/legend.js.map +1 -1
  372. package/esm/component/legend/discrete/util.js +3 -2
  373. package/esm/component/legend/discrete/util.js.map +1 -1
  374. package/esm/component/legend/util.d.ts +1 -2
  375. package/esm/component/legend/util.js +0 -4
  376. package/esm/component/legend/util.js.map +1 -1
  377. package/esm/component/player/interface/theme.d.ts +1 -1
  378. package/esm/component/player/interface/theme.js.map +1 -1
  379. package/esm/component/player/utils/transform.js.map +1 -1
  380. package/esm/component/tooltip/interface/common.d.ts +2 -2
  381. package/esm/component/tooltip/interface/common.js.map +1 -1
  382. package/esm/component/tooltip/interface/event.d.ts +0 -2
  383. package/esm/component/tooltip/interface/event.js.map +1 -1
  384. package/esm/component/tooltip/interface/index.d.ts +1 -0
  385. package/esm/component/tooltip/interface/index.js +2 -0
  386. package/esm/component/tooltip/interface/index.js.map +1 -1
  387. package/esm/component/tooltip/interface/spec.d.ts +2 -2
  388. package/esm/component/tooltip/interface/spec.js.map +1 -1
  389. package/esm/component/tooltip/interface/theme.d.ts +3 -3
  390. package/esm/component/tooltip/interface/theme.js.map +1 -1
  391. package/esm/component/tooltip/processor/dimension-tooltip.js +2 -1
  392. package/esm/component/tooltip/processor/dimension-tooltip.js.map +1 -1
  393. package/esm/component/tooltip/processor/mark-tooltip.js +2 -1
  394. package/esm/component/tooltip/processor/mark-tooltip.js.map +1 -1
  395. package/esm/component/tooltip/tooltip.d.ts +3 -3
  396. package/esm/component/tooltip/tooltip.js +8 -6
  397. package/esm/component/tooltip/tooltip.js.map +1 -1
  398. package/esm/component/tooltip/utils/show-tooltip.js +3 -0
  399. package/esm/component/tooltip/utils/show-tooltip.js.map +1 -1
  400. package/esm/component/util.d.ts +8 -0
  401. package/esm/component/util.js +14 -0
  402. package/esm/component/util.js.map +1 -1
  403. package/esm/core/factory.d.ts +3 -0
  404. package/esm/core/factory.js +6 -0
  405. package/esm/core/factory.js.map +1 -1
  406. package/esm/core/index.d.ts +2 -1
  407. package/esm/core/index.js +3 -1
  408. package/esm/core/index.js.map +1 -1
  409. package/esm/core/interface.d.ts +1 -1
  410. package/esm/core/interface.js.map +1 -1
  411. package/esm/core/vchart.d.ts +2 -1
  412. package/esm/core/vchart.js +3 -1
  413. package/esm/core/vchart.js.map +1 -1
  414. package/esm/data/initialize.js.map +1 -1
  415. package/esm/event/events/dimension/interface.d.ts +3 -2
  416. package/esm/event/events/dimension/interface.js.map +1 -1
  417. package/esm/event/events/dimension/util/cartesian.js +1 -0
  418. package/esm/event/events/dimension/util/cartesian.js.map +1 -1
  419. package/esm/event/events/dimension/util/polar.js +2 -0
  420. package/esm/event/events/dimension/util/polar.js.map +1 -1
  421. package/esm/index-lark.js +4 -2
  422. package/esm/index-lark.js.map +1 -1
  423. package/esm/index-wx-simple.js +4 -2
  424. package/esm/index-wx-simple.js.map +1 -1
  425. package/esm/index-wx.js +1 -1
  426. package/esm/index-wx.js.map +1 -1
  427. package/esm/index.d.ts +1 -0
  428. package/esm/index.js +2 -0
  429. package/esm/index.js.map +1 -1
  430. package/esm/mark/arc.js +3 -1
  431. package/esm/mark/arc.js.map +1 -1
  432. package/esm/mark/base/base-mark.d.ts +3 -3
  433. package/esm/mark/base/base-mark.js +20 -13
  434. package/esm/mark/base/base-mark.js.map +1 -1
  435. package/esm/mark/index.d.ts +2 -3
  436. package/esm/mark/index.js +1 -3
  437. package/esm/mark/index.js.map +1 -1
  438. package/esm/mark/interface/type.d.ts +0 -1
  439. package/esm/mark/interface/type.js +2 -3
  440. package/esm/mark/interface/type.js.map +1 -1
  441. package/esm/plugin/chart/formatter/formatter.d.ts +28 -0
  442. package/esm/plugin/chart/formatter/formatter.js +71 -0
  443. package/esm/plugin/chart/formatter/formatter.js.map +1 -0
  444. package/esm/plugin/chart/formatter/index.d.ts +1 -0
  445. package/esm/plugin/chart/formatter/index.js +2 -0
  446. package/esm/plugin/chart/formatter/index.js.map +1 -0
  447. package/esm/plugin/components/index.d.ts +2 -5
  448. package/esm/plugin/components/index.js +2 -4
  449. package/esm/plugin/components/index.js.map +1 -1
  450. package/esm/plugin/components/tooltip-handler/base.d.ts +6 -6
  451. package/esm/plugin/components/tooltip-handler/base.js +111 -50
  452. package/esm/plugin/components/tooltip-handler/base.js.map +1 -1
  453. package/esm/plugin/components/tooltip-handler/canvas/canvas-tooltip-handler.d.ts +2 -2
  454. package/esm/plugin/components/tooltip-handler/canvas/canvas-tooltip-handler.js.map +1 -1
  455. package/esm/plugin/components/tooltip-handler/constants.d.ts +2 -2
  456. package/esm/plugin/components/tooltip-handler/constants.js.map +1 -1
  457. package/esm/plugin/components/tooltip-handler/dom/dom-tooltip-handler.d.ts +8 -4
  458. package/esm/plugin/components/tooltip-handler/dom/dom-tooltip-handler.js +31 -8
  459. package/esm/plugin/components/tooltip-handler/dom/dom-tooltip-handler.js.map +1 -1
  460. package/esm/plugin/components/tooltip-handler/dom/model/base-tooltip-model.d.ts +2 -2
  461. package/esm/plugin/components/tooltip-handler/dom/model/base-tooltip-model.js.map +1 -1
  462. package/esm/plugin/components/tooltip-handler/dom/model/content-column-model.d.ts +2 -2
  463. package/esm/plugin/components/tooltip-handler/dom/model/content-column-model.js +2 -3
  464. package/esm/plugin/components/tooltip-handler/dom/model/content-column-model.js.map +1 -1
  465. package/esm/plugin/components/tooltip-handler/dom/model/interface.d.ts +2 -2
  466. package/esm/plugin/components/tooltip-handler/dom/model/interface.js.map +1 -1
  467. package/esm/plugin/components/tooltip-handler/utils/attribute.d.ts +2 -2
  468. package/esm/plugin/components/tooltip-handler/utils/attribute.js +1 -1
  469. package/esm/plugin/components/tooltip-handler/utils/attribute.js.map +1 -1
  470. package/esm/plugin/components/tooltip-handler/utils/common.d.ts +3 -3
  471. package/esm/plugin/components/tooltip-handler/utils/common.js +10 -1
  472. package/esm/plugin/components/tooltip-handler/utils/common.js.map +1 -1
  473. package/esm/plugin/components/tooltip-handler/utils/compose.d.ts +2 -2
  474. package/esm/plugin/components/tooltip-handler/utils/compose.js +5 -7
  475. package/esm/plugin/components/tooltip-handler/utils/compose.js.map +1 -1
  476. package/esm/plugin/components/tooltip-handler/utils/get-spec.js +12 -9
  477. package/esm/plugin/components/tooltip-handler/utils/get-spec.js.map +1 -1
  478. package/esm/plugin/components/tooltip-handler/utils/position.d.ts +18 -3
  479. package/esm/plugin/components/tooltip-handler/utils/position.js +39 -7
  480. package/esm/plugin/components/tooltip-handler/utils/position.js.map +1 -1
  481. package/esm/plugin/index.d.ts +1 -0
  482. package/esm/plugin/index.js +2 -0
  483. package/esm/plugin/index.js.map +1 -1
  484. package/esm/series/base/base-series.js +2 -1
  485. package/esm/series/base/base-series.js.map +1 -1
  486. package/esm/series/base/tooltip-helper.d.ts +3 -3
  487. package/esm/series/base/tooltip-helper.js.map +1 -1
  488. package/esm/series/dot/tooltip-helper.js +1 -3
  489. package/esm/series/dot/tooltip-helper.js.map +1 -1
  490. package/esm/series/gauge/constant.js +2 -2
  491. package/esm/series/gauge/constant.js.map +1 -1
  492. package/esm/series/gauge/gauge.js +3 -3
  493. package/esm/series/gauge/gauge.js.map +1 -1
  494. package/esm/series/gauge/interface.d.ts +3 -3
  495. package/esm/series/gauge/interface.js.map +1 -1
  496. package/esm/series/interface/common.d.ts +1 -1
  497. package/esm/series/interface/common.js.map +1 -1
  498. package/esm/series/link/tooltip-helper.js +1 -1
  499. package/esm/series/link/tooltip-helper.js.map +1 -1
  500. package/esm/series/polar/progress-like/progress-like.js +23 -25
  501. package/esm/series/polar/progress-like/progress-like.js.map +1 -1
  502. package/esm/series/progress/circular/circular.js +1 -3
  503. package/esm/series/progress/circular/circular.js.map +1 -1
  504. package/esm/series/progress/circular/constant.js +2 -2
  505. package/esm/series/progress/circular/constant.js.map +1 -1
  506. package/esm/series/progress/circular/interface.d.ts +5 -5
  507. package/esm/series/progress/circular/interface.js.map +1 -1
  508. package/esm/series/range-area/tooltip-helper.js.map +1 -1
  509. package/esm/series/sankey/tooltip-helper.js.map +1 -1
  510. package/esm/series/sunburst/sunburst.d.ts +1 -1
  511. package/esm/series/word-cloud/interface.js.map +1 -1
  512. package/esm/theme/builtin/common/mark.js +2 -1
  513. package/esm/theme/builtin/common/mark.js.map +1 -1
  514. package/esm/theme/builtin/common/series/box-plot.js +5 -0
  515. package/esm/theme/builtin/common/series/box-plot.js.map +1 -1
  516. package/esm/theme/builtin/common/series/rangeColumn.js +1 -0
  517. package/esm/theme/builtin/common/series/rangeColumn.js.map +1 -1
  518. package/esm/theme/builtin/common/series/waterfall.js +4 -1
  519. package/esm/theme/builtin/common/series/waterfall.js.map +1 -1
  520. package/esm/typings/spec/common.d.ts +4 -3
  521. package/esm/typings/spec/common.js.map +1 -1
  522. package/esm/typings/tooltip/line.d.ts +5 -2
  523. package/esm/typings/tooltip/line.js.map +1 -1
  524. package/esm/typings/tooltip/position.d.ts +21 -10
  525. package/esm/typings/tooltip/position.js.map +1 -1
  526. package/esm/typings/tooltip/shape.d.ts +2 -2
  527. package/esm/typings/tooltip/shape.js.map +1 -1
  528. package/esm/typings/tooltip/tooltip.d.ts +8 -8
  529. package/esm/typings/tooltip/tooltip.js.map +1 -1
  530. package/esm/typings/visual.d.ts +2 -4
  531. package/esm/typings/visual.js.map +1 -1
  532. package/esm/util/index.d.ts +1 -2
  533. package/esm/util/index.js +1 -3
  534. package/esm/util/index.js.map +1 -1
  535. package/esm/vchart-all.js +4 -2
  536. package/esm/vchart-all.js.map +1 -1
  537. package/esm/vchart-simple.js +1 -1
  538. package/esm/vchart-simple.js.map +1 -1
  539. package/package.json +17 -17
  540. package/cjs/component/axis/cartesian/util/time.d.ts +0 -80
  541. package/cjs/component/axis/cartesian/util/time.js +0 -204
  542. package/cjs/component/axis/cartesian/util/time.js.map +0 -1
  543. package/cjs/component/crosshair/util.js.map +0 -1
  544. package/cjs/mark/progress-arc.d.ts +0 -14
  545. package/cjs/mark/progress-arc.js +0 -55
  546. package/cjs/mark/progress-arc.js.map +0 -1
  547. package/esm/component/axis/cartesian/util/time.d.ts +0 -80
  548. package/esm/component/axis/cartesian/util/time.js +0 -196
  549. package/esm/component/axis/cartesian/util/time.js.map +0 -1
  550. package/esm/component/crosshair/util.js.map +0 -1
  551. package/esm/mark/progress-arc.d.ts +0 -14
  552. package/esm/mark/progress-arc.js +0 -47
  553. package/esm/mark/progress-arc.js.map +0 -1
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
5
  }), exports.BaseTooltipHandler = void 0;
6
6
 
7
- const base_1 = require("../../../constant/base"), constants_1 = require("./constants"), env_1 = require("../../../util/env"), common_1 = require("./utils/common"), position_1 = require("./utils/position"), compose_1 = require("./utils/compose"), get_spec_1 = require("./utils/get-spec"), vutils_1 = require("@visactor/vutils"), attribute_1 = require("./utils/attribute"), base_plugin_1 = require("../../base/base-plugin");
7
+ const base_1 = require("../../../constant/base"), constants_1 = require("./constants"), env_1 = require("../../../util/env"), common_1 = require("./utils/common"), position_1 = require("./utils/position"), compose_1 = require("./utils/compose"), get_spec_1 = require("./utils/get-spec"), vutils_1 = require("@visactor/vutils"), attribute_1 = require("./utils/attribute"), base_plugin_1 = require("../../base/base-plugin"), util_1 = require("../../../util");
8
8
 
9
9
  class BaseTooltipHandler extends base_plugin_1.BasePlugin {
10
10
  constructor() {
@@ -69,15 +69,17 @@ class BaseTooltipHandler extends base_plugin_1.BasePlugin {
69
69
  data: data
70
70
  });
71
71
  }, this._getActualTooltipPosition = (actualTooltip, params, tooltipBoxSize) => {
72
- var _a, _b, _c, _d, _e;
73
- const event = params.event, invalidPosition = {
72
+ var _a, _b, _c, _d, _e, _f, _g;
73
+ const event = params.event, firstDimensionInfo = null === (_a = params.dimensionInfo) || void 0 === _a ? void 0 : _a[0], invalidPosition = {
74
74
  x: 1 / 0,
75
75
  y: 1 / 0
76
- }, {offsetX: offsetX, offsetY: offsetY} = this._option, tooltipSpec = this._cacheViewSpec;
76
+ };
77
+ let {offsetX: offsetX, offsetY: offsetY} = this._option;
78
+ const tooltipSpec = this._cacheViewSpec;
77
79
  if (!tooltipSpec) return this._cacheTooltipPosition = void 0, invalidPosition;
78
80
  const {activeType: activeType, data: data} = actualTooltip, pattern = tooltipSpec[activeType], position = (0,
79
- common_1.getTooltipPatternValue)(pattern.position, data, params), positionMode = (0,
80
- common_1.getTooltipPatternValue)(pattern.positionMode, data, params), tooltipParentElement = this._getParentElement(tooltipSpec), {width: tooltipBoxWidth = 0, height: tooltipBoxHeight = 0} = null != tooltipBoxSize ? tooltipBoxSize : {}, isCanvas = "canvas" === tooltipSpec.renderMode, canvasRect = null === (_a = null == params ? void 0 : params.chart) || void 0 === _a ? void 0 : _a.getCanvasRect(), canvasWidth = null !== (_b = null == canvasRect ? void 0 : canvasRect.width) && void 0 !== _b ? _b : base_1.DEFAULT_CHART_WIDTH, canvasHeight = null !== (_c = null == canvasRect ? void 0 : canvasRect.height) && void 0 !== _c ? _c : base_1.DEFAULT_CHART_HEIGHT;
81
+ common_1.getTooltipPatternValue)(pattern.position, data, params), positionMode = null !== (_b = (0,
82
+ common_1.getTooltipPatternValue)(pattern.positionMode, data, params)) && void 0 !== _b ? _b : "mark" === activeType ? "mark" : "pointer", tooltipParentElement = this._getParentElement(tooltipSpec), {width: tooltipBoxWidth = 0, height: tooltipBoxHeight = 0} = null != tooltipBoxSize ? tooltipBoxSize : {}, isCanvas = "canvas" === tooltipSpec.renderMode, canvasRect = null === (_c = null == params ? void 0 : params.chart) || void 0 === _c ? void 0 : _c.getCanvasRect(), canvasWidth = null !== (_d = null == canvasRect ? void 0 : canvasRect.width) && void 0 !== _d ? _d : base_1.DEFAULT_CHART_WIDTH, canvasHeight = null !== (_e = null == canvasRect ? void 0 : canvasRect.height) && void 0 !== _e ? _e : base_1.DEFAULT_CHART_HEIGHT;
81
83
  let isFixedPosition = !1;
82
84
  const containerSize = {
83
85
  width: 0,
@@ -93,8 +95,8 @@ class BaseTooltipHandler extends base_plugin_1.BasePlugin {
93
95
  if ((0, env_1.isTrueBrowser)(this._env) && !tooltipSpec.confine) {
94
96
  if (containerSize.width = window.innerWidth, containerSize.height = window.innerHeight,
95
97
  !isCanvas) {
96
- tooltipParentElementRect = null !== (_d = null == tooltipParentElement ? void 0 : tooltipParentElement.getBoundingClientRect()) && void 0 !== _d ? _d : invalidPosition;
97
- const chartElement = null !== (_e = this._compiler.getCanvas()) && void 0 !== _e ? _e : this._chartContainer, chartElementRect = null == chartElement ? void 0 : chartElement.getBoundingClientRect();
98
+ tooltipParentElementRect = null !== (_f = null == tooltipParentElement ? void 0 : tooltipParentElement.getBoundingClientRect()) && void 0 !== _f ? _f : invalidPosition;
99
+ const chartElement = null !== (_g = this._compiler.getCanvas()) && void 0 !== _g ? _g : this._chartContainer, chartElementRect = null == chartElement ? void 0 : chartElement.getBoundingClientRect();
98
100
  relativePosOffset = {
99
101
  x: chartElementRect.x - tooltipParentElementRect.x,
100
102
  y: chartElementRect.y - tooltipParentElementRect.y
@@ -103,100 +105,157 @@ class BaseTooltipHandler extends base_plugin_1.BasePlugin {
103
105
  }
104
106
  } else containerSize.width = canvasWidth, containerSize.height = canvasHeight;
105
107
  const tooltipSizeScale = tooltipParentElementScale / chartElementScale;
106
- let left, top, right, bottom, x, y;
107
- if ((0, vutils_1.isObject)(position)) {
108
- const {left: posLeft, right: posRight, top: posTop, bottom: posBottom} = position;
109
- left = (0, position_1.getActualTooltipPositionValue)(posLeft, event), top = (0,
110
- position_1.getActualTooltipPositionValue)(posTop, event), right = (0, position_1.getActualTooltipPositionValue)(posRight, event),
111
- bottom = (0, position_1.getActualTooltipPositionValue)(posBottom, event);
112
- } else if ((0, vutils_1.isValid)(position) && "pointer" !== positionMode && "mark" === actualTooltip.activeType) {
113
- isFixedPosition = !0;
114
- const element = params.item, model = params.model, bounds = null == element ? void 0 : element.getBounds(), startPoint = null == model ? void 0 : model.getLayoutStartPoint();
115
- if (bounds && startPoint) {
116
- let {x1: x1, y1: y1, x2: x2, y2: y2} = bounds;
117
- switch (x1 += startPoint.x, x2 += startPoint.x, y1 += startPoint.y, y2 += startPoint.y,
118
- (0, position_1.getHorizontalPositionType)(position)) {
119
- case "left":
120
- left = x1 - tooltipBoxWidth * tooltipSizeScale - offsetX;
121
- break;
108
+ let left, top, right, bottom, pointerFixedPositionX = position, pointerFixedPositionY = position;
109
+ const processCartesianFixedPositionX = ({orient: orient, mode: mode, offset: offset}) => {
110
+ var _a;
111
+ let x1, x2;
112
+ const model = params.model, startPoint = null == model ? void 0 : model.getLayoutStartPoint();
113
+ if (offsetX = null != offset ? offset : offsetX, "mark" === mode) {
114
+ isFixedPosition = !0;
115
+ const element = params.item, bounds = null == element ? void 0 : element.getBounds();
116
+ bounds && startPoint && (x1 = bounds.x1 + startPoint.x, x2 = bounds.x2 + startPoint.x);
117
+ } else if ("crosshair" === mode && "cartesian" === (null === (_a = null == firstDimensionInfo ? void 0 : firstDimensionInfo.axis) || void 0 === _a ? void 0 : _a.getCoordinateType())) {
118
+ isFixedPosition = !0;
119
+ const rect = (0, position_1.getCartesianCrosshairRect)(params.dimensionInfo, (0,
120
+ util_1.getFirstSeries)(this._component.getRegions(), "cartesian"), startPoint);
121
+ rect && (x1 = rect.start.x, x2 = rect.end.x);
122
+ } else pointerFixedPositionX = orient;
123
+ if (isFixedPosition) switch ((0, position_1.getHorizontalPositionType)(orient)) {
124
+ case "left":
125
+ left = x1 - tooltipBoxWidth * tooltipSizeScale - offsetX;
126
+ break;
122
127
 
123
- case "right":
124
- left = x2 + offsetX;
125
- break;
128
+ case "right":
129
+ left = x2 + offsetX;
130
+ break;
126
131
 
127
- case "middle":
128
- left = (x1 + x2) / 2 - tooltipBoxWidth * tooltipSizeScale / 2;
129
- }
130
- switch ((0, position_1.getVerticalPositionType)(position)) {
131
- case "top":
132
- top = y1 - tooltipBoxHeight * tooltipSizeScale - offsetY;
133
- break;
132
+ case "center":
133
+ left = (x1 + x2) / 2 - tooltipBoxWidth * tooltipSizeScale / 2;
134
+ break;
134
135
 
135
- case "bottom":
136
- top = y2 + offsetY;
137
- break;
136
+ case "centerLeft":
137
+ left = (x1 + x2) / 2 - tooltipBoxWidth * tooltipSizeScale - offsetX;
138
+ break;
138
139
 
139
- case "middle":
140
- top = (y1 + y2) / 2 - tooltipBoxHeight * tooltipSizeScale / 2;
141
- }
140
+ case "centerRight":
141
+ left = (x1 + x2) / 2 + offsetX;
142
142
  }
143
- }
143
+ }, processCartesianFixedPositionY = ({orient: orient, mode: mode, offset: offset}) => {
144
+ var _a;
145
+ let y1, y2;
146
+ const model = params.model, startPoint = null == model ? void 0 : model.getLayoutStartPoint();
147
+ if (offsetY = null != offset ? offset : offsetY, "mark" === mode) {
148
+ isFixedPosition = !0;
149
+ const element = params.item, bounds = null == element ? void 0 : element.getBounds();
150
+ bounds && startPoint && (y1 = bounds.y1 + startPoint.y, y2 = bounds.y2 + startPoint.y);
151
+ } else if ("crosshair" === mode && "cartesian" === (null === (_a = null == firstDimensionInfo ? void 0 : firstDimensionInfo.axis) || void 0 === _a ? void 0 : _a.getCoordinateType())) {
152
+ isFixedPosition = !0;
153
+ const rect = (0, position_1.getCartesianCrosshairRect)(params.dimensionInfo, (0,
154
+ util_1.getFirstSeries)(this._component.getRegions(), "cartesian"), startPoint);
155
+ rect && (y1 = rect.start.y, y2 = rect.end.y);
156
+ } else pointerFixedPositionY = orient;
157
+ if (isFixedPosition) switch ((0, position_1.getVerticalPositionType)(orient)) {
158
+ case "top":
159
+ top = y1 - tooltipBoxHeight * tooltipSizeScale - offsetY;
160
+ break;
161
+
162
+ case "bottom":
163
+ top = y2 + offsetY;
164
+ break;
165
+
166
+ case "center":
167
+ top = (y1 + y2) / 2 - tooltipBoxHeight * tooltipSizeScale / 2;
168
+ break;
169
+
170
+ case "centerTop":
171
+ top = (y1 + y2) / 2 - tooltipBoxHeight * tooltipSizeScale - offsetY;
172
+ break;
173
+
174
+ case "centerBottom":
175
+ top = (y1 + y2) / 2 + offsetY;
176
+ }
177
+ };
178
+ if ((0, vutils_1.isObject)(position)) {
179
+ if ((0, position_1.isGlobalTooltipPositionPattern)(position)) {
180
+ const {left: posLeft, right: posRight, top: posTop, bottom: posBottom} = position;
181
+ left = (0, position_1.getActualTooltipPositionValue)(posLeft, event), top = (0,
182
+ position_1.getActualTooltipPositionValue)(posTop, event), right = (0, position_1.getActualTooltipPositionValue)(posRight, event),
183
+ bottom = (0, position_1.getActualTooltipPositionValue)(posBottom, event);
184
+ } else if ((0, position_1.isFixedTooltipPositionPattern)(position)) {
185
+ const {x: x, y: y} = position;
186
+ (0, vutils_1.isNumber)(x) || (0, vutils_1.isFunction)(x) ? left = (0, position_1.getActualTooltipPositionValue)(x, event) : processCartesianFixedPositionX(x),
187
+ (0, vutils_1.isNumber)(y) || (0, vutils_1.isFunction)(y) ? top = (0, position_1.getActualTooltipPositionValue)(y, event) : processCartesianFixedPositionY(y);
188
+ }
189
+ } else (0, vutils_1.isValid)(position) && (processCartesianFixedPositionX({
190
+ orient: position,
191
+ mode: positionMode
192
+ }), processCartesianFixedPositionY({
193
+ orient: position,
194
+ mode: positionMode
195
+ }));
196
+ let x, y;
144
197
  const {canvasX: canvasX, canvasY: canvasY} = event;
145
198
  if ((0, vutils_1.isValidNumber)(left)) x = left; else if ((0, vutils_1.isValidNumber)(right)) x = canvasWidth - tooltipBoxWidth * tooltipSizeScale - right; else {
146
199
  const x0 = canvasX;
147
- switch ((0, position_1.getHorizontalPositionType)(position, "right")) {
148
- case "middle":
200
+ switch ((0, position_1.getHorizontalPositionType)(pointerFixedPositionX, "right")) {
201
+ case "center":
149
202
  x = x0 - tooltipBoxWidth * tooltipSizeScale / 2;
150
203
  break;
151
204
 
152
205
  case "left":
206
+ case "centerLeft":
153
207
  x = x0 - tooltipBoxWidth * tooltipSizeScale - offsetX;
154
208
  break;
155
209
 
156
210
  case "right":
211
+ case "centerRight":
157
212
  x = x0 + offsetX;
158
213
  }
159
214
  }
160
215
  if ((0, vutils_1.isValidNumber)(top)) y = top; else if ((0, vutils_1.isValidNumber)(bottom)) y = canvasHeight - tooltipBoxHeight * tooltipSizeScale - bottom; else {
161
216
  const y0 = canvasY;
162
- switch ((0, position_1.getVerticalPositionType)(position, "bottom")) {
163
- case "middle":
217
+ switch ((0, position_1.getVerticalPositionType)(pointerFixedPositionY, "bottom")) {
218
+ case "center":
164
219
  y = y0 - tooltipBoxHeight * tooltipSizeScale / 2;
165
220
  break;
166
221
 
167
222
  case "top":
223
+ case "centerTop":
168
224
  y = y0 - tooltipBoxHeight * tooltipSizeScale - offsetY;
169
225
  break;
170
226
 
171
227
  case "bottom":
228
+ case "centerBottom":
172
229
  y = y0 + offsetY;
173
230
  }
174
231
  }
175
232
  x *= chartElementScale, y *= chartElementScale, (0, env_1.isTrueBrowser)(this._env) && (x += relativePosOffset.x,
176
233
  y += relativePosOffset.y), x /= tooltipParentElementScale, y /= tooltipParentElementScale;
177
234
  const {width: containerWidth, height: containerHeight} = containerSize, isLeftOut = () => x * tooltipParentElementScale + tooltipParentElementRect.x < 0, isRightOut = () => (x + tooltipBoxWidth) * tooltipParentElementScale + tooltipParentElementRect.x > containerWidth, isTopOut = () => y * tooltipParentElementScale + tooltipParentElementRect.y < 0, isBottomOut = () => (y + tooltipBoxHeight) * tooltipParentElementScale + tooltipParentElementRect.y > containerHeight, detectLeftFirst = () => {
178
- isLeftOut() && (isFixedPosition ? x = -tooltipParentElementRect.x / tooltipParentElementScale : "middle" === (0,
235
+ isLeftOut() && (isFixedPosition ? x = -tooltipParentElementRect.x / tooltipParentElementScale : "center" === (0,
179
236
  position_1.getHorizontalPositionType)(position, "right") ? x += offsetX + tooltipBoxWidth / 2 : x += 2 * offsetX + tooltipBoxWidth);
180
237
  }, detectLeftLast = () => {
181
238
  isLeftOut() && (x = -tooltipParentElementRect.x / tooltipParentElementScale);
182
239
  }, detectRightFirst = () => {
183
- isRightOut() && (isFixedPosition ? x = (containerWidth - tooltipParentElementRect.x) / tooltipParentElementScale - tooltipBoxWidth : "middle" === (0,
240
+ isRightOut() && (isFixedPosition ? x = (containerWidth - tooltipParentElementRect.x) / tooltipParentElementScale - tooltipBoxWidth : "center" === (0,
184
241
  position_1.getHorizontalPositionType)(position, "right") ? x -= offsetX + tooltipBoxWidth / 2 : x -= 2 * offsetX + tooltipBoxWidth);
185
242
  }, detectRightLast = () => {
186
243
  isRightOut() && (x = (containerWidth - tooltipParentElementRect.x) / tooltipParentElementScale - tooltipBoxWidth);
187
244
  }, detectTopFirst = () => {
188
- isTopOut() && (isFixedPosition ? y = -tooltipParentElementRect.y / tooltipParentElementScale : "middle" === (0,
245
+ isTopOut() && (isFixedPosition ? y = -tooltipParentElementRect.y / tooltipParentElementScale : "center" === (0,
189
246
  position_1.getVerticalPositionType)(position, "bottom") ? y += offsetY + tooltipBoxHeight / 2 : y += 2 * offsetY + tooltipBoxHeight);
190
247
  }, detectTopLast = () => {
191
248
  isTopOut() && (y = 0 - tooltipParentElementRect.y / tooltipParentElementScale);
192
249
  }, detectBottomFirst = () => {
193
- isBottomOut() && (isFixedPosition ? y = (containerHeight - tooltipParentElementRect.y) / tooltipParentElementScale - tooltipBoxHeight : "middle" === (0,
250
+ isBottomOut() && (isFixedPosition ? y = (containerHeight - tooltipParentElementRect.y) / tooltipParentElementScale - tooltipBoxHeight : "center" === (0,
194
251
  position_1.getVerticalPositionType)(position, "bottom") ? y -= offsetY + tooltipBoxHeight / 2 : y -= 2 * offsetY + tooltipBoxHeight);
195
252
  }, detectBottomLast = () => {
196
253
  isBottomOut() && (y = (containerHeight - tooltipParentElementRect.y) / tooltipParentElementScale - tooltipBoxHeight);
197
254
  };
198
255
  switch ((0, position_1.getHorizontalPositionType)(position, "right")) {
199
- case "middle":
256
+ case "center":
257
+ case "centerLeft":
258
+ case "centerRight":
200
259
  isLeftOut() ? (detectLeftFirst(), detectRightLast()) : (detectRightFirst(), detectLeftLast());
201
260
  break;
202
261
 
@@ -208,7 +267,9 @@ class BaseTooltipHandler extends base_plugin_1.BasePlugin {
208
267
  detectRightFirst(), detectLeftLast();
209
268
  }
210
269
  switch ((0, position_1.getVerticalPositionType)(position, "bottom")) {
211
- case "middle":
270
+ case "center":
271
+ case "centerTop":
272
+ case "centerBottom":
212
273
  isTopOut() ? (detectTopFirst(), detectBottomLast()) : (detectBottomFirst(), detectTopLast());
213
274
  break;
214
275
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/plugin/components/tooltip-handler/base.ts"],"names":[],"mappings":"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","file":"base.js","sourcesContent":["import { DEFAULT_CHART_WIDTH, DEFAULT_CHART_HEIGHT } from '../../../constant/base';\nimport type { Options } from './constants';\n// eslint-disable-next-line no-duplicate-imports\nimport { DEFAULT_OPTIONS } from './constants';\nimport type { Maybe, IPoint, ILayoutPoint, RenderMode } from '../../../typings';\n// eslint-disable-next-line no-duplicate-imports\nimport { TooltipPositionMode } from '../../../typings/tooltip/position';\n// eslint-disable-next-line no-duplicate-imports\nimport { isTrueBrowser } from '../../../util/env';\nimport type {\n TooltipData,\n IToolTipActual,\n TooltipActiveType,\n ITooltipHandler,\n ITooltipPattern,\n ITooltipPositionActual,\n ITooltipPositionPattern\n} from '../../../typings/tooltip';\n// eslint-disable-next-line no-duplicate-imports\nimport type { TooltipFixedPosition } from '../../../typings/tooltip';\nimport type { BaseEventParams } from '../../../event/interface';\nimport { getTooltipPatternValue, getScale } from './utils/common';\nimport { getActualTooltipPositionValue, getHorizontalPositionType, getVerticalPositionType } from './utils/position';\nimport { getShowContent } from './utils/compose';\nimport { getTooltipSpecForShow } from './utils/get-spec';\nimport type { ISeries } from '../../../series/interface';\nimport type { IGroup } from '@visactor/vrender-core';\nimport type { AABBBounds } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport {\n isNumber,\n isObject,\n isValidNumber,\n isValid,\n throttle,\n isNil,\n polygonContainPoint,\n pointInRect\n} from '@visactor/vutils';\nimport type { IElement } from '@visactor/vgrammar-core';\nimport type { ILayoutModel, IModel } from '../../../model/interface';\nimport type { Compiler } from '../../../compile/compiler';\nimport type { IContainerSize } from '@visactor/vrender-components';\nimport { getTooltipAttributes } from './utils/attribute';\nimport type { DimensionEventParams } from '../../../event/events/dimension/interface';\nimport type { IChartOption } from '../../../chart/interface';\nimport type {\n ITooltipSpec,\n Tooltip,\n TooltipActualTitleContent,\n TooltipHandlerParams\n} from '../../../component/tooltip';\n// eslint-disable-next-line no-duplicate-imports\nimport { TooltipResult } from '../../../component/tooltip';\nimport type { IComponentPlugin, IComponentPluginService } from '../interface';\nimport { BasePlugin } from '../../base/base-plugin';\nimport type { ITooltipAttributes } from './interface';\n\ntype ChangeTooltipFunc = (\n visible: boolean,\n params: TooltipHandlerParams,\n changePositionOnly?: boolean,\n activeType?: TooltipActiveType,\n data?: TooltipData\n) => TooltipResult;\n\ntype ChangeTooltipPositionFunc = (\n changePositionOnly: boolean,\n data: TooltipData,\n params: TooltipHandlerParams\n) => TooltipResult;\n\n/**\n * The tooltip handler class.\n */\nexport abstract class BaseTooltipHandler extends BasePlugin implements ITooltipHandler, IComponentPlugin {\n static readonly pluginType: 'component';\n static readonly specKey = 'tooltip';\n\n readonly type: string;\n\n /** 是否可见 */\n protected _visible = true;\n\n // protected _style: ITooltipStyle = {};\n\n protected _option: Options;\n\n protected _chartOption: IChartOption;\n\n protected _env: RenderMode;\n public get env() {\n return this._env;\n }\n\n protected _component: Tooltip;\n protected _attributes?: ITooltipAttributes | null = null;\n\n protected _chartContainer: Maybe<HTMLElement>;\n protected _compiler: Compiler;\n\n protected _cacheViewSpec: ITooltipSpec | undefined;\n protected _cacheActualTooltip: IToolTipActual | undefined;\n\n protected _isTooltipPaused: boolean;\n protected _isPointerEscaped: boolean;\n protected _cachePointerTimer: number;\n protected _cachePointerPosition: ILayoutPoint;\n protected _cacheTooltipPosition: ILayoutPoint;\n protected _cacheTooltipSize: IContainerSize;\n\n // tooltip 容器\n protected _container!: Maybe<IGroup | HTMLElement>;\n\n protected _isReleased: boolean = false;\n\n onAdd(service: IComponentPluginService<any>): void {\n super.onAdd(service);\n const component = service.component as Tooltip;\n this._component = component;\n this._chartOption = component.getOption() as any;\n this._env = this._chartOption.mode;\n this._chartContainer = this._chartOption.globalInstance.getContainer();\n this._compiler = component.getCompiler();\n this._initFromSpec();\n }\n\n showTooltip = (activeType: TooltipActiveType, data: TooltipData, params: TooltipHandlerParams) => {\n let changePositionOnly = !!params.changePositionOnly;\n if (!params.changePositionOnly || this._cacheActualTooltip?.activeType !== activeType) {\n changePositionOnly = false;\n this._clearCacheOfContent();\n }\n\n if (changePositionOnly && this._cacheViewSpec && this._cacheActualTooltip) {\n return this.changeTooltipPosition(changePositionOnly, data, params);\n }\n return this.changeTooltip(true, params, changePositionOnly, activeType, data);\n };\n\n /** 改变 tooltip 内容和位置(带 throttle 版本),返回是否遇到异常 */\n protected changeTooltip: ChangeTooltipFunc;\n\n /** 改变 tooltip 内容和位置(不带 throttle 版本),返回是否遇到异常 */\n protected _changeTooltip: ChangeTooltipFunc = (\n visible: boolean,\n params: TooltipHandlerParams,\n changePositionOnly?: boolean,\n activeType?: TooltipActiveType,\n data?: TooltipData\n ) => {\n const tooltipSpec = this._component.getSpec() as ITooltipSpec;\n if (this._isReleased || !tooltipSpec) {\n return TooltipResult.failed;\n }\n\n /** 关闭 tooltip */\n if (!visible) {\n this._clearAllCache();\n\n /** 用户自定义逻辑 */\n if (tooltipSpec.handler) {\n return tooltipSpec.handler.hideTooltip?.(params) ?? TooltipResult.success;\n }\n /** 默认逻辑 */\n this._updateTooltip(false, params);\n return TooltipResult.success;\n }\n\n if (isNil(activeType) || isNil(data)) {\n return TooltipResult.failed;\n }\n\n /** spec 预处理 */\n let spec: ITooltipSpec | undefined;\n if (changePositionOnly && this._cacheViewSpec) {\n spec = this._cacheViewSpec;\n } else {\n spec = getTooltipSpecForShow(\n activeType!,\n tooltipSpec,\n (params as BaseEventParams).model as ISeries,\n (params as DimensionEventParams).dimensionInfo\n );\n this._cacheViewSpec = spec;\n }\n\n if (spec.visible === false) {\n return TooltipResult.failed;\n }\n\n /** 用户自定义逻辑 */\n if (spec.handler) {\n return spec.handler.showTooltip?.(activeType!, data!, params) ?? TooltipResult.success;\n }\n\n /** 默认逻辑 */\n const pattern = spec[activeType!] as ITooltipPattern;\n if (!pattern) {\n return TooltipResult.failed;\n }\n\n // 合成 tooltip 内容\n let actualTooltip: IToolTipActual | undefined;\n if (changePositionOnly && this._cacheActualTooltip) {\n actualTooltip = this._cacheActualTooltip;\n } else {\n actualTooltip = this._getActualTooltipContent(pattern, data!, params);\n actualTooltip.title = pattern.updateTitle?.(actualTooltip.title, data, params) ?? actualTooltip.title;\n actualTooltip.content = pattern.updateContent?.(actualTooltip.content, data, params) ?? actualTooltip.content;\n }\n\n // 判断 tooltip 是否为空\n if (isNil(actualTooltip.title?.key) && isNil(actualTooltip.title?.value) && !actualTooltip.content?.length) {\n return TooltipResult.failed;\n }\n\n this._cacheActualTooltip = actualTooltip;\n return this._changeTooltipPosition(!!changePositionOnly, data!, params);\n };\n\n /** 改变 tooltip 位置(带 throttle 版本),返回是否遇到异常 */\n protected changeTooltipPosition: ChangeTooltipPositionFunc;\n\n /** 改变 tooltip 位置(不带 throttle 版本),返回是否遇到异常 */\n protected _changeTooltipPosition: ChangeTooltipPositionFunc = (\n changePositionOnly: boolean,\n data: TooltipData,\n params: TooltipHandlerParams\n ) => {\n if (this._isReleased) {\n return TooltipResult.failed;\n }\n\n const event = params.event as MouseEvent;\n const spec = this._cacheViewSpec;\n const actualTooltip = this._cacheActualTooltip;\n if (!spec || !actualTooltip) {\n return TooltipResult.failed;\n }\n\n if (spec.enterable) {\n if (!this._isPointerEscaped && this._isPointerMovingToTooltip(params)) {\n if (!this._isTooltipPaused) {\n this._isTooltipPaused = true;\n this._cachePointerTimer = setTimeout(() => {\n this._isPointerEscaped = true;\n }, 300) as unknown as number;\n }\n return TooltipResult.success;\n }\n this._isTooltipPaused = false;\n this._isPointerEscaped = false;\n clearTimeout(this._cachePointerTimer);\n this._cachePointerPosition = this._getPointerPositionRelativeToTooltipParent(params);\n }\n\n const activeType = actualTooltip.activeType;\n\n /** 用户自定义逻辑 */\n if (spec.handler) {\n return spec.handler.showTooltip?.(activeType, data, params) ?? TooltipResult.success;\n }\n\n /** 默认逻辑 */\n const pattern = spec[activeType];\n if (!pattern) {\n return TooltipResult.failed;\n }\n\n // 计算 tooltip 位置\n const position = this._getActualTooltipPosition(\n actualTooltip,\n params,\n this._getTooltipBoxSize(actualTooltip, changePositionOnly)\n );\n actualTooltip.position = position;\n if (pattern.updatePosition) {\n actualTooltip.position = pattern.updatePosition(actualTooltip.position, data, params);\n }\n\n // 判断 tooltip 可见性\n let tooltipVisible = pattern?.visible !== false;\n if (\n !data ||\n event.type === 'pointerout' ||\n !actualTooltip.visible ||\n (!actualTooltip.title && !actualTooltip.content)\n ) {\n tooltipVisible = false;\n }\n\n this._updateTooltip(\n tooltipVisible,\n {\n ...params,\n changePositionOnly\n },\n actualTooltip\n );\n return TooltipResult.success;\n };\n\n hideTooltip(params: TooltipHandlerParams): TooltipResult {\n return this.changeTooltip(false, params);\n }\n\n release(): void {\n this._clearAllCache();\n const spec = this._component.getSpec() ?? {};\n /** 用户自定义逻辑 */\n if (spec.handler) {\n spec.handler.release?.();\n return;\n }\n /** 默认逻辑 */\n this._removeTooltip();\n\n this._isReleased = true;\n }\n\n protected _clearAllCache() {\n this._clearCacheOfContent();\n this._clearCacheOfPosition();\n }\n\n protected _clearCacheOfContent() {\n this._cacheViewSpec = undefined;\n this._cacheActualTooltip = undefined;\n }\n\n protected _clearCacheOfPosition() {\n this._isTooltipPaused = false;\n this._isPointerEscaped = false;\n clearTimeout(this._cachePointerTimer);\n this._cachePointerTimer = -1;\n this._cachePointerPosition = undefined;\n this._cacheTooltipPosition = undefined;\n this._cacheTooltipSize = undefined;\n }\n\n /* -----需要子类继承的方法开始----- */\n\n protected abstract _updateTooltip(visible: boolean, params: TooltipHandlerParams, domData?: IToolTipActual): void;\n protected abstract _removeTooltip(): void;\n\n /* -----需要子类继承的方法结束----- */\n\n protected _throttle(callback: any) {\n const tooltipSpec = this._component.getSpec();\n let wait: number;\n if (isNumber(tooltipSpec.throttleInterval)) {\n wait = tooltipSpec.throttleInterval;\n } else {\n if (tooltipSpec.renderMode !== 'html' || !tooltipSpec.transitionDuration) {\n wait = 10;\n } else {\n wait = 50;\n }\n }\n return throttle(callback, wait);\n }\n\n protected _getDefaultOption(): Options {\n const { offset } = this._component.getSpec();\n return {\n ...DEFAULT_OPTIONS,\n offsetX: offset?.x ?? DEFAULT_OPTIONS.offsetX,\n offsetY: offset?.y ?? DEFAULT_OPTIONS.offsetY\n };\n }\n\n /**\n * 计算实际的 tooltip 内容\n * @param pattern\n * @param data\n * @param event\n */\n protected _getActualTooltipContent = (\n pattern: ITooltipPattern,\n data: TooltipData,\n params: TooltipHandlerParams\n ): IToolTipActual => {\n // 可见性\n const patternVisible = getTooltipPatternValue(pattern.visible, data, params);\n\n // 数据\n let tooltipContent: TooltipActualTitleContent | null = null;\n tooltipContent = getShowContent(pattern, data, params);\n\n const actualTooltip: IToolTipActual = {\n ...tooltipContent,\n visible: isValid(tooltipContent) ? patternVisible !== false : false, // 最终展示数据为 null 则不展示\n activeType: pattern.activeType,\n data\n };\n\n return actualTooltip;\n };\n\n /**\n * 计算实际的 tooltip 位置\n */\n protected _getActualTooltipPosition = (\n actualTooltip: IToolTipActual,\n params: TooltipHandlerParams,\n tooltipBoxSize: IContainerSize | undefined\n ): ITooltipPositionActual => {\n const event = params.event as MouseEvent;\n\n const invalidPosition = {\n x: Infinity,\n y: Infinity\n };\n\n const { offsetX, offsetY } = this._option;\n const tooltipSpec = this._cacheViewSpec;\n if (!tooltipSpec) {\n this._cacheTooltipPosition = undefined;\n return invalidPosition;\n }\n\n const { activeType, data } = actualTooltip;\n const pattern = tooltipSpec[activeType];\n const position = getTooltipPatternValue(pattern.position, data, params);\n const positionMode = getTooltipPatternValue(pattern.positionMode, data, params);\n const tooltipParentElement = this._getParentElement(tooltipSpec);\n const { width: tooltipBoxWidth = 0, height: tooltipBoxHeight = 0 } = tooltipBoxSize ?? {};\n\n const isCanvas = tooltipSpec.renderMode === 'canvas';\n const canvasRect = params?.chart?.getCanvasRect();\n const canvasWidth = canvasRect?.width ?? DEFAULT_CHART_WIDTH;\n const canvasHeight = canvasRect?.height ?? DEFAULT_CHART_HEIGHT;\n let isFixedPosition = false;\n\n const containerSize = {\n width: 0,\n height: 0\n };\n let relativePosOffset = { x: 0, y: 0 };\n let tooltipParentElementRect: IPoint | DOMRect = { x: 0, y: 0 };\n let chartElementScale = 1;\n let tooltipParentElementScale = 1;\n\n if (isTrueBrowser(this._env) && !tooltipSpec.confine) {\n // 只有在 browser 模式下才可以获取到 window 对象\n containerSize.width = window.innerWidth;\n containerSize.height = window.innerHeight;\n\n if (!isCanvas) {\n tooltipParentElementRect = tooltipParentElement?.getBoundingClientRect() ?? invalidPosition;\n const chartElement = (this._compiler.getCanvas() ?? this._chartContainer) as HTMLElement;\n const chartElementRect = chartElement?.getBoundingClientRect();\n relativePosOffset = {\n x: chartElementRect.x - tooltipParentElementRect.x,\n y: chartElementRect.y - tooltipParentElementRect.y\n };\n chartElementScale = getScale(chartElement, chartElementRect);\n tooltipParentElementScale = getScale(tooltipParentElement, tooltipParentElementRect as DOMRect);\n }\n } else {\n containerSize.width = canvasWidth;\n containerSize.height = canvasHeight;\n }\n const tooltipSizeScale = tooltipParentElementScale / chartElementScale;\n\n /* 一、计算 left、top、right、bottom */\n let left: number | undefined;\n let top: number | undefined;\n let right: number | undefined;\n let bottom: number | undefined;\n if (isObject(position)) {\n const { left: posLeft, right: posRight, top: posTop, bottom: posBottom } = position as ITooltipPositionPattern;\n left = getActualTooltipPositionValue(posLeft, event);\n top = getActualTooltipPositionValue(posTop, event);\n right = getActualTooltipPositionValue(posRight, event);\n bottom = getActualTooltipPositionValue(posBottom, event);\n } else if (isValid(position) && positionMode !== 'pointer' && actualTooltip.activeType === 'mark') {\n isFixedPosition = true;\n const element = params.item as IElement;\n const model = params.model as IModel;\n const bounds = element?.getBounds() as AABBBounds;\n const startPoint = (<ILayoutModel>(<unknown>model))?.getLayoutStartPoint();\n if (bounds && startPoint) {\n let { x1, y1, x2, y2 } = bounds;\n x1 += startPoint.x;\n x2 += startPoint.x;\n y1 += startPoint.y;\n y2 += startPoint.y;\n switch (getHorizontalPositionType(position)) {\n case 'left':\n left = x1 - tooltipBoxWidth * tooltipSizeScale - offsetX;\n break;\n case 'right':\n left = x2 + offsetX;\n break;\n case 'middle':\n left = (x1 + x2) / 2 - (tooltipBoxWidth * tooltipSizeScale) / 2;\n break;\n }\n switch (getVerticalPositionType(position)) {\n case 'top':\n top = y1 - tooltipBoxHeight * tooltipSizeScale - offsetY;\n break;\n case 'bottom':\n top = y2 + offsetY;\n break;\n case 'middle':\n top = (y1 + y2) / 2 - (tooltipBoxHeight * tooltipSizeScale) / 2;\n break;\n }\n }\n }\n\n /* 二、换算成 x 和 y */\n let x: number;\n let y: number;\n\n const { canvasX, canvasY } = event as any;\n if (isValidNumber(left)) {\n x = left;\n } else if (isValidNumber(right)) {\n x = canvasWidth - tooltipBoxWidth * tooltipSizeScale - right;\n } else {\n const x0 = canvasX;\n switch (getHorizontalPositionType(position as TooltipFixedPosition, 'right')) {\n case 'middle':\n x = x0 - (tooltipBoxWidth * tooltipSizeScale) / 2;\n break;\n case 'left':\n x = x0 - tooltipBoxWidth * tooltipSizeScale - offsetX;\n break;\n case 'right':\n x = x0 + offsetX;\n break;\n }\n }\n if (isValidNumber(top)) {\n y = top;\n } else if (isValidNumber(bottom)) {\n y = canvasHeight - tooltipBoxHeight * tooltipSizeScale - bottom;\n } else {\n const y0 = canvasY;\n switch (getVerticalPositionType(position as TooltipFixedPosition, 'bottom')) {\n case 'middle':\n y = y0 - (tooltipBoxHeight * tooltipSizeScale) / 2;\n break;\n case 'top':\n y = y0 - tooltipBoxHeight * tooltipSizeScale - offsetY;\n break;\n case 'bottom':\n y = y0 + offsetY;\n break;\n }\n }\n\n x *= chartElementScale;\n y *= chartElementScale;\n if (isTrueBrowser(this._env)) {\n x += relativePosOffset.x;\n y += relativePosOffset.y;\n }\n x /= tooltipParentElementScale;\n y /= tooltipParentElementScale;\n\n /* 三、确保tooltip在视区内 */\n const { width: containerWidth, height: containerHeight } = containerSize;\n\n const isLeftOut = () => x * tooltipParentElementScale + tooltipParentElementRect.x < 0;\n const isRightOut = () =>\n (x + tooltipBoxWidth) * tooltipParentElementScale + tooltipParentElementRect.x > containerWidth;\n const isTopOut = () => y * tooltipParentElementScale + tooltipParentElementRect.y < 0;\n const isBottomOut = () =>\n (y + tooltipBoxHeight) * tooltipParentElementScale + tooltipParentElementRect.y > containerHeight;\n\n const detectLeftFirst = () => {\n if (isLeftOut()) {\n // 位置不超出视区左界\n if (isFixedPosition) {\n x = -tooltipParentElementRect.x / tooltipParentElementScale;\n } else {\n if (getHorizontalPositionType(position as TooltipFixedPosition, 'right') === 'middle') {\n x += offsetX + tooltipBoxWidth / 2;\n } else {\n x += offsetX * 2 + tooltipBoxWidth;\n }\n }\n }\n };\n const detectLeftLast = () => {\n if (isLeftOut()) {\n // 位置不超出视区左界\n x = -tooltipParentElementRect.x / tooltipParentElementScale;\n }\n };\n const detectRightFirst = () => {\n if (isRightOut()) {\n // 位置不超出视区右界\n if (isFixedPosition) {\n x = (containerWidth - tooltipParentElementRect.x) / tooltipParentElementScale - tooltipBoxWidth;\n } else {\n if (getHorizontalPositionType(position as TooltipFixedPosition, 'right') === 'middle') {\n x -= offsetX + tooltipBoxWidth / 2;\n } else {\n x -= offsetX * 2 + tooltipBoxWidth;\n }\n }\n }\n };\n const detectRightLast = () => {\n if (isRightOut()) {\n // 位置不超出视区右界\n x = (containerWidth - tooltipParentElementRect.x) / tooltipParentElementScale - tooltipBoxWidth;\n }\n };\n const detectTopFirst = () => {\n if (isTopOut()) {\n // 位置不超出视区上界\n if (isFixedPosition) {\n y = -tooltipParentElementRect.y / tooltipParentElementScale;\n } else {\n if (getVerticalPositionType(position as TooltipFixedPosition, 'bottom') === 'middle') {\n y += offsetY + tooltipBoxHeight / 2;\n } else {\n y += offsetY * 2 + tooltipBoxHeight;\n }\n }\n }\n };\n const detectTopLast = () => {\n if (isTopOut()) {\n // 位置不超出视区上界\n y = 0 - tooltipParentElementRect.y / tooltipParentElementScale;\n }\n };\n const detectBottomFirst = () => {\n if (isBottomOut()) {\n // 位置不超出视区下界\n if (isFixedPosition) {\n y = (containerHeight - tooltipParentElementRect.y) / tooltipParentElementScale - tooltipBoxHeight;\n } else {\n if (getVerticalPositionType(position as TooltipFixedPosition, 'bottom') === 'middle') {\n y -= offsetY + tooltipBoxHeight / 2;\n } else {\n y -= offsetY * 2 + tooltipBoxHeight;\n }\n }\n }\n };\n const detectBottomLast = () => {\n if (isBottomOut()) {\n // 位置不超出视区下界\n y = (containerHeight - tooltipParentElementRect.y) / tooltipParentElementScale - tooltipBoxHeight;\n }\n };\n\n // 处理左右\n switch (getHorizontalPositionType(position as TooltipFixedPosition, 'right')) {\n case 'middle':\n if (isLeftOut()) {\n detectLeftFirst();\n detectRightLast();\n } else {\n detectRightFirst();\n detectLeftLast();\n }\n break;\n case 'left':\n detectLeftFirst();\n detectRightLast();\n break;\n case 'right':\n detectRightFirst();\n detectLeftLast();\n break;\n }\n // 处理上下\n switch (getVerticalPositionType(position as TooltipFixedPosition, 'bottom')) {\n case 'middle':\n if (isTopOut()) {\n detectTopFirst();\n detectBottomLast();\n } else {\n detectBottomFirst();\n detectTopLast();\n }\n break;\n case 'top':\n detectTopFirst();\n detectBottomLast();\n break;\n case 'bottom':\n detectBottomFirst();\n detectTopLast();\n break;\n }\n\n const result = { x, y };\n this._cacheTooltipPosition = result;\n this._cacheTooltipSize = { width: tooltipBoxWidth, height: tooltipBoxHeight };\n return result;\n };\n\n // 计算 tooltip 内容区域的宽高,并缓存结果\n protected _getTooltipBoxSize(actualTooltip: IToolTipActual, changePositionOnly: boolean): IContainerSize | undefined {\n if (!changePositionOnly || isNil(this._attributes)) {\n const chartTheme = this._chartOption?.getTheme() ?? {};\n this._attributes = getTooltipAttributes(actualTooltip, this._component.getSpec(), chartTheme);\n }\n const { panel, panelDomHeight } = this._attributes ?? {};\n return {\n width: panel?.width,\n height: panelDomHeight ?? panel?.height\n };\n }\n\n protected _getPointerPositionRelativeToTooltipParent(params: TooltipHandlerParams) {\n let { canvasX: x, canvasY: y } = params.event;\n\n const invalidPosition = {\n x: Infinity,\n y: Infinity\n };\n\n const tooltipSpec = this._cacheViewSpec;\n const isCanvas = tooltipSpec.renderMode === 'canvas';\n const tooltipParentElement = this._getParentElement(tooltipSpec);\n\n let relativePosOffset = { x: 0, y: 0 };\n let tooltipParentElementRect: IPoint | DOMRect = { x: 0, y: 0 };\n let chartElementScale = 1;\n let tooltipParentElementScale = 1;\n\n if (isTrueBrowser(this._env) && !tooltipSpec.confine) {\n if (!isCanvas) {\n tooltipParentElementRect = tooltipParentElement?.getBoundingClientRect() ?? invalidPosition;\n const chartElement = (this._compiler.getCanvas() ?? this._chartContainer) as HTMLElement;\n const chartElementRect = chartElement?.getBoundingClientRect();\n relativePosOffset = {\n x: chartElementRect.x - tooltipParentElementRect.x,\n y: chartElementRect.y - tooltipParentElementRect.y\n };\n chartElementScale = getScale(chartElement, chartElementRect);\n tooltipParentElementScale = getScale(tooltipParentElement, tooltipParentElementRect as DOMRect);\n }\n }\n\n x *= chartElementScale;\n y *= chartElementScale;\n if (isTrueBrowser(this._env)) {\n x += relativePosOffset.x;\n y += relativePosOffset.y;\n }\n x /= tooltipParentElementScale;\n y /= tooltipParentElementScale;\n return { x, y };\n }\n\n protected _isPointerMovingToTooltip(params: TooltipHandlerParams) {\n if (!this._cacheTooltipPosition || !this._cacheTooltipSize || !this._cachePointerPosition) {\n return false;\n }\n const { width: tooltipWidth, height: tooltipHeight } = this._cacheTooltipSize;\n const { x: tooltipX = 0, y: tooltipY } = this._cacheTooltipPosition;\n\n const pos = this._getPointerPositionRelativeToTooltipParent(params);\n\n if (\n pointInRect(\n pos,\n {\n x1: tooltipX,\n y1: tooltipY,\n x2: tooltipX + tooltipWidth,\n y2: tooltipY + tooltipHeight\n },\n false\n )\n ) {\n return true;\n }\n\n // 确定 tooltip 四端点坐标\n const a = { x: tooltipX, y: tooltipY };\n const b = { x: a.x + tooltipWidth, y: a.y };\n const c = { x: a.x, y: a.y + tooltipHeight };\n const d = { x: b.x, y: c.y };\n const oldPos = this._cachePointerPosition;\n\n return (\n polygonContainPoint([oldPos, a, b], pos.x, pos.y) ||\n polygonContainPoint([oldPos, c, d], pos.x, pos.y) ||\n polygonContainPoint([oldPos, a, d], pos.x, pos.y) ||\n polygonContainPoint([oldPos, b, c], pos.x, pos.y)\n );\n }\n\n protected _getParentElement(spec: ITooltipSpec): HTMLElement {\n return spec.parentElement as any;\n }\n\n getTooltipContainer() {\n return this._container;\n }\n\n protected _initFromSpec() {\n this._option = this._getDefaultOption();\n // 为方法加防抖\n this.changeTooltip = this._throttle(this._changeTooltip) as any;\n this.changeTooltipPosition = this._throttle(this._changeTooltipPosition) as any;\n }\n\n reInit() {\n this._initFromSpec();\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/plugin/components/tooltip-handler/base.ts"],"names":[],"mappings":"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","file":"base.js","sourcesContent":["import { DEFAULT_CHART_WIDTH, DEFAULT_CHART_HEIGHT } from '../../../constant/base';\nimport type { Options } from './constants';\n// eslint-disable-next-line no-duplicate-imports\nimport { DEFAULT_OPTIONS } from './constants';\nimport type { Maybe, IPoint, ILayoutPoint, RenderMode } from '../../../typings';\n// eslint-disable-next-line no-duplicate-imports\nimport type { ITooltipPositionFixedValue } from '../../../typings/tooltip/position';\n// eslint-disable-next-line no-duplicate-imports\nimport { isTrueBrowser } from '../../../util/env';\nimport type {\n TooltipData,\n ITooltipActual,\n TooltipActiveType,\n ITooltipHandler,\n ITooltipPattern,\n ITooltipPositionActual,\n IGlobalTooltipPositionPattern\n} from '../../../typings/tooltip';\n// eslint-disable-next-line no-duplicate-imports\nimport type { TooltipFixedPosition } from '../../../typings/tooltip';\nimport type { BaseEventParams } from '../../../event/interface';\nimport { getTooltipPatternValue, getScale } from './utils/common';\nimport {\n getActualTooltipPositionValue,\n getCartesianCrosshairRect,\n getHorizontalPositionType,\n getVerticalPositionType,\n isFixedTooltipPositionPattern,\n isGlobalTooltipPositionPattern\n} from './utils/position';\nimport { getShowContent } from './utils/compose';\nimport { getTooltipSpecForShow } from './utils/get-spec';\nimport type { ICartesianSeries, ISeries } from '../../../series/interface';\nimport type { IGroup } from '@visactor/vrender-core';\nimport type { AABBBounds } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport {\n isNumber,\n isObject,\n isValidNumber,\n isValid,\n throttle,\n isNil,\n polygonContainPoint,\n pointInRect,\n isFunction\n} from '@visactor/vutils';\nimport type { IElement } from '@visactor/vgrammar-core';\nimport type { ILayoutModel } from '../../../model/interface';\nimport type { Compiler } from '../../../compile/compiler';\nimport type { IContainerSize } from '@visactor/vrender-components';\nimport { getTooltipAttributes } from './utils/attribute';\nimport type { DimensionEventParams } from '../../../event/events/dimension/interface';\nimport type { IChartOption } from '../../../chart/interface';\nimport type {\n ITooltipSpec,\n Tooltip,\n TooltipActualTitleContent,\n TooltipHandlerParams\n} from '../../../component/tooltip';\n// eslint-disable-next-line no-duplicate-imports\nimport { TooltipResult } from '../../../component/tooltip';\nimport type { IComponentPlugin, IComponentPluginService } from '../interface';\nimport { BasePlugin } from '../../base/base-plugin';\nimport type { ITooltipAttributes } from './interface';\nimport { getFirstSeries } from '../../../util';\n\ntype ChangeTooltipFunc = (\n visible: boolean,\n params: TooltipHandlerParams,\n changePositionOnly?: boolean,\n activeType?: TooltipActiveType,\n data?: TooltipData\n) => TooltipResult;\n\ntype ChangeTooltipPositionFunc = (\n changePositionOnly: boolean,\n data: TooltipData,\n params: TooltipHandlerParams\n) => TooltipResult;\n\n/**\n * The tooltip handler class.\n */\nexport abstract class BaseTooltipHandler extends BasePlugin implements ITooltipHandler, IComponentPlugin {\n static readonly pluginType: 'component';\n static readonly specKey = 'tooltip';\n\n readonly type: string;\n\n /** 是否可见 */\n protected _visible = true;\n\n // protected _style: ITooltipStyle = {};\n\n protected _option: Options;\n\n protected _chartOption: IChartOption;\n\n protected _env: RenderMode;\n public get env() {\n return this._env;\n }\n\n protected _component: Tooltip;\n protected _attributes?: ITooltipAttributes | null = null;\n\n protected _chartContainer: Maybe<HTMLElement>;\n protected _compiler: Compiler;\n\n protected _cacheViewSpec: ITooltipSpec | undefined;\n protected _cacheActualTooltip: ITooltipActual | undefined;\n\n protected _isTooltipPaused: boolean;\n protected _isPointerEscaped: boolean;\n protected _cachePointerTimer: number;\n protected _cachePointerPosition: ILayoutPoint;\n protected _cacheTooltipPosition: ILayoutPoint;\n protected _cacheTooltipSize: IContainerSize;\n\n // tooltip 容器\n protected _container!: Maybe<IGroup | HTMLElement>;\n\n protected _isReleased: boolean = false;\n\n onAdd(service: IComponentPluginService<any>): void {\n super.onAdd(service);\n const component = service.component as Tooltip;\n this._component = component;\n this._chartOption = component.getOption() as any;\n this._env = this._chartOption.mode;\n this._chartContainer = this._chartOption.globalInstance.getContainer();\n this._compiler = component.getCompiler();\n this._initFromSpec();\n }\n\n showTooltip = (activeType: TooltipActiveType, data: TooltipData, params: TooltipHandlerParams) => {\n let changePositionOnly = !!params.changePositionOnly;\n if (!params.changePositionOnly || this._cacheActualTooltip?.activeType !== activeType) {\n changePositionOnly = false;\n this._clearCacheOfContent();\n }\n\n if (changePositionOnly && this._cacheViewSpec && this._cacheActualTooltip) {\n return this.changeTooltipPosition(changePositionOnly, data, params);\n }\n return this.changeTooltip(true, params, changePositionOnly, activeType, data);\n };\n\n /** 改变 tooltip 内容和位置(带 throttle 版本),返回是否遇到异常 */\n protected changeTooltip: ChangeTooltipFunc;\n\n /** 改变 tooltip 内容和位置(不带 throttle 版本),返回是否遇到异常 */\n protected _changeTooltip: ChangeTooltipFunc = (\n visible: boolean,\n params: TooltipHandlerParams,\n changePositionOnly?: boolean,\n activeType?: TooltipActiveType,\n data?: TooltipData\n ) => {\n const tooltipSpec = this._component.getSpec() as ITooltipSpec;\n if (this._isReleased || !tooltipSpec) {\n return TooltipResult.failed;\n }\n\n /** 关闭 tooltip */\n if (!visible) {\n this._clearAllCache();\n\n /** 用户自定义逻辑 */\n if (tooltipSpec.handler) {\n return tooltipSpec.handler.hideTooltip?.(params) ?? TooltipResult.success;\n }\n /** 默认逻辑 */\n this._updateTooltip(false, params);\n return TooltipResult.success;\n }\n\n if (isNil(activeType) || isNil(data)) {\n return TooltipResult.failed;\n }\n\n /** spec 预处理 */\n let spec: ITooltipSpec | undefined;\n if (changePositionOnly && this._cacheViewSpec) {\n spec = this._cacheViewSpec;\n } else {\n spec = getTooltipSpecForShow(\n activeType!,\n tooltipSpec,\n (params as BaseEventParams).model as ISeries,\n (params as DimensionEventParams).dimensionInfo\n );\n this._cacheViewSpec = spec;\n }\n\n if (spec.visible === false) {\n return TooltipResult.failed;\n }\n\n /** 用户自定义逻辑 */\n if (spec.handler) {\n return spec.handler.showTooltip?.(activeType!, data!, params) ?? TooltipResult.success;\n }\n\n /** 默认逻辑 */\n const pattern = spec[activeType!] as ITooltipPattern;\n if (!pattern) {\n return TooltipResult.failed;\n }\n\n // 合成 tooltip 内容\n let actualTooltip: ITooltipActual | undefined;\n if (changePositionOnly && this._cacheActualTooltip) {\n actualTooltip = this._cacheActualTooltip;\n } else {\n actualTooltip = this._getActualTooltipContent(pattern, data!, params);\n actualTooltip.title = pattern.updateTitle?.(actualTooltip.title, data, params) ?? actualTooltip.title;\n actualTooltip.content = pattern.updateContent?.(actualTooltip.content, data, params) ?? actualTooltip.content;\n }\n\n // 判断 tooltip 是否为空\n if (isNil(actualTooltip.title?.key) && isNil(actualTooltip.title?.value) && !actualTooltip.content?.length) {\n return TooltipResult.failed;\n }\n\n this._cacheActualTooltip = actualTooltip;\n return this._changeTooltipPosition(!!changePositionOnly, data!, params);\n };\n\n /** 改变 tooltip 位置(带 throttle 版本),返回是否遇到异常 */\n protected changeTooltipPosition: ChangeTooltipPositionFunc;\n\n /** 改变 tooltip 位置(不带 throttle 版本),返回是否遇到异常 */\n protected _changeTooltipPosition: ChangeTooltipPositionFunc = (\n changePositionOnly: boolean,\n data: TooltipData,\n params: TooltipHandlerParams\n ) => {\n if (this._isReleased) {\n return TooltipResult.failed;\n }\n\n const event = params.event as MouseEvent;\n const spec = this._cacheViewSpec;\n const actualTooltip = this._cacheActualTooltip;\n if (!spec || !actualTooltip) {\n return TooltipResult.failed;\n }\n\n if (spec.enterable) {\n if (!this._isPointerEscaped && this._isPointerMovingToTooltip(params)) {\n if (!this._isTooltipPaused) {\n this._isTooltipPaused = true;\n this._cachePointerTimer = setTimeout(() => {\n this._isPointerEscaped = true;\n }, 300) as unknown as number;\n }\n return TooltipResult.success;\n }\n this._isTooltipPaused = false;\n this._isPointerEscaped = false;\n clearTimeout(this._cachePointerTimer);\n this._cachePointerPosition = this._getPointerPositionRelativeToTooltipParent(params);\n }\n\n const activeType = actualTooltip.activeType;\n\n /** 用户自定义逻辑 */\n if (spec.handler) {\n return spec.handler.showTooltip?.(activeType, data, params) ?? TooltipResult.success;\n }\n\n /** 默认逻辑 */\n const pattern = spec[activeType];\n if (!pattern) {\n return TooltipResult.failed;\n }\n\n // 计算 tooltip 位置\n const position = this._getActualTooltipPosition(\n actualTooltip,\n params,\n this._getTooltipBoxSize(actualTooltip, changePositionOnly)\n );\n actualTooltip.position = position;\n if (pattern.updatePosition) {\n actualTooltip.position = pattern.updatePosition(actualTooltip.position, data, params);\n }\n\n // 判断 tooltip 可见性\n let tooltipVisible = pattern?.visible !== false;\n if (\n !data ||\n event.type === 'pointerout' ||\n !actualTooltip.visible ||\n (!actualTooltip.title && !actualTooltip.content)\n ) {\n tooltipVisible = false;\n }\n\n this._updateTooltip(\n tooltipVisible,\n {\n ...params,\n changePositionOnly\n },\n actualTooltip\n );\n return TooltipResult.success;\n };\n\n hideTooltip(params: TooltipHandlerParams): TooltipResult {\n return this.changeTooltip(false, params);\n }\n\n release(): void {\n this._clearAllCache();\n const spec = this._component.getSpec() ?? {};\n /** 用户自定义逻辑 */\n if (spec.handler) {\n spec.handler.release?.();\n return;\n }\n /** 默认逻辑 */\n this._removeTooltip();\n\n this._isReleased = true;\n }\n\n protected _clearAllCache() {\n this._clearCacheOfContent();\n this._clearCacheOfPosition();\n }\n\n protected _clearCacheOfContent() {\n this._cacheViewSpec = undefined;\n this._cacheActualTooltip = undefined;\n }\n\n protected _clearCacheOfPosition() {\n this._isTooltipPaused = false;\n this._isPointerEscaped = false;\n clearTimeout(this._cachePointerTimer);\n this._cachePointerTimer = -1;\n this._cachePointerPosition = undefined;\n this._cacheTooltipPosition = undefined;\n this._cacheTooltipSize = undefined;\n }\n\n /* -----需要子类继承的方法开始----- */\n\n protected abstract _updateTooltip(visible: boolean, params: TooltipHandlerParams, domData?: ITooltipActual): void;\n protected abstract _removeTooltip(): void;\n\n /* -----需要子类继承的方法结束----- */\n\n protected _throttle(callback: any) {\n const tooltipSpec = this._component.getSpec();\n let wait: number;\n if (isNumber(tooltipSpec.throttleInterval)) {\n wait = tooltipSpec.throttleInterval;\n } else {\n if (tooltipSpec.renderMode !== 'html' || !tooltipSpec.transitionDuration) {\n wait = 10;\n } else {\n wait = 50;\n }\n }\n return throttle(callback, wait);\n }\n\n protected _getDefaultOption(): Options {\n const { offset } = this._component.getSpec();\n return {\n ...DEFAULT_OPTIONS,\n offsetX: offset?.x ?? DEFAULT_OPTIONS.offsetX,\n offsetY: offset?.y ?? DEFAULT_OPTIONS.offsetY\n };\n }\n\n /**\n * 计算实际的 tooltip 内容\n * @param pattern\n * @param data\n * @param event\n */\n protected _getActualTooltipContent = (\n pattern: ITooltipPattern,\n data: TooltipData,\n params: TooltipHandlerParams\n ): ITooltipActual => {\n // 可见性\n const patternVisible = getTooltipPatternValue(pattern.visible, data, params);\n\n // 数据\n let tooltipContent: TooltipActualTitleContent | null = null;\n tooltipContent = getShowContent(pattern, data, params);\n\n const actualTooltip: ITooltipActual = {\n ...tooltipContent,\n visible: isValid(tooltipContent) ? patternVisible !== false : false, // 最终展示数据为 null 则不展示\n activeType: pattern.activeType,\n data\n };\n\n return actualTooltip;\n };\n\n /**\n * 计算实际的 tooltip 位置\n */\n protected _getActualTooltipPosition = (\n actualTooltip: ITooltipActual,\n params: TooltipHandlerParams,\n tooltipBoxSize: IContainerSize | undefined\n ): ITooltipPositionActual => {\n const event = params.event as MouseEvent;\n const firstDimensionInfo = params.dimensionInfo?.[0];\n\n const invalidPosition = {\n x: Infinity,\n y: Infinity\n };\n\n let { offsetX, offsetY } = this._option;\n const tooltipSpec = this._cacheViewSpec;\n if (!tooltipSpec) {\n this._cacheTooltipPosition = undefined;\n return invalidPosition;\n }\n\n const { activeType, data } = actualTooltip;\n const pattern = tooltipSpec[activeType];\n const position = getTooltipPatternValue(pattern.position, data, params);\n const positionMode =\n getTooltipPatternValue(pattern.positionMode, data, params) ?? (activeType === 'mark' ? 'mark' : 'pointer');\n const tooltipParentElement = this._getParentElement(tooltipSpec);\n const { width: tooltipBoxWidth = 0, height: tooltipBoxHeight = 0 } = tooltipBoxSize ?? {};\n\n const isCanvas = tooltipSpec.renderMode === 'canvas';\n const canvasRect = params?.chart?.getCanvasRect();\n const canvasWidth = canvasRect?.width ?? DEFAULT_CHART_WIDTH;\n const canvasHeight = canvasRect?.height ?? DEFAULT_CHART_HEIGHT;\n let isFixedPosition = false;\n\n const containerSize = {\n width: 0,\n height: 0\n };\n let relativePosOffset = { x: 0, y: 0 };\n let tooltipParentElementRect: IPoint | DOMRect = { x: 0, y: 0 };\n let chartElementScale = 1;\n let tooltipParentElementScale = 1;\n\n if (isTrueBrowser(this._env) && !tooltipSpec.confine) {\n // 只有在 browser 模式下才可以获取到 window 对象\n containerSize.width = window.innerWidth;\n containerSize.height = window.innerHeight;\n\n if (!isCanvas) {\n tooltipParentElementRect = tooltipParentElement?.getBoundingClientRect() ?? invalidPosition;\n const chartElement = (this._compiler.getCanvas() ?? this._chartContainer) as HTMLElement;\n const chartElementRect = chartElement?.getBoundingClientRect();\n relativePosOffset = {\n x: chartElementRect.x - tooltipParentElementRect.x,\n y: chartElementRect.y - tooltipParentElementRect.y\n };\n chartElementScale = getScale(chartElement, chartElementRect);\n tooltipParentElementScale = getScale(tooltipParentElement, tooltipParentElementRect as DOMRect);\n }\n } else {\n containerSize.width = canvasWidth;\n containerSize.height = canvasHeight;\n }\n const tooltipSizeScale = tooltipParentElementScale / chartElementScale;\n\n /* 一、计算 left、top、right、bottom */\n let left: number | undefined;\n let top: number | undefined;\n let right: number | undefined;\n let bottom: number | undefined;\n\n let pointerFixedPositionX: TooltipFixedPosition = position as any;\n let pointerFixedPositionY: TooltipFixedPosition = position as any;\n\n const processCartesianFixedPositionX = ({ orient, mode, offset }: ITooltipPositionFixedValue) => {\n let x1: number;\n let x2: number;\n const model = params.model as ILayoutModel;\n const startPoint = model?.getLayoutStartPoint();\n offsetX = offset ?? offsetX;\n\n if (mode === 'mark') {\n isFixedPosition = true;\n const element = params.item as IElement;\n const bounds = element?.getBounds() as AABBBounds;\n if (bounds && startPoint) {\n x1 = bounds.x1 + startPoint.x;\n x2 = bounds.x2 + startPoint.x;\n }\n } else if (mode === 'crosshair' && firstDimensionInfo?.axis?.getCoordinateType() === 'cartesian') {\n isFixedPosition = true;\n const rect = getCartesianCrosshairRect(\n params.dimensionInfo,\n getFirstSeries(this._component.getRegions(), 'cartesian') as ICartesianSeries,\n startPoint\n );\n if (rect) {\n x1 = rect.start.x;\n x2 = rect.end.x;\n }\n } else {\n pointerFixedPositionX = orient;\n }\n\n if (isFixedPosition) {\n switch (getHorizontalPositionType(orient)) {\n case 'left':\n left = x1 - tooltipBoxWidth * tooltipSizeScale - offsetX;\n break;\n case 'right':\n left = x2 + offsetX;\n break;\n case 'center':\n left = (x1 + x2) / 2 - (tooltipBoxWidth * tooltipSizeScale) / 2;\n break;\n case 'centerLeft':\n left = (x1 + x2) / 2 - tooltipBoxWidth * tooltipSizeScale - offsetX;\n break;\n case 'centerRight':\n left = (x1 + x2) / 2 + offsetX;\n break;\n }\n }\n };\n const processCartesianFixedPositionY = ({ orient, mode, offset }: ITooltipPositionFixedValue) => {\n let y1: number;\n let y2: number;\n const model = params.model as ILayoutModel;\n const startPoint = model?.getLayoutStartPoint();\n offsetY = offset ?? offsetY;\n\n if (mode === 'mark') {\n isFixedPosition = true;\n const element = params.item as IElement;\n const bounds = element?.getBounds() as AABBBounds;\n if (bounds && startPoint) {\n y1 = bounds.y1 + startPoint.y;\n y2 = bounds.y2 + startPoint.y;\n }\n } else if (mode === 'crosshair' && firstDimensionInfo?.axis?.getCoordinateType() === 'cartesian') {\n isFixedPosition = true;\n const rect = getCartesianCrosshairRect(\n params.dimensionInfo,\n getFirstSeries(this._component.getRegions(), 'cartesian') as ICartesianSeries,\n startPoint\n );\n if (rect) {\n y1 = rect.start.y;\n y2 = rect.end.y;\n }\n } else {\n pointerFixedPositionY = orient;\n }\n\n if (isFixedPosition) {\n switch (getVerticalPositionType(orient)) {\n case 'top':\n top = y1 - tooltipBoxHeight * tooltipSizeScale - offsetY;\n break;\n case 'bottom':\n top = y2 + offsetY;\n break;\n case 'center':\n top = (y1 + y2) / 2 - (tooltipBoxHeight * tooltipSizeScale) / 2;\n break;\n case 'centerTop':\n top = (y1 + y2) / 2 - tooltipBoxHeight * tooltipSizeScale - offsetY;\n break;\n case 'centerBottom':\n top = (y1 + y2) / 2 + offsetY;\n break;\n }\n }\n };\n\n if (isObject(position)) {\n if (isGlobalTooltipPositionPattern(position)) {\n const {\n left: posLeft,\n right: posRight,\n top: posTop,\n bottom: posBottom\n } = position as IGlobalTooltipPositionPattern;\n left = getActualTooltipPositionValue(posLeft, event);\n top = getActualTooltipPositionValue(posTop, event);\n right = getActualTooltipPositionValue(posRight, event);\n bottom = getActualTooltipPositionValue(posBottom, event);\n } else if (isFixedTooltipPositionPattern(position)) {\n const { x, y } = position;\n if (isNumber(x) || isFunction(x)) {\n left = getActualTooltipPositionValue(x, event);\n } else {\n processCartesianFixedPositionX(x);\n }\n if (isNumber(y) || isFunction(y)) {\n top = getActualTooltipPositionValue(y, event);\n } else {\n processCartesianFixedPositionY(y);\n }\n }\n } else if (isValid(position)) {\n processCartesianFixedPositionX({ orient: position, mode: positionMode });\n processCartesianFixedPositionY({ orient: position, mode: positionMode });\n }\n\n /* 二、换算成 x 和 y */\n let x: number;\n let y: number;\n\n const { canvasX, canvasY } = event as any;\n if (isValidNumber(left)) {\n x = left;\n } else if (isValidNumber(right)) {\n x = canvasWidth - tooltipBoxWidth * tooltipSizeScale - right;\n } else {\n const x0 = canvasX;\n switch (getHorizontalPositionType(pointerFixedPositionX, 'right')) {\n case 'center':\n x = x0 - (tooltipBoxWidth * tooltipSizeScale) / 2;\n break;\n case 'left':\n case 'centerLeft':\n x = x0 - tooltipBoxWidth * tooltipSizeScale - offsetX;\n break;\n case 'right':\n case 'centerRight':\n x = x0 + offsetX;\n break;\n }\n }\n if (isValidNumber(top)) {\n y = top;\n } else if (isValidNumber(bottom)) {\n y = canvasHeight - tooltipBoxHeight * tooltipSizeScale - bottom;\n } else {\n const y0 = canvasY;\n switch (getVerticalPositionType(pointerFixedPositionY, 'bottom')) {\n case 'center':\n y = y0 - (tooltipBoxHeight * tooltipSizeScale) / 2;\n break;\n case 'top':\n case 'centerTop':\n y = y0 - tooltipBoxHeight * tooltipSizeScale - offsetY;\n break;\n case 'bottom':\n case 'centerBottom':\n y = y0 + offsetY;\n break;\n }\n }\n\n x *= chartElementScale;\n y *= chartElementScale;\n if (isTrueBrowser(this._env)) {\n x += relativePosOffset.x;\n y += relativePosOffset.y;\n }\n x /= tooltipParentElementScale;\n y /= tooltipParentElementScale;\n\n /* 三、确保tooltip在视区内 */\n const { width: containerWidth, height: containerHeight } = containerSize;\n\n const isLeftOut = () => x * tooltipParentElementScale + tooltipParentElementRect.x < 0;\n const isRightOut = () =>\n (x + tooltipBoxWidth) * tooltipParentElementScale + tooltipParentElementRect.x > containerWidth;\n const isTopOut = () => y * tooltipParentElementScale + tooltipParentElementRect.y < 0;\n const isBottomOut = () =>\n (y + tooltipBoxHeight) * tooltipParentElementScale + tooltipParentElementRect.y > containerHeight;\n\n const detectLeftFirst = () => {\n if (isLeftOut()) {\n // 位置不超出视区左界\n if (isFixedPosition) {\n x = -tooltipParentElementRect.x / tooltipParentElementScale;\n } else {\n if (getHorizontalPositionType(position as TooltipFixedPosition, 'right') === 'center') {\n x += offsetX + tooltipBoxWidth / 2;\n } else {\n x += offsetX * 2 + tooltipBoxWidth;\n }\n }\n }\n };\n const detectLeftLast = () => {\n if (isLeftOut()) {\n // 位置不超出视区左界\n x = -tooltipParentElementRect.x / tooltipParentElementScale;\n }\n };\n const detectRightFirst = () => {\n if (isRightOut()) {\n // 位置不超出视区右界\n if (isFixedPosition) {\n x = (containerWidth - tooltipParentElementRect.x) / tooltipParentElementScale - tooltipBoxWidth;\n } else {\n if (getHorizontalPositionType(position as TooltipFixedPosition, 'right') === 'center') {\n x -= offsetX + tooltipBoxWidth / 2;\n } else {\n x -= offsetX * 2 + tooltipBoxWidth;\n }\n }\n }\n };\n const detectRightLast = () => {\n if (isRightOut()) {\n // 位置不超出视区右界\n x = (containerWidth - tooltipParentElementRect.x) / tooltipParentElementScale - tooltipBoxWidth;\n }\n };\n const detectTopFirst = () => {\n if (isTopOut()) {\n // 位置不超出视区上界\n if (isFixedPosition) {\n y = -tooltipParentElementRect.y / tooltipParentElementScale;\n } else {\n if (getVerticalPositionType(position as TooltipFixedPosition, 'bottom') === 'center') {\n y += offsetY + tooltipBoxHeight / 2;\n } else {\n y += offsetY * 2 + tooltipBoxHeight;\n }\n }\n }\n };\n const detectTopLast = () => {\n if (isTopOut()) {\n // 位置不超出视区上界\n y = 0 - tooltipParentElementRect.y / tooltipParentElementScale;\n }\n };\n const detectBottomFirst = () => {\n if (isBottomOut()) {\n // 位置不超出视区下界\n if (isFixedPosition) {\n y = (containerHeight - tooltipParentElementRect.y) / tooltipParentElementScale - tooltipBoxHeight;\n } else {\n if (getVerticalPositionType(position as TooltipFixedPosition, 'bottom') === 'center') {\n y -= offsetY + tooltipBoxHeight / 2;\n } else {\n y -= offsetY * 2 + tooltipBoxHeight;\n }\n }\n }\n };\n const detectBottomLast = () => {\n if (isBottomOut()) {\n // 位置不超出视区下界\n y = (containerHeight - tooltipParentElementRect.y) / tooltipParentElementScale - tooltipBoxHeight;\n }\n };\n\n // 处理左右\n switch (getHorizontalPositionType(position as TooltipFixedPosition, 'right')) {\n case 'center':\n case 'centerLeft':\n case 'centerRight':\n if (isLeftOut()) {\n detectLeftFirst();\n detectRightLast();\n } else {\n detectRightFirst();\n detectLeftLast();\n }\n break;\n case 'left':\n detectLeftFirst();\n detectRightLast();\n break;\n case 'right':\n detectRightFirst();\n detectLeftLast();\n break;\n }\n // 处理上下\n switch (getVerticalPositionType(position as TooltipFixedPosition, 'bottom')) {\n case 'center':\n case 'centerTop':\n case 'centerBottom':\n if (isTopOut()) {\n detectTopFirst();\n detectBottomLast();\n } else {\n detectBottomFirst();\n detectTopLast();\n }\n break;\n case 'top':\n detectTopFirst();\n detectBottomLast();\n break;\n case 'bottom':\n detectBottomFirst();\n detectTopLast();\n break;\n }\n\n const result = { x, y };\n this._cacheTooltipPosition = result;\n this._cacheTooltipSize = { width: tooltipBoxWidth, height: tooltipBoxHeight };\n return result;\n };\n\n // 计算 tooltip 内容区域的宽高,并缓存结果\n protected _getTooltipBoxSize(actualTooltip: ITooltipActual, changePositionOnly: boolean): IContainerSize | undefined {\n if (!changePositionOnly || isNil(this._attributes)) {\n const chartTheme = this._chartOption?.getTheme() ?? {};\n this._attributes = getTooltipAttributes(actualTooltip, this._component.getSpec(), chartTheme);\n }\n const { panel, panelDomHeight } = this._attributes ?? {};\n return {\n width: panel?.width,\n height: panelDomHeight ?? panel?.height\n };\n }\n\n protected _getPointerPositionRelativeToTooltipParent(params: TooltipHandlerParams) {\n let { canvasX: x, canvasY: y } = params.event;\n\n const invalidPosition = {\n x: Infinity,\n y: Infinity\n };\n\n const tooltipSpec = this._cacheViewSpec;\n const isCanvas = tooltipSpec.renderMode === 'canvas';\n const tooltipParentElement = this._getParentElement(tooltipSpec);\n\n let relativePosOffset = { x: 0, y: 0 };\n let tooltipParentElementRect: IPoint | DOMRect = { x: 0, y: 0 };\n let chartElementScale = 1;\n let tooltipParentElementScale = 1;\n\n if (isTrueBrowser(this._env) && !tooltipSpec.confine) {\n if (!isCanvas) {\n tooltipParentElementRect = tooltipParentElement?.getBoundingClientRect() ?? invalidPosition;\n const chartElement = (this._compiler.getCanvas() ?? this._chartContainer) as HTMLElement;\n const chartElementRect = chartElement?.getBoundingClientRect();\n relativePosOffset = {\n x: chartElementRect.x - tooltipParentElementRect.x,\n y: chartElementRect.y - tooltipParentElementRect.y\n };\n chartElementScale = getScale(chartElement, chartElementRect);\n tooltipParentElementScale = getScale(tooltipParentElement, tooltipParentElementRect as DOMRect);\n }\n }\n\n x *= chartElementScale;\n y *= chartElementScale;\n if (isTrueBrowser(this._env)) {\n x += relativePosOffset.x;\n y += relativePosOffset.y;\n }\n x /= tooltipParentElementScale;\n y /= tooltipParentElementScale;\n return { x, y };\n }\n\n protected _isPointerMovingToTooltip(params: TooltipHandlerParams) {\n if (!this._cacheTooltipPosition || !this._cacheTooltipSize || !this._cachePointerPosition) {\n return false;\n }\n const { width: tooltipWidth, height: tooltipHeight } = this._cacheTooltipSize;\n const { x: tooltipX = 0, y: tooltipY } = this._cacheTooltipPosition;\n\n const pos = this._getPointerPositionRelativeToTooltipParent(params);\n\n if (\n pointInRect(\n pos,\n {\n x1: tooltipX,\n y1: tooltipY,\n x2: tooltipX + tooltipWidth,\n y2: tooltipY + tooltipHeight\n },\n false\n )\n ) {\n return true;\n }\n\n // 确定 tooltip 四端点坐标\n const a = { x: tooltipX, y: tooltipY };\n const b = { x: a.x + tooltipWidth, y: a.y };\n const c = { x: a.x, y: a.y + tooltipHeight };\n const d = { x: b.x, y: c.y };\n const oldPos = this._cachePointerPosition;\n\n return (\n polygonContainPoint([oldPos, a, b], pos.x, pos.y) ||\n polygonContainPoint([oldPos, c, d], pos.x, pos.y) ||\n polygonContainPoint([oldPos, a, d], pos.x, pos.y) ||\n polygonContainPoint([oldPos, b, c], pos.x, pos.y)\n );\n }\n\n protected _getParentElement(spec: ITooltipSpec): HTMLElement {\n return spec.parentElement as any;\n }\n\n getTooltipContainer() {\n return this._container;\n }\n\n protected _initFromSpec() {\n this._option = this._getDefaultOption();\n // 为方法加防抖\n this.changeTooltip = this._throttle(this._changeTooltip) as any;\n this.changeTooltipPosition = this._throttle(this._changeTooltipPosition) as any;\n }\n\n reInit() {\n this._initFromSpec();\n }\n}\n"]}
@@ -1,4 +1,4 @@
1
- import type { IToolTipActual } from '../../../../typings/tooltip';
1
+ import type { ITooltipActual } from '../../../../typings/tooltip';
2
2
  import { BaseTooltipHandler } from '../base';
3
3
  import { Tooltip as TooltipComponent } from '@visactor/vrender-components';
4
4
  import type { TooltipHandlerParams } from '../../../../component/tooltip';
@@ -15,7 +15,7 @@ export declare class CanvasTooltipHandler extends BaseTooltipHandler {
15
15
  private _initTooltipComponent;
16
16
  private _getLayer;
17
17
  protected _removeTooltip(): void;
18
- protected _updateTooltip(visible: boolean, params: TooltipHandlerParams, actualTooltip: IToolTipActual): void;
18
+ protected _updateTooltip(visible: boolean, params: TooltipHandlerParams, actualTooltip: ITooltipActual): void;
19
19
  isTooltipShown(): boolean;
20
20
  release(): void;
21
21
  }
@@ -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 { 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,10 +1,10 @@
1
- import type { IToolTipLineActual } from '../../../typings';
1
+ import type { ITooltipLineActual } from '../../../typings';
2
2
  import { escapeHTML } from './utils/common';
3
3
  export declare const TOOLTIP_EL_CLASS_NAME = "vchart-tooltip-element";
4
4
  export declare const TOOLTIP_CONTAINER_EL_CLASS_NAME = "vchart-tooltip-container";
5
5
  export declare const TOOLTIP_MAX_LINE_COUNT = 20;
6
6
  export declare const TOOLTIP_EMPTY_STRING = "";
7
- export declare const TOOLTIP_OTHERS_LINE: IToolTipLineActual;
7
+ export declare const TOOLTIP_OTHERS_LINE: ITooltipLineActual;
8
8
  export declare const DEFAULT_OPTIONS: {
9
9
  offsetX: number;
10
10
  offsetY: number;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/plugin/components/tooltip-handler/constants.ts"],"names":[],"mappings":";;;AAAA,gDAA2C;AAE3C,2CAA4C;AAE/B,QAAA,qBAAqB,GAAG,wBAAwB,CAAC;AACjD,QAAA,+BAA+B,GAAG,0BAA0B,CAAC;AAC7D,QAAA,sBAAsB,GAAG,EAAE,CAAC;AAC5B,QAAA,oBAAoB,GAAG,EAAE,CAAC;AAE1B,QAAA,mBAAmB,GAAG;IAEjC,GAAG,EAAE,IAAI;IACT,KAAK,EAAE,KAAK;CACS,CAAC;AAEX,QAAA,eAAe,GAAG;IAI7B,OAAO,EAAE,EAAE;IAKX,OAAO,EAAE,EAAE;IAOX,QAAQ,EAAE,mBAAU;CACrB,CAAC;AAMF,MAAa,kBAAkB;;AAA/B,gDAGC;AAFQ,sBAAG,GAAG,GAAG,iBAAM,sBAAsB,CAAC;AACtC,yBAAM,GAAG,GAAG,iBAAM,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":";;;AAAA,gDAA2C;AAE3C,2CAA4C;AAE/B,QAAA,qBAAqB,GAAG,wBAAwB,CAAC;AACjD,QAAA,+BAA+B,GAAG,0BAA0B,CAAC;AAC7D,QAAA,sBAAsB,GAAG,EAAE,CAAC;AAC5B,QAAA,oBAAoB,GAAG,EAAE,CAAC;AAE1B,QAAA,mBAAmB,GAAG;IAEjC,GAAG,EAAE,IAAI;IACT,KAAK,EAAE,KAAK;CACS,CAAC;AAEX,QAAA,eAAe,GAAG;IAI7B,OAAO,EAAE,EAAE;IAKX,OAAO,EAAE,EAAE;IAOX,QAAQ,EAAE,mBAAU;CACrB,CAAC;AAMF,MAAa,kBAAkB;;AAA/B,gDAGC;AAFQ,sBAAG,GAAG,GAAG,iBAAM,sBAAsB,CAAC;AACtC,yBAAM,GAAG,GAAG,iBAAM,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"]}