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

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 (585) hide show
  1. package/Package.swift +87 -0
  2. package/README.md +0 -8
  3. package/RNScreens.podspec +2 -6
  4. package/android/build.gradle +26 -1
  5. package/android/src/fabric/java/com/swmansion/rnscreens/NativeProxy.kt +5 -0
  6. package/android/src/main/cpp/NativeProxy.cpp +30 -6
  7. package/android/src/main/cpp/NativeProxy.h +7 -1
  8. package/android/src/main/java/com/swmansion/rnscreens/RNScreensPackage.kt +2 -2
  9. package/android/src/main/java/com/swmansion/rnscreens/common/container/Container.kt +8 -0
  10. package/android/src/main/java/com/swmansion/rnscreens/common/container/ContainerItem.kt +13 -1
  11. package/android/src/main/java/com/swmansion/rnscreens/common/text/ReactTextAppearance.kt +62 -0
  12. package/android/src/main/java/com/swmansion/rnscreens/common/text/TextAppearance.kt +20 -0
  13. package/android/src/main/java/com/swmansion/rnscreens/common/text/TextAppearanceDefaults.kt +65 -0
  14. package/android/src/main/java/com/swmansion/rnscreens/helpers/PropIconResolver.kt +17 -23
  15. package/android/src/main/java/com/swmansion/rnscreens/legacy/Screen.kt +25 -7
  16. package/android/src/main/java/com/swmansion/rnscreens/legacy/ScreenStack.kt +2 -0
  17. package/android/src/main/java/com/swmansion/rnscreens/legacy/ScreenStackFragment.kt +39 -10
  18. package/android/src/main/java/com/swmansion/rnscreens/legacy/ScreenViewManager.kt +5 -0
  19. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetAppearanceCoordinator.kt → native/coordinator/FormSheetAppearanceCoordinator.kt} +2 -1
  20. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetBehaviorController.kt → native/coordinator/FormSheetBehaviorController.kt} +74 -19
  21. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/coordinator/FormSheetDimensionsCoordinator.kt +159 -0
  22. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/coordinator/FormSheetKeyboardCoordinator.kt +101 -0
  23. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/coordinator/FormSheetNativeDismissCoordinator.kt +44 -0
  24. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/core/FormSheetAvailableHeightProvider.kt +44 -0
  25. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetContainer.kt → native/core/FormSheetContainer.kt} +1 -1
  26. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/core/FormSheetDialog.kt +115 -0
  27. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/core/FormSheetDialogManager.kt +89 -0
  28. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetContentSizeChangeDelegate.kt → native/interfaces/FormSheetContentSizeChangeDelegate.kt} +1 -1
  29. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetContentSizeChangeProvider.kt → native/interfaces/FormSheetContentSizeChangeProvider.kt} +1 -1
  30. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetDialogEventEmitter.kt → native/interfaces/FormSheetDialogEventEmitter.kt} +5 -1
  31. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetConfig.kt → native/model/FormSheetConfig.kt} +5 -1
  32. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/model/FormSheetDetents.kt +152 -0
  33. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetAnimatorFactory.kt → native/presentation/FormSheetAnimatorFactory.kt} +9 -10
  34. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/presentation/FormSheetDimmingManager.kt +115 -0
  35. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/presentation/FormSheetDismissalOrigin.kt +22 -0
  36. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/presentation/FormSheetPresentation.kt +173 -0
  37. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/presentation/FormSheetPresentationManager.kt +290 -0
  38. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetPresentationState.kt → native/presentation/FormSheetPresentationState.kt} +2 -2
  39. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/presentation/FormSheetStackRegistry.kt +28 -0
  40. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetContentWrapper.kt → react/contentwrapper/FormSheetContentWrapper.kt} +3 -1
  41. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetContentWrapperViewManager.kt → react/contentwrapper/FormSheetContentWrapperViewManager.kt} +1 -1
  42. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetDetentChangedEvent.kt → react/event/FormSheetDetentChangedEvent.kt} +1 -1
  43. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetDidAppearEvent.kt → react/event/FormSheetDidAppearEvent.kt} +1 -1
  44. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetDidDisappearEvent.kt → react/event/FormSheetDidDisappearEvent.kt} +1 -1
  45. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/react/event/FormSheetDismissEvent.kt +29 -0
  46. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetNativeDismissEvent.kt → react/event/FormSheetNativeDismissEvent.kt} +1 -1
  47. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/react/event/FormSheetNativeDismissPreventedEvent.kt +29 -0
  48. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetSyncFlushEvent.kt → react/event/FormSheetSyncFlushEvent.kt} +1 -1
  49. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetWillAppearEvent.kt → react/event/FormSheetWillAppearEvent.kt} +1 -1
  50. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetWillDisappearEvent.kt → react/event/FormSheetWillDisappearEvent.kt} +1 -1
  51. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetContentView.kt → react/host/FormSheetContentView.kt} +3 -1
  52. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetHost.kt → react/host/FormSheetHost.kt} +6 -1
  53. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetHostEventEmitter.kt → react/host/FormSheetHostEventEmitter.kt} +23 -1
  54. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetHostViewManager.kt → react/host/FormSheetHostViewManager.kt} +13 -2
  55. package/android/src/main/java/com/swmansion/rnscreens/stack/header/StackHeaderApplicator.kt +380 -457
  56. package/android/src/main/java/com/swmansion/rnscreens/stack/header/StackHeaderBackPressHandler.kt +11 -0
  57. package/android/src/main/java/com/swmansion/rnscreens/stack/header/StackHeaderCoordinatorLayout.kt +150 -182
  58. package/android/src/main/java/com/swmansion/rnscreens/stack/header/StackHeaderFrameSynchronizer.kt +63 -0
  59. package/android/src/main/java/com/swmansion/rnscreens/stack/header/appbar/StackHeaderAppBarLayout.kt +240 -0
  60. package/android/src/main/java/com/swmansion/rnscreens/stack/header/{StackHeaderAppBarLayoutBehavior.kt → appbar/StackHeaderAppBarLayoutBehavior.kt} +1 -1
  61. package/android/src/main/java/com/swmansion/rnscreens/stack/header/appbar/StackHeaderContentScrimDrawable.kt +36 -0
  62. package/android/src/main/java/com/swmansion/rnscreens/stack/header/{StackHeaderScrollingViewBehavior.kt → appbar/StackHeaderScrollingViewBehavior.kt} +1 -1
  63. package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderCollapsedTitleGravityMode.kt +6 -0
  64. package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderConfig.kt +192 -167
  65. package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderConfigViewManager.kt +393 -13
  66. package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderConfigurationObserver.kt +0 -4
  67. package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderConfigurationProviding.kt +33 -3
  68. package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderDelegate.kt +0 -7
  69. package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderInvalidationFlags.kt +9 -3
  70. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/StackHeaderToolbarMenuApplicator.kt +195 -0
  71. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/StackHeaderToolbarMenuController.kt +448 -0
  72. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/StackHeaderToolbarMenuDelegate.kt +10 -0
  73. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/StackHeaderToolbarMenuMapper.kt +43 -21
  74. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/model/StackHeaderToolbarMenuConfig.kt +8 -0
  75. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/{StackHeaderToolbarMenuElementConfig.kt → model/StackHeaderToolbarMenuElementConfig.kt} +1 -1
  76. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/{StackHeaderToolbarMenuGroupConfig.kt → model/StackHeaderToolbarMenuGroupConfig.kt} +1 -1
  77. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/model/StackHeaderToolbarMenuGroupMetadata.kt +11 -0
  78. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/{StackHeaderToolbarMenuItemConfig.kt → model/StackHeaderToolbarMenuItemConfig.kt} +2 -4
  79. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/{StackHeaderToolbarMenuItemDefaults.kt → model/StackHeaderToolbarMenuItemDefaults.kt} +1 -1
  80. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/{StackHeaderToolbarMenuItemIconSource.kt → model/StackHeaderToolbarMenuItemIconSource.kt} +1 -1
  81. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/{StackHeaderToolbarMenuItemShowAsAction.kt → model/StackHeaderToolbarMenuItemShowAsAction.kt} +1 -1
  82. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/{StackHeaderToolbarMenuItemType.kt → model/StackHeaderToolbarMenuItemType.kt} +1 -1
  83. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/model/StackHeaderToolbarMenuModel.kt +180 -0
  84. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/{StackHeaderToolbarFieldUpdate.kt → update/StackHeaderToolbarFieldUpdate.kt} +1 -1
  85. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/update/StackHeaderToolbarMenuElementOptions.kt +84 -0
  86. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/update/StackHeaderToolbarMenuElementRawUpdate.kt +15 -0
  87. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/update/StackHeaderToolbarMenuElementUpdate.kt +11 -0
  88. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/update/StackHeaderToolbarMenuIconResolver.kt +18 -0
  89. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/{StackHeaderToolbarMenuUpdateQueue.kt → update/StackHeaderToolbarMenuUpdateQueue.kt} +24 -52
  90. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/update/StackHeaderToolbarMenuUpdateQueueDelegate.kt +9 -0
  91. package/android/src/main/java/com/swmansion/rnscreens/stack/host/StackContainer.kt +103 -3
  92. package/android/src/main/java/com/swmansion/rnscreens/stack/host/StackHost.kt +13 -0
  93. package/android/src/main/java/com/swmansion/rnscreens/stack/host/StackHostViewManager.kt +14 -0
  94. package/android/src/main/java/com/swmansion/rnscreens/stack/screen/StackScreen.kt +5 -0
  95. package/android/src/main/java/com/swmansion/rnscreens/stack/screen/StackScreenFragment.kt +20 -1
  96. package/android/src/main/java/com/swmansion/rnscreens/stack/screen/StackScreenFragmentDelegate.kt +12 -0
  97. package/android/src/main/java/com/swmansion/rnscreens/tabs/appearance/TabsAppearanceCoordinator.kt +2 -4
  98. package/android/src/main/java/com/swmansion/rnscreens/tabs/container/MenuHelpers.kt +5 -23
  99. package/android/src/main/java/com/swmansion/rnscreens/tabs/container/TabsContainer.kt +46 -25
  100. package/android/src/main/java/com/swmansion/rnscreens/tabs/host/TabsHost.kt +10 -0
  101. package/android/src/main/java/com/swmansion/rnscreens/tabs/host/TabsHostA11yCoordinator.kt +23 -2
  102. package/android/src/main/java/com/swmansion/rnscreens/tabs/screen/TabsScreen.kt +17 -0
  103. package/android/src/main/java/com/swmansion/rnscreens/tabs/screen/TabsScreenFragment.kt +3 -0
  104. package/android/src/main/java/com/swmansion/rnscreens/utils/DimensionUtils.kt +7 -0
  105. package/android/src/main/java/com/swmansion/rnscreens/utils/StyleUtils.kt +22 -0
  106. package/android/src/main/res/base/layout/rns_collapsing_toolbar_large_available_space.xml +8 -0
  107. package/android/src/main/res/base/layout/rns_collapsing_toolbar_large_entire_space.xml +8 -0
  108. package/android/src/main/res/base/layout/rns_collapsing_toolbar_medium_available_space.xml +8 -0
  109. package/android/src/main/res/base/layout/rns_collapsing_toolbar_medium_entire_space.xml +8 -0
  110. package/common/cpp/react/renderer/components/rnscreens/legacy/RNSScreenShadowNode.cpp +10 -5
  111. package/cpp/legacy/RNSScreenRemovalListener.cpp +31 -1
  112. package/cpp/legacy/RNSScreenRemovalListener.h +18 -3
  113. package/ios/RNSEnums.h +2 -2
  114. package/ios/RNSOrientationProviding.h +0 -2
  115. package/ios/RNSReactMountingTransactionObserving.h +15 -0
  116. package/ios/conversion/RNSConversions.h +7 -108
  117. package/ios/legacy/RNSBarButtonItem.mm +12 -5
  118. package/ios/legacy/RNSFullWindowOverlay.mm +1 -1
  119. package/ios/legacy/RNSModalScreen.mm +1 -1
  120. package/ios/legacy/RNSScreen.h +8 -1
  121. package/ios/legacy/RNSScreen.mm +47 -36
  122. package/ios/legacy/RNSScreenContentWrapper.mm +9 -0
  123. package/ios/legacy/RNSScreenFooter.mm +2 -0
  124. package/ios/legacy/RNSScreenStack.mm +9 -4
  125. package/ios/legacy/RNSScreenStackHeaderConfig.mm +3 -1
  126. package/ios/legacy/RNSScreenStackHeaderSubview.mm +1 -1
  127. package/ios/legacy/RNSScreenWindowTraits.mm +5 -13
  128. package/ios/modals/form-sheet/RNSFormSheetConfigurationApplicator.h +1 -3
  129. package/ios/modals/form-sheet/RNSFormSheetConfigurationApplicator.mm +11 -22
  130. package/ios/modals/form-sheet/RNSFormSheetContentController.h +1 -1
  131. package/ios/modals/form-sheet/RNSFormSheetContentController.mm +7 -18
  132. package/ios/modals/form-sheet/RNSFormSheetContentWrapperComponentView.mm +9 -0
  133. package/ios/modals/form-sheet/RNSFormSheetHostComponentView.mm +4 -4
  134. package/ios/modals/form-sheet/RNSFormSheetHostShadowStateProxy.mm +2 -2
  135. package/ios/modals/form-sheet/RNSFormSheetUpdateFlags.h +3 -0
  136. package/ios/safe-area/RNSSafeAreaViewComponentView.mm +2 -2
  137. package/ios/scroll-to-top-guard/RNSScrollToTopGuard.h +17 -0
  138. package/ios/scroll-to-top-guard/RNSScrollToTopGuard.mm +57 -0
  139. package/ios/scroll-to-top-guard/RNSScrollToTopGuardGestureRecognizer.h +28 -0
  140. package/ios/scroll-to-top-guard/RNSScrollToTopGuardGestureRecognizer.mm +64 -0
  141. package/ios/{conversion → scroll-view-marker/conversion}/RNSConversions-ScrollViewMarker.mm +2 -3
  142. package/ios/split/RNSSplitAppearanceApplicator.h +36 -0
  143. package/ios/split/RNSSplitAppearanceApplicator.mm +182 -0
  144. package/ios/split/RNSSplitAppearanceCoordinator.h +26 -0
  145. package/ios/split/RNSSplitAppearanceCoordinator.mm +27 -0
  146. package/ios/split/RNSSplitAppearanceUpdateFlags.h +14 -0
  147. package/ios/split/RNSSplitHostComponentEventEmitter.h +1 -0
  148. package/ios/split/RNSSplitHostComponentEventEmitter.mm +1 -1
  149. package/ios/split/RNSSplitHostComponentView.h +5 -15
  150. package/ios/split/RNSSplitHostComponentView.mm +56 -7
  151. package/ios/split/RNSSplitHostController.h +105 -0
  152. package/ios/split/RNSSplitHostController.mm +492 -0
  153. package/ios/split/RNSSplitHostProviders.h +67 -0
  154. package/ios/split/RNSSplitNavigationController.h +31 -0
  155. package/ios/split/RNSSplitNavigationController.mm +44 -0
  156. package/ios/split/RNSSplitNavigationControllerFrameObserver.h +32 -0
  157. package/ios/split/RNSSplitNavigationControllerFrameObserver.mm +80 -0
  158. package/ios/split/RNSSplitNavigationControllerFrameOriginChangeDelegate.h +15 -0
  159. package/ios/split/RNSSplitScreenComponentView.h +0 -39
  160. package/ios/split/RNSSplitScreenComponentView.mm +35 -19
  161. package/ios/split/RNSSplitScreenController.h +68 -0
  162. package/ios/split/RNSSplitScreenController.mm +113 -0
  163. package/ios/split/RNSSplitScreenShadowStateProxy.h +1 -40
  164. package/ios/split/RNSSplitScreenShadowStateProxy.mm +1 -26
  165. package/ios/split/conversion/RNSConversions-SplitView.h +56 -0
  166. package/ios/{conversion → split/conversion}/RNSConversions-SplitView.mm +4 -1
  167. package/ios/stack/conversion/RNSConversions-Stack.h +32 -0
  168. package/ios/stack/conversion/RNSConversions-Stack.mm +55 -0
  169. package/ios/stack/header/RNSStackHeaderAppearanceMapper.h +26 -0
  170. package/ios/stack/header/RNSStackHeaderAppearanceMapper.mm +88 -0
  171. package/ios/stack/header/RNSStackHeaderConfigComponentView.h +11 -1
  172. package/ios/stack/header/RNSStackHeaderConfigComponentView.mm +108 -38
  173. package/ios/stack/header/RNSStackHeaderConfigDataProviding.h +9 -0
  174. package/ios/stack/header/RNSStackHeaderConfigShadowStateProxy.mm +1 -1
  175. package/ios/stack/header/RNSStackHeaderIconResolver.mm +7 -0
  176. package/ios/stack/header/RNSStackHeaderItemComponentView.h +3 -1
  177. package/ios/stack/header/RNSStackHeaderItemComponentView.mm +15 -2
  178. package/ios/stack/header/RNSStackHeaderItemDataProviding.h +2 -0
  179. package/ios/stack/header/RNSStackHeaderItemShadowStateProxy.mm +1 -1
  180. package/ios/stack/header/RNSStackHeaderItemSpacerComponentView.mm +2 -1
  181. package/ios/stack/header/RNSStackHeaderMenuCoordinator.h +9 -0
  182. package/ios/stack/header/RNSStackHeaderMenuCoordinator.mm +15 -0
  183. package/ios/stack/header/RNSStackHeaderMenuFinder.h +18 -3
  184. package/ios/stack/header/RNSStackHeaderMenuFinder.mm +21 -3
  185. package/ios/stack/header/RNSStackHeaderMenuMapper.mm +4 -0
  186. package/ios/stack/host/RNSStackHostComponentView.mm +3 -1
  187. package/ios/stack/host/RNSStackNavigationBar.h +25 -0
  188. package/ios/stack/host/RNSStackNavigationBar.mm +80 -0
  189. package/ios/stack/host/RNSStackNavigationBarCoordinator.h +8 -0
  190. package/ios/stack/host/RNSStackNavigationBarCoordinator.mm +11 -0
  191. package/ios/stack/host/RNSStackNavigationController.mm +14 -6
  192. package/ios/stack/host/RNSStackOperation.h +0 -2
  193. package/ios/stack/screen/RNSStackScreenComponentView.mm +9 -4
  194. package/ios/stack/screen/RNSStackScreenController.mm +12 -0
  195. package/ios/stack/screen/RNSStackScreenHeaderCoordinator.h +14 -1
  196. package/ios/stack/screen/RNSStackScreenHeaderCoordinator.mm +159 -28
  197. package/ios/tabs/RNSTabBarAppearanceCoordinator.mm +40 -9
  198. package/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryComponentView.h +1 -1
  199. package/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryComponentView.mm +4 -1
  200. package/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryContentComponentView.mm +5 -2
  201. package/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryEventEmitter.mm +1 -1
  202. package/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryShadowStateProxy.mm +1 -1
  203. package/ios/tabs/conversion/RNSConversions-Tabs.h +78 -0
  204. package/ios/{conversion → tabs/conversion}/RNSConversions-Tabs.mm +8 -71
  205. package/ios/tabs/extensions/RNSTabsHostComponentView+RNSImageLoader.h +1 -1
  206. package/ios/tabs/host/RNSTabBarController.h +5 -12
  207. package/ios/tabs/host/RNSTabBarController.mm +1 -1
  208. package/ios/tabs/host/RNSTabsHostComponentView.h +2 -0
  209. package/ios/tabs/host/RNSTabsHostComponentView.mm +10 -3
  210. package/ios/tabs/host/RNSTabsHostEventEmitter.mm +1 -1
  211. package/ios/tabs/screen/RNSTabsScreenComponentView.mm +20 -5
  212. package/ios/utils/RNSDefines.h +3 -0
  213. package/lib/commonjs/components/scroll-to-top-guard/ScrollToTopGuard.ios.js +25 -0
  214. package/lib/commonjs/components/scroll-to-top-guard/ScrollToTopGuard.ios.js.map +1 -0
  215. package/lib/commonjs/components/scroll-to-top-guard/ScrollToTopGuard.js +24 -0
  216. package/lib/commonjs/components/scroll-to-top-guard/ScrollToTopGuard.js.map +1 -0
  217. package/lib/commonjs/components/scroll-to-top-guard/index.js +13 -0
  218. package/lib/commonjs/components/scroll-to-top-guard/index.js.map +1 -0
  219. package/lib/commonjs/components/stack/header/StackHeaderConfig.android.js +34 -19
  220. package/lib/commonjs/components/stack/header/StackHeaderConfig.android.js.map +1 -1
  221. package/lib/commonjs/components/stack/header/StackHeaderConfig.ios.js +44 -13
  222. package/lib/commonjs/components/stack/header/StackHeaderConfig.ios.js.map +1 -1
  223. package/lib/commonjs/components/stack/header/ios/StackHeaderItem.ios.js +1 -22
  224. package/lib/commonjs/components/stack/header/ios/StackHeaderItem.ios.js.map +1 -1
  225. package/lib/commonjs/components/stack/header/ios/iconUtils.ios.js +33 -2
  226. package/lib/commonjs/components/stack/header/ios/iconUtils.ios.js.map +1 -1
  227. package/lib/commonjs/components/stack/header/utils.js +6 -9
  228. package/lib/commonjs/components/stack/header/utils.js.map +1 -1
  229. package/lib/commonjs/components/stack/host/StackHost.js +9 -6
  230. package/lib/commonjs/components/stack/host/StackHost.js.map +1 -1
  231. package/lib/commonjs/components/stack/index.js.map +1 -1
  232. package/lib/commonjs/components/tabs/host/TabsHost.ios.js +1 -0
  233. package/lib/commonjs/components/tabs/host/TabsHost.ios.js.map +1 -1
  234. package/lib/commonjs/experimental/index.js +11 -0
  235. package/lib/commonjs/experimental/index.js.map +1 -1
  236. package/lib/commonjs/fabric/ScrollViewMarkerNativeComponent.js.map +1 -1
  237. package/lib/commonjs/fabric/legacy/FullWindowOverlayNativeComponent.js.map +1 -1
  238. package/lib/commonjs/fabric/legacy/ModalScreenNativeComponent.js.map +1 -1
  239. package/lib/commonjs/fabric/legacy/ScreenContainerNativeComponent.js.map +1 -1
  240. package/lib/commonjs/fabric/legacy/ScreenFooterNativeComponent.js.map +1 -1
  241. package/lib/commonjs/fabric/legacy/ScreenNativeComponent.js.map +1 -1
  242. package/lib/commonjs/fabric/legacy/ScreenStackHeaderConfigNativeComponent.js.map +1 -1
  243. package/lib/commonjs/fabric/legacy/ScreenStackHeaderSubviewNativeComponent.js.map +1 -1
  244. package/lib/commonjs/fabric/legacy/ScreenStackNativeComponent.js.map +1 -1
  245. package/lib/commonjs/fabric/legacy/SearchBarNativeComponent.js.map +1 -1
  246. package/lib/commonjs/fabric/modals/form-sheet/FormSheetHostNativeComponent.js.map +1 -1
  247. package/lib/commonjs/fabric/safe-area/SafeAreaViewNativeComponent.js.map +1 -1
  248. package/lib/commonjs/fabric/scroll-to-top-guard/ScrollToTopGuardNativeComponent.js +12 -0
  249. package/lib/commonjs/fabric/scroll-to-top-guard/ScrollToTopGuardNativeComponent.js.map +1 -0
  250. package/lib/commonjs/fabric/split/SplitHostNativeComponent.js.map +1 -1
  251. package/lib/commonjs/fabric/split/SplitScreenNativeComponent.js.map +1 -1
  252. package/lib/commonjs/fabric/stack/StackHeaderConfigAndroidNativeComponent.js.map +1 -1
  253. package/lib/commonjs/fabric/stack/StackHeaderConfigIOSNativeComponent.js.map +1 -1
  254. package/lib/commonjs/fabric/stack/StackHeaderItemIOSNativeComponent.js.map +1 -1
  255. package/lib/commonjs/fabric/stack/StackHeaderItemSpacerIOSNativeComponent.js.map +1 -1
  256. package/lib/commonjs/fabric/stack/StackHeaderSubviewAndroidNativeComponent.js.map +1 -1
  257. package/lib/commonjs/fabric/stack/StackHostNativeComponent.js.map +1 -1
  258. package/lib/commonjs/fabric/stack/StackScreenNativeComponent.js.map +1 -1
  259. package/lib/commonjs/fabric/tabs/TabsBottomAccessoryContentNativeComponent.js.map +1 -1
  260. package/lib/commonjs/fabric/tabs/TabsBottomAccessoryNativeComponent.js.map +1 -1
  261. package/lib/commonjs/fabric/tabs/TabsHostAndroidNativeComponent.js.map +1 -1
  262. package/lib/commonjs/fabric/tabs/TabsHostIOSNativeComponent.js.map +1 -1
  263. package/lib/commonjs/fabric/tabs/TabsScreenAndroidNativeComponent.js.map +1 -1
  264. package/lib/commonjs/fabric/tabs/TabsScreenIOSNativeComponent.js.map +1 -1
  265. package/lib/commonjs/flags.js +22 -1
  266. package/lib/commonjs/flags.js.map +1 -1
  267. package/lib/commonjs/legacy/components/Screen.js +6 -1
  268. package/lib/commonjs/legacy/components/Screen.js.map +1 -1
  269. package/lib/commonjs/legacy/components/ScreenStackHeaderConfig.js +5 -0
  270. package/lib/commonjs/legacy/components/ScreenStackHeaderConfig.js.map +1 -1
  271. package/lib/commonjs/legacy/components/ScreenStackItem.js.map +1 -1
  272. package/lib/commonjs/legacy/components/SearchBar.js +16 -16
  273. package/lib/commonjs/legacy/components/SearchBar.js.map +1 -1
  274. package/lib/commonjs/legacy/components/helpers/prepareHeaderBarButtonItems.js +3 -0
  275. package/lib/commonjs/legacy/components/helpers/prepareHeaderBarButtonItems.js.map +1 -1
  276. package/lib/commonjs/legacy/gesture-handler/fabricUtils.js.map +1 -1
  277. package/lib/commonjs/legacy/useTransitionProgress.js.map +1 -1
  278. package/lib/module/components/scroll-to-top-guard/ScrollToTopGuard.ios.js +20 -0
  279. package/lib/module/components/scroll-to-top-guard/ScrollToTopGuard.ios.js.map +1 -0
  280. package/lib/module/components/scroll-to-top-guard/ScrollToTopGuard.js +18 -0
  281. package/lib/module/components/scroll-to-top-guard/ScrollToTopGuard.js.map +1 -0
  282. package/lib/module/components/scroll-to-top-guard/index.js +2 -0
  283. package/lib/module/components/scroll-to-top-guard/index.js.map +1 -0
  284. package/lib/module/components/stack/header/StackHeaderConfig.android.js +35 -20
  285. package/lib/module/components/stack/header/StackHeaderConfig.android.js.map +1 -1
  286. package/lib/module/components/stack/header/StackHeaderConfig.ios.js +48 -17
  287. package/lib/module/components/stack/header/StackHeaderConfig.ios.js.map +1 -1
  288. package/lib/module/components/stack/header/ios/StackHeaderItem.ios.js +1 -22
  289. package/lib/module/components/stack/header/ios/StackHeaderItem.ios.js.map +1 -1
  290. package/lib/module/components/stack/header/ios/iconUtils.ios.js +31 -2
  291. package/lib/module/components/stack/header/ios/iconUtils.ios.js.map +1 -1
  292. package/lib/module/components/stack/header/utils.js +5 -8
  293. package/lib/module/components/stack/header/utils.js.map +1 -1
  294. package/lib/module/components/stack/host/StackHost.js +9 -6
  295. package/lib/module/components/stack/host/StackHost.js.map +1 -1
  296. package/lib/module/components/stack/index.js.map +1 -1
  297. package/lib/module/components/tabs/host/TabsHost.ios.js +1 -0
  298. package/lib/module/components/tabs/host/TabsHost.ios.js.map +1 -1
  299. package/lib/module/experimental/index.js +1 -0
  300. package/lib/module/experimental/index.js.map +1 -1
  301. package/lib/module/fabric/ScrollViewMarkerNativeComponent.js.map +1 -1
  302. package/lib/module/fabric/legacy/FullWindowOverlayNativeComponent.js.map +1 -1
  303. package/lib/module/fabric/legacy/ModalScreenNativeComponent.js.map +1 -1
  304. package/lib/module/fabric/legacy/ScreenContainerNativeComponent.js.map +1 -1
  305. package/lib/module/fabric/legacy/ScreenFooterNativeComponent.js.map +1 -1
  306. package/lib/module/fabric/legacy/ScreenNativeComponent.js.map +1 -1
  307. package/lib/module/fabric/legacy/ScreenStackHeaderConfigNativeComponent.js.map +1 -1
  308. package/lib/module/fabric/legacy/ScreenStackHeaderSubviewNativeComponent.js.map +1 -1
  309. package/lib/module/fabric/legacy/ScreenStackNativeComponent.js.map +1 -1
  310. package/lib/module/fabric/legacy/SearchBarNativeComponent.js.map +1 -1
  311. package/lib/module/fabric/modals/form-sheet/FormSheetHostNativeComponent.js.map +1 -1
  312. package/lib/module/fabric/safe-area/SafeAreaViewNativeComponent.js.map +1 -1
  313. package/lib/module/fabric/scroll-to-top-guard/ScrollToTopGuardNativeComponent.js +7 -0
  314. package/lib/module/fabric/scroll-to-top-guard/ScrollToTopGuardNativeComponent.js.map +1 -0
  315. package/lib/module/fabric/split/SplitHostNativeComponent.js.map +1 -1
  316. package/lib/module/fabric/split/SplitScreenNativeComponent.js.map +1 -1
  317. package/lib/module/fabric/stack/StackHeaderConfigAndroidNativeComponent.js.map +1 -1
  318. package/lib/module/fabric/stack/StackHeaderConfigIOSNativeComponent.js.map +1 -1
  319. package/lib/module/fabric/stack/StackHeaderItemIOSNativeComponent.js.map +1 -1
  320. package/lib/module/fabric/stack/StackHeaderItemSpacerIOSNativeComponent.js.map +1 -1
  321. package/lib/module/fabric/stack/StackHeaderSubviewAndroidNativeComponent.js.map +1 -1
  322. package/lib/module/fabric/stack/StackHostNativeComponent.js.map +1 -1
  323. package/lib/module/fabric/stack/StackScreenNativeComponent.js.map +1 -1
  324. package/lib/module/fabric/tabs/TabsBottomAccessoryContentNativeComponent.js.map +1 -1
  325. package/lib/module/fabric/tabs/TabsBottomAccessoryNativeComponent.js.map +1 -1
  326. package/lib/module/fabric/tabs/TabsHostAndroidNativeComponent.js.map +1 -1
  327. package/lib/module/fabric/tabs/TabsHostIOSNativeComponent.js.map +1 -1
  328. package/lib/module/fabric/tabs/TabsScreenAndroidNativeComponent.js.map +1 -1
  329. package/lib/module/fabric/tabs/TabsScreenIOSNativeComponent.js.map +1 -1
  330. package/lib/module/flags.js +22 -1
  331. package/lib/module/flags.js.map +1 -1
  332. package/lib/module/legacy/components/Screen.js +6 -1
  333. package/lib/module/legacy/components/Screen.js.map +1 -1
  334. package/lib/module/legacy/components/ScreenStackHeaderConfig.js +5 -0
  335. package/lib/module/legacy/components/ScreenStackHeaderConfig.js.map +1 -1
  336. package/lib/module/legacy/components/ScreenStackItem.js.map +1 -1
  337. package/lib/module/legacy/components/SearchBar.js +17 -17
  338. package/lib/module/legacy/components/SearchBar.js.map +1 -1
  339. package/lib/module/legacy/components/helpers/prepareHeaderBarButtonItems.js +4 -0
  340. package/lib/module/legacy/components/helpers/prepareHeaderBarButtonItems.js.map +1 -1
  341. package/lib/module/legacy/gesture-handler/fabricUtils.js.map +1 -1
  342. package/lib/module/legacy/useTransitionProgress.js.map +1 -1
  343. package/lib/module/private/hooks/useRenderDebugInfo.js.map +1 -1
  344. package/lib/typescript/components/modals/form-sheet/FormSheet.types.d.ts +3 -3
  345. package/lib/typescript/components/safe-area/SafeAreaView.web.d.ts +5 -2
  346. package/lib/typescript/components/safe-area/SafeAreaView.web.d.ts.map +1 -1
  347. package/lib/typescript/components/scroll-to-top-guard/ScrollToTopGuard.d.ts +15 -0
  348. package/lib/typescript/components/scroll-to-top-guard/ScrollToTopGuard.d.ts.map +1 -0
  349. package/lib/typescript/components/scroll-to-top-guard/ScrollToTopGuard.ios.d.ts +12 -0
  350. package/lib/typescript/components/scroll-to-top-guard/ScrollToTopGuard.ios.d.ts.map +1 -0
  351. package/lib/typescript/components/scroll-to-top-guard/index.d.ts +2 -0
  352. package/lib/typescript/components/scroll-to-top-guard/index.d.ts.map +1 -0
  353. package/lib/typescript/components/stack/header/StackHeaderConfig.android.d.ts.map +1 -1
  354. package/lib/typescript/components/stack/header/StackHeaderConfig.android.types.d.ts +639 -20
  355. package/lib/typescript/components/stack/header/StackHeaderConfig.android.types.d.ts.map +1 -1
  356. package/lib/typescript/components/stack/header/StackHeaderConfig.ios.d.ts.map +1 -1
  357. package/lib/typescript/components/stack/header/StackHeaderConfig.ios.types.d.ts +239 -2
  358. package/lib/typescript/components/stack/header/StackHeaderConfig.ios.types.d.ts.map +1 -1
  359. package/lib/typescript/components/stack/header/StackHeaderConfig.types.d.ts +2 -2
  360. package/lib/typescript/components/stack/header/StackHeaderConfig.web.d.ts +5 -2
  361. package/lib/typescript/components/stack/header/StackHeaderConfig.web.d.ts.map +1 -1
  362. package/lib/typescript/components/stack/header/ios/StackHeaderItem.ios.d.ts.map +1 -1
  363. package/lib/typescript/components/stack/header/ios/StackHeaderItem.ios.types.d.ts +2 -0
  364. package/lib/typescript/components/stack/header/ios/StackHeaderItem.ios.types.d.ts.map +1 -1
  365. package/lib/typescript/components/stack/header/ios/iconUtils.ios.d.ts +3 -0
  366. package/lib/typescript/components/stack/header/ios/iconUtils.ios.d.ts.map +1 -1
  367. package/lib/typescript/components/stack/header/utils.d.ts +1 -2
  368. package/lib/typescript/components/stack/header/utils.d.ts.map +1 -1
  369. package/lib/typescript/components/stack/host/StackHost.d.ts +1 -1
  370. package/lib/typescript/components/stack/host/StackHost.d.ts.map +1 -1
  371. package/lib/typescript/components/stack/host/StackHost.types.d.ts +26 -2
  372. package/lib/typescript/components/stack/host/StackHost.types.d.ts.map +1 -1
  373. package/lib/typescript/components/stack/host/StackHost.web.d.ts +6 -2
  374. package/lib/typescript/components/stack/host/StackHost.web.d.ts.map +1 -1
  375. package/lib/typescript/components/stack/index.d.ts +2 -2
  376. package/lib/typescript/components/stack/index.d.ts.map +1 -1
  377. package/lib/typescript/components/stack/screen/StackScreen.web.d.ts +5 -2
  378. package/lib/typescript/components/stack/screen/StackScreen.web.d.ts.map +1 -1
  379. package/lib/typescript/components/tabs/host/TabsHost.ios.d.ts.map +1 -1
  380. package/lib/typescript/components/tabs/host/TabsHost.ios.types.d.ts +16 -0
  381. package/lib/typescript/components/tabs/host/TabsHost.ios.types.d.ts.map +1 -1
  382. package/lib/typescript/components/tabs/host/TabsHost.types.d.ts +3 -0
  383. package/lib/typescript/components/tabs/host/TabsHost.types.d.ts.map +1 -1
  384. package/lib/typescript/components/tabs/host/TabsHost.web.d.ts +5 -2
  385. package/lib/typescript/components/tabs/host/TabsHost.web.d.ts.map +1 -1
  386. package/lib/typescript/components/tabs/screen/TabsScreen.types.d.ts +7 -3
  387. package/lib/typescript/components/tabs/screen/TabsScreen.types.d.ts.map +1 -1
  388. package/lib/typescript/components/tabs/screen/TabsScreen.web.d.ts +5 -2
  389. package/lib/typescript/components/tabs/screen/TabsScreen.web.d.ts.map +1 -1
  390. package/lib/typescript/experimental/index.d.ts +1 -0
  391. package/lib/typescript/experimental/index.d.ts.map +1 -1
  392. package/lib/typescript/fabric/NativeScreensModule.d.ts +1 -1
  393. package/lib/typescript/fabric/ScrollViewMarkerNativeComponent.d.ts +2 -2
  394. package/lib/typescript/fabric/ScrollViewMarkerNativeComponent.d.ts.map +1 -1
  395. package/lib/typescript/fabric/legacy/FullWindowOverlayNativeComponent.d.ts +2 -2
  396. package/lib/typescript/fabric/legacy/FullWindowOverlayNativeComponent.d.ts.map +1 -1
  397. package/lib/typescript/fabric/legacy/ModalScreenNativeComponent.d.ts +3 -2
  398. package/lib/typescript/fabric/legacy/ModalScreenNativeComponent.d.ts.map +1 -1
  399. package/lib/typescript/fabric/legacy/ScreenContainerNativeComponent.d.ts +2 -2
  400. package/lib/typescript/fabric/legacy/ScreenContainerNativeComponent.d.ts.map +1 -1
  401. package/lib/typescript/fabric/legacy/ScreenContentWrapperNativeComponent.d.ts +2 -2
  402. package/lib/typescript/fabric/legacy/ScreenContentWrapperNativeComponent.d.ts.map +1 -1
  403. package/lib/typescript/fabric/legacy/ScreenFooterNativeComponent.d.ts +2 -2
  404. package/lib/typescript/fabric/legacy/ScreenFooterNativeComponent.d.ts.map +1 -1
  405. package/lib/typescript/fabric/legacy/ScreenNativeComponent.d.ts +3 -2
  406. package/lib/typescript/fabric/legacy/ScreenNativeComponent.d.ts.map +1 -1
  407. package/lib/typescript/fabric/legacy/ScreenNavigationContainerNativeComponent.d.ts +2 -2
  408. package/lib/typescript/fabric/legacy/ScreenNavigationContainerNativeComponent.d.ts.map +1 -1
  409. package/lib/typescript/fabric/legacy/ScreenStackHeaderConfigNativeComponent.d.ts +3 -3
  410. package/lib/typescript/fabric/legacy/ScreenStackHeaderConfigNativeComponent.d.ts.map +1 -1
  411. package/lib/typescript/fabric/legacy/ScreenStackHeaderSubviewNativeComponent.d.ts +2 -2
  412. package/lib/typescript/fabric/legacy/ScreenStackHeaderSubviewNativeComponent.d.ts.map +1 -1
  413. package/lib/typescript/fabric/legacy/ScreenStackNativeComponent.d.ts +2 -2
  414. package/lib/typescript/fabric/legacy/ScreenStackNativeComponent.d.ts.map +1 -1
  415. package/lib/typescript/fabric/legacy/SearchBarNativeComponent.d.ts +6 -6
  416. package/lib/typescript/fabric/legacy/SearchBarNativeComponent.d.ts.map +1 -1
  417. package/lib/typescript/fabric/modals/form-sheet/FormSheetContentWrapperNativeComponent.d.ts +2 -2
  418. package/lib/typescript/fabric/modals/form-sheet/FormSheetContentWrapperNativeComponent.d.ts.map +1 -1
  419. package/lib/typescript/fabric/modals/form-sheet/FormSheetHostNativeComponent.d.ts +2 -2
  420. package/lib/typescript/fabric/modals/form-sheet/FormSheetHostNativeComponent.d.ts.map +1 -1
  421. package/lib/typescript/fabric/safe-area/SafeAreaViewNativeComponent.d.ts +2 -2
  422. package/lib/typescript/fabric/safe-area/SafeAreaViewNativeComponent.d.ts.map +1 -1
  423. package/lib/typescript/fabric/scroll-to-top-guard/ScrollToTopGuardNativeComponent.d.ts +6 -0
  424. package/lib/typescript/fabric/scroll-to-top-guard/ScrollToTopGuardNativeComponent.d.ts.map +1 -0
  425. package/lib/typescript/fabric/split/SplitHostNativeComponent.d.ts +1 -1
  426. package/lib/typescript/fabric/split/SplitHostNativeComponent.d.ts.map +1 -1
  427. package/lib/typescript/fabric/split/SplitScreenNativeComponent.d.ts +2 -2
  428. package/lib/typescript/fabric/split/SplitScreenNativeComponent.d.ts.map +1 -1
  429. package/lib/typescript/fabric/stack/StackHeaderConfigAndroidNativeComponent.d.ts +53 -0
  430. package/lib/typescript/fabric/stack/StackHeaderConfigAndroidNativeComponent.d.ts.map +1 -1
  431. package/lib/typescript/fabric/stack/StackHeaderConfigIOSNativeComponent.d.ts +27 -2
  432. package/lib/typescript/fabric/stack/StackHeaderConfigIOSNativeComponent.d.ts.map +1 -1
  433. package/lib/typescript/fabric/stack/StackHeaderItemIOSNativeComponent.d.ts +4 -2
  434. package/lib/typescript/fabric/stack/StackHeaderItemIOSNativeComponent.d.ts.map +1 -1
  435. package/lib/typescript/fabric/stack/StackHeaderItemSpacerIOSNativeComponent.d.ts +2 -2
  436. package/lib/typescript/fabric/stack/StackHeaderItemSpacerIOSNativeComponent.d.ts.map +1 -1
  437. package/lib/typescript/fabric/stack/StackHeaderSubviewAndroidNativeComponent.d.ts +2 -2
  438. package/lib/typescript/fabric/stack/StackHeaderSubviewAndroidNativeComponent.d.ts.map +1 -1
  439. package/lib/typescript/fabric/stack/StackHostNativeComponent.d.ts +4 -2
  440. package/lib/typescript/fabric/stack/StackHostNativeComponent.d.ts.map +1 -1
  441. package/lib/typescript/fabric/stack/StackScreenNativeComponent.d.ts +2 -2
  442. package/lib/typescript/fabric/stack/StackScreenNativeComponent.d.ts.map +1 -1
  443. package/lib/typescript/fabric/tabs/TabsBottomAccessoryContentNativeComponent.d.ts +2 -2
  444. package/lib/typescript/fabric/tabs/TabsBottomAccessoryContentNativeComponent.d.ts.map +1 -1
  445. package/lib/typescript/fabric/tabs/TabsBottomAccessoryNativeComponent.d.ts +2 -2
  446. package/lib/typescript/fabric/tabs/TabsBottomAccessoryNativeComponent.d.ts.map +1 -1
  447. package/lib/typescript/fabric/tabs/TabsHostAndroidNativeComponent.d.ts +2 -2
  448. package/lib/typescript/fabric/tabs/TabsHostAndroidNativeComponent.d.ts.map +1 -1
  449. package/lib/typescript/fabric/tabs/TabsHostIOSNativeComponent.d.ts +3 -2
  450. package/lib/typescript/fabric/tabs/TabsHostIOSNativeComponent.d.ts.map +1 -1
  451. package/lib/typescript/fabric/tabs/TabsScreenAndroidNativeComponent.d.ts +2 -2
  452. package/lib/typescript/fabric/tabs/TabsScreenAndroidNativeComponent.d.ts.map +1 -1
  453. package/lib/typescript/fabric/tabs/TabsScreenIOSNativeComponent.d.ts +2 -2
  454. package/lib/typescript/fabric/tabs/TabsScreenIOSNativeComponent.d.ts.map +1 -1
  455. package/lib/typescript/flags.d.ts +13 -0
  456. package/lib/typescript/flags.d.ts.map +1 -1
  457. package/lib/typescript/legacy/TransitionProgressContext.d.ts +1 -1
  458. package/lib/typescript/legacy/TransitionProgressContext.d.ts.map +1 -1
  459. package/lib/typescript/legacy/components/Screen.d.ts +5 -3
  460. package/lib/typescript/legacy/components/Screen.d.ts.map +1 -1
  461. package/lib/typescript/legacy/components/Screen.web.d.ts +10 -2
  462. package/lib/typescript/legacy/components/Screen.web.d.ts.map +1 -1
  463. package/lib/typescript/legacy/components/ScreenContainer.web.d.ts +5 -2
  464. package/lib/typescript/legacy/components/ScreenContainer.web.d.ts.map +1 -1
  465. package/lib/typescript/legacy/components/ScreenContentWrapper.web.d.ts +5 -2
  466. package/lib/typescript/legacy/components/ScreenContentWrapper.web.d.ts.map +1 -1
  467. package/lib/typescript/legacy/components/ScreenContentWrapper.windows.d.ts +5 -2
  468. package/lib/typescript/legacy/components/ScreenContentWrapper.windows.d.ts.map +1 -1
  469. package/lib/typescript/legacy/components/ScreenFooter.web.d.ts +10 -3
  470. package/lib/typescript/legacy/components/ScreenFooter.web.d.ts.map +1 -1
  471. package/lib/typescript/legacy/components/ScreenFooter.windows.d.ts +10 -3
  472. package/lib/typescript/legacy/components/ScreenFooter.windows.d.ts.map +1 -1
  473. package/lib/typescript/legacy/components/ScreenStack.web.d.ts +5 -2
  474. package/lib/typescript/legacy/components/ScreenStack.web.d.ts.map +1 -1
  475. package/lib/typescript/legacy/components/ScreenStackHeaderConfig.d.ts +3 -1
  476. package/lib/typescript/legacy/components/ScreenStackHeaderConfig.d.ts.map +1 -1
  477. package/lib/typescript/legacy/components/ScreenStackItem.d.ts +3 -2
  478. package/lib/typescript/legacy/components/ScreenStackItem.d.ts.map +1 -1
  479. package/lib/typescript/legacy/components/SearchBar.d.ts +3 -3
  480. package/lib/typescript/legacy/components/SearchBar.d.ts.map +1 -1
  481. package/lib/typescript/legacy/components/SearchBar.web.d.ts +5 -2
  482. package/lib/typescript/legacy/components/SearchBar.web.d.ts.map +1 -1
  483. package/lib/typescript/legacy/components/helpers/prepareHeaderBarButtonItems.d.ts +15 -12
  484. package/lib/typescript/legacy/components/helpers/prepareHeaderBarButtonItems.d.ts.map +1 -1
  485. package/lib/typescript/legacy/gesture-handler/fabricUtils.d.ts +3 -2
  486. package/lib/typescript/legacy/gesture-handler/fabricUtils.d.ts.map +1 -1
  487. package/lib/typescript/legacy/types.d.ts +25 -5
  488. package/lib/typescript/legacy/types.d.ts.map +1 -1
  489. package/lib/typescript/legacy/useTransitionProgress.d.ts +2 -5
  490. package/lib/typescript/legacy/useTransitionProgress.d.ts.map +1 -1
  491. package/lib/typescript/private/hooks/useRenderDebugInfo.d.ts +2 -2
  492. package/lib/typescript/private/hooks/useRenderDebugInfo.d.ts.map +1 -1
  493. package/package.json +18 -17
  494. package/react-native.config.js +3 -0
  495. package/src/components/modals/form-sheet/FormSheet.types.ts +3 -3
  496. package/src/components/scroll-to-top-guard/ScrollToTopGuard.ios.tsx +17 -0
  497. package/src/components/scroll-to-top-guard/ScrollToTopGuard.tsx +18 -0
  498. package/src/components/scroll-to-top-guard/index.ts +1 -0
  499. package/src/components/stack/header/StackHeaderConfig.android.tsx +48 -23
  500. package/src/components/stack/header/StackHeaderConfig.android.types.ts +660 -20
  501. package/src/components/stack/header/StackHeaderConfig.ios.tsx +77 -23
  502. package/src/components/stack/header/StackHeaderConfig.ios.types.ts +251 -2
  503. package/src/components/stack/header/StackHeaderConfig.types.ts +2 -2
  504. package/src/components/stack/header/ios/StackHeaderItem.ios.tsx +1 -23
  505. package/src/components/stack/header/ios/StackHeaderItem.ios.types.ts +2 -0
  506. package/src/components/stack/header/ios/iconUtils.ios.ts +38 -2
  507. package/src/components/stack/header/utils.ts +6 -11
  508. package/src/components/stack/host/StackHost.tsx +4 -2
  509. package/src/components/stack/host/StackHost.types.ts +28 -4
  510. package/src/components/stack/index.ts +6 -1
  511. package/src/components/tabs/host/TabsHost.ios.tsx +1 -0
  512. package/src/components/tabs/host/TabsHost.ios.types.ts +16 -0
  513. package/src/components/tabs/host/TabsHost.types.ts +3 -0
  514. package/src/components/tabs/screen/TabsScreen.types.ts +7 -3
  515. package/src/experimental/index.ts +1 -0
  516. package/src/fabric/ScrollViewMarkerNativeComponent.ts +8 -2
  517. package/src/fabric/legacy/FullWindowOverlayNativeComponent.ts +6 -2
  518. package/src/fabric/legacy/ModalScreenNativeComponent.ts +8 -2
  519. package/src/fabric/legacy/ScreenContainerNativeComponent.ts +5 -2
  520. package/src/fabric/legacy/ScreenContentWrapperNativeComponent.ts +2 -2
  521. package/src/fabric/legacy/ScreenFooterNativeComponent.ts +5 -2
  522. package/src/fabric/legacy/ScreenNativeComponent.ts +8 -2
  523. package/src/fabric/legacy/ScreenNavigationContainerNativeComponent.ts +2 -2
  524. package/src/fabric/legacy/ScreenStackHeaderConfigNativeComponent.ts +8 -3
  525. package/src/fabric/legacy/ScreenStackHeaderSubviewNativeComponent.ts +6 -2
  526. package/src/fabric/legacy/ScreenStackNativeComponent.ts +10 -2
  527. package/src/fabric/legacy/SearchBarNativeComponent.ts +10 -7
  528. package/src/fabric/modals/form-sheet/FormSheetContentWrapperNativeComponent.ts +2 -2
  529. package/src/fabric/modals/form-sheet/FormSheetHostNativeComponent.ts +7 -2
  530. package/src/fabric/safe-area/SafeAreaViewNativeComponent.ts +6 -2
  531. package/src/fabric/scroll-to-top-guard/ScrollToTopGuardNativeComponent.ts +10 -0
  532. package/src/fabric/split/SplitHostNativeComponent.ts +5 -2
  533. package/src/fabric/split/SplitScreenNativeComponent.ts +6 -2
  534. package/src/fabric/stack/StackHeaderConfigAndroidNativeComponent.ts +81 -1
  535. package/src/fabric/stack/StackHeaderConfigIOSNativeComponent.ts +39 -2
  536. package/src/fabric/stack/StackHeaderItemIOSNativeComponent.ts +4 -1
  537. package/src/fabric/stack/StackHeaderItemSpacerIOSNativeComponent.ts +6 -2
  538. package/src/fabric/stack/StackHeaderSubviewAndroidNativeComponent.ts +6 -2
  539. package/src/fabric/stack/StackHostNativeComponent.ts +15 -3
  540. package/src/fabric/stack/StackScreenNativeComponent.ts +6 -2
  541. package/src/fabric/tabs/TabsBottomAccessoryContentNativeComponent.ts +6 -2
  542. package/src/fabric/tabs/TabsBottomAccessoryNativeComponent.ts +6 -2
  543. package/src/fabric/tabs/TabsHostAndroidNativeComponent.ts +7 -2
  544. package/src/fabric/tabs/TabsHostIOSNativeComponent.ts +8 -2
  545. package/src/fabric/tabs/TabsScreenAndroidNativeComponent.ts +2 -1
  546. package/src/fabric/tabs/TabsScreenIOSNativeComponent.ts +2 -1
  547. package/src/flags.ts +26 -0
  548. package/src/legacy/TransitionProgressContext.tsx +1 -1
  549. package/src/legacy/components/Screen.tsx +14 -6
  550. package/src/legacy/components/ScreenStackHeaderConfig.tsx +7 -1
  551. package/src/legacy/components/ScreenStackItem.tsx +3 -4
  552. package/src/legacy/components/SearchBar.tsx +34 -44
  553. package/src/legacy/components/helpers/prepareHeaderBarButtonItems.ts +7 -1
  554. package/src/legacy/gesture-handler/fabricUtils.ts +5 -2
  555. package/src/legacy/types.ts +28 -5
  556. package/src/legacy/useTransitionProgress.tsx +4 -2
  557. package/src/private/hooks/useRenderDebugInfo.tsx +2 -2
  558. package/android/src/main/java/com/swmansion/rnscreens/modals/dimmingview/DimmingView.kt +0 -83
  559. package/android/src/main/java/com/swmansion/rnscreens/modals/dimmingview/DimmingViewManager.kt +0 -89
  560. package/android/src/main/java/com/swmansion/rnscreens/modals/dimmingview/DimmingViewPointerEvents.kt +0 -18
  561. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/FormSheetDetents.kt +0 -106
  562. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/FormSheetDialog.kt +0 -60
  563. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/FormSheetDialogManager.kt +0 -138
  564. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/FormSheetDimensionsCoordinator.kt +0 -131
  565. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/FormSheetNativeDismissCoordinator.kt +0 -25
  566. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/FormSheetPresentationManager.kt +0 -207
  567. package/android/src/main/java/com/swmansion/rnscreens/stack/header/StackHeaderAppBarLayout.kt +0 -113
  568. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/StackHeaderToolbarMenuConfig.kt +0 -60
  569. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/StackHeaderToolbarMenuElementOptions.kt +0 -32
  570. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/StackHeaderToolbarMenuGroupMetadata.kt +0 -16
  571. package/ios/ReactMountingTransactionObserving.swift +0 -7
  572. package/ios/bridging/Swift-Bridging.h +0 -7
  573. package/ios/conversion/RNSConversions-Stack.h +0 -32
  574. package/ios/conversion/RNSConversions-Stack.mm +0 -41
  575. package/ios/conversion/always_false.h +0 -31
  576. package/ios/orientation/RNSOrientationProviding.swift +0 -6
  577. package/ios/orientation/RNSOrientationSwift.swift +0 -14
  578. package/ios/split/RNSSplitAppearanceApplicator.swift +0 -199
  579. package/ios/split/RNSSplitAppearanceCoordinator.swift +0 -26
  580. package/ios/split/RNSSplitAppearanceUpdateFlags.swift +0 -11
  581. package/ios/split/RNSSplitHostController.swift +0 -570
  582. package/ios/split/RNSSplitNavigationController.swift +0 -46
  583. package/ios/split/RNSSplitScreenController.swift +0 -133
  584. package/ios/utils/RNSLog.swift +0 -6
  585. /package/ios/{conversion → scroll-view-marker/conversion}/RNSConversions-ScrollViewMarker.h +0 -0
@@ -0,0 +1,80 @@
1
+ #import "RNSSplitNavigationControllerFrameObserver.h"
2
+ #import "RNSSplitNavigationControllerFrameOriginChangeDelegate.h"
3
+
4
+ static void *RNSSplitNavigationViewFrameContext = &RNSSplitNavigationViewFrameContext;
5
+
6
+ @implementation RNSSplitNavigationControllerFrameObserver {
7
+ RNSSplitNavigationController *__weak _navigationController;
8
+ id<RNSSplitNavigationControllerFrameOriginChangeDelegate> __weak _frameOriginChangeDelegate;
9
+ UIView *__weak _observedView;
10
+ }
11
+
12
+ - (instancetype)initWithSplitNavigationController:(RNSSplitNavigationController *)navigationController
13
+ delegate:(id<RNSSplitNavigationControllerFrameOriginChangeDelegate>)
14
+ frameOriginChangeDelegate
15
+ {
16
+ if (self = [super init]) {
17
+ _navigationController = navigationController;
18
+ _frameOriginChangeDelegate = frameOriginChangeDelegate;
19
+ }
20
+
21
+ return self;
22
+ }
23
+
24
+ #pragma mark - Observing view frame changes
25
+
26
+ - (void)registerForViewFrameChanges
27
+ {
28
+ [self unregisterForViewFrameChanges];
29
+
30
+ UIView *view = _navigationController.viewIfLoaded;
31
+ if (view == nil) {
32
+ return;
33
+ }
34
+
35
+ [view addObserver:self
36
+ forKeyPath:@"frame"
37
+ options:NSKeyValueObservingOptionOld | NSKeyValueObservingOptionNew
38
+ context:RNSSplitNavigationViewFrameContext];
39
+ _observedView = view;
40
+ }
41
+
42
+ - (void)unregisterForViewFrameChanges
43
+ {
44
+ [_observedView removeObserver:self forKeyPath:@"frame" context:RNSSplitNavigationViewFrameContext];
45
+ _observedView = nil;
46
+ }
47
+
48
+ - (void)observeValueForKeyPath:(NSString *)keyPath
49
+ ofObject:(id)object
50
+ change:(NSDictionary<NSKeyValueChangeKey, id> *)change
51
+ context:(void *)context
52
+ {
53
+ if (context != RNSSplitNavigationViewFrameContext) {
54
+ [super observeValueForKeyPath:keyPath ofObject:object change:change context:context];
55
+ return;
56
+ }
57
+
58
+ id oldValue = change[NSKeyValueChangeOldKey];
59
+ id newValue = change[NSKeyValueChangeNewKey];
60
+ if (![oldValue isKindOfClass:[NSValue class]] || ![newValue isKindOfClass:[NSValue class]]) {
61
+ return;
62
+ }
63
+
64
+ CGRect oldFrame = [oldValue CGRectValue];
65
+ CGRect newFrame = [newValue CGRectValue];
66
+
67
+ if (!CGPointEqualToPoint(oldFrame.origin, newFrame.origin)) {
68
+ RNSSplitNavigationController *navigationController = _navigationController;
69
+ if (navigationController != nil) {
70
+ [_frameOriginChangeDelegate splitNavigationControllerFrameOriginDidChange:navigationController];
71
+ }
72
+ }
73
+ }
74
+
75
+ - (void)dealloc
76
+ {
77
+ [self unregisterForViewFrameChanges];
78
+ }
79
+
80
+ @end
@@ -0,0 +1,15 @@
1
+ #pragma once
2
+
3
+ #import <UIKit/UIKit.h>
4
+
5
+ NS_ASSUME_NONNULL_BEGIN
6
+
7
+ @class RNSSplitNavigationController;
8
+
9
+ @protocol RNSSplitNavigationControllerFrameOriginChangeDelegate <NSObject>
10
+
11
+ - (void)splitNavigationControllerFrameOriginDidChange:(RNSSplitNavigationController *)splitNavCtrl;
12
+
13
+ @end
14
+
15
+ NS_ASSUME_NONNULL_END
@@ -3,8 +3,6 @@
3
3
  #import "RNSEnums.h"
4
4
  #import "RNSReactBaseView.h"
5
5
  #import "RNSSafeAreaProviding.h"
6
- #import "RNSSplitScreenComponentEventEmitter.h"
7
- #import "RNSSplitScreenShadowStateProxy.h"
8
6
 
9
7
  NS_ASSUME_NONNULL_BEGIN
10
8
 
@@ -25,26 +23,6 @@ NS_ASSUME_NONNULL_BEGIN
25
23
 
26
24
  @end
27
25
 
28
- #pragma mark - ShadowTreeState
29
-
30
- /**
31
- * @category ShadowTreeState
32
- * @brief Interactions between the host component and the associated ShadowNode.
33
- */
34
- @interface RNSSplitScreenComponentView ()
35
-
36
- /**
37
- * @brief Getter for the proxy object that interfaces with the Shadow Tree state for this screen.
38
- *
39
- * The ShadowStateProxy is the object that's responsible for sending layout updates coming from the Host tree to the
40
- * ShadowTree.
41
- *
42
- * @return A pointer to a RNSSplitScreenShadowStateProxy instance.
43
- */
44
- - (nonnull RNSSplitScreenShadowStateProxy *)shadowStateProxy;
45
-
46
- @end
47
-
48
26
  #pragma mark - Props
49
27
 
50
28
  /**
@@ -60,21 +38,4 @@ NS_ASSUME_NONNULL_BEGIN
60
38
 
61
39
  @end
62
40
 
63
- #pragma mark - Events
64
-
65
- /**
66
- * @category Events
67
- * @brief APIs related to event emission to React Native.
68
- */
69
- @interface RNSSplitScreenComponentView ()
70
-
71
- /**
72
- * @brief Getter for the component's event emitter used for emitting events to React.
73
- *
74
- * @return A pointer to RNSSplitScreenComponentEventEmitter instance.
75
- */
76
- - (nonnull RNSSplitScreenComponentEventEmitter *)reactEventEmitter;
77
-
78
- @end
79
-
80
41
  NS_ASSUME_NONNULL_END
@@ -1,14 +1,18 @@
1
1
  #import "RNSSplitScreenComponentView.h"
2
2
  #import <React/RCTAssert.h>
3
3
  #import <React/RCTSurfaceTouchHandler.h>
4
- #import <rnscreens/RNSSplitScreenComponentDescriptor.h>
5
- #import "RNSConversions.h"
4
+ #import <react/renderer/components/rnscreens/RNSSplitScreenComponentDescriptor.h>
5
+ #import "RNSConversions-SplitView.h"
6
6
  #import "RNSSafeAreaViewNotifications.h"
7
-
8
- #import "Swift-Bridging.h"
7
+ #import "RNSSplitScreenComponentEventEmitter.h"
8
+ #import "RNSSplitScreenController.h"
9
+ #import "RNSSplitScreenShadowStateProxy.h"
9
10
 
10
11
  namespace react = facebook::react;
11
12
 
13
+ @interface RNSSplitScreenComponentView () <RNSSplitScreenControllerDelegate>
14
+ @end
15
+
12
16
  @implementation RNSSplitScreenComponentView {
13
17
  RNSSplitScreenComponentEventEmitter *_Nonnull _reactEventEmitter;
14
18
  RNSSplitScreenController *_Nullable _controller;
@@ -50,6 +54,7 @@ namespace react = facebook::react;
50
54
  {
51
55
  _controller = [[RNSSplitScreenController alloc] initWithSplitScreenComponentView:self];
52
56
  _controller.view = self;
57
+ _controller.delegate = self;
53
58
  }
54
59
 
55
60
  - (void)didMoveToWindow
@@ -97,32 +102,43 @@ namespace react = facebook::react;
97
102
 
98
103
  #pragma mark - Layout
99
104
 
100
- ///
101
- /// This override **should be considered as a workaround** for which I made some assumptions:
102
- /// 1. All parents of views with associated `UINavigationController` should have the same width as the SplitView column
103
- /// 2. I'm greedily aligning all native components which are extending `UINavigationController` - is covers both old and
104
- /// new stack implementations, however, it will have an impact on any other native component which will be extending
105
- /// from the same class.
106
- ///
105
+ /**
106
+ * This override **should be considered as a workaround** for which I made some assumptions:
107
+ * 1. All parents of views with associated `UINavigationController` should have the same width as the SplitView column
108
+ * 2. I'm greedily aligning all native components which are extending `UINavigationController` - is covers both old and
109
+ * new stack implementations, however, it will have an impact on any other native component which will be extending
110
+ * from the same class.
111
+ */
107
112
  - (void)layoutSubviews
108
113
  {
109
114
  [super layoutSubviews];
110
115
  }
111
116
 
112
- #pragma mark - ShadowTreeState
117
+ #pragma mark - RNSSplitScreenControllerDelegate
118
+
119
+ - (void)splitScreenController:(RNSSplitScreenController *)controller didChangeColumnFrame:(CGRect)frame
120
+ {
121
+ [_shadowStateProxy updateShadowStateWithFrame:frame];
122
+ }
113
123
 
114
- - (nonnull RNSSplitScreenShadowStateProxy *)shadowStateProxy
124
+ - (void)splitScreenControllerWillAppear:(RNSSplitScreenController *)controller
115
125
  {
116
- RCTAssert(_shadowStateProxy != nil, @"[RNScreens] Attempt to access uninitialized _shadowStateProxy");
117
- return _shadowStateProxy;
126
+ [_reactEventEmitter emitOnWillAppear];
118
127
  }
119
128
 
120
- #pragma mark - Events
129
+ - (void)splitScreenControllerDidAppear:(RNSSplitScreenController *)controller
130
+ {
131
+ [_reactEventEmitter emitOnDidAppear];
132
+ }
133
+
134
+ - (void)splitScreenControllerWillDisappear:(RNSSplitScreenController *)controller
135
+ {
136
+ [_reactEventEmitter emitOnWillDisappear];
137
+ }
121
138
 
122
- - (nonnull RNSSplitScreenComponentEventEmitter *)reactEventEmitter
139
+ - (void)splitScreenControllerDidDisappear:(RNSSplitScreenController *)controller
123
140
  {
124
- RCTAssert(_reactEventEmitter != nil, @"[RNScreens] Attempt to access uninitialized _reactEventEmitter");
125
- return _reactEventEmitter;
141
+ [_reactEventEmitter emitOnDidDisappear];
126
142
  }
127
143
 
128
144
  #pragma mark - RNSSafeAreaProviding
@@ -0,0 +1,68 @@
1
+ #pragma once
2
+
3
+ #import <UIKit/UIKit.h>
4
+
5
+ @class RNSSplitScreenComponentView;
6
+ @class RNSSplitScreenController;
7
+
8
+ NS_ASSUME_NONNULL_BEGIN
9
+
10
+ /**
11
+ * @protocol RNSSplitScreenControllerDelegate
12
+ * @brief Receives layout and lifecycle notifications of a Split column from its controller.
13
+ */
14
+ @protocol RNSSplitScreenControllerDelegate <NSObject>
15
+
16
+ /**
17
+ * @brief Called whenever the column frame changes.
18
+ *
19
+ * @param frame The column frame in the coordinate space of the SplitHost controller's view, or the column view frame
20
+ * as is when the column is presented outside the SplitHost subtree (e.g. the inspector as a modal).
21
+ */
22
+ - (void)splitScreenController:(RNSSplitScreenController *)controller didChangeColumnFrame:(CGRect)frame;
23
+
24
+ - (void)splitScreenControllerWillAppear:(RNSSplitScreenController *)controller;
25
+ - (void)splitScreenControllerDidAppear:(RNSSplitScreenController *)controller;
26
+ - (void)splitScreenControllerWillDisappear:(RNSSplitScreenController *)controller;
27
+ - (void)splitScreenControllerDidDisappear:(RNSSplitScreenController *)controller;
28
+
29
+ @end
30
+
31
+ /**
32
+ * @class RNSSplitScreenController
33
+ * @brief A UIViewController subclass that manages a Split column in a UISplitViewController.
34
+ *
35
+ * It observes the column layout and lifecycle and reports them to its delegate.
36
+ */
37
+ @interface RNSSplitScreenController : UIViewController
38
+
39
+ @property (nonatomic, weak, nullable) id<RNSSplitScreenControllerDelegate> delegate;
40
+
41
+ - (instancetype)initWithSplitScreenComponentView:(RNSSplitScreenComponentView *)splitScreenComponentView;
42
+
43
+ #pragma mark - Signals
44
+
45
+ /**
46
+ * @brief Determines if this controller is nested inside a SplitHost hierarchy.
47
+ *
48
+ * Used to differentiate between screens embedded in the native host and modal presentations.
49
+ *
50
+ * @return true if inside RNSSplitHostController, false otherwise.
51
+ */
52
+ - (BOOL)isInSplitHostSubtree;
53
+
54
+ - (void)setNeedsLifecycleStateUpdate;
55
+
56
+ #pragma mark - Layout
57
+
58
+ /**
59
+ * @brief Reports the column frame change after the Split repositioned its columns.
60
+ *
61
+ * @param splitViewController The UISplitViewController whose layout positioning changed, represented by
62
+ * RNSSplitHostController.
63
+ */
64
+ - (void)columnPositioningDidChangeInSplitViewController:(UISplitViewController *)splitViewController;
65
+
66
+ @end
67
+
68
+ NS_ASSUME_NONNULL_END
@@ -0,0 +1,113 @@
1
+ #import "RNSSplitScreenController.h"
2
+
3
+ #import <React/RCTAssert.h>
4
+ #import "RNSSplitHostComponentView.h"
5
+ #import "RNSSplitHostController.h"
6
+ #import "RNSSplitScreenComponentView.h"
7
+
8
+ @implementation RNSSplitScreenController {
9
+ RNSSplitScreenComponentView *_splitScreenComponentView;
10
+ }
11
+
12
+ - (instancetype)initWithSplitScreenComponentView:(RNSSplitScreenComponentView *)splitScreenComponentView
13
+ {
14
+ if (self = [super init]) {
15
+ _splitScreenComponentView = splitScreenComponentView;
16
+ }
17
+
18
+ return self;
19
+ }
20
+
21
+ /**
22
+ * @brief Searching for the SplitHost controller
23
+ *
24
+ * It checks whether the parent controller is our host controller.
25
+ * If we're outside the structure, e. g. for inspector represented as a modal,
26
+ * we're searching for that controller using a reference that Screen keeps for Host component view.
27
+ *
28
+ * @return If found - a RNSSplitHostController instance, otherwise nil.
29
+ */
30
+ - (nullable RNSSplitHostController *)findSplitHostController
31
+ {
32
+ if ([self.splitViewController isKindOfClass:RNSSplitHostController.class]) {
33
+ return (RNSSplitHostController *)self.splitViewController;
34
+ }
35
+
36
+ RNSSplitHostComponentView *splitHost = _splitScreenComponentView.splitHost;
37
+ if (splitHost != nil) {
38
+ return splitHost.splitHostController;
39
+ }
40
+
41
+ return nil;
42
+ }
43
+
44
+ - (BOOL)isInSplitHostSubtree
45
+ {
46
+ return [self.splitViewController isKindOfClass:RNSSplitHostController.class];
47
+ }
48
+
49
+ #pragma mark - Signals
50
+
51
+ - (void)setNeedsLifecycleStateUpdate
52
+ {
53
+ [[self findSplitHostController] setNeedsUpdateOfChildViewControllers];
54
+ }
55
+
56
+ #pragma mark - Layout
57
+
58
+ - (void)viewDidLayoutSubviews
59
+ {
60
+ [super viewDidLayoutSubviews];
61
+
62
+ // For modals, which are presented outside the SplitHost subtree (and RN hierarchy),
63
+ // we're attaching our touch handler and we don't need to apply any offset corrections,
64
+ // because it's positioned relatively to our RNSSplitScreenComponentView
65
+ if (![self isInSplitHostSubtree]) {
66
+ [_delegate splitScreenController:self didChangeColumnFrame:self.view.frame];
67
+ return;
68
+ }
69
+
70
+ UIView *ancestorView = [self findSplitHostController].view;
71
+ RCTAssert(ancestorView != nil, @"[RNScreens] Expected to find RNSSplitHost component for RNSSplitScreen component");
72
+
73
+ [self reportColumnFrameInContextOfView:ancestorView];
74
+ }
75
+
76
+ - (void)columnPositioningDidChangeInSplitViewController:(UISplitViewController *)splitViewController
77
+ {
78
+ [self reportColumnFrameInContextOfView:splitViewController.view];
79
+ }
80
+
81
+ - (void)reportColumnFrameInContextOfView:(UIView *)ancestorView
82
+ {
83
+ CGRect frame = [self.view convertRect:self.view.frame toView:ancestorView];
84
+ [_delegate splitScreenController:self didChangeColumnFrame:frame];
85
+ }
86
+
87
+ #pragma mark - Events
88
+
89
+ - (void)viewWillAppear:(BOOL)animated
90
+ {
91
+ [super viewWillAppear:animated];
92
+ [_delegate splitScreenControllerWillAppear:self];
93
+ }
94
+
95
+ - (void)viewDidAppear:(BOOL)animated
96
+ {
97
+ [super viewDidAppear:animated];
98
+ [_delegate splitScreenControllerDidAppear:self];
99
+ }
100
+
101
+ - (void)viewWillDisappear:(BOOL)animated
102
+ {
103
+ [super viewWillDisappear:animated];
104
+ [_delegate splitScreenControllerWillDisappear:self];
105
+ }
106
+
107
+ - (void)viewDidDisappear:(BOOL)animated
108
+ {
109
+ [super viewDidDisappear:animated];
110
+ [_delegate splitScreenControllerDidDisappear:self];
111
+ }
112
+
113
+ @end
@@ -1,6 +1,7 @@
1
1
  #pragma once
2
2
 
3
3
  #import <Foundation/Foundation.h>
4
+ #import <UIKit/UIKit.h>
4
5
 
5
6
  #if defined(__cplusplus)
6
7
  #import <react/renderer/core/State.h>
@@ -10,8 +11,6 @@ namespace react = facebook::react;
10
11
 
11
12
  NS_ASSUME_NONNULL_BEGIN
12
13
 
13
- @class RNSSplitScreenComponentView;
14
-
15
14
  /**
16
15
  * @class RNSSplitScreenShadowStateProxy
17
16
  * @brief Manages communication between native UIView layout and associated React Native ShadowNode state.
@@ -21,44 +20,6 @@ NS_ASSUME_NONNULL_BEGIN
21
20
  */
22
21
  @interface RNSSplitScreenShadowStateProxy : NSObject
23
22
 
24
- /**
25
- * @brief Triggers a shadow state update for the given SplitScreen component.
26
- *
27
- * Internally uses the component’s frame in UIWindow coordinates to update the Shadow Tree state.
28
- *
29
- * @param screenComponentView An instance of RNSSplitScreenComponentView whose state should be updated.
30
- */
31
- - (void)updateShadowStateOfComponent:(RNSSplitScreenComponentView *)screenComponentView;
32
-
33
- /**
34
- * @brief Triggers a shadow state update for the given SplitScreen component in the context of a given ancestor
35
- * view.
36
- *
37
- * Converts the split view screen's local frame to coordinates of the specified ancestor view
38
- * before applying the update to the Shadow Tree. If the ancestor haven't been defined frame is calculated relatively to
39
- * the UIWindow.
40
- *
41
- * @param screenComponentView An instance of RNSSplitScreenComponentView whose state should be updated.
42
- * @param ancestorView An optional UIView in whose coordinate space the frame should be computed.
43
- */
44
- - (void)updateShadowStateOfComponent:(RNSSplitScreenComponentView *)screenComponentView
45
- inContextOfAncestorView:(UIView *_Nullable)ancestorView;
46
-
47
- /**
48
- * @brief Send an update to ShadowNode state with given frame if needed.
49
- *
50
- * Converts the frame to coordinates of the specified ancestor view,
51
- * before applying the update to the Shadow Tree.
52
- *
53
- * @param screenComponentView an instance of RNSSplitScreenComponentView whose state should be updated,
54
- * @param frame frame to update the shadow state with; it must be in coordinate system of `screenComponentView`,
55
- * @param ancestorView coordinate-system provider view, relative to which the frame should be converted before sending
56
- * the update.
57
- */
58
- - (void)updateShadowStateOfComponent:(RNSSplitScreenComponentView *)screenComponentView
59
- withFrame:(CGRect)frame
60
- inContextOfAncestorView:(nonnull UIView *)ancestorView;
61
-
62
23
  /**
63
24
  * @brief Send an update to ShadowNode state with given layout metrics.
64
25
  *
@@ -1,9 +1,8 @@
1
1
  #import "RNSSplitScreenShadowStateProxy.h"
2
- #import "RNSSplitScreenComponentView.h"
3
2
 
4
3
  #import <React/RCTAssert.h>
5
4
  #import <React/RCTConversions.h>
6
- #import <rnscreens/RNSSplitScreenShadowNode.h>
5
+ #import <react/renderer/components/rnscreens/RNSSplitScreenShadowNode.h>
7
6
 
8
7
  namespace react = facebook::react;
9
8
 
@@ -21,21 +20,6 @@ namespace react = facebook::react;
21
20
  return self;
22
21
  }
23
22
 
24
- - (void)updateShadowStateOfComponent:(RNSSplitScreenComponentView *)screenComponentView
25
- {
26
- [self updateShadowStateOfComponent:screenComponentView inContextOfAncestorView:nil];
27
- }
28
-
29
- - (void)updateShadowStateOfComponent:(RNSSplitScreenComponentView *)screenComponentView
30
- inContextOfAncestorView:(UIView *_Nullable)ancestorView
31
- {
32
- CGRect frame = screenComponentView.frame;
33
- if (ancestorView != nil) {
34
- frame = [screenComponentView convertRect:frame toView:ancestorView];
35
- }
36
- [self updateShadowStateWithFrame:frame];
37
- }
38
-
39
23
  - (void)updateShadowStateWithFrame:(CGRect)frame
40
24
  {
41
25
  if (_state == nullptr) {
@@ -50,15 +34,6 @@ namespace react = facebook::react;
50
34
  }
51
35
  }
52
36
 
53
- - (void)updateShadowStateOfComponent:(RNSSplitScreenComponentView *)screenComponentView
54
- withFrame:(CGRect)frame
55
- inContextOfAncestorView:(nonnull UIView *)ancestorView
56
- {
57
- RCTAssert(ancestorView != nil, @"[RNScreens] ancestorView must not be nil");
58
- CGRect convertedFrame = [screenComponentView convertRect:frame toView:ancestorView];
59
- [self updateShadowStateWithFrame:convertedFrame];
60
- }
61
-
62
37
  - (void)updateState:(react::State::Shared const &)state oldState:(react::State::Shared const &)oldState
63
38
  {
64
39
  _state = std::static_pointer_cast<const react::RNSSplitScreenShadowNode::ConcreteState>(state);
@@ -0,0 +1,56 @@
1
+ #pragma once
2
+
3
+ #if defined(__cplusplus)
4
+
5
+ #import <UIKit/UIKit.h>
6
+ #import <react/renderer/components/rnscreens/Props.h>
7
+ #import <optional>
8
+ #import <string>
9
+ #import "RNSEnums.h"
10
+
11
+ namespace rnscreens::conversion {
12
+
13
+ namespace react = facebook::react;
14
+
15
+ #pragma mark SplitHost props
16
+
17
+ UISplitViewControllerSplitBehavior SplitViewPreferredSplitBehaviorFromHostProp(
18
+ react::RNSSplitHostPreferredSplitBehavior behavior);
19
+
20
+ UISplitViewControllerPrimaryEdge SplitViewPrimaryEdgeFromHostProp(
21
+ react::RNSSplitHostPrimaryEdge primaryEdge);
22
+
23
+ UISplitViewControllerDisplayMode SplitViewPreferredDisplayModeFromHostProp(
24
+ react::RNSSplitHostPreferredDisplayMode displayMode);
25
+
26
+ #if !TARGET_OS_TV
27
+ UISplitViewControllerBackgroundStyle
28
+ SplitViewPrimaryBackgroundStyleFromHostProp(
29
+ react::RNSSplitHostPrimaryBackgroundStyle primaryBackgroundStyle);
30
+ #endif // !TARGET_OS_TV
31
+
32
+ UISplitViewControllerDisplayModeButtonVisibility
33
+ SplitViewDisplayModeButtonVisibilityFromHostProp(
34
+ react::RNSSplitHostDisplayModeButtonVisibility displayModeButtonVisibility);
35
+
36
+ std::string UISplitViewControllerDisplayModeToString(
37
+ UISplitViewControllerDisplayMode displayMode);
38
+
39
+ std::optional<UISplitViewControllerColumn>
40
+ SplitViewTopColumnForCollapsingFromHostProp(
41
+ react::RNSSplitHostTopColumnForCollapsing topColumnForCollapsing);
42
+
43
+ RNSOrientation RNSOrientationFromRNSSplitHostOrientation(
44
+ react::RNSSplitHostOrientation orientation);
45
+
46
+ UIUserInterfaceStyle UIUserInterfaceStyleFromHostProp(
47
+ react::RNSSplitHostColorScheme colorScheme);
48
+
49
+ #pragma mark SplitScreen props
50
+
51
+ RNSSplitScreenColumnType RNSSplitScreenColumnTypeFromScreenProp(
52
+ react::RNSSplitScreenColumnType columnType);
53
+
54
+ }; // namespace rnscreens::conversion
55
+
56
+ #endif // defined(__cplusplus)
@@ -1,7 +1,10 @@
1
- #import "RNSConversions.h"
1
+ #import "RNSConversions-SplitView.h"
2
+ #import <React/RCTLog.h>
2
3
 
3
4
  namespace rnscreens::conversion {
4
5
 
6
+ namespace react = facebook::react;
7
+
5
8
  #pragma mark SplitHost props
6
9
 
7
10
  UISplitViewControllerSplitBehavior SplitViewPreferredSplitBehaviorFromHostProp(
@@ -0,0 +1,32 @@
1
+ #pragma once
2
+
3
+ #if defined(__cplusplus)
4
+
5
+ #import <react/renderer/components/rnscreens/Props.h>
6
+ #import "RNSHeaderItemPlacement.h"
7
+ #import "RNSHeaderItemSpacerPlacement.h"
8
+ #import "RNSStackScreenComponentView.h"
9
+
10
+ namespace rnscreens::conversion {
11
+
12
+ namespace react = facebook::react;
13
+
14
+ RNSStackScreenActivityMode
15
+ RNSStackScreenActivityModeFromReactRNSStackScreenActivityMode(
16
+ react::RNSStackScreenActivityMode mode);
17
+
18
+ RNSHeaderItemPlacement
19
+ RNSHeaderItemPlacementFromReactRNSStackHeaderItemIOSPlacement(
20
+ react::RNSStackHeaderItemIOSPlacement placement);
21
+
22
+ RNSHeaderItemSpacerPlacement
23
+ RNSHeaderItemSpacerPlacementFromReactRNSStackHeaderItemSpacerIOSPlacement(
24
+ react::RNSStackHeaderItemSpacerIOSPlacement placement);
25
+
26
+ UINavigationItemBackButtonDisplayMode
27
+ UINavigationItemBackButtonDisplayModeFromReactRNSStackHeaderConfigIOSBackButtonDisplayMode(
28
+ react::RNSStackHeaderConfigIOSBackButtonDisplayMode displayMode);
29
+
30
+ }; // namespace rnscreens::conversion
31
+
32
+ #endif // defined(__cplusplus)
@@ -0,0 +1,55 @@
1
+ #import "RNSConversions-Stack.h"
2
+
3
+ namespace rnscreens::conversion {
4
+
5
+ namespace react = facebook::react;
6
+
7
+ RNSStackScreenActivityMode RNSStackScreenActivityModeFromReactRNSStackScreenActivityMode(
8
+ react::RNSStackScreenActivityMode mode)
9
+ {
10
+ return static_cast<RNSStackScreenActivityMode>(mode);
11
+ }
12
+
13
+ RNSHeaderItemPlacement RNSHeaderItemPlacementFromReactRNSStackHeaderItemIOSPlacement(
14
+ react::RNSStackHeaderItemIOSPlacement placement)
15
+ {
16
+ switch (placement) {
17
+ case react::RNSStackHeaderItemIOSPlacement::Leading:
18
+ return RNSHeaderItemPlacementLeading;
19
+ case react::RNSStackHeaderItemIOSPlacement::Trailing:
20
+ return RNSHeaderItemPlacementTrailing;
21
+ case react::RNSStackHeaderItemIOSPlacement::Title:
22
+ return RNSHeaderItemPlacementTitle;
23
+ case react::RNSStackHeaderItemIOSPlacement::Subtitle:
24
+ return RNSHeaderItemPlacementSubtitle;
25
+ case react::RNSStackHeaderItemIOSPlacement::LargeSubtitle:
26
+ return RNSHeaderItemPlacementLargeSubtitle;
27
+ }
28
+ }
29
+
30
+ RNSHeaderItemSpacerPlacement RNSHeaderItemSpacerPlacementFromReactRNSStackHeaderItemSpacerIOSPlacement(
31
+ react::RNSStackHeaderItemSpacerIOSPlacement placement)
32
+ {
33
+ switch (placement) {
34
+ case react::RNSStackHeaderItemSpacerIOSPlacement::Leading:
35
+ return RNSHeaderItemSpacerPlacementLeading;
36
+ case react::RNSStackHeaderItemSpacerIOSPlacement::Trailing:
37
+ return RNSHeaderItemSpacerPlacementTrailing;
38
+ }
39
+ }
40
+
41
+ UINavigationItemBackButtonDisplayMode
42
+ UINavigationItemBackButtonDisplayModeFromReactRNSStackHeaderConfigIOSBackButtonDisplayMode(
43
+ react::RNSStackHeaderConfigIOSBackButtonDisplayMode displayMode)
44
+ {
45
+ switch (displayMode) {
46
+ case react::RNSStackHeaderConfigIOSBackButtonDisplayMode::Default:
47
+ return UINavigationItemBackButtonDisplayModeDefault;
48
+ case react::RNSStackHeaderConfigIOSBackButtonDisplayMode::Generic:
49
+ return UINavigationItemBackButtonDisplayModeGeneric;
50
+ case react::RNSStackHeaderConfigIOSBackButtonDisplayMode::Minimal:
51
+ return UINavigationItemBackButtonDisplayModeMinimal;
52
+ }
53
+ }
54
+
55
+ }; // namespace rnscreens::conversion