@visactor/vchart 1.12.4 → 1.12.6

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 (259) hide show
  1. package/build/es5/index.js +1 -1
  2. package/build/index.js +639 -811
  3. package/build/index.min.js +1 -1
  4. package/build/tsconfig.tsbuildinfo +1 -1
  5. package/cjs/chart/base/base-chart-transformer.js +4 -4
  6. package/cjs/chart/base/base-chart-transformer.js.map +1 -1
  7. package/cjs/chart/base/base-chart.js +2 -2
  8. package/cjs/chart/base/base-chart.js.map +1 -1
  9. package/cjs/chart/mosaic/mosaic.d.ts +0 -1
  10. package/cjs/chart/mosaic/mosaic.js +0 -3
  11. package/cjs/chart/mosaic/mosaic.js.map +1 -1
  12. package/cjs/chart/pie/interface.d.ts +2 -2
  13. package/cjs/chart/pie/interface.js.map +1 -1
  14. package/cjs/chart/polar/interface.d.ts +2 -0
  15. package/cjs/chart/polar/interface.js.map +1 -1
  16. package/cjs/compile/mark/compilable-mark.d.ts +1 -4
  17. package/cjs/compile/mark/compilable-mark.js +6 -13
  18. package/cjs/compile/mark/compilable-mark.js.map +1 -1
  19. package/cjs/compile/mark/interface.d.ts +1 -2
  20. package/cjs/compile/mark/interface.js.map +1 -1
  21. package/cjs/component/axis/base-axis.d.ts +1 -2
  22. package/cjs/component/axis/base-axis.js +0 -3
  23. package/cjs/component/axis/base-axis.js.map +1 -1
  24. package/cjs/component/axis/cartesian/axis.d.ts +1 -0
  25. package/cjs/component/axis/cartesian/axis.js +29 -2
  26. package/cjs/component/axis/cartesian/axis.js.map +1 -1
  27. package/cjs/component/axis/polar/axis.d.ts +0 -1
  28. package/cjs/component/axis/polar/axis.js +7 -37
  29. package/cjs/component/axis/polar/axis.js.map +1 -1
  30. package/cjs/component/axis/polar/interface/spec.d.ts +3 -1
  31. package/cjs/component/axis/polar/interface/spec.js.map +1 -1
  32. package/cjs/component/axis/polar/util/common.js +1 -1
  33. package/cjs/component/axis/polar/util/common.js.map +1 -1
  34. package/cjs/component/base/base-component.js +1 -3
  35. package/cjs/component/base/base-component.js.map +1 -1
  36. package/cjs/component/brush/brush.js +2 -8
  37. package/cjs/component/brush/brush.js.map +1 -1
  38. package/cjs/component/crosshair/cartesian.js +2 -18
  39. package/cjs/component/crosshair/cartesian.js.map +1 -1
  40. package/cjs/component/crosshair/polar.js +2 -18
  41. package/cjs/component/crosshair/polar.js.map +1 -1
  42. package/cjs/component/custom-mark/custom-mark.d.ts +1 -4
  43. package/cjs/component/custom-mark/custom-mark.js +3 -28
  44. package/cjs/component/custom-mark/custom-mark.js.map +1 -1
  45. package/cjs/component/data-zoom/data-zoom/data-zoom.d.ts +0 -3
  46. package/cjs/component/data-zoom/data-zoom/data-zoom.js +0 -19
  47. package/cjs/component/data-zoom/data-zoom/data-zoom.js.map +1 -1
  48. package/cjs/component/data-zoom/scroll-bar/scroll-bar.d.ts +0 -3
  49. package/cjs/component/data-zoom/scroll-bar/scroll-bar.js +0 -19
  50. package/cjs/component/data-zoom/scroll-bar/scroll-bar.js.map +1 -1
  51. package/cjs/component/indicator/indicator.js +2 -18
  52. package/cjs/component/indicator/indicator.js.map +1 -1
  53. package/cjs/component/interface/common.d.ts +1 -1
  54. package/cjs/component/interface/common.js.map +1 -1
  55. package/cjs/component/label/base-label.d.ts +1 -2
  56. package/cjs/component/label/base-label.js +0 -3
  57. package/cjs/component/label/base-label.js.map +1 -1
  58. package/cjs/component/label/interface.d.ts +2 -2
  59. package/cjs/component/label/interface.js.map +1 -1
  60. package/cjs/component/label/label.d.ts +0 -1
  61. package/cjs/component/label/label.js +2 -12
  62. package/cjs/component/label/label.js.map +1 -1
  63. package/cjs/component/label/total-label.d.ts +1 -1
  64. package/cjs/component/label/total-label.js +5 -12
  65. package/cjs/component/label/total-label.js.map +1 -1
  66. package/cjs/component/label/util.d.ts +1 -1
  67. package/cjs/component/label/util.js +12 -7
  68. package/cjs/component/label/util.js.map +1 -1
  69. package/cjs/component/legend/continuous/legend.js +6 -18
  70. package/cjs/component/legend/continuous/legend.js.map +1 -1
  71. package/cjs/component/legend/discrete/legend.js +1 -17
  72. package/cjs/component/legend/discrete/legend.js.map +1 -1
  73. package/cjs/component/legend/util.d.ts +2 -2
  74. package/cjs/component/map-label/component.js +3 -8
  75. package/cjs/component/map-label/component.js.map +1 -1
  76. package/cjs/component/marker/base-marker.js +2 -18
  77. package/cjs/component/marker/base-marker.js.map +1 -1
  78. package/cjs/component/player/player.d.ts +1 -3
  79. package/cjs/component/player/player.js +0 -9
  80. package/cjs/component/player/player.js.map +1 -1
  81. package/cjs/component/title/title.js +2 -18
  82. package/cjs/component/title/title.js.map +1 -1
  83. package/cjs/component/tooltip/tooltip.d.ts +1 -3
  84. package/cjs/component/tooltip/tooltip.js +0 -19
  85. package/cjs/component/tooltip/tooltip.js.map +1 -1
  86. package/cjs/component/util.d.ts +3 -0
  87. package/cjs/component/util.js +16 -1
  88. package/cjs/component/util.js.map +1 -1
  89. package/cjs/constant/correlation.js +1 -2
  90. package/cjs/constant/layout.js +2 -1
  91. package/cjs/core/index.d.ts +1 -1
  92. package/cjs/core/index.js +1 -1
  93. package/cjs/core/index.js.map +1 -1
  94. package/cjs/core/vchart.d.ts +1 -1
  95. package/cjs/core/vchart.js +20 -20
  96. package/cjs/core/vchart.js.map +1 -1
  97. package/cjs/event/event-dispatcher.js +1 -9
  98. package/cjs/event/event-dispatcher.js.map +1 -1
  99. package/cjs/region/region.js +2 -3
  100. package/cjs/region/region.js.map +1 -1
  101. package/cjs/series/base/base-series-transformer.js +7 -4
  102. package/cjs/series/base/base-series-transformer.js.map +1 -1
  103. package/cjs/series/base/base-series.d.ts +6 -5
  104. package/cjs/series/base/base-series.js +25 -16
  105. package/cjs/series/base/base-series.js.map +1 -1
  106. package/cjs/series/base/constant.js +1 -0
  107. package/cjs/series/base/constant.js.map +1 -1
  108. package/cjs/series/dot/dot.d.ts +0 -1
  109. package/cjs/series/dot/dot.js +0 -5
  110. package/cjs/series/dot/dot.js.map +1 -1
  111. package/cjs/series/gauge/interface.d.ts +1 -1
  112. package/cjs/series/gauge/interface.js.map +1 -1
  113. package/cjs/series/polar/animation.d.ts +9 -11
  114. package/cjs/series/polar/animation.js +28 -35
  115. package/cjs/series/polar/animation.js.map +1 -1
  116. package/cjs/series/polar/polar.js +9 -2
  117. package/cjs/series/polar/polar.js.map +1 -1
  118. package/cjs/series/radar/animation.d.ts +0 -3
  119. package/cjs/series/radar/animation.js +4 -4
  120. package/cjs/series/radar/animation.js.map +1 -1
  121. package/cjs/series/radar/radar.js +11 -7
  122. package/cjs/series/radar/radar.js.map +1 -1
  123. package/cjs/series/word-cloud/base.js +21 -10
  124. package/cjs/series/word-cloud/base.js.map +1 -1
  125. package/cjs/theme/builtin/common/mark.js +2 -0
  126. package/cjs/theme/builtin/common/mark.js.map +1 -1
  127. package/cjs/typings/spec/common.d.ts +6 -2
  128. package/cjs/typings/spec/common.js.map +1 -1
  129. package/cjs/util/math.d.ts +1 -0
  130. package/cjs/util/math.js +7 -2
  131. package/cjs/util/math.js.map +1 -1
  132. package/esm/chart/base/base-chart-transformer.js +5 -3
  133. package/esm/chart/base/base-chart-transformer.js.map +1 -1
  134. package/esm/chart/base/base-chart.js +2 -2
  135. package/esm/chart/base/base-chart.js.map +1 -1
  136. package/esm/chart/mosaic/mosaic.d.ts +0 -1
  137. package/esm/chart/mosaic/mosaic.js +0 -3
  138. package/esm/chart/mosaic/mosaic.js.map +1 -1
  139. package/esm/chart/pie/interface.d.ts +2 -2
  140. package/esm/chart/pie/interface.js.map +1 -1
  141. package/esm/chart/polar/interface.d.ts +2 -0
  142. package/esm/chart/polar/interface.js.map +1 -1
  143. package/esm/compile/mark/compilable-mark.d.ts +1 -4
  144. package/esm/compile/mark/compilable-mark.js +7 -13
  145. package/esm/compile/mark/compilable-mark.js.map +1 -1
  146. package/esm/compile/mark/interface.d.ts +1 -2
  147. package/esm/compile/mark/interface.js.map +1 -1
  148. package/esm/component/axis/base-axis.d.ts +1 -2
  149. package/esm/component/axis/base-axis.js +0 -3
  150. package/esm/component/axis/base-axis.js.map +1 -1
  151. package/esm/component/axis/cartesian/axis.d.ts +1 -0
  152. package/esm/component/axis/cartesian/axis.js +29 -2
  153. package/esm/component/axis/cartesian/axis.js.map +1 -1
  154. package/esm/component/axis/polar/axis.d.ts +0 -1
  155. package/esm/component/axis/polar/axis.js +7 -38
  156. package/esm/component/axis/polar/axis.js.map +1 -1
  157. package/esm/component/axis/polar/interface/spec.d.ts +3 -1
  158. package/esm/component/axis/polar/interface/spec.js.map +1 -1
  159. package/esm/component/axis/polar/util/common.js +2 -2
  160. package/esm/component/axis/polar/util/common.js.map +1 -1
  161. package/esm/component/base/base-component.js +1 -3
  162. package/esm/component/base/base-component.js.map +1 -1
  163. package/esm/component/brush/brush.js +4 -8
  164. package/esm/component/brush/brush.js.map +1 -1
  165. package/esm/component/crosshair/cartesian.js +4 -18
  166. package/esm/component/crosshair/cartesian.js.map +1 -1
  167. package/esm/component/crosshair/polar.js +4 -18
  168. package/esm/component/crosshair/polar.js.map +1 -1
  169. package/esm/component/custom-mark/custom-mark.d.ts +1 -4
  170. package/esm/component/custom-mark/custom-mark.js +3 -30
  171. package/esm/component/custom-mark/custom-mark.js.map +1 -1
  172. package/esm/component/data-zoom/data-zoom/data-zoom.d.ts +0 -3
  173. package/esm/component/data-zoom/data-zoom/data-zoom.js +1 -20
  174. package/esm/component/data-zoom/data-zoom/data-zoom.js.map +1 -1
  175. package/esm/component/data-zoom/scroll-bar/scroll-bar.d.ts +0 -3
  176. package/esm/component/data-zoom/scroll-bar/scroll-bar.js +1 -20
  177. package/esm/component/data-zoom/scroll-bar/scroll-bar.js.map +1 -1
  178. package/esm/component/indicator/indicator.js +4 -18
  179. package/esm/component/indicator/indicator.js.map +1 -1
  180. package/esm/component/interface/common.d.ts +1 -1
  181. package/esm/component/interface/common.js.map +1 -1
  182. package/esm/component/label/base-label.d.ts +1 -2
  183. package/esm/component/label/base-label.js +0 -3
  184. package/esm/component/label/base-label.js.map +1 -1
  185. package/esm/component/label/interface.d.ts +2 -2
  186. package/esm/component/label/interface.js.map +1 -1
  187. package/esm/component/label/label.d.ts +0 -1
  188. package/esm/component/label/label.js +1 -13
  189. package/esm/component/label/label.js.map +1 -1
  190. package/esm/component/label/total-label.d.ts +1 -1
  191. package/esm/component/label/total-label.js +4 -13
  192. package/esm/component/label/total-label.js.map +1 -1
  193. package/esm/component/label/util.d.ts +1 -1
  194. package/esm/component/label/util.js +12 -7
  195. package/esm/component/label/util.js.map +1 -1
  196. package/esm/component/legend/continuous/legend.js +7 -18
  197. package/esm/component/legend/continuous/legend.js.map +1 -1
  198. package/esm/component/legend/discrete/legend.js +3 -19
  199. package/esm/component/legend/discrete/legend.js.map +1 -1
  200. package/esm/component/legend/util.d.ts +2 -2
  201. package/esm/component/map-label/component.js +3 -7
  202. package/esm/component/map-label/component.js.map +1 -1
  203. package/esm/component/marker/base-marker.js +4 -18
  204. package/esm/component/marker/base-marker.js.map +1 -1
  205. package/esm/component/player/player.d.ts +1 -3
  206. package/esm/component/player/player.js +1 -10
  207. package/esm/component/player/player.js.map +1 -1
  208. package/esm/component/title/title.js +4 -18
  209. package/esm/component/title/title.js.map +1 -1
  210. package/esm/component/tooltip/tooltip.d.ts +1 -3
  211. package/esm/component/tooltip/tooltip.js +1 -20
  212. package/esm/component/tooltip/tooltip.js.map +1 -1
  213. package/esm/component/util.d.ts +3 -0
  214. package/esm/component/util.js +14 -1
  215. package/esm/component/util.js.map +1 -1
  216. package/esm/constant/correlation.js +1 -2
  217. package/esm/constant/layout.js +2 -1
  218. package/esm/core/index.d.ts +1 -1
  219. package/esm/core/index.js +1 -1
  220. package/esm/core/index.js.map +1 -1
  221. package/esm/core/vchart.d.ts +1 -1
  222. package/esm/core/vchart.js +22 -22
  223. package/esm/core/vchart.js.map +1 -1
  224. package/esm/event/event-dispatcher.js +1 -9
  225. package/esm/event/event-dispatcher.js.map +1 -1
  226. package/esm/region/region.js +2 -3
  227. package/esm/region/region.js.map +1 -1
  228. package/esm/series/base/base-series-transformer.js +7 -4
  229. package/esm/series/base/base-series-transformer.js.map +1 -1
  230. package/esm/series/base/base-series.d.ts +6 -5
  231. package/esm/series/base/base-series.js +23 -15
  232. package/esm/series/base/base-series.js.map +1 -1
  233. package/esm/series/base/constant.js +1 -0
  234. package/esm/series/base/constant.js.map +1 -1
  235. package/esm/series/dot/dot.d.ts +0 -1
  236. package/esm/series/dot/dot.js +0 -5
  237. package/esm/series/dot/dot.js.map +1 -1
  238. package/esm/series/gauge/interface.d.ts +1 -1
  239. package/esm/series/gauge/interface.js.map +1 -1
  240. package/esm/series/polar/animation.d.ts +9 -11
  241. package/esm/series/polar/animation.js +27 -35
  242. package/esm/series/polar/animation.js.map +1 -1
  243. package/esm/series/polar/polar.js +9 -1
  244. package/esm/series/polar/polar.js.map +1 -1
  245. package/esm/series/radar/animation.d.ts +0 -3
  246. package/esm/series/radar/animation.js +4 -4
  247. package/esm/series/radar/animation.js.map +1 -1
  248. package/esm/series/radar/radar.js +11 -7
  249. package/esm/series/radar/radar.js.map +1 -1
  250. package/esm/series/word-cloud/base.js +20 -10
  251. package/esm/series/word-cloud/base.js.map +1 -1
  252. package/esm/theme/builtin/common/mark.js +2 -0
  253. package/esm/theme/builtin/common/mark.js.map +1 -1
  254. package/esm/typings/spec/common.d.ts +6 -2
  255. package/esm/typings/spec/common.js.map +1 -1
  256. package/esm/util/math.d.ts +1 -0
  257. package/esm/util/math.js +4 -0
  258. package/esm/util/math.js.map +1 -1
  259. package/package.json +17 -17
@@ -10,7 +10,9 @@ import { ComponentTypeEnum } from "../interface/type";
10
10
 
11
11
  import { Title as TitleComponents } from "@visactor/vrender-components";
12
12
 
13
- import { isEqual, isArray, isValidNumber, pickWithout } from "@visactor/vutils";
13
+ import { isEqual, isValidNumber, pickWithout } from "@visactor/vutils";
14
+
15
+ import { getSpecInfo } from "../util";
14
16
 
15
17
  export class Title extends BaseComponent {
16
18
  get orient() {
@@ -25,23 +27,7 @@ export class Title extends BaseComponent {
25
27
  super.initLayout(), this._layout && (this._layout.layoutOrient = this._orient);
26
28
  }
27
29
  static getSpecInfo(chartSpec) {
28
- const titleSpec = chartSpec[this.specKey];
29
- if (!titleSpec || !1 === titleSpec.visible) return null;
30
- if (!isArray(titleSpec)) return [ {
31
- spec: titleSpec,
32
- specPath: [ this.specKey ],
33
- specInfoPath: [ "component", this.specKey, 0 ],
34
- type: ComponentTypeEnum.title
35
- } ];
36
- const specInfos = [];
37
- return titleSpec.forEach(((s, i) => {
38
- !1 !== s.visible && specInfos.push({
39
- spec: s,
40
- specPath: [ this.specKey, i ],
41
- specInfoPath: [ "component", this.specKey, i ],
42
- type: ComponentTypeEnum.title
43
- });
44
- })), specInfos;
30
+ return getSpecInfo(chartSpec, this.specKey, ComponentTypeEnum.title, (s => !1 !== s.visible));
45
31
  }
46
32
  onRender(ctx) {}
47
33
  _compareSpec(spec, prevSpec) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/component/title/title.ts"],"names":[],"mappings":"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","file":"title.js","sourcesContent":["import { LayoutLevel, LayoutZIndex } from '../../constant/layout';\nimport { Factory } from '../../core/factory';\nimport type { IModelSpecInfo } from '../../model/interface';\nimport type { IRegion } from '../../region/interface';\nimport type { IPoint, IOrientType, ILayoutType, ILayoutRect } from '../../typings';\nimport { isValidOrient } from '../../util/space';\nimport { BaseComponent } from '../base/base-component';\n// eslint-disable-next-line no-duplicate-imports\nimport type { IComponentOption } from '../interface';\nimport { ComponentTypeEnum } from '../interface/type';\nimport type { ITitle, ITitleSpec } from './interface';\nimport { Title as TitleComponents } from '@visactor/vrender-components';\n// eslint-disable-next-line no-duplicate-imports\nimport type { TitleAttrs } from '@visactor/vrender-components';\nimport type { IGraphic, IGroup, INode } from '@visactor/vrender-core';\nimport type { Maybe } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { isEqual, isArray, isValidNumber, pickWithout } from '@visactor/vutils';\n\nexport class Title<T extends ITitleSpec = ITitleSpec> extends BaseComponent<T> implements ITitle {\n static type = ComponentTypeEnum.title;\n type = ComponentTypeEnum.title;\n static specKey = ComponentTypeEnum.title;\n specKey: string = ComponentTypeEnum.title;\n\n layoutType: ILayoutType = 'normal';\n layoutZIndex: number = LayoutZIndex.Title;\n layoutLevel: number = LayoutLevel.Title;\n\n protected _orient: IOrientType = 'top';\n\n private _titleComponent: TitleComponents;\n private _cacheAttrs: TitleAttrs;\n\n get orient() {\n return this._orient;\n }\n\n constructor(spec: T, options: IComponentOption) {\n super(spec, options);\n this._orient = isValidOrient(spec.orient) ? spec.orient : 'top';\n }\n\n initLayout(): void {\n super.initLayout();\n this._layout && (this._layout.layoutOrient = this._orient);\n }\n\n static getSpecInfo(chartSpec: any): Maybe<IModelSpecInfo[]> {\n const titleSpec = chartSpec[this.specKey];\n if (!titleSpec || titleSpec.visible === false) {\n return null;\n }\n if (!isArray(titleSpec)) {\n return [\n {\n spec: titleSpec,\n specPath: [this.specKey],\n specInfoPath: ['component', this.specKey, 0],\n type: ComponentTypeEnum.title\n }\n ];\n }\n const specInfos: IModelSpecInfo[] = [];\n titleSpec.forEach((s: any, i: number) => {\n if (s.visible !== false) {\n specInfos.push({\n spec: s,\n specPath: [this.specKey, i],\n specInfoPath: ['component', this.specKey, i],\n type: ComponentTypeEnum.title\n });\n }\n });\n return specInfos;\n }\n\n onRender(ctx: any): void {\n // do nothing\n }\n\n /**\n * updateSpec\n */\n _compareSpec(spec: T, prevSpec: T) {\n const result = super._compareSpec(spec, prevSpec);\n\n if (prevSpec?.orient !== spec?.orient || (prevSpec as any)?.visible !== (spec as any).visible) {\n // title 组件切换visible会影响布局,所以需要重新remake\n result.reMake = true;\n }\n\n result.change = true;\n result.reRender = true;\n return result;\n }\n\n // region\n changeRegions(regions: IRegion[]): void {\n // do nothing\n }\n\n update(ctx: IComponentOption) {\n // TODO\n }\n\n resize(ctx: IComponentOption) {\n // TODO\n }\n\n afterSetLayoutStartPoint(pos: IPoint): void {\n if (isValidNumber(pos.x)) {\n this._titleComponent && this._titleComponent.setAttribute('x', pos.x);\n }\n if (isValidNumber(pos.y)) {\n this._titleComponent && this._titleComponent.setAttribute('y', pos.y);\n }\n super.afterSetLayoutStartPoint(pos);\n }\n\n getBoundsInRect(rect: ILayoutRect) {\n let result: Partial<ILayoutRect> = {};\n this.setLayoutRect(rect);\n\n const attrs = this._getTitleAttrs();\n this._createOrUpdateTitleComponent(attrs);\n\n result = this._getTitleLayoutRect();\n const { x, y } = this.getLayoutStartPoint();\n return {\n x1: x,\n y1: y,\n x2: x + result.width,\n y2: y + result.height\n };\n }\n\n private _getTitleLayoutRect() {\n const titleBounds = this._titleComponent.AABBBounds;\n const width = this._spec.width ? this._spec.width : isValidNumber(titleBounds.width()) ? titleBounds.width() : 0;\n const height = this._spec.height\n ? this._spec.height\n : isValidNumber(titleBounds.height())\n ? titleBounds.height()\n : 0;\n return {\n width,\n height\n };\n }\n\n private _getTitleAttrs() {\n // 当 width 小于 0 时,设置为 0,负数场景容易引起不可预知的问题\n const realWidth = Math.max(0, this._spec.width ?? this.getLayoutRect().width);\n if (this._spec.visible === false) {\n return { visible: false };\n }\n\n return {\n ...(pickWithout(this._spec, ['padding']) as any),\n textType: this._spec.textType ?? 'text',\n text: this._spec.text ?? '',\n subtextType: this._spec.subtextType ?? 'text',\n subtext: this._spec.subtext ?? '',\n x: this._spec.x ?? 0,\n y: this._spec.y ?? 0,\n width: realWidth,\n height: this._spec.height,\n minWidth: this._spec.minWidth,\n maxWidth: this._spec.maxWidth,\n minHeight: this._spec.minHeight,\n maxHeight: this._spec.maxHeight,\n padding: this._spec.innerPadding,\n align: this._spec.align ?? 'left',\n verticalAlign: this._spec.verticalAlign ?? 'top',\n textStyle: {\n width: realWidth,\n ...this._spec.textStyle\n },\n subtextStyle: {\n width: realWidth,\n ...this._spec.subtextStyle\n }\n } as TitleAttrs;\n }\n\n private _createOrUpdateTitleComponent(attrs: TitleAttrs): TitleComponents {\n if (this._titleComponent) {\n if (!isEqual(attrs, this._cacheAttrs)) {\n this._titleComponent.setAttributes(attrs);\n }\n } else {\n const container = this.getContainer();\n const title = new TitleComponents(attrs);\n title.name = 'title';\n container.add(title as unknown as INode);\n this._titleComponent = title;\n // 代理 title 组件上的事件\n title.on('*', (event: any, type: string) => this._delegateEvent(title as unknown as IGraphic, event, type));\n }\n this._cacheAttrs = attrs;\n return this._titleComponent;\n }\n\n protected _getNeedClearVRenderComponents(): IGraphic[] {\n return [this._titleComponent] as unknown as IGroup[];\n }\n\n clear(): void {\n super.clear();\n this._cacheAttrs = null;\n }\n}\n\nexport const registerTitle = () => {\n Factory.registerComponent(Title.type, Title);\n};\n"]}
1
+ {"version":3,"sources":["../src/component/title/title.ts"],"names":[],"mappings":"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","file":"title.js","sourcesContent":["import { LayoutLevel, LayoutZIndex } from '../../constant/layout';\nimport { Factory } from '../../core/factory';\nimport type { IModelSpecInfo } from '../../model/interface';\nimport type { IRegion } from '../../region/interface';\nimport type { IPoint, IOrientType, ILayoutType, ILayoutRect } from '../../typings';\nimport { isValidOrient } from '../../util/space';\nimport { BaseComponent } from '../base/base-component';\n// eslint-disable-next-line no-duplicate-imports\nimport type { IComponentOption } from '../interface';\nimport { ComponentTypeEnum } from '../interface/type';\nimport type { ITitle, ITitleSpec } from './interface';\nimport { Title as TitleComponents } from '@visactor/vrender-components';\n// eslint-disable-next-line no-duplicate-imports\nimport type { TitleAttrs } from '@visactor/vrender-components';\nimport type { IGraphic, IGroup, INode } from '@visactor/vrender-core';\nimport type { Maybe } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { isEqual, isArray, isValidNumber, pickWithout } from '@visactor/vutils';\nimport { getSpecInfo } from '../util';\n\nexport class Title<T extends ITitleSpec = ITitleSpec> extends BaseComponent<T> implements ITitle {\n static type = ComponentTypeEnum.title;\n type = ComponentTypeEnum.title;\n static specKey = ComponentTypeEnum.title;\n specKey: string = ComponentTypeEnum.title;\n\n layoutType: ILayoutType = 'normal';\n layoutZIndex: number = LayoutZIndex.Title;\n layoutLevel: number = LayoutLevel.Title;\n\n protected _orient: IOrientType = 'top';\n\n private _titleComponent: TitleComponents;\n private _cacheAttrs: TitleAttrs;\n\n get orient() {\n return this._orient;\n }\n\n constructor(spec: T, options: IComponentOption) {\n super(spec, options);\n this._orient = isValidOrient(spec.orient) ? spec.orient : 'top';\n }\n\n initLayout(): void {\n super.initLayout();\n this._layout && (this._layout.layoutOrient = this._orient);\n }\n\n static getSpecInfo(chartSpec: any): Maybe<IModelSpecInfo[]> {\n return getSpecInfo<ITitleSpec>(chartSpec, this.specKey, ComponentTypeEnum.title, (s: ITitleSpec) => {\n return s.visible !== false;\n });\n }\n\n onRender(ctx: any): void {\n // do nothing\n }\n\n /**\n * updateSpec\n */\n _compareSpec(spec: T, prevSpec: T) {\n const result = super._compareSpec(spec, prevSpec);\n\n if (prevSpec?.orient !== spec?.orient || (prevSpec as any)?.visible !== (spec as any).visible) {\n // title 组件切换visible会影响布局,所以需要重新remake\n result.reMake = true;\n }\n\n result.change = true;\n result.reRender = true;\n return result;\n }\n\n // region\n changeRegions(regions: IRegion[]): void {\n // do nothing\n }\n\n update(ctx: IComponentOption) {\n // TODO\n }\n\n resize(ctx: IComponentOption) {\n // TODO\n }\n\n afterSetLayoutStartPoint(pos: IPoint): void {\n if (isValidNumber(pos.x)) {\n this._titleComponent && this._titleComponent.setAttribute('x', pos.x);\n }\n if (isValidNumber(pos.y)) {\n this._titleComponent && this._titleComponent.setAttribute('y', pos.y);\n }\n super.afterSetLayoutStartPoint(pos);\n }\n\n getBoundsInRect(rect: ILayoutRect) {\n let result: Partial<ILayoutRect> = {};\n this.setLayoutRect(rect);\n\n const attrs = this._getTitleAttrs();\n this._createOrUpdateTitleComponent(attrs);\n\n result = this._getTitleLayoutRect();\n const { x, y } = this.getLayoutStartPoint();\n return {\n x1: x,\n y1: y,\n x2: x + result.width,\n y2: y + result.height\n };\n }\n\n private _getTitleLayoutRect() {\n const titleBounds = this._titleComponent.AABBBounds;\n const width = this._spec.width ? this._spec.width : isValidNumber(titleBounds.width()) ? titleBounds.width() : 0;\n const height = this._spec.height\n ? this._spec.height\n : isValidNumber(titleBounds.height())\n ? titleBounds.height()\n : 0;\n return {\n width,\n height\n };\n }\n\n private _getTitleAttrs() {\n // 当 width 小于 0 时,设置为 0,负数场景容易引起不可预知的问题\n const realWidth = Math.max(0, this._spec.width ?? this.getLayoutRect().width);\n if (this._spec.visible === false) {\n return { visible: false };\n }\n\n return {\n ...(pickWithout(this._spec, ['padding']) as any),\n textType: this._spec.textType ?? 'text',\n text: this._spec.text ?? '',\n subtextType: this._spec.subtextType ?? 'text',\n subtext: this._spec.subtext ?? '',\n x: this._spec.x ?? 0,\n y: this._spec.y ?? 0,\n width: realWidth,\n height: this._spec.height,\n minWidth: this._spec.minWidth,\n maxWidth: this._spec.maxWidth,\n minHeight: this._spec.minHeight,\n maxHeight: this._spec.maxHeight,\n padding: this._spec.innerPadding,\n align: this._spec.align ?? 'left',\n verticalAlign: this._spec.verticalAlign ?? 'top',\n textStyle: {\n width: realWidth,\n ...this._spec.textStyle\n },\n subtextStyle: {\n width: realWidth,\n ...this._spec.subtextStyle\n }\n } as TitleAttrs;\n }\n\n private _createOrUpdateTitleComponent(attrs: TitleAttrs): TitleComponents {\n if (this._titleComponent) {\n if (!isEqual(attrs, this._cacheAttrs)) {\n this._titleComponent.setAttributes(attrs);\n }\n } else {\n const container = this.getContainer();\n const title = new TitleComponents(attrs);\n title.name = 'title';\n container.add(title as unknown as INode);\n this._titleComponent = title;\n // 代理 title 组件上的事件\n title.on('*', (event: any, type: string) => this._delegateEvent(title as unknown as IGraphic, event, type));\n }\n this._cacheAttrs = attrs;\n return this._titleComponent;\n }\n\n protected _getNeedClearVRenderComponents(): IGraphic[] {\n return [this._titleComponent] as unknown as IGroup[];\n }\n\n clear(): void {\n super.clear();\n this._cacheAttrs = null;\n }\n}\n\nexport const registerTitle = () => {\n Factory.registerComponent(Title.type, Title);\n};\n"]}
@@ -1,5 +1,5 @@
1
1
  import { ComponentTypeEnum } from '../interface/type';
2
- import type { IModelLayoutOption, IModelRenderOption, IModelSpecInfo } from '../../model/interface';
2
+ import type { IModelLayoutOption, IModelRenderOption } from '../../model/interface';
3
3
  import type { IRegion } from '../../region/interface';
4
4
  import { BaseComponent } from '../base/base-component';
5
5
  import type { BaseEventParams, EventCallback, EventQuery, EventType } from '../../event/interface';
@@ -8,7 +8,6 @@ import type { Datum, IShowTooltipOption } from '../../typings';
8
8
  import type { ITooltip, ITooltipActiveTypeAsKeys, ITooltipSpec, TooltipHandlerParams, TotalMouseEventData } from './interface';
9
9
  import { TooltipResult } from './interface/common';
10
10
  import { GroupTooltipProcessor, DimensionTooltipProcessor, MarkTooltipProcessor } from './processor';
11
- import type { Maybe } from '@visactor/vutils';
12
11
  import type { IGraphic } from '@visactor/vrender-core';
13
12
  import { TooltipSpecTransformer } from './tooltip-transformer';
14
13
  export declare class Tooltip extends BaseComponent<any> implements ITooltip {
@@ -23,7 +22,6 @@ export declare class Tooltip extends BaseComponent<any> implements ITooltip {
23
22
  layoutType: 'none';
24
23
  private _timer?;
25
24
  protected _spec: ITooltipSpec;
26
- static getSpecInfo(chartSpec: any): Maybe<IModelSpecInfo[]>;
27
25
  tooltipHandler?: ITooltipHandler;
28
26
  processor: ITooltipActiveTypeAsKeys<MarkTooltipProcessor, DimensionTooltipProcessor, GroupTooltipProcessor>;
29
27
  private _alwaysShow;
@@ -16,7 +16,7 @@ import { GroupTooltipProcessor, DimensionTooltipProcessor, MarkTooltipProcessor
16
16
 
17
17
  import { isDimensionInfo, isMarkInfo } from "./processor/util";
18
18
 
19
- import { hasParentElement, isArray, isValid, isNil, array } from "@visactor/vutils";
19
+ import { hasParentElement, isValid, isNil, array } from "@visactor/vutils";
20
20
 
21
21
  import { VChart } from "../../core/vchart";
22
22
 
@@ -115,25 +115,6 @@ export class Tooltip extends BaseComponent {
115
115
  return 1;
116
116
  };
117
117
  }
118
- static getSpecInfo(chartSpec) {
119
- const tooltipSpec = chartSpec[this.specKey];
120
- if (!tooltipSpec) return null;
121
- if (!isArray(tooltipSpec)) return [ {
122
- spec: tooltipSpec,
123
- specPath: [ this.specKey ],
124
- specInfoPath: [ "component", this.specKey, 0 ],
125
- type: ComponentTypeEnum.tooltip
126
- } ];
127
- const specInfos = [];
128
- return tooltipSpec.forEach(((s, i) => {
129
- specInfos.push({
130
- spec: s,
131
- specPath: [ this.specKey, i ],
132
- specInfoPath: [ "component", this.specKey, i ],
133
- type: ComponentTypeEnum.tooltip
134
- });
135
- })), specInfos;
136
- }
137
118
  isTooltipShown() {
138
119
  return this._isTooltipShown;
139
120
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/component/tooltip/tooltip.ts"],"names":[],"mappings":"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","file":"tooltip.js","sourcesContent":["import { ComponentTypeEnum } from '../interface/type';\nimport type { IModelLayoutOption, IModelRenderOption, IModelSpecInfo } from '../../model/interface';\nimport type { IRegion } from '../../region/interface';\nimport { BaseComponent } from '../base/base-component';\nimport type { BaseEventParams, EventCallback, EventQuery, EventType } from '../../event/interface';\nimport type { ITooltipHandler, TooltipActiveType } from '../../typings/tooltip';\nimport type { Datum, IPoint, IShowTooltipOption } from '../../typings';\nimport { isMobileLikeMode, isTrueBrowser, isMiniAppLikeMode } from '../../util/env';\nimport type {\n ITooltip,\n ITooltipActiveTypeAsKeys,\n ITooltipSpec,\n TooltipHandlerParams,\n TotalMouseEventData\n} from './interface';\nimport { TooltipResult } from './interface/common';\nimport { showTooltip } from './utils/show-tooltip';\nimport { isEmptyPos } from './utils/common';\nimport { isSameDimensionInfo } from '../../event/events/dimension/util/common';\nimport { ChartEvent, Event_Source_Type } from '../../constant/event';\nimport type { BaseTooltipProcessor, DimensionTooltipInfo, MarkTooltipInfo, TooltipInfo } from './processor';\n// eslint-disable-next-line no-duplicate-imports\nimport { GroupTooltipProcessor, DimensionTooltipProcessor, MarkTooltipProcessor } from './processor';\nimport { isDimensionInfo, isMarkInfo } from './processor/util';\nimport type { Maybe } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { hasParentElement, isArray, isValid, isNil, array } from '@visactor/vutils';\nimport { VChart } from '../../core/vchart';\nimport type { TooltipEventParams } from './interface/event';\nimport { Factory } from '../../core/factory';\nimport type { IGraphic } from '@visactor/vrender-core';\nimport { TooltipSpecTransformer } from './tooltip-transformer';\nimport { error } from '../../util';\nimport { TOOLTIP_TYPES, TooltipHandlerType } from './constant';\n\ntype EventHandlerList = {\n eventType: EventType;\n handler: any;\n}[];\n\nexport class Tooltip extends BaseComponent<any> implements ITooltip {\n protected layoutZIndex: number = 1;\n static type = ComponentTypeEnum.tooltip;\n static readonly transformerConstructor = TooltipSpecTransformer;\n type = ComponentTypeEnum.tooltip;\n name: string = ComponentTypeEnum.tooltip;\n readonly transformerConstructor = TooltipSpecTransformer;\n\n static specKey = 'tooltip';\n specKey = 'tooltip';\n\n layoutType: 'none' = 'none';\n private _timer?: number;\n protected declare _spec: ITooltipSpec;\n\n static getSpecInfo(chartSpec: any): Maybe<IModelSpecInfo[]> {\n const tooltipSpec = chartSpec[this.specKey];\n if (!tooltipSpec) {\n return null;\n }\n if (!isArray(tooltipSpec)) {\n return [\n {\n spec: tooltipSpec,\n specPath: [this.specKey],\n specInfoPath: ['component', this.specKey, 0],\n type: ComponentTypeEnum.tooltip\n }\n ];\n }\n const specInfos: IModelSpecInfo[] = [];\n tooltipSpec.forEach((s: any, i: number) => {\n specInfos.push({\n spec: s,\n specPath: [this.specKey, i],\n specInfoPath: ['component', this.specKey, i],\n type: ComponentTypeEnum.tooltip\n });\n });\n return specInfos;\n }\n\n tooltipHandler?: ITooltipHandler;\n\n processor: ITooltipActiveTypeAsKeys<MarkTooltipProcessor, DimensionTooltipProcessor, GroupTooltipProcessor>;\n\n private _alwaysShow: boolean = false;\n\n private _cacheInfo: TooltipInfo | undefined;\n private _cacheParams: BaseEventParams | undefined;\n private _cacheActiveType: TooltipActiveType | undefined;\n\n private _eventList: EventHandlerList = [];\n\n protected _isTooltipShown: boolean = false;\n\n protected _clickLock: boolean = false;\n\n /** 当前是否正在显示 tooltip */\n isTooltipShown() {\n return this._isTooltipShown;\n }\n\n changeRegions(regions: IRegion[]) {\n /* do nothing */\n }\n protected _getNeedClearVRenderComponents(): IGraphic[] {\n return [];\n }\n protected _registerEvent() {\n /* do nothing */\n }\n protected _releaseEvent() {\n /* do nothing */\n }\n onLayout(ctx: IModelLayoutOption) {\n /* do nothing */\n }\n onLayoutEnd(ctx: IModelLayoutOption) {\n /* do nothing */\n }\n onRender(ctx: IModelRenderOption) {\n /* do nothing */\n }\n\n created() {\n super.created();\n this._regions = this._option.getAllRegions();\n // event\n this._initEvent();\n }\n\n release() {\n super.release();\n if (this._timer) {\n clearTimeout(this._timer);\n }\n\n this._eventList.forEach(({ eventType, handler }) => {\n this.event.off(eventType, handler);\n });\n this._eventList = [];\n this.tooltipHandler?.release?.();\n this._isTooltipShown = false;\n }\n\n beforeRelease() {\n // 触发事件\n this.event.emit(ChartEvent.tooltipHide, {\n tooltip: this,\n chart: this.getChart()\n } as unknown as TooltipEventParams);\n this.event.emit(ChartEvent.tooltipRelease, {\n tooltip: this,\n chart: this.getChart()\n } as unknown as TooltipEventParams);\n }\n\n protected _initHandler() {\n const renderMode = this._spec.renderMode ?? 'html';\n\n const userTooltipHandler = this._option.globalInstance.getTooltipHandlerByUser();\n if (userTooltipHandler) {\n this.tooltipHandler = userTooltipHandler;\n } else {\n // 构造内部默认 handler\n const type = renderMode === 'canvas' ? TooltipHandlerType.canvas : TooltipHandlerType.dom;\n const handlerConstructor = Factory.getComponentPluginInType(type);\n if (!handlerConstructor) {\n error('Can not find tooltip handler: ' + type);\n }\n const handler = new handlerConstructor();\n handler.name = `${this._spec.className}-${this._option.globalInstance.id ?? 0}-${this.getSpecIndex()}`;\n this.pluginService?.load([handler]);\n\n this.tooltipHandler = handler as unknown as ITooltipHandler;\n }\n }\n\n protected _initProcessor() {\n // 初始化 tooltip 类型\n const activeType = this._spec.activeType;\n\n this.processor = {};\n\n if (activeType.includes('dimension')) {\n this.processor.dimension = new DimensionTooltipProcessor(this);\n }\n\n if (activeType.includes('group')) {\n this.processor.group = new GroupTooltipProcessor(this);\n }\n\n if (activeType.includes('mark')) {\n this.processor.mark = new MarkTooltipProcessor(this);\n }\n }\n\n protected _initEvent() {\n if (this._option.disableTriggerEvent) {\n return;\n }\n const trigger = array(this._spec.trigger ?? 'hover');\n // TODO: triggerOff完整支持\n // const triggerOff = this._spec.triggerOff ?? trigger;\n const mode = this._option.mode;\n\n if (trigger.includes('hover')) {\n this._mountEvent('pointermove', { source: 'chart' }, this._getMouseMoveHandler(false));\n // 移动端的点按 + 滑动触发\n if (isMobileLikeMode(mode) || isMiniAppLikeMode(mode)) {\n this._mountEvent('pointerdown', { source: 'chart' }, this._getMouseMoveHandler(false));\n this._mountEvent('pointerup', { source: 'window' }, this._getMouseOutHandler(true));\n }\n this._mountEvent('pointerout', { source: 'canvas' }, this._getMouseOutHandler(false));\n }\n if (trigger.includes('click')) {\n this._mountEvent('pointertap', { source: 'chart' }, this._getMouseMoveHandler(true));\n this._mountEvent('pointerup', { source: 'window' }, this._getMouseOutHandler(true));\n } else if (this._spec.lockAfterClick) {\n this._mountEvent('pointertap', { source: 'chart' }, this._handleClickToLock);\n }\n }\n\n protected _mountEvent = (eType: EventType, query: EventQuery, callback: EventCallback<any>) => {\n this.event.on(eType, query, callback);\n this._eventList.push({\n eventType: eType,\n handler: callback\n });\n };\n\n protected _handleClickToLock = (params: BaseEventParams) => {\n if (this._clickLock) {\n this._handleChartMouseOut(params);\n this._clickLock = false;\n } else {\n this._clickLock = true;\n }\n };\n\n protected _getMouseOutHandler = (needPointerDetection?: boolean) => (params: BaseEventParams) => {\n if (this._alwaysShow || this._clickLock) {\n return;\n }\n\n if (!this._isTooltipShown && !this.tooltipHandler?.isTooltipShown?.()) {\n return;\n }\n\n const browserEnv = isTrueBrowser(this._option?.mode);\n const { clientX, clientY } = params.event as MouseEvent;\n\n // 当 enterable 为 true,同时鼠标移入 tooltip 时 pointerleave 事件也会触发,所以这里做一个判断\n if (browserEnv && this._isPointerOnTooltip(params)) {\n return;\n }\n\n // 判断鼠标是否在图表范围内\n if (browserEnv && needPointerDetection && this._isPointerInChart({ x: clientX, y: clientY })) {\n return;\n }\n\n this._handleChartMouseOut(params);\n };\n\n protected _handleChartMouseOut = (params?: BaseEventParams) => {\n if (this._alwaysShow) {\n return;\n }\n\n if (this._spec.triggerOff !== 'none') {\n this._hideTooltipByHandler({\n ...(params as any),\n tooltip: this\n });\n this._cacheInfo = undefined;\n this._cacheParams = undefined;\n this._cacheActiveType = undefined;\n }\n };\n\n protected _getMouseMoveHandler = (isClick: boolean) => (params: BaseEventParams) => {\n if (!this.tooltipHandler) {\n this._initHandler();\n }\n\n if (!this.processor) {\n this._initProcessor();\n }\n\n if (this._alwaysShow) {\n return;\n }\n if (this._isPointerOnTooltip(params)) {\n return;\n }\n\n if (this._clickLock) {\n if (isClick) {\n this._handleChartMouseOut(params);\n this._clickLock = false;\n }\n return;\n }\n\n /* 获取 tooltip 原始数据 */\n const mouseEventData = this._getMouseEventData(params);\n const {\n tooltipInfo: { dimension: dimensionInfo },\n ignore: { mark: ignoreMark, dimension: ignoreDimension }\n } = mouseEventData;\n\n /** tooltip 是否显示成功 */\n const success: ITooltipActiveTypeAsKeys<boolean, boolean, boolean> = {\n mark: false,\n dimension: false,\n group: false\n };\n\n for (let i = 0, len = TOOLTIP_TYPES.length; i < len; i++) {\n const type = TOOLTIP_TYPES[i];\n const res = this.processor[type] ? this._showTooltipByMouseEvent(type, mouseEventData, params, isClick) : false;\n\n if (res) {\n success[type] = true;\n break;\n }\n }\n\n /* 如果不是常规情况,进行一些特殊情况tooltip处理 */\n if (Object.values(success).every(val => !val) && !isEmptyPos(params)) {\n // 用户手动配置ignore,则继续显示缓存tooltip\n if (ignoreMark && isMarkInfo(this._cacheInfo)) {\n success.mark = this._showTooltipByMouseEvent('mark', mouseEventData, params, isClick, true);\n } else if (isValid(dimensionInfo)) {\n // 用户没有手动配置ignore的话,默认显示dimension tooltip\n success.dimension = this._showTooltipByMouseEvent('dimension', mouseEventData, params, isClick);\n }\n }\n\n /* 如果还是不应该显示tooltip,则隐藏上一次tooltip */\n if (!success.mark && !success.group && (!success.dimension || isNil(dimensionInfo))) {\n this._handleChartMouseOut(params);\n }\n };\n\n /**\n * 通过鼠标事件触发 tooltip,返回是否成功\n * @param activeType tooltip 类型\n * @param mouseEventData tooltip 相关数据\n * @param params 事件参数\n * @param useCache 是否直接显示缓存 tooltip\n * @returns 是否成功执行\n */\n protected _showTooltipByMouseEvent = (\n activeType: TooltipActiveType,\n mouseEventData: TotalMouseEventData,\n params: BaseEventParams,\n isClick: boolean,\n useCache?: boolean\n ): boolean => {\n const processor = this.processor[activeType];\n // 判断是否应该触发 tooltip\n if (!processor.shouldHandleTooltip(params, mouseEventData.tooltipInfo[activeType])) {\n return false;\n }\n if (this._timer) {\n clearTimeout(this._timer);\n }\n\n let success: boolean;\n if (useCache) {\n // 直接显示缓存 tooltip\n success = !processor.showTooltip(this._cacheInfo as any, params, true);\n } else {\n const tooltipInfo = mouseEventData.tooltipInfo[activeType];\n const isSameAsCache = this._isSameAsCache(tooltipInfo, params, activeType);\n success = !processor.showTooltip(tooltipInfo as any, params, isSameAsCache);\n if (success) {\n // 成功显示 tooltip,则更新缓存\n this._cacheInfo = tooltipInfo;\n this._cacheParams = params;\n this._cacheActiveType = activeType;\n }\n }\n if (success) {\n this._isTooltipShown = true;\n if (isClick && this._spec.lockAfterClick && !this._clickLock) {\n this._clickLock = true;\n } else if (Number.isFinite(this._spec.hideTimer)) {\n this._timer = setTimeout(() => {\n this._handleChartMouseOut();\n }, this._spec.hideTimer as number) as unknown as number;\n }\n }\n // 全局唯一 tooltip\n const vchart = this._option?.globalInstance;\n if (success && VChart.globalConfig.uniqueTooltip && vchart) {\n VChart.hideTooltip(vchart.id);\n }\n return success;\n };\n\n protected _getMouseEventData = (params: BaseEventParams): TotalMouseEventData => {\n const result: TotalMouseEventData = {\n tooltipInfo: {},\n ignore: {}\n };\n\n Object.keys(this.processor).forEach(activeType => {\n const { tooltipInfo, ignore } = this.processor[activeType as TooltipActiveType].getMouseEventData(params);\n result.tooltipInfo[activeType as TooltipActiveType] = tooltipInfo as any;\n result.ignore[activeType as TooltipActiveType] = ignore;\n });\n return result;\n };\n\n protected _hideTooltipByHandler = (params: TooltipHandlerParams): TooltipResult => {\n if (!this._isTooltipShown && !this.tooltipHandler?.isTooltipShown?.()) {\n // 如果当前 tooltip 未显示,则提前退出\n return TooltipResult.success;\n }\n\n // 触发事件\n this.event.emit(ChartEvent.tooltipHide, {\n ...params,\n source: Event_Source_Type.chart, // 统一 event 的来源\n tooltip: this\n });\n\n // 删除缓存\n Object.values(this.processor).forEach((processor: BaseTooltipProcessor) => {\n processor.clearCache();\n });\n\n // 隐藏 tooltip\n const handler = this._spec.handler ?? this.tooltipHandler;\n\n if (handler.hideTooltip) {\n const result = handler.hideTooltip.call(handler, params);\n if (!result) {\n this._isTooltipShown = false;\n }\n return result;\n }\n return TooltipResult.failed;\n };\n\n reInit(spec?: any) {\n super.reInit(spec);\n\n if (this.tooltipHandler) {\n this.tooltipHandler.reInit?.();\n } else {\n this._initHandler();\n }\n }\n\n showTooltip(datum: Datum, options: IShowTooltipOption) {\n if (!this.tooltipHandler) {\n this._initHandler();\n }\n\n if (!this.processor) {\n this._initProcessor();\n }\n\n if (!this.tooltipHandler?.showTooltip) {\n return false;\n }\n const result = showTooltip(datum, options, this);\n if (result !== 'none') {\n this._alwaysShow = !!options?.alwaysShow;\n }\n return result;\n }\n\n /** 手动隐藏 tooltip,返回是否成功 */\n hideTooltip(): boolean {\n const params: TooltipHandlerParams = {\n changePositionOnly: false,\n tooltip: this,\n item: undefined,\n datum: undefined,\n source: Event_Source_Type.chart\n } as any;\n\n this._alwaysShow = false;\n return !this._hideTooltipByHandler(params);\n }\n\n private _isSameAsCache(\n nextInfo?: TooltipInfo,\n nextParams?: BaseEventParams,\n nextActiveType?: TooltipActiveType\n ): boolean {\n if (nextActiveType !== this._cacheActiveType) {\n return false;\n }\n if (nextInfo === this._cacheInfo) {\n return true;\n }\n if (isNil(this._cacheInfo) || isNil(nextInfo)) {\n return false;\n }\n\n // 判断 tooltip 信息是否一致\n if (isDimensionInfo(nextInfo)) {\n if (isMarkInfo(this._cacheInfo)) {\n return false;\n }\n\n const prevInfo = this._cacheInfo as DimensionTooltipInfo;\n const isSameAsCacheInfo =\n prevInfo.length === nextInfo.length && nextInfo.every((info, i) => isSameDimensionInfo(info, prevInfo[i]));\n if (!isSameAsCacheInfo) {\n return false;\n }\n } else {\n if (isDimensionInfo(this._cacheInfo)) {\n return false;\n }\n\n const prevInfo = this._cacheInfo as MarkTooltipInfo;\n const isSameAsCacheInfo =\n nextInfo?.datum === prevInfo.datum && nextInfo?.mark === prevInfo.mark && nextInfo?.series === prevInfo.series;\n if (!isSameAsCacheInfo) {\n return false;\n }\n }\n\n // 判断事件触发信息是否一致\n const prevParams = this._cacheParams;\n if (isNil(prevParams) || isNil(nextParams)) {\n return false;\n }\n return (\n prevParams.mark === nextParams.mark &&\n prevParams.model === nextParams.model &&\n prevParams.datum === nextParams.datum\n );\n }\n\n private _isPointerInChart(point: IPoint): boolean {\n const globalInstance = this._option?.globalInstance;\n if (!globalInstance) {\n return false;\n }\n const chart = globalInstance.getChart();\n if (!chart) {\n return false;\n }\n const { x, y } = point;\n const canvas = globalInstance.getCanvas();\n const { x: chartX, y: chartY, width: chartWidth, height: chartHeight } = canvas.getBoundingClientRect();\n // 鼠标仍在图表范围内,则不处理\n if (x >= chartX && x <= chartX + chartWidth && y >= chartY && y <= chartY + chartHeight) {\n return true;\n }\n\n return false;\n }\n\n private _isPointerOnTooltip(params: BaseEventParams): boolean {\n // TODO:后续支持 renderMode === 'canvas' 场景\n if (this._spec.enterable && this._spec.renderMode === 'html') {\n const { event } = params;\n let newTarget: any;\n if (isValid(event.nativeEvent)) {\n // get native event object\n const nativeEvent = event.nativeEvent as any;\n newTarget = nativeEvent.relatedTarget;\n // if in shadow DOM use composedPath to access target\n // FIXME: shadow DOM 的 relatedTarget 的属性是?\n if (nativeEvent.composedPath && nativeEvent.composedPath().length > 0) {\n newTarget = nativeEvent.composedPath()[0];\n }\n } else {\n newTarget = event.relatedTarget;\n }\n const container = this.tooltipHandler?.getTooltipContainer?.();\n if (isValid(container) && isValid(newTarget) && hasParentElement(newTarget, container)) {\n return true;\n }\n }\n return false;\n }\n\n getVisible() {\n return this._spec.visible !== false;\n }\n}\n\nexport const registerTooltip = () => {\n Factory.registerComponent(Tooltip.type, Tooltip);\n};\n"]}
1
+ {"version":3,"sources":["../src/component/tooltip/tooltip.ts"],"names":[],"mappings":"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","file":"tooltip.js","sourcesContent":["import { ComponentTypeEnum } from '../interface/type';\nimport type { IModelLayoutOption, IModelRenderOption } from '../../model/interface';\nimport type { IRegion } from '../../region/interface';\nimport { BaseComponent } from '../base/base-component';\nimport type { BaseEventParams, EventCallback, EventQuery, EventType } from '../../event/interface';\nimport type { ITooltipHandler, TooltipActiveType } from '../../typings/tooltip';\nimport type { Datum, IPoint, IShowTooltipOption } from '../../typings';\nimport { isMobileLikeMode, isTrueBrowser, isMiniAppLikeMode } from '../../util/env';\nimport type {\n ITooltip,\n ITooltipActiveTypeAsKeys,\n ITooltipSpec,\n TooltipHandlerParams,\n TotalMouseEventData\n} from './interface';\nimport { TooltipResult } from './interface/common';\nimport { showTooltip } from './utils/show-tooltip';\nimport { isEmptyPos } from './utils/common';\nimport { isSameDimensionInfo } from '../../event/events/dimension/util/common';\nimport { ChartEvent, Event_Source_Type } from '../../constant/event';\nimport type { BaseTooltipProcessor, DimensionTooltipInfo, MarkTooltipInfo, TooltipInfo } from './processor';\n// eslint-disable-next-line no-duplicate-imports\nimport { GroupTooltipProcessor, DimensionTooltipProcessor, MarkTooltipProcessor } from './processor';\nimport { isDimensionInfo, isMarkInfo } from './processor/util';\nimport type { Maybe } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { hasParentElement, isArray, isValid, isNil, array } from '@visactor/vutils';\nimport { VChart } from '../../core/vchart';\nimport type { TooltipEventParams } from './interface/event';\nimport { Factory } from '../../core/factory';\nimport type { IGraphic } from '@visactor/vrender-core';\nimport { TooltipSpecTransformer } from './tooltip-transformer';\nimport { error } from '../../util';\nimport { TOOLTIP_TYPES, TooltipHandlerType } from './constant';\n\ntype EventHandlerList = {\n eventType: EventType;\n handler: any;\n}[];\n\nexport class Tooltip extends BaseComponent<any> implements ITooltip {\n protected layoutZIndex: number = 1;\n static type = ComponentTypeEnum.tooltip;\n static readonly transformerConstructor = TooltipSpecTransformer;\n type = ComponentTypeEnum.tooltip;\n name: string = ComponentTypeEnum.tooltip;\n readonly transformerConstructor = TooltipSpecTransformer;\n\n static specKey = 'tooltip';\n specKey = 'tooltip';\n\n layoutType: 'none' = 'none';\n private _timer?: number;\n protected declare _spec: ITooltipSpec;\n\n tooltipHandler?: ITooltipHandler;\n\n processor: ITooltipActiveTypeAsKeys<MarkTooltipProcessor, DimensionTooltipProcessor, GroupTooltipProcessor>;\n\n private _alwaysShow: boolean = false;\n\n private _cacheInfo: TooltipInfo | undefined;\n private _cacheParams: BaseEventParams | undefined;\n private _cacheActiveType: TooltipActiveType | undefined;\n\n private _eventList: EventHandlerList = [];\n\n protected _isTooltipShown: boolean = false;\n\n protected _clickLock: boolean = false;\n\n /** 当前是否正在显示 tooltip */\n isTooltipShown() {\n return this._isTooltipShown;\n }\n\n changeRegions(regions: IRegion[]) {\n /* do nothing */\n }\n protected _getNeedClearVRenderComponents(): IGraphic[] {\n return [];\n }\n protected _registerEvent() {\n /* do nothing */\n }\n protected _releaseEvent() {\n /* do nothing */\n }\n onLayout(ctx: IModelLayoutOption) {\n /* do nothing */\n }\n onLayoutEnd(ctx: IModelLayoutOption) {\n /* do nothing */\n }\n onRender(ctx: IModelRenderOption) {\n /* do nothing */\n }\n\n created() {\n super.created();\n this._regions = this._option.getAllRegions();\n // event\n this._initEvent();\n }\n\n release() {\n super.release();\n if (this._timer) {\n clearTimeout(this._timer);\n }\n\n this._eventList.forEach(({ eventType, handler }) => {\n this.event.off(eventType, handler);\n });\n this._eventList = [];\n this.tooltipHandler?.release?.();\n this._isTooltipShown = false;\n }\n\n beforeRelease() {\n // 触发事件\n this.event.emit(ChartEvent.tooltipHide, {\n tooltip: this,\n chart: this.getChart()\n } as unknown as TooltipEventParams);\n this.event.emit(ChartEvent.tooltipRelease, {\n tooltip: this,\n chart: this.getChart()\n } as unknown as TooltipEventParams);\n }\n\n protected _initHandler() {\n const renderMode = this._spec.renderMode ?? 'html';\n\n const userTooltipHandler = this._option.globalInstance.getTooltipHandlerByUser();\n if (userTooltipHandler) {\n this.tooltipHandler = userTooltipHandler;\n } else {\n // 构造内部默认 handler\n const type = renderMode === 'canvas' ? TooltipHandlerType.canvas : TooltipHandlerType.dom;\n const handlerConstructor = Factory.getComponentPluginInType(type);\n if (!handlerConstructor) {\n error('Can not find tooltip handler: ' + type);\n }\n const handler = new handlerConstructor();\n handler.name = `${this._spec.className}-${this._option.globalInstance.id ?? 0}-${this.getSpecIndex()}`;\n this.pluginService?.load([handler]);\n\n this.tooltipHandler = handler as unknown as ITooltipHandler;\n }\n }\n\n protected _initProcessor() {\n // 初始化 tooltip 类型\n const activeType = this._spec.activeType;\n\n this.processor = {};\n\n if (activeType.includes('dimension')) {\n this.processor.dimension = new DimensionTooltipProcessor(this);\n }\n\n if (activeType.includes('group')) {\n this.processor.group = new GroupTooltipProcessor(this);\n }\n\n if (activeType.includes('mark')) {\n this.processor.mark = new MarkTooltipProcessor(this);\n }\n }\n\n protected _initEvent() {\n if (this._option.disableTriggerEvent) {\n return;\n }\n const trigger = array(this._spec.trigger ?? 'hover');\n // TODO: triggerOff完整支持\n // const triggerOff = this._spec.triggerOff ?? trigger;\n const mode = this._option.mode;\n\n if (trigger.includes('hover')) {\n this._mountEvent('pointermove', { source: 'chart' }, this._getMouseMoveHandler(false));\n // 移动端的点按 + 滑动触发\n if (isMobileLikeMode(mode) || isMiniAppLikeMode(mode)) {\n this._mountEvent('pointerdown', { source: 'chart' }, this._getMouseMoveHandler(false));\n this._mountEvent('pointerup', { source: 'window' }, this._getMouseOutHandler(true));\n }\n this._mountEvent('pointerout', { source: 'canvas' }, this._getMouseOutHandler(false));\n }\n if (trigger.includes('click')) {\n this._mountEvent('pointertap', { source: 'chart' }, this._getMouseMoveHandler(true));\n this._mountEvent('pointerup', { source: 'window' }, this._getMouseOutHandler(true));\n } else if (this._spec.lockAfterClick) {\n this._mountEvent('pointertap', { source: 'chart' }, this._handleClickToLock);\n }\n }\n\n protected _mountEvent = (eType: EventType, query: EventQuery, callback: EventCallback<any>) => {\n this.event.on(eType, query, callback);\n this._eventList.push({\n eventType: eType,\n handler: callback\n });\n };\n\n protected _handleClickToLock = (params: BaseEventParams) => {\n if (this._clickLock) {\n this._handleChartMouseOut(params);\n this._clickLock = false;\n } else {\n this._clickLock = true;\n }\n };\n\n protected _getMouseOutHandler = (needPointerDetection?: boolean) => (params: BaseEventParams) => {\n if (this._alwaysShow || this._clickLock) {\n return;\n }\n\n if (!this._isTooltipShown && !this.tooltipHandler?.isTooltipShown?.()) {\n return;\n }\n\n const browserEnv = isTrueBrowser(this._option?.mode);\n const { clientX, clientY } = params.event as MouseEvent;\n\n // 当 enterable 为 true,同时鼠标移入 tooltip 时 pointerleave 事件也会触发,所以这里做一个判断\n if (browserEnv && this._isPointerOnTooltip(params)) {\n return;\n }\n\n // 判断鼠标是否在图表范围内\n if (browserEnv && needPointerDetection && this._isPointerInChart({ x: clientX, y: clientY })) {\n return;\n }\n\n this._handleChartMouseOut(params);\n };\n\n protected _handleChartMouseOut = (params?: BaseEventParams) => {\n if (this._alwaysShow) {\n return;\n }\n\n if (this._spec.triggerOff !== 'none') {\n this._hideTooltipByHandler({\n ...(params as any),\n tooltip: this\n });\n this._cacheInfo = undefined;\n this._cacheParams = undefined;\n this._cacheActiveType = undefined;\n }\n };\n\n protected _getMouseMoveHandler = (isClick: boolean) => (params: BaseEventParams) => {\n if (!this.tooltipHandler) {\n this._initHandler();\n }\n\n if (!this.processor) {\n this._initProcessor();\n }\n\n if (this._alwaysShow) {\n return;\n }\n if (this._isPointerOnTooltip(params)) {\n return;\n }\n\n if (this._clickLock) {\n if (isClick) {\n this._handleChartMouseOut(params);\n this._clickLock = false;\n }\n return;\n }\n\n /* 获取 tooltip 原始数据 */\n const mouseEventData = this._getMouseEventData(params);\n const {\n tooltipInfo: { dimension: dimensionInfo },\n ignore: { mark: ignoreMark, dimension: ignoreDimension }\n } = mouseEventData;\n\n /** tooltip 是否显示成功 */\n const success: ITooltipActiveTypeAsKeys<boolean, boolean, boolean> = {\n mark: false,\n dimension: false,\n group: false\n };\n\n for (let i = 0, len = TOOLTIP_TYPES.length; i < len; i++) {\n const type = TOOLTIP_TYPES[i];\n const res = this.processor[type] ? this._showTooltipByMouseEvent(type, mouseEventData, params, isClick) : false;\n\n if (res) {\n success[type] = true;\n break;\n }\n }\n\n /* 如果不是常规情况,进行一些特殊情况tooltip处理 */\n if (Object.values(success).every(val => !val) && !isEmptyPos(params)) {\n // 用户手动配置ignore,则继续显示缓存tooltip\n if (ignoreMark && isMarkInfo(this._cacheInfo)) {\n success.mark = this._showTooltipByMouseEvent('mark', mouseEventData, params, isClick, true);\n } else if (isValid(dimensionInfo)) {\n // 用户没有手动配置ignore的话,默认显示dimension tooltip\n success.dimension = this._showTooltipByMouseEvent('dimension', mouseEventData, params, isClick);\n }\n }\n\n /* 如果还是不应该显示tooltip,则隐藏上一次tooltip */\n if (!success.mark && !success.group && (!success.dimension || isNil(dimensionInfo))) {\n this._handleChartMouseOut(params);\n }\n };\n\n /**\n * 通过鼠标事件触发 tooltip,返回是否成功\n * @param activeType tooltip 类型\n * @param mouseEventData tooltip 相关数据\n * @param params 事件参数\n * @param useCache 是否直接显示缓存 tooltip\n * @returns 是否成功执行\n */\n protected _showTooltipByMouseEvent = (\n activeType: TooltipActiveType,\n mouseEventData: TotalMouseEventData,\n params: BaseEventParams,\n isClick: boolean,\n useCache?: boolean\n ): boolean => {\n const processor = this.processor[activeType];\n // 判断是否应该触发 tooltip\n if (!processor.shouldHandleTooltip(params, mouseEventData.tooltipInfo[activeType])) {\n return false;\n }\n if (this._timer) {\n clearTimeout(this._timer);\n }\n\n let success: boolean;\n if (useCache) {\n // 直接显示缓存 tooltip\n success = !processor.showTooltip(this._cacheInfo as any, params, true);\n } else {\n const tooltipInfo = mouseEventData.tooltipInfo[activeType];\n const isSameAsCache = this._isSameAsCache(tooltipInfo, params, activeType);\n success = !processor.showTooltip(tooltipInfo as any, params, isSameAsCache);\n if (success) {\n // 成功显示 tooltip,则更新缓存\n this._cacheInfo = tooltipInfo;\n this._cacheParams = params;\n this._cacheActiveType = activeType;\n }\n }\n if (success) {\n this._isTooltipShown = true;\n if (isClick && this._spec.lockAfterClick && !this._clickLock) {\n this._clickLock = true;\n } else if (Number.isFinite(this._spec.hideTimer)) {\n this._timer = setTimeout(() => {\n this._handleChartMouseOut();\n }, this._spec.hideTimer as number) as unknown as number;\n }\n }\n // 全局唯一 tooltip\n const vchart = this._option?.globalInstance;\n if (success && VChart.globalConfig.uniqueTooltip && vchart) {\n VChart.hideTooltip(vchart.id);\n }\n return success;\n };\n\n protected _getMouseEventData = (params: BaseEventParams): TotalMouseEventData => {\n const result: TotalMouseEventData = {\n tooltipInfo: {},\n ignore: {}\n };\n\n Object.keys(this.processor).forEach(activeType => {\n const { tooltipInfo, ignore } = this.processor[activeType as TooltipActiveType].getMouseEventData(params);\n result.tooltipInfo[activeType as TooltipActiveType] = tooltipInfo as any;\n result.ignore[activeType as TooltipActiveType] = ignore;\n });\n return result;\n };\n\n protected _hideTooltipByHandler = (params: TooltipHandlerParams): TooltipResult => {\n if (!this._isTooltipShown && !this.tooltipHandler?.isTooltipShown?.()) {\n // 如果当前 tooltip 未显示,则提前退出\n return TooltipResult.success;\n }\n\n // 触发事件\n this.event.emit(ChartEvent.tooltipHide, {\n ...params,\n source: Event_Source_Type.chart, // 统一 event 的来源\n tooltip: this\n });\n\n // 删除缓存\n Object.values(this.processor).forEach((processor: BaseTooltipProcessor) => {\n processor.clearCache();\n });\n\n // 隐藏 tooltip\n const handler = this._spec.handler ?? this.tooltipHandler;\n\n if (handler.hideTooltip) {\n const result = handler.hideTooltip.call(handler, params);\n if (!result) {\n this._isTooltipShown = false;\n }\n return result;\n }\n return TooltipResult.failed;\n };\n\n reInit(spec?: any) {\n super.reInit(spec);\n\n if (this.tooltipHandler) {\n this.tooltipHandler.reInit?.();\n } else {\n this._initHandler();\n }\n }\n\n showTooltip(datum: Datum, options: IShowTooltipOption) {\n if (!this.tooltipHandler) {\n this._initHandler();\n }\n\n if (!this.processor) {\n this._initProcessor();\n }\n\n if (!this.tooltipHandler?.showTooltip) {\n return false;\n }\n const result = showTooltip(datum, options, this);\n if (result !== 'none') {\n this._alwaysShow = !!options?.alwaysShow;\n }\n return result;\n }\n\n /** 手动隐藏 tooltip,返回是否成功 */\n hideTooltip(): boolean {\n const params: TooltipHandlerParams = {\n changePositionOnly: false,\n tooltip: this,\n item: undefined,\n datum: undefined,\n source: Event_Source_Type.chart\n } as any;\n\n this._alwaysShow = false;\n return !this._hideTooltipByHandler(params);\n }\n\n private _isSameAsCache(\n nextInfo?: TooltipInfo,\n nextParams?: BaseEventParams,\n nextActiveType?: TooltipActiveType\n ): boolean {\n if (nextActiveType !== this._cacheActiveType) {\n return false;\n }\n if (nextInfo === this._cacheInfo) {\n return true;\n }\n if (isNil(this._cacheInfo) || isNil(nextInfo)) {\n return false;\n }\n\n // 判断 tooltip 信息是否一致\n if (isDimensionInfo(nextInfo)) {\n if (isMarkInfo(this._cacheInfo)) {\n return false;\n }\n\n const prevInfo = this._cacheInfo as DimensionTooltipInfo;\n const isSameAsCacheInfo =\n prevInfo.length === nextInfo.length && nextInfo.every((info, i) => isSameDimensionInfo(info, prevInfo[i]));\n if (!isSameAsCacheInfo) {\n return false;\n }\n } else {\n if (isDimensionInfo(this._cacheInfo)) {\n return false;\n }\n\n const prevInfo = this._cacheInfo as MarkTooltipInfo;\n const isSameAsCacheInfo =\n nextInfo?.datum === prevInfo.datum && nextInfo?.mark === prevInfo.mark && nextInfo?.series === prevInfo.series;\n if (!isSameAsCacheInfo) {\n return false;\n }\n }\n\n // 判断事件触发信息是否一致\n const prevParams = this._cacheParams;\n if (isNil(prevParams) || isNil(nextParams)) {\n return false;\n }\n return (\n prevParams.mark === nextParams.mark &&\n prevParams.model === nextParams.model &&\n prevParams.datum === nextParams.datum\n );\n }\n\n private _isPointerInChart(point: IPoint): boolean {\n const globalInstance = this._option?.globalInstance;\n if (!globalInstance) {\n return false;\n }\n const chart = globalInstance.getChart();\n if (!chart) {\n return false;\n }\n const { x, y } = point;\n const canvas = globalInstance.getCanvas();\n const { x: chartX, y: chartY, width: chartWidth, height: chartHeight } = canvas.getBoundingClientRect();\n // 鼠标仍在图表范围内,则不处理\n if (x >= chartX && x <= chartX + chartWidth && y >= chartY && y <= chartY + chartHeight) {\n return true;\n }\n\n return false;\n }\n\n private _isPointerOnTooltip(params: BaseEventParams): boolean {\n // TODO:后续支持 renderMode === 'canvas' 场景\n if (this._spec.enterable && this._spec.renderMode === 'html') {\n const { event } = params;\n let newTarget: any;\n if (isValid(event.nativeEvent)) {\n // get native event object\n const nativeEvent = event.nativeEvent as any;\n newTarget = nativeEvent.relatedTarget;\n // if in shadow DOM use composedPath to access target\n // FIXME: shadow DOM 的 relatedTarget 的属性是?\n if (nativeEvent.composedPath && nativeEvent.composedPath().length > 0) {\n newTarget = nativeEvent.composedPath()[0];\n }\n } else {\n newTarget = event.relatedTarget;\n }\n const container = this.tooltipHandler?.getTooltipContainer?.();\n if (isValid(container) && isValid(newTarget) && hasParentElement(newTarget, container)) {\n return true;\n }\n }\n return false;\n }\n\n getVisible() {\n return this._spec.visible !== false;\n }\n}\n\nexport const registerTooltip = () => {\n Factory.registerComponent(Tooltip.type, Tooltip);\n};\n"]}
@@ -1,5 +1,7 @@
1
+ import type { Maybe } from '@visactor/vutils';
1
2
  import type { ITheme } from '../theme';
2
3
  import type { Datum } from '../typings';
4
+ import type { IModelSpecInfo } from '../model/interface';
3
5
  export declare function getComponentThemeFromOption(type: string, chartTheme: ITheme): any;
4
6
  export declare function getFormatFunction(formatMethod?: any, formatter?: string | string[], text?: string | number, datum?: Datum): {
5
7
  formatFunc: any;
@@ -8,3 +10,4 @@ export declare function getFormatFunction(formatMethod?: any, formatter?: string
8
10
  formatFunc?: undefined;
9
11
  args?: undefined;
10
12
  };
13
+ export declare const getSpecInfo: <T extends Record<string, any>>(chartSpec: any, specKey: string, compType: string, filter?: (spec: T) => boolean) => IModelSpecInfo<T>[];
@@ -1,4 +1,4 @@
1
- import { get } from "@visactor/vutils";
1
+ import { get, isArray, isNil } from "@visactor/vutils";
2
2
 
3
3
  import { Factory } from "../core/factory";
4
4
 
@@ -17,4 +17,17 @@ export function getFormatFunction(formatMethod, formatter, text, datum) {
17
17
  args: [ text, datum, formatter ]
18
18
  } : {};
19
19
  }
20
+
21
+ export const getSpecInfo = (chartSpec, specKey, compType, filter) => {
22
+ if (isNil(chartSpec[specKey])) return;
23
+ const isArraySpec = isArray(chartSpec[specKey]), spec = isArraySpec ? chartSpec[specKey] : [ chartSpec[specKey] ], specInfos = [];
24
+ return spec.forEach(((s, i) => {
25
+ !s || filter && !filter(s) || specInfos.push({
26
+ spec: s,
27
+ specPath: isArraySpec ? [ specKey, i ] : [ specKey ],
28
+ specInfoPath: [ "component", specKey, i ],
29
+ type: compType
30
+ });
31
+ })), specInfos;
32
+ };
20
33
  //# sourceMappingURL=util.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/component/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAGvC,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,MAAM,UAAU,2BAA2B,CAAC,IAAY,EAAE,UAAkB;IAC1E,OAAO,GAAG,CAAC,UAAU,EAAE,aAAa,IAAI,EAAE,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,YAAkB,EAClB,SAA6B,EAC7B,IAAsB,EACtB,KAAa;IAEb,IAAI,YAAY,EAAE;QAChB,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;KAC1D;IACD,MAAM,aAAa,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAC7C,IAAI,SAAS,IAAI,aAAa,EAAE;QAC9B,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;KACtE;IACD,OAAO,EAAE,CAAC;AACZ,CAAC","file":"util.js","sourcesContent":["import { get } from '@visactor/vutils';\nimport type { ITheme } from '../theme';\nimport type { Datum } from '../typings';\nimport { Factory } from '../core/factory';\n\nexport function getComponentThemeFromOption(type: string, chartTheme: ITheme) {\n return get(chartTheme, `component.${type}`);\n}\n\nexport function getFormatFunction(\n formatMethod?: any,\n formatter?: string | string[],\n text?: string | number,\n datum?: Datum\n) {\n if (formatMethod) {\n return { formatFunc: formatMethod, args: [text, datum] };\n }\n const formatterImpl = Factory.getFormatter();\n if (formatter && formatterImpl) {\n return { formatFunc: formatterImpl, args: [text, datum, formatter] };\n }\n return {};\n}\n"]}
1
+ {"version":3,"sources":["../src/component/util.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAGvD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAG1C,MAAM,UAAU,2BAA2B,CAAC,IAAY,EAAE,UAAkB;IAC1E,OAAO,GAAG,CAAC,UAAU,EAAE,aAAa,IAAI,EAAE,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,YAAkB,EAClB,SAA6B,EAC7B,IAAsB,EACtB,KAAa;IAEb,IAAI,YAAY,EAAE;QAChB,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;KAC1D;IACD,MAAM,aAAa,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAC7C,IAAI,SAAS,IAAI,aAAa,EAAE;QAC9B,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;KACtE;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,SAAc,EACd,OAAe,EACf,QAAgB,EAChB,MAA6B,EACD,EAAE;IAC9B,IAAI,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE;QAC7B,OAAO,SAAS,CAAC;KAClB;IACD,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IAErE,MAAM,SAAS,GAAqB,EAAE,CAAC;IACtC,IAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAS,EAAE,EAAE;QACrC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;YAC/B,SAAS,CAAC,IAAI,CAAC;gBACb,IAAI,EAAE,CAAC;gBACP,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;gBAChD,YAAY,EAAE,CAAC,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC;gBACvC,IAAI,EAAE,QAAQ;aACf,CAAC,CAAC;SACJ;IACH,CAAC,CAAC,CAAC;IACH,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC","file":"util.js","sourcesContent":["import type { Maybe } from '@visactor/vutils';\nimport { get, isArray, isNil } from '@visactor/vutils';\nimport type { ITheme } from '../theme';\nimport type { Datum } from '../typings';\nimport { Factory } from '../core/factory';\nimport type { IModelSpecInfo } from '../model/interface';\n\nexport function getComponentThemeFromOption(type: string, chartTheme: ITheme) {\n return get(chartTheme, `component.${type}`);\n}\n\nexport function getFormatFunction(\n formatMethod?: any,\n formatter?: string | string[],\n text?: string | number,\n datum?: Datum\n) {\n if (formatMethod) {\n return { formatFunc: formatMethod, args: [text, datum] };\n }\n const formatterImpl = Factory.getFormatter();\n if (formatter && formatterImpl) {\n return { formatFunc: formatterImpl, args: [text, datum, formatter] };\n }\n return {};\n}\n\nexport const getSpecInfo = <T extends Record<string, any>>(\n chartSpec: any,\n specKey: string,\n compType: string,\n filter?: (spec: T) => boolean\n): Maybe<IModelSpecInfo<T>[]> => {\n if (isNil(chartSpec[specKey])) {\n return undefined;\n }\n const isArraySpec = isArray(chartSpec[specKey]);\n const spec = isArraySpec ? chartSpec[specKey] : [chartSpec[specKey]];\n\n const specInfos: IModelSpecInfo[] = [];\n (spec as T[]).forEach((s, i: number) => {\n if (s && (!filter || filter(s))) {\n specInfos.push({\n spec: s,\n specPath: isArraySpec ? [specKey, i] : [specKey],\n specInfoPath: ['component', specKey, i],\n type: compType\n });\n }\n });\n return specInfos;\n};\n"]}
@@ -4,5 +4,4 @@ export const CORRELATION_X = `${PREFIX}_CORRELATION_X`;
4
4
 
5
5
  export const CORRELATION_Y = `${PREFIX}_CORRELATION_Y`;
6
6
 
7
- export const CORRELATION_SIZE = `${PREFIX}_CORRELATION_SIZE`;
8
- //# sourceMappingURL=correlation.js.map
7
+ export const CORRELATION_SIZE = `${PREFIX}_CORRELATION_SIZE`;
@@ -28,4 +28,5 @@ export var LayoutLevel;
28
28
  LayoutLevel[LayoutLevel.Player = 40] = "Player", LayoutLevel[LayoutLevel.ScrollBar = 40] = "ScrollBar",
29
29
  LayoutLevel[LayoutLevel.Legend = 50] = "Legend", LayoutLevel[LayoutLevel.Title = 70] = "Title",
30
30
  LayoutLevel[LayoutLevel.CustomMark = 70] = "CustomMark";
31
- }(LayoutLevel || (LayoutLevel = {}));
31
+ }(LayoutLevel || (LayoutLevel = {}));
32
+ //# sourceMappingURL=layout.js.map
@@ -1,7 +1,7 @@
1
1
  import { VChart } from './vchart';
2
2
  import { Factory } from './factory';
3
3
  export { VChart, Factory };
4
- export declare const version = "1.12.4";
4
+ export declare const version = "1.12.6";
5
5
  export type { IVChart } from './interface';
6
6
  export type { IStateSpec, StateValueType } from '../compile/mark';
7
7
  export * from '../typings/spec/common';
package/esm/core/index.js CHANGED
@@ -4,7 +4,7 @@ import { Factory } from "./factory";
4
4
 
5
5
  export { VChart, Factory };
6
6
 
7
- export const version = "1.12.4";
7
+ export const version = "1.12.6";
8
8
 
9
9
  export * from "../typings/spec/common";
10
10
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/core/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAG3B,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC;AAMhC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAG5B,cAAc,kBAAkB,CAAC;AAKjC,cAAc,uBAAuB,CAAC;AAGtC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,gBAAgB,CAAC;AAG/B,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC","file":"index.js","sourcesContent":["/**\n * @description The core module of VChart, containing the necessary interfaces for using VChart.\n */\n\nimport { VChart } from './vchart';\nimport { Factory } from './factory';\n\nexport { VChart, Factory };\n\n// export the version\nexport const version = \"1.12.4\";\n\n// export necessary types\nexport type { IVChart } from './interface';\nexport type { IStateSpec, StateValueType } from '../compile/mark';\n\nexport * from '../typings/spec/common';\nexport * from '../event/interface';\nexport * from '../theme/interface';\nexport * from './interface';\n\n// some constants\nexport * from '../constant/base';\n\n/**\n * spec\n */\nexport * from '../typings/spec/index';\n\n// tooltip\nexport * from '../typings/tooltip';\n\n// theme\nexport * from '../theme/index';\n\n// vrender\nexport { vglobal } from '@visactor/vrender-core';\n"]}
1
+ {"version":3,"sources":["../src/core/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAG3B,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC;AAMhC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAG5B,cAAc,kBAAkB,CAAC;AAKjC,cAAc,uBAAuB,CAAC;AAGtC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,gBAAgB,CAAC;AAG/B,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC","file":"index.js","sourcesContent":["/**\n * @description The core module of VChart, containing the necessary interfaces for using VChart.\n */\n\nimport { VChart } from './vchart';\nimport { Factory } from './factory';\n\nexport { VChart, Factory };\n\n// export the version\nexport const version = \"1.12.6\";\n\n// export necessary types\nexport type { IVChart } from './interface';\nexport type { IStateSpec, StateValueType } from '../compile/mark';\n\nexport * from '../typings/spec/common';\nexport * from '../event/interface';\nexport * from '../theme/interface';\nexport * from './interface';\n\n// some constants\nexport * from '../constant/base';\n\n/**\n * spec\n */\nexport * from '../typings/spec/index';\n\n// tooltip\nexport * from '../typings/tooltip';\n\n// theme\nexport * from '../theme/index';\n\n// vrender\nexport { vglobal } from '@visactor/vrender-core';\n"]}
@@ -74,6 +74,7 @@ export declare class VChart implements IVChart {
74
74
  private _context;
75
75
  private _isReleased;
76
76
  private _chartPlugin?;
77
+ private _onResize?;
77
78
  constructor(spec: ISpec, options: IInitOption);
78
79
  private _setNewSpec;
79
80
  private _getSpecFromOriginalSpec;
@@ -89,7 +90,6 @@ export declare class VChart implements IVChart {
89
90
  height: number;
90
91
  };
91
92
  private _doResize;
92
- private _onResize;
93
93
  private _initDataSet;
94
94
  updateCustomConfigAndRerender(updateSpecResult: IUpdateSpecResult | (() => IUpdateSpecResult), sync?: boolean, option?: IVChartRenderOption): IVChart | Promise<IVChart>;
95
95
  protected _updateCustomConfigAndRecompile(updateSpecResult: IUpdateSpecResult, option?: IVChartRenderOption): boolean;
@@ -42,7 +42,7 @@ import { DataSet, dataViewParser, DataView } from "@visactor/vdataset";
42
42
 
43
43
  import { vglobal } from "@visactor/vrender-core";
44
44
 
45
- import { isString, isValid, isNil, array, debounce, specTransform, functionTransform } from "../util";
45
+ import { isString, isValid, isNil, array, specTransform, functionTransform } from "../util";
46
46
 
47
47
  import { createID } from "../util/id";
48
48
 
@@ -82,7 +82,7 @@ import { ChartEvent, VGRAMMAR_HOOK_EVENT } from "../constant/event";
82
82
 
83
83
  import { DEFAULT_CHART_HEIGHT, DEFAULT_CHART_WIDTH } from "../constant/base";
84
84
 
85
- import { isArray, isEmpty, Logger, merge as mergeOrigin, isFunction, LoggerLevel, isEqual, get, cloneDeep, isObject } from "@visactor/vutils";
85
+ import { isArray, isEmpty, Logger, merge as mergeOrigin, isFunction, LoggerLevel, isEqual, get, cloneDeep, isObject, throttle } from "@visactor/vutils";
86
86
 
87
87
  import { InstanceManager } from "./instance-manager";
88
88
 
@@ -181,7 +181,7 @@ export class VChart {
181
181
  return this._dataSet;
182
182
  }
183
183
  constructor(spec, options) {
184
- var _a, _b, _c, _d, _e, _f;
184
+ var _a, _b, _c, _d, _e, _f, _g, _h;
185
185
  this.id = createID(), this._userEvents = [], this._autoSize = !0, this._option = {
186
186
  mode: RenderModeEnum["desktop-browser"],
187
187
  onError: msg => {
@@ -190,9 +190,13 @@ export class VChart {
190
190
  optimize: {
191
191
  disableCheckGraphicWidthOutRange: !0
192
192
  }
193
- }, this._observer = null, this._context = {}, this._onResize = debounce(((...args) => {
194
- this._doResize();
195
- }), 100), this._renderSync = (option = {}) => {
193
+ }, this._observer = null, this._context = {}, this._doResize = () => {
194
+ const {width: width, height: height} = this.getCurrentSize();
195
+ this._currentSize.width === width && this._currentSize.height === height || (this._currentSize = {
196
+ width: width,
197
+ height: height
198
+ }, this.resizeSync(width, height));
199
+ }, this._renderSync = (option = {}) => {
196
200
  var _a;
197
201
  const self = this;
198
202
  return this._beforeRender(option) ? (null === (_a = this._compiler) || void 0 === _a || _a.render(option.morphConfig),
@@ -200,6 +204,7 @@ export class VChart {
200
204
  }, this._updateSpec = (spec, forceMerge = !1, userUpdateOptions) => {
201
205
  var _a, _b;
202
206
  const lastSpec = this._spec, result = {
207
+ changeBackground: !1,
203
208
  reTransformSpec: !1,
204
209
  change: !1,
205
210
  reMake: !1,
@@ -220,7 +225,7 @@ export class VChart {
220
225
  }, this._option = mergeOrigin(this._option, {
221
226
  animation: !1 !== spec.animation
222
227
  }, options), this._onError = null === (_a = this._option) || void 0 === _a ? void 0 : _a.onError;
223
- const _g = this._option, {dom: dom, renderCanvas: renderCanvas, mode: mode, stage: stage, poptip: poptip} = _g, restOptions = __rest(_g, [ "dom", "renderCanvas", "mode", "stage", "poptip" ]), isTrueBrowseEnv = isTrueBrowser(mode);
228
+ const _j = this._option, {dom: dom, renderCanvas: renderCanvas, mode: mode, stage: stage, poptip: poptip} = _j, restOptions = __rest(_j, [ "dom", "renderCanvas", "mode", "stage", "poptip" ]), isTrueBrowseEnv = isTrueBrowser(mode);
224
229
  isTrueBrowseEnv ? registerBrowserEnv() : "node" === mode && registerNodeEnv(), isTrueBrowseEnv && dom && (this._container = isString(dom) ? vglobal.getElementById(dom) : dom),
225
230
  renderCanvas && (this._canvas = renderCanvas), stage && (this._stage = stage), "node" === mode || this._container || this._canvas || this._stage ? (this._viewBox = this._option.viewBox,
226
231
  this._currentThemeName = ThemeManager.getCurrentThemeName(), this._setNewSpec(spec),
@@ -239,7 +244,7 @@ export class VChart {
239
244
  this._compiler.initView(), this._setFontFamilyTheme(null === (_d = this._currentTheme) || void 0 === _d ? void 0 : _d.fontFamily),
240
245
  this._initDataSet(this._option.dataSet), this._autoSize = !!isTrueBrowseEnv && (null === (_f = null !== (_e = spec.autoFit) && void 0 !== _e ? _e : this._option.autoFit) || void 0 === _f || _f),
241
246
  this._bindResizeEvent(), this._bindVGrammarViewEvent(), this._initChartPlugin(),
242
- InstanceManager.registerInstance(this)) : null === (_b = this._option) || void 0 === _b || _b.onError("please specify container or renderCanvas!");
247
+ InstanceManager.registerInstance(this), null === (_h = null === (_g = this._option.performanceHook) || void 0 === _g ? void 0 : _g.afterCreateVChart) || void 0 === _h || _h.call(_g, this)) : null === (_b = this._option) || void 0 === _b || _b.onError("please specify container or renderCanvas!");
243
248
  }
244
249
  _setNewSpec(spec, forceMerge) {
245
250
  return !!spec && (isString(spec) && (spec = JSON.parse(spec)), forceMerge && this._originalSpec && (spec = mergeSpec({}, this._originalSpec, spec)),
@@ -291,12 +296,13 @@ export class VChart {
291
296
  })));
292
297
  }
293
298
  _bindResizeEvent() {
294
- var _a;
299
+ var _a, _b;
295
300
  if (this._autoSize) {
296
- if (this._container) {
301
+ if (this._onResize = throttle(this._doResize, null !== (_a = this._option.resizeDelay) && void 0 !== _a ? _a : 100),
302
+ this._container) {
297
303
  const ResizeObserverWindow = window.ResizeObserver;
298
304
  ResizeObserverWindow && (this._observer = new ResizeObserverWindow(this._onResize),
299
- null === (_a = this._observer) || void 0 === _a || _a.observe(this._container));
305
+ null === (_b = this._observer) || void 0 === _b || _b.observe(this._container));
300
306
  }
301
307
  window.addEventListener("resize", this._onResize);
302
308
  }
@@ -317,13 +323,6 @@ export class VChart {
317
323
  height: null !== (_d = null === (_c = this._currentSize) || void 0 === _c ? void 0 : _c.height) && void 0 !== _d ? _d : DEFAULT_CHART_HEIGHT
318
324
  });
319
325
  }
320
- _doResize() {
321
- const {width: width, height: height} = this.getCurrentSize();
322
- this._currentSize.width === width && this._currentSize.height === height || (this._currentSize = {
323
- width: width,
324
- height: height
325
- }, this.resizeSync(width, height));
326
- }
327
326
  _initDataSet(dataSet) {
328
327
  this._dataSet = dataSet instanceof DataSet ? dataSet : new DataSet, registerDataSetInstanceParser(this._dataSet, "dataview", dataViewParser),
329
328
  registerDataSetInstanceParser(this._dataSet, "array", arrayParser), registerDataSetInstanceTransform(this._dataSet, "copyDataView", copyDataView);
@@ -339,7 +338,7 @@ export class VChart {
339
338
  return !!updateSpecResult && (this._reCompile(updateSpecResult), this._beforeRender(option));
340
339
  }
341
340
  _reCompile(updateResult, morphConfig) {
342
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
341
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
343
342
  if (updateResult.reMake) this._releaseData(), this._initDataSet(), this._chartSpecTransformer = null,
344
343
  null === (_a = this._chart) || void 0 === _a || _a.release(), this._chart = null,
345
344
  updateResult.changeTheme ? (this._setCurrentTheme(), this._setFontFamilyTheme(null === (_b = this._currentTheme) || void 0 === _b ? void 0 : _b.fontFamily)) : updateResult.changeBackground && (null === (_c = this._compiler) || void 0 === _c || _c.setBackground(this._getBackground())),
@@ -352,7 +351,8 @@ export class VChart {
352
351
  updateResult.reCompile && (null === (_j = this._compiler) || void 0 === _j || _j.clear({
353
352
  chart: this._chart,
354
353
  vChart: this
355
- }, !this._option.animation || !this._spec.animation), null === (_k = this._compiler) || void 0 === _k || _k.compile({
354
+ }, !1 === (null === (_k = this._option) || void 0 === _k ? void 0 : _k.animation) || !1 === (null === (_l = this._spec) || void 0 === _l ? void 0 : _l.animation)),
355
+ null === (_m = this._compiler) || void 0 === _m || _m.compile({
356
356
  chart: this._chart,
357
357
  vChart: this
358
358
  }, {})), updateResult.reSize) {
@@ -366,8 +366,8 @@ export class VChart {
366
366
  if (this._chart) return !0;
367
367
  const {transformSpec: transformSpec, actionSource: actionSource} = option;
368
368
  return transformSpec && this._initChartSpec(this._spec, "render"), this._chartPluginApply("onBeforeInitChart", this._spec, actionSource),
369
- null === (_b = null === (_a = this._option.performanceHook) || void 0 === _a ? void 0 : _a.beforeInitializeChart) || void 0 === _b || _b.call(_a),
370
- this._initChart(this._spec), null === (_d = null === (_c = this._option.performanceHook) || void 0 === _c ? void 0 : _c.afterInitializeChart) || void 0 === _d || _d.call(_c),
369
+ null === (_b = null === (_a = this._option.performanceHook) || void 0 === _a ? void 0 : _a.beforeInitializeChart) || void 0 === _b || _b.call(_a, this),
370
+ this._initChart(this._spec), null === (_d = null === (_c = this._option.performanceHook) || void 0 === _c ? void 0 : _c.afterInitializeChart) || void 0 === _d || _d.call(_c, this),
371
371
  !(!this._chart || !this._compiler) && (null === (_f = null === (_e = this._option.performanceHook) || void 0 === _e ? void 0 : _e.beforeCompileToVGrammar) || void 0 === _f || _f.call(_e),
372
372
  this._compiler.compile({
373
373
  chart: this._chart,