@visactor/vchart 1.12.6 → 1.12.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/es5/index.js +2 -2
- package/build/index.js +2116 -2517
- package/build/index.min.js +1 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/cjs/chart/base/base-chart.d.ts +1 -0
- package/cjs/chart/base/base-chart.js +15 -9
- package/cjs/chart/base/base-chart.js.map +1 -1
- package/cjs/chart/chart-meta/data.d.ts +1 -2
- package/cjs/chart/chart-meta/data.js +11 -11
- package/cjs/chart/chart-meta/data.js.map +1 -1
- package/cjs/chart/gauge/interface.d.ts +1 -1
- package/cjs/chart/gauge/interface.js.map +1 -1
- package/cjs/chart/treemap/interface.d.ts +1 -1
- package/cjs/chart/treemap/interface.js.map +1 -1
- package/cjs/chart/venn/interface.d.ts +2 -2
- package/cjs/chart/venn/interface.js.map +1 -1
- package/cjs/component/axis/base-axis.js +1 -1
- package/cjs/component/axis/base-axis.js.map +1 -1
- package/cjs/component/axis/cartesian/axis.js +9 -6
- package/cjs/component/axis/cartesian/axis.js.map +1 -1
- package/cjs/component/axis/cartesian/interface/common.d.ts +1 -0
- package/cjs/component/axis/cartesian/interface/common.js.map +1 -1
- package/cjs/component/axis/polar/axis.js.map +1 -1
- package/cjs/component/axis/polar/interface/spec.js.map +1 -1
- package/cjs/component/data-zoom/data-filter-base-component.js +10 -7
- package/cjs/component/data-zoom/data-filter-base-component.js.map +1 -1
- package/cjs/component/data-zoom/util.js +11 -3
- package/cjs/component/data-zoom/util.js.map +1 -1
- package/cjs/component/geo/geo-coordinate.js +5 -2
- package/cjs/component/geo/geo-coordinate.js.map +1 -1
- package/cjs/component/interface/index.d.ts +0 -1
- package/cjs/component/interface/index.js +1 -1
- package/cjs/component/interface/index.js.map +1 -1
- package/cjs/component/label/util.js +1 -1
- package/cjs/component/label/util.js.map +1 -1
- package/cjs/component/title/interface/spec.d.ts +3 -3
- package/cjs/component/title/interface/spec.js.map +1 -1
- package/cjs/component/tooltip/constant.d.ts +5 -4
- package/cjs/component/tooltip/constant.js +7 -7
- package/cjs/component/tooltip/constant.js.map +1 -1
- package/cjs/component/tooltip/interface/common.d.ts +1 -1
- package/cjs/component/tooltip/interface/common.js.map +1 -1
- package/cjs/component/tooltip/interface/spec.d.ts +8 -0
- package/cjs/component/tooltip/interface/spec.js.map +1 -1
- package/cjs/component/tooltip/interface/theme.d.ts +2 -2
- package/cjs/component/tooltip/interface/theme.js.map +1 -1
- package/cjs/component/tooltip/processor/base.d.ts +3 -5
- package/cjs/component/tooltip/processor/base.js +24 -27
- package/cjs/component/tooltip/processor/base.js.map +1 -1
- package/cjs/component/tooltip/processor/group-tooltip.js +1 -1
- package/cjs/component/tooltip/processor/group-tooltip.js.map +1 -1
- package/cjs/component/tooltip/processor/mark-tooltip.js +2 -2
- package/cjs/component/tooltip/processor/mark-tooltip.js.map +1 -1
- package/cjs/component/tooltip/tooltip-transformer.js +0 -1
- package/cjs/component/tooltip/tooltip-transformer.js.map +1 -1
- package/cjs/component/tooltip/tooltip.d.ts +9 -4
- package/cjs/component/tooltip/tooltip.js +64 -53
- package/cjs/component/tooltip/tooltip.js.map +1 -1
- package/cjs/component/tooltip/utils/common.d.ts +6 -4
- package/cjs/component/tooltip/utils/common.js +52 -7
- package/cjs/component/tooltip/utils/common.js.map +1 -1
- package/cjs/component/tooltip/utils/get-spec.d.ts +4 -4
- package/cjs/component/tooltip/utils/get-spec.js +20 -82
- package/cjs/component/tooltip/utils/get-spec.js.map +1 -1
- package/cjs/component/tooltip/utils/get-value.d.ts +1 -2
- package/cjs/component/tooltip/utils/get-value.js +2 -12
- package/cjs/component/tooltip/utils/get-value.js.map +1 -1
- package/cjs/component/tooltip/utils/index.d.ts +0 -1
- package/cjs/component/tooltip/utils/index.js +1 -2
- package/cjs/component/tooltip/utils/index.js.map +1 -1
- package/cjs/constant/correlation.js +2 -1
- package/cjs/constant/layout.js +1 -2
- 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.js +16 -16
- package/cjs/core/vchart.js.map +1 -1
- package/cjs/data/initialize.d.ts +1 -2
- package/cjs/data/initialize.js +5 -5
- package/cjs/data/initialize.js.map +1 -1
- package/cjs/data/transforms/pie.d.ts +3 -0
- package/cjs/data/transforms/pie.js +8 -3
- package/cjs/data/transforms/pie.js.map +1 -1
- package/cjs/model/interface.d.ts +14 -0
- package/cjs/model/interface.js.map +1 -1
- package/cjs/plugin/chart/media-query/media-query.d.ts +1 -0
- package/cjs/plugin/chart/media-query/media-query.js +3 -1
- package/cjs/plugin/chart/media-query/media-query.js.map +1 -1
- package/cjs/plugin/chart/plugin-service.d.ts +2 -0
- package/cjs/plugin/chart/plugin-service.js +5 -0
- package/cjs/plugin/chart/plugin-service.js.map +1 -1
- package/cjs/plugin/components/tooltip-handler/base.d.ts +1 -13
- package/cjs/plugin/components/tooltip-handler/base.js +83 -220
- package/cjs/plugin/components/tooltip-handler/base.js.map +1 -1
- package/cjs/plugin/components/tooltip-handler/canvas/canvas-tooltip-handler.js +1 -1
- package/cjs/plugin/components/tooltip-handler/canvas/canvas-tooltip-handler.js.map +1 -1
- package/cjs/plugin/components/tooltip-handler/dom/dom-tooltip-handler.d.ts +0 -1
- package/cjs/plugin/components/tooltip-handler/dom/dom-tooltip-handler.js +7 -19
- package/cjs/plugin/components/tooltip-handler/dom/dom-tooltip-handler.js.map +1 -1
- package/cjs/plugin/components/tooltip-handler/dom/model/content-column-model.js +16 -14
- package/cjs/plugin/components/tooltip-handler/dom/model/content-column-model.js.map +1 -1
- package/cjs/plugin/components/tooltip-handler/dom/model/title-model.js +2 -2
- package/cjs/plugin/components/tooltip-handler/dom/model/title-model.js.map +1 -1
- package/cjs/plugin/components/tooltip-handler/interface/style.d.ts +1 -2
- package/cjs/plugin/components/tooltip-handler/interface/style.js.map +1 -1
- package/cjs/plugin/components/tooltip-handler/utils/attribute.js +7 -7
- package/cjs/plugin/components/tooltip-handler/utils/attribute.js.map +1 -1
- package/cjs/plugin/components/tooltip-handler/utils/common.js.map +1 -1
- package/cjs/plugin/components/tooltip-handler/utils/position.d.ts +3 -5
- package/cjs/plugin/components/tooltip-handler/utils/position.js +22 -29
- package/cjs/plugin/components/tooltip-handler/utils/position.js.map +1 -1
- package/cjs/region/interface.d.ts +3 -1
- package/cjs/region/interface.js.map +1 -1
- package/cjs/series/base/base-series.js +4 -5
- package/cjs/series/base/base-series.js.map +1 -1
- package/cjs/series/base/tooltip-helper.d.ts +30 -6
- package/cjs/series/base/tooltip-helper.js +80 -73
- package/cjs/series/base/tooltip-helper.js.map +1 -1
- package/cjs/series/box-plot/tooltip-helper.d.ts +2 -2
- package/cjs/series/box-plot/tooltip-helper.js +26 -67
- package/cjs/series/box-plot/tooltip-helper.js.map +1 -1
- package/cjs/series/cartesian/cartesian.d.ts +1 -1
- package/cjs/series/circle-packing/circle-packing.js +1 -2
- package/cjs/series/circle-packing/circle-packing.js.map +1 -1
- package/cjs/series/dot/tooltip-helper.d.ts +8 -2
- package/cjs/series/dot/tooltip-helper.js +42 -41
- package/cjs/series/dot/tooltip-helper.js.map +1 -1
- package/cjs/series/funnel/funnel.d.ts +1 -0
- package/cjs/series/funnel/funnel.js +7 -6
- package/cjs/series/funnel/funnel.js.map +1 -1
- package/cjs/series/funnel/interface.d.ts +3 -1
- package/cjs/series/funnel/interface.js.map +1 -1
- package/cjs/series/gauge/pointer-tooltip-helper.d.ts +2 -1
- package/cjs/series/gauge/pointer-tooltip-helper.js +3 -8
- package/cjs/series/gauge/pointer-tooltip-helper.js.map +1 -1
- package/cjs/series/heatmap/tooltip-helper.d.ts +2 -3
- package/cjs/series/heatmap/tooltip-helper.js +3 -5
- package/cjs/series/heatmap/tooltip-helper.js.map +1 -1
- package/cjs/series/interface/tooltip-helper.d.ts +5 -4
- package/cjs/series/interface/tooltip-helper.js.map +1 -1
- package/cjs/series/link/tooltip-helper.d.ts +5 -2
- package/cjs/series/link/tooltip-helper.js +26 -27
- package/cjs/series/link/tooltip-helper.js.map +1 -1
- package/cjs/series/liquid/tooltip-helper.d.ts +4 -5
- package/cjs/series/liquid/tooltip-helper.js +2 -22
- package/cjs/series/liquid/tooltip-helper.js.map +1 -1
- package/cjs/series/pie/pie.js +6 -2
- package/cjs/series/pie/pie.js.map +1 -1
- package/cjs/series/progress/linear/tooltip-helper.d.ts +2 -3
- package/cjs/series/progress/linear/tooltip-helper.js +2 -11
- package/cjs/series/progress/linear/tooltip-helper.js.map +1 -1
- package/cjs/series/range-area/tooltip-helper.d.ts +1 -3
- package/cjs/series/range-area/tooltip-helper.js +2 -50
- package/cjs/series/range-area/tooltip-helper.js.map +1 -1
- package/cjs/series/range-column/tooltip-helper.d.ts +1 -2
- package/cjs/series/range-column/tooltip-helper.js +2 -19
- package/cjs/series/range-column/tooltip-helper.js.map +1 -1
- package/cjs/series/sankey/sankey.d.ts +1 -1
- package/cjs/series/sankey/tooltip-helper.d.ts +3 -3
- package/cjs/series/sankey/tooltip-helper.js +10 -57
- package/cjs/series/sankey/tooltip-helper.js.map +1 -1
- package/cjs/theme/builtin/common/series/linear-progress.js +4 -1
- package/cjs/theme/builtin/common/series/linear-progress.js.map +1 -1
- package/cjs/theme/builtin/dark/color-scheme.js +2 -1
- package/cjs/theme/builtin/dark/color-scheme.js.map +1 -1
- package/cjs/theme/builtin/light/color-scheme.js +2 -1
- package/cjs/theme/builtin/light/color-scheme.js.map +1 -1
- package/cjs/typings/spec/common.d.ts +3 -3
- package/cjs/typings/spec/common.js.map +1 -1
- package/cjs/typings/tooltip/position.d.ts +1 -0
- package/cjs/typings/tooltip/position.js.map +1 -1
- package/cjs/typings/tooltip/shape.d.ts +0 -1
- package/cjs/typings/tooltip/shape.js.map +1 -1
- package/cjs/typings/tooltip/tooltip.d.ts +7 -0
- package/cjs/typings/tooltip/tooltip.js.map +1 -1
- package/esm/chart/base/base-chart.d.ts +1 -0
- package/esm/chart/base/base-chart.js +16 -10
- package/esm/chart/base/base-chart.js.map +1 -1
- package/esm/chart/chart-meta/data.d.ts +1 -2
- package/esm/chart/chart-meta/data.js +12 -10
- package/esm/chart/chart-meta/data.js.map +1 -1
- package/esm/chart/gauge/interface.d.ts +1 -1
- package/esm/chart/gauge/interface.js.map +1 -1
- package/esm/chart/treemap/interface.d.ts +1 -1
- package/esm/chart/treemap/interface.js.map +1 -1
- package/esm/chart/venn/interface.d.ts +2 -2
- package/esm/chart/venn/interface.js.map +1 -1
- package/esm/component/axis/base-axis.js +1 -1
- package/esm/component/axis/base-axis.js.map +1 -1
- package/esm/component/axis/cartesian/axis.js +10 -7
- package/esm/component/axis/cartesian/axis.js.map +1 -1
- package/esm/component/axis/cartesian/interface/common.d.ts +1 -0
- package/esm/component/axis/cartesian/interface/common.js.map +1 -1
- package/esm/component/axis/polar/axis.js.map +1 -1
- package/esm/component/axis/polar/interface/spec.js.map +1 -1
- package/esm/component/data-zoom/data-filter-base-component.js +7 -6
- package/esm/component/data-zoom/data-filter-base-component.js.map +1 -1
- package/esm/component/data-zoom/util.js +11 -2
- package/esm/component/data-zoom/util.js.map +1 -1
- package/esm/component/geo/geo-coordinate.js +5 -2
- package/esm/component/geo/geo-coordinate.js.map +1 -1
- package/esm/component/interface/index.d.ts +0 -1
- package/esm/component/interface/index.js +0 -2
- package/esm/component/interface/index.js.map +1 -1
- package/esm/component/label/util.js +1 -1
- package/esm/component/label/util.js.map +1 -1
- package/esm/component/title/interface/spec.d.ts +3 -3
- package/esm/component/title/interface/spec.js.map +1 -1
- package/esm/component/tooltip/constant.d.ts +5 -4
- package/esm/component/tooltip/constant.js +6 -3
- package/esm/component/tooltip/constant.js.map +1 -1
- package/esm/component/tooltip/interface/common.d.ts +1 -1
- package/esm/component/tooltip/interface/common.js.map +1 -1
- package/esm/component/tooltip/interface/spec.d.ts +8 -0
- package/esm/component/tooltip/interface/spec.js.map +1 -1
- package/esm/component/tooltip/interface/theme.d.ts +2 -2
- package/esm/component/tooltip/interface/theme.js.map +1 -1
- package/esm/component/tooltip/processor/base.d.ts +3 -5
- package/esm/component/tooltip/processor/base.js +24 -28
- package/esm/component/tooltip/processor/base.js.map +1 -1
- package/esm/component/tooltip/processor/group-tooltip.js +1 -1
- package/esm/component/tooltip/processor/group-tooltip.js.map +1 -1
- package/esm/component/tooltip/processor/mark-tooltip.js +2 -2
- package/esm/component/tooltip/processor/mark-tooltip.js.map +1 -1
- package/esm/component/tooltip/tooltip-transformer.js +0 -1
- package/esm/component/tooltip/tooltip-transformer.js.map +1 -1
- package/esm/component/tooltip/tooltip.d.ts +9 -4
- package/esm/component/tooltip/tooltip.js +66 -54
- package/esm/component/tooltip/tooltip.js.map +1 -1
- package/esm/component/tooltip/utils/common.d.ts +6 -4
- package/esm/component/tooltip/utils/common.js +46 -5
- package/esm/component/tooltip/utils/common.js.map +1 -1
- package/esm/component/tooltip/utils/get-spec.d.ts +4 -4
- package/esm/component/tooltip/utils/get-spec.js +24 -80
- package/esm/component/tooltip/utils/get-spec.js.map +1 -1
- package/esm/component/tooltip/utils/get-value.d.ts +1 -2
- package/esm/component/tooltip/utils/get-value.js +1 -9
- package/esm/component/tooltip/utils/get-value.js.map +1 -1
- package/esm/component/tooltip/utils/index.d.ts +0 -1
- package/esm/component/tooltip/utils/index.js +0 -2
- package/esm/component/tooltip/utils/index.js.map +1 -1
- package/esm/constant/correlation.js +2 -1
- package/esm/constant/layout.js +1 -2
- 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.js +16 -15
- package/esm/core/vchart.js.map +1 -1
- package/esm/data/initialize.d.ts +1 -2
- package/esm/data/initialize.js +6 -7
- package/esm/data/initialize.js.map +1 -1
- package/esm/data/transforms/pie.d.ts +3 -0
- package/esm/data/transforms/pie.js +6 -3
- package/esm/data/transforms/pie.js.map +1 -1
- package/esm/model/interface.d.ts +14 -0
- package/esm/model/interface.js.map +1 -1
- package/esm/plugin/chart/media-query/media-query.d.ts +1 -0
- package/esm/plugin/chart/media-query/media-query.js +3 -1
- package/esm/plugin/chart/media-query/media-query.js.map +1 -1
- package/esm/plugin/chart/plugin-service.d.ts +2 -0
- package/esm/plugin/chart/plugin-service.js +5 -0
- package/esm/plugin/chart/plugin-service.js.map +1 -1
- package/esm/plugin/components/tooltip-handler/base.d.ts +1 -13
- package/esm/plugin/components/tooltip-handler/base.js +79 -212
- package/esm/plugin/components/tooltip-handler/base.js.map +1 -1
- package/esm/plugin/components/tooltip-handler/canvas/canvas-tooltip-handler.js +1 -1
- package/esm/plugin/components/tooltip-handler/canvas/canvas-tooltip-handler.js.map +1 -1
- package/esm/plugin/components/tooltip-handler/dom/dom-tooltip-handler.d.ts +0 -1
- package/esm/plugin/components/tooltip-handler/dom/dom-tooltip-handler.js +6 -19
- package/esm/plugin/components/tooltip-handler/dom/dom-tooltip-handler.js.map +1 -1
- package/esm/plugin/components/tooltip-handler/dom/model/content-column-model.js +16 -14
- package/esm/plugin/components/tooltip-handler/dom/model/content-column-model.js.map +1 -1
- package/esm/plugin/components/tooltip-handler/dom/model/title-model.js +2 -2
- package/esm/plugin/components/tooltip-handler/dom/model/title-model.js.map +1 -1
- package/esm/plugin/components/tooltip-handler/interface/style.d.ts +1 -2
- package/esm/plugin/components/tooltip-handler/interface/style.js.map +1 -1
- package/esm/plugin/components/tooltip-handler/utils/attribute.js +7 -7
- package/esm/plugin/components/tooltip-handler/utils/attribute.js.map +1 -1
- package/esm/plugin/components/tooltip-handler/utils/common.js.map +1 -1
- package/esm/plugin/components/tooltip-handler/utils/position.d.ts +3 -5
- package/esm/plugin/components/tooltip-handler/utils/position.js +20 -25
- package/esm/plugin/components/tooltip-handler/utils/position.js.map +1 -1
- package/esm/region/interface.d.ts +3 -1
- package/esm/region/interface.js.map +1 -1
- package/esm/series/base/base-series.js +4 -5
- package/esm/series/base/base-series.js.map +1 -1
- package/esm/series/base/tooltip-helper.d.ts +30 -6
- package/esm/series/base/tooltip-helper.js +85 -74
- package/esm/series/base/tooltip-helper.js.map +1 -1
- package/esm/series/box-plot/tooltip-helper.d.ts +2 -2
- package/esm/series/box-plot/tooltip-helper.js +26 -67
- package/esm/series/box-plot/tooltip-helper.js.map +1 -1
- package/esm/series/cartesian/cartesian.d.ts +1 -1
- package/esm/series/circle-packing/circle-packing.js +1 -2
- package/esm/series/circle-packing/circle-packing.js.map +1 -1
- package/esm/series/dot/tooltip-helper.d.ts +8 -2
- package/esm/series/dot/tooltip-helper.js +42 -41
- package/esm/series/dot/tooltip-helper.js.map +1 -1
- package/esm/series/funnel/funnel.d.ts +1 -0
- package/esm/series/funnel/funnel.js +7 -6
- package/esm/series/funnel/funnel.js.map +1 -1
- package/esm/series/funnel/interface.d.ts +3 -1
- package/esm/series/funnel/interface.js.map +1 -1
- package/esm/series/gauge/pointer-tooltip-helper.d.ts +2 -1
- package/esm/series/gauge/pointer-tooltip-helper.js +2 -9
- package/esm/series/gauge/pointer-tooltip-helper.js.map +1 -1
- package/esm/series/heatmap/tooltip-helper.d.ts +2 -3
- package/esm/series/heatmap/tooltip-helper.js +2 -6
- package/esm/series/heatmap/tooltip-helper.js.map +1 -1
- package/esm/series/interface/tooltip-helper.d.ts +5 -4
- package/esm/series/interface/tooltip-helper.js.map +1 -1
- package/esm/series/link/tooltip-helper.d.ts +5 -2
- package/esm/series/link/tooltip-helper.js +26 -27
- package/esm/series/link/tooltip-helper.js.map +1 -1
- package/esm/series/liquid/tooltip-helper.d.ts +4 -5
- package/esm/series/liquid/tooltip-helper.js +2 -22
- package/esm/series/liquid/tooltip-helper.js.map +1 -1
- package/esm/series/pie/pie.js +7 -3
- package/esm/series/pie/pie.js.map +1 -1
- package/esm/series/progress/linear/tooltip-helper.d.ts +2 -3
- package/esm/series/progress/linear/tooltip-helper.js +2 -11
- package/esm/series/progress/linear/tooltip-helper.js.map +1 -1
- package/esm/series/range-area/tooltip-helper.d.ts +1 -3
- package/esm/series/range-area/tooltip-helper.js +2 -50
- package/esm/series/range-area/tooltip-helper.js.map +1 -1
- package/esm/series/range-column/tooltip-helper.d.ts +1 -2
- package/esm/series/range-column/tooltip-helper.js +2 -19
- package/esm/series/range-column/tooltip-helper.js.map +1 -1
- package/esm/series/sankey/sankey.d.ts +1 -1
- package/esm/series/sankey/tooltip-helper.d.ts +3 -3
- package/esm/series/sankey/tooltip-helper.js +10 -57
- package/esm/series/sankey/tooltip-helper.js.map +1 -1
- package/esm/theme/builtin/common/series/linear-progress.js +4 -1
- package/esm/theme/builtin/common/series/linear-progress.js.map +1 -1
- package/esm/theme/builtin/dark/color-scheme.js +2 -1
- package/esm/theme/builtin/dark/color-scheme.js.map +1 -1
- package/esm/theme/builtin/light/color-scheme.js +2 -1
- package/esm/theme/builtin/light/color-scheme.js.map +1 -1
- package/esm/typings/spec/common.d.ts +3 -3
- package/esm/typings/spec/common.js.map +1 -1
- package/esm/typings/tooltip/position.d.ts +1 -0
- package/esm/typings/tooltip/position.js.map +1 -1
- package/esm/typings/tooltip/shape.d.ts +0 -1
- package/esm/typings/tooltip/shape.js.map +1 -1
- package/esm/typings/tooltip/tooltip.d.ts +7 -0
- package/esm/typings/tooltip/tooltip.js.map +1 -1
- package/package.json +17 -17
- package/cjs/component/interface/tooltip-helper.d.ts +0 -5
- package/cjs/component/interface/tooltip-helper.js +0 -6
- package/cjs/component/interface/tooltip-helper.js.map +0 -1
- package/cjs/component/tooltip/utils/compose.d.ts +0 -4
- package/cjs/component/tooltip/utils/compose.js +0 -120
- package/cjs/component/tooltip/utils/compose.js.map +0 -1
- package/cjs/model/tooltip-helper.d.ts +0 -29
- package/cjs/model/tooltip-helper.js +0 -19
- package/cjs/model/tooltip-helper.js.map +0 -1
- package/esm/component/interface/tooltip-helper.d.ts +0 -5
- package/esm/component/interface/tooltip-helper.js +0 -2
- package/esm/component/interface/tooltip-helper.js.map +0 -1
- package/esm/component/tooltip/utils/compose.d.ts +0 -4
- package/esm/component/tooltip/utils/compose.js +0 -105
- package/esm/component/tooltip/utils/compose.js.map +0 -1
- package/esm/model/tooltip-helper.d.ts +0 -29
- package/esm/model/tooltip-helper.js +0 -11
- package/esm/model/tooltip-helper.js.map +0 -1
|
@@ -6,9 +6,9 @@ import { isTrueBrowser } from "../../../util/env";
|
|
|
6
6
|
|
|
7
7
|
import { getScale } from "./utils/common";
|
|
8
8
|
|
|
9
|
-
import { getActualTooltipPositionValue, getCartesianCrosshairRect,
|
|
9
|
+
import { getActualTooltipPositionValue, getCartesianCrosshairRect, getPositionType, isFixedTooltipPositionPattern, isGlobalTooltipPositionPattern } from "./utils/position";
|
|
10
10
|
|
|
11
|
-
import { isNumber, isObject, isValidNumber, isValid, throttle, isNil,
|
|
11
|
+
import { isNumber, isObject, isValidNumber, isValid, throttle, isNil, isFunction } from "@visactor/vutils";
|
|
12
12
|
|
|
13
13
|
import { getTooltipAttributes } from "./utils/attribute";
|
|
14
14
|
|
|
@@ -22,27 +22,20 @@ export class BaseTooltipHandler extends BasePlugin {
|
|
|
22
22
|
this.showTooltip = (activeType, data, params) => {
|
|
23
23
|
const {changePositionOnly: changePositionOnly} = params;
|
|
24
24
|
return changePositionOnly ? this.changeTooltipPosition(params, data) : this.changeTooltip(!0, params, data);
|
|
25
|
-
}, this._changeTooltip = (visible, params, data) => this._isReleased ? 1 : visible ? this._changeTooltipPosition(params, data) : (this.
|
|
26
|
-
|
|
27
|
-
var _a, _b, _c;
|
|
25
|
+
}, this._changeTooltip = (visible, params, data) => this._isReleased ? 1 : visible ? this._changeTooltipPosition(params, data) : (this._updateTooltip(!1, params),
|
|
26
|
+
0), this._changeTooltipPosition = (params, data) => {
|
|
27
|
+
var _a, _b, _c, _d, _e;
|
|
28
28
|
if (this._isReleased) return 1;
|
|
29
|
-
const event = params.event, {tooltipSpec: tooltipSpec,
|
|
30
|
-
if (
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
}
|
|
38
|
-
const activeType = tooltipActual.activeType;
|
|
39
|
-
if (tooltipSpec.handler) return null !== (_c = null === (_b = (_a = tooltipSpec.handler).showTooltip) || void 0 === _b ? void 0 : _b.call(_a, activeType, data, params)) && void 0 !== _c ? _c : 0;
|
|
40
|
-
const pattern = tooltipSpec[activeType];
|
|
41
|
-
if (!pattern) return 1;
|
|
42
|
-
const position = this._getActualTooltipPosition(tooltipActual, params, this._getTooltipBoxSize(tooltipActual, changePositionOnly));
|
|
43
|
-
tooltipActual.position = position, pattern.updatePosition && (tooltipActual.position = pattern.updatePosition(tooltipActual.position, data, params));
|
|
29
|
+
const event = params.event, {tooltipSpec: tooltipSpec, activeTooltipSpec: activeTooltipSpec, changePositionOnly: changePositionOnly} = params;
|
|
30
|
+
if (!activeTooltipSpec) return 1;
|
|
31
|
+
const activeType = activeTooltipSpec.activeType;
|
|
32
|
+
if (activeTooltipSpec.handler) return null !== (_c = null === (_b = (_a = activeTooltipSpec.handler).showTooltip) || void 0 === _b ? void 0 : _b.call(_a, activeType, data, params)) && void 0 !== _c ? _c : 0;
|
|
33
|
+
const pattern = activeTooltipSpec, position = this._getActualTooltipPosition(activeTooltipSpec, params, this._getTooltipBoxSize(activeTooltipSpec, changePositionOnly));
|
|
34
|
+
activeTooltipSpec.position = position;
|
|
35
|
+
const updatePosition = null !== (_d = activeTooltipSpec.updatePosition) && void 0 !== _d ? _d : null === (_e = tooltipSpec[activeType]) || void 0 === _e ? void 0 : _e.updatePosition;
|
|
36
|
+
updatePosition && (activeTooltipSpec.position = updatePosition(activeTooltipSpec.position, data, params));
|
|
44
37
|
let tooltipVisible = !1 !== (null == pattern ? void 0 : pattern.visible);
|
|
45
|
-
return data && "pointerout" !== event.type &&
|
|
38
|
+
return data && "pointerout" !== event.type && activeTooltipSpec.visible && (activeTooltipSpec.title || activeTooltipSpec.content) || (tooltipVisible = !1),
|
|
46
39
|
this._updateTooltip(tooltipVisible, Object.assign(Object.assign({}, params), {
|
|
47
40
|
changePositionOnly: changePositionOnly
|
|
48
41
|
})), 0;
|
|
@@ -52,10 +45,8 @@ export class BaseTooltipHandler extends BasePlugin {
|
|
|
52
45
|
x: 1 / 0,
|
|
53
46
|
y: 1 / 0
|
|
54
47
|
};
|
|
55
|
-
if (!tooltipSpec) return
|
|
56
|
-
const event = params.event, {activeType: activeType, data: data} = actualTooltip, firstDim = "dimension" === activeType ? null === (_b = null === (_a = data[0]) || void 0 === _a ? void 0 : _a.data) || void 0 === _b ? void 0 : _b[0] : null == data ? void 0 : data[0];
|
|
57
|
-
let {offsetX: offsetX, offsetY: offsetY} = this._option;
|
|
58
|
-
const spec = tooltipSpec[activeType], position = getTooltipPatternValue(spec.position, data, params), positionMode = null !== (_c = getTooltipPatternValue(spec.positionMode, data, params)) && void 0 !== _c ? _c : "mark" === activeType ? "mark" : "pointer", {width: tooltipBoxWidth = 0, height: tooltipBoxHeight = 0} = null != tooltipBoxSize ? tooltipBoxSize : {}, isCanvas = "canvas" === tooltipSpec.renderMode, canvasRect = null === (_d = null == params ? void 0 : params.chart) || void 0 === _d ? void 0 : _d.getCanvasRect(), canvasWidth = null !== (_e = null == canvasRect ? void 0 : canvasRect.width) && void 0 !== _e ? _e : DEFAULT_CHART_WIDTH, canvasHeight = null !== (_f = null == canvasRect ? void 0 : canvasRect.height) && void 0 !== _f ? _f : DEFAULT_CHART_HEIGHT;
|
|
48
|
+
if (!tooltipSpec) return invalidPosition;
|
|
49
|
+
const event = params.event, {activeType: activeType, data: data} = actualTooltip, firstDim = "dimension" === activeType ? null === (_b = null === (_a = data[0]) || void 0 === _a ? void 0 : _a.data) || void 0 === _b ? void 0 : _b[0] : null == data ? void 0 : data[0], {offsetX: offsetX, offsetY: offsetY} = this._option, spec = tooltipSpec[activeType], position = getTooltipPatternValue(null == spec ? void 0 : spec.position, data, params), positionMode = null !== (_c = getTooltipPatternValue(null == spec ? void 0 : spec.positionMode, data, params)) && void 0 !== _c ? _c : "mark" === activeType ? "mark" : "pointer", {width: tooltipBoxWidth = 0, height: tooltipBoxHeight = 0} = null != tooltipBoxSize ? tooltipBoxSize : {}, isCanvas = "canvas" === tooltipSpec.renderMode, canvasRect = null === (_d = null == params ? void 0 : params.chart) || void 0 === _d ? void 0 : _d.getCanvasRect(), canvasWidth = null !== (_e = null == canvasRect ? void 0 : canvasRect.width) && void 0 !== _e ? _e : DEFAULT_CHART_WIDTH, canvasHeight = null !== (_f = null == canvasRect ? void 0 : canvasRect.height) && void 0 !== _f ? _f : DEFAULT_CHART_HEIGHT;
|
|
59
50
|
let isFixedPosition = !1;
|
|
60
51
|
const containerSize = {
|
|
61
52
|
width: 0,
|
|
@@ -80,146 +71,81 @@ export class BaseTooltipHandler extends BasePlugin {
|
|
|
80
71
|
}, chartElementScale = getScale(chartElement, chartElementRect), tooltipParentElementScale = getScale(tooltipParentElement, tooltipParentElementRect);
|
|
81
72
|
}
|
|
82
73
|
} else containerSize.width = canvasWidth, containerSize.height = canvasHeight;
|
|
83
|
-
const tooltipSizeScale = tooltipParentElementScale / chartElementScale
|
|
84
|
-
|
|
85
|
-
|
|
74
|
+
const tooltipSizeScale = tooltipParentElementScale / chartElementScale, calcPos = {}, pointerFixedPosition = {
|
|
75
|
+
x: position,
|
|
76
|
+
y: position
|
|
77
|
+
}, dimToPos = {
|
|
78
|
+
x: [ "left", "right" ],
|
|
79
|
+
y: [ "top", "bottom" ]
|
|
80
|
+
}, processCartesianFixedPosition = ({orient: orient, mode: mode, offset: offset}, dim) => {
|
|
86
81
|
var _a;
|
|
87
|
-
let
|
|
88
|
-
const model = params.model, startPoint = null == model ? void 0 : model.getLayoutStartPoint();
|
|
89
|
-
if (
|
|
82
|
+
let dim1, dim2;
|
|
83
|
+
const model = params.model, startPoint = null == model ? void 0 : model.getLayoutStartPoint(), dimOffset = null != offset ? offset : "x" === dim ? offsetX : offsetY;
|
|
84
|
+
if ("mark" === mode) {
|
|
90
85
|
isFixedPosition = !0;
|
|
91
86
|
const element = params.item, bounds = null == element ? void 0 : element.getBounds();
|
|
92
|
-
bounds && startPoint && (
|
|
87
|
+
bounds && startPoint && (dim1 = ("x" === dim ? bounds.x1 : bounds.y1) + startPoint[dim],
|
|
88
|
+
dim2 = ("x" === dim ? bounds.x2 : bounds.y2) + startPoint[dim]);
|
|
93
89
|
} else if ("crosshair" === mode && "cartesian" === (null === (_a = null == firstDim ? void 0 : firstDim.series) || void 0 === _a ? void 0 : _a.coordinate) && firstDim.datum && firstDim.datum.length) {
|
|
94
90
|
isFixedPosition = !0;
|
|
95
91
|
const rect = getCartesianCrosshairRect(firstDim, startPoint);
|
|
96
|
-
rect && (
|
|
97
|
-
} else
|
|
98
|
-
if (isFixedPosition)
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
let y1, y2;
|
|
121
|
-
const model = params.model, startPoint = null == model ? void 0 : model.getLayoutStartPoint();
|
|
122
|
-
if (offsetY = null != offset ? offset : offsetY, "mark" === mode) {
|
|
123
|
-
isFixedPosition = !0;
|
|
124
|
-
const element = params.item, bounds = null == element ? void 0 : element.getBounds();
|
|
125
|
-
bounds && startPoint && (y1 = bounds.y1 + startPoint.y, y2 = bounds.y2 + startPoint.y);
|
|
126
|
-
} else if ("crosshair" === mode && "cartesian" === (null === (_a = null == firstDim ? void 0 : firstDim.series) || void 0 === _a ? void 0 : _a.coordinate) && firstDim.datum && firstDim.datum.length) {
|
|
127
|
-
isFixedPosition = !0;
|
|
128
|
-
const rect = getCartesianCrosshairRect(firstDim, startPoint);
|
|
129
|
-
rect && (y1 = rect.start.y, y2 = rect.end.y);
|
|
130
|
-
} else pointerFixedPositionY = orient;
|
|
131
|
-
if (isFixedPosition) switch (getVerticalPositionType(orient)) {
|
|
132
|
-
case "top":
|
|
133
|
-
top = y1 - tooltipBoxHeight * tooltipSizeScale - offsetY;
|
|
134
|
-
break;
|
|
135
|
-
|
|
136
|
-
case "bottom":
|
|
137
|
-
top = y2 + offsetY;
|
|
138
|
-
break;
|
|
139
|
-
|
|
140
|
-
case "center":
|
|
141
|
-
top = (y1 + y2) / 2 - tooltipBoxHeight * tooltipSizeScale / 2;
|
|
142
|
-
break;
|
|
143
|
-
|
|
144
|
-
case "centerTop":
|
|
145
|
-
top = (y1 + y2) / 2 - tooltipBoxHeight * tooltipSizeScale - offsetY;
|
|
146
|
-
break;
|
|
147
|
-
|
|
148
|
-
case "centerBottom":
|
|
149
|
-
top = (y1 + y2) / 2 + offsetY;
|
|
92
|
+
rect && (dim1 = rect.start[dim], dim2 = rect.end[dim]);
|
|
93
|
+
} else pointerFixedPosition[dim] = orient;
|
|
94
|
+
if (isFixedPosition) {
|
|
95
|
+
const posKey = dimToPos[dim][0], boxSize = "x" === dim ? tooltipBoxWidth : tooltipBoxHeight;
|
|
96
|
+
switch (getPositionType(orient, dim)) {
|
|
97
|
+
case -2:
|
|
98
|
+
calcPos[posKey] = dim1 - boxSize * tooltipSizeScale - dimOffset;
|
|
99
|
+
break;
|
|
100
|
+
|
|
101
|
+
case 0:
|
|
102
|
+
calcPos[posKey] = (dim1 + dim2) / 2 - boxSize * tooltipSizeScale / 2;
|
|
103
|
+
break;
|
|
104
|
+
|
|
105
|
+
case -1:
|
|
106
|
+
calcPos[posKey] = (dim1 + dim2) / 2 - boxSize * tooltipSizeScale - dimOffset;
|
|
107
|
+
break;
|
|
108
|
+
|
|
109
|
+
case 1:
|
|
110
|
+
calcPos[posKey] = (dim1 + dim2) / 2 + dimOffset;
|
|
111
|
+
break;
|
|
112
|
+
|
|
113
|
+
case 2:
|
|
114
|
+
calcPos[posKey] = dim2 + dimOffset;
|
|
115
|
+
}
|
|
150
116
|
}
|
|
151
|
-
};
|
|
152
|
-
if (isObject(position)) {
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
isNumber(y) || isFunction(y) ? top = getActualTooltipPositionValue(y, event) : processCartesianFixedPositionY(y);
|
|
161
|
-
}
|
|
162
|
-
} else isValid(position) && (processCartesianFixedPositionX({
|
|
117
|
+
}, dims = [ "x", "y" ];
|
|
118
|
+
if (isObject(position)) if (isGlobalTooltipPositionPattern(position)) {
|
|
119
|
+
const {left: posLeft, right: posRight, top: posTop, bottom: posBottom} = position;
|
|
120
|
+
calcPos.left = getActualTooltipPositionValue(posLeft, event), calcPos.top = getActualTooltipPositionValue(posTop, event),
|
|
121
|
+
calcPos.right = getActualTooltipPositionValue(posRight, event), calcPos.bottom = getActualTooltipPositionValue(posBottom, event);
|
|
122
|
+
} else isFixedTooltipPositionPattern(position) && dims.forEach((dim => {
|
|
123
|
+
const dimValue = position[dim];
|
|
124
|
+
isNumber(dimValue) || isFunction(dimValue) ? calcPos[dimToPos[dim][0]] = getActualTooltipPositionValue(dimValue, event) : processCartesianFixedPosition(dimValue, dim);
|
|
125
|
+
})); else isValid(position) && (processCartesianFixedPosition({
|
|
163
126
|
orient: position,
|
|
164
127
|
mode: positionMode
|
|
165
|
-
}),
|
|
128
|
+
}, "x"), processCartesianFixedPosition({
|
|
166
129
|
orient: position,
|
|
167
130
|
mode: positionMode
|
|
168
|
-
}));
|
|
169
|
-
let x, y;
|
|
170
|
-
const {canvasX: canvasX, canvasY: canvasY} = event;
|
|
171
|
-
if (isValidNumber(left)) x = left; else if (isValidNumber(right)) x = canvasWidth - tooltipBoxWidth * tooltipSizeScale - right; else {
|
|
172
|
-
const x0 = canvasX;
|
|
173
|
-
switch (getHorizontalPositionType(pointerFixedPositionX, "right")) {
|
|
174
|
-
case "center":
|
|
175
|
-
x = x0 - tooltipBoxWidth * tooltipSizeScale / 2;
|
|
176
|
-
break;
|
|
177
|
-
|
|
178
|
-
case "left":
|
|
179
|
-
case "centerLeft":
|
|
180
|
-
x = x0 - tooltipBoxWidth * tooltipSizeScale - offsetX;
|
|
181
|
-
break;
|
|
182
|
-
|
|
183
|
-
case "right":
|
|
184
|
-
case "centerRight":
|
|
185
|
-
x = x0 + offsetX;
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
if (isValidNumber(top)) y = top; else if (isValidNumber(bottom)) y = canvasHeight - tooltipBoxHeight * tooltipSizeScale - bottom; else {
|
|
189
|
-
const y0 = canvasY;
|
|
190
|
-
switch (getVerticalPositionType(pointerFixedPositionY, "bottom")) {
|
|
191
|
-
case "center":
|
|
192
|
-
y = y0 - tooltipBoxHeight * tooltipSizeScale / 2;
|
|
193
|
-
break;
|
|
194
|
-
|
|
195
|
-
case "top":
|
|
196
|
-
case "centerTop":
|
|
197
|
-
y = y0 - tooltipBoxHeight * tooltipSizeScale - offsetY;
|
|
198
|
-
break;
|
|
199
|
-
|
|
200
|
-
case "bottom":
|
|
201
|
-
case "centerBottom":
|
|
202
|
-
y = y0 + offsetY;
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
x *= chartElementScale, y *= chartElementScale, isTrueBrowser(this._env) && (x += relativePosOffset.x,
|
|
206
|
-
y += relativePosOffset.y), x /= tooltipParentElementScale, y /= tooltipParentElementScale;
|
|
207
|
-
const {width: containerWidth, height: containerHeight} = containerSize, isLeftOut = () => x * tooltipParentElementScale + tooltipParentElementRect.x < 0, isRightOut = () => (x + tooltipBoxWidth) * tooltipParentElementScale + tooltipParentElementRect.x > containerWidth, isTopOut = () => y * tooltipParentElementScale + tooltipParentElementRect.y < 0, isBottomOut = () => (y + tooltipBoxHeight) * tooltipParentElementScale + tooltipParentElementRect.y > containerHeight, horizontalType = getHorizontalPositionType(position, "right");
|
|
208
|
-
"left" === horizontalType || horizontalType.includes("center") && isLeftOut() ? (isLeftOut() && (isFixedPosition ? x = -tooltipParentElementRect.x / tooltipParentElementScale : "center" === getHorizontalPositionType(position, "right") ? x += offsetX + tooltipBoxWidth / 2 : x += 2 * offsetX + tooltipBoxWidth),
|
|
209
|
-
isRightOut() && (x = (containerWidth - tooltipParentElementRect.x) / tooltipParentElementScale - tooltipBoxWidth)) : (isRightOut() && (isFixedPosition ? x = (containerWidth - tooltipParentElementRect.x) / tooltipParentElementScale - tooltipBoxWidth : "center" === getHorizontalPositionType(position, "right") ? x -= offsetX + tooltipBoxWidth / 2 : x -= 2 * offsetX + tooltipBoxWidth),
|
|
210
|
-
isLeftOut() && (x = -tooltipParentElementRect.x / tooltipParentElementScale));
|
|
211
|
-
const verticalType = getVerticalPositionType(position, "bottom");
|
|
212
|
-
"top" === verticalType || verticalType.includes("center") && isTopOut() ? (isTopOut() && (isFixedPosition ? y = -tooltipParentElementRect.y / tooltipParentElementScale : "center" === getVerticalPositionType(position, "bottom") ? y += offsetY + tooltipBoxHeight / 2 : y += 2 * offsetY + tooltipBoxHeight),
|
|
213
|
-
isBottomOut() && (y = (containerHeight - tooltipParentElementRect.y) / tooltipParentElementScale - tooltipBoxHeight)) : (isBottomOut() && (isFixedPosition ? y = (containerHeight - tooltipParentElementRect.y) / tooltipParentElementScale - tooltipBoxHeight : "center" === getVerticalPositionType(position, "bottom") ? y -= offsetY + tooltipBoxHeight / 2 : y -= 2 * offsetY + tooltipBoxHeight),
|
|
214
|
-
isTopOut() && (y = 0 - tooltipParentElementRect.y / tooltipParentElementScale));
|
|
131
|
+
}, "y"));
|
|
215
132
|
const result = {
|
|
216
|
-
x:
|
|
217
|
-
y:
|
|
218
|
-
};
|
|
219
|
-
return
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
133
|
+
x: null,
|
|
134
|
+
y: null
|
|
135
|
+
}, isBrowser = isTrueBrowser(this._env);
|
|
136
|
+
return dims.forEach((dim => {
|
|
137
|
+
const boxSize = "x" === dim ? tooltipBoxWidth : tooltipBoxHeight, canvasSize = "x" === dim ? canvasWidth : canvasHeight, offset = "x" === dim ? offsetX : offsetY, posType = getPositionType(pointerFixedPosition[dim], dim);
|
|
138
|
+
if (isValidNumber(calcPos[dimToPos[dim][0]])) result[dim] = calcPos[dimToPos[dim][0]]; else if (isValidNumber(calcPos[dimToPos[dim][1]])) result[dim] = canvasSize - boxSize * tooltipSizeScale - calcPos[dimToPos[dim][1]]; else {
|
|
139
|
+
const value0 = "x" === dim ? event.canvasX : event.canvasY;
|
|
140
|
+
result[dim] = posType > 0 ? value0 + offset : value0 - boxSize * tooltipSizeScale / 2 + (posType < 0 ? -1 : 0) * offset;
|
|
141
|
+
}
|
|
142
|
+
result[dim] *= chartElementScale, isBrowser && (result[dim] += relativePosOffset[dim]),
|
|
143
|
+
result[dim] /= tooltipParentElementScale;
|
|
144
|
+
const containerDimSize = "x" === dim ? containerSize.width : containerSize.height, leftOrTop = -tooltipParentElementRect[dim] / tooltipParentElementScale, rightOrBottom = (containerDimSize - tooltipParentElementRect[dim]) / tooltipParentElementScale - boxSize;
|
|
145
|
+
2 !== posType && result[dim] < leftOrTop ? isFixedPosition ? result[dim] = leftOrTop : (result[dim] += 0 === posType ? offset + boxSize / 2 : 2 * offset + boxSize,
|
|
146
|
+
result[dim] > rightOrBottom && (result[dim] = rightOrBottom)) : -2 !== posType && result[dim] > rightOrBottom && (isFixedPosition ? result[dim] = rightOrBottom : (result[dim] -= 0 === posType ? offset + boxSize / 2 : 2 * offset + boxSize,
|
|
147
|
+
result[dim] < leftOrTop && (result[dim] = leftOrTop)));
|
|
148
|
+
})), result;
|
|
223
149
|
};
|
|
224
150
|
}
|
|
225
151
|
get env() {
|
|
@@ -237,16 +163,10 @@ export class BaseTooltipHandler extends BasePlugin {
|
|
|
237
163
|
}
|
|
238
164
|
release() {
|
|
239
165
|
var _a, _b, _c;
|
|
240
|
-
this._clearAllCache();
|
|
241
166
|
const spec = null !== (_a = this._component.getSpec()) && void 0 !== _a ? _a : {};
|
|
242
167
|
spec.handler ? null === (_c = (_b = spec.handler).release) || void 0 === _c || _c.call(_b) : (this._removeTooltip(),
|
|
243
168
|
this._isReleased = !0);
|
|
244
169
|
}
|
|
245
|
-
_clearAllCache() {
|
|
246
|
-
this._isTooltipPaused = !1, this._isPointerEscaped = !1, clearTimeout(this._cachePointerTimer),
|
|
247
|
-
this._cachePointerTimer = -1, this._cachePointerPosition = void 0, this._cacheTooltipPosition = void 0,
|
|
248
|
-
this._cacheTooltipSize = void 0;
|
|
249
|
-
}
|
|
250
170
|
_throttle(callback) {
|
|
251
171
|
const tooltipSpec = this._component.getSpec();
|
|
252
172
|
let wait;
|
|
@@ -273,59 +193,6 @@ export class BaseTooltipHandler extends BasePlugin {
|
|
|
273
193
|
height: (null != panelDomHeight ? panelDomHeight : null == panel ? void 0 : panel.height) + (isCanvas ? panel.lineWidth : 0)
|
|
274
194
|
};
|
|
275
195
|
}
|
|
276
|
-
_getPointerPositionRelativeToTooltipParent(params) {
|
|
277
|
-
var _a, _b;
|
|
278
|
-
let {canvasX: x, canvasY: y} = params.event;
|
|
279
|
-
const {tooltipSpec: tooltipSpec} = params, invalidPosition = {
|
|
280
|
-
x: 1 / 0,
|
|
281
|
-
y: 1 / 0
|
|
282
|
-
}, isCanvas = "canvas" === tooltipSpec.renderMode, tooltipParentElement = this._getParentElement(tooltipSpec);
|
|
283
|
-
let relativePosOffset = {
|
|
284
|
-
x: 0,
|
|
285
|
-
y: 0
|
|
286
|
-
}, tooltipParentElementRect = {
|
|
287
|
-
x: 0,
|
|
288
|
-
y: 0
|
|
289
|
-
}, chartElementScale = 1, tooltipParentElementScale = 1;
|
|
290
|
-
if (isTrueBrowser(this._env) && !tooltipSpec.confine && !isCanvas) {
|
|
291
|
-
tooltipParentElementRect = null !== (_a = null == tooltipParentElement ? void 0 : tooltipParentElement.getBoundingClientRect()) && void 0 !== _a ? _a : invalidPosition;
|
|
292
|
-
const chartElement = null !== (_b = this._compiler.getCanvas()) && void 0 !== _b ? _b : this._chartContainer, chartElementRect = null == chartElement ? void 0 : chartElement.getBoundingClientRect();
|
|
293
|
-
relativePosOffset = {
|
|
294
|
-
x: chartElementRect.x - tooltipParentElementRect.x,
|
|
295
|
-
y: chartElementRect.y - tooltipParentElementRect.y
|
|
296
|
-
}, chartElementScale = getScale(chartElement, chartElementRect), tooltipParentElementScale = getScale(tooltipParentElement, tooltipParentElementRect);
|
|
297
|
-
}
|
|
298
|
-
return x *= chartElementScale, y *= chartElementScale, isTrueBrowser(this._env) && (x += relativePosOffset.x,
|
|
299
|
-
y += relativePosOffset.y), x /= tooltipParentElementScale, y /= tooltipParentElementScale,
|
|
300
|
-
{
|
|
301
|
-
x: x,
|
|
302
|
-
y: y
|
|
303
|
-
};
|
|
304
|
-
}
|
|
305
|
-
_isPointerMovingToTooltip(params) {
|
|
306
|
-
if (!this._cacheTooltipPosition || !this._cacheTooltipSize || !this._cachePointerPosition) return !1;
|
|
307
|
-
const {width: tooltipWidth, height: tooltipHeight} = this._cacheTooltipSize, {x: tooltipX = 0, y: tooltipY} = this._cacheTooltipPosition, pos = this._getPointerPositionRelativeToTooltipParent(params);
|
|
308
|
-
if (pointInRect(pos, {
|
|
309
|
-
x1: tooltipX,
|
|
310
|
-
y1: tooltipY,
|
|
311
|
-
x2: tooltipX + tooltipWidth,
|
|
312
|
-
y2: tooltipY + tooltipHeight
|
|
313
|
-
}, !1)) return !0;
|
|
314
|
-
const a = {
|
|
315
|
-
x: tooltipX,
|
|
316
|
-
y: tooltipY
|
|
317
|
-
}, b = {
|
|
318
|
-
x: a.x + tooltipWidth,
|
|
319
|
-
y: a.y
|
|
320
|
-
}, c = {
|
|
321
|
-
x: a.x,
|
|
322
|
-
y: a.y + tooltipHeight
|
|
323
|
-
}, d = {
|
|
324
|
-
x: b.x,
|
|
325
|
-
y: c.y
|
|
326
|
-
}, oldPos = this._cachePointerPosition;
|
|
327
|
-
return polygonContainPoint([ oldPos, a, b ], pos.x, pos.y) || polygonContainPoint([ oldPos, c, d ], pos.x, pos.y) || polygonContainPoint([ oldPos, a, d ], pos.x, pos.y) || polygonContainPoint([ oldPos, b, c ], pos.x, pos.y);
|
|
328
|
-
}
|
|
329
196
|
_getParentElement(spec) {
|
|
330
197
|
return spec.parentElement;
|
|
331
198
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/plugin/components/tooltip-handler/base.ts"],"names":[],"mappings":"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","file":"base.js","sourcesContent":["import { DEFAULT_CHART_WIDTH, DEFAULT_CHART_HEIGHT } from '../../../constant/base';\nimport type { Options } from './constants';\n// eslint-disable-next-line no-duplicate-imports\nimport { DEFAULT_OPTIONS } from './constants';\nimport type { Maybe, IPoint, ILayoutPoint, RenderMode } from '../../../typings';\n// eslint-disable-next-line no-duplicate-imports\nimport type { ITooltipPositionFixedValue } from '../../../typings/tooltip/position';\n// eslint-disable-next-line no-duplicate-imports\nimport { isTrueBrowser } from '../../../util/env';\nimport type {\n TooltipData,\n ITooltipActual,\n TooltipActiveType,\n ITooltipHandler,\n ITooltipPositionActual,\n IGlobalTooltipPositionPattern\n} from '../../../typings/tooltip';\n// eslint-disable-next-line no-duplicate-imports\nimport type { TooltipFixedPosition } from '../../../typings/tooltip';\nimport { getScale } from './utils/common';\nimport {\n getActualTooltipPositionValue,\n getCartesianCrosshairRect,\n getHorizontalPositionType,\n getVerticalPositionType,\n isFixedTooltipPositionPattern,\n isGlobalTooltipPositionPattern\n} from './utils/position';\nimport type { ICartesianSeries } from '../../../series/interface';\nimport type { IGroup } from '@visactor/vrender-core';\nimport type { AABBBounds } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport {\n isNumber,\n isObject,\n isValidNumber,\n isValid,\n throttle,\n isNil,\n polygonContainPoint,\n pointInRect,\n isFunction\n} from '@visactor/vutils';\nimport type { IElement } from '@visactor/vgrammar-core';\nimport type { ILayoutModel } from '../../../model/interface';\nimport type { Compiler } from '../../../compile/compiler';\nimport type { IContainerSize } from '@visactor/vrender-components';\nimport { getTooltipAttributes } from './utils/attribute';\nimport type { IChartOption } from '../../../chart/interface';\nimport type { ITooltipSpec, Tooltip, TooltipHandlerParams } from '../../../component/tooltip';\n// eslint-disable-next-line no-duplicate-imports\nimport { TooltipResult } from '../../../component/tooltip';\nimport type { IComponentPlugin, IComponentPluginService } from '../interface';\nimport { BasePlugin } from '../../base/base-plugin';\nimport type { ITooltipAttributes } from './interface';\nimport { getTooltipPatternValue } from '../../../component/tooltip/utils';\nimport type { IDimensionData, IDimensionInfo } from '../../../event/events/dimension/interface';\n\ntype ChangeTooltipFunc = (visible: boolean, params: TooltipHandlerParams, data?: TooltipData) => TooltipResult;\n\ntype ChangeTooltipPositionFunc = (params: TooltipHandlerParams, data: TooltipData) => TooltipResult;\n\n/**\n * The tooltip handler class.\n */\nexport abstract class BaseTooltipHandler extends BasePlugin implements ITooltipHandler, IComponentPlugin {\n static readonly pluginType: 'component';\n static readonly specKey = 'tooltip';\n\n readonly type: string;\n\n /** 是否可见 */\n protected _visible = true;\n\n // protected _style: ITooltipStyle = {};\n\n protected _option: Options;\n\n protected _chartOption: IChartOption;\n\n protected _env: RenderMode;\n public get env() {\n return this._env;\n }\n\n protected _component: Tooltip;\n protected _attributes?: ITooltipAttributes | null = null;\n\n protected _chartContainer: Maybe<HTMLElement>;\n protected _compiler: Compiler;\n\n protected _isTooltipPaused: boolean;\n protected _isPointerEscaped: boolean;\n protected _cachePointerTimer: number;\n protected _cachePointerPosition: ILayoutPoint;\n protected _cacheTooltipPosition: ILayoutPoint;\n protected _cacheTooltipSize: IContainerSize;\n\n // tooltip 容器\n protected _container!: Maybe<IGroup | HTMLElement>;\n\n protected _isReleased: boolean = false;\n\n onAdd(service: IComponentPluginService<any>): void {\n super.onAdd(service);\n const component = service.component as Tooltip;\n this._component = component;\n this._chartOption = component.getOption() as any;\n this._env = this._chartOption.mode;\n this._chartContainer = this._chartOption.globalInstance.getContainer();\n this._compiler = component.getCompiler();\n this._initFromSpec();\n }\n\n showTooltip = (activeType: TooltipActiveType, data: TooltipData, params: TooltipHandlerParams) => {\n const { changePositionOnly } = params;\n\n if (changePositionOnly) {\n return this.changeTooltipPosition(params, data);\n }\n return this.changeTooltip(true, params, data);\n };\n\n /** 改变 tooltip 内容和位置(带 throttle 版本),返回是否遇到异常 */\n protected changeTooltip: ChangeTooltipFunc;\n\n /** 改变 tooltip 内容和位置(不带 throttle 版本),返回是否遇到异常 */\n protected _changeTooltip: ChangeTooltipFunc = (\n visible: boolean,\n params: TooltipHandlerParams,\n data?: TooltipData\n ) => {\n if (this._isReleased) {\n return TooltipResult.failed;\n }\n\n if (!visible) {\n this._clearAllCache();\n /** 关闭 tooltip */\n this._updateTooltip(false, params);\n return TooltipResult.success;\n }\n\n return this._changeTooltipPosition(params, data);\n };\n\n /** 改变 tooltip 位置(带 throttle 版本),返回是否遇到异常 */\n protected changeTooltipPosition: ChangeTooltipPositionFunc;\n\n /** 改变 tooltip 位置(不带 throttle 版本),返回是否遇到异常 */\n protected _changeTooltipPosition: ChangeTooltipPositionFunc = (params: TooltipHandlerParams, data: TooltipData) => {\n if (this._isReleased) {\n return TooltipResult.failed;\n }\n\n const event = params.event as MouseEvent;\n const { tooltipSpec, tooltipActual, changePositionOnly } = params;\n\n if (tooltipSpec.enterable) {\n if (!this._isPointerEscaped && this._isPointerMovingToTooltip(params)) {\n if (!this._isTooltipPaused) {\n this._isTooltipPaused = true;\n this._cachePointerTimer = setTimeout(() => {\n this._isPointerEscaped = true;\n }, 300) as unknown as number;\n }\n return TooltipResult.success;\n }\n this._isTooltipPaused = false;\n this._isPointerEscaped = false;\n clearTimeout(this._cachePointerTimer);\n this._cachePointerPosition = this._getPointerPositionRelativeToTooltipParent(params);\n }\n\n const activeType = tooltipActual.activeType;\n\n /** 用户自定义逻辑 */\n if (tooltipSpec.handler) {\n return tooltipSpec.handler.showTooltip?.(activeType, data, params) ?? TooltipResult.success;\n }\n\n /** 默认逻辑 */\n const pattern = tooltipSpec[activeType];\n if (!pattern) {\n return TooltipResult.failed;\n }\n\n // 计算 tooltip 位置\n const position = this._getActualTooltipPosition(\n tooltipActual,\n params,\n this._getTooltipBoxSize(tooltipActual, changePositionOnly)\n );\n tooltipActual.position = position;\n if (pattern.updatePosition) {\n tooltipActual.position = pattern.updatePosition(tooltipActual.position, data, params);\n }\n\n // 判断 tooltip 可见性\n let tooltipVisible = pattern?.visible !== false;\n if (\n !data ||\n event.type === 'pointerout' ||\n !tooltipActual.visible ||\n (!tooltipActual.title && !tooltipActual.content)\n ) {\n tooltipVisible = false;\n }\n\n this._updateTooltip(tooltipVisible, {\n ...params,\n changePositionOnly\n });\n return TooltipResult.success;\n };\n\n hideTooltip(params: TooltipHandlerParams): TooltipResult {\n return this.changeTooltip(false, params);\n }\n\n release(): void {\n this._clearAllCache();\n const spec = this._component.getSpec() ?? {};\n /** 用户自定义逻辑 */\n if (spec.handler) {\n spec.handler.release?.();\n return;\n }\n /** 默认逻辑 */\n this._removeTooltip();\n\n this._isReleased = true;\n }\n\n protected _clearAllCache() {\n this._isTooltipPaused = false;\n this._isPointerEscaped = false;\n clearTimeout(this._cachePointerTimer);\n this._cachePointerTimer = -1;\n this._cachePointerPosition = undefined;\n this._cacheTooltipPosition = undefined;\n this._cacheTooltipSize = undefined;\n }\n\n /* -----需要子类继承的方法开始----- */\n\n protected abstract _updateTooltip(visible: boolean, params: TooltipHandlerParams): void;\n protected abstract _removeTooltip(): void;\n\n /* -----需要子类继承的方法结束----- */\n\n protected _throttle(callback: any) {\n const tooltipSpec = this._component.getSpec();\n let wait: number;\n if (isNumber(tooltipSpec.throttleInterval)) {\n wait = tooltipSpec.throttleInterval;\n } else {\n if (tooltipSpec.renderMode !== 'html' || !tooltipSpec.transitionDuration) {\n wait = 10;\n } else {\n wait = 50;\n }\n }\n return throttle(callback, wait);\n }\n\n protected _getDefaultOption(): Options {\n const { offset } = this._component.getSpec();\n return {\n ...DEFAULT_OPTIONS,\n offsetX: offset?.x ?? DEFAULT_OPTIONS.offsetX,\n offsetY: offset?.y ?? DEFAULT_OPTIONS.offsetY\n };\n }\n\n /**\n * 计算实际的 tooltip 位置\n */\n protected _getActualTooltipPosition = (\n actualTooltip: ITooltipActual,\n params: TooltipHandlerParams,\n tooltipBoxSize: IContainerSize | undefined\n ): ITooltipPositionActual => {\n const { tooltipSpec } = params;\n const invalidPosition = {\n x: Infinity,\n y: Infinity\n };\n if (!tooltipSpec) {\n this._cacheTooltipPosition = undefined;\n return invalidPosition;\n }\n const event = params.event as MouseEvent;\n const { activeType, data } = actualTooltip;\n const firstDim =\n activeType === 'dimension' ? (data as IDimensionInfo[])[0]?.data?.[0] : (data as IDimensionData[])?.[0];\n\n let { offsetX, offsetY } = this._option;\n\n const spec = tooltipSpec[activeType];\n const position = getTooltipPatternValue(spec.position, data, params);\n const positionMode =\n getTooltipPatternValue(spec.positionMode, data, params) ?? (activeType === 'mark' ? 'mark' : 'pointer');\n const { width: tooltipBoxWidth = 0, height: tooltipBoxHeight = 0 } = tooltipBoxSize ?? {};\n\n const isCanvas = tooltipSpec.renderMode === 'canvas';\n const canvasRect = params?.chart?.getCanvasRect();\n const canvasWidth = canvasRect?.width ?? DEFAULT_CHART_WIDTH;\n const canvasHeight = canvasRect?.height ?? DEFAULT_CHART_HEIGHT;\n let isFixedPosition = false;\n\n const containerSize = {\n width: 0,\n height: 0\n };\n let relativePosOffset = { x: 0, y: 0 };\n let tooltipParentElementRect: IPoint | DOMRect = { x: 0, y: 0 };\n let chartElementScale = 1;\n let tooltipParentElementScale = 1;\n\n if (isTrueBrowser(this._env) && !tooltipSpec.confine) {\n // 只有在 browser 模式下才可以获取到 window 对象\n containerSize.width = window.innerWidth;\n containerSize.height = window.innerHeight;\n\n if (!isCanvas) {\n const tooltipParentElement = this._getParentElement(tooltipSpec);\n tooltipParentElementRect = tooltipParentElement?.getBoundingClientRect?.() ?? invalidPosition;\n const chartElement = (this._compiler.getCanvas() ?? this._chartContainer) as HTMLElement;\n const chartElementRect = chartElement?.getBoundingClientRect();\n relativePosOffset = {\n x: chartElementRect.x - tooltipParentElementRect.x,\n y: chartElementRect.y - tooltipParentElementRect.y\n };\n chartElementScale = getScale(chartElement, chartElementRect);\n tooltipParentElementScale = getScale(tooltipParentElement, tooltipParentElementRect as DOMRect);\n }\n } else {\n containerSize.width = canvasWidth;\n containerSize.height = canvasHeight;\n }\n const tooltipSizeScale = tooltipParentElementScale / chartElementScale;\n\n /* 一、计算 left、top、right、bottom */\n let left: number | undefined;\n let top: number | undefined;\n let right: number | undefined;\n let bottom: number | undefined;\n\n let pointerFixedPositionX: TooltipFixedPosition = position as any;\n let pointerFixedPositionY: TooltipFixedPosition = position as any;\n\n const processCartesianFixedPositionX = ({ orient, mode, offset }: ITooltipPositionFixedValue) => {\n let x1: number;\n let x2: number;\n const model = params.model as ILayoutModel;\n const startPoint = model?.getLayoutStartPoint();\n offsetX = offset ?? offsetX;\n\n if (mode === 'mark') {\n isFixedPosition = true;\n const element = params.item as IElement;\n const bounds = element?.getBounds() as AABBBounds;\n if (bounds && startPoint) {\n x1 = bounds.x1 + startPoint.x;\n x2 = bounds.x2 + startPoint.x;\n }\n } else if (\n mode === 'crosshair' &&\n firstDim?.series?.coordinate === 'cartesian' &&\n firstDim.datum &&\n firstDim.datum.length\n ) {\n isFixedPosition = true;\n const rect = getCartesianCrosshairRect(firstDim, startPoint);\n if (rect) {\n x1 = rect.start.x;\n x2 = rect.end.x;\n }\n } else {\n pointerFixedPositionX = orient;\n }\n\n if (isFixedPosition) {\n switch (getHorizontalPositionType(orient)) {\n case 'left':\n left = x1 - tooltipBoxWidth * tooltipSizeScale - offsetX;\n break;\n case 'right':\n left = x2 + offsetX;\n break;\n case 'center':\n left = (x1 + x2) / 2 - (tooltipBoxWidth * tooltipSizeScale) / 2;\n break;\n case 'centerLeft':\n left = (x1 + x2) / 2 - tooltipBoxWidth * tooltipSizeScale - offsetX;\n break;\n case 'centerRight':\n left = (x1 + x2) / 2 + offsetX;\n break;\n }\n }\n };\n const processCartesianFixedPositionY = ({ orient, mode, offset }: ITooltipPositionFixedValue) => {\n let y1: number;\n let y2: number;\n const model = params.model as ILayoutModel;\n const startPoint = model?.getLayoutStartPoint();\n offsetY = offset ?? offsetY;\n\n if (mode === 'mark') {\n isFixedPosition = true;\n const element = params.item as IElement;\n const bounds = element?.getBounds() as AABBBounds;\n if (bounds && startPoint) {\n y1 = bounds.y1 + startPoint.y;\n y2 = bounds.y2 + startPoint.y;\n }\n } else if (\n mode === 'crosshair' &&\n firstDim?.series?.coordinate === 'cartesian' &&\n firstDim.datum &&\n firstDim.datum.length\n ) {\n isFixedPosition = true;\n const rect = getCartesianCrosshairRect(firstDim, startPoint);\n if (rect) {\n y1 = rect.start.y;\n y2 = rect.end.y;\n }\n } else {\n pointerFixedPositionY = orient;\n }\n\n if (isFixedPosition) {\n switch (getVerticalPositionType(orient)) {\n case 'top':\n top = y1 - tooltipBoxHeight * tooltipSizeScale - offsetY;\n break;\n case 'bottom':\n top = y2 + offsetY;\n break;\n case 'center':\n top = (y1 + y2) / 2 - (tooltipBoxHeight * tooltipSizeScale) / 2;\n break;\n case 'centerTop':\n top = (y1 + y2) / 2 - tooltipBoxHeight * tooltipSizeScale - offsetY;\n break;\n case 'centerBottom':\n top = (y1 + y2) / 2 + offsetY;\n break;\n }\n }\n };\n\n if (isObject(position)) {\n if (isGlobalTooltipPositionPattern(position)) {\n const {\n left: posLeft,\n right: posRight,\n top: posTop,\n bottom: posBottom\n } = position as IGlobalTooltipPositionPattern;\n left = getActualTooltipPositionValue(posLeft, event);\n top = getActualTooltipPositionValue(posTop, event);\n right = getActualTooltipPositionValue(posRight, event);\n bottom = getActualTooltipPositionValue(posBottom, event);\n } else if (isFixedTooltipPositionPattern(position)) {\n const { x, y } = position;\n if (isNumber(x) || isFunction(x)) {\n left = getActualTooltipPositionValue(x, event);\n } else {\n processCartesianFixedPositionX(x);\n }\n if (isNumber(y) || isFunction(y)) {\n top = getActualTooltipPositionValue(y, event);\n } else {\n processCartesianFixedPositionY(y);\n }\n }\n } else if (isValid(position)) {\n processCartesianFixedPositionX({ orient: position, mode: positionMode });\n processCartesianFixedPositionY({ orient: position, mode: positionMode });\n }\n\n /* 二、换算成 x 和 y */\n let x: number;\n let y: number;\n\n const { canvasX, canvasY } = event as any;\n if (isValidNumber(left)) {\n x = left;\n } else if (isValidNumber(right)) {\n x = canvasWidth - tooltipBoxWidth * tooltipSizeScale - right;\n } else {\n const x0 = canvasX;\n switch (getHorizontalPositionType(pointerFixedPositionX, 'right')) {\n case 'center':\n x = x0 - (tooltipBoxWidth * tooltipSizeScale) / 2;\n break;\n case 'left':\n case 'centerLeft':\n x = x0 - tooltipBoxWidth * tooltipSizeScale - offsetX;\n break;\n case 'right':\n case 'centerRight':\n x = x0 + offsetX;\n break;\n }\n }\n if (isValidNumber(top)) {\n y = top;\n } else if (isValidNumber(bottom)) {\n y = canvasHeight - tooltipBoxHeight * tooltipSizeScale - bottom;\n } else {\n const y0 = canvasY;\n switch (getVerticalPositionType(pointerFixedPositionY, 'bottom')) {\n case 'center':\n y = y0 - (tooltipBoxHeight * tooltipSizeScale) / 2;\n break;\n case 'top':\n case 'centerTop':\n y = y0 - tooltipBoxHeight * tooltipSizeScale - offsetY;\n break;\n case 'bottom':\n case 'centerBottom':\n y = y0 + offsetY;\n break;\n }\n }\n\n x *= chartElementScale;\n y *= chartElementScale;\n if (isTrueBrowser(this._env)) {\n x += relativePosOffset.x;\n y += relativePosOffset.y;\n }\n x /= tooltipParentElementScale;\n y /= tooltipParentElementScale;\n\n /* 三、确保tooltip在视区内 */\n const { width: containerWidth, height: containerHeight } = containerSize;\n\n const isLeftOut = () => x * tooltipParentElementScale + tooltipParentElementRect.x < 0;\n const isRightOut = () =>\n (x + tooltipBoxWidth) * tooltipParentElementScale + tooltipParentElementRect.x > containerWidth;\n const isTopOut = () => y * tooltipParentElementScale + tooltipParentElementRect.y < 0;\n const isBottomOut = () =>\n (y + tooltipBoxHeight) * tooltipParentElementScale + tooltipParentElementRect.y > containerHeight;\n\n const detectLeftFirst = () => {\n if (isLeftOut()) {\n // 位置不超出视区左界\n if (isFixedPosition) {\n x = -tooltipParentElementRect.x / tooltipParentElementScale;\n } else {\n if (getHorizontalPositionType(position as TooltipFixedPosition, 'right') === 'center') {\n x += offsetX + tooltipBoxWidth / 2;\n } else {\n x += offsetX * 2 + tooltipBoxWidth;\n }\n }\n }\n };\n const detectLeftLast = () => {\n if (isLeftOut()) {\n // 位置不超出视区左界\n x = -tooltipParentElementRect.x / tooltipParentElementScale;\n }\n };\n const detectRightFirst = () => {\n if (isRightOut()) {\n // 位置不超出视区右界\n if (isFixedPosition) {\n x = (containerWidth - tooltipParentElementRect.x) / tooltipParentElementScale - tooltipBoxWidth;\n } else {\n if (getHorizontalPositionType(position as TooltipFixedPosition, 'right') === 'center') {\n x -= offsetX + tooltipBoxWidth / 2;\n } else {\n x -= offsetX * 2 + tooltipBoxWidth;\n }\n }\n }\n };\n const detectRightLast = () => {\n if (isRightOut()) {\n // 位置不超出视区右界\n x = (containerWidth - tooltipParentElementRect.x) / tooltipParentElementScale - tooltipBoxWidth;\n }\n };\n const detectTopFirst = () => {\n if (isTopOut()) {\n // 位置不超出视区上界\n if (isFixedPosition) {\n y = -tooltipParentElementRect.y / tooltipParentElementScale;\n } else {\n if (getVerticalPositionType(position as TooltipFixedPosition, 'bottom') === 'center') {\n y += offsetY + tooltipBoxHeight / 2;\n } else {\n y += offsetY * 2 + tooltipBoxHeight;\n }\n }\n }\n };\n const detectTopLast = () => {\n if (isTopOut()) {\n // 位置不超出视区上界\n y = 0 - tooltipParentElementRect.y / tooltipParentElementScale;\n }\n };\n const detectBottomFirst = () => {\n if (isBottomOut()) {\n // 位置不超出视区下界\n if (isFixedPosition) {\n y = (containerHeight - tooltipParentElementRect.y) / tooltipParentElementScale - tooltipBoxHeight;\n } else {\n if (getVerticalPositionType(position as TooltipFixedPosition, 'bottom') === 'center') {\n y -= offsetY + tooltipBoxHeight / 2;\n } else {\n y -= offsetY * 2 + tooltipBoxHeight;\n }\n }\n }\n };\n const detectBottomLast = () => {\n if (isBottomOut()) {\n // 位置不超出视区下界\n y = (containerHeight - tooltipParentElementRect.y) / tooltipParentElementScale - tooltipBoxHeight;\n }\n };\n\n // 处理左右\n const horizontalType = getHorizontalPositionType(position as TooltipFixedPosition, 'right');\n if (horizontalType === 'left' || (horizontalType.includes('center') && isLeftOut())) {\n detectLeftFirst();\n detectRightLast();\n } else {\n detectRightFirst();\n detectLeftLast();\n }\n\n // 处理上下\n const verticalType = getVerticalPositionType(position as TooltipFixedPosition, 'bottom');\n if (verticalType === 'top' || (verticalType.includes('center') && isTopOut())) {\n detectTopFirst();\n detectBottomLast();\n } else {\n detectBottomFirst();\n detectTopLast();\n }\n\n const result = { x, y };\n this._cacheTooltipPosition = result;\n this._cacheTooltipSize = { width: tooltipBoxWidth, height: tooltipBoxHeight };\n return result;\n };\n\n // 计算 tooltip 内容区域的宽高,并缓存结果\n protected _getTooltipBoxSize(actualTooltip: ITooltipActual, changePositionOnly: boolean): IContainerSize | undefined {\n if (!changePositionOnly || isNil(this._attributes)) {\n const chartTheme = this._chartOption?.getTheme() ?? {};\n this._attributes = getTooltipAttributes(actualTooltip, this._component.getSpec(), chartTheme);\n }\n const { panel, panelDomHeight } = this._attributes ?? {};\n // canvas模式下, size需要考虑border size, 目的是为了精准判断边界是否超出画布,达到confine效果\n // html模式不提供confine, 所以不考虑精准计算size\n const isCanvas = this._component.getSpec().renderMode === 'canvas';\n\n return {\n width: panel?.width + (isCanvas ? panel.lineWidth : 0),\n height: (panelDomHeight ?? panel?.height) + (isCanvas ? panel.lineWidth : 0)\n };\n }\n\n protected _getPointerPositionRelativeToTooltipParent(params: TooltipHandlerParams) {\n let { canvasX: x, canvasY: y } = params.event;\n const { tooltipSpec } = params;\n\n const invalidPosition = {\n x: Infinity,\n y: Infinity\n };\n\n const isCanvas = tooltipSpec.renderMode === 'canvas';\n const tooltipParentElement = this._getParentElement(tooltipSpec);\n\n let relativePosOffset = { x: 0, y: 0 };\n let tooltipParentElementRect: IPoint | DOMRect = { x: 0, y: 0 };\n let chartElementScale = 1;\n let tooltipParentElementScale = 1;\n\n if (isTrueBrowser(this._env) && !tooltipSpec.confine) {\n if (!isCanvas) {\n tooltipParentElementRect = tooltipParentElement?.getBoundingClientRect() ?? invalidPosition;\n const chartElement = (this._compiler.getCanvas() ?? this._chartContainer) as HTMLElement;\n const chartElementRect = chartElement?.getBoundingClientRect();\n relativePosOffset = {\n x: chartElementRect.x - tooltipParentElementRect.x,\n y: chartElementRect.y - tooltipParentElementRect.y\n };\n chartElementScale = getScale(chartElement, chartElementRect);\n tooltipParentElementScale = getScale(tooltipParentElement, tooltipParentElementRect as DOMRect);\n }\n }\n\n x *= chartElementScale;\n y *= chartElementScale;\n if (isTrueBrowser(this._env)) {\n x += relativePosOffset.x;\n y += relativePosOffset.y;\n }\n x /= tooltipParentElementScale;\n y /= tooltipParentElementScale;\n return { x, y };\n }\n\n protected _isPointerMovingToTooltip(params: TooltipHandlerParams) {\n if (!this._cacheTooltipPosition || !this._cacheTooltipSize || !this._cachePointerPosition) {\n return false;\n }\n const { width: tooltipWidth, height: tooltipHeight } = this._cacheTooltipSize;\n const { x: tooltipX = 0, y: tooltipY } = this._cacheTooltipPosition;\n\n const pos = this._getPointerPositionRelativeToTooltipParent(params);\n\n if (\n pointInRect(\n pos,\n {\n x1: tooltipX,\n y1: tooltipY,\n x2: tooltipX + tooltipWidth,\n y2: tooltipY + tooltipHeight\n },\n false\n )\n ) {\n return true;\n }\n\n // 确定 tooltip 四端点坐标\n const a = { x: tooltipX, y: tooltipY };\n const b = { x: a.x + tooltipWidth, y: a.y };\n const c = { x: a.x, y: a.y + tooltipHeight };\n const d = { x: b.x, y: c.y };\n const oldPos = this._cachePointerPosition;\n\n return (\n polygonContainPoint([oldPos, a, b], pos.x, pos.y) ||\n polygonContainPoint([oldPos, c, d], pos.x, pos.y) ||\n polygonContainPoint([oldPos, a, d], pos.x, pos.y) ||\n polygonContainPoint([oldPos, b, c], pos.x, pos.y)\n );\n }\n\n protected _getParentElement(spec: ITooltipSpec): HTMLElement {\n return spec.parentElement as any;\n }\n\n getTooltipContainer() {\n return this._container;\n }\n\n protected _initFromSpec() {\n this._option = this._getDefaultOption();\n // 为方法加防抖\n this.changeTooltip = this._throttle(this._changeTooltip) as any;\n this.changeTooltipPosition = this._throttle(this._changeTooltipPosition) as any;\n }\n\n reInit() {\n this._initFromSpec();\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/plugin/components/tooltip-handler/base.ts"],"names":[],"mappings":"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","file":"base.js","sourcesContent":["import { DEFAULT_CHART_WIDTH, DEFAULT_CHART_HEIGHT } from '../../../constant/base';\nimport type { Options } from './constants';\n// eslint-disable-next-line no-duplicate-imports\nimport { DEFAULT_OPTIONS } from './constants';\nimport type { Maybe, IPoint, RenderMode } from '../../../typings';\n// eslint-disable-next-line no-duplicate-imports\nimport type { ITooltipPositionFixedValue, TooltipPositionKeys } from '../../../typings/tooltip/position';\n// eslint-disable-next-line no-duplicate-imports\nimport { isTrueBrowser } from '../../../util/env';\nimport type {\n TooltipData,\n ITooltipActual,\n TooltipActiveType,\n ITooltipHandler,\n ITooltipPositionActual,\n IGlobalTooltipPositionPattern\n} from '../../../typings/tooltip';\n// eslint-disable-next-line no-duplicate-imports\nimport type { TooltipFixedPosition } from '../../../typings/tooltip';\nimport { getScale } from './utils/common';\nimport {\n getActualTooltipPositionValue,\n getCartesianCrosshairRect,\n getPositionType,\n isFixedTooltipPositionPattern,\n isGlobalTooltipPositionPattern\n} from './utils/position';\nimport type { IGroup } from '@visactor/vrender-core';\nimport type { AABBBounds } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { isNumber, isObject, isValidNumber, isValid, throttle, isNil, isFunction } from '@visactor/vutils';\nimport type { IElement } from '@visactor/vgrammar-core';\nimport type { ILayoutModel } from '../../../model/interface';\nimport type { Compiler } from '../../../compile/compiler';\nimport type { IContainerSize } from '@visactor/vrender-components';\nimport { getTooltipAttributes } from './utils/attribute';\nimport type { IChartOption } from '../../../chart/interface';\nimport type { ITooltipSpec, Tooltip, TooltipHandlerParams } from '../../../component/tooltip';\n// eslint-disable-next-line no-duplicate-imports\nimport { TooltipResult } from '../../../component/tooltip';\nimport type { IComponentPlugin, IComponentPluginService } from '../interface';\nimport { BasePlugin } from '../../base/base-plugin';\nimport type { ITooltipAttributes } from './interface';\nimport { getTooltipPatternValue } from '../../../component/tooltip/utils';\nimport type { IDimensionData, IDimensionInfo } from '../../../event/events/dimension/interface';\n\ntype ChangeTooltipFunc = (visible: boolean, params: TooltipHandlerParams, data?: TooltipData) => TooltipResult;\n\ntype ChangeTooltipPositionFunc = (params: TooltipHandlerParams, data: TooltipData) => TooltipResult;\n\n/**\n * The tooltip handler class.\n */\nexport abstract class BaseTooltipHandler extends BasePlugin implements ITooltipHandler, IComponentPlugin {\n static readonly pluginType: 'component';\n static readonly specKey = 'tooltip';\n\n readonly type: string;\n\n /** 是否可见 */\n protected _visible = true;\n\n // protected _style: ITooltipStyle = {};\n\n protected _option: Options;\n\n protected _chartOption: IChartOption;\n\n protected _env: RenderMode;\n public get env() {\n return this._env;\n }\n\n protected _component: Tooltip;\n protected _attributes?: ITooltipAttributes | null = null;\n\n protected _chartContainer: Maybe<HTMLElement>;\n protected _compiler: Compiler;\n\n // tooltip 容器\n protected _container!: Maybe<IGroup | HTMLElement>;\n\n protected _isReleased: boolean = false;\n\n onAdd(service: IComponentPluginService<any>): void {\n super.onAdd(service);\n const component = service.component as Tooltip;\n this._component = component;\n this._chartOption = component.getOption() as any;\n this._env = this._chartOption.mode;\n this._chartContainer = this._chartOption.globalInstance.getContainer();\n this._compiler = component.getCompiler();\n this._initFromSpec();\n }\n\n showTooltip = (activeType: TooltipActiveType, data: TooltipData, params: TooltipHandlerParams) => {\n const { changePositionOnly } = params;\n\n if (changePositionOnly) {\n return this.changeTooltipPosition(params, data);\n }\n return this.changeTooltip(true, params, data);\n };\n\n /** 改变 tooltip 内容和位置(带 throttle 版本),返回是否遇到异常 */\n protected changeTooltip: ChangeTooltipFunc;\n\n /** 改变 tooltip 内容和位置(不带 throttle 版本),返回是否遇到异常 */\n protected _changeTooltip: ChangeTooltipFunc = (\n visible: boolean,\n params: TooltipHandlerParams,\n data?: TooltipData\n ) => {\n if (this._isReleased) {\n return TooltipResult.failed;\n }\n\n if (!visible) {\n /** 关闭 tooltip */\n this._updateTooltip(false, params);\n return TooltipResult.success;\n }\n\n return this._changeTooltipPosition(params, data);\n };\n\n /** 改变 tooltip 位置(带 throttle 版本),返回是否遇到异常 */\n protected changeTooltipPosition: ChangeTooltipPositionFunc;\n\n /** 改变 tooltip 位置(不带 throttle 版本),返回是否遇到异常 */\n protected _changeTooltipPosition: ChangeTooltipPositionFunc = (params: TooltipHandlerParams, data: TooltipData) => {\n if (this._isReleased) {\n return TooltipResult.failed;\n }\n\n const event = params.event as MouseEvent;\n const { tooltipSpec, activeTooltipSpec, changePositionOnly } = params;\n\n if (!activeTooltipSpec) {\n return TooltipResult.failed;\n }\n\n const activeType = activeTooltipSpec.activeType;\n\n /** 用户自定义逻辑 */\n if (activeTooltipSpec.handler) {\n return activeTooltipSpec.handler.showTooltip?.(activeType, data, params) ?? TooltipResult.success;\n }\n\n /** 默认逻辑 */\n const pattern = activeTooltipSpec;\n\n // 计算 tooltip 位置\n const position = this._getActualTooltipPosition(\n activeTooltipSpec,\n params,\n this._getTooltipBoxSize(activeTooltipSpec, changePositionOnly)\n );\n activeTooltipSpec.position = position;\n const updatePosition = activeTooltipSpec.updatePosition ?? tooltipSpec[activeType]?.updatePosition;\n\n if (updatePosition) {\n activeTooltipSpec.position = updatePosition(activeTooltipSpec.position, data, params);\n }\n\n // 判断 tooltip 可见性\n let tooltipVisible = pattern?.visible !== false;\n if (\n !data ||\n event.type === 'pointerout' ||\n !activeTooltipSpec.visible ||\n (!activeTooltipSpec.title && !activeTooltipSpec.content)\n ) {\n tooltipVisible = false;\n }\n\n this._updateTooltip(tooltipVisible, {\n ...params,\n changePositionOnly\n });\n return TooltipResult.success;\n };\n\n hideTooltip(params: TooltipHandlerParams): TooltipResult {\n return this.changeTooltip(false, params);\n }\n\n release(): void {\n const spec = this._component.getSpec() ?? {};\n /** 用户自定义逻辑 */\n if (spec.handler) {\n spec.handler.release?.();\n return;\n }\n /** 默认逻辑 */\n this._removeTooltip();\n\n this._isReleased = true;\n }\n\n /* -----需要子类继承的方法开始----- */\n\n protected abstract _updateTooltip(visible: boolean, params: TooltipHandlerParams): void;\n protected abstract _removeTooltip(): void;\n\n /* -----需要子类继承的方法结束----- */\n\n protected _throttle(callback: any) {\n const tooltipSpec = this._component.getSpec();\n let wait: number;\n if (isNumber(tooltipSpec.throttleInterval)) {\n wait = tooltipSpec.throttleInterval;\n } else {\n if (tooltipSpec.renderMode !== 'html' || !tooltipSpec.transitionDuration) {\n wait = 10;\n } else {\n wait = 50;\n }\n }\n return throttle(callback, wait);\n }\n\n protected _getDefaultOption(): Options {\n const { offset } = this._component.getSpec();\n return {\n ...DEFAULT_OPTIONS,\n offsetX: offset?.x ?? DEFAULT_OPTIONS.offsetX,\n offsetY: offset?.y ?? DEFAULT_OPTIONS.offsetY\n };\n }\n\n /**\n * 计算实际的 tooltip 位置\n */\n protected _getActualTooltipPosition = (\n actualTooltip: ITooltipActual,\n params: TooltipHandlerParams,\n tooltipBoxSize: IContainerSize | undefined\n ): ITooltipPositionActual => {\n const { tooltipSpec } = params;\n const invalidPosition = {\n x: Infinity,\n y: Infinity\n };\n if (!tooltipSpec) {\n return invalidPosition;\n }\n const event = params.event as MouseEvent;\n const { activeType, data } = actualTooltip;\n const firstDim =\n activeType === 'dimension' ? (data as IDimensionInfo[])[0]?.data?.[0] : (data as IDimensionData[])?.[0];\n\n const { offsetX, offsetY } = this._option;\n\n const spec = tooltipSpec[activeType];\n const position = getTooltipPatternValue(spec?.position, data, params);\n const positionMode =\n getTooltipPatternValue(spec?.positionMode, data, params) ?? (activeType === 'mark' ? 'mark' : 'pointer');\n const { width: tooltipBoxWidth = 0, height: tooltipBoxHeight = 0 } = tooltipBoxSize ?? {};\n\n const isCanvas = tooltipSpec.renderMode === 'canvas';\n const canvasRect = params?.chart?.getCanvasRect();\n const canvasWidth = canvasRect?.width ?? DEFAULT_CHART_WIDTH;\n const canvasHeight = canvasRect?.height ?? DEFAULT_CHART_HEIGHT;\n let isFixedPosition = false;\n\n const containerSize = {\n width: 0,\n height: 0\n };\n let relativePosOffset = { x: 0, y: 0 };\n let tooltipParentElementRect: IPoint | DOMRect = { x: 0, y: 0 };\n let chartElementScale = 1;\n let tooltipParentElementScale = 1;\n\n if (isTrueBrowser(this._env) && !tooltipSpec.confine) {\n // 只有在 browser 模式下才可以获取到 window 对象\n containerSize.width = window.innerWidth;\n containerSize.height = window.innerHeight;\n\n if (!isCanvas) {\n const tooltipParentElement = this._getParentElement(tooltipSpec);\n tooltipParentElementRect = tooltipParentElement?.getBoundingClientRect?.() ?? invalidPosition;\n const chartElement = (this._compiler.getCanvas() ?? this._chartContainer) as HTMLElement;\n const chartElementRect = chartElement?.getBoundingClientRect();\n relativePosOffset = {\n x: chartElementRect.x - tooltipParentElementRect.x,\n y: chartElementRect.y - tooltipParentElementRect.y\n };\n chartElementScale = getScale(chartElement, chartElementRect);\n tooltipParentElementScale = getScale(tooltipParentElement, tooltipParentElementRect as DOMRect);\n }\n } else {\n containerSize.width = canvasWidth;\n containerSize.height = canvasHeight;\n }\n const tooltipSizeScale = tooltipParentElementScale / chartElementScale;\n\n /* 一、计算 left、top、right、bottom */\n\n const calcPos: { top?: number; bottom?: number; left?: number; right?: number } = {};\n const pointerFixedPosition: {\n x: TooltipFixedPosition;\n y: TooltipFixedPosition;\n } = { x: position as any, y: position as any };\n const dimToPos = { x: ['left', 'right'], y: ['top', 'bottom'] };\n\n const processCartesianFixedPosition = ({ orient, mode, offset }: ITooltipPositionFixedValue, dim: 'x' | 'y') => {\n let dim1: number;\n let dim2: number;\n const model = params.model as ILayoutModel;\n const startPoint = model?.getLayoutStartPoint();\n const dimOffset = offset ?? (dim === 'x' ? offsetX : offsetY);\n\n if (mode === 'mark') {\n isFixedPosition = true;\n const element = params.item as IElement;\n const bounds = element?.getBounds() as AABBBounds;\n if (bounds && startPoint) {\n dim1 = (dim === 'x' ? bounds.x1 : bounds.y1) + startPoint[dim];\n dim2 = (dim === 'x' ? bounds.x2 : bounds.y2) + startPoint[dim];\n }\n } else if (\n mode === 'crosshair' &&\n firstDim?.series?.coordinate === 'cartesian' &&\n firstDim.datum &&\n firstDim.datum.length\n ) {\n isFixedPosition = true;\n const rect = getCartesianCrosshairRect(firstDim, startPoint);\n if (rect) {\n dim1 = rect.start[dim];\n dim2 = rect.end[dim];\n }\n } else {\n pointerFixedPosition[dim] = orient;\n }\n\n if (isFixedPosition) {\n const posKey = dimToPos[dim][0] as TooltipPositionKeys;\n const boxSize = dim === 'x' ? tooltipBoxWidth : tooltipBoxHeight;\n switch (getPositionType(orient, dim)) {\n case -2:\n calcPos[posKey] = dim1 - boxSize * tooltipSizeScale - dimOffset;\n break;\n case 0:\n calcPos[posKey] = (dim1 + dim2) / 2 - (boxSize * tooltipSizeScale) / 2;\n break;\n case -1:\n calcPos[posKey] = (dim1 + dim2) / 2 - boxSize * tooltipSizeScale - dimOffset;\n break;\n case 1:\n calcPos[posKey] = (dim1 + dim2) / 2 + dimOffset;\n break;\n case 2:\n calcPos[posKey] = dim2 + dimOffset;\n break;\n }\n }\n };\n const dims = ['x', 'y'] as ('x' | 'y')[];\n if (isObject(position)) {\n if (isGlobalTooltipPositionPattern(position)) {\n const {\n left: posLeft,\n right: posRight,\n top: posTop,\n bottom: posBottom\n } = position as IGlobalTooltipPositionPattern;\n calcPos.left = getActualTooltipPositionValue(posLeft, event);\n calcPos.top = getActualTooltipPositionValue(posTop, event);\n calcPos.right = getActualTooltipPositionValue(posRight, event);\n calcPos.bottom = getActualTooltipPositionValue(posBottom, event);\n } else if (isFixedTooltipPositionPattern(position)) {\n dims.forEach(dim => {\n const dimValue = position[dim];\n if (isNumber(dimValue) || isFunction(dimValue)) {\n calcPos[dimToPos[dim][0] as TooltipPositionKeys] = getActualTooltipPositionValue(\n dimValue as number | ((event: MouseEvent) => number),\n event\n );\n } else {\n processCartesianFixedPosition(dimValue as ITooltipPositionFixedValue, dim);\n }\n });\n }\n } else if (isValid(position)) {\n processCartesianFixedPosition({ orient: position, mode: positionMode } as ITooltipPositionFixedValue, 'x');\n processCartesianFixedPosition({ orient: position, mode: positionMode } as ITooltipPositionFixedValue, 'y');\n }\n\n const result: ITooltipPositionActual = { x: null, y: null };\n const isBrowser = isTrueBrowser(this._env);\n\n dims.forEach(dim => {\n /* 二、换算成 x 和 y */\n const boxSize = dim === 'x' ? tooltipBoxWidth : tooltipBoxHeight;\n const canvasSize = dim === 'x' ? canvasWidth : canvasHeight;\n const offset = dim === 'x' ? offsetX : offsetY;\n const posType = getPositionType(pointerFixedPosition[dim], dim);\n if (isValidNumber(calcPos[dimToPos[dim][0] as TooltipPositionKeys])) {\n result[dim] = calcPos[dimToPos[dim][0] as TooltipPositionKeys];\n } else if (isValidNumber(calcPos[dimToPos[dim][1] as TooltipPositionKeys])) {\n result[dim] = canvasSize - boxSize * tooltipSizeScale - calcPos[dimToPos[dim][1] as TooltipPositionKeys];\n } else {\n const value0 = dim === 'x' ? (event as any).canvasX : (event as any).canvasY;\n\n if (posType > 0) {\n result[dim] = value0 + offset;\n } else {\n result[dim] = value0 - (boxSize * tooltipSizeScale) / 2 + (posType < 0 ? -1 : 0) * offset;\n }\n }\n result[dim] *= chartElementScale;\n\n if (isBrowser) {\n result[dim] += relativePosOffset[dim];\n }\n result[dim] /= tooltipParentElementScale;\n\n /* 三、确保tooltip在视区内 */\n const containerDimSize = dim === 'x' ? containerSize.width : containerSize.height;\n const leftOrTop = -tooltipParentElementRect[dim] / tooltipParentElementScale;\n const rightOrBottom = (containerDimSize - tooltipParentElementRect[dim]) / tooltipParentElementScale - boxSize;\n\n // 处理左右\n if (posType !== 2 && result[dim] < leftOrTop) {\n // 优先检测left\n if (isFixedPosition) {\n result[dim] = leftOrTop;\n } else {\n if (posType === 0) {\n // 从居中 挪至 右侧\n result[dim] += offset + boxSize / 2;\n } else {\n // 从居左/左侧 挪至 居右/右侧\n result[dim] += offset * 2 + boxSize;\n }\n\n if (result[dim] > rightOrBottom) {\n // 位置不超出视区右界\n result[dim] = rightOrBottom;\n }\n }\n } else if (posType !== -2 && result[dim] > rightOrBottom) {\n // 优先检测right\n // 位置不超出视区右界\n if (isFixedPosition) {\n result[dim] = rightOrBottom;\n } else {\n if (posType === 0) {\n // 从居中 挪至 左侧\n result[dim] -= offset + boxSize / 2;\n } else {\n // 从居右/右侧 挪至 居左/左侧\n result[dim] -= offset * 2 + boxSize;\n }\n\n if (result[dim] < leftOrTop) {\n // 位置不超出视区左界\n result[dim] = leftOrTop;\n }\n }\n }\n });\n\n return result;\n };\n\n // 计算 tooltip 内容区域的宽高,并缓存结果\n protected _getTooltipBoxSize(actualTooltip: ITooltipActual, changePositionOnly: boolean): IContainerSize | undefined {\n if (!changePositionOnly || isNil(this._attributes)) {\n const chartTheme = this._chartOption?.getTheme() ?? {};\n this._attributes = getTooltipAttributes(actualTooltip, this._component.getSpec(), chartTheme);\n }\n const { panel, panelDomHeight } = this._attributes ?? {};\n // canvas模式下, size需要考虑border size, 目的是为了精准判断边界是否超出画布,达到confine效果\n // html模式不提供confine, 所以不考虑精准计算size\n const isCanvas = this._component.getSpec().renderMode === 'canvas';\n\n return {\n width: panel?.width + (isCanvas ? panel.lineWidth : 0),\n height: (panelDomHeight ?? panel?.height) + (isCanvas ? panel.lineWidth : 0)\n };\n }\n\n protected _getParentElement(spec: ITooltipSpec): HTMLElement {\n return spec.parentElement as any;\n }\n\n getTooltipContainer() {\n return this._container;\n }\n\n protected _initFromSpec() {\n this._option = this._getDefaultOption();\n // 为方法加防抖\n this.changeTooltip = this._throttle(this._changeTooltip) as any;\n this.changeTooltipPosition = this._throttle(this._changeTooltipPosition) as any;\n }\n\n reInit() {\n this._initFromSpec();\n }\n}\n"]}
|
|
@@ -42,7 +42,7 @@ export class CanvasTooltipHandler extends BaseTooltipHandler {
|
|
|
42
42
|
visibleAll: !1
|
|
43
43
|
})));
|
|
44
44
|
this._tooltipComponent || this._initTooltipComponent(stage);
|
|
45
|
-
const {
|
|
45
|
+
const {activeTooltipSpec: activeTooltipSpec} = params, pos = activeTooltipSpec.position;
|
|
46
46
|
params.changePositionOnly ? isValid(pos) && this._tooltipComponent.setAttributes(pos) : this._tooltipComponent.setAttributes(Object.assign(Object.assign({}, this._attributes), pos)),
|
|
47
47
|
this._tooltipComponent.attribute.visible || (this._tooltipComponent.showAll(), this._tooltipComponent.setAttributes({
|
|
48
48
|
visibleAll: !0
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/plugin/components/tooltip-handler/canvas/canvas-tooltip-handler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAG3C,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAK5E,MAAM,OAAO,oBAAqB,SAAQ,kBAAkB;IAS1D;QACE,KAAK,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAR1B,SAAI,GAAG,kBAAkB,CAAC,MAAM,CAAC;IAS1C,CAAC;IAED,KAAK,CAAC,OAAqC;;QACzC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACrB,IAAI,CAAC,gBAAgB,GAAG,MAAC,IAAI,CAAC,YAAY,CAAC,UAAkB,0CAAE,eAAe,CAAC;IACjF,CAAC;IAEO,qBAAqB,CAAC,KAAY;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACpC,IAAI,CAAC,iBAAiB,GAAG,IAAI,gBAAgB,CAAC;YAC5C,qBAAqB,EAAE,KAAK;YAC5B,WAAW,EAAE,KAAK;SACnB,CAAC,CAAC;QACH,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAqC,CAAC,CAAC;IACxD,CAAC;IAEO,SAAS,CAAC,KAAY;QAC5B,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,OAAO,IAAI,CAAC,MAAM,CAAC;SACpB;QAED,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAGvD,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,YAAiC,CAAC;QAEtF,IAAI,WAAW,IAAI,WAAW,CAAC,KAAK,EAAE;YACpC,WAAW,CAAC,KAAK,CAAC,WAAW,GAAG,MAAM,CAAC;YACvC,WAAW,CAAC,KAAK,CAAC,aAAa,GAAG,MAAM,CAAC;SAC1C;QAED,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAES,cAAc;QACtB,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;SAE9B;QACD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC1B,CAAC;IAES,cAAc,CAAC,OAAgB,EAAE,MAA4B;QACrE,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QAExB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;QACxC,IAAI,CAAC,KAAK,EAAE;YACV,OAAO;SACR;QAED,IAAI,CAAC,OAAO,EAAE;YACZ,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,OAAO,EAAE;gBACtE,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC;gBACjC,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC;oBACnC,UAAU,EAAE,KAAK;iBAClB,CAAC,CAAC;aACJ;YACD,OAAO;SACR;QAED,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YAC3B,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;SACnC;QAED,MAAM,EAAE,
|
|
1
|
+
{"version":3,"sources":["../src/plugin/components/tooltip-handler/canvas/canvas-tooltip-handler.ts"],"names":[],"mappings":"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","file":"canvas-tooltip-handler.js","sourcesContent":["import type { ILayer, INode, Stage } from '@visactor/vrender-core';\nimport { BaseTooltipHandler } from '../base';\nimport { Tooltip as TooltipComponent } from '@visactor/vrender-components';\nimport { isValid } from '@visactor/vutils';\nimport type { TooltipHandlerParams } from '../../../../component/tooltip';\nimport type { IComponentPluginService } from '../../interface';\nimport { registerComponentPlugin } from '../../register';\nimport { TooltipHandlerType } from '../../../../component/tooltip/constant';\n\n/**\n * The tooltip handler class.\n */\nexport class CanvasTooltipHandler extends BaseTooltipHandler {\n static readonly type = TooltipHandlerType.canvas;\n readonly type = TooltipHandlerType.canvas;\n\n private _layer: ILayer;\n protected _el?: HTMLCanvasElement;\n protected _tooltipCanvasId?: string;\n protected _tooltipComponent: TooltipComponent;\n\n constructor() {\n super(CanvasTooltipHandler.type);\n }\n\n onAdd(service: IComponentPluginService<any>): void {\n super.onAdd(service);\n this._tooltipCanvasId = (this._chartOption.modeParams as any)?.tooltipCanvasId;\n }\n\n private _initTooltipComponent(stage: Stage) {\n const layer = this._getLayer(stage);\n this._tooltipComponent = new TooltipComponent({\n autoCalculatePosition: false,\n autoMeasure: false\n });\n layer.add(this._tooltipComponent as unknown as INode);\n }\n\n private _getLayer(stage: Stage) {\n if (this._layer) {\n return this._layer;\n }\n\n this._layer = stage.createLayer(this._tooltipCanvasId);\n\n // 需要关闭 layer 对应的 canvas 的事件\n const layerCanvas = this._layer.layerHandler.canvas.nativeCanvas as HTMLCanvasElement;\n // TODO:待 vrender 支持\n if (layerCanvas && layerCanvas.style) {\n layerCanvas.style.touchAction = 'none';\n layerCanvas.style.pointerEvents = 'none';\n }\n\n return this._layer;\n }\n\n protected _removeTooltip() {\n if (this._layer) {\n this._layer.removeAllChild();\n // this._layer.render();\n }\n this._attributes = null;\n }\n\n protected _updateTooltip(visible: boolean, params: TooltipHandlerParams) {\n this._visible = visible;\n\n const stage = this._compiler.getStage();\n if (!stage) {\n return;\n }\n\n if (!visible) {\n if (this._tooltipComponent && this._tooltipComponent.attribute.visible) {\n this._tooltipComponent.hideAll();\n this._tooltipComponent.setAttributes({\n visibleAll: false\n });\n }\n return;\n }\n\n if (!this._tooltipComponent) {\n this._initTooltipComponent(stage);\n }\n\n const { activeTooltipSpec } = params;\n const pos = activeTooltipSpec.position;\n if (!params.changePositionOnly) {\n this._tooltipComponent.setAttributes({\n ...this._attributes,\n ...pos\n });\n } else if (isValid(pos)) {\n this._tooltipComponent.setAttributes(pos);\n }\n\n if (!this._tooltipComponent.attribute.visible) {\n this._tooltipComponent.showAll();\n this._tooltipComponent.setAttributes({\n visibleAll: true\n });\n }\n }\n\n isTooltipShown() {\n return this._tooltipComponent?.attribute.visibleAll;\n }\n\n release() {\n super.release();\n this._layer?.release();\n }\n}\n\nexport const registerCanvasTooltipHandler = () => {\n registerComponentPlugin(CanvasTooltipHandler);\n};\n"]}
|
|
@@ -27,6 +27,5 @@ export declare class DomTooltipHandler extends BaseTooltipHandler {
|
|
|
27
27
|
isTooltipShown(): boolean;
|
|
28
28
|
reInit(): void;
|
|
29
29
|
protected _updatePosition({ x, y }: ITooltipPositionActual): void;
|
|
30
|
-
protected _initEvent(el: HTMLElement): void;
|
|
31
30
|
}
|
|
32
31
|
export declare const registerDomTooltipHandler: () => void;
|