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
@@ -1,165 +0,0 @@
1
- import * as React from 'react';
2
- import { Animated, Platform, processColor, StyleSheet } from 'react-native';
3
- import createNativeWrapper from '../handlers/createNativeWrapper';
4
- import GestureHandlerButton from './GestureHandlerButton';
5
- import { State } from '../State';
6
- import { isFabric } from '../utils';
7
- export const RawButton = createNativeWrapper(GestureHandlerButton, {
8
- shouldCancelWhenOutside: false,
9
- shouldActivateOnStart: false,
10
- });
11
- let IS_FABRIC = null;
12
- class InnerBaseButton extends React.Component {
13
- static defaultProps = {
14
- delayLongPress: 600,
15
- };
16
- lastActive;
17
- longPressTimeout;
18
- longPressDetected;
19
- constructor(props) {
20
- super(props);
21
- this.lastActive = false;
22
- this.longPressDetected = false;
23
- }
24
- handleEvent = ({ nativeEvent, }) => {
25
- const { state, oldState, pointerInside } = nativeEvent;
26
- const active = pointerInside && state === State.ACTIVE;
27
- if (active !== this.lastActive && this.props.onActiveStateChange) {
28
- this.props.onActiveStateChange(active);
29
- }
30
- if (!this.longPressDetected &&
31
- oldState === State.ACTIVE &&
32
- state !== State.CANCELLED &&
33
- this.lastActive &&
34
- this.props.onPress) {
35
- this.props.onPress(pointerInside);
36
- }
37
- if (!this.lastActive &&
38
- // NativeViewGestureHandler sends different events based on platform
39
- state === (Platform.OS !== 'android' ? State.ACTIVE : State.BEGAN) &&
40
- pointerInside) {
41
- this.longPressDetected = false;
42
- if (this.props.onLongPress) {
43
- this.longPressTimeout = setTimeout(this.onLongPress, this.props.delayLongPress);
44
- }
45
- }
46
- else if (
47
- // Cancel longpress timeout if it's set and the finger moved out of the view
48
- state === State.ACTIVE &&
49
- !pointerInside &&
50
- this.longPressTimeout !== undefined) {
51
- clearTimeout(this.longPressTimeout);
52
- this.longPressTimeout = undefined;
53
- }
54
- else if (
55
- // Cancel longpress timeout if it's set and the gesture has finished
56
- this.longPressTimeout !== undefined &&
57
- (state === State.END ||
58
- state === State.CANCELLED ||
59
- state === State.FAILED)) {
60
- clearTimeout(this.longPressTimeout);
61
- this.longPressTimeout = undefined;
62
- }
63
- this.lastActive = active;
64
- };
65
- onLongPress = () => {
66
- this.longPressDetected = true;
67
- this.props.onLongPress?.();
68
- };
69
- // Normally, the parent would execute it's handler first, then forward the
70
- // event to listeners. However, here our handler is virtually only forwarding
71
- // events to listeners, so we reverse the order to keep the proper order of
72
- // the callbacks (from "raw" ones to "processed").
73
- onHandlerStateChange = (e) => {
74
- this.props.onHandlerStateChange?.(e);
75
- this.handleEvent(e);
76
- };
77
- onGestureEvent = (e) => {
78
- this.props.onGestureEvent?.(e);
79
- this.handleEvent(e); // TODO: maybe it is not correct
80
- };
81
- render() {
82
- const { rippleColor: unprocessedRippleColor, style, ...rest } = this.props;
83
- if (IS_FABRIC === null) {
84
- IS_FABRIC = isFabric();
85
- }
86
- const rippleColor = IS_FABRIC
87
- ? unprocessedRippleColor
88
- : processColor(unprocessedRippleColor ?? undefined);
89
- return (<RawButton ref={this.props.innerRef} rippleColor={rippleColor} style={[style, Platform.OS === 'ios' && { cursor: undefined }]} {...rest} onGestureEvent={this.onGestureEvent} onHandlerStateChange={this.onHandlerStateChange}/>);
90
- }
91
- }
92
- const AnimatedInnerBaseButton = Animated.createAnimatedComponent(InnerBaseButton);
93
- export const BaseButton = React.forwardRef((props, ref) => <InnerBaseButton innerRef={ref} {...props}/>);
94
- const AnimatedBaseButton = React.forwardRef((props, ref) => <AnimatedInnerBaseButton innerRef={ref} {...props}/>);
95
- const btnStyles = StyleSheet.create({
96
- underlay: {
97
- position: 'absolute',
98
- left: 0,
99
- right: 0,
100
- bottom: 0,
101
- top: 0,
102
- },
103
- });
104
- class InnerRectButton extends React.Component {
105
- static defaultProps = {
106
- activeOpacity: 0.105,
107
- underlayColor: 'black',
108
- };
109
- opacity;
110
- constructor(props) {
111
- super(props);
112
- this.opacity = new Animated.Value(0);
113
- }
114
- onActiveStateChange = (active) => {
115
- if (Platform.OS !== 'android') {
116
- this.opacity.setValue(active ? this.props.activeOpacity : 0);
117
- }
118
- this.props.onActiveStateChange?.(active);
119
- };
120
- render() {
121
- const { children, style, ...rest } = this.props;
122
- const resolvedStyle = StyleSheet.flatten(style) ?? {};
123
- return (<BaseButton {...rest} ref={this.props.innerRef} style={resolvedStyle} onActiveStateChange={this.onActiveStateChange}>
124
- <Animated.View style={[
125
- btnStyles.underlay,
126
- {
127
- opacity: this.opacity,
128
- backgroundColor: this.props.underlayColor,
129
- borderRadius: resolvedStyle.borderRadius,
130
- borderTopLeftRadius: resolvedStyle.borderTopLeftRadius,
131
- borderTopRightRadius: resolvedStyle.borderTopRightRadius,
132
- borderBottomLeftRadius: resolvedStyle.borderBottomLeftRadius,
133
- borderBottomRightRadius: resolvedStyle.borderBottomRightRadius,
134
- },
135
- ]}/>
136
- {children}
137
- </BaseButton>);
138
- }
139
- }
140
- export const RectButton = React.forwardRef((props, ref) => <InnerRectButton innerRef={ref} {...props}/>);
141
- class InnerBorderlessButton extends React.Component {
142
- static defaultProps = {
143
- activeOpacity: 0.3,
144
- borderless: true,
145
- };
146
- opacity;
147
- constructor(props) {
148
- super(props);
149
- this.opacity = new Animated.Value(1);
150
- }
151
- onActiveStateChange = (active) => {
152
- if (Platform.OS !== 'android') {
153
- this.opacity.setValue(active ? this.props.activeOpacity : 1);
154
- }
155
- this.props.onActiveStateChange?.(active);
156
- };
157
- render() {
158
- const { children, style, innerRef, ...rest } = this.props;
159
- return (<AnimatedBaseButton {...rest} innerRef={innerRef} onActiveStateChange={this.onActiveStateChange} style={[style, Platform.OS === 'ios' && { opacity: this.opacity }]}>
160
- {children}
161
- </AnimatedBaseButton>);
162
- }
163
- }
164
- export const BorderlessButton = React.forwardRef((props, ref) => <InnerBorderlessButton innerRef={ref} {...props}/>);
165
- export { default as PureNativeButton } from './GestureHandlerButton';
@@ -1 +0,0 @@
1
- export {};
@@ -1,67 +0,0 @@
1
- import * as React from 'react';
2
- import { ScrollView as RNScrollView, Switch as RNSwitch, TextInput as RNTextInput, DrawerLayoutAndroid as RNDrawerLayoutAndroid, FlatList as RNFlatList, RefreshControl as RNRefreshControl, } from 'react-native';
3
- import createNativeWrapper from '../handlers/createNativeWrapper';
4
- import { nativeViewProps, } from '../handlers/NativeViewGestureHandler';
5
- import { toArray } from '../utils';
6
- export const RefreshControl = createNativeWrapper(RNRefreshControl, {
7
- disallowInterruption: true,
8
- shouldCancelWhenOutside: false,
9
- });
10
- const GHScrollView = createNativeWrapper(RNScrollView, {
11
- disallowInterruption: true,
12
- shouldCancelWhenOutside: false,
13
- });
14
- export const ScrollView = React.forwardRef((props, ref) => {
15
- const refreshControlGestureRef = React.useRef(null);
16
- const { refreshControl, waitFor, ...rest } = props;
17
- return (<GHScrollView {...rest}
18
- // @ts-ignore `ref` exists on `GHScrollView`
19
- ref={ref} waitFor={[...toArray(waitFor ?? []), refreshControlGestureRef]}
20
- // @ts-ignore we don't pass `refreshing` prop as we only want to override the ref
21
- refreshControl={refreshControl
22
- ? React.cloneElement(refreshControl, {
23
- // @ts-ignore for reasons unknown to me, `ref` doesn't exist on the type inferred by TS
24
- ref: refreshControlGestureRef,
25
- })
26
- : undefined}/>);
27
- });
28
- export const Switch = createNativeWrapper(RNSwitch, {
29
- shouldCancelWhenOutside: false,
30
- shouldActivateOnStart: true,
31
- disallowInterruption: true,
32
- });
33
- export const TextInput = createNativeWrapper(RNTextInput);
34
- export const DrawerLayoutAndroid = createNativeWrapper(RNDrawerLayoutAndroid, { disallowInterruption: true });
35
- export const FlatList = React.forwardRef((props, ref) => {
36
- const refreshControlGestureRef = React.useRef(null);
37
- const { waitFor, refreshControl, ...rest } = props;
38
- const flatListProps = {};
39
- const scrollViewProps = {};
40
- for (const [propName, value] of Object.entries(rest)) {
41
- // https://github.com/microsoft/TypeScript/issues/26255
42
- if (nativeViewProps.includes(propName)) {
43
- // @ts-ignore - this function cannot have generic type so we have to ignore this error
44
- // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
45
- scrollViewProps[propName] = value;
46
- }
47
- else {
48
- // @ts-ignore - this function cannot have generic type so we have to ignore this error
49
- // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
50
- flatListProps[propName] = value;
51
- }
52
- }
53
- return (
54
- // @ts-ignore - this function cannot have generic type so we have to ignore this error
55
- <RNFlatList ref={ref} {...flatListProps} renderScrollComponent={(scrollProps) => (<ScrollView {...{
56
- ...scrollProps,
57
- ...scrollViewProps,
58
- waitFor: [...toArray(waitFor ?? []), refreshControlGestureRef],
59
- }}/>)}
60
- // @ts-ignore we don't pass `refreshing` prop as we only want to override the ref
61
- refreshControl={refreshControl
62
- ? React.cloneElement(refreshControl, {
63
- // @ts-ignore for reasons unknown to me, `ref` doesn't exist on the type inferred by TS
64
- ref: refreshControlGestureRef,
65
- })
66
- : undefined}/>);
67
- });
@@ -1,21 +0,0 @@
1
- import * as React from 'react';
2
- import { FlatList as RNFlatList, Switch as RNSwitch, TextInput as RNTextInput, ScrollView as RNScrollView, View, } from 'react-native';
3
- import createNativeWrapper from '../handlers/createNativeWrapper';
4
- export const ScrollView = createNativeWrapper(RNScrollView, {
5
- disallowInterruption: false,
6
- });
7
- export const Switch = createNativeWrapper(RNSwitch, {
8
- shouldCancelWhenOutside: false,
9
- shouldActivateOnStart: true,
10
- disallowInterruption: true,
11
- });
12
- export const TextInput = createNativeWrapper(RNTextInput);
13
- export const DrawerLayoutAndroid = () => {
14
- console.warn('DrawerLayoutAndroid is not supported on web!');
15
- return <View />;
16
- };
17
- // RefreshControl is implemented as a functional component, rendering a View
18
- // NativeViewGestureHandler needs to set a ref on its child, which cannot be done
19
- // on functional components
20
- export const RefreshControl = createNativeWrapper(View);
21
- export const FlatList = React.forwardRef((props, ref) => (<RNFlatList ref={ref} {...props} renderScrollComponent={(scrollProps) => <ScrollView {...scrollProps}/>}/>));
@@ -1,2 +0,0 @@
1
- import RNGestureHandlerButtonNativeComponent from '../specs/RNGestureHandlerButtonNativeComponent';
2
- export default RNGestureHandlerButtonNativeComponent;
@@ -1,3 +0,0 @@
1
- import * as React from 'react';
2
- import { View } from 'react-native';
3
- export default React.forwardRef((props, ref) => <View ref={ref} accessibilityRole="button" {...props}/>);
@@ -1,17 +0,0 @@
1
- import * as React from 'react';
2
- import { StyleSheet } from 'react-native';
3
- import { maybeInitializeFabric } from '../init';
4
- import GestureHandlerRootViewContext from '../GestureHandlerRootViewContext';
5
- import GestureHandlerRootViewNativeComponent from '../specs/RNGestureHandlerRootViewNativeComponent';
6
- export default function GestureHandlerRootView({ style, ...rest }) {
7
- // Try initialize fabric on the first render, at this point we can
8
- // reliably check if fabric is enabled (the function contains a flag
9
- // to make sure it's called only once)
10
- maybeInitializeFabric();
11
- return (<GestureHandlerRootViewContext.Provider value>
12
- <GestureHandlerRootViewNativeComponent style={style ?? styles.container} {...rest}/>
13
- </GestureHandlerRootViewContext.Provider>);
14
- }
15
- const styles = StyleSheet.create({
16
- container: { flex: 1 },
17
- });
@@ -1,16 +0,0 @@
1
- import * as React from 'react';
2
- import { View, StyleSheet } from 'react-native';
3
- import { maybeInitializeFabric } from '../init';
4
- import GestureHandlerRootViewContext from '../GestureHandlerRootViewContext';
5
- export default function GestureHandlerRootView({ style, ...rest }) {
6
- // Try initialize fabric on the first render, at this point we can
7
- // reliably check if fabric is enabled (the function contains a flag
8
- // to make sure it's called only once)
9
- maybeInitializeFabric();
10
- return (<GestureHandlerRootViewContext.Provider value>
11
- <View style={style ?? styles.container} {...rest}/>
12
- </GestureHandlerRootViewContext.Provider>);
13
- }
14
- const styles = StyleSheet.create({
15
- container: { flex: 1 },
16
- });
@@ -1,11 +0,0 @@
1
- import * as React from 'react';
2
- import { View, StyleSheet } from 'react-native';
3
- import GestureHandlerRootViewContext from '../GestureHandlerRootViewContext';
4
- export default function GestureHandlerRootView({ style, ...rest }) {
5
- return (<GestureHandlerRootViewContext.Provider value>
6
- <View style={style ?? styles.container} {...rest}/>
7
- </GestureHandlerRootViewContext.Provider>);
8
- }
9
- const styles = StyleSheet.create({
10
- container: { flex: 1 },
11
- });
@@ -1,231 +0,0 @@
1
- import React, { useCallback, useLayoutEffect, useMemo, useRef, useState, } from 'react';
2
- import { GestureObjects as Gesture } from '../../handlers/gestures/gestureObjects';
3
- import { GestureDetector } from '../../handlers/gestures/GestureDetector';
4
- import { Platform, processColor, } from 'react-native';
5
- import NativeButton from '../GestureHandlerButton';
6
- import { gestureToPressableEvent, addInsets, numberAsInset, gestureTouchToPressableEvent, isTouchWithinInset, } from './utils';
7
- import { PressabilityDebugView } from '../../handlers/PressabilityDebugView';
8
- import { INT32_MAX, isFabric, isTestEnv } from '../../utils';
9
- import { applyRelationProp, } from '../utils';
10
- import { getConfiguredStateMachine, StateMachineEvent, } from './stateDefinitions';
11
- const DEFAULT_LONG_PRESS_DURATION = 500;
12
- const IS_TEST_ENV = isTestEnv();
13
- let IS_FABRIC = null;
14
- const Pressable = (props) => {
15
- const { ref, testOnly_pressed, hitSlop, pressRetentionOffset, delayHoverIn, delayHoverOut, delayLongPress, unstable_pressDelay, onHoverIn, onHoverOut, onPress, onPressIn, onPressOut, onLongPress, style, children, android_disableSound, android_ripple, disabled, accessible, simultaneousWithExternalGesture, requireExternalGestureToFail, blocksExternalGesture, dimensionsAfterResize, ...remainingProps } = props;
16
- const relationProps = {
17
- simultaneousWithExternalGesture,
18
- requireExternalGestureToFail,
19
- blocksExternalGesture,
20
- };
21
- // used only if `ref` is undefined
22
- const fallbackRef = useRef(null);
23
- const [pressedState, setPressedState] = useState(testOnly_pressed ?? false);
24
- const longPressTimeoutRef = useRef(null);
25
- const pressDelayTimeoutRef = useRef(null);
26
- const isOnPressAllowed = useRef(true);
27
- const isCurrentlyPressed = useRef(false);
28
- const dimensions = useRef({ width: 0, height: 0 });
29
- const normalizedHitSlop = useMemo(() => typeof hitSlop === 'number' ? numberAsInset(hitSlop) : (hitSlop ?? {}), [hitSlop]);
30
- const normalizedPressRetentionOffset = useMemo(() => typeof pressRetentionOffset === 'number'
31
- ? numberAsInset(pressRetentionOffset)
32
- : (pressRetentionOffset ?? {}), [pressRetentionOffset]);
33
- const appliedHitSlop = addInsets(normalizedHitSlop, normalizedPressRetentionOffset);
34
- useLayoutEffect(() => {
35
- if (dimensionsAfterResize) {
36
- dimensions.current = dimensionsAfterResize;
37
- }
38
- else {
39
- requestAnimationFrame(() => {
40
- (ref ?? fallbackRef).current?.measure((_x, _y, width, height) => {
41
- dimensions.current = {
42
- width,
43
- height,
44
- };
45
- });
46
- });
47
- }
48
- }, [dimensionsAfterResize, ref]);
49
- const cancelLongPress = useCallback(() => {
50
- if (longPressTimeoutRef.current) {
51
- clearTimeout(longPressTimeoutRef.current);
52
- longPressTimeoutRef.current = null;
53
- isOnPressAllowed.current = true;
54
- }
55
- }, []);
56
- const cancelDelayedPress = useCallback(() => {
57
- if (pressDelayTimeoutRef.current) {
58
- clearTimeout(pressDelayTimeoutRef.current);
59
- pressDelayTimeoutRef.current = null;
60
- }
61
- }, []);
62
- const startLongPress = useCallback((event) => {
63
- if (onLongPress) {
64
- cancelLongPress();
65
- longPressTimeoutRef.current = setTimeout(() => {
66
- isOnPressAllowed.current = false;
67
- onLongPress(event);
68
- }, delayLongPress ?? DEFAULT_LONG_PRESS_DURATION);
69
- }
70
- }, [onLongPress, cancelLongPress, delayLongPress]);
71
- const innerHandlePressIn = useCallback((event) => {
72
- onPressIn?.(event);
73
- startLongPress(event);
74
- setPressedState(true);
75
- if (pressDelayTimeoutRef.current) {
76
- clearTimeout(pressDelayTimeoutRef.current);
77
- pressDelayTimeoutRef.current = null;
78
- }
79
- }, [onPressIn, startLongPress]);
80
- const handleFinalize = useCallback(() => {
81
- isCurrentlyPressed.current = false;
82
- cancelLongPress();
83
- cancelDelayedPress();
84
- setPressedState(false);
85
- }, [cancelDelayedPress, cancelLongPress]);
86
- const handlePressIn = useCallback((event) => {
87
- if (!isTouchWithinInset(dimensions.current, normalizedHitSlop, event.nativeEvent.changedTouches.at(-1))) {
88
- // Ignoring pressIn within pressRetentionOffset
89
- return;
90
- }
91
- isCurrentlyPressed.current = true;
92
- if (unstable_pressDelay) {
93
- pressDelayTimeoutRef.current = setTimeout(() => {
94
- innerHandlePressIn(event);
95
- }, unstable_pressDelay);
96
- }
97
- else {
98
- innerHandlePressIn(event);
99
- }
100
- }, [innerHandlePressIn, normalizedHitSlop, unstable_pressDelay]);
101
- const handlePressOut = useCallback((event, success = true) => {
102
- if (!isCurrentlyPressed.current) {
103
- // Some prop configurations may lead to handlePressOut being called mutliple times.
104
- return;
105
- }
106
- isCurrentlyPressed.current = false;
107
- if (pressDelayTimeoutRef.current) {
108
- innerHandlePressIn(event);
109
- }
110
- onPressOut?.(event);
111
- if (isOnPressAllowed.current && success) {
112
- onPress?.(event);
113
- }
114
- handleFinalize();
115
- }, [handleFinalize, innerHandlePressIn, onPress, onPressOut]);
116
- const stateMachine = useMemo(() => getConfiguredStateMachine(handlePressIn, handlePressOut), [handlePressIn, handlePressOut]);
117
- const hoverInTimeout = useRef(null);
118
- const hoverOutTimeout = useRef(null);
119
- const hoverGesture = useMemo(() => Gesture.Hover()
120
- .manualActivation(true) // Prevents Hover blocking Gesture.Native() on web
121
- .cancelsTouchesInView(false)
122
- .onBegin((event) => {
123
- if (hoverOutTimeout.current) {
124
- clearTimeout(hoverOutTimeout.current);
125
- }
126
- if (delayHoverIn) {
127
- hoverInTimeout.current = setTimeout(() => onHoverIn?.(gestureToPressableEvent(event)), delayHoverIn);
128
- return;
129
- }
130
- onHoverIn?.(gestureToPressableEvent(event));
131
- })
132
- .onFinalize((event) => {
133
- if (hoverInTimeout.current) {
134
- clearTimeout(hoverInTimeout.current);
135
- }
136
- if (delayHoverOut) {
137
- hoverOutTimeout.current = setTimeout(() => onHoverOut?.(gestureToPressableEvent(event)), delayHoverOut);
138
- return;
139
- }
140
- onHoverOut?.(gestureToPressableEvent(event));
141
- }), [delayHoverIn, delayHoverOut, onHoverIn, onHoverOut]);
142
- const pressAndTouchGesture = useMemo(() => Gesture.LongPress()
143
- .minDuration(INT32_MAX) // Stops long press from blocking Gesture.Native()
144
- .maxDistance(INT32_MAX) // Stops long press from cancelling on touch move
145
- .cancelsTouchesInView(false)
146
- .onTouchesDown((event) => {
147
- const pressableEvent = gestureTouchToPressableEvent(event);
148
- stateMachine.handleEvent(StateMachineEvent.LONG_PRESS_TOUCHES_DOWN, pressableEvent);
149
- })
150
- .onTouchesUp(() => {
151
- if (Platform.OS === 'android') {
152
- // Prevents potential soft-locks
153
- stateMachine.reset();
154
- handleFinalize();
155
- }
156
- })
157
- .onTouchesCancelled((event) => {
158
- const pressableEvent = gestureTouchToPressableEvent(event);
159
- stateMachine.reset();
160
- handlePressOut(pressableEvent, false);
161
- })
162
- .onFinalize(() => {
163
- if (Platform.OS === 'web') {
164
- stateMachine.handleEvent(StateMachineEvent.FINALIZE);
165
- handleFinalize();
166
- }
167
- }), [stateMachine, handleFinalize, handlePressOut]);
168
- // RNButton is placed inside ButtonGesture to enable Android's ripple and to capture non-propagating events
169
- const buttonGesture = useMemo(() => Gesture.Native()
170
- .onTouchesCancelled((event) => {
171
- if (Platform.OS !== 'macos' && Platform.OS !== 'web') {
172
- // On MacOS cancel occurs in middle of gesture
173
- // On Web cancel occurs on mouse move, which is unwanted
174
- const pressableEvent = gestureTouchToPressableEvent(event);
175
- stateMachine.reset();
176
- handlePressOut(pressableEvent, false);
177
- }
178
- })
179
- .onBegin(() => {
180
- stateMachine.handleEvent(StateMachineEvent.NATIVE_BEGIN);
181
- })
182
- .onStart(() => {
183
- if (Platform.OS !== 'android') {
184
- // Gesture.Native().onStart() is broken with Android + hitSlop
185
- stateMachine.handleEvent(StateMachineEvent.NATIVE_START);
186
- }
187
- })
188
- .onFinalize(() => {
189
- if (Platform.OS !== 'web') {
190
- // On Web we use LongPress().onFinalize() instead of Native().onFinalize(),
191
- // as Native cancels on mouse move, and LongPress does not.
192
- stateMachine.handleEvent(StateMachineEvent.FINALIZE);
193
- handleFinalize();
194
- }
195
- }), [stateMachine, handlePressOut, handleFinalize]);
196
- const isPressableEnabled = disabled !== true;
197
- const gestures = [buttonGesture, pressAndTouchGesture, hoverGesture];
198
- for (const gesture of gestures) {
199
- gesture.enabled(isPressableEnabled);
200
- gesture.runOnJS(true);
201
- gesture.hitSlop(appliedHitSlop);
202
- gesture.shouldCancelWhenOutside(Platform.OS !== 'web');
203
- Object.entries(relationProps).forEach(([relationName, relation]) => {
204
- applyRelationProp(gesture, relationName, relation);
205
- });
206
- }
207
- const gesture = Gesture.Simultaneous(...gestures);
208
- // `cursor: 'pointer'` on `RNButton` crashes iOS
209
- const pointerStyle = Platform.OS === 'web' ? { cursor: 'pointer' } : {};
210
- const styleProp = typeof style === 'function' ? style({ pressed: pressedState }) : style;
211
- const childrenProp = typeof children === 'function'
212
- ? children({ pressed: pressedState })
213
- : children;
214
- const rippleColor = useMemo(() => {
215
- if (IS_FABRIC === null) {
216
- IS_FABRIC = isFabric();
217
- }
218
- const defaultRippleColor = android_ripple ? undefined : 'transparent';
219
- const unprocessedRippleColor = android_ripple?.color ?? defaultRippleColor;
220
- return IS_FABRIC
221
- ? unprocessedRippleColor
222
- : processColor(unprocessedRippleColor);
223
- }, [android_ripple]);
224
- return (<GestureDetector gesture={gesture}>
225
- <NativeButton {...remainingProps} ref={ref ?? fallbackRef} accessible={accessible !== false} hitSlop={appliedHitSlop} enabled={isPressableEnabled} touchSoundDisabled={android_disableSound ?? undefined} rippleColor={rippleColor} rippleRadius={android_ripple?.radius ?? undefined} style={[pointerStyle, styleProp]} testOnly_onPress={IS_TEST_ENV ? onPress : undefined} testOnly_onPressIn={IS_TEST_ENV ? onPressIn : undefined} testOnly_onPressOut={IS_TEST_ENV ? onPressOut : undefined} testOnly_onLongPress={IS_TEST_ENV ? onLongPress : undefined}>
226
- {childrenProp}
227
- {__DEV__ ? (<PressabilityDebugView color="red" hitSlop={normalizedHitSlop}/>) : null}
228
- </NativeButton>
229
- </GestureDetector>);
230
- };
231
- export default Pressable;
@@ -1 +0,0 @@
1
- export {};
@@ -1,34 +0,0 @@
1
- class PressableStateMachine {
2
- states;
3
- currentStepIndex;
4
- eventPayload;
5
- constructor(steps) {
6
- this.states = steps;
7
- this.currentStepIndex = 0;
8
- this.eventPayload = null;
9
- }
10
- reset() {
11
- this.currentStepIndex = 0;
12
- this.eventPayload = null;
13
- }
14
- handleEvent(eventName, eventPayload) {
15
- const step = this.states[this.currentStepIndex];
16
- this.eventPayload = eventPayload || this.eventPayload;
17
- if (step.eventName !== eventName) {
18
- if (this.currentStepIndex > 0) {
19
- // retry with position at index 0
20
- this.reset();
21
- this.handleEvent(eventName, eventPayload);
22
- }
23
- return;
24
- }
25
- if (this.eventPayload && step.callback) {
26
- step.callback(this.eventPayload);
27
- }
28
- this.currentStepIndex++;
29
- if (this.currentStepIndex === this.states.length) {
30
- this.reset();
31
- }
32
- }
33
- }
34
- export { PressableStateMachine };
@@ -1 +0,0 @@
1
- export { default } from './Pressable';