react-native-gesture-handler 2.8.0 → 2.10.0
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +1 -0
- package/RNGestureHandler.podspec +2 -2
- package/android/build.gradle +107 -65
- package/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandler.kt +1 -1
- package/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandlerOrchestrator.kt +2 -0
- package/android/src/main/java/com/swmansion/gesturehandler/core/NativeViewGestureHandler.kt +39 -0
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.kt +9 -2
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEvent.kt +14 -2
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.kt +5 -1
- package/android/src/main/jni/CMakeLists.txt +10 -44
- package/android/src/main/jni/cpp-adapter.cpp +16 -13
- package/ios/Handlers/RNFlingHandler.m +39 -37
- package/ios/Handlers/RNForceTouchHandler.m +19 -17
- package/ios/Handlers/RNLongPressHandler.m +20 -22
- package/ios/Handlers/RNManualHandler.m +2 -3
- package/ios/Handlers/RNNativeViewHandler.mm +96 -92
- package/ios/Handlers/RNPanHandler.m +28 -32
- package/ios/Handlers/RNPinchHandler.m +9 -10
- package/ios/Handlers/RNRotationHandler.m +11 -14
- package/ios/Handlers/RNTapHandler.m +26 -26
- package/ios/RNGestureHandler.h +31 -24
- package/ios/RNGestureHandler.m +278 -273
- package/ios/RNGestureHandlerActionType.h +6 -4
- package/ios/RNGestureHandlerButton.m +11 -12
- package/ios/RNGestureHandlerButtonComponentView.h +2 -2
- package/ios/RNGestureHandlerButtonComponentView.mm +2 -2
- package/ios/RNGestureHandlerButtonManager.m +6 -5
- package/ios/RNGestureHandlerDirection.h +4 -4
- package/ios/RNGestureHandlerEvents.h +3 -4
- package/ios/RNGestureHandlerEvents.m +114 -119
- package/ios/RNGestureHandlerManager.h +1 -2
- package/ios/RNGestureHandlerManager.mm +9 -9
- package/ios/RNGestureHandlerModule.h +1 -2
- package/ios/RNGestureHandlerModule.mm +142 -138
- package/ios/RNGestureHandlerPointerTracker.h +1 -1
- package/ios/RNGestureHandlerPointerTracker.m +40 -37
- package/ios/RNGestureHandlerRegistry.h +3 -1
- package/ios/RNGestureHandlerRegistry.m +24 -22
- package/ios/RNGestureHandlerRootViewComponentView.mm +2 -2
- package/ios/RNGestureHandlerState.h +6 -6
- package/ios/RNGestureHandlerStateManager.h +1 -1
- package/ios/RNManualActivationRecognizer.m +9 -9
- package/ios/RNRootViewGestureRecognizer.m +39 -42
- package/lib/commonjs/EnableNewWebImplementation.js +35 -0
- package/lib/commonjs/EnableNewWebImplementation.js.map +1 -0
- package/lib/commonjs/GestureHandlerRootViewContext.js +15 -0
- package/lib/commonjs/GestureHandlerRootViewContext.js.map +1 -0
- package/lib/commonjs/RNGestureHandlerModule.macos.js +6 -6
- package/lib/commonjs/RNGestureHandlerModule.macos.js.map +1 -1
- package/lib/commonjs/RNGestureHandlerModule.web.js +6 -6
- package/lib/commonjs/RNGestureHandlerModule.web.js.map +1 -1
- package/lib/commonjs/RNGestureHandlerModule.windows.js +6 -6
- package/lib/commonjs/RNGestureHandlerModule.windows.js.map +1 -1
- package/lib/commonjs/components/DrawerLayout.js.map +1 -1
- package/lib/commonjs/components/GestureComponents.web.js +6 -5
- package/lib/commonjs/components/GestureComponents.web.js.map +1 -1
- package/lib/commonjs/components/GestureHandlerButton.js +3 -5
- package/lib/commonjs/components/GestureHandlerButton.js.map +1 -1
- package/lib/commonjs/{GestureHandlerRootView.android.js → components/GestureHandlerRootView.android.js} +8 -7
- package/lib/commonjs/components/GestureHandlerRootView.android.js.map +1 -0
- package/lib/commonjs/{GestureHandlerRootView.js → components/GestureHandlerRootView.js} +8 -2
- package/lib/commonjs/components/GestureHandlerRootView.js.map +1 -0
- package/lib/commonjs/{GestureHandlerRootView.web.js → components/GestureHandlerRootView.web.js} +7 -1
- package/lib/commonjs/components/GestureHandlerRootView.web.js.map +1 -0
- package/lib/commonjs/components/Swipeable.js +17 -3
- package/lib/commonjs/components/Swipeable.js.map +1 -1
- package/lib/commonjs/{gestureHandlerRootHOC.js → components/gestureHandlerRootHOC.js} +2 -1
- package/lib/commonjs/components/gestureHandlerRootHOC.js.map +1 -0
- package/lib/commonjs/handlers/LongPressGestureHandler.js +3 -1
- package/lib/commonjs/handlers/LongPressGestureHandler.js.map +1 -1
- package/lib/commonjs/handlers/TapGestureHandler.js +3 -1
- package/lib/commonjs/handlers/TapGestureHandler.js.map +1 -1
- package/lib/commonjs/handlers/createHandler.js +21 -13
- package/lib/commonjs/handlers/createHandler.js.map +1 -1
- package/lib/commonjs/handlers/gestureHandlerCommon.js +5 -4
- package/lib/commonjs/handlers/gestureHandlerCommon.js.map +1 -1
- package/lib/commonjs/handlers/gestures/GestureDetector.js +89 -37
- package/lib/commonjs/handlers/gestures/GestureDetector.js.map +1 -1
- package/lib/commonjs/handlers/gestures/longPressGesture.js +1 -0
- package/lib/commonjs/handlers/gestures/longPressGesture.js.map +1 -1
- package/lib/commonjs/handlers/gestures/reanimatedWrapper.js +22 -19
- package/lib/commonjs/handlers/gestures/reanimatedWrapper.js.map +1 -1
- package/lib/commonjs/handlers/gestures/tapGesture.js +1 -0
- package/lib/commonjs/handlers/gestures/tapGesture.js.map +1 -1
- package/lib/commonjs/index.js +16 -4
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/utils.js +0 -6
- package/lib/commonjs/utils.js.map +1 -1
- package/lib/commonjs/web/handlers/FlingGestureHandler.js +0 -5
- package/lib/commonjs/web/handlers/FlingGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/GestureHandler.js +3 -0
- package/lib/commonjs/web/handlers/GestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/LongPressGestureHandler.js +0 -1
- package/lib/commonjs/web/handlers/LongPressGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/ManualGestureHandler.js +0 -5
- package/lib/commonjs/web/handlers/ManualGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/NativeViewGestureHandler.js +0 -6
- package/lib/commonjs/web/handlers/NativeViewGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/PanGestureHandler.js +2 -12
- package/lib/commonjs/web/handlers/PanGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/PinchGestureHandler.js +0 -5
- package/lib/commonjs/web/handlers/PinchGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/RotationGestureHandler.js +0 -6
- package/lib/commonjs/web/handlers/RotationGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/TapGestureHandler.js +0 -7
- package/lib/commonjs/web/handlers/TapGestureHandler.js.map +1 -1
- package/lib/commonjs/web/tools/CircularBuffer.js +59 -0
- package/lib/commonjs/web/tools/CircularBuffer.js.map +1 -0
- package/lib/commonjs/web/tools/LeastSquareSolver.js +204 -0
- package/lib/commonjs/web/tools/LeastSquareSolver.js.map +1 -0
- package/lib/commonjs/web/tools/PointerEventManager.js +27 -0
- package/lib/commonjs/web/tools/PointerEventManager.js.map +1 -1
- package/lib/commonjs/web/tools/PointerTracker.js +11 -7
- package/lib/commonjs/web/tools/PointerTracker.js.map +1 -1
- package/lib/commonjs/web/tools/VelocityTracker.js +111 -0
- package/lib/commonjs/web/tools/VelocityTracker.js.map +1 -0
- package/lib/commonjs/web_hammer/GestureHandler.js +1 -1
- package/lib/commonjs/web_hammer/GestureHandler.js.map +1 -1
- package/lib/module/EnableNewWebImplementation.js +22 -0
- package/lib/module/EnableNewWebImplementation.js.map +1 -0
- package/lib/module/GestureHandlerRootViewContext.js +3 -0
- package/lib/module/GestureHandlerRootViewContext.js.map +1 -0
- package/lib/module/RNGestureHandlerModule.macos.js +6 -6
- package/lib/module/RNGestureHandlerModule.macos.js.map +1 -1
- package/lib/module/RNGestureHandlerModule.web.js +6 -6
- package/lib/module/RNGestureHandlerModule.web.js.map +1 -1
- package/lib/module/RNGestureHandlerModule.windows.js +6 -6
- package/lib/module/RNGestureHandlerModule.windows.js.map +1 -1
- package/lib/module/components/DrawerLayout.js.map +1 -1
- package/lib/module/components/GestureComponents.web.js +5 -6
- package/lib/module/components/GestureComponents.web.js.map +1 -1
- package/lib/module/components/GestureHandlerButton.js +1 -4
- package/lib/module/components/GestureHandlerButton.js.map +1 -1
- package/lib/module/components/GestureHandlerRootView.android.js +14 -0
- package/lib/module/components/GestureHandlerRootView.android.js.map +1 -0
- package/lib/module/{GestureHandlerRootView.js → components/GestureHandlerRootView.js} +5 -2
- package/lib/module/components/GestureHandlerRootView.js.map +1 -0
- package/lib/module/components/GestureHandlerRootView.web.js +9 -0
- package/lib/module/components/GestureHandlerRootView.web.js.map +1 -0
- package/lib/module/components/Swipeable.js +17 -3
- package/lib/module/components/Swipeable.js.map +1 -1
- package/lib/module/{gestureHandlerRootHOC.js → components/gestureHandlerRootHOC.js} +2 -1
- package/lib/module/components/gestureHandlerRootHOC.js.map +1 -0
- package/lib/module/handlers/LongPressGestureHandler.js +3 -1
- package/lib/module/handlers/LongPressGestureHandler.js.map +1 -1
- package/lib/module/handlers/TapGestureHandler.js +3 -1
- package/lib/module/handlers/TapGestureHandler.js.map +1 -1
- package/lib/module/handlers/createHandler.js +20 -13
- package/lib/module/handlers/createHandler.js.map +1 -1
- package/lib/module/handlers/gestureHandlerCommon.js +5 -4
- package/lib/module/handlers/gestureHandlerCommon.js.map +1 -1
- package/lib/module/handlers/gestures/GestureDetector.js +89 -38
- package/lib/module/handlers/gestures/GestureDetector.js.map +1 -1
- package/lib/module/handlers/gestures/longPressGesture.js +1 -0
- package/lib/module/handlers/gestures/longPressGesture.js.map +1 -1
- package/lib/module/handlers/gestures/reanimatedWrapper.js +19 -16
- package/lib/module/handlers/gestures/reanimatedWrapper.js.map +1 -1
- package/lib/module/handlers/gestures/tapGesture.js +1 -0
- package/lib/module/handlers/gestures/tapGesture.js.map +1 -1
- package/lib/module/index.js +4 -4
- package/lib/module/index.js.map +1 -1
- package/lib/module/utils.js +0 -4
- package/lib/module/utils.js.map +1 -1
- package/lib/module/web/handlers/FlingGestureHandler.js +0 -5
- package/lib/module/web/handlers/FlingGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/GestureHandler.js +3 -0
- package/lib/module/web/handlers/GestureHandler.js.map +1 -1
- package/lib/module/web/handlers/LongPressGestureHandler.js +0 -1
- package/lib/module/web/handlers/LongPressGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/ManualGestureHandler.js +0 -5
- package/lib/module/web/handlers/ManualGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/NativeViewGestureHandler.js +0 -6
- package/lib/module/web/handlers/NativeViewGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/PanGestureHandler.js +2 -9
- package/lib/module/web/handlers/PanGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/PinchGestureHandler.js +0 -5
- package/lib/module/web/handlers/PinchGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/RotationGestureHandler.js +0 -6
- package/lib/module/web/handlers/RotationGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/TapGestureHandler.js +0 -7
- package/lib/module/web/handlers/TapGestureHandler.js.map +1 -1
- package/lib/module/web/tools/CircularBuffer.js +50 -0
- package/lib/module/web/tools/CircularBuffer.js.map +1 -0
- package/lib/module/web/tools/LeastSquareSolver.js +195 -0
- package/lib/module/web/tools/LeastSquareSolver.js.map +1 -0
- package/lib/module/web/tools/PointerEventManager.js +27 -0
- package/lib/module/web/tools/PointerEventManager.js.map +1 -1
- package/lib/module/web/tools/PointerTracker.js +8 -7
- package/lib/module/web/tools/PointerTracker.js.map +1 -1
- package/lib/module/web/tools/VelocityTracker.js +98 -0
- package/lib/module/web/tools/VelocityTracker.js.map +1 -0
- package/lib/module/web_hammer/GestureHandler.js +1 -1
- package/lib/module/web_hammer/GestureHandler.js.map +1 -1
- package/lib/typescript/EnableNewWebImplementation.d.ts +3 -0
- package/lib/typescript/GestureHandlerRootViewContext.d.ts +3 -0
- package/lib/typescript/components/DrawerLayout.d.ts +3 -1
- package/lib/typescript/components/GestureComponents.web.d.ts +1 -1
- package/lib/typescript/components/Swipeable.d.ts +14 -2
- package/lib/typescript/components/gestureHandlerRootHOC.d.ts +3 -0
- package/lib/typescript/index.d.ts +4 -4
- package/lib/typescript/{fabric → specs}/RNGestureHandlerButtonNativeComponent.d.ts +1 -1
- package/lib/typescript/{fabric → specs}/RNGestureHandlerRootViewNativeComponent.d.ts +1 -1
- package/lib/typescript/utils.d.ts +0 -1
- package/lib/typescript/web/handlers/FlingGestureHandler.d.ts +0 -1
- package/lib/typescript/web/handlers/ManualGestureHandler.d.ts +0 -1
- package/lib/typescript/web/handlers/NativeViewGestureHandler.d.ts +0 -1
- package/lib/typescript/web/handlers/PanGestureHandler.d.ts +0 -1
- package/lib/typescript/web/handlers/PinchGestureHandler.d.ts +0 -1
- package/lib/typescript/web/handlers/RotationGestureHandler.d.ts +0 -1
- package/lib/typescript/web/handlers/TapGestureHandler.d.ts +0 -1
- package/lib/typescript/web/tools/CircularBuffer.d.ts +11 -0
- package/lib/typescript/web/tools/LeastSquareSolver.d.ts +12 -0
- package/lib/typescript/web/tools/PointerEventManager.d.ts +2 -0
- package/lib/typescript/web/tools/PointerTracker.d.ts +1 -0
- package/lib/typescript/web/tools/VelocityTracker.d.ts +13 -0
- package/package.json +6 -7
- package/src/EnableNewWebImplementation.ts +35 -0
- package/src/GestureHandlerRootViewContext.ts +3 -0
- package/src/RNGestureHandlerModule.macos.ts +6 -6
- package/src/RNGestureHandlerModule.web.ts +6 -6
- package/src/RNGestureHandlerModule.windows.ts +6 -6
- package/src/components/DrawerLayout.tsx +8 -4
- package/src/components/GestureComponents.web.tsx +5 -6
- package/src/components/GestureHandlerButton.tsx +2 -7
- package/src/components/GestureHandlerRootView.android.tsx +24 -0
- package/src/{GestureHandlerRootView.tsx → components/GestureHandlerRootView.tsx} +7 -2
- package/src/{GestureHandlerRootView.web.tsx → components/GestureHandlerRootView.web.tsx} +6 -1
- package/src/components/Swipeable.tsx +43 -12
- package/src/{gestureHandlerRootHOC.tsx → components/gestureHandlerRootHOC.tsx} +4 -1
- package/src/handlers/LongPressGestureHandler.ts +3 -1
- package/src/handlers/TapGestureHandler.ts +3 -1
- package/src/handlers/createHandler.tsx +20 -9
- package/src/handlers/gestureHandlerCommon.ts +5 -6
- package/src/handlers/gestures/GestureDetector.tsx +99 -36
- package/src/handlers/gestures/longPressGesture.ts +1 -0
- package/src/handlers/gestures/reanimatedWrapper.ts +21 -20
- package/src/handlers/gestures/tapGesture.ts +1 -0
- package/src/index.ts +7 -3
- package/src/utils.ts +0 -5
- package/src/web/handlers/FlingGestureHandler.ts +0 -5
- package/src/web/handlers/GestureHandler.ts +3 -0
- package/src/web/handlers/LongPressGestureHandler.ts +0 -1
- package/src/web/handlers/ManualGestureHandler.ts +0 -5
- package/src/web/handlers/NativeViewGestureHandler.ts +0 -6
- package/src/web/handlers/PanGestureHandler.ts +2 -9
- package/src/web/handlers/PinchGestureHandler.ts +0 -5
- package/src/web/handlers/RotationGestureHandler.ts +0 -7
- package/src/web/handlers/TapGestureHandler.ts +0 -7
- package/src/web/tools/CircularBuffer.ts +42 -0
- package/src/web/tools/LeastSquareSolver.ts +182 -0
- package/src/web/tools/PointerEventManager.ts +29 -0
- package/src/web/tools/PointerTracker.ts +7 -7
- package/src/web/tools/VelocityTracker.ts +98 -0
- package/src/web_hammer/GestureHandler.ts +1 -1
- package/lib/commonjs/EnableExperimentalWebImplementation.js +0 -31
- package/lib/commonjs/EnableExperimentalWebImplementation.js.map +0 -1
- package/lib/commonjs/GestureHandlerRootView.android.js.map +0 -1
- package/lib/commonjs/GestureHandlerRootView.js.map +0 -1
- package/lib/commonjs/GestureHandlerRootView.web.js.map +0 -1
- package/lib/commonjs/gestureHandlerRootHOC.js.map +0 -1
- package/lib/module/EnableExperimentalWebImplementation.js +0 -20
- package/lib/module/EnableExperimentalWebImplementation.js.map +0 -1
- package/lib/module/GestureHandlerRootView.android.js +0 -14
- package/lib/module/GestureHandlerRootView.android.js.map +0 -1
- package/lib/module/GestureHandlerRootView.js.map +0 -1
- package/lib/module/GestureHandlerRootView.web.js +0 -6
- package/lib/module/GestureHandlerRootView.web.js.map +0 -1
- package/lib/module/gestureHandlerRootHOC.js.map +0 -1
- package/lib/typescript/EnableExperimentalWebImplementation.d.ts +0 -2
- package/lib/typescript/gestureHandlerRootHOC.d.ts +0 -3
- package/src/EnableExperimentalWebImplementation.ts +0 -27
- package/src/GestureHandlerRootView.android.tsx +0 -24
- /package/lib/commonjs/{fabric → specs}/RNGestureHandlerButtonNativeComponent.js +0 -0
- /package/lib/commonjs/{fabric → specs}/RNGestureHandlerButtonNativeComponent.js.map +0 -0
- /package/lib/commonjs/{fabric → specs}/RNGestureHandlerRootViewNativeComponent.js +0 -0
- /package/lib/commonjs/{fabric → specs}/RNGestureHandlerRootViewNativeComponent.js.map +0 -0
- /package/lib/module/{fabric → specs}/RNGestureHandlerButtonNativeComponent.js +0 -0
- /package/lib/module/{fabric → specs}/RNGestureHandlerButtonNativeComponent.js.map +0 -0
- /package/lib/module/{fabric → specs}/RNGestureHandlerRootViewNativeComponent.js +0 -0
- /package/lib/module/{fabric → specs}/RNGestureHandlerRootViewNativeComponent.js.map +0 -0
- /package/lib/typescript/{GestureHandlerRootView.android.d.ts → components/GestureHandlerRootView.android.d.ts} +0 -0
- /package/lib/typescript/{GestureHandlerRootView.d.ts → components/GestureHandlerRootView.d.ts} +0 -0
- /package/lib/typescript/{GestureHandlerRootView.web.d.ts → components/GestureHandlerRootView.web.d.ts} +0 -0
- /package/src/{fabric → specs}/RNGestureHandlerButtonNativeComponent.ts +0 -0
- /package/src/{fabric → specs}/RNGestureHandlerRootViewNativeComponent.ts +0 -0
@@ -40,9 +40,4 @@ export default class ManualGestureHandler extends GestureHandler {
|
|
40
40
|
super.onPointerRemove(event);
|
41
41
|
this.tracker.removeFromTracker(event.pointerId);
|
42
42
|
}
|
43
|
-
|
44
|
-
protected onPointerCancel(event: AdaptedEvent): void {
|
45
|
-
super.onPointerCancel(event);
|
46
|
-
this.reset();
|
47
|
-
}
|
48
43
|
}
|
@@ -115,12 +115,6 @@ export default class NativeViewGestureHandler extends GestureHandler {
|
|
115
115
|
}
|
116
116
|
}
|
117
117
|
|
118
|
-
protected onPointerCancel(event: AdaptedEvent): void {
|
119
|
-
super.onPointerCancel(event);
|
120
|
-
this.cancel();
|
121
|
-
this.reset();
|
122
|
-
}
|
123
|
-
|
124
118
|
public shouldRecognizeSimultaneously(handler: GestureHandler): boolean {
|
125
119
|
if (super.shouldRecognizeSimultaneously(handler)) {
|
126
120
|
return true;
|
@@ -1,4 +1,3 @@
|
|
1
|
-
import { PixelRatio } from 'react-native';
|
2
1
|
import { State } from '../../State';
|
3
2
|
import { DEFAULT_TOUCH_SLOP } from '../constants';
|
4
3
|
import { AdaptedEvent, Config } from '../interfaces';
|
@@ -188,7 +187,6 @@ export default class PanGestureHandler extends GestureHandler {
|
|
188
187
|
|
189
188
|
protected transformNativeEvent() {
|
190
189
|
const rect: DOMRect = this.view.getBoundingClientRect();
|
191
|
-
const ratio = PixelRatio.get();
|
192
190
|
|
193
191
|
const translationX: number = this.getTranslationX();
|
194
192
|
const translationY: number = this.getTranslationY();
|
@@ -198,8 +196,8 @@ export default class PanGestureHandler extends GestureHandler {
|
|
198
196
|
translationY: isNaN(translationY) ? 0 : translationY,
|
199
197
|
absoluteX: this.tracker.getLastAvgX(),
|
200
198
|
absoluteY: this.tracker.getLastAvgY(),
|
201
|
-
velocityX: this.velocityX
|
202
|
-
velocityY: this.velocityY
|
199
|
+
velocityX: this.velocityX,
|
200
|
+
velocityY: this.velocityY,
|
203
201
|
x: this.tracker.getLastAvgX() - rect.left,
|
204
202
|
y: this.tracker.getLastAvgY() - rect.top,
|
205
203
|
};
|
@@ -306,11 +304,6 @@ export default class PanGestureHandler extends GestureHandler {
|
|
306
304
|
super.onPointerMove(event);
|
307
305
|
}
|
308
306
|
|
309
|
-
protected onPointerCancel(event: AdaptedEvent): void {
|
310
|
-
super.onPointerCancel(event);
|
311
|
-
|
312
|
-
this.reset();
|
313
|
-
}
|
314
307
|
protected onPointerOutOfBounds(event: AdaptedEvent): void {
|
315
308
|
if (this.getShouldCancelWhenOutside()) {
|
316
309
|
return;
|
@@ -127,11 +127,6 @@ export default class PinchGestureHandler extends GestureHandler {
|
|
127
127
|
super.onPointerOutOfBounds(event);
|
128
128
|
}
|
129
129
|
|
130
|
-
protected onPointerCancel(event: AdaptedEvent): void {
|
131
|
-
super.onPointerCancel(event);
|
132
|
-
this.reset();
|
133
|
-
}
|
134
|
-
|
135
130
|
private tryBegin(): void {
|
136
131
|
if (this.currentState !== State.UNDETERMINED) {
|
137
132
|
return;
|
@@ -148,13 +148,6 @@ export default class RotationGestureHandler extends GestureHandler {
|
|
148
148
|
this.tracker.removeFromTracker(event.pointerId);
|
149
149
|
}
|
150
150
|
|
151
|
-
protected onPointerCancel(event: AdaptedEvent): void {
|
152
|
-
super.onPointerCancel(event);
|
153
|
-
this.end();
|
154
|
-
|
155
|
-
this.reset();
|
156
|
-
}
|
157
|
-
|
158
151
|
protected tryBegin(): void {
|
159
152
|
if (this.currentState !== State.UNDETERMINED) {
|
160
153
|
return;
|
@@ -33,7 +33,6 @@ export default class TapGestureHandler extends GestureHandler {
|
|
33
33
|
|
34
34
|
public init(ref: number, propsRef: React.RefObject<unknown>): void {
|
35
35
|
super.init(ref, propsRef);
|
36
|
-
this.setShouldCancelWhenOutside(true);
|
37
36
|
}
|
38
37
|
|
39
38
|
public updateGestureConfig({ enabled = true, ...props }: Config): void {
|
@@ -198,12 +197,6 @@ export default class TapGestureHandler extends GestureHandler {
|
|
198
197
|
super.onPointerOutOfBounds(event);
|
199
198
|
}
|
200
199
|
|
201
|
-
protected onPointerCancel(event: AdaptedEvent): void {
|
202
|
-
super.onPointerCancel(event);
|
203
|
-
this.tracker.resetTracker();
|
204
|
-
this.fail();
|
205
|
-
}
|
206
|
-
|
207
200
|
private updateState(event: AdaptedEvent): void {
|
208
201
|
if (
|
209
202
|
this.currentMaxNumberOfPointers < this.tracker.getTrackedPointersCount()
|
@@ -0,0 +1,42 @@
|
|
1
|
+
export default class CircularBuffer<T> {
|
2
|
+
private bufferSize: number;
|
3
|
+
private buffer: T[];
|
4
|
+
private index: number;
|
5
|
+
private actualSize: number;
|
6
|
+
|
7
|
+
constructor(size: number) {
|
8
|
+
this.bufferSize = size;
|
9
|
+
this.buffer = new Array<T>(size);
|
10
|
+
this.index = 0;
|
11
|
+
this.actualSize = 0;
|
12
|
+
}
|
13
|
+
|
14
|
+
public get size(): number {
|
15
|
+
return this.actualSize;
|
16
|
+
}
|
17
|
+
|
18
|
+
public push(element: T): void {
|
19
|
+
this.buffer[this.index] = element;
|
20
|
+
this.index = (this.index + 1) % this.bufferSize;
|
21
|
+
this.actualSize = Math.min(this.actualSize + 1, this.bufferSize);
|
22
|
+
}
|
23
|
+
|
24
|
+
public get(at: number): T {
|
25
|
+
if (this.actualSize === this.bufferSize) {
|
26
|
+
let index = (this.index + at) % this.bufferSize;
|
27
|
+
if (index < 0) {
|
28
|
+
index += this.bufferSize;
|
29
|
+
}
|
30
|
+
|
31
|
+
return this.buffer[index];
|
32
|
+
} else {
|
33
|
+
return this.buffer[at];
|
34
|
+
}
|
35
|
+
}
|
36
|
+
|
37
|
+
public clear(): void {
|
38
|
+
this.buffer = new Array<T>(this.bufferSize);
|
39
|
+
this.index = 0;
|
40
|
+
this.actualSize = 0;
|
41
|
+
}
|
42
|
+
}
|
@@ -0,0 +1,182 @@
|
|
1
|
+
// Implementation taken from Flutter's LeastSquareSolver
|
2
|
+
// https://github.com/flutter/flutter/blob/master/packages/flutter/lib/src/gestures/lsq_solver.dart
|
3
|
+
|
4
|
+
class Vector {
|
5
|
+
private offset: number;
|
6
|
+
private length: number;
|
7
|
+
private elements: number[];
|
8
|
+
|
9
|
+
constructor(length: number) {
|
10
|
+
this.offset = 0;
|
11
|
+
this.length = length;
|
12
|
+
this.elements = new Array<number>(length);
|
13
|
+
}
|
14
|
+
|
15
|
+
public static fromVOL(
|
16
|
+
values: number[],
|
17
|
+
offset: number,
|
18
|
+
length: number
|
19
|
+
): Vector {
|
20
|
+
const result = new Vector(0);
|
21
|
+
|
22
|
+
result.offset = offset;
|
23
|
+
result.length = length;
|
24
|
+
result.elements = values;
|
25
|
+
|
26
|
+
return result;
|
27
|
+
}
|
28
|
+
|
29
|
+
public get(index: number): number {
|
30
|
+
return this.elements[this.offset + index];
|
31
|
+
}
|
32
|
+
|
33
|
+
public set(index: number, value: number): void {
|
34
|
+
this.elements[this.offset + index] = value;
|
35
|
+
}
|
36
|
+
|
37
|
+
public dot(other: Vector): number {
|
38
|
+
let result = 0;
|
39
|
+
for (let i = 0; i < this.length; i++) {
|
40
|
+
result += this.get(i) * other.get(i);
|
41
|
+
}
|
42
|
+
return result;
|
43
|
+
}
|
44
|
+
|
45
|
+
public norm() {
|
46
|
+
return Math.sqrt(this.dot(this));
|
47
|
+
}
|
48
|
+
}
|
49
|
+
|
50
|
+
class Matrix {
|
51
|
+
private columns: number;
|
52
|
+
private elements: number[];
|
53
|
+
|
54
|
+
constructor(rows: number, columns: number) {
|
55
|
+
this.columns = columns;
|
56
|
+
this.elements = new Array<number>(rows * columns);
|
57
|
+
}
|
58
|
+
|
59
|
+
public get(row: number, column: number): number {
|
60
|
+
return this.elements[row * this.columns + column];
|
61
|
+
}
|
62
|
+
|
63
|
+
public set(row: number, column: number, value: number): void {
|
64
|
+
this.elements[row * this.columns + column] = value;
|
65
|
+
}
|
66
|
+
|
67
|
+
public getRow(row: number): Vector {
|
68
|
+
return Vector.fromVOL(this.elements, row * this.columns, this.columns);
|
69
|
+
}
|
70
|
+
}
|
71
|
+
|
72
|
+
/// An nth degree polynomial fit to a dataset.
|
73
|
+
class PolynomialFit {
|
74
|
+
/// The polynomial coefficients of the fit.
|
75
|
+
///
|
76
|
+
/// For each `i`, the element `coefficients[i]` is the coefficient of
|
77
|
+
/// the `i`-th power of the variable.
|
78
|
+
public coefficients: number[];
|
79
|
+
|
80
|
+
/// Creates a polynomial fit of the given degree.
|
81
|
+
///
|
82
|
+
/// There are n + 1 coefficients in a fit of degree n.
|
83
|
+
constructor(degree: number) {
|
84
|
+
this.coefficients = new Array<number>(degree + 1);
|
85
|
+
}
|
86
|
+
}
|
87
|
+
|
88
|
+
const precisionErrorTolerance = 1e-10;
|
89
|
+
|
90
|
+
/// Uses the least-squares algorithm to fit a polynomial to a set of data.
|
91
|
+
export default class LeastSquareSolver {
|
92
|
+
/// The x-coordinates of each data point.
|
93
|
+
private x: number[];
|
94
|
+
/// The y-coordinates of each data point.
|
95
|
+
private y: number[];
|
96
|
+
/// The weight to use for each data point.
|
97
|
+
private w: number[];
|
98
|
+
|
99
|
+
/// Creates a least-squares solver.
|
100
|
+
///
|
101
|
+
/// The [x], [y], and [w] arguments must not be null.
|
102
|
+
constructor(x: number[], y: number[], w: number[]) {
|
103
|
+
this.x = x;
|
104
|
+
this.y = y;
|
105
|
+
this.w = w;
|
106
|
+
}
|
107
|
+
|
108
|
+
/// Fits a polynomial of the given degree to the data points.
|
109
|
+
///
|
110
|
+
/// When there is not enough data to fit a curve null is returned.
|
111
|
+
public solve(degree: number): PolynomialFit | null {
|
112
|
+
if (degree > this.x.length) {
|
113
|
+
// Not enough data to fit a curve.
|
114
|
+
return null;
|
115
|
+
}
|
116
|
+
|
117
|
+
const result = new PolynomialFit(degree);
|
118
|
+
|
119
|
+
// Shorthands for the purpose of notation equivalence to original C++ code.
|
120
|
+
const m = this.x.length;
|
121
|
+
const n = degree + 1;
|
122
|
+
|
123
|
+
// Expand the X vector to a matrix A, pre-multiplied by the weights.
|
124
|
+
const a = new Matrix(n, m);
|
125
|
+
for (let h = 0; h < m; h++) {
|
126
|
+
a.set(0, h, this.w[h]);
|
127
|
+
|
128
|
+
for (let i = 1; i < n; i++) {
|
129
|
+
a.set(i, h, a.get(i - 1, h) * this.x[h]);
|
130
|
+
}
|
131
|
+
}
|
132
|
+
|
133
|
+
// Apply the Gram-Schmidt process to A to obtain its QR decomposition.
|
134
|
+
|
135
|
+
// Orthonormal basis, column-major ordVectorer.
|
136
|
+
const q = new Matrix(n, m);
|
137
|
+
// Upper triangular matrix, row-major order.
|
138
|
+
const r = new Matrix(n, m);
|
139
|
+
|
140
|
+
for (let j = 0; j < n; j += 1) {
|
141
|
+
for (let h = 0; h < m; h += 1) {
|
142
|
+
q.set(j, h, a.get(j, h));
|
143
|
+
}
|
144
|
+
for (let i = 0; i < j; i += 1) {
|
145
|
+
const dot = q.getRow(j).dot(q.getRow(i));
|
146
|
+
for (let h = 0; h < m; h += 1) {
|
147
|
+
q.set(j, h, q.get(j, h) - dot * q.get(i, h));
|
148
|
+
}
|
149
|
+
}
|
150
|
+
|
151
|
+
const norm = q.getRow(j).norm();
|
152
|
+
if (norm < precisionErrorTolerance) {
|
153
|
+
// Vectors are linearly dependent or zero so no solution.
|
154
|
+
return null;
|
155
|
+
}
|
156
|
+
|
157
|
+
const inverseNorm = 1.0 / norm;
|
158
|
+
for (let h = 0; h < m; h += 1) {
|
159
|
+
q.set(j, h, q.get(j, h) * inverseNorm);
|
160
|
+
}
|
161
|
+
for (let i = 0; i < n; i += 1) {
|
162
|
+
r.set(j, i, i < j ? 0.0 : q.getRow(j).dot(a.getRow(i)));
|
163
|
+
}
|
164
|
+
}
|
165
|
+
|
166
|
+
// Solve R B = Qt W Y to find B. This is easy because R is upper triangular.
|
167
|
+
// We just work from bottom-right to top-left calculating B's coefficients.
|
168
|
+
const wy = new Vector(m);
|
169
|
+
for (let h = 0; h < m; h += 1) {
|
170
|
+
wy.set(h, this.y[h] * this.w[h]);
|
171
|
+
}
|
172
|
+
for (let i = n - 1; i >= 0; i -= 1) {
|
173
|
+
result.coefficients[i] = q.getRow(i).dot(wy);
|
174
|
+
for (let j = n - 1; j > i; j -= 1) {
|
175
|
+
result.coefficients[i] -= r.get(i, j) * result.coefficients[j];
|
176
|
+
}
|
177
|
+
result.coefficients[i] /= r.get(i, i);
|
178
|
+
}
|
179
|
+
|
180
|
+
return result;
|
181
|
+
}
|
182
|
+
}
|
@@ -8,6 +8,8 @@ import EventManager from './EventManager';
|
|
8
8
|
import { isPointerInBounds } from '../utils';
|
9
9
|
|
10
10
|
export default class PointerEventManager extends EventManager {
|
11
|
+
private trackedPointers = new Set<number>();
|
12
|
+
|
11
13
|
public setListeners(): void {
|
12
14
|
this.view.addEventListener('pointerdown', (event: PointerEvent): void => {
|
13
15
|
if (event.pointerType === PointerType.TOUCH) {
|
@@ -24,6 +26,7 @@ export default class PointerEventManager extends EventManager {
|
|
24
26
|
|
25
27
|
target.setPointerCapture(adaptedEvent.pointerId);
|
26
28
|
this.markAsInBounds(adaptedEvent.pointerId);
|
29
|
+
this.trackedPointers.add(adaptedEvent.pointerId);
|
27
30
|
|
28
31
|
if (++this.activePointersCounter > 1) {
|
29
32
|
adaptedEvent.eventType = EventTypes.ADDITIONAL_POINTER_DOWN;
|
@@ -51,6 +54,7 @@ export default class PointerEventManager extends EventManager {
|
|
51
54
|
|
52
55
|
target.releasePointerCapture(adaptedEvent.pointerId);
|
53
56
|
this.markAsOutOfBounds(adaptedEvent.pointerId);
|
57
|
+
this.trackedPointers.delete(adaptedEvent.pointerId);
|
54
58
|
|
55
59
|
if (--this.activePointersCounter > 0) {
|
56
60
|
adaptedEvent.eventType = EventTypes.ADDITIONAL_POINTER_UP;
|
@@ -115,7 +119,27 @@ export default class PointerEventManager extends EventManager {
|
|
115
119
|
this.onPointerCancel(adaptedEvent);
|
116
120
|
this.markAsOutOfBounds(adaptedEvent.pointerId);
|
117
121
|
this.activePointersCounter = 0;
|
122
|
+
this.trackedPointers.clear();
|
118
123
|
});
|
124
|
+
|
125
|
+
this.view.addEventListener(
|
126
|
+
'lostpointercapture',
|
127
|
+
(event: PointerEvent): void => {
|
128
|
+
const adaptedEvent: AdaptedEvent = this.mapEvent(
|
129
|
+
event,
|
130
|
+
EventTypes.CANCEL
|
131
|
+
);
|
132
|
+
|
133
|
+
if (this.trackedPointers.has(adaptedEvent.pointerId)) {
|
134
|
+
// in some cases the `pointerup` event is not fired, but `lostpointercapture` is
|
135
|
+
// we simulate the `pointercancel` event here to make sure the gesture handler stops tracking it
|
136
|
+
this.onPointerCancel(adaptedEvent);
|
137
|
+
|
138
|
+
this.activePointersCounter = 0;
|
139
|
+
this.trackedPointers.clear();
|
140
|
+
}
|
141
|
+
}
|
142
|
+
);
|
119
143
|
}
|
120
144
|
|
121
145
|
protected mapEvent(event: PointerEvent, eventType: EventTypes): AdaptedEvent {
|
@@ -131,4 +155,9 @@ export default class PointerEventManager extends EventManager {
|
|
131
155
|
time: event.timeStamp,
|
132
156
|
};
|
133
157
|
}
|
158
|
+
|
159
|
+
public resetManager(): void {
|
160
|
+
super.resetManager();
|
161
|
+
this.trackedPointers.clear();
|
162
|
+
}
|
134
163
|
}
|
@@ -1,4 +1,5 @@
|
|
1
1
|
import { AdaptedEvent } from '../interfaces';
|
2
|
+
import VelocityTracker from './VelocityTracker';
|
2
3
|
|
3
4
|
export interface TrackerElement {
|
4
5
|
lastX: number;
|
@@ -10,11 +11,10 @@ export interface TrackerElement {
|
|
10
11
|
velocityY: number;
|
11
12
|
}
|
12
13
|
|
13
|
-
// Used to scale velocity so that it is similar to velocity in Android/iOS
|
14
|
-
const VELOCITY_FACTOR = 0.2;
|
15
14
|
const MAX_POINTERS = 20;
|
16
15
|
|
17
16
|
export default class PointerTracker {
|
17
|
+
private velocityTracker = new VelocityTracker();
|
18
18
|
private trackedPointers: Map<number, TrackerElement> = new Map<
|
19
19
|
number,
|
20
20
|
TrackerElement
|
@@ -74,12 +74,11 @@ export default class PointerTracker {
|
|
74
74
|
|
75
75
|
this.lastMovedPointerId = event.pointerId;
|
76
76
|
|
77
|
-
|
78
|
-
const
|
79
|
-
const dt = event.time - element.timeStamp;
|
77
|
+
this.velocityTracker.add(event);
|
78
|
+
const [velocityX, velocityY] = this.velocityTracker.getVelocity();
|
80
79
|
|
81
|
-
element.velocityX =
|
82
|
-
element.velocityY =
|
80
|
+
element.velocityX = velocityX;
|
81
|
+
element.velocityY = velocityY;
|
83
82
|
|
84
83
|
element.lastX = event.x;
|
85
84
|
element.lastY = event.y;
|
@@ -223,6 +222,7 @@ export default class PointerTracker {
|
|
223
222
|
}
|
224
223
|
|
225
224
|
public resetTracker(): void {
|
225
|
+
this.velocityTracker.reset();
|
226
226
|
this.trackedPointers.clear();
|
227
227
|
this.lastMovedPointerId = NaN;
|
228
228
|
|
@@ -0,0 +1,98 @@
|
|
1
|
+
import { AdaptedEvent } from '../interfaces';
|
2
|
+
import CircularBuffer from './CircularBuffer';
|
3
|
+
import LeastSquareSolver from './LeastSquareSolver';
|
4
|
+
|
5
|
+
export default class VelocityTracker {
|
6
|
+
private assumePointerMoveStoppedMilliseconds = 40;
|
7
|
+
private historySize = 20;
|
8
|
+
private horizonMilliseconds = 300;
|
9
|
+
private minSampleSize = 3;
|
10
|
+
|
11
|
+
private samples: CircularBuffer<AdaptedEvent>;
|
12
|
+
|
13
|
+
constructor() {
|
14
|
+
this.samples = new CircularBuffer<AdaptedEvent>(this.historySize);
|
15
|
+
}
|
16
|
+
|
17
|
+
public add(event: AdaptedEvent): void {
|
18
|
+
this.samples.push(event);
|
19
|
+
}
|
20
|
+
|
21
|
+
/// Returns an estimate of the velocity of the object being tracked by the
|
22
|
+
/// tracker given the current information available to the tracker.
|
23
|
+
///
|
24
|
+
/// Information is added using [addPosition].
|
25
|
+
///
|
26
|
+
/// Returns null if there is no data on which to base an estimate.
|
27
|
+
private getVelocityEstimate(): [number, number] | null {
|
28
|
+
const x = [];
|
29
|
+
const y = [];
|
30
|
+
const w = [];
|
31
|
+
const time = [];
|
32
|
+
|
33
|
+
let sampleCount = 0;
|
34
|
+
let index = this.samples.size - 1;
|
35
|
+
const newestSample = this.samples.get(index);
|
36
|
+
if (!newestSample) {
|
37
|
+
return null;
|
38
|
+
}
|
39
|
+
|
40
|
+
let previousSample = newestSample;
|
41
|
+
|
42
|
+
// Starting with the most recent PointAtTime sample, iterate backwards while
|
43
|
+
// the samples represent continuous motion.
|
44
|
+
while (sampleCount < this.samples.size) {
|
45
|
+
const sample = this.samples.get(index);
|
46
|
+
|
47
|
+
const age = newestSample.time - sample.time;
|
48
|
+
const delta = Math.abs(sample.time - previousSample.time);
|
49
|
+
previousSample = sample;
|
50
|
+
|
51
|
+
if (
|
52
|
+
age > this.horizonMilliseconds ||
|
53
|
+
delta > this.assumePointerMoveStoppedMilliseconds
|
54
|
+
) {
|
55
|
+
break;
|
56
|
+
}
|
57
|
+
|
58
|
+
x.push(sample.x);
|
59
|
+
y.push(sample.y);
|
60
|
+
w.push(1);
|
61
|
+
time.push(-age);
|
62
|
+
|
63
|
+
sampleCount++;
|
64
|
+
index--;
|
65
|
+
}
|
66
|
+
|
67
|
+
if (sampleCount >= this.minSampleSize) {
|
68
|
+
const xSolver = new LeastSquareSolver(time, x, w);
|
69
|
+
const xFit = xSolver.solve(2);
|
70
|
+
|
71
|
+
if (xFit !== null) {
|
72
|
+
const ySolver = new LeastSquareSolver(time, y, w);
|
73
|
+
const yFit = ySolver.solve(2);
|
74
|
+
|
75
|
+
if (yFit !== null) {
|
76
|
+
const xVelocity = xFit.coefficients[1] * 1000;
|
77
|
+
const yVelocity = yFit.coefficients[1] * 1000;
|
78
|
+
|
79
|
+
return [xVelocity, yVelocity];
|
80
|
+
}
|
81
|
+
}
|
82
|
+
}
|
83
|
+
|
84
|
+
return null;
|
85
|
+
}
|
86
|
+
|
87
|
+
public getVelocity(): [number, number] {
|
88
|
+
const estimate = this.getVelocityEstimate();
|
89
|
+
if (estimate !== null) {
|
90
|
+
return estimate;
|
91
|
+
}
|
92
|
+
return [0, 0];
|
93
|
+
}
|
94
|
+
|
95
|
+
public reset(): void {
|
96
|
+
this.samples.clear();
|
97
|
+
}
|
98
|
+
}
|
@@ -508,7 +508,7 @@ abstract class GestureHandler {
|
|
508
508
|
.filter((v) => v);
|
509
509
|
|
510
510
|
if (shouldUseTouchEvents !== this.shouldUseTouchEvents(props)) {
|
511
|
-
|
511
|
+
queueMicrotask(() => {
|
512
512
|
// if the undelying event API needs to be changed, we need to unmount and mount
|
513
513
|
// the hammer instance again.
|
514
514
|
this.destroy();
|
@@ -1,31 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
4
|
-
value: true
|
5
|
-
});
|
6
|
-
exports.enableExperimentalWebImplementation = enableExperimentalWebImplementation;
|
7
|
-
exports.isExperimentalWebImplementationEnabled = isExperimentalWebImplementationEnabled;
|
8
|
-
|
9
|
-
var _reactNative = require("react-native");
|
10
|
-
|
11
|
-
let EXPERIMENTAL_WEB_IMPLEMENTATION = false;
|
12
|
-
let getWasCalled = false;
|
13
|
-
|
14
|
-
function enableExperimentalWebImplementation(shouldEnable = true) {
|
15
|
-
if (_reactNative.Platform.OS !== 'web' || EXPERIMENTAL_WEB_IMPLEMENTATION === shouldEnable) {
|
16
|
-
return;
|
17
|
-
}
|
18
|
-
|
19
|
-
if (getWasCalled) {
|
20
|
-
console.error('Some parts of this application have already started using old gesture handler implementation. No changes will be applied. You can try enabling new implementation earlier.');
|
21
|
-
return;
|
22
|
-
}
|
23
|
-
|
24
|
-
EXPERIMENTAL_WEB_IMPLEMENTATION = shouldEnable;
|
25
|
-
}
|
26
|
-
|
27
|
-
function isExperimentalWebImplementationEnabled() {
|
28
|
-
getWasCalled = true;
|
29
|
-
return EXPERIMENTAL_WEB_IMPLEMENTATION;
|
30
|
-
}
|
31
|
-
//# sourceMappingURL=EnableExperimentalWebImplementation.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":["EnableExperimentalWebImplementation.ts"],"names":["EXPERIMENTAL_WEB_IMPLEMENTATION","getWasCalled","enableExperimentalWebImplementation","shouldEnable","Platform","OS","console","error","isExperimentalWebImplementationEnabled"],"mappings":";;;;;;;;AAAA;;AAEA,IAAIA,+BAA+B,GAAG,KAAtC;AACA,IAAIC,YAAY,GAAG,KAAnB;;AAEO,SAASC,mCAAT,CAA6CC,YAAY,GAAG,IAA5D,EAAwE;AAC7E,MACEC,sBAASC,EAAT,KAAgB,KAAhB,IACAL,+BAA+B,KAAKG,YAFtC,EAGE;AACA;AACD;;AAED,MAAIF,YAAJ,EAAkB;AAChBK,IAAAA,OAAO,CAACC,KAAR,CACE,4KADF;AAGA;AACD;;AAEDP,EAAAA,+BAA+B,GAAGG,YAAlC;AACD;;AAEM,SAASK,sCAAT,GAA2D;AAChEP,EAAAA,YAAY,GAAG,IAAf;AACA,SAAOD,+BAAP;AACD","sourcesContent":["import { Platform } from 'react-native';\n\nlet EXPERIMENTAL_WEB_IMPLEMENTATION = false;\nlet getWasCalled = false;\n\nexport function enableExperimentalWebImplementation(shouldEnable = true): void {\n if (\n Platform.OS !== 'web' ||\n EXPERIMENTAL_WEB_IMPLEMENTATION === shouldEnable\n ) {\n return;\n }\n\n if (getWasCalled) {\n console.error(\n 'Some parts of this application have already started using old gesture handler implementation. No changes will be applied. You can try enabling new implementation earlier.'\n );\n return;\n }\n\n EXPERIMENTAL_WEB_IMPLEMENTATION = shouldEnable;\n}\n\nexport function isExperimentalWebImplementationEnabled(): boolean {\n getWasCalled = true;\n return EXPERIMENTAL_WEB_IMPLEMENTATION;\n}\n"]}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":["GestureHandlerRootView.android.tsx"],"names":["GestureHandlerRootViewNativeComponent","require","default","GestureHandlerRootView","props"],"mappings":";;;;;;;AACA;;AAEA;;AACA;;AACA;;;;;;AALA;AAOA,MAAMA,qCAAqC,GAAG,gDAC1CC,OAAO,CAAC,kDAAD,CAAP,CAA4DC,OADlB,GAE1C,yCAAuB,0BAAvB,CAFJ;;AAOe,SAASC,sBAAT,CACbC,KADa,EAEb;AACA;AACA;AACA;AACA;AAEA,sBAAO,oBAAC,qCAAD,EAA2CA,KAA3C,CAAP;AACD","sourcesContent":["/* eslint-disable @typescript-eslint/no-var-requires */\nimport * as React from 'react';\nimport { PropsWithChildren } from 'react';\nimport { requireNativeComponent, ViewProps } from 'react-native';\nimport { maybeInitializeFabric } from './init';\nimport { shouldUseCodegenNativeComponent } from './utils';\n\nconst GestureHandlerRootViewNativeComponent = shouldUseCodegenNativeComponent()\n ? require('./fabric/RNGestureHandlerRootViewNativeComponent').default\n : requireNativeComponent('RNGestureHandlerRootView');\n\nexport interface GestureHandlerRootViewProps\n extends PropsWithChildren<ViewProps> {}\n\nexport default function GestureHandlerRootView(\n props: GestureHandlerRootViewProps\n) {\n // try initialize fabric on the first render, at this point we can\n // reliably check if fabric is enabled (the function contains a flag\n // to make sure it's called only once)\n maybeInitializeFabric();\n\n return <GestureHandlerRootViewNativeComponent {...props} />;\n}\n"]}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":["GestureHandlerRootView.tsx"],"names":["GestureHandlerRootView","props"],"mappings":";;;;;;;AAAA;;AAEA;;AACA;;;;;;AAKe,SAASA,sBAAT,CACbC,KADa,EAEb;AACA;AACA;AACA;AACA;AAEA,sBAAO,oBAAC,iBAAD,EAAUA,KAAV,CAAP;AACD","sourcesContent":["import * as React from 'react';\nimport { PropsWithChildren } from 'react';\nimport { View, ViewProps } from 'react-native';\nimport { maybeInitializeFabric } from './init';\n\nexport interface GestureHandlerRootViewProps\n extends PropsWithChildren<ViewProps> {}\n\nexport default function GestureHandlerRootView(\n props: GestureHandlerRootViewProps\n) {\n // try initialize fabric on the first render, at this point we can\n // reliably check if fabric is enabled (the function contains a flag\n // to make sure it's called only once)\n maybeInitializeFabric();\n\n return <View {...props} />;\n}\n"]}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":["GestureHandlerRootView.web.tsx"],"names":["GestureHandlerRootView","props"],"mappings":";;;;;;;AAAA;;AAEA;;;;;;AAKe,SAASA,sBAAT,CACbC,KADa,EAEb;AACA,sBAAO,oBAAC,iBAAD,EAAUA,KAAV,CAAP;AACD","sourcesContent":["import * as React from 'react';\nimport { PropsWithChildren } from 'react';\nimport { View, ViewProps } from 'react-native';\n\nexport interface GestureHandlerRootViewProps\n extends PropsWithChildren<ViewProps> {}\n\nexport default function GestureHandlerRootView(\n props: GestureHandlerRootViewProps\n) {\n return <View {...props} />;\n}\n"]}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":["gestureHandlerRootHOC.tsx"],"names":["gestureHandlerRootHOC","Component","containerStyles","Wrapper","props","styles","container","displayName","name","StyleSheet","create","flex"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;;;;;;;AAEe,SAASA,qBAAT,CACbC,SADa,EAEbC,eAFa,EAGW;AACxB,WAASC,OAAT,CAAiBC,KAAjB,EAA2B;AACzB,wBACE,oBAAC,+BAAD;AAAwB,MAAA,KAAK,EAAE,CAACC,MAAM,CAACC,SAAR,EAAmBJ,eAAnB;AAA/B,oBACE,oBAAC,SAAD,EAAeE,KAAf,CADF,CADF;AAKD;;AAEDD,EAAAA,OAAO,CAACI,WAAR,GAAuB,yBACrBN,SAAS,CAACM,WAAV,IAAyBN,SAAS,CAACO,IACpC,GAFD;AAIA,qCAAqBL,OAArB,EAA8BF,SAA9B;AAEA,SAAOE,OAAP;AACD;;AAED,MAAME,MAAM,GAAGI,wBAAWC,MAAX,CAAkB;AAC/BJ,EAAAA,SAAS,EAAE;AAAEK,IAAAA,IAAI,EAAE;AAAR;AADoB,CAAlB,CAAf","sourcesContent":["import * as React from 'react';\nimport { StyleSheet, StyleProp, ViewStyle } from 'react-native';\nimport hoistNonReactStatics from 'hoist-non-react-statics';\nimport GestureHandlerRootView from './GestureHandlerRootView';\n\nexport default function gestureHandlerRootHOC<P>(\n Component: React.ComponentType<P>,\n containerStyles?: StyleProp<ViewStyle>\n): React.ComponentType<P> {\n function Wrapper(props: P) {\n return (\n <GestureHandlerRootView style={[styles.container, containerStyles]}>\n <Component {...props} />\n </GestureHandlerRootView>\n );\n }\n\n Wrapper.displayName = `gestureHandlerRootHOC(${\n Component.displayName || Component.name\n })`;\n\n hoistNonReactStatics(Wrapper, Component);\n\n return Wrapper;\n}\n\nconst styles = StyleSheet.create({\n container: { flex: 1 },\n});\n"]}
|
@@ -1,20 +0,0 @@
|
|
1
|
-
import { Platform } from 'react-native';
|
2
|
-
let EXPERIMENTAL_WEB_IMPLEMENTATION = false;
|
3
|
-
let getWasCalled = false;
|
4
|
-
export function enableExperimentalWebImplementation(shouldEnable = true) {
|
5
|
-
if (Platform.OS !== 'web' || EXPERIMENTAL_WEB_IMPLEMENTATION === shouldEnable) {
|
6
|
-
return;
|
7
|
-
}
|
8
|
-
|
9
|
-
if (getWasCalled) {
|
10
|
-
console.error('Some parts of this application have already started using old gesture handler implementation. No changes will be applied. You can try enabling new implementation earlier.');
|
11
|
-
return;
|
12
|
-
}
|
13
|
-
|
14
|
-
EXPERIMENTAL_WEB_IMPLEMENTATION = shouldEnable;
|
15
|
-
}
|
16
|
-
export function isExperimentalWebImplementationEnabled() {
|
17
|
-
getWasCalled = true;
|
18
|
-
return EXPERIMENTAL_WEB_IMPLEMENTATION;
|
19
|
-
}
|
20
|
-
//# sourceMappingURL=EnableExperimentalWebImplementation.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":["EnableExperimentalWebImplementation.ts"],"names":["Platform","EXPERIMENTAL_WEB_IMPLEMENTATION","getWasCalled","enableExperimentalWebImplementation","shouldEnable","OS","console","error","isExperimentalWebImplementationEnabled"],"mappings":"AAAA,SAASA,QAAT,QAAyB,cAAzB;AAEA,IAAIC,+BAA+B,GAAG,KAAtC;AACA,IAAIC,YAAY,GAAG,KAAnB;AAEA,OAAO,SAASC,mCAAT,CAA6CC,YAAY,GAAG,IAA5D,EAAwE;AAC7E,MACEJ,QAAQ,CAACK,EAAT,KAAgB,KAAhB,IACAJ,+BAA+B,KAAKG,YAFtC,EAGE;AACA;AACD;;AAED,MAAIF,YAAJ,EAAkB;AAChBI,IAAAA,OAAO,CAACC,KAAR,CACE,4KADF;AAGA;AACD;;AAEDN,EAAAA,+BAA+B,GAAGG,YAAlC;AACD;AAED,OAAO,SAASI,sCAAT,GAA2D;AAChEN,EAAAA,YAAY,GAAG,IAAf;AACA,SAAOD,+BAAP;AACD","sourcesContent":["import { Platform } from 'react-native';\n\nlet EXPERIMENTAL_WEB_IMPLEMENTATION = false;\nlet getWasCalled = false;\n\nexport function enableExperimentalWebImplementation(shouldEnable = true): void {\n if (\n Platform.OS !== 'web' ||\n EXPERIMENTAL_WEB_IMPLEMENTATION === shouldEnable\n ) {\n return;\n }\n\n if (getWasCalled) {\n console.error(\n 'Some parts of this application have already started using old gesture handler implementation. No changes will be applied. You can try enabling new implementation earlier.'\n );\n return;\n }\n\n EXPERIMENTAL_WEB_IMPLEMENTATION = shouldEnable;\n}\n\nexport function isExperimentalWebImplementationEnabled(): boolean {\n getWasCalled = true;\n return EXPERIMENTAL_WEB_IMPLEMENTATION;\n}\n"]}
|
@@ -1,14 +0,0 @@
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-var-requires */
|
2
|
-
import * as React from 'react';
|
3
|
-
import { requireNativeComponent } from 'react-native';
|
4
|
-
import { maybeInitializeFabric } from './init';
|
5
|
-
import { shouldUseCodegenNativeComponent } from './utils';
|
6
|
-
const GestureHandlerRootViewNativeComponent = shouldUseCodegenNativeComponent() ? require('./fabric/RNGestureHandlerRootViewNativeComponent').default : requireNativeComponent('RNGestureHandlerRootView');
|
7
|
-
export default function GestureHandlerRootView(props) {
|
8
|
-
// try initialize fabric on the first render, at this point we can
|
9
|
-
// reliably check if fabric is enabled (the function contains a flag
|
10
|
-
// to make sure it's called only once)
|
11
|
-
maybeInitializeFabric();
|
12
|
-
return /*#__PURE__*/React.createElement(GestureHandlerRootViewNativeComponent, props);
|
13
|
-
}
|
14
|
-
//# sourceMappingURL=GestureHandlerRootView.android.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":["GestureHandlerRootView.android.tsx"],"names":["React","requireNativeComponent","maybeInitializeFabric","shouldUseCodegenNativeComponent","GestureHandlerRootViewNativeComponent","require","default","GestureHandlerRootView","props"],"mappings":"AAAA;AACA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AAEA,SAASC,sBAAT,QAAkD,cAAlD;AACA,SAASC,qBAAT,QAAsC,QAAtC;AACA,SAASC,+BAAT,QAAgD,SAAhD;AAEA,MAAMC,qCAAqC,GAAGD,+BAA+B,KACzEE,OAAO,CAAC,kDAAD,CAAP,CAA4DC,OADa,GAEzEL,sBAAsB,CAAC,0BAAD,CAF1B;AAOA,eAAe,SAASM,sBAAT,CACbC,KADa,EAEb;AACA;AACA;AACA;AACAN,EAAAA,qBAAqB;AAErB,sBAAO,oBAAC,qCAAD,EAA2CM,KAA3C,CAAP;AACD","sourcesContent":["/* eslint-disable @typescript-eslint/no-var-requires */\nimport * as React from 'react';\nimport { PropsWithChildren } from 'react';\nimport { requireNativeComponent, ViewProps } from 'react-native';\nimport { maybeInitializeFabric } from './init';\nimport { shouldUseCodegenNativeComponent } from './utils';\n\nconst GestureHandlerRootViewNativeComponent = shouldUseCodegenNativeComponent()\n ? require('./fabric/RNGestureHandlerRootViewNativeComponent').default\n : requireNativeComponent('RNGestureHandlerRootView');\n\nexport interface GestureHandlerRootViewProps\n extends PropsWithChildren<ViewProps> {}\n\nexport default function GestureHandlerRootView(\n props: GestureHandlerRootViewProps\n) {\n // try initialize fabric on the first render, at this point we can\n // reliably check if fabric is enabled (the function contains a flag\n // to make sure it's called only once)\n maybeInitializeFabric();\n\n return <GestureHandlerRootViewNativeComponent {...props} />;\n}\n"]}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":["GestureHandlerRootView.tsx"],"names":["React","View","maybeInitializeFabric","GestureHandlerRootView","props"],"mappings":"AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AAEA,SAASC,IAAT,QAAgC,cAAhC;AACA,SAASC,qBAAT,QAAsC,QAAtC;AAKA,eAAe,SAASC,sBAAT,CACbC,KADa,EAEb;AACA;AACA;AACA;AACAF,EAAAA,qBAAqB;AAErB,sBAAO,oBAAC,IAAD,EAAUE,KAAV,CAAP;AACD","sourcesContent":["import * as React from 'react';\nimport { PropsWithChildren } from 'react';\nimport { View, ViewProps } from 'react-native';\nimport { maybeInitializeFabric } from './init';\n\nexport interface GestureHandlerRootViewProps\n extends PropsWithChildren<ViewProps> {}\n\nexport default function GestureHandlerRootView(\n props: GestureHandlerRootViewProps\n) {\n // try initialize fabric on the first render, at this point we can\n // reliably check if fabric is enabled (the function contains a flag\n // to make sure it's called only once)\n maybeInitializeFabric();\n\n return <View {...props} />;\n}\n"]}
|