victory-native
Version:
A charting library for React Native with a focus on performance and customization.
29 lines (28 loc) • 1.33 kB
JavaScript
;
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;