@gdjiami/hooks
Version:
react hooks for mygzb.com
88 lines (87 loc) • 2.39 kB
JavaScript
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)));
}