react-native-gesture-handler 2.23.0 → 2.24.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (633) hide show
  1. package/RNGestureHandler.podspec +8 -0
  2. package/android/build.gradle +9 -3
  3. package/android/paper/src/main/java/com/facebook/react/viewmanagers/RNGestureHandlerButtonManagerInterface.java +2 -1
  4. package/android/paper/src/main/java/com/facebook/react/viewmanagers/RNGestureHandlerRootViewManagerInterface.java +2 -1
  5. package/android/paper77/src/main/java/com/facebook/react/viewmanagers/RNGestureHandlerButtonManagerDelegate.java +60 -0
  6. package/android/paper77/src/main/java/com/facebook/react/viewmanagers/RNGestureHandlerButtonManagerInterface.java +26 -0
  7. package/android/paper77/src/main/java/com/facebook/react/viewmanagers/RNGestureHandlerRootViewManagerDelegate.java +26 -0
  8. package/android/paper77/src/main/java/com/facebook/react/viewmanagers/RNGestureHandlerRootViewManagerInterface.java +16 -0
  9. package/android/paper77/src/main/java/com/swmansion/gesturehandler/NativeRNGestureHandlerModuleSpec.java +67 -0
  10. package/android/paper77/src/main/java/com/swmansion/gesturehandler/ReactContextExtensions.kt +13 -0
  11. package/apple/RNGestureHandlerButton.mm +12 -2
  12. package/lib/commonjs/ActionType.js +3 -3
  13. package/lib/commonjs/ActionType.js.map +1 -1
  14. package/lib/commonjs/Directions.js +8 -11
  15. package/lib/commonjs/Directions.js.map +1 -1
  16. package/lib/commonjs/EnableNewWebImplementation.js +10 -2
  17. package/lib/commonjs/EnableNewWebImplementation.js.map +1 -1
  18. package/lib/commonjs/GestureHandlerRootViewContext.js +7 -2
  19. package/lib/commonjs/GestureHandlerRootViewContext.js.map +1 -1
  20. package/lib/commonjs/PlatformConstants.js +6 -1
  21. package/lib/commonjs/PlatformConstants.js.map +1 -1
  22. package/lib/commonjs/PlatformConstants.web.js +3 -1
  23. package/lib/commonjs/PlatformConstants.web.js.map +1 -1
  24. package/lib/commonjs/PointerType.js +5 -3
  25. package/lib/commonjs/PointerType.js.map +1 -1
  26. package/lib/commonjs/RNGestureHandlerModule.js +6 -2
  27. package/lib/commonjs/RNGestureHandlerModule.js.map +1 -1
  28. package/lib/commonjs/RNGestureHandlerModule.web.js +37 -11
  29. package/lib/commonjs/RNGestureHandlerModule.web.js.map +1 -1
  30. package/lib/commonjs/RNGestureHandlerModule.windows.js +32 -22
  31. package/lib/commonjs/RNGestureHandlerModule.windows.js.map +1 -1
  32. package/lib/commonjs/RNRenderer.js +3 -1
  33. package/lib/commonjs/RNRenderer.js.map +1 -1
  34. package/lib/commonjs/RNRenderer.web.js +2 -1
  35. package/lib/commonjs/RNRenderer.web.js.map +1 -1
  36. package/lib/commonjs/State.js +3 -4
  37. package/lib/commonjs/State.js.map +1 -1
  38. package/lib/commonjs/TouchEventType.js +3 -3
  39. package/lib/commonjs/TouchEventType.js.map +1 -1
  40. package/lib/commonjs/components/DrawerLayout.js +115 -90
  41. package/lib/commonjs/components/DrawerLayout.js.map +1 -1
  42. package/lib/commonjs/components/GestureButtons.js +81 -28
  43. package/lib/commonjs/components/GestureButtons.js.map +1 -1
  44. package/lib/commonjs/components/GestureButtonsProps.js.map +1 -1
  45. package/lib/commonjs/components/GestureComponents.js +37 -26
  46. package/lib/commonjs/components/GestureComponents.js.map +1 -1
  47. package/lib/commonjs/components/GestureComponents.web.js +27 -13
  48. package/lib/commonjs/components/GestureComponents.web.js.map +1 -1
  49. package/lib/commonjs/components/GestureHandlerButton.js +6 -2
  50. package/lib/commonjs/components/GestureHandlerButton.js.map +1 -1
  51. package/lib/commonjs/components/GestureHandlerButton.web.js +12 -4
  52. package/lib/commonjs/components/GestureHandlerButton.web.js.map +1 -1
  53. package/lib/commonjs/components/GestureHandlerRootView.android.js +15 -4
  54. package/lib/commonjs/components/GestureHandlerRootView.android.js.map +1 -1
  55. package/lib/commonjs/components/GestureHandlerRootView.js +14 -4
  56. package/lib/commonjs/components/GestureHandlerRootView.js.map +1 -1
  57. package/lib/commonjs/components/GestureHandlerRootView.web.js +13 -4
  58. package/lib/commonjs/components/GestureHandlerRootView.web.js.map +1 -1
  59. package/lib/commonjs/components/Pressable/Pressable.js +77 -29
  60. package/lib/commonjs/components/Pressable/Pressable.js.map +1 -1
  61. package/lib/commonjs/components/Pressable/PressableProps.js.map +1 -1
  62. package/lib/commonjs/components/Pressable/index.js +3 -1
  63. package/lib/commonjs/components/Pressable/index.js.map +1 -1
  64. package/lib/commonjs/components/Pressable/utils.js +20 -5
  65. package/lib/commonjs/components/Pressable/utils.js.map +1 -1
  66. package/lib/commonjs/components/ReanimatedDrawerLayout.js +86 -44
  67. package/lib/commonjs/components/ReanimatedDrawerLayout.js.map +1 -1
  68. package/lib/commonjs/components/ReanimatedSwipeable.js +45 -18
  69. package/lib/commonjs/components/ReanimatedSwipeable.js.map +1 -1
  70. package/lib/commonjs/components/Swipeable.js +75 -34
  71. package/lib/commonjs/components/Swipeable.js.map +1 -1
  72. package/lib/commonjs/components/Text.js +28 -10
  73. package/lib/commonjs/components/Text.js.map +1 -1
  74. package/lib/commonjs/components/gestureHandlerRootHOC.js +14 -5
  75. package/lib/commonjs/components/gestureHandlerRootHOC.js.map +1 -1
  76. package/lib/commonjs/components/touchables/ExtraButtonProps.js +2 -0
  77. package/lib/commonjs/components/touchables/ExtraButtonProps.js.map +1 -0
  78. package/lib/commonjs/components/touchables/GenericTouchable.js +76 -40
  79. package/lib/commonjs/components/touchables/GenericTouchable.js.map +1 -1
  80. package/lib/commonjs/components/touchables/GenericTouchableProps.js.map +1 -1
  81. package/lib/commonjs/components/touchables/TouchableHighlight.js +34 -19
  82. package/lib/commonjs/components/touchables/TouchableHighlight.js.map +1 -1
  83. package/lib/commonjs/components/touchables/TouchableNativeFeedback.android.js +32 -16
  84. package/lib/commonjs/components/touchables/TouchableNativeFeedback.android.js.map +1 -1
  85. package/lib/commonjs/components/touchables/TouchableNativeFeedback.js +5 -2
  86. package/lib/commonjs/components/touchables/TouchableNativeFeedback.js.map +1 -1
  87. package/lib/commonjs/components/touchables/TouchableNativeFeedbackProps.js.map +1 -1
  88. package/lib/commonjs/components/touchables/TouchableOpacity.js +25 -16
  89. package/lib/commonjs/components/touchables/TouchableOpacity.js.map +1 -1
  90. package/lib/commonjs/components/touchables/TouchableWithoutFeedback.js +25 -13
  91. package/lib/commonjs/components/touchables/TouchableWithoutFeedback.js.map +1 -1
  92. package/lib/commonjs/components/touchables/index.js +12 -7
  93. package/lib/commonjs/components/touchables/index.js.map +1 -1
  94. package/lib/commonjs/findNodeHandle.js +4 -1
  95. package/lib/commonjs/findNodeHandle.js.map +1 -1
  96. package/lib/commonjs/findNodeHandle.web.js +14 -5
  97. package/lib/commonjs/findNodeHandle.web.js.map +1 -1
  98. package/lib/commonjs/getReactNativeVersion.js +6 -1
  99. package/lib/commonjs/getReactNativeVersion.js.map +1 -1
  100. package/lib/commonjs/getReactNativeVersion.web.js +1 -0
  101. package/lib/commonjs/getReactNativeVersion.web.js.map +1 -1
  102. package/lib/commonjs/getShadowNodeFromRef.js +14 -13
  103. package/lib/commonjs/getShadowNodeFromRef.js.map +1 -1
  104. package/lib/commonjs/getShadowNodeFromRef.web.js +1 -0
  105. package/lib/commonjs/getShadowNodeFromRef.web.js.map +1 -1
  106. package/lib/commonjs/ghQueueMicrotask.js +2 -1
  107. package/lib/commonjs/ghQueueMicrotask.js.map +1 -1
  108. package/lib/commonjs/handlers/FlingGestureHandler.js +11 -9
  109. package/lib/commonjs/handlers/FlingGestureHandler.js.map +1 -1
  110. package/lib/commonjs/handlers/ForceTouchGestureHandler.js +22 -15
  111. package/lib/commonjs/handlers/ForceTouchGestureHandler.js.map +1 -1
  112. package/lib/commonjs/handlers/GestureHandlerEventPayload.js.map +1 -1
  113. package/lib/commonjs/handlers/LongPressGestureHandler.js +11 -9
  114. package/lib/commonjs/handlers/LongPressGestureHandler.js.map +1 -1
  115. package/lib/commonjs/handlers/NativeViewGestureHandler.js +13 -10
  116. package/lib/commonjs/handlers/NativeViewGestureHandler.js.map +1 -1
  117. package/lib/commonjs/handlers/PanGestureHandler.js +32 -13
  118. package/lib/commonjs/handlers/PanGestureHandler.js.map +1 -1
  119. package/lib/commonjs/handlers/PinchGestureHandler.js +9 -7
  120. package/lib/commonjs/handlers/PinchGestureHandler.js.map +1 -1
  121. package/lib/commonjs/handlers/PressabilityDebugView.js +1 -0
  122. package/lib/commonjs/handlers/PressabilityDebugView.js.map +1 -1
  123. package/lib/commonjs/handlers/PressabilityDebugView.web.js +1 -0
  124. package/lib/commonjs/handlers/PressabilityDebugView.web.js.map +1 -1
  125. package/lib/commonjs/handlers/RotationGestureHandler.js +9 -7
  126. package/lib/commonjs/handlers/RotationGestureHandler.js.map +1 -1
  127. package/lib/commonjs/handlers/TapGestureHandler.js +11 -9
  128. package/lib/commonjs/handlers/TapGestureHandler.js.map +1 -1
  129. package/lib/commonjs/handlers/createHandler.js +146 -59
  130. package/lib/commonjs/handlers/createHandler.js.map +1 -1
  131. package/lib/commonjs/handlers/createNativeWrapper.js +30 -18
  132. package/lib/commonjs/handlers/createNativeWrapper.js.map +1 -1
  133. package/lib/commonjs/handlers/customDirectEventTypes.js +1 -0
  134. package/lib/commonjs/handlers/customDirectEventTypes.js.map +1 -1
  135. package/lib/commonjs/handlers/customDirectEventTypes.web.js +2 -1
  136. package/lib/commonjs/handlers/customDirectEventTypes.web.js.map +1 -1
  137. package/lib/commonjs/handlers/gestureHandlerCommon.js +10 -9
  138. package/lib/commonjs/handlers/gestureHandlerCommon.js.map +1 -1
  139. package/lib/commonjs/handlers/gestureHandlerTypesCompat.js.map +1 -1
  140. package/lib/commonjs/handlers/gestures/GestureDetector/Wrap.js +14 -5
  141. package/lib/commonjs/handlers/gestures/GestureDetector/Wrap.js.map +1 -1
  142. package/lib/commonjs/handlers/gestures/GestureDetector/Wrap.web.js +21 -13
  143. package/lib/commonjs/handlers/gestures/GestureDetector/Wrap.web.js.map +1 -1
  144. package/lib/commonjs/handlers/gestures/GestureDetector/attachHandlers.js +29 -9
  145. package/lib/commonjs/handlers/gestures/GestureDetector/attachHandlers.js.map +1 -1
  146. package/lib/commonjs/handlers/gestures/GestureDetector/dropHandlers.js +10 -1
  147. package/lib/commonjs/handlers/gestures/GestureDetector/dropHandlers.js.map +1 -1
  148. package/lib/commonjs/handlers/gestures/GestureDetector/index.js +36 -11
  149. package/lib/commonjs/handlers/gestures/GestureDetector/index.js.map +1 -1
  150. package/lib/commonjs/handlers/gestures/GestureDetector/needsToReattach.js +3 -0
  151. package/lib/commonjs/handlers/gestures/GestureDetector/needsToReattach.js.map +1 -1
  152. package/lib/commonjs/handlers/gestures/GestureDetector/types.js.map +1 -1
  153. package/lib/commonjs/handlers/gestures/GestureDetector/updateHandlers.js +24 -12
  154. package/lib/commonjs/handlers/gestures/GestureDetector/updateHandlers.js.map +1 -1
  155. package/lib/commonjs/handlers/gestures/GestureDetector/useAnimatedGesture.js +48 -12
  156. package/lib/commonjs/handlers/gestures/GestureDetector/useAnimatedGesture.js.map +1 -1
  157. package/lib/commonjs/handlers/gestures/GestureDetector/useDetectorUpdater.js +13 -3
  158. package/lib/commonjs/handlers/gestures/GestureDetector/useDetectorUpdater.js.map +1 -1
  159. package/lib/commonjs/handlers/gestures/GestureDetector/useMountReactions.js +9 -2
  160. package/lib/commonjs/handlers/gestures/GestureDetector/useMountReactions.js.map +1 -1
  161. package/lib/commonjs/handlers/gestures/GestureDetector/useViewRefHandler.js +14 -6
  162. package/lib/commonjs/handlers/gestures/GestureDetector/useViewRefHandler.js.map +1 -1
  163. package/lib/commonjs/handlers/gestures/GestureDetector/utils.js +55 -27
  164. package/lib/commonjs/handlers/gestures/GestureDetector/utils.js.map +1 -1
  165. package/lib/commonjs/handlers/gestures/eventReceiver.js +46 -14
  166. package/lib/commonjs/handlers/gestures/eventReceiver.js.map +1 -1
  167. package/lib/commonjs/handlers/gestures/flingGesture.js +12 -5
  168. package/lib/commonjs/handlers/gestures/flingGesture.js.map +1 -1
  169. package/lib/commonjs/handlers/gestures/forceTouchGesture.js +19 -8
  170. package/lib/commonjs/handlers/gestures/forceTouchGesture.js.map +1 -1
  171. package/lib/commonjs/handlers/gestures/gesture.js +84 -44
  172. package/lib/commonjs/handlers/gestures/gesture.js.map +1 -1
  173. package/lib/commonjs/handlers/gestures/gestureComposition.js +31 -17
  174. package/lib/commonjs/handlers/gestures/gestureComposition.js.map +1 -1
  175. package/lib/commonjs/handlers/gestures/gestureObjects.js +27 -1
  176. package/lib/commonjs/handlers/gestures/gestureObjects.js.map +1 -1
  177. package/lib/commonjs/handlers/gestures/gestureStateManager.js +9 -3
  178. package/lib/commonjs/handlers/gestures/gestureStateManager.js.map +1 -1
  179. package/lib/commonjs/handlers/gestures/gestureStateManager.web.js +7 -2
  180. package/lib/commonjs/handlers/gestures/gestureStateManager.web.js.map +1 -1
  181. package/lib/commonjs/handlers/gestures/hoverGesture.js +25 -11
  182. package/lib/commonjs/handlers/gestures/hoverGesture.js.map +1 -1
  183. package/lib/commonjs/handlers/gestures/longPressGesture.js +14 -6
  184. package/lib/commonjs/handlers/gestures/longPressGesture.js.map +1 -1
  185. package/lib/commonjs/handlers/gestures/manualGesture.js +6 -0
  186. package/lib/commonjs/handlers/gestures/manualGesture.js.map +1 -1
  187. package/lib/commonjs/handlers/gestures/nativeGesture.js +12 -5
  188. package/lib/commonjs/handlers/gestures/nativeGesture.js.map +1 -1
  189. package/lib/commonjs/handlers/gestures/panGesture.js +43 -18
  190. package/lib/commonjs/handlers/gestures/panGesture.js.map +1 -1
  191. package/lib/commonjs/handlers/gestures/pinchGesture.js +9 -2
  192. package/lib/commonjs/handlers/gestures/pinchGesture.js.map +1 -1
  193. package/lib/commonjs/handlers/gestures/reanimatedWrapper.js +8 -1
  194. package/lib/commonjs/handlers/gestures/reanimatedWrapper.js.map +1 -1
  195. package/lib/commonjs/handlers/gestures/rotationGesture.js +9 -2
  196. package/lib/commonjs/handlers/gestures/rotationGesture.js.map +1 -1
  197. package/lib/commonjs/handlers/gestures/tapGesture.js +22 -10
  198. package/lib/commonjs/handlers/gestures/tapGesture.js.map +1 -1
  199. package/lib/commonjs/handlers/getNextHandlerTag.js +1 -0
  200. package/lib/commonjs/handlers/getNextHandlerTag.js.map +1 -1
  201. package/lib/commonjs/handlers/handlersRegistry.js +21 -6
  202. package/lib/commonjs/handlers/handlersRegistry.js.map +1 -1
  203. package/lib/commonjs/handlers/utils.js +26 -6
  204. package/lib/commonjs/handlers/utils.js.map +1 -1
  205. package/lib/commonjs/index.js +104 -75
  206. package/lib/commonjs/index.js.map +1 -1
  207. package/lib/commonjs/init.js +11 -4
  208. package/lib/commonjs/init.js.map +1 -1
  209. package/lib/commonjs/jestUtils/index.js +5 -4
  210. package/lib/commonjs/jestUtils/index.js.map +1 -1
  211. package/lib/commonjs/jestUtils/jestUtils.js +83 -19
  212. package/lib/commonjs/jestUtils/jestUtils.js.map +1 -1
  213. package/lib/commonjs/mocks.js +15 -5
  214. package/lib/commonjs/mocks.js.map +1 -1
  215. package/lib/commonjs/mountRegistry.js +12 -3
  216. package/lib/commonjs/mountRegistry.js.map +1 -1
  217. package/lib/commonjs/specs/NativeRNGestureHandlerModule.js +5 -1
  218. package/lib/commonjs/specs/NativeRNGestureHandlerModule.js.map +1 -1
  219. package/lib/commonjs/specs/RNGestureHandlerButtonNativeComponent.js +7 -2
  220. package/lib/commonjs/specs/RNGestureHandlerButtonNativeComponent.js.map +1 -1
  221. package/lib/commonjs/specs/RNGestureHandlerRootViewNativeComponent.js +7 -2
  222. package/lib/commonjs/specs/RNGestureHandlerRootViewNativeComponent.js.map +1 -1
  223. package/lib/commonjs/typeUtils.js.map +1 -1
  224. package/lib/commonjs/utils.js +37 -13
  225. package/lib/commonjs/utils.js.map +1 -1
  226. package/lib/commonjs/web/Gestures.js +23 -5
  227. package/lib/commonjs/web/Gestures.js.map +1 -1
  228. package/lib/commonjs/web/constants.js +4 -2
  229. package/lib/commonjs/web/constants.js.map +1 -1
  230. package/lib/commonjs/web/detectors/RotationGestureDetector.js +41 -5
  231. package/lib/commonjs/web/detectors/RotationGestureDetector.js.map +1 -1
  232. package/lib/commonjs/web/detectors/ScaleGestureDetector.js +42 -13
  233. package/lib/commonjs/web/detectors/ScaleGestureDetector.js.map +1 -1
  234. package/lib/commonjs/web/handlers/FlingGestureHandler.js +49 -6
  235. package/lib/commonjs/web/handlers/FlingGestureHandler.js.map +1 -1
  236. package/lib/commonjs/web/handlers/GestureHandler.js +195 -62
  237. package/lib/commonjs/web/handlers/GestureHandler.js.map +1 -1
  238. package/lib/commonjs/web/handlers/HoverGestureHandler.js +19 -6
  239. package/lib/commonjs/web/handlers/HoverGestureHandler.js.map +1 -1
  240. package/lib/commonjs/web/handlers/IGestureHandler.js.map +1 -1
  241. package/lib/commonjs/web/handlers/LongPressGestureHandler.js +47 -6
  242. package/lib/commonjs/web/handlers/LongPressGestureHandler.js.map +1 -1
  243. package/lib/commonjs/web/handlers/ManualGestureHandler.js +11 -1
  244. package/lib/commonjs/web/handlers/ManualGestureHandler.js.map +1 -1
  245. package/lib/commonjs/web/handlers/NativeViewGestureHandler.js +49 -8
  246. package/lib/commonjs/web/handlers/NativeViewGestureHandler.js.map +1 -1
  247. package/lib/commonjs/web/handlers/PanGestureHandler.js +123 -8
  248. package/lib/commonjs/web/handlers/PanGestureHandler.js.map +1 -1
  249. package/lib/commonjs/web/handlers/PinchGestureHandler.js +41 -4
  250. package/lib/commonjs/web/handlers/PinchGestureHandler.js.map +1 -1
  251. package/lib/commonjs/web/handlers/RotationGestureHandler.js +42 -4
  252. package/lib/commonjs/web/handlers/RotationGestureHandler.js.map +1 -1
  253. package/lib/commonjs/web/handlers/TapGestureHandler.js +67 -6
  254. package/lib/commonjs/web/handlers/TapGestureHandler.js.map +1 -1
  255. package/lib/commonjs/web/interfaces.js +17 -9
  256. package/lib/commonjs/web/interfaces.js.map +1 -1
  257. package/lib/commonjs/web/tools/CircularBuffer.js +15 -3
  258. package/lib/commonjs/web/tools/CircularBuffer.js.map +1 -1
  259. package/lib/commonjs/web/tools/EventManager.js +41 -7
  260. package/lib/commonjs/web/tools/EventManager.js.map +1 -1
  261. package/lib/commonjs/web/tools/GestureHandlerDelegate.js.map +1 -1
  262. package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js +78 -11
  263. package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js.map +1 -1
  264. package/lib/commonjs/web/tools/GestureHandlerWebDelegate.js +48 -8
  265. package/lib/commonjs/web/tools/GestureHandlerWebDelegate.js.map +1 -1
  266. package/lib/commonjs/web/tools/InteractionManager.js +22 -5
  267. package/lib/commonjs/web/tools/InteractionManager.js.map +1 -1
  268. package/lib/commonjs/web/tools/KeyboardEventManager.js +26 -4
  269. package/lib/commonjs/web/tools/KeyboardEventManager.js.map +1 -1
  270. package/lib/commonjs/web/tools/LeastSquareSolver.js +67 -30
  271. package/lib/commonjs/web/tools/LeastSquareSolver.js.map +1 -1
  272. package/lib/commonjs/web/tools/NodeManager.js +14 -7
  273. package/lib/commonjs/web/tools/NodeManager.js.map +1 -1
  274. package/lib/commonjs/web/tools/PointerEventManager.js +45 -10
  275. package/lib/commonjs/web/tools/PointerEventManager.js.map +1 -1
  276. package/lib/commonjs/web/tools/PointerTracker.js +45 -9
  277. package/lib/commonjs/web/tools/PointerTracker.js.map +1 -1
  278. package/lib/commonjs/web/tools/Vector.js +18 -3
  279. package/lib/commonjs/web/tools/Vector.js.map +1 -1
  280. package/lib/commonjs/web/tools/VelocityTracker.js +31 -9
  281. package/lib/commonjs/web/tools/VelocityTracker.js.map +1 -1
  282. package/lib/commonjs/web/tools/WheelEventManager.js +17 -4
  283. package/lib/commonjs/web/tools/WheelEventManager.js.map +1 -1
  284. package/lib/commonjs/web/utils.js +76 -27
  285. package/lib/commonjs/web/utils.js.map +1 -1
  286. package/lib/commonjs/web_hammer/DiscreteGestureHandler.js +19 -7
  287. package/lib/commonjs/web_hammer/DiscreteGestureHandler.js.map +1 -1
  288. package/lib/commonjs/web_hammer/DraggingGestureHandler.js +13 -3
  289. package/lib/commonjs/web_hammer/DraggingGestureHandler.js.map +1 -1
  290. package/lib/commonjs/web_hammer/Errors.js +3 -0
  291. package/lib/commonjs/web_hammer/Errors.js.map +1 -1
  292. package/lib/commonjs/web_hammer/FlingGestureHandler.js +44 -13
  293. package/lib/commonjs/web_hammer/FlingGestureHandler.js.map +1 -1
  294. package/lib/commonjs/web_hammer/GestureHandler.js +142 -55
  295. package/lib/commonjs/web_hammer/GestureHandler.js.map +1 -1
  296. package/lib/commonjs/web_hammer/IndiscreteGestureHandler.js +11 -2
  297. package/lib/commonjs/web_hammer/IndiscreteGestureHandler.js.map +1 -1
  298. package/lib/commonjs/web_hammer/LongPressGestureHandler.js +19 -5
  299. package/lib/commonjs/web_hammer/LongPressGestureHandler.js.map +1 -1
  300. package/lib/commonjs/web_hammer/NativeViewGestureHandler.js +24 -16
  301. package/lib/commonjs/web_hammer/NativeViewGestureHandler.js.map +1 -1
  302. package/lib/commonjs/web_hammer/NodeManager.js +16 -9
  303. package/lib/commonjs/web_hammer/NodeManager.js.map +1 -1
  304. package/lib/commonjs/web_hammer/PanGestureHandler.js +49 -8
  305. package/lib/commonjs/web_hammer/PanGestureHandler.js.map +1 -1
  306. package/lib/commonjs/web_hammer/PinchGestureHandler.js +11 -2
  307. package/lib/commonjs/web_hammer/PinchGestureHandler.js.map +1 -1
  308. package/lib/commonjs/web_hammer/PressGestureHandler.js +43 -15
  309. package/lib/commonjs/web_hammer/PressGestureHandler.js.map +1 -1
  310. package/lib/commonjs/web_hammer/RotationGestureHandler.js +13 -2
  311. package/lib/commonjs/web_hammer/RotationGestureHandler.js.map +1 -1
  312. package/lib/commonjs/web_hammer/TapGestureHandler.js +52 -33
  313. package/lib/commonjs/web_hammer/TapGestureHandler.js.map +1 -1
  314. package/lib/commonjs/web_hammer/constants.js +26 -13
  315. package/lib/commonjs/web_hammer/constants.js.map +1 -1
  316. package/lib/commonjs/web_hammer/utils.js +14 -4
  317. package/lib/commonjs/web_hammer/utils.js.map +1 -1
  318. package/lib/module/ActionType.js +1 -3
  319. package/lib/module/ActionType.js.map +1 -1
  320. package/lib/module/Directions.js +3 -9
  321. package/lib/module/Directions.js.map +1 -1
  322. package/lib/module/EnableNewWebImplementation.js +5 -2
  323. package/lib/module/EnableNewWebImplementation.js.map +1 -1
  324. package/lib/module/GestureHandlerRootViewContext.js.map +1 -1
  325. package/lib/module/PlatformConstants.js +1 -0
  326. package/lib/module/PlatformConstants.js.map +1 -1
  327. package/lib/module/PlatformConstants.web.js +1 -0
  328. package/lib/module/PlatformConstants.web.js.map +1 -1
  329. package/lib/module/PointerType.js +4 -3
  330. package/lib/module/PointerType.js.map +1 -1
  331. package/lib/module/RNGestureHandlerModule.js +0 -1
  332. package/lib/module/RNGestureHandlerModule.js.map +1 -1
  333. package/lib/module/RNGestureHandlerModule.web.js +20 -10
  334. package/lib/module/RNGestureHandlerModule.web.js.map +1 -1
  335. package/lib/module/RNGestureHandlerModule.windows.js +17 -18
  336. package/lib/module/RNGestureHandlerModule.windows.js.map +1 -1
  337. package/lib/module/RNRenderer.js.map +1 -1
  338. package/lib/module/RNRenderer.web.js.map +1 -1
  339. package/lib/module/State.js +1 -4
  340. package/lib/module/State.js.map +1 -1
  341. package/lib/module/TouchEventType.js +1 -3
  342. package/lib/module/TouchEventType.js.map +1 -1
  343. package/lib/module/components/DrawerLayout.js +99 -80
  344. package/lib/module/components/DrawerLayout.js.map +1 -1
  345. package/lib/module/components/GestureButtons.js +55 -19
  346. package/lib/module/components/GestureButtons.js.map +1 -1
  347. package/lib/module/components/GestureButtonsProps.js.map +1 -1
  348. package/lib/module/components/GestureComponents.js +12 -17
  349. package/lib/module/components/GestureComponents.js.map +1 -1
  350. package/lib/module/components/GestureComponents.web.js +4 -4
  351. package/lib/module/components/GestureComponents.web.js.map +1 -1
  352. package/lib/module/components/GestureHandlerButton.js.map +1 -1
  353. package/lib/module/components/GestureHandlerButton.web.js +2 -1
  354. package/lib/module/components/GestureHandlerButton.web.js.map +1 -1
  355. package/lib/module/components/GestureHandlerRootView.android.js +2 -1
  356. package/lib/module/components/GestureHandlerRootView.android.js.map +1 -1
  357. package/lib/module/components/GestureHandlerRootView.js +2 -1
  358. package/lib/module/components/GestureHandlerRootView.js.map +1 -1
  359. package/lib/module/components/GestureHandlerRootView.web.js +2 -1
  360. package/lib/module/components/GestureHandlerRootView.web.js.map +1 -1
  361. package/lib/module/components/Pressable/Pressable.js +59 -26
  362. package/lib/module/components/Pressable/Pressable.js.map +1 -1
  363. package/lib/module/components/Pressable/PressableProps.js.map +1 -1
  364. package/lib/module/components/Pressable/index.js.map +1 -1
  365. package/lib/module/components/Pressable/utils.js +14 -4
  366. package/lib/module/components/Pressable/utils.js.map +1 -1
  367. package/lib/module/components/ReanimatedDrawerLayout.js +66 -40
  368. package/lib/module/components/ReanimatedDrawerLayout.js.map +1 -1
  369. package/lib/module/components/ReanimatedSwipeable.js +30 -14
  370. package/lib/module/components/ReanimatedSwipeable.js.map +1 -1
  371. package/lib/module/components/Swipeable.js +59 -28
  372. package/lib/module/components/Swipeable.js.map +1 -1
  373. package/lib/module/components/Text.js +15 -7
  374. package/lib/module/components/Text.js.map +1 -1
  375. package/lib/module/components/gestureHandlerRootHOC.js +2 -2
  376. package/lib/module/components/gestureHandlerRootHOC.js.map +1 -1
  377. package/lib/module/components/touchables/ExtraButtonProps.js +2 -0
  378. package/lib/module/components/touchables/ExtraButtonProps.js.map +1 -0
  379. package/lib/module/components/touchables/GenericTouchable.js +63 -34
  380. package/lib/module/components/touchables/GenericTouchable.js.map +1 -1
  381. package/lib/module/components/touchables/GenericTouchableProps.js.map +1 -1
  382. package/lib/module/components/touchables/TouchableHighlight.js +24 -15
  383. package/lib/module/components/touchables/TouchableHighlight.js.map +1 -1
  384. package/lib/module/components/touchables/TouchableNativeFeedback.android.js +20 -10
  385. package/lib/module/components/touchables/TouchableNativeFeedback.android.js.map +1 -1
  386. package/lib/module/components/touchables/TouchableNativeFeedback.js +2 -2
  387. package/lib/module/components/touchables/TouchableNativeFeedback.js.map +1 -1
  388. package/lib/module/components/touchables/TouchableNativeFeedbackProps.js.map +1 -1
  389. package/lib/module/components/touchables/TouchableOpacity.js +16 -10
  390. package/lib/module/components/touchables/TouchableOpacity.js.map +1 -1
  391. package/lib/module/components/touchables/TouchableWithoutFeedback.js +15 -10
  392. package/lib/module/components/touchables/TouchableWithoutFeedback.js.map +1 -1
  393. package/lib/module/components/touchables/index.js.map +1 -1
  394. package/lib/module/findNodeHandle.js.map +1 -1
  395. package/lib/module/findNodeHandle.web.js +11 -5
  396. package/lib/module/findNodeHandle.web.js.map +1 -1
  397. package/lib/module/getReactNativeVersion.js.map +1 -1
  398. package/lib/module/getReactNativeVersion.web.js.map +1 -1
  399. package/lib/module/getShadowNodeFromRef.js +13 -13
  400. package/lib/module/getShadowNodeFromRef.js.map +1 -1
  401. package/lib/module/getShadowNodeFromRef.web.js.map +1 -1
  402. package/lib/module/ghQueueMicrotask.js.map +1 -1
  403. package/lib/module/handlers/FlingGestureHandler.js +0 -6
  404. package/lib/module/handlers/FlingGestureHandler.js.map +1 -1
  405. package/lib/module/handlers/ForceTouchGestureHandler.js +8 -12
  406. package/lib/module/handlers/ForceTouchGestureHandler.js.map +1 -1
  407. package/lib/module/handlers/GestureHandlerEventPayload.js.map +1 -1
  408. package/lib/module/handlers/LongPressGestureHandler.js +0 -6
  409. package/lib/module/handlers/LongPressGestureHandler.js.map +1 -1
  410. package/lib/module/handlers/NativeViewGestureHandler.js +0 -6
  411. package/lib/module/handlers/NativeViewGestureHandler.js.map +1 -1
  412. package/lib/module/handlers/PanGestureHandler.js +19 -8
  413. package/lib/module/handlers/PanGestureHandler.js.map +1 -1
  414. package/lib/module/handlers/PinchGestureHandler.js +0 -2
  415. package/lib/module/handlers/PinchGestureHandler.js.map +1 -1
  416. package/lib/module/handlers/PressabilityDebugView.js.map +1 -1
  417. package/lib/module/handlers/PressabilityDebugView.web.js.map +1 -1
  418. package/lib/module/handlers/RotationGestureHandler.js +0 -2
  419. package/lib/module/handlers/RotationGestureHandler.js.map +1 -1
  420. package/lib/module/handlers/TapGestureHandler.js +0 -6
  421. package/lib/module/handlers/TapGestureHandler.js.map +1 -1
  422. package/lib/module/handlers/createHandler.js +119 -57
  423. package/lib/module/handlers/createHandler.js.map +1 -1
  424. package/lib/module/handlers/createNativeWrapper.js +22 -15
  425. package/lib/module/handlers/createNativeWrapper.js.map +1 -1
  426. package/lib/module/handlers/customDirectEventTypes.js.map +1 -1
  427. package/lib/module/handlers/customDirectEventTypes.web.js.map +1 -1
  428. package/lib/module/handlers/gestureHandlerCommon.js +4 -9
  429. package/lib/module/handlers/gestureHandlerCommon.js.map +1 -1
  430. package/lib/module/handlers/gestureHandlerTypesCompat.js.map +1 -1
  431. package/lib/module/handlers/gestures/GestureDetector/Wrap.js +4 -3
  432. package/lib/module/handlers/gestures/GestureDetector/Wrap.js.map +1 -1
  433. package/lib/module/handlers/gestures/GestureDetector/Wrap.web.js +7 -8
  434. package/lib/module/handlers/gestures/GestureDetector/Wrap.web.js.map +1 -1
  435. package/lib/module/handlers/gestures/GestureDetector/attachHandlers.js +16 -8
  436. package/lib/module/handlers/gestures/GestureDetector/attachHandlers.js.map +1 -1
  437. package/lib/module/handlers/gestures/GestureDetector/dropHandlers.js +1 -0
  438. package/lib/module/handlers/gestures/GestureDetector/dropHandlers.js.map +1 -1
  439. package/lib/module/handlers/gestures/GestureDetector/index.js +13 -7
  440. package/lib/module/handlers/gestures/GestureDetector/index.js.map +1 -1
  441. package/lib/module/handlers/gestures/GestureDetector/needsToReattach.js +2 -0
  442. package/lib/module/handlers/gestures/GestureDetector/needsToReattach.js.map +1 -1
  443. package/lib/module/handlers/gestures/GestureDetector/types.js.map +1 -1
  444. package/lib/module/handlers/gestures/GestureDetector/updateHandlers.js +14 -11
  445. package/lib/module/handlers/gestures/GestureDetector/updateHandlers.js.map +1 -1
  446. package/lib/module/handlers/gestures/GestureDetector/useAnimatedGesture.js +39 -12
  447. package/lib/module/handlers/gestures/GestureDetector/useAnimatedGesture.js.map +1 -1
  448. package/lib/module/handlers/gestures/GestureDetector/useDetectorUpdater.js +5 -5
  449. package/lib/module/handlers/gestures/GestureDetector/useDetectorUpdater.js.map +1 -1
  450. package/lib/module/handlers/gestures/GestureDetector/useMountReactions.js +6 -2
  451. package/lib/module/handlers/gestures/GestureDetector/useMountReactions.js.map +1 -1
  452. package/lib/module/handlers/gestures/GestureDetector/useViewRefHandler.js +7 -5
  453. package/lib/module/handlers/gestures/GestureDetector/useViewRefHandler.js.map +1 -1
  454. package/lib/module/handlers/gestures/GestureDetector/utils.js +28 -23
  455. package/lib/module/handlers/gestures/GestureDetector/utils.js.map +1 -1
  456. package/lib/module/handlers/gestures/eventReceiver.js +38 -14
  457. package/lib/module/handlers/gestures/eventReceiver.js.map +1 -1
  458. package/lib/module/handlers/gestures/flingGesture.js +9 -5
  459. package/lib/module/handlers/gestures/flingGesture.js.map +1 -1
  460. package/lib/module/handlers/gestures/forceTouchGesture.js +17 -8
  461. package/lib/module/handlers/gestures/forceTouchGesture.js.map +1 -1
  462. package/lib/module/handlers/gestures/gesture.js +73 -44
  463. package/lib/module/handlers/gestures/gesture.js.map +1 -1
  464. package/lib/module/handlers/gestures/gestureComposition.js +24 -16
  465. package/lib/module/handlers/gestures/gestureComposition.js.map +1 -1
  466. package/lib/module/handlers/gestures/gestureObjects.js +14 -1
  467. package/lib/module/handlers/gestures/gestureObjects.js.map +1 -1
  468. package/lib/module/handlers/gestures/gestureStateManager.js +4 -3
  469. package/lib/module/handlers/gestures/gestureStateManager.js.map +1 -1
  470. package/lib/module/handlers/gestures/gestureStateManager.web.js +1 -0
  471. package/lib/module/handlers/gestures/gestureStateManager.web.js.map +1 -1
  472. package/lib/module/handlers/gestures/hoverGesture.js +18 -9
  473. package/lib/module/handlers/gestures/hoverGesture.js.map +1 -1
  474. package/lib/module/handlers/gestures/longPressGesture.js +11 -6
  475. package/lib/module/handlers/gestures/longPressGesture.js.map +1 -1
  476. package/lib/module/handlers/gestures/manualGesture.js +4 -0
  477. package/lib/module/handlers/gestures/manualGesture.js.map +1 -1
  478. package/lib/module/handlers/gestures/nativeGesture.js +9 -5
  479. package/lib/module/handlers/gestures/nativeGesture.js.map +1 -1
  480. package/lib/module/handlers/gestures/panGesture.js +41 -18
  481. package/lib/module/handlers/gestures/panGesture.js.map +1 -1
  482. package/lib/module/handlers/gestures/pinchGesture.js +7 -2
  483. package/lib/module/handlers/gestures/pinchGesture.js.map +1 -1
  484. package/lib/module/handlers/gestures/reanimatedWrapper.js +5 -0
  485. package/lib/module/handlers/gestures/reanimatedWrapper.js.map +1 -1
  486. package/lib/module/handlers/gestures/rotationGesture.js +7 -2
  487. package/lib/module/handlers/gestures/rotationGesture.js.map +1 -1
  488. package/lib/module/handlers/gestures/tapGesture.js +19 -10
  489. package/lib/module/handlers/gestures/tapGesture.js.map +1 -1
  490. package/lib/module/handlers/getNextHandlerTag.js.map +1 -1
  491. package/lib/module/handlers/handlersRegistry.js +5 -0
  492. package/lib/module/handlers/handlersRegistry.js.map +1 -1
  493. package/lib/module/handlers/utils.js +13 -4
  494. package/lib/module/handlers/utils.js.map +1 -1
  495. package/lib/module/index.js.map +1 -1
  496. package/lib/module/init.js +2 -3
  497. package/lib/module/init.js.map +1 -1
  498. package/lib/module/jestUtils/index.js.map +1 -1
  499. package/lib/module/jestUtils/jestUtils.js +66 -20
  500. package/lib/module/jestUtils/jestUtils.js.map +1 -1
  501. package/lib/module/mocks.js +7 -3
  502. package/lib/module/mocks.js.map +1 -1
  503. package/lib/module/mountRegistry.js +10 -3
  504. package/lib/module/mountRegistry.js.map +1 -1
  505. package/lib/module/specs/NativeRNGestureHandlerModule.js.map +1 -1
  506. package/lib/module/specs/RNGestureHandlerButtonNativeComponent.js.map +1 -1
  507. package/lib/module/specs/RNGestureHandlerRootViewNativeComponent.js.map +1 -1
  508. package/lib/module/typeUtils.js.map +1 -1
  509. package/lib/module/utils.js +15 -6
  510. package/lib/module/utils.js.map +1 -1
  511. package/lib/module/web/Gestures.js +1 -2
  512. package/lib/module/web/Gestures.js.map +1 -1
  513. package/lib/module/web/constants.js.map +1 -1
  514. package/lib/module/web/detectors/RotationGestureDetector.js +38 -5
  515. package/lib/module/web/detectors/RotationGestureDetector.js.map +1 -1
  516. package/lib/module/web/detectors/ScaleGestureDetector.js +38 -13
  517. package/lib/module/web/detectors/ScaleGestureDetector.js.map +1 -1
  518. package/lib/module/web/handlers/FlingGestureHandler.js +39 -5
  519. package/lib/module/web/handlers/FlingGestureHandler.js.map +1 -1
  520. package/lib/module/web/handlers/GestureHandler.js +181 -61
  521. package/lib/module/web/handlers/GestureHandler.js.map +1 -1
  522. package/lib/module/web/handlers/HoverGestureHandler.js +11 -5
  523. package/lib/module/web/handlers/HoverGestureHandler.js.map +1 -1
  524. package/lib/module/web/handlers/IGestureHandler.js.map +1 -1
  525. package/lib/module/web/handlers/LongPressGestureHandler.js +40 -5
  526. package/lib/module/web/handlers/LongPressGestureHandler.js.map +1 -1
  527. package/lib/module/web/handlers/ManualGestureHandler.js +6 -0
  528. package/lib/module/web/handlers/ManualGestureHandler.js.map +1 -1
  529. package/lib/module/web/handlers/NativeViewGestureHandler.js +41 -7
  530. package/lib/module/web/handlers/NativeViewGestureHandler.js.map +1 -1
  531. package/lib/module/web/handlers/PanGestureHandler.js +114 -7
  532. package/lib/module/web/handlers/PanGestureHandler.js.map +1 -1
  533. package/lib/module/web/handlers/PinchGestureHandler.js +33 -3
  534. package/lib/module/web/handlers/PinchGestureHandler.js.map +1 -1
  535. package/lib/module/web/handlers/RotationGestureHandler.js +34 -3
  536. package/lib/module/web/handlers/RotationGestureHandler.js.map +1 -1
  537. package/lib/module/web/handlers/TapGestureHandler.js +59 -5
  538. package/lib/module/web/handlers/TapGestureHandler.js.map +1 -1
  539. package/lib/module/web/interfaces.js +14 -9
  540. package/lib/module/web/interfaces.js.map +1 -1
  541. package/lib/module/web/tools/CircularBuffer.js +13 -3
  542. package/lib/module/web/tools/CircularBuffer.js.map +1 -1
  543. package/lib/module/web/tools/EventManager.js +39 -7
  544. package/lib/module/web/tools/EventManager.js.map +1 -1
  545. package/lib/module/web/tools/GestureHandlerDelegate.js.map +1 -1
  546. package/lib/module/web/tools/GestureHandlerOrchestrator.js +71 -10
  547. package/lib/module/web/tools/GestureHandlerOrchestrator.js.map +1 -1
  548. package/lib/module/web/tools/GestureHandlerWebDelegate.js +37 -7
  549. package/lib/module/web/tools/GestureHandlerWebDelegate.js.map +1 -1
  550. package/lib/module/web/tools/InteractionManager.js +19 -5
  551. package/lib/module/web/tools/InteractionManager.js.map +1 -1
  552. package/lib/module/web/tools/KeyboardEventManager.js +19 -3
  553. package/lib/module/web/tools/KeyboardEventManager.js.map +1 -1
  554. package/lib/module/web/tools/LeastSquareSolver.js +65 -30
  555. package/lib/module/web/tools/LeastSquareSolver.js.map +1 -1
  556. package/lib/module/web/tools/NodeManager.js +12 -7
  557. package/lib/module/web/tools/NodeManager.js.map +1 -1
  558. package/lib/module/web/tools/PointerEventManager.js +35 -9
  559. package/lib/module/web/tools/PointerEventManager.js.map +1 -1
  560. package/lib/module/web/tools/PointerTracker.js +39 -8
  561. package/lib/module/web/tools/PointerTracker.js.map +1 -1
  562. package/lib/module/web/tools/Vector.js +14 -3
  563. package/lib/module/web/tools/Vector.js.map +1 -1
  564. package/lib/module/web/tools/VelocityTracker.js +25 -8
  565. package/lib/module/web/tools/VelocityTracker.js.map +1 -1
  566. package/lib/module/web/tools/WheelEventManager.js +10 -3
  567. package/lib/module/web/tools/WheelEventManager.js.map +1 -1
  568. package/lib/module/web/utils.js +57 -22
  569. package/lib/module/web/utils.js.map +1 -1
  570. package/lib/module/web_hammer/DiscreteGestureHandler.js +13 -4
  571. package/lib/module/web_hammer/DiscreteGestureHandler.js.map +1 -1
  572. package/lib/module/web_hammer/DraggingGestureHandler.js +5 -0
  573. package/lib/module/web_hammer/DraggingGestureHandler.js.map +1 -1
  574. package/lib/module/web_hammer/Errors.js +1 -0
  575. package/lib/module/web_hammer/Errors.js.map +1 -1
  576. package/lib/module/web_hammer/FlingGestureHandler.js +35 -10
  577. package/lib/module/web_hammer/FlingGestureHandler.js.map +1 -1
  578. package/lib/module/web_hammer/GestureHandler.js +130 -53
  579. package/lib/module/web_hammer/GestureHandler.js.map +1 -1
  580. package/lib/module/web_hammer/IndiscreteGestureHandler.js +6 -1
  581. package/lib/module/web_hammer/IndiscreteGestureHandler.js.map +1 -1
  582. package/lib/module/web_hammer/LongPressGestureHandler.js +11 -2
  583. package/lib/module/web_hammer/LongPressGestureHandler.js.map +1 -1
  584. package/lib/module/web_hammer/NativeViewGestureHandler.js +12 -12
  585. package/lib/module/web_hammer/NativeViewGestureHandler.js.map +1 -1
  586. package/lib/module/web_hammer/NodeManager.js +8 -6
  587. package/lib/module/web_hammer/NodeManager.js.map +1 -1
  588. package/lib/module/web_hammer/PanGestureHandler.js +40 -6
  589. package/lib/module/web_hammer/PanGestureHandler.js.map +1 -1
  590. package/lib/module/web_hammer/PinchGestureHandler.js +5 -0
  591. package/lib/module/web_hammer/PinchGestureHandler.js.map +1 -1
  592. package/lib/module/web_hammer/PressGestureHandler.js +34 -13
  593. package/lib/module/web_hammer/PressGestureHandler.js.map +1 -1
  594. package/lib/module/web_hammer/RotationGestureHandler.js +6 -0
  595. package/lib/module/web_hammer/RotationGestureHandler.js.map +1 -1
  596. package/lib/module/web_hammer/TapGestureHandler.js +45 -31
  597. package/lib/module/web_hammer/TapGestureHandler.js.map +1 -1
  598. package/lib/module/web_hammer/constants.js +1 -2
  599. package/lib/module/web_hammer/constants.js.map +1 -1
  600. package/lib/module/web_hammer/utils.js +2 -2
  601. package/lib/module/web_hammer/utils.js.map +1 -1
  602. package/lib/typescript/components/GestureComponents.d.ts +1 -1
  603. package/lib/typescript/components/ReanimatedDrawerLayout.d.ts +5 -0
  604. package/lib/typescript/components/touchables/ExtraButtonProps.d.ts +7 -0
  605. package/lib/typescript/components/touchables/GenericTouchable.d.ts +0 -2
  606. package/lib/typescript/components/touchables/GenericTouchableProps.d.ts +2 -0
  607. package/lib/typescript/components/touchables/TouchableHighlight.d.ts +2 -2
  608. package/lib/typescript/components/touchables/TouchableNativeFeedback.android.d.ts +3 -3
  609. package/lib/typescript/components/touchables/TouchableNativeFeedback.d.ts +1 -1
  610. package/lib/typescript/components/touchables/TouchableNativeFeedbackProps.d.ts +3 -7
  611. package/lib/typescript/components/touchables/TouchableOpacity.d.ts +2 -2
  612. package/lib/typescript/components/touchables/TouchableWithoutFeedback.d.ts +2 -2
  613. package/lib/typescript/handlers/gestures/GestureDetector/utils.d.ts +1 -1
  614. package/lib/typescript/utils.d.ts +1 -0
  615. package/lib/typescript/web/utils.d.ts +2 -0
  616. package/package.json +9 -8
  617. package/src/components/GestureComponents.tsx +1 -1
  618. package/src/components/ReanimatedDrawerLayout.tsx +17 -4
  619. package/src/components/Text.tsx +5 -0
  620. package/src/components/touchables/ExtraButtonProps.ts +7 -0
  621. package/src/components/touchables/GenericTouchable.tsx +0 -2
  622. package/src/components/touchables/GenericTouchableProps.ts +2 -0
  623. package/src/components/touchables/TouchableHighlight.tsx +2 -2
  624. package/src/components/touchables/TouchableNativeFeedback.android.tsx +1 -1
  625. package/src/components/touchables/TouchableNativeFeedback.tsx +1 -1
  626. package/src/components/touchables/TouchableNativeFeedbackProps.tsx +3 -8
  627. package/src/components/touchables/TouchableOpacity.tsx +2 -2
  628. package/src/components/touchables/TouchableWithoutFeedback.tsx +22 -4
  629. package/src/handlers/createHandler.tsx +20 -9
  630. package/src/handlers/createNativeWrapper.tsx +7 -3
  631. package/src/handlers/gestures/GestureDetector/Wrap.web.tsx +2 -4
  632. package/src/utils.ts +6 -0
  633. package/src/web/utils.ts +21 -3
@@ -4,8 +4,10 @@ const numberAsInset = value => ({
4
4
  top: value,
5
5
  bottom: value
6
6
  });
7
+
7
8
  const addInsets = (a, b) => {
8
9
  var _a$left, _b$left, _a$right, _b$right, _a$top, _b$top, _a$bottom, _b$bottom;
10
+
9
11
  return {
10
12
  left: ((_a$left = a.left) !== null && _a$left !== void 0 ? _a$left : 0) + ((_b$left = b.left) !== null && _b$left !== void 0 ? _b$left : 0),
11
13
  right: ((_a$right = a.right) !== null && _a$right !== void 0 ? _a$right : 0) + ((_b$right = b.right) !== null && _b$right !== void 0 ? _b$right : 0),
@@ -13,6 +15,7 @@ const addInsets = (a, b) => {
13
15
  bottom: ((_a$bottom = a.bottom) !== null && _a$bottom !== void 0 ? _a$bottom : 0) + ((_b$bottom = b.bottom) !== null && _b$bottom !== void 0 ? _b$bottom : 0)
14
16
  };
15
17
  };
18
+
16
19
  const touchDataToPressEvent = (data, timestamp, targetId) => ({
17
20
  identifier: data.id,
18
21
  locationX: data.x,
@@ -24,7 +27,9 @@ const touchDataToPressEvent = (data, timestamp, targetId) => ({
24
27
  touches: [],
25
28
  // Always empty - legacy compatibility
26
29
  changedTouches: [] // Always empty - legacy compatibility
30
+
27
31
  });
32
+
28
33
  const gestureToPressEvent = (event, timestamp, targetId) => ({
29
34
  identifier: event.handlerTag,
30
35
  locationX: event.x,
@@ -36,15 +41,18 @@ const gestureToPressEvent = (event, timestamp, targetId) => ({
36
41
  touches: [],
37
42
  // Always empty - legacy compatibility
38
43
  changedTouches: [] // Always empty - legacy compatibility
44
+
39
45
  });
46
+
40
47
  const isTouchWithinInset = (dimensions, inset, touch) => {
41
48
  var _touch$x, _inset$right, _touch$y, _inset$bottom, _touch$x2, _inset$left, _touch$y2, _inset$top;
49
+
42
50
  return ((_touch$x = touch === null || touch === void 0 ? void 0 : touch.x) !== null && _touch$x !== void 0 ? _touch$x : 0) < ((_inset$right = inset.right) !== null && _inset$right !== void 0 ? _inset$right : 0) + dimensions.width && ((_touch$y = touch === null || touch === void 0 ? void 0 : touch.y) !== null && _touch$y !== void 0 ? _touch$y : 0) < ((_inset$bottom = inset.bottom) !== null && _inset$bottom !== void 0 ? _inset$bottom : 0) + dimensions.height && ((_touch$x2 = touch === null || touch === void 0 ? void 0 : touch.x) !== null && _touch$x2 !== void 0 ? _touch$x2 : 0) > -((_inset$left = inset.left) !== null && _inset$left !== void 0 ? _inset$left : 0) && ((_touch$y2 = touch === null || touch === void 0 ? void 0 : touch.y) !== null && _touch$y2 !== void 0 ? _touch$y2 : 0) > -((_inset$top = inset.top) !== null && _inset$top !== void 0 ? _inset$top : 0);
43
51
  };
52
+
44
53
  const gestureToPressableEvent = event => {
45
- const timestamp = Date.now();
54
+ const timestamp = Date.now(); // As far as I can see, there isn't a conventional way of getting targetId with the data we get
46
55
 
47
- // As far as I can see, there isn't a conventional way of getting targetId with the data we get
48
56
  const targetId = 0;
49
57
  const pressEvent = gestureToPressEvent(event, timestamp, targetId);
50
58
  return {
@@ -62,11 +70,12 @@ const gestureToPressableEvent = event => {
62
70
  }
63
71
  };
64
72
  };
73
+
65
74
  const gestureTouchToPressableEvent = event => {
66
75
  var _event$allTouches$at$, _event$allTouches$at, _event$allTouches$at$2, _event$allTouches$at2, _event$allTouches$at$3, _event$allTouches$at3, _event$allTouches$at$4, _event$allTouches$at4;
67
- const timestamp = Date.now();
68
76
 
69
- // As far as I can see, there isn't a conventional way of getting targetId with the data we get
77
+ const timestamp = Date.now(); // As far as I can see, there isn't a conventional way of getting targetId with the data we get
78
+
70
79
  const targetId = 0;
71
80
  const touchesList = event.allTouches.map(touch => touchDataToPressEvent(touch, timestamp, targetId));
72
81
  const changedTouchesList = event.changedTouches.map(touch => touchDataToPressEvent(touch, timestamp, targetId));
@@ -85,5 +94,6 @@ const gestureTouchToPressableEvent = event => {
85
94
  }
86
95
  };
87
96
  };
97
+
88
98
  export { numberAsInset, addInsets, isTouchWithinInset, gestureToPressableEvent, gestureTouchToPressableEvent };
89
99
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["numberAsInset","value","left","right","top","bottom","addInsets","a","b","_a$left","_b$left","_a$right","_b$right","_a$top","_b$top","_a$bottom","_b$bottom","touchDataToPressEvent","data","timestamp","targetId","identifier","id","locationX","x","locationY","y","pageX","absoluteX","pageY","absoluteY","target","touches","changedTouches","gestureToPressEvent","event","handlerTag","isTouchWithinInset","dimensions","inset","touch","_touch$x","_inset$right","_touch$y","_inset$bottom","_touch$x2","_inset$left","_touch$y2","_inset$top","width","height","gestureToPressableEvent","Date","now","pressEvent","nativeEvent","force","undefined","gestureTouchToPressableEvent","_event$allTouches$at$","_event$allTouches$at","_event$allTouches$at$2","_event$allTouches$at2","_event$allTouches$at$3","_event$allTouches$at3","_event$allTouches$at$4","_event$allTouches$at4","touchesList","allTouches","map","changedTouchesList","at"],"sources":["utils.ts"],"sourcesContent":["import { Insets } from 'react-native';\nimport {\n HoverGestureHandlerEventPayload,\n LongPressGestureHandlerEventPayload,\n} from '../../handlers/GestureHandlerEventPayload';\nimport {\n TouchData,\n GestureStateChangeEvent,\n GestureTouchEvent,\n} from '../../handlers/gestureHandlerCommon';\nimport { InnerPressableEvent, PressableEvent } from './PressableProps';\n\nconst numberAsInset = (value: number): Insets => ({\n left: value,\n right: value,\n top: value,\n bottom: value,\n});\n\nconst addInsets = (a: Insets, b: Insets): Insets => ({\n left: (a.left ?? 0) + (b.left ?? 0),\n right: (a.right ?? 0) + (b.right ?? 0),\n top: (a.top ?? 0) + (b.top ?? 0),\n bottom: (a.bottom ?? 0) + (b.bottom ?? 0),\n});\n\nconst touchDataToPressEvent = (\n data: TouchData,\n timestamp: number,\n targetId: number\n): InnerPressableEvent => ({\n identifier: data.id,\n locationX: data.x,\n locationY: data.y,\n pageX: data.absoluteX,\n pageY: data.absoluteY,\n target: targetId,\n timestamp: timestamp,\n touches: [], // Always empty - legacy compatibility\n changedTouches: [], // Always empty - legacy compatibility\n});\n\nconst gestureToPressEvent = (\n event: GestureStateChangeEvent<\n HoverGestureHandlerEventPayload | LongPressGestureHandlerEventPayload\n >,\n timestamp: number,\n targetId: number\n): InnerPressableEvent => ({\n identifier: event.handlerTag,\n locationX: event.x,\n locationY: event.y,\n pageX: event.absoluteX,\n pageY: event.absoluteY,\n target: targetId,\n timestamp: timestamp,\n touches: [], // Always empty - legacy compatibility\n changedTouches: [], // Always empty - legacy compatibility\n});\n\nconst isTouchWithinInset = (\n dimensions: { width: number; height: number },\n inset: Insets,\n touch?: TouchData\n) =>\n (touch?.x ?? 0) < (inset.right ?? 0) + dimensions.width &&\n (touch?.y ?? 0) < (inset.bottom ?? 0) + dimensions.height &&\n (touch?.x ?? 0) > -(inset.left ?? 0) &&\n (touch?.y ?? 0) > -(inset.top ?? 0);\n\nconst gestureToPressableEvent = (\n event: GestureStateChangeEvent<\n HoverGestureHandlerEventPayload | LongPressGestureHandlerEventPayload\n >\n): PressableEvent => {\n const timestamp = Date.now();\n\n // As far as I can see, there isn't a conventional way of getting targetId with the data we get\n const targetId = 0;\n\n const pressEvent = gestureToPressEvent(event, timestamp, targetId);\n\n return {\n nativeEvent: {\n touches: [pressEvent],\n changedTouches: [pressEvent],\n identifier: pressEvent.identifier,\n locationX: event.x,\n locationY: event.y,\n pageX: event.absoluteX,\n pageY: event.absoluteY,\n target: targetId,\n timestamp: timestamp,\n force: undefined,\n },\n };\n};\n\nconst gestureTouchToPressableEvent = (\n event: GestureTouchEvent\n): PressableEvent => {\n const timestamp = Date.now();\n\n // As far as I can see, there isn't a conventional way of getting targetId with the data we get\n const targetId = 0;\n\n const touchesList = event.allTouches.map((touch: TouchData) =>\n touchDataToPressEvent(touch, timestamp, targetId)\n );\n const changedTouchesList = event.changedTouches.map((touch: TouchData) =>\n touchDataToPressEvent(touch, timestamp, targetId)\n );\n\n return {\n nativeEvent: {\n touches: touchesList,\n changedTouches: changedTouchesList,\n identifier: event.handlerTag,\n locationX: event.allTouches.at(0)?.x ?? -1,\n locationY: event.allTouches.at(0)?.y ?? -1,\n pageX: event.allTouches.at(0)?.absoluteX ?? -1,\n pageY: event.allTouches.at(0)?.absoluteY ?? -1,\n target: targetId,\n timestamp: timestamp,\n force: undefined,\n },\n };\n};\n\nexport {\n numberAsInset,\n addInsets,\n isTouchWithinInset,\n gestureToPressableEvent,\n gestureTouchToPressableEvent,\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"sources":["utils.ts"],"names":["numberAsInset","value","left","right","top","bottom","addInsets","a","b","touchDataToPressEvent","data","timestamp","targetId","identifier","id","locationX","x","locationY","y","pageX","absoluteX","pageY","absoluteY","target","touches","changedTouches","gestureToPressEvent","event","handlerTag","isTouchWithinInset","dimensions","inset","touch","width","height","gestureToPressableEvent","Date","now","pressEvent","nativeEvent","force","undefined","gestureTouchToPressableEvent","touchesList","allTouches","map","changedTouchesList","at"],"mappings":"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","sourcesContent":["import { Insets } from 'react-native';\nimport {\n HoverGestureHandlerEventPayload,\n LongPressGestureHandlerEventPayload,\n} from '../../handlers/GestureHandlerEventPayload';\nimport {\n TouchData,\n GestureStateChangeEvent,\n GestureTouchEvent,\n} from '../../handlers/gestureHandlerCommon';\nimport { InnerPressableEvent, PressableEvent } from './PressableProps';\n\nconst numberAsInset = (value: number): Insets => ({\n left: value,\n right: value,\n top: value,\n bottom: value,\n});\n\nconst addInsets = (a: Insets, b: Insets): Insets => ({\n left: (a.left ?? 0) + (b.left ?? 0),\n right: (a.right ?? 0) + (b.right ?? 0),\n top: (a.top ?? 0) + (b.top ?? 0),\n bottom: (a.bottom ?? 0) + (b.bottom ?? 0),\n});\n\nconst touchDataToPressEvent = (\n data: TouchData,\n timestamp: number,\n targetId: number\n): InnerPressableEvent => ({\n identifier: data.id,\n locationX: data.x,\n locationY: data.y,\n pageX: data.absoluteX,\n pageY: data.absoluteY,\n target: targetId,\n timestamp: timestamp,\n touches: [], // Always empty - legacy compatibility\n changedTouches: [], // Always empty - legacy compatibility\n});\n\nconst gestureToPressEvent = (\n event: GestureStateChangeEvent<\n HoverGestureHandlerEventPayload | LongPressGestureHandlerEventPayload\n >,\n timestamp: number,\n targetId: number\n): InnerPressableEvent => ({\n identifier: event.handlerTag,\n locationX: event.x,\n locationY: event.y,\n pageX: event.absoluteX,\n pageY: event.absoluteY,\n target: targetId,\n timestamp: timestamp,\n touches: [], // Always empty - legacy compatibility\n changedTouches: [], // Always empty - legacy compatibility\n});\n\nconst isTouchWithinInset = (\n dimensions: { width: number; height: number },\n inset: Insets,\n touch?: TouchData\n) =>\n (touch?.x ?? 0) < (inset.right ?? 0) + dimensions.width &&\n (touch?.y ?? 0) < (inset.bottom ?? 0) + dimensions.height &&\n (touch?.x ?? 0) > -(inset.left ?? 0) &&\n (touch?.y ?? 0) > -(inset.top ?? 0);\n\nconst gestureToPressableEvent = (\n event: GestureStateChangeEvent<\n HoverGestureHandlerEventPayload | LongPressGestureHandlerEventPayload\n >\n): PressableEvent => {\n const timestamp = Date.now();\n\n // As far as I can see, there isn't a conventional way of getting targetId with the data we get\n const targetId = 0;\n\n const pressEvent = gestureToPressEvent(event, timestamp, targetId);\n\n return {\n nativeEvent: {\n touches: [pressEvent],\n changedTouches: [pressEvent],\n identifier: pressEvent.identifier,\n locationX: event.x,\n locationY: event.y,\n pageX: event.absoluteX,\n pageY: event.absoluteY,\n target: targetId,\n timestamp: timestamp,\n force: undefined,\n },\n };\n};\n\nconst gestureTouchToPressableEvent = (\n event: GestureTouchEvent\n): PressableEvent => {\n const timestamp = Date.now();\n\n // As far as I can see, there isn't a conventional way of getting targetId with the data we get\n const targetId = 0;\n\n const touchesList = event.allTouches.map((touch: TouchData) =>\n touchDataToPressEvent(touch, timestamp, targetId)\n );\n const changedTouchesList = event.changedTouches.map((touch: TouchData) =>\n touchDataToPressEvent(touch, timestamp, targetId)\n );\n\n return {\n nativeEvent: {\n touches: touchesList,\n changedTouches: changedTouchesList,\n identifier: event.handlerTag,\n locationX: event.allTouches.at(0)?.x ?? -1,\n locationY: event.allTouches.at(0)?.y ?? -1,\n pageX: event.allTouches.at(0)?.absoluteX ?? -1,\n pageY: event.allTouches.at(0)?.absoluteY ?? -1,\n target: targetId,\n timestamp: timestamp,\n force: undefined,\n },\n };\n};\n\nexport {\n numberAsInset,\n addInsets,\n isTouchWithinInset,\n gestureToPressableEvent,\n gestureTouchToPressableEvent,\n};\n"]}
@@ -1,7 +1,6 @@
1
1
  // This component is based on RN's DrawerLayoutAndroid API
2
2
  // It's cross-compatible with all platforms despite
3
3
  // `DrawerLayoutAndroid` only being available on android
4
-
5
4
  import React, { forwardRef, useCallback, useEffect, useImperativeHandle, useMemo, useState } from 'react';
6
5
  import { StyleSheet, Keyboard, StatusBar, I18nManager, Platform } from 'react-native';
7
6
  import Animated, { Extrapolation, interpolate, runOnJS, useAnimatedProps, useAnimatedStyle, useDerivedValue, useSharedValue, withSpring } from 'react-native-reanimated';
@@ -9,34 +8,44 @@ import { GestureObjects as Gesture } from '../handlers/gestures/gestureObjects';
9
8
  import { GestureDetector } from '../handlers/gestures/GestureDetector';
10
9
  import { MouseButton } from '../handlers/gestureHandlerCommon';
11
10
  const DRAG_TOSS = 0.05;
12
- export let DrawerPosition = /*#__PURE__*/function (DrawerPosition) {
11
+ export let DrawerPosition;
12
+
13
+ (function (DrawerPosition) {
13
14
  DrawerPosition[DrawerPosition["LEFT"] = 0] = "LEFT";
14
15
  DrawerPosition[DrawerPosition["RIGHT"] = 1] = "RIGHT";
15
- return DrawerPosition;
16
- }({});
17
- export let DrawerState = /*#__PURE__*/function (DrawerState) {
16
+ })(DrawerPosition || (DrawerPosition = {}));
17
+
18
+ export let DrawerState;
19
+
20
+ (function (DrawerState) {
18
21
  DrawerState[DrawerState["IDLE"] = 0] = "IDLE";
19
22
  DrawerState[DrawerState["DRAGGING"] = 1] = "DRAGGING";
20
23
  DrawerState[DrawerState["SETTLING"] = 2] = "SETTLING";
21
- return DrawerState;
22
- }({});
23
- export let DrawerType = /*#__PURE__*/function (DrawerType) {
24
+ })(DrawerState || (DrawerState = {}));
25
+
26
+ export let DrawerType;
27
+
28
+ (function (DrawerType) {
24
29
  DrawerType[DrawerType["FRONT"] = 0] = "FRONT";
25
30
  DrawerType[DrawerType["BACK"] = 1] = "BACK";
26
31
  DrawerType[DrawerType["SLIDE"] = 2] = "SLIDE";
27
- return DrawerType;
28
- }({});
29
- export let DrawerLockMode = /*#__PURE__*/function (DrawerLockMode) {
32
+ })(DrawerType || (DrawerType = {}));
33
+
34
+ export let DrawerLockMode;
35
+
36
+ (function (DrawerLockMode) {
30
37
  DrawerLockMode[DrawerLockMode["UNLOCKED"] = 0] = "UNLOCKED";
31
38
  DrawerLockMode[DrawerLockMode["LOCKED_CLOSED"] = 1] = "LOCKED_CLOSED";
32
39
  DrawerLockMode[DrawerLockMode["LOCKED_OPEN"] = 2] = "LOCKED_OPEN";
33
- return DrawerLockMode;
34
- }({});
35
- export let DrawerKeyboardDismissMode = /*#__PURE__*/function (DrawerKeyboardDismissMode) {
40
+ })(DrawerLockMode || (DrawerLockMode = {}));
41
+
42
+ export let DrawerKeyboardDismissMode;
43
+
44
+ (function (DrawerKeyboardDismissMode) {
36
45
  DrawerKeyboardDismissMode[DrawerKeyboardDismissMode["NONE"] = 0] = "NONE";
37
46
  DrawerKeyboardDismissMode[DrawerKeyboardDismissMode["ON_DRAG"] = 1] = "ON_DRAG";
38
- return DrawerKeyboardDismissMode;
39
- }({});
47
+ })(DrawerKeyboardDismissMode || (DrawerKeyboardDismissMode = {}));
48
+
40
49
  const defaultProps = {
41
50
  drawerWidth: 200,
42
51
  drawerPosition: DrawerPosition.LEFT,
@@ -49,7 +58,10 @@ const defaultProps = {
49
58
  activeCursor: 'auto',
50
59
  mouseButton: MouseButton.LEFT,
51
60
  statusBarAnimation: 'slide'
52
- };
61
+ }; // StatusBar.setHidden and Keyboard.dismiss cannot be directly referenced in worklets.
62
+
63
+ const setStatusBarHidden = StatusBar.setHidden;
64
+ const dismissKeyboard = Keyboard.dismiss;
53
65
  const DrawerLayout = /*#__PURE__*/forwardRef(function DrawerLayout(props, ref) {
54
66
  const [containerWidth, setContainerWidth] = useState(0);
55
67
  const [drawerState, setDrawerState] = useState(DrawerState.IDLE);
@@ -77,12 +89,11 @@ const DrawerLayout = /*#__PURE__*/forwardRef(function DrawerLayout(props, ref) {
77
89
  onDrawerSlide,
78
90
  onDrawerClose,
79
91
  onDrawerOpen,
80
- onDrawerStateChanged
92
+ onDrawerStateChanged,
93
+ animationSpeed: animationSpeedProp
81
94
  } = props;
82
95
  const isFromLeft = drawerPosition === DrawerPosition.LEFT;
83
- const sideCorrection = isFromLeft ? 1 : -1;
84
-
85
- // While closing the drawer when user starts gesture in the greyed out part of the window,
96
+ const sideCorrection = isFromLeft ? 1 : -1; // While closing the drawer when user starts gesture in the greyed out part of the window,
86
97
  // we want the drawer to follow only once the finger reaches the edge of the drawer.
87
98
  // See the diagram for reference. * = starting finger position, < = current finger position
88
99
  // 1) +---------------+ 2) +---------------+ 3) +---------------+ 4) +---------------+
@@ -98,15 +109,18 @@ const DrawerLayout = /*#__PURE__*/forwardRef(function DrawerLayout(props, ref) {
98
109
  onDrawerSlide && runOnJS(onDrawerSlide)(openValue.value);
99
110
  }, []);
100
111
  const isDrawerOpen = useSharedValue(false);
112
+
101
113
  const handleContainerLayout = ({
102
114
  nativeEvent
103
115
  }) => {
104
116
  setContainerWidth(nativeEvent.layout.width);
105
117
  };
118
+
106
119
  const emitStateChanged = useCallback((newState, drawerWillShow) => {
107
120
  'worklet';
108
121
 
109
122
  var _runOnJS;
123
+
110
124
  onDrawerStateChanged && ((_runOnJS = runOnJS(onDrawerStateChanged)) === null || _runOnJS === void 0 ? void 0 : _runOnJS(newState, drawerWillShow));
111
125
  }, [onDrawerStateChanged]);
112
126
  const drawerAnimatedProps = useAnimatedProps(() => ({
@@ -114,19 +128,17 @@ const DrawerLayout = /*#__PURE__*/forwardRef(function DrawerLayout(props, ref) {
114
128
  }));
115
129
  const overlayAnimatedProps = useAnimatedProps(() => ({
116
130
  pointerEvents: isDrawerOpen.value ? 'auto' : 'none'
117
- }));
118
-
119
- // While the drawer is hidden, it's hitSlop overflows onto the main view by edgeWidth
131
+ })); // While the drawer is hidden, it's hitSlop overflows onto the main view by edgeWidth
120
132
  // This way it can be swiped open even when it's hidden
133
+
121
134
  const [edgeHitSlop, setEdgeHitSlop] = useState(isFromLeft ? {
122
135
  left: 0,
123
136
  width: edgeWidth
124
137
  } : {
125
138
  right: 0,
126
139
  width: edgeWidth
127
- });
140
+ }); // gestureOrientation is 1 if the gesture is expected to move from left to right and -1 otherwise
128
141
 
129
- // gestureOrientation is 1 if the gesture is expected to move from left to right and -1 otherwise
130
142
  const gestureOrientation = useMemo(() => sideCorrection * (drawerOpened ? -1 : 1), [sideCorrection, drawerOpened]);
131
143
  useEffect(() => {
132
144
  setEdgeHitSlop(isFromLeft ? {
@@ -144,15 +156,17 @@ const DrawerLayout = /*#__PURE__*/forwardRef(function DrawerLayout(props, ref) {
144
156
  isDrawerOpen.value = willShow;
145
157
  emitStateChanged(DrawerState.SETTLING, willShow);
146
158
  runOnJS(setDrawerState)(DrawerState.SETTLING);
159
+
147
160
  if (hideStatusBar) {
148
- runOnJS(StatusBar.setHidden)(willShow, statusBarAnimation);
161
+ runOnJS(setStatusBarHidden)(willShow, statusBarAnimation);
149
162
  }
163
+
150
164
  const normalizedToValue = interpolate(toValue, [0, drawerWidth], [0, 1], Extrapolation.CLAMP);
151
165
  const normalizedInitialVelocity = interpolate(initialVelocity, [0, drawerWidth], [0, 1], Extrapolation.CLAMP);
152
166
  openValue.value = withSpring(normalizedToValue, {
153
167
  overshootClamping: true,
154
168
  velocity: normalizedInitialVelocity,
155
- mass: animationSpeed ? 1 / animationSpeed : 1,
169
+ mass: animationSpeed ? 1 / animationSpeed : 1 / (animationSpeedProp !== null && animationSpeedProp !== void 0 ? animationSpeedProp : 1),
156
170
  damping: 40,
157
171
  stiffness: 500
158
172
  }, finished => {
@@ -160,11 +174,14 @@ const DrawerLayout = /*#__PURE__*/forwardRef(function DrawerLayout(props, ref) {
160
174
  emitStateChanged(DrawerState.IDLE, willShow);
161
175
  runOnJS(setDrawerOpened)(willShow);
162
176
  runOnJS(setDrawerState)(DrawerState.IDLE);
177
+
163
178
  if (willShow) {
164
179
  var _runOnJS2;
180
+
165
181
  onDrawerOpen && ((_runOnJS2 = runOnJS(onDrawerOpen)) === null || _runOnJS2 === void 0 ? void 0 : _runOnJS2());
166
182
  } else {
167
183
  var _runOnJS3;
184
+
168
185
  onDrawerClose && ((_runOnJS3 = runOnJS(onDrawerClose)) === null || _runOnJS3 === void 0 ? void 0 : _runOnJS3());
169
186
  }
170
187
  }
@@ -178,6 +195,7 @@ const DrawerLayout = /*#__PURE__*/forwardRef(function DrawerLayout(props, ref) {
178
195
  velocityX,
179
196
  x: touchX
180
197
  } = event;
198
+
181
199
  if (drawerPosition !== DrawerPosition.LEFT) {
182
200
  // See description in _updateAnimatedEvent about why events are flipped
183
201
  // for right-side drawer
@@ -185,14 +203,18 @@ const DrawerLayout = /*#__PURE__*/forwardRef(function DrawerLayout(props, ref) {
185
203
  touchX = containerWidth - touchX;
186
204
  velocityX = -velocityX;
187
205
  }
206
+
188
207
  const gestureStartX = touchX - dragX;
189
208
  let dragOffsetBasedOnStart = 0;
209
+
190
210
  if (drawerType === DrawerType.FRONT) {
191
211
  dragOffsetBasedOnStart = gestureStartX > drawerWidth ? gestureStartX - drawerWidth : 0;
192
212
  }
213
+
193
214
  const startOffsetX = dragX + dragOffsetBasedOnStart + (isDrawerOpen.value ? drawerWidth : 0);
194
215
  const projOffsetX = startOffsetX + DRAG_TOSS * velocityX;
195
216
  const shouldOpen = projOffsetX > drawerWidth / 2;
217
+
196
218
  if (shouldOpen) {
197
219
  animateDrawer(drawerWidth, velocityX);
198
220
  } else {
@@ -203,12 +225,14 @@ const DrawerLayout = /*#__PURE__*/forwardRef(function DrawerLayout(props, ref) {
203
225
  'worklet';
204
226
 
205
227
  var _options$initialVeloc;
228
+
206
229
  animateDrawer(drawerWidth, (_options$initialVeloc = options.initialVelocity) !== null && _options$initialVeloc !== void 0 ? _options$initialVeloc : 0, options.animationSpeed);
207
230
  }, [animateDrawer, drawerWidth]);
208
231
  const closeDrawer = useCallback((options = {}) => {
209
232
  'worklet';
210
233
 
211
234
  var _options$initialVeloc2;
235
+
212
236
  animateDrawer(0, (_options$initialVeloc2 = options.initialVelocity) !== null && _options$initialVeloc2 !== void 0 ? _options$initialVeloc2 : 0, options.animationSpeed);
213
237
  }, [animateDrawer]);
214
238
  const overlayDismissGesture = useMemo(() => Gesture.Tap().maxDistance(25).onEnd(() => {
@@ -229,11 +253,13 @@ const DrawerLayout = /*#__PURE__*/forwardRef(function DrawerLayout(props, ref) {
229
253
  return Gesture.Pan().activeCursor(activeCursor).mouseButton(mouseButton).hitSlop(drawerOpened ? fillHitSlop : edgeHitSlop).minDistance(drawerOpened ? 100 : 0).activeOffsetX(gestureOrientation * minSwipeDistance).failOffsetY([-15, 15]).simultaneousWithExternalGesture(overlayDismissGesture).enableTrackpadTwoFingerGesture(enableTrackpadTwoFingerGesture).enabled(drawerState !== DrawerState.SETTLING && (drawerOpened ? drawerLockMode !== DrawerLockMode.LOCKED_OPEN : drawerLockMode !== DrawerLockMode.LOCKED_CLOSED)).onStart(() => {
230
254
  emitStateChanged(DrawerState.DRAGGING, false);
231
255
  runOnJS(setDrawerState)(DrawerState.DRAGGING);
256
+
232
257
  if (keyboardDismissMode === DrawerKeyboardDismissMode.ON_DRAG) {
233
- runOnJS(Keyboard.dismiss)();
258
+ runOnJS(dismissKeyboard)();
234
259
  }
260
+
235
261
  if (hideStatusBar) {
236
- runOnJS(StatusBar.setHidden)(true, statusBarAnimation);
262
+ runOnJS(setStatusBarHidden)(true, statusBarAnimation);
237
263
  }
238
264
  }).onUpdate(event => {
239
265
  const startedOutsideTranslation = isFromLeft ? interpolate(event.x, [0, drawerWidth, drawerWidth + 1], [0, drawerWidth, drawerWidth]) : interpolate(event.x - containerWidth, [-drawerWidth - 1, -drawerWidth, 0], [drawerWidth, drawerWidth, 0]);
@@ -241,9 +267,8 @@ const DrawerLayout = /*#__PURE__*/forwardRef(function DrawerLayout(props, ref) {
241
267
  const adjustedTranslation = Math.max(drawerOpened ? startedOutsideTranslation : 0, startedInsideTranslation);
242
268
  openValue.value = interpolate(adjustedTranslation, [-drawerWidth, 0, drawerWidth], [1, 0, 1], Extrapolation.CLAMP);
243
269
  }).onEnd(handleRelease);
244
- }, [drawerLockMode, openValue, drawerWidth, emitStateChanged, gestureOrientation, handleRelease, edgeHitSlop, fillHitSlop, minSwipeDistance, hideStatusBar, keyboardDismissMode, overlayDismissGesture, drawerOpened, isFromLeft, containerWidth, sideCorrection, drawerState, activeCursor, enableTrackpadTwoFingerGesture, mouseButton, statusBarAnimation]);
270
+ }, [drawerLockMode, openValue, drawerWidth, emitStateChanged, gestureOrientation, handleRelease, edgeHitSlop, fillHitSlop, minSwipeDistance, hideStatusBar, keyboardDismissMode, overlayDismissGesture, drawerOpened, isFromLeft, containerWidth, sideCorrection, drawerState, activeCursor, enableTrackpadTwoFingerGesture, mouseButton, statusBarAnimation]); // When using RTL, row and row-reverse flex directions are flipped.
245
271
 
246
- // When using RTL, row and row-reverse flex directions are flipped.
247
272
  const reverseContentDirection = I18nManager.isRTL ? isFromLeft : !isFromLeft;
248
273
  const dynamicDrawerStyles = {
249
274
  backgroundColor: drawerBackgroundColor,
@@ -253,6 +278,7 @@ const DrawerLayout = /*#__PURE__*/forwardRef(function DrawerLayout(props, ref) {
253
278
  if (drawerType === DrawerType.FRONT) {
254
279
  return {};
255
280
  }
281
+
256
282
  return {
257
283
  transform: [{
258
284
  translateX: interpolate(openValue.value, [0, 1], [0, drawerWidth * sideCorrection], Extrapolation.CLAMP)
@@ -263,6 +289,7 @@ const DrawerLayout = /*#__PURE__*/forwardRef(function DrawerLayout(props, ref) {
263
289
  const closedDrawerOffset = drawerWidth * -sideCorrection;
264
290
  const isBack = drawerType === DrawerType.BACK;
265
291
  const isIdle = drawerState === DrawerState.IDLE;
292
+
266
293
  if (isBack) {
267
294
  return {
268
295
  transform: [{
@@ -271,12 +298,15 @@ const DrawerLayout = /*#__PURE__*/forwardRef(function DrawerLayout(props, ref) {
271
298
  flexDirection: reverseContentDirection ? 'row-reverse' : 'row'
272
299
  };
273
300
  }
301
+
274
302
  let translateX = 0;
303
+
275
304
  if (isIdle) {
276
305
  translateX = drawerOpened ? 0 : closedDrawerOffset;
277
306
  } else {
278
307
  translateX = interpolate(openValue.value, [0, 1], [closedDrawerOffset, 0], Extrapolation.CLAMP);
279
308
  }
309
+
280
310
  return {
281
311
  transform: [{
282
312
  translateX
@@ -318,25 +348,21 @@ const DrawerLayout = /*#__PURE__*/forwardRef(function DrawerLayout(props, ref) {
318
348
  });
319
349
  export default DrawerLayout;
320
350
  const styles = StyleSheet.create({
321
- drawerContainer: {
322
- ...StyleSheet.absoluteFillObject,
351
+ drawerContainer: { ...StyleSheet.absoluteFillObject,
323
352
  zIndex: 1001,
324
353
  flexDirection: 'row'
325
354
  },
326
- containerInFront: {
327
- ...StyleSheet.absoluteFillObject,
355
+ containerInFront: { ...StyleSheet.absoluteFillObject,
328
356
  zIndex: 1002
329
357
  },
330
- containerOnBack: {
331
- ...StyleSheet.absoluteFillObject
358
+ containerOnBack: { ...StyleSheet.absoluteFillObject
332
359
  },
333
360
  main: {
334
361
  flex: 1,
335
362
  zIndex: 0,
336
363
  overflow: 'hidden'
337
364
  },
338
- overlay: {
339
- ...StyleSheet.absoluteFillObject,
365
+ overlay: { ...StyleSheet.absoluteFillObject,
340
366
  zIndex: 1000
341
367
  }
342
368
  });
@@ -1 +1 @@
1
- {"version":3,"names":["React","forwardRef","useCallback","useEffect","useImperativeHandle","useMemo","useState","StyleSheet","Keyboard","StatusBar","I18nManager","Platform","Animated","Extrapolation","interpolate","runOnJS","useAnimatedProps","useAnimatedStyle","useDerivedValue","useSharedValue","withSpring","GestureObjects","Gesture","GestureDetector","MouseButton","DRAG_TOSS","DrawerPosition","DrawerState","DrawerType","DrawerLockMode","DrawerKeyboardDismissMode","defaultProps","drawerWidth","drawerPosition","LEFT","drawerType","FRONT","edgeWidth","minSwipeDistance","overlayColor","drawerLockMode","UNLOCKED","enableTrackpadTwoFingerGesture","activeCursor","mouseButton","statusBarAnimation","DrawerLayout","props","ref","containerWidth","setContainerWidth","drawerState","setDrawerState","IDLE","drawerOpened","setDrawerOpened","drawerBackgroundColor","drawerContainerStyle","contentContainerStyle","hideStatusBar","keyboardDismissMode","userSelect","enableContextMenu","renderNavigationView","onDrawerSlide","onDrawerClose","onDrawerOpen","onDrawerStateChanged","isFromLeft","sideCorrection","openValue","value","isDrawerOpen","handleContainerLayout","nativeEvent","layout","width","emitStateChanged","newState","drawerWillShow","_runOnJS","drawerAnimatedProps","accessibilityViewIsModal","overlayAnimatedProps","pointerEvents","edgeHitSlop","setEdgeHitSlop","left","right","gestureOrientation","animateDrawer","toValue","initialVelocity","animationSpeed","willShow","SETTLING","setHidden","normalizedToValue","CLAMP","normalizedInitialVelocity","overshootClamping","velocity","mass","damping","stiffness","finished","_runOnJS2","_runOnJS3","handleRelease","event","translationX","dragX","velocityX","x","touchX","gestureStartX","dragOffsetBasedOnStart","startOffsetX","projOffsetX","shouldOpen","openDrawer","options","_options$initialVeloc","closeDrawer","_options$initialVeloc2","overlayDismissGesture","Tap","maxDistance","onEnd","LOCKED_OPEN","overlayAnimatedStyle","opacity","backgroundColor","fillHitSlop","panGesture","Pan","hitSlop","minDistance","activeOffsetX","failOffsetY","simultaneousWithExternalGesture","enabled","LOCKED_CLOSED","onStart","DRAGGING","ON_DRAG","dismiss","onUpdate","startedOutsideTranslation","startedInsideTranslation","adjustedTranslation","Math","max","reverseContentDirection","isRTL","dynamicDrawerStyles","containerStyles","transform","translateX","drawerAnimatedStyle","closedDrawerOffset","isBack","BACK","isIdle","flexDirection","containerAnimatedProps","importantForAccessibility","OS","undefined","children","createElement","gesture","View","style","styles","main","onLayout","containerOnBack","containerInFront","animatedProps","overlay","drawerContainer","create","absoluteFillObject","zIndex","flex","overflow"],"sources":["ReanimatedDrawerLayout.tsx"],"sourcesContent":["// This component is based on RN's DrawerLayoutAndroid API\n// It's cross-compatible with all platforms despite\n// `DrawerLayoutAndroid` only being available on android\n\nimport React, {\n ReactNode,\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useState,\n} from 'react';\n\nimport {\n StyleSheet,\n Keyboard,\n StatusBar,\n I18nManager,\n StatusBarAnimation,\n StyleProp,\n ViewStyle,\n LayoutChangeEvent,\n Platform,\n} from 'react-native';\n\nimport Animated, {\n Extrapolation,\n SharedValue,\n interpolate,\n runOnJS,\n useAnimatedProps,\n useAnimatedStyle,\n useDerivedValue,\n useSharedValue,\n withSpring,\n} from 'react-native-reanimated';\n\nimport { GestureObjects as Gesture } from '../handlers/gestures/gestureObjects';\nimport { GestureDetector } from '../handlers/gestures/GestureDetector';\nimport {\n UserSelect,\n ActiveCursor,\n MouseButton,\n HitSlop,\n GestureStateChangeEvent,\n} from '../handlers/gestureHandlerCommon';\nimport { PanGestureHandlerEventPayload } from '../handlers/GestureHandlerEventPayload';\n\nconst DRAG_TOSS = 0.05;\n\nexport enum DrawerPosition {\n LEFT,\n RIGHT,\n}\n\nexport enum DrawerState {\n IDLE,\n DRAGGING,\n SETTLING,\n}\n\nexport enum DrawerType {\n FRONT,\n BACK,\n SLIDE,\n}\n\nexport enum DrawerLockMode {\n UNLOCKED,\n LOCKED_CLOSED,\n LOCKED_OPEN,\n}\n\nexport enum DrawerKeyboardDismissMode {\n NONE,\n ON_DRAG,\n}\n\nexport interface DrawerLayoutProps {\n /**\n * This attribute is present in the native android implementation already and is one\n * of the required params. The gesture handler version of DrawerLayout makes it\n * possible for the function passed as `renderNavigationView` to take an\n * Animated value as a parameter that indicates the progress of drawer\n * opening/closing animation (progress value is 0 when closed and 1 when\n * opened). This can be used by the drawer component to animated its children\n * while the drawer is opening or closing.\n */\n renderNavigationView: (\n progressAnimatedValue: SharedValue<number>\n ) => ReactNode;\n\n /**\n * Determines the side from which the drawer will open.\n */\n drawerPosition?: DrawerPosition;\n\n /**\n * Width of the drawer.\n */\n drawerWidth?: number;\n\n /**\n * Background color of the drawer.\n */\n drawerBackgroundColor?: string;\n\n /**\n * Specifies the lock mode of the drawer.\n * Programatic opening/closing isn't affected by the lock mode. Defaults to `UNLOCKED`.\n * - `UNLOCKED` - the drawer will respond to gestures.\n * - `LOCKED_CLOSED` - the drawer will move freely until it settles in a closed position, then the gestures will be disabled.\n * - `LOCKED_OPEN` - the drawer will move freely until it settles in an opened position, then the gestures will be disabled.\n */\n drawerLockMode?: DrawerLockMode;\n\n /**\n * Determines if system keyboard should be closed upon dragging the drawer.\n */\n keyboardDismissMode?: DrawerKeyboardDismissMode;\n\n /**\n * Called when the drawer is closed.\n */\n onDrawerClose?: () => void;\n\n /**\n * Called when the drawer is opened.\n */\n onDrawerOpen?: () => void;\n\n /**\n * Called when the status of the drawer changes.\n */\n onDrawerStateChanged?: (\n newState: DrawerState,\n drawerWillShow: boolean\n ) => void;\n\n /**\n * Type of animation that will play when opening the drawer.\n */\n drawerType?: DrawerType;\n\n /**\n * Defines how far from the edge of the content view the gesture should\n * activate.\n */\n edgeWidth?: number;\n\n /**\n * Minimal distance to swipe before the drawer starts moving.\n */\n minSwipeDistance?: number;\n\n /**\n * When set to true Drawer component will use\n * {@link https://reactnative.dev/docs/statusbar StatusBar} API to hide the OS\n * status bar whenever the drawer is pulled or when its in an \"open\" state.\n */\n hideStatusBar?: boolean;\n\n /**\n * @default 'slide'\n *\n * Can be used when hideStatusBar is set to true and will select the animation\n * used for hiding/showing the status bar. See\n * {@link https://reactnative.dev/docs/statusbar StatusBar} documentation for\n * more details\n */\n statusBarAnimation?: StatusBarAnimation;\n\n /**\n * @default 'rgba(0, 0, 0, 0.7)'\n *\n * Color of the background overlay.\n * Animated from `0%` to `100%` as the drawer opens.\n */\n overlayColor?: string;\n\n /**\n * Style wrapping the content.\n */\n contentContainerStyle?: StyleProp<ViewStyle>;\n\n /**\n * Style wrapping the drawer.\n */\n drawerContainerStyle?: StyleProp<ViewStyle>;\n\n /**\n * Enables two-finger gestures on supported devices, for example iPads with\n * trackpads. If not enabled the gesture will require click + drag, with\n * `enableTrackpadTwoFingerGesture` swiping with two fingers will also trigger\n * the gesture.\n */\n enableTrackpadTwoFingerGesture?: boolean;\n\n onDrawerSlide?: (position: number) => void;\n\n // Implicit `children` prop has been removed in @types/react^18.0.\n /**\n * Elements that will be rendered inside the content view.\n */\n children?: ReactNode | ((openValue?: SharedValue<number>) => ReactNode);\n\n /**\n * @default 'none'\n * Sets whether the text inside both the drawer and the context window can be selected.\n * Values: 'none' | 'text' | 'auto'\n */\n userSelect?: UserSelect;\n\n /**\n * @default 'auto'\n * Sets the displayed cursor pictogram when the drawer is being dragged.\n * Values: see CSS cursor values\n */\n activeCursor?: ActiveCursor;\n\n /**\n * @default 'MouseButton.LEFT'\n * Allows to choose which mouse button should underlying pan handler react to.\n */\n mouseButton?: MouseButton;\n\n /**\n * @default 'false if MouseButton.RIGHT is specified'\n * Allows to enable/disable context menu.\n */\n enableContextMenu?: boolean;\n}\n\nexport type DrawerMovementOption = {\n initialVelocity?: number;\n animationSpeed?: number;\n};\n\nexport interface DrawerLayoutMethods {\n openDrawer: (options?: DrawerMovementOption) => void;\n closeDrawer: (options?: DrawerMovementOption) => void;\n}\n\nconst defaultProps = {\n drawerWidth: 200,\n drawerPosition: DrawerPosition.LEFT,\n drawerType: DrawerType.FRONT,\n edgeWidth: 20,\n minSwipeDistance: 3,\n overlayColor: 'rgba(0, 0, 0, 0.7)',\n drawerLockMode: DrawerLockMode.UNLOCKED,\n enableTrackpadTwoFingerGesture: false,\n activeCursor: 'auto' as ActiveCursor,\n mouseButton: MouseButton.LEFT,\n statusBarAnimation: 'slide' as StatusBarAnimation,\n};\n\nconst DrawerLayout = forwardRef<DrawerLayoutMethods, DrawerLayoutProps>(\n function DrawerLayout(props: DrawerLayoutProps, ref) {\n const [containerWidth, setContainerWidth] = useState(0);\n const [drawerState, setDrawerState] = useState<DrawerState>(\n DrawerState.IDLE\n );\n const [drawerOpened, setDrawerOpened] = useState(false);\n\n const {\n drawerPosition = defaultProps.drawerPosition,\n drawerWidth = defaultProps.drawerWidth,\n drawerType = defaultProps.drawerType,\n drawerBackgroundColor,\n drawerContainerStyle,\n contentContainerStyle,\n minSwipeDistance = defaultProps.minSwipeDistance,\n edgeWidth = defaultProps.edgeWidth,\n drawerLockMode = defaultProps.drawerLockMode,\n overlayColor = defaultProps.overlayColor,\n enableTrackpadTwoFingerGesture = defaultProps.enableTrackpadTwoFingerGesture,\n activeCursor = defaultProps.activeCursor,\n mouseButton = defaultProps.mouseButton,\n statusBarAnimation = defaultProps.statusBarAnimation,\n hideStatusBar,\n keyboardDismissMode,\n userSelect,\n enableContextMenu,\n renderNavigationView,\n onDrawerSlide,\n onDrawerClose,\n onDrawerOpen,\n onDrawerStateChanged,\n } = props;\n\n const isFromLeft = drawerPosition === DrawerPosition.LEFT;\n\n const sideCorrection = isFromLeft ? 1 : -1;\n\n // While closing the drawer when user starts gesture in the greyed out part of the window,\n // we want the drawer to follow only once the finger reaches the edge of the drawer.\n // See the diagram for reference. * = starting finger position, < = current finger position\n // 1) +---------------+ 2) +---------------+ 3) +---------------+ 4) +---------------+\n // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|\n // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|\n // |XXXXXXXX|..<*..| |XXXXXXXX|.<-*..| |XXXXXXXX|<--*..| |XXXXX|<-----*..|\n // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|\n // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|\n // +---------------+ +---------------+ +---------------+ +---------------+\n\n const openValue = useSharedValue<number>(0);\n\n useDerivedValue(() => {\n onDrawerSlide && runOnJS(onDrawerSlide)(openValue.value);\n }, []);\n\n const isDrawerOpen = useSharedValue(false);\n\n const handleContainerLayout = ({ nativeEvent }: LayoutChangeEvent) => {\n setContainerWidth(nativeEvent.layout.width);\n };\n\n const emitStateChanged = useCallback(\n (newState: DrawerState, drawerWillShow: boolean) => {\n 'worklet';\n onDrawerStateChanged &&\n runOnJS(onDrawerStateChanged)?.(newState, drawerWillShow);\n },\n [onDrawerStateChanged]\n );\n\n const drawerAnimatedProps = useAnimatedProps(() => ({\n accessibilityViewIsModal: isDrawerOpen.value,\n }));\n\n const overlayAnimatedProps = useAnimatedProps(() => ({\n pointerEvents: isDrawerOpen.value ? ('auto' as const) : ('none' as const),\n }));\n\n // While the drawer is hidden, it's hitSlop overflows onto the main view by edgeWidth\n // This way it can be swiped open even when it's hidden\n const [edgeHitSlop, setEdgeHitSlop] = useState<HitSlop>(\n isFromLeft\n ? { left: 0, width: edgeWidth }\n : { right: 0, width: edgeWidth }\n );\n\n // gestureOrientation is 1 if the gesture is expected to move from left to right and -1 otherwise\n const gestureOrientation = useMemo(\n () => sideCorrection * (drawerOpened ? -1 : 1),\n [sideCorrection, drawerOpened]\n );\n\n useEffect(() => {\n setEdgeHitSlop(\n isFromLeft\n ? { left: 0, width: edgeWidth }\n : { right: 0, width: edgeWidth }\n );\n }, [isFromLeft, edgeWidth]);\n\n const animateDrawer = useCallback(\n (toValue: number, initialVelocity: number, animationSpeed?: number) => {\n 'worklet';\n const willShow = toValue !== 0;\n isDrawerOpen.value = willShow;\n\n emitStateChanged(DrawerState.SETTLING, willShow);\n runOnJS(setDrawerState)(DrawerState.SETTLING);\n\n if (hideStatusBar) {\n runOnJS(StatusBar.setHidden)(willShow, statusBarAnimation);\n }\n\n const normalizedToValue = interpolate(\n toValue,\n [0, drawerWidth],\n [0, 1],\n Extrapolation.CLAMP\n );\n\n const normalizedInitialVelocity = interpolate(\n initialVelocity,\n [0, drawerWidth],\n [0, 1],\n Extrapolation.CLAMP\n );\n\n openValue.value = withSpring(\n normalizedToValue,\n {\n overshootClamping: true,\n velocity: normalizedInitialVelocity,\n mass: animationSpeed ? 1 / animationSpeed : 1,\n damping: 40,\n stiffness: 500,\n },\n (finished) => {\n if (finished) {\n emitStateChanged(DrawerState.IDLE, willShow);\n runOnJS(setDrawerOpened)(willShow);\n runOnJS(setDrawerState)(DrawerState.IDLE);\n if (willShow) {\n onDrawerOpen && runOnJS(onDrawerOpen)?.();\n } else {\n onDrawerClose && runOnJS(onDrawerClose)?.();\n }\n }\n }\n );\n },\n [\n openValue,\n emitStateChanged,\n isDrawerOpen,\n hideStatusBar,\n onDrawerClose,\n onDrawerOpen,\n drawerWidth,\n statusBarAnimation,\n ]\n );\n\n const handleRelease = useCallback(\n (event: GestureStateChangeEvent<PanGestureHandlerEventPayload>) => {\n 'worklet';\n let { translationX: dragX, velocityX, x: touchX } = event;\n\n if (drawerPosition !== DrawerPosition.LEFT) {\n // See description in _updateAnimatedEvent about why events are flipped\n // for right-side drawer\n dragX = -dragX;\n touchX = containerWidth - touchX;\n velocityX = -velocityX;\n }\n\n const gestureStartX = touchX - dragX;\n let dragOffsetBasedOnStart = 0;\n\n if (drawerType === DrawerType.FRONT) {\n dragOffsetBasedOnStart =\n gestureStartX > drawerWidth ? gestureStartX - drawerWidth : 0;\n }\n\n const startOffsetX =\n dragX +\n dragOffsetBasedOnStart +\n (isDrawerOpen.value ? drawerWidth : 0);\n\n const projOffsetX = startOffsetX + DRAG_TOSS * velocityX;\n\n const shouldOpen = projOffsetX > drawerWidth / 2;\n\n if (shouldOpen) {\n animateDrawer(drawerWidth, velocityX);\n } else {\n animateDrawer(0, velocityX);\n }\n },\n [\n animateDrawer,\n containerWidth,\n drawerPosition,\n drawerType,\n drawerWidth,\n isDrawerOpen,\n ]\n );\n\n const openDrawer = useCallback(\n (options: DrawerMovementOption = {}) => {\n 'worklet';\n animateDrawer(\n drawerWidth,\n options.initialVelocity ?? 0,\n options.animationSpeed\n );\n },\n [animateDrawer, drawerWidth]\n );\n\n const closeDrawer = useCallback(\n (options: DrawerMovementOption = {}) => {\n 'worklet';\n animateDrawer(0, options.initialVelocity ?? 0, options.animationSpeed);\n },\n [animateDrawer]\n );\n\n const overlayDismissGesture = useMemo(\n () =>\n Gesture.Tap()\n .maxDistance(25)\n .onEnd(() => {\n if (\n isDrawerOpen.value &&\n drawerLockMode !== DrawerLockMode.LOCKED_OPEN\n ) {\n closeDrawer();\n }\n }),\n [closeDrawer, isDrawerOpen, drawerLockMode]\n );\n\n const overlayAnimatedStyle = useAnimatedStyle(() => ({\n opacity: openValue.value,\n backgroundColor: overlayColor,\n }));\n\n const fillHitSlop = useMemo(\n () => (isFromLeft ? { left: drawerWidth } : { right: drawerWidth }),\n [drawerWidth, isFromLeft]\n );\n\n const panGesture = useMemo(() => {\n return Gesture.Pan()\n .activeCursor(activeCursor)\n .mouseButton(mouseButton)\n .hitSlop(drawerOpened ? fillHitSlop : edgeHitSlop)\n .minDistance(drawerOpened ? 100 : 0)\n .activeOffsetX(gestureOrientation * minSwipeDistance)\n .failOffsetY([-15, 15])\n .simultaneousWithExternalGesture(overlayDismissGesture)\n .enableTrackpadTwoFingerGesture(enableTrackpadTwoFingerGesture)\n .enabled(\n drawerState !== DrawerState.SETTLING &&\n (drawerOpened\n ? drawerLockMode !== DrawerLockMode.LOCKED_OPEN\n : drawerLockMode !== DrawerLockMode.LOCKED_CLOSED)\n )\n .onStart(() => {\n emitStateChanged(DrawerState.DRAGGING, false);\n runOnJS(setDrawerState)(DrawerState.DRAGGING);\n if (keyboardDismissMode === DrawerKeyboardDismissMode.ON_DRAG) {\n runOnJS(Keyboard.dismiss)();\n }\n if (hideStatusBar) {\n runOnJS(StatusBar.setHidden)(true, statusBarAnimation);\n }\n })\n .onUpdate((event) => {\n const startedOutsideTranslation = isFromLeft\n ? interpolate(\n event.x,\n [0, drawerWidth, drawerWidth + 1],\n [0, drawerWidth, drawerWidth]\n )\n : interpolate(\n event.x - containerWidth,\n [-drawerWidth - 1, -drawerWidth, 0],\n [drawerWidth, drawerWidth, 0]\n );\n\n const startedInsideTranslation =\n sideCorrection *\n (event.translationX +\n (drawerOpened ? drawerWidth * -gestureOrientation : 0));\n\n const adjustedTranslation = Math.max(\n drawerOpened ? startedOutsideTranslation : 0,\n startedInsideTranslation\n );\n\n openValue.value = interpolate(\n adjustedTranslation,\n [-drawerWidth, 0, drawerWidth],\n [1, 0, 1],\n Extrapolation.CLAMP\n );\n })\n .onEnd(handleRelease);\n }, [\n drawerLockMode,\n openValue,\n drawerWidth,\n emitStateChanged,\n gestureOrientation,\n handleRelease,\n edgeHitSlop,\n fillHitSlop,\n minSwipeDistance,\n hideStatusBar,\n keyboardDismissMode,\n overlayDismissGesture,\n drawerOpened,\n isFromLeft,\n containerWidth,\n sideCorrection,\n drawerState,\n activeCursor,\n enableTrackpadTwoFingerGesture,\n mouseButton,\n statusBarAnimation,\n ]);\n\n // When using RTL, row and row-reverse flex directions are flipped.\n const reverseContentDirection = I18nManager.isRTL\n ? isFromLeft\n : !isFromLeft;\n\n const dynamicDrawerStyles = {\n backgroundColor: drawerBackgroundColor,\n width: drawerWidth,\n };\n\n const containerStyles = useAnimatedStyle(() => {\n if (drawerType === DrawerType.FRONT) {\n return {};\n }\n\n return {\n transform: [\n {\n translateX: interpolate(\n openValue.value,\n [0, 1],\n [0, drawerWidth * sideCorrection],\n Extrapolation.CLAMP\n ),\n },\n ],\n };\n });\n\n const drawerAnimatedStyle = useAnimatedStyle(() => {\n const closedDrawerOffset = drawerWidth * -sideCorrection;\n const isBack = drawerType === DrawerType.BACK;\n const isIdle = drawerState === DrawerState.IDLE;\n\n if (isBack) {\n return {\n transform: [{ translateX: 0 }],\n flexDirection: reverseContentDirection ? 'row-reverse' : 'row',\n };\n }\n\n let translateX = 0;\n\n if (isIdle) {\n translateX = drawerOpened ? 0 : closedDrawerOffset;\n } else {\n translateX = interpolate(\n openValue.value,\n [0, 1],\n [closedDrawerOffset, 0],\n Extrapolation.CLAMP\n );\n }\n\n return {\n transform: [{ translateX }],\n flexDirection: reverseContentDirection ? 'row-reverse' : 'row',\n };\n });\n\n const containerAnimatedProps = useAnimatedProps(() => ({\n importantForAccessibility:\n Platform.OS === 'android'\n ? isDrawerOpen.value\n ? ('no-hide-descendants' as const)\n : ('yes' as const)\n : undefined,\n }));\n\n const children =\n typeof props.children === 'function'\n ? props.children(openValue) // renderer function\n : props.children;\n\n useImperativeHandle(\n ref,\n () => ({\n openDrawer,\n closeDrawer,\n }),\n [openDrawer, closeDrawer]\n );\n\n return (\n <GestureDetector\n gesture={panGesture}\n userSelect={userSelect}\n enableContextMenu={enableContextMenu}>\n <Animated.View style={styles.main} onLayout={handleContainerLayout}>\n <GestureDetector gesture={overlayDismissGesture}>\n <Animated.View\n style={[\n drawerType === DrawerType.FRONT\n ? styles.containerOnBack\n : styles.containerInFront,\n containerStyles,\n contentContainerStyle,\n ]}\n animatedProps={containerAnimatedProps}>\n {children}\n <Animated.View\n animatedProps={overlayAnimatedProps}\n style={[styles.overlay, overlayAnimatedStyle]}\n />\n </Animated.View>\n </GestureDetector>\n <Animated.View\n pointerEvents=\"box-none\"\n animatedProps={drawerAnimatedProps}\n style={[\n styles.drawerContainer,\n drawerAnimatedStyle,\n drawerContainerStyle,\n ]}>\n <Animated.View style={dynamicDrawerStyles}>\n {renderNavigationView(openValue)}\n </Animated.View>\n </Animated.View>\n </Animated.View>\n </GestureDetector>\n );\n }\n);\n\nexport default DrawerLayout;\n\nconst styles = StyleSheet.create({\n drawerContainer: {\n ...StyleSheet.absoluteFillObject,\n zIndex: 1001,\n flexDirection: 'row',\n },\n containerInFront: {\n ...StyleSheet.absoluteFillObject,\n zIndex: 1002,\n },\n containerOnBack: {\n ...StyleSheet.absoluteFillObject,\n },\n main: {\n flex: 1,\n zIndex: 0,\n overflow: 'hidden',\n },\n overlay: {\n ...StyleSheet.absoluteFillObject,\n zIndex: 1000,\n },\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"sources":["ReanimatedDrawerLayout.tsx"],"names":["React","forwardRef","useCallback","useEffect","useImperativeHandle","useMemo","useState","StyleSheet","Keyboard","StatusBar","I18nManager","Platform","Animated","Extrapolation","interpolate","runOnJS","useAnimatedProps","useAnimatedStyle","useDerivedValue","useSharedValue","withSpring","GestureObjects","Gesture","GestureDetector","MouseButton","DRAG_TOSS","DrawerPosition","DrawerState","DrawerType","DrawerLockMode","DrawerKeyboardDismissMode","defaultProps","drawerWidth","drawerPosition","LEFT","drawerType","FRONT","edgeWidth","minSwipeDistance","overlayColor","drawerLockMode","UNLOCKED","enableTrackpadTwoFingerGesture","activeCursor","mouseButton","statusBarAnimation","setStatusBarHidden","setHidden","dismissKeyboard","dismiss","DrawerLayout","props","ref","containerWidth","setContainerWidth","drawerState","setDrawerState","IDLE","drawerOpened","setDrawerOpened","drawerBackgroundColor","drawerContainerStyle","contentContainerStyle","hideStatusBar","keyboardDismissMode","userSelect","enableContextMenu","renderNavigationView","onDrawerSlide","onDrawerClose","onDrawerOpen","onDrawerStateChanged","animationSpeed","animationSpeedProp","isFromLeft","sideCorrection","openValue","value","isDrawerOpen","handleContainerLayout","nativeEvent","layout","width","emitStateChanged","newState","drawerWillShow","drawerAnimatedProps","accessibilityViewIsModal","overlayAnimatedProps","pointerEvents","edgeHitSlop","setEdgeHitSlop","left","right","gestureOrientation","animateDrawer","toValue","initialVelocity","willShow","SETTLING","normalizedToValue","CLAMP","normalizedInitialVelocity","overshootClamping","velocity","mass","damping","stiffness","finished","handleRelease","event","translationX","dragX","velocityX","x","touchX","gestureStartX","dragOffsetBasedOnStart","startOffsetX","projOffsetX","shouldOpen","openDrawer","options","closeDrawer","overlayDismissGesture","Tap","maxDistance","onEnd","LOCKED_OPEN","overlayAnimatedStyle","opacity","backgroundColor","fillHitSlop","panGesture","Pan","hitSlop","minDistance","activeOffsetX","failOffsetY","simultaneousWithExternalGesture","enabled","LOCKED_CLOSED","onStart","DRAGGING","ON_DRAG","onUpdate","startedOutsideTranslation","startedInsideTranslation","adjustedTranslation","Math","max","reverseContentDirection","isRTL","dynamicDrawerStyles","containerStyles","transform","translateX","drawerAnimatedStyle","closedDrawerOffset","isBack","BACK","isIdle","flexDirection","containerAnimatedProps","importantForAccessibility","OS","undefined","children","styles","main","containerOnBack","containerInFront","overlay","drawerContainer","create","absoluteFillObject","zIndex","flex","overflow"],"mappings":"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","sourcesContent":["// This component is based on RN's DrawerLayoutAndroid API\n// It's cross-compatible with all platforms despite\n// `DrawerLayoutAndroid` only being available on android\n\nimport React, {\n ReactNode,\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useState,\n} from 'react';\n\nimport {\n StyleSheet,\n Keyboard,\n StatusBar,\n I18nManager,\n StatusBarAnimation,\n StyleProp,\n ViewStyle,\n LayoutChangeEvent,\n Platform,\n} from 'react-native';\n\nimport Animated, {\n Extrapolation,\n SharedValue,\n interpolate,\n runOnJS,\n useAnimatedProps,\n useAnimatedStyle,\n useDerivedValue,\n useSharedValue,\n withSpring,\n} from 'react-native-reanimated';\n\nimport { GestureObjects as Gesture } from '../handlers/gestures/gestureObjects';\nimport { GestureDetector } from '../handlers/gestures/GestureDetector';\nimport {\n UserSelect,\n ActiveCursor,\n MouseButton,\n HitSlop,\n GestureStateChangeEvent,\n} from '../handlers/gestureHandlerCommon';\nimport { PanGestureHandlerEventPayload } from '../handlers/GestureHandlerEventPayload';\n\nconst DRAG_TOSS = 0.05;\n\nexport enum DrawerPosition {\n LEFT,\n RIGHT,\n}\n\nexport enum DrawerState {\n IDLE,\n DRAGGING,\n SETTLING,\n}\n\nexport enum DrawerType {\n FRONT,\n BACK,\n SLIDE,\n}\n\nexport enum DrawerLockMode {\n UNLOCKED,\n LOCKED_CLOSED,\n LOCKED_OPEN,\n}\n\nexport enum DrawerKeyboardDismissMode {\n NONE,\n ON_DRAG,\n}\n\nexport interface DrawerLayoutProps {\n /**\n * This attribute is present in the native android implementation already and is one\n * of the required params. The gesture handler version of DrawerLayout makes it\n * possible for the function passed as `renderNavigationView` to take an\n * Animated value as a parameter that indicates the progress of drawer\n * opening/closing animation (progress value is 0 when closed and 1 when\n * opened). This can be used by the drawer component to animated its children\n * while the drawer is opening or closing.\n */\n renderNavigationView: (\n progressAnimatedValue: SharedValue<number>\n ) => ReactNode;\n\n /**\n * Determines the side from which the drawer will open.\n */\n drawerPosition?: DrawerPosition;\n\n /**\n * Width of the drawer.\n */\n drawerWidth?: number;\n\n /**\n * Background color of the drawer.\n */\n drawerBackgroundColor?: string;\n\n /**\n * Specifies the lock mode of the drawer.\n * Programatic opening/closing isn't affected by the lock mode. Defaults to `UNLOCKED`.\n * - `UNLOCKED` - the drawer will respond to gestures.\n * - `LOCKED_CLOSED` - the drawer will move freely until it settles in a closed position, then the gestures will be disabled.\n * - `LOCKED_OPEN` - the drawer will move freely until it settles in an opened position, then the gestures will be disabled.\n */\n drawerLockMode?: DrawerLockMode;\n\n /**\n * Determines if system keyboard should be closed upon dragging the drawer.\n */\n keyboardDismissMode?: DrawerKeyboardDismissMode;\n\n /**\n * Called when the drawer is closed.\n */\n onDrawerClose?: () => void;\n\n /**\n * Called when the drawer is opened.\n */\n onDrawerOpen?: () => void;\n\n /**\n * Called when the status of the drawer changes.\n */\n onDrawerStateChanged?: (\n newState: DrawerState,\n drawerWillShow: boolean\n ) => void;\n\n /**\n * Type of animation that will play when opening the drawer.\n */\n drawerType?: DrawerType;\n\n /**\n * Speed of animation that will play when letting go, or dismissing the drawer.\n * This will also be the default animation speed for programatic controlls.\n */\n animationSpeed?: number;\n\n /**\n * Defines how far from the edge of the content view the gesture should\n * activate.\n */\n edgeWidth?: number;\n\n /**\n * Minimal distance to swipe before the drawer starts moving.\n */\n minSwipeDistance?: number;\n\n /**\n * When set to true Drawer component will use\n * {@link https://reactnative.dev/docs/statusbar StatusBar} API to hide the OS\n * status bar whenever the drawer is pulled or when its in an \"open\" state.\n */\n hideStatusBar?: boolean;\n\n /**\n * @default 'slide'\n *\n * Can be used when hideStatusBar is set to true and will select the animation\n * used for hiding/showing the status bar. See\n * {@link https://reactnative.dev/docs/statusbar StatusBar} documentation for\n * more details\n */\n statusBarAnimation?: StatusBarAnimation;\n\n /**\n * @default 'rgba(0, 0, 0, 0.7)'\n *\n * Color of the background overlay.\n * Animated from `0%` to `100%` as the drawer opens.\n */\n overlayColor?: string;\n\n /**\n * Style wrapping the content.\n */\n contentContainerStyle?: StyleProp<ViewStyle>;\n\n /**\n * Style wrapping the drawer.\n */\n drawerContainerStyle?: StyleProp<ViewStyle>;\n\n /**\n * Enables two-finger gestures on supported devices, for example iPads with\n * trackpads. If not enabled the gesture will require click + drag, with\n * `enableTrackpadTwoFingerGesture` swiping with two fingers will also trigger\n * the gesture.\n */\n enableTrackpadTwoFingerGesture?: boolean;\n\n onDrawerSlide?: (position: number) => void;\n\n // Implicit `children` prop has been removed in @types/react^18.0.\n /**\n * Elements that will be rendered inside the content view.\n */\n children?: ReactNode | ((openValue?: SharedValue<number>) => ReactNode);\n\n /**\n * @default 'none'\n * Sets whether the text inside both the drawer and the context window can be selected.\n * Values: 'none' | 'text' | 'auto'\n */\n userSelect?: UserSelect;\n\n /**\n * @default 'auto'\n * Sets the displayed cursor pictogram when the drawer is being dragged.\n * Values: see CSS cursor values\n */\n activeCursor?: ActiveCursor;\n\n /**\n * @default 'MouseButton.LEFT'\n * Allows to choose which mouse button should underlying pan handler react to.\n */\n mouseButton?: MouseButton;\n\n /**\n * @default 'false if MouseButton.RIGHT is specified'\n * Allows to enable/disable context menu.\n */\n enableContextMenu?: boolean;\n}\n\nexport type DrawerMovementOption = {\n initialVelocity?: number;\n animationSpeed?: number;\n};\n\nexport interface DrawerLayoutMethods {\n openDrawer: (options?: DrawerMovementOption) => void;\n closeDrawer: (options?: DrawerMovementOption) => void;\n}\n\nconst defaultProps = {\n drawerWidth: 200,\n drawerPosition: DrawerPosition.LEFT,\n drawerType: DrawerType.FRONT,\n edgeWidth: 20,\n minSwipeDistance: 3,\n overlayColor: 'rgba(0, 0, 0, 0.7)',\n drawerLockMode: DrawerLockMode.UNLOCKED,\n enableTrackpadTwoFingerGesture: false,\n activeCursor: 'auto' as ActiveCursor,\n mouseButton: MouseButton.LEFT,\n statusBarAnimation: 'slide' as StatusBarAnimation,\n};\n\n// StatusBar.setHidden and Keyboard.dismiss cannot be directly referenced in worklets.\nconst setStatusBarHidden = StatusBar.setHidden;\nconst dismissKeyboard = Keyboard.dismiss;\n\nconst DrawerLayout = forwardRef<DrawerLayoutMethods, DrawerLayoutProps>(\n function DrawerLayout(props: DrawerLayoutProps, ref) {\n const [containerWidth, setContainerWidth] = useState(0);\n const [drawerState, setDrawerState] = useState<DrawerState>(\n DrawerState.IDLE\n );\n const [drawerOpened, setDrawerOpened] = useState(false);\n\n const {\n drawerPosition = defaultProps.drawerPosition,\n drawerWidth = defaultProps.drawerWidth,\n drawerType = defaultProps.drawerType,\n drawerBackgroundColor,\n drawerContainerStyle,\n contentContainerStyle,\n minSwipeDistance = defaultProps.minSwipeDistance,\n edgeWidth = defaultProps.edgeWidth,\n drawerLockMode = defaultProps.drawerLockMode,\n overlayColor = defaultProps.overlayColor,\n enableTrackpadTwoFingerGesture = defaultProps.enableTrackpadTwoFingerGesture,\n activeCursor = defaultProps.activeCursor,\n mouseButton = defaultProps.mouseButton,\n statusBarAnimation = defaultProps.statusBarAnimation,\n hideStatusBar,\n keyboardDismissMode,\n userSelect,\n enableContextMenu,\n renderNavigationView,\n onDrawerSlide,\n onDrawerClose,\n onDrawerOpen,\n onDrawerStateChanged,\n animationSpeed: animationSpeedProp,\n } = props;\n\n const isFromLeft = drawerPosition === DrawerPosition.LEFT;\n\n const sideCorrection = isFromLeft ? 1 : -1;\n\n // While closing the drawer when user starts gesture in the greyed out part of the window,\n // we want the drawer to follow only once the finger reaches the edge of the drawer.\n // See the diagram for reference. * = starting finger position, < = current finger position\n // 1) +---------------+ 2) +---------------+ 3) +---------------+ 4) +---------------+\n // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|\n // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|\n // |XXXXXXXX|..<*..| |XXXXXXXX|.<-*..| |XXXXXXXX|<--*..| |XXXXX|<-----*..|\n // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|\n // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|\n // +---------------+ +---------------+ +---------------+ +---------------+\n\n const openValue = useSharedValue<number>(0);\n\n useDerivedValue(() => {\n onDrawerSlide && runOnJS(onDrawerSlide)(openValue.value);\n }, []);\n\n const isDrawerOpen = useSharedValue(false);\n\n const handleContainerLayout = ({ nativeEvent }: LayoutChangeEvent) => {\n setContainerWidth(nativeEvent.layout.width);\n };\n\n const emitStateChanged = useCallback(\n (newState: DrawerState, drawerWillShow: boolean) => {\n 'worklet';\n onDrawerStateChanged &&\n runOnJS(onDrawerStateChanged)?.(newState, drawerWillShow);\n },\n [onDrawerStateChanged]\n );\n\n const drawerAnimatedProps = useAnimatedProps(() => ({\n accessibilityViewIsModal: isDrawerOpen.value,\n }));\n\n const overlayAnimatedProps = useAnimatedProps(() => ({\n pointerEvents: isDrawerOpen.value ? ('auto' as const) : ('none' as const),\n }));\n\n // While the drawer is hidden, it's hitSlop overflows onto the main view by edgeWidth\n // This way it can be swiped open even when it's hidden\n const [edgeHitSlop, setEdgeHitSlop] = useState<HitSlop>(\n isFromLeft\n ? { left: 0, width: edgeWidth }\n : { right: 0, width: edgeWidth }\n );\n\n // gestureOrientation is 1 if the gesture is expected to move from left to right and -1 otherwise\n const gestureOrientation = useMemo(\n () => sideCorrection * (drawerOpened ? -1 : 1),\n [sideCorrection, drawerOpened]\n );\n\n useEffect(() => {\n setEdgeHitSlop(\n isFromLeft\n ? { left: 0, width: edgeWidth }\n : { right: 0, width: edgeWidth }\n );\n }, [isFromLeft, edgeWidth]);\n\n const animateDrawer = useCallback(\n (toValue: number, initialVelocity: number, animationSpeed?: number) => {\n 'worklet';\n const willShow = toValue !== 0;\n isDrawerOpen.value = willShow;\n\n emitStateChanged(DrawerState.SETTLING, willShow);\n runOnJS(setDrawerState)(DrawerState.SETTLING);\n\n if (hideStatusBar) {\n runOnJS(setStatusBarHidden)(willShow, statusBarAnimation);\n }\n\n const normalizedToValue = interpolate(\n toValue,\n [0, drawerWidth],\n [0, 1],\n Extrapolation.CLAMP\n );\n\n const normalizedInitialVelocity = interpolate(\n initialVelocity,\n [0, drawerWidth],\n [0, 1],\n Extrapolation.CLAMP\n );\n\n openValue.value = withSpring(\n normalizedToValue,\n {\n overshootClamping: true,\n velocity: normalizedInitialVelocity,\n mass: animationSpeed\n ? 1 / animationSpeed\n : 1 / (animationSpeedProp ?? 1),\n damping: 40,\n stiffness: 500,\n },\n (finished) => {\n if (finished) {\n emitStateChanged(DrawerState.IDLE, willShow);\n runOnJS(setDrawerOpened)(willShow);\n runOnJS(setDrawerState)(DrawerState.IDLE);\n if (willShow) {\n onDrawerOpen && runOnJS(onDrawerOpen)?.();\n } else {\n onDrawerClose && runOnJS(onDrawerClose)?.();\n }\n }\n }\n );\n },\n [\n openValue,\n emitStateChanged,\n isDrawerOpen,\n hideStatusBar,\n onDrawerClose,\n onDrawerOpen,\n drawerWidth,\n statusBarAnimation,\n ]\n );\n\n const handleRelease = useCallback(\n (event: GestureStateChangeEvent<PanGestureHandlerEventPayload>) => {\n 'worklet';\n let { translationX: dragX, velocityX, x: touchX } = event;\n\n if (drawerPosition !== DrawerPosition.LEFT) {\n // See description in _updateAnimatedEvent about why events are flipped\n // for right-side drawer\n dragX = -dragX;\n touchX = containerWidth - touchX;\n velocityX = -velocityX;\n }\n\n const gestureStartX = touchX - dragX;\n let dragOffsetBasedOnStart = 0;\n\n if (drawerType === DrawerType.FRONT) {\n dragOffsetBasedOnStart =\n gestureStartX > drawerWidth ? gestureStartX - drawerWidth : 0;\n }\n\n const startOffsetX =\n dragX +\n dragOffsetBasedOnStart +\n (isDrawerOpen.value ? drawerWidth : 0);\n\n const projOffsetX = startOffsetX + DRAG_TOSS * velocityX;\n\n const shouldOpen = projOffsetX > drawerWidth / 2;\n\n if (shouldOpen) {\n animateDrawer(drawerWidth, velocityX);\n } else {\n animateDrawer(0, velocityX);\n }\n },\n [\n animateDrawer,\n containerWidth,\n drawerPosition,\n drawerType,\n drawerWidth,\n isDrawerOpen,\n ]\n );\n\n const openDrawer = useCallback(\n (options: DrawerMovementOption = {}) => {\n 'worklet';\n animateDrawer(\n drawerWidth,\n options.initialVelocity ?? 0,\n options.animationSpeed\n );\n },\n [animateDrawer, drawerWidth]\n );\n\n const closeDrawer = useCallback(\n (options: DrawerMovementOption = {}) => {\n 'worklet';\n animateDrawer(0, options.initialVelocity ?? 0, options.animationSpeed);\n },\n [animateDrawer]\n );\n\n const overlayDismissGesture = useMemo(\n () =>\n Gesture.Tap()\n .maxDistance(25)\n .onEnd(() => {\n if (\n isDrawerOpen.value &&\n drawerLockMode !== DrawerLockMode.LOCKED_OPEN\n ) {\n closeDrawer();\n }\n }),\n [closeDrawer, isDrawerOpen, drawerLockMode]\n );\n\n const overlayAnimatedStyle = useAnimatedStyle(() => ({\n opacity: openValue.value,\n backgroundColor: overlayColor,\n }));\n\n const fillHitSlop = useMemo(\n () => (isFromLeft ? { left: drawerWidth } : { right: drawerWidth }),\n [drawerWidth, isFromLeft]\n );\n\n const panGesture = useMemo(() => {\n return Gesture.Pan()\n .activeCursor(activeCursor)\n .mouseButton(mouseButton)\n .hitSlop(drawerOpened ? fillHitSlop : edgeHitSlop)\n .minDistance(drawerOpened ? 100 : 0)\n .activeOffsetX(gestureOrientation * minSwipeDistance)\n .failOffsetY([-15, 15])\n .simultaneousWithExternalGesture(overlayDismissGesture)\n .enableTrackpadTwoFingerGesture(enableTrackpadTwoFingerGesture)\n .enabled(\n drawerState !== DrawerState.SETTLING &&\n (drawerOpened\n ? drawerLockMode !== DrawerLockMode.LOCKED_OPEN\n : drawerLockMode !== DrawerLockMode.LOCKED_CLOSED)\n )\n .onStart(() => {\n emitStateChanged(DrawerState.DRAGGING, false);\n runOnJS(setDrawerState)(DrawerState.DRAGGING);\n if (keyboardDismissMode === DrawerKeyboardDismissMode.ON_DRAG) {\n runOnJS(dismissKeyboard)();\n }\n if (hideStatusBar) {\n runOnJS(setStatusBarHidden)(true, statusBarAnimation);\n }\n })\n .onUpdate((event) => {\n const startedOutsideTranslation = isFromLeft\n ? interpolate(\n event.x,\n [0, drawerWidth, drawerWidth + 1],\n [0, drawerWidth, drawerWidth]\n )\n : interpolate(\n event.x - containerWidth,\n [-drawerWidth - 1, -drawerWidth, 0],\n [drawerWidth, drawerWidth, 0]\n );\n\n const startedInsideTranslation =\n sideCorrection *\n (event.translationX +\n (drawerOpened ? drawerWidth * -gestureOrientation : 0));\n\n const adjustedTranslation = Math.max(\n drawerOpened ? startedOutsideTranslation : 0,\n startedInsideTranslation\n );\n\n openValue.value = interpolate(\n adjustedTranslation,\n [-drawerWidth, 0, drawerWidth],\n [1, 0, 1],\n Extrapolation.CLAMP\n );\n })\n .onEnd(handleRelease);\n }, [\n drawerLockMode,\n openValue,\n drawerWidth,\n emitStateChanged,\n gestureOrientation,\n handleRelease,\n edgeHitSlop,\n fillHitSlop,\n minSwipeDistance,\n hideStatusBar,\n keyboardDismissMode,\n overlayDismissGesture,\n drawerOpened,\n isFromLeft,\n containerWidth,\n sideCorrection,\n drawerState,\n activeCursor,\n enableTrackpadTwoFingerGesture,\n mouseButton,\n statusBarAnimation,\n ]);\n\n // When using RTL, row and row-reverse flex directions are flipped.\n const reverseContentDirection = I18nManager.isRTL\n ? isFromLeft\n : !isFromLeft;\n\n const dynamicDrawerStyles = {\n backgroundColor: drawerBackgroundColor,\n width: drawerWidth,\n };\n\n const containerStyles = useAnimatedStyle(() => {\n if (drawerType === DrawerType.FRONT) {\n return {};\n }\n\n return {\n transform: [\n {\n translateX: interpolate(\n openValue.value,\n [0, 1],\n [0, drawerWidth * sideCorrection],\n Extrapolation.CLAMP\n ),\n },\n ],\n };\n });\n\n const drawerAnimatedStyle = useAnimatedStyle(() => {\n const closedDrawerOffset = drawerWidth * -sideCorrection;\n const isBack = drawerType === DrawerType.BACK;\n const isIdle = drawerState === DrawerState.IDLE;\n\n if (isBack) {\n return {\n transform: [{ translateX: 0 }],\n flexDirection: reverseContentDirection ? 'row-reverse' : 'row',\n };\n }\n\n let translateX = 0;\n\n if (isIdle) {\n translateX = drawerOpened ? 0 : closedDrawerOffset;\n } else {\n translateX = interpolate(\n openValue.value,\n [0, 1],\n [closedDrawerOffset, 0],\n Extrapolation.CLAMP\n );\n }\n\n return {\n transform: [{ translateX }],\n flexDirection: reverseContentDirection ? 'row-reverse' : 'row',\n };\n });\n\n const containerAnimatedProps = useAnimatedProps(() => ({\n importantForAccessibility:\n Platform.OS === 'android'\n ? isDrawerOpen.value\n ? ('no-hide-descendants' as const)\n : ('yes' as const)\n : undefined,\n }));\n\n const children =\n typeof props.children === 'function'\n ? props.children(openValue) // renderer function\n : props.children;\n\n useImperativeHandle(\n ref,\n () => ({\n openDrawer,\n closeDrawer,\n }),\n [openDrawer, closeDrawer]\n );\n\n return (\n <GestureDetector\n gesture={panGesture}\n userSelect={userSelect}\n enableContextMenu={enableContextMenu}>\n <Animated.View style={styles.main} onLayout={handleContainerLayout}>\n <GestureDetector gesture={overlayDismissGesture}>\n <Animated.View\n style={[\n drawerType === DrawerType.FRONT\n ? styles.containerOnBack\n : styles.containerInFront,\n containerStyles,\n contentContainerStyle,\n ]}\n animatedProps={containerAnimatedProps}>\n {children}\n <Animated.View\n animatedProps={overlayAnimatedProps}\n style={[styles.overlay, overlayAnimatedStyle]}\n />\n </Animated.View>\n </GestureDetector>\n <Animated.View\n pointerEvents=\"box-none\"\n animatedProps={drawerAnimatedProps}\n style={[\n styles.drawerContainer,\n drawerAnimatedStyle,\n drawerContainerStyle,\n ]}>\n <Animated.View style={dynamicDrawerStyles}>\n {renderNavigationView(openValue)}\n </Animated.View>\n </Animated.View>\n </Animated.View>\n </GestureDetector>\n );\n }\n);\n\nexport default DrawerLayout;\n\nconst styles = StyleSheet.create({\n drawerContainer: {\n ...StyleSheet.absoluteFillObject,\n zIndex: 1001,\n flexDirection: 'row',\n },\n containerInFront: {\n ...StyleSheet.absoluteFillObject,\n zIndex: 1002,\n },\n containerOnBack: {\n ...StyleSheet.absoluteFillObject,\n },\n main: {\n flex: 1,\n zIndex: 0,\n overflow: 'hidden',\n },\n overlay: {\n ...StyleSheet.absoluteFillObject,\n zIndex: 1000,\n },\n});\n"]}