UNPKG

@gdjiami/hooks

Version:

react hooks for mygzb.com

96 lines (82 loc) 2.1 kB
import _extends from "@babel/runtime/helpers/esm/extends"; export var TOUCH_SUPPROTED = 'TouchEvent' in window; export var GestureCoordinateKeys = ['clientX', 'clientY', 'pageX', 'pageY', 'screenX', 'screenY']; export function isMouseEvent(evt) { if (evt.type.startsWith('mouse')) { return true; } return false; } export function pickProperties(obj, keys) { var newobj = {}; for (var _iterator = keys, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { var _ref; if (_isArray) { if (_i >= _iterator.length) break; _ref = _iterator[_i++]; } else { _i = _iterator.next(); if (_i.done) break; _ref = _i.value; } var key = _ref; newobj[key] = obj[key]; } return newobj; } /** * 获取MouseEvent或TouchEvent中的坐标 * @param evt */ export function extraPosition(evt, id) { if (isMouseEvent(evt)) { return pickProperties(evt, GestureCoordinateKeys); } var touch; if (id) { for (var i = 0; i < evt.touches.length; i++) { if (evt.touches[i].identifier === id) { touch = evt.touches[i]; break; } } if (touch == null) { return; } } else { touch = evt.targetTouches[0]; } return _extends({}, pickProperties(touch, GestureCoordinateKeys), { id: touch.identifier }); } /** * 获取多点触摸 */ export function extraPositions(evt) { if (isMouseEvent(evt)) { return [_extends({ id: 0 }, pickProperties(evt, GestureCoordinateKeys))]; } return Array.prototype.map.call(evt.changedTouches, function (touch) { return _extends({ id: touch.identifier }, pickProperties(touch, GestureCoordinateKeys)); }); } export function clamp(num, lower, upper) { if (num === num) { if (upper !== undefined) { num = num <= upper ? num : upper; } if (lower !== undefined) { num = num >= lower ? num : lower; } } return num; } var uid = 0; export function getUid() { return uid = uid + 1 % (Number.MAX_SAFE_INTEGER - 1); }