react-native-gesture-handler 1.10.3 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (384) hide show
  1. package/README.md +10 -8
  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 +744 -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 +596 -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 +292 -0
  19. package/android/lib/src/main/java/com/swmansion/gesturehandler/PinchGestureHandler.kt +90 -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 +81 -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/RNGestureHandler.xcodeproj/project.xcworkspace/xcuserdata/jakubpiasecki.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  53. package/ios/RNGestureHandler.xcodeproj/xcuserdata/jakubpiasecki.xcuserdatad/xcschemes/xcschememanagement.plist +19 -0
  54. package/ios/RNGestureHandlerEvents.h +9 -0
  55. package/ios/RNGestureHandlerEvents.m +34 -0
  56. package/ios/RNGestureHandlerManager.h +7 -0
  57. package/ios/RNGestureHandlerManager.m +62 -34
  58. package/ios/RNGestureHandlerModule.m +39 -3
  59. package/ios/RNGestureHandlerPointerTracker.h +25 -0
  60. package/ios/RNGestureHandlerPointerTracker.m +237 -0
  61. package/ios/RNGestureHandlerRegistry.h +1 -0
  62. package/ios/RNGestureHandlerRegistry.m +10 -0
  63. package/ios/RNGestureHandlerStateManager.h +5 -0
  64. package/ios/RNManualActivationRecognizer.h +10 -0
  65. package/ios/RNManualActivationRecognizer.m +80 -0
  66. package/ios/RNRootViewGestureRecognizer.m +1 -1
  67. package/ios/RNTouchEventType.h +9 -0
  68. package/lib/commonjs/EventType.js +16 -0
  69. package/lib/commonjs/EventType.js.map +1 -0
  70. package/lib/commonjs/GestureHandlerRootView.android.js +1 -13
  71. package/lib/commonjs/GestureHandlerRootView.android.js.map +1 -1
  72. package/lib/commonjs/GestureHandlerRootView.js +11 -3
  73. package/lib/commonjs/GestureHandlerRootView.js.map +1 -1
  74. package/lib/commonjs/RNGestureHandlerModule.js +3 -1
  75. package/lib/commonjs/RNGestureHandlerModule.js.map +1 -1
  76. package/lib/commonjs/RNGestureHandlerModule.web.js +2 -2
  77. package/lib/commonjs/RNGestureHandlerModule.web.js.map +1 -1
  78. package/lib/commonjs/components/DrawerLayout.js +41 -37
  79. package/lib/commonjs/components/DrawerLayout.js.map +1 -1
  80. package/lib/commonjs/components/GestureButtons.js.map +1 -1
  81. package/lib/commonjs/components/GestureComponents.js +31 -12
  82. package/lib/commonjs/components/GestureComponents.js.map +1 -1
  83. package/lib/commonjs/components/Swipeable.js +10 -6
  84. package/lib/commonjs/components/Swipeable.js.map +1 -1
  85. package/lib/commonjs/components/touchables/GenericTouchable.js +2 -1
  86. package/lib/commonjs/components/touchables/GenericTouchable.js.map +1 -1
  87. package/lib/commonjs/components/touchables/TouchableOpacity.js +1 -1
  88. package/lib/commonjs/components/touchables/TouchableOpacity.js.map +1 -1
  89. package/lib/commonjs/gestureHandlerRootHOC.js +1 -1
  90. package/lib/commonjs/gestureHandlerRootHOC.js.map +1 -1
  91. package/lib/commonjs/handlers/FlingGestureHandler.js +23 -0
  92. package/lib/commonjs/handlers/FlingGestureHandler.js.map +1 -0
  93. package/lib/commonjs/handlers/ForceTouchGestureHandler.js +44 -0
  94. package/lib/commonjs/handlers/ForceTouchGestureHandler.js.map +1 -0
  95. package/lib/commonjs/handlers/LongPressGestureHandler.js +23 -0
  96. package/lib/commonjs/handlers/LongPressGestureHandler.js.map +1 -0
  97. package/lib/commonjs/handlers/NativeViewGestureHandler.js +6 -4
  98. package/lib/commonjs/handlers/NativeViewGestureHandler.js.map +1 -1
  99. package/lib/commonjs/handlers/PanGestureHandler.js +121 -0
  100. package/lib/commonjs/handlers/PanGestureHandler.js.map +1 -0
  101. package/lib/commonjs/handlers/PinchGestureHandler.js +21 -0
  102. package/lib/commonjs/handlers/PinchGestureHandler.js.map +1 -0
  103. package/lib/commonjs/handlers/RotationGestureHandler.js +21 -0
  104. package/lib/commonjs/handlers/RotationGestureHandler.js.map +1 -0
  105. package/lib/commonjs/handlers/TapGestureHandler.js +23 -0
  106. package/lib/commonjs/handlers/TapGestureHandler.js.map +1 -0
  107. package/lib/commonjs/handlers/createHandler.js +65 -84
  108. package/lib/commonjs/handlers/createHandler.js.map +1 -1
  109. package/lib/commonjs/handlers/gestureHandlerCommon.js +80 -0
  110. package/lib/commonjs/handlers/gestureHandlerCommon.js.map +1 -0
  111. package/lib/commonjs/handlers/gestures/GestureDetector.js +440 -0
  112. package/lib/commonjs/handlers/gestures/GestureDetector.js.map +1 -0
  113. package/lib/commonjs/handlers/gestures/eventReceiver.js +135 -0
  114. package/lib/commonjs/handlers/gestures/eventReceiver.js.map +1 -0
  115. package/lib/commonjs/handlers/gestures/flingGesture.js +34 -0
  116. package/lib/commonjs/handlers/gestures/flingGesture.js.map +1 -0
  117. package/lib/commonjs/handlers/gestures/forceTouchGesture.js +65 -0
  118. package/lib/commonjs/handlers/gestures/forceTouchGesture.js.map +1 -0
  119. package/lib/commonjs/handlers/gestures/gesture.js +193 -0
  120. package/lib/commonjs/handlers/gestures/gesture.js.map +1 -0
  121. package/lib/commonjs/handlers/gestures/gestureComposition.js +94 -0
  122. package/lib/commonjs/handlers/gestures/gestureComposition.js.map +1 -0
  123. package/lib/commonjs/handlers/gestures/gestureObjects.js +85 -0
  124. package/lib/commonjs/handlers/gestures/gestureObjects.js.map +1 -0
  125. package/lib/commonjs/handlers/gestures/gestureStateManager.js +58 -0
  126. package/lib/commonjs/handlers/gestures/gestureStateManager.js.map +1 -0
  127. package/lib/commonjs/handlers/gestures/longPressGesture.js +34 -0
  128. package/lib/commonjs/handlers/gestures/longPressGesture.js.map +1 -0
  129. package/lib/commonjs/handlers/gestures/manualGesture.js +31 -0
  130. package/lib/commonjs/handlers/gestures/manualGesture.js.map +1 -0
  131. package/lib/commonjs/handlers/gestures/nativeGesture.js +34 -0
  132. package/lib/commonjs/handlers/gestures/nativeGesture.js.map +1 -0
  133. package/lib/commonjs/handlers/gestures/panGesture.js +144 -0
  134. package/lib/commonjs/handlers/gestures/panGesture.js.map +1 -0
  135. package/lib/commonjs/handlers/gestures/pinchGesture.js +45 -0
  136. package/lib/commonjs/handlers/gestures/pinchGesture.js.map +1 -0
  137. package/lib/commonjs/handlers/gestures/reanimatedWrapper.js +24 -0
  138. package/lib/commonjs/handlers/gestures/reanimatedWrapper.js.map +1 -0
  139. package/lib/commonjs/handlers/gestures/rotationGesture.js +45 -0
  140. package/lib/commonjs/handlers/gestures/rotationGesture.js.map +1 -0
  141. package/lib/commonjs/handlers/gestures/tapGesture.js +59 -0
  142. package/lib/commonjs/handlers/gestures/tapGesture.js.map +1 -0
  143. package/lib/commonjs/handlers/handlersRegistry.js +31 -0
  144. package/lib/commonjs/handlers/handlersRegistry.js.map +1 -0
  145. package/lib/commonjs/index.js +40 -8
  146. package/lib/commonjs/index.js.map +1 -1
  147. package/lib/commonjs/init.js +13 -0
  148. package/lib/commonjs/init.js.map +1 -0
  149. package/lib/commonjs/mocks.js +31 -2
  150. package/lib/commonjs/mocks.js.map +1 -1
  151. package/lib/commonjs/utils.js +15 -0
  152. package/lib/commonjs/utils.js.map +1 -0
  153. package/lib/commonjs/web/Errors.js +1 -1
  154. package/lib/commonjs/web/Errors.js.map +1 -1
  155. package/lib/commonjs/web/GestureHandler.js +4 -6
  156. package/lib/commonjs/web/GestureHandler.js.map +1 -1
  157. package/lib/commonjs/web/NodeManager.js +8 -2
  158. package/lib/commonjs/web/NodeManager.js.map +1 -1
  159. package/lib/module/EventType.js +8 -0
  160. package/lib/module/EventType.js.map +1 -0
  161. package/lib/module/GestureHandlerRootView.android.js +2 -14
  162. package/lib/module/GestureHandlerRootView.android.js.map +1 -1
  163. package/lib/module/GestureHandlerRootView.js +5 -1
  164. package/lib/module/GestureHandlerRootView.js.map +1 -1
  165. package/lib/module/RNGestureHandlerModule.js +3 -1
  166. package/lib/module/RNGestureHandlerModule.js.map +1 -1
  167. package/lib/module/RNGestureHandlerModule.web.js +2 -2
  168. package/lib/module/RNGestureHandlerModule.web.js.map +1 -1
  169. package/lib/module/components/DrawerLayout.js +43 -40
  170. package/lib/module/components/DrawerLayout.js.map +1 -1
  171. package/lib/module/components/GestureButtons.js.map +1 -1
  172. package/lib/module/components/GestureComponents.js +29 -11
  173. package/lib/module/components/GestureComponents.js.map +1 -1
  174. package/lib/module/components/Swipeable.js +9 -6
  175. package/lib/module/components/Swipeable.js.map +1 -1
  176. package/lib/module/components/touchables/GenericTouchable.js +2 -1
  177. package/lib/module/components/touchables/GenericTouchable.js.map +1 -1
  178. package/lib/module/components/touchables/TouchableOpacity.js +1 -1
  179. package/lib/module/components/touchables/TouchableOpacity.js.map +1 -1
  180. package/lib/module/gestureHandlerRootHOC.js +1 -1
  181. package/lib/module/gestureHandlerRootHOC.js.map +1 -1
  182. package/lib/module/handlers/FlingGestureHandler.js +10 -0
  183. package/lib/module/handlers/FlingGestureHandler.js.map +1 -0
  184. package/lib/module/handlers/ForceTouchGestureHandler.js +29 -0
  185. package/lib/module/handlers/ForceTouchGestureHandler.js.map +1 -0
  186. package/lib/module/handlers/LongPressGestureHandler.js +10 -0
  187. package/lib/module/handlers/LongPressGestureHandler.js.map +1 -0
  188. package/lib/module/handlers/NativeViewGestureHandler.js +4 -3
  189. package/lib/module/handlers/NativeViewGestureHandler.js.map +1 -1
  190. package/lib/module/handlers/PanGestureHandler.js +106 -0
  191. package/lib/module/handlers/PanGestureHandler.js.map +1 -0
  192. package/lib/module/handlers/PinchGestureHandler.js +9 -0
  193. package/lib/module/handlers/PinchGestureHandler.js.map +1 -0
  194. package/lib/module/handlers/RotationGestureHandler.js +9 -0
  195. package/lib/module/handlers/RotationGestureHandler.js.map +1 -0
  196. package/lib/module/handlers/TapGestureHandler.js +10 -0
  197. package/lib/module/handlers/TapGestureHandler.js.map +1 -0
  198. package/lib/module/handlers/createHandler.js +55 -77
  199. package/lib/module/handlers/createHandler.js.map +1 -1
  200. package/lib/module/handlers/gestureHandlerCommon.js +66 -0
  201. package/lib/module/handlers/gestureHandlerCommon.js.map +1 -0
  202. package/lib/module/handlers/gestures/GestureDetector.js +402 -0
  203. package/lib/module/handlers/gestures/GestureDetector.js.map +1 -0
  204. package/lib/module/handlers/gestures/eventReceiver.js +120 -0
  205. package/lib/module/handlers/gestures/eventReceiver.js.map +1 -0
  206. package/lib/module/handlers/gestures/flingGesture.js +24 -0
  207. package/lib/module/handlers/gestures/flingGesture.js.map +1 -0
  208. package/lib/module/handlers/gestures/forceTouchGesture.js +56 -0
  209. package/lib/module/handlers/gestures/forceTouchGesture.js.map +1 -0
  210. package/lib/module/handlers/gestures/gesture.js +175 -0
  211. package/lib/module/handlers/gestures/gesture.js.map +1 -0
  212. package/lib/module/handlers/gestures/gestureComposition.js +79 -0
  213. package/lib/module/handlers/gestures/gestureComposition.js.map +1 -0
  214. package/lib/module/handlers/gestures/gestureObjects.js +67 -0
  215. package/lib/module/handlers/gestures/gestureObjects.js.map +1 -0
  216. package/lib/module/handlers/gestures/gestureStateManager.js +48 -0
  217. package/lib/module/handlers/gestures/gestureStateManager.js.map +1 -0
  218. package/lib/module/handlers/gestures/longPressGesture.js +24 -0
  219. package/lib/module/handlers/gestures/longPressGesture.js.map +1 -0
  220. package/lib/module/handlers/gestures/manualGesture.js +22 -0
  221. package/lib/module/handlers/gestures/manualGesture.js.map +1 -0
  222. package/lib/module/handlers/gestures/nativeGesture.js +24 -0
  223. package/lib/module/handlers/gestures/nativeGesture.js.map +1 -0
  224. package/lib/module/handlers/gestures/panGesture.js +135 -0
  225. package/lib/module/handlers/gestures/panGesture.js.map +1 -0
  226. package/lib/module/handlers/gestures/pinchGesture.js +36 -0
  227. package/lib/module/handlers/gestures/pinchGesture.js.map +1 -0
  228. package/lib/module/handlers/gestures/reanimatedWrapper.js +19 -0
  229. package/lib/module/handlers/gestures/reanimatedWrapper.js.map +1 -0
  230. package/lib/module/handlers/gestures/rotationGesture.js +36 -0
  231. package/lib/module/handlers/gestures/rotationGesture.js.map +1 -0
  232. package/lib/module/handlers/gestures/tapGesture.js +49 -0
  233. package/lib/module/handlers/gestures/tapGesture.js.map +1 -0
  234. package/lib/module/handlers/handlersRegistry.js +16 -0
  235. package/lib/module/handlers/handlersRegistry.js.map +1 -0
  236. package/lib/module/index.js +11 -1
  237. package/lib/module/index.js.map +1 -1
  238. package/lib/module/init.js +5 -0
  239. package/lib/module/init.js.map +1 -0
  240. package/lib/module/mocks.js +31 -2
  241. package/lib/module/mocks.js.map +1 -1
  242. package/lib/module/utils.js +8 -0
  243. package/lib/module/utils.js.map +1 -0
  244. package/lib/module/web/Errors.js +1 -1
  245. package/lib/module/web/Errors.js.map +1 -1
  246. package/lib/module/web/GestureHandler.js +4 -6
  247. package/lib/module/web/GestureHandler.js.map +1 -1
  248. package/lib/module/web/NodeManager.js +8 -2
  249. package/lib/module/web/NodeManager.js.map +1 -1
  250. package/lib/typescript/EventType.d.ts +8 -0
  251. package/lib/typescript/GestureHandlerRootView.android.d.ts +2 -4
  252. package/lib/typescript/GestureHandlerRootView.d.ts +5 -2
  253. package/lib/typescript/RNGestureHandlerModule.d.ts +1 -1
  254. package/lib/typescript/RNGestureHandlerModule.web.d.ts +1 -1
  255. package/lib/typescript/components/DrawerLayout.d.ts +50 -1
  256. package/lib/typescript/components/GestureButtons.d.ts +36 -0
  257. package/lib/typescript/components/GestureComponents.d.ts +8 -35
  258. package/lib/typescript/components/Swipeable.d.ts +73 -6
  259. package/lib/typescript/components/touchables/GenericTouchable.d.ts +2 -2
  260. package/lib/typescript/components/touchables/TouchableHighlight.d.ts +1 -0
  261. package/lib/typescript/components/touchables/TouchableOpacity.d.ts +1 -0
  262. package/lib/typescript/handlers/FlingGestureHandler.d.ts +33 -0
  263. package/lib/typescript/handlers/ForceTouchGestureHandler.d.ts +43 -0
  264. package/lib/typescript/handlers/LongPressGestureHandler.d.ts +55 -0
  265. package/lib/typescript/handlers/NativeViewGestureHandler.d.ts +19 -4
  266. package/lib/typescript/handlers/PanGestureHandler.d.ts +137 -0
  267. package/lib/typescript/handlers/PinchGestureHandler.d.ts +28 -0
  268. package/lib/typescript/handlers/RotationGestureHandler.d.ts +28 -0
  269. package/lib/typescript/handlers/TapGestureHandler.d.ts +56 -0
  270. package/lib/typescript/handlers/createHandler.d.ts +1 -1
  271. package/lib/typescript/handlers/gestureHandlerCommon.d.ts +62 -0
  272. package/lib/typescript/handlers/gestureHandlerTypesCompat.d.ts +8 -1
  273. package/lib/typescript/handlers/gestures/GestureDetector.d.ts +16 -0
  274. package/lib/typescript/handlers/gestures/eventReceiver.d.ts +2 -0
  275. package/lib/typescript/handlers/gestures/flingGesture.d.ts +9 -0
  276. package/lib/typescript/handlers/gestures/forceTouchGesture.d.ts +16 -0
  277. package/lib/typescript/handlers/gestures/gesture.d.ts +97 -0
  278. package/lib/typescript/handlers/gestures/gestureComposition.d.ts +21 -0
  279. package/lib/typescript/handlers/gestures/gestureObjects.d.ts +39 -0
  280. package/lib/typescript/handlers/gestures/gestureStateManager.d.ts +9 -0
  281. package/lib/typescript/handlers/gestures/longPressGesture.d.ts +9 -0
  282. package/lib/typescript/handlers/gestures/manualGesture.d.ts +7 -0
  283. package/lib/typescript/handlers/gestures/nativeGesture.d.ts +9 -0
  284. package/lib/typescript/handlers/gestures/panGesture.d.ts +26 -0
  285. package/lib/typescript/handlers/gestures/pinchGesture.d.ts +12 -0
  286. package/lib/typescript/handlers/gestures/reanimatedWrapper.d.ts +14 -0
  287. package/lib/typescript/handlers/gestures/rotationGesture.d.ts +12 -0
  288. package/lib/typescript/handlers/gestures/tapGesture.d.ts +14 -0
  289. package/lib/typescript/handlers/handlersRegistry.d.ts +6 -0
  290. package/lib/typescript/index.d.ts +29 -2
  291. package/lib/typescript/init.d.ts +1 -0
  292. package/lib/typescript/mocks.d.ts +21 -2
  293. package/lib/typescript/utils.d.ts +1 -0
  294. package/lib/typescript/web/FlingGestureHandler.d.ts +0 -1
  295. package/lib/typescript/web/GestureHandler.d.ts +0 -1
  296. package/lib/typescript/web/PanGestureHandler.d.ts +0 -1
  297. package/lib/typescript/web/PinchGestureHandler.d.ts +0 -1
  298. package/lib/typescript/web/PressGestureHandler.d.ts +0 -1
  299. package/lib/typescript/web/RotationGestureHandler.d.ts +0 -1
  300. package/lib/typescript/web/TapGestureHandler.d.ts +0 -1
  301. package/package.json +8 -5
  302. package/src/EventType.ts +10 -0
  303. package/src/GestureHandlerRootView.android.tsx +9 -25
  304. package/src/GestureHandlerRootView.tsx +11 -2
  305. package/src/RNGestureHandlerModule.ts +5 -1
  306. package/src/RNGestureHandlerModule.web.ts +1 -0
  307. package/src/components/DrawerLayout.tsx +114 -41
  308. package/src/components/GestureButtons.tsx +45 -5
  309. package/src/components/GestureComponents.tsx +47 -41
  310. package/src/components/Swipeable.tsx +108 -21
  311. package/src/components/touchables/GenericTouchable.tsx +2 -1
  312. package/src/components/touchables/TouchableOpacity.tsx +1 -1
  313. package/src/handlers/FlingGestureHandler.ts +57 -0
  314. package/src/handlers/ForceTouchGestureHandler.ts +83 -0
  315. package/src/handlers/LongPressGestureHandler.ts +84 -0
  316. package/src/handlers/NativeViewGestureHandler.ts +31 -7
  317. package/src/handlers/PanGestureHandler.ts +321 -0
  318. package/src/handlers/PinchGestureHandler.ts +46 -0
  319. package/src/handlers/RotationGestureHandler.ts +46 -0
  320. package/src/handlers/TapGestureHandler.ts +90 -0
  321. package/src/handlers/createHandler.ts +67 -79
  322. package/src/handlers/gestureHandlerCommon.ts +185 -0
  323. package/src/handlers/gestureHandlerTypesCompat.ts +19 -5
  324. package/src/handlers/gestures/GestureDetector.tsx +519 -0
  325. package/src/handlers/gestures/eventReceiver.ts +151 -0
  326. package/src/handlers/gestures/flingGesture.ts +27 -0
  327. package/src/handlers/gestures/forceTouchGesture.ts +74 -0
  328. package/src/handlers/gestures/gesture.ts +292 -0
  329. package/src/handlers/gestures/gestureComposition.ts +109 -0
  330. package/src/handlers/gestures/gestureObjects.ts +79 -0
  331. package/src/handlers/gestures/gestureStateManager.ts +60 -0
  332. package/src/handlers/gestures/longPressGesture.ts +27 -0
  333. package/src/handlers/gestures/manualGesture.ts +31 -0
  334. package/src/handlers/gestures/nativeGesture.ts +27 -0
  335. package/src/handlers/gestures/panGesture.ts +147 -0
  336. package/src/handlers/gestures/pinchGesture.ts +51 -0
  337. package/src/handlers/gestures/reanimatedWrapper.ts +45 -0
  338. package/src/handlers/gestures/rotationGesture.ts +51 -0
  339. package/src/handlers/gestures/tapGesture.ts +52 -0
  340. package/src/handlers/handlersRegistry.ts +22 -0
  341. package/src/index.ts +57 -17
  342. package/src/init.ts +5 -0
  343. package/src/mocks.ts +42 -2
  344. package/src/utils.ts +7 -0
  345. package/src/web/GestureHandler.ts +1 -2
  346. package/src/web/NodeManager.ts +5 -0
  347. package/android/lib/src/main/java/com/swmansion/gesturehandler/BaseGestureHandlerInteractionController.java +0 -23
  348. package/android/lib/src/main/java/com/swmansion/gesturehandler/FlingGestureHandler.java +0 -110
  349. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandler.java +0 -531
  350. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerInteractionController.java +0 -8
  351. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerOrchestrator.java +0 -543
  352. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerRegistry.java +0 -10
  353. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerRegistryImpl.java +0 -29
  354. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureUtils.java +0 -53
  355. package/android/lib/src/main/java/com/swmansion/gesturehandler/LongPressGestureHandler.java +0 -81
  356. package/android/lib/src/main/java/com/swmansion/gesturehandler/NativeViewGestureHandler.java +0 -110
  357. package/android/lib/src/main/java/com/swmansion/gesturehandler/OnTouchEventListener.java +0 -8
  358. package/android/lib/src/main/java/com/swmansion/gesturehandler/PanGestureHandler.java +0 -312
  359. package/android/lib/src/main/java/com/swmansion/gesturehandler/PinchGestureHandler.java +0 -109
  360. package/android/lib/src/main/java/com/swmansion/gesturehandler/RotationGestureDetector.java +0 -169
  361. package/android/lib/src/main/java/com/swmansion/gesturehandler/RotationGestureHandler.java +0 -96
  362. package/android/lib/src/main/java/com/swmansion/gesturehandler/TapGestureHandler.java +0 -172
  363. package/android/lib/src/main/java/com/swmansion/gesturehandler/ViewConfigurationHelper.java +0 -10
  364. package/android/src/main/java/com/facebook/react/views/modal/RNGHModalUtils.java +0 -21
  365. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.java +0 -296
  366. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEnabledRootView.java +0 -72
  367. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEvent.java +0 -77
  368. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEventDataExtractor.java +0 -8
  369. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerInteractionManager.java +0 -86
  370. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.java +0 -731
  371. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerPackage.java +0 -31
  372. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRegistry.java +0 -101
  373. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.java +0 -151
  374. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootInterface.java +0 -7
  375. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootView.java +0 -76
  376. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootViewManager.java +0 -49
  377. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerStateChangeEvent.java +0 -82
  378. package/android/src/main/java/com/swmansion/gesturehandler/react/RNViewConfigurationHelper.java +0 -61
  379. package/lib/commonjs/handlers/gestureHandlers.js +0 -236
  380. package/lib/commonjs/handlers/gestureHandlers.js.map +0 -1
  381. package/lib/module/handlers/gestureHandlers.js +0 -216
  382. package/lib/module/handlers/gestureHandlers.js.map +0 -1
  383. package/lib/typescript/handlers/gestureHandlers.d.ts +0 -158
  384. 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
- }