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
@@ -0,0 +1,74 @@
1
+ import { BaseGestureConfig, ContinousBaseGesture } from './gesture';
2
+ import {
3
+ ForceTouchGestureConfig,
4
+ ForceTouchGestureHandlerEventPayload,
5
+ } from '../ForceTouchGestureHandler';
6
+ import { GestureUpdateEvent } from '../gestureHandlerCommon';
7
+
8
+ type ForceTouchGestureChangeEventPayload = {
9
+ forceChange: number;
10
+ };
11
+
12
+ function changeEventCalculator(
13
+ current: GestureUpdateEvent<ForceTouchGestureHandlerEventPayload>,
14
+ previous?: GestureUpdateEvent<ForceTouchGestureHandlerEventPayload>
15
+ ) {
16
+ 'worklet';
17
+ let changePayload: ForceTouchGestureChangeEventPayload;
18
+ if (previous === undefined) {
19
+ changePayload = {
20
+ forceChange: current.force,
21
+ };
22
+ } else {
23
+ changePayload = {
24
+ forceChange: current.force - previous.force,
25
+ };
26
+ }
27
+
28
+ return { ...current, ...changePayload };
29
+ }
30
+
31
+ export class ForceTouchGesture extends ContinousBaseGesture<
32
+ ForceTouchGestureHandlerEventPayload,
33
+ ForceTouchGestureChangeEventPayload
34
+ > {
35
+ public config: BaseGestureConfig & ForceTouchGestureConfig = {};
36
+
37
+ constructor() {
38
+ super();
39
+
40
+ this.handlerName = 'ForceTouchGestureHandler';
41
+ }
42
+
43
+ minForce(force: number) {
44
+ this.config.minForce = force;
45
+ return this;
46
+ }
47
+
48
+ maxForce(force: number) {
49
+ this.config.maxForce = force;
50
+ return this;
51
+ }
52
+
53
+ feedbackOnActivation(value: boolean) {
54
+ this.config.feedbackOnActivation = value;
55
+ return this;
56
+ }
57
+
58
+ onChange(
59
+ callback: (
60
+ event: GestureUpdateEvent<
61
+ GestureUpdateEvent<
62
+ ForceTouchGestureHandlerEventPayload &
63
+ ForceTouchGestureChangeEventPayload
64
+ >
65
+ >
66
+ ) => void
67
+ ) {
68
+ // @ts-ignore TS being overprotective, ForceTouchGestureHandlerEventPayload is Record
69
+ this.handlers.changeEventCalculator = changeEventCalculator;
70
+ return super.onChange(callback);
71
+ }
72
+ }
73
+
74
+ export type ForceTouchGestureType = InstanceType<typeof ForceTouchGesture>;
@@ -0,0 +1,292 @@
1
+ import { FlingGestureHandlerEventPayload } from '../FlingGestureHandler';
2
+ import { ForceTouchGestureHandlerEventPayload } from '../ForceTouchGestureHandler';
3
+ import {
4
+ HitSlop,
5
+ CommonGestureConfig,
6
+ GestureTouchEvent,
7
+ GestureStateChangeEvent,
8
+ GestureUpdateEvent,
9
+ } from '../gestureHandlerCommon';
10
+ import { getNextHandlerTag } from '../handlersRegistry';
11
+ import { GestureStateManagerType } from './gestureStateManager';
12
+ import { LongPressGestureHandlerEventPayload } from '../LongPressGestureHandler';
13
+ import { PanGestureHandlerEventPayload } from '../PanGestureHandler';
14
+ import { PinchGestureHandlerEventPayload } from '../PinchGestureHandler';
15
+ import { RotationGestureHandlerEventPayload } from '../RotationGestureHandler';
16
+ import { TapGestureHandlerEventPayload } from '../TapGestureHandler';
17
+ import { NativeViewGestureHandlerPayload } from '../NativeViewGestureHandler';
18
+
19
+ export type GestureType =
20
+ | BaseGesture<Record<string, unknown>>
21
+ | BaseGesture<Record<string, never>>
22
+ | BaseGesture<TapGestureHandlerEventPayload>
23
+ | BaseGesture<PanGestureHandlerEventPayload>
24
+ | BaseGesture<LongPressGestureHandlerEventPayload>
25
+ | BaseGesture<RotationGestureHandlerEventPayload>
26
+ | BaseGesture<PinchGestureHandlerEventPayload>
27
+ | BaseGesture<FlingGestureHandlerEventPayload>
28
+ | BaseGesture<ForceTouchGestureHandlerEventPayload>
29
+ | BaseGesture<NativeViewGestureHandlerPayload>;
30
+
31
+ export type GestureRef =
32
+ | number
33
+ | GestureType
34
+ | React.RefObject<GestureType | undefined>
35
+ | React.RefObject<React.ComponentType | undefined>; // allow adding a ref to a gesture handler
36
+ export interface BaseGestureConfig
37
+ extends CommonGestureConfig,
38
+ Record<string, unknown> {
39
+ ref?: React.MutableRefObject<GestureType | undefined>;
40
+ requireToFail?: GestureRef[];
41
+ simultaneousWith?: GestureRef[];
42
+ needsPointerData?: boolean;
43
+ manualActivation?: boolean;
44
+ }
45
+
46
+ type TouchEventHandlerType = (
47
+ event: GestureTouchEvent,
48
+ stateManager: GestureStateManagerType
49
+ ) => void;
50
+
51
+ export type HandlerCallbacks<EventPayloadT extends Record<string, unknown>> = {
52
+ handlerTag: number;
53
+ onBegin?: (event: GestureStateChangeEvent<EventPayloadT>) => void;
54
+ onStart?: (event: GestureStateChangeEvent<EventPayloadT>) => void;
55
+ onEnd?: (
56
+ event: GestureStateChangeEvent<EventPayloadT>,
57
+ success: boolean
58
+ ) => void;
59
+ onFinalize?: (
60
+ event: GestureStateChangeEvent<EventPayloadT>,
61
+ success: boolean
62
+ ) => void;
63
+ onUpdate?: (event: GestureUpdateEvent<EventPayloadT>) => void;
64
+ onChange?: (event: any) => void;
65
+ onTouchesDown?: TouchEventHandlerType;
66
+ onTouchesMove?: TouchEventHandlerType;
67
+ onTouchesUp?: TouchEventHandlerType;
68
+ onTouchesCancelled?: TouchEventHandlerType;
69
+ changeEventCalculator?: (
70
+ current: GestureUpdateEvent<Record<string, unknown>>,
71
+ previous?: GestureUpdateEvent<Record<string, unknown>>
72
+ ) => GestureUpdateEvent<Record<string, unknown>>;
73
+ isWorklet: boolean[];
74
+ };
75
+
76
+ export const CALLBACK_TYPE = {
77
+ UNDEFINED: 0,
78
+ BEGAN: 1,
79
+ START: 2,
80
+ UPDATE: 3,
81
+ CHANGE: 4,
82
+ END: 5,
83
+ FINALIZE: 6,
84
+ TOUCHES_DOWN: 7,
85
+ TOUCHES_MOVE: 8,
86
+ TOUCHES_UP: 9,
87
+ TOUCHES_CANCELLED: 10,
88
+ } as const;
89
+
90
+ // Allow using CALLBACK_TYPE as object and type
91
+ // eslint-disable-next-line @typescript-eslint/no-redeclare
92
+ export type CALLBACK_TYPE = typeof CALLBACK_TYPE[keyof typeof CALLBACK_TYPE];
93
+
94
+ export abstract class Gesture {
95
+ /**
96
+ * Return array of gestures, providing the same interface for creating and updating
97
+ * handlers, no matter which object was used to create gesture instance.
98
+ */
99
+ abstract toGestureArray(): GestureType[];
100
+
101
+ /**
102
+ * Assign handlerTag to the gesture instance and set ref.current (if a ref is set)
103
+ */
104
+ abstract initialize(): void;
105
+
106
+ /**
107
+ * Make sure that values of properties defining relations are arrays. Do any necessary
108
+ * preprocessing required to configure relations between handlers. Called just before
109
+ * updating the handler on the native side.
110
+ */
111
+ abstract prepare(): void;
112
+ }
113
+
114
+ export abstract class BaseGesture<
115
+ EventPayloadT extends Record<string, unknown>
116
+ > extends Gesture {
117
+ public handlerTag = -1;
118
+ public handlerName = '';
119
+ public config: BaseGestureConfig = {};
120
+ public handlers: HandlerCallbacks<EventPayloadT> = {
121
+ handlerTag: -1,
122
+ isWorklet: [false, false, false, false],
123
+ };
124
+
125
+ private addDependency(
126
+ key: 'simultaneousWith' | 'requireToFail',
127
+ gesture: Exclude<GestureRef, number>
128
+ ) {
129
+ const value = this.config[key];
130
+ this.config[key] = value
131
+ ? Array<GestureRef>().concat(value, gesture)
132
+ : [gesture];
133
+ }
134
+
135
+ withRef(ref: React.MutableRefObject<GestureType | undefined>) {
136
+ this.config.ref = ref;
137
+ return this;
138
+ }
139
+
140
+ // eslint-disable-next-line @typescript-eslint/ban-types
141
+ protected isWorklet(callback: Function) {
142
+ //@ts-ignore if callback is a worklet, the property will be available, if not then the check will return false
143
+ return callback.__workletHash !== undefined;
144
+ }
145
+
146
+ onBegin(callback: (event: GestureStateChangeEvent<EventPayloadT>) => void) {
147
+ this.handlers.onBegin = callback;
148
+ this.handlers.isWorklet[CALLBACK_TYPE.BEGAN] = this.isWorklet(callback);
149
+ return this;
150
+ }
151
+
152
+ onStart(callback: (event: GestureStateChangeEvent<EventPayloadT>) => void) {
153
+ this.handlers.onStart = callback;
154
+ this.handlers.isWorklet[CALLBACK_TYPE.START] = this.isWorklet(callback);
155
+ return this;
156
+ }
157
+
158
+ onEnd(
159
+ callback: (
160
+ event: GestureStateChangeEvent<EventPayloadT>,
161
+ success: boolean
162
+ ) => void
163
+ ) {
164
+ this.handlers.onEnd = callback;
165
+ //@ts-ignore if callback is a worklet, the property will be available, if not then the check will return false
166
+ this.handlers.isWorklet[CALLBACK_TYPE.END] = this.isWorklet(callback);
167
+ return this;
168
+ }
169
+
170
+ onFinalize(
171
+ callback: (
172
+ event: GestureStateChangeEvent<EventPayloadT>,
173
+ success: boolean
174
+ ) => void
175
+ ) {
176
+ this.handlers.onFinalize = callback;
177
+ //@ts-ignore if callback is a worklet, the property will be available, if not then the check will return false
178
+ this.handlers.isWorklet[CALLBACK_TYPE.FINALIZE] = this.isWorklet(callback);
179
+ return this;
180
+ }
181
+
182
+ onTouchesDown(callback: TouchEventHandlerType) {
183
+ this.config.needsPointerData = true;
184
+ this.handlers.onTouchesDown = callback;
185
+ this.handlers.isWorklet[CALLBACK_TYPE.TOUCHES_DOWN] = this.isWorklet(
186
+ callback
187
+ );
188
+
189
+ return this;
190
+ }
191
+
192
+ onTouchesMove(callback: TouchEventHandlerType) {
193
+ this.config.needsPointerData = true;
194
+ this.handlers.onTouchesMove = callback;
195
+ this.handlers.isWorklet[CALLBACK_TYPE.TOUCHES_MOVE] = this.isWorklet(
196
+ callback
197
+ );
198
+
199
+ return this;
200
+ }
201
+
202
+ onTouchesUp(callback: TouchEventHandlerType) {
203
+ this.config.needsPointerData = true;
204
+ this.handlers.onTouchesUp = callback;
205
+ this.handlers.isWorklet[CALLBACK_TYPE.TOUCHES_UP] = this.isWorklet(
206
+ callback
207
+ );
208
+
209
+ return this;
210
+ }
211
+
212
+ onTouchesCancelled(callback: TouchEventHandlerType) {
213
+ this.config.needsPointerData = true;
214
+ this.handlers.onTouchesCancelled = callback;
215
+ this.handlers.isWorklet[CALLBACK_TYPE.TOUCHES_CANCELLED] = this.isWorklet(
216
+ callback
217
+ );
218
+
219
+ return this;
220
+ }
221
+
222
+ enabled(enabled: boolean) {
223
+ this.config.enabled = enabled;
224
+ return this;
225
+ }
226
+
227
+ shouldCancelWhenOutside(value: boolean) {
228
+ this.config.shouldCancelWhenOutside = value;
229
+ return this;
230
+ }
231
+
232
+ hitSlop(hitSlop: HitSlop) {
233
+ this.config.hitSlop = hitSlop;
234
+ return this;
235
+ }
236
+
237
+ simultaneousWithExternalGesture(...gestures: Exclude<GestureRef, number>[]) {
238
+ for (const gesture of gestures) {
239
+ this.addDependency('simultaneousWith', gesture);
240
+ }
241
+ return this;
242
+ }
243
+
244
+ requireExternalGestureToFail(...gestures: Exclude<GestureRef, number>[]) {
245
+ for (const gesture of gestures) {
246
+ this.addDependency('requireToFail', gesture);
247
+ }
248
+ return this;
249
+ }
250
+
251
+ initialize() {
252
+ this.handlerTag = getNextHandlerTag();
253
+ this.handlers = { ...this.handlers, handlerTag: this.handlerTag };
254
+
255
+ if (this.config.ref) {
256
+ this.config.ref.current = this as GestureType;
257
+ }
258
+ }
259
+
260
+ toGestureArray(): GestureType[] {
261
+ return [this as GestureType];
262
+ }
263
+
264
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
265
+ prepare() {}
266
+ }
267
+
268
+ export abstract class ContinousBaseGesture<
269
+ EventPayloadT extends Record<string, unknown>,
270
+ EventChangePayloadT extends Record<string, unknown>
271
+ > extends BaseGesture<EventPayloadT> {
272
+ onUpdate(callback: (event: GestureUpdateEvent<EventPayloadT>) => void) {
273
+ this.handlers.onUpdate = callback;
274
+ this.handlers.isWorklet[CALLBACK_TYPE.UPDATE] = this.isWorklet(callback);
275
+ return this;
276
+ }
277
+
278
+ onChange(
279
+ callback: (
280
+ event: GestureUpdateEvent<EventPayloadT & EventChangePayloadT>
281
+ ) => void
282
+ ) {
283
+ this.handlers.onChange = callback;
284
+ this.handlers.isWorklet[CALLBACK_TYPE.CHANGE] = this.isWorklet(callback);
285
+ return this;
286
+ }
287
+
288
+ manualActivation(manualActivation: boolean) {
289
+ this.config.manualActivation = manualActivation;
290
+ return this;
291
+ }
292
+ }
@@ -0,0 +1,109 @@
1
+ import { BaseGesture, Gesture, GestureRef, GestureType } from './gesture';
2
+
3
+ function extendRelation(
4
+ currentRelation: GestureRef[] | undefined,
5
+ extendWith: GestureType[]
6
+ ) {
7
+ if (currentRelation === undefined) {
8
+ return [...extendWith];
9
+ } else {
10
+ return [...currentRelation, ...extendWith];
11
+ }
12
+ }
13
+
14
+ export class ComposedGesture extends Gesture {
15
+ protected gestures: Gesture[] = [];
16
+ protected simultaneousGestures: GestureType[] = [];
17
+ protected requireGesturesToFail: GestureType[] = [];
18
+
19
+ constructor(...gestures: Gesture[]) {
20
+ super();
21
+ this.gestures = gestures;
22
+ }
23
+
24
+ protected prepareSingleGesture(
25
+ gesture: Gesture,
26
+ simultaneousGestures: GestureType[],
27
+ requireGesturesToFail: GestureType[]
28
+ ) {
29
+ if (gesture instanceof BaseGesture) {
30
+ const newConfig = { ...gesture.config };
31
+
32
+ newConfig.simultaneousWith = extendRelation(
33
+ newConfig.simultaneousWith,
34
+ simultaneousGestures
35
+ );
36
+ newConfig.requireToFail = extendRelation(
37
+ newConfig.requireToFail,
38
+ requireGesturesToFail
39
+ );
40
+
41
+ gesture.config = newConfig;
42
+ } else if (gesture instanceof ComposedGesture) {
43
+ gesture.simultaneousGestures = simultaneousGestures;
44
+ gesture.requireGesturesToFail = requireGesturesToFail;
45
+ gesture.prepare();
46
+ }
47
+ }
48
+
49
+ prepare() {
50
+ for (const gesture of this.gestures) {
51
+ this.prepareSingleGesture(
52
+ gesture,
53
+ this.simultaneousGestures,
54
+ this.requireGesturesToFail
55
+ );
56
+ }
57
+ }
58
+
59
+ initialize() {
60
+ for (const gesture of this.gestures) {
61
+ gesture.initialize();
62
+ }
63
+ }
64
+
65
+ toGestureArray(): GestureType[] {
66
+ return this.gestures.flatMap((gesture) => gesture.toGestureArray());
67
+ }
68
+ }
69
+
70
+ export class SimultaneousGesture extends ComposedGesture {
71
+ prepare() {
72
+ const simultaneousArray = this.gestures
73
+ .flatMap((gesture) => gesture.toGestureArray())
74
+ .concat(this.simultaneousGestures);
75
+
76
+ for (const gesture of this.gestures) {
77
+ this.prepareSingleGesture(
78
+ gesture,
79
+ simultaneousArray,
80
+ this.requireGesturesToFail
81
+ );
82
+ }
83
+ }
84
+ }
85
+
86
+ export class ExclusiveGesture extends ComposedGesture {
87
+ prepare() {
88
+ const gestureArrays = this.gestures.map((gesture) =>
89
+ gesture.toGestureArray()
90
+ );
91
+
92
+ let requireToFail: GestureType[] = [];
93
+
94
+ for (let i = 0; i < this.gestures.length; i++) {
95
+ this.prepareSingleGesture(
96
+ this.gestures[i],
97
+ this.simultaneousGestures,
98
+ this.requireGesturesToFail.concat(requireToFail)
99
+ );
100
+
101
+ requireToFail = requireToFail.concat(gestureArrays[i]);
102
+ }
103
+ }
104
+ }
105
+
106
+ export type ComposedGestureType = InstanceType<typeof ComposedGesture>;
107
+ export type RaceGestureType = ComposedGestureType;
108
+ export type SimultaneousGestureType = InstanceType<typeof SimultaneousGesture>;
109
+ export type ExclusiveGestureType = InstanceType<typeof ExclusiveGesture>;
@@ -0,0 +1,79 @@
1
+ import { FlingGesture } from './flingGesture';
2
+ import { ForceTouchGesture } from './forceTouchGesture';
3
+ import { Gesture } from './gesture';
4
+ import {
5
+ ComposedGesture,
6
+ ExclusiveGesture,
7
+ SimultaneousGesture,
8
+ } from './gestureComposition';
9
+ import { LongPressGesture } from './longPressGesture';
10
+ import { PanGesture } from './panGesture';
11
+ import { PinchGesture } from './pinchGesture';
12
+ import { RotationGesture } from './rotationGesture';
13
+ import { TapGesture } from './tapGesture';
14
+ import { NativeGesture } from './nativeGesture';
15
+ import { ManualGesture } from './manualGesture';
16
+
17
+ export const GestureObjects = {
18
+ Tap: () => {
19
+ return new TapGesture();
20
+ },
21
+
22
+ Pan: () => {
23
+ return new PanGesture();
24
+ },
25
+
26
+ Pinch: () => {
27
+ return new PinchGesture();
28
+ },
29
+
30
+ Rotation: () => {
31
+ return new RotationGesture();
32
+ },
33
+
34
+ Fling: () => {
35
+ return new FlingGesture();
36
+ },
37
+
38
+ LongPress: () => {
39
+ return new LongPressGesture();
40
+ },
41
+
42
+ ForceTouch: () => {
43
+ return new ForceTouchGesture();
44
+ },
45
+
46
+ Native: () => {
47
+ return new NativeGesture();
48
+ },
49
+
50
+ Manual: () => {
51
+ return new ManualGesture();
52
+ },
53
+
54
+ /**
55
+ * Builds a composed gesture consisting of gestures provided as parameters.
56
+ * The first one that becomes active cancels the rest of gestures.
57
+ */
58
+ Race: (...gestures: Gesture[]) => {
59
+ return new ComposedGesture(...gestures);
60
+ },
61
+
62
+ /**
63
+ * Builds a composed gesture that allows all base gestures to run simultaneously.
64
+ */
65
+ Simultaneous(...gestures: Gesture[]) {
66
+ return new SimultaneousGesture(...gestures);
67
+ },
68
+
69
+ /**
70
+ * Builds a composed gesture where only one of the provided gestures can become active.
71
+ * Priority is decided through the order of gestures: the first one has higher priority
72
+ * than the second one, second one has higher priority than the third one, and so on.
73
+ * For example, to make a gesture that recognizes both single and double tap you need
74
+ * to call Exclusive(doubleTap, singleTap).
75
+ */
76
+ Exclusive(...gestures: Gesture[]) {
77
+ return new ExclusiveGesture(...gestures);
78
+ },
79
+ };
@@ -0,0 +1,60 @@
1
+ import { Reanimated } from './reanimatedWrapper';
2
+ import { State } from '../../State';
3
+
4
+ export interface GestureStateManagerType {
5
+ begin: () => void;
6
+ activate: () => void;
7
+ fail: () => void;
8
+ end: () => void;
9
+ }
10
+
11
+ export const GestureStateManager = {
12
+ create(handlerTag: number): GestureStateManagerType {
13
+ 'worklet';
14
+ return {
15
+ begin: () => {
16
+ 'worklet';
17
+ if (Reanimated) {
18
+ Reanimated.setGestureState(handlerTag, State.BEGAN);
19
+ } else {
20
+ console.warn(
21
+ 'react-native-reanimated is required in order to use synchronous state management'
22
+ );
23
+ }
24
+ },
25
+
26
+ activate: () => {
27
+ 'worklet';
28
+ if (Reanimated) {
29
+ Reanimated.setGestureState(handlerTag, State.ACTIVE);
30
+ } else {
31
+ console.warn(
32
+ 'react-native-reanimated is required in order to use synchronous state management'
33
+ );
34
+ }
35
+ },
36
+
37
+ fail: () => {
38
+ 'worklet';
39
+ if (Reanimated) {
40
+ Reanimated.setGestureState(handlerTag, State.FAILED);
41
+ } else {
42
+ console.warn(
43
+ 'react-native-reanimated is required in order to use synchronous state management'
44
+ );
45
+ }
46
+ },
47
+
48
+ end: () => {
49
+ 'worklet';
50
+ if (Reanimated) {
51
+ Reanimated.setGestureState(handlerTag, State.END);
52
+ } else {
53
+ console.warn(
54
+ 'react-native-reanimated is required in order to use synchronous state management'
55
+ );
56
+ }
57
+ },
58
+ };
59
+ },
60
+ };
@@ -0,0 +1,27 @@
1
+ import { BaseGesture, BaseGestureConfig } from './gesture';
2
+ import {
3
+ LongPressGestureConfig,
4
+ LongPressGestureHandlerEventPayload,
5
+ } from '../LongPressGestureHandler';
6
+
7
+ export class LongPressGesture extends BaseGesture<LongPressGestureHandlerEventPayload> {
8
+ public config: BaseGestureConfig & LongPressGestureConfig = {};
9
+
10
+ constructor() {
11
+ super();
12
+
13
+ this.handlerName = 'LongPressGestureHandler';
14
+ }
15
+
16
+ minDuration(duration: number) {
17
+ this.config.minDurationMs = duration;
18
+ return this;
19
+ }
20
+
21
+ maxDistance(distance: number) {
22
+ this.config.maxDist = distance;
23
+ return this;
24
+ }
25
+ }
26
+
27
+ export type LongPressGestureType = InstanceType<typeof LongPressGesture>;
@@ -0,0 +1,31 @@
1
+ import { GestureUpdateEvent } from '../gestureHandlerCommon';
2
+ import { ContinousBaseGesture } from './gesture';
3
+
4
+ function changeEventCalculator(
5
+ current: GestureUpdateEvent<Record<string, never>>,
6
+ _previous?: GestureUpdateEvent<Record<string, never>>
7
+ ) {
8
+ 'worklet';
9
+ return current;
10
+ }
11
+
12
+ export class ManualGesture extends ContinousBaseGesture<
13
+ Record<string, never>,
14
+ Record<string, never>
15
+ > {
16
+ constructor() {
17
+ super();
18
+
19
+ this.handlerName = 'ManualGestureHandler';
20
+ }
21
+
22
+ onChange(
23
+ callback: (event: GestureUpdateEvent<Record<string, never>>) => void
24
+ ) {
25
+ // @ts-ignore TS being overprotective, Record<string, never> is Record
26
+ this.handlers.changeEventCalculator = changeEventCalculator;
27
+ return super.onChange(callback);
28
+ }
29
+ }
30
+
31
+ export type ManualGestureType = InstanceType<typeof ManualGesture>;
@@ -0,0 +1,27 @@
1
+ import { BaseGestureConfig, BaseGesture } from './gesture';
2
+ import {
3
+ NativeViewGestureConfig,
4
+ NativeViewGestureHandlerPayload,
5
+ } from '../NativeViewGestureHandler';
6
+
7
+ export class NativeGesture extends BaseGesture<NativeViewGestureHandlerPayload> {
8
+ public config: BaseGestureConfig & NativeViewGestureConfig = {};
9
+
10
+ constructor() {
11
+ super();
12
+
13
+ this.handlerName = 'NativeViewGestureHandler';
14
+ }
15
+
16
+ shouldActivateOnStart(value: boolean) {
17
+ this.config.shouldActivateOnStart = value;
18
+ return this;
19
+ }
20
+
21
+ disallowInterruption(value: boolean) {
22
+ this.config.disallowInterruption = value;
23
+ return this;
24
+ }
25
+ }
26
+
27
+ export type NativeGestureType = InstanceType<typeof NativeGesture>;