react-native-gesture-handler 2.27.1 → 2.28.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 (426) hide show
  1. package/RNGestureHandler.podspec +3 -2
  2. package/ReanimatedSwipeable/package.json +4 -4
  3. package/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandler.kt +14 -8
  4. package/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandlerOrchestrator.kt +10 -5
  5. package/android/src/main/jni/CMakeLists.txt +5 -0
  6. package/android/src/main/jni/cpp-adapter.cpp +6 -0
  7. package/apple/RNGestureHandler.h +4 -0
  8. package/apple/RNGestureHandler.mm +41 -6
  9. package/apple/RNGestureHandlerModule.mm +5 -0
  10. package/jestSetup.js +22 -3
  11. package/lib/commonjs/components/Pressable/Pressable.js +12 -21
  12. package/lib/commonjs/components/Pressable/Pressable.js.map +1 -1
  13. package/lib/commonjs/components/Pressable/StateMachine.js +8 -2
  14. package/lib/commonjs/components/Pressable/StateMachine.js.map +1 -1
  15. package/lib/commonjs/components/Pressable/stateDefinitions.js +22 -23
  16. package/lib/commonjs/components/Pressable/stateDefinitions.js.map +1 -1
  17. package/lib/commonjs/components/{ReanimatedSwipeable.js → ReanimatedSwipeable/ReanimatedSwipeable.js} +30 -39
  18. package/lib/commonjs/components/ReanimatedSwipeable/ReanimatedSwipeable.js.map +1 -0
  19. package/lib/commonjs/components/ReanimatedSwipeable/ReanimatedSwipeableProps.js +12 -0
  20. package/lib/commonjs/components/ReanimatedSwipeable/ReanimatedSwipeableProps.js.map +1 -0
  21. package/lib/commonjs/components/ReanimatedSwipeable/index.js +21 -0
  22. package/lib/commonjs/components/ReanimatedSwipeable/index.js.map +1 -0
  23. package/lib/commonjs/components/gestureHandlerRootHOC.js +4 -1
  24. package/lib/commonjs/components/gestureHandlerRootHOC.js.map +1 -1
  25. package/lib/commonjs/handlers/createHandler.js +1 -1
  26. package/lib/commonjs/handlers/createHandler.js.map +1 -1
  27. package/lib/commonjs/handlers/gestures/GestureDetector/index.js +1 -1
  28. package/lib/commonjs/handlers/gestures/GestureDetector/index.js.map +1 -1
  29. package/lib/commonjs/mocks/Pressable.js +13 -0
  30. package/lib/commonjs/mocks/Pressable.js.map +1 -0
  31. package/lib/commonjs/{mocks.js → mocks/mocks.js} +8 -11
  32. package/lib/commonjs/mocks/mocks.js.map +1 -0
  33. package/lib/commonjs/web/handlers/GestureHandler.js +5 -2
  34. package/lib/commonjs/web/handlers/GestureHandler.js.map +1 -1
  35. package/lib/commonjs/web/tools/GestureHandlerWebDelegate.js +0 -5
  36. package/lib/commonjs/web/tools/GestureHandlerWebDelegate.js.map +1 -1
  37. package/lib/commonjs/web/tools/KeyboardEventManager.js +34 -8
  38. package/lib/commonjs/web/tools/KeyboardEventManager.js.map +1 -1
  39. package/lib/module/components/Pressable/Pressable.js +14 -23
  40. package/lib/module/components/Pressable/Pressable.js.map +1 -1
  41. package/lib/module/components/Pressable/StateMachine.js +8 -2
  42. package/lib/module/components/Pressable/StateMachine.js.map +1 -1
  43. package/lib/module/components/Pressable/stateDefinitions.js +21 -22
  44. package/lib/module/components/Pressable/stateDefinitions.js.map +1 -1
  45. package/lib/module/components/{ReanimatedSwipeable.js → ReanimatedSwipeable/ReanimatedSwipeable.js} +24 -33
  46. package/lib/module/components/ReanimatedSwipeable/ReanimatedSwipeable.js.map +1 -0
  47. package/lib/module/components/ReanimatedSwipeable/ReanimatedSwipeableProps.js +8 -0
  48. package/lib/module/components/ReanimatedSwipeable/ReanimatedSwipeableProps.js.map +1 -0
  49. package/lib/module/components/ReanimatedSwipeable/index.js +5 -0
  50. package/lib/module/components/ReanimatedSwipeable/index.js.map +1 -0
  51. package/lib/module/components/gestureHandlerRootHOC.js +5 -0
  52. package/lib/module/components/gestureHandlerRootHOC.js.map +1 -1
  53. package/lib/module/handlers/createHandler.js +1 -1
  54. package/lib/module/handlers/createHandler.js.map +1 -1
  55. package/lib/module/handlers/gestures/GestureDetector/index.js +1 -1
  56. package/lib/module/handlers/gestures/GestureDetector/index.js.map +1 -1
  57. package/lib/module/mocks/Pressable.js +4 -0
  58. package/lib/module/mocks/Pressable.js.map +1 -0
  59. package/lib/module/{mocks.js → mocks/mocks.js} +7 -11
  60. package/lib/module/mocks/mocks.js.map +1 -0
  61. package/lib/module/web/handlers/GestureHandler.js +5 -2
  62. package/lib/module/web/handlers/GestureHandler.js.map +1 -1
  63. package/lib/module/web/tools/GestureHandlerWebDelegate.js +0 -5
  64. package/lib/module/web/tools/GestureHandlerWebDelegate.js.map +1 -1
  65. package/lib/module/web/tools/KeyboardEventManager.js +34 -8
  66. package/lib/module/web/tools/KeyboardEventManager.js.map +1 -1
  67. package/lib/typescript/ActionType.d.ts +1 -0
  68. package/lib/typescript/Directions.d.ts +1 -0
  69. package/lib/typescript/EnableNewWebImplementation.d.ts +1 -0
  70. package/lib/typescript/GestureHandlerRootViewContext.d.ts +1 -0
  71. package/lib/typescript/PlatformConstants.d.ts +1 -0
  72. package/lib/typescript/PlatformConstants.web.d.ts +1 -0
  73. package/lib/typescript/PointerType.d.ts +1 -0
  74. package/lib/typescript/RNGestureHandlerModule.d.ts +1 -0
  75. package/lib/typescript/RNGestureHandlerModule.web.d.ts +1 -0
  76. package/lib/typescript/RNGestureHandlerModule.windows.d.ts +1 -0
  77. package/lib/typescript/RNRenderer.d.ts +1 -0
  78. package/lib/typescript/RNRenderer.web.d.ts +1 -0
  79. package/lib/typescript/State.d.ts +1 -0
  80. package/lib/typescript/TouchEventType.d.ts +1 -0
  81. package/lib/typescript/components/DrawerLayout.d.ts +1 -0
  82. package/lib/typescript/components/GestureButtons.d.ts +1 -0
  83. package/lib/typescript/components/GestureButtonsProps.d.ts +10 -1
  84. package/lib/typescript/components/GestureButtonsProps.d.ts.map +1 -1
  85. package/lib/typescript/components/GestureComponents.d.ts +1 -0
  86. package/lib/typescript/components/GestureComponents.web.d.ts +1 -0
  87. package/lib/typescript/components/GestureHandlerButton.d.ts +1 -0
  88. package/lib/typescript/components/GestureHandlerButton.web.d.ts +1 -0
  89. package/lib/typescript/components/GestureHandlerRootView.android.d.ts +1 -0
  90. package/lib/typescript/components/GestureHandlerRootView.d.ts +1 -0
  91. package/lib/typescript/components/GestureHandlerRootView.web.d.ts +1 -0
  92. package/lib/typescript/components/Pressable/Pressable.d.ts +1 -0
  93. package/lib/typescript/components/Pressable/Pressable.d.ts.map +1 -1
  94. package/lib/typescript/components/Pressable/PressableProps.d.ts +3 -4
  95. package/lib/typescript/components/Pressable/PressableProps.d.ts.map +1 -1
  96. package/lib/typescript/components/Pressable/StateMachine.d.ts +4 -2
  97. package/lib/typescript/components/Pressable/StateMachine.d.ts.map +1 -1
  98. package/lib/typescript/components/Pressable/index.d.ts +1 -0
  99. package/lib/typescript/components/Pressable/stateDefinitions.d.ts +3 -2
  100. package/lib/typescript/components/Pressable/stateDefinitions.d.ts.map +1 -1
  101. package/lib/typescript/components/Pressable/utils.d.ts +1 -0
  102. package/lib/typescript/components/ReanimatedDrawerLayout.d.ts +1 -0
  103. package/lib/typescript/components/ReanimatedSwipeable/ReanimatedSwipeable.d.ts +6 -0
  104. package/lib/typescript/components/ReanimatedSwipeable/ReanimatedSwipeable.d.ts.map +1 -0
  105. package/lib/typescript/components/{ReanimatedSwipeable.d.ts → ReanimatedSwipeable/ReanimatedSwipeableProps.d.ts} +10 -7
  106. package/lib/typescript/components/ReanimatedSwipeable/ReanimatedSwipeableProps.d.ts.map +1 -0
  107. package/lib/typescript/components/ReanimatedSwipeable/index.d.ts +3 -0
  108. package/lib/typescript/components/ReanimatedSwipeable/index.d.ts.map +1 -0
  109. package/lib/typescript/components/Swipeable.d.ts +1 -0
  110. package/lib/typescript/components/Text.d.ts +1 -0
  111. package/lib/typescript/components/gestureHandlerRootHOC.d.ts +5 -0
  112. package/lib/typescript/components/gestureHandlerRootHOC.d.ts.map +1 -1
  113. package/lib/typescript/components/touchables/ExtraButtonProps.d.ts +1 -0
  114. package/lib/typescript/components/touchables/GenericTouchable.d.ts +1 -0
  115. package/lib/typescript/components/touchables/GenericTouchableProps.d.ts +1 -0
  116. package/lib/typescript/components/touchables/TouchableHighlight.d.ts +1 -0
  117. package/lib/typescript/components/touchables/TouchableNativeFeedback.android.d.ts +1 -0
  118. package/lib/typescript/components/touchables/TouchableNativeFeedback.d.ts +1 -0
  119. package/lib/typescript/components/touchables/TouchableNativeFeedbackProps.d.ts +1 -0
  120. package/lib/typescript/components/touchables/TouchableOpacity.d.ts +1 -0
  121. package/lib/typescript/components/touchables/TouchableWithoutFeedback.d.ts +1 -0
  122. package/lib/typescript/components/touchables/index.d.ts +1 -0
  123. package/lib/typescript/components/utils.d.ts +1 -0
  124. package/lib/typescript/findNodeHandle.d.ts +1 -0
  125. package/lib/typescript/findNodeHandle.web.d.ts +1 -0
  126. package/lib/typescript/getShadowNodeFromRef.d.ts +1 -0
  127. package/lib/typescript/getShadowNodeFromRef.web.d.ts +1 -0
  128. package/lib/typescript/ghQueueMicrotask.d.ts +1 -0
  129. package/lib/typescript/handlers/FlingGestureHandler.d.ts +1 -0
  130. package/lib/typescript/handlers/ForceTouchGestureHandler.d.ts +1 -0
  131. package/lib/typescript/handlers/GestureHandlerEventPayload.d.ts +1 -0
  132. package/lib/typescript/handlers/LongPressGestureHandler.d.ts +1 -0
  133. package/lib/typescript/handlers/NativeViewGestureHandler.d.ts +1 -0
  134. package/lib/typescript/handlers/PanGestureHandler.d.ts +1 -0
  135. package/lib/typescript/handlers/PinchGestureHandler.d.ts +1 -0
  136. package/lib/typescript/handlers/PressabilityDebugView.d.ts +1 -0
  137. package/lib/typescript/handlers/PressabilityDebugView.web.d.ts +1 -0
  138. package/lib/typescript/handlers/RotationGestureHandler.d.ts +1 -0
  139. package/lib/typescript/handlers/TapGestureHandler.d.ts +1 -0
  140. package/lib/typescript/handlers/createHandler.d.ts +1 -0
  141. package/lib/typescript/handlers/createNativeWrapper.d.ts +1 -0
  142. package/lib/typescript/handlers/customDirectEventTypes.d.ts +1 -0
  143. package/lib/typescript/handlers/customDirectEventTypes.web.d.ts +1 -0
  144. package/lib/typescript/handlers/gestureHandlerCommon.d.ts +1 -0
  145. package/lib/typescript/handlers/gestureHandlerTypesCompat.d.ts +1 -0
  146. package/lib/typescript/handlers/gestures/GestureDetector/Wrap.d.ts +1 -0
  147. package/lib/typescript/handlers/gestures/GestureDetector/Wrap.web.d.ts +1 -0
  148. package/lib/typescript/handlers/gestures/GestureDetector/attachHandlers.d.ts +1 -0
  149. package/lib/typescript/handlers/gestures/GestureDetector/dropHandlers.d.ts +1 -0
  150. package/lib/typescript/handlers/gestures/GestureDetector/index.d.ts +1 -0
  151. package/lib/typescript/handlers/gestures/GestureDetector/needsToReattach.d.ts +1 -0
  152. package/lib/typescript/handlers/gestures/GestureDetector/types.d.ts +1 -0
  153. package/lib/typescript/handlers/gestures/GestureDetector/updateHandlers.d.ts +1 -0
  154. package/lib/typescript/handlers/gestures/GestureDetector/useAnimatedGesture.d.ts +1 -0
  155. package/lib/typescript/handlers/gestures/GestureDetector/useDetectorUpdater.d.ts +1 -0
  156. package/lib/typescript/handlers/gestures/GestureDetector/useMountReactions.d.ts +1 -0
  157. package/lib/typescript/handlers/gestures/GestureDetector/useViewRefHandler.d.ts +1 -0
  158. package/lib/typescript/handlers/gestures/GestureDetector/utils.d.ts +1 -0
  159. package/lib/typescript/handlers/gestures/eventReceiver.d.ts +1 -0
  160. package/lib/typescript/handlers/gestures/flingGesture.d.ts +1 -0
  161. package/lib/typescript/handlers/gestures/forceTouchGesture.d.ts +1 -0
  162. package/lib/typescript/handlers/gestures/gesture.d.ts +1 -0
  163. package/lib/typescript/handlers/gestures/gestureComposition.d.ts +1 -0
  164. package/lib/typescript/handlers/gestures/gestureObjects.d.ts +1 -0
  165. package/lib/typescript/handlers/gestures/gestureStateManager.d.ts +1 -0
  166. package/lib/typescript/handlers/gestures/gestureStateManager.web.d.ts +1 -0
  167. package/lib/typescript/handlers/gestures/hoverGesture.d.ts +1 -0
  168. package/lib/typescript/handlers/gestures/longPressGesture.d.ts +1 -0
  169. package/lib/typescript/handlers/gestures/manualGesture.d.ts +1 -0
  170. package/lib/typescript/handlers/gestures/nativeGesture.d.ts +1 -0
  171. package/lib/typescript/handlers/gestures/panGesture.d.ts +1 -0
  172. package/lib/typescript/handlers/gestures/pinchGesture.d.ts +1 -0
  173. package/lib/typescript/handlers/gestures/reanimatedWrapper.d.ts +1 -0
  174. package/lib/typescript/handlers/gestures/rotationGesture.d.ts +1 -0
  175. package/lib/typescript/handlers/gestures/tapGesture.d.ts +1 -0
  176. package/lib/typescript/handlers/getNextHandlerTag.d.ts +1 -0
  177. package/lib/typescript/handlers/handlersRegistry.d.ts +1 -0
  178. package/lib/typescript/handlers/utils.d.ts +1 -0
  179. package/lib/typescript/index.d.ts +1 -0
  180. package/lib/typescript/init.d.ts +1 -0
  181. package/lib/typescript/jestUtils/index.d.ts +1 -0
  182. package/lib/typescript/jestUtils/jestUtils.d.ts +1 -0
  183. package/lib/typescript/mocks/Pressable.d.ts +2 -0
  184. package/lib/typescript/mocks/Pressable.d.ts.map +1 -0
  185. package/lib/typescript/{mocks.d.ts → mocks/mocks.d.ts} +5 -4
  186. package/lib/typescript/mocks/mocks.d.ts.map +1 -0
  187. package/lib/typescript/mountRegistry.d.ts +1 -0
  188. package/lib/typescript/specs/NativeRNGestureHandlerModule.d.ts +1 -0
  189. package/lib/typescript/specs/RNGestureHandlerButtonNativeComponent.d.ts +1 -0
  190. package/lib/typescript/specs/RNGestureHandlerRootViewNativeComponent.d.ts +1 -0
  191. package/lib/typescript/typeUtils.d.ts +1 -0
  192. package/lib/typescript/utils.d.ts +1 -0
  193. package/lib/typescript/web/Gestures.d.ts +1 -0
  194. package/lib/typescript/web/constants.d.ts +1 -0
  195. package/lib/typescript/web/detectors/RotationGestureDetector.d.ts +1 -0
  196. package/lib/typescript/web/detectors/ScaleGestureDetector.d.ts +1 -0
  197. package/lib/typescript/web/handlers/FlingGestureHandler.d.ts +1 -0
  198. package/lib/typescript/web/handlers/GestureHandler.d.ts +1 -0
  199. package/lib/typescript/web/handlers/GestureHandler.d.ts.map +1 -1
  200. package/lib/typescript/web/handlers/HoverGestureHandler.d.ts +1 -0
  201. package/lib/typescript/web/handlers/IGestureHandler.d.ts +1 -0
  202. package/lib/typescript/web/handlers/LongPressGestureHandler.d.ts +1 -0
  203. package/lib/typescript/web/handlers/ManualGestureHandler.d.ts +1 -0
  204. package/lib/typescript/web/handlers/NativeViewGestureHandler.d.ts +1 -0
  205. package/lib/typescript/web/handlers/PanGestureHandler.d.ts +1 -0
  206. package/lib/typescript/web/handlers/PinchGestureHandler.d.ts +1 -0
  207. package/lib/typescript/web/handlers/RotationGestureHandler.d.ts +1 -0
  208. package/lib/typescript/web/handlers/TapGestureHandler.d.ts +1 -0
  209. package/lib/typescript/web/interfaces.d.ts +1 -0
  210. package/lib/typescript/web/tools/CircularBuffer.d.ts +1 -0
  211. package/lib/typescript/web/tools/EventManager.d.ts +1 -0
  212. package/lib/typescript/web/tools/GestureHandlerDelegate.d.ts +1 -0
  213. package/lib/typescript/web/tools/GestureHandlerOrchestrator.d.ts +1 -0
  214. package/lib/typescript/web/tools/GestureHandlerWebDelegate.d.ts +1 -0
  215. package/lib/typescript/web/tools/GestureHandlerWebDelegate.d.ts.map +1 -1
  216. package/lib/typescript/web/tools/InteractionManager.d.ts +1 -0
  217. package/lib/typescript/web/tools/KeyboardEventManager.d.ts +7 -3
  218. package/lib/typescript/web/tools/KeyboardEventManager.d.ts.map +1 -1
  219. package/lib/typescript/web/tools/LeastSquareSolver.d.ts +1 -0
  220. package/lib/typescript/web/tools/NodeManager.d.ts +1 -0
  221. package/lib/typescript/web/tools/PointerEventManager.d.ts +1 -0
  222. package/lib/typescript/web/tools/PointerTracker.d.ts +1 -0
  223. package/lib/typescript/web/tools/Vector.d.ts +1 -0
  224. package/lib/typescript/web/tools/VelocityTracker.d.ts +1 -0
  225. package/lib/typescript/web/tools/WheelEventManager.d.ts +1 -0
  226. package/lib/typescript/web/utils.d.ts +1 -0
  227. package/lib/typescript/web_hammer/DiscreteGestureHandler.d.ts +1 -0
  228. package/lib/typescript/web_hammer/DraggingGestureHandler.d.ts +1 -0
  229. package/lib/typescript/web_hammer/Errors.d.ts +1 -0
  230. package/lib/typescript/web_hammer/FlingGestureHandler.d.ts +1 -0
  231. package/lib/typescript/web_hammer/GestureHandler.d.ts +1 -0
  232. package/lib/typescript/web_hammer/IndiscreteGestureHandler.d.ts +1 -0
  233. package/lib/typescript/web_hammer/LongPressGestureHandler.d.ts +1 -0
  234. package/lib/typescript/web_hammer/NativeViewGestureHandler.d.ts +1 -0
  235. package/lib/typescript/web_hammer/NodeManager.d.ts +1 -0
  236. package/lib/typescript/web_hammer/PanGestureHandler.d.ts +1 -0
  237. package/lib/typescript/web_hammer/PinchGestureHandler.d.ts +1 -0
  238. package/lib/typescript/web_hammer/PressGestureHandler.d.ts +1 -0
  239. package/lib/typescript/web_hammer/RotationGestureHandler.d.ts +1 -0
  240. package/lib/typescript/web_hammer/TapGestureHandler.d.ts +1 -0
  241. package/lib/typescript/web_hammer/constants.d.ts +1 -0
  242. package/lib/typescript/web_hammer/utils.d.ts +1 -0
  243. package/package.json +4 -3
  244. package/scripts/gesture_handler_utils.rb +25 -0
  245. package/src/components/GestureButtonsProps.ts +10 -0
  246. package/src/components/Pressable/Pressable.tsx +20 -31
  247. package/src/components/Pressable/PressableProps.tsx +2 -4
  248. package/src/components/Pressable/StateMachine.tsx +12 -4
  249. package/src/components/Pressable/stateDefinitions.ts +23 -23
  250. package/src/components/ReanimatedSwipeable/ReanimatedSwipeable.tsx +603 -0
  251. package/src/components/ReanimatedSwipeable/ReanimatedSwipeableProps.ts +199 -0
  252. package/src/components/ReanimatedSwipeable/index.ts +6 -0
  253. package/src/components/gestureHandlerRootHOC.tsx +4 -0
  254. package/src/handlers/createHandler.tsx +1 -1
  255. package/src/handlers/gestures/GestureDetector/index.tsx +1 -1
  256. package/src/mocks/Pressable.tsx +1 -0
  257. package/src/{mocks.tsx → mocks/mocks.tsx} +7 -11
  258. package/src/web/handlers/GestureHandler.ts +8 -3
  259. package/src/web/tools/GestureHandlerWebDelegate.ts +0 -5
  260. package/src/web/tools/KeyboardEventManager.ts +50 -8
  261. package/lib/commonjs/components/ReanimatedSwipeable.js.map +0 -1
  262. package/lib/commonjs/mocks.js.map +0 -1
  263. package/lib/module/components/ReanimatedSwipeable.js.map +0 -1
  264. package/lib/module/mocks.js.map +0 -1
  265. package/lib/typescript/ActionType.js +0 -6
  266. package/lib/typescript/Directions.js +0 -18
  267. package/lib/typescript/EnableNewWebImplementation.js +0 -30
  268. package/lib/typescript/GestureHandlerRootViewContext.js +0 -2
  269. package/lib/typescript/PlatformConstants.js +0 -3
  270. package/lib/typescript/PlatformConstants.web.js +0 -5
  271. package/lib/typescript/PointerType.js +0 -8
  272. package/lib/typescript/RNGestureHandlerModule.js +0 -4
  273. package/lib/typescript/RNGestureHandlerModule.web.js +0 -92
  274. package/lib/typescript/RNGestureHandlerModule.windows.js +0 -47
  275. package/lib/typescript/RNRenderer.js +0 -3
  276. package/lib/typescript/RNRenderer.web.js +0 -3
  277. package/lib/typescript/State.js +0 -9
  278. package/lib/typescript/TouchEventType.js +0 -7
  279. package/lib/typescript/components/DrawerLayout.js +0 -417
  280. package/lib/typescript/components/GestureButtons.js +0 -165
  281. package/lib/typescript/components/GestureButtonsProps.js +0 -1
  282. package/lib/typescript/components/GestureComponents.js +0 -67
  283. package/lib/typescript/components/GestureComponents.web.js +0 -21
  284. package/lib/typescript/components/GestureHandlerButton.js +0 -2
  285. package/lib/typescript/components/GestureHandlerButton.web.js +0 -3
  286. package/lib/typescript/components/GestureHandlerRootView.android.js +0 -17
  287. package/lib/typescript/components/GestureHandlerRootView.js +0 -16
  288. package/lib/typescript/components/GestureHandlerRootView.web.js +0 -11
  289. package/lib/typescript/components/Pressable/Pressable.js +0 -231
  290. package/lib/typescript/components/Pressable/PressableProps.js +0 -1
  291. package/lib/typescript/components/Pressable/StateMachine.js +0 -34
  292. package/lib/typescript/components/Pressable/index.js +0 -1
  293. package/lib/typescript/components/Pressable/stateDefinitions.js +0 -104
  294. package/lib/typescript/components/Pressable/utils.js +0 -80
  295. package/lib/typescript/components/ReanimatedDrawerLayout.js +0 -364
  296. package/lib/typescript/components/ReanimatedSwipeable.d.ts.map +0 -1
  297. package/lib/typescript/components/ReanimatedSwipeable.js +0 -400
  298. package/lib/typescript/components/Swipeable.js +0 -287
  299. package/lib/typescript/components/Text.js +0 -38
  300. package/lib/typescript/components/gestureHandlerRootHOC.js +0 -18
  301. package/lib/typescript/components/touchables/ExtraButtonProps.js +0 -1
  302. package/lib/typescript/components/touchables/GenericTouchable.js +0 -221
  303. package/lib/typescript/components/touchables/GenericTouchableProps.js +0 -1
  304. package/lib/typescript/components/touchables/TouchableHighlight.js +0 -75
  305. package/lib/typescript/components/touchables/TouchableNativeFeedback.android.js +0 -65
  306. package/lib/typescript/components/touchables/TouchableNativeFeedback.js +0 -6
  307. package/lib/typescript/components/touchables/TouchableNativeFeedbackProps.js +0 -1
  308. package/lib/typescript/components/touchables/TouchableOpacity.js +0 -51
  309. package/lib/typescript/components/touchables/TouchableWithoutFeedback.js +0 -10
  310. package/lib/typescript/components/touchables/index.js +0 -4
  311. package/lib/typescript/components/utils.js +0 -11
  312. package/lib/typescript/findNodeHandle.js +0 -2
  313. package/lib/typescript/findNodeHandle.web.js +0 -31
  314. package/lib/typescript/getShadowNodeFromRef.js +0 -45
  315. package/lib/typescript/getShadowNodeFromRef.web.js +0 -7
  316. package/lib/typescript/ghQueueMicrotask.js +0 -7
  317. package/lib/typescript/handlers/FlingGestureHandler.js +0 -19
  318. package/lib/typescript/handlers/ForceTouchGestureHandler.js +0 -37
  319. package/lib/typescript/handlers/GestureHandlerEventPayload.js +0 -1
  320. package/lib/typescript/handlers/LongPressGestureHandler.js +0 -22
  321. package/lib/typescript/handlers/NativeViewGestureHandler.js +0 -20
  322. package/lib/typescript/handlers/PanGestureHandler.js +0 -128
  323. package/lib/typescript/handlers/PinchGestureHandler.js +0 -12
  324. package/lib/typescript/handlers/PressabilityDebugView.js +0 -2
  325. package/lib/typescript/handlers/PressabilityDebugView.web.js +0 -4
  326. package/lib/typescript/handlers/RotationGestureHandler.js +0 -12
  327. package/lib/typescript/handlers/TapGestureHandler.js +0 -26
  328. package/lib/typescript/handlers/createHandler.js +0 -375
  329. package/lib/typescript/handlers/createNativeWrapper.js +0 -67
  330. package/lib/typescript/handlers/customDirectEventTypes.js +0 -2
  331. package/lib/typescript/handlers/customDirectEventTypes.web.js +0 -4
  332. package/lib/typescript/handlers/gestureHandlerCommon.js +0 -42
  333. package/lib/typescript/handlers/gestureHandlerTypesCompat.js +0 -1
  334. package/lib/typescript/handlers/gestures/GestureDetector/Wrap.js +0 -22
  335. package/lib/typescript/handlers/gestures/GestureDetector/Wrap.web.js +0 -24
  336. package/lib/typescript/handlers/gestures/GestureDetector/attachHandlers.js +0 -55
  337. package/lib/typescript/handlers/gestures/GestureDetector/dropHandlers.js +0 -12
  338. package/lib/typescript/handlers/gestures/GestureDetector/index.js +0 -114
  339. package/lib/typescript/handlers/gestures/GestureDetector/needsToReattach.js +0 -18
  340. package/lib/typescript/handlers/gestures/GestureDetector/types.js +0 -1
  341. package/lib/typescript/handlers/gestures/GestureDetector/updateHandlers.js +0 -54
  342. package/lib/typescript/handlers/gestures/GestureDetector/useAnimatedGesture.js +0 -137
  343. package/lib/typescript/handlers/gestures/GestureDetector/useDetectorUpdater.js +0 -48
  344. package/lib/typescript/handlers/gestures/GestureDetector/useMountReactions.js +0 -35
  345. package/lib/typescript/handlers/gestures/GestureDetector/useViewRefHandler.js +0 -32
  346. package/lib/typescript/handlers/gestures/GestureDetector/utils.js +0 -140
  347. package/lib/typescript/handlers/gestures/eventReceiver.js +0 -105
  348. package/lib/typescript/handlers/gestures/flingGesture.js +0 -27
  349. package/lib/typescript/handlers/gestures/forceTouchGesture.js +0 -57
  350. package/lib/typescript/handlers/gestures/gesture.js +0 -303
  351. package/lib/typescript/handlers/gestures/gestureComposition.js +0 -78
  352. package/lib/typescript/handlers/gestures/gestureObjects.js +0 -125
  353. package/lib/typescript/handlers/gestures/gestureStateManager.js +0 -60
  354. package/lib/typescript/handlers/gestures/gestureStateManager.web.js +0 -19
  355. package/lib/typescript/handlers/gestures/hoverGesture.js +0 -45
  356. package/lib/typescript/handlers/gestures/longPressGesture.js +0 -35
  357. package/lib/typescript/handlers/gestures/manualGesture.js +0 -16
  358. package/lib/typescript/handlers/gestures/nativeGesture.js +0 -24
  359. package/lib/typescript/handlers/gestures/panGesture.js +0 -181
  360. package/lib/typescript/handlers/gestures/pinchGesture.js +0 -27
  361. package/lib/typescript/handlers/gestures/reanimatedWrapper.js +0 -23
  362. package/lib/typescript/handlers/gestures/rotationGesture.js +0 -27
  363. package/lib/typescript/handlers/gestures/tapGesture.js +0 -72
  364. package/lib/typescript/handlers/getNextHandlerTag.js +0 -4
  365. package/lib/typescript/handlers/handlersRegistry.js +0 -36
  366. package/lib/typescript/handlers/utils.js +0 -58
  367. package/lib/typescript/index.js +0 -28
  368. package/lib/typescript/init.js +0 -15
  369. package/lib/typescript/jestUtils/index.js +0 -1
  370. package/lib/typescript/jestUtils/jestUtils.js +0 -290
  371. package/lib/typescript/mocks.d.ts.map +0 -1
  372. package/lib/typescript/mocks.js +0 -59
  373. package/lib/typescript/mountRegistry.js +0 -29
  374. package/lib/typescript/specs/NativeRNGestureHandlerModule.js +0 -2
  375. package/lib/typescript/specs/RNGestureHandlerButtonNativeComponent.js +0 -2
  376. package/lib/typescript/specs/RNGestureHandlerRootViewNativeComponent.js +0 -2
  377. package/lib/typescript/typeUtils.js +0 -1
  378. package/lib/typescript/utils.js +0 -80
  379. package/lib/typescript/web/Gestures.js +0 -38
  380. package/lib/typescript/web/constants.js +0 -2
  381. package/lib/typescript/web/detectors/RotationGestureDetector.js +0 -122
  382. package/lib/typescript/web/detectors/ScaleGestureDetector.js +0 -117
  383. package/lib/typescript/web/handlers/FlingGestureHandler.js +0 -133
  384. package/lib/typescript/web/handlers/GestureHandler.js +0 -656
  385. package/lib/typescript/web/handlers/HoverGestureHandler.js +0 -37
  386. package/lib/typescript/web/handlers/IGestureHandler.js +0 -1
  387. package/lib/typescript/web/handlers/LongPressGestureHandler.js +0 -136
  388. package/lib/typescript/web/handlers/ManualGestureHandler.js +0 -29
  389. package/lib/typescript/web/handlers/NativeViewGestureHandler.js +0 -133
  390. package/lib/typescript/web/handlers/PanGestureHandler.js +0 -420
  391. package/lib/typescript/web/handlers/PinchGestureHandler.js +0 -117
  392. package/lib/typescript/web/handlers/RotationGestureHandler.js +0 -122
  393. package/lib/typescript/web/handlers/TapGestureHandler.js +0 -202
  394. package/lib/typescript/web/interfaces.js +0 -25
  395. package/lib/typescript/web/tools/CircularBuffer.js +0 -37
  396. package/lib/typescript/web/tools/EventManager.js +0 -85
  397. package/lib/typescript/web/tools/GestureHandlerDelegate.js +0 -1
  398. package/lib/typescript/web/tools/GestureHandlerOrchestrator.js +0 -273
  399. package/lib/typescript/web/tools/GestureHandlerWebDelegate.js +0 -169
  400. package/lib/typescript/web/tools/InteractionManager.js +0 -91
  401. package/lib/typescript/web/tools/KeyboardEventManager.js +0 -73
  402. package/lib/typescript/web/tools/LeastSquareSolver.js +0 -147
  403. package/lib/typescript/web/tools/NodeManager.js +0 -28
  404. package/lib/typescript/web/tools/PointerEventManager.js +0 -179
  405. package/lib/typescript/web/tools/PointerTracker.js +0 -161
  406. package/lib/typescript/web/tools/Vector.js +0 -43
  407. package/lib/typescript/web/tools/VelocityTracker.js +0 -76
  408. package/lib/typescript/web/tools/WheelEventManager.js +0 -40
  409. package/lib/typescript/web/utils.js +0 -233
  410. package/lib/typescript/web_hammer/DiscreteGestureHandler.js +0 -48
  411. package/lib/typescript/web_hammer/DraggingGestureHandler.js +0 -25
  412. package/lib/typescript/web_hammer/Errors.js +0 -5
  413. package/lib/typescript/web_hammer/FlingGestureHandler.js +0 -119
  414. package/lib/typescript/web_hammer/GestureHandler.js +0 -469
  415. package/lib/typescript/web_hammer/IndiscreteGestureHandler.js +0 -26
  416. package/lib/typescript/web_hammer/LongPressGestureHandler.js +0 -46
  417. package/lib/typescript/web_hammer/NativeViewGestureHandler.js +0 -40
  418. package/lib/typescript/web_hammer/NodeManager.js +0 -28
  419. package/lib/typescript/web_hammer/PanGestureHandler.js +0 -151
  420. package/lib/typescript/web_hammer/PinchGestureHandler.js +0 -19
  421. package/lib/typescript/web_hammer/PressGestureHandler.js +0 -133
  422. package/lib/typescript/web_hammer/RotationGestureHandler.js +0 -20
  423. package/lib/typescript/web_hammer/TapGestureHandler.js +0 -142
  424. package/lib/typescript/web_hammer/constants.js +0 -42
  425. package/lib/typescript/web_hammer/utils.js +0 -15
  426. package/src/components/ReanimatedSwipeable.tsx +0 -811
@@ -10,3 +10,4 @@ export default class LeastSquareSolver {
10
10
  solve(degree: number): PolynomialFit | null;
11
11
  }
12
12
  export {};
13
+ //# sourceMappingURL=LeastSquareSolver.d.ts.map
@@ -10,3 +10,4 @@ export default abstract class NodeManager {
10
10
  [x: number]: import("../handlers/PanGestureHandler").default | import("../handlers/TapGestureHandler").default | import("../handlers/LongPressGestureHandler").default | import("../handlers/PinchGestureHandler").default | import("../handlers/RotationGestureHandler").default | import("../handlers/FlingGestureHandler").default | import("../handlers/NativeViewGestureHandler").default | import("../handlers/ManualGestureHandler").default | import("../handlers/HoverGestureHandler").default;
11
11
  };
12
12
  }
13
+ //# sourceMappingURL=NodeManager.d.ts.map
@@ -17,3 +17,4 @@ export default class PointerEventManager extends EventManager<HTMLElement> {
17
17
  protected mapEvent(event: PointerEvent, eventType: EventTypes): AdaptedEvent;
18
18
  resetManager(): void;
19
19
  }
20
+ //# sourceMappingURL=PointerEventManager.d.ts.map
@@ -48,3 +48,4 @@ export default class PointerTracker {
48
48
  get trackedPointersIDs(): number[];
49
49
  get trackedPointers(): Map<number, TrackerElement>;
50
50
  }
51
+ //# sourceMappingURL=PointerTracker.d.ts.map
@@ -13,3 +13,4 @@ export default class Vector {
13
13
  computeSimilarity(vector: Vector): number;
14
14
  isSimilar(vector: Vector, threshold: number): boolean;
15
15
  }
16
+ //# sourceMappingURL=Vector.d.ts.map
@@ -11,3 +11,4 @@ export default class VelocityTracker {
11
11
  get velocity(): [number, number];
12
12
  reset(): void;
13
13
  }
14
+ //# sourceMappingURL=VelocityTracker.d.ts.map
@@ -9,3 +9,4 @@ export default class WheelEventManager extends EventManager<HTMLElement> {
9
9
  protected mapEvent(event: WheelEvent): AdaptedEvent;
10
10
  resetManager(): void;
11
11
  }
12
+ //# sourceMappingURL=WheelEventManager.d.ts.map
@@ -12,3 +12,4 @@ export declare function tryExtractStylusData(event: PointerEvent): StylusData |
12
12
  export declare const RNSVGElements: Set<string>;
13
13
  export declare function isRNSVGElement(viewRef: SVGRef | GestureHandlerRef): boolean;
14
14
  export declare function isRNSVGNode(node: any): boolean;
15
+ //# sourceMappingURL=utils.d.ts.map
@@ -18,3 +18,4 @@ declare abstract class DiscreteGestureHandler extends GestureHandler {
18
18
  };
19
19
  }
20
20
  export default DiscreteGestureHandler;
21
+ //# sourceMappingURL=DiscreteGestureHandler.d.ts.map
@@ -13,3 +13,4 @@ declare abstract class DraggingGestureHandler extends GestureHandler {
13
13
  };
14
14
  }
15
15
  export default DraggingGestureHandler;
16
+ //# sourceMappingURL=DraggingGestureHandler.d.ts.map
@@ -1,3 +1,4 @@
1
1
  export declare class GesturePropError extends Error {
2
2
  constructor(name: string, value: unknown, expectedType: string);
3
3
  }
4
+ //# sourceMappingURL=Errors.d.ts.map
@@ -41,3 +41,4 @@ declare class FlingGestureHandler extends DraggingGestureHandler {
41
41
  }>;
42
42
  }
43
43
  export default FlingGestureHandler;
44
+ //# sourceMappingURL=FlingGestureHandler.d.ts.map
@@ -143,3 +143,4 @@ declare abstract class GestureHandler {
143
143
  ensureConfig(config: Config): Required<Config>;
144
144
  }
145
145
  export default GestureHandler;
146
+ //# sourceMappingURL=GestureHandler.d.ts.map
@@ -38,3 +38,4 @@ declare abstract class IndiscreteGestureHandler extends GestureHandler {
38
38
  };
39
39
  }
40
40
  export default IndiscreteGestureHandler;
41
+ //# sourceMappingURL=IndiscreteGestureHandler.d.ts.map
@@ -36,3 +36,4 @@ declare class LongPressGestureHandler extends PressGestureHandler {
36
36
  getState(type: keyof typeof HammerInputNames): 1 | 4 | 5;
37
37
  }
38
38
  export default LongPressGestureHandler;
39
+ //# sourceMappingURL=LongPressGestureHandler.d.ts.map
@@ -5,3 +5,4 @@ declare class NativeViewGestureHandler extends PressGestureHandler {
5
5
  onRawEvent(ev: HammerInputExt): void;
6
6
  }
7
7
  export default NativeViewGestureHandler;
8
+ //# sourceMappingURL=NativeViewGestureHandler.d.ts.map
@@ -5,3 +5,4 @@ export declare function dropGestureHandler(handlerTag: number): void;
5
5
  export declare function getNodes(): {
6
6
  [x: number]: any;
7
7
  };
8
+ //# sourceMappingURL=NodeManager.d.ts.map
@@ -54,3 +54,4 @@ declare class PanGestureHandler extends DraggingGestureHandler {
54
54
  };
55
55
  }
56
56
  export default PanGestureHandler;
57
+ //# sourceMappingURL=PanGestureHandler.d.ts.map
@@ -11,3 +11,4 @@ declare class PinchGestureHandler extends IndiscreteGestureHandler {
11
11
  };
12
12
  }
13
13
  export default PinchGestureHandler;
14
+ //# sourceMappingURL=PinchGestureHandler.d.ts.map
@@ -81,3 +81,4 @@ declare class PressGestureHandler extends DiscreteGestureHandler {
81
81
  }>;
82
82
  }
83
83
  export default PressGestureHandler;
84
+ //# sourceMappingURL=PressGestureHandler.d.ts.map
@@ -11,3 +11,4 @@ declare class RotationGestureHandler extends IndiscreteGestureHandler {
11
11
  };
12
12
  }
13
13
  export default RotationGestureHandler;
14
+ //# sourceMappingURL=RotationGestureHandler.d.ts.map
@@ -55,3 +55,4 @@ declare class TapGestureHandler extends DiscreteGestureHandler {
55
55
  onWaitingEnded(_gesture: any): void;
56
56
  }
57
57
  export default TapGestureHandler;
58
+ //# sourceMappingURL=TapGestureHandler.d.ts.map
@@ -37,3 +37,4 @@ export declare const HammerDirectionNames: {
37
37
  4: string;
38
38
  2: string;
39
39
  };
40
+ //# sourceMappingURL=constants.d.ts.map
@@ -7,3 +7,4 @@ export declare const VEC_LEN_SQ: ({ x, y }?: {
7
7
  }) => number;
8
8
  export declare const TEST_MAX_IF_NOT_NAN: (value: number, max: number) => boolean;
9
9
  export declare function fireAfterInterval(method: () => void, interval?: number | boolean): number | null;
10
+ //# sourceMappingURL=utils.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-gesture-handler",
3
- "version": "2.27.1",
3
+ "version": "2.28.0",
4
4
  "description": "Declarative API exposing native platform touch and gesture system to React Native",
5
5
  "scripts": {
6
6
  "test": "jest",
@@ -46,6 +46,7 @@
46
46
  "android/svg",
47
47
  "android/nosvg",
48
48
  "apple/",
49
+ "scripts/",
49
50
  "Swipeable/",
50
51
  "ReanimatedSwipeable/",
51
52
  "jest-utils/",
@@ -78,7 +79,7 @@
78
79
  "@babel/core": "^7.25.2",
79
80
  "@babel/preset-env": "^7.25.3",
80
81
  "@babel/preset-typescript": "^7.12.7",
81
- "@react-native/babel-preset": "0.80.0",
82
+ "@react-native/babel-preset": "0.81.0-rc.5",
82
83
  "@testing-library/react-native": "^12.5.1",
83
84
  "@types/hoist-non-react-statics": "^3.3.1",
84
85
  "@types/invariant": "^2.2.37",
@@ -101,7 +102,7 @@
101
102
  "madge": "^6.1.0",
102
103
  "prettier": "3.3.3",
103
104
  "react": "19.1.0",
104
- "react-native": "0.80.0",
105
+ "react-native": "0.81.0-rc.5",
105
106
  "react-native-builder-bob": "^0.39.0",
106
107
  "react-native-reanimated": "^3.18.0",
107
108
  "react-test-renderer": "19.1.0",
@@ -0,0 +1,25 @@
1
+ def try_to_parse_react_native_package_json(node_modules_dir)
2
+ react_native_package_json_path = File.join(node_modules_dir, 'react-native/package.json')
3
+
4
+ if !File.exist?(react_native_package_json_path)
5
+ return nil
6
+ end
7
+
8
+ return JSON.parse(File.read(react_native_package_json_path))
9
+ end
10
+
11
+ def get_react_native_minor_version()
12
+ react_native_node_modules_dir = File.join(File.dirname(`cd "#{Pod::Config.instance.installation_root.to_s}" && node --print "require.resolve('react-native/package.json')"`), '..')
13
+ react_native_json = try_to_parse_react_native_package_json(react_native_node_modules_dir)
14
+
15
+ if react_native_json == nil
16
+ node_modules_dir = ENV["REACT_NATIVE_NODE_MODULES_DIR"]
17
+ react_native_json = try_to_parse_react_native_package_json(node_modules_dir)
18
+ end
19
+
20
+ if react_native_json == nil
21
+ raise '[react-native-gesture-handler] Unable to recognize your `react-native` version. Please set environmental variable with `react-native` location: `export REACT_NATIVE_NODE_MODULES_DIR="<path to react-native>" && pod install`.'
22
+ end
23
+
24
+ return react_native_json['version'].split('.')[1].to_i
25
+ end
@@ -2,6 +2,7 @@ import * as React from 'react';
2
2
  import {
3
3
  AccessibilityProps,
4
4
  ColorValue,
5
+ LayoutChangeEvent,
5
6
  StyleProp,
6
7
  ViewStyle,
7
8
  } from 'react-native';
@@ -56,26 +57,35 @@ export interface RawButtonProps
56
57
  */
57
58
  style?: StyleProp<ViewStyle>;
58
59
 
60
+ /**
61
+ * Invoked on mount and layout changes.
62
+ */
63
+ onLayout?: (event: LayoutChangeEvent) => void;
64
+
59
65
  /**
60
66
  * Used for testing-library compatibility, not passed to the native component.
67
+ * @deprecated test-only props are deprecated and will be removed in the future.
61
68
  */
62
69
  // eslint-disable-next-line @typescript-eslint/ban-types
63
70
  testOnly_onPress?: Function | null;
64
71
 
65
72
  /**
66
73
  * Used for testing-library compatibility, not passed to the native component.
74
+ * @deprecated test-only props are deprecated and will be removed in the future.
67
75
  */
68
76
  // eslint-disable-next-line @typescript-eslint/ban-types
69
77
  testOnly_onPressIn?: Function | null;
70
78
 
71
79
  /**
72
80
  * Used for testing-library compatibility, not passed to the native component.
81
+ * @deprecated test-only props are deprecated and will be removed in the future.
73
82
  */
74
83
  // eslint-disable-next-line @typescript-eslint/ban-types
75
84
  testOnly_onPressOut?: Function | null;
76
85
 
77
86
  /**
78
87
  * Used for testing-library compatibility, not passed to the native component.
88
+ * @deprecated test-only props are deprecated and will be removed in the future.
79
89
  */
80
90
  // eslint-disable-next-line @typescript-eslint/ban-types
81
91
  testOnly_onLongPress?: Function | null;
@@ -1,6 +1,6 @@
1
1
  import React, {
2
2
  useCallback,
3
- useLayoutEffect,
3
+ useEffect,
4
4
  useMemo,
5
5
  useRef,
6
6
  useState,
@@ -14,9 +14,9 @@ import {
14
14
  } from './PressableProps';
15
15
  import {
16
16
  Insets,
17
+ LayoutChangeEvent,
17
18
  Platform,
18
19
  StyleProp,
19
- View,
20
20
  ViewStyle,
21
21
  processColor,
22
22
  } from 'react-native';
@@ -35,10 +35,8 @@ import {
35
35
  RelationPropName,
36
36
  RelationPropType,
37
37
  } from '../utils';
38
- import {
39
- getConfiguredStateMachine,
40
- StateMachineEvent,
41
- } from './stateDefinitions';
38
+ import { getStatesConfig, StateMachineEvent } from './stateDefinitions';
39
+ import { PressableStateMachine } from './StateMachine';
42
40
 
43
41
  const DEFAULT_LONG_PRESS_DURATION = 500;
44
42
  const IS_TEST_ENV = isTestEnv();
@@ -47,7 +45,6 @@ let IS_FABRIC: null | boolean = null;
47
45
 
48
46
  const Pressable = (props: PressableProps) => {
49
47
  const {
50
- ref,
51
48
  testOnly_pressed,
52
49
  hitSlop,
53
50
  pressRetentionOffset,
@@ -61,6 +58,7 @@ const Pressable = (props: PressableProps) => {
61
58
  onPressIn,
62
59
  onPressOut,
63
60
  onLongPress,
61
+ onLayout,
64
62
  style,
65
63
  children,
66
64
  android_disableSound,
@@ -70,7 +68,6 @@ const Pressable = (props: PressableProps) => {
70
68
  simultaneousWithExternalGesture,
71
69
  requireExternalGestureToFail,
72
70
  blocksExternalGesture,
73
- dimensionsAfterResize,
74
71
  ...remainingProps
75
72
  } = props;
76
73
 
@@ -80,9 +77,6 @@ const Pressable = (props: PressableProps) => {
80
77
  blocksExternalGesture,
81
78
  };
82
79
 
83
- // used only if `ref` is undefined
84
- const fallbackRef = useRef<View>(null);
85
-
86
80
  const [pressedState, setPressedState] = useState(testOnly_pressed ?? false);
87
81
 
88
82
  const longPressTimeoutRef = useRef<number | null>(null);
@@ -110,21 +104,6 @@ const Pressable = (props: PressableProps) => {
110
104
  normalizedPressRetentionOffset
111
105
  );
112
106
 
113
- useLayoutEffect(() => {
114
- if (dimensionsAfterResize) {
115
- dimensions.current = dimensionsAfterResize;
116
- } else {
117
- requestAnimationFrame(() => {
118
- (ref ?? fallbackRef).current?.measure((_x, _y, width, height) => {
119
- dimensions.current = {
120
- width,
121
- height,
122
- };
123
- });
124
- });
125
- }
126
- }, [dimensionsAfterResize, ref]);
127
-
128
107
  const cancelLongPress = useCallback(() => {
129
108
  if (longPressTimeoutRef.current) {
130
109
  clearTimeout(longPressTimeoutRef.current);
@@ -222,10 +201,12 @@ const Pressable = (props: PressableProps) => {
222
201
  [handleFinalize, innerHandlePressIn, onPress, onPressOut]
223
202
  );
224
203
 
225
- const stateMachine = useMemo(
226
- () => getConfiguredStateMachine(handlePressIn, handlePressOut),
227
- [handlePressIn, handlePressOut]
228
- );
204
+ const stateMachine = useMemo(() => new PressableStateMachine(), []);
205
+
206
+ useEffect(() => {
207
+ const configuration = getStatesConfig(handlePressIn, handlePressOut);
208
+ stateMachine.setStates(configuration);
209
+ }, [handlePressIn, handlePressOut, stateMachine]);
229
210
 
230
211
  const hoverInTimeout = useRef<number | null>(null);
231
212
  const hoverOutTimeout = useRef<number | null>(null);
@@ -376,11 +357,19 @@ const Pressable = (props: PressableProps) => {
376
357
  : processColor(unprocessedRippleColor);
377
358
  }, [android_ripple]);
378
359
 
360
+ const setDimensions = useCallback(
361
+ (event: LayoutChangeEvent) => {
362
+ onLayout?.(event);
363
+ dimensions.current = event.nativeEvent.layout;
364
+ },
365
+ [onLayout]
366
+ );
367
+
379
368
  return (
380
369
  <GestureDetector gesture={gesture}>
381
370
  <NativeButton
382
371
  {...remainingProps}
383
- ref={ref ?? fallbackRef}
372
+ onLayout={setDimensions}
384
373
  accessible={accessible !== false}
385
374
  hitSlop={appliedHitSlop}
386
375
  enabled={isPressableEnabled}
@@ -66,7 +66,7 @@ export interface PressableProps
66
66
  /**
67
67
  * A reference to the pressable element.
68
68
  */
69
- ref?: React.RefObject<View>;
69
+ ref?: React.Ref<View>;
70
70
 
71
71
  /**
72
72
  * Either children or a render prop that receives a boolean reflecting whether
@@ -168,9 +168,7 @@ export interface PressableProps
168
168
  blocksExternalGesture?: RelationPropType;
169
169
 
170
170
  /**
171
- * Defines the dimensions of the Pressable after it's been resized.
172
- * This property does not affect Pressable's physical appearance.
173
- * Required when the Pressable is resized **and** uses pressRetentionOffset.
171
+ * @deprecated This property is no longer used, and will be removed in the future.
174
172
  */
175
173
  dimensionsAfterResize?: PressableDimensions;
176
174
  }
@@ -1,27 +1,35 @@
1
1
  import { PressableEvent } from './PressableProps';
2
2
 
3
- interface StateDefinition {
3
+ export interface StateDefinition {
4
4
  eventName: string;
5
5
  callback?: (event: PressableEvent) => void;
6
6
  }
7
7
 
8
8
  class PressableStateMachine {
9
- private states: StateDefinition[];
9
+ private states: StateDefinition[] | null;
10
10
  private currentStepIndex: number;
11
11
  private eventPayload: PressableEvent | null;
12
12
 
13
- constructor(steps: StateDefinition[]) {
14
- this.states = steps;
13
+ constructor() {
14
+ this.states = null;
15
15
  this.currentStepIndex = 0;
16
16
  this.eventPayload = null;
17
17
  }
18
18
 
19
+ public setStates(states: StateDefinition[]) {
20
+ this.states = states;
21
+ }
22
+
19
23
  public reset() {
20
24
  this.currentStepIndex = 0;
21
25
  this.eventPayload = null;
22
26
  }
23
27
 
24
28
  public handleEvent(eventName: string, eventPayload?: PressableEvent) {
29
+ if (!this.states) {
30
+ return;
31
+ }
32
+
25
33
  const step = this.states[this.currentStepIndex];
26
34
  this.eventPayload = eventPayload || this.eventPayload;
27
35
 
@@ -1,6 +1,6 @@
1
1
  import { Platform } from 'react-native';
2
2
  import { PressableEvent } from './PressableProps';
3
- import { PressableStateMachine } from './StateMachine';
3
+ import { StateDefinition } from './StateMachine';
4
4
 
5
5
  export enum StateMachineEvent {
6
6
  NATIVE_BEGIN = 'nativeBegin',
@@ -9,11 +9,11 @@ export enum StateMachineEvent {
9
9
  LONG_PRESS_TOUCHES_DOWN = 'longPressTouchesDown',
10
10
  }
11
11
 
12
- function getAndroidStateMachine(
12
+ function getAndroidStatesConfig(
13
13
  handlePressIn: (event: PressableEvent) => void,
14
14
  handlePressOut: (event: PressableEvent) => void
15
15
  ) {
16
- return new PressableStateMachine([
16
+ return [
17
17
  {
18
18
  eventName: StateMachineEvent.NATIVE_BEGIN,
19
19
  },
@@ -25,14 +25,14 @@ function getAndroidStateMachine(
25
25
  eventName: StateMachineEvent.FINALIZE,
26
26
  callback: handlePressOut,
27
27
  },
28
- ]);
28
+ ];
29
29
  }
30
30
 
31
- function getIosStateMachine(
31
+ function getIosStatesConfig(
32
32
  handlePressIn: (event: PressableEvent) => void,
33
33
  handlePressOut: (event: PressableEvent) => void
34
34
  ) {
35
- return new PressableStateMachine([
35
+ return [
36
36
  {
37
37
  eventName: StateMachineEvent.LONG_PRESS_TOUCHES_DOWN,
38
38
  },
@@ -44,14 +44,14 @@ function getIosStateMachine(
44
44
  eventName: StateMachineEvent.FINALIZE,
45
45
  callback: handlePressOut,
46
46
  },
47
- ]);
47
+ ];
48
48
  }
49
49
 
50
- function getWebStateMachine(
50
+ function getWebStatesConfig(
51
51
  handlePressIn: (event: PressableEvent) => void,
52
52
  handlePressOut: (event: PressableEvent) => void
53
53
  ) {
54
- return new PressableStateMachine([
54
+ return [
55
55
  {
56
56
  eventName: StateMachineEvent.NATIVE_BEGIN,
57
57
  },
@@ -66,14 +66,14 @@ function getWebStateMachine(
66
66
  eventName: StateMachineEvent.FINALIZE,
67
67
  callback: handlePressOut,
68
68
  },
69
- ]);
69
+ ];
70
70
  }
71
71
 
72
- function getMacosStateMachine(
72
+ function getMacosStatesConfig(
73
73
  handlePressIn: (event: PressableEvent) => void,
74
74
  handlePressOut: (event: PressableEvent) => void
75
75
  ) {
76
- return new PressableStateMachine([
76
+ return [
77
77
  {
78
78
  eventName: StateMachineEvent.LONG_PRESS_TOUCHES_DOWN,
79
79
  },
@@ -88,14 +88,14 @@ function getMacosStateMachine(
88
88
  eventName: StateMachineEvent.FINALIZE,
89
89
  callback: handlePressOut,
90
90
  },
91
- ]);
91
+ ];
92
92
  }
93
93
 
94
- function getUniversalStateMachine(
94
+ function getUniversalStatesConfig(
95
95
  handlePressIn: (event: PressableEvent) => void,
96
96
  handlePressOut: (event: PressableEvent) => void
97
97
  ) {
98
- return new PressableStateMachine([
98
+ return [
99
99
  {
100
100
  eventName: StateMachineEvent.FINALIZE,
101
101
  callback: (event: PressableEvent) => {
@@ -103,23 +103,23 @@ function getUniversalStateMachine(
103
103
  handlePressOut(event);
104
104
  },
105
105
  },
106
- ]);
106
+ ];
107
107
  }
108
108
 
109
- export function getConfiguredStateMachine(
109
+ export function getStatesConfig(
110
110
  handlePressIn: (event: PressableEvent) => void,
111
111
  handlePressOut: (event: PressableEvent) => void
112
- ) {
112
+ ): StateDefinition[] {
113
113
  if (Platform.OS === 'android') {
114
- return getAndroidStateMachine(handlePressIn, handlePressOut);
114
+ return getAndroidStatesConfig(handlePressIn, handlePressOut);
115
115
  } else if (Platform.OS === 'ios') {
116
- return getIosStateMachine(handlePressIn, handlePressOut);
116
+ return getIosStatesConfig(handlePressIn, handlePressOut);
117
117
  } else if (Platform.OS === 'web') {
118
- return getWebStateMachine(handlePressIn, handlePressOut);
118
+ return getWebStatesConfig(handlePressIn, handlePressOut);
119
119
  } else if (Platform.OS === 'macos') {
120
- return getMacosStateMachine(handlePressIn, handlePressOut);
120
+ return getMacosStatesConfig(handlePressIn, handlePressOut);
121
121
  } else {
122
122
  // Unknown platform - using minimal universal setup.
123
- return getUniversalStateMachine(handlePressIn, handlePressOut);
123
+ return getUniversalStatesConfig(handlePressIn, handlePressOut);
124
124
  }
125
125
  }