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,400 +0,0 @@
1
- // Similarily to the DrawerLayout component this deserves to be put in a
2
- // separate repo. Although, keeping it here for the time being will allow us to
3
- // move faster and fix possible issues quicker
4
- import React, { forwardRef, useCallback, useImperativeHandle, useMemo, } from 'react';
5
- import { GestureObjects as Gesture } from '../handlers/gestures/gestureObjects';
6
- import { GestureDetector } from '../handlers/gestures/GestureDetector';
7
- import Animated, { ReduceMotion, interpolate, measure, runOnJS, runOnUI, useAnimatedRef, useAnimatedStyle, useSharedValue, withSpring, } from 'react-native-reanimated';
8
- import { I18nManager, StyleSheet, View, } from 'react-native';
9
- import { applyRelationProp } from './utils';
10
- const DRAG_TOSS = 0.05;
11
- var SwipeDirection;
12
- (function (SwipeDirection) {
13
- SwipeDirection["LEFT"] = "left";
14
- SwipeDirection["RIGHT"] = "right";
15
- })(SwipeDirection || (SwipeDirection = {}));
16
- const Swipeable = forwardRef(function Swipeable(props, ref) {
17
- const defaultProps = {
18
- friction: 1,
19
- overshootFriction: 1,
20
- dragOffset: 10,
21
- enableTrackpadTwoFingerGesture: false,
22
- };
23
- const { leftThreshold, rightThreshold, enabled, containerStyle, childrenContainerStyle, animationOptions, overshootLeft, overshootRight, testID, children, enableTrackpadTwoFingerGesture = defaultProps.enableTrackpadTwoFingerGesture, dragOffsetFromLeftEdge = defaultProps.dragOffset, dragOffsetFromRightEdge = defaultProps.dragOffset, friction = defaultProps.friction, overshootFriction = defaultProps.overshootFriction, onSwipeableOpenStartDrag, onSwipeableCloseStartDrag, onSwipeableWillOpen, onSwipeableWillClose, onSwipeableOpen, onSwipeableClose, renderLeftActions, renderRightActions, simultaneousWithExternalGesture, requireExternalGestureToFail, blocksExternalGesture, hitSlop, ...remainingProps } = props;
24
- const relationProps = {
25
- simultaneousWithExternalGesture,
26
- requireExternalGestureToFail,
27
- blocksExternalGesture,
28
- };
29
- const rowState = useSharedValue(0);
30
- const userDrag = useSharedValue(0);
31
- const appliedTranslation = useSharedValue(0);
32
- const rowWidth = useSharedValue(0);
33
- const leftWidth = useSharedValue(0);
34
- const rightWidth = useSharedValue(0);
35
- const showLeftProgress = useSharedValue(0);
36
- const showRightProgress = useSharedValue(0);
37
- const updateAnimatedEvent = useCallback(() => {
38
- 'worklet';
39
- const shouldOvershootLeft = overshootLeft ?? leftWidth.value > 0;
40
- const shouldOvershootRight = overshootRight ?? rightWidth.value > 0;
41
- const startOffset = rowState.value === 1
42
- ? leftWidth.value
43
- : rowState.value === -1
44
- ? -rightWidth.value
45
- : 0;
46
- const offsetDrag = userDrag.value / friction + startOffset;
47
- appliedTranslation.value = interpolate(offsetDrag, [
48
- -rightWidth.value - 1,
49
- -rightWidth.value,
50
- leftWidth.value,
51
- leftWidth.value + 1,
52
- ], [
53
- -rightWidth.value -
54
- (shouldOvershootRight ? 1 / overshootFriction : 0),
55
- -rightWidth.value,
56
- leftWidth.value,
57
- leftWidth.value + (shouldOvershootLeft ? 1 / overshootFriction : 0),
58
- ]);
59
- showLeftProgress.value =
60
- leftWidth.value > 0
61
- ? interpolate(appliedTranslation.value, [-1, 0, leftWidth.value], [0, 0, 1])
62
- : 0;
63
- showRightProgress.value =
64
- rightWidth.value > 0
65
- ? interpolate(appliedTranslation.value, [-rightWidth.value, 0, 1], [1, 0, 0])
66
- : 0;
67
- }, [
68
- appliedTranslation,
69
- friction,
70
- leftWidth,
71
- overshootFriction,
72
- rightWidth,
73
- rowState,
74
- showLeftProgress,
75
- showRightProgress,
76
- userDrag,
77
- overshootLeft,
78
- overshootRight,
79
- ]);
80
- const dispatchImmediateEvents = useCallback((fromValue, toValue) => {
81
- 'worklet';
82
- if (onSwipeableWillOpen && toValue !== 0) {
83
- runOnJS(onSwipeableWillOpen)(toValue > 0 ? SwipeDirection.RIGHT : SwipeDirection.LEFT);
84
- }
85
- if (onSwipeableWillClose && toValue === 0) {
86
- runOnJS(onSwipeableWillClose)(fromValue > 0 ? SwipeDirection.LEFT : SwipeDirection.RIGHT);
87
- }
88
- }, [onSwipeableWillClose, onSwipeableWillOpen, rowState]);
89
- const dispatchEndEvents = useCallback((fromValue, toValue) => {
90
- 'worklet';
91
- if (onSwipeableOpen && toValue !== 0) {
92
- runOnJS(onSwipeableOpen)(toValue > 0 ? SwipeDirection.RIGHT : SwipeDirection.LEFT);
93
- }
94
- if (onSwipeableClose && toValue === 0) {
95
- runOnJS(onSwipeableClose)(fromValue > 0 ? SwipeDirection.LEFT : SwipeDirection.RIGHT);
96
- }
97
- }, [onSwipeableClose, onSwipeableOpen]);
98
- const animateRow = useCallback((toValue, velocityX) => {
99
- 'worklet';
100
- const translationSpringConfig = {
101
- mass: 2,
102
- damping: 1000,
103
- stiffness: 700,
104
- velocity: velocityX,
105
- overshootClamping: true,
106
- reduceMotion: ReduceMotion.System,
107
- ...animationOptions,
108
- };
109
- const isClosing = toValue === 0;
110
- const moveToRight = isClosing ? rowState.value < 0 : toValue > 0;
111
- const usedWidth = isClosing
112
- ? moveToRight
113
- ? rightWidth.value
114
- : leftWidth.value
115
- : moveToRight
116
- ? leftWidth.value
117
- : rightWidth.value;
118
- const progressSpringConfig = {
119
- ...translationSpringConfig,
120
- restDisplacementThreshold: 0.01,
121
- restSpeedThreshold: 0.01,
122
- velocity: velocityX &&
123
- interpolate(velocityX, [-usedWidth, usedWidth], [-1, 1]),
124
- };
125
- const frozenRowState = rowState.value;
126
- appliedTranslation.value = withSpring(toValue, translationSpringConfig, (isFinished) => {
127
- if (isFinished) {
128
- dispatchEndEvents(frozenRowState, toValue);
129
- }
130
- });
131
- const progressTarget = toValue === 0 ? 0 : 1 * Math.sign(toValue);
132
- showLeftProgress.value = withSpring(Math.max(progressTarget, 0), progressSpringConfig);
133
- showRightProgress.value = withSpring(Math.max(-progressTarget, 0), progressSpringConfig);
134
- dispatchImmediateEvents(frozenRowState, toValue);
135
- rowState.value = Math.sign(toValue);
136
- }, [
137
- rowState,
138
- animationOptions,
139
- appliedTranslation,
140
- showLeftProgress,
141
- leftWidth,
142
- showRightProgress,
143
- rightWidth,
144
- dispatchImmediateEvents,
145
- dispatchEndEvents,
146
- ]);
147
- const leftLayoutRef = useAnimatedRef();
148
- const leftWrapperLayoutRef = useAnimatedRef();
149
- const rightLayoutRef = useAnimatedRef();
150
- const updateElementWidths = useCallback(() => {
151
- 'worklet';
152
- const leftLayout = measure(leftLayoutRef);
153
- const leftWrapperLayout = measure(leftWrapperLayoutRef);
154
- const rightLayout = measure(rightLayoutRef);
155
- leftWidth.value =
156
- (leftLayout?.pageX ?? 0) - (leftWrapperLayout?.pageX ?? 0);
157
- rightWidth.value =
158
- rowWidth.value -
159
- (rightLayout?.pageX ?? rowWidth.value) +
160
- (leftWrapperLayout?.pageX ?? 0);
161
- }, [
162
- leftLayoutRef,
163
- leftWrapperLayoutRef,
164
- rightLayoutRef,
165
- leftWidth,
166
- rightWidth,
167
- rowWidth,
168
- ]);
169
- const swipeableMethods = useMemo(() => ({
170
- close() {
171
- 'worklet';
172
- if (_WORKLET) {
173
- animateRow(0);
174
- return;
175
- }
176
- runOnUI(() => {
177
- animateRow(0);
178
- })();
179
- },
180
- openLeft() {
181
- 'worklet';
182
- if (_WORKLET) {
183
- updateElementWidths();
184
- animateRow(leftWidth.value);
185
- return;
186
- }
187
- runOnUI(() => {
188
- updateElementWidths();
189
- animateRow(leftWidth.value);
190
- })();
191
- },
192
- openRight() {
193
- 'worklet';
194
- if (_WORKLET) {
195
- updateElementWidths();
196
- animateRow(-rightWidth.value);
197
- return;
198
- }
199
- runOnUI(() => {
200
- updateElementWidths();
201
- animateRow(-rightWidth.value);
202
- })();
203
- },
204
- reset() {
205
- 'worklet';
206
- userDrag.value = 0;
207
- showLeftProgress.value = 0;
208
- appliedTranslation.value = 0;
209
- rowState.value = 0;
210
- },
211
- }), [
212
- animateRow,
213
- updateElementWidths,
214
- leftWidth,
215
- rightWidth,
216
- userDrag,
217
- showLeftProgress,
218
- appliedTranslation,
219
- rowState,
220
- ]);
221
- const onRowLayout = useCallback(({ nativeEvent }) => {
222
- rowWidth.value = nativeEvent.layout.width;
223
- }, [rowWidth]);
224
- // As stated in `Dimensions.get` docstring, this function should be called on every render
225
- // since dimensions may change (e.g. orientation change)
226
- const leftActionAnimation = useAnimatedStyle(() => {
227
- return {
228
- opacity: showLeftProgress.value === 0 ? 0 : 1,
229
- };
230
- });
231
- const leftElement = useCallback(() => (<Animated.View ref={leftWrapperLayoutRef} style={[styles.leftActions, leftActionAnimation]}>
232
- {renderLeftActions?.(showLeftProgress, appliedTranslation, swipeableMethods)}
233
- <Animated.View ref={leftLayoutRef}/>
234
- </Animated.View>), [
235
- appliedTranslation,
236
- leftActionAnimation,
237
- leftLayoutRef,
238
- leftWrapperLayoutRef,
239
- renderLeftActions,
240
- showLeftProgress,
241
- swipeableMethods,
242
- ]);
243
- const rightActionAnimation = useAnimatedStyle(() => {
244
- return {
245
- opacity: showRightProgress.value === 0 ? 0 : 1,
246
- };
247
- });
248
- const rightElement = useCallback(() => (<Animated.View style={[styles.rightActions, rightActionAnimation]}>
249
- {renderRightActions?.(showRightProgress, appliedTranslation, swipeableMethods)}
250
- <Animated.View ref={rightLayoutRef}/>
251
- </Animated.View>), [
252
- appliedTranslation,
253
- renderRightActions,
254
- rightActionAnimation,
255
- rightLayoutRef,
256
- showRightProgress,
257
- swipeableMethods,
258
- ]);
259
- const handleRelease = useCallback((event) => {
260
- 'worklet';
261
- const { velocityX } = event;
262
- userDrag.value = event.translationX;
263
- const leftThresholdProp = leftThreshold ?? leftWidth.value / 2;
264
- const rightThresholdProp = rightThreshold ?? rightWidth.value / 2;
265
- const translationX = (userDrag.value + DRAG_TOSS * velocityX) / friction;
266
- let toValue = 0;
267
- if (rowState.value === 0) {
268
- if (translationX > leftThresholdProp) {
269
- toValue = leftWidth.value;
270
- }
271
- else if (translationX < -rightThresholdProp) {
272
- toValue = -rightWidth.value;
273
- }
274
- }
275
- else if (rowState.value === 1) {
276
- // Swiped to left
277
- if (translationX > -leftThresholdProp) {
278
- toValue = leftWidth.value;
279
- }
280
- }
281
- else {
282
- // Swiped to right
283
- if (translationX < rightThresholdProp) {
284
- toValue = -rightWidth.value;
285
- }
286
- }
287
- animateRow(toValue, velocityX / friction);
288
- }, [
289
- animateRow,
290
- friction,
291
- leftThreshold,
292
- leftWidth,
293
- rightThreshold,
294
- rightWidth,
295
- rowState,
296
- userDrag,
297
- ]);
298
- const close = useCallback(() => {
299
- 'worklet';
300
- animateRow(0);
301
- }, [animateRow]);
302
- const dragStarted = useSharedValue(false);
303
- const tapGesture = useMemo(() => {
304
- const tap = Gesture.Tap()
305
- .shouldCancelWhenOutside(true)
306
- .onStart(() => {
307
- if (rowState.value !== 0) {
308
- close();
309
- }
310
- });
311
- Object.entries(relationProps).forEach(([relationName, relation]) => {
312
- applyRelationProp(tap, relationName, relation);
313
- });
314
- return tap;
315
- }, [close, rowState, simultaneousWithExternalGesture]);
316
- const panGesture = useMemo(() => {
317
- const pan = Gesture.Pan()
318
- .enabled(enabled !== false)
319
- .enableTrackpadTwoFingerGesture(enableTrackpadTwoFingerGesture)
320
- .activeOffsetX([-dragOffsetFromRightEdge, dragOffsetFromLeftEdge])
321
- .onStart(updateElementWidths)
322
- .onUpdate((event) => {
323
- userDrag.value = event.translationX;
324
- const direction = rowState.value === -1
325
- ? SwipeDirection.RIGHT
326
- : rowState.value === 1
327
- ? SwipeDirection.LEFT
328
- : event.translationX > 0
329
- ? SwipeDirection.RIGHT
330
- : SwipeDirection.LEFT;
331
- if (!dragStarted.value) {
332
- dragStarted.value = true;
333
- if (rowState.value === 0 && onSwipeableOpenStartDrag) {
334
- runOnJS(onSwipeableOpenStartDrag)(direction);
335
- }
336
- else if (onSwipeableCloseStartDrag) {
337
- runOnJS(onSwipeableCloseStartDrag)(direction);
338
- }
339
- }
340
- updateAnimatedEvent();
341
- })
342
- .onEnd((event) => {
343
- handleRelease(event);
344
- })
345
- .onFinalize(() => {
346
- dragStarted.value = false;
347
- });
348
- Object.entries(relationProps).forEach(([relationName, relation]) => {
349
- applyRelationProp(pan, relationName, relation);
350
- });
351
- return pan;
352
- }, [
353
- dragOffsetFromLeftEdge,
354
- dragOffsetFromRightEdge,
355
- dragStarted,
356
- enableTrackpadTwoFingerGesture,
357
- enabled,
358
- handleRelease,
359
- onSwipeableCloseStartDrag,
360
- onSwipeableOpenStartDrag,
361
- rowState,
362
- updateAnimatedEvent,
363
- updateElementWidths,
364
- userDrag,
365
- simultaneousWithExternalGesture,
366
- ]);
367
- useImperativeHandle(ref, () => swipeableMethods, [swipeableMethods]);
368
- const animatedStyle = useAnimatedStyle(() => ({
369
- transform: [{ translateX: appliedTranslation.value }],
370
- pointerEvents: rowState.value === 0 ? 'auto' : 'box-only',
371
- }), [appliedTranslation, rowState]);
372
- const swipeableComponent = (<GestureDetector gesture={panGesture} touchAction="pan-y">
373
- <Animated.View {...remainingProps} onLayout={onRowLayout} hitSlop={hitSlop ?? undefined} style={[styles.container, containerStyle]}>
374
- {leftElement()}
375
- {rightElement()}
376
- <GestureDetector gesture={tapGesture} touchAction="pan-y">
377
- <Animated.View style={[animatedStyle, childrenContainerStyle]}>
378
- {children}
379
- </Animated.View>
380
- </GestureDetector>
381
- </Animated.View>
382
- </GestureDetector>);
383
- return testID ? (<View testID={testID}>{swipeableComponent}</View>) : (swipeableComponent);
384
- });
385
- export default Swipeable;
386
- const styles = StyleSheet.create({
387
- container: {
388
- overflow: 'hidden',
389
- },
390
- leftActions: {
391
- ...StyleSheet.absoluteFillObject,
392
- flexDirection: I18nManager.isRTL ? 'row-reverse' : 'row',
393
- overflow: 'hidden',
394
- },
395
- rightActions: {
396
- ...StyleSheet.absoluteFillObject,
397
- flexDirection: I18nManager.isRTL ? 'row' : 'row-reverse',
398
- overflow: 'hidden',
399
- },
400
- });
@@ -1,287 +0,0 @@
1
- // Similarily to the DrawerLayout component this deserves to be put in a
2
- // separate repo. Although, keeping it here for the time being will allow us to
3
- // move faster and fix possible issues quicker
4
- import * as React from 'react';
5
- import { Component } from 'react';
6
- import { Animated, StyleSheet, View, I18nManager, } from 'react-native';
7
- import { PanGestureHandler, } from '../handlers/PanGestureHandler';
8
- import { TapGestureHandler } from '../handlers/TapGestureHandler';
9
- import { State } from '../State';
10
- const DRAG_TOSS = 0.05;
11
- /**
12
- * @deprecated use Reanimated version of Swipeable instead
13
- *
14
- * This component allows for implementing swipeable rows or similar interaction.
15
- */
16
- export default class Swipeable extends Component {
17
- static defaultProps = {
18
- friction: 1,
19
- overshootFriction: 1,
20
- useNativeAnimations: true,
21
- };
22
- constructor(props) {
23
- super(props);
24
- const dragX = new Animated.Value(0);
25
- this.state = {
26
- dragX,
27
- rowTranslation: new Animated.Value(0),
28
- rowState: 0,
29
- leftWidth: undefined,
30
- rightOffset: undefined,
31
- rowWidth: undefined,
32
- };
33
- this.updateAnimatedEvent(props, this.state);
34
- this.onGestureEvent = Animated.event([{ nativeEvent: { translationX: dragX } }], { useNativeDriver: props.useNativeAnimations });
35
- }
36
- shouldComponentUpdate(props, state) {
37
- if (this.props.friction !== props.friction ||
38
- this.props.overshootLeft !== props.overshootLeft ||
39
- this.props.overshootRight !== props.overshootRight ||
40
- this.props.overshootFriction !== props.overshootFriction ||
41
- this.state.leftWidth !== state.leftWidth ||
42
- this.state.rightOffset !== state.rightOffset ||
43
- this.state.rowWidth !== state.rowWidth) {
44
- this.updateAnimatedEvent(props, state);
45
- }
46
- return true;
47
- }
48
- onGestureEvent;
49
- transX;
50
- showLeftAction;
51
- leftActionTranslate;
52
- showRightAction;
53
- rightActionTranslate;
54
- updateAnimatedEvent = (props, state) => {
55
- const { friction, overshootFriction } = props;
56
- const { dragX, rowTranslation, leftWidth = 0, rowWidth = 0 } = state;
57
- const { rightOffset = rowWidth } = state;
58
- const rightWidth = Math.max(0, rowWidth - rightOffset);
59
- const { overshootLeft = leftWidth > 0, overshootRight = rightWidth > 0 } = props;
60
- const transX = Animated.add(rowTranslation, dragX.interpolate({
61
- inputRange: [0, friction],
62
- outputRange: [0, 1],
63
- })).interpolate({
64
- inputRange: [-rightWidth - 1, -rightWidth, leftWidth, leftWidth + 1],
65
- outputRange: [
66
- -rightWidth - (overshootRight ? 1 / overshootFriction : 0),
67
- -rightWidth,
68
- leftWidth,
69
- leftWidth + (overshootLeft ? 1 / overshootFriction : 0),
70
- ],
71
- });
72
- this.transX = transX;
73
- this.showLeftAction =
74
- leftWidth > 0
75
- ? transX.interpolate({
76
- inputRange: [-1, 0, leftWidth],
77
- outputRange: [0, 0, 1],
78
- })
79
- : new Animated.Value(0);
80
- this.leftActionTranslate = this.showLeftAction.interpolate({
81
- inputRange: [0, Number.MIN_VALUE],
82
- outputRange: [-10000, 0],
83
- extrapolate: 'clamp',
84
- });
85
- this.showRightAction =
86
- rightWidth > 0
87
- ? transX.interpolate({
88
- inputRange: [-rightWidth, 0, 1],
89
- outputRange: [1, 0, 0],
90
- })
91
- : new Animated.Value(0);
92
- this.rightActionTranslate = this.showRightAction.interpolate({
93
- inputRange: [0, Number.MIN_VALUE],
94
- outputRange: [-10000, 0],
95
- extrapolate: 'clamp',
96
- });
97
- };
98
- onTapHandlerStateChange = ({ nativeEvent, }) => {
99
- if (nativeEvent.oldState === State.ACTIVE) {
100
- this.close();
101
- }
102
- };
103
- onHandlerStateChange = (ev) => {
104
- if (ev.nativeEvent.oldState === State.ACTIVE) {
105
- this.handleRelease(ev);
106
- }
107
- if (ev.nativeEvent.state === State.ACTIVE) {
108
- const { velocityX, translationX: dragX } = ev.nativeEvent;
109
- const { rowState } = this.state;
110
- const { friction } = this.props;
111
- const translationX = (dragX + DRAG_TOSS * velocityX) / friction;
112
- const direction = rowState === -1
113
- ? 'right'
114
- : rowState === 1
115
- ? 'left'
116
- : translationX > 0
117
- ? 'left'
118
- : 'right';
119
- if (rowState === 0) {
120
- this.props.onSwipeableOpenStartDrag?.(direction);
121
- }
122
- else {
123
- this.props.onSwipeableCloseStartDrag?.(direction);
124
- }
125
- }
126
- };
127
- handleRelease = (ev) => {
128
- const { velocityX, translationX: dragX } = ev.nativeEvent;
129
- const { leftWidth = 0, rowWidth = 0, rowState } = this.state;
130
- const { rightOffset = rowWidth } = this.state;
131
- const rightWidth = rowWidth - rightOffset;
132
- const { friction, leftThreshold = leftWidth / 2, rightThreshold = rightWidth / 2, } = this.props;
133
- const startOffsetX = this.currentOffset() + dragX / friction;
134
- const translationX = (dragX + DRAG_TOSS * velocityX) / friction;
135
- let toValue = 0;
136
- if (rowState === 0) {
137
- if (translationX > leftThreshold) {
138
- toValue = leftWidth;
139
- }
140
- else if (translationX < -rightThreshold) {
141
- toValue = -rightWidth;
142
- }
143
- }
144
- else if (rowState === 1) {
145
- // Swiped to left
146
- if (translationX > -leftThreshold) {
147
- toValue = leftWidth;
148
- }
149
- }
150
- else {
151
- // Swiped to right
152
- if (translationX < rightThreshold) {
153
- toValue = -rightWidth;
154
- }
155
- }
156
- this.animateRow(startOffsetX, toValue, velocityX / friction);
157
- };
158
- animateRow = (fromValue, toValue, velocityX) => {
159
- const { dragX, rowTranslation } = this.state;
160
- dragX.setValue(0);
161
- rowTranslation.setValue(fromValue);
162
- this.setState({ rowState: Math.sign(toValue) });
163
- Animated.spring(rowTranslation, {
164
- restSpeedThreshold: 1.7,
165
- restDisplacementThreshold: 0.4,
166
- velocity: velocityX,
167
- bounciness: 0,
168
- toValue,
169
- useNativeDriver: this.props.useNativeAnimations,
170
- ...this.props.animationOptions,
171
- }).start(({ finished }) => {
172
- if (finished) {
173
- if (toValue > 0) {
174
- this.props.onSwipeableLeftOpen?.();
175
- this.props.onSwipeableOpen?.('left', this);
176
- }
177
- else if (toValue < 0) {
178
- this.props.onSwipeableRightOpen?.();
179
- this.props.onSwipeableOpen?.('right', this);
180
- }
181
- else {
182
- const closingDirection = fromValue > 0 ? 'left' : 'right';
183
- this.props.onSwipeableClose?.(closingDirection, this);
184
- }
185
- }
186
- });
187
- if (toValue > 0) {
188
- this.props.onSwipeableLeftWillOpen?.();
189
- this.props.onSwipeableWillOpen?.('left');
190
- }
191
- else if (toValue < 0) {
192
- this.props.onSwipeableRightWillOpen?.();
193
- this.props.onSwipeableWillOpen?.('right');
194
- }
195
- else {
196
- const closingDirection = fromValue > 0 ? 'left' : 'right';
197
- this.props.onSwipeableWillClose?.(closingDirection);
198
- }
199
- };
200
- onRowLayout = ({ nativeEvent }) => {
201
- this.setState({ rowWidth: nativeEvent.layout.width });
202
- };
203
- currentOffset = () => {
204
- const { leftWidth = 0, rowWidth = 0, rowState } = this.state;
205
- const { rightOffset = rowWidth } = this.state;
206
- const rightWidth = rowWidth - rightOffset;
207
- if (rowState === 1) {
208
- return leftWidth;
209
- }
210
- else if (rowState === -1) {
211
- return -rightWidth;
212
- }
213
- return 0;
214
- };
215
- close = () => {
216
- this.animateRow(this.currentOffset(), 0);
217
- };
218
- // eslint-disable-next-line @eslint-react/no-unused-class-component-members
219
- openLeft = () => {
220
- const { leftWidth = 0 } = this.state;
221
- this.animateRow(this.currentOffset(), leftWidth);
222
- };
223
- // eslint-disable-next-line @eslint-react/no-unused-class-component-members
224
- openRight = () => {
225
- const { rowWidth = 0 } = this.state;
226
- const { rightOffset = rowWidth } = this.state;
227
- const rightWidth = rowWidth - rightOffset;
228
- this.animateRow(this.currentOffset(), -rightWidth);
229
- };
230
- // eslint-disable-next-line @eslint-react/no-unused-class-component-members
231
- reset = () => {
232
- const { dragX, rowTranslation } = this.state;
233
- dragX.setValue(0);
234
- rowTranslation.setValue(0);
235
- this.setState({ rowState: 0 });
236
- };
237
- render() {
238
- const { rowState } = this.state;
239
- const { children, renderLeftActions, renderRightActions, dragOffsetFromLeftEdge = 10, dragOffsetFromRightEdge = 10, } = this.props;
240
- const left = renderLeftActions && (<Animated.View style={[
241
- styles.leftActions,
242
- // All those and below parameters can have ! since they are all
243
- // asigned in constructor in `updateAnimatedEvent` but TS cannot spot
244
- // it for some reason
245
- { transform: [{ translateX: this.leftActionTranslate }] },
246
- ]}>
247
- {renderLeftActions(this.showLeftAction, this.transX, this)}
248
- <View onLayout={({ nativeEvent }) => this.setState({ leftWidth: nativeEvent.layout.x })}/>
249
- </Animated.View>);
250
- const right = renderRightActions && (<Animated.View style={[
251
- styles.rightActions,
252
- { transform: [{ translateX: this.rightActionTranslate }] },
253
- ]}>
254
- {renderRightActions(this.showRightAction, this.transX, this)}
255
- <View onLayout={({ nativeEvent }) => this.setState({ rightOffset: nativeEvent.layout.x })}/>
256
- </Animated.View>);
257
- return (<PanGestureHandler activeOffsetX={[-dragOffsetFromRightEdge, dragOffsetFromLeftEdge]} touchAction="pan-y" {...this.props} onGestureEvent={this.onGestureEvent} onHandlerStateChange={this.onHandlerStateChange}>
258
- <Animated.View onLayout={this.onRowLayout} style={[styles.container, this.props.containerStyle]}>
259
- {left}
260
- {right}
261
- <TapGestureHandler enabled={rowState !== 0} touchAction="pan-y" onHandlerStateChange={this.onTapHandlerStateChange}>
262
- <Animated.View pointerEvents={rowState === 0 ? 'auto' : 'box-only'} style={[
263
- {
264
- transform: [{ translateX: this.transX }],
265
- },
266
- this.props.childrenContainerStyle,
267
- ]}>
268
- {children}
269
- </Animated.View>
270
- </TapGestureHandler>
271
- </Animated.View>
272
- </PanGestureHandler>);
273
- }
274
- }
275
- const styles = StyleSheet.create({
276
- container: {
277
- overflow: 'hidden',
278
- },
279
- leftActions: {
280
- ...StyleSheet.absoluteFillObject,
281
- flexDirection: I18nManager.isRTL ? 'row-reverse' : 'row',
282
- },
283
- rightActions: {
284
- ...StyleSheet.absoluteFillObject,
285
- flexDirection: I18nManager.isRTL ? 'row' : 'row-reverse',
286
- },
287
- });