@amazon-devices/react-native-gesture-handler 4.0.0 → 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 (516) hide show
  1. package/SystemModules/amzn__react-native-gesture-handler-4.modules.txt +3 -0
  2. package/SystemModules/amzn__react-native-gesture-handler-4.private.modules.txt +81 -35
  3. package/kepler-compatibility.json +3 -1
  4. package/lib/commonjs/RNGestureHandlerModule.kepler.js.map +1 -1
  5. package/lib/commonjs/index.js +0 -268
  6. package/lib/module/RNGestureHandlerModule.kepler.js.map +1 -1
  7. package/lib/typescript/RNGestureHandlerModule.kepler.d.ts.map +1 -1
  8. package/oss-attribution/attribution.txt +0 -0
  9. package/oss-attribution/licenseInfos.json +1 -0
  10. package/package.json +1 -1
  11. package/src/index.ts +0 -168
  12. package/README.md +0 -70
  13. package/SystemBundles/6340ec90c9b9f38941444b2ca176a58b9d8116a6cd975690f53747ed00595c90.bundle +0 -14669
  14. package/SystemBundles/6340ec90c9b9f38941444b2ca176a58b9d8116a6cd975690f53747ed00595c90.map +0 -5041
  15. package/lib/commonjs/ActionType.js +0 -15
  16. package/lib/commonjs/Directions.js +0 -31
  17. package/lib/commonjs/EnableNewWebImplementation.js +0 -40
  18. package/lib/commonjs/GestureHandlerRootViewContext.js +0 -10
  19. package/lib/commonjs/PlatformConstants.js +0 -9
  20. package/lib/commonjs/PlatformConstants.kepler.js +0 -12
  21. package/lib/commonjs/PlatformConstants.web.js +0 -12
  22. package/lib/commonjs/PointerType.js +0 -15
  23. package/lib/commonjs/RNGestureHandlerModule.js +0 -12
  24. package/lib/commonjs/RNGestureHandlerModule.kepler.js +0 -32
  25. package/lib/commonjs/RNGestureHandlerModule.web.js +0 -95
  26. package/lib/commonjs/RNGestureHandlerModule.windows.js +0 -56
  27. package/lib/commonjs/RNRenderer.js +0 -14
  28. package/lib/commonjs/RNRenderer.web.js +0 -10
  29. package/lib/commonjs/State.js +0 -19
  30. package/lib/commonjs/TouchEventType.js +0 -16
  31. package/lib/commonjs/components/DrawerLayout.js +0 -548
  32. package/lib/commonjs/components/GestureButtons.js +0 -212
  33. package/lib/commonjs/components/GestureButtonsProps.js +0 -6
  34. package/lib/commonjs/components/GestureComponents.js +0 -106
  35. package/lib/commonjs/components/GestureComponents.web.js +0 -39
  36. package/lib/commonjs/components/GestureHandlerButton.js +0 -10
  37. package/lib/commonjs/components/GestureHandlerButton.web.js +0 -16
  38. package/lib/commonjs/components/GestureHandlerRootView.android.js +0 -36
  39. package/lib/commonjs/components/GestureHandlerRootView.js +0 -35
  40. package/lib/commonjs/components/GestureHandlerRootView.kepler.js +0 -21
  41. package/lib/commonjs/components/GestureHandlerRootView.web.js +0 -30
  42. package/lib/commonjs/components/Pressable/Pressable.js +0 -274
  43. package/lib/commonjs/components/Pressable/PressableProps.js +0 -6
  44. package/lib/commonjs/components/Pressable/StateMachine.js +0 -44
  45. package/lib/commonjs/components/Pressable/index.js +0 -14
  46. package/lib/commonjs/components/Pressable/stateDefinitions.js +0 -88
  47. package/lib/commonjs/components/Pressable/utils.js +0 -92
  48. package/lib/commonjs/components/ReanimatedDrawerLayout.js +0 -357
  49. package/lib/commonjs/components/ReanimatedSwipeable/ReanimatedSwipeable.js +0 -337
  50. package/lib/commonjs/components/ReanimatedSwipeable/ReanimatedSwipeableProps.js +0 -12
  51. package/lib/commonjs/components/ReanimatedSwipeable/index.js +0 -21
  52. package/lib/commonjs/components/Swipeable.js +0 -370
  53. package/lib/commonjs/components/Text.js +0 -60
  54. package/lib/commonjs/components/gestureHandlerRootHOC.js +0 -37
  55. package/lib/commonjs/components/touchables/ExtraButtonProps.js +0 -2
  56. package/lib/commonjs/components/touchables/GenericTouchable.js +0 -245
  57. package/lib/commonjs/components/touchables/GenericTouchableProps.js +0 -6
  58. package/lib/commonjs/components/touchables/TouchableHighlight.js +0 -93
  59. package/lib/commonjs/components/touchables/TouchableNativeFeedback.android.js +0 -84
  60. package/lib/commonjs/components/touchables/TouchableNativeFeedback.js +0 -13
  61. package/lib/commonjs/components/touchables/TouchableNativeFeedbackProps.js +0 -6
  62. package/lib/commonjs/components/touchables/TouchableOpacity.js +0 -65
  63. package/lib/commonjs/components/touchables/TouchableWithoutFeedback.js +0 -33
  64. package/lib/commonjs/components/touchables/index.js +0 -35
  65. package/lib/commonjs/components/utils.js +0 -17
  66. package/lib/commonjs/findNodeHandle.js +0 -9
  67. package/lib/commonjs/findNodeHandle.web.js +0 -39
  68. package/lib/commonjs/getShadowNodeFromRef.js +0 -51
  69. package/lib/commonjs/getShadowNodeFromRef.web.js +0 -14
  70. package/lib/commonjs/ghQueueMicrotask.js +0 -10
  71. package/lib/commonjs/handlers/FlingGestureHandler.js +0 -31
  72. package/lib/commonjs/handlers/ForceTouchGestureHandler.js +0 -46
  73. package/lib/commonjs/handlers/GestureHandlerEventPayload.js +0 -6
  74. package/lib/commonjs/handlers/LongPressGestureHandler.js +0 -33
  75. package/lib/commonjs/handlers/NativeViewGestureHandler.js +0 -32
  76. package/lib/commonjs/handlers/PanGestureHandler.js +0 -112
  77. package/lib/commonjs/handlers/PinchGestureHandler.js +0 -29
  78. package/lib/commonjs/handlers/PressabilityDebugView.js +0 -13
  79. package/lib/commonjs/handlers/PressabilityDebugView.web.js +0 -11
  80. package/lib/commonjs/handlers/RotationGestureHandler.js +0 -29
  81. package/lib/commonjs/handlers/TapGestureHandler.js +0 -33
  82. package/lib/commonjs/handlers/createHandler.js +0 -405
  83. package/lib/commonjs/handlers/createNativeWrapper.js +0 -77
  84. package/lib/commonjs/handlers/customDirectEventTypes.js +0 -13
  85. package/lib/commonjs/handlers/customDirectEventTypes.web.js +0 -10
  86. package/lib/commonjs/handlers/gestureHandlerCommon.js +0 -27
  87. package/lib/commonjs/handlers/gestureHandlerTypesCompat.js +0 -6
  88. package/lib/commonjs/handlers/gestures/GestureDetector/Wrap.js +0 -32
  89. package/lib/commonjs/handlers/gestures/GestureDetector/Wrap.web.js +0 -41
  90. package/lib/commonjs/handlers/gestures/GestureDetector/attachHandlers.js +0 -67
  91. package/lib/commonjs/handlers/gestures/GestureDetector/dropHandlers.js +0 -20
  92. package/lib/commonjs/handlers/gestures/GestureDetector/index.js +0 -125
  93. package/lib/commonjs/handlers/gestures/GestureDetector/needsToReattach.js +0 -22
  94. package/lib/commonjs/handlers/gestures/GestureDetector/types.js +0 -6
  95. package/lib/commonjs/handlers/gestures/GestureDetector/updateHandlers.js +0 -66
  96. package/lib/commonjs/handlers/gestures/GestureDetector/useAnimatedGesture.js +0 -143
  97. package/lib/commonjs/handlers/gestures/GestureDetector/useDetectorUpdater.js +0 -47
  98. package/lib/commonjs/handlers/gestures/GestureDetector/useMountReactions.js +0 -41
  99. package/lib/commonjs/handlers/gestures/GestureDetector/useViewRefHandler.js +0 -45
  100. package/lib/commonjs/handlers/gestures/GestureDetector/utils.js +0 -143
  101. package/lib/commonjs/handlers/gestures/eventReceiver.js +0 -117
  102. package/lib/commonjs/handlers/gestures/flingGesture.js +0 -37
  103. package/lib/commonjs/handlers/gestures/forceTouchGesture.js +0 -80
  104. package/lib/commonjs/handlers/gestures/gesture.js +0 -338
  105. package/lib/commonjs/handlers/gestures/gestureComposition.js +0 -90
  106. package/lib/commonjs/handlers/gestures/gestureObjects.js +0 -132
  107. package/lib/commonjs/handlers/gestures/gestureStateManager.js +0 -70
  108. package/lib/commonjs/handlers/gestures/gestureStateManager.web.js +0 -28
  109. package/lib/commonjs/handlers/gestures/hoverGesture.js +0 -57
  110. package/lib/commonjs/handlers/gestures/longPressGesture.js +0 -46
  111. package/lib/commonjs/handlers/gestures/manualGesture.js +0 -25
  112. package/lib/commonjs/handlers/gestures/nativeGesture.js +0 -34
  113. package/lib/commonjs/handlers/gestures/panGesture.js +0 -197
  114. package/lib/commonjs/handlers/gestures/pinchGesture.js +0 -38
  115. package/lib/commonjs/handlers/gestures/reanimatedWrapper.js +0 -29
  116. package/lib/commonjs/handlers/gestures/rotationGesture.js +0 -38
  117. package/lib/commonjs/handlers/gestures/tapGesture.js +0 -87
  118. package/lib/commonjs/handlers/getNextHandlerTag.js +0 -11
  119. package/lib/commonjs/handlers/handlersRegistry.js +0 -50
  120. package/lib/commonjs/handlers/utils.js +0 -69
  121. package/lib/commonjs/init.js +0 -25
  122. package/lib/commonjs/jestUtils/index.js +0 -19
  123. package/lib/commonjs/jestUtils/jestUtils.js +0 -316
  124. package/lib/commonjs/mocks/Pressable.js +0 -13
  125. package/lib/commonjs/mocks/mocks.js +0 -70
  126. package/lib/commonjs/mocks.js +0 -61
  127. package/lib/commonjs/mountRegistry.js +0 -37
  128. package/lib/commonjs/specs/NativeRNGestureHandlerModule.js +0 -9
  129. package/lib/commonjs/specs/RNGestureHandlerButtonNativeComponent.kepler.js +0 -20
  130. package/lib/commonjs/specs/RNGestureHandlerButtonNativeComponent.ts +0 -24
  131. package/lib/commonjs/specs/RNGestureHandlerRootViewNativeComponent.kepler.js +0 -17
  132. package/lib/commonjs/specs/RNGestureHandlerRootViewNativeComponent.ts +0 -7
  133. package/lib/commonjs/typeUtils.js +0 -2
  134. package/lib/commonjs/utils.js +0 -95
  135. package/lib/commonjs/web/Gestures.js +0 -48
  136. package/lib/commonjs/web/constants.js +0 -9
  137. package/lib/commonjs/web/detectors/RotationGestureDetector.js +0 -124
  138. package/lib/commonjs/web/detectors/ScaleGestureDetector.js +0 -111
  139. package/lib/commonjs/web/handlers/FlingGestureHandler.js +0 -143
  140. package/lib/commonjs/web/handlers/GestureHandler.js +0 -689
  141. package/lib/commonjs/web/handlers/HoverGestureHandler.js +0 -45
  142. package/lib/commonjs/web/handlers/IGestureHandler.js +0 -2
  143. package/lib/commonjs/web/handlers/LongPressGestureHandler.js +0 -146
  144. package/lib/commonjs/web/handlers/ManualGestureHandler.js +0 -38
  145. package/lib/commonjs/web/handlers/NativeViewGestureHandler.js +0 -141
  146. package/lib/commonjs/web/handlers/PanGestureHandler.js +0 -399
  147. package/lib/commonjs/web/handlers/PinchGestureHandler.js +0 -122
  148. package/lib/commonjs/web/handlers/RotationGestureHandler.js +0 -129
  149. package/lib/commonjs/web/handlers/TapGestureHandler.js +0 -215
  150. package/lib/commonjs/web/interfaces.js +0 -32
  151. package/lib/commonjs/web/tools/CircularBuffer.js +0 -40
  152. package/lib/commonjs/web/tools/EventManager.js +0 -94
  153. package/lib/commonjs/web/tools/GestureHandlerDelegate.js +0 -6
  154. package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js +0 -267
  155. package/lib/commonjs/web/tools/GestureHandlerWebDelegate.js +0 -165
  156. package/lib/commonjs/web/tools/InteractionManager.js +0 -96
  157. package/lib/commonjs/web/tools/KeyboardEventManager.js +0 -108
  158. package/lib/commonjs/web/tools/LeastSquareSolver.js +0 -159
  159. package/lib/commonjs/web/tools/NodeManager.js +0 -39
  160. package/lib/commonjs/web/tools/PointerEventManager.js +0 -189
  161. package/lib/commonjs/web/tools/PointerTracker.js +0 -192
  162. package/lib/commonjs/web/tools/Vector.js +0 -37
  163. package/lib/commonjs/web/tools/VelocityTracker.js +0 -85
  164. package/lib/commonjs/web/tools/WheelEventManager.js +0 -55
  165. package/lib/commonjs/web/utils.js +0 -235
  166. package/lib/commonjs/web_hammer/DiscreteGestureHandler.js +0 -93
  167. package/lib/commonjs/web_hammer/DraggingGestureHandler.js +0 -43
  168. package/lib/commonjs/web_hammer/Errors.js +0 -13
  169. package/lib/commonjs/web_hammer/FlingGestureHandler.js +0 -139
  170. package/lib/commonjs/web_hammer/GestureHandler.js +0 -484
  171. package/lib/commonjs/web_hammer/IndiscreteGestureHandler.js +0 -45
  172. package/lib/commonjs/web_hammer/LongPressGestureHandler.js +0 -57
  173. package/lib/commonjs/web_hammer/NativeViewGestureHandler.js +0 -57
  174. package/lib/commonjs/web_hammer/NodeManager.js +0 -41
  175. package/lib/commonjs/web_hammer/PanGestureHandler.js +0 -167
  176. package/lib/commonjs/web_hammer/PinchGestureHandler.js +0 -31
  177. package/lib/commonjs/web_hammer/PressGestureHandler.js +0 -153
  178. package/lib/commonjs/web_hammer/RotationGestureHandler.js +0 -32
  179. package/lib/commonjs/web_hammer/TapGestureHandler.js +0 -165
  180. package/lib/commonjs/web_hammer/constants.js +0 -51
  181. package/lib/commonjs/web_hammer/utils.js +0 -32
  182. package/lib/module/ActionType.js +0 -11
  183. package/lib/module/Directions.js +0 -27
  184. package/lib/module/EnableNewWebImplementation.js +0 -34
  185. package/lib/module/GestureHandlerRootViewContext.js +0 -5
  186. package/lib/module/PlatformConstants.js +0 -5
  187. package/lib/module/PlatformConstants.kepler.js +0 -8
  188. package/lib/module/PlatformConstants.web.js +0 -8
  189. package/lib/module/PointerType.js +0 -11
  190. package/lib/module/RNGestureHandlerModule.js +0 -8
  191. package/lib/module/RNGestureHandlerModule.kepler.js +0 -26
  192. package/lib/module/RNGestureHandlerModule.web.js +0 -90
  193. package/lib/module/RNGestureHandlerModule.windows.js +0 -50
  194. package/lib/module/RNRenderer.js +0 -6
  195. package/lib/module/RNRenderer.web.js +0 -6
  196. package/lib/module/State.js +0 -15
  197. package/lib/module/TouchEventType.js +0 -12
  198. package/lib/module/components/DrawerLayout.js +0 -541
  199. package/lib/module/components/GestureButtons.js +0 -200
  200. package/lib/module/components/GestureButtonsProps.js +0 -4
  201. package/lib/module/components/GestureComponents.js +0 -100
  202. package/lib/module/components/GestureComponents.web.js +0 -32
  203. package/lib/module/components/GestureHandlerButton.js +0 -5
  204. package/lib/module/components/GestureHandlerButton.web.js +0 -11
  205. package/lib/module/components/GestureHandlerRootView.android.js +0 -30
  206. package/lib/module/components/GestureHandlerRootView.js +0 -29
  207. package/lib/module/components/GestureHandlerRootView.kepler.js +0 -15
  208. package/lib/module/components/GestureHandlerRootView.web.js +0 -24
  209. package/lib/module/components/Pressable/Pressable.js +0 -268
  210. package/lib/module/components/Pressable/PressableProps.js +0 -4
  211. package/lib/module/components/Pressable/StateMachine.js +0 -40
  212. package/lib/module/components/Pressable/index.js +0 -4
  213. package/lib/module/components/Pressable/stateDefinitions.js +0 -83
  214. package/lib/module/components/Pressable/utils.js +0 -84
  215. package/lib/module/components/ReanimatedDrawerLayout.js +0 -352
  216. package/lib/module/components/ReanimatedSwipeable/ReanimatedSwipeable.js +0 -332
  217. package/lib/module/components/ReanimatedSwipeable/ReanimatedSwipeableProps.js +0 -8
  218. package/lib/module/components/ReanimatedSwipeable/index.js +0 -5
  219. package/lib/module/components/Swipeable.js +0 -364
  220. package/lib/module/components/Text.js +0 -55
  221. package/lib/module/components/gestureHandlerRootHOC.js +0 -33
  222. package/lib/module/components/touchables/ExtraButtonProps.js +0 -2
  223. package/lib/module/components/touchables/GenericTouchable.js +0 -239
  224. package/lib/module/components/touchables/GenericTouchableProps.js +0 -4
  225. package/lib/module/components/touchables/TouchableHighlight.js +0 -87
  226. package/lib/module/components/touchables/TouchableNativeFeedback.android.js +0 -77
  227. package/lib/module/components/touchables/TouchableNativeFeedback.js +0 -10
  228. package/lib/module/components/touchables/TouchableNativeFeedbackProps.js +0 -4
  229. package/lib/module/components/touchables/TouchableOpacity.js +0 -59
  230. package/lib/module/components/touchables/TouchableWithoutFeedback.js +0 -27
  231. package/lib/module/components/touchables/index.js +0 -7
  232. package/lib/module/components/utils.js +0 -13
  233. package/lib/module/findNodeHandle.js +0 -5
  234. package/lib/module/findNodeHandle.web.js +0 -35
  235. package/lib/module/getShadowNodeFromRef.js +0 -47
  236. package/lib/module/getShadowNodeFromRef.web.js +0 -10
  237. package/lib/module/ghQueueMicrotask.js +0 -6
  238. package/lib/module/handlers/FlingGestureHandler.js +0 -26
  239. package/lib/module/handlers/ForceTouchGestureHandler.js +0 -41
  240. package/lib/module/handlers/GestureHandlerEventPayload.js +0 -4
  241. package/lib/module/handlers/LongPressGestureHandler.js +0 -28
  242. package/lib/module/handlers/NativeViewGestureHandler.js +0 -27
  243. package/lib/module/handlers/PanGestureHandler.js +0 -105
  244. package/lib/module/handlers/PinchGestureHandler.js +0 -25
  245. package/lib/module/handlers/PressabilityDebugView.js +0 -5
  246. package/lib/module/handlers/PressabilityDebugView.web.js +0 -7
  247. package/lib/module/handlers/RotationGestureHandler.js +0 -25
  248. package/lib/module/handlers/TapGestureHandler.js +0 -28
  249. package/lib/module/handlers/createHandler.js +0 -399
  250. package/lib/module/handlers/createNativeWrapper.js +0 -74
  251. package/lib/module/handlers/customDirectEventTypes.js +0 -5
  252. package/lib/module/handlers/customDirectEventTypes.web.js +0 -7
  253. package/lib/module/handlers/gestureHandlerCommon.js +0 -26
  254. package/lib/module/handlers/gestureHandlerTypesCompat.js +0 -4
  255. package/lib/module/handlers/gestures/GestureDetector/Wrap.js +0 -26
  256. package/lib/module/handlers/gestures/GestureDetector/Wrap.web.js +0 -36
  257. package/lib/module/handlers/gestures/GestureDetector/attachHandlers.js +0 -62
  258. package/lib/module/handlers/gestures/GestureDetector/dropHandlers.js +0 -15
  259. package/lib/module/handlers/gestures/GestureDetector/index.js +0 -117
  260. package/lib/module/handlers/gestures/GestureDetector/needsToReattach.js +0 -18
  261. package/lib/module/handlers/gestures/GestureDetector/types.js +0 -4
  262. package/lib/module/handlers/gestures/GestureDetector/updateHandlers.js +0 -61
  263. package/lib/module/handlers/gestures/GestureDetector/useAnimatedGesture.js +0 -139
  264. package/lib/module/handlers/gestures/GestureDetector/useDetectorUpdater.js +0 -43
  265. package/lib/module/handlers/gestures/GestureDetector/useMountReactions.js +0 -37
  266. package/lib/module/handlers/gestures/GestureDetector/useViewRefHandler.js +0 -40
  267. package/lib/module/handlers/gestures/GestureDetector/utils.js +0 -134
  268. package/lib/module/handlers/gestures/eventReceiver.js +0 -110
  269. package/lib/module/handlers/gestures/flingGesture.js +0 -32
  270. package/lib/module/handlers/gestures/forceTouchGesture.js +0 -76
  271. package/lib/module/handlers/gestures/gesture.js +0 -332
  272. package/lib/module/handlers/gestures/gestureComposition.js +0 -83
  273. package/lib/module/handlers/gestures/gestureObjects.js +0 -129
  274. package/lib/module/handlers/gestures/gestureStateManager.js +0 -66
  275. package/lib/module/handlers/gestures/gestureStateManager.web.js +0 -23
  276. package/lib/module/handlers/gestures/hoverGesture.js +0 -52
  277. package/lib/module/handlers/gestures/longPressGesture.js +0 -41
  278. package/lib/module/handlers/gestures/manualGesture.js +0 -20
  279. package/lib/module/handlers/gestures/nativeGesture.js +0 -29
  280. package/lib/module/handlers/gestures/panGesture.js +0 -192
  281. package/lib/module/handlers/gestures/pinchGesture.js +0 -33
  282. package/lib/module/handlers/gestures/reanimatedWrapper.js +0 -26
  283. package/lib/module/handlers/gestures/rotationGesture.js +0 -33
  284. package/lib/module/handlers/gestures/tapGesture.js +0 -82
  285. package/lib/module/handlers/getNextHandlerTag.js +0 -7
  286. package/lib/module/handlers/handlersRegistry.js +0 -39
  287. package/lib/module/handlers/utils.js +0 -61
  288. package/lib/module/index.js +0 -31
  289. package/lib/module/init.js +0 -19
  290. package/lib/module/jestUtils/index.js +0 -4
  291. package/lib/module/jestUtils/jestUtils.js +0 -311
  292. package/lib/module/mocks/Pressable.js +0 -4
  293. package/lib/module/mocks/mocks.js +0 -64
  294. package/lib/module/mocks.js +0 -57
  295. package/lib/module/mountRegistry.js +0 -32
  296. package/lib/module/specs/NativeRNGestureHandlerModule.js +0 -5
  297. package/lib/module/specs/RNGestureHandlerButtonNativeComponent.kepler.js +0 -14
  298. package/lib/module/specs/RNGestureHandlerButtonNativeComponent.ts +0 -24
  299. package/lib/module/specs/RNGestureHandlerRootViewNativeComponent.kepler.js +0 -11
  300. package/lib/module/specs/RNGestureHandlerRootViewNativeComponent.ts +0 -7
  301. package/lib/module/typeUtils.js +0 -2
  302. package/lib/module/utils.js +0 -81
  303. package/lib/module/web/Gestures.js +0 -42
  304. package/lib/module/web/constants.js +0 -5
  305. package/lib/module/web/detectors/RotationGestureDetector.js +0 -119
  306. package/lib/module/web/detectors/ScaleGestureDetector.js +0 -106
  307. package/lib/module/web/handlers/FlingGestureHandler.js +0 -137
  308. package/lib/module/web/handlers/GestureHandler.js +0 -682
  309. package/lib/module/web/handlers/HoverGestureHandler.js +0 -39
  310. package/lib/module/web/handlers/IGestureHandler.js +0 -2
  311. package/lib/module/web/handlers/LongPressGestureHandler.js +0 -140
  312. package/lib/module/web/handlers/ManualGestureHandler.js +0 -32
  313. package/lib/module/web/handlers/NativeViewGestureHandler.js +0 -135
  314. package/lib/module/web/handlers/PanGestureHandler.js +0 -393
  315. package/lib/module/web/handlers/PinchGestureHandler.js +0 -116
  316. package/lib/module/web/handlers/RotationGestureHandler.js +0 -123
  317. package/lib/module/web/handlers/TapGestureHandler.js +0 -209
  318. package/lib/module/web/interfaces.js +0 -28
  319. package/lib/module/web/tools/CircularBuffer.js +0 -35
  320. package/lib/module/web/tools/EventManager.js +0 -89
  321. package/lib/module/web/tools/GestureHandlerDelegate.js +0 -4
  322. package/lib/module/web/tools/GestureHandlerOrchestrator.js +0 -261
  323. package/lib/module/web/tools/GestureHandlerWebDelegate.js +0 -159
  324. package/lib/module/web/tools/InteractionManager.js +0 -91
  325. package/lib/module/web/tools/KeyboardEventManager.js +0 -102
  326. package/lib/module/web/tools/LeastSquareSolver.js +0 -154
  327. package/lib/module/web/tools/NodeManager.js +0 -34
  328. package/lib/module/web/tools/PointerEventManager.js +0 -183
  329. package/lib/module/web/tools/PointerTracker.js +0 -186
  330. package/lib/module/web/tools/Vector.js +0 -32
  331. package/lib/module/web/tools/VelocityTracker.js +0 -79
  332. package/lib/module/web/tools/WheelEventManager.js +0 -49
  333. package/lib/module/web/utils.js +0 -223
  334. package/lib/module/web_hammer/DiscreteGestureHandler.js +0 -87
  335. package/lib/module/web_hammer/DraggingGestureHandler.js +0 -37
  336. package/lib/module/web_hammer/Errors.js +0 -8
  337. package/lib/module/web_hammer/FlingGestureHandler.js +0 -133
  338. package/lib/module/web_hammer/GestureHandler.js +0 -478
  339. package/lib/module/web_hammer/IndiscreteGestureHandler.js +0 -41
  340. package/lib/module/web_hammer/LongPressGestureHandler.js +0 -51
  341. package/lib/module/web_hammer/NativeViewGestureHandler.js +0 -51
  342. package/lib/module/web_hammer/NodeManager.js +0 -33
  343. package/lib/module/web_hammer/PanGestureHandler.js +0 -162
  344. package/lib/module/web_hammer/PinchGestureHandler.js +0 -26
  345. package/lib/module/web_hammer/PressGestureHandler.js +0 -148
  346. package/lib/module/web_hammer/RotationGestureHandler.js +0 -27
  347. package/lib/module/web_hammer/TapGestureHandler.js +0 -160
  348. package/lib/module/web_hammer/constants.js +0 -46
  349. package/lib/module/web_hammer/utils.js +0 -21
  350. package/src/ActionType.ts +0 -9
  351. package/src/Directions.ts +0 -26
  352. package/src/EnableNewWebImplementation.ts +0 -53
  353. package/src/GestureHandlerRootViewContext.ts +0 -3
  354. package/src/PlatformConstants.kepler.ts +0 -5
  355. package/src/PlatformConstants.ts +0 -8
  356. package/src/PlatformConstants.web.ts +0 -5
  357. package/src/PointerType.ts +0 -7
  358. package/src/RNGestureHandlerModule.kepler.ts +0 -64
  359. package/src/RNGestureHandlerModule.ts +0 -5
  360. package/src/RNGestureHandlerModule.web.ts +0 -124
  361. package/src/RNGestureHandlerModule.windows.ts +0 -62
  362. package/src/RNRenderer.ts +0 -3
  363. package/src/RNRenderer.web.ts +0 -3
  364. package/src/State.ts +0 -13
  365. package/src/TouchEventType.ts +0 -11
  366. package/src/components/DrawerLayout.tsx +0 -788
  367. package/src/components/GestureButtons.tsx +0 -272
  368. package/src/components/GestureButtonsProps.ts +0 -156
  369. package/src/components/GestureComponents.tsx +0 -148
  370. package/src/components/GestureComponents.web.tsx +0 -41
  371. package/src/components/GestureHandlerButton.tsx +0 -5
  372. package/src/components/GestureHandlerButton.web.tsx +0 -6
  373. package/src/components/GestureHandlerRootView.android.tsx +0 -32
  374. package/src/components/GestureHandlerRootView.kepler.tsx +0 -18
  375. package/src/components/GestureHandlerRootView.tsx +0 -28
  376. package/src/components/GestureHandlerRootView.web.tsx +0 -22
  377. package/src/components/Pressable/Pressable.tsx +0 -401
  378. package/src/components/Pressable/PressableProps.tsx +0 -174
  379. package/src/components/Pressable/StateMachine.tsx +0 -57
  380. package/src/components/Pressable/index.ts +0 -5
  381. package/src/components/Pressable/stateDefinitions.ts +0 -126
  382. package/src/components/Pressable/utils.ts +0 -140
  383. package/src/components/ReanimatedDrawerLayout.tsx +0 -754
  384. package/src/components/ReanimatedSwipeable/ReanimatedSwipeable.tsx +0 -607
  385. package/src/components/ReanimatedSwipeable/ReanimatedSwipeableProps.ts +0 -199
  386. package/src/components/ReanimatedSwipeable/index.ts +0 -6
  387. package/src/components/Swipeable.tsx +0 -595
  388. package/src/components/Text.tsx +0 -77
  389. package/src/components/gestureHandlerRootHOC.tsx +0 -33
  390. package/src/components/touchables/ExtraButtonProps.ts +0 -7
  391. package/src/components/touchables/GenericTouchable.tsx +0 -275
  392. package/src/components/touchables/GenericTouchableProps.ts +0 -28
  393. package/src/components/touchables/TouchableHighlight.tsx +0 -118
  394. package/src/components/touchables/TouchableNativeFeedback.android.tsx +0 -83
  395. package/src/components/touchables/TouchableNativeFeedback.tsx +0 -8
  396. package/src/components/touchables/TouchableNativeFeedbackProps.tsx +0 -10
  397. package/src/components/touchables/TouchableOpacity.tsx +0 -78
  398. package/src/components/touchables/TouchableWithoutFeedback.tsx +0 -39
  399. package/src/components/touchables/index.ts +0 -7
  400. package/src/components/utils.ts +0 -26
  401. package/src/findNodeHandle.ts +0 -3
  402. package/src/findNodeHandle.web.ts +0 -41
  403. package/src/getShadowNodeFromRef.ts +0 -50
  404. package/src/getShadowNodeFromRef.web.ts +0 -7
  405. package/src/ghQueueMicrotask.ts +0 -8
  406. package/src/handlers/FlingGestureHandler.ts +0 -64
  407. package/src/handlers/ForceTouchGestureHandler.ts +0 -88
  408. package/src/handlers/GestureHandlerEventPayload.ts +0 -229
  409. package/src/handlers/LongPressGestureHandler.ts +0 -65
  410. package/src/handlers/NativeViewGestureHandler.ts +0 -59
  411. package/src/handlers/PanGestureHandler.ts +0 -282
  412. package/src/handlers/PinchGestureHandler.ts +0 -32
  413. package/src/handlers/PressabilityDebugView.tsx +0 -2
  414. package/src/handlers/PressabilityDebugView.web.tsx +0 -4
  415. package/src/handlers/RotationGestureHandler.ts +0 -32
  416. package/src/handlers/TapGestureHandler.ts +0 -99
  417. package/src/handlers/createHandler.tsx +0 -586
  418. package/src/handlers/createNativeWrapper.tsx +0 -89
  419. package/src/handlers/customDirectEventTypes.ts +0 -2
  420. package/src/handlers/customDirectEventTypes.web.ts +0 -5
  421. package/src/handlers/gestureHandlerCommon.ts +0 -211
  422. package/src/handlers/gestureHandlerTypesCompat.ts +0 -101
  423. package/src/handlers/gestures/GestureDetector/Wrap.tsx +0 -35
  424. package/src/handlers/gestures/GestureDetector/Wrap.web.tsx +0 -42
  425. package/src/handlers/gestures/GestureDetector/attachHandlers.ts +0 -112
  426. package/src/handlers/gestures/GestureDetector/dropHandlers.ts +0 -17
  427. package/src/handlers/gestures/GestureDetector/index.tsx +0 -191
  428. package/src/handlers/gestures/GestureDetector/needsToReattach.ts +0 -27
  429. package/src/handlers/gestures/GestureDetector/types.ts +0 -32
  430. package/src/handlers/gestures/GestureDetector/updateHandlers.ts +0 -92
  431. package/src/handlers/gestures/GestureDetector/useAnimatedGesture.ts +0 -209
  432. package/src/handlers/gestures/GestureDetector/useDetectorUpdater.ts +0 -69
  433. package/src/handlers/gestures/GestureDetector/useMountReactions.ts +0 -51
  434. package/src/handlers/gestures/GestureDetector/useViewRefHandler.ts +0 -58
  435. package/src/handlers/gestures/GestureDetector/utils.ts +0 -181
  436. package/src/handlers/gestures/eventReceiver.ts +0 -173
  437. package/src/handlers/gestures/flingGesture.ts +0 -36
  438. package/src/handlers/gestures/forceTouchGesture.ts +0 -95
  439. package/src/handlers/gestures/gesture.ts +0 -472
  440. package/src/handlers/gestures/gestureComposition.ts +0 -124
  441. package/src/handlers/gestures/gestureObjects.ts +0 -143
  442. package/src/handlers/gestures/gestureStateManager.ts +0 -76
  443. package/src/handlers/gestures/gestureStateManager.web.ts +0 -26
  444. package/src/handlers/gestures/hoverGesture.ts +0 -77
  445. package/src/handlers/gestures/longPressGesture.ts +0 -45
  446. package/src/handlers/gestures/manualGesture.ts +0 -31
  447. package/src/handlers/gestures/nativeGesture.ts +0 -33
  448. package/src/handlers/gestures/panGesture.ts +0 -221
  449. package/src/handlers/gestures/pinchGesture.ts +0 -51
  450. package/src/handlers/gestures/reanimatedWrapper.ts +0 -57
  451. package/src/handlers/gestures/rotationGesture.ts +0 -51
  452. package/src/handlers/gestures/tapGesture.ts +0 -86
  453. package/src/handlers/getNextHandlerTag.ts +0 -5
  454. package/src/handlers/handlersRegistry.ts +0 -58
  455. package/src/handlers/utils.ts +0 -76
  456. package/src/init.ts +0 -18
  457. package/src/jestUtils/index.ts +0 -1
  458. package/src/jestUtils/jestUtils.ts +0 -513
  459. package/src/mocks/Pressable.tsx +0 -1
  460. package/src/mocks/mocks.tsx +0 -70
  461. package/src/mocks.ts +0 -67
  462. package/src/mountRegistry.ts +0 -51
  463. package/src/specs/NativeRNGestureHandlerModule.ts +0 -26
  464. package/src/specs/RNGestureHandlerButtonNativeComponent.kepler.ts +0 -27
  465. package/src/specs/RNGestureHandlerButtonNativeComponent.ts +0 -24
  466. package/src/specs/RNGestureHandlerRootViewNativeComponent.kepler.ts +0 -21
  467. package/src/specs/RNGestureHandlerRootViewNativeComponent.ts +0 -7
  468. package/src/typeUtils.ts +0 -1
  469. package/src/utils.ts +0 -107
  470. package/src/web/Gestures.ts +0 -41
  471. package/src/web/constants.ts +0 -2
  472. package/src/web/detectors/RotationGestureDetector.ts +0 -170
  473. package/src/web/detectors/ScaleGestureDetector.ts +0 -171
  474. package/src/web/handlers/FlingGestureHandler.ts +0 -196
  475. package/src/web/handlers/GestureHandler.ts +0 -881
  476. package/src/web/handlers/HoverGestureHandler.ts +0 -49
  477. package/src/web/handlers/IGestureHandler.ts +0 -49
  478. package/src/web/handlers/LongPressGestureHandler.ts +0 -175
  479. package/src/web/handlers/ManualGestureHandler.ts +0 -37
  480. package/src/web/handlers/NativeViewGestureHandler.ts +0 -175
  481. package/src/web/handlers/PanGestureHandler.ts +0 -571
  482. package/src/web/handlers/PinchGestureHandler.ts +0 -152
  483. package/src/web/handlers/RotationGestureHandler.ts +0 -166
  484. package/src/web/handlers/TapGestureHandler.ts +0 -274
  485. package/src/web/interfaces.ts +0 -190
  486. package/src/web/tools/CircularBuffer.ts +0 -42
  487. package/src/web/tools/EventManager.ts +0 -108
  488. package/src/web/tools/GestureHandlerDelegate.ts +0 -26
  489. package/src/web/tools/GestureHandlerOrchestrator.ts +0 -392
  490. package/src/web/tools/GestureHandlerWebDelegate.ts +0 -227
  491. package/src/web/tools/InteractionManager.ts +0 -135
  492. package/src/web/tools/KeyboardEventManager.ts +0 -133
  493. package/src/web/tools/LeastSquareSolver.ts +0 -182
  494. package/src/web/tools/NodeManager.ts +0 -48
  495. package/src/web/tools/PointerEventManager.ts +0 -226
  496. package/src/web/tools/PointerTracker.ts +0 -228
  497. package/src/web/tools/Vector.ts +0 -59
  498. package/src/web/tools/VelocityTracker.ts +0 -98
  499. package/src/web/tools/WheelEventManager.ts +0 -48
  500. package/src/web/utils.ts +0 -293
  501. package/src/web_hammer/DiscreteGestureHandler.ts +0 -82
  502. package/src/web_hammer/DraggingGestureHandler.ts +0 -34
  503. package/src/web_hammer/Errors.ts +0 -7
  504. package/src/web_hammer/FlingGestureHandler.ts +0 -134
  505. package/src/web_hammer/GestureHandler.ts +0 -600
  506. package/src/web_hammer/IndiscreteGestureHandler.ts +0 -33
  507. package/src/web_hammer/LongPressGestureHandler.ts +0 -56
  508. package/src/web_hammer/NativeViewGestureHandler.ts +0 -47
  509. package/src/web_hammer/NodeManager.ts +0 -33
  510. package/src/web_hammer/PanGestureHandler.ts +0 -226
  511. package/src/web_hammer/PinchGestureHandler.ts +0 -25
  512. package/src/web_hammer/PressGestureHandler.ts +0 -170
  513. package/src/web_hammer/RotationGestureHandler.ts +0 -25
  514. package/src/web_hammer/TapGestureHandler.ts +0 -172
  515. package/src/web_hammer/constants.ts +0 -48
  516. 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
- });