react-native-screens 5.0.0-alpha.2 → 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 (237) hide show
  1. package/Package.swift +87 -0
  2. package/README.md +0 -7
  3. package/android/src/main/cpp/NativeProxy.cpp +30 -6
  4. package/android/src/main/cpp/NativeProxy.h +7 -1
  5. package/android/src/main/java/com/swmansion/rnscreens/common/container/Container.kt +8 -0
  6. package/android/src/main/java/com/swmansion/rnscreens/common/container/ContainerItem.kt +13 -1
  7. package/android/src/main/java/com/swmansion/rnscreens/common/text/ReactTextAppearance.kt +62 -0
  8. package/android/src/main/java/com/swmansion/rnscreens/common/text/TextAppearance.kt +20 -0
  9. package/android/src/main/java/com/swmansion/rnscreens/common/text/TextAppearanceDefaults.kt +65 -0
  10. package/android/src/main/java/com/swmansion/rnscreens/helpers/PropIconResolver.kt +17 -23
  11. package/android/src/main/java/com/swmansion/rnscreens/legacy/Screen.kt +3 -1
  12. package/android/src/main/java/com/swmansion/rnscreens/legacy/ScreenStack.kt +2 -0
  13. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/coordinator/FormSheetBehaviorController.kt +49 -18
  14. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/coordinator/FormSheetDimensionsCoordinator.kt +65 -40
  15. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/coordinator/FormSheetKeyboardCoordinator.kt +101 -0
  16. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/coordinator/FormSheetNativeDismissCoordinator.kt +0 -6
  17. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/core/FormSheetAvailableHeightProvider.kt +44 -0
  18. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/core/FormSheetDialog.kt +35 -3
  19. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/core/FormSheetDialogManager.kt +33 -106
  20. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/interfaces/FormSheetDialogEventEmitter.kt +2 -0
  21. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/model/FormSheetDetents.kt +61 -15
  22. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/presentation/FormSheetAnimatorFactory.kt +8 -9
  23. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/presentation/FormSheetDimmingManager.kt +115 -0
  24. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/presentation/FormSheetDismissalOrigin.kt +22 -0
  25. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/presentation/FormSheetPresentation.kt +173 -0
  26. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/presentation/FormSheetPresentationManager.kt +141 -49
  27. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/presentation/FormSheetPresentationState.kt +1 -1
  28. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/presentation/FormSheetStackRegistry.kt +28 -0
  29. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/react/event/FormSheetDismissEvent.kt +29 -0
  30. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/react/host/FormSheetHostEventEmitter.kt +7 -0
  31. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/react/host/FormSheetHostViewManager.kt +2 -0
  32. package/android/src/main/java/com/swmansion/rnscreens/stack/header/StackHeaderApplicator.kt +369 -58
  33. package/android/src/main/java/com/swmansion/rnscreens/stack/header/StackHeaderBackPressHandler.kt +11 -0
  34. package/android/src/main/java/com/swmansion/rnscreens/stack/header/StackHeaderCoordinatorLayout.kt +143 -98
  35. package/android/src/main/java/com/swmansion/rnscreens/stack/header/appbar/StackHeaderAppBarLayout.kt +155 -23
  36. package/android/src/main/java/com/swmansion/rnscreens/stack/header/appbar/StackHeaderContentScrimDrawable.kt +36 -0
  37. package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderCollapsedTitleGravityMode.kt +6 -0
  38. package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderConfig.kt +170 -167
  39. package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderConfigViewManager.kt +385 -12
  40. package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderConfigurationObserver.kt +0 -4
  41. package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderConfigurationProviding.kt +32 -3
  42. package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderDelegate.kt +0 -7
  43. package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderInvalidationFlags.kt +7 -2
  44. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/StackHeaderToolbarMenuApplicator.kt +27 -280
  45. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/StackHeaderToolbarMenuController.kt +448 -0
  46. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/StackHeaderToolbarMenuDelegate.kt +10 -0
  47. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/StackHeaderToolbarMenuMapper.kt +28 -20
  48. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/model/StackHeaderToolbarMenuConfig.kt +3 -55
  49. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/model/StackHeaderToolbarMenuGroupMetadata.kt +1 -10
  50. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/model/StackHeaderToolbarMenuItemConfig.kt +1 -3
  51. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/model/StackHeaderToolbarMenuModel.kt +180 -0
  52. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/update/StackHeaderToolbarMenuElementOptions.kt +57 -6
  53. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/update/StackHeaderToolbarMenuElementRawUpdate.kt +3 -1
  54. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/update/StackHeaderToolbarMenuElementUpdate.kt +1 -0
  55. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/update/StackHeaderToolbarMenuIconResolver.kt +4 -3
  56. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/update/StackHeaderToolbarMenuUpdateQueue.kt +23 -9
  57. package/android/src/main/java/com/swmansion/rnscreens/stack/host/StackContainer.kt +103 -3
  58. package/android/src/main/java/com/swmansion/rnscreens/stack/host/StackHost.kt +13 -0
  59. package/android/src/main/java/com/swmansion/rnscreens/stack/host/StackHostViewManager.kt +14 -0
  60. package/android/src/main/java/com/swmansion/rnscreens/stack/screen/StackScreen.kt +4 -0
  61. package/android/src/main/java/com/swmansion/rnscreens/stack/screen/StackScreenFragment.kt +20 -1
  62. package/android/src/main/java/com/swmansion/rnscreens/stack/screen/StackScreenFragmentDelegate.kt +12 -0
  63. package/android/src/main/java/com/swmansion/rnscreens/tabs/appearance/TabsAppearanceCoordinator.kt +2 -4
  64. package/android/src/main/java/com/swmansion/rnscreens/tabs/container/MenuHelpers.kt +5 -23
  65. package/android/src/main/java/com/swmansion/rnscreens/tabs/container/TabsContainer.kt +46 -25
  66. package/android/src/main/java/com/swmansion/rnscreens/tabs/host/TabsHost.kt +10 -0
  67. package/android/src/main/java/com/swmansion/rnscreens/tabs/host/TabsHostA11yCoordinator.kt +23 -2
  68. package/android/src/main/java/com/swmansion/rnscreens/tabs/screen/TabsScreen.kt +17 -0
  69. package/android/src/main/java/com/swmansion/rnscreens/tabs/screen/TabsScreenFragment.kt +3 -0
  70. package/android/src/main/java/com/swmansion/rnscreens/utils/DimensionUtils.kt +7 -0
  71. package/android/src/main/java/com/swmansion/rnscreens/utils/StyleUtils.kt +22 -0
  72. package/android/src/main/res/base/layout/rns_collapsing_toolbar_large_available_space.xml +8 -0
  73. package/android/src/main/res/base/layout/rns_collapsing_toolbar_large_entire_space.xml +8 -0
  74. package/android/src/main/res/base/layout/rns_collapsing_toolbar_medium_available_space.xml +8 -0
  75. package/android/src/main/res/base/layout/rns_collapsing_toolbar_medium_entire_space.xml +8 -0
  76. package/cpp/legacy/RNSScreenRemovalListener.cpp +31 -1
  77. package/cpp/legacy/RNSScreenRemovalListener.h +18 -3
  78. package/ios/RNSEnums.h +2 -0
  79. package/ios/conversion/RNSConversions.h +7 -108
  80. package/ios/legacy/RNSFullWindowOverlay.mm +1 -1
  81. package/ios/legacy/RNSModalScreen.mm +1 -1
  82. package/ios/legacy/RNSScreen.mm +8 -19
  83. package/ios/legacy/RNSScreenStackHeaderConfig.mm +3 -1
  84. package/ios/legacy/RNSScreenStackHeaderSubview.mm +1 -1
  85. package/ios/legacy/RNSScreenWindowTraits.mm +5 -13
  86. package/ios/modals/form-sheet/RNSFormSheetConfigurationApplicator.h +1 -3
  87. package/ios/modals/form-sheet/RNSFormSheetConfigurationApplicator.mm +11 -22
  88. package/ios/modals/form-sheet/RNSFormSheetContentController.h +1 -1
  89. package/ios/modals/form-sheet/RNSFormSheetContentController.mm +7 -18
  90. package/ios/modals/form-sheet/RNSFormSheetHostComponentView.mm +4 -4
  91. package/ios/modals/form-sheet/RNSFormSheetHostShadowStateProxy.mm +2 -2
  92. package/ios/modals/form-sheet/RNSFormSheetUpdateFlags.h +3 -0
  93. package/ios/safe-area/RNSSafeAreaViewComponentView.mm +2 -2
  94. package/ios/{conversion → scroll-view-marker/conversion}/RNSConversions-ScrollViewMarker.mm +2 -3
  95. package/ios/split/RNSSplitAppearanceApplicator.h +4 -4
  96. package/ios/split/RNSSplitAppearanceApplicator.mm +53 -56
  97. package/ios/split/RNSSplitHostComponentEventEmitter.h +1 -0
  98. package/ios/split/RNSSplitHostComponentEventEmitter.mm +1 -1
  99. package/ios/split/RNSSplitHostComponentView.h +5 -15
  100. package/ios/split/RNSSplitHostComponentView.mm +55 -6
  101. package/ios/split/RNSSplitHostController.h +25 -6
  102. package/ios/split/RNSSplitHostController.mm +24 -92
  103. package/ios/split/RNSSplitHostProviders.h +67 -0
  104. package/ios/split/RNSSplitScreenComponentView.h +0 -39
  105. package/ios/split/RNSSplitScreenComponentView.mm +27 -10
  106. package/ios/split/RNSSplitScreenController.h +26 -3
  107. package/ios/split/RNSSplitScreenController.mm +13 -30
  108. package/ios/split/RNSSplitScreenShadowStateProxy.h +1 -40
  109. package/ios/split/RNSSplitScreenShadowStateProxy.mm +1 -26
  110. package/ios/split/conversion/RNSConversions-SplitView.h +56 -0
  111. package/ios/{conversion → split/conversion}/RNSConversions-SplitView.mm +4 -1
  112. package/ios/stack/conversion/RNSConversions-Stack.h +32 -0
  113. package/ios/stack/conversion/RNSConversions-Stack.mm +55 -0
  114. package/ios/stack/header/RNSStackHeaderAppearanceMapper.h +26 -0
  115. package/ios/stack/header/RNSStackHeaderAppearanceMapper.mm +88 -0
  116. package/ios/stack/header/RNSStackHeaderConfigComponentView.h +10 -1
  117. package/ios/stack/header/RNSStackHeaderConfigComponentView.mm +67 -35
  118. package/ios/stack/header/RNSStackHeaderConfigDataProviding.h +6 -0
  119. package/ios/stack/header/RNSStackHeaderConfigShadowStateProxy.mm +1 -1
  120. package/ios/stack/header/RNSStackHeaderIconResolver.mm +7 -0
  121. package/ios/stack/header/RNSStackHeaderItemComponentView.h +3 -1
  122. package/ios/stack/header/RNSStackHeaderItemComponentView.mm +15 -2
  123. package/ios/stack/header/RNSStackHeaderItemDataProviding.h +2 -0
  124. package/ios/stack/header/RNSStackHeaderItemShadowStateProxy.mm +1 -1
  125. package/ios/stack/header/RNSStackHeaderItemSpacerComponentView.mm +2 -1
  126. package/ios/stack/header/RNSStackHeaderMenuMapper.mm +4 -0
  127. package/ios/stack/host/RNSStackNavigationBar.h +25 -0
  128. package/ios/stack/host/RNSStackNavigationBar.mm +80 -0
  129. package/ios/stack/host/RNSStackNavigationBarCoordinator.h +8 -0
  130. package/ios/stack/host/RNSStackNavigationBarCoordinator.mm +11 -0
  131. package/ios/stack/host/RNSStackNavigationController.mm +13 -5
  132. package/ios/stack/host/RNSStackOperation.h +0 -2
  133. package/ios/stack/screen/RNSStackScreenComponentView.mm +9 -2
  134. package/ios/stack/screen/RNSStackScreenController.mm +12 -0
  135. package/ios/stack/screen/RNSStackScreenHeaderCoordinator.h +8 -0
  136. package/ios/stack/screen/RNSStackScreenHeaderCoordinator.mm +98 -16
  137. package/ios/tabs/RNSTabBarAppearanceCoordinator.mm +40 -9
  138. package/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryComponentView.h +1 -1
  139. package/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryComponentView.mm +1 -1
  140. package/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryContentComponentView.mm +1 -1
  141. package/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryEventEmitter.mm +1 -1
  142. package/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryShadowStateProxy.mm +1 -1
  143. package/ios/tabs/conversion/RNSConversions-Tabs.h +78 -0
  144. package/ios/{conversion → tabs/conversion}/RNSConversions-Tabs.mm +8 -71
  145. package/ios/tabs/extensions/RNSTabsHostComponentView+RNSImageLoader.h +1 -1
  146. package/ios/tabs/host/RNSTabsHostComponentView.h +2 -0
  147. package/ios/tabs/host/RNSTabsHostComponentView.mm +10 -3
  148. package/ios/tabs/host/RNSTabsHostEventEmitter.mm +1 -1
  149. package/ios/tabs/screen/RNSTabsScreenComponentView.mm +20 -5
  150. package/ios/utils/RNSDefines.h +3 -0
  151. package/lib/commonjs/components/stack/header/StackHeaderConfig.android.js +34 -19
  152. package/lib/commonjs/components/stack/header/StackHeaderConfig.android.js.map +1 -1
  153. package/lib/commonjs/components/stack/header/StackHeaderConfig.ios.js +33 -1
  154. package/lib/commonjs/components/stack/header/StackHeaderConfig.ios.js.map +1 -1
  155. package/lib/commonjs/components/stack/host/StackHost.js +9 -6
  156. package/lib/commonjs/components/stack/host/StackHost.js.map +1 -1
  157. package/lib/commonjs/components/stack/index.js.map +1 -1
  158. package/lib/commonjs/components/tabs/host/TabsHost.ios.js +1 -0
  159. package/lib/commonjs/components/tabs/host/TabsHost.ios.js.map +1 -1
  160. package/lib/commonjs/fabric/stack/StackHeaderConfigAndroidNativeComponent.js.map +1 -1
  161. package/lib/commonjs/fabric/stack/StackHeaderConfigIOSNativeComponent.js.map +1 -1
  162. package/lib/commonjs/fabric/stack/StackHeaderItemIOSNativeComponent.js.map +1 -1
  163. package/lib/commonjs/fabric/stack/StackHostNativeComponent.js.map +1 -1
  164. package/lib/commonjs/fabric/tabs/TabsHostIOSNativeComponent.js.map +1 -1
  165. package/lib/module/components/stack/header/StackHeaderConfig.android.js +35 -20
  166. package/lib/module/components/stack/header/StackHeaderConfig.android.js.map +1 -1
  167. package/lib/module/components/stack/header/StackHeaderConfig.ios.js +34 -2
  168. package/lib/module/components/stack/header/StackHeaderConfig.ios.js.map +1 -1
  169. package/lib/module/components/stack/host/StackHost.js +9 -6
  170. package/lib/module/components/stack/host/StackHost.js.map +1 -1
  171. package/lib/module/components/stack/index.js.map +1 -1
  172. package/lib/module/components/tabs/host/TabsHost.ios.js +1 -0
  173. package/lib/module/components/tabs/host/TabsHost.ios.js.map +1 -1
  174. package/lib/module/fabric/stack/StackHeaderConfigAndroidNativeComponent.js.map +1 -1
  175. package/lib/module/fabric/stack/StackHeaderConfigIOSNativeComponent.js.map +1 -1
  176. package/lib/module/fabric/stack/StackHeaderItemIOSNativeComponent.js.map +1 -1
  177. package/lib/module/fabric/stack/StackHostNativeComponent.js.map +1 -1
  178. package/lib/module/fabric/tabs/TabsHostIOSNativeComponent.js.map +1 -1
  179. package/lib/typescript/components/modals/form-sheet/FormSheet.types.d.ts +1 -1
  180. package/lib/typescript/components/stack/header/StackHeaderConfig.android.d.ts.map +1 -1
  181. package/lib/typescript/components/stack/header/StackHeaderConfig.android.types.d.ts +616 -21
  182. package/lib/typescript/components/stack/header/StackHeaderConfig.android.types.d.ts.map +1 -1
  183. package/lib/typescript/components/stack/header/StackHeaderConfig.ios.d.ts.map +1 -1
  184. package/lib/typescript/components/stack/header/StackHeaderConfig.ios.types.d.ts +226 -2
  185. package/lib/typescript/components/stack/header/StackHeaderConfig.ios.types.d.ts.map +1 -1
  186. package/lib/typescript/components/stack/header/StackHeaderConfig.types.d.ts +2 -2
  187. package/lib/typescript/components/stack/header/ios/StackHeaderItem.ios.types.d.ts +2 -0
  188. package/lib/typescript/components/stack/header/ios/StackHeaderItem.ios.types.d.ts.map +1 -1
  189. package/lib/typescript/components/stack/host/StackHost.d.ts +1 -1
  190. package/lib/typescript/components/stack/host/StackHost.d.ts.map +1 -1
  191. package/lib/typescript/components/stack/host/StackHost.types.d.ts +24 -0
  192. package/lib/typescript/components/stack/host/StackHost.types.d.ts.map +1 -1
  193. package/lib/typescript/components/stack/index.d.ts +2 -2
  194. package/lib/typescript/components/stack/index.d.ts.map +1 -1
  195. package/lib/typescript/components/tabs/host/TabsHost.ios.d.ts.map +1 -1
  196. package/lib/typescript/components/tabs/host/TabsHost.ios.types.d.ts +16 -0
  197. package/lib/typescript/components/tabs/host/TabsHost.ios.types.d.ts.map +1 -1
  198. package/lib/typescript/components/tabs/host/TabsHost.types.d.ts +3 -0
  199. package/lib/typescript/components/tabs/host/TabsHost.types.d.ts.map +1 -1
  200. package/lib/typescript/fabric/stack/StackHeaderConfigAndroidNativeComponent.d.ts +52 -0
  201. package/lib/typescript/fabric/stack/StackHeaderConfigAndroidNativeComponent.d.ts.map +1 -1
  202. package/lib/typescript/fabric/stack/StackHeaderConfigIOSNativeComponent.d.ts +25 -1
  203. package/lib/typescript/fabric/stack/StackHeaderConfigIOSNativeComponent.d.ts.map +1 -1
  204. package/lib/typescript/fabric/stack/StackHeaderItemIOSNativeComponent.d.ts +2 -0
  205. package/lib/typescript/fabric/stack/StackHeaderItemIOSNativeComponent.d.ts.map +1 -1
  206. package/lib/typescript/fabric/stack/StackHostNativeComponent.d.ts +3 -1
  207. package/lib/typescript/fabric/stack/StackHostNativeComponent.d.ts.map +1 -1
  208. package/lib/typescript/fabric/tabs/TabsHostIOSNativeComponent.d.ts +1 -0
  209. package/lib/typescript/fabric/tabs/TabsHostIOSNativeComponent.d.ts.map +1 -1
  210. package/package.json +8 -7
  211. package/react-native.config.js +3 -0
  212. package/src/components/modals/form-sheet/FormSheet.types.ts +1 -1
  213. package/src/components/stack/header/StackHeaderConfig.android.tsx +48 -23
  214. package/src/components/stack/header/StackHeaderConfig.android.types.ts +637 -21
  215. package/src/components/stack/header/StackHeaderConfig.ios.tsx +45 -1
  216. package/src/components/stack/header/StackHeaderConfig.ios.types.ts +238 -2
  217. package/src/components/stack/header/StackHeaderConfig.types.ts +2 -2
  218. package/src/components/stack/header/ios/StackHeaderItem.ios.types.ts +2 -0
  219. package/src/components/stack/host/StackHost.tsx +4 -2
  220. package/src/components/stack/host/StackHost.types.ts +26 -0
  221. package/src/components/stack/index.ts +6 -1
  222. package/src/components/tabs/host/TabsHost.ios.tsx +1 -0
  223. package/src/components/tabs/host/TabsHost.ios.types.ts +16 -0
  224. package/src/components/tabs/host/TabsHost.types.ts +3 -0
  225. package/src/fabric/stack/StackHeaderConfigAndroidNativeComponent.ts +78 -0
  226. package/src/fabric/stack/StackHeaderConfigIOSNativeComponent.ts +32 -0
  227. package/src/fabric/stack/StackHeaderItemIOSNativeComponent.ts +2 -0
  228. package/src/fabric/stack/StackHostNativeComponent.ts +11 -2
  229. package/src/fabric/tabs/TabsHostIOSNativeComponent.ts +1 -0
  230. package/android/src/main/java/com/swmansion/rnscreens/modals/dimmingview/DimmingView.kt +0 -83
  231. package/android/src/main/java/com/swmansion/rnscreens/modals/dimmingview/DimmingViewManager.kt +0 -89
  232. package/android/src/main/java/com/swmansion/rnscreens/modals/dimmingview/DimmingViewPointerEvents.kt +0 -18
  233. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/StackHeaderToolbarMenuSelectionController.kt +0 -83
  234. package/ios/conversion/RNSConversions-Stack.h +0 -32
  235. package/ios/conversion/RNSConversions-Stack.mm +0 -41
  236. package/ios/conversion/always_false.h +0 -31
  237. /package/ios/{conversion → scroll-view-marker/conversion}/RNSConversions-ScrollViewMarker.h +0 -0
@@ -1,125 +1,24 @@
1
1
  #pragma once
2
2
 
3
3
  #if defined(__cplusplus)
4
- #import <React/RCTImageSource.h>
5
- #import <react/renderer/components/rnscreens/EventEmitters.h>
6
- #import <react/renderer/components/rnscreens/Props.h>
7
- #import <optional>
8
- #import "RNSDefines.h"
9
- #import "RNSEnums.h"
10
- #import "RNSTabsNavigationState.h"
11
-
4
+ #import <UIKit/UIKit.h>
12
5
  #import <folly/dynamic.h>
6
+ #import "RNSEnums.h"
13
7
 
14
8
  namespace rnscreens::conversion {
15
9
 
16
- namespace react = facebook::react;
17
-
18
10
  // copied from FollyConvert.mm
19
11
  id RNSConvertFollyDynamicToId(const folly::dynamic &dyn);
20
12
 
21
- std::optional<UIBlurEffectStyle> RNSMaybeUIBlurEffectStyleFromString(NSString *blurEffectString);
22
-
23
- UIBlurEffect *RNSUIBlurEffectFromString(NSString *blurEffectString);
24
-
25
- std::optional<UIBlurEffectStyle> RNSMaybeUIBlurEffectStyleFromRNSBlurEffectStyle(RNSBlurEffectStyle blurEffect);
26
-
27
- UIBlurEffect *RNSUIBlurEffectFromRNSBlurEffectStyle(RNSBlurEffectStyle blurEffect);
28
-
29
- #if RNS_IPHONE_OS_VERSION_AVAILABLE(26_0)
30
-
31
- API_AVAILABLE(ios(26.0))
32
- UITabBarMinimizeBehavior UITabBarMinimizeBehaviorFromRNSTabsHostTabBarMinimizeBehavior(
33
- react::RNSTabsHostIOSTabBarMinimizeBehavior tabBarMinimizeBehavior);
34
-
35
- #endif // Check for iOS >= 26
36
-
37
- #if RNS_IPHONE_OS_VERSION_AVAILABLE(18_0)
38
-
39
- API_AVAILABLE(ios(18.0))
40
- UITabBarControllerMode UITabBarControllerModeFromRNSTabsHostTabBarControllerMode(
41
- react::RNSTabsHostIOSTabBarControllerMode tabBarControllerMode);
42
-
43
- #endif // Check for iOS >= 18
44
-
45
- react::RNSTabsHostIOSEventEmitter::OnTabSelectionRejectedRejectionReason
46
- RNSOnTabSelectionRejectedRejectionReasonFromRNSTabsNavigationStateRejectionReason(
47
- RNSTabsNavigationStateRejectionReason reason);
48
-
49
- react::RNSTabsHostIOSEventEmitter::OnTabSelectedActionOrigin RNSOnTabSelectedActionOriginFromRNSTabsActionOrigin(
50
- RNSTabsActionOrigin actionOrigin);
51
-
52
- RNSTabsIconType RNSTabsIconTypeFromIcon(react::RNSTabsScreenIOSIconType iconType);
53
-
54
- RNSTabsScreenSystemItem RNSTabsScreenSystemItemFromReactRNSTabsScreenSystemItem(
55
- react::RNSTabsScreenIOSSystemItem systemItem);
56
-
57
- UITabBarSystemItem RNSTabsScreenSystemItemToUITabBarSystemItem(RNSTabsScreenSystemItem systemItem);
58
-
59
- #if RNS_TABS_BOTTOM_ACCESSORY_AVAILABLE
60
-
61
- API_AVAILABLE(ios(26.0))
62
- std::optional<react::RNSTabsBottomAccessoryEventEmitter::OnEnvironmentChangeEnvironment>
63
- RNSTabsBottomAccessoryOnEnvironmentChangePayloadFromUITabAccessoryEnvironment(UITabAccessoryEnvironment environment);
64
-
65
- RNSTabsBottomAccessoryEnvironment RNSTabsBottomAccessoryEnvironmentFromCppEquivalent(
66
- react::RNSTabsBottomAccessoryContentEnvironment environment);
67
-
68
- #endif // RNS_TABS_BOTTOM_ACCESSORY_AVAILABLE
69
-
70
- UIUserInterfaceStyle UIUserInterfaceStyleFromTabsScreenCppEquivalent(
71
- react::RNSTabsScreenIOSUserInterfaceStyle userInterfaceStyle);
72
-
73
- RCTImageSource *RCTImageSourceFromImageSourceAndIconType(const facebook::react::ImageSource *imageSource,
74
- RNSTabsIconType iconType);
75
-
76
- RNSOrientation RNSOrientationFromRNSTabsScreenOrientation(react::RNSTabsScreenIOSOrientation orientation);
77
-
78
13
  #if !TARGET_OS_TV
79
- UIInterfaceOrientationMask UIInterfaceOrientationMaskFromRNSOrientation(RNSOrientation orientation);
14
+ UIInterfaceOrientationMask UIInterfaceOrientationMaskFromRNSOrientation(
15
+ RNSOrientation orientation);
80
16
 
81
- RNSOrientation RNSOrientationFromUIInterfaceOrientationMask(UIInterfaceOrientationMask orientationMask);
17
+ // Currently unused in stack v5. Maybe remove after stopping support for v4.
18
+ RNSOrientation RNSOrientationFromUIInterfaceOrientationMask(
19
+ UIInterfaceOrientationMask orientationMask);
82
20
  #endif // !TARGET_OS_TV
83
21
 
84
- UITraitEnvironmentLayoutDirection UITraitEnvironmentLayoutDirectionFromTabsHostCppEquivalent(
85
- react::RNSTabsHostIOSLayoutDirection layoutDirection);
86
-
87
- UIUserInterfaceStyle UIUserInterfaceStyleFromHostProp(react::RNSTabsHostIOSColorScheme colorScheme);
88
-
89
- #pragma mark SplitHost props
90
-
91
- UISplitViewControllerSplitBehavior SplitViewPreferredSplitBehaviorFromHostProp(
92
- react::RNSSplitHostPreferredSplitBehavior behavior);
93
-
94
- UISplitViewControllerPrimaryEdge SplitViewPrimaryEdgeFromHostProp(react::RNSSplitHostPrimaryEdge primaryEdge);
95
-
96
- UISplitViewControllerDisplayMode SplitViewPreferredDisplayModeFromHostProp(
97
- react::RNSSplitHostPreferredDisplayMode displayMode);
98
-
99
- #if !TARGET_OS_TV
100
- UISplitViewControllerBackgroundStyle SplitViewPrimaryBackgroundStyleFromHostProp(
101
- react::RNSSplitHostPrimaryBackgroundStyle primaryBackgroundStyle);
102
- #endif // !TARGET_OS_TV
103
-
104
- UISplitViewControllerDisplayModeButtonVisibility SplitViewDisplayModeButtonVisibilityFromHostProp(
105
- react::RNSSplitHostDisplayModeButtonVisibility displayModeButtonVisibility);
106
-
107
- std::string UISplitViewControllerDisplayModeToString(UISplitViewControllerDisplayMode displayMode);
108
-
109
- std::optional<UISplitViewControllerColumn> SplitViewTopColumnForCollapsingFromHostProp(
110
- react::RNSSplitHostTopColumnForCollapsing topColumnForCollapsing);
111
-
112
- RNSOrientation RNSOrientationFromRNSSplitHostOrientation(react::RNSSplitHostOrientation orientation);
113
-
114
- UIUserInterfaceStyle UIUserInterfaceStyleFromHostProp(react::RNSSplitHostColorScheme colorScheme);
115
-
116
- #pragma mark SplitScreen props
117
-
118
- RNSSplitScreenColumnType RNSSplitScreenColumnTypeFromScreenProp(react::RNSSplitScreenColumnType columnType);
119
-
120
22
  }; // namespace rnscreens::conversion
121
23
 
122
- #import "RNSConversions-ScrollViewMarker.h"
123
- #import "RNSConversions-Stack.h"
124
-
125
24
  #endif // defined(__cplusplus)
@@ -9,7 +9,7 @@
9
9
  #import <react/renderer/components/rnscreens/ComponentDescriptors.h>
10
10
  #import <react/renderer/components/rnscreens/Props.h>
11
11
  #import <react/renderer/components/rnscreens/RCTComponentViewHelpers.h>
12
- #import <rnscreens/RNSFullWindowOverlayComponentDescriptor.h>
12
+ #import <react/renderer/components/rnscreens/legacy/RNSFullWindowOverlayComponentDescriptor.h>
13
13
 
14
14
  @implementation RNSFullWindowOverlayContainer
15
15
 
@@ -1,7 +1,7 @@
1
1
  #import "RNSModalScreen.h"
2
2
 
3
3
  #import <React/RCTFabricComponentsPlugins.h>
4
- #import <rnscreens/RNSModalScreenComponentDescriptor.h>
4
+ #import <react/renderer/components/rnscreens/legacy/RNSModalScreenComponentDescriptor.h>
5
5
 
6
6
  @implementation RNSModalScreen
7
7
 
@@ -14,7 +14,7 @@
14
14
  #import <react/renderer/components/rnscreens/EventEmitters.h>
15
15
  #import <react/renderer/components/rnscreens/Props.h>
16
16
  #import <react/renderer/components/rnscreens/RCTComponentViewHelpers.h>
17
- #import <rnscreens/RNSScreenComponentDescriptor.h>
17
+ #import <react/renderer/components/rnscreens/legacy/RNSScreenComponentDescriptor.h>
18
18
  #import "RNSConvert.h"
19
19
  #import "RNSHeaderHeightChangeEvent.h"
20
20
  #import "RNSScreenViewEvent.h"
@@ -178,6 +178,13 @@ RNS_IGNORE_SUPER_CALL_END
178
178
 
179
179
  - (void)applyFrameCorrectionForDescendantScrollView
180
180
  {
181
+ // A dismissed sheet can still receive a layout pass after React has deleted it. By then Fabric
182
+ // may have recycled its scroll view into the screen that replaced the sheet, and sizing that
183
+ // scroll view to the sheet would clip the new screen. See #4651.
184
+ if (_invalidated) {
185
+ return;
186
+ }
187
+
181
188
  RCTScrollViewComponentView *scrollView = [self tryFindDescendantScrollView];
182
189
  if (_sheetsScrollView != scrollView) {
183
190
  [_sheetsScrollView removeObserver:self forKeyPath:@"bounds" context:nil];
@@ -1582,24 +1589,6 @@ Class<RCTComponentViewProtocol> RNSScreenCls(void)
1582
1589
  return NO;
1583
1590
  }
1584
1591
 
1585
- - (CGSize)getStatusBarHeightIsModal:(BOOL)isModal
1586
- {
1587
- #if !TARGET_OS_TV && !TARGET_OS_VISION
1588
- CGSize fallbackStatusBarSize = [[UIApplication sharedApplication] statusBarFrame].size;
1589
-
1590
- CGSize primaryStatusBarSize = self.view.window.windowScene.statusBarManager.statusBarFrame.size;
1591
- if (primaryStatusBarSize.height == 0 || primaryStatusBarSize.width == 0) {
1592
- return fallbackStatusBarSize;
1593
- }
1594
-
1595
- return primaryStatusBarSize;
1596
-
1597
- #else
1598
- // TVOS does not have status bar.
1599
- return CGSizeMake(0, 0);
1600
- #endif // !TARGET_OS_TV
1601
- }
1602
-
1603
1592
  - (UINavigationController *)getVisibleNavigationControllerIsModal:(BOOL)isModal
1604
1593
  {
1605
1594
  UINavigationController *navctr = self.navigationController;
@@ -14,7 +14,7 @@
14
14
  #import <react/renderer/components/rnscreens/Props.h>
15
15
  #import <react/renderer/components/rnscreens/RCTComponentViewHelpers.h>
16
16
  #import <react/utils/ManagedObjectWrapper.h>
17
- #import <rnscreens/RNSScreenStackHeaderConfigComponentDescriptor.h>
17
+ #import <react/renderer/components/rnscreens/legacy/RNSScreenStackHeaderConfigComponentDescriptor.h>
18
18
  #import "RCTImageComponentView+RNSScreenStackHeaderConfig.h"
19
19
  #import "RNSBackBarButtonItem.h"
20
20
  #import "RNSBarButtonItem.h"
@@ -947,6 +947,7 @@ RNS_IGNORE_SUPER_CALL_END
947
947
  }
948
948
  }
949
949
 
950
+ #ifndef NDEBUG
950
951
  static RCTResizeMode resizeModeFromCppEquiv(react::ImageResizeMode resizeMode)
951
952
  {
952
953
  switch (resizeMode) {
@@ -965,6 +966,7 @@ static RCTResizeMode resizeModeFromCppEquiv(react::ImageResizeMode resizeMode)
965
966
  return RCTResizeModeStretch;
966
967
  }
967
968
  }
969
+ #endif // !NDEBUG
968
970
 
969
971
  + (RCTImageSource *)imageSourceFromImageView:(RCTImageComponentView *)view
970
972
  {
@@ -10,7 +10,7 @@
10
10
  #import <React/RCTConversions.h>
11
11
  #import <React/RCTFabricComponentsPlugins.h>
12
12
 
13
- #import <rnscreens/RNSScreenStackHeaderSubviewComponentDescriptor.h>
13
+ #import <react/renderer/components/rnscreens/legacy/RNSScreenStackHeaderSubviewComponentDescriptor.h>
14
14
 
15
15
  namespace react = facebook::react;
16
16
 
@@ -101,7 +101,8 @@
101
101
  {
102
102
  #if !TARGET_OS_TV && !TARGET_OS_VISION
103
103
  dispatch_async(dispatch_get_main_queue(), ^{
104
- UIInterfaceOrientationMask orientationMask = [RCTKeyWindow().rootViewController supportedInterfaceOrientations];
104
+ UIWindow *window = RCTKeyWindow();
105
+ UIInterfaceOrientationMask orientationMask = [window.rootViewController supportedInterfaceOrientations];
105
106
 
106
107
  UIInterfaceOrientation currentDeviceOrientation =
107
108
  [RNSScreenWindowTraits interfaceOrientationFromDeviceOrientation:[[UIDevice currentDevice] orientation]];
@@ -130,17 +131,7 @@
130
131
  if (newOrientation != UIInterfaceOrientationUnknown) {
131
132
  #if RNS_IPHONE_OS_VERSION_AVAILABLE(16_0)
132
133
  if (@available(iOS 16.0, *)) {
133
- NSArray *array = [[[UIApplication sharedApplication] connectedScenes] allObjects];
134
-
135
- // when an app supports multiple scenes (e.g. CarPlay), it is possible that
136
- // UIWindowScene is not the first scene, or it may not be present at all
137
- UIWindowScene *scene = nil;
138
- for (id connectedScene in array) {
139
- if ([connectedScene isKindOfClass:[UIWindowScene class]]) {
140
- scene = connectedScene;
141
- break;
142
- }
143
- }
134
+ UIWindowScene *scene = window.windowScene;
144
135
 
145
136
  if (scene == nil) {
146
137
  return;
@@ -154,7 +145,8 @@
154
145
 
155
146
  // `attemptRotationToDeviceOrientation` is deprecated for modern OS versions
156
147
  // so we need to use `setNeedsUpdateOfSupportedInterfaceOrientations`
157
- UIViewController *topController = [UIApplication sharedApplication].keyWindow.rootViewController;
148
+
149
+ UIViewController *topController = window.rootViewController;
158
150
  while (topController.presentedViewController) {
159
151
  topController = topController.presentedViewController;
160
152
  }
@@ -10,13 +10,11 @@ NS_ASSUME_NONNULL_BEGIN
10
10
 
11
11
  @interface RNSFormSheetConfigurationApplicator : NSObject
12
12
 
13
- - (void)applyConfigurationIfNeededWithAppearanceProvider:(id<RNSFormSheetAppearanceProvider>)appearanceProvider
13
+ + (void)applyConfigurationIfNeededWithAppearanceProvider:(id<RNSFormSheetAppearanceProvider>)appearanceProvider
14
14
  behaviorProvider:(id<RNSFormSheetBehaviorProvider>)behaviorProvider
15
15
  controller:(RNSFormSheetContentController *)controller
16
16
  coordinator:(RNSFormSheetUpdateCoordinator *)coordinator;
17
17
 
18
- - (void)resetInitialDetent;
19
-
20
18
  @end
21
19
 
22
20
  NS_ASSUME_NONNULL_END
@@ -7,43 +7,33 @@
7
7
  #import "RNSFormSheetUpdateCoordinator.h"
8
8
  #import "RNSFormSheetUpdateFlags.h"
9
9
 
10
- @implementation RNSFormSheetConfigurationApplicator {
11
- BOOL _initialDetentApplied;
12
- }
13
-
14
- - (instancetype)init
15
- {
16
- if (self = [super init]) {
17
- _initialDetentApplied = NO;
18
- }
19
- return self;
20
- }
10
+ @implementation RNSFormSheetConfigurationApplicator
21
11
 
22
- - (void)resetInitialDetent
23
- {
24
- _initialDetentApplied = NO;
25
- }
26
-
27
- - (void)applyConfigurationIfNeededWithAppearanceProvider:(id<RNSFormSheetAppearanceProvider>)appearanceProvider
12
+ + (void)applyConfigurationIfNeededWithAppearanceProvider:(id<RNSFormSheetAppearanceProvider>)appearanceProvider
28
13
  behaviorProvider:(id<RNSFormSheetBehaviorProvider>)behaviorProvider
29
14
  controller:(RNSFormSheetContentController *)controller
30
15
  coordinator:(RNSFormSheetUpdateCoordinator *)coordinator
31
16
  {
32
- RNSFormSheetUpdateFlags configFlags = RNSFormSheetUpdateFlagsAppearance | RNSFormSheetUpdateFlagsBehavior;
17
+ RNSFormSheetUpdateFlags configFlags =
18
+ RNSFormSheetUpdateFlagsAppearance | RNSFormSheetUpdateFlagsBehavior | RNSFormSheetUpdateFlagsInitialDetent;
19
+
20
+ BOOL shouldSelectInitialDetent = [coordinator needsAny:RNSFormSheetUpdateFlagsInitialDetent];
33
21
 
34
22
  [coordinator updateIfAnyNeeded:configFlags
35
23
  performOperations:^{
36
24
  [self applyConfigurationWithAppearanceProvider:appearanceProvider
37
25
  behaviorProvider:behaviorProvider
38
- controller:controller];
26
+ controller:controller
27
+ selectInitialDetent:shouldSelectInitialDetent];
39
28
  }];
40
29
  }
41
30
 
42
31
  #pragma mark - Updaters
43
32
 
44
- - (void)applyConfigurationWithAppearanceProvider:(id<RNSFormSheetAppearanceProvider>)appearanceProvider
33
+ + (void)applyConfigurationWithAppearanceProvider:(id<RNSFormSheetAppearanceProvider>)appearanceProvider
45
34
  behaviorProvider:(id<RNSFormSheetBehaviorProvider>)behaviorProvider
46
35
  controller:(RNSFormSheetContentController *)controller
36
+ selectInitialDetent:(BOOL)selectInitialDetent
47
37
  {
48
38
  #if !TARGET_OS_TV
49
39
  UISheetPresentationController *sheet = controller.sheetPresentationController;
@@ -57,11 +47,10 @@
57
47
  [RNSFormSheetDetentResolver buildSheetDetentsWithBehaviorProvider:behaviorProvider];
58
48
 
59
49
  UISheetPresentationControllerDetentIdentifier initialDetentIdentifier = nil;
60
- if (!_initialDetentApplied) {
50
+ if (selectInitialDetent) {
61
51
  initialDetentIdentifier =
62
52
  [RNSFormSheetDetentResolver initialDetentIdentifierForDetents:nativeDetents
63
53
  atRequestedIndex:behaviorProvider.initialDetentIndex];
64
- _initialDetentApplied = YES;
65
54
  }
66
55
 
67
56
  BOOL prefersScrollingExpands = behaviorProvider.prefersScrollingExpandsWhenScrolledToEdge;
@@ -43,7 +43,7 @@ NS_ASSUME_NONNULL_BEGIN
43
43
  - (void)setNeedsPresentationUpdate;
44
44
  - (void)setNeedsBehaviorUpdate;
45
45
  - (void)setNeedsAppearanceUpdate;
46
- - (void)setNeedsInitialDetentReset;
46
+ - (void)setNeedsInitialDetentUpdate;
47
47
 
48
48
  #pragma mark - Updates
49
49
 
@@ -20,12 +20,9 @@
20
20
 
21
21
  @implementation RNSFormSheetContentController {
22
22
  RNSFormSheetUpdateCoordinator *_Nonnull _updateCoordinator;
23
- RNSFormSheetConfigurationApplicator *_Nonnull _configurationApplicator;
24
23
  RNSFormSheetPresentationManager *_Nonnull _presentationManager;
25
24
 
26
25
  UITapGestureRecognizer *_Nullable _backdropTapGestureRecognizer;
27
-
28
- BOOL _needsInitialDetentReset;
29
26
  }
30
27
 
31
28
  - (instancetype)init
@@ -34,10 +31,7 @@
34
31
  self.modalPresentationStyle = UIModalPresentationFormSheet;
35
32
 
36
33
  _updateCoordinator = [RNSFormSheetUpdateCoordinator new];
37
- _configurationApplicator = [RNSFormSheetConfigurationApplicator new];
38
34
  _presentationManager = [RNSFormSheetPresentationManager new];
39
-
40
- _needsInitialDetentReset = NO;
41
35
  }
42
36
  return self;
43
37
  }
@@ -142,7 +136,7 @@
142
136
  // We must force a full configuration update for this new instance.
143
137
  [self setNeedsAppearanceUpdate];
144
138
  [self setNeedsBehaviorUpdate];
145
- [self setNeedsInitialDetentReset];
139
+ [self setNeedsInitialDetentUpdate];
146
140
  [self updateConfigurationIfNeeded];
147
141
  }
148
142
 
@@ -160,15 +154,10 @@
160
154
  return;
161
155
  }
162
156
 
163
- if (_needsInitialDetentReset) {
164
- _needsInitialDetentReset = NO;
165
- [_configurationApplicator resetInitialDetent];
166
- }
167
-
168
- [_configurationApplicator applyConfigurationIfNeededWithAppearanceProvider:appearanceProvider
169
- behaviorProvider:behaviorProvider
170
- controller:self
171
- coordinator:_updateCoordinator];
157
+ [RNSFormSheetConfigurationApplicator applyConfigurationIfNeededWithAppearanceProvider:appearanceProvider
158
+ behaviorProvider:behaviorProvider
159
+ controller:self
160
+ coordinator:_updateCoordinator];
172
161
  }
173
162
 
174
163
  #pragma mark - Signals
@@ -188,9 +177,9 @@
188
177
  [_updateCoordinator setNeeds:RNSFormSheetUpdateFlagsBehavior];
189
178
  }
190
179
 
191
- - (void)setNeedsInitialDetentReset
180
+ - (void)setNeedsInitialDetentUpdate
192
181
  {
193
- _needsInitialDetentReset = YES;
182
+ [_updateCoordinator setNeeds:RNSFormSheetUpdateFlagsInitialDetent];
194
183
  }
195
184
 
196
185
  #pragma mark - Updates
@@ -13,7 +13,7 @@
13
13
  #import <React/RCTSurfaceTouchHandler.h>
14
14
  #import <react/renderer/components/rnscreens/EventEmitters.h>
15
15
  #import <react/renderer/components/rnscreens/Props.h>
16
- #import <rnscreens/RNSFormSheetHostComponentDescriptor.h>
16
+ #import <react/renderer/components/rnscreens/RNSFormSheetHostComponentDescriptor.h>
17
17
 
18
18
  namespace react = facebook::react;
19
19
 
@@ -246,9 +246,9 @@ namespace react = facebook::react;
246
246
  // because UIKit destroys the presentationController after the modal is dismissed.
247
247
  [_controller setNeedsAppearanceUpdate];
248
248
  [_controller setNeedsBehaviorUpdate];
249
- // Reset the initial-detent applied flag when reopening so the
250
- // configured initialDetentIndex can be applied again.
251
- [_controller setNeedsInitialDetentReset];
249
+ // Request the configured initialDetentIndex to be selected
250
+ // again on the fresh presentation controller.
251
+ [_controller setNeedsInitialDetentUpdate];
252
252
  }
253
253
  }
254
254
 
@@ -1,8 +1,8 @@
1
1
  #import "RNSFormSheetHostShadowStateProxy.h"
2
2
 
3
3
  #import <React/RCTConversions.h>
4
- #import <rnscreens/RNSFormSheetHostShadowNode.h>
5
- #import <rnscreens/RNSFormSheetHostState.h>
4
+ #import <react/renderer/components/rnscreens/RNSFormSheetHostShadowNode.h>
5
+ #import <react/renderer/components/rnscreens/RNSFormSheetHostState.h>
6
6
 
7
7
  namespace react = facebook::react;
8
8
 
@@ -10,4 +10,7 @@ typedef NS_OPTIONS(NSUInteger, RNSFormSheetUpdateFlags) {
10
10
  RNSFormSheetUpdateFlagsAppearance = 1 << 1,
11
11
  // The sheet's behavioral layout (detents, scrolling config) needs to be re-applied.
12
12
  RNSFormSheetUpdateFlagsBehavior = 1 << 2,
13
+ // The sheet's selected detent needs to be (re)set to the configured `initialDetentIndex`.
14
+ // Requested once per presentation cycle, since UIKit recreates the presentation controller on every present.
15
+ RNSFormSheetUpdateFlagsInitialDetent = 1 << 3,
13
16
  };
@@ -9,8 +9,8 @@
9
9
 
10
10
  #import <react/renderer/components/rnscreens/ComponentDescriptors.h>
11
11
  #import <react/renderer/components/rnscreens/Props.h>
12
- #import <rnscreens/RNSSafeAreaViewComponentDescriptor.h>
13
- #import <rnscreens/RNSSafeAreaViewState.h>
12
+ #import <react/renderer/components/rnscreens/RNSSafeAreaViewComponentDescriptor.h>
13
+ #import <react/renderer/components/rnscreens/RNSSafeAreaViewState.h>
14
14
 
15
15
  namespace react = facebook::react;
16
16
 
@@ -1,9 +1,6 @@
1
1
  #import "RNSConversions-ScrollViewMarker.h"
2
-
3
2
  #import <React/RCTLog.h>
4
3
 
5
- namespace react = facebook::react;
6
-
7
4
  #define SWITCH_EDGE_EFFECT(X) \
8
5
  switch (edgeEffect) { \
9
6
  using enum react::X; \
@@ -29,6 +26,8 @@ namespace react = facebook::react;
29
26
 
30
27
  namespace rnscreens::conversion {
31
28
 
29
+ namespace react = facebook::react;
30
+
32
31
  EDGE_EFFECT_CONV_FUNC_IMPL(Left);
33
32
  EDGE_EFFECT_CONV_FUNC_IMPL(Top);
34
33
  EDGE_EFFECT_CONV_FUNC_IMPL(Right);
@@ -2,8 +2,8 @@
2
2
 
3
3
  #import <Foundation/Foundation.h>
4
4
  #import "RNSSplitAppearanceCoordinator.h"
5
+ #import "RNSSplitHostProviders.h"
5
6
 
6
- @class RNSSplitHostComponentView;
7
7
  @class RNSSplitHostController;
8
8
 
9
9
  NS_ASSUME_NONNULL_BEGIN
@@ -12,7 +12,7 @@ NS_ASSUME_NONNULL_BEGIN
12
12
  * @brief - Class responsible for applying all upcoming updates to SplitView.
13
13
  *
14
14
  * This class is synchronizing UISplitViewController configuration props which are affecting the SplitView appearance
15
- * with props passed to RNSSplitHostComponentView from the ElementTree.
15
+ * with the configuration exposed by the appearance provider.
16
16
  */
17
17
  @interface RNSSplitAppearanceApplicator : NSObject
18
18
 
@@ -21,13 +21,13 @@ NS_ASSUME_NONNULL_BEGIN
21
21
  *
22
22
  * It requests calling proper callbacks with batched SplitView updates on the AppearanceCoordinator object
23
23
  *
24
- * @param splitHost The view representing JS component which is sending updates.
24
+ * @param provider The provider of the appearance configuration.
25
25
  * @param splitHostController The controller associated with the SplitView component which receives updates and
26
26
  * manages the native layer.
27
27
  * @param appearanceCoordinator The coordinator which is checking whether the update needs to be applied and if so, it
28
28
  * executes the callback passed by this class.
29
29
  */
30
- - (void)updateAppearanceIfNeeded:(RNSSplitHostComponentView *)splitHost
30
+ - (void)updateAppearanceIfNeeded:(id<RNSSplitHostAppearanceProvider>)provider
31
31
  splitHostController:(RNSSplitHostController *)splitHostController
32
32
  appearanceCoordinator:(RNSSplitAppearanceCoordinator *)appearanceCoordinator;
33
33