react-native-gesture-handler 2.17.0 → 2.18.0

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 (428) hide show
  1. package/ReanimatedSwipeable/package.json +6 -0
  2. package/android/build.gradle +0 -105
  3. package/android/gradle.properties +0 -7
  4. package/android/paper/src/main/java/com/swmansion/gesturehandler/NativeRNGestureHandlerModuleSpec.java +22 -10
  5. package/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandlerOrchestrator.kt +1 -1
  6. package/android/src/main/java/com/swmansion/gesturehandler/core/NativeViewGestureHandler.kt +16 -0
  7. package/android/src/main/java/com/swmansion/gesturehandler/core/PinchGestureHandler.kt +7 -8
  8. package/android/src/main/java/com/swmansion/gesturehandler/core/RotationGestureDetector.kt +14 -4
  9. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEvent.kt +3 -1
  10. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerStateChangeEvent.kt +3 -1
  11. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerTouchEvent.kt +2 -1
  12. package/android/src/main/java/com/swmansion/gesturehandler/react/RNViewConfigurationHelper.kt +8 -7
  13. package/android/src/main/jni/cpp-adapter.cpp +5 -3
  14. package/apple/Handlers/RNFlingHandler.m +1 -0
  15. package/apple/Handlers/RNForceTouchHandler.m +2 -0
  16. package/apple/Handlers/RNLongPressHandler.m +2 -1
  17. package/apple/Handlers/RNManualHandler.m +1 -0
  18. package/apple/Handlers/RNNativeViewHandler.mm +31 -27
  19. package/apple/Handlers/RNPanHandler.m +1 -0
  20. package/apple/Handlers/RNPinchHandler.m +1 -0
  21. package/apple/Handlers/RNRotationHandler.m +1 -0
  22. package/apple/Handlers/RNTapHandler.m +1 -0
  23. package/apple/RNGestureHandlerModule.mm +3 -2
  24. package/apple/RNRootViewGestureRecognizer.m +5 -0
  25. package/lib/commonjs/Directions.js +2 -2
  26. package/lib/commonjs/Directions.js.map +1 -1
  27. package/lib/commonjs/RNGestureHandlerModule.web.js +2 -2
  28. package/lib/commonjs/RNGestureHandlerModule.web.js.map +1 -1
  29. package/lib/commonjs/components/DrawerLayout.js +2 -2
  30. package/lib/commonjs/components/DrawerLayout.js.map +1 -1
  31. package/lib/commonjs/components/GestureButtons.js +3 -3
  32. package/lib/commonjs/components/GestureButtons.js.map +1 -1
  33. package/lib/commonjs/components/GestureButtonsProps.js +6 -0
  34. package/lib/commonjs/components/GestureButtonsProps.js.map +1 -0
  35. package/lib/commonjs/components/GestureComponents.js +1 -1
  36. package/lib/commonjs/components/GestureComponents.js.map +1 -1
  37. package/lib/commonjs/components/GestureHandlerButton.js.map +1 -1
  38. package/lib/commonjs/components/GestureHandlerRootView.android.js +1 -1
  39. package/lib/commonjs/components/GestureHandlerRootView.android.js.map +1 -1
  40. package/lib/commonjs/components/GestureHandlerRootView.js +1 -1
  41. package/lib/commonjs/components/GestureHandlerRootView.js.map +1 -1
  42. package/lib/commonjs/components/Pressable/Pressable.js +334 -0
  43. package/lib/commonjs/components/Pressable/Pressable.js.map +1 -0
  44. package/lib/commonjs/components/Pressable/PressableProps.js +6 -0
  45. package/lib/commonjs/components/Pressable/PressableProps.js.map +1 -0
  46. package/lib/commonjs/components/Pressable/index.js +24 -0
  47. package/lib/commonjs/components/Pressable/index.js.map +1 -0
  48. package/lib/commonjs/components/Pressable/utils.js +136 -0
  49. package/lib/commonjs/components/Pressable/utils.js.map +1 -0
  50. package/lib/commonjs/components/ReanimatedSwipeable.js +317 -0
  51. package/lib/commonjs/components/ReanimatedSwipeable.js.map +1 -0
  52. package/lib/commonjs/components/Swipeable.js +3 -3
  53. package/lib/commonjs/components/Swipeable.js.map +1 -1
  54. package/lib/commonjs/components/touchables/GenericTouchable.js +4 -4
  55. package/lib/commonjs/components/touchables/GenericTouchable.js.map +1 -1
  56. package/lib/commonjs/components/touchables/GenericTouchableProps.js +6 -0
  57. package/lib/commonjs/components/touchables/GenericTouchableProps.js.map +1 -0
  58. package/lib/commonjs/components/touchables/TouchableHighlight.js.map +1 -1
  59. package/lib/commonjs/components/touchables/TouchableNativeFeedback.android.js +1 -1
  60. package/lib/commonjs/components/touchables/TouchableNativeFeedback.android.js.map +1 -1
  61. package/lib/commonjs/components/touchables/TouchableNativeFeedbackProps.js +6 -0
  62. package/lib/commonjs/components/touchables/TouchableNativeFeedbackProps.js.map +1 -0
  63. package/lib/commonjs/components/touchables/TouchableOpacity.js.map +1 -1
  64. package/lib/commonjs/components/touchables/TouchableWithoutFeedback.js.map +1 -1
  65. package/lib/commonjs/getShadowNodeFromRef.js +2 -2
  66. package/lib/commonjs/getShadowNodeFromRef.js.map +1 -1
  67. package/lib/commonjs/ghQueueMicrotask.js +3 -4
  68. package/lib/commonjs/ghQueueMicrotask.js.map +1 -1
  69. package/lib/commonjs/handlers/FlingGestureHandler.js.map +1 -1
  70. package/lib/commonjs/handlers/ForceTouchGestureHandler.js.map +1 -1
  71. package/lib/commonjs/handlers/GestureHandlerEventPayload.js +2 -0
  72. package/lib/commonjs/handlers/GestureHandlerEventPayload.js.map +1 -0
  73. package/lib/commonjs/handlers/LongPressGestureHandler.js.map +1 -1
  74. package/lib/commonjs/handlers/NativeViewGestureHandler.js.map +1 -1
  75. package/lib/commonjs/handlers/PanGestureHandler.js.map +1 -1
  76. package/lib/commonjs/handlers/PinchGestureHandler.js.map +1 -1
  77. package/lib/commonjs/handlers/RotationGestureHandler.js.map +1 -1
  78. package/lib/commonjs/handlers/TapGestureHandler.js.map +1 -1
  79. package/lib/commonjs/handlers/createHandler.js +21 -19
  80. package/lib/commonjs/handlers/createHandler.js.map +1 -1
  81. package/lib/commonjs/handlers/createNativeWrapper.js +3 -3
  82. package/lib/commonjs/handlers/createNativeWrapper.js.map +1 -1
  83. package/lib/commonjs/handlers/gestureHandlerCommon.js +0 -86
  84. package/lib/commonjs/handlers/gestureHandlerCommon.js.map +1 -1
  85. package/lib/commonjs/handlers/gestures/GestureDetector/Wrap.js.map +1 -1
  86. package/lib/commonjs/handlers/gestures/GestureDetector/attachHandlers.js +9 -9
  87. package/lib/commonjs/handlers/gestures/GestureDetector/attachHandlers.js.map +1 -1
  88. package/lib/commonjs/handlers/gestures/GestureDetector/dropHandlers.js +2 -2
  89. package/lib/commonjs/handlers/gestures/GestureDetector/dropHandlers.js.map +1 -1
  90. package/lib/commonjs/handlers/gestures/GestureDetector/index.js +1 -1
  91. package/lib/commonjs/handlers/gestures/GestureDetector/index.js.map +1 -1
  92. package/lib/commonjs/handlers/gestures/GestureDetector/updateHandlers.js +21 -31
  93. package/lib/commonjs/handlers/gestures/GestureDetector/updateHandlers.js.map +1 -1
  94. package/lib/commonjs/handlers/gestures/GestureDetector/useDetectorUpdater.js +1 -1
  95. package/lib/commonjs/handlers/gestures/GestureDetector/useDetectorUpdater.js.map +1 -1
  96. package/lib/commonjs/handlers/gestures/GestureDetector/utils.js +5 -5
  97. package/lib/commonjs/handlers/gestures/GestureDetector/utils.js.map +1 -1
  98. package/lib/commonjs/handlers/gestures/flingGesture.js.map +1 -1
  99. package/lib/commonjs/handlers/gestures/forceTouchGesture.js.map +1 -1
  100. package/lib/commonjs/handlers/gestures/gesture.js +7 -7
  101. package/lib/commonjs/handlers/gestures/gesture.js.map +1 -1
  102. package/lib/commonjs/handlers/gestures/gestureComposition.js +5 -5
  103. package/lib/commonjs/handlers/gestures/gestureComposition.js.map +1 -1
  104. package/lib/commonjs/handlers/gestures/gestureStateManager.js +1 -1
  105. package/lib/commonjs/handlers/gestures/gestureStateManager.js.map +1 -1
  106. package/lib/commonjs/handlers/gestures/longPressGesture.js.map +1 -1
  107. package/lib/commonjs/handlers/gestures/nativeGesture.js.map +1 -1
  108. package/lib/commonjs/handlers/gestures/panGesture.js.map +1 -1
  109. package/lib/commonjs/handlers/gestures/pinchGesture.js.map +1 -1
  110. package/lib/commonjs/handlers/gestures/rotationGesture.js.map +1 -1
  111. package/lib/commonjs/handlers/gestures/tapGesture.js.map +1 -1
  112. package/lib/commonjs/handlers/getNextHandlerTag.js +12 -0
  113. package/lib/commonjs/handlers/getNextHandlerTag.js.map +1 -0
  114. package/lib/commonjs/handlers/handlersRegistry.js +0 -6
  115. package/lib/commonjs/handlers/handlersRegistry.js.map +1 -1
  116. package/lib/commonjs/handlers/utils.js +91 -0
  117. package/lib/commonjs/handlers/utils.js.map +1 -0
  118. package/lib/commonjs/index.js +8 -0
  119. package/lib/commonjs/index.js.map +1 -1
  120. package/lib/commonjs/init.js +1 -1
  121. package/lib/commonjs/init.js.map +1 -1
  122. package/lib/commonjs/jestUtils/jestUtils.js +2 -2
  123. package/lib/commonjs/jestUtils/jestUtils.js.map +1 -1
  124. package/lib/commonjs/mocks.js +2 -2
  125. package/lib/commonjs/mocks.js.map +1 -1
  126. package/lib/commonjs/utils.js +1 -1
  127. package/lib/commonjs/utils.js.map +1 -1
  128. package/lib/commonjs/web/Gestures.js +1 -1
  129. package/lib/commonjs/web/Gestures.js.map +1 -1
  130. package/lib/commonjs/web/detectors/RotationGestureDetector.js +1 -1
  131. package/lib/commonjs/web/detectors/RotationGestureDetector.js.map +1 -1
  132. package/lib/commonjs/web/detectors/ScaleGestureDetector.js +4 -4
  133. package/lib/commonjs/web/detectors/ScaleGestureDetector.js.map +1 -1
  134. package/lib/commonjs/web/handlers/FlingGestureHandler.js +1 -1
  135. package/lib/commonjs/web/handlers/FlingGestureHandler.js.map +1 -1
  136. package/lib/commonjs/web/handlers/GestureHandler.js +6 -11
  137. package/lib/commonjs/web/handlers/GestureHandler.js.map +1 -1
  138. package/lib/commonjs/web/handlers/NativeViewGestureHandler.js +1 -1
  139. package/lib/commonjs/web/handlers/NativeViewGestureHandler.js.map +1 -1
  140. package/lib/commonjs/web/handlers/PanGestureHandler.js +1 -1
  141. package/lib/commonjs/web/handlers/PanGestureHandler.js.map +1 -1
  142. package/lib/commonjs/web/handlers/TapGestureHandler.js +1 -1
  143. package/lib/commonjs/web/handlers/TapGestureHandler.js.map +1 -1
  144. package/lib/commonjs/web/tools/EventManager.js +2 -2
  145. package/lib/commonjs/web/tools/EventManager.js.map +1 -1
  146. package/lib/commonjs/web/tools/GestureHandlerWebDelegate.js +4 -11
  147. package/lib/commonjs/web/tools/GestureHandlerWebDelegate.js.map +1 -1
  148. package/lib/commonjs/web/tools/LeastSquareSolver.js +18 -18
  149. package/lib/commonjs/web/tools/LeastSquareSolver.js.map +1 -1
  150. package/lib/commonjs/web/tools/PointerEventManager.js +2 -2
  151. package/lib/commonjs/web/tools/PointerEventManager.js.map +1 -1
  152. package/lib/commonjs/web/tools/PointerTracker.js +1 -1
  153. package/lib/commonjs/web/tools/PointerTracker.js.map +1 -1
  154. package/lib/commonjs/web/tools/TouchEventManager.js +4 -4
  155. package/lib/commonjs/web/tools/TouchEventManager.js.map +1 -1
  156. package/lib/commonjs/web/tools/VelocityTracker.js +6 -6
  157. package/lib/commonjs/web/tools/VelocityTracker.js.map +1 -1
  158. package/lib/commonjs/web_hammer/NodeManager.js +2 -0
  159. package/lib/commonjs/web_hammer/NodeManager.js.map +1 -1
  160. package/lib/module/Directions.js +2 -2
  161. package/lib/module/Directions.js.map +1 -1
  162. package/lib/module/RNGestureHandlerModule.web.js +2 -2
  163. package/lib/module/RNGestureHandlerModule.web.js.map +1 -1
  164. package/lib/module/components/DrawerLayout.js +2 -2
  165. package/lib/module/components/DrawerLayout.js.map +1 -1
  166. package/lib/module/components/GestureButtons.js +3 -3
  167. package/lib/module/components/GestureButtons.js.map +1 -1
  168. package/lib/module/components/GestureButtonsProps.js +2 -0
  169. package/lib/module/components/GestureButtonsProps.js.map +1 -0
  170. package/lib/module/components/GestureComponents.js +1 -1
  171. package/lib/module/components/GestureComponents.js.map +1 -1
  172. package/lib/module/components/GestureHandlerButton.js.map +1 -1
  173. package/lib/module/components/GestureHandlerRootView.android.js +1 -1
  174. package/lib/module/components/GestureHandlerRootView.android.js.map +1 -1
  175. package/lib/module/components/GestureHandlerRootView.js +1 -1
  176. package/lib/module/components/GestureHandlerRootView.js.map +1 -1
  177. package/lib/module/components/Pressable/Pressable.js +309 -0
  178. package/lib/module/components/Pressable/Pressable.js.map +1 -0
  179. package/lib/module/components/Pressable/PressableProps.js +2 -0
  180. package/lib/module/components/Pressable/PressableProps.js.map +1 -0
  181. package/lib/module/components/Pressable/index.js +3 -0
  182. package/lib/module/components/Pressable/index.js.map +1 -0
  183. package/lib/module/components/Pressable/utils.js +120 -0
  184. package/lib/module/components/Pressable/utils.js.map +1 -0
  185. package/lib/module/components/ReanimatedSwipeable.js +293 -0
  186. package/lib/module/components/ReanimatedSwipeable.js.map +1 -0
  187. package/lib/module/components/Swipeable.js +3 -3
  188. package/lib/module/components/Swipeable.js.map +1 -1
  189. package/lib/module/components/touchables/GenericTouchable.js +4 -4
  190. package/lib/module/components/touchables/GenericTouchable.js.map +1 -1
  191. package/lib/module/components/touchables/GenericTouchableProps.js +2 -0
  192. package/lib/module/components/touchables/GenericTouchableProps.js.map +1 -0
  193. package/lib/module/components/touchables/TouchableHighlight.js.map +1 -1
  194. package/lib/module/components/touchables/TouchableNativeFeedback.android.js +1 -1
  195. package/lib/module/components/touchables/TouchableNativeFeedback.android.js.map +1 -1
  196. package/lib/module/components/touchables/TouchableNativeFeedbackProps.js +2 -0
  197. package/lib/module/components/touchables/TouchableNativeFeedbackProps.js.map +1 -0
  198. package/lib/module/components/touchables/TouchableOpacity.js.map +1 -1
  199. package/lib/module/components/touchables/TouchableWithoutFeedback.js.map +1 -1
  200. package/lib/module/getShadowNodeFromRef.js +2 -2
  201. package/lib/module/getShadowNodeFromRef.js.map +1 -1
  202. package/lib/module/ghQueueMicrotask.js +3 -4
  203. package/lib/module/ghQueueMicrotask.js.map +1 -1
  204. package/lib/module/handlers/FlingGestureHandler.js.map +1 -1
  205. package/lib/module/handlers/ForceTouchGestureHandler.js.map +1 -1
  206. package/lib/module/handlers/GestureHandlerEventPayload.js +2 -0
  207. package/lib/module/handlers/GestureHandlerEventPayload.js.map +1 -0
  208. package/lib/module/handlers/LongPressGestureHandler.js.map +1 -1
  209. package/lib/module/handlers/NativeViewGestureHandler.js.map +1 -1
  210. package/lib/module/handlers/PanGestureHandler.js.map +1 -1
  211. package/lib/module/handlers/PinchGestureHandler.js.map +1 -1
  212. package/lib/module/handlers/RotationGestureHandler.js.map +1 -1
  213. package/lib/module/handlers/TapGestureHandler.js.map +1 -1
  214. package/lib/module/handlers/createHandler.js +6 -5
  215. package/lib/module/handlers/createHandler.js.map +1 -1
  216. package/lib/module/handlers/createNativeWrapper.js +3 -3
  217. package/lib/module/handlers/createNativeWrapper.js.map +1 -1
  218. package/lib/module/handlers/gestureHandlerCommon.js +0 -72
  219. package/lib/module/handlers/gestureHandlerCommon.js.map +1 -1
  220. package/lib/module/handlers/gestures/GestureDetector/Wrap.js.map +1 -1
  221. package/lib/module/handlers/gestures/GestureDetector/attachHandlers.js +4 -4
  222. package/lib/module/handlers/gestures/GestureDetector/attachHandlers.js.map +1 -1
  223. package/lib/module/handlers/gestures/GestureDetector/dropHandlers.js +1 -1
  224. package/lib/module/handlers/gestures/GestureDetector/dropHandlers.js.map +1 -1
  225. package/lib/module/handlers/gestures/GestureDetector/index.js +1 -1
  226. package/lib/module/handlers/gestures/GestureDetector/index.js.map +1 -1
  227. package/lib/module/handlers/gestures/GestureDetector/updateHandlers.js +18 -28
  228. package/lib/module/handlers/gestures/GestureDetector/updateHandlers.js.map +1 -1
  229. package/lib/module/handlers/gestures/GestureDetector/useDetectorUpdater.js +1 -1
  230. package/lib/module/handlers/gestures/GestureDetector/useDetectorUpdater.js.map +1 -1
  231. package/lib/module/handlers/gestures/GestureDetector/utils.js +5 -5
  232. package/lib/module/handlers/gestures/GestureDetector/utils.js.map +1 -1
  233. package/lib/module/handlers/gestures/flingGesture.js.map +1 -1
  234. package/lib/module/handlers/gestures/forceTouchGesture.js.map +1 -1
  235. package/lib/module/handlers/gestures/gesture.js +6 -6
  236. package/lib/module/handlers/gestures/gesture.js.map +1 -1
  237. package/lib/module/handlers/gestures/gestureComposition.js +5 -5
  238. package/lib/module/handlers/gestures/gestureComposition.js.map +1 -1
  239. package/lib/module/handlers/gestures/gestureStateManager.js +1 -1
  240. package/lib/module/handlers/gestures/gestureStateManager.js.map +1 -1
  241. package/lib/module/handlers/gestures/longPressGesture.js.map +1 -1
  242. package/lib/module/handlers/gestures/nativeGesture.js.map +1 -1
  243. package/lib/module/handlers/gestures/panGesture.js.map +1 -1
  244. package/lib/module/handlers/gestures/pinchGesture.js.map +1 -1
  245. package/lib/module/handlers/gestures/rotationGesture.js.map +1 -1
  246. package/lib/module/handlers/gestures/tapGesture.js.map +1 -1
  247. package/lib/module/handlers/getNextHandlerTag.js +5 -0
  248. package/lib/module/handlers/getNextHandlerTag.js.map +1 -0
  249. package/lib/module/handlers/handlersRegistry.js +0 -4
  250. package/lib/module/handlers/handlersRegistry.js.map +1 -1
  251. package/lib/module/handlers/utils.js +73 -0
  252. package/lib/module/handlers/utils.js.map +1 -0
  253. package/lib/module/index.js +1 -0
  254. package/lib/module/index.js.map +1 -1
  255. package/lib/module/init.js +1 -1
  256. package/lib/module/init.js.map +1 -1
  257. package/lib/module/jestUtils/jestUtils.js +2 -2
  258. package/lib/module/jestUtils/jestUtils.js.map +1 -1
  259. package/lib/module/mocks.js +2 -2
  260. package/lib/module/mocks.js.map +1 -1
  261. package/lib/module/utils.js +1 -1
  262. package/lib/module/utils.js.map +1 -1
  263. package/lib/module/web/Gestures.js +1 -1
  264. package/lib/module/web/Gestures.js.map +1 -1
  265. package/lib/module/web/detectors/RotationGestureDetector.js +1 -1
  266. package/lib/module/web/detectors/RotationGestureDetector.js.map +1 -1
  267. package/lib/module/web/detectors/ScaleGestureDetector.js +4 -4
  268. package/lib/module/web/detectors/ScaleGestureDetector.js.map +1 -1
  269. package/lib/module/web/handlers/FlingGestureHandler.js +1 -1
  270. package/lib/module/web/handlers/FlingGestureHandler.js.map +1 -1
  271. package/lib/module/web/handlers/GestureHandler.js +6 -11
  272. package/lib/module/web/handlers/GestureHandler.js.map +1 -1
  273. package/lib/module/web/handlers/NativeViewGestureHandler.js +1 -1
  274. package/lib/module/web/handlers/NativeViewGestureHandler.js.map +1 -1
  275. package/lib/module/web/handlers/PanGestureHandler.js +1 -1
  276. package/lib/module/web/handlers/PanGestureHandler.js.map +1 -1
  277. package/lib/module/web/handlers/TapGestureHandler.js +1 -1
  278. package/lib/module/web/handlers/TapGestureHandler.js.map +1 -1
  279. package/lib/module/web/tools/EventManager.js +2 -2
  280. package/lib/module/web/tools/EventManager.js.map +1 -1
  281. package/lib/module/web/tools/GestureHandlerWebDelegate.js +4 -11
  282. package/lib/module/web/tools/GestureHandlerWebDelegate.js.map +1 -1
  283. package/lib/module/web/tools/LeastSquareSolver.js +18 -18
  284. package/lib/module/web/tools/LeastSquareSolver.js.map +1 -1
  285. package/lib/module/web/tools/PointerEventManager.js +2 -2
  286. package/lib/module/web/tools/PointerEventManager.js.map +1 -1
  287. package/lib/module/web/tools/PointerTracker.js +1 -1
  288. package/lib/module/web/tools/PointerTracker.js.map +1 -1
  289. package/lib/module/web/tools/TouchEventManager.js +4 -4
  290. package/lib/module/web/tools/TouchEventManager.js.map +1 -1
  291. package/lib/module/web/tools/VelocityTracker.js +6 -6
  292. package/lib/module/web/tools/VelocityTracker.js.map +1 -1
  293. package/lib/module/web_hammer/NodeManager.js +1 -1
  294. package/lib/module/web_hammer/NodeManager.js.map +1 -1
  295. package/lib/typescript/RNGestureHandlerModule.web.d.ts +1 -1
  296. package/lib/typescript/components/GestureButtons.d.ts +2 -85
  297. package/lib/typescript/components/GestureButtonsProps.d.ts +99 -0
  298. package/lib/typescript/components/GestureHandlerButton.d.ts +1 -1
  299. package/lib/typescript/components/Pressable/Pressable.d.ts +3 -0
  300. package/lib/typescript/components/Pressable/PressableProps.d.ts +116 -0
  301. package/lib/typescript/components/Pressable/index.d.ts +2 -0
  302. package/lib/typescript/components/Pressable/utils.d.ts +15 -0
  303. package/lib/typescript/components/ReanimatedSwipeable.d.ts +125 -0
  304. package/lib/typescript/components/touchables/GenericTouchable.d.ts +4 -16
  305. package/lib/typescript/components/touchables/GenericTouchableProps.d.ts +14 -0
  306. package/lib/typescript/components/touchables/TouchableHighlight.d.ts +1 -1
  307. package/lib/typescript/components/touchables/TouchableNativeFeedback.android.d.ts +2 -9
  308. package/lib/typescript/components/touchables/TouchableNativeFeedbackProps.d.ts +9 -0
  309. package/lib/typescript/components/touchables/TouchableOpacity.d.ts +1 -1
  310. package/lib/typescript/components/touchables/TouchableWithoutFeedback.d.ts +2 -1
  311. package/lib/typescript/handlers/FlingGestureHandler.d.ts +2 -6
  312. package/lib/typescript/handlers/ForceTouchGestureHandler.d.ts +1 -10
  313. package/lib/typescript/handlers/GestureHandlerEventPayload.d.ts +159 -0
  314. package/lib/typescript/handlers/LongPressGestureHandler.d.ts +2 -35
  315. package/lib/typescript/handlers/NativeViewGestureHandler.d.ts +2 -6
  316. package/lib/typescript/handlers/PanGestureHandler.d.ts +3 -51
  317. package/lib/typescript/handlers/PinchGestureHandler.d.ts +2 -23
  318. package/lib/typescript/handlers/RotationGestureHandler.d.ts +2 -23
  319. package/lib/typescript/handlers/TapGestureHandler.d.ts +2 -6
  320. package/lib/typescript/handlers/gestureHandlerCommon.d.ts +0 -5
  321. package/lib/typescript/handlers/gestureHandlerTypesCompat.d.ts +10 -9
  322. package/lib/typescript/handlers/gestures/GestureDetector/types.d.ts +1 -0
  323. package/lib/typescript/handlers/gestures/GestureDetector/utils.d.ts +1 -0
  324. package/lib/typescript/handlers/gestures/flingGesture.d.ts +2 -1
  325. package/lib/typescript/handlers/gestures/forceTouchGesture.d.ts +2 -1
  326. package/lib/typescript/handlers/gestures/gesture.d.ts +2 -8
  327. package/lib/typescript/handlers/gestures/longPressGesture.d.ts +2 -1
  328. package/lib/typescript/handlers/gestures/nativeGesture.d.ts +2 -1
  329. package/lib/typescript/handlers/gestures/panGesture.d.ts +2 -1
  330. package/lib/typescript/handlers/gestures/pinchGesture.d.ts +1 -1
  331. package/lib/typescript/handlers/gestures/rotationGesture.d.ts +1 -1
  332. package/lib/typescript/handlers/gestures/tapGesture.d.ts +2 -1
  333. package/lib/typescript/handlers/getNextHandlerTag.d.ts +1 -0
  334. package/lib/typescript/handlers/handlersRegistry.d.ts +1 -2
  335. package/lib/typescript/handlers/utils.d.ts +6 -0
  336. package/lib/typescript/index.d.ts +12 -9
  337. package/lib/typescript/jestUtils/jestUtils.d.ts +9 -7
  338. package/lib/typescript/web/handlers/FlingGestureHandler.d.ts +1 -0
  339. package/lib/typescript/web/handlers/GestureHandler.d.ts +1 -0
  340. package/lib/typescript/web/handlers/HoverGestureHandler.d.ts +1 -0
  341. package/lib/typescript/web/handlers/LongPressGestureHandler.d.ts +1 -0
  342. package/lib/typescript/web/handlers/ManualGestureHandler.d.ts +1 -0
  343. package/lib/typescript/web/handlers/NativeViewGestureHandler.d.ts +1 -0
  344. package/lib/typescript/web/handlers/PanGestureHandler.d.ts +1 -0
  345. package/lib/typescript/web/handlers/PinchGestureHandler.d.ts +1 -0
  346. package/lib/typescript/web/handlers/RotationGestureHandler.d.ts +1 -0
  347. package/lib/typescript/web/handlers/TapGestureHandler.d.ts +1 -0
  348. package/lib/typescript/web_hammer/NodeManager.d.ts +4 -5
  349. package/package.json +14 -16
  350. package/src/Directions.ts +2 -2
  351. package/src/RNGestureHandlerModule.web.ts +2 -2
  352. package/src/components/DrawerLayout.tsx +7 -9
  353. package/src/components/GestureButtons.tsx +13 -123
  354. package/src/components/GestureButtonsProps.ts +115 -0
  355. package/src/components/GestureComponents.tsx +1 -1
  356. package/src/components/GestureHandlerButton.tsx +1 -1
  357. package/src/components/GestureHandlerRootView.android.tsx +1 -1
  358. package/src/components/GestureHandlerRootView.tsx +1 -1
  359. package/src/components/Pressable/Pressable.tsx +398 -0
  360. package/src/components/Pressable/PressableProps.tsx +149 -0
  361. package/src/components/Pressable/index.ts +2 -0
  362. package/src/components/Pressable/utils.ts +180 -0
  363. package/src/components/ReanimatedSwipeable.tsx +629 -0
  364. package/src/components/Swipeable.tsx +6 -6
  365. package/src/components/touchables/GenericTouchable.tsx +9 -36
  366. package/src/components/touchables/GenericTouchableProps.ts +26 -0
  367. package/src/components/touchables/TouchableHighlight.tsx +2 -4
  368. package/src/components/touchables/TouchableNativeFeedback.android.tsx +7 -17
  369. package/src/components/touchables/TouchableNativeFeedbackProps.tsx +12 -0
  370. package/src/components/touchables/TouchableOpacity.tsx +3 -5
  371. package/src/components/touchables/TouchableWithoutFeedback.tsx +2 -1
  372. package/src/getShadowNodeFromRef.ts +2 -2
  373. package/src/ghQueueMicrotask.ts +7 -4
  374. package/src/handlers/FlingGestureHandler.ts +1 -6
  375. package/src/handlers/ForceTouchGestureHandler.ts +1 -12
  376. package/src/handlers/GestureHandlerEventPayload.ts +184 -0
  377. package/src/handlers/LongPressGestureHandler.ts +1 -40
  378. package/src/handlers/NativeViewGestureHandler.ts +1 -7
  379. package/src/handlers/PanGestureHandler.ts +1 -58
  380. package/src/handlers/PinchGestureHandler.ts +1 -27
  381. package/src/handlers/RotationGestureHandler.ts +1 -27
  382. package/src/handlers/TapGestureHandler.ts +1 -6
  383. package/src/handlers/createHandler.tsx +6 -11
  384. package/src/handlers/createNativeWrapper.tsx +3 -3
  385. package/src/handlers/gestureHandlerCommon.ts +3 -79
  386. package/src/handlers/gestureHandlerTypesCompat.ts +16 -30
  387. package/src/handlers/gestures/GestureDetector/Wrap.tsx +1 -1
  388. package/src/handlers/gestures/GestureDetector/attachHandlers.ts +4 -7
  389. package/src/handlers/gestures/GestureDetector/dropHandlers.ts +1 -1
  390. package/src/handlers/gestures/GestureDetector/index.tsx +1 -1
  391. package/src/handlers/gestures/GestureDetector/updateHandlers.ts +20 -30
  392. package/src/handlers/gestures/GestureDetector/useDetectorUpdater.ts +1 -1
  393. package/src/handlers/gestures/GestureDetector/utils.ts +5 -5
  394. package/src/handlers/gestures/flingGesture.ts +2 -4
  395. package/src/handlers/gestures/forceTouchGesture.ts +2 -4
  396. package/src/handlers/gestures/gesture.ts +17 -15
  397. package/src/handlers/gestures/gestureComposition.ts +5 -5
  398. package/src/handlers/gestures/gestureStateManager.ts +1 -1
  399. package/src/handlers/gestures/longPressGesture.ts +2 -4
  400. package/src/handlers/gestures/nativeGesture.ts +2 -4
  401. package/src/handlers/gestures/panGesture.ts +2 -4
  402. package/src/handlers/gestures/pinchGesture.ts +1 -1
  403. package/src/handlers/gestures/rotationGesture.ts +1 -1
  404. package/src/handlers/gestures/tapGesture.ts +2 -4
  405. package/src/handlers/getNextHandlerTag.ts +5 -0
  406. package/src/handlers/handlersRegistry.ts +0 -6
  407. package/src/handlers/utils.ts +75 -0
  408. package/src/index.ts +25 -36
  409. package/src/init.ts +1 -1
  410. package/src/jestUtils/jestUtils.ts +12 -10
  411. package/src/mocks.ts +2 -2
  412. package/src/utils.ts +1 -1
  413. package/src/web/Gestures.ts +1 -1
  414. package/src/web/detectors/RotationGestureDetector.ts +1 -1
  415. package/src/web/detectors/ScaleGestureDetector.ts +4 -4
  416. package/src/web/handlers/FlingGestureHandler.ts +1 -1
  417. package/src/web/handlers/GestureHandler.ts +8 -14
  418. package/src/web/handlers/NativeViewGestureHandler.ts +3 -3
  419. package/src/web/handlers/PanGestureHandler.ts +1 -1
  420. package/src/web/handlers/TapGestureHandler.ts +1 -1
  421. package/src/web/tools/EventManager.ts +2 -2
  422. package/src/web/tools/GestureHandlerWebDelegate.ts +3 -8
  423. package/src/web/tools/LeastSquareSolver.ts +18 -18
  424. package/src/web/tools/PointerEventManager.ts +2 -2
  425. package/src/web/tools/PointerTracker.ts +2 -1
  426. package/src/web/tools/TouchEventManager.ts +4 -4
  427. package/src/web/tools/VelocityTracker.ts +6 -6
  428. package/src/web_hammer/NodeManager.ts +2 -11
@@ -1,36 +1,10 @@
1
+ import { RotationGestureHandlerEventPayload } from './GestureHandlerEventPayload';
1
2
  import createHandler from './createHandler';
2
3
  import {
3
4
  BaseGestureHandlerProps,
4
5
  baseGestureHandlerProps,
5
6
  } from './gestureHandlerCommon';
6
7
 
7
- export type RotationGestureHandlerEventPayload = {
8
- /**
9
- * Amount rotated, expressed in radians, from the gesture's focal point
10
- * (anchor).
11
- */
12
- rotation: number;
13
-
14
- /**
15
- * X coordinate, expressed in points, of the gesture's central focal point
16
- * (anchor).
17
- */
18
- anchorX: number;
19
-
20
- /**
21
- * Y coordinate, expressed in points, of the gesture's central focal point
22
- * (anchor).
23
- */
24
- anchorY: number;
25
-
26
- /**
27
- *
28
- * Instantaneous velocity, expressed in point units per second, of the
29
- * gesture.
30
- */
31
- velocity: number;
32
- };
33
-
34
8
  export interface RotationGestureHandlerProps
35
9
  extends BaseGestureHandlerProps<RotationGestureHandlerEventPayload> {}
36
10
 
@@ -1,3 +1,4 @@
1
+ import type { TapGestureHandlerEventPayload } from './GestureHandlerEventPayload';
1
2
  import createHandler from './createHandler';
2
3
  import {
3
4
  BaseGestureHandlerProps,
@@ -14,12 +15,6 @@ export const tapGestureHandlerProps = [
14
15
  'minPointers',
15
16
  ] as const;
16
17
 
17
- export type TapGestureHandlerEventPayload = {
18
- x: number;
19
- y: number;
20
- absoluteX: number;
21
- absoluteY: number;
22
- };
23
18
  export interface TapGestureConfig {
24
19
  /**
25
20
  * Minimum number of pointers (fingers) required to be placed before the
@@ -8,20 +8,15 @@ import {
8
8
  import { customDirectEventTypes } from './customDirectEventTypes';
9
9
  import RNGestureHandlerModule from '../RNGestureHandlerModule';
10
10
  import { State } from '../State';
11
- import {
12
- handlerIDToTag,
13
- getNextHandlerTag,
14
- registerOldGestureHandler,
15
- } from './handlersRegistry';
11
+ import { handlerIDToTag, registerOldGestureHandler } from './handlersRegistry';
12
+ import { getNextHandlerTag } from './getNextHandlerTag';
16
13
 
17
14
  import {
18
15
  BaseGestureHandlerProps,
19
- filterConfig,
20
16
  GestureEvent,
21
17
  HandlerStateChangeEvent,
22
- findNodeHandle,
23
- scheduleFlushOperations,
24
18
  } from './gestureHandlerCommon';
19
+ import { filterConfig, findNodeHandle, scheduleFlushOperations } from './utils';
25
20
  import { ValueOf } from '../typeUtils';
26
21
  import { deepEqual, isFabric, isJestEnv, tagMessage } from '../utils';
27
22
  import { ActionType } from '../ActionType';
@@ -86,10 +81,10 @@ if (UIManagerConstants) {
86
81
  // Wrap JS responder calls and notify gesture handler manager
87
82
  const {
88
83
  setJSResponder: oldSetJSResponder = () => {
89
- //no operation
84
+ // no-op
90
85
  },
91
86
  clearJSResponder: oldClearJSResponder = () => {
92
- //no operation
87
+ // no-op
93
88
  },
94
89
  } = UIManagerAny;
95
90
  UIManagerAny.setJSResponder = (tag: number, blockNativeResponder: boolean) => {
@@ -323,7 +318,7 @@ export default function createHandler<
323
318
  this.viewTag = newViewTag;
324
319
 
325
320
  if (Platform.OS === 'web') {
326
- // typecast due to dynamic resolution, attachGestureHandler should have web version signature in this branch
321
+ // Typecast due to dynamic resolution, attachGestureHandler should have web version signature in this branch
327
322
  (
328
323
  RNGestureHandlerModule.attachGestureHandler as AttachGestureHandlerWeb
329
324
  )(
@@ -28,7 +28,7 @@ export default function createNativeWrapper<P>(
28
28
  React.ComponentType<any>,
29
29
  P & NativeViewGestureHandlerProps
30
30
  >((props, ref) => {
31
- // filter out props that should be passed to gesture handler wrapper
31
+ // Filter out props that should be passed to gesture handler wrapper
32
32
  const gestureHandlerProps = Object.keys(props).reduce(
33
33
  (res, key) => {
34
34
  // TS being overly protective with it's types, see https://github.com/microsoft/TypeScript/issues/26255#issuecomment-458013731 for more info
@@ -39,7 +39,7 @@ export default function createNativeWrapper<P>(
39
39
  }
40
40
  return res;
41
41
  },
42
- { ...config } // watch out not to modify config
42
+ { ...config } // Watch out not to modify config
43
43
  );
44
44
  const _ref = useRef<React.ComponentType<P>>();
45
45
  const _gestureHandlerRef = useRef<React.ComponentType<P>>();
@@ -48,7 +48,7 @@ export default function createNativeWrapper<P>(
48
48
  // @ts-ignore TODO(TS) decide how nulls work in this context
49
49
  () => {
50
50
  const node = _gestureHandlerRef.current;
51
- // add handlerTag for relations config
51
+ // Add handlerTag for relations config
52
52
  if (_ref.current && node) {
53
53
  // @ts-ignore FIXME(TS) think about createHandler return type
54
54
  _ref.current.handlerTag = node.handlerTag;
@@ -3,15 +3,10 @@
3
3
  // e.g. React.createRef<TapGestureHandler> -> React.createRef<typeof TapGestureHandler>.
4
4
  // See https://www.typescriptlang.org/docs/handbook/classes.html#constructor-functions for reference.
5
5
  import * as React from 'react';
6
- import { Platform, findNodeHandle as findNodeHandleRN } from 'react-native';
7
6
 
8
7
  import { State } from '../State';
9
8
  import { TouchEventType } from '../TouchEventType';
10
9
  import { ValueOf } from '../typeUtils';
11
- import { handlerIDToTag } from './handlersRegistry';
12
- import { toArray } from '../utils';
13
- import RNGestureHandlerModule from '../RNGestureHandlerModule';
14
- import { ghQueueMicrotask } from '../ghQueueMicrotask';
15
10
  import { PointerType } from '../PointerType';
16
11
 
17
12
  const commonProps = [
@@ -141,7 +136,7 @@ export type TouchAction =
141
136
  | 'revert-layer'
142
137
  | 'unset';
143
138
 
144
- //TODO(TS) events in handlers
139
+ // TODO(TS) events in handlers
145
140
 
146
141
  export interface GestureEvent<ExtraEventPayloadT = Record<string, unknown>> {
147
142
  nativeEvent: Readonly<GestureEventPayload & ExtraEventPayloadT>;
@@ -206,82 +201,11 @@ export type BaseGestureHandlerProps<
206
201
  onActivated?: (event: HandlerStateChangeEvent) => void;
207
202
  onEnded?: (event: HandlerStateChangeEvent) => void;
208
203
 
209
- //TODO(TS) consider using NativeSyntheticEvent
204
+ // TODO(TS) consider using NativeSyntheticEvent
210
205
  onGestureEvent?: (event: GestureEvent<ExtraEventPayloadT>) => void;
211
206
  onHandlerStateChange?: (
212
207
  event: HandlerStateChangeEvent<ExtraEventPayloadT>
213
208
  ) => void;
214
- // implicit `children` prop has been removed in @types/react^18.0.0
209
+ // Implicit `children` prop has been removed in @types/react^18.0.0
215
210
  children?: React.ReactNode;
216
211
  };
217
-
218
- function isConfigParam(param: unknown, name: string) {
219
- // param !== Object(param) returns false if `param` is a function
220
- // or an object and returns true if `param` is null
221
- return (
222
- param !== undefined &&
223
- (param !== Object(param) ||
224
- !('__isNative' in (param as Record<string, unknown>))) &&
225
- name !== 'onHandlerStateChange' &&
226
- name !== 'onGestureEvent'
227
- );
228
- }
229
-
230
- export function filterConfig(
231
- props: Record<string, unknown>,
232
- validProps: string[],
233
- defaults: Record<string, unknown> = {}
234
- ) {
235
- const filteredConfig = { ...defaults };
236
- for (const key of validProps) {
237
- let value = props[key];
238
- if (isConfigParam(value, key)) {
239
- if (key === 'simultaneousHandlers' || key === 'waitFor') {
240
- value = transformIntoHandlerTags(props[key]);
241
- } else if (key === 'hitSlop' && typeof value !== 'object') {
242
- value = { top: value, left: value, bottom: value, right: value };
243
- }
244
- filteredConfig[key] = value;
245
- }
246
- }
247
- return filteredConfig;
248
- }
249
-
250
- function transformIntoHandlerTags(handlerIDs: any) {
251
- handlerIDs = toArray(handlerIDs);
252
-
253
- if (Platform.OS === 'web') {
254
- return handlerIDs
255
- .map(({ current }: { current: any }) => current)
256
- .filter((handle: any) => handle);
257
- }
258
- // converts handler string IDs into their numeric tags
259
- return handlerIDs
260
- .map(
261
- (handlerID: any) =>
262
- handlerIDToTag[handlerID] || handlerID.current?.handlerTag || -1
263
- )
264
- .filter((handlerTag: number) => handlerTag > 0);
265
- }
266
-
267
- export function findNodeHandle(
268
- node: null | number | React.Component<any, any> | React.ComponentClass<any>
269
- ): null | number | React.Component<any, any> | React.ComponentClass<any> {
270
- if (Platform.OS === 'web') {
271
- return node;
272
- }
273
- return findNodeHandleRN(node);
274
- }
275
-
276
- let flushOperationsScheduled = false;
277
-
278
- export function scheduleFlushOperations() {
279
- if (!flushOperationsScheduled) {
280
- flushOperationsScheduled = true;
281
- ghQueueMicrotask(() => {
282
- RNGestureHandlerModule.flushOperations();
283
-
284
- flushOperationsScheduled = false;
285
- });
286
- }
287
- }
@@ -1,55 +1,41 @@
1
- import {
1
+ import type {
2
2
  BaseButtonProps,
3
3
  BorderlessButtonProps,
4
4
  RawButtonProps,
5
5
  RectButtonProps,
6
- } from '../components/GestureButtons';
6
+ } from '../components/GestureButtonsProps';
7
7
  import {
8
8
  GestureEvent,
9
9
  GestureEventPayload,
10
10
  HandlerStateChangeEvent,
11
11
  HandlerStateChangeEventPayload,
12
12
  } from './gestureHandlerCommon';
13
- import {
13
+ import type { FlingGestureHandlerProps } from './FlingGestureHandler';
14
+ import type {
14
15
  FlingGestureHandlerEventPayload,
15
- FlingGestureHandlerProps,
16
- } from './FlingGestureHandler';
17
- import {
18
16
  ForceTouchGestureHandlerEventPayload,
19
- ForceTouchGestureHandlerProps,
20
- } from './ForceTouchGestureHandler';
21
- import {
22
17
  LongPressGestureHandlerEventPayload,
23
- LongPressGestureHandlerProps,
24
- } from './LongPressGestureHandler';
25
- import {
26
18
  PanGestureHandlerEventPayload,
27
- PanGestureHandlerProps,
28
- } from './PanGestureHandler';
29
- import {
30
19
  PinchGestureHandlerEventPayload,
31
- PinchGestureHandlerProps,
32
- } from './PinchGestureHandler';
33
- import {
34
20
  RotationGestureHandlerEventPayload,
35
- RotationGestureHandlerProps,
36
- } from './RotationGestureHandler';
37
- import {
38
21
  TapGestureHandlerEventPayload,
39
- TapGestureHandlerProps,
40
- } from './TapGestureHandler';
41
- import {
42
22
  NativeViewGestureHandlerPayload,
43
- NativeViewGestureHandlerProps,
44
- } from './NativeViewGestureHandler';
23
+ } from './GestureHandlerEventPayload';
24
+ import type { ForceTouchGestureHandlerProps } from './ForceTouchGestureHandler';
25
+ import type { LongPressGestureHandlerProps } from './LongPressGestureHandler';
26
+ import type { PanGestureHandlerProps } from './PanGestureHandler';
27
+ import type { PinchGestureHandlerProps } from './PinchGestureHandler';
28
+ import type { RotationGestureHandlerProps } from './RotationGestureHandler';
29
+ import type { TapGestureHandlerProps } from './TapGestureHandler';
30
+ import type { NativeViewGestureHandlerProps } from './NativeViewGestureHandler';
45
31
 
46
- // events
32
+ // Events
47
33
  export type GestureHandlerGestureEventNativeEvent = GestureEventPayload;
48
34
  export type GestureHandlerStateChangeNativeEvent =
49
35
  HandlerStateChangeEventPayload;
50
36
  export type GestureHandlerGestureEvent = GestureEvent;
51
37
  export type GestureHandlerStateChangeEvent = HandlerStateChangeEvent;
52
- // gesture handlers events
38
+ // Gesture handlers events
53
39
  export type NativeViewGestureHandlerGestureEvent =
54
40
  GestureEvent<NativeViewGestureHandlerPayload>;
55
41
  export type NativeViewGestureHandlerStateChangeEvent =
@@ -90,7 +76,7 @@ export type FlingGestureHandlerGestureEvent =
90
76
  export type FlingGestureHandlerStateChangeEvent =
91
77
  HandlerStateChangeEvent<FlingGestureHandlerEventPayload>;
92
78
 
93
- // handlers properties
79
+ // Handlers properties
94
80
  export type NativeViewGestureHandlerProperties = NativeViewGestureHandlerProps;
95
81
  export type TapGestureHandlerProperties = TapGestureHandlerProps;
96
82
  export type LongPressGestureHandlerProperties = LongPressGestureHandlerProps;
@@ -99,7 +85,7 @@ export type PinchGestureHandlerProperties = PinchGestureHandlerProps;
99
85
  export type RotationGestureHandlerProperties = RotationGestureHandlerProps;
100
86
  export type FlingGestureHandlerProperties = FlingGestureHandlerProps;
101
87
  export type ForceTouchGestureHandlerProperties = ForceTouchGestureHandlerProps;
102
- // button props
88
+ // Button props
103
89
  export type RawButtonProperties = RawButtonProps;
104
90
  export type BaseButtonProperties = BaseButtonProps;
105
91
  export type RectButtonProperties = RectButtonProps;
@@ -4,7 +4,7 @@ import { tagMessage } from '../../../utils';
4
4
 
5
5
  export class Wrap extends React.Component<{
6
6
  onGestureHandlerEvent?: unknown;
7
- // implicit `children` prop has been removed in @types/react^18.0.0
7
+ // Implicit `children` prop has been removed in @types/react^18.0.0
8
8
  children?: React.ReactNode;
9
9
  }> {
10
10
  render() {
@@ -2,10 +2,7 @@ import React from 'react';
2
2
  import { GestureType, HandlerCallbacks } from '../gesture';
3
3
  import { registerHandler } from '../../handlersRegistry';
4
4
  import RNGestureHandlerModule from '../../../RNGestureHandlerModule';
5
- import {
6
- filterConfig,
7
- scheduleFlushOperations,
8
- } from '../../gestureHandlerCommon';
5
+ import { filterConfig, scheduleFlushOperations } from '../../utils';
9
6
  import { ComposedGesture } from '../gestureComposition';
10
7
  import { ActionType } from '../../../ActionType';
11
8
  import { Platform } from 'react-native';
@@ -35,7 +32,7 @@ export function attachHandlers({
35
32
  }: AttachHandlersConfig) {
36
33
  gestureConfig.initialize();
37
34
 
38
- // use queueMicrotask to extract handlerTags, because all refs should be initialized
35
+ // Use queueMicrotask to extract handlerTags, because all refs should be initialized
39
36
  // when it's ran
40
37
  ghQueueMicrotask(() => {
41
38
  if (!preparedGesture.isMounted) {
@@ -55,7 +52,7 @@ export function attachHandlers({
55
52
  registerHandler(handler.handlerTag, handler, handler.config.testId);
56
53
  }
57
54
 
58
- // use queueMicrotask to extract handlerTags, because all refs should be initialized
55
+ // Use queueMicrotask to extract handlerTags, because all refs should be initialized
59
56
  // when it's ran
60
57
  ghQueueMicrotask(() => {
61
58
  if (!preparedGesture.isMounted) {
@@ -86,7 +83,7 @@ export function attachHandlers({
86
83
  )(
87
84
  gesture.handlerTag,
88
85
  viewTag,
89
- ActionType.JS_FUNCTION_OLD_API, // ignored on web
86
+ ActionType.JS_FUNCTION_OLD_API, // Ignored on web
90
87
  webEventHandlersRef
91
88
  );
92
89
  } else {
@@ -1,6 +1,6 @@
1
1
  import { unregisterHandler } from '../../handlersRegistry';
2
2
  import RNGestureHandlerModule from '../../../RNGestureHandlerModule';
3
- import { scheduleFlushOperations } from '../../gestureHandlerCommon';
3
+ import { scheduleFlushOperations } from '../../utils';
4
4
  import { AttachedGestureState } from './types';
5
5
 
6
6
  export function dropHandlers(preparedGesture: AttachedGestureState) {
@@ -111,7 +111,7 @@ export const GestureDetector = (props: GestureDetectorProps) => {
111
111
  );
112
112
 
113
113
  const webEventHandlersRef = useWebEventHandlers();
114
- // store state in ref to prevent unnecessary renders
114
+ // Store state in ref to prevent unnecessary renders
115
115
  const state = useRef<GestureDetectorState>({
116
116
  firstRender: true,
117
117
  viewRef: null,
@@ -1,10 +1,7 @@
1
1
  import { GestureType, HandlerCallbacks } from '../gesture';
2
2
  import { registerHandler } from '../../handlersRegistry';
3
3
  import RNGestureHandlerModule from '../../../RNGestureHandlerModule';
4
- import {
5
- filterConfig,
6
- scheduleFlushOperations,
7
- } from '../../gestureHandlerCommon';
4
+ import { filterConfig, scheduleFlushOperations } from '../../utils';
8
5
  import { ComposedGesture } from '../gestureComposition';
9
6
  import { ghQueueMicrotask } from '../../../ghQueueMicrotask';
10
7
  import { AttachedGestureState } from './types';
@@ -25,7 +22,7 @@ export function updateHandlers(
25
22
  const handler = preparedGesture.attachedGestures[i];
26
23
  checkGestureCallbacksForWorklets(handler);
27
24
 
28
- // only update handlerTag when it's actually different, it may be the same
25
+ // Only update handlerTag when it's actually different, it may be the same
29
26
  // if gesture config object is wrapped with useMemo
30
27
  if (newGestures[i].handlerTag !== handler.handlerTag) {
31
28
  newGestures[i].handlerTag = handler.handlerTag;
@@ -33,16 +30,30 @@ export function updateHandlers(
33
30
  }
34
31
  }
35
32
 
36
- // use queueMicrotask to extract handlerTags, because when it's ran, all refs should be updated
33
+ // Use queueMicrotask to extract handlerTags, because when it's ran, all refs should be updated
37
34
  // and handlerTags in BaseGesture references should be updated in the loop above (we need to wait
38
35
  // in case of external relations)
39
36
  ghQueueMicrotask(() => {
40
37
  if (!preparedGesture.isMounted) {
41
38
  return;
42
39
  }
40
+
41
+ // If amount of gesture configs changes, we need to update the callbacks in shared value
42
+ let shouldUpdateSharedValueIfUsed =
43
+ preparedGesture.attachedGestures.length !== newGestures.length;
44
+
43
45
  for (let i = 0; i < newGestures.length; i++) {
44
46
  const handler = preparedGesture.attachedGestures[i];
45
47
 
48
+ // If the gestureId is different (gesture isn't wrapped with useMemo or its dependencies changed),
49
+ // we need to update the shared value, assuming the gesture runs on UI thread or the thread changed
50
+ if (
51
+ handler.handlers.gestureId !== newGestures[i].handlers.gestureId &&
52
+ (newGestures[i].shouldUseReanimated || handler.shouldUseReanimated)
53
+ ) {
54
+ shouldUpdateSharedValueIfUsed = true;
55
+ }
56
+
46
57
  handler.config = newGestures[i].config;
47
58
  handler.handlers = newGestures[i].handlers;
48
59
 
@@ -58,35 +69,14 @@ export function updateHandlers(
58
69
  registerHandler(handler.handlerTag, handler, handler.config.testId);
59
70
  }
60
71
 
61
- if (preparedGesture.animatedHandlers) {
62
- const previousHandlersValue =
63
- preparedGesture.animatedHandlers.value ?? [];
72
+ if (preparedGesture.animatedHandlers && shouldUpdateSharedValueIfUsed) {
64
73
  const newHandlersValue = preparedGesture.attachedGestures
65
- .filter((g) => g.shouldUseReanimated) // ignore gestures that shouldn't run on UI
74
+ .filter((g) => g.shouldUseReanimated) // Ignore gestures that shouldn't run on UI
66
75
  .map((g) => g.handlers) as unknown as HandlerCallbacks<
67
76
  Record<string, unknown>
68
77
  >[];
69
78
 
70
- // if amount of gesture configs changes, we need to update the callbacks in shared value
71
- let shouldUpdateSharedValue =
72
- previousHandlersValue.length !== newHandlersValue.length;
73
-
74
- if (!shouldUpdateSharedValue) {
75
- // if the amount is the same, we need to check if any of the configs inside has changed
76
- for (let i = 0; i < newHandlersValue.length; i++) {
77
- if (
78
- // we can use the `gestureId` prop as it's unique for every config instance
79
- newHandlersValue[i].gestureId !== previousHandlersValue[i].gestureId
80
- ) {
81
- shouldUpdateSharedValue = true;
82
- break;
83
- }
84
- }
85
- }
86
-
87
- if (shouldUpdateSharedValue) {
88
- preparedGesture.animatedHandlers.value = newHandlersValue;
89
- }
79
+ preparedGesture.animatedHandlers.value = newHandlersValue;
90
80
  }
91
81
 
92
82
  scheduleFlushOperations();
@@ -28,7 +28,7 @@ export function useDetectorUpdater(
28
28
  const updateAttachedGestures = useCallback(
29
29
  // skipConfigUpdate is used to prevent unnecessary updates when only checking if the view has changed
30
30
  (skipConfigUpdate?: boolean) => {
31
- // if the underlying view has changed we need to reattach handlers to the new view
31
+ // If the underlying view has changed we need to reattach handlers to the new view
32
32
  const viewTag = findNodeHandle(state.viewRef) as number;
33
33
  const didUnderlyingViewChange = viewTag !== state.previousViewTag;
34
34
 
@@ -73,7 +73,7 @@ export function checkGestureCallbacksForWorklets(gesture: GestureType) {
73
73
  if (!__DEV__) {
74
74
  return;
75
75
  }
76
- // if a gesture is explicitly marked to run on the JS thread there is no need to check
76
+ // If a gesture is explicitly marked to run on the JS thread there is no need to check
77
77
  // if callbacks are worklets as the user is aware they will be ran on the JS thread
78
78
  if (gesture.config.runOnJS) {
79
79
  return;
@@ -82,7 +82,7 @@ export function checkGestureCallbacksForWorklets(gesture: GestureType) {
82
82
  const areSomeNotWorklets = gesture.handlers.isWorklet.includes(false);
83
83
  const areSomeWorklets = gesture.handlers.isWorklet.includes(true);
84
84
 
85
- // if some of the callbacks are worklets and some are not, and the gesture is not
85
+ // If some of the callbacks are worklets and some are not, and the gesture is not
86
86
  // explicitly marked with `.runOnJS(true)` show an error
87
87
  if (areSomeNotWorklets && areSomeWorklets) {
88
88
  console.error(
@@ -93,12 +93,12 @@ export function checkGestureCallbacksForWorklets(gesture: GestureType) {
93
93
  }
94
94
 
95
95
  if (Reanimated === undefined) {
96
- // if Reanimated is not available, we can't run worklets, so we shouldn't show the warning
96
+ // If Reanimated is not available, we can't run worklets, so we shouldn't show the warning
97
97
  return;
98
98
  }
99
99
 
100
100
  const areAllNotWorklets = !areSomeWorklets && areSomeNotWorklets;
101
- // if none of the callbacks are worklets and the gesture is not explicitly marked with
101
+ // If none of the callbacks are worklets and the gesture is not explicitly marked with
102
102
  // `.runOnJS(true)` show a warning
103
103
  if (areAllNotWorklets) {
104
104
  console.warn(
@@ -111,7 +111,7 @@ export function checkGestureCallbacksForWorklets(gesture: GestureType) {
111
111
 
112
112
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
113
113
  export function validateDetectorChildren(ref: any) {
114
- // finds the first native view under the Wrap component and traverses the fiber tree upwards
114
+ // Finds the first native view under the Wrap component and traverses the fiber tree upwards
115
115
  // to check whether there is more than one native view as a pseudo-direct child of GestureDetector
116
116
  // i.e. this is not ok:
117
117
  // Wrap
@@ -1,8 +1,6 @@
1
1
  import { BaseGesture, BaseGestureConfig } from './gesture';
2
- import {
3
- FlingGestureConfig,
4
- FlingGestureHandlerEventPayload,
5
- } from '../FlingGestureHandler';
2
+ import { FlingGestureConfig } from '../FlingGestureHandler';
3
+ import type { FlingGestureHandlerEventPayload } from '../GestureHandlerEventPayload';
6
4
 
7
5
  export class FlingGesture extends BaseGesture<FlingGestureHandlerEventPayload> {
8
6
  public config: BaseGestureConfig & FlingGestureConfig = {};
@@ -1,8 +1,6 @@
1
1
  import { BaseGestureConfig, ContinousBaseGesture } from './gesture';
2
- import {
3
- ForceTouchGestureConfig,
4
- ForceTouchGestureHandlerEventPayload,
5
- } from '../ForceTouchGestureHandler';
2
+ import { ForceTouchGestureConfig } from '../ForceTouchGestureHandler';
3
+ import type { ForceTouchGestureHandlerEventPayload } from '../GestureHandlerEventPayload';
6
4
  import { GestureUpdateEvent } from '../gestureHandlerCommon';
7
5
 
8
6
  export type ForceTouchGestureChangeEventPayload = {
@@ -1,5 +1,3 @@
1
- import { FlingGestureHandlerEventPayload } from '../FlingGestureHandler';
2
- import { ForceTouchGestureHandlerEventPayload } from '../ForceTouchGestureHandler';
3
1
  import {
4
2
  HitSlop,
5
3
  CommonGestureConfig,
@@ -9,14 +7,18 @@ import {
9
7
  ActiveCursor,
10
8
  MouseButton,
11
9
  } from '../gestureHandlerCommon';
12
- import { getNextHandlerTag } from '../handlersRegistry';
10
+ import { getNextHandlerTag } from '../getNextHandlerTag';
13
11
  import { GestureStateManagerType } from './gestureStateManager';
14
- import { LongPressGestureHandlerEventPayload } from '../LongPressGestureHandler';
15
- import { PanGestureHandlerEventPayload } from '../PanGestureHandler';
16
- import { PinchGestureHandlerEventPayload } from '../PinchGestureHandler';
17
- import { RotationGestureHandlerEventPayload } from '../RotationGestureHandler';
18
- import { TapGestureHandlerEventPayload } from '../TapGestureHandler';
19
- import { NativeViewGestureHandlerPayload } from '../NativeViewGestureHandler';
12
+ import type {
13
+ FlingGestureHandlerEventPayload,
14
+ ForceTouchGestureHandlerEventPayload,
15
+ LongPressGestureHandlerEventPayload,
16
+ PanGestureHandlerEventPayload,
17
+ PinchGestureHandlerEventPayload,
18
+ RotationGestureHandlerEventPayload,
19
+ TapGestureHandlerEventPayload,
20
+ NativeViewGestureHandlerPayload,
21
+ } from '../GestureHandlerEventPayload';
20
22
  import { isRemoteDebuggingEnabled } from '../../utils';
21
23
 
22
24
  export type GestureType =
@@ -35,7 +37,7 @@ export type GestureRef =
35
37
  | number
36
38
  | GestureType
37
39
  | React.RefObject<GestureType | undefined>
38
- | React.RefObject<React.ComponentType | undefined>; // allow adding a ref to a gesture handler
40
+ | React.RefObject<React.ComponentType | undefined>; // Allow adding a ref to a gesture handler
39
41
  export interface BaseGestureConfig
40
42
  extends CommonGestureConfig,
41
43
  Record<string, unknown> {
@@ -166,7 +168,7 @@ export abstract class BaseGesture<
166
168
 
167
169
  // eslint-disable-next-line @typescript-eslint/ban-types
168
170
  protected isWorklet(callback: Function) {
169
- //@ts-ignore if callback is a worklet, the property will be available, if not then the check will return false
171
+ // @ts-ignore if callback is a worklet, the property will be available, if not then the check will return false
170
172
  return callback.__workletHash !== undefined;
171
173
  }
172
174
 
@@ -203,7 +205,7 @@ export abstract class BaseGesture<
203
205
  ) => void
204
206
  ) {
205
207
  this.handlers.onEnd = callback;
206
- //@ts-ignore if callback is a worklet, the property will be available, if not then the check will return false
208
+ // @ts-ignore if callback is a worklet, the property will be available, if not then the check will return false
207
209
  this.handlers.isWorklet[CALLBACK_TYPE.END] = this.isWorklet(callback);
208
210
  return this;
209
211
  }
@@ -219,7 +221,7 @@ export abstract class BaseGesture<
219
221
  ) => void
220
222
  ) {
221
223
  this.handlers.onFinalize = callback;
222
- //@ts-ignore if callback is a worklet, the property will be available, if not then the check will return false
224
+ // @ts-ignore if callback is a worklet, the property will be available, if not then the check will return false
223
225
  this.handlers.isWorklet[CALLBACK_TYPE.FINALIZE] = this.isWorklet(callback);
224
226
  return this;
225
227
  }
@@ -416,8 +418,8 @@ export abstract class BaseGesture<
416
418
  prepare() {}
417
419
 
418
420
  get shouldUseReanimated(): boolean {
419
- // use Reanimated when runOnJS isn't set explicitly,
420
- // and all defined callbacks are worklets,
421
+ // Use Reanimated when runOnJS isn't set explicitly,
422
+ // all defined callbacks are worklets
421
423
  // and remote debugging is disabled
422
424
  return (
423
425
  this.config.runOnJS !== true &&