UNPKG

3.62 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 * Note: will change next version
75 * @param {Number} x
76 * @param {Number} y
77 * @return {Number} direction
78 */
79export function getDirection(x, y) {
80 if (x === y) {
81 return DIRECTION_NONE;
82 }
83 if (Math.abs(x) >= Math.abs(y)) {
84 return x < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT;
85 }
86 return y < 0 ? DIRECTION_UP : DIRECTION_DOWN;
87}
88/**
89 * @private
90 * get the direction between tow points when touch moving
91 * Note: will change next version
92 * @param {Object} point1 coordinate point, include x & y attributes
93 * @param {Object} point2 coordinate point, include x & y attributes
94 * @return {Number} direction
95 */
96export function getMovingDirection(point1, point2) {
97 var x1 = point1.x,
98 y1 = point1.y;
99 var x2 = point2.x,
100 y2 = point2.y;
101
102 var deltaX = x2 - x1;
103 var deltaY = y2 - y1;
104 if (deltaX === 0 && deltaY === 0) {
105 return DIRECTION_NONE;
106 }
107 if (Math.abs(deltaX) >= Math.abs(deltaY)) {
108 return deltaX < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT;
109 }
110 return deltaY < 0 ? DIRECTION_UP : DIRECTION_DOWN;
111}
112export function getDirectionEventName(direction) {
113 var name = void 0;
114 switch (direction) {
115 case DIRECTION_NONE:
116 break;
117 case DIRECTION_LEFT:
118 name = 'left';
119 break;
120 case DIRECTION_RIGHT:
121 name = 'right';
122 break;
123 case DIRECTION_UP:
124 name = 'up';
125 break;
126 case DIRECTION_DOWN:
127 name = 'down';
128 break;
129 default:
130 }
131 return name;
132}
\No newline at end of file