react-native-gesture-handler 2.16.2 → 2.17.1
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 +9 -3
- package/android/build.gradle +103 -0
- package/android/gradle.properties +7 -0
- package/android/paper/src/main/java/com/facebook/react/viewmanagers/RNGestureHandlerButtonManagerDelegate.java +7 -7
- package/android/src/main/java/com/swmansion/gesturehandler/core/NativeViewGestureHandler.kt +16 -8
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.kt +9 -5
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerInteractionManager.kt +4 -0
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.kt +1 -1
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerTouchEvent.kt +1 -0
- package/apple/RNGestureHandlerButtonComponentView.mm +10 -0
- package/apple/RNGestureHandlerModule.mm +2 -3
- package/lib/commonjs/components/GestureButtons.js +27 -12
- package/lib/commonjs/components/GestureButtons.js.map +1 -1
- package/lib/commonjs/handlers/createHandler.js +1 -3
- package/lib/commonjs/handlers/createHandler.js.map +1 -1
- package/lib/commonjs/handlers/gestureHandlerCommon.js +3 -3
- package/lib/commonjs/handlers/gestureHandlerCommon.js.map +1 -1
- package/lib/commonjs/handlers/gestures/GestureDetector/Wrap.js +42 -0
- package/lib/commonjs/handlers/gestures/GestureDetector/Wrap.js.map +1 -0
- package/lib/commonjs/handlers/gestures/GestureDetector/attachHandlers.js +83 -0
- package/lib/commonjs/handlers/gestures/GestureDetector/attachHandlers.js.map +1 -0
- package/lib/commonjs/handlers/gestures/GestureDetector/dropHandlers.js +25 -0
- package/lib/commonjs/handlers/gestures/GestureDetector/dropHandlers.js.map +1 -0
- package/lib/commonjs/handlers/gestures/GestureDetector/index.js +143 -0
- package/lib/commonjs/handlers/gestures/GestureDetector/index.js.map +1 -0
- package/lib/commonjs/handlers/gestures/GestureDetector/needsToReattach.js +25 -0
- package/lib/commonjs/handlers/gestures/GestureDetector/needsToReattach.js.map +1 -0
- package/lib/commonjs/handlers/gestures/GestureDetector/types.js +6 -0
- package/lib/commonjs/handlers/gestures/GestureDetector/types.js.map +1 -0
- package/lib/commonjs/handlers/gestures/GestureDetector/updateHandlers.js +80 -0
- package/lib/commonjs/handlers/gestures/GestureDetector/updateHandlers.js.map +1 -0
- package/lib/commonjs/handlers/gestures/GestureDetector/useAnimatedGesture.js +180 -0
- package/lib/commonjs/handlers/gestures/GestureDetector/useAnimatedGesture.js.map +1 -0
- package/lib/commonjs/handlers/gestures/GestureDetector/useDetectorUpdater.js +55 -0
- package/lib/commonjs/handlers/gestures/GestureDetector/useDetectorUpdater.js.map +1 -0
- package/lib/commonjs/handlers/gestures/GestureDetector/useViewRefHandler.js +47 -0
- package/lib/commonjs/handlers/gestures/GestureDetector/useViewRefHandler.js.map +1 -0
- package/lib/commonjs/handlers/gestures/GestureDetector/utils.js +176 -0
- package/lib/commonjs/handlers/gestures/GestureDetector/utils.js.map +1 -0
- package/lib/commonjs/handlers/gestures/gestureComposition.js +3 -1
- package/lib/commonjs/handlers/gestures/gestureComposition.js.map +1 -1
- package/lib/commonjs/handlers/gestures/gestureStateManager.js +8 -0
- package/lib/commonjs/handlers/gestures/gestureStateManager.js.map +1 -1
- package/lib/commonjs/handlers/gestures/reanimatedWrapper.js.map +1 -1
- package/lib/commonjs/utils.js +36 -0
- package/lib/commonjs/utils.js.map +1 -1
- package/lib/commonjs/web/detectors/RotationGestureDetector.js +6 -8
- package/lib/commonjs/web/detectors/RotationGestureDetector.js.map +1 -1
- package/lib/commonjs/web/detectors/ScaleGestureDetector.js +5 -6
- package/lib/commonjs/web/detectors/ScaleGestureDetector.js.map +1 -1
- package/lib/commonjs/web/handlers/FlingGestureHandler.js +1 -0
- package/lib/commonjs/web/handlers/FlingGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/GestureHandler.js +56 -64
- package/lib/commonjs/web/handlers/GestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/LongPressGestureHandler.js +1 -0
- package/lib/commonjs/web/handlers/LongPressGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/ManualGestureHandler.js +1 -0
- package/lib/commonjs/web/handlers/ManualGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/NativeViewGestureHandler.js +7 -4
- package/lib/commonjs/web/handlers/NativeViewGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/PanGestureHandler.js +28 -18
- package/lib/commonjs/web/handlers/PanGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/PinchGestureHandler.js +1 -0
- package/lib/commonjs/web/handlers/PinchGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/RotationGestureHandler.js +1 -0
- package/lib/commonjs/web/handlers/RotationGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/TapGestureHandler.js +18 -12
- package/lib/commonjs/web/handlers/TapGestureHandler.js.map +1 -1
- package/lib/commonjs/web/interfaces.js.map +1 -1
- package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js +1 -6
- package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js.map +1 -1
- package/lib/commonjs/web/tools/PointerEventManager.js +7 -2
- package/lib/commonjs/web/tools/PointerEventManager.js.map +1 -1
- package/lib/commonjs/web/tools/PointerTracker.js +89 -57
- package/lib/commonjs/web/tools/PointerTracker.js.map +1 -1
- package/lib/commonjs/web/tools/TouchEventManager.js +6 -2
- package/lib/commonjs/web/tools/TouchEventManager.js.map +1 -1
- package/lib/commonjs/web/tools/Vector.js +2 -1
- package/lib/commonjs/web/tools/Vector.js.map +1 -1
- package/lib/commonjs/web/utils.js +31 -0
- package/lib/commonjs/web/utils.js.map +1 -1
- package/lib/module/components/GestureButtons.js +24 -6
- package/lib/module/components/GestureButtons.js.map +1 -1
- package/lib/module/handlers/createHandler.js +2 -4
- package/lib/module/handlers/createHandler.js.map +1 -1
- package/lib/module/handlers/gestureHandlerCommon.js +1 -1
- package/lib/module/handlers/gestureHandlerCommon.js.map +1 -1
- package/lib/module/handlers/gestures/GestureDetector/Wrap.js +26 -0
- package/lib/module/handlers/gestures/GestureDetector/Wrap.js.map +1 -0
- package/lib/module/handlers/gestures/GestureDetector/attachHandlers.js +65 -0
- package/lib/module/handlers/gestures/GestureDetector/attachHandlers.js.map +1 -0
- package/lib/module/handlers/gestures/GestureDetector/dropHandlers.js +12 -0
- package/lib/module/handlers/gestures/GestureDetector/dropHandlers.js.map +1 -0
- package/lib/module/handlers/gestures/GestureDetector/index.js +115 -0
- package/lib/module/handlers/gestures/GestureDetector/index.js.map +1 -0
- package/lib/module/handlers/gestures/GestureDetector/needsToReattach.js +18 -0
- package/lib/module/handlers/gestures/GestureDetector/needsToReattach.js.map +1 -0
- package/lib/module/handlers/gestures/GestureDetector/types.js +2 -0
- package/lib/module/handlers/gestures/GestureDetector/types.js.map +1 -0
- package/lib/module/handlers/gestures/GestureDetector/updateHandlers.js +64 -0
- package/lib/module/handlers/gestures/GestureDetector/updateHandlers.js.map +1 -0
- package/lib/module/handlers/gestures/GestureDetector/useAnimatedGesture.js +165 -0
- package/lib/module/handlers/gestures/GestureDetector/useAnimatedGesture.js.map +1 -0
- package/lib/module/handlers/gestures/GestureDetector/useDetectorUpdater.js +41 -0
- package/lib/module/handlers/gestures/GestureDetector/useDetectorUpdater.js.map +1 -0
- package/lib/module/handlers/gestures/GestureDetector/useViewRefHandler.js +36 -0
- package/lib/module/handlers/gestures/GestureDetector/useViewRefHandler.js.map +1 -0
- package/lib/module/handlers/gestures/GestureDetector/utils.js +142 -0
- package/lib/module/handlers/gestures/GestureDetector/utils.js.map +1 -0
- package/lib/module/handlers/gestures/gestureComposition.js +3 -1
- package/lib/module/handlers/gestures/gestureComposition.js.map +1 -1
- package/lib/module/handlers/gestures/gestureStateManager.js +8 -0
- package/lib/module/handlers/gestures/gestureStateManager.js.map +1 -1
- package/lib/module/handlers/gestures/reanimatedWrapper.js.map +1 -1
- package/lib/module/utils.js +34 -0
- package/lib/module/utils.js.map +1 -1
- package/lib/module/web/detectors/RotationGestureDetector.js +6 -8
- package/lib/module/web/detectors/RotationGestureDetector.js.map +1 -1
- package/lib/module/web/detectors/ScaleGestureDetector.js +5 -6
- package/lib/module/web/detectors/ScaleGestureDetector.js.map +1 -1
- package/lib/module/web/handlers/FlingGestureHandler.js +1 -0
- package/lib/module/web/handlers/FlingGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/GestureHandler.js +56 -64
- package/lib/module/web/handlers/GestureHandler.js.map +1 -1
- package/lib/module/web/handlers/LongPressGestureHandler.js +1 -0
- package/lib/module/web/handlers/LongPressGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/ManualGestureHandler.js +1 -0
- package/lib/module/web/handlers/ManualGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/NativeViewGestureHandler.js +7 -4
- package/lib/module/web/handlers/NativeViewGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/PanGestureHandler.js +28 -18
- package/lib/module/web/handlers/PanGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/PinchGestureHandler.js +1 -0
- package/lib/module/web/handlers/PinchGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/RotationGestureHandler.js +1 -0
- package/lib/module/web/handlers/RotationGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/TapGestureHandler.js +18 -12
- package/lib/module/web/handlers/TapGestureHandler.js.map +1 -1
- package/lib/module/web/interfaces.js.map +1 -1
- package/lib/module/web/tools/GestureHandlerOrchestrator.js +1 -6
- package/lib/module/web/tools/GestureHandlerOrchestrator.js.map +1 -1
- package/lib/module/web/tools/PointerEventManager.js +8 -3
- package/lib/module/web/tools/PointerEventManager.js.map +1 -1
- package/lib/module/web/tools/PointerTracker.js +89 -57
- package/lib/module/web/tools/PointerTracker.js.map +1 -1
- package/lib/module/web/tools/TouchEventManager.js +7 -3
- package/lib/module/web/tools/TouchEventManager.js.map +1 -1
- package/lib/module/web/tools/Vector.js +2 -1
- package/lib/module/web/tools/Vector.js.map +1 -1
- package/lib/module/web/utils.js +29 -0
- package/lib/module/web/utils.js.map +1 -1
- package/lib/typescript/components/GestureButtons.d.ts +3 -34
- package/lib/typescript/handlers/gestureHandlerCommon.d.ts +3 -2
- package/lib/typescript/handlers/gestures/GestureDetector/Wrap.d.ts +13 -0
- package/lib/typescript/handlers/gestures/GestureDetector/attachHandlers.d.ts +13 -0
- package/lib/typescript/handlers/gestures/GestureDetector/dropHandlers.d.ts +2 -0
- package/lib/typescript/handlers/gestures/{GestureDetector.d.ts → GestureDetector/index.d.ts} +4 -12
- package/lib/typescript/handlers/gestures/GestureDetector/needsToReattach.d.ts +3 -0
- package/lib/typescript/handlers/gestures/GestureDetector/types.d.ts +20 -0
- package/lib/typescript/handlers/gestures/GestureDetector/updateHandlers.d.ts +4 -0
- package/lib/typescript/handlers/gestures/GestureDetector/useAnimatedGesture.d.ts +2 -0
- package/lib/typescript/handlers/gestures/GestureDetector/useDetectorUpdater.d.ts +5 -0
- package/lib/typescript/handlers/gestures/GestureDetector/useViewRefHandler.d.ts +3 -0
- package/lib/typescript/handlers/gestures/GestureDetector/utils.d.ts +12 -0
- package/lib/typescript/handlers/gestures/reanimatedWrapper.d.ts +1 -1
- package/lib/typescript/utils.d.ts +10 -0
- package/lib/typescript/web/handlers/GestureHandler.d.ts +1 -0
- package/lib/typescript/web/interfaces.d.ts +1 -0
- package/lib/typescript/web/tools/PointerTracker.d.ts +34 -31
- package/lib/typescript/web/utils.d.ts +4 -0
- package/package.json +5 -5
- package/src/components/GestureButtons.tsx +36 -4
- package/src/handlers/createHandler.tsx +1 -3
- package/src/handlers/gestureHandlerCommon.ts +4 -1
- package/src/handlers/gestures/GestureDetector/Wrap.tsx +35 -0
- package/src/handlers/gestures/GestureDetector/attachHandlers.ts +112 -0
- package/src/handlers/gestures/GestureDetector/dropHandlers.ts +14 -0
- package/src/handlers/gestures/GestureDetector/index.tsx +187 -0
- package/src/handlers/gestures/GestureDetector/needsToReattach.ts +27 -0
- package/src/handlers/gestures/GestureDetector/types.ts +32 -0
- package/src/handlers/gestures/GestureDetector/updateHandlers.ts +94 -0
- package/src/handlers/gestures/GestureDetector/useAnimatedGesture.ts +206 -0
- package/src/handlers/gestures/GestureDetector/useDetectorUpdater.ts +69 -0
- package/src/handlers/gestures/GestureDetector/useViewRefHandler.ts +54 -0
- package/src/handlers/gestures/GestureDetector/utils.ts +185 -0
- package/src/handlers/gestures/gestureComposition.ts +2 -0
- package/src/handlers/gestures/gestureStateManager.ts +12 -4
- package/src/handlers/gestures/reanimatedWrapper.ts +19 -17
- package/src/utils.ts +39 -0
- package/src/web/detectors/RotationGestureDetector.ts +6 -8
- package/src/web/detectors/ScaleGestureDetector.ts +5 -6
- package/src/web/handlers/FlingGestureHandler.ts +2 -0
- package/src/web/handlers/GestureHandler.ts +53 -62
- package/src/web/handlers/LongPressGestureHandler.ts +2 -0
- package/src/web/handlers/ManualGestureHandler.ts +2 -0
- package/src/web/handlers/NativeViewGestureHandler.ts +8 -4
- package/src/web/handlers/PanGestureHandler.ts +32 -19
- package/src/web/handlers/PinchGestureHandler.ts +2 -0
- package/src/web/handlers/RotationGestureHandler.ts +2 -0
- package/src/web/handlers/TapGestureHandler.ts +20 -12
- package/src/web/interfaces.ts +1 -0
- package/src/web/tools/GestureHandlerOrchestrator.ts +1 -7
- package/src/web/tools/PointerEventManager.ts +10 -3
- package/src/web/tools/PointerTracker.ts +81 -74
- package/src/web/tools/TouchEventManager.ts +5 -3
- package/src/web/tools/Vector.ts +2 -4
- package/src/web/utils.ts +34 -0
- package/lib/commonjs/handlers/gestures/GestureDetector.js +0 -704
- package/lib/commonjs/handlers/gestures/GestureDetector.js.map +0 -1
- package/lib/module/handlers/gestures/GestureDetector.js +0 -654
- package/lib/module/handlers/gestures/GestureDetector.js.map +0 -1
- package/src/handlers/gestures/GestureDetector.tsx +0 -889
|
@@ -267,39 +267,26 @@ export default class GestureHandler {
|
|
|
267
267
|
|
|
268
268
|
if (this.pointerType === PointerType.TOUCH) {
|
|
269
269
|
GestureHandlerOrchestrator.getInstance().cancelMouseAndPenGestures(this);
|
|
270
|
-
}
|
|
270
|
+
} // TODO: Bring back touch events along with introducing `handleDown` method that will handle handler specific stuff
|
|
271
271
|
|
|
272
|
-
if (this.config.needsPointerData) {
|
|
273
|
-
this.sendTouchEvent(event);
|
|
274
|
-
}
|
|
275
272
|
} // Adding another pointer to existing ones
|
|
276
273
|
|
|
277
274
|
|
|
278
275
|
onPointerAdd(event) {
|
|
279
|
-
|
|
280
|
-
this.sendTouchEvent(event);
|
|
281
|
-
}
|
|
276
|
+
this.tryToSendTouchEvent(event);
|
|
282
277
|
}
|
|
283
278
|
|
|
284
279
|
onPointerUp(event) {
|
|
285
|
-
|
|
286
|
-
this.sendTouchEvent(event);
|
|
287
|
-
}
|
|
280
|
+
this.tryToSendTouchEvent(event);
|
|
288
281
|
} // Removing pointer, when there is more than one pointers
|
|
289
282
|
|
|
290
283
|
|
|
291
284
|
onPointerRemove(event) {
|
|
292
|
-
|
|
293
|
-
this.sendTouchEvent(event);
|
|
294
|
-
}
|
|
285
|
+
this.tryToSendTouchEvent(event);
|
|
295
286
|
}
|
|
296
287
|
|
|
297
288
|
onPointerMove(event) {
|
|
298
|
-
this.tryToSendMoveEvent(false);
|
|
299
|
-
|
|
300
|
-
if (this.config.needsPointerData) {
|
|
301
|
-
this.sendTouchEvent(event);
|
|
302
|
-
}
|
|
289
|
+
this.tryToSendMoveEvent(false, event);
|
|
303
290
|
}
|
|
304
291
|
|
|
305
292
|
onPointerLeave(event) {
|
|
@@ -317,32 +304,21 @@ export default class GestureHandler {
|
|
|
317
304
|
return;
|
|
318
305
|
}
|
|
319
306
|
|
|
320
|
-
|
|
321
|
-
this.sendTouchEvent(event);
|
|
322
|
-
}
|
|
307
|
+
this.tryToSendTouchEvent(event);
|
|
323
308
|
}
|
|
324
309
|
|
|
325
310
|
onPointerEnter(event) {
|
|
326
|
-
|
|
327
|
-
this.sendTouchEvent(event);
|
|
328
|
-
}
|
|
311
|
+
this.tryToSendTouchEvent(event);
|
|
329
312
|
}
|
|
330
313
|
|
|
331
314
|
onPointerCancel(event) {
|
|
332
|
-
|
|
333
|
-
this.sendTouchEvent(event);
|
|
334
|
-
}
|
|
335
|
-
|
|
315
|
+
this.tryToSendTouchEvent(event);
|
|
336
316
|
this.cancel();
|
|
337
317
|
this.reset();
|
|
338
318
|
}
|
|
339
319
|
|
|
340
320
|
onPointerOutOfBounds(event) {
|
|
341
|
-
this.tryToSendMoveEvent(true);
|
|
342
|
-
|
|
343
|
-
if (this.config.needsPointerData) {
|
|
344
|
-
this.sendTouchEvent(event);
|
|
345
|
-
}
|
|
321
|
+
this.tryToSendMoveEvent(true, event);
|
|
346
322
|
}
|
|
347
323
|
|
|
348
324
|
onPointerMoveOver(_event) {// used only by hover gesture handler atm
|
|
@@ -351,10 +327,22 @@ export default class GestureHandler {
|
|
|
351
327
|
onPointerMoveOut(_event) {// used only by hover gesture handler atm
|
|
352
328
|
}
|
|
353
329
|
|
|
354
|
-
tryToSendMoveEvent(out) {
|
|
355
|
-
if (
|
|
330
|
+
tryToSendMoveEvent(out, event) {
|
|
331
|
+
if (out && this.shouldCancelWhenOutside || !this.enabled) {
|
|
332
|
+
return;
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
if (this.active) {
|
|
356
336
|
this.sendEvent(this.currentState, this.currentState);
|
|
357
337
|
}
|
|
338
|
+
|
|
339
|
+
this.tryToSendTouchEvent(event);
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
tryToSendTouchEvent(event) {
|
|
343
|
+
if (this.config.needsPointerData) {
|
|
344
|
+
this.sendTouchEvent(event);
|
|
345
|
+
}
|
|
358
346
|
}
|
|
359
347
|
|
|
360
348
|
sendTouchEvent(event) {
|
|
@@ -380,10 +368,7 @@ export default class GestureHandler {
|
|
|
380
368
|
nativeEvent: {
|
|
381
369
|
numberOfPointers: this.tracker.getTrackedPointersCount(),
|
|
382
370
|
state: newState,
|
|
383
|
-
pointerInside: this.delegate.isPointerInBounds(
|
|
384
|
-
x: this.tracker.getLastAvgX(),
|
|
385
|
-
y: this.tracker.getLastAvgY()
|
|
386
|
-
}),
|
|
371
|
+
pointerInside: this.delegate.isPointerInBounds(this.tracker.getAbsoluteCoordsAverage()),
|
|
387
372
|
...this.transformNativeEvent(),
|
|
388
373
|
handlerTag: this.handlerTag,
|
|
389
374
|
target: this.viewRef,
|
|
@@ -413,10 +398,10 @@ export default class GestureHandler {
|
|
|
413
398
|
const id = this.tracker.getMappedTouchEventId(key);
|
|
414
399
|
all.push({
|
|
415
400
|
id: id,
|
|
416
|
-
x: element.
|
|
417
|
-
y: element.
|
|
418
|
-
absoluteX: element.
|
|
419
|
-
absoluteY: element.
|
|
401
|
+
x: element.abosoluteCoords.x - rect.pageX,
|
|
402
|
+
y: element.abosoluteCoords.y - rect.pageY,
|
|
403
|
+
absoluteX: element.abosoluteCoords.x,
|
|
404
|
+
absoluteY: element.abosoluteCoords.y
|
|
420
405
|
});
|
|
421
406
|
}); // Each pointer sends its own event, so we want changed touches to contain only the pointer that has changed.
|
|
422
407
|
// However, if the event is cancel, we want to cancel all pointers to avoid crashes
|
|
@@ -434,10 +419,10 @@ export default class GestureHandler {
|
|
|
434
419
|
const id = this.tracker.getMappedTouchEventId(key);
|
|
435
420
|
changed.push({
|
|
436
421
|
id: id,
|
|
437
|
-
x: element.
|
|
438
|
-
y: element.
|
|
439
|
-
absoluteX: element.
|
|
440
|
-
absoluteY: element.
|
|
422
|
+
x: element.abosoluteCoords.x - rect.pageX,
|
|
423
|
+
y: element.abosoluteCoords.y - rect.pageY,
|
|
424
|
+
absoluteX: element.abosoluteCoords.x,
|
|
425
|
+
absoluteY: element.abosoluteCoords.y
|
|
441
426
|
});
|
|
442
427
|
});
|
|
443
428
|
}
|
|
@@ -480,7 +465,8 @@ export default class GestureHandler {
|
|
|
480
465
|
eventType: (_event$touchEventType = event.touchEventType) !== null && _event$touchEventType !== void 0 ? _event$touchEventType : eventType,
|
|
481
466
|
changedTouches: changed,
|
|
482
467
|
allTouches: all,
|
|
483
|
-
numberOfTouches: numberOfTouches
|
|
468
|
+
numberOfTouches: numberOfTouches,
|
|
469
|
+
pointerType: this.pointerType
|
|
484
470
|
},
|
|
485
471
|
timeStamp: Date.now()
|
|
486
472
|
};
|
|
@@ -500,17 +486,17 @@ export default class GestureHandler {
|
|
|
500
486
|
const id = this.tracker.getMappedTouchEventId(key);
|
|
501
487
|
all.push({
|
|
502
488
|
id: id,
|
|
503
|
-
x: element.
|
|
504
|
-
y: element.
|
|
505
|
-
absoluteX: element.
|
|
506
|
-
absoluteY: element.
|
|
489
|
+
x: element.abosoluteCoords.x - rect.pageX,
|
|
490
|
+
y: element.abosoluteCoords.y - rect.pageY,
|
|
491
|
+
absoluteX: element.abosoluteCoords.x,
|
|
492
|
+
absoluteY: element.abosoluteCoords.y
|
|
507
493
|
});
|
|
508
494
|
changed.push({
|
|
509
495
|
id: id,
|
|
510
|
-
x: element.
|
|
511
|
-
y: element.
|
|
512
|
-
absoluteX: element.
|
|
513
|
-
absoluteY: element.
|
|
496
|
+
x: element.abosoluteCoords.x - rect.pageX,
|
|
497
|
+
y: element.abosoluteCoords.y - rect.pageY,
|
|
498
|
+
absoluteX: element.abosoluteCoords.x,
|
|
499
|
+
absoluteY: element.abosoluteCoords.y
|
|
514
500
|
});
|
|
515
501
|
});
|
|
516
502
|
const cancelEvent = {
|
|
@@ -520,7 +506,8 @@ export default class GestureHandler {
|
|
|
520
506
|
eventType: TouchEventType.CANCELLED,
|
|
521
507
|
changedTouches: changed,
|
|
522
508
|
allTouches: all,
|
|
523
|
-
numberOfTouches: all.length
|
|
509
|
+
numberOfTouches: all.length,
|
|
510
|
+
pointerType: this.pointerType
|
|
524
511
|
},
|
|
525
512
|
timeStamp: Date.now()
|
|
526
513
|
};
|
|
@@ -532,12 +519,13 @@ export default class GestureHandler {
|
|
|
532
519
|
|
|
533
520
|
transformNativeEvent() {
|
|
534
521
|
// those properties are shared by most handlers and if not this method will be overriden
|
|
535
|
-
const
|
|
522
|
+
const lastCoords = this.tracker.getAbsoluteCoordsAverage();
|
|
523
|
+
const lastRelativeCoords = this.tracker.getRelativeCoordsAverage();
|
|
536
524
|
return {
|
|
537
|
-
x:
|
|
538
|
-
y:
|
|
539
|
-
absoluteX:
|
|
540
|
-
absoluteY:
|
|
525
|
+
x: lastRelativeCoords.x,
|
|
526
|
+
y: lastRelativeCoords.y,
|
|
527
|
+
absoluteX: lastCoords.x,
|
|
528
|
+
absoluteY: lastCoords.y
|
|
541
529
|
};
|
|
542
530
|
} //
|
|
543
531
|
// Handling config
|
|
@@ -666,8 +654,12 @@ export default class GestureHandler {
|
|
|
666
654
|
}
|
|
667
655
|
|
|
668
656
|
const rect = this.delegate.measureView();
|
|
669
|
-
const
|
|
670
|
-
|
|
657
|
+
const {
|
|
658
|
+
x,
|
|
659
|
+
y
|
|
660
|
+
} = this.tracker.getLastAbsoluteCoords();
|
|
661
|
+
const offsetX = x - rect.pageX;
|
|
662
|
+
const offsetY = y - rect.pageY;
|
|
671
663
|
|
|
672
664
|
if (offsetX >= left && offsetX <= right && offsetY >= top && offsetY <= bottom) {
|
|
673
665
|
return true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["GestureHandler.ts"],"names":["State","TouchEventType","EventTypes","GestureHandlerOrchestrator","InteractionManager","PointerTracker","MouseButton","PointerType","GestureHandler","constructor","delegate","UNDETERMINED","enabled","MOUSE","newState","oldState","onGestureHandlerEvent","onGestureHandlerStateChange","propsRef","current","resultEvent","transformEventData","lastSentState","invokeNullableMethod","currentState","ACTIVE","nativeEvent","undefined","init","viewRef","attachEventManager","manager","setOnPointerDown","onPointerDown","bind","setOnPointerAdd","onPointerAdd","setOnPointerUp","onPointerUp","setOnPointerRemove","onPointerRemove","setOnPointerMove","onPointerMove","setOnPointerEnter","onPointerEnter","setOnPointerLeave","onPointerLeave","setOnPointerCancel","onPointerCancel","setOnPointerOutOfBounds","onPointerOutOfBounds","setOnPointerMoveOver","onPointerMoveOver","setOnPointerMoveOut","onPointerMoveOut","registerListeners","onCancel","onReset","resetProgress","reset","tracker","resetTracker","moveToState","sendIfDisabled","getTrackedPointersCount","config","needsPointerData","isFinished","cancelTouches","getInstance","onHandlerStateChange","onStateChange","_newState","_oldState","begin","checkHitSlop","BEGAN","fail","onFail","FAILED","cancel","CANCELLED","activate","force","manualActivation","onActivate","end","onEnd","END","isAwaiting","awaiting","setAwaiting","value","isActive","active","setActive","getShouldResetProgress","shouldResetProgress","setShouldResetProgress","getActivationIndex","activationIndex","setActivationIndex","shouldWaitForHandlerFailure","handler","shouldRequireToWaitForFailure","shouldRequireHandlerToWaitForFailure","shouldRecognizeSimultaneously","shouldBeCancelledByOther","shouldHandlerBeCancelledBy","event","recordHandlerIfNotPresent","pointerType","TOUCH","cancelMouseAndPenGestures","sendTouchEvent","tryToSendMoveEvent","shouldCancelWhenOutside","_event","out","sendEvent","touchEvent","transformTouchEvent","numberOfPointers","state","pointerInside","isPointerInBounds","x","getLastAvgX","y","getLastAvgY","transformNativeEvent","handlerTag","target","timeStamp","Date","now","rect","measureView","all","changed","trackerData","getData","size","has","pointerId","forEach","element","key","id","getMappedTouchEventId","push","lastX","pageX","lastY","pageY","absoluteX","absoluteY","eventType","CANCEL","DOWN","ADDITIONAL_POINTER_DOWN","UP","ADDITIONAL_POINTER_UP","MOVE","numberOfTouches","length","touchEventType","changedTouches","allTouches","cancelEvent","updateGestureConfig","props","setShouldCancelWhenOutside","validateHitSlops","removeHandlerFromOrchestrator","checkCustomActivationCriteria","criterias","indexOf","hasCustomActivationCriteria","hitSlop","left","right","width","Error","height","top","bottom","horizontal","vertical","offsetX","getLastX","offsetY","getLastY","isButtonInConfig","mouseButton","LEFT","resetConfig","onDestroy","destroy","getTag","setTag","tag","getConfig","getDelegate","getTracker","getTrackedPointersID","getState","isEnabled","shouldCancel","getShouldCancelWhenOutside","getPointerType","method","__getHandler","argMapping","__nodeConfig","Array","isArray","index","entries","nativeValue","setValue"],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-empty-function */\nimport { State } from '../../State';\nimport {\n Config,\n AdaptedEvent,\n PropsRef,\n ResultEvent,\n PointerData,\n ResultTouchEvent,\n TouchEventType,\n EventTypes,\n} from '../interfaces';\nimport EventManager from '../tools/EventManager';\nimport GestureHandlerOrchestrator from '../tools/GestureHandlerOrchestrator';\nimport InteractionManager from '../tools/InteractionManager';\nimport PointerTracker, { TrackerElement } from '../tools/PointerTracker';\nimport { GestureHandlerDelegate } from '../tools/GestureHandlerDelegate';\nimport IGestureHandler from './IGestureHandler';\nimport { MouseButton } from '../../handlers/gestureHandlerCommon';\nimport { PointerType } from '../../PointerType';\n\nexport default abstract class GestureHandler implements IGestureHandler {\n private lastSentState: State | null = null;\n protected currentState: State = State.UNDETERMINED;\n\n protected shouldCancelWhenOutside = false;\n protected hasCustomActivationCriteria = false;\n protected enabled = false;\n\n private viewRef!: number;\n private propsRef!: React.RefObject<unknown>;\n private handlerTag!: number;\n protected config: Config = { enabled: false };\n\n protected tracker: PointerTracker = new PointerTracker();\n\n // Orchestrator properties\n protected activationIndex = 0;\n protected awaiting = false;\n protected active = false;\n protected shouldResetProgress = false;\n protected pointerType: PointerType = PointerType.MOUSE;\n\n protected delegate: GestureHandlerDelegate<unknown, IGestureHandler>;\n\n public constructor(\n delegate: GestureHandlerDelegate<unknown, IGestureHandler>\n ) {\n this.delegate = delegate;\n }\n\n //\n // Initializing handler\n //\n\n protected init(viewRef: number, propsRef: React.RefObject<unknown>) {\n this.propsRef = propsRef;\n this.viewRef = viewRef;\n\n this.currentState = State.UNDETERMINED;\n\n this.delegate.init(viewRef, this);\n }\n\n public attachEventManager(manager: EventManager<unknown>): void {\n manager.setOnPointerDown(this.onPointerDown.bind(this));\n manager.setOnPointerAdd(this.onPointerAdd.bind(this));\n manager.setOnPointerUp(this.onPointerUp.bind(this));\n manager.setOnPointerRemove(this.onPointerRemove.bind(this));\n manager.setOnPointerMove(this.onPointerMove.bind(this));\n manager.setOnPointerEnter(this.onPointerEnter.bind(this));\n manager.setOnPointerLeave(this.onPointerLeave.bind(this));\n manager.setOnPointerCancel(this.onPointerCancel.bind(this));\n manager.setOnPointerOutOfBounds(this.onPointerOutOfBounds.bind(this));\n manager.setOnPointerMoveOver(this.onPointerMoveOver.bind(this));\n manager.setOnPointerMoveOut(this.onPointerMoveOut.bind(this));\n\n manager.registerListeners();\n }\n\n //\n // Resetting handler\n //\n\n protected onCancel(): void {}\n protected onReset(): void {}\n protected resetProgress(): void {}\n\n public reset(): void {\n this.tracker.resetTracker();\n this.onReset();\n this.resetProgress();\n this.delegate.reset();\n this.currentState = State.UNDETERMINED;\n }\n\n //\n // State logic\n //\n\n public moveToState(newState: State, sendIfDisabled?: boolean) {\n if (this.currentState === newState) {\n return;\n }\n\n const oldState = this.currentState;\n this.currentState = newState;\n\n if (\n this.tracker.getTrackedPointersCount() > 0 &&\n this.config.needsPointerData &&\n this.isFinished()\n ) {\n this.cancelTouches();\n }\n\n GestureHandlerOrchestrator.getInstance().onHandlerStateChange(\n this,\n newState,\n oldState,\n sendIfDisabled\n );\n\n this.onStateChange(newState, oldState);\n\n if (!this.enabled && this.isFinished()) {\n this.currentState = State.UNDETERMINED;\n }\n }\n\n protected onStateChange(_newState: State, _oldState: State): void {}\n\n public begin(): void {\n if (!this.checkHitSlop()) {\n return;\n }\n\n if (this.currentState === State.UNDETERMINED) {\n this.moveToState(State.BEGAN);\n }\n }\n\n /**\n * @param {boolean} sendIfDisabled - Used when handler becomes disabled. With this flag orchestrator will be forced to send fail event\n */\n public fail(sendIfDisabled?: boolean): void {\n if (\n this.currentState === State.ACTIVE ||\n this.currentState === State.BEGAN\n ) {\n // Here the order of calling the delegate and moveToState is important.\n // At this point we can use currentState as previuos state, because immediately after changing cursor we call moveToState method.\n this.delegate.onFail();\n\n this.moveToState(State.FAILED, sendIfDisabled);\n }\n\n this.resetProgress();\n }\n\n /**\n * @param {boolean} sendIfDisabled - Used when handler becomes disabled. With this flag orchestrator will be forced to send cancel event\n */\n public cancel(sendIfDisabled?: boolean): void {\n if (\n this.currentState === State.ACTIVE ||\n this.currentState === State.UNDETERMINED ||\n this.currentState === State.BEGAN\n ) {\n this.onCancel();\n\n // Same as above - order matters\n this.delegate.onCancel();\n\n this.moveToState(State.CANCELLED, sendIfDisabled);\n }\n }\n\n public activate(force = false) {\n if (\n (this.config.manualActivation !== true || force) &&\n (this.currentState === State.UNDETERMINED ||\n this.currentState === State.BEGAN)\n ) {\n this.delegate.onActivate();\n this.moveToState(State.ACTIVE);\n }\n }\n\n public end() {\n if (\n this.currentState === State.BEGAN ||\n this.currentState === State.ACTIVE\n ) {\n // Same as above - order matters\n this.delegate.onEnd();\n\n this.moveToState(State.END);\n }\n\n this.resetProgress();\n }\n\n //\n // Methods for orchestrator\n //\n\n public isAwaiting(): boolean {\n return this.awaiting;\n }\n public setAwaiting(value: boolean): void {\n this.awaiting = value;\n }\n\n public isActive(): boolean {\n return this.active;\n }\n public setActive(value: boolean): void {\n this.active = value;\n }\n\n public getShouldResetProgress(): boolean {\n return this.shouldResetProgress;\n }\n public setShouldResetProgress(value: boolean): void {\n this.shouldResetProgress = value;\n }\n\n public getActivationIndex(): number {\n return this.activationIndex;\n }\n public setActivationIndex(value: number): void {\n this.activationIndex = value;\n }\n\n public shouldWaitForHandlerFailure(handler: IGestureHandler): boolean {\n if (handler === this) {\n return false;\n }\n\n return InteractionManager.getInstance().shouldWaitForHandlerFailure(\n this,\n handler\n );\n }\n\n public shouldRequireToWaitForFailure(handler: IGestureHandler): boolean {\n if (handler === this) {\n return false;\n }\n\n return InteractionManager.getInstance().shouldRequireHandlerToWaitForFailure(\n this,\n handler\n );\n }\n\n public shouldRecognizeSimultaneously(handler: IGestureHandler): boolean {\n if (handler === this) {\n return true;\n }\n\n return InteractionManager.getInstance().shouldRecognizeSimultaneously(\n this,\n handler\n );\n }\n\n public shouldBeCancelledByOther(handler: IGestureHandler): boolean {\n if (handler === this) {\n return false;\n }\n\n return InteractionManager.getInstance().shouldHandlerBeCancelledBy(\n this,\n handler\n );\n }\n\n //\n // Event actions\n //\n\n protected onPointerDown(event: AdaptedEvent): void {\n GestureHandlerOrchestrator.getInstance().recordHandlerIfNotPresent(this);\n this.pointerType = event.pointerType;\n\n if (this.pointerType === PointerType.TOUCH) {\n GestureHandlerOrchestrator.getInstance().cancelMouseAndPenGestures(this);\n }\n\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n // Adding another pointer to existing ones\n protected onPointerAdd(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerUp(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n // Removing pointer, when there is more than one pointers\n protected onPointerRemove(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerMove(event: AdaptedEvent): void {\n this.tryToSendMoveEvent(false);\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerLeave(event: AdaptedEvent): void {\n if (this.shouldCancelWhenOutside) {\n switch (this.currentState) {\n case State.ACTIVE:\n this.cancel();\n break;\n case State.BEGAN:\n this.fail();\n break;\n }\n return;\n }\n\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerEnter(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerCancel(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n\n this.cancel();\n this.reset();\n }\n protected onPointerOutOfBounds(event: AdaptedEvent): void {\n this.tryToSendMoveEvent(true);\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerMoveOver(_event: AdaptedEvent): void {\n // used only by hover gesture handler atm\n }\n protected onPointerMoveOut(_event: AdaptedEvent): void {\n // used only by hover gesture handler atm\n }\n private tryToSendMoveEvent(out: boolean): void {\n if (\n this.enabled &&\n this.active &&\n (!out || (out && !this.shouldCancelWhenOutside))\n ) {\n this.sendEvent(this.currentState, this.currentState);\n }\n }\n\n public sendTouchEvent(event: AdaptedEvent): void {\n if (!this.enabled) {\n return;\n }\n\n const { onGestureHandlerEvent }: PropsRef = this.propsRef\n .current as PropsRef;\n\n const touchEvent: ResultTouchEvent | undefined =\n this.transformTouchEvent(event);\n\n if (touchEvent) {\n invokeNullableMethod(onGestureHandlerEvent, touchEvent);\n }\n }\n\n //\n // Events Sending\n //\n\n public sendEvent = (newState: State, oldState: State): void => {\n const { onGestureHandlerEvent, onGestureHandlerStateChange }: PropsRef =\n this.propsRef.current as PropsRef;\n\n const resultEvent: ResultEvent = this.transformEventData(\n newState,\n oldState\n );\n\n // In the new API oldState field has to be undefined, unless we send event state changed\n // Here the order is flipped to avoid workarounds such as making backup of the state and setting it to undefined first, then changing it back\n // Flipping order with setting oldState to undefined solves issue, when events were being sent twice instead of once\n // However, this may cause trouble in the future (but for now we don't know that)\n\n if (this.lastSentState !== newState) {\n this.lastSentState = newState;\n invokeNullableMethod(onGestureHandlerStateChange, resultEvent);\n }\n if (this.currentState === State.ACTIVE) {\n resultEvent.nativeEvent.oldState = undefined;\n invokeNullableMethod(onGestureHandlerEvent, resultEvent);\n }\n };\n\n private transformEventData(newState: State, oldState: State): ResultEvent {\n return {\n nativeEvent: {\n numberOfPointers: this.tracker.getTrackedPointersCount(),\n state: newState,\n pointerInside: this.delegate.isPointerInBounds({\n x: this.tracker.getLastAvgX(),\n y: this.tracker.getLastAvgY(),\n }),\n ...this.transformNativeEvent(),\n handlerTag: this.handlerTag,\n target: this.viewRef,\n oldState: newState !== oldState ? oldState : undefined,\n pointerType: this.pointerType,\n },\n timeStamp: Date.now(),\n };\n }\n\n private transformTouchEvent(\n event: AdaptedEvent\n ): ResultTouchEvent | undefined {\n const rect = this.delegate.measureView();\n\n const all: PointerData[] = [];\n const changed: PointerData[] = [];\n\n const trackerData = this.tracker.getData();\n\n // This if handles edge case where all pointers have been cancelled\n // When pointercancel is triggered, reset method is called. This means that tracker will be reset after first pointer being cancelled\n // The problem is, that handler will receive another pointercancel event from the rest of the pointers\n // To avoid crashing, we don't send event if tracker tracks no pointers, i.e. has been reset\n if (trackerData.size === 0 || !trackerData.has(event.pointerId)) {\n return;\n }\n\n trackerData.forEach((element: TrackerElement, key: number): void => {\n const id: number = this.tracker.getMappedTouchEventId(key);\n\n all.push({\n id: id,\n x: element.lastX - rect.pageX,\n y: element.lastY - rect.pageY,\n absoluteX: element.lastX,\n absoluteY: element.lastY,\n });\n });\n\n // Each pointer sends its own event, so we want changed touches to contain only the pointer that has changed.\n // However, if the event is cancel, we want to cancel all pointers to avoid crashes\n if (event.eventType !== EventTypes.CANCEL) {\n changed.push({\n id: this.tracker.getMappedTouchEventId(event.pointerId),\n x: event.x - rect.pageX,\n y: event.y - rect.pageY,\n absoluteX: event.x,\n absoluteY: event.y,\n });\n } else {\n trackerData.forEach((element: TrackerElement, key: number): void => {\n const id: number = this.tracker.getMappedTouchEventId(key);\n\n changed.push({\n id: id,\n x: element.lastX - rect.pageX,\n y: element.lastY - rect.pageY,\n absoluteX: element.lastX,\n absoluteY: element.lastY,\n });\n });\n }\n\n let eventType: TouchEventType = TouchEventType.UNDETERMINED;\n\n switch (event.eventType) {\n case EventTypes.DOWN:\n case EventTypes.ADDITIONAL_POINTER_DOWN:\n eventType = TouchEventType.DOWN;\n break;\n case EventTypes.UP:\n case EventTypes.ADDITIONAL_POINTER_UP:\n eventType = TouchEventType.UP;\n break;\n case EventTypes.MOVE:\n eventType = TouchEventType.MOVE;\n break;\n case EventTypes.CANCEL:\n eventType = TouchEventType.CANCELLED;\n break;\n }\n\n // Here, when we receive up event, we want to decrease number of touches\n // That's because we want handler to send information that there's one pointer less\n // However, we still want this pointer to be present in allTouches array, so that its data can be accessed\n let numberOfTouches: number = all.length;\n\n if (\n event.eventType === EventTypes.UP ||\n event.eventType === EventTypes.ADDITIONAL_POINTER_UP\n ) {\n --numberOfTouches;\n }\n\n return {\n nativeEvent: {\n handlerTag: this.handlerTag,\n state: this.currentState,\n eventType: event.touchEventType ?? eventType,\n changedTouches: changed,\n allTouches: all,\n numberOfTouches: numberOfTouches,\n },\n timeStamp: Date.now(),\n };\n }\n\n private cancelTouches(): void {\n const rect = this.delegate.measureView();\n\n const all: PointerData[] = [];\n const changed: PointerData[] = [];\n\n const trackerData = this.tracker.getData();\n\n if (trackerData.size === 0) {\n return;\n }\n\n trackerData.forEach((element: TrackerElement, key: number): void => {\n const id: number = this.tracker.getMappedTouchEventId(key);\n\n all.push({\n id: id,\n x: element.lastX - rect.pageX,\n y: element.lastY - rect.pageY,\n absoluteX: element.lastX,\n absoluteY: element.lastY,\n });\n\n changed.push({\n id: id,\n x: element.lastX - rect.pageX,\n y: element.lastY - rect.pageY,\n absoluteX: element.lastX,\n absoluteY: element.lastY,\n });\n });\n\n const cancelEvent: ResultTouchEvent = {\n nativeEvent: {\n handlerTag: this.handlerTag,\n state: this.currentState,\n eventType: TouchEventType.CANCELLED,\n changedTouches: changed,\n allTouches: all,\n numberOfTouches: all.length,\n },\n timeStamp: Date.now(),\n };\n\n const { onGestureHandlerEvent }: PropsRef = this.propsRef\n .current as PropsRef;\n\n invokeNullableMethod(onGestureHandlerEvent, cancelEvent);\n }\n\n protected transformNativeEvent(): Record<string, unknown> {\n // those properties are shared by most handlers and if not this method will be overriden\n const rect = this.delegate.measureView();\n\n return {\n x: this.tracker.getLastAvgX() - rect.pageX,\n y: this.tracker.getLastAvgY() - rect.pageY,\n absoluteX: this.tracker.getLastAvgX(),\n absoluteY: this.tracker.getLastAvgY(),\n };\n }\n\n //\n // Handling config\n //\n\n public updateGestureConfig({ enabled = true, ...props }: Config): void {\n this.config = { enabled: enabled, ...props };\n this.enabled = enabled;\n\n if (this.config.shouldCancelWhenOutside !== undefined) {\n this.setShouldCancelWhenOutside(this.config.shouldCancelWhenOutside);\n }\n\n this.validateHitSlops();\n\n if (this.enabled) {\n return;\n }\n\n switch (this.currentState) {\n case State.ACTIVE:\n this.fail(true);\n break;\n case State.UNDETERMINED:\n GestureHandlerOrchestrator.getInstance().removeHandlerFromOrchestrator(\n this\n );\n break;\n default:\n this.cancel(true);\n break;\n }\n }\n\n protected checkCustomActivationCriteria(criterias: string[]): void {\n for (const key in this.config) {\n if (criterias.indexOf(key) >= 0) {\n this.hasCustomActivationCriteria = true;\n }\n }\n }\n\n private validateHitSlops(): void {\n if (!this.config.hitSlop) {\n return;\n }\n\n if (\n this.config.hitSlop.left !== undefined &&\n this.config.hitSlop.right !== undefined &&\n this.config.hitSlop.width !== undefined\n ) {\n throw new Error(\n 'HitSlop Error: Cannot define left, right and width at the same time'\n );\n }\n\n if (\n this.config.hitSlop.width !== undefined &&\n this.config.hitSlop.left === undefined &&\n this.config.hitSlop.right === undefined\n ) {\n throw new Error(\n 'HitSlop Error: When width is defined, either left or right has to be defined'\n );\n }\n\n if (\n this.config.hitSlop.height !== undefined &&\n this.config.hitSlop.top !== undefined &&\n this.config.hitSlop.bottom !== undefined\n ) {\n throw new Error(\n 'HitSlop Error: Cannot define top, bottom and height at the same time'\n );\n }\n\n if (\n this.config.hitSlop.height !== undefined &&\n this.config.hitSlop.top === undefined &&\n this.config.hitSlop.bottom === undefined\n ) {\n throw new Error(\n 'HitSlop Error: When height is defined, either top or bottom has to be defined'\n );\n }\n }\n\n private checkHitSlop(): boolean {\n if (!this.config.hitSlop) {\n return true;\n }\n\n const { width, height } = this.delegate.measureView();\n\n let left = 0;\n let top = 0;\n let right: number = width;\n let bottom: number = height;\n\n if (this.config.hitSlop.horizontal !== undefined) {\n left -= this.config.hitSlop.horizontal;\n right += this.config.hitSlop.horizontal;\n }\n\n if (this.config.hitSlop.vertical !== undefined) {\n top -= this.config.hitSlop.vertical;\n bottom += this.config.hitSlop.vertical;\n }\n\n if (this.config.hitSlop.left !== undefined) {\n left = -this.config.hitSlop.left;\n }\n\n if (this.config.hitSlop.right !== undefined) {\n right = width + this.config.hitSlop.right;\n }\n\n if (this.config.hitSlop.top !== undefined) {\n top = -this.config.hitSlop.top;\n }\n\n if (this.config.hitSlop.bottom !== undefined) {\n bottom = width + this.config.hitSlop.bottom;\n }\n if (this.config.hitSlop.width !== undefined) {\n if (this.config.hitSlop.left !== undefined) {\n right = left + this.config.hitSlop.width;\n } else if (this.config.hitSlop.right !== undefined) {\n left = right - this.config.hitSlop.width;\n }\n }\n\n if (this.config.hitSlop.height !== undefined) {\n if (this.config.hitSlop.top !== undefined) {\n bottom = top + this.config.hitSlop.height;\n } else if (this.config.hitSlop.bottom !== undefined) {\n top = bottom - this.config.hitSlop.height;\n }\n }\n\n const rect = this.delegate.measureView();\n const offsetX: number = this.tracker.getLastX() - rect.pageX;\n const offsetY: number = this.tracker.getLastY() - rect.pageY;\n\n if (\n offsetX >= left &&\n offsetX <= right &&\n offsetY >= top &&\n offsetY <= bottom\n ) {\n return true;\n }\n return false;\n }\n\n public isButtonInConfig(mouseButton: MouseButton | undefined) {\n return (\n !mouseButton ||\n (!this.config.mouseButton && mouseButton === MouseButton.LEFT) ||\n (this.config.mouseButton && mouseButton & this.config.mouseButton)\n );\n }\n\n protected resetConfig(): void {}\n\n public onDestroy(): void {\n this.delegate.destroy(this.config);\n }\n\n //\n // Getters and setters\n //\n\n public getTag(): number {\n return this.handlerTag;\n }\n\n public setTag(tag: number): void {\n this.handlerTag = tag;\n }\n\n public getConfig() {\n return this.config;\n }\n\n public getDelegate(): GestureHandlerDelegate<unknown, IGestureHandler> {\n return this.delegate;\n }\n\n public getTracker(): PointerTracker {\n return this.tracker;\n }\n\n public getTrackedPointersID(): number[] {\n return this.tracker.getTrackedPointersID();\n }\n\n public getState(): State {\n return this.currentState;\n }\n\n public isEnabled(): boolean {\n return this.enabled;\n }\n\n private isFinished(): boolean {\n return (\n this.currentState === State.END ||\n this.currentState === State.FAILED ||\n this.currentState === State.CANCELLED\n );\n }\n\n protected setShouldCancelWhenOutside(shouldCancel: boolean) {\n this.shouldCancelWhenOutside = shouldCancel;\n }\n\n protected getShouldCancelWhenOutside(): boolean {\n return this.shouldCancelWhenOutside;\n }\n\n public getPointerType(): PointerType {\n return this.pointerType;\n }\n}\n\nfunction invokeNullableMethod(\n method:\n | ((event: ResultEvent | ResultTouchEvent) => void)\n | { __getHandler: () => (event: ResultEvent | ResultTouchEvent) => void }\n | { __nodeConfig: { argMapping: unknown[] } },\n event: ResultEvent | ResultTouchEvent\n): void {\n if (!method) {\n return;\n }\n\n if (typeof method === 'function') {\n method(event);\n return;\n }\n\n if ('__getHandler' in method && typeof method.__getHandler === 'function') {\n const handler = method.__getHandler();\n invokeNullableMethod(handler, event);\n return;\n }\n\n if (!('__nodeConfig' in method)) {\n return;\n }\n\n const { argMapping }: { argMapping: unknown } = method.__nodeConfig;\n if (!Array.isArray(argMapping)) {\n return;\n }\n\n for (const [index, [key, value]] of argMapping.entries()) {\n if (!(key in event.nativeEvent)) {\n continue;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const nativeValue = event.nativeEvent[key];\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (value?.setValue) {\n //Reanimated API\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call\n value.setValue(nativeValue);\n } else {\n //RN Animated API\n method.__nodeConfig.argMapping[index] = [key, nativeValue];\n }\n }\n\n return;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["GestureHandler.ts"],"names":["State","TouchEventType","EventTypes","GestureHandlerOrchestrator","InteractionManager","PointerTracker","MouseButton","PointerType","GestureHandler","constructor","delegate","UNDETERMINED","enabled","MOUSE","newState","oldState","onGestureHandlerEvent","onGestureHandlerStateChange","propsRef","current","resultEvent","transformEventData","lastSentState","invokeNullableMethod","currentState","ACTIVE","nativeEvent","undefined","init","viewRef","attachEventManager","manager","setOnPointerDown","onPointerDown","bind","setOnPointerAdd","onPointerAdd","setOnPointerUp","onPointerUp","setOnPointerRemove","onPointerRemove","setOnPointerMove","onPointerMove","setOnPointerEnter","onPointerEnter","setOnPointerLeave","onPointerLeave","setOnPointerCancel","onPointerCancel","setOnPointerOutOfBounds","onPointerOutOfBounds","setOnPointerMoveOver","onPointerMoveOver","setOnPointerMoveOut","onPointerMoveOut","registerListeners","onCancel","onReset","resetProgress","reset","tracker","resetTracker","moveToState","sendIfDisabled","getTrackedPointersCount","config","needsPointerData","isFinished","cancelTouches","getInstance","onHandlerStateChange","onStateChange","_newState","_oldState","begin","checkHitSlop","BEGAN","fail","onFail","FAILED","cancel","CANCELLED","activate","force","manualActivation","onActivate","end","onEnd","END","isAwaiting","awaiting","setAwaiting","value","isActive","active","setActive","getShouldResetProgress","shouldResetProgress","setShouldResetProgress","getActivationIndex","activationIndex","setActivationIndex","shouldWaitForHandlerFailure","handler","shouldRequireToWaitForFailure","shouldRequireHandlerToWaitForFailure","shouldRecognizeSimultaneously","shouldBeCancelledByOther","shouldHandlerBeCancelledBy","event","recordHandlerIfNotPresent","pointerType","TOUCH","cancelMouseAndPenGestures","tryToSendTouchEvent","tryToSendMoveEvent","shouldCancelWhenOutside","_event","out","sendEvent","sendTouchEvent","touchEvent","transformTouchEvent","numberOfPointers","state","pointerInside","isPointerInBounds","getAbsoluteCoordsAverage","transformNativeEvent","handlerTag","target","timeStamp","Date","now","rect","measureView","all","changed","trackerData","getData","size","has","pointerId","forEach","element","key","id","getMappedTouchEventId","push","x","abosoluteCoords","pageX","y","pageY","absoluteX","absoluteY","eventType","CANCEL","DOWN","ADDITIONAL_POINTER_DOWN","UP","ADDITIONAL_POINTER_UP","MOVE","numberOfTouches","length","touchEventType","changedTouches","allTouches","cancelEvent","lastCoords","lastRelativeCoords","getRelativeCoordsAverage","updateGestureConfig","props","setShouldCancelWhenOutside","validateHitSlops","removeHandlerFromOrchestrator","checkCustomActivationCriteria","criterias","indexOf","hasCustomActivationCriteria","hitSlop","left","right","width","Error","height","top","bottom","horizontal","vertical","getLastAbsoluteCoords","offsetX","offsetY","isButtonInConfig","mouseButton","LEFT","resetConfig","onDestroy","destroy","getTag","setTag","tag","getConfig","getDelegate","getTracker","getTrackedPointersID","getState","isEnabled","shouldCancel","getShouldCancelWhenOutside","getPointerType","method","__getHandler","argMapping","__nodeConfig","Array","isArray","index","entries","nativeValue","setValue"],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-empty-function */\nimport { State } from '../../State';\nimport {\n Config,\n AdaptedEvent,\n PropsRef,\n ResultEvent,\n PointerData,\n ResultTouchEvent,\n TouchEventType,\n EventTypes,\n} from '../interfaces';\nimport EventManager from '../tools/EventManager';\nimport GestureHandlerOrchestrator from '../tools/GestureHandlerOrchestrator';\nimport InteractionManager from '../tools/InteractionManager';\nimport PointerTracker, { TrackerElement } from '../tools/PointerTracker';\nimport { GestureHandlerDelegate } from '../tools/GestureHandlerDelegate';\nimport IGestureHandler from './IGestureHandler';\nimport { MouseButton } from '../../handlers/gestureHandlerCommon';\nimport { PointerType } from '../../PointerType';\n\nexport default abstract class GestureHandler implements IGestureHandler {\n private lastSentState: State | null = null;\n protected currentState: State = State.UNDETERMINED;\n\n protected shouldCancelWhenOutside = false;\n protected hasCustomActivationCriteria = false;\n protected enabled = false;\n\n private viewRef!: number;\n private propsRef!: React.RefObject<unknown>;\n private handlerTag!: number;\n protected config: Config = { enabled: false };\n\n protected tracker: PointerTracker = new PointerTracker();\n\n // Orchestrator properties\n protected activationIndex = 0;\n protected awaiting = false;\n protected active = false;\n protected shouldResetProgress = false;\n protected pointerType: PointerType = PointerType.MOUSE;\n\n protected delegate: GestureHandlerDelegate<unknown, IGestureHandler>;\n\n public constructor(\n delegate: GestureHandlerDelegate<unknown, IGestureHandler>\n ) {\n this.delegate = delegate;\n }\n\n //\n // Initializing handler\n //\n\n protected init(viewRef: number, propsRef: React.RefObject<unknown>) {\n this.propsRef = propsRef;\n this.viewRef = viewRef;\n\n this.currentState = State.UNDETERMINED;\n\n this.delegate.init(viewRef, this);\n }\n\n public attachEventManager(manager: EventManager<unknown>): void {\n manager.setOnPointerDown(this.onPointerDown.bind(this));\n manager.setOnPointerAdd(this.onPointerAdd.bind(this));\n manager.setOnPointerUp(this.onPointerUp.bind(this));\n manager.setOnPointerRemove(this.onPointerRemove.bind(this));\n manager.setOnPointerMove(this.onPointerMove.bind(this));\n manager.setOnPointerEnter(this.onPointerEnter.bind(this));\n manager.setOnPointerLeave(this.onPointerLeave.bind(this));\n manager.setOnPointerCancel(this.onPointerCancel.bind(this));\n manager.setOnPointerOutOfBounds(this.onPointerOutOfBounds.bind(this));\n manager.setOnPointerMoveOver(this.onPointerMoveOver.bind(this));\n manager.setOnPointerMoveOut(this.onPointerMoveOut.bind(this));\n\n manager.registerListeners();\n }\n\n //\n // Resetting handler\n //\n\n protected onCancel(): void {}\n protected onReset(): void {}\n protected resetProgress(): void {}\n\n public reset(): void {\n this.tracker.resetTracker();\n this.onReset();\n this.resetProgress();\n this.delegate.reset();\n this.currentState = State.UNDETERMINED;\n }\n\n //\n // State logic\n //\n\n public moveToState(newState: State, sendIfDisabled?: boolean) {\n if (this.currentState === newState) {\n return;\n }\n\n const oldState = this.currentState;\n this.currentState = newState;\n\n if (\n this.tracker.getTrackedPointersCount() > 0 &&\n this.config.needsPointerData &&\n this.isFinished()\n ) {\n this.cancelTouches();\n }\n\n GestureHandlerOrchestrator.getInstance().onHandlerStateChange(\n this,\n newState,\n oldState,\n sendIfDisabled\n );\n\n this.onStateChange(newState, oldState);\n\n if (!this.enabled && this.isFinished()) {\n this.currentState = State.UNDETERMINED;\n }\n }\n\n protected onStateChange(_newState: State, _oldState: State): void {}\n\n public begin(): void {\n if (!this.checkHitSlop()) {\n return;\n }\n\n if (this.currentState === State.UNDETERMINED) {\n this.moveToState(State.BEGAN);\n }\n }\n\n /**\n * @param {boolean} sendIfDisabled - Used when handler becomes disabled. With this flag orchestrator will be forced to send fail event\n */\n public fail(sendIfDisabled?: boolean): void {\n if (\n this.currentState === State.ACTIVE ||\n this.currentState === State.BEGAN\n ) {\n // Here the order of calling the delegate and moveToState is important.\n // At this point we can use currentState as previuos state, because immediately after changing cursor we call moveToState method.\n this.delegate.onFail();\n\n this.moveToState(State.FAILED, sendIfDisabled);\n }\n\n this.resetProgress();\n }\n\n /**\n * @param {boolean} sendIfDisabled - Used when handler becomes disabled. With this flag orchestrator will be forced to send cancel event\n */\n public cancel(sendIfDisabled?: boolean): void {\n if (\n this.currentState === State.ACTIVE ||\n this.currentState === State.UNDETERMINED ||\n this.currentState === State.BEGAN\n ) {\n this.onCancel();\n\n // Same as above - order matters\n this.delegate.onCancel();\n\n this.moveToState(State.CANCELLED, sendIfDisabled);\n }\n }\n\n public activate(force = false) {\n if (\n (this.config.manualActivation !== true || force) &&\n (this.currentState === State.UNDETERMINED ||\n this.currentState === State.BEGAN)\n ) {\n this.delegate.onActivate();\n this.moveToState(State.ACTIVE);\n }\n }\n\n public end() {\n if (\n this.currentState === State.BEGAN ||\n this.currentState === State.ACTIVE\n ) {\n // Same as above - order matters\n this.delegate.onEnd();\n\n this.moveToState(State.END);\n }\n\n this.resetProgress();\n }\n\n //\n // Methods for orchestrator\n //\n\n public isAwaiting(): boolean {\n return this.awaiting;\n }\n public setAwaiting(value: boolean): void {\n this.awaiting = value;\n }\n\n public isActive(): boolean {\n return this.active;\n }\n public setActive(value: boolean): void {\n this.active = value;\n }\n\n public getShouldResetProgress(): boolean {\n return this.shouldResetProgress;\n }\n public setShouldResetProgress(value: boolean): void {\n this.shouldResetProgress = value;\n }\n\n public getActivationIndex(): number {\n return this.activationIndex;\n }\n public setActivationIndex(value: number): void {\n this.activationIndex = value;\n }\n\n public shouldWaitForHandlerFailure(handler: IGestureHandler): boolean {\n if (handler === this) {\n return false;\n }\n\n return InteractionManager.getInstance().shouldWaitForHandlerFailure(\n this,\n handler\n );\n }\n\n public shouldRequireToWaitForFailure(handler: IGestureHandler): boolean {\n if (handler === this) {\n return false;\n }\n\n return InteractionManager.getInstance().shouldRequireHandlerToWaitForFailure(\n this,\n handler\n );\n }\n\n public shouldRecognizeSimultaneously(handler: IGestureHandler): boolean {\n if (handler === this) {\n return true;\n }\n\n return InteractionManager.getInstance().shouldRecognizeSimultaneously(\n this,\n handler\n );\n }\n\n public shouldBeCancelledByOther(handler: IGestureHandler): boolean {\n if (handler === this) {\n return false;\n }\n\n return InteractionManager.getInstance().shouldHandlerBeCancelledBy(\n this,\n handler\n );\n }\n\n //\n // Event actions\n //\n\n protected onPointerDown(event: AdaptedEvent): void {\n GestureHandlerOrchestrator.getInstance().recordHandlerIfNotPresent(this);\n this.pointerType = event.pointerType;\n\n if (this.pointerType === PointerType.TOUCH) {\n GestureHandlerOrchestrator.getInstance().cancelMouseAndPenGestures(this);\n }\n\n // TODO: Bring back touch events along with introducing `handleDown` method that will handle handler specific stuff\n }\n // Adding another pointer to existing ones\n protected onPointerAdd(event: AdaptedEvent): void {\n this.tryToSendTouchEvent(event);\n }\n protected onPointerUp(event: AdaptedEvent): void {\n this.tryToSendTouchEvent(event);\n }\n // Removing pointer, when there is more than one pointers\n protected onPointerRemove(event: AdaptedEvent): void {\n this.tryToSendTouchEvent(event);\n }\n protected onPointerMove(event: AdaptedEvent): void {\n this.tryToSendMoveEvent(false, event);\n }\n protected onPointerLeave(event: AdaptedEvent): void {\n if (this.shouldCancelWhenOutside) {\n switch (this.currentState) {\n case State.ACTIVE:\n this.cancel();\n break;\n case State.BEGAN:\n this.fail();\n break;\n }\n return;\n }\n\n this.tryToSendTouchEvent(event);\n }\n protected onPointerEnter(event: AdaptedEvent): void {\n this.tryToSendTouchEvent(event);\n }\n protected onPointerCancel(event: AdaptedEvent): void {\n this.tryToSendTouchEvent(event);\n\n this.cancel();\n this.reset();\n }\n protected onPointerOutOfBounds(event: AdaptedEvent): void {\n this.tryToSendMoveEvent(true, event);\n }\n protected onPointerMoveOver(_event: AdaptedEvent): void {\n // used only by hover gesture handler atm\n }\n protected onPointerMoveOut(_event: AdaptedEvent): void {\n // used only by hover gesture handler atm\n }\n private tryToSendMoveEvent(out: boolean, event: AdaptedEvent): void {\n if ((out && this.shouldCancelWhenOutside) || !this.enabled) {\n return;\n }\n\n if (this.active) {\n this.sendEvent(this.currentState, this.currentState);\n }\n\n this.tryToSendTouchEvent(event);\n }\n\n protected tryToSendTouchEvent(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n\n public sendTouchEvent(event: AdaptedEvent): void {\n if (!this.enabled) {\n return;\n }\n\n const { onGestureHandlerEvent }: PropsRef = this.propsRef\n .current as PropsRef;\n\n const touchEvent: ResultTouchEvent | undefined =\n this.transformTouchEvent(event);\n\n if (touchEvent) {\n invokeNullableMethod(onGestureHandlerEvent, touchEvent);\n }\n }\n\n //\n // Events Sending\n //\n\n public sendEvent = (newState: State, oldState: State): void => {\n const { onGestureHandlerEvent, onGestureHandlerStateChange }: PropsRef =\n this.propsRef.current as PropsRef;\n\n const resultEvent: ResultEvent = this.transformEventData(\n newState,\n oldState\n );\n\n // In the new API oldState field has to be undefined, unless we send event state changed\n // Here the order is flipped to avoid workarounds such as making backup of the state and setting it to undefined first, then changing it back\n // Flipping order with setting oldState to undefined solves issue, when events were being sent twice instead of once\n // However, this may cause trouble in the future (but for now we don't know that)\n\n if (this.lastSentState !== newState) {\n this.lastSentState = newState;\n invokeNullableMethod(onGestureHandlerStateChange, resultEvent);\n }\n if (this.currentState === State.ACTIVE) {\n resultEvent.nativeEvent.oldState = undefined;\n invokeNullableMethod(onGestureHandlerEvent, resultEvent);\n }\n };\n\n private transformEventData(newState: State, oldState: State): ResultEvent {\n return {\n nativeEvent: {\n numberOfPointers: this.tracker.getTrackedPointersCount(),\n state: newState,\n pointerInside: this.delegate.isPointerInBounds(\n this.tracker.getAbsoluteCoordsAverage()\n ),\n ...this.transformNativeEvent(),\n handlerTag: this.handlerTag,\n target: this.viewRef,\n oldState: newState !== oldState ? oldState : undefined,\n pointerType: this.pointerType,\n },\n timeStamp: Date.now(),\n };\n }\n\n private transformTouchEvent(\n event: AdaptedEvent\n ): ResultTouchEvent | undefined {\n const rect = this.delegate.measureView();\n\n const all: PointerData[] = [];\n const changed: PointerData[] = [];\n\n const trackerData = this.tracker.getData();\n\n // This if handles edge case where all pointers have been cancelled\n // When pointercancel is triggered, reset method is called. This means that tracker will be reset after first pointer being cancelled\n // The problem is, that handler will receive another pointercancel event from the rest of the pointers\n // To avoid crashing, we don't send event if tracker tracks no pointers, i.e. has been reset\n if (trackerData.size === 0 || !trackerData.has(event.pointerId)) {\n return;\n }\n\n trackerData.forEach((element: TrackerElement, key: number): void => {\n const id: number = this.tracker.getMappedTouchEventId(key);\n\n all.push({\n id: id,\n x: element.abosoluteCoords.x - rect.pageX,\n y: element.abosoluteCoords.y - rect.pageY,\n absoluteX: element.abosoluteCoords.x,\n absoluteY: element.abosoluteCoords.y,\n });\n });\n\n // Each pointer sends its own event, so we want changed touches to contain only the pointer that has changed.\n // However, if the event is cancel, we want to cancel all pointers to avoid crashes\n if (event.eventType !== EventTypes.CANCEL) {\n changed.push({\n id: this.tracker.getMappedTouchEventId(event.pointerId),\n x: event.x - rect.pageX,\n y: event.y - rect.pageY,\n absoluteX: event.x,\n absoluteY: event.y,\n });\n } else {\n trackerData.forEach((element: TrackerElement, key: number): void => {\n const id: number = this.tracker.getMappedTouchEventId(key);\n\n changed.push({\n id: id,\n x: element.abosoluteCoords.x - rect.pageX,\n y: element.abosoluteCoords.y - rect.pageY,\n absoluteX: element.abosoluteCoords.x,\n absoluteY: element.abosoluteCoords.y,\n });\n });\n }\n\n let eventType: TouchEventType = TouchEventType.UNDETERMINED;\n\n switch (event.eventType) {\n case EventTypes.DOWN:\n case EventTypes.ADDITIONAL_POINTER_DOWN:\n eventType = TouchEventType.DOWN;\n break;\n case EventTypes.UP:\n case EventTypes.ADDITIONAL_POINTER_UP:\n eventType = TouchEventType.UP;\n break;\n case EventTypes.MOVE:\n eventType = TouchEventType.MOVE;\n break;\n case EventTypes.CANCEL:\n eventType = TouchEventType.CANCELLED;\n break;\n }\n\n // Here, when we receive up event, we want to decrease number of touches\n // That's because we want handler to send information that there's one pointer less\n // However, we still want this pointer to be present in allTouches array, so that its data can be accessed\n let numberOfTouches: number = all.length;\n\n if (\n event.eventType === EventTypes.UP ||\n event.eventType === EventTypes.ADDITIONAL_POINTER_UP\n ) {\n --numberOfTouches;\n }\n\n return {\n nativeEvent: {\n handlerTag: this.handlerTag,\n state: this.currentState,\n eventType: event.touchEventType ?? eventType,\n changedTouches: changed,\n allTouches: all,\n numberOfTouches: numberOfTouches,\n pointerType: this.pointerType,\n },\n timeStamp: Date.now(),\n };\n }\n\n private cancelTouches(): void {\n const rect = this.delegate.measureView();\n\n const all: PointerData[] = [];\n const changed: PointerData[] = [];\n\n const trackerData = this.tracker.getData();\n\n if (trackerData.size === 0) {\n return;\n }\n\n trackerData.forEach((element: TrackerElement, key: number): void => {\n const id: number = this.tracker.getMappedTouchEventId(key);\n\n all.push({\n id: id,\n x: element.abosoluteCoords.x - rect.pageX,\n y: element.abosoluteCoords.y - rect.pageY,\n absoluteX: element.abosoluteCoords.x,\n absoluteY: element.abosoluteCoords.y,\n });\n\n changed.push({\n id: id,\n x: element.abosoluteCoords.x - rect.pageX,\n y: element.abosoluteCoords.y - rect.pageY,\n absoluteX: element.abosoluteCoords.x,\n absoluteY: element.abosoluteCoords.y,\n });\n });\n\n const cancelEvent: ResultTouchEvent = {\n nativeEvent: {\n handlerTag: this.handlerTag,\n state: this.currentState,\n eventType: TouchEventType.CANCELLED,\n changedTouches: changed,\n allTouches: all,\n numberOfTouches: all.length,\n pointerType: this.pointerType,\n },\n timeStamp: Date.now(),\n };\n\n const { onGestureHandlerEvent }: PropsRef = this.propsRef\n .current as PropsRef;\n\n invokeNullableMethod(onGestureHandlerEvent, cancelEvent);\n }\n\n protected transformNativeEvent(): Record<string, unknown> {\n // those properties are shared by most handlers and if not this method will be overriden\n const lastCoords = this.tracker.getAbsoluteCoordsAverage();\n const lastRelativeCoords = this.tracker.getRelativeCoordsAverage();\n\n return {\n x: lastRelativeCoords.x,\n y: lastRelativeCoords.y,\n absoluteX: lastCoords.x,\n absoluteY: lastCoords.y,\n };\n }\n\n //\n // Handling config\n //\n\n public updateGestureConfig({ enabled = true, ...props }: Config): void {\n this.config = { enabled: enabled, ...props };\n this.enabled = enabled;\n\n if (this.config.shouldCancelWhenOutside !== undefined) {\n this.setShouldCancelWhenOutside(this.config.shouldCancelWhenOutside);\n }\n\n this.validateHitSlops();\n\n if (this.enabled) {\n return;\n }\n\n switch (this.currentState) {\n case State.ACTIVE:\n this.fail(true);\n break;\n case State.UNDETERMINED:\n GestureHandlerOrchestrator.getInstance().removeHandlerFromOrchestrator(\n this\n );\n break;\n default:\n this.cancel(true);\n break;\n }\n }\n\n protected checkCustomActivationCriteria(criterias: string[]): void {\n for (const key in this.config) {\n if (criterias.indexOf(key) >= 0) {\n this.hasCustomActivationCriteria = true;\n }\n }\n }\n\n private validateHitSlops(): void {\n if (!this.config.hitSlop) {\n return;\n }\n\n if (\n this.config.hitSlop.left !== undefined &&\n this.config.hitSlop.right !== undefined &&\n this.config.hitSlop.width !== undefined\n ) {\n throw new Error(\n 'HitSlop Error: Cannot define left, right and width at the same time'\n );\n }\n\n if (\n this.config.hitSlop.width !== undefined &&\n this.config.hitSlop.left === undefined &&\n this.config.hitSlop.right === undefined\n ) {\n throw new Error(\n 'HitSlop Error: When width is defined, either left or right has to be defined'\n );\n }\n\n if (\n this.config.hitSlop.height !== undefined &&\n this.config.hitSlop.top !== undefined &&\n this.config.hitSlop.bottom !== undefined\n ) {\n throw new Error(\n 'HitSlop Error: Cannot define top, bottom and height at the same time'\n );\n }\n\n if (\n this.config.hitSlop.height !== undefined &&\n this.config.hitSlop.top === undefined &&\n this.config.hitSlop.bottom === undefined\n ) {\n throw new Error(\n 'HitSlop Error: When height is defined, either top or bottom has to be defined'\n );\n }\n }\n\n private checkHitSlop(): boolean {\n if (!this.config.hitSlop) {\n return true;\n }\n\n const { width, height } = this.delegate.measureView();\n\n let left = 0;\n let top = 0;\n let right: number = width;\n let bottom: number = height;\n\n if (this.config.hitSlop.horizontal !== undefined) {\n left -= this.config.hitSlop.horizontal;\n right += this.config.hitSlop.horizontal;\n }\n\n if (this.config.hitSlop.vertical !== undefined) {\n top -= this.config.hitSlop.vertical;\n bottom += this.config.hitSlop.vertical;\n }\n\n if (this.config.hitSlop.left !== undefined) {\n left = -this.config.hitSlop.left;\n }\n\n if (this.config.hitSlop.right !== undefined) {\n right = width + this.config.hitSlop.right;\n }\n\n if (this.config.hitSlop.top !== undefined) {\n top = -this.config.hitSlop.top;\n }\n\n if (this.config.hitSlop.bottom !== undefined) {\n bottom = width + this.config.hitSlop.bottom;\n }\n if (this.config.hitSlop.width !== undefined) {\n if (this.config.hitSlop.left !== undefined) {\n right = left + this.config.hitSlop.width;\n } else if (this.config.hitSlop.right !== undefined) {\n left = right - this.config.hitSlop.width;\n }\n }\n\n if (this.config.hitSlop.height !== undefined) {\n if (this.config.hitSlop.top !== undefined) {\n bottom = top + this.config.hitSlop.height;\n } else if (this.config.hitSlop.bottom !== undefined) {\n top = bottom - this.config.hitSlop.height;\n }\n }\n\n const rect = this.delegate.measureView();\n const { x, y } = this.tracker.getLastAbsoluteCoords();\n const offsetX: number = x - rect.pageX;\n const offsetY: number = y - rect.pageY;\n\n if (\n offsetX >= left &&\n offsetX <= right &&\n offsetY >= top &&\n offsetY <= bottom\n ) {\n return true;\n }\n return false;\n }\n\n public isButtonInConfig(mouseButton: MouseButton | undefined) {\n return (\n !mouseButton ||\n (!this.config.mouseButton && mouseButton === MouseButton.LEFT) ||\n (this.config.mouseButton && mouseButton & this.config.mouseButton)\n );\n }\n\n protected resetConfig(): void {}\n\n public onDestroy(): void {\n this.delegate.destroy(this.config);\n }\n\n //\n // Getters and setters\n //\n\n public getTag(): number {\n return this.handlerTag;\n }\n\n public setTag(tag: number): void {\n this.handlerTag = tag;\n }\n\n public getConfig() {\n return this.config;\n }\n\n public getDelegate(): GestureHandlerDelegate<unknown, IGestureHandler> {\n return this.delegate;\n }\n\n public getTracker(): PointerTracker {\n return this.tracker;\n }\n\n public getTrackedPointersID(): number[] {\n return this.tracker.getTrackedPointersID();\n }\n\n public getState(): State {\n return this.currentState;\n }\n\n public isEnabled(): boolean {\n return this.enabled;\n }\n\n private isFinished(): boolean {\n return (\n this.currentState === State.END ||\n this.currentState === State.FAILED ||\n this.currentState === State.CANCELLED\n );\n }\n\n protected setShouldCancelWhenOutside(shouldCancel: boolean) {\n this.shouldCancelWhenOutside = shouldCancel;\n }\n\n protected getShouldCancelWhenOutside(): boolean {\n return this.shouldCancelWhenOutside;\n }\n\n public getPointerType(): PointerType {\n return this.pointerType;\n }\n}\n\nfunction invokeNullableMethod(\n method:\n | ((event: ResultEvent | ResultTouchEvent) => void)\n | { __getHandler: () => (event: ResultEvent | ResultTouchEvent) => void }\n | { __nodeConfig: { argMapping: unknown[] } },\n event: ResultEvent | ResultTouchEvent\n): void {\n if (!method) {\n return;\n }\n\n if (typeof method === 'function') {\n method(event);\n return;\n }\n\n if ('__getHandler' in method && typeof method.__getHandler === 'function') {\n const handler = method.__getHandler();\n invokeNullableMethod(handler, event);\n return;\n }\n\n if (!('__nodeConfig' in method)) {\n return;\n }\n\n const { argMapping }: { argMapping: unknown } = method.__nodeConfig;\n if (!Array.isArray(argMapping)) {\n return;\n }\n\n for (const [index, [key, value]] of argMapping.entries()) {\n if (!(key in event.nativeEvent)) {\n continue;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const nativeValue = event.nativeEvent[key];\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (value?.setValue) {\n //Reanimated API\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call\n value.setValue(nativeValue);\n } else {\n //RN Animated API\n method.__nodeConfig.argMapping[index] = [key, nativeValue];\n }\n }\n\n return;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["LongPressGestureHandler.ts"],"names":["State","GestureHandler","DEFAULT_MIN_DURATION_MS","DEFAULT_MAX_DIST_DP","SCALING_FACTOR","LongPressGestureHandler","defaultMaxDistSq","init","ref","propsRef","config","enableContextMenu","undefined","transformNativeEvent","duration","Date","now","startTime","updateGestureConfig","enabled","props","minDurationMs","maxDist","maxDistSq","resetConfig","onStateChange","_newState","_oldState","clearTimeout","activationTimeout","onPointerDown","event","isButtonInConfig","button","tracker","addToTracker","tryBegin","tryActivate","checkDistanceFail","onPointerMove","track","onPointerUp","removeFromTracker","pointerId","currentState","ACTIVE","end","fail","UNDETERMINED","previousTime","begin","startX","x","startY","y","setTimeout","activate","dx","dy","distSq","cancel"],"mappings":";;AAAA,SAASA,KAAT,QAAsB,aAAtB;AAGA,OAAOC,cAAP,MAA2B,kBAA3B;AAEA,MAAMC,uBAAuB,GAAG,GAAhC;AACA,MAAMC,mBAAmB,GAAG,EAA5B;AACA,MAAMC,cAAc,GAAG,EAAvB;AAEA,eAAe,MAAMC,uBAAN,SAAsCJ,cAAtC,CAAqD;AAAA;AAAA;;AAAA,2CAC1CC,uBAD0C;;AAAA,8CAEvCC,mBAAmB,GAAGC,cAFiB;;AAAA,uCAI9C,KAAKE,gBAJyC;;AAAA,oCAKjD,CALiD;;AAAA,oCAMjD,CANiD;;AAAA,uCAQ9C,CAR8C;;AAAA,0CAS3C,CAT2C;;AAAA;AAAA;;AAa3DC,EAAAA,IAAI,CAACC,GAAD,EAAcC,QAAd,EAAkD;AAC3D,QAAI,KAAKC,MAAL,CAAYC,iBAAZ,KAAkCC,SAAtC,EAAiD;AAC/C,WAAKF,MAAL,CAAYC,iBAAZ,GAAgC,KAAhC;AACD;;AAED,UAAMJ,IAAN,CAAWC,GAAX,EAAgBC,QAAhB;AACD;;AAESI,EAAAA,oBAAoB,GAAG;AAC/B,WAAO,EACL,GAAG,MAAMA,oBAAN,EADE;AAELC,MAAAA,QAAQ,EAAEC,IAAI,CAACC,GAAL,KAAa,KAAKC;AAFvB,KAAP;AAID;;AAEMC,EAAAA,mBAAmB,CAAC;AAAEC,IAAAA,OAAO,GAAG,IAAZ;AAAkB,OAAGC;AAArB,GAAD,EAA6C;AACrE,UAAMF,mBAAN,CAA0B;AAAEC,MAAAA,OAAO,EAAEA,OAAX;AAAoB,SAAGC;AAAvB,KAA1B;;AAEA,QAAI,KAAKV,MAAL,CAAYW,aAAZ,KAA8BT,SAAlC,EAA6C;AAC3C,WAAKS,aAAL,GAAqB,KAAKX,MAAL,CAAYW,aAAjC;AACD;;AAED,QAAI,KAAKX,MAAL,CAAYY,OAAZ,KAAwBV,SAA5B,EAAuC;AACrC,WAAKW,SAAL,GAAiB,KAAKb,MAAL,CAAYY,OAAZ,GAAsB,KAAKZ,MAAL,CAAYY,OAAnD;AACD;AACF;;AAESE,EAAAA,WAAW,GAAS;AAC5B,UAAMA,WAAN;AACA,SAAKH,aAAL,GAAqBnB,uBAArB;AACA,SAAKqB,SAAL,GAAiB,KAAKjB,gBAAtB;AACD;;AAESmB,EAAAA,aAAa,CAACC,SAAD,EAAmBC,SAAnB,EAA2C;AAChEC,IAAAA,YAAY,CAAC,KAAKC,iBAAN,CAAZ;AACD;;AAESC,EAAAA,aAAa,CAACC,KAAD,EAA4B;AACjD,QAAI,CAAC,KAAKC,gBAAL,CAAsBD,KAAK,CAACE,MAA5B,CAAL,EAA0C;AACxC;AACD;;AAED,SAAKC,OAAL,CAAaC,YAAb,CAA0BJ,KAA1B;AACA,UAAMD,aAAN,CAAoBC,KAApB;AACA,SAAKK,QAAL,CAAcL,KAAd;AACA,SAAKM,WAAL;AACA,SAAKC,iBAAL,CAAuBP,KAAvB;AACD;;
|
|
1
|
+
{"version":3,"sources":["LongPressGestureHandler.ts"],"names":["State","GestureHandler","DEFAULT_MIN_DURATION_MS","DEFAULT_MAX_DIST_DP","SCALING_FACTOR","LongPressGestureHandler","defaultMaxDistSq","init","ref","propsRef","config","enableContextMenu","undefined","transformNativeEvent","duration","Date","now","startTime","updateGestureConfig","enabled","props","minDurationMs","maxDist","maxDistSq","resetConfig","onStateChange","_newState","_oldState","clearTimeout","activationTimeout","onPointerDown","event","isButtonInConfig","button","tracker","addToTracker","tryBegin","tryActivate","checkDistanceFail","tryToSendTouchEvent","onPointerMove","track","onPointerUp","removeFromTracker","pointerId","currentState","ACTIVE","end","fail","UNDETERMINED","previousTime","begin","startX","x","startY","y","setTimeout","activate","dx","dy","distSq","cancel"],"mappings":"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","sourcesContent":["import { State } from '../../State';\nimport { AdaptedEvent, Config } from '../interfaces';\n\nimport GestureHandler from './GestureHandler';\n\nconst DEFAULT_MIN_DURATION_MS = 500;\nconst DEFAULT_MAX_DIST_DP = 10;\nconst SCALING_FACTOR = 10;\n\nexport default class LongPressGestureHandler extends GestureHandler {\n private minDurationMs = DEFAULT_MIN_DURATION_MS;\n private defaultMaxDistSq = DEFAULT_MAX_DIST_DP * SCALING_FACTOR;\n\n private maxDistSq = this.defaultMaxDistSq;\n private startX = 0;\n private startY = 0;\n\n private startTime = 0;\n private previousTime = 0;\n\n private activationTimeout: number | undefined;\n\n public init(ref: number, propsRef: React.RefObject<unknown>) {\n if (this.config.enableContextMenu === undefined) {\n this.config.enableContextMenu = false;\n }\n\n super.init(ref, propsRef);\n }\n\n protected transformNativeEvent() {\n return {\n ...super.transformNativeEvent(),\n duration: Date.now() - this.startTime,\n };\n }\n\n public updateGestureConfig({ enabled = true, ...props }: Config): void {\n super.updateGestureConfig({ enabled: enabled, ...props });\n\n if (this.config.minDurationMs !== undefined) {\n this.minDurationMs = this.config.minDurationMs;\n }\n\n if (this.config.maxDist !== undefined) {\n this.maxDistSq = this.config.maxDist * this.config.maxDist;\n }\n }\n\n protected resetConfig(): void {\n super.resetConfig();\n this.minDurationMs = DEFAULT_MIN_DURATION_MS;\n this.maxDistSq = this.defaultMaxDistSq;\n }\n\n protected onStateChange(_newState: State, _oldState: State): void {\n clearTimeout(this.activationTimeout);\n }\n\n protected onPointerDown(event: AdaptedEvent): void {\n if (!this.isButtonInConfig(event.button)) {\n return;\n }\n\n this.tracker.addToTracker(event);\n super.onPointerDown(event);\n this.tryBegin(event);\n this.tryActivate();\n this.checkDistanceFail(event);\n\n this.tryToSendTouchEvent(event);\n }\n\n protected onPointerMove(event: AdaptedEvent): void {\n super.onPointerMove(event);\n this.tracker.track(event);\n this.checkDistanceFail(event);\n }\n\n protected onPointerUp(event: AdaptedEvent): void {\n super.onPointerUp(event);\n this.tracker.removeFromTracker(event.pointerId);\n\n if (this.currentState === State.ACTIVE) {\n this.end();\n } else {\n this.fail();\n }\n }\n\n private tryBegin(event: AdaptedEvent): void {\n if (this.currentState !== State.UNDETERMINED) {\n return;\n }\n\n this.previousTime = Date.now();\n this.startTime = this.previousTime;\n\n this.begin();\n\n this.startX = event.x;\n this.startY = event.y;\n }\n\n private tryActivate(): void {\n if (this.minDurationMs > 0) {\n this.activationTimeout = setTimeout(() => {\n this.activate();\n }, this.minDurationMs);\n } else if (this.minDurationMs === 0) {\n this.activate();\n }\n }\n\n private checkDistanceFail(event: AdaptedEvent): void {\n const dx = event.x - this.startX;\n const dy = event.y - this.startY;\n const distSq = dx * dx + dy * dy;\n\n if (distSq <= this.maxDistSq) {\n return;\n }\n\n if (this.currentState === State.ACTIVE) {\n this.cancel();\n } else {\n this.fail();\n }\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["ManualGestureHandler.ts"],"names":["GestureHandler","ManualGestureHandler","init","ref","propsRef","updateGestureConfig","enabled","props","onPointerDown","event","tracker","addToTracker","begin","onPointerAdd","onPointerMove","track","onPointerOutOfBounds","onPointerUp","removeFromTracker","pointerId","onPointerRemove"],"mappings":"AACA,OAAOA,cAAP,MAA2B,kBAA3B;AAEA,eAAe,MAAMC,oBAAN,SAAmCD,cAAnC,CAAkD;AACxDE,EAAAA,IAAI,CAACC,GAAD,EAAcC,QAAd,EAAkD;AAC3D,UAAMF,IAAN,CAAWC,GAAX,EAAgBC,QAAhB;AACD;;AAEMC,EAAAA,mBAAmB,CAAC;AAAEC,IAAAA,OAAO,GAAG,IAAZ;AAAkB,OAAGC;AAArB,GAAD,EAA6C;AACrE,UAAMF,mBAAN,CAA0B;AAAEC,MAAAA,OAAO,EAAEA,OAAX;AAAoB,SAAGC;AAAvB,KAA1B;AACD;;AAESC,EAAAA,aAAa,CAACC,KAAD,EAA4B;AACjD,SAAKC,OAAL,CAAaC,YAAb,CAA0BF,KAA1B;AACA,UAAMD,aAAN,CAAoBC,KAApB;AACA,SAAKG,KAAL;AACD;;
|
|
1
|
+
{"version":3,"sources":["ManualGestureHandler.ts"],"names":["GestureHandler","ManualGestureHandler","init","ref","propsRef","updateGestureConfig","enabled","props","onPointerDown","event","tracker","addToTracker","begin","tryToSendTouchEvent","onPointerAdd","onPointerMove","track","onPointerOutOfBounds","onPointerUp","removeFromTracker","pointerId","onPointerRemove"],"mappings":"AACA,OAAOA,cAAP,MAA2B,kBAA3B;AAEA,eAAe,MAAMC,oBAAN,SAAmCD,cAAnC,CAAkD;AACxDE,EAAAA,IAAI,CAACC,GAAD,EAAcC,QAAd,EAAkD;AAC3D,UAAMF,IAAN,CAAWC,GAAX,EAAgBC,QAAhB;AACD;;AAEMC,EAAAA,mBAAmB,CAAC;AAAEC,IAAAA,OAAO,GAAG,IAAZ;AAAkB,OAAGC;AAArB,GAAD,EAA6C;AACrE,UAAMF,mBAAN,CAA0B;AAAEC,MAAAA,OAAO,EAAEA,OAAX;AAAoB,SAAGC;AAAvB,KAA1B;AACD;;AAESC,EAAAA,aAAa,CAACC,KAAD,EAA4B;AACjD,SAAKC,OAAL,CAAaC,YAAb,CAA0BF,KAA1B;AACA,UAAMD,aAAN,CAAoBC,KAApB;AACA,SAAKG,KAAL;AAEA,SAAKC,mBAAL,CAAyBJ,KAAzB;AACD;;AAESK,EAAAA,YAAY,CAACL,KAAD,EAA4B;AAChD,SAAKC,OAAL,CAAaC,YAAb,CAA0BF,KAA1B;AACA,UAAMK,YAAN,CAAmBL,KAAnB;AACD;;AAESM,EAAAA,aAAa,CAACN,KAAD,EAA4B;AACjD,SAAKC,OAAL,CAAaM,KAAb,CAAmBP,KAAnB;AACA,UAAMM,aAAN,CAAoBN,KAApB;AACD;;AAESQ,EAAAA,oBAAoB,CAACR,KAAD,EAA4B;AACxD,SAAKC,OAAL,CAAaM,KAAb,CAAmBP,KAAnB;AACA,UAAMQ,oBAAN,CAA2BR,KAA3B;AACD;;AAESS,EAAAA,WAAW,CAACT,KAAD,EAA4B;AAC/C,UAAMS,WAAN,CAAkBT,KAAlB;AACA,SAAKC,OAAL,CAAaS,iBAAb,CAA+BV,KAAK,CAACW,SAArC;AACD;;AAESC,EAAAA,eAAe,CAACZ,KAAD,EAA4B;AACnD,UAAMY,eAAN,CAAsBZ,KAAtB;AACA,SAAKC,OAAL,CAAaS,iBAAb,CAA+BV,KAAK,CAACW,SAArC;AACD;;AAxC8D","sourcesContent":["import { AdaptedEvent, Config } from '../interfaces';\nimport GestureHandler from './GestureHandler';\n\nexport default class ManualGestureHandler extends GestureHandler {\n public init(ref: number, propsRef: React.RefObject<unknown>) {\n super.init(ref, propsRef);\n }\n\n public updateGestureConfig({ enabled = true, ...props }: Config): void {\n super.updateGestureConfig({ enabled: enabled, ...props });\n }\n\n protected onPointerDown(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerDown(event);\n this.begin();\n\n this.tryToSendTouchEvent(event);\n }\n\n protected onPointerAdd(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerAdd(event);\n }\n\n protected onPointerMove(event: AdaptedEvent): void {\n this.tracker.track(event);\n super.onPointerMove(event);\n }\n\n protected onPointerOutOfBounds(event: AdaptedEvent): void {\n this.tracker.track(event);\n super.onPointerOutOfBounds(event);\n }\n\n protected onPointerUp(event: AdaptedEvent): void {\n super.onPointerUp(event);\n this.tracker.removeFromTracker(event.pointerId);\n }\n\n protected onPointerRemove(event: AdaptedEvent): void {\n super.onPointerRemove(event);\n this.tracker.removeFromTracker(event.pointerId);\n }\n}\n"]}
|
|
@@ -62,6 +62,7 @@ export default class NativeViewGestureHandler extends GestureHandler {
|
|
|
62
62
|
this.tracker.addToTracker(event);
|
|
63
63
|
super.onPointerDown(event);
|
|
64
64
|
this.newPointerAction();
|
|
65
|
+
this.tryToSendTouchEvent(event);
|
|
65
66
|
}
|
|
66
67
|
|
|
67
68
|
onPointerAdd(event) {
|
|
@@ -71,8 +72,9 @@ export default class NativeViewGestureHandler extends GestureHandler {
|
|
|
71
72
|
}
|
|
72
73
|
|
|
73
74
|
newPointerAction() {
|
|
74
|
-
|
|
75
|
-
this.
|
|
75
|
+
const lastCoords = this.tracker.getAbsoluteCoordsAverage();
|
|
76
|
+
this.startX = lastCoords.x;
|
|
77
|
+
this.startY = lastCoords.y;
|
|
76
78
|
|
|
77
79
|
if (this.currentState !== State.UNDETERMINED) {
|
|
78
80
|
return;
|
|
@@ -87,8 +89,9 @@ export default class NativeViewGestureHandler extends GestureHandler {
|
|
|
87
89
|
|
|
88
90
|
onPointerMove(event) {
|
|
89
91
|
this.tracker.track(event);
|
|
90
|
-
const
|
|
91
|
-
const
|
|
92
|
+
const lastCoords = this.tracker.getAbsoluteCoordsAverage();
|
|
93
|
+
const dx = this.startX - lastCoords.x;
|
|
94
|
+
const dy = this.startY - lastCoords.y;
|
|
92
95
|
const distSq = dx * dx + dy * dy;
|
|
93
96
|
|
|
94
97
|
if (distSq >= this.minDistSq) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["NativeViewGestureHandler.ts"],"names":["Platform","State","DEFAULT_TOUCH_SLOP","GestureHandler","NativeViewGestureHandler","init","ref","propsRef","setShouldCancelWhenOutside","OS","view","delegate","getView","style","buttonRole","getAttribute","updateGestureConfig","enabled","props","config","shouldActivateOnStart","undefined","disallowInterruption","resetConfig","onPointerDown","event","tracker","addToTracker","newPointerAction","onPointerAdd","startX","
|
|
1
|
+
{"version":3,"sources":["NativeViewGestureHandler.ts"],"names":["Platform","State","DEFAULT_TOUCH_SLOP","GestureHandler","NativeViewGestureHandler","init","ref","propsRef","setShouldCancelWhenOutside","OS","view","delegate","getView","style","buttonRole","getAttribute","updateGestureConfig","enabled","props","config","shouldActivateOnStart","undefined","disallowInterruption","resetConfig","onPointerDown","event","tracker","addToTracker","newPointerAction","tryToSendTouchEvent","onPointerAdd","lastCoords","getAbsoluteCoordsAverage","startX","x","startY","y","currentState","UNDETERMINED","begin","activate","onPointerMove","track","dx","dy","distSq","minDistSq","ACTIVE","cancel","BEGAN","onPointerLeave","onPointerUp","onUp","onPointerRemove","removeFromTracker","pointerId","getTrackedPointersCount","end","fail","shouldRecognizeSimultaneously","handler","getState","disallowsInterruption","canBeInterrupted","getTag","shouldBeCancelledByOther","_handler","isButton"],"mappings":"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","sourcesContent":["import { Platform } from 'react-native';\nimport { State } from '../../State';\nimport { DEFAULT_TOUCH_SLOP } from '../constants';\nimport { AdaptedEvent, Config } from '../interfaces';\n\nimport GestureHandler from './GestureHandler';\nexport default class NativeViewGestureHandler extends GestureHandler {\n private buttonRole!: boolean;\n\n //TODO: Implement logic for activation on start\n //@ts-ignore Logic yet to be implemented\n private shouldActivateOnStart = false;\n private disallowInterruption = false;\n\n private startX = 0;\n private startY = 0;\n private minDistSq = DEFAULT_TOUCH_SLOP * DEFAULT_TOUCH_SLOP;\n\n public init(ref: number, propsRef: React.RefObject<unknown>): void {\n super.init(ref, propsRef);\n\n this.setShouldCancelWhenOutside(true);\n\n if (Platform.OS !== 'web') {\n return;\n }\n\n const view = this.delegate.getView() as HTMLElement;\n\n view.style['touchAction'] = 'auto';\n //@ts-ignore Turns on defualt touch behavior on Safari\n view.style['WebkitTouchCallout'] = 'auto';\n\n this.buttonRole = view.getAttribute('role') === 'button';\n }\n\n public updateGestureConfig({ enabled = true, ...props }: Config): void {\n super.updateGestureConfig({ enabled: enabled, ...props });\n\n if (this.config.shouldActivateOnStart !== undefined) {\n this.shouldActivateOnStart = this.config.shouldActivateOnStart;\n }\n if (this.config.disallowInterruption !== undefined) {\n this.disallowInterruption = this.config.disallowInterruption;\n }\n }\n\n protected resetConfig(): void {\n super.resetConfig();\n }\n\n protected onPointerDown(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerDown(event);\n this.newPointerAction();\n\n this.tryToSendTouchEvent(event);\n }\n\n protected onPointerAdd(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerAdd(event);\n this.newPointerAction();\n }\n\n private newPointerAction(): void {\n const lastCoords = this.tracker.getAbsoluteCoordsAverage();\n this.startX = lastCoords.x;\n this.startY = lastCoords.y;\n\n if (this.currentState !== State.UNDETERMINED) {\n return;\n }\n\n this.begin();\n if (this.buttonRole) {\n this.activate();\n }\n }\n\n protected onPointerMove(event: AdaptedEvent): void {\n this.tracker.track(event);\n\n const lastCoords = this.tracker.getAbsoluteCoordsAverage();\n const dx = this.startX - lastCoords.x;\n const dy = this.startY - lastCoords.y;\n const distSq = dx * dx + dy * dy;\n\n if (distSq >= this.minDistSq) {\n if (this.buttonRole && this.currentState === State.ACTIVE) {\n this.cancel();\n } else if (!this.buttonRole && this.currentState === State.BEGAN) {\n this.activate();\n }\n }\n }\n\n protected onPointerLeave(): void {\n if (\n this.currentState === State.BEGAN ||\n this.currentState === State.ACTIVE\n ) {\n this.cancel();\n }\n }\n\n protected onPointerUp(event: AdaptedEvent): void {\n super.onPointerUp(event);\n this.onUp(event);\n }\n\n protected onPointerRemove(event: AdaptedEvent): void {\n super.onPointerRemove(event);\n this.onUp(event);\n }\n\n private onUp(event: AdaptedEvent): void {\n this.tracker.removeFromTracker(event.pointerId);\n\n if (this.tracker.getTrackedPointersCount() === 0) {\n if (this.currentState === State.ACTIVE) {\n this.end();\n } else {\n this.fail();\n }\n }\n }\n\n public shouldRecognizeSimultaneously(handler: GestureHandler): boolean {\n if (super.shouldRecognizeSimultaneously(handler)) {\n return true;\n }\n\n if (\n handler instanceof NativeViewGestureHandler &&\n handler.getState() === State.ACTIVE &&\n handler.disallowsInterruption()\n ) {\n return false;\n }\n\n const canBeInterrupted = !this.disallowInterruption;\n\n if (\n this.currentState === State.ACTIVE &&\n handler.getState() === State.ACTIVE &&\n canBeInterrupted\n ) {\n return false;\n }\n\n return (\n this.currentState === State.ACTIVE &&\n canBeInterrupted &&\n handler.getTag() > 0\n );\n }\n\n public shouldBeCancelledByOther(_handler: GestureHandler): boolean {\n return !this.disallowInterruption;\n }\n\n public disallowsInterruption(): boolean {\n return this.disallowInterruption;\n }\n\n public isButton(): boolean {\n return this.buttonRole;\n }\n}\n"]}
|