react-native-screens 3.28.0 → 3.30.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (448) hide show
  1. package/README.md +7 -7
  2. package/RNScreens.podspec +3 -3
  3. package/android/CMakeLists.txt +27 -0
  4. package/android/build.gradle +21 -2
  5. package/android/src/fabric/java/com/swmansion/rnscreens/FabricEnabledViewGroup.kt +17 -14
  6. package/android/src/main/cpp/jni-adapter.cpp +110 -0
  7. package/android/src/main/java/com/swmansion/rnscreens/CustomSearchView.kt +13 -8
  8. package/android/src/main/java/com/swmansion/rnscreens/FragmentBackPressOverrider.kt +8 -8
  9. package/android/src/main/java/com/swmansion/rnscreens/ModalScreenViewManager.kt +12 -0
  10. package/android/src/main/java/com/swmansion/rnscreens/RNScreensPackage.kt +38 -5
  11. package/android/src/main/java/com/swmansion/rnscreens/Screen.kt +32 -42
  12. package/android/src/main/java/com/swmansion/rnscreens/ScreenContainer.kt +76 -48
  13. package/android/src/main/java/com/swmansion/rnscreens/ScreenFragment.kt +38 -35
  14. package/android/src/main/java/com/swmansion/rnscreens/ScreenStack.kt +43 -37
  15. package/android/src/main/java/com/swmansion/rnscreens/ScreenStackFragment.kt +23 -23
  16. package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderConfig.kt +73 -71
  17. package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderConfigViewManager.kt +3 -3
  18. package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderSubview.kt +5 -5
  19. package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderSubviewManager.kt +3 -3
  20. package/android/src/main/java/com/swmansion/rnscreens/ScreenStackViewManager.kt +3 -3
  21. package/android/src/main/java/com/swmansion/rnscreens/ScreenViewManager.kt +4 -4
  22. package/android/src/main/java/com/swmansion/rnscreens/ScreenWindowTraits.kt +13 -16
  23. package/android/src/main/java/com/swmansion/rnscreens/ScreensModule.kt +105 -0
  24. package/android/src/main/java/com/swmansion/rnscreens/ScreensShadowNode.kt +2 -2
  25. package/android/src/main/java/com/swmansion/rnscreens/SearchBarManager.kt +1 -0
  26. package/android/src/main/java/com/swmansion/rnscreens/SearchBarView.kt +14 -10
  27. package/android/src/main/java/com/swmansion/rnscreens/SearchViewFormatter.kt +8 -8
  28. package/android/src/main/java/com/swmansion/rnscreens/events/HeaderAttachedEvent.kt +3 -7
  29. package/android/src/main/java/com/swmansion/rnscreens/events/HeaderBackButtonClickedEvent.kt +4 -8
  30. package/android/src/main/java/com/swmansion/rnscreens/events/HeaderDetachedEvent.kt +3 -7
  31. package/android/src/main/java/com/swmansion/rnscreens/events/HeaderHeightChangeEvent.kt +3 -3
  32. package/android/src/main/java/com/swmansion/rnscreens/events/ScreenTransitionProgressEvent.kt +9 -13
  33. package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarBlurEvent.kt +3 -7
  34. package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarChangeTextEvent.kt +3 -7
  35. package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarCloseEvent.kt +3 -7
  36. package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarFocusEvent.kt +3 -7
  37. package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarOpenEvent.kt +3 -7
  38. package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarSearchButtonPressEvent.kt +3 -7
  39. package/android/src/main/jni/rnscreens.h +1 -0
  40. package/android/src/main/res/v33/anim-v33/rns_default_enter_in.xml +0 -1
  41. package/android/src/main/res/v33/anim-v33/rns_default_enter_out.xml +2 -2
  42. package/android/src/paper/java/com/swmansion/rnscreens/FabricEnabledViewGroup.kt +1 -1
  43. package/android/src/paper/java/com/swmansion/rnscreens/NativeScreensModuleSpec.java +32 -0
  44. package/common/cpp/react/renderer/components/rnscreens/RNSModalScreenComponentDescriptor.h +41 -0
  45. package/common/cpp/react/renderer/components/rnscreens/RNSModalScreenShadowNode.cpp +15 -0
  46. package/common/cpp/react/renderer/components/rnscreens/RNSModalScreenShadowNode.h +31 -0
  47. package/common/cpp/react/renderer/components/rnscreens/RNSScreenShadowNode.cpp +6 -0
  48. package/common/cpp/react/renderer/components/rnscreens/RNSScreenShadowNode.h +1 -5
  49. package/common/cpp/react/renderer/components/rnscreens/RNSScreenState.cpp +1 -1
  50. package/common/cpp/react/renderer/components/rnscreens/RNSScreenState.h +8 -3
  51. package/cpp/RNScreensTurboModule.cpp +107 -0
  52. package/cpp/RNScreensTurboModule.h +43 -0
  53. package/gesture-handler/package.json +6 -0
  54. package/ios/RNSConvert.h +2 -0
  55. package/ios/RNSConvert.mm +5 -2
  56. package/ios/RNSEnums.h +1 -0
  57. package/ios/RNSModalScreen.h +8 -0
  58. package/ios/RNSModalScreen.mm +36 -0
  59. package/ios/RNSModule.h +19 -0
  60. package/ios/RNSModule.mm +174 -0
  61. package/ios/RNSScreen.h +4 -1
  62. package/ios/RNSScreen.mm +48 -26
  63. package/ios/RNSScreenStack.h +6 -0
  64. package/ios/RNSScreenStack.mm +150 -23
  65. package/ios/RNSScreenStackAnimator.mm +89 -1
  66. package/ios/RNSScreenStackHeaderConfig.mm +7 -1
  67. package/ios/RNSScreenWindowTraits.h +1 -1
  68. package/ios/RNSScreenWindowTraits.mm +24 -50
  69. package/ios/RNSSearchBar.mm +24 -0
  70. package/ios/utils/RNSUIBarButtonItem.h +2 -0
  71. package/lib/commonjs/TransitionProgressContext.js +3 -4
  72. package/lib/commonjs/TransitionProgressContext.js.map +1 -1
  73. package/lib/commonjs/components/FullWindowOverlay.js +28 -0
  74. package/lib/commonjs/components/FullWindowOverlay.js.map +1 -0
  75. package/lib/commonjs/components/FullWindowOverlay.web.js +9 -0
  76. package/lib/commonjs/components/FullWindowOverlay.web.js.map +1 -0
  77. package/lib/commonjs/components/Screen.js +161 -0
  78. package/lib/commonjs/components/Screen.js.map +1 -0
  79. package/lib/commonjs/components/Screen.web.js +46 -0
  80. package/lib/commonjs/components/Screen.web.js.map +1 -0
  81. package/lib/commonjs/components/ScreenContainer.js +33 -0
  82. package/lib/commonjs/components/ScreenContainer.js.map +1 -0
  83. package/lib/commonjs/components/ScreenContainer.web.js +11 -0
  84. package/lib/commonjs/components/ScreenContainer.web.js.map +1 -0
  85. package/lib/commonjs/components/ScreenStack.js +45 -0
  86. package/lib/commonjs/components/ScreenStack.js.map +1 -0
  87. package/lib/commonjs/components/ScreenStack.web.js +9 -0
  88. package/lib/commonjs/components/ScreenStack.web.js.map +1 -0
  89. package/lib/commonjs/components/ScreenStackHeaderConfig.js +53 -0
  90. package/lib/commonjs/components/ScreenStackHeaderConfig.js.map +1 -0
  91. package/lib/commonjs/components/ScreenStackHeaderConfig.web.js +27 -0
  92. package/lib/commonjs/components/ScreenStackHeaderConfig.web.js.map +1 -0
  93. package/lib/commonjs/components/SearchBar.js +59 -0
  94. package/lib/commonjs/components/SearchBar.js.map +1 -0
  95. package/lib/commonjs/components/SearchBar.web.js +11 -0
  96. package/lib/commonjs/components/SearchBar.web.js.map +1 -0
  97. package/lib/commonjs/components/helpers/DelayedFreeze.js +32 -0
  98. package/lib/commonjs/components/helpers/DelayedFreeze.js.map +1 -0
  99. package/lib/commonjs/core.js +41 -0
  100. package/lib/commonjs/core.js.map +1 -0
  101. package/lib/commonjs/fabric/FullWindowOverlayNativeComponent.js +1 -2
  102. package/lib/commonjs/fabric/FullWindowOverlayNativeComponent.js.map +1 -1
  103. package/lib/commonjs/fabric/ModalScreenNativeComponent.js +13 -0
  104. package/lib/commonjs/fabric/ModalScreenNativeComponent.js.map +1 -0
  105. package/lib/commonjs/fabric/NativeScreensModule.js +10 -0
  106. package/lib/commonjs/fabric/NativeScreensModule.js.map +1 -0
  107. package/lib/commonjs/fabric/NativeScreensModule.web.js +8 -0
  108. package/lib/commonjs/fabric/NativeScreensModule.web.js.map +1 -0
  109. package/lib/commonjs/fabric/ScreenContainerNativeComponent.js +1 -2
  110. package/lib/commonjs/fabric/ScreenContainerNativeComponent.js.map +1 -1
  111. package/lib/commonjs/fabric/ScreenNativeComponent.js +1 -2
  112. package/lib/commonjs/fabric/ScreenNativeComponent.js.map +1 -1
  113. package/lib/commonjs/fabric/ScreenNavigationContainerNativeComponent.js +1 -2
  114. package/lib/commonjs/fabric/ScreenNavigationContainerNativeComponent.js.map +1 -1
  115. package/lib/commonjs/fabric/ScreenStackHeaderConfigNativeComponent.js +1 -2
  116. package/lib/commonjs/fabric/ScreenStackHeaderConfigNativeComponent.js.map +1 -1
  117. package/lib/commonjs/fabric/ScreenStackHeaderSubviewNativeComponent.js +1 -2
  118. package/lib/commonjs/fabric/ScreenStackHeaderSubviewNativeComponent.js.map +1 -1
  119. package/lib/commonjs/fabric/ScreenStackNativeComponent.js +1 -2
  120. package/lib/commonjs/fabric/ScreenStackNativeComponent.js.map +1 -1
  121. package/lib/commonjs/fabric/SearchBarNativeComponent.js +3 -5
  122. package/lib/commonjs/fabric/SearchBarNativeComponent.js.map +1 -1
  123. package/lib/commonjs/gesture-handler/GestureDetectorProvider.js +19 -0
  124. package/lib/commonjs/gesture-handler/GestureDetectorProvider.js.map +1 -0
  125. package/lib/commonjs/gesture-handler/RNScreensTurboModule.js +8 -0
  126. package/lib/commonjs/gesture-handler/RNScreensTurboModule.js.map +1 -0
  127. package/lib/commonjs/gesture-handler/ScreenGestureDetector.js +202 -0
  128. package/lib/commonjs/gesture-handler/ScreenGestureDetector.js.map +1 -0
  129. package/lib/commonjs/gesture-handler/constraints.js +64 -0
  130. package/lib/commonjs/gesture-handler/constraints.js.map +1 -0
  131. package/lib/commonjs/gesture-handler/defaults.js +38 -0
  132. package/lib/commonjs/gesture-handler/defaults.js.map +1 -0
  133. package/lib/commonjs/gesture-handler/fabricUtils.js +30 -0
  134. package/lib/commonjs/gesture-handler/fabricUtils.js.map +1 -0
  135. package/lib/commonjs/gesture-handler/fabricUtils.web.js +17 -0
  136. package/lib/commonjs/gesture-handler/fabricUtils.web.js.map +1 -0
  137. package/lib/commonjs/gesture-handler/index.js +14 -0
  138. package/lib/commonjs/gesture-handler/index.js.map +1 -0
  139. package/lib/commonjs/index.js +183 -100
  140. package/lib/commonjs/index.js.map +1 -1
  141. package/lib/commonjs/native-stack/contexts/GHContext.js +11 -0
  142. package/lib/commonjs/native-stack/contexts/GHContext.js.map +1 -0
  143. package/lib/commonjs/native-stack/index.js.map +1 -1
  144. package/lib/commonjs/native-stack/navigators/createNativeStackNavigator.js +20 -24
  145. package/lib/commonjs/native-stack/navigators/createNativeStackNavigator.js.map +1 -1
  146. package/lib/commonjs/native-stack/types.js.map +1 -1
  147. package/lib/commonjs/native-stack/utils/AnimatedHeaderHeightContext.js +3 -4
  148. package/lib/commonjs/native-stack/utils/AnimatedHeaderHeightContext.js.map +1 -1
  149. package/lib/commonjs/native-stack/utils/HeaderHeightContext.js +3 -4
  150. package/lib/commonjs/native-stack/utils/HeaderHeightContext.js.map +1 -1
  151. package/lib/commonjs/native-stack/utils/SafeAreaProviderCompat.js +2 -2
  152. package/lib/commonjs/native-stack/utils/SafeAreaProviderCompat.js.map +1 -1
  153. package/lib/commonjs/native-stack/utils/getDefaultHeaderHeight.js.map +1 -1
  154. package/lib/commonjs/native-stack/utils/getStatusBarHeight.js.map +1 -1
  155. package/lib/commonjs/native-stack/utils/useAnimatedHeaderHeight.js +2 -2
  156. package/lib/commonjs/native-stack/utils/useAnimatedHeaderHeight.js.map +1 -1
  157. package/lib/commonjs/native-stack/utils/useBackPressSubscription.js +2 -4
  158. package/lib/commonjs/native-stack/utils/useBackPressSubscription.js.map +1 -1
  159. package/lib/commonjs/native-stack/utils/useHeaderHeight.js +2 -2
  160. package/lib/commonjs/native-stack/utils/useHeaderHeight.js.map +1 -1
  161. package/lib/commonjs/native-stack/views/FontProcessor.js +1 -2
  162. package/lib/commonjs/native-stack/views/FontProcessor.js.map +1 -1
  163. package/lib/commonjs/native-stack/views/HeaderConfig.js +11 -7
  164. package/lib/commonjs/native-stack/views/HeaderConfig.js.map +1 -1
  165. package/lib/commonjs/native-stack/views/NativeStackView.js +50 -15
  166. package/lib/commonjs/native-stack/views/NativeStackView.js.map +1 -1
  167. package/lib/commonjs/reanimated/ReanimatedHeaderHeightContext.js +3 -4
  168. package/lib/commonjs/reanimated/ReanimatedHeaderHeightContext.js.map +1 -1
  169. package/lib/commonjs/reanimated/ReanimatedNativeStackScreen.js +6 -9
  170. package/lib/commonjs/reanimated/ReanimatedNativeStackScreen.js.map +1 -1
  171. package/lib/commonjs/reanimated/ReanimatedScreen.js +1 -2
  172. package/lib/commonjs/reanimated/ReanimatedScreen.js.map +1 -1
  173. package/lib/commonjs/reanimated/ReanimatedScreenProvider.js +6 -14
  174. package/lib/commonjs/reanimated/ReanimatedScreenProvider.js.map +1 -1
  175. package/lib/commonjs/reanimated/ReanimatedTransitionProgressContext.js +3 -4
  176. package/lib/commonjs/reanimated/ReanimatedTransitionProgressContext.js.map +1 -1
  177. package/lib/commonjs/reanimated/index.js.map +1 -1
  178. package/lib/commonjs/reanimated/useReanimatedHeaderHeight.js +2 -2
  179. package/lib/commonjs/reanimated/useReanimatedHeaderHeight.js.map +1 -1
  180. package/lib/commonjs/reanimated/useReanimatedTransitionProgress.js +2 -2
  181. package/lib/commonjs/reanimated/useReanimatedTransitionProgress.js.map +1 -1
  182. package/lib/commonjs/types.js.map +1 -1
  183. package/lib/commonjs/useTransitionProgress.js +2 -2
  184. package/lib/commonjs/useTransitionProgress.js.map +1 -1
  185. package/lib/commonjs/utils.js +2 -4
  186. package/lib/commonjs/utils.js.map +1 -1
  187. package/lib/module/TransitionProgressContext.js.map +1 -1
  188. package/lib/module/components/FullWindowOverlay.js +21 -0
  189. package/lib/module/components/FullWindowOverlay.js.map +1 -0
  190. package/lib/module/components/FullWindowOverlay.web.js +3 -0
  191. package/lib/module/components/FullWindowOverlay.web.js.map +1 -0
  192. package/lib/module/components/Screen.js +156 -0
  193. package/lib/module/components/Screen.js.map +1 -0
  194. package/lib/module/components/Screen.web.js +38 -0
  195. package/lib/module/components/Screen.web.js.map +1 -0
  196. package/lib/module/components/ScreenContainer.js +26 -0
  197. package/lib/module/components/ScreenContainer.js.map +1 -0
  198. package/lib/module/components/ScreenContainer.web.js +5 -0
  199. package/lib/module/components/ScreenContainer.web.js.map +1 -0
  200. package/lib/module/components/ScreenStack.js +40 -0
  201. package/lib/module/components/ScreenStack.js.map +1 -0
  202. package/lib/module/components/ScreenStack.web.js +3 -0
  203. package/lib/module/components/ScreenStack.web.js.map +1 -0
  204. package/lib/module/components/ScreenStackHeaderConfig.js +43 -0
  205. package/lib/module/components/ScreenStackHeaderConfig.js.map +1 -0
  206. package/lib/module/components/ScreenStackHeaderConfig.web.js +14 -0
  207. package/lib/module/components/ScreenStackHeaderConfig.web.js.map +1 -0
  208. package/lib/module/components/SearchBar.js +52 -0
  209. package/lib/module/components/SearchBar.js.map +1 -0
  210. package/lib/module/components/SearchBar.web.js +5 -0
  211. package/lib/module/components/SearchBar.web.js.map +1 -0
  212. package/lib/module/components/helpers/DelayedFreeze.js +25 -0
  213. package/lib/module/components/helpers/DelayedFreeze.js.map +1 -0
  214. package/lib/module/core.js +31 -0
  215. package/lib/module/core.js.map +1 -0
  216. package/lib/module/fabric/FullWindowOverlayNativeComponent.js.map +1 -1
  217. package/lib/module/fabric/ModalScreenNativeComponent.js +8 -0
  218. package/lib/module/fabric/ModalScreenNativeComponent.js.map +1 -0
  219. package/lib/module/fabric/NativeScreensModule.js +5 -0
  220. package/lib/module/fabric/NativeScreensModule.js.map +1 -0
  221. package/lib/module/fabric/NativeScreensModule.web.js +2 -0
  222. package/lib/module/fabric/NativeScreensModule.web.js.map +1 -0
  223. package/lib/module/fabric/ScreenContainerNativeComponent.js.map +1 -1
  224. package/lib/module/fabric/ScreenNativeComponent.js.map +1 -1
  225. package/lib/module/fabric/ScreenNavigationContainerNativeComponent.js.map +1 -1
  226. package/lib/module/fabric/ScreenStackHeaderConfigNativeComponent.js.map +1 -1
  227. package/lib/module/fabric/ScreenStackHeaderSubviewNativeComponent.js.map +1 -1
  228. package/lib/module/fabric/ScreenStackNativeComponent.js.map +1 -1
  229. package/lib/module/fabric/SearchBarNativeComponent.js +1 -1
  230. package/lib/module/fabric/SearchBarNativeComponent.js.map +1 -1
  231. package/lib/module/gesture-handler/GestureDetectorProvider.js +12 -0
  232. package/lib/module/gesture-handler/GestureDetectorProvider.js.map +1 -0
  233. package/lib/module/gesture-handler/RNScreensTurboModule.js +2 -0
  234. package/lib/module/gesture-handler/RNScreensTurboModule.js.map +1 -0
  235. package/lib/module/gesture-handler/ScreenGestureDetector.js +194 -0
  236. package/lib/module/gesture-handler/ScreenGestureDetector.js.map +1 -0
  237. package/lib/module/gesture-handler/constraints.js +56 -0
  238. package/lib/module/gesture-handler/constraints.js.map +1 -0
  239. package/lib/module/gesture-handler/defaults.js +32 -0
  240. package/lib/module/gesture-handler/defaults.js.map +1 -0
  241. package/lib/module/gesture-handler/fabricUtils.js +23 -0
  242. package/lib/module/gesture-handler/fabricUtils.js.map +1 -0
  243. package/lib/module/gesture-handler/fabricUtils.web.js +10 -0
  244. package/lib/module/gesture-handler/fabricUtils.web.js.map +1 -0
  245. package/lib/module/gesture-handler/index.js +5 -0
  246. package/lib/module/gesture-handler/index.js.map +1 -0
  247. package/lib/module/index.js +31 -64
  248. package/lib/module/index.js.map +1 -1
  249. package/lib/module/native-stack/contexts/GHContext.js +4 -0
  250. package/lib/module/native-stack/contexts/GHContext.js.map +1 -0
  251. package/lib/module/native-stack/index.js.map +1 -1
  252. package/lib/module/native-stack/navigators/createNativeStackNavigator.js +17 -20
  253. package/lib/module/native-stack/navigators/createNativeStackNavigator.js.map +1 -1
  254. package/lib/module/native-stack/types.js.map +1 -1
  255. package/lib/module/native-stack/utils/AnimatedHeaderHeightContext.js.map +1 -1
  256. package/lib/module/native-stack/utils/HeaderHeightContext.js.map +1 -1
  257. package/lib/module/native-stack/utils/SafeAreaProviderCompat.js.map +1 -1
  258. package/lib/module/native-stack/utils/getDefaultHeaderHeight.js.map +1 -1
  259. package/lib/module/native-stack/utils/getStatusBarHeight.js.map +1 -1
  260. package/lib/module/native-stack/utils/useAnimatedHeaderHeight.js.map +1 -1
  261. package/lib/module/native-stack/utils/useBackPressSubscription.js +2 -4
  262. package/lib/module/native-stack/utils/useBackPressSubscription.js.map +1 -1
  263. package/lib/module/native-stack/utils/useHeaderHeight.js.map +1 -1
  264. package/lib/module/native-stack/views/FontProcessor.js +1 -2
  265. package/lib/module/native-stack/views/FontProcessor.js.map +1 -1
  266. package/lib/module/native-stack/views/HeaderConfig.js +8 -5
  267. package/lib/module/native-stack/views/HeaderConfig.js.map +1 -1
  268. package/lib/module/native-stack/views/NativeStackView.js +49 -14
  269. package/lib/module/native-stack/views/NativeStackView.js.map +1 -1
  270. package/lib/module/reanimated/ReanimatedHeaderHeightContext.js.map +1 -1
  271. package/lib/module/reanimated/ReanimatedNativeStackScreen.js +2 -4
  272. package/lib/module/reanimated/ReanimatedNativeStackScreen.js.map +1 -1
  273. package/lib/module/reanimated/ReanimatedScreen.js.map +1 -1
  274. package/lib/module/reanimated/ReanimatedScreenProvider.js +6 -14
  275. package/lib/module/reanimated/ReanimatedScreenProvider.js.map +1 -1
  276. package/lib/module/reanimated/ReanimatedTransitionProgressContext.js.map +1 -1
  277. package/lib/module/reanimated/index.js.map +1 -1
  278. package/lib/module/reanimated/useReanimatedHeaderHeight.js.map +1 -1
  279. package/lib/module/reanimated/useReanimatedTransitionProgress.js.map +1 -1
  280. package/lib/module/types.js.map +1 -1
  281. package/lib/module/useTransitionProgress.js.map +1 -1
  282. package/lib/module/utils.js.map +1 -1
  283. package/lib/typescript/TransitionProgressContext.d.ts +1 -0
  284. package/lib/typescript/TransitionProgressContext.d.ts.map +1 -0
  285. package/lib/typescript/components/FullWindowOverlay.d.ts +6 -0
  286. package/lib/typescript/components/FullWindowOverlay.d.ts.map +1 -0
  287. package/lib/typescript/components/FullWindowOverlay.web.d.ts +6 -0
  288. package/lib/typescript/components/FullWindowOverlay.web.d.ts.map +1 -0
  289. package/lib/typescript/components/Screen.d.ts +20 -0
  290. package/lib/typescript/components/Screen.d.ts.map +1 -0
  291. package/lib/typescript/components/Screen.web.d.ts +11 -0
  292. package/lib/typescript/components/Screen.web.d.ts.map +1 -0
  293. package/lib/typescript/components/ScreenContainer.d.ts +7 -0
  294. package/lib/typescript/components/ScreenContainer.d.ts.map +1 -0
  295. package/lib/typescript/components/ScreenContainer.web.d.ts +5 -0
  296. package/lib/typescript/components/ScreenContainer.web.d.ts.map +1 -0
  297. package/lib/typescript/components/ScreenStack.d.ts +5 -0
  298. package/lib/typescript/components/ScreenStack.d.ts.map +1 -0
  299. package/lib/typescript/components/ScreenStack.web.d.ts +3 -0
  300. package/lib/typescript/components/ScreenStack.web.d.ts.map +1 -0
  301. package/lib/typescript/components/ScreenStackHeaderConfig.d.ts +13 -0
  302. package/lib/typescript/components/ScreenStackHeaderConfig.d.ts.map +1 -0
  303. package/lib/typescript/components/ScreenStackHeaderConfig.web.d.ts +13 -0
  304. package/lib/typescript/components/ScreenStackHeaderConfig.web.d.ts.map +1 -0
  305. package/lib/typescript/components/SearchBar.d.ts +26 -0
  306. package/lib/typescript/components/SearchBar.d.ts.map +1 -0
  307. package/lib/typescript/components/SearchBar.web.d.ts +5 -0
  308. package/lib/typescript/components/SearchBar.web.d.ts.map +1 -0
  309. package/lib/typescript/components/helpers/DelayedFreeze.d.ts +8 -0
  310. package/lib/typescript/components/helpers/DelayedFreeze.d.ts.map +1 -0
  311. package/lib/typescript/core.d.ts +7 -0
  312. package/lib/typescript/core.d.ts.map +1 -0
  313. package/lib/typescript/fabric/FullWindowOverlayNativeComponent.d.ts +1 -0
  314. package/lib/typescript/fabric/FullWindowOverlayNativeComponent.d.ts.map +1 -0
  315. package/lib/typescript/fabric/ModalScreenNativeComponent.d.ts +68 -0
  316. package/lib/typescript/fabric/ModalScreenNativeComponent.d.ts.map +1 -0
  317. package/lib/typescript/fabric/NativeScreensModule.d.ts +6 -0
  318. package/lib/typescript/fabric/NativeScreensModule.d.ts.map +1 -0
  319. package/lib/typescript/fabric/NativeScreensModule.web.d.ts +3 -0
  320. package/lib/typescript/fabric/NativeScreensModule.web.d.ts.map +1 -0
  321. package/lib/typescript/fabric/ScreenContainerNativeComponent.d.ts +1 -0
  322. package/lib/typescript/fabric/ScreenContainerNativeComponent.d.ts.map +1 -0
  323. package/lib/typescript/fabric/ScreenNativeComponent.d.ts +2 -1
  324. package/lib/typescript/fabric/ScreenNativeComponent.d.ts.map +1 -0
  325. package/lib/typescript/fabric/ScreenNavigationContainerNativeComponent.d.ts +1 -0
  326. package/lib/typescript/fabric/ScreenNavigationContainerNativeComponent.d.ts.map +1 -0
  327. package/lib/typescript/fabric/ScreenStackHeaderConfigNativeComponent.d.ts +1 -0
  328. package/lib/typescript/fabric/ScreenStackHeaderConfigNativeComponent.d.ts.map +1 -0
  329. package/lib/typescript/fabric/ScreenStackHeaderSubviewNativeComponent.d.ts +1 -0
  330. package/lib/typescript/fabric/ScreenStackHeaderSubviewNativeComponent.d.ts.map +1 -0
  331. package/lib/typescript/fabric/ScreenStackNativeComponent.d.ts +1 -0
  332. package/lib/typescript/fabric/ScreenStackNativeComponent.d.ts.map +1 -0
  333. package/lib/typescript/fabric/SearchBarNativeComponent.d.ts +3 -1
  334. package/lib/typescript/fabric/SearchBarNativeComponent.d.ts.map +1 -0
  335. package/lib/typescript/gesture-handler/GestureDetectorProvider.d.ts +5 -0
  336. package/lib/typescript/gesture-handler/GestureDetectorProvider.d.ts.map +1 -0
  337. package/lib/typescript/gesture-handler/RNScreensTurboModule.d.ts +13 -0
  338. package/lib/typescript/gesture-handler/RNScreensTurboModule.d.ts.map +1 -0
  339. package/lib/typescript/gesture-handler/ScreenGestureDetector.d.ts +5 -0
  340. package/lib/typescript/gesture-handler/ScreenGestureDetector.d.ts.map +1 -0
  341. package/lib/typescript/gesture-handler/constraints.d.ts +6 -0
  342. package/lib/typescript/gesture-handler/constraints.d.ts.map +1 -0
  343. package/lib/typescript/gesture-handler/defaults.d.ts +20 -0
  344. package/lib/typescript/gesture-handler/defaults.d.ts.map +1 -0
  345. package/lib/typescript/gesture-handler/fabricUtils.d.ts +8 -0
  346. package/lib/typescript/gesture-handler/fabricUtils.d.ts.map +1 -0
  347. package/lib/typescript/gesture-handler/fabricUtils.web.d.ts +6 -0
  348. package/lib/typescript/gesture-handler/fabricUtils.web.d.ts.map +1 -0
  349. package/lib/typescript/gesture-handler/index.d.ts +2 -0
  350. package/lib/typescript/gesture-handler/index.d.ts.map +1 -0
  351. package/lib/typescript/index.d.ts +11 -31
  352. package/lib/typescript/index.d.ts.map +1 -0
  353. package/lib/typescript/native-stack/contexts/GHContext.d.ts +4 -0
  354. package/lib/typescript/native-stack/contexts/GHContext.d.ts.map +1 -0
  355. package/lib/typescript/native-stack/index.d.ts +1 -0
  356. package/lib/typescript/native-stack/index.d.ts.map +1 -0
  357. package/lib/typescript/native-stack/navigators/createNativeStackNavigator.d.ts +1 -0
  358. package/lib/typescript/native-stack/navigators/createNativeStackNavigator.d.ts.map +1 -0
  359. package/lib/typescript/native-stack/types.d.ts +39 -2
  360. package/lib/typescript/native-stack/types.d.ts.map +1 -0
  361. package/lib/typescript/native-stack/utils/AnimatedHeaderHeightContext.d.ts +1 -0
  362. package/lib/typescript/native-stack/utils/AnimatedHeaderHeightContext.d.ts.map +1 -0
  363. package/lib/typescript/native-stack/utils/HeaderHeightContext.d.ts +1 -0
  364. package/lib/typescript/native-stack/utils/HeaderHeightContext.d.ts.map +1 -0
  365. package/lib/typescript/native-stack/utils/SafeAreaProviderCompat.d.ts +1 -0
  366. package/lib/typescript/native-stack/utils/SafeAreaProviderCompat.d.ts.map +1 -0
  367. package/lib/typescript/native-stack/utils/getDefaultHeaderHeight.d.ts +1 -0
  368. package/lib/typescript/native-stack/utils/getDefaultHeaderHeight.d.ts.map +1 -0
  369. package/lib/typescript/native-stack/utils/getStatusBarHeight.d.ts +1 -0
  370. package/lib/typescript/native-stack/utils/getStatusBarHeight.d.ts.map +1 -0
  371. package/lib/typescript/native-stack/utils/useAnimatedHeaderHeight.d.ts +1 -0
  372. package/lib/typescript/native-stack/utils/useAnimatedHeaderHeight.d.ts.map +1 -0
  373. package/lib/typescript/native-stack/utils/useBackPressSubscription.d.ts +1 -0
  374. package/lib/typescript/native-stack/utils/useBackPressSubscription.d.ts.map +1 -0
  375. package/lib/typescript/native-stack/utils/useHeaderHeight.d.ts +1 -0
  376. package/lib/typescript/native-stack/utils/useHeaderHeight.d.ts.map +1 -0
  377. package/lib/typescript/native-stack/views/FontProcessor.d.ts +1 -0
  378. package/lib/typescript/native-stack/views/FontProcessor.d.ts.map +1 -0
  379. package/lib/typescript/native-stack/views/HeaderConfig.d.ts +1 -0
  380. package/lib/typescript/native-stack/views/HeaderConfig.d.ts.map +1 -0
  381. package/lib/typescript/native-stack/views/NativeStackView.d.ts +1 -0
  382. package/lib/typescript/native-stack/views/NativeStackView.d.ts.map +1 -0
  383. package/lib/typescript/reanimated/ReanimatedHeaderHeightContext.d.ts +1 -0
  384. package/lib/typescript/reanimated/ReanimatedHeaderHeightContext.d.ts.map +1 -0
  385. package/lib/typescript/reanimated/ReanimatedNativeStackScreen.d.ts +2 -2
  386. package/lib/typescript/reanimated/ReanimatedNativeStackScreen.d.ts.map +1 -0
  387. package/lib/typescript/reanimated/ReanimatedScreen.d.ts +2 -2
  388. package/lib/typescript/reanimated/ReanimatedScreen.d.ts.map +1 -0
  389. package/lib/typescript/reanimated/ReanimatedScreenProvider.d.ts +1 -0
  390. package/lib/typescript/reanimated/ReanimatedScreenProvider.d.ts.map +1 -0
  391. package/lib/typescript/reanimated/ReanimatedTransitionProgressContext.d.ts +1 -0
  392. package/lib/typescript/reanimated/ReanimatedTransitionProgressContext.d.ts.map +1 -0
  393. package/lib/typescript/reanimated/index.d.ts +1 -0
  394. package/lib/typescript/reanimated/index.d.ts.map +1 -0
  395. package/lib/typescript/reanimated/useReanimatedHeaderHeight.d.ts +2 -3
  396. package/lib/typescript/reanimated/useReanimatedHeaderHeight.d.ts.map +1 -0
  397. package/lib/typescript/reanimated/useReanimatedTransitionProgress.d.ts +4 -9
  398. package/lib/typescript/reanimated/useReanimatedTransitionProgress.d.ts.map +1 -0
  399. package/lib/typescript/types.d.ts +11 -2
  400. package/lib/typescript/types.d.ts.map +1 -0
  401. package/lib/typescript/useTransitionProgress.d.ts +1 -0
  402. package/lib/typescript/useTransitionProgress.d.ts.map +1 -0
  403. package/lib/typescript/utils.d.ts +1 -0
  404. package/lib/typescript/utils.d.ts.map +1 -0
  405. package/native-stack/README.md +2 -1
  406. package/native-stack/package.json +1 -1
  407. package/package.json +18 -11
  408. package/react-native.config.js +2 -1
  409. package/reanimated/package.json +1 -1
  410. package/src/components/FullWindowOverlay.tsx +25 -0
  411. package/src/components/FullWindowOverlay.web.tsx +6 -0
  412. package/src/components/Screen.tsx +218 -0
  413. package/src/components/Screen.web.tsx +43 -0
  414. package/src/components/ScreenContainer.tsx +33 -0
  415. package/src/components/ScreenContainer.web.tsx +6 -0
  416. package/src/components/ScreenStack.tsx +41 -0
  417. package/src/components/ScreenStack.web.tsx +3 -0
  418. package/src/components/ScreenStackHeaderConfig.tsx +76 -0
  419. package/src/components/ScreenStackHeaderConfig.web.tsx +39 -0
  420. package/src/components/SearchBar.tsx +91 -0
  421. package/src/components/SearchBar.web.tsx +6 -0
  422. package/src/components/helpers/DelayedFreeze.tsx +27 -0
  423. package/src/core.ts +43 -0
  424. package/src/fabric/ModalScreenNativeComponent.ts +104 -0
  425. package/src/fabric/NativeScreensModule.ts +7 -0
  426. package/src/fabric/NativeScreensModule.web.ts +1 -0
  427. package/src/fabric/ScreenNativeComponent.ts +1 -1
  428. package/src/fabric/SearchBarNativeComponent.ts +2 -0
  429. package/src/gesture-handler/GestureDetectorProvider.tsx +16 -0
  430. package/src/gesture-handler/RNScreensTurboModule.ts +13 -0
  431. package/src/gesture-handler/ScreenGestureDetector.tsx +241 -0
  432. package/src/gesture-handler/constraints.ts +87 -0
  433. package/src/gesture-handler/defaults.ts +38 -0
  434. package/src/gesture-handler/fabricUtils.ts +39 -0
  435. package/src/gesture-handler/fabricUtils.web.ts +10 -0
  436. package/src/gesture-handler/index.tsx +4 -0
  437. package/src/index.tsx +65 -112
  438. package/src/native-stack/contexts/GHContext.tsx +7 -0
  439. package/src/native-stack/types.tsx +62 -1
  440. package/src/native-stack/views/HeaderConfig.tsx +11 -0
  441. package/src/native-stack/views/NativeStackView.tsx +65 -13
  442. package/src/types.tsx +13 -1
  443. package/lib/commonjs/index.native.js +0 -418
  444. package/lib/commonjs/index.native.js.map +0 -1
  445. package/lib/module/index.native.js +0 -415
  446. package/lib/module/index.native.js.map +0 -1
  447. package/lib/typescript/index.native.d.ts +0 -2
  448. package/src/index.native.tsx +0 -619
@@ -5,14 +5,10 @@ import com.facebook.react.bridge.WritableMap
5
5
  import com.facebook.react.uimanager.events.Event
6
6
 
7
7
  class SearchBarSearchButtonPressEvent(surfaceId: Int, viewId: Int, private val text: String?) : Event<ScreenAppearEvent>(surfaceId, viewId) {
8
- override fun getEventName(): String {
9
- return EVENT_NAME
10
- }
8
+ override fun getEventName(): String = EVENT_NAME
11
9
 
12
- override fun getCoalescingKey(): Short {
13
- // All events for a given view can be coalesced.
14
- return 0
15
- }
10
+ // All events for a given view can be coalesced.
11
+ override fun getCoalescingKey(): Short = 0
16
12
 
17
13
  override fun getEventData(): WritableMap? = Arguments.createMap().apply {
18
14
  putString("text", text)
@@ -17,6 +17,7 @@
17
17
  * See: https://github.com/software-mansion/react-native-screens/pull/1585
18
18
  */
19
19
  #include <react/renderer/components/rnscreens/RNSScreenComponentDescriptor.h>
20
+ #include <react/renderer/components/rnscreens/RNSModalScreenComponentDescriptor.h>
20
21
 
21
22
  namespace facebook {
22
23
  namespace react {
@@ -19,7 +19,6 @@
19
19
  android:fillEnabled="true"
20
20
  android:fillBefore="true"
21
21
  android:fillAfter="true"
22
- android:startOffset="0"
23
22
  android:interpolator="@android:interpolator/fast_out_extra_slow_in"
24
23
  android:duration="450" />
25
24
 
@@ -5,13 +5,13 @@
5
5
 
6
6
  <alpha
7
7
  android:fromAlpha="1.0"
8
- android:toAlpha="0.0"
8
+ android:toAlpha="1.0"
9
9
  android:fillEnabled="true"
10
10
  android:fillBefore="true"
11
11
  android:fillAfter="true"
12
12
  android:interpolator="@anim/rns_standard_accelerate_interpolator"
13
13
  android:startOffset="0"
14
- android:duration="83" />
14
+ android:duration="450" />
15
15
 
16
16
  <translate
17
17
  android:fromXDelta="0"
@@ -8,7 +8,7 @@ abstract class FabricEnabledViewGroup constructor(context: ReactContext?) : View
8
8
 
9
9
  val fabricViewStateManager get() = null as FabricViewStateManager?
10
10
 
11
- protected fun updateScreenSizeFabric(width: Int, height: Int) {
11
+ protected fun updateScreenSizeFabric(width: Int, height: Int, headerHeight: Double) {
12
12
  // do nothing
13
13
  }
14
14
  }
@@ -0,0 +1,32 @@
1
+
2
+ /**
3
+ * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
4
+ *
5
+ * Do not edit this file as changes may cause incorrect behavior and will be lost
6
+ * once the code is regenerated.
7
+ *
8
+ * @generated by codegen project: GenerateModuleJavaSpec.js
9
+ *
10
+ * @nolint
11
+ */
12
+
13
+ package com.swmansion.rnscreens;
14
+
15
+ import com.facebook.react.bridge.ReactApplicationContext;
16
+ import com.facebook.react.bridge.ReactContextBaseJavaModule;
17
+ import com.facebook.react.bridge.ReactModuleWithSpec;
18
+ import com.facebook.react.turbomodule.core.interfaces.TurboModule;
19
+ import javax.annotation.Nonnull;
20
+
21
+ public abstract class NativeScreensModuleSpec extends ReactContextBaseJavaModule implements ReactModuleWithSpec, TurboModule {
22
+ public static final String NAME = "RNSModule";
23
+
24
+ public NativeScreensModuleSpec(ReactApplicationContext reactContext) {
25
+ super(reactContext);
26
+ }
27
+
28
+ @Override
29
+ public @Nonnull String getName() {
30
+ return NAME;
31
+ }
32
+ }
@@ -0,0 +1,41 @@
1
+ #pragma once
2
+
3
+ #include <react/debug/react_native_assert.h>
4
+ #include "RNSModalScreenShadowNode.h"
5
+ #include <react/renderer/core/ConcreteComponentDescriptor.h>
6
+
7
+ namespace facebook {
8
+ namespace react {
9
+
10
+ class RNSModalScreenComponentDescriptor final
11
+ : public ConcreteComponentDescriptor<RNSModalScreenShadowNode> {
12
+ public:
13
+ using ConcreteComponentDescriptor::ConcreteComponentDescriptor;
14
+
15
+ void adopt(ShadowNode& shadowNode) const override {
16
+ react_native_assert(
17
+ dynamic_cast<RNSModalScreenShadowNode*>(&shadowNode));
18
+ auto& screenShadowNode =
19
+ static_cast<RNSModalScreenShadowNode&>(shadowNode);
20
+
21
+ react_native_assert(
22
+ dynamic_cast<YogaLayoutableShadowNode*>(&screenShadowNode));
23
+ auto& layoutableShadowNode =
24
+ dynamic_cast<YogaLayoutableShadowNode&>(screenShadowNode);
25
+
26
+ auto state =
27
+ std::static_pointer_cast<const RNSModalScreenShadowNode::ConcreteState>(
28
+ shadowNode.getState());
29
+ auto stateData = state->getData();
30
+
31
+ if (stateData.frameSize.width != 0 && stateData.frameSize.height != 0) {
32
+ layoutableShadowNode.setSize(
33
+ Size{stateData.frameSize.width, stateData.frameSize.height});
34
+ }
35
+
36
+ ConcreteComponentDescriptor::adopt(shadowNode);
37
+ }
38
+ };
39
+
40
+ } // namespace react
41
+ } // namespace facebook
@@ -0,0 +1,15 @@
1
+ #include "RNSModalScreenShadowNode.h"
2
+
3
+ namespace facebook {
4
+ namespace react {
5
+
6
+ extern const char RNSModalScreenComponentName[] = "RNSModalScreen";
7
+
8
+ Point RNSModalScreenShadowNode::getContentOriginOffset() const {
9
+ auto stateData = getStateData();
10
+ auto contentOffset = stateData.contentOffset;
11
+ return {contentOffset.x, contentOffset.y};
12
+ }
13
+
14
+ } // namespace react
15
+ } // namespace facebook
@@ -0,0 +1,31 @@
1
+ #pragma once
2
+
3
+ #include "RNSScreenState.h"
4
+ #include <react/renderer/components/rnscreens/EventEmitters.h>
5
+ #include <react/renderer/components/rnscreens/Props.h>
6
+ #include <react/renderer/components/view/ConcreteViewShadowNode.h>
7
+ #include <jsi/jsi.h>
8
+
9
+ namespace facebook {
10
+ namespace react {
11
+
12
+ JSI_EXPORT extern const char RNSModalScreenComponentName[];
13
+
14
+ class JSI_EXPORT RNSModalScreenShadowNode final : public ConcreteViewShadowNode<
15
+ RNSModalScreenComponentName,
16
+ RNSScreenProps,
17
+ RNSScreenEventEmitter,
18
+ RNSScreenState> {
19
+ public:
20
+ using ConcreteViewShadowNode::ConcreteViewShadowNode;
21
+
22
+ Point getContentOriginOffset() const override;
23
+ static ShadowNodeTraits BaseTraits() {
24
+ auto traits = ConcreteViewShadowNode::BaseTraits();
25
+ traits.set(ShadowNodeTraits::Trait::RootNodeKind);
26
+ return traits;
27
+ }
28
+ };
29
+
30
+ } // namespace react
31
+ } // namespace facebook
@@ -5,5 +5,11 @@ namespace react {
5
5
 
6
6
  extern const char RNSScreenComponentName[] = "RNSScreen";
7
7
 
8
+ Point RNSScreenShadowNode::getContentOriginOffset() const {
9
+ auto stateData = getStateData();
10
+ auto contentOffset = stateData.contentOffset;
11
+ return {contentOffset.x, contentOffset.y};
12
+ }
13
+
8
14
  } // namespace react
9
15
  } // namespace facebook
@@ -19,11 +19,7 @@ class JSI_EXPORT RNSScreenShadowNode final : public ConcreteViewShadowNode<
19
19
  public:
20
20
  using ConcreteViewShadowNode::ConcreteViewShadowNode;
21
21
 
22
- static ShadowNodeTraits BaseTraits() {
23
- auto traits = ConcreteViewShadowNode::BaseTraits();
24
- traits.set(ShadowNodeTraits::Trait::RootNodeKind);
25
- return traits;
26
- }
22
+ Point getContentOriginOffset() const override;
27
23
  };
28
24
 
29
25
  } // namespace react
@@ -6,7 +6,7 @@ namespace react {
6
6
  #ifdef ANDROID
7
7
  folly::dynamic RNSScreenState::getDynamic() const {
8
8
  return folly::dynamic::object("frameWidth", frameSize.width)(
9
- "frameHeight", frameSize.height);
9
+ "frameHeight", frameSize.height)("contentOffsetX", contentOffset.x)("contentOffsetY", contentOffset.y);
10
10
  }
11
11
  #endif
12
12
 
@@ -17,7 +17,7 @@ class JSI_EXPORT RNSScreenState final {
17
17
  using Shared = std::shared_ptr<const RNSScreenState>;
18
18
 
19
19
  RNSScreenState(){};
20
- RNSScreenState(Size frameSize_) : frameSize(frameSize_){};
20
+ RNSScreenState(Size frameSize_, Point contentOffset_) : frameSize(frameSize_), contentOffset(contentOffset_){};
21
21
 
22
22
  #ifdef ANDROID
23
23
  RNSScreenState(
@@ -25,10 +25,15 @@ class JSI_EXPORT RNSScreenState final {
25
25
  folly::dynamic data)
26
26
  : frameSize(Size{
27
27
  (Float)data["frameWidth"].getDouble(),
28
- (Float)data["frameHeight"].getDouble()}){};
28
+ (Float)data["frameHeight"].getDouble()}),
29
+ contentOffset(Point{
30
+ (Float)data["contentOffsetX"].getDouble(),
31
+ (Float)data["contentOffsetY"].getDouble()})
32
+ {};
29
33
  #endif
30
34
 
31
- const Size frameSize{};
35
+ const Size frameSize{};
36
+ Point contentOffset;
32
37
 
33
38
  #ifdef ANDROID
34
39
  folly::dynamic getDynamic() const;
@@ -0,0 +1,107 @@
1
+ #include "RNScreensTurboModule.h"
2
+
3
+ using namespace facebook;
4
+
5
+ namespace RNScreens {
6
+
7
+ const char RNScreensTurboModule::MODULE_NAME[] = "RNScreensTurboModule";
8
+
9
+ std::function<std::array<int, 2>(int)> RNScreensTurboModule::startTransition_;
10
+ std::function<void(int, double)> RNScreensTurboModule::updateTransition_;
11
+ std::function<void(int, bool)> RNScreensTurboModule::finishTransition_;
12
+ std::function<void(int)> RNScreensTurboModule::disableSwipeBackForTopScreen_;
13
+
14
+ RNScreensTurboModule::RNScreensTurboModule(
15
+ std::function<std::array<int, 2>(int)> startTransition,
16
+ std::function<void(int, double)> updateTransition,
17
+ std::function<void(int, bool)> finishTransition,
18
+ std::function<void(int)> disableSwipeBackForTopScreen
19
+ ) {
20
+ startTransition_ = startTransition;
21
+ updateTransition_ = updateTransition;
22
+ finishTransition_ = finishTransition;
23
+ disableSwipeBackForTopScreen_ = disableSwipeBackForTopScreen;
24
+ }
25
+
26
+ RNScreensTurboModule::~RNScreensTurboModule() {};
27
+
28
+ jsi::Value RNScreensTurboModule::get(jsi::Runtime& rt, const jsi::PropNameID& name) {
29
+ if (name.utf8(rt) == "startTransition") {
30
+ return jsi::Function::createFromHostFunction(rt, name, 1, startTransition);
31
+ }
32
+ else if (name.utf8(rt) == "updateTransition") {
33
+ return jsi::Function::createFromHostFunction(rt, name, 2, updateTransition);
34
+ }
35
+ else if (name.utf8(rt) == "finishTransition") {
36
+ return jsi::Function::createFromHostFunction(rt, name, 2, finishTransition);
37
+ }
38
+ else if (name.utf8(rt) == "disableSwipeBackForTopScreen") {
39
+ return jsi::Function::createFromHostFunction(rt, name, 1, disableSwipeBackForTopScreen);
40
+ }
41
+ return jsi::Value::undefined();
42
+ }
43
+
44
+ void RNScreensTurboModule::set(jsi::Runtime&, const jsi::PropNameID&, const jsi::Value&) {};
45
+
46
+ std::vector<jsi::PropNameID> RNScreensTurboModule::getPropertyNames(jsi::Runtime& rt) {
47
+ std::vector<jsi::PropNameID> properties;
48
+ properties.push_back(jsi::PropNameID::forUtf8(rt, "startTransition"));
49
+ properties.push_back(jsi::PropNameID::forUtf8(rt, "updateTransition"));
50
+ properties.push_back(jsi::PropNameID::forUtf8(rt, "finishTransition"));
51
+ properties.push_back(jsi::PropNameID::forUtf8(rt, "disableSwipeBackForTopScreen"));
52
+ return properties;
53
+ }
54
+
55
+ JSI_HOST_FUNCTION(RNScreensTurboModule::startTransition) {
56
+ if (count < 1) {
57
+ throw jsi::JSError(rt, "[RNScreens] `startTransition` method requires 1 argument.");
58
+ }
59
+ int stackTag = arguments[0].asNumber();
60
+ auto screenTags = startTransition_(stackTag);
61
+ jsi::Object screenTagsObject(rt);
62
+ jsi::Value topScreenTag, belowTopScreenTag, canStartTransition;
63
+ if (screenTags[0] > -1) {
64
+ topScreenTag = jsi::Value(screenTags[0]);
65
+ belowTopScreenTag = jsi::Value(screenTags[1]);
66
+ canStartTransition = jsi::Value(true);
67
+ } else {
68
+ topScreenTag = jsi::Value(-1);
69
+ belowTopScreenTag = jsi::Value(-1);
70
+ canStartTransition = jsi::Value(false);
71
+ }
72
+ screenTagsObject.setProperty(rt, "topScreenTag", topScreenTag);
73
+ screenTagsObject.setProperty(rt, "belowTopScreenTag", belowTopScreenTag);
74
+ screenTagsObject.setProperty(rt, "canStartTransition", canStartTransition);
75
+ return screenTagsObject;
76
+ }
77
+
78
+ JSI_HOST_FUNCTION(RNScreensTurboModule::updateTransition) {
79
+ if (count < 2) {
80
+ throw jsi::JSError(rt, "[RNScreens] `updateTransition` requires 2 arguments.");
81
+ }
82
+ int stackTag = arguments[0].asNumber();
83
+ double progress = arguments[1].asNumber();
84
+ updateTransition_(stackTag, progress);
85
+ return jsi::Value::undefined();
86
+ }
87
+
88
+ JSI_HOST_FUNCTION(RNScreensTurboModule::finishTransition) {
89
+ if (count < 2) {
90
+ throw jsi::JSError(rt, "[RNScreens] `finishTransition` requires 2 arguments.");
91
+ }
92
+ int stackTag = arguments[0].asNumber();
93
+ bool canceled = arguments[1].getBool();
94
+ finishTransition_(stackTag, canceled);
95
+ return jsi::Value::undefined();
96
+ }
97
+
98
+ JSI_HOST_FUNCTION(RNScreensTurboModule::disableSwipeBackForTopScreen) {
99
+ if (count < 1) {
100
+ throw jsi::JSError(rt, "[RNScreens] `startTransition` method requires 1 argument.");
101
+ }
102
+ int stackTag = arguments[0].asNumber();
103
+ disableSwipeBackForTopScreen_(stackTag);
104
+ return jsi::Value::undefined();
105
+ }
106
+
107
+ }
@@ -0,0 +1,43 @@
1
+ #include <array>
2
+ #include <jsi/jsi.h>
3
+
4
+ #define JSI_HOST_FUNCTION(NAME) \
5
+ jsi::Value NAME( \
6
+ jsi::Runtime &rt, \
7
+ const jsi::Value &thisValue, \
8
+ const jsi::Value *arguments, \
9
+ size_t count \
10
+ )
11
+
12
+ using namespace facebook;
13
+
14
+ namespace RNScreens {
15
+
16
+ class RNScreensTurboModule : public jsi::HostObject {
17
+
18
+ static std::function<std::array<int, 2>(int)> startTransition_;
19
+ static std::function<void(int, double)> updateTransition_;
20
+ static std::function<void(int, bool)> finishTransition_;
21
+ static std::function<void(int)> disableSwipeBackForTopScreen_;
22
+
23
+ public:
24
+ static const char MODULE_NAME[];
25
+
26
+ RNScreensTurboModule(
27
+ std::function<std::array<int, 2>(int)> startTransition,
28
+ std::function<void(int, double)> updateTransition,
29
+ std::function<void(int, bool)> finishTransition,
30
+ std::function<void(int)> disableSwipeBackForTopScreen
31
+ );
32
+ ~RNScreensTurboModule() override;
33
+ jsi::Value get(jsi::Runtime& rt, const jsi::PropNameID& name) override;
34
+ void set(jsi::Runtime&, const jsi::PropNameID&, const jsi::Value&) override;
35
+ std::vector<jsi::PropNameID> getPropertyNames(jsi::Runtime& rt) override;
36
+ static JSI_HOST_FUNCTION(startTransition);
37
+ static JSI_HOST_FUNCTION(updateTransition);
38
+ static JSI_HOST_FUNCTION(finishTransition);
39
+ static JSI_HOST_FUNCTION(disableSwipeBackForTopScreen);
40
+
41
+ };
42
+
43
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "main": "../lib/commonjs/gesture-handler/index",
3
+ "module": "../lib/module/gesture-handler/index",
4
+ "react-native": "../src/gesture-handler/index",
5
+ "types": "../lib/typescript/gesture-handler/index"
6
+ }
package/ios/RNSConvert.h CHANGED
@@ -26,8 +26,10 @@ namespace react = facebook::react;
26
26
  + (NSDictionary *)gestureResponseDistanceDictFromCppStruct:
27
27
  (const react::RNSScreenGestureResponseDistanceStruct &)gestureResponseDistance;
28
28
 
29
+ #if !TARGET_OS_VISION
29
30
  + (UITextAutocapitalizationType)UITextAutocapitalizationTypeFromCppEquivalent:
30
31
  (react::RNSSearchBarAutoCapitalize)autoCapitalize;
32
+ #endif
31
33
 
32
34
  + (RNSSearchBarPlacement)RNSScreenSearchBarPlacementFromCppEquivalent:(react::RNSSearchBarPlacement)placement;
33
35
 
package/ios/RNSConvert.mm CHANGED
@@ -27,12 +27,13 @@
27
27
  + (RNSScreenStackAnimation)RNSScreenStackAnimationFromCppEquivalent:(react::RNSScreenStackAnimation)stackAnimation
28
28
  {
29
29
  switch (stackAnimation) {
30
- // these four are intentionally grouped
30
+ // these three are intentionally grouped
31
31
  case react::RNSScreenStackAnimation::Slide_from_right:
32
- case react::RNSScreenStackAnimation::Slide_from_left:
33
32
  case react::RNSScreenStackAnimation::Ios:
34
33
  case react::RNSScreenStackAnimation::Default:
35
34
  return RNSScreenStackAnimationDefault;
35
+ case react::RNSScreenStackAnimation::Slide_from_left:
36
+ return RNSScreenStackAnimationSlideFromLeft;
36
37
  case react::RNSScreenStackAnimation::Flip:
37
38
  return RNSScreenStackAnimationFlip;
38
39
  case react::RNSScreenStackAnimation::Simple_push:
@@ -123,6 +124,7 @@
123
124
  };
124
125
  }
125
126
 
127
+ #if !TARGET_OS_VISION
126
128
  + (UITextAutocapitalizationType)UITextAutocapitalizationTypeFromCppEquivalent:
127
129
  (react::RNSSearchBarAutoCapitalize)autoCapitalize
128
130
  {
@@ -137,6 +139,7 @@
137
139
  return UITextAutocapitalizationTypeNone;
138
140
  }
139
141
  }
142
+ #endif
140
143
 
141
144
  + (RNSSearchBarPlacement)RNSScreenSearchBarPlacementFromCppEquivalent:(react::RNSSearchBarPlacement)placement
142
145
  {
package/ios/RNSEnums.h CHANGED
@@ -16,6 +16,7 @@ typedef NS_ENUM(NSInteger, RNSScreenStackAnimation) {
16
16
  RNSScreenStackAnimationFlip,
17
17
  RNSScreenStackAnimationSlideFromBottom,
18
18
  RNSScreenStackAnimationSimplePush,
19
+ RNSScreenStackAnimationSlideFromLeft,
19
20
  };
20
21
 
21
22
  typedef NS_ENUM(NSInteger, RNSScreenReplaceAnimation) {
@@ -0,0 +1,8 @@
1
+ #import "RNSScreen.h"
2
+
3
+ @interface RNSModalScreen : RNSScreenView
4
+ @end
5
+
6
+ @interface RNSModalScreenManager : RNSScreenManager
7
+
8
+ @end
@@ -0,0 +1,36 @@
1
+ #import "RNSModalScreen.h"
2
+
3
+ #ifdef RCT_NEW_ARCH_ENABLED
4
+ #import <React/RCTFabricComponentsPlugins.h>
5
+ #import <rnscreens/RNSModalScreenComponentDescriptor.h>
6
+ #endif
7
+
8
+ @implementation RNSModalScreen
9
+
10
+ #ifdef RCT_NEW_ARCH_ENABLED
11
+ + (react::ComponentDescriptorProvider)componentDescriptorProvider
12
+ {
13
+ return react::concreteComponentDescriptorProvider<react::RNSModalScreenComponentDescriptor>();
14
+ }
15
+ #endif
16
+ @end
17
+
18
+ #ifdef RCT_NEW_ARCH_ENABLED
19
+ Class<RCTComponentViewProtocol> RNSModalScreenCls(void)
20
+ {
21
+ return RNSModalScreen.class;
22
+ }
23
+ #endif
24
+
25
+ @implementation RNSModalScreenManager
26
+
27
+ RCT_EXPORT_MODULE()
28
+
29
+ #ifdef RCT_NEW_ARCH_ENABLED
30
+ #else
31
+ - (UIView *)view
32
+ {
33
+ return [[RNSModalScreen alloc] initWithBridge:self.bridge];
34
+ }
35
+ #endif // RCT_NEW_ARCH_ENABLED
36
+ @end
@@ -0,0 +1,19 @@
1
+
2
+ #ifdef RCT_NEW_ARCH_ENABLED
3
+ #import <rnscreens/rnscreens.h>
4
+ #else
5
+ #import <React/RCTBridge.h>
6
+ #endif
7
+
8
+ NS_ASSUME_NONNULL_BEGIN
9
+
10
+ @interface RNSModule : NSObject
11
+ #ifdef RCT_NEW_ARCH_ENABLED
12
+ <NativeScreensModuleSpec>
13
+ #else
14
+ <RCTBridgeModule>
15
+ #endif
16
+
17
+ @end
18
+
19
+ NS_ASSUME_NONNULL_END