UNPKG

@gdjiami/hooks

Version:

react hooks for mygzb.com

88 lines (87 loc) 2.39 kB
import { __assign, __values } from "tslib"; 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 e_1, _a; var newobj = {}; try { for (var keys_1 = __values(keys), keys_1_1 = keys_1.next(); !keys_1_1.done; keys_1_1 = keys_1.next()) { var key = keys_1_1.value; newobj[key] = obj[key]; } } catch (e_1_1) { e_1 = { error: e_1_1 }; } finally { try { if (keys_1_1 && !keys_1_1.done && (_a = keys_1.return)) _a.call(keys_1); } finally { if (e_1) throw e_1.error; } } 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 __assign(__assign({}, pickProperties(touch, GestureCoordinateKeys)), { id: touch.identifier }); } /** * 获取多点触摸 */ export function extraPositions(evt) { if (isMouseEvent(evt)) { return [ __assign({ id: 0 }, pickProperties(evt, GestureCoordinateKeys)), ]; } return Array.prototype.map.call(evt.changedTouches, function (touch) { return __assign({ 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))); }