react-native-gesture-handler 1.10.3 → 2.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (382) hide show
  1. package/README.md +7 -6
  2. package/android/build.gradle +49 -1
  3. package/android/common/src/main/java/com/swmansion/common/GestureHandlerStateManager.kt +5 -0
  4. package/android/gradle.properties +19 -0
  5. package/android/lib/src/main/java/com/swmansion/gesturehandler/BaseGestureHandlerInteractionController.kt +18 -0
  6. package/android/lib/src/main/java/com/swmansion/gesturehandler/Extensions.kt +11 -0
  7. package/android/lib/src/main/java/com/swmansion/gesturehandler/FlingGestureHandler.kt +96 -0
  8. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandler.kt +713 -0
  9. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerInteractionController.kt +8 -0
  10. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerOrchestrator.kt +562 -0
  11. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerRegistry.kt +8 -0
  12. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerRegistryImpl.kt +21 -0
  13. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureUtils.kt +49 -0
  14. package/android/lib/src/main/java/com/swmansion/gesturehandler/LongPressGestureHandler.kt +97 -0
  15. package/android/lib/src/main/java/com/swmansion/gesturehandler/ManualGestureHandler.kt +11 -0
  16. package/android/lib/src/main/java/com/swmansion/gesturehandler/NativeViewGestureHandler.kt +129 -0
  17. package/android/lib/src/main/java/com/swmansion/gesturehandler/OnTouchEventListener.kt +9 -0
  18. package/android/lib/src/main/java/com/swmansion/gesturehandler/PanGestureHandler.kt +289 -0
  19. package/android/lib/src/main/java/com/swmansion/gesturehandler/PinchGestureHandler.kt +88 -0
  20. package/android/lib/src/main/java/com/swmansion/gesturehandler/{PointerEventsConfig.java → PointerEventsConfig.kt} +3 -5
  21. package/android/lib/src/main/java/com/swmansion/gesturehandler/RotationGestureDetector.kt +125 -0
  22. package/android/lib/src/main/java/com/swmansion/gesturehandler/RotationGestureHandler.kt +79 -0
  23. package/android/lib/src/main/java/com/swmansion/gesturehandler/TapGestureHandler.kt +167 -0
  24. package/android/lib/src/main/java/com/swmansion/gesturehandler/ViewConfigurationHelper.kt +10 -0
  25. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.kt +348 -0
  26. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEnabledRootView.kt +57 -0
  27. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEvent.kt +59 -0
  28. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEventDataExtractor.kt +8 -0
  29. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerInteractionManager.kt +61 -0
  30. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.kt +686 -0
  31. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerPackage.kt +17 -0
  32. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRegistry.kt +95 -0
  33. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.kt +132 -0
  34. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootInterface.kt +5 -0
  35. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootView.kt +68 -0
  36. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootViewManager.kt +34 -0
  37. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerStateChangeEvent.kt +66 -0
  38. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerTouchEvent.kt +69 -0
  39. package/android/src/main/java/com/swmansion/gesturehandler/react/RNViewConfigurationHelper.kt +51 -0
  40. package/ios/Handlers/RNFlingHandler.m +78 -5
  41. package/ios/Handlers/RNForceTouchHandler.m +29 -4
  42. package/ios/Handlers/RNLongPressHandler.m +105 -3
  43. package/ios/Handlers/RNManualHandler.h +4 -0
  44. package/ios/Handlers/RNManualHandler.m +73 -0
  45. package/ios/Handlers/RNNativeViewHandler.m +30 -2
  46. package/ios/Handlers/RNPanHandler.m +64 -4
  47. package/ios/Handlers/RNPinchHandler.m +61 -2
  48. package/ios/Handlers/RNRotationHandler.m +60 -1
  49. package/ios/Handlers/RNTapHandler.m +55 -8
  50. package/ios/RNGestureHandler.h +18 -4
  51. package/ios/RNGestureHandler.m +123 -13
  52. package/ios/RNGestureHandlerEvents.h +9 -0
  53. package/ios/RNGestureHandlerEvents.m +34 -0
  54. package/ios/RNGestureHandlerManager.h +7 -0
  55. package/ios/RNGestureHandlerManager.m +62 -34
  56. package/ios/RNGestureHandlerModule.m +39 -3
  57. package/ios/RNGestureHandlerPointerTracker.h +25 -0
  58. package/ios/RNGestureHandlerPointerTracker.m +237 -0
  59. package/ios/RNGestureHandlerRegistry.h +1 -0
  60. package/ios/RNGestureHandlerRegistry.m +10 -0
  61. package/ios/RNGestureHandlerStateManager.h +5 -0
  62. package/ios/RNManualActivationRecognizer.h +10 -0
  63. package/ios/RNManualActivationRecognizer.m +80 -0
  64. package/ios/RNRootViewGestureRecognizer.m +1 -1
  65. package/ios/RNTouchEventType.h +9 -0
  66. package/lib/commonjs/EventType.js +16 -0
  67. package/lib/commonjs/EventType.js.map +1 -0
  68. package/lib/commonjs/GestureHandlerRootView.android.js +1 -13
  69. package/lib/commonjs/GestureHandlerRootView.android.js.map +1 -1
  70. package/lib/commonjs/GestureHandlerRootView.js +11 -3
  71. package/lib/commonjs/GestureHandlerRootView.js.map +1 -1
  72. package/lib/commonjs/RNGestureHandlerModule.js +3 -1
  73. package/lib/commonjs/RNGestureHandlerModule.js.map +1 -1
  74. package/lib/commonjs/RNGestureHandlerModule.web.js +2 -2
  75. package/lib/commonjs/RNGestureHandlerModule.web.js.map +1 -1
  76. package/lib/commonjs/components/DrawerLayout.js +41 -37
  77. package/lib/commonjs/components/DrawerLayout.js.map +1 -1
  78. package/lib/commonjs/components/GestureButtons.js.map +1 -1
  79. package/lib/commonjs/components/GestureComponents.js +31 -12
  80. package/lib/commonjs/components/GestureComponents.js.map +1 -1
  81. package/lib/commonjs/components/Swipeable.js +10 -6
  82. package/lib/commonjs/components/Swipeable.js.map +1 -1
  83. package/lib/commonjs/components/touchables/GenericTouchable.js +2 -1
  84. package/lib/commonjs/components/touchables/GenericTouchable.js.map +1 -1
  85. package/lib/commonjs/components/touchables/TouchableOpacity.js +1 -1
  86. package/lib/commonjs/components/touchables/TouchableOpacity.js.map +1 -1
  87. package/lib/commonjs/gestureHandlerRootHOC.js +1 -1
  88. package/lib/commonjs/gestureHandlerRootHOC.js.map +1 -1
  89. package/lib/commonjs/handlers/FlingGestureHandler.js +23 -0
  90. package/lib/commonjs/handlers/FlingGestureHandler.js.map +1 -0
  91. package/lib/commonjs/handlers/ForceTouchGestureHandler.js +44 -0
  92. package/lib/commonjs/handlers/ForceTouchGestureHandler.js.map +1 -0
  93. package/lib/commonjs/handlers/LongPressGestureHandler.js +23 -0
  94. package/lib/commonjs/handlers/LongPressGestureHandler.js.map +1 -0
  95. package/lib/commonjs/handlers/NativeViewGestureHandler.js +6 -4
  96. package/lib/commonjs/handlers/NativeViewGestureHandler.js.map +1 -1
  97. package/lib/commonjs/handlers/PanGestureHandler.js +121 -0
  98. package/lib/commonjs/handlers/PanGestureHandler.js.map +1 -0
  99. package/lib/commonjs/handlers/PinchGestureHandler.js +21 -0
  100. package/lib/commonjs/handlers/PinchGestureHandler.js.map +1 -0
  101. package/lib/commonjs/handlers/RotationGestureHandler.js +21 -0
  102. package/lib/commonjs/handlers/RotationGestureHandler.js.map +1 -0
  103. package/lib/commonjs/handlers/TapGestureHandler.js +23 -0
  104. package/lib/commonjs/handlers/TapGestureHandler.js.map +1 -0
  105. package/lib/commonjs/handlers/createHandler.js +52 -83
  106. package/lib/commonjs/handlers/createHandler.js.map +1 -1
  107. package/lib/commonjs/handlers/gestureHandlerCommon.js +80 -0
  108. package/lib/commonjs/handlers/gestureHandlerCommon.js.map +1 -0
  109. package/lib/commonjs/handlers/gestures/GestureDetector.js +440 -0
  110. package/lib/commonjs/handlers/gestures/GestureDetector.js.map +1 -0
  111. package/lib/commonjs/handlers/gestures/eventReceiver.js +135 -0
  112. package/lib/commonjs/handlers/gestures/eventReceiver.js.map +1 -0
  113. package/lib/commonjs/handlers/gestures/flingGesture.js +34 -0
  114. package/lib/commonjs/handlers/gestures/flingGesture.js.map +1 -0
  115. package/lib/commonjs/handlers/gestures/forceTouchGesture.js +65 -0
  116. package/lib/commonjs/handlers/gestures/forceTouchGesture.js.map +1 -0
  117. package/lib/commonjs/handlers/gestures/gesture.js +193 -0
  118. package/lib/commonjs/handlers/gestures/gesture.js.map +1 -0
  119. package/lib/commonjs/handlers/gestures/gestureComposition.js +94 -0
  120. package/lib/commonjs/handlers/gestures/gestureComposition.js.map +1 -0
  121. package/lib/commonjs/handlers/gestures/gestureObjects.js +85 -0
  122. package/lib/commonjs/handlers/gestures/gestureObjects.js.map +1 -0
  123. package/lib/commonjs/handlers/gestures/gestureStateManager.js +58 -0
  124. package/lib/commonjs/handlers/gestures/gestureStateManager.js.map +1 -0
  125. package/lib/commonjs/handlers/gestures/longPressGesture.js +34 -0
  126. package/lib/commonjs/handlers/gestures/longPressGesture.js.map +1 -0
  127. package/lib/commonjs/handlers/gestures/manualGesture.js +31 -0
  128. package/lib/commonjs/handlers/gestures/manualGesture.js.map +1 -0
  129. package/lib/commonjs/handlers/gestures/nativeGesture.js +34 -0
  130. package/lib/commonjs/handlers/gestures/nativeGesture.js.map +1 -0
  131. package/lib/commonjs/handlers/gestures/panGesture.js +144 -0
  132. package/lib/commonjs/handlers/gestures/panGesture.js.map +1 -0
  133. package/lib/commonjs/handlers/gestures/pinchGesture.js +45 -0
  134. package/lib/commonjs/handlers/gestures/pinchGesture.js.map +1 -0
  135. package/lib/commonjs/handlers/gestures/reanimatedWrapper.js +24 -0
  136. package/lib/commonjs/handlers/gestures/reanimatedWrapper.js.map +1 -0
  137. package/lib/commonjs/handlers/gestures/rotationGesture.js +45 -0
  138. package/lib/commonjs/handlers/gestures/rotationGesture.js.map +1 -0
  139. package/lib/commonjs/handlers/gestures/tapGesture.js +59 -0
  140. package/lib/commonjs/handlers/gestures/tapGesture.js.map +1 -0
  141. package/lib/commonjs/handlers/handlersRegistry.js +31 -0
  142. package/lib/commonjs/handlers/handlersRegistry.js.map +1 -0
  143. package/lib/commonjs/index.js +146 -8
  144. package/lib/commonjs/index.js.map +1 -1
  145. package/lib/commonjs/init.js +13 -0
  146. package/lib/commonjs/init.js.map +1 -0
  147. package/lib/commonjs/mocks.js +31 -2
  148. package/lib/commonjs/mocks.js.map +1 -1
  149. package/lib/commonjs/utils.js +15 -0
  150. package/lib/commonjs/utils.js.map +1 -0
  151. package/lib/commonjs/web/Errors.js +1 -1
  152. package/lib/commonjs/web/Errors.js.map +1 -1
  153. package/lib/commonjs/web/GestureHandler.js +4 -6
  154. package/lib/commonjs/web/GestureHandler.js.map +1 -1
  155. package/lib/commonjs/web/NodeManager.js +8 -2
  156. package/lib/commonjs/web/NodeManager.js.map +1 -1
  157. package/lib/module/EventType.js +8 -0
  158. package/lib/module/EventType.js.map +1 -0
  159. package/lib/module/GestureHandlerRootView.android.js +2 -14
  160. package/lib/module/GestureHandlerRootView.android.js.map +1 -1
  161. package/lib/module/GestureHandlerRootView.js +5 -1
  162. package/lib/module/GestureHandlerRootView.js.map +1 -1
  163. package/lib/module/RNGestureHandlerModule.js +3 -1
  164. package/lib/module/RNGestureHandlerModule.js.map +1 -1
  165. package/lib/module/RNGestureHandlerModule.web.js +2 -2
  166. package/lib/module/RNGestureHandlerModule.web.js.map +1 -1
  167. package/lib/module/components/DrawerLayout.js +43 -40
  168. package/lib/module/components/DrawerLayout.js.map +1 -1
  169. package/lib/module/components/GestureButtons.js.map +1 -1
  170. package/lib/module/components/GestureComponents.js +29 -11
  171. package/lib/module/components/GestureComponents.js.map +1 -1
  172. package/lib/module/components/Swipeable.js +9 -6
  173. package/lib/module/components/Swipeable.js.map +1 -1
  174. package/lib/module/components/touchables/GenericTouchable.js +2 -1
  175. package/lib/module/components/touchables/GenericTouchable.js.map +1 -1
  176. package/lib/module/components/touchables/TouchableOpacity.js +1 -1
  177. package/lib/module/components/touchables/TouchableOpacity.js.map +1 -1
  178. package/lib/module/gestureHandlerRootHOC.js +1 -1
  179. package/lib/module/gestureHandlerRootHOC.js.map +1 -1
  180. package/lib/module/handlers/FlingGestureHandler.js +10 -0
  181. package/lib/module/handlers/FlingGestureHandler.js.map +1 -0
  182. package/lib/module/handlers/ForceTouchGestureHandler.js +29 -0
  183. package/lib/module/handlers/ForceTouchGestureHandler.js.map +1 -0
  184. package/lib/module/handlers/LongPressGestureHandler.js +10 -0
  185. package/lib/module/handlers/LongPressGestureHandler.js.map +1 -0
  186. package/lib/module/handlers/NativeViewGestureHandler.js +4 -3
  187. package/lib/module/handlers/NativeViewGestureHandler.js.map +1 -1
  188. package/lib/module/handlers/PanGestureHandler.js +106 -0
  189. package/lib/module/handlers/PanGestureHandler.js.map +1 -0
  190. package/lib/module/handlers/PinchGestureHandler.js +9 -0
  191. package/lib/module/handlers/PinchGestureHandler.js.map +1 -0
  192. package/lib/module/handlers/RotationGestureHandler.js +9 -0
  193. package/lib/module/handlers/RotationGestureHandler.js.map +1 -0
  194. package/lib/module/handlers/TapGestureHandler.js +10 -0
  195. package/lib/module/handlers/TapGestureHandler.js.map +1 -0
  196. package/lib/module/handlers/createHandler.js +41 -76
  197. package/lib/module/handlers/createHandler.js.map +1 -1
  198. package/lib/module/handlers/gestureHandlerCommon.js +66 -0
  199. package/lib/module/handlers/gestureHandlerCommon.js.map +1 -0
  200. package/lib/module/handlers/gestures/GestureDetector.js +402 -0
  201. package/lib/module/handlers/gestures/GestureDetector.js.map +1 -0
  202. package/lib/module/handlers/gestures/eventReceiver.js +120 -0
  203. package/lib/module/handlers/gestures/eventReceiver.js.map +1 -0
  204. package/lib/module/handlers/gestures/flingGesture.js +24 -0
  205. package/lib/module/handlers/gestures/flingGesture.js.map +1 -0
  206. package/lib/module/handlers/gestures/forceTouchGesture.js +56 -0
  207. package/lib/module/handlers/gestures/forceTouchGesture.js.map +1 -0
  208. package/lib/module/handlers/gestures/gesture.js +175 -0
  209. package/lib/module/handlers/gestures/gesture.js.map +1 -0
  210. package/lib/module/handlers/gestures/gestureComposition.js +79 -0
  211. package/lib/module/handlers/gestures/gestureComposition.js.map +1 -0
  212. package/lib/module/handlers/gestures/gestureObjects.js +67 -0
  213. package/lib/module/handlers/gestures/gestureObjects.js.map +1 -0
  214. package/lib/module/handlers/gestures/gestureStateManager.js +48 -0
  215. package/lib/module/handlers/gestures/gestureStateManager.js.map +1 -0
  216. package/lib/module/handlers/gestures/longPressGesture.js +24 -0
  217. package/lib/module/handlers/gestures/longPressGesture.js.map +1 -0
  218. package/lib/module/handlers/gestures/manualGesture.js +22 -0
  219. package/lib/module/handlers/gestures/manualGesture.js.map +1 -0
  220. package/lib/module/handlers/gestures/nativeGesture.js +24 -0
  221. package/lib/module/handlers/gestures/nativeGesture.js.map +1 -0
  222. package/lib/module/handlers/gestures/panGesture.js +135 -0
  223. package/lib/module/handlers/gestures/panGesture.js.map +1 -0
  224. package/lib/module/handlers/gestures/pinchGesture.js +36 -0
  225. package/lib/module/handlers/gestures/pinchGesture.js.map +1 -0
  226. package/lib/module/handlers/gestures/reanimatedWrapper.js +19 -0
  227. package/lib/module/handlers/gestures/reanimatedWrapper.js.map +1 -0
  228. package/lib/module/handlers/gestures/rotationGesture.js +36 -0
  229. package/lib/module/handlers/gestures/rotationGesture.js.map +1 -0
  230. package/lib/module/handlers/gestures/tapGesture.js +49 -0
  231. package/lib/module/handlers/gestures/tapGesture.js.map +1 -0
  232. package/lib/module/handlers/handlersRegistry.js +16 -0
  233. package/lib/module/handlers/handlersRegistry.js.map +1 -0
  234. package/lib/module/index.js +22 -1
  235. package/lib/module/index.js.map +1 -1
  236. package/lib/module/init.js +5 -0
  237. package/lib/module/init.js.map +1 -0
  238. package/lib/module/mocks.js +31 -2
  239. package/lib/module/mocks.js.map +1 -1
  240. package/lib/module/utils.js +8 -0
  241. package/lib/module/utils.js.map +1 -0
  242. package/lib/module/web/Errors.js +1 -1
  243. package/lib/module/web/Errors.js.map +1 -1
  244. package/lib/module/web/GestureHandler.js +4 -6
  245. package/lib/module/web/GestureHandler.js.map +1 -1
  246. package/lib/module/web/NodeManager.js +8 -2
  247. package/lib/module/web/NodeManager.js.map +1 -1
  248. package/lib/typescript/EventType.d.ts +8 -0
  249. package/lib/typescript/GestureHandlerRootView.android.d.ts +2 -4
  250. package/lib/typescript/GestureHandlerRootView.d.ts +5 -2
  251. package/lib/typescript/RNGestureHandlerModule.d.ts +1 -1
  252. package/lib/typescript/RNGestureHandlerModule.web.d.ts +1 -1
  253. package/lib/typescript/components/DrawerLayout.d.ts +50 -1
  254. package/lib/typescript/components/GestureButtons.d.ts +36 -0
  255. package/lib/typescript/components/GestureComponents.d.ts +8 -35
  256. package/lib/typescript/components/Swipeable.d.ts +73 -6
  257. package/lib/typescript/components/touchables/GenericTouchable.d.ts +2 -2
  258. package/lib/typescript/components/touchables/TouchableHighlight.d.ts +1 -0
  259. package/lib/typescript/components/touchables/TouchableOpacity.d.ts +1 -0
  260. package/lib/typescript/handlers/FlingGestureHandler.d.ts +33 -0
  261. package/lib/typescript/handlers/ForceTouchGestureHandler.d.ts +43 -0
  262. package/lib/typescript/handlers/LongPressGestureHandler.d.ts +55 -0
  263. package/lib/typescript/handlers/NativeViewGestureHandler.d.ts +19 -4
  264. package/lib/typescript/handlers/PanGestureHandler.d.ts +137 -0
  265. package/lib/typescript/handlers/PinchGestureHandler.d.ts +28 -0
  266. package/lib/typescript/handlers/RotationGestureHandler.d.ts +28 -0
  267. package/lib/typescript/handlers/TapGestureHandler.d.ts +56 -0
  268. package/lib/typescript/handlers/createHandler.d.ts +1 -1
  269. package/lib/typescript/handlers/gestureHandlerCommon.d.ts +62 -0
  270. package/lib/typescript/handlers/gestureHandlerTypesCompat.d.ts +8 -1
  271. package/lib/typescript/handlers/gestures/GestureDetector.d.ts +16 -0
  272. package/lib/typescript/handlers/gestures/eventReceiver.d.ts +2 -0
  273. package/lib/typescript/handlers/gestures/flingGesture.d.ts +9 -0
  274. package/lib/typescript/handlers/gestures/forceTouchGesture.d.ts +16 -0
  275. package/lib/typescript/handlers/gestures/gesture.d.ts +97 -0
  276. package/lib/typescript/handlers/gestures/gestureComposition.d.ts +21 -0
  277. package/lib/typescript/handlers/gestures/gestureObjects.d.ts +39 -0
  278. package/lib/typescript/handlers/gestures/gestureStateManager.d.ts +9 -0
  279. package/lib/typescript/handlers/gestures/longPressGesture.d.ts +9 -0
  280. package/lib/typescript/handlers/gestures/manualGesture.d.ts +7 -0
  281. package/lib/typescript/handlers/gestures/nativeGesture.d.ts +9 -0
  282. package/lib/typescript/handlers/gestures/panGesture.d.ts +26 -0
  283. package/lib/typescript/handlers/gestures/pinchGesture.d.ts +12 -0
  284. package/lib/typescript/handlers/gestures/reanimatedWrapper.d.ts +14 -0
  285. package/lib/typescript/handlers/gestures/rotationGesture.d.ts +12 -0
  286. package/lib/typescript/handlers/gestures/tapGesture.d.ts +14 -0
  287. package/lib/typescript/handlers/handlersRegistry.d.ts +6 -0
  288. package/lib/typescript/index.d.ts +29 -2
  289. package/lib/typescript/init.d.ts +1 -0
  290. package/lib/typescript/mocks.d.ts +21 -2
  291. package/lib/typescript/utils.d.ts +1 -0
  292. package/lib/typescript/web/FlingGestureHandler.d.ts +0 -1
  293. package/lib/typescript/web/GestureHandler.d.ts +0 -1
  294. package/lib/typescript/web/PanGestureHandler.d.ts +0 -1
  295. package/lib/typescript/web/PinchGestureHandler.d.ts +0 -1
  296. package/lib/typescript/web/PressGestureHandler.d.ts +0 -1
  297. package/lib/typescript/web/RotationGestureHandler.d.ts +0 -1
  298. package/lib/typescript/web/TapGestureHandler.d.ts +0 -1
  299. package/package.json +8 -5
  300. package/src/EventType.ts +10 -0
  301. package/src/GestureHandlerRootView.android.tsx +9 -25
  302. package/src/GestureHandlerRootView.tsx +11 -2
  303. package/src/RNGestureHandlerModule.ts +5 -1
  304. package/src/RNGestureHandlerModule.web.ts +1 -0
  305. package/src/components/DrawerLayout.tsx +114 -41
  306. package/src/components/GestureButtons.tsx +45 -5
  307. package/src/components/GestureComponents.tsx +47 -41
  308. package/src/components/Swipeable.tsx +108 -21
  309. package/src/components/touchables/GenericTouchable.tsx +2 -1
  310. package/src/components/touchables/TouchableOpacity.tsx +1 -1
  311. package/src/handlers/FlingGestureHandler.ts +57 -0
  312. package/src/handlers/ForceTouchGestureHandler.ts +83 -0
  313. package/src/handlers/LongPressGestureHandler.ts +84 -0
  314. package/src/handlers/NativeViewGestureHandler.ts +31 -7
  315. package/src/handlers/PanGestureHandler.ts +321 -0
  316. package/src/handlers/PinchGestureHandler.ts +46 -0
  317. package/src/handlers/RotationGestureHandler.ts +46 -0
  318. package/src/handlers/TapGestureHandler.ts +90 -0
  319. package/src/handlers/createHandler.ts +54 -79
  320. package/src/handlers/gestureHandlerCommon.ts +185 -0
  321. package/src/handlers/gestureHandlerTypesCompat.ts +19 -5
  322. package/src/handlers/gestures/GestureDetector.tsx +519 -0
  323. package/src/handlers/gestures/eventReceiver.ts +151 -0
  324. package/src/handlers/gestures/flingGesture.ts +27 -0
  325. package/src/handlers/gestures/forceTouchGesture.ts +74 -0
  326. package/src/handlers/gestures/gesture.ts +292 -0
  327. package/src/handlers/gestures/gestureComposition.ts +109 -0
  328. package/src/handlers/gestures/gestureObjects.ts +79 -0
  329. package/src/handlers/gestures/gestureStateManager.ts +60 -0
  330. package/src/handlers/gestures/longPressGesture.ts +27 -0
  331. package/src/handlers/gestures/manualGesture.ts +31 -0
  332. package/src/handlers/gestures/nativeGesture.ts +27 -0
  333. package/src/handlers/gestures/panGesture.ts +147 -0
  334. package/src/handlers/gestures/pinchGesture.ts +51 -0
  335. package/src/handlers/gestures/reanimatedWrapper.ts +45 -0
  336. package/src/handlers/gestures/rotationGesture.ts +51 -0
  337. package/src/handlers/gestures/tapGesture.ts +52 -0
  338. package/src/handlers/handlersRegistry.ts +22 -0
  339. package/src/index.ts +57 -17
  340. package/src/init.ts +5 -0
  341. package/src/mocks.ts +42 -2
  342. package/src/utils.ts +7 -0
  343. package/src/web/GestureHandler.ts +1 -2
  344. package/src/web/NodeManager.ts +5 -0
  345. package/android/lib/src/main/java/com/swmansion/gesturehandler/BaseGestureHandlerInteractionController.java +0 -23
  346. package/android/lib/src/main/java/com/swmansion/gesturehandler/FlingGestureHandler.java +0 -110
  347. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandler.java +0 -531
  348. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerInteractionController.java +0 -8
  349. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerOrchestrator.java +0 -543
  350. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerRegistry.java +0 -10
  351. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerRegistryImpl.java +0 -29
  352. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureUtils.java +0 -53
  353. package/android/lib/src/main/java/com/swmansion/gesturehandler/LongPressGestureHandler.java +0 -81
  354. package/android/lib/src/main/java/com/swmansion/gesturehandler/NativeViewGestureHandler.java +0 -110
  355. package/android/lib/src/main/java/com/swmansion/gesturehandler/OnTouchEventListener.java +0 -8
  356. package/android/lib/src/main/java/com/swmansion/gesturehandler/PanGestureHandler.java +0 -312
  357. package/android/lib/src/main/java/com/swmansion/gesturehandler/PinchGestureHandler.java +0 -109
  358. package/android/lib/src/main/java/com/swmansion/gesturehandler/RotationGestureDetector.java +0 -169
  359. package/android/lib/src/main/java/com/swmansion/gesturehandler/RotationGestureHandler.java +0 -96
  360. package/android/lib/src/main/java/com/swmansion/gesturehandler/TapGestureHandler.java +0 -172
  361. package/android/lib/src/main/java/com/swmansion/gesturehandler/ViewConfigurationHelper.java +0 -10
  362. package/android/src/main/java/com/facebook/react/views/modal/RNGHModalUtils.java +0 -21
  363. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.java +0 -296
  364. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEnabledRootView.java +0 -72
  365. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEvent.java +0 -77
  366. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEventDataExtractor.java +0 -8
  367. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerInteractionManager.java +0 -86
  368. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.java +0 -731
  369. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerPackage.java +0 -31
  370. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRegistry.java +0 -101
  371. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.java +0 -151
  372. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootInterface.java +0 -7
  373. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootView.java +0 -76
  374. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootViewManager.java +0 -49
  375. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerStateChangeEvent.java +0 -82
  376. package/android/src/main/java/com/swmansion/gesturehandler/react/RNViewConfigurationHelper.java +0 -61
  377. package/lib/commonjs/handlers/gestureHandlers.js +0 -236
  378. package/lib/commonjs/handlers/gestureHandlers.js.map +0 -1
  379. package/lib/module/handlers/gestureHandlers.js +0 -216
  380. package/lib/module/handlers/gestureHandlers.js.map +0 -1
  381. package/lib/typescript/handlers/gestureHandlers.d.ts +0 -158
  382. package/src/handlers/gestureHandlers.ts +0 -511
@@ -1,158 +0,0 @@
1
- import * as React from 'react';
2
- import { State } from '../State';
3
- import { ValueOf } from '../typeUtils';
4
- export interface GestureEventPayload {
5
- handlerTag: number;
6
- numberOfPointers: number;
7
- state: ValueOf<typeof State>;
8
- }
9
- export interface HandlerStateChangeEventPayload {
10
- handlerTag: number;
11
- numberOfPointers: number;
12
- state: ValueOf<typeof State>;
13
- oldState: ValueOf<typeof State>;
14
- }
15
- export interface GestureEvent<ExtraEventPayloadT = Record<string, unknown>> {
16
- nativeEvent: Readonly<GestureEventPayload & ExtraEventPayloadT>;
17
- }
18
- export interface HandlerStateChangeEvent<ExtraEventPayloadT = Record<string, unknown>> {
19
- nativeEvent: Readonly<HandlerStateChangeEventPayload & ExtraEventPayloadT>;
20
- }
21
- export declare type BaseGestureHandlerProps<ExtraEventPayloadT extends Record<string, unknown> = Record<string, unknown>> = {
22
- id?: string;
23
- enabled?: boolean;
24
- minPointers?: number;
25
- waitFor?: React.Ref<unknown> | React.Ref<unknown>[];
26
- simultaneousHandlers?: React.Ref<unknown> | React.Ref<unknown>[];
27
- shouldCancelWhenOutside?: boolean;
28
- hitSlop?: number | Partial<Record<'left' | 'right' | 'top' | 'bottom' | 'vertical' | 'horizontal', number>> | Record<'width' | 'left', number> | Record<'width' | 'right', number> | Record<'height' | 'top', number> | Record<'height' | 'bottom', number>;
29
- onBegan?: (event: HandlerStateChangeEvent) => void;
30
- onFailed?: (event: HandlerStateChangeEvent) => void;
31
- onCancelled?: (event: HandlerStateChangeEvent) => void;
32
- onActivated?: (event: HandlerStateChangeEvent) => void;
33
- onEnded?: (event: HandlerStateChangeEvent) => void;
34
- onGestureEvent?: (event: GestureEvent<ExtraEventPayloadT>) => void;
35
- onHandlerStateChange?: (event: HandlerStateChangeEvent<ExtraEventPayloadT>) => void;
36
- };
37
- export declare const baseProps: readonly ["id", "enabled", "minPointers", "waitFor", "simultaneousHandlers", "shouldCancelWhenOutside", "hitSlop", "onBegan", "onFailed", "onCancelled", "onActivated", "onEnded", "onGestureEvent", "onHandlerStateChange"];
38
- export declare type TapGestureHandlerEventPayload = {
39
- x: number;
40
- y: number;
41
- absoluteX: number;
42
- absoluteY: number;
43
- };
44
- export interface TapGestureHandlerProps extends BaseGestureHandlerProps<TapGestureHandlerEventPayload> {
45
- minPointers?: number;
46
- maxDurationMs?: number;
47
- maxDelayMs?: number;
48
- numberOfTaps?: number;
49
- maxDeltaX?: number;
50
- maxDeltaY?: number;
51
- maxDist?: number;
52
- }
53
- export declare type TapGestureHandler = typeof TapGestureHandler;
54
- export declare const TapGestureHandler: React.ComponentType<TapGestureHandlerProps & React.RefAttributes<any>>;
55
- export declare type FlingGestureHandlerEventPayload = {
56
- x: number;
57
- y: number;
58
- absoluteX: number;
59
- absoluteY: number;
60
- };
61
- export interface FlingGestureHandlerProps extends BaseGestureHandlerProps<FlingGestureHandlerEventPayload> {
62
- direction?: number;
63
- numberOfPointers?: number;
64
- }
65
- export declare type FlingGestureHandler = typeof FlingGestureHandler;
66
- export declare const FlingGestureHandler: React.ComponentType<FlingGestureHandlerProps & React.RefAttributes<any>>;
67
- declare class ForceTouchFallback extends React.Component {
68
- static forceTouchAvailable: boolean;
69
- componentDidMount(): void;
70
- render(): React.ReactNode;
71
- }
72
- export declare type ForceTouchGestureHandlerEventPayload = {
73
- x: number;
74
- y: number;
75
- absoluteX: number;
76
- absoluteY: number;
77
- force: number;
78
- };
79
- export interface ForceTouchGestureHandlerProps extends BaseGestureHandlerProps<ForceTouchGestureHandlerEventPayload> {
80
- minForce?: number;
81
- maxForce?: number;
82
- feedbackOnActivation?: boolean;
83
- }
84
- export declare type ForceTouchGestureHandler = typeof ForceTouchGestureHandler & {
85
- forceTouchAvailable: boolean;
86
- };
87
- export declare const ForceTouchGestureHandler: typeof ForceTouchFallback | React.ComponentClass<ForceTouchGestureHandlerProps & React.RefAttributes<any>, any> | React.FunctionComponent<ForceTouchGestureHandlerProps & React.RefAttributes<any>>;
88
- export declare type LongPressGestureHandlerEventPayload = {
89
- x: number;
90
- y: number;
91
- absoluteX: number;
92
- absoluteY: number;
93
- };
94
- export interface LongPressGestureHandlerProps extends BaseGestureHandlerProps<LongPressGestureHandlerEventPayload> {
95
- minDurationMs?: number;
96
- maxDist?: number;
97
- }
98
- export declare type LongPressGestureHandler = typeof LongPressGestureHandler;
99
- export declare const LongPressGestureHandler: React.ComponentType<LongPressGestureHandlerProps & React.RefAttributes<any>>;
100
- export declare type PanGestureHandlerEventPayload = {
101
- x: number;
102
- y: number;
103
- absoluteX: number;
104
- absoluteY: number;
105
- translationX: number;
106
- translationY: number;
107
- velocityX: number;
108
- velocityY: number;
109
- };
110
- export interface PanGestureHandlerProps extends BaseGestureHandlerProps<PanGestureHandlerEventPayload> {
111
- /** @deprecated use activeOffsetX*/
112
- minDeltaX?: number;
113
- /** @deprecated use activeOffsetY*/
114
- minDeltaY?: number;
115
- /** @deprecated use failOffsetX*/
116
- maxDeltaX?: number;
117
- /** @deprecated use failOffsetY*/
118
- maxDeltaY?: number;
119
- /** @deprecated use activeOffsetX*/
120
- minOffsetX?: number;
121
- /** @deprecated use failOffsetY*/
122
- minOffsetY?: number;
123
- activeOffsetY?: number | number[];
124
- activeOffsetX?: number | number[];
125
- failOffsetY?: number | number[];
126
- failOffsetX?: number | number[];
127
- minDist?: number;
128
- minVelocity?: number;
129
- minVelocityX?: number;
130
- minVelocityY?: number;
131
- minPointers?: number;
132
- maxPointers?: number;
133
- avgTouches?: boolean;
134
- enableTrackpadTwoFingerGesture?: boolean;
135
- }
136
- export declare type PanGestureHandler = typeof PanGestureHandler;
137
- export declare const PanGestureHandler: React.ComponentType<PanGestureHandlerProps & React.RefAttributes<any>>;
138
- export declare type PinchGestureHandlerEventPayload = {
139
- scale: number;
140
- focalX: number;
141
- focalY: number;
142
- velocity: number;
143
- };
144
- export interface PinchGestureHandlerProps extends BaseGestureHandlerProps<PinchGestureHandlerEventPayload> {
145
- }
146
- export declare type PinchGestureHandler = typeof PinchGestureHandler;
147
- export declare const PinchGestureHandler: React.ComponentType<PinchGestureHandlerProps & React.RefAttributes<any>>;
148
- export declare type RotationGestureHandlerEventPayload = {
149
- rotation: number;
150
- anchorX: number;
151
- anchorY: number;
152
- velocity: number;
153
- };
154
- export interface RotationGestureHandlerProps extends BaseGestureHandlerProps<RotationGestureHandlerEventPayload> {
155
- }
156
- export declare type RotationGestureHandler = typeof RotationGestureHandler;
157
- export declare const RotationGestureHandler: React.ComponentType<RotationGestureHandlerProps & React.RefAttributes<any>>;
158
- export {};
@@ -1,511 +0,0 @@
1
- // Previous types exported gesture handlers as classes which creates an interface and variable, both named the same as class.
2
- // Without those types, we'd introduce breaking change, forcing users to prefix every handler type specification with typeof
3
- // e.g. React.createRef<TapGestureHandler> -> React.createRef<typeof TapGestureHandler>.
4
- // See https://www.typescriptlang.org/docs/handbook/classes.html#constructor-functions for reference.
5
- import * as React from 'react';
6
-
7
- import createHandler from './createHandler';
8
- import PlatformConstants from '../PlatformConstants';
9
- import { State } from '../State';
10
- import { ValueOf } from '../typeUtils';
11
-
12
- export interface GestureEventPayload {
13
- handlerTag: number;
14
- numberOfPointers: number;
15
- state: ValueOf<typeof State>;
16
- }
17
-
18
- export interface HandlerStateChangeEventPayload {
19
- handlerTag: number;
20
- numberOfPointers: number;
21
- state: ValueOf<typeof State>;
22
- oldState: ValueOf<typeof State>;
23
- }
24
-
25
- //TODO(TS) events in handlers
26
-
27
- export interface GestureEvent<ExtraEventPayloadT = Record<string, unknown>> {
28
- nativeEvent: Readonly<GestureEventPayload & ExtraEventPayloadT>;
29
- }
30
- export interface HandlerStateChangeEvent<
31
- ExtraEventPayloadT = Record<string, unknown>
32
- > {
33
- nativeEvent: Readonly<HandlerStateChangeEventPayload & ExtraEventPayloadT>;
34
- }
35
-
36
- // Events payloads are types instead of interfaces due to TS limitation.
37
- // See https://github.com/microsoft/TypeScript/issues/15300 for more info.
38
- export type BaseGestureHandlerProps<
39
- ExtraEventPayloadT extends Record<string, unknown> = Record<string, unknown>
40
- > = {
41
- id?: string;
42
- enabled?: boolean;
43
- minPointers?: number;
44
- waitFor?: React.Ref<unknown> | React.Ref<unknown>[];
45
- simultaneousHandlers?: React.Ref<unknown> | React.Ref<unknown>[];
46
- shouldCancelWhenOutside?: boolean;
47
- hitSlop?:
48
- | number
49
- // TODO(TS) take into consideration types from GestureHandler#setHitSlop
50
- | Partial<
51
- Record<
52
- 'left' | 'right' | 'top' | 'bottom' | 'vertical' | 'horizontal',
53
- number
54
- >
55
- >
56
- | Record<'width' | 'left', number>
57
- | Record<'width' | 'right', number>
58
- | Record<'height' | 'top', number>
59
- | Record<'height' | 'bottom', number>;
60
- // TODO(TS) - fix event types
61
- onBegan?: (event: HandlerStateChangeEvent) => void;
62
- onFailed?: (event: HandlerStateChangeEvent) => void;
63
- onCancelled?: (event: HandlerStateChangeEvent) => void;
64
- onActivated?: (event: HandlerStateChangeEvent) => void;
65
- onEnded?: (event: HandlerStateChangeEvent) => void;
66
-
67
- //TODO(TS) consider using NativeSyntheticEvent
68
- onGestureEvent?: (event: GestureEvent<ExtraEventPayloadT>) => void;
69
- onHandlerStateChange?: (
70
- event: HandlerStateChangeEvent<ExtraEventPayloadT>
71
- ) => void;
72
- };
73
-
74
- export const baseProps = [
75
- 'id',
76
- 'enabled',
77
- 'minPointers',
78
- 'waitFor',
79
- 'simultaneousHandlers',
80
- 'shouldCancelWhenOutside',
81
- 'hitSlop',
82
- 'onBegan',
83
- 'onFailed',
84
- 'onCancelled',
85
- 'onActivated',
86
- 'onEnded',
87
- 'onGestureEvent',
88
- 'onHandlerStateChange',
89
- ] as const;
90
-
91
- export type TapGestureHandlerEventPayload = {
92
- x: number;
93
- y: number;
94
- absoluteX: number;
95
- absoluteY: number;
96
- };
97
-
98
- export interface TapGestureHandlerProps
99
- extends BaseGestureHandlerProps<TapGestureHandlerEventPayload> {
100
- minPointers?: number;
101
- maxDurationMs?: number;
102
- maxDelayMs?: number;
103
- numberOfTaps?: number;
104
- maxDeltaX?: number;
105
- maxDeltaY?: number;
106
- maxDist?: number;
107
- }
108
-
109
- export type TapGestureHandler = typeof TapGestureHandler;
110
- // eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; see description on the top of this file
111
- export const TapGestureHandler = createHandler<
112
- TapGestureHandlerProps,
113
- TapGestureHandlerEventPayload
114
- >({
115
- name: 'TapGestureHandler',
116
- allowedProps: [
117
- ...baseProps,
118
- 'maxDurationMs',
119
- 'maxDelayMs',
120
- 'numberOfTaps',
121
- 'maxDeltaX',
122
- 'maxDeltaY',
123
- 'maxDist',
124
- 'minPointers',
125
- ] as const,
126
- config: {},
127
- });
128
-
129
- export type FlingGestureHandlerEventPayload = {
130
- x: number;
131
- y: number;
132
- absoluteX: number;
133
- absoluteY: number;
134
- };
135
-
136
- export interface FlingGestureHandlerProps
137
- extends BaseGestureHandlerProps<FlingGestureHandlerEventPayload> {
138
- direction?: number;
139
- numberOfPointers?: number;
140
- }
141
-
142
- export type FlingGestureHandler = typeof FlingGestureHandler;
143
- // eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; see description on the top of this file
144
- export const FlingGestureHandler = createHandler<
145
- FlingGestureHandlerProps,
146
- FlingGestureHandlerEventPayload
147
- >({
148
- name: 'FlingGestureHandler',
149
- allowedProps: [...baseProps, 'numberOfPointers', 'direction'] as const,
150
- config: {},
151
- });
152
-
153
- class ForceTouchFallback extends React.Component {
154
- static forceTouchAvailable = false;
155
- componentDidMount() {
156
- console.warn(
157
- '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'
158
- );
159
- }
160
- render() {
161
- return this.props.children;
162
- }
163
- }
164
-
165
- export type ForceTouchGestureHandlerEventPayload = {
166
- x: number;
167
- y: number;
168
- absoluteX: number;
169
- absoluteY: number;
170
- force: number;
171
- };
172
-
173
- export interface ForceTouchGestureHandlerProps
174
- extends BaseGestureHandlerProps<ForceTouchGestureHandlerEventPayload> {
175
- minForce?: number;
176
- maxForce?: number;
177
- feedbackOnActivation?: boolean;
178
- }
179
-
180
- export type ForceTouchGestureHandler = typeof ForceTouchGestureHandler & {
181
- forceTouchAvailable: boolean;
182
- };
183
- // eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; see description on the top of this file
184
- export const ForceTouchGestureHandler = PlatformConstants?.forceTouchAvailable
185
- ? createHandler<
186
- ForceTouchGestureHandlerProps,
187
- ForceTouchGestureHandlerEventPayload
188
- >({
189
- name: 'ForceTouchGestureHandler',
190
- allowedProps: [
191
- ...baseProps,
192
- 'minForce',
193
- 'maxForce',
194
- 'feedbackOnActivation',
195
- ] as const,
196
- config: {},
197
- })
198
- : ForceTouchFallback;
199
-
200
- (ForceTouchGestureHandler as ForceTouchGestureHandler).forceTouchAvailable =
201
- PlatformConstants?.forceTouchAvailable || false;
202
-
203
- export type LongPressGestureHandlerEventPayload = {
204
- x: number;
205
- y: number;
206
- absoluteX: number;
207
- absoluteY: number;
208
- };
209
-
210
- export interface LongPressGestureHandlerProps
211
- extends BaseGestureHandlerProps<LongPressGestureHandlerEventPayload> {
212
- minDurationMs?: number;
213
- maxDist?: number;
214
- }
215
-
216
- export type LongPressGestureHandler = typeof LongPressGestureHandler;
217
- // eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; see description on the top of this file
218
- export const LongPressGestureHandler = createHandler<
219
- LongPressGestureHandlerProps,
220
- LongPressGestureHandlerEventPayload
221
- >({
222
- name: 'LongPressGestureHandler',
223
- allowedProps: [...baseProps, 'minDurationMs', 'maxDist'] as const,
224
- config: {},
225
- });
226
-
227
- function validatePanGestureHandlerProps(props: PanGestureHandlerProps) {
228
- if (props.minDeltaX && props.activeOffsetX) {
229
- throw new Error(
230
- `It's not supported use minDeltaX with activeOffsetXStart or activeOffsetXEnd`
231
- );
232
- }
233
- if (props.maxDeltaX && props.failOffsetX) {
234
- throw new Error(
235
- `It's not supported use minDeltaX with activeOffsetXStart or activeOffsetXEnd`
236
- );
237
- }
238
- if (props.minDeltaY && props.activeOffsetY) {
239
- throw new Error(
240
- `It's not supported use minDeltaX with activeOffsetYStart or activeOffsetYEnd`
241
- );
242
- }
243
- if (props.maxDeltaY && props.failOffsetY) {
244
- throw new Error(
245
- `It's not supported use minDeltaX with activeOffsetYStart or activeOffsetYEnd`
246
- );
247
- }
248
- if (
249
- Array.isArray(props.activeOffsetX) &&
250
- (props.activeOffsetX[0] > 0 || props.activeOffsetX[1] < 0)
251
- ) {
252
- throw new Error(
253
- `First element of activeOffsetX should be negative, a the second one should be positive`
254
- );
255
- }
256
-
257
- if (
258
- Array.isArray(props.activeOffsetY) &&
259
- (props.activeOffsetY[0] > 0 || props.activeOffsetY[1] < 0)
260
- ) {
261
- throw new Error(
262
- `First element of activeOffsetY should be negative, a the second one should be positive`
263
- );
264
- }
265
-
266
- if (
267
- Array.isArray(props.failOffsetX) &&
268
- (props.failOffsetX[0] > 0 || props.failOffsetX[1] < 0)
269
- ) {
270
- throw new Error(
271
- `First element of failOffsetX should be negative, a the second one should be positive`
272
- );
273
- }
274
-
275
- if (
276
- Array.isArray(props.failOffsetY) &&
277
- (props.failOffsetY[0] > 0 || props.failOffsetY[1] < 0)
278
- ) {
279
- throw new Error(
280
- `First element of failOffsetY should be negative, a the second one should be positive`
281
- );
282
- }
283
- }
284
-
285
- function transformPanGestureHandlerProps(props: PanGestureHandlerProps) {
286
- type InternalPanGHKeys =
287
- | 'activeOffsetXStart'
288
- | 'activeOffsetXEnd'
289
- | 'failOffsetXStart'
290
- | 'failOffsetXEnd'
291
- | 'activeOffsetYStart'
292
- | 'activeOffsetYEnd'
293
- | 'failOffsetYStart'
294
- | 'failOffsetYEnd';
295
- type PanGestureHandlerInternalProps = PanGestureHandlerProps &
296
- Partial<Record<InternalPanGHKeys, number>>;
297
-
298
- const res: PanGestureHandlerInternalProps = { ...props };
299
- if (props.minDeltaX !== undefined) {
300
- delete res.minDeltaX;
301
- res.activeOffsetXStart = -props.minDeltaX;
302
- res.activeOffsetXEnd = props.minDeltaX;
303
- }
304
- if (props.maxDeltaX !== undefined) {
305
- delete res.maxDeltaX;
306
- res.failOffsetXStart = -props.maxDeltaX;
307
- res.failOffsetXEnd = props.maxDeltaX;
308
- }
309
- if (props.minOffsetX !== undefined) {
310
- delete res.minOffsetX;
311
- if (props.minOffsetX < 0) {
312
- res.activeOffsetXStart = props.minOffsetX;
313
- } else {
314
- res.activeOffsetXEnd = props.minOffsetX;
315
- }
316
- }
317
-
318
- if (props.minDeltaY !== undefined) {
319
- delete res.minDeltaY;
320
- res.activeOffsetYStart = -props.minDeltaY;
321
- res.activeOffsetYEnd = props.minDeltaY;
322
- }
323
- if (props.maxDeltaY !== undefined) {
324
- delete res.maxDeltaY;
325
- res.failOffsetYStart = -props.maxDeltaY;
326
- res.failOffsetYEnd = props.maxDeltaY;
327
- }
328
-
329
- if (props.minOffsetY !== undefined) {
330
- delete res.minOffsetY;
331
- if (props.minOffsetY < 0) {
332
- res.activeOffsetYStart = props.minOffsetY;
333
- } else {
334
- res.activeOffsetYEnd = props.minOffsetY;
335
- }
336
- }
337
-
338
- if (props.activeOffsetX !== undefined) {
339
- delete res.activeOffsetX;
340
- if (Array.isArray(props.activeOffsetX)) {
341
- res.activeOffsetXStart = props.activeOffsetX[0];
342
- res.activeOffsetXEnd = props.activeOffsetX[1];
343
- } else if (props.activeOffsetX < 0) {
344
- res.activeOffsetXStart = props.activeOffsetX;
345
- } else {
346
- res.activeOffsetXEnd = props.activeOffsetX;
347
- }
348
- }
349
-
350
- if (props.activeOffsetY !== undefined) {
351
- delete res.activeOffsetY;
352
- if (Array.isArray(props.activeOffsetY)) {
353
- res.activeOffsetYStart = props.activeOffsetY[0];
354
- res.activeOffsetYEnd = props.activeOffsetY[1];
355
- } else if (props.activeOffsetY < 0) {
356
- res.activeOffsetYStart = props.activeOffsetY;
357
- } else {
358
- res.activeOffsetYEnd = props.activeOffsetY;
359
- }
360
- }
361
-
362
- if (props.failOffsetX !== undefined) {
363
- delete res.failOffsetX;
364
- if (Array.isArray(props.failOffsetX)) {
365
- res.failOffsetXStart = props.failOffsetX[0];
366
- res.failOffsetXEnd = props.failOffsetX[1];
367
- } else if (props.failOffsetX < 0) {
368
- res.failOffsetXStart = props.failOffsetX;
369
- } else {
370
- res.failOffsetXEnd = props.failOffsetX;
371
- }
372
- }
373
-
374
- if (props.failOffsetY !== undefined) {
375
- delete res.failOffsetY;
376
- if (Array.isArray(props.failOffsetY)) {
377
- res.failOffsetYStart = props.failOffsetY[0];
378
- res.failOffsetYEnd = props.failOffsetY[1];
379
- } else if (props.failOffsetY < 0) {
380
- res.failOffsetYStart = props.failOffsetY;
381
- } else {
382
- res.failOffsetYEnd = props.failOffsetY;
383
- }
384
- }
385
-
386
- return res;
387
- }
388
-
389
- function managePanProps(props: PanGestureHandlerProps) {
390
- if (__DEV__) {
391
- validatePanGestureHandlerProps(props);
392
- }
393
- return transformPanGestureHandlerProps(props);
394
- }
395
-
396
- export type PanGestureHandlerEventPayload = {
397
- x: number;
398
- y: number;
399
- absoluteX: number;
400
- absoluteY: number;
401
- translationX: number;
402
- translationY: number;
403
- velocityX: number;
404
- velocityY: number;
405
- };
406
-
407
- export interface PanGestureHandlerProps
408
- extends BaseGestureHandlerProps<PanGestureHandlerEventPayload> {
409
- /** @deprecated use activeOffsetX*/
410
- minDeltaX?: number;
411
- /** @deprecated use activeOffsetY*/
412
- minDeltaY?: number;
413
- /** @deprecated use failOffsetX*/
414
- maxDeltaX?: number;
415
- /** @deprecated use failOffsetY*/
416
- maxDeltaY?: number;
417
- /** @deprecated use activeOffsetX*/
418
- minOffsetX?: number;
419
- /** @deprecated use failOffsetY*/
420
- minOffsetY?: number;
421
- activeOffsetY?: number | number[];
422
- activeOffsetX?: number | number[];
423
- failOffsetY?: number | number[];
424
- failOffsetX?: number | number[];
425
- minDist?: number;
426
- minVelocity?: number;
427
- minVelocityX?: number;
428
- minVelocityY?: number;
429
- minPointers?: number;
430
- maxPointers?: number;
431
- avgTouches?: boolean;
432
- enableTrackpadTwoFingerGesture?: boolean;
433
- }
434
-
435
- export type PanGestureHandler = typeof PanGestureHandler;
436
- // eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; see description on the top of this file
437
- export const PanGestureHandler = createHandler<
438
- PanGestureHandlerProps,
439
- PanGestureHandlerEventPayload
440
- >({
441
- name: 'PanGestureHandler',
442
- allowedProps: [
443
- ...baseProps,
444
- 'activeOffsetY',
445
- 'activeOffsetX',
446
- 'failOffsetY',
447
- 'failOffsetX',
448
- 'minDist',
449
- 'minVelocity',
450
- 'minVelocityX',
451
- 'minVelocityY',
452
- 'minPointers',
453
- 'maxPointers',
454
- 'avgTouches',
455
- 'enableTrackpadTwoFingerGesture',
456
- ] as const,
457
- config: {},
458
- transformProps: managePanProps,
459
- customNativeProps: [
460
- 'activeOffsetYStart',
461
- 'activeOffsetYEnd',
462
- 'activeOffsetXStart',
463
- 'activeOffsetXEnd',
464
- 'failOffsetYStart',
465
- 'failOffsetYEnd',
466
- 'failOffsetXStart',
467
- 'failOffsetXEnd',
468
- ],
469
- });
470
-
471
- export type PinchGestureHandlerEventPayload = {
472
- scale: number;
473
- focalX: number;
474
- focalY: number;
475
- velocity: number;
476
- };
477
-
478
- export interface PinchGestureHandlerProps
479
- extends BaseGestureHandlerProps<PinchGestureHandlerEventPayload> {}
480
-
481
- export type PinchGestureHandler = typeof PinchGestureHandler;
482
- // eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; see description on the top of this file
483
- export const PinchGestureHandler = createHandler<
484
- PinchGestureHandlerProps,
485
- PinchGestureHandlerEventPayload
486
- >({
487
- name: 'PinchGestureHandler',
488
- allowedProps: baseProps,
489
- config: {},
490
- });
491
-
492
- export type RotationGestureHandlerEventPayload = {
493
- rotation: number;
494
- anchorX: number;
495
- anchorY: number;
496
- velocity: number;
497
- };
498
-
499
- export interface RotationGestureHandlerProps
500
- extends BaseGestureHandlerProps<RotationGestureHandlerEventPayload> {}
501
-
502
- export type RotationGestureHandler = typeof RotationGestureHandler;
503
- // eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; see description on the top of this file
504
- export const RotationGestureHandler = createHandler<
505
- RotationGestureHandlerProps,
506
- RotationGestureHandlerEventPayload
507
- >({
508
- name: 'RotationGestureHandler',
509
- allowedProps: baseProps,
510
- config: {},
511
- });