react-native-gesture-handler 2.26.0 → 2.27.1

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 (415) hide show
  1. package/README.md +69 -0
  2. package/android/src/main/jni/CMakeLists.txt +7 -26
  3. package/lib/commonjs/components/Pressable/Pressable.js +139 -188
  4. package/lib/commonjs/components/Pressable/Pressable.js.map +1 -1
  5. package/lib/commonjs/components/Pressable/StateMachine.js +38 -0
  6. package/lib/commonjs/components/Pressable/StateMachine.js.map +1 -0
  7. package/lib/commonjs/components/Pressable/stateDefinitions.js +88 -0
  8. package/lib/commonjs/components/Pressable/stateDefinitions.js.map +1 -0
  9. package/lib/commonjs/components/Pressable/utils.js +1 -1
  10. package/lib/commonjs/components/Pressable/utils.js.map +1 -1
  11. package/lib/commonjs/handlers/gestures/forceTouchGesture.js +12 -0
  12. package/lib/commonjs/handlers/gestures/forceTouchGesture.js.map +1 -1
  13. package/lib/commonjs/handlers/gestures/gestureObjects.js +3 -1
  14. package/lib/commonjs/handlers/gestures/gestureObjects.js.map +1 -1
  15. package/lib/commonjs/web/detectors/RotationGestureDetector.js +3 -0
  16. package/lib/commonjs/web/detectors/RotationGestureDetector.js.map +1 -1
  17. package/lib/commonjs/web/handlers/FlingGestureHandler.js +3 -0
  18. package/lib/commonjs/web/handlers/FlingGestureHandler.js.map +1 -1
  19. package/lib/commonjs/web/handlers/GestureHandler.js +6 -6
  20. package/lib/commonjs/web/handlers/GestureHandler.js.map +1 -1
  21. package/lib/commonjs/web/handlers/PanGestureHandler.js +24 -33
  22. package/lib/commonjs/web/handlers/PanGestureHandler.js.map +1 -1
  23. package/lib/commonjs/web/handlers/TapGestureHandler.js +15 -17
  24. package/lib/commonjs/web/handlers/TapGestureHandler.js.map +1 -1
  25. package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js +1 -1
  26. package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js.map +1 -1
  27. package/lib/commonjs/web/tools/PointerEventManager.js +1 -1
  28. package/lib/commonjs/web/tools/PointerEventManager.js.map +1 -1
  29. package/lib/commonjs/web/tools/PointerTracker.js +12 -11
  30. package/lib/commonjs/web/tools/PointerTracker.js.map +1 -1
  31. package/lib/commonjs/web/tools/Vector.js +1 -1
  32. package/lib/commonjs/web/tools/Vector.js.map +1 -1
  33. package/lib/module/components/Pressable/Pressable.js +141 -190
  34. package/lib/module/components/Pressable/Pressable.js.map +1 -1
  35. package/lib/module/components/Pressable/StateMachine.js +34 -0
  36. package/lib/module/components/Pressable/StateMachine.js.map +1 -0
  37. package/lib/module/components/Pressable/stateDefinitions.js +83 -0
  38. package/lib/module/components/Pressable/stateDefinitions.js.map +1 -0
  39. package/lib/module/components/Pressable/utils.js +1 -1
  40. package/lib/module/components/Pressable/utils.js.map +1 -1
  41. package/lib/module/handlers/gestures/forceTouchGesture.js +13 -0
  42. package/lib/module/handlers/gestures/forceTouchGesture.js.map +1 -1
  43. package/lib/module/handlers/gestures/gestureObjects.js +3 -1
  44. package/lib/module/handlers/gestures/gestureObjects.js.map +1 -1
  45. package/lib/module/web/detectors/RotationGestureDetector.js +3 -0
  46. package/lib/module/web/detectors/RotationGestureDetector.js.map +1 -1
  47. package/lib/module/web/handlers/FlingGestureHandler.js +3 -0
  48. package/lib/module/web/handlers/FlingGestureHandler.js.map +1 -1
  49. package/lib/module/web/handlers/GestureHandler.js +6 -6
  50. package/lib/module/web/handlers/GestureHandler.js.map +1 -1
  51. package/lib/module/web/handlers/PanGestureHandler.js +24 -33
  52. package/lib/module/web/handlers/PanGestureHandler.js.map +1 -1
  53. package/lib/module/web/handlers/TapGestureHandler.js +15 -17
  54. package/lib/module/web/handlers/TapGestureHandler.js.map +1 -1
  55. package/lib/module/web/tools/GestureHandlerOrchestrator.js +1 -1
  56. package/lib/module/web/tools/GestureHandlerOrchestrator.js.map +1 -1
  57. package/lib/module/web/tools/PointerEventManager.js +1 -1
  58. package/lib/module/web/tools/PointerEventManager.js.map +1 -1
  59. package/lib/module/web/tools/PointerTracker.js +12 -11
  60. package/lib/module/web/tools/PointerTracker.js.map +1 -1
  61. package/lib/module/web/tools/Vector.js +1 -1
  62. package/lib/module/web/tools/Vector.js.map +1 -1
  63. package/lib/typescript/ActionType.d.ts +0 -1
  64. package/lib/typescript/ActionType.js +6 -0
  65. package/lib/typescript/Directions.d.ts +0 -1
  66. package/lib/typescript/Directions.js +18 -0
  67. package/lib/typescript/EnableNewWebImplementation.d.ts +0 -1
  68. package/lib/typescript/EnableNewWebImplementation.js +30 -0
  69. package/lib/typescript/GestureHandlerRootViewContext.d.ts +0 -1
  70. package/lib/typescript/GestureHandlerRootViewContext.js +2 -0
  71. package/lib/typescript/PlatformConstants.d.ts +0 -1
  72. package/lib/typescript/PlatformConstants.js +3 -0
  73. package/lib/typescript/PlatformConstants.web.d.ts +0 -1
  74. package/lib/typescript/PlatformConstants.web.js +5 -0
  75. package/lib/typescript/PointerType.d.ts +0 -1
  76. package/lib/typescript/PointerType.js +8 -0
  77. package/lib/typescript/RNGestureHandlerModule.d.ts +0 -1
  78. package/lib/typescript/RNGestureHandlerModule.js +4 -0
  79. package/lib/typescript/RNGestureHandlerModule.web.d.ts +0 -1
  80. package/lib/typescript/RNGestureHandlerModule.web.js +92 -0
  81. package/lib/typescript/RNGestureHandlerModule.windows.d.ts +0 -1
  82. package/lib/typescript/RNGestureHandlerModule.windows.js +47 -0
  83. package/lib/typescript/RNRenderer.d.ts +0 -1
  84. package/lib/typescript/RNRenderer.js +3 -0
  85. package/lib/typescript/RNRenderer.web.d.ts +0 -1
  86. package/lib/typescript/RNRenderer.web.js +3 -0
  87. package/lib/typescript/State.d.ts +0 -1
  88. package/lib/typescript/State.js +9 -0
  89. package/lib/typescript/TouchEventType.d.ts +0 -1
  90. package/lib/typescript/TouchEventType.js +7 -0
  91. package/lib/typescript/components/DrawerLayout.d.ts +0 -1
  92. package/lib/typescript/components/DrawerLayout.js +417 -0
  93. package/lib/typescript/components/GestureButtons.d.ts +0 -1
  94. package/lib/typescript/components/GestureButtons.js +165 -0
  95. package/lib/typescript/components/GestureButtonsProps.d.ts +0 -1
  96. package/lib/typescript/components/GestureButtonsProps.js +1 -0
  97. package/lib/typescript/components/GestureComponents.d.ts +0 -1
  98. package/lib/typescript/components/GestureComponents.js +67 -0
  99. package/lib/typescript/components/GestureComponents.web.d.ts +0 -1
  100. package/lib/typescript/components/GestureComponents.web.js +21 -0
  101. package/lib/typescript/components/GestureHandlerButton.d.ts +0 -1
  102. package/lib/typescript/components/GestureHandlerButton.js +2 -0
  103. package/lib/typescript/components/GestureHandlerButton.web.d.ts +0 -1
  104. package/lib/typescript/components/GestureHandlerButton.web.js +3 -0
  105. package/lib/typescript/components/GestureHandlerRootView.android.d.ts +0 -1
  106. package/lib/typescript/components/GestureHandlerRootView.android.js +17 -0
  107. package/lib/typescript/components/GestureHandlerRootView.d.ts +0 -1
  108. package/lib/typescript/components/GestureHandlerRootView.js +16 -0
  109. package/lib/typescript/components/GestureHandlerRootView.web.d.ts +0 -1
  110. package/lib/typescript/components/GestureHandlerRootView.web.js +11 -0
  111. package/lib/typescript/components/Pressable/Pressable.d.ts +1 -3
  112. package/lib/typescript/components/Pressable/Pressable.d.ts.map +1 -1
  113. package/lib/typescript/components/Pressable/Pressable.js +231 -0
  114. package/lib/typescript/components/Pressable/PressableProps.d.ts +15 -2
  115. package/lib/typescript/components/Pressable/PressableProps.d.ts.map +1 -1
  116. package/lib/typescript/components/Pressable/PressableProps.js +1 -0
  117. package/lib/typescript/components/Pressable/StateMachine.d.ts +14 -0
  118. package/lib/typescript/components/Pressable/StateMachine.d.ts.map +1 -0
  119. package/lib/typescript/components/Pressable/StateMachine.js +34 -0
  120. package/lib/typescript/components/Pressable/index.d.ts +0 -1
  121. package/lib/typescript/components/Pressable/index.js +1 -0
  122. package/lib/typescript/components/Pressable/stateDefinitions.d.ts +9 -0
  123. package/lib/typescript/components/Pressable/stateDefinitions.d.ts.map +1 -0
  124. package/lib/typescript/components/Pressable/stateDefinitions.js +104 -0
  125. package/lib/typescript/components/Pressable/utils.d.ts +3 -7
  126. package/lib/typescript/components/Pressable/utils.d.ts.map +1 -1
  127. package/lib/typescript/components/Pressable/utils.js +80 -0
  128. package/lib/typescript/components/ReanimatedDrawerLayout.d.ts +0 -1
  129. package/lib/typescript/components/ReanimatedDrawerLayout.js +364 -0
  130. package/lib/typescript/components/ReanimatedSwipeable.d.ts +0 -1
  131. package/lib/typescript/components/ReanimatedSwipeable.js +400 -0
  132. package/lib/typescript/components/Swipeable.d.ts +0 -1
  133. package/lib/typescript/components/Swipeable.js +287 -0
  134. package/lib/typescript/components/Text.d.ts +0 -1
  135. package/lib/typescript/components/Text.js +38 -0
  136. package/lib/typescript/components/gestureHandlerRootHOC.d.ts +0 -1
  137. package/lib/typescript/components/gestureHandlerRootHOC.js +18 -0
  138. package/lib/typescript/components/touchables/ExtraButtonProps.d.ts +0 -1
  139. package/lib/typescript/components/touchables/ExtraButtonProps.js +1 -0
  140. package/lib/typescript/components/touchables/GenericTouchable.d.ts +0 -1
  141. package/lib/typescript/components/touchables/GenericTouchable.js +221 -0
  142. package/lib/typescript/components/touchables/GenericTouchableProps.d.ts +0 -1
  143. package/lib/typescript/components/touchables/GenericTouchableProps.js +1 -0
  144. package/lib/typescript/components/touchables/TouchableHighlight.d.ts +0 -1
  145. package/lib/typescript/components/touchables/TouchableHighlight.js +75 -0
  146. package/lib/typescript/components/touchables/TouchableNativeFeedback.android.d.ts +0 -1
  147. package/lib/typescript/components/touchables/TouchableNativeFeedback.android.js +65 -0
  148. package/lib/typescript/components/touchables/TouchableNativeFeedback.d.ts +0 -1
  149. package/lib/typescript/components/touchables/TouchableNativeFeedback.js +6 -0
  150. package/lib/typescript/components/touchables/TouchableNativeFeedbackProps.d.ts +0 -1
  151. package/lib/typescript/components/touchables/TouchableNativeFeedbackProps.js +1 -0
  152. package/lib/typescript/components/touchables/TouchableOpacity.d.ts +0 -1
  153. package/lib/typescript/components/touchables/TouchableOpacity.js +51 -0
  154. package/lib/typescript/components/touchables/TouchableWithoutFeedback.d.ts +0 -1
  155. package/lib/typescript/components/touchables/TouchableWithoutFeedback.js +10 -0
  156. package/lib/typescript/components/touchables/index.d.ts +0 -1
  157. package/lib/typescript/components/touchables/index.js +4 -0
  158. package/lib/typescript/components/utils.d.ts +0 -1
  159. package/lib/typescript/components/utils.js +11 -0
  160. package/lib/typescript/findNodeHandle.d.ts +0 -1
  161. package/lib/typescript/findNodeHandle.js +2 -0
  162. package/lib/typescript/findNodeHandle.web.d.ts +0 -1
  163. package/lib/typescript/findNodeHandle.web.js +31 -0
  164. package/lib/typescript/getShadowNodeFromRef.d.ts +0 -1
  165. package/lib/typescript/getShadowNodeFromRef.js +45 -0
  166. package/lib/typescript/getShadowNodeFromRef.web.d.ts +0 -1
  167. package/lib/typescript/getShadowNodeFromRef.web.js +7 -0
  168. package/lib/typescript/ghQueueMicrotask.d.ts +0 -1
  169. package/lib/typescript/ghQueueMicrotask.js +7 -0
  170. package/lib/typescript/handlers/FlingGestureHandler.d.ts +0 -1
  171. package/lib/typescript/handlers/FlingGestureHandler.js +19 -0
  172. package/lib/typescript/handlers/ForceTouchGestureHandler.d.ts +0 -1
  173. package/lib/typescript/handlers/ForceTouchGestureHandler.js +37 -0
  174. package/lib/typescript/handlers/GestureHandlerEventPayload.d.ts +3 -1
  175. package/lib/typescript/handlers/GestureHandlerEventPayload.d.ts.map +1 -1
  176. package/lib/typescript/handlers/GestureHandlerEventPayload.js +1 -0
  177. package/lib/typescript/handlers/LongPressGestureHandler.d.ts +0 -1
  178. package/lib/typescript/handlers/LongPressGestureHandler.js +22 -0
  179. package/lib/typescript/handlers/NativeViewGestureHandler.d.ts +0 -1
  180. package/lib/typescript/handlers/NativeViewGestureHandler.js +20 -0
  181. package/lib/typescript/handlers/PanGestureHandler.d.ts +0 -1
  182. package/lib/typescript/handlers/PanGestureHandler.js +128 -0
  183. package/lib/typescript/handlers/PinchGestureHandler.d.ts +0 -1
  184. package/lib/typescript/handlers/PinchGestureHandler.js +12 -0
  185. package/lib/typescript/handlers/PressabilityDebugView.d.ts +0 -1
  186. package/lib/typescript/handlers/PressabilityDebugView.js +2 -0
  187. package/lib/typescript/handlers/PressabilityDebugView.web.d.ts +0 -1
  188. package/lib/typescript/handlers/PressabilityDebugView.web.js +4 -0
  189. package/lib/typescript/handlers/RotationGestureHandler.d.ts +0 -1
  190. package/lib/typescript/handlers/RotationGestureHandler.js +12 -0
  191. package/lib/typescript/handlers/TapGestureHandler.d.ts +0 -1
  192. package/lib/typescript/handlers/TapGestureHandler.js +26 -0
  193. package/lib/typescript/handlers/createHandler.d.ts +0 -1
  194. package/lib/typescript/handlers/createHandler.js +375 -0
  195. package/lib/typescript/handlers/createNativeWrapper.d.ts +0 -1
  196. package/lib/typescript/handlers/createNativeWrapper.js +67 -0
  197. package/lib/typescript/handlers/customDirectEventTypes.d.ts +0 -1
  198. package/lib/typescript/handlers/customDirectEventTypes.js +2 -0
  199. package/lib/typescript/handlers/customDirectEventTypes.web.d.ts +0 -1
  200. package/lib/typescript/handlers/customDirectEventTypes.web.js +4 -0
  201. package/lib/typescript/handlers/gestureHandlerCommon.d.ts +0 -1
  202. package/lib/typescript/handlers/gestureHandlerCommon.js +42 -0
  203. package/lib/typescript/handlers/gestureHandlerTypesCompat.d.ts +9 -1
  204. package/lib/typescript/handlers/gestureHandlerTypesCompat.d.ts.map +1 -1
  205. package/lib/typescript/handlers/gestureHandlerTypesCompat.js +1 -0
  206. package/lib/typescript/handlers/gestures/GestureDetector/Wrap.d.ts +0 -1
  207. package/lib/typescript/handlers/gestures/GestureDetector/Wrap.js +22 -0
  208. package/lib/typescript/handlers/gestures/GestureDetector/Wrap.web.d.ts +0 -1
  209. package/lib/typescript/handlers/gestures/GestureDetector/Wrap.web.js +24 -0
  210. package/lib/typescript/handlers/gestures/GestureDetector/attachHandlers.d.ts +0 -1
  211. package/lib/typescript/handlers/gestures/GestureDetector/attachHandlers.js +55 -0
  212. package/lib/typescript/handlers/gestures/GestureDetector/dropHandlers.d.ts +0 -1
  213. package/lib/typescript/handlers/gestures/GestureDetector/dropHandlers.js +12 -0
  214. package/lib/typescript/handlers/gestures/GestureDetector/index.d.ts +0 -1
  215. package/lib/typescript/handlers/gestures/GestureDetector/index.js +114 -0
  216. package/lib/typescript/handlers/gestures/GestureDetector/needsToReattach.d.ts +0 -1
  217. package/lib/typescript/handlers/gestures/GestureDetector/needsToReattach.js +18 -0
  218. package/lib/typescript/handlers/gestures/GestureDetector/types.d.ts +0 -1
  219. package/lib/typescript/handlers/gestures/GestureDetector/types.js +1 -0
  220. package/lib/typescript/handlers/gestures/GestureDetector/updateHandlers.d.ts +0 -1
  221. package/lib/typescript/handlers/gestures/GestureDetector/updateHandlers.js +54 -0
  222. package/lib/typescript/handlers/gestures/GestureDetector/useAnimatedGesture.d.ts +0 -1
  223. package/lib/typescript/handlers/gestures/GestureDetector/useAnimatedGesture.js +137 -0
  224. package/lib/typescript/handlers/gestures/GestureDetector/useDetectorUpdater.d.ts +0 -1
  225. package/lib/typescript/handlers/gestures/GestureDetector/useDetectorUpdater.js +48 -0
  226. package/lib/typescript/handlers/gestures/GestureDetector/useMountReactions.d.ts +0 -1
  227. package/lib/typescript/handlers/gestures/GestureDetector/useMountReactions.js +35 -0
  228. package/lib/typescript/handlers/gestures/GestureDetector/useViewRefHandler.d.ts +0 -1
  229. package/lib/typescript/handlers/gestures/GestureDetector/useViewRefHandler.js +32 -0
  230. package/lib/typescript/handlers/gestures/GestureDetector/utils.d.ts +0 -1
  231. package/lib/typescript/handlers/gestures/GestureDetector/utils.js +140 -0
  232. package/lib/typescript/handlers/gestures/eventReceiver.d.ts +0 -1
  233. package/lib/typescript/handlers/gestures/eventReceiver.js +105 -0
  234. package/lib/typescript/handlers/gestures/flingGesture.d.ts +0 -1
  235. package/lib/typescript/handlers/gestures/flingGesture.js +27 -0
  236. package/lib/typescript/handlers/gestures/forceTouchGesture.d.ts +9 -1
  237. package/lib/typescript/handlers/gestures/forceTouchGesture.d.ts.map +1 -1
  238. package/lib/typescript/handlers/gestures/forceTouchGesture.js +57 -0
  239. package/lib/typescript/handlers/gestures/gesture.d.ts +0 -1
  240. package/lib/typescript/handlers/gestures/gesture.js +303 -0
  241. package/lib/typescript/handlers/gestures/gestureComposition.d.ts +0 -1
  242. package/lib/typescript/handlers/gestures/gestureComposition.js +78 -0
  243. package/lib/typescript/handlers/gestures/gestureObjects.d.ts +3 -2
  244. package/lib/typescript/handlers/gestures/gestureObjects.d.ts.map +1 -1
  245. package/lib/typescript/handlers/gestures/gestureObjects.js +125 -0
  246. package/lib/typescript/handlers/gestures/gestureStateManager.d.ts +0 -1
  247. package/lib/typescript/handlers/gestures/gestureStateManager.js +60 -0
  248. package/lib/typescript/handlers/gestures/gestureStateManager.web.d.ts +0 -1
  249. package/lib/typescript/handlers/gestures/gestureStateManager.web.js +19 -0
  250. package/lib/typescript/handlers/gestures/hoverGesture.d.ts +0 -1
  251. package/lib/typescript/handlers/gestures/hoverGesture.js +45 -0
  252. package/lib/typescript/handlers/gestures/longPressGesture.d.ts +0 -1
  253. package/lib/typescript/handlers/gestures/longPressGesture.js +35 -0
  254. package/lib/typescript/handlers/gestures/manualGesture.d.ts +0 -1
  255. package/lib/typescript/handlers/gestures/manualGesture.js +16 -0
  256. package/lib/typescript/handlers/gestures/nativeGesture.d.ts +0 -1
  257. package/lib/typescript/handlers/gestures/nativeGesture.js +24 -0
  258. package/lib/typescript/handlers/gestures/panGesture.d.ts +0 -1
  259. package/lib/typescript/handlers/gestures/panGesture.js +181 -0
  260. package/lib/typescript/handlers/gestures/pinchGesture.d.ts +0 -1
  261. package/lib/typescript/handlers/gestures/pinchGesture.js +27 -0
  262. package/lib/typescript/handlers/gestures/reanimatedWrapper.d.ts +0 -1
  263. package/lib/typescript/handlers/gestures/reanimatedWrapper.js +23 -0
  264. package/lib/typescript/handlers/gestures/rotationGesture.d.ts +0 -1
  265. package/lib/typescript/handlers/gestures/rotationGesture.js +27 -0
  266. package/lib/typescript/handlers/gestures/tapGesture.d.ts +0 -1
  267. package/lib/typescript/handlers/gestures/tapGesture.js +72 -0
  268. package/lib/typescript/handlers/getNextHandlerTag.d.ts +0 -1
  269. package/lib/typescript/handlers/getNextHandlerTag.js +4 -0
  270. package/lib/typescript/handlers/handlersRegistry.d.ts +0 -1
  271. package/lib/typescript/handlers/handlersRegistry.js +36 -0
  272. package/lib/typescript/handlers/utils.d.ts +0 -1
  273. package/lib/typescript/handlers/utils.js +58 -0
  274. package/lib/typescript/index.d.ts +0 -1
  275. package/lib/typescript/index.js +28 -0
  276. package/lib/typescript/init.d.ts +0 -1
  277. package/lib/typescript/init.js +15 -0
  278. package/lib/typescript/jestUtils/index.d.ts +0 -1
  279. package/lib/typescript/jestUtils/index.js +1 -0
  280. package/lib/typescript/jestUtils/jestUtils.d.ts +0 -1
  281. package/lib/typescript/jestUtils/jestUtils.js +290 -0
  282. package/lib/typescript/mocks.d.ts +0 -1
  283. package/lib/typescript/mocks.js +59 -0
  284. package/lib/typescript/mountRegistry.d.ts +0 -1
  285. package/lib/typescript/mountRegistry.js +29 -0
  286. package/lib/typescript/specs/NativeRNGestureHandlerModule.d.ts +0 -1
  287. package/lib/typescript/specs/NativeRNGestureHandlerModule.js +2 -0
  288. package/lib/typescript/specs/RNGestureHandlerButtonNativeComponent.d.ts +0 -1
  289. package/lib/typescript/specs/RNGestureHandlerButtonNativeComponent.js +2 -0
  290. package/lib/typescript/specs/RNGestureHandlerRootViewNativeComponent.d.ts +0 -1
  291. package/lib/typescript/specs/RNGestureHandlerRootViewNativeComponent.js +2 -0
  292. package/lib/typescript/typeUtils.d.ts +0 -1
  293. package/lib/typescript/typeUtils.js +1 -0
  294. package/lib/typescript/utils.d.ts +0 -1
  295. package/lib/typescript/utils.js +80 -0
  296. package/lib/typescript/web/Gestures.d.ts +0 -1
  297. package/lib/typescript/web/Gestures.js +38 -0
  298. package/lib/typescript/web/constants.d.ts +0 -1
  299. package/lib/typescript/web/constants.js +2 -0
  300. package/lib/typescript/web/detectors/RotationGestureDetector.d.ts +0 -1
  301. package/lib/typescript/web/detectors/RotationGestureDetector.d.ts.map +1 -1
  302. package/lib/typescript/web/detectors/RotationGestureDetector.js +122 -0
  303. package/lib/typescript/web/detectors/ScaleGestureDetector.d.ts +0 -1
  304. package/lib/typescript/web/detectors/ScaleGestureDetector.js +117 -0
  305. package/lib/typescript/web/handlers/FlingGestureHandler.d.ts +0 -1
  306. package/lib/typescript/web/handlers/FlingGestureHandler.d.ts.map +1 -1
  307. package/lib/typescript/web/handlers/FlingGestureHandler.js +133 -0
  308. package/lib/typescript/web/handlers/GestureHandler.d.ts +0 -1
  309. package/lib/typescript/web/handlers/GestureHandler.d.ts.map +1 -1
  310. package/lib/typescript/web/handlers/GestureHandler.js +656 -0
  311. package/lib/typescript/web/handlers/HoverGestureHandler.d.ts +0 -1
  312. package/lib/typescript/web/handlers/HoverGestureHandler.js +37 -0
  313. package/lib/typescript/web/handlers/IGestureHandler.d.ts +0 -1
  314. package/lib/typescript/web/handlers/IGestureHandler.js +1 -0
  315. package/lib/typescript/web/handlers/LongPressGestureHandler.d.ts +0 -1
  316. package/lib/typescript/web/handlers/LongPressGestureHandler.js +136 -0
  317. package/lib/typescript/web/handlers/ManualGestureHandler.d.ts +0 -1
  318. package/lib/typescript/web/handlers/ManualGestureHandler.js +29 -0
  319. package/lib/typescript/web/handlers/NativeViewGestureHandler.d.ts +0 -1
  320. package/lib/typescript/web/handlers/NativeViewGestureHandler.js +133 -0
  321. package/lib/typescript/web/handlers/PanGestureHandler.d.ts +2 -1
  322. package/lib/typescript/web/handlers/PanGestureHandler.d.ts.map +1 -1
  323. package/lib/typescript/web/handlers/PanGestureHandler.js +420 -0
  324. package/lib/typescript/web/handlers/PinchGestureHandler.d.ts +0 -1
  325. package/lib/typescript/web/handlers/PinchGestureHandler.js +117 -0
  326. package/lib/typescript/web/handlers/RotationGestureHandler.d.ts +0 -1
  327. package/lib/typescript/web/handlers/RotationGestureHandler.js +122 -0
  328. package/lib/typescript/web/handlers/TapGestureHandler.d.ts +1 -1
  329. package/lib/typescript/web/handlers/TapGestureHandler.d.ts.map +1 -1
  330. package/lib/typescript/web/handlers/TapGestureHandler.js +202 -0
  331. package/lib/typescript/web/interfaces.d.ts +0 -1
  332. package/lib/typescript/web/interfaces.js +25 -0
  333. package/lib/typescript/web/tools/CircularBuffer.d.ts +0 -1
  334. package/lib/typescript/web/tools/CircularBuffer.js +37 -0
  335. package/lib/typescript/web/tools/EventManager.d.ts +0 -1
  336. package/lib/typescript/web/tools/EventManager.js +85 -0
  337. package/lib/typescript/web/tools/GestureHandlerDelegate.d.ts +0 -1
  338. package/lib/typescript/web/tools/GestureHandlerDelegate.js +1 -0
  339. package/lib/typescript/web/tools/GestureHandlerOrchestrator.d.ts +0 -1
  340. package/lib/typescript/web/tools/GestureHandlerOrchestrator.d.ts.map +1 -1
  341. package/lib/typescript/web/tools/GestureHandlerOrchestrator.js +273 -0
  342. package/lib/typescript/web/tools/GestureHandlerWebDelegate.d.ts +0 -1
  343. package/lib/typescript/web/tools/GestureHandlerWebDelegate.js +169 -0
  344. package/lib/typescript/web/tools/InteractionManager.d.ts +0 -1
  345. package/lib/typescript/web/tools/InteractionManager.js +91 -0
  346. package/lib/typescript/web/tools/KeyboardEventManager.d.ts +0 -1
  347. package/lib/typescript/web/tools/KeyboardEventManager.js +73 -0
  348. package/lib/typescript/web/tools/LeastSquareSolver.d.ts +0 -1
  349. package/lib/typescript/web/tools/LeastSquareSolver.js +147 -0
  350. package/lib/typescript/web/tools/NodeManager.d.ts +0 -1
  351. package/lib/typescript/web/tools/NodeManager.js +28 -0
  352. package/lib/typescript/web/tools/PointerEventManager.d.ts +0 -1
  353. package/lib/typescript/web/tools/PointerEventManager.js +179 -0
  354. package/lib/typescript/web/tools/PointerTracker.d.ts +3 -4
  355. package/lib/typescript/web/tools/PointerTracker.d.ts.map +1 -1
  356. package/lib/typescript/web/tools/PointerTracker.js +161 -0
  357. package/lib/typescript/web/tools/Vector.d.ts +1 -2
  358. package/lib/typescript/web/tools/Vector.js +43 -0
  359. package/lib/typescript/web/tools/VelocityTracker.d.ts +0 -1
  360. package/lib/typescript/web/tools/VelocityTracker.js +76 -0
  361. package/lib/typescript/web/tools/WheelEventManager.d.ts +0 -1
  362. package/lib/typescript/web/tools/WheelEventManager.js +40 -0
  363. package/lib/typescript/web/utils.d.ts +0 -1
  364. package/lib/typescript/web/utils.js +233 -0
  365. package/lib/typescript/web_hammer/DiscreteGestureHandler.d.ts +0 -1
  366. package/lib/typescript/web_hammer/DiscreteGestureHandler.js +48 -0
  367. package/lib/typescript/web_hammer/DraggingGestureHandler.d.ts +0 -1
  368. package/lib/typescript/web_hammer/DraggingGestureHandler.js +25 -0
  369. package/lib/typescript/web_hammer/Errors.d.ts +0 -1
  370. package/lib/typescript/web_hammer/Errors.js +5 -0
  371. package/lib/typescript/web_hammer/FlingGestureHandler.d.ts +0 -1
  372. package/lib/typescript/web_hammer/FlingGestureHandler.js +119 -0
  373. package/lib/typescript/web_hammer/GestureHandler.d.ts +0 -1
  374. package/lib/typescript/web_hammer/GestureHandler.js +469 -0
  375. package/lib/typescript/web_hammer/IndiscreteGestureHandler.d.ts +0 -1
  376. package/lib/typescript/web_hammer/IndiscreteGestureHandler.js +26 -0
  377. package/lib/typescript/web_hammer/LongPressGestureHandler.d.ts +0 -1
  378. package/lib/typescript/web_hammer/LongPressGestureHandler.js +46 -0
  379. package/lib/typescript/web_hammer/NativeViewGestureHandler.d.ts +0 -1
  380. package/lib/typescript/web_hammer/NativeViewGestureHandler.js +40 -0
  381. package/lib/typescript/web_hammer/NodeManager.d.ts +0 -1
  382. package/lib/typescript/web_hammer/NodeManager.js +28 -0
  383. package/lib/typescript/web_hammer/PanGestureHandler.d.ts +0 -1
  384. package/lib/typescript/web_hammer/PanGestureHandler.js +151 -0
  385. package/lib/typescript/web_hammer/PinchGestureHandler.d.ts +0 -1
  386. package/lib/typescript/web_hammer/PinchGestureHandler.js +19 -0
  387. package/lib/typescript/web_hammer/PressGestureHandler.d.ts +0 -1
  388. package/lib/typescript/web_hammer/PressGestureHandler.js +133 -0
  389. package/lib/typescript/web_hammer/RotationGestureHandler.d.ts +0 -1
  390. package/lib/typescript/web_hammer/RotationGestureHandler.js +20 -0
  391. package/lib/typescript/web_hammer/TapGestureHandler.d.ts +0 -1
  392. package/lib/typescript/web_hammer/TapGestureHandler.js +142 -0
  393. package/lib/typescript/web_hammer/constants.d.ts +0 -1
  394. package/lib/typescript/web_hammer/constants.js +42 -0
  395. package/lib/typescript/web_hammer/utils.d.ts +0 -1
  396. package/lib/typescript/web_hammer/utils.js +15 -0
  397. package/package.json +4 -2
  398. package/src/components/Pressable/Pressable.tsx +357 -445
  399. package/src/components/Pressable/PressableProps.tsx +15 -0
  400. package/src/components/Pressable/StateMachine.tsx +49 -0
  401. package/src/components/Pressable/stateDefinitions.ts +125 -0
  402. package/src/components/Pressable/utils.ts +11 -7
  403. package/src/handlers/GestureHandlerEventPayload.ts +3 -0
  404. package/src/handlers/gestureHandlerTypesCompat.ts +9 -0
  405. package/src/handlers/gestures/forceTouchGesture.ts +9 -0
  406. package/src/handlers/gestures/gestureObjects.ts +3 -1
  407. package/src/web/detectors/RotationGestureDetector.ts +4 -0
  408. package/src/web/handlers/FlingGestureHandler.ts +4 -0
  409. package/src/web/handlers/GestureHandler.ts +9 -3
  410. package/src/web/handlers/PanGestureHandler.ts +25 -36
  411. package/src/web/handlers/TapGestureHandler.ts +14 -19
  412. package/src/web/tools/GestureHandlerOrchestrator.ts +1 -0
  413. package/src/web/tools/PointerEventManager.ts +1 -1
  414. package/src/web/tools/PointerTracker.ts +17 -15
  415. package/src/web/tools/Vector.ts +1 -1
@@ -0,0 +1,400 @@
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
+ });
@@ -181,4 +181,3 @@ export default class Swipeable extends Component<SwipeableProps, SwipeableState>
181
181
  render(): React.JSX.Element;
182
182
  }
183
183
  export {};
184
- //# sourceMappingURL=Swipeable.d.ts.map
@@ -0,0 +1,287 @@
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
+ });
@@ -2,4 +2,3 @@ import React from 'react';
2
2
  import { Text as RNText, TextProps as RNTextProps } from 'react-native';
3
3
  export declare const Text: React.ForwardRefExoticComponent<RNTextProps & React.RefAttributes<RNText>>;
4
4
  export type Text = typeof Text & RNText;
5
- //# sourceMappingURL=Text.d.ts.map