react-native-gesture-handler 2.17.1 → 2.18.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (429) hide show
  1. package/ReanimatedSwipeable/package.json +6 -0
  2. package/android/build.gradle +0 -103
  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 +2 -2
  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 +1 -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 +8 -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 +9 -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/Swipeable.d.ts +5 -0
  305. package/lib/typescript/components/touchables/GenericTouchable.d.ts +4 -16
  306. package/lib/typescript/components/touchables/GenericTouchableProps.d.ts +14 -0
  307. package/lib/typescript/components/touchables/TouchableHighlight.d.ts +1 -1
  308. package/lib/typescript/components/touchables/TouchableNativeFeedback.android.d.ts +2 -9
  309. package/lib/typescript/components/touchables/TouchableNativeFeedbackProps.d.ts +9 -0
  310. package/lib/typescript/components/touchables/TouchableOpacity.d.ts +1 -1
  311. package/lib/typescript/components/touchables/TouchableWithoutFeedback.d.ts +2 -1
  312. package/lib/typescript/handlers/FlingGestureHandler.d.ts +2 -6
  313. package/lib/typescript/handlers/ForceTouchGestureHandler.d.ts +1 -10
  314. package/lib/typescript/handlers/GestureHandlerEventPayload.d.ts +159 -0
  315. package/lib/typescript/handlers/LongPressGestureHandler.d.ts +2 -35
  316. package/lib/typescript/handlers/NativeViewGestureHandler.d.ts +2 -6
  317. package/lib/typescript/handlers/PanGestureHandler.d.ts +3 -51
  318. package/lib/typescript/handlers/PinchGestureHandler.d.ts +2 -23
  319. package/lib/typescript/handlers/RotationGestureHandler.d.ts +2 -23
  320. package/lib/typescript/handlers/TapGestureHandler.d.ts +2 -6
  321. package/lib/typescript/handlers/gestureHandlerCommon.d.ts +0 -5
  322. package/lib/typescript/handlers/gestureHandlerTypesCompat.d.ts +10 -9
  323. package/lib/typescript/handlers/gestures/GestureDetector/types.d.ts +1 -0
  324. package/lib/typescript/handlers/gestures/GestureDetector/utils.d.ts +1 -0
  325. package/lib/typescript/handlers/gestures/flingGesture.d.ts +2 -1
  326. package/lib/typescript/handlers/gestures/forceTouchGesture.d.ts +2 -1
  327. package/lib/typescript/handlers/gestures/gesture.d.ts +2 -8
  328. package/lib/typescript/handlers/gestures/longPressGesture.d.ts +2 -1
  329. package/lib/typescript/handlers/gestures/nativeGesture.d.ts +2 -1
  330. package/lib/typescript/handlers/gestures/panGesture.d.ts +2 -1
  331. package/lib/typescript/handlers/gestures/pinchGesture.d.ts +1 -1
  332. package/lib/typescript/handlers/gestures/rotationGesture.d.ts +1 -1
  333. package/lib/typescript/handlers/gestures/tapGesture.d.ts +2 -1
  334. package/lib/typescript/handlers/getNextHandlerTag.d.ts +1 -0
  335. package/lib/typescript/handlers/handlersRegistry.d.ts +1 -2
  336. package/lib/typescript/handlers/utils.d.ts +6 -0
  337. package/lib/typescript/index.d.ts +12 -9
  338. package/lib/typescript/jestUtils/jestUtils.d.ts +9 -7
  339. package/lib/typescript/web/handlers/FlingGestureHandler.d.ts +1 -0
  340. package/lib/typescript/web/handlers/GestureHandler.d.ts +1 -0
  341. package/lib/typescript/web/handlers/HoverGestureHandler.d.ts +1 -0
  342. package/lib/typescript/web/handlers/LongPressGestureHandler.d.ts +1 -0
  343. package/lib/typescript/web/handlers/ManualGestureHandler.d.ts +1 -0
  344. package/lib/typescript/web/handlers/NativeViewGestureHandler.d.ts +1 -0
  345. package/lib/typescript/web/handlers/PanGestureHandler.d.ts +1 -0
  346. package/lib/typescript/web/handlers/PinchGestureHandler.d.ts +1 -0
  347. package/lib/typescript/web/handlers/RotationGestureHandler.d.ts +1 -0
  348. package/lib/typescript/web/handlers/TapGestureHandler.d.ts +1 -0
  349. package/lib/typescript/web_hammer/NodeManager.d.ts +4 -5
  350. package/package.json +14 -16
  351. package/src/Directions.ts +2 -2
  352. package/src/RNGestureHandlerModule.web.ts +2 -2
  353. package/src/components/DrawerLayout.tsx +7 -9
  354. package/src/components/GestureButtons.tsx +13 -123
  355. package/src/components/GestureButtonsProps.ts +115 -0
  356. package/src/components/GestureComponents.tsx +1 -1
  357. package/src/components/GestureHandlerButton.tsx +1 -1
  358. package/src/components/GestureHandlerRootView.android.tsx +1 -1
  359. package/src/components/GestureHandlerRootView.tsx +1 -1
  360. package/src/components/Pressable/Pressable.tsx +398 -0
  361. package/src/components/Pressable/PressableProps.tsx +149 -0
  362. package/src/components/Pressable/index.ts +2 -0
  363. package/src/components/Pressable/utils.ts +180 -0
  364. package/src/components/ReanimatedSwipeable.tsx +629 -0
  365. package/src/components/Swipeable.tsx +12 -6
  366. package/src/components/touchables/GenericTouchable.tsx +9 -36
  367. package/src/components/touchables/GenericTouchableProps.ts +26 -0
  368. package/src/components/touchables/TouchableHighlight.tsx +2 -4
  369. package/src/components/touchables/TouchableNativeFeedback.android.tsx +7 -17
  370. package/src/components/touchables/TouchableNativeFeedbackProps.tsx +12 -0
  371. package/src/components/touchables/TouchableOpacity.tsx +3 -5
  372. package/src/components/touchables/TouchableWithoutFeedback.tsx +2 -1
  373. package/src/getShadowNodeFromRef.ts +2 -2
  374. package/src/ghQueueMicrotask.ts +7 -4
  375. package/src/handlers/FlingGestureHandler.ts +1 -6
  376. package/src/handlers/ForceTouchGestureHandler.ts +1 -12
  377. package/src/handlers/GestureHandlerEventPayload.ts +184 -0
  378. package/src/handlers/LongPressGestureHandler.ts +1 -40
  379. package/src/handlers/NativeViewGestureHandler.ts +1 -7
  380. package/src/handlers/PanGestureHandler.ts +1 -58
  381. package/src/handlers/PinchGestureHandler.ts +1 -27
  382. package/src/handlers/RotationGestureHandler.ts +1 -27
  383. package/src/handlers/TapGestureHandler.ts +1 -6
  384. package/src/handlers/createHandler.tsx +6 -11
  385. package/src/handlers/createNativeWrapper.tsx +3 -3
  386. package/src/handlers/gestureHandlerCommon.ts +3 -79
  387. package/src/handlers/gestureHandlerTypesCompat.ts +16 -30
  388. package/src/handlers/gestures/GestureDetector/Wrap.tsx +1 -1
  389. package/src/handlers/gestures/GestureDetector/attachHandlers.ts +4 -7
  390. package/src/handlers/gestures/GestureDetector/dropHandlers.ts +1 -1
  391. package/src/handlers/gestures/GestureDetector/index.tsx +1 -1
  392. package/src/handlers/gestures/GestureDetector/updateHandlers.ts +20 -30
  393. package/src/handlers/gestures/GestureDetector/useDetectorUpdater.ts +1 -1
  394. package/src/handlers/gestures/GestureDetector/utils.ts +5 -5
  395. package/src/handlers/gestures/flingGesture.ts +2 -4
  396. package/src/handlers/gestures/forceTouchGesture.ts +2 -4
  397. package/src/handlers/gestures/gesture.ts +17 -15
  398. package/src/handlers/gestures/gestureComposition.ts +5 -5
  399. package/src/handlers/gestures/gestureStateManager.ts +1 -1
  400. package/src/handlers/gestures/longPressGesture.ts +2 -4
  401. package/src/handlers/gestures/nativeGesture.ts +2 -4
  402. package/src/handlers/gestures/panGesture.ts +2 -4
  403. package/src/handlers/gestures/pinchGesture.ts +1 -1
  404. package/src/handlers/gestures/rotationGesture.ts +1 -1
  405. package/src/handlers/gestures/tapGesture.ts +2 -4
  406. package/src/handlers/getNextHandlerTag.ts +5 -0
  407. package/src/handlers/handlersRegistry.ts +0 -6
  408. package/src/handlers/utils.ts +75 -0
  409. package/src/index.ts +25 -36
  410. package/src/init.ts +1 -1
  411. package/src/jestUtils/jestUtils.ts +12 -10
  412. package/src/mocks.ts +2 -2
  413. package/src/utils.ts +1 -1
  414. package/src/web/Gestures.ts +1 -1
  415. package/src/web/detectors/RotationGestureDetector.ts +1 -1
  416. package/src/web/detectors/ScaleGestureDetector.ts +4 -4
  417. package/src/web/handlers/FlingGestureHandler.ts +1 -1
  418. package/src/web/handlers/GestureHandler.ts +8 -14
  419. package/src/web/handlers/NativeViewGestureHandler.ts +3 -3
  420. package/src/web/handlers/PanGestureHandler.ts +1 -1
  421. package/src/web/handlers/TapGestureHandler.ts +1 -1
  422. package/src/web/tools/EventManager.ts +2 -2
  423. package/src/web/tools/GestureHandlerWebDelegate.ts +3 -8
  424. package/src/web/tools/LeastSquareSolver.ts +18 -18
  425. package/src/web/tools/PointerEventManager.ts +2 -2
  426. package/src/web/tools/PointerTracker.ts +2 -1
  427. package/src/web/tools/TouchEventManager.ts +4 -4
  428. package/src/web/tools/VelocityTracker.ts +6 -6
  429. package/src/web_hammer/NodeManager.ts +2 -11
@@ -0,0 +1,398 @@
1
+ import React, { useCallback, useMemo, useRef, useState } from 'react';
2
+ import { GestureObjects as Gesture } from '../../handlers/gestures/gestureObjects';
3
+ import { GestureDetector } from '../../handlers/gestures/GestureDetector';
4
+ import { PressableEvent, PressableProps } from './PressableProps';
5
+ import {
6
+ Insets,
7
+ Platform,
8
+ StyleProp,
9
+ View,
10
+ ViewStyle,
11
+ processColor,
12
+ StyleSheet,
13
+ } from 'react-native';
14
+ import NativeButton from '../GestureHandlerButton';
15
+ import {
16
+ numberAsInset,
17
+ gestureToPressableEvent,
18
+ isTouchWithinInset,
19
+ gestureTouchToPressableEvent,
20
+ addInsets,
21
+ splitStyles,
22
+ } from './utils';
23
+ import { PressabilityDebugView } from '../../handlers/PressabilityDebugView';
24
+ import { GestureTouchEvent } from '../../handlers/gestureHandlerCommon';
25
+
26
+ const DEFAULT_LONG_PRESS_DURATION = 500;
27
+
28
+ export default function Pressable(props: PressableProps) {
29
+ const [pressedState, setPressedState] = useState(
30
+ props.testOnly_pressed ?? false
31
+ );
32
+
33
+ const pressableRef = useRef<View>(null);
34
+
35
+ // Disabled when onLongPress has been called
36
+ const isPressCallbackEnabled = useRef<boolean>(true);
37
+ const hasPassedBoundsChecks = useRef<boolean>(false);
38
+ const shouldPreventNativeEffects = useRef<boolean>(false);
39
+
40
+ const normalizedHitSlop: Insets = useMemo(
41
+ () =>
42
+ typeof props.hitSlop === 'number'
43
+ ? numberAsInset(props.hitSlop)
44
+ : props.hitSlop ?? {},
45
+ [props.hitSlop]
46
+ );
47
+
48
+ const normalizedPressRetentionOffset: Insets = useMemo(
49
+ () =>
50
+ typeof props.pressRetentionOffset === 'number'
51
+ ? numberAsInset(props.pressRetentionOffset)
52
+ : props.pressRetentionOffset ?? {},
53
+ [props.pressRetentionOffset]
54
+ );
55
+
56
+ const hoverInTimeout = useRef<number | null>(null);
57
+ const hoverOutTimeout = useRef<number | null>(null);
58
+
59
+ const hoverGesture = useMemo(
60
+ () =>
61
+ Gesture.Hover()
62
+ .manualActivation(true) // Stops Hover from blocking Native gesture activation on web
63
+ .cancelsTouchesInView(false)
64
+ .onBegin((event) => {
65
+ if (hoverOutTimeout.current) {
66
+ clearTimeout(hoverOutTimeout.current);
67
+ }
68
+ if (props.delayHoverIn) {
69
+ hoverInTimeout.current = setTimeout(
70
+ () => props.onHoverIn?.(gestureToPressableEvent(event)),
71
+ props.delayHoverIn
72
+ );
73
+ return;
74
+ }
75
+ props.onHoverIn?.(gestureToPressableEvent(event));
76
+ })
77
+ .onFinalize((event) => {
78
+ if (hoverInTimeout.current) {
79
+ clearTimeout(hoverInTimeout.current);
80
+ }
81
+ if (props.delayHoverOut) {
82
+ hoverOutTimeout.current = setTimeout(
83
+ () => props.onHoverOut?.(gestureToPressableEvent(event)),
84
+ props.delayHoverOut
85
+ );
86
+ return;
87
+ }
88
+ props.onHoverOut?.(gestureToPressableEvent(event));
89
+ }),
90
+ [props]
91
+ );
92
+
93
+ const pressDelayTimeoutRef = useRef<number | null>(null);
94
+ const isTouchPropagationAllowed = useRef<boolean>(false);
95
+
96
+ // iOS only: due to varying flow of gestures, events sometimes have to be saved for later use
97
+ const deferredEventPayload = useRef<PressableEvent | null>(null);
98
+
99
+ const pressInHandler = useCallback(
100
+ (event: PressableEvent) => {
101
+ if (handlingOnTouchesDown.current) {
102
+ deferredEventPayload.current = event;
103
+ }
104
+
105
+ if (!isTouchPropagationAllowed.current) {
106
+ return;
107
+ }
108
+
109
+ deferredEventPayload.current = null;
110
+
111
+ props.onPressIn?.(event);
112
+ isPressCallbackEnabled.current = true;
113
+ pressDelayTimeoutRef.current = null;
114
+ setPressedState(true);
115
+ },
116
+ [props]
117
+ );
118
+
119
+ const pressOutHandler = useCallback(
120
+ (event: PressableEvent) => {
121
+ if (
122
+ !hasPassedBoundsChecks.current ||
123
+ event.nativeEvent.touches.length >
124
+ event.nativeEvent.changedTouches.length
125
+ ) {
126
+ return;
127
+ }
128
+
129
+ if (props.unstable_pressDelay && pressDelayTimeoutRef.current !== null) {
130
+ // When delay is preemptively finished by lifting touches,
131
+ // we want to immediately activate it's effects - pressInHandler,
132
+ // even though we are located at the pressOutHandler
133
+ clearTimeout(pressDelayTimeoutRef.current);
134
+ pressInHandler(event);
135
+ }
136
+
137
+ if (deferredEventPayload.current) {
138
+ props.onPressIn?.(deferredEventPayload.current);
139
+ deferredEventPayload.current = null;
140
+ }
141
+
142
+ props.onPressOut?.(event);
143
+
144
+ if (isPressCallbackEnabled.current) {
145
+ props.onPress?.(event);
146
+ }
147
+
148
+ if (longPressTimeoutRef.current) {
149
+ clearTimeout(longPressTimeoutRef.current);
150
+ longPressTimeoutRef.current = null;
151
+ }
152
+
153
+ isTouchPropagationAllowed.current = false;
154
+ hasPassedBoundsChecks.current = false;
155
+ isPressCallbackEnabled.current = true;
156
+ setPressedState(false);
157
+ },
158
+ [pressInHandler, props]
159
+ );
160
+
161
+ const handlingOnTouchesDown = useRef<boolean>(false);
162
+ const onEndHandlingTouchesDown = useRef<(() => void) | null>(null);
163
+ const cancelledMidPress = useRef<boolean>(false);
164
+
165
+ const activateLongPress = useCallback(
166
+ (event: GestureTouchEvent) => {
167
+ if (!isTouchPropagationAllowed.current) {
168
+ return;
169
+ }
170
+
171
+ if (hasPassedBoundsChecks.current) {
172
+ props.onLongPress?.(gestureTouchToPressableEvent(event));
173
+ isPressCallbackEnabled.current = false;
174
+ }
175
+
176
+ if (longPressTimeoutRef.current) {
177
+ clearTimeout(longPressTimeoutRef.current);
178
+ longPressTimeoutRef.current = null;
179
+ }
180
+ },
181
+ [props]
182
+ );
183
+
184
+ const longPressTimeoutRef = useRef<number | null>(null);
185
+ const longPressMinDuration =
186
+ (props.delayLongPress ?? DEFAULT_LONG_PRESS_DURATION) +
187
+ (props.unstable_pressDelay ?? 0);
188
+
189
+ const pressAndTouchGesture = useMemo(
190
+ () =>
191
+ Gesture.LongPress()
192
+ .minDuration(Number.MAX_SAFE_INTEGER) // Stops long press from blocking native gesture
193
+ .maxDistance(Number.MAX_SAFE_INTEGER) // Stops long press from cancelling after set distance
194
+ .cancelsTouchesInView(false)
195
+ .onTouchesDown((event) => {
196
+ handlingOnTouchesDown.current = true;
197
+ pressableRef.current?.measure((_x, _y, width, height) => {
198
+ if (
199
+ !isTouchWithinInset(
200
+ {
201
+ width,
202
+ height,
203
+ },
204
+ normalizedHitSlop,
205
+ event.changedTouches.at(-1)
206
+ ) ||
207
+ hasPassedBoundsChecks.current ||
208
+ cancelledMidPress.current
209
+ ) {
210
+ cancelledMidPress.current = false;
211
+ onEndHandlingTouchesDown.current = null;
212
+ handlingOnTouchesDown.current = false;
213
+ return;
214
+ }
215
+
216
+ hasPassedBoundsChecks.current = true;
217
+
218
+ // In case of multiple touches, the first one starts long press gesture
219
+ if (longPressTimeoutRef.current === null) {
220
+ // Start long press gesture timer
221
+ longPressTimeoutRef.current = setTimeout(
222
+ () => activateLongPress(event),
223
+ longPressMinDuration
224
+ );
225
+ }
226
+
227
+ if (props.unstable_pressDelay) {
228
+ pressDelayTimeoutRef.current = setTimeout(() => {
229
+ pressInHandler(gestureTouchToPressableEvent(event));
230
+ }, props.unstable_pressDelay);
231
+ } else {
232
+ pressInHandler(gestureTouchToPressableEvent(event));
233
+ }
234
+
235
+ onEndHandlingTouchesDown.current?.();
236
+ onEndHandlingTouchesDown.current = null;
237
+ handlingOnTouchesDown.current = false;
238
+ });
239
+ })
240
+ .onTouchesUp((event) => {
241
+ if (handlingOnTouchesDown.current) {
242
+ onEndHandlingTouchesDown.current = () =>
243
+ pressOutHandler(gestureTouchToPressableEvent(event));
244
+ return;
245
+ }
246
+ // On iOS, short taps will make LongPress gesture call onTouchesUp before Native gesture calls onStart
247
+ // This variable ensures that onStart isn't detected as the first gesture since Pressable is pressed.
248
+ if (deferredEventPayload.current !== null) {
249
+ shouldPreventNativeEffects.current = true;
250
+ }
251
+ pressOutHandler(gestureTouchToPressableEvent(event));
252
+ })
253
+ .onTouchesCancelled((event) => {
254
+ isPressCallbackEnabled.current = false;
255
+
256
+ if (handlingOnTouchesDown.current) {
257
+ cancelledMidPress.current = true;
258
+ onEndHandlingTouchesDown.current = () =>
259
+ pressOutHandler(gestureTouchToPressableEvent(event));
260
+ return;
261
+ }
262
+
263
+ if (
264
+ !hasPassedBoundsChecks.current ||
265
+ event.allTouches.length > event.changedTouches.length
266
+ ) {
267
+ return;
268
+ }
269
+
270
+ pressOutHandler(gestureTouchToPressableEvent(event));
271
+ }),
272
+ [
273
+ activateLongPress,
274
+ longPressMinDuration,
275
+ normalizedHitSlop,
276
+ pressInHandler,
277
+ pressOutHandler,
278
+ props.unstable_pressDelay,
279
+ ]
280
+ );
281
+
282
+ // RNButton is placed inside ButtonGesture to enable Android's ripple and to capture non-propagating events
283
+ const buttonGesture = useMemo(
284
+ () =>
285
+ Gesture.Native()
286
+ .onBegin(() => {
287
+ // Android sets BEGAN state on press down
288
+ if (Platform.OS === 'android') {
289
+ isTouchPropagationAllowed.current = true;
290
+ }
291
+ })
292
+ .onStart(() => {
293
+ if (Platform.OS === 'web') {
294
+ isTouchPropagationAllowed.current = true;
295
+ }
296
+
297
+ // iOS sets ACTIVE state on press down
298
+ if (Platform.OS !== 'ios') {
299
+ return;
300
+ }
301
+
302
+ if (deferredEventPayload.current) {
303
+ isTouchPropagationAllowed.current = true;
304
+
305
+ if (hasPassedBoundsChecks.current) {
306
+ pressInHandler(deferredEventPayload.current);
307
+ deferredEventPayload.current = null;
308
+ } else {
309
+ pressOutHandler(deferredEventPayload.current);
310
+ isTouchPropagationAllowed.current = false;
311
+ }
312
+
313
+ return;
314
+ }
315
+
316
+ if (hasPassedBoundsChecks.current) {
317
+ isTouchPropagationAllowed.current = true;
318
+ return;
319
+ }
320
+
321
+ if (shouldPreventNativeEffects.current) {
322
+ shouldPreventNativeEffects.current = false;
323
+ return;
324
+ }
325
+
326
+ isTouchPropagationAllowed.current = true;
327
+ }),
328
+ [pressInHandler, pressOutHandler]
329
+ );
330
+
331
+ const appliedHitSlop = addInsets(
332
+ normalizedHitSlop,
333
+ normalizedPressRetentionOffset
334
+ );
335
+
336
+ const isPressableEnabled = props.disabled !== true;
337
+
338
+ const gestures = [pressAndTouchGesture, hoverGesture, buttonGesture];
339
+
340
+ for (const gesture of gestures) {
341
+ gesture.enabled(isPressableEnabled);
342
+ gesture.runOnJS(true);
343
+ gesture.hitSlop(appliedHitSlop);
344
+ gesture.shouldCancelWhenOutside(false);
345
+
346
+ if (Platform.OS !== 'web') {
347
+ gesture.shouldCancelWhenOutside(true);
348
+ }
349
+ }
350
+
351
+ // Uses different hitSlop, to activate on hitSlop area instead of pressRetentionOffset area
352
+ buttonGesture.hitSlop(normalizedHitSlop);
353
+
354
+ const gesture = Gesture.Simultaneous(...gestures);
355
+
356
+ const defaultRippleColor = props.android_ripple ? undefined : 'transparent';
357
+
358
+ // `cursor: 'pointer'` on `RNButton` crashes iOS
359
+ const pointerStyle: StyleProp<ViewStyle> =
360
+ Platform.OS === 'web' ? { cursor: 'pointer' } : {};
361
+
362
+ const styleProp =
363
+ typeof props.style === 'function'
364
+ ? props.style({ pressed: pressedState })
365
+ : props.style;
366
+
367
+ const childrenProp =
368
+ typeof props.children === 'function'
369
+ ? props.children({ pressed: pressedState })
370
+ : props.children;
371
+
372
+ const flattenedStyles = StyleSheet.flatten(styleProp ?? {});
373
+
374
+ const [innerStyles, outerStyles] = splitStyles(flattenedStyles);
375
+
376
+ return (
377
+ <View style={outerStyles}>
378
+ <GestureDetector gesture={gesture}>
379
+ <NativeButton
380
+ ref={pressableRef}
381
+ testID={props.testID}
382
+ hitSlop={appliedHitSlop}
383
+ enabled={isPressableEnabled}
384
+ touchSoundDisabled={props.android_disableSound ?? undefined}
385
+ rippleColor={processColor(
386
+ props.android_ripple?.color ?? defaultRippleColor
387
+ )}
388
+ rippleRadius={props.android_ripple?.radius ?? undefined}
389
+ style={[StyleSheet.absoluteFill, pointerStyle, innerStyles]}>
390
+ {childrenProp}
391
+ {__DEV__ ? (
392
+ <PressabilityDebugView color="red" hitSlop={normalizedHitSlop} />
393
+ ) : null}
394
+ </NativeButton>
395
+ </GestureDetector>
396
+ </View>
397
+ );
398
+ }
@@ -0,0 +1,149 @@
1
+ import {
2
+ ColorValue,
3
+ AccessibilityProps,
4
+ ViewProps,
5
+ Insets,
6
+ StyleProp,
7
+ ViewStyle,
8
+ } from 'react-native';
9
+
10
+ export interface PressableStateCallbackType {
11
+ readonly pressed: boolean;
12
+ }
13
+
14
+ export interface PressableAndroidRippleConfig {
15
+ color?: null | ColorValue | undefined;
16
+ borderless?: null | boolean | undefined;
17
+ radius?: null | number | undefined;
18
+ foreground?: null | boolean | undefined;
19
+ }
20
+
21
+ export type InnerPressableEvent = {
22
+ changedTouches: InnerPressableEvent[];
23
+ identifier: number;
24
+ locationX: number;
25
+ locationY: number;
26
+ pageX: number;
27
+ pageY: number;
28
+ target: number;
29
+ timestamp: number;
30
+ touches: InnerPressableEvent[];
31
+ force?: number;
32
+ };
33
+
34
+ export type PressableEvent = { nativeEvent: InnerPressableEvent };
35
+
36
+ export interface PressableProps
37
+ extends AccessibilityProps,
38
+ Omit<ViewProps, 'children' | 'style' | 'hitSlop'> {
39
+ /**
40
+ * Called when the hover is activated to provide visual feedback.
41
+ */
42
+ onHoverIn?: null | ((event: PressableEvent) => void);
43
+
44
+ /**
45
+ * Called when the hover is deactivated to undo visual feedback.
46
+ */
47
+ onHoverOut?: null | ((event: PressableEvent) => void);
48
+
49
+ /**
50
+ * Called when a single tap gesture is detected.
51
+ */
52
+ onPress?: null | ((event: PressableEvent) => void);
53
+
54
+ /**
55
+ * Called when a touch is engaged before `onPress`.
56
+ */
57
+ onPressIn?: null | ((event: PressableEvent) => void);
58
+
59
+ /**
60
+ * Called when a touch is released before `onPress`.
61
+ */
62
+ onPressOut?: null | ((event: PressableEvent) => void);
63
+
64
+ /**
65
+ * Called when a long-tap gesture is detected.
66
+ */
67
+ onLongPress?: null | ((event: PressableEvent) => void);
68
+
69
+ /**
70
+ * Either children or a render prop that receives a boolean reflecting whether
71
+ * the component is currently pressed.
72
+ */
73
+ children?:
74
+ | React.ReactNode
75
+ | ((state: PressableStateCallbackType) => React.ReactNode);
76
+
77
+ /**
78
+ * Whether a press gesture can be interrupted by a parent gesture such as a
79
+ * scroll event. Defaults to true.
80
+ */
81
+ cancelable?: null | boolean;
82
+
83
+ /**
84
+ * Duration to wait after hover in before calling `onHoverIn`.
85
+ * @platform web macos
86
+ *
87
+ * NOTE: not present in RN docs
88
+ */
89
+ delayHoverIn?: number | null;
90
+
91
+ /**
92
+ * Duration to wait after hover out before calling `onHoverOut`.
93
+ * @platform web macos
94
+ *
95
+ * NOTE: not present in RN docs
96
+ */
97
+ delayHoverOut?: number | null;
98
+
99
+ /**
100
+ * Duration (in milliseconds) from `onPressIn` before `onLongPress` is called.
101
+ */
102
+ delayLongPress?: null | number;
103
+
104
+ /**
105
+ * Whether the press behavior is disabled.
106
+ */
107
+ disabled?: null | boolean;
108
+
109
+ /**
110
+ * Additional distance outside of this view in which a press is detected.
111
+ */
112
+ hitSlop?: null | Insets | number;
113
+
114
+ /**
115
+ * Additional distance outside of this view in which a touch is considered a
116
+ * press before `onPressOut` is triggered.
117
+ */
118
+ pressRetentionOffset?: null | Insets | number;
119
+
120
+ /**
121
+ * If true, doesn't play system sound on touch.
122
+ * @platform android
123
+ */
124
+ android_disableSound?: null | boolean;
125
+
126
+ /**
127
+ * Enables the Android ripple effect and configures its color.
128
+ * @platform android
129
+ */
130
+ android_ripple?: null | PressableAndroidRippleConfig;
131
+
132
+ /**
133
+ * Used only for documentation or testing (e.g. snapshot testing).
134
+ */
135
+ testOnly_pressed?: null | boolean;
136
+
137
+ /**
138
+ * Either view styles or a function that receives a boolean reflecting whether
139
+ * the component is currently pressed and returns view styles.
140
+ */
141
+ style?:
142
+ | StyleProp<ViewStyle>
143
+ | ((state: PressableStateCallbackType) => StyleProp<ViewStyle>);
144
+
145
+ /**
146
+ * Duration (in milliseconds) to wait after press down before calling onPressIn.
147
+ */
148
+ unstable_pressDelay?: number;
149
+ }
@@ -0,0 +1,2 @@
1
+ export { PressableProps } from './PressableProps';
2
+ export { default } from './Pressable';