@visactor/vchart 1.12.7 → 1.12.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (309) hide show
  1. package/build/es5/index.js +1 -1
  2. package/build/index.js +1117 -1665
  3. package/build/index.min.js +1 -1
  4. package/build/tsconfig.tsbuildinfo +1 -1
  5. package/cjs/chart/base/base-chart.js.map +1 -1
  6. package/cjs/chart/gauge/interface.d.ts +1 -1
  7. package/cjs/chart/gauge/interface.js.map +1 -1
  8. package/cjs/chart/treemap/interface.d.ts +1 -1
  9. package/cjs/chart/treemap/interface.js.map +1 -1
  10. package/cjs/chart/venn/interface.d.ts +2 -2
  11. package/cjs/chart/venn/interface.js.map +1 -1
  12. package/cjs/compile/compilable-base.js +1 -2
  13. package/cjs/compile/util.js +2 -1
  14. package/cjs/component/axis/base-axis.js +1 -1
  15. package/cjs/component/axis/base-axis.js.map +1 -1
  16. package/cjs/component/axis/cartesian/axis.js +5 -4
  17. package/cjs/component/axis/cartesian/axis.js.map +1 -1
  18. package/cjs/component/axis/cartesian/interface/common.d.ts +1 -0
  19. package/cjs/component/axis/cartesian/interface/common.js.map +1 -1
  20. package/cjs/component/axis/polar/axis.js.map +1 -1
  21. package/cjs/component/geo/geo-coordinate.js +5 -2
  22. package/cjs/component/geo/geo-coordinate.js.map +1 -1
  23. package/cjs/component/interface/index.d.ts +0 -1
  24. package/cjs/component/interface/index.js +1 -1
  25. package/cjs/component/interface/index.js.map +1 -1
  26. package/cjs/component/label/util.js +1 -1
  27. package/cjs/component/label/util.js.map +1 -1
  28. package/cjs/component/title/interface/spec.d.ts +3 -3
  29. package/cjs/component/title/interface/spec.js.map +1 -1
  30. package/cjs/component/tooltip/constant.d.ts +5 -4
  31. package/cjs/component/tooltip/constant.js +7 -7
  32. package/cjs/component/tooltip/constant.js.map +1 -1
  33. package/cjs/component/tooltip/interface/common.d.ts +1 -1
  34. package/cjs/component/tooltip/interface/common.js.map +1 -1
  35. package/cjs/component/tooltip/interface/spec.d.ts +8 -0
  36. package/cjs/component/tooltip/interface/spec.js.map +1 -1
  37. package/cjs/component/tooltip/interface/theme.d.ts +2 -2
  38. package/cjs/component/tooltip/interface/theme.js.map +1 -1
  39. package/cjs/component/tooltip/processor/base.d.ts +3 -5
  40. package/cjs/component/tooltip/processor/base.js +24 -27
  41. package/cjs/component/tooltip/processor/base.js.map +1 -1
  42. package/cjs/component/tooltip/processor/group-tooltip.js +1 -1
  43. package/cjs/component/tooltip/processor/group-tooltip.js.map +1 -1
  44. package/cjs/component/tooltip/processor/mark-tooltip.js +2 -2
  45. package/cjs/component/tooltip/processor/mark-tooltip.js.map +1 -1
  46. package/cjs/component/tooltip/tooltip-transformer.js +0 -1
  47. package/cjs/component/tooltip/tooltip-transformer.js.map +1 -1
  48. package/cjs/component/tooltip/tooltip.d.ts +9 -4
  49. package/cjs/component/tooltip/tooltip.js +64 -53
  50. package/cjs/component/tooltip/tooltip.js.map +1 -1
  51. package/cjs/component/tooltip/utils/common.d.ts +6 -4
  52. package/cjs/component/tooltip/utils/common.js +52 -7
  53. package/cjs/component/tooltip/utils/common.js.map +1 -1
  54. package/cjs/component/tooltip/utils/get-spec.d.ts +4 -4
  55. package/cjs/component/tooltip/utils/get-spec.js +20 -82
  56. package/cjs/component/tooltip/utils/get-spec.js.map +1 -1
  57. package/cjs/component/tooltip/utils/get-value.d.ts +1 -2
  58. package/cjs/component/tooltip/utils/get-value.js +2 -12
  59. package/cjs/component/tooltip/utils/get-value.js.map +1 -1
  60. package/cjs/component/tooltip/utils/index.d.ts +0 -1
  61. package/cjs/component/tooltip/utils/index.js +1 -2
  62. package/cjs/component/tooltip/utils/index.js.map +1 -1
  63. package/cjs/constant/correlation.js +2 -1
  64. package/cjs/constant/layout.js +1 -2
  65. package/cjs/core/index.d.ts +1 -1
  66. package/cjs/core/index.js +1 -1
  67. package/cjs/core/index.js.map +1 -1
  68. package/cjs/core/vchart.js +14 -11
  69. package/cjs/core/vchart.js.map +1 -1
  70. package/cjs/data/transforms/pie.d.ts +3 -0
  71. package/cjs/data/transforms/pie.js +8 -3
  72. package/cjs/data/transforms/pie.js.map +1 -1
  73. package/cjs/model/interface.d.ts +14 -0
  74. package/cjs/model/interface.js.map +1 -1
  75. package/cjs/plugin/components/tooltip-handler/base.d.ts +1 -13
  76. package/cjs/plugin/components/tooltip-handler/base.js +83 -220
  77. package/cjs/plugin/components/tooltip-handler/base.js.map +1 -1
  78. package/cjs/plugin/components/tooltip-handler/canvas/canvas-tooltip-handler.js +1 -1
  79. package/cjs/plugin/components/tooltip-handler/canvas/canvas-tooltip-handler.js.map +1 -1
  80. package/cjs/plugin/components/tooltip-handler/dom/dom-tooltip-handler.d.ts +0 -1
  81. package/cjs/plugin/components/tooltip-handler/dom/dom-tooltip-handler.js +7 -19
  82. package/cjs/plugin/components/tooltip-handler/dom/dom-tooltip-handler.js.map +1 -1
  83. package/cjs/plugin/components/tooltip-handler/dom/model/content-column-model.js +16 -14
  84. package/cjs/plugin/components/tooltip-handler/dom/model/content-column-model.js.map +1 -1
  85. package/cjs/plugin/components/tooltip-handler/dom/model/title-model.js +2 -2
  86. package/cjs/plugin/components/tooltip-handler/dom/model/title-model.js.map +1 -1
  87. package/cjs/plugin/components/tooltip-handler/interface/style.d.ts +1 -2
  88. package/cjs/plugin/components/tooltip-handler/interface/style.js.map +1 -1
  89. package/cjs/plugin/components/tooltip-handler/utils/attribute.js +7 -7
  90. package/cjs/plugin/components/tooltip-handler/utils/attribute.js.map +1 -1
  91. package/cjs/plugin/components/tooltip-handler/utils/common.js.map +1 -1
  92. package/cjs/plugin/components/tooltip-handler/utils/position.d.ts +3 -5
  93. package/cjs/plugin/components/tooltip-handler/utils/position.js +22 -29
  94. package/cjs/plugin/components/tooltip-handler/utils/position.js.map +1 -1
  95. package/cjs/region/interface.d.ts +3 -1
  96. package/cjs/region/interface.js.map +1 -1
  97. package/cjs/series/base/base-series.js +1 -1
  98. package/cjs/series/base/base-series.js.map +1 -1
  99. package/cjs/series/base/tooltip-helper.d.ts +30 -6
  100. package/cjs/series/base/tooltip-helper.js +80 -73
  101. package/cjs/series/base/tooltip-helper.js.map +1 -1
  102. package/cjs/series/box-plot/tooltip-helper.d.ts +2 -2
  103. package/cjs/series/box-plot/tooltip-helper.js +26 -67
  104. package/cjs/series/box-plot/tooltip-helper.js.map +1 -1
  105. package/cjs/series/cartesian/cartesian.d.ts +1 -1
  106. package/cjs/series/circle-packing/circle-packing.js +1 -2
  107. package/cjs/series/circle-packing/circle-packing.js.map +1 -1
  108. package/cjs/series/dot/tooltip-helper.d.ts +8 -2
  109. package/cjs/series/dot/tooltip-helper.js +42 -41
  110. package/cjs/series/dot/tooltip-helper.js.map +1 -1
  111. package/cjs/series/gauge/pointer-tooltip-helper.d.ts +2 -1
  112. package/cjs/series/gauge/pointer-tooltip-helper.js +3 -8
  113. package/cjs/series/gauge/pointer-tooltip-helper.js.map +1 -1
  114. package/cjs/series/heatmap/tooltip-helper.d.ts +2 -3
  115. package/cjs/series/heatmap/tooltip-helper.js +3 -5
  116. package/cjs/series/heatmap/tooltip-helper.js.map +1 -1
  117. package/cjs/series/interface/tooltip-helper.d.ts +5 -4
  118. package/cjs/series/interface/tooltip-helper.js.map +1 -1
  119. package/cjs/series/link/tooltip-helper.d.ts +5 -2
  120. package/cjs/series/link/tooltip-helper.js +26 -27
  121. package/cjs/series/link/tooltip-helper.js.map +1 -1
  122. package/cjs/series/liquid/tooltip-helper.d.ts +4 -5
  123. package/cjs/series/liquid/tooltip-helper.js +2 -22
  124. package/cjs/series/liquid/tooltip-helper.js.map +1 -1
  125. package/cjs/series/pie/pie.js +6 -2
  126. package/cjs/series/pie/pie.js.map +1 -1
  127. package/cjs/series/progress/linear/tooltip-helper.d.ts +2 -3
  128. package/cjs/series/progress/linear/tooltip-helper.js +2 -11
  129. package/cjs/series/progress/linear/tooltip-helper.js.map +1 -1
  130. package/cjs/series/range-area/tooltip-helper.d.ts +1 -3
  131. package/cjs/series/range-area/tooltip-helper.js +2 -50
  132. package/cjs/series/range-area/tooltip-helper.js.map +1 -1
  133. package/cjs/series/range-column/tooltip-helper.d.ts +1 -2
  134. package/cjs/series/range-column/tooltip-helper.js +2 -19
  135. package/cjs/series/range-column/tooltip-helper.js.map +1 -1
  136. package/cjs/series/sankey/sankey.d.ts +1 -1
  137. package/cjs/series/sankey/tooltip-helper.d.ts +3 -3
  138. package/cjs/series/sankey/tooltip-helper.js +10 -57
  139. package/cjs/series/sankey/tooltip-helper.js.map +1 -1
  140. package/cjs/typings/spec/common.d.ts +3 -3
  141. package/cjs/typings/spec/common.js.map +1 -1
  142. package/cjs/typings/tooltip/position.d.ts +1 -0
  143. package/cjs/typings/tooltip/position.js.map +1 -1
  144. package/cjs/typings/tooltip/shape.d.ts +0 -1
  145. package/cjs/typings/tooltip/shape.js.map +1 -1
  146. package/cjs/typings/tooltip/tooltip.d.ts +7 -0
  147. package/cjs/typings/tooltip/tooltip.js.map +1 -1
  148. package/esm/chart/base/base-chart.js.map +1 -1
  149. package/esm/chart/gauge/interface.d.ts +1 -1
  150. package/esm/chart/gauge/interface.js.map +1 -1
  151. package/esm/chart/treemap/interface.d.ts +1 -1
  152. package/esm/chart/treemap/interface.js.map +1 -1
  153. package/esm/chart/venn/interface.d.ts +2 -2
  154. package/esm/chart/venn/interface.js.map +1 -1
  155. package/esm/compile/compilable-base.js +1 -2
  156. package/esm/compile/util.js +2 -1
  157. package/esm/component/axis/base-axis.js +1 -1
  158. package/esm/component/axis/base-axis.js.map +1 -1
  159. package/esm/component/axis/cartesian/axis.js +5 -4
  160. package/esm/component/axis/cartesian/axis.js.map +1 -1
  161. package/esm/component/axis/cartesian/interface/common.d.ts +1 -0
  162. package/esm/component/axis/cartesian/interface/common.js.map +1 -1
  163. package/esm/component/axis/polar/axis.js.map +1 -1
  164. package/esm/component/geo/geo-coordinate.js +5 -2
  165. package/esm/component/geo/geo-coordinate.js.map +1 -1
  166. package/esm/component/interface/index.d.ts +0 -1
  167. package/esm/component/interface/index.js +0 -2
  168. package/esm/component/interface/index.js.map +1 -1
  169. package/esm/component/label/util.js +1 -1
  170. package/esm/component/label/util.js.map +1 -1
  171. package/esm/component/title/interface/spec.d.ts +3 -3
  172. package/esm/component/title/interface/spec.js.map +1 -1
  173. package/esm/component/tooltip/constant.d.ts +5 -4
  174. package/esm/component/tooltip/constant.js +6 -3
  175. package/esm/component/tooltip/constant.js.map +1 -1
  176. package/esm/component/tooltip/interface/common.d.ts +1 -1
  177. package/esm/component/tooltip/interface/common.js.map +1 -1
  178. package/esm/component/tooltip/interface/spec.d.ts +8 -0
  179. package/esm/component/tooltip/interface/spec.js.map +1 -1
  180. package/esm/component/tooltip/interface/theme.d.ts +2 -2
  181. package/esm/component/tooltip/interface/theme.js.map +1 -1
  182. package/esm/component/tooltip/processor/base.d.ts +3 -5
  183. package/esm/component/tooltip/processor/base.js +24 -28
  184. package/esm/component/tooltip/processor/base.js.map +1 -1
  185. package/esm/component/tooltip/processor/group-tooltip.js +1 -1
  186. package/esm/component/tooltip/processor/group-tooltip.js.map +1 -1
  187. package/esm/component/tooltip/processor/mark-tooltip.js +2 -2
  188. package/esm/component/tooltip/processor/mark-tooltip.js.map +1 -1
  189. package/esm/component/tooltip/tooltip-transformer.js +0 -1
  190. package/esm/component/tooltip/tooltip-transformer.js.map +1 -1
  191. package/esm/component/tooltip/tooltip.d.ts +9 -4
  192. package/esm/component/tooltip/tooltip.js +66 -54
  193. package/esm/component/tooltip/tooltip.js.map +1 -1
  194. package/esm/component/tooltip/utils/common.d.ts +6 -4
  195. package/esm/component/tooltip/utils/common.js +46 -5
  196. package/esm/component/tooltip/utils/common.js.map +1 -1
  197. package/esm/component/tooltip/utils/get-spec.d.ts +4 -4
  198. package/esm/component/tooltip/utils/get-spec.js +24 -80
  199. package/esm/component/tooltip/utils/get-spec.js.map +1 -1
  200. package/esm/component/tooltip/utils/get-value.d.ts +1 -2
  201. package/esm/component/tooltip/utils/get-value.js +1 -9
  202. package/esm/component/tooltip/utils/get-value.js.map +1 -1
  203. package/esm/component/tooltip/utils/index.d.ts +0 -1
  204. package/esm/component/tooltip/utils/index.js +0 -2
  205. package/esm/component/tooltip/utils/index.js.map +1 -1
  206. package/esm/constant/correlation.js +2 -1
  207. package/esm/constant/layout.js +1 -2
  208. package/esm/core/index.d.ts +1 -1
  209. package/esm/core/index.js +1 -1
  210. package/esm/core/index.js.map +1 -1
  211. package/esm/core/vchart.js +14 -10
  212. package/esm/core/vchart.js.map +1 -1
  213. package/esm/data/transforms/pie.d.ts +3 -0
  214. package/esm/data/transforms/pie.js +6 -3
  215. package/esm/data/transforms/pie.js.map +1 -1
  216. package/esm/model/interface.d.ts +14 -0
  217. package/esm/model/interface.js.map +1 -1
  218. package/esm/plugin/components/tooltip-handler/base.d.ts +1 -13
  219. package/esm/plugin/components/tooltip-handler/base.js +79 -212
  220. package/esm/plugin/components/tooltip-handler/base.js.map +1 -1
  221. package/esm/plugin/components/tooltip-handler/canvas/canvas-tooltip-handler.js +1 -1
  222. package/esm/plugin/components/tooltip-handler/canvas/canvas-tooltip-handler.js.map +1 -1
  223. package/esm/plugin/components/tooltip-handler/dom/dom-tooltip-handler.d.ts +0 -1
  224. package/esm/plugin/components/tooltip-handler/dom/dom-tooltip-handler.js +6 -19
  225. package/esm/plugin/components/tooltip-handler/dom/dom-tooltip-handler.js.map +1 -1
  226. package/esm/plugin/components/tooltip-handler/dom/model/content-column-model.js +16 -14
  227. package/esm/plugin/components/tooltip-handler/dom/model/content-column-model.js.map +1 -1
  228. package/esm/plugin/components/tooltip-handler/dom/model/title-model.js +2 -2
  229. package/esm/plugin/components/tooltip-handler/dom/model/title-model.js.map +1 -1
  230. package/esm/plugin/components/tooltip-handler/interface/style.d.ts +1 -2
  231. package/esm/plugin/components/tooltip-handler/interface/style.js.map +1 -1
  232. package/esm/plugin/components/tooltip-handler/utils/attribute.js +7 -7
  233. package/esm/plugin/components/tooltip-handler/utils/attribute.js.map +1 -1
  234. package/esm/plugin/components/tooltip-handler/utils/common.js.map +1 -1
  235. package/esm/plugin/components/tooltip-handler/utils/position.d.ts +3 -5
  236. package/esm/plugin/components/tooltip-handler/utils/position.js +20 -25
  237. package/esm/plugin/components/tooltip-handler/utils/position.js.map +1 -1
  238. package/esm/region/interface.d.ts +3 -1
  239. package/esm/region/interface.js.map +1 -1
  240. package/esm/series/base/base-series.js +1 -1
  241. package/esm/series/base/base-series.js.map +1 -1
  242. package/esm/series/base/tooltip-helper.d.ts +30 -6
  243. package/esm/series/base/tooltip-helper.js +85 -74
  244. package/esm/series/base/tooltip-helper.js.map +1 -1
  245. package/esm/series/box-plot/tooltip-helper.d.ts +2 -2
  246. package/esm/series/box-plot/tooltip-helper.js +26 -67
  247. package/esm/series/box-plot/tooltip-helper.js.map +1 -1
  248. package/esm/series/cartesian/cartesian.d.ts +1 -1
  249. package/esm/series/circle-packing/circle-packing.js +1 -2
  250. package/esm/series/circle-packing/circle-packing.js.map +1 -1
  251. package/esm/series/dot/tooltip-helper.d.ts +8 -2
  252. package/esm/series/dot/tooltip-helper.js +42 -41
  253. package/esm/series/dot/tooltip-helper.js.map +1 -1
  254. package/esm/series/gauge/pointer-tooltip-helper.d.ts +2 -1
  255. package/esm/series/gauge/pointer-tooltip-helper.js +2 -9
  256. package/esm/series/gauge/pointer-tooltip-helper.js.map +1 -1
  257. package/esm/series/heatmap/tooltip-helper.d.ts +2 -3
  258. package/esm/series/heatmap/tooltip-helper.js +2 -6
  259. package/esm/series/heatmap/tooltip-helper.js.map +1 -1
  260. package/esm/series/interface/tooltip-helper.d.ts +5 -4
  261. package/esm/series/interface/tooltip-helper.js.map +1 -1
  262. package/esm/series/link/tooltip-helper.d.ts +5 -2
  263. package/esm/series/link/tooltip-helper.js +26 -27
  264. package/esm/series/link/tooltip-helper.js.map +1 -1
  265. package/esm/series/liquid/tooltip-helper.d.ts +4 -5
  266. package/esm/series/liquid/tooltip-helper.js +2 -22
  267. package/esm/series/liquid/tooltip-helper.js.map +1 -1
  268. package/esm/series/pie/pie.js +7 -3
  269. package/esm/series/pie/pie.js.map +1 -1
  270. package/esm/series/progress/linear/tooltip-helper.d.ts +2 -3
  271. package/esm/series/progress/linear/tooltip-helper.js +2 -11
  272. package/esm/series/progress/linear/tooltip-helper.js.map +1 -1
  273. package/esm/series/range-area/tooltip-helper.d.ts +1 -3
  274. package/esm/series/range-area/tooltip-helper.js +2 -50
  275. package/esm/series/range-area/tooltip-helper.js.map +1 -1
  276. package/esm/series/range-column/tooltip-helper.d.ts +1 -2
  277. package/esm/series/range-column/tooltip-helper.js +2 -19
  278. package/esm/series/range-column/tooltip-helper.js.map +1 -1
  279. package/esm/series/sankey/sankey.d.ts +1 -1
  280. package/esm/series/sankey/tooltip-helper.d.ts +3 -3
  281. package/esm/series/sankey/tooltip-helper.js +10 -57
  282. package/esm/series/sankey/tooltip-helper.js.map +1 -1
  283. package/esm/typings/spec/common.d.ts +3 -3
  284. package/esm/typings/spec/common.js.map +1 -1
  285. package/esm/typings/tooltip/position.d.ts +1 -0
  286. package/esm/typings/tooltip/position.js.map +1 -1
  287. package/esm/typings/tooltip/shape.d.ts +0 -1
  288. package/esm/typings/tooltip/shape.js.map +1 -1
  289. package/esm/typings/tooltip/tooltip.d.ts +7 -0
  290. package/esm/typings/tooltip/tooltip.js.map +1 -1
  291. package/package.json +13 -13
  292. package/cjs/component/interface/tooltip-helper.d.ts +0 -5
  293. package/cjs/component/interface/tooltip-helper.js +0 -6
  294. package/cjs/component/interface/tooltip-helper.js.map +0 -1
  295. package/cjs/component/tooltip/utils/compose.d.ts +0 -4
  296. package/cjs/component/tooltip/utils/compose.js +0 -120
  297. package/cjs/component/tooltip/utils/compose.js.map +0 -1
  298. package/cjs/model/tooltip-helper.d.ts +0 -29
  299. package/cjs/model/tooltip-helper.js +0 -19
  300. package/cjs/model/tooltip-helper.js.map +0 -1
  301. package/esm/component/interface/tooltip-helper.d.ts +0 -5
  302. package/esm/component/interface/tooltip-helper.js +0 -2
  303. package/esm/component/interface/tooltip-helper.js.map +0 -1
  304. package/esm/component/tooltip/utils/compose.d.ts +0 -4
  305. package/esm/component/tooltip/utils/compose.js +0 -105
  306. package/esm/component/tooltip/utils/compose.js.map +0 -1
  307. package/esm/model/tooltip-helper.d.ts +0 -29
  308. package/esm/model/tooltip-helper.js +0 -11
  309. package/esm/model/tooltip-helper.js.map +0 -1
@@ -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 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 ITooltipPositionActual,\n IGlobalTooltipPositionPattern\n} from '../../../typings/tooltip';\n// eslint-disable-next-line no-duplicate-imports\nimport type { TooltipFixedPosition } from '../../../typings/tooltip';\nimport { getScale } from './utils/common';\nimport {\n getActualTooltipPositionValue,\n getCartesianCrosshairRect,\n getHorizontalPositionType,\n getVerticalPositionType,\n isFixedTooltipPositionPattern,\n isGlobalTooltipPositionPattern\n} from './utils/position';\nimport type { ICartesianSeries } 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 { IChartOption } from '../../../chart/interface';\nimport type { ITooltipSpec, Tooltip, TooltipHandlerParams } 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 { getTooltipPatternValue } from '../../../component/tooltip/utils';\nimport type { IDimensionData, IDimensionInfo } from '../../../event/events/dimension/interface';\n\ntype ChangeTooltipFunc = (visible: boolean, params: TooltipHandlerParams, data?: TooltipData) => TooltipResult;\n\ntype ChangeTooltipPositionFunc = (params: TooltipHandlerParams, data: TooltipData) => 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 _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 const { changePositionOnly } = params;\n\n if (changePositionOnly) {\n return this.changeTooltipPosition(params, data);\n }\n return this.changeTooltip(true, params, 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 data?: TooltipData\n ) => {\n if (this._isReleased) {\n return TooltipResult.failed;\n }\n\n if (!visible) {\n this._clearAllCache();\n /** 关闭 tooltip */\n this._updateTooltip(false, params);\n return TooltipResult.success;\n }\n\n return this._changeTooltipPosition(params, data);\n };\n\n /** 改变 tooltip 位置(带 throttle 版本),返回是否遇到异常 */\n protected changeTooltipPosition: ChangeTooltipPositionFunc;\n\n /** 改变 tooltip 位置(不带 throttle 版本),返回是否遇到异常 */\n protected _changeTooltipPosition: ChangeTooltipPositionFunc = (params: TooltipHandlerParams, data: TooltipData) => {\n if (this._isReleased) {\n return TooltipResult.failed;\n }\n\n const event = params.event as MouseEvent;\n const { tooltipSpec, tooltipActual, changePositionOnly } = params;\n\n if (tooltipSpec.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 = tooltipActual.activeType;\n\n /** 用户自定义逻辑 */\n if (tooltipSpec.handler) {\n return tooltipSpec.handler.showTooltip?.(activeType, data, params) ?? TooltipResult.success;\n }\n\n /** 默认逻辑 */\n const pattern = tooltipSpec[activeType];\n if (!pattern) {\n return TooltipResult.failed;\n }\n\n // 计算 tooltip 位置\n const position = this._getActualTooltipPosition(\n tooltipActual,\n params,\n this._getTooltipBoxSize(tooltipActual, changePositionOnly)\n );\n tooltipActual.position = position;\n if (pattern.updatePosition) {\n tooltipActual.position = pattern.updatePosition(tooltipActual.position, data, params);\n }\n\n // 判断 tooltip 可见性\n let tooltipVisible = pattern?.visible !== false;\n if (\n !data ||\n event.type === 'pointerout' ||\n !tooltipActual.visible ||\n (!tooltipActual.title && !tooltipActual.content)\n ) {\n tooltipVisible = false;\n }\n\n this._updateTooltip(tooltipVisible, {\n ...params,\n changePositionOnly\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._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): 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 */\n protected _getActualTooltipPosition = (\n actualTooltip: ITooltipActual,\n params: TooltipHandlerParams,\n tooltipBoxSize: IContainerSize | undefined\n ): ITooltipPositionActual => {\n const { tooltipSpec } = params;\n const invalidPosition = {\n x: Infinity,\n y: Infinity\n };\n if (!tooltipSpec) {\n this._cacheTooltipPosition = undefined;\n return invalidPosition;\n }\n const event = params.event as MouseEvent;\n const { activeType, data } = actualTooltip;\n const firstDim =\n activeType === 'dimension' ? (data as IDimensionInfo[])[0]?.data?.[0] : (data as IDimensionData[])?.[0];\n\n let { offsetX, offsetY } = this._option;\n\n const spec = tooltipSpec[activeType];\n const position = getTooltipPatternValue(spec.position, data, params);\n const positionMode =\n getTooltipPatternValue(spec.positionMode, data, params) ?? (activeType === 'mark' ? 'mark' : 'pointer');\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 const tooltipParentElement = this._getParentElement(tooltipSpec);\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 (\n mode === 'crosshair' &&\n firstDim?.series?.coordinate === 'cartesian' &&\n firstDim.datum &&\n firstDim.datum.length\n ) {\n isFixedPosition = true;\n const rect = getCartesianCrosshairRect(firstDim, startPoint);\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 (\n mode === 'crosshair' &&\n firstDim?.series?.coordinate === 'cartesian' &&\n firstDim.datum &&\n firstDim.datum.length\n ) {\n isFixedPosition = true;\n const rect = getCartesianCrosshairRect(firstDim, startPoint);\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 const horizontalType = getHorizontalPositionType(position as TooltipFixedPosition, 'right');\n if (horizontalType === 'left' || (horizontalType.includes('center') && isLeftOut())) {\n detectLeftFirst();\n detectRightLast();\n } else {\n detectRightFirst();\n detectLeftLast();\n }\n\n // 处理上下\n const verticalType = getVerticalPositionType(position as TooltipFixedPosition, 'bottom');\n if (verticalType === 'top' || (verticalType.includes('center') && isTopOut())) {\n detectTopFirst();\n detectBottomLast();\n } else {\n detectBottomFirst();\n detectTopLast();\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 // canvas模式下, size需要考虑border size, 目的是为了精准判断边界是否超出画布,达到confine效果\n // html模式不提供confine, 所以不考虑精准计算size\n const isCanvas = this._component.getSpec().renderMode === 'canvas';\n\n return {\n width: panel?.width + (isCanvas ? panel.lineWidth : 0),\n height: (panelDomHeight ?? panel?.height) + (isCanvas ? panel.lineWidth : 0)\n };\n }\n\n protected _getPointerPositionRelativeToTooltipParent(params: TooltipHandlerParams) {\n let { canvasX: x, canvasY: y } = params.event;\n const { tooltipSpec } = params;\n\n const invalidPosition = {\n x: Infinity,\n y: Infinity\n };\n\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":"AAAA,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAGnF,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAK9C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAWlD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EACL,6BAA6B,EAC7B,yBAAyB,EACzB,eAAe,EACf,6BAA6B,EAC7B,8BAA8B,EAC/B,MAAM,kBAAkB,CAAC;AAI1B,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAK3G,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAMzD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAU1E,MAAM,OAAgB,kBAAmB,SAAQ,UAAU;IAA3D;;QAOY,aAAQ,GAAG,IAAI,CAAC;QAchB,gBAAW,GAA+B,IAAI,CAAC;QAQ/C,gBAAW,GAAY,KAAK,CAAC;QAavC,gBAAW,GAAG,CAAC,UAA6B,EAAE,IAAiB,EAAE,MAA4B,EAAE,EAAE;YAC/F,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,CAAC;YAEtC,IAAI,kBAAkB,EAAE;gBACtB,OAAO,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;aACjD;YACD,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAChD,CAAC,CAAC;QAMQ,mBAAc,GAAsB,CAC5C,OAAgB,EAChB,MAA4B,EAC5B,IAAkB,EAClB,EAAE;YACF,IAAI,IAAI,CAAC,WAAW,EAAE;gBACpB,SAA4B;aAC7B;YAED,IAAI,CAAC,OAAO,EAAE;gBAEZ,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;gBACnC,SAA6B;aAC9B;YAED,OAAO,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACnD,CAAC,CAAC;QAMQ,2BAAsB,GAA8B,CAAC,MAA4B,EAAE,IAAiB,EAAE,EAAE;;YAChH,IAAI,IAAI,CAAC,WAAW,EAAE;gBACpB,SAA4B;aAC7B;YAED,MAAM,KAAK,GAAG,MAAM,CAAC,KAAmB,CAAC;YACzC,MAAM,EAAE,WAAW,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,GAAG,MAAM,CAAC;YAEtE,IAAI,CAAC,iBAAiB,EAAE;gBACtB,SAA4B;aAC7B;YAED,MAAM,UAAU,GAAG,iBAAiB,CAAC,UAAU,CAAC;YAGhD,IAAI,iBAAiB,CAAC,OAAO,EAAE;gBAC7B,OAAO,MAAA,MAAA,MAAA,iBAAiB,CAAC,OAAO,EAAC,WAAW,mDAAG,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,oCAAyB,CAAC;aACnG;YAGD,MAAM,OAAO,GAAG,iBAAiB,CAAC;YAGlC,MAAM,QAAQ,GAAG,IAAI,CAAC,yBAAyB,CAC7C,iBAAiB,EACjB,MAAM,EACN,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,CAC/D,CAAC;YACF,iBAAiB,CAAC,QAAQ,GAAG,QAAQ,CAAC;YACtC,MAAM,cAAc,GAAG,MAAA,iBAAiB,CAAC,cAAc,mCAAI,MAAA,WAAW,CAAC,UAAU,CAAC,0CAAE,cAAc,CAAC;YAEnG,IAAI,cAAc,EAAE;gBAClB,iBAAiB,CAAC,QAAQ,GAAG,cAAc,CAAC,iBAAiB,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;aACvF;YAGD,IAAI,cAAc,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,MAAK,KAAK,CAAC;YAChD,IACE,CAAC,IAAI;gBACL,KAAK,CAAC,IAAI,KAAK,YAAY;gBAC3B,CAAC,iBAAiB,CAAC,OAAO;gBAC1B,CAAC,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,EACxD;gBACA,cAAc,GAAG,KAAK,CAAC;aACxB;YAED,IAAI,CAAC,cAAc,CAAC,cAAc,kCAC7B,MAAM,KACT,kBAAkB,IAClB,CAAC;YACH,SAA6B;QAC/B,CAAC,CAAC;QAqDQ,8BAAyB,GAAG,CACpC,aAA6B,EAC7B,MAA4B,EAC5B,cAA0C,EAClB,EAAE;;YAC1B,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;YAC/B,MAAM,eAAe,GAAG;gBACtB,CAAC,EAAE,QAAQ;gBACX,CAAC,EAAE,QAAQ;aACZ,CAAC;YACF,IAAI,CAAC,WAAW,EAAE;gBAChB,OAAO,eAAe,CAAC;aACxB;YACD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAmB,CAAC;YACzC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,aAAa,CAAC;YAC3C,MAAM,QAAQ,GACZ,UAAU,KAAK,WAAW,CAAC,CAAC,CAAC,MAAA,MAAC,IAAyB,CAAC,CAAC,CAAC,0CAAE,IAAI,0CAAG,CAAC,CAAC,CAAC,CAAC,CAAE,IAAyB,aAAzB,IAAI,uBAAJ,IAAI,CAAwB,CAAC,CAAC,CAAC;YAE1G,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;YAE1C,MAAM,IAAI,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;YACrC,MAAM,QAAQ,GAAG,sBAAsB,CAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;YACtE,MAAM,YAAY,GAChB,MAAA,sBAAsB,CAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,YAAY,EAAE,IAAI,EAAE,MAAM,CAAC,mCAAI,CAAC,UAAU,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YAC3G,MAAM,EAAE,KAAK,EAAE,eAAe,GAAG,CAAC,EAAE,MAAM,EAAE,gBAAgB,GAAG,CAAC,EAAE,GAAG,cAAc,aAAd,cAAc,cAAd,cAAc,GAAI,EAAE,CAAC;YAE1F,MAAM,QAAQ,GAAG,WAAW,CAAC,UAAU,KAAK,QAAQ,CAAC;YACrD,MAAM,UAAU,GAAG,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,0CAAE,aAAa,EAAE,CAAC;YAClD,MAAM,WAAW,GAAG,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,KAAK,mCAAI,mBAAmB,CAAC;YAC7D,MAAM,YAAY,GAAG,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,MAAM,mCAAI,oBAAoB,CAAC;YAChE,IAAI,eAAe,GAAG,KAAK,CAAC;YAE5B,MAAM,aAAa,GAAG;gBACpB,KAAK,EAAE,CAAC;gBACR,MAAM,EAAE,CAAC;aACV,CAAC;YACF,IAAI,iBAAiB,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;YACvC,IAAI,wBAAwB,GAAqB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;YAChE,IAAI,iBAAiB,GAAG,CAAC,CAAC;YAC1B,IAAI,yBAAyB,GAAG,CAAC,CAAC;YAElC,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;gBAEpD,aAAa,CAAC,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC;gBACxC,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC;gBAE1C,IAAI,CAAC,QAAQ,EAAE;oBACb,MAAM,oBAAoB,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;oBACjE,wBAAwB,GAAG,MAAA,MAAA,oBAAoB,aAApB,oBAAoB,uBAApB,oBAAoB,CAAE,qBAAqB,oEAAI,mCAAI,eAAe,CAAC;oBAC9F,MAAM,YAAY,GAAG,CAAC,MAAA,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,mCAAI,IAAI,CAAC,eAAe,CAAgB,CAAC;oBACzF,MAAM,gBAAgB,GAAG,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,qBAAqB,EAAE,CAAC;oBAC/D,iBAAiB,GAAG;wBAClB,CAAC,EAAE,gBAAgB,CAAC,CAAC,GAAG,wBAAwB,CAAC,CAAC;wBAClD,CAAC,EAAE,gBAAgB,CAAC,CAAC,GAAG,wBAAwB,CAAC,CAAC;qBACnD,CAAC;oBACF,iBAAiB,GAAG,QAAQ,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;oBAC7D,yBAAyB,GAAG,QAAQ,CAAC,oBAAoB,EAAE,wBAAmC,CAAC,CAAC;iBACjG;aACF;iBAAM;gBACL,aAAa,CAAC,KAAK,GAAG,WAAW,CAAC;gBAClC,aAAa,CAAC,MAAM,GAAG,YAAY,CAAC;aACrC;YACD,MAAM,gBAAgB,GAAG,yBAAyB,GAAG,iBAAiB,CAAC;YAIvE,MAAM,OAAO,GAAqE,EAAE,CAAC;YACrF,MAAM,oBAAoB,GAGtB,EAAE,CAAC,EAAE,QAAe,EAAE,CAAC,EAAE,QAAe,EAAE,CAAC;YAC/C,MAAM,QAAQ,GAAG,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,CAAC;YAEhE,MAAM,6BAA6B,GAAG,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAA8B,EAAE,GAAc,EAAE,EAAE;;gBAC7G,IAAI,IAAY,CAAC;gBACjB,IAAI,IAAY,CAAC;gBACjB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAqB,CAAC;gBAC3C,MAAM,UAAU,GAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,mBAAmB,EAAE,CAAC;gBAChD,MAAM,SAAS,GAAG,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;gBAE9D,IAAI,IAAI,KAAK,MAAM,EAAE;oBACnB,eAAe,GAAG,IAAI,CAAC;oBACvB,MAAM,OAAO,GAAG,MAAM,CAAC,IAAgB,CAAC;oBACxC,MAAM,MAAM,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,EAAgB,CAAC;oBAClD,IAAI,MAAM,IAAI,UAAU,EAAE;wBACxB,IAAI,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;wBAC/D,IAAI,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;qBAChE;iBACF;qBAAM,IACL,IAAI,KAAK,WAAW;oBACpB,CAAA,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,0CAAE,UAAU,MAAK,WAAW;oBAC5C,QAAQ,CAAC,KAAK;oBACd,QAAQ,CAAC,KAAK,CAAC,MAAM,EACrB;oBACA,eAAe,GAAG,IAAI,CAAC;oBACvB,MAAM,IAAI,GAAG,yBAAyB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;oBAC7D,IAAI,IAAI,EAAE;wBACR,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;wBACvB,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;qBACtB;iBACF;qBAAM;oBACL,oBAAoB,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;iBACpC;gBAED,IAAI,eAAe,EAAE;oBACnB,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAwB,CAAC;oBACvD,MAAM,OAAO,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,gBAAgB,CAAC;oBACjE,QAAQ,eAAe,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE;wBACpC,KAAK,CAAC,CAAC;4BACL,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,OAAO,GAAG,gBAAgB,GAAG,SAAS,CAAC;4BAChE,MAAM;wBACR,KAAK,CAAC;4BACJ,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;4BACvE,MAAM;wBACR,KAAK,CAAC,CAAC;4BACL,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,GAAG,gBAAgB,GAAG,SAAS,CAAC;4BAC7E,MAAM;wBACR,KAAK,CAAC;4BACJ,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;4BAChD,MAAM;wBACR,KAAK,CAAC;4BACJ,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;4BACnC,MAAM;qBACT;iBACF;YACH,CAAC,CAAC;YACF,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE,GAAG,CAAkB,CAAC;YACzC,IAAI,QAAQ,CAAC,QAAQ,CAAC,EAAE;gBACtB,IAAI,8BAA8B,CAAC,QAAQ,CAAC,EAAE;oBAC5C,MAAM,EACJ,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,QAAQ,EACf,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,SAAS,EAClB,GAAG,QAAyC,CAAC;oBAC9C,OAAO,CAAC,IAAI,GAAG,6BAA6B,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;oBAC7D,OAAO,CAAC,GAAG,GAAG,6BAA6B,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;oBAC3D,OAAO,CAAC,KAAK,GAAG,6BAA6B,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;oBAC/D,OAAO,CAAC,MAAM,GAAG,6BAA6B,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;iBAClE;qBAAM,IAAI,6BAA6B,CAAC,QAAQ,CAAC,EAAE;oBAClD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;wBACjB,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;wBAC/B,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE;4BAC9C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAwB,CAAC,GAAG,6BAA6B,CAC9E,QAAoD,EACpD,KAAK,CACN,CAAC;yBACH;6BAAM;4BACL,6BAA6B,CAAC,QAAsC,EAAE,GAAG,CAAC,CAAC;yBAC5E;oBACH,CAAC,CAAC,CAAC;iBACJ;aACF;iBAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAC5B,6BAA6B,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAgC,EAAE,GAAG,CAAC,CAAC;gBAC3G,6BAA6B,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAgC,EAAE,GAAG,CAAC,CAAC;aAC5G;YAED,MAAM,MAAM,GAA2B,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC;YAC5D,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAE3C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBAEjB,MAAM,OAAO,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,gBAAgB,CAAC;gBACjE,MAAM,UAAU,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC;gBAC5D,MAAM,MAAM,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;gBAC/C,MAAM,OAAO,GAAG,eAAe,CAAC,oBAAoB,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;gBAChE,IAAI,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAwB,CAAC,CAAC,EAAE;oBACnE,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAwB,CAAC,CAAC;iBAChE;qBAAM,IAAI,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAwB,CAAC,CAAC,EAAE;oBAC1E,MAAM,CAAC,GAAG,CAAC,GAAG,UAAU,GAAG,OAAO,GAAG,gBAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAwB,CAAC,CAAC;iBAC1G;qBAAM;oBACL,MAAM,MAAM,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC,CAAE,KAAa,CAAC,OAAO,CAAC,CAAC,CAAE,KAAa,CAAC,OAAO,CAAC;oBAE7E,IAAI,OAAO,GAAG,CAAC,EAAE;wBACf,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,MAAM,CAAC;qBAC/B;yBAAM;wBACL,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;qBAC3F;iBACF;gBACD,MAAM,CAAC,GAAG,CAAC,IAAI,iBAAiB,CAAC;gBAEjC,IAAI,SAAS,EAAE;oBACb,MAAM,CAAC,GAAG,CAAC,IAAI,iBAAiB,CAAC,GAAG,CAAC,CAAC;iBACvC;gBACD,MAAM,CAAC,GAAG,CAAC,IAAI,yBAAyB,CAAC;gBAGzC,MAAM,gBAAgB,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC;gBAClF,MAAM,SAAS,GAAG,CAAC,wBAAwB,CAAC,GAAG,CAAC,GAAG,yBAAyB,CAAC;gBAC7E,MAAM,aAAa,GAAG,CAAC,gBAAgB,GAAG,wBAAwB,CAAC,GAAG,CAAC,CAAC,GAAG,yBAAyB,GAAG,OAAO,CAAC;gBAG/G,IAAI,OAAO,KAAK,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,EAAE;oBAE5C,IAAI,eAAe,EAAE;wBACnB,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;qBACzB;yBAAM;wBACL,IAAI,OAAO,KAAK,CAAC,EAAE;4BAEjB,MAAM,CAAC,GAAG,CAAC,IAAI,MAAM,GAAG,OAAO,GAAG,CAAC,CAAC;yBACrC;6BAAM;4BAEL,MAAM,CAAC,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC;yBACrC;wBAED,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,aAAa,EAAE;4BAE/B,MAAM,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC;yBAC7B;qBACF;iBACF;qBAAM,IAAI,OAAO,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,aAAa,EAAE;oBAGxD,IAAI,eAAe,EAAE;wBACnB,MAAM,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC;qBAC7B;yBAAM;wBACL,IAAI,OAAO,KAAK,CAAC,EAAE;4BAEjB,MAAM,CAAC,GAAG,CAAC,IAAI,MAAM,GAAG,OAAO,GAAG,CAAC,CAAC;yBACrC;6BAAM;4BAEL,MAAM,CAAC,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC;yBACrC;wBAED,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,EAAE;4BAE3B,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;yBACzB;qBACF;iBACF;YACH,CAAC,CAAC,CAAC;YAEH,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC;IAqCJ,CAAC;IAnbC,IAAW,GAAG;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAaD,KAAK,CAAC,OAAqC;QACzC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACrB,MAAM,SAAS,GAAG,OAAO,CAAC,SAAoB,CAAC;QAC/C,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC,SAAS,EAAS,CAAC;QACjD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;QACnC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;QACvE,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;QACzC,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IA0FD,WAAW,CAAC,MAA4B;QACtC,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO;;QACL,MAAM,IAAI,GAAG,MAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,mCAAI,EAAE,CAAC;QAE7C,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,MAAA,MAAA,IAAI,CAAC,OAAO,EAAC,OAAO,kDAAI,CAAC;YACzB,OAAO;SACR;QAED,IAAI,CAAC,cAAc,EAAE,CAAC;QAEtB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC1B,CAAC;IASS,SAAS,CAAC,QAAa;QAC/B,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QAC9C,IAAI,IAAY,CAAC;QACjB,IAAI,QAAQ,CAAC,WAAW,CAAC,gBAAgB,CAAC,EAAE;YAC1C,IAAI,GAAG,WAAW,CAAC,gBAAgB,CAAC;SACrC;aAAM;YACL,IAAI,WAAW,CAAC,UAAU,KAAK,MAAM,IAAI,CAAC,WAAW,CAAC,kBAAkB,EAAE;gBACxE,IAAI,GAAG,EAAE,CAAC;aACX;iBAAM;gBACL,IAAI,GAAG,EAAE,CAAC;aACX;SACF;QACD,OAAO,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;IAES,iBAAiB;;QACzB,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QAC7C,uCACK,eAAe,KAClB,OAAO,EAAE,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,CAAC,mCAAI,eAAe,CAAC,OAAO,EAC7C,OAAO,EAAE,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,CAAC,mCAAI,eAAe,CAAC,OAAO,IAC7C;IACJ,CAAC;IAiPS,kBAAkB,CAAC,aAA6B,EAAE,kBAA2B;;QACrF,IAAI,CAAC,kBAAkB,IAAI,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;YAClD,MAAM,UAAU,GAAG,MAAA,MAAA,IAAI,CAAC,YAAY,0CAAE,QAAQ,EAAE,mCAAI,EAAE,CAAC;YACvD,IAAI,CAAC,WAAW,GAAG,oBAAoB,CAAC,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC;SAC/F;QACD,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,MAAA,IAAI,CAAC,WAAW,mCAAI,EAAE,CAAC;QAGzD,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,UAAU,KAAK,QAAQ,CAAC;QAEnE,OAAO;YACL,KAAK,EAAE,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,IAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YACtD,MAAM,EAAE,CAAC,cAAc,aAAd,cAAc,cAAd,cAAc,GAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;SAC7E,CAAC;IACJ,CAAC;IAES,iBAAiB,CAAC,IAAkB;QAC5C,OAAO,IAAI,CAAC,aAAoB,CAAC;IACnC,CAAC;IAED,mBAAmB;QACjB,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAES,aAAa;QACrB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAExC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAQ,CAAC;QAChE,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,sBAAsB,CAAQ,CAAC;IAClF,CAAC;IAED,MAAM;QACJ,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;;AAhce,0BAAO,GAAG,SAAS,CAAC","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, RenderMode } from '../../../typings';\n// eslint-disable-next-line no-duplicate-imports\nimport type { ITooltipPositionFixedValue, TooltipPositionKeys } 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 ITooltipPositionActual,\n IGlobalTooltipPositionPattern\n} from '../../../typings/tooltip';\n// eslint-disable-next-line no-duplicate-imports\nimport type { TooltipFixedPosition } from '../../../typings/tooltip';\nimport { getScale } from './utils/common';\nimport {\n getActualTooltipPositionValue,\n getCartesianCrosshairRect,\n getPositionType,\n isFixedTooltipPositionPattern,\n isGlobalTooltipPositionPattern\n} from './utils/position';\nimport type { IGroup } from '@visactor/vrender-core';\nimport type { AABBBounds } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { isNumber, isObject, isValidNumber, isValid, throttle, isNil, isFunction } 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 { IChartOption } from '../../../chart/interface';\nimport type { ITooltipSpec, Tooltip, TooltipHandlerParams } 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 { getTooltipPatternValue } from '../../../component/tooltip/utils';\nimport type { IDimensionData, IDimensionInfo } from '../../../event/events/dimension/interface';\n\ntype ChangeTooltipFunc = (visible: boolean, params: TooltipHandlerParams, data?: TooltipData) => TooltipResult;\n\ntype ChangeTooltipPositionFunc = (params: TooltipHandlerParams, data: TooltipData) => 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 // 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 const { changePositionOnly } = params;\n\n if (changePositionOnly) {\n return this.changeTooltipPosition(params, data);\n }\n return this.changeTooltip(true, params, 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 data?: TooltipData\n ) => {\n if (this._isReleased) {\n return TooltipResult.failed;\n }\n\n if (!visible) {\n /** 关闭 tooltip */\n this._updateTooltip(false, params);\n return TooltipResult.success;\n }\n\n return this._changeTooltipPosition(params, data);\n };\n\n /** 改变 tooltip 位置(带 throttle 版本),返回是否遇到异常 */\n protected changeTooltipPosition: ChangeTooltipPositionFunc;\n\n /** 改变 tooltip 位置(不带 throttle 版本),返回是否遇到异常 */\n protected _changeTooltipPosition: ChangeTooltipPositionFunc = (params: TooltipHandlerParams, data: TooltipData) => {\n if (this._isReleased) {\n return TooltipResult.failed;\n }\n\n const event = params.event as MouseEvent;\n const { tooltipSpec, activeTooltipSpec, changePositionOnly } = params;\n\n if (!activeTooltipSpec) {\n return TooltipResult.failed;\n }\n\n const activeType = activeTooltipSpec.activeType;\n\n /** 用户自定义逻辑 */\n if (activeTooltipSpec.handler) {\n return activeTooltipSpec.handler.showTooltip?.(activeType, data, params) ?? TooltipResult.success;\n }\n\n /** 默认逻辑 */\n const pattern = activeTooltipSpec;\n\n // 计算 tooltip 位置\n const position = this._getActualTooltipPosition(\n activeTooltipSpec,\n params,\n this._getTooltipBoxSize(activeTooltipSpec, changePositionOnly)\n );\n activeTooltipSpec.position = position;\n const updatePosition = activeTooltipSpec.updatePosition ?? tooltipSpec[activeType]?.updatePosition;\n\n if (updatePosition) {\n activeTooltipSpec.position = updatePosition(activeTooltipSpec.position, data, params);\n }\n\n // 判断 tooltip 可见性\n let tooltipVisible = pattern?.visible !== false;\n if (\n !data ||\n event.type === 'pointerout' ||\n !activeTooltipSpec.visible ||\n (!activeTooltipSpec.title && !activeTooltipSpec.content)\n ) {\n tooltipVisible = false;\n }\n\n this._updateTooltip(tooltipVisible, {\n ...params,\n changePositionOnly\n });\n return TooltipResult.success;\n };\n\n hideTooltip(params: TooltipHandlerParams): TooltipResult {\n return this.changeTooltip(false, params);\n }\n\n release(): void {\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 /* -----需要子类继承的方法开始----- */\n\n protected abstract _updateTooltip(visible: boolean, params: TooltipHandlerParams): 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 */\n protected _getActualTooltipPosition = (\n actualTooltip: ITooltipActual,\n params: TooltipHandlerParams,\n tooltipBoxSize: IContainerSize | undefined\n ): ITooltipPositionActual => {\n const { tooltipSpec } = params;\n const invalidPosition = {\n x: Infinity,\n y: Infinity\n };\n if (!tooltipSpec) {\n return invalidPosition;\n }\n const event = params.event as MouseEvent;\n const { activeType, data } = actualTooltip;\n const firstDim =\n activeType === 'dimension' ? (data as IDimensionInfo[])[0]?.data?.[0] : (data as IDimensionData[])?.[0];\n\n const { offsetX, offsetY } = this._option;\n\n const spec = tooltipSpec[activeType];\n const position = getTooltipPatternValue(spec?.position, data, params);\n const positionMode =\n getTooltipPatternValue(spec?.positionMode, data, params) ?? (activeType === 'mark' ? 'mark' : 'pointer');\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 const tooltipParentElement = this._getParentElement(tooltipSpec);\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\n const calcPos: { top?: number; bottom?: number; left?: number; right?: number } = {};\n const pointerFixedPosition: {\n x: TooltipFixedPosition;\n y: TooltipFixedPosition;\n } = { x: position as any, y: position as any };\n const dimToPos = { x: ['left', 'right'], y: ['top', 'bottom'] };\n\n const processCartesianFixedPosition = ({ orient, mode, offset }: ITooltipPositionFixedValue, dim: 'x' | 'y') => {\n let dim1: number;\n let dim2: number;\n const model = params.model as ILayoutModel;\n const startPoint = model?.getLayoutStartPoint();\n const dimOffset = offset ?? (dim === 'x' ? offsetX : 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 dim1 = (dim === 'x' ? bounds.x1 : bounds.y1) + startPoint[dim];\n dim2 = (dim === 'x' ? bounds.x2 : bounds.y2) + startPoint[dim];\n }\n } else if (\n mode === 'crosshair' &&\n firstDim?.series?.coordinate === 'cartesian' &&\n firstDim.datum &&\n firstDim.datum.length\n ) {\n isFixedPosition = true;\n const rect = getCartesianCrosshairRect(firstDim, startPoint);\n if (rect) {\n dim1 = rect.start[dim];\n dim2 = rect.end[dim];\n }\n } else {\n pointerFixedPosition[dim] = orient;\n }\n\n if (isFixedPosition) {\n const posKey = dimToPos[dim][0] as TooltipPositionKeys;\n const boxSize = dim === 'x' ? tooltipBoxWidth : tooltipBoxHeight;\n switch (getPositionType(orient, dim)) {\n case -2:\n calcPos[posKey] = dim1 - boxSize * tooltipSizeScale - dimOffset;\n break;\n case 0:\n calcPos[posKey] = (dim1 + dim2) / 2 - (boxSize * tooltipSizeScale) / 2;\n break;\n case -1:\n calcPos[posKey] = (dim1 + dim2) / 2 - boxSize * tooltipSizeScale - dimOffset;\n break;\n case 1:\n calcPos[posKey] = (dim1 + dim2) / 2 + dimOffset;\n break;\n case 2:\n calcPos[posKey] = dim2 + dimOffset;\n break;\n }\n }\n };\n const dims = ['x', 'y'] as ('x' | 'y')[];\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 calcPos.left = getActualTooltipPositionValue(posLeft, event);\n calcPos.top = getActualTooltipPositionValue(posTop, event);\n calcPos.right = getActualTooltipPositionValue(posRight, event);\n calcPos.bottom = getActualTooltipPositionValue(posBottom, event);\n } else if (isFixedTooltipPositionPattern(position)) {\n dims.forEach(dim => {\n const dimValue = position[dim];\n if (isNumber(dimValue) || isFunction(dimValue)) {\n calcPos[dimToPos[dim][0] as TooltipPositionKeys] = getActualTooltipPositionValue(\n dimValue as number | ((event: MouseEvent) => number),\n event\n );\n } else {\n processCartesianFixedPosition(dimValue as ITooltipPositionFixedValue, dim);\n }\n });\n }\n } else if (isValid(position)) {\n processCartesianFixedPosition({ orient: position, mode: positionMode } as ITooltipPositionFixedValue, 'x');\n processCartesianFixedPosition({ orient: position, mode: positionMode } as ITooltipPositionFixedValue, 'y');\n }\n\n const result: ITooltipPositionActual = { x: null, y: null };\n const isBrowser = isTrueBrowser(this._env);\n\n dims.forEach(dim => {\n /* 二、换算成 x 和 y */\n const boxSize = dim === 'x' ? tooltipBoxWidth : tooltipBoxHeight;\n const canvasSize = dim === 'x' ? canvasWidth : canvasHeight;\n const offset = dim === 'x' ? offsetX : offsetY;\n const posType = getPositionType(pointerFixedPosition[dim], dim);\n if (isValidNumber(calcPos[dimToPos[dim][0] as TooltipPositionKeys])) {\n result[dim] = calcPos[dimToPos[dim][0] as TooltipPositionKeys];\n } else if (isValidNumber(calcPos[dimToPos[dim][1] as TooltipPositionKeys])) {\n result[dim] = canvasSize - boxSize * tooltipSizeScale - calcPos[dimToPos[dim][1] as TooltipPositionKeys];\n } else {\n const value0 = dim === 'x' ? (event as any).canvasX : (event as any).canvasY;\n\n if (posType > 0) {\n result[dim] = value0 + offset;\n } else {\n result[dim] = value0 - (boxSize * tooltipSizeScale) / 2 + (posType < 0 ? -1 : 0) * offset;\n }\n }\n result[dim] *= chartElementScale;\n\n if (isBrowser) {\n result[dim] += relativePosOffset[dim];\n }\n result[dim] /= tooltipParentElementScale;\n\n /* 三、确保tooltip在视区内 */\n const containerDimSize = dim === 'x' ? containerSize.width : containerSize.height;\n const leftOrTop = -tooltipParentElementRect[dim] / tooltipParentElementScale;\n const rightOrBottom = (containerDimSize - tooltipParentElementRect[dim]) / tooltipParentElementScale - boxSize;\n\n // 处理左右\n if (posType !== 2 && result[dim] < leftOrTop) {\n // 优先检测left\n if (isFixedPosition) {\n result[dim] = leftOrTop;\n } else {\n if (posType === 0) {\n // 从居中 挪至 右侧\n result[dim] += offset + boxSize / 2;\n } else {\n // 从居左/左侧 挪至 居右/右侧\n result[dim] += offset * 2 + boxSize;\n }\n\n if (result[dim] > rightOrBottom) {\n // 位置不超出视区右界\n result[dim] = rightOrBottom;\n }\n }\n } else if (posType !== -2 && result[dim] > rightOrBottom) {\n // 优先检测right\n // 位置不超出视区右界\n if (isFixedPosition) {\n result[dim] = rightOrBottom;\n } else {\n if (posType === 0) {\n // 从居中 挪至 左侧\n result[dim] -= offset + boxSize / 2;\n } else {\n // 从居右/右侧 挪至 居左/左侧\n result[dim] -= offset * 2 + boxSize;\n }\n\n if (result[dim] < leftOrTop) {\n // 位置不超出视区左界\n result[dim] = leftOrTop;\n }\n }\n }\n });\n\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 // canvas模式下, size需要考虑border size, 目的是为了精准判断边界是否超出画布,达到confine效果\n // html模式不提供confine, 所以不考虑精准计算size\n const isCanvas = this._component.getSpec().renderMode === 'canvas';\n\n return {\n width: panel?.width + (isCanvas ? panel.lineWidth : 0),\n height: (panelDomHeight ?? panel?.height) + (isCanvas ? panel.lineWidth : 0)\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"]}
@@ -42,7 +42,7 @@ export class CanvasTooltipHandler extends BaseTooltipHandler {
42
42
  visibleAll: !1
43
43
  })));
44
44
  this._tooltipComponent || this._initTooltipComponent(stage);
45
- const {tooltipActual: tooltipActual} = params, pos = tooltipActual.position;
45
+ const {activeTooltipSpec: activeTooltipSpec} = params, pos = activeTooltipSpec.position;
46
46
  params.changePositionOnly ? isValid(pos) && this._tooltipComponent.setAttributes(pos) : this._tooltipComponent.setAttributes(Object.assign(Object.assign({}, this._attributes), pos)),
47
47
  this._tooltipComponent.attribute.visible || (this._tooltipComponent.showAll(), this._tooltipComponent.setAttributes({
48
48
  visibleAll: !0
@@ -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 { BaseTooltipHandler } from '../base';\nimport { Tooltip as TooltipComponent } from '@visactor/vrender-components';\nimport { isValid } from '@visactor/vutils';\nimport type { TooltipHandlerParams } from '../../../../component/tooltip';\nimport type { IComponentPluginService } from '../../interface';\nimport { registerComponentPlugin } from '../../register';\nimport { TooltipHandlerType } from '../../../../component/tooltip/constant';\n\n/**\n * The tooltip handler class.\n */\nexport class CanvasTooltipHandler extends BaseTooltipHandler {\n static readonly type = TooltipHandlerType.canvas;\n readonly type = TooltipHandlerType.canvas;\n\n private _layer: ILayer;\n protected _el?: HTMLCanvasElement;\n protected _tooltipCanvasId?: string;\n protected _tooltipComponent: TooltipComponent;\n\n constructor() {\n super(CanvasTooltipHandler.type);\n }\n\n onAdd(service: IComponentPluginService<any>): void {\n super.onAdd(service);\n this._tooltipCanvasId = (this._chartOption.modeParams as any)?.tooltipCanvasId;\n }\n\n private _initTooltipComponent(stage: Stage) {\n const layer = this._getLayer(stage);\n this._tooltipComponent = new TooltipComponent({\n autoCalculatePosition: false,\n autoMeasure: false\n });\n layer.add(this._tooltipComponent as unknown as INode);\n }\n\n private _getLayer(stage: Stage) {\n if (this._layer) {\n return this._layer;\n }\n\n this._layer = stage.createLayer(this._tooltipCanvasId);\n\n // 需要关闭 layer 对应的 canvas 的事件\n const layerCanvas = this._layer.layerHandler.canvas.nativeCanvas as HTMLCanvasElement;\n // TODO:待 vrender 支持\n if (layerCanvas && layerCanvas.style) {\n layerCanvas.style.touchAction = 'none';\n layerCanvas.style.pointerEvents = 'none';\n }\n\n return this._layer;\n }\n\n protected _removeTooltip() {\n if (this._layer) {\n this._layer.removeAllChild();\n // this._layer.render();\n }\n this._attributes = null;\n }\n\n protected _updateTooltip(visible: boolean, params: TooltipHandlerParams) {\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 { tooltipActual } = params;\n const pos = tooltipActual.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 { BaseTooltipHandler } from '../base';\nimport { Tooltip as TooltipComponent } from '@visactor/vrender-components';\nimport { isValid } from '@visactor/vutils';\nimport type { TooltipHandlerParams } from '../../../../component/tooltip';\nimport type { IComponentPluginService } from '../../interface';\nimport { registerComponentPlugin } from '../../register';\nimport { TooltipHandlerType } from '../../../../component/tooltip/constant';\n\n/**\n * The tooltip handler class.\n */\nexport class CanvasTooltipHandler extends BaseTooltipHandler {\n static readonly type = TooltipHandlerType.canvas;\n readonly type = TooltipHandlerType.canvas;\n\n private _layer: ILayer;\n protected _el?: HTMLCanvasElement;\n protected _tooltipCanvasId?: string;\n protected _tooltipComponent: TooltipComponent;\n\n constructor() {\n super(CanvasTooltipHandler.type);\n }\n\n onAdd(service: IComponentPluginService<any>): void {\n super.onAdd(service);\n this._tooltipCanvasId = (this._chartOption.modeParams as any)?.tooltipCanvasId;\n }\n\n private _initTooltipComponent(stage: Stage) {\n const layer = this._getLayer(stage);\n this._tooltipComponent = new TooltipComponent({\n autoCalculatePosition: false,\n autoMeasure: false\n });\n layer.add(this._tooltipComponent as unknown as INode);\n }\n\n private _getLayer(stage: Stage) {\n if (this._layer) {\n return this._layer;\n }\n\n this._layer = stage.createLayer(this._tooltipCanvasId);\n\n // 需要关闭 layer 对应的 canvas 的事件\n const layerCanvas = this._layer.layerHandler.canvas.nativeCanvas as HTMLCanvasElement;\n // TODO:待 vrender 支持\n if (layerCanvas && layerCanvas.style) {\n layerCanvas.style.touchAction = 'none';\n layerCanvas.style.pointerEvents = 'none';\n }\n\n return this._layer;\n }\n\n protected _removeTooltip() {\n if (this._layer) {\n this._layer.removeAllChild();\n // this._layer.render();\n }\n this._attributes = null;\n }\n\n protected _updateTooltip(visible: boolean, params: TooltipHandlerParams) {\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 { activeTooltipSpec } = params;\n const pos = activeTooltipSpec.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"]}
@@ -27,6 +27,5 @@ export declare class DomTooltipHandler extends BaseTooltipHandler {
27
27
  isTooltipShown(): boolean;
28
28
  reInit(): void;
29
29
  protected _updatePosition({ x, y }: ITooltipPositionActual): void;
30
- protected _initEvent(el: HTMLElement): void;
31
30
  }
32
31
  export declare const registerDomTooltipHandler: () => void;
@@ -6,8 +6,6 @@ import { TooltipModel } from "./model/tooltip-model";
6
6
 
7
7
  import { TOOLTIP_CONTAINER_EL_CLASS_NAME } from "../constants";
8
8
 
9
- import { hasParentElement, isNil } from "@visactor/vutils";
10
-
11
9
  import { domDocument } from "../../../../util/env";
12
10
 
13
11
  import { registerComponentPlugin } from "../../register";
@@ -55,24 +53,19 @@ export class DomTooltipHandler extends BaseTooltipHandler {
55
53
  }
56
54
  _updateTooltip(visible, params) {
57
55
  var _a, _b;
58
- const {tooltipActual: tooltipActual, tooltipSpec: tooltipSpec} = params;
59
56
  if (visible && this.model) {
60
- if (!params.changePositionOnly) {
61
- this._tooltipActual = tooltipActual, this._initStyle();
62
- const firstInit = !this.model.product;
63
- this.model.initAll(), firstInit && this._initEvent(this.model.product), this.model.setStyle(),
64
- this.model.setContent();
65
- }
66
- this.setVisibility(visible);
57
+ const {tooltipSpec: tooltipSpec, activeTooltipSpec: activeTooltipSpec} = params;
58
+ params.changePositionOnly || (this._tooltipActual = activeTooltipSpec, this._initStyle(),
59
+ this.model.initAll(), this.model.setStyle(), this.model.setContent()), this.setVisibility(visible);
67
60
  const el = this.model.product;
68
61
  if (el) {
69
- const {x: x = 0, y: y = 0} = null !== (_a = tooltipActual.position) && void 0 !== _a ? _a : {};
62
+ const {x: x = 0, y: y = 0} = null !== (_a = activeTooltipSpec.position) && void 0 !== _a ? _a : {};
70
63
  if (tooltipSpec.updateElement) {
71
64
  this._updatePosition(null !== (_b = this._cacheCustomTooltipPosition) && void 0 !== _b ? _b : {
72
65
  x: x,
73
66
  y: y
74
- }), tooltipSpec.updateElement(el, tooltipActual, params);
75
- const position = this._getActualTooltipPosition(tooltipActual, params, {
67
+ }), tooltipSpec.updateElement(el, activeTooltipSpec, params);
68
+ const position = this._getActualTooltipPosition(activeTooltipSpec, params, {
76
69
  width: el.offsetWidth,
77
70
  height: el.offsetHeight
78
71
  });
@@ -101,12 +94,6 @@ export class DomTooltipHandler extends BaseTooltipHandler {
101
94
  const el = this.model.product;
102
95
  el && (el.style.transform = `translate3d(${x}px, ${y}px, 0)`);
103
96
  }
104
- _initEvent(el) {
105
- el.addEventListener("pointerleave", (event => {
106
- const {renderMode: renderMode, enterable: enterable} = this._component.getSpec(), relatedTarget = event.relatedTarget;
107
- "html" === renderMode && enterable && (isNil(relatedTarget) || relatedTarget !== this._compiler.getCanvas() && !hasParentElement(relatedTarget, this.getTooltipContainer())) && this._component.hideTooltip();
108
- }));
109
- }
110
97
  }
111
98
 
112
99
  DomTooltipHandler.type = TooltipHandlerType.dom;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/plugin/components/tooltip-handler/dom/dom-tooltip-handler.ts"],"names":[],"mappings":"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","file":"dom-tooltip-handler.js","sourcesContent":["import type { ITooltipActual, ITooltipPositionActual } from '../../../../typings/tooltip';\nimport { BaseTooltipHandler } from '../base';\nimport { getDomStyles } from './utils';\nimport type { IDomTooltipStyle } from './interface';\nimport { TooltipModel } from './model/tooltip-model';\nimport { TOOLTIP_CONTAINER_EL_CLASS_NAME } from '../constants';\nimport { hasParentElement, isNil, type Maybe } from '@visactor/vutils';\nimport { domDocument } from '../../../../util/env';\nimport type { ITooltipSpec, TooltipHandlerParams } from '../../../../component/tooltip';\nimport type { IComponentPluginService } from '../../interface';\nimport { registerComponentPlugin } from '../../register';\nimport { DEFAULT_TOOLTIP_Z_INDEX } from './constant';\nimport type { ILayoutPoint } from '../../../../typings';\nimport { TooltipHandlerType } from '../../../../component/tooltip/constant';\n\n/**\n * The tooltip handler class.\n */\nexport class DomTooltipHandler extends BaseTooltipHandler {\n static readonly type = TooltipHandlerType.dom;\n readonly type = TooltipHandlerType.dom;\n\n protected _tooltipContainer = domDocument?.body;\n protected _domStyle: IDomTooltipStyle;\n protected _tooltipActual?: ITooltipActual;\n protected declare _container: Maybe<HTMLDivElement>;\n\n /** 自定义 tooltip 的位置缓存 */\n protected _cacheCustomTooltipPosition: ILayoutPoint;\n\n protected model: TooltipModel;\n\n getVisibility() {\n return !!this.model?.getVisibility();\n }\n\n setVisibility(_value: boolean) {\n // 这里做个节流\n if (_value !== this.getVisibility()) {\n this.model?.setVisibility(_value);\n }\n }\n\n constructor() {\n super(DomTooltipHandler.type);\n }\n\n onAdd(service: IComponentPluginService<any>): void {\n super.onAdd(service);\n this._initStyle();\n this.initEl();\n }\n\n initEl() {\n const tooltipSpec = this._component.getSpec() as ITooltipSpec;\n const parentElement = tooltipSpec.parentElement as HTMLElement | HTMLCanvasElement;\n if (domDocument && parentElement && parentElement.children && parentElement.children.length) {\n for (let i = 0; i < parentElement.children.length; i++) {\n if (parentElement.children[i].classList.contains(TOOLTIP_CONTAINER_EL_CLASS_NAME)) {\n this._container = parentElement.children[i] as HTMLDivElement;\n break;\n }\n }\n if (!this._container) {\n this._container = domDocument.createElement('div');\n this._container.style.position = 'relative';\n this._container.style.zIndex = DEFAULT_TOOLTIP_Z_INDEX;\n this._container.classList.add(TOOLTIP_CONTAINER_EL_CLASS_NAME);\n parentElement.appendChild(this._container);\n }\n this.model = new TooltipModel(\n {\n valueToHtml: this._option.sanitize,\n getTooltipStyle: () => this._domStyle,\n getTooltipActual: () => this._tooltipActual,\n getTooltipAttributes: () => this._attributes,\n getContainer: () => this._container\n },\n [tooltipSpec.className],\n this.name\n );\n }\n }\n\n protected _removeTooltip() {\n this.model?.release();\n this._container = null;\n }\n\n protected _updateTooltip(visible: boolean, params: TooltipHandlerParams) {\n const { tooltipActual, tooltipSpec } = params;\n if (!visible || !this.model) {\n this.setVisibility(visible);\n this._cacheCustomTooltipPosition = undefined;\n } else {\n if (!params.changePositionOnly) {\n this._tooltipActual = tooltipActual;\n this._initStyle();\n\n const firstInit = !this.model.product;\n this.model.initAll();\n if (firstInit) {\n this._initEvent(this.model.product);\n }\n this.model.setStyle();\n this.model.setContent();\n }\n this.setVisibility(visible);\n\n // 位置\n const el = this.model.product;\n if (el) {\n const { x = 0, y = 0 } = tooltipActual.position ?? {};\n if (tooltipSpec.updateElement) {\n // 此处先设定一次位置,防止页面暂时出现滚动条(优先设置上次的位置)\n this._updatePosition(this._cacheCustomTooltipPosition ?? { x, y });\n // 更新 tooltip dom\n tooltipSpec.updateElement(el, tooltipActual, params);\n // 重新计算 tooltip 位置\n const position = this._getActualTooltipPosition(tooltipActual, params, {\n width: el.offsetWidth,\n height: el.offsetHeight\n });\n // 更新位置\n this._updatePosition(position);\n // 更新缓存\n this._cacheCustomTooltipPosition = position;\n } else {\n this._updatePosition({ x, y });\n }\n }\n }\n }\n\n protected _initStyle() {\n this._domStyle = getDomStyles(this._attributes);\n }\n\n protected _getParentElement(spec: ITooltipSpec): HTMLElement {\n return this._container ?? super._getParentElement(spec);\n }\n\n isTooltipShown() {\n return this.getVisibility();\n }\n\n reInit() {\n super.reInit();\n this._initStyle();\n }\n\n protected _updatePosition({ x, y }: ITooltipPositionActual) {\n const el = this.model.product;\n if (el) {\n // translate3d 性能较好:https://stackoverflow.com/questions/22111256/translate3d-vs-translate-performance\n el.style.transform = `translate3d(${x}px, ${y}px, 0)`;\n }\n }\n\n protected _initEvent(el: HTMLElement) {\n el.addEventListener('pointerleave', event => {\n const { renderMode, enterable } = this._component.getSpec();\n const relatedTarget = event.relatedTarget as HTMLElement;\n if (renderMode === 'html' && enterable) {\n if (\n // 判断用户鼠标是否从 tooltip 内部直接滑入非图表区域\n isNil(relatedTarget) ||\n (relatedTarget !== this._compiler.getCanvas() &&\n !hasParentElement(relatedTarget, this.getTooltipContainer() as HTMLElement))\n ) {\n this._component.hideTooltip();\n }\n }\n });\n }\n}\n\nexport const registerDomTooltipHandler = () => {\n registerComponentPlugin(DomTooltipHandler);\n};\n"]}
1
+ {"version":3,"sources":["../src/plugin/components/tooltip-handler/dom/dom-tooltip-handler.ts"],"names":[],"mappings":"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","file":"dom-tooltip-handler.js","sourcesContent":["import type { ITooltipActual, ITooltipPositionActual } from '../../../../typings/tooltip';\nimport { BaseTooltipHandler } from '../base';\nimport { getDomStyles } from './utils';\nimport type { IDomTooltipStyle } from './interface';\nimport { TooltipModel } from './model/tooltip-model';\nimport { TOOLTIP_CONTAINER_EL_CLASS_NAME } from '../constants';\nimport { type Maybe } from '@visactor/vutils';\nimport { domDocument } from '../../../../util/env';\nimport type { ITooltipSpec, TooltipHandlerParams } from '../../../../component/tooltip';\nimport type { IComponentPluginService } from '../../interface';\nimport { registerComponentPlugin } from '../../register';\nimport { DEFAULT_TOOLTIP_Z_INDEX } from './constant';\nimport type { ILayoutPoint } from '../../../../typings';\nimport { TooltipHandlerType } from '../../../../component/tooltip/constant';\n\n/**\n * The tooltip handler class.\n */\nexport class DomTooltipHandler extends BaseTooltipHandler {\n static readonly type = TooltipHandlerType.dom;\n readonly type = TooltipHandlerType.dom;\n\n protected _tooltipContainer = domDocument?.body;\n protected _domStyle: IDomTooltipStyle;\n protected _tooltipActual?: ITooltipActual;\n protected declare _container: Maybe<HTMLDivElement>;\n\n /** 自定义 tooltip 的位置缓存 */\n protected _cacheCustomTooltipPosition: ILayoutPoint;\n\n protected model: TooltipModel;\n\n getVisibility() {\n return !!this.model?.getVisibility();\n }\n\n setVisibility(_value: boolean) {\n // 这里做个节流\n if (_value !== this.getVisibility()) {\n this.model?.setVisibility(_value);\n }\n }\n\n constructor() {\n super(DomTooltipHandler.type);\n }\n\n onAdd(service: IComponentPluginService<any>): void {\n super.onAdd(service);\n this._initStyle();\n this.initEl();\n }\n\n initEl() {\n const tooltipSpec = this._component.getSpec() as ITooltipSpec;\n const parentElement = tooltipSpec.parentElement as HTMLElement | HTMLCanvasElement;\n if (domDocument && parentElement && parentElement.children && parentElement.children.length) {\n for (let i = 0; i < parentElement.children.length; i++) {\n if (parentElement.children[i].classList.contains(TOOLTIP_CONTAINER_EL_CLASS_NAME)) {\n this._container = parentElement.children[i] as HTMLDivElement;\n break;\n }\n }\n if (!this._container) {\n this._container = domDocument.createElement('div');\n this._container.style.position = 'relative';\n this._container.style.zIndex = DEFAULT_TOOLTIP_Z_INDEX;\n this._container.classList.add(TOOLTIP_CONTAINER_EL_CLASS_NAME);\n parentElement.appendChild(this._container);\n }\n this.model = new TooltipModel(\n {\n valueToHtml: this._option.sanitize,\n getTooltipStyle: () => this._domStyle,\n getTooltipActual: () => this._tooltipActual,\n getTooltipAttributes: () => this._attributes,\n getContainer: () => this._container\n },\n [tooltipSpec.className],\n this.name\n );\n }\n }\n\n protected _removeTooltip() {\n this.model?.release();\n this._container = null;\n }\n\n protected _updateTooltip(visible: boolean, params: TooltipHandlerParams) {\n if (!visible || !this.model) {\n this.setVisibility(visible);\n this._cacheCustomTooltipPosition = undefined;\n } else {\n const { tooltipSpec, activeTooltipSpec } = params;\n\n if (!params.changePositionOnly) {\n this._tooltipActual = activeTooltipSpec;\n this._initStyle();\n\n this.model.initAll();\n this.model.setStyle();\n this.model.setContent();\n }\n this.setVisibility(visible);\n\n // 位置\n const el = this.model.product;\n if (el) {\n const { x = 0, y = 0 } = activeTooltipSpec.position ?? {};\n if (tooltipSpec.updateElement) {\n // 此处先设定一次位置,防止页面暂时出现滚动条(优先设置上次的位置)\n this._updatePosition(this._cacheCustomTooltipPosition ?? { x, y });\n // 更新 tooltip dom\n tooltipSpec.updateElement(el, activeTooltipSpec, params);\n // 重新计算 tooltip 位置\n const position = this._getActualTooltipPosition(activeTooltipSpec, params, {\n width: el.offsetWidth,\n height: el.offsetHeight\n });\n // 更新位置\n this._updatePosition(position);\n // 更新缓存\n this._cacheCustomTooltipPosition = position;\n } else {\n this._updatePosition({ x, y });\n }\n }\n }\n }\n\n protected _initStyle() {\n this._domStyle = getDomStyles(this._attributes);\n }\n\n protected _getParentElement(spec: ITooltipSpec): HTMLElement {\n return this._container ?? super._getParentElement(spec);\n }\n\n isTooltipShown() {\n return this.getVisibility();\n }\n\n reInit() {\n super.reInit();\n this._initStyle();\n }\n\n protected _updatePosition({ x, y }: ITooltipPositionActual) {\n const el = this.model.product;\n if (el) {\n // translate3d 性能较好:https://stackoverflow.com/questions/22111256/translate3d-vs-translate-performance\n el.style.transform = `translate3d(${x}px, ${y}px, 0)`;\n }\n }\n}\n\nexport const registerDomTooltipHandler = () => {\n registerComponentPlugin(DomTooltipHandler);\n};\n"]}
@@ -49,46 +49,48 @@ export class ContentColumnModel extends BaseTooltipModel {
49
49
  var _a, _b, _c, _d;
50
50
  const tooltipStyle = this._option.getTooltipStyle();
51
51
  super.setStyle(mergeSpec({}, defaultContentColumnStyle, tooltipStyle.content, this._getContentColumnStyle()));
52
- const renderContent = null !== (_b = null === (_a = this._option.getTooltipActual()) || void 0 === _a ? void 0 : _a.content) && void 0 !== _b ? _b : [], contentAttributes = null !== (_d = null === (_c = this._option.getTooltipAttributes()) || void 0 === _c ? void 0 : _c.content) && void 0 !== _d ? _d : [], getKeyItemStyle = (line, i) => {
52
+ const renderContent = null !== (_b = null === (_a = this._option.getTooltipActual()) || void 0 === _a ? void 0 : _a.content) && void 0 !== _b ? _b : [], contentAttributes = null !== (_d = null === (_c = this._option.getTooltipAttributes()) || void 0 === _c ? void 0 : _c.content) && void 0 !== _d ? _d : [], getKeyItemStyle = (line, attrs, i) => {
53
53
  var _a, _b;
54
- const {key: key, isKeyAdaptive: isKeyAdaptive} = line, {height: height} = contentAttributes[i], {keyColumn: keyColumn} = tooltipStyle, style = mergeSpec({}, isKeyAdaptive ? defaultAdaptiveKeyStyle : defaultKeyStyle, Object.assign(Object.assign(Object.assign({
54
+ const {key: key, isKeyAdaptive: isKeyAdaptive} = line, {height: height} = attrs, {keyColumn: keyColumn} = tooltipStyle, style = mergeSpec({}, isKeyAdaptive ? defaultAdaptiveKeyStyle : defaultKeyStyle, Object.assign(Object.assign(Object.assign({
55
55
  height: getPixelPropertyStr(height)
56
56
  }, defaultLabelStyle), keyColumn.common), null === (_a = keyColumn.items) || void 0 === _a ? void 0 : _a[i]));
57
57
  return isString(key) && "" !== (null === (_b = null == key ? void 0 : key.trim) || void 0 === _b ? void 0 : _b.call(key)) || isNumber(key) || style.visibility ? style.visibility = "visible" : style.visibility = "hidden",
58
58
  style;
59
59
  };
60
- renderContent.forEach(((line, i) => {
60
+ contentAttributes.forEach(((attrs, i) => {
61
61
  var _a;
62
- "key-box" === this.className ? this.children[i].setStyle(getKeyItemStyle(line, i)) : "value-box" === this.className ? this.children[i].setStyle(((line, i) => {
62
+ const line = renderContent[i];
63
+ "key-box" === this.className ? this.children[i].setStyle(getKeyItemStyle(line, attrs, i)) : "value-box" === this.className ? this.children[i].setStyle(((line, attrs, i) => {
63
64
  var _a;
64
- const {height: height} = contentAttributes[i], {valueColumn: valueColumn} = tooltipStyle;
65
+ const {height: height} = attrs, {valueColumn: valueColumn} = tooltipStyle;
65
66
  return mergeSpec({}, defaultValueStyle, Object.assign(Object.assign(Object.assign({
66
67
  height: getPixelPropertyStr(height)
67
68
  }, defaultLabelStyle), valueColumn.common), null === (_a = valueColumn.items) || void 0 === _a ? void 0 : _a[i]));
68
- })(0, i)) : "shape-box" === this.className && (null === (_a = this.children[i]) || void 0 === _a || _a.setStyle(((line, i) => {
69
+ })(0, attrs, i)) : "shape-box" === this.className && (null === (_a = this.children[i]) || void 0 === _a || _a.setStyle(((line, attrs, i) => {
69
70
  var _a, _b, _c, _d;
70
- const {height: height} = contentAttributes[i], {shapeColumn: shapeColumn} = tooltipStyle, keyStyle = getKeyItemStyle(line, i), paddingTop = `calc((${null !== (_b = null !== (_a = keyStyle.lineHeight) && void 0 !== _a ? _a : keyStyle.fontSize) && void 0 !== _b ? _b : "18px"} - ${null !== (_c = shapeColumn.width) && void 0 !== _c ? _c : "8px"}) / 2)`;
71
+ const {height: height} = attrs, {shapeColumn: shapeColumn} = tooltipStyle, keyStyle = getKeyItemStyle(line, attrs, i), paddingTop = `calc((${null !== (_b = null !== (_a = keyStyle.lineHeight) && void 0 !== _a ? _a : keyStyle.fontSize) && void 0 !== _b ? _b : "18px"} - ${null !== (_c = shapeColumn.width) && void 0 !== _c ? _c : "8px"}) / 2)`;
71
72
  return mergeSpec({}, defaultShapeStyle, Object.assign(Object.assign({
72
73
  height: getPixelPropertyStr(height),
73
74
  paddingTop: paddingTop
74
75
  }, shapeColumn.common), null === (_d = shapeColumn.items) || void 0 === _d ? void 0 : _d[i]));
75
- })(line, i), this._getShapeSvgOption(line, i)));
76
+ })(line, attrs, i), this._getShapeSvgOption(line, i)));
76
77
  }));
77
78
  }
78
79
  setContent() {
79
80
  var _a, _b, _c, _d;
80
- const renderContent = null !== (_b = null === (_a = this._option.getTooltipActual()) || void 0 === _a ? void 0 : _a.content) && void 0 !== _b ? _b : [], contentAttributes = null !== (_d = null === (_c = this._option.getTooltipAttributes()) || void 0 === _c ? void 0 : _c.content) && void 0 !== _d ? _d : [];
81
- renderContent.forEach(((line, i) => {
81
+ const renderContent = null !== (_b = null === (_a = this._option.getTooltipActual()) || void 0 === _a ? void 0 : _a.content) && void 0 !== _b ? _b : [];
82
+ (null !== (_d = null === (_c = this._option.getTooltipAttributes()) || void 0 === _c ? void 0 : _c.content) && void 0 !== _d ? _d : []).forEach(((attributes, i) => {
82
83
  var _a, _b, _c, _d, _e, _f, _g;
83
84
  let childContent;
85
+ const line = renderContent[i];
84
86
  if ("key-box" === this.className) {
85
87
  const keyContent = line.key;
86
88
  childContent = isString(keyContent) && "" !== (null === (_a = null == keyContent ? void 0 : keyContent.trim) || void 0 === _a ? void 0 : _a.call(keyContent)) || isNumber(keyContent) ? keyContent : TOOLTIP_EMPTY_STRING,
87
- null === (_b = this.children[i]) || void 0 === _b || _b.setContent(childContent, null === (_c = contentAttributes[i].key) || void 0 === _c ? void 0 : _c.multiLine);
89
+ null === (_b = this.children[i]) || void 0 === _b || _b.setContent(childContent, null === (_c = attributes.key) || void 0 === _c ? void 0 : _c.multiLine);
88
90
  } else if ("value-box" === this.className) {
89
91
  const valueContent = line.value;
90
92
  childContent = isString(valueContent) && "" !== (null === (_d = null == valueContent ? void 0 : valueContent.trim) || void 0 === _d ? void 0 : _d.call(valueContent)) || isNumber(valueContent) ? valueContent : TOOLTIP_EMPTY_STRING,
91
- null === (_e = this.children[i]) || void 0 === _e || _e.setContent(childContent, null === (_f = contentAttributes[i].value) || void 0 === _f ? void 0 : _f.multiLine);
93
+ null === (_e = this.children[i]) || void 0 === _e || _e.setContent(childContent, null === (_f = attributes.value) || void 0 === _f ? void 0 : _f.multiLine);
92
94
  } else "shape-box" === this.className && (childContent = this._getShapeSvgOption(line, i),
93
95
  null === (_g = this.children[i]) || void 0 === _g || _g.setContent(childContent));
94
96
  }));
@@ -111,13 +113,13 @@ export class ContentColumnModel extends BaseTooltipModel {
111
113
  }
112
114
  }
113
115
  _getShapeSvgOption(line, index) {
114
- var _a, _b;
116
+ var _a;
115
117
  const tooltipStyle = this._option.getTooltipStyle(), shapeColumn = Object.assign(Object.assign({}, tooltipStyle.shapeColumn), null === (_a = tooltipStyle.shapeColumn.items) || void 0 === _a ? void 0 : _a[index]);
116
118
  return {
117
119
  hasShape: line.hasShape,
118
120
  symbolType: line.shapeType,
119
121
  size: shapeColumn.width,
120
- fill: null !== (_b = line.shapeFill) && void 0 !== _b ? _b : line.shapeColor,
122
+ fill: line.shapeFill,
121
123
  stroke: line.shapeStroke,
122
124
  lineWidth: line.shapeLineWidth,
123
125
  hollow: line.shapeHollow,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/plugin/components/tooltip-handler/dom/model/content-column-model.ts"],"names":[],"mappings":"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","file":"content-column-model.js","sourcesContent":["import { isNumber, isString, toNumber } from '@visactor/vutils';\nimport {\n defaultKeyStyle,\n defaultContentColumnStyle,\n defaultValueStyle,\n defaultAdaptiveKeyStyle,\n defaultShapeStyle\n} from './style-constants';\nimport { BaseTooltipModel } from './base-tooltip-model';\nimport type { ITooltipModelOption } from './interface';\nimport type { IShapeSvgOption } from './shape-model';\n// eslint-disable-next-line no-duplicate-imports\nimport { ShapeModel } from './shape-model';\nimport { TextModel } from './text-model';\nimport { TOOLTIP_EMPTY_STRING } from '../../constants';\nimport { getPixelPropertyStr } from '../utils';\nimport type { ITooltipLineActual } from '../../../../../typings';\nimport { mergeSpec } from '@visactor/vutils-extension';\n\nexport type ContentColumnType = 'shape-box' | 'key-box' | 'value-box';\n\n/** 默认的标签样式,覆盖外界对这些属性的预先配置 */\nconst defaultLabelStyle: Partial<CSSStyleDeclaration> = {\n overflowWrap: 'normal',\n wordWrap: 'normal'\n};\n\nexport class ContentColumnModel extends BaseTooltipModel {\n readonly className: ContentColumnType;\n\n constructor(\n parent: BaseTooltipModel | HTMLElement,\n option: ITooltipModelOption,\n className: ContentColumnType,\n childIndex?: number\n ) {\n super(parent, option, childIndex);\n this.className = className;\n }\n\n init(): void {\n if (!this.product) {\n this.product = this.createElement('div', [this.className]);\n }\n const renderContent = this._option.getTooltipActual()?.content ?? [];\n\n if (this.className === 'shape-box' && !renderContent.some(c => c.hasShape && c.shapeType)) {\n // 当有一行配有形状的时候,其他行要对齐。如果没有一行配有形状,则删除所有的行\n Object.keys(this.children).forEach(key => {\n const i = toNumber(key);\n this.children[i].release();\n delete this.children[i];\n });\n } else {\n // 删除多余的行\n Object.keys(this.children).forEach(key => {\n const i = toNumber(key);\n if (i >= renderContent.length) {\n this.children[i].release();\n delete this.children[i];\n }\n });\n // 新增没有的行\n for (let i = 0; i < renderContent.length; i++) {\n if (!this.children[i]) {\n if (this.className === 'key-box' || this.className === 'value-box') {\n const text = new TextModel(this.product!, this._option, i);\n text.init([this.className.substring(0, this.className.indexOf('-'))], undefined, 'div');\n this.children[i] = text;\n } else if (this.className === 'shape-box') {\n const shape = new ShapeModel(this.product!, this._option, i);\n shape.init(['shape'], undefined, 'div');\n this.children[i] = shape;\n }\n }\n }\n }\n }\n\n setStyle() {\n const tooltipStyle = this._option.getTooltipStyle();\n\n super.setStyle(mergeSpec({}, defaultContentColumnStyle, tooltipStyle.content, this._getContentColumnStyle()));\n\n const renderContent = this._option.getTooltipActual()?.content ?? [];\n const contentAttributes = this._option.getTooltipAttributes()?.content ?? [];\n\n const getKeyItemStyle = (line: ITooltipLineActual, i: number): Partial<CSSStyleDeclaration> => {\n const { key, isKeyAdaptive } = line;\n const { height } = contentAttributes[i];\n const { keyColumn } = tooltipStyle;\n const style: Partial<CSSStyleDeclaration> = mergeSpec(\n {},\n isKeyAdaptive ? defaultAdaptiveKeyStyle : defaultKeyStyle,\n {\n height: getPixelPropertyStr(height),\n ...defaultLabelStyle,\n ...keyColumn.common,\n ...keyColumn.items?.[i]\n } as Partial<CSSStyleDeclaration>\n );\n const hasContent = (isString(key) && key?.trim?.() !== '') || isNumber(key);\n if (!hasContent && !style.visibility) {\n style.visibility = 'hidden';\n } else {\n style.visibility = 'visible';\n }\n return style;\n };\n\n const getValueItemStyle = (line: ITooltipLineActual, i: number): Partial<CSSStyleDeclaration> => {\n const { height } = contentAttributes[i];\n const { valueColumn } = tooltipStyle;\n const style: Partial<CSSStyleDeclaration> = mergeSpec({}, defaultValueStyle, {\n height: getPixelPropertyStr(height),\n ...defaultLabelStyle,\n ...valueColumn.common,\n ...valueColumn.items?.[i]\n } as Partial<CSSStyleDeclaration>);\n return style;\n };\n\n const getShapeItemStyle = (line: ITooltipLineActual, i: number): Partial<CSSStyleDeclaration> => {\n const { height } = contentAttributes[i];\n const { shapeColumn } = tooltipStyle;\n const keyStyle = getKeyItemStyle(line, i);\n const paddingTop = `calc((${keyStyle.lineHeight ?? keyStyle.fontSize ?? '18px'} - ${\n shapeColumn.width ?? '8px'\n }) / 2)`; // shape 和 key 的第一行文字对齐\n const style: Partial<CSSStyleDeclaration> = mergeSpec({}, defaultShapeStyle, {\n height: getPixelPropertyStr(height),\n paddingTop,\n ...shapeColumn.common,\n ...shapeColumn.items?.[i]\n } as Partial<CSSStyleDeclaration>);\n return style;\n };\n\n renderContent.forEach((line, i) => {\n if (this.className === 'key-box') {\n (this.children[i] as TextModel).setStyle(getKeyItemStyle(line, i));\n } else if (this.className === 'value-box') {\n (this.children[i] as TextModel).setStyle(getValueItemStyle(line, i));\n } else if (this.className === 'shape-box') {\n (this.children[i] as ShapeModel)?.setStyle(getShapeItemStyle(line, i), this._getShapeSvgOption(line, i));\n }\n });\n }\n\n setContent(): void {\n const renderContent = this._option.getTooltipActual()?.content ?? [];\n const contentAttributes = this._option.getTooltipAttributes()?.content ?? [];\n renderContent.forEach((line, i) => {\n let childContent: any;\n if (this.className === 'key-box') {\n const keyContent = line.key;\n if ((isString(keyContent) && keyContent?.trim?.() !== '') || isNumber(keyContent)) {\n childContent = keyContent;\n } else {\n childContent = TOOLTIP_EMPTY_STRING;\n }\n (this.children[i] as TextModel)?.setContent(childContent, contentAttributes[i].key?.multiLine);\n } else if (this.className === 'value-box') {\n const valueContent = line.value;\n if ((isString(valueContent) && valueContent?.trim?.() !== '') || isNumber(valueContent)) {\n childContent = valueContent;\n } else {\n childContent = TOOLTIP_EMPTY_STRING;\n }\n (this.children[i] as TextModel)?.setContent(childContent, contentAttributes[i].value?.multiLine);\n } else if (this.className === 'shape-box') {\n childContent = this._getShapeSvgOption(line, i);\n this.children[i]?.setContent(childContent);\n }\n });\n }\n\n protected _getContentColumnStyle() {\n const tooltipStyle = this._option.getTooltipStyle();\n\n switch (this.className) {\n case 'shape-box':\n const renderContent = this._option.getTooltipActual()?.content ?? [];\n return {\n ...tooltipStyle.shapeColumn,\n ...(this.className === 'shape-box' && !renderContent.some(c => c.hasShape && c.shapeType)\n ? { display: 'none' }\n : {})\n };\n case 'key-box':\n return tooltipStyle.keyColumn;\n case 'value-box':\n return tooltipStyle.valueColumn;\n }\n }\n\n protected _getShapeSvgOption(line: ITooltipLineActual, index: number): IShapeSvgOption {\n const tooltipStyle = this._option.getTooltipStyle();\n const shapeColumn = {\n ...tooltipStyle.shapeColumn,\n ...tooltipStyle.shapeColumn.items?.[index]\n };\n return {\n hasShape: line.hasShape,\n symbolType: line.shapeType,\n size: shapeColumn.width,\n fill: line.shapeFill ?? line.shapeColor,\n stroke: line.shapeStroke,\n lineWidth: line.shapeLineWidth,\n hollow: line.shapeHollow,\n index\n } as IShapeSvgOption;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/plugin/components/tooltip-handler/dom/model/content-column-model.ts"],"names":[],"mappings":"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","file":"content-column-model.js","sourcesContent":["import { isNumber, isString, toNumber } from '@visactor/vutils';\nimport {\n defaultKeyStyle,\n defaultContentColumnStyle,\n defaultValueStyle,\n defaultAdaptiveKeyStyle,\n defaultShapeStyle\n} from './style-constants';\nimport { BaseTooltipModel } from './base-tooltip-model';\nimport type { ITooltipModelOption } from './interface';\nimport type { IShapeSvgOption } from './shape-model';\n// eslint-disable-next-line no-duplicate-imports\nimport { ShapeModel } from './shape-model';\nimport { TextModel } from './text-model';\nimport { TOOLTIP_EMPTY_STRING } from '../../constants';\nimport { getPixelPropertyStr } from '../utils';\nimport type { ITooltipLineActual } from '../../../../../typings';\nimport { mergeSpec } from '@visactor/vutils-extension';\nimport type { TooltipRowAttrs } from '@visactor/vrender-components';\n\nexport type ContentColumnType = 'shape-box' | 'key-box' | 'value-box';\n\n/** 默认的标签样式,覆盖外界对这些属性的预先配置 */\nconst defaultLabelStyle: Partial<CSSStyleDeclaration> = {\n overflowWrap: 'normal',\n wordWrap: 'normal'\n};\n\nexport class ContentColumnModel extends BaseTooltipModel {\n readonly className: ContentColumnType;\n\n constructor(\n parent: BaseTooltipModel | HTMLElement,\n option: ITooltipModelOption,\n className: ContentColumnType,\n childIndex?: number\n ) {\n super(parent, option, childIndex);\n this.className = className;\n }\n\n init(): void {\n if (!this.product) {\n this.product = this.createElement('div', [this.className]);\n }\n const renderContent = this._option.getTooltipActual()?.content ?? [];\n\n if (this.className === 'shape-box' && !renderContent.some(c => c.hasShape && c.shapeType)) {\n // 当有一行配有形状的时候,其他行要对齐。如果没有一行配有形状,则删除所有的行\n Object.keys(this.children).forEach(key => {\n const i = toNumber(key);\n this.children[i].release();\n delete this.children[i];\n });\n } else {\n // 删除多余的行\n Object.keys(this.children).forEach(key => {\n const i = toNumber(key);\n if (i >= renderContent.length) {\n this.children[i].release();\n delete this.children[i];\n }\n });\n // 新增没有的行\n for (let i = 0; i < renderContent.length; i++) {\n if (!this.children[i]) {\n if (this.className === 'key-box' || this.className === 'value-box') {\n const text = new TextModel(this.product!, this._option, i);\n text.init([this.className.substring(0, this.className.indexOf('-'))], undefined, 'div');\n this.children[i] = text;\n } else if (this.className === 'shape-box') {\n const shape = new ShapeModel(this.product!, this._option, i);\n shape.init(['shape'], undefined, 'div');\n this.children[i] = shape;\n }\n }\n }\n }\n }\n\n setStyle() {\n const tooltipStyle = this._option.getTooltipStyle();\n\n super.setStyle(mergeSpec({}, defaultContentColumnStyle, tooltipStyle.content, this._getContentColumnStyle()));\n\n const renderContent = this._option.getTooltipActual()?.content ?? [];\n const contentAttributes = this._option.getTooltipAttributes()?.content ?? [];\n\n const getKeyItemStyle = (\n line: ITooltipLineActual,\n attrs: TooltipRowAttrs,\n i: number\n ): Partial<CSSStyleDeclaration> => {\n const { key, isKeyAdaptive } = line;\n const { height } = attrs;\n const { keyColumn } = tooltipStyle;\n const style: Partial<CSSStyleDeclaration> = mergeSpec(\n {},\n isKeyAdaptive ? defaultAdaptiveKeyStyle : defaultKeyStyle,\n {\n height: getPixelPropertyStr(height),\n ...defaultLabelStyle,\n ...keyColumn.common,\n ...keyColumn.items?.[i]\n } as Partial<CSSStyleDeclaration>\n );\n const hasContent = (isString(key) && key?.trim?.() !== '') || isNumber(key);\n if (!hasContent && !style.visibility) {\n style.visibility = 'hidden';\n } else {\n style.visibility = 'visible';\n }\n return style;\n };\n\n const getValueItemStyle = (\n line: ITooltipLineActual,\n attrs: TooltipRowAttrs,\n i: number\n ): Partial<CSSStyleDeclaration> => {\n const { height } = attrs;\n const { valueColumn } = tooltipStyle;\n const style: Partial<CSSStyleDeclaration> = mergeSpec({}, defaultValueStyle, {\n height: getPixelPropertyStr(height),\n ...defaultLabelStyle,\n ...valueColumn.common,\n ...valueColumn.items?.[i]\n } as Partial<CSSStyleDeclaration>);\n return style;\n };\n\n const getShapeItemStyle = (\n line: ITooltipLineActual,\n attrs: TooltipRowAttrs,\n i: number\n ): Partial<CSSStyleDeclaration> => {\n const { height } = attrs;\n const { shapeColumn } = tooltipStyle;\n const keyStyle = getKeyItemStyle(line, attrs, i);\n const paddingTop = `calc((${keyStyle.lineHeight ?? keyStyle.fontSize ?? '18px'} - ${\n shapeColumn.width ?? '8px'\n }) / 2)`; // shape 和 key 的第一行文字对齐\n const style: Partial<CSSStyleDeclaration> = mergeSpec({}, defaultShapeStyle, {\n height: getPixelPropertyStr(height),\n paddingTop,\n ...shapeColumn.common,\n ...shapeColumn.items?.[i]\n } as Partial<CSSStyleDeclaration>);\n return style;\n };\n\n contentAttributes.forEach((attrs: TooltipRowAttrs, i: number) => {\n const line = renderContent[i];\n\n if (this.className === 'key-box') {\n (this.children[i] as TextModel).setStyle(getKeyItemStyle(line, attrs, i));\n } else if (this.className === 'value-box') {\n (this.children[i] as TextModel).setStyle(getValueItemStyle(line, attrs, i));\n } else if (this.className === 'shape-box') {\n (this.children[i] as ShapeModel)?.setStyle(getShapeItemStyle(line, attrs, i), this._getShapeSvgOption(line, i));\n }\n });\n }\n\n setContent(): void {\n const renderContent = this._option.getTooltipActual()?.content ?? [];\n const contentAttributes = this._option.getTooltipAttributes()?.content ?? [];\n\n contentAttributes.forEach((attributes: TooltipRowAttrs, i: number) => {\n let childContent: any;\n const line = renderContent[i];\n if (this.className === 'key-box') {\n const keyContent = line.key;\n if ((isString(keyContent) && keyContent?.trim?.() !== '') || isNumber(keyContent)) {\n childContent = keyContent;\n } else {\n childContent = TOOLTIP_EMPTY_STRING;\n }\n (this.children[i] as TextModel)?.setContent(childContent, attributes.key?.multiLine);\n } else if (this.className === 'value-box') {\n const valueContent = line.value;\n if ((isString(valueContent) && valueContent?.trim?.() !== '') || isNumber(valueContent)) {\n childContent = valueContent;\n } else {\n childContent = TOOLTIP_EMPTY_STRING;\n }\n (this.children[i] as TextModel)?.setContent(childContent, attributes.value?.multiLine);\n } else if (this.className === 'shape-box') {\n childContent = this._getShapeSvgOption(line, i);\n this.children[i]?.setContent(childContent);\n }\n });\n }\n\n protected _getContentColumnStyle() {\n const tooltipStyle = this._option.getTooltipStyle();\n\n switch (this.className) {\n case 'shape-box':\n const renderContent = this._option.getTooltipActual()?.content ?? [];\n return {\n ...tooltipStyle.shapeColumn,\n ...(this.className === 'shape-box' && !renderContent.some(c => c.hasShape && c.shapeType)\n ? { display: 'none' }\n : {})\n };\n case 'key-box':\n return tooltipStyle.keyColumn;\n case 'value-box':\n return tooltipStyle.valueColumn;\n }\n }\n\n protected _getShapeSvgOption(line: ITooltipLineActual, index: number): IShapeSvgOption {\n const tooltipStyle = this._option.getTooltipStyle();\n const shapeColumn = {\n ...tooltipStyle.shapeColumn,\n ...tooltipStyle.shapeColumn.items?.[index]\n };\n return {\n hasShape: line.hasShape,\n symbolType: line.shapeType,\n size: shapeColumn.width,\n fill: line.shapeFill,\n stroke: line.shapeStroke,\n lineWidth: line.shapeLineWidth,\n hollow: line.shapeHollow,\n index\n } as IShapeSvgOption;\n }\n}\n"]}
@@ -39,7 +39,7 @@ export class TitleModel extends BaseTooltipModel {
39
39
  hasShape: null == title ? void 0 : title.hasShape,
40
40
  symbolType: null == title ? void 0 : title.shapeType,
41
41
  size: null === (_c = tooltipStyle.shapeColumn.common) || void 0 === _c ? void 0 : _c.width,
42
- fill: null == title ? void 0 : title.shapeColor,
42
+ fill: null == title ? void 0 : title.shapeFill,
43
43
  hollow: null == title ? void 0 : title.shapeHollow
44
44
  }), null === (_d = this.textSpan) || void 0 === _d || _d.setStyle({
45
45
  color: "inherit"
@@ -52,7 +52,7 @@ export class TitleModel extends BaseTooltipModel {
52
52
  hasShape: null == title ? void 0 : title.hasShape,
53
53
  symbolType: null == title ? void 0 : title.shapeType,
54
54
  size: null === (_b = tooltipStyle.shapeColumn.common) || void 0 === _b ? void 0 : _b.width,
55
- fill: null == title ? void 0 : title.shapeColor,
55
+ fill: null == title ? void 0 : title.shapeFill,
56
56
  hollow: null == title ? void 0 : title.shapeHollow
57
57
  }), null === (_c = this.textSpan) || void 0 === _c || _c.setStyle({
58
58
  color: "inherit"
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/plugin/components/tooltip-handler/dom/model/title-model.ts"],"names":[],"mappings":"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","file":"title-model.js","sourcesContent":["import type { Maybe } from '@visactor/vutils';\nimport { defaultH2Style } from './style-constants';\nimport { BaseTooltipModel } from './base-tooltip-model';\nimport { ShapeModel } from './shape-model';\nimport { TextModel } from './text-model';\nimport { mergeSpec } from '@visactor/vutils-extension';\n\nexport class TitleModel extends BaseTooltipModel {\n shape: Maybe<ShapeModel>;\n textSpan: Maybe<TextModel>;\n\n init(): void {\n const tooltipActual = this._option.getTooltipActual();\n\n if (!this.product) {\n this.product = this.createElement('h2');\n }\n const { align } = this._option.getTooltipAttributes();\n\n if (align === 'right' && !this.textSpan) {\n this._initTextSpan(0);\n }\n\n const { title } = tooltipActual;\n if (title?.hasShape && title?.shapeType) {\n if (!this.shape) {\n this._initShape(align === 'right' ? 1 : 0);\n }\n } else if (this.shape) {\n this._releaseShape();\n }\n\n if (align !== 'right' && !this.textSpan) {\n this._initTextSpan(1);\n }\n }\n\n private _initShape(index: number = 0) {\n const shape = new ShapeModel(this.product!, this._option, index);\n shape.init();\n this.shape = shape;\n this.children[shape.childIndex] = shape;\n }\n\n private _releaseShape() {\n if (!this.shape) {\n return;\n }\n this.shape.release();\n delete this.children[this.shape.childIndex];\n this.shape = null;\n }\n\n private _initTextSpan(index: number = 1) {\n const textSpan = new TextModel(this.product!, this._option, index);\n textSpan.init();\n this.textSpan = textSpan;\n this.children[textSpan.childIndex] = textSpan;\n }\n\n setStyle(style?: Partial<CSSStyleDeclaration>): void {\n const tooltipStyle = this._option.getTooltipStyle();\n const tooltipActual = this._option.getTooltipActual();\n\n const { title } = tooltipActual;\n super.setStyle(mergeSpec({}, defaultH2Style, tooltipStyle.title, style));\n\n this.shape?.setStyle(\n {\n paddingRight: tooltipStyle.shapeColumn.common?.marginRight\n },\n {\n hasShape: title?.hasShape,\n symbolType: title?.shapeType,\n size: tooltipStyle.shapeColumn.common?.width,\n fill: title?.shapeColor,\n hollow: title?.shapeHollow\n }\n );\n this.textSpan?.setStyle({\n color: 'inherit'\n });\n }\n\n setContent(): void {\n const tooltipStyle = this._option.getTooltipStyle();\n const tooltipActual = this._option.getTooltipActual();\n const tooltipAttributes = this._option.getTooltipAttributes();\n\n const { title } = tooltipActual;\n this.init();\n this.shape?.setStyle(undefined, {\n hasShape: title?.hasShape,\n symbolType: title?.shapeType,\n size: tooltipStyle.shapeColumn.common?.width,\n fill: title?.shapeColor,\n hollow: title?.shapeHollow\n });\n this.textSpan?.setStyle({\n color: 'inherit'\n });\n this.textSpan?.setContent(title?.value, tooltipAttributes.title?.value?.multiLine);\n }\n\n release(): void {\n super.release();\n this.shape = null;\n this.textSpan = null;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/plugin/components/tooltip-handler/dom/model/title-model.ts"],"names":[],"mappings":"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","file":"title-model.js","sourcesContent":["import type { Maybe } from '@visactor/vutils';\nimport { defaultH2Style } from './style-constants';\nimport { BaseTooltipModel } from './base-tooltip-model';\nimport { ShapeModel } from './shape-model';\nimport { TextModel } from './text-model';\nimport { mergeSpec } from '@visactor/vutils-extension';\n\nexport class TitleModel extends BaseTooltipModel {\n shape: Maybe<ShapeModel>;\n textSpan: Maybe<TextModel>;\n\n init(): void {\n const tooltipActual = this._option.getTooltipActual();\n\n if (!this.product) {\n this.product = this.createElement('h2');\n }\n const { align } = this._option.getTooltipAttributes();\n\n if (align === 'right' && !this.textSpan) {\n this._initTextSpan(0);\n }\n\n const { title } = tooltipActual;\n if (title?.hasShape && title?.shapeType) {\n if (!this.shape) {\n this._initShape(align === 'right' ? 1 : 0);\n }\n } else if (this.shape) {\n this._releaseShape();\n }\n\n if (align !== 'right' && !this.textSpan) {\n this._initTextSpan(1);\n }\n }\n\n private _initShape(index: number = 0) {\n const shape = new ShapeModel(this.product!, this._option, index);\n shape.init();\n this.shape = shape;\n this.children[shape.childIndex] = shape;\n }\n\n private _releaseShape() {\n if (!this.shape) {\n return;\n }\n this.shape.release();\n delete this.children[this.shape.childIndex];\n this.shape = null;\n }\n\n private _initTextSpan(index: number = 1) {\n const textSpan = new TextModel(this.product!, this._option, index);\n textSpan.init();\n this.textSpan = textSpan;\n this.children[textSpan.childIndex] = textSpan;\n }\n\n setStyle(style?: Partial<CSSStyleDeclaration>): void {\n const tooltipStyle = this._option.getTooltipStyle();\n const tooltipActual = this._option.getTooltipActual();\n\n const { title } = tooltipActual;\n super.setStyle(mergeSpec({}, defaultH2Style, tooltipStyle.title, style));\n\n this.shape?.setStyle(\n {\n paddingRight: tooltipStyle.shapeColumn.common?.marginRight\n },\n {\n hasShape: title?.hasShape,\n symbolType: title?.shapeType,\n size: tooltipStyle.shapeColumn.common?.width,\n fill: title?.shapeFill,\n hollow: title?.shapeHollow\n }\n );\n this.textSpan?.setStyle({\n color: 'inherit'\n });\n }\n\n setContent(): void {\n const tooltipStyle = this._option.getTooltipStyle();\n const tooltipActual = this._option.getTooltipActual();\n const tooltipAttributes = this._option.getTooltipAttributes();\n\n const { title } = tooltipActual;\n this.init();\n this.shape?.setStyle(undefined, {\n hasShape: title?.hasShape,\n symbolType: title?.shapeType,\n size: tooltipStyle.shapeColumn.common?.width,\n fill: title?.shapeFill,\n hollow: title?.shapeHollow\n });\n this.textSpan?.setStyle({\n color: 'inherit'\n });\n this.textSpan?.setContent(title?.value, tooltipAttributes.title?.value?.multiLine);\n }\n\n release(): void {\n super.release();\n this.shape = null;\n this.textSpan = null;\n }\n}\n"]}
@@ -1,10 +1,9 @@
1
1
  import type { TooltipAttributes } from '@visactor/vrender-components';
2
- import type { ITextAttribute, IFillStyle, RichTextWordBreak } from '@visactor/vrender-core';
2
+ import type { ITextAttribute, IFillStyle } from '@visactor/vrender-core';
3
3
  export interface ITooltipTextStyle extends Partial<ITextAttribute & IFillStyle> {
4
4
  spacing?: number;
5
5
  multiLine?: boolean;
6
6
  maxWidth?: number;
7
- wordBreak?: RichTextWordBreak;
8
7
  autoWidth?: boolean;
9
8
  }
10
9
  export interface ITooltipAttributes extends TooltipAttributes {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/plugin/components/tooltip-handler/interface/style.ts"],"names":[],"mappings":"","file":"style.js","sourcesContent":["import type { TooltipAttributes } from '@visactor/vrender-components';\nimport type { ITextAttribute, IFillStyle, RichTextWordBreak } from '@visactor/vrender-core';\n\nexport interface ITooltipTextStyle extends Partial<ITextAttribute & IFillStyle> {\n /** 和相邻元素的水平间距 */\n spacing?: number;\n /** 是否支持换行 */\n multiLine?: boolean;\n /** 文本元素的最大宽度 */\n maxWidth?: number;\n /** 换行模式 */\n wordBreak?: RichTextWordBreak;\n /** 是否开启自动宽度 */\n autoWidth?: boolean;\n}\n\nexport interface ITooltipAttributes extends TooltipAttributes {\n /** dom tooltip 的高度。由于 canvas tooltip 不支持滚动条,dom tooltip 单独计算高度 */\n panelDomHeight?: number;\n /** dom tooltip 内容区的最大高度,canvas tooltip 不支持 */\n maxContentHeight?: number;\n /**\n * @since 1.11.5\n *\n * shape、key、value的对齐方式,可选项如下:\n * 'left': 从左到右对齐\n * 'right': 从右到左对齐\n */\n align?: 'left' | 'right';\n}\n"]}
1
+ {"version":3,"sources":["../src/plugin/components/tooltip-handler/interface/style.ts"],"names":[],"mappings":"","file":"style.js","sourcesContent":["import type { TooltipAttributes } from '@visactor/vrender-components';\nimport type { ITextAttribute, IFillStyle } from '@visactor/vrender-core';\n\nexport interface ITooltipTextStyle extends Partial<ITextAttribute & IFillStyle> {\n /** 和相邻元素的水平间距 */\n spacing?: number;\n /** 是否支持换行 */\n multiLine?: boolean;\n /** 文本元素的最大宽度 */\n maxWidth?: number;\n /** 是否开启自动宽度 */\n autoWidth?: boolean;\n}\n\nexport interface ITooltipAttributes extends TooltipAttributes {\n /** dom tooltip 的高度。由于 canvas tooltip 不支持滚动条,dom tooltip 单独计算高度 */\n panelDomHeight?: number;\n /** dom tooltip 内容区的最大高度,canvas tooltip 不支持 */\n maxContentHeight?: number;\n /**\n * @since 1.11.5\n *\n * shape、key、value的对齐方式,可选项如下:\n * 'left': 从左到右对齐\n * 'right': 从右到左对齐\n */\n align?: 'left' | 'right';\n}\n"]}