recharts
Version:
React charts
132 lines (131 loc) • 3.9 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getTooltipCSSClassName = getTooltipCSSClassName;
exports.getTooltipTranslate = getTooltipTranslate;
exports.getTooltipTranslateXY = getTooltipTranslateXY;
exports.getTransformStyle = getTransformStyle;
var _clsx = require("clsx");
var _DataUtils = require("../DataUtils");
var CSS_CLASS_PREFIX = 'recharts-tooltip-wrapper';
var TOOLTIP_HIDDEN = {
visibility: 'hidden'
};
function getTooltipCSSClassName(_ref) {
var {
coordinate,
translateX,
translateY
} = _ref;
return (0, _clsx.clsx)(CSS_CLASS_PREFIX, {
["".concat(CSS_CLASS_PREFIX, "-right")]: (0, _DataUtils.isNumber)(translateX) && coordinate && (0, _DataUtils.isNumber)(coordinate.x) && translateX >= coordinate.x,
["".concat(CSS_CLASS_PREFIX, "-left")]: (0, _DataUtils.isNumber)(translateX) && coordinate && (0, _DataUtils.isNumber)(coordinate.x) && translateX < coordinate.x,
["".concat(CSS_CLASS_PREFIX, "-bottom")]: (0, _DataUtils.isNumber)(translateY) && coordinate && (0, _DataUtils.isNumber)(coordinate.y) && translateY >= coordinate.y,
["".concat(CSS_CLASS_PREFIX, "-top")]: (0, _DataUtils.isNumber)(translateY) && coordinate && (0, _DataUtils.isNumber)(coordinate.y) && translateY < coordinate.y
});
}
function getTooltipTranslateXY(_ref2) {
var {
allowEscapeViewBox,
coordinate,
key,
offsetTopLeft,
position,
reverseDirection,
tooltipDimension,
viewBox,
viewBoxDimension
} = _ref2;
if (position && (0, _DataUtils.isNumber)(position[key])) {
return position[key];
}
var negative = coordinate[key] - tooltipDimension - (offsetTopLeft > 0 ? offsetTopLeft : 0);
var positive = coordinate[key] + offsetTopLeft;
if (allowEscapeViewBox[key]) {
return reverseDirection[key] ? negative : positive;
}
var viewBoxKey = viewBox[key];
if (viewBoxKey == null) {
return 0;
}
if (reverseDirection[key]) {
var _tooltipBoundary = negative;
var _viewBoxBoundary = viewBoxKey;
if (_tooltipBoundary < _viewBoxBoundary) {
return Math.max(positive, viewBoxKey);
}
return Math.max(negative, viewBoxKey);
}
if (viewBoxDimension == null) {
return 0;
}
var tooltipBoundary = positive + tooltipDimension;
var viewBoxBoundary = viewBoxKey + viewBoxDimension;
if (tooltipBoundary > viewBoxBoundary) {
return Math.max(negative, viewBoxKey);
}
return Math.max(positive, viewBoxKey);
}
function getTransformStyle(_ref3) {
var {
translateX,
translateY,
useTranslate3d
} = _ref3;
return {
transform: useTranslate3d ? "translate3d(".concat(translateX, "px, ").concat(translateY, "px, 0)") : "translate(".concat(translateX, "px, ").concat(translateY, "px)")
};
}
function getTooltipTranslate(_ref4) {
var {
allowEscapeViewBox,
coordinate,
offsetTopLeft,
position,
reverseDirection,
tooltipBox,
useTranslate3d,
viewBox
} = _ref4;
var cssProperties, translateX, translateY;
if (tooltipBox.height > 0 && tooltipBox.width > 0 && coordinate) {
translateX = getTooltipTranslateXY({
allowEscapeViewBox,
coordinate,
key: 'x',
offsetTopLeft,
position,
reverseDirection,
tooltipDimension: tooltipBox.width,
viewBox,
viewBoxDimension: viewBox.width
});
translateY = getTooltipTranslateXY({
allowEscapeViewBox,
coordinate,
key: 'y',
offsetTopLeft,
position,
reverseDirection,
tooltipDimension: tooltipBox.height,
viewBox,
viewBoxDimension: viewBox.height
});
cssProperties = getTransformStyle({
translateX,
translateY,
useTranslate3d
});
} else {
cssProperties = TOOLTIP_HIDDEN;
}
return {
cssProperties,
cssClasses: getTooltipCSSClassName({
translateX,
translateY,
coordinate
})
};
}
;