@visactor/vchart 1.10.0-alpha.8 → 1.10.0-alpha.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/es5/index.js +1 -1
- package/build/index.js +517 -281
- package/build/index.min.js +1 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/cjs/chart/base/base-chart-transformer.js +6 -8
- package/cjs/chart/base/base-chart-transformer.js.map +1 -1
- package/cjs/chart/base/base-chart.js +3 -5
- package/cjs/chart/base/base-chart.js.map +1 -1
- package/cjs/chart/base/util.d.ts +2 -2
- package/cjs/chart/base/util.js.map +1 -1
- package/cjs/chart/interface/chart.js.map +1 -1
- package/cjs/chart/interface/common.d.ts +1 -5
- package/cjs/chart/interface/common.js.map +1 -1
- package/cjs/chart/map/map-transformer.js.map +1 -1
- package/cjs/chart/sequence/interface.d.ts +2 -2
- package/cjs/chart/sequence/interface.js.map +1 -1
- package/cjs/chart/sequence/sequence-transformer.js.map +1 -1
- package/cjs/compile/compilable-base.js +1 -1
- package/cjs/compile/compilable-base.js.map +1 -1
- package/cjs/compile/compiler.d.ts +1 -0
- package/cjs/compile/compiler.js +11 -9
- package/cjs/compile/compiler.js.map +1 -1
- package/cjs/component/axis/base-axis.js +2 -2
- package/cjs/component/axis/base-axis.js.map +1 -1
- package/cjs/component/axis/polar/axis.js.map +1 -1
- package/cjs/component/base/base-component.js +1 -1
- package/cjs/component/base/base-component.js.map +1 -1
- package/cjs/component/brush/brush.d.ts +8 -0
- package/cjs/component/brush/brush.js +64 -11
- package/cjs/component/brush/brush.js.map +1 -1
- package/cjs/component/brush/interface.d.ts +4 -0
- package/cjs/component/brush/interface.js.map +1 -1
- package/cjs/component/crosshair/base.js +1 -1
- package/cjs/component/crosshair/base.js.map +1 -1
- package/cjs/component/crosshair/cartesian.js +8 -4
- package/cjs/component/crosshair/cartesian.js.map +1 -1
- package/cjs/component/crosshair/polar.js +4 -2
- package/cjs/component/crosshair/polar.js.map +1 -1
- package/cjs/component/crosshair/utils/cartesian.d.ts +2 -0
- package/cjs/component/crosshair/utils/cartesian.js +4 -0
- package/cjs/component/crosshair/utils/cartesian.js.map +1 -1
- package/cjs/component/custom-mark/custom-mark.d.ts +1 -0
- package/cjs/component/custom-mark/custom-mark.js +12 -1
- package/cjs/component/custom-mark/custom-mark.js.map +1 -1
- package/cjs/component/data-zoom/data-filter-base-component.d.ts +2 -2
- package/cjs/component/data-zoom/data-filter-base-component.js +12 -10
- package/cjs/component/data-zoom/data-filter-base-component.js.map +1 -1
- package/cjs/component/data-zoom/data-zoom/data-zoom.d.ts +1 -0
- package/cjs/component/data-zoom/data-zoom/data-zoom.js +12 -9
- package/cjs/component/data-zoom/data-zoom/data-zoom.js.map +1 -1
- package/cjs/component/data-zoom/data-zoom/interface.d.ts +1 -0
- package/cjs/component/data-zoom/data-zoom/interface.js.map +1 -1
- package/cjs/component/data-zoom/interface.d.ts +2 -0
- package/cjs/component/data-zoom/interface.js.map +1 -1
- package/cjs/component/data-zoom/scroll-bar/scroll-bar.js +2 -1
- package/cjs/component/data-zoom/scroll-bar/scroll-bar.js.map +1 -1
- package/cjs/component/data-zoom/util.js +5 -1
- package/cjs/component/data-zoom/util.js.map +1 -1
- package/cjs/component/geo/geo-coordinate.js.map +1 -1
- package/cjs/component/indicator/indicator.js.map +1 -1
- package/cjs/component/label/base-label.d.ts +2 -1
- package/cjs/component/label/base-label.js +3 -0
- package/cjs/component/label/base-label.js.map +1 -1
- package/cjs/component/label/label.d.ts +1 -2
- package/cjs/component/label/label.js +7 -10
- package/cjs/component/label/label.js.map +1 -1
- package/cjs/component/label/total-label.d.ts +1 -0
- package/cjs/component/label/total-label.js +9 -1
- package/cjs/component/label/total-label.js.map +1 -1
- package/cjs/component/tooltip/constant.d.ts +5 -0
- package/cjs/component/tooltip/constant.js +13 -0
- package/cjs/component/tooltip/constant.js.map +1 -0
- package/cjs/component/tooltip/index.d.ts +1 -0
- package/cjs/component/tooltip/index.js +1 -1
- package/cjs/component/tooltip/index.js.map +1 -1
- package/cjs/component/tooltip/interface/spec.d.ts +4 -3
- package/cjs/component/tooltip/interface/spec.js.map +1 -1
- package/cjs/component/tooltip/tooltip-transformer.d.ts +2 -0
- package/cjs/component/tooltip/tooltip-transformer.js +14 -1
- package/cjs/component/tooltip/tooltip-transformer.js.map +1 -1
- package/cjs/component/tooltip/tooltip.d.ts +3 -3
- package/cjs/component/tooltip/tooltip.js +28 -48
- package/cjs/component/tooltip/tooltip.js.map +1 -1
- package/cjs/core/index.d.ts +1 -1
- package/cjs/core/index.js +1 -1
- package/cjs/core/index.js.map +1 -1
- package/cjs/core/vchart.d.ts +4 -1
- package/cjs/core/vchart.js +47 -49
- package/cjs/core/vchart.js.map +1 -1
- package/cjs/event/event-dispatcher.d.ts +1 -0
- package/cjs/event/event-dispatcher.js +4 -1
- package/cjs/event/event-dispatcher.js.map +1 -1
- package/cjs/event/event.js +1 -1
- package/cjs/event/event.js.map +1 -1
- package/cjs/event/interface.d.ts +2 -1
- package/cjs/event/interface.js.map +1 -1
- package/cjs/interaction/index.d.ts +1 -0
- package/cjs/interaction/index.js +50 -0
- package/cjs/interaction/index.js.map +1 -0
- package/cjs/interaction/interface.js +1 -1
- package/cjs/interaction/zoom/zoomable.js +4 -6
- package/cjs/interaction/zoom/zoomable.js.map +1 -1
- package/cjs/model/interface.d.ts +3 -8
- package/cjs/model/interface.js.map +1 -1
- package/cjs/plugin/base/base-plugin-service.d.ts +2 -2
- package/cjs/plugin/base/base-plugin-service.js +5 -5
- package/cjs/plugin/base/base-plugin-service.js.map +1 -1
- package/cjs/plugin/base/base-plugin.d.ts +1 -0
- package/cjs/plugin/base/base-plugin.js +3 -0
- package/cjs/plugin/base/base-plugin.js.map +1 -1
- package/cjs/plugin/base/interface.d.ts +3 -3
- package/cjs/plugin/base/interface.js.map +1 -1
- package/cjs/plugin/chart/formatter/formatter.d.ts +2 -2
- package/cjs/plugin/chart/formatter/formatter.js +5 -7
- package/cjs/plugin/chart/formatter/formatter.js.map +1 -1
- package/cjs/plugin/chart/media-query/media-query.d.ts +1 -1
- package/cjs/plugin/chart/media-query/media-query.js +4 -4
- package/cjs/plugin/chart/media-query/media-query.js.map +1 -1
- package/cjs/plugin/chart/plugin-service.d.ts +1 -0
- package/cjs/plugin/chart/plugin-service.js +3 -0
- package/cjs/plugin/chart/plugin-service.js.map +1 -1
- package/cjs/plugin/components/plugin-service.d.ts +1 -0
- package/cjs/plugin/components/plugin-service.js +3 -0
- package/cjs/plugin/components/plugin-service.js.map +1 -1
- package/cjs/plugin/components/tooltip-handler/canvas/canvas-tooltip-handler.js +3 -3
- package/cjs/plugin/components/tooltip-handler/canvas/canvas-tooltip-handler.js.map +1 -1
- package/cjs/plugin/components/tooltip-handler/constants.d.ts +0 -5
- package/cjs/plugin/components/tooltip-handler/constants.js +4 -9
- package/cjs/plugin/components/tooltip-handler/constants.js.map +1 -1
- package/cjs/plugin/components/tooltip-handler/dom/dom-tooltip-handler.js +3 -3
- package/cjs/plugin/components/tooltip-handler/dom/dom-tooltip-handler.js.map +1 -1
- package/cjs/plugin/components/tooltip-handler/utils/position.d.ts +1 -0
- package/cjs/region/interface.d.ts +2 -1
- package/cjs/region/interface.js.map +1 -1
- package/cjs/region/region.js +1 -1
- package/cjs/region/region.js.map +1 -1
- package/cjs/series/area/area-transformer.d.ts +1 -0
- package/cjs/series/area/area-transformer.js +3 -0
- package/cjs/series/area/area-transformer.js.map +1 -1
- package/cjs/series/area/area.d.ts +0 -1
- package/cjs/series/area/area.js +1 -1
- package/cjs/series/area/area.js.map +1 -1
- package/cjs/series/bar/bar-transformer.d.ts +1 -0
- package/cjs/series/bar/bar-transformer.js +3 -0
- package/cjs/series/bar/bar-transformer.js.map +1 -1
- package/cjs/series/bar/bar.d.ts +0 -1
- package/cjs/series/bar/bar.js +2 -2
- package/cjs/series/bar/bar.js.map +1 -1
- package/cjs/series/base/base-series-transformer.d.ts +5 -3
- package/cjs/series/base/base-series-transformer.js +9 -2
- package/cjs/series/base/base-series-transformer.js.map +1 -1
- package/cjs/series/base/base-series.d.ts +0 -4
- package/cjs/series/base/base-series.js +12 -17
- package/cjs/series/base/base-series.js.map +1 -1
- package/cjs/series/cartesian/cartesian.js +3 -3
- package/cjs/series/cartesian/cartesian.js.map +1 -1
- package/cjs/series/funnel/funnel.js +2 -1
- package/cjs/series/funnel/funnel.js.map +1 -1
- package/cjs/series/gauge/gauge-pointer-transformer.d.ts +5 -0
- package/cjs/series/gauge/gauge-pointer-transformer.js +16 -0
- package/cjs/series/gauge/gauge-pointer-transformer.js.map +1 -0
- package/cjs/series/gauge/gauge-pointer.d.ts +3 -1
- package/cjs/series/gauge/gauge-pointer.js +4 -4
- package/cjs/series/gauge/gauge-pointer.js.map +1 -1
- package/cjs/series/gauge/gauge-transformer.d.ts +1 -0
- package/cjs/series/gauge/gauge-transformer.js +3 -0
- package/cjs/series/gauge/gauge-transformer.js.map +1 -1
- package/cjs/series/gauge/gauge.d.ts +0 -1
- package/cjs/series/gauge/gauge.js +1 -1
- package/cjs/series/gauge/gauge.js.map +1 -1
- package/cjs/series/interface/common.d.ts +6 -2
- package/cjs/series/interface/common.js.map +1 -1
- package/cjs/series/map/geo-source.d.ts +1 -1
- package/cjs/series/map/geo-source.js.map +1 -1
- package/cjs/series/polar/progress-like/progress-like.d.ts +0 -1
- package/cjs/series/polar/progress-like/progress-like.js +5 -5
- package/cjs/series/polar/progress-like/progress-like.js.map +1 -1
- package/cjs/series/polar/rose-like/rose-like.js +1 -1
- package/cjs/series/polar/rose-like/rose-like.js.map +1 -1
- package/cjs/series/progress/circular/circular-transformer.d.ts +5 -0
- package/cjs/series/progress/circular/circular-transformer.js +16 -0
- package/cjs/series/progress/circular/circular-transformer.js.map +1 -0
- package/cjs/series/progress/circular/circular.d.ts +3 -0
- package/cjs/series/progress/circular/circular.js +6 -6
- package/cjs/series/progress/circular/circular.js.map +1 -1
- package/cjs/series/radar/radar.js +2 -2
- package/cjs/series/radar/radar.js.map +1 -1
- package/cjs/series/range-column/range-column-transformer.d.ts +1 -0
- package/cjs/series/range-column/range-column-transformer.js +3 -0
- package/cjs/series/range-column/range-column-transformer.js.map +1 -1
- package/cjs/series/range-column/range-column.d.ts +0 -1
- package/cjs/series/range-column/range-column.js +1 -2
- package/cjs/series/range-column/range-column.js.map +1 -1
- package/cjs/series/rose/rose-transformer.d.ts +1 -0
- package/cjs/series/rose/rose-transformer.js +3 -0
- package/cjs/series/rose/rose-transformer.js.map +1 -1
- package/cjs/series/rose/rose.d.ts +0 -1
- package/cjs/series/rose/rose.js +2 -2
- package/cjs/series/rose/rose.js.map +1 -1
- package/cjs/series/waterfall/waterfall-transformer.d.ts +1 -0
- package/cjs/series/waterfall/waterfall-transformer.js +3 -0
- package/cjs/series/waterfall/waterfall-transformer.js.map +1 -1
- package/cjs/series/waterfall/waterfall.d.ts +0 -1
- package/cjs/series/waterfall/waterfall.js +1 -1
- package/cjs/series/waterfall/waterfall.js.map +1 -1
- package/cjs/typings/spec/common.d.ts +2 -2
- package/cjs/typings/spec/common.js.map +1 -1
- package/cjs/typings/spec/index.d.ts +1 -1
- package/cjs/typings/spec/index.js.map +1 -1
- package/cjs/vchart-all.js +2 -2
- package/cjs/vchart-all.js.map +1 -1
- package/cjs/vchart-simple.js +2 -2
- package/cjs/vchart-simple.js.map +1 -1
- package/esm/chart/base/base-chart-transformer.js +6 -8
- package/esm/chart/base/base-chart-transformer.js.map +1 -1
- package/esm/chart/base/base-chart.js +3 -5
- package/esm/chart/base/base-chart.js.map +1 -1
- package/esm/chart/base/util.d.ts +2 -2
- package/esm/chart/base/util.js.map +1 -1
- package/esm/chart/interface/chart.js.map +1 -1
- package/esm/chart/interface/common.d.ts +1 -5
- package/esm/chart/interface/common.js.map +1 -1
- package/esm/chart/map/map-transformer.js.map +1 -1
- package/esm/chart/sequence/interface.d.ts +2 -2
- package/esm/chart/sequence/interface.js.map +1 -1
- package/esm/chart/sequence/sequence-transformer.js.map +1 -1
- package/esm/compile/compilable-base.js +1 -1
- package/esm/compile/compilable-base.js.map +1 -1
- package/esm/compile/compiler.d.ts +1 -0
- package/esm/compile/compiler.js +11 -9
- package/esm/compile/compiler.js.map +1 -1
- package/esm/component/axis/base-axis.js +2 -2
- package/esm/component/axis/base-axis.js.map +1 -1
- package/esm/component/axis/polar/axis.js.map +1 -1
- package/esm/component/base/base-component.js +1 -1
- package/esm/component/base/base-component.js.map +1 -1
- package/esm/component/brush/brush.d.ts +8 -0
- package/esm/component/brush/brush.js +64 -11
- package/esm/component/brush/brush.js.map +1 -1
- package/esm/component/brush/interface.d.ts +4 -0
- package/esm/component/brush/interface.js.map +1 -1
- package/esm/component/crosshair/base.js +1 -1
- package/esm/component/crosshair/base.js.map +1 -1
- package/esm/component/crosshair/cartesian.js +8 -4
- package/esm/component/crosshair/cartesian.js.map +1 -1
- package/esm/component/crosshair/polar.js +4 -2
- package/esm/component/crosshair/polar.js.map +1 -1
- package/esm/component/crosshair/utils/cartesian.d.ts +2 -0
- package/esm/component/crosshair/utils/cartesian.js +4 -0
- package/esm/component/crosshair/utils/cartesian.js.map +1 -1
- package/esm/component/custom-mark/custom-mark.d.ts +1 -0
- package/esm/component/custom-mark/custom-mark.js +13 -0
- package/esm/component/custom-mark/custom-mark.js.map +1 -1
- package/esm/component/data-zoom/data-filter-base-component.d.ts +2 -2
- package/esm/component/data-zoom/data-filter-base-component.js +12 -10
- package/esm/component/data-zoom/data-filter-base-component.js.map +1 -1
- package/esm/component/data-zoom/data-zoom/data-zoom.d.ts +1 -0
- package/esm/component/data-zoom/data-zoom/data-zoom.js +13 -10
- package/esm/component/data-zoom/data-zoom/data-zoom.js.map +1 -1
- package/esm/component/data-zoom/data-zoom/interface.d.ts +1 -0
- package/esm/component/data-zoom/data-zoom/interface.js.map +1 -1
- package/esm/component/data-zoom/interface.d.ts +2 -0
- package/esm/component/data-zoom/interface.js.map +1 -1
- package/esm/component/data-zoom/scroll-bar/scroll-bar.js +3 -2
- package/esm/component/data-zoom/scroll-bar/scroll-bar.js.map +1 -1
- package/esm/component/data-zoom/util.js +5 -1
- package/esm/component/data-zoom/util.js.map +1 -1
- package/esm/component/geo/geo-coordinate.js.map +1 -1
- package/esm/component/indicator/indicator.js.map +1 -1
- package/esm/component/label/base-label.d.ts +2 -1
- package/esm/component/label/base-label.js +3 -0
- package/esm/component/label/base-label.js.map +1 -1
- package/esm/component/label/label.d.ts +1 -2
- package/esm/component/label/label.js +8 -9
- package/esm/component/label/label.js.map +1 -1
- package/esm/component/label/total-label.d.ts +1 -0
- package/esm/component/label/total-label.js +10 -0
- package/esm/component/label/total-label.js.map +1 -1
- package/esm/component/tooltip/constant.d.ts +5 -0
- package/esm/component/tooltip/constant.js +8 -0
- package/esm/component/tooltip/constant.js.map +1 -0
- package/esm/component/tooltip/index.d.ts +1 -0
- package/esm/component/tooltip/index.js +2 -0
- package/esm/component/tooltip/index.js.map +1 -1
- package/esm/component/tooltip/interface/spec.d.ts +4 -3
- package/esm/component/tooltip/interface/spec.js.map +1 -1
- package/esm/component/tooltip/tooltip-transformer.d.ts +2 -0
- package/esm/component/tooltip/tooltip-transformer.js +16 -1
- package/esm/component/tooltip/tooltip-transformer.js.map +1 -1
- package/esm/component/tooltip/tooltip.d.ts +3 -3
- package/esm/component/tooltip/tooltip.js +29 -45
- package/esm/component/tooltip/tooltip.js.map +1 -1
- package/esm/core/index.d.ts +1 -1
- package/esm/core/index.js +1 -1
- package/esm/core/index.js.map +1 -1
- package/esm/core/vchart.d.ts +4 -1
- package/esm/core/vchart.js +50 -49
- package/esm/core/vchart.js.map +1 -1
- package/esm/event/event-dispatcher.d.ts +1 -0
- package/esm/event/event-dispatcher.js +4 -1
- package/esm/event/event-dispatcher.js.map +1 -1
- package/esm/event/event.js +1 -1
- package/esm/event/event.js.map +1 -1
- package/esm/event/interface.d.ts +2 -1
- package/esm/event/interface.js.map +1 -1
- package/esm/interaction/index.d.ts +1 -0
- package/esm/interaction/index.js +2 -0
- package/esm/interaction/index.js.map +1 -0
- package/esm/interaction/interface.js +1 -1
- package/esm/interaction/zoom/zoomable.js +4 -6
- package/esm/interaction/zoom/zoomable.js.map +1 -1
- package/esm/model/interface.d.ts +3 -8
- package/esm/model/interface.js.map +1 -1
- package/esm/plugin/base/base-plugin-service.d.ts +2 -2
- package/esm/plugin/base/base-plugin-service.js +5 -5
- package/esm/plugin/base/base-plugin-service.js.map +1 -1
- package/esm/plugin/base/base-plugin.d.ts +1 -0
- package/esm/plugin/base/base-plugin.js +3 -0
- package/esm/plugin/base/base-plugin.js.map +1 -1
- package/esm/plugin/base/interface.d.ts +3 -3
- package/esm/plugin/base/interface.js.map +1 -1
- package/esm/plugin/chart/formatter/formatter.d.ts +2 -2
- package/esm/plugin/chart/formatter/formatter.js +5 -7
- package/esm/plugin/chart/formatter/formatter.js.map +1 -1
- package/esm/plugin/chart/media-query/media-query.d.ts +1 -1
- package/esm/plugin/chart/media-query/media-query.js +4 -4
- package/esm/plugin/chart/media-query/media-query.js.map +1 -1
- package/esm/plugin/chart/plugin-service.d.ts +1 -0
- package/esm/plugin/chart/plugin-service.js +3 -0
- package/esm/plugin/chart/plugin-service.js.map +1 -1
- package/esm/plugin/components/plugin-service.d.ts +1 -0
- package/esm/plugin/components/plugin-service.js +3 -0
- package/esm/plugin/components/plugin-service.js.map +1 -1
- package/esm/plugin/components/tooltip-handler/canvas/canvas-tooltip-handler.js +2 -2
- package/esm/plugin/components/tooltip-handler/canvas/canvas-tooltip-handler.js.map +1 -1
- package/esm/plugin/components/tooltip-handler/constants.d.ts +0 -5
- package/esm/plugin/components/tooltip-handler/constants.js +0 -8
- package/esm/plugin/components/tooltip-handler/constants.js.map +1 -1
- package/esm/plugin/components/tooltip-handler/dom/dom-tooltip-handler.js +3 -1
- package/esm/plugin/components/tooltip-handler/dom/dom-tooltip-handler.js.map +1 -1
- package/esm/plugin/components/tooltip-handler/utils/position.d.ts +1 -0
- package/esm/region/interface.d.ts +2 -1
- package/esm/region/interface.js.map +1 -1
- package/esm/region/region.js +1 -1
- package/esm/region/region.js.map +1 -1
- package/esm/series/area/area-transformer.d.ts +1 -0
- package/esm/series/area/area-transformer.js +3 -0
- package/esm/series/area/area-transformer.js.map +1 -1
- package/esm/series/area/area.d.ts +0 -1
- package/esm/series/area/area.js +1 -1
- package/esm/series/area/area.js.map +1 -1
- package/esm/series/bar/bar-transformer.d.ts +1 -0
- package/esm/series/bar/bar-transformer.js +3 -0
- package/esm/series/bar/bar-transformer.js.map +1 -1
- package/esm/series/bar/bar.d.ts +0 -1
- package/esm/series/bar/bar.js +2 -2
- package/esm/series/bar/bar.js.map +1 -1
- package/esm/series/base/base-series-transformer.d.ts +5 -3
- package/esm/series/base/base-series-transformer.js +10 -3
- package/esm/series/base/base-series-transformer.js.map +1 -1
- package/esm/series/base/base-series.d.ts +0 -4
- package/esm/series/base/base-series.js +11 -15
- package/esm/series/base/base-series.js.map +1 -1
- package/esm/series/cartesian/cartesian.js +3 -2
- package/esm/series/cartesian/cartesian.js.map +1 -1
- package/esm/series/funnel/funnel.js +2 -1
- package/esm/series/funnel/funnel.js.map +1 -1
- package/esm/series/gauge/gauge-pointer-transformer.d.ts +5 -0
- package/esm/series/gauge/gauge-pointer-transformer.js +8 -0
- package/esm/series/gauge/gauge-pointer-transformer.js.map +1 -0
- package/esm/series/gauge/gauge-pointer.d.ts +3 -1
- package/esm/series/gauge/gauge-pointer.js +6 -3
- package/esm/series/gauge/gauge-pointer.js.map +1 -1
- package/esm/series/gauge/gauge-transformer.d.ts +1 -0
- package/esm/series/gauge/gauge-transformer.js +3 -0
- package/esm/series/gauge/gauge-transformer.js.map +1 -1
- package/esm/series/gauge/gauge.d.ts +0 -1
- package/esm/series/gauge/gauge.js +1 -1
- package/esm/series/gauge/gauge.js.map +1 -1
- package/esm/series/interface/common.d.ts +6 -2
- package/esm/series/interface/common.js.map +1 -1
- package/esm/series/map/geo-source.d.ts +1 -1
- package/esm/series/map/geo-source.js.map +1 -1
- package/esm/series/polar/progress-like/progress-like.d.ts +0 -1
- package/esm/series/polar/progress-like/progress-like.js +5 -5
- package/esm/series/polar/progress-like/progress-like.js.map +1 -1
- package/esm/series/polar/rose-like/rose-like.js +1 -1
- package/esm/series/polar/rose-like/rose-like.js.map +1 -1
- package/esm/series/progress/circular/circular-transformer.d.ts +5 -0
- package/esm/series/progress/circular/circular-transformer.js +8 -0
- package/esm/series/progress/circular/circular-transformer.js.map +1 -0
- package/esm/series/progress/circular/circular.d.ts +3 -0
- package/esm/series/progress/circular/circular.js +8 -5
- package/esm/series/progress/circular/circular.js.map +1 -1
- package/esm/series/radar/radar.js +2 -2
- package/esm/series/radar/radar.js.map +1 -1
- package/esm/series/range-column/range-column-transformer.d.ts +1 -0
- package/esm/series/range-column/range-column-transformer.js +3 -0
- package/esm/series/range-column/range-column-transformer.js.map +1 -1
- package/esm/series/range-column/range-column.d.ts +0 -1
- package/esm/series/range-column/range-column.js +1 -2
- package/esm/series/range-column/range-column.js.map +1 -1
- package/esm/series/rose/rose-transformer.d.ts +1 -0
- package/esm/series/rose/rose-transformer.js +3 -0
- package/esm/series/rose/rose-transformer.js.map +1 -1
- package/esm/series/rose/rose.d.ts +0 -1
- package/esm/series/rose/rose.js +2 -2
- package/esm/series/rose/rose.js.map +1 -1
- package/esm/series/waterfall/waterfall-transformer.d.ts +1 -0
- package/esm/series/waterfall/waterfall-transformer.js +3 -0
- package/esm/series/waterfall/waterfall-transformer.js.map +1 -1
- package/esm/series/waterfall/waterfall.d.ts +0 -1
- package/esm/series/waterfall/waterfall.js +1 -1
- package/esm/series/waterfall/waterfall.js.map +1 -1
- package/esm/typings/spec/common.d.ts +2 -2
- package/esm/typings/spec/common.js.map +1 -1
- package/esm/typings/spec/index.d.ts +1 -1
- package/esm/typings/spec/index.js.map +1 -1
- package/esm/vchart-all.js +2 -2
- package/esm/vchart-all.js.map +1 -1
- package/esm/vchart-simple.js +1 -3
- package/esm/vchart-simple.js.map +1 -1
- package/package.json +12 -12
|
@@ -2,11 +2,11 @@ import { ComponentTypeEnum } from "../interface/type";
|
|
|
2
2
|
|
|
3
3
|
import { BaseComponent } from "../base/base-component";
|
|
4
4
|
|
|
5
|
-
import { isMobileLikeMode, isTrueBrowser, isMiniAppLikeMode
|
|
5
|
+
import { isMobileLikeMode, isTrueBrowser, isMiniAppLikeMode } from "../../util/env";
|
|
6
6
|
|
|
7
7
|
import { showTooltip } from "./utils/show-tooltip";
|
|
8
8
|
|
|
9
|
-
import {
|
|
9
|
+
import { isEmptyPos } from "./utils/common";
|
|
10
10
|
|
|
11
11
|
import { isSameDimensionInfo } from "../../event/events/dimension/util/common";
|
|
12
12
|
|
|
@@ -18,7 +18,7 @@ import { isDimensionInfo, isMarkInfo } from "./processor/util";
|
|
|
18
18
|
|
|
19
19
|
import { MarkTooltipProcessor } from "./processor/mark-tooltip";
|
|
20
20
|
|
|
21
|
-
import { hasParentElement,
|
|
21
|
+
import { hasParentElement, isArray, isValid, isNil, array } from "@visactor/vutils";
|
|
22
22
|
|
|
23
23
|
import { VChart } from "../../core/vchart";
|
|
24
24
|
|
|
@@ -26,25 +26,25 @@ import { Factory } from "../../core/factory";
|
|
|
26
26
|
|
|
27
27
|
import { TooltipSpecTransformer } from "./tooltip-transformer";
|
|
28
28
|
|
|
29
|
-
import { TOOLTIP_EL_CLASS_NAME, TooltipHandlerType } from "../../plugin/components/tooltip-handler/constants";
|
|
30
|
-
|
|
31
29
|
import { error } from "../../util";
|
|
32
30
|
|
|
31
|
+
import { TooltipHandlerType } from "./constant";
|
|
32
|
+
|
|
33
33
|
export class Tooltip extends BaseComponent {
|
|
34
34
|
constructor() {
|
|
35
35
|
super(...arguments), this.layoutZIndex = 1, this.type = ComponentTypeEnum.tooltip,
|
|
36
36
|
this.name = ComponentTypeEnum.tooltip, this.transformerConstructor = TooltipSpecTransformer,
|
|
37
37
|
this.specKey = "tooltip", this.layoutType = "none", this._alwaysShow = !1, this._eventList = [],
|
|
38
|
-
this._isTooltipShown = !1, this._mountEvent = (eType, query, callback) => {
|
|
38
|
+
this._isTooltipShown = !1, this._clickLock = !1, this._mountEvent = (eType, query, callback) => {
|
|
39
39
|
this.event.on(eType, query, callback), this._eventList.push({
|
|
40
40
|
eventType: eType,
|
|
41
41
|
handler: callback
|
|
42
42
|
});
|
|
43
43
|
}, this._getMouseOutHandler = needPointerDetection => params => {
|
|
44
|
-
var _a, _b;
|
|
44
|
+
var _a, _b, _c;
|
|
45
45
|
if (this._alwaysShow) return;
|
|
46
46
|
if (!this._isTooltipShown && !(null === (_b = null === (_a = this.tooltipHandler) || void 0 === _a ? void 0 : _a.isTooltipShown) || void 0 === _b ? void 0 : _b.call(_a))) return;
|
|
47
|
-
const browserEnv = isTrueBrowser(this._option.mode), {clientX: clientX, clientY: clientY} = params.event;
|
|
47
|
+
const browserEnv = isTrueBrowser(null === (_c = this._option) || void 0 === _c ? void 0 : _c.mode), {clientX: clientX, clientY: clientY} = params.event;
|
|
48
48
|
browserEnv && this._isPointerOnTooltip(params) || browserEnv && needPointerDetection && this._isPointerInChart({
|
|
49
49
|
x: clientX,
|
|
50
50
|
y: clientY
|
|
@@ -53,17 +53,20 @@ export class Tooltip extends BaseComponent {
|
|
|
53
53
|
this._alwaysShow || "none" !== this._spec.triggerOff && (this._hideTooltipByHandler(Object.assign(Object.assign({}, params), {
|
|
54
54
|
tooltip: this
|
|
55
55
|
})), this._cacheInfo = void 0, this._cacheParams = void 0);
|
|
56
|
-
}, this.
|
|
56
|
+
}, this._getMouseMoveHandler = isClick => params => {
|
|
57
57
|
if (this.tooltipHandler || this._initHandler(), this._processor || this._initProcessor(),
|
|
58
58
|
this._alwaysShow) return;
|
|
59
59
|
if (this._isPointerOnTooltip(params)) return;
|
|
60
|
+
if (!isClick && this._clickLock) return;
|
|
60
61
|
const mouseEventData = this._getMouseEventData(params), {tooltipInfo: {dimension: dimensionInfo}, ignore: {mark: ignoreMark, dimension: ignoreDimension}} = mouseEventData;
|
|
61
62
|
let markTooltipSuccess = !1, dimensionTooltipSuccess = !1;
|
|
62
|
-
markTooltipSuccess = this._showTooltipByMouseEvent("mark", mouseEventData, params),
|
|
63
|
-
markTooltipSuccess || (dimensionTooltipSuccess = this._showTooltipByMouseEvent("dimension", mouseEventData, params)),
|
|
64
|
-
markTooltipSuccess || dimensionTooltipSuccess || isEmptyPos(params) || (ignoreMark && isMarkInfo(this._cacheInfo) ? markTooltipSuccess = this._showTooltipByMouseEvent("mark", mouseEventData, params, !0) : ignoreDimension && isDimensionInfo(this._cacheInfo) ? dimensionTooltipSuccess = this._showTooltipByMouseEvent("dimension", mouseEventData, params, !0) : isValid(dimensionInfo) && (dimensionTooltipSuccess = this._showTooltipByMouseEvent("dimension", mouseEventData, params))),
|
|
65
|
-
markTooltipSuccess || dimensionTooltipSuccess && !isNil(dimensionInfo) || this._handleChartMouseOut(params)
|
|
66
|
-
|
|
63
|
+
markTooltipSuccess = this._showTooltipByMouseEvent("mark", mouseEventData, params, isClick),
|
|
64
|
+
markTooltipSuccess || (dimensionTooltipSuccess = this._showTooltipByMouseEvent("dimension", mouseEventData, params, isClick)),
|
|
65
|
+
markTooltipSuccess || dimensionTooltipSuccess || isEmptyPos(params) || (ignoreMark && isMarkInfo(this._cacheInfo) ? markTooltipSuccess = this._showTooltipByMouseEvent("mark", mouseEventData, params, isClick, !0) : ignoreDimension && isDimensionInfo(this._cacheInfo) ? dimensionTooltipSuccess = this._showTooltipByMouseEvent("dimension", mouseEventData, params, isClick, !0) : isValid(dimensionInfo) && (dimensionTooltipSuccess = this._showTooltipByMouseEvent("dimension", mouseEventData, params, isClick))),
|
|
66
|
+
markTooltipSuccess || dimensionTooltipSuccess && !isNil(dimensionInfo) || (this._handleChartMouseOut(params),
|
|
67
|
+
isClick && this._clickLock && (this._clickLock = !1));
|
|
68
|
+
}, this._showTooltipByMouseEvent = (activeType, mouseEventData, params, isClick, useCache) => {
|
|
69
|
+
var _a;
|
|
67
70
|
const processor = this._processor[activeType];
|
|
68
71
|
if (!processor.shouldHandleTooltip(params, {
|
|
69
72
|
tooltipInfo: mouseEventData.tooltipInfo[activeType],
|
|
@@ -75,9 +78,9 @@ export class Tooltip extends BaseComponent {
|
|
|
75
78
|
success = !processor.showTooltip(tooltipInfo, params, isSameAsCache), success && (this._cacheInfo = tooltipInfo,
|
|
76
79
|
this._cacheParams = params);
|
|
77
80
|
}
|
|
78
|
-
success && (this._isTooltipShown = !0);
|
|
79
|
-
const vchart = this._option.globalInstance;
|
|
80
|
-
return success && VChart.globalConfig.uniqueTooltip && VChart.hideTooltip(vchart.id),
|
|
81
|
+
success && (this._isTooltipShown = !0, isClick && this._spec.lockAfterClick && !this._clickLock && (this._clickLock = !0));
|
|
82
|
+
const vchart = null === (_a = this._option) || void 0 === _a ? void 0 : _a.globalInstance;
|
|
83
|
+
return success && VChart.globalConfig.uniqueTooltip && vchart && VChart.hideTooltip(vchart.id),
|
|
81
84
|
success;
|
|
82
85
|
}, this._getMouseEventData = params => {
|
|
83
86
|
const result = {
|
|
@@ -169,18 +172,18 @@ export class Tooltip extends BaseComponent {
|
|
|
169
172
|
_initEvent() {
|
|
170
173
|
var _a;
|
|
171
174
|
if (this._option.disableTriggerEvent) return;
|
|
172
|
-
const trigger = null !== (_a = this._spec.trigger) && void 0 !== _a ? _a : "hover", mode = this._option.mode;
|
|
173
|
-
"hover"
|
|
175
|
+
const trigger = array(null !== (_a = this._spec.trigger) && void 0 !== _a ? _a : "hover"), mode = this._option.mode;
|
|
176
|
+
trigger.includes("hover") && (this._mountEvent("pointermove", {
|
|
174
177
|
source: "chart"
|
|
175
|
-
}, this.
|
|
178
|
+
}, this._getMouseMoveHandler(!1)), (isMobileLikeMode(mode) || isMiniAppLikeMode(mode)) && (this._mountEvent("pointerdown", {
|
|
176
179
|
source: "chart"
|
|
177
|
-
}, this.
|
|
180
|
+
}, this._getMouseMoveHandler(!1)), this._mountEvent("pointerup", {
|
|
178
181
|
source: "window"
|
|
179
182
|
}, this._getMouseOutHandler(!0))), this._mountEvent("pointerout", {
|
|
180
183
|
source: "canvas"
|
|
181
|
-
}, this._getMouseOutHandler(!1)))
|
|
184
|
+
}, this._getMouseOutHandler(!1))), trigger.includes("click") && (this._mountEvent("pointertap", {
|
|
182
185
|
source: "chart"
|
|
183
|
-
}, this.
|
|
186
|
+
}, this._getMouseMoveHandler(!0)), this._mountEvent("pointerup", {
|
|
184
187
|
source: "window"
|
|
185
188
|
}, this._getMouseOutHandler(!0)));
|
|
186
189
|
}
|
|
@@ -188,27 +191,6 @@ export class Tooltip extends BaseComponent {
|
|
|
188
191
|
var _a, _b;
|
|
189
192
|
super.reInit(spec), this.tooltipHandler ? null === (_b = (_a = this.tooltipHandler).reInit) || void 0 === _b || _b.call(_a) : this._initHandler();
|
|
190
193
|
}
|
|
191
|
-
setAttrFromSpec() {
|
|
192
|
-
var _a;
|
|
193
|
-
super.setAttrFromSpec();
|
|
194
|
-
const userSpec = this._spec;
|
|
195
|
-
this._spec = Object.assign(Object.assign({}, userSpec), {
|
|
196
|
-
visible: !isValid(userSpec.visible) || userSpec.visible,
|
|
197
|
-
activeType: getTooltipActualActiveType(userSpec),
|
|
198
|
-
renderMode: "html",
|
|
199
|
-
trigger: isValid(userSpec.trigger) ? userSpec.trigger : "hover",
|
|
200
|
-
className: isValid(userSpec.className) ? userSpec.className : TOOLTIP_EL_CLASS_NAME,
|
|
201
|
-
enterable: !!isValid(userSpec.enterable) && userSpec.enterable,
|
|
202
|
-
transitionDuration: isValid(userSpec.transitionDuration) ? userSpec.transitionDuration : 150
|
|
203
|
-
}), this._spec.triggerOff = isValid(userSpec.triggerOff) ? userSpec.triggerOff : this._spec.trigger,
|
|
204
|
-
isValid(userSpec.renderMode) ? this._spec.renderMode = userSpec.renderMode : !isMiniAppLikeMode(this._option.mode) && isTrueBrowser(this._option.mode) || (this._spec.renderMode = "canvas"),
|
|
205
|
-
isValid(userSpec.mark) && (this._spec.mark = Object.assign(Object.assign({}, cloneDeep(userSpec.mark)), {
|
|
206
|
-
activeType: "mark"
|
|
207
|
-
})), isValid(userSpec.dimension) && (this._spec.dimension = Object.assign(Object.assign({}, cloneDeep(userSpec.dimension)), {
|
|
208
|
-
activeType: "dimension"
|
|
209
|
-
})), isValid(userSpec.parentElement) ? isString(userSpec.parentElement) ? this._spec.parentElement = null === (_a = null === globalThis || void 0 === globalThis ? void 0 : globalThis.document) || void 0 === _a ? void 0 : _a.getElementById(userSpec.parentElement) : this._spec.parentElement = userSpec.parentElement : isTrueBrowser(this._option.mode) && (this._spec.parentElement = null == domDocument ? void 0 : domDocument.body),
|
|
210
|
-
isValid(userSpec.confine) ? this._spec.confine = userSpec.confine : this._spec.confine = "canvas" === this._spec.renderMode;
|
|
211
|
-
}
|
|
212
194
|
showTooltip(datum, options) {
|
|
213
195
|
var _a;
|
|
214
196
|
if (this.tooltipHandler || this._initHandler(), this._processor || this._initProcessor(),
|
|
@@ -243,7 +225,9 @@ export class Tooltip extends BaseComponent {
|
|
|
243
225
|
return !isNil(prevParams) && !isNil(nextParams) && (prevParams.mark === nextParams.mark && prevParams.model === nextParams.model && prevParams.datum === nextParams.datum);
|
|
244
226
|
}
|
|
245
227
|
_isPointerInChart(point) {
|
|
246
|
-
|
|
228
|
+
var _a;
|
|
229
|
+
const globalInstance = null === (_a = this._option) || void 0 === _a ? void 0 : _a.globalInstance;
|
|
230
|
+
if (!globalInstance) return !1;
|
|
247
231
|
if (!globalInstance.getChart()) return !1;
|
|
248
232
|
const {x: x, y: y} = point, canvas = globalInstance.getCanvas(), {x: chartX, y: chartY, width: chartWidth, height: chartHeight} = canvas.getBoundingClientRect();
|
|
249
233
|
return x >= chartX && x <= chartX + chartWidth && y >= chartY && y <= chartY + chartHeight;
|
|
@@ -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, ITooltipLineActual, TooltipActiveType } from '../../typings/tooltip';\nimport type { Datum, IPoint, IShowTooltipOption } from '../../typings';\nimport { isMobileLikeMode, isTrueBrowser, isMiniAppLikeMode, domDocument } 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 { getTooltipActualActiveType, isEmptyPos } from './utils/common';\nimport { isSameDimensionInfo } from '../../event/events/dimension/util/common';\nimport { ChartEvent, Event_Source_Type } from '../../constant';\nimport type { BaseTooltipProcessor, DimensionTooltipInfo, MarkTooltipInfo, TooltipInfo } from './processor';\n// eslint-disable-next-line no-duplicate-imports\nimport { DimensionTooltipProcessor } from './processor/dimension-tooltip';\nimport { isDimensionInfo, isMarkInfo } from './processor/util';\nimport { MarkTooltipProcessor } from './processor/mark-tooltip';\nimport type { Maybe } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { hasParentElement, isString, cloneDeep, isArray, isValid, isNil } 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 { TOOLTIP_EL_CLASS_NAME, TooltipHandlerType } from '../../plugin/components/tooltip-handler/constants';\nimport { error } from '../../util';\n\nexport type TooltipActualTitleContent = {\n title?: ITooltipLineActual;\n content?: ITooltipLineActual[];\n};\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\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 private _alwaysShow: boolean = false;\n\n private _cacheInfo: TooltipInfo | undefined;\n private _cacheParams: BaseEventParams | undefined;\n\n private _eventList: EventHandlerList = [];\n\n protected _processor: ITooltipActiveTypeAsKeys<MarkTooltipProcessor, DimensionTooltipProcessor>;\n\n protected _isTooltipShown: boolean = false;\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\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 } as unknown as TooltipEventParams);\n this.event.emit(ChartEvent.tooltipRelease, {\n tooltip: this\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 this._processor = {\n mark: new MarkTooltipProcessor(this),\n dimension: new DimensionTooltipProcessor(this)\n };\n }\n\n protected _initEvent() {\n if (this._option.disableTriggerEvent) {\n return;\n }\n const trigger = this._spec.trigger ?? 'hover';\n // TODO: triggerOff完整支持\n // const triggerOff = this._spec.triggerOff ?? trigger;\n const mode = this._option.mode;\n\n if (trigger === 'hover') {\n this._mountEvent('pointermove', { source: 'chart' }, this._handleMouseMove);\n // 移动端的点按 + 滑动触发\n if (isMobileLikeMode(mode) || isMiniAppLikeMode(mode)) {\n this._mountEvent('pointerdown', { source: 'chart' }, this._handleMouseMove);\n this._mountEvent('pointerup', { source: 'window' }, this._getMouseOutHandler(true));\n }\n this._mountEvent('pointerout', { source: 'canvas' }, this._getMouseOutHandler(false));\n } else if (trigger === 'click') {\n this._mountEvent('pointertap', { source: 'chart' }, this._handleMouseMove);\n this._mountEvent('pointerup', { source: 'window' }, this._getMouseOutHandler(true));\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 _getMouseOutHandler = (needPointerDetection?: boolean) => (params: BaseEventParams) => {\n if (this._alwaysShow) {\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 }\n };\n\n protected _handleMouseMove = (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 /* 获取 tooltip 原始数据 */\n const mouseEventData = this._getMouseEventData(params);\n const {\n tooltipInfo: { dimension: dimensionInfo },\n ignore: { mark: ignoreMark, dimension: ignoreDimension }\n } = mouseEventData;\n\n let markTooltipSuccess: boolean = false;\n let dimensionTooltipSuccess: boolean = false;\n\n /* 显示常规tooltip */\n markTooltipSuccess = this._showTooltipByMouseEvent('mark', mouseEventData, params);\n if (!markTooltipSuccess) {\n dimensionTooltipSuccess = this._showTooltipByMouseEvent('dimension', mouseEventData, params);\n }\n\n /* 如果不是常规情况,进行一些特殊情况tooltip处理 */\n if (!markTooltipSuccess && !dimensionTooltipSuccess && !isEmptyPos(params)) {\n // 用户手动配置ignore,则继续显示缓存tooltip\n if (ignoreMark && isMarkInfo(this._cacheInfo)) {\n markTooltipSuccess = this._showTooltipByMouseEvent('mark', mouseEventData, params, true);\n } else if (ignoreDimension && isDimensionInfo(this._cacheInfo)) {\n dimensionTooltipSuccess = this._showTooltipByMouseEvent('dimension', mouseEventData, params, true);\n } else if (isValid(dimensionInfo)) {\n // 用户没有手动配置ignore的话,默认显示dimension tooltip\n dimensionTooltipSuccess = this._showTooltipByMouseEvent('dimension', mouseEventData, params);\n }\n }\n\n /* 如果还是不应该显示tooltip,则隐藏上一次tooltip */\n if (!markTooltipSuccess && (!dimensionTooltipSuccess || 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 useCache?: boolean\n ): boolean => {\n const processor = this._processor[activeType];\n // 判断是否应该触发 tooltip\n if (\n !processor.shouldHandleTooltip(params, {\n tooltipInfo: mouseEventData.tooltipInfo[activeType],\n ignore: mouseEventData.ignore[activeType]\n })\n ) {\n return false;\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);\n success = !processor.showTooltip(tooltipInfo as any, params, isSameAsCache);\n if (success) {\n // 成功显示 tooltip,则更新缓存\n this._cacheInfo = tooltipInfo;\n this._cacheParams = params;\n }\n }\n if (success) {\n this._isTooltipShown = true;\n }\n // 全局唯一 tooltip\n const vchart = this._option.globalInstance;\n if (success && VChart.globalConfig.uniqueTooltip) {\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 Object.keys(this._processor).forEach(activeType => {\n const { tooltipInfo, ignore } = (this._processor[activeType] as BaseTooltipProcessor).getMouseEventData(params);\n result.tooltipInfo[activeType] = tooltipInfo;\n result.ignore[activeType] = 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 this.event.emit(ChartEvent.tooltipHide, {\n ...params,\n source: Event_Source_Type.chart, // 统一 event 的来源\n tooltip: this\n });\n if (this.tooltipHandler?.hideTooltip) {\n const result = this.tooltipHandler.hideTooltip(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 setAttrFromSpec() {\n super.setAttrFromSpec();\n const userSpec = this._spec as ITooltipSpec;\n this._spec = {\n ...userSpec,\n visible: isValid(userSpec.visible) ? userSpec.visible : true,\n activeType: getTooltipActualActiveType(userSpec),\n renderMode: 'html',\n trigger: isValid(userSpec.trigger) ? userSpec.trigger : 'hover',\n className: isValid(userSpec.className) ? userSpec.className : TOOLTIP_EL_CLASS_NAME,\n enterable: isValid(userSpec.enterable) ? userSpec.enterable : false,\n transitionDuration: isValid(userSpec.transitionDuration) ? userSpec.transitionDuration : 150\n } as ITooltipSpec;\n this._spec.triggerOff = isValid(userSpec.triggerOff) ? userSpec.triggerOff : this._spec.trigger;\n\n if (isValid(userSpec.renderMode)) {\n this._spec.renderMode = userSpec.renderMode;\n } else if (isMiniAppLikeMode(this._option.mode) || !isTrueBrowser(this._option.mode)) {\n // 小程序或非浏览器环境下,默认使用canvas渲染\n this._spec.renderMode = 'canvas';\n }\n\n if (isValid(userSpec.mark)) {\n this._spec.mark = {\n ...cloneDeep(userSpec.mark),\n activeType: 'mark'\n };\n }\n if (isValid(userSpec.dimension)) {\n this._spec.dimension = {\n ...cloneDeep(userSpec.dimension),\n activeType: 'dimension'\n };\n }\n\n if (isValid(userSpec.parentElement)) {\n if (isString(userSpec.parentElement)) {\n this._spec.parentElement = globalThis?.document?.getElementById(userSpec.parentElement);\n } else {\n this._spec.parentElement = userSpec.parentElement;\n }\n } else if (isTrueBrowser(this._option.mode)) {\n this._spec.parentElement = domDocument?.body;\n }\n\n if (isValid(userSpec.confine)) {\n this._spec.confine = userSpec.confine;\n } else {\n this._spec.confine = this._spec.renderMode === 'canvas';\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.tooltipHandler, this._option);\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(nextInfo?: TooltipInfo, nextParams?: BaseEventParams): boolean {\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 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, 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, ITooltipLineActual, 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';\nimport type { BaseTooltipProcessor, DimensionTooltipInfo, MarkTooltipInfo, TooltipInfo } from './processor';\n// eslint-disable-next-line no-duplicate-imports\nimport { DimensionTooltipProcessor } from './processor/dimension-tooltip';\nimport { isDimensionInfo, isMarkInfo } from './processor/util';\nimport { MarkTooltipProcessor } from './processor/mark-tooltip';\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 { TooltipHandlerType } from './constant';\n\nexport type TooltipActualTitleContent = {\n title?: ITooltipLineActual;\n content?: ITooltipLineActual[];\n};\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\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 private _alwaysShow: boolean = false;\n\n private _cacheInfo: TooltipInfo | undefined;\n private _cacheParams: BaseEventParams | undefined;\n\n private _eventList: EventHandlerList = [];\n\n protected _processor: ITooltipActiveTypeAsKeys<MarkTooltipProcessor, DimensionTooltipProcessor>;\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\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 } as unknown as TooltipEventParams);\n this.event.emit(ChartEvent.tooltipRelease, {\n tooltip: this\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 this._processor = {\n mark: new MarkTooltipProcessor(this),\n dimension: new DimensionTooltipProcessor(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 }\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 _getMouseOutHandler = (needPointerDetection?: boolean) => (params: BaseEventParams) => {\n if (this._alwaysShow) {\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 }\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 if (!isClick && this._clickLock) {\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 let markTooltipSuccess: boolean = false;\n let dimensionTooltipSuccess: boolean = false;\n\n /* 显示常规tooltip */\n markTooltipSuccess = this._showTooltipByMouseEvent('mark', mouseEventData, params, isClick);\n if (!markTooltipSuccess) {\n dimensionTooltipSuccess = this._showTooltipByMouseEvent('dimension', mouseEventData, params, isClick);\n }\n\n /* 如果不是常规情况,进行一些特殊情况tooltip处理 */\n if (!markTooltipSuccess && !dimensionTooltipSuccess && !isEmptyPos(params)) {\n // 用户手动配置ignore,则继续显示缓存tooltip\n if (ignoreMark && isMarkInfo(this._cacheInfo)) {\n markTooltipSuccess = this._showTooltipByMouseEvent('mark', mouseEventData, params, isClick, true);\n } else if (ignoreDimension && isDimensionInfo(this._cacheInfo)) {\n dimensionTooltipSuccess = this._showTooltipByMouseEvent('dimension', mouseEventData, params, isClick, true);\n } else if (isValid(dimensionInfo)) {\n // 用户没有手动配置ignore的话,默认显示dimension tooltip\n dimensionTooltipSuccess = this._showTooltipByMouseEvent('dimension', mouseEventData, params, isClick);\n }\n }\n\n /* 如果还是不应该显示tooltip,则隐藏上一次tooltip */\n if (!markTooltipSuccess && (!dimensionTooltipSuccess || isNil(dimensionInfo))) {\n this._handleChartMouseOut(params);\n if (isClick && this._clickLock) {\n this._clickLock = false;\n }\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 (\n !processor.shouldHandleTooltip(params, {\n tooltipInfo: mouseEventData.tooltipInfo[activeType],\n ignore: mouseEventData.ignore[activeType]\n })\n ) {\n return false;\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);\n success = !processor.showTooltip(tooltipInfo as any, params, isSameAsCache);\n if (success) {\n // 成功显示 tooltip,则更新缓存\n this._cacheInfo = tooltipInfo;\n this._cacheParams = params;\n }\n }\n if (success) {\n this._isTooltipShown = true;\n if (isClick && this._spec.lockAfterClick && !this._clickLock) {\n this._clickLock = true;\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 Object.keys(this._processor).forEach(activeType => {\n const { tooltipInfo, ignore } = (this._processor[activeType] as BaseTooltipProcessor).getMouseEventData(params);\n result.tooltipInfo[activeType] = tooltipInfo;\n result.ignore[activeType] = 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 this.event.emit(ChartEvent.tooltipHide, {\n ...params,\n source: Event_Source_Type.chart, // 统一 event 的来源\n tooltip: this\n });\n if (this.tooltipHandler?.hideTooltip) {\n const result = this.tooltipHandler.hideTooltip(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.tooltipHandler, this._option);\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(nextInfo?: TooltipInfo, nextParams?: BaseEventParams): boolean {\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"]}
|
package/esm/core/index.d.ts
CHANGED
|
@@ -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.10.0-alpha.
|
|
4
|
+
export declare const version = "1.10.0-alpha.9";
|
|
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
package/esm/core/index.js.map
CHANGED
|
@@ -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,gBAAgB,CAAC;AAMxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAK5B,cAAc,uBAAuB,CAAC;AAGtC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,gBAAgB,CAAC;AAG/B,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAGjD,cAAc,WAAW,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.10.0-alpha.
|
|
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,gBAAgB,CAAC;AAMxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAK5B,cAAc,uBAAuB,CAAC;AAGtC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,gBAAgB,CAAC;AAG/B,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAGjD,cAAc,WAAW,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.10.0-alpha.9\";\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 '../constant';\nexport * from './interface';\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\n// plugin\nexport * from '../plugin';\n"]}
|
package/esm/core/vchart.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import type { ISeries } from '../series/interface/series';
|
|
2
2
|
import type { ILayoutConstructor, LayoutCallBack } from '../layout/interface';
|
|
3
3
|
import type { IDataValues, IMarkStateSpec, IInitOption } from '../typings/spec/common';
|
|
4
|
+
import { RenderModeEnum } from '../typings/spec/common';
|
|
4
5
|
import type { ISeriesConstructor } from '../series/interface';
|
|
5
|
-
import type { DimensionIndexOption, IChart, IChartConstructor, IChartSpecInfo } from '../chart/interface';
|
|
6
|
+
import type { DimensionIndexOption, IChart, IChartConstructor, IChartOption, IChartSpecInfo } from '../chart/interface';
|
|
6
7
|
import type { IComponentConstructor } from '../component/interface';
|
|
7
8
|
import type { EventCallback, EventParams, EventQuery, EventType } from '../event/interface';
|
|
8
9
|
import type { IParserOptions } from '@visactor/vdataset';
|
|
@@ -182,5 +183,7 @@ export declare class VChart implements IVChart {
|
|
|
182
183
|
setRuntimeSpec(spec: any): void;
|
|
183
184
|
private _initChartPlugin;
|
|
184
185
|
private _chartPluginApply;
|
|
186
|
+
protected _getMode(): (typeof RenderModeEnum)["desktop-browser"] | "desktop-browser" | "mobile-browser" | "node" | "worker" | "miniApp" | "wx" | "desktop-miniApp" | "lynx";
|
|
187
|
+
protected _getChartOption(type: string): IChartOption;
|
|
185
188
|
}
|
|
186
189
|
export declare const registerVChartCore: () => void;
|
package/esm/core/vchart.js
CHANGED
|
@@ -114,6 +114,8 @@ import { darkTheme, registerTheme } from "../theme/builtin";
|
|
|
114
114
|
|
|
115
115
|
import { ChartPluginService } from "../plugin/chart/plugin-service";
|
|
116
116
|
|
|
117
|
+
import { registerElementHighlight as registerHoverInteraction, registerElementSelect as registerSelectInteraction } from "../interaction";
|
|
118
|
+
|
|
117
119
|
export class VChart {
|
|
118
120
|
static useRegisters(comps) {
|
|
119
121
|
comps.forEach((fn => {
|
|
@@ -234,57 +236,21 @@ export class VChart {
|
|
|
234
236
|
_initChartSpec(spec, actionSource) {
|
|
235
237
|
var _a;
|
|
236
238
|
VChart.getFunctionList() && VChart.getFunctionList().length && (spec = functionTransform(spec, VChart)),
|
|
237
|
-
this._spec = spec, this._chartSpecTransformer || (this._chartSpecTransformer = Factory.createChartSpecTransformer(this._spec.type,
|
|
238
|
-
|
|
239
|
-
getTheme: () => {
|
|
240
|
-
var _a;
|
|
241
|
-
return null !== (_a = this._currentTheme) && void 0 !== _a ? _a : {};
|
|
242
|
-
},
|
|
243
|
-
animation: this._option.animation
|
|
244
|
-
})), this._chartSpecTransformer.transformSpec(this._spec), this._chartPluginApply("onAfterChartSpecTransform", this._spec, actionSource),
|
|
239
|
+
this._spec = spec, this._chartSpecTransformer || (this._chartSpecTransformer = Factory.createChartSpecTransformer(this._spec.type, this._getChartOption(this._spec.type))),
|
|
240
|
+
this._chartSpecTransformer.transformSpec(this._spec), this._chartPluginApply("onAfterChartSpecTransform", this._spec, actionSource),
|
|
245
241
|
this._specInfo = null === (_a = this._chartSpecTransformer) || void 0 === _a ? void 0 : _a.transformModelSpec(this._spec),
|
|
246
242
|
this._chartPluginApply("onAfterModelSpecTransform", this._spec, this._specInfo, actionSource);
|
|
247
243
|
}
|
|
248
244
|
_updateSpecInfo() {
|
|
249
245
|
var _a;
|
|
250
|
-
this._chartSpecTransformer || (this._chartSpecTransformer = Factory.createChartSpecTransformer(this._spec.type,
|
|
251
|
-
|
|
252
|
-
getTheme: () => {
|
|
253
|
-
var _a;
|
|
254
|
-
return null !== (_a = this._currentTheme) && void 0 !== _a ? _a : {};
|
|
255
|
-
}
|
|
256
|
-
})), this._specInfo = null === (_a = this._chartSpecTransformer) || void 0 === _a ? void 0 : _a.createSpecInfo(this._spec);
|
|
246
|
+
this._chartSpecTransformer || (this._chartSpecTransformer = Factory.createChartSpecTransformer(this._spec.type, this._getChartOption(this._spec.type))),
|
|
247
|
+
this._specInfo = null === (_a = this._chartSpecTransformer) || void 0 === _a ? void 0 : _a.createSpecInfo(this._spec);
|
|
257
248
|
}
|
|
258
249
|
_initChart(spec) {
|
|
259
250
|
var _a, _b, _c;
|
|
260
251
|
if (!this._compiler) return void (null === (_a = this._option) || void 0 === _a || _a.onError("compiler is not initialized"));
|
|
261
252
|
if (this._chart) return void (null === (_b = this._option) || void 0 === _b || _b.onError("chart is already initialized"));
|
|
262
|
-
const chart = Factory.createChart(spec.type, spec,
|
|
263
|
-
type: spec.type,
|
|
264
|
-
globalInstance: this,
|
|
265
|
-
eventDispatcher: this._eventDispatcher,
|
|
266
|
-
dataSet: this._dataSet,
|
|
267
|
-
container: this._container,
|
|
268
|
-
canvas: this._canvas,
|
|
269
|
-
map: new Map,
|
|
270
|
-
mode: this._option.mode || RenderModeEnum["desktop-browser"],
|
|
271
|
-
modeParams: this._option.modeParams,
|
|
272
|
-
getCompiler: () => this._compiler,
|
|
273
|
-
performanceHook: this._option.performanceHook,
|
|
274
|
-
viewBox: this._viewBox,
|
|
275
|
-
animation: this._option.animation,
|
|
276
|
-
getTheme: () => {
|
|
277
|
-
var _a;
|
|
278
|
-
return null !== (_a = this._currentTheme) && void 0 !== _a ? _a : {};
|
|
279
|
-
},
|
|
280
|
-
getSpecInfo: () => {
|
|
281
|
-
var _a;
|
|
282
|
-
return null !== (_a = this._specInfo) && void 0 !== _a ? _a : {};
|
|
283
|
-
},
|
|
284
|
-
layout: this._option.layout,
|
|
285
|
-
onError: this._onError,
|
|
286
|
-
disableTriggerEvent: !0 === this._option.disableTriggerEvent
|
|
287
|
-
});
|
|
253
|
+
const chart = Factory.createChart(spec.type, spec, this._getChartOption(spec.type));
|
|
288
254
|
chart ? (this._chart = chart, this._chart.setCanvasRect(this._currentSize.width, this._currentSize.height),
|
|
289
255
|
this._chart.created(), this._chart.init(), this._event.emit(ChartEvent.initialized, {})) : null === (_c = this._option) || void 0 === _c || _c.onError("init chart fail");
|
|
290
256
|
}
|
|
@@ -318,7 +284,7 @@ export class VChart {
|
|
|
318
284
|
return calculateChartSize(this._spec, {
|
|
319
285
|
container: this._container,
|
|
320
286
|
canvas: this._canvas,
|
|
321
|
-
mode: this.
|
|
287
|
+
mode: this._getMode(),
|
|
322
288
|
modeParams: this._option.modeParams
|
|
323
289
|
}, {
|
|
324
290
|
width: null !== (_b = null === (_a = this._currentSize) || void 0 === _a ? void 0 : _a.width) && void 0 !== _b ? _b : DEFAULT_CHART_WIDTH,
|
|
@@ -425,11 +391,13 @@ export class VChart {
|
|
|
425
391
|
release() {
|
|
426
392
|
var _a, _b, _c, _d;
|
|
427
393
|
(null === (_a = this._onResize) || void 0 === _a ? void 0 : _a.cancel) && this._onResize.cancel(),
|
|
428
|
-
this._chartPluginApply("
|
|
429
|
-
null === (
|
|
430
|
-
|
|
431
|
-
this.
|
|
432
|
-
this.
|
|
394
|
+
this._chartPluginApply("releaseAll"), this._chartPlugin = null, this._chartSpecTransformer = null,
|
|
395
|
+
null === (_b = this._chart) || void 0 === _b || _b.release(), null === (_c = this._compiler) || void 0 === _c || _c.release(),
|
|
396
|
+
null === (_d = this._eventDispatcher) || void 0 === _d || _d.release(), this._unBindResizeEvent(),
|
|
397
|
+
this._releaseData(), this._onError = null, this._onResize = null, this._container = null,
|
|
398
|
+
this._currentTheme = null, this._option = null, this._chart = null, this._compiler = null,
|
|
399
|
+
this._spec = null, this._specInfo = null, this._originalSpec = null, this._userEvents = null,
|
|
400
|
+
this._event = null, this._eventDispatcher = null, this._isReleased = !0, InstanceManager.unregisterInstance(this);
|
|
433
401
|
}
|
|
434
402
|
updateData(id, data, options) {
|
|
435
403
|
return __awaiter(this, void 0, void 0, (function*() {
|
|
@@ -865,6 +833,37 @@ export class VChart {
|
|
|
865
833
|
_chartPluginApply(funcName, ...args) {
|
|
866
834
|
this._chartPlugin && this._chartPlugin[funcName] && this._chartPlugin[funcName].apply(this._chartPlugin, args);
|
|
867
835
|
}
|
|
836
|
+
_getMode() {
|
|
837
|
+
return this._option.mode || RenderModeEnum["desktop-browser"];
|
|
838
|
+
}
|
|
839
|
+
_getChartOption(type) {
|
|
840
|
+
return {
|
|
841
|
+
type: type,
|
|
842
|
+
globalInstance: this,
|
|
843
|
+
eventDispatcher: this._eventDispatcher,
|
|
844
|
+
dataSet: this._dataSet,
|
|
845
|
+
container: this._container,
|
|
846
|
+
canvas: this._canvas,
|
|
847
|
+
map: new Map,
|
|
848
|
+
mode: this._getMode(),
|
|
849
|
+
modeParams: this._option.modeParams,
|
|
850
|
+
getCompiler: () => this._compiler,
|
|
851
|
+
performanceHook: this._option.performanceHook,
|
|
852
|
+
viewBox: this._viewBox,
|
|
853
|
+
animation: this._option.animation,
|
|
854
|
+
getTheme: () => {
|
|
855
|
+
var _a;
|
|
856
|
+
return null !== (_a = this._currentTheme) && void 0 !== _a ? _a : {};
|
|
857
|
+
},
|
|
858
|
+
getSpecInfo: () => {
|
|
859
|
+
var _a;
|
|
860
|
+
return null !== (_a = this._specInfo) && void 0 !== _a ? _a : {};
|
|
861
|
+
},
|
|
862
|
+
layout: this._option.layout,
|
|
863
|
+
onError: this._onError,
|
|
864
|
+
disableTriggerEvent: !0 === this._option.disableTriggerEvent
|
|
865
|
+
};
|
|
866
|
+
}
|
|
868
867
|
}
|
|
869
868
|
|
|
870
869
|
VChart.InstanceManager = InstanceManager, VChart.ThemeManager = ThemeManager, VChart.globalConfig = {
|
|
@@ -874,10 +873,12 @@ VChart.InstanceManager = InstanceManager, VChart.ThemeManager = ThemeManager, VC
|
|
|
874
873
|
export const registerVChartCore = () => {
|
|
875
874
|
Factory.registerRegion("region", Region), Factory.registerLayout("base", Layout),
|
|
876
875
|
registerGroupMark(), View.useRegisters([ registerFilterTransform, registerMapTransform ]),
|
|
877
|
-
registerVGrammarCommonAnimation(),
|
|
876
|
+
registerVGrammarCommonAnimation(), registerHoverInteraction(), registerSelectInteraction(),
|
|
877
|
+
registerTheme(darkTheme.name, darkTheme), Logger.getInstance(LoggerLevel.Error);
|
|
878
878
|
};
|
|
879
879
|
|
|
880
880
|
Factory.registerRegion("region", Region), Factory.registerLayout("base", Layout),
|
|
881
881
|
registerGroupMark(), View.useRegisters([ registerFilterTransform, registerMapTransform ]),
|
|
882
|
-
registerVGrammarCommonAnimation(),
|
|
882
|
+
registerVGrammarCommonAnimation(), registerHoverInteraction(), registerSelectInteraction(),
|
|
883
|
+
registerTheme(darkTheme.name, darkTheme), Logger.getInstance(LoggerLevel.Error);
|
|
883
884
|
//# sourceMappingURL=vchart.js.map
|