@amazon-devices/react-native-gesture-handler 4.0.1 → 4.0.2

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