@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
@@ -8,7 +8,11 @@
8
8
  #import <react/renderer/components/rnscreens/EventEmitters.h>
9
9
  #import <react/renderer/components/rnscreens/Props.h>
10
10
  #import <react/renderer/components/rnscreens/RCTComponentViewHelpers.h>
11
+ #import <rnscreens/RNSScreenStackHeaderConfigComponentDescriptor.h>
11
12
  #import "RCTImageComponentView+RNSScreenStackHeaderConfig.h"
13
+ #ifndef NDEBUG
14
+ #import <react/utils/ManagedObjectWrapper.h>
15
+ #endif // !NDEBUG
12
16
  #else
13
17
  #import <React/RCTImageView.h>
14
18
  #import <React/RCTShadowView.h>
@@ -19,6 +23,8 @@
19
23
  #import <React/RCTFont.h>
20
24
  #import <React/RCTImageLoader.h>
21
25
  #import <React/RCTImageSource.h>
26
+ #import "RNSConvert.h"
27
+ #import "RNSDefines.h"
22
28
  #import "RNSScreen.h"
23
29
  #import "RNSScreenStackHeaderConfig.h"
24
30
  #import "RNSSearchBar.h"
@@ -54,13 +60,26 @@ namespace react = facebook::react;
54
60
 
55
61
  @implementation RNSScreenStackHeaderConfig {
56
62
  NSMutableArray<RNSScreenStackHeaderSubview *> *_reactSubviews;
63
+ NSDirectionalEdgeInsets _lastHeaderInsets;
57
64
  #ifdef RCT_NEW_ARCH_ENABLED
58
65
  BOOL _initialPropsSet;
66
+ react::RNSScreenStackHeaderConfigShadowNode::ConcreteState::Shared _state;
67
+ #ifndef NDEBUG
68
+ RCTImageLoader *imageLoader;
69
+ #endif // !NDEBUG
59
70
  #else
71
+ __weak RCTBridge *_bridge;
60
72
  #endif
61
73
  }
62
74
 
63
75
  #ifdef RCT_NEW_ARCH_ENABLED
76
+
77
+ // Needed because of this: https://github.com/facebook/react-native/pull/37274
78
+ + (void)load
79
+ {
80
+ [super load];
81
+ }
82
+
64
83
  - (instancetype)initWithFrame:(CGRect)frame
65
84
  {
66
85
  if (self = [super initWithFrame:frame]) {
@@ -81,6 +100,16 @@ namespace react = facebook::react;
81
100
  }
82
101
  return self;
83
102
  }
103
+
104
+ - (instancetype)initWithBridge:(RCTBridge *)bridge
105
+ {
106
+ if (self = [super init]) {
107
+ _bridge = bridge;
108
+ _translucent = YES;
109
+ [self initProps];
110
+ }
111
+ return self;
112
+ }
84
113
  #endif
85
114
 
86
115
  - (void)initProps
@@ -88,8 +117,10 @@ namespace react = facebook::react;
88
117
  self.hidden = YES;
89
118
  _reactSubviews = [NSMutableArray new];
90
119
  _backTitleVisible = YES;
120
+ _blurEffect = RNSBlurEffectStyleNone;
91
121
  }
92
122
 
123
+ RNS_IGNORE_SUPER_CALL_BEGIN
93
124
  - (UIView *)reactSuperview
94
125
  {
95
126
  return _screenView;
@@ -99,6 +130,7 @@ namespace react = facebook::react;
99
130
  {
100
131
  return _reactSubviews;
101
132
  }
133
+ RNS_IGNORE_SUPER_CALL_END
102
134
 
103
135
  - (void)removeFromSuperview
104
136
  {
@@ -140,13 +172,16 @@ namespace react = facebook::react;
140
172
  nextVC = nav.topViewController;
141
173
  }
142
174
 
143
- // we want updates sent to the VC below modal too since it is also visible
144
- BOOL isPresentingVC = nextVC != nil && vc.presentedViewController == nextVC;
175
+ // we want updates sent to the VC directly below modal too since it is also visible
176
+ BOOL isPresentingVC = nextVC != nil && vc.presentedViewController == nextVC && vc == nav.topViewController;
145
177
 
146
178
  BOOL isInFullScreenModal = nav == nil && _screenView.stackPresentation == RNSScreenStackPresentationFullScreenModal;
147
179
  // if nav is nil, it means we can be in a fullScreen modal, so there is no nextVC, but we still want to update
148
180
  if (vc != nil && (nextVC == vc || isInFullScreenModal || isPresentingVC)) {
149
181
  [RNSScreenStackHeaderConfig updateViewController:self.screenView.controller withConfig:self animated:YES];
182
+ // As the header might have change in `updateViewController` we need to ensure that header height
183
+ // returned by the `onHeaderHeightChange` event is correct.
184
+ [self.screenView.controller calculateAndNotifyHeaderHeightChangeIsModal:NO];
150
185
  }
151
186
  }
152
187
 
@@ -160,6 +195,51 @@ namespace react = facebook::react;
160
195
  [navctr.view setNeedsLayout];
161
196
  }
162
197
 
198
+ - (void)updateHeaderInsetsInShadowTreeTo:(NSDirectionalEdgeInsets)insets
199
+ {
200
+ if (_lastHeaderInsets.leading != insets.leading || _lastHeaderInsets.trailing != insets.trailing) {
201
+ #ifdef RCT_NEW_ARCH_ENABLED
202
+ auto newState = react::RNSScreenStackHeaderConfigState{insets.leading, insets.trailing};
203
+ _state->updateState(std::move(newState));
204
+ _lastHeaderInsets = std::move(insets);
205
+ #else
206
+ [_bridge.uiManager setLocalData:[[RNSHeaderConfigInsetsPayload alloc] initWithInsets:insets] forView:self];
207
+ _lastHeaderInsets = std::move(insets);
208
+ #endif // RCT_NEW_ARCH_ENABLED
209
+ }
210
+ }
211
+
212
+ - (BOOL)hasSubviewOfType:(RNSScreenStackHeaderSubviewType)type
213
+ {
214
+ for (RNSScreenStackHeaderSubview *subview in _reactSubviews) {
215
+ if (subview.type == type) {
216
+ return YES;
217
+ }
218
+ }
219
+
220
+ return NO;
221
+ }
222
+
223
+ - (BOOL)hasSubviewLeft
224
+ {
225
+ return [self hasSubviewOfType:RNSScreenStackHeaderSubviewTypeLeft];
226
+ }
227
+
228
+ - (BOOL)shouldHeaderBeVisible
229
+ {
230
+ #ifdef RCT_NEW_ARCH_ENABLED
231
+ return self.show;
232
+ #else
233
+ return !self.hide;
234
+ #endif // RCT_NEW_ARCH_ENABLED
235
+ }
236
+
237
+ - (BOOL)shouldBackButtonBeVisibleInNavigationBar:(nullable UINavigationBar *)navBar
238
+ {
239
+ return navBar.backItem != nil && !self.hideBackButton &&
240
+ !(self.backButtonInCustomView == false && self.hasSubviewLeft);
241
+ }
242
+
163
243
  + (void)setAnimatedConfig:(UIViewController *)vc withConfig:(RNSScreenStackHeaderConfig *)config
164
244
  {
165
245
  UINavigationBar *navbar = ((UINavigationController *)vc.parentViewController).navigationBar;
@@ -224,7 +304,7 @@ namespace react = facebook::react;
224
304
  [navbar setTitleTextAttributes:attrs];
225
305
  }
226
306
 
227
- #if !TARGET_OS_TV
307
+ #if !TARGET_OS_TV && !TARGET_OS_VISION
228
308
  if (@available(iOS 11.0, *)) {
229
309
  if (config.largeTitle &&
230
310
  (config.largeTitleFontFamily || config.largeTitleFontSize || config.largeTitleFontWeight ||
@@ -264,10 +344,10 @@ namespace react = facebook::react;
264
344
  [button setTitleTextAttributes:attrs forState:UIControlStateFocused];
265
345
  }
266
346
 
267
- + (UIImage *)loadBackButtonImageInViewController:(UIViewController *)vc withConfig:(RNSScreenStackHeaderConfig *)config
347
+ - (UIImage *)loadBackButtonImageInViewController:(UIViewController *)vc
268
348
  {
269
349
  BOOL hasBackButtonImage = NO;
270
- for (RNSScreenStackHeaderSubview *subview in config.reactSubviews) {
350
+ for (RNSScreenStackHeaderSubview *subview in self.reactSubviews) {
271
351
  if (subview.type == RNSScreenStackHeaderSubviewTypeBackButton && subview.subviews.count > 0) {
272
352
  hasBackButtonImage = YES;
273
353
  #ifdef RCT_NEW_ARCH_ENABLED
@@ -293,6 +373,7 @@ namespace react = facebook::react;
293
373
 
294
374
  UIImage *image = imageView.image;
295
375
 
376
+ #ifndef NDEBUG
296
377
  // IMPORTANT!!!
297
378
  // image can be nil in DEV MODE ONLY
298
379
  //
@@ -307,8 +388,9 @@ namespace react = facebook::react;
307
388
  // in DEV MODE we try to load from cache (we use private API for that as it is not exposed
308
389
  // publically in headers).
309
390
  RCTImageSource *imageSource = [RNSScreenStackHeaderConfig imageSourceFromImageView:imageView];
310
- RCTImageLoader *imageLoader = [subview.bridge moduleForClass:[RCTImageLoader class]];
311
-
391
+ #ifndef RCT_NEW_ARCH_ENABLED
392
+ RCTImageLoader *imageLoader = [_bridge moduleForClass:[RCTImageLoader class]];
393
+ #endif // !RCT_NEW_ARCH_ENABLED
312
394
  image = [imageLoader.imageCache
313
395
  imageForUrl:imageSource.request.URL.absoluteString
314
396
  size:imageSource.size
@@ -320,6 +402,7 @@ namespace react = facebook::react;
320
402
  resizeMode:imageView.resizeMode];
321
403
  #endif // RCT_NEW_ARCH_ENABLED
322
404
  }
405
+ #endif // !NDEBUG
323
406
  if (image == nil) {
324
407
  // This will be triggered if the image is not in the cache yet. What we do is we wait until
325
408
  // the end of transition and run header config updates again. We could potentially wait for
@@ -336,7 +419,7 @@ namespace react = facebook::react;
336
419
  #if !TARGET_OS_TV
337
420
  vc.navigationItem.hidesBackButton = YES;
338
421
  #endif
339
- [config updateViewControllerIfNeeded];
422
+ [self updateViewControllerIfNeeded];
340
423
  }];
341
424
  }
342
425
  return [UIImage new];
@@ -353,6 +436,11 @@ namespace react = facebook::react;
353
436
  withConfig:(RNSScreenStackHeaderConfig *)config
354
437
  {
355
438
  [self updateViewController:vc withConfig:config animated:animated];
439
+ // As the header might have change in `updateViewController` we need to ensure that header height
440
+ // returned by the `onHeaderHeightChange` event is correct.
441
+ if ([vc isKindOfClass:[RNSScreen class]]) {
442
+ [(RNSScreen *)vc calculateAndNotifyHeaderHeightChangeIsModal:NO];
443
+ }
356
444
  }
357
445
 
358
446
  #if defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && defined(__IPHONE_13_0) && \
@@ -363,8 +451,16 @@ namespace react = facebook::react;
363
451
  UINavigationBarAppearance *appearance = [UINavigationBarAppearance new];
364
452
 
365
453
  if (config.backgroundColor && CGColorGetAlpha(config.backgroundColor.CGColor) == 0.) {
454
+ // Preserve the shadow properties in case the user wants to show the shadow on scroll.
455
+ UIColor *shadowColor = appearance.shadowColor;
456
+ UIImage *shadowImage = appearance.shadowImage;
366
457
  // transparent background color
367
458
  [appearance configureWithTransparentBackground];
459
+
460
+ if (!config.hideShadow) {
461
+ appearance.shadowColor = shadowColor;
462
+ appearance.shadowImage = shadowImage;
463
+ }
368
464
  } else {
369
465
  [appearance configureWithOpaqueBackground];
370
466
  }
@@ -374,13 +470,12 @@ namespace react = facebook::react;
374
470
  appearance.backgroundColor = config.backgroundColor;
375
471
  }
376
472
 
377
- // TODO: implement blurEffect on Fabric
378
- #ifdef RCT_NEW_ARCH_ENABLED
379
- #else
380
- if (config.blurEffect) {
381
- appearance.backgroundEffect = [UIBlurEffect effectWithStyle:config.blurEffect];
473
+ if (config.blurEffect != RNSBlurEffectStyleNone) {
474
+ appearance.backgroundEffect =
475
+ [UIBlurEffect effectWithStyle:[RNSConvert tryConvertRNSBlurEffectStyleToUIBlurEffectStyle:config.blurEffect]];
476
+ } else {
477
+ appearance.backgroundEffect = nil;
382
478
  }
383
- #endif
384
479
 
385
480
  if (config.hideShadow) {
386
481
  appearance.shadowColor = nil;
@@ -389,9 +484,12 @@ namespace react = facebook::react;
389
484
  if (config.titleFontFamily || config.titleFontSize || config.titleFontWeight || config.titleColor) {
390
485
  NSMutableDictionary *attrs = [NSMutableDictionary new];
391
486
 
487
+ // Ignore changing header title color on visionOS
488
+ #if !TARGET_OS_VISION
392
489
  if (config.titleColor) {
393
490
  attrs[NSForegroundColorAttributeName] = config.titleColor;
394
491
  }
492
+ #endif
395
493
 
396
494
  NSString *family = config.titleFontFamily ?: nil;
397
495
  NSNumber *size = config.titleFontSize ?: @17;
@@ -414,9 +512,12 @@ namespace react = facebook::react;
414
512
  config.largeTitleColor || config.titleColor) {
415
513
  NSMutableDictionary *largeAttrs = [NSMutableDictionary new];
416
514
 
515
+ // Ignore changing header title color on visionOS
516
+ #if !TARGET_OS_VISION
417
517
  if (config.largeTitleColor || config.titleColor) {
418
518
  largeAttrs[NSForegroundColorAttributeName] = config.largeTitleColor ? config.largeTitleColor : config.titleColor;
419
519
  }
520
+ #endif
420
521
 
421
522
  NSString *largeFamily = config.largeTitleFontFamily ?: nil;
422
523
  NSNumber *largeSize = config.largeTitleFontSize ?: @34;
@@ -436,7 +537,7 @@ namespace react = facebook::react;
436
537
  appearance.largeTitleTextAttributes = largeAttrs;
437
538
  }
438
539
 
439
- UIImage *backButtonImage = [self loadBackButtonImageInViewController:vc withConfig:config];
540
+ UIImage *backButtonImage = [config loadBackButtonImageInViewController:vc];
440
541
  if (backButtonImage) {
441
542
  [appearance setBackIndicatorImage:backButtonImage transitionMaskImage:backButtonImage];
442
543
  } else if (appearance.backIndicatorImage) {
@@ -453,16 +554,20 @@ namespace react = facebook::react;
453
554
  UINavigationItem *navitem = vc.navigationItem;
454
555
  UINavigationController *navctr = (UINavigationController *)vc.parentViewController;
455
556
 
557
+ // When modal is shown the underlying RNSScreen isn't attached to any navigation controller.
558
+ // During the modal dismissal transition this update method is called on this RNSScreen resulting in nil navctr.
559
+ // After the transition is completed it will be called again and will configure the navigation controller correctly.
560
+ // Also see: https://github.com/software-mansion/react-native-screens/pull/2336
561
+ if (navctr == nil) {
562
+ return;
563
+ }
564
+
456
565
  NSUInteger currentIndex = [navctr.viewControllers indexOfObject:vc];
457
566
  UINavigationItem *prevItem =
458
567
  currentIndex > 0 ? [navctr.viewControllers objectAtIndex:currentIndex - 1].navigationItem : nil;
459
568
 
460
569
  BOOL wasHidden = navctr.navigationBarHidden;
461
- #ifdef RCT_NEW_ARCH_ENABLED
462
- BOOL shouldHide = config == nil || !config.show;
463
- #else
464
- BOOL shouldHide = config == nil || config.hide;
465
- #endif
570
+ BOOL shouldHide = config == nil || !config.shouldHeaderBeVisible;
466
571
 
467
572
  if (!shouldHide && !config.translucent) {
468
573
  // when nav bar is not translucent we chage edgesForExtendedLayout to avoid system laying out
@@ -479,8 +584,17 @@ namespace react = facebook::react;
479
584
  config.direction == UISemanticContentAttributeForceRightToLeft) &&
480
585
  // iOS 12 cancels swipe gesture when direction is changed. See #1091
481
586
  navctr.view.semanticContentAttribute != config.direction) {
587
+ // This is needed for swipe back gesture direction
482
588
  navctr.view.semanticContentAttribute = config.direction;
589
+
590
+ // This is responsible for the direction of the navigationBar and its contents
483
591
  navctr.navigationBar.semanticContentAttribute = config.direction;
592
+ [[UIButton appearanceWhenContainedInInstancesOfClasses:@[ navctr.navigationBar.class ]]
593
+ setSemanticContentAttribute:config.direction];
594
+ [[UIView appearanceWhenContainedInInstancesOfClasses:@[ navctr.navigationBar.class ]]
595
+ setSemanticContentAttribute:config.direction];
596
+ [[UISearchBar appearanceWhenContainedInInstancesOfClasses:@[ navctr.navigationBar.class ]]
597
+ setSemanticContentAttribute:config.direction];
484
598
  }
485
599
 
486
600
  if (shouldHide) {
@@ -497,8 +611,24 @@ namespace react = facebook::react;
497
611
  action:nil];
498
612
  [backBarButtonItem setMenuHidden:config.disableBackButtonMenu];
499
613
 
614
+ auto isBackButtonCustomized = !isBackTitleBlank || config.disableBackButtonMenu;
615
+
616
+ #if defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && defined(__IPHONE_14_0) && \
617
+ __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_14_0
618
+ if (@available(iOS 14.0, *)) {
619
+ prevItem.backButtonDisplayMode = config.backButtonDisplayMode;
620
+ }
621
+ #endif
622
+
500
623
  if (config.isBackTitleVisible) {
501
- if (config.backTitleFontFamily || config.backTitleFontSize) {
624
+ if ((config.backTitleFontFamily &&
625
+ // While being used by react-navigation, the `backTitleFontFamily` will
626
+ // be set to "System" by default - which is the system default font.
627
+ // To avoid always considering the font as customized, we need to have an additional check.
628
+ // See: https://github.com/software-mansion/react-native-screens/pull/2105#discussion_r1565222738
629
+ ![config.backTitleFontFamily isEqual:@"System"]) ||
630
+ config.backTitleFontSize) {
631
+ isBackButtonCustomized = YES;
502
632
  NSMutableDictionary *attrs = [NSMutableDictionary new];
503
633
  NSNumber *size = config.backTitleFontSize ?: @17;
504
634
  if (config.backTitleFontFamily) {
@@ -521,9 +651,17 @@ namespace react = facebook::react;
521
651
  // When backBarButtonItem's title is null, back menu will use value
522
652
  // of backButtonTitle
523
653
  [backBarButtonItem setTitle:nil];
654
+ isBackButtonCustomized = YES;
524
655
  prevItem.backButtonTitle = resolvedBackTitle;
525
656
  }
526
- prevItem.backBarButtonItem = backBarButtonItem;
657
+
658
+ // Prevent unnecessary assignment of backBarButtonItem if it is not customized,
659
+ // as assigning one will override the native behavior of automatically shortening
660
+ // the title to "Back" or hide the back title if there's not enough space.
661
+ // See: https://github.com/software-mansion/react-native-screens/issues/1589
662
+ if (isBackButtonCustomized) {
663
+ prevItem.backBarButtonItem = backBarButtonItem;
664
+ }
527
665
 
528
666
  if (@available(iOS 11.0, *)) {
529
667
  if (config.largeTitle) {
@@ -541,10 +679,26 @@ namespace react = facebook::react;
541
679
  navitem.standardAppearance = appearance;
542
680
  navitem.compactAppearance = appearance;
543
681
 
682
+ // appearance does not apply to the tvOS so we need to use lagacy customization
683
+ #if TARGET_OS_TV
684
+ navctr.navigationBar.titleTextAttributes = appearance.titleTextAttributes;
685
+ navctr.navigationBar.backgroundColor = appearance.backgroundColor;
686
+ #endif
687
+
544
688
  UINavigationBarAppearance *scrollEdgeAppearance =
545
689
  [[UINavigationBarAppearance alloc] initWithBarAppearance:appearance];
546
690
  if (config.largeTitleBackgroundColor != nil) {
547
- scrollEdgeAppearance.backgroundColor = config.largeTitleBackgroundColor;
691
+ // Add support for using a fully transparent bar when the backgroundColor is set to transparent.
692
+ if (CGColorGetAlpha(config.largeTitleBackgroundColor.CGColor) == 0.) {
693
+ // This will also remove the background blur effect in the large title which is otherwise inherited from the
694
+ // standard appearance.
695
+ [scrollEdgeAppearance configureWithTransparentBackground];
696
+ // This must be set to nil otherwise a default view will be added to the navigation bar background with an
697
+ // opaque background.
698
+ scrollEdgeAppearance.backgroundColor = nil;
699
+ } else {
700
+ scrollEdgeAppearance.backgroundColor = config.largeTitleBackgroundColor;
701
+ }
548
702
  }
549
703
  if (config.largeTitleHideShadow) {
550
704
  scrollEdgeAppearance.shadowColor = nil;
@@ -556,7 +710,7 @@ namespace react = facebook::react;
556
710
  #if !TARGET_OS_TV
557
711
  // updating backIndicatotImage does not work when called during transition. On iOS pre 13 we need
558
712
  // to update it before the navigation starts.
559
- UIImage *backButtonImage = [self loadBackButtonImageInViewController:vc withConfig:config];
713
+ UIImage *backButtonImage = [config loadBackButtonImageInViewController:vc];
560
714
  if (backButtonImage) {
561
715
  navctr.navigationBar.backIndicatorImage = backButtonImage;
562
716
  navctr.navigationBar.backIndicatorTransitionMaskImage = backButtonImage;
@@ -574,6 +728,8 @@ namespace react = facebook::react;
574
728
  navitem.titleView = nil;
575
729
 
576
730
  for (RNSScreenStackHeaderSubview *subview in config.reactSubviews) {
731
+ // This code should be kept in sync on Fabric with analogous switch statement in
732
+ // `- [RNSScreenStackHeaderConfig replaceNavigationBarViewsWithSnapshotOfSubview:]` method.
577
733
  switch (subview.type) {
578
734
  case RNSScreenStackHeaderSubviewTypeLeft: {
579
735
  #if !TARGET_OS_TV
@@ -659,6 +815,7 @@ namespace react = facebook::react;
659
815
  }
660
816
  }
661
817
 
818
+ RNS_IGNORE_SUPER_CALL_BEGIN
662
819
  - (void)insertReactSubview:(RNSScreenStackHeaderSubview *)subview atIndex:(NSInteger)atIndex
663
820
  {
664
821
  [_reactSubviews insertObject:subview atIndex:atIndex];
@@ -669,12 +826,7 @@ namespace react = facebook::react;
669
826
  {
670
827
  [_reactSubviews removeObject:subview];
671
828
  }
672
-
673
- - (void)didUpdateReactSubviews
674
- {
675
- [super didUpdateReactSubviews];
676
- [self updateViewControllerIfNeeded];
677
- }
829
+ RNS_IGNORE_SUPER_CALL_BEGIN
678
830
 
679
831
  #ifdef RCT_NEW_ARCH_ENABLED
680
832
  #pragma mark - Fabric specific
@@ -696,13 +848,52 @@ namespace react = facebook::react;
696
848
 
697
849
  // [_reactSubviews insertObject:(RNSScreenStackHeaderSubview *)childComponentView atIndex:index];
698
850
  [self insertReactSubview:(RNSScreenStackHeaderSubview *)childComponentView atIndex:index];
851
+
852
+ // TODO: This could be called only once per transaction.
699
853
  [self updateViewControllerIfNeeded];
700
854
  }
701
855
 
702
856
  - (void)unmountChildComponentView:(UIView<RCTComponentViewProtocol> *)childComponentView index:(NSInteger)index
703
857
  {
858
+ BOOL isGoingToBeRemoved = _screenView.isMarkedForUnmountInCurrentTransaction;
859
+ if (isGoingToBeRemoved) {
860
+ // For explanation of why we can make a snapshot here despite the fact that our children are already
861
+ // unmounted see https://github.com/software-mansion/react-native-screens/pull/2261
862
+ [self replaceNavigationBarViewsWithSnapshotOfSubview:(RNSScreenStackHeaderSubview *)childComponentView];
863
+ }
704
864
  [_reactSubviews removeObject:(RNSScreenStackHeaderSubview *)childComponentView];
705
865
  [childComponentView removeFromSuperview];
866
+ if (!isGoingToBeRemoved) {
867
+ [self updateViewControllerIfNeeded];
868
+ }
869
+ }
870
+
871
+ - (void)replaceNavigationBarViewsWithSnapshotOfSubview:(RNSScreenStackHeaderSubview *)childComponentView
872
+ {
873
+ if (childComponentView.window != nil) {
874
+ UINavigationItem *navitem = _screenView.controller.navigationItem;
875
+ UIView *snapshot = [childComponentView snapshotViewAfterScreenUpdates:NO];
876
+
877
+ // This code should be kept in sync with analogous switch statement in
878
+ // `+ [RNSScreenStackHeaderConfig updateViewController: withConfig: animated:]` method.
879
+ switch (childComponentView.type) {
880
+ case RNSScreenStackHeaderSubviewTypeLeft:
881
+ navitem.leftBarButtonItem.customView = snapshot;
882
+ break;
883
+ case RNSScreenStackHeaderSubviewTypeCenter:
884
+ case RNSScreenStackHeaderSubviewTypeTitle:
885
+ navitem.titleView = snapshot;
886
+ break;
887
+ case RNSScreenStackHeaderSubviewTypeRight:
888
+ navitem.rightBarButtonItem.customView = snapshot;
889
+ break;
890
+ case RNSScreenStackHeaderSubviewTypeSearchBar:
891
+ case RNSScreenStackHeaderSubviewTypeBackButton:
892
+ break;
893
+ default:
894
+ RCTLogError(@"[RNScreens] Unhandled subview type: %ld", childComponentView.type);
895
+ }
896
+ }
706
897
  }
707
898
 
708
899
  static RCTResizeMode resizeModeFromCppEquiv(react::ImageResizeMode resizeMode)
@@ -718,6 +909,9 @@ static RCTResizeMode resizeModeFromCppEquiv(react::ImageResizeMode resizeMode)
718
909
  return RCTResizeModeCenter;
719
910
  case react::ImageResizeMode::Repeat:
720
911
  return RCTResizeModeRepeat;
912
+ default:
913
+ // Both RCTConvert and ImageProps use this as a default as of RN 0.76
914
+ return RCTResizeModeStretch;
721
915
  }
722
916
  }
723
917
 
@@ -727,7 +921,7 @@ static RCTResizeMode resizeModeFromCppEquiv(react::ImageResizeMode resizeMode)
727
921
  */
728
922
  + (RCTImageSource *)imageSourceFromImageView:(RCTImageComponentView *)view
729
923
  {
730
- auto const imageProps = *std::static_pointer_cast<const react::ImageProps>(view.props);
924
+ const auto &imageProps = *std::static_pointer_cast<const react::ImageProps>(view.props);
731
925
  react::ImageSource cppImageSource = imageProps.sources.at(0);
732
926
  auto imageSize = CGSize{cppImageSource.size.width, cppImageSource.size.height};
733
927
  NSURLRequest *request =
@@ -744,11 +938,7 @@ static RCTResizeMode resizeModeFromCppEquiv(react::ImageResizeMode resizeMode)
744
938
  {
745
939
  [super prepareForRecycle];
746
940
  _initialPropsSet = NO;
747
- }
748
-
749
- + (react::ComponentDescriptorProvider)componentDescriptorProvider
750
- {
751
- return react::concreteComponentDescriptorProvider<react::RNSScreenStackHeaderConfigComponentDescriptor>();
941
+ _lastHeaderInsets = NSDirectionalEdgeInsets{};
752
942
  }
753
943
 
754
944
  - (NSNumber *)getFontSizePropValue:(int)value
@@ -758,14 +948,9 @@ static RCTResizeMode resizeModeFromCppEquiv(react::ImageResizeMode resizeMode)
758
948
  return nil;
759
949
  }
760
950
 
761
- - (UISemanticContentAttribute)getDirectionPropValue:(react::RNSScreenStackHeaderConfigDirection)direction
951
+ + (react::ComponentDescriptorProvider)componentDescriptorProvider
762
952
  {
763
- switch (direction) {
764
- case react::RNSScreenStackHeaderConfigDirection::Rtl:
765
- return UISemanticContentAttributeForceRightToLeft;
766
- case react::RNSScreenStackHeaderConfigDirection::Ltr:
767
- return UISemanticContentAttributeForceLeftToRight;
768
- }
953
+ return react::concreteComponentDescriptorProvider<react::RNSScreenStackHeaderConfigComponentDescriptor>();
769
954
  }
770
955
 
771
956
  - (void)updateProps:(react::Props::Shared const &)props oldProps:(react::Props::Shared const &)oldProps
@@ -804,6 +989,7 @@ static RCTResizeMode resizeModeFromCppEquiv(react::ImageResizeMode resizeMode)
804
989
  _largeTitleFontWeight = RCTNSStringFromStringNilIfEmpty(newScreenProps.largeTitleFontWeight);
805
990
  _largeTitleFontSize = [self getFontSizePropValue:newScreenProps.largeTitleFontSize];
806
991
  _largeTitleHideShadow = newScreenProps.largeTitleHideShadow;
992
+ _largeTitleBackgroundColor = RCTUIColorFromSharedColor(newScreenProps.largeTitleBackgroundColor);
807
993
 
808
994
  _backTitle = RCTNSStringFromStringNilIfEmpty(newScreenProps.backTitle);
809
995
  if (newScreenProps.backTitleFontFamily != oldScreenProps.backTitleFontFamily) {
@@ -812,9 +998,11 @@ static RCTResizeMode resizeModeFromCppEquiv(react::ImageResizeMode resizeMode)
812
998
  _backTitleFontSize = [self getFontSizePropValue:newScreenProps.backTitleFontSize];
813
999
  _hideBackButton = newScreenProps.hideBackButton;
814
1000
  _disableBackButtonMenu = newScreenProps.disableBackButtonMenu;
1001
+ _backButtonDisplayMode =
1002
+ [RNSConvert UINavigationItemBackButtonDisplayModeFromCppEquivalent:newScreenProps.backButtonDisplayMode];
815
1003
 
816
1004
  if (newScreenProps.direction != oldScreenProps.direction) {
817
- _direction = [self getDirectionPropValue:newScreenProps.direction];
1005
+ _direction = [RNSConvert UISemanticContentAttributeFromCppEquivalent:newScreenProps.direction];
818
1006
  }
819
1007
 
820
1008
  _backTitleVisible = newScreenProps.backTitleVisible;
@@ -826,6 +1014,10 @@ static RCTResizeMode resizeModeFromCppEquiv(react::ImageResizeMode resizeMode)
826
1014
  _color = RCTUIColorFromSharedColor(newScreenProps.color);
827
1015
  _backgroundColor = RCTUIColorFromSharedColor(newScreenProps.backgroundColor);
828
1016
 
1017
+ if (newScreenProps.blurEffect != oldScreenProps.blurEffect) {
1018
+ _blurEffect = [RNSConvert RNSBlurEffectStyleFromCppEquivalent:newScreenProps.blurEffect];
1019
+ }
1020
+
829
1021
  [self updateViewControllerIfNeeded];
830
1022
 
831
1023
  if (needsNavigationControllerLayout) {
@@ -838,9 +1030,25 @@ static RCTResizeMode resizeModeFromCppEquiv(react::ImageResizeMode resizeMode)
838
1030
  [super updateProps:props oldProps:oldProps];
839
1031
  }
840
1032
 
1033
+ - (void)updateState:(const facebook::react::State::Shared &)state
1034
+ oldState:(const facebook::react::State::Shared &)oldState
1035
+ {
1036
+ _state = std::static_pointer_cast<const react::RNSScreenStackHeaderConfigShadowNode::ConcreteState>(state);
1037
+ #ifndef NDEBUG
1038
+ if (auto imgLoaderPtr = _state.get()->getData().getImageLoader().lock()) {
1039
+ imageLoader = react::unwrapManagedObject(imgLoaderPtr);
1040
+ }
1041
+ #endif // !NDEBUG
1042
+ }
1043
+
841
1044
  #else
842
1045
  #pragma mark - Paper specific
843
1046
 
1047
+ - (void)didUpdateReactSubviews
1048
+ {
1049
+ [self updateViewControllerIfNeeded];
1050
+ }
1051
+
844
1052
  - (void)didSetProps:(NSArray<NSString *> *)changedProps
845
1053
  {
846
1054
  [super didSetProps:changedProps];
@@ -876,11 +1084,21 @@ Class<RCTComponentViewProtocol> RNSScreenStackHeaderConfigCls(void)
876
1084
 
877
1085
  RCT_EXPORT_MODULE()
878
1086
 
1087
+ #ifdef RCT_NEW_ARCH_ENABLED
1088
+ #else
1089
+
879
1090
  - (UIView *)view
880
1091
  {
881
- return [RNSScreenStackHeaderConfig new];
1092
+ return [[RNSScreenStackHeaderConfig alloc] initWithBridge:self.bridge];
882
1093
  }
883
1094
 
1095
+ - (RCTShadowView *)shadowView
1096
+ {
1097
+ return [RNSScreenStackHeaderConfigShadowView new];
1098
+ }
1099
+
1100
+ #endif // RCT_NEW_ARCH_ENABLED
1101
+
884
1102
  RCT_EXPORT_VIEW_PROPERTY(title, NSString)
885
1103
  RCT_EXPORT_VIEW_PROPERTY(titleFontFamily, NSString)
886
1104
  RCT_EXPORT_VIEW_PROPERTY(titleFontSize, NSNumber)
@@ -891,7 +1109,7 @@ RCT_EXPORT_VIEW_PROPERTY(backTitleFontFamily, NSString)
891
1109
  RCT_EXPORT_VIEW_PROPERTY(backTitleFontSize, NSNumber)
892
1110
  RCT_EXPORT_VIEW_PROPERTY(backgroundColor, UIColor)
893
1111
  RCT_EXPORT_VIEW_PROPERTY(backTitleVisible, BOOL)
894
- RCT_EXPORT_VIEW_PROPERTY(blurEffect, UIBlurEffectStyle)
1112
+ RCT_EXPORT_VIEW_PROPERTY(blurEffect, RNSBlurEffectStyle)
895
1113
  RCT_EXPORT_VIEW_PROPERTY(color, UIColor)
896
1114
  RCT_EXPORT_VIEW_PROPERTY(direction, UISemanticContentAttribute)
897
1115
  RCT_EXPORT_VIEW_PROPERTY(largeTitle, BOOL)
@@ -905,48 +1123,89 @@ RCT_EXPORT_VIEW_PROPERTY(hideBackButton, BOOL)
905
1123
  RCT_EXPORT_VIEW_PROPERTY(hideShadow, BOOL)
906
1124
  RCT_EXPORT_VIEW_PROPERTY(backButtonInCustomView, BOOL)
907
1125
  RCT_EXPORT_VIEW_PROPERTY(disableBackButtonMenu, BOOL)
908
- // `hidden` is an UIView property, we need to use different name internally
909
- RCT_REMAP_VIEW_PROPERTY(hidden, hide, BOOL)
1126
+ RCT_EXPORT_VIEW_PROPERTY(backButtonDisplayMode, UINavigationItemBackButtonDisplayMode)
1127
+ RCT_REMAP_VIEW_PROPERTY(hidden, hide, BOOL) // `hidden` is an UIView property, we need to use different name internally
910
1128
  RCT_EXPORT_VIEW_PROPERTY(translucent, BOOL)
911
1129
 
912
1130
  @end
913
1131
 
1132
+ #ifdef RCT_NEW_ARCH_ENABLED
1133
+ #else
1134
+
1135
+ @implementation RNSHeaderConfigInsetsPayload
1136
+
1137
+ - (instancetype)init
1138
+ {
1139
+ return [self initWithInsets:NSDirectionalEdgeInsets{}];
1140
+ }
1141
+
1142
+ - (instancetype)initWithInsets:(NSDirectionalEdgeInsets)insets
1143
+ {
1144
+ if (self = [super init]) {
1145
+ self.insets = insets;
1146
+ }
1147
+ return self;
1148
+ }
1149
+
1150
+ @end
1151
+
1152
+ @implementation RNSScreenStackHeaderConfigShadowView {
1153
+ }
1154
+
1155
+ - (void)setLocalData:(NSObject *)localData
1156
+ {
1157
+ if ([localData isKindOfClass:RNSHeaderConfigInsetsPayload.class]) {
1158
+ RNSHeaderConfigInsetsPayload *payload = (RNSHeaderConfigInsetsPayload *)localData;
1159
+ [self setPaddingStart:YGValue{.value = (float)payload.insets.leading, .unit = YGUnitPoint}];
1160
+ [self setPaddingEnd:YGValue{.value = (float)payload.insets.trailing, .unit = YGUnitPoint}];
1161
+
1162
+ // Trigger layout prop recomputation
1163
+ [self didSetProps:@[]];
1164
+ } else {
1165
+ [super setLocalData:localData];
1166
+ }
1167
+ }
1168
+
1169
+ @end
1170
+ #endif
1171
+
914
1172
  @implementation RCTConvert (RNSScreenStackHeader)
915
1173
 
916
1174
  + (NSMutableDictionary *)blurEffectsForIOSVersion
917
1175
  {
918
1176
  NSMutableDictionary *blurEffects = [NSMutableDictionary new];
919
1177
  [blurEffects addEntriesFromDictionary:@{
920
- @"extraLight" : @(UIBlurEffectStyleExtraLight),
921
- @"light" : @(UIBlurEffectStyleLight),
922
- @"dark" : @(UIBlurEffectStyleDark),
1178
+ @"none" : @(RNSBlurEffectStyleNone),
1179
+ @"extraLight" : @(RNSBlurEffectStyleExtraLight),
1180
+ @"light" : @(RNSBlurEffectStyleLight),
1181
+ @"dark" : @(RNSBlurEffectStyleDark),
923
1182
  }];
924
1183
 
925
1184
  if (@available(iOS 10.0, *)) {
926
1185
  [blurEffects addEntriesFromDictionary:@{
927
- @"regular" : @(UIBlurEffectStyleRegular),
928
- @"prominent" : @(UIBlurEffectStyleProminent),
1186
+ @"regular" : @(RNSBlurEffectStyleRegular),
1187
+ @"prominent" : @(RNSBlurEffectStyleProminent),
929
1188
  }];
930
1189
  }
931
1190
  #if !TARGET_OS_TV && defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && defined(__IPHONE_13_0) && \
932
1191
  __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_13_0
933
1192
  if (@available(iOS 13.0, *)) {
934
1193
  [blurEffects addEntriesFromDictionary:@{
935
- @"systemUltraThinMaterial" : @(UIBlurEffectStyleSystemUltraThinMaterial),
936
- @"systemThinMaterial" : @(UIBlurEffectStyleSystemThinMaterial),
937
- @"systemMaterial" : @(UIBlurEffectStyleSystemMaterial),
938
- @"systemThickMaterial" : @(UIBlurEffectStyleSystemThickMaterial),
939
- @"systemChromeMaterial" : @(UIBlurEffectStyleSystemChromeMaterial),
940
- @"systemUltraThinMaterialLight" : @(UIBlurEffectStyleSystemUltraThinMaterialLight),
941
- @"systemThinMaterialLight" : @(UIBlurEffectStyleSystemThinMaterialLight),
942
- @"systemMaterialLight" : @(UIBlurEffectStyleSystemMaterialLight),
943
- @"systemThickMaterialLight" : @(UIBlurEffectStyleSystemThickMaterialLight),
944
- @"systemChromeMaterialLight" : @(UIBlurEffectStyleSystemChromeMaterialLight),
945
- @"systemUltraThinMaterialDark" : @(UIBlurEffectStyleSystemUltraThinMaterialDark),
946
- @"systemThinMaterialDark" : @(UIBlurEffectStyleSystemThinMaterialDark),
947
- @"systemMaterialDark" : @(UIBlurEffectStyleSystemMaterialDark),
948
- @"systemThickMaterialDark" : @(UIBlurEffectStyleSystemThickMaterialDark),
949
- @"systemChromeMaterialDark" : @(UIBlurEffectStyleSystemChromeMaterialDark),
1194
+ @"systemUltraThinMaterial" : @(RNSBlurEffectStyleSystemUltraThinMaterial),
1195
+ @"systemThinMaterial" : @(RNSBlurEffectStyleSystemThinMaterial),
1196
+ @"systemMaterial" : @(RNSBlurEffectStyleSystemMaterial),
1197
+ @"systemThickMaterial" : @(RNSBlurEffectStyleSystemThickMaterial),
1198
+ @"systemChromeMaterial" : @(RNSBlurEffectStyleSystemChromeMaterial),
1199
+ @"systemUltraThinMaterialLight" : @(RNSBlurEffectStyleSystemUltraThinMaterialLight),
1200
+ @"systemThinMaterialLight" : @(RNSBlurEffectStyleSystemThinMaterialLight),
1201
+ @"systemMaterialLight" : @(RNSBlurEffectStyleSystemMaterialLight),
1202
+ @"systemThickMaterialLight" : @(RNSBlurEffectStyleSystemThickMaterialLight),
1203
+ @"systemChromeMaterialLight" : @(RNSBlurEffectStyleSystemChromeMaterialLight),
1204
+ @"systemUltraThinMaterialDark" : @(RNSBlurEffectStyleSystemUltraThinMaterialDark),
1205
+ @"systemThinMaterialDark" : @(RNSBlurEffectStyleSystemThinMaterialDark),
1206
+ @"systemMaterialDark" : @(RNSBlurEffectStyleSystemMaterialDark),
1207
+ @"systemThickMaterialDark" : @(RNSBlurEffectStyleSystemThickMaterialDark),
1208
+ @"systemChromeMaterialDark" : @(RNSBlurEffectStyleSystemChromeMaterialDark),
950
1209
  }];
951
1210
  }
952
1211
  #endif
@@ -962,6 +1221,16 @@ RCT_ENUM_CONVERTER(
962
1221
  UISemanticContentAttributeUnspecified,
963
1222
  integerValue)
964
1223
 
965
- RCT_ENUM_CONVERTER(UIBlurEffectStyle, ([self blurEffectsForIOSVersion]), UIBlurEffectStyleExtraLight, integerValue)
1224
+ RCT_ENUM_CONVERTER(
1225
+ UINavigationItemBackButtonDisplayMode,
1226
+ (@{
1227
+ @"default" : @(UINavigationItemBackButtonDisplayModeDefault),
1228
+ @"generic" : @(UINavigationItemBackButtonDisplayModeGeneric),
1229
+ @"minimal" : @(UINavigationItemBackButtonDisplayModeMinimal),
1230
+ }),
1231
+ UINavigationItemBackButtonDisplayModeDefault,
1232
+ integerValue)
1233
+
1234
+ RCT_ENUM_CONVERTER(RNSBlurEffectStyle, ([self blurEffectsForIOSVersion]), RNSBlurEffectStyleNone, integerValue)
966
1235
 
967
1236
  @end