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
@@ -14,7 +14,7 @@ import { BaseButton } from '../GestureButtons';
14
14
  import {
15
15
  GestureEvent,
16
16
  HandlerStateChangeEvent,
17
- } from '../../handlers/gestureHandlers';
17
+ } from '../../handlers/gestureHandlerCommon';
18
18
  import { NativeViewGestureHandlerPayload } from '../../handlers/NativeViewGestureHandler';
19
19
  import { TouchableNativeFeedbackExtraProps } from './TouchableNativeFeedback.android';
20
20
 
@@ -71,6 +71,7 @@ export default class GenericTouchable extends Component<
71
71
  delayLongPress: 600,
72
72
  extraButtonProps: {
73
73
  rippleColor: 'transparent',
74
+ exclusive: true,
74
75
  },
75
76
  };
76
77
 
@@ -36,7 +36,7 @@ export default class TouchableOpacity extends Component<
36
36
  toValue: value,
37
37
  duration: duration,
38
38
  easing: Easing.inOut(Easing.quad),
39
- useNativeDriver: true,
39
+ useNativeDriver: false,
40
40
  }).start();
41
41
  };
42
42
 
@@ -0,0 +1,57 @@
1
+ import createHandler from './createHandler';
2
+ import {
3
+ BaseGestureHandlerProps,
4
+ baseGestureHandlerProps,
5
+ } from './gestureHandlerCommon';
6
+
7
+ export const flingGestureHandlerProps = [
8
+ 'numberOfPointers',
9
+ 'direction',
10
+ ] as const;
11
+
12
+ export type FlingGestureHandlerEventPayload = {
13
+ x: number;
14
+ y: number;
15
+ absoluteX: number;
16
+ absoluteY: number;
17
+ };
18
+ export interface FlingGestureConfig {
19
+ /**
20
+ * Expressed allowed direction of movement. It's possible to pass one or many
21
+ * directions in one parameter:
22
+ *
23
+ * ```js
24
+ * direction={Directions.RIGHT | Directions.LEFT}
25
+ * ```
26
+ *
27
+ * or
28
+ *
29
+ * ```js
30
+ * direction={Directions.DOWN}
31
+ * ```
32
+ */
33
+ direction?: number;
34
+
35
+ /**
36
+ * Determine exact number of points required to handle the fling gesture.
37
+ */
38
+ numberOfPointers?: number;
39
+ }
40
+
41
+ export interface FlingGestureHandlerProps
42
+ extends BaseGestureHandlerProps<FlingGestureHandlerEventPayload>,
43
+ FlingGestureConfig {}
44
+
45
+ export type FlingGestureHandler = typeof FlingGestureHandler;
46
+ // eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; see description on the top of gestureHandlerCommon.ts file
47
+ export const FlingGestureHandler = createHandler<
48
+ FlingGestureHandlerProps,
49
+ FlingGestureHandlerEventPayload
50
+ >({
51
+ name: 'FlingGestureHandler',
52
+ allowedProps: [
53
+ ...baseGestureHandlerProps,
54
+ ...flingGestureHandlerProps,
55
+ ] as const,
56
+ config: {},
57
+ });
@@ -0,0 +1,83 @@
1
+ import React from 'react';
2
+ import PlatformConstants from '../PlatformConstants';
3
+ import createHandler from './createHandler';
4
+ import {
5
+ BaseGestureHandlerProps,
6
+ baseGestureHandlerProps,
7
+ } from './gestureHandlerCommon';
8
+
9
+ export const forceTouchGestureHandlerProps = [
10
+ 'minForce',
11
+ 'maxForce',
12
+ 'feedbackOnActivation',
13
+ ] as const;
14
+
15
+ class ForceTouchFallback extends React.Component {
16
+ static forceTouchAvailable = false;
17
+ componentDidMount() {
18
+ console.warn(
19
+ 'ForceTouchGestureHandler is not available on this platform. Please use ForceTouchGestureHandler.forceTouchAvailable to conditionally render other components that would provide a fallback behavior specific to your usecase'
20
+ );
21
+ }
22
+ render() {
23
+ return this.props.children;
24
+ }
25
+ }
26
+
27
+ export type ForceTouchGestureHandlerEventPayload = {
28
+ x: number;
29
+ y: number;
30
+ absoluteX: number;
31
+ absoluteY: number;
32
+
33
+ /**
34
+ * The pressure of a touch.
35
+ */
36
+ force: number;
37
+ };
38
+
39
+ export interface ForceTouchGestureConfig {
40
+ /**
41
+ *
42
+ * A minimal pressure that is required before handler can activate. Should be a
43
+ * value from range `[0.0, 1.0]`. Default is `0.2`.
44
+ */
45
+ minForce?: number;
46
+
47
+ /**
48
+ * A maximal pressure that could be applied for handler. If the pressure is
49
+ * greater, handler fails. Should be a value from range `[0.0, 1.0]`.
50
+ */
51
+ maxForce?: number;
52
+
53
+ /**
54
+ * Boolean value defining if haptic feedback has to be performed on
55
+ * activation.
56
+ */
57
+ feedbackOnActivation?: boolean;
58
+ }
59
+
60
+ export interface ForceTouchGestureHandlerProps
61
+ extends BaseGestureHandlerProps<ForceTouchGestureHandlerEventPayload>,
62
+ ForceTouchGestureConfig {}
63
+
64
+ export type ForceTouchGestureHandler = typeof ForceTouchGestureHandler & {
65
+ forceTouchAvailable: boolean;
66
+ };
67
+ // eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; see description on the top of gestureHandlerCommon.ts file
68
+ export const ForceTouchGestureHandler = PlatformConstants?.forceTouchAvailable
69
+ ? createHandler<
70
+ ForceTouchGestureHandlerProps,
71
+ ForceTouchGestureHandlerEventPayload
72
+ >({
73
+ name: 'ForceTouchGestureHandler',
74
+ allowedProps: [
75
+ ...baseGestureHandlerProps,
76
+ ...forceTouchGestureHandlerProps,
77
+ ] as const,
78
+ config: {},
79
+ })
80
+ : ForceTouchFallback;
81
+
82
+ (ForceTouchGestureHandler as ForceTouchGestureHandler).forceTouchAvailable =
83
+ PlatformConstants?.forceTouchAvailable || false;
@@ -0,0 +1,84 @@
1
+ import createHandler from './createHandler';
2
+ import {
3
+ BaseGestureHandlerProps,
4
+ baseGestureHandlerProps,
5
+ } from './gestureHandlerCommon';
6
+
7
+ export const longPressGestureHandlerProps = [
8
+ 'minDurationMs',
9
+ 'maxDist',
10
+ ] as const;
11
+
12
+ export type LongPressGestureHandlerEventPayload = {
13
+ /**
14
+ * X coordinate, expressed in points, of the current position of the pointer
15
+ * (finger or a leading pointer when there are multiple fingers placed)
16
+ * relative to the view attached to the handler.
17
+ */
18
+ x: number;
19
+
20
+ /**
21
+ * Y coordinate, expressed in points, of the current position of the pointer
22
+ * (finger or a leading pointer when there are multiple fingers placed)
23
+ * relative to the view attached to the handler.
24
+ */
25
+ y: number;
26
+
27
+ /**
28
+ * X coordinate, expressed in points, of the current position of the pointer
29
+ * (finger or a leading pointer when there are multiple fingers placed)
30
+ * relative to the root view. It is recommended to use `absoluteX` instead of
31
+ * `x` in cases when the view attached to the handler can be transformed as an
32
+ * effect of the gesture.
33
+ */
34
+ absoluteX: number;
35
+
36
+ /**
37
+ * Y coordinate, expressed in points, of the current position of the pointer
38
+ * (finger or a leading pointer when there are multiple fingers placed)
39
+ * relative to the root view. It is recommended to use `absoluteY` instead of
40
+ * `y` in cases when the view attached to the handler can be transformed as an
41
+ * effect of the gesture.
42
+ */
43
+ absoluteY: number;
44
+
45
+ /**
46
+ * Duration of the long press (time since the start of the event), expressed
47
+ * in milliseconds.
48
+ */
49
+ duration: number;
50
+ };
51
+
52
+ export interface LongPressGestureConfig {
53
+ /**
54
+ * Minimum time, expressed in milliseconds, that a finger must remain pressed on
55
+ * the corresponding view. The default value is 500.
56
+ */
57
+ minDurationMs?: number;
58
+
59
+ /**
60
+ * Maximum distance, expressed in points, that defines how far the finger is
61
+ * allowed to travel during a long press gesture. If the finger travels
62
+ * further than the defined distance and the handler hasn't yet activated, it
63
+ * will fail to recognize the gesture. The default value is 10.
64
+ */
65
+ maxDist?: number;
66
+ }
67
+
68
+ export interface LongPressGestureHandlerProps
69
+ extends BaseGestureHandlerProps<LongPressGestureHandlerEventPayload>,
70
+ LongPressGestureConfig {}
71
+
72
+ export type LongPressGestureHandler = typeof LongPressGestureHandler;
73
+ // eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; see description on the top of gestureHandlerCommon.ts file
74
+ export const LongPressGestureHandler = createHandler<
75
+ LongPressGestureHandlerProps,
76
+ LongPressGestureHandlerEventPayload
77
+ >({
78
+ name: 'LongPressGestureHandler',
79
+ allowedProps: [
80
+ ...baseGestureHandlerProps,
81
+ ...longPressGestureHandlerProps,
82
+ ] as const,
83
+ config: {},
84
+ });
@@ -1,24 +1,48 @@
1
1
  import createHandler from './createHandler';
2
- import { BaseGestureHandlerProps, baseProps } from './gestureHandlers';
2
+ import {
3
+ BaseGestureHandlerProps,
4
+ baseGestureHandlerProps,
5
+ } from './gestureHandlerCommon';
3
6
 
4
- export interface NativeViewGestureHandlerProps
5
- extends BaseGestureHandlerProps<NativeViewGestureHandlerPayload> {
7
+ export const nativeViewGestureHandlerProps = [
8
+ 'shouldActivateOnStart',
9
+ 'disallowInterruption',
10
+ ] as const;
11
+
12
+ export interface NativeViewGestureConfig {
13
+ /**
14
+ * Android only.
15
+ *
16
+ * Determines whether the handler should check for an existing touch event on
17
+ * instantiation.
18
+ */
6
19
  shouldActivateOnStart?: boolean;
20
+
21
+ /**
22
+ * When `true`, cancels all other gesture handlers when this
23
+ * `NativeViewGestureHandler` receives an `ACTIVE` state event.
24
+ */
7
25
  disallowInterruption?: boolean;
8
26
  }
9
27
 
28
+ export interface NativeViewGestureHandlerProps
29
+ extends BaseGestureHandlerProps<NativeViewGestureHandlerPayload>,
30
+ NativeViewGestureConfig {}
31
+
10
32
  export type NativeViewGestureHandlerPayload = {
33
+ /**
34
+ * True if gesture was performed inside of containing view, false otherwise.
35
+ */
11
36
  pointerInside: boolean;
12
37
  };
13
38
 
14
39
  export const nativeViewProps = [
15
- ...baseProps,
16
- 'shouldActivateOnStart',
17
- 'disallowInterruption',
40
+ ...baseGestureHandlerProps,
41
+ ...nativeViewGestureHandlerProps,
18
42
  ] as const;
19
43
 
20
44
  export type NativeViewGestureHandler = typeof NativeViewGestureHandler;
21
- // eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; see description on the top of gestureHandlers.ts file
45
+ // eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; see description on the top of gestureHandlerCommon.ts file
22
46
  export const NativeViewGestureHandler = createHandler<
23
47
  NativeViewGestureHandlerProps,
24
48
  NativeViewGestureHandlerPayload
@@ -0,0 +1,321 @@
1
+ import createHandler from './createHandler';
2
+ import {
3
+ BaseGestureHandlerProps,
4
+ baseGestureHandlerProps,
5
+ } from './gestureHandlerCommon';
6
+
7
+ export const panGestureHandlerProps = [
8
+ 'activeOffsetY',
9
+ 'activeOffsetX',
10
+ 'failOffsetY',
11
+ 'failOffsetX',
12
+ 'minDist',
13
+ 'minVelocity',
14
+ 'minVelocityX',
15
+ 'minVelocityY',
16
+ 'minPointers',
17
+ 'maxPointers',
18
+ 'avgTouches',
19
+ 'enableTrackpadTwoFingerGesture',
20
+ ] as const;
21
+
22
+ export const panGestureHandlerCustomNativeProps = [
23
+ 'activeOffsetYStart',
24
+ 'activeOffsetYEnd',
25
+ 'activeOffsetXStart',
26
+ 'activeOffsetXEnd',
27
+ 'failOffsetYStart',
28
+ 'failOffsetYEnd',
29
+ 'failOffsetXStart',
30
+ 'failOffsetXEnd',
31
+ ] as const;
32
+
33
+ export type PanGestureHandlerEventPayload = {
34
+ /**
35
+ * X coordinate of the current position of the pointer (finger or a leading
36
+ * pointer when there are multiple fingers placed) relative to the view
37
+ * attached to the handler. Expressed in point units.
38
+ */
39
+ x: number;
40
+
41
+ /**
42
+ * Y coordinate of the current position of the pointer (finger or a leading
43
+ * pointer when there are multiple fingers placed) relative to the view
44
+ * attached to the handler. Expressed in point units.
45
+ */
46
+ y: number;
47
+
48
+ /**
49
+ * X coordinate of the current position of the pointer (finger or a leading
50
+ * pointer when there are multiple fingers placed) relative to the root view.
51
+ * The value is expressed in point units. It is recommended to use it instead
52
+ * of `x` in cases when the original view can be transformed as an effect of
53
+ * the gesture.
54
+ */
55
+ absoluteX: number;
56
+
57
+ /**
58
+ * Y coordinate of the current position of the pointer (finger or a leading
59
+ * pointer when there are multiple fingers placed) relative to the root view.
60
+ * The value is expressed in point units. It is recommended to use it instead
61
+ * of `y` in cases when the original view can be transformed as an
62
+ * effect of the gesture.
63
+ */
64
+ absoluteY: number;
65
+
66
+ /**
67
+ * Translation of the pan gesture along X axis accumulated over the time of
68
+ * the gesture. The value is expressed in the point units.
69
+ */
70
+ translationX: number;
71
+
72
+ /**
73
+ * Translation of the pan gesture along Y axis accumulated over the time of
74
+ * the gesture. The value is expressed in the point units.
75
+ */
76
+ translationY: number;
77
+
78
+ /**
79
+ * Velocity of the pan gesture along the X axis in the current moment. The
80
+ * value is expressed in point units per second.
81
+ */
82
+ velocityX: number;
83
+
84
+ /**
85
+ * Velocity of the pan gesture along the Y axis in the current moment. The
86
+ * value is expressed in point units per second.
87
+ */
88
+ velocityY: number;
89
+ };
90
+
91
+ interface CommonPanProperties {
92
+ /**
93
+ * Minimum distance the finger (or multiple finger) need to travel before the
94
+ * handler activates. Expressed in points.
95
+ */
96
+ minDist?: number;
97
+
98
+ /**
99
+ * Android only.
100
+ */
101
+ avgTouches?: boolean;
102
+
103
+ /**
104
+ * Enables two-finger gestures on supported devices, for example iPads with
105
+ * trackpads. If not enabled the gesture will require click + drag, with
106
+ * enableTrackpadTwoFingerGesture swiping with two fingers will also trigger
107
+ * the gesture.
108
+ */
109
+ enableTrackpadTwoFingerGesture?: boolean;
110
+
111
+ /**
112
+ * A number of fingers that is required to be placed before handler can
113
+ * activate. Should be a higher or equal to 0 integer.
114
+ */
115
+ minPointers?: number;
116
+
117
+ /**
118
+ * When the given number of fingers is placed on the screen and handler hasn't
119
+ * yet activated it will fail recognizing the gesture. Should be a higher or
120
+ * equal to 0 integer.
121
+ */
122
+ maxPointers?: number;
123
+
124
+ minVelocity?: number;
125
+ minVelocityX?: number;
126
+ minVelocityY?: number;
127
+ }
128
+
129
+ export interface PanGestureConfig extends CommonPanProperties {
130
+ activeOffsetYStart?: number;
131
+ activeOffsetYEnd?: number;
132
+ activeOffsetXStart?: number;
133
+ activeOffsetXEnd?: number;
134
+ failOffsetYStart?: number;
135
+ failOffsetYEnd?: number;
136
+ failOffsetXStart?: number;
137
+ failOffsetXEnd?: number;
138
+ }
139
+
140
+ export interface PanGestureHandlerProps
141
+ extends BaseGestureHandlerProps<PanGestureHandlerEventPayload>,
142
+ CommonPanProperties {
143
+ /**
144
+ * Range along X axis (in points) where fingers travels without activation of
145
+ * handler. Moving outside of this range implies activation of handler. Range
146
+ * can be given as an array or a single number. If range is set as an array,
147
+ * first value must be lower or equal to 0, a the second one higher or equal
148
+ * to 0. If only one number `p` is given a range of `(-inf, p)` will be used
149
+ * if `p` is higher or equal to 0 and `(-p, inf)` otherwise.
150
+ */
151
+ activeOffsetY?: number | number[];
152
+
153
+ /**
154
+ * Range along X axis (in points) where fingers travels without activation of
155
+ * handler. Moving outside of this range implies activation of handler. Range
156
+ * can be given as an array or a single number. If range is set as an array,
157
+ * first value must be lower or equal to 0, a the second one higher or equal
158
+ * to 0. If only one number `p` is given a range of `(-inf, p)` will be used
159
+ * if `p` is higher or equal to 0 and `(-p, inf)` otherwise.
160
+ */
161
+ activeOffsetX?: number | number[];
162
+
163
+ /**
164
+ * When the finger moves outside this range (in points) along Y axis and
165
+ * handler hasn't yet activated it will fail recognizing the gesture. Range
166
+ * can be given as an array or a single number. If range is set as an array,
167
+ * first value must be lower or equal to 0, a the second one higher or equal
168
+ * to 0. If only one number `p` is given a range of `(-inf, p)` will be used
169
+ * if `p` is higher or equal to 0 and `(-p, inf)` otherwise.
170
+ */
171
+ failOffsetY?: number | number[];
172
+
173
+ /**
174
+ * When the finger moves outside this range (in points) along X axis and
175
+ * handler hasn't yet activated it will fail recognizing the gesture. Range
176
+ * can be given as an array or a single number. If range is set as an array,
177
+ * first value must be lower or equal to 0, a the second one higher or equal
178
+ * to 0. If only one number `p` is given a range of `(-inf, p)` will be used
179
+ * if `p` is higher or equal to 0 and `(-p, inf)` otherwise.
180
+ */
181
+ failOffsetX?: number | number[];
182
+ }
183
+
184
+ export type PanGestureHandler = typeof PanGestureHandler;
185
+ // eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; see description on the top of gestureHandlerCommon.ts file
186
+ export const PanGestureHandler = createHandler<
187
+ PanGestureHandlerProps,
188
+ PanGestureHandlerEventPayload
189
+ >({
190
+ name: 'PanGestureHandler',
191
+ allowedProps: [
192
+ ...baseGestureHandlerProps,
193
+ ...panGestureHandlerProps,
194
+ ] as const,
195
+ config: {},
196
+ transformProps: managePanProps,
197
+ customNativeProps: panGestureHandlerCustomNativeProps,
198
+ });
199
+
200
+ function validatePanGestureHandlerProps(props: PanGestureHandlerProps) {
201
+ if (
202
+ Array.isArray(props.activeOffsetX) &&
203
+ (props.activeOffsetX[0] > 0 || props.activeOffsetX[1] < 0)
204
+ ) {
205
+ throw new Error(
206
+ `First element of activeOffsetX should be negative, a the second one should be positive`
207
+ );
208
+ }
209
+
210
+ if (
211
+ Array.isArray(props.activeOffsetY) &&
212
+ (props.activeOffsetY[0] > 0 || props.activeOffsetY[1] < 0)
213
+ ) {
214
+ throw new Error(
215
+ `First element of activeOffsetY should be negative, a the second one should be positive`
216
+ );
217
+ }
218
+
219
+ if (
220
+ Array.isArray(props.failOffsetX) &&
221
+ (props.failOffsetX[0] > 0 || props.failOffsetX[1] < 0)
222
+ ) {
223
+ throw new Error(
224
+ `First element of failOffsetX should be negative, a the second one should be positive`
225
+ );
226
+ }
227
+
228
+ if (
229
+ Array.isArray(props.failOffsetY) &&
230
+ (props.failOffsetY[0] > 0 || props.failOffsetY[1] < 0)
231
+ ) {
232
+ throw new Error(
233
+ `First element of failOffsetY should be negative, a the second one should be positive`
234
+ );
235
+ }
236
+
237
+ if (props.minDist && (props.failOffsetX || props.failOffsetY)) {
238
+ throw new Error(
239
+ `It is not supported to use minDist with failOffsetX or failOffsetY, use activeOffsetX and activeOffsetY instead`
240
+ );
241
+ }
242
+
243
+ if (props.minDist && (props.activeOffsetX || props.activeOffsetY)) {
244
+ throw new Error(
245
+ `It is not supported to use minDist with activeOffsetX or activeOffsetY`
246
+ );
247
+ }
248
+ }
249
+
250
+ function transformPanGestureHandlerProps(props: PanGestureHandlerProps) {
251
+ type InternalPanGHKeys =
252
+ | 'activeOffsetXStart'
253
+ | 'activeOffsetXEnd'
254
+ | 'failOffsetXStart'
255
+ | 'failOffsetXEnd'
256
+ | 'activeOffsetYStart'
257
+ | 'activeOffsetYEnd'
258
+ | 'failOffsetYStart'
259
+ | 'failOffsetYEnd';
260
+ type PanGestureHandlerInternalProps = PanGestureHandlerProps &
261
+ Partial<Record<InternalPanGHKeys, number>>;
262
+
263
+ const res: PanGestureHandlerInternalProps = { ...props };
264
+
265
+ if (props.activeOffsetX !== undefined) {
266
+ delete res.activeOffsetX;
267
+ if (Array.isArray(props.activeOffsetX)) {
268
+ res.activeOffsetXStart = props.activeOffsetX[0];
269
+ res.activeOffsetXEnd = props.activeOffsetX[1];
270
+ } else if (props.activeOffsetX < 0) {
271
+ res.activeOffsetXStart = props.activeOffsetX;
272
+ } else {
273
+ res.activeOffsetXEnd = props.activeOffsetX;
274
+ }
275
+ }
276
+
277
+ if (props.activeOffsetY !== undefined) {
278
+ delete res.activeOffsetY;
279
+ if (Array.isArray(props.activeOffsetY)) {
280
+ res.activeOffsetYStart = props.activeOffsetY[0];
281
+ res.activeOffsetYEnd = props.activeOffsetY[1];
282
+ } else if (props.activeOffsetY < 0) {
283
+ res.activeOffsetYStart = props.activeOffsetY;
284
+ } else {
285
+ res.activeOffsetYEnd = props.activeOffsetY;
286
+ }
287
+ }
288
+
289
+ if (props.failOffsetX !== undefined) {
290
+ delete res.failOffsetX;
291
+ if (Array.isArray(props.failOffsetX)) {
292
+ res.failOffsetXStart = props.failOffsetX[0];
293
+ res.failOffsetXEnd = props.failOffsetX[1];
294
+ } else if (props.failOffsetX < 0) {
295
+ res.failOffsetXStart = props.failOffsetX;
296
+ } else {
297
+ res.failOffsetXEnd = props.failOffsetX;
298
+ }
299
+ }
300
+
301
+ if (props.failOffsetY !== undefined) {
302
+ delete res.failOffsetY;
303
+ if (Array.isArray(props.failOffsetY)) {
304
+ res.failOffsetYStart = props.failOffsetY[0];
305
+ res.failOffsetYEnd = props.failOffsetY[1];
306
+ } else if (props.failOffsetY < 0) {
307
+ res.failOffsetYStart = props.failOffsetY;
308
+ } else {
309
+ res.failOffsetYEnd = props.failOffsetY;
310
+ }
311
+ }
312
+
313
+ return res;
314
+ }
315
+
316
+ export function managePanProps(props: PanGestureHandlerProps) {
317
+ if (__DEV__) {
318
+ validatePanGestureHandlerProps(props);
319
+ }
320
+ return transformPanGestureHandlerProps(props);
321
+ }
@@ -0,0 +1,46 @@
1
+ import createHandler from './createHandler';
2
+ import {
3
+ BaseGestureHandlerProps,
4
+ baseGestureHandlerProps,
5
+ } from './gestureHandlerCommon';
6
+
7
+ export type PinchGestureHandlerEventPayload = {
8
+ /**
9
+ * The scale factor relative to the points of the two touches in screen
10
+ * coordinates.
11
+ */
12
+ scale: number;
13
+
14
+ /**
15
+ * Position expressed in points along X axis of center anchor point of
16
+ * gesture.
17
+ */
18
+ focalX: number;
19
+
20
+ /**
21
+ * Position expressed in points along Y axis of center anchor point of
22
+ * gesture.
23
+ */
24
+ focalY: number;
25
+
26
+ /**
27
+ *
28
+ * Velocity of the pan gesture the current moment. The value is expressed in
29
+ * point units per second.
30
+ */
31
+ velocity: number;
32
+ };
33
+
34
+ export interface PinchGestureHandlerProps
35
+ extends BaseGestureHandlerProps<PinchGestureHandlerEventPayload> {}
36
+
37
+ export type PinchGestureHandler = typeof PinchGestureHandler;
38
+ // eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; see description on the top of gestureHandlerCommon.ts file
39
+ export const PinchGestureHandler = createHandler<
40
+ PinchGestureHandlerProps,
41
+ PinchGestureHandlerEventPayload
42
+ >({
43
+ name: 'PinchGestureHandler',
44
+ allowedProps: baseGestureHandlerProps,
45
+ config: {},
46
+ });