@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,788 +0,0 @@
1
- // This component is based on RN's DrawerLayoutAndroid API
2
- //
3
- // It perhaps deserves to be put in a separate repo, but since it relies on
4
- // react-native-gesture-handler library which isn't very popular at the moment I
5
- // decided to keep it here for the time being. It will allow us to move faster
6
- // and fix issues that may arise in gesture handler library that could be found
7
- // when using the drawer component
8
-
9
- import * as React from 'react';
10
- import { Component } from 'react';
11
- import invariant from 'invariant';
12
- import {
13
- Animated,
14
- StyleSheet,
15
- View,
16
- Keyboard,
17
- StatusBar,
18
- I18nManager,
19
- StatusBarAnimation,
20
- StyleProp,
21
- ViewStyle,
22
- LayoutChangeEvent,
23
- NativeSyntheticEvent,
24
- } from 'react-native';
25
-
26
- import {
27
- GestureEvent,
28
- HandlerStateChangeEvent,
29
- UserSelect,
30
- ActiveCursor,
31
- MouseButton,
32
- } from '../handlers/gestureHandlerCommon';
33
- import { PanGestureHandler } from '../handlers/PanGestureHandler';
34
- import type {
35
- PanGestureHandlerEventPayload,
36
- TapGestureHandlerEventPayload,
37
- } from '../handlers/GestureHandlerEventPayload';
38
- import { TapGestureHandler } from '../handlers/TapGestureHandler';
39
- import { State } from '../State';
40
-
41
- const DRAG_TOSS = 0.05;
42
-
43
- const IDLE: DrawerState = 'Idle';
44
- const DRAGGING: DrawerState = 'Dragging';
45
- const SETTLING: DrawerState = 'Settling';
46
-
47
- /**
48
- * @deprecated DrawerLayout is deprecated. Use Reanimated version of DrawerLayout instead.
49
- */
50
- export type DrawerPosition = 'left' | 'right';
51
-
52
- /**
53
- * @deprecated DrawerLayout is deprecated. Use Reanimated version of DrawerLayout instead.
54
- */
55
- export type DrawerState = 'Idle' | 'Dragging' | 'Settling';
56
-
57
- /**
58
- * @deprecated DrawerLayout is deprecated. Use Reanimated version of DrawerLayout instead.
59
- */
60
- export type DrawerType = 'front' | 'back' | 'slide';
61
-
62
- /**
63
- * @deprecated DrawerLayout is deprecated. Use Reanimated version of DrawerLayout instead.
64
- */
65
- export type DrawerLockMode = 'unlocked' | 'locked-closed' | 'locked-open';
66
-
67
- /**
68
- * @deprecated DrawerLayout is deprecated. Use Reanimated version of DrawerLayout instead.
69
- */
70
- export type DrawerKeyboardDismissMode = 'none' | 'on-drag';
71
-
72
- // Animated.AnimatedInterpolation has been converted to a generic type
73
- // in @types/react-native 0.70. This way we can maintain compatibility
74
- // with all versions of @types/react-native`
75
- type AnimatedInterpolation = ReturnType<Animated.Value['interpolate']>;
76
-
77
- /**
78
- * @deprecated DrawerLayout is deprecated. Use Reanimated version of DrawerLayout instead.
79
- */
80
- export interface DrawerLayoutProps {
81
- /**
82
- * This attribute is present in the standard implementation already and is one
83
- * of the required params. Gesture handler version of DrawerLayout make 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: Animated.Value
92
- ) => React.ReactNode;
93
-
94
- drawerPosition?: DrawerPosition;
95
-
96
- drawerWidth?: number;
97
-
98
- drawerBackgroundColor?: string;
99
-
100
- drawerLockMode?: DrawerLockMode;
101
-
102
- keyboardDismissMode?: DrawerKeyboardDismissMode;
103
-
104
- /**
105
- * Called when the drawer is closed.
106
- */
107
- onDrawerClose?: () => void;
108
-
109
- /**
110
- * Called when the drawer is opened.
111
- */
112
- onDrawerOpen?: () => void;
113
-
114
- /**
115
- * Called when the status of the drawer changes.
116
- */
117
- onDrawerStateChanged?: (
118
- newState: DrawerState,
119
- drawerWillShow: boolean
120
- ) => void;
121
- useNativeAnimations?: boolean;
122
-
123
- drawerType?: DrawerType;
124
-
125
- /**
126
- * Defines how far from the edge of the content view the gesture should
127
- * activate.
128
- */
129
- edgeWidth?: number;
130
-
131
- minSwipeDistance?: number;
132
-
133
- /**
134
- * When set to true Drawer component will use
135
- * {@link https://reactnative.dev/docs/statusbar StatusBar} API to hide the OS
136
- * status bar whenever the drawer is pulled or when its in an "open" state.
137
- */
138
- hideStatusBar?: boolean;
139
-
140
- /**
141
- * @default 'slide'
142
- *
143
- * Can be used when hideStatusBar is set to true and will select the animation
144
- * used for hiding/showing the status bar. See
145
- * {@link https://reactnative.dev/docs/statusbar StatusBar} documentation for
146
- * more details
147
- */
148
- statusBarAnimation?: StatusBarAnimation;
149
-
150
- /**
151
- * @default black
152
- *
153
- * Color of a semi-transparent overlay to be displayed on top of the content
154
- * view when drawer gets open. A solid color should be used as the opacity is
155
- * added by the Drawer itself and the opacity of the overlay is animated (from
156
- * 0% to 70%).
157
- */
158
- overlayColor?: string;
159
-
160
- contentContainerStyle?: StyleProp<ViewStyle>;
161
-
162
- drawerContainerStyle?: StyleProp<ViewStyle>;
163
-
164
- /**
165
- * Enables two-finger gestures on supported devices, for example iPads with
166
- * trackpads. If not enabled the gesture will require click + drag, with
167
- * `enableTrackpadTwoFingerGesture` swiping with two fingers will also trigger
168
- * the gesture.
169
- */
170
- enableTrackpadTwoFingerGesture?: boolean;
171
-
172
- onDrawerSlide?: (position: number) => void;
173
-
174
- onGestureRef?: (ref: PanGestureHandler) => void;
175
-
176
- // Implicit `children` prop has been removed in @types/react^18.0.0
177
- children?:
178
- | React.ReactNode
179
- | ((openValue?: AnimatedInterpolation) => React.ReactNode);
180
-
181
- /**
182
- * @default 'none'
183
- * Defines which userSelect property should be used.
184
- * Values: 'none'|'text'|'auto'
185
- */
186
- userSelect?: UserSelect;
187
-
188
- /**
189
- * @default 'auto'
190
- * Defines which cursor property should be used when gesture activates.
191
- * Values: see CSS cursor values
192
- */
193
- activeCursor?: ActiveCursor;
194
-
195
- /**
196
- * @default 'MouseButton.LEFT'
197
- * Allows to choose which mouse button should underlying pan handler react to.
198
- */
199
- mouseButton?: MouseButton;
200
-
201
- /**
202
- * @default 'false if MouseButton.RIGHT is specified'
203
- * Allows to enable/disable context menu.
204
- */
205
- enableContextMenu?: boolean;
206
- }
207
-
208
- /**
209
- * @deprecated DrawerLayout is deprecated. Use Reanimated version of DrawerLayout instead.
210
- */
211
- export type DrawerLayoutState = {
212
- dragX: Animated.Value;
213
- touchX: Animated.Value;
214
- drawerTranslation: Animated.Value;
215
- containerWidth: number;
216
- drawerState: DrawerState;
217
- drawerOpened: boolean;
218
- };
219
-
220
- /**
221
- * @deprecated DrawerLayout is deprecated. Use Reanimated version of DrawerLayout instead.
222
- */
223
- export type DrawerMovementOption = {
224
- velocity?: number;
225
- speed?: number;
226
- };
227
-
228
- /**
229
- * @deprecated use Reanimated version of DrawerLayout instead
230
- */
231
- export default class DrawerLayout extends Component<
232
- DrawerLayoutProps,
233
- DrawerLayoutState
234
- > {
235
- static defaultProps = {
236
- drawerWidth: 200,
237
- drawerPosition: 'left',
238
- useNativeAnimations: true,
239
- drawerType: 'front',
240
- edgeWidth: 20,
241
- minSwipeDistance: 3,
242
- overlayColor: 'rgba(0, 0, 0, 0.7)',
243
- drawerLockMode: 'unlocked',
244
- enableTrackpadTwoFingerGesture: false,
245
- };
246
-
247
- constructor(props: DrawerLayoutProps) {
248
- super(props);
249
-
250
- const dragX = new Animated.Value(0);
251
- const touchX = new Animated.Value(0);
252
- const drawerTranslation = new Animated.Value(0);
253
-
254
- this.state = {
255
- dragX,
256
- touchX,
257
- drawerTranslation,
258
- containerWidth: 0,
259
- drawerState: IDLE,
260
- drawerOpened: false,
261
- };
262
-
263
- this.updateAnimatedEvent(props, this.state);
264
- }
265
-
266
- shouldComponentUpdate(props: DrawerLayoutProps, state: DrawerLayoutState) {
267
- if (
268
- this.props.drawerPosition !== props.drawerPosition ||
269
- this.props.drawerWidth !== props.drawerWidth ||
270
- this.props.drawerType !== props.drawerType ||
271
- this.state.containerWidth !== state.containerWidth
272
- ) {
273
- this.updateAnimatedEvent(props, state);
274
- }
275
-
276
- return true;
277
- }
278
-
279
- private openValue?: AnimatedInterpolation;
280
- private onGestureEvent?: (
281
- event: GestureEvent<PanGestureHandlerEventPayload>
282
- ) => void;
283
- private accessibilityIsModalView =
284
- React.createRef<React.ComponentRef<typeof View>>();
285
- private pointerEventsView =
286
- React.createRef<React.ComponentRef<typeof View>>();
287
- private panGestureHandler = React.createRef<PanGestureHandler | null>();
288
- private drawerShown = false;
289
-
290
- static positions = {
291
- Left: 'left',
292
- Right: 'right',
293
- };
294
-
295
- private updateAnimatedEvent = (
296
- props: DrawerLayoutProps,
297
- state: DrawerLayoutState
298
- ) => {
299
- // Event definition is based on
300
- const { drawerPosition, drawerWidth, drawerType } = props;
301
- const {
302
- dragX: dragXValue,
303
- touchX: touchXValue,
304
- drawerTranslation,
305
- containerWidth,
306
- } = state;
307
-
308
- let dragX = dragXValue;
309
- let touchX = touchXValue;
310
-
311
- if (drawerPosition !== 'left') {
312
- // Most of the code is written in a way to handle left-side drawer. In
313
- // order to handle right-side drawer the only thing we need to do is to
314
- // reverse events coming from gesture handler in a way they emulate
315
- // left-side drawer gestures. E.g. dragX is simply -dragX, and touchX is
316
- // calulcated by subtracing real touchX from the width of the container
317
- // (such that when touch happens at the right edge the value is simply 0)
318
- dragX = Animated.multiply(
319
- new Animated.Value(-1),
320
- dragXValue
321
- ) as Animated.Value; // TODO(TS): (for all "as" in this file) make sure we can map this
322
- touchX = Animated.add(
323
- new Animated.Value(containerWidth),
324
- Animated.multiply(new Animated.Value(-1), touchXValue)
325
- ) as Animated.Value; // TODO(TS): make sure we can map this;
326
- touchXValue.setValue(containerWidth);
327
- } else {
328
- touchXValue.setValue(0);
329
- }
330
-
331
- // While closing the drawer when user starts gesture outside of its area (in greyed
332
- // out part of the window), we want the drawer to follow only once finger reaches the
333
- // edge of the drawer.
334
- // E.g. on the diagram below drawer is illustrate by X signs and the greyed out area by
335
- // dots. The touch gesture starts at '*' and moves left, touch path is indicated by
336
- // an arrow pointing left
337
- // 1) +---------------+ 2) +---------------+ 3) +---------------+ 4) +---------------+
338
- // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|
339
- // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|
340
- // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|
341
- // |XXXXXXXX|......| |XXXXXXXX|.<-*..| |XXXXXXXX|<--*..| |XXXXX|<-----*..|
342
- // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|
343
- // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|
344
- // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|
345
- // +---------------+ +---------------+ +---------------+ +---------------+
346
- //
347
- // For the above to work properly we define animated value that will keep
348
- // start position of the gesture. Then we use that value to calculate how
349
- // much we need to subtract from the dragX. If the gesture started on the
350
- // greyed out area we take the distance from the edge of the drawer to the
351
- // start position. Otherwise we don't subtract at all and the drawer be
352
- // pulled back as soon as you start the pan.
353
- //
354
- // This is used only when drawerType is "front"
355
- //
356
- let translationX = dragX;
357
- if (drawerType === 'front') {
358
- const startPositionX = Animated.add(
359
- touchX,
360
- Animated.multiply(new Animated.Value(-1), dragX)
361
- );
362
-
363
- const dragOffsetFromOnStartPosition = startPositionX.interpolate({
364
- inputRange: [drawerWidth! - 1, drawerWidth!, drawerWidth! + 1],
365
- outputRange: [0, 0, 1],
366
- });
367
- translationX = Animated.add(
368
- dragX,
369
- dragOffsetFromOnStartPosition
370
- ) as Animated.Value; // TODO: as above
371
- }
372
-
373
- this.openValue = Animated.add(translationX, drawerTranslation).interpolate({
374
- inputRange: [0, drawerWidth!],
375
- outputRange: [0, 1],
376
- extrapolate: 'clamp',
377
- });
378
-
379
- const gestureOptions: {
380
- useNativeDriver: boolean;
381
- // TODO: make sure it is correct
382
- listener?: (
383
- ev: NativeSyntheticEvent<PanGestureHandlerEventPayload>
384
- ) => void;
385
- } = {
386
- useNativeDriver: props.useNativeAnimations!,
387
- };
388
-
389
- if (this.props.onDrawerSlide) {
390
- gestureOptions.listener = (ev) => {
391
- const translationX = Math.floor(Math.abs(ev.nativeEvent.translationX));
392
- const position = translationX / this.state.containerWidth;
393
-
394
- this.props.onDrawerSlide?.(position);
395
- };
396
- }
397
-
398
- this.onGestureEvent = Animated.event(
399
- [{ nativeEvent: { translationX: dragXValue, x: touchXValue } }],
400
- gestureOptions
401
- );
402
- };
403
-
404
- private handleContainerLayout = ({ nativeEvent }: LayoutChangeEvent) => {
405
- this.setState({ containerWidth: nativeEvent.layout.width });
406
- };
407
-
408
- private emitStateChanged = (
409
- newState: DrawerState,
410
- drawerWillShow: boolean
411
- ) => {
412
- this.props.onDrawerStateChanged?.(newState, drawerWillShow);
413
- };
414
-
415
- private openingHandlerStateChange = ({
416
- nativeEvent,
417
- }: HandlerStateChangeEvent<PanGestureHandlerEventPayload>) => {
418
- if (nativeEvent.oldState === State.ACTIVE) {
419
- this.handleRelease({ nativeEvent });
420
- } else if (nativeEvent.state === State.ACTIVE) {
421
- this.emitStateChanged(DRAGGING, false);
422
- this.setState({ drawerState: DRAGGING });
423
- if (this.props.keyboardDismissMode === 'on-drag') {
424
- Keyboard.dismiss();
425
- }
426
- if (this.props.hideStatusBar) {
427
- StatusBar.setHidden(true, this.props.statusBarAnimation || 'slide');
428
- }
429
- }
430
- };
431
-
432
- private onTapHandlerStateChange = ({
433
- nativeEvent,
434
- }: HandlerStateChangeEvent<TapGestureHandlerEventPayload>) => {
435
- if (
436
- this.drawerShown &&
437
- nativeEvent.oldState === State.ACTIVE &&
438
- this.props.drawerLockMode !== 'locked-open'
439
- ) {
440
- this.closeDrawer();
441
- }
442
- };
443
-
444
- private handleRelease = ({
445
- nativeEvent,
446
- }: HandlerStateChangeEvent<PanGestureHandlerEventPayload>) => {
447
- const { drawerWidth, drawerPosition, drawerType } = this.props;
448
- const { containerWidth } = this.state;
449
- let { translationX: dragX, velocityX, x: touchX } = nativeEvent;
450
-
451
- if (drawerPosition !== 'left') {
452
- // See description in _updateAnimatedEvent about why events are flipped
453
- // for right-side drawer
454
- dragX = -dragX;
455
- touchX = containerWidth - touchX;
456
- velocityX = -velocityX;
457
- }
458
-
459
- const gestureStartX = touchX - dragX;
460
- let dragOffsetBasedOnStart = 0;
461
-
462
- if (drawerType === 'front') {
463
- dragOffsetBasedOnStart =
464
- gestureStartX > drawerWidth! ? gestureStartX - drawerWidth! : 0;
465
- }
466
-
467
- const startOffsetX =
468
- dragX + dragOffsetBasedOnStart + (this.drawerShown ? drawerWidth! : 0);
469
- const projOffsetX = startOffsetX + DRAG_TOSS * velocityX;
470
-
471
- const shouldOpen = projOffsetX > drawerWidth! / 2;
472
-
473
- if (shouldOpen) {
474
- this.animateDrawer(startOffsetX, drawerWidth!, velocityX);
475
- } else {
476
- this.animateDrawer(startOffsetX, 0, velocityX);
477
- }
478
- };
479
-
480
- private updateShowing = (showing: boolean) => {
481
- this.drawerShown = showing;
482
- this.accessibilityIsModalView.current?.setNativeProps({
483
- accessibilityViewIsModal: showing,
484
- });
485
- this.pointerEventsView.current?.setNativeProps({
486
- pointerEvents: showing ? 'auto' : 'none',
487
- });
488
- const { drawerPosition, minSwipeDistance, edgeWidth } = this.props;
489
- const fromLeft = drawerPosition === 'left';
490
- // gestureOrientation is 1 if the expected gesture is from left to right and
491
- // -1 otherwise e.g. when drawer is on the left and is closed we expect left
492
- // to right gesture, thus orientation will be 1.
493
- const gestureOrientation =
494
- (fromLeft ? 1 : -1) * (this.drawerShown ? -1 : 1);
495
- // When drawer is closed we want the hitSlop to be horizontally shorter than
496
- // the container size by the value of SLOP. This will make it only activate
497
- // when gesture happens not further than SLOP away from the edge
498
- const hitSlop = fromLeft
499
- ? { left: 0, width: showing ? undefined : edgeWidth }
500
- : { right: 0, width: showing ? undefined : edgeWidth };
501
- // @ts-ignore internal API, maybe could be fixed in handler types
502
- this.panGestureHandler.current?.setNativeProps({
503
- hitSlop,
504
- activeOffsetX: gestureOrientation * minSwipeDistance!,
505
- });
506
- };
507
-
508
- private animateDrawer = (
509
- fromValue: number | null | undefined,
510
- toValue: number,
511
- velocity: number,
512
- speed?: number
513
- ) => {
514
- this.state.dragX.setValue(0);
515
- this.state.touchX.setValue(
516
- this.props.drawerPosition === 'left' ? 0 : this.state.containerWidth
517
- );
518
-
519
- if (fromValue != null) {
520
- let nextFramePosition = fromValue;
521
- if (this.props.useNativeAnimations) {
522
- // When using native driver, we predict the next position of the
523
- // animation because it takes one frame of a roundtrip to pass RELEASE
524
- // event from native driver to JS before we can start animating. Without
525
- // it, it is more noticable that the frame is dropped.
526
- if (fromValue < toValue && velocity > 0) {
527
- nextFramePosition = Math.min(fromValue + velocity / 60.0, toValue);
528
- } else if (fromValue > toValue && velocity < 0) {
529
- nextFramePosition = Math.max(fromValue + velocity / 60.0, toValue);
530
- }
531
- }
532
- this.state.drawerTranslation.setValue(nextFramePosition);
533
- }
534
-
535
- const willShow = toValue !== 0;
536
- this.updateShowing(willShow);
537
- this.emitStateChanged(SETTLING, willShow);
538
- this.setState({ drawerState: SETTLING });
539
- if (this.props.hideStatusBar) {
540
- StatusBar.setHidden(willShow, this.props.statusBarAnimation || 'slide');
541
- }
542
- Animated.spring(this.state.drawerTranslation, {
543
- velocity,
544
- bounciness: 0,
545
- toValue,
546
- useNativeDriver: this.props.useNativeAnimations!,
547
- speed: speed ?? undefined,
548
- }).start(({ finished }) => {
549
- if (finished) {
550
- this.emitStateChanged(IDLE, willShow);
551
- this.setState({ drawerOpened: willShow });
552
- if (this.state.drawerState !== DRAGGING) {
553
- // It's possilbe that user started drag while the drawer
554
- // was settling, don't override state in this case
555
- this.setState({ drawerState: IDLE });
556
- }
557
- if (willShow) {
558
- this.props.onDrawerOpen?.();
559
- } else {
560
- this.props.onDrawerClose?.();
561
- }
562
- }
563
- });
564
- };
565
-
566
- // eslint-disable-next-line @eslint-react/no-unused-class-component-members
567
- openDrawer = (options: DrawerMovementOption = {}) => {
568
- this.animateDrawer(
569
- // TODO: decide if it should be null or undefined is the proper value
570
- undefined,
571
- this.props.drawerWidth!,
572
- options.velocity ? options.velocity : 0,
573
- options.speed
574
- );
575
-
576
- // We need to force the update, otherwise the overlay is not rerendered and
577
- // it would not be clickable
578
- this.forceUpdate();
579
- };
580
-
581
- closeDrawer = (options: DrawerMovementOption = {}) => {
582
- // TODO: decide if it should be null or undefined is the proper value
583
- this.animateDrawer(
584
- undefined,
585
- 0,
586
- options.velocity ? options.velocity : 0,
587
- options.speed
588
- );
589
-
590
- // We need to force the update, otherwise the overlay is not rerendered and
591
- // it would be still clickable
592
- this.forceUpdate();
593
- };
594
-
595
- private renderOverlay = () => {
596
- /* Overlay styles */
597
- invariant(this.openValue, 'should be set');
598
- let overlayOpacity;
599
-
600
- if (this.state.drawerState !== IDLE) {
601
- overlayOpacity = this.openValue;
602
- } else {
603
- overlayOpacity = this.state.drawerOpened ? 1 : 0;
604
- }
605
-
606
- const dynamicOverlayStyles = {
607
- opacity: overlayOpacity,
608
- backgroundColor: this.props.overlayColor,
609
- };
610
-
611
- return (
612
- <TapGestureHandler onHandlerStateChange={this.onTapHandlerStateChange}>
613
- <Animated.View
614
- pointerEvents={this.drawerShown ? 'auto' : 'none'}
615
- ref={this.pointerEventsView}
616
- style={[styles.overlay, dynamicOverlayStyles]}
617
- />
618
- </TapGestureHandler>
619
- );
620
- };
621
-
622
- private renderDrawer = () => {
623
- const {
624
- drawerBackgroundColor,
625
- drawerWidth,
626
- drawerPosition,
627
- drawerType,
628
- drawerContainerStyle,
629
- contentContainerStyle,
630
- } = this.props;
631
-
632
- const fromLeft = drawerPosition === 'left';
633
- const drawerSlide = drawerType !== 'back';
634
- const containerSlide = drawerType !== 'front';
635
-
636
- // We rely on row and row-reverse flex directions to position the drawer
637
- // properly. Apparently for RTL these are flipped which requires us to use
638
- // the opposite setting for the drawer to appear from left or right
639
- // according to the drawerPosition prop
640
- const reverseContentDirection = I18nManager.isRTL ? fromLeft : !fromLeft;
641
-
642
- const dynamicDrawerStyles = {
643
- backgroundColor: drawerBackgroundColor,
644
- width: drawerWidth,
645
- };
646
- const openValue = this.openValue;
647
- invariant(openValue, 'should be set');
648
-
649
- let containerStyles;
650
- if (containerSlide) {
651
- const containerTranslateX = openValue.interpolate({
652
- inputRange: [0, 1],
653
- outputRange: fromLeft ? [0, drawerWidth!] : [0, -drawerWidth!],
654
- extrapolate: 'clamp',
655
- });
656
- containerStyles = {
657
- transform: [{ translateX: containerTranslateX }],
658
- };
659
- }
660
-
661
- let drawerTranslateX: number | AnimatedInterpolation = 0;
662
- if (drawerSlide) {
663
- const closedDrawerOffset = fromLeft ? -drawerWidth! : drawerWidth!;
664
- if (this.state.drawerState !== IDLE) {
665
- drawerTranslateX = openValue.interpolate({
666
- inputRange: [0, 1],
667
- outputRange: [closedDrawerOffset, 0],
668
- extrapolate: 'clamp',
669
- });
670
- } else {
671
- drawerTranslateX = this.state.drawerOpened ? 0 : closedDrawerOffset;
672
- }
673
- }
674
- const drawerStyles: {
675
- transform: { translateX: number | AnimatedInterpolation }[];
676
- flexDirection: 'row-reverse' | 'row';
677
- } = {
678
- transform: [{ translateX: drawerTranslateX }],
679
- flexDirection: reverseContentDirection ? 'row-reverse' : 'row',
680
- };
681
-
682
- return (
683
- <Animated.View style={styles.main} onLayout={this.handleContainerLayout}>
684
- <Animated.View
685
- style={[
686
- drawerType === 'front'
687
- ? styles.containerOnBack
688
- : styles.containerInFront,
689
- containerStyles,
690
- contentContainerStyle,
691
- ]}
692
- importantForAccessibility={
693
- this.drawerShown ? 'no-hide-descendants' : 'yes'
694
- }>
695
- {typeof this.props.children === 'function'
696
- ? this.props.children(this.openValue)
697
- : this.props.children}
698
- {this.renderOverlay()}
699
- </Animated.View>
700
- <Animated.View
701
- pointerEvents="box-none"
702
- ref={this.accessibilityIsModalView}
703
- accessibilityViewIsModal={this.drawerShown}
704
- style={[styles.drawerContainer, drawerStyles, drawerContainerStyle]}>
705
- <View style={dynamicDrawerStyles}>
706
- {this.props.renderNavigationView(this.openValue as Animated.Value)}
707
- </View>
708
- </Animated.View>
709
- </Animated.View>
710
- );
711
- };
712
-
713
- private setPanGestureRef = (ref: PanGestureHandler) => {
714
- // TODO(TS): make sure it is OK taken from
715
- // https://github.com/DefinitelyTyped/DefinitelyTyped/issues/31065#issuecomment-596081842
716
- (
717
- this.panGestureHandler as React.MutableRefObject<PanGestureHandler>
718
- ).current = ref;
719
- this.props.onGestureRef?.(ref);
720
- };
721
-
722
- render() {
723
- const { drawerPosition, drawerLockMode, edgeWidth, minSwipeDistance } =
724
- this.props;
725
-
726
- const fromLeft = drawerPosition === 'left';
727
-
728
- // gestureOrientation is 1 if the expected gesture is from left to right and
729
- // -1 otherwise e.g. when drawer is on the left and is closed we expect left
730
- // to right gesture, thus orientation will be 1.
731
- const gestureOrientation =
732
- (fromLeft ? 1 : -1) * (this.drawerShown ? -1 : 1);
733
-
734
- // When drawer is closed we want the hitSlop to be horizontally shorter than
735
- // the container size by the value of SLOP. This will make it only activate
736
- // when gesture happens not further than SLOP away from the edge
737
- const hitSlop = fromLeft
738
- ? { left: 0, width: this.drawerShown ? undefined : edgeWidth }
739
- : { right: 0, width: this.drawerShown ? undefined : edgeWidth };
740
-
741
- return (
742
- <PanGestureHandler
743
- // @ts-ignore could be fixed in handler types
744
- userSelect={this.props.userSelect}
745
- activeCursor={this.props.activeCursor}
746
- mouseButton={this.props.mouseButton}
747
- enableContextMenu={this.props.enableContextMenu}
748
- ref={this.setPanGestureRef}
749
- hitSlop={hitSlop}
750
- activeOffsetX={gestureOrientation * minSwipeDistance!}
751
- failOffsetY={[-15, 15]}
752
- onGestureEvent={this.onGestureEvent}
753
- onHandlerStateChange={this.openingHandlerStateChange}
754
- enableTrackpadTwoFingerGesture={
755
- this.props.enableTrackpadTwoFingerGesture
756
- }
757
- enabled={
758
- drawerLockMode !== 'locked-closed' && drawerLockMode !== 'locked-open'
759
- }>
760
- {this.renderDrawer()}
761
- </PanGestureHandler>
762
- );
763
- }
764
- }
765
-
766
- const styles = StyleSheet.create({
767
- drawerContainer: {
768
- ...StyleSheet.absoluteFillObject,
769
- zIndex: 1001,
770
- flexDirection: 'row',
771
- },
772
- containerInFront: {
773
- ...StyleSheet.absoluteFillObject,
774
- zIndex: 1002,
775
- },
776
- containerOnBack: {
777
- ...StyleSheet.absoluteFillObject,
778
- },
779
- main: {
780
- flex: 1,
781
- zIndex: 0,
782
- overflow: 'hidden',
783
- },
784
- overlay: {
785
- ...StyleSheet.absoluteFillObject,
786
- zIndex: 1000,
787
- },
788
- });