react-native-screens 5.0.0-alpha.2 → 5.0.0-alpha.4
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.
- package/Package.swift +87 -0
- package/README.md +0 -11
- package/android/build.gradle +1 -0
- package/android/consumer-rules.pro +3 -0
- package/android/src/fabric/java/com/swmansion/rnscreens/legacy/FabricEnabledHeaderConfigViewGroup.kt +2 -0
- package/android/src/fabric/java/com/swmansion/rnscreens/legacy/FabricEnabledHeaderSubviewViewGroup.kt +2 -0
- package/android/src/fabric/java/com/swmansion/rnscreens/legacy/FabricEnabledViewGroup.kt +18 -3
- package/android/src/main/cpp/NativeProxy.cpp +30 -6
- package/android/src/main/cpp/NativeProxy.h +7 -1
- package/android/src/main/java/com/swmansion/rnscreens/RNScreensPackage.kt +2 -2
- package/android/src/main/java/com/swmansion/rnscreens/ScreensModule.kt +7 -3
- package/android/src/main/java/com/swmansion/rnscreens/common/colorscheme/ColorSchemeCoordinator.kt +11 -1
- package/android/src/main/java/com/swmansion/rnscreens/common/container/Container.kt +17 -0
- package/android/src/main/java/com/swmansion/rnscreens/common/container/ContainerItem.kt +13 -1
- package/android/src/main/java/com/swmansion/rnscreens/common/text/ReactTextAppearance.kt +62 -0
- package/android/src/main/java/com/swmansion/rnscreens/common/text/TextAppearance.kt +20 -0
- package/android/src/main/java/com/swmansion/rnscreens/common/text/TextAppearanceDefaults.kt +65 -0
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/coordinator/FormSheetAppearanceCoordinator.kt +2 -2
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/coordinator/FormSheetBehaviorController.kt +51 -20
- package/android/src/main/java/com/swmansion/rnscreens/core/modals/formsheet/coordinator/FormSheetDimensionsCoordinator.kt +159 -0
- package/android/src/main/java/com/swmansion/rnscreens/core/modals/formsheet/coordinator/FormSheetKeyboardCoordinator.kt +101 -0
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/coordinator/FormSheetNativeDismissCoordinator.kt +2 -8
- package/android/src/main/java/com/swmansion/rnscreens/core/modals/formsheet/dialog/FormSheetAvailableHeightProvider.kt +44 -0
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native/core → core/modals/formsheet/dialog}/FormSheetContainer.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native/core → core/modals/formsheet/dialog}/FormSheetDialog.kt +36 -4
- package/android/src/main/java/com/swmansion/rnscreens/core/modals/formsheet/dialog/FormSheetDialogManager.kt +107 -0
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/interfaces/FormSheetContentSizeChangeDelegate.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/interfaces/FormSheetContentSizeChangeProvider.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/interfaces/FormSheetDialogEventEmitter.kt +3 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/model/FormSheetConfig.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/core/modals/formsheet/model/FormSheetDetents.kt +152 -0
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/presentation/FormSheetAnimatorFactory.kt +9 -10
- package/android/src/main/java/com/swmansion/rnscreens/core/modals/formsheet/presentation/FormSheetDimmingManager.kt +103 -0
- package/android/src/main/java/com/swmansion/rnscreens/core/modals/formsheet/presentation/FormSheetDismissalOrigin.kt +22 -0
- package/android/src/main/java/com/swmansion/rnscreens/core/modals/formsheet/presentation/FormSheetPresentation.kt +173 -0
- package/android/src/main/java/com/swmansion/rnscreens/core/modals/formsheet/presentation/FormSheetPresentationManager.kt +290 -0
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/presentation/FormSheetPresentationState.kt +2 -2
- package/android/src/main/java/com/swmansion/rnscreens/core/modals/formsheet/presentation/FormSheetStackRegistry.kt +28 -0
- package/android/src/main/java/com/swmansion/rnscreens/ext/FragmentManagerExt.kt +6 -0
- package/android/src/main/java/com/swmansion/rnscreens/helpers/FragmentManagerHelper.kt +0 -3
- package/android/src/main/java/com/swmansion/rnscreens/helpers/NoTintDrawable.kt +31 -0
- package/android/src/main/java/com/swmansion/rnscreens/helpers/PropIconResolver.kt +17 -23
- package/android/src/main/java/com/swmansion/rnscreens/helpers/ViewFinder.kt +0 -17
- package/android/src/main/java/com/swmansion/rnscreens/legacy/Screen.kt +32 -3
- package/android/src/main/java/com/swmansion/rnscreens/legacy/ScreenContainer.kt +35 -3
- package/android/src/main/java/com/swmansion/rnscreens/legacy/ScreenStack.kt +15 -0
- package/android/src/main/java/com/swmansion/rnscreens/legacy/ScreenStackHeaderConfig.kt +7 -1
- package/android/src/main/java/com/swmansion/rnscreens/legacy/ScreenStackHeaderSubviewManager.kt +7 -0
- package/android/src/main/java/com/swmansion/rnscreens/legacy/ScreenStackViewManager.kt +6 -0
- package/android/src/main/java/com/swmansion/rnscreens/legacy/bottomsheet/DimmingView.kt +2 -0
- package/android/src/main/java/com/swmansion/rnscreens/legacy/stack/views/ScreensCoordinatorLayout.kt +2 -0
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/contentwrapper/FormSheetContentWrapper.kt +3 -3
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/contentwrapper/FormSheetContentWrapperViewManager.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/event/FormSheetDetentChangedEvent.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/event/FormSheetDidAppearEvent.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/event/FormSheetDidDisappearEvent.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/react/modals/formsheet/event/FormSheetDismissEvent.kt +29 -0
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/event/FormSheetNativeDismissEvent.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/event/FormSheetNativeDismissPreventedEvent.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/event/FormSheetSyncFlushEvent.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/event/FormSheetWillAppearEvent.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/event/FormSheetWillDisappearEvent.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/host/FormSheetContentView.kt +3 -3
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/host/FormSheetHost.kt +5 -3
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/host/FormSheetHostEventEmitter.kt +17 -10
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/host/FormSheetHostViewManager.kt +11 -9
- package/android/src/main/java/com/swmansion/rnscreens/safearea/OnInterfaceInsetsChangeListener.kt +15 -0
- package/android/src/main/java/com/swmansion/rnscreens/safearea/SafeAreaProvider.kt +8 -8
- package/android/src/main/java/com/swmansion/rnscreens/safearea/SafeAreaView.kt +3 -2
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/StackHeaderApplicator.kt +360 -101
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/StackHeaderBackPressHandler.kt +11 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/StackHeaderCoordinatorLayout.kt +211 -113
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/appbar/StackHeaderAppBarLayout.kt +156 -24
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/appbar/StackHeaderContentScrimDrawable.kt +36 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/appbar/StackHeaderToolbar.kt +74 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderCollapsedTitleGravityMode.kt +6 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderConfig.kt +162 -228
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderConfigViewManager.kt +385 -12
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderConfigurationObserver.kt +5 -6
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderConfigurationProviding.kt +29 -6
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderDelegate.kt +0 -7
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderInvalidationFlags.kt +8 -7
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/StackHeaderToolbarMenuApplicator.kt +27 -280
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/StackHeaderToolbarMenuController.kt +448 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/StackHeaderToolbarMenuDelegate.kt +10 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/StackHeaderToolbarMenuMapper.kt +28 -20
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/model/StackHeaderToolbarMenuConfig.kt +3 -55
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/model/StackHeaderToolbarMenuGroupMetadata.kt +1 -10
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/model/StackHeaderToolbarMenuItemConfig.kt +1 -3
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/model/StackHeaderToolbarMenuModel.kt +180 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/update/StackHeaderToolbarMenuElementOptions.kt +57 -6
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/update/StackHeaderToolbarMenuElementRawUpdate.kt +3 -1
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/update/StackHeaderToolbarMenuElementUpdate.kt +1 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/update/StackHeaderToolbarMenuIconResolver.kt +4 -3
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/update/StackHeaderToolbarMenuUpdateQueue.kt +23 -9
- package/android/src/main/java/com/swmansion/rnscreens/stack/host/FragmentOperation.kt +1 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/host/FragmentOperationExecutor.kt +2 -1
- package/android/src/main/java/com/swmansion/rnscreens/stack/host/StackContainer.kt +159 -21
- package/android/src/main/java/com/swmansion/rnscreens/stack/host/StackContainerDelegate.kt +7 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/host/StackContainerUpdateCoordinator.kt +5 -3
- package/android/src/main/java/com/swmansion/rnscreens/stack/host/StackHost.kt +27 -5
- package/android/src/main/java/com/swmansion/rnscreens/stack/host/StackHostViewManager.kt +14 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/host/StackUpdateBatchStateProviding.kt +10 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/screen/PreventNativeDismissCallback.kt +2 -2
- package/android/src/main/java/com/swmansion/rnscreens/stack/screen/StackScreen.kt +4 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/screen/StackScreenFragment.kt +50 -10
- package/android/src/main/java/com/swmansion/rnscreens/stack/screen/StackScreenFragmentDelegate.kt +12 -0
- package/android/src/main/java/com/swmansion/rnscreens/tabs/appearance/TabsAppearanceApplicator.kt +106 -10
- package/android/src/main/java/com/swmansion/rnscreens/tabs/appearance/TabsAppearanceCoordinator.kt +46 -7
- package/android/src/main/java/com/swmansion/rnscreens/tabs/appearance/TabsAppearanceModel.kt +3 -0
- package/android/src/main/java/com/swmansion/rnscreens/tabs/container/CustomBottomNavigationView.kt +21 -1
- package/android/src/main/java/com/swmansion/rnscreens/tabs/container/MenuHelpers.kt +5 -23
- package/android/src/main/java/com/swmansion/rnscreens/tabs/container/TabsContainer.kt +72 -36
- package/android/src/main/java/com/swmansion/rnscreens/tabs/container/TabsContainerDelegate.kt +11 -0
- package/android/src/main/java/com/swmansion/rnscreens/tabs/host/TabsHost.kt +22 -2
- package/android/src/main/java/com/swmansion/rnscreens/tabs/host/TabsHostA11yCoordinator.kt +23 -2
- package/android/src/main/java/com/swmansion/rnscreens/tabs/screen/TabsScreen.kt +58 -17
- package/android/src/main/java/com/swmansion/rnscreens/tabs/screen/TabsScreenDelegate.kt +6 -0
- package/android/src/main/java/com/swmansion/rnscreens/tabs/screen/TabsScreenFragment.kt +3 -0
- package/android/src/main/java/com/swmansion/rnscreens/tabs/screen/TabsScreenIcon.kt +82 -0
- package/android/src/main/java/com/swmansion/rnscreens/tabs/screen/TabsScreenIconTinting.kt +17 -0
- package/android/src/main/java/com/swmansion/rnscreens/tabs/screen/TabsScreenViewManager.kt +26 -19
- package/android/src/main/java/com/swmansion/rnscreens/utils/DimensionUtils.kt +20 -6
- package/android/src/main/java/com/swmansion/rnscreens/utils/RNSLog.kt +22 -6
- package/android/src/main/java/com/swmansion/rnscreens/utils/StyleUtils.kt +22 -0
- package/android/src/main/res/base/layout/rns_collapsing_toolbar_large_available_space.xml +8 -0
- package/android/src/main/res/base/layout/rns_collapsing_toolbar_large_entire_space.xml +8 -0
- package/android/src/main/res/base/layout/rns_collapsing_toolbar_medium_available_space.xml +8 -0
- package/android/src/main/res/base/layout/rns_collapsing_toolbar_medium_entire_space.xml +8 -0
- package/cpp/legacy/RNSScreenRemovalListener.cpp +31 -1
- package/cpp/legacy/RNSScreenRemovalListener.h +18 -3
- package/ios/RNSEnums.h +16 -1
- package/ios/conversion/RNSConversions.h +7 -108
- package/ios/helpers/image/RNSImageLoadingHelper.h +7 -0
- package/ios/helpers/image/RNSImageLoadingHelper.mm +9 -0
- package/ios/legacy/RNSBarButtonItem.mm +15 -0
- package/ios/legacy/RNSConvert.h +6 -0
- package/ios/legacy/RNSConvert.mm +17 -0
- package/ios/legacy/RNSFullWindowOverlay.mm +1 -1
- package/ios/legacy/RNSModalScreen.mm +1 -1
- package/ios/legacy/RNSNavigationBar.h +31 -0
- package/ios/legacy/RNSNavigationBar.mm +15 -0
- package/ios/legacy/RNSScreen.mm +130 -31
- package/ios/legacy/RNSScreenContentWrapper.mm +4 -1
- package/ios/legacy/RNSScreenStack.mm +202 -15
- package/ios/legacy/RNSScreenStackHeaderConfig.h +30 -0
- package/ios/legacy/RNSScreenStackHeaderConfig.mm +72 -17
- package/ios/legacy/RNSScreenStackHeaderSubview.mm +34 -1
- package/ios/legacy/RNSScreenWindowTraits.mm +5 -13
- package/ios/modals/form-sheet/RNSFormSheetConfigurationApplicator.h +1 -3
- package/ios/modals/form-sheet/RNSFormSheetConfigurationApplicator.mm +11 -22
- package/ios/modals/form-sheet/RNSFormSheetContentController.h +1 -1
- package/ios/modals/form-sheet/RNSFormSheetContentController.mm +7 -18
- package/ios/modals/form-sheet/RNSFormSheetHostComponentView.mm +4 -4
- package/ios/modals/form-sheet/RNSFormSheetHostShadowStateProxy.mm +2 -2
- package/ios/modals/form-sheet/RNSFormSheetUpdateFlags.h +3 -0
- package/ios/safe-area/RNSSafeAreaViewComponentView.mm +3 -14
- package/ios/{conversion → scroll-view-marker/conversion}/RNSConversions-ScrollViewMarker.mm +2 -3
- package/ios/split/RNSSplitAppearanceApplicator.h +4 -4
- package/ios/split/RNSSplitAppearanceApplicator.mm +53 -56
- package/ios/split/RNSSplitHostComponentEventEmitter.h +1 -0
- package/ios/split/RNSSplitHostComponentEventEmitter.mm +1 -1
- package/ios/split/RNSSplitHostComponentView.h +5 -15
- package/ios/split/RNSSplitHostComponentView.mm +55 -6
- package/ios/split/RNSSplitHostController.h +25 -6
- package/ios/split/RNSSplitHostController.mm +24 -92
- package/ios/split/RNSSplitHostProviders.h +67 -0
- package/ios/split/RNSSplitScreenComponentView.h +0 -39
- package/ios/split/RNSSplitScreenComponentView.mm +27 -10
- package/ios/split/RNSSplitScreenController.h +26 -3
- package/ios/split/RNSSplitScreenController.mm +13 -30
- package/ios/split/RNSSplitScreenShadowStateProxy.h +1 -40
- package/ios/split/RNSSplitScreenShadowStateProxy.mm +1 -26
- package/ios/split/conversion/RNSConversions-SplitView.h +56 -0
- package/ios/{conversion → split/conversion}/RNSConversions-SplitView.mm +4 -1
- package/ios/stack/conversion/RNSConversions-Stack.h +62 -0
- package/ios/stack/conversion/RNSConversions-Stack.mm +134 -0
- package/ios/stack/header/RNSHeaderItemVisibilityPriority.h +9 -0
- package/ios/stack/header/RNSStackHeaderAppearanceMapper.h +26 -0
- package/ios/stack/header/RNSStackHeaderAppearanceMapper.mm +88 -0
- package/ios/stack/header/RNSStackHeaderConfigComponentView.h +14 -1
- package/ios/stack/header/RNSStackHeaderConfigComponentView.mm +103 -37
- package/ios/stack/header/RNSStackHeaderConfigDataProviding.h +11 -0
- package/ios/stack/header/RNSStackHeaderConfigShadowStateProxy.mm +1 -1
- package/ios/stack/header/RNSStackHeaderContentFactory.mm +3 -0
- package/ios/stack/header/RNSStackHeaderIconResolver.mm +7 -0
- package/ios/stack/header/RNSStackHeaderItemComponentView.h +12 -3
- package/ios/stack/header/RNSStackHeaderItemComponentView.mm +72 -5
- package/ios/stack/header/RNSStackHeaderItemDataProviding.h +7 -0
- package/ios/stack/header/RNSStackHeaderItemShadowStateProxy.mm +1 -1
- package/ios/stack/header/RNSStackHeaderItemSpacerComponentView.mm +2 -1
- package/ios/stack/header/RNSStackHeaderMenuCoordinator.h +13 -0
- package/ios/stack/header/RNSStackHeaderMenuCoordinator.mm +24 -0
- package/ios/stack/header/RNSStackHeaderMenuFinder.h +8 -1
- package/ios/stack/header/RNSStackHeaderMenuFinder.mm +26 -9
- package/ios/stack/header/RNSStackHeaderMenuMapper.mm +4 -0
- package/ios/stack/host/RNSStackNavigationBar.h +25 -0
- package/ios/stack/host/RNSStackNavigationBar.mm +80 -0
- package/ios/stack/host/RNSStackNavigationBarCoordinator.h +8 -0
- package/ios/stack/host/RNSStackNavigationBarCoordinator.mm +11 -0
- package/ios/stack/host/RNSStackNavigationController.mm +13 -5
- package/ios/stack/host/RNSStackOperation.h +0 -2
- package/ios/stack/screen/RNSStackScreenComponentView.h +2 -1
- package/ios/stack/screen/RNSStackScreenComponentView.mm +32 -2
- package/ios/stack/screen/RNSStackScreenController.mm +12 -0
- package/ios/stack/screen/RNSStackScreenHeaderCoordinator.h +8 -0
- package/ios/stack/screen/RNSStackScreenHeaderCoordinator.mm +179 -24
- package/ios/tabs/RNSTabBarAppearanceCoordinator.mm +110 -16
- package/ios/tabs/RNSTabBarItemCoordinator.h +16 -0
- package/ios/tabs/RNSTabBarItemCoordinator.mm +143 -0
- package/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryComponentView.h +1 -1
- package/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryComponentView.mm +1 -1
- package/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryContentComponentView.mm +1 -1
- package/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryEventEmitter.mm +1 -1
- package/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryShadowStateProxy.mm +1 -1
- package/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryWrapperView.h +24 -0
- package/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryWrapperView.mm +22 -0
- package/ios/tabs/conversion/RNSConversions-Tabs.h +100 -0
- package/ios/{conversion → tabs/conversion}/RNSConversions-Tabs.mm +105 -74
- package/ios/tabs/extensions/RNSTabsHostComponentView+RNSImageLoader.h +1 -1
- package/ios/tabs/host/RNSTabBarController.h +16 -0
- package/ios/tabs/host/RNSTabBarController.mm +516 -107
- package/ios/tabs/host/RNSTabsHostComponentView.h +4 -0
- package/ios/tabs/host/RNSTabsHostComponentView.mm +41 -4
- package/ios/tabs/host/RNSTabsHostEventEmitter.mm +1 -1
- package/ios/tabs/screen/RNSTabsScreenComponentView.h +21 -0
- package/ios/tabs/screen/RNSTabsScreenComponentView.mm +56 -56
- package/ios/tabs/screen/RNSTabsScreenViewController.mm +1 -0
- package/ios/utils/RNSDefines.h +15 -7
- package/lib/commonjs/components/stack/header/StackHeaderConfig.android.js +37 -21
- package/lib/commonjs/components/stack/header/StackHeaderConfig.android.js.map +1 -1
- package/lib/commonjs/components/stack/header/StackHeaderConfig.ios.js +41 -4
- package/lib/commonjs/components/stack/header/StackHeaderConfig.ios.js.map +1 -1
- package/lib/commonjs/components/stack/header/StackHeaderConfig.js +17 -0
- package/lib/commonjs/components/stack/header/StackHeaderConfig.js.map +1 -0
- package/lib/commonjs/components/stack/header/ios/StackHeaderItem.ios.js +4 -1
- package/lib/commonjs/components/stack/header/ios/StackHeaderItem.ios.js.map +1 -1
- package/lib/commonjs/components/stack/host/StackHost.js +17 -7
- package/lib/commonjs/components/stack/host/StackHost.js.map +1 -1
- package/lib/commonjs/components/stack/host/StackHost.web.js +0 -2
- package/lib/commonjs/components/stack/host/StackHost.web.js.map +1 -1
- package/lib/commonjs/components/stack/index.js.map +1 -1
- package/lib/commonjs/components/tabs/host/TabsHost.ios.js +3 -0
- package/lib/commonjs/components/tabs/host/TabsHost.ios.js.map +1 -1
- package/lib/commonjs/components/tabs/host/{TabsHost.web.js → TabsHost.js} +1 -1
- package/lib/commonjs/components/tabs/host/TabsHost.js.map +1 -0
- package/lib/commonjs/components/tabs/index.js.map +1 -1
- package/lib/commonjs/components/tabs/screen/TabsScreen.android.js +3 -1
- package/lib/commonjs/components/tabs/screen/TabsScreen.android.js.map +1 -1
- package/lib/commonjs/components/tabs/screen/TabsScreen.ios.js +10 -1
- package/lib/commonjs/components/tabs/screen/TabsScreen.ios.js.map +1 -1
- package/lib/commonjs/components/tabs/screen/{TabsScreen.web.js → TabsScreen.js} +1 -1
- package/lib/commonjs/components/tabs/screen/TabsScreen.js.map +1 -0
- package/lib/commonjs/components/{stack/header/StackHeaderConfig.d.js → tabs/screen/TabsScreenIcon.types.js} +1 -1
- package/lib/commonjs/components/{stack/header/StackHeaderConfig.d.js.map → tabs/screen/TabsScreenIcon.types.js.map} +1 -1
- package/lib/commonjs/fabric/legacy/ScreenStackHeaderSubviewNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/legacy/ScreenStackNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/stack/StackHeaderConfigAndroidNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/stack/StackHeaderConfigIOSNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/stack/StackHeaderItemIOSNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/stack/StackHostNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/tabs/TabsHostIOSNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/tabs/TabsScreenAndroidNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/tabs/TabsScreenIOSNativeComponent.js +1 -1
- package/lib/commonjs/fabric/tabs/TabsScreenIOSNativeComponent.js.map +1 -1
- package/lib/commonjs/legacy/components/ScreenStackItem.js +31 -11
- package/lib/commonjs/legacy/components/ScreenStackItem.js.map +1 -1
- package/lib/module/components/stack/header/StackHeaderConfig.android.js +39 -23
- package/lib/module/components/stack/header/StackHeaderConfig.android.js.map +1 -1
- package/lib/module/components/stack/header/StackHeaderConfig.ios.js +43 -6
- package/lib/module/components/stack/header/StackHeaderConfig.ios.js.map +1 -1
- package/lib/module/components/stack/header/StackHeaderConfig.js +10 -0
- package/lib/module/components/stack/header/StackHeaderConfig.js.map +1 -0
- package/lib/module/components/stack/header/ios/StackHeaderItem.ios.js +4 -1
- package/lib/module/components/stack/header/ios/StackHeaderItem.ios.js.map +1 -1
- package/lib/module/components/stack/host/StackHost.js +18 -8
- package/lib/module/components/stack/host/StackHost.js.map +1 -1
- package/lib/module/components/stack/host/StackHost.web.js +0 -3
- package/lib/module/components/stack/host/StackHost.web.js.map +1 -1
- package/lib/module/components/stack/index.js.map +1 -1
- package/lib/module/components/tabs/host/TabsHost.ios.js +3 -0
- package/lib/module/components/tabs/host/TabsHost.ios.js.map +1 -1
- package/{src/components/tabs/host/TabsHost.web.tsx → lib/module/components/tabs/host/TabsHost.js} +1 -2
- package/lib/module/components/tabs/host/TabsHost.js.map +1 -0
- package/lib/module/components/tabs/index.js.map +1 -1
- package/lib/module/components/tabs/screen/TabsScreen.android.js +3 -1
- package/lib/module/components/tabs/screen/TabsScreen.android.js.map +1 -1
- package/lib/module/components/tabs/screen/TabsScreen.ios.js +10 -1
- package/lib/module/components/tabs/screen/TabsScreen.ios.js.map +1 -1
- package/{src/components/tabs/screen/TabsScreen.web.tsx → lib/module/components/tabs/screen/TabsScreen.js} +1 -2
- package/lib/module/components/tabs/screen/TabsScreen.js.map +1 -0
- package/lib/module/components/tabs/screen/TabsScreenIcon.types.js +2 -0
- package/lib/module/components/{stack/header/StackHeaderConfig.d.js.map → tabs/screen/TabsScreenIcon.types.js.map} +1 -1
- package/lib/module/fabric/legacy/ScreenStackHeaderSubviewNativeComponent.js.map +1 -1
- package/lib/module/fabric/legacy/ScreenStackNativeComponent.js.map +1 -1
- package/lib/module/fabric/stack/StackHeaderConfigAndroidNativeComponent.js.map +1 -1
- package/lib/module/fabric/stack/StackHeaderConfigIOSNativeComponent.js.map +1 -1
- package/lib/module/fabric/stack/StackHeaderItemIOSNativeComponent.js.map +1 -1
- package/lib/module/fabric/stack/StackHostNativeComponent.js.map +1 -1
- package/lib/module/fabric/tabs/TabsHostIOSNativeComponent.js.map +1 -1
- package/lib/module/fabric/tabs/TabsScreenAndroidNativeComponent.js.map +1 -1
- package/lib/module/fabric/tabs/TabsScreenIOSNativeComponent.js +1 -1
- package/lib/module/fabric/tabs/TabsScreenIOSNativeComponent.js.map +1 -1
- package/lib/module/legacy/components/ScreenStackItem.js +31 -11
- package/lib/module/legacy/components/ScreenStackItem.js.map +1 -1
- package/lib/typescript/components/modals/form-sheet/FormSheet.types.d.ts +1 -1
- package/lib/typescript/components/stack/header/StackHeaderConfig.android.d.ts +6 -3
- package/lib/typescript/components/stack/header/StackHeaderConfig.android.d.ts.map +1 -1
- package/lib/typescript/components/stack/header/StackHeaderConfig.android.types.d.ts +620 -24
- package/lib/typescript/components/stack/header/StackHeaderConfig.android.types.d.ts.map +1 -1
- package/lib/typescript/components/stack/header/StackHeaderConfig.d.ts +8 -0
- package/lib/typescript/components/stack/header/StackHeaderConfig.d.ts.map +1 -0
- package/lib/typescript/components/stack/header/StackHeaderConfig.ios.d.ts +6 -3
- package/lib/typescript/components/stack/header/StackHeaderConfig.ios.d.ts.map +1 -1
- package/lib/typescript/components/stack/header/StackHeaderConfig.ios.types.d.ts +361 -2
- package/lib/typescript/components/stack/header/StackHeaderConfig.ios.types.d.ts.map +1 -1
- package/lib/typescript/components/stack/header/StackHeaderConfig.types.d.ts +4 -2
- package/lib/typescript/components/stack/header/StackHeaderConfig.types.d.ts.map +1 -1
- package/lib/typescript/components/stack/header/ios/StackHeaderItem.ios.d.ts.map +1 -1
- package/lib/typescript/components/stack/header/ios/StackHeaderItem.ios.types.d.ts +7 -0
- package/lib/typescript/components/stack/header/ios/StackHeaderItem.ios.types.d.ts.map +1 -1
- package/lib/typescript/components/stack/host/StackHost.d.ts +1 -1
- package/lib/typescript/components/stack/host/StackHost.d.ts.map +1 -1
- package/lib/typescript/components/stack/host/StackHost.types.d.ts +47 -0
- package/lib/typescript/components/stack/host/StackHost.types.d.ts.map +1 -1
- package/lib/typescript/components/stack/host/StackHost.web.d.ts +1 -3
- package/lib/typescript/components/stack/host/StackHost.web.d.ts.map +1 -1
- package/lib/typescript/components/stack/index.d.ts +4 -3
- package/lib/typescript/components/stack/index.d.ts.map +1 -1
- package/lib/typescript/components/tabs/host/TabsHost.d.ts +5 -0
- package/lib/typescript/components/tabs/host/TabsHost.d.ts.map +1 -0
- package/lib/typescript/components/tabs/host/TabsHost.ios.d.ts.map +1 -1
- package/lib/typescript/components/tabs/host/TabsHost.ios.types.d.ts +72 -0
- package/lib/typescript/components/tabs/host/TabsHost.ios.types.d.ts.map +1 -1
- package/lib/typescript/components/tabs/host/TabsHost.types.d.ts +3 -0
- package/lib/typescript/components/tabs/host/TabsHost.types.d.ts.map +1 -1
- package/lib/typescript/components/tabs/index.d.ts +4 -6
- package/lib/typescript/components/tabs/index.d.ts.map +1 -1
- package/lib/typescript/components/tabs/screen/TabsScreen.android.d.ts.map +1 -1
- package/lib/typescript/components/tabs/screen/TabsScreen.android.types.d.ts +42 -7
- package/lib/typescript/components/tabs/screen/TabsScreen.android.types.d.ts.map +1 -1
- package/lib/typescript/components/tabs/screen/TabsScreen.d.ts +5 -0
- package/lib/typescript/components/tabs/screen/TabsScreen.d.ts.map +1 -0
- package/lib/typescript/components/tabs/screen/TabsScreen.ios.d.ts.map +1 -1
- package/lib/typescript/components/tabs/screen/TabsScreen.ios.types.d.ts +78 -13
- package/lib/typescript/components/tabs/screen/TabsScreen.ios.types.d.ts.map +1 -1
- package/lib/typescript/components/tabs/screen/TabsScreenIcon.types.d.ts +91 -0
- package/lib/typescript/components/tabs/screen/TabsScreenIcon.types.d.ts.map +1 -0
- package/lib/typescript/components/tabs/screen/index.d.ts +1 -0
- package/lib/typescript/components/tabs/screen/index.d.ts.map +1 -1
- package/lib/typescript/fabric/legacy/ScreenStackHeaderSubviewNativeComponent.d.ts +2 -0
- package/lib/typescript/fabric/legacy/ScreenStackHeaderSubviewNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/legacy/ScreenStackNativeComponent.d.ts +1 -0
- package/lib/typescript/fabric/legacy/ScreenStackNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/stack/StackHeaderConfigAndroidNativeComponent.d.ts +52 -0
- package/lib/typescript/fabric/stack/StackHeaderConfigAndroidNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/stack/StackHeaderConfigIOSNativeComponent.d.ts +29 -1
- package/lib/typescript/fabric/stack/StackHeaderConfigIOSNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/stack/StackHeaderItemIOSNativeComponent.d.ts +8 -0
- package/lib/typescript/fabric/stack/StackHeaderItemIOSNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/stack/StackHostNativeComponent.d.ts +3 -1
- package/lib/typescript/fabric/stack/StackHostNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/tabs/TabsHostIOSNativeComponent.d.ts +4 -0
- package/lib/typescript/fabric/tabs/TabsHostIOSNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/tabs/TabsScreenAndroidNativeComponent.d.ts +6 -0
- package/lib/typescript/fabric/tabs/TabsScreenAndroidNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/tabs/TabsScreenIOSNativeComponent.d.ts +10 -1
- package/lib/typescript/fabric/tabs/TabsScreenIOSNativeComponent.d.ts.map +1 -1
- package/lib/typescript/legacy/components/ScreenStackItem.d.ts +25 -0
- package/lib/typescript/legacy/components/ScreenStackItem.d.ts.map +1 -1
- package/lib/typescript/legacy/components/helpers/prepareHeaderBarButtonItems.d.ts +4 -0
- package/lib/typescript/legacy/components/helpers/prepareHeaderBarButtonItems.d.ts.map +1 -1
- package/lib/typescript/legacy/types.d.ts +30 -0
- package/lib/typescript/legacy/types.d.ts.map +1 -1
- package/package.json +11 -8
- package/react-native.config.js +3 -0
- package/src/components/modals/form-sheet/FormSheet.types.ts +1 -1
- package/src/components/stack/header/StackHeaderConfig.android.tsx +54 -43
- package/src/components/stack/header/StackHeaderConfig.android.types.ts +641 -24
- package/src/components/stack/header/StackHeaderConfig.ios.tsx +55 -17
- package/src/components/stack/header/StackHeaderConfig.ios.types.ts +384 -2
- package/src/components/stack/header/StackHeaderConfig.tsx +12 -0
- package/src/components/stack/header/StackHeaderConfig.types.ts +4 -2
- package/src/components/stack/header/ios/StackHeaderItem.ios.tsx +9 -1
- package/src/components/stack/header/ios/StackHeaderItem.ios.types.ts +7 -0
- package/src/components/stack/host/StackHost.tsx +12 -3
- package/src/components/stack/host/StackHost.types.ts +50 -0
- package/src/components/stack/host/StackHost.web.tsx +1 -4
- package/src/components/stack/index.ts +14 -1
- package/src/components/tabs/host/TabsHost.ios.tsx +3 -0
- package/src/components/tabs/host/TabsHost.ios.types.ts +76 -0
- package/src/components/tabs/host/TabsHost.tsx +7 -0
- package/src/components/tabs/host/TabsHost.types.ts +3 -0
- package/src/components/tabs/index.ts +9 -0
- package/src/components/tabs/screen/TabsScreen.android.tsx +8 -3
- package/src/components/tabs/screen/TabsScreen.android.types.ts +42 -7
- package/src/components/tabs/screen/TabsScreen.ios.tsx +22 -5
- package/src/components/tabs/screen/TabsScreen.ios.types.ts +79 -17
- package/src/components/tabs/screen/TabsScreen.tsx +7 -0
- package/src/components/tabs/screen/TabsScreenIcon.types.ts +117 -0
- package/src/components/tabs/screen/index.ts +1 -0
- package/src/fabric/legacy/ScreenStackHeaderSubviewNativeComponent.ts +6 -0
- package/src/fabric/legacy/ScreenStackNativeComponent.ts +2 -0
- package/src/fabric/stack/StackHeaderConfigAndroidNativeComponent.ts +78 -0
- package/src/fabric/stack/StackHeaderConfigIOSNativeComponent.ts +43 -0
- package/src/fabric/stack/StackHeaderItemIOSNativeComponent.ts +13 -0
- package/src/fabric/stack/StackHostNativeComponent.ts +11 -2
- package/src/fabric/tabs/TabsHostIOSNativeComponent.ts +8 -0
- package/src/fabric/tabs/TabsScreenAndroidNativeComponent.ts +9 -0
- package/src/fabric/tabs/TabsScreenIOSNativeComponent.ts +20 -2
- package/src/legacy/components/ScreenStackItem.tsx +59 -12
- package/src/legacy/types.ts +31 -0
- package/android/src/main/java/com/swmansion/rnscreens/legacy/ScreenModalFragment.kt +0 -281
- package/android/src/main/java/com/swmansion/rnscreens/legacy/bottomsheet/BottomSheetDialogRootView.kt +0 -104
- package/android/src/main/java/com/swmansion/rnscreens/legacy/bottomsheet/BottomSheetDialogScreen.kt +0 -26
- package/android/src/main/java/com/swmansion/rnscreens/modals/dimmingview/DimmingView.kt +0 -83
- package/android/src/main/java/com/swmansion/rnscreens/modals/dimmingview/DimmingViewManager.kt +0 -89
- package/android/src/main/java/com/swmansion/rnscreens/modals/dimmingview/DimmingViewPointerEvents.kt +0 -18
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/coordinator/FormSheetDimensionsCoordinator.kt +0 -134
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/core/FormSheetDialogManager.kt +0 -162
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/model/FormSheetDetents.kt +0 -106
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/presentation/FormSheetPresentationManager.kt +0 -198
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/StackHeaderToolbarMenuSelectionController.kt +0 -83
- package/ios/conversion/RNSConversions-Stack.h +0 -32
- package/ios/conversion/RNSConversions-Stack.mm +0 -41
- package/ios/conversion/always_false.h +0 -31
- package/lib/commonjs/components/stack/header/StackHeaderConfig.web.js +0 -10
- package/lib/commonjs/components/stack/header/StackHeaderConfig.web.js.map +0 -1
- package/lib/commonjs/components/tabs/host/TabsHost.d.js +0 -2
- package/lib/commonjs/components/tabs/host/TabsHost.d.js.map +0 -1
- package/lib/commonjs/components/tabs/host/TabsHost.web.js.map +0 -1
- package/lib/commonjs/components/tabs/screen/TabsScreen.d.js +0 -2
- package/lib/commonjs/components/tabs/screen/TabsScreen.d.js.map +0 -1
- package/lib/commonjs/components/tabs/screen/TabsScreen.web.js.map +0 -1
- package/lib/module/components/stack/header/StackHeaderConfig.d.js +0 -2
- package/lib/module/components/stack/header/StackHeaderConfig.web.js +0 -4
- package/lib/module/components/stack/header/StackHeaderConfig.web.js.map +0 -1
- package/lib/module/components/tabs/host/TabsHost.d.js +0 -2
- package/lib/module/components/tabs/host/TabsHost.d.js.map +0 -1
- package/lib/module/components/tabs/host/TabsHost.web.js +0 -4
- package/lib/module/components/tabs/host/TabsHost.web.js.map +0 -1
- package/lib/module/components/tabs/screen/TabsScreen.d.js +0 -2
- package/lib/module/components/tabs/screen/TabsScreen.d.js.map +0 -1
- package/lib/module/components/tabs/screen/TabsScreen.web.js +0 -4
- package/lib/module/components/tabs/screen/TabsScreen.web.js.map +0 -1
- package/lib/typescript/components/stack/header/StackHeaderConfig.web.d.ts +0 -7
- package/lib/typescript/components/stack/header/StackHeaderConfig.web.d.ts.map +0 -1
- package/lib/typescript/components/tabs/host/TabsHost.web.d.ts +0 -7
- package/lib/typescript/components/tabs/host/TabsHost.web.d.ts.map +0 -1
- package/lib/typescript/components/tabs/screen/TabsScreen.web.d.ts +0 -7
- package/lib/typescript/components/tabs/screen/TabsScreen.web.d.ts.map +0 -1
- package/src/components/stack/header/StackHeaderConfig.d.ts +0 -22
- package/src/components/stack/header/StackHeaderConfig.web.tsx +0 -5
- package/src/components/tabs/host/TabsHost.d.ts +0 -12
- package/src/components/tabs/screen/TabsScreen.d.ts +0 -12
- /package/ios/{conversion → scroll-view-marker/conversion}/RNSConversions-ScrollViewMarker.h +0 -0
|
@@ -3,31 +3,50 @@
|
|
|
3
3
|
#import <UIKit/UIKit.h>
|
|
4
4
|
#import "RNSOrientationProviding.h"
|
|
5
5
|
#import "RNSReactMountingTransactionObserving.h"
|
|
6
|
+
#import "RNSSplitHostProviders.h"
|
|
6
7
|
|
|
7
|
-
@class
|
|
8
|
+
@class RNSSplitHostController;
|
|
8
9
|
|
|
9
10
|
NS_ASSUME_NONNULL_BEGIN
|
|
10
11
|
|
|
12
|
+
/**
|
|
13
|
+
* @protocol RNSSplitHostControllerEventsDelegate
|
|
14
|
+
* @brief Receives UISplitViewController lifecycle notifications from the Split host controller.
|
|
15
|
+
*/
|
|
16
|
+
@protocol RNSSplitHostControllerEventsDelegate <NSObject>
|
|
17
|
+
|
|
18
|
+
- (void)splitHostControllerDidCollapse:(RNSSplitHostController *)controller;
|
|
19
|
+
- (void)splitHostControllerDidExpand:(RNSSplitHostController *)controller;
|
|
20
|
+
- (void)splitHostController:(RNSSplitHostController *)controller
|
|
21
|
+
willChangeDisplayModeFrom:(UISplitViewControllerDisplayMode)fromDisplayMode
|
|
22
|
+
to:(UISplitViewControllerDisplayMode)toDisplayMode;
|
|
23
|
+
- (void)splitHostControllerDidHideInspector:(RNSSplitHostController *)controller;
|
|
24
|
+
|
|
25
|
+
@end
|
|
26
|
+
|
|
11
27
|
/**
|
|
12
28
|
* @class RNSSplitHostController
|
|
13
29
|
* @brief A controller associated with the RN native component representing Split host.
|
|
14
30
|
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
31
|
+
* Installs the column controllers, synchronizes appearance settings with the configuration exposed by the providers,
|
|
32
|
+
* observes the UISplitViewController lifecycle and reports it to the delegate.
|
|
17
33
|
*/
|
|
18
34
|
@interface RNSSplitHostController
|
|
19
35
|
: UISplitViewController <RNSReactMountingTransactionObserving, RNSOrientationProviding>
|
|
20
36
|
|
|
37
|
+
@property (nonatomic, weak, nullable) id<RNSSplitHostControllerEventsDelegate> eventsDelegate;
|
|
38
|
+
@property (nonatomic, weak, nullable) id<RNSSplitHostAppearanceProvider> appearanceProvider;
|
|
39
|
+
@property (nonatomic, weak, nullable) id<RNSSplitHostBehaviorProvider> behaviorProvider;
|
|
40
|
+
@property (nonatomic, weak, nullable) id<RNSSplitHostColumnsProvider> columnsProvider;
|
|
41
|
+
|
|
21
42
|
/**
|
|
22
43
|
* @brief Initializes the Split host controller with provided style.
|
|
23
44
|
*
|
|
24
45
|
* The style for the Split component can be passed only in the initialization method and cannot be changed dynamically.
|
|
25
46
|
*
|
|
26
|
-
* @param splitHostComponentView The view managed by this controller.
|
|
27
47
|
* @param numberOfColumns Expected number of visible columns.
|
|
28
48
|
*/
|
|
29
|
-
- (instancetype)
|
|
30
|
-
numberOfColumns:(NSInteger)numberOfColumns;
|
|
49
|
+
- (instancetype)initWithNumberOfColumns:(NSInteger)numberOfColumns;
|
|
31
50
|
|
|
32
51
|
#pragma mark - Signals
|
|
33
52
|
|
|
@@ -4,15 +4,13 @@
|
|
|
4
4
|
#import "RNSDefines.h"
|
|
5
5
|
#import "RNSSplitAppearanceApplicator.h"
|
|
6
6
|
#import "RNSSplitAppearanceCoordinator.h"
|
|
7
|
-
#import "RNSSplitHostComponentView.h"
|
|
8
7
|
#import "RNSSplitNavigationController.h"
|
|
9
8
|
#import "RNSSplitNavigationControllerFrameOriginChangeDelegate.h"
|
|
10
|
-
#import "RNSSplitScreenComponentView.h"
|
|
11
9
|
#import "RNSSplitScreenController.h"
|
|
12
10
|
|
|
13
|
-
static const NSInteger minNumberOfColumns = 2;
|
|
14
|
-
static const NSInteger maxNumberOfColumns = 3;
|
|
15
|
-
static const NSInteger maxNumberOfInspectors = 1;
|
|
11
|
+
[[maybe_unused]] static const NSInteger minNumberOfColumns = 2;
|
|
12
|
+
[[maybe_unused]] static const NSInteger maxNumberOfColumns = 3;
|
|
13
|
+
[[maybe_unused]] static const NSInteger maxNumberOfInspectors = 1;
|
|
16
14
|
|
|
17
15
|
@interface RNSSplitHostController () <UISplitViewControllerDelegate,
|
|
18
16
|
RNSSplitNavigationControllerFrameOriginChangeDelegate>
|
|
@@ -24,8 +22,6 @@ static const NSInteger maxNumberOfInspectors = 1;
|
|
|
24
22
|
RNSSplitAppearanceCoordinator *_splitAppearanceCoordinator;
|
|
25
23
|
RNSSplitAppearanceApplicator *_splitAppearanceApplicator;
|
|
26
24
|
|
|
27
|
-
RNSSplitHostComponentView *_splitHostComponentView;
|
|
28
|
-
|
|
29
25
|
/**
|
|
30
26
|
* This variable is keeping the value of how many columns were set in the initial render. It's used for validation,
|
|
31
27
|
* because Split doesn't support changing number of columns dynamically.
|
|
@@ -43,11 +39,9 @@ static const NSInteger maxNumberOfInspectors = 1;
|
|
|
43
39
|
NSMutableSet<NSNumber *> *_visibleColumns;
|
|
44
40
|
}
|
|
45
41
|
|
|
46
|
-
- (instancetype)
|
|
47
|
-
numberOfColumns:(NSInteger)numberOfColumns
|
|
42
|
+
- (instancetype)initWithNumberOfColumns:(NSInteger)numberOfColumns
|
|
48
43
|
{
|
|
49
44
|
if (self = [super initWithStyle:[RNSSplitHostController styleByNumberOfColumns:numberOfColumns]]) {
|
|
50
|
-
_splitHostComponentView = splitHostComponentView;
|
|
51
45
|
_splitAppearanceCoordinator = [RNSSplitAppearanceCoordinator new];
|
|
52
46
|
_splitAppearanceApplicator = [RNSSplitAppearanceApplicator new];
|
|
53
47
|
_fixedColumnsCount = numberOfColumns;
|
|
@@ -60,11 +54,6 @@ static const NSInteger maxNumberOfInspectors = 1;
|
|
|
60
54
|
return self;
|
|
61
55
|
}
|
|
62
56
|
|
|
63
|
-
- (RNSSplitHostComponentEventEmitter *)reactEventEmitter
|
|
64
|
-
{
|
|
65
|
-
return [_splitHostComponentView reactEventEmitter];
|
|
66
|
-
}
|
|
67
|
-
|
|
68
57
|
#pragma mark - Signals
|
|
69
58
|
|
|
70
59
|
- (void)setNeedsUpdateOfChildViewControllers
|
|
@@ -114,18 +103,16 @@ static const NSInteger maxNumberOfInspectors = 1;
|
|
|
114
103
|
RCTAssert(_needsChildViewControllersUpdate,
|
|
115
104
|
@"[RNScreens] Child view controller must be invalidated when update is forced!");
|
|
116
105
|
|
|
117
|
-
NSArray<
|
|
118
|
-
|
|
119
|
-
NSArray<RNSSplitScreenComponentView *> *currentInspectors =
|
|
120
|
-
[self filterSubviewsOfType:RNSSplitScreenColumnTypeInspector in:self.splitReactSubviews];
|
|
106
|
+
NSArray<RNSSplitScreenController *> *currentColumns = [self.columnsProvider columnControllers];
|
|
107
|
+
NSArray<RNSSplitScreenController *> *currentInspectors = [self.columnsProvider inspectorControllers];
|
|
121
108
|
|
|
122
109
|
[self validateColumns:currentColumns];
|
|
123
110
|
[self validateInspectors:currentInspectors];
|
|
124
111
|
|
|
125
112
|
NSMutableArray<RNSSplitNavigationController *> *currentViewControllers =
|
|
126
113
|
[NSMutableArray arrayWithCapacity:currentColumns.count];
|
|
127
|
-
for (
|
|
128
|
-
[currentViewControllers addObject:[[RNSSplitNavigationController alloc] initWithRootViewController:
|
|
114
|
+
for (RNSSplitScreenController *columnController in currentColumns) {
|
|
115
|
+
[currentViewControllers addObject:[[RNSSplitNavigationController alloc] initWithRootViewController:columnController
|
|
129
116
|
frameOriginChangeDelegate:self]];
|
|
130
117
|
}
|
|
131
118
|
|
|
@@ -142,7 +129,7 @@ static const NSInteger maxNumberOfInspectors = 1;
|
|
|
142
129
|
|
|
143
130
|
- (void)updateSplitAppearanceIfNeeded
|
|
144
131
|
{
|
|
145
|
-
[_splitAppearanceApplicator updateAppearanceIfNeeded:
|
|
132
|
+
[_splitAppearanceApplicator updateAppearanceIfNeeded:self.appearanceProvider
|
|
146
133
|
splitHostController:self
|
|
147
134
|
appearanceCoordinator:_splitAppearanceCoordinator];
|
|
148
135
|
}
|
|
@@ -184,29 +171,6 @@ static const NSInteger maxNumberOfInspectors = 1;
|
|
|
184
171
|
}
|
|
185
172
|
}
|
|
186
173
|
|
|
187
|
-
/**
|
|
188
|
-
* @brief Filters the given subviews array by a specific column type.
|
|
189
|
-
*
|
|
190
|
-
* Iterates over the provided subviews array and returns only the elements that match
|
|
191
|
-
* the specified RNSSplitScreenColumnType (e.g., .column, .inspector).
|
|
192
|
-
*
|
|
193
|
-
* @param type The target RNSSplitScreenColumnType to filter for.
|
|
194
|
-
* @param subviews The array of RNSSplitScreenComponentView elements to filter.
|
|
195
|
-
* @return A filtered array of RNSSplitScreenComponentView objects with the specified column type.
|
|
196
|
-
*/
|
|
197
|
-
- (NSArray<RNSSplitScreenComponentView *> *)filterSubviewsOfType:(RNSSplitScreenColumnType)type
|
|
198
|
-
in:(NSArray<RNSSplitScreenComponentView *> *)subviews
|
|
199
|
-
{
|
|
200
|
-
NSMutableArray<RNSSplitScreenComponentView *> *filteredSubviews = [NSMutableArray array];
|
|
201
|
-
for (RNSSplitScreenComponentView *subview in subviews) {
|
|
202
|
-
if (subview.columnType == type) {
|
|
203
|
-
[filteredSubviews addObject:subview];
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
return filteredSubviews;
|
|
208
|
-
}
|
|
209
|
-
|
|
210
174
|
#pragma mark - Public setters
|
|
211
175
|
|
|
212
176
|
- (void)toggleSplitViewInspector:(BOOL)showInspector
|
|
@@ -278,7 +242,7 @@ static const NSInteger maxNumberOfInspectors = 1;
|
|
|
278
242
|
|
|
279
243
|
- (RNSOrientation)evaluateOrientation
|
|
280
244
|
{
|
|
281
|
-
return
|
|
245
|
+
return self.appearanceProvider.orientation;
|
|
282
246
|
}
|
|
283
247
|
|
|
284
248
|
#pragma mark - Validators
|
|
@@ -286,17 +250,12 @@ static const NSInteger maxNumberOfInspectors = 1;
|
|
|
286
250
|
/** @brief Validates that child structure meets required constraints defined for columns and the inspector. */
|
|
287
251
|
- (void)validateSplitViewHierarchy
|
|
288
252
|
{
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
NSArray<RNSSplitScreenComponentView *> *inspectors = [self filterSubviewsOfType:RNSSplitScreenColumnTypeInspector
|
|
292
|
-
in:self.splitReactSubviews];
|
|
293
|
-
|
|
294
|
-
[self validateColumns:columns];
|
|
295
|
-
[self validateInspectors:inspectors];
|
|
253
|
+
[self validateColumns:[self.columnsProvider columnControllers]];
|
|
254
|
+
[self validateInspectors:[self.columnsProvider inspectorControllers]];
|
|
296
255
|
}
|
|
297
256
|
|
|
298
257
|
/** @brief Ensures that number of columns is valid and hasn't changed dynamically. */
|
|
299
|
-
- (void)validateColumns:(NSArray<
|
|
258
|
+
- (void)validateColumns:(NSArray<RNSSplitScreenController *> *)columns
|
|
300
259
|
{
|
|
301
260
|
RCTAssert((NSInteger)columns.count >= minNumberOfColumns && (NSInteger)columns.count <= maxNumberOfColumns,
|
|
302
261
|
@"[RNScreens] Split can only have from %ld to %ld columns",
|
|
@@ -308,7 +267,7 @@ static const NSInteger maxNumberOfInspectors = 1;
|
|
|
308
267
|
}
|
|
309
268
|
|
|
310
269
|
/** @brief Ensures that at most one inspector is present. */
|
|
311
|
-
- (void)validateInspectors:(NSArray<
|
|
270
|
+
- (void)validateInspectors:(NSArray<RNSSplitScreenController *> *)inspectors
|
|
312
271
|
{
|
|
313
272
|
RCTAssert((NSInteger)inspectors.count <= maxNumberOfInspectors,
|
|
314
273
|
@"[RNScreens] Split can only have %ld inspector",
|
|
@@ -356,33 +315,6 @@ static const NSInteger maxNumberOfInspectors = 1;
|
|
|
356
315
|
return splitScreenControllers;
|
|
357
316
|
}
|
|
358
317
|
|
|
359
|
-
/**
|
|
360
|
-
* @brief Gets all React subviews of type RNSSplitScreenComponentView.
|
|
361
|
-
*
|
|
362
|
-
* Accesses all the subviews from the reactSubviews collection. It asserts that each one is a
|
|
363
|
-
* RNSSplitScreenComponentView.
|
|
364
|
-
*
|
|
365
|
-
* @return An array of RNSSplitScreenComponentView subviews which are children of the host component view.
|
|
366
|
-
*/
|
|
367
|
-
- (NSArray<RNSSplitScreenComponentView *> *)splitReactSubviews
|
|
368
|
-
{
|
|
369
|
-
NSArray<RNSSplitScreenComponentView *> *reactSubviews = [_splitHostComponentView reactSubviews];
|
|
370
|
-
NSMutableArray<RNSSplitScreenComponentView *> *splitReactSubviews =
|
|
371
|
-
[NSMutableArray arrayWithCapacity:reactSubviews.count];
|
|
372
|
-
|
|
373
|
-
for (RNSSplitScreenComponentView *subview in reactSubviews) {
|
|
374
|
-
RCTAssert([subview isKindOfClass:RNSSplitScreenComponentView.class],
|
|
375
|
-
@"[RNScreens] Expected RNSSplitScreenComponentView but got %@",
|
|
376
|
-
NSStringFromClass(subview.class));
|
|
377
|
-
|
|
378
|
-
if ([subview isKindOfClass:RNSSplitScreenComponentView.class]) {
|
|
379
|
-
[splitReactSubviews addObject:subview];
|
|
380
|
-
}
|
|
381
|
-
}
|
|
382
|
-
|
|
383
|
-
return splitReactSubviews;
|
|
384
|
-
}
|
|
385
|
-
|
|
386
318
|
#pragma mark - RNSSplitNavigationControllerFrameOriginChangeDelegate
|
|
387
319
|
|
|
388
320
|
/**
|
|
@@ -407,16 +339,16 @@ static const NSInteger maxNumberOfInspectors = 1;
|
|
|
407
339
|
*
|
|
408
340
|
* Attaches a view controller for the inspector column.
|
|
409
341
|
*
|
|
410
|
-
* @param inspectors An array of inspector-type
|
|
342
|
+
* @param inspectors An array of controllers of the inspector-type columns.
|
|
411
343
|
*/
|
|
412
|
-
- (void)maybeSetupInspector:(NSArray<
|
|
344
|
+
- (void)maybeSetupInspector:(NSArray<RNSSplitScreenController *> *)inspectors
|
|
413
345
|
{
|
|
414
346
|
#if !TARGET_OS_TV
|
|
415
347
|
if (@available(iOS 26.0, *)) {
|
|
416
|
-
|
|
348
|
+
RNSSplitScreenController *inspector = inspectors.firstObject;
|
|
417
349
|
if (inspector != nil) {
|
|
418
350
|
RNSSplitNavigationController *inspectorViewController =
|
|
419
|
-
[[RNSSplitNavigationController alloc] initWithRootViewController:inspector
|
|
351
|
+
[[RNSSplitNavigationController alloc] initWithRootViewController:inspector];
|
|
420
352
|
[self setViewController:inspectorViewController forColumn:UISplitViewControllerColumnInspector];
|
|
421
353
|
}
|
|
422
354
|
}
|
|
@@ -469,12 +401,12 @@ static const NSInteger maxNumberOfInspectors = 1;
|
|
|
469
401
|
|
|
470
402
|
- (void)splitViewControllerDidCollapse:(UISplitViewController *)svc
|
|
471
403
|
{
|
|
472
|
-
[
|
|
404
|
+
[self.eventsDelegate splitHostControllerDidCollapse:self];
|
|
473
405
|
}
|
|
474
406
|
|
|
475
407
|
- (void)splitViewControllerDidExpand:(UISplitViewController *)svc
|
|
476
408
|
{
|
|
477
|
-
[
|
|
409
|
+
[self.eventsDelegate splitHostControllerDidExpand:self];
|
|
478
410
|
}
|
|
479
411
|
|
|
480
412
|
#if RNS_IPHONE_OS_VERSION_AVAILABLE(26_0)
|
|
@@ -508,7 +440,7 @@ static const NSInteger maxNumberOfInspectors = 1;
|
|
|
508
440
|
UIViewController *inspectorViewController = [self viewControllerForColumn:UISplitViewControllerColumnInspector];
|
|
509
441
|
if (inspectorViewController != nil) {
|
|
510
442
|
if (inspectorViewController.view.window == nil) {
|
|
511
|
-
[
|
|
443
|
+
[self.eventsDelegate splitHostControllerDidHideInspector:self];
|
|
512
444
|
}
|
|
513
445
|
}
|
|
514
446
|
}
|
|
@@ -521,7 +453,7 @@ static const NSInteger maxNumberOfInspectors = 1;
|
|
|
521
453
|
willChangeToDisplayMode:(UISplitViewControllerDisplayMode)displayMode
|
|
522
454
|
{
|
|
523
455
|
if (self.displayMode != displayMode) {
|
|
524
|
-
[
|
|
456
|
+
[self.eventsDelegate splitHostController:self willChangeDisplayModeFrom:self.displayMode to:displayMode];
|
|
525
457
|
}
|
|
526
458
|
|
|
527
459
|
__weak auto weakSelf = self;
|
|
@@ -550,8 +482,8 @@ static const NSInteger maxNumberOfInspectors = 1;
|
|
|
550
482
|
- (UISplitViewControllerColumn)splitViewController:(UISplitViewController *)svc
|
|
551
483
|
topColumnForCollapsingToProposedTopColumn:(UISplitViewControllerColumn)proposedTopColumn
|
|
552
484
|
{
|
|
553
|
-
if (
|
|
554
|
-
return
|
|
485
|
+
if (self.behaviorProvider.hasCustomTopColumnForCollapsing) {
|
|
486
|
+
return self.behaviorProvider.topColumnForCollapsingColumn;
|
|
555
487
|
}
|
|
556
488
|
|
|
557
489
|
return proposedTopColumn;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
#pragma once
|
|
2
|
+
|
|
3
|
+
#import <UIKit/UIKit.h>
|
|
4
|
+
#import "RNSDefines.h"
|
|
5
|
+
#import "RNSEnums.h"
|
|
6
|
+
|
|
7
|
+
NS_ASSUME_NONNULL_BEGIN
|
|
8
|
+
|
|
9
|
+
@class RNSSplitScreenController;
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* @brief Configuration of the UISplitViewController appearance.
|
|
13
|
+
*/
|
|
14
|
+
@protocol RNSSplitHostAppearanceProvider <NSObject>
|
|
15
|
+
|
|
16
|
+
- (UISplitViewControllerSplitBehavior)preferredSplitBehavior;
|
|
17
|
+
- (UISplitViewControllerPrimaryEdge)primaryEdge;
|
|
18
|
+
- (UISplitViewControllerDisplayMode)preferredDisplayMode;
|
|
19
|
+
- (UISplitViewControllerDisplayModeButtonVisibility)displayModeButtonVisibility;
|
|
20
|
+
#if !TARGET_OS_TV
|
|
21
|
+
- (UISplitViewControllerBackgroundStyle)primaryBackgroundStyle;
|
|
22
|
+
#endif // !TARGET_OS_TV
|
|
23
|
+
- (BOOL)presentsWithGesture;
|
|
24
|
+
- (BOOL)showSecondaryToggleButton;
|
|
25
|
+
- (BOOL)showInspector;
|
|
26
|
+
|
|
27
|
+
- (double)minimumPrimaryColumnWidth;
|
|
28
|
+
- (double)maximumPrimaryColumnWidth;
|
|
29
|
+
- (double)preferredPrimaryColumnWidthOrFraction;
|
|
30
|
+
- (double)minimumSupplementaryColumnWidth;
|
|
31
|
+
- (double)maximumSupplementaryColumnWidth;
|
|
32
|
+
- (double)preferredSupplementaryColumnWidthOrFraction;
|
|
33
|
+
|
|
34
|
+
#if RNS_IPHONE_OS_VERSION_AVAILABLE(26_0)
|
|
35
|
+
- (double)minimumSecondaryColumnWidth;
|
|
36
|
+
- (double)preferredSecondaryColumnWidthOrFraction;
|
|
37
|
+
- (double)minimumInspectorColumnWidth;
|
|
38
|
+
- (double)maximumInspectorColumnWidth;
|
|
39
|
+
- (double)preferredInspectorColumnWidthOrFraction;
|
|
40
|
+
#endif // RNS_IPHONE_OS_VERSION_AVAILABLE(26_0)
|
|
41
|
+
|
|
42
|
+
- (RNSOrientation)orientation;
|
|
43
|
+
- (UIUserInterfaceStyle)colorScheme;
|
|
44
|
+
|
|
45
|
+
@end
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* @brief Behavior consulted by the UISplitViewController delegate callbacks.
|
|
49
|
+
*/
|
|
50
|
+
@protocol RNSSplitHostBehaviorProvider <NSObject>
|
|
51
|
+
|
|
52
|
+
- (BOOL)hasCustomTopColumnForCollapsing;
|
|
53
|
+
- (UISplitViewControllerColumn)topColumnForCollapsingColumn;
|
|
54
|
+
|
|
55
|
+
@end
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* @brief Controllers of the columns mounted in the host, in React order, split by column type.
|
|
59
|
+
*/
|
|
60
|
+
@protocol RNSSplitHostColumnsProvider <NSObject>
|
|
61
|
+
|
|
62
|
+
- (NSArray<RNSSplitScreenController *> *)columnControllers;
|
|
63
|
+
- (NSArray<RNSSplitScreenController *> *)inspectorControllers;
|
|
64
|
+
|
|
65
|
+
@end
|
|
66
|
+
|
|
67
|
+
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,13 +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
|
+
#import "RNSSplitScreenComponentEventEmitter.h"
|
|
7
8
|
#import "RNSSplitScreenController.h"
|
|
9
|
+
#import "RNSSplitScreenShadowStateProxy.h"
|
|
8
10
|
|
|
9
11
|
namespace react = facebook::react;
|
|
10
12
|
|
|
13
|
+
@interface RNSSplitScreenComponentView () <RNSSplitScreenControllerDelegate>
|
|
14
|
+
@end
|
|
15
|
+
|
|
11
16
|
@implementation RNSSplitScreenComponentView {
|
|
12
17
|
RNSSplitScreenComponentEventEmitter *_Nonnull _reactEventEmitter;
|
|
13
18
|
RNSSplitScreenController *_Nullable _controller;
|
|
@@ -49,6 +54,7 @@ namespace react = facebook::react;
|
|
|
49
54
|
{
|
|
50
55
|
_controller = [[RNSSplitScreenController alloc] initWithSplitScreenComponentView:self];
|
|
51
56
|
_controller.view = self;
|
|
57
|
+
_controller.delegate = self;
|
|
52
58
|
}
|
|
53
59
|
|
|
54
60
|
- (void)didMoveToWindow
|
|
@@ -108,20 +114,31 @@ namespace react = facebook::react;
|
|
|
108
114
|
[super layoutSubviews];
|
|
109
115
|
}
|
|
110
116
|
|
|
111
|
-
#pragma mark -
|
|
117
|
+
#pragma mark - RNSSplitScreenControllerDelegate
|
|
118
|
+
|
|
119
|
+
- (void)splitScreenController:(RNSSplitScreenController *)controller didChangeColumnFrame:(CGRect)frame
|
|
120
|
+
{
|
|
121
|
+
[_shadowStateProxy updateShadowStateWithFrame:frame];
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
- (void)splitScreenControllerWillAppear:(RNSSplitScreenController *)controller
|
|
125
|
+
{
|
|
126
|
+
[_reactEventEmitter emitOnWillAppear];
|
|
127
|
+
}
|
|
112
128
|
|
|
113
|
-
- (
|
|
129
|
+
- (void)splitScreenControllerDidAppear:(RNSSplitScreenController *)controller
|
|
114
130
|
{
|
|
115
|
-
|
|
116
|
-
return _shadowStateProxy;
|
|
131
|
+
[_reactEventEmitter emitOnDidAppear];
|
|
117
132
|
}
|
|
118
133
|
|
|
119
|
-
|
|
134
|
+
- (void)splitScreenControllerWillDisappear:(RNSSplitScreenController *)controller
|
|
135
|
+
{
|
|
136
|
+
[_reactEventEmitter emitOnWillDisappear];
|
|
137
|
+
}
|
|
120
138
|
|
|
121
|
-
- (
|
|
139
|
+
- (void)splitScreenControllerDidDisappear:(RNSSplitScreenController *)controller
|
|
122
140
|
{
|
|
123
|
-
|
|
124
|
-
return _reactEventEmitter;
|
|
141
|
+
[_reactEventEmitter emitOnDidDisappear];
|
|
125
142
|
}
|
|
126
143
|
|
|
127
144
|
#pragma mark - RNSSafeAreaProviding
|
|
@@ -3,18 +3,41 @@
|
|
|
3
3
|
#import <UIKit/UIKit.h>
|
|
4
4
|
|
|
5
5
|
@class RNSSplitScreenComponentView;
|
|
6
|
+
@class RNSSplitScreenController;
|
|
6
7
|
|
|
7
8
|
NS_ASSUME_NONNULL_BEGIN
|
|
8
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
|
+
|
|
9
31
|
/**
|
|
10
32
|
* @class RNSSplitScreenController
|
|
11
33
|
* @brief A UIViewController subclass that manages a Split column in a UISplitViewController.
|
|
12
34
|
*
|
|
13
|
-
*
|
|
14
|
-
* Shadow Tree, emits React lifecycle events, and interacts with the SplitHost hierarchy.
|
|
35
|
+
* It observes the column layout and lifecycle and reports them to its delegate.
|
|
15
36
|
*/
|
|
16
37
|
@interface RNSSplitScreenController : UIViewController
|
|
17
38
|
|
|
39
|
+
@property (nonatomic, weak, nullable) id<RNSSplitScreenControllerDelegate> delegate;
|
|
40
|
+
|
|
18
41
|
- (instancetype)initWithSplitScreenComponentView:(RNSSplitScreenComponentView *)splitScreenComponentView;
|
|
19
42
|
|
|
20
43
|
#pragma mark - Signals
|
|
@@ -33,7 +56,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|
|
33
56
|
#pragma mark - Layout
|
|
34
57
|
|
|
35
58
|
/**
|
|
36
|
-
* @brief
|
|
59
|
+
* @brief Reports the column frame change after the Split repositioned its columns.
|
|
37
60
|
*
|
|
38
61
|
* @param splitViewController The UISplitViewController whose layout positioning changed, represented by
|
|
39
62
|
* RNSSplitHostController.
|
|
@@ -18,16 +18,6 @@
|
|
|
18
18
|
return self;
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
-
- (RNSSplitScreenShadowStateProxy *)shadowStateProxy
|
|
22
|
-
{
|
|
23
|
-
return [_splitScreenComponentView shadowStateProxy];
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
- (RNSSplitScreenComponentEventEmitter *)reactEventEmitter
|
|
27
|
-
{
|
|
28
|
-
return [_splitScreenComponentView reactEventEmitter];
|
|
29
|
-
}
|
|
30
|
-
|
|
31
21
|
/**
|
|
32
22
|
* @brief Searching for the SplitHost controller
|
|
33
23
|
*
|
|
@@ -69,36 +59,29 @@
|
|
|
69
59
|
{
|
|
70
60
|
[super viewDidLayoutSubviews];
|
|
71
61
|
|
|
72
|
-
[self updateShadowTreeState];
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
/**
|
|
76
|
-
* @brief Handles frame layout changes and updates Shadow Tree accordingly.
|
|
77
|
-
*
|
|
78
|
-
* Requests for the ShadowNode updates through the shadow state proxy.
|
|
79
|
-
* Differentiates cases when we're in the Host hierarchy to calculate frame relatively
|
|
80
|
-
* to the Host view from the modal case where we're passing absolute layout metrics to the ShadowNode.
|
|
81
|
-
*/
|
|
82
|
-
- (void)updateShadowTreeState
|
|
83
|
-
{
|
|
84
62
|
// For modals, which are presented outside the SplitHost subtree (and RN hierarchy),
|
|
85
63
|
// we're attaching our touch handler and we don't need to apply any offset corrections,
|
|
86
64
|
// because it's positioned relatively to our RNSSplitScreenComponentView
|
|
87
65
|
if (![self isInSplitHostSubtree]) {
|
|
88
|
-
[
|
|
66
|
+
[_delegate splitScreenController:self didChangeColumnFrame:self.view.frame];
|
|
89
67
|
return;
|
|
90
68
|
}
|
|
91
69
|
|
|
92
70
|
UIView *ancestorView = [self findSplitHostController].view;
|
|
93
71
|
RCTAssert(ancestorView != nil, @"[RNScreens] Expected to find RNSSplitHost component for RNSSplitScreen component");
|
|
94
72
|
|
|
95
|
-
[
|
|
73
|
+
[self reportColumnFrameInContextOfView:ancestorView];
|
|
96
74
|
}
|
|
97
75
|
|
|
98
76
|
- (void)columnPositioningDidChangeInSplitViewController:(UISplitViewController *)splitViewController
|
|
99
77
|
{
|
|
100
|
-
[
|
|
101
|
-
|
|
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];
|
|
102
85
|
}
|
|
103
86
|
|
|
104
87
|
#pragma mark - Events
|
|
@@ -106,25 +89,25 @@
|
|
|
106
89
|
- (void)viewWillAppear:(BOOL)animated
|
|
107
90
|
{
|
|
108
91
|
[super viewWillAppear:animated];
|
|
109
|
-
[
|
|
92
|
+
[_delegate splitScreenControllerWillAppear:self];
|
|
110
93
|
}
|
|
111
94
|
|
|
112
95
|
- (void)viewDidAppear:(BOOL)animated
|
|
113
96
|
{
|
|
114
97
|
[super viewDidAppear:animated];
|
|
115
|
-
[
|
|
98
|
+
[_delegate splitScreenControllerDidAppear:self];
|
|
116
99
|
}
|
|
117
100
|
|
|
118
101
|
- (void)viewWillDisappear:(BOOL)animated
|
|
119
102
|
{
|
|
120
103
|
[super viewWillDisappear:animated];
|
|
121
|
-
[
|
|
104
|
+
[_delegate splitScreenControllerWillDisappear:self];
|
|
122
105
|
}
|
|
123
106
|
|
|
124
107
|
- (void)viewDidDisappear:(BOOL)animated
|
|
125
108
|
{
|
|
126
109
|
[super viewDidDisappear:animated];
|
|
127
|
-
[
|
|
110
|
+
[_delegate splitScreenControllerDidDisappear:self];
|
|
128
111
|
}
|
|
129
112
|
|
|
130
113
|
@end
|