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,417 @@
1
+ // This component is based on RN's DrawerLayoutAndroid API
2
+ //
3
+ // It perhaps deserves to be put in a separate repo, but since it relies on
4
+ // react-native-gesture-handler library which isn't very popular at the moment I
5
+ // decided to keep it here for the time being. It will allow us to move faster
6
+ // and fix issues that may arise in gesture handler library that could be found
7
+ // when using the drawer component
8
+ import * as React from 'react';
9
+ import { Component } from 'react';
10
+ import invariant from 'invariant';
11
+ import { Animated, StyleSheet, View, Keyboard, StatusBar, I18nManager, } from 'react-native';
12
+ import { PanGestureHandler } from '../handlers/PanGestureHandler';
13
+ import { TapGestureHandler } from '../handlers/TapGestureHandler';
14
+ import { State } from '../State';
15
+ const DRAG_TOSS = 0.05;
16
+ const IDLE = 'Idle';
17
+ const DRAGGING = 'Dragging';
18
+ const SETTLING = 'Settling';
19
+ /**
20
+ * @deprecated use Reanimated version of DrawerLayout instead
21
+ */
22
+ export default class DrawerLayout extends Component {
23
+ static defaultProps = {
24
+ drawerWidth: 200,
25
+ drawerPosition: 'left',
26
+ useNativeAnimations: true,
27
+ drawerType: 'front',
28
+ edgeWidth: 20,
29
+ minSwipeDistance: 3,
30
+ overlayColor: 'rgba(0, 0, 0, 0.7)',
31
+ drawerLockMode: 'unlocked',
32
+ enableTrackpadTwoFingerGesture: false,
33
+ };
34
+ constructor(props) {
35
+ super(props);
36
+ const dragX = new Animated.Value(0);
37
+ const touchX = new Animated.Value(0);
38
+ const drawerTranslation = new Animated.Value(0);
39
+ this.state = {
40
+ dragX,
41
+ touchX,
42
+ drawerTranslation,
43
+ containerWidth: 0,
44
+ drawerState: IDLE,
45
+ drawerOpened: false,
46
+ };
47
+ this.updateAnimatedEvent(props, this.state);
48
+ }
49
+ shouldComponentUpdate(props, state) {
50
+ if (this.props.drawerPosition !== props.drawerPosition ||
51
+ this.props.drawerWidth !== props.drawerWidth ||
52
+ this.props.drawerType !== props.drawerType ||
53
+ this.state.containerWidth !== state.containerWidth) {
54
+ this.updateAnimatedEvent(props, state);
55
+ }
56
+ return true;
57
+ }
58
+ openValue;
59
+ onGestureEvent;
60
+ accessibilityIsModalView = React.createRef();
61
+ pointerEventsView = React.createRef();
62
+ panGestureHandler = React.createRef();
63
+ drawerShown = false;
64
+ static positions = {
65
+ Left: 'left',
66
+ Right: 'right',
67
+ };
68
+ updateAnimatedEvent = (props, state) => {
69
+ // Event definition is based on
70
+ const { drawerPosition, drawerWidth, drawerType } = props;
71
+ const { dragX: dragXValue, touchX: touchXValue, drawerTranslation, containerWidth, } = state;
72
+ let dragX = dragXValue;
73
+ let touchX = touchXValue;
74
+ if (drawerPosition !== 'left') {
75
+ // Most of the code is written in a way to handle left-side drawer. In
76
+ // order to handle right-side drawer the only thing we need to do is to
77
+ // reverse events coming from gesture handler in a way they emulate
78
+ // left-side drawer gestures. E.g. dragX is simply -dragX, and touchX is
79
+ // calulcated by subtracing real touchX from the width of the container
80
+ // (such that when touch happens at the right edge the value is simply 0)
81
+ dragX = Animated.multiply(new Animated.Value(-1), dragXValue); // TODO(TS): (for all "as" in this file) make sure we can map this
82
+ touchX = Animated.add(new Animated.Value(containerWidth), Animated.multiply(new Animated.Value(-1), touchXValue)); // TODO(TS): make sure we can map this;
83
+ touchXValue.setValue(containerWidth);
84
+ }
85
+ else {
86
+ touchXValue.setValue(0);
87
+ }
88
+ // While closing the drawer when user starts gesture outside of its area (in greyed
89
+ // out part of the window), we want the drawer to follow only once finger reaches the
90
+ // edge of the drawer.
91
+ // E.g. on the diagram below drawer is illustrate by X signs and the greyed out area by
92
+ // dots. The touch gesture starts at '*' and moves left, touch path is indicated by
93
+ // an arrow pointing left
94
+ // 1) +---------------+ 2) +---------------+ 3) +---------------+ 4) +---------------+
95
+ // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|
96
+ // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|
97
+ // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|
98
+ // |XXXXXXXX|......| |XXXXXXXX|.<-*..| |XXXXXXXX|<--*..| |XXXXX|<-----*..|
99
+ // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|
100
+ // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|
101
+ // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|
102
+ // +---------------+ +---------------+ +---------------+ +---------------+
103
+ //
104
+ // For the above to work properly we define animated value that will keep
105
+ // start position of the gesture. Then we use that value to calculate how
106
+ // much we need to subtract from the dragX. If the gesture started on the
107
+ // greyed out area we take the distance from the edge of the drawer to the
108
+ // start position. Otherwise we don't subtract at all and the drawer be
109
+ // pulled back as soon as you start the pan.
110
+ //
111
+ // This is used only when drawerType is "front"
112
+ //
113
+ let translationX = dragX;
114
+ if (drawerType === 'front') {
115
+ const startPositionX = Animated.add(touchX, Animated.multiply(new Animated.Value(-1), dragX));
116
+ const dragOffsetFromOnStartPosition = startPositionX.interpolate({
117
+ inputRange: [drawerWidth - 1, drawerWidth, drawerWidth + 1],
118
+ outputRange: [0, 0, 1],
119
+ });
120
+ translationX = Animated.add(dragX, dragOffsetFromOnStartPosition); // TODO: as above
121
+ }
122
+ this.openValue = Animated.add(translationX, drawerTranslation).interpolate({
123
+ inputRange: [0, drawerWidth],
124
+ outputRange: [0, 1],
125
+ extrapolate: 'clamp',
126
+ });
127
+ const gestureOptions = {
128
+ useNativeDriver: props.useNativeAnimations,
129
+ };
130
+ if (this.props.onDrawerSlide) {
131
+ gestureOptions.listener = (ev) => {
132
+ const translationX = Math.floor(Math.abs(ev.nativeEvent.translationX));
133
+ const position = translationX / this.state.containerWidth;
134
+ this.props.onDrawerSlide?.(position);
135
+ };
136
+ }
137
+ this.onGestureEvent = Animated.event([{ nativeEvent: { translationX: dragXValue, x: touchXValue } }], gestureOptions);
138
+ };
139
+ handleContainerLayout = ({ nativeEvent }) => {
140
+ this.setState({ containerWidth: nativeEvent.layout.width });
141
+ };
142
+ emitStateChanged = (newState, drawerWillShow) => {
143
+ this.props.onDrawerStateChanged?.(newState, drawerWillShow);
144
+ };
145
+ openingHandlerStateChange = ({ nativeEvent, }) => {
146
+ if (nativeEvent.oldState === State.ACTIVE) {
147
+ this.handleRelease({ nativeEvent });
148
+ }
149
+ else if (nativeEvent.state === State.ACTIVE) {
150
+ this.emitStateChanged(DRAGGING, false);
151
+ this.setState({ drawerState: DRAGGING });
152
+ if (this.props.keyboardDismissMode === 'on-drag') {
153
+ Keyboard.dismiss();
154
+ }
155
+ if (this.props.hideStatusBar) {
156
+ StatusBar.setHidden(true, this.props.statusBarAnimation || 'slide');
157
+ }
158
+ }
159
+ };
160
+ onTapHandlerStateChange = ({ nativeEvent, }) => {
161
+ if (this.drawerShown &&
162
+ nativeEvent.oldState === State.ACTIVE &&
163
+ this.props.drawerLockMode !== 'locked-open') {
164
+ this.closeDrawer();
165
+ }
166
+ };
167
+ handleRelease = ({ nativeEvent, }) => {
168
+ const { drawerWidth, drawerPosition, drawerType } = this.props;
169
+ const { containerWidth } = this.state;
170
+ let { translationX: dragX, velocityX, x: touchX } = nativeEvent;
171
+ if (drawerPosition !== 'left') {
172
+ // See description in _updateAnimatedEvent about why events are flipped
173
+ // for right-side drawer
174
+ dragX = -dragX;
175
+ touchX = containerWidth - touchX;
176
+ velocityX = -velocityX;
177
+ }
178
+ const gestureStartX = touchX - dragX;
179
+ let dragOffsetBasedOnStart = 0;
180
+ if (drawerType === 'front') {
181
+ dragOffsetBasedOnStart =
182
+ gestureStartX > drawerWidth ? gestureStartX - drawerWidth : 0;
183
+ }
184
+ const startOffsetX = dragX + dragOffsetBasedOnStart + (this.drawerShown ? drawerWidth : 0);
185
+ const projOffsetX = startOffsetX + DRAG_TOSS * velocityX;
186
+ const shouldOpen = projOffsetX > drawerWidth / 2;
187
+ if (shouldOpen) {
188
+ this.animateDrawer(startOffsetX, drawerWidth, velocityX);
189
+ }
190
+ else {
191
+ this.animateDrawer(startOffsetX, 0, velocityX);
192
+ }
193
+ };
194
+ updateShowing = (showing) => {
195
+ this.drawerShown = showing;
196
+ this.accessibilityIsModalView.current?.setNativeProps({
197
+ accessibilityViewIsModal: showing,
198
+ });
199
+ this.pointerEventsView.current?.setNativeProps({
200
+ pointerEvents: showing ? 'auto' : 'none',
201
+ });
202
+ const { drawerPosition, minSwipeDistance, edgeWidth } = this.props;
203
+ const fromLeft = drawerPosition === 'left';
204
+ // gestureOrientation is 1 if the expected gesture is from left to right and
205
+ // -1 otherwise e.g. when drawer is on the left and is closed we expect left
206
+ // to right gesture, thus orientation will be 1.
207
+ const gestureOrientation = (fromLeft ? 1 : -1) * (this.drawerShown ? -1 : 1);
208
+ // When drawer is closed we want the hitSlop to be horizontally shorter than
209
+ // the container size by the value of SLOP. This will make it only activate
210
+ // when gesture happens not further than SLOP away from the edge
211
+ const hitSlop = fromLeft
212
+ ? { left: 0, width: showing ? undefined : edgeWidth }
213
+ : { right: 0, width: showing ? undefined : edgeWidth };
214
+ // @ts-ignore internal API, maybe could be fixed in handler types
215
+ this.panGestureHandler.current?.setNativeProps({
216
+ hitSlop,
217
+ activeOffsetX: gestureOrientation * minSwipeDistance,
218
+ });
219
+ };
220
+ animateDrawer = (fromValue, toValue, velocity, speed) => {
221
+ this.state.dragX.setValue(0);
222
+ this.state.touchX.setValue(this.props.drawerPosition === 'left' ? 0 : this.state.containerWidth);
223
+ if (fromValue != null) {
224
+ let nextFramePosition = fromValue;
225
+ if (this.props.useNativeAnimations) {
226
+ // When using native driver, we predict the next position of the
227
+ // animation because it takes one frame of a roundtrip to pass RELEASE
228
+ // event from native driver to JS before we can start animating. Without
229
+ // it, it is more noticable that the frame is dropped.
230
+ if (fromValue < toValue && velocity > 0) {
231
+ nextFramePosition = Math.min(fromValue + velocity / 60.0, toValue);
232
+ }
233
+ else if (fromValue > toValue && velocity < 0) {
234
+ nextFramePosition = Math.max(fromValue + velocity / 60.0, toValue);
235
+ }
236
+ }
237
+ this.state.drawerTranslation.setValue(nextFramePosition);
238
+ }
239
+ const willShow = toValue !== 0;
240
+ this.updateShowing(willShow);
241
+ this.emitStateChanged(SETTLING, willShow);
242
+ this.setState({ drawerState: SETTLING });
243
+ if (this.props.hideStatusBar) {
244
+ StatusBar.setHidden(willShow, this.props.statusBarAnimation || 'slide');
245
+ }
246
+ Animated.spring(this.state.drawerTranslation, {
247
+ velocity,
248
+ bounciness: 0,
249
+ toValue,
250
+ useNativeDriver: this.props.useNativeAnimations,
251
+ speed: speed ?? undefined,
252
+ }).start(({ finished }) => {
253
+ if (finished) {
254
+ this.emitStateChanged(IDLE, willShow);
255
+ this.setState({ drawerOpened: willShow });
256
+ if (this.state.drawerState !== DRAGGING) {
257
+ // It's possilbe that user started drag while the drawer
258
+ // was settling, don't override state in this case
259
+ this.setState({ drawerState: IDLE });
260
+ }
261
+ if (willShow) {
262
+ this.props.onDrawerOpen?.();
263
+ }
264
+ else {
265
+ this.props.onDrawerClose?.();
266
+ }
267
+ }
268
+ });
269
+ };
270
+ // eslint-disable-next-line @eslint-react/no-unused-class-component-members
271
+ openDrawer = (options = {}) => {
272
+ this.animateDrawer(
273
+ // TODO: decide if it should be null or undefined is the proper value
274
+ undefined, this.props.drawerWidth, options.velocity ? options.velocity : 0, options.speed);
275
+ // We need to force the update, otherwise the overlay is not rerendered and
276
+ // it would not be clickable
277
+ this.forceUpdate();
278
+ };
279
+ closeDrawer = (options = {}) => {
280
+ // TODO: decide if it should be null or undefined is the proper value
281
+ this.animateDrawer(undefined, 0, options.velocity ? options.velocity : 0, options.speed);
282
+ // We need to force the update, otherwise the overlay is not rerendered and
283
+ // it would be still clickable
284
+ this.forceUpdate();
285
+ };
286
+ renderOverlay = () => {
287
+ /* Overlay styles */
288
+ invariant(this.openValue, 'should be set');
289
+ let overlayOpacity;
290
+ if (this.state.drawerState !== IDLE) {
291
+ overlayOpacity = this.openValue;
292
+ }
293
+ else {
294
+ overlayOpacity = this.state.drawerOpened ? 1 : 0;
295
+ }
296
+ const dynamicOverlayStyles = {
297
+ opacity: overlayOpacity,
298
+ backgroundColor: this.props.overlayColor,
299
+ };
300
+ return (<TapGestureHandler onHandlerStateChange={this.onTapHandlerStateChange}>
301
+ <Animated.View pointerEvents={this.drawerShown ? 'auto' : 'none'} ref={this.pointerEventsView} style={[styles.overlay, dynamicOverlayStyles]}/>
302
+ </TapGestureHandler>);
303
+ };
304
+ renderDrawer = () => {
305
+ const { drawerBackgroundColor, drawerWidth, drawerPosition, drawerType, drawerContainerStyle, contentContainerStyle, } = this.props;
306
+ const fromLeft = drawerPosition === 'left';
307
+ const drawerSlide = drawerType !== 'back';
308
+ const containerSlide = drawerType !== 'front';
309
+ // We rely on row and row-reverse flex directions to position the drawer
310
+ // properly. Apparently for RTL these are flipped which requires us to use
311
+ // the opposite setting for the drawer to appear from left or right
312
+ // according to the drawerPosition prop
313
+ const reverseContentDirection = I18nManager.isRTL ? fromLeft : !fromLeft;
314
+ const dynamicDrawerStyles = {
315
+ backgroundColor: drawerBackgroundColor,
316
+ width: drawerWidth,
317
+ };
318
+ const openValue = this.openValue;
319
+ invariant(openValue, 'should be set');
320
+ let containerStyles;
321
+ if (containerSlide) {
322
+ const containerTranslateX = openValue.interpolate({
323
+ inputRange: [0, 1],
324
+ outputRange: fromLeft ? [0, drawerWidth] : [0, -drawerWidth],
325
+ extrapolate: 'clamp',
326
+ });
327
+ containerStyles = {
328
+ transform: [{ translateX: containerTranslateX }],
329
+ };
330
+ }
331
+ let drawerTranslateX = 0;
332
+ if (drawerSlide) {
333
+ const closedDrawerOffset = fromLeft ? -drawerWidth : drawerWidth;
334
+ if (this.state.drawerState !== IDLE) {
335
+ drawerTranslateX = openValue.interpolate({
336
+ inputRange: [0, 1],
337
+ outputRange: [closedDrawerOffset, 0],
338
+ extrapolate: 'clamp',
339
+ });
340
+ }
341
+ else {
342
+ drawerTranslateX = this.state.drawerOpened ? 0 : closedDrawerOffset;
343
+ }
344
+ }
345
+ const drawerStyles = {
346
+ transform: [{ translateX: drawerTranslateX }],
347
+ flexDirection: reverseContentDirection ? 'row-reverse' : 'row',
348
+ };
349
+ return (<Animated.View style={styles.main} onLayout={this.handleContainerLayout}>
350
+ <Animated.View style={[
351
+ drawerType === 'front'
352
+ ? styles.containerOnBack
353
+ : styles.containerInFront,
354
+ containerStyles,
355
+ contentContainerStyle,
356
+ ]} importantForAccessibility={this.drawerShown ? 'no-hide-descendants' : 'yes'}>
357
+ {typeof this.props.children === 'function'
358
+ ? this.props.children(this.openValue)
359
+ : this.props.children}
360
+ {this.renderOverlay()}
361
+ </Animated.View>
362
+ <Animated.View pointerEvents="box-none" ref={this.accessibilityIsModalView} accessibilityViewIsModal={this.drawerShown} style={[styles.drawerContainer, drawerStyles, drawerContainerStyle]}>
363
+ <View style={dynamicDrawerStyles}>
364
+ {this.props.renderNavigationView(this.openValue)}
365
+ </View>
366
+ </Animated.View>
367
+ </Animated.View>);
368
+ };
369
+ setPanGestureRef = (ref) => {
370
+ // TODO(TS): make sure it is OK taken from
371
+ // https://github.com/DefinitelyTyped/DefinitelyTyped/issues/31065#issuecomment-596081842
372
+ this.panGestureHandler.current = ref;
373
+ this.props.onGestureRef?.(ref);
374
+ };
375
+ render() {
376
+ const { drawerPosition, drawerLockMode, edgeWidth, minSwipeDistance } = this.props;
377
+ const fromLeft = drawerPosition === 'left';
378
+ // gestureOrientation is 1 if the expected gesture is from left to right and
379
+ // -1 otherwise e.g. when drawer is on the left and is closed we expect left
380
+ // to right gesture, thus orientation will be 1.
381
+ const gestureOrientation = (fromLeft ? 1 : -1) * (this.drawerShown ? -1 : 1);
382
+ // When drawer is closed we want the hitSlop to be horizontally shorter than
383
+ // the container size by the value of SLOP. This will make it only activate
384
+ // when gesture happens not further than SLOP away from the edge
385
+ const hitSlop = fromLeft
386
+ ? { left: 0, width: this.drawerShown ? undefined : edgeWidth }
387
+ : { right: 0, width: this.drawerShown ? undefined : edgeWidth };
388
+ return (<PanGestureHandler
389
+ // @ts-ignore could be fixed in handler types
390
+ userSelect={this.props.userSelect} activeCursor={this.props.activeCursor} mouseButton={this.props.mouseButton} enableContextMenu={this.props.enableContextMenu} ref={this.setPanGestureRef} hitSlop={hitSlop} activeOffsetX={gestureOrientation * minSwipeDistance} failOffsetY={[-15, 15]} onGestureEvent={this.onGestureEvent} onHandlerStateChange={this.openingHandlerStateChange} enableTrackpadTwoFingerGesture={this.props.enableTrackpadTwoFingerGesture} enabled={drawerLockMode !== 'locked-closed' && drawerLockMode !== 'locked-open'}>
391
+ {this.renderDrawer()}
392
+ </PanGestureHandler>);
393
+ }
394
+ }
395
+ const styles = StyleSheet.create({
396
+ drawerContainer: {
397
+ ...StyleSheet.absoluteFillObject,
398
+ zIndex: 1001,
399
+ flexDirection: 'row',
400
+ },
401
+ containerInFront: {
402
+ ...StyleSheet.absoluteFillObject,
403
+ zIndex: 1002,
404
+ },
405
+ containerOnBack: {
406
+ ...StyleSheet.absoluteFillObject,
407
+ },
408
+ main: {
409
+ flex: 1,
410
+ zIndex: 0,
411
+ overflow: 'hidden',
412
+ },
413
+ overlay: {
414
+ ...StyleSheet.absoluteFillObject,
415
+ zIndex: 1000,
416
+ },
417
+ });
@@ -5,4 +5,3 @@ export declare const BaseButton: React.ForwardRefExoticComponent<Omit<BaseButton
5
5
  export declare const RectButton: React.ForwardRefExoticComponent<Omit<RectButtonProps, "innerRef"> & React.RefAttributes<React.ComponentType<{}>>>;
6
6
  export declare const BorderlessButton: React.ForwardRefExoticComponent<Omit<BorderlessButtonProps, "innerRef"> & React.RefAttributes<React.ComponentType<{}>>>;
7
7
  export { default as PureNativeButton } from './GestureHandlerButton';
8
- //# sourceMappingURL=GestureButtons.d.ts.map
@@ -0,0 +1,165 @@
1
+ import * as React from 'react';
2
+ import { Animated, Platform, processColor, StyleSheet } from 'react-native';
3
+ import createNativeWrapper from '../handlers/createNativeWrapper';
4
+ import GestureHandlerButton from './GestureHandlerButton';
5
+ import { State } from '../State';
6
+ import { isFabric } from '../utils';
7
+ export const RawButton = createNativeWrapper(GestureHandlerButton, {
8
+ shouldCancelWhenOutside: false,
9
+ shouldActivateOnStart: false,
10
+ });
11
+ let IS_FABRIC = null;
12
+ class InnerBaseButton extends React.Component {
13
+ static defaultProps = {
14
+ delayLongPress: 600,
15
+ };
16
+ lastActive;
17
+ longPressTimeout;
18
+ longPressDetected;
19
+ constructor(props) {
20
+ super(props);
21
+ this.lastActive = false;
22
+ this.longPressDetected = false;
23
+ }
24
+ handleEvent = ({ nativeEvent, }) => {
25
+ const { state, oldState, pointerInside } = nativeEvent;
26
+ const active = pointerInside && state === State.ACTIVE;
27
+ if (active !== this.lastActive && this.props.onActiveStateChange) {
28
+ this.props.onActiveStateChange(active);
29
+ }
30
+ if (!this.longPressDetected &&
31
+ oldState === State.ACTIVE &&
32
+ state !== State.CANCELLED &&
33
+ this.lastActive &&
34
+ this.props.onPress) {
35
+ this.props.onPress(pointerInside);
36
+ }
37
+ if (!this.lastActive &&
38
+ // NativeViewGestureHandler sends different events based on platform
39
+ state === (Platform.OS !== 'android' ? State.ACTIVE : State.BEGAN) &&
40
+ pointerInside) {
41
+ this.longPressDetected = false;
42
+ if (this.props.onLongPress) {
43
+ this.longPressTimeout = setTimeout(this.onLongPress, this.props.delayLongPress);
44
+ }
45
+ }
46
+ else if (
47
+ // Cancel longpress timeout if it's set and the finger moved out of the view
48
+ state === State.ACTIVE &&
49
+ !pointerInside &&
50
+ this.longPressTimeout !== undefined) {
51
+ clearTimeout(this.longPressTimeout);
52
+ this.longPressTimeout = undefined;
53
+ }
54
+ else if (
55
+ // Cancel longpress timeout if it's set and the gesture has finished
56
+ this.longPressTimeout !== undefined &&
57
+ (state === State.END ||
58
+ state === State.CANCELLED ||
59
+ state === State.FAILED)) {
60
+ clearTimeout(this.longPressTimeout);
61
+ this.longPressTimeout = undefined;
62
+ }
63
+ this.lastActive = active;
64
+ };
65
+ onLongPress = () => {
66
+ this.longPressDetected = true;
67
+ this.props.onLongPress?.();
68
+ };
69
+ // Normally, the parent would execute it's handler first, then forward the
70
+ // event to listeners. However, here our handler is virtually only forwarding
71
+ // events to listeners, so we reverse the order to keep the proper order of
72
+ // the callbacks (from "raw" ones to "processed").
73
+ onHandlerStateChange = (e) => {
74
+ this.props.onHandlerStateChange?.(e);
75
+ this.handleEvent(e);
76
+ };
77
+ onGestureEvent = (e) => {
78
+ this.props.onGestureEvent?.(e);
79
+ this.handleEvent(e); // TODO: maybe it is not correct
80
+ };
81
+ render() {
82
+ const { rippleColor: unprocessedRippleColor, style, ...rest } = this.props;
83
+ if (IS_FABRIC === null) {
84
+ IS_FABRIC = isFabric();
85
+ }
86
+ const rippleColor = IS_FABRIC
87
+ ? unprocessedRippleColor
88
+ : processColor(unprocessedRippleColor ?? undefined);
89
+ return (<RawButton ref={this.props.innerRef} rippleColor={rippleColor} style={[style, Platform.OS === 'ios' && { cursor: undefined }]} {...rest} onGestureEvent={this.onGestureEvent} onHandlerStateChange={this.onHandlerStateChange}/>);
90
+ }
91
+ }
92
+ const AnimatedInnerBaseButton = Animated.createAnimatedComponent(InnerBaseButton);
93
+ export const BaseButton = React.forwardRef((props, ref) => <InnerBaseButton innerRef={ref} {...props}/>);
94
+ const AnimatedBaseButton = React.forwardRef((props, ref) => <AnimatedInnerBaseButton innerRef={ref} {...props}/>);
95
+ const btnStyles = StyleSheet.create({
96
+ underlay: {
97
+ position: 'absolute',
98
+ left: 0,
99
+ right: 0,
100
+ bottom: 0,
101
+ top: 0,
102
+ },
103
+ });
104
+ class InnerRectButton extends React.Component {
105
+ static defaultProps = {
106
+ activeOpacity: 0.105,
107
+ underlayColor: 'black',
108
+ };
109
+ opacity;
110
+ constructor(props) {
111
+ super(props);
112
+ this.opacity = new Animated.Value(0);
113
+ }
114
+ onActiveStateChange = (active) => {
115
+ if (Platform.OS !== 'android') {
116
+ this.opacity.setValue(active ? this.props.activeOpacity : 0);
117
+ }
118
+ this.props.onActiveStateChange?.(active);
119
+ };
120
+ render() {
121
+ const { children, style, ...rest } = this.props;
122
+ const resolvedStyle = StyleSheet.flatten(style) ?? {};
123
+ return (<BaseButton {...rest} ref={this.props.innerRef} style={resolvedStyle} onActiveStateChange={this.onActiveStateChange}>
124
+ <Animated.View style={[
125
+ btnStyles.underlay,
126
+ {
127
+ opacity: this.opacity,
128
+ backgroundColor: this.props.underlayColor,
129
+ borderRadius: resolvedStyle.borderRadius,
130
+ borderTopLeftRadius: resolvedStyle.borderTopLeftRadius,
131
+ borderTopRightRadius: resolvedStyle.borderTopRightRadius,
132
+ borderBottomLeftRadius: resolvedStyle.borderBottomLeftRadius,
133
+ borderBottomRightRadius: resolvedStyle.borderBottomRightRadius,
134
+ },
135
+ ]}/>
136
+ {children}
137
+ </BaseButton>);
138
+ }
139
+ }
140
+ export const RectButton = React.forwardRef((props, ref) => <InnerRectButton innerRef={ref} {...props}/>);
141
+ class InnerBorderlessButton extends React.Component {
142
+ static defaultProps = {
143
+ activeOpacity: 0.3,
144
+ borderless: true,
145
+ };
146
+ opacity;
147
+ constructor(props) {
148
+ super(props);
149
+ this.opacity = new Animated.Value(1);
150
+ }
151
+ onActiveStateChange = (active) => {
152
+ if (Platform.OS !== 'android') {
153
+ this.opacity.setValue(active ? this.props.activeOpacity : 1);
154
+ }
155
+ this.props.onActiveStateChange?.(active);
156
+ };
157
+ render() {
158
+ const { children, style, innerRef, ...rest } = this.props;
159
+ return (<AnimatedBaseButton {...rest} innerRef={innerRef} onActiveStateChange={this.onActiveStateChange} style={[style, Platform.OS === 'ios' && { opacity: this.opacity }]}>
160
+ {children}
161
+ </AnimatedBaseButton>);
162
+ }
163
+ }
164
+ export const BorderlessButton = React.forwardRef((props, ref) => <InnerBorderlessButton innerRef={ref} {...props}/>);
165
+ export { default as PureNativeButton } from './GestureHandlerButton';
@@ -113,4 +113,3 @@ export interface BorderlessButtonProps extends BaseButtonProps {
113
113
  export interface BorderlessButtonWithRefProps extends BorderlessButtonProps, ButtonWithRefProps {
114
114
  }
115
115
  export {};
116
- //# sourceMappingURL=GestureButtonsProps.d.ts.map
@@ -0,0 +1 @@
1
+ export {};
@@ -20,4 +20,3 @@ export type DrawerLayoutAndroid = typeof DrawerLayoutAndroid & RNDrawerLayoutAnd
20
20
  export declare const FlatList: <ItemT = any>(props: PropsWithChildren<Omit<RNFlatListProps<ItemT>, "renderScrollComponent"> & RefAttributes<FlatList<ItemT>> & NativeViewGestureHandlerProps>, ref?: ForwardedRef<FlatList<ItemT>>) => ReactElement | null;
21
21
  export type FlatList<ItemT = any> = typeof FlatList & RNFlatList<ItemT>;
22
22
  export {};
23
- //# sourceMappingURL=GestureComponents.d.ts.map
@@ -0,0 +1,67 @@
1
+ import * as React from 'react';
2
+ import { ScrollView as RNScrollView, Switch as RNSwitch, TextInput as RNTextInput, DrawerLayoutAndroid as RNDrawerLayoutAndroid, FlatList as RNFlatList, RefreshControl as RNRefreshControl, } from 'react-native';
3
+ import createNativeWrapper from '../handlers/createNativeWrapper';
4
+ import { nativeViewProps, } from '../handlers/NativeViewGestureHandler';
5
+ import { toArray } from '../utils';
6
+ export const RefreshControl = createNativeWrapper(RNRefreshControl, {
7
+ disallowInterruption: true,
8
+ shouldCancelWhenOutside: false,
9
+ });
10
+ const GHScrollView = createNativeWrapper(RNScrollView, {
11
+ disallowInterruption: true,
12
+ shouldCancelWhenOutside: false,
13
+ });
14
+ export const ScrollView = React.forwardRef((props, ref) => {
15
+ const refreshControlGestureRef = React.useRef(null);
16
+ const { refreshControl, waitFor, ...rest } = props;
17
+ return (<GHScrollView {...rest}
18
+ // @ts-ignore `ref` exists on `GHScrollView`
19
+ ref={ref} waitFor={[...toArray(waitFor ?? []), refreshControlGestureRef]}
20
+ // @ts-ignore we don't pass `refreshing` prop as we only want to override the ref
21
+ refreshControl={refreshControl
22
+ ? React.cloneElement(refreshControl, {
23
+ // @ts-ignore for reasons unknown to me, `ref` doesn't exist on the type inferred by TS
24
+ ref: refreshControlGestureRef,
25
+ })
26
+ : undefined}/>);
27
+ });
28
+ export const Switch = createNativeWrapper(RNSwitch, {
29
+ shouldCancelWhenOutside: false,
30
+ shouldActivateOnStart: true,
31
+ disallowInterruption: true,
32
+ });
33
+ export const TextInput = createNativeWrapper(RNTextInput);
34
+ export const DrawerLayoutAndroid = createNativeWrapper(RNDrawerLayoutAndroid, { disallowInterruption: true });
35
+ export const FlatList = React.forwardRef((props, ref) => {
36
+ const refreshControlGestureRef = React.useRef(null);
37
+ const { waitFor, refreshControl, ...rest } = props;
38
+ const flatListProps = {};
39
+ const scrollViewProps = {};
40
+ for (const [propName, value] of Object.entries(rest)) {
41
+ // https://github.com/microsoft/TypeScript/issues/26255
42
+ if (nativeViewProps.includes(propName)) {
43
+ // @ts-ignore - this function cannot have generic type so we have to ignore this error
44
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
45
+ scrollViewProps[propName] = value;
46
+ }
47
+ else {
48
+ // @ts-ignore - this function cannot have generic type so we have to ignore this error
49
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
50
+ flatListProps[propName] = value;
51
+ }
52
+ }
53
+ return (
54
+ // @ts-ignore - this function cannot have generic type so we have to ignore this error
55
+ <RNFlatList ref={ref} {...flatListProps} renderScrollComponent={(scrollProps) => (<ScrollView {...{
56
+ ...scrollProps,
57
+ ...scrollViewProps,
58
+ waitFor: [...toArray(waitFor ?? []), refreshControlGestureRef],
59
+ }}/>)}
60
+ // @ts-ignore we don't pass `refreshing` prop as we only want to override the ref
61
+ refreshControl={refreshControl
62
+ ? React.cloneElement(refreshControl, {
63
+ // @ts-ignore for reasons unknown to me, `ref` doesn't exist on the type inferred by TS
64
+ ref: refreshControlGestureRef,
65
+ })
66
+ : undefined}/>);
67
+ });
@@ -6,4 +6,3 @@ export declare const TextInput: React.ForwardRefExoticComponent<import("react-na
6
6
  export declare const DrawerLayoutAndroid: () => React.JSX.Element;
7
7
  export declare const RefreshControl: React.ForwardRefExoticComponent<import("react-native").ViewProps & import("..").NativeViewGestureHandlerProps & React.RefAttributes<React.ComponentType<any>>>;
8
8
  export declare const FlatList: React.ForwardRefExoticComponent<FlatListProps<unknown> & React.RefAttributes<unknown>>;
9
- //# sourceMappingURL=GestureComponents.web.d.ts.map