@visactor/vchart 1.7.1-alpha.0 → 1.7.2
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 +285 -171
- package/build/index.min.js +1 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/cjs/chart/base-chart.d.ts +2 -5
- package/cjs/chart/base-chart.js +10 -52
- package/cjs/chart/base-chart.js.map +1 -1
- package/cjs/chart/index.js +1 -2
- package/cjs/chart/interface/chart.d.ts +10 -4
- package/cjs/chart/interface/chart.js.map +1 -1
- package/cjs/chart/interface/common.d.ts +1 -1
- package/cjs/chart/interface/common.js.map +1 -1
- package/cjs/chart/sequence/sequence.js +1 -2
- package/cjs/chart/sequence/sequence.js.map +1 -1
- package/cjs/compile/compiler.js +2 -1
- package/cjs/compile/mark/compilable-mark.js +6 -9
- package/cjs/compile/mark/compilable-mark.js.map +1 -1
- package/cjs/component/axis/base-axis.d.ts +2 -1
- package/cjs/component/axis/base-axis.js +5 -1
- package/cjs/component/axis/base-axis.js.map +1 -1
- package/cjs/component/axis/cartesian/axis.d.ts +1 -1
- package/cjs/component/axis/cartesian/axis.js +2 -3
- package/cjs/component/axis/cartesian/axis.js.map +1 -1
- package/cjs/component/base/base-component.d.ts +2 -7
- package/cjs/component/base/base-component.js +4 -4
- package/cjs/component/base/base-component.js.map +1 -1
- package/cjs/component/brush/brush.d.ts +1 -1
- package/cjs/component/brush/brush.js +1 -1
- package/cjs/component/brush/brush.js.map +1 -1
- package/cjs/component/crosshair/cartesian.d.ts +1 -1
- package/cjs/component/crosshair/cartesian.js +1 -1
- package/cjs/component/crosshair/cartesian.js.map +1 -1
- package/cjs/component/crosshair/polar.d.ts +1 -1
- package/cjs/component/crosshair/polar.js +1 -1
- package/cjs/component/crosshair/polar.js.map +1 -1
- package/cjs/component/custom-mark/custom-mark.d.ts +1 -1
- package/cjs/component/custom-mark/custom-mark.js +1 -1
- package/cjs/component/custom-mark/custom-mark.js.map +1 -1
- package/cjs/component/data-zoom/data-filter-base-component.d.ts +1 -1
- package/cjs/component/data-zoom/data-filter-base-component.js +1 -1
- 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 -1
- package/cjs/component/data-zoom/data-zoom/data-zoom.js +1 -1
- package/cjs/component/data-zoom/data-zoom/data-zoom.js.map +1 -1
- package/cjs/component/data-zoom/scroll-bar/scroll-bar.d.ts +1 -1
- package/cjs/component/data-zoom/scroll-bar/scroll-bar.js +1 -1
- package/cjs/component/data-zoom/scroll-bar/scroll-bar.js.map +1 -1
- package/cjs/component/geo/geo-coordinate.d.ts +1 -1
- package/cjs/component/geo/geo-coordinate.js +1 -1
- package/cjs/component/geo/geo-coordinate.js.map +1 -1
- package/cjs/component/indicator/indicator.d.ts +1 -1
- package/cjs/component/indicator/indicator.js +1 -1
- package/cjs/component/indicator/indicator.js.map +1 -1
- package/cjs/component/label/base-label.d.ts +1 -1
- package/cjs/component/label/base-label.js +1 -1
- package/cjs/component/label/base-label.js.map +1 -1
- package/cjs/component/label/label.d.ts +1 -0
- package/cjs/component/label/label.js +7 -0
- package/cjs/component/label/label.js.map +1 -1
- package/cjs/component/label/totalLabel.d.ts +1 -0
- package/cjs/component/label/totalLabel.js +7 -0
- package/cjs/component/label/totalLabel.js.map +1 -1
- package/cjs/component/legend/base-legend.d.ts +1 -1
- package/cjs/component/legend/base-legend.js +1 -1
- package/cjs/component/legend/base-legend.js.map +1 -1
- package/cjs/component/map-label/component.d.ts +1 -1
- package/cjs/component/map-label/component.js +2 -2
- package/cjs/component/map-label/component.js.map +1 -1
- package/cjs/component/marker/base-marker.d.ts +1 -1
- package/cjs/component/marker/base-marker.js +1 -1
- package/cjs/component/marker/base-marker.js.map +1 -1
- package/cjs/component/player/player.d.ts +1 -1
- package/cjs/component/player/player.js +1 -1
- package/cjs/component/player/player.js.map +1 -1
- package/cjs/component/title/title.d.ts +1 -1
- package/cjs/component/title/title.js +1 -1
- package/cjs/component/title/title.js.map +1 -1
- package/cjs/component/tooltip/handler/base.d.ts +15 -1
- package/cjs/component/tooltip/handler/base.js +84 -7
- package/cjs/component/tooltip/handler/base.js.map +1 -1
- package/cjs/component/tooltip/tooltip.d.ts +1 -1
- package/cjs/component/tooltip/tooltip.js +6 -5
- 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.js +4 -4
- package/cjs/core/vchart.js.map +1 -1
- package/cjs/mark/base/base-mark.js +2 -5
- package/cjs/mark/base/base-mark.js.map +1 -1
- package/cjs/model/base-model.d.ts +1 -1
- package/cjs/model/base-model.js +2 -34
- package/cjs/model/base-model.js.map +1 -1
- package/cjs/model/interface.d.ts +3 -2
- package/cjs/model/interface.js.map +1 -1
- package/cjs/series/base/base-series.js +14 -10
- package/cjs/series/base/base-series.js.map +1 -1
- package/cjs/series/gauge/gauge-pointer.d.ts +2 -1
- package/cjs/series/gauge/gauge-pointer.js +16 -9
- package/cjs/series/gauge/gauge-pointer.js.map +1 -1
- package/cjs/series/gauge/gauge.js +13 -1
- package/cjs/series/gauge/gauge.js.map +1 -1
- package/cjs/series/gauge/interface.d.ts +2 -0
- package/cjs/series/gauge/interface.js.map +1 -1
- package/cjs/series/pie/pie.d.ts +1 -0
- package/cjs/series/pie/pie.js +12 -0
- package/cjs/series/pie/pie.js.map +1 -1
- package/cjs/util/space.d.ts +1 -0
- package/cjs/util/space.js +10 -3
- package/cjs/util/space.js.map +1 -1
- package/esm/chart/base-chart.d.ts +2 -5
- package/esm/chart/base-chart.js +10 -52
- package/esm/chart/base-chart.js.map +1 -1
- package/esm/chart/index.js +1 -2
- package/esm/chart/interface/chart.d.ts +10 -4
- package/esm/chart/interface/chart.js.map +1 -1
- package/esm/chart/interface/common.d.ts +1 -1
- package/esm/chart/interface/common.js.map +1 -1
- package/esm/chart/sequence/sequence.js +1 -2
- package/esm/chart/sequence/sequence.js.map +1 -1
- package/esm/compile/compiler.js +2 -1
- package/esm/compile/mark/compilable-mark.js +6 -10
- package/esm/compile/mark/compilable-mark.js.map +1 -1
- package/esm/component/axis/base-axis.d.ts +2 -1
- package/esm/component/axis/base-axis.js +5 -1
- package/esm/component/axis/base-axis.js.map +1 -1
- package/esm/component/axis/cartesian/axis.d.ts +1 -1
- package/esm/component/axis/cartesian/axis.js +2 -3
- package/esm/component/axis/cartesian/axis.js.map +1 -1
- package/esm/component/base/base-component.d.ts +2 -7
- package/esm/component/base/base-component.js +4 -4
- package/esm/component/base/base-component.js.map +1 -1
- package/esm/component/brush/brush.d.ts +1 -1
- package/esm/component/brush/brush.js +1 -1
- package/esm/component/brush/brush.js.map +1 -1
- package/esm/component/crosshair/cartesian.d.ts +1 -1
- package/esm/component/crosshair/cartesian.js +1 -1
- package/esm/component/crosshair/cartesian.js.map +1 -1
- package/esm/component/crosshair/polar.d.ts +1 -1
- package/esm/component/crosshair/polar.js +1 -1
- package/esm/component/crosshair/polar.js.map +1 -1
- package/esm/component/custom-mark/custom-mark.d.ts +1 -1
- package/esm/component/custom-mark/custom-mark.js +1 -1
- package/esm/component/custom-mark/custom-mark.js.map +1 -1
- package/esm/component/data-zoom/data-filter-base-component.d.ts +1 -1
- package/esm/component/data-zoom/data-filter-base-component.js +1 -1
- 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 -1
- package/esm/component/data-zoom/data-zoom/data-zoom.js +1 -1
- package/esm/component/data-zoom/data-zoom/data-zoom.js.map +1 -1
- package/esm/component/data-zoom/scroll-bar/scroll-bar.d.ts +1 -1
- package/esm/component/data-zoom/scroll-bar/scroll-bar.js +1 -1
- package/esm/component/data-zoom/scroll-bar/scroll-bar.js.map +1 -1
- package/esm/component/geo/geo-coordinate.d.ts +1 -1
- package/esm/component/geo/geo-coordinate.js +1 -1
- package/esm/component/geo/geo-coordinate.js.map +1 -1
- package/esm/component/indicator/indicator.d.ts +1 -1
- package/esm/component/indicator/indicator.js +1 -1
- package/esm/component/indicator/indicator.js.map +1 -1
- package/esm/component/label/base-label.d.ts +1 -1
- package/esm/component/label/base-label.js +1 -1
- package/esm/component/label/base-label.js.map +1 -1
- package/esm/component/label/label.d.ts +1 -0
- package/esm/component/label/label.js +7 -0
- package/esm/component/label/label.js.map +1 -1
- package/esm/component/label/totalLabel.d.ts +1 -0
- package/esm/component/label/totalLabel.js +7 -0
- package/esm/component/label/totalLabel.js.map +1 -1
- package/esm/component/legend/base-legend.d.ts +1 -1
- package/esm/component/legend/base-legend.js +1 -1
- package/esm/component/legend/base-legend.js.map +1 -1
- package/esm/component/map-label/component.d.ts +1 -1
- package/esm/component/map-label/component.js +2 -2
- package/esm/component/map-label/component.js.map +1 -1
- package/esm/component/marker/base-marker.d.ts +1 -1
- package/esm/component/marker/base-marker.js +1 -1
- package/esm/component/marker/base-marker.js.map +1 -1
- package/esm/component/player/player.d.ts +1 -1
- package/esm/component/player/player.js +1 -1
- package/esm/component/player/player.js.map +1 -1
- package/esm/component/title/title.d.ts +1 -1
- package/esm/component/title/title.js +1 -1
- package/esm/component/title/title.js.map +1 -1
- package/esm/component/tooltip/handler/base.d.ts +15 -1
- package/esm/component/tooltip/handler/base.js +83 -6
- package/esm/component/tooltip/handler/base.js.map +1 -1
- package/esm/component/tooltip/tooltip.d.ts +1 -1
- package/esm/component/tooltip/tooltip.js +5 -5
- 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.js +4 -4
- package/esm/core/vchart.js.map +1 -1
- package/esm/mark/base/base-mark.js +1 -4
- package/esm/mark/base/base-mark.js.map +1 -1
- package/esm/model/base-model.d.ts +1 -1
- package/esm/model/base-model.js +2 -34
- package/esm/model/base-model.js.map +1 -1
- package/esm/model/interface.d.ts +3 -2
- package/esm/model/interface.js.map +1 -1
- package/esm/series/base/base-series.js +14 -10
- package/esm/series/base/base-series.js.map +1 -1
- package/esm/series/gauge/gauge-pointer.d.ts +2 -1
- package/esm/series/gauge/gauge-pointer.js +16 -9
- package/esm/series/gauge/gauge-pointer.js.map +1 -1
- package/esm/series/gauge/gauge.js +13 -1
- package/esm/series/gauge/gauge.js.map +1 -1
- package/esm/series/gauge/interface.d.ts +2 -0
- package/esm/series/gauge/interface.js.map +1 -1
- package/esm/series/pie/pie.d.ts +1 -0
- package/esm/series/pie/pie.js +12 -0
- package/esm/series/pie/pie.js.map +1 -1
- package/esm/util/space.d.ts +1 -0
- package/esm/util/space.js +7 -0
- package/esm/util/space.js.map +1 -1
- package/package.json +11 -11
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: !0
|
|
5
5
|
}), exports.BaseTooltipHandler = void 0;
|
|
6
6
|
|
|
7
|
-
const base_1 = require("../../../constant/base"), constants_1 = require("./constants"), position_1 = require("../../../typings/tooltip/position"), env_1 = require("../../../util/env"), common_1 = require("./utils/common"), position_2 = require("./utils/position"), compose_1 = require("./utils/compose"), get_spec_1 = require("./utils/get-spec"), common_2 = require("../interface/common"), vutils_1 = require("@visactor/vutils"), attribute_1 = require("./utils/attribute");
|
|
7
|
+
const base_1 = require("../../../constant/base"), constants_1 = require("./constants"), position_1 = require("../../../typings/tooltip/position"), env_1 = require("../../../util/env"), common_1 = require("./utils/common"), position_2 = require("./utils/position"), compose_1 = require("./utils/compose"), get_spec_1 = require("./utils/get-spec"), common_2 = require("../interface/common"), vutils_1 = require("@visactor/vutils"), attribute_1 = require("./utils/attribute"), util_1 = require("../../../util");
|
|
8
8
|
|
|
9
9
|
class BaseTooltipHandler {
|
|
10
10
|
get id() {
|
|
@@ -19,13 +19,12 @@ class BaseTooltipHandler {
|
|
|
19
19
|
var _a;
|
|
20
20
|
let changePositionOnly = !!params.changePositionOnly;
|
|
21
21
|
return params.changePositionOnly && (null === (_a = this._cacheActualTooltip) || void 0 === _a ? void 0 : _a.activeType) === activeType || (changePositionOnly = !1,
|
|
22
|
-
this.
|
|
22
|
+
this._clearCacheOfContent()), changePositionOnly && this._cacheViewSpec && this._cacheActualTooltip ? this.changeTooltipPosition(changePositionOnly, data, params) : this.changeTooltip(!0, params, changePositionOnly, activeType, data);
|
|
23
23
|
}, this._changeTooltip = (visible, params, changePositionOnly, activeType, data) => {
|
|
24
24
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
|
|
25
25
|
const tooltipSpec = this._component.getSpec();
|
|
26
26
|
if (this._isReleased || !tooltipSpec) return common_2.TooltipResult.failed;
|
|
27
|
-
if (!visible) return this.
|
|
28
|
-
tooltipSpec.handler ? null !== (_c = null === (_b = (_a = tooltipSpec.handler).hideTooltip) || void 0 === _b ? void 0 : _b.call(_a, params)) && void 0 !== _c ? _c : common_2.TooltipResult.success : (this._updateTooltip(!1, params),
|
|
27
|
+
if (!visible) return this._clearAllCache(), tooltipSpec.handler ? null !== (_c = null === (_b = (_a = tooltipSpec.handler).hideTooltip) || void 0 === _b ? void 0 : _b.call(_a, params)) && void 0 !== _c ? _c : common_2.TooltipResult.success : (this._updateTooltip(!1, params),
|
|
29
28
|
common_2.TooltipResult.success);
|
|
30
29
|
if ((0, vutils_1.isNil)(activeType) || (0, vutils_1.isNil)(data)) return common_2.TooltipResult.failed;
|
|
31
30
|
let spec;
|
|
@@ -47,6 +46,14 @@ class BaseTooltipHandler {
|
|
|
47
46
|
if (this._isReleased) return common_2.TooltipResult.failed;
|
|
48
47
|
const event = params.event, spec = this._cacheViewSpec, actualTooltip = this._cacheActualTooltip;
|
|
49
48
|
if (!spec || !actualTooltip) return common_2.TooltipResult.failed;
|
|
49
|
+
if (spec.enterable) {
|
|
50
|
+
if (!this._isPointerEscaped && this._isPointerMovingToTooltip(params)) return this._isTooltipPaused || (this._isTooltipPaused = !0,
|
|
51
|
+
this._cachePointerTimer = setTimeout((() => {
|
|
52
|
+
this._isPointerEscaped = !0;
|
|
53
|
+
}), 300)), common_2.TooltipResult.success;
|
|
54
|
+
this._isTooltipPaused = !1, this._isPointerEscaped = !1, clearTimeout(this._cachePointerTimer),
|
|
55
|
+
this._cachePointerPosition = this._getPointerPositionRelativeToTooltipParent(params);
|
|
56
|
+
}
|
|
50
57
|
const activeType = actualTooltip.activeType;
|
|
51
58
|
if (spec.handler) return null !== (_c = null === (_b = (_a = spec.handler).showTooltip) || void 0 === _b ? void 0 : _b.call(_a, activeType, data, params)) && void 0 !== _c ? _c : common_2.TooltipResult.success;
|
|
52
59
|
const pattern = spec[activeType];
|
|
@@ -73,7 +80,7 @@ class BaseTooltipHandler {
|
|
|
73
80
|
x: 1 / 0,
|
|
74
81
|
y: 1 / 0
|
|
75
82
|
}, {offsetX: offsetX, offsetY: offsetY} = this._option, tooltipSpec = this._cacheViewSpec;
|
|
76
|
-
if (!tooltipSpec) return invalidPosition;
|
|
83
|
+
if (!tooltipSpec) return this._cacheTooltipPosition = void 0, invalidPosition;
|
|
77
84
|
const {activeType: activeType, data: data} = actualTooltip, pattern = tooltipSpec[activeType], position = (0,
|
|
78
85
|
common_1.getTooltipPatternValue)(pattern.position, data, params), positionMode = (0,
|
|
79
86
|
common_1.getTooltipPatternValue)(pattern.positionMode, data, params), tooltipParentElement = this._getParentElement(tooltipSpec), {width: tooltipBoxWidth = 0, height: tooltipBoxHeight = 0} = null != tooltipBoxSize ? tooltipBoxSize : {}, isCanvas = "canvas" === tooltipSpec.renderMode, canvasRect = null === (_a = null == params ? void 0 : params.chart) || void 0 === _a ? void 0 : _a.getCanvasRect(), canvasWidth = null !== (_b = null == canvasRect ? void 0 : canvasRect.width) && void 0 !== _b ? _b : base_1.DEFAULT_CHART_WIDTH, canvasHeight = null !== (_c = null == canvasRect ? void 0 : canvasRect.height) && void 0 !== _c ? _c : base_1.DEFAULT_CHART_HEIGHT;
|
|
@@ -218,10 +225,14 @@ class BaseTooltipHandler {
|
|
|
218
225
|
case "bottom":
|
|
219
226
|
detectBottomFirst(), detectTopLast();
|
|
220
227
|
}
|
|
221
|
-
|
|
228
|
+
const result = {
|
|
222
229
|
x: x,
|
|
223
230
|
y: y
|
|
224
231
|
};
|
|
232
|
+
return this._cacheTooltipPosition = result, this._cacheTooltipSize = {
|
|
233
|
+
width: tooltipBoxWidth,
|
|
234
|
+
height: tooltipBoxHeight
|
|
235
|
+
}, result;
|
|
225
236
|
}, this._component = component, this._chartOption = component.getOption(), this._env = this._chartOption.mode,
|
|
226
237
|
this._chartContainer = this._chartOption.globalInstance.getContainer(), this._compiler = component.getCompiler(),
|
|
227
238
|
this._id = tooltipId, this._initFromSpec();
|
|
@@ -231,11 +242,22 @@ class BaseTooltipHandler {
|
|
|
231
242
|
}
|
|
232
243
|
release() {
|
|
233
244
|
var _a, _b, _c;
|
|
234
|
-
this.
|
|
245
|
+
this._clearAllCache();
|
|
235
246
|
const spec = null !== (_a = this._component.getSpec()) && void 0 !== _a ? _a : {};
|
|
236
247
|
spec.handler ? null === (_c = (_b = spec.handler).release) || void 0 === _c || _c.call(_b) : (this._removeTooltip(),
|
|
237
248
|
this._isReleased = !0);
|
|
238
249
|
}
|
|
250
|
+
_clearAllCache() {
|
|
251
|
+
this._clearCacheOfContent(), this._clearCacheOfPosition();
|
|
252
|
+
}
|
|
253
|
+
_clearCacheOfContent() {
|
|
254
|
+
this._cacheViewSpec = void 0, this._cacheActualTooltip = void 0;
|
|
255
|
+
}
|
|
256
|
+
_clearCacheOfPosition() {
|
|
257
|
+
this._isTooltipPaused = !1, this._isPointerEscaped = !1, clearTimeout(this._cachePointerTimer),
|
|
258
|
+
this._cachePointerTimer = -1, this._cachePointerPosition = void 0, this._cacheTooltipPosition = void 0,
|
|
259
|
+
this._cacheTooltipSize = void 0;
|
|
260
|
+
}
|
|
239
261
|
_throttle(callback) {
|
|
240
262
|
const tooltipSpec = this._component.getSpec();
|
|
241
263
|
let wait;
|
|
@@ -261,6 +283,61 @@ class BaseTooltipHandler {
|
|
|
261
283
|
height: null === (_f = null === (_e = this._attributes) || void 0 === _e ? void 0 : _e.panel) || void 0 === _f ? void 0 : _f.height
|
|
262
284
|
};
|
|
263
285
|
}
|
|
286
|
+
_getPointerPositionRelativeToTooltipParent(params) {
|
|
287
|
+
var _a, _b;
|
|
288
|
+
let {canvasX: x, canvasY: y} = params.event;
|
|
289
|
+
const invalidPosition = {
|
|
290
|
+
x: 1 / 0,
|
|
291
|
+
y: 1 / 0
|
|
292
|
+
}, tooltipSpec = this._cacheViewSpec, isCanvas = "canvas" === tooltipSpec.renderMode, tooltipParentElement = this._getParentElement(tooltipSpec);
|
|
293
|
+
let relativePosOffset = {
|
|
294
|
+
x: 0,
|
|
295
|
+
y: 0
|
|
296
|
+
}, tooltipParentElementRect = {
|
|
297
|
+
x: 0,
|
|
298
|
+
y: 0
|
|
299
|
+
}, chartElementScale = 1, tooltipParentElementScale = 1;
|
|
300
|
+
if ((0, env_1.isTrueBrowser)(this._env) && !tooltipSpec.confine && !isCanvas) {
|
|
301
|
+
tooltipParentElementRect = null !== (_a = null == tooltipParentElement ? void 0 : tooltipParentElement.getBoundingClientRect()) && void 0 !== _a ? _a : invalidPosition;
|
|
302
|
+
const chartElement = null !== (_b = this._compiler.getCanvas()) && void 0 !== _b ? _b : this._chartContainer, chartElementRect = null == chartElement ? void 0 : chartElement.getBoundingClientRect();
|
|
303
|
+
relativePosOffset = {
|
|
304
|
+
x: chartElementRect.x - tooltipParentElementRect.x,
|
|
305
|
+
y: chartElementRect.y - tooltipParentElementRect.y
|
|
306
|
+
}, chartElementScale = (0, common_1.getScale)(chartElement, chartElementRect), tooltipParentElementScale = (0,
|
|
307
|
+
common_1.getScale)(tooltipParentElement, tooltipParentElementRect);
|
|
308
|
+
}
|
|
309
|
+
return x *= chartElementScale, y *= chartElementScale, (0, env_1.isTrueBrowser)(this._env) && (x += relativePosOffset.x,
|
|
310
|
+
y += relativePosOffset.y), x /= tooltipParentElementScale, y /= tooltipParentElementScale,
|
|
311
|
+
{
|
|
312
|
+
x: x,
|
|
313
|
+
y: y
|
|
314
|
+
};
|
|
315
|
+
}
|
|
316
|
+
_isPointerMovingToTooltip(params) {
|
|
317
|
+
if (!this._cacheTooltipPosition || !this._cacheTooltipSize || !this._cachePointerPosition) return !1;
|
|
318
|
+
const {width: tooltipWidth, height: tooltipHeight} = this._cacheTooltipSize, {x: tooltipX = 0, y: tooltipY} = this._cacheTooltipPosition, pos = this._getPointerPositionRelativeToTooltipParent(params);
|
|
319
|
+
if ((0, util_1.isPointInRect)(pos, {
|
|
320
|
+
x: tooltipX,
|
|
321
|
+
y: tooltipY,
|
|
322
|
+
width: tooltipWidth,
|
|
323
|
+
height: tooltipHeight
|
|
324
|
+
})) return !0;
|
|
325
|
+
const a = {
|
|
326
|
+
x: tooltipX,
|
|
327
|
+
y: tooltipY
|
|
328
|
+
}, b = {
|
|
329
|
+
x: a.x + tooltipWidth,
|
|
330
|
+
y: a.y
|
|
331
|
+
}, c = {
|
|
332
|
+
x: a.x,
|
|
333
|
+
y: a.y + tooltipHeight
|
|
334
|
+
}, d = {
|
|
335
|
+
x: b.x,
|
|
336
|
+
y: c.y
|
|
337
|
+
}, oldPos = this._cachePointerPosition;
|
|
338
|
+
return (0, util_1.isPointInTriangle)(pos, oldPos, a, b) || (0, util_1.isPointInTriangle)(pos, oldPos, c, d) || (0,
|
|
339
|
+
util_1.isPointInTriangle)(pos, oldPos, a, d) || (0, util_1.isPointInTriangle)(pos, oldPos, b, c);
|
|
340
|
+
}
|
|
264
341
|
_getParentElement(spec) {
|
|
265
342
|
return spec.parentElement;
|
|
266
343
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/component/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 } from '../../../typings';\n// eslint-disable-next-line no-duplicate-imports\nimport { TooltipPositionMode } from '../../../typings/tooltip/position';\n// eslint-disable-next-line no-duplicate-imports\nimport { isTrueBrowser } from '../../../util/env';\nimport type {\n TooltipData,\n IToolTipActual,\n TooltipActiveType,\n ITooltipHandler,\n ITooltipPattern,\n ITooltipPositionActual,\n ITooltipPositionPattern\n} from '../../../typings/tooltip';\n// eslint-disable-next-line no-duplicate-imports\nimport type { TooltipFixedPosition } from '../../../typings/tooltip';\nimport type { BaseEventParams } from '../../../event/interface';\nimport { getTooltipPatternValue, getScale } from './utils/common';\nimport { getActualTooltipPositionValue, getHorizontalPositionType, getVerticalPositionType } from './utils/position';\nimport { getShowContent } from './utils/compose';\nimport { getTooltipSpecForShow } from './utils/get-spec';\nimport type { Tooltip, TooltipActualTitleContent } from '../tooltip';\nimport type { ISeries } from '../../../series/interface';\nimport type { ITooltipSpec, TooltipHandlerParams } from '../interface';\n// eslint-disable-next-line no-duplicate-imports\nimport { TooltipResult } from '../interface/common';\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 } from '@visactor/vutils';\nimport type { IElement } from '@visactor/vgrammar-core';\nimport type { ILayoutModel, IModel } from '../../../model/interface';\nimport type { Compiler } from '../../../compile/compiler';\nimport type { IContainerSize, TooltipAttributes } from '@visactor/vrender-components';\nimport { getTooltipAttributes } from './utils/attribute';\nimport type { DimensionEventParams } from '../../../event/events/dimension/interface';\nimport type { IChartOption } from '../../../chart/interface';\n\ntype ChangeTooltipFunc = (\n visible: boolean,\n params: TooltipHandlerParams,\n changePositionOnly?: boolean,\n activeType?: TooltipActiveType,\n data?: TooltipData\n) => TooltipResult;\n\ntype ChangeTooltipPositionFunc = (\n changePositionOnly: boolean,\n data: TooltipData,\n params: TooltipHandlerParams\n) => TooltipResult;\n\n/**\n * The tooltip handler class.\n */\nexport abstract class BaseTooltipHandler implements ITooltipHandler {\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 _id = '';\n public get id() {\n return this._id;\n }\n\n protected _env;\n public get env() {\n return this._env;\n }\n\n protected _component: Tooltip;\n protected _attributes?: TooltipAttributes | null = null;\n\n protected _chartContainer: Maybe<HTMLElement>;\n protected _compiler: Compiler;\n\n protected _cacheViewSpec: ITooltipSpec | undefined;\n protected _cacheActualTooltip: IToolTipActual | undefined;\n\n // tooltip 容器\n protected _container!: Maybe<IGroup | HTMLElement>;\n\n protected _isReleased: boolean = false;\n\n /**\n * Create the tooltip handler.\n */\n constructor(tooltipId: string, component: 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._id = tooltipId; // 可能有多个 tooltip\n this._initFromSpec();\n }\n\n showTooltip = (activeType: TooltipActiveType, data: TooltipData, params: TooltipHandlerParams) => {\n let changePositionOnly = !!params.changePositionOnly;\n if (!params.changePositionOnly || this._cacheActualTooltip?.activeType !== activeType) {\n changePositionOnly = false;\n this._cacheViewSpec = undefined;\n this._cacheActualTooltip = undefined;\n }\n\n if (changePositionOnly && this._cacheViewSpec && this._cacheActualTooltip) {\n return this.changeTooltipPosition(changePositionOnly, data, params);\n }\n return this.changeTooltip(true, params, changePositionOnly, activeType, data);\n };\n\n /** 改变 tooltip 内容和位置(带 throttle 版本),返回是否遇到异常 */\n protected changeTooltip: ChangeTooltipFunc;\n\n /** 改变 tooltip 内容和位置(不带 throttle 版本),返回是否遇到异常 */\n protected _changeTooltip: ChangeTooltipFunc = (\n visible: boolean,\n params: TooltipHandlerParams,\n changePositionOnly?: boolean,\n activeType?: TooltipActiveType,\n data?: TooltipData\n ) => {\n const tooltipSpec = this._component.getSpec() as ITooltipSpec;\n if (this._isReleased || !tooltipSpec) {\n return TooltipResult.failed;\n }\n\n /** 关闭 tooltip */\n if (!visible) {\n this._cacheViewSpec = undefined;\n this._cacheActualTooltip = undefined;\n\n /** 用户自定义逻辑 */\n if (tooltipSpec.handler) {\n return tooltipSpec.handler.hideTooltip?.(params) ?? TooltipResult.success;\n }\n /** 默认逻辑 */\n this._updateTooltip(false, params);\n return TooltipResult.success;\n }\n\n if (isNil(activeType) || isNil(data)) {\n return TooltipResult.failed;\n }\n\n /** spec 预处理 */\n let spec: ITooltipSpec | undefined;\n if (changePositionOnly && this._cacheViewSpec) {\n spec = this._cacheViewSpec;\n } else {\n spec = getTooltipSpecForShow(\n activeType!,\n tooltipSpec,\n (params as BaseEventParams).model as ISeries,\n (params as DimensionEventParams).dimensionInfo\n );\n this._cacheViewSpec = spec;\n }\n\n if (spec.visible === false) {\n return TooltipResult.failed;\n }\n\n /** 用户自定义逻辑 */\n if (spec.handler) {\n return spec.handler.showTooltip?.(activeType!, data!, params) ?? TooltipResult.success;\n }\n\n /** 默认逻辑 */\n const pattern = spec[activeType!] as ITooltipPattern;\n if (!pattern) {\n return TooltipResult.failed;\n }\n\n // 合成 tooltip 内容\n let actualTooltip: IToolTipActual | undefined;\n if (changePositionOnly && this._cacheActualTooltip) {\n actualTooltip = this._cacheActualTooltip;\n } else {\n actualTooltip = this._getActualTooltipContent(pattern, data!, params);\n actualTooltip.title = pattern.updateTitle?.(actualTooltip.title, data, params) ?? actualTooltip.title;\n actualTooltip.content = pattern.updateContent?.(actualTooltip.content, data, params) ?? actualTooltip.content;\n }\n\n // 判断 tooltip 是否为空\n if (isNil(actualTooltip.title?.key) && isNil(actualTooltip.title?.value) && !actualTooltip.content?.length) {\n return TooltipResult.failed;\n }\n\n this._cacheActualTooltip = actualTooltip;\n return this._changeTooltipPosition(!!changePositionOnly, data!, params);\n };\n\n /** 改变 tooltip 位置(带 throttle 版本),返回是否遇到异常 */\n protected changeTooltipPosition: ChangeTooltipPositionFunc;\n\n /** 改变 tooltip 位置(不带 throttle 版本),返回是否遇到异常 */\n protected _changeTooltipPosition: ChangeTooltipPositionFunc = (\n changePositionOnly: boolean,\n data: TooltipData,\n params: TooltipHandlerParams\n ) => {\n if (this._isReleased) {\n return TooltipResult.failed;\n }\n\n const event = params.event as MouseEvent;\n const spec = this._cacheViewSpec;\n const actualTooltip = this._cacheActualTooltip;\n if (!spec || !actualTooltip) {\n return TooltipResult.failed;\n }\n\n const activeType = actualTooltip.activeType;\n\n /** 用户自定义逻辑 */\n if (spec.handler) {\n return spec.handler.showTooltip?.(activeType, data, params) ?? TooltipResult.success;\n }\n\n /** 默认逻辑 */\n const pattern = spec[activeType];\n if (!pattern) {\n return TooltipResult.failed;\n }\n\n // 计算 tooltip 位置\n const position = this._getActualTooltipPosition(\n actualTooltip,\n params,\n this._getTooltipBoxSize(actualTooltip, changePositionOnly)\n );\n actualTooltip.position = position;\n if (pattern.updatePosition) {\n actualTooltip.position = pattern.updatePosition(actualTooltip.position, data, params);\n }\n\n // 判断 tooltip 可见性\n let tooltipVisible = pattern?.visible !== false;\n if (\n !data ||\n event.type === 'pointerout' ||\n !actualTooltip.visible ||\n (!actualTooltip.title && !actualTooltip.content)\n ) {\n tooltipVisible = false;\n }\n\n this._updateTooltip(\n tooltipVisible,\n {\n ...params,\n changePositionOnly\n },\n actualTooltip\n );\n return TooltipResult.success;\n };\n\n hideTooltip(params: TooltipHandlerParams): TooltipResult {\n return this.changeTooltip(false, params);\n }\n\n release(): void {\n this._cacheViewSpec = undefined;\n this._cacheActualTooltip = undefined;\n\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, domData?: IToolTipActual): void;\n protected abstract _removeTooltip(): void;\n\n /* -----需要子类继承的方法结束----- */\n\n protected _throttle(callback: any) {\n const tooltipSpec = this._component.getSpec();\n let wait: number;\n if (isNumber(tooltipSpec.throttleInterval)) {\n wait = tooltipSpec.throttleInterval;\n } else {\n if (tooltipSpec.renderMode !== 'html' || !tooltipSpec.transitionDuration) {\n wait = 10;\n } else {\n wait = 50;\n }\n }\n return throttle(callback, wait);\n }\n\n protected _getDefaultOption(): Options {\n const { offset } = this._component.getSpec();\n return {\n ...DEFAULT_OPTIONS,\n offsetX: offset?.x ?? DEFAULT_OPTIONS.offsetX,\n offsetY: offset?.y ?? DEFAULT_OPTIONS.offsetY\n };\n }\n\n /**\n * 计算实际的 tooltip 内容\n * @param pattern\n * @param data\n * @param event\n */\n protected _getActualTooltipContent = (\n pattern: ITooltipPattern,\n data: TooltipData,\n params: TooltipHandlerParams\n ): IToolTipActual => {\n // 可见性\n const patternVisible = getTooltipPatternValue(pattern.visible, data, params);\n\n // 数据\n let tooltipContent: TooltipActualTitleContent | null = null;\n tooltipContent = getShowContent(pattern, data, params);\n\n const actualTooltip: IToolTipActual = {\n ...tooltipContent,\n visible: isValid(tooltipContent) ? patternVisible !== false : false, // 最终展示数据为 null 则不展示\n activeType: pattern.activeType,\n data\n };\n\n return actualTooltip;\n };\n\n /**\n * 计算实际的 tooltip 位置\n */\n protected _getActualTooltipPosition = (\n actualTooltip: IToolTipActual,\n params: TooltipHandlerParams,\n tooltipBoxSize: IContainerSize | undefined\n ): ITooltipPositionActual => {\n const event = params.event as MouseEvent;\n\n const invalidPosition = {\n x: Infinity,\n y: Infinity\n };\n\n const { offsetX, offsetY } = this._option;\n const tooltipSpec = this._cacheViewSpec;\n if (!tooltipSpec) {\n return invalidPosition;\n }\n\n const { activeType, data } = actualTooltip;\n const pattern = tooltipSpec[activeType];\n const position = getTooltipPatternValue(pattern.position, data, params);\n const positionMode = getTooltipPatternValue(pattern.positionMode, data, params);\n const tooltipParentElement = this._getParentElement(tooltipSpec);\n const { width: tooltipBoxWidth = 0, height: tooltipBoxHeight = 0 } = tooltipBoxSize ?? {};\n\n const isCanvas = tooltipSpec.renderMode === 'canvas';\n const canvasRect = params?.chart?.getCanvasRect();\n const canvasWidth = canvasRect?.width ?? DEFAULT_CHART_WIDTH;\n const canvasHeight = canvasRect?.height ?? DEFAULT_CHART_HEIGHT;\n let isFixedPosition = false;\n\n const containerSize = {\n width: 0,\n height: 0\n };\n let relativePosOffset = { x: 0, y: 0 };\n let tooltipParentElementRect: IPoint | DOMRect = { x: 0, y: 0 };\n let chartElementScale = 1;\n let tooltipParentElementScale = 1;\n\n if (isTrueBrowser(this._env) && !tooltipSpec.confine) {\n // 只有在 browser 模式下才可以获取到 window 对象\n containerSize.width = window.innerWidth;\n containerSize.height = window.innerHeight;\n\n if (!isCanvas) {\n tooltipParentElementRect = tooltipParentElement?.getBoundingClientRect() ?? invalidPosition;\n const chartElement = (this._compiler.getCanvas() ?? this._chartContainer) as HTMLElement;\n const chartElementRect = chartElement?.getBoundingClientRect();\n relativePosOffset = {\n x: chartElementRect.x - tooltipParentElementRect.x,\n y: chartElementRect.y - tooltipParentElementRect.y\n };\n chartElementScale = getScale(chartElement, chartElementRect);\n tooltipParentElementScale = getScale(tooltipParentElement, tooltipParentElementRect as DOMRect);\n }\n } else {\n containerSize.width = canvasWidth;\n containerSize.height = canvasHeight;\n }\n const tooltipSizeScale = tooltipParentElementScale / chartElementScale;\n\n /* 一、计算 left、top、right、bottom */\n let left: number | undefined;\n let top: number | undefined;\n let right: number | undefined;\n let bottom: number | undefined;\n if (isObject(position)) {\n const { left: posLeft, right: posRight, top: posTop, bottom: posBottom } = position as ITooltipPositionPattern;\n left = getActualTooltipPositionValue(posLeft, event);\n top = getActualTooltipPositionValue(posTop, event);\n right = getActualTooltipPositionValue(posRight, event);\n bottom = getActualTooltipPositionValue(posBottom, event);\n } else if (\n isValid(position) &&\n positionMode !== TooltipPositionMode.pointer &&\n actualTooltip.activeType === 'mark'\n ) {\n isFixedPosition = true;\n const element = params.item as IElement;\n const model = params.model as IModel;\n const bounds = element?.getBounds() as AABBBounds;\n const startPoint = (<ILayoutModel>(<unknown>model))?.getLayoutStartPoint();\n if (bounds && startPoint) {\n let { x1, y1, x2, y2 } = bounds;\n x1 += startPoint.x;\n x2 += startPoint.x;\n y1 += startPoint.y;\n y2 += startPoint.y;\n switch (getHorizontalPositionType(position)) {\n case 'left':\n left = x1 - tooltipBoxWidth * tooltipSizeScale - offsetX;\n break;\n case 'right':\n left = x2 + offsetX;\n break;\n case 'middle':\n left = (x1 + x2) / 2 - (tooltipBoxWidth * tooltipSizeScale) / 2;\n break;\n }\n switch (getVerticalPositionType(position)) {\n case 'top':\n top = y1 - tooltipBoxHeight * tooltipSizeScale - offsetY;\n break;\n case 'bottom':\n top = y2 + offsetY;\n break;\n case 'middle':\n top = (y1 + y2) / 2 - (tooltipBoxHeight * tooltipSizeScale) / 2;\n break;\n }\n }\n }\n\n /* 二、换算成 x 和 y */\n let x: number;\n let y: number;\n\n const { canvasX, canvasY } = event as any;\n if (isValidNumber(left)) {\n x = left;\n } else if (isValidNumber(right)) {\n x = canvasWidth - tooltipBoxWidth * tooltipSizeScale - right;\n } else {\n const x0 = canvasX;\n switch (getHorizontalPositionType(position as TooltipFixedPosition, 'right')) {\n case 'middle':\n x = x0 - (tooltipBoxWidth * tooltipSizeScale) / 2;\n break;\n case 'left':\n x = x0 - tooltipBoxWidth * tooltipSizeScale - offsetX;\n break;\n case 'right':\n x = x0 + offsetX;\n break;\n }\n }\n if (isValidNumber(top)) {\n y = top;\n } else if (isValidNumber(bottom)) {\n y = canvasHeight - tooltipBoxHeight * tooltipSizeScale - bottom;\n } else {\n const y0 = canvasY;\n switch (getVerticalPositionType(position as TooltipFixedPosition, 'bottom')) {\n case 'middle':\n y = y0 - (tooltipBoxHeight * tooltipSizeScale) / 2;\n break;\n case 'top':\n y = y0 - tooltipBoxHeight * tooltipSizeScale - offsetY;\n break;\n case 'bottom':\n y = y0 + offsetY;\n break;\n }\n }\n\n x *= chartElementScale;\n y *= chartElementScale;\n if (isTrueBrowser(this._env)) {\n x += relativePosOffset.x;\n y += relativePosOffset.y;\n }\n x /= tooltipParentElementScale;\n y /= tooltipParentElementScale;\n\n /* 三、确保tooltip在视区内 */\n const { width: containerWidth, height: containerHeight } = containerSize;\n\n const isLeftOut = () => x * tooltipParentElementScale + tooltipParentElementRect.x < 0;\n const isRightOut = () =>\n (x + tooltipBoxWidth) * tooltipParentElementScale + tooltipParentElementRect.x > containerWidth;\n const isTopOut = () => y * tooltipParentElementScale + tooltipParentElementRect.y < 0;\n const isBottomOut = () =>\n (y + tooltipBoxHeight) * tooltipParentElementScale + tooltipParentElementRect.y > containerHeight;\n\n const detectLeftFirst = () => {\n if (isLeftOut()) {\n // 位置不超出视区左界\n if (isFixedPosition) {\n x = -tooltipParentElementRect.x / tooltipParentElementScale;\n } else {\n if (getHorizontalPositionType(position as TooltipFixedPosition, 'right') === 'middle') {\n x += offsetX + tooltipBoxWidth / 2;\n } else {\n x += offsetX * 2 + tooltipBoxWidth;\n }\n }\n }\n };\n const detectLeftLast = () => {\n if (isLeftOut()) {\n // 位置不超出视区左界\n x = -tooltipParentElementRect.x / tooltipParentElementScale;\n }\n };\n const detectRightFirst = () => {\n if (isRightOut()) {\n // 位置不超出视区右界\n if (isFixedPosition) {\n x = (containerWidth - tooltipParentElementRect.x) / tooltipParentElementScale - tooltipBoxWidth;\n } else {\n if (getHorizontalPositionType(position as TooltipFixedPosition, 'right') === 'middle') {\n x -= offsetX + tooltipBoxWidth / 2;\n } else {\n x -= offsetX * 2 + tooltipBoxWidth;\n }\n }\n }\n };\n const detectRightLast = () => {\n if (isRightOut()) {\n // 位置不超出视区右界\n x = (containerWidth - tooltipParentElementRect.x) / tooltipParentElementScale - tooltipBoxWidth;\n }\n };\n const detectTopFirst = () => {\n if (isTopOut()) {\n // 位置不超出视区上界\n if (isFixedPosition) {\n y = -tooltipParentElementRect.y / tooltipParentElementScale;\n } else {\n if (getVerticalPositionType(position as TooltipFixedPosition, 'bottom') === 'middle') {\n y += offsetY + tooltipBoxHeight / 2;\n } else {\n y += offsetY * 2 + tooltipBoxHeight;\n }\n }\n }\n };\n const detectTopLast = () => {\n if (isTopOut()) {\n // 位置不超出视区上界\n y = 0 - tooltipParentElementRect.y / tooltipParentElementScale;\n }\n };\n const detectBottomFirst = () => {\n if (isBottomOut()) {\n // 位置不超出视区下界\n if (isFixedPosition) {\n y = (containerHeight - tooltipParentElementRect.y) / tooltipParentElementScale - tooltipBoxHeight;\n } else {\n if (getVerticalPositionType(position as TooltipFixedPosition, 'bottom') === 'middle') {\n y -= offsetY + tooltipBoxHeight / 2;\n } else {\n y -= offsetY * 2 + tooltipBoxHeight;\n }\n }\n }\n };\n const detectBottomLast = () => {\n if (isBottomOut()) {\n // 位置不超出视区下界\n y = (containerHeight - tooltipParentElementRect.y) / tooltipParentElementScale - tooltipBoxHeight;\n }\n };\n\n // 处理左右\n switch (getHorizontalPositionType(position as TooltipFixedPosition, 'right')) {\n case 'middle':\n if (isLeftOut()) {\n detectLeftFirst();\n detectRightLast();\n } else {\n detectRightFirst();\n detectLeftLast();\n }\n break;\n case 'left':\n detectLeftFirst();\n detectRightLast();\n break;\n case 'right':\n detectRightFirst();\n detectLeftLast();\n break;\n }\n // 处理上下\n switch (getVerticalPositionType(position as TooltipFixedPosition, 'bottom')) {\n case 'middle':\n if (isTopOut()) {\n detectTopFirst();\n detectBottomLast();\n } else {\n detectBottomFirst();\n detectTopLast();\n }\n break;\n case 'top':\n detectTopFirst();\n detectBottomLast();\n break;\n case 'bottom':\n detectBottomFirst();\n detectTopLast();\n break;\n }\n\n return { x, y };\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 return {\n width: this._attributes?.panel?.width,\n height: this._attributes?.panel?.height\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/component/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 } from '../../../typings';\n// eslint-disable-next-line no-duplicate-imports\nimport { TooltipPositionMode } from '../../../typings/tooltip/position';\n// eslint-disable-next-line no-duplicate-imports\nimport { isTrueBrowser } from '../../../util/env';\nimport type {\n TooltipData,\n IToolTipActual,\n TooltipActiveType,\n ITooltipHandler,\n ITooltipPattern,\n ITooltipPositionActual,\n ITooltipPositionPattern\n} from '../../../typings/tooltip';\n// eslint-disable-next-line no-duplicate-imports\nimport type { TooltipFixedPosition } from '../../../typings/tooltip';\nimport type { BaseEventParams } from '../../../event/interface';\nimport { getTooltipPatternValue, getScale } from './utils/common';\nimport { getActualTooltipPositionValue, getHorizontalPositionType, getVerticalPositionType } from './utils/position';\nimport { getShowContent } from './utils/compose';\nimport { getTooltipSpecForShow } from './utils/get-spec';\nimport type { Tooltip, TooltipActualTitleContent } from '../tooltip';\nimport type { ISeries } from '../../../series/interface';\nimport type { ITooltipSpec, TooltipHandlerParams } from '../interface';\n// eslint-disable-next-line no-duplicate-imports\nimport { TooltipResult } from '../interface/common';\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 } from '@visactor/vutils';\nimport type { IElement } from '@visactor/vgrammar-core';\nimport type { ILayoutModel, IModel } from '../../../model/interface';\nimport type { Compiler } from '../../../compile/compiler';\nimport type { IContainerSize, TooltipAttributes } from '@visactor/vrender-components';\nimport { getTooltipAttributes } from './utils/attribute';\nimport type { DimensionEventParams } from '../../../event/events/dimension/interface';\nimport type { IChartOption } from '../../../chart/interface';\nimport { isPointInRect, isPointInTriangle } from '../../../util';\n\ntype ChangeTooltipFunc = (\n visible: boolean,\n params: TooltipHandlerParams,\n changePositionOnly?: boolean,\n activeType?: TooltipActiveType,\n data?: TooltipData\n) => TooltipResult;\n\ntype ChangeTooltipPositionFunc = (\n changePositionOnly: boolean,\n data: TooltipData,\n params: TooltipHandlerParams\n) => TooltipResult;\n\n/**\n * The tooltip handler class.\n */\nexport abstract class BaseTooltipHandler implements ITooltipHandler {\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 _id = '';\n public get id() {\n return this._id;\n }\n\n protected _env;\n public get env() {\n return this._env;\n }\n\n protected _component: Tooltip;\n protected _attributes?: TooltipAttributes | null = null;\n\n protected _chartContainer: Maybe<HTMLElement>;\n protected _compiler: Compiler;\n\n protected _cacheViewSpec: ITooltipSpec | undefined;\n protected _cacheActualTooltip: IToolTipActual | undefined;\n\n protected _isTooltipPaused: boolean;\n protected _isPointerEscaped: boolean;\n protected _cachePointerTimer: number;\n protected _cachePointerPosition: ILayoutPoint;\n protected _cacheTooltipPosition: ILayoutPoint;\n protected _cacheTooltipSize: IContainerSize;\n\n // tooltip 容器\n protected _container!: Maybe<IGroup | HTMLElement>;\n\n protected _isReleased: boolean = false;\n\n /**\n * Create the tooltip handler.\n */\n constructor(tooltipId: string, component: 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._id = tooltipId; // 可能有多个 tooltip\n this._initFromSpec();\n }\n\n showTooltip = (activeType: TooltipActiveType, data: TooltipData, params: TooltipHandlerParams) => {\n let changePositionOnly = !!params.changePositionOnly;\n if (!params.changePositionOnly || this._cacheActualTooltip?.activeType !== activeType) {\n changePositionOnly = false;\n this._clearCacheOfContent();\n }\n\n if (changePositionOnly && this._cacheViewSpec && this._cacheActualTooltip) {\n return this.changeTooltipPosition(changePositionOnly, data, params);\n }\n return this.changeTooltip(true, params, changePositionOnly, activeType, data);\n };\n\n /** 改变 tooltip 内容和位置(带 throttle 版本),返回是否遇到异常 */\n protected changeTooltip: ChangeTooltipFunc;\n\n /** 改变 tooltip 内容和位置(不带 throttle 版本),返回是否遇到异常 */\n protected _changeTooltip: ChangeTooltipFunc = (\n visible: boolean,\n params: TooltipHandlerParams,\n changePositionOnly?: boolean,\n activeType?: TooltipActiveType,\n data?: TooltipData\n ) => {\n const tooltipSpec = this._component.getSpec() as ITooltipSpec;\n if (this._isReleased || !tooltipSpec) {\n return TooltipResult.failed;\n }\n\n /** 关闭 tooltip */\n if (!visible) {\n this._clearAllCache();\n\n /** 用户自定义逻辑 */\n if (tooltipSpec.handler) {\n return tooltipSpec.handler.hideTooltip?.(params) ?? TooltipResult.success;\n }\n /** 默认逻辑 */\n this._updateTooltip(false, params);\n return TooltipResult.success;\n }\n\n if (isNil(activeType) || isNil(data)) {\n return TooltipResult.failed;\n }\n\n /** spec 预处理 */\n let spec: ITooltipSpec | undefined;\n if (changePositionOnly && this._cacheViewSpec) {\n spec = this._cacheViewSpec;\n } else {\n spec = getTooltipSpecForShow(\n activeType!,\n tooltipSpec,\n (params as BaseEventParams).model as ISeries,\n (params as DimensionEventParams).dimensionInfo\n );\n this._cacheViewSpec = spec;\n }\n\n if (spec.visible === false) {\n return TooltipResult.failed;\n }\n\n /** 用户自定义逻辑 */\n if (spec.handler) {\n return spec.handler.showTooltip?.(activeType!, data!, params) ?? TooltipResult.success;\n }\n\n /** 默认逻辑 */\n const pattern = spec[activeType!] as ITooltipPattern;\n if (!pattern) {\n return TooltipResult.failed;\n }\n\n // 合成 tooltip 内容\n let actualTooltip: IToolTipActual | undefined;\n if (changePositionOnly && this._cacheActualTooltip) {\n actualTooltip = this._cacheActualTooltip;\n } else {\n actualTooltip = this._getActualTooltipContent(pattern, data!, params);\n actualTooltip.title = pattern.updateTitle?.(actualTooltip.title, data, params) ?? actualTooltip.title;\n actualTooltip.content = pattern.updateContent?.(actualTooltip.content, data, params) ?? actualTooltip.content;\n }\n\n // 判断 tooltip 是否为空\n if (isNil(actualTooltip.title?.key) && isNil(actualTooltip.title?.value) && !actualTooltip.content?.length) {\n return TooltipResult.failed;\n }\n\n this._cacheActualTooltip = actualTooltip;\n return this._changeTooltipPosition(!!changePositionOnly, data!, params);\n };\n\n /** 改变 tooltip 位置(带 throttle 版本),返回是否遇到异常 */\n protected changeTooltipPosition: ChangeTooltipPositionFunc;\n\n /** 改变 tooltip 位置(不带 throttle 版本),返回是否遇到异常 */\n protected _changeTooltipPosition: ChangeTooltipPositionFunc = (\n changePositionOnly: boolean,\n data: TooltipData,\n params: TooltipHandlerParams\n ) => {\n if (this._isReleased) {\n return TooltipResult.failed;\n }\n\n const event = params.event as MouseEvent;\n const spec = this._cacheViewSpec;\n const actualTooltip = this._cacheActualTooltip;\n if (!spec || !actualTooltip) {\n return TooltipResult.failed;\n }\n\n if (spec.enterable) {\n if (!this._isPointerEscaped && this._isPointerMovingToTooltip(params)) {\n if (!this._isTooltipPaused) {\n this._isTooltipPaused = true;\n this._cachePointerTimer = setTimeout(() => {\n this._isPointerEscaped = true;\n }, 300) as unknown as number;\n }\n return TooltipResult.success;\n }\n this._isTooltipPaused = false;\n this._isPointerEscaped = false;\n clearTimeout(this._cachePointerTimer);\n this._cachePointerPosition = this._getPointerPositionRelativeToTooltipParent(params);\n }\n\n const activeType = actualTooltip.activeType;\n\n /** 用户自定义逻辑 */\n if (spec.handler) {\n return spec.handler.showTooltip?.(activeType, data, params) ?? TooltipResult.success;\n }\n\n /** 默认逻辑 */\n const pattern = spec[activeType];\n if (!pattern) {\n return TooltipResult.failed;\n }\n\n // 计算 tooltip 位置\n const position = this._getActualTooltipPosition(\n actualTooltip,\n params,\n this._getTooltipBoxSize(actualTooltip, changePositionOnly)\n );\n actualTooltip.position = position;\n if (pattern.updatePosition) {\n actualTooltip.position = pattern.updatePosition(actualTooltip.position, data, params);\n }\n\n // 判断 tooltip 可见性\n let tooltipVisible = pattern?.visible !== false;\n if (\n !data ||\n event.type === 'pointerout' ||\n !actualTooltip.visible ||\n (!actualTooltip.title && !actualTooltip.content)\n ) {\n tooltipVisible = false;\n }\n\n this._updateTooltip(\n tooltipVisible,\n {\n ...params,\n changePositionOnly\n },\n actualTooltip\n );\n return TooltipResult.success;\n };\n\n hideTooltip(params: TooltipHandlerParams): TooltipResult {\n return this.changeTooltip(false, params);\n }\n\n release(): void {\n this._clearAllCache();\n const spec = this._component.getSpec() ?? {};\n /** 用户自定义逻辑 */\n if (spec.handler) {\n spec.handler.release?.();\n return;\n }\n /** 默认逻辑 */\n this._removeTooltip();\n\n this._isReleased = true;\n }\n\n protected _clearAllCache() {\n this._clearCacheOfContent();\n this._clearCacheOfPosition();\n }\n\n protected _clearCacheOfContent() {\n this._cacheViewSpec = undefined;\n this._cacheActualTooltip = undefined;\n }\n\n protected _clearCacheOfPosition() {\n this._isTooltipPaused = false;\n this._isPointerEscaped = false;\n clearTimeout(this._cachePointerTimer);\n this._cachePointerTimer = -1;\n this._cachePointerPosition = undefined;\n this._cacheTooltipPosition = undefined;\n this._cacheTooltipSize = undefined;\n }\n\n /* -----需要子类继承的方法开始----- */\n\n protected abstract _updateTooltip(visible: boolean, params: TooltipHandlerParams, domData?: IToolTipActual): void;\n protected abstract _removeTooltip(): void;\n\n /* -----需要子类继承的方法结束----- */\n\n protected _throttle(callback: any) {\n const tooltipSpec = this._component.getSpec();\n let wait: number;\n if (isNumber(tooltipSpec.throttleInterval)) {\n wait = tooltipSpec.throttleInterval;\n } else {\n if (tooltipSpec.renderMode !== 'html' || !tooltipSpec.transitionDuration) {\n wait = 10;\n } else {\n wait = 50;\n }\n }\n return throttle(callback, wait);\n }\n\n protected _getDefaultOption(): Options {\n const { offset } = this._component.getSpec();\n return {\n ...DEFAULT_OPTIONS,\n offsetX: offset?.x ?? DEFAULT_OPTIONS.offsetX,\n offsetY: offset?.y ?? DEFAULT_OPTIONS.offsetY\n };\n }\n\n /**\n * 计算实际的 tooltip 内容\n * @param pattern\n * @param data\n * @param event\n */\n protected _getActualTooltipContent = (\n pattern: ITooltipPattern,\n data: TooltipData,\n params: TooltipHandlerParams\n ): IToolTipActual => {\n // 可见性\n const patternVisible = getTooltipPatternValue(pattern.visible, data, params);\n\n // 数据\n let tooltipContent: TooltipActualTitleContent | null = null;\n tooltipContent = getShowContent(pattern, data, params);\n\n const actualTooltip: IToolTipActual = {\n ...tooltipContent,\n visible: isValid(tooltipContent) ? patternVisible !== false : false, // 最终展示数据为 null 则不展示\n activeType: pattern.activeType,\n data\n };\n\n return actualTooltip;\n };\n\n /**\n * 计算实际的 tooltip 位置\n */\n protected _getActualTooltipPosition = (\n actualTooltip: IToolTipActual,\n params: TooltipHandlerParams,\n tooltipBoxSize: IContainerSize | undefined\n ): ITooltipPositionActual => {\n const event = params.event as MouseEvent;\n\n const invalidPosition = {\n x: Infinity,\n y: Infinity\n };\n\n const { offsetX, offsetY } = this._option;\n const tooltipSpec = this._cacheViewSpec;\n if (!tooltipSpec) {\n this._cacheTooltipPosition = undefined;\n return invalidPosition;\n }\n\n const { activeType, data } = actualTooltip;\n const pattern = tooltipSpec[activeType];\n const position = getTooltipPatternValue(pattern.position, data, params);\n const positionMode = getTooltipPatternValue(pattern.positionMode, data, params);\n const tooltipParentElement = this._getParentElement(tooltipSpec);\n const { width: tooltipBoxWidth = 0, height: tooltipBoxHeight = 0 } = tooltipBoxSize ?? {};\n\n const isCanvas = tooltipSpec.renderMode === 'canvas';\n const canvasRect = params?.chart?.getCanvasRect();\n const canvasWidth = canvasRect?.width ?? DEFAULT_CHART_WIDTH;\n const canvasHeight = canvasRect?.height ?? DEFAULT_CHART_HEIGHT;\n let isFixedPosition = false;\n\n const containerSize = {\n width: 0,\n height: 0\n };\n let relativePosOffset = { x: 0, y: 0 };\n let tooltipParentElementRect: IPoint | DOMRect = { x: 0, y: 0 };\n let chartElementScale = 1;\n let tooltipParentElementScale = 1;\n\n if (isTrueBrowser(this._env) && !tooltipSpec.confine) {\n // 只有在 browser 模式下才可以获取到 window 对象\n containerSize.width = window.innerWidth;\n containerSize.height = window.innerHeight;\n\n if (!isCanvas) {\n tooltipParentElementRect = tooltipParentElement?.getBoundingClientRect() ?? invalidPosition;\n const chartElement = (this._compiler.getCanvas() ?? this._chartContainer) as HTMLElement;\n const chartElementRect = chartElement?.getBoundingClientRect();\n relativePosOffset = {\n x: chartElementRect.x - tooltipParentElementRect.x,\n y: chartElementRect.y - tooltipParentElementRect.y\n };\n chartElementScale = getScale(chartElement, chartElementRect);\n tooltipParentElementScale = getScale(tooltipParentElement, tooltipParentElementRect as DOMRect);\n }\n } else {\n containerSize.width = canvasWidth;\n containerSize.height = canvasHeight;\n }\n const tooltipSizeScale = tooltipParentElementScale / chartElementScale;\n\n /* 一、计算 left、top、right、bottom */\n let left: number | undefined;\n let top: number | undefined;\n let right: number | undefined;\n let bottom: number | undefined;\n if (isObject(position)) {\n const { left: posLeft, right: posRight, top: posTop, bottom: posBottom } = position as ITooltipPositionPattern;\n left = getActualTooltipPositionValue(posLeft, event);\n top = getActualTooltipPositionValue(posTop, event);\n right = getActualTooltipPositionValue(posRight, event);\n bottom = getActualTooltipPositionValue(posBottom, event);\n } else if (\n isValid(position) &&\n positionMode !== TooltipPositionMode.pointer &&\n actualTooltip.activeType === 'mark'\n ) {\n isFixedPosition = true;\n const element = params.item as IElement;\n const model = params.model as IModel;\n const bounds = element?.getBounds() as AABBBounds;\n const startPoint = (<ILayoutModel>(<unknown>model))?.getLayoutStartPoint();\n if (bounds && startPoint) {\n let { x1, y1, x2, y2 } = bounds;\n x1 += startPoint.x;\n x2 += startPoint.x;\n y1 += startPoint.y;\n y2 += startPoint.y;\n switch (getHorizontalPositionType(position)) {\n case 'left':\n left = x1 - tooltipBoxWidth * tooltipSizeScale - offsetX;\n break;\n case 'right':\n left = x2 + offsetX;\n break;\n case 'middle':\n left = (x1 + x2) / 2 - (tooltipBoxWidth * tooltipSizeScale) / 2;\n break;\n }\n switch (getVerticalPositionType(position)) {\n case 'top':\n top = y1 - tooltipBoxHeight * tooltipSizeScale - offsetY;\n break;\n case 'bottom':\n top = y2 + offsetY;\n break;\n case 'middle':\n top = (y1 + y2) / 2 - (tooltipBoxHeight * tooltipSizeScale) / 2;\n break;\n }\n }\n }\n\n /* 二、换算成 x 和 y */\n let x: number;\n let y: number;\n\n const { canvasX, canvasY } = event as any;\n if (isValidNumber(left)) {\n x = left;\n } else if (isValidNumber(right)) {\n x = canvasWidth - tooltipBoxWidth * tooltipSizeScale - right;\n } else {\n const x0 = canvasX;\n switch (getHorizontalPositionType(position as TooltipFixedPosition, 'right')) {\n case 'middle':\n x = x0 - (tooltipBoxWidth * tooltipSizeScale) / 2;\n break;\n case 'left':\n x = x0 - tooltipBoxWidth * tooltipSizeScale - offsetX;\n break;\n case 'right':\n x = x0 + offsetX;\n break;\n }\n }\n if (isValidNumber(top)) {\n y = top;\n } else if (isValidNumber(bottom)) {\n y = canvasHeight - tooltipBoxHeight * tooltipSizeScale - bottom;\n } else {\n const y0 = canvasY;\n switch (getVerticalPositionType(position as TooltipFixedPosition, 'bottom')) {\n case 'middle':\n y = y0 - (tooltipBoxHeight * tooltipSizeScale) / 2;\n break;\n case 'top':\n y = y0 - tooltipBoxHeight * tooltipSizeScale - offsetY;\n break;\n case 'bottom':\n y = y0 + offsetY;\n break;\n }\n }\n\n x *= chartElementScale;\n y *= chartElementScale;\n if (isTrueBrowser(this._env)) {\n x += relativePosOffset.x;\n y += relativePosOffset.y;\n }\n x /= tooltipParentElementScale;\n y /= tooltipParentElementScale;\n\n /* 三、确保tooltip在视区内 */\n const { width: containerWidth, height: containerHeight } = containerSize;\n\n const isLeftOut = () => x * tooltipParentElementScale + tooltipParentElementRect.x < 0;\n const isRightOut = () =>\n (x + tooltipBoxWidth) * tooltipParentElementScale + tooltipParentElementRect.x > containerWidth;\n const isTopOut = () => y * tooltipParentElementScale + tooltipParentElementRect.y < 0;\n const isBottomOut = () =>\n (y + tooltipBoxHeight) * tooltipParentElementScale + tooltipParentElementRect.y > containerHeight;\n\n const detectLeftFirst = () => {\n if (isLeftOut()) {\n // 位置不超出视区左界\n if (isFixedPosition) {\n x = -tooltipParentElementRect.x / tooltipParentElementScale;\n } else {\n if (getHorizontalPositionType(position as TooltipFixedPosition, 'right') === 'middle') {\n x += offsetX + tooltipBoxWidth / 2;\n } else {\n x += offsetX * 2 + tooltipBoxWidth;\n }\n }\n }\n };\n const detectLeftLast = () => {\n if (isLeftOut()) {\n // 位置不超出视区左界\n x = -tooltipParentElementRect.x / tooltipParentElementScale;\n }\n };\n const detectRightFirst = () => {\n if (isRightOut()) {\n // 位置不超出视区右界\n if (isFixedPosition) {\n x = (containerWidth - tooltipParentElementRect.x) / tooltipParentElementScale - tooltipBoxWidth;\n } else {\n if (getHorizontalPositionType(position as TooltipFixedPosition, 'right') === 'middle') {\n x -= offsetX + tooltipBoxWidth / 2;\n } else {\n x -= offsetX * 2 + tooltipBoxWidth;\n }\n }\n }\n };\n const detectRightLast = () => {\n if (isRightOut()) {\n // 位置不超出视区右界\n x = (containerWidth - tooltipParentElementRect.x) / tooltipParentElementScale - tooltipBoxWidth;\n }\n };\n const detectTopFirst = () => {\n if (isTopOut()) {\n // 位置不超出视区上界\n if (isFixedPosition) {\n y = -tooltipParentElementRect.y / tooltipParentElementScale;\n } else {\n if (getVerticalPositionType(position as TooltipFixedPosition, 'bottom') === 'middle') {\n y += offsetY + tooltipBoxHeight / 2;\n } else {\n y += offsetY * 2 + tooltipBoxHeight;\n }\n }\n }\n };\n const detectTopLast = () => {\n if (isTopOut()) {\n // 位置不超出视区上界\n y = 0 - tooltipParentElementRect.y / tooltipParentElementScale;\n }\n };\n const detectBottomFirst = () => {\n if (isBottomOut()) {\n // 位置不超出视区下界\n if (isFixedPosition) {\n y = (containerHeight - tooltipParentElementRect.y) / tooltipParentElementScale - tooltipBoxHeight;\n } else {\n if (getVerticalPositionType(position as TooltipFixedPosition, 'bottom') === 'middle') {\n y -= offsetY + tooltipBoxHeight / 2;\n } else {\n y -= offsetY * 2 + tooltipBoxHeight;\n }\n }\n }\n };\n const detectBottomLast = () => {\n if (isBottomOut()) {\n // 位置不超出视区下界\n y = (containerHeight - tooltipParentElementRect.y) / tooltipParentElementScale - tooltipBoxHeight;\n }\n };\n\n // 处理左右\n switch (getHorizontalPositionType(position as TooltipFixedPosition, 'right')) {\n case 'middle':\n if (isLeftOut()) {\n detectLeftFirst();\n detectRightLast();\n } else {\n detectRightFirst();\n detectLeftLast();\n }\n break;\n case 'left':\n detectLeftFirst();\n detectRightLast();\n break;\n case 'right':\n detectRightFirst();\n detectLeftLast();\n break;\n }\n // 处理上下\n switch (getVerticalPositionType(position as TooltipFixedPosition, 'bottom')) {\n case 'middle':\n if (isTopOut()) {\n detectTopFirst();\n detectBottomLast();\n } else {\n detectBottomFirst();\n detectTopLast();\n }\n break;\n case 'top':\n detectTopFirst();\n detectBottomLast();\n break;\n case 'bottom':\n detectBottomFirst();\n detectTopLast();\n break;\n }\n\n const result = { x, y };\n this._cacheTooltipPosition = result;\n this._cacheTooltipSize = { width: tooltipBoxWidth, height: tooltipBoxHeight };\n return result;\n };\n\n // 计算 tooltip 内容区域的宽高,并缓存结果\n protected _getTooltipBoxSize(actualTooltip: IToolTipActual, changePositionOnly: boolean): IContainerSize | undefined {\n if (!changePositionOnly || isNil(this._attributes)) {\n const chartTheme = this._chartOption?.getTheme() ?? {};\n this._attributes = getTooltipAttributes(actualTooltip, this._component.getSpec(), chartTheme);\n }\n return {\n width: this._attributes?.panel?.width,\n height: this._attributes?.panel?.height\n };\n }\n\n protected _getPointerPositionRelativeToTooltipParent(params: TooltipHandlerParams) {\n let { canvasX: x, canvasY: y } = params.event;\n\n const invalidPosition = {\n x: Infinity,\n y: Infinity\n };\n\n const tooltipSpec = this._cacheViewSpec;\n const isCanvas = tooltipSpec.renderMode === 'canvas';\n const tooltipParentElement = this._getParentElement(tooltipSpec);\n\n let relativePosOffset = { x: 0, y: 0 };\n let tooltipParentElementRect: IPoint | DOMRect = { x: 0, y: 0 };\n let chartElementScale = 1;\n let tooltipParentElementScale = 1;\n\n if (isTrueBrowser(this._env) && !tooltipSpec.confine) {\n if (!isCanvas) {\n tooltipParentElementRect = tooltipParentElement?.getBoundingClientRect() ?? invalidPosition;\n const chartElement = (this._compiler.getCanvas() ?? this._chartContainer) as HTMLElement;\n const chartElementRect = chartElement?.getBoundingClientRect();\n relativePosOffset = {\n x: chartElementRect.x - tooltipParentElementRect.x,\n y: chartElementRect.y - tooltipParentElementRect.y\n };\n chartElementScale = getScale(chartElement, chartElementRect);\n tooltipParentElementScale = getScale(tooltipParentElement, tooltipParentElementRect as DOMRect);\n }\n }\n\n x *= chartElementScale;\n y *= chartElementScale;\n if (isTrueBrowser(this._env)) {\n x += relativePosOffset.x;\n y += relativePosOffset.y;\n }\n x /= tooltipParentElementScale;\n y /= tooltipParentElementScale;\n return { x, y };\n }\n\n protected _isPointerMovingToTooltip(params: TooltipHandlerParams) {\n if (!this._cacheTooltipPosition || !this._cacheTooltipSize || !this._cachePointerPosition) {\n return false;\n }\n const { width: tooltipWidth, height: tooltipHeight } = this._cacheTooltipSize;\n const { x: tooltipX = 0, y: tooltipY } = this._cacheTooltipPosition;\n\n const pos = this._getPointerPositionRelativeToTooltipParent(params);\n\n if (\n isPointInRect(pos, {\n x: tooltipX,\n y: tooltipY,\n width: tooltipWidth,\n height: tooltipHeight\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 return (\n isPointInTriangle(pos, oldPos, a, b) ||\n isPointInTriangle(pos, oldPos, c, d) ||\n isPointInTriangle(pos, oldPos, a, d) ||\n isPointInTriangle(pos, oldPos, b, c)\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"]}
|
|
@@ -32,7 +32,7 @@ export declare class Tooltip extends BaseComponent<any> implements ITooltip {
|
|
|
32
32
|
protected _isTooltipShown: boolean;
|
|
33
33
|
isTooltipShown(): boolean;
|
|
34
34
|
changeRegions(regions: IRegion[]): void;
|
|
35
|
-
|
|
35
|
+
protected _getNeedClearVRenderComponents(): IGraphic[];
|
|
36
36
|
protected _registerEvent(): void;
|
|
37
37
|
protected _releaseEvent(): void;
|
|
38
38
|
onLayout(ctx: IModelLayoutOption): void;
|
|
@@ -92,7 +92,7 @@ class Tooltip extends base_component_1.BaseComponent {
|
|
|
92
92
|
return this._isTooltipShown;
|
|
93
93
|
}
|
|
94
94
|
changeRegions(regions) {}
|
|
95
|
-
|
|
95
|
+
_getNeedClearVRenderComponents() {
|
|
96
96
|
return [];
|
|
97
97
|
}
|
|
98
98
|
_registerEvent() {}
|
|
@@ -222,13 +222,14 @@ class Tooltip extends base_component_1.BaseComponent {
|
|
|
222
222
|
var _a, _b;
|
|
223
223
|
if (this._spec.enterable && "html" === this._spec.renderMode) {
|
|
224
224
|
const {event: event} = params;
|
|
225
|
-
let
|
|
225
|
+
let newTarget;
|
|
226
226
|
if ((0, vutils_1.isValid)(event.nativeEvent)) {
|
|
227
227
|
const nativeEvent = event.nativeEvent;
|
|
228
|
-
|
|
229
|
-
} else
|
|
228
|
+
newTarget = nativeEvent.relatedTarget, nativeEvent.composedPath && nativeEvent.composedPath().length > 0 && (newTarget = nativeEvent.composedPath()[0]);
|
|
229
|
+
} else newTarget = event.relatedTarget;
|
|
230
230
|
const container = null === (_b = null === (_a = this.tooltipHandler) || void 0 === _a ? void 0 : _a.getTooltipContainer) || void 0 === _b ? void 0 : _b.call(_a);
|
|
231
|
-
if ((0, vutils_1.isValid)(container) && (0, vutils_1.isValid)(
|
|
231
|
+
if ((0, vutils_1.isValid)(container) && (0, vutils_1.isValid)(newTarget) && (0,
|
|
232
|
+
vutils_1.hasParentElement)(newTarget, container)) return !0;
|
|
232
233
|
}
|
|
233
234
|
return !1;
|
|
234
235
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/component/tooltip/tooltip.ts"],"names":[],"mappings":"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","file":"tooltip.js","sourcesContent":["import type { IComponentOption } from '../interface';\n// eslint-disable-next-line no-duplicate-imports\nimport { ComponentTypeEnum } from '../interface/type';\nimport type { IModelLayoutOption, IModelRenderOption } from '../../model/interface';\nimport type { IRegion } from '../../region/interface';\nimport { BaseComponent } from '../base/base-component';\nimport type { BaseEventParams, EventCallback, EventQuery, EventType } from '../../event/interface';\nimport type { ITooltipHandler, IToolTipLineActual, TooltipActiveType } from '../../typings/tooltip';\nimport { DomTooltipHandler } from './handler/dom';\nimport { CanvasTooltipHandler } from './handler/canvas';\nimport type { Datum, IPoint, IShowTooltipOption } from '../../typings';\nimport { isMobileLikeMode, isTrueBrowser, isMiniAppLikeMode, domDocument } from '../../util/env';\nimport { mergeSpec } from '../../util/spec/merge-spec';\nimport type {\n ITooltip,\n ITooltipActiveTypeAsKeys,\n ITooltipSpec,\n ITooltipTheme,\n TooltipHandlerParams,\n TotalMouseEventData\n} from './interface';\nimport { TooltipResult } from './interface/common';\nimport { TOOLTIP_EL_CLASS_NAME } from './handler/constants';\nimport { showTooltip } from './utils/show-tooltip';\nimport { getTooltipActualActiveType, isEmptyPos } from './utils/common';\nimport { isSameDimensionInfo } from '../../event/events/dimension/util/common';\nimport { ChartEvent, Event_Bubble_Level, Event_Source_Type } from '../../constant';\nimport type { 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 { 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';\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 type = ComponentTypeEnum.tooltip;\n name: string = ComponentTypeEnum.tooltip;\n\n layoutType: 'none' = 'none';\n\n protected declare _spec: ITooltipSpec;\n\n static createComponent(spec: any, options: IComponentOption) {\n const tooltipSpec = spec.tooltip;\n if (!tooltipSpec) {\n return null;\n }\n if (!isArray(tooltipSpec)) {\n return new Tooltip(tooltipSpec, options);\n }\n const tooltips: Tooltip[] = [];\n tooltipSpec.forEach((s: any, i: number) => {\n tooltips.push(new Tooltip(s, { ...options, specIndex: i }));\n });\n return tooltips;\n }\n\n tooltipHandler?: ITooltipHandler;\n\n private _alwaysShow: boolean = false;\n\n private _cacheInfo: TooltipInfo | undefined;\n\n private _eventList: EventHandlerList = [];\n\n protected declare _theme: ITooltipTheme;\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 getVRenderComponents(): 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 Handler = renderMode === 'canvas' ? CanvasTooltipHandler : DomTooltipHandler;\n const id = `${this._spec.className}-${this._option.globalInstance.id ?? 0}-${this._option.specIndex ?? 0}`;\n this.tooltipHandler = new Handler(id, this);\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 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', { level: Event_Bubble_Level.chart }, this._handleMouseMove);\n // 移动端的点按 + 滑动触发\n if (isMobileLikeMode(mode) || isMiniAppLikeMode(mode)) {\n this._mountEvent('pointerdown', { level: Event_Bubble_Level.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', { level: Event_Bubble_Level.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\n });\n this._cacheInfo = 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._isSameAsCacheInfo(tooltipInfo);\n success = !processor.showTooltip(tooltipInfo as any, params, isSameAsCache);\n if (success) {\n // 成功显示 tooltip,则更新缓存\n this._cacheInfo = tooltipInfo;\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].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 protected _initTheme(theme?: any) {\n super._initTheme(theme);\n this._spec.style = mergeSpec({}, this._theme, this._originalSpec.style);\n }\n\n protected _shouldMergeThemeToSpec() {\n return false;\n }\n\n reInit(theme?: any) {\n super.reInit(theme);\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)) {\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 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 _isSameAsCacheInfo(nextInfo?: TooltipInfo): boolean {\n if (nextInfo === this._cacheInfo) {\n return true;\n }\n if (isNil(this._cacheInfo) || isNil(nextInfo)) {\n return false;\n }\n\n if (isDimensionInfo(nextInfo)) {\n if (isMarkInfo(this._cacheInfo)) {\n return false;\n }\n\n const prevInfo = this._cacheInfo as DimensionTooltipInfo;\n return prevInfo.length === nextInfo.length && nextInfo.every((info, i) => isSameDimensionInfo(info, prevInfo[i]));\n }\n if (isDimensionInfo(this._cacheInfo)) {\n return false;\n }\n\n const prevInfo = this._cacheInfo as MarkTooltipInfo;\n return (\n nextInfo?.datum === prevInfo.datum && nextInfo?.mark === prevInfo.mark && nextInfo?.series === prevInfo.series\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 target: any;\n if (isValid(event.nativeEvent)) {\n // get native event object\n const nativeEvent = event.nativeEvent as Event;\n target = nativeEvent.target;\n // if in shadow DOM use composedPath to access target\n if (nativeEvent.composedPath && nativeEvent.composedPath().length > 0) {\n target = nativeEvent.composedPath()[0];\n }\n } else {\n target = event.target;\n }\n\n const container = this.tooltipHandler?.getTooltipContainer?.();\n if (isValid(container) && isValid(target) && hasParentElement(target, 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 type { IComponentOption } from '../interface';\n// eslint-disable-next-line no-duplicate-imports\nimport { ComponentTypeEnum } from '../interface/type';\nimport type { IModelLayoutOption, IModelRenderOption } from '../../model/interface';\nimport type { IRegion } from '../../region/interface';\nimport { BaseComponent } from '../base/base-component';\nimport type { BaseEventParams, EventCallback, EventQuery, EventType } from '../../event/interface';\nimport type { ITooltipHandler, IToolTipLineActual, TooltipActiveType } from '../../typings/tooltip';\nimport { DomTooltipHandler } from './handler/dom';\nimport { CanvasTooltipHandler } from './handler/canvas';\nimport type { Datum, IPoint, IShowTooltipOption } from '../../typings';\nimport { isMobileLikeMode, isTrueBrowser, isMiniAppLikeMode, domDocument } from '../../util/env';\nimport { mergeSpec } from '../../util/spec/merge-spec';\nimport type {\n ITooltip,\n ITooltipActiveTypeAsKeys,\n ITooltipSpec,\n ITooltipTheme,\n TooltipHandlerParams,\n TotalMouseEventData\n} from './interface';\nimport { TooltipResult } from './interface/common';\nimport { TOOLTIP_EL_CLASS_NAME } from './handler/constants';\nimport { showTooltip } from './utils/show-tooltip';\nimport { getTooltipActualActiveType, isEmptyPos } from './utils/common';\nimport { isSameDimensionInfo } from '../../event/events/dimension/util/common';\nimport { ChartEvent, Event_Bubble_Level, Event_Source_Type } from '../../constant';\nimport type { 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 { 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';\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 type = ComponentTypeEnum.tooltip;\n name: string = ComponentTypeEnum.tooltip;\n\n layoutType: 'none' = 'none';\n\n protected declare _spec: ITooltipSpec;\n\n static createComponent(spec: any, options: IComponentOption) {\n const tooltipSpec = spec.tooltip;\n if (!tooltipSpec) {\n return null;\n }\n if (!isArray(tooltipSpec)) {\n return new Tooltip(tooltipSpec, options);\n }\n const tooltips: Tooltip[] = [];\n tooltipSpec.forEach((s: any, i: number) => {\n tooltips.push(new Tooltip(s, { ...options, specIndex: i }));\n });\n return tooltips;\n }\n\n tooltipHandler?: ITooltipHandler;\n\n private _alwaysShow: boolean = false;\n\n private _cacheInfo: TooltipInfo | undefined;\n\n private _eventList: EventHandlerList = [];\n\n protected declare _theme: ITooltipTheme;\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 Handler = renderMode === 'canvas' ? CanvasTooltipHandler : DomTooltipHandler;\n const id = `${this._spec.className}-${this._option.globalInstance.id ?? 0}-${this._option.specIndex ?? 0}`;\n this.tooltipHandler = new Handler(id, this);\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 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', { level: Event_Bubble_Level.chart }, this._handleMouseMove);\n // 移动端的点按 + 滑动触发\n if (isMobileLikeMode(mode) || isMiniAppLikeMode(mode)) {\n this._mountEvent('pointerdown', { level: Event_Bubble_Level.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', { level: Event_Bubble_Level.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\n });\n this._cacheInfo = 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._isSameAsCacheInfo(tooltipInfo);\n success = !processor.showTooltip(tooltipInfo as any, params, isSameAsCache);\n if (success) {\n // 成功显示 tooltip,则更新缓存\n this._cacheInfo = tooltipInfo;\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].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 protected _initTheme(theme?: any) {\n super._initTheme(theme);\n this._spec.style = mergeSpec({}, this._theme, this._originalSpec.style);\n }\n\n protected _shouldMergeThemeToSpec() {\n return false;\n }\n\n reInit(theme?: any) {\n super.reInit(theme);\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)) {\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 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 _isSameAsCacheInfo(nextInfo?: TooltipInfo): boolean {\n if (nextInfo === this._cacheInfo) {\n return true;\n }\n if (isNil(this._cacheInfo) || isNil(nextInfo)) {\n return false;\n }\n\n if (isDimensionInfo(nextInfo)) {\n if (isMarkInfo(this._cacheInfo)) {\n return false;\n }\n\n const prevInfo = this._cacheInfo as DimensionTooltipInfo;\n return prevInfo.length === nextInfo.length && nextInfo.every((info, i) => isSameDimensionInfo(info, prevInfo[i]));\n }\n if (isDimensionInfo(this._cacheInfo)) {\n return false;\n }\n\n const prevInfo = this._cacheInfo as MarkTooltipInfo;\n return (\n nextInfo?.datum === prevInfo.datum && nextInfo?.mark === prevInfo.mark && nextInfo?.series === prevInfo.series\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"]}
|
package/cjs/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.7.
|
|
4
|
+
export declare const version = "1.7.2";
|
|
5
5
|
export type { IVChart } from './interface';
|
|
6
6
|
export type { IStateSpec, StateValueType } from '../compile/mark';
|
|
7
7
|
export * from '../typings/spec/common';
|
package/cjs/core/index.js
CHANGED
|
@@ -35,7 +35,7 @@ Object.defineProperty(exports, "Factory", {
|
|
|
35
35
|
get: function() {
|
|
36
36
|
return factory_1.Factory;
|
|
37
37
|
}
|
|
38
|
-
}), exports.version = "1.7.
|
|
38
|
+
}), exports.version = "1.7.2", __exportStar(require("../typings/spec/common"), exports),
|
|
39
39
|
__exportStar(require("../event/interface"), exports), __exportStar(require("../theme/interface"), exports),
|
|
40
40
|
__exportStar(require("../constant"), exports), __exportStar(require("../typings/spec/index"), exports),
|
|
41
41
|
__exportStar(require("../theme/index"), exports);
|
package/cjs/core/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAIA,qCAAkC;AAGzB,uFAHA,eAAM,OAGA;AAFf,uCAAoC;AAEnB,wFAFR,iBAAO,OAEQ;AAGX,QAAA,OAAO,GAAG,
|
|
1
|
+
{"version":3,"sources":["../src/core/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAIA,qCAAkC;AAGzB,uFAHA,eAAM,OAGA;AAFf,uCAAoC;AAEnB,wFAFR,iBAAO,OAEQ;AAGX,QAAA,OAAO,GAAG,OAAO,CAAC;AAM/B,yDAAuC;AACvC,qDAAmC;AACnC,qDAAmC;AACnC,8CAA4B;AAK5B,wDAAsC;AAGtC,iDAA+B;AAG/B,uDAAiD;AAAxC,uGAAA,OAAO,OAAA","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.7.2\";\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';\n\n/**\n * spec\n */\nexport * from '../typings/spec/index';\n\n// theme\nexport * from '../theme/index';\n\n// vrender\nexport { vglobal } from '@visactor/vrender-core';\n"]}
|