react-native-gesture-handler 1.10.3 → 2.1.2
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 +7 -6
- package/android/build.gradle +49 -1
- package/android/common/src/main/java/com/swmansion/common/GestureHandlerStateManager.kt +5 -0
- package/android/gradle.properties +19 -0
- package/android/lib/src/main/java/com/swmansion/gesturehandler/BaseGestureHandlerInteractionController.kt +18 -0
- package/android/lib/src/main/java/com/swmansion/gesturehandler/Extensions.kt +11 -0
- package/android/lib/src/main/java/com/swmansion/gesturehandler/FlingGestureHandler.kt +96 -0
- package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandler.kt +713 -0
- package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerInteractionController.kt +8 -0
- package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerOrchestrator.kt +562 -0
- package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerRegistry.kt +8 -0
- package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerRegistryImpl.kt +21 -0
- package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureUtils.kt +49 -0
- package/android/lib/src/main/java/com/swmansion/gesturehandler/LongPressGestureHandler.kt +97 -0
- package/android/lib/src/main/java/com/swmansion/gesturehandler/ManualGestureHandler.kt +11 -0
- package/android/lib/src/main/java/com/swmansion/gesturehandler/NativeViewGestureHandler.kt +129 -0
- package/android/lib/src/main/java/com/swmansion/gesturehandler/OnTouchEventListener.kt +9 -0
- package/android/lib/src/main/java/com/swmansion/gesturehandler/PanGestureHandler.kt +289 -0
- package/android/lib/src/main/java/com/swmansion/gesturehandler/PinchGestureHandler.kt +88 -0
- package/android/lib/src/main/java/com/swmansion/gesturehandler/{PointerEventsConfig.java → PointerEventsConfig.kt} +3 -5
- package/android/lib/src/main/java/com/swmansion/gesturehandler/RotationGestureDetector.kt +125 -0
- package/android/lib/src/main/java/com/swmansion/gesturehandler/RotationGestureHandler.kt +79 -0
- package/android/lib/src/main/java/com/swmansion/gesturehandler/TapGestureHandler.kt +167 -0
- package/android/lib/src/main/java/com/swmansion/gesturehandler/ViewConfigurationHelper.kt +10 -0
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.kt +348 -0
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEnabledRootView.kt +57 -0
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEvent.kt +59 -0
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEventDataExtractor.kt +8 -0
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerInteractionManager.kt +61 -0
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.kt +686 -0
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerPackage.kt +17 -0
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRegistry.kt +95 -0
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.kt +132 -0
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootInterface.kt +5 -0
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootView.kt +68 -0
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootViewManager.kt +34 -0
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerStateChangeEvent.kt +66 -0
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerTouchEvent.kt +69 -0
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNViewConfigurationHelper.kt +51 -0
- package/ios/Handlers/RNFlingHandler.m +78 -5
- package/ios/Handlers/RNForceTouchHandler.m +29 -4
- package/ios/Handlers/RNLongPressHandler.m +105 -3
- package/ios/Handlers/RNManualHandler.h +4 -0
- package/ios/Handlers/RNManualHandler.m +73 -0
- package/ios/Handlers/RNNativeViewHandler.m +30 -2
- package/ios/Handlers/RNPanHandler.m +64 -4
- package/ios/Handlers/RNPinchHandler.m +61 -2
- package/ios/Handlers/RNRotationHandler.m +60 -1
- package/ios/Handlers/RNTapHandler.m +55 -8
- package/ios/RNGestureHandler.h +18 -4
- package/ios/RNGestureHandler.m +123 -13
- package/ios/RNGestureHandlerEvents.h +9 -0
- package/ios/RNGestureHandlerEvents.m +34 -0
- package/ios/RNGestureHandlerManager.h +7 -0
- package/ios/RNGestureHandlerManager.m +62 -34
- package/ios/RNGestureHandlerModule.m +39 -3
- package/ios/RNGestureHandlerPointerTracker.h +25 -0
- package/ios/RNGestureHandlerPointerTracker.m +237 -0
- package/ios/RNGestureHandlerRegistry.h +1 -0
- package/ios/RNGestureHandlerRegistry.m +10 -0
- package/ios/RNGestureHandlerStateManager.h +5 -0
- package/ios/RNManualActivationRecognizer.h +10 -0
- package/ios/RNManualActivationRecognizer.m +80 -0
- package/ios/RNRootViewGestureRecognizer.m +1 -1
- package/ios/RNTouchEventType.h +9 -0
- package/lib/commonjs/EventType.js +16 -0
- package/lib/commonjs/EventType.js.map +1 -0
- package/lib/commonjs/GestureHandlerRootView.android.js +1 -13
- package/lib/commonjs/GestureHandlerRootView.android.js.map +1 -1
- package/lib/commonjs/GestureHandlerRootView.js +11 -3
- package/lib/commonjs/GestureHandlerRootView.js.map +1 -1
- package/lib/commonjs/RNGestureHandlerModule.js +3 -1
- package/lib/commonjs/RNGestureHandlerModule.js.map +1 -1
- package/lib/commonjs/RNGestureHandlerModule.web.js +2 -2
- package/lib/commonjs/RNGestureHandlerModule.web.js.map +1 -1
- package/lib/commonjs/components/DrawerLayout.js +41 -37
- package/lib/commonjs/components/DrawerLayout.js.map +1 -1
- package/lib/commonjs/components/GestureButtons.js.map +1 -1
- package/lib/commonjs/components/GestureComponents.js +31 -12
- package/lib/commonjs/components/GestureComponents.js.map +1 -1
- package/lib/commonjs/components/Swipeable.js +10 -6
- package/lib/commonjs/components/Swipeable.js.map +1 -1
- package/lib/commonjs/components/touchables/GenericTouchable.js +2 -1
- package/lib/commonjs/components/touchables/GenericTouchable.js.map +1 -1
- package/lib/commonjs/components/touchables/TouchableOpacity.js +1 -1
- package/lib/commonjs/components/touchables/TouchableOpacity.js.map +1 -1
- package/lib/commonjs/gestureHandlerRootHOC.js +1 -1
- package/lib/commonjs/gestureHandlerRootHOC.js.map +1 -1
- package/lib/commonjs/handlers/FlingGestureHandler.js +23 -0
- package/lib/commonjs/handlers/FlingGestureHandler.js.map +1 -0
- package/lib/commonjs/handlers/ForceTouchGestureHandler.js +44 -0
- package/lib/commonjs/handlers/ForceTouchGestureHandler.js.map +1 -0
- package/lib/commonjs/handlers/LongPressGestureHandler.js +23 -0
- package/lib/commonjs/handlers/LongPressGestureHandler.js.map +1 -0
- package/lib/commonjs/handlers/NativeViewGestureHandler.js +6 -4
- package/lib/commonjs/handlers/NativeViewGestureHandler.js.map +1 -1
- package/lib/commonjs/handlers/PanGestureHandler.js +121 -0
- package/lib/commonjs/handlers/PanGestureHandler.js.map +1 -0
- package/lib/commonjs/handlers/PinchGestureHandler.js +21 -0
- package/lib/commonjs/handlers/PinchGestureHandler.js.map +1 -0
- package/lib/commonjs/handlers/RotationGestureHandler.js +21 -0
- package/lib/commonjs/handlers/RotationGestureHandler.js.map +1 -0
- package/lib/commonjs/handlers/TapGestureHandler.js +23 -0
- package/lib/commonjs/handlers/TapGestureHandler.js.map +1 -0
- package/lib/commonjs/handlers/createHandler.js +52 -83
- package/lib/commonjs/handlers/createHandler.js.map +1 -1
- package/lib/commonjs/handlers/gestureHandlerCommon.js +80 -0
- package/lib/commonjs/handlers/gestureHandlerCommon.js.map +1 -0
- package/lib/commonjs/handlers/gestures/GestureDetector.js +440 -0
- package/lib/commonjs/handlers/gestures/GestureDetector.js.map +1 -0
- package/lib/commonjs/handlers/gestures/eventReceiver.js +135 -0
- package/lib/commonjs/handlers/gestures/eventReceiver.js.map +1 -0
- package/lib/commonjs/handlers/gestures/flingGesture.js +34 -0
- package/lib/commonjs/handlers/gestures/flingGesture.js.map +1 -0
- package/lib/commonjs/handlers/gestures/forceTouchGesture.js +65 -0
- package/lib/commonjs/handlers/gestures/forceTouchGesture.js.map +1 -0
- package/lib/commonjs/handlers/gestures/gesture.js +193 -0
- package/lib/commonjs/handlers/gestures/gesture.js.map +1 -0
- package/lib/commonjs/handlers/gestures/gestureComposition.js +94 -0
- package/lib/commonjs/handlers/gestures/gestureComposition.js.map +1 -0
- package/lib/commonjs/handlers/gestures/gestureObjects.js +85 -0
- package/lib/commonjs/handlers/gestures/gestureObjects.js.map +1 -0
- package/lib/commonjs/handlers/gestures/gestureStateManager.js +58 -0
- package/lib/commonjs/handlers/gestures/gestureStateManager.js.map +1 -0
- package/lib/commonjs/handlers/gestures/longPressGesture.js +34 -0
- package/lib/commonjs/handlers/gestures/longPressGesture.js.map +1 -0
- package/lib/commonjs/handlers/gestures/manualGesture.js +31 -0
- package/lib/commonjs/handlers/gestures/manualGesture.js.map +1 -0
- package/lib/commonjs/handlers/gestures/nativeGesture.js +34 -0
- package/lib/commonjs/handlers/gestures/nativeGesture.js.map +1 -0
- package/lib/commonjs/handlers/gestures/panGesture.js +144 -0
- package/lib/commonjs/handlers/gestures/panGesture.js.map +1 -0
- package/lib/commonjs/handlers/gestures/pinchGesture.js +45 -0
- package/lib/commonjs/handlers/gestures/pinchGesture.js.map +1 -0
- package/lib/commonjs/handlers/gestures/reanimatedWrapper.js +24 -0
- package/lib/commonjs/handlers/gestures/reanimatedWrapper.js.map +1 -0
- package/lib/commonjs/handlers/gestures/rotationGesture.js +45 -0
- package/lib/commonjs/handlers/gestures/rotationGesture.js.map +1 -0
- package/lib/commonjs/handlers/gestures/tapGesture.js +59 -0
- package/lib/commonjs/handlers/gestures/tapGesture.js.map +1 -0
- package/lib/commonjs/handlers/handlersRegistry.js +31 -0
- package/lib/commonjs/handlers/handlersRegistry.js.map +1 -0
- package/lib/commonjs/index.js +146 -8
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/init.js +13 -0
- package/lib/commonjs/init.js.map +1 -0
- package/lib/commonjs/mocks.js +31 -2
- package/lib/commonjs/mocks.js.map +1 -1
- package/lib/commonjs/utils.js +15 -0
- package/lib/commonjs/utils.js.map +1 -0
- package/lib/commonjs/web/Errors.js +1 -1
- package/lib/commonjs/web/Errors.js.map +1 -1
- package/lib/commonjs/web/GestureHandler.js +4 -6
- package/lib/commonjs/web/GestureHandler.js.map +1 -1
- package/lib/commonjs/web/NodeManager.js +8 -2
- package/lib/commonjs/web/NodeManager.js.map +1 -1
- package/lib/module/EventType.js +8 -0
- package/lib/module/EventType.js.map +1 -0
- package/lib/module/GestureHandlerRootView.android.js +2 -14
- package/lib/module/GestureHandlerRootView.android.js.map +1 -1
- package/lib/module/GestureHandlerRootView.js +5 -1
- package/lib/module/GestureHandlerRootView.js.map +1 -1
- package/lib/module/RNGestureHandlerModule.js +3 -1
- package/lib/module/RNGestureHandlerModule.js.map +1 -1
- package/lib/module/RNGestureHandlerModule.web.js +2 -2
- package/lib/module/RNGestureHandlerModule.web.js.map +1 -1
- package/lib/module/components/DrawerLayout.js +43 -40
- package/lib/module/components/DrawerLayout.js.map +1 -1
- package/lib/module/components/GestureButtons.js.map +1 -1
- package/lib/module/components/GestureComponents.js +29 -11
- package/lib/module/components/GestureComponents.js.map +1 -1
- package/lib/module/components/Swipeable.js +9 -6
- package/lib/module/components/Swipeable.js.map +1 -1
- package/lib/module/components/touchables/GenericTouchable.js +2 -1
- package/lib/module/components/touchables/GenericTouchable.js.map +1 -1
- package/lib/module/components/touchables/TouchableOpacity.js +1 -1
- package/lib/module/components/touchables/TouchableOpacity.js.map +1 -1
- package/lib/module/gestureHandlerRootHOC.js +1 -1
- package/lib/module/gestureHandlerRootHOC.js.map +1 -1
- package/lib/module/handlers/FlingGestureHandler.js +10 -0
- package/lib/module/handlers/FlingGestureHandler.js.map +1 -0
- package/lib/module/handlers/ForceTouchGestureHandler.js +29 -0
- package/lib/module/handlers/ForceTouchGestureHandler.js.map +1 -0
- package/lib/module/handlers/LongPressGestureHandler.js +10 -0
- package/lib/module/handlers/LongPressGestureHandler.js.map +1 -0
- package/lib/module/handlers/NativeViewGestureHandler.js +4 -3
- package/lib/module/handlers/NativeViewGestureHandler.js.map +1 -1
- package/lib/module/handlers/PanGestureHandler.js +106 -0
- package/lib/module/handlers/PanGestureHandler.js.map +1 -0
- package/lib/module/handlers/PinchGestureHandler.js +9 -0
- package/lib/module/handlers/PinchGestureHandler.js.map +1 -0
- package/lib/module/handlers/RotationGestureHandler.js +9 -0
- package/lib/module/handlers/RotationGestureHandler.js.map +1 -0
- package/lib/module/handlers/TapGestureHandler.js +10 -0
- package/lib/module/handlers/TapGestureHandler.js.map +1 -0
- package/lib/module/handlers/createHandler.js +41 -76
- package/lib/module/handlers/createHandler.js.map +1 -1
- package/lib/module/handlers/gestureHandlerCommon.js +66 -0
- package/lib/module/handlers/gestureHandlerCommon.js.map +1 -0
- package/lib/module/handlers/gestures/GestureDetector.js +402 -0
- package/lib/module/handlers/gestures/GestureDetector.js.map +1 -0
- package/lib/module/handlers/gestures/eventReceiver.js +120 -0
- package/lib/module/handlers/gestures/eventReceiver.js.map +1 -0
- package/lib/module/handlers/gestures/flingGesture.js +24 -0
- package/lib/module/handlers/gestures/flingGesture.js.map +1 -0
- package/lib/module/handlers/gestures/forceTouchGesture.js +56 -0
- package/lib/module/handlers/gestures/forceTouchGesture.js.map +1 -0
- package/lib/module/handlers/gestures/gesture.js +175 -0
- package/lib/module/handlers/gestures/gesture.js.map +1 -0
- package/lib/module/handlers/gestures/gestureComposition.js +79 -0
- package/lib/module/handlers/gestures/gestureComposition.js.map +1 -0
- package/lib/module/handlers/gestures/gestureObjects.js +67 -0
- package/lib/module/handlers/gestures/gestureObjects.js.map +1 -0
- package/lib/module/handlers/gestures/gestureStateManager.js +48 -0
- package/lib/module/handlers/gestures/gestureStateManager.js.map +1 -0
- package/lib/module/handlers/gestures/longPressGesture.js +24 -0
- package/lib/module/handlers/gestures/longPressGesture.js.map +1 -0
- package/lib/module/handlers/gestures/manualGesture.js +22 -0
- package/lib/module/handlers/gestures/manualGesture.js.map +1 -0
- package/lib/module/handlers/gestures/nativeGesture.js +24 -0
- package/lib/module/handlers/gestures/nativeGesture.js.map +1 -0
- package/lib/module/handlers/gestures/panGesture.js +135 -0
- package/lib/module/handlers/gestures/panGesture.js.map +1 -0
- package/lib/module/handlers/gestures/pinchGesture.js +36 -0
- package/lib/module/handlers/gestures/pinchGesture.js.map +1 -0
- package/lib/module/handlers/gestures/reanimatedWrapper.js +19 -0
- package/lib/module/handlers/gestures/reanimatedWrapper.js.map +1 -0
- package/lib/module/handlers/gestures/rotationGesture.js +36 -0
- package/lib/module/handlers/gestures/rotationGesture.js.map +1 -0
- package/lib/module/handlers/gestures/tapGesture.js +49 -0
- package/lib/module/handlers/gestures/tapGesture.js.map +1 -0
- package/lib/module/handlers/handlersRegistry.js +16 -0
- package/lib/module/handlers/handlersRegistry.js.map +1 -0
- package/lib/module/index.js +22 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/init.js +5 -0
- package/lib/module/init.js.map +1 -0
- package/lib/module/mocks.js +31 -2
- package/lib/module/mocks.js.map +1 -1
- package/lib/module/utils.js +8 -0
- package/lib/module/utils.js.map +1 -0
- package/lib/module/web/Errors.js +1 -1
- package/lib/module/web/Errors.js.map +1 -1
- package/lib/module/web/GestureHandler.js +4 -6
- package/lib/module/web/GestureHandler.js.map +1 -1
- package/lib/module/web/NodeManager.js +8 -2
- package/lib/module/web/NodeManager.js.map +1 -1
- package/lib/typescript/EventType.d.ts +8 -0
- package/lib/typescript/GestureHandlerRootView.android.d.ts +2 -4
- package/lib/typescript/GestureHandlerRootView.d.ts +5 -2
- package/lib/typescript/RNGestureHandlerModule.d.ts +1 -1
- package/lib/typescript/RNGestureHandlerModule.web.d.ts +1 -1
- package/lib/typescript/components/DrawerLayout.d.ts +50 -1
- package/lib/typescript/components/GestureButtons.d.ts +36 -0
- package/lib/typescript/components/GestureComponents.d.ts +8 -35
- package/lib/typescript/components/Swipeable.d.ts +73 -6
- package/lib/typescript/components/touchables/GenericTouchable.d.ts +2 -2
- package/lib/typescript/components/touchables/TouchableHighlight.d.ts +1 -0
- package/lib/typescript/components/touchables/TouchableOpacity.d.ts +1 -0
- package/lib/typescript/handlers/FlingGestureHandler.d.ts +33 -0
- package/lib/typescript/handlers/ForceTouchGestureHandler.d.ts +43 -0
- package/lib/typescript/handlers/LongPressGestureHandler.d.ts +55 -0
- package/lib/typescript/handlers/NativeViewGestureHandler.d.ts +19 -4
- package/lib/typescript/handlers/PanGestureHandler.d.ts +137 -0
- package/lib/typescript/handlers/PinchGestureHandler.d.ts +28 -0
- package/lib/typescript/handlers/RotationGestureHandler.d.ts +28 -0
- package/lib/typescript/handlers/TapGestureHandler.d.ts +56 -0
- package/lib/typescript/handlers/createHandler.d.ts +1 -1
- package/lib/typescript/handlers/gestureHandlerCommon.d.ts +62 -0
- package/lib/typescript/handlers/gestureHandlerTypesCompat.d.ts +8 -1
- package/lib/typescript/handlers/gestures/GestureDetector.d.ts +16 -0
- package/lib/typescript/handlers/gestures/eventReceiver.d.ts +2 -0
- package/lib/typescript/handlers/gestures/flingGesture.d.ts +9 -0
- package/lib/typescript/handlers/gestures/forceTouchGesture.d.ts +16 -0
- package/lib/typescript/handlers/gestures/gesture.d.ts +97 -0
- package/lib/typescript/handlers/gestures/gestureComposition.d.ts +21 -0
- package/lib/typescript/handlers/gestures/gestureObjects.d.ts +39 -0
- package/lib/typescript/handlers/gestures/gestureStateManager.d.ts +9 -0
- package/lib/typescript/handlers/gestures/longPressGesture.d.ts +9 -0
- package/lib/typescript/handlers/gestures/manualGesture.d.ts +7 -0
- package/lib/typescript/handlers/gestures/nativeGesture.d.ts +9 -0
- package/lib/typescript/handlers/gestures/panGesture.d.ts +26 -0
- package/lib/typescript/handlers/gestures/pinchGesture.d.ts +12 -0
- package/lib/typescript/handlers/gestures/reanimatedWrapper.d.ts +14 -0
- package/lib/typescript/handlers/gestures/rotationGesture.d.ts +12 -0
- package/lib/typescript/handlers/gestures/tapGesture.d.ts +14 -0
- package/lib/typescript/handlers/handlersRegistry.d.ts +6 -0
- package/lib/typescript/index.d.ts +29 -2
- package/lib/typescript/init.d.ts +1 -0
- package/lib/typescript/mocks.d.ts +21 -2
- package/lib/typescript/utils.d.ts +1 -0
- package/lib/typescript/web/FlingGestureHandler.d.ts +0 -1
- package/lib/typescript/web/GestureHandler.d.ts +0 -1
- package/lib/typescript/web/PanGestureHandler.d.ts +0 -1
- package/lib/typescript/web/PinchGestureHandler.d.ts +0 -1
- package/lib/typescript/web/PressGestureHandler.d.ts +0 -1
- package/lib/typescript/web/RotationGestureHandler.d.ts +0 -1
- package/lib/typescript/web/TapGestureHandler.d.ts +0 -1
- package/package.json +8 -5
- package/src/EventType.ts +10 -0
- package/src/GestureHandlerRootView.android.tsx +9 -25
- package/src/GestureHandlerRootView.tsx +11 -2
- package/src/RNGestureHandlerModule.ts +5 -1
- package/src/RNGestureHandlerModule.web.ts +1 -0
- package/src/components/DrawerLayout.tsx +114 -41
- package/src/components/GestureButtons.tsx +45 -5
- package/src/components/GestureComponents.tsx +47 -41
- package/src/components/Swipeable.tsx +108 -21
- package/src/components/touchables/GenericTouchable.tsx +2 -1
- package/src/components/touchables/TouchableOpacity.tsx +1 -1
- package/src/handlers/FlingGestureHandler.ts +57 -0
- package/src/handlers/ForceTouchGestureHandler.ts +83 -0
- package/src/handlers/LongPressGestureHandler.ts +84 -0
- package/src/handlers/NativeViewGestureHandler.ts +31 -7
- package/src/handlers/PanGestureHandler.ts +321 -0
- package/src/handlers/PinchGestureHandler.ts +46 -0
- package/src/handlers/RotationGestureHandler.ts +46 -0
- package/src/handlers/TapGestureHandler.ts +90 -0
- package/src/handlers/createHandler.ts +54 -79
- package/src/handlers/gestureHandlerCommon.ts +185 -0
- package/src/handlers/gestureHandlerTypesCompat.ts +19 -5
- package/src/handlers/gestures/GestureDetector.tsx +519 -0
- package/src/handlers/gestures/eventReceiver.ts +151 -0
- package/src/handlers/gestures/flingGesture.ts +27 -0
- package/src/handlers/gestures/forceTouchGesture.ts +74 -0
- package/src/handlers/gestures/gesture.ts +292 -0
- package/src/handlers/gestures/gestureComposition.ts +109 -0
- package/src/handlers/gestures/gestureObjects.ts +79 -0
- package/src/handlers/gestures/gestureStateManager.ts +60 -0
- package/src/handlers/gestures/longPressGesture.ts +27 -0
- package/src/handlers/gestures/manualGesture.ts +31 -0
- package/src/handlers/gestures/nativeGesture.ts +27 -0
- package/src/handlers/gestures/panGesture.ts +147 -0
- package/src/handlers/gestures/pinchGesture.ts +51 -0
- package/src/handlers/gestures/reanimatedWrapper.ts +45 -0
- package/src/handlers/gestures/rotationGesture.ts +51 -0
- package/src/handlers/gestures/tapGesture.ts +52 -0
- package/src/handlers/handlersRegistry.ts +22 -0
- package/src/index.ts +57 -17
- package/src/init.ts +5 -0
- package/src/mocks.ts +42 -2
- package/src/utils.ts +7 -0
- package/src/web/GestureHandler.ts +1 -2
- package/src/web/NodeManager.ts +5 -0
- package/android/lib/src/main/java/com/swmansion/gesturehandler/BaseGestureHandlerInteractionController.java +0 -23
- package/android/lib/src/main/java/com/swmansion/gesturehandler/FlingGestureHandler.java +0 -110
- package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandler.java +0 -531
- package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerInteractionController.java +0 -8
- package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerOrchestrator.java +0 -543
- package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerRegistry.java +0 -10
- package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerRegistryImpl.java +0 -29
- package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureUtils.java +0 -53
- package/android/lib/src/main/java/com/swmansion/gesturehandler/LongPressGestureHandler.java +0 -81
- package/android/lib/src/main/java/com/swmansion/gesturehandler/NativeViewGestureHandler.java +0 -110
- package/android/lib/src/main/java/com/swmansion/gesturehandler/OnTouchEventListener.java +0 -8
- package/android/lib/src/main/java/com/swmansion/gesturehandler/PanGestureHandler.java +0 -312
- package/android/lib/src/main/java/com/swmansion/gesturehandler/PinchGestureHandler.java +0 -109
- package/android/lib/src/main/java/com/swmansion/gesturehandler/RotationGestureDetector.java +0 -169
- package/android/lib/src/main/java/com/swmansion/gesturehandler/RotationGestureHandler.java +0 -96
- package/android/lib/src/main/java/com/swmansion/gesturehandler/TapGestureHandler.java +0 -172
- package/android/lib/src/main/java/com/swmansion/gesturehandler/ViewConfigurationHelper.java +0 -10
- package/android/src/main/java/com/facebook/react/views/modal/RNGHModalUtils.java +0 -21
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.java +0 -296
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEnabledRootView.java +0 -72
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEvent.java +0 -77
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEventDataExtractor.java +0 -8
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerInteractionManager.java +0 -86
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.java +0 -731
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerPackage.java +0 -31
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRegistry.java +0 -101
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.java +0 -151
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootInterface.java +0 -7
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootView.java +0 -76
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootViewManager.java +0 -49
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerStateChangeEvent.java +0 -82
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNViewConfigurationHelper.java +0 -61
- package/lib/commonjs/handlers/gestureHandlers.js +0 -236
- package/lib/commonjs/handlers/gestureHandlers.js.map +0 -1
- package/lib/module/handlers/gestureHandlers.js +0 -216
- package/lib/module/handlers/gestureHandlers.js.map +0 -1
- package/lib/typescript/handlers/gestureHandlers.d.ts +0 -158
- package/src/handlers/gestureHandlers.ts +0 -511
|
@@ -0,0 +1,686 @@
|
|
|
1
|
+
package com.swmansion.gesturehandler.react
|
|
2
|
+
|
|
3
|
+
import android.content.Context
|
|
4
|
+
import android.view.MotionEvent
|
|
5
|
+
import android.view.ViewGroup
|
|
6
|
+
import com.facebook.react.ReactRootView
|
|
7
|
+
import com.facebook.react.bridge.*
|
|
8
|
+
import com.facebook.react.module.annotations.ReactModule
|
|
9
|
+
import com.facebook.react.uimanager.PixelUtil
|
|
10
|
+
import com.facebook.react.uimanager.UIBlock
|
|
11
|
+
import com.swmansion.common.GestureHandlerStateManager
|
|
12
|
+
import com.swmansion.gesturehandler.*
|
|
13
|
+
import java.util.*
|
|
14
|
+
|
|
15
|
+
@ReactModule(name = RNGestureHandlerModule.MODULE_NAME)
|
|
16
|
+
class RNGestureHandlerModule(reactContext: ReactApplicationContext?)
|
|
17
|
+
: ReactContextBaseJavaModule(reactContext), GestureHandlerStateManager {
|
|
18
|
+
private abstract class HandlerFactory<T : GestureHandler<T>> : RNGestureHandlerEventDataExtractor<T> {
|
|
19
|
+
abstract val type: Class<T>
|
|
20
|
+
abstract val name: String
|
|
21
|
+
abstract fun create(context: Context?): T
|
|
22
|
+
open fun configure(handler: T, config: ReadableMap) {
|
|
23
|
+
handler.resetConfig()
|
|
24
|
+
if (config.hasKey(KEY_SHOULD_CANCEL_WHEN_OUTSIDE)) {
|
|
25
|
+
handler.setShouldCancelWhenOutside(config.getBoolean(KEY_SHOULD_CANCEL_WHEN_OUTSIDE))
|
|
26
|
+
}
|
|
27
|
+
if (config.hasKey(KEY_ENABLED)) {
|
|
28
|
+
handler.setEnabled(config.getBoolean(KEY_ENABLED))
|
|
29
|
+
}
|
|
30
|
+
if (config.hasKey(KEY_HIT_SLOP)) {
|
|
31
|
+
handleHitSlopProperty(handler, config)
|
|
32
|
+
}
|
|
33
|
+
if (config.hasKey(KEY_NEEDS_POINTER_DATA)) {
|
|
34
|
+
handler.needsPointerData = config.getBoolean(KEY_NEEDS_POINTER_DATA)
|
|
35
|
+
}
|
|
36
|
+
if (config.hasKey(KEY_MANUAL_ACTIVATION)) {
|
|
37
|
+
handler.setManualActivation(config.getBoolean(KEY_MANUAL_ACTIVATION))
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
override fun extractEventData(handler: T, eventData: WritableMap) {
|
|
42
|
+
eventData.putDouble("numberOfPointers", handler.numberOfPointers.toDouble())
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
private class NativeViewGestureHandlerFactory : HandlerFactory<NativeViewGestureHandler>() {
|
|
47
|
+
override val type = NativeViewGestureHandler::class.java
|
|
48
|
+
override val name = "NativeViewGestureHandler"
|
|
49
|
+
|
|
50
|
+
override fun create(context: Context?): NativeViewGestureHandler {
|
|
51
|
+
return NativeViewGestureHandler()
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
override fun configure(handler: NativeViewGestureHandler, config: ReadableMap) {
|
|
55
|
+
super.configure(handler, config)
|
|
56
|
+
if (config.hasKey(KEY_NATIVE_VIEW_SHOULD_ACTIVATE_ON_START)) {
|
|
57
|
+
handler.setShouldActivateOnStart(
|
|
58
|
+
config.getBoolean(KEY_NATIVE_VIEW_SHOULD_ACTIVATE_ON_START))
|
|
59
|
+
}
|
|
60
|
+
if (config.hasKey(KEY_NATIVE_VIEW_DISALLOW_INTERRUPTION)) {
|
|
61
|
+
handler.setDisallowInterruption(config.getBoolean(KEY_NATIVE_VIEW_DISALLOW_INTERRUPTION))
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
override fun extractEventData(handler: NativeViewGestureHandler, eventData: WritableMap) {
|
|
66
|
+
super.extractEventData(handler, eventData)
|
|
67
|
+
eventData.putBoolean("pointerInside", handler.isWithinBounds)
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
private class TapGestureHandlerFactory : HandlerFactory<TapGestureHandler>() {
|
|
72
|
+
override val type = TapGestureHandler::class.java
|
|
73
|
+
override val name = "TapGestureHandler"
|
|
74
|
+
|
|
75
|
+
override fun create(context: Context?): TapGestureHandler {
|
|
76
|
+
return TapGestureHandler()
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
override fun configure(handler: TapGestureHandler, config: ReadableMap) {
|
|
80
|
+
super.configure(handler, config)
|
|
81
|
+
if (config.hasKey(KEY_TAP_NUMBER_OF_TAPS)) {
|
|
82
|
+
handler.setNumberOfTaps(config.getInt(KEY_TAP_NUMBER_OF_TAPS))
|
|
83
|
+
}
|
|
84
|
+
if (config.hasKey(KEY_TAP_MAX_DURATION_MS)) {
|
|
85
|
+
handler.setMaxDurationMs(config.getInt(KEY_TAP_MAX_DURATION_MS).toLong())
|
|
86
|
+
}
|
|
87
|
+
if (config.hasKey(KEY_TAP_MAX_DELAY_MS)) {
|
|
88
|
+
handler.setMaxDelayMs(config.getInt(KEY_TAP_MAX_DELAY_MS).toLong())
|
|
89
|
+
}
|
|
90
|
+
if (config.hasKey(KEY_TAP_MAX_DELTA_X)) {
|
|
91
|
+
handler.setMaxDx(PixelUtil.toPixelFromDIP(config.getDouble(KEY_TAP_MAX_DELTA_X)))
|
|
92
|
+
}
|
|
93
|
+
if (config.hasKey(KEY_TAP_MAX_DELTA_Y)) {
|
|
94
|
+
handler.setMaxDy(PixelUtil.toPixelFromDIP(config.getDouble(KEY_TAP_MAX_DELTA_Y)))
|
|
95
|
+
}
|
|
96
|
+
if (config.hasKey(KEY_TAP_MAX_DIST)) {
|
|
97
|
+
handler.setMaxDist(PixelUtil.toPixelFromDIP(config.getDouble(KEY_TAP_MAX_DIST)))
|
|
98
|
+
}
|
|
99
|
+
if (config.hasKey(KEY_TAP_MIN_POINTERS)) {
|
|
100
|
+
handler.setMinNumberOfPointers(config.getInt(KEY_TAP_MIN_POINTERS))
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
override fun extractEventData(handler: TapGestureHandler, eventData: WritableMap) {
|
|
105
|
+
super.extractEventData(handler, eventData)
|
|
106
|
+
with(eventData) {
|
|
107
|
+
putDouble("x", PixelUtil.toDIPFromPixel(handler.lastRelativePositionX).toDouble())
|
|
108
|
+
putDouble("y", PixelUtil.toDIPFromPixel(handler.lastRelativePositionY).toDouble())
|
|
109
|
+
putDouble("absoluteX", PixelUtil.toDIPFromPixel(handler.lastAbsolutePositionX).toDouble())
|
|
110
|
+
putDouble("absoluteY", PixelUtil.toDIPFromPixel(handler.lastAbsolutePositionY).toDouble())
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
private class LongPressGestureHandlerFactory : HandlerFactory<LongPressGestureHandler>() {
|
|
116
|
+
override val type = LongPressGestureHandler::class.java
|
|
117
|
+
override val name = "LongPressGestureHandler"
|
|
118
|
+
|
|
119
|
+
override fun create(context: Context?): LongPressGestureHandler {
|
|
120
|
+
return LongPressGestureHandler((context)!!)
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
override fun configure(handler: LongPressGestureHandler, config: ReadableMap) {
|
|
124
|
+
super.configure(handler, config)
|
|
125
|
+
if (config.hasKey(KEY_LONG_PRESS_MIN_DURATION_MS)) {
|
|
126
|
+
handler.minDurationMs = config.getInt(KEY_LONG_PRESS_MIN_DURATION_MS).toLong()
|
|
127
|
+
}
|
|
128
|
+
if (config.hasKey(KEY_LONG_PRESS_MAX_DIST)) {
|
|
129
|
+
handler.setMaxDist(PixelUtil.toPixelFromDIP(config.getDouble(KEY_LONG_PRESS_MAX_DIST)))
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
override fun extractEventData(handler: LongPressGestureHandler, eventData: WritableMap) {
|
|
134
|
+
super.extractEventData(handler, eventData)
|
|
135
|
+
with(eventData) {
|
|
136
|
+
putDouble("x", PixelUtil.toDIPFromPixel(handler.lastRelativePositionX).toDouble())
|
|
137
|
+
putDouble("y", PixelUtil.toDIPFromPixel(handler.lastRelativePositionY).toDouble())
|
|
138
|
+
putDouble("absoluteX", PixelUtil.toDIPFromPixel(handler.lastAbsolutePositionX).toDouble())
|
|
139
|
+
putDouble("absoluteY", PixelUtil.toDIPFromPixel(handler.lastAbsolutePositionY).toDouble())
|
|
140
|
+
putInt("duration", handler.duration)
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
private class PanGestureHandlerFactory : HandlerFactory<PanGestureHandler>() {
|
|
146
|
+
override val type = PanGestureHandler::class.java
|
|
147
|
+
override val name = "PanGestureHandler"
|
|
148
|
+
|
|
149
|
+
override fun create(context: Context?): PanGestureHandler {
|
|
150
|
+
return PanGestureHandler(context)
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
override fun configure(handler: PanGestureHandler, config: ReadableMap) {
|
|
154
|
+
super.configure(handler, config)
|
|
155
|
+
var hasCustomActivationCriteria = false
|
|
156
|
+
if (config.hasKey(KEY_PAN_ACTIVE_OFFSET_X_START)) {
|
|
157
|
+
handler.setActiveOffsetXStart(PixelUtil.toPixelFromDIP(config.getDouble(KEY_PAN_ACTIVE_OFFSET_X_START)))
|
|
158
|
+
hasCustomActivationCriteria = true
|
|
159
|
+
}
|
|
160
|
+
if (config.hasKey(KEY_PAN_ACTIVE_OFFSET_X_END)) {
|
|
161
|
+
handler.setActiveOffsetXEnd(PixelUtil.toPixelFromDIP(config.getDouble(KEY_PAN_ACTIVE_OFFSET_X_END)))
|
|
162
|
+
hasCustomActivationCriteria = true
|
|
163
|
+
}
|
|
164
|
+
if (config.hasKey(KEY_PAN_FAIL_OFFSET_RANGE_X_START)) {
|
|
165
|
+
handler.setFailOffsetXStart(PixelUtil.toPixelFromDIP(config.getDouble(KEY_PAN_FAIL_OFFSET_RANGE_X_START)))
|
|
166
|
+
hasCustomActivationCriteria = true
|
|
167
|
+
}
|
|
168
|
+
if (config.hasKey(KEY_PAN_FAIL_OFFSET_RANGE_X_END)) {
|
|
169
|
+
handler.setFailOffsetXEnd(PixelUtil.toPixelFromDIP(config.getDouble(KEY_PAN_FAIL_OFFSET_RANGE_X_END)))
|
|
170
|
+
hasCustomActivationCriteria = true
|
|
171
|
+
}
|
|
172
|
+
if (config.hasKey(KEY_PAN_ACTIVE_OFFSET_Y_START)) {
|
|
173
|
+
handler.setActiveOffsetYStart(PixelUtil.toPixelFromDIP(config.getDouble(KEY_PAN_ACTIVE_OFFSET_Y_START)))
|
|
174
|
+
hasCustomActivationCriteria = true
|
|
175
|
+
}
|
|
176
|
+
if (config.hasKey(KEY_PAN_ACTIVE_OFFSET_Y_END)) {
|
|
177
|
+
handler.setActiveOffsetYEnd(PixelUtil.toPixelFromDIP(config.getDouble(KEY_PAN_ACTIVE_OFFSET_Y_END)))
|
|
178
|
+
hasCustomActivationCriteria = true
|
|
179
|
+
}
|
|
180
|
+
if (config.hasKey(KEY_PAN_FAIL_OFFSET_RANGE_Y_START)) {
|
|
181
|
+
handler.setFailOffsetYStart(PixelUtil.toPixelFromDIP(config.getDouble(KEY_PAN_FAIL_OFFSET_RANGE_Y_START)))
|
|
182
|
+
hasCustomActivationCriteria = true
|
|
183
|
+
}
|
|
184
|
+
if (config.hasKey(KEY_PAN_FAIL_OFFSET_RANGE_Y_END)) {
|
|
185
|
+
handler.setFailOffsetYEnd(PixelUtil.toPixelFromDIP(config.getDouble(KEY_PAN_FAIL_OFFSET_RANGE_Y_END)))
|
|
186
|
+
hasCustomActivationCriteria = true
|
|
187
|
+
}
|
|
188
|
+
if (config.hasKey(KEY_PAN_MIN_VELOCITY)) {
|
|
189
|
+
// This value is actually in DPs/ms, but we can use the same function as for converting
|
|
190
|
+
// from DPs to pixels as the unit we're converting is in the numerator
|
|
191
|
+
handler.setMinVelocity(PixelUtil.toPixelFromDIP(config.getDouble(KEY_PAN_MIN_VELOCITY)))
|
|
192
|
+
hasCustomActivationCriteria = true
|
|
193
|
+
}
|
|
194
|
+
if (config.hasKey(KEY_PAN_MIN_VELOCITY_X)) {
|
|
195
|
+
handler.setMinVelocityX(PixelUtil.toPixelFromDIP(config.getDouble(KEY_PAN_MIN_VELOCITY_X)))
|
|
196
|
+
hasCustomActivationCriteria = true
|
|
197
|
+
}
|
|
198
|
+
if (config.hasKey(KEY_PAN_MIN_VELOCITY_Y)) {
|
|
199
|
+
handler.setMinVelocityY(PixelUtil.toPixelFromDIP(config.getDouble(KEY_PAN_MIN_VELOCITY_Y)))
|
|
200
|
+
hasCustomActivationCriteria = true
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
// PanGestureHandler sets minDist by default, if there are custom criteria specified we want
|
|
204
|
+
// to reset that setting and use provided criteria instead.
|
|
205
|
+
if (config.hasKey(KEY_PAN_MIN_DIST)) {
|
|
206
|
+
handler.setMinDist(PixelUtil.toPixelFromDIP(config.getDouble(KEY_PAN_MIN_DIST)))
|
|
207
|
+
} else if (hasCustomActivationCriteria) {
|
|
208
|
+
handler.setMinDist(Float.MAX_VALUE)
|
|
209
|
+
}
|
|
210
|
+
if (config.hasKey(KEY_PAN_MIN_POINTERS)) {
|
|
211
|
+
handler.setMinPointers(config.getInt(KEY_PAN_MIN_POINTERS))
|
|
212
|
+
}
|
|
213
|
+
if (config.hasKey(KEY_PAN_MAX_POINTERS)) {
|
|
214
|
+
handler.setMaxPointers(config.getInt(KEY_PAN_MAX_POINTERS))
|
|
215
|
+
}
|
|
216
|
+
if (config.hasKey(KEY_PAN_AVG_TOUCHES)) {
|
|
217
|
+
handler.setAverageTouches(config.getBoolean(KEY_PAN_AVG_TOUCHES))
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
override fun extractEventData(handler: PanGestureHandler, eventData: WritableMap) {
|
|
222
|
+
super.extractEventData(handler, eventData)
|
|
223
|
+
with(eventData) {
|
|
224
|
+
putDouble("x", PixelUtil.toDIPFromPixel(handler.lastRelativePositionX).toDouble())
|
|
225
|
+
putDouble("y", PixelUtil.toDIPFromPixel(handler.lastRelativePositionY).toDouble())
|
|
226
|
+
putDouble("absoluteX", PixelUtil.toDIPFromPixel(handler.lastAbsolutePositionX).toDouble())
|
|
227
|
+
putDouble("absoluteY", PixelUtil.toDIPFromPixel(handler.lastAbsolutePositionY).toDouble())
|
|
228
|
+
putDouble("translationX", PixelUtil.toDIPFromPixel(handler.translationX).toDouble())
|
|
229
|
+
putDouble("translationY", PixelUtil.toDIPFromPixel(handler.translationY).toDouble())
|
|
230
|
+
putDouble("velocityX", PixelUtil.toDIPFromPixel(handler.velocityX).toDouble())
|
|
231
|
+
putDouble("velocityY", PixelUtil.toDIPFromPixel(handler.velocityY).toDouble())
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
private class PinchGestureHandlerFactory : HandlerFactory<PinchGestureHandler>() {
|
|
237
|
+
override val type = PinchGestureHandler::class.java
|
|
238
|
+
override val name = "PinchGestureHandler"
|
|
239
|
+
|
|
240
|
+
override fun create(context: Context?): PinchGestureHandler {
|
|
241
|
+
return PinchGestureHandler()
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
override fun extractEventData(handler: PinchGestureHandler, eventData: WritableMap) {
|
|
245
|
+
super.extractEventData(handler, eventData)
|
|
246
|
+
with(eventData) {
|
|
247
|
+
putDouble("scale", handler.scale)
|
|
248
|
+
putDouble("focalX", PixelUtil.toDIPFromPixel(handler.focalPointX).toDouble())
|
|
249
|
+
putDouble("focalY", PixelUtil.toDIPFromPixel(handler.focalPointY).toDouble())
|
|
250
|
+
putDouble("velocity", handler.velocity)
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
private class FlingGestureHandlerFactory : HandlerFactory<FlingGestureHandler>() {
|
|
256
|
+
override val type = FlingGestureHandler::class.java
|
|
257
|
+
override val name = "FlingGestureHandler"
|
|
258
|
+
|
|
259
|
+
override fun create(context: Context?): FlingGestureHandler {
|
|
260
|
+
return FlingGestureHandler()
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
override fun configure(handler: FlingGestureHandler, config: ReadableMap) {
|
|
264
|
+
super.configure(handler, config)
|
|
265
|
+
if (config.hasKey(KEY_NUMBER_OF_POINTERS)) {
|
|
266
|
+
handler.numberOfPointersRequired = config.getInt(KEY_NUMBER_OF_POINTERS)
|
|
267
|
+
}
|
|
268
|
+
if (config.hasKey(KEY_DIRECTION)) {
|
|
269
|
+
handler.direction = config.getInt(KEY_DIRECTION)
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
override fun extractEventData(handler: FlingGestureHandler, eventData: WritableMap) {
|
|
274
|
+
super.extractEventData(handler, eventData)
|
|
275
|
+
with(eventData) {
|
|
276
|
+
putDouble("x", PixelUtil.toDIPFromPixel(handler.lastRelativePositionX).toDouble())
|
|
277
|
+
putDouble("y", PixelUtil.toDIPFromPixel(handler.lastRelativePositionY).toDouble())
|
|
278
|
+
putDouble("absoluteX", PixelUtil.toDIPFromPixel(handler.lastAbsolutePositionX).toDouble())
|
|
279
|
+
putDouble("absoluteY", PixelUtil.toDIPFromPixel(handler.lastAbsolutePositionY).toDouble())
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
private class RotationGestureHandlerFactory : HandlerFactory<RotationGestureHandler>() {
|
|
285
|
+
override val type = RotationGestureHandler::class.java
|
|
286
|
+
override val name = "RotationGestureHandler"
|
|
287
|
+
|
|
288
|
+
override fun create(context: Context?): RotationGestureHandler {
|
|
289
|
+
return RotationGestureHandler()
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
override fun extractEventData(handler: RotationGestureHandler, eventData: WritableMap) {
|
|
293
|
+
super.extractEventData(handler, eventData)
|
|
294
|
+
with(eventData) {
|
|
295
|
+
putDouble("rotation", handler.rotation)
|
|
296
|
+
putDouble("anchorX", PixelUtil.toDIPFromPixel(handler.anchorX).toDouble())
|
|
297
|
+
putDouble("anchorY", PixelUtil.toDIPFromPixel(handler.anchorY).toDouble())
|
|
298
|
+
putDouble("velocity", handler.velocity)
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
private class ManualGestureHandlerFactory : HandlerFactory<ManualGestureHandler>() {
|
|
304
|
+
override val type = ManualGestureHandler::class.java
|
|
305
|
+
override val name = "ManualGestureHandler"
|
|
306
|
+
|
|
307
|
+
override fun create(context: Context?): ManualGestureHandler {
|
|
308
|
+
return ManualGestureHandler()
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
private val eventListener = object : OnTouchEventListener {
|
|
313
|
+
override fun <T : GestureHandler<T>> onHandlerUpdate(handler: T, event: MotionEvent) {
|
|
314
|
+
this@RNGestureHandlerModule.onHandlerUpdate(handler, event)
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
override fun <T : GestureHandler<T>> onStateChange(handler: T, newState: Int, oldState: Int) {
|
|
318
|
+
this@RNGestureHandlerModule.onStateChange(handler, newState, oldState)
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
override fun <T : GestureHandler<T>> onTouchEvent(handler: T) {
|
|
322
|
+
this@RNGestureHandlerModule.onTouchEvent(handler)
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
private val handlerFactories = arrayOf<HandlerFactory<*>>(
|
|
326
|
+
NativeViewGestureHandlerFactory(),
|
|
327
|
+
TapGestureHandlerFactory(),
|
|
328
|
+
LongPressGestureHandlerFactory(),
|
|
329
|
+
PanGestureHandlerFactory(),
|
|
330
|
+
PinchGestureHandlerFactory(),
|
|
331
|
+
RotationGestureHandlerFactory(),
|
|
332
|
+
FlingGestureHandlerFactory(),
|
|
333
|
+
ManualGestureHandlerFactory(),
|
|
334
|
+
)
|
|
335
|
+
val registry: RNGestureHandlerRegistry = RNGestureHandlerRegistry()
|
|
336
|
+
private val interactionManager = RNGestureHandlerInteractionManager()
|
|
337
|
+
private val roots: MutableList<RNGestureHandlerRootHelper> = ArrayList()
|
|
338
|
+
private val enqueuedRootViewInit: MutableList<Int> = ArrayList()
|
|
339
|
+
override fun getName() = MODULE_NAME
|
|
340
|
+
|
|
341
|
+
@ReactMethod
|
|
342
|
+
@Suppress("UNCHECKED_CAST")
|
|
343
|
+
fun <T : GestureHandler<T>> createGestureHandler(
|
|
344
|
+
handlerName: String, handlerTag: Int, config: ReadableMap,
|
|
345
|
+
) {
|
|
346
|
+
for (handlerFactory in handlerFactories as Array<HandlerFactory<T>>) {
|
|
347
|
+
if (handlerFactory.name == handlerName) {
|
|
348
|
+
val handler = handlerFactory.create(reactApplicationContext).apply {
|
|
349
|
+
tag = handlerTag
|
|
350
|
+
setOnTouchEventListener(eventListener)
|
|
351
|
+
}
|
|
352
|
+
registry.registerHandler(handler)
|
|
353
|
+
interactionManager.configureInteractions(handler, config)
|
|
354
|
+
handlerFactory.configure(handler, config)
|
|
355
|
+
return
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
throw JSApplicationIllegalArgumentException("Invalid handler name $handlerName")
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
@ReactMethod
|
|
362
|
+
fun attachGestureHandler(handlerTag: Int, viewTag: Int, useDeviceEvents: Boolean) {
|
|
363
|
+
tryInitializeHandlerForReactRootView(viewTag)
|
|
364
|
+
|
|
365
|
+
if (!registry.attachHandlerToView(handlerTag, viewTag, useDeviceEvents)) {
|
|
366
|
+
throw JSApplicationIllegalArgumentException("Handler with tag $handlerTag does not exists")
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
@ReactMethod
|
|
371
|
+
@Suppress("UNCHECKED_CAST")
|
|
372
|
+
fun <T : GestureHandler<T>> updateGestureHandler(handlerTag: Int, config: ReadableMap) {
|
|
373
|
+
val handler = registry.getHandler(handlerTag) as T?
|
|
374
|
+
if (handler != null) {
|
|
375
|
+
val factory = findFactoryForHandler(handler)
|
|
376
|
+
if (factory != null) {
|
|
377
|
+
interactionManager.dropRelationsForHandlerWithTag(handlerTag)
|
|
378
|
+
interactionManager.configureInteractions(handler, config)
|
|
379
|
+
factory.configure(handler, config)
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
@ReactMethod
|
|
385
|
+
fun dropGestureHandler(handlerTag: Int) {
|
|
386
|
+
interactionManager.dropRelationsForHandlerWithTag(handlerTag)
|
|
387
|
+
registry.dropHandler(handlerTag)
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
@ReactMethod
|
|
391
|
+
fun handleSetJSResponder(viewTag: Int, blockNativeResponder: Boolean) {
|
|
392
|
+
val rootView = findRootHelperForViewAncestor(viewTag)
|
|
393
|
+
rootView?.handleSetJSResponder(viewTag, blockNativeResponder)
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
@ReactMethod
|
|
397
|
+
fun handleClearJSResponder() {
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
override fun setGestureHandlerState(handlerTag: Int, newState: Int) {
|
|
401
|
+
registry.getHandler(handlerTag)?.let { handler ->
|
|
402
|
+
when (newState) {
|
|
403
|
+
GestureHandler.STATE_ACTIVE -> handler.activate(force = true)
|
|
404
|
+
GestureHandler.STATE_BEGAN -> handler.begin()
|
|
405
|
+
GestureHandler.STATE_END -> handler.end()
|
|
406
|
+
GestureHandler.STATE_FAILED -> handler.fail()
|
|
407
|
+
GestureHandler.STATE_CANCELLED -> handler.cancel()
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
override fun getConstants(): Map<String, Any> {
|
|
413
|
+
return mapOf(
|
|
414
|
+
"State" to mapOf(
|
|
415
|
+
"UNDETERMINED" to GestureHandler.STATE_UNDETERMINED,
|
|
416
|
+
"BEGAN" to GestureHandler.STATE_BEGAN,
|
|
417
|
+
"ACTIVE" to GestureHandler.STATE_ACTIVE,
|
|
418
|
+
"CANCELLED" to GestureHandler.STATE_CANCELLED,
|
|
419
|
+
"FAILED" to GestureHandler.STATE_FAILED,
|
|
420
|
+
"END" to GestureHandler.STATE_END
|
|
421
|
+
),
|
|
422
|
+
"Direction" to mapOf(
|
|
423
|
+
"RIGHT" to GestureHandler.DIRECTION_RIGHT,
|
|
424
|
+
"LEFT" to GestureHandler.DIRECTION_LEFT,
|
|
425
|
+
"UP" to GestureHandler.DIRECTION_UP,
|
|
426
|
+
"DOWN" to GestureHandler.DIRECTION_DOWN
|
|
427
|
+
)
|
|
428
|
+
)
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
override fun onCatalystInstanceDestroy() {
|
|
432
|
+
registry.dropAllHandlers()
|
|
433
|
+
interactionManager.reset()
|
|
434
|
+
synchronized(roots) {
|
|
435
|
+
while (roots.isNotEmpty()) {
|
|
436
|
+
val sizeBefore: Int = roots.size
|
|
437
|
+
val root: RNGestureHandlerRootHelper = roots[0]
|
|
438
|
+
val reactRootView: ViewGroup = root.rootView
|
|
439
|
+
if (reactRootView is RNGestureHandlerEnabledRootView) {
|
|
440
|
+
reactRootView.tearDown()
|
|
441
|
+
} else {
|
|
442
|
+
root.tearDown()
|
|
443
|
+
}
|
|
444
|
+
if (roots.size >= sizeBefore) {
|
|
445
|
+
throw IllegalStateException("Expected root helper to get unregistered while tearing down")
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
}
|
|
449
|
+
super.onCatalystInstanceDestroy()
|
|
450
|
+
}
|
|
451
|
+
|
|
452
|
+
private fun tryInitializeHandlerForReactRootView(ancestorViewTag: Int) {
|
|
453
|
+
val uiManager = reactApplicationContext.UIManager
|
|
454
|
+
val rootViewTag = uiManager.resolveRootTagFromReactTag(ancestorViewTag)
|
|
455
|
+
if (rootViewTag < 1) {
|
|
456
|
+
throw JSApplicationIllegalArgumentException("Could find root view for a given ancestor with tag $ancestorViewTag")
|
|
457
|
+
}
|
|
458
|
+
synchronized(roots) {
|
|
459
|
+
for (root in roots) {
|
|
460
|
+
val rootView: ViewGroup = root.rootView
|
|
461
|
+
if (rootView is ReactRootView && rootView.rootViewTag == rootViewTag) {
|
|
462
|
+
// we have found root helper registered for a given react root, we don't need to
|
|
463
|
+
// initialize a new one then
|
|
464
|
+
return
|
|
465
|
+
}
|
|
466
|
+
}
|
|
467
|
+
}
|
|
468
|
+
synchronized(enqueuedRootViewInit) {
|
|
469
|
+
if (rootViewTag in enqueuedRootViewInit) {
|
|
470
|
+
// root view initialization already enqueued -> we skip
|
|
471
|
+
return
|
|
472
|
+
}
|
|
473
|
+
enqueuedRootViewInit.add(rootViewTag)
|
|
474
|
+
}
|
|
475
|
+
// root helper for a given root tag has not been found, we may wat to check if the root view is
|
|
476
|
+
// an instance of RNGestureHandlerEnabledRootView and then initialize gesture handler with it
|
|
477
|
+
uiManager.addUIBlock(UIBlock { nativeViewHierarchyManager ->
|
|
478
|
+
val view = nativeViewHierarchyManager.resolveView(rootViewTag)
|
|
479
|
+
if (view is RNGestureHandlerEnabledRootView) {
|
|
480
|
+
view.initialize()
|
|
481
|
+
} else {
|
|
482
|
+
// Seems like the root view is something else than RNGestureHandlerEnabledRootView, this
|
|
483
|
+
// is fine though as long as gestureHandlerRootHOC is used in JS
|
|
484
|
+
// FIXME: check and warn about gestureHandlerRootHOC
|
|
485
|
+
}
|
|
486
|
+
synchronized(enqueuedRootViewInit) { enqueuedRootViewInit.remove(rootViewTag) }
|
|
487
|
+
})
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
fun registerRootHelper(root: RNGestureHandlerRootHelper) {
|
|
491
|
+
synchronized(roots) {
|
|
492
|
+
if (root in roots) {
|
|
493
|
+
throw IllegalStateException("Root helper$root already registered")
|
|
494
|
+
}
|
|
495
|
+
roots.add(root)
|
|
496
|
+
}
|
|
497
|
+
}
|
|
498
|
+
|
|
499
|
+
fun unregisterRootHelper(root: RNGestureHandlerRootHelper) {
|
|
500
|
+
synchronized(roots) { roots.remove(root) }
|
|
501
|
+
}
|
|
502
|
+
|
|
503
|
+
private fun findRootHelperForViewAncestor(viewTag: Int): RNGestureHandlerRootHelper? {
|
|
504
|
+
val uiManager = reactApplicationContext.UIManager
|
|
505
|
+
val rootViewTag = uiManager.resolveRootTagFromReactTag(viewTag)
|
|
506
|
+
if (rootViewTag < 1) {
|
|
507
|
+
return null
|
|
508
|
+
}
|
|
509
|
+
synchronized(roots) {
|
|
510
|
+
return roots.firstOrNull {
|
|
511
|
+
it.rootView is ReactRootView && it.rootView.rootViewTag == rootViewTag
|
|
512
|
+
}
|
|
513
|
+
}
|
|
514
|
+
}
|
|
515
|
+
|
|
516
|
+
@Suppress("UNCHECKED_CAST")
|
|
517
|
+
private fun <T : GestureHandler<T>> findFactoryForHandler(handler: GestureHandler<T>): HandlerFactory<T>? =
|
|
518
|
+
handlerFactories.firstOrNull { it.type == handler.javaClass } as HandlerFactory<T>?
|
|
519
|
+
|
|
520
|
+
private fun <T : GestureHandler<T>> onHandlerUpdate(handler: T, motionEvent: MotionEvent) {
|
|
521
|
+
if (handler.tag < 0) {
|
|
522
|
+
// root containers use negative tags, we don't need to dispatch events for them to the JS
|
|
523
|
+
return
|
|
524
|
+
}
|
|
525
|
+
if (handler.state == GestureHandler.STATE_ACTIVE) {
|
|
526
|
+
val handlerFactory = findFactoryForHandler(handler)
|
|
527
|
+
|
|
528
|
+
if (handler.usesDeviceEvents) {
|
|
529
|
+
val data = RNGestureHandlerEvent.createEventData(handler, handlerFactory)
|
|
530
|
+
|
|
531
|
+
reactApplicationContext
|
|
532
|
+
.deviceEventEmitter
|
|
533
|
+
.emit(RNGestureHandlerEvent.EVENT_NAME, data)
|
|
534
|
+
} else {
|
|
535
|
+
reactApplicationContext
|
|
536
|
+
.UIManager
|
|
537
|
+
.eventDispatcher.let {
|
|
538
|
+
val event = RNGestureHandlerEvent.obtain(handler, handlerFactory)
|
|
539
|
+
it.dispatchEvent(event)
|
|
540
|
+
}
|
|
541
|
+
}
|
|
542
|
+
}
|
|
543
|
+
}
|
|
544
|
+
|
|
545
|
+
private fun <T : GestureHandler<T>> onStateChange(handler: T, newState: Int, oldState: Int) {
|
|
546
|
+
if (handler.tag < 0) {
|
|
547
|
+
// root containers use negative tags, we don't need to dispatch events for them to the JS
|
|
548
|
+
return
|
|
549
|
+
}
|
|
550
|
+
val handlerFactory = findFactoryForHandler(handler)
|
|
551
|
+
|
|
552
|
+
if (handler.usesDeviceEvents) {
|
|
553
|
+
val data = RNGestureHandlerStateChangeEvent.createEventData(
|
|
554
|
+
handler,
|
|
555
|
+
handlerFactory,
|
|
556
|
+
newState,
|
|
557
|
+
oldState,
|
|
558
|
+
)
|
|
559
|
+
|
|
560
|
+
reactApplicationContext
|
|
561
|
+
.deviceEventEmitter
|
|
562
|
+
.emit(RNGestureHandlerStateChangeEvent.EVENT_NAME, data)
|
|
563
|
+
} else {
|
|
564
|
+
reactApplicationContext
|
|
565
|
+
.UIManager
|
|
566
|
+
.eventDispatcher.let {
|
|
567
|
+
val event =
|
|
568
|
+
RNGestureHandlerStateChangeEvent.obtain(handler, newState, oldState, handlerFactory)
|
|
569
|
+
it.dispatchEvent(event)
|
|
570
|
+
}
|
|
571
|
+
}
|
|
572
|
+
}
|
|
573
|
+
|
|
574
|
+
private fun <T : GestureHandler<T>> onTouchEvent(handler: T) {
|
|
575
|
+
if (handler.tag < 0) {
|
|
576
|
+
// root containers use negative tags, we don't need to dispatch events for them to the JS
|
|
577
|
+
return
|
|
578
|
+
}
|
|
579
|
+
if (handler.state == GestureHandler.STATE_BEGAN || handler.state == GestureHandler.STATE_ACTIVE
|
|
580
|
+
|| handler.state == GestureHandler.STATE_UNDETERMINED || handler.view != null) {
|
|
581
|
+
if (handler.usesDeviceEvents) {
|
|
582
|
+
val data = RNGestureHandlerTouchEvent.createEventData(handler)
|
|
583
|
+
|
|
584
|
+
reactApplicationContext
|
|
585
|
+
.deviceEventEmitter
|
|
586
|
+
.emit(RNGestureHandlerTouchEvent.EVENT_NAME, data)
|
|
587
|
+
} else {
|
|
588
|
+
reactApplicationContext
|
|
589
|
+
.UIManager
|
|
590
|
+
.eventDispatcher.let {
|
|
591
|
+
val event = RNGestureHandlerTouchEvent.obtain(handler)
|
|
592
|
+
it.dispatchEvent(event)
|
|
593
|
+
}
|
|
594
|
+
}
|
|
595
|
+
}
|
|
596
|
+
}
|
|
597
|
+
|
|
598
|
+
companion object {
|
|
599
|
+
const val MODULE_NAME = "RNGestureHandlerModule"
|
|
600
|
+
private const val KEY_SHOULD_CANCEL_WHEN_OUTSIDE = "shouldCancelWhenOutside"
|
|
601
|
+
private const val KEY_ENABLED = "enabled"
|
|
602
|
+
private const val KEY_NEEDS_POINTER_DATA = "needsPointerData"
|
|
603
|
+
private const val KEY_MANUAL_ACTIVATION = "manualActivation"
|
|
604
|
+
private const val KEY_HIT_SLOP = "hitSlop"
|
|
605
|
+
private const val KEY_HIT_SLOP_LEFT = "left"
|
|
606
|
+
private const val KEY_HIT_SLOP_TOP = "top"
|
|
607
|
+
private const val KEY_HIT_SLOP_RIGHT = "right"
|
|
608
|
+
private const val KEY_HIT_SLOP_BOTTOM = "bottom"
|
|
609
|
+
private const val KEY_HIT_SLOP_VERTICAL = "vertical"
|
|
610
|
+
private const val KEY_HIT_SLOP_HORIZONTAL = "horizontal"
|
|
611
|
+
private const val KEY_HIT_SLOP_WIDTH = "width"
|
|
612
|
+
private const val KEY_HIT_SLOP_HEIGHT = "height"
|
|
613
|
+
private const val KEY_NATIVE_VIEW_SHOULD_ACTIVATE_ON_START = "shouldActivateOnStart"
|
|
614
|
+
private const val KEY_NATIVE_VIEW_DISALLOW_INTERRUPTION = "disallowInterruption"
|
|
615
|
+
private const val KEY_TAP_NUMBER_OF_TAPS = "numberOfTaps"
|
|
616
|
+
private const val KEY_TAP_MAX_DURATION_MS = "maxDurationMs"
|
|
617
|
+
private const val KEY_TAP_MAX_DELAY_MS = "maxDelayMs"
|
|
618
|
+
private const val KEY_TAP_MAX_DELTA_X = "maxDeltaX"
|
|
619
|
+
private const val KEY_TAP_MAX_DELTA_Y = "maxDeltaY"
|
|
620
|
+
private const val KEY_TAP_MAX_DIST = "maxDist"
|
|
621
|
+
private const val KEY_TAP_MIN_POINTERS = "minPointers"
|
|
622
|
+
private const val KEY_LONG_PRESS_MIN_DURATION_MS = "minDurationMs"
|
|
623
|
+
private const val KEY_LONG_PRESS_MAX_DIST = "maxDist"
|
|
624
|
+
private const val KEY_PAN_ACTIVE_OFFSET_X_START = "activeOffsetXStart"
|
|
625
|
+
private const val KEY_PAN_ACTIVE_OFFSET_X_END = "activeOffsetXEnd"
|
|
626
|
+
private const val KEY_PAN_FAIL_OFFSET_RANGE_X_START = "failOffsetXStart"
|
|
627
|
+
private const val KEY_PAN_FAIL_OFFSET_RANGE_X_END = "failOffsetXEnd"
|
|
628
|
+
private const val KEY_PAN_ACTIVE_OFFSET_Y_START = "activeOffsetYStart"
|
|
629
|
+
private const val KEY_PAN_ACTIVE_OFFSET_Y_END = "activeOffsetYEnd"
|
|
630
|
+
private const val KEY_PAN_FAIL_OFFSET_RANGE_Y_START = "failOffsetYStart"
|
|
631
|
+
private const val KEY_PAN_FAIL_OFFSET_RANGE_Y_END = "failOffsetYEnd"
|
|
632
|
+
private const val KEY_PAN_MIN_DIST = "minDist"
|
|
633
|
+
private const val KEY_PAN_MIN_VELOCITY = "minVelocity"
|
|
634
|
+
private const val KEY_PAN_MIN_VELOCITY_X = "minVelocityX"
|
|
635
|
+
private const val KEY_PAN_MIN_VELOCITY_Y = "minVelocityY"
|
|
636
|
+
private const val KEY_PAN_MIN_POINTERS = "minPointers"
|
|
637
|
+
private const val KEY_PAN_MAX_POINTERS = "maxPointers"
|
|
638
|
+
private const val KEY_PAN_AVG_TOUCHES = "avgTouches"
|
|
639
|
+
private const val KEY_NUMBER_OF_POINTERS = "numberOfPointers"
|
|
640
|
+
private const val KEY_DIRECTION = "direction"
|
|
641
|
+
|
|
642
|
+
private fun handleHitSlopProperty(handler: GestureHandler<*>, config: ReadableMap) {
|
|
643
|
+
if (config.getType(KEY_HIT_SLOP) == ReadableType.Number) {
|
|
644
|
+
val hitSlop = PixelUtil.toPixelFromDIP(config.getDouble(KEY_HIT_SLOP))
|
|
645
|
+
handler.setHitSlop(hitSlop, hitSlop, hitSlop, hitSlop, GestureHandler.HIT_SLOP_NONE, GestureHandler.HIT_SLOP_NONE)
|
|
646
|
+
} else {
|
|
647
|
+
val hitSlop = config.getMap(KEY_HIT_SLOP)!!
|
|
648
|
+
var left = GestureHandler.HIT_SLOP_NONE
|
|
649
|
+
var top = GestureHandler.HIT_SLOP_NONE
|
|
650
|
+
var right = GestureHandler.HIT_SLOP_NONE
|
|
651
|
+
var bottom = GestureHandler.HIT_SLOP_NONE
|
|
652
|
+
var width = GestureHandler.HIT_SLOP_NONE
|
|
653
|
+
var height = GestureHandler.HIT_SLOP_NONE
|
|
654
|
+
if (hitSlop.hasKey(KEY_HIT_SLOP_HORIZONTAL)) {
|
|
655
|
+
val horizontalPad = PixelUtil.toPixelFromDIP(hitSlop.getDouble(KEY_HIT_SLOP_HORIZONTAL))
|
|
656
|
+
right = horizontalPad
|
|
657
|
+
left = right
|
|
658
|
+
}
|
|
659
|
+
if (hitSlop.hasKey(KEY_HIT_SLOP_VERTICAL)) {
|
|
660
|
+
val verticalPad = PixelUtil.toPixelFromDIP(hitSlop.getDouble(KEY_HIT_SLOP_VERTICAL))
|
|
661
|
+
bottom = verticalPad
|
|
662
|
+
top = bottom
|
|
663
|
+
}
|
|
664
|
+
if (hitSlop.hasKey(KEY_HIT_SLOP_LEFT)) {
|
|
665
|
+
left = PixelUtil.toPixelFromDIP(hitSlop.getDouble(KEY_HIT_SLOP_LEFT))
|
|
666
|
+
}
|
|
667
|
+
if (hitSlop.hasKey(KEY_HIT_SLOP_TOP)) {
|
|
668
|
+
top = PixelUtil.toPixelFromDIP(hitSlop.getDouble(KEY_HIT_SLOP_TOP))
|
|
669
|
+
}
|
|
670
|
+
if (hitSlop.hasKey(KEY_HIT_SLOP_RIGHT)) {
|
|
671
|
+
right = PixelUtil.toPixelFromDIP(hitSlop.getDouble(KEY_HIT_SLOP_RIGHT))
|
|
672
|
+
}
|
|
673
|
+
if (hitSlop.hasKey(KEY_HIT_SLOP_BOTTOM)) {
|
|
674
|
+
bottom = PixelUtil.toPixelFromDIP(hitSlop.getDouble(KEY_HIT_SLOP_BOTTOM))
|
|
675
|
+
}
|
|
676
|
+
if (hitSlop.hasKey(KEY_HIT_SLOP_WIDTH)) {
|
|
677
|
+
width = PixelUtil.toPixelFromDIP(hitSlop.getDouble(KEY_HIT_SLOP_WIDTH))
|
|
678
|
+
}
|
|
679
|
+
if (hitSlop.hasKey(KEY_HIT_SLOP_HEIGHT)) {
|
|
680
|
+
height = PixelUtil.toPixelFromDIP(hitSlop.getDouble(KEY_HIT_SLOP_HEIGHT))
|
|
681
|
+
}
|
|
682
|
+
handler.setHitSlop(left, top, right, bottom, width, height)
|
|
683
|
+
}
|
|
684
|
+
}
|
|
685
|
+
}
|
|
686
|
+
}
|