UNPKG

gui-one-nutui-react-taro

Version:

京东风格的轻量级移动端 React 组件库,支持一套代码生成 H5 和小程序

100 lines (99 loc) 2.77 kB
import _slicedToArray from "@babel/runtime/helpers/slicedToArray"; import { useState } from 'react'; var MIN_DISTANCE = 10; function getDirection(x, y) { if (x > y && x > MIN_DISTANCE) { return 'horizontal'; } if (y > x && y > MIN_DISTANCE) { return 'vertical'; } return ''; } function useTouch() { var _useState = useState(0), _useState2 = _slicedToArray(_useState, 2), startX = _useState2[0], SetStartX = _useState2[1]; var _useState3 = useState(0), _useState4 = _slicedToArray(_useState3, 2), startY = _useState4[0], SetStartY = _useState4[1]; var _useState5 = useState(0), _useState6 = _slicedToArray(_useState5, 2), moveX = _useState6[0], SetMoveX = _useState6[1]; var _useState7 = useState(0), _useState8 = _slicedToArray(_useState7, 2), moveY = _useState8[0], SetMoveY = _useState8[1]; var _useState9 = useState(0), _useState10 = _slicedToArray(_useState9, 2), deltaX = _useState10[0], SetDeltaX = _useState10[1]; var _useState11 = useState(0), _useState12 = _slicedToArray(_useState11, 2), deltaY = _useState12[0], SetDeltaY = _useState12[1]; var _useState13 = useState(0), _useState14 = _slicedToArray(_useState13, 2), offsetX = _useState14[0], SetOffsetX = _useState14[1]; var _useState15 = useState(0), _useState16 = _slicedToArray(_useState15, 2), offsetY = _useState16[0], SetOffsetY = _useState16[1]; var _useState17 = useState(''), _useState18 = _slicedToArray(_useState17, 2), direction = _useState18[0], SetDirection = _useState18[1]; var isVertical = function isVertical() { return direction === 'vertical'; }; var isHorizontal = function isHorizontal() { return direction === 'horizontal'; }; var reset = function reset() { SetDeltaX(0); SetDeltaY(0); SetOffsetX(0); SetOffsetY(0); SetDirection(''); }; var start = function start(event) { reset(); SetStartX(event.touches[0].clientX); SetStartY(event.touches[0].clientY); }; var move = function move(event) { var touch = event.touches[0]; var dX = touch.clientX - startX; var dY = touch.clientY - startY; SetDeltaX(dX); SetDeltaY(dY); SetMoveX(touch.clientX); SetMoveY(touch.clientY); SetOffsetX(Math.abs(dX)); SetOffsetY(Math.abs(dY)); if (!direction) { SetDirection(getDirection(offsetX, offsetY)); } }; return { move: move, start: start, reset: reset, startX: startX, startY: startY, moveX: moveX, moveY: moveY, deltaX: deltaX, deltaY: deltaY, offsetX: offsetX, offsetY: offsetY, direction: direction, isVertical: isVertical, isHorizontal: isHorizontal }; } export { useTouch as u };