@amazon-devices/react-native-screens 2.0.1758683737 → 3.0.9000000000

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 (673) hide show
  1. package/README.md +57 -18
  2. package/RNScreens.podspec +12 -30
  3. package/SystemBundles/31d5b6b69618249f6233b73a1de7c4d890c86be7ccb031ce7cf2dcc41783f9f7.bundle +45301 -0
  4. package/SystemBundles/31d5b6b69618249f6233b73a1de7c4d890c86be7ccb031ce7cf2dcc41783f9f7.map +13711 -0
  5. package/SystemModules/amzn__react-native-screens-3.modules.txt +158 -0
  6. package/SystemModules/amzn__react-native-screens-3.private.modules.txt +377 -0
  7. package/SystemModules/keplerscript-system-bundle-config.json +4 -4
  8. package/THIRD_PARTY_NOTICES.txt +1 -684
  9. package/android/CMakeLists.txt +80 -0
  10. package/android/build.gradle +96 -17
  11. package/android/src/fabric/java/com/swmansion/rnscreens/FabricEnabledHeaderConfigViewGroup.kt +61 -0
  12. package/android/src/fabric/java/com/swmansion/rnscreens/FabricEnabledViewGroup.kt +38 -25
  13. package/android/src/fabric/java/com/swmansion/rnscreens/NativeProxy.kt +53 -0
  14. package/android/src/main/cpp/NativeProxy.cpp +51 -0
  15. package/android/src/main/cpp/NativeProxy.h +35 -0
  16. package/android/src/main/cpp/OnLoad.cpp +8 -0
  17. package/android/src/main/cpp/jni-adapter.cpp +106 -0
  18. package/android/src/main/java/com/swmansion/rnscreens/CustomSearchView.kt +20 -10
  19. package/android/src/main/java/com/swmansion/rnscreens/CustomToolbar.kt +69 -1
  20. package/android/src/main/java/com/swmansion/rnscreens/FragmentBackPressOverrider.kt +8 -8
  21. package/android/src/main/java/com/swmansion/rnscreens/InsetsObserverProxy.kt +104 -0
  22. package/android/src/main/java/com/swmansion/rnscreens/ModalScreenViewManager.kt +12 -0
  23. package/android/src/main/java/com/swmansion/rnscreens/NativeDismissalObserver.kt +12 -0
  24. package/android/src/main/java/com/swmansion/rnscreens/RNScreensPackage.kt +65 -7
  25. package/android/src/main/java/com/swmansion/rnscreens/Screen.kt +327 -84
  26. package/android/src/main/java/com/swmansion/rnscreens/ScreenContainer.kt +122 -72
  27. package/android/src/main/java/com/swmansion/rnscreens/ScreenContainerViewManager.kt +27 -4
  28. package/android/src/main/java/com/swmansion/rnscreens/ScreenContentWrapper.kt +38 -0
  29. package/android/src/main/java/com/swmansion/rnscreens/ScreenContentWrapperManager.kt +25 -0
  30. package/android/src/main/java/com/swmansion/rnscreens/ScreenEventDispatcher.kt +10 -2
  31. package/android/src/main/java/com/swmansion/rnscreens/ScreenFooter.kt +299 -0
  32. package/android/src/main/java/com/swmansion/rnscreens/ScreenFooterManager.kt +25 -0
  33. package/android/src/main/java/com/swmansion/rnscreens/ScreenFragment.kt +91 -67
  34. package/android/src/main/java/com/swmansion/rnscreens/ScreenFragmentWrapper.kt +12 -1
  35. package/android/src/main/java/com/swmansion/rnscreens/ScreenModalFragment.kt +281 -0
  36. package/android/src/main/java/com/swmansion/rnscreens/ScreenStack.kt +184 -81
  37. package/android/src/main/java/com/swmansion/rnscreens/ScreenStackFragment.kt +467 -80
  38. package/android/src/main/java/com/swmansion/rnscreens/ScreenStackFragmentWrapper.kt +8 -1
  39. package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderConfig.kt +156 -124
  40. package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderConfigShadowNode.kt +25 -0
  41. package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderConfigViewManager.kt +159 -39
  42. package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderSubview.kt +24 -9
  43. package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderSubviewManager.kt +19 -13
  44. package/android/src/main/java/com/swmansion/rnscreens/ScreenStackViewManager.kt +31 -28
  45. package/android/src/main/java/com/swmansion/rnscreens/ScreenViewManager.kt +276 -71
  46. package/android/src/main/java/com/swmansion/rnscreens/ScreenWindowTraits.kt +124 -64
  47. package/android/src/main/java/com/swmansion/rnscreens/ScreensModule.kt +127 -0
  48. package/android/src/main/java/com/swmansion/rnscreens/ScreensShadowNode.kt +4 -2
  49. package/android/src/main/java/com/swmansion/rnscreens/SearchBarManager.kt +160 -53
  50. package/android/src/main/java/com/swmansion/rnscreens/SearchBarView.kt +57 -32
  51. package/android/src/main/java/com/swmansion/rnscreens/SearchViewFormatter.kt +15 -10
  52. package/android/src/main/java/com/swmansion/rnscreens/bottomsheet/BottomSheetBehaviorExt.kt +42 -0
  53. package/android/src/main/java/com/swmansion/rnscreens/bottomsheet/BottomSheetDialogRootView.kt +104 -0
  54. package/android/src/main/java/com/swmansion/rnscreens/bottomsheet/BottomSheetDialogScreen.kt +26 -0
  55. package/android/src/main/java/com/swmansion/rnscreens/bottomsheet/DimmingFragment.kt +493 -0
  56. package/android/src/main/java/com/swmansion/rnscreens/bottomsheet/DimmingView.kt +66 -0
  57. package/android/src/main/java/com/swmansion/rnscreens/bottomsheet/GestureTransparentViewGroup.kt +24 -0
  58. package/android/src/main/java/com/swmansion/rnscreens/bottomsheet/SheetUtils.kt +135 -0
  59. package/android/src/main/java/com/swmansion/rnscreens/events/HeaderAttachedEvent.kt +7 -8
  60. package/android/src/main/java/com/swmansion/rnscreens/events/HeaderBackButtonClickedEvent.kt +8 -9
  61. package/android/src/main/java/com/swmansion/rnscreens/events/HeaderDetachedEvent.kt +7 -8
  62. package/android/src/main/java/com/swmansion/rnscreens/events/HeaderHeightChangeEvent.kt +9 -10
  63. package/android/src/main/java/com/swmansion/rnscreens/events/ScreenAppearEvent.kt +4 -1
  64. package/android/src/main/java/com/swmansion/rnscreens/events/ScreenDisappearEvent.kt +4 -1
  65. package/android/src/main/java/com/swmansion/rnscreens/events/ScreenDismissedEvent.kt +8 -4
  66. package/android/src/main/java/com/swmansion/rnscreens/events/ScreenTransitionProgressEvent.kt +13 -16
  67. package/android/src/main/java/com/swmansion/rnscreens/events/ScreenWillAppearEvent.kt +4 -1
  68. package/android/src/main/java/com/swmansion/rnscreens/events/ScreenWillDisappearEvent.kt +4 -1
  69. package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarBlurEvent.kt +8 -9
  70. package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarChangeTextEvent.kt +8 -11
  71. package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarCloseEvent.kt +7 -8
  72. package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarFocusEvent.kt +8 -9
  73. package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarOpenEvent.kt +7 -8
  74. package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarSearchButtonPressEvent.kt +12 -11
  75. package/android/src/main/java/com/swmansion/rnscreens/events/SheetDetentChangedEvent.kt +27 -0
  76. package/android/src/main/java/com/swmansion/rnscreens/events/StackFinishTransitioningEvent.kt +4 -1
  77. package/android/src/main/java/com/swmansion/rnscreens/ext/NumericExt.kt +12 -0
  78. package/android/src/main/java/com/swmansion/rnscreens/ext/ViewExt.kt +32 -0
  79. package/android/src/main/java/com/swmansion/rnscreens/utils/DeviceUtils.kt +1 -5
  80. package/android/src/main/java/com/swmansion/rnscreens/utils/PaddingBundle.kt +8 -0
  81. package/android/src/main/java/com/swmansion/rnscreens/utils/ScreenDummyLayoutHelper.kt +282 -0
  82. package/android/src/main/jni/CMakeLists.txt +35 -23
  83. package/android/src/main/jni/rnscreens.h +3 -0
  84. package/android/src/main/res/base/anim/rns_ios_from_left_background_close.xml +5 -0
  85. package/android/src/main/res/base/anim/rns_ios_from_left_background_open.xml +5 -0
  86. package/android/src/main/res/base/anim/rns_ios_from_left_foreground_close.xml +6 -0
  87. package/android/src/main/res/base/anim/rns_ios_from_left_foreground_open.xml +6 -0
  88. package/android/src/main/res/base/anim/rns_ios_from_right_background_close.xml +5 -0
  89. package/android/src/main/res/base/anim/rns_ios_from_right_background_open.xml +5 -0
  90. package/android/src/main/res/base/anim/rns_ios_from_right_foreground_close.xml +6 -0
  91. package/android/src/main/res/base/anim/rns_ios_from_right_foreground_open.xml +6 -0
  92. package/android/src/main/res/base/drawable/rns_rounder_top_corners_shape.xml +8 -0
  93. package/android/src/main/res/v33/anim-v33/rns_default_enter_in.xml +0 -1
  94. package/android/src/main/res/v33/anim-v33/rns_default_enter_out.xml +2 -2
  95. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenContainerManagerDelegate.java +25 -0
  96. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenContainerManagerInterface.java +16 -0
  97. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenContentWrapperManagerDelegate.java +25 -0
  98. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenContentWrapperManagerInterface.java +16 -0
  99. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenFooterManagerDelegate.java +25 -0
  100. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenFooterManagerInterface.java +16 -0
  101. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenManagerDelegate.java +16 -3
  102. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenManagerInterface.java +7 -2
  103. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenStackHeaderConfigManagerDelegate.java +6 -0
  104. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenStackHeaderConfigManagerInterface.java +2 -0
  105. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSSearchBarManagerDelegate.java +99 -0
  106. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSSearchBarManagerInterface.java +37 -0
  107. package/android/src/paper/java/com/swmansion/rnscreens/FabricEnabledHeaderConfigViewGroup.kt +39 -0
  108. package/android/src/paper/java/com/swmansion/rnscreens/FabricEnabledViewGroup.kt +11 -2
  109. package/android/src/paper/java/com/swmansion/rnscreens/NativeProxy.kt +19 -0
  110. package/android/src/paper/java/com/swmansion/rnscreens/NativeScreensModuleSpec.java +36 -0
  111. package/common/cpp/react/renderer/components/rnscreens/FrameCorrectionModes.h +51 -0
  112. package/common/cpp/react/renderer/components/rnscreens/RNSModalScreenComponentDescriptor.h +40 -0
  113. package/common/cpp/react/renderer/components/rnscreens/RNSModalScreenShadowNode.cpp +16 -0
  114. package/common/cpp/react/renderer/components/rnscreens/RNSModalScreenShadowNode.h +32 -0
  115. package/common/cpp/react/renderer/components/rnscreens/RNSScreenComponentDescriptor.h +55 -12
  116. package/common/cpp/react/renderer/components/rnscreens/RNSScreenShadowNode.cpp +157 -0
  117. package/common/cpp/react/renderer/components/rnscreens/RNSScreenShadowNode.h +31 -11
  118. package/common/cpp/react/renderer/components/rnscreens/RNSScreenStackHeaderConfigComponentDescriptor.h +49 -0
  119. package/common/cpp/react/renderer/components/rnscreens/RNSScreenStackHeaderConfigShadowNode.cpp +22 -0
  120. package/common/cpp/react/renderer/components/rnscreens/RNSScreenStackHeaderConfigShadowNode.h +40 -0
  121. package/common/cpp/react/renderer/components/rnscreens/RNSScreenStackHeaderConfigState.cpp +34 -0
  122. package/common/cpp/react/renderer/components/rnscreens/RNSScreenStackHeaderConfigState.h +57 -0
  123. package/common/cpp/react/renderer/components/rnscreens/RNSScreenStackHeaderSubviewComponentDescriptor.h +27 -0
  124. package/common/cpp/react/renderer/components/rnscreens/RNSScreenStackHeaderSubviewShadowNode.cpp +8 -0
  125. package/common/cpp/react/renderer/components/rnscreens/RNSScreenStackHeaderSubviewShadowNode.h +31 -0
  126. package/common/cpp/react/renderer/components/rnscreens/RNSScreenStackHeaderSubviewState.cpp +15 -0
  127. package/common/cpp/react/renderer/components/rnscreens/RNSScreenStackHeaderSubviewState.h +39 -0
  128. package/common/cpp/react/renderer/components/rnscreens/RNSScreenState.cpp +23 -2
  129. package/common/cpp/react/renderer/components/rnscreens/RNSScreenState.h +33 -8
  130. package/common/cpp/react/renderer/components/rnscreens/utils/RectUtil.h +36 -0
  131. package/cpp/RNSScreenRemovalListener.cpp +25 -0
  132. package/cpp/RNSScreenRemovalListener.h +20 -0
  133. package/cpp/RNScreensTurboModule.cpp +115 -0
  134. package/cpp/RNScreensTurboModule.h +40 -0
  135. package/gesture-handler/package.json +6 -0
  136. package/ios/RNSConvert.h +24 -4
  137. package/ios/RNSConvert.mm +180 -55
  138. package/ios/RNSEnums.h +48 -0
  139. package/ios/RNSFullWindowOverlay.mm +12 -2
  140. package/ios/RNSModalScreen.h +8 -0
  141. package/ios/RNSModalScreen.mm +65 -0
  142. package/ios/RNSModule.h +19 -0
  143. package/ios/RNSModule.mm +173 -0
  144. package/ios/RNSPercentDrivenInteractiveTransition.h +12 -0
  145. package/ios/RNSPercentDrivenInteractiveTransition.mm +69 -0
  146. package/ios/RNSScreen.h +24 -5
  147. package/ios/RNSScreen.mm +652 -173
  148. package/ios/RNSScreenContainer.mm +12 -1
  149. package/ios/RNSScreenContentWrapper.h +44 -0
  150. package/ios/RNSScreenContentWrapper.mm +67 -0
  151. package/ios/RNSScreenFooter.h +30 -0
  152. package/ios/RNSScreenFooter.mm +142 -0
  153. package/ios/RNSScreenNavigationContainer.mm +7 -0
  154. package/ios/RNSScreenStack.h +6 -0
  155. package/ios/RNSScreenStack.mm +333 -109
  156. package/ios/RNSScreenStackAnimator.h +15 -1
  157. package/ios/RNSScreenStackAnimator.mm +380 -115
  158. package/ios/RNSScreenStackHeaderConfig.h +74 -6
  159. package/ios/RNSScreenStackHeaderConfig.mm +338 -69
  160. package/ios/RNSScreenStackHeaderSubview.h +0 -7
  161. package/ios/RNSScreenStackHeaderSubview.mm +61 -24
  162. package/ios/RNSScreenWindowTraits.h +1 -1
  163. package/ios/RNSScreenWindowTraits.mm +24 -50
  164. package/ios/RNSSearchBar.h +5 -5
  165. package/ios/RNSSearchBar.mm +42 -11
  166. package/ios/events/RNSHeaderHeightChangeEvent.h +0 -1
  167. package/ios/events/RNSHeaderHeightChangeEvent.mm +15 -0
  168. package/ios/events/RNSScreenViewEvent.h +0 -1
  169. package/ios/utils/RCTSurfaceTouchHandler+RNSUtility.h +15 -0
  170. package/ios/utils/RCTSurfaceTouchHandler+RNSUtility.mm +14 -0
  171. package/ios/utils/RCTTouchHandler+RNSUtility.h +15 -0
  172. package/ios/utils/RCTTouchHandler+RNSUtility.mm +15 -0
  173. package/ios/utils/RNSDefines.h +7 -0
  174. package/ios/utils/RNSUIBarButtonItem.h +2 -0
  175. package/ios/utils/UINavigationBar+RNSUtility.h +37 -0
  176. package/ios/utils/UINavigationBar+RNSUtility.mm +44 -0
  177. package/ios/utils/UIView+RNSUtility.h +23 -0
  178. package/ios/utils/UIView+RNSUtility.mm +54 -0
  179. package/kepler-compatibility.json +2 -4
  180. package/lib/commonjs/TransitionProgressContext.js +1 -0
  181. package/lib/commonjs/TransitionProgressContext.js.map +1 -1
  182. package/lib/commonjs/components/DebugContainer.js +39 -0
  183. package/lib/commonjs/components/DebugContainer.js.map +1 -0
  184. package/lib/commonjs/components/DebugContainer.web.js +15 -0
  185. package/lib/commonjs/components/DebugContainer.web.js.map +1 -0
  186. package/lib/commonjs/components/FullWindowOverlay.js +31 -0
  187. package/lib/commonjs/components/FullWindowOverlay.js.map +1 -0
  188. package/lib/commonjs/components/FullWindowOverlay.web.js +9 -0
  189. package/lib/commonjs/components/FullWindowOverlay.web.js.map +1 -0
  190. package/lib/commonjs/components/Screen.js +286 -0
  191. package/lib/commonjs/components/Screen.js.map +1 -0
  192. package/lib/commonjs/components/Screen.web.js +47 -0
  193. package/lib/commonjs/components/Screen.web.js.map +1 -0
  194. package/lib/commonjs/components/ScreenContainer.js +32 -0
  195. package/lib/commonjs/components/ScreenContainer.js.map +1 -0
  196. package/lib/commonjs/components/ScreenContainer.web.js +10 -0
  197. package/lib/commonjs/components/ScreenContainer.web.js.map +1 -0
  198. package/lib/commonjs/components/ScreenContentWrapper.js +17 -0
  199. package/lib/commonjs/components/ScreenContentWrapper.js.map +1 -0
  200. package/lib/commonjs/components/ScreenContentWrapper.web.js +10 -0
  201. package/lib/commonjs/components/ScreenContentWrapper.web.js.map +1 -0
  202. package/lib/commonjs/components/ScreenFooter.js +25 -0
  203. package/lib/commonjs/components/ScreenFooter.js.map +1 -0
  204. package/lib/commonjs/components/ScreenFooter.web.js +11 -0
  205. package/lib/commonjs/components/ScreenFooter.web.js.map +1 -0
  206. package/lib/commonjs/components/ScreenStack.js +67 -0
  207. package/lib/commonjs/components/ScreenStack.js.map +1 -0
  208. package/lib/commonjs/components/ScreenStack.web.js +10 -0
  209. package/lib/commonjs/components/ScreenStack.web.js.map +1 -0
  210. package/lib/commonjs/components/ScreenStackHeaderConfig.js +90 -0
  211. package/lib/commonjs/components/ScreenStackHeaderConfig.js.map +1 -0
  212. package/lib/commonjs/components/ScreenStackHeaderConfig.web.js +27 -0
  213. package/lib/commonjs/components/ScreenStackHeaderConfig.web.js.map +1 -0
  214. package/lib/commonjs/components/ScreenStackItem.js +107 -0
  215. package/lib/commonjs/components/ScreenStackItem.js.map +1 -0
  216. package/lib/commonjs/components/SearchBar.js +63 -0
  217. package/lib/commonjs/components/SearchBar.js.map +1 -0
  218. package/lib/commonjs/components/SearchBar.web.js +10 -0
  219. package/lib/commonjs/components/SearchBar.web.js.map +1 -0
  220. package/lib/commonjs/components/helpers/DelayedFreeze.js +31 -0
  221. package/lib/commonjs/components/helpers/DelayedFreeze.js.map +1 -0
  222. package/lib/commonjs/components/helpers/usePrevious.js +15 -0
  223. package/lib/commonjs/components/helpers/usePrevious.js.map +1 -0
  224. package/lib/commonjs/contexts.js +11 -0
  225. package/lib/commonjs/contexts.js.map +1 -0
  226. package/lib/commonjs/core.js +40 -0
  227. package/lib/commonjs/core.js.map +1 -0
  228. package/lib/commonjs/fabric/FullWindowOverlayNativeComponent.js +16 -1
  229. package/lib/commonjs/fabric/FullWindowOverlayNativeComponent.js.map +1 -1
  230. package/lib/commonjs/fabric/ModalScreenNativeComponent.js +14 -0
  231. package/lib/commonjs/fabric/ModalScreenNativeComponent.js.map +1 -0
  232. package/lib/commonjs/fabric/NativeScreensModule.js +10 -0
  233. package/lib/commonjs/fabric/NativeScreensModule.js.map +1 -0
  234. package/lib/commonjs/fabric/NativeScreensModule.web.js +8 -0
  235. package/lib/commonjs/fabric/NativeScreensModule.web.js.map +1 -0
  236. package/lib/commonjs/fabric/ScreenContainerNativeComponent.js +8 -11
  237. package/lib/commonjs/fabric/ScreenContainerNativeComponent.js.map +1 -1
  238. package/lib/commonjs/fabric/ScreenContentWrapperNativeComponent.js +18 -0
  239. package/lib/commonjs/fabric/ScreenContentWrapperNativeComponent.js.map +1 -0
  240. package/lib/commonjs/fabric/ScreenFooterNativeComponent.js +10 -0
  241. package/lib/commonjs/fabric/ScreenFooterNativeComponent.js.map +1 -0
  242. package/lib/commonjs/fabric/ScreenNativeComponent.js +16 -16
  243. package/lib/commonjs/fabric/ScreenNativeComponent.js.map +1 -1
  244. package/lib/commonjs/fabric/ScreenNavigationContainerNativeComponent.js +2 -1
  245. package/lib/commonjs/fabric/ScreenNavigationContainerNativeComponent.js.map +1 -1
  246. package/lib/commonjs/fabric/ScreenStackHeaderConfigNativeComponent.js +10 -9
  247. package/lib/commonjs/fabric/ScreenStackHeaderConfigNativeComponent.js.map +1 -1
  248. package/lib/commonjs/fabric/ScreenStackHeaderSubviewNativeComponent.js +5 -2
  249. package/lib/commonjs/fabric/ScreenStackHeaderSubviewNativeComponent.js.map +1 -1
  250. package/lib/commonjs/fabric/ScreenStackNativeComponent.js +8 -11
  251. package/lib/commonjs/fabric/ScreenStackNativeComponent.js.map +1 -1
  252. package/lib/commonjs/fabric/SearchBarNativeComponent.js +4 -5
  253. package/lib/commonjs/fabric/SearchBarNativeComponent.js.map +1 -1
  254. package/lib/commonjs/gesture-handler/GestureDetectorProvider.js +19 -0
  255. package/lib/commonjs/gesture-handler/GestureDetectorProvider.js.map +1 -0
  256. package/lib/commonjs/gesture-handler/RNScreensTurboModule.js +8 -0
  257. package/lib/commonjs/gesture-handler/RNScreensTurboModule.js.map +1 -0
  258. package/lib/commonjs/gesture-handler/ScreenGestureDetector.js +201 -0
  259. package/lib/commonjs/gesture-handler/ScreenGestureDetector.js.map +1 -0
  260. package/lib/commonjs/gesture-handler/constraints.js +64 -0
  261. package/lib/commonjs/gesture-handler/constraints.js.map +1 -0
  262. package/lib/commonjs/gesture-handler/defaults.js +45 -0
  263. package/lib/commonjs/gesture-handler/defaults.js.map +1 -0
  264. package/lib/commonjs/gesture-handler/fabricUtils.js +66 -0
  265. package/lib/commonjs/gesture-handler/fabricUtils.js.map +1 -0
  266. package/lib/commonjs/gesture-handler/fabricUtils.web.js +17 -0
  267. package/lib/commonjs/gesture-handler/fabricUtils.web.js.map +1 -0
  268. package/lib/commonjs/gesture-handler/index.js +14 -0
  269. package/lib/commonjs/gesture-handler/index.js.map +1 -0
  270. package/lib/commonjs/index.js +157 -93
  271. package/lib/commonjs/index.js.map +1 -1
  272. package/lib/commonjs/native-stack/contexts/GHContext.js +12 -0
  273. package/lib/commonjs/native-stack/contexts/GHContext.js.map +1 -0
  274. package/lib/commonjs/native-stack/index.js.map +1 -1
  275. package/lib/commonjs/native-stack/navigators/createNativeStackNavigator.js +21 -20
  276. package/lib/commonjs/native-stack/navigators/createNativeStackNavigator.js.map +1 -1
  277. package/lib/commonjs/native-stack/types.js.map +1 -1
  278. package/lib/commonjs/native-stack/utils/AnimatedHeaderHeightContext.js.map +1 -1
  279. package/lib/commonjs/native-stack/utils/HeaderHeightContext.js.map +1 -1
  280. package/lib/commonjs/native-stack/utils/SafeAreaProviderCompat.js.map +1 -1
  281. package/lib/commonjs/native-stack/utils/getDefaultHeaderHeight.js.map +1 -1
  282. package/lib/commonjs/native-stack/utils/getStatusBarHeight.js +22 -0
  283. package/lib/commonjs/native-stack/utils/getStatusBarHeight.js.map +1 -0
  284. package/lib/commonjs/native-stack/utils/useAnimatedHeaderHeight.js.map +1 -1
  285. package/lib/commonjs/native-stack/utils/useBackPressSubscription.js +2 -4
  286. package/lib/commonjs/native-stack/utils/useBackPressSubscription.js.map +1 -1
  287. package/lib/commonjs/native-stack/utils/useHeaderHeight.js.map +1 -1
  288. package/lib/commonjs/native-stack/views/FontProcessor.js +1 -3
  289. package/lib/commonjs/native-stack/views/FontProcessor.js.map +1 -1
  290. package/lib/commonjs/native-stack/views/FooterComponent.js +17 -0
  291. package/lib/commonjs/native-stack/views/FooterComponent.js.map +1 -0
  292. package/lib/commonjs/native-stack/views/HeaderConfig.js +21 -13
  293. package/lib/commonjs/native-stack/views/HeaderConfig.js.map +1 -1
  294. package/lib/commonjs/native-stack/views/NativeStackView.js +118 -52
  295. package/lib/commonjs/native-stack/views/NativeStackView.js.map +1 -1
  296. package/lib/commonjs/reanimated/ReanimatedHeaderHeightContext.js.map +1 -1
  297. package/lib/commonjs/reanimated/ReanimatedNativeStackScreen.js +15 -21
  298. package/lib/commonjs/reanimated/ReanimatedNativeStackScreen.js.map +1 -1
  299. package/lib/commonjs/reanimated/ReanimatedScreen.js +2 -2
  300. package/lib/commonjs/reanimated/ReanimatedScreen.js.map +1 -1
  301. package/lib/commonjs/reanimated/ReanimatedScreenProvider.js +8 -16
  302. package/lib/commonjs/reanimated/ReanimatedScreenProvider.js.map +1 -1
  303. package/lib/commonjs/reanimated/ReanimatedTransitionProgressContext.js.map +1 -1
  304. package/lib/commonjs/reanimated/index.js.map +1 -1
  305. package/lib/commonjs/reanimated/useReanimatedHeaderHeight.js +2 -2
  306. package/lib/commonjs/reanimated/useReanimatedHeaderHeight.js.map +1 -1
  307. package/lib/commonjs/reanimated/useReanimatedTransitionProgress.js.map +1 -1
  308. package/lib/commonjs/types.js.map +1 -1
  309. package/lib/commonjs/useTransitionProgress.js.map +1 -1
  310. package/lib/commonjs/utils.js +28 -6
  311. package/lib/commonjs/utils.js.map +1 -1
  312. package/lib/module/TransitionProgressContext.js +2 -0
  313. package/lib/module/TransitionProgressContext.js.map +1 -1
  314. package/lib/module/components/DebugContainer.js +30 -0
  315. package/lib/module/components/DebugContainer.js.map +1 -0
  316. package/lib/module/components/DebugContainer.web.js +6 -0
  317. package/lib/module/components/DebugContainer.web.js.map +1 -0
  318. package/lib/module/components/FullWindowOverlay.js +24 -0
  319. package/lib/module/components/FullWindowOverlay.js.map +1 -0
  320. package/lib/module/components/FullWindowOverlay.web.js +3 -0
  321. package/lib/module/components/FullWindowOverlay.web.js.map +1 -0
  322. package/lib/module/components/Screen.js +282 -0
  323. package/lib/module/components/Screen.js.map +1 -0
  324. package/lib/module/components/Screen.web.js +40 -0
  325. package/lib/module/components/Screen.web.js.map +1 -0
  326. package/lib/module/components/ScreenContainer.js +26 -0
  327. package/lib/module/components/ScreenContainer.js.map +1 -0
  328. package/lib/module/components/ScreenContainer.web.js +4 -0
  329. package/lib/module/components/ScreenContainer.web.js.map +1 -0
  330. package/lib/module/components/ScreenContentWrapper.js +10 -0
  331. package/lib/module/components/ScreenContentWrapper.js.map +1 -0
  332. package/lib/module/components/ScreenContentWrapper.web.js +4 -0
  333. package/lib/module/components/ScreenContentWrapper.web.js.map +1 -0
  334. package/lib/module/components/ScreenFooter.js +18 -0
  335. package/lib/module/components/ScreenFooter.js.map +1 -0
  336. package/lib/module/components/ScreenFooter.web.js +6 -0
  337. package/lib/module/components/ScreenFooter.web.js.map +1 -0
  338. package/lib/module/components/ScreenStack.js +63 -0
  339. package/lib/module/components/ScreenStack.js.map +1 -0
  340. package/lib/module/components/ScreenStack.web.js +4 -0
  341. package/lib/module/components/ScreenStack.web.js.map +1 -0
  342. package/lib/module/components/ScreenStackHeaderConfig.js +81 -0
  343. package/lib/module/components/ScreenStackHeaderConfig.js.map +1 -0
  344. package/lib/module/components/ScreenStackHeaderConfig.web.js +14 -0
  345. package/lib/module/components/ScreenStackHeaderConfig.web.js.map +1 -0
  346. package/lib/module/components/ScreenStackItem.js +98 -0
  347. package/lib/module/components/ScreenStackItem.js.map +1 -0
  348. package/lib/module/components/SearchBar.js +57 -0
  349. package/lib/module/components/SearchBar.js.map +1 -0
  350. package/lib/module/components/SearchBar.web.js +4 -0
  351. package/lib/module/components/SearchBar.web.js.map +1 -0
  352. package/lib/module/components/helpers/DelayedFreeze.js +24 -0
  353. package/lib/module/components/helpers/DelayedFreeze.js.map +1 -0
  354. package/lib/module/components/helpers/usePrevious.js +9 -0
  355. package/lib/module/components/helpers/usePrevious.js.map +1 -0
  356. package/lib/module/contexts.js +4 -0
  357. package/lib/module/contexts.js.map +1 -0
  358. package/lib/module/core.js +31 -0
  359. package/lib/module/core.js.map +1 -0
  360. package/lib/module/fabric/FullWindowOverlayNativeComponent.js +16 -0
  361. package/lib/module/fabric/FullWindowOverlayNativeComponent.js.map +1 -1
  362. package/lib/module/fabric/ModalScreenNativeComponent.js +10 -0
  363. package/lib/module/fabric/ModalScreenNativeComponent.js.map +1 -0
  364. package/lib/module/fabric/NativeScreensModule.js +5 -0
  365. package/lib/module/fabric/NativeScreensModule.js.map +1 -0
  366. package/lib/module/fabric/NativeScreensModule.web.js +2 -0
  367. package/lib/module/fabric/NativeScreensModule.web.js.map +1 -0
  368. package/lib/module/fabric/ScreenContainerNativeComponent.js +3 -4
  369. package/lib/module/fabric/ScreenContainerNativeComponent.js.map +1 -1
  370. package/lib/module/fabric/ScreenContentWrapperNativeComponent.js +10 -0
  371. package/lib/module/fabric/ScreenContentWrapperNativeComponent.js.map +1 -0
  372. package/lib/module/fabric/ScreenFooterNativeComponent.js +3 -0
  373. package/lib/module/fabric/ScreenFooterNativeComponent.js.map +1 -0
  374. package/lib/module/fabric/ScreenNativeComponent.js +11 -8
  375. package/lib/module/fabric/ScreenNativeComponent.js.map +1 -1
  376. package/lib/module/fabric/ScreenNavigationContainerNativeComponent.js +2 -0
  377. package/lib/module/fabric/ScreenNavigationContainerNativeComponent.js.map +1 -1
  378. package/lib/module/fabric/ScreenStackHeaderConfigNativeComponent.js +8 -2
  379. package/lib/module/fabric/ScreenStackHeaderConfigNativeComponent.js.map +1 -1
  380. package/lib/module/fabric/ScreenStackHeaderSubviewNativeComponent.js +5 -1
  381. package/lib/module/fabric/ScreenStackHeaderSubviewNativeComponent.js.map +1 -1
  382. package/lib/module/fabric/ScreenStackNativeComponent.js +3 -3
  383. package/lib/module/fabric/ScreenStackNativeComponent.js.map +1 -1
  384. package/lib/module/fabric/SearchBarNativeComponent.js +3 -1
  385. package/lib/module/fabric/SearchBarNativeComponent.js.map +1 -1
  386. package/lib/module/gesture-handler/GestureDetectorProvider.js +12 -0
  387. package/lib/module/gesture-handler/GestureDetectorProvider.js.map +1 -0
  388. package/lib/module/gesture-handler/RNScreensTurboModule.js +2 -0
  389. package/lib/module/gesture-handler/RNScreensTurboModule.js.map +1 -0
  390. package/lib/module/gesture-handler/ScreenGestureDetector.js +193 -0
  391. package/lib/module/gesture-handler/ScreenGestureDetector.js.map +1 -0
  392. package/lib/module/gesture-handler/constraints.js +56 -0
  393. package/lib/module/gesture-handler/constraints.js.map +1 -0
  394. package/lib/module/gesture-handler/defaults.js +39 -0
  395. package/lib/module/gesture-handler/defaults.js.map +1 -0
  396. package/lib/module/gesture-handler/fabricUtils.js +61 -0
  397. package/lib/module/gesture-handler/fabricUtils.js.map +1 -0
  398. package/lib/module/gesture-handler/fabricUtils.web.js +10 -0
  399. package/lib/module/gesture-handler/fabricUtils.web.js.map +1 -0
  400. package/lib/module/gesture-handler/index.js +5 -0
  401. package/lib/module/gesture-handler/index.js.map +1 -0
  402. package/lib/module/index.js +29 -63
  403. package/lib/module/index.js.map +1 -1
  404. package/lib/module/native-stack/contexts/GHContext.js +6 -0
  405. package/lib/module/native-stack/contexts/GHContext.js.map +1 -0
  406. package/lib/module/native-stack/index.js.map +1 -1
  407. package/lib/module/native-stack/navigators/createNativeStackNavigator.js +21 -20
  408. package/lib/module/native-stack/navigators/createNativeStackNavigator.js.map +1 -1
  409. package/lib/module/native-stack/types.js.map +1 -1
  410. package/lib/module/native-stack/utils/AnimatedHeaderHeightContext.js.map +1 -1
  411. package/lib/module/native-stack/utils/HeaderHeightContext.js.map +1 -1
  412. package/lib/module/native-stack/utils/SafeAreaProviderCompat.js.map +1 -1
  413. package/lib/module/native-stack/utils/getDefaultHeaderHeight.js.map +1 -1
  414. package/lib/module/native-stack/utils/getStatusBarHeight.js +16 -0
  415. package/lib/module/native-stack/utils/getStatusBarHeight.js.map +1 -0
  416. package/lib/module/native-stack/utils/useAnimatedHeaderHeight.js.map +1 -1
  417. package/lib/module/native-stack/utils/useBackPressSubscription.js +2 -4
  418. package/lib/module/native-stack/utils/useBackPressSubscription.js.map +1 -1
  419. package/lib/module/native-stack/utils/useHeaderHeight.js.map +1 -1
  420. package/lib/module/native-stack/views/FontProcessor.js +2 -3
  421. package/lib/module/native-stack/views/FontProcessor.js.map +1 -1
  422. package/lib/module/native-stack/views/FooterComponent.js +10 -0
  423. package/lib/module/native-stack/views/FooterComponent.js.map +1 -0
  424. package/lib/module/native-stack/views/HeaderConfig.js +13 -6
  425. package/lib/module/native-stack/views/HeaderConfig.js.map +1 -1
  426. package/lib/module/native-stack/views/NativeStackView.js +114 -46
  427. package/lib/module/native-stack/views/NativeStackView.js.map +1 -1
  428. package/lib/module/reanimated/ReanimatedHeaderHeightContext.js.map +1 -1
  429. package/lib/module/reanimated/ReanimatedNativeStackScreen.js +8 -12
  430. package/lib/module/reanimated/ReanimatedNativeStackScreen.js.map +1 -1
  431. package/lib/module/reanimated/ReanimatedScreen.js +1 -2
  432. package/lib/module/reanimated/ReanimatedScreen.js.map +1 -1
  433. package/lib/module/reanimated/ReanimatedScreenProvider.js +7 -15
  434. package/lib/module/reanimated/ReanimatedScreenProvider.js.map +1 -1
  435. package/lib/module/reanimated/ReanimatedTransitionProgressContext.js.map +1 -1
  436. package/lib/module/reanimated/index.js.map +1 -1
  437. package/lib/module/reanimated/useReanimatedHeaderHeight.js +1 -1
  438. package/lib/module/reanimated/useReanimatedHeaderHeight.js.map +1 -1
  439. package/lib/module/reanimated/useReanimatedTransitionProgress.js.map +1 -1
  440. package/lib/module/types.js.map +1 -1
  441. package/lib/module/useTransitionProgress.js.map +1 -1
  442. package/lib/module/utils.js +26 -5
  443. package/lib/module/utils.js.map +1 -1
  444. package/lib/typescript/TransitionProgressContext.d.ts +2 -1
  445. package/lib/typescript/TransitionProgressContext.d.ts.map +1 -0
  446. package/lib/typescript/components/DebugContainer.d.ts +15 -0
  447. package/lib/typescript/components/DebugContainer.d.ts.map +1 -0
  448. package/lib/typescript/components/DebugContainer.web.d.ts +4 -0
  449. package/lib/typescript/components/DebugContainer.web.d.ts.map +1 -0
  450. package/lib/typescript/components/FullWindowOverlay.d.ts +6 -0
  451. package/lib/typescript/components/FullWindowOverlay.d.ts.map +1 -0
  452. package/lib/typescript/components/FullWindowOverlay.web.d.ts +6 -0
  453. package/lib/typescript/components/FullWindowOverlay.web.d.ts.map +1 -0
  454. package/lib/typescript/components/Screen.d.ts +8 -0
  455. package/lib/typescript/components/Screen.d.ts.map +1 -0
  456. package/lib/typescript/components/Screen.web.d.ts +11 -0
  457. package/lib/typescript/components/Screen.web.d.ts.map +1 -0
  458. package/lib/typescript/components/ScreenContainer.d.ts +5 -0
  459. package/lib/typescript/components/ScreenContainer.d.ts.map +1 -0
  460. package/lib/typescript/components/ScreenContainer.web.d.ts +4 -0
  461. package/lib/typescript/components/ScreenContainer.web.d.ts.map +1 -0
  462. package/lib/typescript/components/ScreenContentWrapper.d.ts +5 -0
  463. package/lib/typescript/components/ScreenContentWrapper.d.ts.map +1 -0
  464. package/lib/typescript/components/ScreenContentWrapper.web.d.ts +4 -0
  465. package/lib/typescript/components/ScreenContentWrapper.web.d.ts.map +1 -0
  466. package/lib/typescript/components/ScreenFooter.d.ts +12 -0
  467. package/lib/typescript/components/ScreenFooter.d.ts.map +1 -0
  468. package/lib/typescript/components/ScreenFooter.web.d.ts +6 -0
  469. package/lib/typescript/components/ScreenFooter.web.d.ts.map +1 -0
  470. package/lib/typescript/components/ScreenStack.d.ts +5 -0
  471. package/lib/typescript/components/ScreenStack.d.ts.map +1 -0
  472. package/lib/typescript/components/ScreenStack.web.d.ts +4 -0
  473. package/lib/typescript/components/ScreenStack.web.d.ts.map +1 -0
  474. package/lib/typescript/components/ScreenStackHeaderConfig.d.ts +13 -0
  475. package/lib/typescript/components/ScreenStackHeaderConfig.d.ts.map +1 -0
  476. package/lib/typescript/components/ScreenStackHeaderConfig.web.d.ts +13 -0
  477. package/lib/typescript/components/ScreenStackHeaderConfig.web.d.ts.map +1 -0
  478. package/lib/typescript/components/ScreenStackItem.d.ts +11 -0
  479. package/lib/typescript/components/ScreenStackItem.d.ts.map +1 -0
  480. package/lib/typescript/components/SearchBar.d.ts +5 -0
  481. package/lib/typescript/components/SearchBar.d.ts.map +1 -0
  482. package/lib/typescript/components/SearchBar.web.d.ts +4 -0
  483. package/lib/typescript/components/SearchBar.web.d.ts.map +1 -0
  484. package/lib/typescript/components/helpers/DelayedFreeze.d.ts +8 -0
  485. package/lib/typescript/components/helpers/DelayedFreeze.d.ts.map +1 -0
  486. package/lib/typescript/components/helpers/usePrevious.d.ts +2 -0
  487. package/lib/typescript/components/helpers/usePrevious.d.ts.map +1 -0
  488. package/lib/typescript/contexts.d.ts +5 -0
  489. package/lib/typescript/contexts.d.ts.map +1 -0
  490. package/lib/typescript/core.d.ts +6 -0
  491. package/lib/typescript/core.d.ts.map +1 -0
  492. package/lib/typescript/fabric/FullWindowOverlayNativeComponent.d.ts +1 -1
  493. package/lib/typescript/fabric/FullWindowOverlayNativeComponent.d.ts.map +1 -0
  494. package/lib/typescript/fabric/ModalScreenNativeComponent.d.ts +76 -0
  495. package/lib/typescript/fabric/ModalScreenNativeComponent.d.ts.map +1 -0
  496. package/lib/typescript/fabric/NativeScreensModule.d.ts +6 -0
  497. package/lib/typescript/fabric/NativeScreensModule.d.ts.map +1 -0
  498. package/lib/typescript/fabric/NativeScreensModule.web.d.ts +3 -0
  499. package/lib/typescript/fabric/NativeScreensModule.web.d.ts.map +1 -0
  500. package/lib/typescript/fabric/ScreenContainerNativeComponent.d.ts +1 -0
  501. package/lib/typescript/fabric/ScreenContainerNativeComponent.d.ts.map +1 -0
  502. package/lib/typescript/fabric/ScreenContentWrapperNativeComponent.d.ts +6 -0
  503. package/lib/typescript/fabric/ScreenContentWrapperNativeComponent.d.ts.map +1 -0
  504. package/lib/typescript/fabric/ScreenFooterNativeComponent.d.ts +7 -0
  505. package/lib/typescript/fabric/ScreenFooterNativeComponent.d.ts.map +1 -0
  506. package/lib/typescript/fabric/ScreenNativeComponent.d.ts +34 -24
  507. package/lib/typescript/fabric/ScreenNativeComponent.d.ts.map +1 -0
  508. package/lib/typescript/fabric/ScreenNavigationContainerNativeComponent.d.ts +1 -1
  509. package/lib/typescript/fabric/ScreenNavigationContainerNativeComponent.d.ts.map +1 -0
  510. package/lib/typescript/fabric/ScreenStackHeaderConfigNativeComponent.d.ts +12 -2
  511. package/lib/typescript/fabric/ScreenStackHeaderConfigNativeComponent.d.ts.map +1 -0
  512. package/lib/typescript/fabric/ScreenStackHeaderSubviewNativeComponent.d.ts +2 -2
  513. package/lib/typescript/fabric/ScreenStackHeaderSubviewNativeComponent.d.ts.map +1 -0
  514. package/lib/typescript/fabric/ScreenStackNativeComponent.d.ts +4 -2
  515. package/lib/typescript/fabric/ScreenStackNativeComponent.d.ts.map +1 -0
  516. package/lib/typescript/fabric/SearchBarNativeComponent.d.ts +17 -16
  517. package/lib/typescript/fabric/SearchBarNativeComponent.d.ts.map +1 -0
  518. package/lib/typescript/gesture-handler/GestureDetectorProvider.d.ts +5 -0
  519. package/lib/typescript/gesture-handler/GestureDetectorProvider.d.ts.map +1 -0
  520. package/lib/typescript/gesture-handler/RNScreensTurboModule.d.ts +13 -0
  521. package/lib/typescript/gesture-handler/RNScreensTurboModule.d.ts.map +1 -0
  522. package/lib/typescript/gesture-handler/ScreenGestureDetector.d.ts +5 -0
  523. package/lib/typescript/gesture-handler/ScreenGestureDetector.d.ts.map +1 -0
  524. package/lib/typescript/gesture-handler/constraints.d.ts +6 -0
  525. package/lib/typescript/gesture-handler/constraints.d.ts.map +1 -0
  526. package/lib/typescript/gesture-handler/defaults.d.ts +20 -0
  527. package/lib/typescript/gesture-handler/defaults.d.ts.map +1 -0
  528. package/lib/typescript/gesture-handler/fabricUtils.d.ts +10 -0
  529. package/lib/typescript/gesture-handler/fabricUtils.d.ts.map +1 -0
  530. package/lib/typescript/gesture-handler/fabricUtils.web.d.ts +6 -0
  531. package/lib/typescript/gesture-handler/fabricUtils.web.d.ts.map +1 -0
  532. package/lib/typescript/gesture-handler/index.d.ts +2 -0
  533. package/lib/typescript/gesture-handler/index.d.ts.map +1 -0
  534. package/lib/typescript/index.d.ts +25 -31
  535. package/lib/typescript/index.d.ts.map +1 -0
  536. package/lib/typescript/native-stack/contexts/GHContext.d.ts +4 -0
  537. package/lib/typescript/native-stack/contexts/GHContext.d.ts.map +1 -0
  538. package/lib/typescript/native-stack/index.d.ts +1 -0
  539. package/lib/typescript/native-stack/index.d.ts.map +1 -0
  540. package/lib/typescript/native-stack/navigators/createNativeStackNavigator.d.ts +4 -0
  541. package/lib/typescript/native-stack/navigators/createNativeStackNavigator.d.ts.map +1 -0
  542. package/lib/typescript/native-stack/types.d.ts +191 -33
  543. package/lib/typescript/native-stack/types.d.ts.map +1 -0
  544. package/lib/typescript/native-stack/utils/AnimatedHeaderHeightContext.d.ts +1 -0
  545. package/lib/typescript/native-stack/utils/AnimatedHeaderHeightContext.d.ts.map +1 -0
  546. package/lib/typescript/native-stack/utils/HeaderHeightContext.d.ts +1 -0
  547. package/lib/typescript/native-stack/utils/HeaderHeightContext.d.ts.map +1 -0
  548. package/lib/typescript/native-stack/utils/SafeAreaProviderCompat.d.ts +2 -1
  549. package/lib/typescript/native-stack/utils/SafeAreaProviderCompat.d.ts.map +1 -0
  550. package/lib/typescript/native-stack/utils/getDefaultHeaderHeight.d.ts +3 -2
  551. package/lib/typescript/native-stack/utils/getDefaultHeaderHeight.d.ts.map +1 -0
  552. package/lib/typescript/native-stack/utils/getStatusBarHeight.d.ts +3 -0
  553. package/lib/typescript/native-stack/utils/getStatusBarHeight.d.ts.map +1 -0
  554. package/lib/typescript/native-stack/utils/useAnimatedHeaderHeight.d.ts +2 -1
  555. package/lib/typescript/native-stack/utils/useAnimatedHeaderHeight.d.ts.map +1 -0
  556. package/lib/typescript/native-stack/utils/useBackPressSubscription.d.ts +1 -0
  557. package/lib/typescript/native-stack/utils/useBackPressSubscription.d.ts.map +1 -0
  558. package/lib/typescript/native-stack/utils/useHeaderHeight.d.ts +1 -0
  559. package/lib/typescript/native-stack/utils/useHeaderHeight.d.ts.map +1 -0
  560. package/lib/typescript/native-stack/views/FontProcessor.d.ts +1 -0
  561. package/lib/typescript/native-stack/views/FontProcessor.d.ts.map +1 -0
  562. package/lib/typescript/native-stack/views/FooterComponent.d.ts +7 -0
  563. package/lib/typescript/native-stack/views/FooterComponent.d.ts.map +1 -0
  564. package/lib/typescript/native-stack/views/HeaderConfig.d.ts +3 -2
  565. package/lib/typescript/native-stack/views/HeaderConfig.d.ts.map +1 -0
  566. package/lib/typescript/native-stack/views/NativeStackView.d.ts +2 -1
  567. package/lib/typescript/native-stack/views/NativeStackView.d.ts.map +1 -0
  568. package/lib/typescript/reanimated/ReanimatedHeaderHeightContext.d.ts +1 -0
  569. package/lib/typescript/reanimated/ReanimatedHeaderHeightContext.d.ts.map +1 -0
  570. package/lib/typescript/reanimated/ReanimatedNativeStackScreen.d.ts +3 -3
  571. package/lib/typescript/reanimated/ReanimatedNativeStackScreen.d.ts.map +1 -0
  572. package/lib/typescript/reanimated/ReanimatedScreen.d.ts +3 -3
  573. package/lib/typescript/reanimated/ReanimatedScreen.d.ts.map +1 -0
  574. package/lib/typescript/reanimated/ReanimatedScreenProvider.d.ts +1 -0
  575. package/lib/typescript/reanimated/ReanimatedScreenProvider.d.ts.map +1 -0
  576. package/lib/typescript/reanimated/ReanimatedTransitionProgressContext.d.ts +2 -1
  577. package/lib/typescript/reanimated/ReanimatedTransitionProgressContext.d.ts.map +1 -0
  578. package/lib/typescript/reanimated/index.d.ts +1 -0
  579. package/lib/typescript/reanimated/index.d.ts.map +1 -0
  580. package/lib/typescript/reanimated/useReanimatedHeaderHeight.d.ts +2 -3
  581. package/lib/typescript/reanimated/useReanimatedHeaderHeight.d.ts.map +1 -0
  582. package/lib/typescript/reanimated/useReanimatedTransitionProgress.d.ts +4 -9
  583. package/lib/typescript/reanimated/useReanimatedTransitionProgress.d.ts.map +1 -0
  584. package/lib/typescript/types.d.ts +186 -36
  585. package/lib/typescript/types.d.ts.map +1 -0
  586. package/lib/typescript/useTransitionProgress.d.ts +4 -3
  587. package/lib/typescript/useTransitionProgress.d.ts.map +1 -0
  588. package/lib/typescript/utils.d.ts +27 -1
  589. package/lib/typescript/utils.d.ts.map +1 -0
  590. package/native-stack/README.md +156 -108
  591. package/native-stack/package.json +4 -4
  592. package/package.json +1 -1
  593. package/react-native.config.js +19 -16
  594. package/reanimated/package.json +1 -1
  595. package/src/TransitionProgressContext.tsx +3 -1
  596. package/src/components/DebugContainer.tsx +46 -0
  597. package/src/components/DebugContainer.web.tsx +7 -0
  598. package/src/components/FullWindowOverlay.tsx +33 -0
  599. package/src/components/FullWindowOverlay.web.tsx +6 -0
  600. package/src/components/Screen.tsx +392 -0
  601. package/src/components/Screen.web.tsx +46 -0
  602. package/src/components/ScreenContainer.tsx +28 -0
  603. package/src/components/ScreenContainer.web.tsx +5 -0
  604. package/src/components/ScreenContentWrapper.tsx +9 -0
  605. package/src/components/ScreenContentWrapper.web.tsx +5 -0
  606. package/src/components/ScreenFooter.tsx +20 -0
  607. package/src/components/ScreenFooter.web.tsx +7 -0
  608. package/src/components/ScreenStack.tsx +112 -0
  609. package/src/components/ScreenStack.web.tsx +5 -0
  610. package/src/components/ScreenStackHeaderConfig.tsx +122 -0
  611. package/src/components/ScreenStackHeaderConfig.web.tsx +39 -0
  612. package/src/components/ScreenStackItem.tsx +174 -0
  613. package/src/components/SearchBar.tsx +102 -0
  614. package/src/components/SearchBar.web.tsx +5 -0
  615. package/src/components/helpers/DelayedFreeze.tsx +27 -0
  616. package/src/components/helpers/usePrevious.tsx +11 -0
  617. package/src/contexts.tsx +9 -0
  618. package/src/core.ts +45 -0
  619. package/src/fabric/FullWindowOverlayNativeComponent.ts +16 -0
  620. package/src/fabric/ModalScreenNativeComponent.ts +115 -0
  621. package/src/fabric/NativeScreensModule.ts +8 -0
  622. package/src/fabric/NativeScreensModule.web.ts +1 -0
  623. package/src/fabric/ScreenContainerNativeComponent.ts +3 -3
  624. package/src/fabric/ScreenContentWrapperNativeComponent.ts +14 -0
  625. package/src/fabric/ScreenFooterNativeComponent.ts +6 -0
  626. package/src/fabric/ScreenNativeComponent.ts +36 -23
  627. package/src/fabric/ScreenNavigationContainerNativeComponent.ts +3 -1
  628. package/src/fabric/ScreenStackHeaderConfigNativeComponent.ts +38 -2
  629. package/src/fabric/ScreenStackHeaderSubviewNativeComponent.ts +5 -1
  630. package/src/fabric/ScreenStackNativeComponent.ts +3 -2
  631. package/src/fabric/SearchBarNativeComponent.ts +17 -13
  632. package/src/gesture-handler/GestureDetectorProvider.tsx +16 -0
  633. package/src/gesture-handler/RNScreensTurboModule.ts +13 -0
  634. package/src/gesture-handler/ScreenGestureDetector.tsx +241 -0
  635. package/src/gesture-handler/constraints.ts +87 -0
  636. package/src/gesture-handler/defaults.ts +46 -0
  637. package/src/gesture-handler/fabricUtils.ts +86 -0
  638. package/src/gesture-handler/fabricUtils.web.ts +10 -0
  639. package/src/gesture-handler/index.tsx +4 -0
  640. package/src/index.tsx +49 -112
  641. package/src/native-stack/contexts/GHContext.tsx +9 -0
  642. package/src/native-stack/navigators/createNativeStackNavigator.tsx +6 -3
  643. package/src/native-stack/types.tsx +204 -31
  644. package/src/native-stack/utils/getDefaultHeaderHeight.tsx +2 -2
  645. package/src/native-stack/utils/getStatusBarHeight.tsx +22 -0
  646. package/src/native-stack/utils/useAnimatedHeaderHeight.tsx +1 -1
  647. package/src/native-stack/utils/useBackPressSubscription.tsx +1 -1
  648. package/src/native-stack/utils/useHeaderHeight.tsx +1 -1
  649. package/src/native-stack/views/FontProcessor.tsx +2 -2
  650. package/src/native-stack/views/FooterComponent.tsx +10 -0
  651. package/src/native-stack/views/HeaderConfig.tsx +20 -5
  652. package/src/native-stack/views/NativeStackView.tsx +137 -53
  653. package/src/reanimated/ReanimatedHeaderHeightContext.tsx +1 -1
  654. package/src/reanimated/ReanimatedNativeStackScreen.tsx +15 -13
  655. package/src/reanimated/ReanimatedScreen.tsx +4 -3
  656. package/src/reanimated/ReanimatedScreenProvider.tsx +3 -2
  657. package/src/reanimated/useReanimatedHeaderHeight.tsx +2 -2
  658. package/src/reanimated/useReanimatedTransitionProgress.tsx +1 -1
  659. package/src/types.tsx +210 -40
  660. package/src/useTransitionProgress.tsx +1 -1
  661. package/src/utils.ts +27 -5
  662. package/windows/README.md +4 -1
  663. package/windows/RNScreens/Screen.h +3 -1
  664. package/SystemBundles/8f5a820b958535e533acb38dbc0c72c1837721b9db075f4a1740e42b9fee3910.bundle +0 -33668
  665. package/SystemBundles/8f5a820b958535e533acb38dbc0c72c1837721b9db075f4a1740e42b9fee3910.map +0 -1
  666. package/SystemModules/amzn__react-native-screens.modules.txt +0 -101
  667. package/SystemModules/amzn__react-native-screens.private.modules.txt +0 -244
  668. package/lib/commonjs/index.native.js +0 -407
  669. package/lib/commonjs/index.native.js.map +0 -1
  670. package/lib/module/index.native.js +0 -410
  671. package/lib/module/index.native.js.map +0 -1
  672. package/lib/typescript/index.native.d.ts +0 -2
  673. package/src/index.native.tsx +0 -599
@@ -0,0 +1,80 @@
1
+ cmake_minimum_required(VERSION 3.9.0)
2
+
3
+ project(rnscreens)
4
+
5
+ if(${RNS_NEW_ARCH_ENABLED})
6
+ add_library(rnscreens
7
+ SHARED
8
+ ../cpp/RNScreensTurboModule.cpp
9
+ ../cpp/RNSScreenRemovalListener.cpp
10
+ ./src/main/cpp/jni-adapter.cpp
11
+ ./src/main/cpp/NativeProxy.cpp
12
+ ./src/main/cpp/OnLoad.cpp
13
+ )
14
+ else()
15
+ add_library(rnscreens
16
+ SHARED
17
+ ../cpp/RNScreensTurboModule.cpp
18
+ ./src/main/cpp/jni-adapter.cpp
19
+ )
20
+ endif()
21
+
22
+ include_directories(
23
+ ../cpp
24
+ )
25
+
26
+ set_target_properties(rnscreens PROPERTIES
27
+ CXX_STANDARD 20
28
+ CXX_STANDARD_REQUIRED ON
29
+ CXX_EXTENSIONS OFF
30
+ POSITION_INDEPENDENT_CODE ON
31
+ )
32
+
33
+ target_compile_definitions(
34
+ rnscreens
35
+ PRIVATE
36
+ -DFOLLY_NO_CONFIG=1
37
+ )
38
+
39
+ find_package(ReactAndroid REQUIRED CONFIG)
40
+
41
+ if(${RNS_NEW_ARCH_ENABLED})
42
+ find_package(fbjni REQUIRED CONFIG)
43
+
44
+ if(ReactAndroid_VERSION_MINOR GREATER_EQUAL 76)
45
+ target_link_libraries(rnscreens
46
+ ReactAndroid::reactnative
47
+ ReactAndroid::jsi
48
+ fbjni::fbjni
49
+ android
50
+ )
51
+ else()
52
+ target_link_libraries(
53
+ rnscreens
54
+ ReactAndroid::jsi
55
+ ReactAndroid::react_nativemodule_core
56
+ ReactAndroid::react_utils
57
+ ReactAndroid::reactnativejni
58
+ ReactAndroid::fabricjni
59
+ ReactAndroid::react_debug
60
+ ReactAndroid::react_render_core
61
+ ReactAndroid::runtimeexecutor
62
+ ReactAndroid::react_render_graphics
63
+ ReactAndroid::rrc_view
64
+ ReactAndroid::yoga
65
+ ReactAndroid::rrc_text
66
+ ReactAndroid::glog
67
+ ReactAndroid::react_render_componentregistry
68
+ ReactAndroid::react_render_consistency
69
+ ReactAndroid::react_performance_timeline
70
+ ReactAndroid::react_render_observers_events
71
+ fbjni::fbjni
72
+ android
73
+ )
74
+ endif()
75
+ else()
76
+ target_link_libraries(rnscreens
77
+ ReactAndroid::jsi
78
+ android
79
+ )
80
+ endif()
@@ -1,4 +1,5 @@
1
1
  import com.android.Version
2
+ import groovy.json.JsonSlurper
2
3
 
3
4
  buildscript {
4
5
  ext {
@@ -8,7 +9,11 @@ buildscript {
8
9
  rnsDefaultKotlinVersion = '1.8.0'
9
10
  }
10
11
  ext.safeExtGet = {prop, fallback ->
11
- rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback
12
+ def props = (prop instanceof String) ? [prop] : prop
13
+ def result = props.find { key ->
14
+ return rootProject.ext.has(key)
15
+ }
16
+ return result ? rootProject.ext.get(result) : fallback
12
17
  }
13
18
  repositories {
14
19
  google()
@@ -17,10 +22,14 @@ buildscript {
17
22
  dependencies {
18
23
  classpath('com.android.tools.build:gradle:4.2.2')
19
24
  classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:${safeExtGet('kotlinVersion', rnsDefaultKotlinVersion)}"
20
- classpath "com.diffplug.spotless:spotless-plugin-gradle:6.11.0"
25
+ classpath "com.diffplug.spotless:spotless-plugin-gradle:6.25.0"
21
26
  }
22
27
  }
23
28
 
29
+ def isRunningInContextOfScreensRepo() {
30
+ return project == rootProject
31
+ }
32
+
24
33
  def isNewArchitectureEnabled() {
25
34
  // To opt-in for the New Architecture, you can either:
26
35
  // - Set `newArchEnabled` to true inside the `gradle.properties` file
@@ -29,8 +38,44 @@ def isNewArchitectureEnabled() {
29
38
  return project.hasProperty("newArchEnabled") && project.newArchEnabled == "true"
30
39
  }
31
40
 
41
+ def resolveReactNativeDirectory() {
42
+ def userDefinedRnDirPath = safeAppExtGet("REACT_NATIVE_NODE_MODULES_DIR", null)
43
+ if (userDefinedRnDirPath != null) {
44
+ return file(userDefinedRnDirPath)
45
+ }
46
+
47
+ File standardRnDirFile = file("$rootDir/../node_modules/react-native/")
48
+ if (standardRnDirFile.exists()) {
49
+ return standardRnDirFile
50
+ }
51
+
52
+ // This is legacy code, I'm not sure why it works in certain scenarios but it was reported that one of our
53
+ // projects needs this.
54
+ File legacyRnDirFile = file("$projectDir/../node_modules/react-native/")
55
+ if (legacyRnDirFile.exists()) {
56
+ return legacyRnDirFile
57
+ }
58
+
59
+ // We're in non standard setup, e.g. monorepo - try to use node resolver to locate the react-native package.
60
+ String maybeRnPackagePath = ["node", "--print", "require.resolve('react-native/package.json')"].execute(null, rootDir).text.trim()
61
+
62
+ File nodeResolverRnDirFile = null
63
+ // file() constructor fails in case string is null or blank
64
+ if (maybeRnPackagePath != null && !maybeRnPackagePath.isBlank()) {
65
+ File maybeRnPackageFile = file(maybeRnPackagePath)
66
+ if (maybeRnPackageFile.exists()) {
67
+ nodeResolverRnDirFile = maybeRnPackageFile.parentFile
68
+ return nodeResolverRnDirFile
69
+ }
70
+ }
71
+
72
+ throw new Exception("[RNScreens] Failed to resolve react-native directory. " +
73
+ "Attempted locations: ${standardRnDirFile}, ${legacyRnDirFile} and ${nodeResolverRnDirFile}. " +
74
+ "You should set project extension property (in `app/build.gradle`) `REACT_NATIVE_NODE_MODULES_DIR` with path to react-native.")
75
+ }
76
+
32
77
  // spotless is only accessible within react-native-screens repo
33
- if (project == rootProject) {
78
+ if (isRunningInContextOfScreensRepo()) {
34
79
  apply from: 'spotless.gradle'
35
80
  }
36
81
 
@@ -45,11 +90,21 @@ def reactNativeArchitectures() {
45
90
  return value ? value.split(",") : ["armeabi-v7a", "x86", "x86_64", "arm64-v8a"]
46
91
  }
47
92
 
93
+ def safeAppExtGet(prop, fallback) {
94
+ def appProject = rootProject.allprojects.find { it.plugins.hasPlugin('com.android.application') }
95
+ appProject?.ext?.has(prop) ? appProject.ext.get(prop) : fallback
96
+ }
97
+
98
+ def IS_NEW_ARCHITECTURE_ENABLED = isNewArchitectureEnabled()
99
+
48
100
  android {
49
101
  compileSdkVersion safeExtGet('compileSdkVersion', rnsDefaultCompileSdkVersion)
50
102
  def agpVersion = Version.ANDROID_GRADLE_PLUGIN_VERSION
51
103
  if (agpVersion.tokenize('.')[0].toInteger() >= 7) {
52
104
  namespace "com.swmansion.rnscreens"
105
+ buildFeatures {
106
+ buildConfig true
107
+ }
53
108
  }
54
109
 
55
110
  // Used to override the NDK path/version on internal CI or by allowing
@@ -62,14 +117,28 @@ android {
62
117
  }
63
118
 
64
119
  defaultConfig {
65
- minSdkVersion safeExtGet('minSdkVersion', rnsDefaultMinSdkVersion)
66
- targetSdkVersion safeExtGet('targetSdkVersion', rnsDefaultTargetSdkVersion)
120
+ minSdkVersion safeExtGet(['minSdkVersion', 'minSdk'], rnsDefaultMinSdkVersion)
121
+ targetSdkVersion safeExtGet(['targetSdkVersion', 'targetSdk'], rnsDefaultTargetSdkVersion)
67
122
  versionCode 1
68
123
  versionName "1.0"
69
- buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString()
124
+ buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", IS_NEW_ARCHITECTURE_ENABLED.toString()
70
125
  ndk {
71
126
  abiFilters (*reactNativeArchitectures())
72
127
  }
128
+ externalNativeBuild {
129
+ cmake {
130
+ arguments "-DANDROID_STL=c++_shared",
131
+ "-DRNS_NEW_ARCH_ENABLED=${IS_NEW_ARCHITECTURE_ENABLED}"
132
+ }
133
+ }
134
+ }
135
+ buildFeatures {
136
+ prefab true
137
+ }
138
+ externalNativeBuild {
139
+ cmake {
140
+ path "CMakeLists.txt"
141
+ }
73
142
  }
74
143
  lintOptions {
75
144
  abortOnError false
@@ -83,25 +152,31 @@ android {
83
152
  // while there are more libraries copied in intermediates folder of the lib build directory, we exclude
84
153
  // only the ones that make the build fail (ideally we should only include librnscreens_modules but we
85
154
  // are only allowed to specify exclude patterns)
86
- exclude "**/libreact_render*.so"
155
+ excludes = [
156
+ "META-INF",
157
+ "META-INF/**",
158
+ "**/libjsi.so",
159
+ "**/libc++_shared.so",
160
+ "**/libreact_render*.so",
161
+ "**/libreactnativejni.so",
162
+ "**/libreact_performance_timeline.so"
163
+ ]
87
164
  }
88
165
  sourceSets.main {
89
166
  ext.androidResDir = "src/main/res"
90
167
  java {
91
- if (isNewArchitectureEnabled()) {
168
+ if (IS_NEW_ARCHITECTURE_ENABLED) {
92
169
  srcDirs += [
93
170
  "src/fabric/java",
94
171
  ]
95
172
  } else {
96
173
  srcDirs += [
97
174
  "src/paper/java",
98
- "build/generated/source/codegen/java"
99
175
  ]
100
176
  }
101
-
102
177
  }
103
178
  res {
104
- if (safeExtGet('compileSdkVersion', rnsDefaultCompileSdkVersion) >= 33) {
179
+ if (safeExtGet(['compileSdkVersion', 'compileSdk'], rnsDefaultCompileSdkVersion) >= 33) {
105
180
  srcDirs = ["${androidResDir}/base", "${androidResDir}/v33"]
106
181
  } else {
107
182
  srcDirs = ["${androidResDir}/base"]
@@ -112,11 +187,9 @@ android {
112
187
 
113
188
  repositories {
114
189
  maven {
115
- // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
116
- // Matches the RN Hello World template
117
- // https://github.com/facebook/react-native/blob/1e8f3b11027fe0a7514b4fc97d0798d3c64bc895/local-cli/templates/HelloWorld/android/build.gradle#L21
118
- url "$projectDir/../node_modules/react-native/android"
190
+ url "${resolveReactNativeDirectory()}/android"
119
191
  }
192
+
120
193
  mavenCentral()
121
194
  mavenLocal()
122
195
  google()
@@ -128,6 +201,12 @@ dependencies {
128
201
  implementation 'androidx.fragment:fragment-ktx:1.6.1'
129
202
  implementation 'androidx.coordinatorlayout:coordinatorlayout:1.2.0'
130
203
  implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'
131
- implementation 'com.google.android.material:material:1.9.0'
132
- implementation "androidx.core:core-ktx:1.10.1"
204
+ implementation 'com.google.android.material:material:1.6.1'
205
+ implementation "androidx.core:core-ktx:1.8.0"
206
+
207
+ constraints {
208
+ implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1") {
209
+ because("on older React Native versions this dependency conflicts with react-native-screens")
210
+ }
211
+ }
133
212
  }
@@ -0,0 +1,61 @@
1
+ package com.swmansion.rnscreens
2
+
3
+ import android.content.Context
4
+ import android.view.ViewGroup
5
+ import androidx.annotation.UiThread
6
+ import com.facebook.react.bridge.WritableMap
7
+ import com.facebook.react.bridge.WritableNativeMap
8
+ import com.facebook.react.uimanager.PixelUtil
9
+ import com.facebook.react.uimanager.StateWrapper
10
+ import kotlin.math.abs
11
+
12
+ abstract class FabricEnabledHeaderConfigViewGroup(
13
+ context: Context?,
14
+ ) : ViewGroup(context) {
15
+ private var mStateWrapper: StateWrapper? = null
16
+
17
+ private var lastPaddingStart = 0f
18
+ private var lastPaddingEnd = 0f
19
+
20
+ fun setStateWrapper(wrapper: StateWrapper?) {
21
+ mStateWrapper = wrapper
22
+ }
23
+
24
+ fun updatePaddingsFabric(
25
+ paddingStart: Int,
26
+ paddingEnd: Int,
27
+ ) {
28
+ updateState(paddingStart, paddingEnd)
29
+ }
30
+
31
+ @UiThread
32
+ fun updateState(
33
+ paddingStart: Int,
34
+ paddingEnd: Int,
35
+ ) {
36
+ val paddingStartDip: Float = PixelUtil.toDIPFromPixel(paddingStart.toFloat())
37
+ val paddingEndDip: Float = PixelUtil.toDIPFromPixel(paddingEnd.toFloat())
38
+
39
+ // Check incoming state values. If they're already the correct value, return early to prevent
40
+ // infinite UpdateState/SetState loop.
41
+ if (abs(lastPaddingStart - paddingStart) < DELTA &&
42
+ abs(lastPaddingEnd - paddingEnd) < DELTA
43
+ ) {
44
+ return
45
+ }
46
+
47
+ lastPaddingStart = paddingStartDip
48
+ lastPaddingEnd = paddingEndDip
49
+
50
+ val map: WritableMap =
51
+ WritableNativeMap().apply {
52
+ putDouble("paddingStart", paddingStartDip.toDouble())
53
+ putDouble("paddingEnd", paddingEndDip.toDouble())
54
+ }
55
+ mStateWrapper?.updateState(map)
56
+ }
57
+
58
+ companion object {
59
+ private const val DELTA = 0.9f
60
+ }
61
+ }
@@ -3,47 +3,60 @@ package com.swmansion.rnscreens
3
3
  import android.view.ViewGroup
4
4
  import androidx.annotation.UiThread
5
5
  import com.facebook.react.bridge.ReactContext
6
- import com.facebook.react.bridge.ReadableMap
7
6
  import com.facebook.react.bridge.WritableMap
8
7
  import com.facebook.react.bridge.WritableNativeMap
9
- import com.facebook.react.uimanager.FabricViewStateManager
10
8
  import com.facebook.react.uimanager.PixelUtil
9
+ import com.facebook.react.uimanager.StateWrapper
11
10
  import kotlin.math.abs
12
11
 
13
- abstract class FabricEnabledViewGroup constructor(context: ReactContext?) : ViewGroup(context), FabricViewStateManager.HasFabricViewStateManager {
14
- private val mFabricViewStateManager: FabricViewStateManager = FabricViewStateManager()
12
+ abstract class FabricEnabledViewGroup(
13
+ context: ReactContext?,
14
+ ) : ViewGroup(context) {
15
+ private var mStateWrapper: StateWrapper? = null
15
16
 
16
- override fun getFabricViewStateManager(): FabricViewStateManager {
17
- return mFabricViewStateManager
17
+ private var lastSetWidth = 0f
18
+ private var lastSetHeight = 0f
19
+
20
+ fun setStateWrapper(wrapper: StateWrapper?) {
21
+ mStateWrapper = wrapper
18
22
  }
19
23
 
20
- protected fun updateScreenSizeFabric(width: Int, height: Int) {
21
- updateState(width, height)
24
+ protected fun updateScreenSizeFabric(
25
+ width: Int,
26
+ height: Int,
27
+ headerHeight: Int,
28
+ ) {
29
+ updateState(width, height, headerHeight)
22
30
  }
23
31
 
24
32
  @UiThread
25
- fun updateState(width: Int, height: Int) {
33
+ fun updateState(
34
+ width: Int,
35
+ height: Int,
36
+ headerHeight: Int,
37
+ ) {
26
38
  val realWidth: Float = PixelUtil.toDIPFromPixel(width.toFloat())
27
39
  val realHeight: Float = PixelUtil.toDIPFromPixel(height.toFloat())
40
+ val realHeaderHeight: Float = PixelUtil.toDIPFromPixel(headerHeight.toFloat())
28
41
 
29
42
  // Check incoming state values. If they're already the correct value, return early to prevent
30
43
  // infinite UpdateState/SetState loop.
31
- val currentState: ReadableMap? = mFabricViewStateManager.getStateData()
32
- if (currentState != null) {
33
- val delta = 0.9f
34
- val stateFrameHeight: Float = if (currentState.hasKey("frameHeight")) currentState.getDouble("frameHeight").toFloat() else 0f
35
- val stateFrameWidth: Float = if (currentState.hasKey("frameWidth")) currentState.getDouble("frameWidth").toFloat() else 0f
36
- if (abs(stateFrameWidth - realWidth) < delta &&
37
- abs(stateFrameHeight - realHeight) < delta
38
- ) {
39
- return
40
- }
41
- }
42
- mFabricViewStateManager.setState {
43
- val map: WritableMap = WritableNativeMap()
44
- map.putDouble("frameWidth", realWidth.toDouble())
45
- map.putDouble("frameHeight", realHeight.toDouble())
46
- map
44
+ val delta = 0.9f
45
+ if (abs(lastSetWidth - realWidth) < delta &&
46
+ abs(lastSetHeight - realHeight) < delta
47
+ ) {
48
+ return
47
49
  }
50
+
51
+ lastSetWidth = realWidth
52
+ lastSetHeight = realHeight
53
+ val map: WritableMap =
54
+ WritableNativeMap().apply {
55
+ putDouble("frameWidth", realWidth.toDouble())
56
+ putDouble("frameHeight", realHeight.toDouble())
57
+ putDouble("contentOffsetX", 0.0)
58
+ putDouble("contentOffsetY", realHeaderHeight.toDouble())
59
+ }
60
+ mStateWrapper?.updateState(map)
48
61
  }
49
62
  }
@@ -0,0 +1,53 @@
1
+ package com.swmansion.rnscreens
2
+
3
+ import android.util.Log
4
+ import com.facebook.jni.HybridData
5
+ import com.facebook.proguard.annotations.DoNotStrip
6
+ import com.facebook.react.fabric.FabricUIManager
7
+ import java.lang.ref.WeakReference
8
+ import java.util.concurrent.ConcurrentHashMap
9
+
10
+ class NativeProxy {
11
+ @DoNotStrip
12
+ @Suppress("unused")
13
+ private val mHybridData: HybridData
14
+
15
+ init {
16
+ mHybridData = initHybrid()
17
+ }
18
+
19
+ private external fun initHybrid(): HybridData
20
+
21
+ external fun nativeAddMutationsListener(fabricUIManager: FabricUIManager)
22
+
23
+ companion object {
24
+ // we use ConcurrentHashMap here since it will be read on the JS thread,
25
+ // and written to on the UI thread.
26
+ private val viewsMap = ConcurrentHashMap<Int, WeakReference<Screen>>()
27
+
28
+ fun addScreenToMap(
29
+ tag: Int,
30
+ view: Screen,
31
+ ) {
32
+ viewsMap[tag] = WeakReference(view)
33
+ }
34
+
35
+ fun removeScreenFromMap(tag: Int) {
36
+ viewsMap.remove(tag)
37
+ }
38
+
39
+ fun clearMapOnInvalidate() {
40
+ viewsMap.clear()
41
+ }
42
+ }
43
+
44
+ @DoNotStrip
45
+ public fun notifyScreenRemoved(screenTag: Int) {
46
+ val screen = viewsMap[screenTag]?.get()
47
+ if (screen is Screen) {
48
+ screen.startRemovalTransition()
49
+ } else {
50
+ Log.w("[RNScreens]", "Did not find view with tag $screenTag.")
51
+ }
52
+ }
53
+ }
@@ -0,0 +1,51 @@
1
+ #include <fbjni/fbjni.h>
2
+ #include <react/fabric/Binding.h>
3
+ #include <react/renderer/scheduler/Scheduler.h>
4
+
5
+ #include <string>
6
+
7
+ #include "NativeProxy.h"
8
+
9
+ using namespace facebook;
10
+ using namespace react;
11
+
12
+ namespace rnscreens {
13
+
14
+ NativeProxy::NativeProxy(jni::alias_ref<NativeProxy::javaobject> jThis)
15
+ : javaPart_(jni::make_global(jThis)) {}
16
+
17
+ NativeProxy::~NativeProxy() {}
18
+
19
+ void NativeProxy::registerNatives() {
20
+ registerHybrid(
21
+ {makeNativeMethod("initHybrid", NativeProxy::initHybrid),
22
+ makeNativeMethod(
23
+ "nativeAddMutationsListener",
24
+ NativeProxy::nativeAddMutationsListener)});
25
+ }
26
+
27
+ void NativeProxy::nativeAddMutationsListener(
28
+ jni::alias_ref<facebook::react::JFabricUIManager::javaobject>
29
+ fabricUIManager) {
30
+ auto uiManager =
31
+ fabricUIManager->getBinding()->getScheduler()->getUIManager();
32
+ screenRemovalListener_ =
33
+ std::make_shared<RNSScreenRemovalListener>([this](int tag) {
34
+ static const auto method =
35
+ javaPart_->getClass()->getMethod<void(jint)>("notifyScreenRemoved");
36
+ method(javaPart_, tag);
37
+ });
38
+
39
+ uiManager->getShadowTreeRegistry().enumerate(
40
+ [this](const facebook::react::ShadowTree &shadowTree, bool &stop) {
41
+ shadowTree.getMountingCoordinator()->setMountingOverrideDelegate(
42
+ screenRemovalListener_);
43
+ });
44
+ }
45
+
46
+ jni::local_ref<NativeProxy::jhybriddata> NativeProxy::initHybrid(
47
+ jni::alias_ref<jhybridobject> jThis) {
48
+ return makeCxxInstance(jThis);
49
+ }
50
+
51
+ } // namespace rnscreens
@@ -0,0 +1,35 @@
1
+ #pragma once
2
+
3
+ #include <fbjni/fbjni.h>
4
+ #include <react/fabric/JFabricUIManager.h>
5
+ #include "RNSScreenRemovalListener.h"
6
+
7
+ #include <string>
8
+
9
+ namespace rnscreens {
10
+ using namespace facebook;
11
+ using namespace facebook::jni;
12
+
13
+ class NativeProxy : public jni::HybridClass<NativeProxy> {
14
+ public:
15
+ std::shared_ptr<RNSScreenRemovalListener> screenRemovalListener_;
16
+ static auto constexpr kJavaDescriptor =
17
+ "Lcom/swmansion/rnscreens/NativeProxy;";
18
+ static jni::local_ref<jhybriddata> initHybrid(
19
+ jni::alias_ref<jhybridobject> jThis);
20
+ static void registerNatives();
21
+
22
+ ~NativeProxy();
23
+
24
+ private:
25
+ friend HybridBase;
26
+ jni::global_ref<NativeProxy::javaobject> javaPart_;
27
+
28
+ explicit NativeProxy(jni::alias_ref<NativeProxy::javaobject> jThis);
29
+
30
+ void nativeAddMutationsListener(
31
+ jni::alias_ref<facebook::react::JFabricUIManager::javaobject>
32
+ fabricUIManager);
33
+ };
34
+
35
+ } // namespace rnscreens
@@ -0,0 +1,8 @@
1
+ #include <fbjni/fbjni.h>
2
+
3
+ #include "NativeProxy.h"
4
+
5
+ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *) {
6
+ return facebook::jni::initialize(
7
+ vm, [] { rnscreens::NativeProxy::registerNatives(); });
8
+ }
@@ -0,0 +1,106 @@
1
+ #include <jni.h>
2
+ #include <jsi/jsi.h>
3
+ #include <array>
4
+ #include <mutex>
5
+ #include "RNScreensTurboModule.h"
6
+
7
+ using namespace facebook;
8
+
9
+ jobject globalThis;
10
+
11
+ extern "C" JNIEXPORT void JNICALL
12
+ Java_com_swmansion_rnscreens_ScreensModule_nativeInstall(
13
+ JNIEnv *env,
14
+ jobject thiz,
15
+ jlong jsiPtr) {
16
+ auto runtime = reinterpret_cast<jsi::Runtime *>(jsiPtr);
17
+ if (!runtime) {
18
+ return;
19
+ }
20
+ jsi::Runtime &rt = *runtime;
21
+ if (globalThis) {
22
+ env->DeleteGlobalRef(globalThis);
23
+ }
24
+ globalThis = env->NewGlobalRef(thiz);
25
+ JavaVM *jvm;
26
+ env->GetJavaVM(&jvm);
27
+
28
+ const auto &startTransition = [jvm](int stackTag) -> std::array<int, 2> {
29
+ JNIEnv *currentEnv;
30
+ if (jvm->AttachCurrentThread(&currentEnv, nullptr) != JNI_OK) {
31
+ return {0, 0};
32
+ }
33
+ jclass javaClass = currentEnv->GetObjectClass(globalThis);
34
+ jmethodID methodID = currentEnv->GetMethodID(
35
+ javaClass, "startTransition", "(Ljava/lang/Integer;)[I");
36
+ jclass integerClass = currentEnv->FindClass("java/lang/Integer");
37
+ jmethodID integerConstructor =
38
+ currentEnv->GetMethodID(integerClass, "<init>", "(I)V");
39
+ jobject integerArg =
40
+ currentEnv->NewObject(integerClass, integerConstructor, stackTag);
41
+ jintArray resultArray = (jintArray)currentEnv->CallObjectMethod(
42
+ globalThis, methodID, integerArg);
43
+ std::array<int, 2> result = {-1, -1};
44
+ jint *elements = currentEnv->GetIntArrayElements(resultArray, nullptr);
45
+ if (elements != nullptr) {
46
+ result[0] = elements[0];
47
+ result[1] = elements[1];
48
+ currentEnv->ReleaseIntArrayElements(resultArray, elements, JNI_ABORT);
49
+ }
50
+ return result;
51
+ };
52
+
53
+ const auto &updateTransition = [jvm](int stackTag, double progress) {
54
+ JNIEnv *currentEnv;
55
+ if (jvm->AttachCurrentThread(&currentEnv, nullptr) != JNI_OK) {
56
+ return;
57
+ }
58
+ jclass javaClass = currentEnv->GetObjectClass(globalThis);
59
+ jmethodID methodID =
60
+ currentEnv->GetMethodID(javaClass, "updateTransition", "(D)V");
61
+ currentEnv->CallVoidMethod(globalThis, methodID, progress);
62
+ };
63
+
64
+ const auto &finishTransition = [jvm](int stackTag, bool canceled) {
65
+ JNIEnv *currentEnv;
66
+ if (jvm->AttachCurrentThread(&currentEnv, nullptr) != JNI_OK) {
67
+ return;
68
+ }
69
+ jclass javaClass = currentEnv->GetObjectClass(globalThis);
70
+ jmethodID methodID = currentEnv->GetMethodID(
71
+ javaClass, "finishTransition", "(Ljava/lang/Integer;Z)V");
72
+ jclass integerClass = currentEnv->FindClass("java/lang/Integer");
73
+ jmethodID integerConstructor =
74
+ currentEnv->GetMethodID(integerClass, "<init>", "(I)V");
75
+ jobject integerArg =
76
+ currentEnv->NewObject(integerClass, integerConstructor, stackTag);
77
+ currentEnv->CallVoidMethod(globalThis, methodID, integerArg, canceled);
78
+ };
79
+
80
+ const auto &disableSwipeBackForTopScreen = [](int _stackTag) {
81
+ // no implementation for Android
82
+ };
83
+
84
+ auto rnScreensModule = std::make_shared<RNScreens::RNScreensTurboModule>(
85
+ startTransition,
86
+ updateTransition,
87
+ finishTransition,
88
+ disableSwipeBackForTopScreen);
89
+ auto rnScreensModuleHostObject =
90
+ jsi::Object::createFromHostObject(rt, rnScreensModule);
91
+ rt.global().setProperty(
92
+ rt,
93
+ RNScreens::RNScreensTurboModule::MODULE_NAME,
94
+ std::move(rnScreensModuleHostObject));
95
+ }
96
+
97
+ void JNICALL JNI_OnUnload(JavaVM *jvm, void *) {
98
+ JNIEnv *env;
99
+ if (jvm->GetEnv(reinterpret_cast<void **>(&env), JNI_VERSION_1_6) != JNI_OK) {
100
+ return;
101
+ }
102
+ if (globalThis != nullptr) {
103
+ env->DeleteGlobalRef(globalThis);
104
+ globalThis = nullptr;
105
+ }
106
+ }