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.
Files changed (41) hide show
  1. package/README.md +17 -1
  2. package/dist/index.d.ts +192 -0
  3. package/dist/index.js +627 -0
  4. package/dist/index.js.map +1 -0
  5. package/dist/index.umd.cjs +2 -0
  6. package/dist/index.umd.cjs.map +1 -0
  7. package/package.json +12 -1
  8. package/.github/workflows/publish.yml +0 -17
  9. package/.prettierrc.json +0 -3
  10. package/eslint.config.js +0 -18
  11. package/index.html +0 -13
  12. package/src/core/index.ts +0 -4
  13. package/src/core/manager.ts +0 -46
  14. package/src/core/pan/PanRecognizer.ts +0 -192
  15. package/src/core/pinch/PinchRecognizer.ts +0 -131
  16. package/src/core/recognizer/Recognizer.ts +0 -54
  17. package/src/core/recognizer/RecognizerEvent.ts +0 -39
  18. package/src/core/recognizer/mapToRecognizerEvent.ts +0 -142
  19. package/src/core/rotate/RotateRecognizer.ts +0 -115
  20. package/src/core/swipe/SwipeRecognizer.test.ts +0 -160
  21. package/src/core/swipe/SwipeRecognizer.ts +0 -82
  22. package/src/core/swipe/isRecognizedAsSwipe.ts +0 -13
  23. package/src/core/tap/TapRecognizer.test.ts +0 -567
  24. package/src/core/tap/TapRecognizer.ts +0 -172
  25. package/src/core/utils/events.ts +0 -186
  26. package/src/core/utils/geometry.ts +0 -115
  27. package/src/core/utils/utils.test.ts +0 -26
  28. package/src/core/utils/utils.ts +0 -58
  29. package/src/demo/App.tsx +0 -171
  30. package/src/demo/DebugBox.tsx +0 -10
  31. package/src/demo/useManager.ts +0 -40
  32. package/src/demo/useTap.tsx +0 -87
  33. package/src/index.css +0 -66
  34. package/src/main.tsx +0 -14
  35. package/src/theme.ts +0 -11
  36. package/src/vite-env.d.ts +0 -1
  37. package/tsconfig.json +0 -26
  38. package/tsconfig.node.json +0 -11
  39. package/vite.config.ts +0 -38
  40. package/vitest.config.ts +0 -8
  41. /package/{public → dist}/vite.svg +0 -0
package/README.md CHANGED
@@ -1,3 +1,19 @@
1
1
  # gesturx
2
2
 
3
- Gesture recognizer using rxjs
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)
@@ -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 { }