UNPKG

2.86 kBJavaScriptView Raw
1/* tslint:disable:no-bitwise */
2import { SWIPE, DIRECTION_NONE, DIRECTION_LEFT, DIRECTION_RIGHT, DIRECTION_UP, DIRECTION_DOWN } from './config';
3function _calcTriangleDistance(x, y) {
4 return Math.sqrt(x * x + y * y);
5}
6function _calcAngle(x, y) {
7 var radian = Math.atan2(y, x);
8 return 180 / (Math.PI / radian);
9}
10export function now() {
11 return Date.now();
12}
13export function calcMutliFingerStatus(touches) {
14 if (touches.length < 2) {
15 return;
16 }
17 var _touches$ = touches[0],
18 x1 = _touches$.x,
19 y1 = _touches$.y;
20 var _touches$2 = touches[1],
21 x2 = _touches$2.x,
22 y2 = _touches$2.y;
23
24 var deltaX = x2 - x1;
25 var deltaY = y2 - y1;
26 return {
27 x: deltaX,
28 y: deltaY,
29 z: _calcTriangleDistance(deltaX, deltaY),
30 angle: _calcAngle(deltaX, deltaY)
31 };
32}
33export function calcMoveStatus(startTouches, touches, time) {
34 var _startTouches$ = startTouches[0],
35 x1 = _startTouches$.x,
36 y1 = _startTouches$.y;
37 var _touches$3 = touches[0],
38 x2 = _touches$3.x,
39 y2 = _touches$3.y;
40
41 var deltaX = x2 - x1;
42 var deltaY = y2 - y1;
43 var deltaZ = _calcTriangleDistance(deltaX, deltaY);
44 return {
45 x: deltaX,
46 y: deltaY,
47 z: deltaZ,
48 time: time,
49 velocity: deltaZ / time,
50 angle: _calcAngle(deltaX, deltaY)
51 };
52}
53export function calcRotation(startMutliFingerStatus, mutliFingerStatus) {
54 var startAngle = startMutliFingerStatus.angle;
55 var angle = mutliFingerStatus.angle;
56
57 return angle - startAngle;
58}
59export function getEventName(prefix, status) {
60 return prefix + status[0].toUpperCase() + status.slice(1);
61}
62export function shouldTriggerSwipe(delta, velocity) {
63 return Math.abs(delta) >= SWIPE.threshold && Math.abs(velocity) > SWIPE.velocity;
64}
65export function shouldTriggerDirection(direction, directionSetting) {
66 if (directionSetting & direction) {
67 return true;
68 }
69 return false;
70}
71/**
72 * @private
73 * get the direction between two points
74 * @param {Number} x
75 * @param {Number} y
76 * @return {Number} direction
77 */
78export function getDirection(x, y) {
79 if (x === y) {
80 return DIRECTION_NONE;
81 }
82 if (Math.abs(x) >= Math.abs(y)) {
83 return x < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT;
84 }
85 return y < 0 ? DIRECTION_UP : DIRECTION_DOWN;
86}
87export function getDirectionEventName(direction) {
88 var name = void 0;
89 switch (direction) {
90 case DIRECTION_NONE:
91 break;
92 case DIRECTION_LEFT:
93 name = 'left';
94 break;
95 case DIRECTION_RIGHT:
96 name = 'right';
97 break;
98 case DIRECTION_UP:
99 name = 'up';
100 break;
101 case DIRECTION_DOWN:
102 name = 'down';
103 break;
104 default:
105 }
106 return name;
107}
\No newline at end of file