react-native-screens 5.0.0-alpha.1 → 5.0.0-alpha.2

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 (436) hide show
  1. package/README.md +1 -2
  2. package/RNScreens.podspec +2 -6
  3. package/android/build.gradle +26 -1
  4. package/android/src/fabric/java/com/swmansion/rnscreens/NativeProxy.kt +5 -0
  5. package/android/src/main/java/com/swmansion/rnscreens/RNScreensPackage.kt +2 -2
  6. package/android/src/main/java/com/swmansion/rnscreens/legacy/Screen.kt +22 -6
  7. package/android/src/main/java/com/swmansion/rnscreens/legacy/ScreenStackFragment.kt +39 -10
  8. package/android/src/main/java/com/swmansion/rnscreens/legacy/ScreenViewManager.kt +5 -0
  9. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetAppearanceCoordinator.kt → native/coordinator/FormSheetAppearanceCoordinator.kt} +2 -1
  10. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetBehaviorController.kt → native/coordinator/FormSheetBehaviorController.kt} +25 -1
  11. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetDimensionsCoordinator.kt → native/coordinator/FormSheetDimensionsCoordinator.kt} +4 -1
  12. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/coordinator/FormSheetNativeDismissCoordinator.kt +50 -0
  13. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetContainer.kt → native/core/FormSheetContainer.kt} +1 -1
  14. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetDialog.kt → native/core/FormSheetDialog.kt} +24 -1
  15. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetDialogManager.kt → native/core/FormSheetDialogManager.kt} +25 -1
  16. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetContentSizeChangeDelegate.kt → native/interfaces/FormSheetContentSizeChangeDelegate.kt} +1 -1
  17. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetContentSizeChangeProvider.kt → native/interfaces/FormSheetContentSizeChangeProvider.kt} +1 -1
  18. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetDialogEventEmitter.kt → native/interfaces/FormSheetDialogEventEmitter.kt} +3 -1
  19. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetConfig.kt → native/model/FormSheetConfig.kt} +5 -1
  20. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetDetents.kt → native/model/FormSheetDetents.kt} +1 -1
  21. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetAnimatorFactory.kt → native/presentation/FormSheetAnimatorFactory.kt} +1 -1
  22. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetPresentationManager.kt → native/presentation/FormSheetPresentationManager.kt} +3 -12
  23. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetPresentationState.kt → native/presentation/FormSheetPresentationState.kt} +1 -1
  24. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetContentWrapper.kt → react/contentwrapper/FormSheetContentWrapper.kt} +3 -1
  25. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetContentWrapperViewManager.kt → react/contentwrapper/FormSheetContentWrapperViewManager.kt} +1 -1
  26. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetDetentChangedEvent.kt → react/event/FormSheetDetentChangedEvent.kt} +1 -1
  27. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetDidAppearEvent.kt → react/event/FormSheetDidAppearEvent.kt} +1 -1
  28. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetDidDisappearEvent.kt → react/event/FormSheetDidDisappearEvent.kt} +1 -1
  29. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetNativeDismissEvent.kt → react/event/FormSheetNativeDismissEvent.kt} +1 -1
  30. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/react/event/FormSheetNativeDismissPreventedEvent.kt +29 -0
  31. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetSyncFlushEvent.kt → react/event/FormSheetSyncFlushEvent.kt} +1 -1
  32. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetWillAppearEvent.kt → react/event/FormSheetWillAppearEvent.kt} +1 -1
  33. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetWillDisappearEvent.kt → react/event/FormSheetWillDisappearEvent.kt} +1 -1
  34. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetContentView.kt → react/host/FormSheetContentView.kt} +3 -1
  35. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetHost.kt → react/host/FormSheetHost.kt} +6 -1
  36. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetHostEventEmitter.kt → react/host/FormSheetHostEventEmitter.kt} +16 -1
  37. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetHostViewManager.kt → react/host/FormSheetHostViewManager.kt} +11 -2
  38. package/android/src/main/java/com/swmansion/rnscreens/stack/header/StackHeaderApplicator.kt +30 -418
  39. package/android/src/main/java/com/swmansion/rnscreens/stack/header/StackHeaderCoordinatorLayout.kt +36 -113
  40. package/android/src/main/java/com/swmansion/rnscreens/stack/header/StackHeaderFrameSynchronizer.kt +63 -0
  41. package/android/src/main/java/com/swmansion/rnscreens/stack/header/{StackHeaderAppBarLayout.kt → appbar/StackHeaderAppBarLayout.kt} +1 -6
  42. package/android/src/main/java/com/swmansion/rnscreens/stack/header/{StackHeaderAppBarLayoutBehavior.kt → appbar/StackHeaderAppBarLayoutBehavior.kt} +1 -1
  43. package/android/src/main/java/com/swmansion/rnscreens/stack/header/{StackHeaderScrollingViewBehavior.kt → appbar/StackHeaderScrollingViewBehavior.kt} +1 -1
  44. package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderConfig.kt +28 -6
  45. package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderConfigViewManager.kt +8 -1
  46. package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderConfigurationObserver.kt +1 -1
  47. package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderConfigurationProviding.kt +2 -1
  48. package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderInvalidationFlags.kt +2 -1
  49. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/StackHeaderToolbarMenuApplicator.kt +448 -0
  50. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/StackHeaderToolbarMenuMapper.kt +17 -3
  51. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/StackHeaderToolbarMenuSelectionController.kt +83 -0
  52. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/{StackHeaderToolbarMenuConfig.kt → model/StackHeaderToolbarMenuConfig.kt} +1 -1
  53. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/{StackHeaderToolbarMenuElementConfig.kt → model/StackHeaderToolbarMenuElementConfig.kt} +1 -1
  54. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/{StackHeaderToolbarMenuGroupConfig.kt → model/StackHeaderToolbarMenuGroupConfig.kt} +1 -1
  55. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/{StackHeaderToolbarMenuGroupMetadata.kt → model/StackHeaderToolbarMenuGroupMetadata.kt} +5 -1
  56. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/{StackHeaderToolbarMenuItemConfig.kt → model/StackHeaderToolbarMenuItemConfig.kt} +1 -1
  57. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/{StackHeaderToolbarMenuItemDefaults.kt → model/StackHeaderToolbarMenuItemDefaults.kt} +1 -1
  58. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/{StackHeaderToolbarMenuItemIconSource.kt → model/StackHeaderToolbarMenuItemIconSource.kt} +1 -1
  59. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/{StackHeaderToolbarMenuItemShowAsAction.kt → model/StackHeaderToolbarMenuItemShowAsAction.kt} +1 -1
  60. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/{StackHeaderToolbarMenuItemType.kt → model/StackHeaderToolbarMenuItemType.kt} +1 -1
  61. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/{StackHeaderToolbarFieldUpdate.kt → update/StackHeaderToolbarFieldUpdate.kt} +1 -1
  62. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/{StackHeaderToolbarMenuElementOptions.kt → update/StackHeaderToolbarMenuElementOptions.kt} +2 -1
  63. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/update/StackHeaderToolbarMenuElementRawUpdate.kt +13 -0
  64. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/update/StackHeaderToolbarMenuElementUpdate.kt +10 -0
  65. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/update/StackHeaderToolbarMenuIconResolver.kt +17 -0
  66. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/{StackHeaderToolbarMenuUpdateQueue.kt → update/StackHeaderToolbarMenuUpdateQueue.kt} +1 -43
  67. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/update/StackHeaderToolbarMenuUpdateQueueDelegate.kt +9 -0
  68. package/android/src/main/java/com/swmansion/rnscreens/stack/screen/StackScreen.kt +1 -0
  69. package/common/cpp/react/renderer/components/rnscreens/legacy/RNSScreenShadowNode.cpp +10 -5
  70. package/ios/RNSEnums.h +0 -2
  71. package/ios/RNSOrientationProviding.h +0 -2
  72. package/ios/RNSReactMountingTransactionObserving.h +15 -0
  73. package/ios/legacy/RNSBarButtonItem.mm +12 -5
  74. package/ios/legacy/RNSScreen.h +8 -1
  75. package/ios/legacy/RNSScreen.mm +39 -17
  76. package/ios/legacy/RNSScreenContentWrapper.mm +9 -0
  77. package/ios/legacy/RNSScreenFooter.mm +2 -0
  78. package/ios/legacy/RNSScreenStack.mm +9 -4
  79. package/ios/modals/form-sheet/RNSFormSheetContentWrapperComponentView.mm +9 -0
  80. package/ios/scroll-to-top-guard/RNSScrollToTopGuard.h +17 -0
  81. package/ios/scroll-to-top-guard/RNSScrollToTopGuard.mm +57 -0
  82. package/ios/scroll-to-top-guard/RNSScrollToTopGuardGestureRecognizer.h +28 -0
  83. package/ios/scroll-to-top-guard/RNSScrollToTopGuardGestureRecognizer.mm +64 -0
  84. package/ios/split/RNSSplitAppearanceApplicator.h +36 -0
  85. package/ios/split/RNSSplitAppearanceApplicator.mm +185 -0
  86. package/ios/split/RNSSplitAppearanceCoordinator.h +26 -0
  87. package/ios/split/RNSSplitAppearanceCoordinator.mm +27 -0
  88. package/ios/split/RNSSplitAppearanceUpdateFlags.h +14 -0
  89. package/ios/split/RNSSplitHostComponentView.mm +1 -1
  90. package/ios/split/RNSSplitHostController.h +86 -0
  91. package/ios/split/RNSSplitHostController.mm +560 -0
  92. package/ios/split/RNSSplitNavigationController.h +31 -0
  93. package/ios/split/RNSSplitNavigationController.mm +44 -0
  94. package/ios/split/RNSSplitNavigationControllerFrameObserver.h +32 -0
  95. package/ios/split/RNSSplitNavigationControllerFrameObserver.mm +80 -0
  96. package/ios/split/RNSSplitNavigationControllerFrameOriginChangeDelegate.h +15 -0
  97. package/ios/split/RNSSplitScreenComponentView.mm +8 -9
  98. package/ios/split/RNSSplitScreenController.h +45 -0
  99. package/ios/split/RNSSplitScreenController.mm +130 -0
  100. package/ios/stack/header/RNSStackHeaderConfigComponentView.h +1 -0
  101. package/ios/stack/header/RNSStackHeaderConfigComponentView.mm +47 -9
  102. package/ios/stack/header/RNSStackHeaderConfigDataProviding.h +3 -0
  103. package/ios/stack/header/RNSStackHeaderMenuCoordinator.h +9 -0
  104. package/ios/stack/header/RNSStackHeaderMenuCoordinator.mm +15 -0
  105. package/ios/stack/header/RNSStackHeaderMenuFinder.h +18 -3
  106. package/ios/stack/header/RNSStackHeaderMenuFinder.mm +21 -3
  107. package/ios/stack/host/RNSStackHostComponentView.mm +3 -1
  108. package/ios/stack/host/RNSStackNavigationController.mm +1 -1
  109. package/ios/stack/screen/RNSStackScreenComponentView.mm +0 -2
  110. package/ios/stack/screen/RNSStackScreenHeaderCoordinator.h +6 -1
  111. package/ios/stack/screen/RNSStackScreenHeaderCoordinator.mm +61 -12
  112. package/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryComponentView.mm +3 -0
  113. package/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryContentComponentView.mm +4 -1
  114. package/ios/tabs/host/RNSTabBarController.h +5 -12
  115. package/ios/tabs/host/RNSTabBarController.mm +1 -1
  116. package/lib/commonjs/components/scroll-to-top-guard/ScrollToTopGuard.ios.js +25 -0
  117. package/lib/commonjs/components/scroll-to-top-guard/ScrollToTopGuard.ios.js.map +1 -0
  118. package/lib/commonjs/components/scroll-to-top-guard/ScrollToTopGuard.js +24 -0
  119. package/lib/commonjs/components/scroll-to-top-guard/ScrollToTopGuard.js.map +1 -0
  120. package/lib/commonjs/components/scroll-to-top-guard/index.js +13 -0
  121. package/lib/commonjs/components/scroll-to-top-guard/index.js.map +1 -0
  122. package/lib/commonjs/components/stack/header/StackHeaderConfig.ios.js +11 -12
  123. package/lib/commonjs/components/stack/header/StackHeaderConfig.ios.js.map +1 -1
  124. package/lib/commonjs/components/stack/header/ios/StackHeaderItem.ios.js +1 -22
  125. package/lib/commonjs/components/stack/header/ios/StackHeaderItem.ios.js.map +1 -1
  126. package/lib/commonjs/components/stack/header/ios/iconUtils.ios.js +33 -2
  127. package/lib/commonjs/components/stack/header/ios/iconUtils.ios.js.map +1 -1
  128. package/lib/commonjs/components/stack/header/utils.js +6 -9
  129. package/lib/commonjs/components/stack/header/utils.js.map +1 -1
  130. package/lib/commonjs/experimental/index.js +11 -0
  131. package/lib/commonjs/experimental/index.js.map +1 -1
  132. package/lib/commonjs/fabric/ScrollViewMarkerNativeComponent.js.map +1 -1
  133. package/lib/commonjs/fabric/legacy/FullWindowOverlayNativeComponent.js.map +1 -1
  134. package/lib/commonjs/fabric/legacy/ModalScreenNativeComponent.js.map +1 -1
  135. package/lib/commonjs/fabric/legacy/ScreenContainerNativeComponent.js.map +1 -1
  136. package/lib/commonjs/fabric/legacy/ScreenFooterNativeComponent.js.map +1 -1
  137. package/lib/commonjs/fabric/legacy/ScreenNativeComponent.js.map +1 -1
  138. package/lib/commonjs/fabric/legacy/ScreenStackHeaderConfigNativeComponent.js.map +1 -1
  139. package/lib/commonjs/fabric/legacy/ScreenStackHeaderSubviewNativeComponent.js.map +1 -1
  140. package/lib/commonjs/fabric/legacy/ScreenStackNativeComponent.js.map +1 -1
  141. package/lib/commonjs/fabric/legacy/SearchBarNativeComponent.js.map +1 -1
  142. package/lib/commonjs/fabric/modals/form-sheet/FormSheetHostNativeComponent.js.map +1 -1
  143. package/lib/commonjs/fabric/safe-area/SafeAreaViewNativeComponent.js.map +1 -1
  144. package/lib/commonjs/fabric/scroll-to-top-guard/ScrollToTopGuardNativeComponent.js +12 -0
  145. package/lib/commonjs/fabric/scroll-to-top-guard/ScrollToTopGuardNativeComponent.js.map +1 -0
  146. package/lib/commonjs/fabric/split/SplitHostNativeComponent.js.map +1 -1
  147. package/lib/commonjs/fabric/split/SplitScreenNativeComponent.js.map +1 -1
  148. package/lib/commonjs/fabric/stack/StackHeaderConfigAndroidNativeComponent.js.map +1 -1
  149. package/lib/commonjs/fabric/stack/StackHeaderConfigIOSNativeComponent.js.map +1 -1
  150. package/lib/commonjs/fabric/stack/StackHeaderItemIOSNativeComponent.js.map +1 -1
  151. package/lib/commonjs/fabric/stack/StackHeaderItemSpacerIOSNativeComponent.js.map +1 -1
  152. package/lib/commonjs/fabric/stack/StackHeaderSubviewAndroidNativeComponent.js.map +1 -1
  153. package/lib/commonjs/fabric/stack/StackHostNativeComponent.js.map +1 -1
  154. package/lib/commonjs/fabric/stack/StackScreenNativeComponent.js.map +1 -1
  155. package/lib/commonjs/fabric/tabs/TabsBottomAccessoryContentNativeComponent.js.map +1 -1
  156. package/lib/commonjs/fabric/tabs/TabsBottomAccessoryNativeComponent.js.map +1 -1
  157. package/lib/commonjs/fabric/tabs/TabsHostAndroidNativeComponent.js.map +1 -1
  158. package/lib/commonjs/fabric/tabs/TabsHostIOSNativeComponent.js.map +1 -1
  159. package/lib/commonjs/fabric/tabs/TabsScreenAndroidNativeComponent.js.map +1 -1
  160. package/lib/commonjs/fabric/tabs/TabsScreenIOSNativeComponent.js.map +1 -1
  161. package/lib/commonjs/flags.js +22 -1
  162. package/lib/commonjs/flags.js.map +1 -1
  163. package/lib/commonjs/legacy/components/Screen.js +6 -1
  164. package/lib/commonjs/legacy/components/Screen.js.map +1 -1
  165. package/lib/commonjs/legacy/components/ScreenStackHeaderConfig.js +5 -0
  166. package/lib/commonjs/legacy/components/ScreenStackHeaderConfig.js.map +1 -1
  167. package/lib/commonjs/legacy/components/ScreenStackItem.js.map +1 -1
  168. package/lib/commonjs/legacy/components/SearchBar.js +16 -16
  169. package/lib/commonjs/legacy/components/SearchBar.js.map +1 -1
  170. package/lib/commonjs/legacy/components/helpers/prepareHeaderBarButtonItems.js +3 -0
  171. package/lib/commonjs/legacy/components/helpers/prepareHeaderBarButtonItems.js.map +1 -1
  172. package/lib/commonjs/legacy/gesture-handler/fabricUtils.js.map +1 -1
  173. package/lib/commonjs/legacy/useTransitionProgress.js.map +1 -1
  174. package/lib/module/components/scroll-to-top-guard/ScrollToTopGuard.ios.js +20 -0
  175. package/lib/module/components/scroll-to-top-guard/ScrollToTopGuard.ios.js.map +1 -0
  176. package/lib/module/components/scroll-to-top-guard/ScrollToTopGuard.js +18 -0
  177. package/lib/module/components/scroll-to-top-guard/ScrollToTopGuard.js.map +1 -0
  178. package/lib/module/components/scroll-to-top-guard/index.js +2 -0
  179. package/lib/module/components/scroll-to-top-guard/index.js.map +1 -0
  180. package/lib/module/components/stack/header/StackHeaderConfig.ios.js +14 -15
  181. package/lib/module/components/stack/header/StackHeaderConfig.ios.js.map +1 -1
  182. package/lib/module/components/stack/header/ios/StackHeaderItem.ios.js +1 -22
  183. package/lib/module/components/stack/header/ios/StackHeaderItem.ios.js.map +1 -1
  184. package/lib/module/components/stack/header/ios/iconUtils.ios.js +31 -2
  185. package/lib/module/components/stack/header/ios/iconUtils.ios.js.map +1 -1
  186. package/lib/module/components/stack/header/utils.js +5 -8
  187. package/lib/module/components/stack/header/utils.js.map +1 -1
  188. package/lib/module/experimental/index.js +1 -0
  189. package/lib/module/experimental/index.js.map +1 -1
  190. package/lib/module/fabric/ScrollViewMarkerNativeComponent.js.map +1 -1
  191. package/lib/module/fabric/legacy/FullWindowOverlayNativeComponent.js.map +1 -1
  192. package/lib/module/fabric/legacy/ModalScreenNativeComponent.js.map +1 -1
  193. package/lib/module/fabric/legacy/ScreenContainerNativeComponent.js.map +1 -1
  194. package/lib/module/fabric/legacy/ScreenFooterNativeComponent.js.map +1 -1
  195. package/lib/module/fabric/legacy/ScreenNativeComponent.js.map +1 -1
  196. package/lib/module/fabric/legacy/ScreenStackHeaderConfigNativeComponent.js.map +1 -1
  197. package/lib/module/fabric/legacy/ScreenStackHeaderSubviewNativeComponent.js.map +1 -1
  198. package/lib/module/fabric/legacy/ScreenStackNativeComponent.js.map +1 -1
  199. package/lib/module/fabric/legacy/SearchBarNativeComponent.js.map +1 -1
  200. package/lib/module/fabric/modals/form-sheet/FormSheetHostNativeComponent.js.map +1 -1
  201. package/lib/module/fabric/safe-area/SafeAreaViewNativeComponent.js.map +1 -1
  202. package/lib/module/fabric/scroll-to-top-guard/ScrollToTopGuardNativeComponent.js +7 -0
  203. package/lib/module/fabric/scroll-to-top-guard/ScrollToTopGuardNativeComponent.js.map +1 -0
  204. package/lib/module/fabric/split/SplitHostNativeComponent.js.map +1 -1
  205. package/lib/module/fabric/split/SplitScreenNativeComponent.js.map +1 -1
  206. package/lib/module/fabric/stack/StackHeaderConfigAndroidNativeComponent.js.map +1 -1
  207. package/lib/module/fabric/stack/StackHeaderConfigIOSNativeComponent.js.map +1 -1
  208. package/lib/module/fabric/stack/StackHeaderItemIOSNativeComponent.js.map +1 -1
  209. package/lib/module/fabric/stack/StackHeaderItemSpacerIOSNativeComponent.js.map +1 -1
  210. package/lib/module/fabric/stack/StackHeaderSubviewAndroidNativeComponent.js.map +1 -1
  211. package/lib/module/fabric/stack/StackHostNativeComponent.js.map +1 -1
  212. package/lib/module/fabric/stack/StackScreenNativeComponent.js.map +1 -1
  213. package/lib/module/fabric/tabs/TabsBottomAccessoryContentNativeComponent.js.map +1 -1
  214. package/lib/module/fabric/tabs/TabsBottomAccessoryNativeComponent.js.map +1 -1
  215. package/lib/module/fabric/tabs/TabsHostAndroidNativeComponent.js.map +1 -1
  216. package/lib/module/fabric/tabs/TabsHostIOSNativeComponent.js.map +1 -1
  217. package/lib/module/fabric/tabs/TabsScreenAndroidNativeComponent.js.map +1 -1
  218. package/lib/module/fabric/tabs/TabsScreenIOSNativeComponent.js.map +1 -1
  219. package/lib/module/flags.js +22 -1
  220. package/lib/module/flags.js.map +1 -1
  221. package/lib/module/legacy/components/Screen.js +6 -1
  222. package/lib/module/legacy/components/Screen.js.map +1 -1
  223. package/lib/module/legacy/components/ScreenStackHeaderConfig.js +5 -0
  224. package/lib/module/legacy/components/ScreenStackHeaderConfig.js.map +1 -1
  225. package/lib/module/legacy/components/ScreenStackItem.js.map +1 -1
  226. package/lib/module/legacy/components/SearchBar.js +17 -17
  227. package/lib/module/legacy/components/SearchBar.js.map +1 -1
  228. package/lib/module/legacy/components/helpers/prepareHeaderBarButtonItems.js +4 -0
  229. package/lib/module/legacy/components/helpers/prepareHeaderBarButtonItems.js.map +1 -1
  230. package/lib/module/legacy/gesture-handler/fabricUtils.js.map +1 -1
  231. package/lib/module/legacy/useTransitionProgress.js.map +1 -1
  232. package/lib/module/private/hooks/useRenderDebugInfo.js.map +1 -1
  233. package/lib/typescript/components/modals/form-sheet/FormSheet.types.d.ts +2 -2
  234. package/lib/typescript/components/safe-area/SafeAreaView.web.d.ts +5 -2
  235. package/lib/typescript/components/safe-area/SafeAreaView.web.d.ts.map +1 -1
  236. package/lib/typescript/components/scroll-to-top-guard/ScrollToTopGuard.d.ts +15 -0
  237. package/lib/typescript/components/scroll-to-top-guard/ScrollToTopGuard.d.ts.map +1 -0
  238. package/lib/typescript/components/scroll-to-top-guard/ScrollToTopGuard.ios.d.ts +12 -0
  239. package/lib/typescript/components/scroll-to-top-guard/ScrollToTopGuard.ios.d.ts.map +1 -0
  240. package/lib/typescript/components/scroll-to-top-guard/index.d.ts +2 -0
  241. package/lib/typescript/components/scroll-to-top-guard/index.d.ts.map +1 -0
  242. package/lib/typescript/components/stack/header/StackHeaderConfig.android.types.d.ts +24 -0
  243. package/lib/typescript/components/stack/header/StackHeaderConfig.android.types.d.ts.map +1 -1
  244. package/lib/typescript/components/stack/header/StackHeaderConfig.ios.d.ts.map +1 -1
  245. package/lib/typescript/components/stack/header/StackHeaderConfig.ios.types.d.ts +13 -0
  246. package/lib/typescript/components/stack/header/StackHeaderConfig.ios.types.d.ts.map +1 -1
  247. package/lib/typescript/components/stack/header/StackHeaderConfig.web.d.ts +5 -2
  248. package/lib/typescript/components/stack/header/StackHeaderConfig.web.d.ts.map +1 -1
  249. package/lib/typescript/components/stack/header/ios/StackHeaderItem.ios.d.ts.map +1 -1
  250. package/lib/typescript/components/stack/header/ios/iconUtils.ios.d.ts +3 -0
  251. package/lib/typescript/components/stack/header/ios/iconUtils.ios.d.ts.map +1 -1
  252. package/lib/typescript/components/stack/header/utils.d.ts +1 -2
  253. package/lib/typescript/components/stack/header/utils.d.ts.map +1 -1
  254. package/lib/typescript/components/stack/host/StackHost.types.d.ts +2 -2
  255. package/lib/typescript/components/stack/host/StackHost.types.d.ts.map +1 -1
  256. package/lib/typescript/components/stack/host/StackHost.web.d.ts +6 -2
  257. package/lib/typescript/components/stack/host/StackHost.web.d.ts.map +1 -1
  258. package/lib/typescript/components/stack/screen/StackScreen.web.d.ts +5 -2
  259. package/lib/typescript/components/stack/screen/StackScreen.web.d.ts.map +1 -1
  260. package/lib/typescript/components/tabs/host/TabsHost.web.d.ts +5 -2
  261. package/lib/typescript/components/tabs/host/TabsHost.web.d.ts.map +1 -1
  262. package/lib/typescript/components/tabs/screen/TabsScreen.types.d.ts +7 -3
  263. package/lib/typescript/components/tabs/screen/TabsScreen.types.d.ts.map +1 -1
  264. package/lib/typescript/components/tabs/screen/TabsScreen.web.d.ts +5 -2
  265. package/lib/typescript/components/tabs/screen/TabsScreen.web.d.ts.map +1 -1
  266. package/lib/typescript/experimental/index.d.ts +1 -0
  267. package/lib/typescript/experimental/index.d.ts.map +1 -1
  268. package/lib/typescript/fabric/NativeScreensModule.d.ts +1 -1
  269. package/lib/typescript/fabric/ScrollViewMarkerNativeComponent.d.ts +2 -2
  270. package/lib/typescript/fabric/ScrollViewMarkerNativeComponent.d.ts.map +1 -1
  271. package/lib/typescript/fabric/legacy/FullWindowOverlayNativeComponent.d.ts +2 -2
  272. package/lib/typescript/fabric/legacy/FullWindowOverlayNativeComponent.d.ts.map +1 -1
  273. package/lib/typescript/fabric/legacy/ModalScreenNativeComponent.d.ts +3 -2
  274. package/lib/typescript/fabric/legacy/ModalScreenNativeComponent.d.ts.map +1 -1
  275. package/lib/typescript/fabric/legacy/ScreenContainerNativeComponent.d.ts +2 -2
  276. package/lib/typescript/fabric/legacy/ScreenContainerNativeComponent.d.ts.map +1 -1
  277. package/lib/typescript/fabric/legacy/ScreenContentWrapperNativeComponent.d.ts +2 -2
  278. package/lib/typescript/fabric/legacy/ScreenContentWrapperNativeComponent.d.ts.map +1 -1
  279. package/lib/typescript/fabric/legacy/ScreenFooterNativeComponent.d.ts +2 -2
  280. package/lib/typescript/fabric/legacy/ScreenFooterNativeComponent.d.ts.map +1 -1
  281. package/lib/typescript/fabric/legacy/ScreenNativeComponent.d.ts +3 -2
  282. package/lib/typescript/fabric/legacy/ScreenNativeComponent.d.ts.map +1 -1
  283. package/lib/typescript/fabric/legacy/ScreenNavigationContainerNativeComponent.d.ts +2 -2
  284. package/lib/typescript/fabric/legacy/ScreenNavigationContainerNativeComponent.d.ts.map +1 -1
  285. package/lib/typescript/fabric/legacy/ScreenStackHeaderConfigNativeComponent.d.ts +3 -3
  286. package/lib/typescript/fabric/legacy/ScreenStackHeaderConfigNativeComponent.d.ts.map +1 -1
  287. package/lib/typescript/fabric/legacy/ScreenStackHeaderSubviewNativeComponent.d.ts +2 -2
  288. package/lib/typescript/fabric/legacy/ScreenStackHeaderSubviewNativeComponent.d.ts.map +1 -1
  289. package/lib/typescript/fabric/legacy/ScreenStackNativeComponent.d.ts +2 -2
  290. package/lib/typescript/fabric/legacy/ScreenStackNativeComponent.d.ts.map +1 -1
  291. package/lib/typescript/fabric/legacy/SearchBarNativeComponent.d.ts +6 -6
  292. package/lib/typescript/fabric/legacy/SearchBarNativeComponent.d.ts.map +1 -1
  293. package/lib/typescript/fabric/modals/form-sheet/FormSheetContentWrapperNativeComponent.d.ts +2 -2
  294. package/lib/typescript/fabric/modals/form-sheet/FormSheetContentWrapperNativeComponent.d.ts.map +1 -1
  295. package/lib/typescript/fabric/modals/form-sheet/FormSheetHostNativeComponent.d.ts +2 -2
  296. package/lib/typescript/fabric/modals/form-sheet/FormSheetHostNativeComponent.d.ts.map +1 -1
  297. package/lib/typescript/fabric/safe-area/SafeAreaViewNativeComponent.d.ts +2 -2
  298. package/lib/typescript/fabric/safe-area/SafeAreaViewNativeComponent.d.ts.map +1 -1
  299. package/lib/typescript/fabric/scroll-to-top-guard/ScrollToTopGuardNativeComponent.d.ts +6 -0
  300. package/lib/typescript/fabric/scroll-to-top-guard/ScrollToTopGuardNativeComponent.d.ts.map +1 -0
  301. package/lib/typescript/fabric/split/SplitHostNativeComponent.d.ts +1 -1
  302. package/lib/typescript/fabric/split/SplitHostNativeComponent.d.ts.map +1 -1
  303. package/lib/typescript/fabric/split/SplitScreenNativeComponent.d.ts +2 -2
  304. package/lib/typescript/fabric/split/SplitScreenNativeComponent.d.ts.map +1 -1
  305. package/lib/typescript/fabric/stack/StackHeaderConfigAndroidNativeComponent.d.ts +1 -0
  306. package/lib/typescript/fabric/stack/StackHeaderConfigAndroidNativeComponent.d.ts.map +1 -1
  307. package/lib/typescript/fabric/stack/StackHeaderConfigIOSNativeComponent.d.ts +2 -1
  308. package/lib/typescript/fabric/stack/StackHeaderConfigIOSNativeComponent.d.ts.map +1 -1
  309. package/lib/typescript/fabric/stack/StackHeaderItemIOSNativeComponent.d.ts +2 -2
  310. package/lib/typescript/fabric/stack/StackHeaderItemIOSNativeComponent.d.ts.map +1 -1
  311. package/lib/typescript/fabric/stack/StackHeaderItemSpacerIOSNativeComponent.d.ts +2 -2
  312. package/lib/typescript/fabric/stack/StackHeaderItemSpacerIOSNativeComponent.d.ts.map +1 -1
  313. package/lib/typescript/fabric/stack/StackHeaderSubviewAndroidNativeComponent.d.ts +2 -2
  314. package/lib/typescript/fabric/stack/StackHeaderSubviewAndroidNativeComponent.d.ts.map +1 -1
  315. package/lib/typescript/fabric/stack/StackHostNativeComponent.d.ts +2 -2
  316. package/lib/typescript/fabric/stack/StackHostNativeComponent.d.ts.map +1 -1
  317. package/lib/typescript/fabric/stack/StackScreenNativeComponent.d.ts +2 -2
  318. package/lib/typescript/fabric/stack/StackScreenNativeComponent.d.ts.map +1 -1
  319. package/lib/typescript/fabric/tabs/TabsBottomAccessoryContentNativeComponent.d.ts +2 -2
  320. package/lib/typescript/fabric/tabs/TabsBottomAccessoryContentNativeComponent.d.ts.map +1 -1
  321. package/lib/typescript/fabric/tabs/TabsBottomAccessoryNativeComponent.d.ts +2 -2
  322. package/lib/typescript/fabric/tabs/TabsBottomAccessoryNativeComponent.d.ts.map +1 -1
  323. package/lib/typescript/fabric/tabs/TabsHostAndroidNativeComponent.d.ts +2 -2
  324. package/lib/typescript/fabric/tabs/TabsHostAndroidNativeComponent.d.ts.map +1 -1
  325. package/lib/typescript/fabric/tabs/TabsHostIOSNativeComponent.d.ts +2 -2
  326. package/lib/typescript/fabric/tabs/TabsHostIOSNativeComponent.d.ts.map +1 -1
  327. package/lib/typescript/fabric/tabs/TabsScreenAndroidNativeComponent.d.ts +2 -2
  328. package/lib/typescript/fabric/tabs/TabsScreenAndroidNativeComponent.d.ts.map +1 -1
  329. package/lib/typescript/fabric/tabs/TabsScreenIOSNativeComponent.d.ts +2 -2
  330. package/lib/typescript/fabric/tabs/TabsScreenIOSNativeComponent.d.ts.map +1 -1
  331. package/lib/typescript/flags.d.ts +13 -0
  332. package/lib/typescript/flags.d.ts.map +1 -1
  333. package/lib/typescript/legacy/TransitionProgressContext.d.ts +1 -1
  334. package/lib/typescript/legacy/TransitionProgressContext.d.ts.map +1 -1
  335. package/lib/typescript/legacy/components/Screen.d.ts +5 -3
  336. package/lib/typescript/legacy/components/Screen.d.ts.map +1 -1
  337. package/lib/typescript/legacy/components/Screen.web.d.ts +10 -2
  338. package/lib/typescript/legacy/components/Screen.web.d.ts.map +1 -1
  339. package/lib/typescript/legacy/components/ScreenContainer.web.d.ts +5 -2
  340. package/lib/typescript/legacy/components/ScreenContainer.web.d.ts.map +1 -1
  341. package/lib/typescript/legacy/components/ScreenContentWrapper.web.d.ts +5 -2
  342. package/lib/typescript/legacy/components/ScreenContentWrapper.web.d.ts.map +1 -1
  343. package/lib/typescript/legacy/components/ScreenContentWrapper.windows.d.ts +5 -2
  344. package/lib/typescript/legacy/components/ScreenContentWrapper.windows.d.ts.map +1 -1
  345. package/lib/typescript/legacy/components/ScreenFooter.web.d.ts +10 -3
  346. package/lib/typescript/legacy/components/ScreenFooter.web.d.ts.map +1 -1
  347. package/lib/typescript/legacy/components/ScreenFooter.windows.d.ts +10 -3
  348. package/lib/typescript/legacy/components/ScreenFooter.windows.d.ts.map +1 -1
  349. package/lib/typescript/legacy/components/ScreenStack.web.d.ts +5 -2
  350. package/lib/typescript/legacy/components/ScreenStack.web.d.ts.map +1 -1
  351. package/lib/typescript/legacy/components/ScreenStackHeaderConfig.d.ts +3 -1
  352. package/lib/typescript/legacy/components/ScreenStackHeaderConfig.d.ts.map +1 -1
  353. package/lib/typescript/legacy/components/ScreenStackItem.d.ts +3 -2
  354. package/lib/typescript/legacy/components/ScreenStackItem.d.ts.map +1 -1
  355. package/lib/typescript/legacy/components/SearchBar.d.ts +3 -3
  356. package/lib/typescript/legacy/components/SearchBar.d.ts.map +1 -1
  357. package/lib/typescript/legacy/components/SearchBar.web.d.ts +5 -2
  358. package/lib/typescript/legacy/components/SearchBar.web.d.ts.map +1 -1
  359. package/lib/typescript/legacy/components/helpers/prepareHeaderBarButtonItems.d.ts +15 -12
  360. package/lib/typescript/legacy/components/helpers/prepareHeaderBarButtonItems.d.ts.map +1 -1
  361. package/lib/typescript/legacy/gesture-handler/fabricUtils.d.ts +3 -2
  362. package/lib/typescript/legacy/gesture-handler/fabricUtils.d.ts.map +1 -1
  363. package/lib/typescript/legacy/types.d.ts +25 -5
  364. package/lib/typescript/legacy/types.d.ts.map +1 -1
  365. package/lib/typescript/legacy/useTransitionProgress.d.ts +2 -5
  366. package/lib/typescript/legacy/useTransitionProgress.d.ts.map +1 -1
  367. package/lib/typescript/private/hooks/useRenderDebugInfo.d.ts +2 -2
  368. package/lib/typescript/private/hooks/useRenderDebugInfo.d.ts.map +1 -1
  369. package/package.json +17 -17
  370. package/src/components/modals/form-sheet/FormSheet.types.ts +2 -2
  371. package/src/components/scroll-to-top-guard/ScrollToTopGuard.ios.tsx +17 -0
  372. package/src/components/scroll-to-top-guard/ScrollToTopGuard.tsx +18 -0
  373. package/src/components/scroll-to-top-guard/index.ts +1 -0
  374. package/src/components/stack/header/StackHeaderConfig.android.types.ts +24 -0
  375. package/src/components/stack/header/StackHeaderConfig.ios.tsx +32 -22
  376. package/src/components/stack/header/StackHeaderConfig.ios.types.ts +13 -0
  377. package/src/components/stack/header/ios/StackHeaderItem.ios.tsx +1 -23
  378. package/src/components/stack/header/ios/iconUtils.ios.ts +38 -2
  379. package/src/components/stack/header/utils.ts +6 -11
  380. package/src/components/stack/host/StackHost.types.ts +2 -4
  381. package/src/components/tabs/screen/TabsScreen.types.ts +7 -3
  382. package/src/experimental/index.ts +1 -0
  383. package/src/fabric/ScrollViewMarkerNativeComponent.ts +8 -2
  384. package/src/fabric/legacy/FullWindowOverlayNativeComponent.ts +6 -2
  385. package/src/fabric/legacy/ModalScreenNativeComponent.ts +8 -2
  386. package/src/fabric/legacy/ScreenContainerNativeComponent.ts +5 -2
  387. package/src/fabric/legacy/ScreenContentWrapperNativeComponent.ts +2 -2
  388. package/src/fabric/legacy/ScreenFooterNativeComponent.ts +5 -2
  389. package/src/fabric/legacy/ScreenNativeComponent.ts +8 -2
  390. package/src/fabric/legacy/ScreenNavigationContainerNativeComponent.ts +2 -2
  391. package/src/fabric/legacy/ScreenStackHeaderConfigNativeComponent.ts +8 -3
  392. package/src/fabric/legacy/ScreenStackHeaderSubviewNativeComponent.ts +6 -2
  393. package/src/fabric/legacy/ScreenStackNativeComponent.ts +10 -2
  394. package/src/fabric/legacy/SearchBarNativeComponent.ts +10 -7
  395. package/src/fabric/modals/form-sheet/FormSheetContentWrapperNativeComponent.ts +2 -2
  396. package/src/fabric/modals/form-sheet/FormSheetHostNativeComponent.ts +7 -2
  397. package/src/fabric/safe-area/SafeAreaViewNativeComponent.ts +6 -2
  398. package/src/fabric/scroll-to-top-guard/ScrollToTopGuardNativeComponent.ts +10 -0
  399. package/src/fabric/split/SplitHostNativeComponent.ts +5 -2
  400. package/src/fabric/split/SplitScreenNativeComponent.ts +6 -2
  401. package/src/fabric/stack/StackHeaderConfigAndroidNativeComponent.ts +3 -1
  402. package/src/fabric/stack/StackHeaderConfigIOSNativeComponent.ts +7 -2
  403. package/src/fabric/stack/StackHeaderItemIOSNativeComponent.ts +2 -1
  404. package/src/fabric/stack/StackHeaderItemSpacerIOSNativeComponent.ts +6 -2
  405. package/src/fabric/stack/StackHeaderSubviewAndroidNativeComponent.ts +6 -2
  406. package/src/fabric/stack/StackHostNativeComponent.ts +5 -2
  407. package/src/fabric/stack/StackScreenNativeComponent.ts +6 -2
  408. package/src/fabric/tabs/TabsBottomAccessoryContentNativeComponent.ts +6 -2
  409. package/src/fabric/tabs/TabsBottomAccessoryNativeComponent.ts +6 -2
  410. package/src/fabric/tabs/TabsHostAndroidNativeComponent.ts +7 -2
  411. package/src/fabric/tabs/TabsHostIOSNativeComponent.ts +7 -2
  412. package/src/fabric/tabs/TabsScreenAndroidNativeComponent.ts +2 -1
  413. package/src/fabric/tabs/TabsScreenIOSNativeComponent.ts +2 -1
  414. package/src/flags.ts +26 -0
  415. package/src/legacy/TransitionProgressContext.tsx +1 -1
  416. package/src/legacy/components/Screen.tsx +14 -6
  417. package/src/legacy/components/ScreenStackHeaderConfig.tsx +7 -1
  418. package/src/legacy/components/ScreenStackItem.tsx +3 -4
  419. package/src/legacy/components/SearchBar.tsx +34 -44
  420. package/src/legacy/components/helpers/prepareHeaderBarButtonItems.ts +7 -1
  421. package/src/legacy/gesture-handler/fabricUtils.ts +5 -2
  422. package/src/legacy/types.ts +28 -5
  423. package/src/legacy/useTransitionProgress.tsx +4 -2
  424. package/src/private/hooks/useRenderDebugInfo.tsx +2 -2
  425. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/FormSheetNativeDismissCoordinator.kt +0 -25
  426. package/ios/ReactMountingTransactionObserving.swift +0 -7
  427. package/ios/bridging/Swift-Bridging.h +0 -7
  428. package/ios/orientation/RNSOrientationProviding.swift +0 -6
  429. package/ios/orientation/RNSOrientationSwift.swift +0 -14
  430. package/ios/split/RNSSplitAppearanceApplicator.swift +0 -199
  431. package/ios/split/RNSSplitAppearanceCoordinator.swift +0 -26
  432. package/ios/split/RNSSplitAppearanceUpdateFlags.swift +0 -11
  433. package/ios/split/RNSSplitHostController.swift +0 -570
  434. package/ios/split/RNSSplitNavigationController.swift +0 -46
  435. package/ios/split/RNSSplitScreenController.swift +0 -133
  436. package/ios/utils/RNSLog.swift +0 -6
@@ -1,5 +1,9 @@
1
1
  import type { PlatformIconIOS as ResolvedPlatformIconIOS } from '../../../../fabric/stack/StackHeaderItemIOSNativeComponent';
2
2
  import type { PlatformIconIOS } from '../../../shared/types';
3
+ import type {
4
+ StackHeaderMenuIOS,
5
+ StackHeaderMenuElementIOS,
6
+ } from './StackHeaderMenu.ios.types';
3
7
  import { Image } from 'react-native';
4
8
 
5
9
  export function resolveIconAssetSources(
@@ -9,16 +13,48 @@ export function resolveIconAssetSources(
9
13
  return undefined;
10
14
  }
11
15
  if (icon.type === 'imageSource') {
16
+ const resolvedImageSource = Image.resolveAssetSource(icon.imageSource);
17
+
18
+ if (!resolvedImageSource) {
19
+ return undefined;
20
+ }
21
+
12
22
  return {
13
23
  type: 'imageSource',
14
- imageSource: Image.resolveAssetSource(icon.imageSource),
24
+ imageSource: resolvedImageSource,
15
25
  };
16
26
  }
17
27
  if (icon.type === 'templateSource') {
28
+ const resolvedTemplateSource = Image.resolveAssetSource(
29
+ icon.templateSource,
30
+ );
31
+
32
+ if (!resolvedTemplateSource) {
33
+ return undefined;
34
+ }
35
+
18
36
  return {
19
37
  type: 'templateSource',
20
- templateSource: Image.resolveAssetSource(icon.templateSource),
38
+ templateSource: resolvedTemplateSource,
21
39
  };
22
40
  }
23
41
  return icon;
24
42
  }
43
+
44
+ export function resolveMenuElementIcons(
45
+ element: StackHeaderMenuElementIOS,
46
+ ): StackHeaderMenuElementIOS {
47
+ if (element.type === 'menuItem') {
48
+ if (element.icon == null) {
49
+ return element;
50
+ }
51
+ return { ...element, icon: resolveIconAssetSources(element.icon) };
52
+ }
53
+ return resolveMenuIcons(element);
54
+ }
55
+
56
+ export function resolveMenuIcons(menu: StackHeaderMenuIOS): StackHeaderMenuIOS {
57
+ const resolvedIcon = resolveIconAssetSources(menu.icon);
58
+ const resolvedChildren = menu.children.map(resolveMenuElementIcons);
59
+ return { ...menu, icon: resolvedIcon, children: resolvedChildren };
60
+ }
@@ -2,20 +2,15 @@ import {
2
2
  StackHeaderMenuElementIOS,
3
3
  StackHeaderMenuIOS,
4
4
  } from './ios/StackHeaderMenu.ios.types';
5
- import { SupportsMenuIOS } from './StackHeaderConfig.ios.types';
6
5
 
7
- export function findMenuElementByIdInItems(
8
- items: SupportsMenuIOS[],
6
+ export function findMenuElementByIdInMenus(
7
+ menus: StackHeaderMenuIOS[],
9
8
  id: string,
10
9
  ): StackHeaderMenuElementIOS | null {
11
- for (const item of items) {
12
- if (item.menu === undefined) {
13
- continue;
14
- }
15
-
16
- const menu = findMenuElementById(item.menu, id);
17
- if (menu !== null) {
18
- return menu;
10
+ for (const menu of menus) {
11
+ const element = findMenuElementById(menu, id);
12
+ if (element !== null) {
13
+ return element;
19
14
  }
20
15
  }
21
16
 
@@ -1,13 +1,11 @@
1
1
  import React from 'react';
2
- import type { ReactNativeElement, ViewProps } from 'react-native';
2
+ import type { HostInstance, ViewProps } from 'react-native';
3
3
  import { type NativeProps } from '../../../fabric/stack/StackHostNativeComponent';
4
4
 
5
5
  export type StackHostProps = {
6
6
  children: NonNullable<ViewProps['children']>;
7
7
  // TODO: Work on these types
8
8
  ref?:
9
- | React.RefObject<
10
- (React.Component<NativeProps> & ReactNativeElement) | null
11
- >
9
+ | React.RefObject<(React.Component<NativeProps> & HostInstance) | null>
12
10
  | undefined;
13
11
  };
@@ -110,9 +110,13 @@ export interface TabsScreenPropsBase {
110
110
  * Note that:
111
111
  * - some components (like `SplitHost`) may choose not to query
112
112
  * its child components,
113
- * - Stack v4 implementation **ALWAYS** returns some supported
114
- * orientations (`allButUpsideDown` by default), overriding
115
- * orientation from tab screen.
113
+ * - Stack v4 (legacy) implementation returns some supported orientations,
114
+ * overriding orientation from the tab screen **unless** the Stack v4
115
+ * screen has no explicit `screenOrientation` prop and
116
+ * `featureFlags.experiment.iosOrientationInheritanceFixEnabled` is
117
+ * enabled (the default), in which case it returns `inherit` and no
118
+ * longer overrides the parent (see
119
+ * https://github.com/software-mansion/react-native-screens/pull/4408).
116
120
  *
117
121
  * The following values are currently supported:
118
122
  *
@@ -6,3 +6,4 @@
6
6
  // Components & types
7
7
 
8
8
  export * from '../components/safe-area';
9
+ export * from '../components/scroll-to-top-guard';
@@ -1,6 +1,10 @@
1
1
  'use client';
2
2
 
3
- import type { CodegenTypes as CT, ViewProps } from 'react-native';
3
+ import type {
4
+ CodegenTypes as CT,
5
+ HostComponent,
6
+ ViewProps,
7
+ } from 'react-native';
4
8
  import { codegenNativeComponent } from 'react-native';
5
9
 
6
10
  type ScrollEdgeEffect = 'automatic' | 'hard' | 'soft' | 'hidden';
@@ -12,4 +16,6 @@ interface NativeProps extends ViewProps {
12
16
  bottomScrollEdgeEffect?: CT.WithDefault<ScrollEdgeEffect, 'automatic'>;
13
17
  }
14
18
 
15
- export default codegenNativeComponent<NativeProps>('RNSScrollViewMarker');
19
+ export default codegenNativeComponent<NativeProps>(
20
+ 'RNSScrollViewMarker',
21
+ ) as HostComponent<NativeProps>;
@@ -1,7 +1,11 @@
1
1
  'use client';
2
2
 
3
3
  import { codegenNativeComponent } from 'react-native';
4
- import type { CodegenTypes as CT, ViewProps } from 'react-native';
4
+ import type {
5
+ CodegenTypes as CT,
6
+ HostComponent,
7
+ ViewProps,
8
+ } from 'react-native';
5
9
 
6
10
  // Internal export, not part of stable library API.
7
11
  export interface NativeProps extends ViewProps {
@@ -10,4 +14,4 @@ export interface NativeProps extends ViewProps {
10
14
 
11
15
  export default codegenNativeComponent<NativeProps>('RNSFullWindowOverlay', {
12
16
  interfaceOnly: true,
13
- });
17
+ }) as HostComponent<NativeProps>;
@@ -1,7 +1,12 @@
1
1
  'use client';
2
2
 
3
3
  import { codegenNativeComponent } from 'react-native';
4
- import type { CodegenTypes as CT, ViewProps, ColorValue } from 'react-native';
4
+ import type {
5
+ CodegenTypes as CT,
6
+ HostComponent,
7
+ ViewProps,
8
+ ColorValue,
9
+ } from 'react-native';
5
10
 
6
11
  // eslint-disable-next-line @typescript-eslint/ban-types
7
12
  type ScreenEvent = Readonly<{}>;
@@ -122,8 +127,9 @@ export interface NativeProps extends ViewProps {
122
127
  rightScrollEdgeEffect?: CT.WithDefault<ScrollEdgeEffect, 'automatic'>;
123
128
  topScrollEdgeEffect?: CT.WithDefault<ScrollEdgeEffect, 'automatic'>;
124
129
  synchronousShadowStateUpdatesEnabled?: CT.WithDefault<boolean, true>;
130
+ iosOrientationInheritanceFixEnabled?: CT.WithDefault<boolean, true>;
125
131
  }
126
132
 
127
133
  export default codegenNativeComponent<NativeProps>('RNSModalScreen', {
128
134
  interfaceOnly: true,
129
- });
135
+ }) as HostComponent<NativeProps>;
@@ -1,8 +1,11 @@
1
1
  'use client';
2
2
 
3
3
  import { codegenNativeComponent } from 'react-native';
4
- import type { ViewProps } from 'react-native';
4
+ import type { HostComponent, ViewProps } from 'react-native';
5
5
 
6
6
  interface NativeProps extends ViewProps {}
7
7
 
8
- export default codegenNativeComponent<NativeProps>('RNSScreenContainer', {});
8
+ export default codegenNativeComponent<NativeProps>(
9
+ 'RNSScreenContainer',
10
+ {},
11
+ ) as HostComponent<NativeProps>;
@@ -1,9 +1,9 @@
1
1
  import { codegenNativeComponent } from 'react-native';
2
- import type { ViewProps } from 'react-native';
2
+ import type { HostComponent, ViewProps } from 'react-native';
3
3
 
4
4
  export interface NativeProps extends ViewProps {}
5
5
 
6
6
  export default codegenNativeComponent<NativeProps>(
7
7
  'RNSScreenContentWrapper',
8
8
  {},
9
- );
9
+ ) as HostComponent<NativeProps>;
@@ -1,6 +1,9 @@
1
1
  import { codegenNativeComponent } from 'react-native';
2
- import type { ViewProps } from 'react-native';
2
+ import type { HostComponent, ViewProps } from 'react-native';
3
3
 
4
4
  export interface NativeProps extends ViewProps {}
5
5
 
6
- export default codegenNativeComponent<NativeProps>('RNSScreenFooter', {});
6
+ export default codegenNativeComponent<NativeProps>(
7
+ 'RNSScreenFooter',
8
+ {},
9
+ ) as HostComponent<NativeProps>;
@@ -1,7 +1,12 @@
1
1
  'use client';
2
2
 
3
3
  import { codegenNativeComponent } from 'react-native';
4
- import type { CodegenTypes as CT, ViewProps, ColorValue } from 'react-native';
4
+ import type {
5
+ CodegenTypes as CT,
6
+ HostComponent,
7
+ ViewProps,
8
+ ColorValue,
9
+ } from 'react-native';
5
10
 
6
11
  // eslint-disable-next-line @typescript-eslint/ban-types
7
12
  type ScreenEvent = Readonly<{}>;
@@ -126,8 +131,9 @@ export interface NativeProps extends ViewProps {
126
131
  boolean,
127
132
  true
128
133
  >;
134
+ iosOrientationInheritanceFixEnabled?: CT.WithDefault<boolean, true>;
129
135
  }
130
136
 
131
137
  export default codegenNativeComponent<NativeProps>('RNSScreen', {
132
138
  interfaceOnly: true,
133
- });
139
+ }) as HostComponent<NativeProps>;
@@ -1,11 +1,11 @@
1
1
  'use client';
2
2
 
3
3
  import { codegenNativeComponent } from 'react-native';
4
- import type { ViewProps } from 'react-native';
4
+ import type { HostComponent, ViewProps } from 'react-native';
5
5
 
6
6
  interface NativeProps extends ViewProps {}
7
7
 
8
8
  export default codegenNativeComponent<NativeProps>(
9
9
  'RNSScreenNavigationContainer',
10
10
  {},
11
- );
11
+ ) as HostComponent<NativeProps>;
@@ -1,7 +1,12 @@
1
1
  'use client';
2
2
 
3
3
  import { codegenNativeComponent } from 'react-native';
4
- import type { CodegenTypes as CT, ViewProps, ColorValue } from 'react-native';
4
+ import type {
5
+ CodegenTypes as CT,
6
+ HostComponent,
7
+ ViewProps,
8
+ ColorValue,
9
+ } from 'react-native';
5
10
 
6
11
  type DirectionType = 'rtl' | 'ltr';
7
12
 
@@ -47,7 +52,7 @@ export interface NativeProps extends ViewProps {
47
52
  backTitle?: string | undefined;
48
53
  backTitleFontFamily?: string | undefined;
49
54
  backTitleFontSize?: CT.Int32 | undefined;
50
- backTitleVisible?: CT.WithDefault<boolean, 'true'>;
55
+ backTitleVisible?: CT.WithDefault<boolean, true>;
51
56
  color?: ColorValue | undefined;
52
57
  direction?: CT.WithDefault<DirectionType, 'ltr'>;
53
58
  hidden?: boolean | undefined;
@@ -96,4 +101,4 @@ export default codegenNativeComponent<NativeProps>(
96
101
  {
97
102
  interfaceOnly: true,
98
103
  },
99
- );
104
+ ) as HostComponent<NativeProps>;
@@ -1,7 +1,11 @@
1
1
  'use client';
2
2
 
3
3
  import { codegenNativeComponent } from 'react-native';
4
- import type { CodegenTypes as CT, ViewProps } from 'react-native';
4
+ import type {
5
+ CodegenTypes as CT,
6
+ HostComponent,
7
+ ViewProps,
8
+ } from 'react-native';
5
9
 
6
10
  export type HeaderSubviewTypes =
7
11
  | 'back'
@@ -22,4 +26,4 @@ export default codegenNativeComponent<NativeProps>(
22
26
  {
23
27
  interfaceOnly: true,
24
28
  },
25
- );
29
+ ) as HostComponent<NativeProps>;
@@ -1,7 +1,12 @@
1
1
  'use client';
2
2
 
3
3
  import { codegenNativeComponent } from 'react-native';
4
- import type { CodegenTypes as CT, ViewProps, ColorValue } from 'react-native';
4
+ import type {
5
+ CodegenTypes as CT,
6
+ HostComponent,
7
+ ViewProps,
8
+ ColorValue,
9
+ } from 'react-native';
5
10
 
6
11
  // eslint-disable-next-line @typescript-eslint/ban-types
7
12
  type FinishTransitioningEvent = Readonly<{}>;
@@ -14,4 +19,7 @@ export interface NativeProps extends ViewProps {
14
19
  | undefined;
15
20
  }
16
21
 
17
- export default codegenNativeComponent<NativeProps>('RNSScreenStack', {});
22
+ export default codegenNativeComponent<NativeProps>(
23
+ 'RNSScreenStack',
24
+ {},
25
+ ) as HostComponent<NativeProps>;
@@ -76,15 +76,15 @@ export interface NativeProps extends ViewProps {
76
76
  type ComponentType = HostComponent<NativeProps>;
77
77
 
78
78
  interface NativeCommands {
79
- blur: (viewRef: React.ElementRef<ComponentType>) => void;
80
- focus: (viewRef: React.ElementRef<ComponentType>) => void;
81
- clearText: (viewRef: React.ElementRef<ComponentType>) => void;
79
+ blur: (instance: React.ComponentRef<ComponentType>) => void;
80
+ focus: (instance: React.ComponentRef<ComponentType>) => void;
81
+ clearText: (instance: React.ComponentRef<ComponentType>) => void;
82
82
  toggleCancelButton: (
83
- viewRef: React.ElementRef<ComponentType>,
83
+ instance: React.ComponentRef<ComponentType>,
84
84
  flag: boolean,
85
85
  ) => void;
86
- setText: (viewRef: React.ElementRef<ComponentType>, text: string) => void;
87
- cancelSearch: (viewRef: React.ElementRef<ComponentType>) => void;
86
+ setText: (instance: React.ComponentRef<ComponentType>, text: string) => void;
87
+ cancelSearch: (instance: React.ComponentRef<ComponentType>) => void;
88
88
  }
89
89
 
90
90
  export const Commands: NativeCommands = codegenNativeCommands<NativeCommands>({
@@ -98,4 +98,7 @@ export const Commands: NativeCommands = codegenNativeCommands<NativeCommands>({
98
98
  ],
99
99
  });
100
100
 
101
- export default codegenNativeComponent<NativeProps>('RNSSearchBar', {});
101
+ export default codegenNativeComponent<NativeProps>(
102
+ 'RNSSearchBar',
103
+ {},
104
+ ) as HostComponent<NativeProps>;
@@ -1,10 +1,10 @@
1
1
  'use client';
2
2
 
3
- import type { ViewProps } from 'react-native';
3
+ import type { HostComponent, ViewProps } from 'react-native';
4
4
  import { codegenNativeComponent } from 'react-native';
5
5
 
6
6
  interface NativeProps extends ViewProps {}
7
7
 
8
8
  export default codegenNativeComponent<NativeProps>(
9
9
  'RNSFormSheetContentWrapper',
10
- );
10
+ ) as HostComponent<NativeProps>;
@@ -1,6 +1,11 @@
1
1
  'use client';
2
2
 
3
- import type { CodegenTypes as CT, ColorValue, ViewProps } from 'react-native';
3
+ import type {
4
+ CodegenTypes as CT,
5
+ ColorValue,
6
+ HostComponent,
7
+ ViewProps,
8
+ } from 'react-native';
4
9
  import { codegenNativeComponent } from 'react-native';
5
10
 
6
11
  // eslint-disable-next-line @typescript-eslint/ban-types
@@ -44,4 +49,4 @@ interface NativeProps extends ViewProps {
44
49
 
45
50
  export default codegenNativeComponent<NativeProps>('RNSFormSheetHost', {
46
51
  interfaceOnly: true,
47
- });
52
+ }) as HostComponent<NativeProps>;
@@ -2,7 +2,11 @@
2
2
  // https://github.com/AppAndFlow/react-native-safe-area-context/blob/v5.6.1/src/specs/NativeSafeAreaView.ts
3
3
 
4
4
  import { codegenNativeComponent } from 'react-native';
5
- import type { CodegenTypes as CT, ViewProps } from 'react-native';
5
+ import type {
6
+ CodegenTypes as CT,
7
+ HostComponent,
8
+ ViewProps,
9
+ } from 'react-native';
6
10
 
7
11
  type InsetType = 'all' | 'system' | 'interface';
8
12
 
@@ -21,4 +25,4 @@ export interface NativeProps extends ViewProps {
21
25
 
22
26
  export default codegenNativeComponent<NativeProps>('RNSSafeAreaView', {
23
27
  interfaceOnly: true,
24
- });
28
+ }) as HostComponent<NativeProps>;
@@ -0,0 +1,10 @@
1
+ 'use client';
2
+
3
+ import { codegenNativeComponent } from 'react-native';
4
+ import type { HostComponent, ViewProps } from 'react-native';
5
+
6
+ export interface NativeProps extends ViewProps {}
7
+
8
+ export default codegenNativeComponent<NativeProps>('RNSScrollToTopGuard', {
9
+ excludedPlatforms: ['android'],
10
+ }) as HostComponent<NativeProps>;
@@ -112,7 +112,7 @@ type ComponentType = HostComponent<NativeProps>;
112
112
 
113
113
  interface NativeCommands {
114
114
  showColumn: (
115
- viewRef: React.ElementRef<ComponentType>,
115
+ viewRef: React.ComponentRef<ComponentType>,
116
116
  column: string,
117
117
  ) => void;
118
118
  }
@@ -121,4 +121,7 @@ export const Commands: NativeCommands = codegenNativeCommands<NativeCommands>({
121
121
  supportedCommands: ['showColumn'],
122
122
  });
123
123
 
124
- export default codegenNativeComponent<NativeProps>('RNSSplitHost', {});
124
+ export default codegenNativeComponent<NativeProps>(
125
+ 'RNSSplitHost',
126
+ {},
127
+ ) as HostComponent<NativeProps>;
@@ -1,6 +1,10 @@
1
1
  'use client';
2
2
 
3
- import type { CodegenTypes as CT, ViewProps } from 'react-native';
3
+ import type {
4
+ CodegenTypes as CT,
5
+ HostComponent,
6
+ ViewProps,
7
+ } from 'react-native';
4
8
  import { codegenNativeComponent } from 'react-native';
5
9
 
6
10
  // eslint-disable-next-line @typescript-eslint/ban-types
@@ -21,4 +25,4 @@ interface NativeProps extends ViewProps {
21
25
 
22
26
  export default codegenNativeComponent<NativeProps>('RNSSplitScreen', {
23
27
  interfaceOnly: true,
24
- });
28
+ }) as HostComponent<NativeProps>;
@@ -103,6 +103,8 @@ export interface NativeProps extends ViewProps {
103
103
  scrollFlagExitUntilCollapsed?: CT.WithDefault<boolean, false>;
104
104
  scrollFlagSnap?: CT.WithDefault<boolean, false>;
105
105
 
106
+ liftOnScroll?: CT.WithDefault<boolean, true>;
107
+
106
108
  toolbarMenu?: UnsafeMixed<StackHeaderToolbarMenuBaseAndroid> | undefined;
107
109
  toolbarMenuGroupDividerEnabled?: CT.WithDefault<boolean, false>;
108
110
  onToolbarMenuItemPress?:
@@ -142,4 +144,4 @@ export default codegenNativeComponent<NativeProps>(
142
144
  interfaceOnly: true,
143
145
  excludedPlatforms: ['iOS'],
144
146
  },
145
- );
147
+ ) as HostComponent<NativeProps>;
@@ -6,7 +6,10 @@ import type {
6
6
  ViewProps,
7
7
  } from 'react-native';
8
8
  import { codegenNativeCommands, codegenNativeComponent } from 'react-native';
9
- import { PlatformIconIOS } from './StackHeaderItemIOSNativeComponent';
9
+ import type {
10
+ PlatformIconIOS,
11
+ StackHeaderMenuIOS,
12
+ } from './StackHeaderItemIOSNativeComponent';
10
13
  import { UnsafeMixed } from '../codegenUtils';
11
14
 
12
15
  export type MenuItemPressEvent = Readonly<{ menuItemId: string }>;
@@ -28,6 +31,8 @@ export interface NativeProps extends ViewProps {
28
31
  largeSubtitle?: string | undefined;
29
32
  largeTitleEnabled?: CT.WithDefault<boolean, false>;
30
33
 
34
+ titleMenu?: UnsafeMixed<StackHeaderMenuIOS> | undefined;
35
+
31
36
  onMenuItemPress?: CT.DirectEventHandler<MenuItemPressEvent> | undefined;
32
37
  onMenuSelectionChange?:
33
38
  | CT.DirectEventHandler<MenuSelectionChangeEvent>
@@ -68,4 +73,4 @@ export const Commands: NativeCommands = codegenNativeCommands<NativeCommands>({
68
73
  export default codegenNativeComponent<NativeProps>('RNSStackHeaderConfigIOS', {
69
74
  interfaceOnly: true,
70
75
  excludedPlatforms: ['android'],
71
- });
76
+ }) as HostComponent<NativeProps>;
@@ -2,6 +2,7 @@
2
2
 
3
3
  import type {
4
4
  CodegenTypes as CT,
5
+ HostComponent,
5
6
  ImageResolvedAssetSource,
6
7
  ViewProps,
7
8
  } from 'react-native';
@@ -79,4 +80,4 @@ export interface NativeProps extends ViewProps {
79
80
  export default codegenNativeComponent<NativeProps>('RNSStackHeaderItemIOS', {
80
81
  interfaceOnly: true,
81
82
  excludedPlatforms: ['android'],
82
- });
83
+ }) as HostComponent<NativeProps>;
@@ -1,6 +1,10 @@
1
1
  'use client';
2
2
 
3
- import type { CodegenTypes as CT, ViewProps } from 'react-native';
3
+ import type {
4
+ CodegenTypes as CT,
5
+ HostComponent,
6
+ ViewProps,
7
+ } from 'react-native';
4
8
  import { codegenNativeComponent } from 'react-native';
5
9
 
6
10
  type SpacerSize = 'fixed' | 'flexible';
@@ -17,4 +21,4 @@ export default codegenNativeComponent<NativeProps>(
17
21
  {
18
22
  excludedPlatforms: ['android'],
19
23
  },
20
- );
24
+ ) as HostComponent<NativeProps>;
@@ -1,6 +1,10 @@
1
1
  'use client';
2
2
 
3
- import type { CodegenTypes as CT, ViewProps } from 'react-native';
3
+ import type {
4
+ CodegenTypes as CT,
5
+ HostComponent,
6
+ ViewProps,
7
+ } from 'react-native';
4
8
  import { codegenNativeComponent } from 'react-native';
5
9
 
6
10
  type StackHeaderSubviewTypeAndroid =
@@ -24,4 +28,4 @@ export default codegenNativeComponent<NativeProps>(
24
28
  interfaceOnly: true,
25
29
  excludedPlatforms: ['iOS'],
26
30
  },
27
- );
31
+ ) as HostComponent<NativeProps>;
@@ -1,8 +1,11 @@
1
1
  'use client';
2
2
 
3
- import type { ViewProps } from 'react-native';
3
+ import type { HostComponent, ViewProps } from 'react-native';
4
4
  import { codegenNativeComponent } from 'react-native';
5
5
 
6
6
  export interface NativeProps extends ViewProps {}
7
7
 
8
- export default codegenNativeComponent<NativeProps>('RNSStackHost', {});
8
+ export default codegenNativeComponent<NativeProps>(
9
+ 'RNSStackHost',
10
+ {},
11
+ ) as HostComponent<NativeProps>;
@@ -1,6 +1,10 @@
1
1
  'use client';
2
2
 
3
- import type { CodegenTypes as CT, ViewProps } from 'react-native';
3
+ import type {
4
+ CodegenTypes as CT,
5
+ HostComponent,
6
+ ViewProps,
7
+ } from 'react-native';
4
8
  import { codegenNativeComponent } from 'react-native';
5
9
 
6
10
  // eslint-disable-next-line @typescript-eslint/ban-types
@@ -39,4 +43,4 @@ export interface NativeProps extends ViewProps {
39
43
 
40
44
  export default codegenNativeComponent<NativeProps>('RNSStackScreen', {
41
45
  interfaceOnly: true,
42
- });
46
+ }) as HostComponent<NativeProps>;
@@ -1,7 +1,11 @@
1
1
  'use client';
2
2
 
3
3
  import { codegenNativeComponent } from 'react-native';
4
- import type { CodegenTypes as CT, ViewProps } from 'react-native';
4
+ import type {
5
+ CodegenTypes as CT,
6
+ HostComponent,
7
+ ViewProps,
8
+ } from 'react-native';
5
9
 
6
10
  type BottomAccessoryEnvironment = 'regular' | 'inline';
7
11
 
@@ -12,4 +16,4 @@ export interface NativeProps extends ViewProps {
12
16
  export default codegenNativeComponent<NativeProps>(
13
17
  'RNSTabsBottomAccessoryContent',
14
18
  {},
15
- );
19
+ ) as HostComponent<NativeProps>;
@@ -1,7 +1,11 @@
1
1
  'use client';
2
2
 
3
3
  import { codegenNativeComponent } from 'react-native';
4
- import type { CodegenTypes as CT, ViewProps } from 'react-native';
4
+ import type {
5
+ CodegenTypes as CT,
6
+ HostComponent,
7
+ ViewProps,
8
+ } from 'react-native';
5
9
 
6
10
  type EnvironmentChangeEvent = {
7
11
  environment: 'regular' | 'inline';
@@ -16,4 +20,4 @@ export interface NativeProps extends ViewProps {
16
20
  export default codegenNativeComponent<NativeProps>('RNSTabsBottomAccessory', {
17
21
  interfaceOnly: true,
18
22
  excludedPlatforms: ['android'],
19
- });
23
+ }) as HostComponent<NativeProps>;