react-native-gesture-handler 2.16.1 → 2.17.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (369) hide show
  1. package/README.md +9 -3
  2. package/android/build.gradle +105 -0
  3. package/android/gradle.properties +7 -0
  4. package/android/paper/src/main/java/com/facebook/react/viewmanagers/RNGestureHandlerButtonManagerDelegate.java +7 -7
  5. package/android/src/main/java/com/swmansion/gesturehandler/core/NativeViewGestureHandler.kt +16 -8
  6. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.kt +9 -5
  7. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerInteractionManager.kt +4 -0
  8. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.kt +1 -1
  9. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerTouchEvent.kt +1 -0
  10. package/apple/RNGestureHandlerButtonComponentView.mm +10 -0
  11. package/apple/RNGestureHandlerModule.mm +2 -3
  12. package/lib/commonjs/RNGestureHandlerModule.js +4 -97
  13. package/lib/commonjs/RNGestureHandlerModule.js.map +1 -1
  14. package/lib/commonjs/RNGestureHandlerModule.web.js +109 -0
  15. package/lib/commonjs/RNGestureHandlerModule.web.js.map +1 -0
  16. package/lib/commonjs/RNRenderer.js +10 -5
  17. package/lib/commonjs/RNRenderer.js.map +1 -1
  18. package/lib/commonjs/RNRenderer.web.js +11 -0
  19. package/lib/commonjs/RNRenderer.web.js.map +1 -0
  20. package/lib/commonjs/components/GestureButtons.js +27 -12
  21. package/lib/commonjs/components/GestureButtons.js.map +1 -1
  22. package/lib/commonjs/components/GestureComponents.js +82 -19
  23. package/lib/commonjs/components/GestureComponents.js.map +1 -1
  24. package/lib/commonjs/components/GestureComponents.web.js +52 -0
  25. package/lib/commonjs/components/GestureComponents.web.js.map +1 -0
  26. package/lib/commonjs/components/GestureHandlerButton.js +3 -13
  27. package/lib/commonjs/components/GestureHandlerButton.js.map +1 -1
  28. package/lib/commonjs/components/GestureHandlerButton.web.js +24 -0
  29. package/lib/commonjs/components/GestureHandlerButton.web.js.map +1 -0
  30. package/lib/commonjs/components/GestureHandlerRootView.js +6 -0
  31. package/lib/commonjs/components/GestureHandlerRootView.js.map +1 -1
  32. package/lib/commonjs/components/{GestureHandlerRootView.native.js → GestureHandlerRootView.web.js} +1 -7
  33. package/lib/commonjs/components/GestureHandlerRootView.web.js.map +1 -0
  34. package/lib/commonjs/getReactNativeVersion.js +12 -1
  35. package/lib/commonjs/getReactNativeVersion.js.map +1 -1
  36. package/lib/commonjs/getReactNativeVersion.web.js +11 -0
  37. package/lib/commonjs/getReactNativeVersion.web.js.map +1 -0
  38. package/lib/commonjs/getShadowNodeFromRef.js +34 -5
  39. package/lib/commonjs/getShadowNodeFromRef.js.map +1 -1
  40. package/lib/commonjs/getShadowNodeFromRef.web.js +15 -0
  41. package/lib/commonjs/getShadowNodeFromRef.web.js.map +1 -0
  42. package/lib/commonjs/handlers/PressabilityDebugView.js +7 -5
  43. package/lib/commonjs/handlers/PressabilityDebugView.js.map +1 -1
  44. package/lib/commonjs/handlers/PressabilityDebugView.web.js +12 -0
  45. package/lib/commonjs/handlers/PressabilityDebugView.web.js.map +1 -0
  46. package/lib/commonjs/handlers/createHandler.js +1 -3
  47. package/lib/commonjs/handlers/createHandler.js.map +1 -1
  48. package/lib/commonjs/handlers/customDirectEventTypes.js +8 -5
  49. package/lib/commonjs/handlers/customDirectEventTypes.js.map +1 -1
  50. package/lib/commonjs/handlers/customDirectEventTypes.web.js +11 -0
  51. package/lib/commonjs/handlers/customDirectEventTypes.web.js.map +1 -0
  52. package/lib/commonjs/handlers/gestureHandlerCommon.js +3 -3
  53. package/lib/commonjs/handlers/gestureHandlerCommon.js.map +1 -1
  54. package/lib/commonjs/handlers/gestures/GestureDetector/Wrap.js +42 -0
  55. package/lib/commonjs/handlers/gestures/GestureDetector/Wrap.js.map +1 -0
  56. package/lib/commonjs/handlers/gestures/GestureDetector/attachHandlers.js +83 -0
  57. package/lib/commonjs/handlers/gestures/GestureDetector/attachHandlers.js.map +1 -0
  58. package/lib/commonjs/handlers/gestures/GestureDetector/dropHandlers.js +25 -0
  59. package/lib/commonjs/handlers/gestures/GestureDetector/dropHandlers.js.map +1 -0
  60. package/lib/commonjs/handlers/gestures/GestureDetector/index.js +143 -0
  61. package/lib/commonjs/handlers/gestures/GestureDetector/index.js.map +1 -0
  62. package/lib/commonjs/handlers/gestures/GestureDetector/needsToReattach.js +25 -0
  63. package/lib/commonjs/handlers/gestures/GestureDetector/needsToReattach.js.map +1 -0
  64. package/lib/commonjs/handlers/gestures/GestureDetector/types.js +6 -0
  65. package/lib/commonjs/handlers/gestures/GestureDetector/types.js.map +1 -0
  66. package/lib/commonjs/handlers/gestures/GestureDetector/updateHandlers.js +80 -0
  67. package/lib/commonjs/handlers/gestures/GestureDetector/updateHandlers.js.map +1 -0
  68. package/lib/commonjs/handlers/gestures/GestureDetector/useAnimatedGesture.js +180 -0
  69. package/lib/commonjs/handlers/gestures/GestureDetector/useAnimatedGesture.js.map +1 -0
  70. package/lib/commonjs/handlers/gestures/GestureDetector/useDetectorUpdater.js +55 -0
  71. package/lib/commonjs/handlers/gestures/GestureDetector/useDetectorUpdater.js.map +1 -0
  72. package/lib/commonjs/handlers/gestures/GestureDetector/useViewRefHandler.js +47 -0
  73. package/lib/commonjs/handlers/gestures/GestureDetector/useViewRefHandler.js.map +1 -0
  74. package/lib/commonjs/handlers/gestures/GestureDetector/utils.js +176 -0
  75. package/lib/commonjs/handlers/gestures/GestureDetector/utils.js.map +1 -0
  76. package/lib/commonjs/handlers/gestures/gestureComposition.js +3 -1
  77. package/lib/commonjs/handlers/gestures/gestureComposition.js.map +1 -1
  78. package/lib/commonjs/handlers/gestures/gestureStateManager.js +8 -0
  79. package/lib/commonjs/handlers/gestures/gestureStateManager.js.map +1 -1
  80. package/lib/commonjs/handlers/gestures/reanimatedWrapper.js.map +1 -1
  81. package/lib/commonjs/utils.js +36 -0
  82. package/lib/commonjs/utils.js.map +1 -1
  83. package/lib/commonjs/web/detectors/RotationGestureDetector.js +6 -8
  84. package/lib/commonjs/web/detectors/RotationGestureDetector.js.map +1 -1
  85. package/lib/commonjs/web/detectors/ScaleGestureDetector.js +5 -6
  86. package/lib/commonjs/web/detectors/ScaleGestureDetector.js.map +1 -1
  87. package/lib/commonjs/web/handlers/FlingGestureHandler.js +1 -0
  88. package/lib/commonjs/web/handlers/FlingGestureHandler.js.map +1 -1
  89. package/lib/commonjs/web/handlers/GestureHandler.js +56 -64
  90. package/lib/commonjs/web/handlers/GestureHandler.js.map +1 -1
  91. package/lib/commonjs/web/handlers/LongPressGestureHandler.js +1 -0
  92. package/lib/commonjs/web/handlers/LongPressGestureHandler.js.map +1 -1
  93. package/lib/commonjs/web/handlers/ManualGestureHandler.js +1 -0
  94. package/lib/commonjs/web/handlers/ManualGestureHandler.js.map +1 -1
  95. package/lib/commonjs/web/handlers/NativeViewGestureHandler.js +7 -4
  96. package/lib/commonjs/web/handlers/NativeViewGestureHandler.js.map +1 -1
  97. package/lib/commonjs/web/handlers/PanGestureHandler.js +28 -18
  98. package/lib/commonjs/web/handlers/PanGestureHandler.js.map +1 -1
  99. package/lib/commonjs/web/handlers/PinchGestureHandler.js +1 -0
  100. package/lib/commonjs/web/handlers/PinchGestureHandler.js.map +1 -1
  101. package/lib/commonjs/web/handlers/RotationGestureHandler.js +1 -0
  102. package/lib/commonjs/web/handlers/RotationGestureHandler.js.map +1 -1
  103. package/lib/commonjs/web/handlers/TapGestureHandler.js +18 -12
  104. package/lib/commonjs/web/handlers/TapGestureHandler.js.map +1 -1
  105. package/lib/commonjs/web/interfaces.js.map +1 -1
  106. package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js +1 -6
  107. package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js.map +1 -1
  108. package/lib/commonjs/web/tools/PointerEventManager.js +7 -2
  109. package/lib/commonjs/web/tools/PointerEventManager.js.map +1 -1
  110. package/lib/commonjs/web/tools/PointerTracker.js +89 -57
  111. package/lib/commonjs/web/tools/PointerTracker.js.map +1 -1
  112. package/lib/commonjs/web/tools/TouchEventManager.js +6 -2
  113. package/lib/commonjs/web/tools/TouchEventManager.js.map +1 -1
  114. package/lib/commonjs/web/tools/Vector.js +2 -1
  115. package/lib/commonjs/web/tools/Vector.js.map +1 -1
  116. package/lib/commonjs/web/utils.js +31 -0
  117. package/lib/commonjs/web/utils.js.map +1 -1
  118. package/lib/module/RNGestureHandlerModule.js +4 -84
  119. package/lib/module/RNGestureHandlerModule.js.map +1 -1
  120. package/lib/module/RNGestureHandlerModule.web.js +85 -0
  121. package/lib/module/RNGestureHandlerModule.web.js.map +1 -0
  122. package/lib/module/RNRenderer.js +3 -3
  123. package/lib/module/RNRenderer.js.map +1 -1
  124. package/lib/module/RNRenderer.web.js +4 -0
  125. package/lib/module/RNRenderer.web.js.map +1 -0
  126. package/lib/module/components/GestureButtons.js +24 -6
  127. package/lib/module/components/GestureButtons.js.map +1 -1
  128. package/lib/module/components/GestureComponents.js +80 -18
  129. package/lib/module/components/GestureComponents.js.map +1 -1
  130. package/lib/module/components/GestureComponents.web.js +28 -0
  131. package/lib/module/components/GestureComponents.web.js.map +1 -0
  132. package/lib/module/components/GestureHandlerButton.js +2 -8
  133. package/lib/module/components/GestureHandlerButton.js.map +1 -1
  134. package/lib/module/components/GestureHandlerButton.web.js +9 -0
  135. package/lib/module/components/GestureHandlerButton.web.js.map +1 -0
  136. package/lib/module/components/GestureHandlerRootView.js +5 -0
  137. package/lib/module/components/GestureHandlerRootView.js.map +1 -1
  138. package/lib/module/components/{GestureHandlerRootView.native.js → GestureHandlerRootView.web.js} +1 -6
  139. package/lib/module/components/GestureHandlerRootView.web.js.map +1 -0
  140. package/lib/module/getReactNativeVersion.js +7 -1
  141. package/lib/module/getReactNativeVersion.js.map +1 -1
  142. package/lib/module/getReactNativeVersion.web.js +4 -0
  143. package/lib/module/getReactNativeVersion.web.js.map +1 -0
  144. package/lib/module/getShadowNodeFromRef.js +33 -4
  145. package/lib/module/getShadowNodeFromRef.js.map +1 -1
  146. package/lib/module/getShadowNodeFromRef.web.js +8 -0
  147. package/lib/module/getShadowNodeFromRef.web.js.map +1 -0
  148. package/lib/module/handlers/PressabilityDebugView.js +2 -4
  149. package/lib/module/handlers/PressabilityDebugView.js.map +1 -1
  150. package/lib/module/handlers/PressabilityDebugView.web.js +5 -0
  151. package/lib/module/handlers/PressabilityDebugView.web.js.map +1 -0
  152. package/lib/module/handlers/createHandler.js +2 -4
  153. package/lib/module/handlers/createHandler.js.map +1 -1
  154. package/lib/module/handlers/customDirectEventTypes.js +2 -4
  155. package/lib/module/handlers/customDirectEventTypes.js.map +1 -1
  156. package/lib/module/handlers/customDirectEventTypes.web.js +5 -0
  157. package/lib/module/handlers/customDirectEventTypes.web.js.map +1 -0
  158. package/lib/module/handlers/gestureHandlerCommon.js +1 -1
  159. package/lib/module/handlers/gestureHandlerCommon.js.map +1 -1
  160. package/lib/module/handlers/gestures/GestureDetector/Wrap.js +26 -0
  161. package/lib/module/handlers/gestures/GestureDetector/Wrap.js.map +1 -0
  162. package/lib/module/handlers/gestures/GestureDetector/attachHandlers.js +65 -0
  163. package/lib/module/handlers/gestures/GestureDetector/attachHandlers.js.map +1 -0
  164. package/lib/module/handlers/gestures/GestureDetector/dropHandlers.js +12 -0
  165. package/lib/module/handlers/gestures/GestureDetector/dropHandlers.js.map +1 -0
  166. package/lib/module/handlers/gestures/GestureDetector/index.js +115 -0
  167. package/lib/module/handlers/gestures/GestureDetector/index.js.map +1 -0
  168. package/lib/module/handlers/gestures/GestureDetector/needsToReattach.js +18 -0
  169. package/lib/module/handlers/gestures/GestureDetector/needsToReattach.js.map +1 -0
  170. package/lib/module/handlers/gestures/GestureDetector/types.js +2 -0
  171. package/lib/module/handlers/gestures/GestureDetector/types.js.map +1 -0
  172. package/lib/module/handlers/gestures/GestureDetector/updateHandlers.js +64 -0
  173. package/lib/module/handlers/gestures/GestureDetector/updateHandlers.js.map +1 -0
  174. package/lib/module/handlers/gestures/GestureDetector/useAnimatedGesture.js +165 -0
  175. package/lib/module/handlers/gestures/GestureDetector/useAnimatedGesture.js.map +1 -0
  176. package/lib/module/handlers/gestures/GestureDetector/useDetectorUpdater.js +41 -0
  177. package/lib/module/handlers/gestures/GestureDetector/useDetectorUpdater.js.map +1 -0
  178. package/lib/module/handlers/gestures/GestureDetector/useViewRefHandler.js +36 -0
  179. package/lib/module/handlers/gestures/GestureDetector/useViewRefHandler.js.map +1 -0
  180. package/lib/module/handlers/gestures/GestureDetector/utils.js +142 -0
  181. package/lib/module/handlers/gestures/GestureDetector/utils.js.map +1 -0
  182. package/lib/module/handlers/gestures/gestureComposition.js +3 -1
  183. package/lib/module/handlers/gestures/gestureComposition.js.map +1 -1
  184. package/lib/module/handlers/gestures/gestureStateManager.js +8 -0
  185. package/lib/module/handlers/gestures/gestureStateManager.js.map +1 -1
  186. package/lib/module/handlers/gestures/reanimatedWrapper.js.map +1 -1
  187. package/lib/module/utils.js +34 -0
  188. package/lib/module/utils.js.map +1 -1
  189. package/lib/module/web/detectors/RotationGestureDetector.js +6 -8
  190. package/lib/module/web/detectors/RotationGestureDetector.js.map +1 -1
  191. package/lib/module/web/detectors/ScaleGestureDetector.js +5 -6
  192. package/lib/module/web/detectors/ScaleGestureDetector.js.map +1 -1
  193. package/lib/module/web/handlers/FlingGestureHandler.js +1 -0
  194. package/lib/module/web/handlers/FlingGestureHandler.js.map +1 -1
  195. package/lib/module/web/handlers/GestureHandler.js +56 -64
  196. package/lib/module/web/handlers/GestureHandler.js.map +1 -1
  197. package/lib/module/web/handlers/LongPressGestureHandler.js +1 -0
  198. package/lib/module/web/handlers/LongPressGestureHandler.js.map +1 -1
  199. package/lib/module/web/handlers/ManualGestureHandler.js +1 -0
  200. package/lib/module/web/handlers/ManualGestureHandler.js.map +1 -1
  201. package/lib/module/web/handlers/NativeViewGestureHandler.js +7 -4
  202. package/lib/module/web/handlers/NativeViewGestureHandler.js.map +1 -1
  203. package/lib/module/web/handlers/PanGestureHandler.js +28 -18
  204. package/lib/module/web/handlers/PanGestureHandler.js.map +1 -1
  205. package/lib/module/web/handlers/PinchGestureHandler.js +1 -0
  206. package/lib/module/web/handlers/PinchGestureHandler.js.map +1 -1
  207. package/lib/module/web/handlers/RotationGestureHandler.js +1 -0
  208. package/lib/module/web/handlers/RotationGestureHandler.js.map +1 -1
  209. package/lib/module/web/handlers/TapGestureHandler.js +18 -12
  210. package/lib/module/web/handlers/TapGestureHandler.js.map +1 -1
  211. package/lib/module/web/interfaces.js.map +1 -1
  212. package/lib/module/web/tools/GestureHandlerOrchestrator.js +1 -6
  213. package/lib/module/web/tools/GestureHandlerOrchestrator.js.map +1 -1
  214. package/lib/module/web/tools/PointerEventManager.js +8 -3
  215. package/lib/module/web/tools/PointerEventManager.js.map +1 -1
  216. package/lib/module/web/tools/PointerTracker.js +89 -57
  217. package/lib/module/web/tools/PointerTracker.js.map +1 -1
  218. package/lib/module/web/tools/TouchEventManager.js +7 -3
  219. package/lib/module/web/tools/TouchEventManager.js.map +1 -1
  220. package/lib/module/web/tools/Vector.js +2 -1
  221. package/lib/module/web/tools/Vector.js.map +1 -1
  222. package/lib/module/web/utils.js +29 -0
  223. package/lib/module/web/utils.js.map +1 -1
  224. package/lib/typescript/RNGestureHandlerModule.d.ts +2 -15
  225. package/lib/typescript/RNGestureHandlerModule.web.d.ts +15 -0
  226. package/lib/typescript/RNRenderer.d.ts +1 -3
  227. package/lib/typescript/RNRenderer.web.d.ts +3 -0
  228. package/lib/typescript/components/GestureButtons.d.ts +3 -34
  229. package/lib/typescript/components/GestureComponents.d.ts +21 -7
  230. package/lib/typescript/components/GestureComponents.web.d.ts +8 -0
  231. package/lib/typescript/components/GestureHandlerButton.d.ts +3 -3
  232. package/lib/typescript/components/GestureHandlerButton.web.d.ts +4 -0
  233. package/lib/typescript/getReactNativeVersion.d.ts +4 -1
  234. package/lib/typescript/getReactNativeVersion.web.d.ts +1 -0
  235. package/lib/typescript/getShadowNodeFromRef.d.ts +1 -1
  236. package/lib/typescript/getShadowNodeFromRef.web.d.ts +1 -0
  237. package/lib/typescript/handlers/PressabilityDebugView.d.ts +1 -1
  238. package/lib/typescript/handlers/PressabilityDebugView.web.d.ts +1 -0
  239. package/lib/typescript/handlers/customDirectEventTypes.d.ts +1 -2
  240. package/lib/typescript/handlers/customDirectEventTypes.web.d.ts +2 -0
  241. package/lib/typescript/handlers/gestureHandlerCommon.d.ts +3 -2
  242. package/lib/typescript/handlers/gestures/GestureDetector/Wrap.d.ts +13 -0
  243. package/lib/typescript/handlers/gestures/GestureDetector/attachHandlers.d.ts +13 -0
  244. package/lib/typescript/handlers/gestures/GestureDetector/dropHandlers.d.ts +2 -0
  245. package/lib/typescript/handlers/gestures/{GestureDetector.d.ts → GestureDetector/index.d.ts} +4 -12
  246. package/lib/typescript/handlers/gestures/GestureDetector/needsToReattach.d.ts +3 -0
  247. package/lib/typescript/handlers/gestures/GestureDetector/types.d.ts +20 -0
  248. package/lib/typescript/handlers/gestures/GestureDetector/updateHandlers.d.ts +4 -0
  249. package/lib/typescript/handlers/gestures/GestureDetector/useAnimatedGesture.d.ts +2 -0
  250. package/lib/typescript/handlers/gestures/GestureDetector/useDetectorUpdater.d.ts +5 -0
  251. package/lib/typescript/handlers/gestures/GestureDetector/useViewRefHandler.d.ts +3 -0
  252. package/lib/typescript/handlers/gestures/GestureDetector/utils.d.ts +12 -0
  253. package/lib/typescript/handlers/gestures/reanimatedWrapper.d.ts +1 -1
  254. package/lib/typescript/utils.d.ts +10 -0
  255. package/lib/typescript/web/handlers/GestureHandler.d.ts +1 -0
  256. package/lib/typescript/web/interfaces.d.ts +1 -0
  257. package/lib/typescript/web/tools/PointerTracker.d.ts +34 -31
  258. package/lib/typescript/web/utils.d.ts +4 -0
  259. package/package.json +5 -5
  260. package/src/RNGestureHandlerModule.ts +4 -104
  261. package/src/RNGestureHandlerModule.web.ts +105 -0
  262. package/src/RNRenderer.ts +3 -3
  263. package/src/RNRenderer.web.ts +3 -0
  264. package/src/components/GestureButtons.tsx +36 -4
  265. package/src/components/GestureComponents.tsx +131 -24
  266. package/src/components/GestureComponents.web.tsx +41 -0
  267. package/src/components/GestureHandlerButton.tsx +4 -5
  268. package/src/components/GestureHandlerButton.web.tsx +6 -0
  269. package/src/components/GestureHandlerRootView.tsx +6 -0
  270. package/src/components/{GestureHandlerRootView.native.tsx → GestureHandlerRootView.web.tsx} +0 -6
  271. package/src/getReactNativeVersion.ts +9 -1
  272. package/src/getReactNativeVersion.web.ts +3 -0
  273. package/src/getShadowNodeFromRef.ts +41 -4
  274. package/src/getShadowNodeFromRef.web.ts +7 -0
  275. package/src/handlers/PressabilityDebugView.tsx +2 -4
  276. package/src/handlers/PressabilityDebugView.web.tsx +4 -0
  277. package/src/handlers/createHandler.tsx +1 -3
  278. package/src/handlers/customDirectEventTypes.ts +2 -5
  279. package/src/handlers/customDirectEventTypes.web.ts +5 -0
  280. package/src/handlers/gestureHandlerCommon.ts +4 -1
  281. package/src/handlers/gestures/GestureDetector/Wrap.tsx +35 -0
  282. package/src/handlers/gestures/GestureDetector/attachHandlers.ts +112 -0
  283. package/src/handlers/gestures/GestureDetector/dropHandlers.ts +14 -0
  284. package/src/handlers/gestures/GestureDetector/index.tsx +187 -0
  285. package/src/handlers/gestures/GestureDetector/needsToReattach.ts +27 -0
  286. package/src/handlers/gestures/GestureDetector/types.ts +32 -0
  287. package/src/handlers/gestures/GestureDetector/updateHandlers.ts +94 -0
  288. package/src/handlers/gestures/GestureDetector/useAnimatedGesture.ts +206 -0
  289. package/src/handlers/gestures/GestureDetector/useDetectorUpdater.ts +69 -0
  290. package/src/handlers/gestures/GestureDetector/useViewRefHandler.ts +54 -0
  291. package/src/handlers/gestures/GestureDetector/utils.ts +185 -0
  292. package/src/handlers/gestures/gestureComposition.ts +2 -0
  293. package/src/handlers/gestures/gestureStateManager.ts +12 -4
  294. package/src/handlers/gestures/reanimatedWrapper.ts +19 -17
  295. package/src/utils.ts +39 -0
  296. package/src/web/detectors/RotationGestureDetector.ts +6 -8
  297. package/src/web/detectors/ScaleGestureDetector.ts +5 -6
  298. package/src/web/handlers/FlingGestureHandler.ts +2 -0
  299. package/src/web/handlers/GestureHandler.ts +53 -62
  300. package/src/web/handlers/LongPressGestureHandler.ts +2 -0
  301. package/src/web/handlers/ManualGestureHandler.ts +2 -0
  302. package/src/web/handlers/NativeViewGestureHandler.ts +8 -4
  303. package/src/web/handlers/PanGestureHandler.ts +32 -19
  304. package/src/web/handlers/PinchGestureHandler.ts +2 -0
  305. package/src/web/handlers/RotationGestureHandler.ts +2 -0
  306. package/src/web/handlers/TapGestureHandler.ts +20 -12
  307. package/src/web/interfaces.ts +1 -0
  308. package/src/web/tools/GestureHandlerOrchestrator.ts +1 -7
  309. package/src/web/tools/PointerEventManager.ts +10 -3
  310. package/src/web/tools/PointerTracker.ts +81 -74
  311. package/src/web/tools/TouchEventManager.ts +5 -3
  312. package/src/web/tools/Vector.ts +2 -4
  313. package/src/web/utils.ts +34 -0
  314. package/lib/commonjs/RNGestureHandlerModule.native.js +0 -16
  315. package/lib/commonjs/RNGestureHandlerModule.native.js.map +0 -1
  316. package/lib/commonjs/RNRenderer.native.js +0 -16
  317. package/lib/commonjs/RNRenderer.native.js.map +0 -1
  318. package/lib/commonjs/components/GestureComponents.native.js +0 -115
  319. package/lib/commonjs/components/GestureComponents.native.js.map +0 -1
  320. package/lib/commonjs/components/GestureHandlerButton.native.js +0 -14
  321. package/lib/commonjs/components/GestureHandlerButton.native.js.map +0 -1
  322. package/lib/commonjs/components/GestureHandlerRootView.native.js.map +0 -1
  323. package/lib/commonjs/getReactNativeVersion.native.js +0 -22
  324. package/lib/commonjs/getReactNativeVersion.native.js.map +0 -1
  325. package/lib/commonjs/getShadowNodeFromRef.native.js +0 -44
  326. package/lib/commonjs/getShadowNodeFromRef.native.js.map +0 -1
  327. package/lib/commonjs/handlers/PressabilityDebugView.native.js +0 -14
  328. package/lib/commonjs/handlers/PressabilityDebugView.native.js.map +0 -1
  329. package/lib/commonjs/handlers/customDirectEventTypes.native.js +0 -14
  330. package/lib/commonjs/handlers/customDirectEventTypes.native.js.map +0 -1
  331. package/lib/commonjs/handlers/gestures/GestureDetector.js +0 -704
  332. package/lib/commonjs/handlers/gestures/GestureDetector.js.map +0 -1
  333. package/lib/module/RNGestureHandlerModule.native.js +0 -5
  334. package/lib/module/RNGestureHandlerModule.native.js.map +0 -1
  335. package/lib/module/RNRenderer.native.js +0 -4
  336. package/lib/module/RNRenderer.native.js.map +0 -1
  337. package/lib/module/components/GestureComponents.native.js +0 -90
  338. package/lib/module/components/GestureComponents.native.js.map +0 -1
  339. package/lib/module/components/GestureHandlerButton.native.js +0 -3
  340. package/lib/module/components/GestureHandlerButton.native.js.map +0 -1
  341. package/lib/module/components/GestureHandlerRootView.native.js.map +0 -1
  342. package/lib/module/getReactNativeVersion.native.js +0 -10
  343. package/lib/module/getReactNativeVersion.native.js.map +0 -1
  344. package/lib/module/getShadowNodeFromRef.native.js +0 -37
  345. package/lib/module/getShadowNodeFromRef.native.js.map +0 -1
  346. package/lib/module/handlers/PressabilityDebugView.native.js +0 -3
  347. package/lib/module/handlers/PressabilityDebugView.native.js.map +0 -1
  348. package/lib/module/handlers/customDirectEventTypes.native.js +0 -3
  349. package/lib/module/handlers/customDirectEventTypes.native.js.map +0 -1
  350. package/lib/module/handlers/gestures/GestureDetector.js +0 -654
  351. package/lib/module/handlers/gestures/GestureDetector.js.map +0 -1
  352. package/lib/typescript/RNGestureHandlerModule.native.d.ts +0 -2
  353. package/lib/typescript/RNRenderer.native.d.ts +0 -1
  354. package/lib/typescript/components/GestureComponents.native.d.ts +0 -22
  355. package/lib/typescript/components/GestureHandlerButton.native.d.ts +0 -4
  356. package/lib/typescript/getReactNativeVersion.native.d.ts +0 -4
  357. package/lib/typescript/getShadowNodeFromRef.native.d.ts +0 -1
  358. package/lib/typescript/handlers/PressabilityDebugView.native.d.ts +0 -1
  359. package/lib/typescript/handlers/customDirectEventTypes.native.d.ts +0 -1
  360. package/src/RNGestureHandlerModule.native.ts +0 -5
  361. package/src/RNRenderer.native.ts +0 -3
  362. package/src/components/GestureComponents.native.tsx +0 -148
  363. package/src/components/GestureHandlerButton.native.tsx +0 -5
  364. package/src/getReactNativeVersion.native.ts +0 -11
  365. package/src/getShadowNodeFromRef.native.ts +0 -44
  366. package/src/handlers/PressabilityDebugView.native.tsx +0 -2
  367. package/src/handlers/customDirectEventTypes.native.ts +0 -2
  368. package/src/handlers/gestures/GestureDetector.tsx +0 -894
  369. /package/lib/typescript/components/{GestureHandlerRootView.native.d.ts → GestureHandlerRootView.web.d.ts} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["GestureDetector.tsx"],"names":["React","useContext","useEffect","useRef","useState","BaseGesture","CALLBACK_TYPE","Reanimated","registerHandler","unregisterHandler","RNGestureHandlerModule","baseGestureHandlerWithMonitorProps","filterConfig","findNodeHandle","scheduleFlushOperations","GestureStateManager","flingGestureHandlerProps","forceTouchGestureHandlerProps","longPressGestureHandlerProps","panGestureHandlerProps","panGestureHandlerCustomNativeProps","tapGestureHandlerProps","hoverGestureHandlerProps","State","TouchEventType","ActionType","isFabric","isJestEnv","tagMessage","getReactNativeVersion","getShadowNodeFromRef","Platform","onGestureHandlerEvent","RNRenderer","isNewWebImplementationEnabled","nativeViewGestureHandlerProps","GestureHandlerRootViewContext","ghQueueMicrotask","ALLOWED_PROPS","convertToHandlerTag","ref","handlerTag","current","extractValidHandlerTags","interactionGroup","map","filter","tag","dropHandlers","preparedGesture","handler","config","dropGestureHandler","testId","checkGestureCallbacksForWorklets","gesture","runOnJS","areSomeNotWorklets","handlers","isWorklet","includes","areSomeWorklets","console","error","attachHandlers","gestureConfig","viewTag","webEventHandlersRef","mountedRef","firstExecution","initialize","prepare","createGestureHandler","handlerName","requireToFail","simultaneousWith","blocksHandlers","updateGestureHandler","simultaneousHandlers","waitFor","actionType","shouldUseReanimated","REANIMATED_WORKLET","JS_FUNCTION_NEW_API","OS","attachGestureHandler","JS_FUNCTION_OLD_API","animatedHandlers","isAnimatedGesture","g","value","updateHandlers","i","length","previousHandlersValue","newHandlersValue","shouldUpdateSharedValue","gestureId","needsToReattach","isStateChangeEvent","event","oldState","isTouchEvent","eventType","getHandler","type","BEGAN","onBegin","START","onStart","UPDATE","onUpdate","CHANGE","onChange","END","onEnd","FINALIZE","onFinalize","TOUCHES_DOWN","onTouchesDown","TOUCHES_MOVE","onTouchesMove","TOUCHES_UP","onTouchesUp","TOUCHES_CANCELLED","onTouchesCancelled","touchEventTypeToCallbackType","UNDEFINED","runWorklet","args","warn","useAnimatedGesture","needsRebuild","sharedHandlersCallbacks","useSharedValue","lastUpdateEvent","stateControllers","callback","currentCallback","UNDETERMINED","state","ACTIVE","undefined","FAILED","CANCELLED","create","changeEventCalculator","useEvent","animatedEventHandler","validateDetectorChildren","__DEV__","REACT_NATIVE_VERSION","wrapType","minor","major","_reactInternals","elementType","_reactInternalFiber","instance","findHostInstance_DEPRECATED","_internalFiberInstanceHandleDEV","sibling","Error","return","applyUserSelectProp","userSelect","toGestureArray","applyEnableContextMenuProp","enableContextMenu","applyTouchActionProp","touchAction","GestureDetector","props","rootViewContext","useReanimatedHook","some","firstRender","viewRef","previousViewTag","forceReattach","e","nativeEvent","onGestureHandlerStateChange","renderState","setRenderState","forceRender","onHandlersUpdate","skipConfigUpdate","needsToRebuildReanimatedEvent","refFunction","global","isFormsStackingContext","node","children","Wrap","Component","render","child","Children","only","cloneElement","collapsable","AnimatedWrap","default","createAnimatedComponent"],"mappings":"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","sourcesContent":["import React, { useContext, useEffect, useRef, useState } from 'react';\nimport {\n GestureType,\n HandlerCallbacks,\n BaseGesture,\n GestureRef,\n CALLBACK_TYPE,\n} from './gesture';\nimport { Reanimated, SharedValue } from './reanimatedWrapper';\nimport { registerHandler, unregisterHandler } from '../handlersRegistry';\nimport RNGestureHandlerModule from '../../RNGestureHandlerModule';\nimport {\n baseGestureHandlerWithMonitorProps,\n filterConfig,\n findNodeHandle,\n GestureTouchEvent,\n GestureUpdateEvent,\n GestureStateChangeEvent,\n HandlerStateChangeEvent,\n scheduleFlushOperations,\n UserSelect,\n TouchAction,\n} from '../gestureHandlerCommon';\nimport {\n GestureStateManager,\n GestureStateManagerType,\n} from './gestureStateManager';\nimport { flingGestureHandlerProps } from '../FlingGestureHandler';\nimport { forceTouchGestureHandlerProps } from '../ForceTouchGestureHandler';\nimport { longPressGestureHandlerProps } from '../LongPressGestureHandler';\nimport {\n panGestureHandlerProps,\n panGestureHandlerCustomNativeProps,\n} from '../PanGestureHandler';\nimport { tapGestureHandlerProps } from '../TapGestureHandler';\nimport { hoverGestureHandlerProps } from './hoverGesture';\nimport { State } from '../../State';\nimport { TouchEventType } from '../../TouchEventType';\nimport { ComposedGesture } from './gestureComposition';\nimport { ActionType } from '../../ActionType';\nimport { isFabric, isJestEnv, tagMessage } from '../../utils';\nimport { getReactNativeVersion } from '../../getReactNativeVersion';\nimport { getShadowNodeFromRef } from '../../getShadowNodeFromRef';\nimport { Platform } from 'react-native';\nimport { onGestureHandlerEvent } from './eventReceiver';\nimport { RNRenderer } from '../../RNRenderer';\nimport { isNewWebImplementationEnabled } from '../../EnableNewWebImplementation';\nimport { nativeViewGestureHandlerProps } from '../NativeViewGestureHandler';\nimport GestureHandlerRootViewContext from '../../GestureHandlerRootViewContext';\nimport { ghQueueMicrotask } from '../../ghQueueMicrotask';\n\ntype AttachGestureHandlerWeb = (\n handlerTag: number,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n newView: any,\n _actionType: ActionType,\n propsRef: React.RefObject<unknown>\n) => void;\n\ndeclare const global: {\n isFormsStackingContext: (node: unknown) => boolean | null; // JSI function\n};\n\nconst ALLOWED_PROPS = [\n ...baseGestureHandlerWithMonitorProps,\n ...tapGestureHandlerProps,\n ...panGestureHandlerProps,\n ...panGestureHandlerCustomNativeProps,\n ...longPressGestureHandlerProps,\n ...forceTouchGestureHandlerProps,\n ...flingGestureHandlerProps,\n ...hoverGestureHandlerProps,\n ...nativeViewGestureHandlerProps,\n];\n\nexport type GestureConfigReference = {\n config: GestureType[];\n animatedEventHandler: unknown;\n animatedHandlers: SharedValue<\n HandlerCallbacks<Record<string, unknown>>[] | null\n > | null;\n firstExecution: boolean;\n useReanimatedHook: boolean;\n};\n\nfunction convertToHandlerTag(ref: GestureRef): number {\n if (typeof ref === 'number') {\n return ref;\n } else if (ref instanceof BaseGesture) {\n return ref.handlerTag;\n } else {\n // @ts-ignore in this case it should be a ref either to gesture object or\n // a gesture handler component, in both cases handlerTag property exists\n return ref.current?.handlerTag ?? -1;\n }\n}\n\nfunction extractValidHandlerTags(interactionGroup: GestureRef[] | undefined) {\n return (\n interactionGroup?.map(convertToHandlerTag)?.filter((tag) => tag > 0) ?? []\n );\n}\n\nfunction dropHandlers(preparedGesture: GestureConfigReference) {\n for (const handler of preparedGesture.config) {\n RNGestureHandlerModule.dropGestureHandler(handler.handlerTag);\n\n unregisterHandler(handler.handlerTag, handler.config.testId);\n }\n\n scheduleFlushOperations();\n}\n\nfunction checkGestureCallbacksForWorklets(gesture: GestureType) {\n // if a gesture is explicitly marked to run on the JS thread there is no need to check\n // if callbacks are worklets as the user is aware they will be ran on the JS thread\n if (gesture.config.runOnJS) {\n return;\n }\n\n const areSomeNotWorklets = gesture.handlers.isWorklet.includes(false);\n const areSomeWorklets = gesture.handlers.isWorklet.includes(true);\n\n // if some of the callbacks are worklets and some are not, and the gesture is not\n // explicitly marked with `.runOnJS(true)` show an error\n if (areSomeNotWorklets && areSomeWorklets) {\n console.error(\n tagMessage(\n `Some of the callbacks in the gesture are worklets and some are not. Either make sure that all calbacks are marked as 'worklet' if you wish to run them on the UI thread or use '.runOnJS(true)' modifier on the gesture explicitly to run all callbacks on the JS thread.`\n )\n );\n }\n}\n\ninterface WebEventHandler {\n onGestureHandlerEvent: (event: HandlerStateChangeEvent<unknown>) => void;\n onGestureHandlerStateChange?: (\n event: HandlerStateChangeEvent<unknown>\n ) => void;\n}\n\ninterface AttachHandlersConfig {\n preparedGesture: GestureConfigReference;\n gestureConfig: ComposedGesture | GestureType;\n gesture: GestureType[];\n viewTag: number;\n webEventHandlersRef: React.RefObject<WebEventHandler>;\n mountedRef: React.RefObject<boolean>;\n}\n\nfunction attachHandlers({\n preparedGesture,\n gestureConfig,\n gesture,\n viewTag,\n webEventHandlersRef,\n mountedRef,\n}: AttachHandlersConfig) {\n if (!preparedGesture.firstExecution) {\n gestureConfig.initialize();\n } else {\n preparedGesture.firstExecution = false;\n }\n\n // use queueMicrotask to extract handlerTags, because all refs should be initialized\n // when it's ran\n ghQueueMicrotask(() => {\n if (!mountedRef.current) {\n return;\n }\n gestureConfig.prepare();\n });\n\n for (const handler of gesture) {\n checkGestureCallbacksForWorklets(handler);\n RNGestureHandlerModule.createGestureHandler(\n handler.handlerName,\n handler.handlerTag,\n filterConfig(handler.config, ALLOWED_PROPS)\n );\n\n registerHandler(handler.handlerTag, handler, handler.config.testId);\n }\n\n // use queueMicrotask to extract handlerTags, because all refs should be initialized\n // when it's ran\n ghQueueMicrotask(() => {\n if (!mountedRef.current) {\n return;\n }\n for (const handler of gesture) {\n let requireToFail: number[] = [];\n if (handler.config.requireToFail) {\n requireToFail = extractValidHandlerTags(handler.config.requireToFail);\n }\n\n let simultaneousWith: number[] = [];\n if (handler.config.simultaneousWith) {\n simultaneousWith = extractValidHandlerTags(\n handler.config.simultaneousWith\n );\n }\n\n let blocksHandlers: number[] = [];\n if (handler.config.blocksHandlers) {\n blocksHandlers = extractValidHandlerTags(handler.config.blocksHandlers);\n }\n\n RNGestureHandlerModule.updateGestureHandler(\n handler.handlerTag,\n filterConfig(handler.config, ALLOWED_PROPS, {\n simultaneousHandlers: simultaneousWith,\n waitFor: requireToFail,\n blocksHandlers: blocksHandlers,\n })\n );\n }\n\n scheduleFlushOperations();\n });\n\n preparedGesture.config = gesture;\n\n for (const gesture of preparedGesture.config) {\n const actionType = gesture.shouldUseReanimated\n ? ActionType.REANIMATED_WORKLET\n : ActionType.JS_FUNCTION_NEW_API;\n\n if (Platform.OS === 'web') {\n (RNGestureHandlerModule.attachGestureHandler as AttachGestureHandlerWeb)(\n gesture.handlerTag,\n viewTag,\n ActionType.JS_FUNCTION_OLD_API, // ignored on web\n webEventHandlersRef\n );\n } else {\n RNGestureHandlerModule.attachGestureHandler(\n gesture.handlerTag,\n viewTag,\n actionType\n );\n }\n }\n\n if (preparedGesture.animatedHandlers) {\n const isAnimatedGesture = (g: GestureType) => g.shouldUseReanimated;\n\n preparedGesture.animatedHandlers.value = gesture\n .filter(isAnimatedGesture)\n .map((g) => g.handlers) as unknown as HandlerCallbacks<\n Record<string, unknown>\n >[];\n }\n}\n\nfunction updateHandlers(\n preparedGesture: GestureConfigReference,\n gestureConfig: ComposedGesture | GestureType,\n gesture: GestureType[],\n mountedRef: React.RefObject<boolean>\n) {\n gestureConfig.prepare();\n\n for (let i = 0; i < gesture.length; i++) {\n const handler = preparedGesture.config[i];\n checkGestureCallbacksForWorklets(handler);\n\n // only update handlerTag when it's actually different, it may be the same\n // if gesture config object is wrapped with useMemo\n if (gesture[i].handlerTag !== handler.handlerTag) {\n gesture[i].handlerTag = handler.handlerTag;\n gesture[i].handlers.handlerTag = handler.handlerTag;\n }\n }\n\n // use queueMicrotask to extract handlerTags, because when it's ran, all refs should be updated\n // and handlerTags in BaseGesture references should be updated in the loop above (we need to wait\n // in case of external relations)\n ghQueueMicrotask(() => {\n if (!mountedRef.current) {\n return;\n }\n for (let i = 0; i < gesture.length; i++) {\n const handler = preparedGesture.config[i];\n\n handler.config = gesture[i].config;\n handler.handlers = gesture[i].handlers;\n\n const requireToFail = extractValidHandlerTags(\n handler.config.requireToFail\n );\n\n const simultaneousWith = extractValidHandlerTags(\n handler.config.simultaneousWith\n );\n\n RNGestureHandlerModule.updateGestureHandler(\n handler.handlerTag,\n filterConfig(handler.config, ALLOWED_PROPS, {\n simultaneousHandlers: simultaneousWith,\n waitFor: requireToFail,\n })\n );\n\n registerHandler(handler.handlerTag, handler, handler.config.testId);\n }\n\n if (preparedGesture.animatedHandlers) {\n const previousHandlersValue =\n preparedGesture.animatedHandlers.value ?? [];\n const newHandlersValue = preparedGesture.config\n .filter((g) => g.shouldUseReanimated) // ignore gestures that shouldn't run on UI\n .map((g) => g.handlers) as unknown as HandlerCallbacks<\n Record<string, unknown>\n >[];\n\n // if amount of gesture configs changes, we need to update the callbacks in shared value\n let shouldUpdateSharedValue =\n previousHandlersValue.length !== newHandlersValue.length;\n\n if (!shouldUpdateSharedValue) {\n // if the amount is the same, we need to check if any of the configs inside has changed\n for (let i = 0; i < newHandlersValue.length; i++) {\n if (\n // we can use the `gestureId` prop as it's unique for every config instance\n newHandlersValue[i].gestureId !== previousHandlersValue[i].gestureId\n ) {\n shouldUpdateSharedValue = true;\n break;\n }\n }\n }\n\n if (shouldUpdateSharedValue) {\n preparedGesture.animatedHandlers.value = newHandlersValue;\n }\n }\n\n scheduleFlushOperations();\n });\n}\n\nfunction needsToReattach(\n preparedGesture: GestureConfigReference,\n gesture: GestureType[]\n) {\n if (gesture.length !== preparedGesture.config.length) {\n return true;\n }\n for (let i = 0; i < gesture.length; i++) {\n if (\n gesture[i].handlerName !== preparedGesture.config[i].handlerName ||\n gesture[i].shouldUseReanimated !==\n preparedGesture.config[i].shouldUseReanimated\n ) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction isStateChangeEvent(\n event: GestureUpdateEvent | GestureStateChangeEvent | GestureTouchEvent\n): event is GestureStateChangeEvent {\n 'worklet';\n // @ts-ignore Yes, the oldState prop is missing on GestureTouchEvent, that's the point\n return event.oldState != null;\n}\n\nfunction isTouchEvent(\n event: GestureUpdateEvent | GestureStateChangeEvent | GestureTouchEvent\n): event is GestureTouchEvent {\n 'worklet';\n return event.eventType != null;\n}\n\nfunction getHandler(\n type: CALLBACK_TYPE,\n gesture: HandlerCallbacks<Record<string, unknown>>\n) {\n 'worklet';\n switch (type) {\n case CALLBACK_TYPE.BEGAN:\n return gesture.onBegin;\n case CALLBACK_TYPE.START:\n return gesture.onStart;\n case CALLBACK_TYPE.UPDATE:\n return gesture.onUpdate;\n case CALLBACK_TYPE.CHANGE:\n return gesture.onChange;\n case CALLBACK_TYPE.END:\n return gesture.onEnd;\n case CALLBACK_TYPE.FINALIZE:\n return gesture.onFinalize;\n case CALLBACK_TYPE.TOUCHES_DOWN:\n return gesture.onTouchesDown;\n case CALLBACK_TYPE.TOUCHES_MOVE:\n return gesture.onTouchesMove;\n case CALLBACK_TYPE.TOUCHES_UP:\n return gesture.onTouchesUp;\n case CALLBACK_TYPE.TOUCHES_CANCELLED:\n return gesture.onTouchesCancelled;\n }\n}\n\nfunction touchEventTypeToCallbackType(\n eventType: TouchEventType\n): CALLBACK_TYPE {\n 'worklet';\n switch (eventType) {\n case TouchEventType.TOUCHES_DOWN:\n return CALLBACK_TYPE.TOUCHES_DOWN;\n case TouchEventType.TOUCHES_MOVE:\n return CALLBACK_TYPE.TOUCHES_MOVE;\n case TouchEventType.TOUCHES_UP:\n return CALLBACK_TYPE.TOUCHES_UP;\n case TouchEventType.TOUCHES_CANCELLED:\n return CALLBACK_TYPE.TOUCHES_CANCELLED;\n }\n return CALLBACK_TYPE.UNDEFINED;\n}\n\nfunction runWorklet(\n type: CALLBACK_TYPE,\n gesture: HandlerCallbacks<Record<string, unknown>>,\n event: GestureStateChangeEvent | GestureUpdateEvent | GestureTouchEvent,\n ...args: any[]\n) {\n 'worklet';\n const handler = getHandler(type, gesture);\n if (gesture.isWorklet[type]) {\n // @ts-ignore Logic below makes sure the correct event is send to the\n // correct handler.\n handler?.(event, ...args);\n } else if (handler) {\n console.warn(tagMessage('Animated gesture callback must be a worklet'));\n }\n}\n\nfunction useAnimatedGesture(\n preparedGesture: GestureConfigReference,\n needsRebuild: boolean\n) {\n if (!Reanimated) {\n return;\n }\n\n // Hooks are called conditionally, but the condition is whether the\n // react-native-reanimated is installed, which shouldn't change while running\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const sharedHandlersCallbacks = Reanimated.useSharedValue<\n HandlerCallbacks<Record<string, unknown>>[] | null\n >(null);\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const lastUpdateEvent = Reanimated.useSharedValue<\n (GestureUpdateEvent | undefined)[]\n >([]);\n\n // not every gesture needs a state controller, init them lazily\n const stateControllers: GestureStateManagerType[] = [];\n\n const callback = (\n event: GestureStateChangeEvent | GestureUpdateEvent | GestureTouchEvent\n ) => {\n 'worklet';\n\n const currentCallback = sharedHandlersCallbacks.value;\n if (!currentCallback) {\n return;\n }\n\n for (let i = 0; i < currentCallback.length; i++) {\n const gesture = currentCallback[i];\n\n if (event.handlerTag === gesture.handlerTag) {\n if (isStateChangeEvent(event)) {\n if (\n event.oldState === State.UNDETERMINED &&\n event.state === State.BEGAN\n ) {\n runWorklet(CALLBACK_TYPE.BEGAN, gesture, event);\n } else if (\n (event.oldState === State.BEGAN ||\n event.oldState === State.UNDETERMINED) &&\n event.state === State.ACTIVE\n ) {\n runWorklet(CALLBACK_TYPE.START, gesture, event);\n lastUpdateEvent.value[gesture.handlerTag] = undefined;\n } else if (\n event.oldState !== event.state &&\n event.state === State.END\n ) {\n if (event.oldState === State.ACTIVE) {\n runWorklet(CALLBACK_TYPE.END, gesture, event, true);\n }\n runWorklet(CALLBACK_TYPE.FINALIZE, gesture, event, true);\n } else if (\n (event.state === State.FAILED || event.state === State.CANCELLED) &&\n event.state !== event.oldState\n ) {\n if (event.oldState === State.ACTIVE) {\n runWorklet(CALLBACK_TYPE.END, gesture, event, false);\n }\n runWorklet(CALLBACK_TYPE.FINALIZE, gesture, event, false);\n }\n } else if (isTouchEvent(event)) {\n if (!stateControllers[i]) {\n stateControllers[i] = GestureStateManager.create(event.handlerTag);\n }\n\n if (event.eventType !== TouchEventType.UNDETERMINED) {\n runWorklet(\n touchEventTypeToCallbackType(event.eventType),\n gesture,\n event,\n stateControllers[i]\n );\n }\n } else {\n runWorklet(CALLBACK_TYPE.UPDATE, gesture, event);\n\n if (gesture.onChange && gesture.changeEventCalculator) {\n runWorklet(\n CALLBACK_TYPE.CHANGE,\n gesture,\n gesture.changeEventCalculator?.(\n event,\n lastUpdateEvent.value[gesture.handlerTag]\n )\n );\n\n lastUpdateEvent.value[gesture.handlerTag] = event;\n }\n }\n }\n }\n };\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const event = Reanimated.useEvent(\n callback,\n ['onGestureHandlerStateChange', 'onGestureHandlerEvent'],\n needsRebuild\n );\n\n preparedGesture.animatedEventHandler = event;\n preparedGesture.animatedHandlers = sharedHandlersCallbacks;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction validateDetectorChildren(ref: any) {\n // finds the first native view under the Wrap component and traverses the fiber tree upwards\n // to check whether there is more than one native view as a pseudo-direct child of GestureDetector\n // i.e. this is not ok:\n // Wrap\n // |\n // / \\\n // / \\\n // / \\\n // / \\\n // NativeView NativeView\n //\n // but this is fine:\n // Wrap\n // |\n // NativeView\n // |\n // / \\\n // / \\\n // / \\\n // / \\\n // NativeView NativeView\n if (__DEV__ && Platform.OS !== 'web') {\n const REACT_NATIVE_VERSION = getReactNativeVersion();\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const wrapType =\n REACT_NATIVE_VERSION.minor > 63 || REACT_NATIVE_VERSION.major > 0\n ? // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n ref._reactInternals.elementType\n : // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n ref._reactInternalFiber.elementType;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n let instance =\n RNRenderer.findHostInstance_DEPRECATED(\n ref\n )._internalFiberInstanceHandleDEV;\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n while (instance && instance.elementType !== wrapType) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (instance.sibling) {\n throw new Error(\n 'GestureDetector has more than one native view as its children. This can happen if you are using a custom component that renders multiple views, like React.Fragment. You should wrap content of GestureDetector with a <View> or <Animated.View>.'\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n instance = instance.return;\n }\n }\n}\n\nconst applyUserSelectProp = (\n userSelect: UserSelect,\n gesture: ComposedGesture | GestureType\n): void => {\n for (const g of gesture.toGestureArray()) {\n g.config.userSelect = userSelect;\n }\n};\n\nconst applyEnableContextMenuProp = (\n enableContextMenu: boolean,\n gesture: ComposedGesture | GestureType\n): void => {\n for (const g of gesture.toGestureArray()) {\n g.config.enableContextMenu = enableContextMenu;\n }\n};\n\nconst applyTouchActionProp = (\n touchAction: TouchAction,\n gesture: ComposedGesture | GestureType\n): void => {\n for (const g of gesture.toGestureArray()) {\n g.config.touchAction = touchAction;\n }\n};\n\ninterface GestureDetectorProps {\n /**\n * A gesture object containing the configuration and callbacks.\n * Can be any of:\n * - base gestures (`Tap`, `Pan`, ...)\n * - `ComposedGesture` (`Race`, `Simultaneous`, `Exclusive`)\n */\n gesture: ComposedGesture | GestureType;\n children?: React.ReactNode;\n\n /**\n * #### Web only\n * This parameter allows to specify which `userSelect` property should be applied to underlying view.\n * Possible values are `\"none\" | \"auto\" | \"text\"`. Default value is set to `\"none\"`.\n */\n userSelect?: UserSelect;\n /**\n * #### Web only\n * Specifies whether context menu should be enabled after clicking on underlying view with right mouse button.\n * Default value is set to `false`.\n */\n enableContextMenu?: boolean;\n /**\n * #### Web only\n * This parameter allows to specify which `touchAction` property should be applied to underlying view.\n * Supports all CSS touch-action values (e.g. `\"none\"`, `\"pan-y\"`). Default value is set to `\"none\"`.\n */\n touchAction?: TouchAction;\n}\ninterface GestureDetectorState {\n firstRender: boolean;\n viewRef: React.Component | null;\n previousViewTag: number;\n forceReattach: boolean;\n}\n\n/**\n * `GestureDetector` is responsible for creating and updating native gesture handlers based on the config of provided gesture.\n *\n * ### Props\n * - `gesture`\n * - `userSelect` (**Web only**)\n * - `enableContextMenu` (**Web only**)\n * - `touchAction` (**Web only**)\n *\n * ### Remarks\n * - Gesture Detector will use first native view in its subtree to recognize gestures, however if this view is used only to group its children it may get automatically collapsed.\n * - Using the same instance of a gesture across multiple Gesture Detectors is not possible.\n *\n * @see https://docs.swmansion.com/react-native-gesture-handler/docs/gestures/gesture-detector\n */\nexport const GestureDetector = (props: GestureDetectorProps) => {\n const rootViewContext = useContext(GestureHandlerRootViewContext);\n if (__DEV__ && !rootViewContext && !isJestEnv() && Platform.OS !== 'web') {\n throw new Error(\n 'GestureDetector must be used as a descendant of GestureHandlerRootView. Otherwise the gestures will not be recognized. See https://docs.swmansion.com/react-native-gesture-handler/docs/installation for more details.'\n );\n }\n\n const gestureConfig = props.gesture;\n\n if (props.userSelect) {\n applyUserSelectProp(props.userSelect, gestureConfig);\n }\n\n if (props.enableContextMenu !== undefined) {\n applyEnableContextMenuProp(props.enableContextMenu, gestureConfig);\n }\n\n if (props.touchAction !== undefined) {\n applyTouchActionProp(props.touchAction, gestureConfig);\n }\n\n const gesture = gestureConfig.toGestureArray();\n const useReanimatedHook = gesture.some((g) => g.shouldUseReanimated);\n\n // store state in ref to prevent unnecessary renders\n const state = useRef<GestureDetectorState>({\n firstRender: true,\n viewRef: null,\n previousViewTag: -1,\n forceReattach: false,\n }).current;\n const mountedRef = useRef(false);\n const webEventHandlersRef = useRef<WebEventHandler>({\n onGestureHandlerEvent: (e: HandlerStateChangeEvent<unknown>) => {\n onGestureHandlerEvent(e.nativeEvent);\n },\n onGestureHandlerStateChange: isNewWebImplementationEnabled()\n ? (e: HandlerStateChangeEvent<unknown>) => {\n onGestureHandlerEvent(e.nativeEvent);\n }\n : undefined,\n });\n\n const [renderState, setRenderState] = useState(false);\n function forceRender() {\n setRenderState(!renderState);\n }\n\n const preparedGesture = React.useRef<GestureConfigReference>({\n config: gesture,\n animatedEventHandler: null,\n animatedHandlers: null,\n firstExecution: true,\n useReanimatedHook: useReanimatedHook,\n }).current;\n\n if (useReanimatedHook !== preparedGesture.useReanimatedHook) {\n throw new Error(\n tagMessage(\n 'You cannot change the thread the callbacks are ran on while the app is running'\n )\n );\n }\n\n function onHandlersUpdate(skipConfigUpdate?: boolean) {\n // if the underlying view has changed we need to reattach handlers to the new view\n const viewTag = findNodeHandle(state.viewRef) as number;\n const forceReattach = viewTag !== state.previousViewTag;\n\n if (forceReattach || needsToReattach(preparedGesture, gesture)) {\n validateDetectorChildren(state.viewRef);\n dropHandlers(preparedGesture);\n attachHandlers({\n preparedGesture,\n gestureConfig,\n gesture,\n webEventHandlersRef,\n viewTag,\n mountedRef,\n });\n\n state.previousViewTag = viewTag;\n state.forceReattach = forceReattach;\n if (forceReattach) {\n forceRender();\n }\n } else if (!skipConfigUpdate) {\n updateHandlers(preparedGesture, gestureConfig, gesture, mountedRef);\n }\n }\n\n // Reanimated event should be rebuilt only when gestures are reattached, otherwise\n // config update will be enough as all necessary items are stored in shared values anyway\n const needsToRebuildReanimatedEvent =\n preparedGesture.firstExecution ||\n needsToReattach(preparedGesture, gesture) ||\n state.forceReattach;\n\n state.forceReattach = false;\n\n if (preparedGesture.firstExecution) {\n gestureConfig.initialize();\n }\n\n if (useReanimatedHook) {\n // Whether animatedGesture or gesture is used shouldn't change while the app is running\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useAnimatedGesture(preparedGesture, needsToRebuildReanimatedEvent);\n }\n\n useEffect(() => {\n const viewTag = findNodeHandle(state.viewRef) as number;\n state.firstRender = true;\n mountedRef.current = true;\n\n validateDetectorChildren(state.viewRef);\n\n attachHandlers({\n preparedGesture,\n gestureConfig,\n gesture,\n webEventHandlersRef,\n viewTag,\n mountedRef,\n });\n\n return () => {\n mountedRef.current = false;\n dropHandlers(preparedGesture);\n };\n }, []);\n\n useEffect(() => {\n if (!state.firstRender) {\n onHandlersUpdate();\n } else {\n state.firstRender = false;\n }\n }, [props]);\n\n const refFunction = (ref: unknown) => {\n if (ref !== null) {\n // @ts-ignore Just setting the view ref\n state.viewRef = ref;\n\n // if it's the first render, also set the previousViewTag to prevent reattaching gestures when not needed\n if (state.previousViewTag === -1) {\n state.previousViewTag = findNodeHandle(state.viewRef) as number;\n }\n\n // pass true as `skipConfigUpdate`, here we only want to trigger the eventual reattaching of handlers\n // in case the view has changed, while config update would be handled be the `useEffect` above\n onHandlersUpdate(true);\n\n if (isFabric() && global.isFormsStackingContext) {\n const node = getShadowNodeFromRef(ref);\n if (global.isFormsStackingContext(node) === false) {\n console.error(\n tagMessage(\n 'GestureDetector has received a child that may get view-flattened. ' +\n '\\nTo prevent it from misbehaving you need to wrap the child with a `<View collapsable={false}>`.'\n )\n );\n }\n }\n }\n };\n\n if (useReanimatedHook) {\n return (\n <AnimatedWrap\n ref={refFunction}\n onGestureHandlerEvent={preparedGesture.animatedEventHandler}>\n {props.children}\n </AnimatedWrap>\n );\n } else {\n return <Wrap ref={refFunction}>{props.children}</Wrap>;\n }\n};\n\nclass Wrap extends React.Component<{\n onGestureHandlerEvent?: unknown;\n // implicit `children` prop has been removed in @types/react^18.0.0\n children?: React.ReactNode;\n}> {\n render() {\n try {\n // I don't think that fighting with types over such a simple function is worth it\n // The only thing it does is add 'collapsable: false' to the child component\n // to make sure it is in the native view hierarchy so the detector can find\n // correct viewTag to attach to.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const child: any = React.Children.only(this.props.children);\n return React.cloneElement(\n child,\n { collapsable: false },\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n child.props.children\n );\n } catch (e) {\n throw new Error(\n tagMessage(\n `GestureDetector got more than one view as a child. If you want the gesture to work on multiple views, wrap them with a common parent and attach the gesture to that view.`\n )\n );\n }\n }\n}\n\nconst AnimatedWrap = Reanimated?.default?.createAnimatedComponent(Wrap) ?? Wrap;\n"]}
@@ -1,2 +0,0 @@
1
- import Module from './specs/NativeRNGestureHandlerModule';
2
- export default Module;
@@ -1 +0,0 @@
1
- export { default as RNRenderer } from 'react-native/Libraries/Renderer/shims/ReactNative';
@@ -1,22 +0,0 @@
1
- import * as React from 'react';
2
- import { PropsWithChildren, ForwardedRef, RefAttributes, ReactElement } from 'react';
3
- import { ScrollView as RNScrollView, ScrollViewProps as RNScrollViewProps, Switch as RNSwitch, SwitchProps as RNSwitchProps, TextInput as RNTextInput, TextInputProps as RNTextInputProps, DrawerLayoutAndroid as RNDrawerLayoutAndroid, DrawerLayoutAndroidProps as RNDrawerLayoutAndroidProps, FlatList as RNFlatList, FlatListProps as RNFlatListProps, RefreshControl as RNRefreshControl } from 'react-native';
4
- import { NativeViewGestureHandlerProps } from '../handlers/NativeViewGestureHandler';
5
- export declare const RefreshControl: React.ForwardRefExoticComponent<import("react-native").RefreshControlProps & NativeViewGestureHandlerProps & React.RefAttributes<React.ComponentType<any>>>;
6
- export type RefreshControl = typeof RefreshControl & RNRefreshControl;
7
- declare const GHScrollView: React.ForwardRefExoticComponent<RNScrollViewProps & {
8
- children?: React.ReactNode;
9
- } & NativeViewGestureHandlerProps & React.RefAttributes<React.ComponentType<any>>>;
10
- export declare const ScrollView: React.ForwardRefExoticComponent<RNScrollViewProps & NativeViewGestureHandlerProps & React.RefAttributes<RNScrollView>>;
11
- export type ScrollView = typeof GHScrollView & RNScrollView;
12
- export declare const Switch: React.ForwardRefExoticComponent<RNSwitchProps & NativeViewGestureHandlerProps & React.RefAttributes<React.ComponentType<any>>>;
13
- export type Switch = typeof Switch & RNSwitch;
14
- export declare const TextInput: React.ForwardRefExoticComponent<RNTextInputProps & NativeViewGestureHandlerProps & React.RefAttributes<React.ComponentType<any>>>;
15
- export type TextInput = typeof TextInput & RNTextInput;
16
- export declare const DrawerLayoutAndroid: React.ForwardRefExoticComponent<RNDrawerLayoutAndroidProps & {
17
- children?: React.ReactNode;
18
- } & NativeViewGestureHandlerProps & React.RefAttributes<React.ComponentType<any>>>;
19
- export type DrawerLayoutAndroid = typeof DrawerLayoutAndroid & RNDrawerLayoutAndroid;
20
- export declare const FlatList: <ItemT = any>(props: React.PropsWithChildren<RNFlatListProps<ItemT> & React.RefAttributes<FlatList<ItemT>> & NativeViewGestureHandlerProps>, ref: React.ForwardedRef<FlatList<ItemT>>) => ReactElement | null;
21
- export type FlatList<ItemT = any> = typeof FlatList & RNFlatList<ItemT>;
22
- export {};
@@ -1,4 +0,0 @@
1
- import { HostComponent } from 'react-native';
2
- import { RawButtonProps } from './GestureButtons';
3
- declare const _default: HostComponent<RawButtonProps>;
4
- export default _default;
@@ -1,4 +0,0 @@
1
- export declare function getReactNativeVersion(): {
2
- major: number;
3
- minor: number;
4
- };
@@ -1 +0,0 @@
1
- export declare function getShadowNodeFromRef(ref: unknown): unknown;
@@ -1 +0,0 @@
1
- export { PressabilityDebugView } from 'react-native/Libraries/Pressability/PressabilityDebug';
@@ -1 +0,0 @@
1
- export { customDirectEventTypes } from 'react-native/Libraries/Renderer/shims/ReactNativeViewConfigRegistry';
@@ -1,5 +0,0 @@
1
- // Reexport the native module spec used by codegen. The relevant files are inluded on Android
2
- // to ensure the compatibility with the old arch, while iOS doesn't require those at all.
3
-
4
- import Module from './specs/NativeRNGestureHandlerModule';
5
- export default Module;
@@ -1,3 +0,0 @@
1
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
2
- // @ts-nocheck
3
- export { default as RNRenderer } from 'react-native/Libraries/Renderer/shims/ReactNative';
@@ -1,148 +0,0 @@
1
- import * as React from 'react';
2
- import {
3
- PropsWithChildren,
4
- ForwardedRef,
5
- RefAttributes,
6
- ReactElement,
7
- } from 'react';
8
- import {
9
- ScrollView as RNScrollView,
10
- ScrollViewProps as RNScrollViewProps,
11
- Switch as RNSwitch,
12
- SwitchProps as RNSwitchProps,
13
- TextInput as RNTextInput,
14
- TextInputProps as RNTextInputProps,
15
- DrawerLayoutAndroid as RNDrawerLayoutAndroid,
16
- DrawerLayoutAndroidProps as RNDrawerLayoutAndroidProps,
17
- FlatList as RNFlatList,
18
- FlatListProps as RNFlatListProps,
19
- RefreshControl as RNRefreshControl,
20
- } from 'react-native';
21
-
22
- import createNativeWrapper from '../handlers/createNativeWrapper';
23
-
24
- import {
25
- NativeViewGestureHandlerProps,
26
- nativeViewProps,
27
- } from '../handlers/NativeViewGestureHandler';
28
-
29
- import { toArray } from '../utils';
30
-
31
- export const RefreshControl = createNativeWrapper(RNRefreshControl, {
32
- disallowInterruption: true,
33
- shouldCancelWhenOutside: false,
34
- });
35
- // eslint-disable-next-line @typescript-eslint/no-redeclare
36
- export type RefreshControl = typeof RefreshControl & RNRefreshControl;
37
-
38
- const GHScrollView = createNativeWrapper<PropsWithChildren<RNScrollViewProps>>(
39
- RNScrollView,
40
- {
41
- disallowInterruption: true,
42
- shouldCancelWhenOutside: false,
43
- }
44
- );
45
- export const ScrollView = React.forwardRef<
46
- RNScrollView,
47
- RNScrollViewProps & NativeViewGestureHandlerProps
48
- >((props, ref) => {
49
- const refreshControlGestureRef = React.useRef<RefreshControl>(null);
50
- const { refreshControl, waitFor, ...rest } = props;
51
-
52
- return (
53
- <GHScrollView
54
- {...rest}
55
- // @ts-ignore `ref` exists on `GHScrollView`
56
- ref={ref}
57
- waitFor={[...toArray(waitFor ?? []), refreshControlGestureRef]}
58
- // @ts-ignore we don't pass `refreshing` prop as we only want to override the ref
59
- refreshControl={
60
- refreshControl
61
- ? React.cloneElement(refreshControl, {
62
- // @ts-ignore for reasons unknown to me, `ref` doesn't exist on the type inferred by TS
63
- ref: refreshControlGestureRef,
64
- })
65
- : undefined
66
- }
67
- />
68
- );
69
- });
70
- // backward type compatibility with https://github.com/software-mansion/react-native-gesture-handler/blob/db78d3ca7d48e8ba57482d3fe9b0a15aa79d9932/react-native-gesture-handler.d.ts#L440-L457
71
- // include methods of wrapped components by creating an intersection type with the RN component instead of duplicating them.
72
- // eslint-disable-next-line @typescript-eslint/no-redeclare
73
- export type ScrollView = typeof GHScrollView & RNScrollView;
74
-
75
- export const Switch = createNativeWrapper<RNSwitchProps>(RNSwitch, {
76
- shouldCancelWhenOutside: false,
77
- shouldActivateOnStart: true,
78
- disallowInterruption: true,
79
- });
80
- // eslint-disable-next-line @typescript-eslint/no-redeclare
81
- export type Switch = typeof Switch & RNSwitch;
82
-
83
- export const TextInput = createNativeWrapper<RNTextInputProps>(RNTextInput);
84
- // eslint-disable-next-line @typescript-eslint/no-redeclare
85
- export type TextInput = typeof TextInput & RNTextInput;
86
-
87
- export const DrawerLayoutAndroid = createNativeWrapper<
88
- PropsWithChildren<RNDrawerLayoutAndroidProps>
89
- >(RNDrawerLayoutAndroid, { disallowInterruption: true });
90
- // eslint-disable-next-line @typescript-eslint/no-redeclare
91
- export type DrawerLayoutAndroid = typeof DrawerLayoutAndroid &
92
- RNDrawerLayoutAndroid;
93
-
94
- export const FlatList = React.forwardRef((props, ref) => {
95
- const refreshControlGestureRef = React.useRef<RefreshControl>(null);
96
-
97
- const { waitFor, refreshControl, ...rest } = props;
98
-
99
- const flatListProps = {};
100
- const scrollViewProps = {};
101
- for (const [propName, value] of Object.entries(rest)) {
102
- // https://github.com/microsoft/TypeScript/issues/26255
103
- if ((nativeViewProps as readonly string[]).includes(propName)) {
104
- // @ts-ignore - this function cannot have generic type so we have to ignore this error
105
- // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
106
- scrollViewProps[propName] = value;
107
- } else {
108
- // @ts-ignore - this function cannot have generic type so we have to ignore this error
109
- // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
110
- flatListProps[propName] = value;
111
- }
112
- }
113
-
114
- return (
115
- // @ts-ignore - this function cannot have generic type so we have to ignore this error
116
- <RNFlatList
117
- ref={ref}
118
- {...flatListProps}
119
- renderScrollComponent={(scrollProps) => (
120
- <ScrollView
121
- {...{
122
- ...scrollProps,
123
- ...scrollViewProps,
124
- waitFor: [...toArray(waitFor ?? []), refreshControlGestureRef],
125
- }}
126
- />
127
- )}
128
- // @ts-ignore we don't pass `refreshing` prop as we only want to override the ref
129
- refreshControl={
130
- refreshControl
131
- ? React.cloneElement(refreshControl, {
132
- // @ts-ignore for reasons unknown to me, `ref` doesn't exist on the type inferred by TS
133
- ref: refreshControlGestureRef,
134
- })
135
- : undefined
136
- }
137
- />
138
- );
139
- }) as <ItemT = any>(
140
- props: PropsWithChildren<
141
- RNFlatListProps<ItemT> &
142
- RefAttributes<FlatList<ItemT>> &
143
- NativeViewGestureHandlerProps
144
- >,
145
- ref: ForwardedRef<FlatList<ItemT>>
146
- ) => ReactElement | null;
147
- // eslint-disable-next-line @typescript-eslint/no-redeclare
148
- export type FlatList<ItemT = any> = typeof FlatList & RNFlatList<ItemT>;
@@ -1,5 +0,0 @@
1
- import { HostComponent } from 'react-native';
2
- import { RawButtonProps } from './GestureButtons';
3
- import RNGestureHandlerButtonNativeComponent from '../specs/RNGestureHandlerButtonNativeComponent';
4
-
5
- export default RNGestureHandlerButtonNativeComponent as HostComponent<RawButtonProps>;
@@ -1,11 +0,0 @@
1
- import pack from 'react-native/package.json';
2
-
3
- const [majorStr, minorStr] = pack.version.split('.');
4
- const REACT_NATIVE_VERSION = {
5
- major: parseInt(majorStr, 10),
6
- minor: parseInt(minorStr, 10),
7
- };
8
-
9
- export function getReactNativeVersion() {
10
- return REACT_NATIVE_VERSION;
11
- }
@@ -1,44 +0,0 @@
1
- // Used by GestureDetector (unsupported on web at the moment) to check whether the
2
- // attached view may get flattened on Fabric. This implementation causes errors
3
- // on web due to the static resolution of `require` statements by webpack breaking
4
- // the conditional importing. Solved by making .web file.
5
- let findHostInstance_DEPRECATED: (ref: unknown) => void;
6
- let getInternalInstanceHandleFromPublicInstance: (ref: unknown) => {
7
- stateNode: { node: unknown };
8
- };
9
-
10
- export function getShadowNodeFromRef(ref: unknown) {
11
- // load findHostInstance_DEPRECATED lazily because it may not be available before render
12
- if (findHostInstance_DEPRECATED === undefined) {
13
- try {
14
- // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
15
- findHostInstance_DEPRECATED =
16
- // eslint-disable-next-line @typescript-eslint/no-var-requires, @typescript-eslint/no-unsafe-member-access
17
- require('react-native/Libraries/Renderer/shims/ReactFabric').findHostInstance_DEPRECATED;
18
- } catch (e) {
19
- findHostInstance_DEPRECATED = (_ref: unknown) => null;
20
- }
21
- }
22
-
23
- // load findHostInstance_DEPRECATED lazily because it may not be available before render
24
- if (getInternalInstanceHandleFromPublicInstance === undefined) {
25
- try {
26
- // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
27
- getInternalInstanceHandleFromPublicInstance =
28
- // eslint-disable-next-line @typescript-eslint/no-var-requires, @typescript-eslint/no-unsafe-member-access
29
- require('react-native/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance')
30
- .getInternalInstanceHandleFromPublicInstance ??
31
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-return
32
- ((ref: any) => ref._internalInstanceHandle);
33
- } catch (e) {
34
- getInternalInstanceHandleFromPublicInstance = (ref: any) =>
35
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-return
36
- ref._internalInstanceHandle;
37
- }
38
- }
39
-
40
- // @ts-ignore Fabric
41
- return getInternalInstanceHandleFromPublicInstance(
42
- findHostInstance_DEPRECATED(ref)
43
- ).stateNode.node;
44
- }
@@ -1,2 +0,0 @@
1
- // @ts-ignore it's not exported so we need to import it from path
2
- export { PressabilityDebugView } from 'react-native/Libraries/Pressability/PressabilityDebug';
@@ -1,2 +0,0 @@
1
- // @ts-ignore - its taken straight from RN
2
- export { customDirectEventTypes } from 'react-native/Libraries/Renderer/shims/ReactNativeViewConfigRegistry';