react-native-gesture-handler 2.7.0 → 2.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (182) hide show
  1. package/android/build.gradle +10 -5
  2. package/android/noreanimated/src/main/java/com/swmansion/gesturehandler/ReanimatedEventDispatcher.kt +3 -3
  3. package/android/reanimated/src/main/java/com/swmansion/gesturehandler/ReanimatedEventDispatcher.kt +7 -7
  4. package/android/src/fabric/java/com/swmansion/gesturehandler/ReactContextExtensions.kt +2 -2
  5. package/android/src/main/java/com/swmansion/gesturehandler/RNGestureHandlerPackage.kt +3 -3
  6. package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/FlingGestureHandler.kt +12 -9
  7. package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/GestureHandler.kt +39 -31
  8. package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/GestureHandlerInteractionController.kt +1 -1
  9. package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/GestureHandlerOrchestrator.kt +28 -19
  10. package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/GestureHandlerRegistry.kt +1 -1
  11. package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/GestureUtils.kt +1 -1
  12. package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/LongPressGestureHandler.kt +1 -1
  13. package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/ManualGestureHandler.kt +1 -1
  14. package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/NativeViewGestureHandler.kt +5 -5
  15. package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/OnTouchEventListener.kt +1 -1
  16. package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/PanGestureHandler.kt +7 -5
  17. package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/PinchGestureHandler.kt +11 -4
  18. package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/PointerEventsConfig.kt +1 -1
  19. package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/RotationGestureDetector.kt +1 -1
  20. package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/RotationGestureHandler.kt +7 -2
  21. package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/ScaleGestureDetector.java +1 -1
  22. package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/TapGestureHandler.kt +3 -3
  23. package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/ViewConfigurationHelper.kt +1 -1
  24. package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/react}/Extensions.kt +3 -3
  25. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.kt +7 -6
  26. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEnabledRootView.kt +1 -5
  27. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEvent.kt +6 -6
  28. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEventDataExtractor.kt +1 -1
  29. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerInteractionManager.kt +3 -3
  30. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.kt +35 -14
  31. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRegistry.kt +2 -2
  32. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.kt +8 -6
  33. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootView.kt +0 -2
  34. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootViewManager.kt +4 -2
  35. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerStateChangeEvent.kt +7 -7
  36. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerTouchEvent.kt +5 -5
  37. package/android/src/main/java/com/swmansion/gesturehandler/react/RNViewConfigurationHelper.kt +2 -2
  38. package/android/src/paper/java/com/swmansion/gesturehandler/ReactContextExtensions.kt +5 -5
  39. package/ios/Handlers/RNManualHandler.m +24 -8
  40. package/ios/RNGestureHandlerButtonComponentView.mm +7 -8
  41. package/ios/RNGestureHandlerManager.mm +176 -178
  42. package/lib/commonjs/RNGestureHandlerModule.macos.js.map +1 -1
  43. package/lib/commonjs/RNGestureHandlerModule.web.js.map +1 -1
  44. package/lib/commonjs/RNGestureHandlerModule.windows.js +156 -0
  45. package/lib/commonjs/RNGestureHandlerModule.windows.js.map +1 -0
  46. package/lib/commonjs/components/DrawerLayout.js +1 -0
  47. package/lib/commonjs/components/DrawerLayout.js.map +1 -1
  48. package/lib/commonjs/components/Swipeable.js.map +1 -1
  49. package/lib/commonjs/components/touchables/TouchableOpacity.js.map +1 -1
  50. package/lib/commonjs/getShadowNodeFromRef.js +2 -2
  51. package/lib/commonjs/getShadowNodeFromRef.js.map +1 -1
  52. package/lib/commonjs/handlers/createHandler.js.map +1 -1
  53. package/lib/commonjs/handlers/gestureHandlerCommon.js +5 -2
  54. package/lib/commonjs/handlers/gestureHandlerCommon.js.map +1 -1
  55. package/lib/commonjs/handlers/gestureHandlerTypesCompat.js +4 -0
  56. package/lib/commonjs/handlers/gestures/GestureDetector.js +26 -12
  57. package/lib/commonjs/handlers/gestures/GestureDetector.js.map +1 -1
  58. package/lib/commonjs/handlers/gestures/eventReceiver.js.map +1 -1
  59. package/lib/commonjs/handlers/gestures/gesture.js.map +1 -1
  60. package/lib/commonjs/handlers/gestures/gestureComposition.js +15 -4
  61. package/lib/commonjs/handlers/gestures/gestureComposition.js.map +1 -1
  62. package/lib/commonjs/jestUtils/jestUtils.js.map +1 -1
  63. package/lib/commonjs/web/detectors/RotationGestureDetector.js.map +1 -1
  64. package/lib/commonjs/web/handlers/FlingGestureHandler.js +18 -15
  65. package/lib/commonjs/web/handlers/FlingGestureHandler.js.map +1 -1
  66. package/lib/commonjs/web/handlers/GestureHandler.js +36 -7
  67. package/lib/commonjs/web/handlers/GestureHandler.js.map +1 -1
  68. package/lib/commonjs/web/handlers/LongPressGestureHandler.js +2 -1
  69. package/lib/commonjs/web/handlers/LongPressGestureHandler.js.map +1 -1
  70. package/lib/commonjs/web/handlers/ManualGestureHandler.js +15 -0
  71. package/lib/commonjs/web/handlers/ManualGestureHandler.js.map +1 -1
  72. package/lib/commonjs/web/handlers/NativeViewGestureHandler.js +0 -5
  73. package/lib/commonjs/web/handlers/NativeViewGestureHandler.js.map +1 -1
  74. package/lib/commonjs/web/handlers/PanGestureHandler.js +0 -5
  75. package/lib/commonjs/web/handlers/PanGestureHandler.js.map +1 -1
  76. package/lib/commonjs/web/handlers/PinchGestureHandler.js +0 -1
  77. package/lib/commonjs/web/handlers/PinchGestureHandler.js.map +1 -1
  78. package/lib/commonjs/web/handlers/RotationGestureHandler.js +0 -1
  79. package/lib/commonjs/web/handlers/RotationGestureHandler.js.map +1 -1
  80. package/lib/commonjs/web/handlers/TapGestureHandler.js +0 -1
  81. package/lib/commonjs/web/handlers/TapGestureHandler.js.map +1 -1
  82. package/lib/commonjs/web/interfaces.js.map +1 -1
  83. package/lib/commonjs/web/tools/InteractionManager.js.map +1 -1
  84. package/lib/commonjs/web_hammer/GestureHandler.js.map +1 -1
  85. package/lib/commonjs/web_hammer/NodeManager.js +4 -1
  86. package/lib/commonjs/web_hammer/NodeManager.js.map +1 -1
  87. package/lib/commonjs/web_hammer/PanGestureHandler.js +25 -6
  88. package/lib/commonjs/web_hammer/PanGestureHandler.js.map +1 -1
  89. package/lib/module/RNGestureHandlerModule.macos.js.map +1 -1
  90. package/lib/module/RNGestureHandlerModule.web.js.map +1 -1
  91. package/lib/module/RNGestureHandlerModule.windows.js +117 -0
  92. package/lib/module/RNGestureHandlerModule.windows.js.map +1 -0
  93. package/lib/module/components/DrawerLayout.js +1 -0
  94. package/lib/module/components/DrawerLayout.js.map +1 -1
  95. package/lib/module/components/Swipeable.js.map +1 -1
  96. package/lib/module/components/touchables/TouchableOpacity.js.map +1 -1
  97. package/lib/module/getShadowNodeFromRef.js +2 -2
  98. package/lib/module/getShadowNodeFromRef.js.map +1 -1
  99. package/lib/module/handlers/createHandler.js.map +1 -1
  100. package/lib/module/handlers/gestureHandlerCommon.js +5 -2
  101. package/lib/module/handlers/gestureHandlerCommon.js.map +1 -1
  102. package/lib/module/handlers/gestureHandlerTypesCompat.js +1 -1
  103. package/lib/module/handlers/gestures/GestureDetector.js +26 -12
  104. package/lib/module/handlers/gestures/GestureDetector.js.map +1 -1
  105. package/lib/module/handlers/gestures/eventReceiver.js.map +1 -1
  106. package/lib/module/handlers/gestures/gesture.js.map +1 -1
  107. package/lib/module/handlers/gestures/gestureComposition.js +15 -4
  108. package/lib/module/handlers/gestures/gestureComposition.js.map +1 -1
  109. package/lib/module/jestUtils/jestUtils.js.map +1 -1
  110. package/lib/module/web/detectors/RotationGestureDetector.js.map +1 -1
  111. package/lib/module/web/handlers/FlingGestureHandler.js +18 -15
  112. package/lib/module/web/handlers/FlingGestureHandler.js.map +1 -1
  113. package/lib/module/web/handlers/GestureHandler.js +36 -6
  114. package/lib/module/web/handlers/GestureHandler.js.map +1 -1
  115. package/lib/module/web/handlers/LongPressGestureHandler.js +2 -1
  116. package/lib/module/web/handlers/LongPressGestureHandler.js.map +1 -1
  117. package/lib/module/web/handlers/ManualGestureHandler.js +15 -0
  118. package/lib/module/web/handlers/ManualGestureHandler.js.map +1 -1
  119. package/lib/module/web/handlers/NativeViewGestureHandler.js +0 -5
  120. package/lib/module/web/handlers/NativeViewGestureHandler.js.map +1 -1
  121. package/lib/module/web/handlers/PanGestureHandler.js +0 -5
  122. package/lib/module/web/handlers/PanGestureHandler.js.map +1 -1
  123. package/lib/module/web/handlers/PinchGestureHandler.js +0 -1
  124. package/lib/module/web/handlers/PinchGestureHandler.js.map +1 -1
  125. package/lib/module/web/handlers/RotationGestureHandler.js +0 -1
  126. package/lib/module/web/handlers/RotationGestureHandler.js.map +1 -1
  127. package/lib/module/web/handlers/TapGestureHandler.js +0 -1
  128. package/lib/module/web/handlers/TapGestureHandler.js.map +1 -1
  129. package/lib/module/web/interfaces.js.map +1 -1
  130. package/lib/module/web/tools/InteractionManager.js.map +1 -1
  131. package/lib/module/web_hammer/GestureHandler.js.map +1 -1
  132. package/lib/module/web_hammer/NodeManager.js +4 -1
  133. package/lib/module/web_hammer/NodeManager.js.map +1 -1
  134. package/lib/module/web_hammer/PanGestureHandler.js +25 -6
  135. package/lib/module/web_hammer/PanGestureHandler.js.map +1 -1
  136. package/lib/typescript/RNGestureHandlerModule.macos.d.ts +1 -1
  137. package/lib/typescript/RNGestureHandlerModule.web.d.ts +1 -1
  138. package/lib/typescript/RNGestureHandlerModule.windows.d.ts +48 -0
  139. package/lib/typescript/components/DrawerLayout.d.ts +7 -0
  140. package/lib/typescript/handlers/NativeViewGestureHandler.d.ts +1 -1
  141. package/lib/typescript/handlers/PanGestureHandler.d.ts +1 -1
  142. package/lib/typescript/handlers/gestureHandlerCommon.d.ts +3 -1
  143. package/lib/typescript/handlers/gestures/GestureDetector.d.ts +3 -1
  144. package/lib/typescript/web/handlers/FlingGestureHandler.d.ts +1 -0
  145. package/lib/typescript/web/handlers/GestureHandler.d.ts +1 -0
  146. package/lib/typescript/web/handlers/ManualGestureHandler.d.ts +3 -1
  147. package/lib/typescript/web/interfaces.d.ts +3 -1
  148. package/lib/typescript/web/tools/NodeManager.d.ts +2 -2
  149. package/package.json +14 -10
  150. package/src/RNGestureHandlerModule.macos.ts +2 -2
  151. package/src/RNGestureHandlerModule.web.ts +2 -2
  152. package/src/RNGestureHandlerModule.windows.ts +140 -0
  153. package/src/components/DrawerLayout.tsx +14 -8
  154. package/src/components/Swipeable.tsx +2 -4
  155. package/src/components/touchables/TouchableOpacity.tsx +1 -1
  156. package/src/getShadowNodeFromRef.ts +3 -3
  157. package/src/handlers/createHandler.tsx +13 -15
  158. package/src/handlers/gestureHandlerCommon.ts +9 -4
  159. package/src/handlers/gestureHandlerTypesCompat.ts +34 -17
  160. package/src/handlers/gestures/GestureDetector.tsx +46 -19
  161. package/src/handlers/gestures/eventReceiver.ts +2 -1
  162. package/src/handlers/gestures/gesture.ts +8 -12
  163. package/src/handlers/gestures/gestureComposition.ts +19 -6
  164. package/src/jestUtils/jestUtils.ts +3 -4
  165. package/src/web/detectors/RotationGestureDetector.ts +2 -1
  166. package/src/web/handlers/FlingGestureHandler.ts +28 -20
  167. package/src/web/handlers/GestureHandler.ts +42 -17
  168. package/src/web/handlers/LongPressGestureHandler.ts +2 -2
  169. package/src/web/handlers/ManualGestureHandler.ts +10 -1
  170. package/src/web/handlers/NativeViewGestureHandler.ts +0 -5
  171. package/src/web/handlers/PanGestureHandler.ts +0 -6
  172. package/src/web/handlers/PinchGestureHandler.ts +0 -2
  173. package/src/web/handlers/RotationGestureHandler.ts +2 -5
  174. package/src/web/handlers/TapGestureHandler.ts +0 -2
  175. package/src/web/interfaces.ts +3 -0
  176. package/src/web/tools/InteractionManager.ts +2 -3
  177. package/src/web_hammer/GestureHandler.ts +6 -8
  178. package/src/web_hammer/NodeManager.ts +3 -1
  179. package/src/web_hammer/PanGestureHandler.ts +12 -6
  180. package/android/lib/build.gradle +0 -28
  181. package/ios/RNGestureHandler.xcodeproj/project.xcworkspace/xcuserdata/jakubpiasecki.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  182. package/ios/RNGestureHandler.xcodeproj/xcuserdata/jakubpiasecki.xcuserdatad/xcschemes/xcschememanagement.plist +0 -19
@@ -27,7 +27,7 @@ import com.facebook.react.uimanager.ViewProps
27
27
  import com.facebook.react.uimanager.annotations.ReactProp
28
28
  import com.facebook.react.viewmanagers.RNGestureHandlerButtonManagerDelegate
29
29
  import com.facebook.react.viewmanagers.RNGestureHandlerButtonManagerInterface
30
- import com.swmansion.gesturehandler.NativeViewGestureHandler
30
+ import com.swmansion.gesturehandler.core.NativeViewGestureHandler
31
31
  import com.swmansion.gesturehandler.react.RNGestureHandlerButtonViewManager.ButtonViewGroup
32
32
 
33
33
  @ReactModule(name = RNGestureHandlerButtonViewManager.REACT_CLASS)
@@ -35,7 +35,7 @@ class RNGestureHandlerButtonViewManager : ViewGroupManager<ButtonViewGroup>(), R
35
35
  private val mDelegate: ViewManagerDelegate<ButtonViewGroup>
36
36
 
37
37
  init {
38
- mDelegate = RNGestureHandlerButtonManagerDelegate<ButtonViewGroup, RNGestureHandlerButtonViewManager>(this)
38
+ mDelegate = RNGestureHandlerButtonManagerDelegate<ButtonViewGroup, RNGestureHandlerButtonViewManager>(this)
39
39
  }
40
40
 
41
41
  override fun getName() = REACT_CLASS
@@ -91,7 +91,8 @@ class RNGestureHandlerButtonViewManager : ViewGroupManager<ButtonViewGroup>(), R
91
91
  return mDelegate
92
92
  }
93
93
 
94
- class ButtonViewGroup(context: Context?) : ViewGroup(context),
94
+ class ButtonViewGroup(context: Context?) :
95
+ ViewGroup(context),
95
96
  NativeViewGestureHandler.NativeViewGestureHandlerHook {
96
97
  // Using object because of handling null representing no value set.
97
98
  var rippleColor: Int? = null
@@ -254,9 +255,9 @@ class RNGestureHandlerButtonViewManager : ViewGroupManager<ButtonViewGroup>(), R
254
255
  }
255
256
 
256
257
  val drawable = RippleDrawable(
257
- colorStateList,
258
- null,
259
- if (useBorderlessDrawable) null else ShapeDrawable(RectShape())
258
+ colorStateList,
259
+ null,
260
+ if (useBorderlessDrawable) null else ShapeDrawable(RectShape())
260
261
  )
261
262
 
262
263
  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && rippleRadius != null) {
@@ -1,12 +1,8 @@
1
1
  package com.swmansion.gesturehandler.react
2
2
 
3
3
  import android.content.Context
4
- import android.os.Bundle
5
4
  import android.util.AttributeSet
6
- import android.view.MotionEvent
7
- import com.facebook.react.ReactInstanceManager
8
5
  import com.facebook.react.ReactRootView
9
- import java.lang.Exception
10
6
 
11
7
  @Deprecated(message = "Use <GestureHandlerRootView /> component instead. Check gesture handler installation instructions in documentation for more information.")
12
8
  class RNGestureHandlerEnabledRootView : ReactRootView {
@@ -14,6 +10,6 @@ class RNGestureHandlerEnabledRootView : ReactRootView {
14
10
  constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs) {}
15
11
 
16
12
  init {
17
- throw UnsupportedOperationException("Your application is configured to use RNGestureHandlerEnabledRootView which is no longer supported. You can see how to migrate to <GestureHandlerRootView /> here: https://docs.swmansion.com/react-native-gesture-handler/docs/guides/migrating-off-rnghenabledroot")
13
+ throw UnsupportedOperationException("Your application is configured to use RNGestureHandlerEnabledRootView which is no longer supported. You can see how to migrate to <GestureHandlerRootView /> here: https://docs.swmansion.com/react-native-gesture-handler/docs/guides/migrating-off-rnghenabledroot")
18
14
  }
19
15
  }
@@ -11,7 +11,7 @@ import com.facebook.react.bridge.Arguments
11
11
  import com.facebook.react.bridge.WritableMap
12
12
  import com.facebook.react.uimanager.events.Event
13
13
  import com.facebook.react.uimanager.events.RCTEventEmitter
14
- import com.swmansion.gesturehandler.GestureHandler
14
+ import com.swmansion.gesturehandler.core.GestureHandler
15
15
 
16
16
  class RNGestureHandlerEvent private constructor() : Event<RNGestureHandlerEvent>() {
17
17
  private var extraData: WritableMap? = null
@@ -53,13 +53,13 @@ class RNGestureHandlerEvent private constructor() : Event<RNGestureHandlerEvent>
53
53
  init(handler, dataExtractor)
54
54
  }
55
55
 
56
- fun <T: GestureHandler<T>> createEventData(
56
+ fun <T : GestureHandler<T>> createEventData(
57
57
  handler: T,
58
58
  dataExtractor: RNGestureHandlerEventDataExtractor<T>?
59
59
  ): WritableMap = Arguments.createMap().apply {
60
- dataExtractor?.extractEventData(handler, this)
61
- putInt("handlerTag", handler.tag)
62
- putInt("state", handler.state)
63
- }
60
+ dataExtractor?.extractEventData(handler, this)
61
+ putInt("handlerTag", handler.tag)
62
+ putInt("state", handler.state)
63
+ }
64
64
  }
65
65
  }
@@ -1,7 +1,7 @@
1
1
  package com.swmansion.gesturehandler.react
2
2
 
3
3
  import com.facebook.react.bridge.WritableMap
4
- import com.swmansion.gesturehandler.GestureHandler
4
+ import com.swmansion.gesturehandler.core.GestureHandler
5
5
 
6
6
  interface RNGestureHandlerEventDataExtractor<T : GestureHandler<T>> {
7
7
  fun extractEventData(handler: T, eventData: WritableMap)
@@ -2,9 +2,9 @@ package com.swmansion.gesturehandler.react
2
2
 
3
3
  import android.util.SparseArray
4
4
  import com.facebook.react.bridge.ReadableMap
5
- import com.swmansion.gesturehandler.GestureHandler
6
- import com.swmansion.gesturehandler.GestureHandlerInteractionController
7
- import com.swmansion.gesturehandler.NativeViewGestureHandler
5
+ import com.swmansion.gesturehandler.core.GestureHandler
6
+ import com.swmansion.gesturehandler.core.GestureHandlerInteractionController
7
+ import com.swmansion.gesturehandler.core.NativeViewGestureHandler
8
8
 
9
9
  class RNGestureHandlerInteractionManager : GestureHandlerInteractionController {
10
10
  private val waitForRelations = SparseArray<IntArray>()
@@ -3,17 +3,33 @@ package com.swmansion.gesturehandler.react
3
3
  import android.content.Context
4
4
  import android.util.Log
5
5
  import android.view.MotionEvent
6
- import android.view.ViewGroup
7
6
  import com.facebook.react.ReactRootView
8
- import com.facebook.react.bridge.*
7
+ import com.facebook.react.bridge.JSApplicationIllegalArgumentException
8
+ import com.facebook.react.bridge.ReactApplicationContext
9
+ import com.facebook.react.bridge.ReactContextBaseJavaModule
10
+ import com.facebook.react.bridge.ReactMethod
11
+ import com.facebook.react.bridge.ReadableMap
12
+ import com.facebook.react.bridge.ReadableType
13
+ import com.facebook.react.bridge.WritableMap
9
14
  import com.facebook.react.module.annotations.ReactModule
10
15
  import com.facebook.react.uimanager.PixelUtil
11
- import com.facebook.react.uimanager.UIBlock
12
16
  import com.facebook.react.uimanager.events.Event
13
17
  import com.facebook.soloader.SoLoader
14
18
  import com.swmansion.common.GestureHandlerStateManager
15
- import com.swmansion.gesturehandler.*
16
- import java.util.*
19
+ import com.swmansion.gesturehandler.BuildConfig
20
+ import com.swmansion.gesturehandler.ReanimatedEventDispatcher
21
+ import com.swmansion.gesturehandler.core.FlingGestureHandler
22
+ import com.swmansion.gesturehandler.core.GestureHandler
23
+ import com.swmansion.gesturehandler.core.LongPressGestureHandler
24
+ import com.swmansion.gesturehandler.core.ManualGestureHandler
25
+ import com.swmansion.gesturehandler.core.NativeViewGestureHandler
26
+ import com.swmansion.gesturehandler.core.OnTouchEventListener
27
+ import com.swmansion.gesturehandler.core.PanGestureHandler
28
+ import com.swmansion.gesturehandler.core.PinchGestureHandler
29
+ import com.swmansion.gesturehandler.core.RotationGestureHandler
30
+ import com.swmansion.gesturehandler.core.TapGestureHandler
31
+ import com.swmansion.gesturehandler.dispatchEvent
32
+
17
33
  // NativeModule.onCatalystInstanceDestroy() was deprecated in favor of NativeModule.invalidate()
18
34
  // ref: https://github.com/facebook/react-native/commit/18c8417290823e67e211bde241ae9dde27b72f17
19
35
 
@@ -21,8 +37,8 @@ import java.util.*
21
37
  // ref: https://github.com/facebook/react-native/commit/acbf9e18ea666b07c1224a324602a41d0a66985e
22
38
  @Suppress("DEPRECATION")
23
39
  @ReactModule(name = RNGestureHandlerModule.MODULE_NAME)
24
- class RNGestureHandlerModule(reactContext: ReactApplicationContext?)
25
- : ReactContextBaseJavaModule(reactContext), GestureHandlerStateManager {
40
+ class RNGestureHandlerModule(reactContext: ReactApplicationContext?) :
41
+ ReactContextBaseJavaModule(reactContext), GestureHandlerStateManager {
26
42
  private abstract class HandlerFactory<T : GestureHandler<T>> : RNGestureHandlerEventDataExtractor<T> {
27
43
  abstract val type: Class<T>
28
44
  abstract val name: String
@@ -63,7 +79,8 @@ class RNGestureHandlerModule(reactContext: ReactApplicationContext?)
63
79
  super.configure(handler, config)
64
80
  if (config.hasKey(KEY_NATIVE_VIEW_SHOULD_ACTIVATE_ON_START)) {
65
81
  handler.setShouldActivateOnStart(
66
- config.getBoolean(KEY_NATIVE_VIEW_SHOULD_ACTIVATE_ON_START))
82
+ config.getBoolean(KEY_NATIVE_VIEW_SHOULD_ACTIVATE_ON_START)
83
+ )
67
84
  }
68
85
  if (config.hasKey(KEY_NATIVE_VIEW_DISALLOW_INTERRUPTION)) {
69
86
  handler.setDisallowInterruption(config.getBoolean(KEY_NATIVE_VIEW_DISALLOW_INTERRUPTION))
@@ -352,7 +369,9 @@ class RNGestureHandlerModule(reactContext: ReactApplicationContext?)
352
369
  @ReactMethod
353
370
  @Suppress("UNCHECKED_CAST")
354
371
  fun <T : GestureHandler<T>> createGestureHandler(
355
- handlerName: String, handlerTag: Int, config: ReadableMap,
372
+ handlerName: String,
373
+ handlerTag: Int,
374
+ config: ReadableMap,
356
375
  ) {
357
376
  for (handlerFactory in handlerFactories as Array<HandlerFactory<T>>) {
358
377
  if (handlerFactory.name == handlerName) {
@@ -551,8 +570,9 @@ class RNGestureHandlerModule(reactContext: ReactApplicationContext?)
551
570
  // Reanimated worklet
552
571
  val event = RNGestureHandlerStateChangeEvent.obtain(handler, newState, oldState, handlerFactory)
553
572
  sendEventForReanimated(event)
554
- } else if (handler.actionType == GestureHandler.ACTION_TYPE_NATIVE_ANIMATED_EVENT
555
- || handler.actionType == GestureHandler.ACTION_TYPE_JS_FUNCTION_OLD_API) {
573
+ } else if (handler.actionType == GestureHandler.ACTION_TYPE_NATIVE_ANIMATED_EVENT ||
574
+ handler.actionType == GestureHandler.ACTION_TYPE_JS_FUNCTION_OLD_API
575
+ ) {
556
576
  // JS function or Animated.event with useNativeDriver: false with old API
557
577
  if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {
558
578
  val data = RNGestureHandlerStateChangeEvent.createEventData(handler, handlerFactory, newState, oldState)
@@ -570,13 +590,14 @@ class RNGestureHandlerModule(reactContext: ReactApplicationContext?)
570
590
 
571
591
  private fun <T : GestureHandler<T>> onTouchEvent(handler: T) {
572
592
  // triggers onTouchesDown, onTouchesMove, onTouchesUp, onTouchesCancelled callbacks on the JS side
573
-
593
+
574
594
  if (handler.tag < 0) {
575
595
  // root containers use negative tags, we don't need to dispatch events for them to the JS
576
596
  return
577
597
  }
578
- if (handler.state == GestureHandler.STATE_BEGAN || handler.state == GestureHandler.STATE_ACTIVE
579
- || handler.state == GestureHandler.STATE_UNDETERMINED || handler.view != null) {
598
+ if (handler.state == GestureHandler.STATE_BEGAN || handler.state == GestureHandler.STATE_ACTIVE ||
599
+ handler.state == GestureHandler.STATE_UNDETERMINED || handler.view != null
600
+ ) {
580
601
  if (handler.actionType == GestureHandler.ACTION_TYPE_REANIMATED_WORKLET) {
581
602
  // Reanimated worklet
582
603
  val event = RNGestureHandlerTouchEvent.obtain(handler)
@@ -3,8 +3,8 @@ package com.swmansion.gesturehandler.react
3
3
  import android.util.SparseArray
4
4
  import android.view.View
5
5
  import com.facebook.react.bridge.UiThreadUtil
6
- import com.swmansion.gesturehandler.GestureHandler
7
- import com.swmansion.gesturehandler.GestureHandlerRegistry
6
+ import com.swmansion.gesturehandler.core.GestureHandler
7
+ import com.swmansion.gesturehandler.core.GestureHandlerRegistry
8
8
  import java.util.*
9
9
 
10
10
  class RNGestureHandlerRegistry : GestureHandlerRegistry {
@@ -9,9 +9,8 @@ import com.facebook.react.bridge.ReactContext
9
9
  import com.facebook.react.bridge.UiThreadUtil
10
10
  import com.facebook.react.common.ReactConstants
11
11
  import com.facebook.react.uimanager.RootView
12
- import com.facebook.react.views.modal.ReactModalHostView
13
- import com.swmansion.gesturehandler.GestureHandler
14
- import com.swmansion.gesturehandler.GestureHandlerOrchestrator
12
+ import com.swmansion.gesturehandler.core.GestureHandler
13
+ import com.swmansion.gesturehandler.core.GestureHandlerOrchestrator
15
14
 
16
15
  class RNGestureHandlerRootHelper(private val context: ReactContext, wrappedView: ViewGroup) {
17
16
  private val orchestrator: GestureHandlerOrchestrator?
@@ -29,9 +28,11 @@ class RNGestureHandlerRootHelper(private val context: ReactContext, wrappedView:
29
28
  rootView = findRootViewTag(wrappedView)
30
29
  Log.i(
31
30
  ReactConstants.TAG,
32
- "[GESTURE HANDLER] Initialize gesture handler for root view $rootView")
31
+ "[GESTURE HANDLER] Initialize gesture handler for root view $rootView"
32
+ )
33
33
  orchestrator = GestureHandlerOrchestrator(
34
- wrappedView, registry, RNViewConfigurationHelper()).apply {
34
+ wrappedView, registry, RNViewConfigurationHelper()
35
+ ).apply {
35
36
  minimumAlphaForTraversal = MIN_ALPHA_FOR_TOUCH
36
37
  }
37
38
  jsGestureHandler = RootViewGestureHandler().apply { tag = -wrappedViewTag }
@@ -45,7 +46,8 @@ class RNGestureHandlerRootHelper(private val context: ReactContext, wrappedView:
45
46
  fun tearDown() {
46
47
  Log.i(
47
48
  ReactConstants.TAG,
48
- "[GESTURE HANDLER] Tearing down gesture handler registered for root view $rootView")
49
+ "[GESTURE HANDLER] Tearing down gesture handler registered for root view $rootView"
50
+ )
49
51
  val module = context.getNativeModule(RNGestureHandlerModule::class.java)!!
50
52
  with(module) {
51
53
  registry.dropHandler(jsGestureHandler!!.tag)
@@ -4,12 +4,10 @@ import android.content.Context
4
4
  import android.util.Log
5
5
  import android.view.MotionEvent
6
6
  import android.view.ViewGroup
7
- import android.view.ViewParent
8
7
  import com.facebook.react.bridge.ReactContext
9
8
  import com.facebook.react.bridge.UiThreadUtil
10
9
  import com.facebook.react.common.ReactConstants
11
10
  import com.facebook.react.uimanager.RootView
12
- import com.facebook.react.views.modal.ReactModalHostView
13
11
  import com.facebook.react.views.view.ReactViewGroup
14
12
 
15
13
  class RNGestureHandlerRootView(context: Context?) : ReactViewGroup(context) {
@@ -13,7 +13,8 @@ import com.facebook.react.viewmanagers.RNGestureHandlerRootViewManagerInterface
13
13
  * to be provided.
14
14
  */
15
15
  @ReactModule(name = RNGestureHandlerRootViewManager.REACT_CLASS)
16
- class RNGestureHandlerRootViewManager : ViewGroupManager<RNGestureHandlerRootView>(),
16
+ class RNGestureHandlerRootViewManager :
17
+ ViewGroupManager<RNGestureHandlerRootView>(),
17
18
  RNGestureHandlerRootViewManagerInterface<RNGestureHandlerRootView> {
18
19
  private val mDelegate: ViewManagerDelegate<RNGestureHandlerRootView>
19
20
 
@@ -41,7 +42,8 @@ class RNGestureHandlerRootViewManager : ViewGroupManager<RNGestureHandlerRootVie
41
42
  RNGestureHandlerEvent.EVENT_NAME to
42
43
  mutableMapOf("registrationName" to RNGestureHandlerEvent.EVENT_NAME),
43
44
  RNGestureHandlerStateChangeEvent.EVENT_NAME to
44
- mutableMapOf("registrationName" to RNGestureHandlerStateChangeEvent.EVENT_NAME))
45
+ mutableMapOf("registrationName" to RNGestureHandlerStateChangeEvent.EVENT_NAME)
46
+ )
45
47
 
46
48
  companion object {
47
49
  const val REACT_CLASS = "RNGestureHandlerRootView"
@@ -11,7 +11,7 @@ import com.facebook.react.bridge.Arguments
11
11
  import com.facebook.react.bridge.WritableMap
12
12
  import com.facebook.react.uimanager.events.Event
13
13
  import com.facebook.react.uimanager.events.RCTEventEmitter
14
- import com.swmansion.gesturehandler.GestureHandler
14
+ import com.swmansion.gesturehandler.core.GestureHandler
15
15
 
16
16
  class RNGestureHandlerStateChangeEvent private constructor() : Event<RNGestureHandlerStateChangeEvent>() {
17
17
  private var extraData: WritableMap? = null
@@ -57,16 +57,16 @@ class RNGestureHandlerStateChangeEvent private constructor() : Event<RNGestureHa
57
57
  init(handler, newState, oldState, dataExtractor)
58
58
  }
59
59
 
60
- fun <T: GestureHandler<T>> createEventData(
60
+ fun <T : GestureHandler<T>> createEventData(
61
61
  handler: T,
62
62
  dataExtractor: RNGestureHandlerEventDataExtractor<T>?,
63
63
  newState: Int,
64
64
  oldState: Int,
65
65
  ): WritableMap = Arguments.createMap().apply {
66
- dataExtractor?.extractEventData(handler, this)
67
- putInt("handlerTag", handler.tag)
68
- putInt("state", newState)
69
- putInt("oldState", oldState)
70
- }
66
+ dataExtractor?.extractEventData(handler, this)
67
+ putInt("handlerTag", handler.tag)
68
+ putInt("state", newState)
69
+ putInt("oldState", oldState)
70
+ }
71
71
  }
72
72
  }
@@ -5,7 +5,7 @@ import com.facebook.react.bridge.Arguments
5
5
  import com.facebook.react.bridge.WritableMap
6
6
  import com.facebook.react.uimanager.events.Event
7
7
  import com.facebook.react.uimanager.events.RCTEventEmitter
8
- import com.swmansion.gesturehandler.GestureHandler
8
+ import com.swmansion.gesturehandler.core.GestureHandler
9
9
 
10
10
  class RNGestureHandlerTouchEvent private constructor() : Event<RNGestureHandlerTouchEvent>() {
11
11
  private var extraData: WritableMap? = null
@@ -43,11 +43,11 @@ class RNGestureHandlerTouchEvent private constructor() : Event<RNGestureHandlerT
43
43
  private val EVENTS_POOL = Pools.SynchronizedPool<RNGestureHandlerTouchEvent>(TOUCH_EVENTS_POOL_SIZE)
44
44
 
45
45
  fun <T : GestureHandler<T>> obtain(handler: T): RNGestureHandlerTouchEvent =
46
- (EVENTS_POOL.acquire() ?: RNGestureHandlerTouchEvent()).apply {
47
- init(handler)
48
- }
46
+ (EVENTS_POOL.acquire() ?: RNGestureHandlerTouchEvent()).apply {
47
+ init(handler)
48
+ }
49
49
 
50
- fun <T: GestureHandler<T>> createEventData(handler: T,): WritableMap = Arguments.createMap().apply {
50
+ fun <T : GestureHandler<T>> createEventData(handler: T,): WritableMap = Arguments.createMap().apply {
51
51
  putInt("handlerTag", handler.tag)
52
52
  putInt("state", handler.state)
53
53
  putInt("numberOfTouches", handler.trackedPointersCount)
@@ -5,8 +5,8 @@ import android.view.ViewGroup
5
5
  import com.facebook.react.uimanager.PointerEvents
6
6
  import com.facebook.react.uimanager.ReactPointerEventsView
7
7
  import com.facebook.react.views.view.ReactViewGroup
8
- import com.swmansion.gesturehandler.PointerEventsConfig
9
- import com.swmansion.gesturehandler.ViewConfigurationHelper
8
+ import com.swmansion.gesturehandler.core.PointerEventsConfig
9
+ import com.swmansion.gesturehandler.core.ViewConfigurationHelper
10
10
 
11
11
  class RNViewConfigurationHelper : ViewConfigurationHelper {
12
12
  override fun getPointerEventsConfigForView(view: View): PointerEventsConfig {
@@ -5,9 +5,9 @@ import com.facebook.react.uimanager.UIManagerModule
5
5
  import com.facebook.react.uimanager.events.Event
6
6
 
7
7
  fun ReactContext.dispatchEvent(event: Event<*>) {
8
- try {
9
- this.getNativeModule(UIManagerModule::class.java)!!.eventDispatcher.dispatchEvent(event)
10
- } catch (e: NullPointerException) {
11
- throw Exception("Couldn't get an instance of UIManagerModule. Gesture Handler is unable to send an event.", e)
12
- }
8
+ try {
9
+ this.getNativeModule(UIManagerModule::class.java)!!.eventDispatcher.dispatchEvent(event)
10
+ } catch (e: NullPointerException) {
11
+ throw Exception("Couldn't get an instance of UIManagerModule. Gesture Handler is unable to send an event.", e)
12
+ }
13
13
  }
@@ -2,7 +2,7 @@
2
2
 
3
3
  @interface RNManualRecognizer : UIGestureRecognizer
4
4
 
5
- - (id)initWithGestureHandler:(RNGestureHandler*)gestureHandler;
5
+ - (id)initWithGestureHandler:(RNGestureHandler *)gestureHandler;
6
6
 
7
7
  @end
8
8
 
@@ -24,7 +24,7 @@
24
24
  {
25
25
  [super touchesBegan:touches withEvent:event];
26
26
  [_gestureHandler.pointerTracker touchesBegan:touches withEvent:event];
27
-
27
+
28
28
  if (_shouldSendBeginEvent) {
29
29
  [_gestureHandler handleGesture:self];
30
30
  _shouldSendBeginEvent = NO;
@@ -35,6 +35,14 @@
35
35
  {
36
36
  [super touchesMoved:touches withEvent:event];
37
37
  [_gestureHandler.pointerTracker touchesMoved:touches withEvent:event];
38
+
39
+ if ([self shouldFail]) {
40
+ self.state = (self.state == UIGestureRecognizerStatePossible)
41
+ ? UIGestureRecognizerStateFailed
42
+ : UIGestureRecognizerStateCancelled;
43
+
44
+ [self reset];
45
+ }
38
46
  }
39
47
 
40
48
  - (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
@@ -53,21 +61,29 @@
53
61
  {
54
62
  [_gestureHandler.pointerTracker reset];
55
63
  [super reset];
56
-
64
+
57
65
  _shouldSendBeginEvent = YES;
58
66
  }
59
67
 
68
+ - (BOOL)shouldFail
69
+ {
70
+ if (_gestureHandler.shouldCancelWhenOutside && ![_gestureHandler containsPointInView]) {
71
+ return YES;
72
+ } else {
73
+ return NO;
74
+ }
75
+ }
76
+
60
77
  @end
61
78
 
62
79
  @implementation RNManualGestureHandler
63
80
 
64
81
  - (instancetype)initWithTag:(NSNumber *)tag
65
82
  {
66
- if ((self = [super initWithTag:tag])) {
67
- _recognizer = [[RNManualRecognizer alloc] initWithGestureHandler:self];
68
-
69
- }
70
- return self;
83
+ if ((self = [super initWithTag:tag])) {
84
+ _recognizer = [[RNManualRecognizer alloc] initWithGestureHandler:self];
85
+ }
86
+ return self;
71
87
  }
72
88
 
73
89
  @end
@@ -17,9 +17,8 @@ using namespace facebook::react;
17
17
  @interface RNGestureHandlerButtonComponentView () <RCTRNGestureHandlerButtonViewProtocol>
18
18
  @end
19
19
 
20
- @implementation RNGestureHandlerButtonComponentView
21
- {
22
- RNGestureHandlerButton *_buttonView;
20
+ @implementation RNGestureHandlerButtonComponentView {
21
+ RNGestureHandlerButton *_buttonView;
23
22
  }
24
23
 
25
24
  - (instancetype)initWithFrame:(CGRect)frame
@@ -28,7 +27,7 @@ using namespace facebook::react;
28
27
  static const auto defaultProps = std::make_shared<const RNGestureHandlerButtonProps>();
29
28
  _props = defaultProps;
30
29
  _buttonView = [[RNGestureHandlerButton alloc] initWithFrame:self.bounds];
31
-
30
+
32
31
  self.contentView = _buttonView;
33
32
  }
34
33
 
@@ -44,12 +43,12 @@ using namespace facebook::react;
44
43
 
45
44
  - (void)updateProps:(const Props::Shared &)props oldProps:(const Props::Shared &)oldProps
46
45
  {
47
- const auto &newProps = *std::static_pointer_cast<const RNGestureHandlerButtonProps>(props);
46
+ const auto &newProps = *std::static_pointer_cast<const RNGestureHandlerButtonProps>(props);
48
47
 
49
- _buttonView.userEnabled = newProps.enabled;
50
- _buttonView.exclusiveTouch = newProps.exclusive;
48
+ _buttonView.userEnabled = newProps.enabled;
49
+ _buttonView.exclusiveTouch = newProps.exclusive;
51
50
 
52
- [super updateProps:props oldProps:oldProps];
51
+ [super updateProps:props oldProps:oldProps];
53
52
  }
54
53
  @end
55
54