gesturx 1.0.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +17 -1
- package/dist/index.d.ts +192 -0
- package/dist/index.js +627 -0
- package/dist/index.js.map +1 -0
- package/dist/index.umd.cjs +2 -0
- package/dist/index.umd.cjs.map +1 -0
- package/package.json +12 -1
- package/.github/workflows/publish.yml +0 -17
- package/.prettierrc.json +0 -3
- package/eslint.config.js +0 -18
- package/index.html +0 -13
- package/src/core/index.ts +0 -4
- package/src/core/manager.ts +0 -46
- package/src/core/pan/PanRecognizer.ts +0 -192
- package/src/core/pinch/PinchRecognizer.ts +0 -131
- package/src/core/recognizer/Recognizer.ts +0 -54
- package/src/core/recognizer/RecognizerEvent.ts +0 -39
- package/src/core/recognizer/mapToRecognizerEvent.ts +0 -142
- package/src/core/rotate/RotateRecognizer.ts +0 -115
- package/src/core/swipe/SwipeRecognizer.test.ts +0 -160
- package/src/core/swipe/SwipeRecognizer.ts +0 -82
- package/src/core/swipe/isRecognizedAsSwipe.ts +0 -13
- package/src/core/tap/TapRecognizer.test.ts +0 -567
- package/src/core/tap/TapRecognizer.ts +0 -172
- package/src/core/utils/events.ts +0 -186
- package/src/core/utils/geometry.ts +0 -115
- package/src/core/utils/utils.test.ts +0 -26
- package/src/core/utils/utils.ts +0 -58
- package/src/demo/App.tsx +0 -171
- package/src/demo/DebugBox.tsx +0 -10
- package/src/demo/useManager.ts +0 -40
- package/src/demo/useTap.tsx +0 -87
- package/src/index.css +0 -66
- package/src/main.tsx +0 -14
- package/src/theme.ts +0 -11
- package/src/vite-env.d.ts +0 -1
- package/tsconfig.json +0 -26
- package/tsconfig.node.json +0 -11
- package/vite.config.ts +0 -38
- package/vitest.config.ts +0 -8
- /package/{public → dist}/vite.svg +0 -0
package/README.md
CHANGED
|
@@ -1,3 +1,19 @@
|
|
|
1
1
|
# gesturx
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Modern multi touch gesture recognizer using rxjs.
|
|
4
|
+
|
|
5
|
+
# Documentation
|
|
6
|
+
|
|
7
|
+
Head over the [wiki](https://github.com/mbret/gesturx/wiki).
|
|
8
|
+
|
|
9
|
+
# Demo
|
|
10
|
+
|
|
11
|
+
[https://gesturx.vercel.app/](https://gesturx.vercel.app/)
|
|
12
|
+
|
|
13
|
+
# License
|
|
14
|
+
|
|
15
|
+
MIT
|
|
16
|
+
|
|
17
|
+
# author
|
|
18
|
+
|
|
19
|
+
[mbret](https://github.com/mbret)
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
import { BehaviorSubject } from 'rxjs';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
|
|
4
|
+
export declare const createManager: ({ afterEventReceived, recognizers, }: {
|
|
5
|
+
recognizers: (TapRecognizer | PanRecognizer | SwipeRecognizer | RotateRecognizer | PinchRecognizer)[];
|
|
6
|
+
afterEventReceived?: (event: PointerEvent) => PointerEvent;
|
|
7
|
+
}) => {
|
|
8
|
+
events$: Observable<PanEvent | SwipeEvent | TapEvent | RotateEvent | PinchEvent>;
|
|
9
|
+
initialize: (container: HTMLElement) => void;
|
|
10
|
+
recognizers: (PanRecognizer | SwipeRecognizer | TapRecognizer | RotateRecognizer | PinchRecognizer)[];
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
export declare type Manager = ReturnType<typeof createManager>;
|
|
14
|
+
|
|
15
|
+
declare type Options = {
|
|
16
|
+
posThreshold?: number;
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
declare type Options_2 = {
|
|
20
|
+
/**
|
|
21
|
+
* The minimum velocity (px/ms) that the gesture has to obtain by the end event.
|
|
22
|
+
*/
|
|
23
|
+
escapeVelocity?: number;
|
|
24
|
+
numInputs?: number;
|
|
25
|
+
maxRestTime?: number;
|
|
26
|
+
posThreshold?: number;
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
declare interface Options_3 extends RecognizerOptions {
|
|
30
|
+
multiTapThreshold?: number;
|
|
31
|
+
maximumPressTime?: number;
|
|
32
|
+
maxTaps?: number;
|
|
33
|
+
posThreshold?: number;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
declare type Options_4 = {
|
|
37
|
+
posThreshold?: number;
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
declare type Options_5 = {
|
|
41
|
+
posThreshold?: number;
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
export declare interface PanEvent extends RecognizerEvent {
|
|
45
|
+
type: "panStart" | "panMove" | "panEnd";
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export declare class PanRecognizer extends Recognizer<Options> {
|
|
49
|
+
protected options: Options;
|
|
50
|
+
events$: Observable<PanEvent>;
|
|
51
|
+
start$: Observable<PanEvent>;
|
|
52
|
+
end$: Observable<PanEvent>;
|
|
53
|
+
fingers$: Observable<number>;
|
|
54
|
+
constructor(options?: Options);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
export declare interface PinchEvent extends RecognizerEvent {
|
|
58
|
+
type: "pinchStart" | "pinchMove" | "pinchEnd";
|
|
59
|
+
scale: number;
|
|
60
|
+
/**
|
|
61
|
+
* Distance between start and current
|
|
62
|
+
*/
|
|
63
|
+
distance: number;
|
|
64
|
+
/**
|
|
65
|
+
* Delta distance between events
|
|
66
|
+
*/
|
|
67
|
+
deltaDistance: number;
|
|
68
|
+
/**
|
|
69
|
+
* Delta scale between events
|
|
70
|
+
*/
|
|
71
|
+
deltaDistanceScale: number;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
export declare class PinchRecognizer extends Recognizer<Options_5> {
|
|
75
|
+
protected options: Options_5;
|
|
76
|
+
events$: Observable<PinchEvent>;
|
|
77
|
+
constructor(options?: Options_5);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
declare class Recognizer<Options> {
|
|
81
|
+
protected config$: BehaviorSubject<RecognizerConfig<Options>>;
|
|
82
|
+
protected validConfig$: Observable<ValidRecognizerConfig<Options>>;
|
|
83
|
+
constructor(options: Options);
|
|
84
|
+
initialize(config: RecognizerConfig<Options>): void;
|
|
85
|
+
update(options: Options): void;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
declare type RecognizerConfig<Options> = {
|
|
89
|
+
container?: HTMLElement;
|
|
90
|
+
afterEventReceived?: (event: PointerEvent) => PointerEvent;
|
|
91
|
+
options?: Options;
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
declare interface RecognizerEvent {
|
|
95
|
+
center: {
|
|
96
|
+
x: number;
|
|
97
|
+
y: number;
|
|
98
|
+
};
|
|
99
|
+
event: PointerEvent;
|
|
100
|
+
/**
|
|
101
|
+
* Contain the last known pointer event for each active fingers.
|
|
102
|
+
* It should contain a unique list, with n being the number of active fingers.
|
|
103
|
+
*/
|
|
104
|
+
pointers: PointerEvent[];
|
|
105
|
+
/**
|
|
106
|
+
* Delay between the user action and the event recognition
|
|
107
|
+
*/
|
|
108
|
+
delay: number;
|
|
109
|
+
deltaX: number;
|
|
110
|
+
deltaY: number;
|
|
111
|
+
/**
|
|
112
|
+
* @important
|
|
113
|
+
* Can be negative, 0, positive
|
|
114
|
+
*/
|
|
115
|
+
velocityX: number;
|
|
116
|
+
/**
|
|
117
|
+
* @important
|
|
118
|
+
* Can be negative, 0, positive
|
|
119
|
+
*/
|
|
120
|
+
velocityY: number;
|
|
121
|
+
startTime: number;
|
|
122
|
+
/**
|
|
123
|
+
* Angle delta (in degrees) between pointers between this event
|
|
124
|
+
* and the previous one.
|
|
125
|
+
*
|
|
126
|
+
* @important
|
|
127
|
+
* - Will only register a delta if the previous event and current event
|
|
128
|
+
* have the same amount of fingers
|
|
129
|
+
*/
|
|
130
|
+
deltaPointersAngle: number;
|
|
131
|
+
/**
|
|
132
|
+
* Average distance between all pointers
|
|
133
|
+
*/
|
|
134
|
+
pointersAverageDistance: number;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
declare interface RecognizerOptions {
|
|
138
|
+
failWith?: {
|
|
139
|
+
start$: Observable<unknown>;
|
|
140
|
+
}[];
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
export declare interface RotateEvent extends RecognizerEvent {
|
|
144
|
+
type: "rotate" | "rotateStart" | "rotateEnd";
|
|
145
|
+
/**
|
|
146
|
+
* Current rotation angle
|
|
147
|
+
*/
|
|
148
|
+
angle: number;
|
|
149
|
+
/**
|
|
150
|
+
* Delta angle between events
|
|
151
|
+
*/
|
|
152
|
+
deltaAngle: number;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
export declare class RotateRecognizer extends Recognizer<Options_4> {
|
|
156
|
+
protected options: Options_4;
|
|
157
|
+
events$: Observable<RotateEvent>;
|
|
158
|
+
constructor(options?: Options_4);
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
export declare interface SwipeEvent extends RecognizerEvent {
|
|
162
|
+
type: "swipe";
|
|
163
|
+
/**
|
|
164
|
+
* Angle between first pointer and last one in degree
|
|
165
|
+
*
|
|
166
|
+
* (-90)
|
|
167
|
+
* (+/-180) <- | -> (+/-0)
|
|
168
|
+
* (+90)
|
|
169
|
+
*/
|
|
170
|
+
angle: number;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
export declare class SwipeRecognizer extends Recognizer<Options_2> {
|
|
174
|
+
protected options: Options_2;
|
|
175
|
+
events$: Observable<SwipeEvent>;
|
|
176
|
+
constructor(options?: Options_2);
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
export declare interface TapEvent extends RecognizerEvent {
|
|
180
|
+
type: "tap";
|
|
181
|
+
taps: number;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
export declare class TapRecognizer extends Recognizer<Options_3> {
|
|
185
|
+
protected options: Options_3;
|
|
186
|
+
events$: Observable<TapEvent>;
|
|
187
|
+
constructor(options: Options_3);
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
declare type ValidRecognizerConfig<Options> = Required<Pick<RecognizerConfig<Options>, "container">> & RecognizerConfig<Options>;
|
|
191
|
+
|
|
192
|
+
export { }
|