UNPKG

@visactor/vchart

Version:

charts lib based @visactor/VGrammar

75 lines (67 loc) 2.84 kB
import { layoutByValue, layoutCrosshair } from "../../../../component/crosshair/utils/cartesian"; import { isFunction, isNumber, isObject, isValid } from "@visactor/vutils"; export const getActualTooltipPositionValue = (position, event) => { let result; if (isValid(position)) if (isNumber(position)) result = position; else if (isFunction(position)) { const tooltipPosition = position(event); isNumber(tooltipPosition) && (result = tooltipPosition); } return result; }; export const positionType = { left: [ -2, 0 ], right: [ 2, 0 ], top: [ 0, -2 ], lt: [ -2, -2 ], tl: [ -2, -2 ], rt: [ 2, -2 ], tr: [ 2, -2 ], bottom: [ 0, 2 ], bl: [ -2, 2 ], lb: [ -2, 2 ], br: [ 2, 2 ], rb: [ 2, 2 ], inside: [ 0, 0 ], center: [ 0, 0 ], centerBottom: [ 0, 1 ], centerTop: [ 0, -1 ], centerLeft: [ -1, 0 ], centerRight: [ 1, 0 ] }; export const getPositionType = (position, dim, defaultCase = 2) => { var _a, _b; return null !== (_b = null === (_a = positionType[position]) || void 0 === _a ? void 0 : _a["x" === dim ? 0 : 1]) && void 0 !== _b ? _b : defaultCase; }; export const getCartesianCrosshairRect = (dimensionData, layoutStartPoint) => { var _a; const currValueX = new Map, currValueY = new Map, {series: series, datum: datum} = dimensionData, isHorizontal = "horizontal" === series.direction, axisId = (isHorizontal ? series.getYAxisHelper() : series.getXAxisHelper()).getAxisId(), axis = series.getChart().getComponentsByKey("axes").find((axis => axis.id === axisId)); if (!axis) return; (isHorizontal ? currValueY : currValueX).set(axis.getSpecIndex(), { datum: null === (_a = series.getDatumPositionValues(datum[0], series.getDimensionField())) || void 0 === _a ? void 0 : _a[0], axis: axis }); const state = { xField: { coordKey: "x", anotherAxisKey: "y", currentValue: currValueX, attributes: { visible: !!currValueX.size, type: "rect" } }, yField: { coordKey: "y", anotherAxisKey: "x", currentValue: currValueY, attributes: { visible: !!currValueY.size, type: "rect" } } }; return layoutByValue(state, series, layoutStartPoint), state.xField.cacheInfo ? layoutCrosshair(state.xField) : state.yField.cacheInfo ? layoutCrosshair(state.yField) : void 0; }; export const isGlobalTooltipPositionPattern = obj => isObject(obj) && (isValid(obj.left) || isValid(obj.right) || isValid(obj.top) || isValid(obj.bottom)); export const isFixedTooltipPositionPattern = obj => isObject(obj) && (isValid(obj.x) || isValid(obj.y)); //# sourceMappingURL=position.js.map