UNPKG

victory-native

Version:

A charting library for React Native with a focus on performance and customization.

29 lines (28 loc) 1.33 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getCartesianTouchCoordinates = void 0; const transform_1 = require("../../utils/transform"); const finiteOrFallback = (value, fallback) => { "worklet"; if (typeof value === "number" && Number.isFinite(value)) return value; if (typeof fallback === "number" && Number.isFinite(fallback)) { return fallback; } return 0; }; const getCartesianTouchCoordinates = ({ touch, transform, }) => { "worklet"; const { scaleX, scaleY, translateX, translateY } = (0, transform_1.getTransformComponents)(transform); const safeScaleX = scaleX === 0 || !Number.isFinite(scaleX) ? 1 : scaleX; const safeScaleY = scaleY === 0 || !Number.isFinite(scaleY) ? 1 : scaleY; // `handleTouch` compares against pre-transform canvas-space positions from // `tData`, while the gesture handler fills the visible chart container. // Invert the active chart transform so a press on transformed content still // maps back to the matching data point. return { x: (finiteOrFallback(touch.x, touch.absoluteX) - translateX) / safeScaleX, y: (finiteOrFallback(touch.y, touch.absoluteY) - translateY) / safeScaleY, }; }; exports.getCartesianTouchCoordinates = getCartesianTouchCoordinates;