@amazon-devices/react-native-screens 2.0.9000000000 → 3.0.9000000000-rn-83

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 (685) hide show
  1. package/README.md +57 -18
  2. package/RNScreens.podspec +12 -30
  3. package/SystemBundles/d557bc3ccca761f329c4a0be9f40c5edeceaeb72783a7971e6e3dcf80a6bedb0.bundle +45130 -0
  4. package/SystemBundles/d557bc3ccca761f329c4a0be9f40c5edeceaeb72783a7971e6e3dcf80a6bedb0.map +13686 -0
  5. package/SystemModules/amzn__react-native-screens-3.modules.txt +158 -0
  6. package/SystemModules/amzn__react-native-screens-3.private.modules.txt +376 -0
  7. package/SystemModules/keplerscript-system-bundle-config.json +4 -4
  8. package/android/CMakeLists.txt +80 -0
  9. package/android/build.gradle +96 -17
  10. package/android/src/fabric/java/com/swmansion/rnscreens/FabricEnabledHeaderConfigViewGroup.kt +61 -0
  11. package/android/src/fabric/java/com/swmansion/rnscreens/FabricEnabledViewGroup.kt +38 -25
  12. package/android/src/fabric/java/com/swmansion/rnscreens/NativeProxy.kt +53 -0
  13. package/android/src/main/cpp/NativeProxy.cpp +51 -0
  14. package/android/src/main/cpp/NativeProxy.h +35 -0
  15. package/android/src/main/cpp/OnLoad.cpp +8 -0
  16. package/android/src/main/cpp/jni-adapter.cpp +106 -0
  17. package/android/src/main/java/com/swmansion/rnscreens/CustomSearchView.kt +20 -10
  18. package/android/src/main/java/com/swmansion/rnscreens/CustomToolbar.kt +69 -1
  19. package/android/src/main/java/com/swmansion/rnscreens/FragmentBackPressOverrider.kt +8 -8
  20. package/android/src/main/java/com/swmansion/rnscreens/InsetsObserverProxy.kt +104 -0
  21. package/android/src/main/java/com/swmansion/rnscreens/ModalScreenViewManager.kt +12 -0
  22. package/android/src/main/java/com/swmansion/rnscreens/NativeDismissalObserver.kt +12 -0
  23. package/android/src/main/java/com/swmansion/rnscreens/RNScreensPackage.kt +65 -7
  24. package/android/src/main/java/com/swmansion/rnscreens/Screen.kt +327 -84
  25. package/android/src/main/java/com/swmansion/rnscreens/ScreenContainer.kt +122 -72
  26. package/android/src/main/java/com/swmansion/rnscreens/ScreenContainerViewManager.kt +27 -4
  27. package/android/src/main/java/com/swmansion/rnscreens/ScreenContentWrapper.kt +38 -0
  28. package/android/src/main/java/com/swmansion/rnscreens/ScreenContentWrapperManager.kt +25 -0
  29. package/android/src/main/java/com/swmansion/rnscreens/ScreenEventDispatcher.kt +10 -2
  30. package/android/src/main/java/com/swmansion/rnscreens/ScreenFooter.kt +299 -0
  31. package/android/src/main/java/com/swmansion/rnscreens/ScreenFooterManager.kt +25 -0
  32. package/android/src/main/java/com/swmansion/rnscreens/ScreenFragment.kt +91 -67
  33. package/android/src/main/java/com/swmansion/rnscreens/ScreenFragmentWrapper.kt +12 -1
  34. package/android/src/main/java/com/swmansion/rnscreens/ScreenModalFragment.kt +281 -0
  35. package/android/src/main/java/com/swmansion/rnscreens/ScreenStack.kt +184 -81
  36. package/android/src/main/java/com/swmansion/rnscreens/ScreenStackFragment.kt +467 -80
  37. package/android/src/main/java/com/swmansion/rnscreens/ScreenStackFragmentWrapper.kt +8 -1
  38. package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderConfig.kt +156 -124
  39. package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderConfigShadowNode.kt +25 -0
  40. package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderConfigViewManager.kt +159 -39
  41. package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderSubview.kt +24 -9
  42. package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderSubviewManager.kt +19 -13
  43. package/android/src/main/java/com/swmansion/rnscreens/ScreenStackViewManager.kt +31 -28
  44. package/android/src/main/java/com/swmansion/rnscreens/ScreenViewManager.kt +276 -71
  45. package/android/src/main/java/com/swmansion/rnscreens/ScreenWindowTraits.kt +124 -64
  46. package/android/src/main/java/com/swmansion/rnscreens/ScreensModule.kt +127 -0
  47. package/android/src/main/java/com/swmansion/rnscreens/ScreensShadowNode.kt +4 -2
  48. package/android/src/main/java/com/swmansion/rnscreens/SearchBarManager.kt +160 -53
  49. package/android/src/main/java/com/swmansion/rnscreens/SearchBarView.kt +57 -32
  50. package/android/src/main/java/com/swmansion/rnscreens/SearchViewFormatter.kt +15 -10
  51. package/android/src/main/java/com/swmansion/rnscreens/bottomsheet/BottomSheetBehaviorExt.kt +42 -0
  52. package/android/src/main/java/com/swmansion/rnscreens/bottomsheet/BottomSheetDialogRootView.kt +104 -0
  53. package/android/src/main/java/com/swmansion/rnscreens/bottomsheet/BottomSheetDialogScreen.kt +26 -0
  54. package/android/src/main/java/com/swmansion/rnscreens/bottomsheet/DimmingFragment.kt +493 -0
  55. package/android/src/main/java/com/swmansion/rnscreens/bottomsheet/DimmingView.kt +66 -0
  56. package/android/src/main/java/com/swmansion/rnscreens/bottomsheet/GestureTransparentViewGroup.kt +24 -0
  57. package/android/src/main/java/com/swmansion/rnscreens/bottomsheet/SheetUtils.kt +135 -0
  58. package/android/src/main/java/com/swmansion/rnscreens/events/HeaderAttachedEvent.kt +7 -8
  59. package/android/src/main/java/com/swmansion/rnscreens/events/HeaderBackButtonClickedEvent.kt +8 -9
  60. package/android/src/main/java/com/swmansion/rnscreens/events/HeaderDetachedEvent.kt +7 -8
  61. package/android/src/main/java/com/swmansion/rnscreens/events/HeaderHeightChangeEvent.kt +9 -10
  62. package/android/src/main/java/com/swmansion/rnscreens/events/ScreenAppearEvent.kt +4 -1
  63. package/android/src/main/java/com/swmansion/rnscreens/events/ScreenDisappearEvent.kt +4 -1
  64. package/android/src/main/java/com/swmansion/rnscreens/events/ScreenDismissedEvent.kt +8 -4
  65. package/android/src/main/java/com/swmansion/rnscreens/events/ScreenTransitionProgressEvent.kt +13 -16
  66. package/android/src/main/java/com/swmansion/rnscreens/events/ScreenWillAppearEvent.kt +4 -1
  67. package/android/src/main/java/com/swmansion/rnscreens/events/ScreenWillDisappearEvent.kt +4 -1
  68. package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarBlurEvent.kt +8 -9
  69. package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarChangeTextEvent.kt +8 -11
  70. package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarCloseEvent.kt +7 -8
  71. package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarFocusEvent.kt +8 -9
  72. package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarOpenEvent.kt +7 -8
  73. package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarSearchButtonPressEvent.kt +12 -11
  74. package/android/src/main/java/com/swmansion/rnscreens/events/SheetDetentChangedEvent.kt +27 -0
  75. package/android/src/main/java/com/swmansion/rnscreens/events/StackFinishTransitioningEvent.kt +4 -1
  76. package/android/src/main/java/com/swmansion/rnscreens/ext/NumericExt.kt +12 -0
  77. package/android/src/main/java/com/swmansion/rnscreens/ext/ViewExt.kt +32 -0
  78. package/android/src/main/java/com/swmansion/rnscreens/utils/DeviceUtils.kt +1 -5
  79. package/android/src/main/java/com/swmansion/rnscreens/utils/PaddingBundle.kt +8 -0
  80. package/android/src/main/java/com/swmansion/rnscreens/utils/ScreenDummyLayoutHelper.kt +282 -0
  81. package/android/src/main/jni/CMakeLists.txt +35 -23
  82. package/android/src/main/jni/rnscreens.h +3 -0
  83. package/android/src/main/res/base/anim/rns_ios_from_left_background_close.xml +5 -0
  84. package/android/src/main/res/base/anim/rns_ios_from_left_background_open.xml +5 -0
  85. package/android/src/main/res/base/anim/rns_ios_from_left_foreground_close.xml +6 -0
  86. package/android/src/main/res/base/anim/rns_ios_from_left_foreground_open.xml +6 -0
  87. package/android/src/main/res/base/anim/rns_ios_from_right_background_close.xml +5 -0
  88. package/android/src/main/res/base/anim/rns_ios_from_right_background_open.xml +5 -0
  89. package/android/src/main/res/base/anim/rns_ios_from_right_foreground_close.xml +6 -0
  90. package/android/src/main/res/base/anim/rns_ios_from_right_foreground_open.xml +6 -0
  91. package/android/src/main/res/base/drawable/rns_rounder_top_corners_shape.xml +8 -0
  92. package/android/src/main/res/v33/anim-v33/rns_default_enter_in.xml +0 -1
  93. package/android/src/main/res/v33/anim-v33/rns_default_enter_out.xml +2 -2
  94. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenContainerManagerDelegate.java +25 -0
  95. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenContainerManagerInterface.java +16 -0
  96. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenContentWrapperManagerDelegate.java +25 -0
  97. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenContentWrapperManagerInterface.java +16 -0
  98. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenFooterManagerDelegate.java +25 -0
  99. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenFooterManagerInterface.java +16 -0
  100. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenManagerDelegate.java +16 -3
  101. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenManagerInterface.java +7 -2
  102. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenStackHeaderConfigManagerDelegate.java +6 -0
  103. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenStackHeaderConfigManagerInterface.java +2 -0
  104. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSSearchBarManagerDelegate.java +99 -0
  105. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSSearchBarManagerInterface.java +37 -0
  106. package/android/src/paper/java/com/swmansion/rnscreens/FabricEnabledHeaderConfigViewGroup.kt +39 -0
  107. package/android/src/paper/java/com/swmansion/rnscreens/FabricEnabledViewGroup.kt +11 -2
  108. package/android/src/paper/java/com/swmansion/rnscreens/NativeProxy.kt +19 -0
  109. package/android/src/paper/java/com/swmansion/rnscreens/NativeScreensModuleSpec.java +36 -0
  110. package/common/cpp/react/renderer/components/rnscreens/FrameCorrectionModes.h +51 -0
  111. package/common/cpp/react/renderer/components/rnscreens/RNSModalScreenComponentDescriptor.h +40 -0
  112. package/common/cpp/react/renderer/components/rnscreens/RNSModalScreenShadowNode.cpp +16 -0
  113. package/common/cpp/react/renderer/components/rnscreens/RNSModalScreenShadowNode.h +32 -0
  114. package/common/cpp/react/renderer/components/rnscreens/RNSScreenComponentDescriptor.h +55 -12
  115. package/common/cpp/react/renderer/components/rnscreens/RNSScreenShadowNode.cpp +157 -0
  116. package/common/cpp/react/renderer/components/rnscreens/RNSScreenShadowNode.h +31 -11
  117. package/common/cpp/react/renderer/components/rnscreens/RNSScreenStackHeaderConfigComponentDescriptor.h +49 -0
  118. package/common/cpp/react/renderer/components/rnscreens/RNSScreenStackHeaderConfigShadowNode.cpp +22 -0
  119. package/common/cpp/react/renderer/components/rnscreens/RNSScreenStackHeaderConfigShadowNode.h +40 -0
  120. package/common/cpp/react/renderer/components/rnscreens/RNSScreenStackHeaderConfigState.cpp +34 -0
  121. package/common/cpp/react/renderer/components/rnscreens/RNSScreenStackHeaderConfigState.h +57 -0
  122. package/common/cpp/react/renderer/components/rnscreens/RNSScreenStackHeaderSubviewComponentDescriptor.h +27 -0
  123. package/common/cpp/react/renderer/components/rnscreens/RNSScreenStackHeaderSubviewShadowNode.cpp +8 -0
  124. package/common/cpp/react/renderer/components/rnscreens/RNSScreenStackHeaderSubviewShadowNode.h +31 -0
  125. package/common/cpp/react/renderer/components/rnscreens/RNSScreenStackHeaderSubviewState.cpp +15 -0
  126. package/common/cpp/react/renderer/components/rnscreens/RNSScreenStackHeaderSubviewState.h +39 -0
  127. package/common/cpp/react/renderer/components/rnscreens/RNSScreenState.cpp +23 -2
  128. package/common/cpp/react/renderer/components/rnscreens/RNSScreenState.h +33 -8
  129. package/common/cpp/react/renderer/components/rnscreens/utils/RectUtil.h +36 -0
  130. package/cpp/RNSScreenRemovalListener.cpp +25 -0
  131. package/cpp/RNSScreenRemovalListener.h +20 -0
  132. package/cpp/RNScreensTurboModule.cpp +115 -0
  133. package/cpp/RNScreensTurboModule.h +40 -0
  134. package/gesture-handler/package.json +6 -0
  135. package/ios/RNSConvert.h +24 -4
  136. package/ios/RNSConvert.mm +180 -55
  137. package/ios/RNSEnums.h +48 -0
  138. package/ios/RNSFullWindowOverlay.mm +12 -2
  139. package/ios/RNSModalScreen.h +8 -0
  140. package/ios/RNSModalScreen.mm +65 -0
  141. package/ios/RNSModule.h +19 -0
  142. package/ios/RNSModule.mm +173 -0
  143. package/ios/RNSPercentDrivenInteractiveTransition.h +12 -0
  144. package/ios/RNSPercentDrivenInteractiveTransition.mm +69 -0
  145. package/ios/RNSScreen.h +24 -5
  146. package/ios/RNSScreen.mm +652 -173
  147. package/ios/RNSScreenContainer.mm +12 -1
  148. package/ios/RNSScreenContentWrapper.h +44 -0
  149. package/ios/RNSScreenContentWrapper.mm +67 -0
  150. package/ios/RNSScreenFooter.h +30 -0
  151. package/ios/RNSScreenFooter.mm +142 -0
  152. package/ios/RNSScreenNavigationContainer.mm +7 -0
  153. package/ios/RNSScreenStack.h +6 -0
  154. package/ios/RNSScreenStack.mm +333 -109
  155. package/ios/RNSScreenStackAnimator.h +15 -1
  156. package/ios/RNSScreenStackAnimator.mm +380 -115
  157. package/ios/RNSScreenStackHeaderConfig.h +74 -6
  158. package/ios/RNSScreenStackHeaderConfig.mm +338 -69
  159. package/ios/RNSScreenStackHeaderSubview.h +0 -7
  160. package/ios/RNSScreenStackHeaderSubview.mm +61 -24
  161. package/ios/RNSScreenWindowTraits.h +1 -1
  162. package/ios/RNSScreenWindowTraits.mm +24 -50
  163. package/ios/RNSSearchBar.h +5 -5
  164. package/ios/RNSSearchBar.mm +42 -11
  165. package/ios/events/RNSHeaderHeightChangeEvent.h +0 -1
  166. package/ios/events/RNSHeaderHeightChangeEvent.mm +15 -0
  167. package/ios/events/RNSScreenViewEvent.h +0 -1
  168. package/ios/utils/RCTSurfaceTouchHandler+RNSUtility.h +15 -0
  169. package/ios/utils/RCTSurfaceTouchHandler+RNSUtility.mm +14 -0
  170. package/ios/utils/RCTTouchHandler+RNSUtility.h +15 -0
  171. package/ios/utils/RCTTouchHandler+RNSUtility.mm +15 -0
  172. package/ios/utils/RNSDefines.h +7 -0
  173. package/ios/utils/RNSUIBarButtonItem.h +2 -0
  174. package/ios/utils/UINavigationBar+RNSUtility.h +37 -0
  175. package/ios/utils/UINavigationBar+RNSUtility.mm +44 -0
  176. package/ios/utils/UIView+RNSUtility.h +23 -0
  177. package/ios/utils/UIView+RNSUtility.mm +54 -0
  178. package/kepler-compatibility.json +2 -2
  179. package/lib/commonjs/TransitionProgressContext.js +2 -2
  180. package/lib/commonjs/TransitionProgressContext.js.map +1 -1
  181. package/lib/commonjs/components/DebugContainer.js +38 -0
  182. package/lib/commonjs/components/DebugContainer.js.map +1 -0
  183. package/lib/commonjs/components/DebugContainer.web.js +14 -0
  184. package/lib/commonjs/components/DebugContainer.web.js.map +1 -0
  185. package/lib/commonjs/components/FullWindowOverlay.js +31 -0
  186. package/lib/commonjs/components/FullWindowOverlay.js.map +1 -0
  187. package/lib/commonjs/components/FullWindowOverlay.web.js +9 -0
  188. package/lib/commonjs/components/FullWindowOverlay.web.js.map +1 -0
  189. package/lib/commonjs/components/Screen.js +286 -0
  190. package/lib/commonjs/components/Screen.js.map +1 -0
  191. package/lib/commonjs/components/Screen.web.js +48 -0
  192. package/lib/commonjs/components/Screen.web.js.map +1 -0
  193. package/lib/commonjs/components/ScreenContainer.js +32 -0
  194. package/lib/commonjs/components/ScreenContainer.js.map +1 -0
  195. package/lib/commonjs/components/ScreenContainer.web.js +10 -0
  196. package/lib/commonjs/components/ScreenContainer.web.js.map +1 -0
  197. package/lib/commonjs/components/ScreenContentWrapper.js +17 -0
  198. package/lib/commonjs/components/ScreenContentWrapper.js.map +1 -0
  199. package/lib/commonjs/components/ScreenContentWrapper.web.js +10 -0
  200. package/lib/commonjs/components/ScreenContentWrapper.web.js.map +1 -0
  201. package/lib/commonjs/components/ScreenFooter.js +25 -0
  202. package/lib/commonjs/components/ScreenFooter.js.map +1 -0
  203. package/lib/commonjs/components/ScreenFooter.web.js +11 -0
  204. package/lib/commonjs/components/ScreenFooter.web.js.map +1 -0
  205. package/lib/commonjs/components/ScreenStack.js +67 -0
  206. package/lib/commonjs/components/ScreenStack.js.map +1 -0
  207. package/lib/commonjs/components/ScreenStack.web.js +10 -0
  208. package/lib/commonjs/components/ScreenStack.web.js.map +1 -0
  209. package/lib/commonjs/components/ScreenStackHeaderConfig.js +100 -0
  210. package/lib/commonjs/components/ScreenStackHeaderConfig.js.map +1 -0
  211. package/lib/commonjs/components/ScreenStackHeaderConfig.web.js +39 -0
  212. package/lib/commonjs/components/ScreenStackHeaderConfig.web.js.map +1 -0
  213. package/lib/commonjs/components/ScreenStackItem.js +106 -0
  214. package/lib/commonjs/components/ScreenStackItem.js.map +1 -0
  215. package/lib/commonjs/components/SearchBar.js +67 -0
  216. package/lib/commonjs/components/SearchBar.js.map +1 -0
  217. package/lib/commonjs/components/SearchBar.web.js +10 -0
  218. package/lib/commonjs/components/SearchBar.web.js.map +1 -0
  219. package/lib/commonjs/components/helpers/DelayedFreeze.js +31 -0
  220. package/lib/commonjs/components/helpers/DelayedFreeze.js.map +1 -0
  221. package/lib/commonjs/components/helpers/usePrevious.js +16 -0
  222. package/lib/commonjs/components/helpers/usePrevious.js.map +1 -0
  223. package/lib/commonjs/contexts.js +11 -0
  224. package/lib/commonjs/contexts.js.map +1 -0
  225. package/lib/commonjs/core.js +40 -0
  226. package/lib/commonjs/core.js.map +1 -0
  227. package/lib/commonjs/fabric/FullWindowOverlayNativeComponent.js +17 -2
  228. package/lib/commonjs/fabric/FullWindowOverlayNativeComponent.js.map +1 -1
  229. package/lib/commonjs/fabric/ModalScreenNativeComponent.js +14 -0
  230. package/lib/commonjs/fabric/ModalScreenNativeComponent.js.map +1 -0
  231. package/lib/commonjs/fabric/NativeScreensModule.js +10 -0
  232. package/lib/commonjs/fabric/NativeScreensModule.js.map +1 -0
  233. package/lib/commonjs/fabric/NativeScreensModule.web.js +8 -0
  234. package/lib/commonjs/fabric/NativeScreensModule.web.js.map +1 -0
  235. package/lib/commonjs/fabric/ScreenContainerNativeComponent.js +8 -11
  236. package/lib/commonjs/fabric/ScreenContainerNativeComponent.js.map +1 -1
  237. package/lib/commonjs/fabric/ScreenContentWrapperNativeComponent.js +18 -0
  238. package/lib/commonjs/fabric/ScreenContentWrapperNativeComponent.js.map +1 -0
  239. package/lib/commonjs/fabric/ScreenFooterNativeComponent.js +10 -0
  240. package/lib/commonjs/fabric/ScreenFooterNativeComponent.js.map +1 -0
  241. package/lib/commonjs/fabric/ScreenNativeComponent.js +13 -15
  242. package/lib/commonjs/fabric/ScreenNativeComponent.js.map +1 -1
  243. package/lib/commonjs/fabric/ScreenNavigationContainerNativeComponent.js +3 -2
  244. package/lib/commonjs/fabric/ScreenNavigationContainerNativeComponent.js.map +1 -1
  245. package/lib/commonjs/fabric/ScreenStackHeaderConfigNativeComponent.js +10 -9
  246. package/lib/commonjs/fabric/ScreenStackHeaderConfigNativeComponent.js.map +1 -1
  247. package/lib/commonjs/fabric/ScreenStackHeaderSubviewNativeComponent.js +6 -3
  248. package/lib/commonjs/fabric/ScreenStackHeaderSubviewNativeComponent.js.map +1 -1
  249. package/lib/commonjs/fabric/ScreenStackNativeComponent.js +8 -11
  250. package/lib/commonjs/fabric/ScreenStackNativeComponent.js.map +1 -1
  251. package/lib/commonjs/fabric/SearchBarNativeComponent.js +5 -6
  252. package/lib/commonjs/fabric/SearchBarNativeComponent.js.map +1 -1
  253. package/lib/commonjs/gesture-handler/GestureDetectorProvider.js +19 -0
  254. package/lib/commonjs/gesture-handler/GestureDetectorProvider.js.map +1 -0
  255. package/lib/commonjs/gesture-handler/RNScreensTurboModule.js +8 -0
  256. package/lib/commonjs/gesture-handler/RNScreensTurboModule.js.map +1 -0
  257. package/lib/commonjs/gesture-handler/ScreenGestureDetector.js +200 -0
  258. package/lib/commonjs/gesture-handler/ScreenGestureDetector.js.map +1 -0
  259. package/lib/commonjs/gesture-handler/constraints.js +64 -0
  260. package/lib/commonjs/gesture-handler/constraints.js.map +1 -0
  261. package/lib/commonjs/gesture-handler/defaults.js +45 -0
  262. package/lib/commonjs/gesture-handler/defaults.js.map +1 -0
  263. package/lib/commonjs/gesture-handler/fabricUtils.js +66 -0
  264. package/lib/commonjs/gesture-handler/fabricUtils.js.map +1 -0
  265. package/lib/commonjs/gesture-handler/fabricUtils.web.js +17 -0
  266. package/lib/commonjs/gesture-handler/fabricUtils.web.js.map +1 -0
  267. package/lib/commonjs/gesture-handler/index.js +14 -0
  268. package/lib/commonjs/gesture-handler/index.js.map +1 -0
  269. package/lib/commonjs/index.js +157 -95
  270. package/lib/commonjs/index.js.map +1 -1
  271. package/lib/commonjs/native-stack/contexts/GHContext.js +12 -0
  272. package/lib/commonjs/native-stack/contexts/GHContext.js.map +1 -0
  273. package/lib/commonjs/native-stack/index.js +1 -1
  274. package/lib/commonjs/native-stack/index.js.map +1 -1
  275. package/lib/commonjs/native-stack/navigators/createNativeStackNavigator.js +24 -24
  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 +1 -2
  279. package/lib/commonjs/native-stack/utils/AnimatedHeaderHeightContext.js.map +1 -1
  280. package/lib/commonjs/native-stack/utils/HeaderHeightContext.js +1 -2
  281. package/lib/commonjs/native-stack/utils/HeaderHeightContext.js.map +1 -1
  282. package/lib/commonjs/native-stack/utils/SafeAreaProviderCompat.js +1 -2
  283. package/lib/commonjs/native-stack/utils/SafeAreaProviderCompat.js.map +1 -1
  284. package/lib/commonjs/native-stack/utils/getDefaultHeaderHeight.js.map +1 -1
  285. package/lib/commonjs/native-stack/utils/getStatusBarHeight.js +22 -0
  286. package/lib/commonjs/native-stack/utils/getStatusBarHeight.js.map +1 -0
  287. package/lib/commonjs/native-stack/utils/useAnimatedHeaderHeight.js +2 -3
  288. package/lib/commonjs/native-stack/utils/useAnimatedHeaderHeight.js.map +1 -1
  289. package/lib/commonjs/native-stack/utils/useBackPressSubscription.js +5 -6
  290. package/lib/commonjs/native-stack/utils/useBackPressSubscription.js.map +1 -1
  291. package/lib/commonjs/native-stack/utils/useHeaderHeight.js +2 -3
  292. package/lib/commonjs/native-stack/utils/useHeaderHeight.js.map +1 -1
  293. package/lib/commonjs/native-stack/views/FontProcessor.js +2 -4
  294. package/lib/commonjs/native-stack/views/FontProcessor.js.map +1 -1
  295. package/lib/commonjs/native-stack/views/FooterComponent.js +17 -0
  296. package/lib/commonjs/native-stack/views/FooterComponent.js.map +1 -0
  297. package/lib/commonjs/native-stack/views/HeaderConfig.js +23 -15
  298. package/lib/commonjs/native-stack/views/HeaderConfig.js.map +1 -1
  299. package/lib/commonjs/native-stack/views/NativeStackView.js +124 -56
  300. package/lib/commonjs/native-stack/views/NativeStackView.js.map +1 -1
  301. package/lib/commonjs/reanimated/ReanimatedHeaderHeightContext.js +1 -2
  302. package/lib/commonjs/reanimated/ReanimatedHeaderHeightContext.js.map +1 -1
  303. package/lib/commonjs/reanimated/ReanimatedNativeStackScreen.js +14 -21
  304. package/lib/commonjs/reanimated/ReanimatedNativeStackScreen.js.map +1 -1
  305. package/lib/commonjs/reanimated/ReanimatedScreen.js +4 -4
  306. package/lib/commonjs/reanimated/ReanimatedScreen.js.map +1 -1
  307. package/lib/commonjs/reanimated/ReanimatedScreenProvider.js +10 -18
  308. package/lib/commonjs/reanimated/ReanimatedScreenProvider.js.map +1 -1
  309. package/lib/commonjs/reanimated/ReanimatedTransitionProgressContext.js +1 -2
  310. package/lib/commonjs/reanimated/ReanimatedTransitionProgressContext.js.map +1 -1
  311. package/lib/commonjs/reanimated/index.js +1 -1
  312. package/lib/commonjs/reanimated/index.js.map +1 -1
  313. package/lib/commonjs/reanimated/useReanimatedHeaderHeight.js +4 -5
  314. package/lib/commonjs/reanimated/useReanimatedHeaderHeight.js.map +1 -1
  315. package/lib/commonjs/reanimated/useReanimatedTransitionProgress.js +2 -3
  316. package/lib/commonjs/reanimated/useReanimatedTransitionProgress.js.map +1 -1
  317. package/lib/commonjs/types.js.map +1 -1
  318. package/lib/commonjs/useTransitionProgress.js +2 -3
  319. package/lib/commonjs/useTransitionProgress.js.map +1 -1
  320. package/lib/commonjs/utils.js +28 -6
  321. package/lib/commonjs/utils.js.map +1 -1
  322. package/lib/module/TransitionProgressContext.js +2 -0
  323. package/lib/module/TransitionProgressContext.js.map +1 -1
  324. package/lib/module/components/DebugContainer.js +30 -0
  325. package/lib/module/components/DebugContainer.js.map +1 -0
  326. package/lib/module/components/DebugContainer.web.js +6 -0
  327. package/lib/module/components/DebugContainer.web.js.map +1 -0
  328. package/lib/module/components/FullWindowOverlay.js +24 -0
  329. package/lib/module/components/FullWindowOverlay.js.map +1 -0
  330. package/lib/module/components/FullWindowOverlay.web.js +3 -0
  331. package/lib/module/components/FullWindowOverlay.web.js.map +1 -0
  332. package/lib/module/components/Screen.js +282 -0
  333. package/lib/module/components/Screen.js.map +1 -0
  334. package/lib/module/components/Screen.web.js +41 -0
  335. package/lib/module/components/Screen.web.js.map +1 -0
  336. package/lib/module/components/ScreenContainer.js +26 -0
  337. package/lib/module/components/ScreenContainer.js.map +1 -0
  338. package/lib/module/components/ScreenContainer.web.js +4 -0
  339. package/lib/module/components/ScreenContainer.web.js.map +1 -0
  340. package/lib/module/components/ScreenContentWrapper.js +10 -0
  341. package/lib/module/components/ScreenContentWrapper.js.map +1 -0
  342. package/lib/module/components/ScreenContentWrapper.web.js +4 -0
  343. package/lib/module/components/ScreenContentWrapper.web.js.map +1 -0
  344. package/lib/module/components/ScreenFooter.js +18 -0
  345. package/lib/module/components/ScreenFooter.js.map +1 -0
  346. package/lib/module/components/ScreenFooter.web.js +6 -0
  347. package/lib/module/components/ScreenFooter.web.js.map +1 -0
  348. package/lib/module/components/ScreenStack.js +63 -0
  349. package/lib/module/components/ScreenStack.js.map +1 -0
  350. package/lib/module/components/ScreenStack.web.js +4 -0
  351. package/lib/module/components/ScreenStack.web.js.map +1 -0
  352. package/lib/module/components/ScreenStackHeaderConfig.js +91 -0
  353. package/lib/module/components/ScreenStackHeaderConfig.js.map +1 -0
  354. package/lib/module/components/ScreenStackHeaderConfig.web.js +26 -0
  355. package/lib/module/components/ScreenStackHeaderConfig.web.js.map +1 -0
  356. package/lib/module/components/ScreenStackItem.js +98 -0
  357. package/lib/module/components/ScreenStackItem.js.map +1 -0
  358. package/lib/module/components/SearchBar.js +62 -0
  359. package/lib/module/components/SearchBar.js.map +1 -0
  360. package/lib/module/components/SearchBar.web.js +4 -0
  361. package/lib/module/components/SearchBar.web.js.map +1 -0
  362. package/lib/module/components/helpers/DelayedFreeze.js +24 -0
  363. package/lib/module/components/helpers/DelayedFreeze.js.map +1 -0
  364. package/lib/module/components/helpers/usePrevious.js +10 -0
  365. package/lib/module/components/helpers/usePrevious.js.map +1 -0
  366. package/lib/module/contexts.js +4 -0
  367. package/lib/module/contexts.js.map +1 -0
  368. package/lib/module/core.js +31 -0
  369. package/lib/module/core.js.map +1 -0
  370. package/lib/module/fabric/FullWindowOverlayNativeComponent.js +16 -0
  371. package/lib/module/fabric/FullWindowOverlayNativeComponent.js.map +1 -1
  372. package/lib/module/fabric/ModalScreenNativeComponent.js +10 -0
  373. package/lib/module/fabric/ModalScreenNativeComponent.js.map +1 -0
  374. package/lib/module/fabric/NativeScreensModule.js +5 -0
  375. package/lib/module/fabric/NativeScreensModule.js.map +1 -0
  376. package/lib/module/fabric/NativeScreensModule.web.js +2 -0
  377. package/lib/module/fabric/NativeScreensModule.web.js.map +1 -0
  378. package/lib/module/fabric/ScreenContainerNativeComponent.js +3 -4
  379. package/lib/module/fabric/ScreenContainerNativeComponent.js.map +1 -1
  380. package/lib/module/fabric/ScreenContentWrapperNativeComponent.js +10 -0
  381. package/lib/module/fabric/ScreenContentWrapperNativeComponent.js.map +1 -0
  382. package/lib/module/fabric/ScreenFooterNativeComponent.js +3 -0
  383. package/lib/module/fabric/ScreenFooterNativeComponent.js.map +1 -0
  384. package/lib/module/fabric/ScreenNativeComponent.js +8 -7
  385. package/lib/module/fabric/ScreenNativeComponent.js.map +1 -1
  386. package/lib/module/fabric/ScreenNavigationContainerNativeComponent.js +2 -0
  387. package/lib/module/fabric/ScreenNavigationContainerNativeComponent.js.map +1 -1
  388. package/lib/module/fabric/ScreenStackHeaderConfigNativeComponent.js +8 -2
  389. package/lib/module/fabric/ScreenStackHeaderConfigNativeComponent.js.map +1 -1
  390. package/lib/module/fabric/ScreenStackHeaderSubviewNativeComponent.js +5 -1
  391. package/lib/module/fabric/ScreenStackHeaderSubviewNativeComponent.js.map +1 -1
  392. package/lib/module/fabric/ScreenStackNativeComponent.js +3 -3
  393. package/lib/module/fabric/ScreenStackNativeComponent.js.map +1 -1
  394. package/lib/module/fabric/SearchBarNativeComponent.js +3 -1
  395. package/lib/module/fabric/SearchBarNativeComponent.js.map +1 -1
  396. package/lib/module/gesture-handler/GestureDetectorProvider.js +12 -0
  397. package/lib/module/gesture-handler/GestureDetectorProvider.js.map +1 -0
  398. package/lib/module/gesture-handler/RNScreensTurboModule.js +2 -0
  399. package/lib/module/gesture-handler/RNScreensTurboModule.js.map +1 -0
  400. package/lib/module/gesture-handler/ScreenGestureDetector.js +193 -0
  401. package/lib/module/gesture-handler/ScreenGestureDetector.js.map +1 -0
  402. package/lib/module/gesture-handler/constraints.js +56 -0
  403. package/lib/module/gesture-handler/constraints.js.map +1 -0
  404. package/lib/module/gesture-handler/defaults.js +39 -0
  405. package/lib/module/gesture-handler/defaults.js.map +1 -0
  406. package/lib/module/gesture-handler/fabricUtils.js +61 -0
  407. package/lib/module/gesture-handler/fabricUtils.js.map +1 -0
  408. package/lib/module/gesture-handler/fabricUtils.web.js +10 -0
  409. package/lib/module/gesture-handler/fabricUtils.web.js.map +1 -0
  410. package/lib/module/gesture-handler/index.js +5 -0
  411. package/lib/module/gesture-handler/index.js.map +1 -0
  412. package/lib/module/index.js +29 -64
  413. package/lib/module/index.js.map +1 -1
  414. package/lib/module/native-stack/contexts/GHContext.js +6 -0
  415. package/lib/module/native-stack/contexts/GHContext.js.map +1 -0
  416. package/lib/module/native-stack/index.js.map +1 -1
  417. package/lib/module/native-stack/navigators/createNativeStackNavigator.js +22 -21
  418. package/lib/module/native-stack/navigators/createNativeStackNavigator.js.map +1 -1
  419. package/lib/module/native-stack/types.js.map +1 -1
  420. package/lib/module/native-stack/utils/AnimatedHeaderHeightContext.js.map +1 -1
  421. package/lib/module/native-stack/utils/HeaderHeightContext.js.map +1 -1
  422. package/lib/module/native-stack/utils/SafeAreaProviderCompat.js.map +1 -1
  423. package/lib/module/native-stack/utils/getDefaultHeaderHeight.js.map +1 -1
  424. package/lib/module/native-stack/utils/getStatusBarHeight.js +16 -0
  425. package/lib/module/native-stack/utils/getStatusBarHeight.js.map +1 -0
  426. package/lib/module/native-stack/utils/useAnimatedHeaderHeight.js.map +1 -1
  427. package/lib/module/native-stack/utils/useBackPressSubscription.js +4 -5
  428. package/lib/module/native-stack/utils/useBackPressSubscription.js.map +1 -1
  429. package/lib/module/native-stack/utils/useHeaderHeight.js.map +1 -1
  430. package/lib/module/native-stack/views/FontProcessor.js +2 -3
  431. package/lib/module/native-stack/views/FontProcessor.js.map +1 -1
  432. package/lib/module/native-stack/views/FooterComponent.js +10 -0
  433. package/lib/module/native-stack/views/FooterComponent.js.map +1 -0
  434. package/lib/module/native-stack/views/HeaderConfig.js +14 -6
  435. package/lib/module/native-stack/views/HeaderConfig.js.map +1 -1
  436. package/lib/module/native-stack/views/NativeStackView.js +118 -47
  437. package/lib/module/native-stack/views/NativeStackView.js.map +1 -1
  438. package/lib/module/reanimated/ReanimatedHeaderHeightContext.js.map +1 -1
  439. package/lib/module/reanimated/ReanimatedNativeStackScreen.js +9 -13
  440. package/lib/module/reanimated/ReanimatedNativeStackScreen.js.map +1 -1
  441. package/lib/module/reanimated/ReanimatedScreen.js +2 -3
  442. package/lib/module/reanimated/ReanimatedScreen.js.map +1 -1
  443. package/lib/module/reanimated/ReanimatedScreenProvider.js +8 -16
  444. package/lib/module/reanimated/ReanimatedScreenProvider.js.map +1 -1
  445. package/lib/module/reanimated/ReanimatedTransitionProgressContext.js.map +1 -1
  446. package/lib/module/reanimated/index.js.map +1 -1
  447. package/lib/module/reanimated/useReanimatedHeaderHeight.js +1 -1
  448. package/lib/module/reanimated/useReanimatedHeaderHeight.js.map +1 -1
  449. package/lib/module/reanimated/useReanimatedTransitionProgress.js.map +1 -1
  450. package/lib/module/types.js.map +1 -1
  451. package/lib/module/useTransitionProgress.js.map +1 -1
  452. package/lib/module/utils.js +26 -5
  453. package/lib/module/utils.js.map +1 -1
  454. package/lib/typescript/TransitionProgressContext.d.ts +2 -1
  455. package/lib/typescript/TransitionProgressContext.d.ts.map +1 -0
  456. package/lib/typescript/components/DebugContainer.d.ts +15 -0
  457. package/lib/typescript/components/DebugContainer.d.ts.map +1 -0
  458. package/lib/typescript/components/DebugContainer.web.d.ts +4 -0
  459. package/lib/typescript/components/DebugContainer.web.d.ts.map +1 -0
  460. package/lib/typescript/components/FullWindowOverlay.d.ts +6 -0
  461. package/lib/typescript/components/FullWindowOverlay.d.ts.map +1 -0
  462. package/lib/typescript/components/FullWindowOverlay.web.d.ts +6 -0
  463. package/lib/typescript/components/FullWindowOverlay.web.d.ts.map +1 -0
  464. package/lib/typescript/components/Screen.d.ts +8 -0
  465. package/lib/typescript/components/Screen.d.ts.map +1 -0
  466. package/lib/typescript/components/Screen.web.d.ts +11 -0
  467. package/lib/typescript/components/Screen.web.d.ts.map +1 -0
  468. package/lib/typescript/components/ScreenContainer.d.ts +5 -0
  469. package/lib/typescript/components/ScreenContainer.d.ts.map +1 -0
  470. package/lib/typescript/components/ScreenContainer.web.d.ts +4 -0
  471. package/lib/typescript/components/ScreenContainer.web.d.ts.map +1 -0
  472. package/lib/typescript/components/ScreenContentWrapper.d.ts +5 -0
  473. package/lib/typescript/components/ScreenContentWrapper.d.ts.map +1 -0
  474. package/lib/typescript/components/ScreenContentWrapper.web.d.ts +4 -0
  475. package/lib/typescript/components/ScreenContentWrapper.web.d.ts.map +1 -0
  476. package/lib/typescript/components/ScreenFooter.d.ts +12 -0
  477. package/lib/typescript/components/ScreenFooter.d.ts.map +1 -0
  478. package/lib/typescript/components/ScreenFooter.web.d.ts +6 -0
  479. package/lib/typescript/components/ScreenFooter.web.d.ts.map +1 -0
  480. package/lib/typescript/components/ScreenStack.d.ts +5 -0
  481. package/lib/typescript/components/ScreenStack.d.ts.map +1 -0
  482. package/lib/typescript/components/ScreenStack.web.d.ts +4 -0
  483. package/lib/typescript/components/ScreenStack.web.d.ts.map +1 -0
  484. package/lib/typescript/components/ScreenStackHeaderConfig.d.ts +13 -0
  485. package/lib/typescript/components/ScreenStackHeaderConfig.d.ts.map +1 -0
  486. package/lib/typescript/components/ScreenStackHeaderConfig.web.d.ts +13 -0
  487. package/lib/typescript/components/ScreenStackHeaderConfig.web.d.ts.map +1 -0
  488. package/lib/typescript/components/ScreenStackItem.d.ts +11 -0
  489. package/lib/typescript/components/ScreenStackItem.d.ts.map +1 -0
  490. package/lib/typescript/components/SearchBar.d.ts +5 -0
  491. package/lib/typescript/components/SearchBar.d.ts.map +1 -0
  492. package/lib/typescript/components/SearchBar.web.d.ts +4 -0
  493. package/lib/typescript/components/SearchBar.web.d.ts.map +1 -0
  494. package/lib/typescript/components/helpers/DelayedFreeze.d.ts +8 -0
  495. package/lib/typescript/components/helpers/DelayedFreeze.d.ts.map +1 -0
  496. package/lib/typescript/components/helpers/usePrevious.d.ts +2 -0
  497. package/lib/typescript/components/helpers/usePrevious.d.ts.map +1 -0
  498. package/lib/typescript/contexts.d.ts +5 -0
  499. package/lib/typescript/contexts.d.ts.map +1 -0
  500. package/lib/typescript/core.d.ts +6 -0
  501. package/lib/typescript/core.d.ts.map +1 -0
  502. package/lib/typescript/fabric/FullWindowOverlayNativeComponent.d.ts +1 -1
  503. package/lib/typescript/fabric/FullWindowOverlayNativeComponent.d.ts.map +1 -0
  504. package/lib/typescript/fabric/ModalScreenNativeComponent.d.ts +76 -0
  505. package/lib/typescript/fabric/ModalScreenNativeComponent.d.ts.map +1 -0
  506. package/lib/typescript/fabric/NativeScreensModule.d.ts +6 -0
  507. package/lib/typescript/fabric/NativeScreensModule.d.ts.map +1 -0
  508. package/lib/typescript/fabric/NativeScreensModule.web.d.ts +3 -0
  509. package/lib/typescript/fabric/NativeScreensModule.web.d.ts.map +1 -0
  510. package/lib/typescript/fabric/ScreenContainerNativeComponent.d.ts +1 -0
  511. package/lib/typescript/fabric/ScreenContainerNativeComponent.d.ts.map +1 -0
  512. package/lib/typescript/fabric/ScreenContentWrapperNativeComponent.d.ts +6 -0
  513. package/lib/typescript/fabric/ScreenContentWrapperNativeComponent.d.ts.map +1 -0
  514. package/lib/typescript/fabric/ScreenFooterNativeComponent.d.ts +7 -0
  515. package/lib/typescript/fabric/ScreenFooterNativeComponent.d.ts.map +1 -0
  516. package/lib/typescript/fabric/ScreenNativeComponent.d.ts +34 -24
  517. package/lib/typescript/fabric/ScreenNativeComponent.d.ts.map +1 -0
  518. package/lib/typescript/fabric/ScreenNavigationContainerNativeComponent.d.ts +1 -1
  519. package/lib/typescript/fabric/ScreenNavigationContainerNativeComponent.d.ts.map +1 -0
  520. package/lib/typescript/fabric/ScreenStackHeaderConfigNativeComponent.d.ts +12 -2
  521. package/lib/typescript/fabric/ScreenStackHeaderConfigNativeComponent.d.ts.map +1 -0
  522. package/lib/typescript/fabric/ScreenStackHeaderSubviewNativeComponent.d.ts +2 -2
  523. package/lib/typescript/fabric/ScreenStackHeaderSubviewNativeComponent.d.ts.map +1 -0
  524. package/lib/typescript/fabric/ScreenStackNativeComponent.d.ts +4 -2
  525. package/lib/typescript/fabric/ScreenStackNativeComponent.d.ts.map +1 -0
  526. package/lib/typescript/fabric/SearchBarNativeComponent.d.ts +17 -16
  527. package/lib/typescript/fabric/SearchBarNativeComponent.d.ts.map +1 -0
  528. package/lib/typescript/gesture-handler/GestureDetectorProvider.d.ts +5 -0
  529. package/lib/typescript/gesture-handler/GestureDetectorProvider.d.ts.map +1 -0
  530. package/lib/typescript/gesture-handler/RNScreensTurboModule.d.ts +13 -0
  531. package/lib/typescript/gesture-handler/RNScreensTurboModule.d.ts.map +1 -0
  532. package/lib/typescript/gesture-handler/ScreenGestureDetector.d.ts +5 -0
  533. package/lib/typescript/gesture-handler/ScreenGestureDetector.d.ts.map +1 -0
  534. package/lib/typescript/gesture-handler/constraints.d.ts +6 -0
  535. package/lib/typescript/gesture-handler/constraints.d.ts.map +1 -0
  536. package/lib/typescript/gesture-handler/defaults.d.ts +20 -0
  537. package/lib/typescript/gesture-handler/defaults.d.ts.map +1 -0
  538. package/lib/typescript/gesture-handler/fabricUtils.d.ts +10 -0
  539. package/lib/typescript/gesture-handler/fabricUtils.d.ts.map +1 -0
  540. package/lib/typescript/gesture-handler/fabricUtils.web.d.ts +6 -0
  541. package/lib/typescript/gesture-handler/fabricUtils.web.d.ts.map +1 -0
  542. package/lib/typescript/gesture-handler/index.d.ts +2 -0
  543. package/lib/typescript/gesture-handler/index.d.ts.map +1 -0
  544. package/lib/typescript/index.d.ts +25 -31
  545. package/lib/typescript/index.d.ts.map +1 -0
  546. package/lib/typescript/native-stack/contexts/GHContext.d.ts +4 -0
  547. package/lib/typescript/native-stack/contexts/GHContext.d.ts.map +1 -0
  548. package/lib/typescript/native-stack/index.d.ts +1 -0
  549. package/lib/typescript/native-stack/index.d.ts.map +1 -0
  550. package/lib/typescript/native-stack/navigators/createNativeStackNavigator.d.ts +4 -0
  551. package/lib/typescript/native-stack/navigators/createNativeStackNavigator.d.ts.map +1 -0
  552. package/lib/typescript/native-stack/types.d.ts +191 -33
  553. package/lib/typescript/native-stack/types.d.ts.map +1 -0
  554. package/lib/typescript/native-stack/utils/AnimatedHeaderHeightContext.d.ts +1 -0
  555. package/lib/typescript/native-stack/utils/AnimatedHeaderHeightContext.d.ts.map +1 -0
  556. package/lib/typescript/native-stack/utils/HeaderHeightContext.d.ts +1 -0
  557. package/lib/typescript/native-stack/utils/HeaderHeightContext.d.ts.map +1 -0
  558. package/lib/typescript/native-stack/utils/SafeAreaProviderCompat.d.ts +2 -1
  559. package/lib/typescript/native-stack/utils/SafeAreaProviderCompat.d.ts.map +1 -0
  560. package/lib/typescript/native-stack/utils/getDefaultHeaderHeight.d.ts +3 -2
  561. package/lib/typescript/native-stack/utils/getDefaultHeaderHeight.d.ts.map +1 -0
  562. package/lib/typescript/native-stack/utils/getStatusBarHeight.d.ts +3 -0
  563. package/lib/typescript/native-stack/utils/getStatusBarHeight.d.ts.map +1 -0
  564. package/lib/typescript/native-stack/utils/useAnimatedHeaderHeight.d.ts +2 -1
  565. package/lib/typescript/native-stack/utils/useAnimatedHeaderHeight.d.ts.map +1 -0
  566. package/lib/typescript/native-stack/utils/useBackPressSubscription.d.ts +1 -0
  567. package/lib/typescript/native-stack/utils/useBackPressSubscription.d.ts.map +1 -0
  568. package/lib/typescript/native-stack/utils/useHeaderHeight.d.ts +1 -0
  569. package/lib/typescript/native-stack/utils/useHeaderHeight.d.ts.map +1 -0
  570. package/lib/typescript/native-stack/views/FontProcessor.d.ts +1 -0
  571. package/lib/typescript/native-stack/views/FontProcessor.d.ts.map +1 -0
  572. package/lib/typescript/native-stack/views/FooterComponent.d.ts +7 -0
  573. package/lib/typescript/native-stack/views/FooterComponent.d.ts.map +1 -0
  574. package/lib/typescript/native-stack/views/HeaderConfig.d.ts +4 -3
  575. package/lib/typescript/native-stack/views/HeaderConfig.d.ts.map +1 -0
  576. package/lib/typescript/native-stack/views/NativeStackView.d.ts +2 -1
  577. package/lib/typescript/native-stack/views/NativeStackView.d.ts.map +1 -0
  578. package/lib/typescript/reanimated/ReanimatedHeaderHeightContext.d.ts +1 -0
  579. package/lib/typescript/reanimated/ReanimatedHeaderHeightContext.d.ts.map +1 -0
  580. package/lib/typescript/reanimated/ReanimatedNativeStackScreen.d.ts +3 -3
  581. package/lib/typescript/reanimated/ReanimatedNativeStackScreen.d.ts.map +1 -0
  582. package/lib/typescript/reanimated/ReanimatedScreen.d.ts +3 -3
  583. package/lib/typescript/reanimated/ReanimatedScreen.d.ts.map +1 -0
  584. package/lib/typescript/reanimated/ReanimatedScreenProvider.d.ts +1 -0
  585. package/lib/typescript/reanimated/ReanimatedScreenProvider.d.ts.map +1 -0
  586. package/lib/typescript/reanimated/ReanimatedTransitionProgressContext.d.ts +2 -1
  587. package/lib/typescript/reanimated/ReanimatedTransitionProgressContext.d.ts.map +1 -0
  588. package/lib/typescript/reanimated/index.d.ts +1 -0
  589. package/lib/typescript/reanimated/index.d.ts.map +1 -0
  590. package/lib/typescript/reanimated/useReanimatedHeaderHeight.d.ts +2 -3
  591. package/lib/typescript/reanimated/useReanimatedHeaderHeight.d.ts.map +1 -0
  592. package/lib/typescript/reanimated/useReanimatedTransitionProgress.d.ts +4 -9
  593. package/lib/typescript/reanimated/useReanimatedTransitionProgress.d.ts.map +1 -0
  594. package/lib/typescript/types.d.ts +187 -37
  595. package/lib/typescript/types.d.ts.map +1 -0
  596. package/lib/typescript/useTransitionProgress.d.ts +4 -3
  597. package/lib/typescript/useTransitionProgress.d.ts.map +1 -0
  598. package/lib/typescript/utils.d.ts +27 -1
  599. package/lib/typescript/utils.d.ts.map +1 -0
  600. package/native-stack/README.md +156 -108
  601. package/native-stack/package.json +4 -4
  602. package/oss-attribution/attribution.txt +77 -0
  603. package/oss-attribution/licenseInfos.json +27 -0
  604. package/package.json +196 -1
  605. package/react-native.config.js +19 -16
  606. package/reanimated/package.json +1 -1
  607. package/src/TransitionProgressContext.tsx +3 -1
  608. package/src/components/DebugContainer.tsx +46 -0
  609. package/src/components/DebugContainer.web.tsx +7 -0
  610. package/src/components/FullWindowOverlay.tsx +33 -0
  611. package/src/components/FullWindowOverlay.web.tsx +6 -0
  612. package/src/components/Screen.tsx +392 -0
  613. package/src/components/Screen.web.tsx +47 -0
  614. package/src/components/ScreenContainer.tsx +28 -0
  615. package/src/components/ScreenContainer.web.tsx +5 -0
  616. package/src/components/ScreenContentWrapper.tsx +9 -0
  617. package/src/components/ScreenContentWrapper.web.tsx +5 -0
  618. package/src/components/ScreenFooter.tsx +20 -0
  619. package/src/components/ScreenFooter.web.tsx +7 -0
  620. package/src/components/ScreenStack.tsx +112 -0
  621. package/src/components/ScreenStack.web.tsx +5 -0
  622. package/src/components/ScreenStackHeaderConfig.tsx +127 -0
  623. package/src/components/ScreenStackHeaderConfig.web.tsx +45 -0
  624. package/src/components/ScreenStackItem.tsx +174 -0
  625. package/src/components/SearchBar.tsx +105 -0
  626. package/src/components/SearchBar.web.tsx +5 -0
  627. package/src/components/helpers/DelayedFreeze.tsx +27 -0
  628. package/src/components/helpers/usePrevious.tsx +12 -0
  629. package/src/contexts.tsx +9 -0
  630. package/src/core.ts +45 -0
  631. package/src/fabric/FullWindowOverlayNativeComponent.ts +16 -0
  632. package/src/fabric/ModalScreenNativeComponent.ts +115 -0
  633. package/src/fabric/NativeScreensModule.ts +8 -0
  634. package/src/fabric/NativeScreensModule.web.ts +1 -0
  635. package/src/fabric/ScreenContainerNativeComponent.ts +3 -3
  636. package/src/fabric/ScreenContentWrapperNativeComponent.ts +14 -0
  637. package/src/fabric/ScreenFooterNativeComponent.ts +6 -0
  638. package/src/fabric/ScreenNativeComponent.ts +34 -23
  639. package/src/fabric/ScreenNavigationContainerNativeComponent.ts +3 -1
  640. package/src/fabric/ScreenStackHeaderConfigNativeComponent.ts +38 -2
  641. package/src/fabric/ScreenStackHeaderSubviewNativeComponent.ts +5 -1
  642. package/src/fabric/ScreenStackNativeComponent.ts +3 -2
  643. package/src/fabric/SearchBarNativeComponent.ts +17 -13
  644. package/src/gesture-handler/GestureDetectorProvider.tsx +16 -0
  645. package/src/gesture-handler/RNScreensTurboModule.ts +13 -0
  646. package/src/gesture-handler/ScreenGestureDetector.tsx +241 -0
  647. package/src/gesture-handler/constraints.ts +87 -0
  648. package/src/gesture-handler/defaults.ts +46 -0
  649. package/src/gesture-handler/fabricUtils.ts +86 -0
  650. package/src/gesture-handler/fabricUtils.web.ts +10 -0
  651. package/src/gesture-handler/index.tsx +4 -0
  652. package/src/index.tsx +49 -113
  653. package/src/native-stack/contexts/GHContext.tsx +9 -0
  654. package/src/native-stack/navigators/createNativeStackNavigator.tsx +6 -3
  655. package/src/native-stack/types.tsx +204 -31
  656. package/src/native-stack/utils/getDefaultHeaderHeight.tsx +2 -2
  657. package/src/native-stack/utils/getStatusBarHeight.tsx +22 -0
  658. package/src/native-stack/utils/useAnimatedHeaderHeight.tsx +1 -1
  659. package/src/native-stack/utils/useBackPressSubscription.tsx +3 -2
  660. package/src/native-stack/utils/useHeaderHeight.tsx +1 -1
  661. package/src/native-stack/views/FontProcessor.tsx +2 -2
  662. package/src/native-stack/views/FooterComponent.tsx +10 -0
  663. package/src/native-stack/views/HeaderConfig.tsx +22 -6
  664. package/src/native-stack/views/NativeStackView.tsx +141 -54
  665. package/src/reanimated/ReanimatedHeaderHeightContext.tsx +1 -1
  666. package/src/reanimated/ReanimatedNativeStackScreen.tsx +15 -13
  667. package/src/reanimated/ReanimatedScreen.tsx +4 -3
  668. package/src/reanimated/ReanimatedScreenProvider.tsx +3 -2
  669. package/src/reanimated/useReanimatedHeaderHeight.tsx +2 -2
  670. package/src/reanimated/useReanimatedTransitionProgress.tsx +1 -1
  671. package/src/types.tsx +213 -41
  672. package/src/useTransitionProgress.tsx +1 -1
  673. package/src/utils.ts +27 -5
  674. package/windows/README.md +4 -1
  675. package/windows/RNScreens/Screen.h +3 -1
  676. package/SystemBundles/3d72c1ccdc1866604203e2067a94f7ab2c45408da644bb242aa980ffea58a74d.bundle +0 -33190
  677. package/SystemBundles/3d72c1ccdc1866604203e2067a94f7ab2c45408da644bb242aa980ffea58a74d.map +0 -10181
  678. package/SystemModules/amzn__react-native-screens.modules.txt +0 -101
  679. package/SystemModules/amzn__react-native-screens.private.modules.txt +0 -243
  680. package/lib/commonjs/index.native.js +0 -409
  681. package/lib/commonjs/index.native.js.map +0 -1
  682. package/lib/module/index.native.js +0 -412
  683. package/lib/module/index.native.js.map +0 -1
  684. package/lib/typescript/index.native.d.ts +0 -2
  685. package/src/index.native.tsx +0 -601
@@ -2,63 +2,73 @@ package com.swmansion.rnscreens
2
2
 
3
3
  import android.content.Context
4
4
  import android.graphics.Canvas
5
+ import android.os.Build
5
6
  import android.view.View
6
7
  import com.facebook.react.bridge.ReactContext
7
8
  import com.facebook.react.uimanager.UIManagerHelper
8
9
  import com.swmansion.rnscreens.Screen.StackAnimation
10
+ import com.swmansion.rnscreens.bottomsheet.DimmingFragment
9
11
  import com.swmansion.rnscreens.events.StackFinishTransitioningEvent
10
12
  import java.util.Collections
11
13
  import kotlin.collections.ArrayList
12
14
  import kotlin.collections.HashSet
13
15
 
14
- class ScreenStack(context: Context?) : ScreenContainer(context) {
15
- private val mStack = ArrayList<ScreenStackFragmentWrapper>()
16
- private val mDismissed: MutableSet<ScreenStackFragmentWrapper> = HashSet()
16
+ class ScreenStack(
17
+ context: Context?,
18
+ ) : ScreenContainer(context) {
19
+ private val stack = ArrayList<ScreenStackFragmentWrapper>()
20
+ private val dismissedWrappers: MutableSet<ScreenStackFragmentWrapper> = HashSet()
17
21
  private val drawingOpPool: MutableList<DrawingOp> = ArrayList()
18
22
  private var drawingOps: MutableList<DrawingOp> = ArrayList()
19
- private var mTopScreen: ScreenStackFragmentWrapper? = null
20
- private var mRemovalTransitionStarted = false
23
+ private var topScreenWrapper: ScreenStackFragmentWrapper? = null
24
+ private var removalTransitionStarted = false
21
25
  private var isDetachingCurrentScreen = false
22
26
  private var reverseLastTwoChildren = false
23
27
  private var previousChildrenCount = 0
24
28
  var goingForward = false
25
29
 
30
+ /**
31
+ * Marks given fragment as to-be-dismissed and performs updates on container
32
+ *
33
+ * @param fragmentWrapper to-be-dismissed wrapper
34
+ */
26
35
  fun dismiss(screenFragment: ScreenStackFragmentWrapper) {
27
- mDismissed.add(screenFragment)
36
+ dismissedWrappers.add(screenFragment)
28
37
  performUpdatesNow()
29
38
  }
30
39
 
31
40
  override val topScreen: Screen?
32
- get() = mTopScreen?.screen
41
+ get() = topScreenWrapper?.screen
42
+
43
+ val fragments: ArrayList<ScreenStackFragmentWrapper>
44
+ get() = stack
33
45
 
34
46
  val rootScreen: Screen
35
- get() {
36
- for (i in 0 until screenCount) {
37
- val screenWrapper = getScreenFragmentWrapperAt(i)
38
- if (!mDismissed.contains(screenWrapper)) {
39
- return screenWrapper.screen
40
- }
41
- }
42
- throw IllegalStateException("Stack has no root screen set")
47
+ get() =
48
+ screenWrappers.firstOrNull { !dismissedWrappers.contains(it) }?.screen
49
+ ?: throw IllegalStateException("[RNScreens] Stack has no root screen set")
50
+
51
+ override fun adapt(screen: Screen): ScreenStackFragmentWrapper =
52
+ when (screen.stackPresentation) {
53
+ Screen.StackPresentation.FORM_SHEET -> DimmingFragment(ScreenStackFragment(screen))
54
+ else -> ScreenStackFragment(screen)
43
55
  }
44
56
 
45
- override fun adapt(screen: Screen) = ScreenStackFragment(screen)
46
-
47
57
  override fun startViewTransition(view: View) {
48
58
  super.startViewTransition(view)
49
- mRemovalTransitionStarted = true
59
+ removalTransitionStarted = true
50
60
  }
51
61
 
52
62
  override fun endViewTransition(view: View) {
53
63
  super.endViewTransition(view)
54
- if (mRemovalTransitionStarted) {
55
- mRemovalTransitionStarted = false
64
+ if (removalTransitionStarted) {
65
+ removalTransitionStarted = false
56
66
  dispatchOnFinishTransitioning()
57
67
  }
58
68
  }
59
69
 
60
70
  fun onViewAppearTransitionEnd() {
61
- if (!mRemovalTransitionStarted) {
71
+ if (!removalTransitionStarted) {
62
72
  dispatchOnFinishTransitioning()
63
73
  }
64
74
  }
@@ -71,63 +81,66 @@ class ScreenStack(context: Context?) : ScreenContainer(context) {
71
81
  }
72
82
 
73
83
  override fun removeScreenAt(index: Int) {
74
- mDismissed.remove(getScreenFragmentWrapperAt(index))
84
+ dismissedWrappers.remove(getScreenFragmentWrapperAt(index))
75
85
  super.removeScreenAt(index)
76
86
  }
77
87
 
78
88
  override fun removeAllScreens() {
79
- mDismissed.clear()
89
+ dismissedWrappers.clear()
80
90
  super.removeAllScreens()
81
91
  }
82
92
 
83
93
  override fun hasScreen(screenFragmentWrapper: ScreenFragmentWrapper?): Boolean =
84
- super.hasScreen(screenFragmentWrapper) && !mDismissed.contains(screenFragmentWrapper)
94
+ super.hasScreen(screenFragmentWrapper) && !dismissedWrappers.contains(screenFragmentWrapper)
85
95
 
86
96
  override fun onUpdate() {
87
97
  // When going back from a nested stack with a single screen on it, we may hit an edge case
88
98
  // when all screens are dismissed and no screen is to be displayed on top. We need to gracefully
89
99
  // handle the case of newTop being NULL, which happens in several places below
90
100
  var newTop: ScreenFragmentWrapper? = null // newTop is nullable, see the above comment ^
91
- var visibleBottom: ScreenFragmentWrapper? = null // this is only set if newTop has TRANSPARENT_MODAL presentation mode
101
+ var visibleBottom: ScreenFragmentWrapper? =
102
+ null // this is only set if newTop has one of transparent presentation modes
92
103
  isDetachingCurrentScreen = false // we reset it so the previous value is not used by mistake
93
- for (i in mScreenFragments.indices.reversed()) {
94
- val screen = getScreenFragmentWrapperAt(i)
95
- if (!mDismissed.contains(screen)) {
104
+
105
+ for (i in screenWrappers.indices.reversed()) {
106
+ val screenWrapper = getScreenFragmentWrapperAt(i)
107
+ if (!dismissedWrappers.contains(screenWrapper) && screenWrapper.screen.activityState !== Screen.ActivityState.INACTIVE) {
96
108
  if (newTop == null) {
97
- newTop = screen
109
+ newTop = screenWrapper
98
110
  } else {
99
- visibleBottom = screen
111
+ visibleBottom = screenWrapper
100
112
  }
101
- if (!isTransparent(screen)) {
113
+ if (!screenWrapper.screen.isTransparent()) {
102
114
  break
103
115
  }
104
116
  }
105
117
  }
118
+
106
119
  var shouldUseOpenAnimation = true
107
120
  var stackAnimation: StackAnimation? = null
108
- if (!mStack.contains(newTop)) {
121
+ if (!stack.contains(newTop)) {
109
122
  // if new top screen wasn't on stack we do "open animation" so long it is not the very first
110
123
  // screen on stack
111
- if (mTopScreen != null && newTop != null) {
124
+ if (topScreenWrapper != null && newTop != null) {
112
125
  // there was some other screen attached before
113
126
  // if the previous top screen does not exist anymore and the new top was not on the stack
114
127
  // before, probably replace or reset was called, so we play the "close animation".
115
128
  // Otherwise it's open animation
116
- val containsTopScreen = mTopScreen?.let { mScreenFragments.contains(it) } == true
129
+ val containsTopScreen = topScreenWrapper?.let { screenWrappers.contains(it) } == true
117
130
  val isPushReplace = newTop.screen.replaceAnimation === Screen.ReplaceAnimation.PUSH
118
131
  shouldUseOpenAnimation = containsTopScreen || isPushReplace
119
132
  // if the replace animation is `push`, the new top screen provides the animation, otherwise the previous one
120
- stackAnimation = if (shouldUseOpenAnimation) newTop.screen.stackAnimation else mTopScreen?.screen?.stackAnimation
121
- } else if (mTopScreen == null && newTop != null) {
133
+ stackAnimation = if (shouldUseOpenAnimation) newTop.screen.stackAnimation else topScreenWrapper?.screen?.stackAnimation
134
+ } else if (topScreenWrapper == null && newTop != null) {
122
135
  // mTopScreen was not present before so newTop is the first screen added to a stack
123
136
  // and we don't want the animation when it is entering
124
137
  stackAnimation = StackAnimation.NONE
125
138
  goingForward = true
126
139
  }
127
- } else if (mTopScreen != null && mTopScreen != newTop) {
140
+ } else if (topScreenWrapper != null && topScreenWrapper != newTop) {
128
141
  // otherwise if we are performing top screen change we do "close animation"
129
142
  shouldUseOpenAnimation = false
130
- stackAnimation = mTopScreen?.screen?.stackAnimation
143
+ stackAnimation = topScreenWrapper?.screen?.stackAnimation
131
144
  }
132
145
 
133
146
  createTransaction().let {
@@ -135,27 +148,97 @@ class ScreenStack(context: Context?) : ScreenContainer(context) {
135
148
  if (stackAnimation != null) {
136
149
  if (shouldUseOpenAnimation) {
137
150
  when (stackAnimation) {
138
- StackAnimation.DEFAULT -> it.setCustomAnimations(R.anim.rns_default_enter_in, R.anim.rns_default_enter_out)
139
- StackAnimation.NONE -> it.setCustomAnimations(R.anim.rns_no_animation_20, R.anim.rns_no_animation_20)
140
- StackAnimation.FADE -> it.setCustomAnimations(R.anim.rns_fade_in, R.anim.rns_fade_out)
141
- StackAnimation.SLIDE_FROM_RIGHT -> it.setCustomAnimations(R.anim.rns_slide_in_from_right, R.anim.rns_slide_out_to_left)
142
- StackAnimation.SLIDE_FROM_LEFT -> it.setCustomAnimations(R.anim.rns_slide_in_from_left, R.anim.rns_slide_out_to_right)
143
- StackAnimation.SLIDE_FROM_BOTTOM -> it.setCustomAnimations(
144
- R.anim.rns_slide_in_from_bottom, R.anim.rns_no_animation_medium
145
- )
151
+ StackAnimation.DEFAULT ->
152
+ it.setCustomAnimations(
153
+ R.anim.rns_default_enter_in,
154
+ R.anim.rns_default_enter_out,
155
+ )
156
+
157
+ StackAnimation.NONE ->
158
+ it.setCustomAnimations(
159
+ R.anim.rns_no_animation_20,
160
+ R.anim.rns_no_animation_20,
161
+ )
162
+
163
+ StackAnimation.FADE ->
164
+ it.setCustomAnimations(
165
+ R.anim.rns_fade_in,
166
+ R.anim.rns_fade_out,
167
+ )
168
+
169
+ StackAnimation.SLIDE_FROM_RIGHT ->
170
+ it.setCustomAnimations(
171
+ R.anim.rns_slide_in_from_right,
172
+ R.anim.rns_slide_out_to_left,
173
+ )
174
+ StackAnimation.SLIDE_FROM_LEFT ->
175
+ it.setCustomAnimations(
176
+ R.anim.rns_slide_in_from_left,
177
+ R.anim.rns_slide_out_to_right,
178
+ )
179
+ StackAnimation.SLIDE_FROM_BOTTOM ->
180
+ it.setCustomAnimations(
181
+ R.anim.rns_slide_in_from_bottom,
182
+ R.anim.rns_no_animation_medium,
183
+ )
146
184
  StackAnimation.FADE_FROM_BOTTOM -> it.setCustomAnimations(R.anim.rns_fade_from_bottom, R.anim.rns_no_animation_350)
185
+ StackAnimation.IOS_FROM_RIGHT ->
186
+ it.setCustomAnimations(
187
+ R.anim.rns_ios_from_right_foreground_open,
188
+ R.anim.rns_ios_from_right_background_open,
189
+ )
190
+ StackAnimation.IOS_FROM_LEFT ->
191
+ it.setCustomAnimations(
192
+ R.anim.rns_ios_from_left_foreground_open,
193
+ R.anim.rns_ios_from_left_background_open,
194
+ )
147
195
  }
148
196
  } else {
149
197
  when (stackAnimation) {
150
- StackAnimation.DEFAULT -> it.setCustomAnimations(R.anim.rns_default_exit_in, R.anim.rns_default_exit_out)
151
- StackAnimation.NONE -> it.setCustomAnimations(R.anim.rns_no_animation_20, R.anim.rns_no_animation_20)
152
- StackAnimation.FADE -> it.setCustomAnimations(R.anim.rns_fade_in, R.anim.rns_fade_out)
153
- StackAnimation.SLIDE_FROM_RIGHT -> it.setCustomAnimations(R.anim.rns_slide_in_from_left, R.anim.rns_slide_out_to_right)
154
- StackAnimation.SLIDE_FROM_LEFT -> it.setCustomAnimations(R.anim.rns_slide_in_from_right, R.anim.rns_slide_out_to_left)
155
- StackAnimation.SLIDE_FROM_BOTTOM -> it.setCustomAnimations(
156
- R.anim.rns_no_animation_medium, R.anim.rns_slide_out_to_bottom
157
- )
198
+ StackAnimation.DEFAULT ->
199
+ it.setCustomAnimations(
200
+ R.anim.rns_default_exit_in,
201
+ R.anim.rns_default_exit_out,
202
+ )
203
+
204
+ StackAnimation.NONE ->
205
+ it.setCustomAnimations(
206
+ R.anim.rns_no_animation_20,
207
+ R.anim.rns_no_animation_20,
208
+ )
209
+
210
+ StackAnimation.FADE ->
211
+ it.setCustomAnimations(
212
+ R.anim.rns_fade_in,
213
+ R.anim.rns_fade_out,
214
+ )
215
+
216
+ StackAnimation.SLIDE_FROM_RIGHT ->
217
+ it.setCustomAnimations(
218
+ R.anim.rns_slide_in_from_left,
219
+ R.anim.rns_slide_out_to_right,
220
+ )
221
+ StackAnimation.SLIDE_FROM_LEFT ->
222
+ it.setCustomAnimations(
223
+ R.anim.rns_slide_in_from_right,
224
+ R.anim.rns_slide_out_to_left,
225
+ )
226
+ StackAnimation.SLIDE_FROM_BOTTOM ->
227
+ it.setCustomAnimations(
228
+ R.anim.rns_no_animation_medium,
229
+ R.anim.rns_slide_out_to_bottom,
230
+ )
158
231
  StackAnimation.FADE_FROM_BOTTOM -> it.setCustomAnimations(R.anim.rns_no_animation_250, R.anim.rns_fade_to_bottom)
232
+ StackAnimation.IOS_FROM_RIGHT ->
233
+ it.setCustomAnimations(
234
+ R.anim.rns_ios_from_right_background_close,
235
+ R.anim.rns_ios_from_right_foreground_close,
236
+ )
237
+ StackAnimation.IOS_FROM_LEFT ->
238
+ it.setCustomAnimations(
239
+ R.anim.rns_ios_from_left_background_close,
240
+ R.anim.rns_ios_from_left_foreground_close,
241
+ )
159
242
  }
160
243
  }
161
244
  }
@@ -164,7 +247,8 @@ class ScreenStack(context: Context?) : ScreenContainer(context) {
164
247
  goingForward = shouldUseOpenAnimation
165
248
 
166
249
  if (shouldUseOpenAnimation &&
167
- newTop != null && needsDrawReordering(newTop) &&
250
+ newTop != null &&
251
+ needsDrawReordering(newTop) &&
168
252
  visibleBottom == null
169
253
  ) {
170
254
  // When using an open animation in which two screens overlap (eg. fade_from_bottom or
@@ -178,19 +262,21 @@ class ScreenStack(context: Context?) : ScreenContainer(context) {
178
262
  }
179
263
 
180
264
  // remove all screens previously on stack
181
- for (fragmentWrapper in mStack) {
182
- if (!mScreenFragments.contains(fragmentWrapper) || mDismissed.contains(fragmentWrapper)) {
265
+ for (fragmentWrapper in stack) {
266
+ if (!screenWrappers.contains(fragmentWrapper) || dismissedWrappers.contains(fragmentWrapper)) {
183
267
  it.remove(fragmentWrapper.fragment)
184
268
  }
185
269
  }
186
- for (fragmentWrapper in mScreenFragments) {
270
+ for (fragmentWrapper in screenWrappers) {
187
271
  // Stop detaching screens when reaching visible bottom. All screens above bottom should be
188
272
  // visible.
189
273
  if (fragmentWrapper === visibleBottom) {
190
274
  break
191
275
  }
192
276
  // detach all screens that should not be visible
193
- if (fragmentWrapper !== newTop && !mDismissed.contains(fragmentWrapper)) {
277
+ if ((fragmentWrapper !== newTop && !dismissedWrappers.contains(fragmentWrapper)) ||
278
+ fragmentWrapper.screen.activityState === Screen.ActivityState.INACTIVE
279
+ ) {
194
280
  it.remove(fragmentWrapper.fragment)
195
281
  }
196
282
  }
@@ -199,22 +285,27 @@ class ScreenStack(context: Context?) : ScreenContainer(context) {
199
285
  if (visibleBottom != null && !visibleBottom.fragment.isAdded) {
200
286
  val top = newTop
201
287
  var beneathVisibleBottom = true
202
- for (fragmentWrapper in mScreenFragments) {
288
+ for (fragmentWrapper in screenWrappers) {
203
289
  // ignore all screens beneath the visible bottom
204
290
  if (beneathVisibleBottom) {
205
- beneathVisibleBottom = if (fragmentWrapper === visibleBottom) {
206
- false
207
- } else continue
291
+ beneathVisibleBottom =
292
+ if (fragmentWrapper === visibleBottom) {
293
+ false
294
+ } else {
295
+ continue
296
+ }
208
297
  }
209
298
  // when first visible screen found, make all screens after that visible
210
- it.add(id, fragmentWrapper.fragment).runOnCommit { top?.screen?.bringToFront() }
299
+ it.add(id, fragmentWrapper.fragment).runOnCommit {
300
+ top?.screen?.bringToFront()
301
+ }
211
302
  }
212
303
  } else if (newTop != null && !newTop.fragment.isAdded) {
213
304
  it.add(id, newTop.fragment)
214
305
  }
215
- mTopScreen = newTop as? ScreenStackFragmentWrapper
216
- mStack.clear()
217
- mStack.addAll(mScreenFragments.map { it as ScreenStackFragmentWrapper })
306
+ topScreenWrapper = newTop as? ScreenStackFragmentWrapper
307
+ stack.clear()
308
+ stack.addAll(screenWrappers.map { it as ScreenStackFragmentWrapper })
218
309
 
219
310
  turnOffA11yUnderTransparentScreen(visibleBottom)
220
311
 
@@ -224,13 +315,15 @@ class ScreenStack(context: Context?) : ScreenContainer(context) {
224
315
 
225
316
  // only top visible screen should be accessible
226
317
  private fun turnOffA11yUnderTransparentScreen(visibleBottom: ScreenFragmentWrapper?) {
227
- if (mScreenFragments.size > 1 && visibleBottom != null) {
228
- mTopScreen?.let {
229
- if (isTransparent(it)) {
230
- val screenFragmentsBeneathTop = mScreenFragments.slice(0 until mScreenFragments.size - 1).asReversed()
318
+ if (screenWrappers.size > 1 && visibleBottom != null) {
319
+ topScreenWrapper?.let {
320
+ if (it.screen.isTransparent()) {
321
+ val screenFragmentsBeneathTop = screenWrappers.slice(0 until screenWrappers.size - 1).asReversed()
231
322
  // go from the top of the stack excluding the top screen
232
323
  for (fragmentWrapper in screenFragmentsBeneathTop) {
233
- fragmentWrapper.screen.changeAccessibilityMode(IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS)
324
+ fragmentWrapper.screen.changeAccessibilityMode(
325
+ IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS,
326
+ )
234
327
 
235
328
  // don't change a11y below non-transparent screens
236
329
  if (fragmentWrapper == visibleBottom) {
@@ -245,7 +338,7 @@ class ScreenStack(context: Context?) : ScreenContainer(context) {
245
338
  }
246
339
 
247
340
  override fun notifyContainerUpdate() {
248
- mStack.forEach { it.onContainerUpdate() }
341
+ stack.forEach { it.onContainerUpdate() }
249
342
  }
250
343
 
251
344
  // below methods are taken from
@@ -292,13 +385,17 @@ class ScreenStack(context: Context?) : ScreenContainer(context) {
292
385
  drawAndRelease()
293
386
  }
294
387
 
295
- override fun drawChild(canvas: Canvas, child: View, drawingTime: Long): Boolean {
388
+ override fun drawChild(
389
+ canvas: Canvas,
390
+ child: View,
391
+ drawingTime: Long,
392
+ ): Boolean {
296
393
  drawingOps.add(
297
394
  obtainDrawingOp().apply {
298
395
  this.canvas = canvas
299
396
  this.child = child
300
397
  this.drawingTime = drawingTime
301
- }
398
+ },
302
399
  )
303
400
  return true
304
401
  }
@@ -309,8 +406,9 @@ class ScreenStack(context: Context?) : ScreenContainer(context) {
309
406
  super.drawChild(op.canvas!!, op.child, op.drawingTime)
310
407
  }
311
408
 
312
- private fun obtainDrawingOp(): DrawingOp =
313
- if (drawingOpPool.isEmpty()) DrawingOp() else drawingOpPool.removeLast()
409
+ // Can't use `drawingOpPool.removeLast` here due to issues with static name resolution in Android SDK 35+.
410
+ // See: https://developer.android.com/about/versions/15/behavior-changes-15?hl=en#openjdk-api-changes
411
+ private fun obtainDrawingOp(): DrawingOp = if (drawingOpPool.isEmpty()) DrawingOp() else drawingOpPool.removeAt(drawingOpPool.lastIndex)
314
412
 
315
413
  private inner class DrawingOp {
316
414
  var canvas: Canvas? = null
@@ -326,11 +424,16 @@ class ScreenStack(context: Context?) : ScreenContainer(context) {
326
424
  }
327
425
 
328
426
  companion object {
329
- private fun isTransparent(fragmentWrapper: ScreenFragmentWrapper): Boolean =
330
- fragmentWrapper.screen.stackPresentation === Screen.StackPresentation.TRANSPARENT_MODAL
427
+ const val TAG = "ScreenStack"
331
428
 
332
429
  private fun needsDrawReordering(fragmentWrapper: ScreenFragmentWrapper): Boolean =
333
- fragmentWrapper.screen.stackAnimation === StackAnimation.SLIDE_FROM_BOTTOM ||
334
- fragmentWrapper.screen.stackAnimation === StackAnimation.FADE_FROM_BOTTOM
430
+ // On Android sdk 33 and above the animation is different and requires draw reordering.
431
+ // For React Native 0.70 and lower versions, `Build.VERSION_CODES.TIRAMISU` is not defined yet.
432
+ // Hence, we're comparing numerical version here.
433
+ Build.VERSION.SDK_INT >= 33 ||
434
+ fragmentWrapper.screen.stackAnimation === StackAnimation.SLIDE_FROM_BOTTOM ||
435
+ fragmentWrapper.screen.stackAnimation === StackAnimation.FADE_FROM_BOTTOM ||
436
+ fragmentWrapper.screen.stackAnimation === StackAnimation.IOS_FROM_RIGHT ||
437
+ fragmentWrapper.screen.stackAnimation === StackAnimation.IOS_FROM_LEFT
335
438
  }
336
439
  }