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.
Files changed (382) hide show
  1. package/README.md +7 -6
  2. package/android/build.gradle +49 -1
  3. package/android/common/src/main/java/com/swmansion/common/GestureHandlerStateManager.kt +5 -0
  4. package/android/gradle.properties +19 -0
  5. package/android/lib/src/main/java/com/swmansion/gesturehandler/BaseGestureHandlerInteractionController.kt +18 -0
  6. package/android/lib/src/main/java/com/swmansion/gesturehandler/Extensions.kt +11 -0
  7. package/android/lib/src/main/java/com/swmansion/gesturehandler/FlingGestureHandler.kt +96 -0
  8. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandler.kt +713 -0
  9. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerInteractionController.kt +8 -0
  10. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerOrchestrator.kt +562 -0
  11. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerRegistry.kt +8 -0
  12. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerRegistryImpl.kt +21 -0
  13. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureUtils.kt +49 -0
  14. package/android/lib/src/main/java/com/swmansion/gesturehandler/LongPressGestureHandler.kt +97 -0
  15. package/android/lib/src/main/java/com/swmansion/gesturehandler/ManualGestureHandler.kt +11 -0
  16. package/android/lib/src/main/java/com/swmansion/gesturehandler/NativeViewGestureHandler.kt +129 -0
  17. package/android/lib/src/main/java/com/swmansion/gesturehandler/OnTouchEventListener.kt +9 -0
  18. package/android/lib/src/main/java/com/swmansion/gesturehandler/PanGestureHandler.kt +289 -0
  19. package/android/lib/src/main/java/com/swmansion/gesturehandler/PinchGestureHandler.kt +88 -0
  20. package/android/lib/src/main/java/com/swmansion/gesturehandler/{PointerEventsConfig.java → PointerEventsConfig.kt} +3 -5
  21. package/android/lib/src/main/java/com/swmansion/gesturehandler/RotationGestureDetector.kt +125 -0
  22. package/android/lib/src/main/java/com/swmansion/gesturehandler/RotationGestureHandler.kt +79 -0
  23. package/android/lib/src/main/java/com/swmansion/gesturehandler/TapGestureHandler.kt +167 -0
  24. package/android/lib/src/main/java/com/swmansion/gesturehandler/ViewConfigurationHelper.kt +10 -0
  25. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.kt +348 -0
  26. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEnabledRootView.kt +57 -0
  27. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEvent.kt +59 -0
  28. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEventDataExtractor.kt +8 -0
  29. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerInteractionManager.kt +61 -0
  30. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.kt +686 -0
  31. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerPackage.kt +17 -0
  32. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRegistry.kt +95 -0
  33. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.kt +132 -0
  34. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootInterface.kt +5 -0
  35. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootView.kt +68 -0
  36. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootViewManager.kt +34 -0
  37. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerStateChangeEvent.kt +66 -0
  38. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerTouchEvent.kt +69 -0
  39. package/android/src/main/java/com/swmansion/gesturehandler/react/RNViewConfigurationHelper.kt +51 -0
  40. package/ios/Handlers/RNFlingHandler.m +78 -5
  41. package/ios/Handlers/RNForceTouchHandler.m +29 -4
  42. package/ios/Handlers/RNLongPressHandler.m +105 -3
  43. package/ios/Handlers/RNManualHandler.h +4 -0
  44. package/ios/Handlers/RNManualHandler.m +73 -0
  45. package/ios/Handlers/RNNativeViewHandler.m +30 -2
  46. package/ios/Handlers/RNPanHandler.m +64 -4
  47. package/ios/Handlers/RNPinchHandler.m +61 -2
  48. package/ios/Handlers/RNRotationHandler.m +60 -1
  49. package/ios/Handlers/RNTapHandler.m +55 -8
  50. package/ios/RNGestureHandler.h +18 -4
  51. package/ios/RNGestureHandler.m +123 -13
  52. package/ios/RNGestureHandlerEvents.h +9 -0
  53. package/ios/RNGestureHandlerEvents.m +34 -0
  54. package/ios/RNGestureHandlerManager.h +7 -0
  55. package/ios/RNGestureHandlerManager.m +62 -34
  56. package/ios/RNGestureHandlerModule.m +39 -3
  57. package/ios/RNGestureHandlerPointerTracker.h +25 -0
  58. package/ios/RNGestureHandlerPointerTracker.m +237 -0
  59. package/ios/RNGestureHandlerRegistry.h +1 -0
  60. package/ios/RNGestureHandlerRegistry.m +10 -0
  61. package/ios/RNGestureHandlerStateManager.h +5 -0
  62. package/ios/RNManualActivationRecognizer.h +10 -0
  63. package/ios/RNManualActivationRecognizer.m +80 -0
  64. package/ios/RNRootViewGestureRecognizer.m +1 -1
  65. package/ios/RNTouchEventType.h +9 -0
  66. package/lib/commonjs/EventType.js +16 -0
  67. package/lib/commonjs/EventType.js.map +1 -0
  68. package/lib/commonjs/GestureHandlerRootView.android.js +1 -13
  69. package/lib/commonjs/GestureHandlerRootView.android.js.map +1 -1
  70. package/lib/commonjs/GestureHandlerRootView.js +11 -3
  71. package/lib/commonjs/GestureHandlerRootView.js.map +1 -1
  72. package/lib/commonjs/RNGestureHandlerModule.js +3 -1
  73. package/lib/commonjs/RNGestureHandlerModule.js.map +1 -1
  74. package/lib/commonjs/RNGestureHandlerModule.web.js +2 -2
  75. package/lib/commonjs/RNGestureHandlerModule.web.js.map +1 -1
  76. package/lib/commonjs/components/DrawerLayout.js +41 -37
  77. package/lib/commonjs/components/DrawerLayout.js.map +1 -1
  78. package/lib/commonjs/components/GestureButtons.js.map +1 -1
  79. package/lib/commonjs/components/GestureComponents.js +31 -12
  80. package/lib/commonjs/components/GestureComponents.js.map +1 -1
  81. package/lib/commonjs/components/Swipeable.js +10 -6
  82. package/lib/commonjs/components/Swipeable.js.map +1 -1
  83. package/lib/commonjs/components/touchables/GenericTouchable.js +2 -1
  84. package/lib/commonjs/components/touchables/GenericTouchable.js.map +1 -1
  85. package/lib/commonjs/components/touchables/TouchableOpacity.js +1 -1
  86. package/lib/commonjs/components/touchables/TouchableOpacity.js.map +1 -1
  87. package/lib/commonjs/gestureHandlerRootHOC.js +1 -1
  88. package/lib/commonjs/gestureHandlerRootHOC.js.map +1 -1
  89. package/lib/commonjs/handlers/FlingGestureHandler.js +23 -0
  90. package/lib/commonjs/handlers/FlingGestureHandler.js.map +1 -0
  91. package/lib/commonjs/handlers/ForceTouchGestureHandler.js +44 -0
  92. package/lib/commonjs/handlers/ForceTouchGestureHandler.js.map +1 -0
  93. package/lib/commonjs/handlers/LongPressGestureHandler.js +23 -0
  94. package/lib/commonjs/handlers/LongPressGestureHandler.js.map +1 -0
  95. package/lib/commonjs/handlers/NativeViewGestureHandler.js +6 -4
  96. package/lib/commonjs/handlers/NativeViewGestureHandler.js.map +1 -1
  97. package/lib/commonjs/handlers/PanGestureHandler.js +121 -0
  98. package/lib/commonjs/handlers/PanGestureHandler.js.map +1 -0
  99. package/lib/commonjs/handlers/PinchGestureHandler.js +21 -0
  100. package/lib/commonjs/handlers/PinchGestureHandler.js.map +1 -0
  101. package/lib/commonjs/handlers/RotationGestureHandler.js +21 -0
  102. package/lib/commonjs/handlers/RotationGestureHandler.js.map +1 -0
  103. package/lib/commonjs/handlers/TapGestureHandler.js +23 -0
  104. package/lib/commonjs/handlers/TapGestureHandler.js.map +1 -0
  105. package/lib/commonjs/handlers/createHandler.js +52 -83
  106. package/lib/commonjs/handlers/createHandler.js.map +1 -1
  107. package/lib/commonjs/handlers/gestureHandlerCommon.js +80 -0
  108. package/lib/commonjs/handlers/gestureHandlerCommon.js.map +1 -0
  109. package/lib/commonjs/handlers/gestures/GestureDetector.js +440 -0
  110. package/lib/commonjs/handlers/gestures/GestureDetector.js.map +1 -0
  111. package/lib/commonjs/handlers/gestures/eventReceiver.js +135 -0
  112. package/lib/commonjs/handlers/gestures/eventReceiver.js.map +1 -0
  113. package/lib/commonjs/handlers/gestures/flingGesture.js +34 -0
  114. package/lib/commonjs/handlers/gestures/flingGesture.js.map +1 -0
  115. package/lib/commonjs/handlers/gestures/forceTouchGesture.js +65 -0
  116. package/lib/commonjs/handlers/gestures/forceTouchGesture.js.map +1 -0
  117. package/lib/commonjs/handlers/gestures/gesture.js +193 -0
  118. package/lib/commonjs/handlers/gestures/gesture.js.map +1 -0
  119. package/lib/commonjs/handlers/gestures/gestureComposition.js +94 -0
  120. package/lib/commonjs/handlers/gestures/gestureComposition.js.map +1 -0
  121. package/lib/commonjs/handlers/gestures/gestureObjects.js +85 -0
  122. package/lib/commonjs/handlers/gestures/gestureObjects.js.map +1 -0
  123. package/lib/commonjs/handlers/gestures/gestureStateManager.js +58 -0
  124. package/lib/commonjs/handlers/gestures/gestureStateManager.js.map +1 -0
  125. package/lib/commonjs/handlers/gestures/longPressGesture.js +34 -0
  126. package/lib/commonjs/handlers/gestures/longPressGesture.js.map +1 -0
  127. package/lib/commonjs/handlers/gestures/manualGesture.js +31 -0
  128. package/lib/commonjs/handlers/gestures/manualGesture.js.map +1 -0
  129. package/lib/commonjs/handlers/gestures/nativeGesture.js +34 -0
  130. package/lib/commonjs/handlers/gestures/nativeGesture.js.map +1 -0
  131. package/lib/commonjs/handlers/gestures/panGesture.js +144 -0
  132. package/lib/commonjs/handlers/gestures/panGesture.js.map +1 -0
  133. package/lib/commonjs/handlers/gestures/pinchGesture.js +45 -0
  134. package/lib/commonjs/handlers/gestures/pinchGesture.js.map +1 -0
  135. package/lib/commonjs/handlers/gestures/reanimatedWrapper.js +24 -0
  136. package/lib/commonjs/handlers/gestures/reanimatedWrapper.js.map +1 -0
  137. package/lib/commonjs/handlers/gestures/rotationGesture.js +45 -0
  138. package/lib/commonjs/handlers/gestures/rotationGesture.js.map +1 -0
  139. package/lib/commonjs/handlers/gestures/tapGesture.js +59 -0
  140. package/lib/commonjs/handlers/gestures/tapGesture.js.map +1 -0
  141. package/lib/commonjs/handlers/handlersRegistry.js +31 -0
  142. package/lib/commonjs/handlers/handlersRegistry.js.map +1 -0
  143. package/lib/commonjs/index.js +146 -8
  144. package/lib/commonjs/index.js.map +1 -1
  145. package/lib/commonjs/init.js +13 -0
  146. package/lib/commonjs/init.js.map +1 -0
  147. package/lib/commonjs/mocks.js +31 -2
  148. package/lib/commonjs/mocks.js.map +1 -1
  149. package/lib/commonjs/utils.js +15 -0
  150. package/lib/commonjs/utils.js.map +1 -0
  151. package/lib/commonjs/web/Errors.js +1 -1
  152. package/lib/commonjs/web/Errors.js.map +1 -1
  153. package/lib/commonjs/web/GestureHandler.js +4 -6
  154. package/lib/commonjs/web/GestureHandler.js.map +1 -1
  155. package/lib/commonjs/web/NodeManager.js +8 -2
  156. package/lib/commonjs/web/NodeManager.js.map +1 -1
  157. package/lib/module/EventType.js +8 -0
  158. package/lib/module/EventType.js.map +1 -0
  159. package/lib/module/GestureHandlerRootView.android.js +2 -14
  160. package/lib/module/GestureHandlerRootView.android.js.map +1 -1
  161. package/lib/module/GestureHandlerRootView.js +5 -1
  162. package/lib/module/GestureHandlerRootView.js.map +1 -1
  163. package/lib/module/RNGestureHandlerModule.js +3 -1
  164. package/lib/module/RNGestureHandlerModule.js.map +1 -1
  165. package/lib/module/RNGestureHandlerModule.web.js +2 -2
  166. package/lib/module/RNGestureHandlerModule.web.js.map +1 -1
  167. package/lib/module/components/DrawerLayout.js +43 -40
  168. package/lib/module/components/DrawerLayout.js.map +1 -1
  169. package/lib/module/components/GestureButtons.js.map +1 -1
  170. package/lib/module/components/GestureComponents.js +29 -11
  171. package/lib/module/components/GestureComponents.js.map +1 -1
  172. package/lib/module/components/Swipeable.js +9 -6
  173. package/lib/module/components/Swipeable.js.map +1 -1
  174. package/lib/module/components/touchables/GenericTouchable.js +2 -1
  175. package/lib/module/components/touchables/GenericTouchable.js.map +1 -1
  176. package/lib/module/components/touchables/TouchableOpacity.js +1 -1
  177. package/lib/module/components/touchables/TouchableOpacity.js.map +1 -1
  178. package/lib/module/gestureHandlerRootHOC.js +1 -1
  179. package/lib/module/gestureHandlerRootHOC.js.map +1 -1
  180. package/lib/module/handlers/FlingGestureHandler.js +10 -0
  181. package/lib/module/handlers/FlingGestureHandler.js.map +1 -0
  182. package/lib/module/handlers/ForceTouchGestureHandler.js +29 -0
  183. package/lib/module/handlers/ForceTouchGestureHandler.js.map +1 -0
  184. package/lib/module/handlers/LongPressGestureHandler.js +10 -0
  185. package/lib/module/handlers/LongPressGestureHandler.js.map +1 -0
  186. package/lib/module/handlers/NativeViewGestureHandler.js +4 -3
  187. package/lib/module/handlers/NativeViewGestureHandler.js.map +1 -1
  188. package/lib/module/handlers/PanGestureHandler.js +106 -0
  189. package/lib/module/handlers/PanGestureHandler.js.map +1 -0
  190. package/lib/module/handlers/PinchGestureHandler.js +9 -0
  191. package/lib/module/handlers/PinchGestureHandler.js.map +1 -0
  192. package/lib/module/handlers/RotationGestureHandler.js +9 -0
  193. package/lib/module/handlers/RotationGestureHandler.js.map +1 -0
  194. package/lib/module/handlers/TapGestureHandler.js +10 -0
  195. package/lib/module/handlers/TapGestureHandler.js.map +1 -0
  196. package/lib/module/handlers/createHandler.js +41 -76
  197. package/lib/module/handlers/createHandler.js.map +1 -1
  198. package/lib/module/handlers/gestureHandlerCommon.js +66 -0
  199. package/lib/module/handlers/gestureHandlerCommon.js.map +1 -0
  200. package/lib/module/handlers/gestures/GestureDetector.js +402 -0
  201. package/lib/module/handlers/gestures/GestureDetector.js.map +1 -0
  202. package/lib/module/handlers/gestures/eventReceiver.js +120 -0
  203. package/lib/module/handlers/gestures/eventReceiver.js.map +1 -0
  204. package/lib/module/handlers/gestures/flingGesture.js +24 -0
  205. package/lib/module/handlers/gestures/flingGesture.js.map +1 -0
  206. package/lib/module/handlers/gestures/forceTouchGesture.js +56 -0
  207. package/lib/module/handlers/gestures/forceTouchGesture.js.map +1 -0
  208. package/lib/module/handlers/gestures/gesture.js +175 -0
  209. package/lib/module/handlers/gestures/gesture.js.map +1 -0
  210. package/lib/module/handlers/gestures/gestureComposition.js +79 -0
  211. package/lib/module/handlers/gestures/gestureComposition.js.map +1 -0
  212. package/lib/module/handlers/gestures/gestureObjects.js +67 -0
  213. package/lib/module/handlers/gestures/gestureObjects.js.map +1 -0
  214. package/lib/module/handlers/gestures/gestureStateManager.js +48 -0
  215. package/lib/module/handlers/gestures/gestureStateManager.js.map +1 -0
  216. package/lib/module/handlers/gestures/longPressGesture.js +24 -0
  217. package/lib/module/handlers/gestures/longPressGesture.js.map +1 -0
  218. package/lib/module/handlers/gestures/manualGesture.js +22 -0
  219. package/lib/module/handlers/gestures/manualGesture.js.map +1 -0
  220. package/lib/module/handlers/gestures/nativeGesture.js +24 -0
  221. package/lib/module/handlers/gestures/nativeGesture.js.map +1 -0
  222. package/lib/module/handlers/gestures/panGesture.js +135 -0
  223. package/lib/module/handlers/gestures/panGesture.js.map +1 -0
  224. package/lib/module/handlers/gestures/pinchGesture.js +36 -0
  225. package/lib/module/handlers/gestures/pinchGesture.js.map +1 -0
  226. package/lib/module/handlers/gestures/reanimatedWrapper.js +19 -0
  227. package/lib/module/handlers/gestures/reanimatedWrapper.js.map +1 -0
  228. package/lib/module/handlers/gestures/rotationGesture.js +36 -0
  229. package/lib/module/handlers/gestures/rotationGesture.js.map +1 -0
  230. package/lib/module/handlers/gestures/tapGesture.js +49 -0
  231. package/lib/module/handlers/gestures/tapGesture.js.map +1 -0
  232. package/lib/module/handlers/handlersRegistry.js +16 -0
  233. package/lib/module/handlers/handlersRegistry.js.map +1 -0
  234. package/lib/module/index.js +22 -1
  235. package/lib/module/index.js.map +1 -1
  236. package/lib/module/init.js +5 -0
  237. package/lib/module/init.js.map +1 -0
  238. package/lib/module/mocks.js +31 -2
  239. package/lib/module/mocks.js.map +1 -1
  240. package/lib/module/utils.js +8 -0
  241. package/lib/module/utils.js.map +1 -0
  242. package/lib/module/web/Errors.js +1 -1
  243. package/lib/module/web/Errors.js.map +1 -1
  244. package/lib/module/web/GestureHandler.js +4 -6
  245. package/lib/module/web/GestureHandler.js.map +1 -1
  246. package/lib/module/web/NodeManager.js +8 -2
  247. package/lib/module/web/NodeManager.js.map +1 -1
  248. package/lib/typescript/EventType.d.ts +8 -0
  249. package/lib/typescript/GestureHandlerRootView.android.d.ts +2 -4
  250. package/lib/typescript/GestureHandlerRootView.d.ts +5 -2
  251. package/lib/typescript/RNGestureHandlerModule.d.ts +1 -1
  252. package/lib/typescript/RNGestureHandlerModule.web.d.ts +1 -1
  253. package/lib/typescript/components/DrawerLayout.d.ts +50 -1
  254. package/lib/typescript/components/GestureButtons.d.ts +36 -0
  255. package/lib/typescript/components/GestureComponents.d.ts +8 -35
  256. package/lib/typescript/components/Swipeable.d.ts +73 -6
  257. package/lib/typescript/components/touchables/GenericTouchable.d.ts +2 -2
  258. package/lib/typescript/components/touchables/TouchableHighlight.d.ts +1 -0
  259. package/lib/typescript/components/touchables/TouchableOpacity.d.ts +1 -0
  260. package/lib/typescript/handlers/FlingGestureHandler.d.ts +33 -0
  261. package/lib/typescript/handlers/ForceTouchGestureHandler.d.ts +43 -0
  262. package/lib/typescript/handlers/LongPressGestureHandler.d.ts +55 -0
  263. package/lib/typescript/handlers/NativeViewGestureHandler.d.ts +19 -4
  264. package/lib/typescript/handlers/PanGestureHandler.d.ts +137 -0
  265. package/lib/typescript/handlers/PinchGestureHandler.d.ts +28 -0
  266. package/lib/typescript/handlers/RotationGestureHandler.d.ts +28 -0
  267. package/lib/typescript/handlers/TapGestureHandler.d.ts +56 -0
  268. package/lib/typescript/handlers/createHandler.d.ts +1 -1
  269. package/lib/typescript/handlers/gestureHandlerCommon.d.ts +62 -0
  270. package/lib/typescript/handlers/gestureHandlerTypesCompat.d.ts +8 -1
  271. package/lib/typescript/handlers/gestures/GestureDetector.d.ts +16 -0
  272. package/lib/typescript/handlers/gestures/eventReceiver.d.ts +2 -0
  273. package/lib/typescript/handlers/gestures/flingGesture.d.ts +9 -0
  274. package/lib/typescript/handlers/gestures/forceTouchGesture.d.ts +16 -0
  275. package/lib/typescript/handlers/gestures/gesture.d.ts +97 -0
  276. package/lib/typescript/handlers/gestures/gestureComposition.d.ts +21 -0
  277. package/lib/typescript/handlers/gestures/gestureObjects.d.ts +39 -0
  278. package/lib/typescript/handlers/gestures/gestureStateManager.d.ts +9 -0
  279. package/lib/typescript/handlers/gestures/longPressGesture.d.ts +9 -0
  280. package/lib/typescript/handlers/gestures/manualGesture.d.ts +7 -0
  281. package/lib/typescript/handlers/gestures/nativeGesture.d.ts +9 -0
  282. package/lib/typescript/handlers/gestures/panGesture.d.ts +26 -0
  283. package/lib/typescript/handlers/gestures/pinchGesture.d.ts +12 -0
  284. package/lib/typescript/handlers/gestures/reanimatedWrapper.d.ts +14 -0
  285. package/lib/typescript/handlers/gestures/rotationGesture.d.ts +12 -0
  286. package/lib/typescript/handlers/gestures/tapGesture.d.ts +14 -0
  287. package/lib/typescript/handlers/handlersRegistry.d.ts +6 -0
  288. package/lib/typescript/index.d.ts +29 -2
  289. package/lib/typescript/init.d.ts +1 -0
  290. package/lib/typescript/mocks.d.ts +21 -2
  291. package/lib/typescript/utils.d.ts +1 -0
  292. package/lib/typescript/web/FlingGestureHandler.d.ts +0 -1
  293. package/lib/typescript/web/GestureHandler.d.ts +0 -1
  294. package/lib/typescript/web/PanGestureHandler.d.ts +0 -1
  295. package/lib/typescript/web/PinchGestureHandler.d.ts +0 -1
  296. package/lib/typescript/web/PressGestureHandler.d.ts +0 -1
  297. package/lib/typescript/web/RotationGestureHandler.d.ts +0 -1
  298. package/lib/typescript/web/TapGestureHandler.d.ts +0 -1
  299. package/package.json +8 -5
  300. package/src/EventType.ts +10 -0
  301. package/src/GestureHandlerRootView.android.tsx +9 -25
  302. package/src/GestureHandlerRootView.tsx +11 -2
  303. package/src/RNGestureHandlerModule.ts +5 -1
  304. package/src/RNGestureHandlerModule.web.ts +1 -0
  305. package/src/components/DrawerLayout.tsx +114 -41
  306. package/src/components/GestureButtons.tsx +45 -5
  307. package/src/components/GestureComponents.tsx +47 -41
  308. package/src/components/Swipeable.tsx +108 -21
  309. package/src/components/touchables/GenericTouchable.tsx +2 -1
  310. package/src/components/touchables/TouchableOpacity.tsx +1 -1
  311. package/src/handlers/FlingGestureHandler.ts +57 -0
  312. package/src/handlers/ForceTouchGestureHandler.ts +83 -0
  313. package/src/handlers/LongPressGestureHandler.ts +84 -0
  314. package/src/handlers/NativeViewGestureHandler.ts +31 -7
  315. package/src/handlers/PanGestureHandler.ts +321 -0
  316. package/src/handlers/PinchGestureHandler.ts +46 -0
  317. package/src/handlers/RotationGestureHandler.ts +46 -0
  318. package/src/handlers/TapGestureHandler.ts +90 -0
  319. package/src/handlers/createHandler.ts +54 -79
  320. package/src/handlers/gestureHandlerCommon.ts +185 -0
  321. package/src/handlers/gestureHandlerTypesCompat.ts +19 -5
  322. package/src/handlers/gestures/GestureDetector.tsx +519 -0
  323. package/src/handlers/gestures/eventReceiver.ts +151 -0
  324. package/src/handlers/gestures/flingGesture.ts +27 -0
  325. package/src/handlers/gestures/forceTouchGesture.ts +74 -0
  326. package/src/handlers/gestures/gesture.ts +292 -0
  327. package/src/handlers/gestures/gestureComposition.ts +109 -0
  328. package/src/handlers/gestures/gestureObjects.ts +79 -0
  329. package/src/handlers/gestures/gestureStateManager.ts +60 -0
  330. package/src/handlers/gestures/longPressGesture.ts +27 -0
  331. package/src/handlers/gestures/manualGesture.ts +31 -0
  332. package/src/handlers/gestures/nativeGesture.ts +27 -0
  333. package/src/handlers/gestures/panGesture.ts +147 -0
  334. package/src/handlers/gestures/pinchGesture.ts +51 -0
  335. package/src/handlers/gestures/reanimatedWrapper.ts +45 -0
  336. package/src/handlers/gestures/rotationGesture.ts +51 -0
  337. package/src/handlers/gestures/tapGesture.ts +52 -0
  338. package/src/handlers/handlersRegistry.ts +22 -0
  339. package/src/index.ts +57 -17
  340. package/src/init.ts +5 -0
  341. package/src/mocks.ts +42 -2
  342. package/src/utils.ts +7 -0
  343. package/src/web/GestureHandler.ts +1 -2
  344. package/src/web/NodeManager.ts +5 -0
  345. package/android/lib/src/main/java/com/swmansion/gesturehandler/BaseGestureHandlerInteractionController.java +0 -23
  346. package/android/lib/src/main/java/com/swmansion/gesturehandler/FlingGestureHandler.java +0 -110
  347. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandler.java +0 -531
  348. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerInteractionController.java +0 -8
  349. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerOrchestrator.java +0 -543
  350. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerRegistry.java +0 -10
  351. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerRegistryImpl.java +0 -29
  352. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureUtils.java +0 -53
  353. package/android/lib/src/main/java/com/swmansion/gesturehandler/LongPressGestureHandler.java +0 -81
  354. package/android/lib/src/main/java/com/swmansion/gesturehandler/NativeViewGestureHandler.java +0 -110
  355. package/android/lib/src/main/java/com/swmansion/gesturehandler/OnTouchEventListener.java +0 -8
  356. package/android/lib/src/main/java/com/swmansion/gesturehandler/PanGestureHandler.java +0 -312
  357. package/android/lib/src/main/java/com/swmansion/gesturehandler/PinchGestureHandler.java +0 -109
  358. package/android/lib/src/main/java/com/swmansion/gesturehandler/RotationGestureDetector.java +0 -169
  359. package/android/lib/src/main/java/com/swmansion/gesturehandler/RotationGestureHandler.java +0 -96
  360. package/android/lib/src/main/java/com/swmansion/gesturehandler/TapGestureHandler.java +0 -172
  361. package/android/lib/src/main/java/com/swmansion/gesturehandler/ViewConfigurationHelper.java +0 -10
  362. package/android/src/main/java/com/facebook/react/views/modal/RNGHModalUtils.java +0 -21
  363. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.java +0 -296
  364. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEnabledRootView.java +0 -72
  365. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEvent.java +0 -77
  366. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEventDataExtractor.java +0 -8
  367. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerInteractionManager.java +0 -86
  368. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.java +0 -731
  369. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerPackage.java +0 -31
  370. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRegistry.java +0 -101
  371. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.java +0 -151
  372. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootInterface.java +0 -7
  373. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootView.java +0 -76
  374. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootViewManager.java +0 -49
  375. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerStateChangeEvent.java +0 -82
  376. package/android/src/main/java/com/swmansion/gesturehandler/react/RNViewConfigurationHelper.java +0 -61
  377. package/lib/commonjs/handlers/gestureHandlers.js +0 -236
  378. package/lib/commonjs/handlers/gestureHandlers.js.map +0 -1
  379. package/lib/module/handlers/gestureHandlers.js +0 -216
  380. package/lib/module/handlers/gestureHandlers.js.map +0 -1
  381. package/lib/typescript/handlers/gestureHandlers.d.ts +0 -158
  382. package/src/handlers/gestureHandlers.ts +0 -511
@@ -1,31 +0,0 @@
1
- package com.swmansion.gesturehandler.react;
2
-
3
- import com.facebook.react.ReactPackage;
4
- import com.facebook.react.bridge.NativeModule;
5
- import com.facebook.react.bridge.ReactApplicationContext;
6
- import com.facebook.react.common.MapBuilder;
7
- import com.facebook.react.uimanager.ThemedReactContext;
8
- import com.facebook.react.uimanager.ViewGroupManager;
9
- import com.facebook.react.uimanager.ViewManager;
10
- import com.facebook.react.views.view.ReactViewManager;
11
-
12
- import java.util.Arrays;
13
- import java.util.List;
14
- import java.util.Map;
15
-
16
- import androidx.annotation.Nullable;
17
-
18
- public class RNGestureHandlerPackage implements ReactPackage {
19
-
20
- @Override
21
- public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) {
22
- return Arrays.<NativeModule>asList(new RNGestureHandlerModule(reactContext));
23
- }
24
-
25
- @Override
26
- public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
27
- return Arrays.<ViewManager>asList(
28
- new RNGestureHandlerRootViewManager(),
29
- new RNGestureHandlerButtonViewManager());
30
- }
31
- }
@@ -1,101 +0,0 @@
1
- package com.swmansion.gesturehandler.react;
2
-
3
- import android.util.SparseArray;
4
- import android.view.View;
5
-
6
- import com.facebook.react.bridge.UiThreadUtil;
7
- import com.swmansion.gesturehandler.GestureHandler;
8
- import com.swmansion.gesturehandler.GestureHandlerRegistry;
9
-
10
- import java.util.ArrayList;
11
-
12
- import androidx.annotation.Nullable;
13
-
14
- public class RNGestureHandlerRegistry implements GestureHandlerRegistry {
15
-
16
- private final SparseArray<GestureHandler> mHandlers = new SparseArray<>();
17
- private final SparseArray<Integer> mAttachedTo = new SparseArray<>();
18
- private final SparseArray<ArrayList<GestureHandler>> mHandlersForView = new SparseArray<>();
19
-
20
- public synchronized void registerHandler(GestureHandler handler) {
21
- mHandlers.put(handler.getTag(), handler);
22
- }
23
-
24
- public synchronized @Nullable GestureHandler getHandler(int handlerTag) {
25
- return mHandlers.get(handlerTag);
26
- }
27
-
28
- public synchronized boolean attachHandlerToView(int handlerTag, int viewTag) {
29
- GestureHandler handler = mHandlers.get(handlerTag);
30
- if (handler != null) {
31
- detachHandler(handler);
32
- registerHandlerForViewWithTag(viewTag, handler);
33
- return true;
34
- } else {
35
- return false;
36
- }
37
- }
38
-
39
- private synchronized void registerHandlerForViewWithTag(int viewTag, GestureHandler handler) {
40
- if (mAttachedTo.get(handler.getTag()) != null) {
41
- throw new IllegalStateException("Handler " + handler + " already attached");
42
- }
43
- mAttachedTo.put(handler.getTag(), viewTag);
44
- ArrayList<GestureHandler> listToAdd = mHandlersForView.get(viewTag);
45
- if (listToAdd == null) {
46
- listToAdd = new ArrayList<>(1);
47
- listToAdd.add(handler);
48
- mHandlersForView.put(viewTag, listToAdd);
49
- } else {
50
- listToAdd.add(handler);
51
- }
52
- }
53
-
54
- private synchronized void detachHandler(final GestureHandler handler) {
55
- Integer attachedToView = mAttachedTo.get(handler.getTag());
56
- if (attachedToView != null) {
57
- mAttachedTo.remove(handler.getTag());
58
- ArrayList<GestureHandler> attachedHandlers = mHandlersForView.get(attachedToView);
59
- if (attachedHandlers != null) {
60
- attachedHandlers.remove(handler);
61
- if (attachedHandlers.size() == 0) {
62
- mHandlersForView.remove(attachedToView);
63
- }
64
- }
65
- }
66
- if (handler.getView() != null) {
67
- // Handler is in "prepared" state which means it is registered in the orchestrator and can
68
- // receive touch events. This means that before we remove it from the registry we need to
69
- // "cancel" it so that orchestrator does no longer keep a reference to it.
70
- UiThreadUtil.runOnUiThread(new Runnable() {
71
- @Override
72
- public void run() {
73
- handler.cancel();
74
- }
75
- });
76
- }
77
- }
78
-
79
- public synchronized void dropHandler(int handlerTag) {
80
- GestureHandler handler = mHandlers.get(handlerTag);
81
- if (handler != null) {
82
- detachHandler(handler);
83
- mHandlers.remove(handlerTag);
84
- }
85
- }
86
-
87
- public synchronized void dropAllHandlers() {
88
- mHandlers.clear();
89
- mAttachedTo.clear();
90
- mHandlersForView.clear();
91
- }
92
-
93
- public synchronized ArrayList<GestureHandler> getHandlersForViewWithTag(int viewTag) {
94
- return mHandlersForView.get(viewTag);
95
- }
96
-
97
- @Override
98
- public synchronized ArrayList<GestureHandler> getHandlersForView(View view) {
99
- return getHandlersForViewWithTag(view.getId());
100
- }
101
- }
@@ -1,151 +0,0 @@
1
- package com.swmansion.gesturehandler.react;
2
-
3
- import android.os.SystemClock;
4
- import android.util.Log;
5
- import android.view.MotionEvent;
6
- import android.view.ViewGroup;
7
- import android.view.ViewParent;
8
-
9
- import com.facebook.react.ReactRootView;
10
- import com.facebook.react.bridge.ReactContext;
11
- import com.facebook.react.bridge.UiThreadUtil;
12
- import com.facebook.react.common.ReactConstants;
13
- import com.facebook.react.views.modal.RNGHModalUtils;
14
- import com.swmansion.gesturehandler.GestureHandler;
15
- import com.swmansion.gesturehandler.GestureHandlerOrchestrator;
16
-
17
- public class RNGestureHandlerRootHelper {
18
-
19
- private static final float MIN_ALPHA_FOR_TOUCH = 0.1f;
20
-
21
- private final ReactContext mContext;
22
- private final GestureHandlerOrchestrator mOrchestrator;
23
- private final GestureHandler mJSGestureHandler;
24
- private final ViewGroup mRootView;
25
-
26
- private boolean mShouldIntercept = false;
27
- private boolean mPassingTouch = false;
28
-
29
- private static ViewGroup findRootViewTag(ViewGroup viewGroup) {
30
- UiThreadUtil.assertOnUiThread();
31
- ViewParent parent = viewGroup;
32
- while (parent != null && !(parent instanceof ReactRootView || RNGHModalUtils.isDialogRootViewGroup(parent))) {
33
- parent = parent.getParent();
34
- }
35
- if (parent == null) {
36
- throw new IllegalStateException("View " + viewGroup + " has not been mounted under" +
37
- " ReactRootView");
38
- }
39
- return (ViewGroup) parent;
40
- }
41
-
42
- public RNGestureHandlerRootHelper(ReactContext context, ViewGroup wrappedView) {
43
- UiThreadUtil.assertOnUiThread();
44
- int wrappedViewTag = wrappedView.getId();
45
- if (wrappedViewTag < 1) {
46
- throw new IllegalStateException("Expect view tag to be set for " + wrappedView);
47
- }
48
-
49
- RNGestureHandlerModule module = context.getNativeModule(RNGestureHandlerModule.class);
50
- RNGestureHandlerRegistry registry = module.getRegistry();
51
-
52
- mRootView = findRootViewTag(wrappedView);
53
-
54
- Log.i(
55
- ReactConstants.TAG,
56
- "[GESTURE HANDLER] Initialize gesture handler for root view " + mRootView);
57
-
58
- mContext = context;
59
- mOrchestrator = new GestureHandlerOrchestrator(
60
- wrappedView, registry, new RNViewConfigurationHelper());
61
- mOrchestrator.setMinimumAlphaForTraversal(MIN_ALPHA_FOR_TOUCH);
62
-
63
- mJSGestureHandler = new RootViewGestureHandler();
64
- mJSGestureHandler.setTag(-wrappedViewTag);
65
- registry.registerHandler(mJSGestureHandler);
66
- registry.attachHandlerToView(mJSGestureHandler.getTag(), wrappedViewTag);
67
-
68
- module.registerRootHelper(this);
69
- }
70
-
71
- public void tearDown() {
72
- Log.i(
73
- ReactConstants.TAG,
74
- "[GESTURE HANDLER] Tearing down gesture handler registered for root view " + mRootView);
75
- RNGestureHandlerModule module = mContext.getNativeModule(RNGestureHandlerModule.class);
76
- module.getRegistry().dropHandler(mJSGestureHandler.getTag());
77
- module.unregisterRootHelper(this);
78
- }
79
-
80
- public ViewGroup getRootView() {
81
- return mRootView;
82
- }
83
-
84
- private class RootViewGestureHandler extends GestureHandler {
85
- @Override
86
- protected void onHandle(MotionEvent event) {
87
- int currentState = getState();
88
- if (currentState == STATE_UNDETERMINED) {
89
- begin();
90
- mShouldIntercept = false;
91
- }
92
- if (event.getActionMasked() == MotionEvent.ACTION_UP) {
93
- end();
94
- }
95
- }
96
-
97
- @Override
98
- protected void onCancel() {
99
- mShouldIntercept = true;
100
- long time = SystemClock.uptimeMillis();
101
- MotionEvent event = MotionEvent.obtain(time, time, MotionEvent.ACTION_CANCEL, 0, 0, 0);
102
- event.setAction(MotionEvent.ACTION_CANCEL);
103
- if (mRootView instanceof ReactRootView) {
104
- ((ReactRootView) mRootView).onChildStartedNativeGesture(event);
105
- } else {
106
- RNGHModalUtils.dialogRootViewGroupOnChildStartedNativeGesture(mRootView, event);
107
- }
108
- }
109
- }
110
-
111
- public void requestDisallowInterceptTouchEvent(boolean disallowIntercept) {
112
- // If this method gets called it means that some native view is attempting to grab lock for
113
- // touch event delivery. In that case we cancel all gesture recognizers
114
- if (mOrchestrator != null && !mPassingTouch) {
115
- // if we are in the process of delivering touch events via GH orchestrator, we don't want to
116
- // treat it as a native gesture capturing the lock
117
- tryCancelAllHandlers();
118
- }
119
- }
120
-
121
- public boolean dispatchTouchEvent(MotionEvent ev) {
122
- // We mark `mPassingTouch` before we get into `mOrchestrator.onTouchEvent` so that we can tell
123
- // if `requestDisallow` has been called as a result of a normal gesture handling process or
124
- // as a result of one of the gesture handlers activating
125
- mPassingTouch = true;
126
- mOrchestrator.onTouchEvent(ev);
127
- mPassingTouch = false;
128
-
129
- return mShouldIntercept;
130
- }
131
-
132
- private void tryCancelAllHandlers() {
133
- // In order to cancel handlers we activate handler that is hooked to the root view
134
- if (mJSGestureHandler != null && mJSGestureHandler.getState() == GestureHandler.STATE_BEGAN) {
135
- // Try activate main JS handler
136
- mJSGestureHandler.activate();
137
- mJSGestureHandler.end();
138
- }
139
- }
140
-
141
- /*package*/ void handleSetJSResponder(final int viewTag, final boolean blockNativeResponder) {
142
- if (blockNativeResponder) {
143
- UiThreadUtil.runOnUiThread(new Runnable() {
144
- @Override
145
- public void run() {
146
- tryCancelAllHandlers();
147
- }
148
- });
149
- }
150
- }
151
- }
@@ -1,7 +0,0 @@
1
- package com.swmansion.gesturehandler.react;
2
-
3
- import androidx.annotation.Nullable;
4
-
5
- public interface RNGestureHandlerRootInterface {
6
- @Nullable RNGestureHandlerRootHelper getRootHelper();
7
- }
@@ -1,76 +0,0 @@
1
- package com.swmansion.gesturehandler.react;
2
-
3
- import android.util.Log;
4
- import android.content.Context;
5
- import android.view.MotionEvent;
6
- import android.view.ViewGroup;
7
- import android.view.ViewParent;
8
-
9
- import com.facebook.infer.annotation.Assertions;
10
- import com.facebook.react.bridge.ReactContext;
11
- import com.facebook.react.bridge.UiThreadUtil;
12
- import com.facebook.react.common.ReactConstants;
13
- import com.facebook.react.views.view.ReactViewGroup;
14
-
15
- import androidx.annotation.Nullable;
16
-
17
- public class RNGestureHandlerRootView extends ReactViewGroup {
18
-
19
- private static boolean hasGestureHandlerEnabledRootView(ViewGroup viewGroup) {
20
- UiThreadUtil.assertOnUiThread();
21
- ViewParent parent = viewGroup.getParent();
22
- while (parent != null) {
23
- if (parent instanceof RNGestureHandlerEnabledRootView || parent instanceof RNGestureHandlerRootView) {
24
- return true;
25
- }
26
- parent = parent.getParent();
27
- }
28
- return false;
29
- }
30
-
31
- private boolean mEnabled;
32
- private @Nullable RNGestureHandlerRootHelper mRootHelper;
33
-
34
- public RNGestureHandlerRootView(Context context) {
35
- super(context);
36
- }
37
-
38
- @Override
39
- protected void onAttachedToWindow() {
40
- super.onAttachedToWindow();
41
-
42
- mEnabled = !hasGestureHandlerEnabledRootView(this);
43
-
44
- if (!mEnabled) {
45
- Log.i(
46
- ReactConstants.TAG,
47
- "[GESTURE HANDLER] Gesture handler is already enabled for a parent view");
48
- }
49
-
50
- if (mEnabled && mRootHelper == null) {
51
- mRootHelper = new RNGestureHandlerRootHelper((ReactContext) getContext(), this);
52
- }
53
- }
54
-
55
- public void tearDown() {
56
- if (mRootHelper != null) {
57
- mRootHelper.tearDown();
58
- }
59
- }
60
-
61
- @Override
62
- public boolean dispatchTouchEvent(MotionEvent ev) {
63
- if (mEnabled && Assertions.assertNotNull(mRootHelper).dispatchTouchEvent(ev)) {
64
- return true;
65
- }
66
- return super.dispatchTouchEvent(ev);
67
- }
68
-
69
- @Override
70
- public void requestDisallowInterceptTouchEvent(boolean disallowIntercept) {
71
- if (mEnabled) {
72
- Assertions.assertNotNull(mRootHelper).requestDisallowInterceptTouchEvent(disallowIntercept);
73
- }
74
- super.requestDisallowInterceptTouchEvent(disallowIntercept);
75
- }
76
- }
@@ -1,49 +0,0 @@
1
- package com.swmansion.gesturehandler.react;
2
-
3
- import com.facebook.react.common.MapBuilder;
4
- import com.facebook.react.module.annotations.ReactModule;
5
- import com.facebook.react.uimanager.ThemedReactContext;
6
- import com.facebook.react.uimanager.ViewGroupManager;
7
-
8
- import java.util.Map;
9
-
10
- import androidx.annotation.Nullable;
11
-
12
- /**
13
- * React native's view manager used for creating instances of {@link }RNGestureHandlerRootView}. It
14
- * is being used by projects using react-native-navigation where for each screen new root view need
15
- * to be provided.
16
- */
17
- @ReactModule(name = RNGestureHandlerRootViewManager.REACT_CLASS)
18
- public class RNGestureHandlerRootViewManager extends ViewGroupManager<RNGestureHandlerRootView> {
19
-
20
- public static final String REACT_CLASS = "GestureHandlerRootView";
21
-
22
- @Override
23
- public String getName() {
24
- return REACT_CLASS;
25
- }
26
-
27
- @Override
28
- protected RNGestureHandlerRootView createViewInstance(ThemedReactContext reactContext) {
29
- return new RNGestureHandlerRootView(reactContext);
30
- }
31
-
32
- @Override
33
- public void onDropViewInstance(RNGestureHandlerRootView view) {
34
- view.tearDown();
35
- }
36
-
37
- /**
38
- * The following event configuration is necessary even if you are not using
39
- * GestureHandlerRootView component directly.
40
- */
41
- @Override
42
- public @Nullable Map getExportedCustomDirectEventTypeConstants() {
43
- return MapBuilder.of(
44
- RNGestureHandlerEvent.EVENT_NAME,
45
- MapBuilder.of("registrationName", RNGestureHandlerEvent.EVENT_NAME),
46
- RNGestureHandlerStateChangeEvent.EVENT_NAME,
47
- MapBuilder.of("registrationName", RNGestureHandlerStateChangeEvent.EVENT_NAME));
48
- }
49
- }
@@ -1,82 +0,0 @@
1
- package com.swmansion.gesturehandler.react;
2
-
3
- import androidx.core.util.Pools;
4
-
5
- import com.facebook.react.bridge.Arguments;
6
- import com.facebook.react.bridge.WritableMap;
7
- import com.facebook.react.uimanager.events.Event;
8
- import com.facebook.react.uimanager.events.RCTEventEmitter;
9
- import com.swmansion.gesturehandler.GestureHandler;
10
-
11
- import androidx.annotation.Nullable;
12
-
13
- public class RNGestureHandlerStateChangeEvent extends Event<RNGestureHandlerStateChangeEvent>{
14
-
15
- public static final String EVENT_NAME = "onGestureHandlerStateChange";
16
-
17
- private static final int TOUCH_EVENTS_POOL_SIZE = 7; // magic
18
-
19
- private static final Pools.SynchronizedPool<RNGestureHandlerStateChangeEvent> EVENTS_POOL =
20
- new Pools.SynchronizedPool<>(TOUCH_EVENTS_POOL_SIZE);
21
-
22
- public static RNGestureHandlerStateChangeEvent obtain(
23
- GestureHandler handler,
24
- int newState,
25
- int oldState,
26
- @Nullable RNGestureHandlerEventDataExtractor dataExtractor) {
27
- RNGestureHandlerStateChangeEvent event = EVENTS_POOL.acquire();
28
- if (event == null) {
29
- event = new RNGestureHandlerStateChangeEvent();
30
- }
31
- event.init(handler, newState, oldState, dataExtractor);
32
- return event;
33
- }
34
-
35
- private WritableMap mExtraData;
36
-
37
- private RNGestureHandlerStateChangeEvent() {
38
- }
39
-
40
- private void init(
41
- GestureHandler handler,
42
- int newState,
43
- int oldState,
44
- @Nullable RNGestureHandlerEventDataExtractor dataExtractor) {
45
- super.init(handler.getView().getId());
46
- mExtraData = Arguments.createMap();
47
- if (dataExtractor != null) {
48
- dataExtractor.extractEventData(handler, mExtraData);
49
- }
50
- mExtraData.putInt("handlerTag", handler.getTag());
51
- mExtraData.putInt("state", newState);
52
- mExtraData.putInt("oldState", oldState);
53
- }
54
-
55
- @Override
56
- public void onDispose() {
57
- mExtraData = null;
58
- EVENTS_POOL.release(this);
59
- }
60
-
61
- @Override
62
- public String getEventName() {
63
- return EVENT_NAME;
64
- }
65
-
66
- @Override
67
- public boolean canCoalesce() {
68
- // TODO: coalescing
69
- return false;
70
- }
71
-
72
- @Override
73
- public short getCoalescingKey() {
74
- // TODO: coalescing
75
- return 0;
76
- }
77
-
78
- @Override
79
- public void dispatch(RCTEventEmitter rctEventEmitter) {
80
- rctEventEmitter.receiveEvent(getViewTag(), EVENT_NAME, mExtraData);
81
- }
82
- }
@@ -1,61 +0,0 @@
1
- package com.swmansion.gesturehandler.react;
2
-
3
- import android.os.Build;
4
- import android.view.View;
5
- import android.view.ViewGroup;
6
-
7
- import com.facebook.react.uimanager.PointerEvents;
8
- import com.facebook.react.uimanager.ReactPointerEventsView;
9
- import com.facebook.react.views.view.ReactViewGroup;
10
- import com.swmansion.gesturehandler.PointerEventsConfig;
11
- import com.swmansion.gesturehandler.ViewConfigurationHelper;
12
-
13
- public class RNViewConfigurationHelper implements ViewConfigurationHelper {
14
-
15
- @Override
16
- public PointerEventsConfig getPointerEventsConfigForView(View view) {
17
- PointerEvents pointerEvents;
18
- pointerEvents = view instanceof ReactPointerEventsView ?
19
- ((ReactPointerEventsView) view).getPointerEvents() :
20
- PointerEvents.AUTO;
21
-
22
- // Views that are disabled should never be the target of pointer events. However, their children
23
- // can be because some views (SwipeRefreshLayout) use enabled but still have children that can
24
- // be valid targets.
25
- if (!view.isEnabled()) {
26
- if (pointerEvents == PointerEvents.AUTO) {
27
- return PointerEventsConfig.BOX_NONE;
28
- } else if (pointerEvents == PointerEvents.BOX_ONLY) {
29
- return PointerEventsConfig.NONE;
30
- }
31
- }
32
-
33
- switch (pointerEvents) {
34
- case BOX_ONLY: return PointerEventsConfig.BOX_ONLY;
35
- case BOX_NONE: return PointerEventsConfig.BOX_NONE;
36
- case NONE: return PointerEventsConfig.NONE;
37
- }
38
-
39
- return PointerEventsConfig.AUTO;
40
- }
41
-
42
- @Override
43
- public View getChildInDrawingOrderAtIndex(ViewGroup parent, int index) {
44
- if (parent instanceof ReactViewGroup) {
45
- return parent.getChildAt(((ReactViewGroup) parent).getZIndexMappedChildIndex(index));
46
- }
47
- return parent.getChildAt(index);
48
- }
49
-
50
- @Override
51
- public boolean isViewClippingChildren(ViewGroup view) {
52
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2 && !view.getClipChildren()) {
53
- if (view instanceof ReactViewGroup) {
54
- String overflow = ((ReactViewGroup) view).getOverflow();
55
- return "hidden".equals(overflow);
56
- }
57
- return false;
58
- }
59
- return true;
60
- }
61
- }