gesturx 1.2.0 → 1.6.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 +1 -1
- package/dist/index.d.ts +212 -67
- package/dist/index.js +564 -522
- package/dist/index.js.map +1 -1
- package/dist/index.umd.cjs +1 -1
- package/dist/index.umd.cjs.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
package/dist/index.d.ts
CHANGED
|
@@ -1,57 +1,45 @@
|
|
|
1
1
|
import { BehaviorSubject } from 'rxjs';
|
|
2
2
|
import { Observable } from 'rxjs';
|
|
3
|
+
import { ObservedValueOf } from 'rxjs';
|
|
3
4
|
|
|
4
|
-
|
|
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 = {
|
|
5
|
+
declare type PanConfig = {
|
|
16
6
|
posThreshold?: number;
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
declare type Options_2 = {
|
|
7
|
+
delay?: number;
|
|
20
8
|
/**
|
|
21
|
-
*
|
|
9
|
+
* Number of inputs to trigger the event.
|
|
10
|
+
* Default to 1
|
|
22
11
|
*/
|
|
23
|
-
escapeVelocity?: number;
|
|
24
12
|
numInputs?: number;
|
|
25
|
-
maxRestTime?: number;
|
|
26
|
-
posThreshold?: number;
|
|
27
13
|
};
|
|
28
14
|
|
|
29
|
-
declare interface
|
|
30
|
-
|
|
31
|
-
maximumPressTime?: number;
|
|
32
|
-
maxTaps?: number;
|
|
33
|
-
posThreshold?: number;
|
|
15
|
+
export declare interface PanEvent extends RecognizerEvent {
|
|
16
|
+
type: "panStart" | "panMove" | "panEnd";
|
|
34
17
|
}
|
|
35
18
|
|
|
36
|
-
declare
|
|
37
|
-
posThreshold?: number;
|
|
38
|
-
};
|
|
39
|
-
|
|
40
|
-
declare type Options_5 = {
|
|
41
|
-
posThreshold?: number;
|
|
42
|
-
};
|
|
43
|
-
|
|
44
|
-
export declare interface PanEvent extends RecognizerEvent {
|
|
19
|
+
declare interface PanEvent_2 extends RecognizerEvent {
|
|
45
20
|
type: "panStart" | "panMove" | "panEnd";
|
|
46
21
|
}
|
|
47
22
|
|
|
48
|
-
export declare class PanRecognizer extends Recognizer<
|
|
49
|
-
protected options: Options;
|
|
23
|
+
export declare class PanRecognizer extends Recognizer<PanRecognizerOptions, PanEvent> implements PanRecognizerInterface {
|
|
50
24
|
events$: Observable<PanEvent>;
|
|
51
25
|
start$: Observable<PanEvent>;
|
|
52
26
|
end$: Observable<PanEvent>;
|
|
53
|
-
|
|
54
|
-
|
|
27
|
+
constructor(config?: RecognizerConfig<PanRecognizerOptions>);
|
|
28
|
+
update(config: RecognizerConfig<PanRecognizerOptions>): void;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
declare interface PanRecognizerInterface extends Recognizer<PanRecognizerOptions, PanEvent_2> {
|
|
32
|
+
events$: Observable<PanEvent_2>;
|
|
33
|
+
update(options: RecognizerConfig<PanRecognizerOptions>): void;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
declare interface PanRecognizerOptions {
|
|
37
|
+
/**
|
|
38
|
+
* @default 15
|
|
39
|
+
*/
|
|
40
|
+
posThreshold?: number;
|
|
41
|
+
delay?: number;
|
|
42
|
+
numInputs?: number;
|
|
55
43
|
}
|
|
56
44
|
|
|
57
45
|
export declare interface PinchEvent extends RecognizerEvent {
|
|
@@ -71,24 +59,106 @@ export declare interface PinchEvent extends RecognizerEvent {
|
|
|
71
59
|
deltaDistanceScale: number;
|
|
72
60
|
}
|
|
73
61
|
|
|
74
|
-
export declare class PinchRecognizer extends Recognizer<
|
|
75
|
-
|
|
62
|
+
export declare class PinchRecognizer extends Recognizer<PinchRecognizerOptions, PinchEvent> implements PinchRecognizerInterface {
|
|
63
|
+
events$: Observable<PinchEvent>;
|
|
64
|
+
constructor(config?: RecognizerConfig<PinchRecognizerOptions>);
|
|
65
|
+
update(options: RecognizerConfig<PinchRecognizerOptions>): void;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
declare interface PinchRecognizerInterface extends Recognizer<PinchRecognizerOptions, PinchEvent> {
|
|
76
69
|
events$: Observable<PinchEvent>;
|
|
77
|
-
|
|
70
|
+
update(options: RecognizerConfig<PinchRecognizerOptions>): void;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
declare interface PinchRecognizerOptions {
|
|
74
|
+
posThreshold?: number;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
export declare class Recognizable<T extends Recognizer<any, any>[]> implements RecognizableInterface<T> {
|
|
78
|
+
protected options: {
|
|
79
|
+
recognizers: T;
|
|
80
|
+
afterEventReceived?: (event: PointerEvent) => PointerEvent;
|
|
81
|
+
};
|
|
82
|
+
events$: Observable<ObservedValueOf<T[number]["events$"]>>;
|
|
83
|
+
recognizers: T;
|
|
84
|
+
state$: Observable<RecognizableState>;
|
|
85
|
+
constructor(options: {
|
|
86
|
+
recognizers: T;
|
|
87
|
+
afterEventReceived?: (event: PointerEvent) => PointerEvent;
|
|
88
|
+
});
|
|
89
|
+
initialize(container: HTMLElement): void;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
declare interface RecognizableInterface<T extends Recognizer<any, any>[]> {
|
|
93
|
+
/**
|
|
94
|
+
* List of recognizers registered.
|
|
95
|
+
*
|
|
96
|
+
* You can access them directly from here if needed.
|
|
97
|
+
*/
|
|
98
|
+
readonly recognizers: T;
|
|
99
|
+
/**
|
|
100
|
+
* Dispatch events from all recognizer in one place.
|
|
101
|
+
*/
|
|
102
|
+
readonly events$: Observable<ObservedValueOf<T[number]["events$"]>>;
|
|
103
|
+
/**
|
|
104
|
+
* Global state based on registered recognizers.
|
|
105
|
+
*
|
|
106
|
+
* It is similar to the recognizer state but is a conveniant access
|
|
107
|
+
* which merge all their state together.
|
|
108
|
+
*/
|
|
109
|
+
readonly state$: Observable<RecognizableState>;
|
|
110
|
+
/**
|
|
111
|
+
* Initialize the instance with a given html element.
|
|
112
|
+
*
|
|
113
|
+
* You can only initialize one element per instance but you can
|
|
114
|
+
* change the element and call the method again if needed.
|
|
115
|
+
*/
|
|
116
|
+
initialize(container: HTMLElement): void;
|
|
78
117
|
}
|
|
79
118
|
|
|
80
|
-
declare
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
119
|
+
declare type RecognizableState = {
|
|
120
|
+
/**
|
|
121
|
+
* Number of maximum simultaneous fingers currently registered
|
|
122
|
+
* by all recognizers.
|
|
123
|
+
*
|
|
124
|
+
* You can use this to detect how many fingers are touching the screen.
|
|
125
|
+
*
|
|
126
|
+
* This is assuming one of your recognizer is registering gestures.
|
|
127
|
+
*/
|
|
128
|
+
fingers: number;
|
|
129
|
+
};
|
|
130
|
+
|
|
131
|
+
export declare abstract class Recognizer<Options extends Record<any, any>, Event extends RecognizerEvent> {
|
|
132
|
+
protected configSubject: BehaviorSubject<RecognizerConfig<Options> & {
|
|
133
|
+
panConfig?: PanConfig | undefined;
|
|
134
|
+
}>;
|
|
135
|
+
protected panEvent$: Observable<PanEvent>;
|
|
136
|
+
protected pointerEvent$: Observable<PointerEvent>;
|
|
137
|
+
protected pointerDown$: Observable<PointerEvent>;
|
|
138
|
+
protected pointerUp$: Observable<PointerEvent>;
|
|
139
|
+
protected pointerCancel$: Observable<PointerEvent>;
|
|
140
|
+
protected pointerMove$: Observable<PointerEvent>;
|
|
141
|
+
protected pointerOff$: Observable<PointerEvent>;
|
|
142
|
+
state$: Observable<State>;
|
|
143
|
+
abstract events$: Observable<Event>;
|
|
144
|
+
protected failWith$: Observable<unknown>;
|
|
145
|
+
protected config$: Observable<RecognizerConfig<Options> & {
|
|
146
|
+
panConfig?: PanConfig | undefined;
|
|
147
|
+
} & {
|
|
148
|
+
container: HTMLElement;
|
|
149
|
+
}>;
|
|
150
|
+
constructor(config?: RecognizerConfig<Options>, panConfig?: PanConfig);
|
|
151
|
+
private updateInternal;
|
|
152
|
+
update(config: Partial<RecognizerConfig<Options>>, panConfig?: PanConfig): void;
|
|
86
153
|
}
|
|
87
154
|
|
|
88
|
-
declare type RecognizerConfig<Options> = {
|
|
155
|
+
export declare type RecognizerConfig<Options> = {
|
|
89
156
|
container?: HTMLElement;
|
|
90
157
|
afterEventReceived?: (event: PointerEvent) => PointerEvent;
|
|
91
158
|
options?: Options;
|
|
159
|
+
failWith?: {
|
|
160
|
+
start$: Observable<unknown>;
|
|
161
|
+
}[];
|
|
92
162
|
};
|
|
93
163
|
|
|
94
164
|
declare interface RecognizerEvent {
|
|
@@ -134,14 +204,8 @@ declare interface RecognizerEvent {
|
|
|
134
204
|
pointersAverageDistance: number;
|
|
135
205
|
}
|
|
136
206
|
|
|
137
|
-
declare interface
|
|
138
|
-
|
|
139
|
-
start$: Observable<unknown>;
|
|
140
|
-
}[];
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
export declare interface RotateEvent extends RecognizerEvent {
|
|
144
|
-
type: "rotate" | "rotateStart" | "rotateEnd";
|
|
207
|
+
declare interface RotateEvent extends RecognizerEvent {
|
|
208
|
+
type: "rotateMove" | "rotateStart" | "rotateEnd";
|
|
145
209
|
/**
|
|
146
210
|
* Current rotation angle
|
|
147
211
|
*/
|
|
@@ -152,13 +216,37 @@ export declare interface RotateEvent extends RecognizerEvent {
|
|
|
152
216
|
deltaAngle: number;
|
|
153
217
|
}
|
|
154
218
|
|
|
155
|
-
export declare class RotateRecognizer extends Recognizer<
|
|
156
|
-
|
|
219
|
+
export declare class RotateRecognizer extends Recognizer<RotateRecognizerOptions, RotateEvent> implements RotateRecognizerInterface {
|
|
220
|
+
events$: Observable<RotateEvent>;
|
|
221
|
+
constructor(config?: RecognizerConfig<RotateRecognizerOptions>);
|
|
222
|
+
update(options: RecognizerConfig<RotateRecognizerOptions>): void;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
declare interface RotateRecognizerInterface extends Recognizer<RotateRecognizerOptions, RotateEvent> {
|
|
157
226
|
events$: Observable<RotateEvent>;
|
|
158
|
-
|
|
227
|
+
update(options: RecognizerConfig<RotateRecognizerOptions>): void;
|
|
159
228
|
}
|
|
160
229
|
|
|
161
|
-
|
|
230
|
+
declare interface RotateRecognizerOptions {
|
|
231
|
+
/**
|
|
232
|
+
* @default 15
|
|
233
|
+
*/
|
|
234
|
+
posThreshold?: number;
|
|
235
|
+
/**
|
|
236
|
+
* Minimum fingers required to trigger.
|
|
237
|
+
*
|
|
238
|
+
* A value lower than 2 will not work
|
|
239
|
+
*
|
|
240
|
+
* @default 2
|
|
241
|
+
*/
|
|
242
|
+
numInputs?: number;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
export declare type State = {
|
|
246
|
+
fingers: number;
|
|
247
|
+
};
|
|
248
|
+
|
|
249
|
+
declare interface SwipeEvent extends RecognizerEvent {
|
|
162
250
|
type: "swipe";
|
|
163
251
|
/**
|
|
164
252
|
* Angle between first pointer and last one in degree
|
|
@@ -170,23 +258,80 @@ export declare interface SwipeEvent extends RecognizerEvent {
|
|
|
170
258
|
angle: number;
|
|
171
259
|
}
|
|
172
260
|
|
|
173
|
-
export declare class SwipeRecognizer extends Recognizer<
|
|
174
|
-
protected options: Options_2;
|
|
261
|
+
export declare class SwipeRecognizer extends Recognizer<SwipeRecognizerOptions, SwipeEvent> implements SwipeRecognizerInterface {
|
|
175
262
|
events$: Observable<SwipeEvent>;
|
|
176
|
-
constructor(
|
|
263
|
+
constructor(config?: RecognizerConfig<SwipeRecognizerOptions>);
|
|
264
|
+
update(config: RecognizerConfig<SwipeRecognizerOptions>): void;
|
|
177
265
|
}
|
|
178
266
|
|
|
179
|
-
|
|
267
|
+
declare interface SwipeRecognizerInterface extends Recognizer<SwipeRecognizerOptions, SwipeEvent> {
|
|
268
|
+
events$: Observable<SwipeEvent>;
|
|
269
|
+
update(options: RecognizerConfig<SwipeRecognizerOptions>): void;
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
declare interface SwipeRecognizerOptions {
|
|
273
|
+
/**
|
|
274
|
+
* The minimum velocity (px/ms) that the gesture has to obtain by the end event.
|
|
275
|
+
*
|
|
276
|
+
* @default 0.9
|
|
277
|
+
*/
|
|
278
|
+
escapeVelocity?: number;
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
declare interface TapEvent extends RecognizerEvent {
|
|
180
282
|
type: "tap";
|
|
181
283
|
taps: number;
|
|
182
284
|
}
|
|
183
285
|
|
|
184
|
-
export declare class TapRecognizer extends Recognizer<
|
|
185
|
-
|
|
286
|
+
export declare class TapRecognizer extends Recognizer<TapRecognizerOptions, TapEvent> implements TapRecognizerInterface {
|
|
287
|
+
events$: Observable<TapEvent>;
|
|
288
|
+
constructor(options?: RecognizerConfig<TapRecognizerOptions>);
|
|
289
|
+
update(config: RecognizerConfig<TapRecognizerOptions>): void;
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
declare interface TapRecognizerInterface extends Recognizer<TapRecognizerOptions, TapEvent> {
|
|
186
293
|
events$: Observable<TapEvent>;
|
|
187
|
-
|
|
294
|
+
update(options: RecognizerConfig<TapRecognizerOptions>): void;
|
|
188
295
|
}
|
|
189
296
|
|
|
190
|
-
declare
|
|
297
|
+
declare interface TapRecognizerOptions {
|
|
298
|
+
/**
|
|
299
|
+
* Introduce a delay before recognizing a tap. This can be used to register more taps.
|
|
300
|
+
*
|
|
301
|
+
*
|
|
302
|
+
* A longer time will delay the click event but make it easier to multi taps.
|
|
303
|
+
* Try to find a good balance between latency and accessibility.
|
|
304
|
+
*
|
|
305
|
+
* @default 0
|
|
306
|
+
*/
|
|
307
|
+
multiTapThreshold?: number;
|
|
308
|
+
/**
|
|
309
|
+
* Maximum time you allow a finger to be pressed on the screen before cancelling the gesture.
|
|
310
|
+
*
|
|
311
|
+
* This can be used to allow long press for example.
|
|
312
|
+
* The default value does not really allow long press but rather accomodate for slower
|
|
313
|
+
* taps.
|
|
314
|
+
*
|
|
315
|
+
* @default 150
|
|
316
|
+
*/
|
|
317
|
+
maximumPressTime?: number;
|
|
318
|
+
/**
|
|
319
|
+
* Maximum number of taps allowed for the gesture. Going above will ignore the gesture.
|
|
320
|
+
* Going below will register a gesture with the number of taps.
|
|
321
|
+
*
|
|
322
|
+
* For example you can allow single and double tap only by setting `2` as value.
|
|
323
|
+
*
|
|
324
|
+
* @default 1
|
|
325
|
+
*/
|
|
326
|
+
maxTaps?: number;
|
|
327
|
+
/**
|
|
328
|
+
* A tolerance value which allows the user to move their finger about a radius measured in pixels.
|
|
329
|
+
* This allows the Tap gesture to be triggered more easily since a User might move their
|
|
330
|
+
* finger slightly during a tap event.
|
|
331
|
+
*
|
|
332
|
+
* @default 10
|
|
333
|
+
*/
|
|
334
|
+
tolerance?: number;
|
|
335
|
+
}
|
|
191
336
|
|
|
192
337
|
export { }
|