UNPKG

pay-sdk-react

Version:

A cross-platform payment SDK for React, supporting Alipay, WeChat Pay, PayPal, Stripe, Payssion, and Airwallex, compatible with H5, PC, and App environments.

60 lines 1.97 kB
import { useRef } from "react"; const MIN_DISTANCE = 10; function getDirection(x, y) { if (x > y && x > MIN_DISTANCE) { return "horizontal"; } if (y > x && y > MIN_DISTANCE) { return "vertical"; } return ""; } export function useTouch() { const startX = useRef(0); const startY = useRef(0); const deltaX = useRef(0); const deltaY = useRef(0); const offsetX = useRef(0); const offsetY = useRef(0); const direction = useRef(""); const isVertical = () => direction.current === "vertical"; const isHorizontal = () => direction.current === "horizontal"; const reset = () => { deltaX.current = 0; deltaY.current = 0; offsetX.current = 0; offsetY.current = 0; direction.current = ""; }; const start = event => { var _event$touches$0$clie, _event$touches$, _event$touches$0$clie2, _event$touches$2; reset(); startX.current = (_event$touches$0$clie = (_event$touches$ = event.touches[0]) === null || _event$touches$ === void 0 ? void 0 : _event$touches$.clientX) !== null && _event$touches$0$clie !== void 0 ? _event$touches$0$clie : 0; startY.current = (_event$touches$0$clie2 = (_event$touches$2 = event.touches[0]) === null || _event$touches$2 === void 0 ? void 0 : _event$touches$2.clientY) !== null && _event$touches$0$clie2 !== void 0 ? _event$touches$0$clie2 : 0; }; const move = event => { const touch = event.touches[0]; if (!touch) return; deltaX.current = touch.clientX - startX.current; deltaY.current = (touch === null || touch === void 0 ? void 0 : touch.clientY) - startY.current; offsetX.current = Math.abs(deltaX.current); offsetY.current = Math.abs(deltaY.current); if (!direction.current) { direction.current = getDirection(offsetX.current, offsetY.current); } }; return { move, start, reset, startX, startY, deltaX, deltaY, offsetX, offsetY, direction, isVertical, isHorizontal }; }